説明

共通論理ブロックに関連付けられている物理ブロックを解決するための方法および装置

【課題】論理ブロックに関連付けられている複数の物理ブロックのうちどれが、より最近に論理ブロックに関連付けられた物理ブロックであるかを判定する。
【解決手段】判定する方法は、第1の物理ブロックに関連付けられている第1の識別子を取得するステップおよび第2の物理ブロックに関連付けられている第2の識別子を取得するステップを含む。これらの識別子を比較して、前記第1の物理ブロックがより最近に論理ブロックに関連付けられたことを第1の識別子が示すかどうかを確認する。この方法は、さらに、第1の識別子が、その第1の物理ブロックがより新しく論理ブロックに関連付けられたことを示すと判定されたときに論理ブロックに関連付けられている内容を第1の物理ブロックに供給するように構成されたオペレーションを完了するステップを含む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、2002年10月28日に出願した「WEAR LEVELING IN NON−VOLATILE STORAGE SYSTEMS」という表題の同時係属米国特許出願第10/281,739号明細書(整理番号SANDP023/SDK0366.000US)、2002年10月28日に出願した「TRACKING THE MOST FREQUENTLY ERASED BLOCKS IN NON−VOLATILE MEMORY SYSTEMS」という表題の同時係属米国特許出願第10/281,670号明細書(整理番号SANDP025/SDK0366.002US)、2002年10月28日に出願した「TRACKING THE LEAST FREQUENTLY ERASED BLOCKS IN NON−VOLATILE MEMORY SYSTEMS」という表題の同時係属米国特許出願第10/281,824号明細書(整理番号SANDP026/SDK0366.003)、2002年10月28日に出願した「METHOD AND APPARATUS FOR SPLITTING A LOGICAL BLOCK」という表題の同時係属米国特許出願第10/281,631号明細書(整理番号SANDP028/SDK0371.000US)、2002年10月28日に出願した「METHOD AND APPARATUS FOR GROUPING PAGES WITHIN A BLOCK」という表題の同時係属米国特許出願第10/281,855号明細書(整理番号SANDP029/SDK0410.000US)、2002年10月28日に出願した「MAINTAINING ERASE COUNTS IN NON−VOLATILE STORAGE SYSTEMS」という表題の同時係属米国特許出願第10/281,696号明細書(整理番号SANDP031/SDK0420.000US)、2002年10月28日に出願した「METHOD AND APPARATUS FOR MANAGING AN ERASE COUNT BLOCK」という表題の同時係属米国特許出願第10/281,626号明細書(整理番号SANDP032/SDK0420.001US)、および2002年10月28日に出願した「METHOD AND APPARATUS FOR PERFORMING MULTI−PAGE READ AND WRITE OPERATIONS IN A NON−VOLATILE MEMORY」という表題の同時係属米国特許出願第10/281,804号明細書(整理番号SANDP033/SDK0426.000US)に関係し、それぞれ参照によりその全体が本明細書に組み込まれている。
【0002】
本発明は、一般的には、大容量デジタルデータ記憶装置システムに関する。より具体的には、本発明は、共通論理ブロックに関連付けられている複数の物理ブロックを単一の物理ブロックに実質的に帰着(resolve)できる効率的なシステムおよび方法に関する。
【背景技術】
【0003】
フラッシュメモリ記憶装置システムなどの不揮発性メモリシステムを使用すると、そのようなメモリシステムの物理的サイズがコンパクトになり、また不揮発性メモリを繰り返しプログラムし直せるため、その利用が増えている。フラッシュメモリ記憶装置システムのコンパクトな物理的サイズのおかげで、そのような記憶装置システムを、普及の勢いが増しているデバイス内で簡単に使用することができる。フラッシュメモリ記憶装置システムを使用するデバイスとしては、デジタルカメラ、デジタルカムコーダ、デジタル音楽プレーヤー、携帯型パソコン、および全地球測位デバイスなどがある。フラッシュメモリ記憶装置システムに含まれる不揮発性メモリは繰り返し再プログラムできるため、フラッシュメモリ記憶装置システムを使用し、再利用することができる。
【0004】
一般に、フラッシュメモリ記憶装置システムは、フラッシュメモリカードおよびフラッシュメモリチップセットを備えることができる。フラッシュメモリチップセットは、一般に、フラッシュメモリコンポーネントおよびコントローラコンポーネントを備える。通常、フラッシュメモリチップセットは、組み込みシステム内に組み立てられるように構成することができる。このような組み立て品またはホストシステムのメーカーは、通常、コンポーネント形態のフラッシュメモリを他のコンポーネントとともに購入して、フラッシュメモリおよびその他のコンポーネントをホストシステム内に組み立てる。
【0005】
フラッシュメモリシステムに関連付けられているファイルシステム内で、メモリは、システムまたはディレクトリ領域およびデータ領域に効果的に分割される。システム領域は、一般に、ルートディレクトリおよびファイル・アロケーション・テーブル(FAT)を含み、データファイルは、通常、データ領域に置かれる。ファイルシステムは、システム領域に関連付けられている物理ブロックには、セクタ単位で、例えば一度に1ページずつ、データを書き込むことができるが、データ領域には、クラスタ単位、例えば、一度に複数ページずつ、データを書き込むことができる。
【0006】
論理ブロック、つまりファイルシステムに関連付けられているブロックに関連付けられている更新は、論理ブロックにマッピングされている物理ブロックに効果的に伝播される。論理ブロックにマッピングされている物理ブロックが満杯状態になるか、または他の何らかの形で、更新を受け入れることができなくなった場合、一般的に、予備の物理ブロックが取得され、論理ブロックに関連付けられている最新のデータがコピーされる、例えば、現在の物理ブロックから直接コピーされるか、またはマージされ、例えば、更新とともに実質的にコピーされ、予備の物理ブロックに移される。
【0007】
図1は、論理ブロック、論理ブロックに関連付けられている現在の物理ブロック、および現在の物理ブロックを置き換える予備の物理ブロックの図式表現である。論理ブロック200は、物理ブロック210にマッピングされる。特に、論理ブロック200内のページ202に関連付けられている内容は、物理ブロック210のページ212のデータ領域内に内容214として格納される。物理ブロック210内のページ212が満杯状態(図に示されているように)、または他の何らかの形で、論理ブロック200に関連付けられた更新を受け入れることができない場合、ページ222を含む新しいまたは予備の物理ブロック220は、例えば、一組の予備ブロックから取得できる。物理ブロック210に格納されている最新の内容214は、物理ブロック210に格納されていない、論理ブロック200に関連付けられている更新とともに、物理ブロック220が事実上論理ブロック200の最新の物理的表現となるように物理ブロック220にコピーすることができる。
【0008】
ときどき、内容214を物理ブロック210から物理ブロック220にコピーまたはマージする過程で中断が発生して、コピーまたはマージプロセスが異常終了し、その結果、不完全な状態になることがある。例えば、コピーまたはマージプロセスの完了前に物理ブロック210、220を含む不揮発性メモリデバイスへの電力供給が途絶えることがある。コピーまたはマージプロセスの完了前に停電すると、内容210に関連付けられている一部のデータが失われることがある。
【0009】
コピーまたはマージプロセスが中断した結果失われる可能性のあるデータの量を最小限に抑えるため、物理ブロック210および物理ブロック220を調査して、物理ブロック210および物理ブロック220のどれが古い物理ブロックであり、どれが新しい、未了の物理ブロックであるかを判定することができる。当業者であれば理解するように、コピーまたはマージプロセスが中断されると、物理ブロック210または物理ブロック220のどちらが最新の内容を含み、論理ブロック200に関連付けられる新しい物理ブロックであることを意図しているのかを判定することは時間がかかり、また困難な作業である。
【0010】
2つの物理ブロックのうちのどれが所定の論理ブロックに関連付けられる新しい物理ブロックとすることを意図されているかを判定しやすくするために、物理ブロックとともに使用するフラグを実装することが多い。物理ブロックとともに使用するフラグを実装する方法の1つは、参照によりその全体が本明細書に組み込まれる、米国特許第6,115,785号明細書で説明されている。フラグの使用は、コピーまたはマージプロセス実行中の物理ブロックを識別できるようにする際に役立つことがあるが、2つの物理ブロックのうちどちらが新しい物理ブロックであり、どちらが古い物理ブロックであるかを判定することは多くの場合困難である。さらに、フラグを使用するには、物理ブロックをコピーまたはマージプロセス実行中であると識別した場合に部分的書き込み処理を必要とすることが多い。
【0011】
したがって、望まれているものは、物理ブロック上で実行されるコピーまたはマージプロセスが完了前に中断された場合に効率よくデータを復元できるプロセスおよびシステムである。つまり、必要なのは、複数の物理ブロックのうちどれが、特定の論理ブロックに対応することを意図されている新しい物理ブロックであるかについての判定を効率よく行えるようにし、また論理ブロックに関連付けられている最新のデータを新しい物理ブロックに供給できるようにする方法および装置である。
【発明の開示】
【発明が解決しようとする課題】
【0012】
本発明は、論理ブロックに関連付けられている複数の物理ブロックのうちどれが、より新しく論理ブロックに関連付けられた物理ブロックであるかを判定するシステムおよび方法に関係する。本発明の一態様により、第1の物理ブロックおよび第2の物理ブロックと不揮発性メモリシステムに関連付けられている論理ブロックとの関連付けを解決(resolve)する方法は、第1の物理ブロックに関連付けられている第1の識別子を取得するステップおよび第2の物理ブロックに関連付けられている第2の識別子を取得するステップを含む。これらの識別子を比較して、前記第1の物理ブロックがより最近に論理ブロックに関連付けられたことを第1の識別子が示すかどうかを確認する。この方法は、さらに、第1の識別子が、その第1の物理ブロックがより新しく論理ブロックに関連付けられたことを示すと判定されたときに論理ブロックに関連付けられている内容を第1の物理ブロックに供給するように構成されたオペレーションを完了するステップを含む。
【課題を解決するための手段】
【0013】
一実施形態では、第1の識別子を取得するステップは、第1の物理ブロックに関連付けられているオーバーヘッド領域から第1の識別子を取得するステップを、第2の識別子を取得するステップは、第2の物理ブロックに関連付けられているオーバーヘッド領域から第2の識別子を取得するステップを含む。他の実施形態では、第1の識別子と第2の識別子とを比較して、第1の物理ブロックがより新しく論理ブロックに関連付けられていることを第1の識別子が示した場合を判別するステップは、第1の識別子が第2の識別子の値よりも高い値を持つ場合を判別するステップを含む。
【0014】
一方の物理ブロックが他方の物理ブロックにコピーされているときに、それらのブロックを含むシステムが停止されるか、または他の何らかの手段により電源が切れると、一般的には、同じ論理ブロックに対応する2つの物理ブロックが生じる。各物理ブロック内の識別子、例えば、更新インデックスを保持し、識別子同士を比較することにより、その2つの物理ブロックのうちどれが他方にコピーまたはマージ中だったのかを容易に、効率よく判定することができる。したがって、両方のブロックの内容を調査し、対応する論理ブロックに関連付けられている情報を他方のブロックの内容の少なくとも一部を受け取ることを意図されているブロックに供給できるようにコピーまたはマージオペレーションを効果的に回復することができる。したがって、システムのシャットダウンまたは停電の結果生じるデータ喪失は、事実上最小限に抑えることができる。
【0015】
本発明の他の態様により、第2の物理ブロックを論理ブロックに関連付けられている内容を含む、関連付けられている第1の物理ブロックをすでに持つ論理ブロックに関連付ける方法は、第2の物理ブロックを取得するステップ、および第2の物理ブロックに関連付けられている第2のインジケータを第1の物理ブロックに関連付けられている第1のインジケータの値と異なる値に設定するステップを含む。第2のインジケータが設定されると、第1の物理ブロックに含まれる内容の少なくとも一部を第2の物理ブロックに供給するオペレーションを開始することができる。一実施形態では、この方法は、さらに、第1のインジケータを第1の物理ブロックから取り出すステップ、および第1のインジケータの値を判別するステップも含む。
【0016】
他の実施形態では、この方法は、さらに、第2のインジケータを第2の物理ブロック内に格納するステップを含む。このような一実施形態では、第2のインジケータを第2の物理ブロックに格納するステップは、第2のインジケータを物理ブロックに関連付けられている冗長領域に格納するステップを含むことができる。
【0017】
本発明のさらに他の態様により、不揮発性メモリは、第1の物理ブロックおよび第2の物理ブロックを含む。第1の物理ブロックは、第1のビットの集合が格納される第1のオーバーヘッド領域を持つ少なくとも1つの第1のページを含む。第2の物理ブロックは、第2のビットの集合が格納される第2のオーバーヘッド領域を持つ少なくとも1つの第2のページを含む。第1の物理ブロックおよび第2の物理ブロックは、両方とも、1つの論理ブロックに関連付けられる。第1のビットの集合および第2のビットの集合は、これらを比較することで第1の物理ブロックと論理ブロックとの関連付けが第2の物理ブロックとの関連付けよりも新しいかどうかを判定するように構成される。
【0018】
本発明のこれらおよびその他の利点は、以下の詳細な説明を読み、図面のさまざまな図を調査すれば、明白になることであろう。
本発明は、付属の図面とともに以下の説明を参照することにより最もよく理解できる。
【発明を実施するための最良の形態】
【0019】
メモリシステムへの電力供給が途絶すると、一般的には、メモリシステム内に多数の問題が生じることがある。これらの問題には、これらには限らないが、一方の物理ブロックの内容を他方の物理ブロックにコピー中に停電したときに生じるデータの喪失がある。コピープロセスが中断されたときに生じるデータの喪失を防止するために、物理ブロックの内容がコピー中かどうかを示すフラグを物理ブロック内に設けることができる。しかし、フラグを使用すると、非効率になることが多いことが判明している。
【0020】
特定の1つの論理ブロックに対応する2つの物理ブロックのうちのどちらが、古い、または現在の、物理ブロックを置き換える未了の、または新しい、物理ブロックであるかに関する判定を容易に行えるようにするため、更新インデックスを物理ブロック内に実装することができる。物理ブロックに関連付けられている少なくとも1つの冗長領域内に格納できる更新インデックスは、コピーまたはマージにかかわる2つの物理ブロックのうちのどちらが古い物理ブロックであるか、およびそれら2つの物理ブロックのうちどちらが、新しい物理ブロック、または内容がコピー中であるコピー先の物理ブロックであるかを示すように構成することができる。例えば、新しい物理ブロックの更新インデックスは、その更新インデックスの値が古い物理ブロックの更新インデックスよりも高い値となるように設定することができる。したがって、どの物理ブロックが新しい物理ブロックであるかを判定するために物理ブロックの更新インデックスがチェックされる場合、高い更新インデックスを持つ物理ブロックが新しい物理ブロックであると判定することができる。
【0021】
更新インデックスの使用では、一般的に、インクリメント、つまり書き込みステップを1回だけ使用するが、それは、コピーまたはマージプロセスが実行されるときに、実質的に、新しい物理ブロックの更新インデックスのみが、インクリメントされるか、または他の何らかの方法で更新されるからである。さらに、コピーまたはマージプロセスが完了すると、通常、更新インデックスは更新されない。そのため、更新インデックスを使用すると、フラグを使用した場合に比べて費やされるオーバーヘッドが少ないのがふつうである。
【0022】
更新インデックスは、通常、部分的書き込みが実行されないことを規定する制約条件があるシステムで使用される。つまり、更新インデックスは、部分的書き込みが許されないシステム内で実装することができるということである。しかし、更新インデックスは、部分的書き込みが許されるシステムにも実装できることは理解されるであろう。
【0023】
フラッシュメモリシステム、またはより一般的に、物理ブロック内で更新インデックスを使用することで恩恵を受ける可能性のある不揮発性メモリデバイスとして、フラッシュメモリカードおよびチップセットがある。通常、フラッシュメモリシステムは、ホストシステムとともに使用され、ホストシステムはフラッシュメモリシステムとの間でデータの読み書きを行うことができる。しかし、図4について以下で説明するように、一部のフラッシュメモリシステムは、組み込みフラッシュメモリおよび組み込みフラッシュメモリ用のコントローラとして実質的に機能するホスト上で実行されるソフトウェアを備える。図2を参照しつつ、不揮発性メモリ、例えば、CompactFlash(R)メモリカードを含む一般的なホストシステムについて説明する。ホストまたはコンピュータシステム100は、一般に、マイクロプロセッサ108、ランダムアクセスメモリ(RAM)112、および入出力回路116で通信を行うためのシステムバス104を備える。ホストシステム100は、一般に、他のコンポーネント、例えば、わかりやすくするため図には示されていない、ディスプレイデバイスおよびネットワーキングデバイスを備えることができる。
【0024】
一般に、ホストシステム100は、これらには限らないが、静止画像情報、オーディオ情報、およびビデオ画像情報などの情報を取り込むことができる。このような情報は、リアルタイムで取り込むことができ、無線方式でホストシステム100に送信することができる。ホストシステム100は、実質的にどのようなシステムであってもよいが、ホストシステム100は、通常、デジタルカメラ、ビデオカメラ、移動体通信デバイス、オーディオプレーヤー、またはビデオプレーヤーなどのシステムである。ただし、一般に、ホストシステム100は、データまたは情報を格納し、データまたは情報を取り出すシステムであれば実質的にどのようなものでもよいことは理解されるであろう。
【0025】
ホストシステム100は、データを取り込むのみ、またはデータを取り出すのみのシステムであってもよい。つまり、ホストシステム100は、一実施形態では、データを格納する専用システムであるか、またはホストシステム100は、データを読み取る専用システムであってもよい。例えば、ホストシステム100は、データを書き込むまたは格納することのみを行うように構成されているメモリライターとすることができる。その代わりに、ホストシステム100は、通常はデータを読み取るか、または取り出すように構成され、データを取り込むようには構成されていないMP3プレーヤーなどのデバイスとすることもできる。
【0026】
一実施形態では、取り外し可能不揮発性メモリデバイスである不揮発性メモリデバイス120は、情報を格納するためバス104とインターフェイスするように構成される。オプションのインターフェイスブロック130により、不揮発性メモリデバイス120がバス104と間接的にインターフェイスするようにできる。当業者であれば理解するように、入出力回路ブロック116は、存在する場合、バス104上の負荷を低減するために使用される。不揮発性メモリデバイス120は、不揮発性メモリ124およびオプションのメモリ制御システム128を備える。一実施形態では、不揮発性メモリデバイス120は、単一チップまたはダイ上に実装することができる。その代わりに、不揮発性メモリデバイス120は、マルチチップモジュール、またはチップセットを形成し、不揮発性メモリデバイス120として一緒に使用することができる複数のディスクリートコンポーネント上に実装することができる。不揮発性メモリデバイス120の一実施形態については、以下で図3に関して詳述する。
【0027】
不揮発性メモリ124、例えば、NANDフラッシュメモリなどのフラッシュメモリは、必要に応じてデータにアクセスし読み取ることができるようにデータを格納する構成をとる。不揮発性メモリ124に格納されているデータは、適宜消去することもできるが、不揮発性メモリ124内の一部のデータは消去可能でない場合もあることに留意されたい。データの格納、データの読み取り、およびデータの消去のプロセスは、一般に、メモリ制御システム128により制御されるか、またはメモリ制御システム128が存在しない場合には、マイクロプロセッサ108により実行されるソフトウェアにより制御される。不揮発性メモリ124のオペレーションは、本質的に不揮発性メモリ124の複数のセクションの寿命が実質的に等しく到来するようにすることで不揮発性メモリ124の寿命が実質的に最大化されるように管理することができる。
【0028】
不揮発性メモリデバイス120は、一般的に、オプションのメモリ制御システム128、つまりコントローラを含むものとして説明されている。多くの場合、不揮発性メモリデバイス120は、不揮発性メモリ124およびメモリ制御システム128、つまりコントローラ、機能用に別々のチップを備えることができる。例えば、これらには限らないが、PCカード、CompactFlash(R)カード、MutiMediaカード、セキュアデジタルカードなどの不揮発性メモリデバイスは、別のチップ上に実装できるコントローラを備えるが、他の不揮発性メモリデバイスは、別のチップ上に実装されているコントローラを備えない場合がある。不揮発性メモリデバイス120が別のメモリおよびコントローラーチップを備えない実施形態では、当業者であれば理解するように、メモリおよびコントローラ機能を単一チップ上に集積化することができる。その代わりに、メモリ制御システム128の機能は、例えば、上述のように不揮発性メモリデバイス120がメモリコントローラ128を含まない一実施形態のように、マイクロプロセッサ108で実現することもできる。
【0029】
図3を参照しつつ、本発明の一実施形態により、不揮発性メモリデバイス120について詳述する。上述のように、不揮発性メモリデバイス120は、不揮発性メモリ124を備え、またメモリ制御システム128を備えることもできる。メモリ124および制御システム128、つまりコントローラは、不揮発性メモリデバイス120の一次コンポーネントとすることができるが、例えば、メモリ124が組み込みNANDデバイスの場合、不揮発性メモリデバイス120は制御システム128を備えなくてよい。メモリ124は、半導体基板上に形成されたメモリセルのアレイとすることができ、その場合、メモリセルの個々の記憶素子に電荷の2つ以上のレベルのうちの1つを格納することによりデータの1つまたは複数のビットが個々のメモリセル内に格納される。不揮発性フラッシュ電気的消去可能プログラム可能読み取り専用メモリ(EEPROM)は、そのようなシステム用のよくあるタイプのメモリの一例である。
【0030】
制御システム128は、存在する場合、バス15を介してホストコンピュータ、またはメモリシステムを使用してデータを格納するその他のシステムと通信する。バス15は、一般に、図2のバス104の一部である。制御システム128は、さらに、メモリセルアレイ11を含むことができるメモリ124のオペレーションを制御して、ホストにより供給されるデータの書き込み、ホストにより要求されたデータの読み出し、および稼働中のメモリ124のさまざまなハウスキーピング機能の実行を行うことができる。制御システム128は、一般に、関連する不揮発性ソフトウェアメモリ、さまざまな論理回路などを備える汎用マイクロプロセッサを備える。特定のルーチンの実行を制御するため1つまたは複数の状態機械も備えられることも多い。
【0031】
メモリセルアレイ11は、通常、アドレスデコーダ17を介して制御システム128またはマイクロプロセッサ108によりアドレス指定される。デコーダ17は、正しい電圧をアレイ11のゲートおよびビットラインに印加し、制御システム128によりアドレス指定されるメモリセルのグループへのデータのプログラミング、そのグループからのデータの読み出し、またはそのグループの消去を行う。追加回路19は、セルのアドレス指定されたグループ内にプログラミングされるデータに依存するアレイの複数の素子に印加される電圧を制御するプログラミングドライバを備える。回路19は、さらに、センス・アンプおよびメモリセルのアドレス指定されたグループからデータを読み出すために必要なその他の回路も含む。アレイ11内にプログラミングされるデータ、またはアレイ11から最近読み出されたデータは、通常、制御システム128内のバッファメモリに格納される。制御システム128は、通常、コマンドおよびステータスデータなどを一時的に格納するためのさまざまなレジスタも備える。
【0032】
アレイ11は、多数のBLOCKS0−Nメモリセルに分割される。フラッシュEEPROMシステムではふつうのことであるが、ブロックは、通常、最小の消去単位である。つまり、各ブロックは、一緒に消去される最小数のメモリセルを含むということである。各ブロックは、通常、多数のページに分割される。当業者であれば理解しているように、ページは最小のプログラミング単位であってよい。つまり、基本プログラミングオペレーションでは、最低限1ページ分のメモリセルに対しデータの読み書きを行うのである。通常、データの1つまたは複数のセクタが各ページ内に格納される。図3に示されているように、1つのセクタにユーザデータおよびオーバーヘッドデータが含まれる。オーバーヘッドデータは、通常、セクタのユーザデータから計算して求められた誤り訂正符号(ECC)を含む。制御システム128の一部23では、データがアレイ11内にプログラミングされるときにこのECCを計算し、データがアレイ11から読み出されるときにこのECCをチェックする。その代わりに、ECCは、関係するユーザデータとは異なるページ、つまり異なるブロックに格納され得る。
【0033】
ユーザデータの1セクタは、通常、512バイトであり、これは、磁気ディスクドライブ内の1セクタのサイズに対応する。オーバーヘッドデータ、つまり冗長データは、通常、16バイトの追加分である。各ページには、1セクタ分のデータが含まれるのが最もふつうであるが、そうではなく2つ以上のセクタが1ページを形成することもある。一般に多数のページが集まって1つのブロックを形成する。例えば、8ページから、512、1024、またはそれ以上のページで1ブロックを形成することができる。ブロックの数は、メモリシステムの所望のデータ記憶容量が得られるように選択される。アレイ11は、通常、それぞれ複数のブロックのうちの一定割合のブロックを含む少数のサブアレイ(図に示されていない)に分割され、これらはさまざまなメモリオペレーションの実行に際して並列処理の度合いを高めるために互いにいくぶん独立して動作する。複数のサブアレイの使用例については、参照によりその全体が本明細書に組み込まれる、米国特許第5,890,192号明細書で説明されている。
【0034】
一実施形態では、不揮発性メモリは、システム、例えば、ホストシステムに組み込まれる。図4は、組み込み不揮発性メモリを含むホストシステムを表現する図である。ホストまたはコンピュータシステム150は、一般に、ホストシステム150の他のコンポーネント(図に示されていない)との間で、マイクロプロセッサ158、RAM 162、および入出力回路166が通信を行うためのシステムバス154を備える。不揮発性メモリ174、例えば、フラッシュメモリを使用することにより、ホストシステム150内に情報を格納することができる。不揮発性メモリ174とバス154との間にインターフェイス180が設けられ、これにより不揮発性メモリ174との間で情報を読み書きできる。
【0035】
不揮発性メモリ174は、不揮発性メモリ174を制御するように構成されているソフトウェアおよびファームウェアのいずれかまたは両方を効果的に実行するマイクロプロセッサ158により管理することができる。つまり、マイクロプロセッサ158は、コードデバイス(図に示されていない)、つまり、ソフトウェアコードデバイスまたはファームウェアコードデバイスを実行することができ、これにより、不揮発性メモリ174を制御することができる。後述の、マイクロプロセッサ158内のCPUとともにパッケージされているフラッシュメモリ、独立のフラッシュROM、または内部不揮発性メモリ174であってよい、このようなコードデバイスを使用することにより、不揮発性メモリ174内の物理ブロックをアドレス指定することができ、情報を物理ブロックに書き込む、物理ブロックから読み出す、または消去することができる。
【0036】
一般に、ユーザがデータを書き込む場合、実際にはファイルシステムを使用してデータを書き込む。ファイルシステムでは、データを、記憶媒体に関連付けられている物理ブロックにマッピングされている1つの論理ブロックまたは、より具体的には、1つの論理ブロックの数ページに関連付ける。図5は、本発明の一実施形態による論理ブロックを有するファイルシステムおよび物理ブロックを有する媒体を表現する図である。ファイルシステム514の論理ブロック510は任意の数のページ518を含む。1つの論理ブロック、例えば、論理ブロック510aに含まれるページ518の数は、消去単位のサイズに依存する。例えば、図に示されているように、最小の消去単位に約32ページが含まれる場合、約32ページを論理ブロック510aに含めることができる。
【0037】
媒体534、例えば、組み込みフラッシュメモリの物理ブロック530は、多数のページ538を含む。当業者であれば理解するように、物理ブロック530に含まれるページ538の数は、通常、論理ブロック510に含まれるページ518の数と同じである。しかし、論理ブロック510に含まれるページ518の数は、物理ブロック530に含まれるページ538の数と必ずしも同じである必要はない。
【0038】
図6は、本発明の一実施形態による更新インデックスを持つ複数の物理ブロックに関連付けられている論理ブロックを表現する図である。1つの論理ブロック550は、「現在」または「古い」物理ブロックと呼ぶことができる1つの物理ブロック560にマッピングされる。特に、論理ブロック550内の複数のページ552に関連付けられている内容は、物理ブロック560のページ562のデータ領域568内に内容564として格納される。物理ブロック560内のページ562が満杯状態(図に示されているように)であるか、または物理ブロック560が他の何らかの形で、論理ブロック550に関連付けられた更新を受け入れることができない場合、ページ572を含む新しいまたは予備の物理ブロック570は、例えば、不揮発性メモリシステム全体の中に保持される一組の予備ブロックから取得できる。ほとんどの場合、物理ブロック560に格納されない論理ブロック550に関連付けられている更新とともに、物理ブロック560内に格納されている少なくとも一部の内容564は、コピーオペレーションまたはマージオペレーションを使用することで、物理ブロック570に供給することができる。特に、論理ブロック550に関連付けられている更新により実際に侵害されない内容564を、それらの更新とともに物理ブロック570に供給することができる。一実施形態では、実質的にすべての内容564が論理ブロック550に関連付けられる更新により実際に侵害される場合、物理ブロック570内に格納される内容564は本質的にない。当業者であれば理解するように、物理ブロック560に含まれていない新しいデータが物理ブロック570に供給されない場合にコピーオペレーションが適当であり、物理ブロック560に含まれていない新しいまたは更新されたデータが物理ブロック570に含まれるべき場合はマージオペレーションが適当である。
【0039】
物理ブロック560内のそれぞれのページ562は、冗長またはオーバーヘッド領域566を含む。同様に、物理ブロック570内のそれぞれのページ572も、冗長またはオーバーヘッド領域576を含む。説明されている実施形態では、物理ブロック560の第1のページ562aに関連付けられている冗長領域566aは、更新インデックス568を形成するビットの集合を含む。しかし、物理ブロック560の任意の数の冗長領域566が更新インデックスを含むことができ、例えば、冗長領域566bは更新インデックス568と同じ値を持つ更新インデックス588を含むことができることは理解されるであろう。
【0040】
例えば、物理ブロック570に関連付けられている少なくとも1つの冗長領域576内のビット集合を識別することにより、物理ブロック570に論理ブロック550が関連付けられるまで、物理ブロック570は、一般的には空である。しかし、物理ブロック570が論理ブロック550に関連付けられると、更新インデックス578は、物理ブロック570の第1のページ572aに対応する冗長領域576aに格納される。追加更新インデックス、例えば、冗長領域576bに格納され、更新インデックス578と同じ値を持つ更新インデックス598は、物理ブロック570に格納できることは理解されるであろう。
【0041】
更新インデックス578は、一般に、更新インデックス568と比較したときに、物理ブロック570を物理ブロック560により新しく関連付けられているものとして識別する値を持つように設定される。更新インデックス578および更新インデックス568を使用すると、物理ブロック560、570を含むシステム全体に停電が発生した後、物理ブロック560の少なくとも一部の内容564が物理ブロック570に供給中であるかどうかに関する判定を行える。図に示されているように、物理ブロック560の一部の内容564a、564bは、内容564a’、564b’としてそれぞれ、物理ブロック570に供給されているが、供給されることを意図されている他の内容、例えば内容564dはまだ供給されていない。さらに、論理ブロック550に関連付けられている更新は、適宜、例えば、内容574が内容564cを置き換えることが意図されている場合に、物理ブロック570内に内容574として格納することができる。
【0042】
停電後、両方の物理ブロック560、570が論理ブロック550に関連付けられている場合、物理ブロック560の一部の内容564を物理ブロック570に供給するオペレーションが正常に完了していないという指示が発生しうる。説明されている実施形態では、更新インデックス578が、更新インデックス568の値よりも新しい、例えば、大きいと理解される値を持つ場合、物理ブロック570に供給される物理ブロック560の任意の内容564が物理ブロック570に正常に供給されていない可能性があることが示される。
【0043】
論理ブロック550に関連付けられている新しい、または改訂された内容などの更新が事実上すべて、物理ブロック560の内容564を侵害している場合、内容564はいずれも、物理ブロック570内に格納されなかったかもしれない。その結果、物理ブロック560、570を、例えば、停電後の電源投入時に解決する場合、内容564は事実上どれも、物理ブロック570内にはマージされるべきでないと判定できる。
【0044】
一般に、物理ブロック560、570間の更新、コピー、またはマージプロセスが中断された結果失われる可能性のあるデータの量を実質的に最小限に抑えるため、物理ブロック560の更新インデックス568および物理ブロック570の更新インデックス578を調査して、物理ブロック570を新しい物理ブロックとして識別することができる。このように、更新インデックス578は、通常、物理ブロック570が取得された場合、例えば、物理ブロック560に関して更新、コピー、またはマージプロセスが実行された場合に、物理ブロック570に格納される。
【0045】
図7を参照しつつ、一方の物理ブロックの内容を他方の物理ブロックに更新、コピー、またはマージする一方法に関連付けられているステップについて、本発明の一実施形態により説明される。ブロックをコピーまたはマージするプロセス600は、新しいまたは予備の物理ブロックが取得されるステップ602から始まる。特に、予備の物理ブロックは、論理ブロックに関連付けられる、または他の何らかの手段により、対応する新しい物理ブロックとして取得される。新しいまたは予備のブロックが取得された後、「古い」物理ブロック、または新しい物理ブロックが関連付けられる論理ブロックに現在関連付けられている物理ブロックの更新インデックスは、ステップ604で取り出される。説明されている実施形態では、更新インデックスは、複数のビットとして、例えば4ビットとして、物理ブロックに関連付けられている冗長領域内に格納される。したがって、古い物理ブロックの更新インデックスの取得は、通常、古い物理ブロックに関連付けられている冗長領域またはオーバーヘッド領域から更新インデックスを取得するステップを含む。物理ブロックの更新インデックスを、物理ブロックの実質的にただ1つのページ、例えば、第1のページの冗長領域に格納するか、または更新インデックスを、物理ブロック内の実質的にすべてのページの冗長領域内に格納することができることは理解されるであろう。
【0046】
古い物理ブロックの更新インデックスが取り出された後、ステップ606で、古い物理ブロックの更新インデックスが可能な最も高い更新インデックス値に実質的に等しいかどうかに関する判定が行われる。更新インデックスが4つのビットを含む一実施形態では、可能な最も高い更新インデックス値を15とすることができるが、可能な最も高い更新インデックス値はさまざまな値にできる。古い物理ブロックの更新インデックスが可能な最も高い更新インデックス値に実質的に等しくないと判定される場合、プロセスの流れはステップ606からステップ608に移り、そこで、新しい物理ブロックの更新インデックスが古い物理ブロックの更新インデックスよりも高い値に設定される。通常、新しい物理ブロックの更新インデックスを古い物理ブロックの更新インデックスよりも高い値に設定するには、新しい物理ブロックの更新インデックスを古い物理ブロックの更新インデックスよりも1つ高い値に設定する必要がある。新しい物理ブロックの更新インデックスを設定するステップは、一般に、更新インデックスを新しい物理ブロックに関連付けられている冗長領域に格納するステップも含むことは理解されるであろう。一般に、新しい物理ブロックの更新インデックスが古い物理ブロックの更新インデックスよりも高い値に設定されるときを判別するのではなく、その代わりに、新しい物理ブロックの更新インデックスが古い物理ブロックの更新インデックスよりも新しい値に設定されるときを判別することができる。
【0047】
新しい物理ブロックの更新インデックスが設定された後、更新、コピー、またはマージプロセスが、ステップ610で、適宜起動され、それぞれ、新しいユーザデータ集合および/または古い物理ブロックから新しい物理ブロックへのデータの更新、コピー、またはマージを実行する。その後、ステップ612で、更新、コピー、またはマージプロセスが正常に完了したかどうかが判定される。このような判定は、新しい物理ブロック内ですべての現在の論理ページが占有されているかどうかに基づくことができる。コピーまたはマージプロセスが正常に完了したと判断された場合、古い物理ブロックに対応する論理ブロックに関連付けられている最新のデータが新しい物理ブロック内に入ったことが示される。したがって、新しい物理ブロックが、論理ブロックに対応する物理ブロックになり、古い物理ブロックの内容はステップ614で消去される。古い物理ブロックの内容が消去された後、ブロックの更新、コピー、またはマージのプロセスは完了する。
【0048】
その代わりに、更新、コピー、またはデータを新しい物理ブロックにマージするマージプロセスが正常に完了していないとステップ612で判定される場合、更新、コピー、またはマージプロセスが、例えば、古い物理ブロックおよび新しい物理ブロックを含む不揮発性メモリデバイスへの電力が途絶えることで中断されたことを意味する。その結果、古い物理ブロックおよび新しい物理ブロックは、両方とも、同じ論理ブロックに対応することがある。例えば、古い物理ブロックおよび新しい物理ブロックが、両方とも、同じ論理ブロックを識別する1つのビットまたは複数のビットを冗長領域内に含むことがある。説明されている実施形態では、論理ブロックが2つの対応する物理ブロックを持つと判断された場合、その2つの対応する物理ブロックは、次回の電源投入プロセスステップ616で事実上解決することができる。つまり、古い物理ブロックおよび新しい物理ブロックの内容は、古い物理ブロックおよび新しい物理ブロックが対応する論理ブロックに関連付けられている一番最近の内容をコピーまたはマージして、最新の内容が新しい物理ブロック内に置かれるようにできる。古い物理ブロックおよび新しい物理ブロックを解決する方法の1つについて、図8を参照しつつ以下で説明する。古い物理ブロックおよび新しい物理ブロックが解決された後、ブロックの更新、コピー、またはマージのプロセスは完了する。
【0049】
ステップ606に戻って、古い物理ブロックの更新インデックスが可能な最も高い更新インデックス値に実質的に等しいと判定された場合、新しい物理ブロックの更新インデックスは、ステップ618で、値0に設定することができる。古い物理ブロックの更新インデックスが可能な最も高い更新インデックス値に実質的に等しく、新しい物理ブロックの更新インデックスが0に設定された場合、新しい物理ブロックは古い物理ブロックよりも新しいことが示される。新しい物理ブロックの更新インデックスが設定された後、プロセスの流れがステップ610に向かい、古い物理ブロックから新しい物理ブロックへのデータのコピーまたはマージが起動される。
【0050】
図8は、本発明の一実施形態による、古いブロックおよび新しいブロックを解決することに関連するステップ、例えば、図7のステップ616を例示するプロセス流れ図である。同じ論理ブロックに対応する2つの物理ブロックを解決するプロセス616は、ステップ640から始まり、その論理ブロックに対応するデータを含む第1の物理ブロックが取得される。第1の物理ブロックは、古い物理ブロックまたは新しい物理ブロックのいずれかとすることができることは理解されるであろう。第1の物理ブロックが取得された後、論理ブロックに対応するデータを含む第2の物理ブロックがステップ642で取得される。
【0051】
ステップ644で、第1の物理ブロックの更新インデックス、つまり、第1の更新インデックスが取り出される。更新インデックスは、一般に、第1の物理ブロックに関連付けられている冗長領域のうちの少なくとも1つに格納される。通常、更新インデックスは、第1の物理ブロックの第1ページの冗長領域から取り出される。第2の物理ブロックの更新インデックス、つまり、第2の更新インデックスは、ステップ646で取り出されるか、または他の何らかの手段により取得される。
【0052】
第1の更新インデックスおよび第2の更新インデックスが取得された後、第1の更新インデックスおよび第2の更新インデックスを比較することができる。したがって、ステップ648で、第1の更新インデックスの値が第2の更新インデックスの値よりも大きいかどうかについての判定が行われる。第1の更新インデックスが値0を持つ場合でも、第2の更新インデックスが更新されたインデックスの最大値である値を持つ場合には第1の更新インデックスは第2の更新インデックスよりも大きく、またその逆も成立することは理解されるであろう。第1の更新インデックスが第2の更新インデックスよりも大きくないと判定された場合、第2の物理ブロックが新しい物理ブロックであることが示される。つまり、コピーまたはマージプロセスが中断されたときに第1の物理ブロックの内容は第2の物理ブロック内に更新、コピー、またはマージ中だったことを意味する。したがって、プロセスの流れはステップ648からステップ650に進み、コピーまたはマージプロセスは、適宜完了し、第1の物理ブロックに関連付けられている内容を第2の物理ブロック内に更新、コピー、またはマージする作業を完了する。更新、コピー、またはマージプロセスの完了は、第1の物理ブロックに内容があるが、第2の物理ブロック内には内容がないページを識別するステップおよびそのような内容を第2の物理ブロックに供給するステップを含むことができる。
【0053】
内容を第2の物理ブロックにコピーまたはマージする作業が完了した後、ステップ652で第1の物理ブロックが消去される。第1の物理ブロックを消去するステップは、一般に、第1の物理ブロックの更新されたインデックスを消去するステップだけでなく、第1の物理ブロックと現在第2の物理ブロックに関連付けられている論理ブロックとの関連付けを実質的に解除するステップをも含む。ブロックを解決するプロセスは、第1の物理ブロックが消去された後、完了する。
【0054】
ステップ648に戻って、第1の更新インデックスが第2の更新インデックスよりも大きいと判定された場合、第1の物理ブロックが新しい物理ブロックであり、第2の物理ブロックは古い物理ブロックであることが示される。したがって、ステップ654で、まだ完了していない更新、コピー、またはマージプロセスは、完了され、第2の物理ブロックの内容を第1の物理ブロックに、適宜、コピーまたはマージする。第1の物理ブロックに、第1の物理ブロックが関連付けられている論理ブロック、例えば、第1の物理ブロックの少なくとも1つの冗長領域内で識別された論理ブロックに関連付けられている最新の、または現在の内容が入ると、第2の物理ブロックはステップ656で消去され、ブロックを解決するプロセスは完了する。
【0055】
一般に、更新インデックスを維持し、更新インデックスを使用することによりブロックを解決するステップに関連する機能は、ソフトウェアで、例えば、プログラムコードデバイスとして、またはファームウェアとして、ホストシステムに供給される。劣化の平準化を実行できるように、ホストシステムに供給されるソフトウェアまたはファームウェアに関連する適当なシステムアーキテクチャの一実施形態が図9に示されている。システムアーキテクチャ700は、これらに限らないが一般に、アプリケーションインターフェイスモジュール704、システムマネージャモジュール708、データマネージャモジュール712、データ完全性マネージャ716、ならびにデバイスマネージャおよびインターフェイスモジュール720などさまざまなモジュールを含む。一般に、システムアーキテクチャ700は、プロセッサ、例えば、図2のプロセッサ108によりアクセス可能なソフトウェアコードデバイスまたはファームウェアを使用して実装することができる。
【0056】
一般に、アプリケーションインターフェイスモジュール704は、ホスト、オペレーティングシステム、またはユーザと直接通信するように構成できる。アプリケーションインターフェイスモジュール704は、さらに、システムマネージャモジュール708およびデータマネージャモジュール712とも通信する。ユーザは、フラッシュメモリの読み書き、またはフォーマットを行いたい場合、オペレーティングシステムに要求を送ると、それらの要求はアプリケーションインターフェイスモジュール704に渡される。アプリケーションインターフェイスモジュール704は、要求に応じてシステムマネージャモジュール708またはデータマネージャモジュール712に要求を振り分ける。
【0057】
システムマネージャモジュール708は、システム初期化サブモジュール724、消去カウントブロックマネジメントサブモジュール726、およびパワーマネジメントブロックサブモジュール730を備える。システム初期化サブモジュール724は、一般に、初期化要求を処理できるように構成され、通常、消去カウントブロックマネジメントサブモジュール726と通信する。消去カウントブロックマネジメントサブモジュール726は、ブロックの消去カウントを格納する機能および個々の消去カウントを使用して平均消去カウントを計算するだけでなく更新する機能を備える。消去カウントの使用については、参照によりその全体が本明細書に組み込まれている、2002年10月28日に出願した同時係属米国特許出願第10/281,739号明細書(整理番号SANDP023)で説明されている。システム初期化モジュール724は、さらに、1対多の論理−物理ブロック割り当てを解決するように構成され、したがって、更新インデックスを利用することができる。
【0058】
アプリケーションインターフェイスモジュール704と通信するほかに、システムマネージャモジュール708は、さらに、データマネージャモジュール712ならびにデバイスマネージャおよびインターフェイスモジュール720とも通信する。システムマネージャモジュール708およびアプリケーションインターフェイスモジュール704の両方と通信する、データマネージャモジュール712は、論理セクタを物理セクタに効果的に変換するセクタマッピングを実行する機能を備えることができる。つまり、データマネージャモジュール712は、複数の論理ブロックを複数の物理ブロックにマッピングするように構成されている。データマネージャモジュール712は、オペレーティングシステムおよびファイルシステムインターフェイス層に関連付けられている機能も備えることができ、これにより、参照により全体が本明細書に組み込まれている、2002年10月28日に出願した同時係属米国特許出願第10/281,855号明細書(整理番号SANDP029)で説明されているように、ブロック内のグループを管理することができる。
【0059】
システムマネージャモジュール708、データマネージャ712、およびデータ完全性マネージャ716と通信する、デバイスマネージャおよびインターフェイスモジュール720は、通常、フラッシュメモリインターフェイスを備え、ハードウェア抽象化に関連する機能、例えば、I/Oインターフェイスを含む。データ完全性マネージャモジュール716は、他の機能のうちでもとりわけECC処理を行う。
【0060】
本発明のごく少数の実施形態しか説明されていないが、本発明は、本発明の精神または範囲を逸脱することなく、他の多くの特有の形態で実現することはできることは理解されるであろう。例えば、論理ブロック内の論理グループおよび物理ブロック内の対応する物理グループは、実質的に同じサイズであるとして説明されているが、論理グループおよび物理グループは、一般に、異なるサイズであってよい。つまり、論理グループ内に含まれるページの数およびその論理グループに対応する物理グループに含まれるページの数は、必ずしも同じでなくてもよい。
【0061】
更新インデックスは4ビットを含むものとして説明されているが、更新インデックスは、一般に、ビットをいくつでもとることができることは理解されるであろう。例えば、更新インデックスは4ビットよりも少ないビット数を含むか、または更新インデックスは5ビット以上、例えば最大1バイト以上を含むことができる。ビット数は、システム要件全体およびシステム全体の中の物理ブロックの冗長領域内で利用可能なビット数など、これらに限定されないさまざまな理由に基づいて選択することができる。
【0062】
一般に、物理ブロックの更新インデックス間の実質的などのような差も、複数の物理ブロックのうちのどれが未了ブロックであるか、または現在のデータを更新、コピー、またはマージするブロックであるかを判定するために使用することができる。より高い更新インデックスを持つ物理ブロックは、より新しい、例えば、未了ブロックとして説明されているが、更新インデックスの低い物理ブロックは、その代わりに、例えば、予備の物理ブロックの更新インデックスが予備の物理ブロックの取得時に現在の物理ブロックの更新インデックスよりも小さい値に設定される場合に、より新しいブロックとすることができる。同様に、更新インデックス内の複数のビットを回転するか、または他の何らかの手段によりシフトし、どの更新インデックスがより新しいブロックに関連付けられているかを判別するために使用できる更新インデックスの異なる「値」を出すことができる。
【0063】
更新インデックスを使用して複数の物理ブロックのうちのどれが新しい、または予備の物理ブロックであるか、複数の物理ブロックのうちのどれが古い物理ブロックであるかを判定した後、コピーまたはマージオペレーションを実際に再起動し、情報を予備の物理ブロック内に供給する、例えば、更新、コピー、またはマージを行うプロセスを完了することができる。一実施形態では、更新、コピー、またはマージオペレーションを再起動する前に、予備の物理ブロックの内容を消去し、予備の物理ブロックの更新インデックスを、古い物理ブロックの更新インデックスの値よりもより新しい、例えば、大きい値にリセットすることができ、しかも、本発明の精神または範囲を逸脱することはない。予備の物理ブロックを消去するステップがあれば、時間はかかるが、古い物理ブロックのどの内容がすでに予備の物理ブロックに送られているのか、また古い物理ブロックのどの内容が予備の物理ブロックにまだ送られていないのかを判別する必要があまりなくなる。
【0064】
本発明のさまざまな方法に関連するステップは、さまざまな形で変更することができる。一般に、複数のステップの追加、削除、順序変更、および改変を行うことができる。例えば、物理ブロックが取得された実質的直後に、物理ブロックを解決するプロセスの実行中に、更新インデックスを物理ブロックから取り出すことができる。
【0065】
一実施形態では、古い物理ブロックは、コピーまたはマージプロセスの完了後、実質的に常に消去されるため、古い物理ブロックおよび対応する新しい物理ブロックを含むシステムへの電力が途絶えると、古い物理ブロックおよび新しい物理ブロックは、一般に、単一の論理ブロックに関連付けられたままになる。したがって、コピーまたはマージプロセスが正常に完了したかどうかを判定するステップは、本発明の精神または範囲を逸脱することなく、単一の論理ブロックに関連付けられている2つの物理ブロックがまだあるかどうかを判定するステップを含むことができることは理解されるであろう。したがって、本発明の実施例は、説明を目的としており、制限することを目的としていないと考えられ、本発明は、本明細書に述べた詳細に限定されず、付属の請求項の範囲内で修正することができる。
【図面の簡単な説明】
【0066】
【図1】論理ブロック、論理ブロックに関連付けられている現在の物理ブロック、および現在の物理ブロックを置き換える予備の物理ブロックを表現する図である。
【図2】不揮発性メモリを含む一般的なホストシステムを表現する図である。
【図3】メモリデバイス、例えば、図2のメモリデバイス120を表現する図である。
【図4】組み込みの不揮発性メモリを含むホストシステムを表現する図である。
【図5】本発明の一実施形態による論理ブロックを有するファイルシステムおよび物理ブロックを有する媒体を表現する図である。
【図6】本発明の一実施形態による更新インデックスを持つ複数の物理ブロックに関連付けられている論理ブロックを表現する図である。
【図7】本発明の一実施形態による更新プロセス、コピープロセス、またはマージプロセスを起動することに関連するステップを例示するプロセス流れ図である。
【図8】本発明の一実施形態による、古いブロックおよび新しいブロックを解決することに関連するステップ、例えば、図7のステップ616を例示するプロセス流れ図である。
【図9】本発明の一実施形態によるシステムアーキテクチャを表現するブロック図である。

