デバイスの低電力状態

デバイスの電源状態 D1、D2、および D3 は、デバイスの低電力状態です。 Windows 8 以降、D3 は D3hot と D3cold の 2 つのサブステートに分かれています

D1 と D2 は中間低電力状態です。 デバイスの多くのクラスでは、これらの状態が定義されていません。 すべてのデバイスで D3hot を定義する必要があります。

次のセクションでは、D1、D2、および D3 について説明します。

デバイスの電源状態 D1

デバイスの電源状態 D1 は、最高電力デバイスの低電力状態です。 次の特性があります。

電力消費
従量課金は D0 状態より小さいが、D2 状態の消費量以下である。 多くの場合、D1 はクロック ゲート状態であり、デバイスはデバイスのハードウェア コンテキストを維持するのに十分な電力を受け取ります。 通常、D1 をサポートするバスまたはデバイス クラスの仕様では、この状態について詳しく説明します。

デバイス コンテキスト
一般に、デバイス コンテキストはハードウェアによって保持され、ドライバーによって復元される必要はありません。 通常、D1 をサポートするバスまたはデバイス クラスの仕様では、このコンテキストを保持するための詳細な要件が提供されます。

デバイス ドライバーの動作
ドライバーは、ハードウェアによって失われたコンテキストを保存して復元または再初期化する必要があります。 ただし、通常、この状態に入ると、デバイスのコンテキストはほとんど失われます。

復元時間
一般に、D1 から D0 にデバイスを復元するために必要な時間は、D2 から D0 への復元よりも短くする必要があります。

ウェイクアップ機能
D1 のデバイスは、ウェイクアップを要求できる場合があります。 この状態がウェイク 信号をサポートできるかどうかに関する情報を提供するために、バス ドライバーは、DEVICE_CAPABILITIES構造体を使用するか、Windows 8 以降、GUID_D3COLD_SUPPORT_INTERFACE ドライバー インターフェイスを使用します。

通常、D1 を使用するデバイスは、この状態から再開しても、ドライバーがデバイスの完全なハードウェア コンテキストを復元する必要がないため、この操作を行います。 遅延に対するユーザーの認識を最小限に抑えるには、D1 から D0 にデバイスを復元すると、可能な限り遅延が最小限に抑えられます。 電力消費量を減らすよりも、状態遷移の遅延を最小限に抑えることが重要です。

デバイスの電源状態 D2

D2 は、次の特性を持つ中間デバイスの低電力状態です。

電力消費
従量課金は、D1 状態の消費量以下です。

デバイス コンテキスト
一般に、ほとんどのデバイス コンテキストはハードウェアによって失われます。 多くの場合、この状態は、ウェイク イベントの通知に使用されるコンテキストの一部を保持します。 通常、D2 をサポートするバスまたはデバイス クラスの仕様では、このコンテキストを保持するための詳細な要件が提供されます。

デバイス ドライバーの動作
デバイス ドライバーは、ハードウェアによって失われたコンテキストを保存して復元または再初期化する必要があります。 一般的なデバイスは、D2 に入るとほとんどのコンテキストを失います。

復元時間
D2 から D0 にデバイスを復元するには、少なくとも D1 から D0 にデバイスを復元する必要があります。 大きなフレーム バッファーを持つグラフィックス アダプターは、D2 から D0 への移行後に復元するハードウェア コンテキストが大量にあるデバイスの例です。 このようなデバイスの場合、D2 からの復元時間は D1 からの復元時間よりもはるかに長くなる可能性があります。

ウェイクアップ機能
D2 のデバイスは、ウェイクアップを要求できる場合があります。 この状態がウェイク 信号をサポートできるかどうかに関する情報を提供するために、バス ドライバーは、DEVICE_CAPABILITIES構造体を使用するか、Windows 8 以降、GUID_D3COLD_SUPPORT_INTERFACE ドライバー インターフェイスを使用します。

通常、D2 をサポートするドライバーは、デバイスが D3 からのウェイクをサポートできないため、これを行います。 これらのデバイスの場合、D2 状態の電力消費量は、スリープ解除信号に応答してデバイスが回復できる最も低いレベルに低下します。 ユーザーが認識する遅延を減らすために実装される D1 状態とは対照的に、D2 状態を実装する目的は、電力を節約することです。 その結果、D2 から D0 への復元時間は通常、D1 から D0 までの復元時間を超えます。 たとえば、D2 状態では、バスの電源が低下すると、デバイスの機能の一部がオフになり、デバイスの再起動と復元に追加の時間が必要になる場合があります。

