デバイスの電源状態

デバイスの電源状態は、コンピューター内の他のデバイスとは別に、コンピューター内のデバイスの電源状態を表します。 デバイスの電源状態の名前は D0、D1、D2、D3 です。 D0 は完全にオン状態で、D1、D2、D3 は低電力状態です。 状態番号は電力消費量と逆に関連しています。番号付き状態が大きいほど、使用電力が少なくなります。 Windows 8以降、D3 状態は D3hot と D3cold の 2 つのサブステートに分割されます。

デバイスの電源状態は、次の属性によって特徴付けられます。

  • 電力消費: デバイスはどのくらいの電力を使用しますか?

  • デバイス コンテキスト: デバイスはこの状態でどの程度の操作コンテキストを保持しますか?

  • デバイス ドライバーの動作: デバイスを完全に動作状態に復元するには、デバイスのドライバーで何を行う必要がありますか?

  • 復元時間: デバイスを完全に動作状態に復元するのにどれくらいの時間がかかりますか? ほとんどの種類のデバイスは、あるデバイス クラスから次のデバイス クラスにほとんど異なる適度な復元時間を持っています。 GPU などの少数の種類のデバイスにのみ、復元に大幅に時間がかかる非常に大きなハードウェア コンテキストがあります。

  • ウェイクアップ機能: デバイス要求はこの状態からウェイクアップできますか? 一般に、デバイスが特定の電源状態 (D2 など) からウェイクアップを要求できる場合は、より高い電力の状態 (D1) からウェイクアップを要求することもできます。

電源状態の正確な定義は、デバイス固有です。 すべてのデバイスですべての状態が定義されているわけではありません。多くのデバイスでは、D0 と D3 の状態のみが定義されます。 特定のデバイスに対して定義されているデバイスの電源状態と、各状態の動作要件については、「デバイス クラスの電源管理リファレンス仕様」を参照してください。 (リファレンス仕様は ACPI/Power Management Web サイトで入手できます)。

デバイスの電源状態が システムの電源状態と一致する必要はありません。 たとえば、システムが システムの動作状態 (S0) であっても、一部のデバイスはオフ (D3) 状態になることがあります。

デバイスの電源状態は、デバイスの親バスの電源状態とは無関係に見える場合があります。 たとえば、親ホスト コントローラーが D3 状態の場合、USB デバイスは D2 (選択的中断) 状態になる可能性があります。 これら 2 つの状態は、DX 状態の定義が USB と、USB ホスト コントローラーが接続されているバス (通常は PCI または PCI Express) で異なるためにのみ一貫性がないようです。

一部のデバイスでは、1 つのデバイスの電源状態内で複数の異なる低電力モードが可能であることに注意してください。 このようなデバイスは、ドライバーがデバイスの電源状態を変更せずにデバイスを 1 つのモードから別のモードに自動的に切り替えることができる場合に、これらのモードを使用できます。 ただし、一般的な規則として、モード間にユーザーが認識できる違いがない場合、デバイスでは最小電力モードのみを使用する必要があります。 低速モードなどの低電力モードがパフォーマンスに悪影響を与える場合や、デバイス ドライバー以外のソフトウェアに対して透過的でない場合は、ハードウェアで自動的に使用しないでください。 詳細については、デバイス クラスの Power Management リファレンス仕様を参照してください。

ドライバーまたは電源マネージャーは、デバイスの電源状態の遷移を要求できます。このような遷移を要求する IRP を処理するために、すべてのドライバーを準備する必要があります。 詳細については、次のトピックを参照してください。

デバイス電源状態についての IRP_MN_QUERY_POWER または IRP_MN_SET_POWER の送信

デバイス電源状態についての IRP_MN_QUERY_POWER の処理

デバイス電源状態についての IRP_MN_SET_POWER の処理

システムと同様に、デバイスは動作状態 (D0) から任意の低電力状態 (D1、D2、または D3) に移行し、低電力状態から動作状態に切り替えることができます。 次の図は、有効なデバイスの電源状態遷移を示す状態グラフです。

diagram illustrating the valid device power state transitions.

このグラフは、D3 と D3cold への D3 の下位区分を示しています。 D3hot と D3cold は、Windows 8以降で定義されます。 D0 状態と D3hot サブステートをサポートするには、すべてのデバイスが必要です。 図に示されているその他の状態は省略可能です。

上のグラフでは、D3hot から D3cold への移行は、デバイスの低電力状態間の唯一の直接遷移です。 低電力状態間の他のすべての遷移には、D0 への中間遷移が必要です。これにより、デバイス ドライバーは必要に応じて、次の低電力状態に入るか、D0 に留まるようにデバイス ハードウェアを構成できます。 ただし、デバイスが D3hot を終了し、デバイスへの電源が切断されたときに D3cold に入ります。デバイス ドライバーからの介入は必要ありません。 このドライバーは、デバイスが D3hot に入る前に、デバイス ハードウェアの必要な構成を行います。D3hot から D3cold への移行のためにデバイスを準備するために追加の構成は必要ありません。 詳細については、「ドライバーでの D3cold のサポート」をご覧ください。

PCI ルート ポートからエンドポイントへの D 状態マッピング

Windows 10 システムでは、プラットフォームの全体的な電源状態は、PCI ルート ポートを含む SoC (System on Chip) 統合デバイスの電源状態 (D 状態) によって異なります。 開発するプラットフォームによっては、PCI ルート ポートの D 状態要件がプラットフォームの電源状態ごとに異なる場合があります。 OEM は、プラットフォームとデバイスの電源状態要件に関する IHV プラットフォーム固有のドキュメントを参照することをお勧めします。

次の表は、PCI ルート ポートとその接続されたエンドポイントの電源状態マッピングを列挙しています。 ルート ポートがターゲット D 状態に入るには、以下に示すエンドポイントの D 状態を実現する必要があります。

ルート ポート ターゲット D-State エンドポイントの D-State

D0

D0、D0:F1

D0:F1

D3hot

D3hot

D3cold*

*PCI D3cold の電源状態には、BIOS とデバイス ドライバーのサポートが必要です。 サポートがない場合、PCI エンドポイントは D3Hot のみを実現できます。 詳細については、「 ドライバーでの D3Cold のサポート」を参照してください。