目录

前言

一、Processor Power States

1.Processor Power State C0

2. Processor Power State C1

3. Processor Power State C2

4. Processor Power State C3

5. Additional Processor Power States

二、Flushing Caches

三、Power, Performance, and Throttling State Dependencies

四、Decaring Porcessors

1._PDC(Processor Driver Capabilities)

2.Processor Power State Control

3. Processor Hierarchy

4. Lower Power Idle States

4.1 Hierarchical Idle States

5. Processor Throttling Controls

6. Processor Performance Control

7. Collaborative Processor Performance Control

8. _PPE(Polling for Platform Errors)

五、Processor Aggregator Device

1. Logical Processor Idling

1.1 _PUR(Processor Utilization Request)

2. OSPM _OST Evaluation

总结



前言

原文见ACPI Spec Release 6.3 Errata A

本章介绍处理器功率和性能状态的配置和控制。对处理器的主要控制有:

•处理器电源状态:C0, C1, C2, C3,…Cn
•处理器时钟调节
•处理器性能状态:P0, P1,…Pn

这些控制被OSPM组合使用,以达到以下有时相互冲突的目标的期望平衡:

•性能
•功耗和电池寿命
•热需求
•噪音水平要求

因为这些目标是相互作用的,所以操作软件需要执行一项策略,来决定何时和何地在这些目标之间进行权衡(参见下面的注释)。例如,操作软件将确定何时风扇的声音是不受欢迎的,并将降低对热的要求,这可能会导致较低的处理性能。每个处理器配置和控制接口将在下面的章节中讨论,以及控制如何与各种目标交互。

注意:热警告为操作系统的权衡留下空间(启动风扇或降低性能),而不发出关键的热警告。

一、Processor Power States

ACPI将系统处理器在G0工作状态下的电源状态定义为活动执行或休眠(不执行)—参见下面的注释。处理器电源状态包括指定的C0, C1, C2, C3,…Cn。C0电源状态是CPU执行指令的有效功率状态。C1到Cn电源状态是处理器休眠状态,与让处理器处于C0状态相比,处理器消耗更少的电源和散发更少的热量。当处于睡眠状态时,处理器不执行任何指令。每个处理器休眠状态都有一个与进入和退出相关联的延迟,该延迟与省电相对应。通常,进入/退出延迟越长,在该状态下节省的电量就越大。为了节省电能,在空闲时,OSPM将处理器置于其支持的休眠状态之一。当处于C0状态时,ACPI允许通过定义的“节流”过程和转换到多个性能状态(p状态)来改变处理器的性能。一个处理器功率状态图如下所示

注意:这些CPU状态映射到G0工作状态,Cx状态只适用于G0状态。在G3休眠状态下,CPU的状态未定义。

ACPI在每个CPU的基础上定义逻辑,OSPM用来在不同的处理器功率状态之间转换。这个逻辑是可选的,通过FADT表和处理器对象(包含在层次名称空间中)进行描述。FADT表中的字段和标志描述了硬件的对称特性,处理器对象包含了特定CPU的时钟逻辑的位置(由P_BLK寄存器块和_CST对象描述)。

P_LVL2和P_LVL3寄存器为将系统处理器置于C2或C3状态提供可选支持。P_LVL2寄存器用于将选定的处理器排序为C2状态,而P_LVL3寄存器用于将选定的处理器排序为C3状态。通过总线主状态和仲裁器禁用位(PM1_STS寄存器中的BM_STS和PM2_CNT寄存器中的ARB_DIS)提供对C3状态的额外支持。系统软件读取P_LVL2或P_LVL3寄存器进入C2或C3电源状态。在对适当的P_LVLx寄存器进行读操作时,硬件必须精确地使处理器处于适当的时钟状态。平台还可以定义接口,允许OSPM使用_CST对象进入C状态,该对象在_CST中定义(C States)。

通过FADT和P_BLK接口提供的处理器电源状态支持是对称的;OSPM假设系统中的所有处理器都支持相同的电源状态。如果处理器具有非对称电源状态支持,那么平台运行时固件将通过FADT表选择和使用系统中所有处理器支持的最低公共功耗状态。例如,如果CPU0处理器支持所有电源状态,包括C3状态,但是CPU1处理器只支持C1电源状态,那么OSPM将只将空闲处理器置于C1电源状态(CPU0永远不会置于C2或C3电源状态)。注意,必须支持C1电源状态。C2和C3电源状态是可选的(请参阅System Description Table Header中FADT表描述中的PROC_C1标志)。

