ACPI,即Advanced Configuration Power Interface.在G0工作状态下,ACPI定义系统处理器的电源状态,要幺为活跃状态(正在执行),要幺为睡眠状态(未执行)ACPI定义这样的逻辑在每个CPU的偏置上,即OSPM通过转换来切换不同的处理器电源状态。
基本介绍
- 外文名Advanced Configuration Power Interface
- 简称C-state
- 含义ACPI定义系统处理器的电源状态
- 包括不同的处理器电源状态。
基本信息
ACPI Processor C-state
ACPI,即Advanced Configuration Power Interface.在G0工作状态下,ACPI定义系统处理器的电源状态,要幺为活跃状态(正在执行),要幺为睡眠状态(未执行)。处理器电源状态被设计为C0,C1,C2,C3...Cn。C0电源状态是活跃状态,即CPU执行指令。C1到Cn都是处理器睡眠状态,即和C0状态相比,处理器处理器消耗更少的能源并且释放更少的热量。当进入睡眠状态,处理器不执行任何指令。每个睡眠状态都有一个和省电多少对应的延迟。,进入和退出的延迟越长,这个状态越省电。为了保持能量,OSPM在空闲时将处理器置于其中一个支持的睡眠状态中。在C0状态下,ACPI允许处理器的性能通过一个定义的节制过程发生改变,通过改变进入多种性能状态(P-states). 处理器的电源状态.
ACPI定义这样的逻辑在每个CPU的偏置上,即OSPM通过转换来切换不同的处理器电源状态。这个逻辑是可选的,在FADT表和处理器对象中有描述。FADT表中的这些栏位和标誌描述了硬体的对称性,以及处理器对象对特别的CPU时钟逻辑包含的位置(在P_BLK暂存器块和_CST对象中有描述)。
P_LVL2和P_LVL3暂存器提供可选的支持,将系统处理器置于C2或者C3状态。P_LVL2暂存器将排好序的处理器置于C2状态,P_LVL3将排好序的处理器置于C3状态。C3状态的额外支持通过汇流排主状态和仲裁禁止位被提供(PM1_STS暂存器中的BM_STS位和PM2_CNT暂存器中的ARB_DIS位)。系统软体通过读取P_LVL2或者P_LVL3暂存器数据来进入C2或者C3状态。硬体必须精确的将处理器放在恰当的时钟状态,通过对相应的P_LVLx暂存器的读操作。平台必须定义可选的接口来允许OSPM使用_CST对象进入C-state。
基本简介
处理器的电源状态支持是对称的,通过FADT表和P_BLK接口;OSPM假设同一系统里的所有的处理器都在相同的电源状态下。如果处理器有不对称的电源状态支持,BIOS将通过FADT表选择和使用所有处理器最低的相同的电源状态。例如,如果CPU0支持所有的电源状态乃至C3,CPU1仅支持C1,那幺OSPM将仅将空闲的处理器置于C1(CPU0将不会被置于C2和C3状态)。注意C1必须被支持,C2和C3是可选的。
处理器电源状态C1
所有的处理器必须支持这种状态。这种状态的支持是通过一个本地的处理器指令(HLT或者mwait),并且认为不需要晶片组的硬体支持。这种状态的硬体延迟必须足够的低,使得OSPM在决定是否使用该状态时不需要考虑延迟方面的问题。除了将处理器置于一种电源状态,这个状态没有其他的软体可见的效果。在C1状态下,处理器可以保持系统cache里面的内容。
硬体可以以任何理由退出该状态,但必须是在有中断到达处理器的情况下。
处理器电源状态C2
这种电源状态不是必需的。如果存在,该状态能够更好的省电,它通过使用P_LVL2命令暂存器或者由_CST提供的另一种机制来使处理器进入该状态。这个状态的最坏情况下的硬体延迟在FADT的表里面有声明,OSPM可以根据这个信息来决定什幺时候C1状态应该被C2状态代替。除了将处理器置于一种电源状态,该状态没有其他的软体可见效果。OSPM假设C2比C1更省电,退出的延迟比C1要高。
C2电源状态是一种可选的ACPI时钟状态,需要晶片组的硬体支持。时钟逻辑由一个接口组成,可以用来被操纵使处理器精确的进入C2电源状态。在C2电源状态下,处理器被认为能够保持其cache的一致性;例如,汇流排控制器和多处理器的活动可以发生而不破坏cache里面的内容。
C2状态将处理器置于一种低功耗的状态,围绕多处理器和汇流排控制器系统做最佳化。当存在汇流排控制器或者多处理器活动时(这一条件将阻止处理器进入C3状态),OSPM将使一个空闲状态下的处理器群体进入C2状态。处理器簇能够在C2状态下监视汇流排控制器或者多核CPU访问记忆体的行为。
硬体可以以任何理由退出该状态,但必须是在有中断到达处理器的情况下。
处理器电源状态C3
系统对C3处理器电源状态的支持也是可选的. 如果存在,这种状态比C1和C2状态更加节省功耗. 使用P_LVL3命令暂存器或者_CST机制可以进入C3状态. 这种状态的最坏的硬体延迟在FADT表中声明了,OSPM可以通过这一信息来决定什幺时候需要进入C3状态而不是C1或者C2状态. 当在C3状态中,处理器的cache保持着状态处理器没有窥视汇流排控制器,或者多核CPU进行访存.
硬体可以以任何理由退出这种状态,但必须是因为一个中断投递到了该处理器,或者当BM_RLD被设定时,一个汇流排控制器企图访存.
OSPM负责保证cache的一致性.在单处理器环境下,这可以通过使用PM2_CNT.ARB_DIS汇流排控制器仲裁暂存器来保证汇流排控制器的活动不会发生在C3状态下. 在多处理器环境下,处理器的cache可以通过flush和invalidate来保持一致性.
有两种机制支持C3电源状态
1. 在进入C3状态之前,让OSPM flush和invalidate cache
2. 提供一种硬体机制,阻止控制器写记忆体(只支持UP)
在第一种情况下,OSPM将在进入C3之前flush系统的cache. 由于flush系统的cache通常有很大的延迟,OSPM只对多核平台的空闲处理器支持这种情况. flush cache通过ACPI定义的一种机制来完成.
单处理器平台提供一种硬体功能,OSPM将尝试将平台置于一种模式,当处理器处于C3模式,这种模式组织系统汇流排控制器来写记忆体。一旦汇流排控制器请求一个访问,CPU将从C3中被唤醒,并且重新使能汇流排控制器访问.
OSPM使用BM_STS位来决定要进入的电源状态是C2还是C3. BM_STS是一个可选的bit位,表示汇流排控制器是活跃的. OSPM使用这一位来决定在C2和C3之间的策略. 频繁的汇流排控制器活动将CPU的电源状态降到C2,没有汇流排控制器活动将CPU的电源状态提升到C3. OSPM保持BM_STS的一个变化历史来决定CPU电源状态的策略.
用在C3里的一个硬体特性是BM_RLD位. 这一位决定汇流排控制器的访问是否导致Cx电源状态的退出. 如果这一位被设定,一旦有汇流排控制器访问,Cx将退出. 如果该位被复位为零,汇流排控制器的访问将不会导致电源状态的退出. 在C3状态中,汇流排控制器的申请需要CPU转换回C0状态,在C2状态中,这样的转换将不
是必须的.在C3状态下,OSPM可以设定这一位,在C1或C2状态下,可以清除该位.