JP2008537192A - フラッシュメモリ内でコピー操作を管理する方法 - Google Patents

フラッシュメモリ内でコピー操作を管理する方法 Download PDF

Info

Publication number
JP2008537192A
JP2008537192A JP2007552805A JP2007552805A JP2008537192A JP 2008537192 A JP2008537192 A JP 2008537192A JP 2007552805 A JP2007552805 A JP 2007552805A JP 2007552805 A JP2007552805 A JP 2007552805A JP 2008537192 A JP2008537192 A JP 2008537192A
Authority
JP
Japan
Prior art keywords
data
signature
memory
data chunk
chunk
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
JP2007552805A
Other languages
English (en)
Other versions
JP4926982B2 (ja
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.)
Western Digital Israel Ltd
Original Assignee
SanDisk IL Ltd
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 SanDisk IL Ltd filed Critical SanDisk IL Ltd
Publication of JP2008537192A publication Critical patent/JP2008537192A/ja
Application granted granted Critical
Publication of JP4926982B2 publication Critical patent/JP4926982B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】特定の論理アドレスに関連するデータと共に、データのバージョンを識別する「シグネチャ」を書き込む。
【解決手段】メモリ・デバイスに、それぞれの論理アドレスに関連させた一つ以上のデータ塊が到達すると、各データ塊は、シグネチャが指定され、第一の位置内に保存され、そして第二の位置へコピーされる。そのコピーには、その親データ塊のシグネチャに整合するシグネチャが指定される。一つ以上のデータ塊を含む一つのメモリ・ブロックを消去する前に、まず、それらのデータ塊が既にコピーされているか、すなわち、整合シグネチャを持つそのブロック内のすべてのデータ塊のコピーが、メモリ・デバイス内に存在するかが検証される。
【選択図】図4

Description

