最新のスタンバイに入る場合は、低電力操作への移行を行うためにハードウェア コンポーネントを準備する必要があります。 ソフトウェア コンポーネントとアプリを低電力操作用に準備した後、ソフトウェア デバイス ドライバーを含むハードウェア コンポーネントも同様に低電力操作用に準備する必要があります。
この記事の残りの部分では、ハードウェア プラットフォームがスタンバイ状態に入った後、低電力モードで動作するように、チップ上のシステム (SoC) の外部および内部のデバイスを準備する方法について説明します。
ハードウェアの低電力モードへの移行
スリープ中に長いバッテリ寿命を実現するには、SoC の外部および SoC 内のすべてのデバイスが低電力モードに入る必要があります。 ハードウェア プラットフォームがスリープ状態に入った後、プラットフォーム内のデバイスは、SoC の外部にあるデバイスで始まる順序の整ったプロセスで低電力モードに切り替わります。
まず、SoC またはコア シリコン以外のすべてのデバイスが低電力モードに入る必要があります。 電源モードは、クロック ゲートのアイドル状態である可能性があります。たとえば、I²C に接続されたタッチ コントローラーをスリープ モードに配置する場合などです。 または、電源モードは 、D3cold と呼ばれる電力ゲートの 0 ワットの状態にすることができます。 USB に接続された Web カメラは、多くの場合、最新のスタンバイ中に D3cold に移行します。 詳細については、「USB デバイスの D3cold のサポート」を参照してください。
各デバイス クラスと接続バスには、デバイスを最小電源モードに移行するための独自の用語と要件があります。 ただし、システム デザイナーは、最新のスタンバイ中にプラットフォーム内の各デバイスの低電力モードを計画することが重要です。 システムのバッテリ寿命と、SoC自体を低電力モードに配置する機能は、SoC自体の外部にある各デバイスの正しい電源管理に依存します。
次に、ネットワークデバイスと無線デバイスは、スリープ用の低電力モードに配置されます。 多くの場合、これらのデバイスはスリープ中に接続を維持するために電源が適用され、必要に応じて SoC をウェイクアップする必要があります。 通常、通信および無線デバイスは D2/D3 低電力状態になりますが、各状態へのエントリはデバイス クラス固有でバス固有です。
通信デバイスを含む SoC の外部のすべてのデバイスの電源がオフになると、SoC のホスト コントローラーがオフになります。 ほぼすべての SoC には、USB、I²C、GPIO、SDIO、および UART ホスト コントローラーがあります。 SoC が低電力モードに入るには、SoC 上のこれらの各コンポーネントをオフにする必要があります。
次の図に示すように、スリープ中に低電力用のハードウェアを準備するプロセスは、逆さまピラミッドとして視覚化できます。 SoC チップ全体の電源がオフになると、最低の電力が得られますが、これはピラミッド内のその上の各デバイス セットの電源がオフになった後にのみ発生します。
SoC の外部にあるデバイスの電源を切る
SoC チップの外部にある各デバイスは、次の 2 つの重要な目標のために低電力モードに入る必要があります。
- デバイスの消費電力を削減します。
- デバイスが接続されている SoC ホスト コントローラーの電源が切れるようにすることで、SoC 自体の電源を切れるようにします。
SoC の外部にある各デバイスの電源を切る方法は、デバイス クラスと接続されているバスによって異なります。
SoC の外部にある一部のデバイスは、 D3cold と呼ばれる電力消費のない 0 ワットの状態になります。 D3cold の一般的なデバイスには、カメラとセンサーが含まれます。 ドライバーは、デバイスのレジスタの状態を保存し、D3 電源状態にデバイスを移行する必要があります。 ACPI ファームウェアは、GPIO 回線を切り替えるか、電源管理 IC (PMIC) から電源レールをオフにすることで、ACPI ファームウェアによって電源が取り除かれます。
SoC の外部にある一部のデバイスは、レジスタの状態が維持される低電力アイドル モードに配置されます。または、デバイスが単にクロック ゲートされている可能性があります。 たとえば、多くのタッチ コントローラーはクロック ゲート状態を備え、消費電力は 1 ミリワット未満です。 クロックゲート状態を使用する一般的な利点は、スイッチ可能な電源レールにデバイスを接続する必要がなくなり、電源オン時間が短縮され、コストが削減される点です。
一般に、SoC の外部のすべてのデバイスは、1 ミリワット未満の電力を消費する低電力モードに入ることができる必要があります。 内部クロック ゲート状態でこの電力レベルを達成できないデバイスは、D3cold を介して電力ゲートを実装する必要があります。
ネットワークデバイスと無線デバイスは、1 ミリワットのガイドラインの注目すべき例外です。 ネットワークおよび無線デバイスでは、ネットワークへの接続を維持したり、ワイヤレス デバイスをリッスンしたりするために、より多くの電力が必要になる場合があります。 一部のシステム デザイナーは、これらの電源状態遷移を ランタイム D3 (RTD3 ) と見なします。
PCIe デバイスのダイレクト電源管理
SoC の外部にある PCIe カードは、低電力モードに入ることができるように、Device-S4 と呼ばれるダイレクト電源管理メカニズムを有効にする必要があります。 Device-S4 を使用しない場合、ユーザーがデスクトップのモダン スタンバイ システム上のユーザーアクセス可能なスロットを備えた PCIe ルート ポートにデバイスを接続し、デバイスのドライバーがランタイム D3 (RTD3) をサポートしていない場合、PCIe デバイスはシステムが DRIPS に入るのを妨げる可能性があります。 この問題を回避するには、OEM は PCIe デバイスのルート ポートを Device-S4 にオプトインする必要があります。 特定の PCIe デバイスに対して Device-S4 をエンゲージするには、次の要件を満たす必要があります。
- デバイスの親 PCIe ルート ポートは、DRIPS の制約として指定する必要があります。
- 親 PCIe ルート ポートは、ルート ポートの D0->D3 遷移時にルート ポートのダウンストリームにあるすべての子に基本的なデバイス リセットを適用し、D3->D0 遷移時にそれらの子に基本的なデバイス リセットをデアサートする必要があります。 PCIe の基本的なリセットの詳細については、 PCI Express Base Specification のセクション 6.6.1 を参照してください。 基本的なリセットの適用は、補助 ACPI メカニズムによって提供できます。 詳細については、 PCI 電源管理に関するこのガイドを参照してください。 プラットフォームがこの基本的なリセット要件を満たしていることを示すには、ファームウェアで GUID {FDF06FAD-F744-4451-BB64-ECD792215B10} をサポートする_DSDを定義する必要があります。 これがなければ、その PCIe ルート ポートの下のデバイスに対してダイレクト ドリップはトリガーされません。 詳細については、 PCIe ルート ポートの ACPI デバイス固有のデータ (_DSD) を参照してください。
- 電源リソースは、特定の PCIe ルート ポートに固有である必要があります。つまり、他のルート ポートと共有することはできません。
互換性サポート モジュール (CSM) を必要とする PCIe カードは、最新のスタンバイ システムでは機能しないことに注意してください。 UEFI セキュア ブートの要件により、最新のスタンバイ システムの BIOS では CSM はサポートされていません。 詳細については、 Windows ハードウェア互換性プログラムの仕様を参照してください。
特定のデバイス クラスの電源管理の詳細については、システム デザイナーは、 最新のスタンバイのデバイス固有の電源管理と、Microsoft 共同作業に関するデバイス固有のドキュメントを確認することをお勧めします。
ネットワーク デバイスの電源を切る
ネットワークおよび無線デバイスの電源を切る機能は、スリープ中の低電力動作用にハードウェアを準備する際のもう 1 つの重要な部分です。 ネットワークデバイスと無線デバイスは、SoC の外部にある他のデバイスとは異なります。これは、興味深いイベントをリッスンして SoC をウェイクするために電源を適用したままにする必要があるためです。 たとえば、Wi-Fi 無線では、WoL パターンに一致するパケットをリッスンし、一致するパケットが検出されたときに SoC をウェイクアップできる必要があります。
Windows は、SoC をスリープ解除することが予想される場合、スリープ中にネットワーク デバイスを D2/D3 状態に移行します。 Windows ネットワーク スタックは、デバイスを低電力 D2/D3 状態にする前に、WoL パターンとプロトコル オフロードを構成します。 Wi-Fi、モバイル ブロードバンド (MBB)、有線イーサネットを含むすべてのネットワーク デバイスは、スリープ中に D2/D3 状態に入ることができる必要があります。 ネットワーク デバイスがシステムをスリープ解除する必要がない場合、Windows はデバイスを D3 状態に移行します。 ユーザーが機内モードを有効にしているか、特定のネットワーク デバイスを無効にしている場合は、ネットワーク デバイスを D3 状態にすることができます。
SoC を最も低い電力モードから復帰させる物理方法は、デバイスごとに異なります。 SDIO または UART 上のネットワーク デバイスは、SoC をスリープ解除するために GPIO ラインを通知することが期待されます。 USB または HSIC 経由で接続されたネットワーク デバイスでは、SoC をウェイクするためにインバンド USB 再開信号を使用することが期待されます。 PCI または PCIe バス上のネットワーク デバイスでは、SoC を復帰させるためにインバンド PME シグナリングを使用することが期待されます。
さらに、ユーザーがこのデバイスの無線をオンにしている場合、Bluetoothや近距離通信 (NFC) デバイスなどの無線デバイスが D2 状態に移行することが期待されます。 D2 状態では、Bluetooth無線は、ペアリングされたマウスとキーボードからの入力イベントをリッスンします。 入力イベントが検出されると、Bluetooth無線は SoC に接続されている GPIO 行を切り替えます。これにより、SoC は低電力モードから復帰します。
各ネットワークまたは無線デバイスには、最新のスタンバイモードで電源をオフにする独自の方法があります。 システム デザイナーは、Microsoft 共同作業 Web サイトでデバイス クラス固有のドキュメントを読み取することをお勧めします。
SoC ホスト コントローラーの電源を切る
ネットワークおよび無線デバイスを含む SoC 外のすべてのデバイスの電源がオフになった後、デバイスが接続されているホスト コントローラーの電源を切る必要があります。 一般的なホスト コントローラーには、USB、PCI、SDIO、GPIO、I²C があります。
各ホスト コントローラーのドライバーは、ホスト コントローラーに接続されているすべてのデバイスの電源が切れた後にのみ、ハードウェアの電源を切ることができます。 一般的な例として、USB ホスト コントローラーがあります。 USB ホスト コントローラーは、接続されているすべての USB デバイスが選択的な中断状態になった後にのみ電源を切ることができます。 USB ホスト コントローラーに USB マウスとキーボードが接続されている場合、ホスト コントローラーは、マウスとキーボードの両方の電源が切れた後にのみ電源を切ることができます。 マウスまたはキーボードの電源がオンのままになっている場合は、USB ホスト コントローラーの電源もオンのままです。
SoC 自体が電源を切るには、SoC 上のすべてのホスト コントローラーがスリープのために電源を切る必要があります。 このため、すべてのデバイスがデバイスの電源管理を実行することが重要です。 SoC 自体は、各ホスト コントローラーの電源がオフになっている場合にのみ電源を切ることができます。 ホスト コントローラーの電源をオフにできるのは、デバイスに接続されているすべてのデバイスの電源が切れた後だけです。
CPU と GPU の電源を切る
電源管理の面では、SoC チップ上の CPU と GPU は他のデバイスとは異なります。 CPU と GPU は、SoC 自体の電源を切る一環として電源を切り、対象となるソフトウェア アクティビティがない場合は常に電源を切ります。
システム上のほとんどのソフトウェア アクティビティは、「最新のスタンバイ用にソフトウェアを準備する」で詳しく説明されている準備段階で停止されます。 Microsoft Store アプリは、PLM フェーズの一環として一時停止されます。 デスクトップ アプリケーションは、DAM フェーズの完了の一環として一時停止されます。 プラットフォームが回復性フェーズに入った後に残る唯一の CPU アクティビティは、Windows 自体のアイドル操作です。 同様に、すべてのアプリが一時停止され、画面がオフになっているため、GPU アクティビティはほとんどありません。
Windows は、画面がオンになっていて、ユーザーが PC を操作している場合でも、システム上の CPU の電源状態を継続的に管理します。 同じ CPU 電源状態管理では、スリープ中に CPU が低電力モードになります。 すべての CPU が低電力モードで、SoC 上のすべてのホスト コントローラーの電源がオフになっている場合は、SoC 自体の電源を切ることができます。
SoC の電源を切る
SoC 上のすべての個々のホスト コントローラー、CPU、および GPU の電源がオフになると、Windows は SoC 自体全体の電源をオフにしても安全かどうかを判断します。 SoC ベンダーは、SoC 上のすべての状態が保存されたときに Windows に通知する電源エンジン プラグイン (PEP) を提供し、SoC が低電力モードに入る準備ができていることを示します。 Intel ベースの SoC に対して、PEP は最初から提供されています。
SoC ベンダーごとに、SoC 全体の低電力状態の実装が異なります。 これらの状態は、通常、メモリの内容が自己更新で保持され、プログラム可能なタイマーとごくわずかな電力を消費する少数の GPIO ピンによってシステムを目覚めさせる、クロック ゲート状態またはパワー ゲート状態のいずれかです。 Windows は、最も低い SoC 電源状態を最も深いランタイム アイドル プラットフォーム状態 (DRIPS) と見なします。
DRIPS 状態には、常に次の特性があります。
- ドリップは、メモリがセルフリフレッシュ モードで保持される SoC の最も低い電力消費状態です。
- DRIPS を使用すると、SoC はネットワーク、無線、および入力デバイスからイベントをウェイクオンできます。
- ドリップ状態中に CPU コードを実行することはできません。
- SoC がドリップ状態の場合、プラットフォームはスリープ中に可能な最小限の電力を消費しています (ネットワークおよび無線デバイスによる電力消費量の変動を除く)。