ACPI p-state、c-state

https://blog.csdn.net/CrystalShaw/article/details/90770294?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

https://tieba.baidu.com/p/4337969515?red_tag=0965284310

https://www.cnblogs.com/dirt2/p/5473245.html

 

首先是G字母開頭的0-3,G = global是從系統全局出發給出的系統級別的電源狀態。工作、休眠、軟硬關機4個狀態。G狀態本質上並不是對CPU狀態的直接描述,但CPU會在不同的全局狀態下有自己對應的狀態。

S開頭的0-5,S個人理解爲sleep,描述各種CPU的休眠狀態。S0代表了CPU在工作狀態,S1-4則代表CPU處於某種休眠狀態,數字越大睡得越香,S5則是軟關機狀態。

C開頭的0-10(沒有C2/C4/C5的具體描述,待後續完善),C=CPU(似乎CPU core更爲確切)。代表的CPU core級別的工作狀態,0爲工作狀態,數字越大說明CPU處在越節能的狀態,但從它轉到C0的所需時間也越長。從單個Core的角度上說C6時core已經處在了關閉的狀態,但之後的C7+則進一步從core上升到了socket,關閉同一socket上的LLC,降低電壓——直至關閉電源。

P開頭的0-n,P=performance,代表當前系統的性能設定狀態。當P0時,CPU會以標稱頻率運行,數字越大頻率越低  (注意,只有C-State處於C0狀態時,這些P-States纔是有意義的。 如果CPU處於C狀態(n>0),調整它的 頻率沒有任何意義)。CPU將會採用更加激進的方式通過降低頻率來實現節能的效果。與之相關的技術如speed step技術。本身這是一個socket級別的技術,但後期有了PCPS以及後續的HWP之後,這個技術就成爲了core級別的設定。

P0之上還有個特例,就是基於turbo技術的P01~P0n,n越大,CPU將會跑在更高的高於CPU標稱頻率之上,這裏的n等於實際倍頻和標稱倍頻之差。受制於CPU的熱功耗上限,不同工況下CPU core能承載的n值是不同的。換而言之,由於熱功耗是一個固定的值,在某些核心處於低功耗狀態時,允許另外核心提升到更高的頻率,即可以使n更大。

    P-State & T-State

     與P-State類似,T-State也是將CPU頻率降低來達到降低電量(以及降低熱量)的方法之一。P-State跟T-State雖然都是降頻,但T-State跟P-State最早是分別由Intel和AMD提出。以技術上而言採取的方法也不一樣。簡單來說它們的差異如下圖所示:

            

     就算同樣是把頻率降成原本的50%,但P-State是真的把頻率放慢成原本的50%,而T-State是把把一半的頻率切掉(Clock 0跟Clock 2都消失)。當Intel發現P-State的方法更能夠省電並且有效降低晶片的發熱量,所以也把P-State的技術加入。到今天爲止,Intel的CPU同時支援P-State跟T-State,而AMD的CPU只有支援P-State

https://blog.csdn.net/CrystalShaw/article/details/90770294


 

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"模式兩種方式都採用。


 

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模式。

http://blog.chinaunix.net/uid-30401178-id-5159325.html

c-state針對CPU,通過控制CPU時鐘和電壓來實現能耗管理,

s-state不光是cpu可能會被停掉,甚至其他外設例如DRAM,硬盤等,都有可能停掉,

s-state參考,https://blog.csdn.net/fengxiaocheng/article/details/103255667

S0 正常。
S1:Standby。系統在低供電狀態,cpu停止工作,用mouse/keyboard可叫醒。
S2:Power Standby。CPU關閉,和 S1幾乎是一樣。
S3:Suspend to RAM。保存現有內存信息,除了內存外的部件都停止工作
S4:Suspend to Disk。保存現有內存信息到硬盤上,所有部件停止工作
S5:Shutdown
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章