その中の1つが「Windows SuperFetch」。これはユーザーのアプリケーション利用パターンを学習して、よく使うものを優先的にメインメモリーに読み出す仕組みだ。
SuperFetchを理解するために、一般的なアプリケーションの動作を復習しておこう。アプリケーションのプログラム本体や各種のデータはハードディスク(HDD)に保存されており、利用時にメインメモリーに読み出される。各アプリケーションをメインメモリーのどこに、いつ読み出すかはWindowsが制御する。
多数のアプリケーションが立ち上がるなどしてメインメモリーがいっぱいになると、WindowsはHDDの一部を代替的なメモリー(仮想メモリー)として利用する。メインメモリー上のデータのうち、使われていないものを一時的に仮想メモリーに移し、必要に応じて再びメインメモリーに読み出すというわけだ。このメインメモリーとHDD(仮想メモリー)間でのやり取りを「スワップ」と呼ぶ。仮想メモリーにはメインメモリーよりはるかに大きな領域を使えるという利点があるが、HDDにアクセスする時間を要する分、アプリケーションの動作は遅く感じられる。
メモリーの状態を最適化
SuperFetchでは、「メインメモリー上にそのアプリケーションが存在する時間の長さを記録。ユーザーのアプリケーション利用パターンを数週間分、データベース化する」(マイクロソフト)。このデータベースを基に、よく使うアプリケーションをメインメモリー上に前もって読み出したり、優先的に保持したりする。週末と平日での利用パターンの変化にも対応するという。
【数週間分のアプリケーション利用パターンをデータベース化】 |
つまり、適切なファイルを適切なタイミングでメインメモリー上に置いておくことで、アプリケーションの起動時間短縮や、複数のアプリケーションを切り替えながら使う場合の反応速度向上を図る。
パソコンを起動したまま、しばらくユーザーが作業をしなかった場合、バックグラウンドで動くアプリケーションがメインメモリーを占めてしまうことがある。例えば会社で会議のために離席した間に、ウイルス対策ソフトの定期スキャンやユーティリティソフトの自動バックアップ機能が働き、ユーザーが使っていたアプリケーションのファイルがHDDにスワップされてしまうといった場合だ。今までは、離席前に実行していた作業に戻ろうとすると、HDDからメインメモリーへのデータの再読み込みに時間がかかっていた。SuperFetchでは、バックグラウンドのアプリケーションの動作が終了すると、以前にユーザーが作業していた状態にメモリーを再構成する。
なお、SuperFetchの仕組みは「Windows ReadyDrive」や「Windows ReadyBoost」といった、Vistaが備えるほかのパフォーマンス向上機能とも連携する。