1.Processor Power State C0

当处理器处于C0电源状态时,它执行指令。当处于C0电源状态时,OSPM可以生成一个策略以低于最大性能运行处理器。除了热控制之外,时钟调节机制还为OSPM提供了执行此任务的功能。该机制允许OSPM将一个值编程到寄存器中,从而将处理器的性能降低到最大性能的百分比。

FADT包含负载偏移量和负载宽度值。在P_CNT寄存器中的负载值是负载的偏移量值决定偏移量。占空宽值决定占空值所使用的位数(它决定节流逻辑的粒度)。处理器的时钟逻辑性能可以用下列公式表示:

名义性能的定义是“尽可能接近,但不低于指定的绩效水平”。OSPM将利用占空偏移量和占空宽度来确定如何访问占空设置字段。然后,OSPM将根据处理器对象的热条件和所需功率对负载设置进行编程。OSPM使用公式1中所示的公式计算处理器的名义性能,注意,零的职责设置是保留的。例如,时钟逻辑可以使用停止授予周期来模拟IA处理器上划分的处理器时钟频率(通过使用stpclk#信号)。当断言LOW时,这个信号内部停止处理器的时钟。为了实现提供8级时钟控制的逻辑,STPCLK#引脚可以如下所示(模拟不同的频率设置):

为了启动节流逻辑,OSPM设置所需的负载值,然后将THT_EN位设置为HIGH。为了改变占空值的设置,OSPM首先将THT_EN位的LOW复位,然后在占空值设置字段上再写一个值,保留该寄存器中其他未使用的字段,然后再次设置THT_EN位的HIGH。

示例逻辑模型如下所示:
ACPI处理器电源状态控制的实现最低限度地需要支持单个CPU休眠状态(C1)。所有CPU电源状态都出现在G0/S0系统状态;当系统过渡到睡眠状态(S1-S4)时,它们就没有意义了。ACPI定义了不同CPU状态的属性(语义)(定义了四种状态)。将适当的低功耗CPU状态映射到定义的ACPI CPU状态取决于平台实现。

ACPI时钟控制通过可选的处理器寄存器块(P_BLK)来支持。ACPI要求系统中每个CPU都有一个独特的处理器寄存器块。此外,当使用P_BLK和FADT接口时,ACPI要求多处理器系统的时钟逻辑是对称的;如果P0处理器支持C1、C2和C3状态,但是P1只支持C1状态,那么OSPM将限制所有处理器在空闲时进入C1状态。

2. Processor Power State C1

所有处理器都必须支持这种电源状态。这种状态是通过处理器的本机指令来支持的(HLT用于IA 32位处理器),并且假设不需要来自芯片组的硬件支持。这种状态的硬件延迟必须足够低,以至于OSPM在决定是否使用它时不考虑状态的延迟方面。除了使处理器处于电源状态外,这种状态没有其他软件可见的影响。在C1电源状态下,处理器能够维护系统缓存的上下文。

硬件可以出于任何原因退出这个状态,但是当一个中断要呈现给处理器时,必须始终退出这个状态。

3. Processor Power State C2

系统可选择支持这种处理器电源状态。如果存在,状态提供了比C1状态更好的电力节省,并且是通过使用本地处理器的P_LVL2命令寄存器或由_CST对象指示的替代机制进入的。此状态的最坏情况硬件延迟在FADT中声明,OSPM可以使用此信息来确定何时应该使用C1状态而不是C2状态。除了使处理器处于电源状态外,这种状态没有其他软件可见的影响。OSPM假设C2电源状态比C1电源状态具有更低的功率和更高的退出延迟。

C2电源状态是一个可选的ACPI时钟状态,需要芯片组硬件支持。这个时钟逻辑由一个接口组成,这个接口可以通过操作使处理器复杂精确地过渡到C2电源状态。在C2电源状态下,假设处理器能够保持其缓存的一致性;例如,总线主处理器和多处理器活动可以在不损坏缓存上下文的情况下进行。

C2状态将处理器置于围绕多处理器和总线主系统进行优化的低功耗状态。如果存在总线主节点或多个处理器活动,OSPM将导致空闲的处理器复合体进入C2状态(这将防止OSPM将处理器复合体置于C3状态)。处理器复合体能够窥探总线主或多处理器CPU在C2状态下对内存的访问。

硬件可以出于任何原因退出这个状态,但必须始终退出这个状态,只要一个中断要呈现给处理器。

4. Processor Power State C3

系统可选择支持这种处理器电源状态。如果存在,状态提供了比C1和C2状态更好的电力节省,并且是通过使用本地处理器的P_LVL3命令寄存器或由_CST对象指示的替代机制进入的。此状态的最坏情况硬件延迟在FADT中声明,OSPM可以使用此信息来确定何时应该使用C1或C2状态而不是C3状态。当处于C3状态时,处理器的缓存保持状态,但处理器不需要窥探总线主处理器或多处理器CPU对内存的访问。

硬件可以出于任何原因退出这个状态,但是当一个中断被呈现给处理器或者设置了BM_RLD并且总线主机试图获得对内存的访问时,必须始终退出这个状态。

OSPM负责确保缓存保持一致性。在单处理器环境中,这可以通过使用PM2_CNT来实现。ARB_DIS总线主仲裁禁用寄存器,以确保在C3状态下总线主周期不发生。在多处理器环境中,可以刷新处理器的缓存并使其失效,这样在进入C3状态之前,缓存中就不会保留任何动态信息。

支持C3电源状态有两种机制:
•在进入C3状态之前,让OSPM刷新并使缓存失效。
•提供硬件机制,防止master写入内存(仅支持单处理器)。

在第一种情况下,OSPM将在进入C3状态之前刷新系统缓存。由于通常与刷新处理器缓存相关的延迟很多,OSPM可能只支持空闲处理器的多处理器平台。缓存的刷新是通过定义的ACPI机制之一来完成的(在下面的章节中描述刷新缓存)。

在提供所需硬件功能(在本节中定义)的单处理器平台中,OSPM将尝试将平台置于一种模式中,该模式将阻止系统总线主处理器在C3状态下写入内存。这是通过在进入C3电源状态之前禁用总线主机来实现的。当总线主机请求访问时,CPU将从C3状态唤醒并重新启用总线主机访问。

在考虑转换到或从C2/C3电源状态时,OSPM使用BM_STS位来确定要进入的电源状态。BM_STS是一个可选的位,它指示总线主机何时处于活动状态。OSPM使用这个位来确定C2和C3电源状态之间的策略:很多总线主活动将CPU电源状态降级到C2(或者C1,如果不支持C2),没有总线主活动将CPU电源状态提升到C3电源状态。OSPM保留BM_STS位的运行历史记录,以确定CPU电源状态策略。

C3电源状态中使用的最后一个硬件特性是BM_RLD位。这个位决定了Cx电源状态是否因为总线主请求而退出。如果设置了,那么Cx电源状态将在总线主服务器的请求后退出。如果复位,电源状态不会在总线主请求时退出。在C3状态下,总线主请求需要将CPU转换回C0状态(因为系统能够保持缓存一致性),但C2状态不需要这样的转换。当使用C3电源状态时,OSPM可以选择性地设置该位,并在使用C1或C2时清除该位。

5. Additional Processor Power States

ACPI从ACPI 2.0开始引入了C3以外的可选处理器电源状态。这些能量状态,C4。通过_CST (C States)中定义的_CST对象传递给OSPM。这些额外的电源状态具有与C1到C3电源状态等价的操作语义,如前面章节中定义的那样,但有不同的进入/退出延迟和电源节省。更多信息请参见_CST (C States)。

二、Flushing Caches

要在不使用ARB_DIS特性的情况下支持C3电源状态,硬件必须提供刷新和使处理器缓存失效的功能(对于IA处理器,这将是WBINVD指令)。为了支持在S1、S2或S3休眠状态下,硬件必须提供刷新平台缓存的功能。通过以下机制之一支持缓存的刷新:

•回写和使系统缓存无效的处理器指令(IA处理器的WBINVD指令)。
•回写但不使系统缓存失效的处理器指令(IA处理器和部分支持的一些芯片组的WBINVD指令;也就是说,它们不会使缓存失效)。

ACPI规范要求所有平台都支持本地CPU指令来刷新系统缓存(同时支持CPU和芯片组),并为目前无法满足此功能的系统提供了一些有限的“最佳努力”支持。平台使用的方法是通过适当的FADT字段和本节中指出的标志来表示的。

ACPI在FADT中指定描述系统缓存能力的参数。如果平台正确地支持处理器的回写和无效指令(IA处理器的WBINVD),那么这种支持被指示为OSPM通过在FADT中设置WBINVD标志来实现。

如果平台不支持前两个刷新选项,那么如果满足以下条件,OSPM可以尝试手动刷新缓存:
•启用缓存的顺序读取不超过2mb的连续物理内存将刷新平台缓存。
•有两个额外的FADT字段需要支持手动刷新缓存:
•FLUSH_SIZE,通常是系统中最大缓存的两倍大小。
•FLUSH_STRIDE,通常是系统中最小的缓存行大小。

三、Power, Performance, and Throttling State Dependencies

当进入电源、性能和节流状态时,成本和复杂性的权衡考虑已经影响到逻辑处理器之间的平台控制依赖关系。这些依赖关系以各种形式存在于多处理器、多线程处理器和基于多核处理器的平台中。这些依赖关系也可能是分层的。例如,一个由包含多个内核和多个线程的处理器组成的多处理器系统,可能由于硬件实现而具有各种依赖关系。

除非OSPM知道逻辑处理器之间的依赖关系,否则可能会出现这样的情况:一个逻辑处理器在没有保证的情况下隐式地转换到功率、性能或调节状态,从而导致不正确/非最佳的系统行为。已知依赖项的知识,OSPM可以协调逻辑处理器之间的转换,选择在这样做时启动转换不会导致不正确或非最佳的系统行为。这种OSPM协调被称为软件(SW)协调。另外,底层硬件可能会协调多个逻辑处理器上的状态转换请求,在保证转换不会导致不正确或非最佳系统行为时,导致处理器转换到目标状态。此场景称为硬件(HW)协调。当硬件坐标转换时,OSPM继续发起状态转换,如果没有依赖项,它就会这样做。但是,在这种情况下,需要硬件为OSPM提供确定实际状态驻留的方法,以便实现正确的/最优的控制策略。

在功率、性能或节流状态控制领域中,包含具有跨处理器依赖关系的逻辑处理器的平台使用ACPI定义的接口将逻辑处理器分组到所谓的依赖关系域中。域的协调类型特性指定是由OSPM还是底层硬件负责协调。当OSPM协调时,平台可能要求OSPM将属于域的处理器的ALL (0xFC)或ANY ONE (0xFD)转换为特定的目标状态。即使底层硬件支持硬件协调,OSPM也可以自行选择执行协调。在这种情况下,OSPM必须将依赖域中的所有逻辑处理器转换为特定的目标状态。

处理器的c状态、p状态或t状态之间没有隐含的依赖关系。因此,例如可以使用相同的依赖域用于指定数量之间的依赖性P-states在一组处理器和另一组处理器中c状态没有任何依赖项p转换之间的隐含在一个处理器在第一组和电源状态转换处理器在第二组。

四、Decaring Porcessors

系统中的每个处理器都必须在\_SB作用域中的ACPI命名空间中声明。在\_PR范围内声明处理器只对希望与基于ACPI 1.0的OSPM实现兼容的平台是必需的。它不赞成用于所有其他用途。处理器通过ASL Device语句声明。通过ASL声明处理器语句已弃用。处理器的Device定义是使用ACPI0007硬件标识符(HID)声明的。处理器配置信息仅由处理器设备对象列表中的对象提供。

当平台使用APIC中断模型时,处理器设备下的UID对象值用于将处理器设备与MADT中的条目关联起来。

处理器特定的对象可以在处理器设备的作用域中声明。这些对象有多种用途,包括处理器性能状态控制。处理器设备的作用域中也允许其他acpi定义的设备相关对象(例如,上面提到的唯一标识符对象_UID)。

将类似于设备的特性归因于处理器,意味着处理器设备驱动程序将由至少可以通过OSPM处理设备通知。OSPM将使用ACPI枚举系统中的处理器通过命名空间、特定于处理器的本机标识指令和_HID方法。

有关处理器设备对象声明的更多信息,请参见Device(Declare Device Package)。处理器特定的子对象将在以下部分中描述。

ACPI 6.0引入了处理器容器的概念。处理器容器使用处理器容器设备声明。处理器容器可用于描述共享公共资源(如共享缓存)的关联处理器集合,这些处理器具有影响集合中的处理器的电源状态。有关更多信息,请参见Processor Containor Device。

1._PDC(Processor Driver Capabilities)

这个可选对象是OSPM使用的一种方法,用于与OSPM提供的处理器电源管理支持级别的平台通信。这个对象是处理器的子对象。在评估返回配置信息的任何其他处理器电源管理对象之前,OSPM先评估_PDC。

_PDC对象为OSPM提供了一种机制,将OSPM支持的处理器电源管理功能传递给平台。这允许平台修改ACPI名称空间对象,根据OSPM提供的支持级别返回处理器电源管理的配置信息。使用这种方法为oem提供了一种机制,可以在遗留操作系统上支持新技术,同时也允许OSPM在能够支持它们的平台上利用新技术。此方法在处理器设备初始化期间评估一次,并且不会在从睡眠状态转换恢复期间重新评估。平台必须保留S1-S3睡眠状态转换的状态信息。

2.Processor Power State Control

ACPI定义了多处理器电源状态(C状态)控制接口。这些是:
1. 处理器寄存器块(P_BLK的)P_LVL2和P_LVL3寄存器与FADT P_LVLx_LAT值相结合
2. 处理器对象列表中的_CST对象。
3.用于处理器和处理器容器的_LPI对象。

基于P_BLK的C状态控制在ACPI Hardware Specification中进行了描述。基于_CST的C状态控件扩展了基于P_BLK的C状态控件的功能,允许C状态的数量和类型是动态的和可适应的CPU体系结构特定的C状态进入和退出机制,由使用Functional定义的寄存器指示固定硬件地址空间。

_CST是一个可选对象,它提供:
•处理器寄存器块(P_BLK的)P_LVL2和P_LVL3寄存器与FADT P_LVLx_LAT值相结合。
•处理器对象列表中的_CST对象。

ACPI 6.0引入了_LPI,低功耗空闲状态对象。_LPI提供了更详细的电源状态信息,并可以在与处理器容器结合的层次结构的多个级别上描述空闲状态。参见_LPI(Low Power Idle States)。

3. Processor Hierarchy

对于计算平台来说,具有多个共享公共资源(如缓存)的处理器是非常典型的,并且这些处理器具有影响处理器组的公共电源状态。这些是按层次方式排列的。例如,一个系统可能包含一组NUMA节点,每个节点都有一些套接字,这些套接字可能包含多组处理器,每组处理器可能包含单个处理器内核,每个处理器内核可能包含多个硬件线程。不同的体系结构使用不同的术语来命名逻辑上相关联的处理器,但是像包、集群、模块和套接字这样的术语是典型的例子。ACPI使用术语处理器容器来描述一组相关的处理器。如果处理器以某种方式关联,比如共享缓存或影响所有处理器的低功耗模式,则称它们属于一个容器。

下图描述了一个示例系统,它包含一个系统级处理器容器,该容器又包含两个集群处理器容器,每个集群处理器容器包含两个处理器。整个集合称为处理器层次结构,使用标准树术语来指代它的不同部分。例如,一个单独的处理器或容器称为节点,驻留在处理器容器中的节点称为该父容器的子节点,等等。这个例子是对称的,但这不是必须的。例如,一个系统可能在不同的容器中包含不同数量的处理器,或者在一个非对称的层次结构中,拓扑树的一边比另一边更深。还要注意的是,虽然这个示例包含一个包含所有处理器的顶级处理器容器,但这不是必需的。使用树的集合来描述系统是合法的。(请参见下面的Note)

Note:处理器层次结构可以用来描述系统拓扑结构的许多不同特征。主要以共享功耗状态为例,详细信息请参见“低功耗空闲状态”中的“低功耗空闲状态”。

4. Lower Power Idle States

ACPI 6.0引入了低功率空闲状态(LPI)。这扩展了规范,允许空闲状态的表达式,比如c状态,当一个处理器空闲时,OSPM可以选择空闲状态,但可能会影响多个处理器,并可能影响其他系统组件。规范中的LPI扩展利用处理器容器设备,通过这种方式可以表示系统的哪些部分受到给定LPI状态的影响。

LPI状态通过以下对象定义:
•_LPI对象定义状态本身,可以在处理器或处理器容器设备中声明
•_RDI允许表达基于设备使用的LPI使用约束

4.1 Hierarchical Idle States

处理器容器(处理器容器设备)可以与_LPI (_LPI(低功耗空闲状态))以分层的方式描述空闲状态。在处理器层次结构中,每个节点都具有特定于该节点的低功耗状态。ACPI将层次结构中特定于节点的状态称为Local Power 状态。例如,在处理器层次结构的电源状态中描述的系统中,CPU0的本地电源状态是时钟门、保持和掉电。

当运行在给定处理器上的操作系统检测到该处理器上没有更多的工作要调度时,它需要选择一个空闲状态。状态可能影响的不仅仅是处理器。处于空闲状态的处理器可以是系统中的最后一个,也可以是处理器容器中的最后一个,因此可以选择影响多个处理器的电源状态。
为了选择这样的状态,操作系统需要为处理器层次结构中每个受影响的级别选择一个本地电源状态。

考虑这样一种情况,即核心0是示例系统中描述的最后一个活动核心,即处理器层次结构的Power状态。它可能使系统处于最低可能的空闲状态。为此,操作系统位Core0选择本地状态3 (Power ; Cluster0为状态3 (Power Down);然而,大多数硬件架构只支持从操作系统到平台的单个电源状态请求。也就是说,不可能在每个层次结构节点上向平台发出单独的本地电源状态请求。因此,操作系统必须将每个级别的本地电源状态组合成一个单一的复合电源状态。然后,平台处理复合电源状态请求。

一个平台只能支持一组有限的组合电源状态,并不是所有跨级别的本地电源状态组合都是有效的。我们的示例系统中的有效电源状态如下表所示。

5. Processor Throttling Controls

ACPI定义了两个处理器节流(T状态)控制接口。这些都是:
•处理器寄存器块(P_BLK)的P_CNT寄存器。
•处理器对象列表中的_PTC、_TSS和_TPC组合对象。

基于P_BLK的节流状态控制在ACPI硬件规范中进行了描述。组合_PTC、_TSS和基于_TPC的节流状态控制扩展了基于P_BLK的控制的功能,允许T状态的数量是动态的,并适应CPU架构特定的T状态控制机制,由使用功能固定硬件地址空间定义的寄存器表示。虽然_PTC、_TSS和_TPC对象的平台定义是可选的,但这三个对象必须存在于处理器下,以便OSPM通过这些控件成功地执行处理器节流。

6. Processor Performance Control

处理器性能控制是通过三个可选对象实现的,这些对象的存在向OSPM表明平台和CPU能够支持多种性能状态。如果实现处理器性能控制,平台必须提供所有这三个对象。平台必须为所有或不为其处理器公开处理器性能控制对象。处理器性能控制是通过三个可选对象实现的,这些对象的存在向OSPM表明平台和CPU能够支持多种性能状态。如果实现处理器性能控制,平台必须提供所有这三个对象。平台必须为所有或不为其处理器公开处理器性能控制对象。

在多处理环境中,所有cpu必须支持相同数量的性能状态,每个处理器性能状态必须具有相同的性能和功耗参数。性能对象必须出现在系统中的每个处理器对象下,以便OSPM使用此特性。

处理器性能控制对象包括' _PCT '包、' _PSS '包和下面详细介绍的' _PPC '方法。

7. Collaborative Processor Performance Control

协同处理器性能控制定义了一种抽象的、灵活的机制,让OSPM与平台中的实体协作来管理逻辑处理器的性能。在这个方案中,平台实体负责创建和维护一个支持连续、抽象、无单元性能尺度的性能定义。在运行时,OSPM请求在这个抽象规模上获得所需的性能,而平台实体负责将OSPM性能请求转换为实际的硬件性能状态。平台还支持自主选择适合当前工作负载的性能级别的能力。在这种情况下,OSPM向平台传递信息,指导平台的性能级别选择。

先前的处理器性能控制(p状态和t状态)描述了它们对处理器频率的影响。虽然处理器频率是处理器完成工作的速度的粗略近似值,但工作负载性能不能保证随频率而变化。因此,协作处理器性能控制没有为处理器性能指定一个具体的指标,而是将准确的性能指标的定义留给平台。平台可以选择使用单个指标(如处理器频率),也可以选择混合多个硬件指标来创建一个综合的性能指标。通过这种方式,平台可以自由地交付OSPM所请求的性能级别,而不必交付特定的处理器频率。OSPM必须不假设平台所呈现的性能值的确切含义,或者它们如何与特定的硬件指标(如处理器频率)相关联。

平台必须为系统中的所有处理器使用相同的性能规模。在具有异构处理器的平台上,所有处理器的性能特征可能不相同。在这种情况下,平台必须合成一个根据处理器差异调整的性能规模,这样任何两个处理器在相同的性能级别上运行相同的工作负载将在大约相同的时间内完成。平台应该为不同类型的处理器公开不同的功能,以便准确地反映每个进程的性能特征。

控制机制通过_CPC对象方法抽象,描述了如何以通用的方式控制和监控处理器的性能。注册方法可以在平台通信中实现通道(PCC)接口(参见平台通信通道(PCC))。这提供了足够的灵活性,使OSPM与之通信的实体可以是处理器本身、平台芯片组或单独的实体(例如,BMC)。

为了提供与以频率形式报告处理器性能的现有工具的向后兼容性_CPC对象可以选择提供处理器频率范围值供操作系统使用。如果提供了这些频率值,对_CPC信息使用的限制仍然存在:OSPM必须对平台提供的性能值的确切含义不做任何假设,所有功能决策和与平台的交互仍然使用抽象的性能尺度进行。频率值仅包含在_CPC对象中,以允许操作系统在一个简单的频率范围内显示性能数据,当频率无法从平台上通过另一种机制发现时。

8. _PPE(Polling for Platform Errors)

这个可选对象出现时,由OSPM评估,以确定是否应该轮询处理器以检索已纠正的平台错误信息。如果提供的话,此对象将增加/覆盖CPEP中提供的信息。
参见 Corrected Platform Error Polling Table(CPEP)

五、Processor Aggregator Device

下一节描述可选的Processor Aggregator设备的定义和操作。过程或聚合器设备提供了一个控制点,使平台能够执行特定的处理器配置和控制,这些配置和控制适用于平台上的所有处理器。

处理器聚合器设备的即插即用ID为ACPI000C。

1. Logical Processor Idling

为了减少平台的功耗,平台可以命令OSPM从操作系统调度器的处理器列表中删除一个逻辑处理器,在该列表中分配了与处理器无关的工作。这种能力被称为逻辑处理器空闲,它提供了一种方法,可以在不经历处理器弹出/插入处理开销的情况下降低平台功耗。指向逻辑处理器和与处理器相关的工作负载的中断将阻碍逻辑处理器空闲在降低功耗方面的有效性,当逻辑处理器空闲时,不希望OSPM重新定位此工作。

1.1 _PUR(Processor Utilization Request)

_PUR对象是一个可选的对象,可以在Processor Aggregator Device下声明,它为平台提供了一种方式,向OSPM指示空闲逻辑处理器的数量。OSPM将_PUR对象作为处理类型为0x80的处理器聚合器设备对象上的通知事件的结果。

2. OSPM _OST Evaluation

当_PUR对象求值处理完成时,OSPM计算_OST对象(如果Processor Aggregator设备存在,将_PUR评估状态传递给平台。_OST参数特定于_PUR计算如下所示。

由于以下原因,平台可能会请求空闲的逻辑处理器数量超过一个OSPM上下文中可以空闲的逻辑处理器数量:
•请求数量大于当前定义的逻辑处理器数量。
•并不是所有定义的逻辑处理器都是由操作系统在线的(例如。许可的原因)
对OS功能至关重要的逻辑处理器(例如,BSP)不能空闲。

总结

ACPI Spec Chapter 8 Processor Configuration and Control相关推荐

  1. ACPI Spec Chapter 10 Power Source And Power Meter Devices

    目录 前言 一.Smart Battrey Subsystems 1. ACPI Smart Battery Status Change Notification Requirements 1.1 S ...

  2. cpuidle framework in Linux Kernel(2)what's idle state

    processor中可以有多个不同的idle级别,对应着不同的power consumption和exit latency.当CPU上没有任务执行时,可以系统当前的状态,把processor切换到不同 ...

  3. ACPI的介绍和概念

    不管是X86还是龙芯的架构,都支持ACPI.看acpi spec已是许久之前的事情了.所以还是要翻翻资料,看看spec. 高级配置与电源接口(英文:Advanced Configuration and ...

  4. 【教程】修复常见ACPI问题(DSDT等)

    参考文章: http://forums.gentoo.org/viewtopic.php?t=122145 http://bbs.gter.net/bbs/viewthread.php?tid=109 ...

  5. 【UEFI基础】ACPI基础

    什么是ACPI 高级配置和电源管理接口(Advanced Configuration and Power Management Interface). ACPI是一套协议标准,软硬件都需实现以配合使用 ...

  6. ACPI AML debug and override ACPI tables using initrd

    本文介绍ACPICA debugger tools,acpidbg和acpidump.acpiexec等:并演示如何使用这些工具,配合initrd,在不重新加载firmware的情况下,修改ACPI ...

  7. ACPI Tables

    ACPI SPEC定义了ACPI-compatible OS与BIOS之间的接口,ACPI Tables就是BIOS提供给OS的硬件配置数据,包括系统硬件的电源管理和配置管理. BIOS在POST过程 ...

  8. ACPI DEBUG方法

    为什么80%的码农都做不了架构师?>>>    获取ACPI TABLE的方法 1. 首先要安装acpidump和iasl命令. $ sudo apt-get install acp ...

  9. 华硕关闭acpi模式_ACPI的完整形式是什么?

    华硕关闭acpi模式 ACPI:高级配置和电源接口 (ACPI: Advanced Configuration and Power Interface) ACPI is an abbreviation ...

最新文章

  1. springboot 项目将本地引用打进jar包
  2. 转载sunboy_2050 - Android APK反编译详解(附图)
  3. Bug整理——$(window).height()获取到$(document).height()的问题
  4. JAVA 框架-Spring-AOP面向切面
  5. 15-Scala使用Option、Some、None,避免使用null
  6. HDU 6395 Sequence(分段矩阵快速幂)题解
  7. 37. 注入篇——旁注
  8. android中Zing二维码扫描,二维码生成
  9. 搞计算机的真的不配拥有爱情吗。这是她给我留下的最后一段话
  10. 计算属性普通函数写法 和 set get 写法
  11. kotlin用it还是this?
  12. LeetCode题解(1647):字符频次唯一的最小删除次数(Python)
  13. mysql命令创建用户_使用MySQL命令行新建用户并授予权限的方法
  14. 使用Python turtle快速实现七夕情人节礼物
  15. mysql启动了但是找不到PID_mysql初始化后找不到pid 不能启动-bbotte的博客-51CTO博客...
  16. java语言常用的包和类
  17. Parity和ECC
  18. 搜狐SNS白社会邀请
  19. 合肥十中高考2021成绩查询,合肥十中2018高考成绩
  20. eval与json转换

热门文章

  1. 广电宽带多台电脑通过路由器上网方案
  2. zzulioj1555: 神殿【二进制拆分】
  3. python做图片石头剪刀布获胜法_一个python石头剪刀布送给大家
  4. android 百叶窗动画,Android 百叶窗折叠效果
  5. 自然辩证法(任元彪老师)——第六讲
  6. BLUES吉他学习笔记006 bluesrv[10]
  7. IPhone手机型号
  8. 《NAIS: Neural Attentive Item Similarity Model for Recommendation》论文阅读及解析
  9. android中样式文件步骤,详解Android主题开发的样式教程
  10. 哪些因素影响SMT贴片加工的质量?