電源管理フレームワークの概要

Windows 7 以前の Windowsではデバイス レベルの電源管理のみがサポートされています。これにより、ドライバーはデバイスで D 状態をサポートできます。 Advanced Configuration and Power Interface (ACPI) の仕様では、デバイスの電源状態として D0 (全面的にオン) から D3 (全面的にオフ) が定義され、システムの電源状態として S0 (全面的にオン) から S5 (全面的にオフ) が定義されています。 これらのバージョンの Windows には、デバイスの個々のコンポーネントに供給する電力を個別に管理する機能が用意されていません。 これらのバージョンの Windows では、コンポーネントのカスタム電源制御を実装できるドライバーもあります。しかし、そのような制御はドライバーの複雑さを助長するほか、コンポーネントの電源設定がデバイス内部で制御されている場合にのみ現実的であることもあり得ます。

Windows 8 以降は、ランタイム電源管理フレームワーク (PoFx) によってコンポーネント レベルの電源管理もサポートされるようになっています。 コンポーネント (サブデバイス) はデバイスを構成する機能的ハードウェア ユニットであり、同じデバイスにある他のコンポーネントとは無関係に電源投入や低電力状態への切り替えができます。 たとえば、オーディオ デバイスに再生用と録音用として別々のコンポーネントを備え、それらの電源状態を互いに独立して管理できるようにすることが考えられます。 再生用コンポーネントを使用しているときは録音用コンポーネントをアイドル状態に置くことで、再生用コンポーネントの動作を損なうことなく、録音用コンポーネントを低電力状態に切り替えることができます。

デバイス ドライバーを PoFx に登録して、デバイスの個々のコンポーネントによる消費電力を個別に管理します。 PoFx は、可搬型 Windows コンピューター、タブレット、スマートホンなど、モバイル デバイスのバッテリー駆動時間を延長するうえで必要となる緻密な制御を提供します。 PoFx は、常時電源オンで接続状態になっているモバイル デバイスの表示が大きく変化しない方法でその消費電力を低減します。

一般的に、ドライバーはコンポーネントの電源状態として F0 や F1 などいくつかをサポートしています。F0 は全面的にオンの状態です。 F0 状態はすべてのコンポーネントでサポートされています。 デバイスのコンポーネントの電源ポリシー所有者 (PPO) であるドライバーは、コンポーネントが備える低電力 Fx 電源状態を定義します (多くの場合、デバイスのファンクション ドライバーが PPO です)。このドライバーは、コンポーネント単位で低電力 Fx 状態の数と各 Fx 状態の属性を判断します。 このドライバーが定義する Fx の状態は、同じデバイスであってもコンポーネントごとに異なることがあります。

PoFx はデバイス ドライバー インターフェイス (DDI) を提供します。ドライバーは、DDI を通じてデバイスの各コンポーネントの状態と機能の情報を提供できます。 この情報には、以下が含まれます。

  • 現時点における各コンポーネントのアクティビティ レベル
  • ある電源状態から別の電源状態への変更でコンポーネントが必要とする時間
  • コンポーネントが低電力状態から復帰するときにデバイスのクライアントが許容できる待機時間

さらに、コンポーネントが属する電源とクロックの領域に関する情報が PoFx によってシステム規模で取得されます (特定の電源領域にある複数のデバイスは共通の電源レールを共有し、特定のクロック領域にある複数のデバイスは共通のクロック信号を共有します)。

PoFx は、コンポーネントが低電力状態になる条件や移行すべき低電力状態につき、この情報に基づいてインテリジェントな判断を下します。 この判断プロセスでは、他のコンポーネントと他のデバイスから得られた情報が扱われ、さまざまな電源領域とクロック領域におけるデバイスとコンポーネントとの依存関係が考慮されます。

PoFx の使用を開始する際は「デバイスの電源管理リファレンス」と「コンポーネント レベルの電源管理」を参照してください。