2019年11月13日 星期三

P、T、S、G、C 電源狀態

各種電源狀態縮寫的意義

P-States:Performance States,效能狀態。

T-States:Throttling States。

S-States:Sleeping States,睡眠狀態。

G-States:Global States,全域狀態。

C-States:CPU States,處理器狀態。


正常運作 -> P-States

P-States 指的就是 CPU 處理器依據目前運算量負荷輕重,調整運作頻率的高低,譬如 1 顆 3.0GHz 的處理器在執行 Crysis 3 時以全速運作、上網時以 1.8GHz 運作、觀賞影片時以 800MHz 運作。

在 Intel 方面稱為 EIST(Enhanced Intel SpeedStep Technology),AMD 方面則是 CnQ(Cool’n’Quiet)和 Power Now!。通常 P0 指的就是處理器以最高頻率、最高運算量的狀態運作,接下來 P1、P2、P3……就依照運作效能的多寡、省電性由少至多依序排下去。

除了 P-States 之外還有個 T-States,不過 T-States 通常不會使用,唯有當處理器過熱或是超過我們所設定的溫度時才介入。

T-States 和 P-States 都是為了降低發熱量而被使用,但是運作方式有別。例如 1 顆 3.0GHz 的處理器被 P-States 要求運作在 50%,就是真的運作在 1.5GHz 之上,而 T-States 則是將 3.0GHz 切成一半,一半時脈不運作,一半時脈正常運作(調整處理器實際運作的占比)


S-States 與待機 / 休眠 / 睡眠關係式

S-States 則是指電腦系統狀態,S0~S5 共有 6 種,S0 指的就是系統正常開機運作的狀態,包含所有的 P 和 C 狀態。

S1 時透過時脈產生器將處理器關閉、系統記憶體內容被刷新(持續供電),S1 狀態也被稱為 power on suspend;

S2 則是處理器電源完全關閉、系統記憶體內容刷新,系統整體耗電量比起 S1 更低一些。

S3 一般也稱為 suspend to RAM 或是待命(Windows XP)、睡眠(Windows Vista 之後),除了系統記憶體還有少量供電以外,其餘大部分系統內的硬體電源均被關閉;

S4 則是所謂的 suspend to disk ,將系統記憶體內部的資料寫入硬碟之後,將電腦系統整體關閉,耗電量和關機一樣;

S5 就是關機狀態。

例外,有些人可能還有聽過 G-States 全域狀態,不過 G-States 僅是個抽象描寫系統目前的電源狀態(ACPI),要如何實作需額外定義。
一般來說 G0 為系統開機狀態、G1 為睡眠狀態、G2 為軟關機、G3 為硬體關機。


C-States

比較難理解的就是處理器待機狀態 C-States,因為這裡的電源管理比較複雜,會根據狀態的不同分別調降運作時脈或電壓,或者乾脆完全關閉。同時 C-States 也不斷的加入新成員,像是 C8~C10 就是僅在 Haswell ULT 系列才導入的 C-State。

C0:
包含在 S0 之下,旗下包含所有 P-States,也就是處理器內部電源全開的狀態,所有的 x86 處理器都支援這個狀態。

C1:
藉由軟體關閉處理器的時脈(stop internal clock)(送出 HLT 指令),但是匯流排介面和 APIC(Advanced Programmable Interrupt Controller)均運作在全速狀態,由 Intel 486DX4 和之後的處理器開始支援,離開時間 10ns。

C1E:
藉由軟體關閉處理器的時脈,以及降低處理器的輸入電壓,其餘的匯流排界面和 APIC 運作在全速狀態,LGA775 腳位之後的處理器都支援,離開時間 10ns;如果在 BIOS 中開啟 C1E 支援,則處理器就會進入 C1E 而非進入 C1 狀態。須注意 AMD 也使用 C1E 這個名詞在處理器上,不過卻是另外一回事,在 AMD 65 奈米之後的處理器,所有處理器核心進入 C1 狀態會讓處理器直接進入 C3 狀態。

C2:
藉由硬體關閉處理器的時脈(設定 STPCLK 處理器接腳),匯流排介面和 APIC 均運作在全速狀態,同樣是 Intel 486DX4 之後全部支援,離開時間100ns。

C2E:
藉由硬體關閉處理器的時脈,降低處理器的輸入電壓,其餘的匯流排界面和 APIC 運作在全速狀態,Intel Core 2 Duo 之後皆支援,但僅限 Intel 的處理器;同樣的,若在 BIOS 中將 C2E 支援開啟時,就會以 C2E 替代 C2 狀態,離開時間 100ns。

C3:
關閉處理器內部所有的時脈(包含匯流排界面和 APIC),將 L1 快取中的內容清空,Intel Pentium II 和 AMD Athlon 之後皆支援(除 Core 2 Duo E4000 和 E6000 系列不支援),此模式也稱為 sleep 模式,離開時間 50ms。C3 下還有個 deep sleep 模式,由 Pentium II 以上(Core 2 Duo E4000 和 E6000系列不支援)、Turion 64 以上所支援,除處理器內部時脈外,也可關閉外部時脈。

Intel 處理器可透過設定 SLP 或是 DSSLP 接腳進入 C3(在這之前處理器必須先進入C2),AMD 則是透過讀取 APCI 的暫存器和 STPCLK 的組合而定,如果讀取 PLVL_2 暫存器,則設定 STPCLK 之後會進入 C2;若讀取 PLVL_3 暫存器,則設定 STPCLK 之後會進入 C3。AMD 行動版 Turion 64 處理器還支援更進階的AltVID功能,可於進入 C3 的同時降低處理器電壓。

C4:
稱做 deeper sleep,不像 C1~C3 為關閉處理器的時脈,C4 更進一步降低處理器的電壓供應,並把部分的 L2 快取內容清空以便進一步降低能源消耗;C4 從 Intel Pentium M(不包含 Core 2 Duo E4000 和 E6000系列)和 AMD Turion 64 之後開始支援,離開時間至少需 200ms。

C4E:
將 C4 時的處理器 L2 快取完全清空並關閉,可進一步降低供應給處理器的電壓,此模式僅在部分處理器上出現(Core Solo、Duo、部分 45 奈米行動版 Core 2 Duo、部分 Atom)。

C6:
C6 狀態(deep power down)可以說是完全關閉了處理器,包含 L1 和 L2 快取。在此狀態下,處理器內部的狀態都會被寫入到 1 個具有獨立電力來源的靜態記憶體中(後來的處理器可使用 L3 快取做為目標寫入),處理器的電壓就能夠降到非常低,甚至是 0V 完全關閉,從 Intel 45 奈米行動版 Core 2 Duo 開始支援。C6 時的離開時間比較長,約是 C4 的 1.5 倍。

Intel 在 Nehalem 中導入了 1 個電源控制模組,處理器各個部分可使用不同的電壓,因此可讓某個閒置的處理核心進入 C6。

C7:
C7 在 C6 的基礎上增加了部分或者全部清空 L3 快取,被整合進去的北橋,現稱 System Agent 以最小的電壓保持啟動,外部電壓調整可從 1.8V 降至 1.6V,從 Sandy Bridge 開始導入。

C8:
最後 1 層 L3 快取被關閉,System Agent 以最小的電壓保持啟動,外部電壓調整可從 1.8V 降至 1.2V。

C9:
System Agent 電壓降至 0V,IO 關閉,外部電壓調整可降至0V。

C10:
外部電壓調整可降至 0V 或完全關閉(以上C8~C10目前僅在Haswell ULT版出現)。




Reference:
 https://www.techbang.com/posts/17396-power-states-know-how-many-g-p-t-s-c-read