デバイスの多くのクラスでは、この状態が定義されていません。

デバイスの電源状態 D3

D3 は、最も電力の低いデバイスの低電力状態です。 すべてのデバイスがこの状態をサポートしている必要があります。

Windows 8 以降では、オペレーティング システムは D3 を 2 つの個別のサブステート (D3hot と D3cold) に分割します。 以前のバージョンの Windows では D3 状態が定義されていますが、D3hot および D3cold サブステートは定義されていません。 ただし、PCI Bus 電源管理インターフェイス仕様のすべてのバージョンでは個別の D3hot および D3cold サブステートが定義され、Advanced Configuration および Power Interface Specification のバージョン 4 以降では D3hot および D3cold サブステートが定義されています。

Windows 8 より前のバージョンの Windows では D3hot および D3cold サブステートが明示的に定義されていませんが、これらのサブ状態は、これらの以前のバージョンの Windows に暗黙的に存在します。 デバイスが明示的に D3 状態で、コンピューターが S0 システム電源状態である場合、デバイスは D3hot サブステートに暗黙的に存在します。 D3hot では、デバイスは電源に接続され (デバイスは低電流を引くように構成されている可能性がありますが)、バス上のデバイスの存在を検出できます。 D3 の状態が明示的で、コンピューターが低電力 Sx 状態 (S0 以外の状態) の場合、デバイスは D3cold サブステートに暗黙的に存在します。 この暗黙的な D3cold サブステートでは、デバイスはトリクル電流を受け取る可能性がありますが、ウェイク イベントが発生するまで、デバイスとコンピューターは実質的にオフになります。

Windows 8 以降では、コンピューターが S0 状態で再メインしている間、デバイスは D3cold サブ状態に入り、そのままにできます。 この新しい動作をサポートするには、D3hot と D3cold を D3 の個別のサブ状態として明示的に定義する必要があります。

D3hot は、デバイスが D0 から直接入力できる D3 の唯一のサブステートです。 デバイスは、デバイス ドライバーによってソフトウェア制御下で D0 から D3hot に移行します。 D3hot では、接続先のバスでデバイスを検出できます。 デバイスが D3hot サブステートにある間、バスは D0 状態で再メインする必要があります。 D3hot から、デバイスは D0 に戻るか、D3cold と入力できます。 D3cold は D3hot からのみ入力できます。

D3cold は D3 のサブステートで、デバイスはバスに物理的に接続されていますが、バス上のデバイスの存在を検出できません (つまり、デバイスが再びオンになるまで)。 D3cold では、次のいずれかまたは両方が当てはまります。

  • デバイスが接続するバスが低電力状態です。
  • デバイスは、バス ドライバーがバス上の存在を検出しようとしたときにデバイスが応答しない低電力状態です。

D3hot から D3cold への移行は、デバイス ドライバーの操作なしで行われます。 代わりに、デバイス ドライバーは、D0 から D3hot への移行を開始する前に、D3cold 遷移に備えて準備されているかどうかを示します。 その後、すべての条件がこの遷移を有効にする権利があるかどうかに応じて、D3hot から D3cold への移行が発生する場合と発生しない場合があります。

このような 2 つの条件は、同じ電源を使用するすべてのデバイスが D3hot にあり、D3cold 遷移用に準備されていることです。 これらのデバイスの最後が D3hot に入ると、親バス ドライバーまたは ACPI フィルター ドライバーは、これらのデバイスの電源をオフにします。つまり、デバイスが D3cold と入力します。

D3cold 内のデバイスは、D0 と入力するだけで、このサブ状態を残すことができます。 D3cold から D3hot への直接の移行はありません。

コンピューターが S0 状態で、デバイスが D3hot サブステートに入ると、通常、デバイス ドライバーは、デバイスの次の遷移が D3cold または D0 になるかどうかを事前に判断できません。 1 つの例外は、コンピューターが S0 状態を残す準備をしているときです。 この場合、次の遷移は D3cold です。

次のセクションでは、D3hot と D3cold について説明します。

詳細については、「ドライバーでの D3cold のサポート」をご覧ください。

D3hot サブステート

D3hot には次の特性があります。

消費電力 電力は、デバイスからほとんど削除されますが、コンピューター全体からは削除されません。 S0 状態のコンピューターは、この状態で実行を続けるか、S0 から低電力 Sx 状態に移行する準備をしている可能性があります。

