データ記憶システムであり、中央記憶システムと、ネットワークインフラストラクチャにより前記中央記憶システムとネットワーク通信を行う少なくとも1つのエンドポイントコンピュータシステムと、前記コンピュータシステムのCPUと通信を行う記憶アクセラレータとを備え、前記記憶アクセラレータは、前記中央記憶システム上における前記少なくとも1つのエンドポイントコンピュータシステムにアクセス可能なデータのエンドポイントキャッシュを行い、前記記憶アクセラレータは、前記コンピュータシステムのバスまたは他の高速ネットワークに取り付けられた物理記憶ユニットを制御するためのコンピュータ可読命令を前記CPUにより実行する、データ記憶システム。前記中央記憶システムは、階層1から層NN≧1を含む階層データ構造を有し、前記記憶アクセラレータは、前記中央記憶システムの階層0に対するキャッシュを有する、請求項1に記載のデータ記憶システム。前記物理記憶ユニットは、固体メモリデバイスを含む、請求項2に記載のデータ記憶システム。前記記憶アクセラレータは、データキャッシュ構造を有する、請求項3記載のデータ記憶システム。前記記憶アクセラレータと通信を行うフィルタドライバをさらに備える、請求項1から4のいずれか1項に記載のデータ記憶システム。ソフトウェアモジュールが前記フィルタドライバ上に設けられ、前記フィルタドライバは、読み出されている、または書き込まれているファイルがエンドポイントキャッシュを行うようマークされているかどうかを判断するための命令を含む、請求項5に記載のデータ記憶システム。前記読み出されている、または書き込まれているファイルがエンドポイントキャッシュを行うようマークされているかどうかを判断するための命令は、ファイルのメタデータ情報にアクセスするための命令を含む、請求項6に記載のデータ記憶システム。前記フィルタドライバは、データ読み出し動作が前記少なくとも1つのエンドポイントコンピュータシステムから要求されているかどうかを判断し、要求されていれば読み出されているデータが前記記憶アクセラレータ上に存在するか判断し、a存在すれば、前記記憶アクセラレータからの前記データ読み出し動作を実行し、b存在しなければ、前記中央記憶システムから前記データを要求し、前記データのコピーを前記記憶アクセラレータに提供するための命令をさらに含む、請求項7に記載のデータ記憶システム。前記フィルタドライバは、データ書き込み動作が前記少なくとも1つのエンドポイントコンピュータシステムにより要求されているかどうかを判断し、要求されていれば、前記データを前記記憶アクセラレータに書き込むための命令をさらに含む、請求項7に記載のデータ記憶システム。前記フィルタドライバは、前記データを前記中央記憶システムへ書き込むための命令をさらに含む、請求項9に記載のデータ記憶システム。前記フィルタドライバは、前記中央記憶システムに書き込まれることになる前記データをキューするための命令をさらに含む、請求項9に記載のデータ記憶システム。前記フィルタドライバは、前記中央記憶システムと前記記憶アクセラレータとの間のデータの一貫性を維持するための命令をさらに含む、請求項10または11に記載のデータ記憶システム。前記少なくとも1つのエンドポイントコンピュータシステムは、モバイルデバイスを含む、請求項1から12のいずれか1項に記載のデータ記憶システム。データ記憶方法であり、中央記憶システムを設ける段階と、ネットワークインフラストラクチャにより前記中央記憶システムとネットワーク通信を行う少なくとも1つのエンドポイントコンピュータシステムを設ける段階と、前記コンピュータシステムのCPUと通信を行う記憶アクセラレータを設ける段階とを備え、前記記憶アクセラレータは、前記中央記憶システム上における前記少なくとも1つのエンドポイントコンピュータシステムにアクセス可能なデータのエンドポイントキャッシュを行い、前記記憶アクセラレータは、前記コンピュータシステムのバスまたは他の高速ネットワークに取り付けられた物理記憶ユニットを制御するためのコンピュータ可読命令を前記CPUにより実行する、データ記憶方法。前記記憶アクセラレータは、前記CPUから前記記憶アクセラレータへのデータスループットが前記CPUから前記中央記憶システムへの接続を通じたデータスループットよりも大きくなる位置に設けられる、請求項14に記載のデータ記憶方法。前記中央記憶システムは、階層1から階層NN≧1を含む階層データ構造を有し、前記記憶アクセラレータは、前記中央記憶システムの階層0に対するキャッシュを有する、請求項14または15に記載のデータ記憶方法。前記物理記憶ユニットは、固体メモリデバイスを含む、請求項14に記載のデータ記憶方法。前記記憶アクセラレータは、データキャッシュ構造を有する、請求項17に記載のデータ記憶方法。前記エンドポイントコンピュータシステムは、データ読み出し動作またはデータ書き込み動作を実行するよう適合され、読み出されている、または書き込まれているファイルがエンドポイントキャッシュを行うようマークされているかどうかを判断する段階をさらに備える、請求項18に記載のデータ記憶方法。読み出されている、または書き込まれているファイルがエンドポイントキャッシュを行うようマークされているかどうか、ファイルのメタデータ情報にアクセスすることにより判断する段階をさらに備える、請求項19に記載のデータ記憶方法。データ読み出し動作が前記コンピュータシステムから要求されているかどうかを判断し、要求されていれば、読み出されているデータが前記記憶アクセラレータ上に存在するか判断し、a存在すれば、前記記憶アクセラレータからの前記データ読み出し動作を実行し、b存在しなければ、前記中央記憶システムから前記データを要求し、前記データのコピーを前記記憶アクセラレータに提供する段階をさらに備える、請求項20に記載のデータ記憶方法。データ書き込み動作が前記コンピュータシステムにより要求されているかどうかを判断し、要求されていれば、前記データを前記記憶アクセラレータに書き込む段階をさらに備える、請求項21に記載のデータ記憶方法。前記データを前記中央記憶システムへ書き込む段階をさらに備える、請求項22に記載のデータ記憶方法。前記中央記憶システムに書き込まれることになる前記データをキューする段階をさらに備える、請求項22に記載のデータ記憶方法。前記中央記憶システムと前記記憶アクセラレータとの間のデータの一貫性を維持する段階をさらに備える、請求項22または23に記載のデータ記憶方法。読み出しおよび書き込みI/O動作とは独立に、または読み出しおよび書き込みI/O動作との組み合わせによりアプリケーションから要求されたことに応じてデータの有効なバッファリングポリシーを透過的に変更する段階をさらに備える、請求項16に記載のデータ記憶方法。データ記憶方法であり、中央記憶システムから読み出されているまたは前記中央記憶システムへ書き込まれているファイルが、エンドポイントコンピュータシステムの記憶アクセラレータにおいてキャッシュを行うようマークされているかどうかを判断する段階と、データ読み出し動作が要求されているかどうかを判断し、要求されていれば、読み出されているデータが前記記憶アクセラレータ上に存在するか判断し、a存在すれば、前記記憶アクセラレータからの前記データ読み出し動作を実行し、b存在しなければ、前記中央記憶システムから前記データを要求し、前記データのコピーを前記記憶アクセラレータに提供する段階と、データ書き込み動作が前記コンピュータシステムにより要求されているかどうかを判断し、要求されていれば、前記データを前記記憶アクセラレータに書き込む段階とを備える、データ記憶方法。読み出されている、または書き込まれているファイルがエンドポイントキャッシュを行うようマークされているかどうか、ファイルのメタデータ情報にアクセスすることにより判断する段階をさらに備える、請求項27に記載のデータ記憶方法。前記中央記憶システムと前記記憶アクセラレータとの間のデータの一貫性を維持する段階をさらに備える、請求項27または28に記載のデータ記憶方法。読み出しおよび書き込みI/O動作とは独立に、または読み出しおよび書き込みI/O動作との組み合わせによりアプリケーションから要求されたことに応じてデータの有効なバッファリングポリシーを透過的に変更する段階をさらに備える、請求項28または29に記載のデータ記憶方法。請求項27から30のいずれか1項に記載のデータ記憶方法をコンピュータに実行させる、コンピュータプログラム。データ記憶方法であり、読み出しおよび書き込みのうち少なくとも一方のI/O動作を行うようアプリケーションが要求するデータの有効なオペレーティングシステムバッファリングポリシーを、オペレーティングシステムバッファへデータをアクティブに供給することにより、またはオペレーティングシステムバッファからアクティブにデータを削除することにより、透過的に変更する段階を備え、前記オペレーティングシステムバッファへデータをアクティブに供給することは、前記アプリケーションが前記オペレーティングシステムによりキャッシュされた前記データを使用するよう構成することを含む、データ記憶方法。読み出し動作および書き込み動作の少なくとも一方を行うようアプリケーションが要求するデータをキャッシュ位置へキャッシュする段階と、読み出しおよび書き込みI/O動作が前記アプリケーションから要求されたことに応じてデータの有効なバッファリングポリシーを透過的に変更する段階とをさらに備え、前記有効なバッファリングポリシーを変更する段階は、前記アプリケーションが要求する前記データの少なくとも一部を、前記キャッシュ位置でバッファリングする段階を含む、請求項32に記載のデータ記憶方法。前記キャッシュ位置は記憶アクセラレータを含み、前記記憶アクセラレータにおいてキャッシュを行うようマークされた読み出されている、または書き込まれているファイルを前記データが含むかどうかを判断する段階と、データ読み出し動作が要求されているかどうかを判断し、要求されていれば、読み出されているデータが前記記憶アクセラレータ上に存在するか判断し、a存在すれば、前記記憶アクセラレータからの前記データ読み出し動作を実行し、b存在しなければ、中央記憶システムから前記データを要求し、前記データのコピーを前記記憶アクセラレータに提供する段階と、データ書き込み動作がコンピュータシステムにより要求されているかどうかを判断し、要求されていれば、前記データを前記記憶アクセラレータに書き込む段階とをさらに備え、前記読み出し動作および前記書き込み動作の一方または両方が前記記憶アクセラレータ上の前記ファイルのバッファリングされた動作を含む、請求項33に記載のデータ記憶方法。そのようなモデルにおいては、記憶システムの性能をコンピュータの潜在的な性能と一致させるには、コンピュータと記憶システムとの間の個々のネットワークのより大きなバンド幅およびより短いレイテンシーに関する性能を向上させることにより、記憶システムの性能とコンピュータの性能との間のバランスを取らなければならないことが明らかである。ここで生じる課題は、例え非常に少ない数のコンピュータであってもそれらによって与えられる潜在的な負荷は、安価なネットワークまたは中央記憶システムが対応出来る負荷よりもはるかに大きいということである。コンピュータの内部ネットワーク、つまりバスは、コンピュータが一般的にサポートする外部のネットワークよりも1または2桁分さらに速度が速く、かつ高い能力で動作する。従来技術の解決方法のいくつかには、中央の記憶装置におけるネットワーク性能を記憶装置自体の性能と見合うものとするキャッシュ機能または階層化機能を形成させるものなど、記憶装置に取り付けられた記憶アクセラレータを用いるものがある。この課題を解決すべくその他試みられている解決方法には、例えばbcache、fastcache、dmcacheなどいくつかのブロックベースの実装、およびFS-cacheとして知られるファイルシステムを変更する特定の実装など、Linux登録商標カーネルファシリティのコンテキストにおける試みがある。またワイドエリアネットワークリンク上の読み出し専用キャッシュread-onlycachingを対象として設計されたBranchCacheと呼ばれる関連する機能性をもつウィンドウズ登録商標ファシリティもある。よって本願発明の目的は、データ記憶システムの効率性を向上させる、新規のシステムおよび方法を提供することである。本願発明の一実施形態によると、データ記憶システムは、中央記憶システムと、ネットワークインフラストラクチャにより中央記憶システムとネットワーク通信を行う少なくとも1つのエンドポイントコンピュータシステムと、コンピュータシステムのCPUと通信を行う記憶アクセラレータとを含み、記憶アクセラレータは、少なくとも1つのエンドポイントコンピュータシステムにアクセス可能な中央記憶システム上のデータのエンドポイントキャッシュを行う。本実施形態の一態様によると、記憶アクセラレータは、コンピュータシステムのバスに取り付けられた物理記憶ユニットを制御するCPU上で実行される少なくとも1つのソフトウェアモジュールを有する。本実施形態の他の態様によると、記憶アクセラレータは、CPUから記憶アクセラレータへのデータスループットがCPUから中央記憶システムへの接続を通じたデータスループットよりも大きくなる位置に設けられる。本実施形態の他の態様によると、中央記憶システムは、階層1から層NN≧1を含む階層データ構造を有し、記憶アクセラレータは、中央記憶装置の階層0に対するキャッシュを有する。本実施形態の他の態様によると、物理記憶ユニットは、固体メモリデバイスを含む。本実施形態の他の態様によると、記憶アクセラレータは、データキャッシュ構造を有する。本実施形態の他の態様によると、記憶アクセラレータと通信を行うフィルタドライバが設けられる。本実施形態の他の態様によると、ソフトウェアモジュールはフィルタドライバ上に設けられ、フィルタドライバは、読み出されている、または書き込まれているファイルがエンドポイントキャッシュを行うようマークされているかどうかを判断するための命令を含む。本実施形態の他の態様によると、読み出されている、または書き込まれているファイルがエンドポイントキャッシュを行うようマークされているかどうかを判断するための命令は、ファイルのメタデータ情報にアクセスするための命令を含む。本実施形態の他の態様によると、フィルタドライバは、データ読み出し動作がコンピュータシステムから要求されているかどうかを判断し、要求されていれば読み出されているデータが記憶アクセラレータ上に存在するか判断し、a存在すれば、記憶アクセラレータからのデータ読み出し動作を実行し、b存在しなければ、中央記憶システムからデータを要求し、データのコピーを記憶アクセラレータに提供するための命令をさらに含む。本実施形態の他の態様によると、フィルタドライバは、データ書き込み動作がコンピュータシステムにより要求されているかどうかを判断し、要求されていれば、データを記憶アクセラレータに書き込むための命令をさらに含む。本実施形態の他の態様によると、フィルタドライバは、データを中央記憶システムへ書き込むための命令をさらに含む。本実施形態の他の態様によると、フィルタドライバは、中央記憶システムに書き込まれることになるデータをキューするための命令をさらに含む。本実施形態の他の態様によると、フィルタドライバは、中央記憶システムと記憶アクセラレータとの間のデータの一貫性を維持するための命令をさらに含む。本実施形態の他の態様によると、コンピュータシステムは、モバイルデバイスを含む。本願発明の他の実施形態によると、データ記憶方法は、中央記憶システムを設ける段階と、ネットワークインフラストラクチャにより中央記憶システムとネットワーク通信を行う少なくとも1つのエンドポイントコンピュータシステムを設ける段階と、コンピュータシステムのCPUと通信を行う記憶アクセラレータを設ける段階とを含み、記憶アクセラレータは、少なくとも1つのエンドポイントコンピュータシステムにアクセス可能な中央記憶システム上のデータのエンドポイントキャッシュを行う。本実施形態の一態様によると、記憶アクセラレータは、コンピュータシステムのバスに取り付けられた物理記憶ユニットを制御するCPU上で実行される少なくとも1つのソフトウェアモジュールを有する。本実施形態の他の態様によると、記憶アクセラレータは、CPUから記憶アクセラレータへのデータスループットがCPUから中央記憶システムへの接続を通じたデータスループットよりも大きくなる位置に設けられる。本実施形態の他の態様によると、中央記憶システムは、階層1から階層NN≧1を含む階層データ構造を有し、記憶アクセラレータは、中央記憶装置の階層0に対するキャッシュを有する。本実施形態の他の態様によると、物理記憶ユニットは、固体メモリデバイスを含む。本実施形態の他の態様によると、記憶アクセラレータは、データキャッシュ構造を有する。本実施形態の他の態様によると、エンドポイントコンピュータシステムは、データ読み出し動作またはデータ書き込み動作を実行するよう適合され、方法は、読み出されている、または書き込まれているファイルがエンドポイントキャッシュを行うようマークされているかどうかを判断する段階をさらに含む。本実施形態の他の態様によると、方法は、読み出されている、または書き込まれているファイルがエンドポイントキャッシュを行うようマークされているかどうか、ファイルのメタデータ情報にアクセスすることにより判断する段階をさらに含む。本実施形態の他の態様によると、方法は、データ読み出し動作がコンピュータシステムから要求されているかどうかを判断し、要求されていれば、読み出されているデータが記憶アクセラレータ上に存在するか判断し、a存在すれば、記憶アクセラレータからのデータ読み出し動作を実行し、b存在しなければ、中央記憶システムからデータを要求し、データのコピーを記憶アクセラレータに提供する段階をさらに含む。本実施形態の他の態様によると、方法は、データ書き込み動作がコンピュータシステムにより要求されているかどうかを判断し、要求されていれば、データを記憶アクセラレータに書き込む段階をさらに含む。本実施形態の他の態様によると、方法は、データを中央記憶システムへ書き込む段階をさらに含む。本実施形態の他の態様によると、方法は、中央記憶システムに書き込まれることになるデータをキューする段階をさらに含む。本実施形態の他の態様によると、方法は、中央記憶システムと記憶アクセラレータとの間のデータの一貫性を維持する段階をさらに含む。本実施形態の他の態様によると、書き込む段階は、バッファリングされていないデータを書き込む段階を含む。本実施形態の他の態様によると、データ読み出し動作がバッファリングされる。本願発明の他の実施形態によると、データ記憶方法は、読み出しおよび書き込みのうち少なくとも一方のI/O動作を行うようアプリケーションが要求するデータの有効なオペレーティングシステムバッファリングポリシーを、オペレーティングシステムバッファへデータをアクティブに供給することにより、またはオペレーティングシステムバッファからアクティブにデータを削除することにより、透過的に変更する段階と、I/O動作に必要なオペレーティングシステムバッファキャッシュを有効化するか、または無効化する段階とを含み、オペレーティングシステムバッファへデータを供給することは、アプリケーションがオペレーティングシステムによりキャッシュされたデータを使用するよう構成することを含む。本願発明の他の実施形態によると、データ記憶方法は、読み出し動作および書き込み動作の少なくとも一方を行うようアプリケーションが要求するデータをキャッシュ位置へキャッシュする段階と、読み出しおよび書き込みI/O動作を行うようアプリケーションから要求されたことに応じてデータの有効なバッファリングポリシーを透過的に変更する段階とを含み、有効なバッファリングポリシーを変更する段階は、アプリケーションが要求するデータの少なくとも一部を、キャッシュ位置でバッファリングする段階を含む。本実施形態の一態様によると、上述したキャッシュ位置は、本明細書で説明するエンドポイントキャッシュである。図1に示すように、本願発明により改善が可能となる一般的なコンピューティングインフラストラクチャは、コンピュータ101か、若しくはネットワークリンク102によって中央の、または共有の記憶装置103へと接続された複数のコンピュータである。コンピュータ101は、図7に示す一般的なコンピュータシステム20であるのが好ましい。コンピュータシステム20は多数の物理コンポーネントおよび論理コンポーネントを含む。それら物理コンポーネントおよび論理コンポーネントには、中央演算処理装置CPU24、ランダムアクセスメモリRAM28、入出力I/Oインタフェース32、ネットワークインタフェース36、不揮発性記憶装置40、およびCPU24が他のコンポーネントと通信を行うことを可能にするローカルバス44が含まれる。CPU24は、オペレーティングシステムおよび多数のソフトウェアシステムを実行する。RAM28は、比較的反応の速い揮発性記憶装置をCPU24に対し提供する。I/Oインタフェース32は、キーボード、マウスなど1以上のデバイスから入力を受け付けることを可能とし、ディスプレイおよび/またはスピーカなどの出力デバイスへ情報を出力する。ネットワークインタフェース36は、図1の記憶装置103を含む、他のシステムとの通信を可能とする。不揮発性記憶装置40は、オペレーティングシステムおよびプログラムを格納する。コンピュータシステム20の動作の間、オペレーティングシステム、プログラムおよびデータが不揮発性記憶装置40から取り出され、RAM28に格納されることにより、処理を実行する速度が速くなる。図2は、中央記憶装置210とネットワーク209で通信を行うコンピュータシステム201の模式図である。示されるコンピュータシステムは、CPU204と通信リンク203を介し通信接続するネットワークインタフェース202を含む。CPU204は、ディスクインタフェースと通信リンク205を介し通信接続する。ディスクインタフェースは、ローカルコンピュータ記憶ディスクとリンク208を介し通信を行う。通信リンク203、205、207は、コンピュータシステム203の各要素間の通信手段として、当技術分野で一般的に公知である。示されるように、各要素間のデータ転送速度は、例えば、ネットワークインタフェース202とCPU204との間で32~128ギガビット/秒、CPU204とディスクインタフェース206との間で32~128ギガビット/秒、およびディスクインタフェース206とディスク208との間で3~6ギガビット/秒などと異なり得る。それ自体がコンピュータシステムであってもよい記憶装置210は、それぞれ通信リンク212、214、216を介し接続され、対応して動作するネットワークインタフェース211、CPU213、ディスクインタフェース215、およびディスク217を含む。ネットワーク209は、コンピュータシステム201と中央記憶装置210との間に存在する。物理的な制限およびソフトウェアによる制限によってネットワーク通信の速度には現在のところ、0.1~10ギガビット/秒という限界がある。理解いただけるようにコンピュータシステム201および記憶システム210内には、CPUに近い位置から始まる極めて高い性能からCPUから離れた比較的低い性能まで、実行能力には階層が存在する。しかしながら、一般的に最も遅い接続は、コンピュータと記憶システムとの間のネットワーク接続である。マルチコンピュータネットワーク内に関しても、異なる複数のコンピュータと中央記憶装置との間の複数のデータの流れをサポートするインフラストラクチャが共有されることに起因して、実行能力の階層が存在する。この文脈において、および応用を目的とし、エンドポイントは、中央記憶装置からのデータの最終的な受取デバイスである各コンピュータシステムとして定義する。本願発明は、中央記憶装置からエンドポイントコンピュータシステムへのデータ転送における、ネットワークインフラストラクチャに内在する制限を踏まえた上での、これらのエンドポイントへのデータの送達の改善に関する。図3は、データ転送の効率を改善しようとした従来技術による解決方法を示す。当該方法は、ネットワーク302と記憶装置304との間にアクセラレータ303を配置し、コンピュータシステム301へ転送するべくネットワーク302内にデータが入り込む前に、記憶装置304におけるネットワーク性能が記憶装置304の性能と一致するよう構成することを含む。アクセラレータ303があるタイプのキャッシュモジュールまたは階層化モジュールである場合、アクセラレータ303は階層0記憶層と呼ぶことが出来る。ここで記憶システムはそれ自体が、予め存在する記憶層、階層1、階層2、階層nを含む。図4に示すように、本願発明において、アクセラレータ402上の階層0記憶層は、コンピュータシステム401から見てネットワーク上の遠端に位置している状態から、コンピュータシステム401に対してローカルな状態へと移動しており、ここで、コンピュータシステム401のCPUとアクセラレータ402上の階層0記憶層との間の性能は、図3の従来技術による解決方法よりもはるかに高くすることが出来る。したがって、エンドポイントキャッシュという用語が用いられるのは、階層0が、データが持続して存在するコンピュータと階層1または階層Nとの間の中間ではなく、記憶フローのエンドポイントにあるからである。さらに、本開示において、キャッシュおよび階層化といった用語は、一般的に互換的に用いられる。なぜなら、キャッシュとは階層化の特定のサブセットであり、データを隣の階層へ移動させるという決定は、必要であればなどの他の階層化ポリシーではなく、可能な限り迅速に行われ、特定の階層Nは、当該階層上のデータが他の場合においては若しくは、階層化のタイプによっては、追加的にいずれかの階層MM>N上に存在するはずであるという意味において、キャッシュとして見なすことが出来るからである。本明細書で説明される本願発明は、以下の説明から理解いただけるように、従来技術による解決方法とは異なる。従来技術と異なる点は、a本願発明がファイルアクセスに基づいており、アクセスコンテキストが利用可能であるので、エンドポイントキャッシュが選択的にデータをキャッシュすることを可能とし、よって、それ程区別を行わない他の解決方法よりもさらに効率化を可能とする、細かく適合された対応するポリシーをサポートすることが出来るという点、および、b本願発明はファイルアクセスに基づいており、よってコンテキストに応じて、全てが同様であるブロックベースのシステムのようにか、またはファイルのコンテンツに従って異なるコンテキストセンシティブか、またはアプリケーションの要求に従って異なるデータの塊で動作を行うか、1以上の方式で処理を行うか、を選択することが出来る点、c本願発明は、既存のファイルシステムのエンドユーザにとって完全に透過的である点、およびd本願発明はアグノスティックであり、動作を行う際にファイルシステムの実装方法を変更する必要がないという点である。特に、本願発明に係るエンドポイントキャッシュは、多くのコンピュータシステムがRAM内に格納する、従来のバッファキャッシュとは異なる。なぜなら、a本願発明のエンドポイントキャッシュ内のデータは、CPUから独立して、またバッファキャッシュが揮発性であるのとは対照的に、キャッシュ管理処理によってクリーニングcleanされ新たに書き込まれたデータを階層1にフラッシュするflushし、削除するまで、ローカル階層0レベルに格納され、bエンドポイントキャッシュが、従来のバッファキャッシュで採用する例えば、先読みread-aheadまたは分岐予測branchpredictionなど統計に基づいた予測的なアプローチとは反対に、先見性foresight内部的なまたは外部的な知識に基づくプリエンプティブキャッシュ、または先取りprefetchを用いるからである。本願発明に係るエンドポイントキャッシュは、従来技術のキャッシュネットワークファイルシステムとは異なる。なぜなら、a本願発明は、リモート記憶システムについては例えば、SunMicrosystems登録商標のCacheFSとは異なり、アグノスティックであり、b本願発明は、リモート記憶システムで用いられるプロトコルについては例えば、CodaおよびIntermezzoとして知られる解決方法とは異なりアグノスティックであり、c本願発明は、コンピュータが通常どのように記憶装置を利用するかについて透過的であるからであるTsumuFSまたはxCachefsなどの多くのシステムはリモート記憶システムのタイプからは独立しているが、これらは特別なやり方でリモート記憶装置を搭載する必要があるので透過的ではない。本願発明を実施する、様々な非限定的な例を説明する。以下の説明は、ネットワークと通信を行う単一のコンピュータ上の単一のエンドポイントキャッシュに関するが、本願発明は、ネットワークにアクセスする任意の数のコンピュータに同等に適用することが可能である。さらに、2以上のコンピュータシステムが単一のエンドポイントを形成することも考えられており、よって、システム全体におけるエンドポイントとして構成される1以上のコンピュータに対し1つのエンドポイントキャッシュが提供されてもよい。エンドポイントキャッシュを実装すべく、エンドポイントのコンピュータシステムは、リモート記憶装置が変化を意識することなくローカル階層0に透過的にアクセスするようプログラムされている。階層0は本質的にキャッシュであるので、コンピュータとリモート記憶装置との間の階層1方向へのネットワークの性能要件は、低くなる。なぜなら、時間と関連付けられプリフェッチされたI/Oは、ローカル階層0キャッシュから優先的に処理され、よって、階層0キャッシュが階層1記憶層を更新するのに必要なネットワークトラフィックは、コンピュータがリモートの階層0または階層1へ直接アクセスするよりも少なくても済むよって、個別のエンドポイントおよびネットワークインフラストラクチャ全体としてのネットワーク性能も低くて済む。つまり、エンドポイントアクセラレータにより実装される階層0キャッシュは、ネットワークから一定量の負荷を取り除き、かつエンドポイントコンピュータシステムのCPUと通信を行うことが出来る。この差異は、図5および6に示されている。図5は、コンピュータシステム501が、全体的にネットワーク502にかかり、中央記憶装置503においても負荷Lとして処理される与えられた負荷Lを有する、従来技術のシステムを示す。図6は、コンピュータシステム601が与えられた負荷Lを有する本願発明の実施形態を示す。アクセラレータ602上で実装される階層0キャッシュにかかる負荷は、HRだけ軽減される。ここでHRは0より大きく、1より小さい。したがって、ネットワーク603は、負荷L1-HRを有し、この負荷は、中央記憶装置604が処理する負荷でもある。同様に、中央記憶装置604上の階層1記憶層の性能要件は、低くなる。なぜなら、ここで階層1記憶層は、階層0記憶層がなかった場合にコンピュータによって生じるピーク負荷要件ではなく、キャッシュを行ったうえで示される平均負荷要件を処理すればよいからである。よって、本願発明は、コンピューティングインフラストラクチャの経済的な効率性に繋がる技術的な解決方法を提供する。ウィンドウズ登録商標のオペレーティングシステムで本願発明を実装するにあたり、また、図8を参照すると、本願発明の実装においては、フィルタドライバを作成し、ファイルシステム入出力動作の全ての通信経路となるフィルタスタックにフィルタドライバを設けることを含む。フィルタドライバは、ファイルがエンドポイントキャッシュを行うようマークされているかどうかを判断する段階805を含む本願発明の実施形態に係る方法を実施するようプログラムされているか、または適合されている。このことは、ファイルが、エンドポイントキャッシュを行うようマークされたことを示すヘッダまたは他の記述子情報を含むかどうかを判断するよう構成されたコンテキストパターンまたはポリシーと、ファイルのコンテキストを一致されることにより、行うことが出来る。これは、各ファイルが開かれたときに実行するのが好ましい。段階810において、ファイル記述子が、当該ファイルがエンドポイントキャッシュを行うようマークされていることを示すのであり、フィルタドライバが読み出し動作を認識すれば、要求されたデータがアクセラレータ上の階層0キャッシュに存在するかどうかの確認が行われ、行われているのであれば、階層0キャッシュからの読み出しが実行される。要求されたデータが階層0キャッシュ上に見つからなければ、データがソースの位置つまり中央記憶装置から取り出され、読み出しが実行される。また、階層0キャッシュはデータのコピーの受信および格納を行う。代替的に、フィルタドライバが書き込み動作を認識すれば、段階815において、階層0キャッシュが新たに書き込まれるデータにより更新され、また、当該データが中央記憶装置のソース位置に即座に書き込まれる。代替的に、書き込み動作を遅れて行うことも可能であり、ここで階層0キャッシュには即座に新たなデータが書き込まれ、中央記憶装置へ当該データを書き込む動作がキューに入れられる。このことにより、ネットワークに対する負荷をモニタリングおよび制御することができ、優先度の高いデータがネットワーク上での転送において高い優先度を与えられる。段階820において、データの一貫性を維持するべく、必要であれば他の動作のインターセプトを行う。例えば、ソースファイルシステムの変更が、階層0キャッシュ内で対応する変更としてマッピングされる必要があり、または、ファイルネームによりキャッシュがキーされていた場合、適切な名前の変更動作がこの段階で行われる。この段階でインターセプトされ処理される他の例としては、ファイルの削除動作、ファイル属性の変更などが含まれる。段階830において、キャッシュ管理機能またはキャッシュ管理モジュールが提供され、階層0キャッシュに空きスペースがない場合、必要に応じて階層0キャッシュのスペースを使えるようにする。この空きスペースを作り出す処理の間に階層0キャッシュからパージされるデータは、キャッシュ管理機能にプログラムされたポリシーに基づいてよい。例えば、最も古いデータ、最もアクセス頻度の低いデータ、最も優先度の低いデータ例えば、定義されるようにユーザファイル対システムファイルのうちのいずれか1つ、または、本願発明の特定の実施形態に応じて決定される他の任意のデータポリシーに基づいて処理が行われる。段階840において、ソースファイルへの適切なアクセスを可能にするソースファイルへのアクセスメカニズムが、オペレーティングシステムカーネルの内部または外部で協働して行われる処理を用いて提供される。リモートのソースファイルに関しては、この機能は、カーネルの外部で提供される。ソースファイルは上述したように、階層0キャッシュ上または中央記憶装置上に存在し得うるが、このメカニズムにより、CPUは常に、エンドポイントキャッシュを行うようマークされたファイルの通信処理を、階層0キャッシュを通じてルーティングする。上述した本願発明の実施形態は、公知のキャッシュ技術および処理を用いるが、それらを新規かつ自明でないやり方で適用する。例えば、CPUがアクセラレータおよび階層0と通信を行う方法および処理は詳細には説明しない。さらに、本願発明を実施するこれらのキャッシュ技術および処理は公知であるかもしれないが、ネットワークへの負荷が大幅に軽減されること、階層0キャッシュがエンドポイントのCPUおよびネットワークに対して透過的であること、中央記憶装置および/またはエンドポイントコンピュータシステム自体に対して完全にアグノスティックであること、といった結果は、新規のものである。本願発明に係る要素の構成により、全体的により効率的なコンピュータ/ネットワーク/記憶システムが提供される。段階805、810で構成されるコンテキストパターンは、基本的なものであってもよく、階層0キャッシュ内のデータの全てのキャッシュを行い得、若しくは、洗練された特定的なものであってもよく、この場合、例えばファイルネームのパターン、アクティブなユーザ、アクティブなアプリケーション、または他の関連するポリシーにより特定される特定のタイプのファイルのみが階層0キャッシュにキャッシュされる。本願発明が実施される場合、データのフローを制御するべくそのようなコンテキストパターンが用いられ、階層0キャッシュのより細かな制御、したがって、効率的な利用が可能となる。さらに、図2に示すような記憶アクセラレータの利用のように一般的なキャッシュは当技術分野で公知であるが、本明細書で説明する階層0キャッシュの機能を実行するアクセラレータの利用は新規のものであり、自明ではなく、当技術分野では公知となっていない、本明細書で述べられるようなかつては予期できなかった結果がもたらされる。特にエンドポイントキャッシュが、エンドポイントにとってローカルな、高速で処理を行うことが出来る記憶装置と行う場合において、本願発明を実施する様々な他の方法、または様々な段階を考え付くことが可能である。例えば、2011年8月24日にZachariassenらにより出願された同時係属出願であるPCT国際出願番号PCT/CA2011/050514に説明されるようなファイルシステムエクステンションを用いることが出来る。当該特許出願は、本明細書に参照により組み込まれる。そのようなファイルシステムエクステンションを用いることにより、ローカル記憶装置上のファイルシステムを拡張することが出来、ローカル記憶装置で用いられる特定のファイルシステムとは独立して、階層0キャッシュの記憶媒体上にデータを格納することが出来る。よって、本願発明に係るアクセラレータ上の階層0キャッシュは、アクセラレータ上が動作するコンピュータシステムにとってローカルなファイルシステムの一部であるように見え、階層0キャッシュとローカル記憶装置との間の通信は、完全に透過的なものとなる。既存のファイルシステムが本質的に階層0キャッシュの機能性を提供するように変更を加えることも考えられる。このことは、フィルタドライバに関して上記で説明したのと同様なやり方で達成することが可能であるが、フィルタドライバなしでファイルシステムの機能を拡張することにより実施が可能である。なお、本願発明を実施するべくファイルシステムの機能を拡張する一方、階層0キャッシュは、典型的なローカルなコンピュータキャッシュとは区別して異なるように動作し、ここで、キャッシュされるデータは、ネットワークおよび中央記憶装置ユニットから離れた側において読み出し/書き込み動作を行うことが意図されているデータである。この動作は、一般的にコンピュータシステムのRAMによって迅速にアクセスされることが意図されるデータをキャッシュするよう処理する、ローカルなコンピュータキャッシュとは異なる。一変形例において、既存のファイルシステム上での階層0キャッシュの機能性を可能にする目的で利用可能なオペレーティングシステムファシリティを用いるスタック可能なファイルシステムが提供される。既存のファイルシステム上で非協働的にスタックされるスタンドアロン型ファイルシステムも用いることが出来る。レイテンシーを最小限にすることが重要である環境においては、本願発明を、必要とされるオペレーティングシステムカーネルの利用を最小化するやり方で実施することも考えられる。このことは、各アプリケーションと関連付けられる記憶アクセラレーション機能の部分と、当該アプリケーションが実行されるハードウェアまたはバーチャルなハードウェアで実行される部分とを提供することにより実施することが出来る。このことを達成するべく、特定のアプリケーションにより実行されるI/O動作は、それらがカーネルに入る前にインターセプトされなければならなく、ファイルまたはI/Oがエンドポイントキャッシュを行うようマークされている場合、当該I/O動作を当該カーネルを直接的に通る、または当該カーネルの近くを通るソフトウェアモジュール、例えばダイレクトブロックアクセス直接的に通るまたはメモリマッピングアクセス近くを通るなどでリダイレクトする。これらのアクセス方法は、関連する記憶アクセラレーション装置が、各アプリケーションに関連付けられた部分と協働して、本明細書で説明する本願発明に係る階層0および記憶アクセラレーションの機能性を完全に提供するプロトコルAPIプログラム可能APIではなくを提供する必要がある。このことは、ユーザレベルでI/O動作をインターセプトするのに用いられる方法が透過的なやり方であるので、アプリケーションに対し透過的なものであり得る。そのような方法の1つにおいては、全てのアプリケーションにより用いられる、動的に負荷を受けるシステムコールライブラリを、本願発明により求められるインターセプト、ポリシーおよび協働的な機能を実装するバージョンへと追加されたカーネルのアシストを通じてリダイレクトすることを伴う。メモリをマッピングするインタフェースを用いるカーネルを避ける実施形態において、コンテキストスイッチング、カーネルIOマネージメント、ファイルシステム処理、フィルタ、および全てのI/O動作に用いられるデバイスドライバスタックに伴うリソースおよび時間を省略でき、レイテンシーの影響を緩和することが出来る。さらに、オペレーティングシステムバッファキャッシュメカニズムに対し、階層0キャッシュが設けられる利用可能なRAMに加え、ローカルな高速で処理を行う記憶装置を用いるように変更を加えてよい。一変形例において、NFSまたCIFSなどのリモート記憶装置ドライバ、またはリモートブロックデバイスドライバに対し、上述したように階層0キャッシュを通じたデータのポリシールーティングを適用するよう変更を加えてもよい。そのような変更は、当業者にとっては本明細書から明白である。本明細書で説明するように、ロジカルボリュームドライバを作成または変更し、リアルなブロックデバイスからバーチャルなブロックデバイスを作成し、階層0キャッシュを提供してもよい。ファイルシステムに既に組み込まれたファシリティを用い、コンピュータシステム上でローカルにファイルをキャッシュすることにより、この処理を補足してもよい。ブロック記憶ドライバと協働してコンテキスト情報をブロックベースのキャッシュシステムへ提供するファイルシステムまたはフィルタドライバを用いてもよい。代替的に、リモート中央記憶システムは、記憶プロトコルがリファレンスreferencingを許可するのであれば、ローカル階層0キャッシュ記憶に関する制御または情報を管理してもよい。本実施形態において、階層0キャッシュに関する何らかの制御は、中央記憶装置により行われる。しかし、上述したようなポリシーまたはコンテキストに関するルールを管理する責任は、エンドポイントのCPUで管理されるのが好ましい。既存のファイルに対して透過的にエンドポイントキャッシュ機能を提供する従来技術は存在しない。NFSまたはCIFSなどの一般的なリモートファイルシステムは、中央記憶装置のローカルかつ持続的なキャッシュを用いず、さらに、本明細書で説明する本願発明を実施する機能およびそのような示唆を含んではいない。いくつかのクラウド記憶サービスへのファイルシステムのインタフェースまたはオブジェクト記憶においては、持続的かつローカルなキャッシュが用いられるが例えば、Dropbox登録商標など、既存のファイルと透過的に協働するのとは反対に、独立したファイルシステムまたは特別な同期化したディレクトリとして提示する。既存のファイルと透過的に協働する機能は、ネットワークにおいてリモート記憶装置自体から下流にあり、エンドポイントのCPUと通信を行う、リモート記憶装置の階層1から階層NN≧1を有するリモート中央記憶装置の階層0キャッシュによってのみ提供される。好ましい実施形態は、特にウィンドウズ登録商標のオペレーティングシステムのコンテキストにおいて適用されているが、Linux登録商標およびUnix登録商標など他のオペレーティングシステム環境を含む他のコンテキスト、および当然ながら従来のファイルシステムをエンドユーザに示さないモバイルシステムのコンテキストなどにおいても同じ一般的な方法を適用することが出来る。本願発明のいくつかの変形例において、リモートファイルシステムプロトコルに関して当てはまり、典型的にはブロックデバイスに関しては当てはまらないように、リモート記憶システムが共有される。本変形例において、エンドポイントキャッシュの機能は、複数の独立したクライアント間でキャッシュの一貫性を維持するよう適合される。リモートファイルシステムプロトコルはクライアント間での一貫性を維持する必要があるので、通常、この状況に対応する。この場合において、リモートの中央記憶装置が複数のリモート記憶装置で構成されており、また代替例においては、多数のエンドポイントコンピュータシステムがデータをリモート記憶装置へ書き込んでおり、ここでデータ自体が2つ以上のエンドポイントコンピュータシステムの間で共有される。データのリースleaseまたは取り消し可能なrevocableロックは、一般的にそのような一貫性を確保するべく用いられており、エンドポイントキャッシュアクセラレータまたは階層0は、キャッシュのセマンティックを維持するべくデータを適切にフラッシュすることによりつまり、完全に削除するか書き込むことにより、データへの排他的なアクセス権を無効にするプロトコルメッセージと協働しなければならない。好ましい実施形態において、ソースファイルへのアクセスを提供する処理に対し、そのような無効化が知らされるように構成され、適切な動作が行われる。本願発明の1つの追加的な効果は、リモート記憶システムが利用不可能であるか、若しくはネットワークから切断されている際に現れる。この状況において、構成可能なポリシー制御が実行され、エンドポイントキャッシュの動作を制御する。デフォルトの動作は、例えば、可能であれば階層0キャッシュからの読み出し動作が実行され、若しくは失敗に終わり、階層0キャッシュにおいて書き込み動作が実行され、中央記憶装置へ後に書き込むべくキューに入れられる。続いて、他のシステムからのコンフリクトする書き込み動作が同時に発生した場合、コンフリクトする処理を解決する方法が必要となる。本願発明の一変形例において、アプリケーションが使用する有効なI/Oバッファリングポリシーが透過的に変更される。現在用いられているオペレーティングシステム上で動作するアプリケーションは一般的に、バッファリングされたI/OとバッファリングされていないI/Oとの間で選択を行う。バッファリングされたI/Oとは、アプリケーションが要求するI/O動作がオペレーティングシステムカーネル内のキャッシュマネージャを通り、読み出し動作に関しては、カーネルバッファキャッシュ内の要求されたデータをルックアップし、書き込み動作に関しては、提供されたデータをカーネルバッファキャッシュに書き込み、カーネルは、I/Oの実際のターゲットの更新を主記憶装置のいずれかの位置において担当することを意味する。バッファリングされていないI/Oとは、上述したようにアプリケーションにより要求されたI/O動作がキャッシュマネージャを通らず、代わりに、リアルタイムで、主記憶装置上のI/Oのターゲットからデータを読み出し、または当該ターゲットへデータを書き込むことを意味する。この実施形態の変形例では、物理的な位置への書き込みが単にキューに入れられるのではなく、データが、書き込みの成功がアプリケーションに報告される前に、当該データを表す物理的な位置へ実際に確実に書き込まれるようにする。本願発明の本変形例は、読み出しおよび書き込みのうち少なくとも一方のI/O動作を行うようアプリケーションが要求するデータの有効なオペレーティングシステムバッファリングポリシーを、データをオペレーティングシステムバッファへアクティブに供給することにより、またはオペレーティングシステムバッファからアクティブにデータを削除することにより、透過的に変更する段階と、I/O動作に必要なオペレーティングシステムバッファキャッシュを有効化するか、または無効化する段階とを含み、オペレーティングシステムバッファへデータを供給する段階は、アプリケーションがオペレーティングシステムによりキャッシュされたデータを使用するよう構成する段階を含む。本願発明は、各I/Oタイプのバッファリングを独立して制御することにより、このシナリオに適用することが可能である。例えば、読み出し動作がバッファリングされる一方で書き込み動作がバッファリングされない。一例として、通常ではバッファリングされていないI/O動作により動作するデータベースが現実には、動作セマンティックに変更を加えることなく、バッファリングされた読み出し動作およびバッファリングされていない書き込み動作を行うことが出来る。I/Oを要求するアプリケーションに対し外部で、かつ当該アプリケーションに対して透過的にI/O動作のバッファリングを制御する単純な方法の1つは、本願発明に係る記憶アクセラレータ機能の完全な制御下にある階層0キャッシュ記憶においてデータのバッファリングを制御することである。このことは、このように動作するように外部からのポリシーによって設定することが出来る、2011年8月24日にZachariassenらにより出願された同時係属出願であるPCT国際出願番号PCT/CA2011/050515に説明されるようなインターセプトキャッシュモジュールにより達成することが出来る。当該特許出願は、本明細書に参照により組み込まれる。当該PCT出願のインターセプトキャッシュモジュールは、3つの方法によりアプリケーションキャッシュを制御することが出来る。それら3つの方法とは、特定のタイプのバッファリングを要求するアプリケーションからのファイルオープンパラメータをインターセプトし、それらを適切に変更すること、および/または、階層0キャッシュ上に保持されるデータのバッファリングを変更すること、および/または、オペレーティングシステムキャッシュマネージャへのクエリー、および当該マネジャーからの要求をインターセプトすること、である。このようにして、エンドポイントキャッシュは、本願発明を用いない場合であればネットワークを横切ってリモート記憶装置まで到達しなければならないI/Oに対して、エンドポイントコンピュータシステム内でマルチレベルのキャッシュを行うことが出来る。上述した実施形態は本願発明の例として用いられており、当業者であれば、以下の請求項によってのみ定められる本願発明の態様から逸脱することなく、変更および修正を加えることが可能である。