本発明は、フラッシュメモリ・デバイス内へ、着信データのストリームを効率的に保存するための方法およびシステムに関し、特に、そのような保存の目的に必要なコピー操作を管理するための方法およびシステムに関する。
ラッサー氏らが2004年12月17日に出願した、「フラッシュメモリ内のプログラミング処理の命令に関する制約を扱うための方法」という名称の(すべての目的のために参照によって本文に記述したものとして含む)米国特許出願第60/636,510号は、着信データをすぐにメモリ・デバイス内のそれらの目標位置に書き込むことが実用的でないまたは望ましくない、例えばデジタルオーディオ・ストリームまたはデジタルビデオ・ストリーム等の着信データのストリームを保存するための方法およびシステムを開示している。その代わり、ラッサー氏らの方法およびシステムは、まず、着信データを第一の位置に保存して、その後、その第一の位置からデータを回収し、それらを二度目として、今度はそれらの所望の目標位置に書き込む。
ラッサー氏らのシステムは、不揮発性メモリ内へ着信セクタを二回書き込む。したがって、そのシステムは、その第一の位置から第二の位置へ、各セクタを移動しなければならない。そのような移動を実行する時間は柔軟であり、その移動を、時間的に第一の書き込みの近くで実行してもよいし、またはメモリ・デバイスのコントローラは、その移動を実行する前に比較的長時間待ってもよい。しかし依然として、遅かれ早かれ、その第一の位置から第二の位置へ、データの各セクタを移動させることが常に必要である。その移動後、第一の書き込みのために使用した記憶領域は、もはや必要でないので、新しいデータに対して使用するために再利用できる。
注意すべきは、用語「第一の位置」および「第二の位置」が、必ずしも、記憶デバイスの物理的に別個な領域に言及するわけではないということである。異なるセクタの第一および第二の「位置」が、第一の書き込みだけに使用される領域と第二の書き込みだけに使用される領域との間の明確な境界なしで、混在してもよい。さらに、記憶単位は、ある時点においてはいくつかのセクタに対する第一の位置として、また第二の時点においてはいくつかの他のセクタに対する第二の位置として機能してもよい。しかしながら典型的に、それらの管理を単純にするために、「第一の位置」と「第二の位置」とを一緒にまとめることが便利である。単純にするために、下記の説明では、そのようなグループが使用されるものとするが、本発明の範囲を制限するものと考えるべきではない。
例えばラッサー氏らのメモリ・デバイスの開発者が直面する一つの問題は、第一の書込み操作において書き込まれた特定のセクタが、既にその第二の位置へ移動されていることをどのように伝えるかである。それによって、最初にセクタが書き込まれた物理位置を、新しいものに対して利用できる。もし、第一の位置から第二の位置へデータを移動させている間にコピーされるデータの物理ユニットが、消去ブロック(単一の消去操作で消去できる記憶装置の最小塊、典型的に16キロバイト〜256キロバイト)であったなら、解決策は単純だったであろう。その最終位置内へデータ・ユニットをコピーした直後に、メモリ・デバイスのコントローラは、第一のコピーを含むユニットを消去できる。残念なことに、これは実際とは異なる。それらの第一および第二の物理位置間でのデータ移動中にコピーされるデータの典型的なユニットは、セクタ(ホストと記憶デバイスとの間で交換されるデータの最小塊、典型的に512バイト)、またはページ(記憶デバイス内へ単一の書込み操作で書き込むことが可能な物理記憶の最小塊、典型的に512バイト〜2キロバイト)、あるいは少数のセクタまたはページである。データ塊がその新しい位置へコピーされる場合、典型的に、同じ消去ブロック内の他のデータ塊は、依然としてコピーされておらず、したがって依然保持する必要がある。コピー・データを含むブロックの消去は、それらの未コピー・データ塊を破壊してしまうため、実行すべきでない。
下記の説明では、(単純にするために)データは、ホストと交換され、セクタに等しい塊で物理記憶位置間でコピーされる、と仮定する。これは、本発明の範囲を決して制限せず、連続する操作が異なるデータ塊サイズを使用する様々なサイズのケースを含み、データ塊のすべてのサイズに完全に適用可能である。
従来の技術によるフラッシュ管理システムは、通常、もはや有効でない、および/あるいはもはや保持する必要なしと、データ塊を標識する「削除マーク」という技術を使用する。そのようなマークは、典型的に、セクタ・データに関連するオーバーヘッド領域内に位置する単一ビットまたは数ビットの論理フラグである。例えば、フラッシュメモリ・デバイス内に保存されたセクタが、ホストから受信した新しいデータによって上書きされるとき、フラッシュ管理システムは、新しく割り当てられた位置に新しいデータを保存することに加えて、セクタの古いコピーに関連するオーバーヘッド領域内へ削除マークを書き込む。この削除マークは、そのセクタ内に保存されたデータが、もはや有効でなく、必要に応じて消去できることを示す。典型的に、フラッシュ管理システムは、(定期的に、またはもっと空き領域が必要になったときに)消去ブロックのすべてのセクタが、削除と標識されているかどうかをチェックする。そして、そうである場合は、ブロックは有用なデータを含まないので、消去して、新しいデータのために再生利用する。上書きセクタを標識するこの方法を用いるフラッシュ管理システムの一つの例が、バン氏への米国特許第5,404,485号に開示されている。また、ラッサー氏は、NANDフラッシュ記憶デバイス内の各ページに対して設けられたオーバーヘッド領域(「追加領域」または「スペア領域」と呼ぶ)を、制御および管理フィールドを保存するために使用するフラッシュ管理システムの例を米国特許第6,678,785号に開示している。これら両特許は、すべての目的のために参照によって本文に完全に記述したものとする。
ある人は、この「削除マーク」の方法を、第一の物理位置に書き込まれたデータが第二の物理位置へ既にコピーされてしまったかどうかを見分けるという、上記提示の問題への解決策を提供するように拡張できる、と予想するだろう。1セクタのデータをコピーすると即座に、フラッシュ管理システムは、そのセクタに関連するオーバーヘッド領域内に「コピー済みマーク」を書き込み、そして1ブロックのすべてのセクタがこのマークを持つことを検知したときに、そのブロックを消去して再利用できる。この「コピー済みマーク」の方法は、本文では「マーク方法」または「マーキング方法」と称する。
残念ながら、このマーキング方法を使用することには、二つの主要な欠点がある。第一の欠点は、書き込み性能に関する。データ記憶の最も一般的なフラッシュ・タイプであるNANDフラッシュ・デバイスにおいては、データはページ単位でのみ書き込み可能である。単一バイトのデータを書き込みたい場合でさえも、デバイスは、その1バイトを書き込むために、フルページを書き込む場合と正確に同じ時間を必要とする。フルページを書き込む場合には例えば512バイトを転送することに比べ、単一バイトを書き込む場合にはバスを介してデバイス内へ、僅かに1バイトだけを転送するので、いくらか時間の節約になることは事実である。しかし、フラッシュデバイスにおいては、典型的に、内部書込み操作が、バスを介したデバイス内へのデータ転送よりも非常に遅いため、マークを書き込むのにかかる時間は、満杯セクタのデータを書き込むのにかかる時間に近い。したがって、データの各セクタに対してマークの書込み操作を付加しなければならないとしたら、各セクタの保存毎に著しく多くの時間を費やすことになる。
以下の数値的な例を考察する。512バイトの複数のページを持つNANDフラッシュデバイスを使用すると仮定する。フラッシュ・ページの書き込み時間が200マイクロ秒、ページの読み取り時間が15マイクロ秒、そしてデバイス内への、またはデバイスからのバスを介したフルページの転送が30マイクロ秒を要すると仮定する。マークを使用しない場合、データの各セクタは、まず、バスを介してフラッシュデバイス内へ移動され、そして第一の位置内へ書き込まれ、そしてバスを介して読み戻してから再びバスを介してデバイス内へ移動され、最終的に第二の位置内へ書き込まれる。全部で、二回の書き込み操作、一回の読み込み操作、そして三回のバス転送の合計となり、各セクタ保存毎に2x200+1x15+3x30=505マイクロ秒が必要である。しかし、セクタが既にコピーされてしまったことを示すために上記シーケンスの後に第一の位置内へマークを書き込む場合は、(バスを介してマークを移動させるのに必要な短時間を無視して)追加で200マイクロ秒を費やす必要があり、総時間を705マイクロ秒へ増加させる。マークを用いた場合は、セクタの保存毎に費やされる時間に深刻な増加があることが分かる。この例では、マークを用いた場合、セクタの保存が約40%遅くなる。もし、(すべての他のパラメータをそのままにすると仮定して)1ミリ秒に近い遅い書き込み時間を持つマルチレベル・セル(MLC)NANDフラッシュを採用した場合、マークを付加する影響は、セクタ保存毎に必要な時間を、約2100マイクロ秒から約3100マイクロ秒へ増加させることになり、ほぼ50%も遅くなる。これは、マーク方法の重大な欠点である。
マーク方法の第二の重大な欠点は、パーシャル・ページ・プログラミング(PPP)に関わる。PPPは、ページを含むブロックを消去する必要が発生するまでに、ページ内への何度の書き込み操作が可能なのかを決定するフラッシュデバイスの特性である。市販のNANDフラッシュ・デバイスの典型値は、3から8である。しかしながら、MLC−NANDデバイスは、僅かに1のPPP値を持ち、これは、ページを含むユニットを消去する必要が発生する前に、ページ内へ一度だけ書き込むことができることを意味する。フラッシュ管理システムは、ページに関連する制御フィールドを書き込むために、いくつかの書き込み操作を用いる必要がある場合もあり、その場合、管理アルゴリズムをサポートするためにそれらのフィールドを必要とするフラッシュデバイスのブロックを消去する。このために、フラッシュ管理システムは、利用可能なPPP操作のいくつかを消費してもよい。
「コピー・マーク」を使用することは、着信セクタの第一の記憶に使用する各ページに対して、一回の書き込み操作を消費する。これは、フラッシュ管理アルゴリズムに利用可能な書き込み操作が一つ少なくなることを意味する。そして、このことが、使用可能なアルゴリズムのタイプを制約することになる。しかし、MLC−NAND等の、PPPが1のフラッシュデバイスにとっては、状況はさらに悪い。上述の通り、そのようなデバイスでは、ページ内へは単一の書き込み操作だけが可能である。したがって、この場合、マーク方法を用いることは単純に不可能である。単一の許容書き込み操作は、記憶データを書き込むために用いなければならない。後に(データをコピーした後に)コピー済みとページを標識する時が来たときには、マークを書き込むための書き込み操作を実行することは許可されない。
故に結論として、第一の物理位置から第二の物理位置へコピー済みとしてページを識別するためのマーク方法には重大な欠点があり、さらに、いくつかのケース(すなわちMLC−NAND)では使用できない。
したがって、メモリ・デバイスの書き込み性能を低下させることなく、また追加の書き込み操作を消費することなく、不揮発性記憶デバイスのコピー済みセクタを識別可能な方法に対する必要性が広く認識され、そのような方法を得ることは非常に有利である。
本発明の基本的な考えは、特定の論理アドレスに関連するデータと共に、データのバージョンを識別する「シグネチャ」を書き込むことである。メモリ・デバイス内の同じデータのコピーが、「整合する」シグネチャを共有するため、第一の物理位置に初めに書き込んだデータが、既に第二の物理位置へコピーされているかどうかを判定できる。これによって、第一の物理位置は、自由に消去可能になる。シグネチャをデータと共に書き込むので、本発明は、PPP=1のメモリ・デバイスへ適用できる。
したがって、本発明は、メモリ・デバイスを管理するための、以下のことを含む方法を提供する。(a)メモリ・デバイス内にメイン・メモリを含むこと。(b)メモリ・デバイスのホストによって、メモリ・デバイスへ第一のデータ塊を送信すること。(c)第一のデータ塊へシグネチャを指定すること。(d)メイン・メモリ内の第一の位置内に第一のデータ塊を保存すること。(e)メイン・メモリ内の第二の位置へ第一のデータ塊をコピーすることによって、第一のデータ塊のコピーを生成すること。そして(f)そのコピーへ、第一のデータ塊のシグネチャに整合するシグネチャを指定すること。
さらに、本発明は、ホストによってメモリ・デバイスへ送信したデータ塊を保存するための、以下のものを含むメモリ・デバイスを提供する。(a)メモリ。そして(b)コントローラ。このコントローラは、(i)データ塊へシグネチャを指定するよう、(ii)メモリ内の第一の位置内にデータ塊を保存するよう、(iii)メモリ内の第二の位置へデータ塊をコピーすることによって、データ塊のコピーを生成するよう、そして(iv)そのコピーへ、データ塊のシグネチャに整合するシグネチャを指定するよう作動可能である。
メモリ・デバイスを管理するための、本発明の基本的な方法は、メモリ・デバイス内にメイン・メモリを含ませることから始まる。メモリ・デバイスのホストは、メモリ・デバイスへ第一のデータ塊を送信する。第一のデータ塊へシグネチャが指定され、第一のデータ塊は、メイン・メモリ内の第一の位置内に保存される。第一のデータ塊は、また、メイン・メモリ内の第二の位置へもコピーされる。これによって、第一のデータ塊のコピーが生成される。第一のデータ塊のシグネチャに整合するそのコピーへ、シグネチャが指定される。
第一のデータ塊は、データ・セクタであることが好ましい。
この方法は、複数の第一のデータ塊に対して実行することが好ましい。複数の第一のデータ塊は、ホストによってメモリ・デバイスに送信され、それぞれシグネチャが指定され、それぞれメイン・メモリ内の第一の位置内に保存され、そしてそれぞれメイン・メモリ内の第二の位置へコピーされる。各コピーには、そのコピー元である第一のデータ塊に指定したシグネチャに整合するシグネチャをそれぞれ指定する。代替的に、すべてのコピーに、すべての第一のデータ塊のすべてのシグネチャに整合する共通シグネチャを指定してもよい。この選択肢の下では、すべての第二の位置が、メイン・メモリの共通ブロック内にあり、そのブロックに共通シグネチャを関連させることが好ましい。
この方法を複数の第一のデータ塊に対して実行した場合、各第一のデータ塊がそれぞれ論理アドレスに関連することが好ましい。一つ以上の第一のデータ塊を含むメイン・メモリの一つのブロックを消去しようとする際に、そのブロック内に含まれる各第一のデータ塊に対して、その第一のデータ塊の論理アドレスに関連したすべてのコピーを検索する。そして、ブロック内に含まれる各第一のデータ塊に対して、その第一のデータ塊の論理アドレスに関連したコピーの一つが、その第一のデータ塊のシグネチャに整合するシグネチャを持つ場合にだけ、そのブロックを消去する。
第一のデータ塊が論理アドレスに関連づけられていることが好ましい。ホストは、メモリ・デバイスへ、その論理アドレスに関連した第二のデータ塊をも送信し、第一のデータ塊のシグネチャと第二のデータ塊のシグネチャとが一緒で、第二のデータ塊が第一のデータ塊を置換することを示すよう、第二のデータ塊にシグネチャを指定する。第二のデータ塊がメイン・メモリ内の第三の位置内に保存され、また、メモリ内の第四の位置へコピーされることによって、第二のデータ塊のコピーを生成することがより好ましい。そして第二のデータ塊のコピーには、第二のデータ塊のシグネチャに整合するシグネチャを指定する。データ塊の一つを含むメイン・メモリの一つのブロックを消去しようとする際に、論理アドレスに関連したすべてのコピーを検索することが最も好ましい。ブロックが消去可能となるための必要条件は、その一つのデータ塊のシグネチャにコピーの一つのシグネチャが整合することである。また、第二のデータ塊のシグネチャが、第一のデータ塊のシグネチャの周期的に直接後に来るもの、または周期的に直接先に来るものであることが最も好ましい。
メイン・メモリがフラッシュメモリであることが好ましい。
第一のデータ塊のシグネチャを、第一のデータ塊と共にメイン・メモリ内に保存することが好ましい。
オプションとして、メイン・メモリから分離した補助メモリをメモリ・デバイス内に含め、そして第一のデータ塊のシグネチャまたは第一のデータ塊のコピーのシグネチャのいずれかを、補助メモリ内に保存してもよい。補助メモリがランダムアクセス・メモリであることが最も好ましい。
第一のデータ塊のコピーに指定するシグネチャは、第一のデータ塊のシグネチャと同一であることが好ましい。
本発明の主要な用途は、PPP=1のメモリ・デバイスに対してさえも機能する「コピー・マーク」同等物を提供することであるが、当業技術者には、本発明が、また、PPP=1のメモリ・デバイスに対して「消去マーク」同等物をも提供することは明確である。
したがって、本発明は、メモリを含むメモリ・デバイスを管理するための、次のステップを含む方法を提供する。(a)メモリ・デバイスのホストによって、メモリ・デバイスへ第一のデータ塊および第二のデータ塊を、両データ塊を共通論理アドレスに関連させて、連続的に送信するステップ。(b)第一のデータ塊のシグネチャと第二のデータ塊のシグネチャとが一緒で、第二のデータ塊が第一のデータ塊を置換することを示すシグネチャを各データ塊へそれぞれ指定するステップ。(c)データ塊をメモリ内のそれぞれの位置に保存するステップ。そして(d)ホストから、論理アドレスに関連したデータを読み込む要求を受信すると、二つのデータ塊のうち、そのデータ塊がメモリ・デバイスによって二番目に受信されたことを示すシグネチャを持つデータ塊を、ホストへ送信するステップ。
さらに、本発明は、ホストがメモリ・デバイスへ連続的に送信した第一のデータ塊および第二のデータ塊を、両データ塊を共通論理アドレスに関連させて保存するための、(a)メモリ、そして(b)コントローラを含むメモリ・デバイスを提供する。このコントローラは、(i)第一のデータ塊のシグネチャと第二のデータ塊のシグネチャとが一緒で、第二のデータ塊が第一のデータ塊を置換することを示すシグネチャを、各データ塊へそれぞれ指定するよう、(ii)メモリ内のそれぞれの位置内にデータ塊を保存するよう、そして(iii)ホストから、論理アドレスに関連したデータを読み込む要求を受信すると、二つのデータ塊のうち、そのデータ塊がメモリ・デバイスによって二番目に受信されたことを示すシグネチャを持つデータ塊をホストへ送信するよう作動可能である。
本発明は、「コピー済みマーク」方法を用いた場合に必要であろう二つの書き込み操作を使用せずに、ラッサー氏らのUS60/636、510の内容で用いた場合、単一の書き込み操作を使用して、メモリ・デバイス内の第一の位置内にデータを保存する。同様に、第二の位置へのデータの内部コピーは、単に一回の書き込み操作を必要とする。にもかかわらず、データの二つのバージョンが整合シグネチャを持つため、データの二つのバージョンのビット単位の比較を実行することなく、コピーが実行されたかどうかを検証することが可能である。したがって、本発明は、以下の通りに一般化できる。
本発明は、メモリを含むメモリ・デバイスを管理するための、次のステップを含む方法を提供する。(a)メモリ・デバイスへ1セクタのデータを送信するステップ。(b)単一の書き込み操作を使用して、メモリ内の第一の位置内にそのセクタ・データを保存するステップ。そして(c)単一の書き込み操作を使用して、メモリ内の第二の位置へセクタ・データをコピーするステップ。この場合、保存およびコピーは、いずれの位置からもデータのすべてを読み込むことなく、コピーが実行されたことを検証可能な様式で実行される。
さらに、本発明は、メモリを含むメモリ・デバイスを管理するための、次のステップを含む方法を提供する。(a)複数のセクタのデータをメモリ・デバイスへ送信するステップ。(b)単一の書き込み操作を使用して、それら複数のセクタ・データをメモリ内の第一のページ内に保存するステップ。そして(c)単一の書き込み操作を使用して、それら複数のセクタ・データをメモリの第二のページへコピーするステップ。この場合、保存およびコピーは、いずれのページからもデータのすべてを読み込むことなく、コピーが実行されたことを検証可能な様式で実行される。
さらに、本発明は、(a)メモリ、そして(b)コントローラを含むメモリ・デバイスを提供する。このコントローラは、(i)単一の書き込み操作を使用して、メモリ内の第一の位置内に1セクタのデータを保存するよう、そして(ii)単一の書き込み操作を使用して、そのセクタのデータをメモリ内の第二の位置へコピーするよう作動可能である。この場合、保存およびコピーは、いずれの位置からもデータのすべてを読み込むことなく、コピーが実行されたことを検証可能な様式で実行される。
さらに、本発明は、(a)メモリ、そして(b)コントローラを含むメモリ・デバイスを提供する。このコントローラは、(i)単一の書き込み操作を使用して、メモリの第一のページ内に、複数のセクタのデータを保存するよう、そして(ii)単一の書き込み操作を使用して、それら複数のセクタ・データをメモリの第二のページへコピーするよう作動可能である。この場合、保存およびコピーは、いずれのページからもデータのすべてを読み込むことなく、コピーが実行されたことを検証可能な様式で実行される。
本発明を、例として、添付の図面を参照しながら説明する。
本発明は、フラッシュメモリ等の不揮発性メモリ内にデータを保存するための方法およびシステムに関する。具体的には、本発明は、メモリ内の一つの物理位置からもう一つの物理位置へコピーされる必要があるデータが、そのコピーが実行される前に消去されることがないことを保証するために用いることができる。
本発明による不揮発性メモリ管理の原理および作用は、図面とその説明文を参照することによって、よりよく理解できる。
本発明は、シグネチャとして機能する制御フィールドをセクタの各コピーに関連づけることに基づく。このシグネチャは、セクタ・データの連続的アップデートで異なることにより、セクタ・データのバージョンを一意的に識別する。セクタがフラッシュメモリ・デバイス内へ書き込まれ、その第一の位置内へ保存されるときはいつも、フラッシュ管理システムは、そのデータにシグネチャ値を充てる。「シグネチャ」によって、メモリ・デバイス内に現存する、同じ論理セクタの以前のバージョンに関連する対応フィールドから異なることを保証する数値を意味する。「論理セクタ」によって、メモリ・デバイスのホストが、そのセクタ・アドレスが常に同じセクタを代表するかのように任意のセクタ・アドレスを繰り返し更新する、または上書きすることができるよう、ホストが観察してアドレス指定を行うセクタを意味する。だが実際には、セクタ・データの各アップデートは、記憶システム内の異なる物理位置内に保存することが可能である。論理セクタ(または「仮想セクタ」)のイメージを提供するフラッシュ管理システムは、バン氏(既に上記の米国特許第5,404,485号)、ラッサー氏(既に上記の米国特許第6,678,785号)によって開示され、バン氏の米国特許第5,937,425号、そしてラッサーへの米国特許第6,591,330号にも開示されている。
典型的なケースでは、どの時点でも、論理セクタの、多くてもたった二つのバージョンが、メモリ・デバイス内に存在する。一つのバージョンは、現在の書き込み要求によって上書きされるものであり、そして第二のバージョンは、現在の操作が提供する新しいデータである。いくつかのフラッシュ管理システムにおいては、セクタの、2を超えるバージョンが一緒に保持されるケースがあってもよい、しかし、これらのケースでさえ、保持されるバージョンの数は小さい。したがって、通常、シグネチャを生成するために単純な方法を用いてもよい。例えば、シグネチャ・フィールドは、ほんの数ビットの長さ(例えば3ビット)でもよい。そして新しいバージョン毎にシグネチャの値を周期的に増加させることによって、連続する値を生成する。換言すれば、シグネチャの利用可能な値は、{0、1、2、3、4、5、6、7}である。セクタの新しいバージョンを受信したら、現在保存されている前バージョン内のシグネチャ値を調べ、それを1だけ増加させ、その結果を新しいシグネチャとして使用する。先のシグネチャが7である場合、巡回群としての一連の値から、新しいものは0となる。この種のシグネチャは、データの「世代」を表すようなものであるから、「世代シグネチャ」または単純に「世代」と言及する。この場合、高い世代値は、より新しいバージョンのデータに関わる(もちろん、この類似は、7から0へ移るときに壊れるものである)。
セクタがその第一の物理位置からその第二の物理位置へ後にコピーされるとき、セクタはそのシグネチャ・フィールドを保持する。換言すれば、第二の位置内のセクタのコピーは、そのセクタが第一の位置で持っていたのと同じシグネチャ値を持つ。本発明の利点は、マーク方法の欠点を負うことなく、シグネチャ・フィールドが「コピー・マーク」の機能を提供することである。
まず、シグネチャを用いることにより、どのようにマーク機能が提供されるかを説明する。フラッシュ管理システムは、セクタを含むブロックを消去して再利用できるよう、第一の記憶位置内の任意のセクタが既にコピーされているのかどうかを検知しなければならないときにはいつも、第一の位置内のセクタに関連するシグネチャ・フィールドと、第二の位置内の同じ論理セクタに関連するシグネチャ・フィールドを探す。両方の値が合致すれば、セクタは既にコピーされており、消去が可能である。それらの値が合致しない場合、セクタは未だにコピーされておらず、セクタをその第一の位置内に依然として保持する必要がある。この方法を、効果的なセクタ比較演算と見なしてもよい。もちろん、論理セクタの二つのバージョンの完全なデータを読み出し、それらの各バイトを比較することによって、手元にある問題を解決することができる。これによって、二つのコピーが同一(この場合、第一の位置を消去できる)、または同一でない(この場合、第一の位置をまだ消去すべきでない)かが分かる。しかしながら、そのような完全なデータ比較は、高度に非能率的であり、実用的な解決策ではない。本発明は、非常に低コストで、同等な結果を提供する。完全なセクタではなく、僅かに一つのフィールドを比較し、また、完全なセクタではなく僅かに一つのフィールドを、バスを介して読み出さなければならないだけである。
さて、図面を参照する。図1は、ホスト・コンピュータがセクタをメモリ・デバイス内に保存するように送信するときに、本発明の方法を用いてメモリ・デバイス内で何が実行されるのかを示す。ステップ110で、メモリ・デバイスは、ホストからセクタ・データを受信する。それには、データの論理セクタ・アドレスが付随する。ステップ120で、その論理セクタの現在のバージョンに関連するシグネチャを検索する。この値は、記憶システムのコントローラのRAM内に保持された表から検索してもよいし、またはフラッシュメモリから読み込んでもよい。ステップ130で、論理セクタの新しいバージョンに関連させるための、シグネチャの新しい値を計算する。世代タイプのシグネチャを使用する場合は、その計算は、単に先のシグネチャを周期的に増加させるだけである。ステップ140で、新しく計算したシグネチャが付随する、セクタの新しいバージョンを第一の位置内に保存する。
図2は、第一の位置に存在するセクタを第二の位置へコピーするときに、本発明の方法を用いてメモリ・デバイス内で何が実行されるのかを示す。ステップ210で、コピーすべきセクタを、そのシグネチャ・フィールドと共に第一の位置から読み込む。ステップ220で、第二の位置に対するシグネチャ値を、第一の位置内のシグネチャに合致するようにセットする。ステップ230で、セクタを、新しいシグネチャ値を付随させて、第二の位置内へ書き込む。
図3は、第一の位置内のセクタが第二の位置内へ既にコピーされたかどうかを判定するときに、本発明の方法を用いてメモリ・デバイス内で何が実行されるのかを示す。ステップ310で、第一の位置内のセクタのシグネチャ値を検索する。ステップ320で、第二の位置内のセクタのシグネチャ値を検索する。両検索は、RAM内の表から、あるいはフラッシュメモリから行ってもよい。ステップ330で、これら二つの検索値を、それらが合致するかどうかチェックする。それらが合致する場合、ステップ340で、セクタが既にコピーされており、もはや第一の位置内に必要ないと結論を下す。それらが合致しない場合は、ステップ350で、セクタが未だにコピーされておらず、第一の位置内に依然として保持すべきであると結論を下す。
上記のアルゴリズムは、マーク方法の欠点で苦しむことなく、コピー識別問題を解決する。
A.本発明の方法は、追加の書き込み操作を全く付加しないため、性能に対するペナルティを被ることはない。データの各バージョンに対してシグネチャ・フィールドが書き込まれるとしても、このフィールドは、データと同じ書き込み操作中に常に書き込まれるものであるため、余分な時間を全く付加しない。これは、NANDフラッシュ内における書き込みのための基本塊は1ページであり、書き込み操作においてページ内で更新されるバイト数に関係なく、その操作は同じ時間を費やす。これは、マークをデータと共に第一の記憶位置内へ書き込むことができずにマークを別個の操作で書き込まなければならないマーク方法と異なる。
B.本発明の方法は、追加の書き込み操作を全く付加しないため、PPP特性を消費することは全くない。本発明の方法は、たとえPPP=1を持つMLC−NANDデバイスでさえも使用できる。もう一度、これは、第一の記憶位置内へのマークの書き込みを別個の書き込み操作として実行しなければならないマーク方法に対比すべきである。
以下は、本発明の範囲内にある、上記の方法のいくつかの変形に関する注釈である。
1.上記の説明においては、シグネチャの同値がセクタの第一の位置および第二の位置内で使用されるように述べたが、これは、厳密に必要なことではない。第一の位置内の第一のシグネチャ値が第二の位置内のシグネチャ値にマッチするかどうかをフラッシュ管理システムが判断可能なだけ、二つのフィールド間に十分な対応性がある限りにおいて、二つの位置内のシグネチャの値は異なってもよい。例えば、第二の位置内のシグネチャ値は、第一の位置内のシグネチャ値のビット対ビットの論理補数になるようにセットしてもよい。本文のいずれの箇所においても用語「整合シグネチャ」は、単に同値ばかりでなく、第一の位置内の第一のシグネチャ値が第二の位置内のシグネチャ値にマッチするかどうかの判断を可能にするような対応性をも含むと解釈すべきである。
2.上記の説明では、第二の位置内の各セクタが、それと共に保存されるシグネチャ・フィールドを持つ、と仮定した。しかしこれは、厳密に必要なことではない。第二の物理位置内の複数のセクタをまとめて、共有のシグネチャ・フィールドを使用するようにすれば、より効率的である。例えば、消去ブロック等のユニットに関連させて第二の位置シグネチャ・フィールドを持つことは、効率的である。この場合、消去ブロック内の各セクタは、たとえセクタそれ自体内にシグネチャ・フィールドがないとしても、消去ブロックに関連したシグネチャ値に等しいシグネチャ値を持つと理解する。このようなスキームは、第一の位置から第二の位置へのコピー・プロセスが、各セクタに対して独立的に実行されずに、ユニット塊で実行されるときに有用である。この応用では、シグネチャ・フィールドが、第二の位置内のセクタに関連づけられて書き込まれるとの記述がある場合はいつも、各セクタが、直接的に関連づけられたシグネチャ・フィールドを持つケースばかりでなく、複数のセクタが一つのシグネチャ・フィールドを共有するため、少なくともいくつかのセクタ対して、シグネチャ・フィールドが、例えば、消去ブロックのセクタにではなく、その消去ブロックに直接的に関連したシグネチャ・フィールドによって、僅かに間接的に関連づけられるケースをも含むと解釈すべきである。
3.上記の説明では、セクタの僅かに二つのバージョンが記憶システム内にいつも存在する、と仮定した。これは、間接的に、セクタへの次のアップデートが受信されるときには、システムは、その第一の位置からその第二の位置へ既に最後のバージョンをコピーして、そして最後のバージョンに先行したバージョンを既に消去していることを意味する。しかしこれは、厳密に必要なことではない。本発明の方法は、論理セクタが記憶システム内に依然として二つの前バージョンを持つ間に論理セクタへの新しいアップデートが到着するケースにも適用可能に容易に拡張できる。このような場合、以下の一つを実行してもよい。
i.もはや必要ではないので、前バージョンをコピーするのをやめる。第一の位置内に最新バージョンを保存し、そのとき、それが本発明の方法に従ってコピーされることを確実にする。例えば、第一の記憶位置内のバージョンの順番を観察し、最新でないものをスキップすることによって、(決してコピーされることのない)飛ばしたバージョンが、正しくそのように識別されることを確実にするように注意する。
ii.新しいバージョンにより高いシグネチャ値を充て、本発明の方法による前バージョンのコピー操作を省略しない。後で、より新しいバージョンを、(その異なるシグネチャ値から)新しいバージョンとして識別し、本発明の方法によって、第二の位置へコピーすることになる。このアプローチは、(より新しいデータによって取って代わられたことが既に分かっているデータをコピーするので)不必要なコピー操作を浪費するが、具現するのがより単純である。
4.上記の説明は、各セクタが別個のページ内へ書き込まれるケースにだけ適用する、と誤解すべきではない。これは、そうではない。本発明は、多少の論理セクタが同じ物理ページ内に保存されるメモリ・デバイスに、完全に適用できる。これは、フラッシュデバイスが2キロバイトのページを持ち、ホストが記憶システムと512バイトのセクタを交換するケースで、正にそうである。この場合は、1ページ内に4セクタが一緒に保存される。そのような記憶システムでは、本発明の方法は、ページ内へのセクタのグループ化に関係なく、各セクタがそれ自身のシグネチャ・フィールドを持つ各セクタに対して、別個に適用すべきである。そのようなケースにあり得る一つの相違点は、各セクタが個別の操作で書き込めるというよりもむしろ、複数のセクタを含むページが、単一操作で書き込めるということである。
図4は、本発明の方法を用いるシステム400の、高度な概略ブロック図である。システム400は、データのソースとして作用するホスト・コンピュータ410、そしてそのデータを保存するためのフラッシュメモリ・デバイス420を含む。この場合、データは、ホスト・コンピュータ410からメモリ・デバイス420へ、ホスト・インターフェイス480を介して送信される。メモリ・デバイス420は、データを保存するフラッシュメモリ430、そしてフラッシュメモリ430内へのデータの正しい保存に責任を負うコントローラ440を含む。そして、コントローラ440は、CPU450、(CPUが実行するコードを保存する)ROM460、そしてそのコード実行をサポートするためにCPU450が使用するRAM470を含む。このブロック図は、例えばセキュアデジタル(商標)フラッシュメモリ・カードまたはポータブルUSBフラッシュドライブ等の、典型的な不揮発性記憶モジュールを表す。システム400において、本発明の方法は、第一の物理位置へデータを書き込むこと、第二の物理位置へ同じデータをコピーすること、そしてシグネチャ・フィールドを生成して保存することを含み、すべて、コントローラ440によって、すなわち、ROM460からのコードを実行するCPU450によって実行される。しかしこれは、本発明を用いることが可能な唯一のシステム・アーキテクチャではない。例えば、記憶モジュールがオンボードNANDフラッシュデバイスであり、スタンドアロン・コントローラがないケースのように、ホスト・コンピュータ410内で実行されるコードによって、本発明の方法を具現することも可能である。もう一つの可能性は、本発明の方法を、ホスト・コンピュータ410によって部分的に実行し、そしてコントローラ440によって部分的に実行することである。これらすべてのアーキテクチャや他の多くは、本発明の範囲内にある。
本発明の方法論は別として、コントローラ440は、実質的に、例えば、上記に引用した米国特許第5,404,485号、第5,937,425号、第6,591,330号、そして第6,678,785号等の、従来の技術に開示されているようにフラッシュメモリ430を管理する。
本発明を限られた数の実施例に関して説明したが、本発明の多くの変形、修正、そして他の応用が可能であることは明らかである。
セクタの保存に関するフローチャートである。 セクタのコピーに関するフローチャートである。 図2に示すコピーの確認に関するフローチャートである。 本発明によるシステムの、高度な概略ブロック図である。

