JP3951918B2 - 不揮発性キャッシュ - Google Patents
不揮発性キャッシュ Download PDFInfo
- Publication number
- JP3951918B2 JP3951918B2 JP2002506434A JP2002506434A JP3951918B2 JP 3951918 B2 JP3951918 B2 JP 3951918B2 JP 2002506434 A JP2002506434 A JP 2002506434A JP 2002506434 A JP2002506434 A JP 2002506434A JP 3951918 B2 JP3951918 B2 JP 3951918B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- cache
- disk
- volatile
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/313—In storage device
Description
【発明の属する技術分野】
本発明の実施例は、不揮発性キャッシュに関するものである。詳しくは、本発明は、ディスク格納装置のためのデータをキャッシュする不揮発性メモリに関する。
【0002】
【従来の技術】
コンピュータ・システムは、多くの場合、揮発性メモリおよび不揮発性大容量ストレージ装置の双方にデータを格納する。このようなデータは、システムやアプリケーション・プログラムを動作させるためのコンピュータ命令を含む。ディスク・ドライブは、近代のコンピュータ・システムの一部である大容量ストレージ装置の一例である。ディスク・ドライブのような不揮発性大容量ストレージ装置は、コンピュータ・システムへの電力が取り除かれあるいは切断された場合に、その装置上に格納されたデータを基本的に失うことはない。このように、ディスク・ドライブのような不揮発性大容量ストレージ装置は、コンピュータ・システムがほぼ永久的に保持すべきデータを格納することができる。
【0003】
多くのコンピュータ・システムでは、コンピュータ・システムにおけるマイクロコンピュータによって現に用いられている1組のデータは、ディスク・ドライブから揮発性のランダム・アクセス・メモリ(RAM)へコピーされる、その理由は、RAMがディスク・ドライブより極めて速いアクセス時間を有するからである。しかしながら、RAMメモリ(例として、1メガバイト)ユニットは、ディスク・ドライブ中のメモリ総量より高価であるのが典型的であり、さらに、典型的なコンピュータ・システムではRAMのストレージ容量はディスク・ドライブのストレージ容量と比べて極めて少ない。被要求データがRAMメモリに存在しない場合、マイクロコンピュータはディスク・ドライブからRAMへその被要求データを含む情報のブロックを読み取る。もしRAMメモリに十分な容量が存在しない場合、そのマイクロコンピュータはRAMからディスク・ドライブへデータのブロックを書き戻すことによって、RAMに自由スペースを確保することができる。
【0004】
ディスク・ドライブのアクセス時間は、一般的にRAMのアクセス時間より遅いため、ディスク・ドライブはしばしば特性上の障害となる。加えて、ディスク・ドライブからのデータのアクセスは、一般的にRAMからデータをアクセスするよりより多くの電力を消費する、なぜなら、ディスク・ドライブは機械的に動作しなければならないからである。既知のディスク・ドライブは、揮発性キャッシュ(例として、DRAMキャッシュ、SRAMキャッシュ)を含むが、このような揮発性キャッシュは、マイクロコンピュータのメイン・メモリにおけるアドレス空間の一部となり、それ故バイト単位でアドレス指定される。
【0005】
【詳細な説明】
ここに記載された方法および装置は大容量ストレージ装置のためのキャッシュに関するものであり、不揮発性メモリにおいて実施される。特に、本発明の実施例は、メモリ・ストレージの効率および不揮発性メモリ中のデータをキャッシュして行われる検索を改善することができる。
【0006】
図1は、本発明の実施例に従う不揮発性キャッシュを有するコンピュータ・システム(「コンピュータ」)の部分ブロック図を示す。特に、図1は、中央処理装置(CPU)102、またはプロセッサ、およびマザーボード106に搭載されたメモリ装置104を含むコンピュータ・システム100を示す。プロセッサ102は、例えば、カリフォルニア州サンタ・クララのインテル・コーポレーションによって製造されるペンティアムIII、特定用途向け集積回路(ASIC)、マイクロコントローラなどであってよい。コンピュータ・システム100に用いられるメモリ104の例は、128メガバイトのダイナミック・ランダム・アクセス・メモリ装置(DRAM)である。また、メモリ104は、例として、ROMであってもよい。さらに、プロセッサ102およびメモリ104は、マザーボード106に結合される別のプリント基板上に設置してもよい。「結合」という用語は、直接接続、間接接続、間接通信などの意味を包含する。
【0007】
チップセット110は、プロセッサ102と、メモリ104、大容量ストレージ装置130および拡張バス116に取り付けられる周辺コンポーネントのような他のシステム・コンポーネントとに結合されるとともに、それらの内部相互動作を管理する。この応用に用いられるように、チップセットの用語は、プロセッサとコンピュータ・システムのコンポーネントとの間のデータ転送のためのハブ(またはコア)として動作する1またはそれ以上の集積回路チップのグループに関するものをいう。図1に示されるように、チップセットは、コンピュータ・システムのマザーボードに結合される。チップセット110は、マザーボード106と集積(例えば、その上にはんだ接続)されてもよい。チップセット110は、例えば、カリフォルニア州サンタ・クララのインテル・コーポレーションによって製造される820および810Eに類似するものでもよい。チップセット110は、単一の集積回路であっても、あるいは2つまたはそれ以上の集積回路チップから構成されていてもよい。図3に示されるように、チップセット110は、「ノースブリッジ機能(northbridge functionality)」として知られることを実行するメモリ制御ハブ(MCH)311、および「サウスブリッジ機能(southbridge functionality)」として知られることを実行する入力/出力制御ハブ(ICH)312を含んでよい。
【0008】
大容量ストレージ装置130は、ディスク・ドライブであってもよく、接続ケーブル170を介してチップセット110に結合されてもよい。大容量ストレージ装置130は、また3.5インチ・ディスケット、5.25インチ・フロッピーディスケット、ZIPディスク(例えば、ユタ州ロイのアイオメガ・コーポレーションによる製造)、Jazディスク(例えば、ユタ州ロイのアイオメガ・コーポレーションによる製造)、LS−120 Superdisk(例えば、ミネソタ州オークデールのイメーション・コーポレーションによる製造)、再書き込み可能なデジタル・バーサティル・ディスク(DVD−RAM)、リード/ライト・コンパクト・ディスク(CD−RW)、光学式ストレージ装置、光磁気ストレージ装置、磁気ストレージ装置、ホログラフィックなどであってもよい。便宜上、本出願は、大容量ストレージ装置がディスク装置である実施例を開示する。本発明に用いられるディスク装置の実施例は、図2に示される。
【0009】
拡張バス116は周辺コンポーネント・インターフェイス(PCI)バスであってもよく、コンピュータ・システム100にしばしば見られるデータ・バスの形式で、PCIローカル・バス仕様に合致する。ネットワーク・インターフェイス・カード(NIC)126のような1またはそれ以上のPCI適合の周辺装置は、拡張バス116に接続されてもよい。ネットワーク・インターフェイス・カード126は、ローカルまたはワイド・エリアのコンピュータ・ネットワークにコンピュータ・システム100を結び付ける。
【0010】
本発明の実施例は、大容量ストレージ装置に格納されているデータをキャッシュするための不揮発性メモリから成る不揮発性キャッシュからなる。図1の例に示された実施例では、不揮発性キャッシュ150は、チップセット110に結合される。実施例において、そのチップセットおよび不揮発性メモリは、大容量ストレージ装置130のためのデータをキャッシュする。さらなる実施例では、大容量ストレージ装置は、ディスク・ドライブであり、不揮発性キャッシュ150はディスク・ドライブのためのデータをキャッシュするが、どの場合においてもそのキャッシュはディスク・ドライブを称される。
【0011】
図2は、本発明の実施例に従うディスク・ドライブ230の部分ブロック図である。ディスク・ドライブ230は、図1の大容量ストレージ装置130と同じであってよく、以下に議論される目的に対して大容量ストレージ装置130とみなされる。ディスク・ドライブ230は外部ディスク・ドライブまたは内部ディスク・ドライブであってもよい。ディスク・ドライブ230は、例えば、100ギガバイトを超えるデータを格納することができる。実施例では、ディスク・ドライブは、ハード・ドライブである。さらなる実施例では、ディスク・ドライブ230は、カリフォルニア州スコッツ・バレイのシーゲート・テクノロジー・インクによって製造されるCheetah 18XLディスク・ドライブである。ディスク・ドライブ130はディスク制御器210および大容量ストレージ220から構成される。ディスク制御器210は、特定用途向け集積回路であってもよく、バッファおよびプログラム・メモリ215、およびECC論理218に結合されたマイクロプロセッサ・ユニット(MPU)を含むことができる。バッファおよびプログラム・メモリ215は、MPU211によって実行されるディスク・ドライブ・オペレーション・プログラム219を格納し、大容量ストレージ220へ書き込まれ、かつ大容量ストレージ220から読み出されるデータを格納するためのバッファとして用いられてもよい。MPU211は、CPU102からの要求を処理し、大容量ストレージ220へデータを書きまたはデータを読む。例えば、MPU211は、いつ要求が成されたかを判断し、論理セクタ・アドレスを物理セクタ・アドレスへ変換する。バッファおよびプログラム・メモリ215は、ホスト・システム(例えば、コンピュータ・システム100)とインターフェイスを行うディスク・スピンドル・インターフェイス論理213に結合される。ディスク制御器210は、またディスク・フォーマット論理を含み、大容量ストレージへ書き込まれるデータ・ブロック(例えば、プリアンブルまたは特別の文字を挿入する)をフォーマットする。この出願で用いられるように、「論理」は、オペレーションを実行するために結線された回路のようなハードウェア論理、あるいはオペレーションを実行するファームウェアのようなプログラム論理を含む。
【0012】
大容量ストレージ220は、特に、コンピュータのオペレーティング・システム(OS)コード231を格納し、それは、立ち上げ時に、プロセッサ102によって実行するためにコンピュータのメモリ104へ転送される。大容量ストレージ220は、またディスク・ドライブ用のデバイス・ドライバ235を格納し、プロセッサ102によって実行するためにコンピュータのメモリ104へ転送され、ディスク・ドライブ230とのデータ変換および通信を達成する。大容量ストレージ220は、特に、これらのプログラムによってアクセスされるアプリケーション・プログラムおよびデータを格納する。大容量ストレージ220はトラックに分割されたプラッタ(platter)を有しており、それはセクタに分けられていてもよい。例えば、フォーマットされたディスクはプラッタ毎に1000個のトラックを有することができる。実施例においては、ディスク制御器210がディスク・ドライブの外からデータの読み出しまたは書き込みの要求を受けると、その要求は論理ディスク・セクタの単位でなされ、そのディスク制御器は、マッピング・アルゴリズムを用いて、これらを物理ディスク・セクタに変換することができる。ある数の物理セクタがスペアのために残され、そのマッピングはハードウェアで支援される。
【0013】
動作において、OS231(プロセッサ102によって実行される)がプログラムまたはOSの他の部分からデータに対する要求を受けると、ファイル・システムは、ファイル・アロケーション・テーブル(FAT)をチェックするために用いられ、そのデータがメモリ104に現在あるか否か、もしない場合、その大容量ストレージ上のどこにそのデータが見つけられるかを判断する。もしOS231が、必要とするデータがメモリ104にはないが、ディスク・ドライブ230上に格納されていると判断すると、OS231はチップセット110を介してディスク・ドライブ230へそのデータのための要求を求める。ディスク制御器210は、その後ディスク・セクタに対する要求を受け、大容量ストレージ220からそのディスク・セクタを受け、そしてチップセット110を介してそのディスク・セクタのためのデータをメモリ104へ送る。別の時間に、OS231は、ディスク・セクタにメモリ104からディスク・ドライブ230へのデータを書き込ませ、どの場合においてもディスク制御器210はそのデータを受け取り、それを大容量ストレージ220のディスク・セクタ上に格納させる。
【0014】
実施例において、セクタはディスク・ドライブ230で使用される最小のアドレス可能な物理的なストレージ・ユニットであるが、アドレスする情報や有効性データのような管理情報はより小さなユニットにアクセスされてもよい。さらなる実施例では、各ディスク・セクタは512バイトのデータ・サイズである。実施例において、ブロックは1つまたはそれ以上のディスク・セクタのグループであり、識別コード、エラー検出コード、および/またはそのブロックに対するエラー訂正コード(ECC)を含んでいてもよい。実施例において、OSはディスク・セクタまたはセクタのブロックの単位でディスク・ドライブからのデータを要求するが(例えば、それはバイトまたはワードを要求するのではない)、どの場合にも、そのディスク・ドライブはブロック・オリエンテッド(例えば、ブロック・オリエンテッド)と呼ばれる。ブロック・オリエンテッドのディスク・ドライブの実施例において、管理情報はより小さなユニットにアクセスされてもよい。ECCは、最新のエラー検出および訂正プロトコルで、単一ビットおよび複数ビットのエラーを検出するとともに、休む間もなく、いくつものエラーを訂正することができる。実施例では、ブロック中のディスク・セクタは、1つのディスク・プラッタ上に互いに物理的に隣接して配置される。さらなる実施例では、ブロックは、ディスク・ドライブ230、不揮発性キャッシュ150および関連するコンポーネントによってユニットとして操作される。実施例では、ブロックは100ディスク・セクタを収容する。
【0015】
本発明の実施例では、ディスク・ドライブ230に格納されたデータは、不揮発性キャッシュ150にキャッシュされてもよい。この実施例では、不揮発性キャッシュ150は特別のメモリ・サブシステムとして作用し、頻繁に使用されるディスク・ドライブ・セクタの複製をより速いアクセスのために格納する。この実施例に従って、ディスク・セクタのデータがディスク・ドライブ230からメモリ104にコピーされるとき、ディスク・セクタのコピーが不揮発性キャッシュ150に格納される。この実施例に従って、OSがメモリ104にないデータを必要とし、その要求されたデータが不揮発性キャッシュ150に存在すると判断すると、そのときそのデータは(ディスク・ドライブ230に代わって)不揮発性キャッシュ150からメモリ104へ読み込まれる。この実施例では、論理的なディスク・ドライブ・メモリは物理的なディスク・ドライブ230および不揮発性キャッシュ150から構成される。OSがディスクにデータを格納する必要があると判断するなら、例えば、ワード処理プログラムの利用者がそのプログラムに現在の書類を「格納」するよう指示するとき、そのデータは物理的なディスク・ドライブ230または不揮発性キャッシュ150に格納される。同様に、OSがメモリ104にあるデータを格納し、メモリ104に空き空間を作る必要があると判断するとき、そのデータは不揮発性キャッシュ150へ書き戻される。なぜなら、不揮発性キャッシュ150は不揮発性であり、その上に格納されたそのデータは、電力がそのコンピュータ・システムへ遮断されても、失われることはないからである。
【0016】
不揮発性キャッシュ150はディスク・ドライブ230より速いアクセス時間を有する場合、不揮発性ディスク・キャッシュ150の利用者はプロセッサ102がプログラムを実行する速度を全体として速めることができる。例えば、ディスク・ドライブ230の平均アクセス速度が不揮発性ディスク・キャッシュ150に対する平均アクセス速度よりかなり速い場合、その時、不揮発性ディスク・キャッシュ150の利用者は、全アクセス速度において顕著な高速化を導くことができる。典型的なコンピュータ・システムにおけるディスク・ドライブへのアクセスは、利用者が使う時間の80%までがシステムが応答するために待機していることに起因しているので、不揮発性キャッシュ150の利用者は、より大きな顧客満足度を得ることになるであろう。加えて、不揮発性キャッシュ150がアクセス当たりディスク・ドライブ230より少ない電力で済むので、不揮発性キャッシュ150の利用者は、そのシステムによって用いられる電力総量を削減することになるであろう。さらに、不揮発性キャッシュ150はディスク・ドライブよりより信頼性が高く、その結果コンピュータ・システムがクラッシュしたりまたは動作不能になったりする時間を最小にする。
【0017】
実施例において、ディスク・ドライブのデバイス・ドライバ235は、不揮発性キャッシュ150のためのキャッシュ管理命令237を収容する。このようなキャッシュ管理命令237は、どのデータをキャッシュすべきか、どのデータを置換すべきか、およびどのデータをディスクに書き戻すべきかに関する判断を行うことができる。加えて、キャッシュ管理命令237は、またいつキャッシュ・ヒットが発生したか、およびどのデータをそのキャッシュへ事前に取り込むべきかを判断する。例えば、キャッシュ管理命令237は、データの所望のディスク・セクタが不揮発性キャッシュ150(例えば、そのデータが不揮発性キャッシュ150に存在するかどうか)またはディスク・ドライブ230からメモリ104へ読み込まれるべきか否かを判断する。データが不揮発性キャッシュ150にキャッシュされるべきか否かのようなキャッシュ管理判断は、既知のキャッシュ・アルゴリズムを用いて実行されることができる。例えば、そのアルゴリズムが近い将来再びそのデータを使用することが低いものと判断する場合(例えばそのデータはMP3音声ファイルのためのものである)、そのときそのデータはキャッシュされなくてもよいであろう。加えて、不揮発性キャッシュ中のデータをディスク・ドライブ230に書き戻すことが必要になる場合、キャッシュ管理命令は、例えば既知の最低使用頻度(LRU: least recently used)アルゴリズムまたはランダム置換(random replacement)アルゴリズムを用いてどのデータを書き戻すべきかを判断することができる。
【0018】
実施例において、ディスク・ドライブのためのデバイス・ドライバ235は、たとえそれがキャッシュ管理命令237であっても、まるで通常のデバイス・ドライバ(例えば、WIN98環境におけるATAPI.SYS)であるようにOS231に現われる。この実施例において、不揮発性キャッシュ150の存在は、OS231には見えない。さらなる実施例において、キャッシュ管理命令はOS231の一部である。別の実施例では、キャッシュ管理は、チップセット110上のロジックによって達成される。さらに別の実施例では、キャッシュ管理は、OS231のコンビネーション、すなわちディスク・ドライブ235のためのデバイス・ドライバおよび/またはチップセット110上のキャッシュ管理ロジックによって達成される。
【0019】
図3は、本発明の実施例に従うチップセット310および不揮発性ディスク・キャッシュ350の部分ブロック図を示す。チップセット310および不揮発性ディスク・キャッシュ350は、図1のチップセット110および不揮発性ディスク・キャッシュ150と同じである。この実施例では、不揮発性ディスク・キャッシュ350は、ディスク・ドライブのためのデータをキャッシュするので、ディスク・キャッシュと呼ばれる。不揮発性ディスク・キャッシュ350は、読み込みおよび書き込みのできるあらゆるタイプのメモリであってよく、そのメモリの外部にある全ての電源電力が取り除かれまたは切断される場合にもその内容を保持するであろう。不揮発性ディスク・キャッシュ350は、例えば、フラッシュ・メモリ、バッテリにバックアップされたDRAM、磁気RAM、ホログラフィック・メモリ、強誘電体RAMなどである。実施例では、不揮発性ディスク・キャッシュ350は500メガバイトのデータを格納することができる。さらなる実施例では、不揮発性ディスク・キャッシュ350はブロック・オリエンテッドであり、各ブロックはディスク・ドライブの論理ディスク・セクタに応答する1つまたはそれ以上の論理ディスク・セクタを含む。この実施例では、不揮発性ディスク・キャッシュ350の各ディスク・セクタおよびブロックはディスク・ドライブ中において同じサイズである。不揮発性ディスク・キャッシュ350がブロック・オリエンテッドであるなら、(キャッシュ管理情報以外の)データはディスク・セクタまたはセクタのブロックの単位で読まれあるいは格納されてもよい。
【0020】
実施例において、不揮発性ディスク・キャッシュ350はチップセット310に結合される。さらなる実施例では、不揮発性ディスク・キャッシュ350はチップセット310に直接付属されてもよいし(結線されていない)、その一部でもよい。実施例では、図3に示されるように、不揮発性キャッシュ150はチップセット310内の集積回路の上に積載される。この実施例では、ICH312は、ディスク・キャッシュ・インターフェイス・ロジック315を含み、不揮発性ディスク・キャッシュ350へのアクセスを制御する。
【0021】
上述したように、チップセット310は単一の集積回路であっても、あるいは集積回路のグループであってもよく、プロセッサと関連する装置との間の通信を制御する。実施例において、チップセット310は、第1チップセット集積回路および第2チップセット集積回路と呼ばれる複数の集積回路からなり、その不揮発性ディスク・キャッシュはチップセット内の集積回路の1つに結合される。チップセット310は、「ノースブリッジ機能(northbridge functionality)」として知られることを実行するメモリ制御ハブ(MCH)311、および「サウスブリッジ機能(southbridge functionality)」として知られることを実行する入力/出力制御ハブ(ICH)312を含んでよい。図3に示されるように、メモリ制御ハブ311および入力/出力制御ハブ312は、別々のチップであってもよい。実施例において、キャッシュ・インターフェイス・ロジック315およびバッファ318は、チップセット上のメモリ制御ハブ311の一部である。不揮発性メモリは、いかなる方法でチップセットに結合されてもよいが、本発明はいかなるタイプのチップセットと用いることができる。図3において、不揮発性メモリは入力/出力制御ハブ312のトップ上に積載される。積載された不揮発性メモリはチップ全体をカバーしてもよく、その上に積載されまたはそのチップの一部に積載される。
【0022】
実施例において、不揮発性キャッシュは完全な連想キャッシュ(associative cache)である。別の実施例では、不揮発性キャッシュは1組の連想キャッシュである。
【0023】
図4は、本発明の実施例に従う不揮発性ディスク・キャッシュ350のより詳細な部分ブロック図である。不揮発性ディスク・キャッシュ350は、複数のディスク・キャッシュ・エントリ400および管理情報を格納することができる。実施例において、不揮発性ディスク・キャッシュ350に格納されたディスク・キャッシュ・エントリの各々は、大容量ストレージ220上のディスク・セクタのサイズである。さらなる実施例においては、各ディスク・キャッシュ・エントリは、1つまたはそれ以上のディスク・セクタ(例として、100ディスク・セクタ)のブロックに対応する。
【0024】
不揮発性ディスク・キャッシュ350は、またキャッシュ・ディレクトリ・テーブル410を収容し、全てのディスク・キャッシュ・エントリに対するテーブル・エントリを有する。キャッシュ・ディレクトリ・テーブル410は、特定のディスク・セクタまたはデータのブロックが不揮発性ディスク・キャッシュ350に存在するかどうかを判断するために用いられる。ある実施例では、キャッシュ・ディレクトリ・テーブルは、ディスク・ドライブ・セクタに対応するデータがディスク・キャッシュに格納されたかどうかを示す。キャッシュ・ディレクトリ・テーブル410には、各有効なディスク・キャッシュ・エントリのための1つのテーブル・エントリがあり、例えば、データの論理ディスク・セクタを収容する。キャッシュ・ディレクトリ・テーブル410中の各テーブル・エントリは、不揮発性ディスク・キャッシュ350に格納された論理ディスク・セクタのためのセクタ・アドレスを有してもよい。ディスク・セクタが不揮発性ディスク・キャッシュ350に存在するかどうかを判断するために、キャッシュ・ディレクトリ・テーブル410は、例えば、既知の検索アルゴリズムを用いてサーチされる。代わりに、キャッシュ・ディレクトリ・テーブル410中のテーブル・エントリは、ハッシュ・アルゴリズム(hashing algorithm)を用いて分類分けされてもよい。実施例では、不揮発性ディスク・キャッシュ350中のディスク・セクタの存在は、所望のセクタ・アドレスをキャッシュ・ディレクトリ・テーブル・エントリに格納されたセクタ・アドレスと比較することにより確認される。キャッシュ・ディレクトリ・テーブル410は不揮発性メモリ中に格納されるので、キャッシュ(キャッシュにあるもの)の状態は、たとえコンピュータ・システムへの電力が取り除かれあるいは遮断されても保存される。不揮発性ディスク・キャッシュ350中に2,000,000ディスク・キャッシュを有する実施例では、キャッシュ・ディレクトリ・テーブル410に2,000,000テーブル・エントリがある。この実施例では、各テーブル・エントリは4バイト長であり、キャッシュ・ディレクトリ・テーブルは不揮発性メモリの8メガバイトを使用できる。実施例では、キャッシュ・ディレクトリ・テーブルのサイズは、各ディスク・キャッシュ・エントリ中における複数のディスク・セクタのブロックを含むことにより低減させることができる(平均キャッシュ・アクセス速度は増加する)。
【0025】
不揮発性ディスク・キャッシュ350は、また命令レジスタ401、アドレス・レジスタ402、および宛先ポインタ・レジスタ403のような制御レジスタを収容することができる。命令レジスタ401は、例えばプロセッサ102からの命令のような他の装置から受信した命令を格納し、不揮発性ディスク・キャッシュ350に格納されるディスク・セクタを検索する。アドレス・レジスタ402は、不揮発性ディスク・キャッシュ350から読み出され、または不揮発性ディスク・キャッシュ350に書き込まれるディスク・セクタに対するセクタ・アドレスを格納してもよい。宛先ポインタ・レジスタ403は、例えばディスク・セクタが書き込まれるRAMのような装置のロケーションを格納する。
【0026】
図5は、本発明の実施例に従う不揮発性ディスク・キャッシュ・エントリ500のブロック図である。不揮発性ディスク・キャッシュ・エントリ500は、図4に示された複数のディスク・キャッシュ・エントリの1つであり、ディスク・セクタまたはディスク・セクタのブロックのためのデータを収容してもよい。不揮発性ディスク・キャッシュ・エントリ500は、有効フィールド501、修正フィールド502、セクタ・アドレス505、データ・フィールド510およびECCフィールド520を有する。有効フィールド502は、キャッシュ・エントリ500が有効データを収容するとき「有効」と設定され、キャッシュ・エントリ500が有効データを収容していないとき「無効」に設定される。例えば、キャッシュ・エントリ500中のデータがディスク・ドライブ230に書き戻されると、有効フィールド501は「有効」から「無効」に変更され、キャッシュ・エントリがもはや論理ディスク・セクタを格納していないことを示す。修正フィールド502は、キャッシュ・エントリ500中のデータがディスク・ドライブ230上の対応するディスク・セクタ中のデータに一致していないなら、「修正」に設定される。例えば、データのディスク・セクタがメモリ104から不揮発性キャッシュ150に書き戻され、そのディスク・セクタがメモリ104中にある間に修正されたデータを有していると、そのときそのデータに対応するディスク・キャッシュ・エントリのための修正フィールドは「修正」に設定されるであろう。修正フィールド502は、「ダーティ・ビット」と称されてもよい。セクタ・アドレス505はキャッシュ・エントリに格納されたデータに対する論理ディスク・セクタ・アドレス(またはエントリが1つ以上のセクタを有しているならアドレス)を有し、「セクタ識別」と呼ばれてもよい。実施例では、セクタ・アドレス505は、ブロックに対する開始アドレスを含み、各ブロックは既知の固定サイズを有する。データ・フィールド510はキャッシュ・エントリのためのデータを格納する。ECCフィールド520は、キャッシュ・エントリのためのエラー訂正コードを格納する。実施例では、各ブロックは、エラー訂正コードと関連付けられる。
【0027】
動作において、プロセッサ102は、あるデータ・ブロックがメモリ104にないことを判断して、チップセット110に信号を送りそのデータが不揮発性ディスク・キャッシュにあるかどうかを判断することができる。ディスク・キャッシュ・インターフェイス・ロジック315は、キャッシュ・ディレクトリ・テーブル410に基づいて、そのデータ・ブロックが不揮発性ディスク・キャッシュにあることを判断するために用いられ得る。不揮発性ディスク・キャッシュ350からデータ・ブロックを読むために、プロセッサ102は、「読み取り」命令を命令レジスタ401へ、そのブロックのためのディスク・セクタ・アドレスをアドレス・レジスタ402へ、そしてメモリ104中の宛先アドレスを宛先ポインタ・レジスタ403へ送ることができる。この命令に基づいて、ディスク・インターフェイス・ロジック315は、対応するキャッシュ・エントリに見つけられるデータ(例えば、キャッシュ・エントリ500のデータ・フィールド510中のデータ)をバッファ318へ書き込む。その後、バッファ中のそのデータは宛先ポインタ・レジスタ403によって特定されるメモリ104中のアドレスへ転送される。別の実施例では、メモリの速度のため、バッファ318は、使用されないかもしれない。実施例において、ディスク・インターフェイス・ロジック315は、不揮発性メモリ(例えば、ECCコード520)に格納されたデータと関連を有するエラー訂正コードをチェックし、不揮発性ディスク・キャッシュ・メモリからバッファ318へのデータを読む際に発生するエラーを訂正することができる。実施例において、不揮発性メモリは、ブロック・オリエンテッドであり、そのチップセットは不揮発性メモリから読まれる各データ・ブロックに対するエラー訂正コードをチェックする。
【0028】
実施例において、不揮発性ディスク・キャッシュ・メモリからの読み取りは破壊的な読み取りであり、読み取る行為によってそのエントリに格納されたデータが失われ、あるいは予期せず変更される。例えば、もし不揮発性ディスク・キャッシュがコア・ロジック中で実行されるなら、このようなことが発生するかもしれない。この実施例では、ディスク・インターフェイス・ロジック315は、破壊的読み取りの書き戻しをサポートすることができる。すなわち、ディスク・インターフェイス・ロジック315によって、読み取られたデータが書き戻され、それによってエントリ中のデータを前の状態に戻す。
【0029】
代わって、プロセッサ102によって所望されるデータが不揮発性ディスク・キャッシュに存在しないなら、必要なデータ・ブロックを求める要求がディスク・ドライブ230へ送られる。ディスク・ドライブ130はそのデータ・ブロックをメモリ104へ書き込む。加えて、そのブロックをバッファ318へ書き込み、またその適切な命令を命令レジスタ401に書き込むことによって、同じデータ・ブロックを不揮発性ディスク・キャッシュへ書き込むことができる。キャッシュ・インターフェイス・ロジック315は、その後新しいディスク・キャッシュ・エントリ500を生成し、その新しいディスク・キャッシュ・エントリにそのブロックをコピーする。加えて、キャッシュ・インターフェイス・ロジック315は、その新しいディスク・キャッシュ・エントリに対応する新しいエントリをキャッシュ・ディレクトリ・テーブル410に生成する。その新しいディスク・キャッシュ・エントリのための有効フィールド501が「有効」に設定され、修正フィールドが「未修正」に設定されるであろう。実施例において、不揮発性ディスク・キャッシュ中のブロックは、ディスク・ドライブと同じサイズと構造を有し、その結果、ブロックは修正なしにあるいは僅かな修正だけでそのディスク・キャッシュにコピーされる。データ・ブロックが不揮発性ディスク・キャッシュに一度格納されると、プロセッサ102はディスク・ドライブからではなく不揮発性ディスク・キャッシュからデータ・ブロックを読み取ることができる。
【0030】
図6は、本発明の実施例に関するディスク・ドライブ中のセクタと関連するデータを得る方法のフローチャートである。明確さの目的のため、図示された方法は、上述した典型的な実施例に関連して説明される。プロセッサ102は、データのアイテムを必要とし、そのデータがディスク・ドライブ(601)中のロケーションに、または関連して格納されていることを判断する。そのディスク・ドライブ中のロケーションと関連する最新データのバージョンがRAMまたはそのディスク・キャッシュに格納されていてもよい。もしそのデータがRAMに格納されていないなら、そのプロセッサはキャッシュ・ディレクトリ・テーブルのチェックを行い、そのディスク・ドライブ・ロケーションに関連するデータが不揮発性ディスク・キャッシュ(602)に格納されているかどうかを判断する。もしそのデータが不揮発性ディスク・キャッシュ(603)に格納されているなら、その時そのデータはその不揮発性ディスク・キャッシュ(604)から読み取られる。エラー訂正コードは、その不揮発性ディスク・キャッシュから読み取られると、その時そのデータに対してチェックされ、エラーが訂正される(605)。そのデータはその後RAMに書き込まれる(606)。データが不揮発性ディスク・キャッシュ(603)に格納されていないなら、その時要求されたデータはディスク・ドライブ(607)から読まれてもよい。そのデータは、不揮発性ディスク・キャッシュ中に新しいエントリを生成して、その後RAMおよび不揮発性ディスク・キャッシュに書き込まれる。次に、キャッシュ・ディレクトリ・テーブル中の新しいエントリは、不揮発性ディスク・キャッシュ中の新しいエントリに対応して生成される(609)。
【0031】
図7は、本発明の別の実施例に従う不揮発性キャッシュ拡張カードを有するコンピュータ・システムの部分ブロック図である。この実施例では、不揮発性ディスク・キャッシュは、PCIバス拡張カード上に収容される。図7は、図1に示されたコンピュータ・システム100に類似するコンピュータ・システム700を図示する。図7は、CPU702,RAM704,チップセット710およびディスク・ドライブ接続ケーブル770を収容するマザーボード706を示すが、図1のCPU102,メモリ104,チップセット110および接続ケーブル170と同じである。コンピュータ・システム700は、また図1の大容量ストレージ装置130と同じであるディスク・ドライブ730を収容する。しかしながら、図1と異なって、図7の実施例では、不揮発性キャッシュはチップセット710に結合されていない。
【0032】
本発明のこの実施例では、コンピュータ・システム700は、不揮発性キャッシュ拡張ボード750を含み、PCIバス716に結合される。またネットワーク・インターフェイス・カード726もPCIバス716に結合される。PCIバス716およびネットワーク・インターフェイス・カード726は、図1の拡張バス116およびネットワーク・インターフェイス・カード126と同じである。別の実施例では、不揮発性キャッシュ拡張ボード750は、コンピュータ700中の別の拡張バスに結合される。不揮発性キャッシュ拡張ボード750は、コンピュータ700のバスに挿入され、あるいは引き出される。不揮発性キャッシュ拡張ボード750は、不揮発性ディスク・キャッシュ350中の不揮発性メモリに類似する不揮発性メモリを収容する。拡張ボード750はまたディスク・キャッシュ・インターフェイス・ロジックを含んでもよい。コンピュータ700は、コンピュータ・システム100と関連して、上述したのと同様に、ディスク・ドライブ730のためにデータをキャッシュする。コンピュータ700中のオペレーティング・システムがディスク・ドライブ730上に格納されるデータを獲得する必要があるとき、そのデータが不揮発性キャッシュ拡張ボード750にキャッシュされるという判断が成される。もしそうであるなら、その時そのデータはディスク・ドライブ730の代わりに不揮発性拡張ボード750からRAM704に書き込んでもよい。このように、この実施例は、ディスク・ドライブに対するデータをキャッシュする方法において図1の実施例に類似するが、この実施例では、キャッシュは図1のようなチップセットに結合されているというよりむしろ拡張カードの一部となっている。
【0033】
図8は、本発明の実施例に従う不揮発性ディスク・キャッシュを有するディスク・ドライブの部分ブロック図である。図8は、図2に示されたディスク・ドライブ230に類似するディスク・ドライブ830を示す。ディスク・ドライブ230のように、ディスク・ドライブ830はディスク制御器810およびディスク・スピンドル820を有する。ディスク・ドライブ830は、また不揮発性キャッシュ850を有する。大容量ストレージ220は、オペレーティング・システム831およびディスク・ドライブのデバイス・ドライバ835を格納することができる。しかしながら、ディスク・スピンドル820は、キャッシュ管理命令を格納していない。ディスク制御器810は、MPU811,バッファおよびプログラム・メモリ815,インターフェイス・ロジック813およびECCロジック818を有し、それらは図2のMPU211,バッファおよびプログラム・メモリ215,ディスク・スピンドル・インターフェイス・ロジック213およびECCロジック218に類似する。加えて、ディスク制御器810はキャッシュ・インターフェイス・ロジック815を有し、不揮発性キャッシュ850に結合される。不揮発性ディスク・キャッシュ850は、図3の不揮発性キャッシュ350に類似し、キャッシュ・インターフェイス・ロジック815は図3に示されたディスク・キャッシュ・インターフェイス・ロジック315に類似する。
【0034】
ディスク・ドライブ830は、不揮発性キャッシュ850がコンピュータ・システム中の唯一の不揮発性ディスク・キャッシュであることを除いて、図1および図7に示されるもののようにコンピュータ・システムに用いられてもよい。図8に示される実施例は、不揮発性メモリにディスク・ドライブのためのデータをキャッシュすることにおいて図1および図7の実施例と同様に動作する。しかしながら、この実施例では、ディスク・キャッシュはディスク・ドライブの一部であってもよい。さらなる実施例では、ディスク・キャッシュ管理機能は、プログラム819によって達成される。この実施例では、ディスク・キャッシュはディスク制御器810によって管理され、コンピュータ・システムの残りには見えなくてもよい。
【0035】
図9は、本発明の実施例に従う不揮発性メモリにデータを格納する方法を示す。不揮発性メモリにデータを格納する命令が受け付けられる(901)。例えば、ワード・プロセッシング・プログラムで書類を編集するユーザは、そのプログラムにその書類を「格納」する命令を送る。別の例として、そのプログラムは、編集される書類のバックアップ・コピーを格納すべきことを、例えばタイマーに基づいて、自分自身の判断で行ってもよい。別の実施例として、オペレーティング・システムの一部は、ディスク・ドライブまたは他の不揮発性メモリ、例えば、RAMの空きスペースにデータを格納するための命令を生成してもよい。そのデータを不揮発性キャッシュに格納すべきか否かの判断が成される(902)。このような判断は、既知のキャッシング・アルゴリズムを用いて行われる。近い将来においてそのデータが用いられないようであるなら、そのデータはキャッシュされなくてもよい。加えて、不揮発性キャッシュ拡張ボードが拡張バスに結合されていないなら、データを不揮発性キャッシュに格納しない判断が成されてもよい。データを不揮発性キャッシュに格納する判断がなされると、そのデータは不揮発性キャッシュに書き込まれる(903)。一実施例では、その不揮発性キャッシュにデータを書き込む処理は、その不揮発性キャッシュ上の不揮発性メモリ中にあるキャッシュ・ディレクトリ・テーブルを更新することを含む。不揮発性キャッシュ中にデータを書き込まない判断が成されると、そのデータはディスク・ドライブに書き込まれる(905)。
【0036】
本発明の実施例は、ディスク・ストレージ装置のためにデータをキャッシュするための不揮発性ディスク・キャッシュに関するものである。本発明の幾つかの実施例が、ここに特に図示され説明された。しかしながら、本発明の修正および変化は、上記記述によって、またその思想から逸脱することなく添付の請求項の範囲内にかつ本発明の意図する範囲に含まれるものである。例えば、幾つかのタイプの不揮発性メモリがキャッシュとしての使用のために議論されるが、いかなるタイプの不揮発性メモリも用いることができる。別の実施例として、本発明は不揮発性ディスク・キャッシュのための、またディスク・キャッシュ・エントリのためのデータ構造を開示するが、そのキャッシュおよびキャッシュ・エントリはデータ構造のあらゆる構成を用いて実行される。さらに、ディスク・キャッシュは、ディスク・ドライブ接続ケーブル内のように、チップセットの一部、拡張カード、ディスク・ドライブの一部またはコンピュータ・システムの別の一部として実行されてもよい。加えて、上述した実施例は不揮発性キャッシュを用いてディスク・ドライブのためにデータをキャッシュすることを議論する一方、その不揮発性キャッシュはまた他の大容量ストレージ装置のためにデータをキャッシュするために用いてもよい。このように、図3,4,5に示されるような実施例では、便宜上、ディスク・ドライブとしてのキャッシュに関するキャッシュを議論するが(例えば、ディスク・キャッシュ)、開示された装置および方法が他のタイプの大容量ストレージ装置に対してもデータをキャッシュするための用いられてもよい。
【図面の簡単な説明】
【図1】 本発明の実施例に従う不揮発性キャッシュを有するコンピュータ・システムの部分ブロック図である。
【図2】 本発明の実施例に従うディスク・ドライブの部分ブロック図である。
【図3】 本発明の実施例に従うチップセットおよび不揮発性ディスク・キャッシュの部分ブロック図である。
【図4】 本発明の実施例に従う不揮発性ディスク・キャッシュの部分ブロック図である。
【図5】 本発明の実施例に従う不揮発性ディスク・キャッシュにおけるエントリの部分ブロック図である。
【図6】 本発明の実施例に従う不揮発性ディスク・ドライブにおけるセクタと関連するデータを獲得する方法のフローチャートである。
【図7】 本発明の実施例に従う不揮発性ディスク・キャッシュの拡張カードを有するコンピュータ・システムの部分ブロック図である。
【図8】 本発明の実施例に従う不揮発性ディスク・キャッシュを有するディスク・ドライブの部分ブロック図である。
【図9】 本発明の実施例に従う不揮発性メモリにデータを格納する方法を示す。
Claims (22)
- マザーボードと、
前記マザーボードに結合されるチップセットと、
前記チップセットに結合されるディスク・ストレージ装置と、
前記ディスク・ストレージ装置に格納されたデータをキャッシュするために前記チップセット上に積載された不揮発性メモリと、
から構成されることを特徴とするコンピュータ。 - 前記ディスク・ストレージ装置にデータを格納し、前記ディスク・ストレージ装置からデータを読み取るデバイス・ドライバ命令をさらに含み、前記デバイス・ドライバ命令が前記不揮発性メモリ中のデータのキャッシュを管理するキャッシュ管理命令を含むことを特徴とする請求項1記載のコンピュータ。
- 前記デバイス・ドライバ命令は、前記データが不揮発性メモリに存在するかどうかを、前記不揮発性メモリに格納されたキャッシュ・ディレクトリ・テーブルをチェックすることによって判断する命令を含むことを特徴とする請求項2記載のコンピュータ。
- 前記不揮発性メモリは、ブロック・オリエンテッドであることを特徴とする請求項1記載のコンピュータ。
- 前記チップセットは、前記不揮発性メモリへのアクセスを制御するためのディスク・キャッシュ・インターフェイス・ロジックを含み、
前記ディスク・キャッシュ・インターフェイス・ロジックは前記不揮発性メモリから読まれるブロック・データに関連するエラー訂正コードをチェックすることを特徴とする請求項4記載のコンピュータ。 - ディスク・メモリ中のロケーションに関連するデータを獲得する方法において、
前記ディスク・メモリ中のロケーションに関連するデータが不揮発性メモリにキャッシュされるかどうかをディスク・メモリのためのデバイス・ドライバで判断する段階であって、前記不揮発性メモリはチップセット上に積載され、前記チップセットは前記ディスク・メモリに結合される、段階と、
前記不揮発性メモリにデータがキャッシュされる場合、前記ロケーションに関連する前記データを前記不揮発性メモリから読み取る段階と、
から構成されることを特徴とする方法。 - 前記不揮発性メモリに前記データがキャッシュされない場合、前記ロケーションに関連する前記データを前記ディスク・メモリから読み取る段階をさらに含むことを特徴とする請求項6記載の方法。
- 前記判断する段階は、前記不揮発性メモリに格納されたキャッシュ・ディレクトリ・テーブルをチェックする段階を含むことを特徴とする請求項6記載の方法。
- データを前記不揮発性メモリから読み取る段階は、前記チップセット内に位置するキャッシュ・インターフェイス・ロジックへ命令を送る段階を含み、前記命令は前記不揮発性メモリからのデータの読み取りをランダム・アクセス・メモリ(RAM)へ直接指図することを特徴とする請求項8記載の方法。
- 前記不揮発性メモリはブロック・オリエンテッドであり、ここに前記不揮発性メモリからデータを読み取る段階は、前記不揮発性メモリから読まれる各ブロックに関連するエラー訂正コードをチェックする段階をさらに含むことを特徴とする請求項9記載の方法。
- 前記ディスク・メモリから前記ロケーションに関連するデータを読み取る前記段階は、前記データをランダム・アクセス・メモリ(RAM)へ格納するとともに前記データを前記不揮発性メモリへ格納することを特徴とする請求項7記載の方法。
- コンピュータ・システム中のプロセッサによって実行される命令を格納したコンピュータの読み取り可能な媒体において、前記命令は、前記プロセッサがディスク・ドライブにデータを書き込みまたは前記ディスク・ドライブからデータを読み取るために、オペレーティング・システムからの要求を処理するためのデバイス・ドライバを含み、前記デバイス・ドライバは、前記ディスク・ドライブへ書き込まれるべきどのデータが前記コンピュータ・システムのチップセット上に積載される不揮発性メモリにキャッシュされるべきかを判断するための命令を含み、さらに前記デバイス・ドライバは前記ディスク・ドライブから読み取られるデータが前記不揮発性メモリにキャッシュされているかどうかを判断するための命令を含む、ことを特徴とする媒体。
- 前記デバイス・ドライバは、前記データが前記不揮発性メモリにキャッシュされるべきかどうかの判断に基づいて前記不揮発性メモリにデータを書き込むための命令を含み、そして前記デバイス・ドライバは、前記データが前記不揮発性メモリにキャッシュされているかどうかの判断に基づいて前記不揮発性メモリからデータを読み取るための命令を含む、ことを特徴とする請求項12記載の媒体。
- 前記不揮発性メモリからデータを読み取るための命令は、ディスク・キャッシュ中の前記不揮発性メモリからデータを読み取り、各ディスク・ブロックの読み取りに対するエラー訂正コードをチェックするための命令であることを特徴とする請求項13記載の媒体。
- 前記ディスク・ドライブから読み取られるべきデータが不揮発性メモリにキャッシュされているかどうかの判断は、前記不揮発性メモリに格納されるキャッシュ・ディレクトリ・テーブルに基づくことを特徴とする請求項12記載の媒体。
- 前記ディスク・ドライブに書き込まれるべきデータが前記不揮発性メモリにキャッシュされるべきかどうかを判断し、かつ前記ディスク・ドライブから読み取られるべきデータが前記不揮発性メモリにキャッシュされているかどうかを判断する、前記デバイス・ドライバ中の命令は、前記デバイス・ドライバへ要求を送るオペレーティング・システムには見えない命令であることを特徴とする請求項12記載の媒体。
- プロセッサとインターフェイスするロジックおよびディスク・ドライブとインターフェイスするロジックからなるチップセットと、
前記チップセット上に積載され、前記ディスク・ドライブのためにデータをキャッシュする不揮発性キャッシュと、
から構成されるシステム。 - 前記チップセットは、前記プロセッサから前記チップセットへ送られた前記ディスク・ドライブからのデータに対する要求を分析し、そのデータが前記不揮発性キャッシュにキャッシュされているなら前記不揮発性キャッシュから前記プロセッサへ前記要求されたデータを提供する、キャッシュ管理ロジックをさらに含むことを特徴とする請求項17記載のシステム。
- 前記不揮発性キャッシュは、ブロック・オリエンテッドであることを特徴とする請求項17記載のシステム。
- 前記チップセットは、前記不揮発性キャッシュから読み取られた各データ・ブロックに対するエラー訂正コードをチェックするロジックを含むことを特徴とする請求項19記載のシステム。
- 前記不揮発性キャッシュは、データ・ブロックが前記不揮発性キャッシュに存在するかどうかを示すキャッシュ・ディレクトリ・テーブルを格納することを特徴とする請求項19記載のシステム。
- 前記チップセットは、入力/出力制御ハブ・チップおよびメモリ制御ハブ・チップを含み、ここに前記不揮発性キャッシュは前記入力/出力制御ハブ・チップのトップ上に積載されることを特徴とする請求項17記載のシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US60201000A | 2000-06-23 | 2000-06-23 | |
PCT/US2001/017851 WO2002001365A2 (en) | 2000-06-23 | 2001-06-01 | Non-volatile cache |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2004506256A JP2004506256A (ja) | 2004-02-26 |
JP2004506256A5 JP2004506256A5 (ja) | 2005-12-22 |
JP3951918B2 true JP3951918B2 (ja) | 2007-08-01 |
Family
ID=24409613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002506434A Expired - Fee Related JP3951918B2 (ja) | 2000-06-23 | 2001-06-01 | 不揮発性キャッシュ |
Country Status (6)
Country | Link |
---|---|
JP (1) | JP3951918B2 (ja) |
CN (1) | CN1295623C (ja) |
AU (1) | AU2001275147A1 (ja) |
DE (1) | DE10196380T1 (ja) |
GB (1) | GB2379538B (ja) |
WO (1) | WO2002001365A2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9189325B2 (en) | 2011-01-25 | 2015-11-17 | Sony Corporation | Memory system and operation method thereof |
Families Citing this family (81)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6920533B2 (en) * | 2001-06-27 | 2005-07-19 | Intel Corporation | System boot time reduction method |
US7275135B2 (en) | 2001-08-31 | 2007-09-25 | Intel Corporation | Hardware updated metadata for non-volatile mass storage cache |
US7103724B2 (en) | 2002-04-01 | 2006-09-05 | Intel Corporation | Method and apparatus to generate cache data |
US7036040B2 (en) | 2002-11-26 | 2006-04-25 | Microsoft Corporation | Reliability of diskless network-bootable computers using non-volatile memory cache |
US7136973B2 (en) * | 2004-02-04 | 2006-11-14 | Sandisk Corporation | Dual media storage device |
US7328304B2 (en) * | 2004-02-27 | 2008-02-05 | Intel Corporation | Interface for a block addressable mass storage system |
US7644239B2 (en) | 2004-05-03 | 2010-01-05 | Microsoft Corporation | Non-volatile memory cache performance improvement |
JP4664011B2 (ja) * | 2004-06-21 | 2011-04-06 | 株式会社リコー | 情報処理装置及び情報処理方法 |
US7490197B2 (en) | 2004-10-21 | 2009-02-10 | Microsoft Corporation | Using external memory devices to improve system performance |
JP4956922B2 (ja) | 2004-10-27 | 2012-06-20 | ソニー株式会社 | 記憶装置 |
JP5338859B2 (ja) * | 2004-10-27 | 2013-11-13 | ソニー株式会社 | 記憶装置および情報処理システム |
JP4989875B2 (ja) * | 2005-11-01 | 2012-08-01 | 技嘉科技股▲ふん▼有限公司 | 模擬ハードディスクの方法 |
US7634585B2 (en) * | 2005-11-04 | 2009-12-15 | Sandisk Corporation | In-line cache using nonvolatile memory between host and disk device |
US8914557B2 (en) | 2005-12-16 | 2014-12-16 | Microsoft Corporation | Optimizing write and wear performance for a memory |
US7721049B2 (en) * | 2006-03-27 | 2010-05-18 | Kabuhsiki Kaisha Toshiba | Disk drive write method |
US7558913B2 (en) | 2006-06-20 | 2009-07-07 | Microsoft Corporation | Atomic commit of cache transfer with staging area |
KR101128234B1 (ko) * | 2006-08-23 | 2012-03-23 | 엘지전자 주식회사 | 메모리 접근 제어 장치 및 방법 |
KR20080044505A (ko) * | 2006-11-16 | 2008-05-21 | 삼성전자주식회사 | 데이터를 관리하는 장치 및 방법 |
US8935302B2 (en) | 2006-12-06 | 2015-01-13 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume |
US9104599B2 (en) | 2007-12-06 | 2015-08-11 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for destaging cached data |
US9495241B2 (en) | 2006-12-06 | 2016-11-15 | Longitude Enterprise Flash S.A.R.L. | Systems and methods for adaptive data storage |
WO2008070802A2 (en) | 2006-12-06 | 2008-06-12 | Fusion Multisystems, Inc. (Dba Fusion-Io) | Apparatus, system, and method for an in-server storage area network |
US9519540B2 (en) | 2007-12-06 | 2016-12-13 | Sandisk Technologies Llc | Apparatus, system, and method for destaging cached data |
US7836226B2 (en) | 2007-12-06 | 2010-11-16 | Fusion-Io, Inc. | Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment |
JP5158187B2 (ja) | 2008-02-28 | 2013-03-06 | 富士通株式会社 | ストレージ装置、ストレージ制御装置およびストレージ制御方法 |
JP5099212B2 (ja) | 2008-02-28 | 2012-12-19 | 富士通株式会社 | ストレージ装置、ストレージ制御装置、データ転送集積回路、および、ストレージ制御方法 |
WO2010016115A1 (ja) | 2008-08-06 | 2010-02-11 | 富士通株式会社 | ディスクアレイ装置の制御ユニット、データ転送装置及び復電処理方法 |
JP5581577B2 (ja) * | 2008-08-29 | 2014-09-03 | 富士通株式会社 | データ処理装置 |
US9032151B2 (en) | 2008-09-15 | 2015-05-12 | Microsoft Technology Licensing, Llc | Method and system for ensuring reliability of cache data and metadata subsequent to a reboot |
US7953774B2 (en) | 2008-09-19 | 2011-05-31 | Microsoft Corporation | Aggregation of write traffic to a data store |
KR101023883B1 (ko) | 2009-02-13 | 2011-03-22 | (주)인디링스 | 고속 저장 장치를 캐쉬로 사용하는 스토리지 시스템 |
US8195878B2 (en) | 2009-02-19 | 2012-06-05 | Pmc-Sierra, Inc. | Hard disk drive with attached solid state drive cache |
JP5999645B2 (ja) | 2009-09-08 | 2016-10-05 | ロンギチュード エンタープライズ フラッシュ エスエイアールエル | ソリッドステート記憶デバイス上にデータをキャッシングするための装置、システム、および方法 |
US8601222B2 (en) | 2010-05-13 | 2013-12-03 | Fusion-Io, Inc. | Apparatus, system, and method for conditional and atomic storage operations |
US9122579B2 (en) | 2010-01-06 | 2015-09-01 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for a storage layer |
CN102136274B (zh) * | 2009-12-30 | 2013-03-27 | 爱国者电子科技有限公司 | 一种具有两种存储介质的移动硬盘 |
EP2598996B1 (en) | 2010-07-28 | 2019-07-10 | SanDisk Technologies LLC | Apparatus, system, and method for conditional and atomic storage operations |
US8984216B2 (en) | 2010-09-09 | 2015-03-17 | Fusion-Io, Llc | Apparatus, system, and method for managing lifetime of a storage device |
US10817502B2 (en) | 2010-12-13 | 2020-10-27 | Sandisk Technologies Llc | Persistent memory management |
US9218278B2 (en) | 2010-12-13 | 2015-12-22 | SanDisk Technologies, Inc. | Auto-commit memory |
US9208071B2 (en) | 2010-12-13 | 2015-12-08 | SanDisk Technologies, Inc. | Apparatus, system, and method for accessing memory |
US10817421B2 (en) | 2010-12-13 | 2020-10-27 | Sandisk Technologies Llc | Persistent data structures |
CN103262054B (zh) | 2010-12-13 | 2015-11-25 | 桑迪士克科技股份有限公司 | 用于自动提交存储器的装置、系统和方法 |
US9047178B2 (en) | 2010-12-13 | 2015-06-02 | SanDisk Technologies, Inc. | Auto-commit memory synchronization |
US20120239860A1 (en) | 2010-12-17 | 2012-09-20 | Fusion-Io, Inc. | Apparatus, system, and method for persistent data management on a non-volatile storage media |
US9213594B2 (en) | 2011-01-19 | 2015-12-15 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for managing out-of-service conditions |
US9092337B2 (en) | 2011-01-31 | 2015-07-28 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for managing eviction of data |
US9201677B2 (en) | 2011-05-23 | 2015-12-01 | Intelligent Intellectual Property Holdings 2 Llc | Managing data input/output operations |
US8874823B2 (en) | 2011-02-15 | 2014-10-28 | Intellectual Property Holdings 2 Llc | Systems and methods for managing data input/output operations |
WO2012116369A2 (en) | 2011-02-25 | 2012-08-30 | Fusion-Io, Inc. | Apparatus, system, and method for managing contents of a cache |
US9563555B2 (en) | 2011-03-18 | 2017-02-07 | Sandisk Technologies Llc | Systems and methods for storage allocation |
WO2012129191A2 (en) | 2011-03-18 | 2012-09-27 | Fusion-Io, Inc. | Logical interfaces for contextual storage |
CN102521147B (zh) * | 2011-11-17 | 2015-03-25 | 曙光信息产业(北京)有限公司 | 一种使用高速非易失介质做缓存的管理方法 |
US9274937B2 (en) | 2011-12-22 | 2016-03-01 | Longitude Enterprise Flash S.A.R.L. | Systems, methods, and interfaces for vector input/output operations |
US8782344B2 (en) | 2012-01-12 | 2014-07-15 | Fusion-Io, Inc. | Systems and methods for managing cache admission |
US9767032B2 (en) | 2012-01-12 | 2017-09-19 | Sandisk Technologies Llc | Systems and methods for cache endurance |
US9251052B2 (en) | 2012-01-12 | 2016-02-02 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for profiling a non-volatile cache having a logical-to-physical translation layer |
US10102117B2 (en) | 2012-01-12 | 2018-10-16 | Sandisk Technologies Llc | Systems and methods for cache and storage device coordination |
US9251086B2 (en) | 2012-01-24 | 2016-02-02 | SanDisk Technologies, Inc. | Apparatus, system, and method for managing a cache |
US10073656B2 (en) | 2012-01-27 | 2018-09-11 | Sandisk Technologies Llc | Systems and methods for storage virtualization |
US9116812B2 (en) | 2012-01-27 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a de-duplication cache |
US10339056B2 (en) | 2012-07-03 | 2019-07-02 | Sandisk Technologies Llc | Systems, methods and apparatus for cache transfers |
US9612966B2 (en) | 2012-07-03 | 2017-04-04 | Sandisk Technologies Llc | Systems, methods and apparatus for a virtual machine cache |
US10346095B2 (en) | 2012-08-31 | 2019-07-09 | Sandisk Technologies, Llc | Systems, methods, and interfaces for adaptive cache persistence |
US10509776B2 (en) | 2012-09-24 | 2019-12-17 | Sandisk Technologies Llc | Time sequence data management |
US10318495B2 (en) | 2012-09-24 | 2019-06-11 | Sandisk Technologies Llc | Snapshots for a non-volatile device |
US9842053B2 (en) | 2013-03-15 | 2017-12-12 | Sandisk Technologies Llc | Systems and methods for persistent cache logging |
US10102144B2 (en) | 2013-04-16 | 2018-10-16 | Sandisk Technologies Llc | Systems, methods and interfaces for data virtualization |
US10558561B2 (en) | 2013-04-16 | 2020-02-11 | Sandisk Technologies Llc | Systems and methods for storage metadata management |
US9208101B2 (en) * | 2013-06-26 | 2015-12-08 | Western Digital Technologies, Inc. | Virtual NAND capacity extension in a hybrid drive |
US9842128B2 (en) | 2013-08-01 | 2017-12-12 | Sandisk Technologies Llc | Systems and methods for atomic storage operations |
CN103488582B (zh) * | 2013-09-05 | 2017-07-28 | 华为技术有限公司 | 写高速缓冲存储器的方法及装置 |
US20150089118A1 (en) * | 2013-09-20 | 2015-03-26 | Sandisk Technologies Inc. | Methods, systems, and computer readable media for partition and cache restore |
US10019320B2 (en) | 2013-10-18 | 2018-07-10 | Sandisk Technologies Llc | Systems and methods for distributed atomic storage operations |
US10019352B2 (en) | 2013-10-18 | 2018-07-10 | Sandisk Technologies Llc | Systems and methods for adaptive reserve storage |
US10073630B2 (en) | 2013-11-08 | 2018-09-11 | Sandisk Technologies Llc | Systems and methods for log coordination |
JP5950470B2 (ja) * | 2014-03-24 | 2016-07-13 | ▲ホア▼▲ウェイ▼技術有限公司Huawei Technologies Co.,Ltd. | バッファマッピングを制御するための方法およびバッファシステム |
US9946607B2 (en) | 2015-03-04 | 2018-04-17 | Sandisk Technologies Llc | Systems and methods for storage error management |
CN106528001B (zh) * | 2016-12-05 | 2019-08-23 | 北京航空航天大学 | 一种基于非易失性存储器和软件raid的缓存系统 |
CN111857587B (zh) * | 2020-07-15 | 2022-06-17 | 济南浪潮数据技术有限公司 | 一种在存储系统缓存装置中基于磁道地址的命中检测方法 |
CN116583827A (zh) * | 2021-12-08 | 2023-08-11 | 华为技术有限公司 | 数据存取方法、装置、磁盘控制器、磁盘和数据存储系统 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6362056A (ja) * | 1986-09-02 | 1988-03-18 | Nec Corp | デイスクキヤツシユ装置 |
JPH0273439A (ja) * | 1988-09-09 | 1990-03-13 | Nec Corp | 補助記憶装置用キャッシュ制御装置 |
EP0574531A4 (en) * | 1991-03-05 | 1995-03-08 | Zitel Corp | CACHE STORAGE SYSTEM AND METHOD. |
US5594885A (en) * | 1991-03-05 | 1997-01-14 | Zitel Corporation | Method for operating a cache memory system using a recycled register for identifying a reuse status of a corresponding cache entry |
GB2256735B (en) * | 1991-06-12 | 1995-06-21 | Intel Corp | Non-volatile disk cache |
JPH05225055A (ja) * | 1992-02-17 | 1993-09-03 | Sharp Corp | 情報処理装置 |
JPH05250274A (ja) * | 1992-03-04 | 1993-09-28 | Mitsubishi Electric Corp | ディスクキャッシュ装置 |
EP0667579A1 (en) * | 1994-02-09 | 1995-08-16 | Ballard Synergy Corporation | Cache for optical storage device |
US5584007A (en) * | 1994-02-09 | 1996-12-10 | Ballard Synergy Corporation | Apparatus and method for discriminating among data to be stored in cache |
JP3576561B2 (ja) * | 1994-11-22 | 2004-10-13 | モノリシック・システム・テクノロジー・インコーポレイテッド | 第2レベルのキャシュメモリとしてdramアレイを用いる方法及び構成 |
US5963721A (en) * | 1995-12-29 | 1999-10-05 | Texas Instruments Incorporated | Microprocessor system with capability for asynchronous bus transactions |
JPH1040170A (ja) * | 1996-07-26 | 1998-02-13 | Toshiba Corp | ディスクキャッシュシステム |
JPH10154101A (ja) * | 1996-11-26 | 1998-06-09 | Toshiba Corp | データ記憶システム及び同システムに適用するキャッシュ制御方法 |
JP2000122968A (ja) * | 1998-10-15 | 2000-04-28 | Nec Corp | 入出力キャッシュメモリ及びその制御方法 |
US6195749B1 (en) * | 2000-02-10 | 2001-02-27 | Advanced Micro Devices, Inc. | Computer system including a memory access controller for using non-system memory storage resources during system boot time |
-
2001
- 2001-06-01 AU AU2001275147A patent/AU2001275147A1/en not_active Abandoned
- 2001-06-01 DE DE10196380T patent/DE10196380T1/de not_active Ceased
- 2001-06-01 GB GB0228871A patent/GB2379538B/en not_active Expired - Fee Related
- 2001-06-01 WO PCT/US2001/017851 patent/WO2002001365A2/en active Application Filing
- 2001-06-01 JP JP2002506434A patent/JP3951918B2/ja not_active Expired - Fee Related
- 2001-06-01 CN CNB018143652A patent/CN1295623C/zh not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9189325B2 (en) | 2011-01-25 | 2015-11-17 | Sony Corporation | Memory system and operation method thereof |
Also Published As
Publication number | Publication date |
---|---|
GB2379538A (en) | 2003-03-12 |
AU2001275147A1 (en) | 2002-01-08 |
GB0228871D0 (en) | 2003-01-15 |
WO2002001365A3 (en) | 2002-04-11 |
CN1295623C (zh) | 2007-01-17 |
GB2379538B (en) | 2005-01-12 |
CN1527973A (zh) | 2004-09-08 |
WO2002001365A2 (en) | 2002-01-03 |
DE10196380T1 (de) | 2003-10-16 |
JP2004506256A (ja) | 2004-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3951918B2 (ja) | 不揮発性キャッシュ | |
US6941423B2 (en) | Non-volatile mass storage cache coherency apparatus | |
US7802054B2 (en) | Apparatus and methods using invalidity indicators for buffered memory | |
US8122193B2 (en) | Storage device and user device including the same | |
CN109643275B (zh) | 存储级存储器的磨损均衡设备和方法 | |
US7519754B2 (en) | Hard disk drive cache memory and playback device | |
US7966450B2 (en) | Non-volatile hard disk drive cache system and method | |
JP4238514B2 (ja) | データ記憶装置 | |
US7613870B2 (en) | Efficient memory usage in systems including volatile and high-density memories | |
WO2002001364A2 (en) | Non-volatile cache integrated with mass storage device | |
US20100088459A1 (en) | Improved Hybrid Drive | |
US20030005219A1 (en) | Partitioning cache metadata state | |
JP2012515955A (ja) | 固体メモリフォーマッティング | |
JPH09237225A (ja) | キャッシュ機能を有するコンピュータ及びキャッシュメモリ制御方法 | |
CN108701070B (zh) | 对多级系统存储器的存储器侧高速缓存的容易出错的高速缓存行槽的处理 | |
US20100205391A1 (en) | Memory system and managing method therefor | |
US10162760B2 (en) | Hibernation based on page source | |
JP3568110B2 (ja) | キャッシュメモリの制御方法、コンピュータシステム、ハードディスクドライブ装置およびハードディスク制御装置 | |
US20030196031A1 (en) | Storage controller with the disk drive and the RAM in a hybrid architecture | |
JP2006099802A (ja) | 記憶制御装置およびキャッシュメモリの制御方法 | |
JP5025670B2 (ja) | 情報処理装置およびデータ記憶装置 | |
JP2004326523A (ja) | 書き換え可能な不揮発性メモリを備えた記憶装置及び記憶装置用不揮発性メモリの制御方法 | |
GB2403834A (en) | Non-volatile ferro-electric RAM cache | |
JPH0519981A (ja) | 光デイスク装置のデータ書込み正常終了判定方法 | |
JPH09212424A (ja) | ディスクキャッシュ及びディスクキャッシュ方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041027 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20061122 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061205 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070305 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070316 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070416 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110511 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120511 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130511 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |