(57)【要約】【課題】  ローカル不揮発性メモリ（ＮＶＭ）キャッシュを使用して信頼性のあるディスクレスネットワークブータブルコンピュータを提供する。【解決手段】  ＮＶＭキャッシュ２０８は、ネットワークが一時的に利用できないときや遅いときに、コンピュータが使用する。後でネットワーク状態が改善されたとき、このキャッシュ２０８と、リモートストレージボリューム１８２を備えるリモートブートサーバ１８３の間で同期がとられる。データをＮＶＭキャッシュ２０８にストアするか、またはリモートストレージボリューム１８２にストアするか判断される。リモートストレージボリューム１８２に送信されたデータはトランザクションによって書き込まれ、ネットワーク障害が発生している場合、またはトランザクション完了メッセージを受信しなかった場合は、データはＮＶＭキャッシュ２０８にキャッシュされる。【選択図】  図１
2004178596.tif 000002
【特許請求の範囲】
【請求項１】
リモートストレージボリュームを備えるネットワークに結合される不揮発性メモリ（ＮＶＭ）キャッシュを備えるコンピュータのコンピュータオペレーティングシステムを信頼性を維持しつつ動作させるための方法であって、
アプリケーションと前記コンピュータオペレーティングシステムの一方からデータを受信するステップと、
前記データを前記ＮＶＭキャッシュと前記リモートストレージボリュームのどちらにストアすべきか判断するステップと、
前記ＮＶＭキャッシュにストアされる前記データを前記ＮＶＭキャッシュに書き込むステップと、
前記データが前記リモートストレージボリュームにストアされる場合、前記データをトランザクションによって前記リモートストレージボリュームに書き込むステップと、
ネットワーク障害が発生している場合またはトランザクション完了メッセージを受信していない場合、前記リモートストレージボリュームにストアされる前記データを前記ＮＶＭキャッシュにキャッシュするステップと、
前記ネットワークが動作しているときに、前記ＮＶＭキャッシュにキャッシュした前記リモートストレージボリュームにストアされる前記データをトランザクションによって前記リモートストレージボリュームに書き込むステップと
を含むことを特徴とする方法。
【請求項２】
ネットワークの障害中に処理を続行するためにユーザが必要とするデータを前記ＮＶＭキャッシュにストアするステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記ユーザの過去の使用履歴を維持管理するステップをさらに含むことを特徴とする請求項２に記載の方法。
【請求項４】
前記コンピュータオペレーティングシステムのパワーダウン（power down）と前記コンピュータオペレーティングシステムの休眠との少なくとも一方の前に、前記ＮＶＭキャッシュにストアされる、前記データと静的設定データと動的設定データを決定するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記データと前記静的設定データと前記動的設定データを決定するステップが、
ネットワーク障害が発生した場合に、ユーザが作業を続行できるようにする、前記データと１組の静的設定データと１組の動的設定データを決定するステップを含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記データと前記１組の静的設定データと前記１組の動的設定データを決定するステップが、デスクトップ設定を決定することと、キーボード設定を決定することと、前記コンピュータオペレーティングシステムのパワーダウンと前記コンピュータオペレーティングシステムの休眠との少なくとも１つの前に使用されていたデータファイルを決定することの少なくとも１つを含むことを特徴とする請求項５に記載の方法。
【請求項７】
前記コンピュータに電源を入れたときに前記ネットワークが利用できない場合、前記ＮＶＭキャッシュからブートするステップをさらに含むことを特徴とする請求項５に記載の方法。
【請求項８】
前記ネットワークが利用可能になった後で、前記ＮＶＭキャッシュ内および前記リモートストレージボリューム内の前記データを同期させるステップをさらに含むことを特徴とする請求項７に記載の方法。
【請求項９】
前記ＮＶＭキャッシュからブートするステップをさらに含むことを特徴とする請求項５に記載の方法。
【請求項１０】
前記ＮＶＭキャッシュ内および前記リモートストレージボリューム内のデータの変更日付をチェックするステップと、前記ＮＶＭキャッシュ内の前記データより日付が新しいデータを前記リモートストレージボリュームからロードするステップをさらに含むことを特徴とする請求項９に記載の方法。
【請求項１１】
前記ネットワークが利用できない場合、前記ＮＶＭキャッシュを使用して休眠状態から処理を再開するステップをさらに含むことを特徴とする請求項５に記載の方法。
【請求項１２】
電力停止中に前記アプリケーションから送信された、前記リモートストレージボリュームに送信すべきデータを前記ＮＶＭキャッシュに書き込むステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項１３】
前記トランザクション完了メッセージを受信していない場合、前記リモートストレージボリュームにデータを再送信するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項１４】
前記ＮＶＭキャッシュにストアされた、前記データおよび静的設定データおよび動的設定データが、前記リモートストレージボリュームにストアされた、データおよび静的設定データおよび動的設定データと整合しているかどうか判断するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項１５】
前記ＮＶＭキャッシュにストアされた、前記データおよび静的設定データおよび動的設定データと、前記リモートストレージボリュームにストアされた、データおよび静的設定データおよび動的設定データが整合していない場合、前記ＮＶＭキャッシュにストアされた、前記データおよび静的設定データおよび動的設定データ、または前記リモートストレージボリュームにストアされた、データおよび静的設定データおよび動的設定データを更新するステップをさらに含むことを特徴とする請求項１１に記載の方法。
【請求項１６】
リモートストレージボリュームを備えるリモートブートサーバを動作させる方法であって、
不揮発性メモリ（ＮＶＭ）キャッシュを備えるコンピュータからブート要求を受信するステップと、
前記リモートストレージボリュームにストアされた静的設定データおよび動的設定データを使用して前記コンピュータをブートするステップと、
前記リモートストレージボリュームにストアされるデータを前記コンピュータから受信するステップと、
前記データを前記リモートストレージボリュームに書き込むステップと
を含むことを特徴とする方法。
【請求項１７】
前記データを前記リモートストレージボリュームに書き込むステップが完了したときに、前記コンピュータに完了メッセージを送信するステップをさらに含むことを特徴とする請求項１６に記載の方法。
【請求項１８】
前記ＮＶＭキャッシュ内のデータの更新と前記ＮＶＭキャッシュにストアされたデータの前記リモートストレージボリュームへの複製の一方を周期的に実行するステップをさらに含むことを特徴とする請求項１６に記載の方法。
【請求項１９】
前記リモートブートサーバが不揮発性メモリキャッシュを備え、
初期化時間が前記リモートストレージボリューム内のディスクドライブのスピンアップ時間とほぼ等しい、静的設定データおよび動的設定データを前記不揮発性メモリキャッシュにストアするステップと、
前記コンピュータシステムのブート中と前記コンピュータシステムの休眠状態からの再開中の少なくとも一方で、前記ディスクドライブが回転数を上げているうちに前記静的設定データおよび動的設定データを初期化するステップと、
前記コンピュータシステムの前記ブート中と前記コンピュータシステムの休眠状態からの前記再開中の少なくとも一方で、前記ディスクドライブにストアされた残りの設定データを初期化するステップと
をさらに含むことを特徴とする請求項１６に記載の方法。
【請求項２０】
不揮発性メモリキャッシュを備えるコンピュータのためのネットワークスタックであって、
何が前記不揮発性メモリキャッシュおよびリモートストレージボリュームにストアされているか判断する予測キャッシュコントロールモジュールと、
前記予測キャッシュコントロールモジュールと通信し、エラーを処理するファイルシステムフィルタドライバと、
前記ファイルシステムフィルタドライバと通信するファイルシステムであって、前記リモートストレージボリューム内のハードディスクへファイルをストアし、かつ取り出すためのファイルシステムと、
前記ファイルシステムおよび前記不揮発性メモリキャッシュと通信する書込みキャッシュフィルタドライバと、
前記書込みキャッシュフィルタドライバと通信するネットワークプロトコルレイヤと、
前記ネットワークプロトコルレイヤおよび前記リモートストレージボリュームと通信するネットワークアダプタドライバと
を含むことを特徴とするネットワークスタック。
【請求項２１】
前記書込みキャッシュフィルタドライバと前記不揮発性メモリキャッシュとの間に、前記書込みキャッシュフィルタドライバおよび前記不揮発性メモリキャッシュと通信する不揮発性キャッシュドライバを含むことを特徴とする請求項２０に記載のネットワークスタック。
【請求項２２】
ネットワーク障害が発生している場合、前記書込みキャッシュフィルタドライバは、前記リモートストレージボリュームに送信されるべきデータを前記不揮発性メモリキャッシュに書き込むことを特徴とする請求項２０に記載のネットワークスタック。
【請求項２３】
前記書込みキャッシュフィルタドライバはさらに、前記ファイルシステムフィルタドライバおよび前記予測キャッシュコントロールモジュールと通信することを特徴とする請求項２０に記載のネットワークスタック。
【請求項２４】
コンピュータ内で信頼性を維持しつつコンピュータオペレーティングシステムを動作させるステップを実行するためのコンピュータ実行可能命令を有するコンピュータ可読媒体であって、前記コンピュータがリモートストレージボリュームを備えるネットワークに結合される不揮発性メモリ（ＮＶＭ）キャッシュを備え、前記ステップが、
アプリケーションと前記コンピュータオペレーティングシステムの一方からデータを受信するステップと、
前記データを前記ＮＶＭキャッシュと前記リモートストレージボリュームのどちらにストアすべきか判断するステップと、
前記データが前記リモートストレージボリュームにストアされる場合、前記データをトランザクションによって前記リモートストレージボリュームに書き込むステップと、
ネットワーク障害が発生している場合またはトランザクション完了メッセージを受信していない場合、前記リモートストレージボリュームにストアされる前記データを前記ＮＶＭキャッシュにキャッシュするステップと、
前記ネットワークが動作しているときに、前記ＮＶＭキャッシュにキャッシュした前記リモートストレージボリュームにストアされる前記データをトランザクションによって前記リモートストレージボリュームに書き込むステップと
を含むことを特徴とするコンピュータ可読媒体。
【請求項２５】
前記ＮＶＭキャッシュにストアされる前記データを前記ＮＶＭキャッシュに書き込むことを含むステップを実行するためのコンピュータ実行可能命令をさらに有することを特徴とする請求項２４に記載のコンピュータ可読媒体。
【請求項２６】
ネットワークの障害中に処理を続行するためにユーザが必要とするデータを前記ＮＶＭキャッシュにストアすることを含むステップを実行するためのコンピュータ実行可能命令をさらに有することを特徴とする請求項２４に記載のコンピュータ可読媒体。
【請求項２７】
前記ユーザの過去の使用履歴を維持管理することを含むステップを実行するためのコンピュータ実行可能命令をさらに有することを特徴とする請求項２４に記載のコンピュータ可読媒体。
【請求項２８】
前記コンピュータオペレーティングシステムのパワーダウンと前記コンピュータオペレーティングシステムの休眠との少なくとも一方の前に、前記ＮＶＭキャッシュにストアされる前記データおよび静的設定データおよび動的設定データを決定するステップを含む前記ステップをさらに実行するためのコンピュータ実行可能命令を有することを特徴とする請求項２４に記載のコンピュータ可読媒体。
【請求項２９】
前記データおよび静的設定データおよび前記動的設定データを決定する前記ステップが、ネットワーク障害が発生した場合にユーザが作業を続行できるようにする、前記データと１組の静的設定データと１組の動的設定データとを決定することを含むことを特徴とする請求項２８に記載のコンピュータ可読媒体。
【請求項３０】
前記コンピュータに電源を入れたときに前記ネットワークが利用できない場合、前記ＮＶＭキャッシュからブートすることを含むステップを実行するためのコンピュータ実行可能命令をさらに有することを特徴とする請求項２９に記載のコンピュータ可読媒体。
【請求項３１】
前記ネットワークが利用できない場合、前記ＮＶＭキャッシュを使用して休眠状態から処理を再開することを含むステップを実行するためのコンピュータ実行可能命令をさらに有することを特徴とする請求項２９に記載のコンピュータ可読媒体。
【請求項３２】
パワーダウン中に前記アプリケーションから送信された、前記リモートストレージボリュームに送信すべきデータを前記ＮＶＭキャッシュに書き込むことを含むステップを実行するためのコンピュータ実行可能命令をさらに有することを特徴とする請求項２４に記載のコンピュータ可読媒体。
【請求項３３】
前記トランザクション完了メッセージを受信していない場合、前記リモートストレージボリュームにデータを再送信することを含むステップを実行するためのコンピュータ実行可能命令をさらに有することを特徴とする請求項２４に記載のコンピュータ可読媒体。
【請求項３４】
前記データおよび静的設定データおよび動的設定データが、前記ディスクドライブにストアされた、データおよび静的設定データおよび動的設定データと整合しているかどうか判断するステップを実行するためのコンピュータ実行可能命令をさらに有することを特徴とする請求項２４に記載のコンピュータ可読媒体。
【請求項３５】
前記ＮＶＭキャッシュにストアされた、前記データおよび静的設定データおよび動的設定データと、前記リモートストレージボリュームにストアされた、データおよび静的設定データおよび動的設定データが整合していない場合、前記ＮＶＭキャッシュにストアされた、前記データおよび静的設定データおよび動的設定データの更新と、前記ＮＶＭキャッシュにストアされた、データおよび静的設定データおよび動的設定データの前記リモートストレージボリュームへの複製の一方を実行することを含むステップを実行するためのコンピュータ実行可能命令をさらに有することを特徴とする請求項３４に記載のコンピュータ可読媒体。
【請求項３６】
リモートストレージボリュームを備えるリモートブートサーバを動作させるステップを実行するためのコンピュータ実行可能命令を有するコンピュータ可読媒体であって、前記ステップが、
不揮発性メモリ（ＮＶＭ）キャッシュを備えるコンピュータからブート要求を受信するステップと、
前記リモートストレージボリュームにストアされた静的設定データと動的設定データを使用して前記コンピュータをブートするステップと、
前記リモートストレージボリュームにストアされるデータを前記コンピュータから受信するステップと、
前記データを前記リモートストレージボリュームに書き込むステップと
を含むことを特徴とするコンピュータ可読媒体。
【請求項３７】
前記データを前記リモートストレージボリュームに書き込むステップが完了したときに、前記コンピュータに完了メッセージを送信することを含むステップを実行するためのコンピュータ実行可能命令をさらに有することを特徴とする請求項３６に記載のコンピュータ可読媒体。
【請求項３８】
前記ＮＶＭキャッシュ内のデータの更新と前記ＮＶＭキャッシュにストアされたデータの前記リモートストレージボリュームへの複製の一方を周期的に実行することを含むステップを実行するためのコンピュータ実行可能命令をさらに有することを特徴とする請求項３６に記載のコンピュータ可読媒体。
【請求項３９】
前記リモートブートサーバが不揮発性メモリキャッシュを備え、
初期化時間が前記リモートストレージボリューム内のディスクドライブのスピンアップ時間とほぼ等しい、静的設定データおよび動的設定データを前記不揮発性メモリキャッシュにストアするステップと、
前記コンピュータシステムのブート中と前記コンピュータシステムの休眠状態からの再開中の少なくとも一方で、前記ディスクドライブが回転数を上げているうちに前記静的設定データおよび動的設定データを初期化するステップと、
前記コンピュータシステムの前記ブート中と前記コンピュータシステムの休眠状態からの前記再開中の少なくとも一方で、前記ディスクドライブにストアされた残りの設定データを初期化するステップと
を含むステップを実行するためのコンピュータ実行可能命令をさらに有することを特徴とする請求項３６に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にネットワークブータブルコンピュータに関し、より詳細には、ディスクレスネットワークブータブルコンピュータ（diskless network-bootable computer）に関する。
【背景技術】
【０００２】
ハードディスクは、現在のパーソナルコンピュータ（ＰＣ）を構成する不可欠なコンポーネントの１つである。現在のＰＣアーキテクチャでは、適切に機能するように、主システムハードディスク（primary system hard disk）とその他のＰＣコンポーネントとは極めて緊密に結合され、物理的に同一の場所に配置されている。このＰＣ構築上の基礎要件は、多くの問題、非効率、制約を生み出している。例えば、現行のアーキテクチャでは、ユーザは（ドキュメント、ファイル、設定、認証その他の）重要なユーザ「状態（state）」をユーザのデスクトップＰＣ内のハードディスクにローカルにストアし管理することを余儀なくされている。
【０００３】
このアーキテクチャは、情報技術（ＩＴ）組織（organization）において、スタンドアロンＰＣおよびネットワーク接続されたＰＣのインフラストラクチャのサポートおよび管理に多額の費用がかかる原因となっている。さらに、企業のＩＴ組織では、個々のハードドライブにストアされた企業資産の管理が適切に行えなくなっている。例えば、デスクトップごとにプログラムのバックアップおよびリストアを管理するのは非効率かつ困難である。ノンブーティングハードドライブ（non-booting hard drive）が絡む問題では、サービスコールおよび／またはＰＣへの物理アクセスが必要になる。デスクトップストレージは専門家が管理していないため、企業資産がしばしば失われる。また、ＩＴ組織は、ユーザ状態を直接管理することができないので、ＰＣの未承認使用を「取り締まる」ことが難しい。
【０００４】
主システムハードディスクとその他のＰＣコンポーネントとが緊密に結合され、物理的に同一の場所に配置されているため、企業内のユーザのストレージをプールする機会が失われている。今日の企業ユーザが必要としているディスク空間は平均で約５ＧＢである。今日のＰＣに搭載されている最小のハードドライブは約３０ＧＢ（ムーアの法則によれば、将来的には４０ＧＢ、６０ＧＢ、８０ＧＢと増加することが予想される）である。つまり、今日企業で使用されている平均的なＰＣにおける未使用のディスク空間の量は８０％を超える。
【０００５】
ストレージ管理はこの５年から１０年の間に目覚しい進歩を遂げた。ＬＵＮ（論理ディスクユニット）を仮想化し、これらの仮想化リソースの「背後」でストレージを継ぎ目なしに管理できるようになったことで、企業ストレージの管理にかかる費用は大幅に削減された。ユーザのデスクトップに存在するストレージは、これらの進歩の恩恵を受けることができない。
【０００６】
この緊密な結合と内蔵ハードドライブへのＰＣの依存は、ユーザが経験する他の派生的問題を生んでいる。ハードドライブは回転数を上げる（spin up）のに時間がかかる。この時間は、ＰＣのブートまたは休眠状態からの再開に必要な時間の大部分を占める。ハードドライブは可動部分を有する数少ないＰＣ内コンポーネントの１つである。したがって、ハードドライブは最も信頼性の低いＰＣコンポーネントであり、ＰＣが発する熱と音の最大の発生源の１つである。
【０００７】
これらの問題を解決するため、ＰＣ業界は何度も、企業ＰＣからハードディスクを取り除こうと試みた。ディスクレス「ネット」ＰＣ（disk-less "net"  ＰＣ）を生み出すこうした試みの多くは、ＢＯＯＴ−ＰやＰＸＥ（プレブート実行環境）などの技術を利用して、集中管理されたストレージからブートし実行するものである。こうした試みはどれも成功しなかった。こうした試みが成功しなかった理由の１つは、ＰＣアーキテクチャおよびオペレーティングシステムが信頼性を維持しつつ動作するために要求する、整合性があり待ち時間の短い「ブロック」アクセスを、イーサネット（登録商標）およびＴＣＰ／ＩＰが保証できないことにある。別の理由は、ページファイルやシステムレジストリファイルなどの重要なファイルは、ユーザが安心して使用できるように、ＰＣごとにローカルにもたなければならないことにある。さらに、ｅメール、ファイルシェアリング、ウェブアクセスなど、ＰＣアプリケーションの大多数は、オペレーティングネットワーク（operating network）が適切に動作していることを必要とする。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ネットワークが信頼性や最適水準を維持して動作していないと、ユーザの生産性は負の影響をこうむる。例えば、今日のネットワークにおける一般的な障害は、長いときは５秒から６秒間続くことがある。障害が発生したときに、オペレーティングシステムがページを処理していた場合、そのデータが失われることもあり得る。
【課題を解決するための手段】
【０００９】
本発明は、１つまたは複数のリモートストレージボリューム（remote storage volume）を備えるリモートブートサーバ（remote boot server）が接続されたネットワークに接続され、不揮発性メモリ（ＮＶＭ）キャッシュを備えるコンピュータにおいて、ネットワークディスクレスコンピュータオペレーティングシステム（networked diskless computer operating system）を信頼性を維持しつつ動作させるための方法およびシステムを提供する。処理中、アプリケーションまたはオペレーティングシステムからデータを受け取ると、予測キャッシュコントロールモジュール（predictive cache control module）は、そのデータをＮＶＭキャッシュにストアするか、それともリモートストレージボリュームにストアするか判断する。データをリモートストレージボリュームにストアする場合、トランザクションによってそのデータをリモートストレージボリュームに書き込む。ネットワーク障害が発生している場合、またはトランザクション完了メッセージを受信しなかった場合、リモートストレージボリュームにストアすべきデータをＮＶＭキャッシュにキャッシュし、ネットワークが動作しているときに、トランザクションによってそのデータをＮＶＭキャッシュからリモートストレージボリュームに書き込む。トランザクション完了メッセージを受信しなかった場合、データをリモートストレージボリュームに再送信する。
【００１０】
ユーザの過去の使用履歴（history of prior use）を維持管理し、ネットワーク障害の間もユーザが処理を続けられるようにするのに必要なデータを、過去の使用履歴に基づいてＮＶＭキャッシュにストアする。静的設定データ（static configuration data）および動的設定データ（dynamic configuration data）を始めとするデータを、コンピュータの電源を切る前またはコンピュータを休眠状態にする前にＮＶＭキャッシュにストアする。それらのデータ、１組の静的設定データ、および１組の動的設定データには、デスクトップ設定、キーボード設定、コンピュータの電源を切る前またはコンピュータを休眠状態にする前に使用していたデータファイルが含まれる。コンピュータの電源を入れたとき、ネットワークが利用可能な状態にない場合、コンピュータはＮＶＭキャッシュからコールドブートされる。
【００１１】
リモートブートサーバは、コンピュータからブート要求を受信し、リモートストレージボリュームにストアされている静的設定データおよび動的設定データを使用してコンピュータをブートする。サーバは、リモートストレージボリュームへのデータ書込み処理が完了したとき、完了メッセージをコンピュータに送信する。リモートブートサーバはまた、静的設定データおよび動的設定データをストアできるサイズで、初期化時間がリモートストレージボリュームのディスクドライブのスピンアップ時間とほぼ等しい、不揮発性メモリキャッシュを備えている。ネットワークがブートされる場合、またはコンピュータがブートされる場合もしくは休眠状態から処理を再開する場合、コンピュータシステムのブートおよびコンピュータシステムの休眠状態からの再開のうちの少なくとも一方の間に、ディスクドライブが回転数を上げて、ディスクドライブにストアされている残りの設定データを初期化しているうちに、リモートブートサーバの不揮発性メモリキャッシュにストアされた静的設定データおよび動的設定データが初期化される。
【００１２】
本発明のネットワークスタック（network stack）は、何がＮＶＭキャッシュおよびリモートストレージボリュームにストアされているか判断する予測キャッシュコントロールモジュールと、ＮＶＭキャッシュが満杯になるなどのエラーを処理するファイルシステムフィルタドライバ（file system filter driver）と、リモートストレージボリューム内のハードディスクへのファイルの格納および取出しを行うためのファイルシステム（file system）と、ネットワーク障害が発生している場合、リモートストレージボリュームに送信するデータをＮＶＭキャッシュに書き込む書込みキャッシュフィルタドライバ（write cache filter driver）と、ネットワーク上での送信のためにパケットデータをカプセル化するネットワークプロトコルレイヤ（network protocol layer）にトランザクションによってパケットデータを送信するための、ｉＳＣＳＩなどのブロックモードネットワークストレージドライバ（block mode network storage driver）と、パケットをネットワークを介してリモートストレージボリュームに送信するネットワークアダプタドライバ（network adapter driver）とを含む。一実施形態においては、ＮＶＭキャッシュとのインターフェースを取るためにＮＶＭキャッシュドライバ（ＮＶＭ  cache driver）を使用する。
【００１３】
本発明のさらなる特徴および利点は、添付の図面を参照しながら行う以下の例示的な実施形態の詳細な説明から明らかとなるであろう。
【発明を実施するための最良の形態】
【００１４】
添付の特許請求の範囲には本発明の特徴が詳細に記載されているが、添付の図面と併せて以下の詳細な説明を読むことにより、本発明をその目的および利点と共に、最もよく理解することができるであろう。
【００１５】
本発明は、ネットワークが一時的に利用できなくなったり遅くなったりしたときにシステムが使用するローカルストレージキャッシュ（local storage cache）を設けることにより、ＰＣユーザがネットワーク障害の影響を受けずにいられるようにする。ストレージキャッシュは後でネットワーク状態が改善されたときに、集中管理されるストレージと同期が取られる。ストレージキャッシュが大規模になるほど、ユーザはネットワーク障害の影響を受けにくくなる。ローカルストレージキャッシュには、不揮発性固体素子メモリが使用される。
【００１６】
ＮＶＭはまだ非常に高価なので、ＰＣ内のハードディスクをすべてＮＶＭに置き換えることは現時点ではできない。しかし、２５６ＭＢ程度の比較的少容量のＮＶＭをＰＣに追加し、ＮＶＭを「インテリジェント」書込みキャッシュとして構成することができる。このキャッシュは信頼性とパフォーマンスを提供し、集中管理されたストレージプールからブートされるディスクレスＰＣをシステム管理者が実装することを可能とすることができる。
【００１７】
本発明のディスクレスコンピュータは中央のストレージプールからブートされるが、これにはいくつかの利点がある。例えば、ＮＶＭ書込みキャッシュは遅いネットワーク待ち時間の影響を著しく低下させることができ、デスクトップからハードディスクを完全に取り除いて、データセンタに移すことができる。ＮＶＭキャッシュがあれば、大多数のネットワーク障害の間、コンピュータは動作し続けることができる。これにより、コンピュータの配備および運用は企業にとってかなり安価なものになる。ユーザのデスクトップをすべてデータセンタの環境内で、ＩＴ専門家が精通しているツールを利用して、集中的に管理することができるであろう。ＬＵＮ（論理ストレージユニット）仮想化など、広くデータセンタで利用されている技術を用いるストレージ管理技法を利用することで、すべてのユーザのデスクトップを効率的に管理できるようになり、大幅な費用削減を実現することができる。例えば、デスクトップボリュームのミラーリング、バックアップ、リストア、修正パッチ（hot-fix）およびサービスパックでの更新、ウイルスの検査および駆除のすべてを、最短のユーザ使用不能時間（minimal user down time）でデータセンタから行うことができる。
【００１８】
別の利点は、遠隔地のオフィスにデスクトップを配備し、それを中央で管理することができることである。コンピュータが故障した場合でも、データを消失したり、ＩＴサービス専門家の手を煩わせたりすることなく、ほとんどの場合、コンピュータを新しく購入してプラグを差し込めば、すぐに使用できるようになる。ストレージをプールし、企業内のユーザのデスクトップすべてに均等に割り振ることができる。これにより、ストレージ稼働率は大きく改善され、今日のユーザデスクトップが抱えるようなストレージの過剰供給の必要性を回避できる。
【００１９】
本発明を利用するコンピュータは、ＮＶＭキャッシュ内にあるデータについてＤＲＡＭキャッシュミスまたはページフォルトが発生した場合、より速いパフォーマンスを実現する。ＮＡＮＤフラッシュ（ＮＡＮＤ  flash）の読出し／書込み待ち時間は、ディスクより１万から１０万倍速いためである。さらに、コールドブートおよび休眠状態からの再開に要する時間もより速くなる。
【００２０】
図面に移ると、適切なコンピューティング環境で実施された本発明が示されている。図面では、同じ参照番号によって同じ要素を参照する。プログラムモジュールなどのパーソナルコンピュータによって実行されるコンピュータ実行可能命令の一般的コンテキストの中で本発明を説明するが、そうすることが必ずしも必要なわけではない。プログラムモジュールには通常、特定のタスクを実行し、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。さらに、ハンドヘルド装置、マルチプロセッサシステム、マイクロコンピュータベースのまたはプログラム可能な家電製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータその他を始めとする他のコンピュータシステム構成を用いて本発明を実施できることが、当業者には理解されよう。本発明はまた、通信ネットワークを介してリンクされたリモート処理装置によってタスクが実行される分散コンピューティング環境でも実施できる。分散コンピューティング環境では、プログラムモジュールは、ローカルメモリストレージ装置とリモートメモリストレージ装置の両方に配置することができる。
【００２１】
図１には、本発明を実施することのできる適切なコンピューティングシステム環境１００の例が示されている。コンピューティングシステム環境１００は、適切なコンピューティング環境の一例にすぎず、本発明の使用範囲または機能範囲の限定を示唆することを意図したものではない。コンピューティング環境１００が、例示的な動作環境１００に図示されている任意のコンポーネントまたはコンポーネントの組合せに依存する、あるいはそれらを要求すると解釈してはならない。
【００２２】
本発明は数々の汎用または専用のコンピューティングシステム環境または構成を用いて動作する。本発明を使用するのに適切な周知のコンピューティングシステム、環境、および／または構成の例として、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップ装置、マルチプロセッサシステム、マイクロコンピュータベースのシステム、セットトップボックス、プログラム可能な家電製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記の任意のシステムまたは装置を含む分散コンピューティング環境その他が挙げられるが、これらに限定されるものではない。
【００２３】
プログラムモジュールなどのコンピュータによって実行されるコンピュータ実行可能命令の一般的コンテキストの中で本発明を説明する。プログラムモジュールには通常、特定のタスクを実行し、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。本発明はまた、通信ネットワークを介してリンクされたリモート処理装置によってタスクが実行される分散コンピューティング環境でも実施できる。分散コンピューティング環境では、プログラムモジュールは、メモリストレージ装置を含むローカルコンピュータストレージ媒体およびリモートコンピュータストレージ媒体の両方に配置することができる。
【００２４】
図１を参照すると、本発明を実施するための例示的なシステムには、コンピュータ１１０の形態をとる汎用コンピューティング装置が含まれている。コンピュータ１１０のコンポーネントとしては、プロセシングユニット１２０、システムメモリ１３０、システムメモリ１３０を始めとする様々なシステムコンポーネントをプロセシングユニット１２０に結合するシステムバス１２１を挙げることができるが、これらに限定されるものではない。これらのコンポーネントはマザーボード１１１上に配置される。システムバス１２１は、メモリバスまたはメモリコントローラ、周辺バス、ローカルバスを始めとする、多種多様なバスアーキテクチャのいずれかを使用した複数のタイプのバス構造のどれでもよい。例を挙げると、このようなアーキテクチャとしては、ＩＳＡ（Industry Standard Architecture、業界標準アーキテクチャ）バス、ＭＣＡ（Micro Channel Architecture、マイクロチャネルアーキテクチャ）バス、ＥＩＳＡ（Enhanced  ＩＳＡ、拡張ＩＳＡ）バス、ＶＥＳＡ（Video Electronics Standards Associate、ビデオエレクトロニクス規格協会）ローカルバス、メザニンバス（Mezzanine bus）としても知られるＰＣＩ（Peripheral Component Interconnect、周辺装置相互接続）バスなどがあるが、これらに限定されるものではない。
【００２５】
コンピュータ１１０は一般に、多種多様なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１１０によってアクセス可能な任意の市販の媒体でよく、揮発性および不揮発性媒体、着脱可能媒体および固定媒体を含む。例を挙げると、コンピュータ可読媒体には、コンピュータストレージ媒体および通信媒体が含まれるが、これらに限定されるものではない。コンピュータストレージ媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報をストアするための任意の方法および技術により実装される、揮発性および不揮発性媒体、着脱可能および固定媒体が含まれる。コンピュータストレージ媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、またはその他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（digital versatile disk、デジタル多用途ディスク）、またはその他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、またはその他の磁気ストレージ装置、あるいは望みの情報をストアするのに使用できコンピュータ１１０によってアクセス可能なその他の任意の媒体が含まれるが、これらに限定されるものではない。通信媒体では一般に、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータは、搬送波またはその他の搬送機構などの変調データ信号によって実施され、通信媒体には情報配布媒体が含まれる。「変調データ信号」という用語は、情報を信号中に符号化するための方式によって設定または変化させた１つまたは複数の特性を有する信号を意味する。例を挙げると、通信媒体には、有線ネットワークや直接線接続（direct-wired connection）などの有線媒体、音波、ＲＦ、赤外線、およびその他の無線媒体などの無線媒体が含まれるが、これらに限定されるものではない。上記の任意の組合せも、コンピュータ可読媒体の範囲に含まれる。
【００２６】
システムメモリ１３０には、読出し専用メモリ（ＲＯＭ）１３１およびランダムアクセスメモリ（ＲＡＭ）１３２など、揮発性および／または不揮発性の形態を取るコンピュータストレージ媒体が含まれる。ＲＯＭ１３１には一般に、起動時などにコンピュータ１１０内の要素間での情報転送をサポートする基本ルーチンを含む基本入出力システム（ＢＩＯＳ）１３３が格納されている。ＲＡＭ１３２には一般に、プロセシングユニット１２０が直ちにアクセス可能であり、かつ／またはやがて利用する（operate on）データおよび／またはプログラムモジュールが含まれる。図１には、例として、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、およびプログラムデータ１３７が示されているが、これらに限定されるものではない。
【００２７】
コンピュータ１１０はまた、その他の着脱可能／固定、揮発性／不揮発性コンピュータストレージ媒体を含むことができる。図１には、単なる例として、着脱可能な不揮発性磁気ディスク１５２に対する読み書きを行う磁気ディスクドライブ１５１、ＣＤ−ＲＯＭまたはその他の光媒体などの着脱可能な不揮発性光ディスク１５６に対する読み書きを行う光ディスクドライブ１５５が示されている。例示的な動作環境で使用することのできるその他の着脱可能／固定、揮発性／不揮発性コンピュータストレージ媒体としては、磁気テープカセット、フラッシュメモリカード、ＤＶＤ、デジタルビデオテープ、固体素子ＲＡＭ、固体素子ＲＯＭその他が挙げられる。磁気ディスクドライブ１５１および光ディスクドライブ１５５は一般に、インターフェース１５０などの着脱可能メモリインターフェースによってシステムバス１２１に接続される。ＮＶＭはまだ非常に高価なので、コンピュータ１１０内のハードドライブをすべてＮＶＭで置き換えることはできない。したがって、コンピュータ１１０は、一般にインターフェース１４０などの固定メモリインターフェースを介してシステムバス１２１に接続されるハードドライブ１４１を備えてもよい。このハードドライブは、ＮＶＭキャッシュを持つこともできる。
【００２８】
図１に示される上で論じたドライブおよび関連するコンピュータストレージ媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータのストレージをコンピュータ１１０に提供する。図１には、例えば、オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、およびプログラムデータ１４７を格納するリモートストレージボリューム１８２が示されている。これらのコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、およびプログラムデータ１３７と同じでもよく、異なっていてもよいことを留意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、およびプログラムデータ１４７には異なる番号が振られており、本明細書では少なくともそれらが異なるコピーであることを示している。リモートストレージボリューム１８２は一般に、中心的な位置（central location）に配置され、複数のユーザのためのアプリケーションプログラム、その他のプログラムモジュール、およびプログラムデータを含むことができる。ユーザは、キーボード１６２、一般にマウスと呼ばれるポインティングデバイス１６１、トラックボール、またはタッチパッドなどの入力装置を介して、コンピュータ１１０にコマンドおよび情報を入力することができる。その他の入力装置（図示せず）としては、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送用パラボラアンテナ（satellite dish）、スキャナその他が挙げられる。上記およびその他の入力装置はしばしば、システムバスに結合されたユーザ入力インターフェース１６０を介してプロセシングユニット１２０に接続されるが、パラレルポート、ゲームポート、ＵＳＢ（universal serial bus、ユニバーサルシリアルバス）などその他のインターフェースおよびバス構造によって接続してもよい。モニタ１９１またはその他のタイプのディスプレイ装置もまた、ビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続される。コンピュータは、モニタの他にも、出力周辺インターフェース１９５を介して接続することのできるスピーカ１９７やプリンタ１９６などのその他の周辺出力装置を含むことができる。
【００２９】
コンピュータ１１０は、リモートコンピュータ１８０などの１つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク環境で動作する。リモートコンピュータ１８０は、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置（peer device）、またはその他の一般のネットワークノードでよく、パーソナルコンピュータ１１０に関連する上記の要素の多くまたはすべてを一般に含むが、図１にはメモリストレージ装置１８１のみが示されている。図１に示す論理接続には、ローカルエリアネットワーク（ＬＡＮ）１７１およびワイドエリアネットワーク（ＷＡＮ）１７３が含まれるが、他のネットワークを含むこともできる。こうしたネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットで一般的なものである。
【００３０】
パーソナルコンピュータ１１０は、ＬＡＮネットワーク環境で利用する場合、ネットワークインターフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続される。パーソナルコンピュータ１１０は、ＷＡＮネットワーク環境で利用する場合、一般にインターネットなどのＷＡＮ１７３経由の通信を確立するためのモデム１７２またはその他の手段を含む。モデム１７２は内蔵型でも外付け型でもよく、システムバス１２１に接続することができる。モデムは、図ではシステムバスに直接接続してあるが、ユーザ入力インターフェース１６０、ネットワークアダプタ１７０、またはその他の適切な機構を介してシステムバスに接続することもできる。ＴＣＰ／ＩＰオフロードエンジン（ＴＣＰ／ＩＰ  offload engine）１７４を、ネットワークアダプタ１７０に接続することができる。ＴＣＰ／ＩＰオフロードエンジン１７４は、一般に実行に際してプロセシングユニット１２０に大量のリソースを要求するＴＣＰ／ＩＰタスクをオフロードするために使用される。ネットワークアダプタ１７０およびＴＣＰ／ＩＰスタックは一般に、ｉＳＣＳＩ実装用のネットワークアダプタカードの一部である。一般に不揮発性の固定磁気媒体であるリモートストレージボリューム１８２は、リモートブートサーバ１８３内に配置される。リモートストレージボリューム１８２は一般に、ネットワークアダプタ１７０などのインターフェースを介してシステムバス１２１に接続される。パーソナルコンピュータとの関連で示したプログラムモジュールまたはその部分を、リモートストレージボリューム１８２にストアすることができる。図１には、例として、メモリ装置１８１に存在するリモートアプリケーションプログラム１８５が示されているが、これに限定するものではない。図示したネットワーク接続は例示的なものであり、コンピュータ間で通信リンクを確立するためのその他の手段を利用してもよいことは理解されよう。
【００３１】
以下の説明では、別段の指摘がない場合は、１つまたは複数のコンピュータによって実行される動作と処理の記号表現とを参照して本発明を説明する。したがって、コンピュータ実行（being computer-executed）と呼ばれることもあるそのような動作および処理には、構造化された形式でデータを表現する電気信号に対してコンピュータのプロセシングユニットが行う操作が含まれることを理解されたい。この操作はコンピュータのメモリシステム内のロケーションでデータを変形または維持（maintain）し、当業者に周知の方式でコンピュータの処理を再構成しまたは変更する。データを維持するデータ構造は、データ形式によって定義される特定の属性を有するメモリの物理ロケーションである。本発明は上記のコンテキストで説明されているが、それに限定する意図はなく、以下本明細書で説明する様々な動作および処理がハードウェアでも実施できることは当業者には理解されるであろう。
【００３２】
本発明は多種多様な方法で実施することができる。図２には、ＮＶＭキャッシュがネットワークアダプタカードのハードウェアに存在する一実施形態が示されている。この実施形態は、ハードウェアカード２００および関連ドライバをコンピュータ１１０にインストールすることにより、現在のコンピュータ上で実施することができる。ｉＳＣＳＩ（Internet Small Computer System Interface、インターネット小型コンピュータシステムインターフェース）ベースのハードウェアカード２００が使用されている。カード２００はＰＣＩバスまたはそれと同等なタイプのバスに接続され、オペレーティングシステム１３４はこれをシステム１００に付属するＳＣＳＩドライバと見なす。ハードウェアカード２００は、ＳＣＳＩプロトコルスタック、ＩＰＳＥＣを用いて動作しているプロセッサ２０２を備え、ＴＣＰオフロードをサポートすることができる。プロセッサ２０２はＲＯＭ２０４およびＲＡＭ２０６を備え、自発的にまたはオペレーティングシステム１３４に指示されて、データをＮＶＭキャッシュ２０８にキャッシュする。ＲＯＭ２０４はあってもなくてもよいが、これがあると、ＢＩＯＳセットアップは特定のネットワークブートサーバアドレスに接続するためにカードを構成する手段を提供できる。プロセッサは、ネットワークインターフェース２１２およびネットワーク２１４を介して、リモートストレージボリューム１８２を備えるネットワークブートサーバ１８３と通信するためのストレージブロックレベルのネットワークプロトコルスタックを実施する。ネットワークインターフェース２１２はイーサネット（登録商標）アダプタでもよい。プロセシングユニット１２０は、ＩＯＣＴＬ（システム依存装置入出力制御コマンド）によって、インターフェース２１６、２１８、またはその他のタイプのインターフェースを介してプロセッサ２０２と通信して、プロセッサにどのデータブロックをＮＶＭキャッシュ２０８にキャッシュしどのブロックをリモートストレージボリューム１８２にストアするか通知する方法をプロセシングユニット１２０に提供する。インターフェース２１８はあってもなくてもよく、カード２００からＢＩＯＳをブートする手段を任意選択のＲＯＭ２０４が提供する場合は取り除くことができる。
【００３３】
次に図３に移ると、別の実施形態が示されている。ＮＶＭキャッシュ２０８はコンピュータのマザーボード１１１上に配置されている。この実施形態は、オペレーティングシステム１３４に実装することができる、より進んだ予測アルゴリズムによって、より優れたパフォーマンスと信頼性を提供する。この実施形態では、プロセシングユニット１２０は、ＩＯＣＴＬおよびＤＭＡ転送またはそれと同等のものを用いてリモートストレージボリューム１８２とインターフェース２１２を介した通信を行い、データブロックをリモートストレージブロック１８２にストアし、またはデータブロックをＮＶＭキャッシュ２０８にキャッシュする。ＮＶＭキャッシュ２０８は、プロセシングユニット１２０に対して、ディスクとして公開する（expose）こともでき、ネイティブ装置型（native device type）として公開することもできる。ネイティブ装置型として公開されている場合、プロセシングユニット１２０はそれを列挙し（enumerate）、それをリソースとして使用する。ディスクとして公開されている場合、プロセシングユニット１２０は、データブロックをインターフェース２２０を介してＮＶＭキャッシュ２０８にキャッシュする。インターフェース２２０は、ＩＤＥ／ＡＴＡプロトコル、ＳＣＳＩプロトコル、ｉＳＣＳＩプロトコル、ＮＶＭキャッシュドライバその他でよい。図２および図３に示されたのとは別の実施形態が使用できることが当業者には理解されよう。図１に戻ると、ＮＶＭキャッシュ２０８は、システムメモリ１３０の部分でもよく、あるいはネイティブ装置型として実施されている場合はシステムメモリ１３０と独立であってもよい。ＮＶＭキャッシュ２０８はキャッシュインターフェース２２２によってアクセスされる。書込み時、ストレージドライバスタック（以下、本明細書で説明する）は、ＮＶＭキャッシュ２０８を使用してデータを直ちにローカルにキャッシュし、次に、後の適当な時に、リモートストレージボリューム１８２と同期させる。読出し時、ストレージドライバスタックは、それが利用できればＮＶＭキャッシュ２０８からデータを読み戻し、ＮＶＭキャッシュ２０８内のブロックが利用できない場合にのみリモートストレージボリューム１８２からロードする。
【００３４】
ＮＶＭキャッシュ２０８のサイズは、ストアするデータの量とネットワークの信頼性に基づいて決定される。アプリケーションとしてＭｉｃｒｏｓｏｆｔ  Ｏｆｆｉｃｅ（登録商標）を使用する場合、６４ＭＢのＮＶＭメモリがあれば、オフラインで１時間動作するのに十分なデータを保持できることが示された。サイズはより高い耐ネットワーク障害レベルとＮＶＭを追加したコンピュータのコストとの間のトレードオフによって決まる。一実施形態では、２５６ＭＢのフラッシュＮＶＭが使用されており、２００４年の金銭価値でコストは４０ドルを下回ると予測される。これにより、ユーザがＮＶＭキャッシュを用いて休眠状態からの再開またはコールドブートを行い、またネットワーク２１４が起動されて動作するようになるまで、ＮＶＭキャッシュ２０８にストアされたドキュメント上で作業を行うのに十分なデータをＮＶＭキャッシュ２０８にストアすることが可能になる。
【００３５】
図４および図５には、ＮＶＭキャッシュ２０８を既存のチップセットに組み込む方法が示されている。図４には、ノースブリッジ／サウスブリッジアーキテクチャ４００内のＮＶＭキャッシュ２０８が示されている。ノースブリッジ４０２は、プロセッサ１２０、メモリ１３０、ＰＣＩバス、レベル２キャッシュ、すべてのＡＧＰ（Accelerated Graphics Port、アクセラレーテッドグラフィックスポート）アクティビティを制御する。サウスブリッジ４０４は、ＵＳＢ、シリアル、音声、ＩＤＥ（Integrated Drive Electronics、統合ドライブエレクトロニクス）、ＩＳＡ入出力（Ｉ／Ｏ）など、コンピュータ１１０内のＩ／Ｏの基本形式を管理する。サウスブリッジは、ノースブリッジがＤＲＡＭ  ＤＩＭＭ４０８とインターフェースを取るのと同様の方法で、ＮＶＭ  ＤＩＭＭスロット４０６へのインターフェースを実装する。これにより、ネットワークアクセスがより長く中断してもユーザはＮＶＭを追加してそれを乗り切ることができ、エンドユーザはＤＲＡＭ４０８を追加するように増設のＮＶＭ２０８を追加し、休眠ファイル（hiberfile）をＮＶＭ２０８にストアして、休眠状態からの再開時間を短縮できるようにすることができる。ＮＡＮＤフラッシュおよびその他の既存のＮＶＭ技術は、サウスブリッジインターフェース４０４において補償できる問題を抱えていることがある。ＮＶＭ技術は、消去／書込みサイクルを約１０５回行った後では、アクセス時間が遅くなることがあり、セルがもはや使用に耐えなくなる摩耗現象（wear out phenomenon）を起こすことがある。ＮＶＭの摩耗特性はよく理解されており、サウスブリッジインターフェース４０４において標準的な摩耗平準化技術（wear leveling technology）を取り入れて、消去および書込みを平均化することができる。
【００３６】
図５のアクセラレーテッドハブアーキテクチャ５００は、ノースブリッジ／サウスブリッジアーキテクチャ内で使用するようなＰＣＩバスを使用する代りに、専用バスを使用してコントローラハブ５０２とＩ／Ｏコントローラハブ５０４との間でデータを転送する。メモリコントローラハブ５０２は、中央処理装置（ＣＰＵ）インターフェース、メモリインターフェース、ＡＧＰインターフェースを提供する。メモリコントローラハブは、最大１ＧＢのメモリを備えるシングルまたはデュアルプロセッサをサポートする。メモリコントローラハブはまた、同時処理を可能にし、それにより、より本物に近い音声および画像が提供できるようになる。Ｉ／Ｏコントローラハブ５０４は、メモリと、内蔵モデム、オーディオコントローラ、ハードドライブ、ＵＳＢポート、ＰＣＩアドインカードを始めとするＩ／Ｏ装置との直接接続を提供する。Ｉ／Ｏコントローラハブ５０４は、コントローラハブ５０２がＤＲＡＭ  ＤＩＭＭ４０８とインターフェースを取るのと同様の方法で、ＮＶＭ  ＤＩＭＭスロット４０６へのインターフェースを実装する。
【００３７】
次に図６に移ると、図３で説明した実施形態のためのストレージドライバスタック６００が示されている。オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６は、データ（例えば、文書、表計算、ファイル、グラフィックスその他）をストレージドライバスタック６００に送信する。予測キャッシュコントロールモジュール６０２は、何を揮発性メモリ１３２および不揮発性メモリ１８２、２０８に入れるかを制御する。ファイルシステムフィルタドライバ６０４は、データを予測キャッシュコントロールモジュール６０２から受信する。ファイルシステムフィルタドライバ６０４の主要機能は、ＮＶＭキャッシュ２０８が満杯の場合などに、エラーを適切に処理することである。ファイルシステムフィルタドライバ６０４は、オペレーティングシステム１３４がハードディスクとの間でファイルのストアおよび取出しを行うために使用するファイルシステム（すなわち、ＮＴＦＳ）６０６を介して、データをリモートストレージボリューム１８２に渡す。
【００３８】
書込みキャッシュフィルタドライバ６０８は、データをファイルシステム６０６および予測キャッシュコントロールモジュール６０２から受信する。書込みキャッシュフィルタドライバ６０８は、ローカルＮＶＭキャッシュ２０８にキャッシュするデータをＮＶＭキャッシュドライバ２２２に送信する。ＮＶＭキャッシュドライバ２２２は、ＮＶＭキャッシュ２０８に容量がなくなった（すなわち、満杯になった）ときこれを検出し、ＮＶＭキャッシュ２０８が満杯であることを通知するメッセージをファイルシステムフィルタドライバ６０４に送信する。ファイルシステムフィルタドライバ６０４は、ＮＶＭキャッシュ２０８に空き容量ができるまでＮＶＭキャッシュ２０８へのデータ送信を停止するよう、予測キャッシュコントロールモジュール６０２に通知する。
【００３９】
書込みキャッシュフィルタドライバ６０８は、ローカルＮＶＭキャッシュ２０８とリモートストレージボリューム１８２との同期を取る。データがＮＶＭキャッシュ２０８とリモートストレージボリューム１８２とにストアされている場合で、ＮＶＭキャッシュ２０８内のローカル書込みキャッシュをリモートストレージボリューム１８２に同期させる必要があるとき、書込みキャッシュフィルタドライバ６０８は、ＮＶＭキャッシュ２０８から読み出す。ネットワーク障害の間、書込みキャッシュフィルタドライバ６０８は、ネットワークが再び信頼性を維持して動作するようになるまで、リモートストレージボリューム１８２に送信するデータをＮＶＭキャッシュ２０８に書き込む。本明細書では、ネットワーク障害とは、電力障害またはその他の障害によってネットワークが停止したとき、または伝送速度が閾値を下回ったときのことをいう。その閾値は、通常の動作状態の間およびネットワーク渋滞の間の一般的なデータ伝送速度に基づいて選択される。ネットワークが再び信頼性を維持して動作するようになったとき、ＮＶＭキャッシュ２０８にストアされたリモートストレージボリューム１８２に送信するデータを、バックグラウンドのトランザクションによってリモートストレージボリューム１８２に書き込む。これによりシステム１００は、ネットワークが信頼性のある動作をしていない期間中でも、継ぎ目なしに作業を続けることができる。書込みが完了すると、リモートストレージボリューム１８２はトランザクション完了メッセージを送信する。トランザクション書込みを行うことで、書込みが失敗または中断（すなわち、完了メッセージを受信しない）した場合でも、リモートストレージボリューム１８２への書込みを再実行することができる。書込みキャッシュフィルタドライバ６０８は、ネットワーク障害中の電力低下（loss of power）またはその他の何らかの理由でシステムをリブートする場合、システムが再び動作し始め、ネットワークが利用可能となった後で、リモートストレージボリューム１８２をＮＶＭキャッシュ２０８にストアされたデータと同期させる。
【００４０】
ブロックモードネットワークストレージドライバ６１０は、リモートストレージボリューム１８２に送信すべきデータを受信する。ブロックモードネットワークストレージドライバ６１０は、データをブロックでリモートストレージボリューム１８２に送信する。これはｉＳＣＳＩまたはそれと同等のものであってよい。ｉＳＣＳＩはブロックストレージ転送を可能にする。これはＴＣＰ／ＩＰにおいてＳＣＳＩコマンドをカプセル化するプロトコルであり、標準的なネットワーク技術の上で高パフォーマンスのストレージエリアネットワーク（ＳＡＮ）が実現できるようになる。ブロックモードネットワークストレージドライバ６１０は、データをデータブロック（ｉＳＣＳＩを使用する場合はＳＣＳＩ−３データ）に変換し、そのデータブロックをネットワークプロトコルレイヤ６１２（ＴＣＰ／ＩＰなど）に送信する。ここでデータブロックはネットワークプロトコルパケット（ＩＰパケットなど）の中に入れられ、ネットワークアダプタドライバ１４０（ＮＤＩＳなど）を介してリモートストレージボリューム１８２に送信される。
【００４１】
先に指摘したように、予測キャッシュコントロールモジュール６０２は、何がＮＶＭキャッシュ２０８にストアされているか判断する。予測キャッシュコントロールモジュール６０２は一般に、長期にわたってユーザ操作（user's behavior）を観察し、そのユーザがどのプログラムおよびデータに頻繁にアクセスするか決定し、静的および動的設定データを含むデータをＮＶＭキャッシュ２０８にストアする。本明細書で用いるデータの語には、スケジュールされたタスク、財務情報、データファイルその他の個人的なデータファイルが含まれる。モジュール６０２は、ユーザ操作が予測できるようになるまで、デフォルト設定を用いて開始される。静的および動的設定データは、過去の使用履歴に基づいており、ユーザがネットワーク障害中に操作を続行するのに必要となるデータを含む。静的設定データは、周期的に変更されないデータである。動的設定データは、周期的に変更され、ユーザ単位にもつデータである。設定データには、キーボード装置、ポインティングデバイス、ＵＳＢサブシステム、ビデオサブシステム、出力周辺装置ドライバ（プリンタドライバなど）、オペレーティングシステム、アプリケーションプログラムその他が含まれる。
【００４２】
静的設定データは、すべてのユーザによって使用されるシステム設定データである。例えば、Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムの場合、静的設定データは、ＮＶＭキャッシュ２０８にストアされた静的および動的設定データをロードするためのブートストラッピングコードを含む。Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステムにおけるその他の静的設定データには、レジストリ初期化（ｓｍｓｓ．ｅｘｅ）やビデオ初期化（ｃｓｒｓｓ．ｅｘｅ）などカーネルを初期化するのに必要なファイル、シェル、ダイナミックリンクライブラリから実行するサービス（ｓｖｃｈｏｓｔ．ｅｘｅ）、ＩＰＳｅｃなどのセキュリティサービス（ｌｓａｓｓ．ｅｘｅ）、ネットワークログインが含まれる。電源が切れているコンピュータシステムの場合、ＮＶＭキャッシュ２０８にストアされている静的設定データには、ブートストラッピングコード、カーネル初期化ファイル、ビデオ初期化ファイル、シェル、コンピュータ１１０が動作するのに必要とするサービス（ダイナミックリンクライブラリなど）、アプリケーションプログラムその他が含まれる。動的設定データは、ユーザ単位にもつシステム設定データである。例えば、動的設定データには、デスクトップ設定（背景イメージやアイコン位置など）、セキュリティ認証、インターネットのお気に入りファイル（internet favorite file）、フォント、スタートアッププログラム、キーボード設定その他が含まれる。
【００４３】
次に本発明の動作を、図７および図８を参照して説明する。電源を遮断しようとしているコンピュータシステムでは、ＮＶＭキャッシュ２０８にストアするデータ、静的設定データ、動的設定データが決定される（ステップ７００）。データおよび設定データは、ユーザの履歴に基づく。データには直近に使用されたデータファイルが含まれる。ＮＶＭキャッシュ２０８にストアする動的設定データには、デスクトップ設定、キーボード設定、セキュリティ認証が含まれる。データ、静的設定データ、動的設定データはＮＶＭキャッシュ２０８にストアされる（ステップ７０２）。最近使用されていないデータと、処理に必要でない静的および動的設定データは、格納用にリモートストレージボリューム１８２に送信される（ステップ７０４）。格納用にリモートストレージボリューム１８２に送信されるデータであって、アプリケーションがリモートストレージボリューム１８２へ書き込むようなオペレーティングシステムが制御できないデータは、ネットワークが利用できない場合またはトランザクション完了メッセージを受信しなかった場合、格納用にＮＶＭキャッシュ２０８に送信される（ステップ７０６）。こうすることにより、リモートストレージボリューム１８２への書込み回数は減少し、パワーダウンをより速やかに行えるようになる。次にコンピュータシステムがパワーダウンされる（ステップ７０８）。
【００４４】
システムが休眠状態に入ろうとしている場合も、同様のステップが実行される。ＮＶＭキャッシュ２０８にストアするデータ、静的設定データ、動的設定データが決定され（ステップ７１０）、メモリにストアされる（ステップ７１２）。このデータには、グラフィカルユーザインターフェースを即座に「リペイント」（すなわち、復元）するのに必要なデータが含まれる。静的設定データには、カーネルファイル、ビデオファイル、シェル、ダイナミックリンクライブラリから実行する休眠状態に入る前に使用中だったサービスが含まれる。動的設定データには、デスクトップ設定、キーボード設定、休眠状態に入る前に使用中だったフォントが含まれる。データには、休眠状態に入る前にユーザが使用していたデータファイルが含まれる。最近使用されていないデータと、処理に必要でない静的および動的設定データは、格納用にリモートストレージボリューム１８２に送信される（ステップ７１４）。格納用にリモートストレージボリューム１８２に送信されるデータであって、アプリケーションがリモートストレージボリューム１８２へ書き込むようなオペレーティングシステムが制御できないデータは、ネットワークが利用できない場合またはトランザクション完了メッセージを受信しなかった場合、格納用にＮＶＭキャッシュ２０８に送信される（ステップ７１６）。こうすることにより、リモートストレージボリューム１８２への書込み回数は減少し、パワーダウンをより速やかに行えるようになる。次にコンピュータシステムは休眠状態に入る（ステップ７１８）。
【００４５】
ネットワークが利用できない場合、リモートストレージボリューム１８２に送信するデータを、ネットワークが利用できるようになるまで、ＮＶＭキャッシュ２０８にストアする（ステップ７２０）。ネットワークが利用できるようになった後で、ＮＶＭキャッシュ２０８内のデータとリモートストレージボリューム１８２内のデータとの同期を取る（ステップ７２２）。一実施形態では、ＮＶＭキャッシュ２０８をシステムの動作中に使用する。アプリケーションまたはオペレーティングシステムがデータをリモートストレージボリューム１８２に送信する場合、リモートストレージボリューム１８２に送信する前に、そのデータをＮＶＭキャッシュ２０８にストアする（ステップ７２４）。こうすることで、電力が低下した場合でもデータが失われないですむ。システムの電源を落とすとき、またはシステムが休眠状態に入るとき、ＮＶＭキャッシュ２０８にストアされたリモートストレージボリューム１８２に送信するデータを、トランザクションによってリモートストレージボリューム１８２に書き込む。ＮＶＭキャッシュ２０８の利用可能領域（available space）が閾値を下回った場合、ＮＶＭキャッシュ内の最近使用されていないデータを、リモートストレージボリューム１８２に転送する（ステップ７２６）。データをＮＶＭキャッシュ２０８にストアすることで、処理中にリモートストレージボリューム１８２にアクセスする回数が減少する。それによってネットワーク２１４上のトラフィック量が減少する。
【００４６】
次に図９に移ると、コンピュータシステムをブートするため、およびコンピュータシステムを休眠状態から再開するために実行されるステップが示されている。コンピュータシステムは通常、リモートストレージボリューム１８２からブートする（ステップ８００）。ネットワーク２１４が利用できない場合、コンピュータシステムは、ＮＶＭキャッシュ２０８内にストアした静的設定データと動的設定データを使用してブートする（ステップ８０２）。ネットワークが利用可能になった場合、リモートストレージボリューム１８２から必要なデータを獲得する。このデータは一般に、ユーザが最近アクセスしていないデータに基づいて、予測キャッシュコントロールモジュール６０２がリモートストレージボリューム１８２に送信したデータである。ユーザが体験することは、ユーザが電源ボタンを押すと、リモートストレージボリュームへのアクセスを待つ必要なく、代りにモニタ１９１またはその他のタイプのディスプレイ装置が作動し始めるまでに、または作動し始めてすぐに、応答対話型のログオン画面が現れることである。一実施形態では、コンピュータをブートする理由は電力障害によるものであり、コンピュータはＮＶＭキャッシュ２０８からブートされる。このようにすることにより、電力が回復した後でネットワーク上のＰＣが同時にネットワークブートを試みるネットワーク「ストーム」が回避される利点が提供される。
【００４７】
ユーザが起動し動作するようになった後で、ＮＶＭキャッシュ２０８内のデータがリモートストレージボリューム１８２上のデータと整合しているかどうか検証することができる（ステップ８０４）。データが整合していない場合、リモートストレージボリューム内のデータの方が日付が新しいならば、ＮＶＭキャッシュ２０８内のデータを更新し、ＮＶＭキャッシュ２０８内のデータの方が日付が新しいならば、ＮＶＭキャッシュ２０８内のデータをリモートストレージボリューム１８２内に複製する。復旧および下位互換性目的のため（すなわち、リモートストレージボリューム１８２からブートするため）に、ヘルプボタンまたはスイッチを利用して、ＮＶＭキャッシュ２０８をバイパスし、セーフモードでコンピュータシステムを起動することができる。ネットワーク障害中の電力低下またはその他の何らかの理由で、システムをリブートする場合、書込みキャッシュフィルタドライバ６０８は、システムが再び動作するようになり、ネットワークが利用できるようになった後で、リモートストレージボリューム１８２をＮＶＭキャッシュ２０８内のデータと同期させる。コンピュータが休眠モードから起動する場合、コンピュータシステムは、ＮＶＭキャッシュ２０８にストアされた静的設定データおよび動的設定データを用いて、さらに必要ならばリモートストレージボリューム１８２からの静的設定データおよび動的設定データを用いて処理を再開する（ステップ８０６）。ＮＶＭキャッシュ２０８内のデータは、コンピュータシステムが処理を再開した後で、リモートストレージボリューム１８２内のデータと同期させる（ステップ８０４）。
【００４８】
別の実施形態では、コンピュータ１１０はＮＶＭキャッシュ２０８からブートし、ブートコードは、ファイルの変更日付をチェックすることにより、リモートストレージボリューム１８２上のファイルの方が新しいかどうか調べる。リモートストレージボリューム１８２上のファイルの方が新しくない場合、コンピュータ１１０はＮＶＭキャッシュ２０８からブートを続ける。リモートストレージボリューム１８２上のファイルの方が新しい場合、ブートコードはリモートブートサーバ１８３からそのより新しいファイルをロードする。このようにすることにより、ネットワーク２１４への電力が回復した後で、数千台のＰＣが同時にネットワークブートを試みるネットワーク「ストーム」が回避される利点が提供される。
【００４９】
一実施形態では、ネットワークブートサーバはＮＶＭキャッシュを備えている。ネットワークブートサーバのＮＶＭキャッシュにストアされる静的設定データおよび動的設定データは、静的設定データおよび動的設定データの初期化にかかる時間が、リモートストレージサーバ１８２内のディスクドライブのスピンアップ時間とほぼ等しくなるように選択される。静的および動的設定データは、初期化するためにディスクドライブからのデータを必要としない設定データである。これには、キーボード装置、ポインティングデバイス、ＵＳＢサブシステム、ビデオサブシステムその他が含まれ得る。必要とされるフラッシュメモリのサイズは、静的設定データおよび動的設定データのサイズと等しい。多くのオペレーティングシステムでは、必要なフラッシュメモリのサイズは１６ＭＢから６４ＭＢである。
【００５０】
不揮発性メモリキャッシュを利用するディスクレスネットワークブータブルＰＣについて説明してきたことが理解できるであろう。フラッシュメモリは固体素子であり可動部分をもたない。ユーザのハードドライブは、ＲＡＩＤなどの冗長ディスク技術を用いてデスクトップにある場合よりもはるかに低コストで容易に保護することができる。ハードディスクを用いずに構築するシステムの製造コストは、機械的なハードディスクを用いるシステムに比べて時が経つにつれ低下する。ハードディスクドライブには、可動部分とパッケージングに起因する周知の下限コストがある。対照的に、インテリジェントストレージキャッシュを構成する固体素子コンポーネントはすべて、ムーアの法則に従って、時が経つにつれ集積化が進む（scale forward）であろう。例えば、ＮＡＮＤフラッシュのセルサイズはＤＲＡＭに比べて小さく、既にＤＲＡＭに比べてはるかに安く製造されている。ＮＡＮＤフラッシュについての業界の予測では、ＮＡＮＤフラッシュはコスト面でＤＲＡＭを大きく引き離し続けるだろうと考えられている。ＮＶＭに代る現在開発中の候補がいくつかあり、それらはコスト面およびパフォーマンス面でＮＡＮＤフラッシュよりも利益が大きい。例えば、ＰＦＲＡＭ（polymer ferroelectric  ＲＡＭ、ポリマー強誘電性ＲＡＭ−「プラスチックメモリ」）などの新型のＮＶＭ技術またはＭＥＭＳ（micro electromechanical systems、微小電気機械システム）が将来利用可能になるかもしれない。この技術はＰＣのクリティカルな部分に組み込まれるので、ＰＣはこれらの改良から大きな利益を得るであろう。逆もまた真であり、ＰＣがＮＶＭ技術を用い続けずにいるならば、ＮＶＭを利用する他の競合する装置が、やがてＰＣにとってより強力な競争相手となるであろう。
【００５１】
本発明を、共通オペレーティングシステムからマシン、アプリケーション、ユーザ状態を分離するオペレーティングシステムに対する変更と組み合せることによって、システム管理者は、各ＰＣ用のオペレーティングシステムイメージを管理する必要性がなくなることによる利益をさらに享受することになるであろう。各ＰＣ用の代りにすべてのＰＣ用のオペレーティングシステムを１つ管理すればよく、マシン単位およびユーザ単位には、はるかに少量の状態情報のみを管理すればよい。
【００５２】
本発明の原理を適用し得る多くの可能な実施形態に鑑みて、図面と併せて本明細書で説明した実施形態は例示を意図したものにすぎず、本発明の範囲を限定するものではないことを理解されたい。例えば、ソフトウェアで示した例示の実施形態の要素をハードウェアで実施してもよく、その逆も可能であること、あるいは本発明の趣旨から逸脱することなく、例示の実施形態の構成および詳細を変更できることが、当業者には理解されよう。したがって、本明細書で説明した本発明は、添付の特許請求の範囲内に含まれるすべての実施形態およびその均等物を企図している。
【図面の簡単な説明】
【００５３】
【図１】本発明を備える例示的なコンピュータシステムを概略的に示すブロック図である。
【図２】ハードウェアカードを使用する本発明の実施形態を示すブロック図である。
【図３】マザーボードに実装された本発明の別の実施形態を示すブロック図である。
【図４】ノースブリッジ／サウスブリッジアーキテクチャに実装された本発明のＮＶＭキャッシュを示すブロック図である。
【図５】アクセラレーテッドハブアーキテクチャに実装された本発明のＮＶＭキャッシュを示すブロック図である。
【図６】本発明によるネットワークスタックを示すブロック図である。
【図７】ネットワーク障害および電力障害をデータを失うことなく乗り切るために、本発明の教示により、パワーダウンまたは休眠モードに入るときに静的および動的設定データをストアする処理の最初の部分を示すフローチャートである。
【図８】静的および動的設定データをストアする処理の残りの部分を示すフローチャートである。
【図９】ネットワーク障害後の動作、コンピュータのブート、および休眠後の再開動作のための処理を示すフローチャートである。
【符号の説明】
【００５４】
１００  コンピューティングシステム環境
１１０  コンピュータ
１１１  マザーボード
１２０  プロセシングユニット
１２１  システムバス
１３０  システムメモリ
１３１  読出し専用メモリ（ＲＯＭ）
１３２  ランダムアクセスメモリ（ＲＡＭ）
１３３  基本入出力システム（ＢＩＯＳ）
１３４  オペレーティングシステム
１３５  アプリケーションプログラム
１３６  その他のプログラムモジュール
１３７  プログラムデータ
１４０  固定メモリインターフェース
１４１  ハードドライブ
１４２  機械的ディスク
１４４  オペレーティングシステム
１４５  アプリケーションプログラム
１４６  その他のプログラムモジュール
１４７  プログラムデータ
１５０  着脱可能メモリインターフェース
１５１  ディスクドライブ
１５２  着脱可能不揮発性磁気ディスク
１５５  光ディスクドライブ
１５６  着脱可能不揮発性光ディスク
１６０  ユーザ入力インターフェース
１６１  ポインティングデバイス
１６２  キーボード
１７０  ネットワークアダプタ
１７１  ローカルエリアネットワーク（ＬＡＮ）
１７２  モデム
１７３  ワイドエリアネットワーク（ＷＡＮ）
１７４  ＴＣＰ／ＩＰオフロードエンジン
１８０  リモートコンピュータ
１８１  メモリストレージ装置
１８２  リモートストレージボリューム
１８３  リモートブートサーバ
１８５  リモートアプリケーションプログラム
１９０  ビデオインターフェース
１９１  モニタ
１９５  出力周辺インターフェース
１９６  プリンタ
１９７  スピーカ
２００  ハードウェアカード
２０２  プロセッサ
２０４  ＲＯＭ
２０６  ＲＡＭ
２０８  ＮＶＭキャッシュ
２１２  ネットワークインターフェース
２１４  ネットワーク
２１６  インターフェース
２１８  インターフェース
２２０  インターフェース
２２２  ＮＶＭキャッシュドライバ
４００  ノースブリッジ／サウスブリッジアーキテクチャ
４０２  ノースブリッジ
４０４  サウスブリッジ
４０６  ＮＶＭ  ＤＩＭＭスロット
４０８  ＤＲＡＭ  ＤＩＭＭ
５００  アクセラレーテッドハブアーキテクチャ
５０２  コントローラハブ
５０４  Ｉ／Ｏコントローラハブ
５０６  ファームウェアハブ
６００  ストレージドライバスタック
６０２  予測キャッシュコントロールモジュール
６０４  ファイルシステムフィルタドライバ
６０６  ファイルシステム
６０８  書込みキャッシュフィルタドライバ
６１０  ブロックモードネットワークストレージドライバ
６１２  ネットワークプロトコルレイヤ
【図１】
2004178596.tif 000003
【図２】
2004178596.tif 000004
【図３】
2004178596.tif 000005
【図４】
2004178596.tif 000006
【図５】
2004178596.tif 000007
【図６】
2004178596.tif 000008
【図７】
2004178596.tif 000009
【図８】
2004178596.tif 000010
【図９】
2004178596.tif 000011