電力効率と汎用性に優れた Windows の実現

Building Windows 8

Windows エンジニアリング チームによるブログ

電力効率と汎用性に優れた Windows の実現

  • Comments 1

この記事では、電力消費量を抑える OS の開発という幅広いトピックを扱います。OS における電源管理の重要性は、2 つの観点から高まり続けています。まず、Windows 8 が市場に出る際、出荷される全 PC の 3 分の 2 が、常時であれ部分的にであれバッテリで駆動されるポータブル デバイスとなることは容易に推定できます。第二に、あらゆる場面で電力の節約が求められており、職場でもカーボン フットプリントの小さいデスクトップ マシンへの需要が高まっています。いずれの場合についても、スタンバイ/休止/再開の際のパフォーマンスといったレベルを超えて、OS 全体の電力消費量削減や、近代的なハードウェアの節電性能への対応について考える必要があり、この記事ではそういった点に迫りたいと思います。今回の記事は Kernel (カーネル) チーム所属のプログラム管理者である Pat Stemen が執筆しました。
--Steven

バッテリ寿命と電力消費量というトピックは、コンピューター業界において非常に重要な地位を占め続けています。この記事では、Windows 8 における電源管理の考え方と、私たちが毎日行っている電力消費量計測の方法についてご紹介したいと思います。Windows において、電源管理は OS のコア性能の一つであり、チップ アーキテクチャや PC のフォーム ファクターを問わず、きわめて重要な要素として捉えています。

目標

Windows 8 の電源管理は、次の 3 つの目標を念頭に設計しています。

  • ハードウェアを活かす。Windows 8 は、SoC ベースの Windows タブレットであろうと、SLI 搭載のゲーム用 PC であろうと、そのハードウェア プラットフォームの節電能力を十分に活用できるように設計されています。すべてのプラットフォームに一貫して、標準化された電源管理のインターフェイスが使用されており、ハードウェア パートナーやアプリケーション開発者が、各プラットフォームのハードウェアや電源管理面の差異に気を取られることなく、独自のイノベーションやエクスペリエンスの提供に注力できるようになっています。
  • 優れたバッテリ寿命を維持する。Windows 7 では電力消費量が大幅に低減され、エネルギー効率が大きく向上しました。特にモバイル PC のバッテリ寿命には大きな改善が見られました (Windows 7 におけるエネルギー効率に対する考え方については e7 ブログの記事で詳しくご覧いただけます)。Windows 8 では、OS の他の部分で大幅な刷新を行いつつも、既存の PC を使用しても同等の電力効率を実現できるようにしたいと考えています。
  • スマートフォンの電力モデルを組み込む。CES (英語) と //BUILD/ (英語) でご紹介したとおり、System-on-Chip (SoC) プラットフォームの最も魅力的な点の一つは、電力消費量のきわめて低いアイドル状態にすばやく移行できることです。この利点を活かし、常時接続とインスタント オンを実現するスマートフォンの電力モデルを、Windows 8 PC にも組み込みたいと考えています。

電源管理が重要な理由

優れた電源管理がもたらすメリットの一つは言うまでもないでしょう。モバイル デバイスのバッテリ寿命が延びることです。モバイル コンピューティング デバイスのバッテリ寿命は非常に厳しい目で評価されますが、こういったデバイスをバッテリで使用する場面が増え続けていることを考えれば、これは当然と言えます。優れたバッテリ寿命を安定的に実現するには、基礎となるハードウェア、オペレーティング システム、アプリケーション ソフトウェアの間で、さまざまな調整を精密に行う必要があります (バッテリ自体の容量と長期的な品質も駆動時間に大きく影響します)。

モバイル デバイスのバッテリ寿命に次ぐ明確なメリットは、電力コストの削減と環境負荷の低減です。企業で使用するデスクトップ PC やデータセンターのサーバーの電源管理を改善するメリットは、通常、これらのシステムへの電力供給と冷却にかかるコストの削減と、発電による温室効果ガス発生の抑制という形で捉えられます。この点での影響力は軽視しがたいものです。Windows は非常に広く使用されているため、たとえとても小さな変更でも、うまく行うことができれば、環境への影響を大きく改善することができるのです。世界中の多くの市場において、増加し続ける電力消費量に伴い、企業にもあらゆる面で節電を求める声が高まっています。電力削減の対象として PC は重要な要素です。

