(57)【要約】【課題】退避ブロックの消去回数のみが動作保証ができない制限回数を上回ってしまうことによってフラッシュメモリ全体が早期に動作保証できない状態になることを防止するフラッシュメモリのデータ処理方法、及び、このデータ処理用のプログラムを提供する。【解決手段】各ブロック２０ａ〜２０ｃ内のデータを退避ブロック２１に退避させるときに、各ブロック２０ａ〜２０ｃから退避ブロック２１に退避させたデータのデータ群の末尾に末尾情報を記録して、各ブロック２０ａ〜２０ｃから退避させてきたデータのデータ群を区切っている。そのため、退避させてきたデータを退避元のブロック２０ａ〜２０ｃに戻した後、退避ブロック２１に退避させたデータを一々消去しなくてもよいこととなる。結果、退避ブロックの消去回数だけが動作保証ができる回数を超えることが防止できるので、フラッシュメモリの動作保証を長くすることができる。【選択図】  図７
2014075036.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶するための複数のブロック、及び、該ブロックに記憶されたデータを退避させるための退避ブロックが設定された記憶領域を有するフラッシュメモリのデータ処理方法であって、
一の前記ブロックから退避させた複数のデータからなるデータ群の末尾に、このデータ群の末尾であることを示す末尾情報を付加する退避処理（Ｓ３８、Ｓ５０）と、
該退避処理による退避後に、退避元の一の前記ブロックに記憶されていたデータを一括して消去する第１消去処理（Ｓ５２）と、
該第１消去処理による消去後に、前記末尾情報によって区切られた前記データ群を退避元の一の前記ブロックに戻す回復処理（Ｓ５４）と、
を実行することを特徴とするフラッシュメモリのデータ処理方法。
【請求項２】
請求項１に記載のフラッシュメモリのデータ処理方法において、
前記退避ブロックに記憶され、前記末尾情報で区切られた複数のデータ群からなるデータを一括して消去する第２消去処理（Ｓ５８）
を実行することを特徴とするフラッシュメモリのデータ処理方法。
【請求項３】
請求項１〜２のいずれか１項に記載のデータ処理方法において、
前記記憶処理によってデータを記憶する処理が実行されるとき、過去に同一種類のデータを記憶していた場合、過去に記憶された同一種類のデータの前記退避確認フラグを過去に記憶されたものであることを示すものに変更するフラグ変更処理（Ｓ１８）
を実行することを特徴とするフラッシュメモリのデータ処理方法。
【請求項４】
請求項１〜３のいずれか１項に記載されたフラッシュメモリのデータ処理方法を実行することを特徴とするフラッシュメモリのデータ処理用のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶したデータの消去回数に限度のあるフラッシュメモリのデータ処理方法、及び、このデータ処理用のプログラムに関する。
【背景技術】
【０００２】
自動車の動作中に発生する様々なデータを記憶する記憶装置としてフラッシュメモリが広く利用されている。
このフラッシュメモリは、周知のように、記憶したデータを消去できる回数に制限があるため、データを書き換えるたびに過去のデータを消去すると、短期間にその制限回数に達し、動作保証ができなくなってしまう。
【０００３】
そのため、フラッシュメモリを記憶装置として用いる場合、その記憶領域を複数のブロックに分けるとともに、データの種類によって記憶すべきブロックを分け、新しいデータが発生したら過去のデータを消去することなく対応するブロックに累積的に記憶させていた。
【０００４】
そして、ブロックの記憶容量が一定量に達すると、そのブロック内のすべてのデータを一括して消去していた。
このようにすれば、フラッシュメモリに記憶したデータを消去する回数を大幅に減らすことができるので、フラッシュメモリの動作保証期間を大きく伸ばすことができた（特許文献１）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−２４３０９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、上述のようにブロック内に累積的にデータを記憶する場合、それらのデータの中には必要なデータと不要なデータとが混在して記憶されることとなる。
そのため、上述の特許文献１に係る発明では、各データをブロックに記憶する際、データの要不要を示す確認用フラグを各データに付帯させるとともに、ブロック内のデータを一括して消去するときには、確認用フラグで必要とされるデータのみをＲＡＭに退避させた後に消去していた。
【０００７】
そして、ブロック内のデータを消去した後、ＲＡＭに退避させていたデータを、退避元のブロックに戻し、ＲＡＭに退避させていたデータについては、他の退避させていたデータとの混在等を防止するため消去していた。
【０００８】
しかし、データの退避先としてＲＡＭを用いた場合、退避中に瞬断（ＲＡＭに供給されていた電源が一時的に断たれること）が生じると、ＲＡＭに退避させていたデータが消えてしまう課題があった。
【０００９】
この課題を解決する方法としては、フラッシュメモリ内に退避用の退避ブロックを設け、データを退避させる先を、ＲＡＭから退避ブロックに変更する方法が考えられる。
しかし、フラッシュメモリ内にはデータを記憶するための通常のブロックが複数あり、これら各ブロックからデータを退避させる処理を一つの退避ブロックに対して行うと、退避ブロックに退避させたデータを消去する回数が、通常のブロックの消去回数の合計数となってしまう。
【００１０】
そのため、通常の各ブロックの消去回数が、フラッシュメモリの動作保証ができなくなる制限回数に達していない場合であっても、フラッシュメモリ全体としては、早期に動作保証ができない状態になってしまうという課題があった。
【００１１】
そこで、本発明は、退避ブロックの消去回数のみが動作保証ができない制限回数を上回ってしまうことによってフラッシュメモリ全体が早期に動作保証できない状態になってしまうことを防止することができるフラッシュメモリのデータ処理方法、及び、このデータ処理用のプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するためになされた発明である請求項１に記載されたデータ処理方法は、データを記憶するための複数のブロック、及び、該ブロックに記憶されたデータを退避させるための退避ブロックが設定された記憶領域を有するフラッシュメモリのデータ処理方法である。
【００１３】
このデータ処理方法では、例えば、データを記憶する場合、退避を対象かを識別するための退避確認フラグを関連付けていずれかのブロックに、データを記憶する記憶処理（Ｓ１０〜Ｓ２２）が実行される。
【００１４】
そして、このデータ処理方法では、複数のブロックのうち、いずれかのブロックに記憶されたデータを退避ブロックに退避させるかが退避判定処理（Ｓ３４，Ｓ３６）によって判定される。
【００１５】
また、この退避判定処理により退避させることとなった一のブロックに記憶されたデータのうち、退避確認フラグによって退避対象となっているデータを退避ブロックに退避させるとともに、この退避の際、本発明では、一のブロックから退避させた複数のデータからなるデータ群の末尾に、このデータ群の末尾であることを示す末尾情報を付加する退避処理（Ｓ３８、Ｓ５０）が実行される。
【００１６】
さらに、この退避処理による退避後に、退避元の一のブロックに記憶されていたデータを一括して消去する第１消去処理（Ｓ５２）が実行され、この第１消去処理による消去後に、末尾情報によって区切られたデータ群を退避元の一のブロックに戻す回復処理（Ｓ５４）が実行される。
【００１７】
このようにすると、退避ブロックでは、末尾情報によって、各ブロックから退避させたデータ群を区別することができるので、退避ブロックに退避させたデータ群を退避元のブロックに戻した後に、そのデータ群を一々消去しなくても、複数のデータ群を累積的に記憶しておくことができる。
【００１８】
そして、これら複数のデータ群を一括して消去すれば、退避ブロックに退避させたデータ群を退避元のブロックに戻した後に、そのデータ群を一々消去する場合に比べ、退避ブロックに対する消去回数を減らすことができる。
【００１９】
そのため、このデータ処理方法を用いれば、退避ブロックの消去回数のみが動作保証ができない制限回数を上回ってしまうことによってフラッシュメモリ全体が早期に動作保証できない状態になることを防止することができる。
【００２０】
請求項２に記載した第２消去処理、すなわち、退避ブロックに記憶され、末尾情報で区切られた複数のデータ群からなるデータを一括して消去するタイミングとしては、退避ブロックの記憶容量が一杯になるなどしたタイミングでもよいが、これに限られるものではない。
【００２１】
また、退避判定処理、すなわち、複数のブロックのうち、いずれかのブロックのデータを退避ブロックに退避させるかは、例えば、記憶容量が満杯となったブロックについて実行するようにしてもよいが、これに限られるものではない。
【００２２】
また、請求項３に記載したように、記憶処理によってデータを記憶する処理が実行されるとき、過去に同一種類のデータを記憶していた場合、過去に記憶された同一種類のデータの退避確認フラグを無効にするフラグ変更処理（Ｓ１８）を実行してもよい。
【００２３】
このようにすれば、同一種類のデータについては、退避処理を行う際、最新データのみが退避されることとなる。
尚、請求項４に記載したプログラムをフラッシュメモリを記憶装置として用いる装置にインストールすれば、その装置において、上述した効果と同様の効果を得られる。
【００２４】
因みに、上記各手段等の括弧内の符号は、後述する実施形態に記載の具体的手段等との対応関係を示す一例であり、本発明は上記各手段等の括弧内の符号に示された具体的手段等に限定されるものではない。
【図面の簡単な説明】
【００２５】
【図１】本実施形態のＥＣＵのブロック図である。
【図２】本実施形態のフラッシュメモリの説明図で、（ａ）記憶領域が複数のブロックに分割されている様子、（ｂ）各ブロックが複数のレコードに分割されている様子、（ｃ）各レコードの構成を示す図である。
【図３】記憶処理のフローチャートである。
【図４】退避処理の第１フローチャートである。
【図５】退避処理の第２フローチャートである。
【図６】データが移動する様子を概念的に示した説明図である。
【図７】データが移動する様子を概念的に示した説明図である。
【発明を実施するための形態】
【００２６】
以下に本発明のデータ処理方法を実現した実施形態を図面と共に説明する。
１．全体構成
本実施形態のＥＣＵ１は、図１に示すように、ＣＰＵ１０、ＲＡＭ１１、ＲＯＭ１２、フラッシュメモリ２、インタフェイス部１３を備え、それぞれがバス１４で通信可能に接続された制御装置である。
【００２７】
ＣＰＵ１０は後述する各種処理を実行する主制御部である。
ＲＡＭ１１は、一時記憶が必要なデータを記憶する揮発性のメモリであり、データの記憶及び読み出しが可能なメモリである。
【００２８】
ＲＯＭ１２は、各種処理用のプログラム等のデータが予め記憶されたメモリであり、データの読み込みだけが可能なメモリである。
フラッシュメモリ２は、電源遮断時にも記憶の保持が必要なデータを記憶する不揮発性のメモリであり、データの記憶及び読み出しが可能なメモリである。
【００２９】
インタフェイス部１３は、車両に備えられた各種センサ及び制御対象の各種装置と通信するため、ＥＣＵ１に対する入出力信号に対して必要な変換を行う装置である。
ＥＣＵ１では、ＣＰＵ１０がＲＯＭ１２から読み出されたプログラムに基づいて各種処理が実行されるとともに、この処理で発生したデータや、インタフェイス部１３の入力信号を変換したデータ、その他のデータが、ＲＡＭ１１やフラッシュメモリ２に対して記憶、読み込み、消去する処理が実行される。
【００３０】
２．フラッシュメモリ２
次に、フラッシュメモリ２について図２を用いて詳細に説明する。
尚、以下の説明では、説明容易のため、一般的なブロックとして２０ａ〜２０ｃの３つのブロックしか言及していないが、この一般的なブロックの数については３つに限られるものではない。
【００３１】
このフラッシュメモリ２は、図２（ａ）に記載したように、記憶領域が複数のブロック２０ａ〜２０ｃ，２１に分けられており、そのうちの一つは退避ブロック２１として用いられる。
【００３２】
また、本実施形態では、データの記憶頻度が各ブロック２０ａ〜２０ｃ間で偏らないように、データの種類によってデータを記憶すべきブロック２０ａ〜２０ｃが予め定められており、後述する記憶処理では、この予め定められたところに従って、各ブロック２０ａ〜２０ｃに各データが記憶される。
【００３３】
次に、各ブロック２０ａ〜２０ｃの構造について説明する。
各ブロック２０ａ〜２０ｃは、図２（ｂ）に示すように、複数のレコード２００で構成されている。このレコード２００は、フラッシュメモリ２の記憶・読み出しの最小単位である。
【００３４】
そして、各レコード２００は、図２（ｃ）に示すように、フラグ１、フラグ２、種別データ、データ、チェックデータの記録領域からなる。
フラグ１（記憶済確認フラグ）は、未記憶のレコード２００にデータが記憶された際（記憶済状態）に「０」とされ、記憶されていない状態（未記憶状態）では「１」のまま維持されるフラグである。
【００３５】
フラグ２（退避確認フラグ）は、同一種類のデータが同じブロック２０ａ〜２０ｃに新たに記憶されるとき、過去のデータが記憶されたレコードについては「０」とされ、新しいデータが記憶されるレコードについては「１」のまま維持されるフラグである。
【００３６】
すなわち、本実施形態では、各ブロック２０ａ〜２０ｃ内で、同一種類のデータが複数記憶される場合、同一種類のデータについて最新のデータが記憶されたレコードのフラグ２は「１」とされ、それ以外の過去のデータが記憶されたレコードのフラグ２については「０」に変更される。
【００３７】
種別データは、記憶されるデータの種類を示す情報である。
データは、ＣＰＵで実行される処理で発生したデータや、インタフェイス部１３の入力信号を変換したデータ、その他のデータに対応するもので、記憶すべき情報が現されたデータである。フラグ１やフラグ２、種別データ、チェックデータは、このデータに対する冗長データである。
【００３８】
チェックデータは、チェックサムデータやＣＲＣデータなどである。
ところで、フラッシュメモリは、データの上書きができない。そのため、フラッシュメモリでは、仮に、古いデータを新しいデータに書き換えようとした場合、その古いデータを一旦消去して、その上で新しいデータを記憶されなければならない。
【００３９】
しかし、単に「１」から「０」に書き換える場合には、古いデータを消去する必要がなく、そのまま「１」から「０」に書き換えることができる。
そのため、フラグ１やフラグ２は、初期状態ではそれぞれ「１」「１」とされる。
【００４０】
そして、フラグ１については、各レコードにデータが記憶されると「０」とされ、る。
一方、フラグ２は、同じ種類のデータが新しく記憶されると、過去のデータが記録されたレコードに対応するものについては「０」とされ、新しくデータが記憶されるレコードに対応するものについては「１」のまま維持される。
【００４１】
３．記憶処理
次に、上述したフラッシュメモリ２を備えるＥＣＵ１において実行される各種処理のうち、図３にフローチャートで示した記憶処理について説明する。
【００４２】
本実施形態のＥＣＵ１で実行される記憶処理は、ＥＣＵ１内で扱われる各種データについて、それらデータの種類によって予め定められたいずれかのブロック２０ａ〜２０ｃにデータを記憶する処理である。
【００４３】
この記憶処理は、本実施形態のＥＣＵ１が動作中、常時実行される。
本実施形態では、前述したように、各ブロック２０ａ〜２０ｃへの記憶頻度が偏らないように、データの種類によって記憶すべきブロック２０ａ〜２０ｃが予め決められている。
【００４４】
そのため、この記憶処理が開始されると、Ｓ１０においてまず、データを記憶すべきブロック（以下では説明簡単のためブロック２０ａに記憶する場合ついて説明する）が決定され、ＣＰＵ１０内に有するアドレス変数（ＡＤＤ）にそのブロック２０ａの先頭レコードのアドレスが記憶される。
【００４５】
尚、データを記憶すべきブロックを決定する処理は、データに予め種別データが冗長データとして関連付けられているときは、この種別データにより行ってもよいし、他の方法で決定してもよい。
【００４６】
次にＳ１２において、ＡＤＤが示すアドレス位置のレコードのフラグ１が「０」か否か、すなわちＡＤＤが示すアドレス位置のレコードにはデータが記憶済か否かを判断し、記憶されていない記憶「１」の場合には（Ｓ１２：ＮＯ）、ステップＳ２２に進み、ＡＤＤが示すアドレス位置のレコードにデータを記憶する処理が実行される。
【００４７】
そして、Ｓ２２では、ＡＤＤが示すアドレス位置のレコードのフラグ１を「０」、すなわち記憶済みにし、フラグ２は「１」のまま保持する。さらに、Ｓ２２では、種別データ、データ、及び、チェックデータを記憶する。
【００４８】
一方、Ｓ１２において、ＡＤＤが示すアドレス位置のレコードのフラグ１が「０」、すなわち記憶済みの場合には（Ｓ１２：ＹＥＳ）、Ｓ１４に進む。
Ｓ１４では、ＡＤＤが示すアドレス位置のレコードのフラグ２が「１」、すなわち、そのレコードに記憶されたデータが最新のデータであるか否かを判断し、フラグ２が「０」である場合は（Ｓ１４：ＮＯ）、過去のデータであると識別してＳ２０に進み、フラグ２が「１」である場合は（Ｓ１４：ＹＥＳ）、最新のデータであると識別してＳ１６に進む。
【００４９】
Ｓ１６において、記憶を行おうとするデータと、ＡＤＤが示すアドレス位置のレコードも記憶されているデータの種別が一致するか否かを種別データを用いて判断し、不一致の場合（Ｓ１６：ＮＯ）はＳ２０に進み、一致する場合（Ｓ１６：ＹＥＳ）は、Ｓ１８に進む。
【００５０】
Ｓ１８では、ＡＤＤが示すアドレス位置のレコードに記憶されているデータは同一種類のデータの中では過去のデータであるので、そのレコードのフラグ２を「０」に書き換え、Ｓ２０に進む。
【００５１】
Ｓ２０では、ＣＰＵ１０内に有するＡＤＤを１加算する処理が実行され、ブロック２０ａの次の先頭レコードのアドレスが記憶される。
以下、最終的にＳ２２によって、この記憶処理の開始のきっかけとなったデータが、ブロック２０ａ内のすでにデータが記憶されたレコードのうち最後尾のアドレスの次に位置するアドレスのレコードに記憶されるまで、Ｓ１２〜Ｓ２０の処理が繰り返される。
【００５２】
４．退避処理
次に、各ブロック２０ａ〜２０ｃに記憶されているデータを退避ブロック２１に退避させる退避処理について、図４及び図５を用いて説明する。
【００５３】
この退避処理は、本実施形態のＥＣＵ１が動作中、常時実行される。
この退避処理では、まずＳ３０において、データを退避させる退避条件を満たすブロック２０ａ〜２０ｃがあるか判定する処理が実行される。
【００５４】
この退避条件は様々に設定でき、例えば、（１）各ブロック２０ａ〜２０ｃの記憶容量が、各ブロック２０ａ〜２０ｃの全記憶容量のうち満杯に近い所定量（例えば９０％）に達したか否かや、（２）予め退避を行うと定められたタイミングに達したか否か、（３）ユーザから退避処理を実行する指示があった場合など様々に設定することができる。
【００５５】
尚、この退避条件は、各ブロック２０ａ〜２０ｃに新たにデータを記憶することができなくなることが予想される前には少なくとも実行されることが好ましい。
そしてこのＳ３０において、いずれかのブロック２０ａ〜２０ｃが退避条件を満たしたと判定された場合には（Ｓ３０：ＹＥＳ）、そのブロック２０ａ〜２０ｃに対してＳ３２以下の処理が開始され、いずれのブロックも退避条件を満たさない場合には（Ｓ３０：ＮＯ）、待機する処理が実行される。
【００５６】
次に、Ｓ３２において、ＣＰＵ１０内に有するアドレス変数（ＡＤＤ）について、退避対象のブロック（以下では、説明簡単のため、ブロック２０ａ内のデータを退避させるものとして説明する）の先頭レコードのアドレスが記憶される。
【００５７】
次にＳ３４において、ＡＤＤが示すアドレス位置のレコードのフラグ１が記憶済みを示す「０」か否かを判定し、「１」の場合には（Ｓ３４：ＮＯ）、Ｓ５０に進み、退避ブロック２１において後述する末尾情報を記憶する処理が行われる。
【００５８】
一方、ＡＤＤが示すアドレス位置のレコードのフラグ１が、記憶済みであることを示す「０」の場合には（Ｓ３４：ＹＥＳ）、Ｓ３６に進む。
Ｓ３６では、ＡＤＤが示すアドレス位置のレコードのフラグ２が最新データであることを示す「１」か否かを判定し、フラグ２が最新データを示す「１」であれば、次にＳ３８を実行して、そのレコードのデータを、退避ブロック２１に移動させる処理を実行し、Ｓ４０の処理を実行する。
【００５９】
一方、Ｓ３６において、フラグ２が最新データではないことを示す「０」であれば、Ｓ３８の処理を行うことなく、すなわち、データを退避させることなく、次にＳ４０を実行する。
【００６０】
Ｓ４０では、ＣＰＵ１０内に有するＡＤＤを１加算し、ブロック２０ａ内の次の先頭レコードのアドレスが記憶される。
以下、Ｓ３４〜Ｓ４０の処理が繰り返し実行され、ブロック２０ａ内のレコードのうち、データが記憶されているすべてのレコードのフラグ１及びフラグ２についてチェックがなされる。
【００６１】
この結果、ブロック２０ａ内のレコードのうち、フラグ２が「１」とされるレコードに記憶されたデータについてはすべて退避ブロック２１に退避されることとなる。
一方、このデータを退避させる処理が終了すると、Ｓ５０に移行する（Ｓ３４：ＮＯ）。
【００６２】
Ｓ５０では、退避ブロック２１を構成するレコードのうち、Ｓ３４〜Ｓ４０の処理によってブロック２０ａから退避ブロック２１に退避させたデータが記憶された最後尾のアドレスのレコードの末尾、すなわち、この最後尾のアドレスのレコードに対し、さらに一つ後のアドレスのレコードに末尾情報が記録される。
【００６３】
そして、このＳ５０が終了すると、図５に示すように、次にＳ５２が実行される。
Ｓ５２では、退避元のブロックであるブロック２０ａ内の退避後のデータを一括して消去する処理が実行される。この処理が実行されると、ブロック２０ａ内のすべてのレコードが初期化され、例えば、各レコードのフラグ１及びフラグ２はすべて「１」にされる。
【００６４】
続くＳ５４では、先に行ったＳ３４〜Ｓ４０の処理でブロック２０ａから退避ブロック２１に退避させたデータを、Ｓ５２によってカラになった退避元のブロックであるブロック２０ａに戻す処理が実行される。
【００６５】
この処理は、今回行った退避処理により末尾情報が記憶されたレコードと、前回の退避処理により末尾情報が記憶されたレコードとの間のレコードに記憶された情報を退避元のデータの消去後のブロック２０ａに戻す処理が実行される。
【００６６】
尚、前回の退避処理によって末尾情報が記憶されたレコードがない場合は、今回行った退避処理によって末尾情報が記憶されたレコードより前のアドレスのレコードに記憶された情報を退避元のブロック２０ａに戻す処理が実行される。
【００６７】
そして、このＳ５４の処理が終了すると、退避ブロック２１の記憶容量が所定量に達し空き容量が少なくなっているかが判定される（Ｓ５６）。
このＳ５６において、退避ブロック２１の記憶容量が所定量に達していないと判定されると（Ｓ５６：ＮＯ）、本処理は終了し、退避ブロック２１の記憶容量が所定量に達していると判定されると（Ｓ５６：ＹＥＳ）、退避ブロック２１内のデータがすべて消去されて、本処理は終了し、再びＳ３０以下の処理が実行される。
【００６８】
５．概念図
以上説明した記憶処理及び退避処理を実行した場合に、各ブロック２０ａ〜２０ｃ、２１においてデータが記録・退避・消去される様子について、図６〜図７を用いて簡単に説明する。
【００６９】
尚、図６〜図７において、各レコード２０ａ〜２０ｃ内を複数に分割する一つ一つのマス目はレコードを意味する。
初期状態ではブロック２０ａ〜２０ｃ、及び、退避ブロック２１を構成する各レコードにはデータが記憶されていない。
【００７０】
車両のエンジンがかけられ、ＥＣＵ１が動作を開始すると、上述した記憶処理により、図６（ａ）に示すように、各ブロック２０ａ〜２０ｃにデータの記憶が開始される。
尚、ブロック２０ａについては、３種類のデータが記憶されたレコードについて、斜線、縦縞線、編目線で示している。
【００７１】
そして、例えば、図６（ｂ）に示すように、ブロック２０ａの記憶容量が満了に近くなるなどして退避条件を満たすと（図４のＳ３０：ＹＥＳ）、ブロック２０ａのうち、最新データのみが退避ブロック２１に移動する（Ｓ３８）。
【００７２】
斜線、縦縞線、編目線で示したレコードが、図６（ｂ）に示したブロック２０ａ内には複数あるが、退避ブロック２１内にはそれぞれ１つしかないのは、斜線、縦縞線、編目線で示したレコードに記録された同一種類のデータのうち、最新のデータのみを退避させているからである。
【００７３】
また、この退避のとき、退避ブロック２１に退避させた複数のデータからなるデータ群の末尾には、末尾情報αが付加される。
その後、図６（ｃ）に示すように、ブロック２０ａ内は初期化される。このとき、ブロック２０ａ内のデータは、最新データも過去のデータもすべて一括して消去される（Ｓ５２）。
【００７４】
そして、この初期化が終了すると、図７（ａ）に示すように、退避ブロック２１に退避させていたデータがブロック２０ａ内に戻される（Ｓ５４）。
その後、他のブロック２０ｂ〜２０ｃについても同様にデータを退避させると、図７（ｂ）に示すように、複数のデータ群が、末尾情報αに区切られて記憶されることとなる。
【００７５】
そして、退避ブロック２１内の記憶されたデータ量が所定量を越えると（Ｓ５６：ＹＥＳ）、図７（ｃ）に示すように、退避ブロック２１内のすべてのデータについても一括して消去される（Ｓ５８）。
【００７６】
本実施形態では、このようにすることによって、退避ブロック２１の消去回数だけが他のブロック２０ａ〜２０ｃに比べ極端に多くなることを防止して、フラッシュメモリ２０全体の動作保証ができなくなることを防止しているのである。
【００７７】
６．本実施形態の特徴的な作用効果
本実施形態では、各ブロック２０ａ〜２０ｃに記憶されたデータを退避ブロック２１に退避させる際、退避させた複数のデータからなるデータ群の末尾に、このデータ群の末尾であることを示す末尾情報αを付加して区切っている。
【００７８】
このようにすると、退避ブロック２１内では、この末尾情報αによって、各ブロック２０ａ〜２０ｃから退避させたデータ群を区別することができるので、退避ブロック２１に退避させたデータ群を退避元のブロック２０ａ〜２０ｃに戻した後に、そのデータ群を一々消去しなくても、複数のデータ群を累積的に記憶しておくことができる。
【００７９】
そして、これら複数のデータ群を一括して消去すれば、退避ブロック２１に退避させたデータ群を退避元のブロック２０ａ〜２０ｃに戻した後に、そのデータ群を一々消去する場合に比べ、退避ブロック２１に対する消去回数を減らすことができる。
【００８０】
そのため、本実施形態によれば、退避ブロック２１の消去回数のみが動作保証ができない制限回数を上回ってしまうことによってフラッシュメモリ２全体が早期に動作保証できない状態になることを防止することができる
尚、本実施形態では、最新データを退避する場合について説明したが、退避させるデータの種類は最新データに限られるものではない。
【００８１】
７．対応関係
Ｓ１８の処理は本発明のフラグ変更処理に相当し、Ｓ３４，Ｓ３６の処理は本発明の退避判定処理に相当する。
【００８２】
Ｓ５２の処理は本発明の第１消去処理に相当し、Ｓ５４の処理は回復処理に相当し、Ｓ５８の処理は第２消去処理に相当する。
図３の記憶処理と図４，５の退避処理を実行するＲＯＭ１２に記憶されたプログラムが、本発明のデータ処理用のプログラムに相当する。
【００８３】
（その他の実施形態）
本発明は、特許請求の範囲に記載された発明の趣旨に合致するものであればよく、上述の実施形態に限定されるものではない。
【符号の説明】
【００８４】
１… ＥＣＵ  ２…フラッシュメモリ  １０…ＣＰＵ  １１…ＲＡＭ  １２…ＲＯＭ    １３… インタフェイス部  １４… バス  ２０ａ〜２０ｃ…ブロック
２１… 退避ブロック  ２００… レコード
【図１】
2014075036.tif 000003
【図２】
2014075036.tif 000004
【図３】
2014075036.tif 000005
【図４】
2014075036.tif 000006
【図５】
2014075036.tif 000007
【図６】
2014075036.tif 000008
【図７】
2014075036.tif 000009