8.5. 处理器聚合器设备
以下部分描述了可选处理器聚合器设备的定义和操作。处理器聚合器设备提供了一个控制点,使平台能够执行适用于平台中所有处理器的特定处理器配置和控制。
处理器聚合器设备的即插即用 ID 是 ACPI000C。
表 8.26 处理器聚合器设备对象
| 对象 | 说明 |
|---|---|
| _PUR | 请求使一定数量的逻辑处理器进入空闲状态 |
8.5.1. 逻辑处理器空闲化
为了降低平台的功耗,平台可以指示 OSPM 将某个逻辑处理器从操作系统调度器的处理器列表中移除,在该列表中会分派非处理器亲和的工作。此能力称为逻辑处理器空闲化,它提供了一种在不经历处理器弹出/插入处理开销的情况下降低平台功耗的方法。当逻辑处理器被空闲化时,定向到该逻辑处理器的中断以及处理器亲和的工作负载会妨碍逻辑处理器空闲化在降低功耗方面的效果,因为预计 OSPM 不会重新定向这些工作。
8.5.1.1. _PUR(处理器利用率请求)
_PUR 对象是一个可选对象,可在处理器聚合器设备下声明,并提供一种让平台向 OSPM 指示应空闲化的逻辑处理器数量的方法。OSPM 由于处理处理器聚合器设备对象上类型为 0x80 的 Notify 事件而对 _PUR 对象求值。
参数:
无
返回值:
如下所述的一个 Package。
返回值信息
Package
{
RevisionID // Integer: Current value is 1
NumProcessors // Integer
}
NumProcessors 包元素传达平台希望 OSPM 空闲化的逻辑处理器数量。该数量为绝对值。OSPM 会尽可能增减置于空闲状态的逻辑处理器数量,使其等于 NumProcessors 值。NumProcessors 值为零会导致 OSPM 尽可能将所有逻辑处理器置于活动状态。
OSPM 使用内部的逻辑处理器到物理核心和封装拓扑知识,按能最大化空闲请求带来的功耗降低收益的顺序依次空闲化逻辑处理器。例如,在空闲化构成另一核心上逻辑处理器的 SMT 线程之前,应先空闲化构成单个处理核心上逻辑处理器的所有 SMT 线程,以允许该核心进入低功耗状态。
8.5.2. OSPM _OST 求值
当 _PUR 对象求值处理完成时,OSPM 会对 _OST 对象求值(如果其存在于处理器聚合器设备下),以向平台传达 _PUR 求值状态。下面描述了 _PUR 求值特有的 _OST 参数。
参数: (3)
Arg0 - 源事件 (Integer) : 0x80
Arg1 - 状态码 (Integer) : 见下文
Arg2 - 已空闲处理器 (Buffer) : 见下文
返回值:
无
参数信息:
Arg1 - 状态码:
0 - 成功 - OSPM 已将由 Arg2 值指示数量的逻辑处理器置为空闲
1:未执行任何操作
Arg2 - 一个 4 字节缓冲区,表示一个 DWORD,其值为当前已空闲的逻辑处理器数量)
平台可能会请求空闲化的逻辑处理器数量超过在 OSPM 上下文中可被空闲化的逻辑处理器可用数量,原因如下:
请求的数量大于当前定义的逻辑处理器数量。
并非所有已定义的逻辑处理器都已被 OS 联机(例如,出于许可原因)
对于 OS 功能至关重要的逻辑处理器(例如,BSP)不能被空闲化。