(57)【要約】【課題】特定の論理アドレスに関連するデータと共に、データのバージョンを識別する「シグネチャ」を書き込む。【解決手段】メモリ・デバイスに、それぞれの論理アドレスに関連させた一つ以上のデータ塊が到達すると、各データ塊は、シグネチャが指定され、第一の位置内に保存され、そして第二の位置へコピーされる。そのコピーには、その親データ塊のシグネチャに整合するシグネチャが指定される。一つ以上のデータ塊を含む一つのメモリ・ブロックを消去する前に、まず、それらのデータ塊が既にコピーされているか、すなわち、整合シグネチャを持つそのブロック内のすべてのデータ塊のコピーが、メモリ・デバイス内に存在するかが検証される。【選択図】図４
2008537192.tif 000002
【特許請求の範囲】
【請求項１】
メモリ・デバイスを管理する方法であって、
（ａ）前記メモリ・デバイス内にメイン・メモリを含ませること、
（ｂ）前記メモリ・デバイスのホストによって、前記メモリ・デバイスへ第一のデータ塊を送信すること、
（ｃ）前記第一のデータ塊へシグネチャを指定すること、
（ｄ）前記メイン・メモリ内の第一の位置内に前記第一のデータ塊を保存すること、
（ｅ）前記第一のデータ塊を前記メイン・メモリ内の第二の位置へコピーすることによって、前記第一のデータ塊のコピーを生成すること、そして
（ｆ）前記コピーへ、前記第一のデータ塊の前記シグネチャに整合するシグネチャを指定することからなる、方法。
【請求項２】
前記第一のデータ塊がデータセクタである、請求項１の方法。
【請求項３】
複数の前記第一のデータ塊が、メモリ・デバイスに送信され、各々シグネチャの指定を受け、各々の第一の位置内に保存され、そして各々の第二の位置へコピーされ、さらに、前記コピーの各々が、前記シグネチャのそれぞれの指定を受ける、請求項１の方法。
【請求項４】
前記第一のデータ塊の各々が、それぞれ論理アドレスに関連づけられる、請求項３の方法であって、さらに、
（ｇ）前記第一のデータ塊の少なくとも一つを含む前記メイン・メモリの一つのブロックを消去しようとする際に、
（ｉ）前記メイン・メモリの前記ブロック内に含まれる前記第一のデータ塊の各々に対して、前記第一のデータ塊の各々の前記論理アドレスに関連するすべての前記コピーを検索し、そして
（ii）前記メイン・メモリの前記ブロック内に含まれる前記第一のデータ塊の各々に対して、前記各データ塊の前記論理アドレスに関連する前記コピーの一つの前記シグネチャが、前記各データ塊の前記シグネチャに整合する場合にだけ、前記メイン・メモリの前記ブロックを消去するステップからなる、方法。
【請求項５】
複数の前記第一のデータ塊が、前記メモリ・デバイスへ送信され、それぞれシグネチャの指定を受け、それぞれの第一の位置内に保存され、そして、それぞれの第二の位置へコピーされ、さらに、すべての前記コピーが、前記第一のデータ塊のすべての前記シグネチャに整合する共通シグネチャの指定を受ける、請求項１の方法。
【請求項６】
前記第一のデータ塊の各々が、それぞれ論理アドレスに関連づけられる、請求項５の方法であって、さらに、
（ｇ）前記第一のデータ塊の少なくとも一つを含む前記メイン・メモリの一つのブロックを消去しようとする際に、
（ｉ）前記メイン・メモリの前記ブロック内に含まれる前記第一のデータ塊の各々に対して、前記第一のデータ塊の各々の前記論理アドレスに関連するすべての前記コピーを検索し、そして
（ii）前記メイン・メモリの前記ブロック内に含まれる前記第一のデータ塊の各々に対して、前記各データ塊の前記論理アドレスに関連する前記コピーの一つの前記シグネチャが、前記各データ塊の前記シグネチャに整合する場合にだけ、前記メイン・メモリの前記ブロックを消去するステップからなる、方法。
【請求項７】
すべての前記第二の位置が、前記メイン・メモリの共通ブロック内にあり、前記共通シグネチャが前記共通ブロックに関連している、請求項５の方法。
【請求項８】
前記第一のデータ塊が論理アドレスに関連づけられる請求項１の方法であって、さらに、
（ｇ）前記論理アドレスに関連する第二のデータ塊を、前記ホストによって前記メモリ・デバイスへ送信するステップ、そして
（ｈ）前記第二のデータ塊へシグネチャを指定するステップからなり、
前記第一のデータ塊の前記シグネチャと前記第二のデータ塊の前記シグネチャとが一緒で、前記第二のデータ塊が前記第一のデータ塊を置換することを示す、方法。
【請求項９】
さらに、
（ｉ）前記メイン・メモリ内の第三の位置内に前記第二のデータ塊を保存するステップ、
（ｊ）前記メイン・メモリ内の第四の位置へ前記第二のデータ塊をコピーすることによって、前記第二のデータ塊のコピーを生成するステップ、そして
（ｋ）前記第二のデータ塊の前記コピーへ、前記第二のデータ塊の前記シグネチャに整合するシグネチャを指定するステップからなる、請求項８の方法。
【請求項１０】
さらに、
（ｌ）前記データ塊の一つを含む前記メイン・メモリの一つのブロックのを消去しようとする際に、
（ｉ）前記論理アドレスに関連するすべての前記コピーを検索し、そして
（ii）前記コピーの一つの前記シグネチャが、前記一つのデータ塊の前記シグネチャに整合する場合にだけ、前記メイン・メモリの前記ブロックを消去するステップからなる、請求項９の方法。
【請求項１１】
前記第二のデータ塊の前記シグネチャが、周期的に前記第一のデータ塊の前記シグネチャの直接後に来るものである、請求項８の方法。
【請求項１２】
前記第二のデータ塊の前記シグネチャが、周期的に前記第一のデータ塊の前記シグネチャの直接先に来るものである、請求項８の方法。
【請求項１３】
前記メイン・メモリがフラッシュメモリである、請求項１の方法。
【請求項１４】
さらに、
（ｇ）前記第一のデータ塊と一緒に前記メイン・メモリ内に前記第一のデータ塊の前記シグネチャを保存するステップからなる、請求項１の方法。
【請求項１５】
さらに、
（ｇ）前記メモリ・デバイス内に、前記メイン・メモリから分離した補助メモリを含めるステップ、そして
（ｈ）前記補助メモリ内に、前記第一のデータ塊の前記シグネチャと前記コピーの前記整合シグネチャからなるグループから選択したシグネチャを保存するステップからなる、請求項１の方法。
【請求項１６】
前記メモリがランダムアクセス・メモリである、請求項１５の方法。
【請求項１７】
前記コピーに指定される前記シグネチャが、前記第一のデータ塊の前記シグネチャと同一である、請求項１の方法。
【請求項１８】
ホストによってメモリ・デバイスへ送信されたデータ塊を保存するためのメモリ・デバイスであって、
（ａ）メモリ、そして
（ｂ）コントローラからなり、前記コントローラが、
（ｉ）データ塊へシグネチャを指定するよう、
（ii）前記メモリ内の第一の位置内に前記データ塊を保存するよう、
（iii）前記メモリ内の第二の位置へ前記データ塊をコピーすることによって、前記データ塊のコピーを生成するよう、そして
（iv）前記コピーへ、前記データ塊の前記シグネチャに整合するシグネチャを指定するよう作動可能である、メモリ・デバイス。
【請求項１９】
メモリを含むメモリ・デバイスを管理する方法であって、
（ａ）前記メモリ・デバイスのホストによって前記メモリ・デバイスへ、第一のデータ塊および第二のデータ塊を、両前記データ塊を共通論理アドレスに関連づけて、連続的に送信するステップ、
（ｂ）前記データ塊の各々へそれぞれシグネチャを指定するステップ、この場合、前記第一のデータ塊の前記シグネチャと前記第二のデータ塊の前記シグネチャが一緒で、前記第二のデータ塊が前記第一のデータ塊を置換することを示し、
（ｃ）前記メモリ内のそれぞれの位置内に前記データ塊を保存するステップ、そして
（ｄ）前記ホストから、前記論理アドレスに関連するデータを読み込むための要求を受信すると、前記二つのデータ塊のうちの、そのデータ塊が前記メモリ・デバイスによって二番目に受信されたことを示すシグネチャを持つ前記データ塊を前記ホストへ送信するステップからなる、方法。
【請求項２０】
ホストによって連続的にメモリ・デバイスに送信された第一のデータ塊および第二のデータ塊を、両データ塊を共通論理アドレスに関連づけて保存するためのメモリ・デバイスであって、
（ａ）メモリ、そして
（ｂ）コントローラからなり、前記コントローラが、
（ｉ）各データ塊へ、第一のデータ塊の前記シグネチャと第二のデータ塊の前記シグネチャとが一緒で、第二のデータ塊が第一のデータ塊を置換することを示すシグネチャをそれぞれ指定するよう、
（ii）前記メモリ内のそれぞれの位置内に前記データ塊を保存するよう、そして
（iii）前記ホストから、前記論理アドレスに関連するデータを読み込むための要求を受信すると、前記二つのデータ塊のうちの、そのデータ塊が前記メモリ・デバイスによって二番目に受信されたことを示すシグネチャを持つ前記データ塊を前記ホストへ送信するよう作動可能である、メモリ・デバイス。
【請求項２１】
メモリを含むメモリ・デバイスを管理する方法であって、
（ａ）前記メモリ・デバイスへ１セクタのデータを送信するステップ、
（ｂ）単一の書き込み操作を使用して、前記メモリ内の第一の位置内に前記セクタのデータを保存するステップ、そして
（ｃ）単一の書き込み操作を使用して、前記メモリ内の第二の位置へ前記セクタのデータをコピーするステップからなり、
前記コピーが、前記位置のいずれからも前記データのすべてを読み込むことなく実行されたことを検証可能な様式で、前記保存および前記コピーが実行される、方法。
【請求項２２】
メモリを含むメモリ・デバイスを管理する方法であって、
（ａ）前記メモリ・デバイスへ複数のセクタのデータを送信するステップ、
（ｂ）単一の書き込み操作を使用して、前記メモリの第一のページ内に前記複数のセクタのデータを保存するステップ、そして
（ｃ）単一の書き込み操作を使用して、前記メモリの第二のページへ前記複数のセクタのデータをコピーするステップからなり、
前記ページのいずれからも前記データのすべてを読み込むことなく、前記にコピーが実行されたことを検証可能な様式で、前記保存および前記コピーが実行される、方法。
【請求項２３】
（ａ）メモリ、そして
（ｂ）コントローラからなるメモリ・デバイスであって、前記コントローラが、
（ｉ）単一の書き込み操作を使用して、前記メモリ内の第一の位置内に、一つのセクタのデータを保存するよう、そして
（ii）単一の書き込み操作を使用して、前記メモリ内の第二の位置へ前記セクタのデータをコピーするよう作動可能であり、
前記位置のいずれからも前記データのすべてを読み込むことなく、前記コピーが実行されたことを検証可能な様式で、前記保存および前記コピーが実行される、メモリ・デバイス。
【請求項２４】
（ａ）メモリ、そして
（ｂ）コントローラからなるメモリ・デバイスであって、前記コントローラが、
（ｉ）単一の書き込み操作を使用して、前記メモリの第一のページ内に複数のセクタのデータを保存するよう、そして
（ii）単一の書き込み操作を使用して、前記メモリの第二のページへ前記複数のセクタのデータをコピーするよう作動可能であり、
前記ページのいずれからも前記データのすべてを読み込むことなく、前記コピーが実行されたことを検証可能な様式で前記保存および前記コピーが実行される、メモリ・デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリ・デバイス内へ、着信データのストリームを効率的に保存するための方法およびシステムに関し、特に、そのような保存の目的に必要なコピー操作を管理するための方法およびシステムに関する。
【背景技術】
【０００２】
ラッサー氏らが２００４年１２月１７日に出願した、「フラッシュメモリ内のプログラミング処理の命令に関する制約を扱うための方法」という名称の（すべての目的のために参照によって本文に記述したものとして含む）米国特許出願第６０/６３６，５１０号は、着信データをすぐにメモリ・デバイス内のそれらの目標位置に書き込むことが実用的でないまたは望ましくない、例えばデジタルオーディオ・ストリームまたはデジタルビデオ・ストリーム等の着信データのストリームを保存するための方法およびシステムを開示している。その代わり、ラッサー氏らの方法およびシステムは、まず、着信データを第一の位置に保存して、その後、その第一の位置からデータを回収し、それらを二度目として、今度はそれらの所望の目標位置に書き込む。
【０００３】
ラッサー氏らのシステムは、不揮発性メモリ内へ着信セクタを二回書き込む。したがって、そのシステムは、その第一の位置から第二の位置へ、各セクタを移動しなければならない。そのような移動を実行する時間は柔軟であり、その移動を、時間的に第一の書き込みの近くで実行してもよいし、またはメモリ・デバイスのコントローラは、その移動を実行する前に比較的長時間待ってもよい。しかし依然として、遅かれ早かれ、その第一の位置から第二の位置へ、データの各セクタを移動させることが常に必要である。その移動後、第一の書き込みのために使用した記憶領域は、もはや必要でないので、新しいデータに対して使用するために再利用できる。
【０００４】
注意すべきは、用語「第一の位置」および「第二の位置」が、必ずしも、記憶デバイスの物理的に別個な領域に言及するわけではないということである。異なるセクタの第一および第二の「位置」が、第一の書き込みだけに使用される領域と第二の書き込みだけに使用される領域との間の明確な境界なしで、混在してもよい。さらに、記憶単位は、ある時点においてはいくつかのセクタに対する第一の位置として、また第二の時点においてはいくつかの他のセクタに対する第二の位置として機能してもよい。しかしながら典型的に、それらの管理を単純にするために、「第一の位置」と「第二の位置」とを一緒にまとめることが便利である。単純にするために、下記の説明では、そのようなグループが使用されるものとするが、本発明の範囲を制限するものと考えるべきではない。
【０００５】
例えばラッサー氏らのメモリ・デバイスの開発者が直面する一つの問題は、第一の書込み操作において書き込まれた特定のセクタが、既にその第二の位置へ移動されていることをどのように伝えるかである。それによって、最初にセクタが書き込まれた物理位置を、新しいものに対して利用できる。もし、第一の位置から第二の位置へデータを移動させている間にコピーされるデータの物理ユニットが、消去ブロック（単一の消去操作で消去できる記憶装置の最小塊、典型的に１６キロバイト〜２５６キロバイト）であったなら、解決策は単純だったであろう。その最終位置内へデータ・ユニットをコピーした直後に、メモリ・デバイスのコントローラは、第一のコピーを含むユニットを消去できる。残念なことに、これは実際とは異なる。それらの第一および第二の物理位置間でのデータ移動中にコピーされるデータの典型的なユニットは、セクタ（ホストと記憶デバイスとの間で交換されるデータの最小塊、典型的に５１２バイト）、またはページ（記憶デバイス内へ単一の書込み操作で書き込むことが可能な物理記憶の最小塊、典型的に５１２バイト〜２キロバイト）、あるいは少数のセクタまたはページである。データ塊がその新しい位置へコピーされる場合、典型的に、同じ消去ブロック内の他のデータ塊は、依然としてコピーされておらず、したがって依然保持する必要がある。コピー・データを含むブロックの消去は、それらの未コピー・データ塊を破壊してしまうため、実行すべきでない。
【０００６】
下記の説明では、（単純にするために）データは、ホストと交換され、セクタに等しい塊で物理記憶位置間でコピーされる、と仮定する。これは、本発明の範囲を決して制限せず、連続する操作が異なるデータ塊サイズを使用する様々なサイズのケースを含み、データ塊のすべてのサイズに完全に適用可能である。
【０００７】
従来の技術によるフラッシュ管理システムは、通常、もはや有効でない、および／あるいはもはや保持する必要なしと、データ塊を標識する「削除マーク」という技術を使用する。そのようなマークは、典型的に、セクタ・データに関連するオーバーヘッド領域内に位置する単一ビットまたは数ビットの論理フラグである。例えば、フラッシュメモリ・デバイス内に保存されたセクタが、ホストから受信した新しいデータによって上書きされるとき、フラッシュ管理システムは、新しく割り当てられた位置に新しいデータを保存することに加えて、セクタの古いコピーに関連するオーバーヘッド領域内へ削除マークを書き込む。この削除マークは、そのセクタ内に保存されたデータが、もはや有効でなく、必要に応じて消去できることを示す。典型的に、フラッシュ管理システムは、（定期的に、またはもっと空き領域が必要になったときに）消去ブロックのすべてのセクタが、削除と標識されているかどうかをチェックする。そして、そうである場合は、ブロックは有用なデータを含まないので、消去して、新しいデータのために再生利用する。上書きセクタを標識するこの方法を用いるフラッシュ管理システムの一つの例が、バン氏への米国特許第５，４０４，４８５号に開示されている。また、ラッサー氏は、ＮＡＮＤフラッシュ記憶デバイス内の各ページに対して設けられたオーバーヘッド領域（「追加領域」または「スペア領域」と呼ぶ）を、制御および管理フィールドを保存するために使用するフラッシュ管理システムの例を米国特許第６，６７８，７８５号に開示している。これら両特許は、すべての目的のために参照によって本文に完全に記述したものとする。
【０００８】
ある人は、この「削除マーク」の方法を、第一の物理位置に書き込まれたデータが第二の物理位置へ既にコピーされてしまったかどうかを見分けるという、上記提示の問題への解決策を提供するように拡張できる、と予想するだろう。１セクタのデータをコピーすると即座に、フラッシュ管理システムは、そのセクタに関連するオーバーヘッド領域内に「コピー済みマーク」を書き込み、そして１ブロックのすべてのセクタがこのマークを持つことを検知したときに、そのブロックを消去して再利用できる。この「コピー済みマーク」の方法は、本文では「マーク方法」または「マーキング方法」と称する。
【０００９】
残念ながら、このマーキング方法を使用することには、二つの主要な欠点がある。第一の欠点は、書き込み性能に関する。データ記憶の最も一般的なフラッシュ・タイプであるＮＡＮＤフラッシュ・デバイスにおいては、データはページ単位でのみ書き込み可能である。単一バイトのデータを書き込みたい場合でさえも、デバイスは、その１バイトを書き込むために、フルページを書き込む場合と正確に同じ時間を必要とする。フルページを書き込む場合には例えば５１２バイトを転送することに比べ、単一バイトを書き込む場合にはバスを介してデバイス内へ、僅かに１バイトだけを転送するので、いくらか時間の節約になることは事実である。しかし、フラッシュデバイスにおいては、典型的に、内部書込み操作が、バスを介したデバイス内へのデータ転送よりも非常に遅いため、マークを書き込むのにかかる時間は、満杯セクタのデータを書き込むのにかかる時間に近い。したがって、データの各セクタに対してマークの書込み操作を付加しなければならないとしたら、各セクタの保存毎に著しく多くの時間を費やすことになる。
【００１０】
以下の数値的な例を考察する。５１２バイトの複数のページを持つＮＡＮＤフラッシュデバイスを使用すると仮定する。フラッシュ・ページの書き込み時間が２００マイクロ秒、ページの読み取り時間が１５マイクロ秒、そしてデバイス内への、またはデバイスからのバスを介したフルページの転送が３０マイクロ秒を要すると仮定する。マークを使用しない場合、データの各セクタは、まず、バスを介してフラッシュデバイス内へ移動され、そして第一の位置内へ書き込まれ、そしてバスを介して読み戻してから再びバスを介してデバイス内へ移動され、最終的に第二の位置内へ書き込まれる。全部で、二回の書き込み操作、一回の読み込み操作、そして三回のバス転送の合計となり、各セクタ保存毎に２ｘ２００＋１ｘ１５＋３ｘ３０＝５０５マイクロ秒が必要である。しかし、セクタが既にコピーされてしまったことを示すために上記シーケンスの後に第一の位置内へマークを書き込む場合は、（バスを介してマークを移動させるのに必要な短時間を無視して）追加で２００マイクロ秒を費やす必要があり、総時間を７０５マイクロ秒へ増加させる。マークを用いた場合は、セクタの保存毎に費やされる時間に深刻な増加があることが分かる。この例では、マークを用いた場合、セクタの保存が約４０%遅くなる。もし、（すべての他のパラメータをそのままにすると仮定して）１ミリ秒に近い遅い書き込み時間を持つマルチレベル・セル（ＭＬＣ）ＮＡＮＤフラッシュを採用した場合、マークを付加する影響は、セクタ保存毎に必要な時間を、約２１００マイクロ秒から約３１００マイクロ秒へ増加させることになり、ほぼ５０%も遅くなる。これは、マーク方法の重大な欠点である。
【００１１】
マーク方法の第二の重大な欠点は、パーシャル・ページ・プログラミング（ＰＰＰ）に関わる。ＰＰＰは、ページを含むブロックを消去する必要が発生するまでに、ページ内への何度の書き込み操作が可能なのかを決定するフラッシュデバイスの特性である。市販のＮＡＮＤフラッシュ・デバイスの典型値は、３から８である。しかしながら、ＭＬＣ−ＮＡＮＤデバイスは、僅かに１のＰＰＰ値を持ち、これは、ページを含むユニットを消去する必要が発生する前に、ページ内へ一度だけ書き込むことができることを意味する。フラッシュ管理システムは、ページに関連する制御フィールドを書き込むために、いくつかの書き込み操作を用いる必要がある場合もあり、その場合、管理アルゴリズムをサポートするためにそれらのフィールドを必要とするフラッシュデバイスのブロックを消去する。このために、フラッシュ管理システムは、利用可能なＰＰＰ操作のいくつかを消費してもよい。
【００１２】
「コピー・マーク」を使用することは、着信セクタの第一の記憶に使用する各ページに対して、一回の書き込み操作を消費する。これは、フラッシュ管理アルゴリズムに利用可能な書き込み操作が一つ少なくなることを意味する。そして、このことが、使用可能なアルゴリズムのタイプを制約することになる。しかし、ＭＬＣ−ＮＡＮＤ等の、ＰＰＰが１のフラッシュデバイスにとっては、状況はさらに悪い。上述の通り、そのようなデバイスでは、ページ内へは単一の書き込み操作だけが可能である。したがって、この場合、マーク方法を用いることは単純に不可能である。単一の許容書き込み操作は、記憶データを書き込むために用いなければならない。後に（データをコピーした後に）コピー済みとページを標識する時が来たときには、マークを書き込むための書き込み操作を実行することは許可されない。
【００１３】
故に結論として、第一の物理位置から第二の物理位置へコピー済みとしてページを識別するためのマーク方法には重大な欠点があり、さらに、いくつかのケース（すなわちＭＬＣ−ＮＡＮＤ）では使用できない。
【００１４】
したがって、メモリ・デバイスの書き込み性能を低下させることなく、また追加の書き込み操作を消費することなく、不揮発性記憶デバイスのコピー済みセクタを識別可能な方法に対する必要性が広く認識され、そのような方法を得ることは非常に有利である。
【発明の開示】
【発明が解決しようとする課題】
【００１５】
本発明の基本的な考えは、特定の論理アドレスに関連するデータと共に、データのバージョンを識別する「シグネチャ」を書き込むことである。メモリ・デバイス内の同じデータのコピーが、「整合する」シグネチャを共有するため、第一の物理位置に初めに書き込んだデータが、既に第二の物理位置へコピーされているかどうかを判定できる。これによって、第一の物理位置は、自由に消去可能になる。シグネチャをデータと共に書き込むので、本発明は、ＰＰＰ＝１のメモリ・デバイスへ適用できる。
【００１６】
したがって、本発明は、メモリ・デバイスを管理するための、以下のことを含む方法を提供する。（ａ）メモリ・デバイス内にメイン・メモリを含むこと。（ｂ）メモリ・デバイスのホストによって、メモリ・デバイスへ第一のデータ塊を送信すること。（ｃ）第一のデータ塊へシグネチャを指定すること。（ｄ）メイン・メモリ内の第一の位置内に第一のデータ塊を保存すること。（ｅ）メイン・メモリ内の第二の位置へ第一のデータ塊をコピーすることによって、第一のデータ塊のコピーを生成すること。そして（ｆ）そのコピーへ、第一のデータ塊のシグネチャに整合するシグネチャを指定すること。
【００１７】
さらに、本発明は、ホストによってメモリ・デバイスへ送信したデータ塊を保存するための、以下のものを含むメモリ・デバイスを提供する。（ａ）メモリ。そして（ｂ）コントローラ。このコントローラは、（ｉ）データ塊へシグネチャを指定するよう、（ii）メモリ内の第一の位置内にデータ塊を保存するよう、（iii）メモリ内の第二の位置へデータ塊をコピーすることによって、データ塊のコピーを生成するよう、そして（iv）そのコピーへ、データ塊のシグネチャに整合するシグネチャを指定するよう作動可能である。
【００１８】
メモリ・デバイスを管理するための、本発明の基本的な方法は、メモリ・デバイス内にメイン・メモリを含ませることから始まる。メモリ・デバイスのホストは、メモリ・デバイスへ第一のデータ塊を送信する。第一のデータ塊へシグネチャが指定され、第一のデータ塊は、メイン・メモリ内の第一の位置内に保存される。第一のデータ塊は、また、メイン・メモリ内の第二の位置へもコピーされる。これによって、第一のデータ塊のコピーが生成される。第一のデータ塊のシグネチャに整合するそのコピーへ、シグネチャが指定される。
【００１９】
第一のデータ塊は、データ・セクタであることが好ましい。
【００２０】
この方法は、複数の第一のデータ塊に対して実行することが好ましい。複数の第一のデータ塊は、ホストによってメモリ・デバイスに送信され、それぞれシグネチャが指定され、それぞれメイン・メモリ内の第一の位置内に保存され、そしてそれぞれメイン・メモリ内の第二の位置へコピーされる。各コピーには、そのコピー元である第一のデータ塊に指定したシグネチャに整合するシグネチャをそれぞれ指定する。代替的に、すべてのコピーに、すべての第一のデータ塊のすべてのシグネチャに整合する共通シグネチャを指定してもよい。この選択肢の下では、すべての第二の位置が、メイン・メモリの共通ブロック内にあり、そのブロックに共通シグネチャを関連させることが好ましい。
【００２１】
この方法を複数の第一のデータ塊に対して実行した場合、各第一のデータ塊がそれぞれ論理アドレスに関連することが好ましい。一つ以上の第一のデータ塊を含むメイン・メモリの一つのブロックを消去しようとする際に、そのブロック内に含まれる各第一のデータ塊に対して、その第一のデータ塊の論理アドレスに関連したすべてのコピーを検索する。そして、ブロック内に含まれる各第一のデータ塊に対して、その第一のデータ塊の論理アドレスに関連したコピーの一つが、その第一のデータ塊のシグネチャに整合するシグネチャを持つ場合にだけ、そのブロックを消去する。
【００２２】
第一のデータ塊が論理アドレスに関連づけられていることが好ましい。ホストは、メモリ・デバイスへ、その論理アドレスに関連した第二のデータ塊をも送信し、第一のデータ塊のシグネチャと第二のデータ塊のシグネチャとが一緒で、第二のデータ塊が第一のデータ塊を置換することを示すよう、第二のデータ塊にシグネチャを指定する。第二のデータ塊がメイン・メモリ内の第三の位置内に保存され、また、メモリ内の第四の位置へコピーされることによって、第二のデータ塊のコピーを生成することがより好ましい。そして第二のデータ塊のコピーには、第二のデータ塊のシグネチャに整合するシグネチャを指定する。データ塊の一つを含むメイン・メモリの一つのブロックを消去しようとする際に、論理アドレスに関連したすべてのコピーを検索することが最も好ましい。ブロックが消去可能となるための必要条件は、その一つのデータ塊のシグネチャにコピーの一つのシグネチャが整合することである。また、第二のデータ塊のシグネチャが、第一のデータ塊のシグネチャの周期的に直接後に来るもの、または周期的に直接先に来るものであることが最も好ましい。
【００２３】
メイン・メモリがフラッシュメモリであることが好ましい。
【００２４】
第一のデータ塊のシグネチャを、第一のデータ塊と共にメイン・メモリ内に保存することが好ましい。
【００２５】
オプションとして、メイン・メモリから分離した補助メモリをメモリ・デバイス内に含め、そして第一のデータ塊のシグネチャまたは第一のデータ塊のコピーのシグネチャのいずれかを、補助メモリ内に保存してもよい。補助メモリがランダムアクセス・メモリであることが最も好ましい。
【００２６】
第一のデータ塊のコピーに指定するシグネチャは、第一のデータ塊のシグネチャと同一であることが好ましい。
【００２７】
本発明の主要な用途は、ＰＰＰ＝１のメモリ・デバイスに対してさえも機能する「コピー・マーク」同等物を提供することであるが、当業技術者には、本発明が、また、ＰＰＰ＝１のメモリ・デバイスに対して「消去マーク」同等物をも提供することは明確である。
【００２８】
したがって、本発明は、メモリを含むメモリ・デバイスを管理するための、次のステップを含む方法を提供する。（ａ）メモリ・デバイスのホストによって、メモリ・デバイスへ第一のデータ塊および第二のデータ塊を、両データ塊を共通論理アドレスに関連させて、連続的に送信するステップ。（ｂ）第一のデータ塊のシグネチャと第二のデータ塊のシグネチャとが一緒で、第二のデータ塊が第一のデータ塊を置換することを示すシグネチャを各データ塊へそれぞれ指定するステップ。（ｃ）データ塊をメモリ内のそれぞれの位置に保存するステップ。そして（ｄ）ホストから、論理アドレスに関連したデータを読み込む要求を受信すると、二つのデータ塊のうち、そのデータ塊がメモリ・デバイスによって二番目に受信されたことを示すシグネチャを持つデータ塊を、ホストへ送信するステップ。
【００２９】
さらに、本発明は、ホストがメモリ・デバイスへ連続的に送信した第一のデータ塊および第二のデータ塊を、両データ塊を共通論理アドレスに関連させて保存するための、（ａ）メモリ、そして（ｂ）コントローラを含むメモリ・デバイスを提供する。このコントローラは、（ｉ）第一のデータ塊のシグネチャと第二のデータ塊のシグネチャとが一緒で、第二のデータ塊が第一のデータ塊を置換することを示すシグネチャを、各データ塊へそれぞれ指定するよう、（ii）メモリ内のそれぞれの位置内にデータ塊を保存するよう、そして（iii）ホストから、論理アドレスに関連したデータを読み込む要求を受信すると、二つのデータ塊のうち、そのデータ塊がメモリ・デバイスによって二番目に受信されたことを示すシグネチャを持つデータ塊をホストへ送信するよう作動可能である。
【００３０】
本発明は、「コピー済みマーク」方法を用いた場合に必要であろう二つの書き込み操作を使用せずに、ラッサー氏らのＵＳ６０/６３６、５１０の内容で用いた場合、単一の書き込み操作を使用して、メモリ・デバイス内の第一の位置内にデータを保存する。同様に、第二の位置へのデータの内部コピーは、単に一回の書き込み操作を必要とする。にもかかわらず、データの二つのバージョンが整合シグネチャを持つため、データの二つのバージョンのビット単位の比較を実行することなく、コピーが実行されたかどうかを検証することが可能である。したがって、本発明は、以下の通りに一般化できる。
【００３１】
本発明は、メモリを含むメモリ・デバイスを管理するための、次のステップを含む方法を提供する。（ａ）メモリ・デバイスへ１セクタのデータを送信するステップ。（ｂ）単一の書き込み操作を使用して、メモリ内の第一の位置内にそのセクタ・データを保存するステップ。そして（ｃ）単一の書き込み操作を使用して、メモリ内の第二の位置へセクタ・データをコピーするステップ。この場合、保存およびコピーは、いずれの位置からもデータのすべてを読み込むことなく、コピーが実行されたことを検証可能な様式で実行される。
【００３２】
さらに、本発明は、メモリを含むメモリ・デバイスを管理するための、次のステップを含む方法を提供する。（ａ）複数のセクタのデータをメモリ・デバイスへ送信するステップ。（ｂ）単一の書き込み操作を使用して、それら複数のセクタ・データをメモリ内の第一のページ内に保存するステップ。そして（ｃ）単一の書き込み操作を使用して、それら複数のセクタ・データをメモリの第二のページへコピーするステップ。この場合、保存およびコピーは、いずれのページからもデータのすべてを読み込むことなく、コピーが実行されたことを検証可能な様式で実行される。
【００３３】
さらに、本発明は、（ａ）メモリ、そして（ｂ）コントローラを含むメモリ・デバイスを提供する。このコントローラは、（ｉ）単一の書き込み操作を使用して、メモリ内の第一の位置内に１セクタのデータを保存するよう、そして（ii）単一の書き込み操作を使用して、そのセクタのデータをメモリ内の第二の位置へコピーするよう作動可能である。この場合、保存およびコピーは、いずれの位置からもデータのすべてを読み込むことなく、コピーが実行されたことを検証可能な様式で実行される。
【００３４】
さらに、本発明は、（ａ）メモリ、そして（ｂ）コントローラを含むメモリ・デバイスを提供する。このコントローラは、（ｉ）単一の書き込み操作を使用して、メモリの第一のページ内に、複数のセクタのデータを保存するよう、そして（ii）単一の書き込み操作を使用して、それら複数のセクタ・データをメモリの第二のページへコピーするよう作動可能である。この場合、保存およびコピーは、いずれのページからもデータのすべてを読み込むことなく、コピーが実行されたことを検証可能な様式で実行される。
【００３５】
本発明を、例として、添付の図面を参照しながら説明する。
【発明を実施するための最良の形態】
【００３６】
本発明は、フラッシュメモリ等の不揮発性メモリ内にデータを保存するための方法およびシステムに関する。具体的には、本発明は、メモリ内の一つの物理位置からもう一つの物理位置へコピーされる必要があるデータが、そのコピーが実行される前に消去されることがないことを保証するために用いることができる。
【００３７】
本発明による不揮発性メモリ管理の原理および作用は、図面とその説明文を参照することによって、よりよく理解できる。
【００３８】
本発明は、シグネチャとして機能する制御フィールドをセクタの各コピーに関連づけることに基づく。このシグネチャは、セクタ・データの連続的アップデートで異なることにより、セクタ・データのバージョンを一意的に識別する。セクタがフラッシュメモリ・デバイス内へ書き込まれ、その第一の位置内へ保存されるときはいつも、フラッシュ管理システムは、そのデータにシグネチャ値を充てる。「シグネチャ」によって、メモリ・デバイス内に現存する、同じ論理セクタの以前のバージョンに関連する対応フィールドから異なることを保証する数値を意味する。「論理セクタ」によって、メモリ・デバイスのホストが、そのセクタ・アドレスが常に同じセクタを代表するかのように任意のセクタ・アドレスを繰り返し更新する、または上書きすることができるよう、ホストが観察してアドレス指定を行うセクタを意味する。だが実際には、セクタ・データの各アップデートは、記憶システム内の異なる物理位置内に保存することが可能である。論理セクタ（または「仮想セクタ」）のイメージを提供するフラッシュ管理システムは、バン氏（既に上記の米国特許第５，４０４，４８５号）、ラッサー氏（既に上記の米国特許第６，６７８，７８５号）によって開示され、バン氏の米国特許第５，９３７，４２５号、そしてラッサーへの米国特許第６，５９１，３３０号にも開示されている。
【００３９】
典型的なケースでは、どの時点でも、論理セクタの、多くてもたった二つのバージョンが、メモリ・デバイス内に存在する。一つのバージョンは、現在の書き込み要求によって上書きされるものであり、そして第二のバージョンは、現在の操作が提供する新しいデータである。いくつかのフラッシュ管理システムにおいては、セクタの、２を超えるバージョンが一緒に保持されるケースがあってもよい、しかし、これらのケースでさえ、保持されるバージョンの数は小さい。したがって、通常、シグネチャを生成するために単純な方法を用いてもよい。例えば、シグネチャ・フィールドは、ほんの数ビットの長さ（例えば３ビット）でもよい。そして新しいバージョン毎にシグネチャの値を周期的に増加させることによって、連続する値を生成する。換言すれば、シグネチャの利用可能な値は、｛０、１、２、３、４、５、６、７｝である。セクタの新しいバージョンを受信したら、現在保存されている前バージョン内のシグネチャ値を調べ、それを１だけ増加させ、その結果を新しいシグネチャとして使用する。先のシグネチャが７である場合、巡回群としての一連の値から、新しいものは０となる。この種のシグネチャは、データの「世代」を表すようなものであるから、「世代シグネチャ」または単純に「世代」と言及する。この場合、高い世代値は、より新しいバージョンのデータに関わる（もちろん、この類似は、７から０へ移るときに壊れるものである）。
【００４０】
セクタがその第一の物理位置からその第二の物理位置へ後にコピーされるとき、セクタはそのシグネチャ・フィールドを保持する。換言すれば、第二の位置内のセクタのコピーは、そのセクタが第一の位置で持っていたのと同じシグネチャ値を持つ。本発明の利点は、マーク方法の欠点を負うことなく、シグネチャ・フィールドが「コピー・マーク」の機能を提供することである。
【００４１】
まず、シグネチャを用いることにより、どのようにマーク機能が提供されるかを説明する。フラッシュ管理システムは、セクタを含むブロックを消去して再利用できるよう、第一の記憶位置内の任意のセクタが既にコピーされているのかどうかを検知しなければならないときにはいつも、第一の位置内のセクタに関連するシグネチャ・フィールドと、第二の位置内の同じ論理セクタに関連するシグネチャ・フィールドを探す。両方の値が合致すれば、セクタは既にコピーされており、消去が可能である。それらの値が合致しない場合、セクタは未だにコピーされておらず、セクタをその第一の位置内に依然として保持する必要がある。この方法を、効果的なセクタ比較演算と見なしてもよい。もちろん、論理セクタの二つのバージョンの完全なデータを読み出し、それらの各バイトを比較することによって、手元にある問題を解決することができる。これによって、二つのコピーが同一（この場合、第一の位置を消去できる）、または同一でない（この場合、第一の位置をまだ消去すべきでない）かが分かる。しかしながら、そのような完全なデータ比較は、高度に非能率的であり、実用的な解決策ではない。本発明は、非常に低コストで、同等な結果を提供する。完全なセクタではなく、僅かに一つのフィールドを比較し、また、完全なセクタではなく僅かに一つのフィールドを、バスを介して読み出さなければならないだけである。
【００４２】
さて、図面を参照する。図１は、ホスト・コンピュータがセクタをメモリ・デバイス内に保存するように送信するときに、本発明の方法を用いてメモリ・デバイス内で何が実行されるのかを示す。ステップ１１０で、メモリ・デバイスは、ホストからセクタ・データを受信する。それには、データの論理セクタ・アドレスが付随する。ステップ１２０で、その論理セクタの現在のバージョンに関連するシグネチャを検索する。この値は、記憶システムのコントローラのＲＡＭ内に保持された表から検索してもよいし、またはフラッシュメモリから読み込んでもよい。ステップ１３０で、論理セクタの新しいバージョンに関連させるための、シグネチャの新しい値を計算する。世代タイプのシグネチャを使用する場合は、その計算は、単に先のシグネチャを周期的に増加させるだけである。ステップ１４０で、新しく計算したシグネチャが付随する、セクタの新しいバージョンを第一の位置内に保存する。
【００４３】
図２は、第一の位置に存在するセクタを第二の位置へコピーするときに、本発明の方法を用いてメモリ・デバイス内で何が実行されるのかを示す。ステップ２１０で、コピーすべきセクタを、そのシグネチャ・フィールドと共に第一の位置から読み込む。ステップ２２０で、第二の位置に対するシグネチャ値を、第一の位置内のシグネチャに合致するようにセットする。ステップ２３０で、セクタを、新しいシグネチャ値を付随させて、第二の位置内へ書き込む。
【００４４】
図３は、第一の位置内のセクタが第二の位置内へ既にコピーされたかどうかを判定するときに、本発明の方法を用いてメモリ・デバイス内で何が実行されるのかを示す。ステップ３１０で、第一の位置内のセクタのシグネチャ値を検索する。ステップ３２０で、第二の位置内のセクタのシグネチャ値を検索する。両検索は、ＲＡＭ内の表から、あるいはフラッシュメモリから行ってもよい。ステップ３３０で、これら二つの検索値を、それらが合致するかどうかチェックする。それらが合致する場合、ステップ３４０で、セクタが既にコピーされており、もはや第一の位置内に必要ないと結論を下す。それらが合致しない場合は、ステップ３５０で、セクタが未だにコピーされておらず、第一の位置内に依然として保持すべきであると結論を下す。
【００４５】
上記のアルゴリズムは、マーク方法の欠点で苦しむことなく、コピー識別問題を解決する。
【００４６】
Ａ．本発明の方法は、追加の書き込み操作を全く付加しないため、性能に対するペナルティを被ることはない。データの各バージョンに対してシグネチャ・フィールドが書き込まれるとしても、このフィールドは、データと同じ書き込み操作中に常に書き込まれるものであるため、余分な時間を全く付加しない。これは、ＮＡＮＤフラッシュ内における書き込みのための基本塊は１ページであり、書き込み操作においてページ内で更新されるバイト数に関係なく、その操作は同じ時間を費やす。これは、マークをデータと共に第一の記憶位置内へ書き込むことができずにマークを別個の操作で書き込まなければならないマーク方法と異なる。
【００４７】
Ｂ．本発明の方法は、追加の書き込み操作を全く付加しないため、ＰＰＰ特性を消費することは全くない。本発明の方法は、たとえＰＰＰ＝１を持つＭＬＣ−ＮＡＮＤデバイスでさえも使用できる。もう一度、これは、第一の記憶位置内へのマークの書き込みを別個の書き込み操作として実行しなければならないマーク方法に対比すべきである。
【００４８】
以下は、本発明の範囲内にある、上記の方法のいくつかの変形に関する注釈である。
【００４９】
１．上記の説明においては、シグネチャの同値がセクタの第一の位置および第二の位置内で使用されるように述べたが、これは、厳密に必要なことではない。第一の位置内の第一のシグネチャ値が第二の位置内のシグネチャ値にマッチするかどうかをフラッシュ管理システムが判断可能なだけ、二つのフィールド間に十分な対応性がある限りにおいて、二つの位置内のシグネチャの値は異なってもよい。例えば、第二の位置内のシグネチャ値は、第一の位置内のシグネチャ値のビット対ビットの論理補数になるようにセットしてもよい。本文のいずれの箇所においても用語「整合シグネチャ」は、単に同値ばかりでなく、第一の位置内の第一のシグネチャ値が第二の位置内のシグネチャ値にマッチするかどうかの判断を可能にするような対応性をも含むと解釈すべきである。
【００５０】
２．上記の説明では、第二の位置内の各セクタが、それと共に保存されるシグネチャ・フィールドを持つ、と仮定した。しかしこれは、厳密に必要なことではない。第二の物理位置内の複数のセクタをまとめて、共有のシグネチャ・フィールドを使用するようにすれば、より効率的である。例えば、消去ブロック等のユニットに関連させて第二の位置シグネチャ・フィールドを持つことは、効率的である。この場合、消去ブロック内の各セクタは、たとえセクタそれ自体内にシグネチャ・フィールドがないとしても、消去ブロックに関連したシグネチャ値に等しいシグネチャ値を持つと理解する。このようなスキームは、第一の位置から第二の位置へのコピー・プロセスが、各セクタに対して独立的に実行されずに、ユニット塊で実行されるときに有用である。この応用では、シグネチャ・フィールドが、第二の位置内のセクタに関連づけられて書き込まれるとの記述がある場合はいつも、各セクタが、直接的に関連づけられたシグネチャ・フィールドを持つケースばかりでなく、複数のセクタが一つのシグネチャ・フィールドを共有するため、少なくともいくつかのセクタ対して、シグネチャ・フィールドが、例えば、消去ブロックのセクタにではなく、その消去ブロックに直接的に関連したシグネチャ・フィールドによって、僅かに間接的に関連づけられるケースをも含むと解釈すべきである。
【００５１】
３．上記の説明では、セクタの僅かに二つのバージョンが記憶システム内にいつも存在する、と仮定した。これは、間接的に、セクタへの次のアップデートが受信されるときには、システムは、その第一の位置からその第二の位置へ既に最後のバージョンをコピーして、そして最後のバージョンに先行したバージョンを既に消去していることを意味する。しかしこれは、厳密に必要なことではない。本発明の方法は、論理セクタが記憶システム内に依然として二つの前バージョンを持つ間に論理セクタへの新しいアップデートが到着するケースにも適用可能に容易に拡張できる。このような場合、以下の一つを実行してもよい。
【００５２】
ｉ．もはや必要ではないので、前バージョンをコピーするのをやめる。第一の位置内に最新バージョンを保存し、そのとき、それが本発明の方法に従ってコピーされることを確実にする。例えば、第一の記憶位置内のバージョンの順番を観察し、最新でないものをスキップすることによって、（決してコピーされることのない）飛ばしたバージョンが、正しくそのように識別されることを確実にするように注意する。
【００５３】
ii．新しいバージョンにより高いシグネチャ値を充て、本発明の方法による前バージョンのコピー操作を省略しない。後で、より新しいバージョンを、（その異なるシグネチャ値から）新しいバージョンとして識別し、本発明の方法によって、第二の位置へコピーすることになる。このアプローチは、（より新しいデータによって取って代わられたことが既に分かっているデータをコピーするので）不必要なコピー操作を浪費するが、具現するのがより単純である。
【００５４】
４．上記の説明は、各セクタが別個のページ内へ書き込まれるケースにだけ適用する、と誤解すべきではない。これは、そうではない。本発明は、多少の論理セクタが同じ物理ページ内に保存されるメモリ・デバイスに、完全に適用できる。これは、フラッシュデバイスが２キロバイトのページを持ち、ホストが記憶システムと５１２バイトのセクタを交換するケースで、正にそうである。この場合は、１ページ内に４セクタが一緒に保存される。そのような記憶システムでは、本発明の方法は、ページ内へのセクタのグループ化に関係なく、各セクタがそれ自身のシグネチャ・フィールドを持つ各セクタに対して、別個に適用すべきである。そのようなケースにあり得る一つの相違点は、各セクタが個別の操作で書き込めるというよりもむしろ、複数のセクタを含むページが、単一操作で書き込めるということである。
【００５５】
図４は、本発明の方法を用いるシステム４００の、高度な概略ブロック図である。システム４００は、データのソースとして作用するホスト・コンピュータ４１０、そしてそのデータを保存するためのフラッシュメモリ・デバイス４２０を含む。この場合、データは、ホスト・コンピュータ４１０からメモリ・デバイス４２０へ、ホスト・インターフェイス４８０を介して送信される。メモリ・デバイス４２０は、データを保存するフラッシュメモリ４３０、そしてフラッシュメモリ４３０内へのデータの正しい保存に責任を負うコントローラ４４０を含む。そして、コントローラ４４０は、ＣＰＵ４５０、（ＣＰＵが実行するコードを保存する）ＲＯＭ４６０、そしてそのコード実行をサポートするためにＣＰＵ４５０が使用するＲＡＭ４７０を含む。このブロック図は、例えばセキュアデジタル（商標）フラッシュメモリ・カードまたはポータブルＵＳＢフラッシュドライブ等の、典型的な不揮発性記憶モジュールを表す。システム４００において、本発明の方法は、第一の物理位置へデータを書き込むこと、第二の物理位置へ同じデータをコピーすること、そしてシグネチャ・フィールドを生成して保存することを含み、すべて、コントローラ４４０によって、すなわち、ＲＯＭ４６０からのコードを実行するＣＰＵ４５０によって実行される。しかしこれは、本発明を用いることが可能な唯一のシステム・アーキテクチャではない。例えば、記憶モジュールがオンボードＮＡＮＤフラッシュデバイスであり、スタンドアロン・コントローラがないケースのように、ホスト・コンピュータ４１０内で実行されるコードによって、本発明の方法を具現することも可能である。もう一つの可能性は、本発明の方法を、ホスト・コンピュータ４１０によって部分的に実行し、そしてコントローラ４４０によって部分的に実行することである。これらすべてのアーキテクチャや他の多くは、本発明の範囲内にある。
【００５６】
本発明の方法論は別として、コントローラ４４０は、実質的に、例えば、上記に引用した米国特許第５，４０４，４８５号、第５，９３７，４２５号、第６，５９１，３３０号、そして第６，６７８，７８５号等の、従来の技術に開示されているようにフラッシュメモリ４３０を管理する。
【００５７】
本発明を限られた数の実施例に関して説明したが、本発明の多くの変形、修正、そして他の応用が可能であることは明らかである。
【図面の簡単な説明】
【００５８】
【図１】セクタの保存に関するフローチャートである。
【図２】セクタのコピーに関するフローチャートである。
【図３】図２に示すコピーの確認に関するフローチャートである。
【図４】本発明によるシステムの、高度な概略ブロック図である。
【図１】
2008537192.tif 000003
【図２】
2008537192.tif 000004
【図３】
2008537192.tif 000005
【図４】
2008537192.tif 000006