例、要件、診断

このトピックでは、温度管理に関する問題の例を示し、要件と診断方法についても説明します。

次の例では、一般的な温度管理の問題に対処する方法について説明します。

表面温度センサー

ユーザーが常に保護されるようにするには、表面温度を監視することが重要です。 表面温度が高温すぎて安全に処理できない場合は、システムをシャットダウンする操作を直ちに実行する必要があります。 これらの温度センサーでは、その計測値に対応するデバイスを調整するために入力を温度管理ゾーンに渡すこともできます。

次のブロック図は、3 つのデバイスと 2 つの温度管理ゾーンを使用したシステム レイアウトの例を示しています。

system board layout with multiple thermal sensors and zones

この例では、デバイスの表面で最も多くの熱が発生している場所に、温度センサー 1 (TS1) と温度センサー 2 (TS2) が戦略的に配置されています。 デバイス 1、2、3 の各デバイス上には、個別の温度センサーを備えることができます。 これらのデバイス センサーでは、各デバイスが個別に調整されます。 通常、表面温度センサーの目的は、デバイス表面の温度をシステム上の複数のデバイスの集約として検出することです。 各デバイスでは、これらの温度センサーで検出できるよりも多くの熱が発生する場合がありますが、これらのデバイスを組み合わせた熱発生量は、これらのセンサーの場所に蓄積される傾向があります。

TS1 は、デバイス 2 とデバイス 3 の中間に配置されています。 そのため、入力として TS1 を使用する温度管理ゾーンでは、デバイス 2 とデバイス 3 が制御されます。 TS1 が高温になると、温度管理ゾーンでデバイス 2 と 3 が調整されます。 同様に、TS2 が高温になると、温度管理ゾーンで 3 つのデバイスがすべて調整されます。

この例では、監視されるデバイスから均等の距離にセンサーが配置されています。 TS1 はデバイス 2 とデバイス 3 の中間に配置され、TS2 はデバイス 1、2、3 の中間に配置されています。 各デバイスが同様に放射状に分散されている場合は、各デバイスからの熱がセンサーの計測温度に均等に分散されます。

段階的な温度調整

一連の温度定数 (_TC1 と _TC2) が指定されている場合は、温度管理ゾーンのパッシブ調整率に特定の特性 (曲線が変化する速度と、切り替えポイントからの距離を積極的に保つ方法) があります。 状況によっては、温度管理ゾーンの動作が変更される可能性があります。 たとえば、温度が低くなると、調整率の積極性を低くすることができます。 ただし、温度が切り替えポイントに近づくと、調整動作の積極性が高くなる必要があります。 その場合、段階的な温度調整を使用すると、一連のデバイスにさまざまな調整動作を適用できます。 段階的な温度調整を実装するには、次の 2 つの方法があります。

  • 実行時に温度管理ゾーンの定数を動的に変更する。または、
  • 定数と切り替えポイントが異なる 2 つの温度管理ゾーンを使用する。

ゾーンの定数を更新する

どの温度管理ゾーンでも、Notify(thermal_zone, 0x81) を使用して、いつでも温度定数を更新できます。

切り替えポイントが異なるゾーン

1 つの温度管理ゾーンには、複数の温度センサーを配置できません。 ただし、同じ温度管理センサーを共有する複数の温度管理ゾーンは、段階的な温度調整動作を実装するために頻繁に使用されます。 一方の温度管理ゾーンでは、低い温度でパフォーマンスの調整が開始され、他方の温度ゾーンでは、高い温度で積極的なパフォーマンスの調整が開始されます。

次のブロック図では、段階的な温度調整を実現するために、同じデバイスを管理する 2 つの温度管理ゾーンで同じ温度センサーが使用されています。 この例では、充電器とモニターのバックライトを制御する温度管理ゾーンに入力を提供できるように、これらの 2 つのデバイスの近くに配置されています。

multiple thermal zones that manage the same devices

