(57)【要約】不揮発性キャッシュを含む不揮発性大容量ストレージ装置に関連する装置および方法。
2004502237.tif 000002
【特許請求の範囲】
【請求項１】
データを格納する装置であって、前記装置が不揮発性キャッシュを含む不揮発性大容量ストレージ装置から構成されることを特徴とする装置。
【請求項２】
前記不揮発性大容量ストレージ装置がブロック・オリエンテッドであり、前記不揮発性キャッシュがブロック・オリエンテッドであることを特徴とする請求項１記載の装置。
【請求項３】
前記不揮発性大容量ストレージ装置がセクタ・オリエンテッドであり、前記不揮発性キャッシュがセクタ・オリエンテッドであることを特徴とする請求項１記載の装置。
【請求項４】
前記不揮発性大容量ストレージ装置がハード・ディスク・ドライブであることを特徴とする請求項１記載の装置。
【請求項５】
前記不揮発性大容量ストレージ装置が第１不揮発性ストレージ媒体を有する主大容量ストレージ媒体を含み、前記不揮発性キャッシュが第２不揮発性ストレージ媒体を含み、前記第１不揮発性ストレージ媒体が前記第２不揮発性ストレージ媒体とは異なるタイプの不揮発性ストレージ媒体であることを特徴とする請求項１記載の装置。
【請求項６】
前記主大容量ストレージ媒体がデータを格納するための録音可能な表面を有するプラッタを含むことを特徴とする請求項５記載の装置。
【請求項７】
前記主大容量ストレージ媒体から読み取られたデータを処理するための第１エラー修正ロジックと、
前記不揮発性キャッシュから読み取られたデータを処理するための第２エラー修正ロジックと、
からさらに構成されることを特徴とする請求項５記載の装置。
【請求項８】
前記不揮発性キャッシュが不揮発性ストレージ・アレイを含むことを特徴とする請求項１記載の装置。
【請求項９】
プロセッサと、
前記プロセッサに結合されたメモリと、
前記プロセッサに結合された不揮発性大容量ストレージ装置と、
から構成されるコンピュータ・システムであって、前記不揮発性大容量ストレージ装置が、
主不揮発性大容量ストレージ媒体と、
前記主不揮発性大容量ストレージ媒体に結合された不揮発性キャッシュと、
を有する、
ことを特徴とするコンピュータ・システム。
【請求項１０】
前記主大容量ストレージ媒体が第１不揮発性ストレージ媒体を含み、前記不揮発性キャッシュが第２不揮発性ストレージ媒体を含み、前記第１不揮発性ストレージ媒体が前記第２不揮発性ストレージ媒体とは異なるタイプの不揮発性ストレージ媒体であることを特徴とする請求項９記載のコンピュータ・システム。
【請求項１１】
前記不揮発性大容量ストレージ装置がブロック・オリエンテッドであり、前記不揮発性キャッシュがブロック・オリエンテッドであることを特徴とする請求項９記載のコンピュータ・システム。
【請求項１２】
前記不揮発性大容量ストレージ装置がセクタ・オリエンテッドであり、前記不揮発性キャッシュがセクタ・オリエンテッドであることを特徴とする請求項９記載のコンピュータ・システム。
【請求項１３】
前記第１不揮発性ストレージ媒体が、磁気記録媒体、光学式記録媒体、および光磁気記録媒体を含むグループから選択される記録媒体であることを特徴とする請求項９記載のコンピュータ・システム。
【請求項１４】
前記第２不揮発性ストレージ媒体が、バッテリを電源とするダイナミック・ランダム・アクセス・メモリ、バッテリを電源とするスタティック・ランダム・アクセス・メモリ、フラッシュ・メモリ、アトミック・プローブ・ストレージ・メモリ、強誘電性メモリ、およびホログラフィック・メモリを含むグループから選択される記録媒体であることを特徴とする請求項９記載のコンピュータ・システム。
【請求項１５】
データのための要求を処理する方法であって、前記方法は、
不揮発性大容量ストレージ装置内に格納されたデータの第１セットのための要求を受け取る段階と、
前記データの第１セットが前記不揮発性大容量ストレージ装置の不揮発性キャッシュ内に格納されていることを決定する段階と、
前記不揮発性キャッシュから前記データの第１セットを読み取る段階と、
前記データの第１セットを送る段階と、
から構成されることを特徴とする方法。
【請求項１６】
前記不揮発性キャッシュから前記データの第１セットを読み取る段階が、前記データの第１セットのサブセット上のエラー修正を実行する段階を含み、
前記不揮発性キャッシュから読み取られた前記データを送る段階が、前記データの第１セットの前記エラー修正サブセットを送る段階を含む、
ことを特徴とする請求項１５記載の方法。
【請求項１７】
前記不揮発性大容量ストレージ装置内に格納されたデータの第２セットのための要求を受け取る段階と、
前記データの第２セットが前記不揮発性大容量ストレージ装置の不揮発性キャッシュ内に格納されていないことを決定する段階と、
前記不揮発性大容量ストレージ装置の主大容量ストレージ媒体から前記データの第２セットを読み取る段階と、
前記データの第２セットを前記不揮発性キャッシュに書き込む段階と、
前記データの第２セットを送る段階と、
からさらに構成されることを特徴とする請求項１６記載の方法。
【請求項１８】
前記データの第１セットのための要求がブロック・オリエンテッド要求であることを特徴とする請求項１５記載の方法。
【請求項１９】
前記データの第１セットのための要求がセクタ・オリエンテッド要求であることを特徴とする請求項１５記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明の実施例は、データ・ストレージに関する。さらに詳しくは、本発明の実施例は、不揮発性キャッシュを有する大容量ストレージ装置に関する。
【０００２】
【発明の背景】
コンピュータは、揮発性メモリおよび不揮発性大容量ストレージ装置の双方にデータを格納できる。揮発性メモリの例としては、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ラムバス・ダイナミック・ランダム・アクセス・メモリ（ＲＤＲＡＭ）などが含まれるが、これらに限定されない。不揮発性大容量ストレージ装置の例としては、ハード・ディスク・ドライブ、３．５インチ・ディスケット、５．２５インチ・フロッピー・ディスケット、ＺＩＰ（登録商標）ディスク（例えば、ユタ州ロイ所在のアイオメガ・コーポレーションが製造）、Ｊａｚ（登録商標）ディスク（例えば、アイオメガ・コーポレーションが製造）、ＬＳ−１２０スーパーディスク（例えば、ミネソタ州オークデール所在のイメーション・コーポレーションが製造）、リライタブル・デジタル・バーサティル・ディスク（ＤＶＤ−ＲＡＭ）、リード／ライト・コンパクト・ディスク（ＣＤ−ＲＷ）、磁気大容量ストレージ装置、光学式大容量ストレージ装置、光磁気大容量ストレージ装置、ホログラフィック・ストレージ装置などが含まれるが、これらに限定されない。コンピュータの不揮発性メモリ内に格納されたデータの例としては、コンピュータ命令（例えば、オペレーティング・システム、１つ又は複数のアプリケーション・プログラムなど）、および、コンピュータ命令によってアクセスされるデータが含まれる。
【０００３】
揮発性メモリが電力を失った場合、揮発性メモリ上に格納されたデータは典型的な場合には消滅する。ハード・ディスク・ドライブのような不揮発性大容量ストレージ装置は、典型的には、不揮発性大容量ストレージ装置が電力を失った場合（例えば、停電によりコンピュータの電源が切断された場合）でも、その上に格納されたデータを失わない。しかしながら、不揮発性メモリは、一般的に揮発性メモリと比べて、データの検索やストレージのために著しく長いアクセス時間を要する。また、不揮発性メモリは、典型的には、ＤＲＡＭ、ＳＲＡＭ、ＲＤＲＡＭのようなある種の揮発性メモリよりも、ストレージ・ユニット当り（例えば、メガバイト当り、ギガバイト当りなど）の費用が安い。
【０００４】
揮発性メモリおよび不揮発性メモリに加えて、コンピュータは、典型的には、命令とデータに基づいてオペレーションを実行するプロセッサを含む。プロセッサによって操作される命令とデータは、より低速の不揮発性大容量ストレージ装置（例えば、ハード・ディスク・デバイスなど）から、より高速の揮発性メモリ（例えば、ＤＲＡＭメイン・メモリ、ＳＲＡＭキャッシュなど）へコピーすることができるが、それは、より高速の揮発性メモリのほうが、典型的な場合、不揮発性大容量ストレージ装置よりもメモリのアクセス時間が著しく短いからである。プロセッサの性能およびコンピュータの性能は、メモリのアクセス時間が短縮されたときに高められる。
【０００５】
不揮発性大容量ストレージ装置（例えば、ディスク・ドライブ）のためのメモリのアクセス時間は、一般的に、揮発性メモリ（例えば、ＤＲＡＭメイン・メモリ、ＳＲＡＭキャッシュなど）のためのメモリのアクセス時間よりも長いので、不揮発性大容量ストレージ装置は、しばしば動作障害を生じる。既知のディスク・ドライブは、揮発性キャッシュ（例えば、ＤＲＡＭキャッシュ、ＳＲＡＭキャッシュ）を含むが、かかる揮発性キャッシュは、典型的には、ディスク・ドライブのマイクロコントローラのメイン・メモリのアドレス空間部にあり、それによってバイト単位でアドレスされる。前述の説明より、コンピュータ・システムの性能を高めることができる方法および装置に対する強い要望があることが理解されるであろう。
【０００６】
【実施例の詳細な説明】
本発明の実施例によれば、不揮発性大容量ストレージ装置は不揮発性キャッシュを含む。不揮発性キャッシュは、不揮発性大容量ストレージ装置の主大容量ストレージ媒体へ書き込まれた、または、それからの読み取りが可能な情報を格納することができる。不揮発性キャッシュは、データ読み取りに関し、不揮発性大容量ストレージ装置の主大容量ストレージ媒体からのデータ読み取りアクセス時間に比べてアクセス時間が短い。本発明の実施例に含まれるコンピュータ・システムは、不揮発性大容量ストレージ装置に格納されたデータが、不揮発性大容量ストレージ装置の主大容量ストレージ媒体からではなく、不揮発性キャッシュから読み取られる場合に、システムの性能を高めることが可能である。
【０００７】
図１は、本発明の実施例に従って、コンピュータ・システム（「コンピュータ」）を示した図である。コンピュータ１１０は、メモリ１３０に結合したプロセッサ１２０を含む。用語「結合」は、直接接続、間接接続、直接通信、間接通信などを包含する。
【０００８】
プロセッサ１２０は、例えば、カリフォルニア州サンタ・クララ所在のインテル・コーポレーションによって製造されるペンティアム（登録商標）ＩＩＩプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、マイクロコントローラなどであってよい。メモリ１３０は、ＤＲＡＭ、ＲＤＲＡＭ、ＳＲＡＭ、リード・オンリー・メモリ（ＲＯＭ）、フラッシュ・メモリなどのデジタル情報を格納するデバイスを包含する。他の実施例では、システム・バスが、プロセッサ１２０とシステム・コンポーネントとの間の通信パスを提供し得る。システム・バスは、周辺コンポーネント内部接続（ＰＣＩ）バス、エクステンディド・インダストリー・スタンダード・アーキテクチャー・バス（ＥＩＳＡ）などでもよい。
【０００９】
ある実施例では、チップセットが、プロセッサ１２０と他のシステム・コンポーネント、例えばメモリ１３０、大容量ストレージ装置１４０、拡張バスに取り付けられる周辺コンポーネントなど、との間に結合されるとともに、それらの内部相互動作を管理する。用語チップセットは、プロセッサと他のシステム・コンポーネントとの間のデータ転送のためのハブ（またはコア）として動作する１またはそれ以上の集積回路チップのグループを包含する。チップセットは、例えば、インテル・コーポレーションによって製造される８２０および８１０Ｅを含む。チップセットは、単一の集積回路であっても、あるいは２つまたはそれ以上の集積回路チップから構成されていてもよい。チップセットは、メモリ制御ハブを含むことができる。ＰＣＩバスを含む実施例において、メモリ制御ハブは、「ノースブリッジ機能（ｎｏｒｔｈｂｒｉｄｇｅ ｆｕｎｃｔｉｏｎａｌｉｔｙ）」として知られる機能を実行する。チップセットは、入力／出力制御ハブを含み得る。ＰＣＩバスを含む実施例において、入力／出力制御ハブは、「サウスブリッジ機能（ｓｏｕｔｈｂｒｉｄｇｅ ｆｕｎｃｔｉｏｎａｌｉｔｙ）」として知られる機能を実行することができる。
【００１０】
プロセッサ１２０は、また、通信パス１３５を経由して大容量ストレージ装置１４０に結合される。ある実施例において、通信パス１３５は、集積デバイス・エレクトロニクス（ＩＤＥ）バス、エンハンストＩＤＥ（ＥＩＤＥ）バス、ＡＴアタッチメント（ＡＴＡ）バスなどを含み得る。他の実施例において、通信パス１３５は、例えば、小型コンピュータ・システム・インターフェイス（ＳＣＳＩ）バス、ＩＥＥＥ１３９４バス、ユニバーサル・シリアル・バス（ＵＳＢ）などの拡張バスであってもよい。
【００１１】
大容量ストレージ装置１４０は、例えば、ハード・ディスク・ドライブ、ＺＩＰ（登録商標）ドライブ、Ｊａｚ（登録商標）ドライブ、ＣＤ−ＲＷドライブ、ＤＶＤ−ＲＡＭドライブ、ＬＳ−１２０スーパーディスク・ドライブ、磁気ストレージ装置、光学式ストレージ装置、光磁気ストレージ装置、ホログラフィック・ストレージ装置などを含む。ハード・ディスク・ドライブの例としては、カリフォルニア州スコッツ・バレイ所在のシーゲート・テクノロジー・インクによって製造されるＣｈｅｅｔａｈ １８ＸＬハード・ディスク・ドライブがある。
【００１２】
大容量ストレージ装置１４０は、大容量ストレージ装置コントローラ１４１、主大容量ストレージ媒体１４８、および不揮発性キャッシュ１４９を含む。大容量ストレージ装置コントローラ１４１は、マイクロコントローラ１４２、メモリ１４３、インターフェイス・ロジック１４４、主大容量ストレージ媒体ＥＣＣ（エラー・コントロールおよびチェッキング）ロジック１４５、および不揮発性キャッシュＥＣＣロジック１４６を含む。本発明の他の実施例では、大容量ストレージ装置コントローラ１４１が、１またはそれ以上のＡＳＩＣの実行機能を含み、大容量ストレージ装置１４０を操作する（例えば、プロセッサ、メモリ、インターフェイス・ロジックを含む第１ＡＳＩＣ、および、ＥＣＣロジックを含む第２ＡＳＩＣなど）。
【００１３】
マイクロコントローラ１４２は、メモリ１４３内に格納された命令を実行し、大容量ストレージ装置１４０の操作を制御する（例えば、メモリ１４３が、リード・オンリー・メモリを含み、それがプログラム命令を格納し、電源投入時に大容量ストレージ装置１４０を初期化および操作する、または、メモリ１４３が命令を格納して、大容量ストレージ装置１４０からデータの読み取りを実行する、あるいは、メモリ１４３が命令を格納して、大容量ストレージ装置１４０へのデータのフォーマットおよび／または書き込みを制御するなど）。メモリ１４３はまた、バッファ（例えば、揮発性メモリ・バッファなど）を含み、大容量ストレージ装置１４０に書き込まれ、または、大容量ストレージ装置１４０から読み取られたデータを一時的に保存する。
【００１４】
マイクロコントローラ１４２およびインターフェイス・ロジック１４４は、プロセッサ１２０からの要求を処理し、大容量ストレージ装置１４０からデータを読み取り、あるいは、大容量ストレージ装置１４０にデータを書き込む。ある実施例では、大容量ストレージ装置１４０はハード・ディスク・ドライブであり、インターフェイス・ロジック１４４は、ＩＤＥインターフェイス・ロジック、ＥＩＤＥインターフェイス・ロジック、ＡＴＡインターフェイス・ロジック、ＳＣＳＩインターフェイス・ロジック、ファイバー・チャネル・インターフェイス・ロジック、インフィニバンド・インターフェイス・ロジックなどでもよい。他の実施例では、大容量ストレージ装置１４０は、ＣＤ−ＲＷドライブまたはＤＶＤ−ＲＡＭドライブであり、インターフェイス・ロジック１４４は、ＡＴＡパケット・インターフェイス（ＡＴＡＰＩ）・ロジックでもよい。用語「ロジック」は、ハードウエア、ファームウエア、ソフトウエア、およびそれらの組み合わせなどを包含する。
【００１５】
ある実施例では、大容量ストレージ装置１４０は、ハードディスク・ドライブであり、主大容量ストレージ媒体１４８は、１または２以上のプラッタ（ｐｌａｔｔｅｒ）を含む。各プラッタは、１または２以上の記録可能な表面を有し、各記録可能な表面は、特定のリード／ライト・ヘッドによって読み取り／書き込みがされる。各表面は、複数のトラックに分割され、そして各トラックは、複数の物理セクタに分割される。ハード・ディスク・ドライブが複数の記録可能な表面を有する場合、全ての記録可能な表面上の同一の放射線状位置にある全てのトラックの集合をシリンダと呼ぶ。ハード・ディスク・ドライブの各物理セクタの位置は、シリンダとヘッド（表面）と物理セクタとを画定する物理アドレスによって画定される。
【００１６】
ある実施例において、プロセッサが、ハード・ドライブからのデータを要求する場合、その要求は、データの物理アドレスを画定するのではなく、データの論理アドレスを画定する。ハード・ディスク・データの論理アドレスは、論理セクタ・アドレス、論理ブロック・アドレスなどを含む。ハード・ディスク・ドライブがフォーマットされている場合、ハード・ディスク・ドライブのハード・ディスク・ドライブ・コントローラは、全ての物理セクタを論理セクタ内へ編成する（例えば、各物理セクタを論理セクタ・アドレスに割り当てる）ことができ、マッピング・アルゴリズムは、各論理セクタ・アドレスを特定の物理アドレスにマッピングする。ハード・ディスク・ドライブへの読み取り／書き込み要求が論理セクタ・アドレスを画定するとき、ハード・ディスク・ドライブは、セクタ−オリエンテッド（すなわち、セクタ・アドレス可能）であるとみさなれる。ハード・ディスク・ドライブ・コントローラは、さらに、物理セクタの集合を特定の論理ブロック・アドレス内へマッピングする。ハード・ディスク・ドライブへの読み取り／書き込み要求が論理ブロック・アドレスを画定するとき、ハード・ディスク・ドライブは、ブロック−オリエンテッド（すなわち、ブロック・アドレス可能）であるとみなされる。
【００１７】
不揮発性キャッシュ１４９は、典型的には主大容量ストレージ媒体１４８上に格納されたデータをキャッシュする。不揮発性キャッシュ１４９は、主大容量ストレージ媒体１４８から読み取る、または主大容量ストレージ媒体１４８に書き込むデータをキャッシュする。不揮発性キャッシュ１４９のアクセス時間は、主大容量ストレージ媒体１４８のアクセス時間に比べて速い。したがって、大容量ストレージ装置１４０から読み取る、または大容量ストレージ装置１４０に書き込むデータは、主大容量ストレージ媒体１４８へのデータ読み／書きに比べてより速く完了する。ある実施例において、不揮発性キャッシュ１４９へデータ読み／書きは、データ読み／書きと比べてより少ない電力しか必要としない。ライト・バック・アルゴリズム（すなわち、不揮発性キャッシュ１４９から主大容量ストレージ媒体１４８への書き戻し）は、キャッシュの性能を向上させるために実行される。他の実施例では、ライト・スルー・キャッシュが実行される。
【００１８】
不揮発性キャッシュ１４９は、頻繁に使用される大容量ストレージ装置のデータの複製を格納し、頻繁に使用されるデータへのアクセス時間を短縮する。ある実施例において、データが主大容量ストレージ媒体１４８から読み取られ、通信パス１３５上に送られた場合、データの複製は、不揮発性キャッシュ１４９に格納される。格納されるべきデータが、通信パス１３５を介して大容量ストレージ装置１４０へ送られるとき、そのデータは、ライト・バック・アルゴリズム、ライト・スルー・プロトコルなどに従って、不揮発性キャッシュ１４９に書き込まれるとともに主大容量ストレージ媒体１４８に書き込まれる。不揮発性キャッシュ１４９は、不揮発性メモリであるので、不揮発性キャッシュに格納されたそのデータは、電力が遮断されるとき（例えば、大容量ストレージ装置１４０への電力、コンピュータ１１０への電力など）、典型的には失われる。不揮発性キャッシュ１４９は、その不揮発性キャッシュ１４９への外部からの電力が除かれ、あるいは、遮断される場合に、そのデータを読み取り／書き込み、および保持することのできるあらゆるタイプのメモリであってよい。
【００１９】
不揮発性キャッシュ１４９は、例えば、フラッシュ・メモリ、バッテリでバックアップされたＤＲＡＭ，バッテリでバックアップされたＳＲＡＭ、アトミック・フォース・プローブ・メモリ、磁気ＲＡＭ、強誘電性ＲＡＭ、ホログラフィック・メモリ、ストレージ・アレイなどである。ある実施例において、不揮発性キャッシュ１４９からの読み取りは、破壊的な読み取りとなる。不揮発性キャッシュ１４９は、ブロック・オリエンテッド・キャッシュであり、そこではデータが論理ブロックでアクセスされる（例えば、書き込み、読み取りなど）。例えば、大容量ストレージ装置１４０が、データ要求（例えば、大容量ストレージ装置１４０から通信パス１３５上へデータを読み取るためのデータ要求、通信パス１３５から大容量ストレージ装置１４０へデータを書き込むためのデータ要求など）を受けるとき、そのデータ要求は、論理ブロック・アドレス、論理セクタ・アドレスのようなアドレスを含む。本発明のある実施例において、不揮発性キャッシュ１４９に格納された各データ・エントリは、主大容量ストレージ媒体１４８の論理アドレスに格納されたデータに対応する。
【００２０】
大容量ストレージ装置１４０がハード・ディスク・ドライブである実施例において、不揮発性キャッシュ１４９は、不揮発性キャッシュ１４９からのデータの読み取り／書き込みが、ハード・ディスク・ドライブのプラッタからのデータ（例えば、そのプラッタを動作速度まで回転させるとか、読み取り／書き込みヘッドの位置決めをするなど）を書き込み／読み取る際に付随するウォーミング・アップ時間を必要としないので、システム性能を向上させることができる。例えば、ブート・アップ情報（例えば、オペレーティング・システムのデータ、デバイス・ドライバ、アプリケーション・データなど）がハード・ディスク・ドライブのプラッタではなく不揮発性キャッシュ１４９から読み取られるので、コンピュータ１１０のシステムのブート・アップに要求される時間は短縮される。コンピュータ１１０のユーザが経験するキーストローク／マウスクリックの待ち時間もまた短縮され得る。
【００２１】
ある実施例において、キャッシュ管理命令は、不揮発性キャッシュ１４９から読み取る／に書き込むデータを管理する。キャッシュ管理命令は、メモリ１４３に格納され、大容量ストレージ装置ドライバなどの一部となる。キャッシュ管理命令は、どのようなデータがキャッシュされるか、どのようなデータがキャッシュから退避されられるか、どのようなデータが主大容量ストレージ媒体に書き戻されるか、いつデータの書き戻しが生じるかなどに関する決定をすることができる。キャッシュ管理命令はまた、どのようなデータが不揮発性キャッシュ１４９内に事前取り込みできるかを決定する。あるデータが不揮発性キャッシュ１４９にキャッシュされるべきか否かというようなキャッシュ管理決定は、既知のキャッシュ管理アルゴリズムを用いて行われる。例えば、キャッシュ管理アルゴリズムが、大容量ストレージ装置１４０からのデータ読み取りが近い将来再び読み込まれる可能性が低いと決定した場合（例えば、データが、ＭＰ３オーディオ・ファイルの一部、ＷＡＶファイルの一部、ＡＶＩファイルの一部、ストリーミング・データ・ファイルの一部である等）、データはキャッシュされる必要がない。さらに、データを不揮発性キャッシュ１４９から主大容量ストレージ媒体１４８へ書き込むことが有利となる場合、キャッシュ管理命令は、例えば、リースト・リセントリー・ユーズド（ＬＲＵ）アルゴリズム、ランダム・リプレースメント・アルゴリズムなどを使用して、いずれのデータを書き戻すかを決定し得る。
【００２２】
ある実施例において、大容量ストレージ装置１４０のための大容量ストレージ装置ドライバは、典型的な大容量ストレージ装置ドライバ（例えば、ＷＩＮ９８環境におけるＡＴＡＰＩ．ＳＹＳなど）であってもよく、キャッシュ管理命令は、メモリ１４３内に格納されもよい。かかる実施例において、不揮発性キャッシュの存在は、オペレーティング・システムからは見えない。さらなる実施例において、キャッシュ管理命令は、大容量ストレージ装置コントローラ１４１のキャッシュ管理ロジックの一部であってもよい。
【００２３】
主大容量ストレージ媒体１４８からのデータ読み取りは、主大容量ストレージ媒体ＥＣＣロジック１４５によって処理され、かつ、不揮発性キャッシュ１４９からのデータ読み取りは、不揮発性キャッシュＥＣＣロジック１４６によって処理される。主大容量ストレージ媒体ＥＣＣロジック１４５および不揮発性キャッシュＥＣＣロジック１４６のそれぞれは、ビットまたはマルチ・ビット・レベルでエラーを検出し、データが通信パス１３５に送られるようにエラーを修正する。
【００２４】
図２は、本発明の実施例に従った、不揮発性キャッシュの構成を示す図である。不揮発性キャッシュ２００（例えば、図１の不揮発性キャッシュ１４９）は、複数のキャッシュ・エントリ２０５を格納し得る。各キャッシュ・エントリ２０５は、テーブル・エントリ・フィールド２１０およびデータ・エントリ２２０を含む。データ・エントリ２２０は、有効フィールド２２２、修正フィールド２２４、アドレス・フィールド２２６、データ・フィールド２２６、およびＥＣＣフィールド２２９を含む。
【００２５】
キャッシュ・エントリー２０５のテーブル・エントリ・フィールド２１０は、キャッシュ・エントリ２０５の各データ・エントリ２２０のためのタグ／インデックス情報に対応する。複数のテーブル・エントリ・フィールド２１０は、キャッシュ・ディレクトリ・テーブル２１５を構成し、そして、キャッシュ・ディレクトリは、大容量ストレージ装置のデータの特定のセット（例えば、ハード・ディスク・ドライブのディスク・セクタ、ハード・ディスク・ドライブの論理ブロックなど）が不揮発性キャッシュ内に存在するかどうかを決定するためにアクセスされる。ある実施例において、キャッシュ・エントリ２０５のテーブル・エントリ・フィールド２１０は、キャッシュ・エントリ２０５のデータ・エントリ２２０のアドレス（例えば、論理セクタ・アドレス、論理ブロック・アドレスなど）を格納する。大容量ストレージ装置のデータの特定のセットが不揮発性キャッシュ内に存在するかどうかを決定するために、キャッシュ・ディレクトリ・テーブル２１５が、例えば既知の検索アルゴリズムを用いて検索される。一方、キャッシュ・ディレクトリは、ハッシュ・アルゴリズムを使用してソートされる。大容量ストレージ装置がハード・ディスク・ドライブである実施例では、不揮発性キャッシュ内に要求されたディスク・セクタが存在することは、要求されたディスクのセクタ・アドレスを、キャッシュ・ディレクトリ・テーブル２１５内に格納されたセクタ・アドレスと比較することによって確認される。ある実施例では、不揮発性キャッシュが、完全に連想キャッシュであってもよい。他の実施例では、不揮発性キャッシュは、セット連想キャッシュであってもよい。
【００２６】
ある実施例において、大容量ストレージ装置の不揮発性キャッシュ内に格納されたキャッシュ・エントリ２０５のそれぞれは、大容量ストレージ装置の論理ブロックに対応する。他の実施例において、大容量ストレージ装置の不揮発性キャッシュ内に格納されたキャッシュ・エントリ２０５のそれぞれは、大容量ストレージ装置のセクタ（例えば、物理セクタ、論理セクタ）に対応する。
【００２７】
不揮発性キャッシュ内に２，０００，０００個のキャッシュ・エントリ２０５を有する実施例では、キャッシュ・ディレクトリ・テーブル２１５内に２，０００，０００個のテーブル・エントリがある。この実施例において、キャッシュ・ディレクトリ・テーブル２１５の各テーブル・エントリは４バイトの長さであり、キャッシュ・ディレクトリ・テーブル２１５は、８メガバイトの不揮発性メモリを使用する。キャッシュ・ディレクトリ・テーブル２１５のサイズは、各キャッシュ・エントリ内のマルチプル・ディスク・セクタのブロックを含むことによって縮小される（これによって、平均的なキャッシュのアクセス速度が速くなる）。
【００２８】
ある実施例において、キャッシュ・エントリ２０５のデータ・エントリ２２０は、有効フィールド２２２、修正フィールド２２４、アドレス・フィールド２２６、データ・フィールド２２８、およびＥＣＣフィールド２２９を有する。有効フィールド２２２は、キャッシュ・エントリ２０５が有効データを収容するとき「有効」（例えば、論理１または論理０の一方）に設定され、キャッシュ・エントリ２０５が有効データを収容していないとき「無効」（論理１および論理０以外）に設定される。例えば、データが不揮発性キャッシュから退避して他のデータが不揮発性キャッシュ内にキャッシュされることを許容したとき、退避したデータ・エントリの有効フィールドは「有効」から「無効」に変更され、かかるキャッシュ・エントリがもはやキャッシュされたデータを格納していないことを示す。修正フィールド２２４は、キャッシュ・エントリ２０５中のデータが大容量ストレージ装置の主大容量ストレージ媒体上の対応する場所内に格納されたデータに一致していないなら、「修正」に設定される。例えば、図１および図２に関し、大容量ストレージ装置１４０の論理アドレスに対応するデータが、大容量ストレージ装置１４０に書き戻されて不揮発性キャッシュ１４９内に格納され、そしてそのデータが主大容量ストレージ媒体１４８から読み取られた後に修正された場合、不揮発性キャッシュ・エントリ２０５のための修正フィールド２２４が「修正」に設定され、不揮発性キャッシュ１４９内に格納された論理アドレスに対応するデータの複製が、主大容量ストレージ媒体１４８上に格納された論理アドレスに対応するデータと異なっていることを示す。修正フィールド２２４は、「ダーティ・ビット」と呼ばれ、データが主大容量ストレージ媒体１４８に首尾よく書き戻されて不揮発性キャッシュ１４９内に保存されたときにクリアされる。
【００２９】
アドレス・フィールド２２６は、キャッシュ・エントリ２０５内に格納されたデータのためのアドレス（例えば、論理アドレス、物理アドレス）を格納する。大容量ストレージ装置がハード・ディスク・ドライブである実施例において、アドレス・フィールド２２６はセクタ・アドレスを格納でき、「セクタ識別」と呼ばれる。データの論理ブロックが不揮発性キャッシュ（例えば、複数のセクタに対応する各論理ブロック）内にキャッシュされる実施例において、アドレス・フィールド２２６は、各論理ブロックが既知の固定サイズである論理ブロックの開始セクタ・アドレスを含む。
【００３０】
データ・フィールド２２８はキャッシュ・エントリ２０５のデータを格納する。大容量ストレージ装置がハード・ディスク・ドライブである実施例において、データ・フィールド２２８はデータのディスク・セクタ（例えば、５１２バイト）、データの論理ブロックなどを格納し得る。ＥＣＣフィールド２２９は、キャッシュ・エントリ２０５のデータのためのエラー訂正コードを格納する。ある実施例では、データの各論理ブロックは、エラー訂正コードと関連付けられる。
【００３１】
図３は、本発明の実施例に従った方法を示す。本発明の実施例において、データのための要求（例えば、プロセッサ１２０からの要求、コンピュータ１１０のオペレーティング・システムからの要求、コンピュータ１１０上で実行されるアプリケーションからの要求など）を受け取る（ボックス３１０）。要求されたデータが大容量ストレージ装置の不揮発性キャッシュ内に格納されているかどうかが決定される（ボックス３２０）。ある実施例において、データのための要求はアドレスを含み、そのアドレスがキャッシュ・ヒットまたはキャッシュ・ミス命令を発生するために使用される。他の実施例において、キャッシュ・ディレクトリは、不揮発性キャッシュ内にキャッシュされたデータのアドレスを含み、要求されたデータが不揮発性キャッシュ内にキャッシュされたという命令が、キャッシュ・ディレクトリおよび要求されたデータのアドレスに基づいて生成される。要求されたデータが不揮発性キャッシュ内に格納された場合は、データが不揮発性キャッシュから読み取られ（ボックス３３０）、エラー・チェックおよび修正が読み取りデータ上で実行され（ボックス３３５）、大容量ストレージ装置からデータが送られる（ボックス３４０）。要求されたデータが不揮発性キャッシュ内に格納されない場合は、データが大容量ストレージ装置の主大容量ストレージ媒体から読み取られ（ボックス３６０）、エラー・チェックおよび修正が読み取りデータ上で実行され（ボックス３６５）、大容量ストレージ装置からデータが送られ（ボックス３７０）、データが不揮発性キャッシュに書き込まれる（ボックス３７５）。
【００３２】
図４は、本発明の実施例に従った方法を示す。不揮発性大容量ストレージ装置内にデータを格納するための要求が受け取られる（ボックス４１０）。例えば、ワード・プロセッシング・プログラム内のドキュメントを編集するユーザは、ワード・プロセッシング・プログラムにドキュメントを保存するための命令ができる。他の例として、ワード・プロセッシング・プログラムは自動保存機能を含み、ドキュメントを定期的に保存できる。他の例として、オペレーティング・システムは、メイン・メモリ（例えばＤＲＡＭ）内に格納されたデータを、ハード・ディスク・ドライブまたは他の不揮発性メモリに格納するという命令ができる（例えば、他のデータのためにメイン・メモリ内に空き領域を作るためなど）。データが不揮発性キャッシュ内に格納されるべきかどうかの決定がなされる（ボックス４２０）。不揮発性キャッシュ内にデータを格納する決定がなされた場合は、データが不揮発性キャッシュ内に格納される（ボックス４３０）。ある実施例では、不揮発性キャッシュ内へデータを格納することは、不揮発性キャッシュのキャッシュ・ディレクトリ・テーブルを更新することを含む（ボックス４４０）。不揮発性キャッシュ内にデータを格納しない決定がなされた場合は、データが不揮発性大容量ストレージ装置の主大容量ストレージ媒体内に格納される（ボックス４５０）。
【００３３】
本発明の実施例に従って、方法を実施するためにプロセッサによって実行するのに適した命令が、コンピュータ読み込み可能媒体上に格納される。コンピュータ読み込み可能媒体は、デジタル情報を格納する装置である。例えば、コンピュータ読み込み可能媒体は、ソフトウエアおよび／またはファームウエア（例えばマイクロコード）を格納するものとして当業者に知られているＲＯＭを含む。コンピュータ読み込み可能媒体は、実行するのに適した命令を実行するために適切なプロセッサによってアクセスされる。用語「実行するのに適した」とは、命令の現在の形式（例えばマシン・コード）でプロセッサによりすぐに実行できる、あるいは、プロセッサによってすぐに実行するにはさらなる操作（例えば、翻訳、解読、またはアクセス・コードを伴う提供など）が必要であるようなあらゆる命令を包含することを意味する。
【００３４】
本発明の実施例に従った方法および装置は、不揮発性キャッシュを有する大容量ストレージ装置から読み取る、あるいは大容量ストレージ装置へ書き込むデータを効果的にキャッシュする。不揮発性キャッシュは、不揮発性キャッシュへの外部電源および大容量ストレージ装置が遮断された場合でさえも、そのデータを保持することができる。本発明の実施例は、大容量ストレージ装置から読み取る、あるいは大容量ストレージ装置へ書き込むデータのためのアクセス時間を短縮し、それによって大容量ストレージ装置を有するシステムのシステム性能を高める。
【００３５】
大容量ストレージ装置の不揮発性キャッシュ内にデータを格納するための方法および装置の実施例が説明された。上記において、説明の目的のために、多数の特定の詳細事項が述べられ、本発明を完全に理解するために提供された。しかしながら、本発明はこれらの特定の詳細事項がなくても実施し得ることを、当業者は理解するであろう。他の場合として、構造および装置はブロック・ダイアグラム形式で示される。さらに、方法が示され、実行される特定の順序は例示であり、その順序は変更可能であるが、なお本発明の精神および目的の範囲内であるという意図を当業者は直ちに理解できるであろう。
【００３６】
上述の詳細な説明において、本発明の実施例に従った装置および方法は、特定の実施例に関して説明されている。したがって、本明細書および図面は、限定的ではなく例示的であると理解されたい。
【図面の簡単な説明】
【図１】本発明の実施例に従った、コンピュータ・システムを示す図である。
【図２】本発明の実施例に従った、不揮発性キャッシュの構成を示す図である。
【図３】本発明の実施例に従った方法を示す図である。
【図４】本発明の実施例に従った方法を示す図である。
【図１】
2004502237.tif 000003
【図２】
2004502237.tif 000004
【図３】
2004502237.tif 000005
【図４】
2004502237.tif 000006
【国際公開パンフレット】
2004502237.tif 000007
2004502237.tif 000008
2004502237.tif 000009
2004502237.tif 000010
2004502237.tif 000011
2004502237.tif 000012
2004502237.tif 000013
2004502237.tif 000014
2004502237.tif 000015
2004502237.tif 000016
2004502237.tif 000017
2004502237.tif 000018
2004502237.tif 000019
2004502237.tif 000020
2004502237.tif 000021
2004502237.tif 000022
2004502237.tif 000023
2004502237.tif 000024
2004502237.tif 000025
2004502237.tif 000026
2004502237.tif 000027
2004502237.tif 000028
2004502237.tif 000029
2004502237.tif 000030
2004502237.tif 000031
【国際公開パンフレット（コレクトバージョン）】
2004502237.tif 000032
2004502237.tif 000033
【国際調査報告】
2004502237.tif 000034
2004502237.tif 000035