(57)【要約】【課題】回転式ストレージデバイス（例えば、ハードドライブ）のセクタをキャッシュするために外部メモリデバイスを利用して、システムパフォーマンスを改善するためのシステムおよび方法を提供すること。【解決手段】外部メモリデバイス（ＥＭＤ）が、コンピューティングデバイス、またはコンピューティングデバイスが接続されたネットワークに接続されたとき、システムは、ＥＭＤを認識し、ディスクセクタによってＥＭＤをポピュレートする。システムは、ディスクセクタに対するＩ／Ｏ読取り要求を、実際のディスクセクタの代わりにＥＭＤキャシュに向けて送る。ＥＭＤの使用は、コンピューティングデバイスにメモリを追加するコストに対してわずかのコストで、コンピューティングデバイスシステムにおけるパフォーマンスおよび生産性を向上させる。【選択図】図２
2006134321.tif 000002
【特許請求の範囲】
【請求項１】
外部メモリデバイスを使用して、回転式ストレージデバイスを有するコンピューティングデバイスのパフォーマンスを改善するための方法であって、
前記外部メモリデバイスが、いつ前記コンピューティングデバイスによって使用可能であるかを検出するステップと、
前記外部メモリデバイスを前記回転式ストレージデバイスのセクタのコピーによってポピュレートするステップと、
前記セクタ上に格納されたデータを要求する、前記コンピューティングデバイスまたはアプリケーションからのＩ／Ｏ読取り要求を、透過的に、前記外部メモリデバイスから読みとるように、前記コンピューティングデバイスまたは前記アプリケーションに対してリダイレクトするステップとを備えることを特徴とする方法。
【請求項２】
前記外部メモリデバイスを、前記回転式ストレージデバイスのセクタによってポピュレートするステップは、前記外部メモリデバイスを、ハードドライブとマルチメディアドライブのうちの一方のセクタのコピーによってポピュレートするステップを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記外部メモリデバイスを、前記回転式ストレージデバイスのセクタによってポピュレートするステップは、使用状況のヒストリが使用可能であるかどうかを検出するステップと、
前記外部メモリデバイスを、おそらく使用されたと前記ヒストリによって示されたセクタのコピーによってポピュレートするステップとを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記使用状況のヒストリが使用可能でない場合、前記コンピューティングデバイスまたは前記アプリケーションによってアクセスされるセクタのコピーによって、前記外部メモリデバイスをポピュレートするステップをさらに備えることを特徴とする請求項３に記載の方法。
【請求項５】
前記外部メモリデバイスのためのドライバをインストールするステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項６】
前記外部メモリデバイスは、複数の外部メモリデバイスを含み、前記方法は、前記複数の外部メモリデバイスの他の外部メモリデバイスと比較して、より良好な帯域幅およびレイテンシを有する前記複数の外部メモリデバイスの外部メモリデバイス上で最もアクセスされることが見込まれるセクタをポピュレートすることによって、前記複数の外部メモリデバイスにインストールされるセクタの優先順位を付けるステップを
さらに備えることを特徴とする請求項１に記載の方法。
【請求項７】
書込みオペレーションが、いつ前記外部メモリデバイスにコピーされている前記回転式ストレージデバイスのセクタに向けられているかを検出するステップと、
前記回転式ストレージデバイスの前記セクタにおいて前記書込みオペレーションをインスタンス化するステップと、
前記書込みオペレーションが完了した後、前記メモリデバイス上に前記セクタをコピーするステップとをさらに備えることを特徴とする請求項１に記載の方法。
【請求項８】
前記外部メモリデバイスが、いつ前記コンピューティングデバイスによってもはや使用可能でないかを検出するステップと、
前記外部メモリデバイス上にコピーされたセクタ上のデータを求める、前記コンピューティングデバイスまたはアプリケーションからのＩ／Ｏ読取り要求を、前記回転式ストレージデバイスから読み取られるように方向付けるステップとをさらに備えることを特徴とする請求項１に記載の方法。
【請求項９】
前記外部メモリデバイスは、複数の外部メモリデバイスを含み、
前記外部メモリデバイスのうちの１つが、いつ前記コンピューティングデバイスによってもはや使用可能でないかを検出するステップと、
前記外部メモリデバイスのうちの前記１つが、前記複数の外部メモリデバイスのうち最も低速の外部メモリデバイスでない場合、残りの外部メモリデバイスを、前記回転式ストレージデバイスのセクタによって再ポピュレートするステップとをさらに備えることを特徴とする請求項１に記載の方法。
【請求項１０】
前記外部メモリデバイスを、前記回転式ストレージデバイスのセクタによってポピュレートするステップは、
どのセクタがアクセスされることが見込まれるかを予測するステップと、
前記外部メモリデバイスを、アクセスされることが見込まれるセクタによってポピュレートするステップとを含むことを特徴とする請求項１に記載の方法。
【請求項１１】
前記コンピューティングデバイスが、いつパワーダウンするまたはハイバネーションに入るかを検出するステップと、
構成データを有するセクタを、前記外部メモリデバイス内にコピーして、それにより、前記構成データが、前記回転式ストレージデバイスのスピンアップ時間とおよそ等しい初期化時間を有するようにするステップと、
前記コンピューティングデバイスのブートと、前記コンピューティングデバイスのハイバネーションからの回復の少なくとも一方の際に、前記回転式ストレージデバイスがスピンアップしている間に、システムメモリ内に前記外部メモリデバイス内の前記構成データを初期化するステップとをさらに備えることを特徴とする請求項１に記載の方法。
【請求項１２】
前記外部メモリデバイスを、前記回転式ストレージデバイスのセクタの前記コピーによってポピュレートするステップは、前記外部メモリデバイスを、前記回転式ストレージデバイスのセクタの前記コピーによって非同期でポピュレートするステップを含むことを特徴とする請求項１に記載の方法。
【請求項１３】
外部メモリデバイスを利用して、回転式ストレージデバイスを有するコンピューティングデバイスのパフォーマンスを改善するためのシステムであって、
前記コンピューティングデバイスのメモリマネージャおよび前記回転式ストレージデバイスと通信する外部メモリデバイスマネージャモジュールを含み、前記外部メモリデバイスモジュールは、
前記外部メモリデバイスが、いつ前記コンピュータデバイスによって使用可能であるかを検出するステップと、
前記外部メモリデバイスを、前記回転ストレージデバイスにあるセクタのコピーによってポピュレートするステップと、
前記セクタに格納されたデータを要求する、前記コンピューティングデバイスまたはアプリケーションからのＩ／Ｏ読取り要求を、前記外部メモリデバイスから読み取られるようにリダイレクトするステップ
とを含むステップを実行するためのコンピュータ実行可能命令を含む少なくとも１つのコンピュータ可読媒体を有することを特徴とするシステム。
【請求項１４】
前記外部メモリデバイスを、前記回転式ストレージデバイスのセクタによってポピュレートするステップは、
使用状況のヒストリが使用可能であるかどうかを検出するステップと、
前記外部メモリデバイスを、使用されることが見込まれる前記ヒストリによって示されるセクタのコピーによってポピュレートするステップとを含むことを特徴とする請求項１３に記載のシステム。
【請求項１５】
前記外部メモリデバイスマネージャモジュールは、前記複数の外部メモリデバイスの他の外部メモリデバイスと比較して、より良好な帯域幅およびレイテンシを有する前記複数の外部メモリデバイスの外部メモリデバイス上で最もアクセスされることが見込まれるセクタをポピュレートすることによって、前記複数の外部メモリデバイスにインストールされるセクタの優先順位を付けるステップを含むステップを実行するためのコンピュータ実行可能命令をさらに有することを特徴とする請求項１３に記載のシステム。
【請求項１６】
前記外部メモリデバイスは、前記システムとリモートで接続されることを特徴とする請求項１３に記載のシステム。
【請求項１７】
前記回転式ストレージデバイスは、ハードドライブおよびマルチメディアドライブのうち少なくとも一方を含むことを特徴とする請求項１３に記載のシステム。
【請求項１８】
セクタの前記コピーは、前記マルチメディアドライブによって必要とされるフォーマットで書き込まれることを特徴とする請求項１７に記載のシステム。
【請求項１９】
前記外部メモリデバイスは、前記コンピューティングデバイスのＵＳＢ２（ユニバーサルシリアルバス２）に接続されることを特徴とする請求項１３に記載のシステム。
【請求項２０】
請求項１に記載のステップを実行するためのコンピュータ実行可能命令を有することを特徴とする少なくとも１つのコンピュータ可読媒体。
【請求項２１】
前記外部メモリデバイスを、前記回転式ストレージデバイスのセクタによってポピュレートするステップは、前記外部メモリデバイスを、ハードドライブとマルチメディアドライブのうちの一方のセクタのコピーによってポピュレートするステップを含むことを特徴とする請求項２０に記載の少なくとも１つのコンピュータ可読媒体。
【請求項２２】
前記外部メモリデバイスを、前記回転式ストレージデバイスのセクタによってポピュレートするステップは、
使用状況のヒストリが使用可能かどうかを検出するステップと、
前記外部メモリデバイスを、使用されることが見込まれると前記ヒストリによって示されたセクタのコピーによってポピュレートするステップとを含むことを特徴とする請求項２０に記載の少なくとも１つのコンピュータ可読媒体。
【請求項２３】
前記使用状況のヒストリが使用可能な場合に、前記コンピューティングデバイスまたは前記アプリケーションによってアクセスされるセクタのコピーによって、前記外部メモリデバイスをポピュレートするステップを含むステップを実行するための、コンピュータ実行可能命令をさらに有することを特徴とする請求項２２に記載の少なくとも１つのコンピュータ可読媒体。
【請求項２４】
前記外部メモリデバイスのためのドライバをインストールするステップを含むステップを実行するためのコンピュータ実行可能命令をさらに有することを特徴とする請求項２０に記載の少なくとも１つのコンピュータ可読媒体。
【請求項２５】
前記外部メモリデバイスは、複数の外部メモリデバイスを含み、前記複数の外部メモリデバイスの他の外部メモリデバイスと比較して、より良好な帯域幅およびレイテンシを有する前記複数の外部メモリデバイスの外部メモリデバイス上で最もアクセスされることが見込まれるセクタをポピュレートすることによって、前記複数の外部メモリデバイスにインストールされるセクタの優先順位を付けるステップを含むステップを実行するためのコンピュータ実行可能命令をさらに有することを特徴とする請求項２０に記載の前記少なくとも１つのコンピュータ可読媒体。
【請求項２６】
書込みオペレーションが、いつ前記外部メモリデバイスにコピーされている前記回転式ストレージデバイスのセクタに向けられているかを検出するステップと、
前記回転式ストレージデバイスの前記セクタにおいて前記書込みオペレーションをインスタンス化するステップと、
前記書込みオペレーションが完了した後、前記メモリデバイス上に前記セクタをコピーするステップとを含むステップを実行するためのコンピュータ実行可能命令をさらに有することを特徴とする請求項２０に記載の少なくとも１つのコンピュータ可読媒体。
【請求項２７】
前記外部メモリデバイスが、いつ前記コンピューティングデバイスによってもはや使用可能でないかを検出するステップと、
前記外部メモリデバイス上にコピーされたセクタ上のデータを求める、前記コンピューティングデバイスまたはアプリケーションからのＩ／Ｏ読取り要求を、前記回転式ストレージデバイスから読み取られるように方向付けるステップとを含むステップを実行するためのコンピュータ可読命令をさらに有することを特徴とする請求項２０に記載の少なくとも１つのコンピュータ可読媒体。
【請求項２８】
前記外部メモリデバイスは、複数の外部メモリデバイスを含み、
前記外部メモリデバイスのうちの１つが、いつ前記コンピューティングデバイスによってもはや使用可能でないかを検出するステップと、
前記外部メモリデバイスのうちの前記１つが、前記複数の外部メモリデバイスのうち最も低速の外部メモリデバイスでない場合、残りの外部メモリデバイスを、前記回転式ストレージデバイスのセクタによって再ポピュレートするステップとを含むステップを実行するためのコンピュータ実行可能命令をさらに含むことを特徴とする請求項２０に記載の少なくとも１つのコンピュータ可読媒体。
【請求項２９】
前記外部メモリデバイスを、前記回転式ストレージデバイスのセクタによってポピュレートするステップは、
どのセクタがアクセスされることが見込まれるかを予測するステップと、
前記外部メモリデバイスを、アクセスされることが見込まれるセクタによってポピュレートするステップとを含むことを特徴とする請求項２０に記載の少なくとも１つのコンピュータ可読媒体。
【請求項３０】
前記コンピューティングデバイスが、いつパワーダウンするまたはハイバネーションに入るかを検出するステップと、
構成データを有するセクタを、前記外部メモリデバイス内にコピーして、それにより、前記構成データが、前記回転式ストレージデバイスのスピンアップ時間とおよそ等しい初期化時間を有するようにするステップと、
前記コンピューティングデバイスのブートと、前記コンピューティングデバイスのハイバネーションからの回復の少なくとも一方の際に、前記回転式ストレージデバイスがスピンアップしている間に、システムメモリ内に前記外部メモリデバイス内の前記構成データを初期化するステップとを含むステップを実行するためのコンピュータ実行可能命令をさらに有することを特徴とする請求項２０に記載の少なくとも１つのコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータシステムに関し、より詳細には、コンピュータシステムのパフォーマンスを改善することに関する。
【背景技術】
【０００２】
パーソナルコンピュータ、ゲームコンソール、およびスマートフォンなどのコンピューティングデバイスは、アプリケーションによって使用されたページを、メモリにロードしてキャッシュするために、しばしば、時間のかかるプロセスを利用する。これらのページは、通常、磁気ハードディスク（例えば、ハードドライブ）のような回転式の不揮発性媒体に記憶される。しかし、コンピューティングデバイスのプロセッサは、ＤＲＡＭや他のタイプの揮発性電子メモリのようなアドレス可能メモリのみからの命令を実行する。コンピューティングデバイスにおいて使用されるオペレーティングシステムは、アプリケーションによって使用されるページをメモリにキャッシュして、アプリケーションが、回転式媒体から頻繁にページをロードする必要がないようにする。  
【０００３】
【特許文献１】米国特許出願第１０／８３７９８６号明細書「Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｃａｓｈｅ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｉｍｐｒｏｖｅｍｅｎｔ」、２００４年５月３日出願
【特許文献２】米国特許出願第１０／３２５５９１号「Ｍｅｔｈｏｄｓ  ａｎｄ  Ｍｅｃｈａｎｉｓｍｓ  ｆｏｒ  Ｐｒｏａｃｔｉｖｅ  Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ」、２００２年１２月２０日出願
【特許文献３】米国特許出願第１０／１８６１６４号明細書、「Ａｐｐａｒａｔｕｓ  ａｎｄ  Ｍｅｔｈｏｄ  ｔｏ  Ｄｅｃｒｅａｓｅ  Ｂｏｏｔ  Ｔｉｍｅ  ａｎｄ  Ｈｉｂｅｒｎａｔｅ  Ａｗａｋｅｎ  Ｔｉｍｅ  ｏｆ  ａ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ」、２００２年６月２７日出願
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ハードドライブからのページの転送は、速度が遅く、特に、大きいファイルをアプリケーションがロードするときに遅い。これは、一般に、コンピュータシステムをハイバネートモード（ｈｉｂｅｒｎａｔｅ  ｍｏｄｅ）から回復するときにも当てはまる。転送時間の重要な１つの因子は、ディスクドライブのスピンアップ速度である。比較的遅いＲＰＭで回転する比較的小さいディスクは、スピンアップするために５から６秒を必要とし、それから使用可能になる。複数プラッタ（ｍｕｌｔｉ−ｐｌａｔｔｅｒ）のデバイスのような、より大きなディスク、および、より速いＲＰＭで回転するディスクは、スピンアップするために１０から１２秒またはそれより長い時間を必要とする。
【０００５】
この問題は、セキュリティフィックス（ｓｅｃｕｒｉｔｙ  ｆｉｘ）を組み込むためアプリケーションのサイズが大きくなり信頼性が高くなるに従って悪化する。これらのアプリケーションは、継続的にデータを回転式記憶媒体へ／から転送することを必要とすることなく動作するために、より大きなメモリを必要とすることが多い。しかし、マシンのメモリのアップグレードは、会社およびユーザが引き受けるにはコストが高く、個々のユーザの技術レベルを超えることが多い。メモリそれ自体のコストが低くても、各マシンを物理的に開いてＲＡＭを追加することに関する労力およびダウン時間によって、数百ドルのコストを費やすこともある。
【０００６】
マシンのメモリのアップグレードによって負担するコストがしばしば高くなりすぎる他の問題は、システムが、ときとして通常よりも大きく複雑なアプリケーションを実行することを求められる場合に起きる。例えば、会社の経理スタッフが、１ヶ月に数回、統合アプリケーションを実行する必要がある場合である。より大きくより複雑なアプリケーションは、効率的に動作するために追加のメモリを必要とする。メモリそれ自体のコストが低くても、各マシンを物理的に開いてＲＡＭを追加することに関する労力およびダウン時間によって、数百ドルのコストを費やすことがある。このようなコストは、アプリケーションが実行されるわずか数回のためにメモリを追加することを正当化することができない。
【課題を解決するための手段】
【０００７】
本発明は、（揮発性または不揮発性の）外部メモリデバイスを利用して、ハードディスク（すなわちディスクセクタ）、および／またはより低速のメモリコンポーネントからセクタをキャッシュして、システムのパフォーマンスを改善する、システム、方法、およびメカニズムを提供する、改善されたメモリ管理アーキテクチャに関する。外部メモリデバイス（ＥＭＤ）が、コンピューティングデバイスにプラグインされる、またはコンピューティングデバイスが接続されたネットワークに接続されると、システムは、ＥＭＤを認識し、ディスクセクタおよび／またはメモリセクタによってＥＭＤをポピュレートする。システムは、Ｉ／Ｏ読取り要求を、実際のセクタの代わりにＥＭＤキャッシュに対するセクタに向けて送る。ＥＭＤが、ＵＢＳ２ローカルバスに接続されている場合、アクセス時間は、ハードディスクから読み取るよりも２０倍速くなりうる。ＥＭＤのこのような使用は、コンピューティングデバイスにメモリを追加するコストのほんのわずかのコストで、コンピューティングデバイスシステム上のパフォーマンスおよび生産性を向上させる。さらに、例えばＸｂｏｘ（登録商標）などの家庭用装置が、ＥＭＤのメモリによって、よりリッチなソフトウェアを実行することができる。
【０００８】
システムは、いつコンピューティングデバイスに関してＥＭＤが最初に使用されるかについて検出を行う。ＥＭＤのタイプが検出され、ＥＭＤ上のディスクセクタをキャッシュするために使用されるドライバがインストールされる。ドライバが、非同期キャッシュとしてＥＭＤを使用して、任意のディスク、および／またはシステム上のより低速のメモリデバイスから、セクタをキャッシュする。頻度の高いアクセスという点からどのセクタが重要であるかについて事前に知識がない場合、システムは、コンピューティングマシン上のデータを用いて、ＥＭＤキャッシュをポピュレートするためにどのセクタが使用されるかを決定する。あるいは、システムは、稼動中に特定のセクタがアクセスされたとき、その特定のセクタによって、ＥＭＤキャッシュをポピュレートする。その特定のセクタが読取りオペレーションのために次にアクセスされるとき、システムは、ＥＭＤにおけるコピーにアクセスするために読取りオペレーションを検出する。
【０００９】
システムは、使用パターンを追跡し、どのディスクセクタが、最も頻繁にアクセスされるかを決定することができる。ＥＭＤの次の使用では、システムは、ＥＭＤに取り込むために最も頻繁にアクセスされたセクタをキャッシュする。コンピューティングデバイスがパワーアップしたときにＥＭＤが存在する場合、オペレーティングシステムの始動時に、ＥＭＤを予めポピュレートすることができる。
【００１０】
本発明の追加の特徴および利点は、添付の図面を参照して行われる例示的実施形態の以下の詳細な説明から明らかにされよう。
【００１１】
添付の特許請求の範囲により、本発明の特徴が精密に示されるが、本発明ならびにその目的および利点は、添付の図面と関連した以下の詳細な説明から最も良く理解することができる。
【発明を実施するための最良の形態】
【００１２】
本発明は、ハードディスク（すなわちディスクセクタ）またはより低速のメモリデバイスからセクタをキャッシュするために、（揮発性または不揮発性の）外部メモリデバイスを利用して、システムのパフォーマンスを改善する、システム、方法、およびメカニズムを提供する、改善されたメモリ管理アーキテクチャに関する。例えば、多くの種類のポータブルコンピューティングデバイスは、ハードドライブまたは回転式媒体記憶装置を有していないが、階層的メモリアーキテクチャを実装している。これらのポータブルコンピューティングデバイスは、本発明により、職場においてより大規模で複雑なエンタープライズアプリケーション（ｅｎｔｅｒｐｒｉｓｅ  ａｐｐｌｉｃａｔｉｏｎ）を実行することが可能になるという点で、本発明の利益を大いに得ることになる。８０２．１１ｎの出現により、任意の無線デバイスに対して２００〜５００Ｍｂの無線接続が利用可能となり、外部メモリデバイス、および／またはネットワークベースのメモリサーバの使用は、システムのパフォーマンスを改善することになる。
【００１３】
外部メモリは、データへのアクセスの速度が概してより遅いデバイスからデータをキャッシュするために使用され、したがって、アプリケーション／オペレーティングシステムによって使用されるデータに対して、より迅速にアクセスすることができるようになり、それによってパフォーマンスが改善される。実際のＲＡＭを追加することに非常にコストがかかる、より古いコンピューティングデバイスについては、外部メモリデバイスの使用によって、わずかなコストで、より古いデバイスのパフォーマンスおよび生産性を向上させ、ユーザが、既存のハードウェア上でより新しいソフトウェアの信頼性、セキュリティ、および生産性の向上の利益を得ることを可能にする。例えば、Ｘｂｏｘ（登録商標）などの家庭用デバイスは、改善されたグラフィックスおよびパフォーマンスという点から、よりリッチなソフトウェアを実行することによって利益を得る。さらに、この目的のために必要なメモリの量は、システムを所与のレベルまで更新するために必要なメモリ量よりはるかに少ないことが見込まれる。
【００１４】
図面を参照すると、同様の参照番号は、同様の要素を指し示しており、本発明は、適切なコンピューティング環境で実装されるものとして例示されている。本発明は、必ずしもそうである必要はないが、パーソナルコンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的コンテキストで説明される。一般に、プログラムモジュールは、特定のタスクを実行し、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、およびデータ構造などを含む。さらに、本発明を、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラマブルの家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、およびメインフレームコンピュータなどを含めた他のコンピュータシステム構成によって実施することもできることは、当業者には理解されよう。本発明は、通信ネットワークを介してリンクされたリモート処理装置によってタスクが実行される、分散コンピューティング環境において実施することもできる。分散コンピューティング環境では、ローカルとリモートの両方のメモリ記憶装置に、プログラムモジュールを配置することができる。
【００１５】
図１は、本発明が実装されうる適切なコンピューティングシステム環境１００の一例を示す。コンピューティングシステム環境１００は、適切なコンピューティング環境の一例に過ぎず、本発明の使用または機能の範囲に関してどんな限定も示唆するものではない。また、コンピューティング環境１００は、例示的動作環境１００に示すコンポーネントのいずれか１つまたは組み合わせに関係する、どのような依存性または要件も有していると解釈されるべきではない。
【００１６】
本発明を、他の多数の汎用または専用のコンピューティングシステム環境または構成で使用することができる。本発明での使用に適切となり得る周知のコンピューティングシステム、環境、および／または構成の例には、以下に限定されないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、タブレットデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家庭用電化製品、ネットワークＰＣ、ゲームコンソール、スマートフォン、ＰＤＡ、ミニコンピュータ、メインフレームコンピュータ、および、上記の任意のシステムまたは装置を含む分散コンピューティング環境などが含まれる。
【００１７】
本発明は、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的コンテキストで説明することができる。一般に、プログラムモジュールは、特定のタスクを実行し、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、およびデータ構造などを含む。本発明は、通信ネットワークを介してリンクされたリモート処理装置によってタスクが実行される、分散コンピューティング環境において実施することもできる。分散コンピューティング環境では、メモリ記憶装置を含め、ローカルおよび／またはリモートのコンピュータ記憶媒体に、プログラムモジュールを配置することができる。
【００１８】
図１を参照すると、本発明を実装するための例示的システムが、コンピュータ１１０の形態で汎用コンピューティングデバイスを含んでいる。コンピュータ１１０のコンポーネントには、以下に限定されないが、処理装置１２０、システムメモリ１３０、ならびに、システムメモリから処理装置１２０までも含め様々なシステムコンポーネントを結合するシステムバス１２１が含まれうる。システムバス１２１は、様々なバスアーキテクチャのうち任意のアーキテクチャを使用した、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含めて、いくつかのタイプのうちの任意のバス構造とすることができる。このようなアーキテクチャには、限定ではなく例として挙げれば、ＩＳＡ（業界標準アーキテクチャ）バス、ＭＣＡ（マイクロチャネルアーキテクチャ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ））バス、ＥＩＳＡ（拡張ＩＳＡ）バス、ＶＥＳＡ（ビデオ電子規格協会）ローカルバス、ＵＳＢ（ユニバーサルシリアルバス）、および、メザニン（Ｍｅｚｚａｎｉｎｅ）バスとしても知られるＰＣＩ（周辺コンポーネント相互接続）バスが含まれる。
【００１９】
コンピュータ１１０は、通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１１０がアクセスすることができる任意の利用可能な媒体とすることができ、それには、揮発性と不揮発性の両方の媒体、および、リムーバルと固定の両方の媒体が含まれる。限定ではなく例として挙げると、コンピュータ可読媒体には、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を格納するための任意の方法または技術で実装される、揮発性および不揮発性のリムーバルおよび固定の媒体が含まれる。コンピュータ記憶媒体には、以下に限定されないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、または他のメモリ技術、あるいは、ＣＤＲＯＭ、ＤＶＤ（デジタル多用途ディスク）、または他の光ディスクストレージ、あるいは、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気ディスク記憶装置、あるいは、所望の情報を格納するために使用することができコンピュータ１１０によってアクセスすることができる他の任意の媒体が含まれる。通信媒体は、通常、搬送波または他の移送メカニズムなどの変調されたデータ信号として、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを具体化し、また任意の情報送達媒体を含む。用語「変調されたデータ信号」は、信号として情報を符号化するようにセットまたは変更された１つまたは複数の信号特性を有する信号を意味する。限定ではなく例として挙げると、通信媒体には、有線ネットワークまたは直接配線接続などの有線媒体、ならびに、音響、ＲＦ、赤外線、および他の無線媒体などの無線媒体が含まれる。上記の媒体の任意の組み合わせも、コンピュータ可読媒体の範囲に含まれることになる。
【００２０】
システムメモリ１３０は、コンピュータ記憶媒体を、ＲＯＭ（読取り専用メモリ）１３１およびＲＡＭ（ランダムアクセスメモリ）１３２などの揮発性および／または不揮発性のメモリの形態で含む。始動時などにコンピュータ１１０内の要素間で情報を転送する助けとなる基本ルーチンを含むＢＩＯＳ（基本入出力システム）１３３は、通常、ＲＯＭ１３１に格納されている。ＲＡＭ１３２は、通常、処理装置１２０により、即座にアクセス可能および／または現在処理中である、データおよび／またはプログラムモジュールを含む。図１は、限定ではなく例として、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７を示す。
【００２１】
コンピュータ１１０は、他のリムーバル／固定、および揮発性／不揮発性のコンピュータ記憶媒体を含むこともできる。単に例として示すが、図１では、固定で不揮発性の磁気媒体から読み取りまたはそれに書き込むハードディスクドライブ１４１、リムーバルで不揮発性の磁気ディスク１５２から読み取りまたはそれに書き込む磁気ディスクドライブ１５１、および、ＣＤ−ＲＯＭまたは他の光媒体などリムーバルで不揮発性の光ディスク１５６から読み取りまたはそれに書込みを行う光ディスクドライブ１５５を示している。例示的動作環境において使用することができる他のリムーバル／固定で揮発性／不揮発性のコンピュータ記憶媒体には、以下に限定されないが、磁気テープカセット、フラッシュメモリカード、ＤＶＤ、デジタルビデオテープ、半導体ＲＡＭ、および半導体ＲＯＭなどが含まれる。ハードディスクドライブ１４１は、通常、インターフェース１４０などの固定メモリインターフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は、通常、インターフェース１５０などのリムーバルメモリインターフェースによってシステムバス１２１に接続される。
【００２２】
前述の図１に示すドライブおよび関連するコンピュータ記憶媒体は、コンピュータ１１０のための、コンピュータ可読命令、データ構造、プログラムモジュール、および他のデータ（例えば、マルチメディアデータ、音声データ、ビデオデータなど）のストレージを提供する。例えば、図１では、ハードディスク１４１が、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７を格納するものとして図示されている。これらのコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７と同じにすることも異なるようにすることもできることに留意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７には、これらが少なくとも互いに異なるコピーであることを示すために、ここでは異なる番号を与えている。ユーザは、マウス、トラックボール、またはタッチパッドとして通常表されるポインティングデバイス１６１、キーボード１６２、マイク１６３、および、タブレットまたは電子デジタイザ１６４などの入力装置を介して、コマンドおよび情報をコンピュータ１１０に入力することができる。他の入力装置（図示せず）には、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナなどが含まれうる。上記その他の入力装置は、多くの場合、システムバスに結合されたユーザ入力インターフェース１６０を介して処理装置１２０に接続されるが、パラレルポート、ゲームポート、またはＵＳＢ（ユニバーサルシリアルバス）など他のインターフェースおよびバス構造によって接続してもよい。モニタ１９１または他のタイプの表示装置も、ビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続される。モニタ１９１は、タッチスクリーンパネルなどと一体化することもできる。タブレット型のパーソナルコンピュータなどでは、モニタおよび／またはタッチスクリーンパネルは、コンピューティングデバイス１１０を内蔵するハウジングに物理的に結合することができることに留意されたい。さらに、コンピューティングデバイス１１０などのコンピュータは、スピーカ１９７およびプリンタ１９６など他の出力周辺装置を含むこともでき、これらは、出力周辺装置インターフェース１９４などを介して接続することができる。
【００２３】
コンピュータ１１０は、リモートコンピュータ１８０など１つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク化された環境で動作することもできる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の共通ネットワークノードとすることができ、図１にはメモリ記憶装置１８１のみが示されているが、通常、コンピュータ１１０に関係する上述の要素の多くまたは全部を含む。図１に示す論理接続は、ＬＡＮ（ローカルエリアネットワーク）１７１、およびＷＡＮ（広域ネットワーク）１７３を含むが、他のネットワークを含むこともできる。このようなネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいて一般的なものである。例えば、コンピュータ１１０は、発信元マシンを含み、データは発信元マシンから移行され、リモートコンピュータ１８０は、その宛先マシンを含むことができる。ただし、発信元と宛先のマシンを、ネットワークまたは他の任意の手段によって接続する必要はなく、代わりに、発信元プラットフォームによって書き込み、１つまたは複数の宛先プラットフォームによって読み取ることができる任意の媒体を介してデータを移行することもできることに留意されたい。
【００２４】
ＬＡＮネットワーク環境で使用される場合、コンピュータ１１０は、ネットワークインターフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーク環境で使用される場合、コンピュータ１１０は、通常、モデム１７２、または、インターネットなどのＷＡＮ１７３を介して接続を確立する他の手段を含む。モデム１７２は、内蔵モデムでも外部のモデルでもよく、ユーザ入力インターフェース１６０または他の適切なメカニズムを介してシステムバス１２１に接続することができる。ネットワーク環境では、コンピュータ１１０に関して示されたプログラムモジュールまたはその部分をリモートメモリ記憶装置に格納することができる。図１に、限定ではなく例として、メモリ装置１８１に常駐するリモートアプリケーションプログラム１８５が示されている。ここに示したネットワーク接続は例示であり、コンピュータ間で接続リンクを確立する他の手段を使用することもできることが認識されよう。
【００２５】
以下の説明では、本発明は、他に指定がない限り、１つまたは複数のコンピュータによって実行される、動作、およびオペレーションの記号表現によって説明される。したがって、折に触れてコンピュータで実行されるものとして言及される、そのような動作およびオペレーションは、構造化された形式でデータを表している電気信号のコンピュータ処理装置による操作を含むことは理解されよう。この操作は、コンピュータのメモリシステム内の位置においてデータを変換し、それにより、当業者に周知のやり方でコンピュータのオペレーションを再構成あるいは変更する。データが維持されているデータ構造は、データのフォーマットによって定義される特定の属性を有するメモリの物理的位置である。ただし、本発明は、上述の文脈で記述されているが、これは限定を意味するものではなく、当業者には認識されるように、以下の様々な動作およびオペレーションは、ハードウェアで実装することもできる。
【００２６】
次に図２を参照すると、本発明は、従来のデバイスメモリ２０２を制御し、また外部メモリデバイス（ＥＭＤ）マネージャ２０４と通信する、メモリマネージャ２００を提供する。ＥＭＤマネージャ２０４は、メモリマネージャ２００の下方で、かつ物理ハードウェア２０６１、２０６２、２０８、およびネットワーク２１０の上方に示されている。物理ハードウェアは、ローカルに配置された、あるいはネットワークを介してリモードでアクセス可能な、ハードドライブ、ＣＤドライブ、ＤＶＤドライブ、またはその組み合わせのＣＤ／ＤＶＤドライブなどのマルチメディアドライブ、および光ディスクなどとすることができる。ＥＭＤマネージャ２０４は、別個のものとして示されているが、ＥＭＤマネージャ２０４は、メモリマネージャ２００と一体化してもよいことを認識されたい。ＥＭＤマネージャ２０４は、いつ、外部メモリデバイス（ＥＭＤ）２１２が、プラグアンドプレイなど従来の方法によってアクセス可能かを検出する。ＥＭＤ２１２は、例えば、ＣｏｍｐａｃｔＦｌａｓｈ  Ａｓｓｏｃｉａｔｉｏｎ（コンパクトフラッシュ（登録商標）協会）などで提唱されているＣｏｍｐａｃｔＦｌａｓｈの仕様による、コンピューティングデバイスに差し込むことができるリムーバルで固体素子の不揮発性のメモリデバイスの形態にすることができる。それはまた、揮発性のメモリデバイスの形態を取ることもできる。実際には、ＥＭＤを、外部に取り付けられているマウス、キーボード、ネットワーク接続デバイスなどの既存の製品の内部に収容することができ、また、このようなデバイスは、同時に複数を付加することができる。外部メモリデバイスの他の代替の位置は、ネットワーク２１０上のリモートの位置、あるいは、サーバ上のメモリのようなネットワークインフラストラクチャの一部分である。
【００２７】
本発明では、ＥＭＤにおいて使用可能なメモリを活用して、アプリケーションによって使用されることが見込まれるディスクセクタをメモリ内に維持し、ディスク上のセクタの代わりに、ＥＭＤメモリ内にコピーされたディスクセクタ内のデータに向けられたＩ／Ｏ要求を送る。
【００２８】
次に、図３ａおよび３ｂを参照して、外部メモリデバイスを活用するために本発明で実施されるステップを説明する。以下の説明では、本発明を記述するために使用されているセクタは、ハードドライブ２０６上に存在する。本発明は、上述の文脈で説明されているが、それは限定を意味するものではなく、当業者には理解されるように、ＣＤ／ＤＶＤデバイス２０８などのようにスピンアップを必要とする、他のデバイスにおけるディスクセクタも、ディスク上にキャッシュすることができる。キャッシュされるセクタは、より低速のメモリデバイスに存在することもできる。図３ａおよび３ｂは、連続したステップを示しているが、これらのステップは、異なる順序および／または並列で行われてもよいことは理解されたい。ＥＭＤマネージャ２０４は、いつＥＭＤ２１２が使用可能かを検出する（ステップ３００）。ＥＭＤを検出するための１つの手法は、検出インターフェースであり、このインターフェースは記載されている（例えば、特許文献１参照。その全体が参照により本明細書に組み込まれる。）。従来のプラグアンドプレイ方法など他の方法を用いることもできる。ＥＭＤ２１２において使用可能なメモリのサイズおよびタイプが決定される。コンピューティングデバイスにおいて最初にＥＭＤ２１２が使用されている場合、ＥＭＤ２１２のためのドライバがインストールされる（ステップ３０２）。このドライバは、ＥＭＤ２１２と通信するために使用され、ＥＭＤを、システム上でディスク２０６におけるセクタをキャッシュするための非同期ブロックキャッシュ（ａｓｙｎｃｈｒｏｎｏｕｓ  ｂｌｏｃｋ  ｃａｃｈｅ）として使用する。キャッシュの更新が、ＥＭＤが低速であり、更新されるのを待機するために、元の読取り要求に対する増大したレイテンシがもたらされることがありうる場合に、非同期である。
【００２９】
他のＥＭＤが使用可能な場合、システムは、他の使用可能なＥＭＤと比較して、より良好な帯域幅およびレイテンシを有するＥＭＤ上で、より使用されることが見込まれるディスクセクタをキャッシュすることによって、複数のＥＭＤがどのようにポピュレートされるかの優先順位を付ける（ステップ３０４）。いくつかのコンピューティングデバイスは、どのディスクセクタがオペレーティングシステムならびにアプリケーションによって最も頻繁にアクセスされるかや、最後のアクセス時間、アクセスパターン、およびアクセス頻度などのディスク使用状況を追跡する。このヒストリが使用可能な場合、ＥＭＤは、このヒストリに基づいてポピュレートされる（ステップ３０６）。このヒストリが使用可能でない場合、ＥＭＤは、アプリケーションがディスクから読取りを行う時間に、アプリケーション（またはコンピューティングデバイス）によってアクセスされているディスクセクタによってポピュレートされる。（ステップ３０８）。ＥＭＤに必要とされるフォーマットで、ＥＭＤをポピュレートできることに留意されたい。ディスクセクタの使用情報（すなわちヒストリ）は、ＥＭＤが使用可能な次の時間に、ＥＭＤ上にどのセクタをミラーリング（ｍｉｒｒｏｒ）すべきかを決定するために追跡される。これに使用されるアルゴリズムは、ページメモリを事前に対策を講じて管理するために使用されるアルゴリズムと同様であり、そのアルゴリズムは記載されている（例えば、特許文献２参照。その全体が参照により本明細書に組み込まれる。）。違いは、メモリ内でどのページが、キャッシュのために有用であるかを決定する代わりに、本発明では、どのディスクセクタがキャッシュのために有用かを決定することである。
【００３０】
コンピューティングデバイスがネットワーク化されたシステム内にある一実施形態では、ネットワークサーバが、コンピューティングデバイスについての情報を保持し、コンピューティングデバイス用のローカルメモリの管理においてＥＭＤマネージャ２０４を支援するリモートアルゴリズムを用いる。この実施形態は、どのディスクセクタがキャッシュされるべきかを決定するためのメモリまたはコンピュータ処理能力を持たないローエンド（ｌｏｗ−ｅｎｄ）クライアントに対して特に適切である。リモートアルゴリズムは、クライアント上のデータパターンおよびアクセスパターンなどについて詳細な解析を行い、ローエンドクライアントが作成するよりも最適な結果を作成する。
【００３１】
アプリケーションまたはコンピューティングデバイスは、稼動中に、ＥＭＤにコピーされるディスクセクタに書込みを行うことができる。ＥＭＤは、アプリケーションまたはコンピューティングデバイスによって書き込まれることは決してない。代わりに、ディスクセクタに書込みオペレーションが適用される。書込みオペレーションか完了した後、ディスクセクタは、ＥＭＤ上に再びコピーされる（ステップ３１０）。この手法が使用されると、ＥＭＤが除去された場合、リモートファイルシステムの場合のように、リモートファイルシステムへのリンクが機能しないとき、コンピューティングデバイスがＥＭＤの代わりにディスクから読取りを行い、データは失われない。その結果、本発明は、接続の欠損やＥＭＤの除去などの接続性の問題についてより耐性を有するようになる。
【００３２】
Ｉ／Ｏ読取り要求を受け取るたびに、ＥＭＤマネージャ２０４は、その要求が、ＥＭＤ２１２のメモリにコピーされているディスクセクタに向けられているかどうかを確かめる検査を行う。読取り要求が、ＥＭＤのメモリにコピーされているディスクセクタに向けられている場合、ＥＭＤマネージャ２０４は、読取り要求をＥＭＤにリダイレクトする（ステップ３１２）。その結果、読取り要求は、ハードディスク２０６において完了する場合よりも速く完了する。
【００３３】
ＥＭＤ２１２を、いつでもユーザによって除去することができる。ＥＭＤが除去された場合、システムは、この除去を検出する。他のＥＭＤが使用可能な場合、除去されたＥＭＤが使用可能な最も低速のＥＭＤでなかったならば、残りのＥＭＤは、再ポピュレートされる（ステップ３１４）。他のＥＭＤが使用可能でない場合（または除去されたＥＭＤが最も低速のＥＭＤであった場合）、データは、ハードディスクから読み取られる（ステップ３１６）。ステップ３００から３１６は、ＥＭＤが追加または除去されるたびに繰り返され、ステップ３１０および３１２は、ＥＭＤが使用可能である限り繰り返される。
【００３４】
ＥＭＤが不揮発性の場合、パワーダウンまたはハイバネーション時に、構成データを有するセクタによって、ＥＭＤメモリを、予めポピュレートすることができる。パワーアップまたは復元の際に、ディスクをスピンアップしている間に、ＥＭＤの内容を読み取ることができる。この技法を使用することにより、コンピュータシステムの、ブート時間、およびハイバネーションからの回復時間（ｈｉｂｅｒｎａｔｅ  ａｗａｋｅｎ  ｔｉｍｅ）を減少させることができる。さらなる詳細を見ることができる（例えば、特許文献３参照。その全体が参照により本明細書に組み込まれる。）。
【００３５】
すべてのステップを説明したので、次に、パフォーマンスの改善について説明する。外部メモリデバイスについて期待できるパフォーマンスの改善を決定する主要な因子は、ＥＭＤに対する転送レイテンシおよびスループット、ＥＭＤのバス（例えば、ＵＳＢ１／２、ＰＣＭＣＩＡ、Ｅｔｈｅｒｎｅｔ（登録商標）１００ＢａｓｅＴなど）、外部メモリのサイズ、キャッシュの管理に用いられるポリシー、ならびに、外部メモリの使用の仕方のシナリオおよびワークロードである。
【００３６】
ＥＭＤが接続される最も典型的ないくつかのバスに対する転送レイテンシおよびスループットは変動することがある。ＥＭＤが特定のバスに接続できるデバイスとしてパッケージ化されたＲＡＭからなる場合、バスは、ほとんどのオペレーションについての主なボトルネックとなることが予想される。ＵＳＢ１、ＵＳＢ２、およびＰＣＩ／ＰＣＭＩＡのバスのレイテンシおよびスループットは、バスに接続されたディスクの（一般には通常のメモリである）トラックバッファ（ｔｒａｃｋ  ｂｕｆｆｅｒ）にヒットすることになる、逓増していくサイズ（４ＫＢ、８ＫＢ、１６ＫＢ、３２ＫＢ、および６４ＫＢ）のバッファされていないディスクＩ／Ｏを、発行することによって推定される。表１の下記の値は、Ｉ／Ｏサイズを転送するためにかけた時間に単に直線を適合させることにより導かれた。
【００３７】
【表１】
2006134321.tif 000003
【００３８】
ディスクキャッシュとして有意義にするために、ＥＭＤからのデータのコピーは、それが対応するディスクに移動するよりも高速でなければならない。シークを伴う４ＫＢランダムディスクＩ／Ｏは、通常のデスクトップおよびラップトップのディスク上では、５〜１５ｍｓの間のいずれかの時間がかかる。シークを伴う４ＫＢディスクＩ／Ｏのために１０ｍｓの時間がかかるとすると、データは、ＰＣＭＣＩＡ上でＥＭＤキャッシュから６０倍速く取り出すことができ、あるいは、ＵＢＳ２上でＥＭＤから２０倍速く取り出すことができはずである。全般的に見て、ＵＢＳ２は、ＥＭＤに接続するのに非常に適切なバスと考えられる。
【００３９】
ＵＳＢ１に関する１つの問題は、４ｍｓのセットアップ時間が、どんなパフォーマンス向上も見込めなくしてしまうことでる。この問題は、アイソクロナス（ｉｓｏｃｈｒｏｎｏｕｓ）転送チャネルをいつもオープンに維持することによって対処される。ＵＳＢ１上でＥＭＤから４ＫＢを得ることは、通常、２倍の速さとなり、したがって、それはシークを伴うディスクから得られる。ＵＳＢ１での低いスループットレートのため、クライアントシステム上で通常見られる１６ＫＢ、３２ＫＢ、および６４ＫＢＩ／Ｏについて、ディスクへ移動するほうが、依然としてより高速である。しかし、通常４ＫＢランダムＩ／Ｏによってアクセスされるページファイルおよびファイルシステムメタデータのみに使用されるＵＳＢ１キャッシュは、依然としてパフォーマンス向上をもたらすことができる。
【００４０】
Ｗｉｎｄｏｗｓ（登録商標）ＸＰ（登録商標）のサービスパック１がリリースされたあと初めて、ＵＳＢ２の採用が開始された。ＥＭＤから主に便益を得る６４ＭＢおよび１２８ＭＢシステムのほとんどは、通常、ＵＳＢ２を有していない。しかし、これらのシステムは、たいてい、１００Ｂａｓｅ−Ｔ  Ｅｔｈｅｒｎｅｔ（登録商標）ネットワークカードを有していない。１０ＭＢ／ｓの転送時間は、ＥＭＤから有効なパフォーマンス向上を得るために充分である。コンピュータの小さいネットワークのパフォーマンスを改善するために、ＥＭＤを、コンピュータごとにパススルーネットワークデバイスとして付加することができ、あるいは、ネットワークスイッチに押し込むこともできる。スイッチの範囲を超えることは、共有されたネットワークの帯域幅に起因する、起こりうる多数の信頼性およびセキュリティの問題をもたらす。
【００４１】
いかなるキャッシュとも同様に、どのデータをキャッシュ内に維持するかを管理する際に使用される実際のポリシーは、その結果のパフォーマンスの利得を決定する大きな因子である。ＥＭＤが、基礎をなすディスクおよび他のデバイスに対するブロックキャッシュとして使用される場合、ＥＭＤキャッシュは、基礎をなすデバイスからの読取りが完了したとき、ならびに、アプリケーションおよびファイルシステムから書込みが発行されたときにポピュレートされうる。前述のように、元のデバイスの要求の時間の増大を防止するために、ＥＭＤキャッシュにおけるデータは、非同期で更新される必要がある。要求が非同期で更新される範囲からの場合、基礎をなすデバイスに単純に要求を渡すことができる。非同期更新が、未処理の場合、更新を開始する同じ領域について、直近の要求があるはずであり、その範囲におけるデータは、デバイス（例えば、トラックバッファ）またはコントローラにおいてキャッシュされることが見込まれる。
【００４２】
ブロックキャッシュは、通常、ＬＲＵアルゴリズムによって管理される。このアルゴリズムでは、参照されたブロックは、読取り要求がキャッシュにヒットまたはミスするたびに、ＬＲＵリストの最後に置かれる。キャッシュ内にないブロックが、読み取られるまたは書き込まれる場合、ＬＲＵリストの前部のブロックを再ポピュレートして、新しいブロックの内容をキャッシュする。その結果、ＬＲＵアルゴリズムは、キャッシュ内の有用なブロックが時を経て撹拌されているため、弱体化される傾向にある。このようなアルゴリズムで、リストを優先順位の付けられた複数のサブリストに分割し、最後のアクセス時間を超えてよりリッチなヒストリを維持するものは、より大きい回復力を有することになる。
【００４３】
Ｗｉｎｄｏｗｓ（登録商標）ＮＴ上では、ファイルおよびページデータのキャッシュは、待機ページリストを介してメモリマネージャによって行われる。ファイルシステム、レジストリ、および他のシステムコンポーネントは、ファイルオブジェクト／マッピングメカニズムを用いて、メモリおよびキャッシュマネージャを通して同じレベルで、それらのデータをキャッシュする。別のキャッシュが、他のいずれかのレベルにおかれた場合、結果として、データのダブルキャッシング（ｄｏｕｂｌｅ  ｃａｓｈｉｎｇ）がもたらされる。これは、ＥＭＤキャッシュについても同様に当てはまる。これを回避するために、本発明のメモリマネージャは、より重要でない待機ページを、より低速の外部メモリデバイスにプッシュするように拡張することができる。それらのページがアクセスされるたびに、メモリマネージャは、物理メモリページを割り当てることができ、外部メモリデバイスからデータを再度コピーする。ＥＭＤメモリマネージャおよび関連するキャッシュマネージャは、事前に対策を講じ回復力のあるページの統合キャッシュの管理のためのページ優先度ヒント（ｐａｇｅ  ｐｒｉｏｒｉｔｙ  ｈｉｎｔ）（例えば、特許文献２参照。）を使用することができる。これには、カーネルメモリマネージャ（ｋｅｒｎｅｌ  ｍｅｍｏｒｙ  ｍａｎａｇｅｒ）の変更が必要とされるため、Ｗｉｎｄｏｗｓ（登録商標）ＸＰ用に構築されたＥＭＤの解決策は、データのダブルキャッシングの問題にさらされる可能性が高い。ダブルキャッシングにもかかわらず、シミュレーションは、依然として実質的なパフォーマンスの向上を得ることが可能であることを示している。
【００４４】
キャッシングのための他の重要なパラメータは、ブロックサイズ、ならびにクラスタリングおよび先読みの量である。キャッシュでミスがあるたびに、より少量のデータが要求された場合でも、基礎をなすディスクまたはデバイスから少なくともデータのブロックサイズを読み取る必要があり、場合によっては、要求されたオフセットの周辺の追加のブロックのクラスタも読み取る必要がある。クラスタリングにより、ディスク上の同じ位置に戻って行われる将来のシークを排除することができる。しかし、クラスタリングにより、元の要求の完了のための時間が増大することもあり、各要求ごとに追加のブロックが参照されるのに伴い、ＬＲＵリストにおいてさらなる撹拌を引き起こすおそれもある。さらに、先読みは、より多くの連続データを得るために、キューに入れることが効率的な間、元の要求に対する時間に影響することなく、キューに入れることができる。しかし、この結果、デバイス上の他の場所をシークすることを必要とする後続の要求に対するレイテンシの増大をもたらすことがある。
【００４５】
キャッシュにとって有用とみなされるデバイスの位置のリストは、ブートや、キャッシュの通常の内容を消去する集中使用期間などのパワーの状態の変化にまたがって持続することができることに留意されたい。このリストを、バックグランドＩ／Ｏに対する適切な優先順位付けのサポートを有する上記のような変化の後、キャッシュ内容を再ポピュレートするために使用することができる。
【００４６】
他のパフォーマンス解析と同様に、意味のある有用なデータを得るために、代表的シナリオおよびワークロードに注目することが重要である。既存のＷｉｎｄｏｗｓ（登録商標）（ＸＰおよび２０００）におけるＥＭＤキャッシュに期待できるパフォーマンスの改善を明らかにするために、ディスクレベルでの単純なＬＲＵライトスルー（ｗｒｉｔｅ−ｔｈｒｏｕｇｈ）ブロックキャッシングを用いた実験を行った。上述のように、これは、データのダブルキャッシングの問題にさらされる。しかし、これらの実験は、エミュレーション、シミュレーション、実際のこのようなＥＭＤキャッシュの構築、および、それらの影響の測定がより容易である。その結果は、このような単純なキャッシュでさえも、ディスクおよびシステムのパフォーマンスに大きな影響を与えることができることを示している。コンピューティングデバイスのメモリマネージャとの一体化と、より洗練したポリシーの使用によって、さらに利得が増大する。
【００４７】
実験では、基本的にディスクアクセスに対してキャッシュするため、キャッシュの成功は、キャッシュなしの場合および様々な構成のキャッシュについて、代表的ワークロードまたはシナリオから得られた同じ組のディスクアクセスのプレイバックの全体的時間を比較することによって測定される。ほとんどのクライアントのシナリオでは、ディスク読取り時間の減少の結果、それに比例して、応答性またはベンチマークスコア（ｂｅｎｃｈｍａｒｋ  ｓｃｏｒｅ）が増大した。
【００４８】
ＥＭＤキャッシュの現実の影響を判定するために、２つのシナリオが調べられた。一方のシナリオでは、１２８ＭＢおよび２５６ＭＢのシステム上で数時間にわたって、現実のエンドユーザシステムから収集されたディスクトレース（ｄｉｓｋ  ｔｒａｃｅ）を用いる。他方のシナリオでは、Ｂｕｓｉｎｅｓｓ  Ｗｉｎｓｔｏｎｅ  ２００１、Ｃｏｎｔｅｎｔ  Ｃｒｅａｔｉｏｎ  Ｗｉｎｓｔｏｎｅ  ２００２、ならびに、Ｏｆｆｉｃｅ  ２００３アプリケーションを使用する修正版のＢｕｓｉｎｅｓｓ  Ｗｉｎｓｔｏｎｅのような業界ベンチマークによるディスクトレースが用いられる。トレースは複数のメモリサイズで取得され、したがって、それらの利得を、単純なＥＭＤキャッシュから、システムの実際に増大するメモリサイズまで比較することができる。
【００４９】
ＥＭＤデバイスは、通常のブロックキャッシュを使用し、望ましいＥＭＤバスに基づいてキャッシュヒットに遅延を追加することによって、正確にエミュレートされうる。メモリから要求されたバイトをコピーした後、表１に示されるようなセットアップ時間およびスループット値に基づいて、望ましいＥＭＤバスについて計算された転送時間を決定することができる。
【００５０】
この評価の手順では、ターゲットシステムを、ｍａｘｍｅｍ  ｂｏｏｔ．ｉｎｉスイッチによるターゲットメモリで実行するように構成し、典型的な使用シナリオまたは業界ベンチマークを実行して、生成されたディスクＩ／Ｏをトレースし、キャッシュサイズの望ましいパラメータ、およびＥＭＤデバイスのスループット／レイテンシによってブロックキャッシュを構成し、トレースされたディスクＩ／Ｏをリプレイして、キャッシュミスによる結果のディスクＩ／Ｏを捕捉し、この２つの実行の時間およびディスクアクセスを比較する。
【００５１】
理想的には、これらのシナリオを、適切に構成されたブロックキャッシュで実行するべきであり、最終結果（応答時間またはベンチマークスコア）が比較される。しかし、ディスク時間と最終結果の関連が既に確立されている場合、捕捉されたディスクＩ／Ｏの単純なプレイバックは、評価される必要のある多数のＥＭＤ構成に対して、より短い時間を消費する。単純なシミュレータが、ＥＭＤキャッシュからの潜在的利得を大まかに推定するために使用される。１２８ＭＢカスタマシステム（ｃｕｓｔｏｍｅｒ  ｓｙｓｔｅｍ）ならびに内部開発システム（ｉｎｔｅｒｎａｌ  ｄｅｖｅｌｏｐｍｅｎｔ  ｓｙｓｔｅｍ）からの数時間単位のディスクトレースの処理を可能にし、ＥＭＤキャッシュの様々な構成の影響を測定する。さらに簡略に説明するために、ディスクが読取りの処理にかかる時間に焦点を当て、ディスクの書込み時間を無視する。代表的シーク時間は、２ｍｓ未満と２０ｍｓより大きいシーク時間を無視する。ディスクヘッドの最終の位置の対が、「トラックバッファリング（ｂｕｆｆｅｒｉｎｇ）」をシミュレートするために追跡される。上述のような複雑な状態にもかかわらず、ディスクシミュレーションは、一般に、許容域内にあり、すなわち、予測の７５％が実時間の１５％の範囲内となる。予測の誤りは、一般に、控えめなシミュレーションと、より高度のディスク読取り時間に起因する。ディスクシミュレータは、特定のトレースにおけるディスクのパフォーマンス特性を常に正確に捕捉することができるものではないが、それ自体のパフォーマンス特性が、典型的な実際のデスクトップ／ラップトップのディスクの特徴を表している。
【００５２】
表２は、様々なコンピューティングシステムの数時間の稼動にわたる実際の使用の際に獲得された、ディスクトレースのＥＭＤキャッシュシミュレーションにおけるディスク読取り時間の減少を示している。
【００５３】
【表２】
2006134321.tif 000004
【００５４】
表２のデータの解釈の仕方の例として、システム１を検討すると、１２８ＭＢのＵＳＢ２のＥＭＤデバイスの結果は、現在のユーザが経験しているディスク読取り時間の３７％（すなわち６３％の減少）となっている。
【００５５】
システム１および２は、会社において１２８ＭＢシステム上でＷｉｎｄｏｗｓ（登録商標）ＸＰ、Ｏｆｉｉｃｅ２００３、および最新のＳＭＳにアップグレードしたいが、ビジネスソフトウェアのラインを稼動するときに深刻な減速が起きるような場合である。システム３のトレースは、ラップトップに由来する場合である。これらのシステムにおいて改善が最も大きいのは、より低速のディスクと１２８ＭＢのみのメモリを有するシステムであることが見られる。
【００５６】
下部の３つのシステム（システム４、５、６）は、大きなファイルの構築、同期、および処理を含む重い開発タスクが実行される開発者システムである。これらのシステムは、より高速のディスクを有し、これらのタスクによって生成される大部分のディスクＩ／Ｏは順次であり、ディスク上の同じセクタに何度も再アクセス（例えば同期）しないため、単純なＬＲＵブロックキャッシュからそれほど利益を受けない。したがって、全体のディスク時間が、エンドユーザの応答性を表していない。キャッシュは、ＵＩブロッキングディスク（ＵＩ  ｂｌｏｃｋｉｎｇ  ｄｉｓｋ）の読取り時間を大幅に減少させることがある。
【００５７】
表３は、Ｃｏｎｔｅｎｔ  Ｃｒｅａｔｉｏｎ  Ｗｉｎｓｔｏｎ２００２において得られた、ＥＭＤキャッシュのディスクトレースのシミュレーションにおけるキャッシュディスク読取り時間の減少を示している。
【００５８】
【表３】
2006134321.tif 000005
【００５９】
テーブル４は、Ｂｕｓｉｎｅｓｓ  Ｗｉｎｓｔｏｎｅ２００１において得られた、ＥＭＤキャッシュのディスクトレースのシミュレーションにおけるキャッシュディスク読取り時間の減少を示している。
【００６０】
【表４】
2006134321.tif 000006
【００６１】
上記の事例のように、１２８ＭＢ以下の低速のディスクを有するシステム上で最も大きい改善が見られる。Ｂｕｓｉｎｅｓｓ  Ｗｉｎｓｔｏｎｅ２００１は、メモリとして２５６ＭＢにほとんど収まり、したがって、全体のディスク時間、およびＥＭＤによる利得は、システムのメモリサイズにおいて、より小さいものとなる。
【００６２】
表５は、Ｃｏｎｔｅｎｔ  Ｃｒｅａｔｉｏｎ  Ｗｉｎｓｔｏｎ２００２を実行している場合で、追加のＥＭＤキャッシュによる利得を、実際により多くの物理メモリを追加したシステムと比較している。前述のように、ＥＭＤキャッシュシミュレーションは、データのダブルキャッシングの問題にさらされ、単純なＬＲＵポリシーで管理される。通常、より多くの物理的メモリをシステムに追加することは、より多数のシナリオにおいてより良好なパフォーマンスをもたらす。他方で、ＥＭＤキャッシュが、メモリマネージャと一体化され、提供されうる（例えば、特許文献２参照。）アルゴリズムと同じ高度なアルゴリズムによって管理することができる場合、ＥＭＤキャッシュは、実際のメモリをシステムに追加することに匹敵するパフォーマンスの向上を提供することができる。
【００６３】
【表５】
2006134321.tif 000007
【００６４】
以上から分かるように、外部メモリを使用してコンピューティングデバイスのパフォーマンスを改善するためのシステムおよび方法を記述した。本発明は、容量が小さいメモリを有するレガシコンピューティングデバイスおよび他のデバイスを、物理的にデバイスを開くことを必要とせずに、メモリを効率的にアップグレードすることを可能にする。外部メモリを使用して、より高速でより信頼できるパフォーマンスという点で生産性の向上を達成することができる。回転式ストレージ媒体とより低速のメモリデバイスは、非同期的に外部メモリにキャッシュされる。リモートファイルシステムとは異なり、データは依然として回転式ストレージ媒体またはより低速のデバイス上にあるため、データは外部メモリが除去された場合に失われない。
【００６５】
特許、特許出願、および刊行物を含む本明細書に引用されたすべての参照文献は、それらの全体は参照により本明細書に組み込まれる。本発明を記述する文脈（特に添付の特許請求の範囲における文脈）における、「１つの」、「ある」、「その」、「前記」の語、および同様の指示物の使用は、本明細書で他に指定がない限りまたは文脈により明らかに矛盾しない限り、単数と複数の両方を含むと解釈されるべきである。「含む」および「有する」（“ｃｏｍｐｒｉｓｉｎｇ，”“ｈａｖｉｎｇ，”“ｉｎｃｌｕｄｉｎｇ，”ａｎｄ“ｃｏｎｔａｉｎｉｎｇ”）という語は、他の指定がない限り、オープンエンドな語として解釈されるべきである。本明細書に記載のすべての方法は、本明細書で他に指定がない限りまたは文脈によって明らかに矛盾しない限り、任意の適切な順序で実施することができる。本明細書に記載の、任意およびすべての例、あるいは例示の言葉（例えば、「などの」、「のような」（ｓｕｃｈ  ａｓ））は、単に本発明をより適切に説明することを意図しており、請求項で指定されない限り、本発明の範囲を限定するものではない。例えば、Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムが、本発明を記述するために参照された。本発明は、ＬｉｎｕｘおよびＳｕｎＯｓなど他のオペレーティングシステム上で実装することもできることは当業者には理解されよう。本明細書のいずれの言葉も、請求項にない要素を、本発明の実施において本質的なものとして示す言葉として解釈されるべきではない。
【００６６】
本発明の原理が適用されうる多数の可能な実施形態を考慮すると、図面に関連する本明細書に記載の実施形態は、例示のみが目的であり、本発明の範囲を限定するものとして捉えられるべきではない。例えば、本発明の趣旨から逸脱することなく、ソフトウェアとして示された例示の実施形態の要素をハードウェアとして実装することができ、その逆も同様に可能であり、あるいは、例示の実施形態の構成および細部を修正することができることは当業者には理解されよう。したがって、本明細書に記載の発明は、このようなすべての実施形態が、添付の特許請求の範囲およびその均等物の範囲に含まれうることを企図している。
【図面の簡単な説明】
【００６７】
【図１】本発明が存在する例示的コンピュータシステムを概略的に示すブロック図である。
【図２】本発明の一態様による、メモリ管理アーキテクチャを示すブロック図である。
【図３ａ】本発明が外部メモリデバイスを利用してシステムのパフォーマンスを改善する際に講じるステップを概略的に示すフローチャートである。
【図３ｂ】本発明が外部メモリデバイスを利用してシステムのパフォーマンスを改善する際に講じるステップを概略的に示すフローチャートである。
【符号の説明】
【００６８】
１００  コンピューティングシステム環境
１１０  コンピュータ
１２０  処理装置
１２１  システムバス
１３０  システムメモリ
１３１  ＲＯＭ
１３２  ＲＡＭ
１３３  ＢＩＯＳ
１３４  オペレーティングシステム
１３５  アプリケーションプログラム
１３６  他のプログラムモジュール
１３７  プログラムデータ
１４０  固定非揮発性メモリインターフェース
１４１  ハードディスクドライブ
１４４  オペレーティングシステム
１４５  アプリケーションプログラム
１４６  他のプログラムモジュール
１４７  プログラムデータ
１５０  リムーバル非揮発性メモリインターフェース
１５１  磁気ディスクドライブ
１５２  リムーバルで不揮発性の磁気ディスク
１５５  光ディスクドライブ
１５６  リムーバルで不揮発性の光ディスク
１６０  ユーザ入力インターフェース
１６１  マウス
１６２  キーボード
１６３  マイク
１６４  タブレット
１７０  ネットワークインターフェース
１７１  ＬＡＮ
１７２  モデム
１７３  ＷＡＮ
１８０  リモートコンピュータ
１８１  メモリ記憶装置
１８５  リモートアプリケーションプログラム
１９０  ビデオインターフェース
１９５  出力周辺装置インターフェース
１９６  プリンタ
１９７  スピーカ
２００  メモリマネージャ
２０２  コンピューティングデバイスメモリ
２０４  外部メモリデバイスマネージャ
２０６１  ハードドライブ
２０６２  ハードドライブ
２０８  ＣＤ／ＤＶＤデバイス
２１０  ネットワーク
２１２  外部メモリ
２１２１  外部メモリデバイス
２１２２  外部メモリデバイス
２１２３  外部メモリデバイス
３００  ＥＭＤを検出する
３０２  ドライバをインストールする
３０４  ＥＭＤの優先順位を付ける
３０６  ヒストリに基づいてＥＭＤをポピュレートする
３０８  アクセスされているセクタによってＥＭＤをポピュレートする
３１０  ＥＭＤを再ポピュレートする
３１２  ＥＭＤキャッシュから読み取る
３１４  他のＥＭＤを再ポピュレートする
３１６  ディスクから読み取る
【図１】
2006134321.tif 000008
【図２】
2006134321.tif 000009
【図３ａ】
2006134321.tif 000010
【図３ｂ】
2006134321.tif 000011
【外国語明細書】
2006134321000001.pdf