GIC (General Interrupt Controller)之一

中断术语

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,在不同模式下,使用不同的物理寄存器。

经验分享 程序员 微信小程序 职场和发展