Nested Interrupt란 Interrupt가 발생이 되고 그에 대응되는 Interrupt Service Routine(ISR)을 실행중에 해당 Interrupt나 혹은
다른 Interrupt가 발생되는 경우 먼저 발생된 ISR을 다 마치지 않고 새로 발생된 ISR을 처리하는 것을 말합니다.
대부분의 MCU에서는 Nested Interrupt를 고려하실 필요가 없습니다.
NEC의 경우 Nested Interrupt가 된다고 얘기를 듣기는 했는데 확인해 본 바는 없습니다.
일반적으로 많이 쓰는 ATMEGA의 경우 역시 Nested Interrupt가 기본적으로 지원되지 않습니다.
하지만, 여기서 나름이 반전이 있습니다. 제가 ATMEGA를 주로 써서 ATMEGA에 대해서만 한정지어 말씀드리자면은
ATEMGA의 경우 ISR 첫 부분에 자동적으로 글로벌 인터럽트를 DISABLE 시켜주는 코드가 삽입되게 됩니다.
그리고 ISR 마치는 시점에서 글로벌 인터럽트를 ENABLE 시켜줍니다.
이를 다시 말하자면, 사용자가 ISR 함수 첫 부분에 글로벌 인터럽트를 ENABLE만 시켜준다면 Nested Interrupt를 사용할 수 있는 것입니다.
하지만, Nested Interrupt를 사용하게 되는 경우에는 ISR 간에 데이터 공유문제가 발생되기 때문에 시스템이 매우 복잡해질 요소가 있습니다.
복잡도의 증가는 버그의 증가로 나타나겠죠.
따라서, 대부분의 MCU에서는 Nested Interrupt를 설정해서 쓰는 경우를 본적도 없고 들은 적도 별로 없습니다.
심지어 Nested Interrupt에 대해서 인지하지 못하고 계신 개발자 분들도 많습니다.
이처럼 Nested Interrupt는 예전 스승님이셨던 연구소장님 말씀처럼 “그냥 이런게 있다.” 라고 알고 넘어가는 수준이면될 듯한 내용입니다.
'[프로세서]' 카테고리의 다른 글
IBIS(I/O Buffer Information Specification) 모델이란...? (0) | 2018.06.18 |
---|---|
MIPS와 DIMPS 설명 (0) | 2017.09.11 |
JTAG란? (0) | 2017.03.28 |
MIPS와 DMIPS, 대체 무엇일까? (0) | 2013.06.13 |
ARM(Advanced RISC Machine)에 대해서 - I (1) | 2013.02.04 |