範例、需求和診斷
本主題提供熱管理問題的範例,也會討論需求和診斷方法。
範例
下列範例說明如何解決典型的熱管理問題。
面板溫度感應器
監視面板溫度對於確保使用者隨時受到保護非常重要。 如果面板上的溫度太熱而無法安全地處理,系統應該立即採取動作來關閉系統。 這些溫度感應器也可以為熱區域提供輸入,以節流參與其讀數的裝置。
下列區塊圖顯示具有三個裝置和兩個熱區域的範例系統組態。
在此範例中,溫度感應器 1 (TS1) 和溫度感應器 2 (TS2) 策略性地放在裝置對面板造成最大熱度的位置。 裝置 1、2 和 3 在每個裝置上可能會有個別的溫度感應器。 這些裝置感應器適用于個別節流每個裝置。 通常,面板感應器的目的是要偵測裝置表面的溫度,做為系統上多個裝置的匯總。 雖然每個裝置可能會產生比這些溫度感應器偵測到更多的熱度,但這些裝置的結合熱度生產通常會在這些感應器位置累積。
TS1 會在裝置 2 與裝置 3 之間中間放置。 因此,採用 TS1 作為輸入控制裝置 2 和裝置 3 的熱區域。 當 TS1 作用中時,熱區域會節流裝置 2 和 3。 同樣地,當 TS2 熱時,熱區域會節流這三個裝置。
在此範例中,感應器會與它們監視的裝置相等地放置。 TS1 會在裝置 2 與裝置 3 之間中間放置,而 TS2 則與裝置 1、2 和 3 相等。 如果每個裝置以相同的方式散發熱度,則來自每個裝置的熱度會與其感應器上的溫度讀數相同。
漸進式熱節流
假設有一組熱常數 (_TC1和_TC2) ,熱區域的被動節流百分比具有特定特性:曲線變更的速度,以及區域節流在距離車程點遠的程度。 在某些情況下,熱區域的行為可能需要變更。 例如,當溫度偏低時,節流百分比可以承受較不積極。 但是,當溫度接近車程點時,節流行為可能需要更積極。 如果是,可以使用漸進式熱節流,將不同的節流行為套用至一組裝置。 實作漸進式熱節流的方式有兩種:
- 在執行時間期間動態變更熱區域的常數,或
- 使用具有不同常數和車程點的兩個熱區域。
更新區域的常數
對於任何熱區域, Notify(thermal_zone, 0x81)
隨時都可以用來更新熱常數。
具有不同車程點的區域
熱區域中不能有一個以上的熱感應器。 不過,共用相同溫度感應器的多個熱區域經常用來實作漸進式熱節流行為。 一個熱區域會以低溫度開始節流效能,而另一個熱區域則會開始在高溫度積極節流效能。
在下列區塊圖中,管理相同裝置的兩個熱區域會使用相同的溫度感應器來達到漸進式熱節流。 在此範例中,溫度感應器會放置在電池充電裝置附近,以及監視器回光燈,以便為控制這兩部裝置的熱區域提供輸入。
上圖所示的兩個熱區域可能定義如下:
Thermal Zone 1 { _PSV = 80C Thermal Throttling Devices: Monitor Driver Battery Driver } Thermal Zone 2 { _PSV = 90C Thermal Throttling Devices: Monitor Driver Battery Driver }
目前相依節流
如果電池驅動程式需要根據溫度和電力目前進行節流,熱管理員中的 ACPI 演算法已不再足夠,因為它無法考慮目前。 若要取代此演算法,您必須提供包含自訂演算法的原則驅動程式,並將此驅動程式載入熱區域的驅動程式堆疊頂端。 此原則驅動程式會將溫度感應器和目前感應器視為輸入,並根據自訂演算法抵達熱原則。 請注意,此熱原則必須在熱區域硬體的功能內運作。 原則會傳送至熱管理員,以更新記錄和更新熱區域。 熱區域接著會透過熱冷卻介面將要求傳送至電池磁碟機。
下列區塊圖顯示可控制電池裝置溫度和目前溫度的原則驅動程式。 原則驅動程式會實作自訂演算法來取代熱管理員的演算法。 不同于熱管理員的演算法,自訂演算法會將溫度和目前納入考慮。
熱管理需求
硬體需求
良好的熱硬體設計需要下列幾點:
所有系統都符合適用的業界標準 (,例如 IEC 62368) 消費者電子安全。
硬體必須具有安全溫度車程點,以關閉系統或防止開機。
感應器硬體必須精確到 +/- 2oC。
感應器硬體不得要求軟體輪詢,以判斷已超過臨界值溫度。
在操作時,系統顯示器亮度永遠不會熱限制為小於 100 nit。
電池充電不會在下列其中一項時節流:
- 系統閒置且在低於 35oC 的環境溫度範圍內,或
- 任何條件下的環境溫度低於 25oC。
新式待命電腦的 HCK 測試需求
不論處理器架構和尺寸為何,所有新式待命電腦都必須符合特定熱需求。 這些需求會在 HCK 中進行測試:
- 所有新式待命電腦都必須至少有一個熱區域。
- 每個熱區域都必須報告感應器的實際溫度。
- 至少一個熱區域必須定義重大關機溫度。 Intel Dynamic Platform 和熱架構 (DPTF) 發生例外狀況。
- 所有具有風扇的新式待命電腦都必須向作業系統公開風扇活動。
- 風扇必須隨時通知作業系統其活動,包括新式待命中的閒置復原期間。 目前,這些通知不會對作業系統造成任何動作。 這些通知的主要用途是可診斷性和遙測。 風扇通知可以與現有的追蹤工具整合,包括 Windows 效能分析器。 系統設計工具可以使用這些工具來調整平臺設計。
- 所有具有風扇的新式待命電腦,都必須讓風扇保持關閉,同時處於新式待命狀態,系統「睡眠」狀態。
- 此處的 HCK 測試會執行實際的新式待命工作負載,不應讓風扇開啟。 在轉換至新式待命期間,允許風扇在顯示器關閉前最多 30 秒保持開啟狀態。
如需 HCK 測試的詳細資訊,請參閱 檢查熱區域。
若要執行 HCK 測試,請執行下列動作:
首先,輸入此命令以安裝按鈕驅動程式:
>>Button.exe -i
若要針對具有風扇的電腦執行所有熱測試,請輸入下列命令:
>>RunCheckTz.cmd all
若要針對沒有風扇的電腦執行所有熱測試,請輸入下列命令:
>>RunCheckTz.cmd nofan all
熱管理解決方案
以 ACPI 為基礎的視窗熱架構是所有系統的建議熱管理解決方案。 主要優點包括能夠輕鬆地診斷收件匣工具的熱問題,以及收集現場重要遙測的能力。
不過,如果符合上述需求,可接受 Windows 熱架構的替代解決方案。 核心晶片和 SoC 廠商可能會有自己的專屬熱解決方案,可與 Windows 相容並支援,例如,根據 Intel Dynamic Platform 和熱架構的實作, (DPTF) ,適用于 Arm 上的 x86 處理器和 PEP 實作。
診斷
為了協助系統設計工具診斷和評估系統熱行為,Windows 提供下列收件匣和獨立工具。
事件記錄
Windows 會在事件記錄檔中記錄重要的熱資訊。 這項資訊可用來在執行Windows 8或更新版本的任何電腦上快速分級熱狀況,而不需要額外的追蹤或工具。 下表包含完整清單。
通路 | 來源 | ID | 事件描述 |
---|---|---|---|
Windows Logs\System | 核心能力 | 125 |
要列舉的 ACPI 熱區域。
Windows 會針對每個熱區域在開機期間記錄此事件。 |
Windows Logs\Systems | 核心能力 | 86 |
系統因為重大熱事件而關閉。
在重大關機之後,Windows 會記錄此事件。 這個事件可用來診斷熱重大關機是否已發生,以及識別造成關機的熱區域。 |
應用程式和服務記錄\Microsoft\Windows\Kernel-Power\熱操作 | 核心能力 | 114 |
一個熱區域已參與或脫離被動冷卻。
Windows 會在熱節流互動和脫離時記錄此事件。 此事件可用來確認熱節流是否已發生,以及哪些區域發生。 這在分級效能問題時很有説明。 |
重大事件通知
在發生熱狀況所造成的重大關機或休眠時,作業系統必須收到事件通知,才能記錄在系統事件記錄檔中。 發生此情況時,有兩種方式可以通知作業系統:
使用 ACPI 熱區域_CRT或_HOT方法來自動記錄重大熱事件。 除了定義_CRT或_HOT值以外,不需要額外的工作。
針對所有其他熱解決方案,驅動程式可以使用下列熱事件介面,其定義于 Procpowr.h 標頭檔中:
#define THERMAL_EVENT_VERSION 1 typedef struct _THERMAL_EVENT { ULONG Version; ULONG Size; ULONG Type; ULONG Temperature; ULONG TripPointTemperature; LPWSTR Initiator; } THERMAL_EVENT, *PTHERMAL_EVENT; #if (NTDDI_VERSION >= NTDDI_WINBLUE) DWORD PowerReportThermalEvent ( _In_ PTHERMAL_EVENT Event ); #endif
PowerReportThermalEvent常式會通知熱事件的作業系統,以便事件可以記錄在系統事件記錄檔中。 呼叫 PowerReportThermalEvent之前,驅動程式會將 THERMAL_EVENT 結構的成員設定為下列值。
- 版本
THERMAL_EVENT_VERSION
- 大小
sizeof (THERMAL_EVENT)
- 類型
來自 Ntpoapi.h 的其中一個THERMAL_EVENT_XXX 值。
- 溫度
溫度,以 Kelvin 的十分之一度為單位,感應器在跨越車程點之後 (或零,如果未知) 則為零。
- TripPointTemperature
如果未知) ,則行程點 (的十分之一度溫度為 Kelvin 或零。
- Initiator
Null 終止寬字元字串的指標,可識別其臨界值已超過的感應器。
The following thermal event types are defined in the Ntpoapi.h header file:
```
// // Thermal event types // #define THERMAL_EVENT_SHUTDOWN 0 #define THERMAL_EVENT_HIBERNATE 1 #define THERMAL_EVENT_UNSPECIFIED 0xffffffff
```
Hardware platforms should use the thermal event interface only if thermal solutions other than Windows thermal management framework are used. This interface allows the operating system to gather information when a critical shutdown occurs due to thermal reasons.
效能計數器
效能計數器提供系統的熱行為即時資訊。 下列三項資料會針對每個熱區域輪詢。
熱區域資訊 |
---|
|
此資訊只有在要求時才會輪詢,例如,Windows 效能監視器或typeperf命令列工具。
如需一般效能計數器的詳細資訊,請參閱 效能計數器。
效能監視器
效能監視器是用於輪詢和視覺化資訊的內建應用程式。 效能監視器可以是非常強大的工具,可用來比較系統熱設計的熱條件。 下列兩個範例螢幕擷取畫面顯示在 Internet Explorer 中執行 fishbowl 示範時效能監視器作用中。 在第一個螢幕擷取畫面中,效能監視器顯示一段時間內三個熱區域的溫度增加。
在第二個螢幕擷取畫面中,效能監視器報告目前的節流百分比、溫度和節流原因。
如需詳細資訊,請參閱 使用效能監視器。
Windows Performance Analyzer (WPA)
在 ADK 中,Windows 提供 Windows Performance Toolkit (WPT) ,以進行軟體追蹤和分析。 在 WPT 內,系統設計工具可以使用 Windows 效能分析器 (WPA) ,將軟體追蹤視覺化並分析熱行為。 如需如何安裝和使用 WPA 的詳細資訊,請參閱Windows 效能分析器 (WPA) 。
提供者
包含 「Microsoft-Windows-Kernel-ACPI」 來記錄溫度、熱區域活動和風扇活動的事件。
包含「Microsoft-Windows-熱輪詢」,以啟用每個熱區域的溫度輪詢。 如果未包含此功能,則只有在溫度高於被動和/或主動車程點時才會報告溫度。 輪詢的期間可以藉由指定旗標給提供者來控制。
旗標 | 輪詢期間 |
---|---|
無 | 1 秒 |
0x1 | 1 秒 |
0x2 | 5 秒 |
0x4 | 30 秒 |
0x8 | 5 分鐘 |
0x10 | 30 分鐘 |
處理器公用程式
在深入探討熱節流資料之前,最好先仔細檢查處理器公用程式資訊,以確保處理器公用程式模式與工作負載應該是什麼一致。 若要確認工作負載已正確設定,請遵循下列步驟:
- 使用 WPA 工具開啟 ETL 檔案。
- 在 [圖形總管] 中,選取 [Power],然後選取 [ 處理器公用程式]。
- 將 圖形類型 變更為 堆疊線條。
下列螢幕擷取畫面顯示 處理器公用程式 圖表。
熱區域節流百分比
當熱區域進行節流時,軟體追蹤檔案會記錄所有熱節流百分比變更、溫度變更和冷卻原則變更。 若要檢視追蹤檔案中的資訊,請遵循下列步驟:
- 使用 WPA 工具開啟 ETL 檔案。
- 在 [圖形總管] 中,選取 [電源],然後選取 [ 熱][區域裝置節流]。
- 您可以透過套 用篩選來選取有趣的裝置。
下列螢幕擷取畫面顯示 熱區域裝置節流 圖表和篩選選項。
熱區域溫度
使用效能計數器資訊時,系統的溫度也可以受到監視,同時不會進行節流。 請遵循下列步驟:
- 在取得追蹤時啟用所需的提供者。
- 請確定效能計數器仍在輪詢 (效能監視器仍在執行) 。 如需詳細資訊,請參閱效能計數器。
- 使用 WPA 工具開啟 ETL 檔案。
- 在 [圖形總管] 中,選取 [Power],然後 依熱區域 (K) 溫度。
- 您應該會看到每個熱區域的溫度隨著時間變化。
下列螢幕擷取畫面顯示五個熱區域的一段時間溫度圖表。