2024年5月31日发(作者:)

各种电源和CPU的状态

Jackliu

有时候我们会被BIOS或是作业系统中的电源管理搞得一头雾水,S0、C1究

竟代表着什么,如果不了解其意义以及身后所代表的内涵,很难在BIOS中调

试中做出适合的调整和设定。

各种电源状态缩写的意义

P-States:英文为CPUPerformanceStates的缩写,中文为CPU

效能状态。可以说CPU降频和降电压。CPU肯定在跑。

T-States

:英文为

ThrottlingStates

的缩写。中文意思为系统负载

状态。

CPU

根据系统温度,一跑一停的状态。

S-States:英文为SleepingStates的缩写,中文为系统睡眠状态。

进入S0-S5的ACPI状态。

G-States

:英文为

GlobalStates

的缩写,中文为全局状态。

C-States:英文为CPUStates的缩写,中文为CPU电源状态。

基本CPU停止运行。

C-States

:英文为

DEVStates

的缩写,中文为设备状态。

三种电源状态的关系

正常运作靠P-States

P-States指的就是CPUCPU依据目前运算量负荷轻重,调整运作频率的高低,

譬如1颗3.0GHz的CPU在执行Crysis3时以全速运作、上网时以1.8GHz

运作、观赏影片时以800MHz运作。在Intel方面称为EIST(EnhancedIntel

SpeedStepTechnology),AMD方面则是CnQ(Cool’n’Quiet)和Power

Now!。通常P0指的就是CPU以最高频率、最高运算量的状态运作,接下来

P1、P2、P3……就依照运作效能的多寡、省电性由少至多依序排下去。一般这

个只存在C0的状态。是唯一的。

T-States

通常不会使用,唯有当

CPU

过热或是超过我们所设定的温度时才介

入。

T-States

P-States

都是为了降低发热量而被使用,但是运作方式有别。

例如

1

3.0GHz

CPU

P-States

要求运作在

50

%,就是真的运作在

1.5GHz

之上,而

T-States

则是将

3.0GHz

切成一半,一半时脉不运作,一半

时脉正常运作(调整

CPU

实际运作的占比)。

▲P-States和T-States的运作方式不同。

Intel

TurboBoost

技术就是当作业系统要求

CPU

运作在

P0

状态时,就会

收集有关目前

CPU

耗电量、启动核心数量、核心电源状态、

CPU

温度等信息,

来决定

P0

的运作时脉为多少。

▲IntelTurboBoost

简易原理说明。

S-States与待机/休眠/睡眠关系式

S-States

则是指计算机系统状态,

S0

S5

共有

6

种。

S0指的就是系统正常开机运作的状态,包含所有的P和C状态。S1时透过

时脉产生器将CPU关闭、系统内容被刷新(持续供电)

S1

状态也被称为

poweronsuspend

S2则是CPU电源完全关闭、系统内容刷新,系统整体耗电量比起S1更低一

些。

S3

一般也称为

suspendtoRAM

或是待命(

WindowsXP

)、睡眠(

Windows

7

之后),除了系统还有少量供电以外,其余大部分系统内的硬件电源均被关闭;

S4则是所谓的suspendtodisk,将系统内部的资料写入硬盘之后,将计算机

系统整体关闭,耗电量和关机一样;

S5

就是关机状态。

G-States

全局状态,不过

G-States

仅是个抽象描写系统目前的电源状态

ACPI

),要如何实作需额外定义。一般来说为

4

种状态:

G0为系统开机状态、

G1

为睡眠状态、

G2为软关机、

G3

为硬件关机。

C-States好多种

比较难理解的就是

CPU

待机状态

C-States

,因为这里的电源管理比较复杂,会

根据状态的不同分别调降运作时脉或电压,或者干脆完全关闭。

C-States

也不

断的加入新成员,象是

C8

C10

就是仅在

Haswell

系列才开始导入的

C-State

C0:(正常运行状态)包含在S0之下,旗下包含所有P-States,也就是CPU

内部电源全开的状态,所有的x86CPU都支援这个状态。

C1

:(挂起或待机状态)藉由软件关闭

CPU

的时脉(

stopinternalclock

)(送

HLT

指令),但是总线界面和

APIC

AdvancedProgrammableInterrupt

Controller

)均运作在全速状态,由

Intel486DX4

和之后的

CPU

开始支援,唤

醒的时间大概

10ns

(纳秒)。

