인터럽트 콘트롤러가 필요한 이유를 알아봤으니 이어서 인터럽트 콘트롤러를 소개합니다. 다음 그림은 인터럽트 콘트롤러의 기본 구조도입니다.
그림 16.1 인터럽트 콘트롤러의 기본 구조
그림에서 가장 왼쪽에 있는 USB나 센서, 키보드는 외부 I/O 디바이스를 나타냅니다. 이와 같은 외부 I/O 디바이스에서 인터럽트 신호를 발생하면 인터럽트 콘트롤러가 받아서 처리합니다.
보다시피 인터럽트 콘트롤러는 CPU 옆에 달려 있습니다. 여러 외부 I/O 디바이스에서 올려준 인터럽트를 처리하는 일종의 창구로 다음과 같은 역할을 수행합니다.
“여러 외부 I/O 디바이스가 올려준 인터럽트를 받아 IRQ나 FIQ로 CPU에 전달”
이는 그림의 nIRQ나 nFIQ에 해당되며 인터럽트 콘트롤러와 CPU 사이의 인터페이스는 nIRQ나 nFIQ로 연결됩니다. 여기서 n은 IRQ나 FIQ가 다수 존재할 수 있다는 의미입니다.
이 밖에도 인터럽트 콘트롤러는 다음과 같은 기능을 수행합니다.
● 각각 인터럽트를 활성화 혹은 비활성화
● 각각 인터럽트의 우선 순위 레벨을 설정
● 각각 인터럽트를 처리한 타겟 프로세서 리스트 설정
● 각각 인터럽트를 논시큐어 혹은 시큐어로 설정
● peripheral 인터럽트를 level-sensitive 혹은 edge-triggered으로 설정
대부분 MCU나 SoC 업체에서 디자인한 인터럽트 콘트롤러는 위에서 언급한 기능을 지원합니다.
인터럽트 콘트롤러의 역할이 무엇인지 물어보면 다음과 같이 답할 수 있습니다.
● CPU와 I/O 장치 사이에 존재
● I/O 장치가 유발한 인터럽트를 받아 CPU에게 전달
여기까지 인터럽트 콘트롤러를 소개했으니 다음 포스트에서는 Arm에서 제공하는 인터럽트 콘트롤러인 GIC를 배워 봅시다.
< '시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리' 저자>
'시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 > 10장: GIC(Generic Interrupt Controller)' 카테고리의 다른 글
[Arm프로세서] GIC의 기본 구조 (0) | 2024.06.02 |
---|---|
[Arm프로세서] GIC: 인터럽트 소스와 타입 (0) | 2024.01.21 |
[Arm프로세서] GIC의 기본 기능 (0) | 2023.08.16 |