Everything You Need to Know About the CPU Power Management
文章标题:关于CPU电源管理你需要知道的一切
作者/机构:Mike S. / hardwaresecrets.com
为了在CPU空闲时节省能源,可以命令CPU进入低功耗模式。每个CPU都有几种电源模式,它们被统称为“C-states”或“C-modes”。本文将解释这些模式是什么,它们的作用,以及各处理器支持的模式。
A1 主要贡献
本文的核心目标是详细阐述CPU的多种低功耗模式,即C-states,以帮助读者理解其工作原理和节能效果。
- 核心问题:CPU在空闲时会消耗不必要的能源,如何有效降低这部分能耗是计算机体系结构中的一个重要问题。
- 研究目标:系统性地介绍从486DX4处理器至今的各种C-states(C1至C6),解释每种状态的触发机制、内部工作原理(如时钟门控、电压调节)及其演进。
- 主要内容与创新点:本文并非提出新的技术,而是作为一篇详尽的科普教程,其贡献在于:
- 系统性梳理:全面整理并逐一解释了C0, C1(C1E), C2(C2E), C3, C4, C4E(C5), C6等所有主要的C-states。
- 深入浅出:解释了每种状态的技术细节,例如C1状态由
HLT
指令触发,C2状态由STPCLK
引脚触发,而更深度的状态则涉及降低CPU电压甚至完全关闭部分单元。 - 对比分析:明确指出了不同厂商(Intel与AMD)在实现相似功能(如C1E状态)时的技术差异。
- 量化展示:通过具体CPU型号(如Core 2 Extreme X9100)的电流消耗数据,直观展示了不同C-states下的节能效果。
A3 背景知识
C-State 的基本概念
这些模式被称为“C-states”。它们从C0开始编号,C0是CPU的正常工作模式,即CPU 100%开启。C编号越高,CPU的睡眠模式就越深,即更多的电路和信号被关闭,CPU返回C0模式(即唤醒)所需的时间也越长。
C 模式的分类与机制
每个模式都有一个名称,其中一些还有具有不同节能水平(以及唤醒时间)的子模式。下表总结了当前可用的所有C-state模式。C1到C3模式基本上通过切断CPU内部使用的时钟信号来工作,而C4到C6模式则通过降低CPU电压来工作。“增强型”模式可以同时实现这两种方式。接下来我们将详细解释每种C-state。
A2 方法细节
C1 状态
Halt (HLT) 指令
所有x86 CPU都有一个名为“HLT”(“Halt”)的指令,当它运行时,CPU会保持“停止”、空闲状态,什么也不做。在接收到中断(一种硬件信号,告知CPU停止当前工作并处理发送该信号的硬件设备)后,CPU会恢复工作。
CPU与HLT指令的联系
由于在停机模式下CPU完全空闲,英特尔认为这是降低CPU功耗的绝佳时机,因此从486DX4处理器开始,他们增加了“Halt”或“Auto Halt”模式——现在称为C1状态。486DX4之后的所有英特尔和AMD CPU,以及“SL Enhanced”版本的486DX2都实现了此模式。
C1状态激活与工作原理
当程序运行HLT指令后,CPU进入其传统的停机模式,但此时CPU内部时钟信号被停止(只有CPU内部的两个单元——总线接口单元和高级可编程中断控制器APIC——继续由CPU内部时钟供电;这样做是为了在CPU外部总线有重要请求时,允许CPU暂时退出Halt状态)。一旦CPU接收到中断信号,它就会恢复到正常工作状态,时钟信号也随之恢复。
C1状态的节能原理
由于几乎所有CPU内部单元的时钟信号都已停止,它们会停止运行,从而消耗更少的电能。
C1状态的编程简易性
有趣的是,让CPU进入C1状态不需要特殊的编程,因为HLT指令自最早的8086 CPU就已存在。在486DX4之前,HLT指令主要用于停止CPU并等待中断。在此之后,程序员可以利用此模式将CPU置于更低的功耗状态。
C1 CPU电源状态或Stop Clock Snoop状态
如前所述,CPU可以暂时离开Halt(C1)状态,以处理来自CPU外部总线的重要请求。这种临时离开被称为Stop Clock Snoop State、HALT/Grant Snoop State或简称Snoop State,在此期间,CPU时钟会恢复。处理完请求后,CPU会自动返回Halt(C1)状态。
增强型Halt (Enhanced Halt)
所有基于LGA775插槽的英特尔CPU(例如,Pentium 4、Core 2 Duo)都有一种高级Halt状态,称为Enhanced Halt(Pentium 4 CPU使用的命名)、Extended Halt(Core 2 Duo CPU使用的命名),或简称C1E,它除了停止CPU内部时钟外,还会降低CPU电压。如果在主板BIOS中启用此模式,当发出HLT指令时,CPU将进入此模式而非传统的Halt(C1)模式。否则,CPU将继续使用标准的Halt模式。
Core 2 Duo的特性
Core 2 Duo还引入了Extended Halt/Stop Grant Snoop state,该状态允许CPU在响应来自CPU外部总线的重要请求时临时退出C1E或C2E模式,但保持CPU的较低电压,而不是恢复CPU的完整电压。
AMD C1E的差异
请注意,AMD也使用C1E这个名称,但其含义完全不同。在其65纳米Athlon X2和Phenom CPU上,C1E状态的工作方式与C3状态类似,会关闭所有CPU时钟。当在BIOS中启用此选项并且所有CPU核心都进入常规的C1(Halt)状态时,CPU便会进入C1E状态。
AMD C1E的自动切换机制
当这种情况发生时,CPU会自动切换到C1E状态以节省能源。AMD的C1E和C3状态之间的区别主要在于CPU进入睡眠状态的方式:在传统的C3状态下,CPU通常必须由操作系统发出命令才能进入该状态;而在C1E状态下,当所有核心都处于Halt(C1)状态时,CPU会自动进入睡眠状态。
C2 状态
C2 CPU电源状态
C2状态也是在486DX4中引入的,通过为CPU增加一个额外的引脚,名为“STPCLK”(“Stop Clock”)。当该引脚被激活时,CPU核心时钟被切断。
C2状态与C1状态的对比
C2状态在某种程度上与C1状态相似:两者都切断CPU核心时钟。它们之间的区别在于CPU如何实现这一点:C1状态由软件(通过“HLT”指令)激活,而C2状态由硬件(通过向名为“STPCLK”的CPU引脚发送信号)激活。
C2状态下的时钟维持
与CPU处于C1状态时一样,当CPU进入C2状态时,其内部时钟并未完全停止:总线接口和APIC单元仍然由CPU内部时钟速率供电。这样做是为了让CPU能够暂时退出C2状态,以处理来自CPU外部总线的重要请求。
C2状态的节能原理
由于几乎所有CPU内部单元的时钟信号都已停止,它们会停止运行,从而消耗更少的电能。
C2 CPU电源状态的Stop Grant和Stop Clock子模式
C2状态有两个子模式:Stop Grant和Stop Clock。在“STPCLK”引脚被激活后,即进入Stop Grant模式。如前所述,在此模式下,CPU核心时钟被停止,但时钟生成器芯片(也称为PLL,锁相环)仍然活跃,并生成外部总线参考时钟,即CPU外部时钟。
Stop Clock子模式的演进
486DX4、Pentium、Pentium MMX、K5、K6、K6-2和K6-III可以更进一步,进入一个更深层的子状态,称为Stop Clock,此时钟生成器芯片将被关闭,从而外部时钟信号也会被关闭,以节省更多能源。当前的CPU在C2状态下没有Stop Clock模式,而是在C3 Deep Sleep状态中包含此功能。
C2 HLT状态与C1 HLT状态的相似性
与Halt(C1)状态类似,CPU可以暂时离开Stop Grant(C2)状态,以处理来自CPU外部总线的重要请求。这种临时离开被称为Stop Clock Snoop State、HALT/Grant Snoop State或简称Snoop State,在此期间,CPU时钟会恢复。处理完请求后,CPU会自动返回Stop Grant(C2)状态。
扩展型Stop Grant (C2E) CPU电源状态
Core 2 Duo CPU带来了一种高级的Stop Grant状态,称为Extended Stop Grant或C2E,它除了停止CPU内部时钟外,还会降低CPU电压。如果在主板BIOS中启用此模式,当STPCLK引脚被激活时,CPU将进入此模式而非传统的Stop Grant(C2)模式。否则,CPU将继续使用标准的Stop Grant模式。
C2E模式下的Snoop State
这款CPU还引入了Extended Halt/Stop Grant Snoop state,该状态允许CPU在响应来自CPU外部总线的重要请求时临时退出C1E或C2E模式,但保持CPU的较低电压,而不是恢复CPU的完整电压。
C3 状态
C3 CPU电源状态
C3,也称为睡眠状态,最早在英特尔的Pentium II和AMD最早的Athlon CPU上使用。有趣的是,在65纳米工艺制造的Core 2 Duo CPU(即型号以“4”或“6”开头的)上不提供此模式,但这些CPU实现了前面提到的其他“扩展”状态(C1E和C2E)。而45纳米工艺制造的Core 2 Duo(即型号以“7”或“8”开头的)则重新支持此模式。
C3状态的工作原理
正如我们所解释的,当CPU处于Halt(C1)或Stop Grant(C2)状态时,CPU内部时钟会从几乎所有单元中切断,使它们停止运行从而消耗更少的电能。然而,在这些状态下,两个内部CPU单元仍在运行:总线接口单元和APIC(高级可编程接口控制器)。保持这些单元运行是为了让CPU能够处理来自CPU外部总线的重要请求和处理中断。
睡眠状态 (C3)
下一个状态,即睡眠(C3),会切断CPU所有的内部时钟信号,包括来自总线接口单元和APIC的时钟。这意味着当CPU处于睡眠模式时,它无法响应来自CPU外部总线的重要请求或中断。
深度睡眠 (Deep Sleep) 子模式
英特尔CPU和AMD的Turion 64允许一种名为Deep Sleep的C3子模式,在该模式下,CPU的外部时钟也被停止,从而节省更多电能。
不同制造商的实现差异
CPU进入C3状态的方式因制造商而异。英特尔CPU增加了一个额外的引脚,称为SLP(或DPSLP,取决于CPU型号),当CPU处于C2状态时必须激活该引脚,才能将CPU切换到C3状态。因此,必须先激活STPCLK引脚,然后再激活SLP引脚。进入Deep Sleep状态只需切断外部时钟信号即可。在AMD CPU上,进入C3状态只需读取ACPI(高级控制电源接口)中的一个寄存器,该电路物理上位于芯片组上。
PLVL_X 寄存器
如果程序读取PLVL_2寄存器,芯片组将激活STPCLK引脚,使CPU进入Stop Grant(C2)模式;而如果程序读取PLVL_3寄存器,芯片组将激活STPCLK引脚,使CPU进入睡眠(C3)模式。
Turion 64的特性
AMD的移动CPU(Turion 64)支持一个名为AltVID的子模式,允许在C3模式下降低CPU电压。此外,不要忘记Turion 64、65纳米的Athlon X2和Phenom CPU还有一个名为C1E的模式,它与英特尔的C1E无关,该模式将CPU置于与C3相同的状态。AMD的C1E和C3状态之间的区别主要在于CPU进入睡眠状态的方式:在传统的C3状态下,CPU通常必须由操作系统发出的命令才能进入该状态;而在C1E状态下,当所有核心都处于Halt(C1)状态时,CPU会自动进入睡眠状态。
CPU电压调节
C1、C2和C3模式主要处理时钟信号。由于在C3模式下,CPU内部的所有时钟信号都可以被停止,因此无法通过操纵CPU时钟信号来进一步节省电能。降低CPU空闲功耗的下一步是降低CPU电压。由于功率与电压成正比(P = V x I),如果我们降低CPU电压,我们也会减少浪费的电量。
C4 状态
C4 CPU电源状态及其在CPU电压中的重要性
第一个实现电压降低的模式称为C4或深度睡眠状态(Deeper Sleep State),它最早在Pentium M处理器(即迅驰平台)上实现,这是一款面向移动市场的CPU,在该市场中,节能对于延长电池寿命至关重要。
支持C4状态的CPU型号
此模式也适用于Core Solo、Core Duo(Pentium M的双核版本)、所有移动版的Core 2 Duo以及型号以“7”或“8”开头的桌面版Core 2 Duo型号(即45纳米CPU)。此模式在65纳米桌面版Core 2 Duo CPU(型号以“4”或“6”开头)上不可用。此模式也适用于AMD的Turion 64处理器。
深度睡眠状态与DPRSTP引脚
深度睡眠状态(C4)是从深度睡眠状态(C3)进入的,即CPU必须首先进入深度睡眠状态(C3),然后从那里才能降低其内部电压。在Core Duo CPU上,这必须通过激活CPU上一个名为DPRSTP的引脚来完成。
C4 CPU电源状态如何节省能源
为了让你了解C4状态如何节省能源的一些实例,让我们以移动版Core 2 Extreme X9100为例。在正常(C0)模式下全速运行时,该CPU的最大电流消耗为59 A,当CPU处于C4状态时,电流降至12.2 A,功耗降低了79.32%。对于最大电流消耗为47 A的移动版Core 2 Duo T9400或T9600,当CPU处于C4模式下时,最大电流消耗降至11.7 A,功耗减少了75.11%。
C4E / C5 状态
C4E CPU电源模式
Core Solo、Core Duo(代号为Yonah的面向移动市场的Pentium M双核版本)以及45纳米版本的移动Core 2 Duo(即编号以8或9开头以及7350型号)还有另一种C4模式,称为增强型深度睡眠(Enhanced Deeper Sleep)或简称C4E,它允许在L2内存缓存被禁用后进一步降低CPU电压。此模式在其他CPU上不可用。有些人也将此模式称为C5,尽管这不是该模式的正式名称。
以C5为特色的节能示例
让我们举一些由C4E状态带来的节能示例。首先,考虑移动版Core 2 Extreme X9100。在正常(C0)模式下全速运行时,该CPU的最大电流消耗为59 A,当CPU处于C4E状态时,电流降至11.7 A,功耗降低了80.17%。
45nm移动版Core 2 Duo的节能
对于最大电流消耗为47 A的移动版Core 2 Duo T9400或T9600,当CPU处于C4E模式下时,最大电流消耗降至10.5 A,功耗减少了77.66%。这是在45纳米版本的移动Core 2 Duo(即编号以8或9开头以及7350型号)中引入的额外节能措施。
深度掉电状态 (Deep Power Down State)
值得注意的是,45纳米桌面版的Core 2 Duo不具备此功能,该功能也被称为深度掉电(Deep Power Down)。当CPU进入此状态时,它会将其整个架构状态保存在一个特殊的静态RAM中,该RAM由独立的电源供电。
深度掉电状态的工作机制
这使得CPU的内部电压可以降低到任何值,包括0 V,从而在空闲时完全关闭CPU。然后,当CPU被唤醒时,它会从其特殊的静态RAM中加载所有内部单元的先前状态。当然,从这种状态唤醒CPU所需的时间比我们之前讨论的状态要长得多,但它比关闭计算机然后再重新打开并加载操作系统等要快。
CPU电压线
请注意,整个CPU只有一条电压线(唯一具有不同电压源的组件是上述提到的特殊内存),降低或关闭CPU电压是一种全有或全无的操作:如果要关闭CPU,当它进入C6模式时,必须完全关闭它。
Core i7 Nehalem的特性
Core i7 CPU(代号Nehalem)内置一个电源控制单元,允许降低或关闭CPU各个部分的电压。例如,如果CPU只有一个处理核心空闲,它将能够只关闭这一个核心,使其进入C6模式。而在当前的45纳米移动版Core 2 Duo CPU上,你无法做到这一点。
C6 状态
C6 CPU电源状态
为了进入C6状态,CPU必须首先进入C4状态,然后从那里切换到C6状态。
C6状态的节能示例
让我们举一些由C6状态带来的节能示例。首先,考虑移动版Core 2 Extreme X9100。在正常(C0)模式下全速运行时,该CPU的最大电流消耗为59 A,当CPU处于C6状态时,电流降至11 A,功耗降低了81.35%。
移动版Core 2 Duo的C6节能效果
对于最大电流消耗为47 A的移动版Core 2 Duo T9400或T9600,当CPU处于C6模式下时,最大电流消耗降至5.7 A,功耗减少了惊人的87.87%。
A4 实验结果
本文通过列举具体CPU型号在不同C-state下的电流消耗数据,量化了各种低功耗模式的节能效果。总结如下:
- C4状态节能效果:
- Mobile Core 2 Extreme X9100: 在C0模式下最大电流为59A,进入C4状态后降至12.2A,功耗降低79.32%。
-
Mobile Core 2 Duo T9400/T9600: 在C0模式下最大电流为47A,进入C4状态后降至11.7A,功耗降低75.11%。
-
C4E (C5)状态节能效果:
- Mobile Core 2 Extreme X9100: 进入C4E状态后,电流从59A降至11.7A,功耗降低80.17%。
-
Mobile Core 2 Duo T9400/T9600: 进入C4E状态后,电流从47A降至10.5A,功耗降低77.66%。
-
C6状态节能效果:
- Mobile Core 2 Extreme X9100: 进入C6状态后,电流从59A降至11A,功耗降低81.35%。
- Mobile Core 2 Duo T9400/T9600: 进入C6状态后,电流从47A降至5.7A,功耗降低87.87%,效果非常显著。
这些数据清晰地表明,随着C-state数值的增高,CPU的节能效果越发显著,特别是引入电压调节的C4及更高级别的状态。
A5 结论
本文系统地介绍了从C1到C6的CPU低功耗状态,阐明了它们通过时钟门控和电压调节等技术来节省能源的原理和演进过程。
文章最后将这些技术知识与现代操作系统(以Windows 10为例)的实际应用联系起来。用户可以通过“电源和睡眠设置”访问基本的电源管理模式,通常有均衡和节能两种选项,而高性能选项可能需要手动创建。
文章还探讨了使用高性能电源计划的利弊。虽然高性能计划能让设备运行稍快,体验更好,但它会消耗更多能源。对于笔记本电脑用户来说,长期使用可能会加速电池损耗。文章建议,有经验的用户可以创建自定义的高性能电源计划,以在提升设备性能和降低长期损坏风险之间取得平衡。这为读者将理论知识应用于日常使用提供了实用指导。
💬 评论讨论
欢迎在这里分享您的想法和见解!