2011年6月20日 星期一

C-state 淺說

 
筆電出現惱人高頻電流聲,survey一下原來是這個東西引起的
 
C0: The CPU is in a fully operational state.


C1: The CPU is in a halted state, having executed a halt instruction and awaiting an interrupt.

C2: The CPU is in a "stop grant" state, a low power state in which the CPU cache can still be snooped.

C3: The CPU is in a "stop clock" state, a low power state such that the CPU's cache cannot be snooped.


--


追溯歷史,低功耗模式被首次引入處理器中,還是在486DX4處理器。因此現在我們在市面上聽到的各種處理器的節能模式,並不是什麼新技術,早在486時期 就已經出現了。然而,隨著時間的推移,處理器中出現了更多的低功耗模式,並且每個新的低功耗模式都較上一代更為先進,都可以讓處理器在空閒的時候,更加的 省電節能。

節能模式基本的概念就是當處理器處于閒置的時候,降低時鐘頻率,降低電壓,甚至完全關閉它,同時還可以對處理器進行“喚醒”,讓它再次回到100%的工作狀態。由此就完成了從睡眠到喚醒的過程。
處 理器的運行模式都被統稱為C-states。他們最初的規格編號是C0,這也是處理器最為正常的運行模式。此時處理器的運行效能是100%。當然在C0以 上的各種模式,就均屬于節電模式,當後面的數字越高處理器的電路和信號被關掉的部分也就越多。例如,C1、C2等等。艙處理器被喚醒時,他也就又回到了 C0模式。
不過這還存在一個問題,處理器從睡眠到喚醒需要較長的時間,處理器睡眠越深,所關閉的電路和降低的電壓就越多,甚至是完全關閉。那麼這就意味著,處理器要花更長的時間醒來。
每個節能模式會有若幹個名字,因為他們還會有許多的子模式,這些子模式會更為細致的劃分處理器睡眠的深度,因此他們在喚醒的時候所需的時間也不盡相同。

C形態:處理器節電模式總表

下面我們將用一張碩大的表格羅列出所有處理器普遍可用的C-states節電狀態。例如,C1到C3模式,都可以切斷時鐘信號,而C4至C6模式可以降低處理器的電壓。這些模式只要在BIOS中設置為開啟即可。
模式形態含義支持的處理器
C0Operating State處理器全速正常運行All CPUs
C1Halt通過軟件停止處理器內部的時鐘,而總線接口單元和APIC仍然保持全速運行。486DX4以上
C1EEnhanced Halt通過軟件停止處理器內部的時鐘,可以降低處理器電壓,而總線接口單元和APIC仍然保持全速運行。所有socket 775處理器
C1E停止所有處理器的內部時鐘。Turion 64,65nm的Athlon X2和Phenom處理器
C2Stop Grant通過硬件停止處理器內部的時鐘,而總線接口單元和APIC仍然保持全速運行。486DX4以上
C2Stop Clock通過硬件停止處理器內部和外部時鐘。僅有486DX4,Pentium,Pentium MMX,K5,K6,K6-2,K6-III支持
C2EExtended Stop Grant通過硬件停止處理器內部主時鐘,降低處理器電壓,而總線接口單元和APIC仍然保持全速運行。Core 2 Duo以上(僅Intel處理器支持)
C3Sleep停止所有處理器內部時鐘。Pentium II,Athlon以上支持,但是Core 2 Duo E4000和E6000並不支持
C3Deep Sleep停止所有處理器內部和外部時鐘。Pentium II以上支持,但是Core 2 Duo E4000、E6000和Turion 64並不支持
C3AltVID停止所有處理器內部時鐘並且降低處理器電壓。AMD Turion 64
C4Deeper Sleep降低處理器電壓Pentium M以上支持,但是Core 2 Duo E4000、E6000和Turion 64並不支持
C4E/C5Enhanced Deeper Sleep大幅降低處理器電壓並且關閉處理器緩存Core Solo,Core Duo和45nm移動版Core 2 Duo支持
C6Deep Power Down降低處理器電壓,電壓可以降低到0V僅45nm的移動版Core 2 Duo支持
C1形態:486DX4時代的技術
在所有的x86處理器中,有一條指令叫做“HLT”代表Halt這個英文單詞,是暫停的意思。其中處理器會理解為“停下來吧”的意思。此時處理器會啥都不做,用中斷推遲它受到的信息包,處理器會發出一個硬件信號,告訴系統內的其他設備,稍等片刻。
由 于處理器在暫停模式下會完全閒置,那麼Intel決定在這個時候降低處理器的功耗,因此為處理器增加了“暫停”和“自動暫停”模式。這就是最為古老的第一 代處理器節能技術──C1形態。從486DX4處理器開始,此後所有的處理器都支持這一節能技術。另外SL版本的468DX2處理器也支持這項技術。
當計算機程序運行一條HLT指令的時候,處理器就會進入傳統的暫停模式。內部的時鐘信號停止下來了。在收到中斷指令後,處理器又可以回到正常運作形態,同時時鐘信號也恢複正常。
處理器內部有2個單元可以提供CPU內部時鐘,總線接口單元和APCI高級可編程中斷控制器。通過他們,處理器可以接收到來自外部總線的信息,中斷暫停形態蘇醒過來。
由于處理器內部的信號被切斷了,幾乎處理器內部所有的單元都停止了運作,這樣就大幅降低了處理器的功耗。

