加载中…
个人资料
浪迹涨停
浪迹涨停
  • 博客等级:
  • 博客积分:0
  • 博客访问:572,234
  • 关注人气:876
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

CPU C-States 省电模式

(2017-05-13 15:58:26)
分类: 软件技术

三种常见CPU工作状态简介

 

  常见的CPU工作状态包含S-States、C-States和P-States三种,其中S-States(Sleeping states)指系统睡眠状态,C-States(CPU Power states)指CPU电源状态,而P-States(CPU Performance states)则指CPU性能状态。当然除了这三种外,还有G-States(全局状态)和D-States(设备状态)。

  S-States很好理解,就是你手动点击“睡眠”,或者达到一定的待机时间(根据系统电源管理设置而定)进入睡眠状态,S0就是指正常运作。而C-States和P-States看起来也很类似,都会调节处理器的核心电压、电流以及频率,因此经常被混淆。其实他们的区别也是很明显的,不过我们首先要梳理一下上面这三种状态的关系。

 

CPU <wbr>C-States <wbr>省电模式
三种电源状态的关系

  S-States中的S0指非睡眠状态,包含了系统正常运作状态以及待机状态,这意味着只有在S0状态下,C-States才会存在。同样的,C0代表正常工作状态,而P-States正是处理器正常运作时的状态,所以P-States只存在于C0状态下。

  简单来说,P-States是根据系统的负载情况调节处理器核心电压和频率,处理器仍在运作当中;而C-States则是改变处理器各个部分的状态,包括核心、缓存、总线以及各种后来集成进来的模块,此时处理器应该是工作或待机状态。我们日常使用电脑的时候,系统就是频繁地在这些状态下切换,以达到提高续航和降低功耗的目的。

C-States各个状态介绍

  目前C-States有以下这11个状态:

  C0:正常运行模式,我们正常操作电脑时均处于C0状态。

  C1/C1E:挂起/待机状态,通过软件(一般发送HLT命令)停止处理器内部时钟。增强版的C1E支持降低倍频和电压。使用CPU-Z会观察到频率、电压下降,表示系统进入了这个状态,当外部总线传来请求时就会暂时离开C1/C1E状态(只需10纳秒),处理完后会恢复。这个状态仅对硬件延迟有要求,不过目前的硬件一般都没问题。

  C2/C2E:和C1/C1E类似,但C2/C2E状态通过硬件进入,而且唤醒需要100纳秒以上。

  C3:深度睡眠,内部时钟同样会被停止,总线频率会被锁定,多核心系统下缓存数据保留,并暂停写入操作,无法响应外部总线的重要请求。进入C3状态的前提是硬件支持并已进入C2模式。唤醒时间在50微秒左右。

  C4:更深度睡眠,在C3状态的基础上通过将电压降至1.0V以下与减少L2缓存的数据存储以降低功耗。需要进入C3后才能进入C4,另外唤醒时间不超过1秒。

  C4E:同样需要进入C4状态,并且L2缓存数据被减为零。唤醒时间至少需要200微秒。

CPU <wbr>C-States <wbr>省电模式
C0-C6节能状态图例

  C6:深度节能,处理器可实时清除L1缓存内所有数据,在保存处理器微架构状态下,关掉内核及L2缓存,芯片组会继续为I/O提供内存交换动作。对各个核心电源进行更智能的管理,电压降至C4的一半。不过唤醒时间要比C4长50%。

CPU <wbr>C-States <wbr>省电模式
C7、C8、C9/C10对比

  C7:更深度节能,在C6的基础上增加了清空部分或者全部L3缓存。

  C8:L3缓存、系统助手(也就是以前北桥整合到CPU中的部分)和IO供电都被关闭,外部VR模块电压降至1.2V。

  C9:VR模块电压接近0V。

  C10:关闭VR模块。(不确定)

  这里顺便提一下,C7状态更多地应用于笔记本上,台式电脑的BIOS一般不会出现这个选项,即使存在也是默认关闭的。而C8、C9和C10状态也仅应用于Haswell ULT处理器,也就是针对超极本的U系列和针对平板电脑的Y系列型号。




关于CPU C-States 省电模式,你需要知道的事情

