정의
APIC는 Advanced Programmable Interrupt Controller(고급 프로그래머블 인터럽트 컨트롤러)의 약어로, 컴퓨터 시스템에서 인터럽트(외부 이벤트) 처리를 관리하는 하드웨어 장치를 의미한다. 기존의 8259A PIC(Programmable Interrupt Controller)를 대체하며, 멀티코어 프로세서 환경에서 효율적인 인터럽트 라우팅 및 우선순위 제어를 제공한다.
주요 기능
- 인터럽트 라우팅: 각 CPU 코어에 독립적인 로컬 APIC(LAPIC)을 두어, 인터럽트를 특정 코어에 직접 전달할 수 있다.
- 우선순위 제어: 인터럽트마다 우선순위를 할당하여, 높은 우선순위 이벤트가 먼저 처리되도록 조정한다.
3 멀티프로세서 지원: 인터럽트 전송 방식인 Interrupt Request (IRQ)와 Message Signaled Interrupt (MSI)를 통해 다중 코어 간에 복잡한 인터럽트 흐름을 관리한다. - 전력 관리: 필요 시 APIC를 비활성화하거나 저전력 모드로 전환하여 전력 소비를 최소화한다.
구조
- Local APIC (LAPIC): 각 CPU 코어에 내장된 APIC로, 로컬 인터럽트 처리와 타이머 기능을 포함한다.
- I/O APIC: 시스템 버스(PCIe 등)와 연결된 외부 APIC로, 외부 장치에서 발생하는 인터럽트를 받아 LAPIC에 전달한다.
- x2APIC: APIC의 확장 버전으로, 64비트 주소 공간을 지원하고 더 많은 인터럽트 라인을 제공한다.
역사
- 1990년대 초반 인텔은 Pentium Pro 프로세서에서 최초로 APIC 아키텍처를 도입했다. 이후 AMD도 자체적인 APIC 구현을 도입하면서 표준이 확대되었다.
- 2000년대 초반부터는 멀티코어 CPU가 보편화되면서 APIC의 역할이 더욱 중요해졌다.
관련 표준 및 문서
- Intel® 64 and IA-32 Architectures Software Developer’s Manual (Volume 3A, Chapter 10)
- AMD64 Architecture Programmer’s Manual (Chapter 6)
- PCI Local Bus Specification (MSI/MSI‑X 기능 설명)
사용 예시
- 운영 체제 커널(예: Linux, Windows)은 부팅 과정에서 APIC를 초기화하고, 인터럽트 라우팅 테이블을 구성한다.
- 가상화 환경에서는 하이퍼바이저가 가상 APIC(vAPIC)를 제공하여 게스트 OS가 물리 APIC와 동일하게 인터럽트를 처리하도록 지원한다.
다른 의미
“APIC”는 상황에 따라 다른 분야에서 약어로 사용될 수 있다. 예를 들어, 일부 생명과학 문헌에서는 APIC가 “apicoplast”(조류 및 일부 원생동물의 비엽형 플라스토이드)와 연관된 용어로 등장한다. 그러나 컴퓨팅 분야에서 가장 널리 알려진 의미는 위에 설명한 Advanced Programmable Interrupt Controller이다.