C1E:(挂起或待机状态)藉由软件关闭CPU的时脉,以及降低CPU的输入

电压,其余的总线界面和APIC运作在全速状态,LGA775脚位之后的CPU

都支援,唤醒的时间10ns(纳秒);如果在BIOS中开启C1E支援,则CPU

就会进入

C1E

而非进入

C1

状态。须注意

AMD

也使用

C1E

这个名词在

CPU

上,不过却是另外一回事,在

AMD65

奈米之后的

CPU

,所有

CPU

核心

进入

C1

状态会让

CPU

直接进入

C3

状态。

C2:(挂起或待机状态)藉由硬件关闭CPU的时脉(设定STPCLKCPU接脚),

总线界面和APIC均运作在全速状态,同样是Intel486DX4之后全部支援,

唤醒的时间100ns(纳秒)。

C2E

:(挂起或待机状态)藉由硬件关闭

CPU

的时脉,降低

CPU

的输入电压,

其余的总线界面和

APIC

运作在全速状态,

IntelCore2Duo

之后皆支援,但

仅限

Intel

CPU

;同样的,若在

BIOS

中将

C2E

支援开启时,就会以

C2E

替代

C2

状态,唤醒的时间

100ns

(纳秒)。

C3:(深度休眠状态)关闭CPU内部所有的时脉(包含总线界面和APIC),

将L1快取中的内容清空,IntelPentiumII和AMDAthlon之后皆支援(除

Core2DuoE4000和E6000系列不支援),此模式也称为sleep模式,唤醒

的时间50ms(毫秒)。C3下还有个deepsleep模式,由PentiumII以上

(Core2DuoE4000和E6000系列不支援)、Turion64以上所支援,除CPU

内部时脉外,也可关闭外部时脉。唤醒的时间大概

50

µs(微秒)

IntelCPU

可透过设定

SLP

或是

DSSLP

接脚进入

C3

(在这之前

CPU

必须先

进入

C2

),

AMD

则是透过读取

APCI

的暂存器和

STPCLK

的组合而定,如

果读取

PLVL_2

暂存器,则设定

STPCLK

之后会进入

C2

;若读取

PLVL_3

暂存器,则设定

STPCLK

之后会进入

C3

AMD

行动版

Turion64CPU

还支

援更进阶的

AltVID

功能,可于进入

C3

的同时降低

CPU

电压。

C4:(更深度休眠状态)称做deepersleep,不像C1~C3为关闭CPU的时

脉,C4更进一步降低CPU的电压供应,并把部分的L2快取内容清空以便进

一步降低能源消耗;C4从IntelPentiumM(不包含Core2DuoE4000和

E6000

系列)和

AMDTurion64

之后开始支援,唤醒的时间至少需

200ms

(毫

秒)。

C4E:(更深度休眠状态)将C4时的CPUL2快取完全清空并关闭,可进一

步降低供应给CPU的电压,此模式仅在部分CPU上出现(CoreSolo、Duo、

部分45奈米行动版Core2Duo、部分Atom)。唤醒的时间至少需200ms

(毫秒)

C6

C6

状态(深度节能状态)(

deeppowerdown

)可以说是完全关闭了

CPU

包含

L1

L2

快取。在此状态下,

CPU

内部的状态都会被写入到

1

个具有

独立电力来源的静态存储器中(后来的

CPU

可使用

L3

快取做为目标写入),

CPU

的电压就能够降到非常低,甚至是

0V

完全关闭,从

Intel45

奈米行动版

Core2Duo

开始支援。

C6

时的唤醒的时间比较长,约是

C4

50%

Intel在Nehalem中导入了1个电源控制模块,CPU各个部分可使用不同的

电压,因此可让某个闲置的处理核心进入C6。

▲Intel

Penryn

核心开始导入

C6

C7:(更深度节能状态)C7在C6的基础上增加了部分或者全部清空L3快

取,被整合进去的北桥,现称SystemAgent以最小的电压保持启动,外部电

压调整可从1.8V降至1.6V,从SandyBridge开始导入。

C8

:最后

1

L3

快取被关闭,

SystemAgent

以最小的电压保持启动,外部

电压调整可从

1.8V

降至

1.2V

C9:SystemAgent电压降至0V,IO关闭,外部电压调整可降至0V。

C10

:外部电压调整可降至

0V

或完全关闭(以上

C8

C10

Haswell

以后的

芯片组才开始出现)。

▲Haswell

多出来的

C8

C10

状态。