(57)【要約】フラッシュメモリ装置において、オーバヘッドデータをユーザデータから分離し、オーバヘッドデータをユーザデータから独立してアドレス指定し、プログラミングし、消去できるようにする。フラッシュメモリ装置の不揮発性記憶媒体は、オーバヘッド専用ブロックとデータ専用ブロックとを含む個別にプログラミング可能で個別に消去可能な独立した、個別にアドレス指定可能なメモリブロックにマッピングされる。オーバヘッド専用ブロックは、弁別的にアドレス指定可能な複数のセグメントに基づいてマッピングされる。ＶＬＢＡによって定義されたユーザデーは、フラッシュメモリ内のデータ専用ブロックに格納される。物理アドレスへの相互参照、フラグ、エラー訂正データ等、入力ユーザデータに関連付けて生成されたオーバヘッドデータは、オーバヘッド専用ブロックの各セグメントに格納される。オーバヘッド専用ブロックが消去の対象となると、全ての現在のオーバヘッドセグメントは、新たなオーバヘッド専用ブロックに整理統合され、フル状態となった又は廃棄可能なブロックは消去される。
2004508626.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリ装置にデジタルデータを格納するデータ格納方法において、
ａ．フラッシュメモリ装置内の不揮発性記憶媒体を、複数のデータ専用ブロックと、第１のオーバヘッド専用ブロック及び第２のオーバヘッド専用ブロックを有する複数のオーバヘッド専用ブロックとを含む、個別にアドレス指定可能で、個別にプログラミング可能で、個別に消去可能なメモリブロックにマッピングするステップと、
ｂ．各オーバヘッド専用ブロック内の複数のページが同一の連続するページアドレスの組に基づいてアドレス指定されるように上記複数のオーバヘッド専用ブロックを複数のページにマッピングするステップと、
ｃ．各オーバヘッド内の、物理アドレスレジスタとフラグフィールドとを含む複数のレジスタを有するオーバヘッドセグメントが同一の連続するセグメントアドレスの組に基づいてアドレス指定されるように、上記複数のオーバヘッドページのそれぞれを複数のオーバヘッドセグメントにマッピングするステップと、
ｄ．第１のオーバヘッドページを定義する第１のオーバヘッドページアドレスに関連付けられたユーザデータの第１の論理ブロックを定義する第１の論理ブロックアドレスを含むそれぞれ複数の連続する仮想論理ブロックアドレスに第１のオーバヘッド専用ブロック内の複数の連続するオーバヘッドページアドレスを関連付けるステップとを有するデータ格納方法。
【請求項２】
更に、ａ．ホストから、上記第１の仮想論理ブロックアドレスに基づいて定義された第１のユーザデータの組を入力するステップと、
ｂ．第１の仮想物理ブロックアドレスに基づいて定義された第１のデータ専用ブロックに上記第１のユーザデータの組を格納するステップと、
ｃ．第１のページにおいて、未使用で、欠陥がなく、廃棄可能でもない使用可能なオーバヘッドセグメントのうち、最も下位のセグメントアドレスを有する第１の使用可能なオーバヘッドセグメントを特定するステップと、
ｄ．上記第１の使用可能なオーバヘッドセグメントの物理アドレスレジスタに上記第１のデータ専用ブロックのアドレスを格納するステップとを有する請求項１記載のデータ格納方法。
【請求項３】
上記各オーバヘッドセグメントは、エラー訂正コードを含むことを特徴とする請求項１記載のデータ格納方法。
【請求項４】
更に、上記第１のオーバヘッド専用ブロック内の、使用中で、欠陥がなく、廃棄可能でもない、全ての現在のオーバヘッドセグメントを第２のオーバヘッド専用ブロック内に整理統合するステップを有する請求項１記載のデータ格納方法。
【請求項５】
上記第１のオーバヘッド専用ブロックを第２のオーバヘッド専用ブロック内に整理統合するステップは、
ａ．上記第１のオーバヘッド専用ブロックの第１のオーバヘッドページ内の現在のオーバヘッドセグメントに格納されているデータを上記第２のオーバヘッド専用ブロック内の第１のオーバヘッドアドレスを定義するアドレスと同一のページアドレスによって定義される第２のオーバヘッドページ内の最下位のアドレスを有するセグメントである第２のオーバヘッドページ内の置換オーバヘッドセグメントに移動するステップと、
ｂ．第１のオーバヘッド専用ブロックを消去するステップとを有することを特徴とする請求項４記載のデータ格納方法。
【請求項６】
上記複数の連続するページアドレスを各複数の連続する仮想論理ブロックアドレスに関連付けるステップは、ランダムアクセスメモリを用いる空間マネージャによって実行されることを特徴とする請求項１記載のデータ格納方法。
【請求項７】
更に、ａ．上記フラッシュメモリ装置内の不揮発性関連付けレジスタに論理アドレスを格納するステップと、
ｂ．電源投入時にランダムアクセスメモリを用いる空間マネージャの関連付けレジスタに物理アドレスをロードするステップとを有する請求項６記載のデータ格納方法。
【請求項８】
上記各オーバヘッドセグメント内のフラグフィールドは、使用中フラグ、廃棄可能フラグ、欠陥フラグを含むことを特徴とする請求項２記載のデータ格納方法。
【請求項９】
上記第１の使用可能なセグメントを特定するステップは、第１のページ内の選択オーバヘッドセグメント内の選択フラグを調べるステップを有することを特徴とする請求項８記載のデータ格納方法。
【請求項１０】
上記第１のデータ専用ブロックのアドレスを上記第１の使用可能なオーバヘッドセグメントの物理アドレスレジスタに格納するステップは、該第１の使用可能なオーバヘッドセグメント内の使用中フラグを第２の値に設定することによりオーバヘッドデータが格納されていることを表すステップを有することを特徴とする請求項９記載のデータ格納方法。
【請求項１１】
上記第１のデータ専用ブロックのアドレスを上記第１の使用可能なオーバヘッドセグメントの物理アドレスレジスタに格納するステップは、直前に使用されたオーバヘッドセグメント内の廃棄可能フラグを第２の値に設定することにより直前に使用されたセグメントが廃棄可能なデータを格納していることを表すステップを有し、上記第１の使用可能なセグメントのアドレスは、第１のページ内の直前に使用されたオーバヘッドセグメントを定義するアドレスに連続するアドレスであることを特徴とする請求項１０記載のデータ格納方法。
【請求項１２】
上記整理統合のステップは、第１のオーバヘッド専用ブロック内のページにおけるアドレス指定可能な最も上位のセグメントにオーバヘッドデータを書き込んだ後に実行されることを特徴とする請求項３記載のデータ格納方法。
【請求項１３】
更に、ａ．オーバヘッド専用ブロックを欠陥があるブロックとしてマークするステップと、
ｂ．データ専用ブロックをオーバヘッド専用ブロックとして再指定するステップとを有する請求項１記載のデータ格納方法。
【請求項１４】
フラッシュメモリ装置にデジタルデータを格納するデータ格納方法において、
ａ．フラッシュメモリ装置内の不揮発性記憶媒体を、複数のデータ専用ブロックと、第１のオーバヘッド専用ブロック及び第２のオーバヘッド専用ブロックを有する複数のオーバヘッド専用ブロックとを含む、個別にアドレス指定可能で、個別にプログラミング可能で、個別に消去可能なメモリブロックにマッピングするステップと、
ｂ．上記専用オーバヘッドブロック内の複数のセグメントに物理アドレスレジスタとフラグフィールドとを含むセグメントのセグメントアドレスの組と同一のアドレスを付して、該オーバヘッド専用ブロックのそれぞれを複数の連続するアドレスが付されたオーバヘッドセグメントにマッピングするステップと、
ｃ．第１の仮想論理ブロックアドレスを含む仮想論理アドレスのグループに上記第１のオーバヘッド専用ブロックを関連付けるステップとを有するデータ格納方法。
【請求項１５】
更に、ａ．ホストから、上記第１の仮想論理ブロックアドレスに基づいて定義された第１のユーザデータの組を入力するステップと、
ｂ．上記第１のオーバヘッド専用ブロックにおいて、未使用で、欠陥がなく、廃棄可能でもない使用可能なオーバヘッドセグメントのうち、最も下位のセグメントアドレスを有する第１の使用可能なオーバヘッドセグメントを特定するステップと、
ｃ．第１の仮想物理ブロックアドレスに基づいて定義された第１のデータ専用ブロックに上記第１のユーザデータの組を格納するステップと、
ｄ．上記第１の使用可能なオーバヘッドセグメントの物理アドレスレジスタに上記第１のデータ専用ブロックのアドレスを格納するステップとを有する請求項１４記載のデータ格納方法。
【請求項１６】
更に、上記第１のオーバヘッド専用ブロック内の、使用中で、欠陥がなく、廃棄可能でもない、全ての現在のオーバヘッドセグメントを第２のオーバヘッド専用ブロック内の連続するオーバヘッドセグメントに整理統合するステップを有する請求項１５記載のデータ格納方法。
【請求項１７】
上記第１のオーバヘッド専用ブロックを第２のオーバヘッド専用ブロック内に整理統合するステップは、
ａ．上記第１のオーバヘッド専用ブロックの第１の現在のオーバヘッドセグメントに格納されているデータを上記第２のオーバヘッド専用ブロック内の最下位のアドレスを有する使用可能なオーバヘッドセグメントに移動するステップと、
ｂ．第１のオーバヘッド専用ブロックを消去するステップとを有することを特徴とする請求項１６記載のデータ格納方法。
【請求項１８】
上記整理統合のステップは、第１のオーバヘッド専用ブロック内のアドレス指定可能な最も上位のセグメントにオーバヘッドデータを書き込んだ後に実行されることを特徴とする請求項１７記載のデータ格納方法。
【請求項１９】
上記各オーバヘッドセグメントは、ユーザデータをサポートするエラー訂正データを格納するエラー訂正フィールドを含むことを特徴とする請求項１４記載のデータ格納方法。
【請求項２０】
上記関連付けのステップは、ランダムアクセスメモリを用いる空間マネージャによって実行されることを特徴とする請求項１４記載のデータ格納方法。
【請求項２１】
上記各オーバヘッドセグメント内のフラグフィールドは、使用中フラグ、廃棄可能フラグ、欠陥フラグを含むことを特徴とする請求項１５記載のデータ格納方法。
【請求項２２】
上記第１の使用可能なオーバヘッドセグメントを特定するステップは、上記第１のオーバヘッド専用ブロック内の選択されたオーバヘッドセグメント内の選択されたフラグを調べるステップを有することを特徴とする請求項１５記載のデータ格納方法。
【請求項２３】
更に、使用可能な次のオーバヘッドセグメント内の使用中フラグを第２の値に設定し、該使用可能な次のオーバヘッドセグメントにオーバヘッドデータが格納されていることを示すステップを有する請求項２１記載のデータ格納方法。
【請求項２４】
第１の現在のオーバヘッドセグメントに格納されているデータを第１の使用可能なオーバヘッドセグメントに移動するステップは、
ａ．第１のオーバヘッド専用ブロックを有する選択されたオーバヘッドセグメント内の選択されたフラグを調べるステップと、
ｂ．第２のオーバヘッド専用ブロックを有する選択されたオーバヘッドセグメント内の選択されたフラグを調べるステップとを有することを特徴とする請求項１７記載のデータ格納方法。
【請求項２５】
更に、ａ．上記フラッシュメモリ装置内の不揮発性関連付けレジスタに論理アドレスを格納するステップと、
ｂ．電源投入時にランダムアクセスメモリを用いる空間マネージャの関連付けレジスタに物理アドレスをロードするステップとを有する請求項２０記載のデータ格納方法。
【請求項２６】
更に、ａ．オーバヘッド専用ブロックを欠陥があるブロックとしてマークするステップと、
ｂ．データ専用ブロックをオーバヘッド専用ブロックとして再指定するステップとを有する請求項１４記載のデータ格納方法。
【請求項２７】
フラッシュメモリ装置にデジタルデータを格納するデータ格納方法において、
ａ．フラッシュメモリ装置内の不揮発性記憶媒体を、複数のデータ専用ブロックと、第１のオーバヘッド専用ブロック及び第２のオーバヘッド専用ブロックを有する複数のオーバヘッド専用ブロックとを含む、個別にアドレス指定可能で、個別にプログラミング可能で、個別に消去可能なメモリブロックにマッピングするステップと、
ｂ．複数のオーバヘッド専用ブロックのそれぞれを、オーバヘッドセグメントアドレスのシーケンスと同様に連続的にアドレスが付された複数のオーバヘッドセグメントを有する固定オーバヘッドフィールドと、物理アドレスレジスタを含む複数のレジスタを有する連続的にアドレスが付された複数のオーバヘッドセグメントを有するランダムオーバヘッドフィールドとにマッピングするステップと、
ｃ．第１のオーバヘッド専用ブロックの固定オーバヘッドフィールド内の連続的にアドレスが付された複数のオーバヘッドセグメントを第１の仮想論理ブロックアドレスに関連付けられた第１の固定セグメントを含む連続的にアドレスが付された仮想論理ブロックアドレスの第１のグループに関連付けるステップとを有するデータ格納方法。
【請求項２８】
更に、ａ．オーバヘッド専用ブロックを欠陥があるブロックとしてマークするステップと、
ｂ．データ専用ブロックをオーバヘッド専用ブロックとして再指定するステップとを有する請求項２７記載のデータ格納方法。
【請求項２９】
第１のオーバヘッド専用ブロックの固定オーバヘッドフィールド内の連続的にアドレスが付された複数のオーバヘッドセグメントを第１の仮想論理ブロックアドレスに関連付けられた第１の固定セグメントを含む連続的にアドレスが付された仮想論理ブロックアドレスの第１のグループに関連付けるステップは、ランダムアクセスメモリを用いる空間マネージャによって実行されることを特徴とする請求項２７記載のデータ格納方法。
【請求項３０】
更に、ａ．上記フラッシュメモリ装置内の不揮発性関連付けレジスタに論理アドレスを格納するステップと、
ｂ．電源投入時にランダムアクセスメモリを用いる空間マネージャの関連付けレジスタに物理アドレスをロードするステップとを有する請求項２９記載のデータ格納方法。
【請求項３１】
更に、ａ．ホストから、上記第１の仮想論理ブロックアドレスに基づいて定義された第１のユーザデータの組を入力するステップと、
ｂ．第１の仮想物理ブロックアドレスに基づいて定義された第１のデータ専用ブロックに上記第１のユーザデータの組を格納するステップと、
ｃ．上記第１の仮想論理ブロックアドレスに対応するオーバヘッドデータを上記第１のオーバヘッド専用ブロック内の第１のオーバヘッドセグメントに格納するステップとを有する請求項２７記載のデータ格納方法。
【請求項３２】
上記オーバヘッドデータを上記第１のオーバヘッドセグメントに格納するステップは、
ａ．上記第１のオーバヘッド専用ブロックの固定オーバヘッドフィールド内の第１の固定セグメントを特定するステップと、
ｂ．上記第１の固定セグメントが使用可能であるか否かを判定するステップと、
ｃ．上記第１の固定セグメントが使用可能であるとき、上記第１の仮想論理ブロックアドレスをサポートするオーバヘッドデータを上記第１の固定セグメントに格納するステップと、
ｄ．上記第１の固定セグメントが使用可能ではないとき、上記第１の仮想論理ブロックアドレスをサポートするオーバヘッドデータを上記第１のオーバヘッド専用ブロックのランダムオーバヘッドフィールド内の最下位のアドレスを有する未使用で、欠陥がない第１のランダムオーバヘッドセグメントに格納するステップとを有することを特徴とする請求項３１記載のデータ格納方法。
【請求項３３】
上記第１の固定セグメントが使用可能であるか否かを判定するステップは、該第１の固定セグメント内のフラグを調べるステップを有することを特徴とする請求項３１記載のデータ格納方法。
【請求項３４】
更に、ａ．それぞれ複数のセグメントを有する複数のページに各オーバヘッド専用ブロックのランダムオーバヘッドフィールドをマッピングするステップと、
ｂ．上記ランダムオーバヘッドフィールド内の各ページの最下位のアドレスを有するセグメントを状態セグメントに指定するステップと、
ｃ．上記各状態セグメントを複数のレジスタにマッピングし、更新マップとして機能させるステップを有する請求項３１記載のデータ格納方法。
【請求項３５】
上記第１の仮想論理ブロックアドレスに対応するオーバヘッドデータを第１のランダムオーバヘッドセグメントに格納するステップは、
ａ．上記第１の仮想論理ブロックアドレスをサポートするオーバヘッドデータを格納するために使用された直前のセグメントを特定するステップと、
ｂ．上記直前のセグメントの廃棄可能フラグを第２の値に設定し、該直前のセグメント内のオーバヘッドデータが廃棄可能なデータになったことを示すステップと、
ｃ．上記第１のランダムオーバヘッドセグメントの使用中フラグを第２の値に設定し、該第１のランダムオーバヘッドセグメントが使用中になったことを示すステップとを有することを特徴とする請求項３１記載のデータ格納方法。
【請求項３６】
上記更新マップは、上記第１のオーバヘッド専用ブロックの固定オーバヘッドフィールド内の各セグメントに対応する１つのレジスタを有することを特徴とする請求項３４記載のデータ格納方法。
【請求項３７】
更に、上記第１のオーバヘッド専用ブロックがフル状態となったとき、該第１のオーバヘッド専用ブロック内の現在のオーバヘッドセグメントを第２のオーバヘッド専用ブロックに整理統合するステップを有する請求項２７記載のデータ格納方法。
【請求項３８】
上記現在のオーバヘッドセグメントを整理統合するステップは、
ａ．上記第２のオーバヘッド専用ブロックの固定オーバヘッドフィールド内の第２のオーバヘッドセグメントを上記第１の仮想論理ブロックアドレスに関連付けるステップと、
ｂ．上記第１のオーバヘッドセグメント内のデータを上記第２のオーバヘッドセグメントにコピーするステップとを有することを特徴とする請求項３７記載のデータ格納方法。
【請求項３９】
フラッシュメモリ装置にデジタルデータを格納するデータ格納方法において、
ａ．フラッシュメモリ装置内の不揮発性記憶媒体を、複数のデータ専用ブロックと、第１のオーバヘッド専用ブロック及び第２のオーバヘッド専用ブロックを有する複数のオーバヘッド専用ブロックとを含む、個別にアドレス指定可能で、個別にプログラミング可能で、個別に消去可能なメモリブロックにマッピングするステップと、
ｂ．複数のオーバヘッド専用ブロックのそれぞれを、上記第１のオーバヘッド専用ブロック内の第１のスーパオーバヘッドフィールドを含む複数のスーパオーバヘッドフィールドにマッピングするステップと、
ｃ．複数のスーパオーバヘッドフィールドのそれぞれを、それぞれが物理アドレスレジスタを含む複数のレジスタを有する連続的にアドレスが付された同数のオーバヘッドセグメントにマッピングするステップと、
ｄ．連続的な仮想論理ブロックアドレスによって定義された第１のスーパ仮想論理ブロックアドレスを上記第１のオーバヘッド専用ブロックに関連付けるステップと、
ｅ．上記第１のスーパ仮想論理ブロックアドレス内の第１の仮想論理ブロックアドレスを上記第１のオーバヘッド専用ブロック内の第１のオーバヘッドセグメントアドレスに関連付けるステップとを有するデータ格納方法。
【請求項４０】
更に、ａ．オーバヘッド専用ブロックを欠陥があるブロックとしてマークするステップと、
ｂ．データ専用ブロックをオーバヘッド専用ブロックとして再指定するステップとを有する請求項３９記載のデータ格納方法。
【請求項４１】
上記第１のスーパ仮想論理ブロックアドレスを第１のオーバヘッド専用ブロックに関連付けるステップは、ランダムアクセスメモリを用いる空間マネージャによって実行されることを特徴とする請求項３９記載のデータ格納方法。
【請求項４２】
更に、ａ．上記フラッシュメモリ装置内の不揮発性関連付けレジスタに論理アドレスを格納するステップと、
ｂ．電源投入時にランダムアクセスメモリを用いる空間マネージャの関連付けレジスタに物理アドレスをロードし、論理アドレスを該ランダムアクセスメモリを用いる空間マネージャ内の物理アドレスに関連付けるステップを有する請求項４１記載のデータ格納方法。
【請求項４３】
上記不揮発性の関連付けレジスタは、オーバヘッド専用ブロックのスーパオーバヘッドフィールドの拡張フィールド内に設けられていることを特徴とする請求項４２記載のデータ格納方法。
【請求項４４】
更に、ａ．ホストから、上記第１の仮想論理ブロックアドレスに基づいて定義された第１のユーザデータの組を入力するステップと、
ｂ．第１の仮想物理ブロックアドレスに基づいて定義された第１のデータ専用ブロックに上記第１のユーザデータの組を格納するステップと、
ｃ．上記第１の仮想論理ブロックアドレスに対応するオーバヘッドデータを上記第１のスーパオーバヘッドフィールド内の第１のオーバヘッドセグメントアドレスによって定義された第１のオーバヘッドセグメントに格納するステップとを有する請求項３９記載のデータ格納方法。
【請求項４５】
上記オーバヘッドデータを格納するステップは、上記第１のオーバヘッド専用ブロック内の先のスーパオーバヘッドフィールドから上記第１のスーパオーバヘッドフィールドにインクリメントするステップの後に実行されることを特徴とする請求項４４記載のデータ格納方法。
【請求項４６】
上記オーバヘッドデータを格納するステップは、上記第１のオーバヘッドセグメント内の使用中フラグを第２の値に設定し、該第１のオーバヘッドセグメント内にオーバヘッドデータが格納されたことを示すステップを有することを特徴とする請求項４４記載のデータ格納方法。
【請求項４７】
上記オーバヘッドデータを格納するステップは、
ａ．上記第１の仮想論理ブロックアドレスをサポートするオーバヘッドデータを格納するために使用された第１のオーバヘッド専用ブロック内の直前のセグメントを特定するステップと、
ｂ．上記直前のセグメントの廃棄可能フラグを第２の値に設定し、該直前のセグメント内のオーバヘッドデータが廃棄可能なデータになったことを示すステップとを有することを特徴とする請求項４６記載のデータ格納方法。
【請求項４８】
更に、上記第１のオーバヘッド専用ブロックの最後のスーパオーバヘッドフィールドにオーバヘッドデータが格納されると、上記第１のオーバヘッド専用ブロック内の現在のオーバヘッドセグメントを第２のオーバヘッドセグメントに整理統合するステップを有する請求項３９記載のデータ格納方法。
【請求項４９】
上記現在のオーバヘッドセグメントを整理統合するステップは、
ａ．上記第１のオーバヘッド専用ブロック内の第１のオーバヘッドセグメントアドレスに基づいて第１の現在のオーバヘッドセグメントを特定するステップと、
ｂ．上記第２のオーバヘッド専用ブロックの第１のスーパオーバヘッドフィールド内の第１のオーバヘッドセグメントアドレスによって定義された第２のオーバヘッドセグメントに上記第１の現在のオーバヘッドセグメント内のデータをコピーするステップとを有することを特徴とする請求項４８記載のデータ格納方法。
【請求項５０】
複数の物理ブロックアドレスによって弁別的に定義される個別にアドレス指定可能で、個別にプログラミング可能で、個別に消去可能な独立した複数の不揮発性物理メモリブロックを有し、ユーザデータを格納するフラッシュメモリデバイスにおいて、
ａ．ユーザデータを格納するための複数のデータ専用ブロックと、
ｂ．第１のデータ専用ブロック及び第２のデータ専用ブロックを含むオーバヘッドデータを格納するための複数のオーバヘッド専用ブロックとを備えるフラッシュメモリデバイス。
【請求項５１】
上記各オーバヘッド専用ブロックは、同一のページアドレスのシーケンスに基づく個別にアドレス指定可能な複数のオーバヘッドページを有することを特徴とする請求項５０記載のフラッシュメモリデバイス。
【請求項５２】
上記各オーバヘッドページは、複数の独立したオーバヘッドセグメントを含む個別にアドレス指定可能で個別にプログラミング可能な複数のセグメントを有することを特徴とする請求項５１記載のフラッシュメモリデバイス。
【請求項５３】
上記複数の独立したオーバヘッドセグメントは、それぞれユーザデータの仮想論理ブロックの１つをサポートし、オーバヘッドデータを格納するために使用され、該各オーバヘッドセグメントは、
ａ．対応するユーザデータを特定する物理アドレスを格納する物理アドレスレジスタと、
ｂ．フラグフィールドとを備えることを特徴とする請求項５２記載のフラッシュメモリデバイス。
【請求項５４】
第１の仮想論理ブロックアドレスをサポートするように生成されたオーバヘッドデータが第１のオーバヘッド専用ブロックに格納されるように、第１の仮想論理ブロックアドレスを含む仮想論理ブロックアドレスの第１のグループが第１のオーバヘッド専用ブロックに割り当てられることを特徴とする請求項５３記載のフラッシュメモリデバイス。
【請求項５５】
上記仮想論理ブロックアドレスの第１のグループ内の連続的な仮想論理ブロックアドレスは、第１のオーバヘッド専用ブロック内の第１のオーバヘッドページに関連付けられた第１の仮想論理ブロックアドレスを含む、該第１のオーバヘッド専用ブロック内の連続的にアドレスが付されたオーバヘッドページアドレスにそれぞれ関連付けられ、該第１の仮想論理ブロックアドレスをサポートするオーバヘッドデータが第１のオーバヘッドページのオーバヘッドセグメントに格納されることを特徴とする請求項５４記載のフラッシュメモリデバイス。
【請求項５６】
上記複数のオーバヘッド専用ブロックは、連続的にアドレスが付された複数のオーバヘッドセグメントを有する固定オーバヘッドフィールドと、連続的にアドレスが付された複数のオーバヘッドページを有するランダムオーバヘッドフィールドとを備えることを特徴とする請求項５４記載のフラッシュメモリデバイス。
【請求項５７】
上記第１のオーバヘッド専用ブロックの固定オーバヘッドフィールド内の連続的にアドレスが付されたオーバヘッドページを有する連続的にアドレスが付されたセグメントは、連続的にアドレスが付された仮想論理ブロックアドレスにそれぞれ関連付けられていることを特徴とする請求項５６記載のフラッシュメモリデバイス。
【請求項５８】
上記第１のオーバヘッド専用ブロックのランダムオーバヘッドフィールド内の第１のオーバヘッドページ内の連続的にアドレスが付されたオーバヘッドページを含む連続的にアドレスが付された複数のセグメントは、上記第１のオーバヘッドページ内の複数のセグメントのセグメントアドレスのうち、最下位のセグメントアドレスに基づいて定義された状態セグメントと、複数のオーバヘッドセグメントとを含むことを特徴とする請求項５７記載のフラッシュメモリデバイス。
【請求項５９】
上記各オーバヘッド専用ブロックは、第１のスーパオーバヘッドフィールドを含む複数のスーパオーバヘッドフィールドを備え、該スーパオーバヘッドフィールドは、整数個のページを有し、上記第１のオーバヘッド専用ブロック内の各スーパオーバヘッドフィールドは、同数のページを有し、上記第１のスーパオーバヘッドフィールドの連続するオーバヘッドセグメントは、第１のスーパブロックを有する連続的にアドレスが付された仮想論理ブロックアドレスにそれぞれ割り当てられることを特徴とする請求項５４記載のフラッシュメモリデバイス。
【請求項６０】
更に、当該フラッシュメモリデバイスの動作を調整及び制御するコントローラを備える請求項５０記載のフラッシュメモリデバイス。
【請求項６１】
更に、仮想アドレスと物理アドレスとを関連付ける複数の関連付けフィールドを有するランダムアクセスメモリを用いた空間マネージャを備える請求項５０記載のフラッシュメモリデバイス。
【請求項６２】
上記空間マネージャは、複数の状態フラグを有するフラグレジスタを備えることを特徴とする請求項６１記載のフラッシュメモリデバイス。
【請求項６３】
更に、スタートアップ時に不揮発性メモリ領域から上記空間マネージャにデータをロードするロード手段を備える請求項６２記載のフラッシュメモリデバイス。
【請求項６４】
更に、リセットコマンドが発せられたとき、上記空間マネージャにデータをロードするロード手段を備える請求項６２記載のフラッシュメモリデバイス。
【請求項６５】
更に、当該フラッシュメモリデバイス内に格納されるユーザデータに対応するエラー訂正データを生成するエラー訂正データ生成手段を備える請求項５０記載のフラッシュメモリデバイス。
【請求項６６】
更に、既存のオーバヘッド専用ブロックが機能しなくなったとき、上記データ専用ブロックをオーバヘッド専用ブロックとして機能させるように再指定する再指定手段を備える請求項５０記載のフラッシュメモリデバイス。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、フラッシュメモリ装置に関する。詳しくは、本発明は、データとオーバヘッドデータの記憶領域を分離するフラッシュメモリアレーのマッピングに関する。
【０００２】
【従来の技術】
フラッシュメモリは、電気的に書込可能な不揮発性デジタルメモリ媒体である。フラッシュメモリは、不揮発性であるため、メモリ内に記憶されているデジタルデータを保持するための保持電圧（ｓｕｓｔａｉｎｅｄ ｖｏｌｔａｇｅ）を必要としない。フラッシュメモリセルは、通常、フローティングゲートに電荷を蓄積して２進状態システムの第１の論理状態を表し、蓄積電荷を放電して第２の論理状態を表す。フラッシュメモリセルは、通常、書込動作、読出動作及び消去動作をサポートしている。フラッシュメモリは、従来の回転式磁気記録媒体と同様に、不揮発性の記憶媒体である。すなわち、フラッシュメモリに記憶されたデータは、電源を切っても保持される。これは、例えば、デジタル「フィルム」全体がカメラから取り出され、新たなフィルムに入れ替えられるデジタルカメラ（ｄｉｇｉｔａｌ ｐｈｏｔｏｇｒａｐｈｙ）のような様々な応用において有用である。フラッシュ型のデジタルメモリ装置をホストのカメラから取り出しても、メモリに記憶されているデータは消えない。
【０００３】
フラッシュメモリ技術の進歩に伴い、様々な用途が実現されている。フラッシュメモリの分野では、特に、例えばホストコンピュータシステム又は他のホストデジタルシステムに接続されたハードディスクドライブ又はフロッピディスクドライブ等の従来の回転式磁気記録媒体のマスストレージ機能をエミュレートする応用例が広く受け入れられている。ハードディスクドライブ及びフロッピディスクドライブは、フラッシュメモリ技術では生じない幾つかの問題を有している。先ず、ハードディスクドライブ及びフロッピディスクドライブは、例えば電動モータ、スピンドルシャフト、読出／書込ヘッド、回転磁気ディスク等の多くの可動部品を備えている。これらの部品のために信頼性に問題が生じ、ハードディスクドライブやフロッピディスクドライブは、落下又は衝突による振動及び衝撃により故障しやすい。次に、モータにより駆動されるディスクドライブは、消費電力が大きく、このため、バッテリの充電から次の充電までの動作時間を実質的に短くしている。最後に、ハードディスク又はフロッピディスクに記録されたデータへのアクセス速度が比較的遅いという問題もある。
【０００４】
一方、フラッシュメモリ装置は、これらの回転式の記録ディスクに対して多くの利点を有している。殆どのフラッシュメモリ装置は、可動部品を有しておらず、このため信頼性が高い。更に、フラッシュメモリ装置の構造は簡単であるため、フラッシュメモリ装置は、ハードディスクドライブやフロッピディスクドライブの場合であれば深刻な結果を招くような環境条件及び物理的誤操作にも耐えることができる。また、一般的に、ユーザは、フラッシュメモリ装置に記憶されているデータに非常に高速にアクセスすることができる。更に、殆どのフラッシュメモリ装置の消費電力は、ハードディスクドライブ及びフロッピディスクドライブの消費電力よりも著しく少ない。
【０００５】
【発明が解決しようとする課題】
例えばハードディスクドライブ等の回転式磁気記録媒体が市場に浸透し、汎用的に用いられているため、市場のシェア獲得を模索するより高性能な処理又はデバイスも、既存のソフトウェア及びオペレーティングシステムに互換性を有する必要がある。フラッシュメモリ技術は、大容量記憶媒体に適しているが、従来のフラッシュメモリのアーキテクチャは、例えばハードディスクドライブ又はフロッピディスク等の従来のデータ記憶媒体に対して、利点と欠点の両方を有している。フラッシュメモリデバイス及び装置に共通する欠点の１つは、フラッシュメモリデバイス及び装置では、ハードディスクドライブ及びフロッピディスクドライブによって実行されているアドレス指定、記録、読出の処理を再現できない点にある。市場における互換性は重要であり、これらの処理を再現し、既存のオペレーティングシステムとの互換性を実現する装置又は処理は、殆どの場合、フラッシュメモリ装置自体に組み込む必要がある。従来の技術との互換性を実現する手法としては、後に詳細に説明するように、フラッシュメモリを、従来のハードディスクドライブのセクタと同様の記憶容量及びアーキテクチャと同じ記憶容量及びアーキテクチャを有するセクタに分割する手法がある。
【０００６】
更に、フラッシュメモリ技術には、フラッシュメモリにおいては、現在データを格納しているフラッシュメモリセルのセクタに対しては書込動作を行えないという制約がある。ディスクドライブでは、既にデータが格納されている領域にデータを上書きすることができるが、フラッシュメモリセルのセクタは、新たなデータを書き込む前に、先のデータを消去する必要がある。このような消去が必要なために、同じセクタに対する連続した書込動作間に遅延が生じる。
【０００７】
更に、ハードディスクでは、装置の性能を損なうことなく、同じセクタに対して、仮想的に無限回の消去及び上書を行うことができる。一方、フラッシュメモリ装置では、セクタへの書込及び消去サイクルの度に、セクタの性能が劣化する。通常、フラッシュメモリセルのセクタを消去するために必要な電圧は、フローティングゲートを保護している絶縁層を劣化させる。消去動作を繰り返すことにより、絶縁層の絶縁機能が失われ、フローティングゲート上の束縛電子（ｂｏｕｎｄ ｅｌｅｃｔｒｏｎ）が放出される。フローティングゲートが効果的に電荷を保持できなくなると、フラッシュメモリ又はフラッシュメモリ内の幾つかの特定のセクタは動作不能となる。高度な消去プログラムにより、消去動作の結果生じる劣化の問題を改善することができるが、この問題は完全に解消されるわけではない。更に、高度な消去プログラムをロードし、実行するには時間がかかり、消去動作自体に遅延を生じさせる。また、保護消去プログラム（ｐｒｏｔｅｃｔｉｖｅ ｅｒａｓｅ ｐｒｏｇｒａｍ）を採用しないと、消去の結果生じる劣化が加速され、フラッシュメモリセルの寿命が実質的に短くなる。
【０００８】
消去−書込サイクルを有限回繰り返した後には、フラッシュメモリセルが使用できなくなるという消耗特性（ｗｅａｒｉｎｇ−ｏｕｔ ｐｒｏｐｅｒｔｙ）のために、通常のフラッシュメモリ装置におけるデータ格納手順では、累積的なゲートの劣化を極力避け、フラッシュメモリセルの寿命を長くする必要がある。フラッシュメモリセルの劣化を遅くする一手法としては、同じセクタへの書込及び消去動作の繰返し頻度を低減するという手法がある。これは、殆どの場合、消耗均等化プログラム（ｗｅａｒ−ｌｅｖｅｌｉｎｇ ｐｒｏｇｒａｍ）によって実現されている。消耗均等化プログラムは、セクタの使用を調整し、フラッシュメモリセルの各領域が、それぞれ同じ回数だけ消去されるようにし、それぞれが均等な速度で消耗するようにするものである。更に、フラッシュメモリにおいて連続するセクタに巡回的にデータを格納することにより、先にデータを格納したセクタの消去を適切な時期に行うよう延期することができ、これにより消去処理により生じる不要な遅延を回避することができる。
【０００９】
このように、通常のフラッシュメモリ装置によって実現されているデータ格納手順は、可動部品がなく、電力消費量が少ないという観点から、ハードディスク又はフロッピディスクより優れているが、フラッシュメモリ装置には、解決しなくてはならない問題がある。
【００１０】
従来のフラッシュメモリセルのアーキテクチャを図１に示す。フラッシュメモリアレー１００は、通常のフラッシュメモリデバイスにおける不揮発性大容量記憶素子として機能する。フラッシュメモリアレー１００は、ユーザデータ及びオーバヘッドデータを格納する複数のデータブロック１０２〜１０６に分割されている。各データブロック１０２〜１０６には、便宜的に、０〜（Ｍ−１）のラベルが付されている。ここで、Ｍはデータブロック１０２〜１０６の総数を表す。通常、各データブロック１０２〜１０６は、それぞれ選択的にプログラミング及び消去することができる。各データブロック１０２〜１０６は、複数のセクタからなり、これらのセクタは、容量及び多くのアーキテクチャの特徴の観点から、回転式記録ディスクのセクタを模倣している。多くの場合、各データブロック１０２〜１０６は、それぞれ１６個のセクタ、例えば０から１５までの番号が付されたセクタ１１２〜１１６を有する。セクタの数は可変であるため、図１では、各データブロック１０２〜１０６のセクタ数をＮとし、各セクタに０〜（Ｎ−１）の番号を付している。
【００１１】
各データブロック１０２〜１０６は、固有の仮想ブロックアドレス（Ｖｉｒｔｕａｌ Ｐｈｙｓｉｃａｌ Ｂｌｏｃｋ Ａｄｄｒｅｓｓ：以下、ＶＰＢＡという。）により定義される。仮に、物理データブロック内のセクタ数を１６とし、各セクタに０〜１５の番号が付されているとすると、セクタは、データブロックＶＰＢＡ及びセクタ番号からなる物理ブロックアドレス（Ｐｈｙｓｉｃａｌ Ｂｌｏｃｋ Ａｄｄｒｅｓｓ：以下、ＰＢＡという。）により定義される。例えば、データブロック１０６が仮想物理ブロックアドレス（ＶＰＢＡ）１０２４により定義されているとすると、第１５セクタは、物理ブロックアドレス（ＰＢＡ）１０２４：１５により定義される。
【００１２】
図２は、従来の個々のセクタ２００のデータ構成を示している。セクタ２００は、図１に示す各セクタ１１２〜１３６の１つを例示的に示している。従来のセクタ２００は、ユーザデータを格納するためのデータフィールド２０２と、オーバヘッドデータを格納するための拡張フィールド２０４とを有する。従来のフラッシュメモリにおいては、データフィールド２０２と拡張フィールド２０４は同じセクタの一部であるため、ユーザデータとオーバヘッドデータを別々に消去するような処理には大きな制約があった。この技術的制約により、セクタレベル以下の選択的な消去は行うことができなかった。すなわち、例えばデータフィールド２０２又は拡張フィールド２０４等のセクタの下位部分は、個別に消去することができなかった。
【００１３】
図２に示すように、データフィールド２０２は、通常、５１２バイトからなり、このバイト数は、市販されているハードディスクドライブ又はフロッピディスクドライブにおける記録セクタ長に対応している。拡張フィールド２０４は、通常、合計１６バイトからなり、可変サイズの複数のフィールド又はレジスタ２０６〜２１２から構成され、オーバヘッドデータを格納する。フラッシュメモリのセクタ２００は、ユーザデータフィールド２０２と拡張フィールド２０４の両方を有することにより、ディスクドライブ等の回転式データ記録媒体において一般的に見られるデータ記憶領域のセクタをエミュレートしている。エラー訂正コード（Ｅｒｒｏｒ Ｃｏｒｒｅｃｔｉｏｎ Ｃｏｄｅ：以下、ＥＣＣという。）フィールド２０６には、周知のＥＣＣを用いて生成されたＥＣＣデータが格納される。特定のＥＣＣフィールド２０６に格納されるＥＣＣデータは、同じセクタ内の対応するデータフィールド２０２に格納されているユーザデータに関するエラー検出に用いられる。ＥＣＣフィールド２０６は、通常４バイトで構成されている。論理ブロックアドレス（Ｌｏｇｉｃａｌ Ｂｌｏｃｋ Ａｄｄｒｅｓｓ：以下、ＬＢＡという。）フィールド２０８は、データフィールド２１０に格納されているデータに関連付けられている論理ブロックアドレス（ＬＢＡ）又は仮想論理ブロックアドレス（Ｖｉｒｔｕａｌ Ｌｏｇｉｃａｌ Ｂｌｏｃｋ Ａｄｄｒｅｓｓ：以下、ＶＬＢＡという。）を格納し、通常、後に詳細に説明するように、関連付けの目的で、２バイトから構成されている。フラグフィールド２１０は、ブロックに欠陥があるか否か、ブロックが使用中であるか未使用であるか、ブロックに格納されているデータが現在のデータであるか、古い不要な（ｏｂｓｏｌｅｔｅ）データであるかを示す複数のフラグを格納するために用いられる。フラグフィールド２１０は、通常１バイトである。オプション予備オーバヘッドビット（ｏｐｔｉｏｎａｌ ｓｐａｒｅ ｏｖｅｒｈｅａｄ ｂｉｔｓ）のフィールド２１２は、通常、拡張フィールド２０４内の未使用の記憶領域から構成されている。
【００１４】
図３は、従来のフラッシュメモリ装置におけるデータ格納処理を説明する図である。ホストデジタルシステムは、仮想論理ブロックアドレスが１７で定義されるユーザデータ３００をフラッシュメモリ装置に供給する。ＶＬＢＡは、通常、ホストデジタルシステムによって割り当てられる。仮想論理ブロックのユーザデータ３００は、構成要素である論理ブロック（ｃｏｍｐｏｎｅｎｔ ｌｏｇｉｃａｌ ｂｌｏｃｋ）３１０〜３１６のデータに分割され、各論理ブロック３１０〜３１６には、個別のアドレス３０２〜３０８が付されている。各論理ブロック３１０〜３１６は、フラッシュメモリのセクタ２００のユーザデータ領域２０２の記憶容量に等しい、すなわち５１２バイトのユーザデータを格納する。上述のように、各セクタ１１２〜１３６は、それぞれ固有の物理ブロックアドレス（ＰＢＡ）によって定義されている。
【００１５】
ＰＢＡによって定義されるセクタの記憶容量は、ＬＢＡによって定義されるユーザデータの量に等しい。仮想論理ブロック３００は、複数の論理ブロック３１０〜３１６から構成されている。理想的には、仮想論理ブロック３００を構成する論理ブロック３１０〜３１６の数は、物理データブロック３２０を構成するセクタ３２２〜３２８の数に等しい。したがって、仮想物理アドレス（ＶＰＢＡ）によって定義されるメモリの物理データブロックは、ユーザデータの仮想論理ブロックアドレス（ＶＬＢＡ）によって表されるデータ量に等しい記憶容量を有する。この具体例では例示的に１７としている仮想論理ブロックアドレス（ＶＬＢＡ）によって定義されている入力ユーザデータ３００の１つの仮想論理ブロックは、この具体例では例示的に１３４としている仮想物理ブロックアドレス（ＶＰＢＡ）によって定義されているフラッシュメモリの１つの物理データブロックに格納される。
【００１６】
１つのアドレスの論理データを異なるアドレスの物理メモリに格納する理由は、フラッシュメモリ装置と従来のディスク型メモリの違いに由来する。従来の回転式磁気記録媒体においては、更新されるデータは古いデータに上書きされるため、ＬＢＡとＰＢＡの関係は不変である。一方、フラッシュメモリでは、上述のように、書込及び消去を繰り返すことによりフラッシュメモリの寿命が短くなるため、通常、消耗均等化プログラムが採用され、これにより、フラッシュメモリ内の全ての物理的データ格納領域が均等に使用されるようにされている。この管理アルゴリズムは、元の物理データブロックに戻るまでに、全ての物理ブロックを巡回するものであり、これにより全ての物理データブロックが均等な割合で使用され、すなわち均等に消耗する。一方、論理アドレスは、他の全てのＶＬＢＡを巡回的に使用することなく、更新又は再使用することができる。したがって、再使用された論理ブロックアドレスによって定義されているデータは、通常、同じくその論理ブロックアドレスによって定義されていた先に格納されているデータとは異なる物理セクタに格納される。
【００１７】
論理ブロック３１０〜３１６のデータから構成されている仮想論理ブロック３００のデータは、共通のＶＬＢＡ、この具体例では「１７」と、０〜１５の番号が付された連続する論理ブロックのオフセットとによって定義されている。すなわち、論理ブロックアドレス３０２〜３０８には、「１７：０」〜「１７：１５」の番号が付されている。データブロック内の連続するセクタ３２２〜３２８は、同様に、通常０〜１５の番号が付されたＰＢＡオフセットと、共通のＶＰＢＡ、この具体例では「１３４」とによって同様に定義されている。すなわち、ＶＰＢＡとＰＢＡオフセットの組合せにより、各セクタに対して固有の（ＰＢＡ）、すなわち物理ブロック３１０〜３１６のアドレスを定義している。上述のように、各論理ブロック３１０〜３１６のデータ量は、物理セクタ３２２〜３２８のデータ量に等しい。
【００１８】
６４メガビットのメモリは、通常、１０２４個の物理データブロック１０２〜１０６に相当する記憶容量を有し、したがって、１０２４個のＶＬＢに対応するデータを格納することができる。１０２４個の物理データブロックは、１０２４個の仮想物理データブロックアドレスによって定義され、１０２４個の仮想論理ブロックは、１０２４個の仮想論理ブロックアドレスによって定義される。１０２４個の可能なアドレスを定義するためには、１０ビットのレジスタが必要となる。したがって、６４メガビットのフラッシュメモリ装置においては、仮想論理ブロックアドレス又は仮想物理ブロックアドレスを定義するために、少なくとも１０ビットを専用に使用する必要がある。したがって、一時的ＬＢＡレジスタ（Ｔｅｍｐｏｒａｒｙ ＬＢＡ Ｒｅｇｉｓｔｅｒ）３４０（図３）等のＬＢＡフィールドは、上位レジスタであるＶＬＢＡフィールド３４２と、下位レジスタであるＬＢＡオフセットフィールド３４４のように、概念的に２つのレジスタに分割できる。一時的ＬＢＡレジスタ３４０全体の長さは、通常２バイトであるが、この長さは、必要に応じて更に長くしてもよい。上述のように、ＶＬＢＡフィールド３４２のために少なくとも１０ビットを使用する必要があり、ＬＢＡオフセットレジスタ３４４のために少なくとも４ビットを使用する必要がある。２バイト（１６ビット）のレジスタにおける残る２ビットは、アーキテクチャに応じて、又はコンピュータ技術者の判断で使用できる。
【００１９】
ＬＢＡとＰＢＡの関係は随時変化するため、高速にデータを読み出すためには、殆どの場合、図４に示すように、空間マネージャ（Ｓｐａｃｅ Ｍａｎａｇｅｒ）４００を用いる必要がある。空間マネージャ４００は、殆どの場合、揮発性ＲＡＭメモリからなり、データのＬＢＡと、最近に更新された論理ブロックデータを格納するセクタのＰＢＡとの関係を示す情報を保持する。この関係を示す情報により、ホストデジタルシステムは、論理ブロックアドレスに基づいてデータを後で読み出すことができる。入力データに関連付けて利用可能な所定のＶＬＢＡ４６０〜４６８の組は、一連の関連付けフィールド４５０〜４５８に順次割り当てられる。各関連付けフィールド４５０〜４５８は、ＰＢＡレジスタ４０８を有し、ＰＢＡレジスタ４０８は、物理データブロックのアドレスを格納するＶＰＢＡレジスタ４１０と、ＰＢＡオフセット４１２とから構成される。ＰＢＡレジスタ４０８は、上述した一時的ＬＢＡレジスタ３４０と同様、通常２バイトで構成されている。１０２４個のデータブロックを有する６４メガビットのフラッシュメモリ装置では、１０ビットが必要である。データブロックは、通常１６個のセクタを有するため、ＰＢＡオフセット４１２を表すには、通常４ビットが必要である。２バイトのＰＢＡフィールド４０８の残りの２ビットは、どのフィールドに含まれてもよく、又はアーキテクチャに応じて特別に使用してもよい。図１に示す具体例では、フラッシュメモリ内の物理データブロックの総数はＭであり、各物理データブロックには、０〜（Ｍ−１）の番号が付されている。図４では、同様に０〜（Ｍ−１）の番号が付されたＭ個の連続する論理アドレス４６０〜４６８が示されており、これらの論理アドレス４６０〜４６８は、仮想物理ブロックアドレスを格納するために用いられる複数の関連付けフィールド４５０〜４５８に対応している。すなわち、空間マネージャ４００内の潜在的なＶＬＢＡ４６０〜４６８の数は、フラッシュメモリセル内の潜在的な物理ブロックアドレスの数に一致している。このため、空間マネージャ４００は、通常、物理アドレスと論理アドレスの関連付けを物理データブロックレベルまでしか行わない。これは、空間マネージャ４００が揮発性メモリを使用し、より下位のレベルまで関連付けを行えば、より多くの不揮発性メモリを使用しなければならないからである。
【００２０】
上述のように、空間マネージャ４００は、殆どの場合、揮発性ＲＡＭアレーとして実現されている。多くの場合、空間マネージャ４００は、ＳＲＡＭセルからなる。なお、ＳＲＡＭセルに代えて、ＤＲＡＭセルを用いてもよい。ＳＲＡＭ又はＤＲＡＭに記憶されている情報には高速にアクセスすることができるため、空間マネージャ４００は、論理アドレスと物理アドレスとを高速に関連付けることができる。
【００２１】
揮発性の各関連付けフィールド４５０〜４５８は、欠陥ブロックフラグ（Ｄｅｆｅｃｔｉｖｅ Ｂｌｏｃｋ Ｆｌａｇ）４２０と、廃棄可能データフラグ（Ｏｂｓｏｌｅｔｅ Ｄａｔａ Ｆｌａｇ）４３０と、使用中ブロックフラグ（Ｕｓｅｄ Ｂｌｏｃｋ Ｆｌａｇ）４４０とを含む複数のフラグを有している。各フラグ４２０、４３０、４４０は、通常、第１及び第２のバイナリ状態を表すことができる単一のビットから構成されている。欠陥ブロックフラグ４２０を第１の値から第２の値に設定することにより、物理データブロックに欠陥があることが示される。欠陥があるとマークされた物理データブロックは、以降のデータ格納において使用されないようになる。使用中ブロックフラグ４４０が設定されると、このフラグにより、関連するＶＰＢＡレジスタに格納されているＶＰＢＡによって示される物理アドレスにデータが現在格納されていることが示される。格納されたデータは、現在のデータ及び廃棄可能なデータのいずれかであり、これは、それぞれ廃棄可能データフラグ４３０の第１及び第２のバイナリ状態によって示される。消去動作は、通常、対象となるデータが廃棄可能なデータである場合にのみ実行される。仮想論理ブロックアドレスによって定義されているデータが更新されると、新たなデータは、新たな物理データブロック１０２〜１０６に格納され、適切な関連付けフィールド４５０〜４５８のＶＰＢＡレジスタに新たなＶＰＢＡが格納される。データブロックにおける連続するセクタは、通常、連続的なデータ格納動作によって、１つのセクタに同時に格納される。ここで、ＶＬＢが部分的にしかデータを含まず、例えば、１６個の論理ブロックのうち、８個の論理ブロックのみが実際のユーザデータを格納している場合、コントローラは、通常、この事実に関わらず、ＶＬＢの１６個全ての論理ブロックを物理ブロックの１６個の連続するセクタのデータ領域２０２（図２）にロードする動作を行う。その後、この仮想論理ブロック内の１つの論理ブロックを更新するデータが供給された場合、この更新データは、元のＰＢＡには格納することができない。ここでは、新たな物理ブロックを選択する必要がある。すなわち、新たな入力データは、「使用中」のフラグが立てられた物理データブロックには格納することができない。廃棄可能データフラグ４３０が第２のバイナリ状態に設定されている場合、対応する物理ブロックに格納されているデータが廃棄されるデータであるということが表されており、この物理データブロックは、消去の対象となる。そして、入力データを、この物理データブロックに再び割り当てることができる。
【００２２】
実際には、論理アドレス及びこれに関連するデータが最初に供給されると、殆どのフラッシュメモリ装置は、データを格納するために、空間マネージャ４００を用いて、欠陥ブロックフラグ４２０が設定されておらず、及び使用中ブロックフラグ４４０が設定されていないデータブロックを検索する。このデータブロックにデータを格納した後、使用中ブロックフラグ４４０とフラグフィールド２４０（図２）内の同等のフラグとが第２のバイナリ状態に設定され、対応する物理データブロックにデータが格納されたことが示される。
【００２３】
ホストは、フラッシュメモリ装置に格納するためのＬＢＡ又は一連のＬＢＡによって定義されたデータを供給する。このデータは、ＰＢＡ又は一連のＰＢＡによって定義された対応するセクタ又は一連のセクタに格納される。ホストがデータの読出を要求するときには、この要求は、論理アドレスを用いて行われる。データは、例えば空間マネージャ４００内に見出されるような関連付けレジスタにより、物理アドレスに対応する物理的位置から読み出される。空間マネージャ４００を介したデータの格納及び読出は、図５を用いて後述する一連の連結（ｃｏｎｃａｔｅｎａｔｉｏｎ）及びマスキング（ｍａｓｋｉｎｇ）動作により行われる。更に、空間マネージャ４００は、通常のフラッシュメモリ装置における消去動作の実行にも利用される。従来のフラッシュメモリの幾つかは、他の動作を実行している間のバックグラウンドで消去動作を実行することができる。或いは、フラッシュメモリ内の他の全ての動作が終了するまで、消去動作の実行を延期することもできる。通常のフラッシュメモリ装置は、消去動作を開始する前に、空間マネージャ４００を用いて、廃棄可能データフラグ４３０が設定されており、欠陥ブロックフラグ４２０が設定されていないデータブロックを検索する。これらのデータブロックは、消去の対象となる。
【００２４】
論理メモリと物理メモリの関係は、維持しなくてはならないが、ＲＡＭ空間マネージャ４００は、揮発性メモリを使用している。ＲＡＭ空間マネージャ４００のために消費されるメモリ量を最小化する一手法としては、仮想論理ブロックアドレスを、物理メモリの大きなブロックを定義する仮想物理ブロックアドレスに関連付ける等、データの関連付けをより大きなデータグループに限定し、空間マネージャ４００内の関連付けレジスタの数を少なくするという手法がある。図３に示すように、１６個の連続するＬＢＡ３０２〜３０８によって定義される１６個の連続するユーザデータの物理ブロック３１０〜３１６のデータを１６個の連続するＰＢＡ３１０〜３１６によって定義される１６個の物理セクタ３２２〜３２８に格納すると、この格納の配置によって、より低いレベルのアドレス間では、アドレスの関連付けを省略することができる。空間マネージャ４００は、このような配置により、ＶＬＢＡとＶＰＢＡを関連付けるだけでよく、１データブロックが１６個のセクタを有している具体例では、空間マネージャ４００のサイズを１／１６に縮小することができる。
【００２５】
図５は、データ格納処理を説明するフローチャートである。ここでは、図３に示すデータフィールド及びレジスタを用いて格納処理を説明する。第１のステップ５０２において、不揮発性フラッシュメモリユニットへの格納のために、仮想論理ブロックアドレスが１７の仮想論理ブロック３００（図３）のユーザデータがホストから供給される。ステップ５０４において、コントローラは、ユーザデータ３００の新たなファイルの第１のＬＢＡを一時的ＬＢＡレジスタ３４０に移動する。この一時的ＬＢＡレジスタ３４０は、６５メガフラッシュメモリ装置においては、通常、２バイトレジスタである。ステップ５０６において、コントローラは、未使用で欠陥がないデータブロックをデータ格納のために選択し、このデータブロックのＶＰＢＡを一時的ＰＢＡレジスタ３５１のＶＰＢＡレジスタ３５２に書き込む。ステップ５０８において、コントローラは、一時的ＬＢＡレジスタ３４０の上位ビット（ＶＬＢＡ）３４２をマスクし、「セクタオフセット」として示されている下位ビット３４４をＰＢＡセクタオフセット３５４に連結する。ステップ５１０において、コントローラは、一時的ＬＢＡレジスタ３４０に格納されているアドレスによって定義される論理ブロックデータを一時的ＰＢＡレジスタ３５１に格納されているアドレスによって定義される物理セクタに格納する。ステップ５１２において、コントローラは、一時的ＶＰＢＡレジスタ３５２に格納されている値を一時的ＶＬＢＡレジスタ３４２内のＶＬＢＡ４６０〜４６８に対応する関連付けレジスタ４５０〜４５８に格納する。
【００２６】
図６は、ホストからの要求に応じてフラッシュメモリ装置からデータを読み出す同様の処理を示している。ステップ６０２において、ホストは、ＬＢＡによって定義されているデータを要求する。ステップ６０４において、要求されたＬＢＡは、一時的ＬＢＡレジスタ３４０に書き込まれる。ステップ６０６において、ＬＢＡオフセット３４４内の下位ビットがマスクされ、ＶＬＢＡ３４２を定義する上位ビットが一時的ＶＬＢＡレジスタ３６０に移動される。ステップ６０８において、コントローラは、空間マネージャ４００を用いて、一時的ＶＬＢＡレジスタ３６０内のアドレスに対応した関連付けレジスタ４５０〜４５８を特定する。ステップ６１０において、コントローラは、選択した関連付けレジスタのＶＰＢＡ４１０を一時的ＰＢＡレジスタ３５１の上位レジスタ３５２に移動する。ステップ６１２において、コントローラは、ＬＢＡセクタオフセット３４４をＰＢＡセクタオフセット３５４に連結する。ステップ６１４において、コントローラは、一時的ＰＢＡレジスタ３５１内のアドレスによって定義されたセクタに格納されているデータを読み出す。ステップ６１６において、コントローラは、読み出したデータをホストに供給し、一時的ＬＢＡレジスタ３４０に格納されている論理アドレスに基づいてデータを定義する。
【００２７】
図５及び図６に示す具体例は、データ格納及び読出のための従来の論理アドレスと物理アドレスの関連付けを例示的に説明するためのものでる。なお、このような特定の格納の機構は、多くの同等の手法により実現でき、図５及び図６に示す処理は、従来のデータ格納及び読出処理の特定の具体例を例示的に示すものであり、本発明に基づくデータ格納及び読出処理を限定するものではない。すなわち、ここでは、単にＬＢＡとＰＢＡとの間の対応関係を維持するデータ格納処理の一例を示したに過ぎない。上述の具体例では、ＬＢＡオフセット３４４は、ＶＬＢデータを物理セクタに格納する際にＰＢＡオフセット３５４として使用される。
【００２８】
空間マネージャ４００は、揮発性メモリを用いているため、電源が切断されると、殆どの空間マネージャにおいて使用されている揮発性ＲＡＭ内のデータは消えてしまう。このため、空間マネージャ４００内のデータは、例えばフラッシュメモリセルの様々なセクタ１１２〜１３６の拡張フィールド２０４等の不揮発性メモリにバックアップされる。不揮発性記憶媒体に記憶されたデータは、電源が切断されても消えない。
【００２９】
電源が切断されることによりＲＡＭメモリの内容は失われるために、通常、電源投入時又はリセット時には、選択されたセクタの拡張フィールド２０４から空間マネージャ４００にオーバヘッドデータがロードされる。拡張フィールド２０４のＬＢＡレジスタ２０８に格納されているＶＬＢＡ３６０は、拡張フィールド２０４が設けられているセクタ３２２の仮想物理ブロックアドレス（ＶＰＢＡ）３６４と、ＬＢＡレジスタ２０８に格納されている仮想論理ブロックアドレス（ＶＬＢＡ）３６０とを関連付ける不揮発性の情報である。更に、セットアップ時又はリセット時には、フラグレジスタ４２０、４３０、４４０内のフラグも、不揮発性メモリフィールド２１０（図２）から空間マネージャ４００にロードされる。
【００３０】
代表的なフラッシュメモリ装置の動作を制御するために、代表的なフラッシュメモリ装置は、フラッシュメモリデバイスに接続されたコントローラ（図示せず）を備える。空間マネージャ４００は、代表的なフラッシュメモリ装置によって実行される動作の一部であり、空間マネージャ４００は、殆どの場合コントローラ内に設計されており、それによって、装置の性能を高めている。なお、アドレス指定可能な大容量のメモリを実現するためには、大きなシリコン領域が必要となるため、コントローラと実際のフラッシュメモリデバイスとを同じ集積回路上に設けることがコスト的に困難となることも多い。この結果、コントローラとフラッシュメモリデバイスは、通常、別の集積回路に形成されている。このように、コントローラとフラッシュメモリとを別の集積回路に形成することにより、それぞれの集積回路において、これらのコンポーネントを形成するのに理想的に適した製造プロセスを採用することができ、特定のパラメータ及び動作要求をより容易に満足させることができる。
【００３１】
空間マネージャ４００は、通常のフラッシュメモリ装置の性能を高めるが、このように性能を高めるためには、コントローラが形成される集積回路に大きなシリコン領域を確保しなくてはならず、コストが高くなる。例えば、それぞれが１６個のセクタを有する１０２４個のデータブロックを備える６４メガビットのフラッシュメモリ装置は、合計１６３８４個のセクタを有している。上述のように、ＶＬＢ３００のデータを単一の物理データブロック３２０に格納する場合、空間マネージャ４００内に設ける必要がある関連付けフィールド４５０〜４５８は、１０２４個だけである。一方、１つのＶＬＢ３００のデータが複数のデータブロック亘って断片化された場合、全ての論理アドレスと物理アドレス間の関係を保持するためには、空間マネージャ４００は、１６３８４個の関連付けフィールド４５０〜４５８を必要とする。
【００３２】
上述のように、例えばエラー訂正データ２０６及びフラグ２１０等のオーバヘッドデータをユーザデータ２０２と同じセクタ２００に格納することにより、幾つかの弊害が生じる。例えば、電源投入時には、空間マネージャ４００を更新するために、長くて広範囲の評価、すなわち潜在的にフラッシュメモリの全てのセクタのアクセスを実行しなくてはならない場合もある。この処理は、時間がかかり、複雑である。オーバヘッドデータを少数のデータブロックに分割することにより、電源投入時に空間マネージャ４００をロードする速度及び効率を実質的に向上させることができる。ユーザデータとオーバヘッドデータとを同じセクタに混在させることによる第２の弊害として、ゲート劣化がある。上述のように、書込及び消去サイクルを繰り返すことにより、フラッシュメモリ装置は徐々に「消耗」する。オーバヘッドデータとユーザデータが同じセクタ内に格納されている場合、オーバヘッドデータとユーザデータは、同じ回数の書込／消去サイクルを経ることとなる。したがって、従来の技術では、所定のセクタ２００内のエラー訂正データ２０６は、このセクタ２００内のユーザデータ２０２と同じ速度で劣化しやすい。劣化したエラー訂正フィールドに基づいてユーザデータのエラーを検出し及び訂正してもデータの正確性は保証されない。更に、オーバヘッドデータとユーザデータを同じセクタに格納した場合、オーバヘッドデータとユーザデータを個々にプログラミング又は消去することができなくなってしまう。そこで、フラッシュメモリセル内において、ユーザデータとオーバヘッドデータを別々にアドレス指定でき、プログラミングでき、及び消去できるデータブロックに分離して格納する技術の実現が望まれている。
【００３３】
更に、ある論理ブロックアドレスが他の論理ブロックアドレスより頻繁に繰り返される場合、メモリを効率的に活用できるように、ユーザデータをオーバヘッドデータから分離する技術の実現が望まれている。更に、論理ブロックアドレスが同じ率で使用される場合に、メモリを効率的に活用できるようにユーザデータをオーバヘッドデータから分離する技術の実現が望まれている。更に、各論理ブロックアドレスの使用頻度が可変又は未知の場合に、メモリを効率的に活用できるようにユーザデータをオーバヘッドデータから分離する技術の実現が望まれている。
【００３４】
【課題を解決するための手段】
本発明は、フラッシュメモリデバイスにおいて、ユーザデータと、例えばエラー訂正データ等のオーバヘッドデータとを同じセクタに格納することにより生じる非効率性及び障害を改善するように設計されたフラッシュメモリデバイスを提供する。更に、本発明は、オーバヘッドデータとユーザデータの間の相互関係を維持しながらオーバヘッドデータをユーザデータから分離させる不揮発性記憶媒体を実現する方法及びデバイスを提供する。更に、本発明は、オーバヘッド専用機能によって消費されるメモリの量を最小化する方法及びデバイスを提供する。更に、本発明は、ある論理ブロックアドレスが他の論理ブロックアドレスより頻繁に繰り返される場合、メモリを効率的に活用できるように、ユーザデータをオーバヘッドデータから分離する方法及びデバイスを提供する。更に、本発明は、論理ブロックアドレスが同じ率で使用される場合に、メモリを効率的に活用できるようにユーザデータをオーバヘッドデータから分離する方法及びデバイスを提供する。更に、本発明は、各論理ブロックアドレスの使用頻度が可変又は未知の場合に、メモリを効率的に活用できるようにユーザデータをオーバヘッドデータから分離する方法及びデバイスを提供する。
【００３５】
本発明に係るデータ格納方法は、フラッシュメモリ装置にデジタルデータを格納するデータ格納方法において、フラッシュメモリ装置内の不揮発性記憶媒体を、複数のデータ専用ブロックと、第１のオーバヘッド専用ブロック及び第２のオーバヘッド専用ブロックを有する複数のオーバヘッド専用ブロックとを含む、個別にアドレス指定可能で、個別にプログラミング可能で、個別に消去可能なメモリブロックにマッピングする。各データ専用ブロックは、複数のオーバヘッドページにマッピングされる。各オーバヘッド専用ブロックのオーバヘッドページの定義には、同じページアドレスの組が使用される。各オーバヘッドページは、複数のオーバヘッドセグメントにマッピングされる。各オーバヘッドページには、同じセグメントアドレスの組が使用される。各オーバヘッドセグメントは、物理アドレスレジスタ及びフラグフィールドを含む複数のレジスタを備える。オーバヘッド専用ブロック内では、連続するオーバヘッドページアドレスは、第１のオーバヘッドページアドレスに関連付けられた第１の論理ブロックアドレスを含む連続する複数の仮想論理ブロックアドレスのそれぞれに関連付けられる。
【００３６】
ホストからは、第１の仮想論理ブロックアドレスによって定義されたユーザデータ供給され、このユーザデータは、第１の仮想物理ブロックアドレス（ＶＰＢＡ）によって定義された第１のデータ専用ブロックに格納される。第１のＶＰＢＡは、第１のオーバヘッドページアドレスによって定義される第１のオーバヘッドページ内の第１の使用可能なセグメントのアドレスレジスタに格納される。使用可能なオーバヘッドセグメントは、未使用で、欠陥がなく、廃棄可能でもないオーバヘッドセグメントである。第１の使用可能なセグメントとは、最も下位のセグメントアドレスを有し、第１のページを備える使用可能なセグメントである。オーバヘッドセグメントは、好ましくは、エラー訂正コードを含む。整理統合処理においては、第１のオーバヘッド専用ブロック内の全ての現在のセグメントが第２のオーバヘッド専用ブロックにコピーされる。第２のデータ専用ブロックにおいてセグメントが格納されるページ番号は、第１のデータ専用ブロックにおいてデータが格納されていたページ番号と同じである。第２のデータ専用ブロックに移動される現在のセグメントのデータは、各ページの最下位のアドレスを有するセグメントに格納される。
【００３７】
また、本発明に係るデータ格納方法は、フラッシュメモリ装置にデジタルデータを格納するデータ格納方法において、フラッシュメモリ装置内の不揮発性記憶媒体を、複数のデータ専用ブロックと、第１のオーバヘッド専用ブロック及び第２のオーバヘッド専用ブロックを有する複数のオーバヘッド専用ブロックとを含む、個別にアドレス指定可能で、個別にプログラミング可能で、個別に消去可能なメモリブロックにマッピングする。各オーバヘッド専用ブロックは、連続するアドレスが付された複数のオーバヘッドセグメントにマッピングされる。各オーバヘッド専用ブロックにおいては、同一の連続するオーバヘッドセグメントアドレスが使用される。各セグメントは、物理アドレスレジスタとフラグフィールドを有する。各データ専用ブロックは、第１のオーバヘッド専用ブロックに関連付けられた第１のＶＬＢＡのグループを含む仮想論理ブロックアドレスのグループに関連付けられている。第１のＶＬＢＡのグループ内の第１のＶＬＢＡによって定義されたユーザデータが供給されると、このユーザデータは、第１の仮想物理ブロックアドレス（ＶＰＢＡ）に基づいて定義された第１のデータ専用ブロックに格納される。第１のＶＰＢＡは、オーバヘッド専用ブロック内の第１の使用可能なセグメントのアドレスレジスタに格納される。オーバヘッド専用ブロックがフル状態になると、現在のオーバヘッドセグメントが特定され、このセグメント内のデータが新たなオーバヘッド専用ブロックにコピーされる。オーバヘッドセグメントのデータは、新たなオーバヘッド専用ブロックの最下位のアドレスを有するセグメントから順に格納される。古くなったオーバヘッド専用ブロックは、消去の対象となる。
【００３８】
また、本発明に係るデータ格納方法は、フラッシュメモリ装置にデジタルデータを格納するデータ格納方法において、フラッシュメモリ装置内の不揮発性記憶媒体を、複数のデータ専用ブロックと、第１のオーバヘッド専用ブロック及び第２のオーバヘッド専用ブロックを有する複数のオーバヘッド専用ブロックとを含む、個別にアドレス指定可能で、個別にプログラミング可能で、個別に消去可能なメモリブロックにマッピングする。各オーバヘッド専用ブロックは、固定オーバヘッドフィールド及びランダムオーバヘッドフィールドにマッピングされる。各オーバヘッド専用ブロックの固定オーバヘッドフィールドは、複数のオーバヘッド専用ブロックのそれぞれがオーバヘッドセグメントアドレスのシーケンスと同様に連続的にアドレスが付された複数のオーバヘッドセグメントを有する。各オーバヘッド専用ブロックのランダムオーバヘッドフィールド物理アドレスレジスタを含む複数のレジスタを有する連続的にアドレスが付された複数のオーバヘッドセグメントを有する。各オーバヘッドセグメントは、物理アドレスレジスタを含む複数のレジスタを有する。仮想論理ブロックアドレスの第１のグループからの連続する仮想論理ブロックアドレスは、第１の仮想論理ブロックアドレスに関連付けられた第１の固定オーバヘッドセグメントを含む、第１のオーバヘッド専用ブロックの固定オーバヘッドフィールド内の連続的にアドレスが付された複数のオーバヘッドセグメントに関連付けられている。
【００３９】
第１の仮想論理ブロックアドレスによって定義されたデータが供給されると、このデータは、第１の仮想物理ブロックアドレスによって定義された第１のデータ専用ブロックに格納される。ユーザデータが実際に格納されている第１のＶＰＢＡを含む第１のＶＬＢＡをサポートするオーバヘッドデータは、第１のオーバヘッド専用ブロックのセグメントに格納される。固定オーバヘッドセグメントが使用可能な場合、第１のＶＰＢＡを含むオーバヘッドデータは、この固定オーバヘッドセグメントに格納される。第１の固定オーバヘッドセグメントが使用可能ではない場合、第１のＶＬＢＡをサポートするオーバヘッドデータは、第１のオーバヘッド専用ブロックのランダムフィールド内の第１の使用可能なオーバヘッドセグメントに格納される。オーバヘッド専用ブロックがフル状態になった場合、新たなオーバヘッド専用ブロックが特定され、連続するオーバヘッドセグメントアドレスは、第１のオーバヘッド専用ブロックと同一の連続する仮想論理ブロックアドレスに関連付けられる。そして、全ての現在のオーバヘッドセグメントが特定され、オーバヘッドデータを格納するＶＬＢＡに関連付けられる。現在のオーバヘッドセグメントは、固定オーバヘッドフィールド内の、各特定の現在のオーバヘッドセグメントに関連するＶＬＢＡに関連付けられている所定のセグメントにコピーされる。古くなったオーバヘッド専用ブロックは、消去の対象となる。
【００４０】
また、本発明に係るデータ格納方法は、フラッシュメモリ装置にデジタルデータを格納するデータ格納方法において、フラッシュメモリ装置内の不揮発性記憶媒体を、複数のデータ専用ブロックと、第１のオーバヘッド専用ブロック及び第２のオーバヘッド専用ブロックを有する複数のオーバヘッド専用ブロックとを含む、個別にアドレス指定可能で、個別にプログラミング可能で、個別に消去可能なメモリブロックにマッピングする。複数のオーバヘッド専用ブロックのそれぞれは、第１のオーバヘッド専用ブロック内の第１のスーパオーバヘッドフィールドを含む複数のスーパオーバヘッドフィールドにマッピングされる。複数のスーパオーバヘッドフィールドのそれぞれは、それぞれが物理アドレスレジスタを含む複数のレジスタを有する連続的にアドレスが付された同数のオーバヘッドセグメントにマッピングされる。スーパ仮想論理ブロック内の連続する仮想論理ブロックアドレスのグループは、第１のオーバヘッドセグメントに関連付けられた第１の仮想論理ブロックアドレスを含む、第１のスーパオーバヘッドフィールド内の連続するオーバヘッドセグメントに関連付けられる。第１の仮想論理ブロックアドレスによって定義されたユーザデータの第１の組は、第１の仮想物理ブロックアドレスによって定義された第１のデータ専用ブロックに格納される。第１の仮想物理ブロックアドレスを含むオーバヘッドデータは、第１のオーバヘッドセグメントに格納される。第１のスーパオーバヘッドフィールドが第１のオーバヘッド専用ブロックにおける最後のスーパオーバヘッドフィールドではない場合、コントローラは、この第１のスーパオーバヘッドフィールド内の次のスーパオーバヘッドフィールドにインクリメントする。一方、第１のスーパオーバヘッドフィールドが第１のオーバヘッド専用ブロックにおける最後のスーパオーバヘッドフィールドである場合、全ての現在のオーバヘッドセグメントが特定され、これらのセグメント内のデータは、新たなオーバヘッド専用ブロックの最下位のアドレスを有するスーパオーバヘッドフィールド内の同じセグメントアドレスに移動される。
【００４１】
また、本発明に係るフラッシュメモリデバイスは、複数の物理ブロックアドレスによって弁別的に定義される個別にアドレス指定可能で、個別にプログラミング可能で、個別に消去可能な独立した複数の不揮発性物理メモリブロックを有し、ユーザデータを格納するフラッシュメモリデバイスにおいて、ユーザデータを格納するための複数のデータ専用ブロックと、第１のデータ専用ブロック及び第２のデータ専用ブロックを含むオーバヘッドデータを格納するための複数のオーバヘッド専用ブロックとを備える。各オーバヘッド専用ブロックは、同一のページアドレスのシーケンスに基づく個別にアドレス指定可能な複数のオーバヘッドページを有する。各オーバヘッドページは、オーバヘッドデータを格納するために使用される複数の独立したオーバヘッドセグメントを含む個別にアドレス指定可能で個別にプログラミング可能な複数のセグメントを有する。複数の独立したオーバヘッドセグメントは、それぞれユーザデータの仮想論理ブロックの１つをサポートし、オーバヘッドデータを格納するために使用され、各オーバヘッドセグメントは、対応するユーザデータを特定する物理アドレスを格納する物理アドレスレジスタと、フラグフィールドとを備える。第１のＶＬＢＡを含む仮想論理ブロックアドレスの第１のグループは、第１の仮想論理ブロックアドレスをサポートするように生成されたオーバヘッドデータが第１のオーバヘッド専用ブロックに格納されるように、第１のオーバヘッド専用ブロックに割り当てられる。
【００４２】
本発明の一具体例においては、仮想論理ブロックアドレスの第１のグループ内の連続的な仮想論理ブロックアドレスは、第１のオーバヘッド専用ブロック内の第１のオーバヘッドページに関連付けられた第１の仮想論理ブロックアドレスを含む、第１のオーバヘッド専用ブロック内の連続的にアドレスが付されたオーバヘッドページアドレスにそれぞれ関連付けられ、第１の仮想論理ブロックアドレスをサポートするオーバヘッドデータが第１のオーバヘッドページのオーバヘッドセグメントに格納される。
【００４３】
本発明の一具体例においては、複数のオーバヘッド専用ブロックは、連続的にアドレスが付された複数のオーバヘッドセグメントを有する固定オーバヘッドフィールドと、連続的にアドレスが付された複数のオーバヘッドページを有するランダムオーバヘッドフィールドとを備え、第１のオーバヘッド専用ブロックの固定オーバヘッドフィールド内の連続的にアドレスが付されたオーバヘッドページを有する連続的にアドレスが付されたセグメントは、連続的にアドレスが付された仮想論理ブロックアドレスにそれぞれ関連付けられている。
【００４４】
本発明の一具体例においては、各オーバヘッド専用ブロックは、第１のスーパオーバヘッドフィールドを含む複数のスーパオーバヘッドフィールドを備え、スーパオーバヘッドフィールドは、整数個のページを有し、第１のオーバヘッド専用ブロック内の各スーパオーバヘッドフィールドは、同数のページを有し、第１のスーパオーバヘッドフィールドの連続するオーバヘッドセグメントは、第１のスーパブロックを有する連続的にアドレスが付された仮想論理ブロックアドレスにそれぞれ割り当てられる。
【００４５】
本発明のこれらの及びこの他の利点は、当業者にとって明らかである。
【００４６】
【発明の実施の形態】
以下に説明する実施の形態は、本発明の範囲を限定するためのものではなく、本発明の可能な変化例又は変形例の全てを開示するものでもない。当業者は、以下に示す具体例の変形例を容易に想到することができる。特に、以下では、データストレージアーキテクチャ及びフラッシュメモリユニット内のフィールド及びレジスタに関する具体例を示す。ここで使用するオーバヘッド専用ブロック（Ｄｅｄｉｃａｔｅｄ Ｏｖｅｒｈｅａｄ Ｂｌｏｃｋ）、オーバヘッドページ（Ｏｖｅｒｈｅａｄ Ｐａｇｅ）、オーバヘッドセグメント（Ｏｖｅｒｈｅａｄ Ｓｅｇｍｅｎｔ）、スーパオーバヘッドフィールド（Ｓｕｐｅｒ Ｏｖｅｒｈｅａｄ Ｆｉｅｌｄ）及び他のアーキテクチャ構成要素の用語は、本発明に基づくアーキテクチャ、データ格納フィールド、レジスタを表するための任意の用語である。これらと同等の構造又はアーキテクチャは、他の様々な技術用語を用いても表すことができる。同様に、様々なデータ格納フィールドの相対的記憶容量は、例示的なものであり、ここで説明する特定の具体例により本発明の範囲を制限するものではない。また、より大きなメモリフィールドを有するコンポーネントのメモリフィールド又はレジスタの数は、特定のコンポーネント構造の割合により本発明を制限するものではない。ここで示す特定の具体例における数値及び比は、例示的な目的のみで示されていることは、当業者にとって明らかである。更に、バイナリアドレス指定方式において、複数のセグメントを有する複数のページからなるブロックは、単に、複数の連続するセグメントから構成されるブロックと同等であるとみなすこともできる。例えば、８ビットフィールドは、それぞれが１６個のセグメントを有する４つのページからなる４つのブロックに分割することもでき、或いは、単に１６個のセグメントから構成される４つのブロックを表しているとみなすこともできる。この同じデータフィールドを他の様々な構造的表現により表すことができることは、当業者にとって明らかである。ここに示す特定のアーキテクチャの説明は、最も広く解釈され、同等に振る舞う様々な同等の機能の全てを包含すると解釈されるべきである。すなわち、添付の図面及び詳細な説明は、本発明の特定の具体例を例示的に開示し、当業者が本発明の原理を理解し、本発明を実施できるようにしたものである。
【００４７】
フラッシュメモリ装置（ｆｌａｓｈ ｍｅｍｏｒｙ ｓｙｓｔｅｍ）は、適切な動作環境において、例えばコンピュータシステム又はデジタルカメラ等のホストデジタルシステムに接続される。フラッシュメモリ装置は、ホストデジタルシステムに大容量不揮発性記憶媒体を提供する。フラッシュメモリ装置に格納され、又はフラッシュメモリ装置から読み出されるデータは、ホストデジタルシステムによって、複数の論理ブロックアドレスのうちの１つの論理ブロックアドレスに関連付けられる。フラッシュメモリ装置は、この論理ブロックアドレスを複数の物理ブロックアドレスのうちの１つの物理ブロックアドレスに変換する。この変換については、従来の技術の章で既に説明した。
【００４８】
フラッシュメモリ装置は、好ましくは、データを格納し、論理アドレスと物理アドレスとを関連付けるフラッシュメモリデバイス（ｆｌａｓｈ ｍｅｍｏｒｙ ｄｅｖｉｃｅ）と、フラッシュメモリ装置の動作を制御するコントローラとを備える。コントローラは、通常、フラッシュメモリ装置に組み込まれている。各フラッシュメモリデバイスは、フラッシュメモリアレーを備え、フラッシュメモリアレーは、複数の不揮発性フラッシュメモリセルを含んでいる。
【００４９】
図７は、本発明に基づくフラッシュメモリアーキテクチャを示す図であり、このフラッシュメモリ装置では、オーバヘッドデータとユーザデータをそれぞれ個別にアドレス指定でき、独立してプログラミング及び消去できる物理ブロックに別々に格納している。フラッシュメモリの不揮発性メモリ７００は、オーバヘッド専用ブロック（Ｄｅｄｉｃａｔｅｄ Ｏｖｅｒｈｅａｄ Ｂｌｏｃｋ）７０２、７０４、７０６と、データ専用ブロック７０８〜７１２とを備える。各ブロックのサブマッピング（ｓｕｂ−ｍａｐｐｉｎｇ）を行う場合、オーバヘッド専用ブロック７０２、７０４、７０６は、データ専用ブロック７０８〜７１２と同じサブマッピング方式に基づいてマッピングする必要はない。図７に示すようなアーキテクチャにより、ユーザデータとオーバヘッドデータを別々にプログラミングし、別々にアクセスし、別々に消去することができる。本発明に基づく図７に示すアーキテクチャと、図１に示す従来のアーキテクチャとを比較することにより、類似点及び相異点を容易に見出すことができる。この比較を明確にするために、ここでも各データブロックに０〜（Ｍ−１）の番号を付している。なお、各データブロックは、セクタではなく、ページから構成されている。この違いは、単に名称の相違ではなく、このアーキテクチャの本質に関わる特徴である。上述のように、従来のセクタは、ハードディスクドライブのセクタを模倣したものである。すなわち、図１に示す各セクタ１１２〜１３６は、図２に詳細を示すように、５１２バイトのユーザデータ領域２０２と、１６ビットのオーバヘッドデータを含む拡張フィールド２０４とを有する。一方、本発明に基づくメモリアーキテクチャでは、オーバヘッドデータは、ユーザデータと同じ「セクタ」には格納されない。そこで、本発明では、論理ブロックのデータを格納することができるメモリの領域をセクタではなくページと呼ぶ。ユーザデータとオーバヘッドデータが格納されるセクタとは異なり、ページは、ユーザデータの格納又はオーバヘッドデータの格納専用に用いられ、これら２つの異なる種類のデータを同時には格納しない。データブロック７０２〜７１２は、従来と同様、仮想論理ブロックデータを格納するために十分な記憶容量を有し、各ページ７２２〜７７６は、好ましくは、１つの論理ブロックデータを格納するために十分な記憶容量を有する。
【００５０】
また、従来の技術との第２の相異点として、この具体例では、オーバヘッド専用ブロック７０２〜７０６と、データ専用ブロック７０８〜７１２との２つの異なるデータブロック形式がある。
【００５１】
図８Ａは、本発明に基づくサブマッピング方式の一例を採用したオーバヘッド専用ブロック８００を示している。この説明を通して、ページの数は、例示的に１６とする。また、ブロック長は、例えば１６又は３２等、２の累乗個のページに対応することが望ましいが、ページの数及びブロック長は、いかなる値であってもよい。図８Ａに示す具体例は、１６個のオーバヘッドページ（Ｏｖｅｒｈｅａｄ Ｐａｇｅ）８０２〜８０６を有し、各ページは、複数のオーバヘッドセグメント（Ｏｖｅｒｈｅａｄ Ｓｅｇｍｅｎｔ）を含み、各セグメントは、１つのデータ専用ブロック７０８〜７１２に格納されているユーザデータのデータ量をサポートしている。
【００５２】
図８Ａでは、１個のオーバヘッドページにつき８個のオーバヘッドセグメントを示しているが、１ページ当たりのセグメント数は、図８Ｂを用いて説明するように、各オーバヘッドセグメントにどれ程のデータが格納されるかに基づいて決定される。オーバヘッドセグメント８１０〜８２２は、図８Ｂに示すように、好ましくは、エラー訂正フィールド８３０と、ＰＢＡレジスタ８３２と、フラグフィールド８３４とを含んでいる。フラグフィールド８３４は、好ましくは、使用中フラグ（ｕｓｅｄ ｆｌａｇ）８３６と、欠陥フラグ（ｄｅｆｅｃｔｉｖｅ ｆｌａｇ）８３８と、廃棄可能フラグ（ｏｂｓｏｌｅｔｅ ｆｌａｇ）８４０とを含む。これらのフラグは、第２の値に設定されると、それぞれオーバヘッドセグメントが使用中であること、欠陥を含むこと、廃棄可能であることを示す。「使用可能な（ａｖａｉｌａｂｌｅ）」オーバヘッドセグメントは、未使用で、欠陥がなく、廃棄可能でもないセグメントとして定義される。「現在の（ｃｕｒｒｅｎｔ）」オーバヘッドセグメントは、使用中で、欠陥がなく、廃棄可能でないセグメントとして定義される。従来の技術では、拡張フィールド２０４のサイズは固定であったが、本発明では、オーバヘッドセグメント８１０〜８２２のサイズを柔軟に変更することができる。従来の技術においては、１６バイトの拡張フィールド２０４は、残りの予備バイトが最小の１バイトであっても、少なくとも４バイトをエラー訂正用に使用していた。拡張フィールド２０４では、拡張フィールド２０４内の全てのフィールドが使用されていても、全てのフィールドが使用されていなくても、使用するメモリ量は同じである。したがって、従来の手法では、ＥＣＣフィールド２０６のデータ量を削減しても利益はなかった。一方、本発明では、オーバヘッド機能を独立したメモリ領域に分離しているため、オーバヘッド機能に使用するメモリ量は、フラッシュメモリの消費量に影響する。すなわち、１つセグメントに格納するデータのデータ量を削減すれば、１ページ当たりのセグメント数を増やすことができ、オーバヘッド専用領域によるフラッシュメモリの消費量を低減することができる。
【００５３】
図８Ｂに示すどのレジスタを省略してもメモリを節約することができるが、機能的観点から省略することが望ましくないレジスタもある。例えば、オーバヘッドセグメントと、このオーバヘッドセグメントがサポートするユーザデータブロックとを相互参照するためのＰＢＡレジスタ８３２がなければ、装置は基本的に動作しない。したがって、本発明の具体例では、エラー訂正フィールド８３０として使用されるデータの量を変化させることによりオーバヘッドセグメント８２８のサイズを調整する。通常、エラー訂正プログラムがより複雑で効果的になるほど、ユーザデータブロックをサポートするためにより多くのデータが必要となり、この結果、オーバヘッドセグメント８２８が大きくなり、メモリ消費量が多くなる。一方、エラー訂正プログラムを単純化し効果を弱めることにより、ユーザデータブロックをサポートするためのＥＣＣデータのデータ量は小さくなる。エラー訂正データを全く設けなければ、オーバヘッドセグメント８２８は、２バイトのＰＢＡレジスタ８３２と、１バイトのフラグレジスタ８３４のみからなる３バイトの最小の構成となる。なお、図８Ｂに示す具体例では、論理ブロックアドレスへの相互参照が示されていない。オーバヘッドセグメント８２８に論理アドレスへの相互参照情報を格納することは、必ずしも必要ではないが、従来の技術の説明で上述し、更に本発明に関して後に詳細に説明するように、電源投入時に論理アドレスと物理アドレスを関連付ける関連付けデータを空間マネージャ９００に供給するために、フラッシュメモリ装置内のいずれかの場所にこの関連付けデータを不揮発的に記憶させておく必要がある。本発明の好ましい具体例においては、データ専用ブロック内の現在のページの最後に設けられている拡張フィールドに、このデータ専用ブロックに関連付けられた一定の範囲のＶＬＢＡを格納する。
【００５４】
エラー訂正コード（ＥＣＣ）デザイン１（Ｅｒｒｏｒ Ｃｏｒｒｅｃｔｉｏｎ Ｃｏｄｅ （ＥＣＣ） Ｄｅｓｉｇｎ−ｏｎｅ）に従えば、エラー訂正フィールド８３０は、オーバヘッドセグメント８２８には組み込まれない。デジタル技術においては、所定のアプリケーションで使用されるアドレス可能なメモリ量は、２の累乗によって除算できるものであることが好ましい。したがって、３バイトのオーバヘッドセグメント（ＰＢＡレジスタ８３２及びフラグ８３４）は、好ましくは４バイトのセグメントに格納される。１個のオーバヘッドセグメントにつき４バイトを使用することにより、デザイン１では、１個のオーバヘッドページに対して１２８個のオーバヘッドセグメントを設けることができる。
【００５５】
ＥＣＣデザイン２（ＥＣＣ Ｄｅｓｉｇｎ−ｔｗｏ）では、パリティビットエラー訂正処理において、ユーザデータの各ページ７５２〜７７６に対して、それぞれ１つのパリティビットを用いてデータのエラー訂正を行う。したがって、例えばデータ専用ブロック７０８等のユーザデータ用の１６ページのデータ専用ブロックでは、エラー訂正データとして１６ビット、すなわち２バイトのデータが必要となる。この場合、２バイトのエラー訂正フィールド８３０と、２バイトのＰＢＡレジスタ８３２と、１バイトのフラグフィールド８３４により、オーバヘッドデータは、各オーバヘッド専用ブロックをサポートする１オーバヘッドセグメント当たり５バイトとなる。上述のように、所定のアプリケーションによって使用されるアドレス可能なメモリ領域は、２の累乗で除算できる数であることが好ましく、デザイン２に対応する５バイトのオーバヘッドデータは、好ましくは８バイトのオーバヘッドセグメントに格納される。８バイトのオーバヘッドセグメントを用いることにより、デザイン２では、１個のオーバヘッドページに対して６４個のオーバヘッドセグメントを設けることができる。
【００５６】
ＥＣＣデザイン３（Ｄｅｓｉｇｎ−ｔｈｒｅｅ）では、エラー訂正コードは、ユーザデータの各ページをサポートする３バイトのＥＣＣデータを必要とし、したがって、１６ページのユーザデータをサポートするためには、４８バイトのＥＣＣデータが必要となる。４８バイトのＥＣＣフィールド８３０と、２バイトのＰＢＡレジスタ８３２と、１バイトのフラグフィールド８３４により、オーバヘッドデータは、各データ専用ブロック７０８〜７１２をサポートする１オーバヘッドセグメント８２８当たり５１バイトとなる。２の累乗で除算できる数であることが好ましく、デザイン２に対応する５１バイトのオーバヘッドデータは、好ましくは６４バイトのオーバヘッドセグメントに格納される。ページは、５１２バイトのアクセス可能なデータから構成されるため、デザイン３では、１個のオーバヘッドページに対して８個のオーバヘッドセグメントを設けることができる。
【００５７】
ＥＣＣデザイン４（ＥＣＣ Ｄｅｓｉｇｎ−ｆｏｕｒ）では、従来から使用されているＥＣＣコード等の４バイトのＥＣＣコードが採用される。このレベルのメモリ消費では、１６ページのユーザデータは６４バイトのＥＣＣデータを必要とする。６４バイトのＥＣＣフィールド８３０と、２バイトのＰＢＡレジスタ８３２と、１バイトのフラグフィールド８３４により、オーバヘッドデータは、各データ専用ブロック７０８〜７１２をサポートする１オーバヘッドセグメント８２８当たり６７バイトとなる。６７より大きな２の累乗に対応するメモリ領域は、１２８バイトであるため、従来の技術で通常用いられているエラー訂正コードを使用するデザイン４を採用した場合、各オーバヘッドページ８０２〜８０６に対して、設けることができるオーバヘッドセグメント８１０〜８２２は、４個のみである。
【００５８】
なお、本発明は、上述した４つのＥＣＣデザインのいずれかに制限されるものではない。すなわち、より大きく複雑なエラー訂正アルゴリズムを用いてもよく、この場合、オーバヘッドセグメント８２８が大きくなり、より多くのデータが必要となる。この場合、１つオーバヘッドセグメント８２８がオーバヘッドページ全体を占めることもあり、更に、１つオーバヘッドセグメント８２８を複数のオーバヘッドページに亘って格納することもある。これらの応用例も本発明の範囲内であるが、本発明の好ましい具体例においては、エラー訂正能力とオーバヘッドセグメントによるメモリの消費量のトレードオフを考慮し、デザイン１〜デザイン４のエラー訂正を用いる。
【００５９】
上述のように、本発明に基づくＰＢＡレジスタ８３２は、オーバヘッドデータとユーザデータとの相互参照のためのデータを格納する。従来の技術では、ユーザデータと、このユーザデータに対応するオーバヘッドデータは同じ物理ブロックアドレスに格納されていたため、上述のようなアーキテクチャは、新規な技術である。
【００６０】
図９は、本発明に基づく空間マネージャの一具体例を示している。連続的に番号が付され、それぞれが物理データブロックに現在格納されているデータ量に等しいデータ量を表すＶＬＢＡ９０２〜９１２は、一連の関連付けフィールド９４０〜９５０に関連付けられている。各関連付けフィールド９４０〜９５０は、アドレスレジスタ９２０と、フラグレジスタ９５２とを備える。なお、上述の通り、従来の技術では、ユーザデータとオーバヘッドデータは、同一の物理ブロックアドレスによって定義され、アドレスレジスタ４０８（図４）は、ユーザデータとオーバヘッドデータの両方を参照していた。一方、本発明では、オーバヘッドデータとユーザデータが個別に格納されるため、空間マネージャ９００のアドレスレジスタ９２０は、ユーザデータ及びオーバヘッドデータのいずれか一方のみを参照する。本発明の好ましい具体例においては、空間マネージャ９００においては、オーバヘッドデータのみを参照する。すなわち、この具体例では、空間マネージャ９００は、ユーザデータを直接参照しない。
【００６１】
アドレスレジスタ９２０は、ＶＰＢＡレジスタ９２２とアドレス指定子（Ａｄｄｒｅｓｓ ｓｐｅｃｉｆｉｅｒ）９２４の２つのサブレジスタに分割されている。ＶＰＢＡレジスタ９２２は、オーバヘッドデータが格納されている物理ブロックアドレスを定義する。アドレス指定子９２４の内容は、本発明の具体例に応じて変化する。ここに説明する一具体例においては、アドレス指定子９２４の内容は、ページと、このページ内のセグメントオフセットの両方を定義する。また、他の具体例においては、アドレス指定子９２４の内容は、オーバヘッドデータのセグメントが存在するページのみを定義するものであってもよい。アドレス指定子９２４がページアドレスのみを有する場合、コントローラは、先ず、このアドレス指定子９２４によって参照されているページにアクセスし、特定のセグメントを間接的に特定する。空間マネージャ９００内の状態フラグ（Ｓｔａｔｕｓ Ｆｌａｇ）は、好ましくは欠陥ブロックフラグ９３０、廃棄可能データフラグ９３２、使用中ブロックフラグ９３４を含む。特定のオーバヘッドブロックに関連付けられている空間マネージャ９００内の状態フラグは、オーバヘッドブロックの状態を定義し、一方、特定のオーバヘッドセグメント内のフラグは、そのオーバヘッドセグメントによって指示されているユーザデータ及びデータ専用ブロックの状態を定義している。
【００６２】
本発明の「ブロック法」に基づく具体例を図１０を用いて説明する。この具体例では、オーバヘッド専用ブロック１００４内の連続するオーバヘッドページ１０２０〜１０２６がユーザデータの連続する仮想論理ブロック１０１０〜１０１６をサポートするために割り当てられている。図１０では、ＶＬＢＡ３２〜ＶＬＢＡ４７の番号が付されたユーザデータの１６個の連続するアドレスが付された仮想論理ブロック１０１０〜１０１６のスタック１００２を示している。ＶＬＢＡのスタック１００２は、１６個のオーバヘッドページ１０２０〜１０２６を有するオーバヘッド専用ブロック１００４によってサポートされている。図１０に示されている連続するアドレスが付されたＶＬＢＡの数は、オーバヘッド専用ブロック１００４内のオーバヘッドページの数に一致するように選択される。オーバヘッドデータの格納においては、スタック１００２内の仮想論理ブロックアドレス１０１０によって定義されているユーザデータは、そのオーバヘッドデータ１０７０をオーバヘッド専用ブロック１００４の第１のオーバヘッドページ１０２０のオーバヘッドセグメントに格納する。スタック１００２内の第２の仮想論理ブロックアドレス１０１２によって定義されているユーザデータは、そのオーバヘッドデータ１０７２をオーバヘッド専用ブロック１００４の第２のオーバヘッドページ１０２２のオーバヘッドセグメントに格納する。第３のＶＬＢＡは、そのオーバヘッドデータ１０７３を第３のオーバヘッドページ１０２４に格納し、以下、同様に各ＶＬＢＡのオーバヘッドデータが各ページに格納される。但し、この処理は必ずしも順次的である必要はない。すなわち、ユーザデータの第１６の仮想論理ブロックは、そのオーバヘッドデータ１０７４をオーバヘッド専用ブロック１００４の第１６のオーバヘッドページ１０２６のオーバヘッドセグメントに格納するが、この処理は、第１のオーバヘッドページ１０２０へのオーバヘッドデータの格納より先に実行してもよい。更に、この処理は、必ずしも対称的である必要はなく、また、均等に実行する必要もない。すなわち、例えば、第１６のＶＬＢＡ１０１６を連続的に複数回更新することにより、スタック１００２の第３のＶＬＢＡ１０１４に基づくユーザデータが供給される前に、第１６のオーバヘッドページ１０２６に格納されているオーバヘッドデータ１０７４が複数回更新される。
【００６３】
同じＶＬＢＡによって定義されているユーザデータが更新されると、このユーザデータをサポートするために、新たなオーバヘッドデータの組が生成される。同じＶＬＢＡに基づいて連続的に生成されたオーバヘッドデータは、そのＶＬＢＡに割り当てられたオーバヘッドページ内の連続的にアドレスが付されたオーバヘッドセグメントに格納される。特定のＶＬＢＡのオーバヘッドデータが更新されると、新たなオーバヘッドデータは、そのＶＬＢＡが割り当てられているオーバヘッドページにおける次のオーバヘッドセグメントに格納される。図１１に示す具体例では、オーバヘッドページ１０２０は、複数回更新されている。第１〜第４のオーバヘッドセグメント１０３０、１０３１、１０３２、１０３３には、廃棄可能のマークが付されている。連続するオーバヘッドセグメントの最後のオーバヘッドセグメント１０３４は、現在のオーバヘッドセグメントである。第２のオーバヘッドページ１０２２は、２つの廃棄可能のオーバヘッドセグメント１０２７、１０２８と、現在のオーバヘッドセグメント１０２９とを有する。第１６のオーバヘッドページ１０２６は、フル状態である。すなわち、第１６のオーバヘッドページでは、最後のセグメント１０５０以外の全てのセグメントは廃棄可能なデータとなっており、最後のセグメント１０５０が現在のセグメントとなっている。
【００６４】
フラッシュメモリ装置のコントローラがデータを読み出すためには、コントローラは、特定のＶＬＢＡに対応した現在のオーバヘッドセグメントを特定する必要がある。同様に、新たなオーバヘッドデータを格納するためには、コントローラは、次に使用可能なオーバヘッドセグメントを特定する必要がある。ここで、「次」とは、オーバヘッドセグメントに割り当てられた各アドレスの順序における「次」を意味する。次に使用可能なオーバヘッドセグメントは、参照ページを有する個々のオーバヘッドセグメント内の状態フラグ８３４（図８）と連携する空間マネージャ９００内のアドレス指定子９２４によって参照されるページアドレスによって特定することができる。
【００６５】
一具体例においては、アドレス指定子９２４は、特定のＶＬＢＡ１０１０〜１０１６に割り当てられたオーバヘッドページ１０２０〜１０２６のページ番号のみを格納する。ここで、データの格納及び読出には、オーバヘッドセグメントそのものが既知である必要がある。コントローラは、空間マネージャ９００内のＶＰＢＡレジスタ９２２とアドレス指定子９２４とを調べることにより、特定のＶＬＢＡに関連付けられているオーバヘッドデータの格納に使用されたＶＰＢＡ及びページアドレスを特定することができる。次に、コントローラは、アドレス指定子９２４において特定されたオーバヘッドページ１０２０〜１０２６にアクセスし、ページ内の連続するオーバヘッドセグメント１０３０、１０３１、１０３２等を順次調べる。ここでは、好ましくは、各セグメントの使用中フラグ８３６、欠陥フラグ８３８、廃棄可能データフラグ８４０が調べられる。これにより得られた情報に基づき、コントローラは、ＰＢＡレジスタ内において現在のユーザデータの位置を特定している現在のセグメントを特定することができる。同様に、状態フラグを調べることにより、コントローラは、新たなオーバヘッドデータを格納するために、次の未使用で欠陥がないセグメントを特定することができる。変形例においては、アドレス指定子レジスタ９２４がセグメント番号を含み、これによりコントローラは現在のセグメントを特定する。したがって、この変形例では、コントローラは一連のセグメントのフラグ状態を順次調べる必要がない。
【００６６】
図１１には、ブロック法に基づく具体例におけるセグメントの整理統合（ｓｅｇｍｅｎｔ ｃｏｎｓｏｌｉｄａｔｉｏｎ）及びブロック消去の手順も示されている。整理統合は、オーバヘッド専用ブロックがフル状態、すなわち例えば、図１１に示す第１６のオーバヘッドページ１０２６等のように、オーバヘッド専用ブロック１００４内の全てのオーバヘッドページ１０２０〜１０２６にデータが満たされた場合に実行される。オーバヘッド専用ブロック１００４がフル状態になると、コントローラは、新たなオーバヘッド専用ブロック１０６４を特定する。次に、コントローラは、フル状態のオーバヘッド専用ブロック１００４内の全てのオーバヘッドページ１０２０〜１０２６を調べ、現在のオーバヘッドセグメントを含む全てのページの現在のオーバヘッドセグメント１０３４、１０２９・・・１０５０を識別する。新たなセグメントにオーバヘッドデータが格納されると、ページ内の古いセグメントには、廃棄可能を示すフラグが立てられているため、各オーバヘッドページの現在のオーバヘッドセグメントは、例えばフラグレジスタ８３４内の様々なフラグ８３６〜８４０の状態を調べることにより特定される。１つのページは、最大で１個の現在のセグメントを有している。図１１に示すように、オーバヘッド専用ブロック１００４がフル状態になると、第１のオーバヘッドページ１０２０の現在のオーバヘッドセグメント１０３４内のオーバヘッドデータは、新たなオーバヘッド専用ブロック１０６４の第１のオーバヘッドページ１０５２の第１のオーバヘッドセグメント１０５８に移動される。また、第２のオーバヘッドページ１０２２の現在のセグメント１０２９は、新たなオーバヘッド専用ブロック１０６４の第２のオーバヘッドページ１０５４の第１のオーバヘッドセグメント１０６０に移動される。また、第１６のオーバヘッドページ１０２６の現在のセグメント１０５０は、新たなオーバヘッド専用ブロック１０６４の第１６のオーバヘッドページ１０５６の第１のオーバヘッドセグメント１０６２に移動される。このようにして、整理統合処理においては、各ページの現在のオーバヘッドセグメントが新たな未使用のオーバヘッド専用ブロックの同じ各ページの第１のオーバヘッドセグメントに移動させる。この整理統合処理に続いて、使用されていたブロックが消去され、又は後に消去するためのフラグが設定される。この新たなオーバヘッド専用ブロックへの整理統合に伴い、空間マネージャ９００のアドレスレジスタ９２０（図９）が更新される。上述のように、「ブロック法」に基づく具体例では、空間マネージャ９００は、好ましくは、ＶＰＢＡフィールド９２２と、ページ番号を含むアドレス指定子９２４との両方を有しているが、他の具体例として、空間マネージャ９００内のアドレス指定子９２４を省略してもよい。
【００６７】
なお、図１１は、それぞれが異なる数のセグメントを格納している異なるオーバヘッドページ１０２０〜１０２６を示している。このような各ページのセグメント数の不均一は、入力データに仮想論理ブロックアドレスが均一な頻度で割り当てられず、１つのＶＬＢＡがより頻繁に繰り返し使用された場合等に生じる。あるＶＬＢＡが他のＶＬＢＡより頻繁に割り当てられると、オーバヘッド専用ブロックは、オーバヘッド専用ブロック内の１つのオーバヘッドページがフル状態となることにより、上述の整理統合及び消去を行わなくてはならず、したがって、多くの未使用のオーバヘッドセグメント１０８０を残して、整理統合及び消去を行わなくてはならなくなる。整理統合及び消去時により多くの未使用のセグメント（図１１）があれば、オーバヘッド専用ブロックの消去サイクルはより速くなる。
【００６８】
図１２は、本発明に基づく「ランダム法」に基づく具体例を示している。図１２では、入力ユーザデータ１２０２〜１２１６に関連するオーバヘッドデータは、「ＯＶ」とＶＬＢＡにより示されている。例えば、「ＶＬＢＡ３１４」１２０６をサポートするオーバヘッドデータは、「ＯＶ−３１４」１２２６として示されている。このランダム法に基づく具体例では、上述したブロック法に基づく具体例とは異なり、オーバヘッドページは、特定のＶＬＢＡに専用して使用されない。ここでは、ＶＬＢＡに基づくユーザデータがホストから供給されると、そのユーザデータをサポートするために生成されたオーバヘッドデータは、オーバヘッド専用ブロックの次の使用可能なセグメントに格納される。ユーザデータのＶＬＢが連続的に供給された場合、オーバヘッドデータが連続的に生成され、これらは、入力データを定義するＶＬＢＡに関わらず、連続するアドレスが付されたオーバヘッドセグメント１２２２〜１２３８に連続的に格納される。図１２に示す具体例では、４つのデータファイルが供給され、各データファイルは、それぞれ仮想論理ブロックデータ１２０２、１２０４と、仮想論理ブロックデータ１２０６、１２０８と、仮想論理ブロックデータ１２１０、１２１２と、仮想論理ブロックデータ１２１４、１２１６とを有する。ここに示す入力データの構成は、例示的なものであり、各データファイルがそれぞれ２つのＶＬＢＡを有するとは限らず、更に、供給される複数のファイルが全て同じサイズであるとも限らない。この入力データをサポートするオーバヘッドデータは、ユーザデータ１２０２〜１２１６が供給された順序に基づいて、オーバヘッド専用ブロック１２２０の連続するアドレスが付されたオーバヘッドセグメント１２２２〜１２３６に順次格納される。
【００６９】
このランダム法に基づく具体例では、空間マネージャ９００のＶＰＢＡレジスタ９２２（図９）は、オーバヘッド専用ブロック１２２０の仮想物理ブロックアドレスを定義し、アドレス指定子は、実際のセグメントを特定する。なお、ランダム法の具体例においては、オーバヘッドセグメント８１０〜８２２（図８）をオーバヘッドページ８０２〜８０６にグループ化することは任意であり、このようなグループ化は行わなくてもよい。各オーバヘッドセグメント１２２２〜１２３６（図１２）には、アドレス指定子９２４において、ページ番号とセグメント番号とによりアドレスを付してもよく、或いは単にオーバヘッド専用ブロック１２２０内の全セグメント数に基づいてアドレスを付してもよい。バイナリフォーマットでは、これら２つのアドレスフォーマットは区別できないこともある。オーバヘッド専用ブロックを概念的に複数のページに分割できるか否かに関わらず、セグメントは、連続的にアドレスできるものとみなされる。オーバヘッド専用ブロックが概念的に複数のページに分割できる場合、第５のページの最後のセグメントと、第６のページの最初のセグメントとには、連続的なアドレスが付される。本発明のブロック法に基づく具体例では、アドレス指定子９２４には、オーバヘッドページ番号のみを格納すればよいため、このランダム法に基づく具体例では、ブロック法に基づく具体例に比べて、アドレス指定子９２４におけるアドレス指定のために実際に使用されるビット数が多くなる。
【００７０】
ランダム法に基づく具体例におけるオーバヘッド専用ブロックの整理統合は、最後のオーバヘッドセグメント１２３８にオーバヘッドデータが格納されたときに実行される。このランダム法に基づく具体例では、現在のオーバヘッドセグメントと廃棄可能のオーバヘッドセグメントが混在している。図１３は、フル状態のオーバヘッド専用ブロック１３０２を使用可能なオーバヘッド専用ブロック１３０４に整理統合する処理を示している。各セグメント１３１０〜１３５６に示す「Ｕ」は、「使用中フラグ」が第２の値に設定されていることを表している。また、「Ｏ」が示されているオーバヘッドセグメントは、「廃棄可能フラグ」が設定されていることを表している。使用されておらず、欠陥を含んでいないセグメントが現在使用可能なセグメントである。また、使用中であり、廃棄可能のセグメントではないセグメントは、現在のセグメントである。例えば、「オーバヘッドセグメント１２７」１３５６には、「ＯＶ−３４」として表されているＶＬＢＡ３４をサポートするオーバヘッドデータが格納され、「使用中フラグ」が設定されている。「オーバヘッドセグメント１２１」１３４４及び「オーバヘッドセグメント８」１３２６にもＶＬＢＡ３４をサポートするオーバヘッドデータが格納されているが、これらでは、「廃棄可能フラグ」が設定されている。ＶＬＢＡ３４が更新される度に、新たなデータがどこに格納されたかを示す相互参照情報を含むオーバヘッドデータが更新される。いかなるＶＬＢの更新情報も次に使用可能なセグメント１３１０〜１３５６に格納される。最も新しく更新された「ＯＶ−３４」は、「オーバヘッドセグメント１２７」１３５６であり、これが現在のセグメントである。ランダム法に基づく具体例における整理統合処理では、図１３においてフル状態のオーバヘッド専用ブロック１３０２内の丸で示す現在の（廃棄可能でない）オーバヘッドセグメントが新たなオーバヘッド専用ブロック１３０４に移動される。全ての現在のオーバヘッドデータが新たなオーバヘッド専用ブロック１３０４に移動されると、廃棄可能のオーバヘッド専用ブロック１３０２は消去される。この消去は直ちに実行してもよく、廃棄可能のブロック１３０２に消去用のタグを付し、適切な時期にブロック１３０２を消去してもよい。
【００７１】
図１４は、本発明のハイブリッド法に基づくフラッシュメモリ構成を示している。ブロック法及びランダム法のいずれが効率的かは、ＶＬＢＡの繰返し頻度の潜在的な変化に影響されるため、システムのユーザは、いずれの手法が効率的かを判断できない場合もある。以下に説明するハイブリッド法では、入力データへのＶＬＢＡの再割当の頻度に関わらず、概ね一定のレベルの効率性を維持できるシステムを提供する。本発明のハイブリッド法に基づく具体例は、図１４に示すように、固定オーバヘッドフィールド１４０６と、ランダムオーバヘッドフィールド１４０８とを有するオーバヘッド専用ブロック１４０４を備える。使用可能なＶＬＢＡアドレス９０２〜９１２（図９）は、図１４に示すように、例えばグループ１４０２等の複数のグループに概念的に分割される。各グループ、例えばグループ１４０２は、連続する複数のＶＬＢＡ１４１０〜１４１８によって定義される。各グループは、好ましくは等しい長さを有する。
【００７２】
ＶＬＢＡグループ１４０２内の連続するＶＬＢＡ１４１０〜１４１８は、オーバヘッド専用ブロック１４０４の固定オーバヘッドフィールド１４０６内の連続するオーバヘッドセグメント１４２０〜１４２９に関連付けられている。オーバヘッド専用ブロック１４０４内の固定オーバヘッドフィールド１４０６の数は、ＶＬＢＡグループ１４０２内のＶＬＢＡ１４１０〜１４１８の数に等しい。フラッシュメモリ装置内のＶＬＢＡの総数が複数のオーバヘッド専用ブロックに対応する複数の固定オーバヘッドフィールドに均等に分割できない場合、好ましくは、最後のグループ以外のグループは、固定オーバヘッドフィールド１４０６内のセグメント１４２０〜１４２９の数に等しい数のＶＬＢＡを有し、最後のＶＬＢＡのグループは、オーバヘッド専用ブロックの固定オーバヘッドフィールド１４０６内のセグメント１４２０〜１４２９の数より少ない数のＶＬＢＡを有する。
【００７３】
図１４は、オーバヘッド専用ブロック１４０４の固定オーバヘッドフィールド１４０６内の３２個のセグメント１４２０〜１４２９に対応する３２個のＶＬＢＡ１４１０〜１４１８からなるＶＬＢＡグループ１４０２を示している。ここでは、３２個のセグメントは、４つのページ１４５０〜１４５６に分割されている。ランダムオーバヘッドフィールド１４０８内の９６個のセグメント１４３１〜１４４８は、１２個のページ１４５８〜１４６４に分割されている。なお、これらの数は例示的なものであり、ＶＬＢＡのグループは、これより大きくても小さくてもよく、各オーバヘッド専用ブロック毎のセグメント数は、これより多くても少なくてもよい。更に、この具体例では、オーバヘッド専用ブロック１４０４の１／４を固定オーバヘッドフィールド１４０６として確保し、オーバヘッド専用ブロック１４０４の３／４をランダムオーバヘッドフィールド１４０８として確保しているが、この比も固定ではない。なお、本発明の好ましい具体例においては、固定オーバヘッドフィールド１４０６は、オーバヘッド専用ブロック１４０４の１／２より小さいことが望ましい。図１４に示す具体例では、４個のセグメント１４３８〜１４４４のみがオーバヘッドデータの格納に使用されている。図８Ｂを用いて説明したように、各セグメントは、好ましくは、使用中フラグと廃棄可能フラグとを含むフラグフィールドを有している。後に図１６を用いて詳細に説明するが、ランダムオーバヘッドフィールド１４０８内のオーバヘッドセグメントは、特定のＶＬＢＡには予め割り当てられてはいない。ハイブリッド法に基づく具体例においては、オーバヘッドセグメントは、オーバヘッドデータとユーザデータとを関連付ける物理アドレスレジスタを有する。また、ハイブリッド法に基づく具体例では、図９に示す空間マネージャ９００は、ＶＰＢＡレジスタ内のオーバヘッド専用ブロックのアドレスと、アドレス指定子９２４内の固定オーバヘッドアドレスとを参照する。
【００７４】
図１４において、選択されたセグメント１４２０〜１４２８及びセグメント１４３８〜１４４４のフラグ状態は、「使用中」を示すＵの有無及び「廃棄可能」を示すＯの有無によって示されている。「ＶＬＢＡ３２」１４１０を表す「オーバヘッドセグメント３２」１４２０及び「ＶＬＢＡ３６」を表す「オーバヘッドセグメント３６」１４２７には使用中フラグが示され、廃棄可能フラグは示されていない。したがって、これらのセグメントは現在のオーバヘッドデータを格納している。「オーバヘッドセグメント３３」１４２２、「オーバヘッドセグメント３４」１４２４、「オーバヘッドセグメント３５」１４２６には、使用中フラグが示されておらず、したがって、これらのセグメントにはオーバヘッドデータが未だ格納されていない。「オーバヘッドセグメント３７」１４２８には、使用中フラグと廃棄可能フラグの両方が示されており、したがってＶＬＢＡ３７は、新たなデータにより更新されており、したがって新たなオーバヘッドデータが生成され、ランダムオーバヘッドフィールド１４０８のセグメント１４４０に格納されたことが示されている。ハイブリッド法に基づくオーバヘッドデータの格納については、図１６を用いて後に更に詳細に説明する。
【００７５】
ハイブリッド法に基づく好ましい具体例においては、ランダムオーバヘッドフィールド１４０８内の各ページ１４５８〜１４６４の第１のセグメント１４３１〜１４３６は、更新マップを含む状態セグメント（Ｓｔａｔｕｓ Ｓｅｇｍｅｎｔ）である。好ましい具体例では、この状態セグメントは、ＶＬＢＡグループ１４０２内の各ＶＬＢＡに対応する現在のセグメントの位置を示すデータを含む。
【００７６】
図１５は、状態セグメント内の更新マップの一具体例を示している。なお、ここでは、例示的に、ランダムオーバヘッドフィールド１４０８の第１のページ１４５８の状態セグメント１４３１を示している。図１５に示す具体例では、更新マップは、固定オーバヘッドフィールド１４０６内のセグメント数に等しい数のレジスタ１５１０〜１５２６を有している。上述のように、更新マップ内の連続するレジスタは、固定オーバヘッドフィールド１４０６内の連続するセグメントに関連付けられた連続するＶＬＢＡに関連付けられている。更新マップに格納されるデータをこれらに限定するわけではないが、図１５では、特定のＶＬＢＡに関連付けられたフィールド内のページ番号及びセグメント番号を示している。図１４に示す具体例は、固定オーバヘッドフィールド１４０６内の更新マップを含んでいないが、第５ページの状態セグメント１４３２（図１４）内の更新マップの具体例である更新マップ１５００（図１５）では、更新マップは、状態セグメント１４３２を有するページ１４６０より先に、ページ１４５０〜１４５６のいずれかの固定領域である固定オーバヘッドフィールド１４０６又はランダム領域であるランダムオーバヘッドフィールド１４０８内の全ての現在のオーバヘッドセグメントを特定する。例えば、図１４及び図１５に示す具体例では、ＶＬＢＡ３２のオーバヘッドデータをサポートする現在の（廃棄可能ではない）オーバヘッドセグメント１４４７は、第４のページ１４５８の第７のセグメント１４４７に格納されている。次のページ１４６０の状態セグメント１４３２内に設けられている図１５に示す更新マップ１５００は、ＶＬＢＡ３２に対応するレジスタ１５１０において、このアドレス「第４ページ第７セグメント」を反映している。固定領域である固定オーバヘッドフィールド１４０６内において、ＶＬＢＡ３４に関連付けられている現在のオーバヘッドセグメント１４２４は、第０のページの第２のセグメントに格納されている。図１５に示すように、このアドレスは、ＶＬＢＡ３４に関連付けられたレジスタ１５１４において反映されている。このように、状態セグメント１４３１〜１４３６は、オーバヘッド専用ブロック１４０４において、状態セグメント１４３１〜１４３６を含むページより先の全てのページに含まれる全ての現在のオーバヘッドセグメントを特定するように設計されている。
【００７７】
図１６は、本発明のハイブリッド法に基づくオーバヘッド専用ブロックにオーバヘッドデータを格納する処理を示すフローチャートである。ステップ１６０２において、ＶＬＢＡによって定義された入力ユーザデータが供給される。図１６に示すフローチャートでは、例示的に、図１４に示すＶＬＢＡグループ１４０２と、オーバヘッド専用ブロック１４０４について説明する。ステップ１６０４において、入力データは、データ専用ブロックに格納される。ステップ１６０６において、入力データに関連するオーバヘッドデータが生成される。この処理では、データが格納されているＶＰＢＡを相互参照する必要がある。ステップ１６０８において、入力ＶＬＢＡに関連付けられたオーバヘッド専用ブロック１４０４が特定される。ステップ１６１０において、コントローラは、入力ＶＬＢＡに関連付けられている固定オーバヘッドフィールド１４０６内の特定のセグメント１４２０〜１４２９にアクセスする。次に、ステップ１６１２において、コントローラは、セグメントが使用中であるか否かを判定し、及びステップ１６１４においてセグメントが欠陥を含んでいるか否かを判定する。セグメントが未使用であり、欠陥も含まれていない場合、ステップ１６１６において、オーバヘッドデータは、入力ＶＬＢＡに関連付けて先に設けられた固定オーバヘッドフィールド１４０６内の特定のセグメント１４２０〜１４２９に格納される。固定オーバヘッドフィールド１４０６内に先に設けられているオーバヘッドセグメントがステップ１６１２において使用中であると判定された場合、又はステップ１６１４において欠陥を有すると判定された場合、ステップ１６１８において、コントローラは、ランダムオーバヘッドフィールド内の次の使用可能なオーバヘッドセグメントを特定する。ここでいう「次に使用可能な」という表現は、文字通り、ランダムオーバヘッドフィールド内において最後に使用されたセグメントの直後に続くセグメントアドレスを有する、ランダムオーバヘッドフィールド内の未使用で欠陥がないセグメントを指す。したがって、この処理では、未使用ではあるが欠陥を有するセグメントは、スキップされる。更に、ハイブリッド法の具体例においては、状態セグメントは、各ページの第１のセグメントに設けられるが、オーバヘッド情報を格納するための「次に使用可能な」セグメントの検索時には、この状態セグメントもスキップされる。ランダムオーバヘッドフィールド１４０８内のセグメントアドレスは、単に連続するセグメントアドレスとみなすこともできるが、ランダムオーバヘッドフィールド１４０８のマッピングは、好ましくはページの概念を含めてもよい。このアドレス指定方式では、第ｎのページの最後のセグメントアドレスの次のセグメントアドレスは、第（ｎ＋１）のページの最初のセグメントアドレスであることは、当業者にとって明らかである。なお、このアルゴリズムは、様々に変更してもよく、図１６に示すアルゴリズムは、本発明のハイブリッド法に基づいて正しいオーバヘッドセグメントを選択する手法を限定するものではない。例えば、ステップ１６１０〜ステップ１６１８において、使用可能な第１のセグメントを判定する際、この使用可能な第１のセグメントは、固定オーバヘッドフィールド１４０６内で予め定められているセグメントであってもよく、ランダムオーバヘッドフィールド１４０８内において次に使用可能なセグメントであってもよく、この処理では、実際のオーバヘッドセグメント内のフラグを調べる必要は必ずしもない。図１５を用いて説明したように、ランダム領域であるランダムオーバヘッドフィールド１４０８の状態セグメント１４３１内の更新マップ１５００は、固定領域である固定オーバヘッドフィールド１４０６とランダム領域であるランダムオーバヘッドフィールド１４０８の両方のオーバヘッドセグメントの状態を反映するように構成してもよい。これに代えて、固定領域である固定オーバヘッドフィールド１４０６内のオーバヘッドセグメント１４２０〜１４２９のオーバヘッドセグメントの状態は、図２に示すように、及び本発明の変形例を示す図１８及び図１９を用いて後述するように、各ページの最後に設けられた拡張フィールドに格納してもよい。固定オーバヘッドフィールド１４０６の各ページの拡張フィールドに設けられたフラグは、各ページ１４５０〜１４５６内の各ページが使用中であるか否かを示す。このように、図１６に示すステップ１６１０〜１６１８は、使用可能なセグメントを選択する一手法を例示的に示しているに過ぎない。
【００７８】
図１６に示すステップ１６２０において、コントローラは、ランダムオーバヘッドフィールド１４０８内において次に使用可能なセグメントを特定した後、このセグメントにオーバヘッドデータを格納する。ステップ１６２２において、コントローラは、状態セグメント及びフラグを適切に更新する。ここで更新されるのは、例えば状態セグメント１４３１〜１４３６内のフラグ１５０４、１５０８、１５０９のみではなく、実際のオーバヘッドセグメント１４３８〜１４４８内のフラグも含まれる。また、この処理は、入力ＶＬＢＡに関連付けられたオーバヘッドデータを格納するために使用された直前のセグメントを特定し、このセグメントに関連する廃棄可能フラグを設定する処理を含む。フラグの更新は、オーバヘッドデータが現在格納されているオーバヘッドセグメントに関連する使用中フラグの設定も含む。
【００７９】
図１４に示す具体例では、ランダムオーバヘッドフィールド１４０８内には、４つのセグメントにデータが格納されている。第１のセグメント１４３８には、ＶＬＢＡ５１をサポートするオーバヘッドデータが格納されている。オーバヘッドセグメント１４３８内のフラグは、このセグメントが使用中であり且つ廃棄可能であることを示している。図１６を用いて説明した処理に基づけば、ＶＬＢＡ５１のオーバヘッドデータがランダムオーバヘッドフィールド１４０８に格納されているということは、このオーバヘッドデータは、ＶＬＢＡ５１に対応する固定オーバヘッドフィールド１４０６にも既に格納されているということを示している。廃棄可能フラグは、このオーバヘッドデータをランダムオーバヘッドフィールド１４０８のオーバヘッドセグメント１４３８に格納するために、このＶＬＢＡ５１をサポートするオーバヘッドデータが更新されていることを示している。更新されたオーバヘッドデータは、第３のオーバヘッドセグメント１４４２に格納されている。このように、この具体例では、特定のＶＬＢＡをサポートするオーバヘッドデータは、固定オーバヘッドフィールド１４０６には一回しか格納できないが、ランダムオーバヘッドフィールド１４０８には複数回格納できることができる。
【００８０】
本発明の好ましい具体例においては、状態セグメント１４３１〜１４３６は、ランダムオーバヘッドフィールド１４０８内の各ページ１４５８〜１４６４の最初のセグメントとして設けられている。状態セグメントは、コントローラが特定のＶＬＢＡに関して最も最近に更新されているオーバヘッドデータを効率的に特定できるようにコントローラを補助し、これにより、コントローラによるデータ読出時間を短縮している。同様に、本発明の好ましい具体例においては、特定のＶＬＢＡをサポートするオーバヘッドデータを格納する際、コントローラは、このＶＬＢＡをサポートするオーバヘッドデータを格納する直前のセグメントを特定し、廃棄可能フラグを第２の値に設定する。ここでも、状態セグメント１４３１〜１４３６を調べることにより、この処理の効率が高まる。状態セグメントによりフラッシュメモリ装置の効率性を高めるこの他の処理は、ハイブリッド法を用いたオーバヘッド専用ブロックの整理統合処理である。後述する整理統合処理では、コントローラは、全ての現在のセグメントを特定し、これらのセグメントを新たなオーバヘッド専用ブロックに移動する。コントローラは、整理統合処理のために現在のセグメントを特定する際、検索範囲を固定オーバヘッドフィールドと、各ページの最初の状態セグメントに限定することにより、この処理の効率を高めることができる。
【００８１】
図１７は、フル状態になったオーバヘッド専用ブロック１７５０を空きがあるオーバヘッド専用ブロック１７５２に整理統合する、ハイブリッド法に基づく整理統合処理を示している。ここでは、説明を簡潔にするため、各ブロックは、２ページの固定オーバヘッドフィールドと、２ページのランダムオーバヘッドフィールドとを有し、各ページは６個のセグメントからなるとする。フル状態のオーバヘッド専用ブロックの固定領域１７４０内の１０個のオーバヘッドセグメントのうち５個のオーバヘッドセグメントには、「Ｕ」のマークが付されており、すなわち「使用中フラグ」が第２の値に設定されており、このオーバヘッドセグメントにオーバヘッドデータが格納されていることが示されている。例えば、ＶＬＢＡ３２のオーバヘッドデータを「ＯＶ−３２」と表すとすると、オーバヘッドデータが格納されている固定オーバヘッドフィールド内のセグメントは、「ＯＶ−３２」１７０２、「ＯＶ−３３」１７０４、「ＯＶ−３６」１７０６、「ＯＶ−４０」１７０８、「ＯＶ−４３」１７１０である。例えば「ＯＶ−３７」等の残りの５個のセグメントには「使用中フラグ」が示されておらず、したがって、これらのセグメントにはオーバヘッドデータが格納されていない。ここで、ＶＬＢＡ３７によって定義されるユーザデータの入力ＶＬＢが供給された場合、ＶＬＢＡ３７をサポートするオーバヘッドデータを格納するように予め確保されている空のオーバヘッドセグメント１７０９にこのオーバヘッドデータが格納される。ここで、次にＶＬＢＡ３３によって定義されたデータが供給された場合、固定オーバヘッドフィールド１７４０内のＯＶ−３３用に予め確保されているセグメント１７０４は、既に使用されており、ランダムオーバヘッドフィールド１７４２にも未使用のセグメントが残っていない。したがって、オーバヘッド専用ブロック１７５０は、「フル状態」となり、ランダムオーバヘッドフィールド１７４２の最後のセグメント１７２４にデータが格納された時点で整理統合処理が行われる。
【００８２】
整理統合処理では、オーバヘッドデータが格納されたセグメントのうち、個々のＶＬＢＡの最新のセグメントのみを使用する。例えば、ＶＬＢＡ３３をサポートするオーバヘッドデータであるＯＶ−３３は、複数のオーバヘッドセグメント１７０４、１７１２、１７１４、１７１８、１７２２に格納されている。これらのセグメントのうち、アドレス指定可能な最新のセグメント１７２２のみが現在のオーバヘッドデータを格納している。他のセグメントは、ＶＬＢＡ３３と対応するＯＶ−３３とが更新されることにより、古くなった廃棄可能のセグメントである。
【００８３】
図１７に示す具体例では、オーバヘッドデータＯＶ−３２、ＯＶ−３３、ＯＶ−３６、ＯＶ−４０、ＯＶ−４３をそれぞれ格納する５個のセグメント１７１６、１７２２、１７２４、１７２０、１７１０が現在のセグメントであり、これらは丸印によって強調されている。この具体例では、ランダムオーバヘッドフィールド１７４２の最後のセグメント１７２４にオーバヘッドデータが格納され、オーバヘッド専用ブロック１７５０がフル状態となっているため、整理統合処理が必要である。整理統合処理においては、図１７において破線で示すように、現在のセグメント１７１６、１７２２、１７２４、１７２０、１７１０に格納されているオーバヘッドデータＯＶ−３２、ＯＶ−３３、ＯＶ−３６、ＯＶ−４０、ＯＶ−４３が新たなオーバヘッド専用ブロック１７５２の固定オーバヘッドフィールド１７４４内の各所定のセグメント１７２６、１７２８、１７３０、１７３２、１７３４に移動される。整理統合処理を効率的に行うために、コントローラは、好ましくは、検索範囲を固定オーバヘッドフィールド１７４０内のフラグと、状態セグメント１７６０、１７６２内のフラグのみに限定する。以上説明したハイブリッド法を用いたデータ格納、データ読出、オーバヘッドブロック整理統合及び性能向上に関する更なる特徴は、当業者にとって明らかである。
【００８４】
図１８は、本発明に基づく「スーパブロック法（”ＳｕｐｅｒＢｌｏｃｋ”ｅｍｂｏｄｉｍｅｎｔ）」の具体例を示している。スーパブロック法に基づく具体例の特徴は、ハイブリッド法に基づく具体例との比較により明らかとなる。ハイブリッド法に基づく具体例では、オーバヘッド専用ブロック内の特定のオーバヘッドセグメント１４２０〜１４２９は、ユーザデータのＶＬＢ１４１０〜１４１８のグループの中から、特定のＶＬＢをサポートする所定のオーバヘッドデータを個別に格納している。同様に、スーパブロック法に基づく具体例では、オーバヘッド専用ブロック１８００内の特定のオーバヘッドセグメント１８４０〜１８４６を含むスーパオーバヘッドフィールド（Ｓｕｐｅｒ Ｏｖｅｒｈｅａｄ Ｆｉｅｌｄ）１８２０〜１８２８は、ユーザデータの複数の仮想論理ブロック１８０４〜１８１４を含む「スーパ仮想論理ブロック（Ｓｕｐｅｒ Ｖｉｒｔｕａｌ Ｌｏｇｉｃａｌ Ｂｌｏｃｋ：ＳＶＬＢ）」１８０２のグループのうち、ユーザデータの特定の仮想論理ブロックをサポートするオーバヘッドデータを格納するように予め指定されている。ハイブリッド法に基づく具体例では、予め指定されたオーバヘッドセグメントを含むフィールドは、図１４に示す具体例では４個のページを有し、図１７に示す具体例では２個のオーバヘッドページを有する「固定オーバヘッドフィールド」である。図１８に示す具体例においては、予め指定されたオーバヘッドセグメントは、単一のページ１８２０である。なお、スーパブロック法に基づく具体例では、予め指定されたオーバヘッドセグメントを複数のページ亘って分散させてもよい。図１９は、それぞれ２個のオーバヘッドページ１９１０、１９１２〜１９１８、１９２０を含むスーパオーバヘッドフィールド１９０２〜１９０６を示している。このように、スーパオーバヘッドフィールドは、単一のページ１８２０のみで構成してもよく、複数のオーバヘッドページ１９１０、１９１２で構成してもよい。ハイブリッド法における固定オーバヘッドフィールド１４０６と、このスーパオーバヘッドフィールド１９０２の違いは、名称の違いのみではない。ハイブリッド法におけるオーバヘッド専用ブロック１４０４内の固定オーバヘッドフィールド１４０６は、１個のみであるが、スーパブロック法に基づく専用オーバヘッドブロック１９００内には、複数のスーパオーバヘッドフィールド１９０２〜１９０６が設けられている。ＳＶＬＢ１８０２は、各スーパオーバヘッドフィールド内の予め指定されたオーバヘッドセグメント１８４０〜１８４６の数に対応するいかなる数のＶＬＢを含んでいてもよいが、ＳＶＬＢ１８０２内のＶＬＢ１８０４〜１８１４の数は、２の累乗であることが好ましいことは、当業者にとって明らかである。スーパオーバヘッドフィールドを含むオーバヘッドセグメントの数が少ないと、スーパブロック法の効果が薄れるため、オーバヘッドスーパブロックには、６４個又は１２８個のオーバヘッドセグメントを設けることが望ましい。図１８及び図１９は、いずれも１２８個のオーバヘッドセグメントを有するオーバヘッドスーパブロックを示している。
【００８５】
上述のように、標準的なサイズのブロック及びページにおいては、オーバヘッドセグメントにエラー訂正情報を含ませないＥＣＣデザイン１では、オーバヘッドページに含まれるオーバヘッドセグメントは１２８個となり、オーバヘッドセグメントに単純なパリティチェック情報のみを設けるＥＣＣデザイン２では、オーバヘッドページに含まれるオーバヘッドセグメントは、６２個となる。図１８に示す単一のページ１８２０に設けられたスーパオーバヘッドフィールドを有する１２８個のオーバヘッドセグメント１８４０〜１８４６は、ＥＣＣデザイン１を採用した具体例である。一方、図１９に示すスーパオーバヘッドフィールド１９０２は、それぞれ６４個のオーバヘッドセグメントを有する２個のオーバヘッドページ１９１０、１９１２から構成されている。１ページにつき６４個のオーバヘッドを設ける具体例は、ＥＣＣデザイン２に対応している。図１８及び図１９からわかるように、多数のスーパオーバヘッドフィールド１９０２〜１９０６を単一のオーバヘッド専用ブロック１９００に効率的に収めるために、スーパブロック法において使用するエラー訂正法は、ＥＣＣデザイン１、ＥＣＣデザイン２又はＥＣＣデザイン３が好ましい。当業者に理解されるように、１個のスーパオーバヘッドフィールド１９０２につき２個のページを必要とするＥＣＣデザイン２と同様、ＥＣＣデザイン３を組み込んだスーパブロック法に基づく具体例では、スーパオーバヘッドフィールドは、複数のページを必要とする。ＥＣＣデザイン３では、１個のページにつき８個のセグメントしか設けることができないため、１２８個のＶＬＢＡの範囲に対応するスーパ仮想論理ブロックをサポートするためには、１６個のページが必要となる。したがって、ＥＣＣデザイン３を用いたスーパブロック法に基づく具体例では、ＳＶＬＢ内のＶＬＢＡの範囲が縮減される。
【００８６】
スーパブロック法に基づく好ましい具体例では、空間マネージャ９００のＶＰＢＡレジスタ９２２（図９）は、オーバヘッド専用ブロックのＶＰＢＡを参照する。このＶＰＢＡは、スーパブロック法においては、ＳＶＰＢＡと呼ばれる。アドレス指定子９２４は、スーパオーバヘッド専用ブロックにおいて現在使用されているページ１８２０〜１８２８のページ番号を参照する。例えば図１９に示す、独立したオーバヘッドセグメントの予め指定された範囲１９０２が複数のページを占める具体例では、空間マネージャ９００のアドレス指定子９２４は、好ましくは現在の全てのページを参照する。図には示していないが、スーパブロック法に基づく具体例では、好ましくは、図９に示すフラグ９３０〜９３４に加えて、移動待ち（Ｍｏｖｅ−Ｐｅｎｄｉｎｇ）「ＭｖＰ」を示すフィールドと、移動完了（Ｍｏｖｅ−Ｃｏｍｐｌｅｔｅ）「ＭｖＣ」を示すフィールドとを設ける。
【００８７】
電源投入時における空間マネージャのロード処理を容易にするためには、不揮発性フラッシュメモリ内のいずれかの部分で論理アドレスを参照する必要がある。上述のように、ＥＣＣデザイン１及びＥＣＣデザイン２の両方において、オーバヘッドセグメントは、仮想論理ブロックアドレスを参照するのに十分なメモリを有する。或いは、本発明に基づく個別にアドレス指定可能なページ１８２０〜１８２８は、従来のセクタ２００（図２）として予め指定されたメモリ領域として使用できる。従来のセクタ２００は、５１２バイトのデータ領域２０２と１６バイトの拡張フィールド２０４とを有してる。本発明に基づくオーバヘッドセグメント１８４０〜１８４６は、従来のセクタのデータ領域２０２として指定されていたメモリ領域と同じサイズのメモリ領域を占める。一方、本発明に基づく、使用可能なメモリ領域１８８０は、従来の拡張フィールド２０４に対応する。好ましい具体例においては、拡張フィールド１８８０は、スーパオーバヘッド専用ブロック１８００に対応するスーパ仮想論理ブロック１８０２のスーパ仮想論理ブロックアドレス（ＳＶＬＢＡ）を格納するために使用される。電源投入時には、拡張フィールド１８８０に格納されている情報に基づいて、空間マネージャ内の論理アドレスと物理アドレスが関連付けられる。
【００８８】
ＲＡＭを使用する空間マネージャ９００のメモリ消費量を制限するために、アドレス指定子９２４は、参照する情報をページレベルに制限し、コントローラは、プログラミングされたアルゴリズムに基づいて各セグメントを特定する。ＳＶＬＢ１８０２内のアドレスに基づいて定義されたユーザデータの新たなＶＬＢが供給された場合、コントローラは、図１８においては個々のページ１８２０〜１８２８によって表されている次のスーパオーバヘッドフィールドを使用する。図１９に示すような、２個のオーバヘッドページ１９１０、１９１２から構成されるスーパオーバヘッドフィールド１９０２を有する具体例においては、好ましくは、両方のオーバヘッドページ１９１０、１９１２の拡張フィールドがＳＶＬＢＡを参照し、空間マネージャ９００は、スーパオーバヘッドフィールドの両方のオーバヘッドページ１９１０、１９１２を参照する。
【００８９】
図２０は、スーパブロック法に基づくオーバヘッドデータの格納処理を順次的に示す図である。スーパオーバヘッド専用ブロック２０００内のセグメント行（Ｓｅｇｍｅｎｔ ｃｏｌｕｍｎ）２０２０〜２０２６は、スーパ仮想論理ブロック２００４を構成する連続したＶＬＢＡ２００６〜２０１４に予め関連付けられている。図２０Ａに示す第１のステップでは、「ＶＬＢＡ０」２００６をサポートするオーバヘッドデータ「ＳＶＬＢＡ−ＯＶ０」２０５０が生成され、第１のオーバヘッドページ（１個のスーパオーバヘッドフィールドを構成する）の「オーバヘッドセグメント０」２０５６に格納される。セグメント２０５６に格納されるアドレスは、例えばＶＰＢＡ６７等、任意に選択されている。また、下向きの矢印で示すように、新たなオーバヘッドページ２０３２には、先のオーバヘッドページ２０３０からのデータもコピーされる。なお、ＶＰＢＡアドレスを含む新たなオーバヘッドデータが供給されている現在のオーバヘッドページ２０３２のセグメント２０５６には、先のオーバヘッドページ２０３０からのデータはコピーされない。
【００９０】
図２０Ｂに示す第２のステップでは、「ＶＬＢＡ１」２００８をサポートするオーバヘッドデータ「ＳＶＬＢＡ−ＯＶ１」２０５２が生成され、第２のオーバヘッドページ２０３４の「オーバヘッドセグメント１」２０５８に格納される。ここでは、新たなセグメント２０５８に格納されるアドレスとして、例示的にＶＰＢＡ９２７が選択されている。なお、ここでも下向きの矢印及び新たなオーバヘッドページ２０３４における第１のセグメントにコピーされたＶＰＢＡ６７で示すように、新たなオーバヘッドページ２０３４には、先のオーバヘッドページ２０３２からのデータがコピーされる。
【００９１】
図２０Ｃに示す第３のステップでは、「ＶＬＢＡ１」２００８の更新をサポートするために、オーバヘッドデータ「ＳＶＬＢＡ−ＯＶ１」２０５４が再び生成される。ここでも、新たなオーバヘッドページ２０３６の第１のセグメント２０５９におけるＶＰＢＡ６７及び下向きの矢印で示すように、先のオーバヘッドページ２０３４のデータが新たなオーバヘッドページ２０３６にコピーされる。なお、新たなオーバヘッドデータ２０５４は、ＶＬＢＡ１のオーバヘッドデータを格納するために使用された第２のオーバヘッド行２０２２内のデータを更新するデータである。したがって、新たなセグメント２０６０には、入力オーバヘッドデータが格納されるため、新たなセグメント２０６０には、先のセグメント２０５８からのデータは、コピーされない。すなわち、新たなオーバヘッドページ２０３６の新たなセグメント２０６０には、ＶＰＢＡ９２７はコピーされず、この第３のステップにおいて生成された「ＳＶＬＢＡ−ＯＶ１」２０５４から生成されたオーバヘッドデータであるＶＰＢＡ１４が格納される。これらの３つのステップにより説明したように、新たに生成されたオーバヘッドデータが格納されるセグメントを除き、新たなオーバヘッドページには、先のオーバヘッドページからのデータが格納される。
【００９２】
図２１は、スーパブロック法に基づく具体例における整理統合処理を説明する図である。先の具体例では、ページ毎のセグメント数を１２８個としているが、ここでは、説明を簡潔にするために、ページ２１０２のセグメント２１２０〜２１３０の数を８個としている。同様に、先の具体例では、オーバヘッド専用ブロック毎のページ数を好ましくは１６個又は３２個としているが、ここでは、オーバヘッド専用ブロック２１００のページ２１０２〜２１１０の数を５個としている。ここでは、最後のスーパオーバヘッドフィールド２１１０（これは最後のページでもある）のセグメント２１４２にデータが格納されているので、オーバヘッド専用ブロック２１００は、「フル状態」であるとみなされ、破線で示すように、現在のセグメント２１２０、２１２２、２１３６、２１３８、２１４０、２１４２、２１３２、２１３４は、新たなオーバヘッド専用ブロック２１７０に整理統合される。「ＯＶ−４」２１４０は、オーバヘッド専用ブロック２１００内でオーバヘッドデータが格納された最後のオーバヘッドセグメントであるため、同じ行内の先のオーバヘッドセグメント２１２８は、廃棄可能のセグメントとなっている。丸で囲まれたセグメント２１２０、２１２２、２１３６、２１３８、２１４０、２１４２、２１３２、２１３４は、新たなオーバヘッド専用ブロック２１７０の第１のスーパオーバヘッドフィールド（第０のページ）２１１２に移動される。上述のように、新たなオーバヘッド専用ブロック２１７０に整理統合されるデータは、先のオーバヘッド専用ブロック２１００において格納されていた行と同じ行に格納され、各行は、特定のＶＬＢＡを表すオーバヘッドデータに予め関連付けられている。新たなスーパオーバヘッド専用ブロック２１７０の第１のスーパオーバヘッドフィールド２１１２は、整理統合処理において現在のセグメントを格納するための専用のフィールドであるため、オーバヘッド専用ブロック２１７０において更新できるＶＬＢオーバヘッドの数は、オーバヘッド専用ブロック２１７０内のスーパオーバヘッドフィールド２１１２〜２１１８の数より１少ない数となる。
【００９３】
以上、本発明の構成及び動作の原理を明瞭に説明するために、本発明の特定の具体例を多くの特定の詳細とともに記述した。ここで説明した特定の具体例及びその詳細は、添付の請求の範囲を制限するものではない。本発明の思想及び範囲から逸脱することなく、上述した具体例を様々に変形できることは、当業者にとって明らかである。
【図面の簡単な説明】
【図１】
複数のセクタを有する複数のデータブロックからなる従来のフラッシュメモリアレーを示す図である。
【図２】
ユーザデータ領域及びオーバヘッド領域からなる従来のデータセクタを示す図である。
【図３】
仮想論理ブロックを物理データブロックに格納し、及び仮想論理ブロックを読み出すためのマスキング及び連結処理を説明する図である。
【図４】
従来の空間マネージャの構成を示す図である。
【図５】
データ格納時に物理アドレスを定義する従来の一手法を説明するフローチャートである。
【図６】
格納されたデータを読み出し、元の仮想アドレスに再び関連付ける従来の一手法を説明するフローチャートである。
【図７】
本発明に基づき、データ専用ブロックとオーバヘッド専用ブロックに分割されたフラッシュメモリ装置を示す図である。
【図８】
図８Ａは、本発明に基づくオーバヘッド専用ブロックのページ及びセグメントを示す図であり、図８Ｂは、本発明に基づくオーバヘッドセグメントをより詳細に示す図である。
【図９】
本発明に基づく空間マネージャを示す図である。
【図１０】
ブロック法に基づくオーバヘッド専用ブロック内の特定の所定のページにそれぞれ格納されたＶＬＢＡのグループ内の特定のＶＬＢＡをサポートするオーバヘッドデータを示す図である。
【図１１】
ブロック法において、フル状態のオーバヘッド専用ブロック内の全ての現在のセクタを新たなオーバヘッド専用ブロックに整理統合する処理を説明する図である。
【図１２】
ランダム法に基づくオーバヘッドデータの格納を説明する図である。
【図１３】
全ての現在のセクタを新たなオーバヘッド専用ブロックに整理統合する処理を説明する図である。
【図１４】
ハイブリッド法に基づくオーバヘッドデータの格納を説明する図である。
【図１５】
ハイブリッド法に基づくオーバヘッドセグメントの構造の一具体例を示す図である。
【図１６】
ハイブリッド法に基づくデータ格納処理の手順を示すフローチャートである。
【図１７】
ハイブリッド法において、フル状態のオーバヘッド専用ブロックを新たなオーバヘッド専用ブロックに整理統合する処理を説明する図である。
【図１８】
スーパブロック法に基づくオーバヘッド専用ブロックの構造及び関連付けを示す図である。
【図１９】
それぞれがスーパオーバヘッドフィールドを有する複数のページを有するスーパブロック法の具体例を示す図である。
【図２０】
スーパブロック法に基づくオーバヘッドデータの格納処理を連続する３つのステップにより説明する図である。
【図２１】
スーパブロック法において、フル状態のオーバヘッド専用ブロックを新たなオーバヘッド専用ブロックに整理統合する処理を説明する図である。
【図１】
2004508626.tif 000003
【図２】
2004508626.tif 000004
【図３】
2004508626.tif 000005
【図４】
2004508626.tif 000006
【図５】
2004508626.tif 000007
【図６】
2004508626.tif 000008
【図７】
2004508626.tif 000009
【図８】
2004508626.tif 000010
【図９】
2004508626.tif 000011
【図１０】
2004508626.tif 000012
【図１１】
2004508626.tif 000013
【図１２】
2004508626.tif 000014
【図１４】
2004508626.tif 000015
【図１５】
2004508626.tif 000016
【図１６】
2004508626.tif 000017
【図１７】
2004508626.tif 000018
【図２０】
2004508626.tif 000019
【国際公開パンフレット】
2004508626.tif 000020
2004508626.tif 000021
2004508626.tif 000022
2004508626.tif 000023
2004508626.tif 000024
2004508626.tif 000025
2004508626.tif 000026
2004508626.tif 000027
2004508626.tif 000028
2004508626.tif 000029
2004508626.tif 000030
2004508626.tif 000031
2004508626.tif 000032
2004508626.tif 000033
2004508626.tif 000034
2004508626.tif 000035
2004508626.tif 000036
2004508626.tif 000037
2004508626.tif 000038
2004508626.tif 000039
2004508626.tif 000040
2004508626.tif 000041
2004508626.tif 000042
2004508626.tif 000043
2004508626.tif 000044
2004508626.tif 000045
2004508626.tif 000046
2004508626.tif 000047
2004508626.tif 000048
2004508626.tif 000049
2004508626.tif 000050
2004508626.tif 000051
2004508626.tif 000052
2004508626.tif 000053
2004508626.tif 000054
2004508626.tif 000055
2004508626.tif 000056
2004508626.tif 000057
2004508626.tif 000058
2004508626.tif 000059
2004508626.tif 000060
2004508626.tif 000061
2004508626.tif 000062
2004508626.tif 000063
2004508626.tif 000064
2004508626.tif 000065
2004508626.tif 000066
2004508626.tif 000067
2004508626.tif 000068
2004508626.tif 000069
2004508626.tif 000070
2004508626.tif 000071
2004508626.tif 000072
2004508626.tif 000073
2004508626.tif 000074
2004508626.tif 000075
2004508626.tif 000076
2004508626.tif 000077
2004508626.tif 000078
2004508626.tif 000079
2004508626.tif 000080
2004508626.tif 000081
2004508626.tif 000082
2004508626.tif 000083
2004508626.tif 000084
2004508626.tif 000085
【国際公開パンフレット（コレクトバージョン）】
2004508626.tif 000086
【国際調査報告】
2004508626.tif 000087
2004508626.tif 000088
2004508626.tif 000089