上記の図に示した 2 つの温度管理ゾーンは、次のように定義できます。

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 アルゴリズムでは電流が考慮されないため、バッテリ ドライバーを温度と電流の両方に基づいて調整する必要がある場合は、このアルゴリズムは適切ではなくなりました。 このアルゴリズムを置き換えるには、カスタム アルゴリズムを含むポリシー ドライバーを指定し、そのドライバーを温度管理ゾーンのドライバー スタック上に読み込む必要があります。 このポリシー ドライバーでは、温度センサーと電流センサーの両方が入力として処理され、カスタム アルゴリズムに基づいて温度管理ポリシーに到達します。 この温度管理ポリシーは、温度管理ゾーン ハードウェアの機能内で動作する必要があることに注意してください。 このポリシーは温度管理マネージャーに送信され、そこでログが更新され、温度管理ゾーンが更新されます。 その後、温度冷却インターフェイスを使用して、温度管理ゾーンからバッテリー ドライバーに要求が送信されます。

次のブロック図は、バッテリー デバイスの温度と電流の両方を制御するポリシー ドライバーを示しています。 ポリシー ドライバーでは、温度管理マネージャーのアルゴリズムの代わりに、カスタムのアルゴリズムが実装されます。 温度管理マネージャーのアルゴリズムとは異なり、カスタムのアルゴリズムでは温度と電流の両方が考慮されます。

a policy driver replaces the thermal manager's algorithm

温度管理の要件

ハードウェア要件

適切な温度管理ハードウェア設計を行うには、次の点を考慮する必要があります。

  • 消費者向け電気機器の安全性を確保するために、すべてのシステムが該当する業界標準 (IEC 62368 など) を満たしている必要があります。

  • ハードウェアには、システムをシャットダウンするか、起動を回避する緊急時の温度切り替えポイントが必要です。

  • センサー ハードウェアは、+/- 2oC まで正確である必要があります。

  • センサー ハードウェアでは、しきい値の温度を超えたことを判断するためにソフトウェアのポーリングは必要ありません。

  • 操作時に、システム ディスプレイの明るさは 100 ニットに熱的に制限されません。

  • 次の状態のいずれかでは、バッテリーの充電が調整されません。

    • システムがアイドル状態であり、周辺温度が 35oC 未満の範囲内である。
    • どのような条件でも周辺温度が 25oC 未満である。

モダン スタンバイ PC の HCK テスト要件

すべてのモダン スタンバイ PC は、プロセッサーのアーキテクチャやフォーム ファクターに関係なく、特定の温度要件を満たす必要があります。 これらの要件は、HCK でテストされています。

  • すべてのモダン スタンバイ PC には、少なくとも 1 つの温度管理ゾーンが必要です。
  • 各温度管理ゾーンでは、センサーの実際の温度がレポートされる必要があります。
  • 少なくとも 1 つの温度管理ゾーンで、重大なシャットダウンの温度が定義されている必要があります。 Intel Dynamic Platform and Thermal Framework (DPTF) では例外が発生します。
  • ファンが搭載されているすべてのモダン スタンバイ PC では、オペレーティング システムへのファン アクティビティが公開されている必要があります。
  • ファンでは常に、モダン スタンバイ時のアイドル状態の回復性などのアクティビティがオペレーティング システムに通知される必要があります。 現時点では、これらの通知によってオペレーティング システムからの操作は発生しません。 これらの通知の主な目的は、診断能力と利用統計情報です。 ファンの通知は、Windows Performance Analyzer などの既存のトレース ツールと統合できます。 システムの設計者は、これらのツールを使用してプラットフォームの設計を調整できます。
  • ファンが搭載されているすべてのモダン スタンバイ PC では、モダン スタンバイ (システムの "スリープ" 状態) 時に、ファンをオフにしておく必要があります。
  • HCK テストでは、ファンの電源がオンにならないように、現実的なモダン スタンバイ ワークロードが実行されます。 モダン スタンバイへの切り替え時に、ファンはディスプレイがオフになった時点から最大 30 秒間待機できます。

HCK テストの詳細については、温度管理ゾーンの確認に関するページを参照してください。

HCK テストを実行するには、次の手順に従います。

  • まず、次のコマンドを入力して、ボタン ドライバーをインストールします。

    >>Button.exe -i

  • ファンが搭載された PC ですべての温度テストを実行するには、次のコマンドを入力します。

    >>RunCheckTz.cmd all

  • ファンが搭載されていない PC ですべての温度テストを実行するには、次のコマンドを入力します。

    >>RunCheckTz.cmd nofan all

