第112回:高速起動、レジュームを実現したWindows XPの仕組み



 Windows XPについては、以前、この連載の中で紹介したことが1度だけあったが、その製品版完成もいよいよ近くなっているようだ。米Microsoftは6月末にRC1(リリース候補第1版)を完成させ、その4週間後にはRC1で報告されたバグに対応したRC2が開発者向けに配布されている。同社の予定ではRC3のリリースは行なわれず、この後は最終的に品質を調整してRTM(製造工程向けリリース)へと向かうことになっている。この後にRC3がリリースされる可能性も否定できないが、RC2で大きな問題がなければ今月中にもRTMを経て、OEM各社への配布が行なわれることだろう。

 一連のRC版は、β2と比較してメモリ消費量、速度などの点で大きく改善されている。これらについては、ほかの総合誌などで数多くの記事が掲載されるだろう。そこで本連載では、起動速度、サスペンド/レジューム(Microsoftの資料ではスタンバイ/レジュームと記されているが、ここではサスペンドと表記する)、ハイバネート/レジュームの速度にフォーカスして、Windows XPがいかにして高速起動/レジュームを実現しているかを探ってみたい。


●PDAライクな使い勝手を

 MicrosoftはIntelなどと共同でEasy PCイニシアティブを立ち上げてから、一貫してPCの起動時間が遅いことが、使い勝手を大きく阻害していると話してきた。その対策の一環としてWindows Meでは、電源オンからの起動(コールドブート)速度を上げるための改良が施されたことは記憶に新しい。PCの初期化プロセスを改善して起動速度を速めるFast Boot BIOSと組み合わせれば、クリーンインストール状態で20~30秒でOSが立ち上がる。

 しかし、Windows 98の流れを汲むWindows Meは、サスペンド/レジューム、ハイバネート/レジュームの速度が遅い。この分野ではWindows 2000の方が遙かに高速だ。しかし、Windows 2000はOS全体のワーキングセットが大きいこともあり、コールドブートの速度は遅い。

 そこでWindows XPでは、コールドブートの速度ではWindows Me並、レジューム速度ではWindows 2000以上を目指して開発されている。特にサスペンド/レジューム速度に関しては「PDAライクな使い勝手」という言葉が、マーケティング担当者と、ドキュメントの双方で使われている。PDAライクな使い勝手とは、レジュームのトリガーが引かれると、(感覚的に)すぐその場でPCが使えるようになることを示す。

 実際、英語版RC1のリリース直前にサンフランシスコで行なわれたWindows XPの記者向け説明会では、サスペンドしたノートPCの液晶を開くとほぼ同時にデスクトップ画面が表示されるデモが行なわれている。

 本当にPDAライクな使い勝手が実現されれば、実際に持ち歩いて使用するノートPCの使い勝手が大きく向上することは間違いない。特に高機能なハンドヘルドPCのように扱われてきた1キログラム以下のノートPC市場は、再び初期Libretto時代のような活気を取り戻せる可能性もあるだろう。

 しかし、こうしたMicrosoftのアナウンスやデモは、そのまま額面通りに受け取っていいのだろうか?