電源管理にはまた、システムのパフォーマンスや応答性との微妙なバランスが求められます。たとえば、プロセッサのパフォーマンスを抑えれば簡単に電力を節約することができますが、一方で処理にかかる時間は長くなります。電力とパフォーマンスのバランスをうまく取ることは、Windows のユーザー エクスペリエンスにおける重要な要件の一つと言えます。

最新のプロセッサやハードウェア プラットフォームをレビューする技術関連のブログを見ても、クロック数やベンチマークでパフォーマンスを測るだけでなく、負荷の処理に必要な電力量にも注目することが多くなっています。こういった計測方法は、電力消費量とパフォーマンスを合わせてエネルギー効率、つまり一定の作業負荷の処理にかかる電力のコストを測るものです。"ワットあたりのパフォーマンス" と表現されることもあります。

しかし私たちが最もすばらしいと感じるのは、電源管理が PC のプラットフォーム デザインのあらゆる側面において非常に重要な要素であるという点です。電源管理は、デバイスの厚さ、重量、静音性 (冷却ファンとその回転速度)、表面温度、価格、画面サイズ、解像度、RAM 容量といったさまざまな要素に、直接影響を及ぼします。薄くて軽く、常時接続が可能で、一日中バッテリで駆動できるハードウェアを実現するのは、クールなことです。Windows のエコシステムでそれを可能にする取り組みに参加できることを、私たちは誇りに思っています。

リソースとしての電力

私たちは電力を、CPU 使用率やハード ディスク アクティビティ、メモリ消費量などと同様に、重要なシステム リソースの一つと捉えています。Windows 8 の各デイリー ビルドで消費電力を毎日トラッキングしているのもこのためです。トラッキングを行うことで、電力消費量に生じた変化をすばやく発見することができ、開発チームと緊密に連携して問題の根本原因を特定し、必要な変更を行ってテストしていくことができます。電力消費量の削減に成功すれば、それが翌日以降のデイリー ビルドに対する新しい基準値となります。

一つ一つの Windows PC における具体的な電力消費量 (何ミリワット、など) は、CPU とチップセット、RAM の種類と量、ストレージ デバイスの速度と種類と容量、画面のサイズなど、プラットフォームのさまざまな要素に左右されます。

一貫した基準を設定するため、Windows 8 の開発プロセスを通して基準とするプラットフォームのセットを決めて、電力消費量を計測しています。各基準プラットフォームは、ユーザーが一般的に使用するさまざまなマシンの種類を代表するもので、主立ったシリコン チップ製造パートナーはすべてカバーされています。Windows 7 および Windows 7 SP1 の電力消費量を基準値として使用し、開発プロセスを通して Windows 8 の各ビルドの値と比較しています。

Windows 8 の各ビルド (8074 ~ 8144) のアイドル時の電力消費量を示したグラフ。値はほぼ 9,000 ~ 10,000 mW の範囲内にあるが、ビルド 8114 では 10,500 mW を大きく超える突出した値が見られる。
ラボで計測された、ある基準プラットフォームのアイドル時におけるシステムの総消費電力。
ある変更によって 1.25 W 程度の上昇が起こり、後続ビルドでは修正されていることがわかる。
注: 各実行時やビルド間である程度の差異が見込まれる

各基準システムで、さまざまなソフトウェア負荷の消費電力が計測されます。適用する負荷は、サード パーティのバッテリ ベンチマークと同様、ユーザーがマシンで日々行う作業を反映することを目指して設計されています。主な負荷には、アイドル、Web ブラウズ、ビデオ再生、オーディオ再生、スタンバイなどがあります。

アイドル時の負荷での消費電力に手間をかけるのは意味がないように思われるかもしれません。確かに、マシンを起動して [Start] (スタート) 画面の前で何もせずに座っているというケースはあまりないはずです。にもかかわらずアイドル時の負荷が重要なのは、それがシステムの消費電力の底辺、つまり動作中のシステムが消費する最低限の消費電力を規定することになるからです。アイドル時の消費電力を削減することは、ビデオ再生やオーディオ再生など、他の多くの負荷状態での基本的な電力消費量を削減することになります。また、負荷パターンの多くには、アイドル状態となる時間もかなり含まれます。タイピングの際のキー入力とキー入力の間の短い時間から、プレゼンテーションで次のスライドに切り替えるまでの何分かの時間まで、さまざまなケースがこれに当��はまります。

