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

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

Info

Publication number
JP2006504200A
JP2006504200A JP2004548319A JP2004548319A JP2006504200A JP 2006504200 A JP2006504200 A JP 2006504200A JP 2004548319 A JP2004548319 A JP 2004548319A JP 2004548319 A JP2004548319 A JP 2004548319A JP 2006504200 A JP2006504200 A JP 2006504200A
Authority
JP
Japan
Prior art keywords
physical block
block
identifier
indicator
physical
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.)
Pending
Application number
JP2004548319A
Other languages
English (en)
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.)
SanDisk Corp
Original Assignee
SanDisk Corp
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 Corp filed Critical SanDisk Corp
Publication of JP2006504200A publication Critical patent/JP2006504200A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Tests Of Electronic Circuits (AREA)

Abstract

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

Description

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

Claims (52)

  1. 第1の物理ブロックおよび第2の物理ブロックと不揮発性メモリシステムに関連付けられている論理ブロックとの関連付けを解決する方法であって、
    前記第1の物理ブロックに関連付けられている第1の識別子を取得するステップと、
    前記第2の物理ブロックに関連付けられている第2の識別子を取得するステップと、
    前記第1の識別子と前記第2の識別子とを比較して、前記第1の物理ブロックと前記論理ブロックとの関連付けが前記第2の物理ブロックとの関連付けよりも新しいことを前記第1の識別子が示す場合を判定するステップと、
    前記第1の識別子が、前記第1の物理ブロックがより新しく前記論理ブロックに関連付けられたことを示すと判定されたときに前記論理ブロックに関連付けられている内容を前記第1の物理ブロックに供給するように構成されたオペレーションを完了するステップとを含む方法。
  2. さらに、
    前記第1の識別子が、前記第1の物理ブロックがより新しく前記論理ブロックに関連付けられたことを示さないと判定されたときに前記論理ブロックに関連付けられている内容を前記第2の物理ブロックに供給するように構成されたオペレーションを完了するステップを含む請求項1に記載の方法。
  3. 前記第1の識別子を取得するステップは、前記第1の物理ブロックに関連付けられているオーバーヘッド領域から前記第1の識別子を取得するステップを含み、前記第2の識別子を取得するステップは、前記第2の物理ブロックに関連付けられているオーバーヘッド領域から前記第2の識別子を取得するステップを含む請求項1に記載の方法。
  4. 前記第1の識別子は、第1の更新インデックスであり、前記第2の識別子は、第2の更新インデックスである請求項3に記載の方法。
  5. 前記第1の更新インデックスは、約1バイトよりも短い長さを持ち、前記第2の更新インデックスは、約1バイトよりも短い長さを持つ請求項4に記載の方法。
  6. 前記第1の識別子と前記第2の識別子とを比較し、前記第1の物理ブロックと前記論理ブロックとの関連付けが前記第2の物理ブロックとの関連付けよりも新しいことを前記第1の識別子が示している場合を判別するステップは、前記第1の識別子が前記第2の識別子の値よりも大きい値を持つ場合を判別するステップを含み、前記論理ブロックに関連付けられている内容を前記第1の物理ブロックに供給するように構成されている前記オペレーションを完了するステップは、前記第1の識別子が前記第2の識別子よりも大きな値を持つと判定された場合に前記オペレーションを完了するステップを含む請求項1に記載の方法。
  7. 前記オペレーションは、更新オペレーション、コピーオペレーション、およびマージオペレーションのうちの1つである請求項1に記載の方法。
  8. さらに、
    前記第1の物理ブロックを識別するステップと、
    前記第2の物理ブロックを識別するステップとを含む請求項1に記載の方法。
  9. さらに、
    前記オペレーションの完了後、前記第2の物理ブロックを消去するステップを含み、前記第2の物理ブロックを消去するステップは前記第2の識別子を消去するステップを含む請求項1に記載の方法。
  10. 前記不揮発性メモリシステムは、NANDフラッシュメモリシステムである請求項1に記載の方法。
  11. 前記第1の識別子は、さらに、前記第1の物理ブロックの複数のページと前記論理ブロックとの関連付けが、前記第2の物理ブロックの複数のページとの関連付けよりも実質的にすべて新しいことを示すように構成される請求項1に記載の方法。
  12. 第2の物理ブロックを不揮発性メモリシステム内の論理ブロックに関連付ける方法であって、前記論理ブロックは関連付けられた第1の物理ブロックを持ち、前記第1の物理ブロックは前記論理ブロックに関連付けられている内容を含み、
    前記第2の物理ブロックを取得するステップと、
    前記第2の物理ブロックに関連付けられている第2のインジケータを前記第1の物理ブロックに関連付けられている第1のインジケータの値と実質的に異なる値に設定するステップと、
    前記第1の物理ブロックの複数のページに含まれる内容の少なくとも一部を前記第2の物理ブロックに供給するオペレーションを開始するステップとを含み、前記第2のインジケータは、前記第2の物理ブロックの複数のページと前記論理ブロックとの関連付けが前記第1の物理ブロックの前記複数のページとの関連付けよりも新しいことを示すように構成される方法。
  13. さらに、
    前記第1の物理ブロックから前記第1のインジケータを取り出すステップと、
    前記第1のインジケータの前記値を判別するステップとを含む請求項12に記載の方法。
  14. 前記第2のインジケータを設定するステップは、前記第2のインジケータを前記第1のインジケータの前記値よりも大きな値に設定するステップを含む請求項13に記載の方法。
  15. 前記第1のインジケータは、前記第1の物理ブロックの冗長領域から取り出される請求項13に記載の方法。
  16. さらに、
    前記第2のインジケータを前記第2の物理ブロックに格納するステップを含む請求項12に記載の方法。
  17. 前記第2のインジケータを前記第2の物理ブロックに格納するステップは、前記第2のインジケータを前記物理ブロックに関連付けられている冗長領域に格納するステップを含む請求項16に記載の方法。
  18. 前記第2のインジケータを前記冗長領域に格納するステップは、前記第2のインジケータを前記冗長領域内に約1バイトまでの長さとして格納するステップを含む請求項17に記載の方法。
  19. 前記オペレーションは、更新オペレーション、コピーオペレーション、およびマージオペレーションのうちの1つである請求項12に記載の方法。
  20. 前記不揮発性メモリシステムは、NANDフラッシュメモリシステムである請求項12に記載の方法。
  21. 第1の物理ブロックおよび第2の物理ブロックと不揮発性メモリに関連付けられている論理ブロックとの関連付けを解決するシステムであって、
    前記第1の物理ブロックに関連付けられている第1の識別子を取得するコードデバイスと、
    前記第2の物理ブロックに関連付けられている第2の識別子を取得するコードデバイスと、
    前記第1の識別子と前記第2の識別子とを比較して、前記第1の物理ブロックと前記論理ブロックとの関連付けが前記第2の物理ブロックとの関連付けよりも新しいことを前記第1の識別子が示す場合を判別するコードデバイスと、
    前記第1の識別子が、前記第1の物理ブロックがより新しく前記論理ブロックに関連付けられたことを示すと判定されたときに前記論理ブロックに関連付けられている内容を前記第1の物理ブロックに供給するように構成されたオペレーションを完了するコードデバイスと、
    前記コードデバイスを格納するためのメモリ領域と、
    前記コードデバイスを処理するプロセッサとを備えるシステム。
  22. さらに、
    前記第1の識別子が、前記第1の物理ブロックがより新しく前記論理ブロックに関連付けられたことを示さないと判定されたときに前記論理ブロックに関連付けられている内容を前記第2の物理ブロックに供給するように構成されたオペレーションを完了するコードデバイスを含む請求項21に記載のシステム。
  23. 前記第1の識別子を取得する前記コードデバイスは、前記第1の物理ブロックに関連付けられているオーバーヘッド領域から前記第1の識別子を取得するコードデバイスを含み、前記第2の識別子を取得する前記コードデバイスは、前記第2の物理ブロックに関連付けられているオーバーヘッド領域から前記第2の識別子を取得するコードデバイスを含む請求項21に記載のシステム。
  24. 前記第1の識別子と前記第2の識別子とを比較し、前記第1の物理ブロックと前記論理ブロックとの関連付けが前記第2の物理ブロックとの関連付けよりも新しいことを前記第1の識別子が示している場合を判別する前記コードデバイスは、前記第1の識別子が前記第2の識別子の値よりも新しい値を持つ場合を判定するコードデバイスを含み、前記論理ブロックに関連付けられている内容を前記第1の物理ブロックに供給するように構成されている前記オペレーションを完了する前記コードステップは、前記第1の識別子が前記第2の識別子よりも新しい値を持つと判定された場合に前記オペレーションを完了するコードデバイスを含む請求項21に記載のシステム。
  25. 前記オペレーションは、更新オペレーション、コピーオペレーション、およびマージオペレーションのうちの1つである請求項21に記載のシステム。
  26. 前記不揮発性メモリシステムは、NANDフラッシュメモリである請求項21に記載のシステム。
  27. 前記第1の識別子は、さらに、前記第1の物理ブロックのページと前記論理ブロックとの関連付けが、前記第2の物理ブロックのページとの関連付けよりも実質的にすべて新しいことを示すように構成される請求項21に記載のシステム。
  28. 第2の物理ブロックを不揮発性メモリの論理ブロックに関連付けるシステムであって、前記論理ブロックは関連付けられた第1の物理ブロックを持ち、前記第1の物理ブロックは前記論理ブロックに関連付けられている内容を含み、
    前記第2の物理ブロックを取得するコードデバイスと、
    前記第2の物理ブロックに関連付けられている第2のインジケータを前記第1の物理ブロックに関連付けられている第1のインジケータの値と実質的に異なる値に設定するコードデバイスと、
    前記第1の物理ブロックの複数のページに含まれる内容の少なくとも一部を前記第2の物理ブロックに供給するオペレーションを開始するコードデバイスであって、前記第2のインジケータは、前記第2の物理ブロックの複数のページと前記論理ブロックとの関連付けが前記第1の物理ブロックの前記複数のページとの関連付けよりも新しいことを示す、コードデバイスと、
    前記コードデバイスを格納するためのメモリ領域と、
    前記コードデバイスを処理するプロセッサとを備えるシステム。
  29. 前記第2のインジケータを設定する前記コードデバイスは、前記第2のインジケータを前記第1のインジケータの前記値よりも大きな値に設定するコードデバイスを含む請求項28に記載のシステム。
  30. さらに、
    前記第2のインジケータを前記第2の物理ブロックに格納するコードデバイスを含む請求項28に記載のシステム。
  31. 前記第2のインジケータを前記第2の物理ブロックに格納する前記コードデバイスは、前記第2のインジケータを前記物理ブロックに関連付けられている冗長領域に格納するコードデバイスを含む請求項30に記載のシステム。
  32. 前記不揮発性メモリシステムは、NANDフラッシュメモリである請求項28に記載のシステム。
  33. 不揮発性メモリシステムであって、
    関連する論理ブロックに対応する第1の物理ブロックおよび第2の物理ブロックを含む不揮発性メモリと、
    前記第1の物理ブロックに関連付けられている第1の識別子を取得する手段と、
    前記第2の物理ブロックに関連付けられている第2の識別子を取得する手段と、
    前記第1の識別子と前記第2の識別子とを比較して、前記第1の物理ブロックの実質的にすべてのページと前記論理ブロックとの関連付けが前記第2の物理ブロックの実質的にすべてのページとの関連付けよりも新しいことを前記第1の識別子が示す場合を判別する手段と、
    前記第1の識別子が、前記第1の物理ブロックの実質的にすべてのページがより新しく前記論理ブロックに関連付けられたことを示すと判定されたときに前記論理ブロックに関連付けられている内容を前記第1の物理ブロックに供給する手段とを備える不揮発性メモリシステム。
  34. さらに、
    前記第1の識別子が、前記第1の物理ブロックがより新しく前記論理ブロックに関連付けられたことを示さないと判定されたときに前記論理ブロックに関連付けられている内容を前記第2の物理ブロックに供給する手段を備える請求項33に記載のシステム。
  35. 前記第1の物理ブロックは、第1のオーバーヘッド領域を含み、前記第2の物理ブロックは、第2のオーバーヘッド領域を含み、前記第1の識別子を取得する前記手段は、前記第1のオーバーヘッド領域から前記第1の識別子を取得する手段を含み、前記第2の識別子を取得する前記手段は、前記第2のオーバーヘッド領域から前記第2の識別子を取得する手段を含む請求項33に記載のシステム。
  36. 前記第1の識別子と前記第2の識別子とを比較し、前記第1の物理ブロックと前記論理ブロックとの関連付けが前記第2の物理ブロックとの関連付けよりも新しいことを前記第1の識別子が示している場合を判別する手段は、前記第1の識別子が前記第2の識別子の値よりも新しい値を持つ場合を判別する手段を含み、前記論理ブロックに関連付けられている内容を前記第1の物理ブロックに供給するように構成されている前記オペレーションを完了する手段は、前記第1の識別子が前記第2の識別子よりも新しい値を持つと判定された場合に前記オペレーションを完了する手段を含む請求項33に記載のシステム。
  37. さらに、
    前記オペレーションの完了後、前記第2の物理ブロックを消去する手段を備え、前記第2の物理ブロックを消去する前記手段は前記第2の識別子を消去する手段を含む請求項33に記載のシステム。
  38. 前記不揮発性メモリは、NANDフラッシュメモリであり、前記不揮発性メモリシステムは、NANDフラッシュメモリシステムである請求項33に記載のシステム。
  39. 不揮発性メモリシステムであって、
    論理ブロックに関連付けられている第1の物理ブロックと第2の物理ブロックとを含む不揮発性メモリであって、前記第1の物理ブロックは前記論理ブロックに関連付けられている情報を含む、不揮発性メモリと、
    前記第2の物理ブロックを取得する手段と、
    前記第2の物理ブロックに関連付けられている第2のインジケータを、前記第1の物理ブロックに関連付けられている第1のインジケータの値と実質的に異なる値に設定する手段であって、前記第2のインジケータは、前記第2の物理ブロックに関連付けられている実質的にすべてのページと前記論理ブロックとの関連付けが、前記第1の物理ブロックに関連付けられている実質的にすべてのページとの関連付けよりも最近であることを示すように構成される、手段と、
    前記第1の物理ブロックに含まれる前記情報の少なくとも一部を前記第2の物理ブロックに供給するオペレーションを開始する手段とを備える不揮発性メモリシステム。
  40. さらに、
    前記情報の少なくとも一部が前記第2の物理ブロックに供給された後、前記情報および前記第1のインジケータを前記第1の物理ブロックから消去する手段を備える請求項39に記載のシステム。
  41. 前記第2のインジケータを設定する前記手段は、前記第2のインジケータを前記第1のインジケータの前記値よりも大きな値に設定する手段を含む請求項39に記載のシステム。
  42. さらに、
    前記第2のインジケータを前記物理ブロックに関連付けられている冗長領域に格納する手段を備える請求項39に記載のシステム。
  43. 前記不揮発性メモリは、NANDフラッシュメモリであり、前記不揮発性メモリシステムは、NANDフラッシュメモリシステムである請求項39に記載のシステム。
  44. 不揮発性メモリであって、
    第1のビットの集合が格納される第1のオーバーヘッド領域を含む少なくとも第1のページを含む第1の物理ブロックと、
    第2のビットの集合が格納される第2のオーバーヘッド領域を含む少なくとも第2のページを含む第2の物理ブロックであって、前記第1の物理ブロックおよび前記第2の物理ブロックは、論理ブロックに関連付けられ、前記第1のビットの集合は、前記第1の物理ブロックの実質的にすべてのページの相対的経過時間を示すように構成され、前記第2のビットの集合は、前記第2の物理ブロックの実質的にすべてのページの相対的経過時間を示すように構成され、前記第1のビットの集合および前記第2のビットの集合は、前記第1の物理ブロックが前記論理ブロックにより新しく関連付けられているかどうかを判定するために比較されるように構成されている、第2の物理ブロックとを含む不揮発性メモリ。
  45. 第2の物理ブロックを不揮発性メモリシステム内の論理ブロックに関連付ける方法であって、前記論理ブロックは関連付けられた第1の物理ブロックを持ち、前記第1の物理ブロックは前記論理ブロックに関連付けられているより古い内容を含み、
    前記第2の物理ブロックを取得するステップと、
    前記第2の物理ブロックに関連付けられている第2のインジケータを、前記第1の物理ブロックに関連付けられている第1のインジケータの値と実質的に異なる値に設定するステップであって、前記第2のインジケータは、前記第2の物理ブロックに関連付けられている実質的にすべてのページと前記論理ブロックとの関連付けが、前記第1の物理ブロックに関連付けられている実質的にすべてのページとの関連付けよりも最近であることを示すように構成される、ステップと、
    前記論理ブロックに関連付けられている新しい内容を前記第2の物理ブロックに供給するオペレーションを起動するステップであって、前記新しい内容の少なくとも一部は、前記より古い内容のより新しいバージョンとなるように構成される、ステップとを含む方法。
  46. さらに、
    前記第1の物理ブロックから前記第1のインジケータを取り出すステップと、
    前記第1のインジケータの前記値を判別するステップとを含む請求項45に記載の方法。
  47. 前記第2のインジケータを設定するステップは、前記第2のインジケータを前記第1のインジケータの前記値よりも大きな値に設定するステップを含む請求項46に記載の方法。
  48. 前記第1のインジケータは、前記第1の物理ブロックの冗長領域から取り出される請求項46に記載の方法。
  49. さらに、
    前記第2のインジケータを前記第2の物理ブロックに格納するステップを含む請求項45に記載の方法。
  50. 不揮発性メモリシステムであって、
    論理ブロックに関連付けられている第1の物理ブロックと第2の物理ブロックとを含む不揮発性メモリであって、前記第1の物理ブロックは前記論理ブロックに関連付けられている少なくとも一部のより古い情報を含む、不揮発性メモリと、
    前記第2の物理ブロックを取得する手段と、
    前記第2の物理ブロックに関連付けられている第2のインジケータを、前記第1の物理ブロックに関連付けられている第1のインジケータの値と実質的に異なる値に設定する手段であって、前記第2のインジケータは、前記第2の物理ブロックに関連付けられている実質的にすべてのページと前記論理ブロックとの関連付けが、前記第1の物理ブロックに関連付けられている実質的にすべてのページとの関連付けよりも最近であることを示すように構成される、手段と、
    前記論理ブロックに関連付けられているより新しい情報を前記第2の物理ブロックに供給するオペレーションを起動し、前記古い情報の実質的にどれもが、前記第2の物理ブロックに供給されない、手段とを備える不揮発性メモリシステム。
  51. さらに、
    前記新しい情報が前記第2の物理ブロックに供給された後、前記情報および前記第1のインジケータを前記第1の物理ブロックから消去する手段を備える請求項50に記載のシステム。
  52. 前記第2のインジケータを設定する前記手段は、前記第2のインジケータを前記第1のインジケータの前記値よりも大きな値に設定する手段を含む請求項50に記載のシステム。
