写真1●Windows 7で新たに用意する「Timer Coalescing」API<br>タイマーを実行するタイミングをまとめることで消費電力を抑える。
写真1●Windows 7で新たに用意する「Timer Coalescing」API<br>タイマーを実行するタイミングをまとめることで消費電力を抑える。
[画像のクリックで拡大表示]
写真2●Windows 7で搭載した消費電力の状態を調べるツールを実行した画面
写真2●Windows 7で搭載した消費電力の状態を調べるツールを実行した画面
[画像のクリックで拡大表示]
写真3●分析結果はHTML文書として確認できる
写真3●分析結果はHTML文書として確認できる
[画像のクリックで拡大表示]

 Windows 7では,電源管理を改善する各種の工夫を搭載することがわかった。PDC 2008のセッションで明らかにしたもの。主にアイドル時の消費電力を抑えることで,全体の消費電力削減を目指す。

 米MicrosoftがWindows 7の消費電力削減のために目をつけたのは,パソコン上で何も処理をしていないアイドル時のCPU使用率である。CPUの使用率を低くすればするほど,消費電力も抑えられる。Windows 7の目標としては,システム全体でアイドル時に2%以下の使用率を目指すという。ちなみに,何も追加ソフトを入れていないVista SP1では,アイドル時のCPU使用率が7%以下になるという。

 そのための工夫として,Windows 7ではポーリングの動作を最小限にする。ポーリングとは,システムの状態変更を検出するために実行する動作のこと。一定時間ごとに,関係する相手に「状態の変更はないか?」と問い合わせる動作をすることで,相手の状態が変わったことを検出する。だが,このポーリングこそが電力を消費する原因だと指摘する。問い合わせる回数を増やせば増やすほど,そのたびにCPUを利用して消費電力が増えるという。

 Windows 7では「ポーリングが必要な場合でも1秒間に1回までにしてほしい」(米MicrosoftのSenior Program ManagerであるPat Stemen氏)としている。例えば,そのためにWindows 7では電源の状態を通知してもらえるAPIを用意する。アプリケーションで,このAPIを使うように記述しておけば,いちいちポーリングしなくても,ノートをAC電源につなぐといった電源の状態変更があれば,システムから通知される。

 また,タイマーを利用するための「Timer Coalescing」という新しいAPIも用意する(写真1)。Coalescingとは「合体させる」という意味の英単語で,別々のアプリケーションから寄せられたタイマーの要求を,それぞれ別個のタイミングで実施するのではなく,同じタイミングとなるようにずらして実行するというものだ。こうすることで,CPUの空き時間を増やす。この工夫でバッテリー駆動時間を最大20%伸ばす効果があるという。

 Windows 7自身でも,同様の工夫を実施して消費電力を減らす。例えば,システムに組み込むサービスについても,必要があった場合のみに起動する「トリガー・スタート」と呼ぶモデルに変わる。周辺機器が追加・削除されたり,IPアドレスの設定が変更された場合などに,そのときに必要となったサービスを読み込んで起動する。なお,この工夫はWindows 7で起動時間を短縮することにもつながる。すぐに必要ではないサービスについては最初に読み込まないようになるので,システムの起動時間が短縮できるのだ。

電力の消費状態を調べるツールを用意

 Windows 7では,消費電力に関する状態を調べる新しいツールを追加している。具体的には,コマンド・ラインから「Powercfg /ENERGY」と実行すると,システムの状態を1分間調べる(写真2)。その分析結果はHTMLの形で保存され,簡単に確認することができる(写真3)。

 なお,Microsoftではアイドル時の消費電力を調べられる「Windows Performance Tool Kit」(XPerf)というツールもWeb上で公開している(該当サイト)。このツールは,Windows 7だけでなく,Windows Vistaでも利用できる。