モバイル PC の消費電力を計測する一般的な方法として、バッテリ寿命のランダウン テストがあります。バッテリを 100% まで充電してから、0% になるまで負荷を繰り返すというものです。この方法は有効ではありますが、バッテリは充電と放電のサイクルを繰り返すたびに自然と劣化し、容量が落ちていくため、誤差が生じやすくなります。ランダウン テストを行うたびに充電/放電サイクル数が蓄積することになり、しかもテストは毎日行うので、バッテリの劣化によって徐々に計測値がずれていってしまいます。

私たちが使用しているパフォーマンス ラボには、各基準プラットフォームに DC 電源を直接供給し、同時に消費量を計測するシステムが設置されています。このラボの存在と全体的な能力については IE ブログに投稿したブラウザーの電力消費に関する記事 (英語) で触れたのですが、基準に使用するいくつかのノート PC を実際に設置して、消費電力を毎日計測していることにまでは言及していませんでした。電源装置と計測機能はテスト用ソフトウェアによって自動化されており、Windows 8 の新しいビルドができるたびにインストールし、各シナリオの電力を計測し、結果を分析するという作業を継続的に行うことができます。

DC 電力使用量を計測する機器でいっぱいになったラック
計測機能を組み込まれた DC 電源装置

Windows 8 を実行中のノート PC。電力消費量を計測するボックスに接続されている
DC 電源の供給と測定が行われている基準プラットフォーム

ソフトウェアによる消費電力への影響

CPU、ディスク、メモリ等のリソースはそれぞれ対応する電力コストを持つため、これらを消費するソフトウェアも、電力消費量に影響します。また、ソフトウェアは、OS やハードウェアの電力状態を管理するドライバーを通して電力消費量に影響を与えます。

Windows 8 には、ソフトウェアによる電力消費への影響を改善するために、3 つの重要なイノベーションが組み込まれています。Metro スタイル アプリ モデル、アイドル状態の保全、そしてデバイスのランタイム電源管理のための新しいフレームワークです。ここでは、これらがどのように電力消費量の改善に寄与しているかを簡単にご紹介したいと思います。

Metro スタイル アプリ モデル

ソフトウェアによる電力消費量への影響は、直接体験したことのある方が多いかと思います。たとえば、携帯電話で特定のアプリを使用するとバッテリの消耗が激しくなったり、ゲームをプレイしたりスプレッドシートで計算を行ったときにノート PC の冷却ファンが動きだすことがあります。いずれもアプリケーションが CPU、GPU、ネットワーク タイム、ディスク、メモリなどの消費に直結している例です。

Windows 8 の電源管理に関するイノベーションの一つは、電源管理インフラストラクチャの機能ではなく、Metro スタイル アプリというモデルそのものです。Metro スタイル アプリ モデルは、当初から電力効率を念頭に設計されています。このモデルによる電源管理面のメリットは、開発者がアプリケーションを適切なタイミングでしか動作しないように設計するのが容易になっている点です。バックグラウンドにあるアプリケーションは休止され、使用しない間はリソースや電力を消費しない状態になります。

もちろん、アプリでの常時接続や応答性確保には、バックグラウンドでのアクティビティも欠かせない要素です。Metro スタイル アプリ モデルとその基礎となる WinRT では、"バックグラウンド タスク" と呼ばれる一連の新しい機能によって、バックグラウンド アクティビティに対応します (詳細についてはこちらの「Introduction to Background Tasks (バックグラウンド タスクの概要)」(英語) を参照してください)。バックグラウンド タスクの導入により、バックグラウンドのアクティビティを電力効率に優れた方法で行うことが容易になります。また、これらの機能によって、開発者はアプリケーションでこれまでのような優れた応答性と "新鮮さ" を提供することができますが、そのメカニズムは既存の Win32 モデルとは異なります。これはすばやく滑らかなインターフェイスや Metro スタイル アプリのその他の特性を実現するためです (「8 traits of great Metro style apps (優れた Metro スタイル アプリの 8 つの特色)」(英語) をご覧ください)。

バックグラウンド タスクをはじめとする Metro スタイル アプリの全体的なモデルは、アプリで新しいレベルの応答性を実現しつつ、電力やメモリの消費量などの全体的なシステムの特性にも配慮したものとなっています。

[Processes] (プロセス) タブの詳細表示ビューで、休止中の Metro スタイル アプリをいくつか表示したようす。いずれも CPU 使用率は 0% で、メモリ使用量は 17 ~ 85.1 MB。
休止中のアプリが表示されたタスク マネージャー

アイドル状態の保全

ソフトウェアでは、断続的なアイドル アクティビティにおけるリソース消費を抑えることでも、劇的に電力消費量を改善することができます。こういったアイドル アクティビティの改善を、私たちはアイドル状態の保全と呼んでいます。