Claims (24)

  1. メモリ・デバイスを管理する方法であって、
    (a)前記メモリ・デバイス内にメイン・メモリを含ませること、
    (b)前記メモリ・デバイスのホストによって、前記メモリ・デバイスへ第一のデータ塊を送信すること、
    (c)前記第一のデータ塊へシグネチャを指定すること、
    (d)前記メイン・メモリ内の第一の位置内に前記第一のデータ塊を保存すること、
    (e)前記第一のデータ塊を前記メイン・メモリ内の第二の位置へコピーすることによって、前記第一のデータ塊のコピーを生成すること、そして
    (f)前記コピーへ、前記第一のデータ塊の前記シグネチャに整合するシグネチャを指定することからなる、方法。
  2. 前記第一のデータ塊がデータセクタである、請求項1の方法。
  3. 複数の前記第一のデータ塊が、メモリ・デバイスに送信され、各々シグネチャの指定を受け、各々の第一の位置内に保存され、そして各々の第二の位置へコピーされ、さらに、前記コピーの各々が、前記シグネチャのそれぞれの指定を受ける、請求項1の方法。
  4. 前記第一のデータ塊の各々が、それぞれ論理アドレスに関連づけられる、請求項3の方法であって、さらに、
    (g)前記第一のデータ塊の少なくとも一つを含む前記メイン・メモリの一つのブロックを消去しようとする際に、
    (i)前記メイン・メモリの前記ブロック内に含まれる前記第一のデータ塊の各々に対して、前記第一のデータ塊の各々の前記論理アドレスに関連するすべての前記コピーを検索し、そして
    (ii)前記メイン・メモリの前記ブロック内に含まれる前記第一のデータ塊の各々に対して、前記各データ塊の前記論理アドレスに関連する前記コピーの一つの前記シグネチャが、前記各データ塊の前記シグネチャに整合する場合にだけ、前記メイン・メモリの前記ブロックを消去するステップからなる、方法。
  5. 複数の前記第一のデータ塊が、前記メモリ・デバイスへ送信され、それぞれシグネチャの指定を受け、それぞれの第一の位置内に保存され、そして、それぞれの第二の位置へコピーされ、さらに、すべての前記コピーが、前記第一のデータ塊のすべての前記シグネチャに整合する共通シグネチャの指定を受ける、請求項1の方法。
  6. 前記第一のデータ塊の各々が、それぞれ論理アドレスに関連づけられる、請求項5の方法であって、さらに、
    (g)前記第一のデータ塊の少なくとも一つを含む前記メイン・メモリの一つのブロックを消去しようとする際に、
    (i)前記メイン・メモリの前記ブロック内に含まれる前記第一のデータ塊の各々に対して、前記第一のデータ塊の各々の前記論理アドレスに関連するすべての前記コピーを検索し、そして
    (ii)前記メイン・メモリの前記ブロック内に含まれる前記第一のデータ塊の各々に対して、前記各データ塊の前記論理アドレスに関連する前記コピーの一つの前記シグネチャが、前記各データ塊の前記シグネチャに整合する場合にだけ、前記メイン・メモリの前記ブロックを消去するステップからなる、方法。
  7. すべての前記第二の位置が、前記メイン・メモリの共通ブロック内にあり、前記共通シグネチャが前記共通ブロックに関連している、請求項5の方法。
  8. 前記第一のデータ塊が論理アドレスに関連づけられる請求項1の方法であって、さらに、
    (g)前記論理アドレスに関連する第二のデータ塊を、前記ホストによって前記メモリ・デバイスへ送信するステップ、そして
    (h)前記第二のデータ塊へシグネチャを指定するステップからなり、
    前記第一のデータ塊の前記シグネチャと前記第二のデータ塊の前記シグネチャとが一緒で、前記第二のデータ塊が前記第一のデータ塊を置換することを示す、方法。
  9. さらに、
    (i)前記メイン・メモリ内の第三の位置内に前記第二のデータ塊を保存するステップ、
    (j)前記メイン・メモリ内の第四の位置へ前記第二のデータ塊をコピーすることによって、前記第二のデータ塊のコピーを生成するステップ、そして
    (k)前記第二のデータ塊の前記コピーへ、前記第二のデータ塊の前記シグネチャに整合するシグネチャを指定するステップからなる、請求項8の方法。
  10. さらに、
    (l)前記データ塊の一つを含む前記メイン・メモリの一つのブロックのを消去しようとする際に、
    (i)前記論理アドレスに関連するすべての前記コピーを検索し、そして
    (ii)前記コピーの一つの前記シグネチャが、前記一つのデータ塊の前記シグネチャに整合する場合にだけ、前記メイン・メモリの前記ブロックを消去するステップからなる、請求項9の方法。
  11. 前記第二のデータ塊の前記シグネチャが、周期的に前記第一のデータ塊の前記シグネチャの直接後に来るものである、請求項8の方法。
  12. 前記第二のデータ塊の前記シグネチャが、周期的に前記第一のデータ塊の前記シグネチャの直接先に来るものである、請求項8の方法。
  13. 前記メイン・メモリがフラッシュメモリである、請求項1の方法。
  14. さらに、
    (g)前記第一のデータ塊と一緒に前記メイン・メモリ内に前記第一のデータ塊の前記シグネチャを保存するステップからなる、請求項1の方法。
  15. さらに、
    (g)前記メモリ・デバイス内に、前記メイン・メモリから分離した補助メモリを含めるステップ、そして
    (h)前記補助メモリ内に、前記第一のデータ塊の前記シグネチャと前記コピーの前記整合シグネチャからなるグループから選択したシグネチャを保存するステップからなる、請求項1の方法。
  16. 前記メモリがランダムアクセス・メモリである、請求項15の方法。
  17. 前記コピーに指定される前記シグネチャが、前記第一のデータ塊の前記シグネチャと同一である、請求項1の方法。
  18. ホストによってメモリ・デバイスへ送信されたデータ塊を保存するためのメモリ・デバイスであって、
    (a)メモリ、そして
    (b)コントローラからなり、前記コントローラが、
    (i)データ塊へシグネチャを指定するよう、
    (ii)前記メモリ内の第一の位置内に前記データ塊を保存するよう、
    (iii)前記メモリ内の第二の位置へ前記データ塊をコピーすることによって、前記データ塊のコピーを生成するよう、そして
    (iv)前記コピーへ、前記データ塊の前記シグネチャに整合するシグネチャを指定するよう作動可能である、メモリ・デバイス。
  19. メモリを含むメモリ・デバイスを管理する方法であって、
    (a)前記メモリ・デバイスのホストによって前記メモリ・デバイスへ、第一のデータ塊および第二のデータ塊を、両前記データ塊を共通論理アドレスに関連づけて、連続的に送信するステップ、
    (b)前記データ塊の各々へそれぞれシグネチャを指定するステップ、この場合、前記第一のデータ塊の前記シグネチャと前記第二のデータ塊の前記シグネチャが一緒で、前記第二のデータ塊が前記第一のデータ塊を置換することを示し、
    (c)前記メモリ内のそれぞれの位置内に前記データ塊を保存するステップ、そして
    (d)前記ホストから、前記論理アドレスに関連するデータを読み込むための要求を受信すると、前記二つのデータ塊のうちの、そのデータ塊が前記メモリ・デバイスによって二番目に受信されたことを示すシグネチャを持つ前記データ塊を前記ホストへ送信するステップからなる、方法。
  20. ホストによって連続的にメモリ・デバイスに送信された第一のデータ塊および第二のデータ塊を、両データ塊を共通論理アドレスに関連づけて保存するためのメモリ・デバイスであって、
    (a)メモリ、そして
    (b)コントローラからなり、前記コントローラが、
    (i)各データ塊へ、第一のデータ塊の前記シグネチャと第二のデータ塊の前記シグネチャとが一緒で、第二のデータ塊が第一のデータ塊を置換することを示すシグネチャをそれぞれ指定するよう、
    (ii)前記メモリ内のそれぞれの位置内に前記データ塊を保存するよう、そして
    (iii)前記ホストから、前記論理アドレスに関連するデータを読み込むための要求を受信すると、前記二つのデータ塊のうちの、そのデータ塊が前記メモリ・デバイスによって二番目に受信されたことを示すシグネチャを持つ前記データ塊を前記ホストへ送信するよう作動可能である、メモリ・デバイス。
  21. メモリを含むメモリ・デバイスを管理する方法であって、
    (a)前記メモリ・デバイスへ1セクタのデータを送信するステップ、
    (b)単一の書き込み操作を使用して、前記メモリ内の第一の位置内に前記セクタのデータを保存するステップ、そして
    (c)単一の書き込み操作を使用して、前記メモリ内の第二の位置へ前記セクタのデータをコピーするステップからなり、
    前記コピーが、前記位置のいずれからも前記データのすべてを読み込むことなく実行されたことを検証可能な様式で、前記保存および前記コピーが実行される、方法。
  22. メモリを含むメモリ・デバイスを管理する方法であって、
    (a)前記メモリ・デバイスへ複数のセクタのデータを送信するステップ、
    (b)単一の書き込み操作を使用して、前記メモリの第一のページ内に前記複数のセクタのデータを保存するステップ、そして
    (c)単一の書き込み操作を使用して、前記メモリの第二のページへ前記複数のセクタのデータをコピーするステップからなり、
    前記ページのいずれからも前記データのすべてを読み込むことなく、前記にコピーが実行されたことを検証可能な様式で、前記保存および前記コピーが実行される、方法。
  23. (a)メモリ、そして
    (b)コントローラからなるメモリ・デバイスであって、前記コントローラが、
    (i)単一の書き込み操作を使用して、前記メモリ内の第一の位置内に、一つのセクタのデータを保存するよう、そして
    (ii)単一の書き込み操作を使用して、前記メモリ内の第二の位置へ前記セクタのデータをコピーするよう作動可能であり、
    前記位置のいずれからも前記データのすべてを読み込むことなく、前記コピーが実行されたことを検証可能な様式で、前記保存および前記コピーが実行される、メモリ・デバイス。
  24. (a)メモリ、そして
    (b)コントローラからなるメモリ・デバイスであって、前記コントローラが、
    (i)単一の書き込み操作を使用して、前記メモリの第一のページ内に複数のセクタのデータを保存するよう、そして
    (ii)単一の書き込み操作を使用して、前記メモリの第二のページへ前記複数のセクタのデータをコピーするよう作動可能であり、
    前記ページのいずれからも前記データのすべてを読み込むことなく、前記コピーが実行されたことを検証可能な様式で前記保存および前記コピーが実行される、メモリ・デバイス。





