8.4.4.1. 分层空闲状态
处理器容器(Processor Container Device)可以与 _LPI(_LPI(Low Power Idle States))结合使用,以分层方式描述空闲状态。在处理器层次结构中,每个节点都有特定于该节点的低功耗状态。ACPI 将层次结构中特定于某个节点的状态称为本地电源状态。例如,在“处理器层次结构的电源状态”中所示的系统里,CPU0 的本地电源状态为时钟门控、保持和断电。
当运行在给定处理器上的 OS 检测到该处理器上已无更多工作可调度时,它需要选择一个空闲状态。该状态可能影响的不仅仅是该处理器。一个处理器转入空闲时,可能是系统中或某个处理器容器中的最后一个活动处理器,因此可能会选择一个影响多个处理器的电源状态。为了选择这样的状态,OS 需要为处理器层次结构中受影响的每一级选择一个本地电源状态。

图 8.7 处理器层次结构的电源状态
考虑这样一种情况:在示例系统“处理器层次结构的电源状态”中,Core 0 是最后一个活动核心。它可以使系统进入尽可能低的空闲状态。为此,OS 为 Core0 选择本地状态 3(Power Down),为 Cluster0 选择本地状态 3(Power Down),并为系统选择本地状态 1(Power Down)。然而,大多数 HW 体系结构仅支持从 OS 到平台的单个电源状态请求。也就是说,无法针对层次结构中的每个节点分别向平台发出本地电源状态请求。因此,OS 必须将各层级的本地电源状态组合成一个单一的复合电源状态。然后平台根据该复合电源状态请求执行操作。
平台只能支持有限的一组复合电源状态,并非跨各层级的本地电源状态的每一种组合都是有效的。我们示例系统中的有效电源状态如下一表所示。
表 8.5 前述示例系统中的有效局部状态组合
| 系统级处理器容器 | 集群级处理器容器 | 处理器 |
|---|---|---|
| 运行中 | 运行中 | 时钟门控 |
| 运行中 | 运行中 | 保持 |
| 运行中 | 运行中 | 断电 |
| 运行中 | 时钟门控 | 时钟门控 |
| 运行中 | 时钟门控 | 保持 |
| 运行中 | 时钟门控 | 断电 |
| 运行中 | 保持 | 保持 |
| 运行中 | 保持 | 断电 |
| 运行中 | 断电 | 断电 |
| 断电 | 断电 | 断电 |