温度管理ソリューション

ACPI に基づく Windows の温度管理フレームワークは、すべてのシステムに推奨される温度管理ソリューションです。 主な利点として、受信トレイ ツールで温度の問題を簡単に診断できる機能や、現場で貴重な利用統計情報を収集する機能があります。

ただし、上記の要件を満たしている場合は、Windows の温度管理フレームワークの代替ソリューションを使用できます。 コア シリコンおよび SoC ベンダーは、Windows との互換性があり、サポートされている独自の温度管理ソリューションを備えている場合があります。たとえば、x86 プロセッサ用の Intel Dynamic Platform and Thermal Framework (DPTF) に基づく実装や ARM の PEP 実装です。

診断

Windows には、システムの設計者がシステムの温度動作を診断および評価できるように、次の受信トレイとスタンドアロン ツールが用意されています。

イベント ログ

Windows では、重要な温度情報がイベント ログに記録されます。 この情報を使用すれば、追加のトレースやツールを必要とせずに、Windows 8 以降を実行している任意の PC で温度条件をすばやくトリアージできます。 次の表に完全な一覧を示します。

チャネル source id イベントの説明
Windows Logs\System カーネル電源 125 ACPI 温度管理ゾーンが列挙されています。

Windows では、起動時に温度管理ゾーンごとに、このイベントがログに記録されます。

Windows Logs\Systems カーネル電源 86 重大な温度管理イベントが原因でシステムがシャットダウンしました。

Windows では、重大なシャットダウン後に、このイベントがログに記録されます。 このイベントを使用して、重大な温度管理シャットダウンが発生したかどうかを診断し、シャットダウンが発生した温度管理ゾーンを特定できます。

アプリケーションとサービス ログ\Microsoft\Windows\Kernel-Power\Thermal-Operational カーネル電源 114 1 つの温度管理ゾーンでパッシブ クーリングが有効または無効になりました。

Windows では、温度調整が有効および無効になると、このイベントがログに記録されます。 このイベントを使用して、温度調整が発生したかどうかと、発生したゾーンを確認できます。 これは、パフォーマンスの問題をトリアージする際に役立ちます。

重大なイベント通知

温度条件によって重大なシャットダウンや休止状態が発生した場合は、イベントをシステムのイベント ログに記録できるように、オペレーティング システムに通知される必要があります。 これが発生した場合にオペレーティング システムに通知するには、次の 2 つの方法があります。

  • 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 構造体のメンバーが次の値に設定されます。

    Version

    THERMAL_EVENT_VERSION

    [サイズ]

    sizeof(THERMAL_EVENT)

    Type

    Ntpoapi.h の THERMAL_EVENT_XXX 値のいずれか。

    気温

    センサーが切り替えポイントを越えた後の温度 (10 分の 1 ケルビン) (不明な場合はゼロ)。

    TripPointTemperature

    切り替えポイントの温度 (10 分の 1 ケルビン) (不明な場合はゼロ)。

    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.

パフォーマンス カウンター

パフォーマンス カウンターでは、システムの温度管理動作に関するリアルタイム情報が提供されます。 次の 3 つのデータは、温度管理ゾーンごとにポーリングされます。

温度管理ゾーン情報
  • パッシブ制限 (%)– 調整された比率。 100% は、ゾーンが調整されていないことを表します。
  • 温度– 温度管理ゾーンの温度 (ケルビン単位)。
  • 調整理由– ゾーンが調整されている理由:

    • 0x0 – ゾーンが調整されていません。
    • 0x1 – 温度管理上の理由でゾーンが調整されています。
    • 0x2 – 電流を制限するためにゾーンが調整されています。

この情報は、要求時にのみポーリングされます。たとえば、Windows パフォーマンス モニターまたは typeperf コマンド ライン ツールでポーリングされます。

パフォーマンス カウンターの詳細については、パフォーマンス カウンターに関するページを参照してください。

パフォーマンス モニター