デバイス コンテキスト
デバイス ドライバーは、デバイス コンテキストの復元のみを担当します。 ドライバーは、すべてのデバイス コンテキストを保持して復元するか、D0 状態に移行したときにデバイスを再初期化する必要があります。

デバイス ドライバーの動作
デバイス ドライバーは、デバイス コンテキスト (通常は最新の作業構成から) の復元のみを行います。

復元時間
合計復元時間は、D3cold を除くデバイスの電源状態の中で最も高くなりますが、通常は D2 からの復元時間よりも大きくはありません。

ウェイクアップ機能
D3hot サブステート内のデバイスは、ウェイクアップを要求できる場合とできない場合があります。 このサブステートがウェイク シグナルをサポートできるかどうかに関する情報を提供するために、バス ドライバーは、DEVICE_CAPABILITIES構造体を使用するか、Windows 8 以降、GUID_D3COLD_SUPPORT_INTERFACE ドライバー インターフェイスを使用します。

D3hotでは、最小限のトリクル電流しか使用できません。 電源が供給されない場合は、ドライバーとハードウェアを準備する必要があります。 通常、D3hot をサポートするバスの仕様では、この状態で使用できる電源の詳細な要件が提供されます。 デバイスを動作状態に戻すには、デバイスのドライバーは、BIOS に依存せずにデバイスを復元および再初期化し、デバイスで使用できる可能性があるオプション ROM 内のコードを実行できる必要があります。

デバイスのすべてのクラスは、D3hot サブステートを定義します。

D3cold サブステート

D3cold には次の特性があります。

電力消費
デバイスから、場合によってはシステム全体から電源が完全に取り外されました。 デバイスの構造によっては、サイドバンド ソースから電流を引き出すことができる場合があります。

デバイス コンテキスト
デバイス ドライバーは、デバイス コンテキストの復元のみを担当します。 ドライバーは、デバイス コンテキストを保持して復元するか、D0 状態に移行したときにデバイスを再初期化する必要があります。

デバイス ドライバーの動作
デバイス ドライバーは、デバイス コンテキスト (通常は最新の作業構成から) の復元のみを行います。

復元時間
復元時間の合計は、デバイスの電源状態の中で最も高くなります。

ウェイクアップ機能
D3cold サブステートでは、デバイスがスリープ状態のコンピューターをスリープ解除するウェイク シグナルをトリガーできる場合があります。 この機能は、DEVICE_CAPABILITIES構造体で報告され、Windows 8 以降では、GUID_D3COLD_SUPPORT_INTERFACE ドライバー インターフェイスの GetIdleWakeInfo ルーチンによって報告されます。 信号がコンピューターをスリープ解除すると、デバイス ドライバーは D3cold から D0 へのデバイスの移行を開始します。 詳細については、次の解説を参照してください。

Windows 8 以降では、D3cold サブステート内のデバイスは、S0 システムの電源状態にあるコンピューターに対してウェイク シグナルをトリガーできる場合があります。 この機能は、GetIdleWakeInfo ルーチンによって報告されます。 DEVICE_CAPABILITIES構造体には、この機能に関する情報は含まれません。 ウェイク 信号が到着すると、デバイス ドライバーは D3cold から D0 へのデバイスの移行を開始します。 この場合、信号が届くとコンピューターが起動し、デバイスのみがスリープ解除する必要があります。

多くの既存のハードウェア プラットフォームでは、低電力 Dx 状態のデバイスがスリープ状態のコンピューターをスリープ解除するウェイク 信号をトリガーできます。 ただし、コンピューターが S0 状態で実行されている場合、同じデバイスでウェイク シグナルをトリガーできない可能性があります。 したがって、このデバイスのドライバーは、コンピューターが S0 状態のときに D0 から低電力 Dx 状態へのデバイスの移行を開始しないでください。 それ以外の場合、デバイスが D0 を離れると、コンピューターが S0 状態になるまで使用できなくなります。 このデバイスは、コンピューターが S0 状態を終了する準備をしている場合にのみ、D0 状態のままにする必要があります。

低電力 Dx 状態のデバイスが S0 状態で実行されているコンピューターへのウェイク シグナルをトリガーできる場合、デバイスは、コンピューターが S0 のときに D0 でメインする必要はありません。 コンピューターが S0 にあり、デバイスが D0 にあり、アイドル状態の場合、ドライバーはデバイスをアームしてウェイク 信号をトリガーし、D0 からこの低電力 Dx 状態へのデバイスの移行を開始できます。

デバイスの一部のクラスは、D3cold サブステートを定義します。

詳細については、「ドライバーでの D3cold のサポート」をご覧ください。