(57)【要約】      （修正有）【課題】論理ブロックに関連付けられている複数の物理ブロックのうちどれが、より最近に論理ブロックに関連付けられた物理ブロックであるかを判定する。【解決手段】判定する方法は、第１の物理ブロックに関連付けられている第１の識別子を取得するステップおよび第２の物理ブロックに関連付けられている第２の識別子を取得するステップを含む。これらの識別子を比較して、前記第１の物理ブロックがより最近に論理ブロックに関連付けられたことを第１の識別子が示すかどうかを確認する。この方法は、さらに、第１の識別子が、その第１の物理ブロックがより新しく論理ブロックに関連付けられたことを示すと判定されたときに論理ブロックに関連付けられている内容を第１の物理ブロックに供給するように構成されたオペレーションを完了するステップを含む。【選択図】図７
2010267290.tif 000002
【特許請求の範囲】
【請求項１】
複数の物理ブロックを有するＮＡＮＤフラッシュメモリアレイを含む不揮発性メモリシステムの操作方法であって、各物理ブロックが複数のページに構成された複数のメモリセルを含み、各メモリセルは１ビット以上のデータを記憶可能であり、そのため前記物理ブロック内のページの部分書き込みが許されないものにおいて、前記方法が、
前記フラッシュメモリアレイ内の第１の物理ブロックを論理ブロックと関連付けるステップと、
前記論理ブロックに関連付けられたデータと、第１の更新インデックス値を、前記第１の物理ブロック内の少なくとも１ページに書き込むステップと、
次に第２の物理ブロックを前記論理ブロックと関連付けるステップと、
前記論理ブロックに関連付けられたデータと、第２の更新インデックス値を、前記第２の物理ブロック内の少なくとも１ページに書き込むステップであって、前記第２の更新インデックス値は前記第２の物理ブロックが前記第１の物理ブロックより新しく前記論理ブロックと関連付けられたものであることを表すものであるステップと、
を含む方法。
【請求項２】
前記第１の更新インデックス値を前記第１の物理ブロックから取得するステップと、
前記第２の更新インデックス値を前記第２の物理ブロックから取得するステップと、
前記第１と第２の更新インデックス値のどちらがそれらの物理ブロックがより新しく前記論理ブロックと関連付けられたかを表しているかを決定するために、前記第１の更新インデックス値と前記第２の更新インデックス値とを比較するステップと、
前記比較するステップが、前記第２の更新インデックス値が前記第２物理ブロックが前記第１の物理ブロックより新しく前記論理ブロックと関連付けられたことを表していると決定したことに応答して、前記論理ブロックに関連付けられた残りのデータを前記第２の物理ブロックに書き込むステップと、
を更に含む請求項１に記載の方法。
【請求項３】
前記第１の更新インデックス値を取得するステップが、前記第１の物理ブロックに関連付けられているオーバーヘッド領域から前記第１のインデックス値を取得するステップを含み、
前記第２の更新インデックス値を取得するステップが、前記第２の物理ブロックに関連付けられているオーバーヘッド領域から前記第２のインデックス値を取得するステップを含む、
請求項２に記載の方法。
【請求項４】
前記データと第２の更新インデックス値を前記第２の物理ブロックに書き込むステップが、
データを前記第１の物理ブロックから検索するステップと、
検索されたデータを前記第２の物理ブロックに書き込むステップと、
前記第２の更新インデックス値を前記検索されたデータが書き込まれた少なくとも１ページに書き込むステップと、
を含む請求項２に記載の方法。
【請求項５】
前記第１の物理ブロック内が前記論理ブロックと関連付けられていることを識別するステップと、
前記第２の物理ブロック内が前記論理ブロックと関連付けられていることを識別するステップと、
を更に含む請求項２に記載の方法。
【請求項６】
前記書き込みステップの後に前記第１の物理ブロックを消去するステップであって、該消去ステップが第１の更新インデックス値の消去を含むステップ、
を更に含む請求項２に記載の方法。
【請求項７】
前記第２の更新インデックス値が更に、前記第２の物理ブロックの複数のページが、実質的に全て前記第１の物理ブロックの複数のページより新しく前記論理ブロックに関連付けられたことを表示するように構成されている、
請求項２に記載の方法。
【請求項８】
前記第１の更新インデックスが１バイトより短い長さを有し、
前記第２の更新インデックスが１バイトより短い長さを有する、
請求項１に記載の方法。
【請求項９】
データと前記第２の更新インデックス値を書き込むステップ以前に、
前記第１の更新インデックス値を前記第１の物理ブロックから検索するステップと、
前記第２の更新インデックス値が前記第１の更新インデックス値と関連することを決定するステップと、
を更に含む請求項１に記載の方法。
【請求項１０】
前記第１の更新インデックス値が、前記第１の物理ブロックの冗長領域へ書き込まれかつそこから検索される、
請求項９に記載の方法。
【請求項１１】
データと前記第１の更新インデックス値を前記第１の物理ブロックに書き込むステップ以前に、前記論理ブロックに関連付けられたデータを受け取るステップ、
を更に含む請求項１に記載の方法。
【請求項１２】
前記第２の更新インデックス値を書き込むステップが、前記第２の物理ブロックの冗長領域に書き込むステップを含む、
請求項１１に記載の方法。
【請求項１３】
前記第２の更新インデックス値が、前記冗長領域内の１バイトまでを使用する、
請求項１２に記載の方法。
【請求項１４】
前記データと第２の更新インデックス値を前記第２の物理ブロックに書き込むステップが、
データを前記第１の物理ブロックから検索するステップと、
検索されたデータを前記第２の物理ブロックに書き込むステップと、
前記第２の更新インデックス値を前記検索されたデータが書き込まれた少なくとも１ページに書き込むステップと、
を含む請求項１に記載の方法。
【請求項１５】
前記論理ブロックに関連付けられた新しいデータを受け取るステップであって、該受け取られたデータの少なくとも幾つかが前記第１の物理ブロックに以前に書き込まれたページに対応するがそれらのページの内容とは異なるものと、
前記受け取られたデータを前記第２の物理ブロックに書き込むステップと、
を更に含む請求項１に記載の方法。
【請求項１６】
不揮発性メモリシステムであって、
ＮＡＮＤ構成の複数のメモリセルを含む不揮発性メモリであって、前記複数のメモリセルは複数の物理ブロックの各々における複数のページに構成されており、各メモリセルはデータの１ビット以上を記憶可能であり、そのため部分書き込みが許されないものと、
物理ブロックを論理ブロックと関連付ける手段と、
論理ブロックからの情報と更新インデックス値とを前記論理ブロックに関連付けられた物理ブロックの少なくとも１ページに書き込む手段と、
を含み、前記書き込む手段が、
第１の更新インデックス値を前記論理ブロックに関連付けられた第１の物理ブロック内の少なくとも１ページに書き込み、第１の物理ブロックが前記論理ブロックに関連付けられた後に第２の更新インデックス値を前記論理ブロックに関連付けられた第２の物理ブロック内の少なくとも１ページに書き込み、そのため前記第２の物理ブロックに関連付けられた前記第２の更新インデックス値が、前記第２の物理ブロックが前記第１の物理ブロックより新しく前記論理ブロックに関連付けられたことを表す、
不揮発性メモリシステム。
【請求項１７】
前記第２の物理ブロックを前記論理ブロックと関連付けるコード装置と、
それぞれ前記第１及び第２の物理ブロックに関連付けられた前記第１及び第２の更新インデックス値を書き込み、そのため前記第２の物理ブロックに関連付けられた前記第２の更新インデックス値が、前記第２の物理ブロックが前記第１の物理ブロックより新しく前記論理ブロックに関連付けられたことを表す、コード装置と、
前記論理ブロックに関連付けられた情報を前記第２の物理ブロックに書き込むコード装置と、
を記憶するためのメモリ領域と、
前記コード装置を動作させるためのプロセッサと、
を更に含む請求項１６記載の不揮発性メモリシステム。
【請求項１８】
どちらの物理ブロックがより新しく前記論理ブロックと関連付けられたかを決定するために、前記第１の更新インデックス値と前記第２の更新インデックス値とを比較するコード装置を更に含み、
前記論理ブロックに関連付けられた書き込み情報を前記第２の物理ブロックに書き込むコード装置が、前記比較するコード装置の前記第２の物理ブロックがより新しく前記論理ブロックに関連付けられたことの決定に応答する、
請求項１７記載の不揮発性メモリシステム。
【請求項１９】
前記第１の更新インデックス値が、前記第１の物理ブロックに関連付けられているオーバーヘッド領域に記憶され、
前記第２の更新インデックス値が、前記第２の物理ブロックに関連付けられているオーバーヘッド領域に記憶されている、
請求項１８に記載の不揮発性メモリシステム。
【請求項２０】
どちらの物理ブロックがより新しく前記論理ブロックと関連付けられたかを決定するために、前記第１の更新インデックス値と前記第２の更新インデックス値とを比較する手段を更に含み、
前記論理ブロックに関連付けられた書き込み情報を前記第２の物理ブロックに書き込む手段が、前記比較する手段の前記第２の物理ブロックが前記第１の物理ブロックより新しく前記論理ブロックに関連付けられたことの決定に応答する、
請求項１６記載の不揮発性メモリシステム。
【請求項２１】
前記第１の物理ブロックが、前記第１の更新インデックス値を記憶する第１のオーバーヘッド領域を含み、
前記第２の物理ブロックが、前記第２の更新インデックス値を記憶する第２のオーバーヘッド領域を含む、
請求項２０記載の不揮発性メモリシステム。
【請求項２２】
前記第２の更新インデックス値の消去を含む、第１の物理ブロックを消去する手段、
を更に含む請求項２０記載の不揮発性メモリシステム。
【請求項２３】
前記第１の物理ブロックから、前記情報と前記第１の更新インデックス値とを消去する手段、
を更に含む請求項１６記載の不揮発性メモリシステム。
【請求項２４】
前記第２の更新インデックス値が、前記第２の物理ブロックの冗長領域に記憶される、
請求項１６記載の不揮発性メモリシステム。
【請求項２５】
前記論理ブロックに関連付けられた新しいデータを受け取る手段であって、該新しいデータが前記第１の物理ブロックに以前に書き込まれたページに対応するがそれらのページの内容とは異なるものと、
前記受け取られたデータを前記第２の物理ブロックに書き込む手段と、
を更に含む請求項１６記載の不揮発性メモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、２００２年１０月２８日に出願した「ＷＥＡＲ  ＬＥＶＥＬＩＮＧ  ＩＮ  ＮＯＮ−ＶＯＬＡＴＩＬＥ  ＳＴＯＲＡＧＥ  ＳＹＳＴＥＭＳ」という表題の同時係属米国特許出願第１０／２８１，７３９号明細書（整理番号ＳＡＮＤＰ０２３／ＳＤＫ０３６６．０００ＵＳ）、２００２年１０月２８日に出願した「ＴＲＡＣＫＩＮＧ  ＴＨＥ  ＭＯＳＴ  ＦＲＥＱＵＥＮＴＬＹ  ＥＲＡＳＥＤ  ＢＬＯＣＫＳ  ＩＮ  ＮＯＮ−ＶＯＬＡＴＩＬＥ  ＭＥＭＯＲＹ  ＳＹＳＴＥＭＳ」という表題の同時係属米国特許出願第１０／２８１，６７０号明細書（整理番号ＳＡＮＤＰ０２５／ＳＤＫ０３６６．００２ＵＳ）、２００２年１０月２８日に出願した「ＴＲＡＣＫＩＮＧ  ＴＨＥ  ＬＥＡＳＴ  ＦＲＥＱＵＥＮＴＬＹ  ＥＲＡＳＥＤ  ＢＬＯＣＫＳ  ＩＮ  ＮＯＮ−ＶＯＬＡＴＩＬＥ  ＭＥＭＯＲＹ  ＳＹＳＴＥＭＳ」という表題の同時係属米国特許出願第１０／２８１，８２４号明細書（整理番号ＳＡＮＤＰ０２６／ＳＤＫ０３６６．００３）、２００２年１０月２８日に出願した「ＭＥＴＨＯＤ  ＡＮＤ  ＡＰＰＡＲＡＴＵＳ  ＦＯＲ  ＳＰＬＩＴＴＩＮＧ  Ａ  ＬＯＧＩＣＡＬ  ＢＬＯＣＫ」という表題の同時係属米国特許出願第１０／２８１，６３１号明細書（整理番号ＳＡＮＤＰ０２８／ＳＤＫ０３７１．０００ＵＳ）、２００２年１０月２８日に出願した「ＭＥＴＨＯＤ  ＡＮＤ  ＡＰＰＡＲＡＴＵＳ  ＦＯＲ  ＧＲＯＵＰＩＮＧ  ＰＡＧＥＳ  ＷＩＴＨＩＮ  Ａ  ＢＬＯＣＫ」という表題の同時係属米国特許出願第１０／２８１，８５５号明細書（整理番号ＳＡＮＤＰ０２９／ＳＤＫ０４１０．０００ＵＳ）、２００２年１０月２８日に出願した「ＭＡＩＮＴＡＩＮＩＮＧ  ＥＲＡＳＥ  ＣＯＵＮＴＳ  ＩＮ  ＮＯＮ−ＶＯＬＡＴＩＬＥ  ＳＴＯＲＡＧＥ  ＳＹＳＴＥＭＳ」という表題の同時係属米国特許出願第１０／２８１，６９６号明細書（整理番号ＳＡＮＤＰ０３１／ＳＤＫ０４２０．０００ＵＳ）、２００２年１０月２８日に出願した「ＭＥＴＨＯＤ  ＡＮＤ  ＡＰＰＡＲＡＴＵＳ  ＦＯＲ  ＭＡＮＡＧＩＮＧ  ＡＮ  ＥＲＡＳＥ  ＣＯＵＮＴ  ＢＬＯＣＫ」という表題の同時係属米国特許出願第１０／２８１，６２６号明細書（整理番号ＳＡＮＤＰ０３２／ＳＤＫ０４２０．００１ＵＳ）、および２００２年１０月２８日に出願した「ＭＥＴＨＯＤ  ＡＮＤ  ＡＰＰＡＲＡＴＵＳ  ＦＯＲ  ＰＥＲＦＯＲＭＩＮＧ  ＭＵＬＴＩ−ＰＡＧＥ  ＲＥＡＤ  ＡＮＤ  ＷＲＩＴＥ  ＯＰＥＲＡＴＩＯＮＳ  ＩＮ  Ａ  ＮＯＮ−ＶＯＬＡＴＩＬＥ  ＭＥＭＯＲＹ」という表題の同時係属米国特許出願第１０／２８１，８０４号明細書（整理番号ＳＡＮＤＰ０３３／ＳＤＫ０４２６．０００ＵＳ）に関係し、それぞれ参照によりその全体が本明細書に組み込まれている。
【０００２】
本発明は、一般的には、大容量デジタルデータ記憶装置システムに関する。より具体的には、本発明は、共通論理ブロックに関連付けられている複数の物理ブロックを単一の物理ブロックに実質的に帰着（ｒｅｓｏｌｖｅ）できる効率的なシステムおよび方法に関する。
【背景技術】
【０００３】
フラッシュメモリ記憶装置システムなどの不揮発性メモリシステムを使用すると、そのようなメモリシステムの物理的サイズがコンパクトになり、また不揮発性メモリを繰り返しプログラムし直せるため、その利用が増えている。フラッシュメモリ記憶装置システムのコンパクトな物理的サイズのおかげで、そのような記憶装置システムを、普及の勢いが増しているデバイス内で簡単に使用することができる。フラッシュメモリ記憶装置システムを使用するデバイスとしては、デジタルカメラ、デジタルカムコーダ、デジタル音楽プレーヤー、携帯型パソコン、および全地球測位デバイスなどがある。フラッシュメモリ記憶装置システムに含まれる不揮発性メモリは繰り返し再プログラムできるため、フラッシュメモリ記憶装置システムを使用し、再利用することができる。
【０００４】
一般に、フラッシュメモリ記憶装置システムは、フラッシュメモリカードおよびフラッシュメモリチップセットを備えることができる。フラッシュメモリチップセットは、一般に、フラッシュメモリコンポーネントおよびコントローラコンポーネントを備える。通常、フラッシュメモリチップセットは、組み込みシステム内に組み立てられるように構成することができる。このような組み立て品またはホストシステムのメーカーは、通常、コンポーネント形態のフラッシュメモリを他のコンポーネントとともに購入して、フラッシュメモリおよびその他のコンポーネントをホストシステム内に組み立てる。
【０００５】
フラッシュメモリシステムに関連付けられているファイルシステム内で、メモリは、システムまたはディレクトリ領域およびデータ領域に効果的に分割される。システム領域は、一般に、ルートディレクトリおよびファイル・アロケーション・テーブル（ＦＡＴ）を含み、データファイルは、通常、データ領域に置かれる。ファイルシステムは、システム領域に関連付けられている物理ブロックには、セクタ単位で、例えば一度に１ページずつ、データを書き込むことができるが、データ領域には、クラスタ単位、例えば、一度に複数ページずつ、データを書き込むことができる。
【０００６】
論理ブロック、つまりファイルシステムに関連付けられているブロックに関連付けられている更新は、論理ブロックにマッピングされている物理ブロックに効果的に伝播される。論理ブロックにマッピングされている物理ブロックが満杯状態になるか、または他の何らかの形で、更新を受け入れることができなくなった場合、一般的に、予備の物理ブロックが取得され、論理ブロックに関連付けられている最新のデータがコピーされる、例えば、現在の物理ブロックから直接コピーされるか、またはマージされ、例えば、更新とともに実質的にコピーされ、予備の物理ブロックに移される。
【０００７】
図１は、論理ブロック、論理ブロックに関連付けられている現在の物理ブロック、および現在の物理ブロックを置き換える予備の物理ブロックの図式表現である。論理ブロック２００は、物理ブロック２１０にマッピングされる。特に、論理ブロック２００内のページ２０２に関連付けられている内容は、物理ブロック２１０のページ２１２のデータ領域内に内容２１４として格納される。物理ブロック２１０内のページ２１２が満杯状態（図に示されているように）、または他の何らかの形で、論理ブロック２００に関連付けられた更新を受け入れることができない場合、ページ２２２を含む新しいまたは予備の物理ブロック２２０は、例えば、一組の予備ブロックから取得できる。物理ブロック２１０に格納されている最新の内容２１４は、物理ブロック２１０に格納されていない、論理ブロック２００に関連付けられている更新とともに、物理ブロック２２０が事実上論理ブロック２００の最新の物理的表現となるように物理ブロック２２０にコピーすることができる。
【０００８】
ときどき、内容２１４を物理ブロック２１０から物理ブロック２２０にコピーまたはマージする過程で中断が発生して、コピーまたはマージプロセスが異常終了し、その結果、不完全な状態になることがある。例えば、コピーまたはマージプロセスの完了前に物理ブロック２１０、２２０を含む不揮発性メモリデバイスへの電力供給が途絶えることがある。コピーまたはマージプロセスの完了前に停電すると、内容２１０に関連付けられている一部のデータが失われることがある。
【０００９】
コピーまたはマージプロセスが中断した結果失われる可能性のあるデータの量を最小限に抑えるため、物理ブロック２１０および物理ブロック２２０を調査して、物理ブロック２１０および物理ブロック２２０のどれが古い物理ブロックであり、どれが新しい、未了の物理ブロックであるかを判定することができる。当業者であれば理解するように、コピーまたはマージプロセスが中断されると、物理ブロック２１０または物理ブロック２２０のどちらが最新の内容を含み、論理ブロック２００に関連付けられる新しい物理ブロックであることを意図しているのかを判定することは時間がかかり、また困難な作業である。
【００１０】
２つの物理ブロックのうちのどれが所定の論理ブロックに関連付けられる新しい物理ブロックとすることを意図されているかを判定しやすくするために、物理ブロックとともに使用するフラグを実装することが多い。物理ブロックとともに使用するフラグを実装する方法の１つは、参照によりその全体が本明細書に組み込まれる、米国特許第６，１１５，７８５号明細書で説明されている。フラグの使用は、コピーまたはマージプロセス実行中の物理ブロックを識別できるようにする際に役立つことがあるが、２つの物理ブロックのうちどちらが新しい物理ブロックであり、どちらが古い物理ブロックであるかを判定することは多くの場合困難である。さらに、フラグを使用するには、物理ブロックをコピーまたはマージプロセス実行中であると識別した場合に部分的書き込み処理を必要とすることが多い。
【００１１】
したがって、望まれているものは、物理ブロック上で実行されるコピーまたはマージプロセスが完了前に中断された場合に効率よくデータを復元できるプロセスおよびシステムである。つまり、必要なのは、複数の物理ブロックのうちどれが、特定の論理ブロックに対応することを意図されている新しい物理ブロックであるかについての判定を効率よく行えるようにし、また論理ブロックに関連付けられている最新のデータを新しい物理ブロックに供給できるようにする方法および装置である。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
本発明は、論理ブロックに関連付けられている複数の物理ブロックのうちどれが、より新しく論理ブロックに関連付けられた物理ブロックであるかを判定するシステムおよび方法に関係する。本発明の一態様により、第１の物理ブロックおよび第２の物理ブロックと不揮発性メモリシステムに関連付けられている論理ブロックとの関連付けを解決（ｒｅｓｏｌｖｅ）する方法は、第１の物理ブロックに関連付けられている第１の識別子を取得するステップおよび第２の物理ブロックに関連付けられている第２の識別子を取得するステップを含む。これらの識別子を比較して、前記第１の物理ブロックがより最近に論理ブロックに関連付けられたことを第１の識別子が示すかどうかを確認する。この方法は、さらに、第１の識別子が、その第１の物理ブロックがより新しく論理ブロックに関連付けられたことを示すと判定されたときに論理ブロックに関連付けられている内容を第１の物理ブロックに供給するように構成されたオペレーションを完了するステップを含む。
【課題を解決するための手段】
【００１３】
一実施形態では、第１の識別子を取得するステップは、第１の物理ブロックに関連付けられているオーバーヘッド領域から第１の識別子を取得するステップを、第２の識別子を取得するステップは、第２の物理ブロックに関連付けられているオーバーヘッド領域から第２の識別子を取得するステップを含む。他の実施形態では、第１の識別子と第２の識別子とを比較して、第１の物理ブロックがより新しく論理ブロックに関連付けられていることを第１の識別子が示した場合を判別するステップは、第１の識別子が第２の識別子の値よりも高い値を持つ場合を判別するステップを含む。
【００１４】
一方の物理ブロックが他方の物理ブロックにコピーされているときに、それらのブロックを含むシステムが停止されるか、または他の何らかの手段により電源が切れると、一般的には、同じ論理ブロックに対応する２つの物理ブロックが生じる。各物理ブロック内の識別子、例えば、更新インデックスを保持し、識別子同士を比較することにより、その２つの物理ブロックのうちどれが他方にコピーまたはマージ中だったのかを容易に、効率よく判定することができる。したがって、両方のブロックの内容を調査し、対応する論理ブロックに関連付けられている情報を他方のブロックの内容の少なくとも一部を受け取ることを意図されているブロックに供給できるようにコピーまたはマージオペレーションを効果的に回復することができる。したがって、システムのシャットダウンまたは停電の結果生じるデータ喪失は、事実上最小限に抑えることができる。
【００１５】
本発明の他の態様により、第２の物理ブロックを論理ブロックに関連付けられている内容を含む、関連付けられている第１の物理ブロックをすでに持つ論理ブロックに関連付ける方法は、第２の物理ブロックを取得するステップ、および第２の物理ブロックに関連付けられている第２のインジケータを第１の物理ブロックに関連付けられている第１のインジケータの値と異なる値に設定するステップを含む。第２のインジケータが設定されると、第１の物理ブロックに含まれる内容の少なくとも一部を第２の物理ブロックに供給するオペレーションを開始することができる。一実施形態では、この方法は、さらに、第１のインジケータを第１の物理ブロックから取り出すステップ、および第１のインジケータの値を判別するステップも含む。
【００１６】
他の実施形態では、この方法は、さらに、第２のインジケータを第２の物理ブロック内に格納するステップを含む。このような一実施形態では、第２のインジケータを第２の物理ブロックに格納するステップは、第２のインジケータを物理ブロックに関連付けられている冗長領域に格納するステップを含むことができる。
【００１７】
本発明のさらに他の態様により、不揮発性メモリは、第１の物理ブロックおよび第２の物理ブロックを含む。第１の物理ブロックは、第１のビットの集合が格納される第１のオーバーヘッド領域を持つ少なくとも１つの第１のページを含む。第２の物理ブロックは、第２のビットの集合が格納される第２のオーバーヘッド領域を持つ少なくとも１つの第２のページを含む。第１の物理ブロックおよび第２の物理ブロックは、両方とも、１つの論理ブロックに関連付けられる。第１のビットの集合および第２のビットの集合は、これらを比較することで第１の物理ブロックと論理ブロックとの関連付けが第２の物理ブロックとの関連付けよりも新しいかどうかを判定するように構成される。
【００１８】
本発明のこれらおよびその他の利点は、以下の詳細な説明を読み、図面のさまざまな図を調査すれば、明白になることであろう。
本発明は、付属の図面とともに以下の説明を参照することにより最もよく理解できる。
【発明を実施するための最良の形態】
【００１９】
メモリシステムへの電力供給が途絶すると、一般的には、メモリシステム内に多数の問題が生じることがある。これらの問題には、これらには限らないが、一方の物理ブロックの内容を他方の物理ブロックにコピー中に停電したときに生じるデータの喪失がある。コピープロセスが中断されたときに生じるデータの喪失を防止するために、物理ブロックの内容がコピー中かどうかを示すフラグを物理ブロック内に設けることができる。しかし、フラグを使用すると、非効率になることが多いことが判明している。
【００２０】
特定の１つの論理ブロックに対応する２つの物理ブロックのうちのどちらが、古い、または現在の、物理ブロックを置き換える未了の、または新しい、物理ブロックであるかに関する判定を容易に行えるようにするため、更新インデックスを物理ブロック内に実装することができる。物理ブロックに関連付けられている少なくとも１つの冗長領域内に格納できる更新インデックスは、コピーまたはマージにかかわる２つの物理ブロックのうちのどちらが古い物理ブロックであるか、およびそれら２つの物理ブロックのうちどちらが、新しい物理ブロック、または内容がコピー中であるコピー先の物理ブロックであるかを示すように構成することができる。例えば、新しい物理ブロックの更新インデックスは、その更新インデックスの値が古い物理ブロックの更新インデックスよりも高い値となるように設定することができる。したがって、どの物理ブロックが新しい物理ブロックであるかを判定するために物理ブロックの更新インデックスがチェックされる場合、高い更新インデックスを持つ物理ブロックが新しい物理ブロックであると判定することができる。
【００２１】
更新インデックスの使用では、一般的に、インクリメント、つまり書き込みステップを１回だけ使用するが、それは、コピーまたはマージプロセスが実行されるときに、実質的に、新しい物理ブロックの更新インデックスのみが、インクリメントされるか、または他の何らかの方法で更新されるからである。さらに、コピーまたはマージプロセスが完了すると、通常、更新インデックスは更新されない。そのため、更新インデックスを使用すると、フラグを使用した場合に比べて費やされるオーバーヘッドが少ないのがふつうである。
【００２２】
更新インデックスは、通常、部分的書き込みが実行されないことを規定する制約条件があるシステムで使用される。つまり、更新インデックスは、部分的書き込みが許されないシステム内で実装することができるということである。しかし、更新インデックスは、部分的書き込みが許されるシステムにも実装できることは理解されるであろう。
【００２３】
フラッシュメモリシステム、またはより一般的に、物理ブロック内で更新インデックスを使用することで恩恵を受ける可能性のある不揮発性メモリデバイスとして、フラッシュメモリカードおよびチップセットがある。通常、フラッシュメモリシステムは、ホストシステムとともに使用され、ホストシステムはフラッシュメモリシステムとの間でデータの読み書きを行うことができる。しかし、図４について以下で説明するように、一部のフラッシュメモリシステムは、組み込みフラッシュメモリおよび組み込みフラッシュメモリ用のコントローラとして実質的に機能するホスト上で実行されるソフトウェアを備える。図２を参照しつつ、不揮発性メモリ、例えば、ＣｏｍｐａｃｔＦｌａｓｈ（Ｒ）メモリカードを含む一般的なホストシステムについて説明する。ホストまたはコンピュータシステム１００は、一般に、マイクロプロセッサ１０８、ランダムアクセスメモリ（ＲＡＭ）１１２、および入出力回路１１６で通信を行うためのシステムバス１０４を備える。ホストシステム１００は、一般に、他のコンポーネント、例えば、わかりやすくするため図には示されていない、ディスプレイデバイスおよびネットワーキングデバイスを備えることができる。
【００２４】
一般に、ホストシステム１００は、これらには限らないが、静止画像情報、オーディオ情報、およびビデオ画像情報などの情報を取り込むことができる。このような情報は、リアルタイムで取り込むことができ、無線方式でホストシステム１００に送信することができる。ホストシステム１００は、実質的にどのようなシステムであってもよいが、ホストシステム１００は、通常、デジタルカメラ、ビデオカメラ、移動体通信デバイス、オーディオプレーヤー、またはビデオプレーヤーなどのシステムである。ただし、一般に、ホストシステム１００は、データまたは情報を格納し、データまたは情報を取り出すシステムであれば実質的にどのようなものでもよいことは理解されるであろう。
【００２５】
ホストシステム１００は、データを取り込むのみ、またはデータを取り出すのみのシステムであってもよい。つまり、ホストシステム１００は、一実施形態では、データを格納する専用システムであるか、またはホストシステム１００は、データを読み取る専用システムであってもよい。例えば、ホストシステム１００は、データを書き込むまたは格納することのみを行うように構成されているメモリライターとすることができる。その代わりに、ホストシステム１００は、通常はデータを読み取るか、または取り出すように構成され、データを取り込むようには構成されていないＭＰ３プレーヤーなどのデバイスとすることもできる。
【００２６】
一実施形態では、取り外し可能不揮発性メモリデバイスである不揮発性メモリデバイス１２０は、情報を格納するためバス１０４とインターフェイスするように構成される。オプションのインターフェイスブロック１３０により、不揮発性メモリデバイス１２０がバス１０４と間接的にインターフェイスするようにできる。当業者であれば理解するように、入出力回路ブロック１１６は、存在する場合、バス１０４上の負荷を低減するために使用される。不揮発性メモリデバイス１２０は、不揮発性メモリ１２４およびオプションのメモリ制御システム１２８を備える。一実施形態では、不揮発性メモリデバイス１２０は、単一チップまたはダイ上に実装することができる。その代わりに、不揮発性メモリデバイス１２０は、マルチチップモジュール、またはチップセットを形成し、不揮発性メモリデバイス１２０として一緒に使用することができる複数のディスクリートコンポーネント上に実装することができる。不揮発性メモリデバイス１２０の一実施形態については、以下で図３に関して詳述する。
【００２７】
不揮発性メモリ１２４、例えば、ＮＡＮＤフラッシュメモリなどのフラッシュメモリは、必要に応じてデータにアクセスし読み取ることができるようにデータを格納する構成をとる。不揮発性メモリ１２４に格納されているデータは、適宜消去することもできるが、不揮発性メモリ１２４内の一部のデータは消去可能でない場合もあることに留意されたい。データの格納、データの読み取り、およびデータの消去のプロセスは、一般に、メモリ制御システム１２８により制御されるか、またはメモリ制御システム１２８が存在しない場合には、マイクロプロセッサ１０８により実行されるソフトウェアにより制御される。不揮発性メモリ１２４のオペレーションは、本質的に不揮発性メモリ１２４の複数のセクションの寿命が実質的に等しく到来するようにすることで不揮発性メモリ１２４の寿命が実質的に最大化されるように管理することができる。
【００２８】
不揮発性メモリデバイス１２０は、一般的に、オプションのメモリ制御システム１２８、つまりコントローラを含むものとして説明されている。多くの場合、不揮発性メモリデバイス１２０は、不揮発性メモリ１２４およびメモリ制御システム１２８、つまりコントローラ、機能用に別々のチップを備えることができる。例えば、これらには限らないが、ＰＣカード、ＣｏｍｐａｃｔＦｌａｓｈ（Ｒ）カード、ＭｕｔｉＭｅｄｉａカード、セキュアデジタルカードなどの不揮発性メモリデバイスは、別のチップ上に実装できるコントローラを備えるが、他の不揮発性メモリデバイスは、別のチップ上に実装されているコントローラを備えない場合がある。不揮発性メモリデバイス１２０が別のメモリおよびコントローラーチップを備えない実施形態では、当業者であれば理解するように、メモリおよびコントローラ機能を単一チップ上に集積化することができる。その代わりに、メモリ制御システム１２８の機能は、例えば、上述のように不揮発性メモリデバイス１２０がメモリコントローラ１２８を含まない一実施形態のように、マイクロプロセッサ１０８で実現することもできる。
【００２９】
図３を参照しつつ、本発明の一実施形態により、不揮発性メモリデバイス１２０について詳述する。上述のように、不揮発性メモリデバイス１２０は、不揮発性メモリ１２４を備え、またメモリ制御システム１２８を備えることもできる。メモリ１２４および制御システム１２８、つまりコントローラは、不揮発性メモリデバイス１２０の一次コンポーネントとすることができるが、例えば、メモリ１２４が組み込みＮＡＮＤデバイスの場合、不揮発性メモリデバイス１２０は制御システム１２８を備えなくてよい。メモリ１２４は、半導体基板上に形成されたメモリセルのアレイとすることができ、その場合、メモリセルの個々の記憶素子に電荷の２つ以上のレベルのうちの１つを格納することによりデータの１つまたは複数のビットが個々のメモリセル内に格納される。不揮発性フラッシュ電気的消去可能プログラム可能読み取り専用メモリ（ＥＥＰＲＯＭ）は、そのようなシステム用のよくあるタイプのメモリの一例である。
【００３０】
制御システム１２８は、存在する場合、バス１５を介してホストコンピュータ、またはメモリシステムを使用してデータを格納するその他のシステムと通信する。バス１５は、一般に、図２のバス１０４の一部である。制御システム１２８は、さらに、メモリセルアレイ１１を含むことができるメモリ１２４のオペレーションを制御して、ホストにより供給されるデータの書き込み、ホストにより要求されたデータの読み出し、および稼働中のメモリ１２４のさまざまなハウスキーピング機能の実行を行うことができる。制御システム１２８は、一般に、関連する不揮発性ソフトウェアメモリ、さまざまな論理回路などを備える汎用マイクロプロセッサを備える。特定のルーチンの実行を制御するため１つまたは複数の状態機械も備えられることも多い。
【００３１】
メモリセルアレイ１１は、通常、アドレスデコーダ１７を介して制御システム１２８またはマイクロプロセッサ１０８によりアドレス指定される。デコーダ１７は、正しい電圧をアレイ１１のゲートおよびビットラインに印加し、制御システム１２８によりアドレス指定されるメモリセルのグループへのデータのプログラミング、そのグループからのデータの読み出し、またはそのグループの消去を行う。追加回路１９は、セルのアドレス指定されたグループ内にプログラミングされるデータに依存するアレイの複数の素子に印加される電圧を制御するプログラミングドライバを備える。回路１９は、さらに、センス・アンプおよびメモリセルのアドレス指定されたグループからデータを読み出すために必要なその他の回路も含む。アレイ１１内にプログラミングされるデータ、またはアレイ１１から最近読み出されたデータは、通常、制御システム１２８内のバッファメモリに格納される。制御システム１２８は、通常、コマンドおよびステータスデータなどを一時的に格納するためのさまざまなレジスタも備える。
【００３２】
アレイ１１は、多数のＢＬＯＣＫＳ０−Ｎメモリセルに分割される。フラッシュＥＥＰＲＯＭシステムではふつうのことであるが、ブロックは、通常、最小の消去単位である。つまり、各ブロックは、一緒に消去される最小数のメモリセルを含むということである。各ブロックは、通常、多数のページに分割される。当業者であれば理解しているように、ページは最小のプログラミング単位であってよい。つまり、基本プログラミングオペレーションでは、最低限１ページ分のメモリセルに対しデータの読み書きを行うのである。通常、データの１つまたは複数のセクタが各ページ内に格納される。図３に示されているように、１つのセクタにユーザデータおよびオーバーヘッドデータが含まれる。オーバーヘッドデータは、通常、セクタのユーザデータから計算して求められた誤り訂正符号（ＥＣＣ）を含む。制御システム１２８の一部２３では、データがアレイ１１内にプログラミングされるときにこのＥＣＣを計算し、データがアレイ１１から読み出されるときにこのＥＣＣをチェックする。その代わりに、ＥＣＣは、関係するユーザデータとは異なるページ、つまり異なるブロックに格納され得る。
【００３３】
ユーザデータの１セクタは、通常、５１２バイトであり、これは、磁気ディスクドライブ内の１セクタのサイズに対応する。オーバーヘッドデータ、つまり冗長データは、通常、１６バイトの追加分である。各ページには、１セクタ分のデータが含まれるのが最もふつうであるが、そうではなく２つ以上のセクタが１ページを形成することもある。一般に多数のページが集まって１つのブロックを形成する。例えば、８ページから、５１２、１０２４、またはそれ以上のページで１ブロックを形成することができる。ブロックの数は、メモリシステムの所望のデータ記憶容量が得られるように選択される。アレイ１１は、通常、それぞれ複数のブロックのうちの一定割合のブロックを含む少数のサブアレイ（図に示されていない）に分割され、これらはさまざまなメモリオペレーションの実行に際して並列処理の度合いを高めるために互いにいくぶん独立して動作する。複数のサブアレイの使用例については、参照によりその全体が本明細書に組み込まれる、米国特許第５，８９０，１９２号明細書で説明されている。
【００３４】
一実施形態では、不揮発性メモリは、システム、例えば、ホストシステムに組み込まれる。図４は、組み込み不揮発性メモリを含むホストシステムを表現する図である。ホストまたはコンピュータシステム１５０は、一般に、ホストシステム１５０の他のコンポーネント（図に示されていない）との間で、マイクロプロセッサ１５８、ＲＡＭ  １６２、および入出力回路１６６が通信を行うためのシステムバス１５４を備える。不揮発性メモリ１７４、例えば、フラッシュメモリを使用することにより、ホストシステム１５０内に情報を格納することができる。不揮発性メモリ１７４とバス１５４との間にインターフェイス１８０が設けられ、これにより不揮発性メモリ１７４との間で情報を読み書きできる。
【００３５】
不揮発性メモリ１７４は、不揮発性メモリ１７４を制御するように構成されているソフトウェアおよびファームウェアのいずれかまたは両方を効果的に実行するマイクロプロセッサ１５８により管理することができる。つまり、マイクロプロセッサ１５８は、コードデバイス（図に示されていない）、つまり、ソフトウェアコードデバイスまたはファームウェアコードデバイスを実行することができ、これにより、不揮発性メモリ１７４を制御することができる。後述の、マイクロプロセッサ１５８内のＣＰＵとともにパッケージされているフラッシュメモリ、独立のフラッシュＲＯＭ、または内部不揮発性メモリ１７４であってよい、このようなコードデバイスを使用することにより、不揮発性メモリ１７４内の物理ブロックをアドレス指定することができ、情報を物理ブロックに書き込む、物理ブロックから読み出す、または消去することができる。
【００３６】
一般に、ユーザがデータを書き込む場合、実際にはファイルシステムを使用してデータを書き込む。ファイルシステムでは、データを、記憶媒体に関連付けられている物理ブロックにマッピングされている１つの論理ブロックまたは、より具体的には、１つの論理ブロックの数ページに関連付ける。図５は、本発明の一実施形態による論理ブロックを有するファイルシステムおよび物理ブロックを有する媒体を表現する図である。ファイルシステム５１４の論理ブロック５１０は任意の数のページ５１８を含む。１つの論理ブロック、例えば、論理ブロック５１０ａに含まれるページ５１８の数は、消去単位のサイズに依存する。例えば、図に示されているように、最小の消去単位に約３２ページが含まれる場合、約３２ページを論理ブロック５１０ａに含めることができる。
【００３７】
媒体５３４、例えば、組み込みフラッシュメモリの物理ブロック５３０は、多数のページ５３８を含む。当業者であれば理解するように、物理ブロック５３０に含まれるページ５３８の数は、通常、論理ブロック５１０に含まれるページ５１８の数と同じである。しかし、論理ブロック５１０に含まれるページ５１８の数は、物理ブロック５３０に含まれるページ５３８の数と必ずしも同じである必要はない。
【００３８】
図６は、本発明の一実施形態による更新インデックスを持つ複数の物理ブロックに関連付けられている論理ブロックを表現する図である。１つの論理ブロック５５０は、「現在」または「古い」物理ブロックと呼ぶことができる１つの物理ブロック５６０にマッピングされる。特に、論理ブロック５５０内の複数のページ５５２に関連付けられている内容は、物理ブロック５６０のページ５６２のデータ領域５６８内に内容５６４として格納される。物理ブロック５６０内のページ５６２が満杯状態（図に示されているように）であるか、または物理ブロック５６０が他の何らかの形で、論理ブロック５５０に関連付けられた更新を受け入れることができない場合、ページ５７２を含む新しいまたは予備の物理ブロック５７０は、例えば、不揮発性メモリシステム全体の中に保持される一組の予備ブロックから取得できる。ほとんどの場合、物理ブロック５６０に格納されない論理ブロック５５０に関連付けられている更新とともに、物理ブロック５６０内に格納されている少なくとも一部の内容５６４は、コピーオペレーションまたはマージオペレーションを使用することで、物理ブロック５７０に供給することができる。特に、論理ブロック５５０に関連付けられている更新により実際に侵害されない内容５６４を、それらの更新とともに物理ブロック５７０に供給することができる。一実施形態では、実質的にすべての内容５６４が論理ブロック５５０に関連付けられる更新により実際に侵害される場合、物理ブロック５７０内に格納される内容５６４は本質的にない。当業者であれば理解するように、物理ブロック５６０に含まれていない新しいデータが物理ブロック５７０に供給されない場合にコピーオペレーションが適当であり、物理ブロック５６０に含まれていない新しいまたは更新されたデータが物理ブロック５７０に含まれるべき場合はマージオペレーションが適当である。
【００３９】
物理ブロック５６０内のそれぞれのページ５６２は、冗長またはオーバーヘッド領域５６６を含む。同様に、物理ブロック５７０内のそれぞれのページ５７２も、冗長またはオーバーヘッド領域５７６を含む。説明されている実施形態では、物理ブロック５６０の第１のページ５６２ａに関連付けられている冗長領域５６６ａは、更新インデックス５６８を形成するビットの集合を含む。しかし、物理ブロック５６０の任意の数の冗長領域５６６が更新インデックスを含むことができ、例えば、冗長領域５６６ｂは更新インデックス５６８と同じ値を持つ更新インデックス５８８を含むことができることは理解されるであろう。
【００４０】
例えば、物理ブロック５７０に関連付けられている少なくとも１つの冗長領域５７６内のビット集合を識別することにより、物理ブロック５７０に論理ブロック５５０が関連付けられるまで、物理ブロック５７０は、一般的には空である。しかし、物理ブロック５７０が論理ブロック５５０に関連付けられると、更新インデックス５７８は、物理ブロック５７０の第１のページ５７２ａに対応する冗長領域５７６ａに格納される。追加更新インデックス、例えば、冗長領域５７６ｂに格納され、更新インデックス５７８と同じ値を持つ更新インデックス５９８は、物理ブロック５７０に格納できることは理解されるであろう。
【００４１】
更新インデックス５７８は、一般に、更新インデックス５６８と比較したときに、物理ブロック５７０を物理ブロック５６０により新しく関連付けられているものとして識別する値を持つように設定される。更新インデックス５７８および更新インデックス５６８を使用すると、物理ブロック５６０、５７０を含むシステム全体に停電が発生した後、物理ブロック５６０の少なくとも一部の内容５６４が物理ブロック５７０に供給中であるかどうかに関する判定を行える。図に示されているように、物理ブロック５６０の一部の内容５６４ａ、５６４ｂは、内容５６４ａ’、５６４ｂ’としてそれぞれ、物理ブロック５７０に供給されているが、供給されることを意図されている他の内容、例えば内容５６４ｄはまだ供給されていない。さらに、論理ブロック５５０に関連付けられている更新は、適宜、例えば、内容５７４が内容５６４ｃを置き換えることが意図されている場合に、物理ブロック５７０内に内容５７４として格納することができる。
【００４２】
停電後、両方の物理ブロック５６０、５７０が論理ブロック５５０に関連付けられている場合、物理ブロック５６０の一部の内容５６４を物理ブロック５７０に供給するオペレーションが正常に完了していないという指示が発生しうる。説明されている実施形態では、更新インデックス５７８が、更新インデックス５６８の値よりも新しい、例えば、大きいと理解される値を持つ場合、物理ブロック５７０に供給される物理ブロック５６０の任意の内容５６４が物理ブロック５７０に正常に供給されていない可能性があることが示される。
【００４３】
論理ブロック５５０に関連付けられている新しい、または改訂された内容などの更新が事実上すべて、物理ブロック５６０の内容５６４を侵害している場合、内容５６４はいずれも、物理ブロック５７０内に格納されなかったかもしれない。その結果、物理ブロック５６０、５７０を、例えば、停電後の電源投入時に解決する場合、内容５６４は事実上どれも、物理ブロック５７０内にはマージされるべきでないと判定できる。
【００４４】
一般に、物理ブロック５６０、５７０間の更新、コピー、またはマージプロセスが中断された結果失われる可能性のあるデータの量を実質的に最小限に抑えるため、物理ブロック５６０の更新インデックス５６８および物理ブロック５７０の更新インデックス５７８を調査して、物理ブロック５７０を新しい物理ブロックとして識別することができる。このように、更新インデックス５７８は、通常、物理ブロック５７０が取得された場合、例えば、物理ブロック５６０に関して更新、コピー、またはマージプロセスが実行された場合に、物理ブロック５７０に格納される。
【００４５】
図７を参照しつつ、一方の物理ブロックの内容を他方の物理ブロックに更新、コピー、またはマージする一方法に関連付けられているステップについて、本発明の一実施形態により説明される。ブロックをコピーまたはマージするプロセス６００は、新しいまたは予備の物理ブロックが取得されるステップ６０２から始まる。特に、予備の物理ブロックは、論理ブロックに関連付けられる、または他の何らかの手段により、対応する新しい物理ブロックとして取得される。新しいまたは予備のブロックが取得された後、「古い」物理ブロック、または新しい物理ブロックが関連付けられる論理ブロックに現在関連付けられている物理ブロックの更新インデックスは、ステップ６０４で取り出される。説明されている実施形態では、更新インデックスは、複数のビットとして、例えば４ビットとして、物理ブロックに関連付けられている冗長領域内に格納される。したがって、古い物理ブロックの更新インデックスの取得は、通常、古い物理ブロックに関連付けられている冗長領域またはオーバーヘッド領域から更新インデックスを取得するステップを含む。物理ブロックの更新インデックスを、物理ブロックの実質的にただ１つのページ、例えば、第１のページの冗長領域に格納するか、または更新インデックスを、物理ブロック内の実質的にすべてのページの冗長領域内に格納することができることは理解されるであろう。
【００４６】
古い物理ブロックの更新インデックスが取り出された後、ステップ６０６で、古い物理ブロックの更新インデックスが可能な最も高い更新インデックス値に実質的に等しいかどうかに関する判定が行われる。更新インデックスが４つのビットを含む一実施形態では、可能な最も高い更新インデックス値を１５とすることができるが、可能な最も高い更新インデックス値はさまざまな値にできる。古い物理ブロックの更新インデックスが可能な最も高い更新インデックス値に実質的に等しくないと判定される場合、プロセスの流れはステップ６０６からステップ６０８に移り、そこで、新しい物理ブロックの更新インデックスが古い物理ブロックの更新インデックスよりも高い値に設定される。通常、新しい物理ブロックの更新インデックスを古い物理ブロックの更新インデックスよりも高い値に設定するには、新しい物理ブロックの更新インデックスを古い物理ブロックの更新インデックスよりも１つ高い値に設定する必要がある。新しい物理ブロックの更新インデックスを設定するステップは、一般に、更新インデックスを新しい物理ブロックに関連付けられている冗長領域に格納するステップも含むことは理解されるであろう。一般に、新しい物理ブロックの更新インデックスが古い物理ブロックの更新インデックスよりも高い値に設定されるときを判別するのではなく、その代わりに、新しい物理ブロックの更新インデックスが古い物理ブロックの更新インデックスよりも新しい値に設定されるときを判別することができる。
【００４７】
新しい物理ブロックの更新インデックスが設定された後、更新、コピー、またはマージプロセスが、ステップ６１０で、適宜起動され、それぞれ、新しいユーザデータ集合および／または古い物理ブロックから新しい物理ブロックへのデータの更新、コピー、またはマージを実行する。その後、ステップ６１２で、更新、コピー、またはマージプロセスが正常に完了したかどうかが判定される。このような判定は、新しい物理ブロック内ですべての現在の論理ページが占有されているかどうかに基づくことができる。コピーまたはマージプロセスが正常に完了したと判断された場合、古い物理ブロックに対応する論理ブロックに関連付けられている最新のデータが新しい物理ブロック内に入ったことが示される。したがって、新しい物理ブロックが、論理ブロックに対応する物理ブロックになり、古い物理ブロックの内容はステップ６１４で消去される。古い物理ブロックの内容が消去された後、ブロックの更新、コピー、またはマージのプロセスは完了する。
【００４８】
その代わりに、更新、コピー、またはデータを新しい物理ブロックにマージするマージプロセスが正常に完了していないとステップ６１２で判定される場合、更新、コピー、またはマージプロセスが、例えば、古い物理ブロックおよび新しい物理ブロックを含む不揮発性メモリデバイスへの電力が途絶えることで中断されたことを意味する。その結果、古い物理ブロックおよび新しい物理ブロックは、両方とも、同じ論理ブロックに対応することがある。例えば、古い物理ブロックおよび新しい物理ブロックが、両方とも、同じ論理ブロックを識別する１つのビットまたは複数のビットを冗長領域内に含むことがある。説明されている実施形態では、論理ブロックが２つの対応する物理ブロックを持つと判断された場合、その２つの対応する物理ブロックは、次回の電源投入プロセスステップ６１６で事実上解決することができる。つまり、古い物理ブロックおよび新しい物理ブロックの内容は、古い物理ブロックおよび新しい物理ブロックが対応する論理ブロックに関連付けられている一番最近の内容をコピーまたはマージして、最新の内容が新しい物理ブロック内に置かれるようにできる。古い物理ブロックおよび新しい物理ブロックを解決する方法の１つについて、図８を参照しつつ以下で説明する。古い物理ブロックおよび新しい物理ブロックが解決された後、ブロックの更新、コピー、またはマージのプロセスは完了する。
【００４９】
ステップ６０６に戻って、古い物理ブロックの更新インデックスが可能な最も高い更新インデックス値に実質的に等しいと判定された場合、新しい物理ブロックの更新インデックスは、ステップ６１８で、値０に設定することができる。古い物理ブロックの更新インデックスが可能な最も高い更新インデックス値に実質的に等しく、新しい物理ブロックの更新インデックスが０に設定された場合、新しい物理ブロックは古い物理ブロックよりも新しいことが示される。新しい物理ブロックの更新インデックスが設定された後、プロセスの流れがステップ６１０に向かい、古い物理ブロックから新しい物理ブロックへのデータのコピーまたはマージが起動される。
【００５０】
図８は、本発明の一実施形態による、古いブロックおよび新しいブロックを解決することに関連するステップ、例えば、図７のステップ６１６を例示するプロセス流れ図である。同じ論理ブロックに対応する２つの物理ブロックを解決するプロセス６１６は、ステップ６４０から始まり、その論理ブロックに対応するデータを含む第１の物理ブロックが取得される。第１の物理ブロックは、古い物理ブロックまたは新しい物理ブロックのいずれかとすることができることは理解されるであろう。第１の物理ブロックが取得された後、論理ブロックに対応するデータを含む第２の物理ブロックがステップ６４２で取得される。
【００５１】
ステップ６４４で、第１の物理ブロックの更新インデックス、つまり、第１の更新インデックスが取り出される。更新インデックスは、一般に、第１の物理ブロックに関連付けられている冗長領域のうちの少なくとも１つに格納される。通常、更新インデックスは、第１の物理ブロックの第１ページの冗長領域から取り出される。第２の物理ブロックの更新インデックス、つまり、第２の更新インデックスは、ステップ６４６で取り出されるか、または他の何らかの手段により取得される。
【００５２】
第１の更新インデックスおよび第２の更新インデックスが取得された後、第１の更新インデックスおよび第２の更新インデックスを比較することができる。したがって、ステップ６４８で、第１の更新インデックスの値が第２の更新インデックスの値よりも大きいかどうかについての判定が行われる。第１の更新インデックスが値０を持つ場合でも、第２の更新インデックスが更新されたインデックスの最大値である値を持つ場合には第１の更新インデックスは第２の更新インデックスよりも大きく、またその逆も成立することは理解されるであろう。第１の更新インデックスが第２の更新インデックスよりも大きくないと判定された場合、第２の物理ブロックが新しい物理ブロックであることが示される。つまり、コピーまたはマージプロセスが中断されたときに第１の物理ブロックの内容は第２の物理ブロック内に更新、コピー、またはマージ中だったことを意味する。したがって、プロセスの流れはステップ６４８からステップ６５０に進み、コピーまたはマージプロセスは、適宜完了し、第１の物理ブロックに関連付けられている内容を第２の物理ブロック内に更新、コピー、またはマージする作業を完了する。更新、コピー、またはマージプロセスの完了は、第１の物理ブロックに内容があるが、第２の物理ブロック内には内容がないページを識別するステップおよびそのような内容を第２の物理ブロックに供給するステップを含むことができる。
【００５３】
内容を第２の物理ブロックにコピーまたはマージする作業が完了した後、ステップ６５２で第１の物理ブロックが消去される。第１の物理ブロックを消去するステップは、一般に、第１の物理ブロックの更新されたインデックスを消去するステップだけでなく、第１の物理ブロックと現在第２の物理ブロックに関連付けられている論理ブロックとの関連付けを実質的に解除するステップをも含む。ブロックを解決するプロセスは、第１の物理ブロックが消去された後、完了する。
【００５４】
ステップ６４８に戻って、第１の更新インデックスが第２の更新インデックスよりも大きいと判定された場合、第１の物理ブロックが新しい物理ブロックであり、第２の物理ブロックは古い物理ブロックであることが示される。したがって、ステップ６５４で、まだ完了していない更新、コピー、またはマージプロセスは、完了され、第２の物理ブロックの内容を第１の物理ブロックに、適宜、コピーまたはマージする。第１の物理ブロックに、第１の物理ブロックが関連付けられている論理ブロック、例えば、第１の物理ブロックの少なくとも１つの冗長領域内で識別された論理ブロックに関連付けられている最新の、または現在の内容が入ると、第２の物理ブロックはステップ６５６で消去され、ブロックを解決するプロセスは完了する。
【００５５】
一般に、更新インデックスを維持し、更新インデックスを使用することによりブロックを解決するステップに関連する機能は、ソフトウェアで、例えば、プログラムコードデバイスとして、またはファームウェアとして、ホストシステムに供給される。劣化の平準化を実行できるように、ホストシステムに供給されるソフトウェアまたはファームウェアに関連する適当なシステムアーキテクチャの一実施形態が図９に示されている。システムアーキテクチャ７００は、これらに限らないが一般に、アプリケーションインターフェイスモジュール７０４、システムマネージャモジュール７０８、データマネージャモジュール７１２、データ完全性マネージャ７１６、ならびにデバイスマネージャおよびインターフェイスモジュール７２０などさまざまなモジュールを含む。一般に、システムアーキテクチャ７００は、プロセッサ、例えば、図２のプロセッサ１０８によりアクセス可能なソフトウェアコードデバイスまたはファームウェアを使用して実装することができる。
【００５６】
一般に、アプリケーションインターフェイスモジュール７０４は、ホスト、オペレーティングシステム、またはユーザと直接通信するように構成できる。アプリケーションインターフェイスモジュール７０４は、さらに、システムマネージャモジュール７０８およびデータマネージャモジュール７１２とも通信する。ユーザは、フラッシュメモリの読み書き、またはフォーマットを行いたい場合、オペレーティングシステムに要求を送ると、それらの要求はアプリケーションインターフェイスモジュール７０４に渡される。アプリケーションインターフェイスモジュール７０４は、要求に応じてシステムマネージャモジュール７０８またはデータマネージャモジュール７１２に要求を振り分ける。
【００５７】
システムマネージャモジュール７０８は、システム初期化サブモジュール７２４、消去カウントブロックマネジメントサブモジュール７２６、およびパワーマネジメントブロックサブモジュール７３０を備える。システム初期化サブモジュール７２４は、一般に、初期化要求を処理できるように構成され、通常、消去カウントブロックマネジメントサブモジュール７２６と通信する。消去カウントブロックマネジメントサブモジュール７２６は、ブロックの消去カウントを格納する機能および個々の消去カウントを使用して平均消去カウントを計算するだけでなく更新する機能を備える。消去カウントの使用については、参照によりその全体が本明細書に組み込まれている、２００２年１０月２８日に出願した同時係属米国特許出願第１０／２８１，７３９号明細書（整理番号ＳＡＮＤＰ０２３）で説明されている。システム初期化モジュール７２４は、さらに、１対多の論理−物理ブロック割り当てを解決するように構成され、したがって、更新インデックスを利用することができる。
【００５８】
アプリケーションインターフェイスモジュール７０４と通信するほかに、システムマネージャモジュール７０８は、さらに、データマネージャモジュール７１２ならびにデバイスマネージャおよびインターフェイスモジュール７２０とも通信する。システムマネージャモジュール７０８およびアプリケーションインターフェイスモジュール７０４の両方と通信する、データマネージャモジュール７１２は、論理セクタを物理セクタに効果的に変換するセクタマッピングを実行する機能を備えることができる。つまり、データマネージャモジュール７１２は、複数の論理ブロックを複数の物理ブロックにマッピングするように構成されている。データマネージャモジュール７１２は、オペレーティングシステムおよびファイルシステムインターフェイス層に関連付けられている機能も備えることができ、これにより、参照により全体が本明細書に組み込まれている、２００２年１０月２８日に出願した同時係属米国特許出願第１０／２８１，８５５号明細書（整理番号ＳＡＮＤＰ０２９）で説明されているように、ブロック内のグループを管理することができる。
【００５９】
システムマネージャモジュール７０８、データマネージャ７１２、およびデータ完全性マネージャ７１６と通信する、デバイスマネージャおよびインターフェイスモジュール７２０は、通常、フラッシュメモリインターフェイスを備え、ハードウェア抽象化に関連する機能、例えば、Ｉ／Ｏインターフェイスを含む。データ完全性マネージャモジュール７１６は、他の機能のうちでもとりわけＥＣＣ処理を行う。
【００６０】
本発明のごく少数の実施形態しか説明されていないが、本発明は、本発明の精神または範囲を逸脱することなく、他の多くの特有の形態で実現することはできることは理解されるであろう。例えば、論理ブロック内の論理グループおよび物理ブロック内の対応する物理グループは、実質的に同じサイズであるとして説明されているが、論理グループおよび物理グループは、一般に、異なるサイズであってよい。つまり、論理グループ内に含まれるページの数およびその論理グループに対応する物理グループに含まれるページの数は、必ずしも同じでなくてもよい。
【００６１】
更新インデックスは４ビットを含むものとして説明されているが、更新インデックスは、一般に、ビットをいくつでもとることができることは理解されるであろう。例えば、更新インデックスは４ビットよりも少ないビット数を含むか、または更新インデックスは５ビット以上、例えば最大１バイト以上を含むことができる。ビット数は、システム要件全体およびシステム全体の中の物理ブロックの冗長領域内で利用可能なビット数など、これらに限定されないさまざまな理由に基づいて選択することができる。
【００６２】
一般に、物理ブロックの更新インデックス間の実質的などのような差も、複数の物理ブロックのうちのどれが未了ブロックであるか、または現在のデータを更新、コピー、またはマージするブロックであるかを判定するために使用することができる。より高い更新インデックスを持つ物理ブロックは、より新しい、例えば、未了ブロックとして説明されているが、更新インデックスの低い物理ブロックは、その代わりに、例えば、予備の物理ブロックの更新インデックスが予備の物理ブロックの取得時に現在の物理ブロックの更新インデックスよりも小さい値に設定される場合に、より新しいブロックとすることができる。同様に、更新インデックス内の複数のビットを回転するか、または他の何らかの手段によりシフトし、どの更新インデックスがより新しいブロックに関連付けられているかを判別するために使用できる更新インデックスの異なる「値」を出すことができる。
【００６３】
更新インデックスを使用して複数の物理ブロックのうちのどれが新しい、または予備の物理ブロックであるか、複数の物理ブロックのうちのどれが古い物理ブロックであるかを判定した後、コピーまたはマージオペレーションを実際に再起動し、情報を予備の物理ブロック内に供給する、例えば、更新、コピー、またはマージを行うプロセスを完了することができる。一実施形態では、更新、コピー、またはマージオペレーションを再起動する前に、予備の物理ブロックの内容を消去し、予備の物理ブロックの更新インデックスを、古い物理ブロックの更新インデックスの値よりもより新しい、例えば、大きい値にリセットすることができ、しかも、本発明の精神または範囲を逸脱することはない。予備の物理ブロックを消去するステップがあれば、時間はかかるが、古い物理ブロックのどの内容がすでに予備の物理ブロックに送られているのか、また古い物理ブロックのどの内容が予備の物理ブロックにまだ送られていないのかを判別する必要があまりなくなる。
【００６４】
本発明のさまざまな方法に関連するステップは、さまざまな形で変更することができる。一般に、複数のステップの追加、削除、順序変更、および改変を行うことができる。例えば、物理ブロックが取得された実質的直後に、物理ブロックを解決するプロセスの実行中に、更新インデックスを物理ブロックから取り出すことができる。
【００６５】
一実施形態では、古い物理ブロックは、コピーまたはマージプロセスの完了後、実質的に常に消去されるため、古い物理ブロックおよび対応する新しい物理ブロックを含むシステムへの電力が途絶えると、古い物理ブロックおよび新しい物理ブロックは、一般に、単一の論理ブロックに関連付けられたままになる。したがって、コピーまたはマージプロセスが正常に完了したかどうかを判定するステップは、本発明の精神または範囲を逸脱することなく、単一の論理ブロックに関連付けられている２つの物理ブロックがまだあるかどうかを判定するステップを含むことができることは理解されるであろう。したがって、本発明の実施例は、説明を目的としており、制限することを目的としていないと考えられ、本発明は、本明細書に述べた詳細に限定されず、付属の請求項の範囲内で修正することができる。
【図面の簡単な説明】
【００６６】
【図１】論理ブロック、論理ブロックに関連付けられている現在の物理ブロック、および現在の物理ブロックを置き換える予備の物理ブロックを表現する図である。
【図２】不揮発性メモリを含む一般的なホストシステムを表現する図である。
【図３】メモリデバイス、例えば、図２のメモリデバイス１２０を表現する図である。
【図４】組み込みの不揮発性メモリを含むホストシステムを表現する図である。
【図５】本発明の一実施形態による論理ブロックを有するファイルシステムおよび物理ブロックを有する媒体を表現する図である。
【図６】本発明の一実施形態による更新インデックスを持つ複数の物理ブロックに関連付けられている論理ブロックを表現する図である。
【図７】本発明の一実施形態による更新プロセス、コピープロセス、またはマージプロセスを起動することに関連するステップを例示するプロセス流れ図である。
【図８】本発明の一実施形態による、古いブロックおよび新しいブロックを解決することに関連するステップ、例えば、図７のステップ６１６を例示するプロセス流れ図である。
【図９】本発明の一実施形態によるシステムアーキテクチャを表現するブロック図である。
【図１】
2010267290.tif 000003
【図２】
2010267290.tif 000004
【図３】
2010267290.tif 000005
【図４】
2010267290.tif 000006
【図５】
2010267290.tif 000007
【図６】
2010267290.tif 000008
【図７】
2010267290.tif 000009
【図８】
2010267290.tif 000010
【図９】
2010267290.tif 000011
【手続補正書】
【提出日】平成22年8月9日(2010.8.9)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の物理ブロックを有するＮＡＮＤフラッシュメモリアレイを含む不揮発性メモリシステムの操作方法であって、各物理ブロックが複数のページに構成された複数のメモリセルを含み、各メモリセルは１ビット以上のデータを記憶可能であり、そのため前記物理ブロック内のページの部分書き込みが許されないものにおいて、前記方法が、
前記フラッシュメモリアレイ内の第１の物理ブロックを論理ブロックと関連付けるステップと、
前記論理ブロックに関連付けられたデータと、第１の更新インデックス値を、前記第１の物理ブロック内の少なくとも１ページに書き込むステップと、
次に第２の物理ブロックを前記論理ブロックと関連付けるステップと、
前記論理ブロックに関連付けられたデータと、第２の更新インデックス値を、前記第２の物理ブロック内の少なくとも１ページに書き込むステップであって、前記第２の更新インデックス値は前記第２の物理ブロックが前記第１の物理ブロックより新しく前記論理ブロックと関連付けられたものであることを表すものであるステップと、
前記第１の更新インデックス値を前記第１の物理ブロックから取得するステップと、
前記第２の更新インデックス値を前記第２の物理ブロックから取得するステップと、
前記第１と第２の更新インデックス値のどちらがそれらの物理ブロックがより新しく前記論理ブロックと関連付けられたかを表しているかを決定するために、前記第１の更新インデックス値と前記第２の更新インデックス値とを比較するステップと、
前記比較するステップが、前記第２の更新インデックス値が前記第２物理ブロックが前記第１の物理ブロックより新しく前記論理ブロックと関連付けられたことを表していると決定したことに応答して、前記論理ブロックに関連付けられた残りのデータを前記第２の物理ブロックに書き込むステップと、
前記書き込みステップの後に前記第１の物理ブロックを消去するステップであって、該消去ステップが第１の更新インデックス値の消去を含むステップ、
を含む方法。
【請求項２】
複数の物理ブロックを有するＮＡＮＤフラッシュメモリアレイを含む不揮発性メモリシステムの操作方法であって、各物理ブロックが複数のページに構成された複数のメモリセルを含み、各メモリセルは１ビット以上のデータを記憶可能であり、そのため前記物理ブロック内のページの部分書き込みが許されないものにおいて、前記方法が、
前記フラッシュメモリアレイ内の第１の物理ブロックを論理ブロックと関連付けるステップと、
前記論理ブロックに関連付けられたデータと、第１の更新インデックス値を、前記第１の物理ブロック内の少なくとも１ページに書き込むステップと、
次に第２の物理ブロックを前記論理ブロックと関連付けるステップと、
前記論理ブロックに関連付けられたデータと、第２の更新インデックス値を、前記第２の物理ブロック内の少なくとも１ページに書き込むステップであって、前記第２の更新インデックス値は前記第２の物理ブロックが前記第１の物理ブロックより新しく前記論理ブロックと関連付けられたものであることを表すものであるステップと、
前記第１の更新インデックス値を前記第１の物理ブロックから取得するステップと、
前記第２の更新インデックス値を前記第２の物理ブロックから取得するステップと、
前記第１と第２の更新インデックス値のどちらがそれらの物理ブロックがより新しく前記論理ブロックと関連付けられたかを表しているかを決定するために、前記第１の更新インデックス値と前記第２の更新インデックス値とを比較するステップと、
前記比較するステップが、前記第２の更新インデックス値が前記第２物理ブロックが前記第１の物理ブロックより新しく前記論理ブロックと関連付けられたことを表していると決定したことに応答して、前記論理ブロックに関連付けられた残りのデータを前記第２の物理ブロックに書き込むステップと、
を含む方法。
【請求項３】
複数の物理ブロックを有するＮＡＮＤフラッシュメモリアレイを含む不揮発性メモリシステムの操作方法であって、各物理ブロックが複数のページに構成された複数のメモリセルを含み、各メモリセルは１ビット以上のデータを記憶可能であり、そのため前記物理ブロック内のページの部分書き込みが許されないものにおいて、前記方法が、
前記フラッシュメモリアレイ内の第１の物理ブロックを論理ブロックと関連付けるステップと、
前記論理ブロックに関連付けられたデータと、第１の更新インデックス値を、前記第１の物理ブロック内の少なくとも１ページに書き込むステップと、
次に第２の物理ブロックを前記論理ブロックと関連付けるステップと、
前記論理ブロックに関連付けられたデータと、第２の更新インデックス値を、前記第２の物理ブロック内の少なくとも１ページに書き込むステップであって、前記第２の更新インデックス値は前記第２の物理ブロックが前記第１の物理ブロックより新しく前記論理ブロックと関連付けられたものであることを表すものであるステップと、
前記第１の更新インデックス値と前記第２の更新インデックス値のどちらが、その物理ブロックが前記論理ブロックとより新しく関連づけられたかを示しているかを決定するために、前記第１の更新インデックス値を前記第２の更新インデックス値と比較するステップと、
を含む方法。
【請求項４】
不揮発性メモリシステムであって、
ＮＡＮＤ構成の複数のメモリセルを含む不揮発性メモリであって、前記複数のメモリセルは複数の物理ブロックの各々における複数のページに構成されており、各メモリセルはデータの１ビット以上を記憶可能であり、そのため部分書き込みが許されないものと、
物理ブロックを論理ブロックと関連付ける手段と、
論理ブロックからの情報と更新インデックス値とを前記論理ブロックに関連付けられた物理ブロックの少なくとも１ページに書き込む手段と、
を含み、前記書き込む手段が、
第１の更新インデックス値を前記論理ブロックに関連付けられた第１の物理ブロック内の少なくとも１ページに書き込み、第１の物理ブロックが前記論理ブロックに関連付けられた後に第２の更新インデックス値を前記論理ブロックに関連付けられた第２の物理ブロック内の少なくとも１ページに書き込み、そのため前記第２の物理ブロックに関連付けられた前記第２の更新インデックス値が、前記第２の物理ブロックが前記第１の物理ブロックより新しく前記論理ブロックに関連付けられたことを表し、
更にどちらの物理ブロックがより新しく前記論理ブロックと関連付けられたかを決定するために、前記第１の更新インデックス値と前記第２の更新インデックス値とを比較する手段を含み、
前記論理ブロックに関連付けられた書き込み情報を前記第２の物理ブロックに書き込む手段が、前記比較する手段の前記第２の物理ブロックが前記第１の物理ブロックより新しく前記論理ブロックに関連付けられたことの決定に応答し、
更に前記第２の更新インデックス値の消去を含む、第１の物理ブロックを消去する手段、
を含む不揮発性メモリシステム。
【請求項５】
不揮発性メモリシステムであって、
ＮＡＮＤ構成の複数のメモリセルを含む不揮発性メモリであって、前記複数のメモリセルは複数の物理ブロックの各々における複数のページに構成されており、各メモリセルはデータの１ビット以上を記憶可能であり、そのため部分書き込みが許されないものと、
物理ブロックを論理ブロックと関連付ける手段と、
論理ブロックからの情報と更新インデックス値とを前記論理ブロックに関連付けられた物理ブロックの少なくとも１ページに書き込む手段と、
を含み、前記書き込む手段が、
第１の更新インデックス値を前記論理ブロックに関連付けられた第１の物理ブロック内の少なくとも１ページに書き込み、第１の物理ブロックが前記論理ブロックに関連付けられた後に第２の更新インデックス値を前記論理ブロックに関連付けられた第２の物理ブロック内の少なくとも１ページに書き込み、そのため前記第２の物理ブロックに関連付けられた前記第２の更新インデックス値が、前記第２の物理ブロックが前記第１の物理ブロックより新しく前記論理ブロックに関連付けられたことを表し、
更にどちらの物理ブロックがより新しく前記論理ブロックと関連付けられたかを決定するために、前記第１の更新インデックス値と前記第２の更新インデックス値とを比較する手段を含み、
前記論理ブロックに関連付けられた書き込み情報を前記第２の物理ブロックに書き込む手段が、前記比較する手段の前記第２の物理ブロックが前記第１の物理ブロックより新しく前記論理ブロックに関連付けられたことの決定に応答する、
不揮発性メモリシステム。
【請求項６】
不揮発性メモリシステムであって、
ＮＡＮＤ構成の複数のメモリセルを含む不揮発性メモリであって、前記複数のメモリセルは複数の物理ブロックの各々における複数のページに構成されており、各メモリセルはデータの１ビット以上を記憶可能であり、そのため部分書き込みが許されないものと、
物理ブロックを論理ブロックと関連付ける手段と、
論理ブロックからの情報と更新インデックス値とを前記論理ブロックに関連付けられた物理ブロックの少なくとも１ページに書き込む手段と、
を含み、前記書き込む手段が、
第１の更新インデックス値を前記論理ブロックに関連付けられた第１の物理ブロック内の少なくとも１ページに書き込み、第１の物理ブロックが前記論理ブロックに関連付けられた後に第２の更新インデックス値を前記論理ブロックに関連付けられた第２の物理ブロック内の少なくとも１ページに書き込み、そのため前記第２の物理ブロックに関連付けられた前記第２の更新インデックス値が、前記第２の物理ブロックが前記第１の物理ブロックより新しく前記論理ブロックに関連付けられたことを表し、
更にどちらの物理ブロックがより新しく前記論理ブロックと関連付けられたかを決定するために、前記第１の更新インデックス値と前記第２の更新インデックス値とを比較する手段を含む、
不揮発性メモリシステム。