News 2001年3月30日 11:59 PM 更新

SpeedStep2もサポートするWindows XPの省電力機能

モバイルPIIIにはC0〜C3までの4つの動作モードがあるが,「Windows XP」ではC3をどのくらい利用するのかをプログラム可能になった。

 Windows 2000はプロセッサの電源管理において非常に優秀なOSだ。そう話しているのはMicrosoftの技術者だが,Intelなどが出している資料を見ても,Windows 2000は突出してプロセッサの省電力機能を使うのがうまい。細かなタイムスロットで3種類のプロセッサステータスを使い分け,プロセッサ動作時間のほどんどを電力を消費しないモードで過ごさせる。

 モバイルPentium IIIにはC0〜C3までの4つの動作モードがある。C0はフルスピードで動作している状態だが,C1はAutoHALTというモード,C2がQuickStart,C3がDeepSleepというモードだ。C1よりC2,C2よりC3の方が消費電力は少ない。しかし,C2はC0に復帰するときの速度がC1より遅く,C3はC2と比較してモードへ入る時も,C0に戻すときも両方遅くなってしまう。

 C2へのモード遷移がわずか10マイクロ秒,復帰が1マイクロ秒なのに対して,C3は両方とも100マイクロ秒以上かかってしまう。復帰時間は実に100倍だ。ちなみにC2時のプロセッサ消費電力が500ミリワット程度なのに対し,C3は250ミリワット以下になる。

 C2のQuickStartを使っているBIOSは多いが,C3のDeepSleepはほとんど使われない。これはBIOSからのコントロールでは,実行中プロセスの様子を把握できないため,積極的に省電力機能を使うのが難しいためだ。なにしろC3を多く使ってしまうと,そこからの復帰は遅くなってしまう。復帰時間が高速なC2まではBIOSでできても,C3はOSでなければ制御できない。

 にもかかわらず,Windows 2000は実に多くの場面でC3を使っている。Windows 2000になってバッテリー持続時間が長くなったと感じた人は正しい。理屈から言って,それは当然の結果なのだ。

 Windows XPでもこの機能は受け継がれているが,さらに推し進めてC3をどのくらい利用するのかをプログラム可能になった。以前はWindowsに最適と思われる値を設定していたが,Windows XPではCステートをどのように使うかがプログラム可能になる。このため,プロセッサの種類や速度に合わせてパラメータを変更するなど,条件や場面に応じて柔軟なコントロールが可能になっている。またCステートの運用ポリシーを設定するためのAPIがWinodpws XPに用意されており,アプリケーションサイドから動作方法を切り替えることもできる。

 また,IntelのSpeedStepやAMDのPowerNow!に見られるような,電圧とクロック周波数を切り替えることで,省電力とパワーのバランスを取る機能に対応している。ただし,こうした機能には共通のプラットフォームがないため,各プロセッサごとにドライバを用意することになっている。

 たとえば今回テストでWindows XPをインストールしたCompaqのARMADA M300の場合,搭載プロセッサはモバイルPentium III。実際にデバイスマネージャを探してみると,プロセッサという項目があり,そこにモバイルPentium IIIというアイテムが表示される。そして,このアイテムに適用されているドライバが,プロセッサスピードをコントロールするのだ。


テスト機ではほとんどの時間をC2(消費電力500ミリワット)で過ごしたが,これは現行チップセットとPentium IIIに最適化しているため。将来のチップセットでC3の実用性が増せば,C3を積極的に使うプロファイルを追加できる

 コントロールのポリシーはNon(何もしない,フルスピード),Constant(バッテリーに最適化されたモード),Adaptive(負荷状況に合わせて自動的に変速),Degrade(バッテリーに最適化されたモードで動作するが,バッテリー容量が少なくなるにつれてパフォーマンスを少しずつ落とす)の4種類が用意される。

 この中のAdaptiveは,TransmetaのCrusoeに搭載されるLogRunに似た機能を実現するもの。OS側でプロセッサ負荷をモニターしながら,負荷が大きくなると(CPUの利用率が上がると)自動的にプロセッサのパフォーマンスを上げる。逆だと下げるというわけだ。


Performanceを切り替える際のパラメータが既存のPentium IIIでも見受けられた

 早速,ARMADA M300にインストールしたWindows XPを調べてみると,(バグなのかもしれないが)SpeedStepではなくSpeedStep2のパラメータが設定されていた。実際には初代SpeedStepと同じ動きをしているため,SpeedStep2で動作しているわけではないが,スピードの段階が8つに設定されているのだ。

 さらに詳細を見ていくと,最も高速な場合の18%まで下げる設定になっているのが分かった。0.13μメートルプロセスのPentium IIIではSpeedStep2が導入されるが,Windows XPと組み合わせることで,長時間のバッテリー駆動と,負荷状況に応じたパフォーマンスを得ることができる。

[本田雅一, ITmedia]

Copyright © ITmedia, Inc. All Rights Reserved.