(57)【要約】      （修正有）【課題】  ＣＡＭセル装置の過剰なオーバーヘッドなしに格納されたデータに迅速にアクセスを提供する半導体ハードディスクアーキテクチャーを提供すること。【解決手段】  不揮発性メモリを有し、ホストに接続された、該不揮発性メモリにブロックで構成された情報を格納するための記憶装置であって、該ブロックの各々は、それに関連した論理ブロックアドレス（ＬＢＡ）および物理ブロックアドレス（ＰＢＡ）を有し、該ＬＢＡは、アクセスされるブロックを識別するために該ホストによって該記憶装置に提供され、該ＰＢＡは、該アクセスされるブロックが格納される該不揮発性メモリ内でフリーロケーションを識別するために該記憶装置によって発展され、該不揮発性内の格納されたブロックの各々は、選択的に消去可能であり、且つ１つ以上のセクタをさらに有する記憶装置。【選択図】図１
2005251219.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリを有し、ホストに接続された、該不揮発性メモリにブロックで構成された情報を格納するための記憶装置であって、該ブロックの各々は、それに関連した論理ブロックアドレス（ＬＢＡ）および物理ブロックアドレス（ＰＢＡ）を有し、該ＬＢＡは、アクセスされるブロックを識別するために該ホストによって該記憶装置に提供され、該ＰＢＡは、該アクセスされるブロックが格納される該不揮発性メモリ内でフリーロケーションを識別するために該記憶装置によって発展され、該不揮発性内の格納されたブロックの各々は、選択的に消去可能であり、且つ１つ以上のセクタをさらに有し、該記憶装置は、
（ａ）各ＬＢＡ行がＬＢＡによって固有にアドレス可能であるｎ個の該ＬＢＡ行によって規定されるテーブルを格納するため、および該格納されたブロックのロケーションを識別するための仮想ＰＢＡと、該格納されたブロックの一部のロケーションを識別するための移動仮想ＰＢＡと、該不揮発性メモリ内の該移動仮想ＰＢＡのロケーションに該格納されたブロックの何れかのセクタが移動したか否かを示すためのフラグ手段を含むステータス情報とを格納するためのメモリ装置と、
（ｂ）該不揮発性メモリ内に格納される特定のＬＢＡによって識別される１ブロックの情報を該ホストから受取るためと、該特定のＬＢＡが「未使用」場合には該仮想ＰＢＡを発展するためと、該特定のＬＢＡが「使用中」である場合に該移動仮想ＰＢＡを発展するためとの手段と、
を備え、
該ホストが該記憶装置に書込みを行う度毎に消去動作を行うことを回避するため、およびブロックの一部が再書込みされる度毎に該不揮発性メモリ内のフリーロケーションに該ブロック全体を移動させることを回避するために、該ブロックの部分が該不揮発性メモリ内の２つ以上のＰＢＡによって識別されるロケーションに格納され得る、記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の引用）
本願は、“フラッシュメモリ大容量記憶アーキテクチャーをアドレスするダイレクト論理ブロック”という名称の１９９５年７月３１日に出願された筆者の先の出願番号第０８／５０９，７０６号の一部継続出願である。
【０００２】
（発明の分野）
本発明はコンピュータの大容量記憶の分野に関する。特に、本発明はハードディスクを半導体不揮発性メモリ及び、特にフラッシュメモリに置き換えるためのアーキテクチャーに関する。
【背景技術】
【０００３】
コンピュータは従来、文書、データ、プログラム及び情報の大容量記憶のために回転型磁気媒体を使用している。しかし、広範に渡り使用され、一般に受け入れられているこの種のハードディスクドライブは様々な欠点に悩まされている。ディスクが回転するため、ハードディスクドライブから情報を引き出す際に特有の待ち時間を生じる。
【０００４】
携帯型コンピュータでは特に別の問題が顕著である。特に、携帯型コンピュータが受けると考えられる多くの各種の物理的衝撃にハードディスクが耐えられない。さらに、回転型ディスクのモーターは多大な電力を消費し、携帯型コンピュータのバッテリー寿命を低下させる。
【０００５】
半導体メモリは上記の問題を解決できるため、大容量記憶用ハードディスクドライブを置き換えるための理想的な選択である。ハードディスクを半導体メモリで置換するために、考えうる解決策が提案されてきた。その様なシステムを本当に使いやすくするために、メモリは不揮発性で変更可能でなければならない。発明者たちは、フラッシュメモリがそのような置き換えに好ましいと判断している。
【０００６】
フラッシュメモリは、ホットエレクトロン、ソースインジェクション、トンネリングによってプログラム可能であり、Ｆｏｗｌｅｒ−Ｎｏｒｄｈｅｉｍトンネリングによって消去可能なトランジスターメモリセルである。このようなメモリセルのプログラミング及び消去には、フローティング・ゲート電極を取り囲む誘電体を通過するための電流が必要となる。そのため、この種のメモリは有限数の消去−書き込みサイクルを有する。最終的に誘電体は劣化する。フラッシュセル装置の製造メーカーは消去−書き込みサイクル数の制限を１００，０００から１，０００，０００の間に指定している。
【０００７】
半導体大量記憶装置をうまく動作させる条件の一つは、回転型媒体ハードディスク大量記憶装置に代わるその使用法を設計者及び、そのような装置を使用するシステムのユーザに明白にすることである。言い換えると、そのような半導体大容量記憶装置が組み込まれたコンピュータの設計者またはユーザは、簡単にハードディスクを取り外し、半導体大容量記憶装置に置き換えることができる。現在利用できる全ての市販のソフトウエアは、全く修正の必要なしにこのような半導体大容量記憶装置を利用したシステムで動作すべきである。
【０００８】
ＳａｎＤｉｓｋは、１９９１年７月９日のシリコンバレーＰＣデザイン会議でフラッシュメモリを用いた半導体大容量記憶のためのアーキテクチャーを提案した。この大容量記憶システムは、市販のハードディスクのセクタサイズに対応した５１２バイトの読み書き（用）ブロックサイズを含む。
【０００９】
これ迄に、設計（図）には書き込み前消去アーキテクチャーが組み込まれていた。このプロセスで媒体のファイルを更新するために、媒体上の物理的ロケーションが前もってプログラムされた場合、新しいデータが再プログラムされ得る前にそれは消去されなければならない。
【００１０】
このプロセスはシステムのスループット全体に多大な悪影響を及ぼす。ホストが記憶媒体に新しいデータファイルを書き込む時、ホストはデータファイルに関連する周辺記憶装置に論理ブロックアドレスを提供する。記憶装置はその時、この所与の論理ブロックアドレスを媒体上の実際の物理ブロックアドレスに変換し、書き込み処理を行う。磁気ハードディスクドライブでは、新しいデータは媒体を変更することなく以前の古いデータに上書きされる。従って、コントローラから所与の論理ブロックアドレスからいったん物理ブロックアドレスが計算されると、その場所にデータファイルを単に書き込む。半導体記憶装置では、計算された物理ブロックアドレスに対応する場所が以前にプログラムされていた場合、新しいデータでこのブロックが再プログラムされる前に消去されなければならない。ある従来技術においては、書き込み前消去アーキテクチャーでは、ホストから与えられた論理ブロックアドレス間の相互関係は、媒体上の物理ブロックアドレスへの１対１マッピングとなる。この方法には多くの欠点がある。まず、変更された情報を再プログラムする前の消去処理のためにパフォーマンスが遅くなる。半導体フラッシュでは、消去は非常に遅いプロセスである。
【００１１】
次に、ハードディスクユーザは一般的に２種類の情報を格納する。一つは、めったに修正されない情報で、もう一つは頻繁に変更される情報である。例えば、ユーザのシステムに格納されている市販のスプレッドシートまたは、ワープロソフトのプログラムは、あったとしてもめったに変更されない。しかし、スプレッドシートのデータファイルまたは、ワープロ文書は頻繁に変更される。この様にハードディスクのそれぞれのセクタは、そこに保存された情報を変更する回数といった点で、典型的に全く別の使われ方をされる。この相違は、データ変更に敏感でないという理由でハードディスクに全く影響しないが、フラッシュメモリ装置では、この相違によって大容量記憶装置のその部分は、大容量記憶装置の他の部分に比べてかなり早く疲弊し、使用できなくなる。
【００１２】
別のアーキテクチャーでは、発明者たちはこれまでに論理ブロックアドレスを物理ブロックアドレスに相互に関係付けるテーブルを格納するという解法を提案していた。その解法に関する発明は、１９９３年３月２６日に出願された米国特許出願第０８／０３８，６６８号及び１９９３年３月２６日に出願された米国特許出願第０８／０３７，８９３号で開示されている。それらの出願は参考として本発明書中で援用されている。
【００１３】
発明者の従来の解法は二つの主要アルゴリズム及び、半導体大容量記憶装置に関連したハードウエア・アーキテクチャーを開示する。本明細書における  “データファイル”は、市販されているソフトウエア、ユーザプログラム、ワープロソフトの文書、スプレッドシートのファイルなどを含む任意のコンピュータファイル意味することが理解される。従来の解法における第１のアルゴリズムは修正されたデータファイルを大容量記憶装置に書き戻す時の消去処理を回避する手段を提供している。言い換えると、消去が実行されず修正されたデータファイルは大容量装置の空き部分に書き込まれる。
【００１４】
半導体大容量記憶装置アーキテクチャーは、市販されているハードディスクのセクタサイズに対応する大きさのブロックを有する。ブロックはそれぞれ消去可能である。ある実施態様では、半導体大量記憶装置はユーザに影響を与えないで回転型ハードディスクを置き換えることができるため、そのような置き換えは明らかである。書き込み前消去サイクルの各時点で大容量記憶装置に格納された情報が変更されないための手段が提供されている。
【００１５】
第１のアルゴリズムによれば、消去サイクルは変更されたデータファイルを空きブロックにプログラムすることで回避される。従来の大容量記憶装置を使用する場合、これは通常不可能である。なぜならば、従来のコンピュータシステムで使用される中央演算装置と市販されているソフトウエアは、データファイルの変化する物理的なロケーションを継続して把握するよう構成されていないからである。従来の解法は更新された情報ファイルの論理アドレスと物理アドレスとの間の相互関係を維持するためのプログラム可能なマップを含む。
【００１６】
全フラグ及び、論理ブロックアドレスから物理ブロックアドレスへ相互に関係付けるテーブルはＣＡＭセルのアレイ内部に保持されている。ＣＡＭセルの利用により、通常１または２クロック・サイクル以内で大容量記憶装置内の所望の物理アドレスが非常に高速に決定される。不幸にも周知であるように、ＣＡＭセルは一般的に６つの多重トランジスターを必要とする。従って、テーブル及びフラグのためのＣＡＭ記憶装置を用いた特定サイズのメモリを構成する集積回路は、単にメモリを格納するための他の手段を用いた回路に比べてかなり大きくなることが必要である。
【００１７】
発明者たちはこの問題について別の解法を提案しており、それは、１９９３年１０月４日に出願された米国特許出願第０８／１３１，４９５号に開示されている。この出願は参考として本明細書で援用される。
【００１８】
これらの同じ発明者によって発明された別の従来解法はまた、不揮発性メモリ記憶装置のためのものである。その装置も不揮発性スペースマネジャーＲＡＭにおける、論理ブロックアドレスと物理ブロックアドレスとの間の相互関係を維持することでデータファイルが変更される度に、書き込み前消去を実行しないよう構成されている。さらに本発明は、追加回路構成を必要とするＣＡＭセル手法に伴うオーバーヘットを回避する。
【００１９】
これらの同じ発明者によって前に開示された解法のように、装置は二つの主要アルゴリズムの実行及び、半導体大容量記憶装置に関連したハードウエアアーキテクチャのための回路構成を含む。加えて、ＣＡＭセルはＲＡＭセルを使用することで従来の解法を回避される。
【００２０】
論理ブロックアドレスをメモリ記憶装置に提供するこの従来の解法において、読み込みが実行される。システムは適合するものが見つかるまで連続的に格納された論理ブロックアドレスを比較する。そのデータファイルはその時、デジタルシステムに組み込まれる。従って、所望の情報の物理的なロケーションが決定される前に全てのメモリロケーションが潜在的に検索され、所望の論理ブロックアドレスと比較されるため、この解法によるパフォーマンスは低下する。
【発明の開示】
【発明が解決しようとする課題】
【００２１】
必要とされるのは、ＣＡＭセル装置の過剰なオーバーヘッドなしに格納されたデータに迅速にアクセスを提供する半導体ハードディスクアーキテクチャーである。
【課題を解決するための手段】
【００２２】
（発明の概要）
項目１．不揮発性メモリを有し、ホストに接続された、その不揮発性メモリにブロックで構成された情報を格納するための記憶装置であって、そのブロックの各々は、それに関連した論理ブロックアドレス（ＬＢＡ）および物理ブロックアドレス（ＰＢＡ）を有し、そのＬＢＡは、アクセスされるブロックを識別するためにそのホストによってその記憶装置に提供され、そのＰＢＡは、そのアクセスされるブロックが格納されるその不揮発性メモリ内でフリーロケーションを識別するためにその記憶装置によって発展され、その不揮発性内の格納されたブロックの各々は、選択的に消去可能であり、且つ１つ以上のセクタをさらに有し、その記憶装置は、（ａ）各ＬＢＡ行がＬＢＡによって固有にアドレス可能であるｎ個のそのＬＢＡ行によって規定されるテーブルを格納するため、およびその格納されたブロックのロケーションを識別するための仮想ＰＢＡと、その格納されたブロックの一部のロケーションを識別するための移動仮想ＰＢＡと、その不揮発性メモリ内のその移動仮想ＰＢＡのロケーションにその格納されたブロックの何れかのセクタが移動したか否かを示すためのフラグ手段を含むステータス情報とを格納するためのメモリ装置と、（ｂ）その不揮発性メモリ内に格納される特定のＬＢＡによって識別される１ブロックの情報をそのホストから受取るためと、その特定のＬＢＡが「未使用」場合にはその仮想ＰＢＡを発展するためと、その特定のＬＢＡが「使用中」である場合にその移動仮想ＰＢＡを発展するためとの手段と、を備え、そのホストがその記憶装置に書込みを行う度毎に消去動作を行うことを回避するため、およびブロックの一部が再書込みされる度毎にその不揮発性メモリ内のフリーロケーションにそのブロック全体を移動させることを回避するために、そのブロックの部分がその不揮発性メモリ内の２つ以上のＰＢＡによって識別されるロケーションに格納され得る、記憶装置。
項目２．上記ＬＢＡ行の各々の上記ステータス情報が、上記仮想ＰＢＡによって識別される上記不揮発性メモリのロケーションに格納されない上記格納されたブロックの１つ以上の上記セクタを識別するためのセクタ移動状態フィールドをさらに含む、項目１に記載の記憶装置。
項目３．上記ＬＢＡ行の各々の上記ステータス情報が、上記格納されたブロックのどの上記セクタが、もはや上記仮想ＰＢＡによって識別されるロケーションにないかを識別するためのセクタ移動状態フィールドをさらに含む、項目１に記載の記憶装置。
項目４．１つ以上の不揮発性メモリ装置をさらに含み、その装置の各々が、各々のロケーションがブロックのセクタを格納するためのＰＢＡによって固有にアドレス可能な複数の記憶ロケーションを有する、項目１に記載の記憶装置。
項目５．上記不揮発性メモリ装置の上記記憶ロケーションの各々は、さらに上記フラグ手段のコピーを格納するためのものである、項目４に記載の記憶装置。
項目６．上記不揮発性装置の上記記憶ロケーションの各々は、上記格納されたブロックのどのセクタが移動するかを識別するためのセクタ移動情報を格納するためのセクタ移動状態ロケーションを含む、項目４に記載の記憶装置。
項目７．パワーアップの際に、上記各ＰＢＡの上記セクタ移動情報が、上記不揮発性メモリ装置から読取られ、上記テーブルのそれぞれ対応するＬＢＡ行の上記セクタ移動状態フィールドに格納される、項目３および項目６に記載の記憶装置。
項目８．上記特定のブロックが、上記仮想ＰＢＡによってアドレッシングされる上記不揮発性装置の１つの上記記憶ロケーションに格納される、項目４に記載の記憶装置。
項目９．上記特定のブロックが、上記移動仮想ＰＢＡによってアドレッシングされる上記不揮発性装置の１つの上記記憶ロケーションに格納される、項目４に記載の記憶装置。
項目１０．上記フラグ手段が、設定される際に対応するブロックを「古い」として識別するための「古い」フラグ手段と、設定される際に対応するブロックを「使用中」として識別するための「使用中」フラグ手段とをさらに含む、項目１に記載の記憶装置。
項目１１．上記セクタ移動ステータスフィールドが、上記格納されたブロックの上記セクタの半分がもはや上記仮想ＰＢＡロケーションにないことを示す場合に、その格納されたブロックの上記対応する「古い」フラグ手段が設定される、項目３および項目１０に記載の記憶装置。
項目１２．上記メモリ装置が揮発性メモリから成る、項目１に記載の記憶装置。
項目１３．上記揮発性メモリがランダムアクセスメモリである、項目１２に記載の記憶装置。
項目１４．コントローラおよび１つ以上のフラッシュメモリ装置を有する、ホストと共に使用するための記憶装置において、そのコントローラの指示の下で、そのフラッシュメモリ装置内の情報にアクセスするための方法であって、その情報は、セクタで構成され、１つ以上のそのセクタがブロックを規定しており、そのブロックの各々は、選択的に消去可能で、それに関連した、そのホストによって提供されるＬＢＡと、セクタが格納され得るそのフラッシュメモリ装置内で使用されていないロケーションを識別するためのそのコントローラによって発展されるＰＢＡとを有し、その方法は、（ａ）そのコントローラ内で行によって規定されるテーブルを割当てるステップであって、その行の各々は、ＬＢＡによって個々にアドレス可能であり、仮想ＰＢＡと、移動仮想ＰＢＡと、そのフラッシュメモリ装置内でその仮想ＰＢＡからその移動仮想ＰＢＡに移動されたセクタのロケーションを決定するために使用されるステータス情報とを格納するように構成されている、ステップと、（ｂ）そのホストがアクセス中のブロックを識別する特定のＬＢＡをそのコントローラに提供するステップと、（ｃ）その特定のＬＢＡと関連してＰＢＡを発展するステップと、（ｄ）ＬＢＡ行をアドレッシングするためにその特定のＬＢＡを使用するステップと、（ｅ）その特定のＬＢＡに関連するそのＰＢＡをそのアドレッシングされたＬＢＡ行に格納するステップと、（ｆ）その特定のＬＢＡによって識別されたそのブロックのさらなるアクセスの際に、移動仮想ＰＢＡを発展するステップと、（ｇ）その移動仮想ＰＢＡをそのアドレッシングされたＬＢＡ行に格納するステップと、（ｈ）そのアドレッシングされたＬＢＡ行内の何れかのセクタが移動されたか否かを示すように、そのアドレッシングされたＬＢＡ行のそのステータス情報を変更するステップと、を包含し、ブロックがアクセスされる度毎の書込み前の消去動作を回避するために、そのブロックのセクタがそのフラッシュメモリ装置内の使用されていないロケーションに移動される、方法。
項目１５．上記ステータス情報が、上記特定のブロックの何れかの部分が、上記移動仮想ＰＢＡによって識別される上記フラッシュメモリ装置内のロケーションに格納されるか否かを示すための移動フラグ手段をさらに含む、項目１４に記載の情報にアクセスするための方法。
項目１６．上記テーブルを揮発性メモリに格納するステップをさらに包含する、項目１４に記載の情報にアクセスするための方法。
項目１７．不揮発性メモリを有し、ホストに接続された、その不揮発性メモリにブロックで構成された情報を格納するための記憶装置であって、そのブロックの各々は、それに関連した論理ブロックアドレス（ＬＢＡ）および物理ブロックアドレス（ＰＢＡ）を有し、そのＬＢＡは、アクセスされるブロックを識別するためにそのホストによってその記憶装置に提供され、そのＰＢＡは、そのアクセスされるブロックが格納されるその不揮発性メモリ内でフリーロケーションを識別するためにその記憶装置によって発展され、その不揮発性内に格納されたブロックの各々は、選択的に消去可能であり、且つ１つ以上のセクタをさらに有し、その記憶装置は、各ＬＢＡ行がＬＢＡによって固有にアドレス可能であるそのＬＢＡ行によって規定されるテーブルを格納するため、およびその格納されたブロックのロケーションを識別するための仮想ＰＢＡと、その格納されたブロックの一部のロケーションを識別するための移動仮想ＰＢＡと、その不揮発性メモリ内のその移動仮想ＰＢＡのロケーションにその格納されたブロックの何れかのセクタが移動したか否かを示すためのフラグ手段を含むステータス情報とを格納するためのメモリ装置と、その不揮発性メモリ内に格納される特定のＬＢＡによって識別される１ブロックの情報をそのホストから受取るためと、その特定のＬＢＡが「未使用」場合にはその仮想ＰＢＡを発展するためと、その特定のＬＢＡが「使用中」である場合にその移動仮想ＰＢＡを発展するためとの手段と、そのブロックの各々の内部に格納され、上手く消去されたブロックを識別するために所定の値に設定される欠陥フラグとを備え、そのホストがその記憶装置に書込みを行う度毎に消去動作を行うことを回避するため、およびブロックの一部が再書込みされる度毎にその不揮発性メモリ内のフリーロケーションにそのブロック全体を移動させることを回避するために、そのブロックの部分がその不揮発性メモリ内の２つ以上のＰＢＡによって識別されるロケーションに格納され得る、記憶装置。
【００２３】
本発明は不揮発性メモリ記憶装置のためのものである。その装置はデータファイルが変更される毎に書き込み前消去を実行をしないよう構成される。さらに、ＣＡＭセルに伴うオーバヘッドを回避するため、本手法はＲＡＭアレイを利用している。ホストシステムは論理ブロックアドレスを用いて大容量記憶データの編成を維持する。ＲＡＭアレイはホストの論理ブロックアドレス（ＬＢＡ）と同じアドレスによってアドレスされるよう構成されている。ＲＡＭ内でそのようにアドレスされる各ロケーションはホストから求められる不揮発性大容量記憶装置内のデータの物理アドレスを保持するフィールドを含む。この物理ブロックアドレス（ＰＢＡ）情報は、電源停止後処理を再開した後に装置が依然として機能することを保証する不揮発性メモリ内に保持されなければならない。なぜなら、ＲＡＭは揮発性メモリであるからである。加えて、状態フラグはまた各物理ロケーションに格納される。状態フラグは不揮発性媒体または、ＲＡＭと不揮発性媒体の両方の何れかに格納され得る。
【００２４】
装置は二つの主要アルゴリズムの実行のための回路構成及び、半導体大容量記憶装置に関連したハードウエアアーキテクチャーを有する。第１のアルゴリズムは、ホストの論理ブロックを物理ブロックアドレスにマッピングする手段を提供し、これによりパフォーマンスが相当改善され最小のハードウエア補助で済む。加えて、第２のアルゴリズムは修正されたデータファイルを大容量記憶装置に書き戻す時に書き込み前消去サイクルを回避するための手段を提供する。その代わりに、消去は行われず、修正されたデータファイルは大容量記憶装置の空いた部分に書き込まれる。
【００２５】
本発明において読み込みは、論理ブロックアドレスをメモリ記憶装置に提供することで実行される。ＲＡＭアレイは論理ブロックアドレスが一つのＲＡＭロケーションを選択するよう構成される。そのロケーションは、ホストまたは、他の外部システムから要求されたデータの物理ブロックアドレスを保持している。そのデータファイルはその時ホストに読み出される。第２のアルゴリズムでは、消去サイクルは従来技術でなされたようなブロックの消去サイクル後にそれ自身にプログラムするというよりむしろ、変更されたデータファイルを変更されたデータ大容量記憶ブロックにプログラムすることで回避される。
【００２６】
本発明の別の実施態様では、方法及び装置は不揮発性メモリ内部の第１の領域から不揮発性メモリ内部の未使用領域へブロック内のセクタを効率よく移動し、第１の領域を“使用中”として記すために提示される。
【００２７】
つまり、本発明の好ましい実施態様は、ホストによってアクセスされたブロックを識別する論理ブロックアドレスを物理ブロックアドレスにマッピングするためのマッピング情報を格納し、不揮発性メモリ、選択的に消去可能で個別に移動し得る一つまたは、複数のセクタを有するブロックを識別する、方法、及び、装置を有する。そのマッピング情報には、不揮発性メモリ内の“本来”のロケーションを識別する仮想的物理ブロックアドレスと、不揮発性メモリ内の”移動された”ロケーションを識別する移動された仮想物理ブロックアドレスがあり、前者の内部ではブロックが格納され、後者の内部では一つまたは、複数の格納されたブロックのセクタが移動される。そのマッピング情報にはさらに、“本来の”物理ブロックアドレスを使用するためのステータス情報、アクセスされたブロック内部の“移動された”セクタに関する情報を提供するための“移動された”物理ブロックアドレスが含まれている。
【発明を実施するための最良の形態】
【００２８】
（好ましい実施態様の詳細な説明）
図１は、本発明に関する半導体記憶媒体を実装するためのアーキテクチャーを示している。記憶媒体は、ホストまたは、他の外部デジタルシステムとの利用のためのものである。大容量記憶装置は、揮発性ＲＡＭアレイ１００及び不揮発性アレイ１０４の二つの部分に区分される。好ましい実施態様によると、不揮発性メモリ記憶装置の全てはフラッシュである。フラッシュはＥＥＰＲＯＭによって置き換えられ得る。ＲＡＭは任意の都合の良いタイプである
メモリ記憶装置１０４は、データを０からＮ−１までのＮブロックに編成する。データの各ブロックは、Ｍバイト長である。好ましい実施態様では、各データブロックは５１２バイト長で、市販利用されているハードディスクドライブにおけるセクタ長に対応しており、さらにフラグ、論理ブロックアドレス情報（ＬＢＡ）及び関連したＥＣＣを格納するための余剰バイトを有する。メモリ１０４はユーザが必要とするメモリ記憶装置と同じ容量を有し得る。大容量記憶装置の例には、１００Ｍバイトのアドレシングが可能な記憶装置も含み得る。
【００２９】
ＲＡＭロケーション１０２は複数ある。各ＲＡＭロケーション１０２は、ホストシステムまたは、不揮発性媒体の実際の物理アドレスによって与えられる論理ブロックアドレスの適切な一つを用いてコントローラによって一意にアドレスされる。ＲＡＭロケーション１０２は論理ブロックアドレスに関連するデータ及び、不揮発性媒体の物理ブロックアドレスに関連するフラグの物理ブロックアドレスを有する。
【００３０】
物理ブロックアドレス（ＰＢＡ）は図２に示されるように、二つのフィールドに分割され得る。これらのフィールドはデータブロックのグループのクラスタアドレスのために使用され得る。第１のフィールド２９０は、クラスタアドレスを選択するために用いられ、第２のフィールド２９２は、このクラスタに関連する論理ブロックアドレスのスタートアドレスを選択するために用いられ得る。
【００３１】
情報フラグの集まりもまた、各不揮発性メモリロケーション１０６のために格納されている。これらのフラグは、旧／新フラグ１１０、使用中／フリーフラグ１１２、欠陥フラグ１１４、及びシングル／セクタフラグ１１６を含む。さらに、データ格納（領域）１１２も有する。
【００３２】
本発明の大容量記憶装置にデータを書き込む時、コントローラはデータを格納するための第１の利用可能な物理ブロックを決定する。ホストによって選択された論理ブロックアドレスに対応するＲＡＭロケーション１０２は、１０４（図１）内の不揮発性メモリアレイ内部のデータが実際に格納される物理ブロックアドレス内に書き込まれる。
【００３３】
ユーザがワープロ文書を準備し、コンピュータに文書の保存を指示する例を考える。文書は大容量記憶システム内に格納される。ホストシステムは大容量記憶システムに論理ブロックアドレスを割り当てる。本発明の大容量記憶システムは未使用ブロックまたは、文書を格納するための大容量記憶装置内ブロックの物理アドレスを選択する。物理ブロックアドレスのアドレスは、論理ブロックアドレスに対応してＲＡＭロケーション１０２に格納される。データがプログラムされると、本発明のシステムはまた、１０４及び２９３において使用中フリーフラグ１１２をこのブロックロケーションは使用中であることを示すように設定する。１つの使用中／フリーフラグ１１２は不揮発性アレイ１０４の各エントリのために提供される。
【００３４】
さらに、ユーザが文書を取り出し、変更を加え、再度コンピュータに文書を格納する指示を与えると仮定する。書き込み前消去サイクルを回避するため、本発明のシステムは、関連するブロックが消去されることを示す未設定の（プログラムされていない）１００内の使用中／フリーフラグ１１２を有するブロックをロケーションづけるための手段を提供する。システムはその時、１０６の新ブロック１１２、１００の新ブロック２９３のための使用中／フリーフラグ１１２を設定し、その後、不揮発性アレイ１０４内の新しい物理ブロックロケーション１０６内に修正された文書を格納する。新しい物理ブロックロケーションのアドレスもまた、論理ブロックアドレスに対応するＲＡＭロケーション１０２に格納され、１０２内で以前の物理ブロックロケーションに上書きされる。次にシステムは以前のバージョンの文書の旧／新フラグ１１０を設定し、これにより１０４の１１０及び１０９の２９３で不必要な古いバージョンの文書を示す。この様に、本発明のシステムは、以前の文書の修正バージョンを格納するために従来システムの書き込み前消去において必要とされる消去サイクルのオーバーヘッドを回避する。
【００３５】
ＲＡＭアレイ１００は電源停止状態でその記憶を失うため、媒体の実際の物理ブロックアドレスを持つ論理ブロックアドレスはまた、不揮発性アレイ１０４においてシャドウメモリ１０８として格納される。コントローラによってシャドウ情報が適切なＲＡＭロケーション１０２に格納されることがわかる。電源が供給される間、１００のＲＡＭロケーションは、１０４の情報１０６を読み込むことで１０４における全ての物理ロケーションから適切に更新される。１０６の論理アドレス１０８は１００のＲＡＭロケーションをアドレスするために用いられ、所与の論理ブロックアドレスに関連する実際の物理ブロックアドレスを更新する。また１０６は新しいデータ１２２に関連する実際の物理ブロックアドレスであるため、フラグ１１０、１１２、１１４及び、１１６は１００の物理ブロックアドレス１０６を用いて１０２の２９３内で更新される。フラグが適当な不揮発性メモリロケーション１０６または、不揮発性メモリロケーションと物理ブロックアドレスに関連するＲＡＭロケーション１０２の両方のいずれかで格納され得ることが当業者には明らかである。
【００３６】
パワーアップ時に、揮発性メモリ１００内の論理ブロックアドレスに割り当てられる最新の物理ブロックアドレスを割り当てるために、コントローラはまず、不揮発性メモリ１０４のフラグ１１０、１１２、１１４及び１１６部分を読み込み、揮発性メモリ１００内のフラグ部２９３を更新する。次にコントローラは、不揮発性媒体１０４の全ての物理ブロックアドレスの論理ブロックアドレス１０８を読み込み、揮発性メモリ１００内の所与の物理ブロックアドレスのフラグを把握することで、不揮発性メモリ１０４内の物理ブロックアドレスの読み込み論理ブロックアドレスを読み込み、揮発性メモリ１００内の読み込み論理ブロックアドレスを読み込むために割り当てられた最新の物理ブロックアドレスを更新し得る。
【００３７】
図３は、本発明の大容量記憶装置を組み込んだシステムのブロック図を示す。ホストコンピューター、パソコンのような外部デジタルシステム３００は、本発明の大容量記憶装置３０２に接続されている。論理ブロックアドレスはアドレスバス３０６を介して揮発性ＲＡＭアレイ１００及び、コントローラ回路３０４に接続されている。制御信号はまた、コントロールバス３０８を介してコントローラ３０４に接続されている。揮発性ＲＡＭアレイ１００は、不揮発性ＲＡＭアレイ４００に物理ブロックアドレスを提供するために接続されている。コントローラ３０４は、揮発性ＲＡＭ１００と不揮発性アレイ１０４の両方を制御するために接続され、全てのフラグを生成する。
【００３８】
本発明に関する書き込み処理の動作を示す、単純化された例は、図４から図８に示される。過剰な説明によって発明の特徴をわかりにくくしない様に全ての情報フラグを表記していない。データエントリは、本発明の理解を更に単純化するために１０進数で示している。好ましい実施態様では、２進法が使用されていることが当業者には明らかである。
【００３９】
図４は、本発明に関する１１のエントリを持つ大容量記憶装置を示す。図４の大容量記憶装置内に有効なまたは、使用可能なデータは格納されていない。従って、全ての物理ブロックアドレスは空である。不揮発性大容量記憶装置のロケーション’６’に格納されたデータは詰まっており、古いものである。さらに、ロケーション’９’には欠陥があり、使用できない。
【００４０】
ホストは大容量記憶装置に例として、論理ブロックアドレス’３’、次に’４’に順次データの書き込みを指示する。大容量記憶装置はまず、論理ブロックアドレス’３’に関連するデータを書き込む。装置は不揮発性メモリ内で最初の未使用ロケーションを決定する。この例では、最初の空いている場所はロケーション’０’である。
【００４１】
従って、図５は論理ブロックアドレス’３’に対して対応する物理ブロックアドレス’０’が格納され、使用中フラグが物理ブロックアドレス’０’に設定される事を示している。次の空いている場所はロケーション’１’である。図６は、論理ブロックアドレス’４’に対して対応する物理ブロックアドレス’１’が格納され、使用中フラグが物理ブロックアドレス’１’に設定される事を示している。
【００４２】
ホストは論理ブロックアドレス’３’に何かを再び書き込むことを指示する。次の空いている場所は、ロケーション’２’であると決定される。図７では、データがもはや使用不可能であり、使用中フラグがロケーション’２’に設定され、ロケーション’３’における物理ブロックアドレスが’２’に変更されたことを示すように、ロケーション’０’における旧フラグが設定される事を示している。
【００４３】
さらに、ホストは論理ブロックアドレス’４’に再度何かを書き込むことを指示する。次の空いている場所はロケーション’３’であると判断される。図８では、データがもはや使用不可能であり、使用中フラグがロケーション’３’に設定され、ロケーション’４’における物理ブロックアドレスが’３’に変更されたことを示すために、ロケーション’１’の旧フラグが設定される事を示している。（物理ブロックアドレスと同じロケーションに格納されたデータとの間には一般に何ら関係がないことを思い出されたい）。
【００４４】
図９は、本発明に関するアルゴリズム１を示している。本発明のシステムがデータを大容量記憶装置にプログラムするよう指示を受けた時（ステップ２００）、その時システムはフリーブロック、即ち設定されていない（プログラムされていない）使用中／フリーフラグを持つブロックを見つけ出そうとする。見つかった場合、システムはそのブロックのための使用中／フリーフラグを設定し、データをそのブロック内にプログラムする（ステップ２０６）。
【００４５】
一方、システムが設定されていない使用中／フリーフラグを持つブロックを見つけ出せない場合、システムはフラグ（使用中／フリー及び、旧／新）及び、設定されている旧／新フラグ有する全ブロックに対するデータ及び、設定されていない欠陥フラグを消去し（ステップ２０４）、次に未設定の使用中／フリーフラグを有するブロックを検索する（ステップ２０２）。そのようなブロックはステップ２０４によって生成されるだけである。システムは次に、そのブロックのための使用中／フリーフラグを設定し、データファイルをそのブロックにプログラムする（ステップ２０６）。
【００４６】
もしデータが、これまでに存在するファイルの修正されたバージョンである場合、システムはアクセスされているものから入れ替えられたバージョンを防がなければならない。システムは、データファイルが旧データファイルを入れ替えるかどうか判断する（ステップ２０８）。もし入れ替えるならば、システムは入れ替えられたブロックに関連する旧／新フラグを設定する（ステップ２１０）。一方、格納されたデータファイルが新規作成されたデータファイルの場合、旧／新フラグの設定ステップ（ステップ２１０）は、入れ替えられるブロックがないためスキップされる。最後に、論理アドレス３０８−を物理アドレスに相互関係づけるマップが更新される（ステップ２１２）
これまでに概説した手順に従って、周期的な場合を除いてメモリ１０４への各書き込みに対して消去サイクルに伴うオーバーヘットが回避される。これによって、本発明のアーキテクチャーを使用したコンピュータシステム全体のパフォーマンスが画期的に改善される。
【００４７】
本発明の好ましい実施態様では、フラッシュメモリのプログラミングは、当業者よって一般に知られている手順に従っている。言い換えると、プログラムのインパルス（Ｉｍｐｕｌｓｅ）により、ビットに適切にプログラムされるよう適用され、適切なプログラミングが行われたことを確認するためにプログラムされたデータを比較する。最終的にビットは消去または、正しくプログラムされず、欠陥フラグ１４８はそのブロックが再度使用されないように設定される。
【００４８】
図１０は、本発明の代替の実施形態を用いるデジタルカメラ等のデジタルシステム５００を示す。ホスト５０２を含むようにデジタルシステム５００を示すが、ホスト５０２はパーソナルコンピュータ（ＰＣ）、または単に、デジタルシステムにおいて通常用いられる任意の一般的なタイプのプロセッサであり得、不揮発性メモリユニット５０８に情報を格納するか、または不揮発性メモリユニット５０８から情報を取り出すための制御回路５０６に結合される。制御回路５０６は半導体（あるいは「集積回路」または「チップ」と呼ぶ）、またはさまざまな電子部品を自由選択的に組合せたものであり得る。好適な実施形態において、制御回路を単一のチップデバイスとして示す。不揮発性メモリユニット５０８は１つ以上のメモリデバイスから構成され、メモリデバイスはそれぞれフラッシュ型またはＥＥＰＲＯＭ型のメモリであり得る。図１０の好適な実施形態において、メモリユニット５０８は、複数のフラッシュメモリデバイス５１０〜５１２を含み、各フラッシュデバイスは、情報を格納するための別個にアドレス可能なロケーションを含む。図１０の実施形態の好適なアプリケーションにおいて、このような情報は、それぞれが１つ以上のデータのセクタを有するブロックに組織される。データに加えて、格納された情報は、フラグフィールドおよびアドレス情報等の、データブロックに関するステータス情報をさらに含み得る。
【００４９】
ホスト５０２は、ホスト情報信号５０４を介して制御回路５０６に結合される。ホスト情報信号は、アドレスおよびデータバス、ならびに、コマンド、データおよび他のタイプの情報を制御回路５０６に通信するための制御信号からなり、制御回路５０６はフラッシュアドレスバス５１２、フラッシュデータバス５１４，フラッシュ信号５１６およびフラッシュステータス信号５１８（５０８および５１２〜５１６を集合的に信号５３８と呼ぶ）を介してこのような情報をメモリユニット５０８に順に格納する。信号５３８は、コントローラ５０６およびメモリユニット５０８との間にコマンド、データおよびステータス情報を提供し得る。
【００５０】
図示するコントローラ５０６は、ホストインターフェースブロック５２０、バッファＲＡＭブロック５２２、フラッシュコントローラブロック５３２、マイクロプロセッサブロック５２４、マイクロプロセッサコントローラブロック５２８、マイクロプロセッサ格納ブロック５３０、マイクロプロセッサＲＯＭブロック５３４、ＥＣＣ論理ブロック５４０、およびスペースマネジャーブロック５４４等の高レベル機能ブロックを含む。ホストインターフェースブロック５２０は、バッファＲＡＭブロック５２２およびマイクロプロセッサブロック５２４からのデータおよびステータス情報をホスト情報信号５０４を介してホスト５０２に提供するためのホスト情報信号５０４を受け取る。ホストインターフェースブロック５２０は、マイクロプロセッサ情報信号５２６を介してマイクロプロセッサブロック５２４に結合される。マイクロプロセッサ情報信号５２６は、アドレスバス、データバスおよび制御信号から構成される。
【００５１】
図示されるマイクロプロセッサブロック５２４は、マイクロプロセッサコントローラブロック５２８、マイクロプロセッサ格納ブロック５３０、マイクロプロセッサＲＯＭブロック５３４に結合され、そして、マイクロプロセッサ格納ブロック５３０およびマイクロプロセッサＲＯＭブロック５３４に格納されたプログラム命令を実行することによって、コントローラ５０６内の図１０に示すさまざまな機能ブロックの動作を指示する役割を果たす。マイクロプロセッサブロック５２４は、適切な時点にマイクロプロセッサＲＯＭブロック５３４からのプログラム命令（またはコード）を実行し得る。なお、マイクロプロセッサＲＯＭブロック５３４は不揮発性格納領域である。一方で、マイクロプロセッサ格納ブロック５３０は、揮発性、つまり読み出しおよび書き込みメモリ（ＲＡＭ）、もしくは不揮発性、つまりＥＥＰＲＯＭ型のメモリ記憶装置のいずれかであり得る。マイクロプロセッサブロック５２４によって実行された命令を集合的にプログラムコードと呼ぶが、これらは本発明のシステムの動作の開始に先立つある時点で格納ブロック５３０に格納される。始めに、かつ、マイクロプロセッサ格納ロケーション５３０からのプログラムコードの実行に先立って、プログラムコードはメモリユニット５０８内に格納され、その後、信号５３８を介して格納ブロック５３０にダウンロードされ得る。この初期化の間に、マイクロプロセッサブロック５２４はＲＯＭブロック５３４からの命令を実行し得る。
【００５２】
コントローラ５０６は、マイクロプロセッサの指示の下、メモリユニットに情報を提供するまたはメモリユニットから情報を受け取るためにマイクロプロセッサ情報信号５２６を介してマイクロプロセッサブロック５２４に結合されたフラッシュコントローラブロック５３２をさらに含む。データ等の情報は、フラッシュコントローラブロック５３２からマイクロプロセッサ信号５２６を介してバッファＲＡＭブロック５２２に提供されて、そこに格納され得る。（単に一時的な格納であってもよい。）同様に、マイクロプロセッサ信号５２６を介して、データはフラッシュコントローラブロック５３２によってバッファＲＡＭブロック５２２から取り出され得る。
【００５３】
ＥＣＣ論理ブロック５４０は、信号５４２を介してバッファＲＡＭブロック５２２に結合され、そして、マイクロプロセッサ信号５２６を介してマイクロプロセッサブロック５２４にさらに結合される。ＥＣＣ論理ブロック５４０は、通常エラーコーディング機能およびエラー訂正機能を実行するための回路機構を含む。さまざまなＥＣＣ装置およびアルゴリズムが市販されており、ＥＣＣ論理ブロック５４０に要求される機能を実行するために用いられ得ることが当業者によって理解されるべきである。要するに、これらの機能は、あらゆる集中的な目的のために多項式から独自に生成されたコードを伝送中のデータに添付することを含み、データが受け取られた場合には、同じ多項式を用いて、データを破壊し得る所定の数のエラーを検出し、かつ、潜在的に訂正するための受け取られたデータから別のコードを生成する。ＥＣＣ論理ブロック５４０は、メモリユニット５０８に格納されたデータまたはホスト５０２から受け取られたデータについて、エラー検出動作および／またはエラー訂正動作を行う。
【００５４】
スペースマネジャーブロック５４４は、１ブロックの情報を格納するための１つのフラッシュメモリデバイス内に、次の使用されていない（またはフリーの）格納ブロックを見つけるために、好適な装置およびアルゴリズムを用いる。これについては、他の図面を参照して本明細書中でさらに説明する。既に説明したように、１つのフラッシュメモリデバイス内の１ブロックのアドレスをＰＢＡと呼ぶが、ＰＢＡは、ホストから受け取られたＬＢＡについての翻訳を実行することによって、スペースマネジャーによって決定される。この翻訳を達成するために、さまざまな装置および方法が使用され得る。このようなスキームの一例が、”Ｆｌａｓｈ  Ｍｅｍｏｒｙ  Ｍａｓｓ  Ｓｔｏｒａｇｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｉｎｃｏｒｐｏｒａｔｉｎｇ  Ｗｅａｒ  Ｌｅｖｅｌｉｎｇ  Ｔｅｃｈｎｉｑｕｅ  Ｗｉｔｈｏｕｔ  Ｕｓｉｎｇ  ＣＡＭ  Ｃｅｌｌｓ”という名称の米国特許第５，４８５，５９５号に開示されており、この文献の明細書を本明細書中で参考として援用する。他のＬＢＡからＰＢＡへの翻訳方法および装置を、本発明の範囲および精神から逸れることなく同様に用い得る。
【００５５】
スペースマネジャーブロック５４４はＳＰＭ  ＲＡＭブロック５４８およびＳＰＭ制御ブロック５４６を含み、ＳＰＭ  ＲＡＭブロック５４８およびＳＰＭ制御ブロック５４６は結合されている。ＳＰＭ  ＲＡＭブロック５４８は、ＳＰＭ制御ブロック５４６の制御下で、ＬＢＡ−ＰＢＡマッピング情報（あるいは、本明細書中では翻訳テーブル、マッピングテーブル、マッピング情報、またはテーブルと呼ぶ）を格納する。あるいは、ＳＰＭ  ＲＡＭブロック５４８は、ＲＡＭアレイ１００について図３に示すように、コントローラの外部に位置し得る。
【００５６】
動作において、ホスト５０２は、例えばコントローラ５０６を介した読み出し動作または書き込み動作の実行の間に、メモリユニット５０８に情報を書き込み、かつ、メモリユニット５０８から情報を読み出す。それを行う際に、ホスト５０２は、ホスト信号５０４を介してコントローラ５０６にＬＢＡを提供する。ＬＢＡはホストインターフェースブロック５２０によって受け取られる。マイクロプロセッサブロック５２４の指示の下、ＬＢＡは最終的にはスペースマネジャーブロック５４４に提供されて、ＰＢＡに翻訳され、そしてそこに格納される。これについては、後でさらに詳細に説明する。
【００５７】
マイクロプロセッサブロック５２４の指示下で、データおよび他の情報は、フラッシュコントローラブロック５３２を介してフラッシュメモリデバイス５１０〜５１２のうちの１つにある、ＰＢＡによって識別される格納領域に書き込まれるか、または格納領域から読み出される。既に説明したように、フラッシュメモリデバイス内に格納された情報は、まず消去しなければ新たな情報によって上書きされ得ない。一方で、（常に書き込みに先行する）１ブロックの情報の消去は、時間と電力を大幅に消費する手段である。これは時々、書き込み前消去動作と呼ばれる。好適な実施形態は、フラッシュメモリ内のＰＢＡロケーションからメモリユニット５０８内の未使用のＰＢＡロケーションに再び書き込まれている、ブロック内の、情報のセクタ（または多重セクタ）を連続して、しかし、効率的に移動することによりこのような動作を除去し、そうすることにより、頻繁な消去動作を除去する。１ブロックの情報は、１６個または３２個のセクタ等の、１を超える数のセクタから構成され得る。１ブロックの情報は、情報の別個に消去可能なユニットになるようにさらに規定される。過去、従来技術のシステムは、フラッシュメモリデバイス内のフリーの（または未使用の）ロケーション内に既に書き込まれている、フラッシュメモリデバイス内に格納されたブロックを移動させる。しかし、このようなシステムは、そのブロック内の１セクタの情報が再び書き込まれる場合でさえ、ブロック全体を移動させた。換言すると、ブロック内のセクタの合計数よりも少ない数のセクタが再び書き込まれている場合には、ブロック全体の内容を移動するのに時間が無駄であるのに加えて、フラッシュメモリ内の記憶容量も無駄になる。本発明の好適な実施形態は、本明細書中で説明するように、１ブロックの情報よりも少ない数の「移動」を可能にすることにより、既に書き込まれたセクタの移動動作の数を減らして、結果的に消去動作の数を減らす。
【００５８】
図１０を参照すると、ＳＰＭ  ＲＡＭブロック５４８が、書き込み動作が行われる毎に変更され得るテーブルを維持することによって、ＬＢＡ−ＰＢＡマッピング情報およびメモリユニット５０８に格納されている各ブロックに関する他の情報を維持することに留意することは重要である。加えて、このマッピング情報は、フラッシュメモリデバイス内における情報の（ブロック内の）セクタの実際のロケーションを提供する。さらに明らかなように、システムへの電力が妨害または終了される場合に、マッピング情報の損失を防ぐために、ＳＰＭ  ＲＡＭブロック５４８に格納されたマッピングテーブル内の情報の少なくとも一部分が、メモリユニット５０８に「シャドウイング（ｓｈａｄｏｗｅｄ）される」（またはコピーされる）。これは、大部分に、マッピング情報を維持するために揮発性メモリを使用することに起因する。これに関して、システムへの電力が回復された場合、マッピング情報の、メモリユニット５０８に格納された部分はＳＰＭ  ＲＡＭブロック５４８に転送される。
【００５９】
ＳＰＭ  ＲＡＭブロック５４８は、あるいは、フラッシュまたはＥＥＰＲＯＭメモリアーキテクチャの形態等の不揮発性メモリであってもよいことに留意されたい。この場合、不揮発性メモリに格納されたマッピング情報は停電の間も正確に維持されるので、マッピングテーブルは不揮発性メモリ内に格納されることにより、「シャドウイング（ｓｈａｄｏｗｉｎｇ）」の必要が除去される。
【００６０】
１つ以上のセクタがフラッシュメモリのある領域から別の領域へと移動されている場合、本発明の好適な実施形態は、まずセクタを、それらがフラッシュメモリデバイス、つまり、５１０〜５１２内に格納されているロケーションから、バッファＲＡＭブロック５２２へと移動させ、そこに一時的に格納する。移動されたセクタは次にバッファＲＡＭブロック５２２から１つのフラッシュメモリデバイス内のフリーの領域に移動される。ＥＣＣ論理ブロック５４０によって生成されたＥＣＣコードは、上で説明したように、他の情報のように、データおよびフラグフィールドに対応するＬＢＡ等のデータと共にフラッシュメモデバイス５１０〜５１２内にも格納される。
【００６１】
図１１〜図２１は、メモリユニット５０８内のブロック（およびブロック内のセクタ）の識別およびロケーションに関するＬＢＡ−ＰＢＡマッピング情報を格納するように構成されたＳＰＭ  ＲＡＭブロック５４８内のテーブル７００の状態の例を示す。これらの図面の全てにおいて、テーブル７００は示され、列および行からなるアレイを含み、列は、仮想物理アドレスロケーションまたはＶＰＢＡブロックアドレスロケーション７０２、移動仮想物理ブロックアドレスロケーションまたはＭＶＰＢＡブロックアドレスロケーション７０４、移動フラグロケーション７０６、使用中／フリーフラグロケーション７０８、旧／新フラグロケーション７１０、欠陥フラグロケーション７１２、およびセクタ移動ステータスロケーション７１４を含む。
【００６２】
テーブルの行は、ＰＢＡ／ＬＢＡ行７１６および７１８〜７２８を含み、各行は、テーブル７００内のアドレスされている情報に基づくＬＢＡまたはＰＢＡのいずれかであり得る行番号を有する。例えば、行７１６は行番号「００」が割り当てられているように示され、ＬＢＡ「００」に関するＰＢＡ情報がテーブル７００から取り出されている場合、次にＬＢＡ「００」は行７１６におけるＳＰＭ  ＲＡＭブロック５４８においてアドレスされ得、７３０内に位置する関連するＰＢＡを得ることができる。一方で、フラグフィールド７０６〜７１２等の、あるブロックに関するステータス情報がアクセスされている場合、「００」、「１０」、「２０」、「３０」、「４０」、「５０」、「Ｎ−１」等の、行７１６〜７２８の行番号は、ＬＢＡと反対の、ＰＢＡの値を示す。さらに、テーブル７００の各行は、各エントリがブロックに関する情報を含む、ブロックエントリとして考慮され得る。さらに、テーブル７００の各行は、ＬＢＡによってアドレスされ得る。
【００６３】
好適な実施形態において、各ブロックは１６個のセクタを含むように示される。これは、１６個のセクタからなるブロック全体を選択的に消去する能力に起因するものである。（これが理由で、ブロックのサイズを「消去ブロックサイズ」と呼ぶことがある。）図１１〜図２１に示すように、消去ブロックサイズが１６セクタである場合、各ブロックエントリ（または行）は１６個のセクタに関する情報を含む。従って行７１６は、ＬＢＡ「００」〜ＬＢＡ「１５」（または１６進法でＬＢＡ「００」〜ＬＢＡ「０Ｆ」）によってアドレスされたブロックに関する情報を含む。次の行、つまり行７１８は、ＬＢＡ「１６」（または１６進法で「１０」）〜ＬＢＡ「３１」（または１６進法で「１Ｆ」）によってアドレスされたブロックに関する情報を含む。同じことが各ブロックのＰＢＡについても当てはまる。
【００６４】
しかし、他のブロックサイズを同様に用いてもよいことに留意されたい。例えば、ブロックは３２個のセクタを含み、従って消去ブロックサイズ３２を含み得る。後者の状況において、７１６、７１８、７２０．．．等の各ブロックエントリまたは行は、３２個のセクタに関する情報を含み、ここで、各ブロックは１６個のセクタからなる。（１６セクタブロックサイズ以外のサイズが同様に使用され得る。）
テーブル７００のＶＰＢＡブロックアドレスロケーション７０２は、通常、特定のＬＢＡ値に対応するＰＢＡ値を示す情報を格納する。ＭＶＰＢＡブロックアドレスロケーション７０４は、メモリユニット５０８内で、ブロック（またはそのセクタ部分）が移動され得た場所のロケーションを識別するＰＢＡ値を示す情報を格納する。移動フラグロケーション７０６は、アクセスされているブロックが、ＭＶＰＢＡブロックアドレスロケーション７０４内の値によってＰＢＡが標識されたロケーションに移動し得た任意のセクタを有するかどうかを示す値を格納する。（７０４内のＰＢＡ値は、残りのブロックアドレス情報が位置し得るＶＰＢＡブロックアドレス７０２に示された値とは異なる。）使用中／新しいフラグロケーション７０８が情報を格納して、アクセスされているブロックがフリーのブロックであるかどうか、つまりブロックが最後に消去されたのでデータが格納されていないことを示す。旧／新フラグロケーション７１０は、ブロックが使用され、そして再び使用され、従って古いかどうかについて、アクセスされているブロックのステータスを示す情報を格納する。欠陥フラグロケーション７１２は、ブロックが欠陥であるかどうかに関する情報を格納する。ブロックが欠陥であると表される場合、設定されている欠陥フラグロケーション７１２の値によって示されるように、欠陥ブロックはこれ以上使用することができない。フラグ７０８〜７１２は、図１について図示され、かつ、説明されたフラグ１１０〜１１４と同様である。
【００６５】
セクタ移動ステータスロケーション７１４は１６ビットからなり（ロケーション７１４はブロック内の各セクタに対して１ビットを含むので、異なるサイズのブロックについては、ロケーション７１４内に異なる数のビットが要求される）、各ビットは、セクタがメモリユニット５０８内の別のブロックに移動したかどうかについてブロック内のセクタのステータスを示す。メモリユニット５０８内の移動されたブロックロケーションは、ＶＰＢＡブロックアドレスロケーション７０２内のＰＢＡ値ではなくＰＢＡによって識別される。異なって述べたように、ブロック内のセクタが移動したかどうかのステータスは、７１４内のビットの各々によって示されるように、ＶＰＢＡブロックアドレスロケーション７０２またはＭＢＰＢＡブロックアドレスロケーション７０４のいずれ一方が、セクタに関する最も最近のＰＢＡロケーションを維持するのかを示す。
【００６６】
さらに図１１を参照すると、例を用いて、ＬＢＡ「０」が書き込まれている場合の、ＳＰＭ  ＲＡＭブロック５４８（図１０）に格納されたテーブル７００のステータスの例が示される。既に述べたように、本明細書中で提示する図面において、１６個のセクタ（１０進法で０〜１５、または１６進法で０〜１０）からなるブロックサイズは、例を説明するためのみに使用される。同様に、Ｎ個のブロック（従ってＮ個のＬＢＡ）が使用され、０〜Ｎ−１までの番号が与えられる。ブロックサイズおよびブロックの数は、異なるアプリケーションについて変化し得、かつ、使用されている別個のフラッシュメモリデバイス（５１０〜５１２等）の各々のメモリ容量に依存し得る設計上の選択事項である。さらに、これらの実施例において５１２バイトの好適なセクタサイズが使用されるが、本発明の範囲および精神から逸れることなく他のセクタサイズを使用し得る。
【００６７】
フラッシュメモリデバイス５１０〜５１２（図１０）内の全てのブロックが消去され、従ってフリーになった場合には、初期化、または、システムパワーアップの前にＬＢＡ「０」への書き込み動作が行われると仮定する。スペースマネジャーブロック５４８は、次のフリーのＰＢＡロケーションが「００」であると判定しようとする。従って「００」は、ＬＢＡ行番号「００」によってテーブル７００に示されるように、ＬＢＡ「０」に関する情報が維持されている、行７１６のＶＰＢＡブロックアドレス７０２内の７３０へ書き込まれる。ＬＢＡ０ブロック内のセクタのいずれも移動する必要がないので、ロケーション７３２として示す、行７１６についてのＭＶＰＢＡブロックアドレス７０４は、初期値などの任意の値を含み得る。（図１１において、「ＸＸ」は「注意する必要のない」状態（”ｄｏｎ’ｔ  ｃａｒｅ”  ｓｔａｔｅ）を示すものとして図示される。）
７３４の値は論理状態「０」にあり、ＬＢＡ「０」ブロックがいかなる移動されたセクタも含まないことを示す。行７１６の使用されたフラグ７０８列内のロケーション７３６は、ＰＢＡ「０」ブロックが使用中であることを示す論理状態「１」に設定される。ロケーション７３８の状態は、行７１６について古いフラグ７１０を示しているが、「０」に設定されて、ＰＢＡ「０」ブロックがまだ「古く」はないことを示す。ロケーション７４０は、ＰＢＡ「０」ブロックが欠陥ではないことを示す論理状態「０」を維持し、そして、移動ステータスロケーション７１４における全てのビットが論理状態「０」にあって、ＬＢＡ「０」ブロック〜ＬＢＡ「１５」ブロック内のセクタのどれも移動していないことを示す。
【００６８】
図１１において、テーブル７００の、全ての残りの行７１６〜７２８について、移動フラグロケーション７０６、使用されているフラグロケーション７０８、古いフラグロケーション７１０、欠陥フラグロケーション７１２、および移動ステータスロケーション７１４等の、行７１６内のＬＢＡ「０」についてのステータス情報は、論理状態「０」にある。システムのパワーアップ時および／または任意のブロックの消去後に、消去されたブロックについてのエントリは、テーブル７００において、パワーアップ時の全てのブロックであるが、これらは全て論理状態「０」に設定される。
【００６９】
このとき、ＬＢＡ「０」ブロックが配置され得るメモリユニット５０８内のフラッシュメモリデバイスのうちの１つについての内容の説明は、図１１のテーブル７００に示すマッピング情報のより良い理解のために提示される。
【００７０】
ここで図２２を参照すると、（図１１に示すように）テーブル７００の状態に従ってフラッシュメモリデバイス５１０の内容の例を示す。ＬＢＡ「０」は、メモリユニット５０８内で（図１０の）コントローラ５０６によってＰＢＡ「０」において識別されるが、これはホスト識別ブロック（ｈｏｓｔ−ｉｄｅｎｔｉｆｉｅｄ  ｂｌｏｃｋ）が書き込まれたロケーションである。セクタデータロケーション７５２内のデータを含むＰＢＡ０行７５０を図２２に示す。ＰＢＡ０行７５０のＥＣＣロケーション７５４にＥＣＣコードがさらに格納される。このＥＣＣコードは、既に説明したように、書き込まれているデータに関連するＥＣＣ論理ブロック５４０によって生成される。ＰＢＡ０行７５０のフラグフィールド７５６は、書き込まれているブロックのセクタデータに対応する、移動の、使用中、古い、そして欠陥のフラグ情報を含む。本実施例において、フラグフィールド７５６内に、「使用された」フラグのみが設定され、他のフラグが設定されない、従ってフラグフィールド７５６は、ＰＢＡ「０」は「使用された」が、「移動」しておらず、「古く」なく、または「欠陥」のないことを示す「０１００」の論理状態を維持する。
【００７１】
ＰＢＡ０行７５０は、ＬＢＡアドレスロケーション７５８を維持するための格納ロケーションをさらに含み、ＰＢＡ「０」に対応するＬＢＡ番号は、本実施例では「０」である。当面、この例に関連しない間は、ＬＡＢ「０」の残りのＰＢＡロケーションは、フラッシュメモリデバイス５１０内の行７５０に続く次の１５行に格納される。
【００７２】
本明細書中に提供された本実施例の説明から、フラッシュメモリデバイス５１０のＰＢＡ行内の情報が、特に、フラッシュメモリの各ＰＢＡ行（７５０、７６２、７６４．．．）内に「移動」フラグが存在することに起因して、データおよびステータス情報に関連する任意の移動を含むＬＢＡ「０」ブロック内のデータおよびステータス情報に関するデータおよびステータス情報を識別するのに十分であることが理解される。にもかかわらず、それとは異なり、別のフィールドが、フラッシュ内の各ＬＢＡロケーションの第１のＰＢＡ行に追加され得、テーブル７００内の対応する行の移動ステータスロケーション７１４内のビットのステータスを複製する。このフィールドは、図２２に示すセクタステータスロケーション７６０内に、行７５０および７８０等の各ＬＢＡブロックの第１のＰＢＡ行内に含まれるように自由選択的に格納される。ロケーション７６０内に維持される情報は、各ＰＢＡ行のフラグフィールド７５６内の「移動」フラグのステータスをチェックすることにより発見され得るが、ロケーション７６０を用いることの明白な利点は、読み出し動作がより少ないために、システムの始動（または電源オン）時に、ＳＰＭ  ＲＡＭブロック５４８内のテーブル７００の内容は、より速く更新され得る。（テーブル７００はＳＰＭ  ＲＡＭブロック５４８内に維持され、ＳＰＭ  ＲＡＭブロック５４８は、システムがパワーダウンし、そして不揮発性メモリ、つまりメモリユニット５０８からのパワーアップ時に更新される必要のある場合にその内容が失われれる揮発性メモリであることを思い出されたい。）
つまり、全てのＰＢＡ行（好適な実施例では合計１６行）を読み出して、パワーアップ時にテーブル７００の各ＬＢＡエントリを更新するよりも、各ＬＢＡの第１のＰＢＡ行のみがフラッシュメモリから読み出され、そして、ＳＰＭ  ＲＡＭ５４８に格納されることが必要であり、それにより、不必要な読み出し動作を除去することにより時間を節約する。一方で、ＬＢＡにつき１６ビットのセクタステータス情報を維持するために、明らかにより多くのメモリ容量が利用される。
【００７３】
ロケーション７６０が使用される上記実施例において、セクタステータスロケーション７６０の値は全て「０」（または１６進法で「００００」）である。
【００７４】
フラッシュメモリデバイス５１０において、行７５０、７６２、７６４、７６８．．．の各々は、ＰＢＡロケーションであり、各行は、ＰＢＡ行番号を有し、そして、特定のＬＢＡによってアドレスされたブロック内のセクタについてのデータおよび他の情報（データおよび他の情報は行７５０について上で説明した通りである）を格納するものである。さらに、１６個の順次的ＰＢＡ行のそれぞれが１ブロックの情報を示す。つまり、ＰＢＡ行７５０、７６２、および７６４〜７６８は、１６行のＰＢＡ行を示すことが意図されるが、（図１１のテーブル７００内の行７１６として示される）ＬＢＡ０に対応し、そして、ＰＢＡ行の各々がブロック内のセクタに関する情報を維持する。情報の次のブロックは、マッピング情報がテーブル７００の行７１８に含まれ、そして、フラッシュメモリデバイス５１０等において、（１６進法で）「１０」（または１０進法で「１６」）から開始して（１６進法で）「１Ｆ」（または「３１」）で終了するロケーション内に格納された、ＬＢＡ「１０」（１６進法）によってアドレスされたブロックに関する。
【００７５】
上記例を続けて説明すると、図１２は、ＬＢＡ０がホストによって再び書き込まれている場合のテーブル７００の状態の一例を示す。ＬＢＡ０は既に書き込まれており、かつ、始めに消去されずに再び書き込まれるので、メモリユニット５０８内の別のフリーのロケーションは（ここで、それぞれセクタを含むブロックが、例えば、デバイス５１０に続く次のフラッシュメモリデバイスが、フラッシュメモリデバイス５１０が省かれたＰＢＡアドレスされたブロックをピックアップし、このことの一例として、フラッシュメモリデバイス５１０が０〜ＦＦ（１６進法）のＰＢＡを含み、そして、５１２であり得る次のフラッシュメモリデバイスが１００〜１ＦＦ（１６進法）を含み得るように、それぞれのＰＢＡに基づいて、メモリユニット５０８のフラッシュメモリデバイスの各々を介して、順次、かつ連続的に組織されることに留意することが役に立ち得る）、新たな情報を格納するためにスペースマネジャー５４４によって配置される。このフリーのロケーションは、（１６進法で）ＰＢＡ「１０」（または１０進法で１６）となるように示される。ＰＢＡ「１０」が現在は「使用中」であることを示すように、ロケーション７４２内の使用されたフラグが設定されている（本発明から逸れることなく反対の極性が使用され得るが、好適な実施形態において、論理状態「１」である場合にフラグが設定される）ことを除いて、行７１８において、ＬＢＡ「１０」についてのエントリは、図１１に示されるように、同じままである。
【００７６】
行７１６内のエントリは、ＭＶＰＢＡブロックアドレスロケーション７３２内に「１０」を示すように変更され、ＭＶＰＢＡブロックアドレスロケーション７３２は、ＬＢＡ「００」ブロックについての移動した部分のＰＢＡアドレスを提供する。ロケーション７３４内の移動フラグは論理状態「１」に設定されて、少なくとも一部分（１つ以上のセクタ）のＬＢＡ「００」ブロックが、テーブル７００のロケーション７３０内に示されるＰＢＡロケーションとは異なるＰＢＡロケーションに移動したことを示す。最終的に、行７１６内の移動ステータスロケーション７１４のビットは、（２進法で）「１０００００００００００００００」（１６進法で「８０００」）に設定され、ブロックＬＢＡ「００」内の移動したセクタのステータスを反映する。つまり、この例において、「８０００」は、ＬＢＡ「００」ブロック内の第１のセクタまたはセクタ「０」が、異なるＰＢＡロケーションに移動したことを示す。
【００７７】
ここで図２２を参照すると、図１２におけるテーブル７００の状態は、ＬＢＡ「０」ブロックの移動されたセクタがここで行７８０のＰＢＡ「１０」に書き込まれるという点で、フラッシュメモリデバイス５１０の内容に影響する。行７８０は移動されたセクタに関するデータを含む。移動されたセクタは５１２バイトのサイズを有する。移動されたセクタ情報について、行７８０はＥＣＣコード、（図１２の）テーブル７００のフラグロケーション７３４〜７４０内の値のコピー、および行７８０内のデータがＬＢＡ「００」に属することを示すＬＢＡ「００」とをさらに含み、そして、ＬＢＡ「０」ブロック内の個々のセクタの各々についての移動ステータスをさらに含み得る。
【００７８】
図面には特定的には示さないが、ＰＢＡ行７５０のロケーション７５６内の移動フラグは、対応するブロックの少なくとも一部分が移動されたことを示すように設定される。行７１６の移動ステータスロケーション７１４内に格納された値は（図１２）、１６進法で「８０００」であるが、これは行７５０のロケーション７６０内にも格納される。既に述べたように、このことは、ＰＢＡ「０」のセクタ「０」のみが「移動された」とマークされ、そして、新たなブロックＬＢＡ「０」がフラッシュメモリ内のＰＢＡ「１０」に書き込まれたことを示す。図２２のさらに詳細な説明がなくても、同様に以下の例がフラッシュメモリデバイス５１０の内容に影響することを理解されたい。
【００７９】
図１３は、ＬＢＡ「００」へのさらに別の書き込み動作が実行される場合のテーブル７００のステータスを示す。行７１６内の値（またはエントリ）は、ロケーション７３２内の値が（１６進法で）「２０」に変化して、ブロックＬＢＡ「００」の移動された部分がこのとき（図１２の「１０」ではなくて）ＰＢＡロケーション「２０」に配置されることを示す以外は、図１２と同じままである。図１２のように、移動ステータスロケーション７１４内の値「８０００」は、（ＰＢＡ「００」を有する）第１のセクタがブロックの移動された部分であることを示す。
【００８０】
行７１８は、ＬＢＡ「１０」ブロックがこの時点では古く、そして、消去されるまではこれ以上使用できないことを示すように変更される。これは、論理状態「１」に設定されているロケーション７４４内の値によって示される。ＬＢＡ「２０」についてのエントリ、つまり行７２０は、ロケーション７４６が、使用中であるＰＢＡ「２０」ブロックの状態を反映する論理状態「１」に設定されるように変更される点を除いては、変わらないままである。図１１および図１２のように、上で説明せず、かつ、図１３における特定の論理状態を有するものとして示さなかった、図１３のテーブル７００の残り全ての値は、全て変わらないままである（フラグは全て論理状態「０」に設定される）ことを理解されたい。
【００８１】
さらに上の例について続けると、図１４は、ＬＢＡ「０」に対するさらに別の書き込みが行われる場合のテーブル７００の状態を示す。比較を容易にするために、図１４に示す値で、図１３に示した状態に対して異なる論理状態にあるものをを円で囲んだ。行７１６において、ロケーション７３２内に示す、ＰＢＡ「３０」として示された、新たに移動されたロケーションを除いては、全て同じままである。ＰＢＡ「３０」は、スペースマネジャー５４４によって見つけられた次の空いたロケーションであった。既に述べたように、この値は、ＬＢＡ「０」のブロックの部分がこの時にはＰＢＡ「３０」にある、つまり、そのブロック内の、（「８０００」である行７１６の７１４内の値によって示される）第１のセクタがフラッシュメモリデバイス５１０内のＰＢＡ「３０」に移動したことを示す。
【００８２】
行７１８は消去されるまでは同じままである。ロケーション７４２および７４４内のフラグは、論理状態「０」に設定される。行７２０も、その古いフラグ７１０列内の値が、ＰＢＡ「２０」のブロックも古く、まず消去しなければ使用できないことを示すように、「１」に変更されていることを除いては、変わらないままである。行７２２は、その使用されたフラグ７０８列内の値は、論理状態「１」に変化して、ＬＢＡ「３０」のブロックが現在使用中であることを示すこと以外は、同じままである。
【００８３】
図１５は、テーブル７００の状態の別の例であり、テーブル７００は、テーブルが図１３に示す状態にあり、ホストのＬＢＡ「５」への書き込みがそれに続くものと仮定されたテーブル７００の状態を示す。再び、図１３から図１５へと、１回きりの変化である、テーブル７００内の値への変化を、変化した値を円で囲むことによって示す。
【００８４】
ＬＢＡ「５」へ書き込みを行う場合、行７１６、７１８、および７２０等のＬＢＡエントリはＬＢＡ「００」、ＬＢＡ「１０」、およびＬＢＡ「２０」等についてのみであり、従って、ＬＢＡ「５」エントリを反映しないことを理解するべきである。ＬＢＡ行エントリの各々は、好適な実施形態において１６個のセクタである各ブロックを有する１ブロックの情報に関することを思い出されたい。この理由のために、ＬＢＡ「５」は実際、行７１６内の第５のセクタをアドレスする。ＰＢＡ「２０」はＬＢＡ「０」を格納するために使用されたので、ＬＢＡ「５」に対応するＰＢＡ「２０」内のセクタのみがまだ書き込まれておらず、「フリー」である。従って、ＬＢＡ「５」についてのデータは、セクタ「５」内のＰＢＡ「２０」内に格納される。行７１６の移動ステータスロケーション７１４は、論理状態「８４００」（１６進数）に変更される。これは、ＬＢＡ「０」内の第１および第５のセクタのロケーションが、いずれも、フラッシュメモリデバイス５１０内のＰＢＡ「２０」において識別されることを反映している。図１５のテーブル７００における残りの値は、図１３に示す値と同じままである。
【００８５】
図１６〜図１８は、テーブル７００の状態が、パワーアップまたはメモリユニット５０８によるブロックの消去のいずれかの後にどのようになり得るかについての、さらに別の例を示す。図１６および図１７において、図１１および図１２を参照して説明したのと同じ書き込み動作が実行される。図１６および図１７におけるテーブル７００の状態は、それぞれ図１１および図１２における状態と類似している。（後者２つの図面は読者の便宜のためにのみ図１６および図１７として再び描いた。）要するに、図１６は、ＬＢＡ「０」への書き込み後のテーブル７００の状態を示し、図１７は、ＬＢＡ「０」への別の書き込み後のテーブル７００の状態を示す。
【００８６】
図１８は図１７の後にピックアップを行い、そして、ホストがＬＢＡ「５」に書き込みを行った後にテーブル７００の状態を示す。図１８に示すように、ＬＢＡ「５」はＰＢＡ「１０」に移動される。ここで、ＬＢＡ「０」もまたＰＢＡ「１０」に配置される。この目的のために、ＭＢＰＢＡブロックアドレスロケーション７３２は、行７１６内の「１０」に設定され、そして、移動フラグは同じ行内のロケーション７３４に設定される。さらに、行７１６における移動ステータスロケーション７１４の状態は、ＬＢＡ「０」およびＬＢＡ「５」が移動したこと、またはＬＢＡ「００」内の第１および第５のセクタが移動したことを示す「８４００」（１６進法）に設定される。これらの２つのセクタは、この時フラッシュメモリデバイス５１０のＰＢＡ「１０」ロケーション内に配置されるので、これらのセクタの各々についての移動フラグは、フラッシュメモリデバイス５１０内にも設定される。残りのフリーのセクタはそのブロック内で利用可能であるので、ＬＢＡ「５」がＰＢＡ「１０」に移動したことを理解されたい。つまり、使用されているそのブロックのＬＢＡ「０」であってさえ、同じブロックの１５個の他のセクタが利用可能であった。なお、ＬＢＡ「５」への書き込み後、第５のセクタは使用中である。
【００８７】
図１８の例を続けて説明すると、図１９に、ホストがさらに別の時間をＬＢＡ「０」に書き込んだ後のテーブル７００の状態を示す。テーブルによると、さらに別のフリーのＰＢＡロケーション「２０」が、ＬＢＡ「５」およびＬＢＡ「０」が移動した場所に見つかる。第１に、ＬＢＡ「５」はロケーションＰＢＡ「１０」、ロケーションＰＢＡ「２０」へと移動し、次に、ロケーションＬＢＡ「０」の新たなブロックがＰＢＡ「２０」に書き込まれる。前に説明したように、まず、ブロックの移動が行われる（例えば、ここではＬＢＡ「５」のブロックが移動する）任意の時間に、現在存在しているフラッシュメモリ内のロケーションからコントローラ５０６内の一時的なロケーションに、つまりバッファＲＡＭブロック５２２と共に、移動する。そして次に、そこからフラッシュメモリデバイス内の新たなロケーションへと転送される。
【００８８】
行７２０のロケーション７４６内の使用されたフラグは、フラッシュメモリ内のＰＢＡ「２０」ロケーションの使用を反映するように設定され、ロケーション７４４内の古いフラグは、消去されるまで、ＰＢＡ「１０」ロケーションの使用を破棄するように設定される。再び、フラッシュメモリにおいて、これらのフラグの状態は、ＬＢＡ「０」およびＬＢＡ「５」両方のセクタについての移動フラグの状態と同様に複製される。
【００８９】
図２０は、図１８に示すテーブル７００の状態からピックアップし、そして、ホストがＬＢＡ「５」に書き込みを行った後にテーブル７００どのようであり得るかについて、さらに別の状態を示す。この場合、ＬＢＡ「０」のブロックは、現在格納されている、フラッシュメモリデバイス５１０内のロケーションＰＢＡ「１０」から、フラッシュメモリのロケーションＰＢＡ「２０」へとまず移動する。その後、ホストによってＬＢＡ「５」に書き込まれている新たなブロックが、フラッシュメモリのロケーションＰＢＡ「２０」に書き込まれる。従って、テーブル７００およびフラッシュメモリデバイス５１０の対応するロケーション両方におけるフラグは、これらの更新されたロケーションを反映するように設定される。
【００９０】
図２１はまた、図１８に示すテーブル７００の状態からピックアップし、そして、ホストがＬＢＡ「７」に書き込みを行った後にテーブル７００がどのようであり得るかについての状態を示す。この場合、そのロケーションはまだ使用されていないので、新たなブロックが単にフラッシュメモリのロケーションＰＢＡ「１０」に書き込まれる。さらに、行７１６内の移動ステータスロケーション７１４の３つのビットは、ＬＢＡ「０」、ＬＢＡ「５」、ＬＢＡ「７」がフラッシュメモリ内の別のＰＢＡロケーションに移動したことを示すように設定される。ロケーション７３２は、これら３つのブロックが格納されたロケーションがＰＢＡ「１０」であることを示す。
【００９１】
これまでに示された議論から理解され得るように、ある時点で、１ブロック内で移動中のセクタの数が非効率的な動作を助長する。従って、ユーザが、１ブロック内で、該ブロックが「古い」と示され（古いフラグが設定され）、ブロックがもはや使用されなくなる前に移動され得るセクタの数に関する閾値を該ブロックが消去されるまで設定する必要が生じる。この閾値は、例えば、１ブロック内のセクタ数の半分に設定されてもよい。これは、以下のように示される。１６セクタを有する１つのブロックの場合には、８つのセクタが別のブロックに移動され、「本来の」ブロックと「移動された」ブロック（移動されたセクタが存在するブロック）とが、同じＰＢＡブロックに組合わせられる。組合わせられたＰＢＡブロックは、全体で新しいブロックに格納されてもよく、あるいは、「本来の」ブロックが、「移動された」ブロックと組合わせられ、「移動された」ブロック内に移動してもよい。後者の場合には、「本来の」ブロックは、次に、その消去のために「古い」とマークされる。組合わせられたＰＢＡブロックが新しいブロックに格納される場合には、「本来の」ブロックおよび「移動された」ブロックの両方が、「古い」とマークされる。
【００９２】
図２３は、書込み動作中に行われるステップの幾つかの概要を説明する概要フローチャートを示す。これは、そのような動作中に生じる事象の幾つかのシーケンスを示すことを意図し、本発明の好適な実施形態に使用される方法または装置の包括的提示では決してない。
【００９３】
図２３に概要が説明されるようなステップは、マイクロプロセッサブロック５２４がシステムの動作中にプログラムコード（またはファームウェア）を実行する際に、マイクロプロセッサブロック５２４の指示の下で行われる。ホストがＬＢＡ  Ｍのブロックに書込みを行うと（ステップ８００）、ステップ８０２において、スペースマネージャブロック５４４が、ＳＰＭ  ＲＡＭ  ブロック５４８のテーブル７００における対応する使用中フラグの状態を調べることによって、ＬＢＡ  Ｍが使用中であるか否かを調べる。使用中でなければ、ステップ８０４において、メモリユニット５０８中の次のフリーＰＢＡブロックに関する探索が行われる。フリーブロックが捜し出されなければ、「エラー」状態が８０８において検出される。しかし、フリーＰＢＡが捜し出されると、ステップ８０６において、その使用中フラグが、テーブル７００およびフラッシュメモリにおいてマークされる（または設定される）。ステップ８１０において、フリーブロックのＰＢＡが、テーブル７００中の対応するＬＢＡ行のＶＰＢＡブロックアドレス７０２のロケーションに書込まれる。
【００９４】
ステップ８０２に戻って、ＬＢＡＭブロックが使用中である場合には、次のフリーＰＢＡブロックに関する探索が、やはりステップ８１２において行われ、そのようなフリーブロックが見つからない場合には、８１４において、「エラー」状態が示される。一方、フリーＰＢＡロケーションが見つかった場合には、ステップ８１６において、そのＰＢＡが、テーブル７００およびフラッシュメモリにおいて使用中とマークされる。次に、ステップ８１８において、ブロックの状態が、移動フラグを設定すること、およびテーブル７００の移動ステータスロケーション７１４において適切なビットを設定することによって移動されたことを示す。ブロックが移動された新しいロケーションもまた、上記のようにテーブル７００に示される。
【００９５】
最後に、ステップ８１８およびステップ８１０の後に、データおよび全ての対応するステータス情報、ＥＣＣコード、およびＬＢＡが、フラッシュメモリ内のＰＢＡロケーションに書込まれる。
【００９６】
上記のように、１ブロック中のかなりの部分が移動されたセクタを有する場合には（好適な実施形態では、これは、１６セクタの内の８つ）、このブロックは、対応する「古い」フラグを設定することによって「古い」であると示される。周期的に、「古い」フラグが設定されたブロックは、消去され、次に、再使用（あるいは、再プログラミングまたは再書込み）され得る。
【００９７】
理解できるように、図１０〜図２３の実施形態の利点は、ブロックが、ホストによってアクセスされる度毎に消去される必要がないことである。なぜなら、例えば、ブロックの何れかの部分（またはセクタ）が再書込みされている最中であれば、フラッシュメモリ装置中でそのブロックを消去する、またはそのブロック全体をフラッシュ内のフリー領域に移動させるのではなく、再書込み中の部分のみを、フラッシュ中の他の場所（すなわち、ＭＶＰＡブロックアドレスによって識別されるフリーロケーション）に移動させる必要があるからである。これに関連して、時間のかかる消去周期が、後まで回避され、１ブロック全体を読取り、そのブロック全体を移動させる際に時間が浪費されない。
【００９８】
代替の実施形態では、フラッシュメモリに格納される各セクタに関係する情報がより少ないかもしれない。同様に、ＳＰＭ  ＲＡＭブロック５４８（図１０）中のテーブル７００が、以下に説明されるように、より少ない情報を維持する。
【００９９】
図２４は、フラッシュメモリチップ（フラッシュメモリ装置５１０等）が格納し得る情報例を示す。図２４には、Ｎ個のブロック（ブロック１０００、１００２、．．．、１００４）が示され、各ブロックは、最大ｍ個のセクタを有する。ブロック１０００を例にとると、ブロック１０００中のセクタ１００６、１００８、．．．、１０１０の各々が、データフィールド１０５２およびＥＣＣフィールド１０１４を含む。好適な実施形態では、データフィールド１０５２は、５１２バイトを包含し、ＥＣＣフィールド１０１４は、４バイトの情報を包含する（ただし、データおよびＥＣＣの両方の他の大きさが、本発明の精神から逸脱することなく用いられ得る）。
【０１００】
各ブロック中の第１のセクタ（例えば、ブロック１０００のセクタ１００６）が、さらに、ブロックが欠陥品であるか否かを示す欠陥フラグ１０１６を含む。好適な実施形態では、１ブロック中のセクタの何れかが欠陥品である場合には、以下にさらに説明されるように、そのブロック全体が欠陥品としてマークされる。
【０１０１】
１ブロック中の各セクタは、スペース領域１０１８をさらに含み得る。各ブロック中には、間もなくより詳しく説明されるように、フラッシュメモリユニット内でそのブロックを識別するためのＬＢＡ１０２０が包含される。しかし、図２４においては、ＬＢＡ１０２０が、ブロック１０００の最後のセクタ１０１０内に位置するように示されているが、ＬＢＡ１０２０は、代わりに、ブロック１０００の他の何れかのセクタ内であって、さらにそれが配置されるセクタ内の任意の領域内に配置されてもよいことに留意することが重要である。例えば、ＬＢＡ１０２０は、セクタ１００８のスペース領域１０２２内に配置されてもよく、あるいは、データがブロック１０００のセクタ１００８に格納されるロケーションの直前である１０２４に配置されてもよい。ブロック１０００に使用されるのと同じセクタ構成が、フラッシュメモリ装置内のブロック１００２および１００４等の残りのブロックにも使用される。
【０１０２】
同様に、欠陥フラグ１０１２のロケーションは、ブロック内のどこでもよい。例えば、欠陥フラグ１０１２は、１０２４または１０２２に二者択一的に格納されてもよい。しかし、ブロックにつきたった１つの欠陥フラグが格納される。本発明のある局面は、欠陥フラグが使用される方法に関係する。
【０１０３】
フラッシュメモリチップの製造中に、メモリ内の欠陥が、一般的に、チップ製造メーカーによって識別され、マークされる。これは、典型的には、欠陥ブロック内の所定のロケーションに事前定義されたパターン（バイト幅）を書込むことによって行われる。つまり、製造メーカーは、フラッシュチップを消去し、全て「１」等の値が、次に、上手く消去されたフラッシュチップ内の各メモリセルによって保有される。ブロック内のセクタまたはセルが欠陥品である場合には、製造メーカーは、欠陥ブロック（図２４には不図示）内のどこかに配置される製造欠陥フラグを所定の値に設定する。この製造欠陥フラグは、欠陥フラグ１０１２とは異なり、そのロケーションは、製造メーカーによって決定され、設計選択によってではない。これらの製造メーカーによって識別される欠陥ブロックは、次に、システム動作中無視される（または使用されない）。つまり、スペースマネージャブロック５４４（図１０）が、これらの欠陥ブロックを把握し、フラッシュメモリ装置内でフリーブロックを探索する際にそれらを使用しないことを理解している。
【０１０４】
フラッシュチップの製造中に検出される欠陥以外に、上に説明したように、摩耗によるチップの動作中に進行するさらなる欠陥が存在し得る。これらの欠陥は、時に、業界全体で「成長欠陥」（ｇｒｏｗｎ  ｄｅｆｅｃｔ）と呼ばれ、フラッシュメモリ装置の使用が用いられるシステムによって考慮されなければならない。
【０１０５】
「成長欠陥」のケースは、システム動作の観点から説明される。本発明の好適な実施形態では、ブロック１０００の消去後に、欠陥フラグ１０１２（図２４）が、消去されたブロックが欠陥品であるか否かを示すようにプログラムされている。すなわち、消去されたブロック１０００中のセルが上手く消去された場合には、欠陥フラグ１０１２が、ブロックが欠陥品でないことを示す、「５５」（１６進数）という１バイト幅の値等の事前定義された値に設定される。逆に、ブロックが上手く消去されなかった場合には、「００」等の「５５」以外の値が、欠陥フラグ１０１２に書込まれる、あるいは、どのような値も書込まれず、消去後の欠陥フラグの状態（通常、消去状態は、全て「１」である（あるいは、１６進数で「ＦＦ」である））が、維持される。しかし、後者の場合には、欠陥フラグの消去状態は、成功した消去と区別するために「５５」以外の値でなければならない。
【０１０６】
欠陥フラグ１０１２の使用は、システムのパワーアップ後に特に注目される。スペースマネージャブロック５４４は、各ブロックの欠陥フラグを素早くスキャニングし、各ブロックの欠陥フラグ１０１２中の値「５５」を捜すことによって欠陥品ではないブロックを後のために識別することによって、どのブロックが欠陥品であるかがわかる。ブロックがパワーアップ後に欠陥品ではなく、後に欠陥品になった場合には、その欠陥フラグは、それを示すように変更され、次にシステムがパワーアップされると、その欠陥ブロックが、スペースマネージャによって注目され、そのブロックのあらゆる使用が回避される。
【０１０７】
書込み動作中に、１つのブロックの１つ以上のセルの故障が生じた場合には、そのブロックは、先ず消去され、次に、欠陥ブロックの欠陥フラグ１０１２に「５５」以外の値（「００」等）を書込むことによって欠陥品であるとマークされる。あるいは、欠陥ブロックの欠陥フラグ１０１２にいかなる値も書込まれない。
【０１０８】
これまでに記載されたような欠陥フラグを有することの利点の１つは、システムのパワーアップ中に、スペースマネージャブロック５４４（図１０）が、欠陥品ではないブロックを素早く見つけることができることである。
【０１０９】
代替の実施形態では、図２５に示されるように、フラッシュメモリ装置内の各ブロックのＬＢＡが、同じブロックの異なる２つのセクタ内に格納される。例えば、ブロック１０００が消去された後であって、その消去に続くブロック１０００の第１の書込み動作中に、スペースマネージャブロック５４４が、ブロック１０００またはその一部が自由に書込まれることを決定する。ブロック１０００に関連するＬＢＡは、次に、ブロック１０００の２つのロケーション１０３０および１０２０（それぞれセクタ１００６および１０１０内にある）にプログラムされる。
【０１１０】
その後、システムへの電力が一時的に中断される度に、あるいは、パワーアップの際に、ロケーション１０３０および１０２０における２つのＬＢＡが互いに比較され、それらが一致し、且つ欠陥フラグ１０１２が、ブロックが欠陥品ではないことを示すと、そのブロックは、スペースマネージャブロック５４４の指示の下で、情報記憶装置として使用され続ける。しかし、欠陥フラグ１０１２が、ブロックが欠陥品ではないが、２つのＬＢＡが一致しないことを示すと、ブロック１０００は、なお使用され続けるが、さらなる再使用の前に最初に消去される。後者の状況は、例えば、システムがブロック１０００に書込み中であり、セクタ０で始まる最初の幾つかのセクタが書込まれたが、停電が生じ、その結果、情報がブロック１０００の残りのセクタに書込まれなかった場合に生じ得る。この場合には、ロケーション１０３０および１０２０におけるＬＢＡ値はおそらく一致しない。なぜなら、ブロック１０００のセクタｍ−１またはセクタ１０１０が、停電前に書込まれていなかったからである。電力が回復すると、完全に書込まれていないので、ブロック１０００は、停電前と同じ状態で使用されるべきではない。従って、ロケーション１０３０および１０２０において２つのＬＢＡ値間の不一致が検出されると、コントローラ５０６（図１０）が、再び使用される前にブロック１０００を消去する。
【０１１１】
図２４に示されるように、各ブロック毎にたった１つのＬＢＡが使用される場合には、明らかに、各ブロック中の２つのＬＢＡの比較は行われないが、欠陥品であるブロックの検出は、上記のように、欠陥フラグの使用によって維持される。さらに、ＬＢＡは、最後（すなわち、ブロックの全てのセクタが書込まれた後）に書込まれてもよい。ＬＢＡを最後に書込むことは、ブロックに上手く書込んだことの付加的指標である。
【０１１２】
本発明の別の局面を例示するために、図２６は、左側に、フラッシュメモリ装置の幾つかのブロックの内容例（これは、図２４に示される情報と同じである）を示し、右側に、図の左側にあるブロック情報に対応するテーブル７００の内容例を示す。ブロックの内容を示す目的は、単に、テーブル７００に関するブロックのＬＢＡ−ＰＢＡアドレッシング間の相関性を理解する際の読み手に対する便宜を図るためである。図２６に示される例は、フラッシュメモリ中に格納される際のブロックのアドレスと、情報がＳＰＭ  ＲＡＭブロック５４８に格納される場合と同じブロックのアドレスとの間のこの代替の実施形態のマッピングを例示するものである。テーブル７００では、１列に、各行毎に、仮想ＰＢＡフィールド１０３６と、欠陥フラグ１０１２を含むフラグフィールド１０３８とが格納されて示されている。行１０４０、１０４２、１０４４、．．．、１０５０は、それぞれＬＢＡに対応し、それぞれ「０」、「１」、「２」、．．．「Ｚ」によってアドレッシングされる。各行毎の仮想ＰＢＡフィールド１０３６は、実際には、内部に格納された１６のセクタを有するフラッシュメモリ内のブロックを指すＬＢＡアドレスポインタを含む。この点では、仮想ＰＢＡが、１６セクタのＰＢＡとして機能する（セクタの数は、代替の実施形態では、１６以外でもよい）。
【０１１３】
ホストが、例えばＬＢＡ０５を読取るコマンドを送ると、図１０におけるコントローラ５０６が、先ず、値「００」を得るために、値「０５」の４つの最下位ビット（ＬＳＢ）を生成する。次に、「００」をテーブル７００の行アドレスとして用いて、図２６の行１０４０がアドレッシングされる。ホストによって送られるＬＢＡ値の４つのＬＳＢがマスクされる理由は、テーブル７００の各行によって表される１６のセクタが存在するからであることに留意されたい。１６のセクタは、２値表記では４ビットに変換される２の４乗である。例えば、各行が３２のセクタを表す場合には、ホストによって送られるＬＢＡの５つのＬＳＢがマスクされる。
【０１１４】
ＳＰＭ  ＲＡＭブロック５４８中の行１０４０がアドレッシングされると、行１０４０に関する仮想ＰＢＡフィールド１０３６の値（この場合「００」である）が取出され、「００」が次に、フラッシュメモリ装置内に格納されるブロックに対するポインタとして使用される。つまり、この例においては、ブロック０またはブロック１０００（図２６の左側）がアドレッシングされる。しかし、読取りが意図されたセクタに到達するためには、ホストによって送られたＬＢＡ値から最初にマスクされた４ビットが、ブロック１０４０内の６番目のセクタであるセクタ「５」（不図示）を具体的にアドレッシングするために使用される。セクタ５（不図示）のデータフィールド１０５２に格納されたデータは、次に、取出される、または読取られる。次に、同じセクタのＥＣＣフィールド１０１４が読取られる。
【０１１５】
ＬＢＡロケーション１０２０は、テーブル７００の行１０４０の仮想ＰＢＡフィールド１０３６に格納されるのと同じアドレス値である値「００」を有するべきである。これは、スペースマネージャを更新するために、パワーアップルーチン間に、フラッシュメモリ装置においてブロック１０００をブロック「００」として識別することを意図する。しかし、ＬＢＡロケーション１０２０は、上記のようにホストによって送られるＬＢＡ値を表さない。このような混乱を避けるために、ロケーション１０２０の値は、ＬＢＡアドレスではなく、「クラスタ」アドレスと呼ばれ得る。
【０１１６】
書込み動作の状況における別の例を例示するために、ホストが、コントローラ５０６に対してＬＢＡ「１７」（１０進数）に書込みを行うことを命令すると、コントローラは、「１７」の１６進数（すなわち、「１１」）のＬＳＢをマスクする。「１７」のマスクされたバージョンは、１６進数で「１」である。従って、行１０４２が、テーブル７００においてアドレッシングされ、スペースマネージャブロック５４４によって見つけられるようなフリーブロックのアドレスが、行１０４２の仮想ＰＢＡフィールド１０３６に配置される。この場合には、ブロック２が、次のフリーブロックとして見つけられる。フラッシュメモリ装置内で、ブロック１００２であるブロック２がアドレッシングされる。情報が実際に書込まれるセクタは、ブロック１００２のセクタ１（該ブロック中の第２のセクタ）である。なぜなら、ＬＢＡ値「１１」の４つのＬＳＢがホストによって送られるからである。データおよびＥＣＣは、次に、ブロック１００２のセクタ１に書込まれる。
【０１１７】
図２６の好適な実施形態例が、図２５を参照して説明された実施形態と共に使用される場合には、ＬＢＡ（またはクラスタ）アドレスが、各ブロック内の２つの場所に書込まれる。
【０１１８】
本発明を具体的な実施形態の面から説明したが、それらの変更および改変が、当業者には無論明らかとなることが予想される。従って、以下の請求の範囲が、本発明の真の精神および範囲に入るような、そのような変更および改変の全てを包含するものとして解釈されることを意図する。
【図面の簡単な説明】
【０１１９】
【図１】図１は、本発明に関する半導体大容量記憶装置のためのアーキテクチャーの概略ブロック図を示す。
【図２】図２は、図１のＲＡＭ記憶装置の物理ブロックアドレス１０２の別の実施態様を示している。
【図３】図３は、本発明の大容量記憶装置を組み込んだシステムのブロック図を示す。
【図４】図４から図８は、本発明の利点を実現するためのいくつかのフラグ及び情報の状態を示す。
【図５】図４から図８は、本発明の利点を実現するためのいくつかのフラグ及び情報の状態を示す。
【図６】図４から図８は、本発明の利点を実現するためのいくつかのフラグ及び情報の状態を示す。
【図７】図４から図８は、本発明の利点を実現するためのいくつかのフラグ及び情報の状態を示す。
【図８】図４から図８は、本発明の利点を実現するためのいくつかのフラグ及び情報の状態を示す。
【図９】図９は、本発明に関する第１のアルゴリズムのフローチャートブロック図を示す。
【図１０】図１０は、本発明の好ましい実施態様を含むデジタル・カメラなどのデジタルシステムの高次ブロック図を示す。
【図１１】図１１から２１は、ＬＢＡ−ＰＢＡマッピング情報を含む図１０のデジタルシステムにおいて格納され得るマッピングテーブルの状態を示すいくつかの例を示す。
【図１２】図１１から２１は、ＬＢＡ−ＰＢＡマッピング情報を含む図１０のデジタルシステムにおいて格納され得るマッピングテーブルの状態を示すいくつかの例を示す。
【図１３】図１１から２１は、ＬＢＡ−ＰＢＡマッピング情報を含む図１０のデジタルシステムにおいて格納され得るマッピングテーブルの状態を示すいくつかの例を示す。
【図１４】図１１から２１は、ＬＢＡ−ＰＢＡマッピング情報を含む図１０のデジタルシステムにおいて格納され得るマッピングテーブルの状態を示すいくつかの例を示す。
【図１５】図１１から２１は、ＬＢＡ−ＰＢＡマッピング情報を含む図１０のデジタルシステムにおいて格納され得るマッピングテーブルの状態を示すいくつかの例を示す。
【図１６】図１１から２１は、ＬＢＡ−ＰＢＡマッピング情報を含む図１０のデジタルシステムにおいて格納され得るマッピングテーブルの状態を示すいくつかの例を示す。
【図１７】図１１から２１は、ＬＢＡ−ＰＢＡマッピング情報を含む図１０のデジタルシステムにおいて格納され得るマッピングテーブルの状態を示すいくつかの例を示す。
【図１８】図１１から２１は、ＬＢＡ−ＰＢＡマッピング情報を含む図１０のデジタルシステムにおいて格納され得るマッピングテーブルの状態を示すいくつかの例を示す。
【図１９】図１１から２１は、ＬＢＡ−ＰＢＡマッピング情報を含む図１０のデジタルシステムにおいて格納され得るマッピングテーブルの状態を示すいくつかの例を示す。
【図２０】図１１から２１は、ＬＢＡ−ＰＢＡマッピング情報を含む図１０のデジタルシステムにおいて格納され得るマッピングテーブルの状態を示すいくつかの例を示す。
【図２１】図１１から２１は、ＬＢＡ−ＰＢＡマッピング情報を含む図１０のデジタルシステムにおいて格納され得るマッピングテーブルの状態を示すいくつかの例を示す。
【図２２】図２２は、図１０の好ましい実施態様で使用される不揮発性メモリ装置の例を示す。
【図２３】図２３は、図１０の不揮発性装置に対する情報のブロックの書き込みに使用される一般的なステップを示す高次フローチャートを示す。
【図２４】図２４は、新しい欠陥フラグ及びＬＢＡアドレス手段を用いた本発明の別の実施態様におけるフラッシュメモリ装置の内容例である。
【図２５】図２５は、ブロック内部で二つの異なるセクタロケーションの各ブロックに対するＬＢＡアドレスを格納する本発明の別の代替の実施態様で用いられるフラッシュメモリ装置の内容例である。
【図２６ａ】図２６ｂにキーで示される図２６は、図２６ａ及び図２６ｂを含み、本発明の別の代替の実施態様例が示されている。そこでは、フラッシュメモリ装置及びＳＰＭ  ＲＡＭブロックの内容が記載されており、図１０のシステムで使用されるようなＬＢＡ及びＰＢＡアドレッシング間の相互関係を示している。
【図２６ｂ】図２６ｂにキーで示される図２６は、図２６ａ及び図２６ｂを含み、本発明の別の代替の実施態様例が示されている。そこでは、フラッシュメモリ装置及びＳＰＭ  ＲＡＭブロックの内容が記載されており、図１０のシステムで使用されるようなＬＢＡ及びＰＢＡアドレッシング間の相互関係を示している。
【図１】
2005251219.tif 000003
【図２】
2005251219.tif 000004
【図３】
2005251219.tif 000005
【図４】
2005251219.tif 000006
【図５】
2005251219.tif 000007
【図６】
2005251219.tif 000008
【図７】
2005251219.tif 000009
【図８】
2005251219.tif 000010
【図９】
2005251219.tif 000011
【図１０】
2005251219.tif 000012
【図１１】
2005251219.tif 000013
【図１２】
2005251219.tif 000014
【図１３】
2005251219.tif 000015
【図１４】
2005251219.tif 000016
【図１５】
2005251219.tif 000017
【図１６】
2005251219.tif 000018
【図１７】
2005251219.tif 000019
【図１８】
2005251219.tif 000020
【図１９】
2005251219.tif 000021
【図２０】
2005251219.tif 000022
【図２１】
2005251219.tif 000023
【図２２】
2005251219.tif 000024
【図２３】
2005251219.tif 000025
【図２５】
2005251219.tif 000026
【図２６ａ】
2005251219.tif 000027
【図２６ｂ】
2005251219.tif 000028
【図２４】
2005251219.tif 000029