(57)【要約】不揮発性メモリとホストとの間に置かれるバッファキャッシュは、異なる処理について動作するセグメントに区分されてもよい。キャッシュポリシーは、ライトスルー、書き込み、および先読みを含む。ライトスルーとライトバックポリシーは、速度を改善する。先読みキャッシュは、バッファキャッシュと不揮発性メモリとの間におけるバスのより効率的な使用を可能とする。動作（セッション）コマンドは、電力損失に対して保証することにより揮発性メモリにおけるデータ保持を可能とする。
2007528079.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性の非回転記憶媒体にデータを記憶する取り外し可能なメモリカードにおいて、
ホストインターフェイスと、
不揮発性メモリアレイと、
前記ホストインターフェイスと前記不揮発性メモリアレイと通信するバッファキャッシュであって、前記バッファキャッシュがデータを記憶する少なくとも第１の部分と第２の部分を有し、前記第１の部分が第１のポリシーを有し、前記第２の部分が第２のポリシーを有し、前記第１のポリシーおよび前記第２のポリシーが別個に選択されるバッファキャッシュと、
を備える取り外し可能なメモリカード。
【請求項２】
前記第１のポリシーは、ライトスルーキャッシュポリシーである請求項１記載の取り外し可能なメモリカード。
【請求項３】
前記第１のポリシーは、ライトバックキャッシュポリシーである請求項１記載の取り外し可能なメモリカード。
【請求項４】
前記不揮発性メモリアレイに記憶される第１のグループのデータが要求されるとき、前記第１のグループのデータと要求されない第２のグループのデータが前記不揮発性メモリアレイから読み出され、前記第２のグループのデータが前記第１の部分に記憶されるように、前記第１の部分が読み出しキャッシュとして機能する請求項１記載の取り外し可能なメモリカード。
【請求項５】
前記第１の部分は、データストリームの部分ではない中央処理装置によって使用されるデータを記憶するために使用される請求項１記載の取り外し可能なメモリカード。
【請求項６】
前記第１の部分と前記第２の部分は、セグメントキャッシュのセグメントである請求項１記載の取り外し可能なメモリカード。
【請求項７】
第３のポリシーを有する第３の部分と第４のポリシーを有する第４の部分をさらに有する請求項１記載の取り外し可能なメモリカード。
【請求項８】
中央処理装置をさらに備え、前記第１のポリシーがライトスルーポリシーであり、前記第２のポリシーがライトバックポリシーであり、前記第３のポリシーが読み出しキャッシュポリシーであり、前記第４のポリシーが中央処理装置データ記憶ポリシーである請求項７記載の取り外し可能なメモリカード。
【請求項９】
前記第１の部分のサイズは、変更可能である請求項１記載の取り外し可能なメモリカード。
【請求項１０】
ホストコマンドシーケンスに応答して、前記第１の部分のサイズが前記カードの操作中に変更可能である請求項１記載の取り外し可能なメモリカード。
【請求項１１】
前記バッファキャッシュの操作を制御する中央処理装置をさらに備える請求項１記載の取り外し可能なメモリカード。
【請求項１２】
ホストインターフェイスとフラッシュメモリアレイとの間の通信においてバッファキャッシュを使用する取り外し可能なメモリカード内で、前記ホストインターフェイスと前記フラッシュメモリアレイとの間のデータストリームを処理する方法において、
バッファキャッシュを少なくとも第１のセグメントと第２のセグメントに区分するステップと、
前記第１のセグメントについて第１のキャッシングポリシーを決定するステップと、
前記第２のセグメントについて第２のキャッシングポリシーを決定するステップと、
を含む方法。
【請求項１３】
前記第１のキャッシングポリシーは第１のデータストリームの特性によって決定され、前記第２のキャッシングポリシーは第２のデータストリームの特性によって決定される請求項１２記載の方法。
【請求項１４】
前記第１のキャッシングポリシーは、ライトスルーポリシーである請求項１２記載の方法。
【請求項１５】
前記第１のキャッシングポリシーは、ライトバックポリシーである請求項１２記載の方法。
【請求項１６】
前記第１のキャッシングポリシーは、先読みキャッシュポリシーである請求項１２記載の方法。
【請求項１７】
前記第１のセグメントのサイズを変更するステップをさらに含む請求項１２記載の方法。
【請求項１８】
不揮発性の非回転メモリアレイとメモリカードをホストに接続するホストインターフェイスとの間に置かれるバッファキャッシュを使用するメモリカードにおける前記不揮発性の非回転メモリアレイから前記ホストインターフェイスへデータを転送する方法において、
前記不揮発性メモリアレイから転送されるデータの第１の部分を特定する前記ホストから第１のアドレス範囲を受け取るステップと、
前記不揮発性メモリアレイから前記バッファキャッシュへ前記データの第１の部分をコピーするステップと、
前記不揮発性メモリアレイから前記バッファキャッシュへデータの第２の部分をコピーするステップであって、前記データの第２の部分は、前記不揮発性メモリアレイからの転送についてホストによって特定されない、ステップと、
前記バッファキャッシュに前記データの第２の部分を保持する間に、前記バッファキャッシュから前記ホストへ前記データの第１の部分を送出するステップと、
を含む方法。
【請求項１９】
前記データの第２の部分は第２のアドレス範囲を有し、前記第１のアドレス範囲と前記第２のアドレス範囲はシーケンシャルである請求項１８記載の方法。
【請求項２０】
前記データの第２の部分は、前記不揮発性メモリアレイからの前記データの第１の部分とともに前記データの第２の部分を並列に読み出すことができる最大サイズに選択される請求項１８記載の方法。
【請求項２１】
前記データの第２の部分は、前記バッファキャッシュまたは前記バッファキャッシュのセグメントに記憶されることが可能な最大サイズに選択される請求項１８記載の方法。
【請求項２２】
前記バッファキャッシュから前記ホストへ前記データの第１の部分を送出するステップに続いて、前記ホストへ転送されるデータを特定し、かつ前記データの第２の部分にある少なくともデータの第３の部分を特定する第３のアドレス範囲を受け取るステップをさらに含み、前記方法は、前記不揮発性メモリからではなく、前記バッファキャッシュから直接前記ホストへ前記データの第３の部分を転送するステップをさらに含む請求項１８記載の方法。
【請求項２３】
不揮発性の非回転記憶媒体にデータを記憶する取り外し可能なメモリカードにおいて、
ホストを接続するホストインターフェイスと、
不揮発性の非回転メモリアレイと、
前記ホストインターフェイスと前記不揮発性の非回転メモリアレイとの間に置かれる先読みキャッシュであって、前記先読みキャッシュが、前記ホストによって要求される要求部分のデータとシーケンシャルな非要求部分のデータを記憶する先読みキャッシュと、
を備える取り外し可能なメモリカード。
【請求項２４】
前記先読みキャッシュは、セグメントバッファキャッシュのセグメントである請求項２３記載の取り外し可能なメモリカード。
【請求項２５】
前記非要求部分のデータは、前記先読みキャッシュに記憶されることが可能なデータの最大量である請求項２３記載の取り外し可能なメモリカード。
【請求項２６】
前記先読みキャッシュと中央処理装置に接続されるスタティックランダムアクセスメモリを制御する前記中央処理装置をさらに備える請求項２３記載の取り外し可能なメモリカード。
【請求項２７】
不揮発性の非回転メモリアレイおよび揮発性メモリを含み、ホストに接続される取り外し可能なメモリシステムを操作する方法において、
前記ホストから第１のコマンドを受け取るステップと、
前記第１のコマンドに応答して、前記取り外し可能なメモリシステムにおいて少なくとも１つのバックグラウンド処理を可能にするステップであって、前記メモリシステムが、前記第１のコマンドに続く２つまたはそれ以上の数の処理の継続期間の間、少なくとも１つのバックグラウンド処理を可能なままとする、ステップと、
を含む方法。
【請求項２８】
前記第１のコマンドは、或る時間周期の間に前記揮発性メモリにおけるデータ記憶を可能とすることができることを示す動作コマンドである請求項２７記載の方法。
【請求項２９】
可能とされた前記バックグラウンド処理は、前記不揮発性の非回転メモリアレイに記憶されない前記揮発性メモリにおけるデータ記憶を含む請求項２７記載の方法。
【請求項３０】
前記少なくとも１つのバックグラウンド処理は、前記不揮発性メモリにデータをより効率的に記憶するようにガーベッジコレクション操作を含む請求項２７記載の方法。
【請求項３１】
第２のコマンドを受け取るステップと、前記取り外し可能なメモリシステムにおいて前記少なくとも１つのバックグラウンド処理を不可能とするステップとをさらに含む請求項２７記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体からなる電気的に消去可能でプログラム可能な読み出し専用メモリ（ＥＥＰＲＯＭ）、特にＥＥＰＲＯＭまたは他の類似のメモリを使用する取り外し可能なメモリカードのためのコントローラキャッシュシステムに関する。
【背景技術】
【０００２】
フラッシュＥＥＰＲＯＭシステムは、多数の応用に、特にホストシステムに取り外し可能に接続された封入されたカードに梱包されて使用される。商業的に利用することができるカードとして、コンパクトフラッシュカード（登録商標）（ＣＦ）、マルチメディアカード（ＭＭＣ）、セキュアデジタル（ＳＤ）カード、スマートメディアカード、個人タグ（Ｐ−Ｔａｇ）、メモリスティックカードがある。本願の譲受人であるサンディスク  コーポレイションは、これらのカードを供給する会社のうちの一社である。このようなカードが使用されるホストシステムには、パーソナルコンピュータ、ノートブック形コンピュータ、携帯計算装置、カメラ、オーディオ再生装置などがある。フラッシュＥＥＰＲＯＭシステムは、ホストシステムに装備される大容量記憶装置としても使用される。
【０００３】
このような不揮発性メモリシステムは、フローティングゲートメモリセルのアレイとシステムコントローラとを含む。このコントローラは、ホストシステムとの通信とメモリセルアレイの動作とを管理して、ユーザデータを記憶および検索する。メモリセルは、複数のセルブロックの一群であり、セルブロックは、同時に消去可能なセルの最小単位である。データを１つ以上のセルブロックに書き込むのに先立って、セルブロックは消去される。ユーザデータは、セクタにおいて、ホストとメモリアレイの間で一般的に転送される。ユーザデータのセクタは、取り扱うのに便利な量であり、好ましくはメモリブロックの容量より小さく、多くは標準的なディスクドライブセクタの大きさ５１２バイトと等しい。１つの商業的構造において、メモリシステムブロックは、ユーザデータの１セクタとオーバーヘッドデータを加えたものを記憶する大きさである。ここで、オーバーヘッドデータは、ブロックに記憶されるユーザデータに関する誤り訂正符号（ＥＣＣ）、ブロックの使用履歴、およびメモリセルブロックの障害とその他の物理情報のような情報を含む。この種類の不揮発性メモリシステムの多様な実施例は、サンディスク  コーポレイションに譲渡された米国特許第５，１７２，３３８号（特許文献１）、第５，６０２，９８７号（特許文献２）、第５，３１５，５４１号（特許文献３）、第５，２００，９５９号（特許文献４）、第５，２７０，９７９号（特許文献５）、第５，４２８，６２１号（特許文献６）、第５，６６３，９０１号（特許文献７）、第５，５３２，９６２号（特許文献８）、第５，４３０，８５９号（特許文献９）、第５，７１２，１８０号（特許文献１０）、第６，２２２，７６２号（特許文献１１）、および第６，１５１，２４８号（特許文献１２）に記載されている。これら特許は、その全体が本願明細書において参照により援用されている。他の種類の不揮発性メモリシステムは、ユーザデータの複合的なセクタを記憶する大きなメモリセルブロックサイズを利用する。
【０００４】
２つの一般的なメモリセルアレイ構造は、ＮＯＲとＮＡＮＤという商業的な応用を見出している。典型的なＮＯＲアレイにおいて、メモリセルは、隣接したビットラインのソースと複数のドレイン拡散の間に接続され、接続されるドレイン拡散はセルの行に沿って延びるワードラインに接続されるコントロールゲートとともに列方向に延びている。メモリセルは、ソースとドレインの間のセルチャネル領域の少なくとも一部分の上に位置する少なくとも１つの記憶素子を有する。記憶素子上の電荷のプログラムされたレベルは、このようにセルの動作特性を制御し、このことは適当な電圧をアドレスされたメモリセルに印加することにより読み出すことが可能である。
【０００５】
ＮＡＮＤアレイは、個々のビットラインと参照電位の間の１つまたは１つ以上の選択トランジスタに接続されてセルの列を形成する、１６または３２というような直列の２つ以上のメモリセルを利用する。ワードラインは、多数のこれらの列内で複数のセルを横切って延びる。列内の個々のセルは、残りの接続されたセルを強くオンに転換することによりプログラミング中に読み出されるとともにベリファイされるので、ストリング間を流れる電流はアドレスされたセルに記憶された電荷のレベルに依存することになる。
【０００６】
ユーザデータをメモリアレイにプログラミング中に並列動作の程度を強めるとともにメモリアレイからユーザデータを読み出すために、アレイは典型的には一般にプレーンと称されるサブアレイに分割され、このことはプレーン自身のデータレジスタと他の回路が並列動作をすることを可能とすることを包含し、セクタのデータが同時に数個または全てのプレーンの各々にプログラムされるかまたは数個または全てのプレーンの各々から読み出されてもよい。単一集積回路上のアレイは、複数のプレーンに物理的に分割されてもよく、またはそれぞれのプレーンが別個の１つまたは１つ以上の集積回路チップから形成されてもよい。
【０００７】
メモリセルアレイの１つの構造は、サブアレイまたはセルの他のユニット内にあるとともに共通する消去ゲートを共有するメモリセルの１行または２行からブロックを都合よく形成する。２つのプログラムされたしきい値レベルのみを定義することにより各々のフローティングゲートセルにおいて１ビットのデータを記憶することが現在のところ普通であるが、２つ以上のフローティングゲートトランジスタのしきい値範囲を確定することにより各々のセルにおいて１ビット以上のデータを記憶することが技術動向となっている。フローティングゲート（４つのしきい値レベル範囲または状態）毎に２ビットのデータを記憶するメモリシステムを現在のところ利用することができる。もちろん、各々のセルに記憶されるビットの数を増加するにつれて、セクタのデータを記憶するために必要とされるメモリセルの数は減少する。この動向は、セル構造と一般的な半導体プロセスにおける改良から結果として生じるアレイのスケーリングと結びついて、セルの行の分割された部分においてメモリセルブロックを形成することを実用化する。ブロック構造を形成して、２つの状態（セル毎に１データビット）または４つの状態のような複合的な状態（セル毎に２データビット）におけるメモリセルの各々の動作の選択を可能とすることができる。
【０００８】
フローティングゲートメモリセルにデータをプログラムするのに長時間を要するので、行における多数のメモリセルは通常同時にプログラムされる。しかし、この並列動作の増加は、消費電力の増加、隣接するセルの電荷の電位不安定、またはこれらの間の相互作用を起こす。その全体が本願明細書において参照により援用されているサンディスク  コーポレイションの米国特許第５，８９０，１９２号（特許文献１３）は、複合的な１群のデータを異なるオペレーショナルメモリセルユニット（サブアレイ）に配置されたセルの異なるブロックに同時にプログラムすることによりこれらの効果を最小にするシステムを開示している。
【０００９】
メモリをさらに効率的に管理するために、ブロックをリンクして仮想ブロックまたはメタブロックを形成してもよい。すなわち、各々のメタブロックは、各々のプレーンから１ブロックを含むように定義される。メタブロックの使用は、その全体が本願明細書において参照により援用されている国際公開特許出願第０２／０５８０７４号（特許文献１４）に開示されている。メタブロックは、ホスト論理ブロックアドレスによってデータのプログラムと読み出しのためのあて先として認識される。同様に、メタブロックの全てのブロックは一緒に消去される。このような大きなブロックおよび／またはメタブロックとともに動作するメモリシステムにおけるコントローラは、ホストから受け取る論理ブロックアドレス（ＬＢＡ）とメモリセルアレイ内の物理ブロック番号（ＰＢＮ）との間の翻訳を含む多数の機能を行う。ブロック内の個々のページは、ブロックアドレス内のオフセットによって通常認識される。メタページは、メタブロック内のデータをプログラムする単位である。メタページは、メタブロックの複数のブロックの各々からの１ページによって構成される。
【００１０】
セクタ（５１２バイト）と消去ブロックまたはメタブロック（時には１２８セクタ以上）の間の大きさの相違のために、消去ブロックまたはメタブロックから他にコピーすることが時々必要となる。このような操作は、ガーベッジコレクションと称される。ガーベッジコレクション操作は、メモリシステムの書き込み性能を低下する。例えば、メタブロックのあるセクタが更新されるがメタブロックの他のセクタが更新されない場合、更新されたセクタは、新たなメタブロックに書き込まれてもよい。更新されないセクタは、直ちにまたはガーベッジコレクションの一部として後で新たなメタブロックにコピーされてもよい。
【００１１】
あるメモリシステムにおいて、物理メモリセルも２つ以上のゾーン（区域）に分類される。ゾーンは、論理ブロックアドレスの特定の範囲がマップされる物理メモリまたはメモリシステムの区分されたサブセット（対象）であってもよい。例えば、６４メガバイトのデータを記憶することができるメモリシステムは、ゾーン当たり１６メガバイトを記憶する４つのゾーンに区分されてもよい。その時、論理ブロックアドレスの範囲は、４つのグループに分割され、１つのグループは、４つのゾーンの各々の物理ブロックに割り当てられる。通常の実施例において、論理ブロックアドレスは規制され、各々のデータは、論理ブロックアドレスがマップされる単一の物理ゾーンの外側には決して書き込まれない。各々がそれ自身でアドレス指定、プログラミングおよび回路の読み出しを行う複数のプレーン（複数のサブアレイ）に分割されるメモリセルアレイにおいて、各々のゾーンは好ましくは複合プレーンからのブロック、すなわち通常各々のプレーンからの同じ数のブロックを含む。ゾーンは、第１に論理から物理への翻訳のようなアドレス管理を簡単にするために使用され、結果として翻訳テーブルが小さくなり、これらのテーブルを保持するために必要とされるＲＡＭメモリが少なくなり、かつメモリの現在アクティブな領域をアドレスするためのアクセス時間が速くなるけれども、それらの制限的な性質のために最適使用レベルを小さくすることができる。
【００１２】
メモリアレイは、メモリアレイからデータを読み出すとともにメモリアレイにデータを書き込むアレイに一般に回路的に接続される。この回路の一部分として、データキャッシュをメモリアレイに接続してもよい。メモリアレイに対してかつメモリアレイからデータを転送する複数のレジスタの行と簡単にしてもよい。データキャッシュは、メモリアレイの行と同じ量のデータを保持してもよい。通常、データキャッシュは、メモリアレイと同じチップに形成される。
【００１３】
コントローラは、中央処理装置（ＣＰＵ）、バッファキャッシュ（バッファＲＡＭ）およびＣＰＵ  ＲＡＭを含む数個の部品を有してもよい。バッファＲＡＭおよびＣＰＵ  ＲＡＭの両方が、ＳＲＡＭメモリであってもよい。これらの部品は、同一チップ上に装備してもよく、複数の別個のチップ上に装備してもよい。ＣＰＵは、メモリアレイに出入りしてデータを転送することを含む操作を実行するためにソフトウェア（ファームウェア）を動作させるマイクロプロセッサである。メモリアレイへの書き込みに先立ってまたはホストへのデータの送出に先立って、バッファキャッシュはデータを保持するために使用されてもよい。このように、バッファキャッシュはフラッシュ動作とホスト動作を同時に行うことができるデュアルアクセスメモリである。ＣＰＵＲＡＭは、バッファキャッシュまたはメモリアレイにおいてデータの指示またはアドレスのようにＣＰＵによって必要とされるデータを記憶するために使用されてもよい。その全体が本願明細書において参照により援用されている米国特許第５，２９７，１４８号（特許文献１５）に示されている例において、バッファキャッシュが、不揮発性メモリとして使用されるフラッシュＥＥＰＲＯＭ上での使用を低減するために書き込みキャッシュとして使用されてもよい。
【特許文献１】米国特許第５，１７２，３３８号
【特許文献２】米国特許第５，６０２，９８７号
【特許文献３】米国特許第５，３１５，５４１号
【特許文献４】米国特許第５，２００，９５９号
【特許文献５】米国特許第５，２７０，９７９号
【特許文献６】米国特許第５，４２８，６２１号
【特許文献７】米国特許第５，６６３，９０１号
【特許文献８】米国特許第５，５３２，９６２号
【特許文献９】米国特許第５，４３０，８５９号
【特許文献１０】米国特許第５，７１２，１８０号
【特許文献１１】米国特許第６，２２２，７６２号
【特許文献１２】米国特許第６，１５１，２４８号
【特許文献１３】米国特許第５，８９０，１９２号
【特許文献１４】国際公開特許出願第０２／０５８０７４号
【特許文献１５】米国特許第５，２９７，１４８号
【発明の開示】
【００１４】
図１は、取り外し可能なメモリカードにおいてホストと不揮発性メモリ（ＮＶＭ）の間に置かれるバッファキャッシュを示す。バッファキャッシュは、ホストバスによってホストに接続される。バッファキャッシュは、ＮＶＭバスによってＮＶＭに接続される。ホストバスの帯域幅は、ＮＶＭバスの帯域幅より大きいので、ＮＶＭバスがホストとＮＶＭの間のデータ転送の障害となっている。また、特にホストが単一セクタのデータを書き込むとき、ＮＶＭ内のプログラミングが障害となるかもしれない。単一セクタを書き込んだ後に、コントローラはＮＶＭを待って、ホストからもう１つのセクタを受け取る前に書き込み動作を完了させる。並列動作が大量のセクタの処理を可能とする場合に、少量のセクタに関連する書き込みまたは読み出し動作が非能率となるかもしれない。ホストが複合的な筋道動作を実行する場合、複合的なデータストリームが発生し、メモリカードコントローラによってシーケンシャルに処理されてもよい。
【００１５】
このように、メモリカードコントローラは、ＮＶＭにおける少量のデータに関連する書き込み動作と読み出し動作の効率を向上することが必要とされている。
【００１６】
メモリコントローラは、セグメント（部分）に区分され、マルチセグメントキャッシュを形成するバッファキャッシュを有する。異なるセグメントは、バッファキャッシュを使用し同時に実行される別個の動作を許可する異なるポリシーを有してもよい。セグメントの大きさは、セグメントを使用する動作により変化してもよい。
【００１７】
多様なポリシーが、単一セグメントキャッシュまたはマルチセグメントキャッシュに適用される。ポリシーは、読み出し動作が行われるときに付加的データを記憶する先読み（または先取り）キャッシュ (read-look-ahead (or prefetch) cache)を含む。付加的なデータは、ホストが次のコマンドにおいて要求するであろうデータと認識される。付加的なデータは、簡単にメモリアレイにおける次のシーケンシャルなデータであってもよい。ライトスルーキャッシュ (write-through cache)ポリシーは、データを変更することなく、バッファキャッシュにデータを記憶し、次いでメモリアレイにデータを書き込む。ライトバックキャッシュ (write-back cache) ポリシーは、バッファキャッシュにデータを記憶し、データをメモリアレイに書き込むことなくバッファキャッシュのデータを変更してもよい。その上、データがＣＰＵによって必要とされる場合、ＣＰＵはデータをバッファキャッシュに記憶してもよい。このことは、通常ＣＰＵ  ＲＡＭに記憶されるデータを含めてよい。
【００１８】
バッファキャッシュは、一般に揮発性メモリなので、メモリシステムに電力欠陥があれば、バッファキャッシュに記憶されているだけのデータは失われる。電力欠陥は、取り外し可能なメモリカードについての特有の関心事である。キャッシュ動作、ガーベッジコレクションおよびアドレス翻訳情報更新を含む特定の動作は、揮発性メモリにのみデータを記憶しているかもしれない。ホストによる電力保証は、このような動作が背景動作として実行されることを許可する。動作（セッション）コマンドは、時間周期の電力保証としてホストからメモリカードに送られるようにしてもよい。
【発明を実施するための最良の形態】
【００１９】
図２は、バッファキャッシュ２１２を有するメモリカード２１０を示す。データは、バッファキャッシュ２１２を通してホスト２１４とＮＶＭの間で転送される。ＮＶＭ２２０は、データ記憶のために使用されるフラッシュＥＥＰＲＯＭまたは他の類似のメモリであってよい。メモリカード２１０は、メモリカード２１０をカメラ、パーソナルコンピュータまたは電話のようなホストシステムに取り外し可能に接続するホストインターフェイス２２２を有する。メモリカード２１０は、バッファキャッシュ２１２とＮＶＭ２２０の間にＮＶＭインターフェイス２２４を有する。ＮＶＭインターフェイス２２４は、バッファキャッシュ２１２とＮＶＭ２２０との間のデータ交換を容易にする回路を有する。中央処理装置（ＣＰＵ）２３０は、メモリカード２１０内のデータ操作を制御する。ＣＰＵ２３０におけるソフトウエアは、ホスト２１４によって送出されるコマンドに応答して操作を実行する。例えば、ホスト２１４が特定の論理アドレス範囲を有するデータを要求するならば、ＣＰＵ２３０は、ＮＶＭ２２０におけるデータの位置を決定し、必要な処理を実行して、データを検索し、そのデータをホスト２１４に送出する。スタティックランダムアクセスメモリ（ＳＲＡＭ）のようなＣＰＵ  ＲＡＭ２３２は、ＣＰＵ２３０によって使用されるデータを記憶するために使用される。ＣＰＵ  ＲＡＭ２３２におけるデータは、ＣＰＵ２３０によって迅速にアクセスされてもよい。通常、ＣＰＵ  ＲＡＭ２３２に記憶されるデータは、ＣＰＵ２３０によって頻繁に使用される。
【００２０】
区分キャッシュ
図３は、メモリカード２１０と類似であるが区分されたバッファキャッシュ３１２を有するメモリカード３１０を示す。図３における区分されたバッファキャッシュのような区分されたメモリは、異なるポリシーにより別個に操作されてもよいセグメントを有する。区分されたバッファキャッシュ３１２は、ＣＰＵにおけるソフトウエアを通してあるいはハードウエア自動処理を通して区分されてもよい。図３に示されているバッファキャッシュ３１２は、セグメント１〜４に区分される。各々のセグメントは、別個に使用され、異なるポリシーを有する。結果として、並列の４つの別個のバッファキャッシュメモリを有する場合に類似する。
【００２１】
ＣＰＵ  ＲＡＭ３３２のテーブルは、バッファキャッシュ３１２の特性のテーブル３３３を保持する。別個のテーブルが、バッファキャッシュ３１２の各々のセグメントについて加入保持される。加入されるのは、バッファキャッシュにおけるセグメントの物理的位置、セグメントに記憶されるデータの論理アドレスおよびセグメントで使用されるキャッシュポリシーに関する分野の情報である。セグメントの大きさは、要求によって変更してもよい。大きさの変化は、特定のセグメントに割り当てられる物理アドレス範囲を変更する。区分は、ハードウエアによっても達成される。しかし、このような区分は、容易に変更されず、ソフトウエアによる区分より実行するのが難しい。
【００２２】
区分されたバッファキャッシュ３１２のような区分されたバッファキャッシュは、従来の（区分されない）バッファキャッシュよりサイズが大きい。従来のバッファキャッシュの大きさは、ある実行しきい値を達成するために記憶されるデータの最大量によって一般に決められる。非キャッシュ構造において、バッファキャッシュの大きさは、通常８〜１６ｋＢである。区分されたキャッシュにおいて、書き込みキャッシュとして動作する単一セグメントを有することが望まれているので、バッファキャッシュの全体のサイズを大きくする必要がある。３２ｋＢあるいはそれ以上のバッファサイズが使用されてもよい。
【００２３】
バッファキャッシュまたはバッファキャッシュのセグメントにおいて実行されるキャッシュポリシーは、読み出しキャッシュポリシーと書き込みキャッシュポリシーの両方を含む。先読みは読み出しキャッシュポリシーの一例である。ライトスルーとライトバックは、書き込みキャッシュポリシーの例である。バッファキャッシュのセグメントは、ＣＰＵによって使用されるデータを保持するためにＣＰＵによって使用されてもよい。このデータは、通常ＣＰＵ  ＲＡＭにおいて記憶されるデータを含んでもよい。バッファキャッシュに記憶されるＣＰＵデータは、プログラム変数、アドレス翻訳情報およびコピーバッファを含んでもよい。バッファキャッシュに記憶されるＣＰＵデータは、ある従来技術の例において、ＣＰＵ  ＲＡＭに記憶されるデータであってもよい。ＣＰＵデータのためにバッファキャッシュのセグメントを備えることは、ＣＰＵ  ＲＡＭに追加して使用されるこのデータを記憶するための択一的な位置を与えることになる。
【００２４】
先読みキャッシュ (Read-look-ahead cache)
バッファキャッシュは、ＮＶＭからホストに転送されるデータを保持する読み出しキャッシュとして使用されてもよい。読み出しキャッシュは、区分されるならば、全体のバッファキャッシュまたはバッファキャッシュのセグメントでもよい。先読み（ＲＬＡ）キャッシュは、要求がデータについてホストによって実際に行われる前に、ホストによって要求されるデータをキャッシュに記憶することができる。例えば、ホストが特定の論理アドレス範囲を有するデータを要求する場合、要求されるデータに対してシーケンシャルな論理アドレス範囲を有する追加的なデータがＲＬＡキャッシュに記憶されてもよい。ホストは、最後に要求されるデータに対して論理的にシーケンシャルなデータを頻繁に要求するので、記憶されているデータが要求される確率が高い。ＲＬＡデータは、ホストデータ使用パターンに基いた他の方法で選択されてもよい。キャッシュデータが次に要求されるならば、キャッシュデータはＮＶＭにアクセスすることなくＲＬＡキャッシュからホストに直接転送されてもよい。この転送はＮＶＭからの転送より速く、ＮＶＭバスを使用しない。このように、データがホストに転送される間、ＮＶＭバスは他の操作に使用されてもよい。
【００２５】
ＲＬＡキャッシュの操作の一例を示す。図４Ａは、ホストバス４２５を通してホスト４１４と通信するＲＬＡキャッシュ４１２を示す。ＲＬＡキャッシュ４１２は、ＮＶＭバス４２１を通してＮＶＭ４２０とも通信する。ホスト４１４は、セクタ０〜２からなるデータ部分を要求する。この例において、データは、論理アドレスによってアドレス可能なセクタに記憶される。他の例において、データは他のアドレス可能なデータユニットに記憶されてもよい。ＲＬＡキャッシュ４１２は空なので、セクタ０〜２はＮＶＭ４２０から転送されなければならない。図４Ｂは、セクタ０〜２とともにＮＶＭ４２０からＲＬＡキャッシュ４１２に転送されるセクタ３〜７を示す。図４Ｃは、ＲＬＡキャッシュ４１２からホスト４１４に転送されるセクタ０〜２を示す。ＲＬＡキャッシュ４１２からホスト４１４へのセクタ０〜２の転送は、ＲＬＡキャッシュ４１２のスペースを自由に使用可能とするので、そこに３つのセクタが記憶されてもよい。それゆえ、セクタ８〜１０がＮＶＭ４２０から転送されて、ＲＬＡキャッシュ４１２を充足する。図４Ｄは、ホスト４１４から受け取る２番目の要求を示す。この要求は、セクタ３〜８に関するものである。このように、２番目の要求により要求される全てのセクタがＲＬＡキャッシュ４１２に存在する。セクタ３〜８がＲＬＡキャッシュ４１２に存在するので、ＮＶＭ４２０へのアクセスは要求されず、セクタ３〜８はＲＬＡキャッシュ４１２からホスト４１４に直接転送されてもよい。２番目の要求がＲＬＡキャッシュ４１２に存在しなかったセクタに関するものであったならば、要求されるセクタはＮＶＭ４２０から検索されなければならない。
【００２６】
フラッシュメモリに関するＲＬＡキャッシュの１つの実施例において、ＲＬＡキャッシュを管理するために２つのプロセスが使用される。１つは、図５のホストコマンド処理プロセスがホストコマンドを処理する。他は、図６のフラッシュアクセス管理プロセスがＲＬＡ操作を処理する。
【００２７】
図５、図６Ａおよび図６Ｂは、ＲＬＡ操作を実行するために使用される３つの関連するプロセスを示す。図５は、ＲＬＡキャッシュ（読み出しキャッシュ）からホストへのデータのセクタの転送を実行するホストコマンド処理プロセスを示す。新たなコマンドを受けた場合、それが読み出しコマンドか否かが最初に決定される（ステップ５１０）。それが読み出しコマンドでない場合、コマンドはＲＬＡ操作なしに実行される（ステップ５１２）。読み出しコマンドに関して、要求されたセクタが読み出しキャッシュに存在しないと決定されるならば（ステップ５１４）、プロセスは要求されるセクタがフラッシュから読み出しキャッシュに転送されるのを待つ（ステップ５１６）。要求されるセクタが読み出しキャッシュに存在するならば、要求されるセクタはホストに転送される（ステップ５１８）。より多くのセクタが読み出されるなら（ステップ５１９）、プロセスは次のセクタについてこのシーケンスを繰り返す。このように、全ての要求されるセクタが転送されるまで、このプロセスは読み出しキャッシュからホストへ要求されるセクタを転送し続ける。
【００２８】
図６Ａおよび図６Ｂは、フラッシュから読み出しキャッシュへのセクタの転送を実行するプロセスを示す。図６Ａは、ホスト遮断プロセスを示す。ホストコマンドは、一般に図５のホストコマンド処理プロセスと図６Ａのホスト遮断プロセスの両方を実行する。図６Ａのホスト遮断プロセスの主要な目的は、図６Ｂのフラッシュアクセス管理プロセスのコマンド列にホスト遮断コマンドを並べることである。ホストコマンドが読み出しコマンドでないことがわかれば（ステップ６２０）、コマンドはフラッシュアクセス管理プロセスのコマンド列に置かれる（ステップ６２２）。コマンド列は１つまたは複数のコマンドを保持してもよい。ホストコマンドが読み出しコマンドならば、読み出しコマンド調節過程が行われる（ステップ６２４）。読み出しコマンド調節過程（ステップ６２４）は、要求されるセクタのあるものまたは全てが読み出しキャッシュに存在するか否かによりフラッシュメモリにアクセスするために使用される読み出しコマンドを変更する。要求されるセクタが読み出しキャッシュに存在しないならば、全てのセクタがフラッシュから読み出されなければならないので、読み出しコマンドは変更されない。それゆえ、変更されないコマンドがコマンド列に置かれる。いくつかの要求されるセクタが読み出しキャッシュに存在する場合、読み出しコマンドが変更され、読み出しキャッシュに存在しないセクタのみがフラッシュから要求される。このように、読み出しコマンド調節過程（ステップ６２４）は、読み出しコマンドがコマンド列に置かれる前に、読み出しコマンドからすでに読み出しキャッシュに存在するセクタを取り除く。完全なキャッシュヒットが起きる場合（全ての要求されるセクタが読み出しキャッシュに存在する場合）（ステップ６２６）、全てのセクタが読み出しキャッシュから直接読み出されてもよいので、フラッシュメモリへのアクセスは必要とされない。この場合、ＲＬＡ操作のための開始ＬＢＡが更新されて、読み出しキャッシュに記憶されるＲＬＡセクタの新たなセットを認識する（ステップ６２８）。
【００２９】
図６Ｂは、フラッシュから読み出しキャッシュへセクタのデータを転送するフラッシュアクセス管理プロセスを示す。ホスト遮断プロセスから新たなコマンドを受け取った場合、そのコマンドが書き込みコマンドならば、読み出しキャッシュは無効とされ（ステップ６３０）、コマンドが実行される（ステップ６３２）。コマンドが読み出しコマンドならば、読み出しコマンド調節過程（ステップ６２４）に関して前述したように、読み出しコマンド調節が過程の一部として行われる（ステップ６３４）。読み出しコマンド調節過程（ステップ６２４）がホスト遮断プロセスの一部として行われた時に存在しなかった読み出しキャッシュにセクタがこの時点で存在するかもしれないので、読み出しコマンド調節プロセスがフラッシュアクセス管理プロセスにおいて繰り返して行われる。例えば、フラッシュから読み出しキャッシュへのセクタの転送がステップ６２４とステップ６３４の間の時間周期で完了するかもしれない。読み出しキャッシュに存在しないいずれの要求されるセクタもフラッシュから読み出され、開始ＬＢＡがセットされ、ステップ６３４の部分としてプロセスの流れの先読み部分において、ＬＢＡで開始する要求されないデータが読み出しキャッシュにロードされるかもしれない。データキャッシュにＲＬＡセクタが存在するならば（ステップ６３６）、そして“利用することができるホストバッファ”のためのバッファキャッシュに利用することができるスペースが存在するならば（ステップ６３８）、セクタはデータキャッシュから読み出しキャッシュに転送される（ステップ６４０）。データキャッシュに追加的なセクタが存在するとともにバッファキャッシュにおけるセクタの数が先取り長さＮ（バッファキャッシュにロードすべきセクタの所定の数）より小さいならば（ステップ６４２）、循環過程は繰り返される（ステップ６４２）。新たなコマンドを受け取れば（ステップ６４４）、循環過程は停止されるので、新たなコマンドが実行されるかもしれない。もはやデータキャッシュにセクタが存在しておらず（ステップ６４２）、かつ読み出しキャッシュにおいてＮセクタより少ないセクタが存在するならば（ステップ６４４）、読み出しが行われてデータをフラッシュメモリアレイからデータキャッシュに転送し（ステップ６４６）、そのとき循環過程が再度開始される。読み出しキャッシュにおけるセクタの数が先取り数Ｎに達したならば（ステップ６４４）、プロセスは読み出しキャッシュにおけるセクタの数がＮより小さくなるのを待つ（ステップ６４８）。読み出しキャッシュにおけるセクタがホストに転送されるならば、これが起きる。この時点で新たなコマンドを受け取れば（ステップ６３０）、新たなコマンドが実行される。読み出しキャッシュにおけるセクタの数がＮより小さくなると（ステップ６４８）、そこに存在するならば、新たなＲＬＡセクタがデータキャッシュから読み出しキャッシュに転送され（ステップ６５２）、そうでなければ、フラッシュメモリアレイからデータキャッシュに（ステップ６４６）、そして読み出しキャッシュに転送される（ステップ６４０）。
【００３０】
ＲＬＡ操作が所定の制限に達した場合または他の操作が実行された場合、進行中のＲＬＡ操作は停止されてもよい。メモリアレイが新たなアドレス翻訳テーブルを創る必要があるゾーンを有する場合は、ＲＬＡ操作はこのような新たなテーブルを創る必要があるメタブロック境界で停止されてもよい。長い待ち時間を伴う操作が必要とされるとき、ＲＬＡ操作は停止されてもよい。例えば、ソフトウエアの介在を必要とするＥＣＣエラーが起きたとき、ＲＬＡ操作は停止されてもよい。エラーを含むデータは、キャッシュから取り除かれるべきである。どのようなものでも新たなコマンドを受けたとき、ＲＬＡ操作は停止されてもよく、新たなコマンドが直ちに実行されてもよい。所望の数のセクタがキャッシュに存在するとき、ＲＬＡ操作は停止されてもよい。
【００３１】
先読みの例
以下の例は、データ要求を受け取った場合にどのようにＲＬＡキャッシュが使用されるかを示す。これらの例は、８セクタのデータを含むメタページを使用するフラッシュメモリに基いている。フラッシュ７０３は、フラッシュ７０３の１メタページにおけるデータ量に等しい８セクタを保持するデータキャッシュを有する。コントローラ７０５は、１６セクタのバッファキャッシュ７０７と先取り長さ１６を有する。図７に示されているように、バッファキャッシュ７０７は、各々８セクタを保持可能なキャッシュユニット０とキャッシュユニット１とを有する。このように、バッファキャッシュユニットはＮＶＭの１メタページとして同一量のデータを保持する。１つのキャッシュユニットがいつでも最新のキャッシュユニットとして指定される。以下の技術用語が開示されている例では使用される。
Ｎ  Ｍの読み出し：  ＬＢＡ  Ｎで開始するＭシーケンシャルセクタの読み出し
ホスト対バッファｘｆｅｒ：  ホストからホストバッファへのセクタ転送
ホストバッファ充足：  バッファスペース全体が充足され、ホストバッファがこれ以上のデータを取得することができないことを示す。
カードビジー：  デバイス（バッファまたはバッファのセグメント）がビジーで、ホストからコマンドまたはデータを受け取ることができないことをホストに対して示す。
バッファ対フラッシュｘｆｅｒ：  ホストバッファからフラッシュへのセクタ転送
読み出し／ビジー（Ｒ／Ｂ）：  フラッシュ  レディ／ビジー
真レディ／ビジー：  フラッシュ  真レディ／ビジー
【００３２】
図８Ａは、ＲＬＡキャッシュ操作の一例を示す。キャッシュはこの操作の開始時に空である。要求“読み出し０１”をホストから受け取り、ホストが論理アドレス０とともに１セクタを要求していることを示すとき、キャッシュにはデータがない。このことはキャッシュミスと考えられる。セクタ０が、フラッシュからキャッシュ（バッファ）に転送される。そして、セクタ０がホストへ転送される。セクタ１〜７も、第１のキャッシュユニットに対する最初の読み出し操作の部分としてフラッシュからバッファキャッシュに転送される。次に、セクタ８〜１５が２番目の読み出し操作として第２のキャッシュユニットに転送される。そのとき、セクタ１６がキャッシュから転送される。セクタ０がホストへ転送されているので、スペースがセクタ１６を記憶するために利用することができる。セクタがバッファキャッシュに転送されるとき、メタページ全部がフラッシュメモリアレイからデータキャッシュに一般に読み出される。メタページはセクタ１６〜２３を含んでもよい。セクタ１６がバッファキャッシュに転送された後に、セクタ１７〜２３をデータキャッシュに残してもよい。このように、ホストによる単一セクタに対する要求は、バッファキャッシュに１６のセクタを記憶し、データキャッシュにさらに７つのセクタを残すＲＬＡ操作を生ずる。
【００３３】
ホストから第２の要求“読み出し１  １６”を受け取り、ホストが開始論理アドレス１（セクタ１〜１６）とともに１６のセクタを要求していることを示すときに、これらのセクタは既にキャッシュに存在し直接ホストに転送されてもよい。セクタ１〜１６がホストへ転送される間に、追加セクタが第２のＲＬＡ操作の一部分としてフラッシュからキャッシュに転送される。
【００３４】
図８Ｂは、１６のセクタに関する第２の要求の代わりに各々が単一セクタからなる連続する要求を受け取ること以外については図８Ａの例と類似の例を示す。これらのセクタの１つがホストへ転送されるとき、１つのセクタがデータキャッシュからキャッシュに転送され、キャッシュが充足された状態で残る。第２の要求“読み出し１１”以前に、セクタ１６〜２３がデータキャッシュに記憶される。このように、セクタ１〜７がキャッシュからホストへ転送されるので、セクタ１７〜２３はデータキャッシュからキャッシュに転送されてもよい。セクタ１７〜２３がデータキャッシュに存在するので、この操作の間にフラッシュメモリアレイにアクセスする必要はない。
【００３５】
図８Ｃは、第２の要求においてホストによって要求された１セクタのデータのみがキャッシュに存在する場合の部分ヒットを示す。第１の要求は、図８Ａおよび図８Ｂにおけるものと同一である。しかし、第２の要求“読み出し１６  ３”は開始アドレス１６とともに３つのセクタに関するものである。３つのセクタのうちの１つのみ、セクタ１６がキャッシュに存在する。セクタ１６は、キャッシュからホストへ直接転送される。他の２つのセクタ、セクタ１７とセクタ１８はデータキャッシュから読み出される。キャッシュに記憶されるセクタのうちでセクタ１〜１５は廃棄され、セクタ１９〜３４はフラッシュから新しいＲＬＡセクタに転送される。
【００３６】
ライトスルーキャッシュ
ライトスルーキャッシュは、図２に示されているバッファキャッシュまたは図３に示されている区分されたバッファキャッシュのようなバッファキャッシュにおいて実施されてもよい。ライトスルーキャッシュは、ホストからデータを受け取り、データを変更することなくデータをＮＶＭに送出する。ＮＶＭがデータを受け取る準備ができているならば、受け取り後直ちにデータはＮＶＭに送出されてもよい。例えば、ホストがデータの複合セクタを含むデータストリームを送出する場合、セクタは直ちにＮＶＭに書き込まれてもよい。ＮＶＭにおいて、データはデータキャッシュに保持され、要求されたときにプログラムされてもよい。信号をデータがＮＶＭに書き込まれたことを示すホストに戻すことにより、データが実際にＮＶＭではなくライトスルーキャッシュに書き込まれているときに、データを記憶するための時間が明白に短縮される。このことは、ホストが次のデータをより迅速に送出することを可能とする。ＮＶＭにプログラムされるべき以前のデータを待つことなく、より多くのデータがホストによって送出されてもよい。メモリカードはデータの第１の部分をライトスルーキャッシュからＮＶＭに転送し、その間同時にデータの第２の部分をホストからライトスルーキャッシュに転送する。ライトスルーキャッシュはＮＶＭのより効率的なプログラミングを可能とする。メタページ全部がＮＶＭアレイの最大並列操作を使用してプログラムされることが可能となるような十分なデータがホストによって転送されるまで、セクタのデータがライトスルーキャッシュに記憶されてもよい。このことは増強された並列操作によりプログラミングをより迅速に行うことを可能とし、プログラミングの後に要求されるガーベッジコレクションを回避または低減することにより性能をさらに改良する。
【００３７】
ライトスルーキャッシュからＮＶＭへのデータのプログラミングは多様な事象によって引き起こされてもよい。ＮＶＭの最大並列操作を使用して十分なデータがライトスルーキャッシュに存在するときに、データがプログラムされてもよい。メタブロックにデータを記憶するＮＶＭについて、十分なデータとは１メタページに等価な量のデータでありうる。プログラミングは、キャッシュに既に記憶されているセクタに対してシーケンシャルでないセクタを受け取ることにより引き起こされてもよい。ギャップが特定の所定の量より小さければ、たとえセクタと記憶されたセクタの間にギャップが存在しても、セクタがシーケンシャルとみなされてもよい。特定のホストコマンドがライトスルーキャッシュにおいてデータのプログラミングを引き起こしてもよい。コンパクトフラッシュ（登録商標）（ＣＦ）標準を使用するメモリカードにおいて、ライトスルーキャッシュにおけるデータのプログラミングを引き起こすコマンドは、（障害書き込みキャッシュに使用された場合には）読み出しセクタ、フラッシュキャッシュおよびセットフィーチャを含む。所定時間後にプログラムが引き起こされてもよい。キャッシュの内容が所定の時間の間にＮＶＭに送出されなければ、プログラミングが自動的に行われる。通常、所定の時間は１ミリ秒から５００ミリ秒である。
【００３８】
図９は、単一セクタ書き込みが起こり、ＮＶＭ９０９が８セクタメタページを有する場合の例を示す。８つのセクタすなわちセクタ０〜７は、ＮＶＭ９０９に書き込まれる前にライトスルーキャッシュに記憶されてもよい。この記憶は、ＮＶＭにおける８つのセクタに個々に記憶するより迅速に行われる。セクタ０がＮＶＭにプログラムされるのを待つ代わりに、信号が送出され、セクタ０がプログラムされるとともにホストがセクタ１をメモリカードに送出することを示す。８つのセクタの全てが並列にプログラムされる時間にセクタ０〜７が記憶されるまで、このことは繰り返される。セクタ０〜７は、書き込みキャッシュユニット０からデータキャッシュに転送され、それからメモリアレイにおけるメタページＸに並列にプログラムされる。セクタはデータキャッシュに個々に転送され、それからメモリアレイに並列にプログラムされる。
【００３９】
図９に示されているフラッシュ（ＮＶＭ）に対するセクタの並列プログラミングと対照的に、ある従来技術のシステムは単一セクタが個々に受け取られるマルチセクタページに単一セクタがプログラムされるのを許可するのみである。ＮＶＭに対する単一セクタのプログラミングとともに、各々のセクタはアレイにおけるメタページのスペースを最初に占有してもよい。このように、各々の単一セクタ書き込みは、７つのセクタのデータを記憶するのに十分なメモリアレイにおける使用されないスペースをそのままにする。このようなセクタはガーベッジコレクションの一部として単一メタページに後で統合されてもよく、使用されないスペースは使用されるようにしてもよい。しかし、ガーベッジコレクション操作は時間とシステム資源を要求し、このような操作の必要を最小とすることが望ましい。
【００４０】
図１０は、ホストから受け取る読み出しコマンドが後に続く一連の単一セクタ書き込みを示す。個々のセクタはライトスルーキャッシュに最初に送出される。セクタ７を受け取ったとき、セクタ７は直ちにＮＶＭにプログラムされる。セクタ７がプログラムされる間に、セクタ８〜１６がホストから受け取られる。セクタ７がプログラムされた後に、セクタ８〜１５がメモリアレイにプログラムされる。セクタ８〜１５はメモリアレイのメタページを形成する。セクタ１６はライトスルーキャッシュに保持される。次に、読み出しコマンド“読み出し７  １”が受け取られる。セクタ１６がメモリアレイに書き込まれた後に読み出しコマンドが実行される。
【００４１】
図１１は、ホストとバッファキャッシュおよびバッファキャッシュとＮＶＭ間のデータ転送のパイプライン操作を示す。ＮＶＭがデータを受け取る準備ができている限り、新たなセクタがライトスルーキャッシュに記憶されている間に、ホストから以前に受け取られたセクタはＮＶＭにプログラムされてもよい。セクタのデータの流れは、流れ“Ａ”によって示されているように、ホストによってバッファに送出される。流れ“Ｂ”によって示されているように、セクタは個々にＮＶＭに転送される。ＮＶＭにおいて、それらのセクタはメタページの単位で並列にデータキャッシュからメモリアレイにプログラムされる。他のセクタをメモリアレイにプログラムするのと並列に、セクタはホストからバッファキャッシュに転送される。しかし、メモリアレイへのプログラミングはホストからの転送より時間を要する。図１１は、メモリアレイへのデータのプログラミングにより引き起こされる時間の遅れＴｇａｐを示す。Ｔｇａｐは、８つのセクタをホストからバッファキャッシュに転送するのに要する時間と８つのセクタをバッファキャッシュからメモリアレイに転送するのに要する時間の間の時間差である。この例において、プログラミングに３００マイクロ秒を要するが、Ｔｇａｐは１００マイクロ秒より小さい。このように、プログラミング時間により引き起こされる時間の遅れは、パイプライン操作のために３００マイクロ秒から１００マイクロ秒より小さい値に減じられる。
【００４２】
ライトバックキャッシュ (Write-back cache) 
ライトバックポリシーは、バッファキャッシュまたはバッファキャッシュのセグメントで実施されてもよい。ライトバックポリシーは、キャッシュにおいてＮＶＭに書き込まれることなくホストからのデータが変更されることを許可する。このことは、ＮＶＭとＮＶＭバスの使用を削減する。データをキャッシュの外に出すことを強制するある条件が満たされるまでデータはＮＶＭに書き込まれない。データがキャッシュに存在する間に、データは、ＮＶＭに対するプログラム操作をすることなく１回または複数回更新される。このことは時間を節約し、必要とされるガーベッジコレクションの量も削減する。
【００４３】
図１２は、各々がメモリアレイのメタページに保持されるデータと等価なデータを保持する２つのユニットを有する書き込みキャッシュを使用する書き込みキャッシュ操作のフローチャートである。１つの書き込みキャッシュユニットがいつでも最新の書き込みキャッシュユニットとして指定される。ホストからデータを受け取るとき、最新の書き込みキャッシュユニットは最新の書き込みキャッシュユニットが有効（“キャッシュ有効”）か否かを調べるために先ず検査される（ステップ１２１０）。最新の書き込みキャッシュユニットは、最新の書き込みキャッシュユニットがＮＶＭに書き込まれていないデータを含むならば、有効である。最新の書き込みキャッシュユニットが有効でないならば、それから受け取ったデータが最新の書き込みキャッシュユニットに書き込まれるとともにＮＶＭにおけるデータキャッシュにコピーされるが、メモリアレイにプログラムされない（ステップ１２１２）。最新の書き込みキャッシュユニットが有効ならば、それから受け取られたデータがキャッシュにおけるデータと比較されて“キャッシュヒット”があるかないかを調べる（ステップ１２１４）。受け取られたデータがキャッシュに記憶されるかまたはキャッシュに記憶されたデータとシーケンシャルなデータを取り替える場合、キャッシュヒットが起きる。キャッシュヒットが起きるとき、受け取られたデータが最新の書き込みキャッシュユニットに加えられる（ステップ１２１６）。“キャッシュミス”が起きたとき（受け取られたデータを取り替えず、かつキャッシュにおけるデータとシーケンシャルでないとき）、最新の書き込みキャッシュユニットがメモリアレイに割り当てられ（すでに割り当てられていない場合）（ステップ１２１８）、新しいデータが最新の書き込みキャッシュユニットとして指定される書き込みキャッシュユニットに記憶される（ステップ１２１２）。
【００４４】
セクタが最新の書き込みキャッシュユニットに記憶されるとき、セクタが書き込みキャッシュユニットを充足するならば（ステップ１２２０）、そのとき最新の書き込みキャッシュユニットはフラッシュにプログラムされる（ステップ１２２２）。そのときバッファキャッシュはホストから新しいセクタのデータを自由に受け取る。
【００４５】
動作（セッション）コマンド
前述した例のいくつかは、メモリカードのどこにも記憶されないバッファキャッシュにおけるデータを保持する。バッファキャッシュは一般に揮発性メモリなので、電力を取り除くとき、バッファキャッシュに記憶されたデータは消失される。ホストから電力を取得する取り外し可能なメモリカードにおいて、電力が失われるかもしれないのでメモリカードは揮発性メモリにデータを保持することができない。一群の処理がホスト動作の一部であり、電力が動作のために保持されている場合でさえも、メモリカードは処理がリンクされていることを認識しないかもしれない。処理は、ホストコマンドによって開始されたホストとメモリカードの間の交換、例えばあるセクタを転送するメモリカードによって続行されるあるセクタを読み出すコマンドからなる。カードは処理がリンクされないことを認識しないので、処理の間の時間を使用することができず、かつ電力が消失されるかもしれないのでカードはある操作を実行することができないかもしれない。このような操作は、キャッシング操作、ガーベッジコレクションおよびアドレス翻訳情報更新のようなバックグラウンド処理を含むかもしれない。ＮＶＭに記憶されるプロセスにおけるデータ、バッファキャッシュまたはＣＰＵ  ＲＡＭにおけるデータを含むＮＶＭに記憶されないデータは電力消失のために失われないことは重要である。ホストは、メモリカードへの電力を保証するかもしれないし、別のやり方ではセーブされないデータについてバッファキャッシュまたは他の揮発性メモリを使用可能とするかもしれない。時間の意味のある部分が操作をスケジュールするにあたってより大きな柔軟性を許す操作を行うために利用することができるので、このような電力の保証は操作をより効率的にスケジュールすることも許すかもしれない。例えば、ガーベッジコレクション操作がホストデータ書き込み操作における衝撃を低減するときに、ガーベッジコレクション操作が時間についてスケジュールされるかもしれない。操作がバックグラウンド処理として実行されるとともにこのように他の操作に対してほとんどまたは全く混乱を起こさないように、操作がスケジュールされてもよい。
【００４６】
一実施形態において、ホストは、複合カード処理が同一動作の部分であるとともに電力が少なくとも動作の最後まで維持されることを示す動作コマンド（すなわち“動作＿開始”）を発行し、処理の間中と処理と処理の間の時間にデータキャッシングまたは他のバックグラウンド処理を許す。動作コマンドは、動作継続中にホストにより電力が保証されることを示す。このことは、カードが動作継続中に揮発性メモリを使用してある操作を実行することを許す。動作は、動作終了コマンド（すなわち“動作＿終了”）によって終わらせてもよい。電力供給がもはや保証されないので、“動作終了”コマンドはデータキャッシングを不可能とするかもしれない。動作コマンドは、動作において処理が始まる論理アドレス、処理におけるブロックの数、データ転送レート、その他のホストに有益な情報を認識するかもしれない。メモリカードは、動作処理の間に起きるように揮発性メモリを使用するバックグラウンド処理をスケジュールしてもよい。
【００４７】
もう１つの実施形態において、ストリーミングコマンドはメモリカードからおよびメモリカードへのデータストリームの転送を最適化するために使用される。ホストからの“ストリーム最適化”コマンドはメモリカードにおけるストリーミングデータのキャッシングを可能とするかもしれない。“ストリーム最適化”コマンドはデータストリームの特性を定義し、特定のストリームに関してキャッシングが最適化されるかもしれない。“ストリーム最適化”コマンドはデータストリームに関してコマンド完了時間を特定するかもしれない。追加的なストリーミングコマンドはキャッシュをＮＶＭにフラッシュすることを要求するコマンドを含むかもしれない。別個のコマンドは、（非ストリーミングデータを含む）全てのデータについてキャッシングを可能とするかもしれない。キャッシングが全てのデータに関して可能とされない場合でさえも、ストリーミングコマンドはキャッシングがストリーミングデータに使用されるのを許可するかもしれない。
【００４８】
前述した説明は、本発明の特有の実施形態を詳細に記載するとともに特定の例を用いて本発明の実施形態を記載したものである。しかし、本発明は、開示された実施形態または記載された実施例に限定されるものではない。本発明は、添付の特許請求の範囲の全範囲内においてその権利が保護されるべきであることが理解できよう。
【図面の簡単な説明】
【００４９】
【図１】従来技術のメモリカードを示す。
【図２】本発明の態様が実施されるバッファキャッシュを有するメモリカードを示す。
【図３】区分されたバッファキャッシュを有するメモリカードを示す。
【図４Ａ】先読みキャッシュの実施例を示す。
【図４Ｂ】先読みキャッシュの実施例を示す。
【図４Ｃ】先読みキャッシュの実施例を示す。
【図４Ｄ】先読みキャッシュの実施例を示す。
【図５】先読み実施例についてホストコマンド処理プロセスを示す。
【図６Ａ】先読み実施例についてフラッシュアクセス管理プロセスを示す。
【図６Ｂ】先読み実施例についてフラッシュアクセス管理プロセスを示す。
【図７】２つのキャッシュユニットとこのキャッシュユニットと同じサイズのメタページを有するフラッシュメモリを有するバッファキャッシュの例を示す。
【図８Ａ】データがキャッシュヒットの結果としてバッファキャッシュからホストへ転送される場合の先読みキャッシュ操作の例を示す。
【図８Ｂ】データがキャッシュヒットの結果としてバッファキャッシュからホストへ転送される場合の先読みキャッシュ操作のもう１つの例を示す。
【図８Ｃ】データが部分キャッシュヒットの結果としてバッファキャッシュからホストへ転送される場合の先読みキャッシュ操作の例を示す。
【図９】バッファキャッシュを書き込みキャッシュとして使用する例を示す。
【図１０】ライトスルーキャッシュ操作の例を示す。
【図１１】ホストからバッファキャッシュへおよびバッファキャッシュからＮＶＭへのデータのパイプライン操作の例を示す。
【図１２】ライトバックキャッシュ操作についてのフローチャートである。
【図１】
2007528079.tif 000003
【図２】
2007528079.tif 000004
【図３】
2007528079.tif 000005
【図４Ａ】
2007528079.tif 000006
【図４Ｂ】
2007528079.tif 000007
【図４Ｃ】
2007528079.tif 000008
【図４Ｄ】
2007528079.tif 000009
【図５】
2007528079.tif 000010
【図６Ａ】
2007528079.tif 000011
【図６Ｂ】
2007528079.tif 000012
【図７】
2007528079.tif 000013
【図８Ａ】
2007528079.tif 000014
【図８Ｂ】
2007528079.tif 000015
【図８Ｃ】
2007528079.tif 000016
【図９】
2007528079.tif 000017
【図１０】
2007528079.tif 000018
【図１１】
2007528079.tif 000019
【図１２】
2007528079.tif 000020
【国際調査報告】
2007528079.tif 000021
2007528079.tif 000022
2007528079.tif 000023
2007528079.tif 000024
2007528079.tif 000025