パフォーマンス モニターは、情報をポーリングおよび視覚化するための組み込みアプリケーションです。 パフォーマンス モニターは、システムの温度管理設計について温度管理条件を比較する非常に強力なツールです。 次の 2 つのサンプル スクリーンショットは、Internet Explorer で fishbowl デモが実行されているときのパフォーマンス モニターの動作を示しています。 1 番目のスクリーンショットでは、パフォーマンス モニターに 3 つの温度管理ゾーンの温度が上昇したことが表示されています。

a performance monitor graph that shows the temperature of three thermal zones over time

2 番目のスクリーンショットでは、パフォーマンス モニターで現在の調整率、温度、調整理由がレポートされています。

performance monitor reports the current throttle percentage, temperature, and reason for throttling

詳細については、「 パフォーマンス モニターを使用する」を参照してください。

Windows Performance Analyzer (WPA)

ADK の一部として、ソフトウェアのトレースと分析を行う Windows Performance Toolkit (WPT) が提供されています。 WPT 内部では、システムの設計者が Windows Performance Analyzer (WPA) を使用して、ソフトウェアのトレースを視覚化し、温度管理動作を分析できます。 WPA をインストールして使用する方法の詳細については、Windows Performance Analyzer (WPA) に関するページを参照してください。

プロバイダー

温度、温度管理ゾーン アクティビティ、ファン アクティビティに関するイベントをログに記録するには、"Microsoft-Windows-Kernel-ACPI" を追加します。

各温度管理ゾーンで温度のポーリングを有効にするには、"Microsoft-Windows-Thermal-Polling" を追加します。 これが追加されていない場合は、パッシブまたはアクティブな切り替えポイントを上回った場合にのみ、温度がレポートされます。 ポーリングの期間は、プロバイダーにフラグを指定することで制御できます。

フラグ ポーリングの期間
なし 1 秒
0x1 1 秒
0x2 5 秒
0x4 30 秒
0x8 5 分
0x10 30 分

プロセッサ ユーティリティ

温度調整データを調査する前に、プロセッサ ユーティリティの情報を再チェックして、プロセッサ ユーティリティのパターンがワークロードで必要なパターンと一致しているかどうかを確認することをお勧めします。 ワークロードが正しくセットアップされていることを確認するには、次の手順に従います。

  1. WPA ツールを使用して、ETL ファイルを開きます。
  2. [Graph エクスプローラー] で、[電源][プロセッサ ユーティリティ] の順に選択します。
  3. [グラフの種類][積み上げ折れ線] に変更します。

次のスクリーン ショットは、[プロセッサ ユーティリティ] グラフを示しています。

the processor utility graph

温度管理ゾーンの調整率

温度管理ゾーンが調整されているときは、すべての温度調整率の変化、温度の変化、冷却ポリシーの変更がソフトウェア トレース ファイルに記録されます。 トレース ファイルの情報を表示するには、次の手順に従います。

  1. WPA ツールを使用して、ETL ファイルを開きます。
  2. [Graph エクスプローラー] で、[電源][温度管理ゾーン デバイスの調整] の順に選択します。
  3. [フィルターの適用] を使用して、目的のデバイスを選択できます。

次のスクリーンショットは、[温度管理ゾーン デバイスの調整] グラフとフィルター オプションを示しています。

the thermalzone device throttle graph and filtering options

温度管理ゾーンの温度

パフォーマンス カウンター情報を使用すると、調整が有効になっていなくても、システムの温度を監視できます。 次の手順のようにします。

  1. トレースの取得時に、目的のプロバイダーを有効にします。
  2. パフォーマンス カウンターがまだポーリングされている (パフォーマンス モニターがまだ実行中である) ことを確認します。 詳細については、パフォーマンス カウンターに関するページを参照してください。
  3. WPA ツールを使用して、ETL ファイルを開きます。
  4. [Graph エクスプローラー] で、[電源][温度管理ゾーン別の温度 (K)] の順に選択します。
  5. 温度管理ゾーンごとに、温度の時間経過を確認する必要があります。

次のスクリーンショットは、5 つの温度管理ゾーンの温度の時間経過グラフを示しています。

a graph of temperature over time for five thermal zones