【特別企画】
|
Windows Vistaが一般販売され4カ月あまりが経ち、その出荷本数はWindows XPを上回ると言うが、個々の機能や仕様について理解されていない点もまだ多くある。本連載では、その代表的なものについて説明したい。第1回はWindows Acceleratorと呼ばれる、メモリ周りの高速化機能について取り上げる。
Windows Vistaには、PCの性能を向上させるための「ReadyBoost」と呼ばれる技術が標準搭載されている。これは、USBフラッシュメモリなどをキャッシュ的に利用するものだが、フラッシュメモリなら何でもいいというわけではない。ここでは、その動作の仕組みや、仕様について紹介する。
●ユーザーの行動パターンを利用する「SuperFetch」
ReadyBoostがどのようにしてPCの性能を向上させているかを理解するには、まず「SuperFetch」技術を知る必要がある。
過去のWindowsに搭載されていたメモリ管理技術は、物理メモリの空き容量がない状態で、アプリケーションからメモリの要求があった際、メモリ上の最近利用されていないデータをHDD上のページファイルに移動させることで、メモリを解放していた。つまり、要求に応じたページング(On-demand Paging)となる。
Windows Vistaのタスクマネージャ。ここの物理メモリのキャッシュ済みがSuperFetchされたメモリの容量 |
一方、Windows Vistaのメモリ管理技術であるSuperFetchには、追跡アルゴリズムが追加された。これは、フォアグラウンドアプリケーション、日時、ユーザーがPCを使っている状態かどうかなどを判断してページングを行なうものだ。
例えば、会社で12時から昼食に出かけ、その間にウイルスチェックやバックアップなどのタスクをスケジューリングしているという状況を例に挙げると、Windows XPでは、アイドル時のタスクにメモリを割り当て、それまでフォアグランドで作業していたアプリケーションデータはHDDに待避させる。そのため、昼食から戻ってきて、作業を再開しようとすると、その時点で初めてアプリケーションデータをHDDから読み込むため、作業を開始するのに待たされる。
SuperFetchでは、過去のユーザー行動のパターン(ここでは、ユーザーが作業を再開する時間やアイドル後に行なう作業内容)を記憶しているため、アイドルタスクが終了次第、HDDに待避させていたアプリケーションデータをメモリに読み戻すので、ユーザーが戻ってきた時には、即座にアプリケーションが反応するという具合だ。
ほかの例では、この追跡アルゴリズムは、アプリケーションの利用頻度も見ている。XPでは、過去のデータから順にメモリからHDDへ待避させるが、Vistaでは利用頻度の高いタスクをなるべくメモリに保持するようになっているため、それらの起動時間が改善される。
もう1つのSuperFetchの特徴として、メモリに空き容量がある場合、積極的にメモリに読み込む。よく「Windows Vistaを使っていると、空きメモリが全くなくなる」と言われることがある。もちろんVistaの使う/要求するメモリ容量が増えたのは事実だが、多くのメモリを搭載したPCでも空きメモリがなくなるのは、SuperFetchが利用しているからであり、これが原因でメモリが逼迫して性能が落ちると言うことにはならず、むしろ性能向上に寄与しているのである。
●フラッシュメモリでSuperFetchを活用するReadyBoost
そして、メインメモリに加え、SuperFetchをフラッシュメモリ上でも利用するのがReadyBoost機能だ。なお、ここでいうフラッシュメモリとは、Microsoftの資料では、PCI/PCI Express/SSAバスに接続されたUSBフラッシュドライブ/SDカード/CF/メモリースティックとなっている。
Windows Vistaは、フラッシュメモリの接続を認識すると、その転送速度を計測し、4KBランダムリードが2.5MB/sec、512KBランダムライトが1.75MB/sec以上ある場合、そのデバイスがReadyBoost対応であるとみなす。ただし、この値は最低限のもので、推奨スペックは前者が5MB/sec、後者が3MB/secとなっている。
ReadyBoostで利用できる容量は230MBから4GB。推奨容量はメインメモリと同容量で、3倍の容量で最適な性能になるとしている。逆に言うと、4KBランダムリードが2.5MB/sec未満だったり、容量が230MB未満のフラッシュメモリはReadyBoost用に利用できない。こういった性能は製品の仕様書には書かれていないことが多いが、ReadyBoost対応を謳った製品ではこのスペックを満たしている。
注意が必要なのは、SDカードやメモリースティックなどのカード型メモリの場合で、カードが持つ転送速度が高速でも、カードアダプタの転送速度がReadyBoostの要求するスペックを満たさないことがある。
ReadyBoostの具体的な使用方法は、フラッシュメモリを接続した際に表示される「自動再生」のオプションで「システムの高速化-Windows ReadyBoost使用」を選択すると、デバイスのプロパティ画面が開き、ReadyBoostに利用する容量の割り当てができる。
ReadyBoostを有効にすると、HDD上に待避されたページングファイルのコピーがフラッシュメモリ上に自動的に作成される。フラッシュメモリの性能は製品ごとにまちまちだが、フラッシュメモリはHDDと違って機械的なシーク動作や回転の待ち時間がないため、ランダムアクセスはHDDより高速だ。そのため、SuperFetchデータがHDDに待避された後に、再度読み込む場合、ReadyBoost対応メモリがあると待ち時間が短縮される。
Microsoftが行なったテストによると、メインメモリ512MBでReadyBoostデバイスがないPCの場合約42秒かかる読み込み作業が、512MBのReadyBoostメモリにより、約27秒に短縮されたという。なお、1GBの場合は約25秒、2GBの場合は約24秒となっており、1GB以上の費用対効果は低いように見えるが、これはマシンの構成や状況などによって変わってくる。
なお、ReadyBoost上のSuperFetchデータは1/2に圧縮されて記録される。128bit AESで暗号化されるため、紛失してもセキュリティリスクは少ない。また、HDDの後にSuperFetchデータが書き込まれるリードキャッシュなので、いつ抜いてもデータがシステムから失われることはないほか、慎重な書き込みアルゴリズムにより、通常は数年間の利用に耐えうると言う。
ちなみに、ReadyBoost用に使えるフラッシュメモリデバイスは1台だけとなっている。
●性能と省電力性を向上させる「ReadyDrive」
もう1つSuperFetchに関連するのが、フラッシュメモリなど不揮発性キャッシュ(NV Cache)を搭載するハイブリッドHDD用の「ReadyDrive」機能だ。
ReadyDriveでは、HDDに内蔵されたNV Cacheを、HDDのファームウェア、ライトキャッシュ、Windows HotStartやPCメーカー独自のアプリケーション/データ、SuperFetchに利用する。ちなみに、Windows HotStartとは、特定のホットキーを押すなどして、電源OFFないしはスリープ状態のPCから瞬時にメディアプレーヤーなどを呼び出す機能。
ReadyDrive用NV Cacheの最低容量は50MBで、最大容量は2TB。推奨される最低容量は128MBで、最適な性能を得るためには256MBから1GBが推奨となる。ちなみに、NV Cacheの割り当ては、1GBの場合で、24MBまでがHDDのファームウェア、32MBがライトキャッシュ、1MB+[(NV Cacheの容量-100)/2]がHotStartなど、残りがSuperFetch用となっている。
Windows Vistaロゴが与えられるハイブリッドHDDは、4KBランダムリードが4MB/sec以上、4KBランダムライトが4MB/sec以上、64KBシーケンシャルリードが16MB/sec以上、64KBシーケンシャルライトが8MB/sec以上を満たす。
ReadyDriveも、シーケンシャルアクセスではメリットは薄いが、ランダムアクセスで大きなメリットが得られ、Outlookの起動では、通常のHDDで21.6秒かかるところが、8.4秒にまで短縮されるという。NV Cacheは電源OFFでも保持されるため、OSの起動時間も短縮される。
メインメモリにSuperFetchデータが作られていない状態での起動時間の変化 | ランダムI/O負荷が高い状態での起動時間の変化 |
また、ReadyDriveは、ATA8-ACS規格に準拠したNV Cacheコマンドを利用し、HDDのモーターの駆動頻度を可能な限り抑えるため、ノートPCではバッテリ駆動時間についても恩恵を受けられるほか、HDDの寿命も延びる。Microsoftのテストでは消費電力を12%低減できるとしている。
ReadyDriveもNV Cacheへの書き込みや消去を制限することで、NV Cacheの寿命はHDD自体の耐久年数より長くなると言う。
なお、Windows Vistaが対応するハイブリッドHDDの台数は1台で、システムドライブにする必要がある。
Microsoftでは、SuperFetch、ReadyBoost、ReadyDriveの3つをあわせて「Windows Accelerator」と称しており、全てを組み合わせて利用することでより高い性能が得られるとしている。
●実際の性能を検証
それでは、実際にSuperFetchとReadyBoostがどれくらい効果があるものなのか。検証してみたい。検証に使ったのはソニーのノートPC「VAIO type SZ (VGN-SZ90PS)」で、CPUはCore Duo T2400(1.83GHz)、HDD 100GB(ST9100824AS)、OSはWindows Vista Ultimate、フラッシュメモリはメモリースティックPROデュオ 2GB(SanDisk Ultra II)、カードリーダはバッファローのUSB 2.0接続MCR-C30H/U2-BKを使用した。このノートPCにはメモリースティックデュオスロットがあり、ReadyBoostにも対応しているのだが、メモリカードへのアクセス状況(LEDの点滅)を見るためにこのカードリーダを使っている。ReadyBoostの割り当て容量はOSが推奨とした1,840MBにしてある。
テスト内容は、PCを通常起動した後に、Outlook 2007、Paint Shop Pro Photo XI、iTunes 7.2それぞれを単独で起動し、その起動にかかる時間を手動計測した。また、Outlook、iTunes、Word 2007、Excel 2007、OneNote 2007、Adobe Reader 8、Sleipnirを全て起動させた状態で、Paint Shop Proの起動にかかる時間も計測した。メインメモリを1GB×1の状態でテストした結果が表1だ。
Outlook | Paint Shop Pro | iTunes | Paint Shop Pro高負荷 | |
---|---|---|---|---|
ReadyBoostなし | 16.19 | 41.03 | 16.94 | 38.68 |
ReadyBoostなし/OS起動直後 | 48.72 | 64.75 | 38.88 | 34.59 |
ReadyBoostあり | 15.66 | 19.75 | 12.08 | 32.65 |
ReadyBoostあり/OS起動直後 | 68.72 | 60.75 | 22.03 | 63.72 |
まず、ReadyBoostなしとありの場合を比べてみると、Paint Shop Proで50%以上の起動時間短縮が見られ、そのほかの場合も確実な効果が出ている。
ここでOS起動直後の状況でもテストを行なったのは、SuperFetchの効果を見るためである。SuperFetchは、OS起動後に過去の追跡内容をベースに、空きメモリにデータを先読みするので、OS起動直後と一定時間が経った後(具体的には空きメモリが0に近づいた時点)との差が、おおむねSuperFetchの効果といえる。
ReadyBoostなしの状況に於けるSuperFetchの効果を見てみると、Outlookの起動時間がおよそ1/3にまで短縮されている。ここで注意したいのが、ReadyBoostありでOS起動直後の場合だ。ReadyBoostなしの場合と比較すると、ありの方が圧倒的に遅くなっているケースがある。これは、OS起動直後のいくつかのプロセスやSuperFetchの構築に加え、ReadyBoostによるHDD読み込みとフラッシュメモリ書き込みのI/O負荷が加わったことが影響したようだ。
これは、使っているPCやカードリーダ、フラッシュメモリの性能などによって大きく変わってくるが、今回のマシンではReadyBoostによってフラッシュメモリにSuperFetchデータが書き込まれる間、CPU負荷が2~3割程度になっていた。ちなみに、1,840MBの書き込みが終わるまでは約7分かかった。つまり、PC起動後、数分間はReadyBoostがPCの性能を低減させることがあるということだ。
とはいえ、ノートPCの場合、電源OFFではなく休止やスタンバイを多く使うだろう。リムーバブルメディア扱いというフラッシュメモリの性格上、休止やスタンバイからの復帰後もReadyBoostキャッシュは自動的にゼロから再書き込みが行なわれるが、その時、普段使用しているアプリケーションはすでに立ち上がっていると思われるので、さほど問題にはならないだろう。また、ReadyBoostの割り当てを減らせば、書き込みにかかる(負荷の高い)時間はその分短縮できる。
なお、ReadyBoostとReadyDrive用に利用できる「Intel Turbo Memory」は、原則としてマザーボードに直付けされ、取り外しができない。そのため、Intel Turbo Memoryでは起動/復帰後の書き込みが不要となる。
メインメモリ2GB(1GB×2)での結果は表2の通り。ここでもReadyBoostの効果は出ているが、SuperFetchの効果がさらに向上しているのが容易に見て取れる。ちなみに、計測は複数回行なっているが、ReadyBoostあり/OS起動直後のPaint Shop Pro高負荷において想定されるより短い結果となっている。原因は不明だが、本環境における結果ととらえていただきたい。
Outlook | Paint Shop Pro | iTunes | Paint Shop Pro高負荷 | |
---|---|---|---|---|
ReadyBoostなし | 4.69 | 9.81 | 5.29 | 5.57 |
ReadyBoostなし/OS起動直後 | 11.44 | 21.37 | 8.53 | 21.38 |
ReadyBoostあり | 3.87 | 8.44 | 5.25 | 5.50 |
ReadyBoostあり/OS起動直後 | 43.59 | 43.81 | 10.75 | 6.81 |
□Windows Vistaのホームページ
http://www.microsoft.com/japan/windows/products/windowsvista/
□関連記事
【5月9日】インテル、「Santa Rosa」こと新Centrino Duoを正式発表
http://pc.watch.impress.co.jp/docs/2007/0509/intel.htm
【5月9日】【多和田】Intelの新Centrino Duoプラットフォーム「Santa Rosa」の機能を見る
http://pc.watch.impress.co.jp/docs/2007/0509/tawada103.htm
【2006年5月18日】Samsung、Windows Vista用NANDメモリ搭載Hybrid HDD
http://pc.watch.impress.co.jp/docs/2006/0518/samsung.htm
(2007年6月5日)
[Reported by [email protected]]