追溯歷史,早在8086處理器時代就已經出現了HLT,不過真正能應用這條指令的是468DX4。此後HLT也成為了後續處理器都支持的一項最為基本的低功耗狀態。
如 上所述,處理器之所以可以從C1形態中醒來,最為重要的是通過處理器外部總線所發來的一個中斷請求。在處理器從暫停到完全醒來需要一定的時間,此時的形態 有很多種名稱:Stop Clock Snoop State,HALT/Grant Snoop State或者稱作Snoop State。在這期間,處理器的時鐘是在慢慢的恢複中。然後處理器就又可以接受進入暫停模式的指令。
所 有基于Socket 775的處理器,如Pentium 4,Core 2 Duo和其他更高級的處理器都支持暫停形態,同時還支持更為高級的增強型暫停形態,如P4處理器。Core 2 Duo更擴展出了C1E模式,它同時也可以降低處理器的電壓,停止內部時鐘。如果你在主板的BIOS中開啟這些模式,那麼處理器在收到HTL指令時,就可 以進入該模式。
Core 2 Duo處理器也支持擴展暫停監聽形態,使得處理器可以進入C1E或C2E形態,當處理器收到了來自外部總線的請求,可以從睡眠中醒來,不過處理器可以繼續保持較低的電壓。
支 持注意的是AMD公司也有一個C1E形態,不過所指代的意義卻完全不同。他們採用65nm制造工藝技術的Athlon X2和Phenom,它與C3形態類似,可以關閉所有處理器的時鐘。當在BIOS設置好開啟C1E形態後,就可以節約能耗了。AMD的C1E和C3形態之 間的差別就在于進入睡眠狀態。處理器要進入C3形態,必須通過操作系統發出指令才能執行。而AMD的C1E形態則是處理器自動執行的,當處理器所有處理核 心都進入到C1形態時,整個處理器會自動進入到C1E形態。
C2形態:專用功耗控制引腳
在468DX4中也引入了C2形態,處理器特別適用了一個叫做“STPCLK”的引腳來實現停止時鐘。當這個引腳被激活的時候,處理器的核心時鐘就會被關閉。
你可以看到C2與C1形態有些類似,它們都能切斷處理器的核心時鐘。不同的地方在于如何實現的,C1形態是通過軟件來實現的,向處理器發出一個HLT指令。而C2則是通過硬件來實現的,通過一個處理器的引腳控制開啟或關閉。
當處理器進入C1形態的時候,處理器內部時鐘並不會完全停止,而當處理器進入到C2形態時也有類似的情況,處理器中的總線界面接口,和APIC單元仍然保持著處理器內部時鐘頻率在運行著。這樣做的好處就是處理器可以接受來自外部總線的信號,可以從睡眠形態中醒來。
由于處理器內部所有單元的時鐘信號幾乎完全暫停,因此處理器停止了工作,這將會大幅減少能耗。
在 C2形態中,還有2個子模式。Stop Grant和Stop Clock。Stop Grant形態,如上所說,利用一根處理器的引腳來控制開啟和關閉。雖然處理器的核心時鐘都已經關閉,但是PLL器時鐘發生器芯片仍然在全速運行。因為它 仍然需要工作,產生外部的總線時鐘和處理器的外部時鐘。
486DX4,Pentium,Pentium MMX,K5,K6,K6-2和K6-III處理器都支持更深一級的睡眠技術──Stop Clock。它可以進一步關閉時鐘發生器芯片,因此外部時鐘信號也將會被關閉。可以想象這將會更加省電。當前的處理器已經不支持C2形態了,轉而支持更深 度的C3形態。後面我們會有更詳細的介紹。
類似C1 形態,C2形態的另一種被稱作允許停止形態,對它的控制來自于處理器的外部總線。此時處理器處在一種叫做:停止時鐘窺探狀態,或者叫做暫停窺探狀態,或叫 做簡單窺探狀態。在這期間,處理器處于最小的功耗狀態運行任務。當處理器完成任務請求的時候,它會自動進入C2狀態。
而Core 2 Duo處理器則具備更為高級的允許停止形態,叫做:增強型允許停止形態,或稱作C2E形態,它可以同時停止處理器的內部時鐘,降低處理器的電壓。如果你可 以在主板的BIOS中開啟這個模式,那麼當處理器進入到傳統的C2模式時,就會通過STPCLK引腳被激活為C2E形態。否則,處理器僅僅會進入到標准的 C2形態。
同時它可以支持更高級的增強型允許停止形態(Extended Halt/Stop Grant Snoop state)。當處理器的外部總線發出請求,它允許處理器暫時退出C1E或C2E形態,以較低的電壓來代替額定電壓運行任務。
C3形態:傳說中的深度睡眠
C3 形態,就是我們眾所周知的深度睡眠形態。第一款支持C3形態的是Intel的Pentium II處理器。而AMD方面第一款支持C3的是Athlon處理器。有趣的是某些65nm的Core 2 Duo處理器並不支持它。例如E4000和E6000系列處理器。但是這些處理器卻支持它的擴展子集C1E和C2E。此後C3形態最終在45nm的 Core 2 Duo處理器中回歸。E7000和E8000系列均有所支持。
如上文 所說,C1和C2形態都可以停止處理器的內部時鐘,幾乎切斷處理器內所有單元的時鐘。當這些單元停止時,處理器的功耗自然大幅減少。盡管如此,在這種狀態 下,處理器總還是會有某些單元保持運行,如總線界面單元和APIC單元。它們必須運行,通過它們才能與處理器的外部總線保持聯絡,處理器才可能會喚醒。
隨著技術的革新,在C3狀態中,可以切斷處理器內所有的時鐘信號。包括上文提到的總線界面單元和APIC單元。這就意味著處理器處于一種深度睡眠模式,處理器睡的很深,再也不能通過外部總線來中斷睡眠,喚醒處理器了。
Intel的處理器和AMD的Turion 64處理器都支持一種C3形態的子模式:深度睡眠。處理器的外部時鐘也會停止下來,這樣可以更加節省功耗。
處 理器是否能進入C3狀態要取決于硬件制造商。Intel為處理器額外增加了引腳來控制。這個引腳叫做SLP,或者有人也稱它為DPSLP。首先處理器要進 入C2形態,才能進一步觸發C3形態。也就是說,目前負責處理器進入低功耗形態,就有了2個針腳。首先處理器要通過STPCLK針腳,進入到C2形態。然 後再通過SLP針腳激活C3形態。進入到C3模式其實非常簡單,僅僅是處理器的外部時鐘型號被進一步切斷而已。
而 在AMD的處理器中,方法就來的比較直接。在處理器中有兩個寄存器PLVL_2和PLVL_3,它們分別對應的是C2和C3形態。如果一個程序讀取 PLVL_2寄存器,那麼處理器就會觸發STPCLK針腳進入C2形態。如果程序讀取PLVL_3寄存器,那麼就會觸發STPCLK針腳引入到C3形態。
AMD移動版處理器Turion 64還支持C3的子集,叫做AltVID,它允許處理器進入C3模式時,同時降低處理器的電壓。
不 要忘記,Turion 64,65nm的Athlon X2和Phenom處理器也支持C1E模式,此C1E非彼C1E,與Intel的無關。它支持的節能技術,基本上與C3相類似。AMD的C1E和C3形態 基本上都是處理器進入到深度睡眠。不同點在于,C3形態是需要通過應用程序指令或者操作系統指令來觸發的。而C1E則是處理器所有核心都處于C1形態時, 會自動進入C1E形態。
C4形態:絕對不是炸彈
上 述幾種處理器低功耗形態,無論是C1、C2還是C3基本上都是在處理器的時鐘信號方面做文章。C3的所有模式都可以完全切斷處理器內部的時鐘信號。但是僅 僅切斷時鐘信號,是不足以進一步降低處理器的功耗。由此處理器的研發人員們,又盤算著下一代節能技術要進一步降低處理器的電壓。我們知道處理器的電壓與功 耗之間成正比。(P=V*I)如果我們能進一步降低處理器的電壓,也就可以大幅降低處理器的功耗了。
第 一個可以降低處理器的形態被稱作C4或者超深度睡眠形態。第一款支持這項技術的處理器產品是Intel的Pentium M處理器。它的市場定位就是移動領域市場,低功耗和最大限度的延長電池壽命。這種模式也在最初的Core Solo單核酷睿,Core Duo雙核酷睿處理器中可見。其中的Core Duo其實就是雙核心版本的Pentium M處理器。目前所有移動領域和桌面領域的Core 2 Duo處理器7、8系列的都可以支持這一模式。換句話說Intel的45nm制造工藝技術的處理器,都可以支持這項技術。但是桌面版的Core 2 Duo處理器由于生產時間較早,尤其是65nm的4、6系列卻不支持這項技術。同時AMD的Turion 64移動處理器也可以很好的支持C4形態。
超深度睡眠時需要從深度睡眠形態激活而來。例如,處理器要首先進入到深度睡眠形態(C3),此後在通過處理器中的DPRSTP引腳來激活C4形態,進一步降低處理器的電壓。
下 面我舉一些真實的例子,來說明C4形態是如何降低能耗的。Intel Core 2 Extreme X9100移動版處理器,採用C0步進,當它全速工作的時候,最大電流為59A。當處理器進入到C4形態時,電流驟然降低到12.2A,也就是說C4形態 可以降低79.32%的功耗。Intel Core 2 Duo T9400和T9600移動版處理器,最大電流為47A,開啟C4形態時,電流為11.7A,處理器節能75.11%,確實非常之驚人。
Core Solo和Core Duo,他們都是Pentium M的雙核心版本,面向移動市場,研發代號為Yonah。採用45nm制造工藝技術的Core 2 Duo處理器,8、9系和7350都可以支持另外一種C4形態。它被稱作增強型超深度睡眠,又名C4E。它除了允許降低處理器的電壓之外,還可以進一步關 閉處理器的L2高速緩存。需要指出的是,這個模式除了上述提到的處理器以外,其它均不可用。在業界,也有人戲稱它為C5形態,不過我們都知道,它並不是真 正意義上的C5。
還是讓我們舉一些實際的例子,來看看C4E形態究竟能怎樣節能。 Intel Core 2 Extreme X9100移動版處理器,採用C0步進,當它全速工作的時候,最大電流為59A。當處理器進入到C4E形態時,電流驟然降低到11.7A,也就是說C4形 態可以降低80.17%的功耗。Intel Core 2 Duo T9400和T9600移動版處理器,最大電流為47A,開啟C4E形態時,電流為10.5A,處理器節能77.66%,對比C4模式,C4E的節電效果 更加驚人。
C6形態:完全關閉處理器
C6形態是最新的處理器節電技術,目前45nn的Core 2 Duo移動版處理器才支持這一技術。例如編號為8、9系列和7350的處理器均支持。同時最為重要的是,採用45nm制造工藝技術的桌面處理器也可以支持這項深度斷電技術。
當 處理器進入到C6形態時,它允許大幅降低處理器的電壓,包括降低到0V。也就是說此時的處理器處于一種完全被關閉的狀態。這是因為處理器內部帶有一個特別 的靜態存儲單元。當處理器進入到C6形態時,會將處理器的所有配置都寫入這個靜態存儲單元,當處理器從C6模式被喚醒的時候,所有的內部單元又會從這個特 別靜態存儲單元內讀取配置信息。因此當處理器被喚醒時,它以前所作的工作都不會丟失。由此我們可以更快的關閉計算機,也能更快的在開機時載入操作系統。
需要注意的是,這里指的電壓,僅僅是一顆處理器的電壓,唯一一處不同電壓就是那個特殊的靜態存儲單元。如果你想要關閉一顆處理器時,你必須讓它完全進入到C6形態。
Intel 即將發布的Core i7處理器,研發代號Nehalem,它將會內嵌一個電源控制單元,它將是一個獨立于處理器的單元,可以降低處理器的電壓,甚至是完全關閉處理器。舉例來 說,如果一個處理器的核心處于閒置狀態,它將能夠關閉其中一個核心,讓它處于C6形態。若是以前的45nm移動版Core 2 Duo,並不具備這樣更加先進而靈活的功耗管理功能。
Nehalem的功耗管理另一項突破就是超快的切換速度。集成在處理器內部的功耗管理單元可以快速的發出“開啟核心/關閉核心”的信號。一旦處理核心處于空閒,功耗管理單元就會立刻將之關閉。其開啟和關閉的切換速度在百萬分之一秒。
為 了進入到C6形態,處理器必須先進入到C4形態,此後再切換到C6形態。還是讓我們舉一些例子,來看看C6形態能有多強的節電效果。Intel Core 2 Extreme X9100移動版處理器,採用C0步進,當它全速工作的時候,最大電流為59A。當處理器進入到C6形態時,電流驟然降低到11A,也就是說C6形態可以 降低81.35%的功耗。Intel Core 2 Duo T9400和T9600移動版處理器,最大電流為47A,開啟C6形態時,電流為5.7A,處理器節能87.87%,對比上述所有節電模式,目前C6模式 的節電效果是最強悍的。

How to repair and clone disk with ddrescue

  ddrescue  is a tool that can be used to repair and clone disks on a  Linux system . This includes hard drives, partitions, DVD discs, flas...