8.3. 电源、性能和节流状态依赖关系
在进入电源、性能和节流状态时,逻辑处理器之间的平台控制依赖关系是由成本与复杂度权衡驱动形成的。这些依赖关系以多种形式存在于基于多处理器、多线程处理器和多核处理器的平台中。这些依赖关系也可能具有层次性。例如,由包含多个核心且每个核心包含多个线程的处理器组成的多处理器系统,可能因硬件实现而具有各种依赖关系。
除非 OSPM 知晓逻辑处理器之间的依赖关系,否则可能导致这样的场景:某个逻辑处理器在没有必要的情况下被隐式迁移到某个电源、性能或节流状态,从而导致不正确/非最优的系统行为。在了解这些依赖关系的前提下,OSPM 可以协调逻辑处理器之间的迁移,选择在不会导致不正确或非最优系统行为时发起迁移。这种 OSPM 协调称为软件(SW)协调。或者,底层硬件也可能协调多个逻辑处理器上的状态迁移请求,使处理器在保证不会导致不正确或非最优系统行为时迁移到目标状态。这种情况称为硬件(HW)协调。当由硬件协调迁移时,OSPM 仍继续像不存在依赖关系时那样发起状态迁移。然而,在这种情况下,要求硬件向 OSPM 提供一种确定实际状态驻留情况的方法,以便实现正确/最优的控制策略。
在电源、性能或节流状态控制方面,包含具有跨处理器依赖关系的逻辑处理器的平台使用 ACPI 定义的接口,将逻辑处理器分组到所谓的依赖域中。某个域的协调类型特征指定由 OSPM 还是底层硬件负责协调。当由 OSPM 协调时,平台可能要求 OSPM 将属于该域的处理器中的 ALL (0xFC) 或 ANY ONE (0xFD) 迁移到某个特定目标状态。即使底层硬件支持硬件协调,OSPM 也可以自行决定执行协调。在这种情况下,OSPM 必须将依赖域中的所有逻辑处理器都迁移到该特定目标状态。
表 8.1 C 状态/T 状态/P 状态协调类型
| 值 | 描述 |
|---|---|
| 0xFC | SW_ALL:OSPM 通过在域中每个处理器的控制接口上发出相同的状态请求来协调该域内所有处理器的状态。ALL 指的是这样一项要求:域中的所有处理器必须对所请求的状态达成一致,该域才能进入该状态。 |
| 0xFD | SW_ANY:OSPM 通过仅在域中一个处理器的控制接口上发出状态请求来协调该域内所有处理器的状态。ANY 指的是这样一项硬件要求:域中的所有处理器都迁移到该域中任一处理器上最后一次请求的状态。 |
| 0xFE | HW_ALL:当 OSPM 在域中任一处理器的控制接口上请求状态迁移时,硬件会协调该域内所有处理器的状态,并将该域中的所有处理器迁移到协调后的状态。ALL 指的是这样一项要求:当 OPSM 在域中任一处理器上发出独立状态请求时,硬件保持协调。与 SW_ALL 不同,OSPM 可以对域中的处理器发出不同的状态请求,而硬件决定该域中所有处理器的结果状态。**注:**硬件协调策略由实现定义。 |
处理器的 C-states、P-states 或 T-states 之间并不隐含任何依赖关系。因此,例如,可以使用相同的依赖域编号来指定一组处理器之间 P-states 的依赖关系以及另一组处理器之间 C-states 的依赖关系,而不会隐含第一组中某处理器上的 P-State 迁移与第二组中某处理器上的 C-state 迁移之间存在任何依赖关系。