GICv3(GenericInterruptControllerversion3)的中断生命周期管理涉及硬件组件间的复杂交互,其核心状态与转换机制如下:
一、中断生命周期核心状态
-
未激活(Inactive)
- 中断源未触发,未被任何组件识别。
- 组件关联:SPI/FPI(片上中断源)。
-
激活(Active)
- 中断源触发,GIC接收信号。
- 组件关联:Distributor(中断分配器)。
-
挂起(Pending)
- 中断被Distributor记录,等待分发。
- 组件关联:Distributor与Redistributor(重分布器)。
-
传递(Signaled)
- 中断被发送到目标CPU。
- 组件关联:CPU接口(GICCPUInterface)。
-
传递完成(Completed)
- CPU完成中断处理,清除信号。
- 组件关联:CPU接口与Distributor。
-
未分配(Deactivated)
- 中断被禁用或清除,进入休眠状态。
- 组件关联:SPI/FPI与Distributor。
二、组件间状态转换逻辑
状态转换 | 触发条件 | 组件交互 |
---|---|---|
未激活→激活 | 中断源信号上升沿 | SPI/FPI→Distributor |
激活→挂起 | Distributor未分配中断 | Distributor→Redistributor |
挂起→传递 | Redistributor选择目标CPU | Redistributor→CPU接口 |
传递→传递完成 | CPU执行中断处理指令 | CPU接口→Distributor |
传递完成→未分配 | 软件清除中断或禁用中断 | Distributor→SPI/FPI |
三、关键设计特性
-
优先级驱动分发
- Distributor根据优先级队列选择中断目标,确保高优先级中断优先传递。
-
Redistributor的路由优化
- 支持多核处理器架构,通过Redistributor实现中断信号的跨CPU分发。
-
软件可配置性
- 通过寄存器配置(如ICD_IPRIORITYR)动态调整中断状态,支持实时系统需求。
四、注意事项
- 实时性保障:通过硬件优先级仲裁和低延迟路径设计,确保中断响应时间在微秒级。
- 多核同步:Redistributor需协调多CPU间的中断分发,避免竞争条件。
- 错误处理:未激活状态下的异常信号需通过Distributor过滤,防止误触发。
(注:内容基于ARMGICv3技术手册与开源社区文档整理,不涉及具体厂商实现差异。)