I, 引言
为了在CPU空闲的时候降低功耗,CPU可以被命令进入low-power模式。每个CPU都有几种power模式,这些模式被统称为C-states或者C-modes。

lower-power模式最早在486DX4处理器上被引入,到现在,更多power mode被引入和增强,来进一步降低CPU的功耗。

这些模式最基本的思想是通过CPU内部的idle unit切断CPU的clock信号和供电。越多的CPU单元被停止(通过切断时钟),降低电压或者完全关闭,降低的功耗就越多,但同时也需要更多的时间来唤醒CPU, 重新回到满操作模式。

C-States从C0开始,C0是CPU的正常工作模式,CPU处于100%运行状态。C后的数越高,CPU睡眠得越深,CPU的功耗被降低得越多,同时需要更多的时间回到C0模式。

每一个模式都有一个对应的名字,有的模式还有子模式,子模式又具有不同功耗和唤醒时间。

在下表所列的模式中,C1到C3通过切断CPU内部的时钟,C4到C6模式通过降低CPU的电压。"Enhanced"模式两种方式都采用。

CPU <wbr>C-States <wbr>省电模式


II, C1模式
所有的x86 CPU都有HLT指令("Halt"), 当HLT指令执行时,CPU会保持idle,不做任何事情。当CPU收到一个中断, CPU会回到正常运行模式。

既然在halt状态下,CPU是完全空闲的,Intel认为这是省电的最佳时机,所以他们增加了"Halt"或者叫"Auto Halt"模式,即我们所知的C1。C1从486DX4处理器被引入。Intel和AMD所有在486DX4之后面世的处理器都实现了这个模式,486DX2上实现了"SL Enhanced"版本。

所以,当有程序运行了HLT指令后,CPU会进入传统 halt模式, 在这种模式下,除了bus interface和APIC之外,所有的处理器内部时钟都被停止。一旦处理器收到中断信号,他会回到C0模式,内部时钟被回复。

有趣的是,对处理器来说,进入C1模式并不需要特殊的编程工作,因为HLT指令从8086开始就存在。在486DX4之前,HLT指令被用来暂停CPU,等待终端。在486DX4之后,程序员可以通过进入这种模式来降低处理器的功耗。

之前提到过,CPU可以暂时性的离开C1模式,去处理CPU external bus上的重要请求。这个暂时性的离开被称为Stop Clock Snoop状态, HALT/Grant Snoop State 或者简单的称为Snoop State。在这个过程中,CPU时钟被恢复。在CPU处理完请求后,它会自动的回到C1模式。

所有的socket 775 Intel处理器都实现了一个高级Halt模式,叫做Enhanced Halt(Pentium 4),或者Extended Halt(Core 2 Duo)或者简单的称为C1E。在这个模式下,除了关闭处理器内部时钟外,处理器的电压也被降低。如果在BIOS中,这个模式被打开,当HLT指令发出后,处理器会进入C1E, 而不是传统的C1模式,反之,如果这个模式被关闭,则会进入C1模式。

Core 2 Duo同时也提出了Extended Halt/Stop Grant Snoop state,可以允许处理器暂时性的离开C1E或者C2E模式,去响应外部总线上的重要请求,但在这个过程中,处理器会保持低电压,而不是将其恢复到正常值。

要注意的是AMD也使用C1E这个名字,不过它们做了完全不同的事情。在他们的65 nm Athlon X2和Phenom处理器上,C1E的行为和C3相似,关闭所有的处理器时钟。当主板BIOS中,C1E选项被打开,并且所有的处理器核都进入了C1模式,则处理器会自动进入C1E模式。而传统C3模式则需要OS发送命令来劲如。

III, C2模式
C2模式同样是在486DX4中被引入的。处理器增加了一个名叫"STPCLK"的引脚,当这个引脚使能时,处理器的核心时钟被切断。

如你所见,C2模式与C1模式很类似,都是切断处理器的核心时钟。不同的是,C1模式通过HLT指令进入,而C2模式则通过硬件进入。

和C1模式一样,C2模式也不是关闭了所有的处理器内部时钟,bus interface和APIC的时钟依然保留,以响应外部中断。