JP2004548319A 2002-10-28 2003-09-10 共通論理ブロックに関連付けられている物理ブロックを解決するための方法および装置 Pending JP2006504200A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/281,762 US7234036B1 (en) 2002-10-28 2002-10-28 Method and apparatus for resolving physical blocks associated with a common logical block
PCT/US2003/028430 WO2004040431A2 (en) 2002-10-28 2003-09-10 Method and apparatus for resolving physical blocks associated with a common logical block

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2010155482A Division JP2010267290A (ja) 2002-10-28 2010-07-08 共通論理ブロックに関連付けられている物理ブロックを解決するための方法および装置

Publications (1)

Publication Number Publication Date
JP2006504200A true JP2006504200A (ja) 2006-02-02

Family

ID=32228773

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2004548319A Pending JP2006504200A (ja) 2002-10-28 2003-09-10 共通論理ブロックに関連付けられている物理ブロックを解決するための方法および装置
JP2010155482A Pending JP2010267290A (ja) 2002-10-28 2010-07-08 共通論理ブロックに関連付けられている物理ブロックを解決するための方法および装置

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2010155482A Pending JP2010267290A (ja) 2002-10-28 2010-07-08 共通論理ブロックに関連付けられている物理ブロックを解決するための方法および装置

Country Status (8)

