개요

APIC은 Interrupt Controller중의 하나로, 기존의 PIC보다 훨씬 발전된 방식의 Interrupt 처리 루틴이다. APIC은 Local LAPIC과 IOAPIC으로 분리되어 구현되어 있다. LAPIC은 각각의 프로세서에 builtin으로 박혀있으며, IOAPIC은 시스템의 버스에 박혀있다.

LAPIC

LAPIC은 각각의 코어마다 하나씩 할당되어 있다. 이 LAPCI은 서로 인터럽트를 발생시켜서 IPI을 발생시킬 수도 있으며, 최대 0~31개의 인터럽트 처리와 32~225개의 지정된 인터럽트 처리를 할 수 있다.

또한 LAPIC은 HPET를 지원한다. HPET란 높은 정밀도의 타이머로써, 각각의 코어들이 하나의 타이머에 대해서 경쟁하지 않아도 현재 타임에 대한 정확한 값을 가져올 수 있도록 도와준다. 만약 APIC이 활성화되어 HPET가 지원되면 8253pic은 사용되지 않도록 비활성화 된다.

IOAPCI

I\O APCI은 redirection table을 가지고 있다. 이는 각각의 장치에서 들어온 인터럽트를 지정된 인터럽트 번호로 매핑시킨다. 기존의 8253인터럽트 침과 같은 경우는 오직 16개의 외부 인터럽트만을 지원하였는데, APIC은 redirection을 통해서 하드웨어에 할당된 0x20이전의 인터럽트를 제외한 최대 224개의 인터럽트를 추가로 지원할 수 있다.