説明

フラッシュメモリ内のブロックにおける移動セクタ

【課題】CAMセル装置の過剰なオーバーヘッドなしに格納されたデータに迅速にアクセスを提供する半導体ハードディスクアーキテクチャーを提供する。
【解決手段】不揮発性メモリを有し、ホストに接続された、該不揮発性メモリにブロックで構成された情報を格納するための記憶装置であって、該ブロックの各々は、それに関連した論理ブロックアドレス(LBA)および物理ブロックアドレス(PBA)を有し、該LBAは、アクセスされるブロックを識別するために該ホストによって該記憶装置に提供され、該PBAは、該アクセスされるブロックが格納される該不揮発性メモリ内でフリーロケーションを識別するために該記憶装置によって発展され、該不揮発性内の格納されたブロックの各々は、選択的に消去可能であり、且つ1つ以上のセクタをさらに有する記憶装置。

【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の引用)
本願は、“フラッシュメモリ大容量記憶アーキテクチャーをアドレスするダイレクト論理ブロック”という名称の1995年7月31日に出願された筆者の先の出願番号第08/509,706号の一部継続出願である。
【0002】
(発明の分野)
本発明はコンピュータの大容量記憶の分野に関する。特に、本発明はハードディスクを半導体不揮発性メモリ及び、特にフラッシュメモリに置き換えるためのアーキテクチャーに関する。
【背景技術】
【0003】
コンピュータは従来、文書、データ、プログラム及び情報の大容量記憶のために回転型磁気媒体を使用している。しかし、広範に渡り使用され、一般に受け入れられているこの種のハードディスクドライブは様々な欠点に悩まされている。ディスクが回転するため、ハードディスクドライブから情報を引き出す際に特有の待ち時間を生じる。
【0004】
携帯型コンピュータでは特に別の問題が顕著である。特に、携帯型コンピュータが受けると考えられる多くの各種の物理的衝撃にハードディスクが耐えられない。さらに、回転型ディスクのモーターは多大な電力を消費し、携帯型コンピュータのバッテリー寿命を低下させる。
【0005】
半導体メモリは上記の問題を解決できるため、大容量記憶用ハードディスクドライブを置き換えるための理想的な選択である。ハードディスクを半導体メモリで置換するために、考えうる解決策が提案されてきた。その様なシステムを本当に使いやすくするために、メモリは不揮発性で変更可能でなければならない。発明者たちは、フラッシュメモリがそのような置き換えに好ましいと判断している。
【0006】
フラッシュメモリは、ホットエレクトロン、ソースインジェクション、トンネリングによってプログラム可能であり、Fowler−Nordheimトンネリングによって消去可能なトランジスターメモリセルである。このようなメモリセルのプログラミング及び消去には、フローティング・ゲート電極を取り囲む誘電体を通過するための電流が必要となる。そのため、この種のメモリは有限数の消去−書き込みサイクルを有する。最終的に誘電体は劣化する。フラッシュセル装置の製造メーカーは消去−書き込みサイクル数の制限を100,000から1,000,000の間に指定している。
【0007】
半導体大量記憶装置をうまく動作させる条件の一つは、回転型媒体ハードディスク大量記憶装置に代わるその使用法を設計者及び、そのような装置を使用するシステムのユーザに明白にすることである。言い換えると、そのような半導体大容量記憶装置が組み込まれたコンピュータの設計者またはユーザは、簡単にハードディスクを取り外し、半導体大容量記憶装置に置き換えることができる。現在利用できる全ての市販のソフトウエアは、全く修正の必要なしにこのような半導体大容量記憶装置を利用したシステムで動作すべきである。
【0008】
SanDiskは、1991年7月9日のシリコンバレーPCデザイン会議でフラッシュメモリを用いた半導体大容量記憶のためのアーキテクチャーを提案した。この大容量記憶システムは、市販のハードディスクのセクタサイズに対応した512バイトの読み書き
(用)ブロックサイズを含む。
【0009】
これ迄に、設計(図)には書き込み前消去アーキテクチャーが組み込まれていた。このプロセスで媒体のファイルを更新するために、媒体上の物理的ロケーションが前もってプログラムされた場合、新しいデータが再プログラムされ得る前にそれは消去されなければならない。
【0010】
このプロセスはシステムのスループット全体に多大な悪影響を及ぼす。ホストが記憶媒体に新しいデータファイルを書き込む時、ホストはデータファイルに関連する周辺記憶装置に論理ブロックアドレスを提供する。記憶装置はその時、この所与の論理ブロックアドレスを媒体上の実際の物理ブロックアドレスに変換し、書き込み処理を行う。磁気ハードディスクドライブでは、新しいデータは媒体を変更することなく以前の古いデータに上書きされる。従って、コントローラから所与の論理ブロックアドレスからいったん物理ブロックアドレスが計算されると、その場所にデータファイルを単に書き込む。半導体記憶装置では、計算された物理ブロックアドレスに対応する場所が以前にプログラムされていた場合、新しいデータでこのブロックが再プログラムされる前に消去されなければならない。ある従来技術においては、書き込み前消去アーキテクチャーでは、ホストから与えられた論理ブロックアドレス間の相互関係は、媒体上の物理ブロックアドレスへの1対1マッピングとなる。この方法には多くの欠点がある。まず、変更された情報を再プログラムする前の消去処理のためにパフォーマンスが遅くなる。半導体フラッシュでは、消去は非常に遅いプロセスである。
【0011】
次に、ハードディスクユーザは一般的に2種類の情報を格納する。一つは、めったに修正されない情報で、もう一つは頻繁に変更される情報である。例えば、ユーザのシステムに格納されている市販のスプレッドシートまたは、ワープロソフトのプログラムは、あったとしてもめったに変更されない。しかし、スプレッドシートのデータファイルまたは、ワープロ文書は頻繁に変更される。この様にハードディスクのそれぞれのセクタは、そこに保存された情報を変更する回数といった点で、典型的に全く別の使われ方をされる。この相違は、データ変更に敏感でないという理由でハードディスクに全く影響しないが、フラッシュメモリ装置では、この相違によって大容量記憶装置のその部分は、大容量記憶装置の他の部分に比べてかなり早く疲弊し、使用できなくなる。
【0012】
別のアーキテクチャーでは、発明者たちはこれまでに論理ブロックアドレスを物理ブロックアドレスに相互に関係付けるテーブルを格納するという解法を提案していた。その解法に関する発明は、1993年3月26日に出願された米国特許出願第08/038,668号及び1993年3月26日に出願された米国特許出願第08/037,893号で開示されている。それらの出願は参考として本発明書中で援用されている。
【0013】
発明者の従来の解法は二つの主要アルゴリズム及び、半導体大容量記憶装置に関連したハードウエア・アーキテクチャーを開示する。本明細書における “データファイル”は、市販されているソフトウエア、ユーザプログラム、ワープロソフトの文書、スプレッドシートのファイルなどを含む任意のコンピュータファイル意味することが理解される。従来の解法における第1のアルゴリズムは修正されたデータファイルを大容量記憶装置に書き戻す時の消去処理を回避する手段を提供している。言い換えると、消去が実行されず修正されたデータファイルは大容量装置の空き部分に書き込まれる。
【0014】
半導体大容量記憶装置アーキテクチャーは、市販されているハードディスクのセクタサイズに対応する大きさのブロックを有する。ブロックはそれぞれ消去可能である。ある実施態様では、半導体大量記憶装置はユーザに影響を与えないで回転型ハードディスクを置き換えることができるため、そのような置き換えは明らかである。書き込み前消去サイク
ルの各時点で大容量記憶装置に格納された情報が変更されないための手段が提供されている。
【0015】
第1のアルゴリズムによれば、消去サイクルは変更されたデータファイルを空きブロックにプログラムすることで回避される。従来の大容量記憶装置を使用する場合、これは通常不可能である。なぜならば、従来のコンピュータシステムで使用される中央演算装置と市販されているソフトウエアは、データファイルの変化する物理的なロケーションを継続して把握するよう構成されていないからである。従来の解法は更新された情報ファイルの論理アドレスと物理アドレスとの間の相互関係を維持するためのプログラム可能なマップを含む。
【0016】
全フラグ及び、論理ブロックアドレスから物理ブロックアドレスへ相互に関係付けるテーブルはCAMセルのアレイ内部に保持されている。CAMセルの利用により、通常1または2クロック・サイクル以内で大容量記憶装置内の所望の物理アドレスが非常に高速に決定される。不幸にも周知であるように、CAMセルは一般的に6つの多重トランジスターを必要とする。従って、テーブル及びフラグのためのCAM記憶装置を用いた特定サイズのメモリを構成する集積回路は、単にメモリを格納するための他の手段を用いた回路に比べてかなり大きくなることが必要である。
【0017】
発明者たちはこの問題について別の解法を提案しており、それは、1993年10月4日に出願された米国特許出願第08/131,495号に開示されている。この出願は参考として本明細書で援用される。
【0018】
これらの同じ発明者によって発明された別の従来解法はまた、不揮発性メモリ記憶装置のためのものである。その装置も不揮発性スペースマネジャーRAMにおける、論理ブロックアドレスと物理ブロックアドレスとの間の相互関係を維持することでデータファイルが変更される度に、書き込み前消去を実行しないよう構成されている。さらに本発明は、追加回路構成を必要とするCAMセル手法に伴うオーバーヘットを回避する。
【0019】
これらの同じ発明者によって前に開示された解法のように、装置は二つの主要アルゴリズムの実行及び、半導体大容量記憶装置に関連したハードウエアアーキテクチャのための回路構成を含む。加えて、CAMセルはRAMセルを使用することで従来の解法を回避される。
【0020】
論理ブロックアドレスをメモリ記憶装置に提供するこの従来の解法において、読み込みが実行される。システムは適合するものが見つかるまで連続的に格納された論理ブロックアドレスを比較する。そのデータファイルはその時、デジタルシステムに組み込まれる。従って、所望の情報の物理的なロケーションが決定される前に全てのメモリロケーションが潜在的に検索され、所望の論理ブロックアドレスと比較されるため、この解法によるパフォーマンスは低下する。
【発明の開示】
【発明が解決しようとする課題】
【0021】
必要とされるのは、CAMセル装置の過剰なオーバーヘッドなしに格納されたデータに迅速にアクセスを提供する半導体ハードディスクアーキテクチャーである。
【課題を解決するための手段】
【0022】
(発明の概要)
項目1.不揮発性メモリを有し、ホストに接続された、その不揮発性メモリにブロックで構成された情報を格納するための記憶装置であって、そのブロックの各々は、それに関
連した論理ブロックアドレス(LBA)および物理ブロックアドレス(PBA)を有し、そのLBAは、アクセスされるブロックを識別するためにそのホストによってその記憶装置に提供され、そのPBAは、そのアクセスされるブロックが格納されるその不揮発性メモリ内でフリーロケーションを識別するためにその記憶装置によって発展され、その不揮発性内の格納されたブロックの各々は、選択的に消去可能であり、且つ1つ以上のセクタをさらに有し、その記憶装置は、(a)各LBA行がLBAによって固有にアドレス可能であるn個のそのLBA行によって規定されるテーブルを格納するため、およびその格納されたブロックのロケーションを識別するための仮想PBAと、その格納されたブロックの一部のロケーションを識別するための移動仮想PBAと、その不揮発性メモリ内のその移動仮想PBAのロケーションにその格納されたブロックの何れかのセクタが移動したか否かを示すためのフラグ手段を含むステータス情報とを格納するためのメモリ装置と、(b)その不揮発性メモリ内に格納される特定のLBAによって識別される1ブロックの情報をそのホストから受取るためと、その特定のLBAが「未使用」場合にはその仮想PBAを発展するためと、その特定のLBAが「使用中」である場合にその移動仮想PBAを発展するためとの手段と、を備え、そのホストがその記憶装置に書込みを行う度毎に消去動作を行うことを回避するため、およびブロックの一部が再書込みされる度毎にその不揮発性メモリ内のフリーロケーションにそのブロック全体を移動させることを回避するために、そのブロックの部分がその不揮発性メモリ内の2つ以上のPBAによって識別されるロケーションに格納され得る、記憶装置。
項目2.上記LBA行の各々の上記ステータス情報が、上記仮想PBAによって識別される上記不揮発性メモリのロケーションに格納されない上記格納されたブロックの1つ以上の上記セクタを識別するためのセクタ移動状態フィールドをさらに含む、項目1に記載の記憶装置。
項目3.上記LBA行の各々の上記ステータス情報が、上記格納されたブロックのどの上記セクタが、もはや上記仮想PBAによって識別されるロケーションにないかを識別するためのセクタ移動状態フィールドをさらに含む、項目1に記載の記憶装置。
項目4.1つ以上の不揮発性メモリ装置をさらに含み、その装置の各々が、各々のロケーションがブロックのセクタを格納するためのPBAによって固有にアドレス可能な複数の記憶ロケーションを有する、項目1に記載の記憶装置。
項目5.上記不揮発性メモリ装置の上記記憶ロケーションの各々は、さらに上記フラグ手段のコピーを格納するためのものである、項目4に記載の記憶装置。
項目6.上記不揮発性装置の上記記憶ロケーションの各々は、上記格納されたブロックのどのセクタが移動するかを識別するためのセクタ移動情報を格納するためのセクタ移動状態ロケーションを含む、項目4に記載の記憶装置。
項目7.パワーアップの際に、上記各PBAの上記セクタ移動情報が、上記不揮発性メモリ装置から読取られ、上記テーブルのそれぞれ対応するLBA行の上記セクタ移動状態フィールドに格納される、項目3および項目6に記載の記憶装置。
項目8.上記特定のブロックが、上記仮想PBAによってアドレッシングされる上記不揮発性装置の1つの上記記憶ロケーションに格納される、項目4に記載の記憶装置。
項目9.上記特定のブロックが、上記移動仮想PBAによってアドレッシングされる上記不揮発性装置の1つの上記記憶ロケーションに格納される、項目4に記載の記憶装置。
項目10.上記フラグ手段が、設定される際に対応するブロックを「古い」として識別するための「古い」フラグ手段と、設定される際に対応するブロックを「使用中」として識別するための「使用中」フラグ手段とをさらに含む、項目1に記載の記憶装置。
項目11.上記セクタ移動ステータスフィールドが、上記格納されたブロックの上記セクタの半分がもはや上記仮想PBAロケーションにないことを示す場合に、その格納されたブロックの上記対応する「古い」フラグ手段が設定される、項目3および項目10に記載の記憶装置。
項目12.上記メモリ装置が揮発性メモリから成る、項目1に記載の記憶装置。
項目13.上記揮発性メモリがランダムアクセスメモリである、項目12に記載の記憶装
置。
項目14.コントローラおよび1つ以上のフラッシュメモリ装置を有する、ホストと共に使用するための記憶装置において、そのコントローラの指示の下で、そのフラッシュメモリ装置内の情報にアクセスするための方法であって、その情報は、セクタで構成され、1つ以上のそのセクタがブロックを規定しており、そのブロックの各々は、選択的に消去可能で、それに関連した、そのホストによって提供されるLBAと、セクタが格納され得るそのフラッシュメモリ装置内で使用されていないロケーションを識別するためのそのコントローラによって発展されるPBAとを有し、その方法は、(a)そのコントローラ内で行によって規定されるテーブルを割当てるステップであって、その行の各々は、LBAによって個々にアドレス可能であり、仮想PBAと、移動仮想PBAと、そのフラッシュメモリ装置内でその仮想PBAからその移動仮想PBAに移動されたセクタのロケーションを決定するために使用されるステータス情報とを格納するように構成されている、ステップと、(b)そのホストがアクセス中のブロックを識別する特定のLBAをそのコントローラに提供するステップと、(c)その特定のLBAと関連してPBAを発展するステップと、(d)LBA行をアドレッシングするためにその特定のLBAを使用するステップと、(e)その特定のLBAに関連するそのPBAをそのアドレッシングされたLBA行に格納するステップと、(f)その特定のLBAによって識別されたそのブロックのさらなるアクセスの際に、移動仮想PBAを発展するステップと、(g)その移動仮想PBAをそのアドレッシングされたLBA行に格納するステップと、(h)そのアドレッシングされたLBA行内の何れかのセクタが移動されたか否かを示すように、そのアドレッシングされたLBA行のそのステータス情報を変更するステップと、を包含し、ブロックがアクセスされる度毎の書込み前の消去動作を回避するために、そのブロックのセクタがそのフラッシュメモリ装置内の使用されていないロケーションに移動される、方法。
項目15.上記ステータス情報が、上記特定のブロックの何れかの部分が、上記移動仮想PBAによって識別される上記フラッシュメモリ装置内のロケーションに格納されるか否かを示すための移動フラグ手段をさらに含む、項目14に記載の情報にアクセスするための方法。
項目16.上記テーブルを揮発性メモリに格納するステップをさらに包含する、項目14に記載の情報にアクセスするための方法。
項目17.不揮発性メモリを有し、ホストに接続された、その不揮発性メモリにブロックで構成された情報を格納するための記憶装置であって、そのブロックの各々は、それに関連した論理ブロックアドレス(LBA)および物理ブロックアドレス(PBA)を有し、そのLBAは、アクセスされるブロックを識別するためにそのホストによってその記憶装置に提供され、そのPBAは、そのアクセスされるブロックが格納されるその不揮発性メモリ内でフリーロケーションを識別するためにその記憶装置によって発展され、その不揮発性内に格納されたブロックの各々は、選択的に消去可能であり、且つ1つ以上のセクタをさらに有し、その記憶装置は、各LBA行がLBAによって固有にアドレス可能であるそのLBA行によって規定されるテーブルを格納するため、およびその格納されたブロックのロケーションを識別するための仮想PBAと、その格納されたブロックの一部のロケーションを識別するための移動仮想PBAと、その不揮発性メモリ内のその移動仮想PBAのロケーションにその格納されたブロックの何れかのセクタが移動したか否かを示すためのフラグ手段を含むステータス情報とを格納するためのメモリ装置と、その不揮発性メモリ内に格納される特定のLBAによって識別される1ブロックの情報をそのホストから受取るためと、その特定のLBAが「未使用」場合にはその仮想PBAを発展するためと、その特定のLBAが「使用中」である場合にその移動仮想PBAを発展するためとの手段と、そのブロックの各々の内部に格納され、上手く消去されたブロックを識別するために所定の値に設定される欠陥フラグとを備え、そのホストがその記憶装置に書込みを行う度毎に消去動作を行うことを回避するため、およびブロックの一部が再書込みされる度毎にその不揮発性メモリ内のフリーロケーションにそのブロック全体を移動させることを回避するために、そのブロックの部分がその不揮発性メモリ内の2つ以上のPBAによって
識別されるロケーションに格納され得る、記憶装置。
【0023】
本発明は不揮発性メモリ記憶装置のためのものである。その装置はデータファイルが変更される毎に書き込み前消去を実行をしないよう構成される。さらに、CAMセルに伴うオーバヘッドを回避するため、本手法はRAMアレイを利用している。ホストシステムは論理ブロックアドレスを用いて大容量記憶データの編成を維持する。RAMアレイはホストの論理ブロックアドレス(LBA)と同じアドレスによってアドレスされるよう構成されている。RAM内でそのようにアドレスされる各ロケーションはホストから求められる不揮発性大容量記憶装置内のデータの物理アドレスを保持するフィールドを含む。この物理ブロックアドレス(PBA)情報は、電源停止後処理を再開した後に装置が依然として機能することを保証する不揮発性メモリ内に保持されなければならない。なぜなら、RAMは揮発性メモリであるからである。加えて、状態フラグはまた各物理ロケーションに格納される。状態フラグは不揮発性媒体または、RAMと不揮発性媒体の両方の何れかに格納され得る。
【0024】
装置は二つの主要アルゴリズムの実行のための回路構成及び、半導体大容量記憶装置に関連したハードウエアアーキテクチャーを有する。第1のアルゴリズムは、ホストの論理ブロックを物理ブロックアドレスにマッピングする手段を提供し、これによりパフォーマンスが相当改善され最小のハードウエア補助で済む。加えて、第2のアルゴリズムは修正されたデータファイルを大容量記憶装置に書き戻す時に書き込み前消去サイクルを回避するための手段を提供する。その代わりに、消去は行われず、修正されたデータファイルは大容量記憶装置の空いた部分に書き込まれる。
【0025】
本発明において読み込みは、論理ブロックアドレスをメモリ記憶装置に提供することで実行される。RAMアレイは論理ブロックアドレスが一つのRAMロケーションを選択するよう構成される。そのロケーションは、ホストまたは、他の外部システムから要求されたデータの物理ブロックアドレスを保持している。そのデータファイルはその時ホストに読み出される。第2のアルゴリズムでは、消去サイクルは従来技術でなされたようなブロックの消去サイクル後にそれ自身にプログラムするというよりむしろ、変更されたデータファイルを変更されたデータ大容量記憶ブロックにプログラムすることで回避される。
【0026】
本発明の別の実施態様では、方法及び装置は不揮発性メモリ内部の第1の領域から不揮発性メモリ内部の未使用領域へブロック内のセクタを効率よく移動し、第1の領域を“使用中”として記すために提示される。
【0027】
つまり、本発明の好ましい実施態様は、ホストによってアクセスされたブロックを識別する論理ブロックアドレスを物理ブロックアドレスにマッピングするためのマッピング情報を格納し、不揮発性メモリ、選択的に消去可能で個別に移動し得る一つまたは、複数のセクタを有するブロックを識別する、方法、及び、装置を有する。そのマッピング情報には、不揮発性メモリ内の“本来”のロケーションを識別する仮想的物理ブロックアドレスと、不揮発性メモリ内の”移動された”ロケーションを識別する移動された仮想物理ブロックアドレスがあり、前者の内部ではブロックが格納され、後者の内部では一つまたは、複数の格納されたブロックのセクタが移動される。そのマッピング情報にはさらに、“本来の”物理ブロックアドレスを使用するためのステータス情報、アクセスされたブロック内部の“移動された”セクタに関する情報を提供するための“移動された”物理ブロックアドレスが含まれている。
【発明を実施するための最良の形態】
【0028】
(好ましい実施態様の詳細な説明)
図1は、本発明に関する半導体記憶媒体を実装するためのアーキテクチャーを示してい
る。記憶媒体は、ホストまたは、他の外部デジタルシステムとの利用のためのものである。大容量記憶装置は、揮発性RAMアレイ100及び不揮発性アレイ104の二つの部分に区分される。好ましい実施態様によると、不揮発性メモリ記憶装置の全てはフラッシュである。フラッシュはEEPROMによって置き換えられ得る。RAMは任意の都合の良いタイプである
メモリ記憶装置104は、データを0からN−1までのNブロックに編成する。データの各ブロックは、Mバイト長である。好ましい実施態様では、各データブロックは512バイト長で、市販利用されているハードディスクドライブにおけるセクタ長に対応しており、さらにフラグ、論理ブロックアドレス情報(LBA)及び関連したECCを格納するための余剰バイトを有する。メモリ104はユーザが必要とするメモリ記憶装置と同じ容量を有し得る。大容量記憶装置の例には、100Mバイトのアドレシングが可能な記憶装置も含み得る。
【0029】
RAMロケーション102は複数ある。各RAMロケーション102は、ホストシステムまたは、不揮発性媒体の実際の物理アドレスによって与えられる論理ブロックアドレスの適切な一つを用いてコントローラによって一意にアドレスされる。RAMロケーション102は論理ブロックアドレスに関連するデータ及び、不揮発性媒体の物理ブロックアドレスに関連するフラグの物理ブロックアドレスを有する。
【0030】
物理ブロックアドレス(PBA)は図2に示されるように、二つのフィールドに分割され得る。これらのフィールドはデータブロックのグループのクラスタアドレスのために使用され得る。第1のフィールド290は、クラスタアドレスを選択するために用いられ、第2のフィールド292は、このクラスタに関連する論理ブロックアドレスのスタートアドレスを選択するために用いられ得る。
【0031】
情報フラグの集まりもまた、各不揮発性メモリロケーション106のために格納されている。これらのフラグは、旧/新フラグ110、使用中/フリーフラグ112、欠陥フラグ114、及びシングル/セクタフラグ116を含む。さらに、データ格納(領域)112も有する。
【0032】
本発明の大容量記憶装置にデータを書き込む時、コントローラはデータを格納するための第1の利用可能な物理ブロックを決定する。ホストによって選択された論理ブロックアドレスに対応するRAMロケーション102は、104(図1)内の不揮発性メモリアレイ内部のデータが実際に格納される物理ブロックアドレス内に書き込まれる。
【0033】
ユーザがワープロ文書を準備し、コンピュータに文書の保存を指示する例を考える。文書は大容量記憶システム内に格納される。ホストシステムは大容量記憶システムに論理ブロックアドレスを割り当てる。本発明の大容量記憶システムは未使用ブロックまたは、文書を格納するための大容量記憶装置内ブロックの物理アドレスを選択する。物理ブロックアドレスのアドレスは、論理ブロックアドレスに対応してRAMロケーション102に格納される。データがプログラムされると、本発明のシステムはまた、104及び293において使用中フリーフラグ112をこのブロックロケーションは使用中であることを示すように設定する。1つの使用中/フリーフラグ112は不揮発性アレイ104の各エントリのために提供される。
【0034】
さらに、ユーザが文書を取り出し、変更を加え、再度コンピュータに文書を格納する指示を与えると仮定する。書き込み前消去サイクルを回避するため、本発明のシステムは、関連するブロックが消去されることを示す未設定の(プログラムされていない)100内の使用中/フリーフラグ112を有するブロックをロケーションづけるための手段を提供する。システムはその時、106の新ブロック112、100の新ブロック293のため
の使用中/フリーフラグ112を設定し、その後、不揮発性アレイ104内の新しい物理ブロックロケーション106内に修正された文書を格納する。新しい物理ブロックロケーションのアドレスもまた、論理ブロックアドレスに対応するRAMロケーション102に格納され、102内で以前の物理ブロックロケーションに上書きされる。次にシステムは以前のバージョンの文書の旧/新フラグ110を設定し、これにより104の110及び109の293で不必要な古いバージョンの文書を示す。この様に、本発明のシステムは、以前の文書の修正バージョンを格納するために従来システムの書き込み前消去において必要とされる消去サイクルのオーバーヘッドを回避する。
【0035】
RAMアレイ100は電源停止状態でその記憶を失うため、媒体の実際の物理ブロックアドレスを持つ論理ブロックアドレスはまた、不揮発性アレイ104においてシャドウメモリ108として格納される。コントローラによってシャドウ情報が適切なRAMロケーション102に格納されることがわかる。電源が供給される間、100のRAMロケーションは、104の情報106を読み込むことで104における全ての物理ロケーションから適切に更新される。106の論理アドレス108は100のRAMロケーションをアドレスするために用いられ、所与の論理ブロックアドレスに関連する実際の物理ブロックアドレスを更新する。また106は新しいデータ122に関連する実際の物理ブロックアドレスであるため、フラグ110、112、114及び、116は100の物理ブロックアドレス106を用いて102の293内で更新される。フラグが適当な不揮発性メモリロケーション106または、不揮発性メモリロケーションと物理ブロックアドレスに関連するRAMロケーション102の両方のいずれかで格納され得ることが当業者には明らかである。
【0036】
パワーアップ時に、揮発性メモリ100内の論理ブロックアドレスに割り当てられる最新の物理ブロックアドレスを割り当てるために、コントローラはまず、不揮発性メモリ104のフラグ110、112、114及び116部分を読み込み、揮発性メモリ100内のフラグ部293を更新する。次にコントローラは、不揮発性媒体104の全ての物理ブロックアドレスの論理ブロックアドレス108を読み込み、揮発性メモリ100内の所与の物理ブロックアドレスのフラグを把握することで、不揮発性メモリ104内の物理ブロックアドレスの読み込み論理ブロックアドレスを読み込み、揮発性メモリ100内の読み込み論理ブロックアドレスを読み込むために割り当てられた最新の物理ブロックアドレスを更新し得る。
【0037】
図3は、本発明の大容量記憶装置を組み込んだシステムのブロック図を示す。ホストコンピューター、パソコンのような外部デジタルシステム300は、本発明の大容量記憶装置302に接続されている。論理ブロックアドレスはアドレスバス306を介して揮発性RAMアレイ100及び、コントローラ回路304に接続されている。制御信号はまた、コントロールバス308を介してコントローラ304に接続されている。揮発性RAMアレイ100は、不揮発性RAMアレイ400に物理ブロックアドレスを提供するために接続されている。コントローラ304は、揮発性RAM100と不揮発性アレイ104の両方を制御するために接続され、全てのフラグを生成する。
【0038】
本発明に関する書き込み処理の動作を示す、単純化された例は、図4から図8に示される。過剰な説明によって発明の特徴をわかりにくくしない様に全ての情報フラグを表記していない。データエントリは、本発明の理解を更に単純化するために10進数で示している。好ましい実施態様では、2進法が使用されていることが当業者には明らかである。
【0039】
図4は、本発明に関する11のエントリを持つ大容量記憶装置を示す。図4の大容量記憶装置内に有効なまたは、使用可能なデータは格納されていない。従って、全ての物理ブロックアドレスは空である。不揮発性大容量記憶装置のロケーション’6’に格納された
データは詰まっており、古いものである。さらに、ロケーション’9’には欠陥があり、使用できない。
【0040】
ホストは大容量記憶装置に例として、論理ブロックアドレス’3’、次に’4’に順次データの書き込みを指示する。大容量記憶装置はまず、論理ブロックアドレス’3’に関連するデータを書き込む。装置は不揮発性メモリ内で最初の未使用ロケーションを決定する。この例では、最初の空いている場所はロケーション’0’である。
【0041】
従って、図5は論理ブロックアドレス’3’に対して対応する物理ブロックアドレス’0’が格納され、使用中フラグが物理ブロックアドレス’0’に設定される事を示している。次の空いている場所はロケーション’1’である。図6は、論理ブロックアドレス’4’に対して対応する物理ブロックアドレス’1’が格納され、使用中フラグが物理ブロックアドレス’1’に設定される事を示している。
【0042】
ホストは論理ブロックアドレス’3’に何かを再び書き込むことを指示する。次の空いている場所は、ロケーション’2’であると決定される。図7では、データがもはや使用不可能であり、使用中フラグがロケーション’2’に設定され、ロケーション’3’における物理ブロックアドレスが’2’に変更されたことを示すように、ロケーション’0’における旧フラグが設定される事を示している。
【0043】
さらに、ホストは論理ブロックアドレス’4’に再度何かを書き込むことを指示する。次の空いている場所はロケーション’3’であると判断される。図8では、データがもはや使用不可能であり、使用中フラグがロケーション’3’に設定され、ロケーション’4’における物理ブロックアドレスが’3’に変更されたことを示すために、ロケーション’1’の旧フラグが設定される事を示している。(物理ブロックアドレスと同じロケーションに格納されたデータとの間には一般に何ら関係がないことを思い出されたい)。
【0044】
図9は、本発明に関するアルゴリズム1を示している。本発明のシステムがデータを大容量記憶装置にプログラムするよう指示を受けた時(ステップ200)、その時システムはフリーブロック、即ち設定されていない(プログラムされていない)使用中/フリーフラグを持つブロックを見つけ出そうとする。見つかった場合、システムはそのブロックのための使用中/フリーフラグを設定し、データをそのブロック内にプログラムする(ステップ206)。
【0045】
一方、システムが設定されていない使用中/フリーフラグを持つブロックを見つけ出せない場合、システムはフラグ(使用中/フリー及び、旧/新)及び、設定されている旧/新フラグ有する全ブロックに対するデータ及び、設定されていない欠陥フラグを消去し(ステップ204)、次に未設定の使用中/フリーフラグを有するブロックを検索する(ステップ202)。そのようなブロックはステップ204によって生成されるだけである。システムは次に、そのブロックのための使用中/フリーフラグを設定し、データファイルをそのブロックにプログラムする(ステップ206)。
【0046】
もしデータが、これまでに存在するファイルの修正されたバージョンである場合、システムはアクセスされているものから入れ替えられたバージョンを防がなければならない。システムは、データファイルが旧データファイルを入れ替えるかどうか判断する(ステップ208)。もし入れ替えるならば、システムは入れ替えられたブロックに関連する旧/新フラグを設定する(ステップ210)。一方、格納されたデータファイルが新規作成されたデータファイルの場合、旧/新フラグの設定ステップ(ステップ210)は、入れ替えられるブロックがないためスキップされる。最後に、論理アドレス308−を物理アドレスに相互関係づけるマップが更新される(ステップ212)
これまでに概説した手順に従って、周期的な場合を除いてメモリ104への各書き込みに対して消去サイクルに伴うオーバーヘットが回避される。これによって、本発明のアーキテクチャーを使用したコンピュータシステム全体のパフォーマンスが画期的に改善される。
【0047】
本発明の好ましい実施態様では、フラッシュメモリのプログラミングは、当業者よって一般に知られている手順に従っている。言い換えると、プログラムのインパルス(Impulse)により、ビットに適切にプログラムされるよう適用され、適切なプログラミングが行われたことを確認するためにプログラムされたデータを比較する。最終的にビットは消去または、正しくプログラムされず、欠陥フラグ148はそのブロックが再度使用されないように設定される。
【0048】
図10は、本発明の代替の実施形態を用いるデジタルカメラ等のデジタルシステム500を示す。ホスト502を含むようにデジタルシステム500を示すが、ホスト502はパーソナルコンピュータ(PC)、または単に、デジタルシステムにおいて通常用いられる任意の一般的なタイプのプロセッサであり得、不揮発性メモリユニット508に情報を格納するか、または不揮発性メモリユニット508から情報を取り出すための制御回路506に結合される。制御回路506は半導体(あるいは「集積回路」または「チップ」と呼ぶ)、またはさまざまな電子部品を自由選択的に組合せたものであり得る。好適な実施形態において、制御回路を単一のチップデバイスとして示す。不揮発性メモリユニット508は1つ以上のメモリデバイスから構成され、メモリデバイスはそれぞれフラッシュ型またはEEPROM型のメモリであり得る。図10の好適な実施形態において、メモリユニット508は、複数のフラッシュメモリデバイス510〜512を含み、各フラッシュデバイスは、情報を格納するための別個にアドレス可能なロケーションを含む。図10の実施形態の好適なアプリケーションにおいて、このような情報は、それぞれが1つ以上のデータのセクタを有するブロックに組織される。データに加えて、格納された情報は、フラグフィールドおよびアドレス情報等の、データブロックに関するステータス情報をさらに含み得る。
【0049】
ホスト502は、ホスト情報信号504を介して制御回路506に結合される。ホスト情報信号は、アドレスおよびデータバス、ならびに、コマンド、データおよび他のタイプの情報を制御回路506に通信するための制御信号からなり、制御回路506はフラッシュアドレスバス512、フラッシュデータバス514,フラッシュ信号516およびフラッシュステータス信号518(508および512〜516を集合的に信号538と呼ぶ)を介してこのような情報をメモリユニット508に順に格納する。信号538は、コントローラ506およびメモリユニット508との間にコマンド、データおよびステータス情報を提供し得る。
【0050】
図示するコントローラ506は、ホストインターフェースブロック520、バッファRAMブロック522、フラッシュコントローラブロック532、マイクロプロセッサブロック524、マイクロプロセッサコントローラブロック528、マイクロプロセッサ格納ブロック530、マイクロプロセッサROMブロック534、ECC論理ブロック540、およびスペースマネジャーブロック544等の高レベル機能ブロックを含む。ホストインターフェースブロック520は、バッファRAMブロック522およびマイクロプロセッサブロック524からのデータおよびステータス情報をホスト情報信号504を介してホスト502に提供するためのホスト情報信号504を受け取る。ホストインターフェースブロック520は、マイクロプロセッサ情報信号526を介してマイクロプロセッサブロック524に結合される。マイクロプロセッサ情報信号526は、アドレスバス、データバスおよび制御信号から構成される。
【0051】
図示されるマイクロプロセッサブロック524は、マイクロプロセッサコントローラブロック528、マイクロプロセッサ格納ブロック530、マイクロプロセッサROMブロック534に結合され、そして、マイクロプロセッサ格納ブロック530およびマイクロプロセッサROMブロック534に格納されたプログラム命令を実行することによって、コントローラ506内の図10に示すさまざまな機能ブロックの動作を指示する役割を果たす。マイクロプロセッサブロック524は、適切な時点にマイクロプロセッサROMブロック534からのプログラム命令(またはコード)を実行し得る。なお、マイクロプロセッサROMブロック534は不揮発性格納領域である。一方で、マイクロプロセッサ格納ブロック530は、揮発性、つまり読み出しおよび書き込みメモリ(RAM)、もしくは不揮発性、つまりEEPROM型のメモリ記憶装置のいずれかであり得る。マイクロプロセッサブロック524によって実行された命令を集合的にプログラムコードと呼ぶが、これらは本発明のシステムの動作の開始に先立つある時点で格納ブロック530に格納される。始めに、かつ、マイクロプロセッサ格納ロケーション530からのプログラムコードの実行に先立って、プログラムコードはメモリユニット508内に格納され、その後、信号538を介して格納ブロック530にダウンロードされ得る。この初期化の間に、マイクロプロセッサブロック524はROMブロック534からの命令を実行し得る。
【0052】
コントローラ506は、マイクロプロセッサの指示の下、メモリユニットに情報を提供するまたはメモリユニットから情報を受け取るためにマイクロプロセッサ情報信号526を介してマイクロプロセッサブロック524に結合されたフラッシュコントローラブロック532をさらに含む。データ等の情報は、フラッシュコントローラブロック532からマイクロプロセッサ信号526を介してバッファRAMブロック522に提供されて、そこに格納され得る。(単に一時的な格納であってもよい。)同様に、マイクロプロセッサ信号526を介して、データはフラッシュコントローラブロック532によってバッファRAMブロック522から取り出され得る。
【0053】
ECC論理ブロック540は、信号542を介してバッファRAMブロック522に結合され、そして、マイクロプロセッサ信号526を介してマイクロプロセッサブロック524にさらに結合される。ECC論理ブロック540は、通常エラーコーディング機能およびエラー訂正機能を実行するための回路機構を含む。さまざまなECC装置およびアルゴリズムが市販されており、ECC論理ブロック540に要求される機能を実行するために用いられ得ることが当業者によって理解されるべきである。要するに、これらの機能は、あらゆる集中的な目的のために多項式から独自に生成されたコードを伝送中のデータに添付することを含み、データが受け取られた場合には、同じ多項式を用いて、データを破壊し得る所定の数のエラーを検出し、かつ、潜在的に訂正するための受け取られたデータから別のコードを生成する。ECC論理ブロック540は、メモリユニット508に格納されたデータまたはホスト502から受け取られたデータについて、エラー検出動作および/またはエラー訂正動作を行う。
【0054】
スペースマネジャーブロック544は、1ブロックの情報を格納するための1つのフラッシュメモリデバイス内に、次の使用されていない(またはフリーの)格納ブロックを見つけるために、好適な装置およびアルゴリズムを用いる。これについては、他の図面を参照して本明細書中でさらに説明する。既に説明したように、1つのフラッシュメモリデバイス内の1ブロックのアドレスをPBAと呼ぶが、PBAは、ホストから受け取られたLBAについての翻訳を実行することによって、スペースマネジャーによって決定される。この翻訳を達成するために、さまざまな装置および方法が使用され得る。このようなスキームの一例が、”Flash Memory Mass Storage Architecture Incorporating Wear Leveling Technique Without Using CAM Cells”という名称の米国特許第5,485,595号に開示されており、この文献の明細書を本明細書中で参考として援
用する。他のLBAからPBAへの翻訳方法および装置を、本発明の範囲および精神から逸れることなく同様に用い得る。
【0055】
スペースマネジャーブロック544はSPM RAMブロック548およびSPM制御ブロック546を含み、SPM RAMブロック548およびSPM制御ブロック546は結合されている。SPM RAMブロック548は、SPM制御ブロック546の制御下で、LBA−PBAマッピング情報(あるいは、本明細書中では翻訳テーブル、マッピングテーブル、マッピング情報、またはテーブルと呼ぶ)を格納する。あるいは、SPM
RAMブロック548は、RAMアレイ100について図3に示すように、コントローラの外部に位置し得る。
【0056】
動作において、ホスト502は、例えばコントローラ506を介した読み出し動作または書き込み動作の実行の間に、メモリユニット508に情報を書き込み、かつ、メモリユニット508から情報を読み出す。それを行う際に、ホスト502は、ホスト信号504を介してコントローラ506にLBAを提供する。LBAはホストインターフェースブロック520によって受け取られる。マイクロプロセッサブロック524の指示の下、LBAは最終的にはスペースマネジャーブロック544に提供されて、PBAに翻訳され、そしてそこに格納される。これについては、後でさらに詳細に説明する。
【0057】
マイクロプロセッサブロック524の指示下で、データおよび他の情報は、フラッシュコントローラブロック532を介してフラッシュメモリデバイス510〜512のうちの1つにある、PBAによって識別される格納領域に書き込まれるか、または格納領域から読み出される。既に説明したように、フラッシュメモリデバイス内に格納された情報は、まず消去しなければ新たな情報によって上書きされ得ない。一方で、(常に書き込みに先行する)1ブロックの情報の消去は、時間と電力を大幅に消費する手段である。これは時々、書き込み前消去動作と呼ばれる。好適な実施形態は、フラッシュメモリ内のPBAロケーションからメモリユニット508内の未使用のPBAロケーションに再び書き込まれている、ブロック内の、情報のセクタ(または多重セクタ)を連続して、しかし、効率的に移動することによりこのような動作を除去し、そうすることにより、頻繁な消去動作を除去する。1ブロックの情報は、16個または32個のセクタ等の、1を超える数のセクタから構成され得る。1ブロックの情報は、情報の別個に消去可能なユニットになるようにさらに規定される。過去、従来技術のシステムは、フラッシュメモリデバイス内のフリーの(または未使用の)ロケーション内に既に書き込まれている、フラッシュメモリデバイス内に格納されたブロックを移動させる。しかし、このようなシステムは、そのブロック内の1セクタの情報が再び書き込まれる場合でさえ、ブロック全体を移動させた。換言すると、ブロック内のセクタの合計数よりも少ない数のセクタが再び書き込まれている場合には、ブロック全体の内容を移動するのに時間が無駄であるのに加えて、フラッシュメモリ内の記憶容量も無駄になる。本発明の好適な実施形態は、本明細書中で説明するように、1ブロックの情報よりも少ない数の「移動」を可能にすることにより、既に書き込まれたセクタの移動動作の数を減らして、結果的に消去動作の数を減らす。
【0058】
図10を参照すると、SPM RAMブロック548が、書き込み動作が行われる毎に変更され得るテーブルを維持することによって、LBA−PBAマッピング情報およびメモリユニット508に格納されている各ブロックに関する他の情報を維持することに留意することは重要である。加えて、このマッピング情報は、フラッシュメモリデバイス内における情報の(ブロック内の)セクタの実際のロケーションを提供する。さらに明らかなように、システムへの電力が妨害または終了される場合に、マッピング情報の損失を防ぐために、SPM RAMブロック548に格納されたマッピングテーブル内の情報の少なくとも一部分が、メモリユニット508に「シャドウイング(shadowed)される」(またはコピーされる)。これは、大部分に、マッピング情報を維持するために揮発性
メモリを使用することに起因する。これに関して、システムへの電力が回復された場合、マッピング情報の、メモリユニット508に格納された部分はSPM RAMブロック548に転送される。
【0059】
SPM RAMブロック548は、あるいは、フラッシュまたはEEPROMメモリアーキテクチャの形態等の不揮発性メモリであってもよいことに留意されたい。この場合、不揮発性メモリに格納されたマッピング情報は停電の間も正確に維持されるので、マッピングテーブルは不揮発性メモリ内に格納されることにより、「シャドウイング(shadowing)」の必要が除去される。
【0060】
1つ以上のセクタがフラッシュメモリのある領域から別の領域へと移動されている場合、本発明の好適な実施形態は、まずセクタを、それらがフラッシュメモリデバイス、つまり、510〜512内に格納されているロケーションから、バッファRAMブロック522へと移動させ、そこに一時的に格納する。移動されたセクタは次にバッファRAMブロック522から1つのフラッシュメモリデバイス内のフリーの領域に移動される。ECC論理ブロック540によって生成されたECCコードは、上で説明したように、他の情報のように、データおよびフラグフィールドに対応するLBA等のデータと共にフラッシュメモデバイス510〜512内にも格納される。
【0061】
図11〜図21は、メモリユニット508内のブロック(およびブロック内のセクタ)の識別およびロケーションに関するLBA−PBAマッピング情報を格納するように構成されたSPM RAMブロック548内のテーブル700の状態の例を示す。これらの図面の全てにおいて、テーブル700は示され、列および行からなるアレイを含み、列は、仮想物理アドレスロケーションまたはVPBAブロックアドレスロケーション702、移動仮想物理ブロックアドレスロケーションまたはMVPBAブロックアドレスロケーション704、移動フラグロケーション706、使用中/フリーフラグロケーション708、旧/新フラグロケーション710、欠陥フラグロケーション712、およびセクタ移動ステータスロケーション714を含む。
【0062】
テーブルの行は、PBA/LBA行716および718〜728を含み、各行は、テーブル700内のアドレスされている情報に基づくLBAまたはPBAのいずれかであり得る行番号を有する。例えば、行716は行番号「00」が割り当てられているように示され、LBA「00」に関するPBA情報がテーブル700から取り出されている場合、次にLBA「00」は行716におけるSPM RAMブロック548においてアドレスされ得、730内に位置する関連するPBAを得ることができる。一方で、フラグフィールド706〜712等の、あるブロックに関するステータス情報がアクセスされている場合、「00」、「10」、「20」、「30」、「40」、「50」、「N−1」等の、行716〜728の行番号は、LBAと反対の、PBAの値を示す。さらに、テーブル700の各行は、各エントリがブロックに関する情報を含む、ブロックエントリとして考慮され得る。さらに、テーブル700の各行は、LBAによってアドレスされ得る。
【0063】
好適な実施形態において、各ブロックは16個のセクタを含むように示される。これは、16個のセクタからなるブロック全体を選択的に消去する能力に起因するものである。(これが理由で、ブロックのサイズを「消去ブロックサイズ」と呼ぶことがある。)図11〜図21に示すように、消去ブロックサイズが16セクタである場合、各ブロックエントリ(または行)は16個のセクタに関する情報を含む。従って行716は、LBA「00」〜LBA「15」(または16進法でLBA「00」〜LBA「0F」)によってアドレスされたブロックに関する情報を含む。次の行、つまり行718は、LBA「16」(または16進法で「10」)〜LBA「31」(または16進法で「1F」)によってアドレスされたブロックに関する情報を含む。同じことが各ブロックのPBAについても
当てはまる。
【0064】
しかし、他のブロックサイズを同様に用いてもよいことに留意されたい。例えば、ブロックは32個のセクタを含み、従って消去ブロックサイズ32を含み得る。後者の状況において、716、718、720...等の各ブロックエントリまたは行は、32個のセクタに関する情報を含み、ここで、各ブロックは16個のセクタからなる。(16セクタブロックサイズ以外のサイズが同様に使用され得る。)
テーブル700のVPBAブロックアドレスロケーション702は、通常、特定のLBA値に対応するPBA値を示す情報を格納する。MVPBAブロックアドレスロケーション704は、メモリユニット508内で、ブロック(またはそのセクタ部分)が移動され得た場所のロケーションを識別するPBA値を示す情報を格納する。移動フラグロケーション706は、アクセスされているブロックが、MVPBAブロックアドレスロケーション704内の値によってPBAが標識されたロケーションに移動し得た任意のセクタを有するかどうかを示す値を格納する。(704内のPBA値は、残りのブロックアドレス情報が位置し得るVPBAブロックアドレス702に示された値とは異なる。)使用中/新しいフラグロケーション708が情報を格納して、アクセスされているブロックがフリーのブロックであるかどうか、つまりブロックが最後に消去されたのでデータが格納されていないことを示す。旧/新フラグロケーション710は、ブロックが使用され、そして再び使用され、従って古いかどうかについて、アクセスされているブロックのステータスを示す情報を格納する。欠陥フラグロケーション712は、ブロックが欠陥であるかどうかに関する情報を格納する。ブロックが欠陥であると表される場合、設定されている欠陥フラグロケーション712の値によって示されるように、欠陥ブロックはこれ以上使用することができない。フラグ708〜712は、図1について図示され、かつ、説明されたフラグ110〜114と同様である。
【0065】
セクタ移動ステータスロケーション714は16ビットからなり(ロケーション714はブロック内の各セクタに対して1ビットを含むので、異なるサイズのブロックについては、ロケーション714内に異なる数のビットが要求される)、各ビットは、セクタがメモリユニット508内の別のブロックに移動したかどうかについてブロック内のセクタのステータスを示す。メモリユニット508内の移動されたブロックロケーションは、VPBAブロックアドレスロケーション702内のPBA値ではなくPBAによって識別される。異なって述べたように、ブロック内のセクタが移動したかどうかのステータスは、714内のビットの各々によって示されるように、VPBAブロックアドレスロケーション702またはMBPBAブロックアドレスロケーション704のいずれ一方が、セクタに関する最も最近のPBAロケーションを維持するのかを示す。
【0066】
さらに図11を参照すると、例を用いて、LBA「0」が書き込まれている場合の、SPM RAMブロック548(図10)に格納されたテーブル700のステータスの例が示される。既に述べたように、本明細書中で提示する図面において、16個のセクタ(10進法で0〜15、または16進法で0〜10)からなるブロックサイズは、例を説明するためのみに使用される。同様に、N個のブロック(従ってN個のLBA)が使用され、0〜N−1までの番号が与えられる。ブロックサイズおよびブロックの数は、異なるアプリケーションについて変化し得、かつ、使用されている別個のフラッシュメモリデバイス(510〜512等)の各々のメモリ容量に依存し得る設計上の選択事項である。さらに、これらの実施例において512バイトの好適なセクタサイズが使用されるが、本発明の範囲および精神から逸れることなく他のセクタサイズを使用し得る。
【0067】
フラッシュメモリデバイス510〜512(図10)内の全てのブロックが消去され、従ってフリーになった場合には、初期化、または、システムパワーアップの前にLBA「0」への書き込み動作が行われると仮定する。スペースマネジャーブロック548は、次
のフリーのPBAロケーションが「00」であると判定しようとする。従って「00」は、LBA行番号「00」によってテーブル700に示されるように、LBA「0」に関する情報が維持されている、行716のVPBAブロックアドレス702内の730へ書き込まれる。LBA0ブロック内のセクタのいずれも移動する必要がないので、ロケーション732として示す、行716についてのMVPBAブロックアドレス704は、初期値などの任意の値を含み得る。(図11において、「XX」は「注意する必要のない」状態(”don’t care” state)を示すものとして図示される。)
734の値は論理状態「0」にあり、LBA「0」ブロックがいかなる移動されたセクタも含まないことを示す。行716の使用されたフラグ708列内のロケーション736は、PBA「0」ブロックが使用中であることを示す論理状態「1」に設定される。ロケーション738の状態は、行716について古いフラグ710を示しているが、「0」に設定されて、PBA「0」ブロックがまだ「古く」はないことを示す。ロケーション740は、PBA「0」ブロックが欠陥ではないことを示す論理状態「0」を維持し、そして、移動ステータスロケーション714における全てのビットが論理状態「0」にあって、LBA「0」ブロック〜LBA「15」ブロック内のセクタのどれも移動していないことを示す。
【0068】
図11において、テーブル700の、全ての残りの行716〜728について、移動フラグロケーション706、使用されているフラグロケーション708、古いフラグロケーション710、欠陥フラグロケーション712、および移動ステータスロケーション714等の、行716内のLBA「0」についてのステータス情報は、論理状態「0」にある。システムのパワーアップ時および/または任意のブロックの消去後に、消去されたブロックについてのエントリは、テーブル700において、パワーアップ時の全てのブロックであるが、これらは全て論理状態「0」に設定される。
【0069】
このとき、LBA「0」ブロックが配置され得るメモリユニット508内のフラッシュメモリデバイスのうちの1つについての内容の説明は、図11のテーブル700に示すマッピング情報のより良い理解のために提示される。
【0070】
ここで図22を参照すると、(図11に示すように)テーブル700の状態に従ってフラッシュメモリデバイス510の内容の例を示す。LBA「0」は、メモリユニット508内で(図10の)コントローラ506によってPBA「0」において識別されるが、これはホスト識別ブロック(host−identified block)が書き込まれたロケーションである。セクタデータロケーション752内のデータを含むPBA0行750を図22に示す。PBA0行750のECCロケーション754にECCコードがさらに格納される。このECCコードは、既に説明したように、書き込まれているデータに関連するECC論理ブロック540によって生成される。PBA0行750のフラグフィールド756は、書き込まれているブロックのセクタデータに対応する、移動の、使用中、古い、そして欠陥のフラグ情報を含む。本実施例において、フラグフィールド756内に、「使用された」フラグのみが設定され、他のフラグが設定されない、従ってフラグフィールド756は、PBA「0」は「使用された」が、「移動」しておらず、「古く」なく、または「欠陥」のないことを示す「0100」の論理状態を維持する。
【0071】
PBA0行750は、LBAアドレスロケーション758を維持するための格納ロケーションをさらに含み、PBA「0」に対応するLBA番号は、本実施例では「0」である。当面、この例に関連しない間は、LAB「0」の残りのPBAロケーションは、フラッシュメモリデバイス510内の行750に続く次の15行に格納される。
【0072】
本明細書中に提供された本実施例の説明から、フラッシュメモリデバイス510のPBA行内の情報が、特に、フラッシュメモリの各PBA行(750、762、764...
)内に「移動」フラグが存在することに起因して、データおよびステータス情報に関連する任意の移動を含むLBA「0」ブロック内のデータおよびステータス情報に関するデータおよびステータス情報を識別するのに十分であることが理解される。にもかかわらず、それとは異なり、別のフィールドが、フラッシュ内の各LBAロケーションの第1のPBA行に追加され得、テーブル700内の対応する行の移動ステータスロケーション714内のビットのステータスを複製する。このフィールドは、図22に示すセクタステータスロケーション760内に、行750および780等の各LBAブロックの第1のPBA行内に含まれるように自由選択的に格納される。ロケーション760内に維持される情報は、各PBA行のフラグフィールド756内の「移動」フラグのステータスをチェックすることにより発見され得るが、ロケーション760を用いることの明白な利点は、読み出し動作がより少ないために、システムの始動(または電源オン)時に、SPM RAMブロック548内のテーブル700の内容は、より速く更新され得る。(テーブル700はSPM RAMブロック548内に維持され、SPM RAMブロック548は、システムがパワーダウンし、そして不揮発性メモリ、つまりメモリユニット508からのパワーアップ時に更新される必要のある場合にその内容が失われれる揮発性メモリであることを思い出されたい。)
つまり、全てのPBA行(好適な実施例では合計16行)を読み出して、パワーアップ時にテーブル700の各LBAエントリを更新するよりも、各LBAの第1のPBA行のみがフラッシュメモリから読み出され、そして、SPM RAM548に格納されることが必要であり、それにより、不必要な読み出し動作を除去することにより時間を節約する。一方で、LBAにつき16ビットのセクタステータス情報を維持するために、明らかにより多くのメモリ容量が利用される。
【0073】
ロケーション760が使用される上記実施例において、セクタステータスロケーション760の値は全て「0」(または16進法で「0000」)である。
【0074】
フラッシュメモリデバイス510において、行750、762、764、768...の各々は、PBAロケーションであり、各行は、PBA行番号を有し、そして、特定のLBAによってアドレスされたブロック内のセクタについてのデータおよび他の情報(データおよび他の情報は行750について上で説明した通りである)を格納するものである。さらに、16個の順次的PBA行のそれぞれが1ブロックの情報を示す。つまり、PBA行750、762、および764〜768は、16行のPBA行を示すことが意図されるが、(図11のテーブル700内の行716として示される)LBA0に対応し、そして、PBA行の各々がブロック内のセクタに関する情報を維持する。情報の次のブロックは、マッピング情報がテーブル700の行718に含まれ、そして、フラッシュメモリデバイス510等において、(16進法で)「10」(または10進法で「16」)から開始して(16進法で)「1F」(または「31」)で終了するロケーション内に格納された、LBA「10」(16進法)によってアドレスされたブロックに関する。
【0075】
上記例を続けて説明すると、図12は、LBA0がホストによって再び書き込まれている場合のテーブル700の状態の一例を示す。LBA0は既に書き込まれており、かつ、始めに消去されずに再び書き込まれるので、メモリユニット508内の別のフリーのロケーションは(ここで、それぞれセクタを含むブロックが、例えば、デバイス510に続く次のフラッシュメモリデバイスが、フラッシュメモリデバイス510が省かれたPBAアドレスされたブロックをピックアップし、このことの一例として、フラッシュメモリデバイス510が0〜FF(16進法)のPBAを含み、そして、512であり得る次のフラッシュメモリデバイスが100〜1FF(16進法)を含み得るように、それぞれのPBAに基づいて、メモリユニット508のフラッシュメモリデバイスの各々を介して、順次、かつ連続的に組織されることに留意することが役に立ち得る)、新たな情報を格納するためにスペースマネジャー544によって配置される。このフリーのロケーションは、(
16進法で)PBA「10」(または10進法で16)となるように示される。PBA「10」が現在は「使用中」であることを示すように、ロケーション742内の使用されたフラグが設定されている(本発明から逸れることなく反対の極性が使用され得るが、好適な実施形態において、論理状態「1」である場合にフラグが設定される)ことを除いて、行718において、LBA「10」についてのエントリは、図11に示されるように、同じままである。
【0076】
行716内のエントリは、MVPBAブロックアドレスロケーション732内に「10」を示すように変更され、MVPBAブロックアドレスロケーション732は、LBA「00」ブロックについての移動した部分のPBAアドレスを提供する。ロケーション734内の移動フラグは論理状態「1」に設定されて、少なくとも一部分(1つ以上のセクタ)のLBA「00」ブロックが、テーブル700のロケーション730内に示されるPBAロケーションとは異なるPBAロケーションに移動したことを示す。最終的に、行716内の移動ステータスロケーション714のビットは、(2進法で)「1000000000000000」(16進法で「8000」)に設定され、ブロックLBA「00」内の移動したセクタのステータスを反映する。つまり、この例において、「8000」は、LBA「00」ブロック内の第1のセクタまたはセクタ「0」が、異なるPBAロケーションに移動したことを示す。
【0077】
ここで図22を参照すると、図12におけるテーブル700の状態は、LBA「0」ブロックの移動されたセクタがここで行780のPBA「10」に書き込まれるという点で、フラッシュメモリデバイス510の内容に影響する。行780は移動されたセクタに関するデータを含む。移動されたセクタは512バイトのサイズを有する。移動されたセクタ情報について、行780はECCコード、(図12の)テーブル700のフラグロケーション734〜740内の値のコピー、および行780内のデータがLBA「00」に属することを示すLBA「00」とをさらに含み、そして、LBA「0」ブロック内の個々のセクタの各々についての移動ステータスをさらに含み得る。
【0078】
図面には特定的には示さないが、PBA行750のロケーション756内の移動フラグは、対応するブロックの少なくとも一部分が移動されたことを示すように設定される。行716の移動ステータスロケーション714内に格納された値は(図12)、16進法で「8000」であるが、これは行750のロケーション760内にも格納される。既に述べたように、このことは、PBA「0」のセクタ「0」のみが「移動された」とマークされ、そして、新たなブロックLBA「0」がフラッシュメモリ内のPBA「10」に書き込まれたことを示す。図22のさらに詳細な説明がなくても、同様に以下の例がフラッシュメモリデバイス510の内容に影響することを理解されたい。
【0079】
図13は、LBA「00」へのさらに別の書き込み動作が実行される場合のテーブル700のステータスを示す。行716内の値(またはエントリ)は、ロケーション732内の値が(16進法で)「20」に変化して、ブロックLBA「00」の移動された部分がこのとき(図12の「10」ではなくて)PBAロケーション「20」に配置されることを示す以外は、図12と同じままである。図12のように、移動ステータスロケーション714内の値「8000」は、(PBA「00」を有する)第1のセクタがブロックの移動された部分であることを示す。
【0080】
行718は、LBA「10」ブロックがこの時点では古く、そして、消去されるまではこれ以上使用できないことを示すように変更される。これは、論理状態「1」に設定されているロケーション744内の値によって示される。LBA「20」についてのエントリ、つまり行720は、ロケーション746が、使用中であるPBA「20」ブロックの状態を反映する論理状態「1」に設定されるように変更される点を除いては、変わらないま
まである。図11および図12のように、上で説明せず、かつ、図13における特定の論理状態を有するものとして示さなかった、図13のテーブル700の残り全ての値は、全て変わらないままである(フラグは全て論理状態「0」に設定される)ことを理解されたい。
【0081】
さらに上の例について続けると、図14は、LBA「0」に対するさらに別の書き込みが行われる場合のテーブル700の状態を示す。比較を容易にするために、図14に示す値で、図13に示した状態に対して異なる論理状態にあるものをを円で囲んだ。行716において、ロケーション732内に示す、PBA「30」として示された、新たに移動されたロケーションを除いては、全て同じままである。PBA「30」は、スペースマネジャー544によって見つけられた次の空いたロケーションであった。既に述べたように、この値は、LBA「0」のブロックの部分がこの時にはPBA「30」にある、つまり、そのブロック内の、(「8000」である行716の714内の値によって示される)第1のセクタがフラッシュメモリデバイス510内のPBA「30」に移動したことを示す。
【0082】
行718は消去されるまでは同じままである。ロケーション742および744内のフラグは、論理状態「0」に設定される。行720も、その古いフラグ710列内の値が、PBA「20」のブロックも古く、まず消去しなければ使用できないことを示すように、「1」に変更されていることを除いては、変わらないままである。行722は、その使用されたフラグ708列内の値は、論理状態「1」に変化して、LBA「30」のブロックが現在使用中であることを示すこと以外は、同じままである。
【0083】
図15は、テーブル700の状態の別の例であり、テーブル700は、テーブルが図13に示す状態にあり、ホストのLBA「5」への書き込みがそれに続くものと仮定されたテーブル700の状態を示す。再び、図13から図15へと、1回きりの変化である、テーブル700内の値への変化を、変化した値を円で囲むことによって示す。
【0084】
LBA「5」へ書き込みを行う場合、行716、718、および720等のLBAエントリはLBA「00」、LBA「10」、およびLBA「20」等についてのみであり、従って、LBA「5」エントリを反映しないことを理解するべきである。LBA行エントリの各々は、好適な実施形態において16個のセクタである各ブロックを有する1ブロックの情報に関することを思い出されたい。この理由のために、LBA「5」は実際、行716内の第5のセクタをアドレスする。PBA「20」はLBA「0」を格納するために使用されたので、LBA「5」に対応するPBA「20」内のセクタのみがまだ書き込まれておらず、「フリー」である。従って、LBA「5」についてのデータは、セクタ「5」内のPBA「20」内に格納される。行716の移動ステータスロケーション714は、論理状態「8400」(16進数)に変更される。これは、LBA「0」内の第1および第5のセクタのロケーションが、いずれも、フラッシュメモリデバイス510内のPBA「20」において識別されることを反映している。図15のテーブル700における残りの値は、図13に示す値と同じままである。
【0085】
図16〜図18は、テーブル700の状態が、パワーアップまたはメモリユニット508によるブロックの消去のいずれかの後にどのようになり得るかについての、さらに別の例を示す。図16および図17において、図11および図12を参照して説明したのと同じ書き込み動作が実行される。図16および図17におけるテーブル700の状態は、それぞれ図11および図12における状態と類似している。(後者2つの図面は読者の便宜のためにのみ図16および図17として再び描いた。)要するに、図16は、LBA「0」への書き込み後のテーブル700の状態を示し、図17は、LBA「0」への別の書き込み後のテーブル700の状態を示す。
【0086】
図18は図17の後にピックアップを行い、そして、ホストがLBA「5」に書き込みを行った後にテーブル700の状態を示す。図18に示すように、LBA「5」はPBA「10」に移動される。ここで、LBA「0」もまたPBA「10」に配置される。この目的のために、MBPBAブロックアドレスロケーション732は、行716内の「10」に設定され、そして、移動フラグは同じ行内のロケーション734に設定される。さらに、行716における移動ステータスロケーション714の状態は、LBA「0」およびLBA「5」が移動したこと、またはLBA「00」内の第1および第5のセクタが移動したことを示す「8400」(16進法)に設定される。これらの2つのセクタは、この時フラッシュメモリデバイス510のPBA「10」ロケーション内に配置されるので、これらのセクタの各々についての移動フラグは、フラッシュメモリデバイス510内にも設定される。残りのフリーのセクタはそのブロック内で利用可能であるので、LBA「5」がPBA「10」に移動したことを理解されたい。つまり、使用されているそのブロックのLBA「0」であってさえ、同じブロックの15個の他のセクタが利用可能であった。なお、LBA「5」への書き込み後、第5のセクタは使用中である。
【0087】
図18の例を続けて説明すると、図19に、ホストがさらに別の時間をLBA「0」に書き込んだ後のテーブル700の状態を示す。テーブルによると、さらに別のフリーのPBAロケーション「20」が、LBA「5」およびLBA「0」が移動した場所に見つかる。第1に、LBA「5」はロケーションPBA「10」、ロケーションPBA「20」へと移動し、次に、ロケーションLBA「0」の新たなブロックがPBA「20」に書き込まれる。前に説明したように、まず、ブロックの移動が行われる(例えば、ここではLBA「5」のブロックが移動する)任意の時間に、現在存在しているフラッシュメモリ内のロケーションからコントローラ506内の一時的なロケーションに、つまりバッファRAMブロック522と共に、移動する。そして次に、そこからフラッシュメモリデバイス内の新たなロケーションへと転送される。
【0088】
行720のロケーション746内の使用されたフラグは、フラッシュメモリ内のPBA「20」ロケーションの使用を反映するように設定され、ロケーション744内の古いフラグは、消去されるまで、PBA「10」ロケーションの使用を破棄するように設定される。再び、フラッシュメモリにおいて、これらのフラグの状態は、LBA「0」およびLBA「5」両方のセクタについての移動フラグの状態と同様に複製される。
【0089】
図20は、図18に示すテーブル700の状態からピックアップし、そして、ホストがLBA「5」に書き込みを行った後にテーブル700どのようであり得るかについて、さらに別の状態を示す。この場合、LBA「0」のブロックは、現在格納されている、フラッシュメモリデバイス510内のロケーションPBA「10」から、フラッシュメモリのロケーションPBA「20」へとまず移動する。その後、ホストによってLBA「5」に書き込まれている新たなブロックが、フラッシュメモリのロケーションPBA「20」に書き込まれる。従って、テーブル700およびフラッシュメモリデバイス510の対応するロケーション両方におけるフラグは、これらの更新されたロケーションを反映するように設定される。
【0090】
図21はまた、図18に示すテーブル700の状態からピックアップし、そして、ホストがLBA「7」に書き込みを行った後にテーブル700がどのようであり得るかについての状態を示す。この場合、そのロケーションはまだ使用されていないので、新たなブロックが単にフラッシュメモリのロケーションPBA「10」に書き込まれる。さらに、行716内の移動ステータスロケーション714の3つのビットは、LBA「0」、LBA「5」、LBA「7」がフラッシュメモリ内の別のPBAロケーションに移動したことを示すように設定される。ロケーション732は、これら3つのブロックが格納されたロケ
ーションがPBA「10」であることを示す。
【0091】
これまでに示された議論から理解され得るように、ある時点で、1ブロック内で移動中のセクタの数が非効率的な動作を助長する。従って、ユーザが、1ブロック内で、該ブロックが「古い」と示され(古いフラグが設定され)、ブロックがもはや使用されなくなる前に移動され得るセクタの数に関する閾値を該ブロックが消去されるまで設定する必要が生じる。この閾値は、例えば、1ブロック内のセクタ数の半分に設定されてもよい。これは、以下のように示される。16セクタを有する1つのブロックの場合には、8つのセクタが別のブロックに移動され、「本来の」ブロックと「移動された」ブロック(移動されたセクタが存在するブロック)とが、同じPBAブロックに組合わせられる。組合わせられたPBAブロックは、全体で新しいブロックに格納されてもよく、あるいは、「本来の」ブロックが、「移動された」ブロックと組合わせられ、「移動された」ブロック内に移動してもよい。後者の場合には、「本来の」ブロックは、次に、その消去のために「古い」とマークされる。組合わせられたPBAブロックが新しいブロックに格納される場合には、「本来の」ブロックおよび「移動された」ブロックの両方が、「古い」とマークされる。
【0092】
図23は、書込み動作中に行われるステップの幾つかの概要を説明する概要フローチャートを示す。これは、そのような動作中に生じる事象の幾つかのシーケンスを示すことを意図し、本発明の好適な実施形態に使用される方法または装置の包括的提示では決してない。
【0093】
図23に概要が説明されるようなステップは、マイクロプロセッサブロック524がシステムの動作中にプログラムコード(またはファームウェア)を実行する際に、マイクロプロセッサブロック524の指示の下で行われる。ホストがLBA Mのブロックに書込みを行うと(ステップ800)、ステップ802において、スペースマネージャブロック544が、SPM RAM ブロック548のテーブル700における対応する使用中フラグの状態を調べることによって、LBA Mが使用中であるか否かを調べる。使用中でなければ、ステップ804において、メモリユニット508中の次のフリーPBAブロックに関する探索が行われる。フリーブロックが捜し出されなければ、「エラー」状態が808において検出される。しかし、フリーPBAが捜し出されると、ステップ806において、その使用中フラグが、テーブル700およびフラッシュメモリにおいてマークされる(または設定される)。ステップ810において、フリーブロックのPBAが、テーブル700中の対応するLBA行のVPBAブロックアドレス702のロケーションに書込まれる。
【0094】
ステップ802に戻って、LBAMブロックが使用中である場合には、次のフリーPBAブロックに関する探索が、やはりステップ812において行われ、そのようなフリーブロックが見つからない場合には、814において、「エラー」状態が示される。一方、フリーPBAロケーションが見つかった場合には、ステップ816において、そのPBAが、テーブル700およびフラッシュメモリにおいて使用中とマークされる。次に、ステップ818において、ブロックの状態が、移動フラグを設定すること、およびテーブル700の移動ステータスロケーション714において適切なビットを設定することによって移動されたことを示す。ブロックが移動された新しいロケーションもまた、上記のようにテーブル700に示される。
【0095】
最後に、ステップ818およびステップ810の後に、データおよび全ての対応するステータス情報、ECCコード、およびLBAが、フラッシュメモリ内のPBAロケーションに書込まれる。
【0096】
上記のように、1ブロック中のかなりの部分が移動されたセクタを有する場合には(好適な実施形態では、これは、16セクタの内の8つ)、このブロックは、対応する「古い」フラグを設定することによって「古い」であると示される。周期的に、「古い」フラグが設定されたブロックは、消去され、次に、再使用(あるいは、再プログラミングまたは再書込み)され得る。
【0097】
理解できるように、図10〜図23の実施形態の利点は、ブロックが、ホストによってアクセスされる度毎に消去される必要がないことである。なぜなら、例えば、ブロックの何れかの部分(またはセクタ)が再書込みされている最中であれば、フラッシュメモリ装置中でそのブロックを消去する、またはそのブロック全体をフラッシュ内のフリー領域に移動させるのではなく、再書込み中の部分のみを、フラッシュ中の他の場所(すなわち、MVPAブロックアドレスによって識別されるフリーロケーション)に移動させる必要があるからである。これに関連して、時間のかかる消去周期が、後まで回避され、1ブロック全体を読取り、そのブロック全体を移動させる際に時間が浪費されない。
【0098】
代替の実施形態では、フラッシュメモリに格納される各セクタに関係する情報がより少ないかもしれない。同様に、SPM RAMブロック548(図10)中のテーブル700が、以下に説明されるように、より少ない情報を維持する。
【0099】
図24は、フラッシュメモリチップ(フラッシュメモリ装置510等)が格納し得る情報例を示す。図24には、N個のブロック(ブロック1000、1002、...、1004)が示され、各ブロックは、最大m個のセクタを有する。ブロック1000を例にとると、ブロック1000中のセクタ1006、1008、...、1010の各々が、データフィールド1052およびECCフィールド1014を含む。好適な実施形態では、データフィールド1052は、512バイトを包含し、ECCフィールド1014は、4バイトの情報を包含する(ただし、データおよびECCの両方の他の大きさが、本発明の精神から逸脱することなく用いられ得る)。
【0100】
各ブロック中の第1のセクタ(例えば、ブロック1000のセクタ1006)が、さらに、ブロックが欠陥品であるか否かを示す欠陥フラグ1016を含む。好適な実施形態では、1ブロック中のセクタの何れかが欠陥品である場合には、以下にさらに説明されるように、そのブロック全体が欠陥品としてマークされる。
【0101】
1ブロック中の各セクタは、スペース領域1018をさらに含み得る。各ブロック中には、間もなくより詳しく説明されるように、フラッシュメモリユニット内でそのブロックを識別するためのLBA1020が包含される。しかし、図24においては、LBA1020が、ブロック1000の最後のセクタ1010内に位置するように示されているが、LBA1020は、代わりに、ブロック1000の他の何れかのセクタ内であって、さらにそれが配置されるセクタ内の任意の領域内に配置されてもよいことに留意することが重要である。例えば、LBA1020は、セクタ1008のスペース領域1022内に配置されてもよく、あるいは、データがブロック1000のセクタ1008に格納されるロケーションの直前である1024に配置されてもよい。ブロック1000に使用されるのと同じセクタ構成が、フラッシュメモリ装置内のブロック1002および1004等の残りのブロックにも使用される。
【0102】
同様に、欠陥フラグ1012のロケーションは、ブロック内のどこでもよい。例えば、欠陥フラグ1012は、1024または1022に二者択一的に格納されてもよい。しかし、ブロックにつきたった1つの欠陥フラグが格納される。本発明のある局面は、欠陥フラグが使用される方法に関係する。
【0103】
フラッシュメモリチップの製造中に、メモリ内の欠陥が、一般的に、チップ製造メーカーによって識別され、マークされる。これは、典型的には、欠陥ブロック内の所定のロケーションに事前定義されたパターン(バイト幅)を書込むことによって行われる。つまり、製造メーカーは、フラッシュチップを消去し、全て「1」等の値が、次に、上手く消去されたフラッシュチップ内の各メモリセルによって保有される。ブロック内のセクタまたはセルが欠陥品である場合には、製造メーカーは、欠陥ブロック(図24には不図示)内のどこかに配置される製造欠陥フラグを所定の値に設定する。この製造欠陥フラグは、欠陥フラグ1012とは異なり、そのロケーションは、製造メーカーによって決定され、設計選択によってではない。これらの製造メーカーによって識別される欠陥ブロックは、次に、システム動作中無視される(または使用されない)。つまり、スペースマネージャブロック544(図10)が、これらの欠陥ブロックを把握し、フラッシュメモリ装置内でフリーブロックを探索する際にそれらを使用しないことを理解している。
【0104】
フラッシュチップの製造中に検出される欠陥以外に、上に説明したように、摩耗によるチップの動作中に進行するさらなる欠陥が存在し得る。これらの欠陥は、時に、業界全体で「成長欠陥」(grown defect)と呼ばれ、フラッシュメモリ装置の使用が用いられるシステムによって考慮されなければならない。
【0105】
「成長欠陥」のケースは、システム動作の観点から説明される。本発明の好適な実施形態では、ブロック1000の消去後に、欠陥フラグ1012(図24)が、消去されたブロックが欠陥品であるか否かを示すようにプログラムされている。すなわち、消去されたブロック1000中のセルが上手く消去された場合には、欠陥フラグ1012が、ブロックが欠陥品でないことを示す、「55」(16進数)という1バイト幅の値等の事前定義された値に設定される。逆に、ブロックが上手く消去されなかった場合には、「00」等の「55」以外の値が、欠陥フラグ1012に書込まれる、あるいは、どのような値も書込まれず、消去後の欠陥フラグの状態(通常、消去状態は、全て「1」である(あるいは、16進数で「FF」である))が、維持される。しかし、後者の場合には、欠陥フラグの消去状態は、成功した消去と区別するために「55」以外の値でなければならない。
【0106】
欠陥フラグ1012の使用は、システムのパワーアップ後に特に注目される。スペースマネージャブロック544は、各ブロックの欠陥フラグを素早くスキャニングし、各ブロックの欠陥フラグ1012中の値「55」を捜すことによって欠陥品ではないブロックを後のために識別することによって、どのブロックが欠陥品であるかがわかる。ブロックがパワーアップ後に欠陥品ではなく、後に欠陥品になった場合には、その欠陥フラグは、それを示すように変更され、次にシステムがパワーアップされると、その欠陥ブロックが、スペースマネージャによって注目され、そのブロックのあらゆる使用が回避される。
【0107】
書込み動作中に、1つのブロックの1つ以上のセルの故障が生じた場合には、そのブロックは、先ず消去され、次に、欠陥ブロックの欠陥フラグ1012に「55」以外の値(「00」等)を書込むことによって欠陥品であるとマークされる。あるいは、欠陥ブロックの欠陥フラグ1012にいかなる値も書込まれない。
【0108】
これまでに記載されたような欠陥フラグを有することの利点の1つは、システムのパワーアップ中に、スペースマネージャブロック544(図10)が、欠陥品ではないブロックを素早く見つけることができることである。
【0109】
代替の実施形態では、図25に示されるように、フラッシュメモリ装置内の各ブロックのLBAが、同じブロックの異なる2つのセクタ内に格納される。例えば、ブロック1000が消去された後であって、その消去に続くブロック1000の第1の書込み動作中に、スペースマネージャブロック544が、ブロック1000またはその一部が自由に書込
まれることを決定する。ブロック1000に関連するLBAは、次に、ブロック1000の2つのロケーション1030および1020(それぞれセクタ1006および1010内にある)にプログラムされる。
【0110】
その後、システムへの電力が一時的に中断される度に、あるいは、パワーアップの際に、ロケーション1030および1020における2つのLBAが互いに比較され、それらが一致し、且つ欠陥フラグ1012が、ブロックが欠陥品ではないことを示すと、そのブロックは、スペースマネージャブロック544の指示の下で、情報記憶装置として使用され続ける。しかし、欠陥フラグ1012が、ブロックが欠陥品ではないが、2つのLBAが一致しないことを示すと、ブロック1000は、なお使用され続けるが、さらなる再使用の前に最初に消去される。後者の状況は、例えば、システムがブロック1000に書込み中であり、セクタ0で始まる最初の幾つかのセクタが書込まれたが、停電が生じ、その結果、情報がブロック1000の残りのセクタに書込まれなかった場合に生じ得る。この場合には、ロケーション1030および1020におけるLBA値はおそらく一致しない。なぜなら、ブロック1000のセクタm−1またはセクタ1010が、停電前に書込まれていなかったからである。電力が回復すると、完全に書込まれていないので、ブロック1000は、停電前と同じ状態で使用されるべきではない。従って、ロケーション1030および1020において2つのLBA値間の不一致が検出されると、コントローラ506(図10)が、再び使用される前にブロック1000を消去する。
【0111】
図24に示されるように、各ブロック毎にたった1つのLBAが使用される場合には、明らかに、各ブロック中の2つのLBAの比較は行われないが、欠陥品であるブロックの検出は、上記のように、欠陥フラグの使用によって維持される。さらに、LBAは、最後(すなわち、ブロックの全てのセクタが書込まれた後)に書込まれてもよい。LBAを最後に書込むことは、ブロックに上手く書込んだことの付加的指標である。
【0112】
本発明の別の局面を例示するために、図26は、左側に、フラッシュメモリ装置の幾つかのブロックの内容例(これは、図24に示される情報と同じである)を示し、右側に、図の左側にあるブロック情報に対応するテーブル700の内容例を示す。ブロックの内容を示す目的は、単に、テーブル700に関するブロックのLBA−PBAアドレッシング間の相関性を理解する際の読み手に対する便宜を図るためである。図26に示される例は、フラッシュメモリ中に格納される際のブロックのアドレスと、情報がSPM RAMブロック548に格納される場合と同じブロックのアドレスとの間のこの代替の実施形態のマッピングを例示するものである。テーブル700では、1列に、各行毎に、仮想PBAフィールド1036と、欠陥フラグ1012を含むフラグフィールド1038とが格納されて示されている。行1040、1042、1044、...、1050は、それぞれLBAに対応し、それぞれ「0」、「1」、「2」、...「Z」によってアドレッシングされる。各行毎の仮想PBAフィールド1036は、実際には、内部に格納された16のセクタを有するフラッシュメモリ内のブロックを指すLBAアドレスポインタを含む。この点では、仮想PBAが、16セクタのPBAとして機能する(セクタの数は、代替の実施形態では、16以外でもよい)。
【0113】
ホストが、例えばLBA05を読取るコマンドを送ると、図10におけるコントローラ506が、先ず、値「00」を得るために、値「05」の4つの最下位ビット(LSB)を生成する。次に、「00」をテーブル700の行アドレスとして用いて、図26の行1040がアドレッシングされる。ホストによって送られるLBA値の4つのLSBがマスクされる理由は、テーブル700の各行によって表される16のセクタが存在するからであることに留意されたい。16のセクタは、2値表記では4ビットに変換される2の4乗である。例えば、各行が32のセクタを表す場合には、ホストによって送られるLBAの5つのLSBがマスクされる。
【0114】
SPM RAMブロック548中の行1040がアドレッシングされると、行1040に関する仮想PBAフィールド1036の値(この場合「00」である)が取出され、「00」が次に、フラッシュメモリ装置内に格納されるブロックに対するポインタとして使用される。つまり、この例においては、ブロック0またはブロック1000(図26の左側)がアドレッシングされる。しかし、読取りが意図されたセクタに到達するためには、ホストによって送られたLBA値から最初にマスクされた4ビットが、ブロック1040内の6番目のセクタであるセクタ「5」(不図示)を具体的にアドレッシングするために使用される。セクタ5(不図示)のデータフィールド1052に格納されたデータは、次に、取出される、または読取られる。次に、同じセクタのECCフィールド1014が読取られる。
【0115】
LBAロケーション1020は、テーブル700の行1040の仮想PBAフィールド1036に格納されるのと同じアドレス値である値「00」を有するべきである。これは、スペースマネージャを更新するために、パワーアップルーチン間に、フラッシュメモリ装置においてブロック1000をブロック「00」として識別することを意図する。しかし、LBAロケーション1020は、上記のようにホストによって送られるLBA値を表さない。このような混乱を避けるために、ロケーション1020の値は、LBAアドレスではなく、「クラスタ」アドレスと呼ばれ得る。
【0116】
書込み動作の状況における別の例を例示するために、ホストが、コントローラ506に対してLBA「17」(10進数)に書込みを行うことを命令すると、コントローラは、「17」の16進数(すなわち、「11」)のLSBをマスクする。「17」のマスクされたバージョンは、16進数で「1」である。従って、行1042が、テーブル700においてアドレッシングされ、スペースマネージャブロック544によって見つけられるようなフリーブロックのアドレスが、行1042の仮想PBAフィールド1036に配置される。この場合には、ブロック2が、次のフリーブロックとして見つけられる。フラッシュメモリ装置内で、ブロック1002であるブロック2がアドレッシングされる。情報が実際に書込まれるセクタは、ブロック1002のセクタ1(該ブロック中の第2のセクタ)である。なぜなら、LBA値「11」の4つのLSBがホストによって送られるからである。データおよびECCは、次に、ブロック1002のセクタ1に書込まれる。
【0117】
図26の好適な実施形態例が、図25を参照して説明された実施形態と共に使用される場合には、LBA(またはクラスタ)アドレスが、各ブロック内の2つの場所に書込まれる。
【0118】
本発明を具体的な実施形態の面から説明したが、それらの変更および改変が、当業者には無論明らかとなることが予想される。従って、以下の請求の範囲が、本発明の真の精神および範囲に入るような、そのような変更および改変の全てを包含するものとして解釈されることを意図する。
【図面の簡単な説明】
【0119】
【図1】図1は、本発明に関する半導体大容量記憶装置のためのアーキテクチャーの概略ブロック図を示す。
【図2】図2は、図1のRAM記憶装置の物理ブロックアドレス102の別の実施態様を示している。
【図3】図3は、本発明の大容量記憶装置を組み込んだシステムのブロック図を示す。
【図4】図4から図8は、本発明の利点を実現するためのいくつかのフラグ及び情報の状態を示す。
【図5】図4から図8は、本発明の利点を実現するためのいくつかのフラグ及び情報の状態を示す。
【図6】図4から図8は、本発明の利点を実現するためのいくつかのフラグ及び情報の状態を示す。
【図7】図4から図8は、本発明の利点を実現するためのいくつかのフラグ及び情報の状態を示す。
【図8】図4から図8は、本発明の利点を実現するためのいくつかのフラグ及び情報の状態を示す。
【図9】図9は、本発明に関する第1のアルゴリズムのフローチャートブロック図を示す。
【図10】図10は、本発明の好ましい実施態様を含むデジタル・カメラなどのデジタルシステムの高次ブロック図を示す。
【図11】図11から21は、LBA−PBAマッピング情報を含む図10のデジタルシステムにおいて格納され得るマッピングテーブルの状態を示すいくつかの例を示す。
【図12】図11から21は、LBA−PBAマッピング情報を含む図10のデジタルシステムにおいて格納され得るマッピングテーブルの状態を示すいくつかの例を示す。
【図13】図11から21は、LBA−PBAマッピング情報を含む図10のデジタルシステムにおいて格納され得るマッピングテーブルの状態を示すいくつかの例を示す。
【図14】図11から21は、LBA−PBAマッピング情報を含む図10のデジタルシステムにおいて格納され得るマッピングテーブルの状態を示すいくつかの例を示す。
【図15】図11から21は、LBA−PBAマッピング情報を含む図10のデジタルシステムにおいて格納され得るマッピングテーブルの状態を示すいくつかの例を示す。
【図16】図11から21は、LBA−PBAマッピング情報を含む図10のデジタルシステムにおいて格納され得るマッピングテーブルの状態を示すいくつかの例を示す。
【図17】図11から21は、LBA−PBAマッピング情報を含む図10のデジタルシステムにおいて格納され得るマッピングテーブルの状態を示すいくつかの例を示す。
【図18】図11から21は、LBA−PBAマッピング情報を含む図10のデジタルシステムにおいて格納され得るマッピングテーブルの状態を示すいくつかの例を示す。
【図19】図11から21は、LBA−PBAマッピング情報を含む図10のデジタルシステムにおいて格納され得るマッピングテーブルの状態を示すいくつかの例を示す。
【図20】図11から21は、LBA−PBAマッピング情報を含む図10のデジタルシステムにおいて格納され得るマッピングテーブルの状態を示すいくつかの例を示す。
【図21】図11から21は、LBA−PBAマッピング情報を含む図10のデジタルシステムにおいて格納され得るマッピングテーブルの状態を示すいくつかの例を示す。
【図22】図22は、図10の好ましい実施態様で使用される不揮発性メモリ装置の例を示す。
【図23】図23は、図10の不揮発性装置に対する情報のブロックの書き込みに使用される一般的なステップを示す高次フローチャートを示す。
【図24】図24は、新しい欠陥フラグ及びLBAアドレス手段を用いた本発明の別の実施態様におけるフラッシュメモリ装置の内容例である。
【図25】図25は、ブロック内部で二つの異なるセクタロケーションの各ブロックに対するLBAアドレスを格納する本発明の別の代替の実施態様で用いられるフラッシュメモリ装置の内容例である。
【図26a】図26bにキーで示される図26は、図26a及び図26bを含み、本発明の別の代替の実施態様例が示されている。そこでは、フラッシュメモリ装置及びSPM RAMブロックの内容が記載されており、図10のシステムで使用されるようなLBA及びPBAアドレッシング間の相互関係を示している。
【図26b】図26bにキーで示される図26は、図26a及び図26bを含み、本発明の別の代替の実施態様例が示されている。そこでは、フラッシュメモリ装置及びSPM RAMブロックの内容が記載されており、図10のシステムで使用されるようなLBA及びPBAアドレッシング間の相互関係を示している。