【特許請求の範囲】
【請求項1】
複数の物理ブロックを有するNANDフラッシュメモリアレイを含む不揮発性メモリシステムの操作方法であって、各物理ブロックが複数のページに構成された複数のメモリセルを含み、各メモリセルは1ビット以上のデータを記憶可能であり、そのため前記物理ブロック内のページの部分書き込みが許されないものにおいて、前記方法が、
前記フラッシュメモリアレイ内の第1の物理ブロックを論理ブロックと関連付けるステップと、
前記論理ブロックに関連付けられたデータと、第1の更新インデックス値を、前記第1の物理ブロック内の少なくとも1ページに書き込むステップと、
次に第2の物理ブロックを前記論理ブロックと関連付けるステップと、
前記論理ブロックに関連付けられたデータと、第2の更新インデックス値を、前記第2の物理ブロック内の少なくとも1ページに書き込むステップであって、前記第2の更新インデックス値は前記第2の物理ブロックが前記第1の物理ブロックより新しく前記論理ブロックと関連付けられたものであることを表すものであるステップと、
を含む方法。
【請求項2】
前記第1の更新インデックス値を前記第1の物理ブロックから取得するステップと、
前記第2の更新インデックス値を前記第2の物理ブロックから取得するステップと、
前記第1と第2の更新インデックス値のどちらがそれらの物理ブロックがより新しく前記論理ブロックと関連付けられたかを表しているかを決定するために、前記第1の更新インデックス値と前記第2の更新インデックス値とを比較するステップと、
前記比較するステップが、前記第2の更新インデックス値が前記第2物理ブロックが前記第1の物理ブロックより新しく前記論理ブロックと関連付けられたことを表していると決定したことに応答して、前記論理ブロックに関連付けられた残りのデータを前記第2の物理ブロックに書き込むステップと、
を更に含む請求項1に記載の方法。
【請求項3】
前記第1の更新インデックス値を取得するステップが、前記第1の物理ブロックに関連付けられているオーバーヘッド領域から前記第1のインデックス値を取得するステップを含み、
前記第2の更新インデックス値を取得するステップが、前記第2の物理ブロックに関連付けられているオーバーヘッド領域から前記第2のインデックス値を取得するステップを含む、
請求項2に記載の方法。
【請求項4】
前記データと第2の更新インデックス値を前記第2の物理ブロックに書き込むステップが、
データを前記第1の物理ブロックから検索するステップと、
検索されたデータを前記第2の物理ブロックに書き込むステップと、
前記第2の更新インデックス値を前記検索されたデータが書き込まれた少なくとも1ページに書き込むステップと、
を含む請求項2に記載の方法。
【請求項5】
前記第1の物理ブロック内が前記論理ブロックと関連付けられていることを識別するステップと、
前記第2の物理ブロック内が前記論理ブロックと関連付けられていることを識別するステップと、
を更に含む請求項2に記載の方法。
【請求項6】
前記書き込みステップの後に前記第1の物理ブロックを消去するステップであって、該消去ステップが第1の更新インデックス値の消去を含むステップ、
を更に含む請求項2に記載の方法。
【請求項7】
前記第2の更新インデックス値が更に、前記第2の物理ブロックの複数のページが、実質的に全て前記第1の物理ブロックの複数のページより新しく前記論理ブロックに関連付けられたことを表示するように構成されている、
請求項2に記載の方法。
【請求項8】
前記第1の更新インデックスが1バイトより短い長さを有し、
前記第2の更新インデックスが1バイトより短い長さを有する、
請求項1に記載の方法。
【請求項9】
データと前記第2の更新インデックス値を書き込むステップ以前に、
前記第1の更新インデックス値を前記第1の物理ブロックから検索するステップと、
前記第2の更新インデックス値が前記第1の更新インデックス値と関連することを決定するステップと、
を更に含む請求項1に記載の方法。
【請求項10】
前記第1の更新インデックス値が、前記第1の物理ブロックの冗長領域へ書き込まれかつそこから検索される、
請求項9に記載の方法。
【請求項11】
データと前記第1の更新インデックス値を前記第1の物理ブロックに書き込むステップ以前に、前記論理ブロックに関連付けられたデータを受け取るステップ、
を更に含む請求項1に記載の方法。
【請求項12】
前記第2の更新インデックス値を書き込むステップが、前記第2の物理ブロックの冗長領域に書き込むステップを含む、
請求項11に記載の方法。
【請求項13】
前記第2の更新インデックス値が、前記冗長領域内の1バイトまでを使用する、
請求項12に記載の方法。
【請求項14】
前記データと第2の更新インデックス値を前記第2の物理ブロックに書き込むステップが、
データを前記第1の物理ブロックから検索するステップと、
検索されたデータを前記第2の物理ブロックに書き込むステップと、
前記第2の更新インデックス値を前記検索されたデータが書き込まれた少なくとも1ページに書き込むステップと、
を含む請求項1に記載の方法。
【請求項15】
前記論理ブロックに関連付けられた新しいデータを受け取るステップであって、該受け取られたデータの少なくとも幾つかが前記第1の物理ブロックに以前に書き込まれたページに対応するがそれらのページの内容とは異なるものと、
前記受け取られたデータを前記第2の物理ブロックに書き込むステップと、
を更に含む請求項1に記載の方法。
【請求項16】
不揮発性メモリシステムであって、
NAND構成の複数のメモリセルを含む不揮発性メモリであって、前記複数のメモリセルは複数の物理ブロックの各々における複数のページに構成されており、各メモリセルはデータの1ビット以上を記憶可能であり、そのため部分書き込みが許されないものと、
物理ブロックを論理ブロックと関連付ける手段と、
論理ブロックからの情報と更新インデックス値とを前記論理ブロックに関連付けられた物理ブロックの少なくとも1ページに書き込む手段と、
を含み、前記書き込む手段が、
第1の更新インデックス値を前記論理ブロックに関連付けられた第1の物理ブロック内の少なくとも1ページに書き込み、第1の物理ブロックが前記論理ブロックに関連付けられた後に第2の更新インデックス値を前記論理ブロックに関連付けられた第2の物理ブロック内の少なくとも1ページに書き込み、そのため前記第2の物理ブロックに関連付けられた前記第2の更新インデックス値が、前記第2の物理ブロックが前記第1の物理ブロックより新しく前記論理ブロックに関連付けられたことを表す、
不揮発性メモリシステム。
【請求項17】
前記第2の物理ブロックを前記論理ブロックと関連付けるコード装置と、
それぞれ前記第1及び第2の物理ブロックに関連付けられた前記第1及び第2の更新インデックス値を書き込み、そのため前記第2の物理ブロックに関連付けられた前記第2の更新インデックス値が、前記第2の物理ブロックが前記第1の物理ブロックより新しく前記論理ブロックに関連付けられたことを表す、コード装置と、
前記論理ブロックに関連付けられた情報を前記第2の物理ブロックに書き込むコード装置と、
を記憶するためのメモリ領域と、
前記コード装置を動作させるためのプロセッサと、
を更に含む請求項16記載の不揮発性メモリシステム。
【請求項18】
どちらの物理ブロックがより新しく前記論理ブロックと関連付けられたかを決定するために、前記第1の更新インデックス値と前記第2の更新インデックス値とを比較するコード装置を更に含み、
前記論理ブロックに関連付けられた書き込み情報を前記第2の物理ブロックに書き込むコード装置が、前記比較するコード装置の前記第2の物理ブロックがより新しく前記論理ブロックに関連付けられたことの決定に応答する、
請求項17記載の不揮発性メモリシステム。
【請求項19】
前記第1の更新インデックス値が、前記第1の物理ブロックに関連付けられているオーバーヘッド領域に記憶され、
前記第2の更新インデックス値が、前記第2の物理ブロックに関連付けられているオーバーヘッド領域に記憶されている、
請求項18に記載の不揮発性メモリシステム。
【請求項20】
どちらの物理ブロックがより新しく前記論理ブロックと関連付けられたかを決定するために、前記第1の更新インデックス値と前記第2の更新インデックス値とを比較する手段を更に含み、
前記論理ブロックに関連付けられた書き込み情報を前記第2の物理ブロックに書き込む手段が、前記比較する手段の前記第2の物理ブロックが前記第1の物理ブロックより新しく前記論理ブロックに関連付けられたことの決定に応答する、
請求項16記載の不揮発性メモリシステム。
【請求項21】
前記第1の物理ブロックが、前記第1の更新インデックス値を記憶する第1のオーバーヘッド領域を含み、
前記第2の物理ブロックが、前記第2の更新インデックス値を記憶する第2のオーバーヘッド領域を含む、
請求項20記載の不揮発性メモリシステム。
【請求項22】
前記第2の更新インデックス値の消去を含む、第1の物理ブロックを消去する手段、
を更に含む請求項20記載の不揮発性メモリシステム。
【請求項23】
前記第1の物理ブロックから、前記情報と前記第1の更新インデックス値とを消去する手段、
を更に含む請求項16記載の不揮発性メモリシステム。
【請求項24】
前記第2の更新インデックス値が、前記第2の物理ブロックの冗長領域に記憶される、
請求項16記載の不揮発性メモリシステム。
【請求項25】
前記論理ブロックに関連付けられた新しいデータを受け取る手段であって、該新しいデータが前記第1の物理ブロックに以前に書き込まれたページに対応するがそれらのページの内容とは異なるものと、
前記受け取られたデータを前記第2の物理ブロックに書き込む手段と、
を更に含む請求項16記載の不揮発性メモリシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2010−267290(P2010−267290A)
【公開日】平成22年11月25日(2010.11.25)
【国際特許分類】
【出願番号】特願2010−155482(P2010−155482)
【出願日】平成22年7月8日(2010.7.8)
【分割の表示】特願2004−548319(P2004−548319)の分割
【原出願日】平成15年9月10日(2003.9.10)
【出願人】(592012513)サンディスク コーポレイション (173)
【氏名又は名称原語表記】SanDisk Corporation
【Fターム(参考)】