JP2007552805A 2005-01-31 2006-01-26 フラッシュメモリ内でコピー操作を管理する方法 Expired - Fee Related JP4926982B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US64794505P 2005-01-31 2005-01-31
US11/219,826 US8341371B2 (en) 2005-01-31 2005-09-07 Method of managing copy operations in flash memories
PCT/IL2006/000112 WO2006080014A2 (en) 2005-01-31 2006-01-26 Method of managing copy operations in flash memories

Publications (2)

Publication Number Publication Date
JP2008537192A true JP2008537192A (ja) 2008-09-11
JP4926982B2 JP4926982B2 (ja) 2012-05-09

Family

ID=36740896

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007552805A Expired - Fee Related JP4926982B2 (ja) 2005-01-31 2006-01-26 フラッシュメモリ内でコピー操作を管理する方法

Country Status (4)

Country Link
US (1) US8341371B2 (ja)
JP (1) JP4926982B2 (ja)
KR (1) KR100926267B1 (ja)
WO (1) WO2006080014A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8832537B2 (en) 2009-12-22 2014-09-09 Toyota Jidosha Kabushiki Kaisha Information management apparatus and information managing method

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8190742B2 (en) * 2006-04-25 2012-05-29 Hewlett-Packard Development Company, L.P. Distributed differential store with non-distributed objects and compression-enhancing data-object routing
KR100780963B1 (ko) * 2006-11-03 2007-12-03 삼성전자주식회사 메모리 카드 및 메모리 카드의 구동 방법
US20080228998A1 (en) * 2007-03-16 2008-09-18 Spansion Llc Memory storage via an internal compression algorithm
TWI372396B (en) * 2007-09-28 2012-09-11 Phison Electronics Corp Method of protecting data for power failure and controller using the same
US8140637B2 (en) 2007-10-25 2012-03-20 Hewlett-Packard Development Company, L.P. Communicating chunks between devices
US8150851B2 (en) * 2007-10-25 2012-04-03 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
DE112007003645B4 (de) * 2007-10-25 2011-06-16 Hewlett-Packard Development Co., L.P., Houston Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
US8332404B2 (en) * 2007-10-25 2012-12-11 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
GB2466580B (en) * 2007-10-25 2013-01-02 Hewlett Packard Development Co Data processing apparatus and method of processing data
US8099573B2 (en) * 2007-10-25 2012-01-17 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
WO2009054828A1 (en) * 2007-10-25 2009-04-30 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
US8301912B2 (en) 2007-12-31 2012-10-30 Sandisk Technologies Inc. System, method and memory device providing data scrambling compatible with on-chip copy operation
DE112008003826B4 (de) * 2008-04-25 2015-08-20 Hewlett-Packard Development Company, L.P. Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
US20090282267A1 (en) * 2008-05-09 2009-11-12 Ori Stern Partial scrambling to reduce correlation
US8117343B2 (en) * 2008-10-28 2012-02-14 Hewlett-Packard Development Company, L.P. Landmark chunking of landmarkless regions
US8700840B2 (en) * 2009-01-05 2014-04-15 SanDisk Technologies, Inc. Nonvolatile memory with write cache having flush/eviction methods
US8244960B2 (en) * 2009-01-05 2012-08-14 Sandisk Technologies Inc. Non-volatile memory and method with write cache partition management methods
US8375182B2 (en) * 2009-02-10 2013-02-12 Hewlett-Packard Development Company, L.P. System and method for segmenting a data stream
US8001273B2 (en) * 2009-03-16 2011-08-16 Hewlett-Packard Development Company, L.P. Parallel processing of input data to locate landmarks for chunks
US7979491B2 (en) * 2009-03-27 2011-07-12 Hewlett-Packard Development Company, L.P. Producing chunks from input data using a plurality of processing elements
US20100281077A1 (en) * 2009-04-30 2010-11-04 Mark David Lillibridge Batching requests for accessing differential data stores
US9141621B2 (en) * 2009-04-30 2015-09-22 Hewlett-Packard Development Company, L.P. Copying a differential data store into temporary storage media in response to a request
US8027195B2 (en) 2009-06-05 2011-09-27 SanDisk Technologies, Inc. Folding data stored in binary format into multi-state format within non-volatile memory devices
US8102705B2 (en) 2009-06-05 2012-01-24 Sandisk Technologies Inc. Structure and method for shuffling data within non-volatile memory devices
US20110002169A1 (en) 2009-07-06 2011-01-06 Yan Li Bad Column Management with Bit Information in Non-Volatile Memory Systems
US8725935B2 (en) 2009-12-18 2014-05-13 Sandisk Technologies Inc. Balanced performance for on-chip folding of non-volatile memories
US8468294B2 (en) 2009-12-18 2013-06-18 Sandisk Technologies Inc. Non-volatile memory with multi-gear control using on-chip folding of data
US8144512B2 (en) 2009-12-18 2012-03-27 Sandisk Technologies Inc. Data transfer flows for on-chip folding
US20110153912A1 (en) 2009-12-18 2011-06-23 Sergey Anatolievich Gorobets Maintaining Updates of Multi-Level Non-Volatile Memory in Binary Non-Volatile Memory
US8660994B2 (en) * 2010-01-28 2014-02-25 Hewlett-Packard Development Company, L.P. Selective data deduplication
US8417876B2 (en) 2010-06-23 2013-04-09 Sandisk Technologies Inc. Use of guard bands and phased maintenance operations to avoid exceeding maximum latency requirements in non-volatile memory systems
JP2012014416A (ja) * 2010-06-30 2012-01-19 Toshiba Corp 記録装置、書き込み装置、読み出し装置、及び記録装置の制御方法
CN107093464A (zh) 2010-07-13 2017-08-25 桑迪士克科技有限责任公司 后台存储器系统接口的动态优化
US8464135B2 (en) 2010-07-13 2013-06-11 Sandisk Technologies Inc. Adaptive flash interface
US9069688B2 (en) 2011-04-15 2015-06-30 Sandisk Technologies Inc. Dynamic optimization of back-end memory system interface
KR101374655B1 (ko) 2010-09-29 2014-03-24 네이버비즈니스플랫폼 주식회사 파일 볼륨을 청크 단위로 분산 처리하는 시스템 및 방법
US9342446B2 (en) 2011-03-29 2016-05-17 SanDisk Technologies, Inc. Non-volatile memory system allowing reverse eviction of data updates to non-volatile binary cache
US8775901B2 (en) 2011-07-28 2014-07-08 SanDisk Technologies, Inc. Data recovery for defective word lines during programming of non-volatile memory arrays
US8842473B2 (en) 2012-03-15 2014-09-23 Sandisk Technologies Inc. Techniques for accessing column selecting shift register with skipped entries in non-volatile memories
US8681548B2 (en) 2012-05-03 2014-03-25 Sandisk Technologies Inc. Column redundancy circuitry for non-volatile memory
US8897080B2 (en) 2012-09-28 2014-11-25 Sandisk Technologies Inc. Variable rate serial to parallel shift register
US9490035B2 (en) 2012-09-28 2016-11-08 SanDisk Technologies, Inc. Centralized variable rate serializer and deserializer for bad column management
US9076506B2 (en) 2012-09-28 2015-07-07 Sandisk Technologies Inc. Variable rate parallel to serial shift register
US9384128B2 (en) 2014-04-18 2016-07-05 SanDisk Technologies, Inc. Multi-level redundancy code for non-volatile memory controller
US9934872B2 (en) 2014-10-30 2018-04-03 Sandisk Technologies Llc Erase stress and delta erase loop count methods for various fail modes in non-volatile memory
US9224502B1 (en) 2015-01-14 2015-12-29 Sandisk Technologies Inc. Techniques for detection and treating memory hole to local interconnect marginality defects
US10032524B2 (en) 2015-02-09 2018-07-24 Sandisk Technologies Llc Techniques for determining local interconnect defects
US9269446B1 (en) 2015-04-08 2016-02-23 Sandisk Technologies Inc. Methods to improve programming of slow cells
US9564219B2 (en) 2015-04-08 2017-02-07 Sandisk Technologies Llc Current based detection and recording of memory hole-interconnect spacing defects
US9268648B1 (en) * 2015-07-28 2016-02-23 Zerto Ltd. System and method for consistency verification of replicated data in a recovery system

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09179787A (ja) * 1995-12-22 1997-07-11 Dainippon Printing Co Ltd 携帯可能情報記憶媒体
JPH1139889A (ja) * 1997-07-23 1999-02-12 Fuji Electric Co Ltd 不揮発性記憶媒体のデータ書込方法
JP2000250820A (ja) * 1999-02-26 2000-09-14 Hewlett Packard Co <Hp> 不揮発性メモリへのデータ保存方法
JP2001154909A (ja) * 1999-11-25 2001-06-08 Casio Comput Co Ltd フラッシュメモリ管理装置及び記録媒体
JP2005115561A (ja) * 2003-10-06 2005-04-28 Media Logic:Kk フラッシュrom制御装置
JP2005258851A (ja) * 2004-03-12 2005-09-22 Renesas Technology Corp メモリカード
US20060133157A1 (en) * 2004-12-17 2006-06-22 M-Systems Flash Disk Pioneers, Ltd. Method of handling limitations on the order of writing to a non-volatile memory

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5941215B2 (ja) * 1979-10-09 1984-10-05 富士通株式会社 主記憶装置書込み制御方式
JPH0619785A (ja) * 1992-03-27 1994-01-28 Matsushita Electric Ind Co Ltd 分散共有仮想メモリーとその構成方法
US5740395A (en) * 1992-10-30 1998-04-14 Intel Corporation Method and apparatus for cleaning up a solid state memory disk storing floating sector data
US5404485A (en) * 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US5617537A (en) * 1993-10-05 1997-04-01 Nippon Telegraph And Telephone Corporation Message passing system for distributed shared memory multiprocessor system and message passing method using the same
US5539895A (en) * 1994-05-12 1996-07-23 International Business Machines Corporation Hierarchical computer cache system
US5696917A (en) * 1994-06-03 1997-12-09 Intel Corporation Method and apparatus for performing burst read operations in an asynchronous nonvolatile memory
JP3706167B2 (ja) * 1995-02-16 2005-10-12 株式会社ルネサステクノロジ 半導体ディスク装置
JP3791956B2 (ja) * 1996-04-25 2006-06-28 シャープ株式会社 不揮発性半導体記憶装置の検査方法
US6000006A (en) * 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
US5937425A (en) * 1997-10-16 1999-08-10 M-Systems Flash Disk Pioneers Ltd. Flash file system optimized for page-mode flash technologies
US6223290B1 (en) * 1998-05-07 2001-04-24 Intel Corporation Method and apparatus for preventing the fraudulent use of a cellular telephone
US6282700B1 (en) * 1998-05-21 2001-08-28 Hewlett Packard Company Mechanism for maintaining revisions of objects in flash memory
US6931381B1 (en) * 1999-03-11 2005-08-16 American Express Travel Related Services Company, Inc. Methods and apparatus for authenticating the download of information onto a smart card
US7203732B2 (en) * 1999-11-11 2007-04-10 Miralink Corporation Flexible remote data mirroring
FR2803080A1 (fr) * 1999-12-22 2001-06-29 St Microelectronics Sa Memoire flash programmable page par page
JP3627915B2 (ja) * 2000-05-30 2005-03-09 シャープ株式会社 ブートブロックフラッシュメモリ制御回路、およびそれを備えたicメモリカードと半導体記憶装置、並びにブートブロックフラッシュメモリの消去方法
US6694451B2 (en) * 2000-12-07 2004-02-17 Hewlett-Packard Development Company, L.P. Method for redundant suspend to RAM
US6564286B2 (en) * 2001-03-07 2003-05-13 Sony Corporation Non-volatile memory system for instant-on
US6591330B2 (en) * 2001-06-18 2003-07-08 M-Systems Flash Disk Pioneers Ltd. System and method for flexible flash file
US6678785B2 (en) * 2001-09-28 2004-01-13 M-Systems Flash Disk Pioneers Ltd. Flash management system using only sequential write
US6925008B2 (en) * 2001-09-29 2005-08-02 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device with a memory unit including not more than two memory cell transistors
US7716485B2 (en) * 2002-02-01 2010-05-11 Sca Ipla Holdings Inc. Systems and methods for media authentication
US7103718B2 (en) * 2002-09-03 2006-09-05 Hewlett-Packard Development Company, L.P. Non-volatile memory module for use in a computer system
US7526599B2 (en) * 2002-10-28 2009-04-28 Sandisk Corporation Method and apparatus for effectively enabling an out of sequence write process within a non-volatile memory system
US20040083334A1 (en) * 2002-10-28 2004-04-29 Sandisk Corporation Method and apparatus for managing the integrity of data in non-volatile memory system
US8412879B2 (en) * 2002-10-28 2013-04-02 Sandisk Technologies Inc. Hybrid implementation for error correction codes within a non-volatile memory system
US6831865B2 (en) * 2002-10-28 2004-12-14 Sandisk Corporation Maintaining erase counts in non-volatile storage systems
US20040117414A1 (en) * 2002-12-17 2004-06-17 Capital One Financial Corporation Method and system for automatically updating operating systems
US7085909B2 (en) * 2003-04-29 2006-08-01 International Business Machines Corporation Method, system and computer program product for implementing copy-on-write of a file
US7269732B2 (en) * 2003-06-05 2007-09-11 Sap Aktiengesellschaft Securing access to an application service based on a proximity token
US20050010764A1 (en) * 2003-06-26 2005-01-13 International Business Machines Corporation System and method for securely transmitting, and improving the transmission of, tag based protocol files containing proprietary information
DE10340236B4 (de) * 2003-08-29 2006-06-01 Infineon Technologies Ag Anordnung mit einer Datenverarbeitungseinrichtung und einem Speicher

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09179787A (ja) * 1995-12-22 1997-07-11 Dainippon Printing Co Ltd 携帯可能情報記憶媒体
JPH1139889A (ja) * 1997-07-23 1999-02-12 Fuji Electric Co Ltd 不揮発性記憶媒体のデータ書込方法
JP2000250820A (ja) * 1999-02-26 2000-09-14 Hewlett Packard Co <Hp> 不揮発性メモリへのデータ保存方法
JP2001154909A (ja) * 1999-11-25 2001-06-08 Casio Comput Co Ltd フラッシュメモリ管理装置及び記録媒体
JP2005115561A (ja) * 2003-10-06 2005-04-28 Media Logic:Kk フラッシュrom制御装置
JP2005258851A (ja) * 2004-03-12 2005-09-22 Renesas Technology Corp メモリカード
US20060133157A1 (en) * 2004-12-17 2006-06-22 M-Systems Flash Disk Pioneers, Ltd. Method of handling limitations on the order of writing to a non-volatile memory

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8832537B2 (en) 2009-12-22 2014-09-09 Toyota Jidosha Kabushiki Kaisha Information management apparatus and information managing method

