Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Chapter 11: 电源管理

  • 本章描述电源管理。包含以下部分:

  • 电源管理

11.1 电源管理

在符合 GICv3 架构的实现中,CPU interface 和 PE 必须位于同一个电源域中,但不必与关联的 Redistributor 所在的电源域相同。这意味着可能存在这样的情况:PE 及其 CPU interface 被断电,而 Redistributor、Distributor 和 ITS 仍然通电。在这种情况下,GIC 架构支持使用针对 PE 的中断来向 PE 和 CPU interface 发出上电事件信号。

注意 Arm 强烈建议,如果 PE 唤醒时该 PE 上的软件无法处理中断,则不要将 GIC 配置为允许中断唤醒特定的 PE。

GICv3 提供电源管理来控制这种情况,因为该架构被设计为允许由一个组织设计的 Redistributor 与由不同组织设计的 PE 和 CPU interface 一起使用。

GIC 的所有其他电源管理方面都是 IMPLEMENTATION DEFINED。

在 Redistributor 通电时断开 CPU interface 和 PE 的电源之前,软件必须将 CPU interface 和 Redistributor 之间的接口置于静止状态,否则系统将变为 UNPREDICTABLE。通过将 GICR_WAKER.ProcessorSleep 设置为 1 来启动向静止状态的转换。当接口处于静止状态时,GICR_WAKER.ChildrenAsleep 也被设置为 1。

GICR_WAKER.ProcessorSleep == 1 具有以下效果:

  • Redistributor 不会将 PE 的任何中断转发到 CPU interface。如果存在本来会转发给 PE 的待处理中断,则断言硬件信号 WakeRequest,以指示 PE 要恢复其电源。在 GICv4 实现中,除了任何其他中断之外,这也适用于虚拟 LPI。

  • Distributor 不会选择此 PE 作为 1 of N 中断选择的候选,除非 GICD_CTLR.E1NWF == 1,且 PE 已由 IMPLEMENTATION DEFINED 机制选择:

    • 对于导致唤醒的 1 of N 中断,如果接收到 WakeRequest 的 PE 在唤醒时不处理中断,GIC 不需要选择新的目标 PE。

当 Redistributor 和 CPU interface 之间的接口处于静止状态时,CPU interface 的以下架构状态可以作为保存 CPU interface 和 PE 电源域内状态的一部分进行保存:

  • 连接 PE 的物理中断相关的 CPU interface 状态。

  • 虚拟中断相关的 CPU interface 状态,它是调度在关联 PE 上的 vPE 的一部分。

当 CPU interface 中的物理组使能设置为 1 时,将 GICR_WAKER.ProcessorSleep 设置为 1 会导致 UNPREDICTABLE 行为。

当 GICR_WAKER.ProcessorSleep == 1 或 GICR_WAKER.ChildrenAsleep == 1 时,对任何 GICC_、GICV_、GICH_、ICC_、ICV_* 或 ICH_* 寄存器的写入都是不可预测的,除了以下列表中的寄存器:

  • ICC_SRE_EL1。

  • ICC_SRE_EL2。

  • ICC_SRE_EL3。