各种电源和CPU的状态
Jackliu 有时候我们会被BIOS或是作业系统中的电源管理搞得一头雾水,S0、C1究竟代表着什么,如果不了解其意义以及身后所代表的内涵,很难在BIOS中调试中做出适合的调整和设定。
各种电源状态缩写的意义
P-States:英文为CPU Performance States的缩写,中文为CPU
效能状态。可以说CPU降频和降电压。CPU肯定在跑。
T-States:英文为Throttling States的缩写。中文意思为系统负载
状态。CPU根据系统温度,一跑一停的状态。
S-States:英文为Sleeping States的缩写,中文为系统睡眠状态。
进入S0-S5的ACPI状态。
G-States:英文为Global States的缩写,中文为全局状态。
C-States:英文为CPU States的缩写,中文为CPU电源状态。
基本CPU停止运行。
C-States:英文为DEV States的缩写,中文为设备状态。
三种电源状态的关系
正常运作靠P-States
P-States指的就是CPU CPU依据目前运算量负荷轻重,调整运作频率的高低,譬如1颗  3.0GHz的CPU在执行Crysis3时以全速运作、上网时以  1.8GHz 运作、观赏影片时以800MHz运作。在Intel方面称为EIST(Enhanced Intel SpeedStep Technology),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的Turbo Boost技术就是当作业系统要求CPU运作在P0状态时,就会收集有关目前CPU耗电量、启动核心数量、核心电源状态、CPU温度等信息,来决定P0的运作时脉为多少。
▲Intel Turbo Boost简易原理说明。
S-States与待机/休眠/睡眠关系式
S-States则是指计算机系统状态,S0~S5共有6种。
S0指的就是系统正常开机运作的状态,包含所有的P和C状态。S1时透过时脉产生器将CPU关闭、系统内容被刷新(持续供电)
S1状态也被称为power on suspend;
S2则是CPU电源完全关闭、系统内容刷新,系统整体耗电量比起S1更低一些。
S3一般也称为suspend to RAM或是待命(Windows XP)、睡眠(Windows 7之后),除了系统还有少量供电以外,其余大部分系统内的硬件电源均被关闭;S4则是所谓的suspend to disk,将系统内部的资料写入硬盘之后,将计算机系统整体关闭,耗电量和关机一样;
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的时脉(stop internal clock)(送出HLT指令),但是总线界面和APIC(Advanced Programmable Interrupt Controller)均运作在全速状态,由Intel486DX4和之后的CPU开始支援,唤醒的时间大概10ns(纳秒)。
C1E:(挂起或待机状态)藉由软件关闭CPU的时脉,以及降低CPU的输入电压,其余的总线界面和APIC运作在全速状态,LGA775脚位之后的CPU 都支援,唤醒的时间10ns(纳秒);如果在BIOS中开启C1E支援,则CPU
就会进入C1E而非进入C1状态。须注意AMD也使用C1E这个名词在CPU上,不过却是另外一回事,在A
MD65奈米之后的CPU,所有CPU核心进入C1状态会让CPU直接进入C3状态。
C2:(挂起或待机状态)藉由硬件关闭CPU的时脉(设定STPCLK CPU接脚),总线界面和APIC均运作在全速状态,同样是Intel486DX4之后全部支援,唤醒的时间100ns(纳秒)。
C2E:(挂起或待机状态)藉由硬件关闭CPU的时脉,降低CPU的输入电压,其余的总线界面和APIC运作在全速状态,Intel Core2Duo之后皆支援,但仅限Intel的CPU;同样的,若在BIOS中将C2E支援开启时,就会以C2E 替代C2状态,唤醒的时间100ns(纳秒)。
C3:(深度休眠状态)关闭CPU内部所有的时脉(包含总线界面和APIC),将L1快取中的内容清空,Intel Pentium II和AMD Athlon之后皆支援(除Core2Duo E4000和E6000系列不支援),此模式也称为sleep模式,唤醒的时间50ms(毫秒)。C3下还有个deep sleep模式,由Pentium II以上(Core2Duo E4000和E6000系列不支援)、Turion64以上所支援,除CPU 内部时脉外,也可关闭外部时脉。唤醒的时间大概50µs(微秒)
Intel CPU可透过设定SLP或是DSSLP接脚进入C3(在这之前CPU必须先进入C2),AMD则是透过读取APCI的暂存器和STPCLK的组合而定,如果读取PLVL_2暂存器,则设定STPCLK之后会进入C2;若读取PLVL_3暂存器,则设定STPCLK之后会进入C3。AMD行动版Turion64CPU还支援更进阶的AltVID功能,可于进入C3的同时降低CPU电压。
C4:(更深度休眠状态)称做deeper sleep,不像C1~C3为关闭CPU的时脉,C4更进一步降低CPU的电压供应,并把部分的L2快取内容清空以便进一步降低能源消耗;C4从Intel Pentium M(不包含Core2Duo E4000和