Country Link
US (1) US7234036B1 (ja)
EP (1) EP1558989A2 (ja)
JP (2) JP2006504200A (ja)
KR (1) KR20050062638A (ja)
CN (1) CN1701300B (ja)
AU (1) AU2003270530A1 (ja)
TW (1) TWI246649B (ja)
WO (1) WO2004040431A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011123560A (ja) * 2009-12-08 2011-06-23 Oki Electric Industry Co Ltd フラッシュディスク装置

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1556868B1 (en) * 2002-10-28 2007-09-05 SanDisk Corporation Automated wear leveling in non-volatile storage systems
EP1630657A1 (en) * 2004-08-30 2006-03-01 STMicroelectronics S.r.l. Embedded storage device with integrated data-management functions and storage system incorporating it
KR100684887B1 (ko) * 2005-02-04 2007-02-20 삼성전자주식회사 플래시 메모리를 포함한 데이터 저장 장치 및 그것의 머지방법
US8122193B2 (en) * 2004-12-21 2012-02-21 Samsung Electronics Co., Ltd. Storage device and user device including the same
US20090172269A1 (en) * 2005-02-04 2009-07-02 Samsung Electronics Co., Ltd. Nonvolatile memory device and associated data merge method
CN100573476C (zh) 2005-09-25 2009-12-23 深圳市朗科科技股份有限公司 闪存介质数据管理方法
KR100771519B1 (ko) * 2006-10-23 2007-10-30 삼성전자주식회사 플래시 메모리를 포함한 메모리 시스템 및 그것의 머지방법
US7694091B2 (en) * 2006-10-23 2010-04-06 Hewlett-Packard Development Company, L.P. Non-volatile storage for backing up volatile storage
TWI421869B (zh) * 2009-10-14 2014-01-01 Phison Electronics Corp 用於快閃記憶體的資料寫入方法及其控制器與儲存系統
US9262096B2 (en) * 2013-07-15 2016-02-16 Seagate Technology Llc Dynamic address mapping for finish in the field

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07109717B2 (ja) 1986-05-31 1995-11-22 キヤノン株式会社 メモリ書き込み制御方法
JP2685173B2 (ja) 1986-05-31 1997-12-03 キヤノン株式会社 メモリ書き込み制御方法
US5268870A (en) 1988-06-08 1993-12-07 Eliyahou Harari Flash EEPROM system and intelligent programming and erasing methods therefor
EP0392895B1 (en) 1989-04-13 1995-12-13 Sundisk Corporation Flash EEprom system
US5166939A (en) * 1990-03-02 1992-11-24 Micro Technology, Inc. Data storage apparatus and method
US5222109A (en) 1990-12-28 1993-06-22 Ibm Corporation Endurance management for solid state files
US5438573A (en) 1991-09-13 1995-08-01 Sundisk Corporation Flash EEPROM array data and header file structure
US6230233B1 (en) 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
JP2856621B2 (ja) 1993-02-24 1999-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置
US5388083A (en) 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
US5544312A (en) 1994-04-29 1996-08-06 Intel Corporation Method of detecting loss of power during block erasure and while writing sector data to a solid state disk
US5845313A (en) * 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
US5907856A (en) 1995-07-31 1999-05-25 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US5835935A (en) 1995-09-13 1998-11-10 Lexar Media, Inc. Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory
US6125435A (en) 1995-09-13 2000-09-26 Lexar Media, Inc. Alignment of cluster address to block addresses within a semiconductor non-volatile mass storage memory
US5860082A (en) 1996-03-28 1999-01-12 Datalight, Inc. Method and apparatus for allocating storage in a flash memory
US6122195A (en) * 1997-03-31 2000-09-19 Lexar Media, Inc. Method and apparatus for decreasing block write operation times performed on nonvolatile memory
JP4079506B2 (ja) * 1997-08-08 2008-04-23 株式会社東芝 不揮発性半導体メモリシステムの制御方法
JP3070539B2 (ja) * 1997-09-30 2000-07-31 ソニー株式会社 外部記憶装置、データ処理装置及びデータ処理方法
KR100297986B1 (ko) 1998-03-13 2001-10-25 김영환 플래쉬 메모리 셀 어레이의 웨어 레벨링 시스템 및 웨어 레벨링 방법
US6260156B1 (en) 1998-12-04 2001-07-10 Datalight, Inc. Method and system for managing bad areas in flash memory
US6426893B1 (en) 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
EP1281123A1 (en) 2000-05-04 2003-02-05 Koninklijke Philips Electronics N.V. Method, system and computer program for data management on a storage medium
KR100644602B1 (ko) 2000-10-11 2006-11-10 삼성전자주식회사 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조
US6763424B2 (en) 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
JP3631463B2 (ja) * 2001-12-27 2005-03-23 株式会社東芝 不揮発性半導体記憶装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011123560A (ja) * 2009-12-08 2011-06-23 Oki Electric Industry Co Ltd フラッシュディスク装置

