(57)【特許請求の範囲】
【請求項１】
ブロック（４０）単位でデータの消去が行われる前記ブロックを３個以上備える書換え可能な不揮発性の記憶装置（３０）と、
前記記憶装置からのデータの読出しと前記記憶装置へのデータの書込みとを実行する制御手段（１０、１６、Ｓ４００〜Ｓ４０８、Ｓ４２０）と、
を備え、
３個以上の前記ブロックは、予め論理的に環状に一方向に結合されており、
各ブロックは、環状に一方向に結合された前記ブロックの結合方向において各ブロックの次の前記ブロックにおける書込み状態を表わす管理情報が書込まれる管理部（４６）と、書込み要求で受け付ける書込み要求データが書込まれるデータ部（４４）とを有し、
前記制御手段（Ｓ４００〜Ｓ４０８）は、前記ブロックに前記書込み要求データを書込むときの予め設定された特定のデータ書込み順序である特定順序と前記結合方向とにしたがって、前記ブロックに前記書込み要求データを書込む、
ことを特徴とするデータ管理装置。
【請求項２】
請求項１に記載のデータ管理装置であって、
前記制御手段は、前記管理情報として、前記書込み要求データが正常に書込まれたことを示す書込み済みと、前記書込み要求データを書込み中であることを示す書込み中と、次に前記書込み要求データを書込む対象であり、まだ前記書込み要求データが書込まれていないことを示す未書込みとのうちいずれかを設定する、
ことを特徴とするデータ管理装置。
【請求項３】
請求項１または２に記載のデータ管理装置であって、
前記制御手段（Ｓ４０４〜Ｓ４０８）は、前記書込み要求で要求される前記書込み要求データの書込みの要求順序が前記特定順序ではない場合、前記特定順序となるように前記要求順序の前記書込み要求データの間にデータを補完して前記ブロックに前記書込み要求データを書込む、
ことを特徴とするデータ管理装置。
【請求項４】
請求項２を引用する請求項３に記載のデータ管理装置であって、
前記制御手段は、前記ブロックに書込まれている前記管理情報と前記書込み要求データのデータ種類とに基づいて前記特定順序になるように次に書込むべき前記データ種類を決定し、次に書込むべき前記データ種類と前記書込み要求で書込みが要求される前記書込み要求データの前記データ種類とが一致する場合、前記未書込みが示す前記ブロックに前記書込み要求データを書込み、次に書込むべき前記データ種類と前記書込み要求で書込みが要求される前記書込み要求データの前記データ種類とが一致しない場合、次に書込むべき前記データ種類と同じ前記書込み要求データを前記ブロックから補完データとして読出して前記未書込みが示す前記ブロックに前記補完データを書込んでから、前記補完データが書込まれた次の前記ブロックに前記書込み要求データを書込む、
ことを特徴とするデータ管理装置。
【請求項５】
請求項１または２に記載のデータ管理装置であって、
前記書込み要求で要求される前記書込み要求データの書込みの要求順序が前記特定順序ではない場合、前記制御手段は、前記要求順序の前記書込み要求データを前記特定順序に並べ替えてから前記ブロックに書込む、
ことを特徴とするデータ管理装置。
【請求項６】
請求項１から５のいずれか一項に記載のデータ管理装置であって、
前記制御手段は環状に一方向に結合されている２個の前記ブロックに連続して前記書込み要求データを書込む、
ことを特徴とするデータ管理装置。
【請求項７】
請求項１から６のいずれか一項に記載の手段としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブロック単位でデータの消去が行われるブロックを３個以上備える書換え可能な不揮発性の記憶装置にデータを書込む技術に関する。
【背景技術】
【０００２】
通信機器、情報処理機器等の様々な分野の電子機器において、書換え可能な不揮発性の記憶装置が用いられている。このような書換え可能な不揮発性の記憶装置にデータを書込む場合、データの書込み途中で電源が切断されると、データが消失する。
【０００３】
そこで、特許文献１に開示されている技術では、書込み対象のデータエリアにデータを書込む前に書込み対象のデータエリアのデータを所定エリアにバックアップし、書込み対象のデータエリアの書込み状態を表わすフラグを「書込み中」に設定してから書込み対象のデータエリアにデータを書込んでいる。データの書込みが終了するとフラグはクリアされ、「書込み済み」であることを表わす。
【０００４】
書込み対象のデータエリアにデータを書込んでいる途中で電源が切断されると、書込み対象のデータエリアの書込み状態を表わすフラグは「書込み中」を示しているので、所定エリアにバックアップされているデータを使用して書込み対象のデータエリアのデータを復旧する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−３２８４３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
書換え可能な不揮発性の記憶装置として、フラッシュメモリのようにブロック単位でデータを消去してからデータを書込む記憶装置に特許文献１の技術を適用することが考えられる。この場合、データを書込むブロックとは別に書込み状態を表わすフラグのために１ブロックを使用することはせず、データと同じブロックにフラグを設定することが考えられる。
【０００７】
しかし、データの書込み処理においてブロックのデータを消去中に電源が切断されると、フラグの値が不定になる。フラグの値が不定になると、書込み対象のブロックの書込み状態を正しく判定できない。
【０００８】
そのため、書込み対象のブロックに正常に新しいデータが書込まれていないにも関わらず、所定エリアにバックアップしている元のデータを使用してデータを復旧できないことがある。
【０００９】
本発明は、上記課題を解決するためになされたものであり、ブロック単位でデータの消去が行われる記憶装置において、ブロックのデータを消去中に電源が切断されてもデータを復旧する技術を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明のデータ管理装置は、ブロック単位でデータの消去が行われるブロックを３個以上備える書換え可能な不揮発性の記憶装置と、記憶装置からのデータの読出しと記憶装置へのデータの書込みとを実行する制御手段と、を備えている。
【００１１】
３個以上のブロックは、予め論理的に環状に一方向に結合されている。記憶装置の各ブロックは、環状に一方向に結合されたブロックの結合方向において各ブロックの次のブロックにおける書込み状態を表わす管理情報が書込まれる管理部と、書込み要求で受け付ける書込み要求データが書込まれるデータ部とを有している。
【００１２】
制御手段は、ブロックに書込み要求データを書込むときの予め設定された特定のデータ書込み順序である特定順序とブロックの結合方向とにしたがって、ブロックに書込み要求データを書込む。
【００１３】
この構成によれば、書込み対象のブロックのデータを消去している途中で電源が切断されても、書込み対象のブロックの書込み状態が書込み中であることは、ブロックの結合方向において書込み対象のブロックの１個前のブロックに管理情報として残っている。したがって、書込み対象のブロックの１個前のブロックに残っている管理情報により、書込み対象のブロックが書込み中であることを正しく判断できる。
【００１４】
本発明の構成に対し、データと同じブロックに、このブロックの書込み状態を表わす管理情報を書込む構成の場合、書込み対象のブロックにデータを書込むために書込み対象のブロックのデータを消去している途中で電源が切断されると、書込み対象のブロックの書込み状態を表わす管理情報は不定になる。例えば、書込み対象のブロックの管理情報が、正常にデータが書込まれたことを表わす「書込み済み」になると、書込み途中のブロックにデータを正常に書き込めたと誤判定してしまうことがある。
【００１５】
書込み対象以外の他のブロックのデータは正常に書込まれているので、他のブロックの管理情報は「書込み済み」になっている。この場合、書込み対象のブロックを含むすべてのブロックの管理情報が「書込み済み」になるので、書込み対象のブロックのデータを消去している途中で電源が切断されたことが管理情報として残らない。その結果、書込み対象のブロックのデータは消去途中のままになり、復旧できない。
【００１６】
これに対し、本発明では、前述したように、書込み対象のブロックのデータを消去している途中で電源が切断されても、書込み対象のブロックの書込み状態が書込み中であることは、結合方向において書込み対象のブロックの１個前のブロックに管理情報として残っている。
【００１７】
さらに、本発明では、３個以上のブロックが環状に一方向に結合されているので、結合方向において、書込み対象のブロックの前に少なくとも２個以上のブロックが存在する。書込み対象のブロックの２個前のブロックの管理情報は、書込み対象のブロックの１個前のブロックにデータが正常に書込まれたことを表わしており、例えば「書込み済み」になっている。
【００１８】
すなわち、書込み対象のブロックのデータを消去している途中で電源が切断された状態では、書込み対象のブロックの前の２個のブロックの管理情報は、結合方向において、「書込み済み」、「書込み中」になっている。この２個の管理情報はそれぞれ、結合方向において次のブロックの書込み状態を正しく表わしている。つまり、結合方向において、「書込み済み」、「書込み中」になっている管理情報が正しい順序である。
【００１９】
これに対し、データを消去している途中で電源が切断されたために書込み対象のブロックの管理情報が不定になり、例えば「書込み中」または「書込み済み」になると、書込み対象のブロックの１個前のブロックと書込み対象のブロックの管理情報は、結合方向において、「書込み中」、「書込み中」、あるいは「書込み中」、「書込み済み」の順序になる。この管理情報の順序の場合、後ろの管理情報は正しくないと判断できる。
【００２０】
したがって、結合方向において管理情報の正しい順序に基づいて、どのブロックのデータを消去している途中で電源が切断されたか、つまりどのブロックが書込み対象であったかを特定できる。
【００２１】
さらに、環状に一方向に結合されたブロックに特定順序と結合方向とにしたがってデータを書込むので、例えば次に書込み要求データを書込む対象となるブロックの書込み前のデータと同じ種類のデータが他の少なくとも１個のブロックに存在するようにデータを冗長化することが考えられる。
【００２２】
これにより、書込み対象となるブロックのデータを消去中または書込み中で電源が切断されても、他の少なくとも１個のブロックに存在する同じ種類のデータにより元のデータを復旧できる。
【００２３】
そして、例えば、ｎ種類のデータに対して（ｎ＋１）個のブロックを用意し、ｎ種類のデータを１種類ずつ１個のブロックに特定順序にしたがって結合方向に書込めば、書込み対象のブロックのデータ種類と同じデータ種類のデータが書込み対象のブロックの次のブロックに存在することになる。そして、特定順序にしたがって結合方向にデータを順次ブロックに書込むにしたがい、同じデータ種類のブロックの組合せは結合方向に移動する。
【００２４】
これにより、書込み対象のブロックのデータを消去している途中で電源が切断されても、前述したように管理情報の順序に基づいて書込み対象のブロックを特定した上で、書込み対象のブロックの次のブロックに書込まれているデータにより、書込み対象のブロックのデータを復旧できる。書込み対象以外のブロックのデータは消去されずに残り、電源が切断されても消失するおそれがないため、書込み対象以外のブロックのデータを復旧するためにブロックを用意する必要はない。
【００２５】
これにより、ｎ種類のデータに対して１個多い（ｎ＋１）個のブロックを用意すれば、書込み対象のブロックの冗長性を確保した上で、記憶装置の容量を極力効率よく使用することができる。
【００２６】
さらに、環状に一方向に結合された結合方向にしたがってブロックにデータを書込むので、各ブロックに同じ頻度でデータを書込むことができる。これにより、複数のブロックのうち特定のブロックの書込み頻度が増加することを防止し、記憶装置の使用寿命を延ばすことができる。
【００２７】
尚、特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本発明の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００２８】
【図１】第１実施形態のデータ管理装置の全体構成を示すブロック図。
【図２】管理情報によるブロックの結合状態を示す模式図。
【図３】ブロックの管理部の構成を示す模式図。
【図４】データ書込み処理を示すフローチャート。
【図５】データ書込み処理を示すブロックの模式図。
【図６】データ書込み処理を示すブロックの模式図。
【図７】データ復旧処理を示すフローチャート。
【図８】データ読出し処理を示すフローチャート。
【図９】第２実施形態のデータ書込み処理を示すブロックの模式図。
【図１０】第３実施形態のデータ書込み処理を示す模式図。
【図１１】第４実施形態のデータ書込み処理を示すブロックの模式図。
【発明を実施するための形態】
【００２９】
以下に本発明の実施形態を図面と共に説明する。
［１．第１実施形態］
［１−１．構成］
図１は、ブロック単位でデータの消去が行われるブロックを３個以上備える書換え可能な不揮発性の記憶装置としてフラッシュメモリを搭載しているデータ管理装置２の全体構成を示すブロック図である。データ管理装置２は、ＣＰＵ１０と、ＲＡＭ１２と、ＲＯＭ１４と、フラッシュコントローラ２０と、フラッシュメモリ３０と、入出力インターフェース（Ｉ／Ｏ）５０とを備えている。電源６０は、データ管理装置２の各部に電力を供給する。
【００３０】
データ管理装置２は、例えば車両に搭載されて用いられる情報処理システムの一部を構成する装置である。データ管理装置２は、車両に搭載されて用いられる装置である必要はなく、車載機器以外でも様々な情報処理システムの一部を構成する装置であってもよい。
【００３１】
ＣＰＵ１０は、ＲＯＭ１４に記憶されているフラッシュドライバソフト１６とアプリケーションソフト１８とを実行することにより、データ管理装置２を統括制御する。ＣＰＵ１０は、フラッシュドライバソフト１６を実行することにより、アプリケーションソフト１８またはデータ管理装置２以外の図示しない他の装置からのフラッシュメモリ３０へのアクセス要求に応じて、フラッシュメモリ３０に対するデータの読出しと書込みとを制御する。
【００３２】
ＲＡＭ１２はＣＰＵ１０により使用される作業領域である。またＲＡＭ１２はフラッシュメモリ３０から読出されたデータと、フラッシュメモリ３０に書込むデータを一時的に保持するバッファとしても機能する。
【００３３】
フラッシュコントローラ２０は、ＣＰＵ１０から与えられる指令に基づいてフラッシュメモリ３０に対する書込み処理、読出し処理、消去処理等を実行する。フラッシュメモリ３０は、最小消去単位であるブロック４０をｍ個有している。１ブロックあたりの容量、ブロック４０に対するデータの書込みの最小単位はフラッシュメモリの仕様によって異なる。
【００３４】
図２に示すように、本実施形態におけるフラッシュメモリ３０のブロック４０は、予め論理的に環状に一方向に結合されている。図２では説明を簡単にするために、３個のブロック４０を示している。
【００３５】
各ブロック４０は、ブロック４０に記憶されているデータの種類を示すＩＤが書込まれるＩＤ部４２と、書込み要求で書込み要求データが書込まれるデータ部４４と、管理情報が書込まれる管理部４６とを有している。データＡとデータＡ’とのＩＤ部４２には同じデータ種類を示すＩＤ＝Ａが設定される。
【００３６】
管理部４６に書込まれている管理情報は、ブロック４０の結合方向において、該当する管理情報が書込まれているブロック４０の次のブロック４０の書込み状態を表わしている。
【００３７】
データＡが記憶されているブロック４０の管理情報はデータＡ’が記憶されているブロック４０の書込み状態を表わしている。データＡ’が記憶されているブロック４０の管理情報はデータＢが記憶されているブロック４０の書込み状態を表わしている。データＢが記憶されているブロック４０の管理情報はデータＡが記憶されているブロック４０の書込み状態を表わしている。このように、ブロック４０は環状に一方向に結合されている。
【００３８】
管理情報には、「書込み済み」と「未書込み」と「書込み中」の３種類が設定されている。管理情報として「書込み済み」は、対象となるブロック４０のデータが正常に書込まれたことを表わしている。図２では、データＡ'とデータＢとが書込まれているブロック４０はデータが正常に書込まれたブロックである。
【００３９】
管理情報として「未書込み」は、対象となるブロック４０が次にデータが書込まれる書込み対象であり、まだデータが書込まれていないブロックであることを表わしている。図２では、データＡが書込まれているブロック４０が次にデータが書込まれる書込み対象である。
【００４０】
環状に一方向に結合されたブロック群においては、「未書込み」の管理情報が書込まれているブロック４０は、環状に一方向に結合されたブロック群においてデータが書込まれた最新のブロック４０である。これに対し、管理情報として「未書込み」の対象となるブロック４０は、データが書込まれた最古のブロック４０である。したがって、同じデータ種類であってもデータＡ’の方がデータＡよりも新しいデータである。
【００４１】
第１実施形態では、ｎ種類のデータに対して１個多い（ｍ＝ｎ＋１）個のブロックを用意している。例えば、図２に示すように、ＩＤ＝Ａ、ＩＤ＝Ｂのように２種類のデータ種類であれば３個のブロック４０を用意している。そして、書込み要求の書込み順序がどのような要求順序であっても、環状に一方向に結合された結合方向にしたがって、予め設定された特定のデータ書込み順序である特定順序として、ＩＤ＝Ａ、ＩＤ＝Ｂの順序となるように、ブロック４０に書込み要求データを書込む。
【００４２】
これにより、ブロック４０の結合方向において、書込み対象のブロック４０の書込み前のデータ種類と同じデータ種類のデータが書込み対象のブロック４０の次のブロックに存在することになる。
【００４３】
図２では、管理情報として「未書込み」の対象となるデータＡが書込まれているブロック４０の次のブロック４０にデータＡ'が書込まれている。
図２には示されていないが、管理情報として「書込み中」は、書込み対象のブロック４０のデータを消去中または書込み要求データを書込み中であることを表わしている。
【００４４】
図３に示すように、管理部４６は２個のフラグ１とフラグ２とで構成されている。ブロック４０のデータを消去すると、管理部４６のフラグ１、２も消去され、フラグ１、２はともに消去状態になる。フラグ１、２がともに消去状態である管理部４６が表わす管理情報は「未書込み」である。フラグ１、２に値を書込むと、フラグ１、２は非消去状態になる。
【００４５】
管理部４６が「未書込み」の状態から、例えば、フラグ１＝消去状態、フラグ２＝非消去状態のようにフラグ１、２の一方を消去状態から非消去状態に設定すると、管理部４６が表わす管理情報は「書込み中」になる。
【００４６】
管理部４６が「書込み中」の状態から、例えば、フラグ１＝非消去状態、フラグ２＝非消去状態のようにフラグ１、２の両方を非消去状態に設定すると、管理部４６が表わす管理情報は「書込み済み」になる。
【００４７】
このように、管理部４６が表わす管理情報は、ブロック４０のデータが消去されてデータが書込まれ、次に同じブロック４０のデータが消去されるまで、「未書込み」、「書込み中」、「書込み済み」と変化する。
【００４８】
［１−２．処理］
（１）データ書込み処理
ＣＰＵ１０が実行するデータ書込み処理について説明する。図４のフローチャートは、ＣＰＵ１０が実行するフラッシュドライバソフト１６が、ＣＰＵ１０が実行するアプリケーションソフト１８またはデータ管理装置２以外の他の装置からフラッシュメモリ３０に対する書込み要求を受け付けると実行される。
【００４９】
図４と後述する図７および図８のフローチャートにおいて「Ｓ」はステップを表わしている。また、図５および図６と後述する図９および図１１とにおいて、ブロック４０のＩＤ部４２の記載を省略している。
【００５０】
図４のＳ４００において、ＣＰＵ１０は、ブロック４０の管理情報の順序に基づいて次にデータを書込むブロック４０を特定する。
例えば、図５では、手順（１）において、ブロック＃２の管理情報が「書込み済み」であり、ブロック＃３の管理情報が「未書込み」である。このように、管理情報が「書込み済み」、「未書込み」の順序になっているブロック＃２、＃３において、ブロック＃３の「未書込み」が示すブロック＃１が次にデータを書込む対象のブロックとして決定される。
【００５１】
Ｓ４０２において、ＣＰＵ１０は、ブロック４０に書込まれている管理情報の順序と、ブロック４０に書込まれているデータのＩＤの順序と、予め設定された特定のデータ書込み順序である特定順序とに基づいて、次に書込むべきデータのＩＤを決定する。
【００５２】
例えば、図５の手順（１）において、管理情報が「書込み済み」、「未書込み」の順序になっているブロック＃２、＃３のＩＤの順序は、ＩＤ＝Ａ、ＩＤ＝Ｂになっている。そして、特定順序はＩＤ＝Ａ、ＩＤ＝Ｂである。したがって、次にブロック＃１に書込むべきデータのＩＤは「Ａ」である。
【００５３】
Ｓ４０４において、ＣＰＵ１０は、Ｓ４０２で決定した次に書込むべきデータのＩＤと書込み要求データのＩＤとが一致しているか否かを判定する。Ｓ４０２で決定したＩＤは「Ａ」である。図５では、最初にＩＤが「Ａ」のデータＡ''の書込み要求を受け付けているので、データのＩＤは一致している（Ｓ４０４：Ｙｅｓ）。
【００５４】
この場合、ＣＰＵ１０は、次の手順（２）において、ブロック＃３の管理情報を「書込み中」に設定する。
次に、ＣＰＵ１０は、手順（３）においてブロック＃１のデータを消去することにより、手順（４）に示すように、ブロック＃１の管理情報を「未書込み」に設定する。これにより、次にデータを書込むブロックはブロック＃２になる。
【００５５】
そして、ＣＰＵ１０は、手順（４）において書込み要求データであるデータＡ''をブロック＃１に書込む。尚、図５の手順（４）においてブロック＃１のデータが（データＡ''）になっているのは、データの書込み中であることを表わしている。
【００５６】
手順（５）においてブロック＃１にデータＡ''の書込みが終了すると、ＣＰＵ１０は、手順（６）においてブロック＃３の管理情報を「書込み中」から「書込み済み」に設定する。これにより、ブロック＃１において書込み要求データであるデータＡ''の書込みが完了する（Ｓ４０８）。
【００５７】
手順（６）においてブロック＃１へのデータＡ''の書込みが正常に完了し、次にデータＢ'の書込み要求を受け付けると、前述したデータＡ''の書込みと同様に、管理情報の順序と、書込まれているデータのＩＤの順序と、特定順序とに基づいて、次に書込むべきデータのＩＤは「Ｂ」に決定される。次に書込むべきデータのＩＤと書込み要求データのＩＤとが同じ「Ｂ」であるから、手順（７）〜（１１）にしたがってブロック＃２にデータＢ'が書込まれる。
【００５８】
図６に、次に書込むべきデータのＩＤと書込み要求データのＩＤとが一致しない（Ｓ４０４：Ｎｏ）例を示す。
図６の手順（１）において、図５の手順（１）と同様にデータＡ''の書込み要求を受け付けると、ＣＰＵ１０は、図５と同様に手順（１）〜（６）にしたがってブロック＃１にデータＡ''を正常に書込む。
【００５９】
データＡ''の次にデータＡ'''の書込み要求を受け付けると、管理情報の順序と、書込まれているデータのＩＤの順序と、特定順序とにより決定した次に書込むべきデータのＩＤである「Ｂ」と一致しない（Ｓ４０４：Ｎｏ）。この場合、ＣＰＵ１０は、データＡ''の次にデータＡ'''の書込み要求を受け付けても、データＡ''の次にＩＤが「Ｂ」のデータを「未書込み」が示すブロック＃２に書込むと判断する。
【００６０】
ＣＰＵ１０は、各ブロックのＩＤを検索してＩＤが「Ｂ」の最新のデータが書き込まれているブロック＃３のデータを読出す。そして、ＣＰＵ１０は、図６の手順（７）〜（１１）において、ブロック＃３のＩＤ＝Ｂのデータを、書込みの実行順序が特定順序となるように、要求順序であるデータＡ''とデータＡ'''との間に補完データとしてブロック＃２に書込む（Ｓ４０６）。これにより、手順（１１）において、ブロック＃２、＃３のデータのＩＤは「Ｂ」になる。
【００６１】
そして、ブロック＃１の管理情報が「書込み済み」、ブロック＃２の管理情報が「未書込み」であり、ブロック＃１のＩＤが「Ａ」、ブロック＃２のＩＤが「Ｂ」であり、特定順序がＩＤ＝「Ａ」、ＩＤ＝「Ｂ」であるから、次にブロック＃３に書込むべきデータのＩＤは「Ａ」である。
【００６２】
したがって、書込み要求データとしてデータＡ''の次に受け付けたデータＡ'''のＩＤと一致する（Ｓ４０４：Ｙｅｓ）。そこで、ＣＰＵ１０は、手順（１２）〜（１６）において、ブロック＃３にデータＡ'''を書込む。
【００６３】
（２）データ復旧処理
ＣＰＵ１０が実行するデータ復旧処理について説明する。図７のフローチャートは、電源切断から復帰したタイミング、つまり電源６０が再投入されてデータ管理装置２が再起動するタイミングで実行される。
【００６４】
図７のＳ４１０において、ＣＰＵ１０は、管理情報が「書込み済み」、「書込み中」の順序になっているブロック４０を検索する。
例えば、図５の手順（３）においてブロック＃１のデータを消去中に電源６０が切断されると、ブロック＃１のデータは不定になる。この場合、ブロック＃１の管理情報は「書込み済み」、「未書込み」、「書込み中」のいずれにもなり得る。ブロック＃１の管理情報が「書込み中」になると、「書込み中」が書込まれているのはブロック＃１とブロック＃３との両方になる。
【００６５】
ブロックに書込まれている管理情報として「書込み中」が結合方向において次のブロックの書込み状態を正しく表わしている場合、結合方向において「書込み中」が書込まれているブロックの前のブロックの書込み情報は「書込み済み」になっているはずである。
【００６６】
したがって、ブロック＃１の管理情報が「書込み中」であり、結合方向においてブロック＃１の前のブロック＃３に書込まれている書込み情報が「書込み中」の場合、ブロック＃１の管理情報は正しくないと判断できる。
【００６７】
結合方向において、管理情報が「書込み済み」、「書込み中」の正しい順序になっているブロックは、ブロック＃２、ブロック＃３である。この場合、ＣＰＵ１０は、ブロック＃３の「書込み中」が正しい管理情報であると判断する。
【００６８】
このように、管理情報が「書込み済み」、「書込み中」の順序になっているブロックが存在すると（Ｓ４１２：Ｙｅｓ）、この順序の「書込み中」により示されるブロックに対する書込み処理中に、何らかの原因で書込み処理が中断されたと判断できる。そして、書込み処理が中断されたブロックのデータを復旧する処理が実行される。
【００６９】
この場合、ＣＰＵ１０は、「書込み済み」、「書込み中」の順序になっている管理情報の「書込み中」が示すブロックのデータを消去する（Ｓ４１４）。データが消去されたブロックの管理情報は「未書込み」になる。例えば、図５の手順（３）で電源が切断された場合、ＣＰＵ１０は、ブロック＃３の「書込み中」が示すブロック＃１のデータを消去する。
【００７０】
そして、ＣＰＵ１０は、「書込み済み」、「書込み中」の順序になっている管理情報が書込まれているブロックのデータのＩＤの順序と、特定順序とに基づいて、「書込み中」が示すブロックに書込んで復旧すべきデータのＩＤを決定する（Ｓ４１６）。ＣＰＵ１０は、ブロック群のうち書込み処理が中断したブロック以外のブロックから、決定したＩＤのデータのうち最新のデータを読み出す（Ｓ４１８）。
【００７１】
例えば、図５の手順（３）で電源が切断された場合、「書込み済み」、「書込み中」の順序になっている管理情報が書込まれているブロック＃２、＃３のデータのＩＤの順序は、ＩＤ＝「Ａ」、ＩＤ＝「Ｂ」である。そして、特定順序はＩＤ＝「Ａ」、ＩＤ＝「Ｂ」である。
【００７２】
したがって、「書込み中」が示すブロックに書込んで復旧すべきデータのＩＤは「Ａ」である。ＣＰＵ１０は、書込み処理が中断したブロック＃１以外のブロックでＩＤが「Ａ」のデータのうち最新のデータＡ'をブロック＃２から読み出す。
【００７３】
そして、ＣＰＵ１０は、「書込み済み」、「書込み中」の順序になっている管理情報の「書込み中」が示すブロックにＳ４１８で読み出したデータを書込む（Ｓ４２０）。さらに、ＣＰＵ１０は、「書込み中」が書込まれているブロックの管理情報を「書込み済み」に設定する（Ｓ４２０）。
【００７４】
（３）データ読出し処理
ＣＰＵ１０が実行するデータ読出し処理について説明する。図８のフローチャートは、フラッシュドライバソフト１６がアプリケーションソフト１８またはデータ管理装置２以外の他の装置からフラッシュメモリ３０からの読出し要求を受け付けると実行される。図８のフローチャートにおいて「Ｓ」はステップを表わしている。
【００７５】
図８のＳ４２０において、ＣＰＵ１０は、読出し要求のデータのＩＤと一致するＩＤのブロックからデータを読出す。
読出し要求と同じＩＤのブロックが複数ある場合、データ管理装置２は、例えば管理情報として「未書込み」が書込まれているブロックから結合方向を逆方向に検索し、最初に読出し要求のデータのＩＤと一致するＩＤのブロックからデータを読出す。管理情報として「未書込み」が書込まれているブロックに最新のデータが書込まれているので、結合方向を逆方向に検索することにより、読出し要求のデータのＩＤと一致するＩＤの最新のデータを読み出すことができる。
【００７６】
［１−３．効果］
以上説明した第１実施形態によれば、以下の効果を得ることができる。
（１）３個以上のブロック４０が環状に一方向に結合されており、管理情報がブロックの結合方向において次のブロックの書込み状態を表わしている。したがって、例えば、図５の手順（３）において、ブロック＃２、＃３に書込まれている管理情報の「書込み済み」、「書込み中」の順序に基づいて、ブロック＃１の書込み状態が「書込み中」であることをブロック＃３の管理情報が表わしていると判断できる。
【００７７】
これにより、ブロック＃１にデータを書込むためにブロック＃１のデータを消去している途中で電源６０が切断され、ブロック＃１の管理部４６の管理情報が不定になっても、ブロック＃３の管理情報から、ブロック＃１のデータは書込み中であることが分かる。
【００７８】
（２）環状に一方向に結合されたブロック４０に書込み要求データを書込むときの予め設定された特定順序、例えばデータのＩＤとして「Ａ」、「Ｂ」の順序と、ブロック４０の結合方向とにしたがって、ブロック４０にデータを書込んでいる。さらに、次に書込み要求データを書込む対象となるブロック４０の書込み前のデータと同じ種類のデータが他の少なくとも１個のブロック４０に存在するようにデータを冗長化している。
【００７９】
これにより、書込み対象となるブロック４０のデータを消去中または書込み中で電源６０が切断されても、他の少なくとも１個のブロック４０に存在する同じ種類のデータにより元のデータを復旧できる。
【００８０】
（３）電源６０が切断されたときに消失のおそれのある書込み対象のブロック４０のデータだけを冗長化すればよいので、書込み対象以外のブロック４０のデータを冗長化する必要はない。第１実施形態では、ｎ種類のデータに対して１個多い（ｍ＝ｎ＋１）個のブロック４０を用意し、ｎ種類のデータを１種類ずつ１個のブロック４０に、ブロック４０に書込むときの特定順序にしたがってブロック４０の結合方向に書込み要求データを書込んでいる。
【００８１】
これにより、書込み対象のブロック４０の書込み前のデータ種類と同じデータ種類のデータが書込み対象のブロックの４０次のブロック４０に存在することになるので、書込み対象のブロック４０のデータの冗長性を確保した上で、フラッシュメモリ３０の容量を極力効率よく使用できる。
【００８２】
（４）環状に一方向に結合された結合方向にしたがってブロック４０にデータを書込むので、各ブロック４０に同じ頻度でデータが書込まれる。したがって、フラッシュメモリ３０の使用寿命を延ばすことができる。
【００８３】
［２．第２実施形態］
［２−１．構成］
第２実施形態のデータ管理装置２の基本的な構成は第１実施形態と同様である。第２実施形態では、ｎ種類のデータに対し、復旧用に同じ種類のデータをそれぞれ２個のブロックに書込み、合計で２ｎ個のブロック４０を使用する点が第１実施形態と異なる。
【００８４】
例えば、図９に示すように、「Ａ」および「Ｂ」という２種類のデータのＩＤに対し、４個のブロック４０を使用する。データの書込み順序は、第１実施形態と同様に「Ａ」、「Ｂ」の順序である。
【００８５】
ＣＰＵ１０は、図９の手順（１）〜（６）において、ブロック＃４の管理情報である「未書込み」が示すブロック＃１のデータを消去してブロック＃１の管理情報を「未書込み」に設定し、書込み要求データであるデータＡ''をブロック＃１に書き込む。
【００８６】
データＡ''の次の書込み要求データがＡ'''の場合、図４のＳ４０４の判定は「Ｎｏ」になる。したがって、ＣＰＵ１０は、手順（７）〜（１１）において、次に書き着込むべきＩＤが「Ｂ」のデータの中で最新のデータが書込まれているブロック＃４のデータＢ'を、書込みの実行順序が特定順序となるように補完データとしてブロック＃２に書込む。
【００８７】
そして、ＣＰＵ１０は、手順（１２）〜（１６）において、データＡ''の次の書込み要求データであるデータＡ'''をブロック＃３に書き込む。
［２−２．効果］
第２実施形態では、第１実施形態の効果（１）、（２）、（４）に加え、以下の効果を得ることができる。
【００８８】
２種類のデータに対し、復旧用に同じ種類のデータをそれぞれ１個のブロックに記憶するので、何らかの原因で同じ種類のデータの１個が消失しても、同じ種類の他の１個のデータで消失したデータを復旧できる。
【００８９】
［３．第３実施形態］
［３−１．構成］
第３実施形態のデータ管理装置２の基本的な構成は第１実施形態と同様である。第３実施形態では、１個の書込み要求データを受け付ける毎に特定順序と一致しているか否かを判定するのではなく、受け付ける書込み要求データをすべて一旦ＲＡＭ１２に記憶する。そして、書込みの要求順序が特定順序ではない場合、特定順序になるように並べ替えてブロック４０に順次書込む。
【００９０】
例えば、図１０では、データＡ''、データＡ'''、データＢ'の順序で書込み要求データを受け付けてＲＡＭ１２に記憶する。そして、フラッシュメモリ３０に書込むときに、特定順序であるデータＡ''、データＢ'、データＡ'''の順序に並び替えながらブロック４０に順次書込む。
【００９１】
［３−２．効果］
第３実施形態では、第１実施形態の効果（１）〜（４）に加え、以下の効果を得ることができる。
【００９２】
受付ける書込み要求データをすべて一旦ＲＡＭ１２に記憶し、書込みの要求順序が特定順序ではない場合、特定順序になるように並べ替えてからブロック４０に順次書込むので、特定順序になるようにデータを補完してブロック４０に書込む処理を省略できる。
【００９３】
［４．第４実施形態］
［４−１．構成］
第４実施形態のデータ管理装置２の基本的な構成は第１実施形態と同様である。第４実施形態では、書込み要求データを受け付けると、環状に一方向に結合している２個のブロックに、特定順序として連続して同じ書込み要求データを書込む点が第１実施形態と異なる。
【００９４】
ＣＰＵ１０は、図１１の手順（１）〜（６）において、ブロック＃３の管理情報である「未書込み」が示すブロック＃１に書込み要求データであるデータＡ''を書き込む。ブロック＃１の管理情報は「未書込み」に設定されるので、さらにブロック＃１の次のブロック＃２に、ブロック＃１と同じ書込み要求データであるデータＡ''を書き込む。
【００９５】
［４−２．効果］
第４実施形態では、第１実施形態の効果（１）、（２）、（４）に加え、以下の効果を得ることができる。
【００９６】
１種類のデータに対し、復旧用に同じ書込み要求データを環状に一方向に結合した２個の連続したブロックに書込むので、何らかの原因で同じ種類のデータの１個が消失しても、同じ種類の他のデータで消失したデータを復旧できる。
【００９７】
［５．他の実施形態］
以上、本発明の実施形態について説明したが、本発明は上記実施形態に限定されることなく、以下の種々の形態を取り得る。
【００９８】
（１）上記実施形態においては３個または４個のブロック４０を備えるブロック群の構成を例示したが、ブロック群は３個以上のブロックによって構成されていればよく、３個または４個に限定されることはない。また、環状に一方向に結合された３個以上のブロックから構成されるブロック群は複数であってもよい。
【００９９】
（２）第４実施形態では、１種類のデータだけで構成される３個のブロックから構成されるブロック群を例にした。これに対し、２種類以上のデータのうち、少なくとも１種類のデータだけを環状に一方向に結合した２個の連続したブロックに書込んでもよい。
【０１００】
（３）ブロック単位でデータの消去が行われるブロックを３個以上備える不揮発性の記憶装置は、フラッシュメモリに限らずどのような記憶装置であってもよい。
（４）上記実施形態における一つの構成要素が有する機能を複数の構成要素として分散させたり、複数の構成要素が有する機能を一つの構成要素に統合させたりしてもよい。また、上記実施形態の構成の少なくとも一部を、同様の機能を有する公知の構成に置き換えてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加または置換してもよい。尚、特許請求の範囲に記載した文言のみによって特定される技術思想に含まれるあらゆる態様が本発明の実施形態である。
【０１０１】
（５）上述したデータ管理装置の他、当該データ管理装置を構成要素とする情報処理システム、当該データ管理装置としてコンピュータを機能させるためのプログラム、このプログラムを記録した記録媒体、データ管理方法など、種々の形態で本発明を実現することもできる。
【符号の説明】
【０１０２】
２：データ管理装置、３０：フラッシュメモリ（書換え可能な不揮発性の記憶装置）、１０：ＣＰＵ（制御手段）、４０：ブロック、４２：ＩＤ部、４４：データ部、４６：管理部、６０：電源
【図１】
0006332077.tif 000002
【図２】
0006332077.tif 000003
【図３】
0006332077.tif 000004
【図４】
0006332077.tif 000005
【図５】
0006332077.tif 000006
【図６】
0006332077.tif 000007
【図７】
0006332077.tif 000008
【図８】
0006332077.tif 000009
【図９】
0006332077.tif 000010
【図１０】
0006332077.tif 000011
【図１１】
0006332077.tif 000012