
1. 中断控制的发展
在早期ARM系统中(例如ARM7/ARM9),采用单核处理器设计,系统支持的中断源比较少并且是单核处理器系统,使用简单的寄存器表示每个中断源的使能、关闭以及状态。假设系统一共有64个中断源,每个寄存器有32位,每位描述一个中断,那么只需要两个中断使能寄存器(Interrupt Enable Register ,IER)和两个中断状态寄存器(Interrupt Status Register,ISR)。
现在随着处理器设计越来越复杂,中断源变得越来越多,有的系统中断源有几百甚至上千个,同时中断类型也越来越多。由于以上原因,ARM公司开发了通用中断控制(Generic Interrupt Controller,GIC)专门用于管理中断。目前版本为GIC-4,典型的IP是GIC-700.
2. GIC-700组成
GIC-700包含以下几个模块,通过这些模块,在系统内实现符合GICV3 、GICV3.1 和 GICV4.1的中断管理控制。
2.1 GIC分配器(GIC Distributor ,GICD)
分配器是所有 GIC 通信的中心,包含所有共享外设中断 (SPI) 以及特定于位置的外设中断 (LPI)的功能
2.2 GIC集群接口 (GIC Cluster Interface,GCI)
GIC集群接口维护一组特定内核的专用外设中断 (PPI) 和软件生成中断 (SGI)。GIC集群接口可以 从 1 到 64 个内核扩展,更好放置在它所服务的处理器旁边,以减少到内核的布线。GCI也称为再分配器。
2.3 中断翻译服务(Interrupt Translation Service ,ITS)
ITS转换来自外部 PCI Express (PCIe) 根联合体 (RC) 或其他来源的基于消息的中断、消息信号中断 (MSI/MSIx)。ITS 还在核心电源管理期间管理 LPI。
GIC-700每个芯片最多支持 32 个 ITS 模块。
2.4 SPI整理器(SPI Collator)
GIC-700支持多达1984个分布在系统中的SPI 。 SPI Collator 使SPI 可以从Distributor 远程转换为消息。这使得分配器的分层时钟门控和其他更积极的低功耗状态的使用成为可能。
单个配置中最多可支持 32个SPI 整理器。1984 SPI 可以分布在 32 个 SPI Collator 中,一个 SPI Collator 中最多有1024个 SPI。
2.5 唤醒请求(Wake Request)
唤醒请求包含芯片上每个内核的所有架构定义的唤醒请求信号。 它是一个单独的块,可以远离分配器放置,例如靠近系统控制处理器。