ACPI Processor C-state

全局状态(Global System States)

ACPI规范定义了一台兼容ACPI的计算机系统可以有以下七个状态(所谓的全局状态):

  • G0('S0)正常工作状态:计算机的正常工作状态-操作系统和应用程序都在运行。CPU(s)执行指令。 在这个状态下(即没有进入G1睡眠),CPU和像硬盘、DVD驱动器等等这些的设备可以一再的进入和从低能源状态回来,叫做C0-Cn和D0-D3。(例如膝上型计算机,当使用电池运行的时候通常关掉所有当前未使用的设备;一些桌面型计算机也这么做来减少噪声。)
  • G1 睡眠 细分为从S1到S4这四种状态。系统从这几种状态被唤醒到G0运行唤醒等待时间)所需的时间最短的是S1,其次是S2和S3,最后是S4。此外/sys/power/state对应的关键字与状态: standby(S1), mem(S3), disk(S4)
    • S1:最耗电的睡眠模式。处理器的所有寄存器被刷新,并且CPU停止执行指令。CPU和内存的电源一直维持着,一些设备如果没有被使用那么就会被停止供电。这种模式通常指上电待机或者简单叫做POS,特别在BIOS设置界面上。一些新式的计算机不再支持S1;老式的电脑对S1支持可能要比S3好。
    • S2:一个比S1更深的睡眠状态,不过已经不给CPU供电了;然而,通常这种模式并不被采用。
    • S3 :在BIOS中叫做"挂到内存" (Suspend to RAM/STR),在Windows XP以后的Windows版本和一些Linux发行版中叫做"待机(Standby)", 在Windows Vista和Mac OS X则叫做"睡眠(Sleep)",虽然ACPI规范仅仅提到术语"S3"和"睡眠(Sleep)"。在这个状态下,主存储器(RAM)仍然有电源供给,尽管它也是几乎唯一的有电源供给的组件。因为操作系统、所有应用程序和被打开的文档等等的状态都是保存在主存储器中,用户可以把工作恢复到正好上次他们保持的状态-计算机从S3状态回来时主存储器的内容和它进入S3状态时候的内容是相同象的。(规范中提到了S3和S2是相当类似的,只有更多的组件在S3状态下会被关掉电源。) 相比较S4来说S3有两个好处;计算机恢复的过程比重启要快,第二,如果任何正在运行的应用程序(被打开的文档等等)有私有信息在里面,这些信息是不会被写到硬盘上的。然而,在系统不能被唤醒比如遇到了电源故障的时候, 高速缓冲存储器可能会被flushed来防止数据毁坏。
    • S4: 在Windows中叫休眠, 在Mac OS X中叫作安全睡眠,也称为挂到硬盘,虽然ACPI规范中只提到了一个术语S4main article:Hibernate(OS feature))。在这个状态下,所有主存储器的内容被储存在非挥发性存储器,例如硬盘,保护操作系统当前的状态,包括所有应用程序,打开的文档等.这意味着从S4恢复后,用户可以恢复到原本的工作状态,采用的方法和S3是一样的。S4和S3之间的差异是,除了把主存储器中的内容移进移出所消耗的时间以外,在S3状态下的时候如果一旦停电了,所有主存储器上的数据就会丢失,包括所有的没有保存的文档,而在S4状态下则没有影响.S4和其他的S状态有很大不同,事实上更类似G2Soft Off状态和G3Mechanical Off状态,而不是S1-S3.在S4状态下的系统同样可进入G3(Mechanical Off)状态,并且保留S4时候的状态信息.所以它可以恢复到以前的运行状态在关掉电源之后.
  • G2S5Soft Off--G2S5,和Soft Off都是相同的叫法。G2和G3Mechanical Off几乎是相同的,但有些部件仍然带电,使计算机仍然可以被键盘、时钟、调制解调器(电话唤醒)、LAN(网络唤醒)还有USB设备所唤醒。[1]在启动系统从G2恢复到G0正常工作模式的过程中,无论是G3 Mechanical Off还是G2都得运行启动程序来启动操作系统。

此外,当操作系统在不支持ACPI的情况下运行,这种状态被定义为Legacy。在这个状态下,硬件和电源不是通过ACPI来管理的,实际上已经禁用了ACPI。





   在G0工作状态下,ACPI定义系统处理器的电源状态,要么为活跃状态(正在执行),要么为睡眠状态(未执行)。处理器电源状态被设计为C0,C1,C2,C3...Cn。C0电源状态是活跃状态,即CPU执行指令。C1到Cn都是处理器睡眠状态,即和C0状态相比,处理器处理器消耗更少的能源并且释放更少的热量。进入睡眠状态,处理器不执行任何指令。每个睡眠状态都有一个和省电多少对应的延迟。一般来说,进入和退出的延迟越长,这个状态越省电。为了保持能量,OSPM在空闲时将处理器置于其中一个支持的睡眠状态。在C0状态下,ACPI允许处理器的性能通过一个定义的节制过程发生改变,通过改变进入多种性能状态(P-states). 处理器的电源状态如下图所示:

ACPI Processor C-state_第1张图片
ACPI定义这样的逻辑在每个CPU的偏置上,即OSPM通过转换来切换不同的处理器电源状态。这个逻辑是可选的,在FADT表和处理器对象中有描述。FADT表中的这些字段和标志描述了硬件的对称性,以及处理器对象对特别的CPU时钟逻辑包含的位置(在P_BLK寄存器块和_CST对象中有描述)。

P_LVL2和P_LVL3寄存器提供可选的支持,将系统处理器置于C2或者C3状态。P_LVL2寄存器将排好序的处理器置于C2状态,P_LVL3讲排好序的处理器置于C3状态。C3状态的额外支持通过总线主状态和仲裁禁止位被提供(PM!1_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状态下,可以清除该位.


from:http://blog.chinaunix.net/uid-7357143-id-2058343.html

你可能感兴趣的:(ACPI Processor C-state)