(57)【特許請求の範囲】
【請求項１】
フラッシュメモリ装置内にデジタルデータを格納するデータ格納方法において、
ａ．上記フラッシュメモリ装置内の不揮発性記憶媒体を、複数のデータ専用ブロックと、第１のオーバヘッド専用ブロック及び第２のオーバヘッド専用ブロックを含む複数のオーバヘッド専用ブロックとを含む、独立してアドレス可能であり、独立して書込可能であり、独立して消去可能な複数のメモリブロックに割り当てるステップと、
ｂ．上記複数のオーバヘッド専用ブロックのそれぞれを、各オーバヘッド専用ブロック内では連続したオーバヘッドページアドレスからなる同一のセットに基づいてアドレス指定される複数のオーバヘッドページに割り当てるステップと、
ｃ．上記複数のオーバヘッドページのそれぞれを、物理アドレスレジスタ及びフラグフィールドを含む複数のレジスタをそれぞれ有し、連続したセグメントアドレスからなる同一のセットに基づいてアドレス指定される複数のオーバヘッドセグメントに割り当てるステップと、
ｄ．上記第１のオーバヘッド専用ブロック内の複数の連続したオーバヘッドページアドレスを、第１のオーバヘッドページを定義する第１のオーバヘッドページアドレスに関連付けられたユーザデータの第１の仮想論理ブロックを定義する第１の仮想論理ブロックアドレスを含むそれぞれ複数の連続した仮想論理ブロックアドレスに関連付けるステップとを有するデータ格納方法。
【請求項２】
ａ．ホストから、上記第１の仮想論理ブロックアドレスによって定義される第１のセットのユーザデータを供給するステップと、
ｂ．上記第１のセットのユーザデータを、第１の仮想物理ブロックアドレスによって定義される第１のデータ専用ブロックに格納するステップと、
ｃ．上記第１のオーバヘッドページ内において、未使用で、欠陥がなく、廃棄可能でない利用可能なオーバヘッドセグメントのうちの最小のセグメントアドレスを有する第１の利用可能なオーバヘッドセグメントを識別するステップと、
ｄ．上記第１のデータ専用ブロックのアドレスを、上記第１の利用可能なオーバヘッドセグメントの上記物理アドレスレジスタに格納するステップとを更に有する請求項１記載のデータ格納方法。
【請求項３】
上記複数のオーバヘッドセグメントのそれぞれは、エラー訂正コードを更に有することを特徴とする請求項１記載のデータ格納方法。
【請求項４】
上記第１のオーバヘッド専用ブロック内の使用中で、欠陥がなく、廃棄可能でない現在のオーバヘッドセグメントの全てを、上記第２のオーバヘッド専用ブロック内に整理統合するステップを更に有する請求項１記載のデータ格納方法。
【請求項５】
上記第１のオーバヘッド専用ブロックを第２のオーバヘッド専用ブロックに整理統合するステップは、
ａ．上記第１のオーバヘッド専用ブロックの上記第１のオーバヘッドページ内の現在のオーバヘッドセグメントに格納されているデータを、上記第２のオーバヘッド専用ブロック内の第２のオーバヘッドページ内の置換オーバヘッドセグメントに移動するステップと、
ｂ．上記第１のオーバヘッド専用ブロックを消去するステップとを有し、
上記置換オーバヘッドセグメントは、上記第１のオーバヘッドページを定義するオーバヘッドページアドレスと同じオーバヘッドページアドレスによって定義される上記第２のオーバヘッドページ内の最小のセグメントアドレスを有するオーバヘッドセグメントであることを特徴とする請求項４記載のデータ格納方法。
【請求項６】
上記複数の連続したオーバヘッドページアドレスをそれぞれ複数の連続した仮想論理ブロックアドレスに関連付けるステップは、ＲＡＭ空間マネージャによって実行されることを特徴とする請求項１記載のデータ格納方法。
【請求項７】
ａ．論理アドレスを、上記フラッシュメモリ装置内の不揮発性の関連付けレジスタに格納するステップと、
ｂ．電源投入時に、物理アドレスを、上記ＲＡＭ空間マネージャの関連付けレジスタにローディングするステップとを更に有する請求項６記載のデータ格納方法。
【請求項８】
上記各オーバヘッドセグメント内の上記フラグフィールドは、使用中フラグと、廃棄可能フラグと、欠陥フラグとを含むことを特徴とする請求項２記載のデータ格納方法。
【請求項９】
上記第１の利用可能なオーバヘッドセグメントを識別するステップは、
上記第１のオーバヘッドページ内の選択されたオーバヘッドセグメント内の選択されたフラグを調べるステップを有することを特徴とする請求項８記載のデータ格納方法。
【請求項１０】
上記第１のデータ専用ブロックのアドレスを第１の利用可能なオーバヘッドセグメントの物理アドレスレジスタに格納するステップは、
上記第１の利用可能なオーバヘッドセグメント内の上記使用中フラグを、該第１の利用可能なオーバヘッドセグメント内にオーバヘッドデータが格納されたことを示す第２の値に設定するステップを有することを特徴とする請求項９記載のデータ格納方法。
【請求項１１】
上記第１のデータ専用ブロックのアドレスを第１の利用可能なオーバヘッドセグメントの物理アドレスレジスタに格納するステップは、
最後に用いられたオーバヘッドセグメント内の上記廃棄可能フラグを、該最後に用いられたオーバヘッドセグメントが廃棄可能になったことを示す第２の値に設定するステップを更に有し、
上記第１の利用可能なオーバヘッドセグメントのアドレスは、上記第１のオーバヘッドページ内の上記最後に用いられたオーバヘッドセグメントを定義するアドレスに連続して続くアドレスであることを特徴とする請求項１０記載のデータ格納方法。
【請求項１２】
上記整理統合するステップは、上記第１のオーバヘッド専用ブロック内の１つのオーバヘッドページの最大のアドレス可能なオーバヘッドセグメントにオーバヘッドデータを書き込んだ後に、実行されることを特徴とする請求項３記載のデータ格納方法。
【請求項１３】
ａ．上記オーバヘッド専用ブロックを、不良ブロックとしてマークするステップと、
ｂ．上記データ専用ブロックを、上記オーバヘッド専用ブロックとして再指定するステップとを更に有する請求項１記載のデータ格納方法。
【請求項１４】
フラッシュメモリ装置内にデジタルデータを格納するデータ格納方法において、
ａ．上記フラッシュメモリ装置内の不揮発性記憶媒体を、複数のデータ専用ブロックと、第１のオーバヘッド専用ブロック及び第２のオーバヘッド専用ブロックを含む複数のオーバヘッド専用ブロックとを含む、独立してアドレス可能であり、独立して書込可能であり、独立して消去可能な複数のメモリブロックに割り当てるステップと、
ｂ．上記複数のオーバヘッド専用ブロックのそれぞれを、物理アドレスレジスタ及びフラグフィールドをそれぞれ有し、連続してアドレスが付けられた複数のオーバヘッドセグメントであって、各オーバヘッド専用ブロック内では異なるセグメントアドレスからなる同一のセットに基づいてアドレス指定される該複数のオーバヘッドセグメントに割り当るステップと、
ｃ．上記第１のオーバヘッド専用ブロックを、第１の仮想論理ブロックアドレスを含む第１のグループの仮想論理ブロックアドレスに関連付けるステップとを有するデータ格納方法。
【請求項１５】
ａ．ホストから、上記第１の仮想論理ブロックアドレスによって定義される第１のセットのユーザデータを供給するステップと、
ｂ．上記第１のオーバヘッド専用ブロックにおいて、未使用で、欠陥がなく、廃棄可能でない利用可能なオーバヘッドセグメントのうちの最小のセグメントアドレスを有する第１の利用可能なオーバヘッドセグメントを識別するステップと、
ｃ．上記第１のセットのユーザデータを、第１の仮想物理ブロックアドレスによって定義される第１のデータ専用ブロックに格納するステップと、
ｄ．上記第１のデータ専用ブロックのアドレスを、上記第１の利用可能なオーバヘッドセグメントの上記物理アドレスレジスタに格納するステップとを更に有する請求項１４記載のデータ格納方法。
【請求項１６】
上記第１のオーバヘッド専用ブロック内の使用中で、欠陥がなく、廃棄可能でない現在のオーバヘッドセグメントの全てを、上記第２のオーバヘッド専用ブロック内の連続したオーバヘッドセグメントに整理統合するステップを更に有する請求項１５記載のデータ格納方法。
【請求項１７】
上記第１のオーバヘッド専用ブロックを第２のオーバヘッド専用ブロックに整理統合するステップは、
ａ．上記第１のオーバヘッド専用ブロックの第１の現在のオーバヘッドセグメントに格納されているデータを、上記第２のオーバヘッド専用ブロック内の最小のセグメントアドレスを有する利用可能なオーバヘッドセグメントに移動するステップと、
ｂ．上記第１のオーバヘッド専用ブロックを消去するステップとを有することを特徴とする請求項１６記載のデータ格納方法。
【請求項１８】
上記整理統合するステップは、上記第１のオーバヘッド専用ブロック内の最後のアドレス可能なオーバヘッドセグメントにオーバヘッドデータを書き込んだ後に、実行されることを特徴とする請求項１７記載のデータ格納方法。
【請求項１９】
上記複数のオーバヘッドセグメントのそれぞれは、ユーザデータをサポートするエラー訂正データを格納するエラー訂正フィールドを更に有することを特徴とする請求項１４記載のデータ格納方法。
【請求項２０】
上記関連付けるステップは、ＲＡＭ空間マネージャによって実行されることを特徴とする請求項１４記載のデータ格納方法。
【請求項２１】
上記各オーバヘッドセグメント内の上記フラグフィールドは、使用中フラグと、廃棄可能フラグと、欠陥フラグとを含むことを特徴とする請求項１５記載のデータ格納方法。
【請求項２２】
上記第１の利用可能なオーバヘッドセグメントを識別するステップは、
上記第１のオーバヘッド専用ブロック内の選択されたオーバヘッドセグメント内の選択されたフラグを調べるステップを有することを特徴とする請求項１５記載のデータ格納方法。
【請求項２３】
次に利用可能なオーバヘッドセグメント内の上記使用中フラグを、該次に利用可能なオーバヘッドセグメント内にオーバヘッドデータが格納されたことを示す第２の値に設定するステップを更に有する請求項２１記載のデータ格納方法。
【請求項２４】
上記第１の現在のオーバヘッドセグメントに格納されているデータを利用可能なオーバヘッドセグメントに移動するステップは、
ａ．上記第１のオーバヘッド専用ブロックを構成するオーバヘッドセグメントのうちの選択されたオーバヘッドセグメント内の選択されたフラグを調べるステップと、
ｂ．上記第２のオーバヘッド専用ブロックを構成するオーバヘッドセグメントのうちの選択されたオーバヘッドセグメント内の選択されたフラグを調べるステップとを有することを特徴とする請求項１７記載のデータ格納方法。
【請求項２５】
ａ．論理アドレスを、上記フラッシュメモリ装置内の不揮発性の関連付けレジスタに格納するステップと、
ｂ．電源投入時に、物理アドレスを、上記ＲＡＭ空間マネージャの関連付けレジスタにローディングするステップとを更に有する請求項２０記載のデータ格納方法。
【請求項２６】
ａ．上記オーバヘッド専用ブロックを、不良ブロックとしてマークするステップと、
ｂ．上記データ専用ブロックを、上記オーバヘッド専用ブロックとして再指定するステップとを更に有する請求項１４記載のデータ格納方法。
【請求項２７】
フラッシュメモリ装置内にデジタルデータを格納するデータ格納方法において、
ａ．上記フラッシュメモリ装置内の不揮発性記憶媒体を、複数のデータ専用ブロックと、第１のオーバヘッド専用ブロック及び第２のオーバヘッド専用ブロックを含む複数のオーバヘッド専用ブロックとを含む、独立してアドレス可能であり、独立して書込可能であり、独立して消去可能な複数のメモリブロックに割り当てるステップと、
ｂ．上記複数のオーバヘッド専用ブロックのそれぞれを、
連続してアドレス可能な複数のオーバヘッドセグメントであって、同じ順序のオーバヘッドセグメントアドレスによって定義される複数のオーバヘッドセグメントを有する固定オーバヘッドフィールドと、
物理アドレスレジスタを含む複数のレジスタをそれぞれ有する、連続してアドレス可能な複数のオーバヘッドセグメントを有するランダムオーバヘッドフィールドとに割り当てるステップと、
ｃ．上記第１のオーバヘッド専用ブロックの上記固定オーバヘッドフィールド内の連続してアドレス可能な複数のオーバヘッドセグメントを、第１の仮想論理ブロックアドレスに関連付けられた第１の固定オーバヘッドセグメントを含む連続してアドレス可能な仮想論理ブロックアドレスの第１のグループに関連付けるステップとを有するデータ格納方法。
【請求項２８】
ａ．上記オーバヘッド専用ブロックを、不良ブロックとしてマークするステップと、
ｂ．上記データ専用ブロックを、上記オーバヘッド専用ブロックとして再指定するステップとを更に有する請求項２７記載のデータ格納方法。
【請求項２９】
上記第１のオーバヘッド専用ブロックの固定オーバヘッドフィールド内の連続してアドレス可能な複数のオーバヘッドセグメントを第１の仮想論理ブロックアドレスに関連付けられた第１の固定オーバヘッドセグメントを含む連続してアドレス可能な仮想論理ブロックアドレスの第１のグループに関連付けるステップは、ＲＡＭ空間マネージャによって実行されることを特徴とする請求項２７記載のデータ格納方法。
【請求項３０】
ａ．論理アドレスを、上記フラッシュメモリ装置内の不揮発性の関連付けレジスタに格納するステップと、
ｂ．電源投入時に、物理アドレスを、上記ＲＡＭ空間マネージャの関連付けレジスタにローディングして、上記論理アドレスを、該ＲＡＭ空間マネージャ内の物理アドレスに関連付けるステップとを更に有する請求項２９記載のデータ格納方法。
【請求項３１】
ａ．ホストから、上記第１の仮想論理ブロックアドレスによって定義される第１のセットのユーザデータを供給するステップと、
ｂ．上記第１のセットのユーザデータを、第１の仮想物理ブロックアドレスによって定義される第１のデータ専用ブロックに格納するステップと、
ｃ．上記第１の仮想論理ブロックアドレスに対応するオーバヘッドデータを、上記第１のオーバヘッド専用ブロック内の上記第１のオーバヘッドセグメントに格納するステップとを更に有する請求項２７記載のデータ格納方法。
【請求項３２】
上記オーバヘッドデータを第１のオーバヘッドセグメントに格納するステップは、
ａ．上記第１のオーバヘッド専用ブロックの上記固定オーバヘッドフィールド内の上記第１の固定オーバヘッドセグメントを識別するステップと、
ｂ．上記第１の固定オーバヘッドセグメントが利用可能であるか否かを判定するステップと、
ｃ．上記第１の固定オーバヘッドセグメントが利用可能であるとき、上記第１の仮想論理ブロックアドレスをサポートするオーバヘッドデータを、該第１の固定オーバヘッドセグメントに格納するステップと、
ｄ．上記第１の固定オーバヘッドセグメントが利用可能ではないとき、上記第１の仮想論理ブロックアドレスをサポートするオーバヘッドデータを、第１のランダムオーバヘッドセグメントに格納するステップとを有し、
上記第１のランダムオーバヘッドセグメントは、上記第１のオーバヘッド専用ブロックの上記ランダムオーバヘッドフィールド内において、未使用で、欠陥がないオーバヘッドセグメントのうちの最小のセグメントアドレスを有するオーバヘッドセグメントであることを特徴とする請求項３１記載のデータ格納方法。
【請求項３３】
上記第１の固定オーバヘッドセグメントが利用可能であるか否かを判定するステップは、
上記第１の固定オーバヘッドセグメント内のフラグを調べるステップを有することを特徴とする請求項３１記載のデータ格納方法。
【請求項３４】
ａ．各オーバヘッド専用ブロックの上記ランダムオーバヘッドフィールドを、複数のオーバヘッドセグメントをそれぞれ有する複数のオーバヘッドページに割り当てるステップと、
ｂ．上記ランダムオーバヘッドフィールド内の各オーバヘッドページの最小のセグメントアドレスを有するオーバヘッドセグメントを、状態セグメントとして指定するステップと、
ｃ．上記各状態セグメントを、更新マップとして機能する複数のレジスタに割り当てるステップとを更に有する請求項３１記載のデータ格納方法。
【請求項３５】
上記第１の仮想論理ブロックアドレスに対応するオーバヘッドデータを第１のランダムオーバヘッドセグメントに格納するステップは、
ａ．上記第１の仮想論理ブロックアドレスをサポートするオーバヘッドデータを格納するのに最後に用いられたオーバヘッドセグメントを検出するステップと、
ｂ．上記最後に用いられたオーバヘッドセグメントの上記廃棄可能フラグを、該最後に用いられたオーバヘッドセグメント内のオーバヘッドデータが現在廃棄可能になったことを示す第２の値に設定するステップと、
ｃ．上記第１のランダムオーバヘッドセグメントの使用中フラグを、該第１のランダムオーバヘッドセグメントが現在使用中になったことを示す第２の値に設定するステップとを有することを特徴とする請求項３２記載のデータ格納方法。
【請求項３６】
上記更新マップは、上記第１のオーバヘッド専用ブロックの上記固定オーバヘッドフィールド内の各オーバヘッドセグメントに対応する１つのレジスタを有することを特徴とする請求項３４記載のデータ格納方法。
【請求項３７】
上記第１のオーバヘッド専用ブロックがフル状態となったとき、該第１のオーバヘッド専用ブロック内の現在のオーバヘッドセグメントを、上記第２のオーバヘッド専用ブロックに整理統合するステップを更に有する請求項２７記載のデータ格納方法。
【請求項３８】
上記現在のオーバヘッドセグメントを整理統合するステップは、
ａ．上記第２のオーバヘッド専用ブロックの固定オーバヘッドフィールド内の第２のオーバヘッドセグメントを、上記第１の仮想論理ブロックアドレスに関連付けるステップと、
ｂ．上記第１のオーバヘッドセグメント内のデータを、上記第２のオーバヘッドセグメントにコピーするステップとを有することを特徴とする請求項３７記載のデータ格納方法。
【請求項３９】
フラッシュメモリ装置内にデジタルデータを格納するデータ格納方法において、
ａ．上記フラッシュメモリ装置内の不揮発性記憶媒体を、複数のデータ専用ブロックと、第１のオーバヘッド専用ブロック及び第２のオーバヘッド専用ブロックを含む複数のオーバヘッド専用ブロックとを含み、独立してアドレス可能であり、独立して書込可能であり、独立して消去可能な複数のメモリブロックに割り当てるステップと、
ｂ．上記複数のオーバヘッド専用ブロックのそれぞれを、上記第１のオーバヘッド専用ブロック内の第１のスーパオーバヘッドフィールドを含む複数のスーパオーバヘッドフィールドに割り当てるステップと、
ｃ．上記複数のスーパオーバヘッドフィールドのそれぞれを、物理アドレスレジスタを含む複数のレジスタをそれぞれ有し、連続してアドレス可能なオーバヘッドセグメントからなる同一のセットに割り当てるステップと、
ｄ．連続した仮想論理ブロックアドレスによって定義される第１のスーパ仮想論理ブロックアドレスを、上記第１のオーバヘッド専用ブロックに関連付けるステップと、
ｅ．上記第１のスーパ仮想論理ブロックアドレス内の第１の仮想論理ブロックアドレスを、上記第１のオーバヘッド専用ブロック内の第１のオーバヘッドセグメントアドレスに関連付けるステップとを有するデータ格納方法。
【請求項４０】
ａ．上記オーバヘッド専用ブロックを、不良ブロックとしてマークするステップと、
ｂ．上記データ専用ブロックを、上記オーバヘッド専用ブロックとして再指定するステップとを更に有する請求項３９記載のデータ格納方法。
【請求項４１】
上記第１のスーパ仮想論理ブロックアドレスを第１のオーバヘッド専用ブロックに関連付けるステップは、ＲＡＭ空間マネージャによって実行されることを特徴とする請求項３９記載のデータ格納方法。
【請求項４２】
ａ．論理アドレスを、上記フラッシュメモリ装置内の不揮発性の関連付けレジスタに格納するステップと、
ｂ．電源投入時に、物理アドレスを、上記ＲＡＭ空間マネージャの関連付けレジスタにローディングして、上記論理アドレスを、該ＲＡＭ空間マネージャ内の物理アドレスに関連付けるステップとを更に有する請求項４１記載のデータ格納方法。
【請求項４３】
上記不揮発性の関連付けレジスタは、上記オーバヘッド専用ブロックのスーパオーバヘッドフィールドの拡張フィールド内に設けられていることを特徴とする請求項４２記載のデータ格納方法。
【請求項４４】
ａ．ホストから、上記第１の仮想論理ブロックアドレスによって定義される第１のセットのユーザデータを供給するステップと、
ｂ．上記第１のセットのユーザデータを、第１の仮想物理ブロックアドレスによって定義される第１のデータ専用ブロックに格納するステップと、
ｃ．上記第１の仮想論理ブロックアドレスに対応するオーバヘッドデータを、上記第１のスーパオーバヘッドフィールド内の上記第１のオーバヘッドセグメントアドレスによって定義される第１のオーバヘッドセグメントに格納するステップとを更に有する請求項３９記載のデータ格納方法。
【請求項４５】
上記オーバヘッドデータを第１のオーバヘッドセグメントに格納するステップは、上記第１のオーバヘッド専用ブロック内の前のスーパオーバヘッドフィールドから上記第１のスーパオーバヘッドフィールドにインクリメントするステップの後に、実行されることを特徴とする請求項４４記載のデータ格納方法。
【請求項４６】
上記オーバヘッドデータを第１のオーバヘッドセグメントに格納するステップは、
上記第１のオーバヘッドセグメント内の使用中フラグを、該第１のオーバヘッドセグメント内にオーバヘッドデータが格納されたことを示す第２の値に設定するステップを有することを特徴とする請求項４４記載のデータ格納方法。
【請求項４７】
上記オーバヘッドデータを第１のオーバヘッドセグメントに格納するステップは、
ａ．上記第１の仮想論理ブロックアドレスをサポートするオーバヘッドデータを格納するのに用いられた上記第１のオーバヘッド専用ブロック内の最後に用いられたオーバヘッドセグメントを検出するステップと、
ｂ．上記最後に用いられたオーバヘッドセグメントの上記廃棄可能フラグを、該最後に用いられたオーバヘッドセグメント内のオーバヘッドデータが現在廃棄可能になったことを示す第２の値に設定するステップとを更に有することを特徴とする請求項４６記載のデータ格納方法。
【請求項４８】
上記第１のオーバヘッド専用ブロックの最後のスーパオーバヘッドフィールドにオーバヘッドデータが格納されたとき、該第１のオーバヘッド専用ブロック内の現在のオーバヘッドセグメントを、上記第２のオーバヘッド専用ブロックに整理統合するステップを更に有する請求項３９記載のデータ格納方法。
【請求項４９】
上記現在のオーバヘッドセグメントを整理統合するステップは、
ａ．上記第１のオーバヘッド専用ブロック内の上記第１のオーバヘッドセグメントアドレスによって定義される第１の現在のオーバヘッドセグメントを識別するステップと、
ｂ．上記第１の現在のオーバヘッドセグメント内のデータを、上記第２のオーバヘッド専用ブロックの第１のスーパオーバヘッドフィールド内の上記第１のオーバヘッドセグメントアドレスによって定義される第２のオーバヘッドセグメントにコピーするステップとを更に有することを特徴とする請求項４８記載のデータ格納方法。
【請求項５０】
複数の物理ブロックアドレスによって区別して定義され、独立してアドレス可能であり、独立して書込可能であり、独立して消去可能な複数の不揮発性の物理メモリブロックを備え、ユーザデータを格納するフラッシュメモリデバイスにおいて、
ａ．上記ユーザデータを格納する複数のデータ専用ブロックと、
ｂ．第１のオーバヘッド専用ブロック及び第２のオーバヘッド専用ブロックを含む、オーバヘッドデータを格納する複数のオーバヘッド専用ブロックとを備えるフラッシュメモリデバイス。
【請求項５１】
上記各オーバヘッド専用ブロックは、同じ順序のオーバヘッドページアドレスに従い、独立してアドレス可能な複数のオーバヘッドページを備えることを特徴とする請求項５０記載のフラッシュメモリデバイス。
【請求項５２】
上記各オーバヘッドページは、独立してアドレス可能であり、独立して書込可能な複数のオーバヘッドセグメントを備えることを特徴とする請求項５１記載のフラッシュメモリデバイス。
【請求項５３】
上記複数のオーバヘッドセグメントは、それぞれ１つの仮想論理ブロックのユーザデータをサポートし、上記オーバヘッドデータを格納するのに用いられ、
上記各オーバヘッドセグメントは、
ａ．対応するユーザデータを検出する物理アドレスを格納する物理アドレスレジスタと、
ｂ．フラグフィールドとを備えることを特徴とする請求項５２記載のフラッシュメモリデバイス。
【請求項５４】
第１の仮想論理ブロックアドレスを含む第１のグループの仮想論理ブロックアドレスを、上記第１のオーバヘッド専用ブロックに割り当てて、該第１の仮想論理ブロックアドレスをサポートするために生成されたオーバヘッドデータを、該第１のオーバヘッド専用ブロック内のオーバヘッドセグメントに格納することを特徴とする請求項５３記載のフラッシュメモリデバイス。
【請求項５５】
上記第１のオーバヘッド専用ブロック内の第１のオーバヘッドページに関連付けられた第１の仮想論理ブロックアドレスを含む、上記第１のグループの仮想論理ブロックアドレス内の連続した仮想論理ブロックアドレスを、該第１のオーバヘッド専用ブロック内の連続してアドレスが付けられたオーバヘッドページのアドレスにそれぞれ関連付けて、該第１の仮想論理ブロックアドレスをサポートするオーバヘッドデータを、上記第１のオーバヘッドページのオーバヘッドセグメントに格納することを特徴とする請求項５４記載のフラッシュメモリデバイス。
【請求項５６】
上記複数のオーバヘッド専用ブロックのそれぞれは、
連続してアドレスが付けられた複数のオーバヘッドセグメントを有する固定オーバヘッドフィールドと、
連続してアドレスが付けられた複数のオーバヘッドページを有するランダムオーバヘッドフィールドとを更に備えることを特徴とする請求項５４記載のフラッシュメモリデバイス。
【請求項５７】
上記第１のオーバヘッド専用ブロックの固定オーバヘッドフィールド内の連続してアドレス可能なオーバヘッドページを構成する連続してアドレスが付けられたオーバヘッドセグメントは、連続してアドレスが付けられた仮想論理ブロックアドレスにそれぞれ関連付けられていることを特徴とする請求項５６記載のフラッシュメモリデバイス。
【請求項５８】
上記第１のオーバヘッド専用ブロックのランダムオーバヘッドフィールド内の第１のオーバヘッドページ内の連続してアドレスが付けられたオーバヘッドページを構成する連続してアドレスが付けられた複数のオーバヘッドセグメントは、該第１のオーバヘッドページ内の複数のオーバヘッドセグメントのうちの最小のセグメントアドレスによって定義される状態セグメントと、複数のオーバヘッドセグメントとからなることを特徴とする請求項５７記載のフラッシュメモリデバイス。
【請求項５９】
上記各オーバヘッド専用ブロックは、第１のスーパオーバヘッドフィールドを含む、全てのページ番号からなる複数のスーパオーバヘッドフィールドを更に備え、
上記第１のオーバヘッド専用ブロック内の各スーパオーバヘッドフィールドは、同数のオーバヘッドページを有し、
上記第１のスーパオーバヘッドフィールドの連続したオーバヘッドセグメントは、第１のスーパブロックを構成する連続してアドレスが付けられた仮想論理ブロックアドレスにそれぞれ割り当てられていることを特徴とする請求項５４記載のフラッシュメモリデバイス。
【請求項６０】
当該フラッシュメモリデバイスの動作を調整して、制御するコントローラを更に備える請求項５０記載のフラッシュメモリデバイス。
【請求項６１】
仮想アドレスと物理アドレスを関連付ける複数の関連付けフィールドを有する揮発性のＲＡＭ空間マネージャを更に備える請求項５０記載のフラッシュメモリデバイス。
【請求項６２】
上記空間マネージャは、複数の状態フラグを有するフラグレジスタを備えることを特徴とする請求項６１記載のフラッシュメモリデバイス。
【請求項６３】
スタートアップ時に、データを不揮発性メモリ領域から上記空間マネージャにローディングするロード手段を更に備える請求項６２記載のフラッシュメモリデバイス。
【請求項６４】
リセットコマンドと同時に、データを上記空間マネージャにローディングするロード手段を更に備える請求項６２記載のフラッシュメモリデバイス。
【請求項６５】
当該フラッシュメモリデバイス内に格納されるユーザデータに対応するエラー訂正データを生成するエラー訂正データ生成手段を更に備える請求項５０記載のフラッシュメモリデバイス。
【請求項６６】
既存のオーバヘッド専用ブロックが不良となったとき、上記データ専用ブロックを、オーバヘッド専用ブロックとして機能させるように再指定する再指定手段を更に備える請求項５０記載のフラッシュメモリデバイス。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、フラッシュメモリ装置に関する。詳しくは、本発明は、データ記憶領域とオーバヘッド記憶領域とを分離したフラッシュメモリアレーの割当に関する。
【０００２】
【従来の技術】
フラッシュメモリは、電気的に書換可能な不揮発性デジタルメモリ媒体である。フラッシュメモリは、不揮発性であるので、そのメモリ内に記憶されているデジタルデータを保持するための保持電圧（sustained voltage）を必要としない。フラッシュメモリセルは、通常、フローティングゲートに電荷を蓄積して２進状態システムの第１の論理状態を表し、蓄積電荷を放電して第２の論理状態を表す。フラッシュメモリセルは、通常、書込動作、読出動作及び消去動作をサポートしている。フラッシュメモリは、従来の回転式磁気記録媒体と同様に、不揮発性の記憶媒体である。すなわち、フラッシュメモリに記憶されたデータは、電源を切っても保持される。これは、例えば、デジタル「フィルム」全体がカメラから取り出され、新たなフィルムに入れ替えられるデジタルカメラ（digital photography）のような様々な応用において有用である。フラッシュ型のデジタルメモリ装置をホストのカメラから取り出しても、メモリに記憶されているデータは消えない。
【０００３】
フラッシュメモリ技術の進歩に伴い、様々な用途が実現されている。フラッシュメモリの分野では、特に、従来の回転式磁気記録媒体、例えばホストコンピュータシステム又は他のホストデジタルシステムに接続されたハードディスクドライブ又はフロッピディスクドライブの大容量記憶機能をエミュレートする応用例が広く受け入れられている。ハードディスクドライブ及びフロッピディスクドライブは、フラッシュメモリ技術では生じない幾つかの問題を有している。第１に、ハードディスクドライブ及びフロッピディスクドライブは、多くの可動部品、例えば電動モータ、スピンドルシャフト、読出／書込ヘッド、回転磁気ディスクを備えている。これらの部品のために、信頼性に問題が生じ、ハードディスクドライブ及びフロッピディスクドライブは、落下又は衝突による振動及び衝撃により故障しやすい。第２に、モータ駆動ディスクドライブは、消費電力が大きく、バッテリの充電から次の充電までの動作時間を大幅に短くしている。最後に、ハードディスク又はフロッピディスクに記録されたデータへのアクセス速度が比較的遅いという問題もある。
【０００４】
一方、フラッシュメモリ装置は、これらの回転式記録ディスクに対して多くの利点を有している。標準的なフラッシュメモリ装置は、可動部品を有しておらず、信頼性が高い。更に、フラッシュメモリ装置の構造は簡単であるので、フラッシュメモリ装置は、ハードディスクドライブやフロッピディスクドライブの場合であれば深刻な結果を招くような環境条件及び物理的誤操作にも耐えることができる。また、一般的に、ユーザは、フラッシュメモリ装置に記憶されているデータに非常に高速にアクセスすることができる。更に、標準的なフラッシュメモリ装置の消費電力は、ハードディスクドライブ及びフロッピディスクドライブの消費電力よりも著しく少ない。
【０００５】
【発明が解決しようとする課題】
回転式磁気記録媒体、例えばハードディスクドライブが市場に浸透し、汎用的に用いられているので、市場で円板型メモリに代わろうとしているあらゆる処理又はデバイスは、既存のソフトウェア及びオペレーティングシステムに互換性を有する必要がある。フラッシュメモリ技術は、大容量記憶用途に適しているが、従来のフラッシュメモリのアーキテクチャは、従来のデータ記憶デバイス、例えばハードディスクドライブ又はフロッピディスクドライブに対して、利点と欠点の両方を有している。フラッシュメモリデバイス及び装置に共通する欠点の１つは、フラッシュメモリデバイス及び装置では、ハードディスクドライブ及びフロッピディスクドライブによって実行されているデータのアドレッシングアドレス指定、記憶及び検索手順を再現できない点にある。市場における互換性は重要であるので、これらの手順を再現し、既存のオペレーティングシステムとの互換性を実現する装置又は処理は、通常、フラッシュメモリ装置自体に組み込む必要がある。従来の技術との互換性を実現する手法としては、後に詳細に説明するように、フラッシュメモリを、従来のハードディスクのセクタと同じ記憶容量及びアーキテクチャを有するセクタに分割する手法がある。
【０００６】
更に、フラッシュメモリ技術には、フラッシュメモリセルの現在データを記憶しているセクタに対しては、書込動作を行えないという制約がある。ディスクドライブでは、前にデータを記憶した領域にデータを上書きすることができるが、フラッシュメモリセルのセクタは、データを書き込む前に、消去する必要がある。このような消去が必要なために、同じセクタに対する連続した書込動作間に遅延が生じる。
【０００７】
更に、ハードディスク装置では、システム性能を損なうことなく、同じセクタに対して、仮想的に無限回の消去及び上書を行うことができる。一方、フラッシュメモリ装置では、セクタへの書込及び消去サイクル毎に、セクタの性能が劣化する。通常、フラッシュメモリセルのセクタを消去するために必要な電圧は、フローティングゲートを保護している絶縁層を劣化させる。消去動作を繰り返すことにより、絶縁層の絶縁機能が失われ、フローティングゲート上の束縛電子（bound electron）が放出される。フローティングゲートが効果的に電荷を保持できなくなると、フラッシュメモリ又はフラッシュメモリセル内の幾つかの特定のセクタは動作不能となる。高度な消去プログラムにより、消去動作の結果生じる劣化の問題を改善することができるが、この問題は完全に解消されるわけではない。更に、高度な消去プログラムをローディングして、実行するには時間がかかり、消去動作自体の遅延に更に遅延を生じさせる。また、保護消去プログラム（protective erase program）を採用しないと、消去の結果生じる劣化が加速され、フラッシュメモリセルの寿命が大幅に短くなる。
【０００８】
消去−書込サイクルを有限回繰り返した後には、フラッシュメモリセルが使用できなくなるという消耗特性（wearing-out property）のために、標準的なフラッシュメモリ装置で実行されるデータ記憶手順では、累積的なゲートの劣化を極力避け、フラッシュメモリセルの寿命を長くする必要がある。フラッシュメモリセルの劣化を遅くする一手法としては、同じセクタへの書込及び消去動作の繰返し回数を低減するという手法がある。これは、通常、ウェアレベリングプログラム（wear-leveling program）によって実現され、ウェアレベリングプログラムは、セクタの使用を調整し、フラッシュメモリセルの各領域が、同じ回数だけ消去されるようにし、それによって、それぞれが均等な速度で消耗するようにするものである。更に、フラッシュメモリの連続したセクタにデータを巡回的に記憶することにより、前のセクタの消去を適切な時期まで延期することができ、これにより、消去処理によって生じる不要な遅延を回避することができる。
【０００９】
このように、標準的なフラッシュメモリ装置によって実現されているデータ記憶手順は、可動部品がなく、電力消費量が少ないという観点から、ハードディスク記憶装置又はフロッピディスク記憶装置よりも優れているが、フラッシュメモリ装置には、解決しなくてはならない問題がある。
【００１０】
従来のフラッシュメモリセルのアーキテクチャを図１に示す。フラッシュメモリアレー１００は、標準的なフラッシュメモリデバイスにおける不揮発性大容量記憶素子として機能する。フラッシュメモリアレー１００は、ユーザデータ及びオーバヘッドデータを格納する複数のデータブロック１０２〜１０６に分割されている。各データブロック１０２〜１０６には、便宜的に、番号０〜（Ｍ−１）が付されており、Ｍは、データブロック１０２〜１０６の総数を表す。通常、各データブロック１０２〜１０６は、それぞれ選択的に書込可能（programmable）であり、消去可能である。各データブロック１０２〜１０６は、複数のセクタからなり、これらのセクタは、容量及び多くのアーキテクチャの特徴の観点から、回転式記録ディスクのセクタをエミュレートしている。通常、各データブロック１０２〜１０６は、それぞれ１６個のセクタ、例えば番号０〜１５が付されたセクタ１１２〜１１６を有する。セクタの数は可変することができるので、図１では、各データブロック１０２〜１０６のセクタ数をＮとし、各セクタに０〜（Ｎ−１）の番号を付している。
【００１１】
各データブロック１０２〜１０６は、固有の仮想ブロックアドレス（Virtual Physical Block Address：以下、ＶＰＢＡという。）によって定義される。例えば、各データブロック（以下、物理データブロックともいう。）１０２〜１０６内のセクタ数を１６とし、各セクタに番号０〜１５が付されている場合、セクタは、データブロックのＶＰＢＡと、セクタ番号とからなる物理ブロックアドレス（Physical Block Address：以下、ＰＢＡという。）によって定義される。例えば、データブロック１０６が仮想物理ブロックアドレス（ＶＰＢＡ）１０２４によって定義されている場合、第１５セクタは、物理ブロックアドレス（ＰＢＡ）１０２４：１５によって定義される。
【００１２】
図２は、従来の個々のセクタ２００のデータ構成を示している。セクタ２００は、図１に示す各セクタ１１２〜１３６の１つを例示的に示している。従来のセクタ２００は、ユーザデータを格納するデータフィールド２０２と、オーバヘッドデータを格納する拡張フィールド２０４とを有する。従来においては、データフィールド２０２と拡張フィールド２０４は、同じセクタ２００の一部であるので、ユーザデータとオーバヘッドデータとを独立して消去することができないという重要な制約があった。このアーキテクチャ上の制約により、セクタレベル以下を対象とする消去は、禁止されていた。したがって、セクタの下位部分、例えばデータフィールド２０２又は拡張フィールド２０４は、独立して消去することができなかった。
【００１３】
図２に示すように、データフィールド２０２は、通常、５１２バイトからなり、このバイト数は、市販されているハードディスクドライブ又はフロッピディスクドライブの記録セクタ長に対応している。拡張フィールド２０４は、通常、合計１６バイトからなり、可変サイズの複数のフィールド（又はレジスタ）２０６〜２１２から構成され、オーバヘッドデータを格納する。フラッシュメモリのセクタ２００は、データフィールド２０２と拡張フィールド２０４の両方を有することにより、回転式データ記録媒体、例えばディスクドライブにおいて一般的に見られるデータ記憶領域のセクタをエミュレートしている。エラー訂正コード（Error Correction Code：以下、ＥＣＣという。）フィールド２０６には、公認のＥＣＣを用いて生成されたＥＣＣデータが格納される。特定のＥＣＣフィールド２０６に格納されているＥＣＣデータは、同じセクタ内の対応するデータフィールド２０２に格納されているユーザデータに対するエラー検査に用いられる。ＥＣＣフィールド２０６は、通常、４バイトである。論理ブロックアドレス（Logical Block Address：以下、ＬＢＡという。）フィールド２０８は、データフィールド２０２に格納されているデータに関連した論理ブロックアドレス（ＬＢＡ）又は仮想論理ブロックアドレス（Virtual Logical Block Address：以下、ＶＬＢＡという。）を格納し、通常、２バイトであり、後に詳細に説明するように、関連付けの目的で用いられる。フラグフィールド２１０は、ブロックに欠陥があるか否か、ブロックが使用中であるか未使用であるか、ブロックに格納されているデータが現在のデータであるか、古い不要な（obsolete）データであるかを示す複数のフラグを格納するために用いられる。フラグフィールド２１０は、通常、１バイトである。オプションの予備オーバヘッドビット（optional spare overhead bits）の予備フィールド２１２は、通常、拡張フィールド２０４内の未使用の記憶領域から構成されている。
【００１４】
図３は、従来のフラッシュメモリ装置におけるデータ格納処理を説明する図である。ホストデジタルシステムは、仮想論理ブロックアドレスが１７で定義されるユーザデータ３００をフラッシュメモリ装置に供給する。仮想論理ブロックアドレスは、通常、ホストデジタルシステムによって割り当てられる。ユーザデータ３００の仮想論理ブロック（以下、単に仮想論理ブロック３００ともいう。）は、構成要素であるデータの論理ブロック（component logical block）３１０〜３１６に分割され、各論理ブロック３１０〜３１６には、互いに異なる論理ブロックアドレス３０２〜３０８が付けられている。各論理ブロック３１０〜３１６は、フラッシュメモリのセクタ２００のデータフィールド２０２の領域（以下、ユーザデータ領域２０２ともいう。）の記憶容量に等しい、すなわち５１２バイトのユーザデータを格納する。上述したように、個々のセクタ１１２〜１３６は、固有の物理ブロックアドレス（ＰＢＡ）によって定義されている。
【００１５】
ＰＢＡによって定義されるセクタのメモリ容量は、ＬＢＡによって定義される論理ブロックのユーザデータの量に等しい。仮想論理ブロック３００は、複数の論理ブロック３１０〜３１６から構成されている。理想的には、仮想論理ブロック３００を構成するデータの論理ブロック３１０〜３１６の数は、物理データブロック３２０を構成する物理セクタ３２２〜３２８の数に等しい。したがって、仮想物理ブロックアドレス（ＶＰＢＡ）によって定義されるフラッシュメモリの物理データブロック３２０は、ユーザデータの仮想論理ブロックアドレス（ＶＬＢＡ）によって表されるデータ量に等しいメモリ容量を有する。この具体例では例示的に１７としている仮想論理ブロックアドレス（ＶＬＢＡ）によって定義される入力ユーザデータの１つの仮想論理ブロック３００は、この具体例では例示的に１３４としている仮想物理ブロックアドレス（ＶＰＢＡ）によって定義されるフラッシュメモリの１つの物理データブロック３２０に格納される。
【００１６】
１つのアドレスの論理データを異なるアドレスの物理メモリに格納する理由は、フラッシュメモリ装置と従来の円板型メモリ間の違いに由来する。従来の回転式磁気記録媒体においては、更新されるデータは、古いデータに上書きされるので、ＬＢＡとＰＢＡの関係は変化しない。一方、フラッシュメモリでは、上述したように、書込及び消去を繰り返すことにより、フラッシュメモリの寿命が短くなるので、通常、ウェアレベリングプログラムが採用されており、フラッシュメモリ内の全ての物理的データ格納領域が均等に使用されることを保証している。管理アルゴリズムは、元の物理データブロックに戻るまでに、全ての物理データブロックを巡回することを試みるものであり、これにより、全ての物理データブロックの使用率、すなわち消耗が均一になる。一方、論理アドレスは、他の全てのＶＬＢＡを巡回的に使用することなく、更新又は再使用することができる。したがって、再使用された論理ブロックアドレスによって定義される入力データは、通常、その論理ブロックアドレスによって定義されていたデータが前に格納されていた同じ物理セクタには格納されない。したがって、標準的なフラッシュメモリ装置に実装されているデータ記憶アルゴリズムの特長は、ＬＢＡとＰＢＡ間の関係を連続的に変えることである。
【００１７】
論理ブロック３１０〜３１６のデータから構成される仮想論理ブロック３００のデータは、共通のＶＬＢＡ、この具体例では「１７」と、番号０〜１５が付された連続した論理ブロック３１０〜３１６のオフセットとによって定義される。したがって、論理ブロックアドレス３０２〜３０８には、「１７：０」〜「１７：１５」が付けられている。物理データブロック３２０内の連続した物理セクタ３２２〜３２８は、通常、番号０〜１５が付されたＰＢＡオフセットと、共通のＶＰＢＡ、この具体例では「１３４」とによって、同様に識別される。ＶＰＢＡとＰＢＡオフセットの組合せにより、各物理セクタ３２２〜３２８に対して、固有のＰＢＡ、すなわち物理ブロック３１０〜３１６のアドレスが定義される。上述したように、各論理ブロック３１０〜３１６のデータ量は、物理セクタ３２２〜３２８のデータ量に等しい。
【００１８】
６４メガビットのメモリは、通常、１０２４個の物理データブロック１０２〜１０６に相当する記憶容量を有し、したがって、１０２４個の仮想論理ブロック（ＶＬＢ）に対応するデータを格納することができる。１０２４個の物理データブロック１０２〜１０６は、１０２４個の仮想物理ブロックアドレスによって定義され、１０２４個の仮想論理ブロックは、１０２４個の仮想論理ブロックアドレスによって定義される。１０２４個の可能なアドレスを定義するためには、１０ビットのレジスタが必要となる。したがって、６４メガビットのフラッシュメモリ装置においては、仮想論理ブロックアドレス又は仮想物理ブロックアドレスを定義するために、最低１０ビットを専用に使用する必要がある。したがって、ＬＢＡフィールド、例えば一時的ＬＢＡレジスタ（Temporary LBA Register）３４０（図３）は、概念的に２つのレジスタ、上位レジスタ、すなわちＶＬＢＡフィールド３４２と、下位レジスタ、すなわちＬＢＡオフセットフィールド３４４とに分割することができる。一時的ＬＢＡレジスタ３４０全体の長さは、通常、２バイトであるが、必要に応じて、更に長くしてもよい。上述したように、ＶＬＢＡフィールド３４２のためには少なくとも１０ビットを専用する必要があり、ＬＢＡオフセットフィールド３４４のためには少なくとも４ビットを専用する必要がある。２バイト（１６ビット）のレジスタにおける残る２ビットは、アーキテクチャ上のコンピュータ技術者の判断で使用できる。
【００１９】
ＬＢＡとＰＢＡの関係は、絶えず変化しているので、高速にデータを検索するためには、通常、図４に示すように、空間マネージャ（Space Manager）４００を用いる必要がある。空間マネージャ４００は、通常、揮発性のＲＡＭメモリからなり、データの論理ブロックアドレス（ＬＢＡ）と、データの論理ブロックの最近の更新を格納するセクタの物理ブロックアドレス（ＰＢＡ）との間の関係を保持する。この関係により、ホストデジタルシステムは、後に、その論理ブロックアドレスに基づいて、データを検索することができる。入力データに関連して利用可能なＶＬＢＡ４６０〜４６８の予定されたセットは、一連の関連付けフィールド４５０〜４５８に連続して割り当てられる。各関連付けフィールド４５０〜４５８は、ＰＢＡレジスタ４０８を有し、ＰＢＡレジスタ４０８は、物理データブロックのアドレスを格納するＶＰＢＡレジスタ４１０と、ＰＢＡオフセット４１２とから構成される。ＰＢＡレジスタ４０８は、通常、上述した一時的ＬＢＡレジスタ３４０と同様、２バイトからなる。１０２４個のデータブロックを有する６４メガビットのフラッシュメモリ装置では、１０ビットが必要である。データブロックは、通常、１６個のセクタを有するので、ＰＢＡオフセット４１２には、通常、４ビットが必要である。２バイトのＰＢＡレジスタ４０８の残りの２ビットは、どちらかのフィールドに含まれてもよく、又はアーキテクチャに応じて特別に使用してもよい。図１に示す具体例では、フラッシュメモリ内の物理データブロックの総数はＭであり、各物理データブロックには、番号０〜（Ｍ−１）が付されている。図４では、同様に、番号０〜（Ｍ−１）が付されたＭ個の連続した仮想論理ブロックアドレス（ＶＬＢＡ）４６０〜４６８が示されており、これらの仮想論理ブロックアドレス４６０〜４６８は、仮想物理ブロックアドレスを格納するために用いられる複数の関連付けフィールド４５０〜４５８に対応している。すなわち、空間マネージャ４００内の潜在的なＶＬＢＡ４６０〜４６８の数は、フラッシュメモリセル内の潜在的な物理ブロックアドレスの数に一致している。したがって、空間マネージャ４００は、通常、物理アドレスと論理アドレスの関連付けを、物理データブロックレベルまでしか行わない。これは、主に、空間マネージャ４００が貴重なメモリを消費し、メモリのより細かいレベルに対する関連付けを行うと、より多くのメモリを消費するからである。
【００２０】
上述したように、空間マネージャ４００は、通常、揮発性のＲＡＭアレーとして実現されている。通常、空間マネージャ４００は、ＳＲＡＭセルからなる。なお、ＳＲＡＭセルの代わりに、ＤＲＡＭセルを用いることもできる。ＳＲＡＭ又はＤＲＡＭ媒体に記憶されている情報には高速にアクセスすることができるので、空間マネージャ４００は、論理ブロックアドレスと物理ブロックアドレス間の関係データを高速に求めることができる。
【００２１】
揮発性の各関連付けフィールド４５０〜４５８は、不良ブロックフラグ（Defective Block Flag）４２０と、廃棄可能データフラグ（Obsolete Data Flag）４３０と、使用中ブロックフラグ（Used Block Flag）４４０とを含む複数のフラグを有している。各フラグ４２０、４３０、４４０は、通常、第１及び第２のバイナリ状態を表すことができる単一のビットから構成されている。不良ブロックフラグ４２０が第１の値から第２の値に設定されたとき、不良ブロックフラグ４２０は、物理データブロックに欠陥があることを示す。欠陥があるとマークされた物理データブロックは、以降のデータ格納において使用されないようになる。使用中ブロックフラグ４４０が設定されているとき、使用中ブロックフラグ４４０は、関連するＶＰＢＡレジスタ４１０に格納されているＶＰＢＡによって示される物理ブロックアドレスにデータが現在格納されていることを示す。格納されているデータは、現在のデータ及び廃棄可能なデータのいずれかであり、これは、通常、それぞれ廃棄可能データフラグ４３０の第１及び第２のバイナリ状態によって示される。消去動作は、通常、データを廃棄するときのみ実行される。仮想論理ブロックアドレスによって定義されるデータが更新される場合、新たなデータが、新たな物理データブロック１０２〜１０６に格納され、新たなＶＰＢＡが、適切な関連付けフィールド４５０〜４５８のＶＰＢＡレジスタ４１０に格納される。１つのデータブロックの連続したセクタは、通常、連続データ記憶動作によって、一度に１つのセクタに格納される。仮想論理ブロック（ＶＬＢ）３００が部分的にしかデータを含まず、例えば、１６個の論理ブロックのうちの８つの論理ブロックのみが実際のユーザデータを含んでいる場合、コントローラは、通常、この事実に拘わらず、ＶＬＢの１６個の全ての論理ブロックを、物理データブロック３２０の１６個の連続したセクタのユーザデータ領域２０２（図２）にローディングする動作を行う。その後、この仮想論理ブロック内の１つの論理ブロックを更新するデータが供給された場合、この更新データは、元の物理ブロックアドレス（ＰＢＡ）には格納することができない。ここでは、新たな物理データブロックを選択しなければならない。すなわち、新たな入力データは、「使用中」のフラグが立てられた物理データブロックには格納することができない。廃棄可能データフラグ４３０が第２のバイナリ状態に設定されているとき、対応する物理ブロックに格納されているデータが廃棄されるデータであるということが表されており、この物理データブロックは、消去の対象となる。そして、入力データを、この物理データブロックに再び割り当てることができる。
【００２２】
実際には、論理アドレス及びこれに関連したデータが最初に供給されたとき、標準的なフラッシュメモリ装置は、データを格納するために、空間マネージャ４００を用いて、不良ブロックフラグ４２０が設定されておらず、且つ使用中ブロックフラグ４４０が設定されていないデータブロックを検索する。このデータブロックにデータを格納した後、使用中ブロックフラグ４４０と、フラグフィールド２４０（図２）内の同等のフラグとが第２のバイナリ状態に設定され、対応する物理データブロックにデータが格納されたことが示される。
【００２３】
ホストは、フラッシュメモリ装置に格納するために、論理ブロックアドレス（ＬＢＡ）又は一連のＬＢＡによって定義されるデータを供給する。このデータは、物理ブロックアドレス（ＰＢＡ）又は一連のＰＢＡによって定義された対応するセクタ又は一連のセクタに格納される。ホストがデータの検索を要求するときには、要求は、論理アドレスの形式で行われる。データは、物理アドレスを有する物理的位置から、関連付けレジスタ、例えば空間マネージャ４００内に設けられた関連付けレジスタを介して検索される。空間マネージャ４００の動作を介したデータの格納及び検索は、図５を用いて後述する一連の連結（concatenation）及びマスキング（masking）動作によって行われる。更に、空間マネージャ４００は、標準的なフラッシュメモリ装置における消去動作の実行にも利用される。従来のフラッシュメモリの幾つかは、消去動作を、他の動作を実行している間のバックグラウンドで実行することができる。あるいは、フラッシュメモリ内の他の全ての動作が終了するまで、消去動作の実行を延期することもできる。標準的なフラッシュメモリ装置は、消去動作を開始する前に、空間マネージャ４００を用いて、廃棄可能データフラグ４３０が設定されており、不良ブロックフラグ４２０が設定されていないデータブロックを検索する。そして、これらのデータブロックは、消去の対象となる。
【００２４】
論理メモリと物理メモリ間の関係は、維持しなくてはならないが、ＲＡＭからなる空間マネージャ４００は、貴重なメモリを消費する。ＲＡＭからなる空間マネージャ４００を設けることにより生じるメモリの消費を最小にする一手法としては、大きなグループのデータに対する関係、例えば仮想論理ブロックアドレスを、物理メモリの大きなブロックを定義する仮想物理ブロックアドレスに関連付けることを制限し、それによって、空間マネージャ４００内の関連付けレジスタの数を少なくするという手法がある。図３に示すように、１６個の連続した論理ブロックアドレス（ＬＢＡ）３０２〜３０８によって定義されるユーザデータの１６個の連続した論理ブロック３１０〜３１６のデータを、１６個の連続した物理ブロック３１０〜３１６のアドレス（ＰＢＡ）によって定義される１６個の物理セクタ３２２〜３２８に格納する場合、この格納配置によって、下位アドレス間には、ディフォルトの関係が存在することになる。空間マネージャ４００は、このような配置を用いることにより、仮想論理ブロックアドレス（ＶＬＢＡ）を仮想物理ブロックアドレス（ＶＰＢＡ）に関連付けるだけでよく、これによって、１データブロックが１６個のセクタからなる具体例では、空間マネージャ４００のサイズを１／１６に縮小することができる。
【００２５】
図５は、データ格納処理を説明するフローチャートである。ここでは、図３に示すデータフィールド及びレジスタを用いて格納処理を説明する。最初のステップ５０２において、不揮発性フラッシュメモリユニットに格納するのために、ホストから、仮想論理ブロックアドレスが１７の仮想論理ブロックのユーザデータ３００（図３）が供給される。ステップ５０４において、コントローラは、ユーザデータ３００の新たなファイルの最初のＬＢＡを、一時的ＬＢＡレジスタ３４０に移動する。この一時的ＬＢＡレジスタ３４０は、６４メガビットのフラッシュメモリ装置においては、通常、２バイトレジスタである。ステップ５０６において、コントローラは、データ格納のために、未使用で、欠陥がないデータブロックを選択し、このデータブロックのＶＰＢＡを、一時的ＰＢＡレジスタ３５１のＶＰＢＡフィールド３５２に書き込む。ステップ５０８において、コントローラは、一時的ＬＢＡレジスタ３４０の上位ビットであるＶＬＢＡフィールド３４２をマスクし、「セクタオフセット」として指定された下位ビットであるＬＢＡオフセットフィールド３４４を、ＰＢＡセクタオフセット３５４に連結する。ステップ５１０において、コントローラは、一時的ＬＢＡレジスタ３４０に格納されているアドレスによって定義される論理ブロック３１０〜３１６のデータを、一時的ＰＢＡレジスタ３５１に格納されているアドレスによって定義される物理セクタ３２２〜３２８に格納する。ステップ５１２において、コントローラは、ＶＰＢＡフィールド３５２の値を、ＶＬＢＡフィールド３４２のＶＬＢＡ４６０〜４６８に対応する関連付けフィールド（以下、関連付けレジスタともいう。）４５０〜４５８に格納する。
【００２６】
図６は、ホストからの要求に応じてフラッシュメモリ装置からデータを検索する同様の処理を示している。ステップ６０２において、ホストは、ＬＢＡによって定義されるデータを要求する。ステップ６０４において、要求におけるＬＢＡは、一時的ＬＢＡレジスタ３４０に書き込まれる。ステップ６０６において、ＬＢＡオフセットフィールド３４４内の下位ビットがマスクされ、ＶＬＢＡフィールド３４２を定義する上位ビットが、一時的ＶＬＢＡレジスタ３６０に移動される。ステップ６０８において、コントローラは、空間マネージャ４００を用いて、一時的ＶＬＢＡレジスタ３６０内のアドレスに対応した関連付けレジスタ４５０〜４５８を検出する。ステップ６１０において、コントローラは、選択した関連付けレジスタのＶＰＢＡレジスタ４１０を、一時的ＰＢＡレジスタ３５１の上位レジスタであるＶＰＢＡフィールド３５２に移動する。ステップ６１２において、コントローラは、ＬＢＡオフセットフィールド３４４をＰＢＡセクタオフセット３５４に連結する。ステップ６１４において、コントローラは、一時的ＰＢＡレジスタ３５１内のアドレスによって定義されるセクタに格納されているデータを検索する。ステップ６１６において、コントローラは、検索したデータをホストに送るとともに、一時的ＬＢＡレジスタ３４０に格納されている論理アドレスによって、このデータを定義する。
【００２７】
図５及び図６に示す具体例は、データ格納及び検索のための従来の論理アドレスと物理アドレスの関連付けを例示的に説明するためのものでる。なお、このような特定の格納の機構は、多くの同等の手法によって実現でき、図５及び図６に示す処理は、従来のデータ格納及び検索処理の特定の具体例を例示的に示すものであり、本発明に基づくデータ格納及び検索処理を限定するものではない。すなわち、ここでは、単にＬＢＡとＰＢＡとの間の対応関係を維持するデータ格納処理の一例を示したにすぎない。上述の具体例では、ＬＢＡオフセットフィールド３４４は、データのＶＬＢを物理セクタに格納するときに、ＰＢＡセクタオフセット３５４として使用される。
【００２８】
空間マネージャ４００は、揮発性メモリを用いているために、電源が切断されると、標準的な空間マネージャにおいて使用されている揮発性のＲＡＭの記憶されているデータは、消えてしまう。しかしながら、空間マネージャ４００内のデータは、不揮発性メモリ、通常はフラッシュメモリセルの様々なセクタ１１２〜１３６の拡張フィールド２０４にバックアップされる。不揮発性記憶媒体に記憶されたデータは、電源が切断されても消えない。
【００２９】
電源が切断されることにより、通常、ＲＡＭメモリの内容は失われるので、オーバヘッドデータは、通常、電源投入時又はリセットコマンドと同時に、選択されたセクタの拡張フィールド２０４から空間マネージャ４００にロードされる。拡張フィールド２０４のＬＢＡフィールド２０８に格納されている仮想論理ブロックアドレス（ＶＬＢＡ）３６０は、拡張フィールド２０４が存在する物理セクタ３２２の仮想物理ブロックアドレス（ＶＰＢＡ）３６４と、ＬＢＡフィールド２０８に格納されている仮想論理ブロックアドレス（ＶＬＢＡ）３６０との間の不揮発性の関係を画定する。また、フラグレジスタ内のフラグ４２０、４３０、４４０は、通常、スタートアップ中又はリセットコマンドと同時に、不揮発性メモリの拡張フィールド２０４（図２）から空間マネージャ４００にロードされる。
【００３０】
標準的なフラッシュメモリ装置の動作を制御するために、標準的なフラッシュメモリ装置は、フラッシュメモリデバイスに接続されたコントローラ（図示せず）を備える。空間マネージャ４００は、標準的なフラッシュメモリ装置によって実行される動作の不可欠な部分であり、空間マネージャ４００は、通常、コントローラ内に設計されており、それによって、システム性能を高めている。しかしながら、アドレス可能な大きな記憶容量を実現するためには、大きなシリコン領域が必要となるため、コントローラと実際のフラッシュメモリデバイスとの両方を同じ集積回路上に形成することは、通常、コスト的に困難である。この結果、コントローラとフラッシュメモリデバイスは、通常、別々の集積回路上に形成されている。コントローラとフラッシュメモリとを別々の集積回路上に形成することにより、それぞれの集積回路において、これらの部品を形成するのに理想的に適した製造プロセスを採用することができ、特定のパラメータ及び動作条件を簡単に満足させることができる。
【００３１】
空間マネージャ４００は、標準的なフラッシュメモリ装置の性能を高めるが、このように性能を高めるためには、集積回路上に、コントローラを形成する大きなシリコン領域を確保しなくてはならず、コストが高くなる。例えば、それぞれが１６個のセクタを有する１０２４個のデータブロックを備える６４メガビットのフラッシュメモリ装置は、１６３８４個のセクタを有する。上述したように、１つの仮想論理ブロック（ＶＬＢ）のユーザデータ３００を１つの物理データブロック３２０に格納する場合、空間マネージャ４００内には、１２０４個の関連付けフィールド４５０〜４５８だけが必要である。一方、１つのＶＬＢのユーザデータ３００が複数のデータブロックに断片化された場合、全ての論理アドレスと物理アドレス間の関係を保持するためには、空間マネージャ４００は、１６３８４個の関連付けフィールド４５０〜４５８を必要とする。
【００３２】
上述したように、オーバヘッドデータ、例えばエラー訂正データ（ＥＣＣフィールド２０６）及びフラグ（フラグフィールド２１０）をユーザデータ領域２０２と同じセクタ２００に格納することにより、幾つかの弊害が生じる。例えば、電源投入時には、空間マネージャを更新するために、長くて広範囲に亘る評価、場合によっては、フラッシュメモリの全てのセクタのアクセスを実行しなくてはならない。この処理は、時間がかかり、複雑である。オーバヘッドデータを少数のデータブロックに分割することにより、電源投入時に、空間マネージャをローディングする速度及び効率を大幅に向上させることができる。ユーザデータとオーバヘッドデータとを同じセクタに混在させることによる第２の弊害として、ゲート劣化がある。上述したように、書込及び消去サイクルを繰り返すことにより、フラッシュメモリ装置は、最終的には「消耗（wear-out）」する。オーバヘッドデータとユーザデータを同じセクタ内に格納するとき、オーバヘッドデータとユーザデータは、同じ回数の書込／消去サイクルを経ることとなる。したがって、従来の技術では、所定のセクタ２００内のエラー訂正データのＥＣＣフィールド２０６は、このセクタ２００内のユーザデータ領域２０２と同じ速度で劣化する可能性がある。劣化したエラー訂正コードフィールド２０６に基づいて、ユーザデータのエラーを検出して訂正しても、データの正確性は保証されない。最終的には、オーバヘッドデータとユーザデータを同じセクタに格納するとき、オーバヘッドデータとユーザデータを、独立して書き込み又は消去することができなくなってしまう。したがって、フラッシュメモリセル内において、ユーザデータとオーバヘッドデータを、独立してアドレス可能であり、書込可能であり、消去可能なデータブロックに分離して格納する技術の実現が望まれている。
【００３３】
更に、ある論理ブロックアドレスが他の論理ブロックアドレスよりも頻繁に繰り返される場合に、メモリを効率的に利用できるように、ユーザデータをオーバヘッドデータから分離する技術の実現が望まれている。更に、２つの論理ブロックアドレスが同じ率で使用される場合に、メモリを効率的に利用できるように、ユーザデータをオーバヘッドデータから分離する技術の実現が望まれている。更に、様々な論理ブロックアドレスの使用頻度が可変又は未知の場合に、メモリを効率的に利用できるように、ユーザデータをオーバヘッドデータから分離する技術の実現が望まれている。
【００３４】
【課題を解決するための手段】
本発明は、フラッシュメモリデバイスにおいて、ユーザデータと、オーバヘッドデータ、例えばエラー訂正データとを同じセクタに格納することによって生じる非効率性及び障害を改善するように設計されたフラッシュメモリデバイスを提供する。更に、本発明は、オーバヘッドデータとユーザデータの間の相互関係を維持しながら、オーバヘッドデータをユーザデータから分離させる不揮発性記憶媒体を実現する方法及びデバイスを提供する。更に、本発明は、オーバヘッド専用機能によって消費されるメモリ容量を最小化する方法及びデバイスを提供する。更に、本発明は、ある論理ブロックアドレスが他の論理ブロックアドレスよりも頻繁に繰り返される場合、メモリを効率的に利用できるように、ユーザデータをオーバヘッドデータから分離する方法及びデバイスを提供する。更に、本発明は、論理ブロックアドレスが同じ率で使用される場合に、メモリを効率的に利用できるようにユーザデータをオーバヘッドデータから分離する方法及びデバイスを提供する。更に、本発明は、各論理ブロックアドレスの使用頻度が可変又は未知の場合に、メモリを効率的に利用できるようにユーザデータをオーバヘッドデータから分離する方法及びデバイスを提供する。
【００３５】
本発明に係るデータ格納方法は、フラッシュメモリ装置内にデジタルデータを格納するデータ格納方法において、フラッシュメモリ装置内の不揮発性記憶媒体を、複数のデータ専用ブロックと、第１のオーバヘッド専用ブロック及び第２のオーバヘッド専用ブロックを含む複数のオーバヘッド専用ブロックとを含み、独立してアドレス可能であり、独立して書込可能であり、独立して消去可能な複数のメモリブロックに割り当てる。各データ専用ブロックは、複数のオーバヘッドページに割り当てられる。各オーバヘッド専用ブロックのオーバヘッドページの定義には、同じページアドレスのセットが使用される。各オーバヘッドページは、複数のオーバヘッドセグメントに割り当てられる。各オーバヘッドページには、同じセグメントアドレスのセットが使用される。各オーバヘッドセグメントは、物理アドレスレジスタ及びフラグフィールドを含む複数のレジスタを備える。オーバヘッド専用ブロック内では、連続したオーバヘッドページのアドレスは、第１のオーバヘッドページのアドレスに関連付けられた第１の仮想論理ブロックアドレスを含む連続した複数の仮想論理ブロックアドレスのそれぞれに関連付けられる。
【００３６】
ホストからは、第１の仮想論理ブロックアドレスによって定義されるユーザデータ供給され、このユーザデータは、第１の仮想物理ブロックアドレス（ＶＰＢＡ）によって定義される第１のデータ専用ブロックに格納される。第１のＶＰＢＡは、第１のオーバヘッドページのアドレスによって定義される第１のオーバヘッドページ内の第１の利用可能なオーバヘッドセグメントのアドレスレジスタに格納される。利用可能なオーバヘッドセグメントは、未使用で、欠陥がなく、廃棄可能でないオーバヘッドセグメントである。第１の利用可能なオーバヘッドセグメントとは、最小のセグメントアドレスを有し、第１のページを備える利用可能なセグメントである。オーバヘッドセグメントは、好ましくは、エラー訂正コードを含む。整理統合処理においては、第１のオーバヘッド専用ブロック内の全ての現在のオーバヘッドセグメントが第２のオーバヘッド専用ブロックにコピーされる。第２のデータ専用ブロックにおいてオーバヘッドセグメントが格納されるページ番号は、第１のデータ専用ブロックにおいてデータが格納されていたページ番号と同じである。第２のデータ専用ブロックに移動される現在のオーバヘッドセグメントのデータは、各ページの最小のセグメントアドレスを有するオーバヘッドセグメントに格納される。
【００３７】
また、本発明に係るデータ格納方法は、フラッシュメモリ装置内にデジタルデータを格納するデータ格納方法において、フラッシュメモリ装置内の不揮発性記憶媒体を、複数のデータ専用ブロックと、第１のオーバヘッド専用ブロック及び第２のオーバヘッド専用ブロックを含み複数のオーバヘッド専用ブロックとを含み、独立してアドレス可能であり、独立して書込可能であり、独立して消去可能な複数のメモリブロックに割り当てる。各オーバヘッド専用ブロックは、連続してアドレスが付けられた複数のオーバヘッドセグメントに割り当てられる。各オーバヘッド専用ブロックにおいては、同一の連続したオーバヘッドセグメントアドレスが使用される。各セグメントは、物理アドレスレジスタとフラグフィールドを有する。各データ専用ブロックは、第１のオーバヘッド専用ブロックに関連付けられた第１のＶＬＢＡのグループを含む仮想論理ブロックアドレスのグループに関連付けられている。第１のＶＬＢＡのグループ内の第１のＶＬＢＡによって定義されるユーザデータが供給されると、このユーザデータは、第１の仮想物理ブロックアドレス（ＶＰＢＡ）によって定義される第１のデータ専用ブロックに格納される。第１のＶＰＢＡは、オーバヘッド専用ブロック内の第１の利用可能なオーバヘッドセグメントのアドレスレジスタに格納される。オーバヘッド専用ブロックがフル状態になると、現在のオーバヘッドセグメントが特定され、このオーバヘッドセグメント内のデータが新たなオーバヘッド専用ブロックにコピーされる。オーバヘッドセグメントのデータは、新たなオーバヘッド専用ブロックの最小のセグメントアドレスを有するオーバヘッドセグメントから順に格納される。古くなったオーバヘッド専用ブロックは、消去の対象となる。
【００３８】
また、本発明に係るデータ格納方法は、フラッシュメモリ装置内にデジタルデータを格納するデータ格納方法において、フラッシュメモリ装置内の不揮発性記憶媒体を、複数のデータ専用ブロックと、第１のオーバヘッド専用ブロック及び第２のオーバヘッド専用ブロックを含み複数のオーバヘッド専用ブロックとを含み、独立してアドレス可能であり、独立して書込可能であり、独立して消去可能な複数のメモリブロックに割り当てる。各オーバヘッド専用ブロックは、固定オーバヘッドフィールド及びランダムオーバヘッドフィールドに割り当てられる。各オーバヘッド専用ブロックの固定オーバヘッドフィールドは、複数のオーバヘッド専用ブロックのそれぞれがオーバヘッドセグメントアドレスの順序と同様に連続してアドレス可能な複数のオーバヘッドセグメントを有する。各オーバヘッド専用ブロックのランダムオーバヘッドフィールドは物理アドレスレジスタを含む複数のレジスタを有し、連続してアドレス可能な複数のオーバヘッドセグメントを有する。各オーバヘッドセグメントは、物理アドレスレジスタを含む複数のレジスタを有する。仮想論理ブロックアドレスの第１のグループからの連続した仮想論理ブロックアドレスは、第１の仮想論理ブロックアドレスに関連付けられた第１の固定オーバヘッドセグメントを含み、第１のオーバヘッド専用ブロックの固定オーバヘッドフィールド内の連続してアドレスが付けられた複数のオーバヘッドセグメントに関連付けられている。
【００３９】
第１の仮想論理ブロックアドレスによって定義されるデータが供給されると、このデータは、第１の仮想物理ブロックアドレスによって定義される第１のデータ専用ブロックに格納される。ユーザデータが実際に格納されている第１のＶＰＢＡを含む第１のＶＬＢＡをサポートするオーバヘッドデータは、第１のオーバヘッド専用ブロックのオーバヘッドセグメントに格納される。固定オーバヘッドセグメントが利用可能な場合、第１のＶＰＢＡを含むオーバヘッドデータは、この固定オーバヘッドセグメントに格納される。第１の固定オーバヘッドセグメントが利用可能ではない場合、第１のＶＬＢＡをサポートするオーバヘッドデータは、第１のオーバヘッド専用ブロックのランダムフィールド内の第１の利用可能なオーバヘッドセグメントに格納される。オーバヘッド専用ブロックがフル状態になった場合、新たなオーバヘッド専用ブロックが特定され、連続したオーバヘッドセグメントアドレスは、第１のオーバヘッド専用ブロックと同一の連続した仮想論理ブロックアドレスに関連付けられる。そして、全ての現在のオーバヘッドセグメントが特定され、オーバヘッドデータを格納するＶＬＢＡに関連付けられる。現在のオーバヘッドセグメントは、固定オーバヘッドフィールド内の、各特定の現在のオーバヘッドセグメントに関連するＶＬＢＡに関連付けられている所定のオーバヘッドセグメントにコピーされる。古くなったオーバヘッド専用ブロックは、消去の対象となる。
【００４０】
また、本発明に係るデータ格納方法は、フラッシュメモリ装置内にデジタルデータを格納するデータ格納方法において、フラッシュメモリ装置内の不揮発性記憶媒体を、複数のデータ専用ブロックと、第１のオーバヘッド専用ブロック及び第２のオーバヘッド専用ブロックを含む複数のオーバヘッド専用ブロックとを含み、独立してアドレス可能であり、独立して書込可能であり、独立して消去可能な複数のメモリブロックに割り当てる。複数のオーバヘッド専用ブロックのそれぞれは、第１のオーバヘッド専用ブロック内の第１のスーパオーバヘッドフィールドを含む複数のスーパオーバヘッドフィールドに割り当てられる。複数のスーパオーバヘッドフィールドのそれぞれは、物理アドレスレジスタをそれぞれ含む複数のレジスタを有し、連続してアドレス可能なオーバヘッドセグメントの同一のセットに割り当てられる。スーパ仮想論理ブロック内の連続した仮想論理ブロックアドレスのグループは、第１のオーバヘッドセグメントに関連付けられた第１の仮想論理ブロックアドレスを含む、第１のスーパオーバヘッドフィールド内の連続したオーバヘッドセグメントに関連付けられる。第１の仮想論理ブロックアドレスによって定義されるユーザデータの第１のセットは、第１の仮想物理ブロックアドレスによって定義される第１のデータ専用ブロックに格納される。第１の仮想物理ブロックアドレスを含むオーバヘッドデータは、第１のオーバヘッドセグメントに格納される。第１のスーパオーバヘッドフィールドが第１のオーバヘッド専用ブロックにおける最後のスーパオーバヘッドフィールドではない場合、コントローラは、この第１のスーパオーバヘッドフィールド内の次のスーパオーバヘッドフィールドにインクリメントする。一方、第１のスーパオーバヘッドフィールドが第１のオーバヘッド専用ブロックにおける最後のスーパオーバヘッドフィールドである場合、全ての現在のオーバヘッドセグメントが特定され、これらのオーバヘッドセグメント内のデータは、新たなオーバヘッド専用ブロックの最小のセグメントアドレスを有するスーパオーバヘッドフィールド内の同じセグメントアドレスに移動される。
【００４１】
また、本発明に係るフラッシュメモリデバイスは、複数の物理ブロックアドレスによって区別して定義され、独立してアドレス可能であり、独立して書込可能であり、独立して消去可能な複数の不揮発性物理メモリブロックを備え、ユーザデータを格納するフラッシュメモリデバイスにおいて、ユーザデータを格納する複数のデータ専用ブロックと、第１のデータ専用ブロック及び第２のデータ専用ブロックを含むオーバヘッドデータを格納する複数のオーバヘッド専用ブロックとを備える。各オーバヘッド専用ブロックは、同じ順序のオーバヘッドページアドレスに従い、独立してアドレス可能な複数のオーバヘッドページを備える。各オーバヘッドページは、オーバヘッドデータを格納するのに用いられる複数の独立したオーバヘッドセグメントを含み、独立してアドレス可能であり、独立して書込可能な複数のオーバヘッドセグメントを有する。複数の独立したオーバヘッドセグメントは、それぞれ１つの仮想論理ブロックのユーザデータのをサポートし、オーバヘッドデータを格納するのに用いられ、各オーバヘッドセグメントは、対応するユーザデータを検出する物理アドレスを格納する物理アドレスレジスタと、フラグフィールドとを備える。第１のＶＬＢＡを含む仮想論理ブロックアドレスの第１のグループは、第１の仮想論理ブロックアドレスをサポートするために生成されたオーバヘッドデータが第１のオーバヘッド専用ブロック内のオーバヘッドセグメントに格納されるように、第１のオーバヘッド専用ブロックに割り当てられる。
【００４２】
本発明の一実施の形態においては、仮想論理ブロックアドレスの第１のグループ内の連続した仮想論理ブロックアドレスは、第１のオーバヘッド専用ブロック内の第１のオーバヘッドページに関連付けられた第１の仮想論理ブロックアドレスを含む、第１のオーバヘッド専用ブロック内の連続してアドレスが付けられたオーバヘッドページのアドレスにそれぞれ関連付けられ、第１の仮想論理ブロックアドレスをサポートするオーバヘッドデータが第１のオーバヘッドページのオーバヘッドセグメントに格納される。
【００４３】
本発明の一実施の形態においては、複数のオーバヘッド専用ブロックのそれぞれは、連続してアドレスが付けられた複数のオーバヘッドセグメントを有する固定オーバヘッドフィールドと、連続してアドレスが付けられた複数のオーバヘッドページを有するランダムオーバヘッドフィールドとを備え、第１のオーバヘッド専用ブロックの固定オーバヘッドフィールド内の連続してアドレスが付けられたオーバヘッドページを構成する連続してアドレスが付けられたオーバヘッドセグメントは、連続してアドレスが付けられた仮想論理ブロックアドレスにそれぞれ関連付けられている。
【００４４】
本発明の一実施の形態においては、各オーバヘッド専用ブロックは、第１のスーパオーバヘッドフィールドを含む、全てのパージ番号からなる複数のスーパオーバヘッドフィールドを更に備え、第１のオーバヘッド専用ブロック内の各スーパオーバヘッドフィールドは、同数のページを有し、第１のスーパオーバヘッドフィールドの連続したオーバヘッドセグメントは、第１のスーパブロックを構成する連続してアドレスが付けられた仮想論理ブロックアドレスにそれぞれ割り当てられる。
【００４５】
本発明のこれらの及びこの他の利点は、当業者にとって明らかである。
【００４６】
【発明の実施の形態】
以下に説明する実施の形態は、本発明の範囲を限定するためのものではなく、本発明の可能な変化例又は変形例の全てを開示するものでもない。当業者は、以下に示す実施の形態の変形例を容易に想到することができる。特に、以下では、データ記憶アーキテクチャ及びフラッシュメモリユニット内のフィールド及びレジスタに関する実施の形態を示す。ここで使用する用語、例えばオーバヘッド専用ブロック（Dedicated Overhead Block）、オーバヘッドページ（Overhead Page）、オーバヘッドセグメント（Overhead Segment）、スーパオーバヘッドフィールド（Super Overhead Field）及び他のアーキテクチャ上の構成要素は、本発明に基づくアーキテクチャ、データ記憶フィールド及びレジスタを表するための任意の用語である。これらと同等の構造又はアーキテクチャは、他の様々な技術用語を用いても表すことができる。同様に、様々なデータ記憶フィールドの相対的記憶容量は、例示的なものであり、ここで説明する特定の実施の形態によって本発明の範囲を制限するものではない。また、より大きなメモリフィールドを有する構成要素のメモリフィールド又はレジスタの数は、構成要素の構造の特定の割合によって本発明を制限するものではない。ここで示す特定の実施の形態における数値及び比は、例示的な目的のみで示していることは、当業者にとって明らかである。更に、バイナリアドレシング方式において、複数のセグメントを有する複数のページからなるブロックは、単に、複数の連続したセグメントから構成されるブロックと同等であるとみなすこともできる。例えば、８ビットフィールドは、それぞれが１６個のセグメントを有する４つのページからなる４つのブロックに分割することもでき、あるいは、単に１６個のセグメントから構成される４つのブロックを表しているとみなすこともできる。この同じデータフィールドを他の様々な構造表現によって表すことができることは、当業者にとって明らかである。ここに示す特定のアーキテクチャの説明は、最も広く解釈され、同等に振る舞う様々な同等の機能の全てを包含すると解釈されるべきである。したがって、添付の図面及び詳細な説明は、本発明の特定の実施の形態を例示的に開示し、当業者が本発明の原理を理解し、本発明を実施できるようにしたものである。
【００４７】
フラッシュメモリ装置（flash memory system）は、適切な動作環境において、ホストデジタルシステム、例えばコンピュータシステム、デジタルカメラ等に接続される。フラッシュメモリ装置は、ホストデジタルシステムに大容量の不揮発性記憶媒体を提供する。フラッシュメモリ装置に格納され、又はフラッシュメモリ装置から読み出されるデータは、ホストデジタルシステムによって、複数の論理ブロックアドレスのうちの１つの論理ブロックアドレスに関連付けられる。フラッシュメモリ装置は、論理ブロックアドレスを、複数の物理ブロックアドレスのうちの１つの物理ブロックアドレスに変換する。この変換の必要性については、「従来の技術」の欄で既に説明している。
【００４８】
フラッシュメモリ装置は、好ましくは、データを格納し、論理アドレスと物理アドレスを関連付けるフラッシュメモリデバイス（flash memory device）と、フラッシュメモリ装置によって実行される動作を制御するコントローラとを備える。コントローラは、通常、フラッシュメモリ装置自体に組み込まれている。各フラッシュメモリデバイスは、フラッシュメモリアレーを備え、フラッシュメモリアレーは、複数の不揮発性フラッシュメモリセルを含んでいる。
【００４９】
図７は、本発明に基づくフラッシュメモリアーキテクチャを示す図であり、このフラッシュメモリ装置では、オーバヘッドデータとユーザデータとを分離して、別々にアドレスされ、独立して書込可能であり、独立して消去可能な物理メモリブロックに格納する。フラッシュメモリの不揮発性メモリ７００は、オーバヘッド専用ブロック（Dedicated Overhead Block）７０２、７０４、７０６と、データ専用ブロック７０８、７１０、７１２とを備える。各ブロックのサブマッピング（sub-mapping）を行う場合、オーバヘッド専用ブロック７０２、７０４、７０６は、データ専用ブロック７０８、７１０、７１２と同じサブマッピング方式に基づいて割り当てる必要はない。図７に示すようなアーキテクチャにより、ユーザデータとオーバヘッドデータを独立して、書き込み、アクセスし、消去することを容易にする。図７に示す本発明に基づくアーキテクチャと、図１に示す従来のアーキテクチャとを比較することにより、類似点及び相異点を直ちに見つけ出すことができる。この比較を明確にするために、ここでも各データブロックに０〜（Ｍ−１）の番号を付している。なお、各データブロックは、セクタではなく、ページから構成されている。この違いは、単に名称の相違ではなく、このアーキテクチャの本質に関わる特徴である。上述したように、従来のセクタは、ハードディスクのセクタを模倣したものである。すなわち、図１に示す各セクタ１１２〜１３６は、図２に詳細を示すように、５１２バイトのユーザデータ領域２０２と、１６バイトのオーバヘッドデータを含む拡張フィールド２０４とを有する。一方、本発明に基づくメモリアーキテクチャでは、オーバヘッドデータは、ユーザデータと同じ「セクタ」には格納されない。したがって、本発明では、データの論理ブロックを格納することができるメモリ領域を、セクタではなく、ページと呼ぶ。ユーザデータとオーバヘッドデータとが結合されて格納されるセクタとは異なり、ページは、ユーザデータの格納又はオーバヘッドデータの格納専用に用いられ、これらの２つの異なる種類のデータを同時には格納しない。従来と同様に、ブロック７０２〜７１２は、通常、仮想論理ブロックのデータを格納するのに十分なメモリ容量を有し、各ページ７２２〜７７６は、好ましくは、１つの論理ブロックのデータを格納するのに十分なメモリ容量を有する。
【００５０】
また、従来の技術との第２の相異点として、この実施の形態では、オーバヘッド専用ブロック７０２、７０４、７０６と、データ専用ブロック７０８、７１０、７１２とのデータブロックの異なる２つの形式がある。
【００５１】
図８Ａは、本発明に基づくサブマッピング方式の一例を採用したオーバヘッド専用ブロック８００を示している。この説明を通して、例示的な目的のために、１６個のページからなるオーバヘッド専用ブロック８００を用いる。好ましい実施の形態では、２の累乗、例えば１６又は３２個のページのブロック長を用いるが、ブロックのページ数は、いかなる値であってもよい。図８Ａでは、一連の１６個のオーバヘッドページ（Overhead Page）８０２〜８０６を示し、各ページ８０２〜８０６は、複数のオーバヘッドセグメント（Overhead Segment）を含み、各オーバヘッドセグメントは、１つのデータ専用ブロック７０８、７１０、７１２に格納されているユーザデータのデータ量をサポートしている。
【００５２】
図８Ａは、１オーバヘッドページ当たり８つのオーバヘッドセグメントからなることを示しているが、１オーバヘッドページ当たりのオーバヘッドセグメントの数は、図８Ｂを用いて説明するように、各オーバヘッドセグメントにどの程度のデータを格納するかに依存する。オーバヘッドセグメント８１０〜８２２（８２８）は、図８Ｂに示すように、好ましくは、エラー訂正フィールド８３０と、論理ブロックアドレス（ＰＢＡ）レジスタ８３２と、フラグフィールド８３４とを含んでいる。フラグフィールド８３４は、好ましくは、使用中フラグ（used flag）８３６と、欠陥フラグ（defective flag）８３８と、廃棄可能フラグ（obsolete flag）８４０とを含む。これらのフラグ８３６、８３８、８４０は、それぞれ第２の値に設定されたとき、オーバヘッドセグメントが、使用中であること、欠陥があること、廃棄可能であることをそれぞれ示す。「利用可能な（available）」オーバヘッドセグメントは、未使用で、欠陥がなく、廃棄可能でないオーバヘッドセグメントとして定義される。「現在の（current）」オーバヘッドセグメントは、使用中で、欠陥がなく、廃棄可能でないオーバヘッドセグメントとして定義される。一方、従来の技術では、拡張フィールド２０４（図２）のサイズは、固定であったが、本発明では、オーバヘッドセグメント８２８のサイズは、柔軟に変更することができる。従来の技術においては、１６バイトの拡張フィールド２０４は、エラー訂正コードフィールド２０６に少なくとも４バイトを用い、予備フィールド２１２に最低の１バイトを残しても、余裕があった。拡張フィールド２０４内の全てのフィールドが使用されていても、全てのフィールドが使用されていなくても、拡張フィールド２０４によって消費されるメモリ容量は同じである。したがって、従来の技術では、ＥＣＣフィールド２０６をなくす動機付けはなかった。なお、本発明の場合のように、オーバヘッド機能を別のメモリ領域に移動したとき、オーバヘッド機能のために使用するメモリ容量は、フラッシュメモリの消費量に影響を及ぼす。１つのオーバヘッドセグメント８２８に格納するデータ量を減らすことにより、１オーバヘッドページ当たりのオーバヘッドセグメントの数を増やすことができ、オーバヘッド専用ブロック８００によって消費されるフラッシュメモリを減少させることができる。
【００５３】
図８Ｂに示すレジスタ又はフィールドのどれかをなくすことによって、メモリを節約することができるが、特定のレジスタを削除すると、本発明のフラッシュメモリ装置は、殆ど動作しない。例えば、オーバヘッドセグメント８２８と、このオーバヘッドセグメント８２８がサポートするユーザデータのブロックとを相互参照するためのＰＢＡレジスタ８３２をなくすと、フラッシュメモリ装置は基本的に動作しない。したがって、本発明に基づく好ましい手段は、エラー訂正フィールド８３０に用いられるデータ量を判定することによって、オーバヘッドセグメント８２８のサイズを制御する。エラー訂正プログラムをより複雑で、より効果的なものとするには、ユーザデータのブロックをサポートするために必要とされるデータは、通常、多くなり、この結果、オーバヘッドセグメント８２８は、大きくなり、よりメモリ集約型となる。一方、エラー訂正プログラムをより単純で、強力でないものとするには、ユーザデータのブロックをサポートするために必要とされるエラー訂正データ（以下、ＥＣＣデータともいう。）は、少ないものとなる。エラー訂正データを全く設けなければ、オーバヘッドセグメント８２８は、２バイトのＰＢＡレジスタ８３２と、１バイトのフラグフィールド（以下、フラグレジスタともいう。）８３４との合計３バイトを、最小限含む必要がある。なお、図８Ｂでは、論理ブロックアドレスに対する相互参照は示していない。論理アドレスに対する相互参照をオーバヘッドセグメント８２８内に格納することは、必ずしも必要ではないが、従来の技術に関連して説明し、更に本発明に関連して後に詳細に説明するように、電源投入時に、論理アドレスと物理アドレスの関係を、空間マネージャ９００に供給できるように、この関係データを、どこかに不揮発的に記憶しておく必要がある。なお、本発明の好ましい実施の形態においては、データ専用ブロックに関連したＶＬＢＡの範囲を、データ専用ブロック内の現在のページの最後に設けられた拡張フィールドに格納する。
【００５４】
エラー訂正コード（ＥＣＣ）デザイン１（Error Correction Code (ECC) Design-one）では、エラー訂正フィールド８３０は、オーバヘッドセグメント８２８には組み込まれない。デジタルアプリケーションにおいては、所定のアプリケーションで消費されるアドレス可能なメモリは、２の累乗によって割り切れることが好ましい。したがって、３バイトのオーバヘッドセグメント（ＰＢＡレジスタ８３２及びフラグレジスタ８３４）は、好ましくは、４バイトのオーバヘッドセグメントに格納される。１オーバヘッドセグメント当たり４バイトを使用することにより、ＥＣＣデザイン１では、１オーバヘッドページ当たり１２８個のオーバヘッドセグメントを設けることができる。
【００５５】
ＥＣＣデザイン２（ECC Design-two）では、パリティビットエラー訂正処理において、ユーザデータの各ページ７５２〜７７６毎に、エラー訂正データの１つのパリティビットを用いる。したがって、ユーザデータの１６個のページからなるデータ専用ブロック、例えばデータ専用ブロック７０８は、１６ビット、すなわち２バイトのエラー訂正データを必要とする。なお、２バイトのエラー訂正フィールド８３０と、２バイトのＰＢＡレジスタ８３２と、１バイトのフラグフィールド８３４とを加算することにより、各オーバヘッド専用ブロック８００をサポートする１オーバヘッドセグメント当たりのオーバヘッドデータは、５バイトとなる。また、所定のアプリケーションで消費されるアドレス可能なメモリ領域は、２の累乗で割り切れることが好ましいので、ＥＣＣデザイン２用に使用される５バイトのデータは、好ましくは、８バイトのオーバヘッドセグメントに格納される。８バイトのオーバヘッドセグメントを用いることにより、合計６４個のオーバヘッドセグメントを、ＥＣＣデザイン２に基づく１つのオーバヘッドページに格納することができる。
【００５６】
ＥＣＣデザイン３（Design-three）では、エラー訂正コードは、ユーザデータの各ページをサポートする３バイトのＥＣＣデータを必要とし、１６個のページのユーザデータをサポートするためには、４８バイトのＥＣＣデータが必要となる。４８バイトのエラー訂正フィールド（以下、ＥＣＣフィールドともいう。）８３０と、２バイトのＰＢＡレジスタ８３２と、１バイトのフラグフィールド８３４とを加算することにより、ユーザデータのデータ専用ブロック７０８、７１０、７１２の１つをサポートするオーバヘッドセグメント８２８毎のオーバヘッドデータは、５１バイトとなる。また、所定のアプリケーションで消費されるアドレス可能なメモリ領域は、２の累乗で割り切れることが好ましいので、５１バイトのオーバヘッドデータは、６４バイトのオーバヘッドセグメント８２８を必要とする。上述したように、ページは、５１２バイトのアクセス可能なデータからなり、したがって、ＥＣＣデザイン３では、結果として、１オーバヘッドページ当たり８つのオーバヘッドセグメント８２８となる。
【００５７】
ＥＣＣデザイン４（ECC Design-four）では、４バイトのＥＣＣコード、例えば従来の技術で用いられていたＥＣＣコードを採用する。このレベルのメモリ消費では、１６個のページのユーザデータは、６４バイトのＥＣＣデータを必要とする。６４バイトのＥＣＣフィールド８３０と、２バイトのＰＢＡレジスタ８３２と、１バイトのフラグフィールド８３４とを加算することにより、ユーザデータの１６個のページからなるデータ専用ブロック７０８、７１０、７１２の１つのをサポートするオーバヘッドセグメント８２８毎のオーバヘッドデータは、６７バイトとなる。２の累乗で割り切れる次に利用可能なメモリ領域は、１２８バイトであるので、従来の技術で通常用いられていたエラー訂正コードを、本発明のＥＣＣデザイン４に採用することにより、各オーバヘッドページ８０２〜８０６毎に、４個のオーバヘッドセグメント８１０〜８２２とすることができる。
【００５８】
なお、本発明は、上述した４つのＥＣＣデザインのいずれかに限定されるものではない。より大きく、より複雑なエラー訂正アルゴリズムを採用することができ、これは、最終的に、より多くのデータを必要とし、オーバヘッドセグメント８２８が大きくなる。最終的に、１つのオーバヘッドセグメント８２８は、オーバヘッドページ全体、又は幾つかのオーバヘッドページを必要とする可能性がある。このようなアプリケーションは、本発明の範囲内であるが、本発明の好ましい実施の形態においては、エラー訂正能力とオーバヘッドセグメントによるメモリ消費間のトレードオフを考慮して、ＥＣＣデザイン１〜ＥＣＣデザイン４のうちの１つのエラー訂正能力を用いる。
【００５９】
上述したように、本発明に基づくＰＢＡレジスタ８３２は、オーバヘッドデータとユーザデータとの相互参照のためのデータを格納する。従来の技術では、ユーザデータと、このユーザデータに対応するオーバヘッドデータは、同じ物理ブロックアドレスに格納されていたので、上述したこのアーキテクチャの特徴は、知られていなかった。
【００６０】
図９は、本発明に基づく空間マネージャの一実施の形態を示している。連続して番号が付けられた仮想論理ブロックアドレス（ＶＬＢＡ）９０２〜９１２は、それぞれが物理データブロックに現在格納されているデータ量に等しいデータ量を表し、一連の関連付けフィールド９４０〜９５０に関連付けられている。各関連付けフィールド９４０〜９５０は、アドレスレジスタ９２０と、フラグレジスタ９５２とを備える。なお、上述したように、従来の技術では、ユーザデータとオーバヘッドデータは、同一の物理ブロックアドレスによって定義されていた。物理ブロックアドレスレジスタ４０８（図４）は、ユーザデータとオーバヘッドデータの両方を参照していた。一方、本発明では、オーバヘッドデータとユーザデータは独立して格納されるので、空間マネージャ９００のアドレスレジスタ９２０は、ユーザデータとオーバヘッドデータのいずれか一方のみを参照する。本発明の好ましい実施の形態では、空間マネージャ９００によって参照されるのは、オーバヘッドデータである。本発明の空間マネージャ９００は、ユーザデータを直接参照しない。
【００６１】
アドレスレジスタ９２０は、ＶＰＢＡレジスタ９２２と、アドレス指定子（Address specifier）９２４との２つのサブレジスタに分割されている。ＶＰＢＡレジスタ９２２は、オーバヘッドデータが格納されている物理ブロックアドレスを定義している。アドレス指定子９２４の内容は、本発明の実施の形態によって異なる。ここに説明する一実施の形態においては、アドレス指定子９２４の内容は、ページと、このページ内におけるセグメントオフセットとの両方を定義することができる。また、他の実施の形態においては、アドレス指定子９２４の内容は、オーバヘッドデータのセグメントを検出することができるページのみを定義することができる。アドレス指定子９２４がページアドレスのみを含むとき、コントローラは、先ず、アドレス指定子９２４によって参照されるページにアクセスすることにより、特定のセグメントを間接的に検出する。空間マネージャ９００のフラグレジスタ９５２内の状態フラグ（Status Flag）は、好ましくは、不良ブロックフラグ９３０と、廃棄可能データフラグ９３２と、使用中ブロックフラグ９３４とを含んでいる。特定のオーバヘッド専用ブロックに関連した空間マネージャ９００内の状態フラグは、この特定のオーバヘッド専用ブロックの状態を定義し、一方、特定のオーバヘッドセグメントに配置されたフラグは、そのオーバヘッドセグメントによって識別されるユーザデータ及びデータ専用ブロックの状態を定義している。
【００６２】
本発明の「ブロック法（block）」に基づく実施の形態を、図１０を用いて説明する。この実施の形態では、オーバヘッド専用ブロック１００４内の連続したオーバヘッドページ１０２０〜１０２６が、ユーザデータの連続した仮想論理ブロック１０１０〜１０１６をサポートするために割り当てられている。図１０では、ＶＬＢＡ３２〜ＶＬＢＡ４７が付けられた、ユーザデータの連続してアドレスが付けられた１６個の仮想論理ブロック１０１０〜１０１６のスタック１００２を示している。ＶＬＢＡ３２〜ＶＬＢＡ４７のスタック１００２は、１６個のオーバヘッドページ１０２０〜１０２６を有するオーバヘッド専用ブロック１００４によってサポートされる。図１０に示す連続してアドレスが付けられたＶＬＢＡの数は、オーバヘッド専用ブロック１００４内のオーバヘッドページ１０２０〜１０２６の数に一致するように選択される。オーバヘッドデータの格納においては、スタック１００２の第１の仮想論理ブロック１０１０のアドレスによって定義されるユーザデータは、そのオーバヘッドデータ１０７０を、オーバヘッド専用ブロック１００４の第１のオーバヘッドページ１０２０のオーバヘッドセグメント１０３０、１０３１、１０３１、・・・に格納する。スタック１００２の第２の仮想論理ブロック１０１２のアドレスによって定義されるユーザデータは、そのオーバヘッドデータ１０７２を、オーバヘッド専用ブロック１００４の第２のオーバヘッドページ１０２２のオーバヘッドセグメント１０２７、１０２８、１０２９、・・・に格納する。第３の仮想論理ブロック１０１４のアドレスによって定義されるユーザデータは、そのオーバヘッドデータ１０７３を、オーバヘッド専用ブロック１００４の第３のオーバヘッドページ１０２４のオーバヘッドセグメントに格納し、以下、同様に、各ＶＬＢＡによって定義されるユーザデータは、そのオーバヘッドデータを、それぞれのオーバヘッドページのオーバヘッドセグメントに格納する。なお、この処理は、必ずしも順番に行う必要はない。第１６の仮想論理ブロック１０１６のアドレス、すなわちＶＬＢＡ４７によって定義されるユーザデータは、そのオーバヘッドデータ１０７４を、オーバヘッド専用ブロック１００４の第１６のオーバヘッドページ１０２６のオーバヘッドセグメント１０３８、１０４０、１０４２、・・・に格納するが、この処理は、第１のオーバヘッドページ１０２０へのオーバヘッドデータの格納よりも前に実行してもよい。更に、この処理は、必ずしも均衡でなく、すなわち均等に実行される必要もない。すなわち、例えば、第１６の仮想論理ブロック１０１６のアドレスによって定義されるユーザデータの更新を連続して複数回行うことにより、スタック１００２の第３の仮想論理ブロック１０１４のアドレスによって定義されるユーザデータが供給される前に、第１６のオーバヘッドページ１０２６に格納されているオーバヘッドデータ１０７４は複数回更新される。
【００６３】
同じＶＬＢＡによって定義されるユーザデータが更新されるとき、このユーザデータをサポートするために、新たなオーバヘッドデータのセットが生成される。同じＶＬＢＡにより連続して生成されたオーバヘッドデータは、そのＶＬＢＡに割り当てられたオーバヘッドページ内の連続してアドレスが付けられたオーバヘッドセグメントに格納される。特定のＶＬＢＡのユーザデータが更新される毎に、新たなオーバヘッドデータが、そのＶＬＢＡが割り当てられているオーバヘッドページの次の連続したオーバヘッドセグメントに格納される。図１１に示す実施の形態では、第１のオーバヘッドページ１０２０は、何回も更新されている。オーバヘッドセグメント１０３０、１０３１、１０３２、１０３３には、廃棄可能のマークが付されている。連続したオーバヘッドセグメントの最後のオーバヘッドセグメント１０３４は、現在のオーバヘッドセグメントである。第２のオーバヘッドページ１０２２は、２つの廃棄可能なオーバヘッドセグメント１０２７、１０２８と、現在のオーバヘッドセグメント１０２９とを有する。第１６のオーバヘッドページ１０２６は、フル状態である。すなわち、最後のオーバヘッドセグメント１０５０以外の全てのオーバヘッドセグメント１０３８〜１０４９は、廃棄可能になっており、最後のオーバヘッドセグメント１０５０が、現在のオーバヘッドセグメントである。
【００６４】
フラッシュメモリ装置のコントローラは、データを検索するためには、特定のＶＬＢＡに対応した現在のオーバヘッドセグメントを識別する必要がある。同様に、新たなオーバヘッドデータを格納するためには、コントローラは、次に利用可能なオーバヘッドセグメントを識別する必要がある。ここで、用語「次（next）」とは、複数のオーバヘッドセグメントに割り当てられたそれぞれのアドレスを指す。次に利用可能なオーバヘッドセグメントの識別は、参照ページを有する個々のオーバヘッドセグメント内のフラグフィールド８３４（図８Ｂ）を用いて動作する空間マネージャ９００内のアドレス指定子９２４によって参照されるページアドレスにより、行うことができる。
【００６５】
一実施の形態においては、アドレス指定子９２４は、特定の仮想論理ブロック１０１０〜１０１６に割り当てられたオーバヘッドページ１０２０〜１０２６のページ番号のみを含んでいる。なお、データの格納及び検索には、正確なオーバヘッドセグメントを知る必要がある。コントローラは、空間マネージャ９００内のＶＰＢＡレジスタ９２２及びアドレス指定子９２４とを調べることにより、特定のＶＬＢＡに関連したオーバヘッドデータの格納に用いられるＶＰＢＡ及びページアドレスを識別することができる。そして、コントローラは、アドレス指定子９２４によって指定されるオーバヘッドページ１０２０〜１０２６にアクセスし、例えばオーバヘッドページ１０２０内の連続したオーバヘッドセグメント１０３０、１０３１、１０３２等を順次調べる。ここでは、好ましくは、各オーバヘッドセグメントの使用中フラグ８３６、欠陥フラグ８３８及び廃棄可能データフラグ８４０の調査も含まれる。この調査によって得られた情報に基づき、コントローラは、そのＰＢＡレジスタ８３２内において現在のユーザデータの位置を識別する現在のオーバヘッドセグメントを、識別することができる。同様に、フラグレジスタ９５２内のフラグ９３０〜９３４を調べることにより、コントローラは、新たなオーバヘッドデータを格納する次の未使用で欠陥がないオーバヘッドセグメントを識別することができる。なお、他の実施の形態においては、アドレス指定子９２４がオーバヘッドセグメントのセグメント番号を含み、これにより、コントローラは、現在のオーバヘッドセグメントを識別することができ、フラグの状態を調べるための一連のオーバヘッドセグメントを順次調べる必要がなくなる。
【００６６】
図１１に、ブロック法に基づく実施の形態におけるオーバヘッドセグメントの整理統合（segment consolidation）及びブロック消去の処理を示す。整理統合は、オーバヘッド専用ブロックがフル状態となったときに設定され、それは、通常、図１１に示すオーバヘッド専用ブロック１００４内のオーバヘッドページ１０２０〜１０２６のうちのいずれか１つ、例えば第１６のオーバヘッドページ１０２６がフル状態になったときに設定される。オーバヘッド専用ブロック１００４がフル状態になると、コントローラは、新たなオーバヘッド専用ブロック１０６４を識別する。そして、コントローラは、フル状態のオーバヘッド専用ブロック１００４内の全てのオーバヘッドページ１０２０〜１０２６を調べ、現在のオーバヘッドセグメントを含んでいる全てのオーバヘッドページの現在のオーバヘッドセグメント１０３４、１０２９、・・・、１０５０を識別する。新たなオーバヘッドセグメントにオーバヘッドデータが格納されたときに、古いオーバヘッドページ内の古いオーバヘッドセグメントには、好ましくは、廃棄可能を示すフラグが立てられるので、各オーバヘッドページの現在のオーバヘッドセグメントは、フラグレジスタ８３４内の様々なフラグ８３６〜８４０の状態を調べることによって、識別される。１つのオーバヘッドページは、１つ以下の現在のオーバヘッドセグメントを有する。図１１に示すように、オーバヘッド専用ブロック１００４がフル状態になったときに、第１のオーバヘッドページ１０２０の現在のオーバヘッドセグメント１０３４内のオーバヘッドデータは、新たなオーバヘッド専用ブロック１０６４の第１のオーバヘッドページ１０５２の最初のオーバヘッドセグメント１０５８に移動される。また、第２のオーバヘッドページ１０２２の現在のオーバヘッドセグメント１０２９内のオーバヘッドデータは、新たなオーバヘッド専用ブロック１０６４の第２のオーバヘッドページ１０５４の最初のオーバヘッドセグメント１０６０に移動される。また、第１６のオーバヘッドページ１０２６の現在のオーバヘッドセグメント１０５０内のオーバヘッドデータは、新たなオーバヘッド専用ブロック１０６４の第１６のオーバヘッドページ１０５６の最初のオーバヘッドセグメント１０６２に移動される。したがって、整理統合処理においては、各オーバヘッドページの現在のオーバヘッドセグメントは、新たな未使用のオーバヘッド専用ブロックの同じ各オーバヘッドページの最初のオーバヘッドセグメントに移動される。この整理統合処理の後に、使用されていたオーバヘッド専用ブロックは、消去され、あるいは後で消去するためにフラグが設定される。新たなオーバヘッド専用ブロックへの整理統合と同時に、空間マネージャ９００のアドレスレジスタ９２０（図９）が更新される。上述したように、「ブロック法」に基づく実施の形態では、空間マネージャ９００は、好ましくは、ＶＰＢＡレジスタ９２２と、ページ番号を含むアドレス指定子９２４との両方を有しており、他の実施の形態では、空間マネージャ９００内のアドレス指定子９２４は省略されている。
【００６７】
なお、図１１は、書込が異なる段階（different stages of filling）のオーバヘッドページ１０２０〜１０２６を示している。オーバヘッドページのこの書込の不均一性は、入力ユーザデータに対して仮想論理ブロックアドレスが均一な頻度で割り当てられていない場合でなく、１つのＶＬＢＡが頻繁に繰り返された場合に生じる。あるＶＬＢＡが他のＶＬＢＡよりも頻繁に割り当てられると、オーバヘッド専用ブロック内の１つのオーバヘッドページがフル状態となり、直ちに、オーバヘッド専用ブロックは、整理統合及び消去を行わなくてはならず、その結果、整理統合及び消去のときに、多くの未使用のオーバヘッドセグメント１０８０が生じる。整理統合及び消去のときに、多くの未使用のオーバヘッドセグメント（図１１）が存在すると、オーバヘッド専用ブロックの消去サイクルは、より頻繁になる。
【００６８】
図１２は、本発明の「ランダム法」に基づく実施の形態を示している。図１２では、入力される仮想論理ブロック１２０２〜１２１６のユーザデータに関連するオーバヘッドデータは、「ＯＶ」とＶＬＢＡとによって示されている。例えば、ＶＬＢＡ３１４の仮想論理ブロック１２０６をサポートするオーバヘッドセグメントは、「ＯＶ−３１４」１２２６として示される。このランダム法に基づく実施の形態では、上述したブロック法に基づく実施の形態とは異なり、オーバヘッドページは、特定のＶＬＢＡに対して専用とされていない。ここでは、ＶＬＢＡによって定義されるユーザデータがホストから供給されると、そのユーザデータをサポートするために生成されたオーバヘッドデータは、オーバヘッド専用ブロックの次に利用可能なオーバヘッドセグメントに格納される。仮想論理ブロック１２０２〜１２１６のユーザデータが連続して供給されると、オーバヘッドデータが連続して生成され、これらは、入力ユーザデータを定義するＶＬＢＡに拘わらず、連続してアドレスが付けられたオーバヘッドセグメント１２２２〜１２３８に格納される。図１２は、仮想論理ブロック１２０２、１２０４のユーザデータからなるデータファイルと、仮想論理ブロック１２０６、１２０８のユーザデータからなるデータファイルと、仮想論理ブロック１２１０、１２１２のユーザデータからなるデータファイルと、仮想論理ブロック１２１４、１２１６のユーザデータからなるデータファイルとの４つのデータファイルを示している。ここに示す入力ユーザデータの構成は、例示的なものであり、各入力データファイルは、１データファイル当たり２つのＶＬＢＡを有するとは限らず、更に、各入力データファイルは、同じサイズである必要もない。この入力ユーザデータをサポートするオーバヘッドデータは、仮想論理ブロック１２０２〜１２１６のユーザデータが供給された順序に基づいて、オーバヘッド専用ブロック１２２０の連続してアドレスが付けられたオーバヘッドセグメント１２２２〜１２３６に格納される。
【００６９】
このランダム法に基づく実施の形態では、空間マネージャ９００のＶＰＢＡレジスタ９２２（図９）は、オーバヘッド専用ブロック１２２０の仮想物理ブロックアドレスを定義しており、アドレス指定子９２４は、正確なオーバヘッドセグメントを識別する必要がある。なお、ランダム法の実施の形態においては、オーバヘッドセグメント８１０〜８２２（図８）を、オーバヘッドページ８０２〜８０６にグループ化することは任意である。個々のオーバヘッドセグメント１２２２〜１２３６（図１２）には、アドレス指定子９２４内のページ番号と、オーバヘッドページ内におけるセグメント番号とによってアドレスを付けてもよく、あるいは単に、オーバヘッド専用ブロック１２２０内の全てのオーバヘッドセグメントの数に基づいてアドレスを付けてもよい。バイナリフォーマットでは、これら２つのアドレスフォーマットは、区別することができない。オーバヘッド専用ブロックを概念的に複数のオーバヘッドページに分割するか否かに拘わらず、オーバヘッドセグメントは、連続してアドレス可能である考えられる。オーバヘッド専用ブロックを概念的に複数のオーバヘッドページに分割した場合、第５のオーバヘッドページの最後のオーバヘッドセグメントと、第６のオーバヘッドページの最初のオーバヘッドセグメントとには、連続したセグメントアドレスが付けられていると考えられる。本発明のブロック法に基づく実施の形態では、アドレス指定子９２４には、オーバヘッドページ番号のみを格納すればよいので、このランダム法に基づく実施の形態では、ブロック法に基づく実施の形態に比べて、アドレス指定子９２４におけるアドレス指定のために実際に使用されるビット数が多くなる。
【００７０】
ランダム法に基づく実施の形態におけるオーバヘッド専用ブロックの整理統合は、最後のオーバヘッドセグメント１２３８にオーバヘッドデータが格納されたときに実行される。ランダム法に基づく実施の形態では、現在のオーバヘッドセグメントと、廃棄可能なオーバヘッドセグメントとが混在している。図１３は、フル状態のオーバヘッド専用ブロック１３０２を、利用可能なオーバヘッド専用ブロック１３０４に整理統合する処理を示している。各オーバヘッドセグメント１３１０〜１３５６に示す「Ｕ」は、「使用中フラグ」が第２の値に設定されていることを表している。また、選択されたオーバヘッドセグメントは、「廃棄可能フラグ」が設定されていることを表す「Ｏ」を示している。使用されておらず、欠陥がないオーバヘッドセグメントは、利用可能なオーバヘッドセグメントである。また、使用中で、廃棄可能ではないオーバヘッドセグメントは、現在のオーバヘッドセグメントである。例えば、オーバヘッドセグメント「１２７」１３５６には、ＶＬＢＡ３４をサポートするオーバヘッドデータ「ＯＶ−３４」が格納されており、「使用中フラグ」が設定されている。また、オーバヘッドセグメント「１２１」１３４４及びオーバヘッドセグメント「８」１３２６にも、ＶＬＢＡ３４をサポートするオーバヘッドデータ「ＯＶ−３４」が格納されているが、これらには、「廃棄可能フラグ」が設定されている。ＶＬＢＡ３４が更新される毎に、新たなデータがどこに格納されたかを示す相互参照を含むオーバヘッドデータは更新される。あらゆるＶＬＢＡの全ての更新は、次に利用可能なオーバヘッドセグメント１３１０〜１３５６に格納される。オーバヘッドデータ「ＯＶ−３４」の最新の更新は、オーバヘッドセグメント「１２７」１３５６であり、これが現在のオーバヘッドセグメントである。ランダム法に基づく実施の形態における整理統合処理では、図１３に示すように、フル状態のオーバヘッド専用ブロック１３０２内の丸で示す現在の（廃棄可能でない）オーバヘッドセグメント１３１０、１３２０、１３２４、１３３２、１３３４、１３４０のオーバヘッドデータが、新たなオーバヘッド専用ブロック１３０４に移動される。全ての現在のオーバヘッドデータが新たなオーバヘッド専用ブロック１３０４に移動されたとき、廃棄可能なオーバヘッド専用ブロック１３０２は消去される。消去は、直ちに実行してもよく、あるいは廃棄可能なオーバヘッド専用ブロック１３０２に消去用のタグを付け、適切なときに、オーバヘッド専用ブロック１３０２を消去してもよい。
【００７１】
図１４は、本発明のハイブリッド法に基づくフラッシュメモリ装置の構成を示している。ブロック法及びランダム法のどちらが効率的かは、ＶＬＢＡの繰返し頻度の潜在的な違いに影響され、システムのユーザは、どちらが効率的かを判断できないので、本発明のハイブリッド法に基づく実施の形態では、入力ユーザデータに対するＶＬＢＡの再割当の頻度に拘わらず、効率を略同じレベルに維持することができるフラッシュメモリ装置を提供する。本発明のハイブリッド法に基づく実施の形態は、図１４に示すように、固定オーバヘッドフィールド１４０６と、ランダムオーバヘッドフィールド１４０８とを有するオーバヘッド専用ブロック１４０４を備える。利用可能な仮想論理ブロックアドレス（ＶＬＢＡ）９０２〜９１２（図９）は、概念的に複数のＶＬＢＡグループ、例えば図１４に示すＶＬＢＡグループ１４０２に分割されている。各ＶＬＢＡグループ、例えばＶＬＢＡグループ１４０２は、複数の連続したＶＬＢＡ１４１０〜１４１８によって定義される。各ＶＬＢＡグループの長さは、好ましくは等しい。
【００７２】
ＶＬＢＡグループ１４０２内の連続したＶＬＢＡ１４１０〜１４１８は、オーバヘッド専用ブロック１４０４の固定オーバヘッドフィールド１４０６内の連続したオーバヘッドセグメント１４２０〜１４２９に関連付けられている。オーバヘッド専用ブロック１４０４の固定オーバヘッドフィールド１４０６の数は、ＶＬＢＡグループ１４０２のＶＬＢＡ１４１０〜１４１８の数に等しい。フラッシュメモリ装置内のＶＬＢＡの総数が複数のオーバヘッド専用ブロックに対応する複数の固定オーバヘッドフィールドに均等に分割できない場合、好ましい実施の形態では、最後のＶＬＢＡグループ以外のＶＬＢＡグループは、固定オーバヘッドフィールド１４０６内のオーバヘッドセグメント１４２０〜１４２９の数に等しい数のＶＬＢＡを有し、最後のＶＬＢＡグループは、オーバヘッド専用ブロック１４０４の固定オーバヘッドフィールド１４０６内のオーバヘッドセグメント１４２０〜１４２９の数よりも少ない数のＶＬＢＡを有する。
【００７３】
図１４は、オーバヘッド専用ブロック１４０４の固定オーバヘッドフィールド１４０６内の３２個のオーバヘッドセグメント１４２０〜１４２９に対応する３２個のＶＬＢＡ１４１０〜１４１８からなるＶＬＢＡグループ１４０２を示している。ここでは、３２個のオーバヘッドセグメント１４２０〜１４２９は、４つのオーバヘッドページ１４５０〜１４５６に分割されている。ランダムオーバヘッドフィールド１４０８内の９６個のオーバヘッドセグメント１４３１〜１４４８は、１２個のオーバヘッドページ１４５８〜１４６４に分割されている。なお、これらの数は例示的なものであり、ＶＬＢＡグループ１４０２は、これよりも大きくても、小さくてもよく、オーバヘッド専用ブロック１４０４当たりのオーバヘッドセグメントの数は、これよりも多くても、少なくてもよい。また、オーバヘッド専用ブロック１４０４の１／４を、固定オーバヘッドフィールド１４０６専用とし、オーバヘッド専用ブロック１４０４の３／４を、ランダムオーバヘッドフィールド１４０８専用としているが、この比は、固定ではない。なお、本発明の好ましい実施の形態においては、固定オーバヘッドフィールド１４０６は、オーバヘッド専用ブロック１４０４の１／２よりも小さいことが望ましい。図１４に示す実施の形態では、ランダムオーバヘッドフィールド１４０８の４つのオーバヘッドセグメント１４３８〜１４４４のみが、オーバヘッドデータの格納に使用されている。図８Ｂを用いて説明したように、各オーバヘッドセグメントは、好ましくは、使用中フラグと廃棄可能フラグとを含むフラグフィールドを有している。図１６を用いて詳細に説明するが、ランダムオーバヘッドフィールド１４０８内のオーバヘッドセグメント１４３１〜１４４８は、特定のＶＬＢＡに対して予め割り当てられてはいない。ハイブリッド法に基づく実施の形態においては、オーバヘッドセグメント１４２０〜１４４８は、オーバヘッドデータをユーザデータに関連付ける物理アドレスレジスタを有する。また、ハイブリッド法に基づく実施の形態では、図９に示す空間マネージャ９００は、ＶＰＢＡレジスタ９２２内のオーバヘッド専用ブロックのアドレスと、アドレス指定子９２４内の固定オーバヘッドフィールドのアドレスとを参照する。
【００７４】
図１４において、選択されたオーバヘッドセグメント１４２０〜１４２８及びオーバヘッドセグメント１４３８〜１４４４のフラグ状態は、「使用中」を示すＵの有無及び「廃棄可能」を示すＯの有無によって示されている。ＶＬＢＡ３２を表すオーバヘッドセグメント「３２」１４２０と、ＶＬＢＡ３６を表すオーバヘッドセグメント「３６」１４２７とには、使用中フラグが示され、廃棄可能フラグは示されていない。したがって、これらのオーバヘッドセグメント１４２０、１４２７は、現在のオーバヘッドデータを格納している。オーバヘッドセグメント「３３」１４２２と、オーバヘッドセグメント「３４」１４２４と、オーバヘッドセグメント「３５」１４２６とには、使用中フラグが示されておらず、したがって、これらのオーバヘッドセグメント１４２２、１４２４、１４６は、オーバヘッドデータを格納するのに未だ用いられていない。オーバヘッドセグメント「３７」１４２８には、使用中フラグと廃棄可能フラグの両方が示されており、したがって、ＶＬＢＡ３７は、新たなユーザデータによって更新されており、それにより、新たなオーバヘッドデータが生成され、ランダムオーバヘッドフィールド１４０８のオーバヘッドセグメント１４４０に格納されたことが示されている。ハイブリッド法に基づくオーバヘッドデータの格納については、図１６を用いて後に更に詳細に説明する。
【００７５】
ハイブリッド法に基づく好ましい実施の形態においては、ランダムオーバヘッドフィールド１４０８内の各オーバヘッドページ１４５８〜１４６４の最初のオーバヘッドセグメント１４３１〜１４３６は、更新マップを含む状態セグメント（Status Segment、以下、状態セグメント１４３１〜１４３６ともいう。）である。好ましい実施の形態では、これらの状態セグメント１４３１〜１４３６は、ＶＬＢＡグループ１４０２内の各ＶＬＢＡ３２〜６３に対応する現在のオーバヘッドセグメントの位置を検出するためのデータを含んでいる。
【００７６】
図１５は、状態セグメント１４３１〜１４３６内の更新マップの一実施の形態を示している。なお、ここでは、例示的に、ランダムオーバヘッドフィールド１４０８の第５のオーバヘッドページ１４６０の状態セグメント１４３２を示している。図１５に示す実施の形態では、更新マップ１５００は、固定オーバヘッドフィールド１４０６内のオーバヘッドセグメント１４２０〜１４２９の数に等しい数のレジスタ１５１０〜１５２６を有している。上述したように、更新マップ１５００内の連続したレジスタ１５１０〜１５２６は、固定オーバヘッドフィールド１４０６内の連続したオーバヘッドセグメント１４２０〜１４２９に関連付けられた連続したＶＬＢＡ３２〜６３に関連付けられている。更新マップ１５００へのデータの格納を限定することを意図しないわけではないが、図１５では、特定のＶＬＢＡに関連付けられた固定オーバヘッドフィールド１４０６内のページ番号及びセグメント番号を示している。図１４に示す実施の形態では、固定オーバヘッドフィールド１４０６内には更新マップが含まれていないが、第５のオーバヘッドページ１４６０の状態セグメント１４３２（図１４）内の更新マップ１５００（図１５）によって、固定領域である固定オーバヘッドフィールド１４０６又はランダム領域であるランダムオーバヘッドフィールド１４０８において、状態セグメント１４３２がある第５のオーバヘッドページ１４６０よりも前のオーバヘッドページ１４５０〜１４５８内の全ての現在のオーバヘッドセグメントが検出される。例えば、図１４及び図１５に示す実施の形態では、ＶＬＢＡ３２のオーバヘッドデータをサポートしている現在の（廃棄可能ではない）オーバヘッドセグメント１４４７は、第４のオーバヘッドページ１４５８の第７のオーバヘッドセグメント１４４７に存在する。次のオーバヘッドページ１４６０の状態セグメント１４３２内に設けられた図１５に示す更新マップ１５００は、このアドレス「第４ページ第７セグメント」を、ＶＬＢＡ３２に対応するレジスタ１５１０に反映している。固定オーバヘッドフィールド１４０６内の、ＶＬＢＡ３４に関連付けられている現在のオーバヘッドセグメント１４２４は、第０のオーバヘッドページ１４５０の第２のオーバヘッドセグメント１４２４に存在する。図１５に示すように、このアドレス「第０ページ第２セグメント」は、ＶＬＢＡ３４に関連付けられたレジスタ１５１４に反映されている。したがって、状態セグメント１４３１〜１４３６は、オーバヘッド専用ブロック１４０４において、状態セグメント１４３１〜１４３６が存在するオーバヘッドページよりも前の全てのオーバヘッドページに含まれる全ての現在のオーバヘッドセグメントを検出するように設計されている。
【００７７】
図１６は、本発明のハイブリッド法に基づいて、オーバヘッドデータを、オーバヘッド専用ブロックに格納する処理を示すフローチャートである。ステップ１６０２において、ＶＬＢＡによって定義される入力ユーザデータが供給される。図１６に示すフローチャートでは、例示的に、図１４に示すＶＬＢＡグループ１４０２と、オーバヘッド専用ブロック１４０４とを用いて説明する。ステップ１６０４において、入力ユーザデータは、データ専用ブロックに格納される。ステップ１６０６において、入力ユーザデータに関連するオーバヘッドデータが生成される。このオーバヘッドデータは、必ず、ユーザデータが格納されたＶＰＢＡの相互参照を含んでいる。ステップ１６０８において、入力ユーザデータのＶＬＢＡ（以下、単に入力ＶＬＢＡという。）に関連付けられたオーバヘッド専用ブロック１４０４が検出される。ステップ１６１０において、コントローラは、入力ＶＬＢＡに関連付けられている固定オーバヘッドフィールド１４０６内の特定のオーバヘッドセグメント１４２０〜１４２９にアクセスする。そして、ステップ１６１２において、コントローラは、オーバヘッドセグメントが使用中であるか否かを判定し、ステップ１６１４において、オーバヘッドセグメントに欠陥があるか否かを判定する。オーバヘッドセグメントが未使用であり、欠陥もない場合、ステップ１６１６において、オーバヘッドデータは、入力ＶＬＢＡに関連付けて前に設定された固定オーバヘッドフィールド１４０６内の特定のオーバヘッドセグメント１４２０〜１４２９に格納される。固定オーバヘッドフィールド１４０６内の前に設定されたオーバヘッドセグメントが、ステップ１６１２において使用中であると判定された場合、あるいはステップ１６１４において欠陥があると判定された場合、ステップ１６１８において、コントローラは、ランダムオーバヘッドフィールド１４０８内の次に利用可能なオーバヘッドセグメントを検出する。ここでいう「次に利用可能な」という表現は、文字通り、ランダムオーバヘッドフィールド１４０８内において最後に用いられたオーバヘッドセグメントに順次続くセグメントアドレスを有し、ランダムオーバヘッドフィールド１４０８内の未使用で、欠陥がないオーバヘッドセグメントを指す。したがって、この処理では、未使用ではあるが、欠陥があるオーバヘッドセグメントは、スキップされる。更に、ハイブリッド法の実施の形態においては、状態セグメント１４３１〜１４３６が、各オーバヘッドページ１４５８〜１４６４の最初のオーバヘッドセグメントに設けられているが、このような状態セグメント１４３１〜１４３６は、オーバヘッド情報を格納するために「次に利用可能な」オーバヘッドセグメントを検出するときには、スキップされる。ランダムオーバヘッドフィールド１４０８内のセグメントアドレスは、単に連続したセグメントアドレスとみなすことができるが、ランダムオーバヘッドフィールド１４０８の割当は、好ましくは、ページアドレスも含む。このアドレッシング方式では、第ｎのオーバヘッドページの最後にアドレス可能なセグメントアドレスの次のセグメントアドレスは、第（ｎ＋１）のオーバヘッドページの最初にアドレス可能なセグメントアドレスであることは、当業者にとって明らかである。なお、このアルゴリズムは、様々に変更することができ、図１６に示すアルゴリズムは、本発明のハイブリッド法に基づいて正しいオーバヘッドセグメントを選択する手法を限定するものではない。特にステップ１６１０〜ステップ１６１８において、最初に利用可能なオーバヘッドセグメントを検出する際、最初に利用可能なオーバヘッドセグメントは、固定オーバヘッドフィールド１４０６内の予め指定されたオーバヘッドセグメントであってもよく、ランダムオーバヘッドフィールド１４０８内の次に利用可能なオーバヘッドセグメントであってもよく、この処理では、実際のオーバヘッドセグメント内のフラグを調べる必要はない。図１５を用いて説明したように、ランダム領域であるランダムオーバヘッドフィールド１４０８の状態セグメント１４３２内の更新マップ１５００は、ランダムオーバヘッドフィールド１４０８だけではなく、固定領域である固定オーバヘッドフィールド１４０６のオーバヘッドセグメント１４２０〜１４５６の状態を反映するように構成することができる。これに代えて、固定オーバヘッドフィールド１４０６内のオーバヘッドセグメント１４２０〜１４２９の状態は、従来の技術の図２に示すように、及び本発明の他の実施の形態を示す図１８及び図１９を用いて後述するように、各オーバヘッドページ１４５０〜１４５６の最後に設けられた拡張フィールドに格納することができる。固定オーバヘッドフィールド１４０６の各オーバヘッドページ１４５０〜１４５６の拡張フィールドに設けられたフラグは、各オーバヘッドページ１４５０〜１４５６内の様々なオーバヘッドセグメントが使用中であるか否かを示す。したがって、図１６に示すステップ１６１０〜１６１８は、利用可能なオーバヘッドセグメントを選択する一手法を例示的に示しているにすぎない。
【００７８】
図１６に示すステップ１６２０において、コントローラは、ランダムオーバヘッドフィールド１４０８内で次に利用可能なオーバヘッドセグメントを検出した後、このオーバヘッドセグメントにオーバヘッドデータを格納する。ステップ１６２２において、コントローラは、必要に応じて、状態セグメント及びフラグを更新する。ここで更新されるのは、実際のオーバヘッドセグメント１４３８〜１４４８内のフラグだけではなく、状態セグメント１４３１〜１４３６内のフラグ１５０４、１５０８、１５０９も含まれる。また、この処理は、入力ＶＬＢＡに関連付けられたオーバヘッドデータを格納するのに最後に用いられたオーバヘッドセグメントを検出し、このオーバヘッドセグメントに廃棄可能フラグを設定する処理を含む。また、フラグの更新には、オーバヘッドデータが現在格納されているオーバヘッドセグメントに、使用中フラグを設定することも含まれる。
【００７９】
図１４に示す実施の形態では、ランダムオーバヘッドフィールド１４０８内には、４つのオーバヘッドセグメント１４３８〜１４４２にオーバヘッドデータが格納されている。第１のオーバヘッドセグメント１４３８には、ＶＬＢＡ５１をサポートするオーバヘッドデータが格納されている。オーバヘッドセグメント１４３８内のフラグは、このオーバヘッドセグメント１４３８が使用中であり、且つ廃棄可能であることを示している。図１６を用いて説明した処理に基づけば、ＶＬＢＡ５１のオーバヘッドデータがランダムオーバヘッドフィールド１４０８に格納されているということは、オーバヘッドデータが、ＶＬＢＡ５１に対応する固定オーバヘッドフィールド１４０６に既に格納されているということを示している。廃棄可能フラグの存在は、オーバヘッドデータをランダムオーバヘッドフィールド１４０８のオーバヘッドセグメント１４３８に格納しているので、ＶＬＢＡ５１をサポートするオーバヘッドデータが更新されていることを示している。この更新されたオーバヘッドデータは、第３のオーバヘッドセグメント１４４２に格納されている。この実施の形態により、特定のＶＬＢＡをサポートするオーバヘッドデータは、固定オーバヘッドフィールド１４０６には１回しか格納することができないが、ランダムオーバヘッドフィールド１４０８には、複数回格納することができる。
【００８０】
本発明の好ましい実施の形態においては、状態セグメント１４３１〜１４３６は、ランダムオーバヘッドフィールド１４０８内の各オーバヘッドページ１４５８〜１４６４の最初のオーバヘッドセグメントに設けられている。状態セグメント１４３１〜１４３６は、好ましくは、特定のＶＬＢＡの最新に更新されたオーバヘッドデータを効率的に検出するようにコントローラを補助することによって、データを検索する際にコントローラによって費やされる時間を短縮するために、用いられる。同様に、本発明の好ましい実施の形態においては、特定のＶＬＢＡをサポートする新たなオーバヘッドデータを格納する際に、コントローラは、好ましくは、このＶＬＢＡをサポートするオーバヘッドデータ用の最後のオーバヘッドセグメントを検出して、廃棄可能フラグを第２の値に設定する。また、この処理は、状態セグメント１４３１〜１４３６を調べることによって、効率的に行うことができる。状態セグメント１４３１〜１４３６によってフラッシュメモリ装置の効率を高めることができる他の処理は、ハイブリッド法を用いたオーバヘッド専用ブロックの整理統合処理である。後述する整理統合処理では、コントローラは、全ての現在のオーバヘッドセグメントを検出して、これらのオーバヘッドセグメントを、新たなオーバヘッド専用ブロックに移動する。整理統合を実行するために現在のオーバヘッドセグメントを検出する際に、コントローラは、その検索を固定オーバヘッドフィールドと、各オーバヘッドページの最初の状態セグメントとに限定することにより、効率的に動作することができる。
【００８１】
図１７は、ハイブリッド法に基づく整理統合処理を示し、この整理統合処理では、フル状態のオーバヘッド専用ブロック１７５０を、空きのオーバヘッド専用ブロック１７５２に整理統合している。ここでは、説明を単に容易にするために、各オーバヘッド専用ブロック１７５０、１７５２は、２つのオーバヘッドページからなる固定オーバヘッドフィールド１７４０、１７４４と、２つのオーバヘッドページからなるランダムオーバヘッドフィールド１７４２、１７４６とを有し、各オーバヘッドページは、６つのオーバヘッドセグメントからなるものとする。フル状態のオーバヘッド専用ブロック１７５０の固定領域である固定オーバヘッドフィールド１７４０内の１２個のオーバヘッドセグメントのうちの５つのオーバヘッドセグメント１７０２、１７０４、１７０６、１７０８、１７１０には、第２の値の「使用中フラグ」を表す「Ｕ」が付されており、これらのオーバヘッドセグメント１７０２、１７０４、１７０６、１７０８、１７１０には、オーバヘッドデータが格納されていることが示されている。例えば、ＶＬＢＡ３２のオーバヘッドデータを「ＯＶ−３２」で表すと、オーバヘッドデータ「ＯＶ−３２」、「ＯＶ−３３」、「ＯＶ−３６」、「ＯＶ−４０」、「ＯＶ−４３」が格納されている固定オーバヘッドフィールド１７４０内のオーバヘッドセグメントは、「ＯＶ−３２」１７０２、「ＯＶ−３３」１７０４、「ＯＶ−３６」１７０６、「ＯＶ−４０」１７０８、「ＯＶ−４３」１７１０である。残りの７つのオーバヘッドセグメント、例えばオーバヘッドセグメント「ＯＶ−３７」１７０９には、「使用中フラグ」が示されておらず、したがって、これらのオーバヘッドセグメントにはオーバヘッドデータが格納されていないことが示されている。ここで、ＶＬＢＡ３７によって定義されるユーザデータの入力ＶＬＢＡが供給された場合、ＶＬＢＡ３７をサポートするオーバヘッドデータを格納するように予め指定された空のオーバヘッドセグメント１７０９が存在する。なお、ＶＬＢＡ３３によって定義される入力ユーザデータのセットが供給された場合、固定オーバヘッドフィールド１７４０内のオーバヘッドデータ「ＯＶ−３３」に対して予め指定されたオーバヘッドセグメント１７０４は、既に使用されており、また、ランダムオーバヘッドフィールド１７４２にも未使用のオーバヘッドセグメントが残っていない。したがって、オーバヘッド専用ブロック１７５０は、「フル状態」として定義され、ランダムオーバヘッドフィールド１７４２の最後のオーバヘッドセグメント１７２４にオーバヘッドデータが格納されたときに、整理統合処理が行われる。
【００８２】
オーバヘッドデータが格納されたオーバヘッドセグメントのうちの特定のＶＬＢＡのオーバヘッドデータを格納した最後のオーバヘッドセグメントのみが、現在のオーバヘッドセグメントであり、整理統合処理において用いられる。例えば、ＶＬＢＡ３３をサポートするオーバヘッドデータ「ＯＶ−３３」は、複数のオーバヘッドセグメント１７０４、１７１２、１７１４、１７１８、１７２２に格納されている。なお、これらのオーバヘッドセグメントのうちのアドレス可能な最後のオーバヘッドセグメント１７２２のみが、現在のオーバヘッドセグメントである。他のオーバヘッドセグメント１７０４、１７１２、１７１４、１７１８は、ＶＬＢＡ３３が更新され、オーバヘッドデータ「ＯＶ−３３」の対応する更新がなされたときに、順次廃棄可能となっている。
【００８３】
図１７に示す実施の形態では、オーバヘッドデータ「ＯＶ−３２」、「ＯＶ−３３」、「ＯＶ−３６」、「ＯＶ−４０」、「ＯＶ−４３」をそれぞれ格納した５つのオーバヘッドセグメント１７１６、１７２２、１７２４、１７２０、１７１０が、現在のオーバヘッドセグメントであり、丸印によって強調されている。ランダムオーバヘッドフィールド１７４２内の最後のオーバヘッドセグメント１７２４にオーバヘッドデータが格納されており、オーバヘッド専用ブロック１７５０全体がフル状態となっているので、整理統合する必要がある。整理統合処理において、破線で示すように、現在のオーバヘッドセグメント１７１６、１７２２、１７２４、１７２０、１７１０に格納されているオーバヘッドデータ「ＯＶ−３２」、「ＯＶ−３３」、「ＯＶ−３６」、「ＯＶ−４０」、「ＯＶ−４３」は、新たなオーバヘッド専用ブロック１７５２の固定オーバヘッドフィールド１７４４内のそれぞれに予め定義されているオーバヘッドセグメント１７２６、１７２８、１７３０、１７３２、１７３４に移動される。整理統合処理を効率的に行うために、コントローラは、好ましくは、その検索範囲を、固定オーバヘッドフィールド１７４０内のフラグと、状態セグメント１７６０、１７６２内のフラグのみに限定している。以上説明したハイブリッド法を用いたデータ格納、データ検索、オーバヘッド専用ブロックの整理統合及び電源投入手順に関する更なる特徴は、当業者にとって明らかである。
【００８４】
図１８は、本発明の「スーパブロック法（"SuperBlock" embodiment）」の実施の形態を示している。スーパブロック法に基づく実施の形態の特徴は、ハイブリッド法に基づく実施の形態と比較することによって、明らかとなる。ハイブリッド法に基づく実施の形態では、オーバヘッド専用ブロック１４０４内の特定のオーバヘッドセグメント１４２０〜１４２９は、ＶＬＢＡグループ１４０２のＶＬＢＡ１４１０〜１４１８のうちのユーザデータの特定の仮想論理ブロックをサポートするオーバヘッドデータを格納するように、予め個々に指定されている。同様に、スーパブロック法に基づく実施の形態では、オーバヘッド専用ブロック１８００内の特定のオーバヘッドセグメント１８４０〜１８４６を含むオーバヘッドページ１８２０は、ユーザデータの複数の仮想論理ブロック１８０４〜１８１４を含むグループ、すなわち「スーパ仮想論理ブロック（Super Virtual Logical Block：ＳＶＬＢ）」１８０２のうちのユーザデータの特定の仮想論理ブロックをサポートするオーバヘッドデータを格納するように、予め指定されている。ハイブリッド法に基づく実施の形態では、予め指定されたオーバヘッドセグメントを含むフィールドは、図１４に示す実施の形態では、４つのオーバヘッドページ１４５０〜１４５６を有する「固定オーバヘッドフィールド」１４０６であり、図１７に示す実施の形態では、２つのオーバヘッドページを有する「固定オーバヘッドフィールド」１７４０である。図１８に示す実施の形態では、予め指定されたオーバヘッドセグメントを含むスーパオーバヘッドフィールドは、１つのオーバヘッドページ１８２０であるように見える。なお、スーパブロック法に基づく実施の形態では、予め指定されたオーバヘッドセグメントを、複数のオーバヘッドページに亘って分散させることができるようにしている。図１９は、それぞれ２つのオーバヘッドページ１９１０、１９１２〜１９１８、１９２０を含むスーパオーバヘッドフィールド１９０２〜１９０６を示している。したがって、スーパオーバヘッドフィールドは、１つのオーバヘッドページ１８２０、あるいは複数のオーバヘッドページ１９１０、１９１２で構成することができる。なお、ハイブリッド法に基づく実施の形態における固定オーバヘッドフィールド１４０６と、スーパオーバヘッドフィールド１９０２の違いは、単に名称の違いのみではない。ハイブリッド法に基づく実施の形態のオーバヘッド専用ブロック１４０４の固定オーバヘッドフィールド１４０６は、１つのみであるが、スーパブロック法に基づく実施の形態のオーバヘッド専用ブロック１９００内には、複数のスーパオーバヘッドフィールド１９０２〜１９０６が設けられている。ＳＶＬＢ１８０２は、各スーパオーバヘッドフィールド１９０２〜１９０６内の予め指定されたオーバヘッドセグメント１８４０〜１８４６の数に対応するいかなる数のＶＬＢを含んでいてもよいが、ＳＶＬＢ１８０２内のＶＬＢ１８０４〜１８１４の数は、２の累乗であることが好ましいことは、当業者にとって明らかである。１つのスーパオーバヘッドフィールドを構成するオーバヘッドセグメントの数が少ないときは、スーパブロック法の効果が薄れるので、スーパオーバヘッドフィールド１９０���〜１９０６には、好ましくは、６４個又は１２８個のオーバヘッドセグメントを設ける。図１８及び図１９は、いずれも１２８個のオーバヘッドセグメントを有するスーパオーバヘッドフィールドを示している。
【００８５】
上述したように、標準的なサイズのオーバヘッド専用ブロック及びオーバヘッドページにおいては、オーバヘッドセグメント内にエラー訂正能力を含まないＥＣＣデザイン１では、オーバヘッドページは、１２８個のオーバヘッドセグメントを含み、オーバヘッドセグメント内に単純なパリティチェックを含むＥＣＣデザイン２では、オーバヘッドページは、６２個のオーバヘッドセグメントを含むことになる。図１８に示す１つのオーバヘッドページ１８２０に割り当てられたスーパオーバヘッドフィールドを構成する１２８個のオーバヘッドセグメント１８４０〜１８４６は、ＥＣＣデザイン１を採用した実施の形態である。一方、図１９に示すスーパオーバヘッドフィールド１９０２は、それぞれ６４個のオーバヘッドセグメントを有する２つのオーバヘッドページ１９１０、１９１２から構成されている。１オーバヘッドページ当たり６４個のオーバヘッドセグメントを設ける実施の形態は、ＥＣＣデザイン２に対応している。図１８及び図１９から明らかなように、多数のスーパオーバヘッドフィールド１９０２〜１９０６を１つのオーバヘッド専用ブロック１９００に効率的に収めるために、ＥＣＣデザイン１、ＥＣＣデザイン２及びＥＣＣデザイン３は、スーパブロック法に基づく実施の形態に用いられる好ましいエラー訂正設計である。当業者には明らかなように、スーパオーバヘッドフィールド１９０２当たり２つのオーバヘッドページを必要とするＥＣＣデザイン２と同様、ＥＣＣデザイン３を組み込んだスーパブロックのアプリケーションでは、スーパオーバヘッドフィールドは、複数のオーバヘッドページを必要とする。ＥＣＣデザイン３では、１オーバヘッドページ当たり８つのオーバヘッドセグメントしか設けることができないので、１２８個のＶＬＢＡの範囲に対応するスーパ仮想論理ブロックをサポートするためには、１６個のオーバヘッドページが必要となる。したがって、ＥＣＣデザイン３を用いた、スーパブロック法に基づくアプリケーションでは、ＳＶＬＢ内のＶＬＢＡの範囲が縮減される。
【００８６】
スーパブロック法に基づく好ましい実施の形態では、空間マネージャ９００のＶＰＢＡレジスタ９２２（図９）は、オーバヘッド専用ブロック１８００のＶＰＢＡを参照する。以下、ＶＰＢＡを、スーパブロック法においては、ＳＶＰＢＡと呼び、オーバヘッド専用ブロックを、スーパオーバヘッド専用ブロックと呼ぶ。アドレス指定子９２４は、好ましくは、スーパオーバヘッド専用ブロック１８００の現在使用されているオーバヘッドページ１８２０〜１８２８のページ番号を参照する。好ましい実施の形態、例えば図１９に示す、互いに異なるオーバヘッドセグメント１９３０、１９３２、・・・からなる予め指定された範囲のスーパオーバヘッドフィールド１９０２が複数のオーバヘッドページ１９１０、１９１２を占める実施の形態では、空間マネージャ９００のアドレス指定子９２４は、全ての現在のオーバヘッドページを参照する。スーパブロック法に基づく実施の形態では、フラグレジスタ９５２は、好ましくは、図９に示すフラグ９３０〜９３４に加えて、図示しないが、移動待ち（Move-Pending）「ＭｖＰ」を示すフィールドと、移動完了（Move-Complete）「ＭｖＣ」を示すフィールドとを含んでいる。
【００８７】
電源投入時における空間マネージャ９００のローディングを容易にするためには、論理アドレスは、不揮発性フラッシュメモリ内のどこかで参照されなければならない。上述したように、ＥＣＣデザイン１及びＥＣＣデザイン２の両方において、オーバヘッドセグメントは、仮想論理ブロックアドレスを参照するのに十分なメモリを有する。あるいは、本発明に基づく独立してアドレス可能なオーバヘッドページ１８２０〜１８２８は、予め指定されたメモリの物理的領域を、従来のセクタ２００（図２）として表している。各セクタ２００は、５１２バイトのユーザデータ領域２０２と、１６バイトの拡張フィールド２０４とからなっている。本発明に基づくオーバヘッドセグメント１８４０〜１８４６は、セクタ２００のユーザデータ領域２０２として予め指定されていた同じメモリ領域を占めている。したがって、従来の拡張フィールド２０４は、本発明に基づく利用可能なメモリ領域１８８０を提供する。好ましい実施の形態においては、このメモリ領域（以下、拡張フィールドという。）１８８０は、スーパオーバヘッド専用ブロック１８００に対応するスーパ仮想論理ブロック１８０２のスーパ仮想論理ブロックアドレス（ＳＶＬＢＡ）を格納するのに用いられる。電源投入時において、拡張フィールド１８８０に格納されている情報は、空間マネージャ９００内の論理アドレスと物理アドレスを関連付けるために用いられる。
【００８８】
ＲＡＭからなる空間マネージャ９００によって消費されるメモリを制限するために、アドレス指定子９２４は、好ましくは、その参照をページレベルに制限し、これにより、コントローラは、特定のオーバヘッドセグメントを、プログラムされたアルゴリズムによって検出することができる。ＳＶＬＢ１８０２内のアドレスによって定義されるユーザデータの新たなＶＬＢが供給されたとき、コントローラは、スーパオーバヘッドフィールドを次のスーパオーバヘッドフィールドにインクリメントし、図１８に示す実施の形態では、個々のオーバヘッドページ１８２０〜１８２８によって表される各スーパオーバヘッドフィールドを順次使用する。実施の形態、例えば図１９に示すように、スーパオーバヘッドフィールド１９０２が２つのオーバヘッドページ１９１０、１９１２から構成される好ましい実施の形態においては、両方のオーバヘッドページ１９１０、１９１２の拡張フィールドは、ＳＶＬＢＡを参照しており、空間マネージャ９００は、スーパオーバヘッドフィールド１９０２の両方のオーバヘッドページ１９１０、１９１２を参照する。
【００８９】
図２０は、スーパブロック法に基づくオーバヘッドデータの格納処理を、順番に示す図である。スーパオーバヘッド専用ブロック２０００内のセグメント列（Segment column）２０２０〜２０２６は、スーパ仮想論理ブロックアドレス２００４を構成する連続したＶＬＢＡ２００６〜２０１４に予め関連付けられている。図２０Ａに示す第１のステップにおいて、「０」のＶＬＢＡ２００６をサポートするオーバヘッドデータ「ＳＶＬＢＡ−ＯＶ０」２０５０は、既に生成されており、第１のオーバヘッドページ２０３２（また、これは、１つのスーパオーバヘッドフィールドを構成している）のオーバヘッドセグメント「０」２０５６に格納される。このオーバヘッドセグメント２０５６に格納されるアドレスとしては、任意に選択され、ここでは、例示的にＶＰＢＡ６７が選択されている。また、新たなオーバヘッドページ２０３２には、下向きの矢印で示すように、前のオーバヘッドページ２０３０からのオーバヘッドデータがコピーされる。なお、現在のオーバヘッドページ２０３２の、ＶＰＢＡアドレスを含む新たなオーバヘッドデータが供給されるオーバヘッドセグメント２０５６には、前のオーバヘッドページ２０３０からのオーバヘッドデータはコピーされない。
【００９０】
図２０Ｂに示す第２のステップにおいて、「１」のＶＬＢＡ２００８をサポートするオーバヘッドデータ「ＳＶＬＢＡ−ＯＶ１」２０５２は、既に生成されており、第２のオーバヘッドページ２０３４のオーバヘッドセグメント「１」２０５８に格納される。新たなオーバヘッドセグメント２０５８に格納されるアドレスとしては、例示的にＶＰＢＡ９２７が選択されている。また、新たなオーバヘッドページ２０３４には、下向きの矢印で示すように、前のオーバヘッドページ２０３２からのオーバヘッドデータがコピーされ、新たなオーバヘッドページ２０３４の最初のオーバヘッドセグメント２０５７には、コピーされたＶＰＢＡ６７が存在している。
【００９１】
図２０Ｃに示す第３のステップにおいて、「１」のＶＬＢＡ２００８の更新をサポートするオーバヘッドデータ「ＳＶＬＢＡ−ＯＶ１」２０５４が再び生成される。また、新たなオーバヘッドページ２０３６には、下向きの矢印で示すように、前のオーバヘッドページ２０３４からのオーバヘッドデータがコピーされ、新たなオーバヘッドページ２０３６の最初のオーバヘッドセグメント２０５９には、コピーされたＶＰＢＡ６７が存在している。なお、新たなオーバヘッドデータ「ＳＶＬＢＡ−ＯＶ１」２０５４は、「１」のＶＬＢＡ２００８用のオーバヘッドデータを格納するのに用いられる第２のセグメント列２０２２のオーバヘッドデータを、更新している。したがって、新たなオーバヘッドセグメント２０６０には、入力オーバヘッドデータが格納されるので、新たなオーバヘッドセグメント２０６０には、前のオーバヘッドセグメント２０５８からのオーバヘッドデータはコピーされない。すなわち、新たなオーバヘッドページ２０３６の新たなオーバヘッドセグメント２０６０には、ＶＰＢＡ９２７はコピーされず、この第３のステップにおいて生成されたオーバヘッドデータ「ＳＶＬＢＡ−ＯＶ１」２０５４から生成されたオーバヘッドデータであるＶＰＢＡ１４が格納される。これらの３つのステップで説明したように、新たに生成されたオーバヘッドデータが格納されるオーバヘッドセグメントを除き、新たなオーバヘッドページには、前のオーバヘッドページからのオーバヘッドデータがコピーされる。
【００９２】
図２１は、スーパブロック法に基づく実施の形態における整理統合処理を説明する図である。上述した実施の形態では、１オーバヘッドページ当たりのオーバヘッドセグメントの数を１２８個としているが、図面を簡単にするために、オーバヘッドページ２１０２のオーバヘッドセグメント２１２０〜２１３４の数を８つとしている。同様に、上述した実施の形態では、１オーバヘッド専用ブロック当たりのオーバヘッドページの数を、好ましい１６個又は３２個としているが、図面を簡単にするために、オーバヘッド専用ブロック２１００のオーバヘッドページ２１０２〜２１１０の数を５つとしている。最後のオーバヘッドページ（以下、スーパオーバヘッドフィールドともいう。）２１１０のオーバヘッドセグメント２１４２にはオーバヘッドデータ「ＯＶ−５」が格納されているので、オーバヘッド専用ブロック２１００は、「フル状態」であるとみなされ、破線で示すように、現在のオーバヘッドセグメント２１２０、２１２２、２１３６、２１３８、２１４０、２１４２、２１３２、２１３４の全ては、新たなオーバヘッド専用ブロック２１７０に整理統合される。オーバヘッドセグメント「ＯＶ−４」２１４０は、古いオーバヘッド専用ブロック２１００内のオーバヘッドデータ「ＯＶ−４」が格納された最後のオーバヘッドセグメントであるので、同じセグメント列内の前のオーバヘッドセグメント２１２８は、廃棄可能となっている。丸で囲まれた現在のオーバヘッドセグメント２１２０、２１２２、２１３６、２１３８、２１４０、２１４２、２１３２、２１３４は、新たなオーバヘッド専用ブロック２１７０の第１のスーパオーバヘッドフィールド（第０のオーバヘッドページ）２１１２に移動される。上述したように、新たなオーバヘッド専用ブロック２１７０に整理統合するオーバヘッドデータは、前のオーバヘッド専用ブロック２１００において格納されていたセグメント列と同じセグメント列にそれぞれ格納され、各セグメント列は、特定のＶＬＢＡを表すオーバヘッドデータ「ＯＶ−０」〜「ＯＶ−７」に予め関連付けられている。新たなオーバヘッド専用ブロック２１７０の第１のスーパオーバヘッドフィールド２１１２は、通常、整理統合処理において現在のオーバヘッドセグメントを格納するための専用であるので、オーバヘッド専用ブロック２１７０に格納できるＶＬＢオーバヘッドの更新の回数は、通常、オーバヘッド専用ブロック２１７０のスーパオーバヘッドフィールド２１１２〜２１１８の数よりも１少ない数となる。
【００９３】
以上、本発明の構成及び動作の原理を容易に理解できるように、特定の実施の形態を多くの特定の詳細とともに説明した。ここで説明した特定の実施の形態及びその詳細は、特許請求の範囲を制限するものではない。本発明の思想及び範囲から逸脱することなく、上述した実施の形態を様々に変形できることは、当業者にとって明らかである。
【図面の簡単な説明】
【図１】  複数のセクタを有する複数のデータブロックからなる従来のフラッシュメモリアレーを示す図である。
【図２】  ユーザデータ領域及びオーバヘッド領域からなる従来のデータセクタを示す図である。
【図３】  仮想論理ブロックを物理データブロックに格納し、及び仮想論理ブロックを読み出すためのマスキング及び連結処理を説明する図である。
【図４】  従来の空間マネージャの構成を示す図である。
【図５】  データ格納時に物理アドレスを定義する従来の一手法を説明するフローチャートである。
【図６】  格納されたデータを読み出し、元の仮想アドレスに再び関連付ける従来の一手法を説明するフローチャートである。
【図７】  本発明に基づき、データ専用ブロックとオーバヘッド専用ブロックに分割されたフラッシュメモリ装置を示す図である。
【図８】  図８Ａは、本発明に基づくオーバヘッド専用ブロックのオーバヘッドページ及びオーバヘッドセグメントを示す図であり、図８Ｂは、本発明に基づくオーバヘッドセグメントを、より詳細に示す図である。
【図９】  本発明に基づく空間マネージャの構成を示す図である。
【図１０】  ブロック法に基づくオーバヘッド専用ブロック内の特定の所定のオーバヘッドページにそれぞれ格納されたＶＬＢＡグループ内の特定のＶＬＢＡをサポートするオーバヘッドデータを示す図である。
【図１１】  ブロック法において、フル状態のオーバヘッド専用ブロック内の全ての現在のセクタを新たなオーバヘッド専用ブロックに整理統合する処理を説明する図である。
【図１２】  ランダム法に基づくオーバヘッドデータの格納を説明する図である。
【図１３】  全ての現在のセクタを新たなオーバヘッド専用ブロックに整理統合する処理を説明する図である。
【図１４】  ハイブリッド法に基づくオーバヘッドデータの格納を説明する図である。
【図１５】  ハイブリッド法に基づくオーバヘッドセグメントの構造の一実施の形態を示す図である。
【図１６】  ハイブリッド法に基づくデータ格納処理の手順を示すフローチャートである。
【図１７】  ハイブリッド法において、フル状態のオーバヘッド専用ブロックを新たなオーバヘッド専用ブロックに整理統合する処理を説明する図である。
【図１８】  スーパブロック法に基づくオーバヘッド専用ブロックの構造及び関連付けを示す図である。
【図１９】  それぞれがスーパオーバヘッドフィールドを有する複数のオーバヘッドページを有するスーパブロック法の実施の形態を示す図である。
【図２０】  スーパブロック法に基づくオーバヘッドデータの格納処理を、３つの連続したステップによって説明する図である。
【図２１】  スーパブロック法において、フル状態のオーバヘッド専用ブロックを新たなオーバヘッド専用ブロックに整理統合する処理を説明する図である。
【図１】
0004782360.tif 000002
【図２】
0004782360.tif 000003
【図３】
0004782360.tif 000004
【図４】
0004782360.tif 000005
【図５】
0004782360.tif 000006
【図６】
0004782360.tif 000007
【図７】
0004782360.tif 000008
【図８】
0004782360.tif 000009
【図９】
0004782360.tif 000010
【図１０】
0004782360.tif 000011
【図１１】
0004782360.tif 000012
【図１２】
0004782360.tif 000013
【図１３】
0004782360.tif 000014
【図１４】
0004782360.tif 000015
【図１５】
0004782360.tif 000016
【図１６】
0004782360.tif 000017
【図１７】
0004782360.tif 000018
【図１８】
0004782360.tif 000019
【図１９】
0004782360.tif 000020
【図２０】
0004782360.tif 000021
【図２１】
0004782360.tif 000022