最近はハードウエアの性能が向上し、一昔前に比べてパソコンの動作はずいぶん速くなった。しかし、OSやアプリケーションを起動して使用可能になるまでの間や、複数のアプリケーションを切り替えて使う際などに「動作が重い」と感じることは今でもある。Windows Vistaには、こうした各種の待ち時間を短縮する仕組みが複数備わっている。

 その中の1つが「Windows SuperFetch」。これはユーザーのアプリケーション利用パターンを学習して、よく使うものを優先的にメインメモリーに読み出す仕組みだ。

 SuperFetchを理解するために、一般的なアプリケーションの動作を復習しておこう。アプリケーションのプログラム本体や各種のデータはハードディスク(HDD)に保存されており、利用時にメインメモリーに読み出される。各アプリケーションをメインメモリーのどこに、いつ読み出すかはWindowsが制御する。

 多数のアプリケーションが立ち上がるなどしてメインメモリーがいっぱいになると、WindowsはHDDの一部を代替的なメモリー(仮想メモリー)として利用する。メインメモリー上のデータのうち、使われていないものを一時的に仮想メモリーに移し、必要に応じて再びメインメモリーに読み出すというわけだ。このメインメモリーとHDD(仮想メモリー)間でのやり取りを「スワップ」と呼ぶ。仮想メモリーにはメインメモリーよりはるかに大きな領域を使えるという利点があるが、HDDにアクセスする時間を要する分、アプリケーションの動作は遅く感じられる。

メモリーの状態を最適化

 SuperFetchでは、「メインメモリー上にそのアプリケーションが存在する時間の長さを記録。ユーザーのアプリケーション利用パターンを数週間分、データベース化する」(マイクロソフト)。このデータベースを基に、よく使うアプリケーションをメインメモリー上に前もって読み出したり、優先的に保持したりする。週末と平日での利用パターンの変化にも対応するという。

【数週間分のアプリケーション利用パターンをデータベース化】
拡大表示

 つまり、適切なファイルを適切なタイミングでメインメモリー上に置いておくことで、アプリケーションの起動時間短縮や、複数のアプリケーションを切り替えながら使う場合の反応速度向上を図る。

 パソコンを起動したまま、しばらくユーザーが作業をしなかった場合、バックグラウンドで動くアプリケーションがメインメモリーを占めてしまうことがある。例えば会社で会議のために離席した間に、ウイルス対策ソフトの定期スキャンやユーティリティソフトの自動バックアップ機能が働き、ユーザーが使っていたアプリケーションのファイルがHDDにスワップされてしまうといった場合だ。今までは、離席前に実行していた作業に戻ろうとすると、HDDからメインメモリーへのデータの再読み込みに時間がかかっていた。SuperFetchでは、バックグラウンドのアプリケーションの動作が終了すると、以前にユーザーが作業していた状態にメモリーを再構成する。

 なお、SuperFetchの仕組みは「Windows ReadyDrive」や「Windows ReadyBoost」といった、Vistaが備えるほかのパフォーマンス向上機能とも連携する。