本章对GIC架构提供介绍。它对GIC架构作简要介绍,以及新引入到架构的特性。它也提供本文档中使用的术语进行定义。它包含以下部分:
(1)关于GIC
(2)术语
(3)支持的配置和兼容性
1 关于GIC
设计GICv3架构是用于与Arm8-A和Arm8-R的处理部分PE一起运行工作。
GIC架构定义:
(1)用于处理连接到GIC上的PE的所有中断源的架构需要;
(2)为单处理器或多处理器系统提供一个通用中断控制器编程接口;
GIC是支持和控制中断的架构资源。它提供:
(1)管理中断源,中断行为,中断路由到一个或多个PE的寄存器;
(2)支持:
- Armv8架构
- LPI中断
- PPI中断
- SGI中断
- 中断屏蔽和中断优先级
- 单处理器和多处理器系统
- 在电源管理环境下wakeup事件
对于每个PE,GIC架构描述IRQ和FIQ中断是如何在系统中产生的。Armv8-A异常模型描述了PE是如何处理这些IRQ和FIQ中断。
中断处理也依赖于Armv8架构的其他方面,比如安全状态和虚拟化的支持。Arm架构提供两个安全状态,每个存在相关的物理内存地址空间:
(1)安全状态
(2)非安全状态
GIC架构支持两个安全状态的中断路由和中断处理。可以看章节Interrupt Grouping and security获得更多信息。
GIC架构支持Armv8架构处理与虚拟机相关的虚拟中断。一个虚拟系统存在:
(1)一个hypervisor必须包含执行在EL2的部件,它负责在不同虚拟机VM之间进行切换;
(2)多个执行在EL1的虚拟机VM;
(3)在VM中应用执行在EL0;
可以查看Arm Architecture Reference Manual获得更多Armv8架构。为获取更多虚拟机VM,可以看GIC support for virtualization。
本文档定义了GIC架构的V3.0,V3.1,V3.2,V4.0,V4.1。GICv2仅作为GICv3的传统操作被描述。
NOTE:因为GICv4为GICv3.0和GICv3.1的扩展,如果没有明确指明,在本文档中GICv3的相关操作也能应用于GICv4。对于GICv4的任何架构修改都会被指明。