●既存ノートPCでも3秒以内でレジューム

 Microsoftは高速レジュームが行なえる条件として、ドライバが高速レジューム/起動をサポートし、BIOSがACPI 2.0の最新リビジョンに完全対応していることを挙げている。特にドライバの品質はレジューム速度に大きく影響するという。

 Microsoftによると、Windows XPの仕様に合わせて作られたBIOSも、すでに一部ベンダーから配布されているとのことだったが、今回はそれらが入手できなかったため、手元にあるIBM ThinkPad X21、日立FLORA 220FX、NEC LaVie MX(LX60T51EC)の3台をそれぞれ最新BIOSへと更新し、英語版Windows XP最新リリースをインストールしてテストしてみた。

 なお、コールドブート、レジュームの速度や、各モジュールがどのように時間を使っているのかなどを分析するためのツール「Bootvis」が、Microsoftのハードウェア開発者向けサイト( http://www.microsoft.com/hwdev/fastboot/ )で配布されている。このサイトからは、高速起動やレジュームに関する詳細な仕組みを記載したドキュメントもダウンロード可能なので、興味があるなら一読することをオススメしたい(ドキュメントは英語だが、難しい記述は少ないため、大まかな内容は英語が不得手な人でも把握できるだろう)。

【お詫びと訂正】初出時、BootvisはWindows 2000でも動作するという記述がございましたが、Windows 2000では動作いたしません。お詫びして訂正させていただきます。

 さて、実際に計測してみたレジューム速度は、アプリケーションの起動状態など、Windowsのコンディションによって、やや幅のある値が出た。ThinkPad X21の復帰速度が、他機種と比較すると若干遅めではあるものの、その差は1秒以内。平均的には約3秒でレジュームしてくれる。対応BIOSならば1秒以内でレジューム、というMicrosoftの言葉もあながち嘘とは思えない結果だ。

 Windows 2000でも最適化された機種であれば、レジューム時間が5秒以内で終わるものもある。しかし、システムの状態によるレジューム時間の振れ幅が大きく、場合によっては数10秒もの時間がかかることもある。このあたりはそのノートPCに搭載されているBIOS側の問題であることも多いようだが、同様の現象がWindows XPではあまり見られない。Windows XPに施された何らかの改良が安定したレジューム時間を実現しているのかもしれない。

 Windows XPのレジューム時間短縮対策は、比較的地味なコツコツとした改良の積み重ねによって実現されている。これは元々、Windows 2000のレジュームが高速だったためだろう。ネットワークコンポーネントのNDIS.SYSが、ネットワーク接続の処理を完了させる前に制御をWindowsに戻し、優先順位の低いスレッドでバックグラウンド処理を行なうようになったほか、PCカードドライバ、キーボードドライバ、マウスドライバといった応答速度の遅いレガシーデバイスの初期化をバックグラウンド化させるなど、時間がかかることがあらかじめわかっているプロセスを、徹底して非同期にした結果、レジューム時間を改善している。

 これまで、レガシーデバイスはさまざまな面で“悪者”にされることが多かった。特にレジューム速度の観点から見ると、これらのデバイスは“できる限り存在しないのが望ましい”もの(コネクタの有無ではなく、システム上、存在しないことが望ましい)だった。しかし、これらの改良で特定の古いデバイスが存在しても、Windows側がそれらに対応してくれるようになったわけだ。また、ネットワークに接続されているからレジュームが遅い、といった現象もかなり減るものと思われる。


●使いたいと思えるようになったハイバネート

 これまで、僕はハイバネートという機能をあまり気に入っていなかった。なにしろ、BIOSが起動してブート開始までに時間がかかる上、その後にメモリ内容をハードディスクからロードしてレジュームプロセスに入る。その間、優に30秒を大きく上回る時間がかかることがほとんどだった。これではWindows Meがコールドブートする時間とさほど変わらない。

 ハイバネートの使い勝手が悪かった原因は大きく3つにわけられる。1つはBIOSの初期化プロセスが遅すぎたこと。これはFast Boot BIOSに置き替わっていくことで解決されるだろう。もう1つはWindowsのレジュームプロセスが遅かったこと。これもサスペンド/レジュームの説明で述べたように大きな改善が図られる。そして最後に、ハイバネートファイルへのアクセス速度が遅かったこと。この点に関しても、Windows XPではメスが入れられている。

 Windows 2000でのハイバネートファイルの読み書きは、互換性の観点からプログラムI/Oモードで行なわれていた。このため、近年のUltraDMAモードをサポートしたハードディスクの性能を生かしきっていなかった。Windows XPでは、DMAモードが有効なハードディスクに対してハイバネートファイルの読み書きを、可能な限り高速なDMAモードで行なうことにより高速化を図っている。

 ハイバネートファイル読み込みの実測値は、128MBメモリ搭載のFROLA 220FXでは約2秒、192MBメモリ搭載のLaVie MXで3秒、384MBメモリ搭載のThinkPad X21で11秒だ。ThinkPad X21が極端に遅い結果を出しているものの(この原因は執筆時点で不明)、ほかのシステムでの成績はノートPC用ハードディスクからの読み出しとしては高速と言えるだろう。

 また、Bootvisでの分析結果によるとハイバネートファイル読み込み後、システムが利用可能な状態になるまでの時間は、わずか1.69秒だった。したがって、128MBメモリ搭載のFROLA 220FXでは、ハイバネートファイル読み込みとレジューム処理時間を合計しても約3.7秒。これにBIOS初期化時間(FLORA 220FXの場合で約5秒)を合計すると、およそ8.7秒、少なくとも10秒以内には復帰することになる。

 8.7秒という高速なハイバネートモードからのレジュームは、Windows 98/Meでのサスペンド/レジューム時間にも匹敵する数字だ。これならば、ハイバネートモードも使いたいと思える。バッテリへの負荷なども考慮に入れると、ハイバネートモードの有用性は大きく向上すると言えよう。


●ノートPCの遅いディスクでも30秒で起動

 最後に起動時間の短縮も挙げておきたい。ノートPCの場合、特に安定度の高いWindows 2000、XPではコールドブートの機会はデスクトップPCよりも少ないと思われるが、こちらもかなりの高速化が図られている。Pentium IIIを搭載した2機種は、いずれもOSのロードが開始されてから28秒前後で起動が完了、Crusoe TM5600 600MHzのLaVie MXも31秒前後だった(ドメインネットワークに接続せず、特定アカウントへ自動ログインする設定でデスクトップが利用可能になるまでの時間。ハードディスクはいずれもIBM DJSA-220)。

 Windows 2000時のデータを計測していないのだが、その差はハッキリとわかる。この原稿を書いているPentium 4搭載でSeagate製Barracuda ATA IVを搭載するデスクトップPCでWindows 2000を起動するよりも、ずっと高速なのだ。

 これほど高速化を図ることができた背景には、起動プロセスの最適化がある。コールドブート時に、もっとも時間を使うプロセスはドライバの読み込みと初期化だ。各ドライバに制御を渡し、初期化が終了するまでは、次のドライバの初期化へと移れない。そして、どんなに高速なプロセッサを搭載していても、デバイスからの反応待ちが大半を占めるこのプロセスは高速化できない。

 そこでWindows XPでは、ドライバの初期化と並行してWindows XPの起動に必要なファイルをディスクからメモリ内へと先読みするように改良されている。先読み処理は各ファイルの位置を考慮しながら、ヘッドシークが最短になるようにメモリへと転送する。このため、各ファイルを個別に読み込みながら起動する場合と比較すると、ハードディスクからの読み込み時間が大きく短縮される。Bootvisでの分析結果を見ると、ドライバの初期化が終わる頃には、ノートPCの遅いハードディスクでも各モジュールの読み出しが完了していた。なお、メインメモリが128MBあれば、先読みすべきモジュールはすべて読み込まれるようだ。

 メモリ上に起動用ファイルが読み込まれてしまえば、残りのプロセスはほぼオンメモリで実行される。ログインプロセス時に若干のハードディスク読み込みが発生するが、基本的には起動ログなどの書き込み以外、ハードディスクへのアクセスは発生しないため、15~18秒でWindows起動の残りのプロセスが完了してしまう。

 このような結果から、コールドブート速度はディスク速度にほとんど依存せず(読み込み処理が前もって終了するため)、プロセッサ速度によって変化すると考えられる。たとえば、前出のPentium 4デスクトップPCでは20秒以下で起動した。コールドブートの機会が多く、よりプロセッサパワーが大きいデスクトップPCで、この機能が生かされることだろう。

バックナンバー

[Text by 本田雅一]


【PC Watchホームページ】


ウォッチ編集部内PC Watch担当 pc-watch-info@impress.co.jp

Copyright (c) 2001 impress corporation All rights reserved.