JP2004506256A - Non-volatile cache - Google Patents

Non-volatile cache Download PDF

Info

Publication number
JP2004506256A
JP2004506256A JP2002506434A JP2002506434A JP2004506256A JP 2004506256 A JP2004506256 A JP 2004506256A JP 2002506434 A JP2002506434 A JP 2002506434A JP 2002506434 A JP2002506434 A JP 2002506434A JP 2004506256 A JP2004506256 A JP 2004506256A
Authority
JP
Japan
Prior art keywords
cache
volatile
disk
memory
data
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.)
Granted
Application number
JP2002506434A
Other languages
Japanese (ja)
Other versions
JP2004506256A5 (en
JP3951918B2 (en
Inventor
コールソン,リチャード
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2004506256A publication Critical patent/JP2004506256A/en
Publication of JP2004506256A5 publication Critical patent/JP2004506256A5/ja
Application granted granted Critical
Publication of JP3951918B2 publication Critical patent/JP3951918B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/313In storage device

Abstract

不揮発性メモリを含む不揮発性キャッシュは、大容量格納装置に格納されるデータをキャッシュする。A nonvolatile cache including a nonvolatile memory caches data stored in a mass storage device.

Description

【0001】
【発明の属する技術分野】
本発明の実施例は、不揮発性キャッシュに関するものである。詳しくは、本発明は、ディスク格納装置のためのデータをキャッシュする不揮発性メモリに関する。
【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】
本発明の実施例に従う不揮発性メモリにデータを格納する方法を示す。
[0001]
TECHNICAL FIELD OF THE INVENTION
Embodiments of the present invention relate to a nonvolatile cache. More particularly, the present invention relates to a non-volatile memory that caches data for a disk storage device.
[0002]
[Prior art]
Computer systems often store data in both volatile memory and non-volatile mass storage devices. Such data includes computer instructions for operating systems and application programs. Disk drives are an example of mass storage devices that are part of modern computer systems. Non-volatile mass storage devices, such as disk drives, do not essentially lose data stored on the device when power to the computer system is removed or disconnected. Thus, a non-volatile mass storage device such as a disk drive can store data that a computer system should retain almost permanently.
[0003]
In many computer systems, the set of data currently used by the microcomputer in the computer system is copied from the disk drive to volatile random access memory (RAM) because RAM Have a much faster access time than disk drives. However, a RAM memory (eg, 1 megabyte) unit is typically more expensive than the total amount of memory in the disk drive, and furthermore, in a typical computer system, the storage capacity of the RAM is less than that of the disk drive. Extremely small compared to storage capacity. If the requested data is not in RAM memory, the microcomputer reads the block of information containing the requested data from the disk drive to RAM. If there is not enough capacity in RAM memory, the microcomputer can make free space in RAM by writing blocks of data back from RAM to the disk drive.
[0004]
Because the access time of a disk drive is generally slower than the access time of a RAM, the disk drive is often a performance bottleneck. In addition, accessing data from a disk drive generally consumes more power than accessing data from RAM, because the disk drive must operate mechanically. Known disk drives include volatile caches (eg, DRAM cache, SRAM cache), but such volatile caches become part of the address space in the microcomputer's main memory, and are therefore byte-by-byte. Is addressed by
[0005]
[Detailed description]
The methods and apparatus described herein relate to caches for mass storage devices and are implemented in non-volatile memory. In particular, embodiments of the present invention can improve the efficiency of memory storage and the search performed by caching data in non-volatile memory.
[0006]
FIG. 1 illustrates a partial block diagram of a computer system ("computer") having a non-volatile cache according to an embodiment of the present invention. In particular, FIG. 1 shows a computer system 100 including a central processing unit (CPU) 102 or processor and a memory device 104 mounted on a motherboard 106. Processor 102 may be, for example, a Pentium III manufactured by Intel Corporation of Santa Clara, California, an application specific integrated circuit (ASIC), a microcontroller, or the like. An example of memory 104 used in computer system 100 is a 128 megabyte dynamic random access memory device (DRAM). Further, the memory 104 may be, for example, a ROM. Further, processor 102 and memory 104 may be located on a separate printed circuit board that is coupled to motherboard 106. The term “coupled” encompasses direct connection, indirect connection, indirect communication, and the like.
[0007]
Chipset 110 is coupled to processor 102 and other system components, such as memory 104, mass storage device 130, and peripheral components attached to expansion bus 116, and manages their internal interaction. As used in this application, the term chipset refers to a group of one or more integrated circuit chips that operate as a hub (or core) for data transfer between a processor and components of a computer system. Say. As shown in FIG. 1, the chipset is coupled to a computer system motherboard. Chipset 110 may be integrated with (eg, soldered onto) motherboard 106. Chipset 110 may be similar to, for example, 820 and 810E manufactured by Intel Corporation of Santa Clara, California. Chipset 110 may be a single integrated circuit, or may be comprised of two or more integrated circuit chips. As shown in FIG. 3, chipset 110 is known as a memory control hub (MCH) 311 that performs what is known as a “northbridge functionality” and a “southbridge functionality”. An input / output control hub (ICH) 312 that performs the operations may be included.
[0008]
The mass storage device 130 may be a disk drive and may be coupled to the chipset 110 via the connection cable 170. Mass storage device 130 also includes 3.5 inch diskettes, 5.25 inch floppy diskettes, ZIP disks (eg, manufactured by Iomega Corporation, Roy, Utah), and Jaz disks (eg, Iomega®, Roy, Utah). Corporation, LS-120 Superdisk (eg, manufactured by Imation Corporation, Oakdale, MN), rewritable digital versatile disks (DVD-RAM), and read / write compact disks (CD-RW). ), An optical storage device, a magneto-optical storage device, a magnetic storage device, a holographic device, or the like. For convenience, this application discloses an embodiment in which the mass storage device is a disk device. An embodiment of a disk drive used in the present invention is shown in FIG.
[0009]
Expansion bus 116 may be a peripheral component interface (PCI) bus, which conforms to the PCI local bus specification in the form of a data bus often found in computer system 100. One or more PCI compliant peripherals, such as a network interface card (NIC) 126, may be connected to the expansion bus 116. Network interface card 126 connects computer system 100 to a local or wide area computer network.
[0010]
An embodiment of the present invention comprises a non-volatile cache comprising a non-volatile memory for caching data stored in a mass storage device. In the embodiment shown in the example of FIG. 1, the non-volatile cache 150 is coupled to the chipset 110. In an embodiment, the chipset and non-volatile memory cache data for mass storage device 130. In a further embodiment, the mass storage device is a disk drive and the non-volatile cache 150 caches data for the disk drive, but in any case the cache is referred to as the disk drive.
[0011]
FIG. 2 is a partial block diagram of a disk drive 230 according to an embodiment of the present invention. Disk drive 230 may be the same as mass storage device 130 of FIG. 1 and is considered mass storage device 130 for purposes discussed below. Disk drive 230 may be an external disk drive or an internal disk drive. Disk drive 230 can store, for example, more than 100 gigabytes of data. In an embodiment, the disk drive is a hard drive. In a further embodiment, disk drive 230 is a Cheetah 18XL disk drive manufactured by Seagate Technology, Inc. of Scotts Valley, California. The disk drive 130 includes a disk controller 210 and a mass storage 220. Disk controller 210 may be an application specific integrated circuit and may include a buffer and program memory 215 and a microprocessor unit (MPU) coupled to ECC logic 218. The buffer and program memory 215 stores a disk drive operation program 219 executed by the MPU 211 and is used as a buffer for storing data written to the mass storage 220 and read from the mass storage 220. You may be. The MPU 211 processes a request from the CPU 102 and writes data to or reads data from the mass storage 220. For example, the MPU 211 determines when a request has been made and converts a logical sector address to a physical sector address. Buffer and program memory 215 is coupled to disk spindle interface logic 213 that interfaces with a host system (eg, computer system 100). Disk controller 210 also includes disk formatting logic to format blocks of data (eg, insert preambles or special characters) that are written to mass storage. As used in this application, "logic" includes hardware logic, such as circuits wired to perform an operation, or program logic, such as firmware, that performs an operation.
[0012]
Mass storage 220 specifically stores computer operating system (OS) code 231, which is transferred to computer memory 104 for execution by processor 102 upon startup. Mass storage 220 also stores a device driver 235 for the disk drive and is transferred to computer memory 104 for execution by processor 102 to effectuate data conversion and communication with disk drive 230. Mass storage 220 stores, among other things, application programs and data accessed by these programs. Mass storage 220 has platters divided into tracks, which may be divided into sectors. For example, a formatted disc may have 1000 tracks per platter. In an embodiment, when the disk controller 210 receives a request to read or write data from outside the disk drive, the request is made in units of logical disk sectors, and the disk controller uses a mapping algorithm. These can be converted to physical disk sectors. A certain number of physical sectors are reserved for spares, the mapping of which is supported by hardware.
[0013]
In operation, when the OS 231 (executed by the processor 102) receives a request for data from a program or other part of the OS, the file system is used to check a file allocation table (FAT), Determine if the data is currently in memory 104, and if not, where on the mass storage the data can be found. If the OS 231 determines that the required data is not in the memory 104 but is stored on the disk drive 230, the OS 231 sends a request for the data to the disk drive 230 via the chipset 110. Ask. Disk controller 210 then receives a request for a disk sector, receives the disk sector from mass storage 220, and sends data for the disk sector to memory 104 via chipset 110. At another time, the OS 231 causes the disk sector to write data from the memory 104 to the disk drive 230, and in each case, the disk controller 210 receives the data and converts it to the disk sector of the mass storage 220. Store it on top.
[0014]
In an embodiment, a sector is the smallest addressable physical storage unit used in disk drive 230, but management information, such as addressing information and validity data, may be accessed by smaller units. Good. In a further embodiment, each disk sector has a data size of 512 bytes. In an embodiment, a block is a group of one or more disk sectors and may include an identification code, an error detection code, and / or an error correction code (ECC) for the block. In embodiments, the OS requests data from a disk drive in units of disk sectors or blocks of sectors (eg, it does not request bytes or words), but in any case, the disk drive Are called block-oriented (eg, block-oriented). In a block-oriented disk drive embodiment, the management information may be accessed in smaller units. ECC is a state-of-the-art error detection and correction protocol that can detect single-bit and multi-bit errors and correct a number of errors without pause. In an embodiment, the disk sectors in a block are located physically adjacent to one another on one disk platter. In a further embodiment, the blocks are operated as a unit by disk drive 230, non-volatile cache 150, and related components. In an embodiment, a block contains 100 disk sectors.
[0015]
In an embodiment of the present invention, data stored on disk drive 230 may be cached in non-volatile cache 150. In this embodiment, non-volatile cache 150 acts as a special memory subsystem, storing copies of frequently used disk drive sectors for faster access. In accordance with this embodiment, when disk sector data is copied from disk drive 230 to memory 104, a copy of the disk sector is stored in non-volatile cache 150. In accordance with this embodiment, if the OS needs data not in memory 104 and determines that the requested data is in non-volatile cache 150, then that data is stored in non-volatile cache 150 (instead of disk drive 230). From the memory 104. In this embodiment, the logical disk drive memory comprises a physical disk drive 230 and a non-volatile cache 150. If the OS determines that data needs to be stored on disk, for example, when a user of a word processing program instructs the program to "store" the current document, the data is stored on a physical disk drive. 230 or stored in the non-volatile cache 150. Similarly, when the OS stores data in the memory 104 and determines that free space needs to be created in the memory 104, the data is written back to the non-volatile cache 150. Because the non-volatile cache 150 is non-volatile, its data stored thereon will not be lost if power is interrupted to the computer system.
[0016]
If the non-volatile cache 150 has a faster access time than the disk drive 230, the user of the non-volatile disk cache 150 can generally increase the speed at which the processor 102 executes the program. For example, if the average access speed of the disk drive 230 is significantly faster than the average access speed to the non-volatile disk cache 150, then users of the non-volatile disk cache 150 may experience a significant increase in overall access speed. Can be. Access to a disk drive in a typical computer system is due to the fact that up to 80% of the user's time is spent waiting for the system to respond, so the user of the non-volatile cache 150 Will get greater customer satisfaction. In addition, because non-volatile cache 150 requires less power per access than disk drive 230, users of non-volatile cache 150 will reduce the amount of power used by the system. In addition, non-volatile cache 150 is more reliable than disk drives, thereby minimizing the time that a computer system crashes or becomes inoperable.
[0017]
In an embodiment, the disk drive device driver 235 contains cache management instructions 237 for the non-volatile cache 150. Such cache management instructions 237 can make decisions about which data to cache, which data to replace, and which data to write back to disk. In addition, cache management instructions 237 also determine when a cache hit has occurred and what data should be prefetched into the cache. For example, cache management instructions 237 may indicate whether a desired disk sector of data should be read from nonvolatile cache 150 (eg, whether the data resides in nonvolatile cache 150) or disk drive 230 to memory 104. Judge. Cache management decisions, such as whether data should be cached in non-volatile cache 150, can be made using known caching algorithms. For example, if the algorithm determines that it is unlikely to use the data again in the near future (eg, the data is for an MP3 audio file), then the data may not need to be cached. . In addition, if data in the non-volatile cache needs to be written back to disk drive 230, the cache management instructions may include, for example, a known least recently used (LRU) algorithm or a random replacement (LRU). An algorithm can be used to determine which data to write back.
[0018]
In an embodiment, the device driver 235 for the disk drive, even though it is a cache management instruction 237, tells the OS 231 to be as if it were a normal device driver (eg, ATAPI.SYS in a WIN98 environment). Appear. In this embodiment, the existence of the non-volatile cache 150 is invisible to the OS 231. In a further embodiment, the cache management instructions are part of OS 231. In another embodiment, cache management is achieved by logic on chipset 110. In yet another embodiment, cache management is achieved by a combination of OSs 231, ie, device drivers for disk drives 235 and / or cache management logic on chipset 110.
[0019]
FIG. 3 shows a partial block diagram of a chipset 310 and a non-volatile disk cache 350 according to an embodiment of the present invention. Chipset 310 and non-volatile disk cache 350 are the same as chipset 110 and non-volatile disk cache 150 of FIG. In this embodiment, non-volatile disk cache 350 caches data for the disk drive and is therefore called a disk cache. The non-volatile disk cache 350 may be any type of memory that can be read and written, and will retain its contents when all power external to that memory is removed or disconnected. . The nonvolatile disk cache 350 is, for example, a flash memory, a battery-backed DRAM, a magnetic RAM, a holographic memory, a ferroelectric RAM, or the like. In an embodiment, non-volatile disk cache 350 may store 500 megabytes of data. In a further embodiment, non-volatile disk cache 350 is block-oriented, with each block containing one or more logical disk sectors responsive to a logical disk sector of the disk drive. In this embodiment, each disk sector and block of non-volatile disk cache 350 is the same size throughout the disk drive. If the non-volatile disk cache 350 is block-oriented, data (other than cache management information) may be read or stored in units of disk sectors or blocks of sectors.
[0020]
In an embodiment, non-volatile disk cache 350 is coupled to chipset 310. In a further embodiment, non-volatile disk cache 350 may be directly attached to chipset 310 (not hardwired) or may be a part thereof. In an embodiment, as shown in FIG. 3, the non-volatile cache 150 is mounted on an integrated circuit in the chipset 310. In this embodiment, ICH 312 includes disk cache interface logic 315 to control access to non-volatile disk cache 350.
[0021]
As described above, chipset 310 may be a single integrated circuit or a group of integrated circuits that controls communication between a processor and associated devices. In an embodiment, chipset 310 comprises a plurality of integrated circuits called a first chipset integrated circuit and a second chipset integrated circuit, the non-volatile disk cache of which is coupled to one of the integrated circuits in the chipset. You. Chipset 310 has a memory control hub (MCH) 311 that performs what is known as a "northbridge function" and an input / output control which performs what is known as a "southbridge functionality". A hub (ICH) 312 may be included. As shown in FIG. 3, the memory control hub 311 and the input / output control hub 312 may be separate chips. In an embodiment, cache interface logic 315 and buffer 318 are part of memory control hub 311 on the chipset. The non-volatile memory may be coupled to the chipset in any manner, but the invention can be used with any type of chipset. In FIG. 3, the non-volatile memory is loaded on top of the input / output control hub 312. The mounted non-volatile memory may cover the entire chip and may be mounted thereon or mounted on a portion of the chip.
[0022]
In some embodiments, the non-volatile cache is a complete associative cache. In another embodiment, the non-volatile cache is a set of associative caches.
[0023]
FIG. 4 is a more detailed partial block diagram of the non-volatile disk cache 350 according to an embodiment of the present invention. Non-volatile disk cache 350 may store multiple disk cache entries 400 and management information. In an embodiment, each of the disk cache entries stored in non-volatile disk cache 350 is the size of a disk sector on mass storage 220. In a further embodiment, each disk cache entry corresponds to a block of one or more disk sectors (eg, 100 disk sectors).
[0024]
The non-volatile disk cache 350 also contains a cache directory table 410 and has table entries for all disk cache entries. Cache directory table 410 is used to determine whether a particular disk sector or block of data exists in non-volatile disk cache 350. In one embodiment, the cache directory table indicates whether data corresponding to a disk drive sector has been stored in the disk cache. The cache directory table 410 has one table entry for each valid disk cache entry, for example, containing a logical disk sector of data. Each table entry in the cache directory table 410 may have a sector address for a logical disk sector stored in the non-volatile disk cache 350. To determine if a disk sector is present in non-volatile disk cache 350, cache directory table 410 is searched, for example, using a known search algorithm. Alternatively, table entries in cache directory table 410 may be categorized using a hashing algorithm. In an embodiment, the presence of a disk sector in non-volatile disk cache 350 is determined by comparing the desired sector address to the sector address stored in the cache directory table entry. Because the cache directory table 410 is stored in non-volatile memory, the state of the cache (what is in the cache) is preserved even if power to the computer system is removed or turned off. In an embodiment having a 2,000,000 disk cache in non-volatile disk cache 350, there are 2,000,000 table entries in cache directory table 410. In this embodiment, each table entry is 4 bytes long, and the cache directory table can use 8 megabytes of non-volatile memory. In an embodiment, the size of the cache directory table can be reduced by including blocks of multiple disk sectors in each disk cache entry (average cache access speed is increased).
[0025]
Non-volatile disk cache 350 may also contain control registers, such as instruction register 401, address register 402, and destination pointer register 403. Instruction register 401 stores instructions received from other devices, such as instructions from processor 102, and searches for disk sectors stored in non-volatile disk cache 350. Address register 402 may store a sector address for a disk sector read from or written to non-volatile disk cache 350. Destination pointer register 403 stores the location of the device, for example, RAM where the disk sectors are written.
[0026]
FIG. 5 is a block diagram of a non-volatile disk cache entry 500 according to an embodiment of the present invention. Non-volatile disk cache entry 500 is one of a plurality of disk cache entries shown in FIG. 4 and may contain data for a disk sector or a block of disk sectors. Non-volatile disk cache entry 500 has a valid field 501, a modification field 502, a sector address 505, a data field 510, and an ECC field 520. Valid field 502 is set to "valid" when cache entry 500 contains valid data, and is set to "invalid" when cache entry 500 does not contain valid data. For example, when the data in cache entry 500 is written back to disk drive 230, valid field 501 is changed from "valid" to "invalid" and the cache entry no longer stores logical disk sectors. Is shown. Modify field 502 is set to "Modify" if the data in cache entry 500 does not match the data in the corresponding disk sector on disk drive 230. For example, if a disk sector of data is written back from memory 104 to non-volatile cache 150 and that disk sector has data modified while in memory 104, then that data sector is The fix field for the disk cache entry will be set to "modify". The modification field 502 may be referred to as a "dirty bit." Sector address 505 has the logical disk sector address (or address if the entry has more than one sector) for the data stored in the cache entry, and may be referred to as "sector identification". Good. In an embodiment, the sector address 505 includes a starting address for the blocks, each block having a known fixed size. Data field 510 stores data for a cache entry. ECC field 520 stores an error correction code for the cache entry. In an embodiment, each block is associated with an error correction code.
[0027]
In operation, processor 102 may determine that a block of data is not in memory 104 and may signal chipset 110 to determine if the data is in a non-volatile disk cache. Disk cache interface logic 315 may be used based on cache directory table 410 to determine that the data block is in a non-volatile disk cache. To read a block of data from non-volatile disk cache 350, processor 102 sends a “read” instruction to instruction register 401, the disk sector address for that block to address register 402, and Can be sent to the destination pointer register 403. Based on this instruction, disk interface logic 315 writes data found in the corresponding cache entry (eg, data in data field 510 of cache entry 500) to buffer 318. Thereafter, the data in the buffer is transferred to the address in memory 104 specified by destination pointer register 403. In another embodiment, buffer 318 may not be used due to the speed of the memory. In an embodiment, disk interface logic 315 checks for error correction codes associated with data stored in non-volatile memory (eg, ECC code 520) and transfers data from non-volatile disk cache memory to buffer 318. An error that occurs when reading data can be corrected. In an embodiment, the non-volatile memory is block-oriented, and the chipset checks the error correction code for each data block read from the non-volatile memory.
[0028]
In embodiments, reading from non-volatile disk cache memory is a destructive read, and the act of reading causes data stored in that entry to be lost or altered unexpectedly. For example, this may occur if the non-volatile disk cache is implemented in core logic. In this embodiment, disk interface logic 315 may support write-back for destructive reads. That is, the read data is written back by the disk interface logic 315, thereby returning the data in the entry to its previous state.
[0029]
Alternatively, if the data desired by the processor 102 is not in the non-volatile disk cache, a request is sent to the disk drive 230 for the required data block. Disk drive 130 writes the data block to memory 104. In addition, the same block of data can be written to the non-volatile disk cache by writing the block to buffer 318 and the appropriate instruction to instruction register 401. Cache interface logic 315 then creates a new disk cache entry 500 and copies the block to the new disk cache entry. In addition, cache interface logic 315 creates a new entry in cache directory table 410 corresponding to the new disk cache entry. The valid field 501 for the new disk cache entry will be set to "valid" and the modified field will be set to "unmodified". In an embodiment, the blocks in the non-volatile disk cache have the same size and structure as the disk drive, so that the blocks are copied to the disk cache without modification or with only minor modifications. Once the data blocks are stored in the non-volatile disk cache, the processor 102 can read the data blocks from the non-volatile disk cache instead of from the disk drive.
[0030]
FIG. 6 is a flowchart of a method for obtaining data associated with a sector in a disk drive according to an embodiment of the present invention. For purposes of clarity, the illustrated method is described with reference to the exemplary embodiments described above. Processor 102 needs the item of data and determines that the data is stored at or associated with a location in disk drive (601). The latest data version associated with the location in the disk drive may be stored in RAM or the disk cache. If the data is not stored in RAM, the processor checks the cache directory table and determines whether the data associated with the disk drive location is stored in non-volatile disk cache (602). Judge. If the data is stored in the non-volatile disk cache (603), then the data is read from the non-volatile disk cache (604). When the error correction code is read from the non-volatile disk cache, it is then checked against the data and the error is corrected (605). The data is then written to RAM (606). If the data is not stored in the non-volatile disk cache (603), then the requested data may be read from the disk drive (607). The data creates a new entry in the non-volatile disk cache and is then written to RAM and the non-volatile disk cache. Next, a new entry in the cache directory table is created 609 corresponding to the new entry in the non-volatile disk cache.
[0031]
FIG. 7 is a partial block diagram of a computer system having a nonvolatile cache expansion card according to another embodiment of the present invention. In this embodiment, the non-volatile disk cache is housed on a PCI bus expansion card. FIG. 7 illustrates a computer system 700 similar to the computer system 100 shown in FIG. FIG. 7 shows a motherboard 706 accommodating a CPU 702, a RAM 704, a chipset 710, and a disk drive connection cable 770, which are the same as the CPU 102, the memory 104, the chipset 110, and the connection cable 170 of FIG. Computer system 700 also houses disk drive 730, which is the same as mass storage device 130 of FIG. However, unlike FIG. 1, in the embodiment of FIG. 7, the non-volatile cache is not coupled to chipset 710.
[0032]
In this embodiment of the invention, computer system 700 includes non-volatile cache expansion board 750 and is coupled to PCI bus 716. A network interface card 726 is also coupled to PCI bus 716. PCI bus 716 and network interface card 726 are the same as expansion bus 116 and network interface card 126 of FIG. In another embodiment, non-volatile cache expansion board 750 is coupled to another expansion bus in computer 700. The non-volatile cache expansion board 750 is inserted into or pulled out of the bus of the computer 700. Non-volatile cache expansion board 750 contains non-volatile memory similar to the non-volatile memory in non-volatile disk cache 350. Expansion board 750 may also include disk cache interface logic. Computer 700 caches data for disk drive 730 in the same manner as described above in connection with computer system 100. When the operating system in computer 700 needs to obtain data stored on disk drive 730, a determination is made that the data is cached on non-volatile cache expansion board 750. If so, the data may then be written to RAM 704 from non-volatile expansion board 750 instead of disk drive 730. Thus, this embodiment is similar to the embodiment of FIG. 1 in the manner in which data is cached for a disk drive, but in this embodiment, the cache is not coupled to a chipset as in FIG. Rather, it is part of an expansion card.
[0033]
FIG. 8 is a partial block diagram of a disk drive having a non-volatile disk cache according to an embodiment of the present invention. FIG. 8 shows a disk drive 830 similar to the disk drive 230 shown in FIG. Like the disk drive 230, the disk drive 830 has a disk controller 810 and a disk spindle 820. The disk drive 830 also has a non-volatile cache 850. Mass storage 220 can store an operating system 831 and a disk drive device driver 835. However, disk spindle 820 does not store cache management instructions. The disk controller 810 has an MPU 811, buffer and program memory 815, interface logic 813, and ECC logic 818, which are the MPU 211, buffer and program memory 215, disk spindle interface logic 213, and FIG. Similar to ECC logic 218. In addition, disk controller 810 has cache interface logic 815 and is coupled to non-volatile cache 850. The non-volatile disk cache 850 is similar to the non-volatile cache 350 of FIG. 3, and the cache interface logic 815 is similar to the disk cache interface logic 315 shown in FIG.
[0034]
Disk drive 830 may be used in a computer system such as that shown in FIGS. 1 and 7, except that nonvolatile cache 850 is the only nonvolatile disk cache in the computer system. . The embodiment shown in FIG. 8 operates similarly to the embodiment of FIGS. 1 and 7 in caching data for a disk drive in non-volatile memory. However, in this embodiment, the disk cache may be part of a disk drive. In a further embodiment, the disk cache management function is accomplished by program 819. In this embodiment, the disk cache is managed by the disk controller 810 and may not be visible to the rest of the computer system.
[0035]
FIG. 9 illustrates a method of storing data in a non-volatile memory according to an embodiment of the present invention. An instruction to store data in the non-volatile memory is received (901). For example, a user editing a document with a word processing program sends instructions to the program to "store" the document. As another example, the program may decide at its own discretion to store a backup copy of the document to be edited, for example, based on a timer. As another example, portions of the operating system may generate instructions for storing data in a free space on a disk drive or other non-volatile memory, eg, RAM. A determination is made whether the data should be stored in a non-volatile cache (902). Such a determination is made using a known caching algorithm. If the data does not seem to be used in the near future, the data may not need to be cached. In addition, if the non-volatile cache expansion board is not coupled to the expansion bus, a determination may be made not to store data in the non-volatile cache. When a determination is made to store the data in the non-volatile cache, the data is written to the non-volatile cache (903). In one embodiment, the process of writing data to the non-volatile cache includes updating a cache directory table in non-volatile memory on the non-volatile cache. If a decision is made not to write the data into the non-volatile cache, the data is written to the disk drive (905).
[0036]
Embodiments of the present invention relate to a non-volatile disk cache for caching data for a disk storage device. Several embodiments of the present invention have been particularly shown and described herein. However, modifications and variations of the present invention are intended to be within the scope of the appended claims and within the intended scope of the invention without departing from the above description and without departing from the spirit thereof. For example, although some types of non-volatile memory are discussed for use as caches, any type of non-volatile memory can be used. In another embodiment, the present invention discloses a data structure for a non-volatile disk cache and for a disk cache entry, wherein the cache and the cache entry are implemented using any configuration of the data structure. Is done. Further, the disk cache may be implemented as part of a chipset, expansion card, part of a disk drive or another part of a computer system, such as in a disk drive connection cable. In addition, while the embodiments described above discuss using a non-volatile cache to cache data for a disk drive, the non-volatile cache may also be used to cache data for other mass storage devices. May be used. Thus, in embodiments such as those shown in FIGS. 3, 4, and 5, for convenience, caches relating to caches as disk drives will be discussed (eg, disk caches), but the disclosed apparatus and method may be used in other embodiments. It may also be used to cache data for large-capacity storage devices of the type.
[Brief description of the drawings]
FIG.
FIG. 4 is a partial block diagram of a computer system having a non-volatile cache according to an embodiment of the present invention.
FIG. 2
FIG. 2 is a partial block diagram of a disk drive according to an embodiment of the present invention.
FIG. 3
FIG. 4 is a partial block diagram of a chipset and a non-volatile disk cache according to an embodiment of the present invention.
FIG. 4
FIG. 4 is a partial block diagram of a non-volatile disk cache according to an embodiment of the present invention.
FIG. 5
FIG. 4 is a partial block diagram of an entry in a non-volatile disk cache according to an embodiment of the present invention.
FIG. 6
5 is a flowchart of a method for obtaining data associated with a sector in a nonvolatile disk drive according to an embodiment of the present invention.
FIG. 7
FIG. 4 is a partial block diagram of a computer system having a non-volatile disk cache expansion card according to an embodiment of the present invention.
FIG. 8
FIG. 4 is a partial block diagram of a disk drive having a non-volatile disk cache according to an embodiment of the present invention.
FIG. 9
4 illustrates a method of storing data in a nonvolatile memory according to an embodiment of the present invention.

Claims (30)

大容量ストレージ装置に格納されるデータをキャッシュする不揮発性メモリからなる不揮発性キャッシュ。A non-volatile cache comprising a non-volatile memory for caching data stored in a mass storage device. 前記大容量ストレージ装置は、ディスク・ドライブであることを特徴とする請求項1記載の不揮発性キャッシュ。2. The non-volatile cache according to claim 1, wherein said mass storage device is a disk drive. 前記不揮発性キャッシュは、ブロック・オリエンテッドであることを特徴とする請求項1記載の不揮発性キャッシュ。2. The non-volatile cache according to claim 1, wherein the non-volatile cache is block-oriented. 前記不揮発性キャッシュは、チップセットに結合されることを特徴とする請求項1記載の不揮発性キャッシュ。The non-volatile cache of claim 1, wherein the non-volatile cache is coupled to a chipset. ブロック・オリエンテッドのメモリ装置と、
前記ブロック・オリエンテッドのメモリ装置に結合されたディスク・キャッシュ・インターフェイス・ロジックと、
からなることを特徴とするディスク・キャッシュ。
A block-oriented memory device;
Disk cache interface logic coupled to the block-oriented memory device;
A disk cache, comprising:
前記メモリ装置は、不揮発性メモリ装置であることをを特徴とする請求項5記載のディスク・キャッシュ。The disk cache according to claim 5, wherein the memory device is a non-volatile memory device. 前記メモリ装置は、キャッシュ・ディレクトリ・テーブルを格納し、前記キャッシュ・ディレクトリ・テーブルはディスク・ドライブ・セクタに対応するデータが前記ディスク・キャッシュに格納されているかどうかを示すことを特徴とする請求項6記載のディスク・キャッシュ。The memory device stores a cache directory table, wherein the cache directory table indicates whether data corresponding to a disk drive sector is stored in the disk cache. 6. The disk cache of claim 6. 前記ディスク・キャッシュ・インターフェイス・ロジックは、前記不揮発性メモリ装置から読まれたデータに対するエラー訂正コードをチェックするすことを特徴とする請求項7記載のディスク・キャッシュ。The disk cache of claim 7, wherein the disk cache interface logic checks an error correction code for data read from the non-volatile memory device. データをキャッシュする装置において、前記装置は、不揮発性キャッシュ・メモリに結合されたチップセットを含むことを特徴とする装置。An apparatus for caching data, wherein the apparatus includes a chipset coupled to a non-volatile cache memory. 前記チップセットは、プロセッサと関連する装置との間の通信を制御するロジックを含むこと特徴とする請求項9記載の装置。The device of claim 9, wherein the chipset includes logic for controlling communication between a processor and an associated device. 前記不揮発性キャッシュ・メモリは、ディスク・キャッシュ・メモリであること特徴とする請求項9記載の装置。The apparatus of claim 9, wherein the non-volatile cache memory is a disk cache memory. 前記不揮発性キャッシュ・メモリは、前記チップセットに直接接続されること特徴とする請求項11記載の装置。The apparatus of claim 11, wherein the non-volatile cache memory is directly connected to the chipset. 前記不揮発性キャッシュ・メモリは、ブロック・オリエンテッドであることを特徴とする請求項12記載の装置。The apparatus of claim 12, wherein the non-volatile cache memory is block oriented. 前記不揮発性キャッシュ・メモリは、前記チップセットの一部であることを特徴とする請求項11記載の装置。The apparatus of claim 11, wherein the non-volatile cache memory is part of the chipset. 前記不揮発性キャッシュ・メモリは、前記チップセット上に積載されることを特徴とする請求項14記載の装置。The apparatus of claim 14, wherein the non-volatile cache memory is loaded on the chipset. 前記チップセットは、前記不揮発性キャッシュ・メモリへのアクセスを制御するキャッシュ・インターフェイス・ロジックを含むことを特徴とする請求項11記載の装置。The apparatus of claim 11, wherein the chipset includes cache interface logic for controlling access to the non-volatile cache memory. 前記キャッシュ・インターフェイス・ロジックは、前記チップセット上のメモリ制御ハブの一部であることを特徴とする請求項16記載の装置。The apparatus of claim 16, wherein the cache interface logic is part of a memory control hub on the chipset. 前記チップセットは、前記不揮発性キャッシュ・メモリに格納されたデータと関連するエラー訂正コードをチェックするためのロジックをさらに含むことを特徴とする請求項16記載の装置。The apparatus of claim 16, wherein the chipset further comprises logic for checking an error correction code associated with data stored in the non-volatile cache memory. 前記不揮発性メモリは、ブロック・オリエンテッドであり、前記装置は前記不揮発性メモリから読まれた各データ・ブロックのためのエラー訂正コードをチェックするロジックを含むことを特徴とする請求項18記載の装置。19. The non-volatile memory of claim 18, wherein the non-volatile memory is block-oriented and the apparatus includes logic for checking an error correction code for each block of data read from the non-volatile memory. apparatus. プロセッサと、
前記プロセッサに結合されたチップセットと、
前記チップセットに結合されたディスク・ストレージ装置と、
前記チップセットに結合された不揮発性ディスク・キャッシュ・メモリと、
から構成されることを特徴とするコンピュータ。
A processor,
A chipset coupled to the processor;
A disk storage device coupled to the chipset;
A non-volatile disk cache memory coupled to the chipset;
A computer comprising:
前記ディスク・ストレージ装置上のデータを格納し、前記ディスク・ストレージ装置からデータを読むためのデバイス・ドライバ命令をさらに含み、前記デバイス・ドライバ命令は前記不揮発性ディスク・キャッシュ・メモリ中のデータのキャッシュを管理するキャッシュ管理命令を含むことを特徴とする請求項20記載のコンピュータ。Further comprising device driver instructions for storing data on the disk storage device and reading data from the disk storage device, wherein the device driver instructions store data in the non-volatile disk cache memory. 21. The computer according to claim 20, further comprising a cache management instruction for managing a cache. ディスク・メモリのデバイス・ドライバ命令は、前記不揮発性ディスク・キャッシュ・メモリに格納されたキャッシュ・ディレクトリ・テーブルをチェックすることにより、前記データが前記不揮発性ディスク・キャッシュ・メモリ中に存在するかどうかを判断する命令を含むことむことを特徴とする請求項21記載のコンピュータ。A disk memory device driver instruction checks whether the data is present in the nonvolatile disk cache memory by checking a cache directory table stored in the nonvolatile disk cache memory. 22. The computer according to claim 21, further comprising an instruction for determining 前記不揮発性ディスク・キャッシュは、ブロック・オリエンテッドであることを特徴とする請求項22記載のコンピュータ。The computer of claim 22, wherein the non-volatile disk cache is block-oriented. 前記チップセットは、前記不揮発性ディスク・キャッシュへのアクセスを制御するディスク・キャッシュ・インターフェイス・ロジックを含み、
前記ディスク・キャッシュ・インターフェイス・ロジックは、前記不揮発性ディスク・キャッシュから読まれたデータ・ブロックに関連するエラー訂正コードをチェックする、
ことを特徴とする請求項23記載のコンピュータ。
The chipset includes disk cache interface logic for controlling access to the non-volatile disk cache;
The disk cache interface logic checks an error correction code associated with a block of data read from the non-volatile disk cache;
The computer of claim 23, wherein:
ディスク・メモリ中のロケーションに関連するデータを獲得する方法において、
ディスク・メモリ中のロケーションに関連するデータが不揮発性キャッシュ・メモリに格納されているかどうかを判断する段階と、
前記データが前記不揮発性キャッシュ・メモリに格納されている場合、前記ロケーションに関連するデータを前記不揮発性キャッシュ・メモリから読み取る段階と、
から構成されることを特徴とする方法。
In a method for obtaining data associated with a location in disk memory,
Determining whether data associated with the location in disk memory is stored in non-volatile cache memory;
Reading the data associated with the location from the non-volatile cache memory if the data is stored in the non-volatile cache memory;
A method characterized by comprising:
前記データが前記不揮発性キャッシュ・メモリに格納されていない場合、前記ロケーションに関連するデータを前記ディスク・メモリから読み取る段階をさらに含むことを特徴とする請求項25記載の方法。The method of claim 25, further comprising reading data associated with the location from the disk memory if the data is not stored in the non-volatile cache memory. 前記判断する段階は、前記不揮発性メモリ中に格納されたキャッシュ・ディレクトリ・テーブルをチェックする段階を含むことを特徴とする請求項26記載の方法。The method of claim 26, wherein said determining comprises checking a cache directory table stored in said non-volatile memory. 前記不揮発性キャッシュ・メモリは、チップセットに結合され、前記不揮発性キャッシュ・メモリからデータを読み取る前記段階は、前記チップセット内に位置するキャッシュ・インターフェイス・ロジックへ命令を送る段階を含み、前記命令は前記不揮発性メモリからのデータの読み取りをRAMへ直接指図することを特徴とする請求項27記載の方法。The non-volatile cache memory is coupled to a chipset, wherein reading data from the non-volatile cache memory includes sending an instruction to cache interface logic located within the chipset, 28. The method of claim 27, wherein directing reading of data from said non-volatile memory directly to RAM. 前記不揮発性メモリはブロック・オリエンテッドであり、ここに前記不揮発性メモリからデータを読み取る段階は、前記不揮発性キャッシュ・メモリから読まれる各ブロックに関連するエラー訂正コードをチェックする段階をさらに含むことを特徴とする請求項28記載の方法。The non-volatile memory is block-oriented, wherein reading data from the non-volatile memory further comprises checking an error correction code associated with each block read from the non-volatile cache memory. 29. The method of claim 28, wherein: 前記ディスク・メモリから前記ロケーションに関連するデータを読み取る前記段階は、前記データをRAMへ格納するとともに前記データを前記不揮発性キャッシュ・メモリへ格納することを特徴とする請求項29記載の方法。30. The method of claim 29, wherein the step of reading data associated with the location from the disk memory stores the data in RAM and stores the data in the non-volatile cache memory.
JP2002506434A 2000-06-23 2001-06-01 Non-volatile cache Expired - Fee Related JP3951918B2 (en)

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 true JP2004506256A (en) 2004-02-26
JP2004506256A5 JP2004506256A5 (en) 2005-12-22
JP3951918B2 JP3951918B2 (en) 2007-08-01

Family

ID=24409613

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002506434A Expired - Fee Related JP3951918B2 (en) 2000-06-23 2001-06-01 Non-volatile cache

Country Status (6)

Country Link
JP (1) JP3951918B2 (en)
CN (1) CN1295623C (en)
AU (1) AU2001275147A1 (en)
DE (1) DE10196380T1 (en)
GB (1) GB2379538B (en)
WO (1) WO2002001365A2 (en)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006004387A (en) * 2004-06-21 2006-01-05 Ricoh Co Ltd Information processor and information processing method
JP2007128136A (en) * 2005-11-01 2007-05-24 Giga-Byte Technology Co Ltd Pseudo hard disk device and its method
JP2007265600A (en) * 2006-03-27 2007-10-11 Toshiba Corp Disk drive write method
WO2009107213A1 (en) 2008-02-28 2009-09-03 富士通株式会社 Storage device, storage controller, data transfer integrated circuit, and method of controlling storage
JP2010049701A (en) * 2004-02-27 2010-03-04 Intel Corp Interface for block addressable mass storage system
JP2010055531A (en) * 2008-08-29 2010-03-11 Fujitsu Ltd Data processor
JP2010512568A (en) * 2006-12-06 2010-04-22 フリン,デイビッド Apparatus, system and method for solid state storage as cache for high capacity non-volatile storage
JP2011238261A (en) * 2004-10-27 2011-11-24 Sony Corp Storage device and information processing system
US8479045B2 (en) 2008-08-06 2013-07-02 Fujitsu Limited Controller for disk array device, data transfer device, and method of power recovery process
US8554982B2 (en) 2004-10-27 2013-10-08 Sony Corporation Storage device and information processing system
US8775905B2 (en) 2011-01-25 2014-07-08 Sony Corporation Memory system and operation method thereof
US8832355B2 (en) 2008-02-28 2014-09-09 Fujitsu Limited Storage device, storage controlling device, and storage controlling method
JP2014167798A (en) * 2014-03-24 2014-09-11 ▲ホア▼▲ウェイ▼技術有限公司 Method for controlling buffer mapping and buffer system

Families Citing this family (69)

* Cited by examiner, † Cited by third party
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
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
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
US7558913B2 (en) 2006-06-20 2009-07-07 Microsoft Corporation Atomic commit of cache transfer with staging area
KR101128234B1 (en) * 2006-08-23 2012-03-23 엘지전자 주식회사 Apparatus and method for controlling access of memory
KR20080044505A (en) * 2006-11-16 2008-05-21 삼성전자주식회사 Apparatus and method for managing data
US9495241B2 (en) 2006-12-06 2016-11-15 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive data storage
US9104599B2 (en) 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
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
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
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
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 (en) 2009-02-13 2011-03-22 (주)인디링스 Storage system using high speed storage divece as cache
US8195878B2 (en) 2009-02-19 2012-06-05 Pmc-Sierra, Inc. Hard disk drive with attached solid state drive cache
EP2476055B1 (en) 2009-09-08 2020-01-22 SanDisk Technologies LLC Apparatus, system, and method for caching data on a solid-state storage device
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
US8601222B2 (en) 2010-05-13 2013-12-03 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
CN102136274B (en) * 2009-12-30 2013-03-27 爱国者电子科技有限公司 Mobile hard disk with two storage media
WO2012016089A2 (en) 2010-07-28 2012-02-02 Fusion-Io, Inc. 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
WO2012082792A2 (en) 2010-12-13 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for auto-commit memory
US9208071B2 (en) 2010-12-13 2015-12-08 SanDisk Technologies, Inc. Apparatus, system, and method for accessing memory
US9047178B2 (en) 2010-12-13 2015-06-02 SanDisk Technologies, Inc. Auto-commit memory synchronization
US9218278B2 (en) 2010-12-13 2015-12-22 SanDisk Technologies, Inc. Auto-commit memory
US10817502B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent memory management
US10817421B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent data structures
WO2012083308A2 (en) 2010-12-17 2012-06-21 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
US8966184B2 (en) 2011-01-31 2015-02-24 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
US9141527B2 (en) 2011-02-25 2015-09-22 Intelligent Intellectual Property Holdings 2 Llc Managing cache pools
WO2012129191A2 (en) 2011-03-18 2012-09-27 Fusion-Io, Inc. Logical interfaces for contextual storage
US9563555B2 (en) 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
CN102521147B (en) * 2011-11-17 2015-03-25 曙光信息产业(北京)有限公司 Management method by using rapid non-volatile medium as cache
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
US10102117B2 (en) 2012-01-12 2018-10-16 Sandisk Technologies Llc Systems and methods for cache and storage device coordination
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
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
US10073656B2 (en) 2012-01-27 2018-09-11 Sandisk Technologies Llc Systems and methods for storage virtualization
US10359972B2 (en) 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
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 (en) * 2013-09-05 2017-07-28 华为技术有限公司 Write the method and device of cache memory
US20150089118A1 (en) * 2013-09-20 2015-03-26 Sandisk Technologies Inc. Methods, systems, and computer readable media for partition and cache restore
US10019352B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for adaptive reserve storage
US10019320B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for distributed atomic storage operations
US10073630B2 (en) 2013-11-08 2018-09-11 Sandisk Technologies Llc Systems and methods for log coordination
US9946607B2 (en) 2015-03-04 2018-04-17 Sandisk Technologies Llc Systems and methods for storage error management
CN106528001B (en) * 2016-12-05 2019-08-23 北京航空航天大学 A kind of caching system based on nonvolatile memory and software RAID
CN111857587B (en) * 2020-07-15 2022-06-17 济南浪潮数据技术有限公司 Hit detection method based on magnetic track address in cache device of storage system
CN116583827A (en) * 2021-12-08 2023-08-11 华为技术有限公司 Data access method, device, disk controller, disk and data storage system

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6362056A (en) * 1986-09-02 1988-03-18 Nec Corp Disk cache device
JPH0273439A (en) * 1988-09-09 1990-03-13 Nec Corp Cache controller for auxiliary memory
JPH05225055A (en) * 1992-02-17 1993-09-03 Sharp Corp Information processor
JPH05250274A (en) * 1992-03-04 1993-09-28 Mitsubishi Electric Corp Disk cache device
JPH06505584A (en) * 1991-03-05 1994-06-23 ザイテル コーポレーション cache memory
JPH07225714A (en) * 1994-02-09 1995-08-22 Ballard Synergy Corp Cache device and method for storing data received from plurality of optical disks into nonvolatile cache memory
US5519831A (en) * 1991-06-12 1996-05-21 Intel Corporation Non-volatile disk cache
JPH1040170A (en) * 1996-07-26 1998-02-13 Toshiba Corp Disk cache system
JPH10154101A (en) * 1996-11-26 1998-06-09 Toshiba Corp Data storage system and cache controlling method applying to the system
US5963721A (en) * 1995-12-29 1999-10-05 Texas Instruments Incorporated Microprocessor system with capability for asynchronous bus transactions
JPH11511872A (en) * 1994-11-22 1999-10-12 モノリシック・システム・テクノロジー・インコーポレイテッド Method and configuration using a DRAM array as a second level cache memory
JP2000122968A (en) * 1998-10-15 2000-04-28 Nec Corp Input/output cache memory and its control method
JP2003523013A (en) * 2000-02-10 2003-07-29 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド Computer system including a memory access controller for using storage resources that are not system memory during system boot time

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US5584007A (en) * 1994-02-09 1996-12-10 Ballard Synergy Corporation Apparatus and method for discriminating among data to be stored in cache

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6362056A (en) * 1986-09-02 1988-03-18 Nec Corp Disk cache device
JPH0273439A (en) * 1988-09-09 1990-03-13 Nec Corp Cache controller for auxiliary memory
JPH06505584A (en) * 1991-03-05 1994-06-23 ザイテル コーポレーション cache memory
US5519831A (en) * 1991-06-12 1996-05-21 Intel Corporation Non-volatile disk cache
JPH05225055A (en) * 1992-02-17 1993-09-03 Sharp Corp Information processor
JPH05250274A (en) * 1992-03-04 1993-09-28 Mitsubishi Electric Corp Disk cache device
JPH07225714A (en) * 1994-02-09 1995-08-22 Ballard Synergy Corp Cache device and method for storing data received from plurality of optical disks into nonvolatile cache memory
JPH11511872A (en) * 1994-11-22 1999-10-12 モノリシック・システム・テクノロジー・インコーポレイテッド Method and configuration using a DRAM array as a second level cache memory
US5963721A (en) * 1995-12-29 1999-10-05 Texas Instruments Incorporated Microprocessor system with capability for asynchronous bus transactions
JPH1040170A (en) * 1996-07-26 1998-02-13 Toshiba Corp Disk cache system
JPH10154101A (en) * 1996-11-26 1998-06-09 Toshiba Corp Data storage system and cache controlling method applying to the system
JP2000122968A (en) * 1998-10-15 2000-04-28 Nec Corp Input/output cache memory and its control method
JP2003523013A (en) * 2000-02-10 2003-07-29 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド Computer system including a memory access controller for using storage resources that are not system memory during system boot time

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
RAMAKRISHNA KAREDLA、外2名: "HDDの性能を改善するためのキャッシュ方式を提案", 日経エレクトロニクス, CSND199801076002, 12 September 1994 (1994-09-12), JP, pages 107 - 121, ISSN: 0000833314 *
TORU TANZAWA, ET AL.: "A Compact On-Chip ECC for Low Cost Flash Memories", IEEE JOURNAL OF SOLID-STATE CIRCUITS, vol. 32, no. 5, JPN3006023186, May 1997 (1997-05-01), pages 662 - 669, XP011060480, ISSN: 0000833315 *
TORU TANZAWA, ET AL.: "A Compact On-Chip ECC for Low Cost Flash Memories", IEEE JOURNAL OF SOLID-STATE CIRCUITS, vol. 32, no. 5, JPN4006023186, May 1997 (1997-05-01), pages 662 - 669, XP011060480, ISSN: 0000795104 *

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010049701A (en) * 2004-02-27 2010-03-04 Intel Corp Interface for block addressable mass storage system
JP2006004387A (en) * 2004-06-21 2006-01-05 Ricoh Co Ltd Information processor and information processing method
JP4664011B2 (en) * 2004-06-21 2011-04-06 株式会社リコー Information processing apparatus and information processing method
JP2011238261A (en) * 2004-10-27 2011-11-24 Sony Corp Storage device and information processing system
US8554982B2 (en) 2004-10-27 2013-10-08 Sony Corporation Storage device and information processing system
US9317424B2 (en) 2004-10-27 2016-04-19 Sony Corporation Storage device and information processing system
US8904096B2 (en) 2004-10-27 2014-12-02 Sony Corporation Storage device and information processing system
JP2007128136A (en) * 2005-11-01 2007-05-24 Giga-Byte Technology Co Ltd Pseudo hard disk device and its method
JP2007265600A (en) * 2006-03-27 2007-10-11 Toshiba Corp Disk drive write method
JP2010512568A (en) * 2006-12-06 2010-04-22 フリン,デイビッド Apparatus, system and method for solid state storage as cache for high capacity non-volatile storage
EP2595062A2 (en) 2008-02-28 2013-05-22 Fujitsu Limited Storage device, storage control device, data transfer integrated circuit, and storage control method
WO2009107213A1 (en) 2008-02-28 2009-09-03 富士通株式会社 Storage device, storage controller, data transfer integrated circuit, and method of controlling storage
US8832355B2 (en) 2008-02-28 2014-09-09 Fujitsu Limited Storage device, storage controlling device, and storage controlling method
US8448047B2 (en) 2008-02-28 2013-05-21 Fujitsu Limited Storage device, storage control device, data transfer intergrated circuit, and storage control method
US8479045B2 (en) 2008-08-06 2013-07-02 Fujitsu Limited Controller for disk array device, data transfer device, and method of power recovery process
JP2010055531A (en) * 2008-08-29 2010-03-11 Fujitsu Ltd Data processor
US8775905B2 (en) 2011-01-25 2014-07-08 Sony Corporation Memory system and operation method thereof
JP2014167798A (en) * 2014-03-24 2014-09-11 ▲ホア▼▲ウェイ▼技術有限公司 Method for controlling buffer mapping and buffer system

Also Published As

Publication number Publication date
AU2001275147A1 (en) 2002-01-08
CN1527973A (en) 2004-09-08
CN1295623C (en) 2007-01-17
GB2379538A (en) 2003-03-12
WO2002001365A3 (en) 2002-04-11
DE10196380T1 (en) 2003-10-16
GB2379538B (en) 2005-01-12
WO2002001365A2 (en) 2002-01-03
GB0228871D0 (en) 2003-01-15
JP3951918B2 (en) 2007-08-01

Similar Documents

Publication Publication Date Title
JP3951918B2 (en) Non-volatile cache
US6941423B2 (en) Non-volatile mass storage cache coherency apparatus
US7111134B2 (en) Subsystem and subsystem processing method
US5530673A (en) Flash memory control method and information processing system therewith
US6078520A (en) Flash memory control method and information processing system therewith
US9235526B2 (en) Non-volatile hard disk drive cache system and method
US5353430A (en) Method of operating a cache system including determining an elapsed time or amount of data written to cache prior to writing to main storage
US6961815B2 (en) Multiple disk data storage system for reducing power consumption
US7613870B2 (en) Efficient memory usage in systems including volatile and high-density memories
US7979631B2 (en) Method of prefetching data in hard disk drive, recording medium including program to execute the method, and apparatus to perform the method
US20090150588A1 (en) Hard Disk Drive Cache Memory and Playback Device
WO2002001364A2 (en) Non-volatile cache integrated with mass storage device
US20090049255A1 (en) System And Method To Reduce Disk Access Time During Predictable Loading Sequences
US20030005219A1 (en) Partitioning cache metadata state
US8370587B2 (en) Memory system storing updated status information and updated address translation information and managing method therefor
JPH0775011B2 (en) Record update method using predictive track table
JPH037978B2 (en)
JP3568110B2 (en) Cache memory control method, computer system, hard disk drive, and hard disk controller
JP2006099802A (en) Storage controller, and control method for cache memory
JP5025670B2 (en) Information processing apparatus and data storage apparatus
GB2403834A (en) Non-volatile ferro-electric RAM cache
JPH0511933A (en) Hard disk emulator and fixed cache area allocating method for the emulator
JPH0519981A (en) Data write normal end judging method for optical disk device
JP4724289B2 (en) Data processing apparatus and memory access control method for data processing apparatus
JP6027479B2 (en) Semiconductor memory device

Legal Events

Date Code Title Description
A521 Request for written amendment filed

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 Request for written amendment filed

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