"明細書に記載の発明。必要とされるのは、CAMセル装置の過剰なオーバーヘッドなしに格納されたデータに迅速にアクセスを提供する半導体ハードディスクアーキテクチャーである。発明の概要項目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を発展するステップと、dLBA行をアドレッシングするためにその特定の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によって識別されるロケーションに格納され得る、記憶装置。本発明は不揮発性メモリ記憶装置のためのものである。その装置はデータファイルが変更される毎に書き込み前消去を実行をしないよう構成される。さらに、CAMセルに伴うオーバヘッドを回避するため、本手法はRAMアレイを利用している。ホストシステムは論理ブロックアドレスを用いて大容量記憶データの編成を維持する。RAMアレイはホストの論理ブロックアドレスLBAと同じアドレスによってアドレスされるよう構成されている。RAM内でそのようにアドレスされる各ロケーションはホストから求められる不揮発性大容量記憶装置内のデータの物理アドレスを保持するフィールドを含む。この物理ブロックアドレスPBA情報は、電源停止後処理を再開した後に装置が依然として機能することを保証する不揮発性メモリ内に保持されなければならない。なぜなら、RAMは揮発性メモリであるからである。加えて、状態フラグはまた各物理ロケーションに格納される。状態フラグは不揮発性媒体または、RAMと不揮発性媒体の両方の何れかに格納され得る。装置は二つの主要アルゴリズムの実行のための回路構成及び、半導体大容量記憶装置に関連したハードウエアアーキテクチャーを有する。第1のアルゴリズムは、ホストの論理ブロックを物理ブロックアドレスにマッピングする手段を提供し、これによりパフォーマンスが相当改善され最小のハードウエア補助で済む。加えて、第2のアルゴリズムは修正されたデータファイルを大容量記憶装置に書き戻す時に書き込み前消去サイクルを回避するための手段を提供する。その代わりに、消去は行われず、修正されたデータファイルは大容量記憶装置の空いた部分に書き込まれる。本発明において読み込みは、論理ブロックアドレスをメモリ記憶装置に提供することで実行される。RAMアレイは論理ブロックアドレスが一つのRAMロケーションを選択するよう構成される。そのロケーションは、ホストまたは、他の外部システムから要求されたデータの物理ブロックアドレスを保持している。そのデータファイルはその時ホストに読み出される。第2のアルゴリズムでは、消去サイクルは従来技術でなされたようなブロックの消去サイクル後にそれ自身にプログラムするというよりむしろ、変更されたデータファイルを変更されたデータ大容量記憶ブロックにプログラムすることで回避される。本発明の別の実施態様では、方法及び装置は不揮発性メモリ内部の第1の領域から不揮発性メモリ内部の未使用領域へブロック内のセクタを効率よく移動し、第1の領域を使用中として記すために提示される。つまり、本発明の好ましい実施態様は、ホストによってアクセスされたブロックを識別する論理ブロックアドレスを物理ブロックアドレスにマッピングするためのマッピング情報を格納し、不揮発性メモリ、選択的に消去可能で個別に移動し得る一つまたは、複数のセクタを有するブロックを識別する、方法、及び、装置を有する。そのマッピング情報には、不揮発性メモリ内の本来のロケーションを識別する仮想的物理ブロックアドレスと、不揮発性メモリ内の移動されたロケーションを識別する移動された仮想物理ブロックアドレスがあり、前者の内部ではブロックが格納され、後者の内部では一つまたは、複数の格納されたブロックのセクタが移動される。そのマッピング情報にはさらに、本来の物理ブロックアドレスを使用するためのステータス情報、アクセスされたブロック内部の移動されたセクタに関する情報を提供するための移動された物理ブロックアドレスが含まれている。好ましい実施態様の詳細な説明図1は、本発明に関する半導体記憶媒体を実装するためのアーキテクチャーを示している。記憶媒体は、ホストまたは、他の外部デジタルシステムとの利用のためのものである。大容量記憶装置は、揮発性RAMアレイ100及び不揮発性アレイ104の二つの部分に区分される。好ましい実施態様によると、不揮発性メモリ記憶装置の全てはフラッシュである。フラッシュはEEPROMによって置き換えられ得る。RAMは任意の都合の良いタイプであるメモリ記憶装置104は、データを0からN-1までのNブロックに編成する。データの各ブロックは、Mバイト長である。好ましい実施態様では、各データブロックは512バイト長で、市販利用されているハードディスクドライブにおけるセクタ長に対応しており、さらにフラグ、論理ブロックアドレス情報LBA及び関連したECCを格納するための余剰バイトを有する。メモリ104はユーザが必要とするメモリ記憶装置と同じ容量を有し得る。大容量記憶装置の例には、100Mバイトのアドレシングが可能な記憶装置も含み得る。RAMロケーション102は複数ある。各RAMロケーション102は、ホストシステムまたは、不揮発性媒体の実際の物理アドレスによって与えられる論理ブロックアドレスの適切な一つを用いてコントローラによって一意にアドレスされる。RAMロケーション102は論理ブロックアドレスに関連するデータ及び、不揮発性媒体の物理ブロックアドレスに関連するフラグの物理ブロックアドレスを有する。物理ブロックアドレスPBAは図2に示されるように、二つのフィールドに分割され得る。これらのフィールドはデータブロックのグループのクラスタアドレスのために使用され得る。第1のフィールド290は、クラスタアドレスを選択するために用いられ、第2のフィールド292は、このクラスタに関連する論理ブロックアドレスのスタートアドレスを選択するために用いられ得る。情報フラグの集まりもまた、各不揮発性メモリロケーション106のために格納されている。これらのフラグは、旧/新フラグ110、使用中/フリーフラグ112、欠陥フラグ114、及びシングル/セクタフラグ116を含む。さらに、データ格納領域112も有する。本発明の大容量記憶装置にデータを書き込む時、コントローラはデータを格納するための第1の利用可能な物理ブロックを決定する。ホストによって選択された論理ブロックアドレスに対応するRAMロケーション102は、104図1内の不揮発性メモリアレイ内部のデータが実際に格納される物理ブロックアドレス内に書き込まれる。ユーザがワープロ文書を準備し、コンピュータに文書の保存を指示する例を考える。文書は大容量記憶システム内に格納される。ホストシステムは大容量記憶システムに論理ブロックアドレスを割り当てる。本発明の大容量記憶システムは未使用ブロックまたは、文書を格納するための大容量記憶装置内ブロックの物理アドレスを選択する。物理ブロックアドレスのアドレスは、論理ブロックアドレスに対応してRAMロケーション102に格納される。データがプログラムされると、本発明のシステムはまた、104及び293において使用中フリーフラグ112をこのブロックロケーションは使用中であることを示すように設定する。1つの使用中/フリーフラグ112は不揮発性アレイ104の各エントリのために提供される。さらに、ユーザが文書を取り出し、変更を加え、再度コンピュータに文書を格納する指示を与えると仮定する。書き込み前消去サイクルを回避するため、本発明のシステムは、関連するブロックが消去されることを示す未設定のプログラムされていない100内の使用中/フリーフラグ112を有するブロックをロケーションづけるための手段を提供する。システムはその時、106の新ブロック112、100の新ブロック293のための使用中/フリーフラグ112を設定し、その後、不揮発性アレイ104内の新しい物理ブロックロケーション106内に修正された文書を格納する。新しい物理ブロックロケーションのアドレスもまた、論理ブロックアドレスに対応するRAMロケーション102に格納され、102内で以前の物理ブロックロケーションに上書きされる。次にシステムは以前のバージョンの文書の旧/新フラグ110を設定し、これにより104の110及び109の293で不必要な古いバージョンの文書を示す。この様に、本発明のシステムは、以前の文書の修正バージョンを格納するために従来システムの書き込み前消去において必要とされる消去サイクルのオーバーヘッドを回避する。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の両方のいずれかで格納され得ることが当業者には明らかである。パワーアップ時に、揮発性メモリ100内の論理ブロックアドレスに割り当てられる最新の物理ブロックアドレスを割り当てるために、コントローラはまず、不揮発性メモリ104のフラグ110、112、114及び116部分を読み込み、揮発性メモリ100内のフラグ部293を更新する。次にコントローラは、不揮発性媒体104の全ての物理ブロックアドレスの論理ブロックアドレス108を読み込み、揮発性メモリ100内の所与の物理ブロックアドレスのフラグを把握することで、不揮発性メモリ104内の物理ブロックアドレスの読み込み論理ブロックアドレスを読み込み、揮発性メモリ100内の読み込み論理ブロックアドレスを読み込むために割り当てられた最新の物理ブロックアドレスを更新し得る。図3は、本発明の大容量記憶装置を組み込んだシステムのブロック図を示す。ホストコンピューター、パソコンのような外部デジタルシステム300は、本発明の大容量記憶装置302に接続されている。論理ブロックアドレスはアドレスバス306を介して揮発性RAMアレイ100及び、コントローラ回路304に接続されている。制御信号はまた、コントロールバス308を介してコントローラ304に接続されている。揮発性RAMアレイ100は、不揮発性RAMアレイ400に物理ブロックアドレスを提供するために接続されている。コントローラ304は、揮発性RAM100と不揮発性アレイ104の両方を制御するために接続され、全てのフラグを生成する。本発明に関する書き込み処理の動作を示す、単純化された例は、図4から図8に示される。過剰な説明によって発明の特徴をわかりにくくしない様に全ての情報フラグを表記していない。データエントリは、本発明の理解を更に単純化するために10進数で示している。好ましい実施態様では、2進法が使用されていることが当業者には明らかである。図4は、本発明に関する11のエントリを持つ大容量記憶装置を示す。図4の大容量記憶装置内に有効なまたは、使用可能なデータは格納されていない。従って、全ての物理ブロックアドレスは空である。不揮発性大容量記憶装置のロケーション’6’に格納されたデータは詰まっており、古いものである。さらに、ロケーション’9’には欠陥があり、使用できない。ホストは大容量記憶装置に例として、論理ブロックアドレス’3’、次に’4’に順次データの書き込みを指示する。大容量記憶装置はまず、論理ブロックアドレス’3’に関連するデータを書き込む。装置は不揮発性メモリ内で最初の未使用ロケーションを決定する。この例では、最初の空いている場所はロケーション’0’である。従って、図5は論理ブロックアドレス’3’に対して対応する物理ブロックアドレス’0’が格納され、使用中フラグが物理ブロックアドレス’0’に設定される事を示している。次の空いている場所はロケーション’1’である。図6は、論理ブロックアドレス’4’に対して対応する物理ブロックアドレス’1’が格納され、使用中フラグが物理ブロックアドレス’1’に設定される事を示している。ホストは論理ブロックアドレス’3’に何かを再び書き込むことを指示する。次の空いている場所は、ロケーション’2’であると決定される。図7では、データがもはや使用不可能であり、使用中フラグがロケーション’2’に設定され、ロケーション’3’における物理ブロックアドレスが’2’に変更されたことを示すように、ロケーション’0’における旧フラグが設定される事を示している。さらに、ホストは論理ブロックアドレス’4’に再度何かを書き込むことを指示する。次の空いている場所はロケーション’3’であると判断される。図8では、データがもはや使用不可能であり、使用中フラグがロケーション’3’に設定され、ロケーション’4’における物理ブロックアドレスが’3’に変更されたことを示すために、ロケーション’1’の旧フラグが設定される事を示している。物理ブロックアドレスと同じロケーションに格納されたデータとの間には一般に何ら関係がないことを思い出されたい。図9は、本発明に関するアルゴリズム1を示している。本発明のシステムがデータを大容量記憶装置にプログラムするよう指示を受けた時ステップ200、その時システムはフリーブロック、即ち設定されていないプログラムされていない使用中/フリーフラグを持つブロックを見つけ出そうとする。見つかった場合、システムはそのブロックのための使用中/フリーフラグを設定し、データをそのブロック内にプログラムするステップ206。一方、システムが設定されていない使用中/フリーフラグを持つブロックを見つけ出せない場合、システムはフラグ使用中/フリー及び、旧/新及び、設定されている旧/新フラグ有する全ブロックに対するデータ及び、設定されていない欠陥フラグを消去しステップ204、次に未設定の使用中/フリーフラグを有するブロックを検索するステップ202。そのようなブロックはステップ204によって生成されるだけである。システムは次に、そのブロックのための使用中/フリーフラグを設定し、データファイルをそのブロックにプログラムするステップ206。もしデータが、これまでに存在するファイルの修正されたバージョンである場合、システムはアクセスされているものから入れ替えられたバージョンを防がなければならない。システムは、データファイルが旧データファイルを入れ替えるかどうか判断するステップ208。もし入れ替えるならば、システムは入れ替えられたブロックに関連する旧/新フラグを設定するステップ210。一方、格納されたデータファイルが新規作成されたデータファイルの場合、旧/新フラグの設定ステップステップ210は、入れ替えられるブロックがないためスキップされる。最後に、論理アドレス308-を物理アドレスに相互関係づけるマップが更新されるステップ212これまでに概説した手順に従って、周期的な場合を除いてメモリ104への各書き込みに対して消去サイクルに伴うオーバーヘットが回避される。これによって、本発明のアーキテクチャーを使用したコンピュータシステム全体のパフォーマンスが画期的に改善される。本発明の好ましい実施態様では、フラッシュメモリのプログラミングは、当業者よって一般に知られている手順に従っている。言い換えると、プログラムのインパルスImpulseにより、ビットに適切にプログラムされるよう適用され、適切なプログラミングが行われたことを確認するためにプログラムされたデータを比較する。最終的にビットは消去または、正しくプログラムされず、欠陥フラグ148はそのブロックが再度使用されないように設定される。図10は、本発明の代替の実施形態を用いるデジタルカメラ等のデジタルシステム500を示す。ホスト502を含むようにデジタルシステム500を示すが、ホスト502はパーソナルコンピュータPC、または単に、デジタルシステムにおいて通常用いられる任意の一般的なタイプのプロセッサであり得、不揮発性メモリユニット508に情報を格納するか、または不揮発性メモリユニット508から情報を取り出すための制御回路506に結合される。制御回路506は半導体あるいは集積回路またはチップと呼ぶ、またはさまざまな電子部品を自由選択的に組合せたものであり得る。好適な実施形態において、制御回路を単一のチップデバイスとして示す。不揮発性メモリユニット508は1つ以上のメモリデバイスから構成され、メモリデバイスはそれぞれフラッシュ型またはEEPROM型のメモリであり得る。図10の好適な実施形態において、メモリユニット508は、複数のフラッシュメモリデバイス510~512を含み、各フラッシュデバイスは、情報を格納するための別個にアドレス可能なロケーションを含む。図10の実施形態の好適なアプリケーションにおいて、このような情報は、それぞれが1つ以上のデータのセクタを有するブロックに組織される。データに加えて、格納された情報は、フラグフィールドおよびアドレス情報等の、データブロックに関するステータス情報をさらに含み得る。ホスト502は、ホスト情報信号504を介して制御回路506に結合される。ホスト情報信号は、アドレスおよびデータバス、ならびに、コマンド、データおよび他のタイプの情報を制御回路506に通信するための制御信号からなり、制御回路506はフラッシュアドレスバス512、フラッシュデータバス514,フラッシュ信号516およびフラッシュステータス信号518508および512~516を集合的に信号538と呼ぶを介してこのような情報をメモリユニット508に順に格納する。信号538は、コントローラ506およびメモリユニット508との間にコマンド、データおよびステータス情報を提供し得る。図示するコントローラ506は、ホストインターフェースブロック520、バッファRAMブロック522、フラッシュコントローラブロック532、マイクロプロセッサブロック524、マイクロプロセッサコントローラブロック528、マイクロプロセッサ格納ブロック530、マイクロプロセッサROMブロック534、ECC論理ブロック540、およびスペースマネジャーブロック544等の高レベル機能ブロックを含む。ホストインターフェースブロック520は、バッファRAMブロック522およびマイクロプロセッサブロック524からのデータおよびステータス情報をホスト情報信号504を介してホスト502に提供するためのホスト情報信号504を受け取る。ホストインターフェースブロック520は、マイクロプロセッサ情報信号526を介してマイクロプロセッサブロック524に結合される。マイクロプロセッサ情報信号526は、アドレスバス、データバスおよび制御信号から構成される。図示されるマイクロプロセッサブロック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からの命令を実行し得る。コントローラ506は、マイクロプロセッサの指示の下、メモリユニットに情報を提供するまたはメモリユニットから情報を受け取るためにマイクロプロセッサ情報信号526を介してマイクロプロセッサブロック524に結合されたフラッシュコントローラブロック532をさらに含む。データ等の情報は、フラッシュコントローラブロック532からマイクロプロセッサ信号526を介してバッファRAMブロック522に提供されて、そこに格納され得る。単に一時的な格納であってもよい。同様に、マイクロプロセッサ信号526を介して、データはフラッシュコントローラブロック532によってバッファRAMブロック522から取り出され得る。ECC論理ブロック540は、信号542を介してバッファRAMブロック522に結合され、そして、マイクロプロセッサ信号526を介してマイクロプロセッサブロック524にさらに結合される。ECC論理ブロック540は、通常エラーコーディング機能およびエラー訂正機能を実行するための回路機構を含む。さまざまなECC装置およびアルゴリズムが市販されており、ECC論理ブロック540に要求される機能を実行するために用いられ得ることが当業者によって理解されるべきである。要するに、これらの機能は、あらゆる集中的な目的のために多項式から独自に生成されたコードを伝送中のデータに添付することを含み、データが受け取られた場合には、同じ多項式を用いて、データを破壊し得る所定の数のエラーを検出し、かつ、潜在的に訂正するための受け取られたデータから別のコードを生成する。ECC論理ブロック540は、メモリユニット508に格納されたデータまたはホスト502から受け取られたデータについて、エラー検出動作および/またはエラー訂正動作を行う。スペースマネジャーブロック544は、1ブロックの情報を格納するための1つのフラッシュメモリデバイス内に、次の使用されていないまたはフリーの格納ブロックを見つけるために、好適な装置およびアルゴリズムを用いる。これについては、他の図面を参照して本明細書中でさらに説明する。既に説明したように、1つのフラッシュメモリデバイス内の1ブロックのアドレスをPBAと呼ぶが、PBAは、ホストから受け取られたLBAについての翻訳を実行することによって、スペースマネジャーによって決定される。この翻訳を達成するために、さまざまな装置および方法が使用され得る。このようなスキームの一例が、FlashMemoryMassStorageArchitectureIncorporatingWearLevelingTechniqueWithoutUsingCAMCellsという名称の米国特許第5,485,595号に開示されており、この文献の明細書を本明細書中で参考として援用する。他のLBAからPBAへの翻訳方法および装置を、本発明の範囲および精神から逸れることなく同様に用い得る。スペースマネジャーブロック544はSPMRAMブロック548およびSPM制御ブロック546を含み、SPMRAMブロック548およびSPM制御ブロック546は結合されている。SPMRAMブロック548は、SPM制御ブロック546の制御下で、LBA-PBAマッピング情報あるいは、本明細書中では翻訳テーブル、マッピングテーブル、マッピング情報、またはテーブルと呼ぶを格納する。あるいは、SPMRAMブロック548は、RAMアレイ100について図3に示すように、コントローラの外部に位置し得る。動作において、ホスト502は、例えばコントローラ506を介した読み出し動作または書き込み動作の実行の間に、メモリユニット508に情報を書き込み、かつ、メモリユニット508から情報を読み出す。それを行う際に、ホスト502は、ホスト信号504を介してコントローラ506にLBAを提供する。LBAはホストインターフェースブロック520によって受け取られる。マイクロプロセッサブロック524の指示の下、LBAは最終的にはスペースマネジャーブロック544に提供されて、PBAに翻訳され、そしてそこに格納される。これについては、後でさらに詳細に説明する。マイクロプロセッサブロック524の指示下で、データおよび他の情報は、フラッシュコントローラブロック532を介してフラッシュメモリデバイス510~512のうちの1つにある、PBAによって識別される格納領域に書き込まれるか、または格納領域から読み出される。既に説明したように、フラッシュメモリデバイス内に格納された情報は、まず消去しなければ新たな情報によって上書きされ得ない。一方で、常に書き込みに先行する1ブロックの情報の消去は、時間と電力を大幅に消費する手段である。これは時々、書き込み前消去動作と呼ばれる。好適な実施形態は、フラッシュメモリ内のPBAロケーションからメモリユニット508内の未使用のPBAロケーションに再び書き込まれている、ブロック内の、情報のセクタまたは多重セクタを連続して、しかし、効率的に移動することによりこのような動作を除去し、そうすることにより、頻繁な消去動作を除去する。1ブロックの情報は、16個または32個のセクタ等の、1を超える数のセクタから構成され得る。1ブロックの情報は、情報の別個に消去可能なユニットになるようにさらに規定される。過去、従来技術のシステムは、フラッシュメモリデバイス内のフリーのまたは未使用のロケーション内に既に書き込まれている、フラッシュメモリデバイス内に格納されたブロックを移動させる。しかし、このようなシステムは、そのブロック内の1セクタの情報が再び書き込まれる場合でさえ、ブロック全体を移動させた。換言すると、ブロック内のセクタの合計数よりも少ない数のセクタが再び書き込まれている場合には、ブロック全体の内容を移動するのに時間が無駄であるのに加えて、フラッシュメモリ内の記憶容量も無駄になる。本発明の好適な実施形態は、本明細書中で説明するように、1ブロックの情報よりも少ない数の移動を可能にすることにより、既に書き込まれたセクタの移動動作の数を減らして、結果的に消去動作の数を減らす。図10を参照すると、SPMRAMブロック548が、書き込み動作が行われる毎に変更され得るテーブルを維持することによって、LBA-PBAマッピング情報およびメモリユニット508に格納されている各ブロックに関する他の情報を維持することに留意することは重要である。加えて、このマッピング情報は、フラッシュメモリデバイス内における情報のブロック内のセクタの実際のロケーションを提供する。さらに明らかなように、システムへの電力が妨害または終了される場合に、マッピング情報の損失を防ぐために、SPMRAMブロック548に格納されたマッピングテーブル内の情報の少なくとも一部分が、メモリユニット508にシャドウイングshadowedされるまたはコピーされる。これは、大部分に、マッピング情報を維持するために揮発性メモリを使用することに起因する。これに関して、システムへの電力が回復された場合、マッピング情報の、メモリユニット508に格納された部分はSPMRAMブロック548に転送される。SPMRAMブロック548は、あるいは、フラッシュまたはEEPROMメモリアーキテクチャの形態等の不揮発性メモリであってもよいことに留意されたい。この場合、不揮発性メモリに格納されたマッピング情報は停電の間も正確に維持されるので、マッピングテーブルは不揮発性メモリ内に格納されることにより、シャドウイングshadowingの必要が除去される。1つ以上のセクタがフラッシュメモリのある領域から別の領域へと移動されている場合、本発明の好適な実施形態は、まずセクタを、それらがフラッシュメモリデバイス、つまり、510~512内に格納されているロケーションから、バッファRAMブロック522へと移動させ、そこに一時的に格納する。移動されたセクタは次にバッファRAMブロック522から1つのフラッシュメモリデバイス内のフリーの領域に移動される。ECC論理ブロック540によって生成されたECCコードは、上で説明したように、他の情報のように、データおよびフラグフィールドに対応するLBA等のデータと共にフラッシュメモデバイス510~512内にも格納される。図11~図21は、メモリユニット508内のブロックおよびブロック内のセクタの識別およびロケーションに関するLBA-PBAマッピング情報を格納するように構成されたSPMRAMブロック548内のテーブル700の状態の例を示す。これらの図面の全てにおいて、テーブル700は示され、列および行からなるアレイを含み、列は、仮想物理アドレスロケーションまたはVPBAブロックアドレスロケーション702、移動仮想物理ブロックアドレスロケーションまたはMVPBAブロックアドレスロケーション704、移動フラグロケーション706、使用中/フリーフラグロケーション708、旧/新フラグロケーション710、欠陥フラグロケーション712、およびセクタ移動ステータスロケーション714を含む。テーブルの行は、PBA/LBA行716および718~728を含み、各行は、テーブル700内のアドレスされている情報に基づくLBAまたはPBAのいずれかであり得る行番号を有する。例えば、行716は行番号00が割り当てられているように示され、LBA00に関するPBA情報がテーブル700から取り出されている場合、次にLBA00は行716におけるSPMRAMブロック548においてアドレスされ得、730内に位置する関連するPBAを得ることができる。一方で、フラグフィールド706~712等の、あるブロックに関するステータス情報がアクセスされている場合、00、10、20、30、40、50、N-1等の、行716~728の行番号は、LBAと反対の、PBAの値を示す。さらに、テーブル700の各行は、各エントリがブロックに関する情報を含む、ブロックエントリとして考慮され得る。さらに、テーブル700の各行は、LBAによってアドレスされ得る。好適な実施形態において、各ブロックは16個のセクタを含むように示される。これは、16個のセクタからなるブロック全体を選択的に消去する能力に起因するものである。これが理由で、ブロックのサイズを消去ブロックサイズと呼ぶことがある。図11~図21に示すように、消去ブロックサイズが16セクタである場合、各ブロックエントリまたは行は16個のセクタに関する情報を含む。従って行716は、LBA00~LBA15または16進法でLBA00~LBA0Fによってアドレスされたブロックに関する情報を含む。次の行、つまり行718は、LBA16または16進法で10~LBA31または16進法で1Fによってアドレスされたブロックに関する情報を含む。同じことが各ブロックのPBAについても当てはまる。しかし、他のブロックサイズを同様に用いてもよいことに留意されたい。例えば、ブロックは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と同様である。セクタ移動ステータスロケーション714は16ビットからなりロケーション714はブロック内の各セクタに対して1ビットを含むので、異なるサイズのブロックについては、ロケーション714内に異なる数のビットが要求される、各ビットは、セクタがメモリユニット508内の別のブロックに移動したかどうかについてブロック内のセクタのステータスを示す。メモリユニット508内の移動されたブロックロケーションは、VPBAブロックアドレスロケーション702内のPBA値ではなくPBAによって識別される。異なって述べたように、ブロック内のセクタが移動したかどうかのステータスは、714内のビットの各々によって示されるように、VPBAブロックアドレスロケーション702またはMBPBAブロックアドレスロケーション704のいずれ一方が、セクタに関する最も最近のPBAロケーションを維持するのかを示す。さらに図11を参照すると、例を用いて、LBA0が書き込まれている場合の、SPMRAMブロック548図10に格納されたテーブル700のステータスの例が示される。既に述べたように、本明細書中で提示する図面において、16個のセクタ10進法で0~15、または16進法で0~10からなるブロックサイズは、例を説明するためのみに使用される。同様に、N個のブロック従ってN個のLBAが使用され、0~N-1までの番号が与えられる。ブロックサイズおよびブロックの数は、異なるアプリケーションについて変化し得、かつ、使用されている別個のフラッシュメモリデバイス510~512等の各々のメモリ容量に依存し得る設計上の選択事項である。さらに、これらの実施例において512バイトの好適なセクタサイズが使用されるが、本発明の範囲および精神から逸れることなく他のセクタサイズを使用し得る。フラッシュメモリデバイス510~512図10内の全てのブロックが消去され、従ってフリーになった場合には、初期化、または、システムパワーアップの前にLBA0への書き込み動作が行われると仮定する。スペースマネジャーブロック548は、次のフリーのPBAロケーションが00であると判定しようとする。従って00は、LBA行番号00によってテーブル700に示されるように、LBA0に関する情報が維持されている、行716のVPBAブロックアドレス702内の730へ書き込まれる。LBA0ブロック内のセクタのいずれも移動する必要がないので、ロケーション732として示す、行716についてのMVPBAブロックアドレス704は、初期値などの任意の値を含み得る。図11において、XXは注意する必要のない状態don’tcarestateを示すものとして図示される。734の値は論理状態0にあり、LBA0ブロックがいかなる移動されたセクタも含まないことを示す。行716の使用されたフラグ708列内のロケーション736は、PBA0ブロックが使用中であることを示す論理状態1に設定される。ロケーション738の状態は、行716について古いフラグ710を示しているが、0に設定されて、PBA0ブロックがまだ古くはないことを示す。ロケーション740は、PBA0ブロックが欠陥ではないことを示す論理状態0を維持し、そして、移動ステータスロケーション714における全てのビットが論理状態0にあって、LBA0ブロック~LBA15ブロック内のセクタのどれも移動していないことを示す。図11において、テーブル700の、全ての残りの行716~728について、移動フラグロケーション706、使用されているフラグロケーション708、古いフラグロケーション710、欠陥フラグロケーション712、および移動ステータスロケーション714等の、行716内のLBA0についてのステータス情報は、論理状態0にある。システムのパワーアップ時および/または任意のブロックの消去後に、消去されたブロックについてのエントリは、テーブル700において、パワーアップ時の全てのブロックであるが、これらは全て論理状態0に設定される。このとき、LBA0ブロックが配置され得るメモリユニット508内のフラッシュメモリデバイスのうちの1つについての内容の説明は、図11のテーブル700に示すマッピング情報のより良い理解のために提示される。ここで図22を参照すると、図11に示すようにテーブル700の状態に従ってフラッシュメモリデバイス510の内容の例を示す。LBA0は、メモリユニット508内で図10のコントローラ506によってPBA0において識別されるが、これはホスト識別ブロックhost-identifiedblockが書き込まれたロケーションである。セクタデータロケーション752内のデータを含むPBA0行750を図22に示す。PBA0行750のECCロケーション754にECCコードがさらに格納される。このECCコードは、既に説明したように、書き込まれているデータに関連するECC論理ブロック540によって生成される。PBA0行750のフラグフィールド756は、書き込まれているブロックのセクタデータに対応する、移動の、使用中、古い、そして欠陥のフラグ情報を含む。本実施例において、フラグフィールド756内に、使用されたフラグのみが設定され、他のフラグが設定されない、従ってフラグフィールド756は、PBA0は使用されたが、移動しておらず、古くなく、または欠陥のないことを示す0100の論理状態を維持する。PBA0行750は、LBAアドレスロケーション758を維持するための格納ロケーションをさらに含み、PBA0に対応するLBA番号は、本実施例では0である。当面、この例に関連しない間は、LAB0の残りのPBAロケーションは、フラッシュメモリデバイス510内の行750に続く次の15行に格納される。本明細書中に提供された本実施例の説明から、フラッシュメモリデバイス510のPBA行内の情報が、特に、フラッシュメモリの各PBA行750、762、764...内に移動フラグが存在することに起因して、データおよびステータス情報に関連する任意の移動を含むLBA0ブロック内のデータおよびステータス情報に関するデータおよびステータス情報を識別するのに十分であることが理解される。にもかかわらず、それとは異なり、別のフィールドが、フラッシュ内の各LBAロケーションの第1のPBA行に追加され得、テーブル700内の対応する行の移動ステータスロケーション714内のビットのステータスを複製する。このフィールドは、図22に示すセクタステータスロケーション760内に、行750および780等の各LBAブロックの第1のPBA行内に含まれるように自由選択的に格納される。ロケーション760内に維持される情報は、各PBA行のフラグフィールド756内の移動フラグのステータスをチェックすることにより発見され得るが、ロケーション760を用いることの明白な利点は、読み出し動作がより少ないために、システムの始動または電源オン時に、SPMRAMブロック548内のテーブル700の内容は、より速く更新され得る。テーブル700はSPMRAMブロック548内に維持され、SPMRAMブロック548は、システムがパワーダウンし、そして不揮発性メモリ、つまりメモリユニット508からのパワーアップ時に更新される必要のある場合にその内容が失われれる揮発性メモリであることを思い出されたい。つまり、全てのPBA行好適な実施例では合計16行を読み出して、パワーアップ時にテーブル700の各LBAエントリを更新するよりも、各LBAの第1のPBA行のみがフラッシュメモリから読み出され、そして、SPMRAM548に格納されることが必要であり、それにより、不必要な読み出し動作を除去することにより時間を節約する。一方で、LBAにつき16ビットのセクタステータス情報を維持するために、明らかにより多くのメモリ容量が利用される。ロケーション760が使用される上記実施例において、セクタステータスロケーション760の値は全て0または16進法で0000である。フラッシュメモリデバイス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で終了するロケーション内に格納された、LBA1016進法によってアドレスされたブロックに関する。上記例を続けて説明すると、図12は、LBA0がホストによって再び書き込まれている場合のテーブル700の状態の一例を示す。LBA0は既に書き込まれており、かつ、始めに消去されずに再び書き込まれるので、メモリユニット508内の別のフリーのロケーションはここで、それぞれセクタを含むブロックが、例えば、デバイス510に続く次のフラッシュメモリデバイスが、フラッシュメモリデバイス510が省かれたPBAアドレスされたブロックをピックアップし、このことの一例として、フラッシュメモリデバイス510が0~FF16進法のPBAを含み、そして、512であり得る次のフラッシュメモリデバイスが100~1FF16進法を含み得るように、それぞれのPBAに基づいて、メモリユニット508のフラッシュメモリデバイスの各々を介して、順次、かつ連続的に組織されることに留意することが役に立ち得る、新たな情報を格納するためにスペースマネジャー544によって配置される。このフリーのロケーションは、16進法でPBA10または10進法で16となるように示される。PBA10が現在は使用中であることを示すように、ロケーション742内の使用されたフラグが設定されている本発明から逸れることなく反対の極性が使用され得るが、好適な実施形態において、論理状態1である場合にフラグが設定されることを除いて、行718において、LBA10についてのエントリは、図11に示されるように、同じままである。行716内のエントリは、MVPBAブロックアドレスロケーション732内に10を示すように変更され、MVPBAブロックアドレスロケーション732は、LBA00ブロックについての移動した部分のPBAアドレスを提供する。ロケーション734内の移動フラグは論理状態1に設定されて、少なくとも一部分1つ以上のセクタのLBA00ブロックが、テーブル700のロケーション730内に示されるPBAロケーションとは異なるPBAロケーションに移動したことを示す。最終的に、行716内の移動ステータスロケーション714のビットは、2進法で100000000000000016進法で8000に設定され、ブロックLBA00内の移動したセクタのステータスを反映する。つまり、この例において、8000は、LBA00ブロック内の第1のセクタまたはセクタ0が、異なるPBAロケーションに移動したことを示す。ここで図22を参照すると、図12におけるテーブル700の状態は、LBA0ブロックの移動されたセクタがここで行780のPBA10に書き込まれるという点で、フラッシュメモリデバイス510の内容に影響する。行780は移動されたセクタに関するデータを含む。移動されたセクタは512バイトのサイズを有する。移動されたセクタ情報について、行780はECCコード、図12のテーブル700のフラグロケーション734~740内の値のコピー、および行780内のデータがLBA00に属することを示すLBA00とをさらに含み、そして、LBA0ブロック内の個々のセクタの各々についての移動ステータスをさらに含み得る。図面には特定的には示さないが、PBA行750のロケーション756内の移動フラグは、対応するブロックの少なくとも一部分が移動されたことを示すように設定される。行716の移動ステータスロケーション714内に格納された値は図12、16進法で8000であるが、これは行750のロケーション760内にも格納される。既に述べたように、このことは、PBA0のセクタ0のみが移動されたとマークされ、そして、新たなブロックLBA0がフラッシュメモリ内のPBA10に書き込まれたことを示す。図22のさらに詳細な説明がなくても、同様に以下の例がフラッシュメモリデバイス510の内容に影響することを理解されたい。図13は、LBA00へのさらに別の書き込み動作が実行される場合のテーブル700のステータスを示す。行716内の値またはエントリは、ロケーション732内の値が16進法で20に変化して、ブロックLBA00の移動された部分がこのとき図12の10ではなくてPBAロケーション20に配置されることを示す以外は、図12と同じままである。図12のように、移動ステータスロケーション714内の値8000は、PBA00を有する第1のセクタがブロックの移動された部分であることを示す。行718は、LBA10ブロックがこの時点では古く、そして、消去されるまではこれ以上使用できないことを示すように変更される。これは、論理状態1に設定されているロケーション744内の値によって示される。LBA20についてのエントリ、つまり行720は、ロケーション746が、使用中であるPBA20ブロックの状態を反映する論理状態1に設定されるように変更される点を除いては、変わらないままである。図11および図12のように、上で説明せず、かつ、図13における特定の論理状態を有するものとして示さなかった、図13のテーブル700の残り全ての値は、全て変わらないままであるフラグは全て論理状態0に設定されることを理解されたい。さらに上の例について続けると、図14は、LBA0に対するさらに別の書き込みが行われる場合のテーブル700の状態を示す。比較を容易にするために、図14に示す値で、図13に示した状態に対して異なる論理状態にあるものをを円で囲んだ。行716において、ロケーション732内に示す、PBA30として示された、新たに移動されたロケーションを除いては、全て同じままである。PBA30は、スペースマネジャー544によって見つけられた次の空いたロケーションであった。既に述べたように、この値は、LBA0のブロックの部分がこの時にはPBA30にある、つまり、そのブロック内の、8000である行716の714内の値によって示される第1のセクタがフラッシュメモリデバイス510内のPBA30に移動したことを示す。行718は消去されるまでは同じままである。ロケーション742および744内のフラグは、論理状態0に設定される。行720も、その古いフラグ710列内の値が、PBA20のブロックも古く、まず消去しなければ使用できないことを示すように、1に変更されていることを除いては、変わらないままである。行722は、その使用されたフラグ708列内の値は、論理状態1に変化して、LBA30のブロックが現在使用中であることを示すこと以外は、同じままである。図15は、テーブル700の状態の別の例であり、テーブル700は、テーブルが図13に示す状態にあり、ホストのLBA5への書き込みがそれに続くものと仮定されたテーブル700の状態を示す。再び、図13から図15へと、1回きりの変化である、テーブル700内の値への変化を、変化した値を円で囲むことによって示す。LBA5へ書き込みを行う場合、行716、718、および720等のLBAエントリはLBA00、LBA10、およびLBA20等についてのみであり、従って、LBA5エントリを反映しないことを理解するべきである。LBA行エントリの各々は、好適な実施形態において16個のセクタである各ブロックを有する1ブロックの情報に関することを思い出されたい。この理由のために、LBA5は実際、行716内の第5のセクタをアドレスする。PBA20はLBA0を格納するために使用されたので、LBA5に対応するPBA20内のセクタのみがまだ書き込まれておらず、フリーである。従って、LBA5についてのデータは、セクタ5内のPBA20内に格納される。行716の移動ステータスロケーション714は、論理状態840016進数に変更される。これは、LBA0内の第1および第5のセクタのロケーションが、いずれも、フラッシュメモリデバイス510内のPBA20において識別されることを反映している。図15のテーブル700における残りの値は、図13に示す値と同じままである。図16~図18は、テーブル700の状態が、パワーアップまたはメモリユニット508によるブロックの消去のいずれかの後にどのようになり得るかについての、さらに別の例を示す。図16および図17において、図11および図12を参照して説明したのと同じ書き込み動作が実行される。図16および図17におけるテーブル700の状態は、それぞれ図11および図12における状態と類似している。後者2つの図面は読者の便宜のためにのみ図16および図17として再び描いた。要するに、図16は、LBA0への書き込み後のテーブル700の状態を示し、図17は、LBA0への別の書き込み後のテーブル700の状態を示す。図18は図17の後にピックアップを行い、そして、ホストがLBA5に書き込みを行った後にテーブル700の状態を示す。図18に示すように、LBA5はPBA10に移動される。ここで、LBA0もまたPBA10に配置される。この目的のために、MBPBAブロックアドレスロケーション732は、行716内の10に設定され、そして、移動フラグは同じ行内のロケーション734に設定される。さらに、行716における移動ステータスロケーション714の状態は、LBA0およびLBA5が移動したこと、またはLBA00内の第1および第5のセクタが移動したことを示す840016進法に設定される。これらの2つのセクタは、この時フラッシュメモリデバイス510のPBA10ロケーション内に配置されるので、これらのセクタの各々についての移動フラグは、フラッシュメモリデバイス510内にも設定される。残りのフリーのセクタはそのブロック内で利用可能であるので、LBA5がPBA10に移動したことを理解されたい。つまり、使用されているそのブロックのLBA0であってさえ、同じブロックの15個の他のセクタが利用可能であった。なお、LBA5への書き込み後、第5のセクタは使用中である。図18の例を続けて説明すると、図19に、ホストがさらに別の時間をLBA0に書き込んだ後のテーブル700の状態を示す。テーブルによると、さらに別のフリーのPBAロケーション20が、LBA5およびLBA0が移動した場所に見つかる。第1に、LBA5はロケーションPBA10、ロケーションPBA20へと移動し、次に、ロケーションLBA0の新たなブロックがPBA20に書き込まれる。前に説明したように、まず、ブロックの移動が行われる例えば、ここではLBA5のブロックが移動する任意の時間に、現在存在しているフラッシュメモリ内のロケーションからコントローラ506内の一時的なロケーションに、つまりバッファRAMブロック522と共に、移動する。そして次に、そこからフラッシュメモリデバイス内の新たなロケーションへと転送される。行720のロケーション746内の使用されたフラグは、フラッシュメモリ内のPBA20ロケーションの使用を反映するように設定され、ロケーション744内の古いフラグは、消去されるまで、PBA10ロケーションの使用を破棄するように設定される。再び、フラッシュメモリにおいて、これらのフラグの状態は、LBA0およびLBA5両方のセクタについての移動フラグの状態と同様に複製される。図20は、図18に示すテーブル700の状態からピックアップし、そして、ホストがLBA5に書き込みを行った後にテーブル700どのようであり得るかについて、さらに別の状態を示す。この場合、LBA0のブロックは、現在格納されている、フラッシュメモリデバイス510内のロケーションPBA10から、フラッシュメモリのロケーションPBA20へとまず移動する。その後、ホストによってLBA5に書き込まれている新たなブロックが、フラッシュメモリのロケーションPBA20に書き込まれる。従って、テーブル700およびフラッシュメモリデバイス510の対応するロケーション両方におけるフラグは、これらの更新されたロケーションを反映するように設定される。図21はまた、図18に示すテーブル700の状態からピックアップし、そして、ホストがLBA7に書き込みを行った後にテーブル700がどのようであり得るかについての状態を示す。この場合、そのロケーションはまだ使用されていないので、新たなブロックが単にフラッシュメモリのロケーションPBA10に書き込まれる。さらに、行716内の移動ステータスロケーション714の3つのビットは、LBA0、LBA5、LBA7がフラッシュメモリ内の別のPBAロケーションに移動したことを示すように設定される。ロケーション732は、これら3つのブロックが格納されたロケーションがPBA10であることを示す。これまでに示された議論から理解され得るように、ある時点で、1ブロック内で移動中のセクタの数が非効率的な動作を助長する。従って、ユーザが、1ブロック内で、該ブロックが古いと示され古いフラグが設定され、ブロックがもはや使用されなくなる前に移動され得るセクタの数に関する閾値を該ブロックが消去されるまで設定する必要が生じる。この閾値は、例えば、1ブロック内のセクタ数の半分に設定されてもよい。これは、以下のように示される。16セクタを有する1つのブロックの場合には、8つのセクタが別のブロックに移動され、本来のブロックと移動されたブロック移動されたセクタが存在するブロックとが、同じPBAブロックに組合わせられる。組合わせられたPBAブロックは、全体で新しいブロックに格納されてもよく、あるいは、本来のブロックが、移動されたブロックと組合わせられ、移動されたブロック内に移動してもよい。後者の場合には、本来のブロックは、次に、その消去のために古いとマークされる。組合わせられたPBAブロックが新しいブロックに格納される場合には、本来のブロックおよび移動されたブロックの両方が、古いとマークされる。図23は、書込み動作中に行われるステップの幾つかの概要を説明する概要フローチャートを示す。これは、そのような動作中に生じる事象の幾つかのシーケンスを示すことを意図し、本発明の好適な実施形態に使用される方法または装置の包括的提示では決してない。図23に概要が説明されるようなステップは、マイクロプロセッサブロック524がシステムの動作中にプログラムコードまたはファームウェアを実行する際に、マイクロプロセッサブロック524の指示の下で行われる。ホストがLBAMのブロックに書込みを行うとステップ800、ステップ802において、スペースマネージャブロック544が、SPMRAMブロック548のテーブル700における対応する使用中フラグの状態を調べることによって、LBAMが使用中であるか否かを調べる。使用中でなければ、ステップ804において、メモリユニット508中の次のフリーPBAブロックに関する探索が行われる。フリーブロックが捜し出されなければ、エラー状態が808において検出される。しかし、フリーPBAが捜し出されると、ステップ806において、その使用中フラグが、テーブル700およびフラッシュメモリにおいてマークされるまたは設定される。ステップ810において、フリーブロックのPBAが、テーブル700中の対応するLBA行のVPBAブロックアドレス702のロケーションに書込まれる。ステップ802に戻って、LBAMブロックが使用中である場合には、次のフリーPBAブロックに関する探索が、やはりステップ812において行われ、そのようなフリーブロックが見つからない場合には、814において、エラー状態が示される。一方、フリーPBAロケーションが見つかった場合には、ステップ816において、そのPBAが、テーブル700およびフラッシュメモリにおいて使用中とマークされる。次に、ステップ818において、ブロックの状態が、移動フラグを設定すること、およびテーブル700の移動ステータスロケーション714において適切なビットを設定することによって移動されたことを示す。ブロックが移動された新しいロケーションもまた、上記のようにテーブル700に示される。最後に、ステップ818およびステップ810の後に、データおよび全ての対応するステータス情報、ECCコード、およびLBAが、フラッシュメモリ内のPBAロケーションに書込まれる。上記のように、1ブロック中のかなりの部分が移動されたセクタを有する場合には好適な実施形態では、これは、16セクタの内の8つ、このブロックは、対応する古いフラグを設定することによって古いであると示される。周期的に、古いフラグが設定されたブロックは、消去され、次に、再使用あるいは、再プログラミングまたは再書込みされ得る。理解できるように、図10~図23の実施形態の利点は、ブロックが、ホストによってアクセスされる度毎に消去される必要がないことである。なぜなら、例えば、ブロックの何れかの部分またはセクタが再書込みされている最中であれば、フラッシュメモリ装置中でそのブロックを消去する、またはそのブロック全体をフラッシュ内のフリー領域に移動させるのではなく、再書込み中の部分のみを、フラッシュ中の他の場所すなわち、MVPAブロックアドレスによって識別されるフリーロケーションに移動させる必要があるからである。これに関連して、時間のかかる消去周期が、後まで回避され、1ブロック全体を読取り、そのブロック全体を移動させる際に時間が浪費されない。代替の実施形態では、フラッシュメモリに格納される各セクタに関係する情報がより少ないかもしれない。同様に、SPMRAMブロック548図10中のテーブル700が、以下に説明されるように、より少ない情報を維持する。図24は、フラッシュメモリチップフラッシュメモリ装置510等が格納し得る情報例を示す。図24には、N個のブロックブロック1000、1002、...、1004が示され、各ブロックは、最大m個のセクタを有する。ブロック1000を例にとると、ブロック1000中のセクタ1006、1008、...、1010の各々が、データフィールド1052およびECCフィールド1014を含む。好適な実施形態では、データフィールド1052は、512バイトを包含し、ECCフィールド1014は、4バイトの情報を包含するただし、データおよびECCの両方の他の大きさが、本発明の精神から逸脱することなく用いられ得る。各ブロック中の第1のセクタ例えば、ブロック1000のセクタ1006が、さらに、ブロックが欠陥品であるか否かを示す欠陥フラグ1016を含む。好適な実施形態では、1ブロック中のセクタの何れかが欠陥品である場合には、以下にさらに説明されるように、そのブロック全体が欠陥品としてマークされる。1ブロック中の各セクタは、スペース領域1018をさらに含み得る。各ブロック中には、間もなくより詳しく説明されるように、フラッシュメモリユニット内でそのブロックを識別するためのLBA1020が包含される。しかし、図24においては、LBA1020が、ブロック1000の最後のセクタ1010内に位置するように示されているが、LBA1020は、代わりに、ブロック1000の他の何れかのセクタ内であって、さらにそれが配置されるセクタ内の任意の領域内に配置されてもよいことに留意することが重要である。例えば、LBA1020は、セクタ1008のスペース領域1022内に配置されてもよく、あるいは、データがブロック1000のセクタ1008に格納されるロケーションの直前である1024に配置されてもよい。ブロック1000に使用されるのと同じセクタ構成が、フラッシュメモリ装置内のブロック1002および1004等の残りのブロックにも使用される。同様に、欠陥フラグ1012のロケーションは、ブロック内のどこでもよい。例えば、欠陥フラグ1012は、1024または1022に二者択一的に格納されてもよい。しかし、ブロックにつきたった1つの欠陥フラグが格納される。本発明のある局面は、欠陥フラグが使用される方法に関係する。フラッシュメモリチップの製造中に、メモリ内の欠陥が、一般的に、チップ製造メーカーによって識別され、マークされる。これは、典型的には、欠陥ブロック内の所定のロケーションに事前定義されたパターンバイト幅を書込むことによって行われる。つまり、製造メーカーは、フラッシュチップを消去し、全て1等の値が、次に、上手く消去されたフラッシュチップ内の各メモリセルによって保有される。ブロック内のセクタまたはセルが欠陥品である場合には、製造メーカーは、欠陥ブロック図24には不図示内のどこかに配置される製造欠陥フラグを所定の値に設定する。この製造欠陥フラグは、欠陥フラグ1012とは異なり、そのロケーションは、製造メーカーによって決定され、設計選択によってではない。これらの製造メーカーによって識別される欠陥ブロックは、次に、システム動作中無視されるまたは使用されない。つまり、スペースマネージャブロック544図10が、これらの欠陥ブロックを把握し、フラッシュメモリ装置内でフリーブロックを探索する際にそれらを使用しないことを理解している。フラッシュチップの製造中に検出される欠陥以外に、上に説明したように、摩耗によるチップの動作中に進行するさらなる欠陥が存在し得る。これらの欠陥は、時に、業界全体で成長欠陥growndefectと呼ばれ、フラッシュメモリ装置の使用が用いられるシステムによって考慮されなければならない。成長欠陥のケースは、システム動作の観点から説明される。本発明の好適な実施形態では、ブロック1000の消去後に、欠陥フラグ1012図24が、消去されたブロックが欠陥品であるか否かを示すようにプログラムされている。すなわち、消去されたブロック1000中のセルが上手く消去された場合には、欠陥フラグ1012が、ブロックが欠陥品でないことを示す、5516進数という1バイト幅の値等の事前定義された値に設定される。逆に、ブロックが上手く消去されなかった場合には、00等の55以外の値が、欠陥フラグ1012に書込まれる、あるいは、どのような値も書込まれず、消去後の欠陥フラグの状態通常、消去状態は、全て1であるあるいは、16進数でFFであるが、維持される。しかし、後者の場合には、欠陥フラグの消去状態は、成功した消去と区別するために55以外の値でなければならない。欠陥フラグ1012の使用は、システムのパワーアップ後に特に注目される。スペースマネージャブロック544は、各ブロックの欠陥フラグを素早くスキャニングし、各ブロックの欠陥フラグ1012中の値55を捜すことによって欠陥品ではないブロックを後のために識別することによって、どのブロックが欠陥品であるかがわかる。ブロックがパワーアップ後に欠陥品ではなく、後に欠陥品になった場合には、その欠陥フラグは、それを示すように変更され、次にシステムがパワーアップされると、その欠陥ブロックが、スペースマネージャによって注目され、そのブロックのあらゆる使用が回避される。書込み動作中に、1つのブロックの1つ以上のセルの故障が生じた場合には、そのブロックは、先ず消去され、次に、欠陥ブロックの欠陥フラグ1012に55以外の値00等を書込むことによって欠陥品であるとマークされる。あるいは、欠陥ブロックの欠陥フラグ1012にいかなる値も書込まれない。これまでに記載されたような欠陥フラグを有することの利点の1つは、システムのパワーアップ中に、スペースマネージャブロック544図10が、欠陥品ではないブロックを素早く見つけることができることである。代替の実施形態では、図25に示されるように、フラッシュメモリ装置内の各ブロックのLBAが、同じブロックの異なる2つのセクタ内に格納される。例えば、ブロック1000が消去された後であって、その消去に続くブロック1000の第1の書込み動作中に、スペースマネージャブロック544が、ブロック1000またはその一部が自由に書込まれることを決定する。ブロック1000に関連するLBAは、次に、ブロック1000の2つのロケーション1030および1020それぞれセクタ1006および1010内にあるにプログラムされる。その後、システムへの電力が一時的に中断される度に、あるいは、パワーアップの際に、ロケーション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を消去する。図24に示されるように、各ブロック毎にたった1つのLBAが使用される場合には、明らかに、各ブロック中の2つのLBAの比較は行われないが、欠陥品であるブロックの検出は、上記のように、欠陥フラグの使用によって維持される。さらに、LBAは、最後すなわち、ブロックの全てのセクタが書込まれた後に書込まれてもよい。LBAを最後に書込むことは、ブロックに上手く書込んだことの付加的指標である。本発明の別の局面を例示するために、図26は、左側に、フラッシュメモリ装置の幾つかのブロックの内容例これは、図24に示される情報と同じであるを示し、右側に、図の左側にあるブロック情報に対応するテーブル700の内容例を示す。ブロックの内容を示す目的は、単に、テーブル700に関するブロックのLBA-PBAアドレッシング間の相関性を理解する際の読み手に対する便宜を図るためである。図26に示される例は、フラッシュメモリ中に格納される際のブロックのアドレスと、情報がSPMRAMブロック548に格納される場合と同じブロックのアドレスとの間のこの代替の実施形態のマッピングを例示するものである。テーブル700では、1列に、各行毎に、仮想PBAフィールド1036と、欠陥フラグ1012を含むフラグフィールド1038とが格納されて示されている。行1040、1042、1044、...、1050は、それぞれLBAに対応し、それぞれ0、1、2、...Zによってアドレッシングされる。各行毎の仮想PBAフィールド1036は、実際には、内部に格納された16のセクタを有するフラッシュメモリ内のブロックを指すLBAアドレスポインタを含む。この点では、仮想PBAが、16セクタのPBAとして機能するセクタの数は、代替の実施形態では、16以外でもよい。ホストが、例えば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がマスクされる。SPMRAMブロック548中の行1040がアドレッシングされると、行1040に関する仮想PBAフィールド1036の値この場合00であるが取出され、00が次に、フラッシュメモリ装置内に格納されるブロックに対するポインタとして使用される。つまり、この例においては、ブロック0またはブロック1000図26の左側がアドレッシングされる。しかし、読取りが意図されたセクタに到達するためには、ホストによって送られたLBA値から最初にマスクされた4ビットが、ブロック1040内の6番目のセクタであるセクタ5不図示を具体的にアドレッシングするために使用される。セクタ5不図示のデータフィールド1052に格納されたデータは、次に、取出される、または読取られる。次に、同じセクタのECCフィールド1014が読取られる。LBAロケーション1020は、テーブル700の行1040の仮想PBAフィールド1036に格納されるのと同じアドレス値である値00を有するべきである。これは、スペースマネージャを更新するために、パワーアップルーチン間に、フラッシュメモリ装置においてブロック1000をブロック00として識別することを意図する。しかし、LBAロケーション1020は、上記のようにホストによって送られるLBA値を表さない。このような混乱を避けるために、ロケーション1020の値は、LBAアドレスではなく、クラスタアドレスと呼ばれ得る。書込み動作の状況における別の例を例示するために、ホストが、コントローラ506に対してLBA1710進数に書込みを行うことを命令すると、コントローラは、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に書込まれる。図26の好適な実施形態例が、図25を参照して説明された実施形態と共に使用される場合には、LBAまたはクラスタアドレスが、各ブロック内の2つの場所に書込まれる。本発明を具体的な実施形態の面から説明したが、それらの変更および改変が、当業者には無論明らかとなることが予想される。従って、以下の請求の範囲が、本発明の真の精神および範囲に入るような、そのような変更および改変の全てを包含するものとして解釈されることを意図する。"