Also Published As

Publication number Publication date
US8341371B2 (en) 2012-12-25
KR20070107689A (ko) 2007-11-07
WO2006080014A3 (en) 2009-09-03
KR100926267B1 (ko) 2009-11-12
JP4926982B2 (ja) 2012-05-09
US20070220197A1 (en) 2007-09-20
WO2006080014A2 (en) 2006-08-03

Similar Documents

Publication Publication Date Title
JP4926982B2 (ja) フラッシュメモリ内でコピー操作を管理する方法
US6865658B2 (en) Nonvolatile data management system using data segments and link information
US6571326B2 (en) Space allocation for data in a nonvolatile memory
US6687784B2 (en) Controller for controlling nonvolatile memory unit
US7734862B2 (en) Block management for mass storage
US8117377B2 (en) Flash memory device having secure file deletion function and method for securely deleting flash file
US7009896B2 (en) Apparatus and method for managing bad blocks in a flash memory
US7702844B2 (en) Address mapping method and mapping information managing method for flash memory, and flash memory using the same
US20080120488A1 (en) Apparatus and method of managing nonvolatile memory
KR100847506B1 (ko) 기억 장치, 메모리 관리 방법 및 프로그램
US7573754B2 (en) Nonvolatile memory, apparatus and method for determining data validity of the same
JP4268396B2 (ja) 1回プログラム可能な不揮発性メモリデバイスのファイル管理
US7287117B2 (en) Flash memory and mapping control apparatus and method for flash memory
JPWO2007066720A1 (ja) 不揮発性記憶装置及びデータ読み出し方法及び管理テーブル作成方法
US7664906B2 (en) Flash memory access apparatus and method
JP2007133541A (ja) 記憶装置、メモリ管理装置、メモリ管理方法及びプログラム
US8046529B2 (en) Updating control information in non-volatile memory to control selection of content
KR100932801B1 (ko) 메모리 관리 방법, 메모리 장치 및 컴퓨터 판독 가능 저장매체
US6671645B2 (en) Method for in-service RAM testing
CN103389943A (zh) 控制装置、存储装置及存储控制方法
JP2006244017A (ja) データコピー方法
US20220164135A1 (en) Apparatus, method and computer program for managing memory page updates within non-volatile memory
JP2006318303A (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
US7996598B2 (en) Memory management module
KR20190080110A (ko) 플래시 기반 스토리지에서의 중복 관리 방법

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110316

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110325

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110621

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110628

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110901

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: 20120120

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120208

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150217

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4926982

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees