ACPI协议所定义的计算机电源的几种管理状态(S、G、C)


ACPI协议所定义的计算机电源的几种管理状态

  • G状态(Global System State)
  • S状态(Sleep state)
  • C状态(CPU power state)
  • P状态(CPU Performance state)
  • D状态(Device state)
  • T状态(CPU Throttling state)

ACPI,全称高级配置与电源接口(Advanced Configuration and Power Interface),该协议定义了计算机电源管理状态,一般可能BIOS或者OS的同学接触的会比较多,我只是知道有这么个东西,但是具体有哪些状态还是整的不是很明确,这里专门整理一下(主要就是比较常用的S状态、G状态、C状态),想知道的更详细的话建议去翻翻ACPI协议。
G状态(Global System State)

指整个系统的状态:
G0:工作状态(working),相当于计算机处于正常开机的状态,该状态下系统实时响应外部事件,用于程序可以正常执行,设备也可以动态分配自己的状态;
G1:休眠状态(sleeping),该状态类似于电脑待机或者休眠,处于低功耗状态,计算机此时不会去执行用户的程序,看起来就像关机,此时显示屏是关闭的,但是只要有唤醒操作还是可以很快的恢复到工作状态;
G2:(soft off),除了用户程序不再执行,操作系统的程序也不再执行,如果要唤醒的话需要较长时间恢复到工作状态,类似于电脑关机;
G3:(mechanical off),简单的讲就是拔电源线,如果是PC的话可能感觉和G2状态差不多,但是如果是服务器,G3和G2的唤醒时间差异估计够你来一盘斗地主。

S状态(Sleep state)

系统的休眠状态,有6种(没错,就是有这么多姿势):
S0:正常工作状态,系统所有设备都处于开启状态;
S1:休眠模式,叫做POS(Power on Suspend),在这个状态下CPU通过CPU的时钟控制器关闭(但是CPU的寄存器和cache好像还是维持的),其他设备也是正常处于开启状态,这个状态相当于降低CPU的功耗;
S2:也是一种休眠模式,类似于S1,不过这个状态下CPU完全关闭(包括寄存器和cache),总线时钟也被down掉,其余设备还是照常保持;
S3:STR(Suspend to RAM),这个状态除了内存其他设备都断电,内存会低速刷新;
S4:STD(Suspend to Disk),系统主电源关闭,S4之前的内存信息写入硬盘,所有部件停止工作,系统主电源关闭,只有硬盘还带电并且可以被唤醒;
S5:完全下电,电源都关闭了,即关机(shut down)。
从上面看的话S的级数越高(代表睡眠程度越深),越往后的状态消耗的电量越少,也就是越省电。S0~S4状态其实就是G1状态的细分。S5状态其实和G2状态一样。

C状态(CPU power state)

表示CPU的供电状态,主要是用于降低CPU功耗的,其实就是G0下的状态:
C0:此时CPU还是正常执行各种指令,相当于满状态运行,唤醒时间为0;
C1:这个状态已经需要唤醒时间了,不过很小(idle),一般软件在执行过程中对该影响基本可以忽略不计,这个状态CPU的功耗已经大大降低了;
C2:唤醒时间比C1更长,功耗比C1更低;
C3:唤醒时间比C2更长,功耗比C2更低,这个状态下CPU依旧会保持缓存信息,但是不会对信息进行监听,需要软件自身负责保证缓存内容的一致性。
(后面好像还定义了更多的C(C4、C5、C6)状态,总体就是CPU功耗更低,响应更慢,工作方式更简单)

P状态(CPU Performance state)

该状态也称为EIST(Enhanced Intel Speed Step Technology),通过控制CPU的电压和频率来变更CPU的性能,进而改变功耗。为C0状态下降低CPU功耗的一种方式。

D状态(Device state)

应该说是外围设备状态:
D0:设备正常工作;
D1:可以减小部分功耗,由设备本身决定,有些设备没有D1状态;
D2:设备关闭部分功能,节约更多的功耗,同样由设备本身决定,有些设备没有D2状态;
D3:设备电源被完全关闭,重新想让设备工作的话除了说要给设备供电,还要重新做初始化操作。

T状态(CPU Throttling state)

一种节能状态,也是在C0状态下降低CPU功耗的一种方式,与P状态不同,T状态是通过调整单位时间内CPU Clock On的占空比(CPU Clock On /(Clock On + Clock Off))的方式 ,改变系统的功耗和温度。