【特許請求の範囲】
【請求項1】
複数のブロックに区分されたメモリと、
前記メモリに結合されたコントローラと
を備え、
前記コントローラは、ブロック内のデータの全てを移動させることなく、1つ以上のその他のブロックに前記データを書き込むことによって、前記ブロック内の前記データを再書き込みするように構成されている、格納装置。
【請求項2】
前記コントローラは、再書き込みされるべきではない前記ブロック内のデータを移動させることなく、前記ブロック内の前記データを再書き込みするように構成されている、請求項1に記載の格納装置。
【請求項3】
前記コントローラは、前記ブロック内の前記データの全てを移動およびコピーすることなく、前記ブロック内のその他のデータを前記1つ以上のその他のブロックに再書き込みすることによって、前記その他のデータを再書き込みするように構成されている、請求項1に記載の格納装置。
【請求項4】
前記コントローラは、再書き込みされるべきではない前記ブロック内のデータを移動およびコピーすることなく、前記ブロック内の前記その他のデータを再書き込みするように構成されている、請求項3に記載の格納装置。
【請求項5】
前記コントローラは、再書き込みされるべきではない前記ブロック内のデータを、前記データを前記1つ以上のその他のブロックに書き込んだ後に、前記ブロックから移動させるように構成されている、請求項1〜4のいずれか一項に記載の格納装置。
【請求項6】
前記コントローラは、再書き込みされるべきではない前記ブロック内の前記データを前記ブロックから移動させた後に、前記ブロックを消去するように構成されている、請求項5に記載の格納装置。
【請求項7】
前記コントローラは、再書き込みされるべきではない前記ブロック内のデータをコピーすることなく、前記データを1つ以上のその他のブロックに書き込むことによって、前記ブロック内の前記データを再書き込みするように構成されている、請求項1〜4のいずれか一項に記載の格納装置。
【請求項8】
前記ブロックおよび前記1つ以上のその他のブロックは、前記コントローラにおいてホストから受信される一群の論理ブロックアドレスによって識別される、請求項1〜4のいずれか一項に記載の格納装置。
【請求項9】
前記コントローラは、前記ブロックが格納されるべき前記メモリ内の位置を識別するために、前記一群の論理ブロックアドレスを一群の物理ブロックアドレスに変換するようにさらに構成されている、請求項8に記載の格納装置。
【請求項10】
不揮発性格納システム内のデータを更新する方法であって、
再書き込みされるべきではない第1のブロック内のデータをコピーすることなく、1つ以上の第2のブロックに前記第1のブロック内の第1のデータを書き込むことによって、前記第1のデータを再書き込みすることと、
再書き込みされるべきではない前記第1のブロック内の前記データを移動およびコピーすることなく、前記1つ以上の第2のブロックに前記第1のデータ以外の前記第1のブロック内の第2のデータを再書き込みすることによって、前記第2のデータを再書き込みすることと
を含む、方法。
【請求項11】
前記データが再書き込みされるときはいつでも、再書き込みされるべきではない前記第1のブロック内の前記データを移動させることなく、前記第1のブロック内の前記第1のデータを1回以上再書き込みすることをさらに含む、請求項10に記載の方法。
【請求項12】
前記第1のデータを前記1つ以上の第2のブロックに書き込んだ後に、再書き込みされるべきではない前記第1のブロック内の前記データを前記第1のブロックから移動させることをさらに含む、請求項10に記載の方法。
【請求項13】
再書き込みされるべきではない前記第1のブロック内の前記データを前記第1のブロックから移動させた後に、前記第1のブロックを消去することをさらに含む、請求項12に記載の方法。
【請求項14】
再書き込みされるべきではない前記第1のブロック内の前記データを移動させることなく、前記第1のデータを前記1つ以上の第2のブロックに書き込むことをさらに含む、請求項10〜13のいずれか一項に記載の方法。
【請求項15】
一群の論理ブロックアドレスを用いて前記第1のブロックと前記1つ以上の第2のブロックとを識別することをさらに含む、請求項10〜13のいずれか一項に記載の方法。
【請求項16】
前記一群の論理ブロックアドレスをホストから受信することをさらに含む、請求項15に記載の方法。
【請求項17】
前記第1のブロックが格納されるべき位置を識別するために、前記一群の論理ブロックアドレスを一群の物理ブロックアドレスに変換することをさらに含む、請求項15に記載の方法。
【請求項18】
前記第1のブロック内の前記第1のデータを再書き込みすることは、第1のコマンドをホストから受信したことに応答して行われ、前記第1のブロック内の前記第2のデータを再書き込みすることは、第2のコマンドを前記ホストから受信したことに応答して行われる、請求項10〜13のいずれか一項に記載の方法。

【図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

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図25】
image rotate

【図26a】
image rotate

【図26b】
image rotate

【図24】
image rotate


【公開番号】特開2009−110538(P2009−110538A)
【公開日】平成21年5月21日(2009.5.21)
【国際特許分類】
【出願番号】特願2008−312772(P2008−312772)
【出願日】平成20年12月8日(2008.12.8)
【分割の表示】特願2005−100228(P2005−100228)の分割
【原出願日】平成10年3月31日(1998.3.31)
【出願人】(300005057)レクサー・メディア・インコーポレイテッド (13)
【氏名又は名称原語表記】Lexar Media,Inc
【Fターム(参考)】