(57)【要約】【課題】  メモリ部を格段と効率的に使用し得るようにする。【解決手段】  記憶装置１は、一の状態データが記憶されている第１の最小更新領域Ａｓ１及び第２の最小更新領域Ａｓ２のうち一方の最小更新領域Ａｓ１を他の状態データに更新することによりこの管理領域Ａｍを一の処理完了状態を示す状況から処理実行状態を示すように設定変更し、次いで第１の最小更新領域Ａｓ１及び第２の最小更新領域Ａｓ２のうち他方の最小更新領域Ａｓ２を他の状態データに更新することによりこの管理領域Ａｍを処理実行状態を示す状況から他の処理完了状態を示すように設定変更するようにしたことにより、従来手法のように実データ記憶領域Ａｄに対して実データＤを書き込む実データ書込処理を１度実行する度に管理領域Ａｍを２回も更新してしまうことを回避することができる。【選択図】          図４
2006268817.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶するために順次設けられた複数のデータ記憶領域と、各上記データ記憶領域のデータ記憶状態を管理するために上記複数のデータ記憶領域に対応するように順次設けられた複数の管理領域とを有し、各上記管理領域が第１及び第２の最小更新領域により構成されたメモリ部に対して、上記データを記憶させる記憶方法であって、
上記データを書き込むデータ書込処理を上記複数のデータ記憶領域のそれぞれに対して順次実行するデータ書込ステップと、
上記データ書込処理を実行する前に当該データ書込処理が実行される上記データ記憶領域に対応する上記管理領域を、一の処理完了状態を示していた状況から処理実行状態を示すように一旦設定変更し、当該データ書込処理が正常に完了したことを認識した後に、他の処理完了状態を示すように設定変更する管理領域設定変更ステップと
を有し、
上記管理領域設定変更ステップでは、
上記一の処理完了状態時において一の状態データが記憶されている上記第１の最小更新領域及び上記第２の最小更新領域のうち一方の最小更新領域を他の状態データに更新することにより上記管理領域を上記一の処理完了状態を示す状況から上記処理実行状態を示すように設定変更した後、上記第１の最小更新領域及び上記第２の最小更新領域のうち他方の最小更新領域を上記他の状態データに更新することにより上記管理領域を上記処理実行状態を示す状況から上記他の処理完了状態を示すように設定変更する
ことを特徴とする記憶方法。
【請求項２】
上記メモリ部は、ＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory）でなる
ことを特徴とする請求項１に記載の記憶方法。
【請求項３】
上記メモリ部に対して上記データが１度も書き込まれたことがない場合、各上記管理領域は初期状態を示すように設定されており、上記管理領域設定変更ステップでは、上記データ記憶領域に対して上記データを書き込む上記データ書込処理を正常に完了した際に対応する上記管理領域を上記初期状態を示す状況から上記一の処理完了状態を示すように設定変更する
ことを特徴とする請求項１に記載の記憶方法。
【請求項４】
上記複数のデータ記憶領域のうち、現在有効なデータ記憶領域を検出し、当該検出されたデータ記憶領域に対応する管理領域が上記初期状態を示すように設定変更することにより、直前に有効であったデータ記憶領域を再度有効化する再有効化ステップを具える
ことを特徴とする請求項３に記載の記憶方法。
【請求項５】
上記再有効化ステップでは、
上記管理領域に基づき、上記複数のデータ記憶領域に２つ以上の有効なデータが記憶されているか否かを検出し、２つ以上の有効なデータが記憶されていないときは、上記再度有効化する処理を禁止する
ことを特徴とする請求項４に記載の記憶方法。
【請求項６】
上記管理領域に記憶される状態が異常であることを検出し、当該検出された管理領域が上記初期状態を示すように設定変更する復帰ステップを具える
ことを特徴とする請求項３に記載の記憶方法。
【請求項７】
上記メモリ部に記憶させる上記データは、コンテンツデータを利用する権利があるか否かを示した権利データに相当する
ことを特徴とする請求項１に記載の記憶方法。
【請求項８】
データを記憶するために順次設けられた複数のデータ記憶領域と、各上記データ記憶領域のデータ記憶状態を管理するために上記複数のデータ記憶領域に対応するように順次設けられた複数の管理領域とを有し、各上記管理領域が第１及び第２の最小更新領域により構成されたメモリ部と、
上記データを書き込むデータ書込処理を上記複数のデータ記憶領域のそれぞれに対して順次実行するデータ書込手段と、
上記データ書込処理を実行する前に当該データ書込処理が実行される上記データ記憶領域に対応する上記管理領域を、一の処理完了状態を示していた状況から処理実行状態を示すように一旦設定変更し、当該データ書込処理が正常に完了したことを認識した後に、他の処理完了状態を示すように設定変更する管理領域設定変更手段と
を有し、
上記管理領域設定変更手段は、
上記一の処理完了状態時において一の状態データが記憶されている上記第１の最小更新領域及び上記第２の最小更新領域のうち一方の最小更新領域を他の状態データに更新することにより上記管理領域を上記一の処理完了状態を示す状況から上記処理実行状態を示すように設定変更した後、上記第１の最小更新領域及び上記第２の最小更新領域のうち他方の最小更新領域を上記他の状態データに更新することにより上記管理領域を上記処理実行状態を示す状況から上記他の処理完了状態を示すように設定変更する
ことを特徴とする記憶装置。
【請求項９】
データを記憶するために順次設けられた複数のデータ記憶領域と各上記データ記憶領域のデータ記憶状態を管理するために上記複数のデータ記憶領域に対応するように順次設けられた複数の管理領域とを有し各上記管理領域が第１及び第２の最小更新領域により構成されたメモリ部を具える記憶装置に対し、
上記データを書き込むデータ書込処理を上記複数のデータ記憶領域のそれぞれに対して順次実行するデータ書込ステップと、
上記データ書込処理を実行する前に当該データ書込処理が実行される上記データ記憶領域に対応する上記管理領域を、一の処理完了状態を示していた状況から処理実行状態を示すように一旦設定変更し、当該データ書込処理が正常に完了したことを認識した後に、他の処理完了状態を示すように設定変更する管理領域設定変更ステップと
を実行させる記憶プログラムであって、
上記管理領域設定変更ステップでは、
上記一の処理完了状態時において一の状態データが記憶されている上記第１の最小更新領域及び上記第２の最小更新領域のうち一方の最小更新領域を他の状態データに更新することにより上記管理領域を上記一の処理完了状態を示す状況から上記処理実行状態を示すように設定変更した後、上記第１の最小更新領域及び上記第２の最小更新領域のうち他方の最小更新領域を上記他の状態データに更新することにより上記管理領域を上記処理実行状態を示す状況から上記他の処理完了状態を示すように設定変更する
ことを特徴とする記憶プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は記憶方法、その装置及びプログラムに関し、例えば、メモリ部に対してデータを記憶させるようになされた記憶装置に適用して好適なものである。
【背景技術】
【０００２】
従来この種の記憶装置は、ＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory）等に相当するメモリ部に対して、データを記憶させるようになされている。因みに以下では説明の便宜上、外部からメモリ部に書き込んで記憶保持させる目的のデータを特に実データと呼ぶ。
【０００３】
このようなメモリ部の記憶領域は、データを更新することができる回数（以下、これをデータ更新制限回数と呼ぶ）が制限されている。これによりこのメモリ部の記憶領域においては、データ更新し得る最小単位に相当する最小更新領域のうち、このデータ更新制限回数を超えた最小更新領域から順次使用不可能となってしまう（例えば特許文献１参照）。
【特許文献１】特開２００４−１５７６８９公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従ってこのメモリ部に記憶させた実データを、データ更新制限回数を超えて繰り返し何度も更新する必要がある場合には、例えば図２４に示すようにこの実データを記憶するための実データ記憶領域Ａｄａを複数設ける必要が生じる。この図２４の場合、メモリ部に対して実データ記憶領域Ａｄａを１つではなく例えば２つ設けることにより、この実データを更新できる回数をデータ更新制限回数の２倍にしている。因みに１つの実データ記憶領域Ａｄａは、上述した最小更新領域が１つ又は複数確保して構成されているものである。
【０００５】
ここで一例として、図２５に示すフローチャートを用い、図２４に示したメモリ部に対して実データを書き込む際の実データ書込処理手順ＲＴ１０００を説明する。このメモリ部はステップＳＰ１００１において、外部から書き込むべき実データを受け取ると、次のステップＳＰ１００２に進み、この実データを第１の実データ記憶領域Ａｄａ１に書き込むことが可能か否かを判断する。このステップＳＰ１００２において肯定結果が得られると、このことは第１の実データ記憶領域Ａｄａ１がデータ更新制限回数に達していないことを意味しており、このときメモリ部はステップＳＰ１００３に進み、かかる実データを第１の実データ記憶領域Ａｄａ１に対して書き込む。これに対してステップＳＰ１００２において否定結果が得られた場合、このことは第１の実データ記憶領域Ａｄａ１がデータ更新制限回数に達していることを意味しており、このときメモリ部はステップＳＰ１００４に進み、かかる実データを第２の実データ記憶領域Ａｄａ２に対して書き込む。かくしてこの実データ書込処理手順ＲＴ１０００によれば、実データを更新し得る回数をデータ更新制限回数の２倍にすることができる。
【０００６】
また他の例として、図２６に示すフローチャートを用い、図２４に示したメモリ部に対して実データを書き込む際の実データ書込処理手順ＲＴ１００１を説明する。このメモリ部はステップＳＰ１０１１において、書き込むべき実データを外部から受け取ると、次のステップＳＰ１０１２に進み、この種の実データを今回初めて書き込むか否かを判断する。このステップＳＰ１０１２において肯定結果が得られると、このときメモリ部はステップＳＰ１０１３に進み、かかる実データを第１の実データ記憶領域Ａｄａ１に対して書き込む。これに対してステップＳＰ１０１２において否定結果が得られた場合ステップＳＰ１０１４に進み、前回書き込んだ場所が第１の実データ記憶領域Ａｄａ１か否かを判断する。このステップＳＰ１０１４において否定結果が得られた場合、このメモリ部はステップＳＰ１０１３に進み、これに対してこのステップＳＰ１０１４において肯定結果が得られた場合、ステップＳＰ１０１５に進んで、かかる実データを第２の実データ記憶領域Ａｄａ２に対して書き込むようになされている。かくしてこの実データ書込処理手順ＲＴ１００１によれば、実データを更新し得る回数をデータ更新制限回数の２倍にすることができる。
【０００７】
またこの実データ書込処理手順ＲＴ１００１によれば、更新された新たな実データを例えば第２の実データ記憶領域Ａｄａ２に書き込んだとしても、前回に書き込んだ前世代の実データが第１の実データ記憶領域Ａｄａ１に記憶保持されたままとなるので、この前世代の実データをバックアップデータとして利用することも可能となる。ここで図２７に示すフローチャートを用いて、この前世代の実データを読み出す前世代実データ読出処理手順ＲＴ１００２を説明する。このメモリ部はステップＳＰ１０２１において、前世代の実データを読み出すように命令する読出命令を受け取ると、ステップＳＰ１０２２に移り、この実データを過去２回以上書き込んだことがあるか否かを判断する。このステップＳＰ１０２２において否定結果が得られると、このときメモリ部はステップＳＰ１０２３に移り、前世代の実データが存在しないと判断する。これに対してこのステップＳＰ１０２２において肯定結果が得られると、このときメモリ部はステップＳＰ１０２４に移り、前回書き込んだ実データの記憶場所が第１の実データ記憶領域Ａｄａ１であるか否かを判断する。このステップＳＰ１０２４において肯定結果が得られた場合、メモリ部はステップＳＰ１０２５に進んで、第２の実データ記憶領域Ａｄａ２から前世代の実データを読み出し、これに対してステップＳＰ１０２４において否定結果が得られた場合、メモリ部はステップＳＰ１０２６に進んで、第１の実データ記憶領域Ａｄａ１から前世代の実データを読み出すようになされている。かくしてこの前世代実データ読出処理手順ＲＴ１００２によって、前世代の実データを読み出すことができる。
【０００８】
かくして、複数の実データ記憶領域Ａｄａに対して実データを順次書き込むような構成を採用すると、データ更新することができる回数を増やすことができるだけでなく、以前に書き込んだ実データをバックアップとして記憶保持する目的をも達成することができる。
【０００９】
しかしながら、このように複数の実データ記憶領域Ａｄａに対して実データを順番に書き込むような構成をただ単純に採用した場合だと、このメモリ部はこの複数の実データ記憶領域Ａｄａの中から最新の実データが記憶されている実データ記憶領域Ａｄａを特定できない。もし最新の実データが記憶されている実データ記憶領域Ａｄａを特定できないと、このメモリ部は最新の実データを読み出すことができなくなってしまうので、この結果実データ読出処理を正常に実行できなくなってしまうことになる。さらにこのメモリ部は、複数の実データ記憶領域Ａｄａに対して実データを順番に書き込むようになされているので、このように最新の実データが記憶されている実データ記憶領域Ａｄａを特定できないと、更新した新たな実データを書き込む際にこの新たな実データを書き込むべき次の実データ記憶領域Ａｄａを認識することができず、この結果実データ書込処理も正常に実行できなくなってしまう。
【００１０】
この問題を回避するための一手法としては、例えば図２４との対応部分に同一符号を付して示す図２８のような構成が考えられる。つまりこの図２８に示すメモリ部においては、第１の実データ記憶領域Ａｄａ１及び第２の実データ記憶領域Ａｄａ２に加えて、第１の実データ記憶領域Ａｄａ１及び第２の実データ記憶領域Ａｄａ２のデータ記憶状態を管理するための管理領域Ａｍａが設けられている。
【００１１】
このメモリ部は、最新の実データが第１の実データ記憶領域Ａｄａ１に記憶されている旨を示した記憶状態データを管理領域Ａｍａに記憶させた上で、データ更新制限回数に達するまで第１の実データ記憶領域Ａｄａ１に対して実データを繰り返し書き込む。そしてこのメモリ部は、この第１の実データ記憶領域Ａｄａ１がデータ更新制限回数に達した際には、最新の実データが第２の実データ記憶領域Ａｄａ２に記憶されている旨を示した記憶状態データを管理領域Ａｍａに記憶させるようにした上で、第１の実データ記憶領域Ａｄａ１に代えて第２の実データ記憶領域Ａｄａ２に対し実データを繰り返し書き込むようになされている。このようにこのメモリ部に対して管理領域Ａｍａを設けることにより、どこに最新の実データが記憶されているのかを特定することができ、かくして実データ書込処理や実データ読出処理を正常に実行できるようになる。
【００１２】
ここで一例として、図２９に示すフローチャートを用い、図２８に示したメモリ部に対して実データを書き込む際の実データ書込処理手順ＲＴ１００３を説明する。このメモリ部はステップＳＰ１０３１において、書き込むべき実データを外部から受け取ると、次のステップＳＰ１０３２に進み、この種の実データを今回初めて書き込むか否かを判断する。このステップＳＰ１０３２において肯定結果が得られると、このときメモリ部はステップＳＰ１０３３に進み、最新の実データが第１の実データ記憶領域Ａｄａ１に記憶されている旨を示した記憶状態データを管理領域Ａｍａに対して書き込む。次いでこのメモリ部はステップＳＰ１０３４に進み、かかる実データを第１の実データ記憶領域Ａｄａ１に書き込む。続いてこのメモリ部はステップＳＰ１０３５に進み、第１の実データ記憶領域Ａｄａ１がデータ更新制限回数に達したか否かを判断する。このステップＳＰ１０３５において否定結果が得られると、このことは、第１の実データ記憶領域Ａｄａ１がデータ更新制限回数に達していないことを意味しており、このときメモリ部は終了ステップＳＰ１０３９に移り、書き込むべき新たな実データを外部から受け取るのを待ち受ける。やがてメモリ部は、書き込むべき新たな実データを外部から受け取ると、ステップＳＰ１０３１及びステップＳＰ１０３２を経てステップＳＰ１０３６に進み、管理領域Ａｍａに記憶されている記憶状態データが第１の実データ記憶領域Ａｄａ１を示しているか否かを判断する。このステップＳＰ１０３６で否定結果が得られると、このことは、かかる記憶状態データが第２の実データ記憶領域Ａｄａ２を示していることを意味しており、このときメモリ部はステップＳＰ１０３７に移って、この第２の実データ記憶領域Ａｄａ２に対して実データを書き込むようになされている。これに対してこのステップＳＰ１０３６において肯定結果が得られると、このことは、かかる記憶状態データが第１の実データ記憶領域Ａｄａ１を示していることを意味しており、このときメモリ部はステップＳＰ１０３４に移って、この第１の実データ記憶領域Ａｄａ１に対して実データを書き込むようになされている。因みに上述のステップＳＰ１０３５において肯定結果が得られると、このことは、第１の実データ記憶領域Ａｄａ１がデータ更新制限回数に達していることを意味しており、このときメモリ部はステップＳＰ１０３８に移って、最新の実データが第２の実データ記憶領域Ａｄａ２に記憶されている旨を示した記憶状態データを管理領域Ａｍａに対して書き込んだ後、上述のステップＳＰ１０３７に移るようになされている。
【００１３】
ところで上述のステップＳＰ１０３５においては、実データ記憶領域Ａｄａがデータ更新制限回数に達したか否かを検出する必要がある。ここではこの検出手法の一例を説明する。すなわち図３０に示すデータ更新制限回数超過検出処理手順ＲＴ１００４のステップＳＰ１０４１においてメモリ部は、例えば、第１の実データ記憶領域Ａｄａ１に書き込むべき実データを外部から受け取るとステップＳＰ１０４２に移り、この実データを第１の実データ記憶領域Ａｄａ１に対して書き込む。またこの際このメモリ部は、例えば、図示しないキャッシュ等にこの実データを一時記憶させておく。次いでこのメモリ部はステップＳＰ１０４３に進み、ステップＳＰ１０４２で書き込んだ実データを第１の実データ記憶領域Ａｄａ１から読み出す。続いてこのメモリ部はステップＳＰ１０４４に進み、当該読み出した実データと一時記憶させた実データとを比較し、これらが一致するか否かを判断する。このステップＳＰ１０４４において肯定結果が得られた場合このメモリ部は、ステップＳＰ１０４５に進んで、この第１の実データ記憶領域Ａｄａ１に対する実データの更新回数がデータ更新制限回数以下であると判断し、これに対してこのステップＳＰ１０４４において否定結果が得られた場合このメモリ部は、ステップＳＰ１０４６に進んで、この第１の実データ記憶領域Ａｄａ１に対する実データの更新回数がデータ更新制限回数を超えたと判断するようになされている。
【００１４】
このように上述の実データ書込処理手順ＲＴ１００３によれば、管理領域Ａｍａに記憶されている記憶状態データに基づいて、第１の実データ記憶領域Ａｄａ１及び第２の実データ記憶領域Ａｄａ２の中から、最新の実データが記憶されている領域を特定することができる。
【００１５】
しかしながらこのような構成を採用すると、実データ記憶領域Ａｄａがデータ更新制限回数に達する度にデータ書込エラーが生じることになってしまう。また第１の実データ記憶領域Ａｄａ１が更新可能である期間中は、この第１の実データ記憶領域Ａｄａ１に実データを上書きしていくことになるので、前世代の実データを記憶保持させておくことができなくなり、かくしてバックアップを利用することが不可能となってしまう。
【００１６】
この問題を回避するための手法としては、例えば図２４との対応部分に同一符号を付して示す図３１のような構成が考えられる。つまりこの図３１に示すメモリ部においては、第１の実データ記憶領域Ａｄａ１及び第２の実データ記憶領域Ａｄａ２のそれぞれに対応するようにして第１の管理領域Ａｍａ１及び第２の管理領域Ａｍａ２が設けられている。
【００１７】
このメモリ部では、第１の実データ記憶領域Ａｄａ１にこれまで実行した実データ書込処理の累計回数を示した更新回数データが、対応する第１の管理領域Ａｍａ１に記憶され、同じように、第２の実データ記憶領域Ａｄａ２にこれまで実行した実データ書込処理の累計回数を示した更新回数データが、対応する第２の管理領域Ａｍａ２に記憶されるようになされている。これによりこのメモリ部は、第１の実データ記憶領域Ａｄａ１及び第２の実データ記憶領域Ａｄａ２に対して順番に実データを書き込むことで、前世代の実データを第１の実データ記憶領域Ａｄａ１又は第２の実データ記憶領域Ａｄａ２に記憶保持させておくようにしても、第１の管理領域Ａｍａ１及び第２の管理領域Ａｍａ２に記憶されている更新回数データを参照することにより、第１の実データ記憶領域Ａｄａ１及び第２の実データ記憶領域Ａｄａ２の何れに最新の実データが記憶されているのかを特定することができる。
【００１８】
ここで一例として、図３２に示すフローチャートを用い、図３１に示したメモリ部に対して実データを書き込む際の実データ書込処理手順ＲＴ１００５を説明する。このメモリ部はステップＳＰ１０５１において、書き込むべき実データを外部から受け取ると、次のステップＳＰ１０５２に進む。そしてメモリ部はこのステップＳＰ１０５２において、第１の管理領域Ａｍａ１に記憶されている更新回数データが示す累計回数（以下、これを第１の累計回数とも呼ぶ）と、第２の管理領域Ａｍａ２に記憶されている更新回数データが示す回数（以下、これを第２の累計回数とも呼ぶ）とを比較し、ステップＳＰ１０５３において、第１の累計回数が第２の累計回数以下であるか否かを判断する。このステップＳＰ１０５３において肯定結果が得られると、このことは現在、最新の実データが第２の実データ記憶領域Ａｄａ２に記憶されていることを意味しており、従ってこのときメモリ部はステップＳＰ１０５４に進み、かかる実データを第１の実データ記憶領域Ａｄａ１に書き込んだ後、続くステップＳＰ１０５５において、第２の管理領域Ａｍａ２に記憶されている更新回数データが示す累計回数に１加算した値を、更新回数データとして第１の管理領域Ａｍａ１に書き込むようになされている。これに対してこのステップＳＰ１０５３において否定結果が得られると、このことは現在、最新の実データが第１の実データ記憶領域Ａｄａ１に記憶されていることを意味しており、従ってこのときメモリ部はステップＳＰ１０５６に進み、かかる実データを第２の実データ記憶領域Ａｄａ２に書き込んだ後、続くステップＳＰ１０５７において、第１の管理領域Ａｍａ１に記憶されている更新回数データが示す累計回数に１加算した値を、更新回数データとして第２の管理領域Ａｍａ２に書き込むようになされている。
【００１９】
このようにこの実データ書込処理手順ＲＴ１００５によれば、第１の管理領域Ａｍａ１及び第２の管理領域Ａｍａ２に記憶されている更新回数データを参照することにより、第１の実データ記憶領域Ａｄａ１及び第２の実データ記憶領域Ａｄａ２の何れに最新の実データが記憶されているのかを特定することができ、かくして実データ書込処理や実データ読出処理を正常に実行することができる。
【００２０】
しかしながらこのような構成では、第１の管理領域Ａｍａ１及び第２の管理領域Ａｍａ２に対して実データの更新累計回数を示した更新回数データが記憶されるので、この更新累計回数の桁あふれを防ぐためにも、第１の管理領域Ａｍａ１及び第２の管理領域Ａｍａ２に対してメモリ部の記憶領域を多めに割り当てる必要が生じ、かくしてメモリ部の記憶資源を効率的に使用し得るとは言い難くなってしまう。さらにこのような構成では、記憶装置の電源が遮断された等の理由で、例えば第１の実データ記憶領域Ａｄａ１に対して実行していた実データ書込処理が途中で中止され、この結果この第１の実データ記憶領域Ａｄａ１に対して正しく実データが書き込まれなかった場合、この旨を検出できないという問題がある。
【００２１】
ここで、正しく実データが書き込まれなかった旨を検出するための手法としては、例えば図２４との対応部分に同一符号を付して示す図３３のような構成が考えられる。つまりこの図３３に示すメモリ部においては、第１の実データ記憶領域Ａｄａ１及び第２の実データ記憶領域Ａｄａ２に加えて、フラグデータが記憶されるための管理領域Ａｍａが設けられている。因みにこの場合このフラグデータにより、フラグの上げ下げが表現されるようになされている。
【００２２】
このメモリ部は、例えば第１の実データ記憶領域Ａｄａ１に対して実データを書き込む実データ書込処理を実行する際、この実データ書込処理を実行する前に管理領域Ａｍａに記憶されているフラグデータを上げた状態（Ｌｏｃｋ）にし、この実データ書込処理が正常に完了したことを確認した後にこのフラグデータを下げた状態（Ｕｎｌｏｃｋ）にするようになされている。これにより、この第１の実データ記憶領域Ａｄａ１に対して実行していた実データ書込処理が途中で中止された場合、管理領域Ａｍａに対してはフラグを上げた状態（Ｌｏｃｋ）のフラグデータが記憶されたままになる。かくしてメモリ部は、記憶装置の電源が復旧した後に、下げた状態（Ｕｎｌｏｃｋ）になっていないフラグを検出することにより、実データ書込処理の中止に起因して実データが正しく書き込まれなかった旨を認識することが可能となる。
【００２３】
ここで一例として、図３４に示すフローチャートを用い、図３３に示したメモリ部に対して実データを書き込む際の実データ書込処理手順ＲＴ１００６を説明する。このメモリ部はステップＳＰ１０６１において、例えば第１の実データ記憶領域Ａｄａ１に対して書き込むべき実データを外部から受け取ると、次のステップＳＰ１０６２に進み、管理領域Ａｍａにおけるフラグデータを上げた状態（Ｌｏｃｋ）に設定する。次いでメモリ部はステップＳＰ１０６３に進み、第１の実データ記憶領域Ａｄａ１に対してかかる実データを書き込み、この書き込みが正常に完了したことを確認すると、次のステップＳＰ１０６４に移り、管理領域Ａｍａにおけるフラグデータを下げた状態（Ｕｎｌｏｃｋ）に設定するようになされている。
【００２４】
次に図３５に示すフローチャートを用いて、実データが正しく書き込まれなかった旨を認識する認識処理手順ＲＴ１００７を説明する。このメモリ部はステップＳＰ１０７１において、管理領域Ａｍａにおけるフラグデータが下げた状態（Ｕｎｌｏｃｋ）に設定されているか否かを判断する。このステップＳＰ１０７１において肯定結果が得られた場合、このときメモリ部はステップＳＰ１０７２に移って、前回の実データ書込処理が正常に終了したと判断し、これに対してこのステップＳＰ１０７２において否定結果が得られた場合、このときメモリ部はステップＳＰ１０７３に移って、前回の実データ書込処理が正常に終了しなかったと判断するようになされている。
【００２５】
かくしてこのような構成によれば、実データ書込処理の中止に起因して実データが正しく書き込まれなかった旨を認識することが可能となる。しかしながらこのような構成だけでは、第１の実データ記憶領域Ａｄａ１及び第２の実データ記憶領域Ａｄａ２のどちらに最新の実データが記憶されているのか特定することができないので、その前に説明した何れかの構成と組み合わせて使用することになり、この結果メモリ部の構成が複雑化して効率的とは言い難くなってしまう。
【００２６】
またこのような構成では、１つの実データ記憶領域Ａｄａに対して１回実データ書込処理を実行する度に管理領域Ａｍａを２回更新しなければならない。このように管理領域Ａｍａを２回更新することになってしまうと、その分この管理領域Ａｍａが早くデータ更新制限回数に達してしまうので、これに伴って第１の実データ記憶領域Ａｄａ１及び第２の実データ記憶領域Ａｄａ２を使用し得る期間も短くなってしまい、かくしてメモリ部を効率的に使用し得るとは言い難くなってしまう。
【００２７】
この結果、実データ書込処理の中止に起因して正しく実データが書き込まれていない実データ記憶領域Ａｄａが生じた際にこの正しく実データが書き込まれていない実データ記憶領域Ａｄａを認識できるようにした構成（図３３）と、複数の実データ記憶領域Ａｄａに対して実データを順次書き込むように実データ書込処理を実行する構成（図２８や図３１等）とを組み合わせて上述した各目的を達しようとすると、メモリ部を効率的に使用できなくなってしまう問題があった。
【００２８】
本発明は以上の点を考慮してなされたもので、メモリ部を格段と効率的に使用し得る記憶方法、その装置及びプログラムを提案しようとするものである。
【課題を解決するための手段】
【００２９】
かかる課題を解決するため本発明においては、データを記憶するために順次設けられた複数のデータ記憶領域と、各データ記憶領域のデータ記憶状態を管理するために複数のデータ記憶領域に対応するように順次設けられた複数の管理領域とを有し、各管理領域が第１及び第２の最小更新領域により構成されたメモリ部に対して、データを記憶させる記憶方法であって、データを書き込むデータ書込処理を複数のデータ記憶領域のそれぞれに対して順次実行するデータ書込ステップと、データ書込処理を実行する前に当該データ書込処理が実行されるデータ記憶領域に対応する管理領域を、一の処理完了状態を示していた状況から処理実行状態を示すように一旦設定変更し、当該データ書込処理が正常に完了したことを認識した後に、他の処理完了状態を示すように設定変更する管理領域設定変更ステップとを設け、管理領域設定変更ステップでは、一の処理完了状態時において一の状態データが記憶されている第１の最小更新領域及び第２の最小更新領域のうち一方の最小更新領域を他の状態データに更新することにより管理領域を一の処理完了状態を示す状況から処理実行状態を示すように設定変更した後、第１の最小更新領域及び第２の最小更新領域のうち他方の最小更新領域を他の状態データに更新することにより管理領域を処理実行状態を示す状況から他の処理完了状態を示すように設定変更するようにした。
【００３０】
このように、複数のデータ記憶領域に対してデータ書込処理を実行する度に対応する管理領域を一の処理完了状態を示す状況から他の処理完了状態を示す状態に設定変更するようにしたことにより、この複数のデータ記憶領域の中から最新のデータが記憶されているデータ記憶領域を特定することができるので、データ読出処理やデータ書込処理を正しく実行することができ、さらに、このようなデータ書込処理を実行する際には、このデータ書込処理を実行する前にこのデータ書込処理が実行されるデータ記憶領域に対応する管理領域を、一の処理完了状態を示していた状況から処理実行状態を示すように一旦設定変更し、このデータ書込処理が正常に完了したことを認識した後に、他の処理完了状態を示すように設定変更するようにしたことにより、データ書込処理が途中で中止されたことによってデータが正しく書き込まれていないデータ記憶領域が生じたとしても、この正しくデータが書き込まれていないデータ記憶領域を認識することができ、また、このようにデータ記憶領域に対してデータを書き込むデータ書込処理を１度実行する度にこのデータ記憶領域に対応する管理領域を一の処理完了状態を示す状況から処理実行状態を経て他の処理完了状態を示すように順次設定変更する際には、一の状態データが記憶されている第１の最小更新領域及び第２の最小更新領域のうち一方の最小更新領域を他の状態データに更新することによりこの管理領域を一の処理完了状態を示す状況から処理実行状態を示すように一旦設定変更した後、第１の最小更新領域及び第２の最小更新領域のうち他方の最小更新領域を他の状態データに更新することによりこの管理領域を処理実行状態を示す状況から他の処理完了状態を示すように設定変更するようにしたことにより、従来手法のようにデータ書込処理を１度実行する度に管理領域を２回も更新してしまうことを回避することができる。
【発明の効果】
【００３１】
本発明によれば、複数のデータ記憶領域に対してデータ書込処理を実行する度に対応する管理領域を一の処理完了状態を示す状況から他の処理完了状態を示す状態に設定変更するようにしたことにより、この複数のデータ記憶領域の中から最新のデータが記憶されているデータ記憶領域を特定することができるので、データ読出処理やデータ書込処理を正しく実行することができ、さらに、このようなデータ書込処理を実行する際には、このデータ書込処理を実行する前にこのデータ書込処理が実行されるデータ記憶領域に対応する管理領域を、一の処理完了状態を示していた状況から処理実行状態を示すように一旦設定変更し、このデータ書込処理が正常に完了したことを認識した後に、他の処理完了状態を示すように設定変更するようにしたことにより、データ書込処理が途中で中止されたことによってデータが正しく書き込まれていないデータ記憶領域が生じたとしても、この正しくデータが書き込まれていないデータ記憶領域を認識することができ、また、このようにデータ記憶領域に対してデータを書き込むデータ書込処理を１度実行する度にこのデータ記憶領域に対応する管理領域を一の処理完了状態を示す状況から処理実行状態を経て他の処理完了状態を示すように順次設定変更する際には、一の状態データが記憶されている第１の最小更新領域及び第２の最小更新領域のうち一方の最小更新領域を他の状態データに更新することによりこの管理領域を一の処理完了状態を示す状況から処理実行状態を示すように一旦設定変更した後、第１の最小更新領域及び第２の最小更新領域のうち他方の最小更新領域を他の状態データに更新することによりこの管理領域を処理実行状態を示す状況から他の処理完了状態を示すように設定変更するようにしたことにより、従来手法のようにデータ書込処理を１度実行する度に管理領域を２回も更新してしまうことを回避することができ、この結果メモリ部を格段と効率的に使用することができる。
【発明を実施するための最良の形態】
【００３２】
以下図面について、本発明の一実施の形態を詳述する。
【００３３】
（１）第１の実施の形態
（１−１）記憶装置の構成
図１において、１は全体として記憶装置を示し、メモリ部２に記憶させるべき実データをメモリ部２に対して書き込む実データ書込処理や、メモリ部２に記憶された実データをメモリ部２から読み出す実データ読出処理の実行を制御する制御部３を有する。本実施の形態の場合このメモリ部２は、例えばＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory）に相当する。
【００３４】
このメモリ部２には、例えば図２に示すように、ある種類の実データＤを記憶するための記憶領域として、Ｎ個の実データ記憶領域Ａｄ（１、２、……、Ｎ）が順次設けられている。またこのメモリ部２には、実データ記憶領域Ａｄごとにデータ記憶状態を把握管理しておくための管理領域として、各実データ記憶領域Ａｄに対応するようにＮ個の管理領域Ａｍ（１、２、……、Ｎ）が順次設けられている。
【００３５】
これら各管理領域Ａｍは、例えば図３にも併せて示すように、このメモリ部２のデータ最小更新単位（Ｓビット）に相当する最小更新領域Ａｓを、２つ連続して確保することにより構成されている。これら最小更新領域Ａｓ１、Ａｓ２のそれぞれには、実データ書込処理の処理状態を示すために、初期状態データ「ｉｎｉｔ」、第１の状態データ「ｅｖｅｎ」又は第２の状態データ「ｏｄｄ」の何れかが記憶される。
【００３６】
つまり、ある実データ記憶領域Ａｄに対して実データＤが１度も書き込まれたことがない場合、この実データ記憶領域Ａｄに対応する管理領域Ａｍ中の第１の最小更新領域Ａｓ１及び第２の最小更新領域Ａｓ２の両方には、例えば図４（Ａ）に示すように、初期状態データ「ｉｎｉｔ」が記憶される。かくしてこの管理領域Ａｍは、実データＤが１度も書き込まれたことがないことを意味する初期状態「ＩＮＩＴ」を示すようになされている。
【００３７】
やがて制御部３は、この実データ記憶領域Ａｄに対して実データＤを書き込む実データ書込処理を実行する際この実データ書込処理を実行する前に、例えば図４（Ｂ）に示すように、この実データ記憶領域Ａｄに対応する管理領域Ａｍ中の第１の最小更新領域Ａｓ１に対して、第１の状態データ「ｅｖｅｎ」を書き込む。かくしてこの管理領域Ａｍは、初めて実データ書込処理が実行されることを意味する初期の処理実行状態「ＩＮＩＴ→ＥＶＥＮ」を示すように設定される。
【００３８】
そして制御部３は、かかる実データ書込処理が正常に完了したことを認識すると、例えば図４（Ｃ）に示すように、この実データ記憶領域Ａｄに対応する管理領域Ａｍ中の第２の最小更新領域Ａｓ２に対して、第１の状態データ「ｅｖｅｎ」を書き込む。かくしてこの管理領域Ａｍは、実データ書込処理が正常に完了したことを意味する第１の処理完了状態「ＥＶＥＮ」を示すように設定される。
【００３９】
やがて制御部３は、この実データ記憶領域Ａｄに対して実データＤを書き込む実データ書込処理を再度実行する際この実データ書込処理を実行する前に、例えば図４（Ｄ）に示すように、この実データ記憶領域Ａｄに対応する管理領域Ａｍ中の第１の最小更新領域Ａｓ１に対して、第２の状態データ「ｏｄｄ」を書き込む。かくしてこの管理領域Ａｍは、実データ書込処理が実行されることを意味する第１の処理実行状態「ＥＶＥＮ→ＯＤＤ」を示すように設定される。
【００４０】
そして制御部３は、かかる実データ書込処理が正常に完了したことを認識すると、例えば図４（Ｅ）に示すように、この実データ記憶領域Ａｄに対応する管理領域Ａｍ中の第２の最小更新領域Ａｓ２に対して、第２の状態データ「ｏｄｄ」を書き込む。かくしてこの管理領域Ａｍは、実データ書込処理が正常に完了したことを意味する第２の処理完了状態「ＯＤＤ」を示すように設定される。
【００４１】
やがて制御部３は、この実データ記憶領域Ａｄに対して実データＤを書き込む実データ書込処理を再び実行する際この実データ書込処理を実行する前に、例えば図４（Ｆ）に示すように、この実データ記憶領域Ａｄに対応する管理領域Ａｍ中の第１の最小更新領域Ａｓ１に対して、第１の状態データ「ｅｖｅｎ」を書き込む。かくしてこの管理領域Ａｍは、実データ書込処理が実行されることを意味する第２の処理実行状態「ＯＤＤ→ＥＶＥＮ」を示すように設定される。
【００４２】
そして制御部３は、かかる実データ書込処理が正常に完了したことを認識すると、例えば図４（Ｃ）に示したように、この実データ記憶領域Ａｄに対応する管理領域Ａｍ中の第２の最小更新領域Ａｓ２に対して、第１の状態データ「ｅｖｅｎ」を書き込む。かくしてこの管理領域Ａｍは、実データ書込処理が正常に完了したことを意味する第１の処理完了状態「ＥＶＥＮ」を示すように設定される。
【００４３】
この後この制御部３は、この実データ記憶領域Ａｄに対して実データＤを書き込む実データ書込処理を実行する度に同じようにしてこの実データ記憶領域Ａｄに対応する管理領域Ａｍを、第１の処理完了状態「ＥＶＥＮ」、第１の処理実行状態「ＥＶＥＮ→ＯＤＤ」、第２の処理完了状態「ＯＤＤ」、第２の処理実行状態「ＯＤＤ→ＥＶＥＮ」、第１の処理完了状態「ＥＶＥＮ」、……に繰り返し設定するようになされている。
【００４４】
次に、実データ書込処理を具体的に説明する。この制御部３は、実データＤをメモリ部２に対して書き込む実データ書込処理を実行する際、各実データ記憶領域Ａｄに対応する各管理領域Ａｍを参照する。
【００４５】
ここでこの制御部３は、例えば図５（Ａ）に示すようにこれら全ての管理領域Ａｍが初期状態「ＩＮＩＴ」を示していることを認識すると、これら各管理領域Ａｍに対応する各実データ記憶領域Ａｄに１度も実データＤが書き込まれたことがないと判断し、その結果Ｎ個設けられている実データ記憶領域Ａｄのうち、先頭にある第１の実データ記憶領域Ａｄ１に対して実データＤを今回書き込むべきと判断する。
【００４６】
次いでこの制御部３は、この第１の実データ記憶領域Ａｄ１に対して実データＤを書き込む実データ書込処理を実行する前に、この第１の実データ記憶領域Ａｄ１に対応する第１の管理領域Ａｍ１を、初期の処理実行状態「ＩＮＩＴ→ＥＶＥＮ」を示すように設定する（図５（Ｂ））。
【００４７】
この設定が完了すると制御部３は、第１の実データ記憶領域Ａｄ１に対して実データＤを書き込む実データ書込処理を実行する（図５（Ｃ））。
【００４８】
そしてこの実データ書込処理が終了すると制御部３は、この実データ書込処理により書き込んだ実データＤを第１の実データ記憶領域Ａｄ１から読み出した後、当該読み出した実データＤと、この実データ書込処理を実行する前に図示しないＲＡＭに一時記憶しておいた実データＤとを比較し、この比較の結果、当該読み出した実データＤとＲＡＭに一時記憶しておいた実データＤとが一致していることを認識すると、今回の実データ書込処理が正常に完了したと判断する。
【００４９】
このように実データ書込処理が正常に完了したことを認識すると、制御部３は、第１の実データ記憶領域Ａｄ１に対応する第１の管理領域Ａｍ１を、第１の処理完了状態「ＥＶＥＮ」を示すように設定する（図５（Ｄ））。
【００５０】
やがてこの制御部３は、更新した新たな実データＤをメモリ部２に対して書き込む実データ書込処理を実行する際、各実データ記憶領域Ａｄに対応する各管理領域Ａｍを参照する。これにより制御部３は、第１の管理領域Ａｍ１のみが第１の処理完了状態「ＥＶＥＮ」を示し、これ以降の管理領域Ａｍ（２、３、……、Ｎ）が初期状態「ＩＮＩＴ」を示していることを認識すると、この第１の管理領域Ａｍ１に対応する第１の実データ記憶領域Ａｄ１の次に存在する第２の実データ記憶領域Ａｄ２に対して実データＤを今回書き込むべきと判断する。
【００５１】
次いでこの制御部３は、この第２の実データ記憶領域Ａｄ２に対して実データＤを書き込む実データ書込処理を実行する前に、この第２の実データ記憶領域Ａｄ２に対応する第２の管理領域Ａｍ２を、初期の処理実行状態「ＩＮＩＴ→ＥＶＥＮ」を示すように設定する（図５（Ｅ））。
【００５２】
この設定が完了すると制御部３は、第２の実データ記憶領域Ａｄ２に対して実データＤを書き込む実データ書込処理を実行する（図５（Ｆ））。
【００５３】
そしてこの実データ書込処理が終了すると制御部３は、上述した手順により今回の実データ書込処理が正常に完了したか否かを確認し、この結果この実データ書込処理が正常に完了したことを認識すると、実データＤを今回書き込んだ第２の実データ記憶領域Ａｄ２に対応する第２の管理領域Ａｍ２を、第１の処理完了状態「ＥＶＥＮ」を示すように設定する（図５（Ｇ））。
【００５４】
同じようにしてこの後この制御部３は、図６（Ｈ）〜（Ｊ）に示すように、更新した新たな実データＤを、第３の実データ記憶領域Ａｄ３、第４の実データ記憶領域Ａｄ４、第５の実データ記憶領域Ａｄ５、……、第Ｎの実データ記憶領域ＡｄＮに対して順次書き込むと共に、この書き込みが正常に完了する度に対応する第３の管理領域Ａｍ３、第４の管理領域Ａｍ４、第５の管理領域Ａｍ５、……、第Ｎの管理領域ＡｍＮを第１の処理完了状態「ＥＶＥＮ」を示すように順次設定する。
【００５５】
このようにして、各実データ記憶領域Ａｄに対して実データＤを初めて一通り書き込む書込一巡目では、図６（Ｊ）に示すように、第１〜第Ｎの管理領域Ａｍ（１〜Ｎ）が全て第１の処理完了状態「ＥＶＥＮ」を示すように設定される。
【００５６】
この後この制御部３は、実データＤをメモリ部２に対して書き込む実データ書込処理を実行する際、各実データ記憶領域Ａｄに対応する各管理領域Ａｍを参照する。
【００５７】
ここでこの制御部３は、図７（Ａ）に示すようにこれら全ての管理領域Ａｍが第１の処理完了状態「ＥＶＥＮ」を示していることを認識すると、これら各管理領域Ａｍに対応する各実データ記憶領域Ａｄに対して一通り実データＤが書き込まれたと判断し、その結果Ｎ個設けられている実データ記憶領域Ａｄのうち、先頭にある第１の実データ記憶領域Ａｄ１に対して実データＤを今回書き込むべきと判断する。
【００５８】
次いでこの制御部３は、この第１の実データ記憶領域Ａｄ１に対して実データＤを書き込む実データ書込処理を実行する前に、この第１の実データ記憶領域Ａｄ１に対応する第１の管理領域Ａｍ１を、第１の処理実行状態「ＥＶＥＮ→ＯＤＤ」を示すように設定する（図７（Ｂ））。
【００５９】
この設定が完了すると制御部３は、第１の実データ記憶領域Ａｄ１に対して実データＤを書き込む実データ書込処理を実行する（図７（Ｃ））。
【００６０】
そしてこの実データ書込処理が終了すると制御部３は、上述した手順により今回の実データ書込処理が正常に完了したか否かを確認し、この結果この実データ書込処理が正常に完了したことを認識すると、第１の実データ記憶領域Ａｄ１に対応する第１の管理領域Ａｍ１を、第２の処理完了状態「ＯＤＤ」を示すように設定する（図７（Ｄ））。
【００６１】
やがてこの制御部３は、更新した新たな実データＤをメモリ部２に対して書き込む実データ書込処理を実行する際、各実データ記憶領域Ａｄに対応する各管理領域Ａｍを参照する。これにより制御部３は、第１の管理領域Ａｍ１のみが第２の処理完了状態「ＯＤＤ」を示し、これ以降の管理領域Ａｍ（２、３、……、Ｎ）が第１の処理完了状態「ＥＶＥＮ」を示していることを認識すると、この第１の管理領域Ａｍ１に対応する第１の実データ記憶領域Ａｄ１の次に存在する第２の実データ記憶領域Ａｄ２に対して実データＤを今回書き込むべきと判断する。
【００６２】
次いでこの制御部３は、この第２の実データ記憶領域Ａｄ２に対して実データＤを書き込む実データ書込処理を実行する前に、この第２の実データ記憶領域Ａｄ２に対応する第２の管理領域Ａｍ２を、第１の処理実行状態「ＥＶＥＮ→ＯＤＤ」を示すように設定する（図７（Ｅ））。
【００６３】
この設定が完了すると制御部３は、第２の実データ記憶領域Ａｄ２に対して実データＤを書き込む実データ書込処理を実行する（図７（Ｆ））。
【００６４】
そしてこの実データ書込処理が終了すると制御部３は、上述した手順により今回の実データ書込処理が正常に完了したか否かを確認し、この結果この実データ書込処理が正常に完了したことを認識すると、実データＤを今回書き込んだ第２の実データ記憶領域Ａｄ２に対応する第２の管理領域Ａｍ２を、第２の処理完了状態「ＯＤＤ」を示すように設定する（図７（Ｇ））。
【００６５】
同じようにしてこの後この制御部３は、図８（Ｈ）〜（Ｊ）に示すように、更新した実データＤを、第３の実データ記憶領域Ａｄ３、第４の実データ記憶領域Ａｄ４、第５の実データ記憶領域Ａｄ５、……、第Ｎの実データ記憶領域ＡｄＮに対して順次書き込むと共に、この書き込みが正常に完了する度に対応する第３の管理領域Ａｍ３、第４の管理領域Ａｍ４、第５の管理領域Ａｍ５、……、第Ｎの管理領域ＡｍＮを第２の処理完了状態「ＯＤＤ」を示すように順次設定する。
【００６６】
このようにして、各実データ記憶領域Ａｄに対して実データＤを一通り書き込む書込２巡目（２ｎ巡目（ｎ＝１、２、……））では、図８（Ｊ）に示すように、第１〜第Ｎの管理領域Ａｍ（１〜Ｎ）が全て第２の処理完了状態「ＯＤＤ」を示すように設定される。
【００６７】
この後この制御部３は、実データＤをメモリ部２に対して書き込む実データ書込処理を実行する際、各実データ記憶領域Ａｄに対応する各管理領域Ａｍを参照する。
【００６８】
ここでこの制御部３は、図９（Ａ）に示すようにこれら全ての管理領域Ａｍが第２の処理完了状態「ＯＤＤ」を示していることを認識すると、これら各管理領域Ａｍに対応する各実データ記憶領域Ａｄに対して一通り実データＤが書き込まれたと判断し、その結果Ｎ個設けられている実データ記憶領域Ａｄのうち、先頭にある第１の実データ記憶領域Ａｄ１に対して実データＤを今回書き込むべきと判断する。
【００６９】
次いでこの制御部３は、この第１の実データ記憶領域Ａｄ１に対して実データＤを書き込む実データ書込処理を実行する前に、この第１の実データ記憶領域Ａｄ１に対応する第１の管理領域Ａｍ１を、第２の処理実行状態「ＯＤＤ→ＥＶＥＮ」を示すように設定する（図９（Ｂ））。
【００７０】
この設定が完了すると制御部３は、第１の実データ記憶領域Ａｄ１に対して実データＤを書き込む実データ書込処理を実行する（図９（Ｃ））。
【００７１】
そしてこの実データ書込処理が終了すると制御部３は、上述した手順により今回の実データ書込処理が正常に完了したか否かを確認し、この結果この実データ書込処理が正常に完了したことを認識すると、第１の実データ記憶領域Ａｄ１に対応する第１の管理領域Ａｍ１を、第１の処理完了状態「ＥＶＥＮ」を示すように設定する（図９（Ｄ））。
【００７２】
やがてこの制御部３は、更新した新たな実データＤをメモリ部２に対して書き込む実データ書込処理を実行する際、各実データ記憶領域Ａｄに対応する各管理領域Ａｍを参照する。これにより制御部３は、第１の管理領域Ａｍ１のみが第１の処理完了状態「ＥＶＥＮ」を示し、これ以降の管理領域Ａｍ（２、３、……、Ｎ）が第２の処理完了状態「ＯＤＤ」を示していることを認識すると、この第１の管理領域Ａｍ１に対応する第１の実データ記憶領域Ａｄ１の次に存在する第２の実データ記憶領域Ａｄ２に対して実データＤを今回書き込むべきと判断する。
【００７３】
次いでこの制御部３は、この第２の実データ記憶領域Ａｄ２に対して実データＤを書き込む実データ書込処理を実行する前に、この第２の実データ記憶領域Ａｄ２に対応する第２の管理領域Ａｍ２を、第２の処理実行状態「ＯＤＤ→ＥＶＥＮ」を示すように設定する（図（９）（Ｅ））。
【００７４】
この設定が完了すると制御部３は、第２の実データ記憶領域Ａｄ２に対して実データＤを書き込む実データ書込処理を実行する（図９（Ｆ））。
【００７５】
そしてこの実データ書込処理が終了すると制御部３は、上述した手順により今回の実データ書込処理が正常に完了したか否かを確認し、この結果この実データ書込処理が正常に完了したことを認識すると、実データＤを今回書き込んだ第２の実データ記憶領域Ａｄ２に対応する第２の管理領域Ａｍ２を、第１の処理完了状態「ＥＶＥＮ」を示すように設定する（図９（Ｇ））。
【００７６】
同じようにしてこの後この制御部３は、図１０（Ｈ）〜（Ｊ）に示すように、更新した新たな実データＤを、第３の実データ記憶領域Ａｄ３、第４の実データ記憶領域Ａｄ４、第５の実データ記憶領域Ａｄ５、……、第Ｎの実データ記憶領域ＡｄＮに対して順次書き込むと共に、この書き込みが正常に完了する度に対応する第３の管理領域Ａｍ３、第４の管理領域Ａｍ４、第５の管理領域Ａｍ５、……、第Ｎの管理領域ＡｍＮを第１の処理完了状態「ＥＶＥＮ」を示すように順次設定する。
【００７７】
このようにして、各実データ記憶領域Ａｄに対して実データＤを一通り書き込む書込３巡目（２ｎ+１巡目（ｎ＝１、２、……））では、図１０（Ｊ）に示すように、第１〜第Ｎの管理領域Ａｍ（１〜Ｎ）が全て第１の処理完了状態「ＥＶＥＮ」を示すように設定される。
【００７８】
以上に説明したようにこの制御部３は、実データＤが更新される度に更新された新たな実データＤを、実データＤを記憶するために設けられたＮ個の実データ記憶領域Ａｄ（１〜Ｎ）のうちの、先頭にある実データ記憶領域Ａｄ１から終端にある実データ記憶領域ＡｄＮまで順番に書き込み、終端の実データ記憶領域ＡｄＮまで書き込み終えると先頭の実データ記憶領域Ａｄ１に戻って書き込む。このようにこの制御部３は、Ｎ個の実データ記憶領域Ａｄ（１〜Ｎ）を循環するようにして各実データ記憶領域Ａｄに対して実データＤを書き込む実データ書込処理を実行するようになされている。
【００７９】
そして制御部３は、この実データ書込処理による書込１巡目では、実データＤの書き込みが正常に終了する度に、Ｎ個の実データ記憶領域Ａｄ（１〜Ｎ）に対応するように順次設けられたＮ個の管理領域Ａｍ（１〜Ｎ）のうちこの実データＤを書き込んだ実データ記憶領域Ａｄに対応する管理領域Ａｍを、初期状態「ＩＮＩＴ」を示していた状況から第１の処理完了状態「ＥＶＥＮ」を示すように設定変更する。またこの制御部３は書込２ｎ巡目では、実データＤの書き込みが正常に終了する度に、この実データＤを書き込んだ実データ記憶領域Ａｄに対応する管理領域Ａｍを、第１の処理完了状態「ＥＶＥＮ」を示していた状況から第２の処理完了状態「ＯＤＤ」を示すように設定変更する。またこの制御部３は書込２ｎ+１巡目では、実データＤの書き込みが正常に終了する度に、この実データＤを書き込んだ実データ記憶領域Ａｄに対応する管理領域Ａｍを、第２の処理完了状態「ＯＤＤ」を示していた状況から第１の処理完了状態「ＥＶＥＮ」を示すように設定変更する。
【００８０】
これにより書込１巡目である場合この制御部３は、Ｎ個の管理領域Ａｍを先頭から順番に参照して（例えば図５（Ｄ））、初期状態「ＩＮＩＴ」に設定された管理領域Ａｍを検出すると、当該検出した管理領域Ａｍに対応する実データ記憶領域Ａｄの直前に存在する実データ記憶領域Ａｄに対して、最新の実データＤが記憶されていると判断することができる。またこの場合この制御部３は、Ｎ個の管理領域Ａｍを先頭から順番に参照して、先頭にある第１の管理領域Ａｍ１が初期状態「ＩＮＩＴ」に設定されていることを検出した場合（図５（Ａ））には、各実データ記憶領域Ａｄに対して実データＤが１度も書き込まれたことがないと判断でき、また最後の第Ｎの管理領域ＡｍＮまでの全てが第１の処理完了状態「ＥＶＥＮ」に設定されていることを検出した場合（図６（Ｊ））には、この第Ｎの管理領域ＡｍＮに対応する第Ｎの実データ記憶領域ＡｄＮに最新の実データＤが記憶されていると判断することができる。
【００８１】
また書込２ｎ巡目である場合この制御部３は、Ｎ個の管理領域Ａｍを先頭から順番に参照して（例えば図７（Ｄ））、第１の処理完了状態「ＥＶＥＮ」に設定された管理領域Ａｍを検出すると、当該検出した管理領域Ａｍに対応する実データ記憶領域Ａｄの直前に存在する実データ記憶領域Ａｄに対して、最新の実データＤが記憶されていると判断することができる。またこの場合この制御部３は、Ｎ個の管理領域Ａｍを先頭から順番に参照して、最後の第Ｎの管理領域ＡｍＮまでの全てが第２の処理完了状態「ＯＤＤ」に設定されていることを検出した場合（図８（Ｊ））には、この第Ｎの管理領域ＡｍＮに対応する第Ｎの実データ記憶領域ＡｄＮに最新の実データＤが記憶されていると判断することができる。
【００８２】
また書込２ｎ+１巡目である場合この制御部３は、Ｎ個の管理領域Ａｍを先頭から順番に参照して（例えば図９（Ｄ））、第２の処理完了状態「ＯＤＤ」に設定された管理領域Ａｍを検出すると、当該検出した管理領域Ａｍに対応する実データ記憶領域Ａｄの直前に存在する実データ記憶領域Ａｄに対して、最新の実データＤが記憶されていると判断することができる。またこの場合この制御部３は、Ｎ個の管理領域Ａｍを先頭から順番に参照して、最後の第Ｎの管理領域ＡｍＮまでの全てが第１の処理完了状態「ＥＶＥＮ」に設定されていることを検出した場合（図１０（Ｊ））には、この第Ｎの管理領域ＡｍＮに対応する第Ｎの実データ記憶領域ＡｄＮに最新の実データＤが記憶されていると判断することができる。
【００８３】
このようにこの制御部３は、Ｎ個の実データ記憶領域Ａｄ（１〜Ｎ）に対して実データ書込処理を実行する度に対応する管理領域Ａｍを一の処理完了状態（例えば、第１の処理完了状態「ＥＶＥＮ」）を示す状況から他の処理完了状態（例えば、第２の処理完了状態「ＯＤＤ」）を示すように順次設定変更するようにしたことにより、Ｎ個の管理領域Ａｍを先頭から順番に参照して他の処理完了状態に設定された管理領域Ａｍを検出すれば、当該検出した管理領域Ａｍに対応する実データ記憶領域Ａｄの直前に存在する実データ記憶領域Ａｄに対して、最新の実データＤが記憶されていると判断することができる。
【００８４】
また本実施の形態の制御部３は書込１巡目の場合（図５及び図６）、実データ書込処理を実行する前にこの実データ書込処理が実行される実データ記憶領域Ａｄに対応する管理領域Ａｍを、初期状態「ＩＮＩＴ」を示していた状況から初期の処理実行状態「ＩＮＩＴ→ＥＶＥＮ」を示すように一旦設定変更し、そしてこの実データ書込処理が正常に完了したことを認識した後にこの管理領域Ａｍを、初期の処理実行状態「ＩＮＩＴ→ＥＶＥＮ」を示していた状況から第１の処理完了状態「ＥＶＥＮ」を示すように設定変更する。
【００８５】
またこの制御部３は書込２ｎ巡目の場合（図７及び図８）、実データ書込処理を実行する前にこの実データ書込処理が実行される実データ記憶領域Ａｄに対応する管理領域Ａｍを、第１の処理完了状態「ＥＶＥＮ」を示していた状況から第１の処理実行状態「ＥＶＥＮ→ＯＤＤ」を示すように一旦設定変更し、そしてこの実データ書込処理が正常に完了したことを認識した後にこの管理領域Ａｍを、第１の処理実行状態「ＥＶＥＮ→ＯＤＤ」を示していた状況から第２の処理完了状態「ＯＤＤ」を示すように設定変更する。
【００８６】
またこの制御部３は書込２ｎ+１巡目の場合（図９及び図１０）、実データ書込処理を実行する前にこの実データ書込処理が実行される実データ記憶領域Ａｄに対応する管理領域Ａｍを、第２の処理完了状態「ＯＤＤ」を示していた状況から第２の処理実行状態「ＯＤＤ→ＥＶＥＮ」を示すように一旦設定変更し、そしてこの実データ書込処理が正常に完了したことを認識した後にこの管理領域Ａｍを、第２の処理実行状態「ＯＤＤ→ＥＶＥＮ」を示していた状況から第１の処理完了状態「ＥＶＥＮ」を示すように設定する。
【００８７】
これにより、例えば書込１巡目の場合（図５及び図６）において、実データ記憶領域Ａｄに対して実データＤを書き込む実データ書込処理を実行している途中に、この記憶装置１の電源が遮断される等の理由でこの実データ書込処理が途中で中止され、この結果この実データ記憶領域Ａｄに対して実データＤが正しく書き込まれなかった場合、この実データ記憶領域Ａｄに対応する管理領域Ａｍは初期状態「ＩＮＩＴ」や第１の処理完了状態「ＥＶＥＮ」ではなく初期の処理実行状態「ＩＮＩＴ→ＥＶＥＮ」等を示したままになる。従って制御部３は、この記憶装置１の電源が復旧した後、初期状態「ＩＮＩＴ」や第１の処理完了状態「ＥＶＥＮ」ではなく初期の処理実行状態「ＩＮＩＴ→ＥＶＥＮ」等を示したままになっている管理領域Ａｍを検出することにより、この管理領域Ａｍに対応する実データ記憶領域Ａｄに正確な実データＤが記憶されていないことを認識することができる。
【００８８】
また書込２ｎ巡目の場合（図７及び図８）において、実データ記憶領域Ａｄに対して実データＤを書き込む実データ書込処理を実行している途中にこの実データ書込処理が途中で中止され、この結果この実データ記憶領域Ａｄに対して実データＤが正しく書き込まれなかった場合、この実データ記憶領域Ａｄに対応する管理領域Ａｍは第１の処理完了状態「ＥＶＥＮ」や第２の処理完了状態「ＯＤＤ」ではなく第１の処理実行状態「ＥＶＥＮ→ＯＤＤ」等を示したままになる。従って制御部３は、この記憶装置１の電源が復旧した後、第１の処理完了状態「ＥＶＥＮ」や第２の処理完了状態「ＯＤＤ」ではなく第１の処理実行状態「ＥＶＥＮ→ＯＤＤ」等を示したままになっている管理領域Ａｍを検出することにより、この管理領域Ａｍに対応する実データ記憶領域Ａｄに正確な実データＤが記憶されていないことを認識することができる。
【００８９】
また書込２ｎ+１巡目の場合（図９及び図１０）において、実データ記憶領域Ａｄに対して実データＤを書き込む実データ書込処理を実行している途中にこの実データ書込処理が途中で中止され、この結果この実データ記憶領域Ａｄに対して実データＤが正しく書き込まれなかった場合、この実データ記憶領域Ａｄに対応する管理領域Ａｍは第２の処理完了状態「ＯＤＤ」や第１の処理完了状態「ＥＶＥＮ」ではなく第２の処理実行状態「ＯＤＤ→ＥＶＥＮ」等を示したままになる。従って制御部３は、この記憶装置１の電源が復旧した後、第２の処理完了状態「ＯＤＤ」や第１の処理完了状態「ＥＶＥＮ」ではなく第２の処理実行状態「ＯＤＤ→ＥＶＥＮ」等を示したままになっている管理領域Ａｍを検出することにより、この管理領域Ａｍに対応する実データ記憶領域Ａｄに正確な実データＤが記憶されていないことを認識することができる。
【００９０】
このようにこの制御部３は、実データ書込処理を実行する前にこの実データ書込処理が実行される実データ記憶領域Ａｄに対応する管理領域Ａｍを、一の処理完了状態（例えば、第１の処理完了状態「ＥＶＥＮ」）を示していた状況から処理実行状態（例えば、第１の処理実行状態「ＥＶＥＮ→ＯＤＤ」）を示すように一旦設定変更し、この実データ書込処理が正常に完了したことを認識した後に、他の処理完了状態（例えば、第２の処理完了状態「ＯＤＤ」）を示すように設定変更するようにした。これにより、実データ書込処理が途中で中止されたことによって実データＤが正しく書き込まれていない実データ記憶領域Ａｄが生じたとしてもこの実データ記憶領域Ａｄに対応する管理領域Ａｍが処理実行状態等を示したままになるので、この記憶装置１の制御部３はこの処理実行状態等を示したままになっている管理領域Ａｍを検出することにより、当該検出した管理領域Ａｍに対応する実データ記憶領域Ａｄに正しく実データＤが書き込まれていないことを認識することができる。
【００９１】
このように本実施の形態においては、例えば書込１巡目の場合（図５及び図６）において、実データ記憶領域Ａｄに対して実データＤを書き込む実データ書込処理が１回行われる度に、この実データ記憶領域Ａｄに対応する管理領域Ａｍが、初期状態「ＩＮＩＴ」を示す状況から、初期の処理実行状態「ＩＮＩＴ→ＥＶＥＮ」を経て、第１の処理完了状態「ＥＶＥＮ」を示すように順次設定変更される。
【００９２】
ここでこの設定変更において制御部３は、図４（Ａ）〜（Ｂ）に示したように、初期状態データ「ｉｎｉｔ」が記憶されている第１の最小更新領域Ａｓ１及び第２の最小更新領域Ａｓ２のうち、一方の最小更新領域Ａｓ１を第１の状態データ「ｅｖｅｎ」に更新することにより、この管理領域Ａｍを初期状態「ＩＮＩＴ」を示す状況から初期の処理実行状態「ＩＮＩＴ→ＥＶＥＮ」を示すように設定変更する。次いでこの制御部３は、図４（Ｂ）〜（Ｃ）に示したように、第１の最小更新領域Ａｓ１及び第２の最小更新領域Ａｓ２のうち、他方の最小更新領域Ａｓ２を第１の状態データ「ｅｖｅｎ」に更新することにより、この管理領域Ａｍを初期の処理実行状態「ＩＮＩＴ→ＥＶＥＮ」を示す状況から第１の処理完了状態「ＥＶＥＮ」を示すように設定変更する。
【００９３】
また書込２ｎ巡目の場合（図７及び図８）においては、実データ記憶領域Ａｄに対して実データＤを書き込む実データ書込処理が１回行われる度に、この実データ記憶領域Ａｄに対応する管理領域Ａｍが、第１の処理完了状態「ＥＶＥＮ」を示す状況から、第１の処理実行状態「ＥＶＥＮ→ＯＤＤ」を経て、第２の処理完了状態「ＯＤＤ」を示すように順次設定変更される。
【００９４】
ここでこの設定変更において制御部３は、図４（Ｃ）〜（Ｄ）に示したように、第１の状態データ「ｅｖｅｎ」が記憶されている第１の最小更新領域Ａｓ１及び第２の最小更新領域Ａｓ２のうち、一方の最小更新領域Ａｓ１を第２の状態データ「ｏｄｄ」に更新することにより、この管理領域Ａｍを第１の処理完了状態「ＥＶＥＮ」を示す状況から第１の処理実行状態「ＥＶＥＮ→ＯＤＤ」を示すように設定変更する。次いでこの制御部３は、図４（Ｄ）〜（Ｅ）に示したように、第１の最小更新領域Ａｓ１及び第２の最小更新領域Ａｓ２のうち、他方の最小更新領域Ａｓ２を第２の状態データ「ｏｄｄ」に更新することにより、この管理領域Ａｍを第１の処理実行状態「ＥＶＥＮ→ＯＤＤ」を示す状況から第２の処理完了状態「ＯＤＤ」を示すように設定変更する。
【００９５】
また書込２ｎ+１巡目の場合（図９及び図１０）においては、実データ記憶領域Ａｄに対して実データＤを書き込む実データ書込処理が１回行われる度に、この実データ記憶領域Ａｄに対応する管理領域Ａｍが、第２の処理完了状態「ＯＤＤ」を示す状況から、第２の処理実行状態「ＯＤＤ→ＥＶＥＮ」を経て、第１の処理完了状態「ＥＶＥＮ」を示すように順次設定変更される。
【００９６】
ここでこの設定変更において制御部３は、図４（Ｅ）〜（Ｆ）に示したように、第２の状態データ「ｏｄｄ」が記憶されている第１の最小更新領域Ａｓ１及び第２の最小更新領域Ａｓ２のうち、一方の最小更新領域Ａｓ１を第１の状態データ「ｅｖｅｎ」に更新することにより、この管理領域Ａｍを第２の処理完了状態「ＯＤＤ」を示す状況から第２の処理実行状態「ＯＤＤ→ＥＶＥＮ」を示すように設定変更する。次いでこの制御部３は、図４（Ｆ）及び（Ｃ）に示したように、第１の最小更新領域Ａｓ１及び第２の最小更新領域Ａｓ２のうち、他方の最小更新領域Ａｓ２を第１の状態データ「ｅｖｅｎ」に更新することにより、この管理領域Ａｍを第２の処理実行状態「ＯＤＤ→ＥＶＥＮ」を示す状況から第１の処理完了状態「ＥＶＥＮ」を示すように設定変更する。
【００９７】
このようにこの制御部３は、実データ記憶領域Ａｄに対して実データＤを書き込む実データ書込処理を１回実行する度にこの実データ記憶領域Ａｄに対応する管理領域Ａｍを一の処理完了状態（例えば、第１の処理完了状態「ＥＶＥＮ」）を示す状況から処理実行状態（例えば、第１の処理実行状態「ＥＶＥＮ→ＯＤＤ」）を経て他の処理完了状態（例えば、第２の処理完了状態「ＯＤＤ」）を示すように順次設定変更する際、一の状態データ（例えば、第１の状態データ「ｅｖｅｎ」）が記憶されている第１の最小更新領域Ａｓ１及び第２の最小更新領域Ａｓ２のうち一方の最小更新領域Ａｓ１を他の状態データ（例えば、第２の状態データ「ｏｄｄ」）に更新することによりこの管理領域Ａｍを一の処理完了状態を示す状況から処理実行状態を示すように設定変更し、この次に第１の最小更新領域Ａｓ１及び第２の最小更新領域Ａｓ２のうち他方の最小更新領域Ａｓ２を他の状態データに更新することにより、この管理領域Ａｍを処理実行状態を示す状況から他の処理完了状態を示すように設定変更する。
【００９８】
この結果この制御部３は、実データ記憶領域Ａｄに対して実データＤを書き込む実データ書込処理を１回実行する度に、この実データ記憶領域Ａｄに対応する管理領域Ａｍ中の第１の最小更新領域Ａｓ１及び第２の最小更新領域Ａｓ２をそれぞれ１回ずつ更新するだけで良く、これにより従来手法のように実データ記憶領域Ａｄに対して実データＤを書き込む実データ書込処理を１度実行する度に管理領域Ａｍを２回も更新してしまうことを回避することができ、この結果メモリ部２を格段と効率的に使用することができる。
【００９９】
（１−２）最新実データ特定処理
次に図１１に示すフローチャートを用いて、Ｎ個の実データ記憶領域Ａｄ（１〜Ｎ）の中から最新の実データＤが記憶されている実データ記憶領域Ａｄを特定する際に実行する最新実データ特定処理手順ＲＴ１を説明する。因みに以下の説明では、例えば実データ記憶領域Ａｄの数を示すＮとして２よりも大きい数を想定する。
【０１００】
制御部３は、Ｎ個の実データ記憶領域Ａｄ（１〜Ｎ）の中から最新の実データＤが記憶されている実データ記憶領域Ａｄを特定する際、最新実データ特定処理手順ＲＴ１のステップＳＰ１に移り、Ｎ個の実データ記憶領域Ａｄ（１〜Ｎ）に対応して設けられているＮ個の管理領域Ａｍ（１〜Ｎ）のうち先頭にある第１の管理領域Ａｍ１を参照し、当該参照した第１の管理領域Ａｍ１が第１の処理完了状態「ＥＶＥＮ」を示すように設定されているか否かを判断する。
【０１０１】
このステップＳＰ１において肯定結果が得られると、このことは、例えば図９及び図１０に示したように書込２ｎ+１巡目であることを意味しており、このとき制御部３はステップＳＰ２に移って、変数ｉに対して値「２」を設定する。
【０１０２】
次いでこの制御部３はステップＳＰ３に進み、変数ｉに設定された値「２」に基づいて、Ｎ個の管理領域Ａｍ（１〜Ｎ）のうち第１の管理領域Ａｍ１の次にある第２の管理領域Ａｍ２を参照し、当該参照した第２の管理領域Ａｍ２が第１の処理完了状態「ＥＶＥＮ」を示すように設定されているか否かを判断する。
【０１０３】
このステップＳＰ３において例えば肯定結果が得られると、このことは、この第２の管理領域Ａｍ２が第１の処理完了状態「ＥＶＥＮ」を示していることを意味しており、このとき制御部３はステップＳＰ４に移って、変数ｉをインクリメントする（変数ｉに現在設定されている値に対し１を加算する）。
【０１０４】
次いでこの制御部３はステップＳＰ５に進み、変数ｉに設定されている値がＮ+１に達したか否かを判定する。
【０１０５】
この場合この変数ｉには値「３」が設定されているので、この制御部３はステップＳＰ５において否定結果を得てステップＳＰ３に戻る。因みにこのステップＳＰ５において例えば肯定結果が得られると、このことは、Ｎ個の管理領域Ａｍ（１〜Ｎ）が全て第１の処理完了状態「ＥＶＥＮ」を示すように設定されていることを意味しており、このとき制御部３は後述するステップＳＰ６へ移るようになされている。
【０１０６】
２度目のステップＳＰ３において制御部３は、変数ｉに設定された値「３」に基づいて、Ｎ個の管理領域Ａｍ（１〜Ｎ）のうち第２の管理領域Ａｍ２の次にある第３の管理領域Ａｍ３を参照し、当該参照した第３の管理領域Ａｍ３が第１の処理完了状態「ＥＶＥＮ」を示すように設定されているか否かを判断する。
【０１０７】
このステップＳＰ３において例えば否定結果が得られると、このことは、この第３の管理領域Ａｍ３が例えば第２の処理完了状態「ＯＤＤ」を示していることを意味しており、このとき制御部３はステップＳＰ６に移る。
【０１０８】
そしてこのステップＳＰ６において制御部３は、そのとき変数ｉに設定されている値（この場合、値「３」）から１を減じた値に相当する実データ記憶領域Ａｄ（この場合、第２の実データ記憶領域Ａｄ２）に対して、最新の実データＤが記憶されていることを認識し、終了ステップＳＰ１５に移って最新実データ特定処理手順ＲＴ１を終了する。
【０１０９】
ところで上述のステップＳＰ１において否定結果が得られた場合、このとき制御部３はステップＳＰ７に移り、第１の管理領域Ａｍ１が第２の処理完了状態「ＯＤＤ」を示すように設定されているか否かを判断する。
【０１１０】
このステップＳＰ７において肯定結果が得られると、このことは、例えば図７及び図８に示したように書込２ｎ巡目であることを意味しており、このとき制御部３はステップＳＰ８に移って、変数ｉに対して値「２」を設定する。
【０１１１】
次いでこの制御部３はステップＳＰ９に進み、変数ｉに設定された値「２」に基づいて、Ｎ個の管理領域Ａｍ（１〜Ｎ）のうち第１の管理領域Ａｍ１の次にある第２の管理領域Ａｍ２を参照し、当該参照した第２の管理領域Ａｍ２が第２の処理完了状態「ＯＤＤ」を示すように設定されているか否かを判断する。
【０１１２】
このステップＳＰ９において例えば肯定結果が得られると、このことは、この第２の管理領域Ａｍ２が第２の処理完了状態「ＯＤＤ」を示していることを意味しており、このとき制御部３はステップＳＰ１０に移って、変数ｉをインクリメントする。
【０１１３】
次いでこの制御部３はステップＳＰ１１に進み、変数ｉに設定されている値がＮ+１に達したか否かを判定する。
【０１１４】
この場合この変数ｉには値「３」が設定されているので、この制御部３はステップＳＰ１１において否定結果を得てステップＳＰ９に戻る。因みにこのステップＳＰ１１において例えば肯定結果が得られると、このことは、Ｎ個の管理領域Ａｍ（１〜Ｎ）が全て第２の処理完了状態「ＯＤＤ」を示すように設定されていることを意味しており、このとき制御部３は前述したステップＳＰ６へ移るようになされている。
【０１１５】
２度目のステップＳＰ９において制御部３は、変数ｉに設定された値「３」に基づいて、Ｎ個の管理領域Ａｍ（１〜Ｎ）のうち第２の管理領域Ａｍ２の次にある第３の管理領域Ａｍ３を参照し、当該参照した第３の管理領域Ａｍ３が第２の処理完了状態「ＯＤＤ」を示すように設定されているか否かを判断する。
【０１１６】
このステップＳＰ９において例えば否定結果が得られると、このことは、この第３の管理領域Ａｍ３が例えば第１の処理完了状態「ＥＶＥＮ」を示していることを意味しており、このとき制御部３は前述したステップＳＰ６に移るようになされている。
【０１１７】
また上述したステップＳＰ７において否定結果が得られた場合、このとき制御部３はステップＳＰ１２に移り、第１の管理領域Ａｍ１が初期状態「ＩＮＩＴ」を示すように設定されているか否かを判断する。
【０１１８】
このステップＳＰ１２において肯定結果が得られると、このことは、第１の管理領域Ａｍ１が初期状態「ＩＮＩＴ」を示していることを意味しており、このとき制御部３はステップＳＰ１３に移り、メモリ部２に対して実データＤが１度も書き込まれていない状況（図５（Ａ））であることを認識し、終了ステップＳＰ１５に移って最新実データ特定処理手順ＲＴ１を終了する。
【０１１９】
これに対してこのステップＳＰ１２において否定結果が得られると、このことは、第１の管理領域Ａｍ１が第１の処理完了状態「ＥＶＥＮ」、第２の処理完了状態「ＯＤＤ」及び初期状態「ＩＮＩＴ」の何れをも示していないことを意味しており、このとき制御部３はステップＳＰ１４に移り、この第１の管理領域Ａｍ１に対応する第１の実データ記憶領域Ａｄ１に対して正しくない実データＤが書き込まれている可能性がある旨を認識し、終了ステップＳＰ１５に移って最新実データ特定処理手順ＲＴ１を終了する。
【０１２０】
（１−３）過去世代実データ読出処理
次に図１２に示すフローチャートを用いて、以前に書き込んだ過去世代の実データＤを実データ記憶領域Ａｄから読み出す過去世代実データ読出処理手順ＲＴ２を説明する。因みに以下では、最新の実データＤの前世代を読み出す例について説明するが、本発明はこれに限らず、これ以前の実データＤを読み出すようにしても良い。
【０１２１】
制御部３は、前世代の実データＤを実データ記憶領域Ａｄから読み出す場合、過去世代実データ読出処理手順ＲＴ２のステップＳＰ２１に移り、上述した最新実データ特定処理手順ＲＴ１を実行することにより、最新の実データＤが記憶されている実データ記憶領域Ａｄを認識し、当該認識した実データ記憶領域Ａｄの番号（第３の実データ記憶領域Ａｄ３であれば番号「３」）を変数ｉに設定する。
【０１２２】
次いで制御部３はステップＳＰ２２に進み、この変数ｉが値「１」であるか否かを判定する。
【０１２３】
このステップＳＰ２２において否定結果が得られると、このことは、最新の実データＤが記憶されている実データ記憶領域Ａｄが第２〜第Ｎの実データ記憶領域Ａｄ（２〜Ｎ）の何れかであることを意味しており、従って制御部３はステップＳＰ２３に移り、変数ｉから１を減じた値に相当する実データ記憶領域Ａｄから前世代の実データＤを読み出し、終了ステップＳＰ２７に移って過去世代実データ読出処理手順ＲＴ２を終了する。
【０１２４】
これに対してステップＳＰ２２において肯定結果が得られると、このことは、最新の実データＤが記憶されている実データ記憶領域Ａｄが第１の実データ記憶領域Ａｄ１であることを意味しており、このとき制御部３はステップＳＰ２４に移り、第２の管理領域Ａｍ２が初期状態「ＩＮＩＴ」を示しているか否かを判断する。
【０１２５】
このステップＳＰ２４において否定結果が得られると、このことは、現在、書込２ｎ巡目の状態（図７（Ｄ））又は書込２ｎ+１巡目の状態（図９（Ｄ））であることを意味しており、このとき制御部３はステップＳＰ２５へ移り、Ｎ個の実データ記憶領域Ａｄ（１〜Ｎ）のうち終端にある第Ｎの実データ記憶領域ＡｄＮから前世代の実データＤを読み出し、終了ステップＳＰ２７に移って過去世代実データ読出処理手順ＲＴ２を終了する。
【０１２６】
これに対してこのステップＳＰ２４において肯定結果が得られると、このことは、現在書込１巡目の状態（図５（Ｄ））であることを意味しており、このとき制御部３はステップＳＰ２６に移り、前世代の実データＤが存在しない旨を認識し、終了ステップＳＰ２７に移って過去世代実データ読出処理手順ＲＴ２を終了する。
【０１２７】
（１−４）前世代実データ有効化処理
次に図１３に示すフローチャートを用いて、実データ記憶領域Ａｄに記憶されている最新の実データＤを無効にして前世代の実データＤを最新の実データＤとして有効にする前世代実データ有効化処理手順ＲＴ３を説明する。因みにこの前世代実データ有効化処理手順ＲＴ３を繰り返し実行すれば、これ以前の世代の実データＤを有効にすることも可能である。
【０１２８】
制御部３は、前世代の実データＤを最新の実データＤとして有効にする場合、前世代実データ有効化処理手順ＲＴ３のステップＳＰ３１に移り、上述した最新実データ特定処理手順ＲＴ１を実行することにより、最新の実データＤが記憶されている実データ記憶領域Ａｄを認識し、当該認識した実データ記憶領域Ａｄの番号（第３の実データ記憶領域Ａｄ３であれば番号「３」）を変数ｉに設定する。
【０１２９】
次いで制御部３はステップＳＰ３２に進み、この変数ｉの値がＮと等しいか否かを判定する。
【０１３０】
このステップＳＰ３２において否定結果が得られると、このことは、最新の実データＤが記憶されている実データ記憶領域Ａｄが第１〜第Ｎ−１の実データ記憶領域Ａｄ（１〜Ｎ−１）の何れかであることを意味しており、このとき制御部３はステップＳＰ３３に移り、第ｉの管理領域Ａｍが示す状態を、第ｉ+１の管理領域Ａｍが示す状態に設定変更し（例えば、第ｉの管理領域Ａｍが第１の処理完了状態「ＥＶＥＮ」を示していたとすると、これを第２の処理完了状態「ＯＤＤ」を示すように設定変更し）、この後終了ステップＳＰ３７に移り前世代実データ有効化処理手順ＲＴ３を終了する。
【０１３１】
このように制御部３は、最新の実データＤが記憶されている実データ記憶領域Ａｄに対応する管理領域Ａｍをその次の管理領域Ａｍが示す状態に設定変更することにより、この最新の実データＤを無効化して前世代の実データＤを最新の実データＤとして有効化することができる。
【０１３２】
これに対してかかるステップＳＰ３２において肯定結果が得られると、このことは、最新の実データＤが記憶されている実データ記憶領域Ａｄが第Ｎの実データ記憶領域ＡｄＮであることを意味しており、このとき制御部３はステップＳＰ３４に移り、第Ｎの実データ記憶領域ＡｄＮに対応する第Ｎの管理領域ＡｍＮが第２の処理完了状態「ＯＤＤ」を示すように設定されているか否かを判定する。
【０１３３】
このステップＳＰ３４において否定結果が得られると、このことは、最新の実データＤが記憶されている第Ｎの実データ記憶領域ＡｄＮに対応する第Ｎの管理領域ＡｍＮが第１の処理完了状態「ＥＶＥＮ」を示すように設定されている（図１０（Ｊ）や図６（Ｊ））ことを意味しており、このとき制御部３はステップＳＰ３５に移って、この第Ｎの管理領域ＡｍＮを第２の処理完了状態「ＯＤＤ」を示すように設定変更し、この後終了ステップＳＰ３７に移って前世代実データ有効化処理手順ＲＴ３を終了する。
【０１３４】
これに対してこのステップＳＰ３４において肯定結果が得られると、このことは、最新の実データＤが記憶されている第Ｎの実データ記憶領域ＡｄＮに対応する第Ｎの管理領域ＡｍＮが第２の処理完了状態「ＯＤＤ」を示すように設定されている（図８（Ｊ））ことを意味しており、このとき制御部３はステップＳＰ３６に移って、この第Ｎの管理領域ＡｍＮを第１の処理完了状態「ＥＶＥＮ」を示すように設定変更し、この後終了ステップＳＰ３７に移って前世代実データ有効化処理手順ＲＴ３を終了する。
【０１３５】
（１−５）異常実データ記憶領域特定処理
次に図１４に示すフローチャートを用いて、Ｎ個の実データ記憶領域Ａｄ（１〜Ｎ）の中から正しく実データＤが記憶されていない実データ記憶領域Ａｄ（以下、これを異常実データ記憶領域とも呼ぶ）を特定する際に実行する異常実データ記憶領域特定処理手順ＲＴ４を説明する。因みに以下の説明では、例えば実データ記憶領域Ａｄの数を示すＮとして２よりも大きい数を想定する。
【０１３６】
制御部３は、Ｎ個の実データ記憶領域Ａｄ（１〜Ｎ）の中から異常実データ記憶領域を特定する際、異常実データ記憶領域特定処理手順ＲＴ４のステップＳＰ４１に移り、Ｎ個の実データ記憶領域Ａｄ（１〜Ｎ）に対応して設けられているＮ個の管理領域Ａｍ（１〜Ｎ）のうち先頭にある第１の管理領域Ａｍ１を参照し、当該参照した第１の管理領域Ａｍ１が第１の処理完了状態「ＥＶＥＮ」を示すように設定されているか否かを判断する。
【０１３７】
このステップＳＰ４１において肯定結果が得られると、このことは、例えば図９及び図１０に示したように書込２ｎ+１巡目であることを意味しており、このとき制御部３はステップＳＰ４２に移って、変数ｉに対して値「２」を設定する。
【０１３８】
次いでこの制御部３はステップＳＰ４３に進み、変数ｉに設定された値「２」に基づいて、Ｎ個の管理領域Ａｍ（１〜Ｎ）のうち第１の管理領域Ａｍ１の次にある第２の管理領域Ａｍ２を参照し、当該参照した第２の管理領域Ａｍ２が第１の処理完了状態「ＥＶＥＮ」を示すように設定されているか否かを判断する。
【０１３９】
このステップＳＰ４３において例えば肯定結果が得られると、このことは、この第２の管理領域Ａｍ２が第１の処理完了状態「ＥＶＥＮ」を示していることを意味しており、このとき制御部３はステップＳＰ４４に移って、変数ｉをインクリメントする。
【０１４０】
次いでこの制御部３はステップＳＰ４５に進み、変数ｉに設定されている値がＮ+１に達したか否かを判定する。
【０１４１】
この場合この変数ｉには値「３」が設定されているので、この制御部３はステップＳＰ４５において否定結果を得てステップＳＰ４３に戻る。因みにこのステップＳＰ４５において例えば肯定結果が得られると、このことは、Ｎ個の管理領域Ａｍ（１〜Ｎ）が全て第１の処理完了状態「ＥＶＥＮ」を示すように設定されていることから、これに対応するＮ個の実データ記憶領域Ａｄ（１〜Ｎ）に異常がないことを意味しており、このとき制御部３はステップＳＰ４６に移り、Ｎ個の実データ記憶領域Ａｄ（１〜Ｎ）中に異常実データ記憶領域が存在しないと判断し、この後終了ステップＳＰ５９に移って異常実データ記憶領域特定処理手順ＲＴ４を終了する。
【０１４２】
一方２度目のステップＳＰ４３において制御部３は、変数ｉに設定された値「３」に基づいて、Ｎ個の管理領域Ａｍ（１〜Ｎ）のうち第２の管理領域Ａｍ２の次にある第３の管理領域Ａｍ３を参照し、当該参照した第３の管理領域Ａｍ３が第１の処理完了状態「ＥＶＥＮ」を示すように設定されているか否かを判断する。
【０１４３】
このステップＳＰ４３において例えば否定結果が得られると、このことは、この第３の管理領域Ａｍ３が第１の処理完了状態「ＥＶＥＮ」以外を示していることを意味しており、このとき制御部３はステップＳＰ４７に移る。
【０１４４】
このステップＳＰ４７において制御部３は、この第３の管理領域Ａｍ３が第２の処理完了状態「ＯＤＤ」又は初期状態「ＩＮＩＴ」を示すように設定されているか否かを判定する。
【０１４５】
このステップＳＰ４７において肯定結果が得られると、このことは、全ての管理領域Ａｍが第１の処理完了状態「ＥＶＥＮ」、第２の処理完了状態「ＯＤＤ」又は初期状態「ＩＮＩＴ」を示すように設定されていることから、これに対応するＮ個の実データ記憶領域Ａｄ（１〜Ｎ）に異常がないことを意味しており、このとき制御部３はステップＳＰ４６に移り、Ｎ個の実データ記憶領域Ａｄ（１〜Ｎ）中に異常実データ記憶領域が存在しないと判断し、この後終了ステップＳＰ５９に移って異常実データ記憶領域特定処理手順ＲＴ４を終了する。
【０１４６】
これに対してステップＳＰ４７において否定結果が得られると、このことは、かかる第３の管理領域Ａｍ３が初期の処理実行状態「ＩＮＩＴ→ＥＶＥＮ」や第２の処理実行状態「ＯＤＤ→ＥＶＥＮ」等を示すように設定されていることから、この第３の管理領域Ａｍ３に対応する第３の実データ記憶領域Ａｄ３に対して正しく実データＤが書き込まれていない可能性が高いことを意味しており、このとき制御部３はステップＳＰ４８に移り、この第３の実データ記憶領域Ａｄ３を異常実データ記憶領域であると判断し、この後終了ステップＳＰ５９に移って異常実データ記憶領域特定処理手順ＲＴ４を終了する。
【０１４７】
ところで上述のステップＳＰ４１において否定結果が得られた場合、このとき制御部３はステップＳＰ４９に移り、第１の管理領域Ａｍ１が第２の処理完了状態「ＯＤＤ」を示すように設定されているか否かを判断する。
【０１４８】
このステップＳＰ４９において肯定結果が得られると、このことは、例えば図７及び図８に示したように書込２ｎ巡目であることを意味しており、このとき制御部３はステップＳＰ５０に移って、変数ｉに対して値「２」を設定する。
【０１４９】
次いでこの制御部３はステップＳＰ５１に進み、変数ｉに設定された値「２」に基づいて、Ｎ個の管理領域Ａｍ（１〜Ｎ）のうち第１の管理領域Ａｍ１の次にある第２の管理領域Ａｍ２を参照し、当該参照した第２の管理領域Ａｍ２が第２の処理完了状態「ＯＤＤ」を示すように設定されているか否かを判断する。
【０１５０】
このステップＳＰ５１において例えば肯定結果が得られると、このことは、この第２の管理領域Ａｍ２が第２の処理完了状態「ＯＤＤ」を示していることを意味しており、このとき制御部３はステップＳＰ５２に移って、変数ｉをインクリメントする。
【０１５１】
次いでこの制御部３はステップＳＰ５３に進み、変数ｉに設定されている値がＮ+１に達したか否かを判定する。
【０１５２】
この場合この変数ｉには値「３」が設定されているので、この制御部３はステップＳＰ５３において否定結果を得てステップＳＰ５１に戻る。因みにこのステップＳＰ５３において例えば肯定結果が得られると、このことは、Ｎ個の管理領域Ａｍ（１〜Ｎ）が全て第２の処理完了状態「ＯＤＤ」を示すように設定されていることから、これに対応するＮ個の実データ記憶領域Ａｄ（１〜Ｎ）に異常がないことを意味しており、このとき制御部３はステップＳＰ５４に移り、Ｎ個の実データ記憶領域Ａｄ（１〜Ｎ）中に異常実データ記憶領域が存在しないと判断し、この後終了ステップＳＰ５９に移って異常実データ記憶領域特定処理手順ＲＴ４を終了する。
【０１５３】
一方２度目のステップＳＰ５１において制御部３は、変数ｉに設定された値「３」に基づいて、Ｎ個の管理領域Ａｍ（１〜Ｎ）のうち第２の管理領域Ａｍ２の次にある第３の管理領域Ａｍ３を参照し、当該参照した第３の管理領域Ａｍ３が第２の処理完了状態「ＯＤＤ」を示すように設定されているか否かを判断する。
【０１５４】
このステップＳＰ５１において例えば否定結果が得られると、このことは、この第３の管理領域Ａｍ３が第２の処理完了状態「ＯＤＤ」以外を示していることを意味しており、このとき制御部３はステップＳＰ５５に移る。
【０１５５】
このステップＳＰ５５において制御部３は、この第３の管理領域Ａｍ３が第１の処理完了状態「ＥＶＥＮ」を示すように設定されているか否かを判定する。
【０１５６】
このステップＳＰ５５において肯定結果が得られると、このことは、全ての管理領域Ａｍが第１の処理完了状態「ＥＶＥＮ」又は第２の処理完了状態「ＯＤＤ」を示すように設定されていることから、これに対応するＮ個の実データ記憶領域Ａｄ（１〜Ｎ）に異常がないことを意味しており、このとき制御部３はステップＳＰ５４に移り、Ｎ個の実データ記憶領域Ａｄ（１〜Ｎ）中に異常実データ記憶領域が存在しないと判断し、この後終了ステップＳＰ５９に移って異常実データ記憶領域特定処理手順ＲＴ４を終了する。
【０１５７】
これに対してステップＳＰ５５において否定結果が得られると、このことは、かかる第３の管理領域Ａｍ３が第１の処理実行状態「ＥＶＥＮ→ＯＤＤ」等を示すように設定されていることから、この第３の管理領域Ａｍ３に対応する第３の実データ記憶領域Ａｄ３に対して正しく実データＤが書き込まれていない可能性が高いことを意味しており、このとき制御部３はステップＳＰ５６に移り、この第３の実データ記憶領域Ａｄ３を異常実データ記憶領域であると判断し、この後終了ステップＳＰ５９に移って異常実データ記憶領域特定処理手順ＲＴ４を終了する。
【０１５８】
また上述したステップＳＰ４９において否定結果が得られた場合、このとき制御部３はステップＳＰ５７に移り、第１の管理領域Ａｍ１が初期状態「ＩＮＩＴ」を示すように設定されているか否かを判断する。
【０１５９】
このステップＳＰ５７において肯定結果が得られると、このことは、第１の管理領域Ａｍ１及びこれ以降の管理領域Ａｍ（２〜Ｎ）が全て初期状態「ＩＮＩＴ」を示していることから、実データＤが書き込まれた実データ記憶領域Ａｄが１つも存在しないことを意味しており、このとき制御部３はステップＳＰ５４に移り、Ｎ個の実データ記憶領域Ａｄ（１〜Ｎ）中に異常実データ記憶領域が存在しないと判断し、終了ステップＳＰ５９に移って異常実データ記憶領域特定処理手順ＲＴ４を終了する。
【０１６０】
これに対してこのステップＳＰ５７において否定結果が得られると、このことは、第１の管理領域Ａｍ１が初期の処理実行状態「ＩＮＩＴ→ＥＶＥＮ」や第１の処理実行状態「ＥＶＥＮ→ＯＤＤ」や第２の処理実行状態「ＯＤＤ→ＥＶＥＮ」等を示すように設定されていることから、この第１の管理領域Ａｍ１に対応する第１の実データ記憶領域Ａｄ１に対して正しく実データＤが書き込まれていない可能性が高いことを意味しており、このとき制御部３はステップＳＰ５８に移り、この第１の実データ記憶領域Ａｄ１を異常実データ記憶領域であると判断し、この後終了ステップＳＰ５９に移って異常実データ記憶領域特定処理手順ＲＴ４を終了する。
【０１６１】
（１−６）復帰処理
次に、異常実データ記憶領域が検出された際にこの他の実データ記憶領域Ａｄに記憶されている正常な実データＤを最新の実データＤとして有効化することにより異常実データ記憶領域が検出された状態から正常に実データ書込処理を実行し得る状態へ復帰する復帰処理手順ＲＴ５を、図１５に示すフローチャートを用いて説明する。
【０１６２】
制御部３は復帰処理手順ＲＴ５のステップＳＰ６１に移り、上述した異常実データ記憶領域特定処理手順ＲＴ４を実行し、この結果認識した異常実データ記憶領域に相当する実データ記憶領域Ａｄの番号（第３の実データ記憶領域Ａｄ３であれば番号「３」）を変数ｉに設定する。
【０１６３】
次いで制御部３はステップＳＰ６２に進み、この変数ｉの値がＮに等しいか否かを判定する。
【０１６４】
このステップＳＰ６２において否定結果が得られると、このことは、異常実データ記憶領域が第Ｎの実データ記憶領域ＡｄＮではないことを意味しており、このとき制御部３はステップＳＰ６３に移り、第ｉの管理領域Ａｍが示す状態を、第ｉ+１の管理領域Ａｍが示す状態に設定変更し（例えば、第ｉの管理領域Ａｍが第１の処理完了状態「ＥＶＥＮ」を示していたとすると、これを第２の処理完了状態「ＯＤＤ」を示すように設定変更し）、この後終了ステップＳＰ６７に移り復帰処理手順ＲＴ５を終了する。
【０１６５】
このように制御部３は、異常実データ記憶領域と判断された実データ記憶領域Ａｄに対応する管理領域Ａｍをその次の管理領域Ａｍが示す状態に設定変更することにより、異常実データ記憶領域と判断された実データ記憶領域Ａｄの直前の実データ記憶領域Ａｄに記憶されている実データＤを有効化するようになされている。
【０１６６】
これに対してかかるステップＳＰ６２において肯定結果が得られると、このことは、異常実データ記憶領域が第Ｎの実データ記憶領域ＡｄＮであることを意味しており、このとき制御部３はステップＳＰ６４に移り、第Ｎ−１の管理領域ＡｍＮ−１が第２の処理完了状態「ＯＤＤ」を示すように設定されているか否かを判定する。
【０１６７】
このステップＳＰ６４において否定結果が得られると、このことは、異常実データ記憶領域と判断された第Ｎの実データ記憶領域ＡｄＮに対応する第Ｎの管理領域ＡｍＮよりも前の管理領域Ａｍ（１〜Ｎ−１）全てが第１の処理完了状態「ＥＶＥＮ」を示すように設定されている（例えば図１０（Ｈ））ことを意味しており、このとき制御部３はステップＳＰ６５に移って、この第Ｎの管理領域ＡｍＮを第２の処理完了状態「ＯＤＤ」を示すように設定変更し、この後終了ステップＳＰ６７に移って復帰処理手順ＲＴ５を終了する。
【０１６８】
これに対してこのステップＳＰ６４において肯定結果が得られると、このことは、異常実データ記憶領域と判断された第Ｎの実データ記憶領域ＡｄＮに対応する第Ｎの管理領域ＡｍＮよりも前の管理領域Ａｍ（１〜Ｎ−１）全てが第２の処理完了状態「ＯＤＤ」を示すように設定されている（例えば図８（Ｈ））ことを意味しており、このとき制御部３はステップＳＰ６６に移って、この第Ｎの管理領域ＡｍＮを第１の処理完了状態「ＥＶＥＮ」を示すように設定変更し、この後終了ステップＳＰ６７に移って復帰処理手順ＲＴ５を終了する。
【０１６９】
（１−７）動作及び効果
以上の構成においてこの記憶装置１のメモリ部２は、実データＤを記憶するために順次設けられたＮ個の実データ記憶領域Ａｄ（１〜Ｎ）を有する。またこの記憶装置１のメモリ部２は、このＮ個の実データ記憶領域Ａｄ（１〜Ｎ）に対応するように順次設けられたＮ個の管理領域Ａｍ（１〜Ｎ）を有する。
【０１７０】
またこの記憶装置１の制御部３は、Ｎ個の実データ記憶領域Ａｄ（１〜Ｎ）を循環するように各実データ記憶領域Ａｄに対して実データＤを書き込む実データ書込処理を順次実行する。
【０１７１】
またこの記憶装置１の制御部３は、Ｎ個の実データ記憶領域Ａｄ（１〜Ｎ）に対して実データ書込処理を実行する度に対応する管理領域Ａｍを一の処理完了状態（例えば、第１の処理完了状態「ＥＶＥＮ」）を示す状況から他の処理完了状態（例えば、第２の処理完了状態「ＯＤＤ」）を示す状態に設定変更するようにした。
【０１７２】
これによりこの記憶装置１の制御部３は、Ｎ個の管理領域Ａｍを先頭から順番に参照して他の処理完了状態に設定された管理領域Ａｍを検出すれば、当該検出した管理領域Ａｍに対応する実データ記憶領域Ａｄの直前に存在する実データ記憶領域Ａｄに対して、最新の実データＤが記憶されていると判断することができる。
【０１７３】
かくするにつき、この記憶装置１のようにＮ個の実データ記憶領域Ａｄ（１〜Ｎ）に対して実データＤを循環的に順次書き込むような構成を採用した場合でも、このＮ個の実データ記憶領域Ａｄ（１〜Ｎ）の中から最新の実データＤが記憶されている実データ記憶領域Ａｄを特定することができるので、この結果実データ読出処理や実データ書込処理を正しく実行することができる。
【０１７４】
さらにこの記憶装置１の制御部３は、実データ書込処理を実行する前にこの実データ書込処理が実行される実データ記憶領域Ａｄに対応する管理領域Ａｍを、一の処理完了状態（例えば、第１の処理完了状態「ＥＶＥＮ」）を示していた状況から処理実行状態（例えば、第１の処理実行状態「ＥＶＥＮ→ＯＤＤ」）を示すように一旦設定変更し、この実データ書込処理が正常に完了したことを認識した後に、他の処理完了状態（例えば、第２の処理完了状態「ＯＤＤ」）を示すように設定変更するようにした。
【０１７５】
これにより、実データ書込処理が途中で中止されたことによって実データＤが正しく書き込まれていない実データ記憶領域Ａｄが生じたとしても、この実データ記憶領域Ａｄに対応する管理領域Ａｍが処理実行状態等を示したままになるので、この記憶装置１の制御部３はこの処理実行状態等を示したままの管理領域Ａｍを検出することにより、この正しく実データＤが書き込まれていない実データ記憶領域Ａｄを認識することができる。
【０１７６】
かくするにつきこの記憶装置１は、この正しく書き込まれていない実データＤを読み出さず以前に記憶した正しい実データＤを読み出す実データ読出処理を実行したり、また、正しい実データＤを書き込み直す実データ書込処理を実行したりすることができる。
【０１７７】
ところでこの記憶装置１の管理領域Ａｍは、このメモリ部２の最小更新単位に相当する最小更新領域Ａｓを２つ連続して設けることにより構成されている。この記憶装置１の制御部３は、管理領域Ａｍ中の第１の最小更新領域Ａｓ１及び第２の最小更新領域Ａｓ２の両方に対して一の状態データを記憶させることによりこの管理領域Ａｍを一の処理完了状態を示すように設定し、第１の最小更新領域Ａｓ１及び第２の最小更新領域Ａｓ２の両方に対して他の状態データを記憶させることにより他の処理完了状態を示すように設定する。
【０１７８】
ここでこの記憶装置１の制御部３は、実データ記憶領域Ａｄに対して実データＤを書き込む実データ書込処理を１回実行する度にこの実データ記憶領域Ａｄに対応する管理領域Ａｍを一の処理完了状態（例えば、第１の処理完了状態「ＥＶＥＮ」）を示す状況から処理実行状態（例えば、第１の処理実行状態「ＥＶＥＮ→ＯＤＤ」）を経て他の処理完了状態（例えば、第２の処理完了状態「ＯＤＤ」）を示すように順次設定変更する際、一の状態データ（例えば、第１の状態データ「ｅｖｅｎ」）が記憶されている第１の最小更新領域Ａｓ１及び第２の最小更新領域Ａｓ２のうち一方の最小更新領域Ａｓ１を他の状態データ（例えば、第２の状態データ「ｏｄｄ」）に更新することによりこの管理領域Ａｍを一の処理完了状態を示す状況から処理実行状態を示すように設定変更し、この次に第１の最小更新領域Ａｓ１及び第２の最小更新領域Ａｓ２のうち他方の最小更新領域Ａｓ２を他の状態データに更新することにより、この管理領域Ａｍを処理実行状態を示す状況から他の処理完了状態を示すように設定変更する。
【０１７９】
この結果この制御部３は、実データ記憶領域Ａｄに対して実データＤを書き込む実データ書込処理を１回実行する度に、この実データ記憶領域Ａｄに対応する管理領域Ａｍ中の第１の最小更新領域Ａｓ１及び第２の最小更新領域Ａｓ２をそれぞれ１回ずつ更新するだけで良く、これにより従来手法のように実データ書込処理を１度実行する度に管理領域Ａｍを２回も更新してしまうことを回避することができ、この結果メモリ部２を格段と効率的に使用することができる。
【０１８０】
以上の構成によれば、Ｎ個の実データ記憶領域Ａｄ（１〜Ｎ）に対して実データ書込処理を実行する度に対応する管理領域Ａｍを一の処理完了状態を示す状況から他の処理完了状態を示す状態に設定変更するようにしたことにより、このＮ個の実データ記憶領域Ａｄ（１〜Ｎ）の中から最新の実データＤが記憶されている実データ記憶領域Ａｄを特定することができるので、実データ読出処理や実データ書込処理を正しく実行することができ、さらに、このような実データ書込処理を実行する際には、この実データ書込処理を実行する前にこの実データ書込処理が実行される実データ記憶領域Ａｄに対応する管理領域Ａｍを、一の処理完了状態を示していた状況から処理実行状態を示すように一旦設定変更し、この実データ書込処理が正常に完了したことを認識した後に、他の処理完了状態を示すように設定変更するようにしたことにより、実データ書込処理が途中で中止されたことによって実データＤが正しく書き込まれていない実データ記憶領域Ａｄが生じたとしても、この正しく実データＤが書き込まれていない実データ記憶領域Ａｄを認識することができ、また、このように実データ記憶領域Ａｄに対して実データＤを書き込む実データ書込処理を１度実行する度にこの実データ記憶領域Ａｄに対応する管理領域Ａｍを一の処理完了状態を示す状況から処理実行状態を経て他の処理完了状態を示すように順次設定変更する際には、一の状態データが記憶されている第１の最小更新領域Ａｓ１及び第２の最小更新領域Ａｓ２のうち一方の最小更新領域Ａｓ１を他の状態データに更新することによりこの管理領域Ａｍを一の処理完了状態を示す状況から処理実行状態を示すように設定変更し、次いで第１の最小更新領域Ａｓ１及び第２の最小更新領域Ａｓ２のうち他方の最小更新領域Ａｓ２を他の状態データに更新することによりこの管理領域Ａｍを処理実行状態を示す状況から他の処理完了状態を示すように設定変更するようにしたことにより、従来手法のように実データ書込処理を１度実行する度に管理領域Ａｍを２回も更新してしまうことを回避することができ、かくしてメモリ部２を格段と効率的に使用することができる。
【０１８１】
因みに本実施の形態の場合、このメモリ部２における最小更新領域Ａｓの大きさが例えば１バイトに相当する。またこのようなメモリ部２では、一般的に何もデータが書き込まれていない場合、初期値として「０ｘｆｆ」が格納されている。ここでさらに本実施の形態の場合、上述した初期状態データ「ｉｎｉｔ」を例えば「０ｘｆｆ」に選定するようにした。この結果このメモリ部２の使用を開始する際、このメモリ部２に対して初期化処理を実行して改めて他の値を記憶させなくて済み、かくして初期化作業を簡略化することができる。
【０１８２】
また本実施の形態の場合、上述した第１の状態データ「ｅｖｅｎ」を例えば「０ｘ５ａ」に選定し、第２の状態データ「ｏｄｄ」を例えば「０ｘａ５」に選定した。このように第１の状態データ「ｅｖｅｎ」を示すビットと第２の状態データ「ｏｄｄ」を示すビットとが互いに反転した値になるようにすると、第１の状態データ「ｅｖｅｎ」と第２の状態データ「ｏｄｄ」との判別が容易になり、かくして異常を検出しやすくなるという効果を得ることができる。またこの場合、第１の状態データ「ｅｖｅｎ」として選定した「０ｘ５ａ（＝０１０１１０１０ｂ）」と、第２の状態データ「ｏｄｄ」として選定した「０ｘａ５（＝１０１００１０１ｂ）」とは、それぞれにおいて隣接するビット同士がほぼ異なる値をとり、かつ、どちらかを１ビット前後にシフトしたとしても他方と異なる値になる。これにより、例えば制御部３とメモリ部２との間のデータ通信においてこれらデータが１ビットシフトしたとしても、「０ｘ５ａ」は「０ｘａ５」と異なる値となり、また「０ｘａ５」は「０ｘ５ａ」と異なる値になるので、この間違いの検出を容易にすることができる。
【０１８３】
また本実施の形態の場合このメモリ部２において、Ｎ個の実データ記憶領域Ａｄ（１〜Ｎ）に対応するＮ個の管理領域Ａｍ（１〜Ｎ）を連続して確保するようにしたことにより、以下に述べるような効果を得ることができる。つまり本実施の形態のメモリ部２として採用されているＥＥＰＲＯＭは、連続した領域からまとめてデータを読み出す機能を持っているものが多い。従って制御部３は、このように連続して確保された管理領域Ａｍから処理状態（第１の処理完了状態「ＥＶＥＮ」等）を示すデータをまとめて高速なＲＡＭ（図示せず）等に読み出し、当該読み出したデータを利用して、複数の実データ記憶領域Ａｄの中から有効な実データ記憶領域Ａｄを算出する処理等を高速に実行することができる。これに対して例えば図１６に示すように管理領域Ａｍを分散して配置してしまうと、これら管理領域Ａｍからまとめてデータを読み出すことが困難になり、本実施の形態と同様の効果が得られなくなる。
【０１８４】
また本実施の形態の場合この制御部３は、メモリ部２から一度読み出した実データＤをＲＡＭに一時記憶（キャッシュ）させておくようになされている。これにより制御部３は、再度この実データＤを利用しなければならないとき、いちいちメモリ部２にアクセスして実データ読出処理を実行しなくても、このメモリ部２よりも速くアクセスできるＲＡＭからこの実データＤを読み出して処理することができ、かくして高速化を図ることができる。同様にしてこの制御部３は、メモリ部２に対して実データＤを書き込む実データ書込処理を実行する際、当該書き込む実データＤをＲＡＭに一時記憶させておくようになされている。これにより同様にして、この実データＤを読み出して処理する際の高速化を図ることができる。またこの制御部３は、更新した新たな実データＤをメモリ部２に書き込んだ後も前世代の実データＤをＲＡＭに一時記憶させたままにするようになされている。これにより、この前世代の実データＤを利用しなければならない状況になったときの処理の高速化も実現することができる。
【０１８５】
これに加えてこの制御部３は、ある実データＤをメモリ部２に対して書き込まなければならなくなった際、この書き込むべき実データＤとメモリ部２に記憶されている最新の実データＤとが同値であれば、この実データＤを書き込む実データ書込処理を実行しないで省略するようになされている。これにより、実データ書込処理を省略した分だけ処理時間の短縮化を図ることができる。ただし、このように同値であった場合に実データ書込処理を実行しないようにすると、例えば上述した過去世代実データ読出処理ＲＴ２によって、期待した実データＤが読めなくなってしまうことがあり得るので、以下に説明するような工夫がなされている。すなわちこの制御部３は、例えば過去世代実データ読出処理ＲＴ２により遡って読み出し得る実データＤの世代を例えばｍ世代までと規定している。そしてこの制御部３は、同値の実データＤを繰り返し書き込む状況になった際、この繰り返し書き込む回数がｍを超えたときに、この実データＤを書き込む実データ書込処理を省略するようにした。これによりこの制御部３は、少なくともｍ世代前まで遡って実データＤを期待どおりに読み出すことができる。
【０１８６】
因みに本実施の形態の場合このメモリ部２には、図２に示したように、実データＤとは異なる種類の実データＤｘを記憶する実データ記憶領域Ａｄｘが同じようにしてＮｘ個設けられている。またこれら実データ記憶領域Ａｄｘに対応する管理領域Ａｍｘも同じようにしてＮｘ個設けられている。この場合、実データＤが記憶される実データ記憶領域Ａｄの数と、実データＤとは異なる実データＤｘが記憶される実データ記憶領域Ａｄｘの数とが異なっていても問題ない。また、例えばメモリ部２における各最小更新領域Ａｓの最大更新可能回数が１００万回である場合であって、実データＤの更新回数が３００万回に達すると見込まれる場合、実データＤを記憶する実データ記憶領域Ａｄの個数Ｎを３に設定し、実データＤの更新回数が１０００万回に達すると見込まれる場合、実データＤを記憶する実データ記憶領域Ａｄの個数Ｎを１０に設定すればよい。
【０１８７】
（２）第２の実施の形態
次に、本発明の第２の実施の形態を詳述する。この第２の実施の形態においては、記憶装置１による最新実データ特定処理、過去（前）世代実データ読出処理、前世代実データ有効化処理、異常実データ記憶領域特定処理及び復帰処理が異なる点以外、上述した第１の実施の形態と同様であり、同様部分である記憶装置１の構成及びメモリ部２の構成などの説明は省略する。
【０１８８】
この第２の実施の形態による記憶装置１では、Ｎ個の管理領域Ａｍ（１〜Ｎ）の状態に基づいて、前世代実データ有効化処理の繰り返しを制限するようになされている。またこの第２の実施の形態では、記憶装置１の制御部３が、最新実データ特定処理と異常実データ記憶領域特定処理とをまとめて最新実データ特定及び異常実データ記憶領域特定処理として実行するようになされている。
【０１８９】
以下、制御部３が、Ｎ個の管理領域Ａｍ（１〜Ｎ）の状態に基づいて、前世代実データ有効化処理の繰り返しを制限するために実行する最新実データ特定及び異常実データ記憶領域特定処理、前世代実データ読出処理、前世代実データ有効化処理及び復帰処理について説明する。
【０１９０】
（２−１）第２の実施の形態による前世代実データ有効化処理
まず図１７に示すフローチャートを用いて、Ｎ個の実データ記憶領域Ａｄ（１〜Ｎ）に記憶されている最新の実データＤを無効にして前世代の実データＤを最新の実データＤとして有効にする（このことを、実データＤを巻き戻すとも言う）前世代実データ有効化処理の手順（以下、これを前世代実データ有効化処理手順とも呼ぶ）ＲＴ１０を説明する。
【０１９１】
ここでは前提として、制御部３が、この前世代実データ有効化処理手順ＲＴ１０の開始前に、後述する最新実データ特定及び異常実データ記憶領域特定処理を実行することにより、Ｎ個の実データ記憶領域Ａｄ（１〜Ｎ）に異常実データ記憶領域が存在しない（すなわちＮ個の実データ記憶領域Ａｄ（１〜Ｎ）に記憶されている実データＤに異常がない）と判断していて、さらにＮ個の実データ記憶領域Ａｄ（１〜Ｎ）のうちのどの実データ記憶領域Ａｄに最新の実データＤが記憶されているのかを認識していると共に実データＤの巻き戻しが可能であるか否かを認識しているものとする。
【０１９２】
その上で処理を開始すると、制御部３は、まずＮ個の実データ記憶領域Ａｄ（１〜Ｎ）に実データＤが２つ以上存在するかどうか（実データＤの巻き戻しが可能かどうか）を判断する（ステップＳＰ１０１）。ちなみにこのステップＳＰ１０１でどのようにして判断するかは、後述する最新実データ特定及び異常実データ記憶領域特定処理で説明する。
【０１９３】
ここで、Ｎ個の実データ記憶領域Ａｄ（１〜Ｎ）に実データＤが２つ以上存在しないと判断した場合、制御部３は、巻き戻し不可能のエラー通知を行って（ステップＳＰ１０２）、この前世代実データ有効化処理手順ＲＴ１０を終了する（ステップＳＰ１０４）。実際上、実データＤが１つしかない場合、巻き戻しをすると有効な実データＤが１つもなくなってしまうことになり、巻き戻しが無意味なものとなるので、エラーとして処理する。また実データＤが１つもない場合、巻き戻す対象すらないので、当然エラーとして処理する。
【０１９４】
これに対して、少なくとも実データが２つは存在すると判断した場合、制御部３は、Ｎ個の実データ記憶領域Ａｄ（１〜Ｎ）のうちの最新の実データＤが記憶されている実データ記憶領域Ａｄに対応する管理領域Ａｍの状態を初期状態「ＩＮＩＴ」に設定変更して（ステップＳＰ１０３）、この前世代実データ有効化処理手順ＲＴ１０を終了する（ステップＳＰ１０４）。
【０１９５】
このような前世代実データ有効化処理手順ＲＴ１０にしたがって、制御部３は、最新の実データＤが記憶されている実データ記憶領域Ａｄに対応する管理領域Ａｍの状態を初期状態「ＩＮＩＴ」に設定変更することで、最新の実データＤを、あたかも消去したかのように無効にして、実データＤの巻き戻しを行うようになされている。
【０１９６】
（２−２）第２の実施の形態による復帰処理
つづいて図１８に示すフローチャートを用いて、異常実データ記憶領域が検出された際にこの他の実データ記憶領域Ａｄに記憶されている正常な実データＤを最新の実データＤとして有効化することにより、異常実データ記憶領域が検出された状態から正常に実データ書込処理を実行し得る状態へ復帰する復帰処理の手順（以下、これを復帰処理手順とも呼ぶ）ＲＴ１１を説明する。
【０１９７】
ここでは前提として、制御部３が、この復帰処理手順ＲＴ１１の開始前に、後述する最新実データ特定及び異常実データ記憶領域特定処理を実行することにより、Ｎ個の実データ記憶領域Ａｄ（１〜Ｎ）に異常実データ記憶領域が存在していると判断していると共に、この異常実データ記憶領域がＮ個の実データ記憶領域Ａｄ（１〜Ｎ）のうちのどの実データ記憶領域Ａｄであるのかを認識しているものとし、さらにその状態から復帰可能であると判断しているものとする。
【０１９８】
その上で処理を開始すると、制御部３は、まず異常実データ記憶領域と判断された実データ記憶領域Ａｄに対応する管理領域Ａｍの状態を初期状態「ＩＮＩＴ」に設定変更して（ステップＳＰ１１１）、この復帰処理手順ＲＴ１１を終了する（ステップＳＰ１１２）。
【０１９９】
このような復帰処理手順ＲＴ１１にしたがって、制御部３は、異常実データ記憶領域と判断した実データ記憶領域Ａｄに対応する管理領域Ａｍの状態を初期状態「ＩＮＩＴ」に設定変更することにより、異常実データ記憶領域に記憶されている実データＤをあたかも消去したかのように無効にして復帰するようになされている。
ようになされている。
【０２００】
このようにこの第２の実施の形態では、途中で管理領域Ａｍの状態を初期状態「ＩＮＩＴ」（すなわち実データＤが書き込まれていないとみなされる状態）に設定変更する状況が存在し、このため第１の実施の形態では想定し得なかった管理領域Ａｍ（１〜Ｎ）の状態のパターンが発生することになる。以下、この第２の実施の形態で発生し得る状態のパターンについて説明するが、ここでは説明を簡略化するために拡張正規表現を利用した記法を用いることにする。
【０２０１】
まず、管理領域Ａｍの状態として「ＩＮＩＴ」を‘Ｉ’、「ＥＶＥＮ」を‘Ｅ’、「ＯＤＤ」を‘Ｏ’と1文字で表すことにする。また、前の状態が1つ以上の管理領域Ａｍに渡って連続する場合は、この連続を‘＋’で表す。これにより例えば「ＥＶＥＮ」の状態が１つ以上連続する場合（すなわち‘ＥＥ…’）は、‘Ｅ＋’と表すことができる。また例えば「ＯＤＤ」の状態が１つ以上連続した後「ＥＶＥＮ」の状態が１つ以上連続する場合（すなわち‘ＯＯ…ＯＥＥ…’）は、‘Ｏ＋Ｅ＋’と表すことができる。
【０２０２】
さらに、前の状態が０回以上連続する場合は、この連続を‘＊’で表す。これにより例えば「ＥＶＥＮ」の状態の後に「ＯＤＤ」の状態が存在しない（０回連続する）場合（すなわち‘Ｅ’）も、「ＥＶＥＮ」の状態の後に「ＯＤＤ」の状態が１つ存在する（１回連続する）場合（すなわち‘ＥＯ’）も、「ＥＶＥＮ」の状態の後に「ＯＤＤ」の状態が３回連続する場合（すなわち‘ＥＯＯＯ’）も、‘ＥＯ＊’と表すことができる。
【０２０３】
さらに、前の状態が０回以上１回以下発生する場合は、この発生を‘？’で表す。これにより例えば「ＥＶＥＮ」の状態の後に「ＯＤＤ」の状態が１つ存在し、さらにこの「ＯＤＤ」の状態の後に「ＥＶＥＮ」の状態が１つ存在する場合（すなわち‘ＥＯＥ’）も、「ＥＶＥＮ」の状態の後に「ＯＤＤ」の状態が存在せずに、「ＥＶＥＮ」の状態が１つ存在する場合（‘ＥＥ’）も、‘ＥＯ？Ｅ’と表すことができる。
【０２０４】
さらに２つの状態のいずれかを示す場合、‘｜’を用いる。これにより例えば、「ＥＶＥＮ」の状態または「ＯＤＤ」の状態が３回連続する場合（すなわち‘ＥＥＥ’または‘ＯＯＯ’）は、‘Ｅ＋｜Ｏ＋’と表すことができる。
【０２０５】
さらに、‘＋’、‘＊’、‘？’などを用いた表現をグループ化するため、及び‘｜’の影響範囲を限定するためには、‘（’、‘）’で囲む。これにより例えば‘ＩＥＥＥＩ’及び‘ＩＯＯＯＩ’はどちらも‘Ｉ（Ｅ＋｜Ｏ＋）Ｉ’と表すことができる。
【０２０６】
さらに２つ以上の状態のいずれかを示す場合、それらの状態を‘［’、‘］’で囲む。これにより例えば‘ＩＯＩ’及び‘ＩＥＩ’はどちらも‘Ｉ［ＯＥ］Ｉ’と表すことができる。
【０２０７】
さらに指定した状態のいずれでもない場合、それらの状態を‘[^’、‘]’で囲む。これにより例えば、‘Ｅ’でも‘Ｏ’でもない状態は‘［^ＥＯ]’と表すことができ、また‘Ｅ’でも‘Ｏ’でも‘Ｉ’でもない状態は‘［^ＥＯＩ]’と表すことができる。ちなみにこの‘［^ＥＯＩ]’という状態は例えば管理領域Ａｍへの更新失敗により発生し得る状態である。
【０２０８】
さらに管理領域Ａｍの先頭を‘^’、終端を‘＄’で表す。これにより、この拡張正規表現で表した状態が、管理領域Ａｍの先頭から始まっている状態を表しているのか、途中までの状態を表しているのか、最後までの状態を表しているのかなどを表現することができる。例えば、管理領域Ａｍの先頭から終端までの全てが‘Ｅ’（すなわち‘Ｅ…Ｅ’）であれば、‘^Ｅ＋＄’と表すことができる。ここで単に‘^Ｅ＋’とした場合、管理領域Ａｍの先頭から‘Ｅ’が1個以上連続しているが、必ずしもそれが最後まで続いているわけではないことを表す。
【０２０９】
これらの記法を用いて、第１の実施の形態と第２の実施の形態とで、どのように発生し得る管理領域Ａｍ（１〜Ｎ）の状態のパターンが変化したのかを説明する。まず、第１の実施の形態で発生し得る有効な管理領域Ａｍ（１〜Ｎ）の状態のパターンは次の３通りであった。
【０２１０】
（１）．  ^Ｉ＋＄
（２）．  ^Ｅ＋（Ｉ＋｜Ｏ＋）？＄
（３）．  ^Ｏ＋Ｅ＊＄
【０２１１】
ここで（１）は全てが「ＩＮＩＴ」のパターン、つまり実データＤが1つも書かれていないパターンである。（２）は「ＥＶＥＮ」が先頭から1つ以上続き、その後残りがあるとすれば全て「ＩＮＩＴ」か「ＯＤＤ」あるというパターンである。この場合、最後の「ＥＶＥＮ」に対応する実データ記憶領域Ａｄに最新の実データＤが記憶されている。（３）は「ＯＤＤ」が先頭から1つ以上続き、その後残りがあるとすれば全て「ＥＶＥＮ」であるというパターンである。この場合、最後の「ＯＤＤ」に対応する実データ記憶領域Ａｄに最新の実データＤが記憶されている。
【０２１２】
一方、この第２の実施の形態で発生し得る有効な管理領域Ａｍ（１〜Ｎ）の状態のパターンをまとめると次の３通りとなる。
【０２１３】
（ａ）．  ^Ｉ＋（Ｅ＋｜Ｏ＋）？Ｉ＊＄
（ｂ）．  ^Ｅ＋Ｉ＊Ｏ＊＄
（ｃ）．  ^Ｏ＋Ｉ＊Ｅ＊＄
【０２１４】
ここで（ａ）は「ＩＮＩＴ」が先頭から1つ以上続き、その後「ＥＶＥＮ」のみか「ＯＤＤ」のみが幾つか連続して存在するかも知れず、その後残りがあるとすれば最後まで「ＩＮＩＴ」が続くというパターンである。この場合、「ＥＶＥＮ」も「ＯＤＤ」も存在していなければ、実データＤが1つも記憶されていない状態であり、これに対して「ＥＶＥＮ」または「ＯＤＤ」が存在していれば、その1つ以上連続する「ＥＶＥＮ」または「ＯＤＤ」の最後に位置する管理領域Ａｍに対応する実データ記憶領域Ａｄに最新の実データＤが記憶されている。（ｂ）は「ＥＶＥＮ」が先頭から1つ以上続き、その後「ＩＮＩＴ」が連続して存在するかも知れず、さらにその後「ＯＤＤ」が最後まで連続して続くかも知れないというパターンである。この場合、先頭から連続する「ＥＶＥＮ」の最後に位置する管理領域Ａｍに対応する実データ記憶領域Ａｄに最新の実データＤが記憶されている。（ｃ）は「ＯＤＤ」が先頭から1つ以上続き、その後「ＩＮＩＴ」が連続して存在するかも知れず、さらにその後「ＥＶＥＮ」が最後まで連続して続くかも知れないというパターンである。この場合、先頭から連続する「ＯＤＤ」の最後に位置する管理領域Ａｍに対応する実データ記憶領域Ａｄに最新の実データＤが記憶されている。
【０２１５】
これら（ａ）、（ｂ）及び（ｃ）のパターンに含まれていて、実データＤの巻き戻しができないパターンは次の4通りである。
【０２１６】
（Ｉ）．  ^Ｉ＋＄
（II）．  ^Ｉ＋[ＥＯ]Ｉ＊＄
（III）．  ^ＥＩ＋＄
（IV）．  ^ＯＩ＋＄
【０２１７】
ここで（Ｉ）は有効な実データＤが１つもないパターンである。（II）は先頭でないどこか１つの管理領域Ａｍの状態が「ＥＶＥＮ」または「ＯＤＤ」で、他は全て「ＩＮＩＴ」であるというパターンである。（III）は先頭が「ＥＶＥＮ」であり、残りが全て「ＩＮＩＴ」であるというパターンである。（IV）は先頭が「ＯＤＤ」であり、残りが全て「ＩＮＩＴ」であるというパターンである。つまりこれらは「ＥＶＥＮ」または「ＯＤＤ」が全く存在しないか、あっても１つだけというパターンである。
【０２１８】
また、この第２の実施の形態で発生し得る異常状態のパターンのうち、復帰可能な異常状態のパターンをまとめると次の４通りとなる。
【０２１９】
（ｄ）．  ^Ｉ＋（Ｅ＋｜Ｏ＋）［^ＥＯＩ］Ｉ＊＄
（ｅ）．  ^Ｅ＋［^ＥＯＩ］Ｉ＊Ｏ＊＄
（ｆ）．  ^Ｏ＋［^ＥＯＩ］Ｉ＊Ｅ＊＄
（ｇ）．  ^［^ＥＯＩ］Ｉ＊（Ｅ＋｜Ｏ＋）＄
【０２２０】
ここで（ｄ）は上述の（ａ）のパターンのうちの‘^Ｉ＋（Ｅ＋｜Ｏ＋）Ｉ＋＄’において次に実データＤを更新する際の異常により発生し得るパターンである。（ｅ）は上述の（ｂ）のパターンにおいて次に実データＤを更新する際の異常により発生し得るパターンである。（ｆ）は上述の（ｃ）のパターンにおいて次に実データＤを更新する際の異常により発生し得るパターンである。（ｇ）は上述の（ａ）のパターンのうちの‘^Ｉ＋（Ｅ＋｜Ｏ＋）＄’において次に実データＤを更新する際の異常により発生し得るパターンである。これらは、いずれも‘［^ＥＯＩ］’の部分を‘ＩＮＩＴ’に変更することにより復帰可能な異常状態のパターンである。
【０２２１】
なお、これら（ｄ）、（ｅ）、（ｆ）、及び（ｇ）で示した、発生し得る異常状態のパターンと似たパターンではあるが、‘^Ｉ＋Ｅ＋ＯＩ＊＄’、‘^Ｉ＋Ｏ＋ＥＩ＊＄’、‘^Ｅ＋ＯＩ＋Ｏ＊＄’、‘^Ｏ＋ＥＩ＋Ｅ＊＄’、‘^ＥＩ＋Ｅ＋＄’、‘^ＯＩ＋Ｏ＋＄’は発生し得ない異常状態のパターンであることに注意する。これらは、いずれも次に実データＤを更新する場所に対応する管理領域Ａｍの状態が「ＩＮＩＴ」であった場合に、更新失敗によりこの管理領域Ａｍの状態を「ＥＶＥＮ」に変更すべきところを誤って「ＯＤＤ」に変更したり、「ＯＤＤ」に変更すべきところを誤って「ＥＶＥＮ」に変更した状態である。しかしながら、実際上、このような異常状態のパターンは発生し得ない。ここでその理由を説明する。
【０２２２】
つまり第１の実施の形態で図３及び図４を用いて説明したように、管理領域Ａｍは、２つの連続する最小更新領域Ａｓ１及びＡｓ２（それぞれがデータ最小更新単位であるＳビット）で構成され、管理領域Ａｍの状態を「ＩＮＩＴ」から「ＥＶＥＮ」に、または「ＩＮＩＴ」から「ＯＤＤ」に変更するには、最小更新領域Ａｓ１への書き込みと最小更新領域Ａｓ２への書き込みとの２段階の書き込みを行う。したがって、例えば最小更新領域Ａｓ１への書き込みが失敗しても、最小更新領域Ａｓ２はその影響を受けない。また同様に、最小更新領域Ａｓ２への書き込みが失敗しても、最小更新領域Ａｓ１はその影響を受けない。
【０２２３】
よって、例えば管理領域Ａｍの状態を「ＩＮＩＴ」から「ＥＶＥＮ」に変更する場合、最小更新領域Ａｓ１の状態を「ｉｎｉｔ」から「ｅｖｅｎ」に変更すべきところを誤って「ｏｄｄ」に変更してしまったとしても、最小更新領域Ａｓ２の状態は「ｉｎｉｔ」のままなので、これら最小更新領域Ａｓ１（「ｏｄｄ」）及び最小更新領域Ａｓ２（「ｉｎｉｔ」）で構成される管理領域Ａｍの状態は、「ＯＤＤ」にはならない。また同様に、このとき最小更新領域Ａｓ１の状態を「ｉｎｉｔ」から「ｅｖｅｎ」に変更した後、最小更新領域Ａｓ２の状態を「ｉｎｉｔ」から「ｅｖｅｎ」に変更すべきところを誤って「ｏｄｄ」に変更してしまったとしても、最小更新領域Ａｓ１の状態は既に「ｅｖｅｎ」に変更されたままなので、これら最小更新領域Ａｓ１（「ｅｖｅｎ」）及び最小更新領域Ａｓ２（「ｏｄｄ」）で構成される管理領域Ａｍの状態は、「ＯＤＤ」にはならない。
【０２２４】
このように、管理領域Ａｍの状態を「ＩＮＩＴ」から「ＥＶＥＮ」に変更すべきところを更新失敗により誤って「ＯＤＤ」に変更したり、「ＩＮＩＴ」から「ＯＤＤ」に変更すべきところを更新失敗により誤って「ＥＶＥＮ」に変更したりする状況は発生し得ず、このためこのような状況を示すパターン（すなわち、上述した‘^Ｉ＋Ｅ＋ＯＩ＊＄’、‘^Ｉ＋Ｏ＋ＥＩ＊＄’、‘^Ｅ＋ＯＩ＋Ｏ＊＄’、‘^Ｏ＋ＥＩ＋Ｅ＊＄’、‘^ＥＩ＋Ｅ＋＄’、‘^ＯＩ＋Ｏ＋＄’）は、発生し得ない異常状態のパターンとして扱う。
【０２２５】
また、この第２の実施の形態で発生し得る異常状態のパターンうち、復帰不可能な異常状態は次の１通りとなる。
【０２２６】
（ｈ）  ^［^ＥＯＩ］Ｉ＋＄
【０２２７】
ここで（ｈ）は全く実データＤが記憶されていない状態において、すなわち上述の（ａ）のパターンのうちの‘^Ｉ＋＄’において、実データＤを初めて書き込む際の異常により発生し得るパターンである。この場合、復帰するために必要な他の実データＤが存在しないので、上述の復帰処理を行わずに、実データ記憶領域Ａｄに実データＤが全く存在していないとみなす。つまりこの（ｈ）は正常状態のパターンとして扱われるが、有効な実データＤが存在しないので巻き戻しはできないパターンである。
【０２２８】
さらに、これら（ａ）〜（ｈ）のいずれのパターンにも該当しない状態は、本来発生し得ないはずの異常状態であると判断する。
【０２２９】
（２−３）第２の実施の形態による最新実データ特定及び異常実データ記憶領域特定処理
以下、上述したような種々の状態のパターンがあるということを踏まえた上で、Ｎ個の実データ記憶領域Ａｄ（１〜Ｎ）の中から最新の実データＤが記憶されている実データ記憶領域Ａｄを特定すると共に実データＤの巻き戻しが可能であるか否かを特定する、及びＮ個の実データ記憶領域Ａｄ（１〜Ｎ）の中から正常に実データＤが記憶されていない異常実データ記憶領域を特定する、最新実データ特定及び異常実データ記憶領域特定処理の手順（以下、これを最新実データ特定及び異常実データ記憶領域特定処理手順とも呼ぶ）ＲＴ１２について、図１９及び図２０に示すフローチャートを用いて説明する。
【０２３０】
処理を開始すると制御部３は、まずＮ個の管理領域Ａｍ（１〜Ｎ）の先頭からその状態を確認していき、「ＩＮＩＴ」が先頭からどこまで続くかを調べる（ステップＳＰ１２１、ステップＳＰ１２２、ステップＳＰ１２５、ステップＳＰ１２６）。最後の管理領域Ａｍ（Ｎ）まで「ＩＮＩＴ」が続いている場合、すなわちＮ個の管理領域Ａｍ（１〜Ｎ）の状態が全て「ＩＮＩＴ」である場合、制御部３は、Ｎ個の実データ記憶領域Ａｄ（１〜Ｎ）に実データＤが一度も書き込まれたことがないと判断して（ステップＳＰ１２３）、この最新実データ特定及び異常実データ記憶領域特定処理手順ＲＴ１２を終了する（ステップＳＰ１２４）。この場合、管理領域Ａｍ（１〜Ｎ）の状態は、上述した（Ｉ）のパターンであり、最新の実データＤが記憶されている実データ記憶領域Ａｄ及び異常実データ記憶領域は存在しないとみなされる。
【０２３１】
これに対して、最後の管理領域Ａｍ（Ｎ）まで「ＩＮＩＴ」が続いていない場合、制御部３は、先頭から調べて最初に「ＩＮＩＴ」ではない状態が表れたら、その状態が「ＥＶＥＮ」または「ＯＤＤ」であるか否かを調べる（ステップＳＰ１２７）。ここで、先頭から調べて最初に「ＩＮＩＴ」ではない状態となる管理領域Ａｍを管理領域Ａｍ（ｉ）とする。ただしｉは１以上Ｎ以下。
【０２３２】
この管理領域Ａｍ（ｉ）の状態が「ＥＶＥＮ」でも「ＯＤＤ」でもない場合、制御部３は、このときの状態が発生し得る異常状態であると判断して、後述する第１の異常処理を行って（ステップＳＰ１２８）、終了ステップＳＰ１２９に移り、この最新実データ特定及び異常実データ記憶領域特定処理手順ＲＴ１２を終了する。
【０２３３】
これに対して、管理領域Ａｍ（ｉ）の状態が、「ＥＶＥＮ」または「ＯＤＤ」である場合（すなわち‘^Ｉ＊［ＥＯ］’）、制御部３は、この管理領域Ａｍ（ｉ）と同じ状態が管理領域Ａｍ（ｉ＋１）から最後の管理領域Ａｍ（Ｎ）まで続いているか否かを調べる（ステップＳＰ１３０〜ステップＳＰ１３３）。ちなみにこの時点で、管理領域Ａｍ（ｉ）の状態が「ＥＶＥＮ」または「ＯＤＤ」であることが確定する。管理領域Ａｍ（ｉ）と同じ状態が最後の管理領域Ａｍ（Ｎ）まで続いている場合（すなわち‘^Ｉ＊（Ｅ＋｜Ｏ＋）＄’）、制御部３は、最後の管理領域Ａｍ（Ｎ）に対応する実データ記憶領域Ａｄ（Ｎ）に最新の実データＤが記憶されていると認識する（ステップＳＰ１３６）。
【０２３４】
ここでｉ＜Ｎであれば、管理領域Ａｍ（１〜Ｎ）の状態が‘^Ｉ＊（ＥＥ＋｜ＯＯ＋）＄’（上述した（ａ）のパターンの一種）と、‘^ＥＥ＋＄’（上述した（ｂ）のパターンの一種）と、‘^ＯＯ＋＄’（上述した（ｃ）のパターンの一種）とを合わせた‘^Ｉ＊（ＥＥ＋｜ＯＯ＋）＄’であって、有効な実データＤが２つ以上存在することになり、この場合、制御部３は、実データＤの巻き戻しが可能であると認識して（ステップＳＰ１３７、ステップＳＰ１３８）、この最新実データ特定及び異常実データ記憶領域特定処理手順ＲＴ１２を終了する（ステップＳＰ１４０）。この場合、制御部３は、図示しないＲＡＭに対して、実データ記憶領域Ａｄ（Ｎ）に最新の実データＤが記憶されている旨と実データＤの巻き戻しが可能である旨とを示すデータ（以下、これを処理結果データとも呼ぶ）を一次記憶させるようになされている。
【０２３５】
これに対してｉ＝Ｎであれば、管理領域Ａｍ（１〜Ｎ）の状態が‘^Ｉ＋［ＥＯ］＄’（上述した（II）のパターンの一種）であって、有効な実データＤが１つしか存在しないことになり、この場合、制御部３は、実データＤの巻き戻しが不可能であると認識して（ステップＳＰ１３７、ステップＳＰ１３９）、この最新実データ特定及び異常実データ記憶領域特定処理手順ＲＴ１２を終了する（ステップＳＰ１４０）。この場合、制御部３は、図示しないＲＡＭに対して、実データ記憶領域Ａｄ（Ｎ）に最新の実データＤが記憶されている旨と実データＤの巻き戻しが不可能である旨とを示す処理結果データを一次記憶させるようになされている。
【０２３６】
一方で、最後の管理領域Ａｍ（Ｎ）まで管理領域Ａｍ（ｉ）と同じ状態が続いていない場合、制御部３は、管理領域Ａｍ（ｉ＋１）から調べて最初に管理領域Ａｍ（ｉ）とは異なる状態となる管理領域Ａｍを管理領域Ａｍ（ｊ）として（ただしｊはｉ＋１以上Ｎ以下）、この管理領域Ａｍ（ｊ）以降の管理領域Ａｍを調べる。すなわち制御部３は、まず管理領域Ａｍ（ｊ）から「ＩＮＩＴ」の状態が最後の管理領域Ａｍ（Ｎ）まで続いているか否かを調べる（ステップＳＰ１３４、ステップＳＰ１３５、ステップＳＰ１４１、ステップＳＰ１４２）。
【０２３７】
管理領域Ａｍ（ｊ）から最後の管理領域Ａｍ（Ｎ）まで「ＩＮＩＴ」の状態が続いている場合（すなわち‘^Ｉ＊（Ｅ＋｜Ｏ＋）Ｉ＋＄’）、制御部３は、管理領域Ａｍ（ｊ−１）に対応する実データ記憶領域Ａｄ（ｊ−１）に最新の実データＤが記憶されていると認識する（ステップＳＰ１３６）。
【０２３８】
ここで、有効な実データＤの個数（すなわちｊ−ｉ）が２以上であれば、管理領域Ａｍ（１〜Ｎ）の状態が‘^Ｉ＋（ＥＥ＋｜ＯＯ＋）Ｉ＋＄’（上述した（ａ）のパターンの一種）と、‘^ＥＥ＋Ｉ＋＄’（上述した（ｂ）のパターンの一種）と、‘^ＯＯ＋Ｉ＋＄’（上述した（ｃ）のパターンの一種）とを合わせた‘^Ｉ＊（ＥＥ＋｜ＯＯ＋）Ｉ＋＄’であり、この場合、制御部３は、実データＤの巻き戻しが可能であると認識して（ステップＳＰ１３７、ステップＳＰ１３８）、この最新実データ特定及び異常実データ記憶領域特定処理手順ＲＴ１２を終了する（ステップＳＰ１４０）。
【０２３９】
これに対して有効な実データＤの個数（ｊ−ｉ）が１であれば、管理領域Ａｍ（１〜Ｎ）の状態が‘^Ｉ＋［ＥＯ］Ｉ＋＄’（上述した（ＩＩ）のパターンの一種）か、‘^ＥＩ＋＄’（上述した（III）のパターン）と‘^ＯＩ＋＄’（上述した（IV）のパターン）とを合わせた‘^［ＥＯ］Ｉ＋＄’であり、この場合、制御部３は、実データＤの巻き戻しが不可能であると認識して（ステップＳＰ１３７、ステップＳＰ１３９）、この最新実データ特定及び異常実データ記憶領域特定処理手順ＲＴ１２を終了する（ステップＳＰ１４０）。
【０２４０】
一方、管理領域Ａｍ（ｊ）から最後の管理領域Ａｍ（Ｎ）まで「ＩＮＩＴ」の状態が続いていない場合、制御部３は、管理領域Ａｍ（ｊ）から調べて最初に「ＩＮＩＴ」ではない状態となる管理領域Ａｍを管理領域Ａｍ（ｋ）とする。ただしｋはｊ以上Ｎ以下。ここで、管理領域Ａｍ（ｉ）の状態が「ＥＶＥＮ」で且つ管理領域Ａｍ（ｋ）の状態が「ＯＤＤ」でも、管理領域Ａｍ（ｉ）の状態が「ＯＤＤ」で且つ管理領域Ａｍ（ｋ）の状態が「ＥＶＥＮ」でもなければ、制御部３は、このときの状態が発生し得る異常状態であると認識して（ステップＳＰ１４３、ステップＳＰ１４４、ステップＳＰ１５６）、後述する第２の異常処理を行って（ステップＳＰ１４５）、この最新実データ特定及び異常実データ記憶領域特定処理手順ＲＴ１２を終了する（ステップＳＰ１４６）。
【０２４１】
これに対して、管理領域Ａｍ（ｉ）の状態が「ＥＶＥＮ」で且つ管理領域Ａｍ（ｋ）の状態が「ＯＤＤ」、または管理領域Ａｍ（ｉ）の状態が「ＯＤＤ」で且つ管理領域Ａｍ（ｋ）の状態が「ＥＶＥＮ」であれば、制御部３は、管理領域Ａｍ（ｉ）のｉの値を調べる（ステップＳＰ１４３、ステップＳＰ１４４、ステップＳＰ１４７、ステップＳＰ１５６、ステップＳＰ１５７）。ちなみにこの時点で、管理領域Ａｍ（ｋ）の状態が「ＥＶＥＮ」または「ＯＤＤ」であることが確定する。
【０２４２】
ここでｉ＝１でなければ（すなわち‘^Ｉ＋（Ｅ＋Ｉ＊Ｏ｜Ｏ＋Ｉ＊Ｅ）’のように、先頭に「ＥＶＥＮ」または「ＯＤＤ」でなく「ＩＮＩＴ」がくるような場合）、制御部３は、このときの状態が発生し得ない異常状態であると判断して（ステップＳＰ１４８）、この最新実データ特定及び異常実データ記憶領域特定処理手順ＲＴ１２を終了する（ステップＳＰ１４９）。
【０２４３】
これに対してｉ＝１であれば、制御部３は、次に管理領域Ａｍ（ｋ）と同じ状態が管理領域Ａｍ（ｋ＋１）から最後の管理領域Ａｍ（Ｎ）まで続いているか否かを調べる（ステップＳＰ１５０〜ステップＳＰ１５３、ステップＳＰ１５８〜ステップＳＰ１６１）。
【０２４４】
管理領域Ａｍ（ｋ）と同じ状態が最後の管理領域Ａｍ（Ｎ）まで続いていれば、このときの管理領域Ａｍ（１〜Ｎ）の状態が‘^Ｅ＋Ｉ＊Ｏ＋＄’（上述した（ｂ）のパターンの一種）か、‘^Ｏ＋Ｉ＊Ｅ＋＄’（上述した（ｃ）のパターンの一種）であり、この場合、制御部３は、先頭から続く「ＥＶＥＮ」または「ＯＤＤ」の最後に位置する管理領域Ａｍ（ｊ−１）に対応する実データ記憶領域Ａｄ（ｊ−１）に最新の実データＤが記憶されていると認識すると共に、このとき少なくとも最後の管理領域Ａｍ（Ｎ）に対応する実データ記憶領域Ａｄ（Ｎ）に実データＤが記憶されているので、実データ記憶領域Ａｄ（１〜Ｎ）には少なくとも２つ以上の実データＤが記憶されていて実データＤの巻き戻しが可能であると認識し（ステップＳＰ１５４）、この最新実データ特定及び異常実データ記憶領域特定処理手順ＲＴ１２を終了する（ステップＳＰ１５５）。この場合、制御部３は、図示しないＲＡＭに対して、実データ記憶領域Ａｄ（ｊ−１）に最新の実データＤが記憶されている旨と実データＤの巻き戻しが可能である旨とを示す処理結果データを一次記憶させるようになされている。
【０２４５】
これに対して、管理領域Ａｍ（ｋ）と同じ状態が最後の管理領域Ａｍ（Ｎ）まで続いていなければ、制御部３は、このときの状態が発生し得ない異常状態（すなわち‘^Ｅ＋Ｉ＊Ｏ＋［^Ｏ］’または‘^Ｏ＋Ｉ＊Ｅ＋［^Ｅ］’）であると認識して（ステップＳＰ１４８）、この最新実データ特定及び異常実データ記憶領域特定処理手順ＲＴ１２を終了する（ステップＳＰ１４９）。
【０２４６】
つづいて、最新実データ特定及び異常実データ記憶領域特定処理手順ＲＴ１２のステップＳＰ１２８で行う第１の異常処理の手順（以下、これを第１の異常処理手順とも呼ぶ）、及びステップＳＰ１４５で行う第２の異常処理の手順（以下、これを第２の異常処理手順とも呼ぶ）についてその詳細を説明する。
【０２４７】
まず図２１に示すフローチャートを用いて第１の異常処理手順ＲＴ１３について説明する。ここでは前提として、管理領域Ａｍ（ｉ）の状態が「ＩＮＩＴ」でも「ＥＶＥＮ」でも「ＯＤＤ」でもなく（上述のステップＳＰ１２５、ステップＳＰ１２７で判定）、さらに管理領域Ａｍ（ｉ）より前の管理領域Ａｍの状態の全てが「ＩＮＩＴ」であるものとする（上述のステップＳＰ１２１、ステップＳＰ１２２、ステップＳＰ１２５、ステップＳＰ１２６で判定）。この状態を拡張正規表現で表すと、‘^Ｉ＊［^ＥＯＩ］’となり、この状態は、少なくとも管理領域Ａｍ（ｉ）の状態が異常であることにより、これに対応する実データ記憶領域Ａｄ（ｉ）が異常実データ記憶領域であることを示している。
【０２４８】
その上で処理を開始すると、制御部３は、まず管理領域Ａｍ（ｉ）が先頭であるか否か、すなわちｉ＝１であるか否かを調べる（ステップＳＰ１７１）。ここでｉ＝１でなければ（すなわち‘^Ｉ＋［^ＥＯＩ］’）、制御部３は、このときの状態が発生し得ない異常状態であると認識して（ステップＳＰ１８３）、この第１の異常処理手順ＲＴ１３を終了する（ステップＳＰ１８４）。
【０２４９】
これに対してｉ＝１であれば（すなわち‘^［^ＥＯＩ］’）、制御部３は、次に管理領域Ａｍ（２）以降の管理領域Ａｍを調べる（ステップＳＰ１７２、ステップＳＰ１７３、ステップＳＰ１７６、ステップＳＰ１７７）。管理領域Ａｍ（２）以降の状態が最後の管理領域Ａｍ（Ｎ）まで全て「ＩＮＩＴ」であれば（すなわち上述した（ｈ）のパターン‘^［^ＥＯＩ］Ｉ＋＄’）、このとき制御部３は、実データＤの初めての書き込みに失敗したことにより復帰不可能であり、実データ記憶領域Ａｄに実データＤが全く存在していないとみなして（ステップＳＰ１７４）、終了ステップＳＰ１７５に移り、この第１の異常処理手順ＲＴ１３を終了する。
【０２５０】
一方、管理領域Ａｍ（２）から最後の管理領域Ａｍ（Ｎ）まで「ＩＮＩＴ」が続いていない場合、制御部３は、管理領域Ａｍ（２）から調べて最初に「ＩＮＩＴ」ではない状態が表れたら、その状態が「ＥＶＥＮ」または「ＯＤＤ」であるか否かを調べる（ステップＳＰ１７８）。ここで、管理領域Ａｍ（２）から調べて最初に「ＩＮＩＴ」ではない状態となる管理領域Ａｍを管理領域Ａｍ（ｊ）とする。ただしｊは２以上Ｎ以下。
【０２５１】
この管理領域Ａｍ（ｊ）の状態が「ＥＶＥＮ」でも「ＯＤＤ」でもない場合（すなわち‘^［^ＥＯＩ］Ｉ＊［^ＥＯＩ］’）、制御部３は、このときの状態が発生し得ない異常状態であると認識して（ステップＳＰ１８３）この第１の異常処理手順ＲＴ１３を終了する（ステップＳＰ１８４）。
【０２５２】
これに対して管理領域Ａｍ（ｊ）の状態が「ＥＶＥＮ」または「ＯＤＤ」である場合、制御部３は、管理領域Ａｍ（ｊ）以降、この管理領域Ａｍ（ｊ）と同じ状態が管理領域Ａｍ（ｊ＋１）から最後の管理領域Ａｍ（Ｎ）まで続いているか否かを調べる（ステップＳＰ１７９〜ステップＳＰ１８２）。
【０２５３】
管理領域Ａｍ（ｊ）と同じ状態が最後の管理領域Ａｍ（Ｎ）まで続いていない場合（すなわち‘^［^ＥＯＩ］Ｉ＊（Ｅ＋［^Ｅ］｜Ｏ＋［^Ｏ］）’）、制御部３は、このときの状態が発生し得ない異常状態であると認識して（ステップＳＰ１８３）、この第１の異常処理手順ＲＴ１３を終了する（ステップＳＰ１８４）。
【０２５４】
これに対して管理領域Ａｍ（ｊ）と同じ状態が最後の管理領域Ａｍ（Ｎ）まで続いている場合（すなわち上述した（ｇ）のパターン‘^［^ＥＯＩ］Ｉ＊（Ｅ＋｜Ｏ＋）＄’）、制御部３は、先頭の管理領域Ａｍ（１）が異常であることにより、これに対応する先頭の実データ記憶領域Ａｄ（１）が異常実データ記憶領域であると認識する（ステップＳＰ１８５）。
【０２５５】
ここでｊ＜Ｎであれば、少なくとも最後の管理領域Ａｍ（Ｎ）とその１つ前の管理領域Ａｍ（Ｎ−１）とで「ＥＶＥＮ」または「ＯＤＤ」の状態が連続していることにより有効な実データＤが２つ以上存在することになり、この場合、制御部３は、復帰処理後に実データＤの巻き戻しが可能であると認識して（ステップＳＰ１８６、ステップＳＰ１８７）、この第１の異常処理手順ＲＴ１３を終了する（ステップＳＰ１８９）。この場合、制御部３は、図示しないＲＡＭに対して、実データ記憶領域Ａｄ（１）が異常実データ記憶領域である旨と復帰後に実データＤの巻き戻しが可能である旨とを示す処理結果データを一次記憶させるようになされている。
【０２５６】
これに対してｊ＝Ｎであれば、最後の管理領域Ａｍ（Ｎ）に対応する最後の実データ記憶領域Ａｄ（Ｎ）にのみ実データＤが存在することになり、この場合、制御部３は、復帰処理後に実データＤの巻き戻しが不可能であると認識して（ステップＳＰ１８６、ステップＳＰ１８８）、この第１の異常処理手順ＲＴ１３を終了する（ステップＳＰ１８９）。この場合、制御部３は、図示しないＲＡＭに対して、実データ記憶領域Ａｄ（１）が異常実データ記憶領域である旨と復帰後に実データＤの巻き戻しが不可能である旨とを示す処理結果データを一次記憶させるようになされている。
【０２５７】
つづいて図２２に示すフローチャートを用いて第２の異常処理手順ＲＴ１４について説明する。ここでは前提として、先頭の管理領域Ａｍから途中の管理領域Ａｍまでの状態が、‘^Ｉ＊Ｅ＋（Ｉ＋［^ＯＩ］｜［^ＥＯＩ］）’または‘^Ｉ＊Ｏ＋（Ｉ＋［^ＥＩ］｜［^ＥＯＩ］）’であり、さらに先頭から見て最初に「ＥＶＥＮ」や「ＯＤＤ」の表れる位置が管理領域Ａｍ（ｉ）の位置（上述のステップＳＰ１２７で判定）であり、さらにこの「ＥＶＥＮ」や「ＯＤＤ」の途切れる位置が管理領域Ａｍ（ｊ）の位置（上述のステップＳＰ１３２で判定）であるものとする。
【０２５８】
その上で処理を開始すると、制御部３は、まず管理領域Ａｍ（ｊ）の次の管理領域Ａｍ（ｊ＋１）から「ＩＮＩＴ」の状態が最後の管理領域Ａｍ（Ｎ）まで続いているか否かを調べる（ステップＳＰ１９１、ステップＳＰ１９２、ステップＳＰ１９８、ステップＳＰ１９９）。
【０２５９】
管理領域Ａｍ（ｊ＋１）から最後の管理領域Ａｍ（Ｎ）まで「ＩＮＩＴ」の状態が続いている場合、管理領域Ａｍ（１〜Ｎ）の状態が、‘^Ｉ＊（Ｅ＋｜Ｏ＋）［^ＥＯＩ］）Ｉ＊＄’（すなわち上述した（ｄ）を完全に含み、且つ上述した（ｅ）から‘^Ｅ＋［^ＥＯＩ］Ｉ＊Ｏ＋＄’を除いたものと、上述した（ｆ）から‘^Ｏ＋［^ＥＯＩ］Ｉ＊Ｅ＋＄’を除いたものとを含んだパターン）であり、この場合、制御部３は、管理領域Ａｍ（ｊ）の状態が発生し得る異常状態であることにより、これに対応する実データ記憶領域Ａｄ（ｊ）が異常実データ記憶領域であると認識する（ステップＳＰ１９３）。
【０２６０】
ここで管理領域Ａｍ（ｉ）から続く「ＥＶＥＮ」または「ＯＤＤ」の長さ（すなわちｊ−ｉ）が２以上であれば、有効な実データＤが２つ以上存在することになり、この場合、制御部３は、復帰処理後に実データＤの巻き戻しが可能であると認識して（ステップＳＰ１９４、ステップＳＰ１９５）、この第２の異常処理手順ＲＴ１４を終了する（ステップＳＰ１９７）。この場合、制御部３は、図示しないＲＡＭに対して、実データ記憶領域Ａｄ（ｊ）が異常実データ記憶領域である旨と復帰後に実データＤの巻き戻しが可能である旨とを示す処理結果データを一次記憶させるようになされている。
【０２６１】
これに対して管理領域Ａｍ（ｉ）から続く「ＥＶＥＮ」または「ＯＤＤ」の長さが１であれば（すなわち「ＥＶＥＮ」または「ＯＤＤ」が１つだけ）、有効な実データＤが１つしか存在しないことになり、この場合、制御部３は、復帰処理後に実データＤの巻き戻しが不可能であると認識して（ステップＳＰ１９４、ステップＳＰ１９６）、この第２の異常処理手順ＲＴ１４を終了する（ステップＳＰ１９７）。この場合、制御部３は、図示しないＲＡＭに対して、実データ記憶領域Ａｄ（ｊ）が異常実データ記憶領域である旨と復帰後に実データＤの巻き戻しが不可能である旨とを示す処理結果データを一次記憶させるようになされている。
【０２６２】
一方で、管理領域Ａｍ（ｊ＋１）から最後の管理領域Ａｍ（Ｎ）まで「ＩＮＩＴ」の状態が続いていない場合、制御部３は、次に管理領域Ａｍ（ｉ）のｉの値を調べる（ステップＳＰ２００）。ここでｉ＝１でなければ（すなわち‘^Ｉ＋Ｅ＋（Ｉ＋［^ＯＩ］｜［^ＥＯＩ］）Ｉ＊［^Ｉ］）’または‘^Ｉ＋Ｏ＋（Ｉ＋［^ＥＩ］｜［^ＥＯＩ］Ｉ＊［^Ｉ］）’）、制御部３は、このときの状態が発生し得ない異常な状態であると認識して（ステップＳＰ２０７）、この第２の異常処理手順ＲＴ１４を終了する（ステップＳＰ２０９）。
【０２６３】
これに対してｉ＝１であれば、制御部３は、管理領域Ａｍ（ｊ＋１）から調べて最初に「ＩＮＩＴ」ではない状態となる管理領域Ａｍを管理領域Ａｍ（ｋ）として（ただしｋはｊ＋１以上Ｎ以下）、管理領域Ａｍ（１）の状態が「ＥＶＥＮ」で且つ管理領域Ａｍ（ｋ）の状態が「ＯＤＤ」でも、管理領域Ａｍ（１）の状態が「ＯＤＤ」で且つ管理領域Ａｍ（ｋ）の状態が「ＥＶＥＮ」でもなければ（すなわち‘^Ｅ＋［^ＥＯＩ］？Ｉ＊［^ＯＩ］）’または‘^Ｏ＋［^ＥＯＩ］？Ｉ＊［^ＥＩ］）’）、このときの状態が発生し得ない異常状態であると認識して（ステップＳＰ２０１、ステップＳＰ２０２、ステップＳＰ２１０、ステップＳＰ２０７）、この第２の異常処理手順ＲＴ１４を終了する（ステップＳＰ２０９）。
【０２６４】
これに対して管理領域Ａｍ（１）の状態が「ＥＶＥＮ」で且つ管理領域Ａｍ（ｋ）の状態が「ＯＤＤ」、または管理領域Ａｍ（１）の状態が「ＯＤＤ」で且つ管理領域Ａｍ（ｋ）の状態が「ＥＶＥＮ」であれば、制御部３は、管理領域Ａｍ（ｋ）の次の管理領域Ａｍ（ｋ＋１）以降の状態を調べ（ステップＳＰ２０３〜ステップＳＰ２０６、ステップＳＰ２１１〜ステップＳＰ２１４）、管理領域Ａｍ（ｋ）と同じ状態が最後の管理領域Ａｍ（Ｎ）まで続いていなければ（すなわち‘^Ｅ＋［^ＥＯＩ］Ｉ＊Ｏ＋［^Ｏ］’または‘^Ｏ＋［^ＥＯＩ］Ｉ＊Ｅ＋［^Ｅ］’）、このときの状態が発生し得ない異常状態であると認識して（ステップＳＰ２０７）、この第２の異常処理手順ＲＴ１４を終了する（ステップＳＰ２０９）。
【０２６５】
これに対して管理領域Ａｍ（ｋ）と同じ状態が最後の管理領域Ａｍ（Ｎ）まで続いていれば、管理領域Ａｍ（１〜Ｎ）の状態が、‘^Ｅ＋［^ＥＯＩ］Ｉ＊Ｏ＋＄’または‘^Ｏ＋［^ＥＯＩ］Ｉ＊Ｅ＋＄’（すなわち前段で（ｅ）から除いたものと、（ｆ）から除いたもの）であり、この場合、制御部３は、管理領域Ａｍ（ｊ）の状態が発生し得る異常状態であることにより、これに対応する実データ記憶領域Ａｄ（ｊ）が異常実データ記憶領域であると認識すると共に、このとき、少なくとも先頭の管理領域Ａｍ（１）及び最後の管理領域Ａｍ（Ｎ）に対応する実データ記憶領域Ａｄ（１）と実データ記憶領域Ａｄ（Ｎ）とに実データＤが記憶されているので、実データＤの巻き戻しが可能であると認識して（ステップＳＰ２０８）、この第２の異常処理手順ＲＴ１４を終了する（ステップＳＰ２０９）。この場合、制御部３は、図示しないＲＡＭに対して、実データ記憶領域Ａｄ（ｊ）が異常実データ記憶領域である旨と復帰後に実データＤの巻き戻しが可能である旨とを示す処理結果データを一次記憶させるようになされている。
【０２６６】
このような最新実データ特定及び異常実データ記憶領域特定処理手順ＲＴ１２（第１の異常処理手順ＲＴ１３及び第２の異常処理手順ＲＴ１４を含む）にしたがって、制御部３は、異常実データ記憶領域が存在するのであれば、その位置を特定すると共に、復帰後に巻き戻しが可能かどうかを判定し、異常実データ記憶領域が存在しないのであれば、最新の実データＤが記憶されている実データ記憶領域Ａｄの位置を特定すると共に、巻き戻しが可能かどうかを判定して、このような処理結果を示す処理結果データを、ＲＡＭに一次記憶させるようになされている。
【０２６７】
つまり、制御部３は、このＲＡＭに一次記憶させた処理結果データに基づいて、上述した前世代データ有効化処理及び復帰処理、そして後述する前世代実データ読出処理の開始前に、それぞれの前提を確認するようになされている。
【０２６８】
（２−４）第２の実施の形態による前世代実データ読出処理
つづいて図２３に示すフローチャートを用いて、以前に書き込んだ実データＤを実データ記憶領域Ａｄから読み出す前世代実データ読出処理の手順（以下、これを前世代実データ読出処理手順とも呼ぶ）ＲＴ１５を説明する。ちなみに、ここでは、過去世代（前世代（１つ前）、前々世代（２つ前）、…）のうちの前世代の実データＤを読み出すので、上述の第１の実施の形態のような過去世代実データ読出処理ではなく、前世代実データ読出処理とした。
【０２６９】
またここでは前提として、制御部３が、この前世代実データ読出処理手順ＲＴ１５の開始前に、上述した最新実データ特定及び異常実データ記憶領域特定処理を実行することによりＲＡＭに一次記憶された処理結果データに基づいて、Ｎ個の実データ記憶領域Ａｄ（１〜Ｎ）に異常実データ記憶領域が存在しない（すなわちＮ個の実データ記憶領域Ａｄ（１〜Ｎ）に記憶されている実データＤに異常がない）と判断していて、さらにＮ個の実データ記憶領域Ａｄ（１〜Ｎ）のうちのどの実データ記憶領域Ａｄに最新の実データＤが記憶されているのかを認識していると共に実データＤの巻き戻しが可能であると認識しているものとする。
【０２７０】
その上で処理を開始すると、制御部３は、まず最新の実データＤが先頭の実データ記憶領域Ａｄ（１）に記憶されているか否かを調べる（ステップＳＰ２２１、ステップＳＰ２２２）。最新の実データＤが先頭の実データ記憶領域Ａｄ（１）に記憶されているのであれば、最後の実データ記憶領域Ａｄ（Ｎ）に前世代の実データＤが記憶されていることになるので、制御部３は、実データ記憶領域Ａｄ（Ｎ）に記憶されている実データＤを前世代の実データＤとして読み出し（ステップＳＰ２２４）、この前世代実データ読出処理手順ＲＴ１５を終了する（ステップＳＰ２２５）。
【０２７１】
これに対して、最新の実データＤが先頭の実データ記憶領域Ａｄ（１）以外の実データ記憶領域Ａｄに記憶されているのであれば、最新の実データＤが記憶されている実データ記憶領域Ａｄの１つ前の実データ記憶領域Ａｄに前世代の実データＤが記憶されていることになるので、制御部３は、最新の実データＤが記憶されている実データ記憶領域Ａｄの１つ前の実データ記憶領域Ａｄに記憶されている実データＤを前世代の実データＤとして読み出し（ステップＳＰ２２３）、この前世代実データ読出処理手順ＲＴ１５を終了する（ステップＳＰ２２５）。
【０２７２】
このような前世代実データ読出処理手順ＲＴ１５にしたがって、制御部３は、前世代の実データＤを読み出すようになされている。
【０２７３】
（２−５）第２の実施の形態での動作及び効果
以上の構成において記憶装置１の制御部３は、実データＤの巻き戻しを行う際に、最新の実データＤが記憶されている実データ記憶領域Ａｄに対応する管理領域Ａｍの状態を、実データＤが書き込まれていないことを意味する初期状態「ＩＮＩＴ」に設定変更するようにした。
【０２７４】
つまり制御部３は、実データＤの巻き戻しを行う際に、最新の実データＤが記憶されている実データ記憶領域Ａｄに対応する管理領域Ａｍを、実データＤが書き込まれていない領域とみなす初期状態に変更する。この結果、初期状態に変更された管理領域Ａｍに対応する実データ記憶領域Ａｄに記憶されている実データＤは、制御部３から見て、読み出しも巻き戻しもできない無効な実データＤとなる。
【０２７５】
したがって制御部３は、例えば実データＤの巻き戻しがＮ回以上繰り返し行われて、既に無効にした実データＤにまで巻き戻してしまうことを確実に防止することができる。すなわち制御部３は、管理領域Ａｍ（１〜Ｎ）の状態に基づいて、巻き戻しの繰り返し回数を最大でＮ−１回に制限することができる。
【０２７６】
また、このように管理領域Ａｍ（１〜Ｎ）の状態だけで、巻き戻しの繰り返し回数を制限することができるので、例えば、現在何回巻き戻したのかなどを示すデータをメモリ部２の未使用領域や他のＥＥＰＲＯＭなどに別途記憶させて管理する必要がなく、メモリ部２を有効に利用することができる。
【０２７７】
さらに制御部３は、異常実データ記憶領域を検出した場合の復帰処理を行う際にも、この異常実データ記憶領域に対応する管理領域Ａｍの状態を初期状態「ＩＮＩＴ」に設定変更するようにした。この結果、初期状態に変更された管理領域Ａｍに対応する異常実データ記憶領域に記憶されている異常な実データＤは、制御部３から見て、読み出しも巻き戻しもできない無効な実データＤとなる。
【０２７８】
したがって制御部３は、復帰処理後に、例えば実データＤの巻き戻しがＮ−１回以上繰り返し行われて、既に無効にした異常な実データＤにまで巻き戻してしまうことを確実に防止することができる。
【０２７９】
以上の構成によれば、制御部３は、実データＤの巻き戻しを行う際に、最新の実データＤが記憶されている実データ記憶領域Ａｄに対応する管理領域Ａｍの状態を初期状態に変更するようにしたことにより、初期状態に変更されたこの管理領域Ａｍに対応する実データ記憶領域Ａｄに記憶されている最新の実データＤを、読み出しも巻き戻しもできない無効な実データＤにすることができるので、その後、巻き戻しが繰り返し行われて、再びこの最新の実データＤが有効になってしまうことを確実に防止することができる。
【０２８０】
また制御部３は、復帰処理を行う際に、異常実データ記憶領域に対応する管理領域Ａｍの状態を初期状態に変更するようにしたことにより、初期状態に変更されたこの管理領域Ａｍに対応する異常実データ記憶領域に記憶されている異常な実データＤを、読み出しも巻き戻しもできない無効な実データＤにすることができるので、復帰処理後、巻き戻しが繰り返し行われて、再びこの異常な実データＤが有効になってしまうことを確実に防止することができる。
【０２８１】
（３）他の実施の形態
上述の第１及び第２の実施の形態においては、メモリ部２としてＥＥＰＲＯＭを適用する場合について述べたが、本発明はこれに限らず、上述したメモリ部２と同等の構成を採ることができれば、フラッシュメモリ等のこの他種々のメモリを適用することができる。
【０２８２】
また上述の第１及び第２の実施の形態においては、メモリ部２に対して記憶させる実データＤとして、例えば、音楽や映像等のコンテンツデータを利用し得る権利があるか否かを示した権利データを想定したが、本発明はこれに限らず、メモリ部２に対して記憶保持させておく目的のものであれば、この他種々のデータを適用することができる。
【０２８３】
また上述の第１及び第２の実施の形態においては、上述した実データ書込処理や実データ読出処理やその他各種処理（ＲＴ１〜ＲＴ１５）等を、制御部３がハードウェア的に実行する場合について述べたが、本発明はこれに限らず、上述した実データ書込処理や実データ読出処理やその他各種処理（ＲＴ１〜ＲＴ１５）等を実行するためのプログラムを予めインストールしておくことにより、制御部３がこれらをソフトウェア的に実行するようにしても良い。
【産業上の利用可能性】
【０２８４】
本発明は、例えば、メモリ部に対してデータを記憶させるようになされた記憶装置等に利用することができる。
【図面の簡単な説明】
【０２８５】
【図１】第１の実施の形態における記憶装置の構成を示す略線図である。
【図２】メモリ部の記憶領域構成を示す略線図である。
【図３】管理領域の構成を示す略線図である。
【図４】管理領域の記憶パターンを示す略線図である。
【図５】実データ書込処理（書込１巡目）の遷移を示す略線図である。
【図６】実データ書込処理（書込１巡目）の遷移を示す略線図である。
【図７】実データ書込処理（書込２ｎ巡目）の遷移を示す略線図である。
【図８】実データ書込処理（書込２ｎ巡目）の遷移を示す略線図である。
【図９】実データ書込処理（書込２ｎ+１巡目）の遷移を示す略線図である。
【図１０】実データ書込処理（書込２ｎ+１巡目）の遷移を示す略線図である。
【図１１】第１の実施の形態における最新実データ特定処理手順を示すフローチャートである。
【図１２】第１の実施の形態における過去世代実データ読出処理手順を示すフローチャートである。
【図１３】第１の実施の形態における前世代実データ有効化処理手順を示すフローチャートである。
【図１４】第１の実施の形態における異常実データ記憶領域特定処理手順を示すフローチャートである。
【図１５】第１の実施の形態における復帰処理手順を示すフローチャートである。
【図１６】アクセス効率の悪い管理領域の配置例を示す略線図である。
【図１７】第２の実施の形態における前世代実データ有効化処理手順を示すフローチャートである。
【図１８】第２の実施の形態における復帰処理手順を示すフローチャートである。
【図１９】第２の実施の形態における最新実データ特定及び異常実データ記憶領域特定処理手順を示すフローチャートである。
【図２０】図１９の最新実データ特定及び異常実データ記憶領域特定処理手順を示すフローチャートに続くフローチャートである。
【図２１】第２の実施の形態における第１の異常処理手順を示すフローチャートである。
【図２２】第２の実施の形態における第２の異常処理手順を示すフローチャートである。
【図２３】第２の実施の形態における前世代実データ読出処理手順を示すフローチャートである。
【図２４】メモリ部における記憶領域構成の一例を示す略線図である。
【図２５】実データ書込処理手順の一例を示すフローチャートである。
【図２６】実データ書込処理手順の一例を示すフローチャートである。
【図２７】前世代実データ読出処理手順の一例を示すフローチャートである。
【図２８】メモリ部における記憶領域構成の一例を示す略線図である。
【図２９】実データ書込処理手順の一例を示すフローチャートである。
【図３０】データ更新制限回数超過検出処理手順の一例を示すフローチャートである。
【図３１】メモリ部における記憶領域構成の一例を示す略線図である。
【図３２】実データ書込処理手順の一例を示すフローチャートである。
【図３３】メモリ部における記憶領域構成の一例を示す略線図である。
【図３４】実データ書込処理手順の一例を示すフローチャートである。
【図３５】正しく実データが書き込まれなかった旨を認識する際の認識処理手順の一例を示すフローチャートである。
【符号の説明】
【０２８６】
１……記憶装置、２……メモリ部、３……制御部、Ａｍ……管理領域、Ａｄ……実データ記憶領域、Ａｓ……最小更新領域。
【図１】
2006268817.tif 000003
【図２】
2006268817.tif 000004
【図３】
2006268817.tif 000005
【図４】
2006268817.tif 000006
【図５】
2006268817.tif 000007
【図６】
2006268817.tif 000008
【図７】
2006268817.tif 000009
【図８】
2006268817.tif 000010
【図９】
2006268817.tif 000011
【図１０】
2006268817.tif 000012
【図１１】
2006268817.tif 000013
【図１２】
2006268817.tif 000014
【図１３】
2006268817.tif 000015
【図１４】
2006268817.tif 000016
【図１５】
2006268817.tif 000017
【図１６】
2006268817.tif 000018
【図１７】
2006268817.tif 000019
【図１８】
2006268817.tif 000020
【図１９】
2006268817.tif 000021
【図２０】
2006268817.tif 000022
【図２１】
2006268817.tif 000023
【図２２】
2006268817.tif 000024
【図２３】
2006268817.tif 000025
【図２４】
2006268817.tif 000026
【図２５】
2006268817.tif 000027
【図２６】
2006268817.tif 000028
【図２７】
2006268817.tif 000029
【図２８】
2006268817.tif 000030
【図２９】
2006268817.tif 000031
【図３０】
2006268817.tif 000032
【図３１】
2006268817.tif 000033
【図３２】
2006268817.tif 000034
【図３３】
2006268817.tif 000035
【図３４】
2006268817.tif 000036
【図３５】
2006268817.tif 000037