1 中断术语
1. 中断状态
n Inactive
中断尚未激活或挂起
n Pending
中断已经由硬件或者软件产生,正等待目标CPU处理
n Active
CPU已经应答(Acknowledge)来自GIC的中断,该中断正在被CPU处理但尚未完成。
n Active& Pending
CPU正在处理该中断,此时GIC又收到来自该中断源的中断。
2. 中断类型
n PeripheralInterrupt
外设中断是通过一个物理信号发送到GIC。外设中断可以是电平中断或边沿中断。
u Privateperipheral interrupt
针对某一个CPU的中断
u Sharedperipheral interrupt
任意CPU组合的中断
n Software-GeneratedInterrupt(SGI)
软件产生的中断是通过软件写GICD_SGIR产生的。SGI一般被用作IPI核间中断(Inter-processorInterrupt),用于核间通讯。
SGI具有边沿中断的特性。
GICC_IAR中的CPUID被用来标识哪个CPU发出的中断请求。
n VirtualInterrupt
n MaintenanceInterrupt
3. 中断处理模型
n 1-N模型
只有一个CPU处理该中断。系统需要实现一种机制决定哪个CPU处理该中断。
n 1-1模型
所有的CPU都收到该中断。当一个处理器应答该中断,只是当前CPU上的该中断挂起状态被清除。其他CPU上的中断挂起状态仍然不变。
4. 伪中断 (SpuriousInterrupt)
可能存在GIC通知一个处理器这个中断不在需要的情况。在这种情况下,处理器去应答该中断时,GIC返回一个特殊的中断号,我们称之为伪中断。可能发生这种情况的原因如下:在处理器应答该中断之前,软件改变了该中断的优先级、软件禁用该中断或者改变了目标处理器;1-N中断也是一种情况。
5. 处理器安全状态和安全及非安全的GIC访问
6. Banking
Interrupt Banking
在多处理器系统中,对于PPI和SGI,GIC可以有多个中断使用同一个中断号。这样的中断成为bankedinterrupt,该类中断通过中断号和相关联的CPUinterface可以唯一标识。
Register Banking
是指在同一个地址实现多个寄存器,即多个寄存器拥有相同的地址。在多处理器系统中,为bankedinterrupt的相关寄存器在每个处理器上提供一个独立的copy。
在ARM结构中最常见的Register Banking是R8~R12,在不同模式下,使用不同的物理寄存器。