Also Published As

Publication number Publication date
TWI246649B (en) 2006-01-01
CN1701300A (zh) 2005-11-23
JP2010267290A (ja) 2010-11-25
TW200413918A (en) 2004-08-01
WO2004040431A2 (en) 2004-05-13
US7234036B1 (en) 2007-06-19
AU2003270530A1 (en) 2004-05-25
EP1558989A2 (en) 2005-08-03
WO2004040431A3 (en) 2005-01-06
CN1701300B (zh) 2010-05-12
KR20050062638A (ko) 2005-06-23

Similar Documents

Publication Publication Date Title
JP4611024B2 (ja) ブロック内のページをグループ化する方法及び装置
JP2010267290A (ja) 共通論理ブロックに関連付けられている物理ブロックを解決するための方法および装置
JP4822440B2 (ja) 不揮発性メモリシステムのための内部メンテナンススケジュール要求
JP5162535B2 (ja) メモリシステムを利用する方法及びメモリシステム
TWI240865B (en) Method and apparatus for splitting a logical block
KR100914089B1 (ko) 비휘발성 저장 시스템의 소거 카운트 유지 방법 및 장치
US7174440B2 (en) Method and apparatus for performing block caching in a non-volatile memory system
US8086787B2 (en) Wear leveling method, and storage system and controller using the same
KR100910680B1 (ko) 소거 카운트 블록을 유지하는 방법 및 장치
US8055873B2 (en) Data writing method for flash memory, and controller and system using the same
JP2006504221A (ja) 不揮発性記憶システムにおける最高頻度消去ブロックの追跡
JP2006504195A (ja) 不揮発性記憶システムにおける摩耗一様化
KR20050067203A (ko) 비휘발성 저장 시스템의 평균 소거 카운트 유지 방법 및장치
JP2004152299A (ja) 不揮発性メモリシステム内での使用不可能なブロック管理
TWI459198B (zh) 記憶體儲存裝置、其記憶體控制器與有效資料識別方法
TWI852615B (zh) 藉助於專用資訊控制來進行記憶體裝置的垃圾收集管理之方法、記憶體控制器、記憶體裝置以及電子裝置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060908

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090401

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090403

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090702

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090709

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090731

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090807

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090902

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090909

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090930

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100308