Monday, December 5, 2011

Power Management (2):CPU省電功能(三)

T-State(Throttling 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。

根據筆者經驗,T-State不在被使用在主要的省電功能(註1),而是被使用在ACPI Thermal Zone來降低溫度,詳細內容請參考ACPI Specification第11章Thermal Management。

註1:在Microsoft Windows底下,Linux的行為有待深入研究。

基本上T-State的宣告跟C-State跟P-State分別有類似的地方:

1. FADT:

跟C-State類似,BIOS要支援T-State在FADT當中要宣告兩個值如下:

[068h 0104  1]            Duty Cycle Offset : 01
[069h 0105  1]             Duty Cycle Width : 00

作業系統要將CPU放入T-State中就依照以上兩個值寫入P_CNT + 0的位置。

Power Management (2):CPU省電功能(一)有範例解釋如何解讀FADT,請讀者參考前篇文章以及ACPI Specification,這邊不再累述。

2. _TSS & _TPC in DSDT/SSDT 

跟P-State類似,T-State也有對應的_TSS回報支援的T-State給OS(也跟C-State相同的有_TSS就忽略FADT的宣告),並且可以用_TPC修改支援的最高T-State,但是用

Notify(CPUx, 0x82)

來告訴OS是T-State的狀態需要改變。

在此不再累述詳細內容,請參考Power Management (2):CPU省電功能(二)並且對應ACPI Specification。

由於T-State最主要用在降低系統溫度,請期待以後討論Thermal Zone的文章。

硬體觸發

Throttling除了能夠用軟體觸發,也因為他可以把CPU的速度降低,CPU上也常有一根Pin腳讓外部的thermal sensnor或是micro controller能夠觸發throttling

硬體保護是最後一道防線,軟體的保護機制如果在測試階段沒有被100%測試(有時候不容易作到),又沒有設計硬體防線,當機器在市場流通的時候才需要re-call,造成的損失將會是用「億」為單位計算(某前公司發生過)。如果造成人命的損傷,身為一位工程師,你晚上睡得著嗎?


No comments:

Post a Comment