C2模式存在两个子模式:Stop Grant 和Stop Clock。前者在STPCLK管脚使能后进入,如前面介绍,处理器的核心时钟被关闭,但是时钟发生部件(PLL)仍然在工作,以产生外部总线所需要的时钟。

486DX4, Pentium, Pentium MMX, K5, K6, K6-II和K6-III可以更进一步,进入Stop Clock模式。在该模式下,时钟发生部件也被关停,因此外部时钟信号也被关停。现在的处理器都已经不存在Stop Clock模式,被C3 Deep Sleep模式取代。

和C1模式相似,处理器可以暂时性的离开C2模式,去处理重要的外部请求。这个暂时的离开被称为Stop Clock Snoop State, HALT/Grant Snoop State或者简单的称为Snoop State。在这个过程中,处理器时钟被回复。当处理器处理完外部请求后,会自动回到C2状态。

Core 2 Duo处理器引入了一个高级的Stop Grant模式,称为Extended Gtop Grant, 即C2E。这个模式会在关停时钟的同时,降低处理器的电压。一旦C2E模式在BIOS中被打开,使能STPCLK管脚会进入C2E模式,而不是传统的C2模式。

IV, C3模式
C3模式被称为Sleep模式。最早在Pentium II处理器中被引入。有趣的是,这个模式在部分Core 2 Duo处理器中并不存在。但这部粉处理器实现了C1E和C2E模式。

C3模式是C2模式的进一步发展。在C3模式下,所有的处理器内部时钟,包括bus interface和APIC,都被关停。这意味着处理器将无法响应外部总线的重要请求或终端。

Intel处理器和AMD Turion 64处理器存在一个C3的子模式,称为Deep Sleep。在该模式下,处理器外部时钟也被关停。

进入C3模式的方法取决与处理器厂商。Intel处理器增加了一个管脚,叫做SLP(或者DPSLP,取决于处理器型号)。当处理器处在C2模式,同时SLP管脚被使能,就会切换到C3模式。所以,要进入C3模式,应先使能STPCLK,再使能DPCLK管脚。

在AMD处理器上,则通过简单的读ACPI的一个寄存器来进入C3模式,前提同样是处理器要先处于C2模式。

AMD移动处理器(Turion 64)支持C3的一个子模式:AltVID,以允许在C3模式下降低处理器的电压。

V,C4模式
C1,C2,C3模式都通过关停处理器的时钟来降低功耗。C3模式已经关停了处理器内部的所有时钟,所以这种办法没有更进一步的空间。因此需要通过降低电压来达到进一步降低功耗的目的。

第一个实现了降低电压的模式,叫做C4模式,或者Deeper Sleep模式。C4模式最早在Pentium M处理器上实现。

要进入C4模式,必须先进入C3模式。

在Core Duo处理器上,通过使能DPRSTP管脚来进入C4模式。

在Core 2 Extreme X9100上,C0模式消耗59A的电流,当进入C4模式时,该值降低到12.2A,79.32%的功耗被降低。

在Core Solo, Core Duo及45 nm的mobile Core 2 Duo上,存在另一个C4模式,称为Enhanced Deeper Sleep,即C4E模式。该模式允许在L2 chache被关闭之后,再降低电压。该模式在其他的CPU中不存在。该模式也被一些人称为C5模式。

Vi,C6模式
C6模式是最近(截至2008-9)在45 nm版本的mobile Core 2 Duo处理器中被提出的模式。也被称为Deep Power Down。

当处理器进入该模式时,需要将完整的architecture状态保存到一个特定的静态RAM中,该RAM使用独立的供电。该模式允许处理器内部电压被降低到任何值,包括0V,这意味着完全的关闭处理器。当处理器被唤醒时,它会从前面提到的RAM处加载状态信息。正如前面所说,与之前的模式相比,从C6模式中唤醒需要多得多的时间。但这个时间仍然比关闭电脑后开机时时间短。

要注意的是,整个处理器只有一条处理器电压线(除了上面提到的特殊的静态RAM),这意味着,降低或者关闭处理器电压是统一的行为:当你关闭处理器,你会关闭所有部件。

即将诞生的Core i7处理器(Nehalem)有一个独立的电源控制单元,可以对单独的处理器核降低电压或者关闭电压。

为了进入C6模式,需要先进入C4模式。


0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有