ほとんどの PC プラットフォームでは、アイドル状態に対応したプロセッサとチップセットを使用しており、ハードウェア プラットフォーム側でクロックを停止したり、使用されていないシリコン チップへの電力供給を完全にオフにすることができるようになっています。こういったアイドル状態を利用することはバッテリ寿命の改善に不可欠ですが、それには最低限の持続時間が必要です。つまり、電力消費量の面でアイドル状態への切り替えに意味を持たせるには、アイドル状態がある程度持続しなければならないということです。これは、アイドル状態への移行と復帰の際にも電力が消費されるためです。アイドル状態からの復帰が少なく、アイドル状態の持続時間が長いほど効果的です。

Windows 8 のアイドル時の効率性のトラッキングには、組み込みの ETW トレース (英語)、Windows Performance Analyzer (英語) に追加されたいくつかの機能、そして基本的なヒストグラムを使っています。次のグラフは Windows 7 と Windows 8 とでアイドル状態の持続時間を比較したものです。画面がオンの状態での持続時間は、Windows 7 では 15.6 ミリ秒が上限だったのに対し、Windows 8 では 35% が 100 ミリ秒を超えるという成果を既に達成しています。画面がオフの状態や Connected Standby (接続維持スタンバイ) の状態では持続時間はさらに長く、現時点で何十秒という長さを実現しています。

画面がオンの状態における Windows 7 と Windows 8 のアイドル期間の長さを比較したグラフ。Windows 7 では約 95% が 10 ~ 16 ミリ秒だが、Windows 8 ではこの範囲にあるのは約 35%。

デバイスのランタイム電源管理

PC のバッテリ寿命は、プロセッサ、ストレージ、周辺機器などを含むすべてのデバイスが低電力モードに入った場合に最も長くなります。近代的な PC では、大部分のデバイスがなんらかの電源管理テクノロジを備えています。ユーザー エクスペリエンスに影響を与えることなくこれらのテクノロジをシームレスに利用する方法を規定するのが、デバイスのランタイム電源管理です。Windows 7 のディスプレイ暗転タイムアウト設定は、デバイスのランタイム電源管理の好例です。

デバイスの電源管理の重要性を示す例として、ある 1 つのデバイス電源管理機能を有効にしないだけで、多くのシステムでバッテリの総寿命が最大 25% も短くなったというデータがあります (なお、デバイス マネージャーによってデバイスを無効にすると、これに近いレベルの悪影響があります。多くのデバイスはファームウェアによる初期化の段階では最も消費電力が多い状態になっており、電力消費量を抑えるにはデバイス ドライバーが必要なためです)。デバイスの電源管理に関する一部の問題は、Windows 7 に組み込みの powercfg.exe に /ENERGY パラメーターを付けて使用することで診断が可能です。/ENERGY を使用すると HTML ファイルが出力され、電力消費の多い状態で実行されている可能性のあるデバイスやソフトウェアを確認することができます。ただし、ほとんどの場合において、OEM やベンダーが提供するドライバーが使用されている工場出荷時イメージのまま使用するのが、PC 上のデバイスの電源管理の面で最良なのは言うまでもありません。

デバイスの優れた電源管理は、そのデバイスのドライバーと、Windows のカーネル電源マネージャーおよびプラットフォームのハードウェアとの連携によって実現されます。電源マネージャーは、これらのデバイス ドライバーの電源管理ルーチンの組み込みを容易にし、電力状態の遷移をプラットフォーム上の他のデバイスとすり合わせます。

Windows 8 ではデバイスの電源管理の新しいフレームワークが導入されており、すべてのデバイスがそれぞれの電源管理機能を明示することができ、Power Engine Plug-in (PEP) と呼ばれる、SoC システム向けに設計された特別なドライバーがこれらを統合するようになっています。PEP はシリコン チップの製造元によって提供され、SoC 固有の電源管理要件をすべて把握しています。これによって、USB ホスト コントローラーやキーボード ドライバーといったデバイス ドライバーが、SoC ベースの PC からデータセンターのサーバーに至るすべてのプラットフォームに 1 種類のビルドで対応し、最適な電源管理を行うことが可能になります。

だれもが望む節電性能やバッテリ寿命を Windows 8 PC でお届けできるよう、Windows のエコシステムに参加するすべてのパートナーと共に努力を続けています。

--Pat Stemen

  • Loading...
Leave a Comment
  • Please add 4 and 1 and type the answer here:
  • Post