(57)【要約】【課題】  ハード・ドライブの読み取り／書き込み性能を向上させる方法および装置を提供する。【解決手段】    ソリッド・ステート不揮発性（ＮＶ）メモリを有するデバイスを、従来のハード・ドライブに直列に追加し、リード／ライト・キャッシュとして作用する。オペレーティング・システムが指定するデータを、ＮＶメモリに格納する。オペレーティング・システムは、ＮＶメモリに入力するデータのリストを供給する。このデータは、ＮＶメモリ内に張り付けられるデータと、動的なデータとを含む。張り付けられるデータは、オペレーティング・システムが流出させることをＮＶメモリに命令するまで、ＮＶメモリ内に存続する。動的データは、ハード・ドライブ・コントローラによって流出させることができる。格納のためにアプリケーションが送るデータは、オペレーティング・システムがそれをディスクに引き渡すまで、一時的にＮＶメモリにデータ・ブロック単位で格納される。【選択図】      図３
2008538437.tif 000002
【特許請求の範囲】
【請求項１】
インライン永続的記憶装置であって、
ディスク・ドライブのディスク・ドライブ・コネクタに接続するように構成されている筐体と、
前記筐体に実装され、前記ディスク・ドライブおよびコントローラと通信するソリッド・ステート不揮発性（「ＮＶ」）メモリ・ブロックのアレイと、
を備えており、前記コントローラは前記ディスク・ドライブと通信し、前記コントローラは、前記ＮＶメモリを制御し、計算機から受け取った少なくとも１つのデータ・ブロックを、前記ＮＶメモリ内にある少なくとも１つのメモリ・ブロックに格納し、流出コマンドを受け取ったことに応答して、前記少なくとも１つのデータ・ブロックを前記ソリッド・ステートＮＶメモリ・ブロックのアレイから流出させるように構成されている、インライン永続的記憶装置。
【請求項２】
請求項１記載のインライン永続的記憶装置において、前記コントローラは筐体内部にある、インライン永続的記憶装置。
【請求項３】
請求項１記載のインライン永続的記憶装置であって、更に、前記ＮＶメモリよりも高速な揮発性メモリ・バッファと、エネルギ蓄積デバイスとを備えている、インライン永続的記憶装置。
【請求項４】
請求項３記載のインライン永続的記憶装置において、前記エネルギ蓄積デバイスは、突然の停電の場合に、前記揮発性メモリおよび前記ＮＶメモリのアレイの少なくとも１つからのデータをディスク・ドライブに移動させることができるだけの十分な期間、前記揮発性バッファおよび前記ＮＶメモリ・バッファに給電し続けるための十分な電力が得られるようにされている、インライン永続的記憶装置。
【請求項５】
請求項３記載のインライン永続的記憶装置において、前記エネルギ蓄積デバイスは、バッテリまたはキャパシタである、インライン永続的記憶装置。
【請求項６】
請求項１記載のインライン永続的記憶装置であって、更に、１対のコネクタを備えており、該１対のコネクタの一方は前記ディスク・ドライブ・コネクタに接続し、前記１対のコネクタの他方は、マザーボードに接続されているケーブルに接続する、インライン永続的記憶装置。
【請求項７】
請求項１記載のインライン永続的記憶装置において、前記筐体は前記ディスク・ドライブに一体的に取り付けられている、インライン永続的記憶装置。
【請求項８】
請求項１記載のインライン永続的記憶装置であって、更に、１対の電力コネクタを備えており、該１対の電力コネクタの一方は、ディスク・ドライブ電力コネクタに接続し、前記１対のコネクタの他方は、電力ケーブルに接続する、インライン永続的記憶装置。
【請求項９】
請求項１記載のインライン永続的記憶装置において、前記コントローラは、オペレーティング・システムからのコマンドを先取し、前記ＮＶＭメモリへの書き込みをバッファする、インライン永続的記憶装置。
【請求項１０】
請求項１記載のインライン永続的記憶装置において、前記コントローラは、更に、予めキャッシュするデータのリストを受け取ったことに応答して、前記ディスク・ドライブから、少なくとも１つのデータ・ブロックをＮＶメモリにロードするように構成されている、インライン永続的記憶装置。
【請求項１１】
請求項１記載のインライン永続的記憶装置において、前記コントローラは、更に、データ・ブロックを前記ＮＶメモリ内に張り付けるように構成されている、インライン永続的記憶装置。
【請求項１２】
請求項１記載のインライン永続的記憶装置において、前記コントローラは、更に、前記少なくとも１つのデータ・ブロックをＮＶメモリにロードするために、直ちにディスク・ドライブをスピン・アップすることを命令するように構成されている、インライン永続的記憶装置。
【請求項１３】
請求項１記載のインライン永続的記憶装置において、各メモリ・ブロックは、張り付けられたデータ・ブロックおよび張り付けられないデータ・ブロックの一方であり、前記コントローラは、更に、張り付けデータ・ブロックを流出させるコマンドを受け取ったことに応答して、張り付けデータ・ブロックを流出させるように構成されている、インライン永続的記憶装置。
【請求項１４】
請求項１記載のインライン永続的記憶装置において、各メモリ・ブロックは、張り付けられたデータ・ブロックおよび張り付けられないデータ・ブロックの一方であり、前記コントローラは、更に、動的キャッシュを流出させるコマンドを受け取ったことに応答して、張り付けていないデータ・ブロックを流出させるように構成されている、インライン永続的記憶装置。
【請求項１５】
請求項１記載のインライン永続的記憶装置において、各メモリ・ブロックは、張り付けられたデータ・ブロックおよび張り付けられないデータ・ブロックの一方であり、前記コントローラは、更に、全てのデータ・ブロックを流出させるコマンドを受け取ったことに応答して、張り付けデータ・ブロックおよび張り付けていないデータ・ブロックを流出させるように構成されている、インライン永続的記憶装置。
【請求項１６】
請求項１記載のインライン永続的記憶装置において、各メモリ・ブロックは、張り付けられたデータ・ブロックおよび張り付けられないデータ・ブロックの一方であり、前記コントローラは、更に、能力を与える要請を受け取ったことに応答して、コンピュータ・システムに能力を供給するように構成されている、インライン永続的記憶装置。
において、
【請求項１７】
請求項１６記載のインライン永続的記憶装置において、前記コントローラが前記コンピュータ・システムに能力を供給するとき、前記コントローラは、前記ＮＶメモリのサイズ、該ＮＶメモリがサポートする機構、および前記ディスク・ドライブの状態を規定する、インライン永続的記憶装置。
【請求項１８】
請求項１記載のインライン永続的記憶装置において、前記コントローラは、更に、
前記利用可能なＮＶメモリ空間が閾値未満となったときを判定し、
前記ＮＶメモリの利用可能空間が閾値未満となった場合に、前記ＮＶメモリの一部を前記ディスク・ドライブに流出させる、
ように構成されている、インライン永続的記憶装置。
【請求項１９】
請求項１記載のインライン永続的記憶装置において、前記コントローラは、更に、前記ディスク・ドライブに宛てられたコマンドを先取し、該コマンドを解釈し、該コマンドを前記ディスク・ドライブに受け渡すように構成されている、インライン永続的記憶装置。
【請求項２０】
請求項１記載のインライン永続的記憶装置において、前記コントローラは、更に、前記オペレーティング・システムからコマンドを受け取り、コマンドを変換し、これらをＨＤＤに受け渡すように構成されている、インライン永続的記憶装置。
【請求項２１】
請求項１記載のインライン記憶装置において、前記インライン記憶装置には、前記ディスク・ドライブに固定可能とするストラップまたは接着剤が付随する、インライン記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、コンピュータ・システムに関し、更に特定すれば、ハード・ディスク・ドライブの性能向上に関する。
【背景技術】
【０００２】
コンピュータ・システム上では、ある種の永続的記憶装置を用いて、コンピュータ・システムの機能発揮のために永続的なメモリを設けている。例えば、磁気ハード・ディスク・ドライブ・アセンブリが当技術分野では周知である。しかしながら、このような永続的メモリにはいくつかの欠点がある。データを読み取るまたは書き込むために磁気ハード・ドライブを用意するのには、時間がかかる。そうするためには、殆どの場合、物理的にディスクのスピニングを開始し、読み取り／書き込みヘッドをディスク上の適正な場所に位置付ける必要がある。
【０００３】
しかしながら、コンピュータ・システムのマイクロプロセッサは、ＤＲＡＭまたはその他の何らかの種類の揮発性電子メモリというような、高速ランダム・アドレス可能メモリからの命令だけを実行する。このアドレス可能メモリを初期化しオペレーティング・システムをブートするために、ＥＰＲＯＭ（電子的プログラム可能リード・オンリ・メモリ）または同様のデバイス内に、少量の不揮発性ブート・アップ・メモリが設けられているのが通例である。コンピュータをブートするとき、不揮発性メモリに格納されているブート・プログラムを用いる。ブート・プログラムは、ハード・ディスク上にあるオペレーティング・システムの最初の部分を読み取るコードを収容しており、この最初の部分には、オペレーティング・システムの残り部分をロードし初期化する役割がある。
【０００４】
オペレーティング・システム、エクゼキュータブル(executable)、およびデータのハード・ディスクからの転送は、特に、オペレーティング・システムが大型オペレーティング・システムであるとき、ファイルが大きいとき等には、時間がかかる。これは、コンピュータ・システムをブートするときだけでなく、コンピュータ・システムを休止モード(hibernate mode)から復元する際にも生ずることが多い。転送時間における重要な要因の１つは、ディスク・ドライブのスピン・アップ(spin up)速度に起因する。比較的低いＲＰＭでスピンする比較的小さなディスクでは、スピン・アップし使用可能になるためには５から６秒を要する。マルチ・プラッタ・デバイス(multi-platter device)のような大型ディスクや、高いＲＰＭでスピンするディスクでは、スピン・アップするのに１０から１２秒を要する。数百または数千ものディスク・ドライブを有し、これらが概ね順次スピン・アップしていくサーバ・システムでは、ディスク・スピン・アップ時間は、サーバ・システムをブートするための総時間の内９０パーセント以上を占める可能性がある。ハード・ドライブは、コンピュータ・システムが使用する電力の大部分を消費し、熱負荷の大きな要因となり、システムを冷却するためにファンが必要となり、そのノイズのためにＰＣから騒音が発生する原因にもなる。
【０００５】
コンピュータ・システムをブートし、休止からコンピュータ・システムを復元する際に速度を高める方法が開発されている。Feigenbaum et alの米国特許第５，３０７，４９７号に一例が開示されている。’４９７特許は、オペレーティング・システムの一部をリード・オンリ・メモリ（ＲＯＭ）に格納し、電力投入またはリセットの間その一部にアクセスできるようにしたことを教示する。言い換えると、’４９７特許に開示されている方法は、オペレーティング・システムの設定や使用するアプリケーションに関するユーザの好みを変更することや、コンピュータ・システムを休止から復元することや、オペレーティング・システムの更新または新バージョンには適応していない。
【０００６】
業界で開発した別の例では、ディスク・ドライブとは別個でコンピュータ・メモリ全体を格納するバックアップ・メモリにコンピュータ・メモリの状態を格納する。このバックアップ・メモリは、コンピュータ・メモリ全体を格納するので大きくなる。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、ハード・ドライブの読み取り／書き込み性能を向上させ、ハード・ディスクにアクセスする回数を減少させる。
【課題を解決するための手段】
【０００８】
オペレーティング・システムは、ハード・ドライブおよびマザーボードと直列でありハード・ディスクに添付されているデバイスの中に、ソリッド・ステート不揮発性（「ＮＶ」）メモリに入れるデータのリストを設けることによって、標準的な機械的ドライブを標準的なマザー・ボートと共に用いることを可能にする。データには、ＮＶメモリ内に張り付ける(pin)データや、動的なデータが含まれる。張り付けデータは、オペレーティング・システムがそれを流出させることを命令するまでＮＶメモリ内に存続する。動的データとは、オペレーティング・システムが優先順位を付けることができるが、それ以外でもハード・ドライブ・コントローラによって制御可能なデータである。
【０００９】
ディスク・ドライブ上のＩＤコネクタまたは同等物に設置するユニットに、ＮＶメモリを設ける。このユニットは、比較的ディスク・ドライブから取り外し難くなるように、ディスク・ドライブ上に締結することができる。締結することによって、停電後にドライブをコンピュータ・システムから取り外し、改竄する可能性が低下する。一実施形態では、デバイスは、ディスクに書き込むデータ・バーストをバッファするための高速揮発性メモリと、小型バッテリのようなエネルギ蓄積デバイスとを含む。エネルギ蓄積デバイスは、突然の停電の場合に、十分に長い期間デバイスへの給電を維持して揮発性メモリからＮＶメモリにデータを移動させることができるように、十分な電力を供給する。動作の間、ユニットのコントローラは、オペレーティング・システムからのコマンドをキャッシュし、機械式ディスクをスピン・ダウンできるように、ディスクの代わりにＮＶＭメモリに書き込みをバッファすることによって、レイテンシ、電力消費、ならびにドライブ上における磨耗および磨滅を低減する。
【００１０】
ＮＶメモリは、ドライブに書き込まれたデータを一時的にバッファするために、システム動作中に用いられる。ＮＶメモリ上で利用可能なリソースが閾値未満となったとき、ＮＶメモリに格納されているデータをディスク・ドライブに転送する。これによって、システムが動作しているときに、ディスク・ドライブをスピン・アップする回数が減少する。
【００１１】
オペレーティング・システムがユニットにおけるＮＶメモリ・キャッシュを制御することを可能にするインターフェースも提供する。このインターフェースは、オペレーティング・システム、ユニット、およびハード・ドライブが通信するためのコマンドを備えている。インターフェースは、ハード・ドライブの能力を判定するコマンド、ブロックのリストをＮＶメモリに張り付けるコマンド、ブロックのリストをＮＶメモリに予めキャッシュしておくコマンド、コマンドをＮＶメモリからハード・ドライブ・ディスクに流出させるコマンド、書き込みトランザクションを備えたブロック集合をＮＶメモリに書き込むコマンド、および書き込みトランザクションをハード・ドライブ・ディスクに委ねるコマンドを含む。
【００１２】
本発明の追加の特徴および利点は、添付図面を参照しながら進める、以下の例示の実施形態の詳細な説明から明白となろう。
【００１３】
添付した特許請求の範囲は、本発明の特徴を特定的に明記するが、本発明は、その目的および利点と共に、添付図面と関連付けた以下の詳細な説明から最も深く理解することができる。
【発明を実施するための最良の形態】
【００１４】
本発明は、従来のハード・ディスク・ドライブの電力消費を低減し、ハード・ディスク・ドライブの読み取り／書き込み性能を向上し、コンピュータ・システムのブート時間および休止起動時間を短縮する。フラッシュ・メモリのようなソリッド・ステート不揮発性メモリ技術でデータを格納する。スタティック・コンフィギュレーション・データとは、オペレーティング・システムおよびアプリケーション・プログラム命令、ならびにオペレーティング・システムに対するアップグレードがインストールされた後、またはアプリケーションがインストールされた後を除いて、オペレーティング・システムがブートしたり、アプリケーションが起動する毎に変化しないデータのことである。ダイナミック・コンフィギュレーション・データとは、プログラム命令や、オペレーティング・システムのブート毎またはアプリケーションの起動毎に変化するデータであり、実行中いずれの時点でも変化する可能性がある。以下に続く説明では、ソリッド・ステート不揮発性メモリを示すために「ＮＶメモリ」という用語を用いる。ＮＶメモリは、電力を除去したときにそのデータを保持し、消去して新しいデータでプログラムすることができる種類のメモリであれば、そのいずれをも想定している。ＮＶメモリは、バッテリ・バックアップ・メモリを含むこともできる。ＮＶメモリは、マザーボードとハード・ディスク・ドライブとの間に、ディスク・ドライブ・インターフェースと直列に配置される。
【００１５】
将来の移動体システム用ディスクは、実際にはディスクをスピンさせておくための電力を引き込むことなく、そのメモリを生かし続けるためにバッテリから電力を引き込むこともあり得る。ＮＶメモリは、ファイル・データ、ファイル・メタデータだけでなく、ブート・セクタやパーティション・テーブルのような既知のディスク・セクタも格納することができる。電力遮断または休止モードへの移行の間、コンピュータ・システムは、以前の使用履歴に基づいて、ＮＶメモリに格納するスタティックおよびダイナミック・コンフィギュレーション・データを決定する。また、ディスク・ドライブをスピン・アップする回数を減少するために、システム動作中にもデータをＮＶメモリに格納する。移動体ＰＣ等では、ディスク・ドライブをスピン・アップする回数を減少することによって、ユーザの使用感(experience)が向上する。何故なら、電力が減少することによって、所与のバッテリ容量では、移動体デバイスが小さく軽い程、使用できる時間が長くなるからである。また、ノイズが多くて五月蝿くユーザにとって煩わしい高速ファンを走らせる必要性も低減する。コンピュータ・システムに電力を投入するときまたは休止から起動するとき、ＮＶメモリ内にあるコンフィギュレーション・データを用いて、ダイナミック・システム・メモリを初期化するので、ディスク・ドライブをスピン・アップする必要がない。ディスクからの追加ファイルが必要な場合、ＮＶメモリからの初期化と同時にディスク・ドライブをスピン・アップすることができるので、ディスクのスピン・アップによって初期化プロセスが遅れることはない。
【００１６】
図面に移ると、同様の参照番号は同様の要素を示しており、相応しい計算機環境において実施した場合の本発明が図示されている。必須ではないが、本発明の説明は、総じて、パーソナル・コンピュータによって実行するプログラム・モジュールのような、コンピュータ実行可能命令との関連において行うこととする。一般に、プログラム・モジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含み、特定のタスクを実行するか、または特定の抽象的データ・タイプを実装する。更に、本発明は、他のコンピュータ・システム構成とでも実用可能であることを、当業者は認めよう。他のコンピュータ・システム構成には、ハンド・ヘルド・デバイス、マルチ・プロセッサ・システム、マイクロプロセッサに基づくまたはプログラム可能な消費者用電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレーム・コンピュータ等を含む。また、本発明は、通信ネットワークを通じてリンクされているリモート処理デバイスがタスクを実行する分散型計算機環境においても実用可能である。分散型計算機環境では、プログラム・モジュールは、ローカルおよびリモート・メモリ記憶装置双方に配することができる。
【００１７】
図１は、本発明を実施することができる、適した計算システム環境１００の一例を示す。計算システム環境１００は、適した計算機環境の一例に過ぎず、本発明の使用範囲や機能性について限定を示唆する意図は全くない。また、計算機環境１００は、動作環境例１００に示す構成要素のいずれの１つまたは組み合わせに関しても、何らかの依存性や必須要件を有するという解釈は行わないこととする。
【００１８】
本発明は、多数のその他の汎用または特殊目的用計算システム環境や構成とでも動作する。本発明と共に用いるのに適していると思われる周知の計算システム、環境、および／または構成の例には、パーソナル・コンピュータ、サーバ・コンピュータ、ハンド・ヘルドまたはラップトップ・コンピュータ、マルチ・プロセッサ・システム、マイクロプロセッサに基づくシステム、セット・トップ・ボックス、プログラマブル消費者用電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレーム・コンピュータ、前述のシステムまたはデバイスのいずれをも含む分散型計算機環境等が含まれる。
【００１９】
本発明の説明は、総じて、コンピュータによって実行するプログラム・モジュールのような、コンピュータ実行可能命令との関連において行うこととする。一般に、プログラム・モジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含み、特定のタスクを実行するか、または特定の抽象的データ・タイプを実現する。また、本発明は、通信ネットワークを通じてリンクされているリモート処理デバイスがタスクを実行する分散型計算機環境においても実用可能である。分散型計算機環境では、プログラム・モジュールは、メモリ記憶装置を含むローカルおよびリモート・コンピュータ記憶媒体双方に配することができる。
【００２０】
図１を参照すると、本発明を実施するシステム例は、コンピュータ１１０の形態とした汎用計算機を含む。コンピュータ１１０の構成要素は、限定ではなく、演算装置１２０、システム・メモリ１３０、およびシステム・バス１２１を含むことができる。システム・バス１２１は、システム・メモリを含む種々のシステム構成要素を演算装置１２０に結合する。システム・バス１２１は、数種類のバス構造のいずれでもよく、メモリ・バスまたはメモリ・コントローラ、周辺バス、および種々のバス構造のいずれかを用いるローカル・バスを含む。限定ではなく一例として、このような構造には、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、改良ＩＳＡ（ＥＩＳＡ）バス、ビデオ電子規格連合（ＶＥＳＡ）ローカル・バス、およびMezzanine バスとしても知られている周辺素子相互接続（ＰＣＩ）バスが含まれる。
【００２１】
コンピュータ１１０は、通例、種々のコンピュータ読み取り可能媒体を含む。コンピュータ読み取り可能媒体は、コンピュータ１１０がアクセス可能な入手可能な媒体であればいずれでも可能であり、揮発性および不揮発性の双方、リムーバブル、および非リムーバブル媒体を含む。限定ではない一例をあげると、コンピュータ読み取り可能媒体は、コンピュータ記憶媒体および通信媒体から成ると考えられる。コンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、またはその他のデータというような情報の格納のために、あらゆる方法または技術で実施される、揮発性および不揮発性の双方、リムーバブル、および非リムーバブル媒体を含む。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリまたはその他のメモリ技術、ＣＤ−ＲＯＭ、ディジタル多様ディスク（ＤＶＤ）またはその他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージまたはその他の磁気記憶デバイス、あるいは所望の情報を格納するために用いることができしかもコンピュータ１１０がアクセス可能なその他のいずれの媒体も含むが、これらに限定されるのではない。通信媒体は、通例、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、またはその他のデータを、搬送波またはその他の移送機構のような変調データ信号において具体化し、あらゆる情報配信媒体を含む。「変調データ信号」という用語は、当該信号内に情報をエンコードするように、その特性の１つ以上が設定または変更した信号を意味する。限定ではない一例を上げると、通信媒体は、有線ネットワークまたは直接有線接続というような有線媒体、ならびに音響、ＲＦ、赤外線、およびその他のワイヤレス・媒体というようなワイヤレス媒体を含む。前述のいずれの組み合わせも、コンピュータ読み取り可能媒体の範囲に当然含まれるものとする。
【００２２】
システム・メモリ１３０は、リード・オンリ・メモリ（ＲＯＭ）１３１およびランダム・アクセス・メモリ（ＲＡＭ）１３２のような揮発性および／または不揮発性メモリの形態で、コンピュータ記憶媒体を含む。基本入出力システム１３３（ＢＩＯＳ）は、起動中のように、コンピュータ２０内のエレメント間におけるデータ転送を補助する基本的なルーチンを含み、典型的にＲＯＭ１３１内に格納されている。ＲＡＭ１３２は、典型的に、演算装置１２０が直ちにアクセス可能であるデータおよび／またはプログラム・モジュール、または現在これによって処理されているデータおよび／またはプログラム・モジュールを収容する。一例として、そして限定ではなく、図１は、オペレーティング・システム１３４、アプリケーション・プログラム１３５、その他のプログラム・モジュール１３６、およびプログラム・データ１３７を示す。
【００２３】
また、コンピュータ１１０は、その他のリムーバブル／非リムーバブル揮発性／不揮発性コンピュータ記憶媒体も含むことができる。一例としてのみ、図１は、非リムーバブル不揮発性磁気媒体からの読み取りおよびこれへの書き込みを行なうハード・ディスク・ドライブ１４１、リムーバブル不揮発性磁気ディスク１５２からの読み取りおよびこれへの書き込みを行なう磁気ディスク・ドライブ１５１、ならびにＣＤ  ＲＯＭまたはその他の光媒体のようなリムーバブル不揮発性光ディスク１５６からの読み取りおよびこれへの書き込みを行なう光ディスク・ドライブ１５５を示す。動作環境の一例において使用可能なその他のリムーバブル／非リムーバブル、揮発性／不揮発性コンピュータ記憶媒体には、限定する訳ではないが、磁気テープ・カセット、フラッシュ・メモリ・カード、ディジタル・バーサタイル・ディスク、ディジタル・ビデオ・テープ、ソリッド・ステートＲＡＭ、ソリッド・ステートＲＯＭ等が含まれる。ハード・ディスク・ドライブ１４１は、典型的に、インターフェース１４０のような非リムーバブル・メモリ・インターフェースを介してシステム・バス１２１に接続され、磁気ディスク・ドライバ１５１および光ディスク・ドライブ１５５は、典型的に、インターフェース１５０のようなリムーバブル・メモリ・インターフェースによって、システム・バス１２１に接続する。
【００２４】
先に論じ図１に示すドライブおよびそれらと連動するコンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、およびコンピュータ１１０のその他のデータを格納する。図１では、例えば、ハード・ディスク・ドライブ１４１は、オペレーティング・システム１４４、アプリケーション・プログラム１４５、その他のプログラム・モジュール１４６、およびプログラム・データ１４７を格納するように示されている。尚、これらの構成要素は、オペレーティング・システム１３４、アプリケーション・プログラム１３５、その他のプログラム・モジュール１３６、およびプログラム・データ１３７と同じでも異なっていても可能であることを注記しておく。オペレーティング・システム１４４、アプリケーション・プログラム１４５、その他のプログラム・モジュール１４６、およびプログラム・データ１４７は、ここで、少なくともこれらが異なるコピーであることを示すために、異なる番号が与えられている。ユーザは、キーボード１６２、および一般にマウス、トラックボールまたはタッチ・パッドと呼ばれているポインティング・デバイス１６１によって、コマンドおよび情報をコンピュータ１１０に入力することができる。他の入力デバイス（図示せず）は、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星ディッシュ、スキャナ等を含むことができる。これらおよびその他の入力デバイスは、多くの場合、ユーザ入力インターフェース１６０を介して、演算装置１２０に接続されている。ユーザ入力インターフェース１６０は、システム・バスに結合されているが、パラレル・ポート、ゲーム・ポートまたはユニバーサル・シリアル・バス（ＵＳＢ）のようなその他のインターフェースおよびバス構造によって接続することも可能である。モニタ１９１またはその他の形式の表示装置も、ビデオ・インターフェース１９０のようなインターフェースを介して、システム・バス１２１に接続されている。モニタに加えて、コンピュータは、スピーカ１９７およびプリンタ１９６のようなその他の周辺出力デバイスを含むこともでき、これらは出力周辺インターフェース１９０を介して接続することができる。
【００２５】
コンピュータ１１０は、リモート・コンピュータ１８０のような１つ以上のリモート・コンピュータへの論理接続を用いて、ネットワーク環境において動作することも可能である。リモート・コンピュータ１８０は、パーソナル・コンピュータ、ハンド・ヘルド・デバイス、サーバ、ルータ、ネットワークＰＣ、ピア・デバイス、またはその他の共通ネットワーク・ノードとすることができ、典型的に、コンピュータ１１０に関して先に説明したエレメントの多くまたは全てを含むが、図１にはメモリ記憶装置１８１のみを示す。図１に示す論理接続は、ローカル・エリア・ネットワーク（ＬＡＮ）１７１およびワイド・エリア・ネットワーク（ＷＡＮ）１７３を含むが、他のネットワークも含むことができる。このようなネットワーク環境は、事務所、企業規模のコンピュータ・ネットワーク、イントラネットおよびインターネットにおいては、一般的である。
【００２６】
ＬＡＮネットワーク環境で用いる場合、コンピュータ１１０は、ネットワーク・インターフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続する。ＷＡＮネットワーク環境で用いる場合、コンピュータ１１０は、典型的に、モデム１７２、またはインターネットのようなＷＡＮ１７３を通じて通信を確立するその他の手段を含む。モデム１７２は、内蔵でも外付けでもよく、ユーザ入力インターフェース１６０またはその他の適切な機構を介してシステム・バス１２１に接続することができる。ネットワーク環境では、コンピュータ１１０に関して図示したプログラム・モジュール、またはその一部は、リモート・メモリ記憶装置に格納することもできる。一例として、そして限定ではなく、図１は、リモート・アプリケーション・プログラム１８５がメモリ素子１８１上に常駐するものとして示している。尚、図示のネットワーク接続は一例であり、コンピュータ間で通信リンクを確立する他の手段も使用可能であることは認められよう。
【００２７】
以下に続く説明では、特に指示がない限り、１台以上のコンピュータが実行する動作のアクト(act)および象徴的表現を参照しながら本発明について説明する。したがって、このようなアクトおよび動作は、コンピュータによって実行されると言う場合もあり、コンピュータの演算装置による構造化形態のデータを表す電気信号の操作を含むことは言うまでもない。この操作は、データを変換するか、またはコンピュータのメモリ・システムにおける位置に保持し、当業者には周知のやり方で、コンピュータの動作を再構成するかまたはその他の変更を行う。データが保持されているデータ構造は、当該データのフォーマットによって定義される特定のプロパティを有するメモリの物理的位置である。しかしながら、前述の文脈で本発明について説明していくが、これは限定を意味するのではない。何故なら、以下に記載する種々のアクトおよび動作はハードウェアでも実施可能であることは、当業者に認められるからである。
【００２８】
これより図２に移ると、ＮＶメモリ２００は、コンピュータの別個の構成要素２２０として、コンピュータ１１０内に配置することができ、マザーボードおよびハード・ディスク・ドライブ間にディスク・ドライブ・インターフェースと直列に配置されている。ＮＶメモリ２００は、別個の構成要素２２０とすれば、ＮＶメモリ２００を有さない旧式のシステム上において性能を向上させることができ、ＮＶメモリを有するハード・ドライブを設置する必要はない。
【００２９】
これより図３および図４ａ〜図４ｂに移ると、永続的記憶装置３００（即ち、ハード・ディスク・ドライブ１４１）は、ディスク・アセンブリ３０２を有し、ディスク・アセンブリ３０２は、１つ以上のディスク３０４のような不揮発性メモリ記憶媒体、ディスク３０４に対して読み取りおよび書き込みを行うリード／ライト・ヘッド３０６、ならびにリード／ライト・ヘッド３０６をディスク３０４上の位置に移動させるスピンドル／電機子アセンブリ３０８を含む。コントローラ３１０は、ディスク・アセンブリに、記憶媒体からデータを読み出すこと、またはデータを記憶媒体に書き込むことを命令する。ＮＶメモリ２００は、デバイス２２０内に設けられている。デバイス２２０は、ディスク・ドライブ上のＩＤコネクタ３２０または同等物（および電力接続部３２２）上に設置されている。ＡＴＡ（先進技術添付：Advanced Technology Attachment)ケーブル３２４が、デバイス２２０およびマザーボード１１１に接続する。電力は、コネクタ３２６を通じてデバイス２２０に供給される。図４ａおよび図４ｂは、標準的なデスク・トップ・ハード・ドライブのＩＤコネクタ３２０上に設置したデバイス２２０を示すが、デバイス２２０はこのようなコネクタに限定されるのではなく、デバイス２２０は他のコネクタ、または、例えば、限定ではなく、ラップ・トップ・ハード・ディスク・ドライブのような移動体デバイスのハード・ドライブ・コネクタのようなコネクタ上にも設置可能であることは、当業者には認められよう。デバイス２２０は、ディスク・ドライブからデバイス２２０を取り外し難くなるまたは殆ど取り外せなくなるように、ディスク・ドライブ上に締結即ち永続的に装着することができる。締結／永続的装着により、停電後にドライブ３００をコンピュータ・システムから取り外し、改竄する可能性が低下する。
【００３０】
一実施形態では、小型バッテリのようなエネルギ蓄積デバイス２２２を設け、電力を維持するのに十分な電力を揮発性メモリ２２６および不揮発性メモリに供給し、突然の停電の場合に、揮発性メモリからＮＶメモリにデータを移動させることができるように十分に長い期間給電する。
【００３１】
動作の間、デバイスのコントローラ２２４は、オペレーティング・システムからのコマンドをキャッシュし、即ち、先取(intercept)し、機械式ディスク３０４をスピン・ダウンできるように、ディスク３０４の代わりにＮＶＭメモリ２００に書き込みをバッファすることによって、レイテンシ、電力消費、ならびにドライブ上における磨耗および磨滅を低減する。また、コントローラは、オペレーティング・システムからのコマンドを先取し、そのコマンドをコントローラ３１０に受け渡す。
【００３２】
コンピュータ１１０は、ディスク３０４の大領域に対するアクセス時間が、典型的な時間である約１０ミリ秒ではなく、５００マイクロ秒以下であることを観察することによって、ＮＶメモリの存在を検出することができる。代替実施形態では、ＮＶメモリ２００をオペレーティング・システムに明示して、オペレーティング・システムおよびその他の構成要素がＮＶメモリ２００のサイズを問い合わせ、ＮＶメモリ２００の状態を制御し、トランザクション手順を用いてデータをＮＶメモリ２００に書き込み、そして前述のように、ＮＶメモリ２００を書き込みバッファとして用いることができるようにする。用いることができるＡＰＩの一実施形態が、本願と同じ譲受人に譲渡された、"Non-Volatile Memory Cache Performance Improvement"（不揮発性メモリ・キャッシュの性能向上）と題し、２００４年５月３日に出願された米国特許出願第１０／８３７，９８６号にあり、ここで引用したことにより、その内容全体が本願にも含まれるものとする。
【００３３】
これより、図５から図７を参照して、本発明の動作について説明する。尚、以下に記載するステップは、順次、並列、または順次および並列の組み合わせでも実行可能であることを注記しておく。ディスク３０４のスピン・アップ時間を判定する（ステップ５００）。比較的遅い速度でスピンする比較的小型のディスクでは、スピン・アップ時間は通例３から６秒である。それよりも大きいディスク、マルチ・プラッタ・ディスク、および更に速い速度でスピンするディスクでは、スピン・アップ時間は１０から１２秒近くとなる。一実施形態では、スピン・アップ時間を推論するには、スピンしていない（即ち、アクセスされていない）ディスク・ドライブから１ページをシステム・メモリにロードするのに要する時間を判定する。スピン・アップ時間は、ロード時間にほぼ等しい。何故なら、ロード時間はスピン・アップ時間によって決まるからである。
【００３４】
コンピュータ・システムの電源を切るとき（ステップ５０２）、ＮＶメモリに格納するスタティック・コンフィギュレーション・データおよびダイナミック・コンフィギュレーション・データを決定する（ステップ５０４）。スタティック・コンフィギュレーション・データおよびダイナミック・コンフィギュレーション・データの選択は、スタティック・コンフィギュレーション・データおよびダイナミック・コンフィギュレーション・データを初期化する時間がディスク・ドライブのスピン・アップ時間にほぼ等しくなるように行う。スタティックおよびダイナミック・コンフィギュレーション・データは、ディスク・ドライブからのデータを初期化する必要がないコンフィギュレーション・データである。これは、キーボード・デバイス、ポインティング・デバイス、ＵＳＢサブシステム、ビデオ・サブシステム等のコンフィギュレーション・データを含むことができる。必要なＮＶメモリのサイズは、スタティック・コンフィギュレーション・データおよびダイナミック・コンフィギュレーション・データのサイズに等しい。多くのオペレーティング・システムでは、必要なＮＶメモリのサイズは、１６ＭＢから６４ＭＢの範囲である。オペレーティング・システムによっては、ＣＰＵ圧縮のコストを削減するために、ＮＶメモリを１２８ＭＢ必要とする場合もある。
【００３５】
スタティック・コンフィギュレーション・データは、全てのユーザのために用いられるシステム・コンフィギュレーション・データである。例えば、Ｗｉｎｄｏｗｓ（登録商標）オペレーティング・システムでは、スタティック・コンフィギュレーション・データは、ＮＶメモリ上に格納されているスタティックおよびダイナミック・コンフィギュレーション・データならびにディスク・ドライブ上に格納されているコンフィギュレーション・データをロードするためのブート・ストラップ・コードを含む。Ｗｉｎｄｏｗｓ（登録商標）オペレーティング・システムにおける他のスタティック・コンフィギュレーション・データは、レジストリ初期化（ｓｍｓｓ．ｅｘｅ）、ビデオ初期化（ｃｓｒｓｓ．ｅｘｅ）、シェル、ダイナミック・リンク・ライブラリから走るサービス（ｓｖｃｈｏｓｔ．ｅｘｅ）、ＩＰＳｅｃおよびネットワーク・ログインのようなセキュリティ・サービス（ｌｓａｓｓ．ｅｘｅ）のようなカーネルを初期化するために必要なファイルを含む。電力を切っているコンピュータ・システムでは、ＮＶメモリに格納されているスタティック・コンフィギュレーション・データは、ブート・ストラップ・コード、カーネル初期化ファイル、ビデオ初期化ファイル、シェル、およびディスク・ドライブをスピン・アップしている間必要となるサービス（例えば、ダイナミック・リンク・ライブラリ）を含む。
【００３６】
ダイナミック・コンフィギュレーション・データは、ユーザ毎のシステム・コンフィギュレーション・データである。例えば、ダイナミック・コンフィギュレーション・データは、デスクトップ設定（例えば、背景画像、アイコンの場所等）、セキュリティ証明書(security credential)、インターネットお気に入りファイル、フォント、起動プログラム、キーボード設定、計画決定タスク、資金情報等のような個人的データ・ファイルを含む。電力を切っているコンピュータ・システムでは、ＮＶメモリに格納されているダイナミック・コンフィギュレーション・データは、デスクトップ設定、キーボード設定、およびセキュリティ・クリデンシャルを含む。
【００３７】
選択したスタティック・コンフィギュレーション・データおよびダイナミック・コンフィギュレーション・データをＮＶメモリ２００に格納する（ステップ５０６）。残りのコンフィギュレーション・データをディスク・ドライブに格納する（ステップ５０８）。一実施形態では、ＮＶメモリの量は、必要となる最小サイズよりも大きい。システムの電力遮断は、アプリケーションがディスクに書き込んでいるデータのような、格納するためにディスクに送られつつあり、オペレーティング・システムが制御することができないデータをＮＶメモリ２００に送って格納することにより減少する（ステップ５１０）。これによって、ディスクへの書き込み回数が減少し、電力遮断時間が短縮する。次いで、コンピュータ・システムの電力を切る。
【００３８】
システムが休止に移りつつある場合（ステップ５１４）、同様のステップを行う。ＮＶメモリに格納するスタティック・コンフィギュレーション・データおよびダイナミック・コンフィギュレーション・データを決定し（ステップ５１６）、メモリに格納する（ステップ５１８）。このデータは、グラフィカル・ユーザ・インターフェースを素早く「再描画」（即ち、復元）するために必要なデータである。スタティック・コンフィギュレーション・データは、カーネル初期化ファイル、ビデオ初期化ファイル、シェル、および休止の前に使用されていたダイナミック・リンク・ライブラリから走るサービスを含む。ダイナミック・コンフィギュレーション・データは、デスクトップ設定、キーボード設定、フォント、および休止の前に使用されていた個人データ・ファイルを含む。
【００３９】
残りのコンフィギュレーション・データをディスク・ドライブに格納する（ステップ５２０）。アプリケーションから受け取った書き込みを、利用可能なＮＶメモリに最初に書き込み、ＮＶメモリが利用できない場合、ディスク・ドライブに格納する（ステップ５２２）。次いで、コンピュータ・システムは休止モードに入る（ステップ５２４）。
【００４０】
一実施形態では、ＮＶメモリはシステム動作中に用いられる。アプリケーションまたはオペレーティング・システムがデータをディスクに送り格納している場合（ステップ５２６）、データをＮＶメモリ２００に格納する（ステップ５２８）。システムの電力を切っているとき、または休止に移行しつつあるとき、ＮＶメモリ２００に格納されているデータをディスク・ドライブに転送する。インライン・デバイスは、ＮＶメモリ・キャッシュを含む混成ディスクを制御するために用いられる新しいコマンドを受ける場合がある。これらの新しいコマンドは、インライン・デバイス・コントローラ２２４によって、ハード・ディスク・ドライブ・コントローラ３１０が解釈することができる旧来のコマンドに変換される（ステップ５３０）。ＮＶメモリの利用可能空間が減少して閾値未満になった場合（ステップ５３２）、ＮＶメモリ内のデータをディスク・ドライブに転送する（ステップ５３４）。データをディスク・ドライブに転送する理由の１つは、休止から動作を再開するため、またはシステムをブートするために必要なコンフィギュレーション・データのために余裕を作ることである。ＮＶメモリにデータを格納することにより、動作の間にディスク・ドライブをスピン・アップする回数が減少する。これによって、ユーザの計算機、特にポケット・サイズ・デバイスに対する使用感が向上する。何故なら、電力消費が削減され、ノイズの多い高速ファンの必要性が大幅に低下するからである。加えて、スピンしデータをディスクに書き込んでいるディスク・ドライブのノイズは殆ど聞こえない。
【００４１】
図７は、コンピュータ・システムをブートする際、またはコンピュータ・システムを休止モードから復元する際に行われるステップを示す。コンピュータ・システムがディスク・ドライブからブートするときまたは休止モードから起動するとき、コンピュータ・システムは、ＮＶメモリ２００に格納されているスタティック・コンフィギュレーション・データおよびダイナミック・コンフィギュレーション・データをシステムＤＲＡＭにロードすることによって、システムＤＲＡＭを初期化する（ステップ７００）。必要な全ての初期化データがＮＶメモリに格納されておらず、追加の情報をディスクからロードしなければならない場合、最初にコンフィギュレーション・データをＮＶメモリからロードするが、その時間中、ディスク・ドライブはスピン・アップしている（ステップ７０２）。これによって、事実上、ディスク・ドライブのスピン・アップ時間がブート時間および起動時間から消滅する。一旦ディスク・ドライブがスピン・アップしたなら、ディスク・ドライブに格納されている残りのコンフィギュレーション・データをロードして、システムＤＲＡＭを初期化する（ステップ７０４）。このとき、ユーザが電源ボタンを押すと、ディスク・ドライブがスピン・アップするのを待たなければならないのではなく、モニタ１９１またはその他の種類の表示装置がオンになる時点までに、またはオンになった直後に、応答対話ログオン画面が現れるという体験をユーザは実感する。ユーザがユーザ・アイコン上でクリックしパスワードを打ち込む間に、デスクトップを表示するために必要なサービスが初期化される。ディスクがスピン・アップし、ＮＶ内のデータがディスク・ドライブ上のデータと一致することが検証された後、応答および使用可能なデスクトップがユーザに示される。一実施形態では、キャッシュされているデータの全てを比較することはない。しかしながら、パーティションまたはファイル・システム・メタデータ内で不一致があった場合、コンピュータ・システムはバグ・チェックを行い、サービス／ヘルプ・モードに移行して、次のブートのときに遅いブートを試行できるようにしなければならない。再現(recovery) または下位互換性の目的でＮＶメモリを迂回し、コンピュータ・システムを安全モードでオンにするためには、ヘルプ・ボタンまたはスイッチを用いることができる。
【００４２】
代替実施形態では、ＮＶメモリ２００をオペレーティング・システムに明示して、オペレーティング・システムおよびその他の構成要素がＮＶメモリ２００のサイズを問い合わせ、ＮＶメモリ２００の状態を制御し、トランザクション手順を用いてデータをＮＶメモリ２００に書き込み、ＮＶメモリ２００をライト・バッファとして用いることができるようにする。この実施形態は、種々の方法で実施することができる。ＮＶメモリは、図３に示すように、デバイス２２０内に位置付けることもできる。データをＮＶメモリ内にキャッシュし、ディスクに締結されているデバイス上にもデータがある場合、プロセッサのオペレーティング・システムは、ディスクからのデータの代わりに、ＮＶメモリ２００内にキャッシュされているデータを用いる。
【００４３】
図８は、前述の実施態様の一実施形態においてハードウェアと相互作用するオペレーティング・システムのストレージ・ソフトウェア・スタックを示し、インライン・デバイス２２０とハード・ディスク・ドライブとによって混成ドライブのような構成となっている。この混成ドライブは、スピンする磁気媒体およびソリッド・ステート不揮発性メモリを内蔵し、混成ディスクのために定義した新しいコマンド集合に応答する。予測揮発性リード・キャッシュ制御モジュール８０２が、次の時間間隔において要求されるデータを予測し、そのデータをハード・ディスク・ドライブ１４１から揮発性システム・メモリ１３０に読み込むことにより、ディスクからの読み出しを最少に抑える。これによって、インラインＮＶキャッシュ・デバイス２２０のライト・バッファ機能と組み合わせるときに、ディスク・プラッタを長期間にわたってスピン・ダウンすることが可能になる。
【００４４】
これより図９に移り、オペレーティング・システムおよびドライバが不揮発性メモリを制御する、本発明の代替実施形態にを示す。オペレーティング・システムのストレージ・ドライバ・スタック８００が示されている。以下に続く説明では、図３におけるように、ハード・ドライブ３００およびインラインＮＶメモリ・デバイス２２０を示す。オペレーティング・システム１３４、アプリケーション・プログラム１３５、その他のプログラム・モジュール１３６が、データ（例えば、文書、スプレッドシート、ファイル、グラフィックス等）をストレージ・ドライバ・スタック８００に送る。予測キャッシュ制御モジュール８０２は、揮発性メモリ１３２およびハード・ドライブ３００ならびにＮＶメモリ２００内にあるものを制御する。ファイル・システム・フィルタ・ドライバ８０４は、予測キャッシュ制御モジュール２００からデータを受け取る。ファイル・システム・フィルタ・ドライブ８０４の主要な機能は、ＮＶキャッシュ２００が満杯のときというような、エラーにしかるべく対処することである。ファイル・システム・フィルタ・ドライバ８０４は、ファイル・システム（即ち、ＮＴＦＳ）８０６を通じてデータを受け渡し、オペレーティング・システム１３４がこのデータを用いて、ハード・ドライブ３００内にあるハード・ディスクにファイルを格納し、ハード・ディスクからファイルを検索する。
【００４５】
ライト・キャッシュ・フィルタ・ドライバ８０８は、ファイル・システム８０６および予測キャッシュ制御モジュール８０２からデータを受け取る。ライト・キャッシュ・フィルタ・ドライバ８０８は、ＮＶメモリ２００にバッファするデータを、ＮＶＭドライバ２２４（例えば、コントローラ２２４）に送る。ＮＶＭドライバ２２４は、ＮＶメモリ２００にもはや容量がない（即ち、満杯）ときを検出し、ファイル・システム・フィルタ・ドライバ８０４にメッセージを送り、ＮＶメモリ２００が満杯であることを示す。これに応答して、ファイル・システム・フィルタ・ドライバ８０４は、予測キャッシュ制御モジュール８０２に、ＮＶメモリ２００に格納容量ができるまでＮＶメモリ２００にデータを送るのを停止するように通知する。加えて、予測キャッシュ制御モジュール８０２は、メモリ２００からハード・ドライブ３００に流出させるデータ・ブロックのリストをＮＶＭドライバ２２４に供給する。
【００４６】
ライト・キャッシュ・フィルタ・ドライバ８０８は、ＮＶメモリ２００およびハード・ドライブ３００を同期させる。データがＮＶメモリ２００およびハード・ドライブ３００に格納されている場合、ライト・キャッシュ・フィルタ・ドライブ８０８は、ＮＶメモリ２００におけるライト・キャッシュをハード・ドライブ３００と同期させる必要があるときに、ＮＶメモリ２００から読み出す。データは、ＮＶメモリ２００に、そしてＮＶメモリ２００からハード・ドライブ３００に交流的に(transactionally)書き込まれる。これによって、システム１００は継ぎ目無く作業し続けることができる。書き込みが完了すると、トランザクション完了メッセージがライト・キャッシュ・ドライバ８０８に送られる。トランザクションの書き込みによって、書き込みに失敗した場合や割り込まれた場合（即ち、完了メッセージが受け取られない）に、書き込みを再試行することができる。停電またはその他の何らかの理由のために、ＮＶメモリ２００からハード・ドライブ３００間のトランザクションの間にシステムが再ブートした場合、ライト・キャッシュ・フィルタ・ドライバ８０８は、システムが再度ランし始めた後に、ハード・ドライブ３００を、ＮＶメモリ２００に格納されているデータと同期させる。ハード・ドライブがＮＶメモリを有するシステムでは、ハード・ドライブ内にあるコントローラがデータを同期させる。
【００４７】
ストレージ・ドライバ８１０は、ハード・ドライブ３００に送るデータを受け取る。ストレージ・ドライバ８１０はブロック単位でデータを送る。これはｉＳＣＳＩまたは同等物とするとよい。ｉＳＣＳＩはブロック・ストレージ転送を可能にする。これは、ＳＣＳＩコマンドをＴＣＰ／ＩＰ内に封入し、標準的なネットワーク技術上において高性能ストレージ・エリア・ネットワーク（ＳＡＮ）を可能にするプロトコルである。ストレージ・ドライバ８１０は、データをデータ・ブロックに変換し（ｉＳＣＳＩが用いられる場合にはＳＣＳＩ−３）、このデータ・ブロックをハード・ドライブ３００に送る。
【００４８】
先に示したように、予測キャッシュ制御モジュール８０２は、ＮＶメモリ２００に格納されるものを決定する。一般に、予測キャッシュ制御モジュール８０２は、長時間にわたってユーザの挙動を見つめて、ユーザが頻繁にアクセスするプログラムおよびデータを判定し、そのデータを格納する。このデータは、ＮＶメモリ２００内にあるスタティックおよびダイナミック・コンフィギュレーション・データを含む。ここで用いられるデータは、計画決定タスク、資金情報、データ・ファイル等のような、個人データ・ファイルを含む。モジュール８０２は、ユーザの挙動を予測できるようになるまで、デフォルトで開始する。スタティックおよびダイナミック・コンフィギュレーション・データは、以前の使用履歴に基づき、ユーザが頻繁に要求するデータから成る。スタティック・コンフィギュレーション・データは、周期的に変化しないデータである。ダイナミック・コンフィギュレーション・データは、周期的に変化し、ユーザ毎にあるデータである。コンフィギュレーション・データは、キーボード・デバイス、ポインティング・デバイス、ＵＳＢサブシステム、ビデオ・サブシステム、出力周辺ドライバ（例えば、プリンタ・ドライバ）、オペレーティング・システム、アプリケーション・プログラム、データ・ファイル等を含むことができる。
【００４９】
ＮＶメモリ２００がハード・ドライブ２２６に取り付けられ、デバイス２２０およびハード・ドライブ３００から成る場合、ＮＶＭドライバ８１２およびストレージ・ドライバ８１０を組み合わせて単一のモジュール１０００（図１０参照）とする。ハード・ドライブ・ドライバ１０００は、コントローラ２２４およびハード・ドライブ・コントローラ３１０と通信して、ディスクの能力およびディスクの状態を判定し、ＮＶメモリ内に置くブロックおよびこれらのブロックの優先度を指定し、ＮＶメモリ内に無期限で保存するブロックを指定し、ＮＶメモリ２００からディスク３０４に流出させるときを指定し、ブロックのディスク３０４への書き込み動作を委ねる(commit)ときを指定する。この場合、ＮＶメモリ２００内にブロックを有し、システム・メモリに素早くロードすることができるので、ユーザにとって性能が向上する。例えば、オペレーティング・システム１３４は、ハード・ドライブ２２６に、オペレーティング・システム１３４がコンピュータ１１０をブートするために必要とするファイルを、ＮＶメモリ２００内に置くように要請することができる。次回コンピュータ・システムに電源を入れるとき、ＢＩＯＳ  ＰＯＳＴ（パワー・オン・セーフ・テスト）が終了した後に、オペレーティング・システム１３４は、ディスク３０４がスピン・アップするのを待つことなく、ＮＶメモリ２００からブートすることができる。ＮＶメモリ・キャッシュ２００は、Ｍｉｃｒｏｓｏｆｔ  Ｏｕｔｌｏｏｋ（登録商標）におけるユーザ連絡先リストのような、ユーザがインターフェースを通じて識別したデータを収容し、瞬時に利用できる状態に保持しておくことができる。ユーザは、彼または彼女のコンピュータに電源を投入し、連絡先情報を検索し、記憶媒体として用いられるＮＶメモリを有していないコンピュータをブートする場合に要する時間の後、再度電源を切る。
【００５０】
ＮＶメモリ・キャッシュ２００は、キャッシュ・メモリ・ブロックのアレイ（例えば、キャッシュしたディスク・ブロック、ページ、セクタ、ファイル等のアレイ）から成り、各ブロックを張り付けることができる。一実施形態では、各ブロックは、タグと、これに付随するピン・ビットとを有し、ブロックが張り付けられているか否かを示す。張り付けられていないブロックは、オペレーティング・システム１３４によって優先度を決めることができるデータを収容するが、ディスク・コントローラ３１０の制御を受ける。張り付けブロックとは、オペレーティング・システム１３４によって制御され、オペレーティング・システム１３４が張り付けブロックをＮＶメモリから移動させる許可を与えなければ、コントローラ３１０がＮＶメモリから移動させることができない、アレイ内のブロックである。張り付けブロック内にあるデータは、オペレーティング・システムがそれを外す(unpin)まで、ＮＶメモリ内に存続する。メモリは、コンピュータ・システムのブートからブートの間存続するように張り付けることができる。張り付けブロック内にあるデータは、通例、スタティック・コンフィギュレーション・データおよびダイナミック・コンフィギュレーション・データを含む。
【００５１】
記憶装置２２６（ハード・ディスク３００およびデバイス２２０の組み合わせ）は、そのＮＶＭ能力、およびスピンしている媒体の現在の状態を、オペレーティング・システム１３４に報告する。ＮＶＭ能力およびスピンしている媒体の現在の状態は、ＮＶメモリ・キャッシュ２００のサイズ、ＮＶメモリがサポートする機構（例えば、ブロックを「張り付ける」ことができるか否か）、およびディスク３０４の状態（例えば、停止中、スピン中、スピン・アップ中、スピン・ダウン中）というような情報を含む。
【００５２】
オペレーティング・システム１３４は、ハード・ディスク・コントローラおよびデバイス・コントローラ２２４と通信し、コントローラ３１０に情報およびコマンドを供給する。この情報は、ブートからブートの間キャッシュ内に存続するようにＮＶメモリ２００内に張り付けるブロックのリスト、ユーザが作業している間にＮＶメモリ２００に「予めキャッシュしておく」ブロックのリスト、および予めキャッシュしておくブロックの優先度を収容したリストを含む。オペレーティング・システムは、使用場面に基づいて、書き込みアクセスされる次のブロック集合を予測し、次のブロック集合のリストをＮＶメモリ２００に供給して、予めキャッシュしておく。ブロックを予めキャッシュしておく際の優先度は、必要であればディスク３０４をスピン・アップすることも含めて予備キャッシュを直ちに行うべきか、または次回ディスク３０４がするときに行うことができるか否かを含む。
【００５３】
また、この情報は、ＮＶメモリ２００からディスク３０４に流出させるブロックのリスト、ＮＶメモリ２００の全てをディスク３０４に流出させる命令、ＮＶメモリ２００内に張り付けられているブロックをディスク３０４に流出させる命令、ＮＶメモリ２００内にある動的（即ち、張り付けられていない）ブロックをディスク３０４に流出させる命令、書き込みトランザクションを表すブロックまたはセグメント集合の指定（これらのブロックは、ＮＶメモリ内の一時的位置に書き込まれ、オペレーティング・システム１３４からコミット・コマンドを受けるまで永続的に格納されない）、および最後の書き込みトランザクションをＮＶメモリ２００内における永続的格納とする命令も含む。
【００５４】
これより図１１に移ると、動作の間、オペレーティング・システム１３４はコマンドを用いて、ＮＶメモリ・キャッシュ２００のサイズ、ＮＶメモリがサポートする機構、およびディスクの状態を判定する（ステップ１１００）。オペレーティング・システム１３４は、ＮＶメモリのサイズに基づいて、動作モードを変更する。ディスク３０４を用いる必要なくＮＶメモリからブートするのに十分なサイズである場合、オペレーティング・システムは、システムを遮断する前または休止に移る前に、ブートするのに必要なファイルをＮＶメモリに移動させるように、ハード・ドライブに命令する（ステップ１１０２）。ブート・ファイルに加えて、オペレーティング・システム１３４は、予測キャッシュ制御モジュールを通じて、ユーザが起動時に通例用いるデータを判定し、ＮＶメモリ内に利用可能な空間が十分なるのであれば、停止または休止への移行の前に、これらのファイルをＮＶメモリに移動するようにハード・ドライブに命令する。デバイス２２０がブロックをＮＶメモリに張り付ける能力を有する場合、オペレーティング・システム１３４は、何をＮＶメモリ内に張り付ければよいか決定し、張り付けるべきブロックのリストをハード・ドライブに送る（ステップ１１０４）。オペレーティング・システム１３４は、条件が変化するに連れて、このリストをコントローラ３１０に周期的に送るとよい。例えば、ユーザが、以前は頻繁に用いていた特定のプログラムを、最近は用いていない場合、このプログラムをリストから外し、このプログラムを今後メモリ内に張り付けない。
【００５５】
予測キャッシュ・モジュール８０２は、使用場面に基づいて、ユーザがどのデータを必要とするか予測する（ステップ１１０６）。データのリストをハード・ドライブ３００に送る（ステップ１１０８）。ユーザが何をしているかに基づいて、オペレーティング・システム１３４が設定した優先度にしたがって、これらのデータをＮＶメモリにキャッシュする。例えば、ユーザが、Ｍｉｃｒｏｓｏｆｔ  Ｗｏｒｄ（登録商標）のような特定のアプリケーションを開始した場合、コントローラ３１０に供給されるリストは、直ちに必要となるファイルのリストを収容する。
【００５６】
ＮＶメモリ２００の利用可能空間を監視する。利用可能な空間が閾値未満となった場合、ＮＶメモリから流出させる（ステップ１１１０）。オペレーティング・システム１３４は、コントローラ２２４に、ＮＶメモリ２００内にある全てのデータをディスク３０４に流出させること、張り付けられているブロックをディスク３０４に流出させること、動的ブロックをディスク３０４に流出させること、または以上の組み合わせを命令することができる。また、オペレーティング・システム１３４は、使用法が変化したときにも、流出コマンドを送る。流出は、ディスク３０４が既にスピンしており、ＮＶメモリ２００にはない読み取りを扱っているとき、またはそれを行うためにディスク３０４をスピン・アップさせることができるときに、背景において一度に行うことができる。
【００５７】
アプリケーションが、ハード・ディスク３００に格納するデータを送ると、オペレーティング・システムは、コントローラ２２４に、ＮＶメモリ３００内にある一時的位置にデータ・ブロックのデータを格納するように命令する（ステップ１１１２）。これらのデータ・ブロックは、書き込みトランザクションを表す。ＮＶメモリ２００内へのデータの格納は、ハード・ドライブをスピン・アップする回数を減少させるために行われるのであり、これによって消費電力が低減する。加えて、予測キャッシュ・モジュール８００は、このデータが直ちに使用可能であることを、使用場面に基づいて示すことができる。データ・ブロックをＮＶメモリに格納しておくのは、書き込みトランザクションをディスク３０４における永続的格納とする命令をオペレーティング・システム１３４が送るまでである。データを一時的に格納することによって、オペレーティング・システムはブロック格納モードで動作し、オペレーティング・システムの必要性に応じてデータ・ブロックの格納を管理することが可能になる。ＮＶメモリにキャッシュされていない場合、オペレーティング・システムに送るべきデータは、ディスク・ドライブから直接オペレーティング・システムに送られる。
【００５８】
ハード・ドライブ内のディスクがスピンする回数を減少させることによって、ハード・ドライブにおける電力消費を削減する方法および装置を提供したことが分かる。加えて、データをＮＶメモリに予めキャッシュしておくことによって、ユーザの使用感が向上する。ＮＶメモリに格納されているデータは、回転ディスクからデータをロードする場合と比較すると、ユーザには殆ど瞬時に出現するように感じる。
【００５９】
本発明の原理を適用することができる多くの実施形態があり得ることに鑑みれば、図面に関してここで説明した実施形態は例示に過ぎないことを意図しており、発明の範囲を限定するように解釈してはならないことは、認められて当然である。例えば、ソフトウェアで示した図示の実施液体の要素は、ハードウェアでも実施可能であり、その逆も可能であること、あるいは図示した実施形態は、本発明の主旨から逸脱することなくその構成および詳細において変更可能であることを、当業者であれば認めよう。加えて、前述のステップは、順次、並列、異なる順序、または順次および並列の組み合わせで実行することができる。したがって、ここに記載した発明は、このような実施形態全てが、以下の特許請求の範囲およびその均等の範囲に該当するものと、見なすこととする。
【図面の簡単な説明】
【００６０】
【図１】図１は、本発明が常駐するコンピュータ・システムの一例を全体的に示すブロック図である。
【図２】図２は、本発明を実施することができる場所を概略的に示す、図１のコンピュータ・システム例のブロック図である。
【図３】図３は、標準的なディスク・ドライブに接続された本発明の実施形態を具体化するインラインＮＶメモリ・ユニットを示すブロック図である。
【図４ａ】図４ａは、標準的なディスク・ドライブに接続された図３のインラインＮＶメモリ・ユニットを示す等幅図である。
【図４ｂ】図４ｂは、標準的なディスク・ドライブに接続された図３のインラインＮＶメモリ・ユニットを示す等幅図である。
【図５】図５は、コンピュータ・システムのブート時間および起動時間を短縮するために、電力遮断または休止モード移行の間にスタティックおよびダイナミック・コンフィギュレーション・データを格納するプロセスの第１部分を示すフロー・チャートである。
【図６】図６は、コンピュータ・システムのブート時間および起動時間を短縮するために、電力遮断または休止モード移行の間にスタティックおよびダイナミック・コンフィギュレーション・データを格納するプロセスの残り部分を示すフロー・チャートである。
【図７】図７は、コンピュータ・システムのブート時間およびコンピュータ・システムの休止からの起動時間を短縮するプロセスを示すフロー・チャートである。
【図８】図８は、本発明と相互作用するオペレーティング・システムのストレージ・ネットワーク・スタックを示すブロック図である。
【図９】図９は、本発明にしたがってＮＶＭメモリを制御するストレージ・ネットワーク・スタックを示すブロック図である。
【図１０】図１０は、本発明にしたがってＮＶＭメモリを制御する、代替ストレージ・ネットワーク・スタックを示すブロック図である。
【図１１】図１１は、本発明の教示にしたがってＮＶメモリにデータを格納するプロセスを示すフロー・チャートである。
【図１】
2008538437.tif 000003
【図２】
2008538437.tif 000004
【図３】
2008538437.tif 000005
【図４ａ】
2008538437.tif 000006
【図４ｂ】
2008538437.tif 000007
【図５】
2008538437.tif 000008
【図６】
2008538437.tif 000009
【図７】
2008538437.tif 000010
【図８】
2008538437.tif 000011
【図９】
2008538437.tif 000012
【図１０】
2008538437.tif 000013
【図１１】
2008538437.tif 000014