GIC (General Interrupt Controller)之一

来源:互联网 发布:csol刷枪软件免费版 编辑:程序博客网 时间:2024/05/01 07:41

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