Linux中断 - APIC


APIC - 82093AA + LAPIC

8259A只能用在单CPU上,故而引入APIC。该组件包含两大组成部分:一是“本地 APIC”,主要负责传递中断信号到指定的处理器;举例来说,一台具有三个处理器的机器,则它必须相对的要有三个本地 APIC。另外一个重要的部分是 I/O APIC,主要是收集来自 I/O 装置的 Interrupt 信号且在当那些装置需要中断时发送信号到本地 APIC,系统中最多可拥有 8 个 I/O APIC。

 

LAPIC是CPU的一部分(现在CPU都有),它包含寄存器、内部时钟、本地时间设备、LINT 0 and LINT 1

I/O APIC是单独的芯片,通过总线连向LAPIC。I/O APIC包含24个IRQ lines、24-entry Interrupt Redirection Table、可编程寄存器、发送接收中断装置。

APIC不像PIC,中断优先级不按pin number来,Redirection Table中的每一项都可编程其interrupt vector、priority、目标CPU。

APIC的中断分发方式

1)静态分配
根据Redirection Table中的信息,将中断交给某一个,某几个或全部CPU
2)动态分配
IRQ信号被交给在执行最低优先级的处理器的LAPC,这个通过TPR判断(Task Priority Register),如果有多个CPU都执行相同优先级的进程,则须仲裁(arbitration)技术。

《Understanding The Linux Kernel 3rd》

相关内容