(57)【特許請求の範囲】
【請求項１】
データを書き換える際の消去単位であるブロックとして、前記データを記憶する複数のデータブロックと、前記データブロックのデータの書き換えに関する情報を記憶する複数の管理ブロックと、を有する記憶媒体（３）に対して、前記データの書き換えを管理する管理装置（１）であって、
前記複数の管理ブロックを前記情報の記憶のために使用する順序を設定するとともに、前記順序を複数の管理ブロックを繰り返して使用するように設定し、
前記データを書き換える書換対象のデータブロックを変更する際には、前記順序に従って前記書換対象のデータブロックのデータの書き換えに関する情報を記憶する前記管理ブロックを変更する（ステップ１２０〜１９０）構成を有し、
前記書換対象のデータブロックのデータの書き換えに関する情報とは、前記書換対象のデータブロックのアドレスと、前記アドレスの書き換え状態を示す第１情報と、前記書換対象のデータブロックのデータの書き換え状態を示す第２情報と、のうち少なくとも１種であり、
且つ、前記書換対象のデータブロックのアドレスと、前記第１情報及び第２情報のうち少なくとも第１情報と、を異なる管理ブロックに記憶する（ステップ１２０〜１９０）ことを特徴とする記憶媒体の管理装置。
【請求項２】
前記複数の管理ブロックには、それぞれ、前記書換対象のデータブロックのアドレスを記憶するアドレス部と、前記第１情報及び第２情報を記憶する状態記憶部とを備えたことを特徴とする請求項１に記載の記憶媒体の管理装置。
【請求項３】
前記管理ブロックとして、使用順序の早い第１の管理ブロックと次の使用順序の第２の管理ブロックとを備え、
前記第２の管理ブロックには、前記書換対象のデータブロックのアドレスを記憶し、
前記第１の管理ブロックには、第２の管理ブロックのアドレスの書き換え開始を示す情報と、第２の管理ブロックのアドレスの書き換え完了を示す情報と、前記書換対象のデータブロックのデータの書き換え完了を示す情報と、を記憶する（ステップ１２０〜１９０）ことを特徴とする請求項１又は２に記載の記憶媒体の管理装置。
【請求項４】
データを書き換える際の消去単位であるブロックとして、前記データを記憶する複数のデータブロックと、前記データブロックのデータの書き換えに関する情報を記憶する複数の管理ブロックと、を有する記憶媒体（３）に対して、前記データの書き換えを管理する管理装置（１）であって、
前記複数の管理ブロックを前記情報の記憶のために使用する順序を設定するとともに、前記順序を複数の管理ブロックを繰り返して使用するように設定し、
前記データを書き換える書換対象のデータブロックを変更する際には、前記順序に従って前記書換対象のデータブロックのデータの書き換えに関する情報を記憶する前記管理ブロックを変更する（ステップ１２０〜１９０）構成を有し、
前記書換対象のデータブロックのデータの書き換えに関する情報とは、前記書換対象のデータブロックのアドレスと、前記アドレスの書き換え状態を示す第１情報と、前記書換対象のデータブロックのデータの書き換え状態を示す第２情報と、のうち少なくとも１種であり、
前記複数の管理ブロックには、それぞれ、前記書換対象のデータブロックのアドレスを記憶するアドレス部と、前記第１情報及び第２情報を記憶する状態記憶部とを備え、
且つ、前記管理ブロックとして、使用順序の早い第１の管理ブロックと次の使用順序の第２の管理ブロックとを備え、
前記第２の管理ブロックには、前記書換対象のデータブロックのアドレスを記憶し、
前記第１の管理ブロックには、第２の管理ブロックのアドレスの書き換え開始を示す情報と、第２の管理ブロックのアドレスの書き換え完了を示す情報と、前記書換対象のデータブロックのデータの書き換え完了を示す情報と、を記憶する（ステップ１２０〜１９０）ことを特徴とする記憶媒体の管理装置。
【請求項５】
データを書き換える際の消去単位であるブロックとして、前記データを記憶する複数のデータブロックと、前記データブロックのデータの書き換えに関する情報を記憶する複数の管理ブロックと、を有する記憶媒体（３）に対して、前記データの書き換えを管理する管理装置（１）であって、
前記複数の管理ブロックを前記情報の記憶のために使用する順序を設定するとともに、前記順序を複数の管理ブロックを繰り返して使用するように設定し、
前記データを書き換える書換対象のデータブロックを変更する際には、前記順序に従って前記書換対象のデータブロックのデータの書き換えに関する情報を記憶する前記管理ブロックを変更する（ステップ１２０〜１９０）構成を有し、
前記複数の管理ブロックのうち所定の管理ブロックに、更に、前記記憶媒体に電力を供給する電源の遮断の発生を示す情報を記憶する異常記憶部を有し、
前記電源の遮断から復帰する際には、前記異常記憶部に、前記電源の遮断の発生を示すフラグを設定することを特徴とする記憶媒体の管理装置。
【請求項６】
前記管理ブロックのデータを消去する際には、前記異常記憶部を有する前記所定の管理ブロック以外から順番にデータを消去することを特徴とする請求項５に記載の記憶媒体の管理装置。
【請求項７】
データを書き換える際の消去単位であるブロックとして、前記データを記憶する複数のデータブロックと、前記データブロックのデータの書き換えに関する情報を記憶する複数の管理ブロックと、を有する記憶媒体（３）に対して、前記データの書き換えを管理する管理装置（１）であって、
前記複数の管理ブロックを前記情報の記憶のために使用する順序を設定するとともに、前記順序を複数の管理ブロックを繰り返して使用するように設定し、
前記データを書き換える書換対象のデータブロックを変更する際には、前記順序に従って前記書換対象のデータブロックのデータの書き換えに関する情報を記憶する前記管理ブロックを変更する（ステップ１２０〜１９０）構成を有し、
前記複数の管理ブロックのうち所定の管理ブロックに、更に、前記記憶媒体に電力を供給する電源の遮断の発生を示す情報を記憶する異常記憶部を有し、
前記管理ブロックのデータを消去する際には、前記異常記憶部を有する前記所定の管理ブロック以外から順番にデータを消去することを特徴とする記憶媒体の管理装置。
【請求項８】
前記書換対象のデータブロックのデータの書き換えに関する情報とは、前記書換対象のデータブロックのアドレスと、前記アドレスの書き換え状態を示す第１情報と、前記書換対象のデータブロックのデータの書き換え状態を示す第２情報と、のうち少なくとも１種であることを特徴とする請求項５〜７のいずれか１項に記載の記憶媒体の管理装置。
【請求項９】
前記複数の管理ブロックには、それぞれ、前記書換対象のデータブロックのアドレスを記憶するアドレス部と、前記第１情報及び第２情報を記憶する状態記憶部とを備えたことを特徴とする請求項８に記載の記憶媒体の管理装置。
【請求項１０】
前記書換対象のデータブロックのアドレスと、前記第１情報及び第２情報のうち少なくとも第１情報と、を異なる管理ブロックに記憶する（ステップ１２０〜１９０）ことを特徴とする請求項８又は９に記載の記憶媒体の管理装置。
【請求項１１】
前記管理ブロックとして、使用順序の早い第１の管理ブロックと次の使用順序の第２の管理ブロックとを備え、
前記第２の管理ブロックには、前記書換対象のデータブロックのアドレスを記憶し、
前記第１の管理ブロックには、第２の管理ブロックのアドレスの書き換え開始を示す情報と、第２の管理ブロックのアドレスの書き換え完了を示す情報と、前記書換対象のデータブロックのデータの書き換え完了を示す情報と、を記憶する（ステップ１２０〜１９０）ことを特徴とする請求項９又は１０に記載の記憶媒体の管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばフラッシュメモリ（Ｆｌａｓｈメモリ）等の記録媒体（記憶媒体）におけるデータの書き込みや消去が可能な記憶媒体の管理装置に関するものである。
【背景技術】
【０００２】
記憶媒体である例えばＦｌａｓｈメモリについては、その特性により、電源瞬断等の原因によって、書き込み又は消去途中で処理中断が発生すると、データが消失する懸念がある。
【０００３】
この対策として、下記特許文献１には、図２１に示すように、レコード（データ単位）ごとに冗長領域を確保して、書換処理の状態（書き換え処理フェーズ）を逐次記憶し、書き換え処理中断後の再開時には、前記各冗長領域から書き換え処理フェーズを判別することで、書き換え処理の中断とその対象レコードを検出する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−３１８７３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来技術では、書き換え処理がレコードに対して並列に行われないことを前提とすると、書き換え対象レコード以外の冗長領域は、その時点では無駄になるので、メモリ効率の観点からは望ましくない。
【０００６】
特に、レコード数が増加すると、無駄な冗長領域が増加する。
また、書き換え処理の中断と書き換え対象レコードを検出するためには、書き換え処理フェーズと書き換え対象レコードのアドレスだけを記憶すればよいので、例えば、１つのブロック（消去単位）に前記情報を記憶すれば、無駄な冗長領域が発生せず、高メモリ効率である。
【０００７】
しかしながら、この場合には、書き換え処理状態を記憶するブロックに負荷が集中するため、記憶媒体の耐久性を損なう。
つまり、書き換え回数に制限のある記憶媒体においては、その寿命が短くなる。
【０００８】
本発明は、前記課題を解決するためになされたものであり、その目的は、記憶媒体のデータ書き換え処理の中断を検出する場合でも、高いメモリ効率と高い耐久性とを両立できる記憶媒体の管理装置を提供することにある。
【課題を解決するための手段】
【０００９】
本発明の記憶媒体の管理装置は、データを書き換える際の消去単位であるブロックとして、前記データを記憶する複数のデータブロックと、前記データブロックのデータの書き換えに関する情報を記憶する複数の管理ブロックと、を有する記憶媒体に対して、前記データの書き換えを管理する管理装置であって、前記複数の管理ブロックを前記情報の記憶のために使用する順序を設定するとともに、前記順序を複数の管理ブロックを繰り返して使用するように設定し、前記データを書き換える書換対象のデータブロックを変更する際には、前記順序に従って前記書換対象のデータブロックのデータの書き換えに関する情報を記憶する前記管理ブロックを変更することを特徴とする。
【００１０】
本発明では、記憶媒体に、データを記憶する複数のデータブロックとそのデータブロックのデータの書き換えに関する情報を記憶する複数の管理ブロックとを有しており、その複数の管理ブロックを繰り返して使用するように、複数の管理ブロックを循環的に使用するように設定されている。つまり、複数の管理ブロックを繰り返して使用するように、複数の管理ブロックに対してデータを書き換える順序が設定されている。
【００１１】
そして、データを書き換える書換対象のデータブロック（以下対象データブロックと記すこともある）を変更する際には、前記順序に従って対象データブロックのデータの書き換えに関する情報、例えば対象データブロックのアドレスやアドレスの書き換え状態（例えば書き換え開始や完了）や対象データブロックのデータの書き換え状態（例えば書き換え完了）を記憶してゆく。
【００１２】
つまり、本発明では、複数の管理ブロックの使用順序を設定して複数回循環的に使用することにより、記憶媒体のデータ書き換え処理の中断を検出する場合に、特定の管理ブロックに負荷（即ち書き換えを行うための動作）が集中することを避けることができる。これにより、書き換えの際の負荷を分散することができるので、記憶媒体の高い耐久性を実現することができる。
【００１３】
また、従来のように、レコードに対して１対１に冗長領域を設定するのではなく、同じ管理ブロックを複数回使用するように管理ブロックを使用する順番を設定しているので、従来に比べて、使用する管理ブロックを減らすことが可能である。そのため、メモリ効率を高めることができる。
【００１４】
例えば管理ブロック数をデータブロック数より少なくすることができ、また、データブロック数が増えた場合でも、管理ブロック数を維持することやデータブロック数の増加数より少ない増加数とすることが可能である。
【００１５】
つまり、冗長領域は、管理ブロックとして利用するブロック数分となり、また、利用しなければならない管理ブロック数は、データブロック数に依存しないという利点がある。
従って、本発明では、記憶媒体のデータの書き換え処理の際に、例えば電源の遮断による書き換え処理中断を検出する場合でも、記憶媒体の高いメモリ効率と高い耐久性とを両立できるという顕著な効果を奏する。
【図面の簡単な説明】
【００１６】
【図１】実施例１の記憶媒体の管理装置の概略構成を示す説明図である。
【図２】実施例１のＦｌａｓｈメモリの構成例を示す説明図である。
【図３】実施例１のＦｌａｓｈメモリのブロックの割り当て及びブロックの論理構造を示す説明図である。
【図４】実施例１のＦｌａｓｈメモリにおける書き換えの技術思想を示す説明図である。
【図５】実施例１のＦｌａｓｈメモリにおける管理ブロック群の論理構造を示す説明図である。
【図６】実施例１のＦｌａｓｈメモリにおける各管理ブロックと各状態記憶部との関係を示す説明図である。
【図７】実施例１におけるデータの書き込み時の処理を示すフローチャートである。
【図８】実施例１のＦｌａｓｈメモリにおける更新する管理ブロックの指定方法を示す説明図である。
【図９】実施例１のＦｌａｓｈメモリにおける管理ブロックの順序性を示す説明図である。
【図１０】実施例１のデータの書き込み時におけるＦｌａｓｈメモリのデータの状態を示す説明図である。
【図１１】実施例１における電源断からの復帰時の処理を示すフローチャートである。
【図１２】実施例１の電源断からの復帰時における状態記憶部のデータの状態を示す説明図である。
【図１３】実施例１における復帰処理を示すフローチャートである。
【図１４】実施例１の復帰処理におけるＦｌａｓｈメモリのデータの状態を示す説明図である。
【図１５】復帰処理時の消去の順番について、適当でない場合の問題点を示す説明図である。
【図１６】実施例２のＦｌａｓｈメモリのブロックの割り当て及びブロックの論理構造を示す説明図である。
【図１７】実施例２の消去時の順番を示す説明図である。
【図１８】実施例２のＦｌａｓｈメモリにおける管理ブロック群の論理構造を示す説明図である。
【図１９】実施例２の異常記憶部のＡＥフラグの状態を示す説明図である。
【図２０】実施例２の復帰処理時におけるＦｌａｓｈメモリのデータの状態を示す説明図である。
【図２１】従来技術の説明図である。
【発明を実施するための形態】
【００１７】
次に、本発明の記憶媒体の管理装置の実施例を、図面と共に説明する。
【実施例１】
【００１８】
［システムの全体構成］
まず、本実施例１の記憶媒体の管理装置の全体構成について説明する。
図１に示すように、本実施例１の記憶媒体の管理装置１は、記憶媒体である不揮発性メモリのフラッシュメモリ（Ｆｌａｓｈメモリ）３にデータを書き込んだり、そのデータを消去することができる装置であり、各種の演算処理を行う周知のＣＰＵ５と、外部装置との入出力部であるＩ／Ｏ７と、Ｆｌａｓｈメモリ３へのデータの書き込みやデータの消去を行うＦｌａｓｈコントローラ９と、各種のソフトウェア等を記憶しているＲＯＭ１１と、周知のＲＡＭ１３等を備えている。
【００１９】
このうち、ＲＯＭ１１には、Ｆｌａｓｈコントローラ９の動作を制御するＦｌａｓｈドライバや各種のアプリケーションのソフトウェアが記憶されている。
なお、前記管理装置１やＦｌａｓｈメモリ３へは、電源１５から電力が供給されている。
【００２０】
また、図２（ａ）に、（本発明を好適に適用できる）ブロック数が多いＦｌａｓｈメモリ３の構成例を示すが、本発明は、図２（ｂ）に示すような一般的なＦｌａｓｈメモリにも適用できる。
【００２１】
［Ｆｌａｓｈメモリのデータ構造］
次に、本実施例１におけるＦｌａｓｈメモリ３のデータ構造について説明する。
図３に示すように、Ｆｌａｓｈメモリ３では、記憶領域として、複数の管理ブロックからなる管理ブロック群と、複数のデータブロックからなるデータブロック群とを有している。
【００２２】
このうち、データブロック群は、１レコード（データ単位）、つまり、１つのデータを記憶するデータブロック複数個からなるブロック群である。なお、データブロック数は、例えば３個以上のｎ個である。
【００２３】
一方、管理ブロック群は、後述するように、データ単位であるレコードを書き換える際に、どのデータブロックのデータが書き換え中かを示す情報、即ち書き換え対象である対象データブロックの位置を示すアドレスや、アドレスの書き換え状態（アドレス書き換え開始や完了）や、対象データブロックのデータの書き換え状態（データ書き換え完了）などの対象データブロックのデータの書き換えに関する情報を記憶するブロック群である。
【００２４】
この管理ブロック群は、例えば３個以上の複数個（ｍ個）の管理ブロックからなり、各管理ブロックは、書き換え中の対象データブロックのアドレスを記憶するアドレス部と、アドレス部の書き換え状態及び対象データブロックの書き換え状態を記憶する状態記憶部とからなる。
【００２５】
なお、状態記憶部は、各状態を記憶する３個のフラグ、アドレスの書き換え開始を示すＡＷフラグ、アドレスの書き換え完了を示すＡＦフラグ、対象データブロックの書き換え完了を示すＤＦフラグを記憶する各記憶領域から構成されている。
【００２６】
また、管理ブロック数（ｍ）とデータブロック数（ｎ）との関係は、ここでは、管理ブロック数はデータブロック数以下（ｍ≦ｎ）である。
［Ｆｌａｓｈメモリのデータを書き換える際の基本思想］
次に、Ｆｌａｓｈメモリ３のデータを書き換える際の基本となる思想（動作原理）について説明する。
【００２７】
図４に示すように、本実施例１では、管理ブロック群がデータブロック群を監視する。
具体的には、管理ブロック群の１つの管理ブロックが、書き換え中の対象データブロックのアドレスを記憶するとともに、データブロックの書き換え処理が中断されたときの書き換え対象のデータブロックを特定する。
【００２８】
例えば、後に詳述するように、電源の遮断（以下電源断と記すこともある）からの復帰時に、管理ブロックの状態を基に、データブロック書き換え中に電源が遮断していないかを確認する。これにより、急な電源の遮断時によるデータ消失を検出できる。
【００２９】
なお、管理ブロックは、書き換えのたびに管理ブロック群の中から循環的な順序性をもって選ばれる。ここで、循環的とは、複数の管理ブロックが所定の使用（書き換え）の順番に沿って使用された後に、再度、最初の順番の管理ブロックに戻って同様な使用を行うことを示している。
【００３０】
［Ｆｌａｓｈメモリの管理ブロック群の論理構造］
（１）次に、Ｆｌａｓｈメモリ３の管理ブロック群の論理構造について、具体例を挙げて説明する。
【００３１】
ここでは、管理ブロック３個（０〜２）、データブロック３個（０〜２）の場合を例に挙げて説明する。
なお、ｍ＜ｎの場合には、メモリ効率の点で効果が大きいが、ここでは、内容の理解を容易にするために、管理ブロック数とデータブロック数が同じ３個の場合（ｍ＝ｎ）を例に挙げて説明する。
【００３２】
図５に示すように、管理ブロックは、管理ブロック０、管理ブロック１、管理ブロック２の順番で、順序性が規定されている。
また、状態記憶部は、上述したように、各情報の書き換え状態を示すために、下記の３つのフラグ（ＡＷ、ＡＦ、ＤＦ）をもち、それぞれ、ブランク（Blank）か非ブランク（Non-blank）かの２値をとる。
【００３３】
ＡＷ：次ブロックのアドレスの書き換え開始を示すフラグ。従って、例えば管理ブロック１のアドレスの書き換え開始時にフラグが（例えば１に）設定される。
ＡＦ：次ブロックのアドレスの書き換え完了を示すフラグ。従って、例えば管理ブロック１のアドレスの書き換え完了時にフラグが（例えば１に）設定される。
【００３４】
ＤＦ：次ブロックのアドレスの示すデータの書き換え完了を示すフラグ。従って、例えば管理ブロック１のアドレスが示すデータブロックが、データブロック０の場合には、そのデータブロック０におけるレコードＡの書き換え完了時にフラグが（例えば１に）設定される。
【００３５】
（２）次に、管理ブロックの順序性について詳しく説明する。
図６に示すように、各管理ブロックには、ある固定された順序性がある。
例えば、管理ブロック群には、管理ブロック０→管理ブロック１→管理ブロック２→管理ブロック０→・・のように、所定の順序が設定されている。従って、管理ブロックは、管理ブロック０→管理ブロック１→管理ブロック２→管理ブロック０→・・のように、循環的に使用される。
【００３６】
また、各管理ブロックのアドレスと各状態記憶部とは、同図６に示す関係がある。
具体的には、（管理ブロック１の前の管理ブロックである）管理ブロック０の状態記憶部は、次の管理ブロックである管理ブロック１のアドレスの書き換え状態やそのアドレスに対応したデータブロックの書き換え状態を、前記各フラグによって記憶している。
【００３７】
同様に、管理ブロック１の状態記憶部は、次の管理ブロックである管理ブロック２のアドレスの書き換え状態やそのアドレスに対応したデータブロックの書き換え状態を、前記各フラグによって記憶している。
【００３８】
同様に、管理ブロック２の状態記憶部は、次の管理ブロックである管理ブロック０のアドレスの書き換え状態やそのアドレスに対応したデータブロックの書き換え状態を、前記各フラグによって記憶している。
【００３９】
このように、本実施例１では、複数の管理ブロックの異なる管理ブロックに、アドレスや（そのアドレス等に関する）前記書き換え状態を分けて記憶するとともに、各管理ブロックを循環的に活用している。
【００４０】
そのため、冗長領域は、管理ブロックとして利用するブロック数分となり、また、利用しなければならない管理ブロック数は、データブロック数に依存しない。
［Ｆｌａｓｈメモリのデータを書き込む処理］
次に、Ｆｌａｓｈメモリ３にデータを書き込む際の処理について説明する。
【００４１】
（１）ここでは、Ｆｌａｓｈコントローラ９が、ＣＰＵ５から、データの書き込み要求（どのデータブロックにどんなデータを書き込むかを示す要求）を受け取った場合の処理について説明する。
【００４２】
図７に示すように、ステップ（Ｓ）１００では、管理ブロック群は定常状態か否かを判定する。ここで肯定判断されるとステップ１２０に進む、一方否定判断されるとステップ１１０に進む。
【００４３】
なお、管理ブロック群が定常状態とは、何らかのデータの書き換え途中でない状態を示しており、管理ブロック群が、何のフラグも立っていない管理ブロック１つと、全てのフラグが立っている管理ブロック１つ以上の場合に、定常状態であると判定する。
【００４４】
ステップ１１０では、後述する復帰処理を施して定常状態に戻し、ステップ１２０に進む。
ステップ１２０では、定常状態であるので、管理ブロック群の中で最も更新の新しいブロックの次のブロックを、更新するブロック（更新ブロック）とする。
【００４５】
続くステップ１３０では、更新ブロックの前の管理ブロック（前ブロック）に、ＡＷフラグを立てる。
続くステップ１４０では、更新ブロックのデータを消去する。
【００４６】
続くステップ１５０では、更新ブロックに、書き込み先アドレスを書き込む。
続くステップ１６０では、前ブロックに、ＡＦフラグを立てる。
続くステップ１７０では、書き込み先データブロックのデータを消去する。ここで、書き込み先データブロックとは、書き込みを行う対象であるデータブロックのことである。
【００４７】
続くステップ１８０では、書き込み先データブロックにレコードを書き込む。
続くステップ１９０では、前ブロックに、ＤＦフラグを立て、一旦本処理を終了する。
（２）ここで、所定の順序で更新する管理ブロックの指定方法について説明する。
【００４８】
図８に示すように、管理ブロック群は、状態記憶部に、ＡＷ、ＡＦ、ＤＦフラグのいずれのフラグも立っていない管理ブロック１つと、ＡＷ、ＡＦ、ＤＦフラグの全てのフラグが立っている１つ以上の管理ブロックから構成される。
【００４９】
このとき、順序性のため、最新の管理ブロックの次の管理ブロックを更新ブロックとすることが望ましい。
順序性に基づくと、最新の管理ブロックは、状態管理部のいずれのフラグも立っていない管理ブロックであると判断できる。
【００５０】
（３）次に、上述した処理によって実施されるデータの書き込み手順について、より詳細に説明する。
ここでは、図９に示すように、管理ブロック３個、データブロック３個、管理ブロック群の順序性は、「アドレス0x05→アドレス0x04→アドレス0x03→アドレス0x05→・・」とする。
【００５１】
また、以下では、アドレス"0x20"に、レコード"0000000011111111"を書き込む場合を例に挙げて説明する。
図１０に示すように、(1)は、定常状態を示しており、この定常状態の際に、アドレス"0x20"のデータブロックに、レコード"0000000011111111"を記憶する要求を受領する。
【００５２】
(2)では、管理ブロック群から、更新ブロックを特定する（ステップ１２０）。ここでは、アドレス"0x50"のブロックとなる。
(3)では、アドレス"0x50"のブロックの前のブロック（アドレス"0x30"）に、ＡＷフラグを立てる（ステップ１３０）。
【００５３】
(4)では、アドレス"0x50"のブロックのデータを消去する（ステップ１４０）。
(5)では、アドレス"0x50"のブロックに、書き換え予定のアドレス（アドレス"0x20"）を記憶する（ステップ１５０）。
【００５４】
(6)では、アドレス"0x30"のブロックに、ＡＦフラグを立てる（ステップ１６０）。
(7)では、アドレス"0x20"のブロックのデータを消去する（ステップ１７０）。
(8)では、アドレス"0x20"のブロックに、レコード"0000000011111111"を書き込む（ステップ１８０）。
【００５５】
(9)では、アドレス"0x30"のブロックに、ＤＦフラグを立てる（ステップ１９０）。なお、これによって定常状態に戻る。
［電源断からの再開時の処理］
次に、電源が遮断された後に、再度電源が供給された場合の処理（管理装置１の動作を再開する際の処理）について説明する。
【００５６】
図１１に示すように、ステップ２００では、管理ブロック群は定常状態か否かを判定する。ここで肯定判断されると、書き換え中の処理中断が発生していないとして、一旦本処理を終了し、一方否定判断されると、ステップ２１０に進む。
【００５７】
ステップ２１０では、管理ブロック群は（データブロックの書き換え中に中断したことを示す）データブロック書き換え中断状態か否かを判定する。ここで肯定判断されると、ステップ２２０に進み、一方否定判断されると、管理ブロック書き換え中に処理中断が発生したとして、ステップ２４０に進む。
【００５８】
なお、データブロック書き換え中断状態とは、管理ブロック群が、ＡＷ、ＡＦフラグが立っていて、ＤＦフラグが立っていない管理ブロック１つと、何のフラグも立っていない管理ブロック１つと、全てのフラグが立っている管理ブロック１つ以上で構成されるので、その状態であれば、データブロック書き換え中断状態と判定できる。
【００５９】
例えば、電源断からの再開時に、前記図１０の(6)、(7)、(8)に示すように、ＡＷ、ＡＦフラグが立ち、ＤＦフラグが立っていない管理ブロックが見つかれば、その管理ブロックの次のブロックのアドレスが示すデータブロックの書き換え中に電源が遮断され、データ書き換えに失敗したと判定する。
【００６０】
ステップ２２０では、管理ブロックが保持するアドレスがダミーアドレスであるか否かを判定する。ダミーアドレスは復帰処置中に書き込まれる無効なアドレス値である。ここで肯定判断されると、復帰処理中に処理中断されたとして、前記ステップ２４０に進み、一方否定判断されると、データブロック書き換え中に処理中断が発生したとして、ステップ２３０に進む。
【００６１】
ステップ２３０では、管理ブロックのアドレスが示すデータブロックを書き換え中に処理中断が発生したと判断して、前記ステップ２４０に進む。
ステップ２４０では、後述する復帰処理を施し、定常状態に戻して、一旦本処理を終了する。
【００６２】
［復帰処理］
ここでは、上述した復帰処理の内容について説明する。
（１）まず、復帰時に状態記憶部が示すブロック書き換え状態ついて説明する。
【００６３】
図１２に、復帰時における各フラグの状態と（各フラグによって示される）ブロック書き換え状態を示すが、ＡＷ、ＡＦ、ＤＦフラグの状態によって、ブロックの書き換え状態を判断することができる。
【００６４】
なお、この図１２では、Blankがフラグの立っていない状態を示し、Non-blankがフラグの立っている状態を示している。
（２）次に、前記図７のステップ１１０、前記図１１のステップ２４０にて実施される復帰処理について説明する。
【００６５】
図１３に示すように、ステップ３００では、管理ブロック群のうち、全てのフラグが立っている管理ブロックのデータを消去する。
続くステップ３１０では、管理ブロック群のうち、全てのフラグが立っている管理ブロック以外の管理ブロックのデータを消去する。
【００６６】
続くステップ３２０では、任意の管理ブロックを対象ブロックとする。なお、任意の管理ブロックとは、前記ステップ３００、３１０でデータが消去された管理ブロックのうちのいずれかのことである。
【００６７】
続くステップ３３０では、管理ブロック群は、定常状態か否かを判定する。ここで肯定判断されると一旦本処理を終了し、一方否定判断されるとステップ３４０に進む。
ステップ３４０では、対象ブロックにＡＷフラグを立てる。
【００６８】
続くステップ３５０では、対象ブロックの次の管理ブロックに、ダミーアドレスを書き込む。
続くステップ３６０では、対象ブロックにＡＦフラグを立てる。
【００６９】
続くステップ３７０では、対象ブロックにＤＦフラグを立てる。
続くステップ３８０では、対象ブロックの次ブロックを対象ブロックとし、前記ステップ３３０に戻る。
【００７０】
（３）次に、上述した復帰処理の手順について、より詳細に説明する。
図１４に示すように、(1)は、定常状態ではないフラグパターン（フラグの設定状態）を示している。
【００７１】
(2)では、全てのフラグが立っている管理ブロックのデータを消去する（ステップ３００）。ここでは、アドレス"0x50"のブロックとなる。
(3)では、同様に、全てのフラグが立っている管理ブロックのデータを消去する（ステップ３００）。ここでは、アドレス"0x40"のブロックとなる。
【００７２】
(4)では、全てのフラグが立っている管理ブロック以外の管理ブロックのデータを消去する（ステップ３１０）。ここでは、アドレス"0x30"のブロックとなる。
(5)では、任意の管理ブロックを対象ブロックとする（ステップ３２０）。ここでは、アドレス"0x50"のブロックとする。
【００７３】
(6)では、対象ブロックにＡＷフラグを立て（ステップ３４０）、対象ブロックの次ブロックにダミーアドレスを書き込み（ステップ３５０）、対象ブロックにＡＦフラグを立て（ステップ３６０）、対象ブロックにＤＦフラグを立てる（ステップ３７０）。
【００７４】
ここでは、アドレス"0x50"のブロックにフラグを書き込み、アドレス"0x40"のブロックにダミーアドレスを書き込む。
(7)では、対象ブロックの次ブロックを対象ブロックとする（ステップ３８０）。ここでは、対象ブロックをアドレス"0x40"のブロックに変更する。
【００７５】
(8)では、前記(6)と同様に、対象ブロックにＡＷフラグを立て（ステップ３４０）、対象ブロックの次ブロックにダミーアドレスを書き込み（ステップ３５０）、対象ブロックにＡＦフラグを立て（ステップ３６０）、対象ブロックにＤＦフラグを立てる（ステップ３７０）。ここでは、アドレス”0x40”のブロックに各フラグを書き込み、アドレス"0x30"のブロックにダミーアドレスを書き込む。
【００７６】
これにより、定常状態に復帰したことになる。
（４）ここで、上述した復帰処理時の消去の順番について説明する。
管理ブロック群を定常状態に復帰させるために、管理ブロック（即ちそのデータ）を全消去する必要がある。
【００７７】
このとき、本実施例１では、上述したように、管理ブロックの消去の順番として、ＡＷ、ＡＦ、ＤＦフラグの全てのフラグが立っている管理ブロックのデータを消去した後に、他の管理ブロックのデータを消去する。
【００７８】
この理由は、復帰処理のために消去時に、電源瞬断が発生したとき、「処理中断が発生していない」や「データブロック書き換え中に中断した」などの誤判定をしないためである。
【００７９】
例えば、管理ブロック群の復帰処理時のデータを、上記のようにしないと、図１５にしめすようになる恐れがある。
つまり、始めに全てのフラグが立っている管理ブロック以外のブロック（例えばアドレス"0x00"のブロック）のデータを消去した場合に、その後で、電源が遮断されてから処理が再開されると、「処理中断が発生していない」と誤判断されてしまう。
［本実施例１の効果］
本実施例１の記憶媒体の管理装置１は、データを書き換える際の消去単位であるブロックとして、データを記憶する複数のデータブロックと、データブロックのデータの書き換えに関する情報を記憶する複数の管理ブロックと、を有するＦｌａｓｈメモリ３に対して、データの書き換えを管理するものである。
【００８０】
また、本実施例１では、複数の管理ブロックを使用する順序を予め循環的となるように設定しており、データを書き換える対象データブロックを変更する際には、前記順序に従って対象データブロックのデータの書き換えに関する情報（アドレス、ＡＷフラグ、ＡＦフラグ、ＤＦフラグ）を記憶する管理ブロックを変更している。そして、対象データブロックを変更する際には、前記順序に従って対象データブロックのデータの書き換えに関する情報を記憶してゆく。
【００８１】
つまり、本実施例１では、複数の管理ブロックの使用順序を設定して循環的に使用することにより、Ｆｌａｓｈメモリ３のデータ書き換え処理の中断を検出する場合に、特定の管理ブロックに負荷（即ち書き換えを行うための動作）が集中することを避けることができる。これにより、書き換えの際の負荷を分散することができるので、Ｆｌａｓｈメモリ３の高い耐久性を実現することができる。
【００８２】
また、従来のように、レコードに対して１対１に冗長領域を設定するのではなく、同じ管理ブロックを複数回使用するように管理ブロックを使用する順番を設定しているので、従来に比べて、使用する管理ブロックを減らすことが可能である。そのため、メモリ効率を高めることができる。
【００８３】
例えば管理ブロック数をデータブロック数より少なくすることができ、また、データブロック数が増えた場合でも、管理ブロック数を維持することやデータブロック数の増加数より少ない増加数とすることが可能である。
【００８４】
つまり、冗長領域は、管理ブロックとして利用するブロック数分となり、また、利用しなければならない管理ブロック数は、データブロック数に依存しないという利点がある。
従って、本実施例１では、Ｆｌａｓｈメモリ３のデータの書き換え処理の際に、例えば電源の遮断によって、書き換え処理に中断が生じる場合でも、Ｆｌａｓｈメモリ３の高いメモリ効率と高い耐久性とを両立できるという顕著な効果を奏する。
【００８５】
また、本実施例１では、複数の管理ブロックに、それぞれ、データブロックのアドレスを記憶するアドレス部と、データブロックのアドレスの書き換え状態とデータブロックのデータの書き換え状態を記憶する状態記憶部とを備えるとともに、（書き換えを行う）所定の対象データブロックについて、そのアドレスを記憶するアドレス部と、アドレスの書き換え状態（ＡＷ、ＡＦフラグ）や対象データブロックのデータの書き換え状態（ＤＦフラグ）を記憶する状態記憶部とを、異なる管理ブロックに設定している。
【００８６】
詳しくは、管理ブロックとして、例えば、使用順序の早い第１の管理ブロックと次の使用順序の第２の管理ブロックとを備え、第２の管理ブロックのアドレス部には、対象データブロックのアドレスを記憶し、第１の管理ブロックの状態記憶部には、第２の管理ブロックのアドレスの書き換え開始を示す情報（ＡＷフラグ）と、 第２の管理ブロックのアドレスの書き換え完了を示す情報（ＡＦフラグ）と、対象データブロックのデータの書き換え完了を示す情報（ＤＦフラグ）と、を記憶している。
【００８７】
このように、所定の対象データブロックに関して、アドレス部と状態記憶部とを異なる管理ブロックに記憶しているので、同一の管理ブロックに記憶した場合に比べて、アドレスや対象データブロックのデータの書き込み状態の把握を、より安定的に行うことができる。
【００８８】
例えばアドレスを記憶している管理ブロックを削除した場合でも、そのアドレス等の書き込み状態がどのようであったかを他の管理ブロックから把握することができる。
【実施例２】
【００８９】
次に、実施例２について説明するが、前記実施例１と同様な内容の説明は省略又は簡略化する。なお、各構成の番号は実施例１と同じものを使用する（以下同様）。
本実施例２は、ハード構成は前記実施例１と同じであり、主要な処理等は同じであるので、異なる点を説明する。
【００９０】
本実施例２では、復帰処理時の電源遮断の検出のために、管理ブロックに異常検出用の領域を設定するものである。
［Ｆｌａｓｈメモリのデータ構造］
まず、本実施例２におけるＦｌａｓｈメモリ３のデータ構造について説明する。
【００９１】
図１６に示すように、Ｆｌａｓｈメモリ３では、記憶領域として、複数（ｍ個）の管理ブロックからなる管理ブロック群と、複数（ｎ個）のデータブロックからなるデータブロック群とを有している。なお、ｍ≦ｎである。
【００９２】
この管理ブロック群は、複数の管理ブロック（例えばｍ≧３）からなり、各管理ブロックは、書き換え中のデータブロックのアドレスを記憶するアドレス部と、アドレス部とデータブロックの書き換え状態を記憶する状態記憶部と、復帰処理時の消去完了前の電源断異常を記憶する異常記憶部とからなる。
【００９３】
なお、状態記憶部は、各状態を記憶する３個の（ＡＷ、ＡＦ、ＤＦのフラグの）記憶領域から構成され、異常記憶部は、電源断異常を記憶する１個のＡＥフラグから構成されている。
【００９４】
本実施例２では、後述するように、復帰処理時の消去前に、図１７に示すように、エラーフラグであるＡＥフラグを立て（管理ブロックのデータの消去前にＡＥフラグを立て）、このエラーフラグが立っている限りは、処理再開時は必ず復帰処理を実施する。
【００９５】
なお、後述するように、全管理ブロックを消去する際には、一番最後に、エラー判定用管理ブロック（図１７では管理ブロック０）を削除する。
［Ｆｌａｓｈメモリの管理ブロック群の論理構造］
（１）次に、Ｆｌａｓｈメモリ３の管理ブロック群の論理構造について、具体例を挙げて説明する。
【００９６】
なお、本実施例２は、ｍ＜ｎの場合に適用するより好ましい結果が得られるが、 ここでは、説明を簡易化するために、管理ブロック３個（０〜２）、データブロック３個（０〜２）の場合を例に挙げて説明する。
【００９７】
図１８に示すように、管理ブロックは、管理ブロック０→管理ブロック１→管理ブロック２→管理ブロック０・・の順番で、循環的に順序性が規定されている。
また、状態記憶部は、実施例１と同様に、３つのフラグ（ＡＷ、ＡＦ、ＤＦ）をもち、異常記憶部は、１つのフラグ（ＡＥ）を持ち、それぞれ、ブランクか非ブランクかの２値をとる。
【００９８】
なお、管理ブロック０の異常記憶部のＡＥフラグは、エラー判定に使用されるが、他の管理ブロック１、２のＡＥフラグは、エラー判定に使用されない。つまり、ここでは、管理ブロック０が、エラー判定用の管理ブロックである。
【００９９】
（２）次に、ＡＥフラグによる異常の表示について説明する。
図１９に示すように、管理ブロック０のＡＥフラグがＢｌａｎｋで、管理ブロック１、２のＡＥフラグがＮｏ−ｃａｒｅの場合には、電源断が無い正常の状態を示している。
【０１００】
なお、Ｎｏ−ｃａｒｅとは、ＢｌａｎｋとＮｏｎ−Ｂｌａｎｋのどちらでもよい状態を示している。
また、管理ブロック０のＡＥフラグがＮｏｎ−Ｂｌａｎｋで、管理ブロック１、２のＡＥフラグがＮｏ−ｃａｒｅの場合には、電源断が有る異常の状態を示している。
【０１０１】
なお、定常状態では、管理ブロック群が、何のフラグも立っていない管理ブロック１つと、ＡＥフラグ以外の全てのフラグが立っている管理ブロック１つ以上で構成される。
また、データブロック書き換え中断状態は、管理ブロック群が、ＡＷ、ＡＦフラグが立っていて、ＤＦ、ＡＥフラグが立っていない管理ブロック１つと、何のフラグも立っていない管理ブロック１つと、ＡＥフラグ以外の全てのフラグが立っている管理ブロック１つ以上で構成される。
【０１０２】
［復帰処理の手順］
次に、本実施例２における復帰処理の手順について説明する。
図２０に示すように、(1)は、定常状態ではないフラグパターンを示している。なお、アドレス"0x50"の管理ブロックが、エラー判定用管理ブロックである。
【０１０３】
(2)では、アドレス"0x50"のエラー判定用管理ブロックにＡＥフラグを立てる。
(3)では、エラー判定用管理ブロック以外の管理ブロックのデータを消去する。ここでは、アドレス"0x30"の管理ブロックのデータを消去する。
【０１０４】
(4)では、同様に、エラー判定用管理ブロック以外の管理ブロックのデータを消去する。ここでは、アドレス"0x40"の管理ブロックのデータを消去する。
(5)では、最後に、エラー判定用管理ブロックのデータを消去する。ここでは、アドレス"0x50"の管理ブロックのデータを消去する。
【０１０５】
(6)では、前記実施例１と同様に、復帰処理におけるダミーアドレスを書き込む処理を行う。
(7)では、上述した処理によって、定常状態に復帰した状態を示している。
【０１０６】
［本実施例２の効果］
本実施例２では、複数の管理ブロックのうち所定の管理ブロックに、前記状態記憶部に加えて、更にＦｌａｓｈメモリ３に電力を供給する電源の遮断の発生を示す情報（ＡＥフラグ）を記憶する異常記憶部を備えている。詳しくは、電源の遮断から復帰する際には、異常記憶部に復帰処理中の電源の遮断の発生を示すＡＥフラグを設定している。
【０１０７】
また、本実施例２では、管理ブロックのデータを消去する際には、異常記憶部を有する所定の管理ブロック以外から順番にデータを消去する。つまり、全管理ブロックのデータを消去する際には、一番最後に、エラー判定用管理ブロックのデータを削除する。
【０１０８】
従って、本実施例２では、前記実施例１と同様な効果を奏するとともに、上述した構成によって、復帰処理中の電源の遮断の発生を確実に把握できるとともに、「復帰処理中に処理中断が発生していない」と誤判断されてしまうことを確実に防止することができるという利点がある。
【０１０９】
尚、本発明は前記実施例などになんら限定されるものではなく、本発明を逸脱しない範囲において種々の態様で実施しうることはいうまでもない。
（１）例えば前記各実施例において、例えば１つの構成要素が有する機能を複数の構成要素に分散させたり、複数の構成要素が有する機能を１つの構成要素に統合したりしてもよい。また、実施例の構成の少なくとも一部を、同様の機能を有する公知の構成に置き換えてもよい。更に、実施例の構成の少なくとも一部を、他の実施例の構成に対して付加、置換等してもよい。
【０１１０】
（２）なお、特許請求の範囲に記載した括弧内の符号は、一つの態様として実施例に記載の具体的手段との対応関係を示すものであって、本発明の技術的範囲を限定するものではない。
【０１１１】
（３）本発明が適用できる記憶媒体としては、書き換え（書き込みや消去）の回数が制限されている例えばＦｌａｓｈメモリ等の不揮発性メモリが挙げられる。
（４）前記実施例１、２では、データブロックの数と管理ブロックの数とが同じ例で説明した箇所があるが、管理ブロックの数（ｍ）をデータブロックの数（ｎ）より少なくすることができる。例えばデータブロック数が４個以上の場合に、管理ブロック数を（データブロック数より少ない）３個以上とすること（ｍ＜ｎ）ができる。
【符号の説明】
【０１１２】
１…記憶媒体の管理装置
３…フラッシュメモリ（Ｆｌａｓｈメモリ）
５…ＣＰＵ
９…Ｆｌａｓｈコントローラ
１１…ＲＯＭ
１３…ＲＡＭ
【図１】
0006311525.tif 000002
【図２】
0006311525.tif 000003
【図３】
0006311525.tif 000004
【図４】
0006311525.tif 000005
【図５】
0006311525.tif 000006
【図６】
0006311525.tif 000007
【図７】
0006311525.tif 000008
【図８】
0006311525.tif 000009
【図９】
0006311525.tif 000010
【図１０】
0006311525.tif 000011
【図１１】
0006311525.tif 000012
【図１２】
0006311525.tif 000013
【図１３】
0006311525.tif 000014
【図１４】
0006311525.tif 000015
【図１５】
0006311525.tif 000016
【図１６】
0006311525.tif 000017
【図１７】
0006311525.tif 000018
【図１８】
0006311525.tif 000019
【図１９】
0006311525.tif 000020
【図２０】
0006311525.tif 000021
【図２１】
0006311525.tif 000022