(57)【要約】【課題】不揮発性メモリの長寿命化を図りつつも、同不揮発性メモリに記憶されているデータの信頼性を高めることができる電子制御装置を提供する。【解決手段】ＣＰＵは、各記憶ブロックのうち、前回のデータを書き込んだ前回の記憶ブロックとは異なる今回の記憶ブロックに最新のデータを書き込む書き込み処理と、リングからデータを読み出す読み出し処理とを行う。読み出し処理は、今回の記憶ブロックへのデータの書き込みが正常に完了していると診断される場合（Ｓ２３：ＹＥＳ）、今回の記憶ブロックからデータを読み出す処理（Ｓ２６）と、今回の記憶ブロックへのデータの書き込みが正常に完了していないと診断される場合（Ｓ２３：ＮＯ）、前回の記憶ブロックからデータを読み出す処理（Ｓ２４）とを含む。【選択図】図５
2015225565.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶ブロックに区分けされている不揮発性メモリと、前記記憶ブロックへのデータの書き込み及び同記憶ブロックからのデータの読み出しを行うＣＰＵと、を備える電子制御装置において、
前記ＣＰＵは、
前記各記憶ブロックのうち、前回にデータを書き込んだ前回の記憶ブロックとは異なる今回の記憶ブロックにデータを書き込む書き込み処理と、
前記不揮発性メモリからデータを読み出す読み出し処理と、を行うようになっており、
前記読み出し処理は、
前記今回の記憶ブロックへのデータの書き込みが正常に完了していると診断されるときには、前記今回の記憶ブロックからデータを読み出す処理と、
前記今回の記憶ブロックへのデータの書き込みが正常に完了していないと診断されるときには、前記前回の記憶ブロックからデータを読み出す処理と、を含む
ことを特徴とする電子制御装置。
【請求項２】
前記書き込み処理は、
前記今回の記憶ブロックにデータを書き込む処理と、
同処理の完了後に実施する処理であって、且つ前記前回の記憶ブロックからデータを消去する処理と、を含む
請求項１に記載の電子制御装置。
【請求項３】
前記読み出し処理は、前記今回の記憶ブロックへのデータの書き込みが正常に完了していないと診断されるときに、前記今回の記憶ブロックからデータを消去する処理を含む
請求項２に記載の電子制御装置。
【請求項４】
前記データは、データ本体と、同データ本体の誤り検出符号とを有し、
前記記憶ブロックには、前記データ本体が書き込まれる本体領域と、前記誤り検出符号が書き込まれる符号領域とが設けられ、
前記書き込み処理において前記今回の記憶ブロックにデータを書き込む処理は、
前記データ本体を前記今回の記憶ブロックの前記本体領域に書き込む処理と、
同処理の完了後に実施される処理であって、且つ前記誤り検出符号を前記今回の記憶ブロックの前記符号領域に書き込む処理と、を含む
請求項３に記載の電子制御装置。
【請求項５】
前記書き込み処理は、
前記誤り検出符号を前記符号領域に書き込む処理の完了後に実施する処理であって、且つ同符号領域に書き込まれている前記誤り検出符号を用いて、前記今回の記憶ブロックへのデータの書き込みが正常に完了しているか否かを診断する処理をさらに含み、
前記ＣＰＵは、前記書き込み処理において、前記前回の記憶ブロックからデータを消去する処理を、前記今回の記憶ブロックへのデータの書き込みが正常に完了していると診断した後に実施する
請求項４に記載の電子制御装置。
【請求項６】
前記記憶ブロックには、他の記憶ブロックからのデータの消去が完了した旨の消去情報が書き込まれる消去情報領域がさらに設けられており、
前記書き込み処理は、前記前回の記憶ブロックからデータを消去する処理の完了後に、前記消去情報を前記今回の記憶ブロックの前記消去情報領域に書き込む処理をさらに含み、
前記ＣＰＵは、前記読み出し処理において、前記前回の記憶ブロックからデータを消去する処理を、前記今回の記憶ブロックの前記消去情報領域に前記消去情報が書き込まれていないときに実施するようになっており、
前記読み出し処理は、前記前回の記憶ブロックからのデータの消去の完了後に、前記消去情報を前記今回の記憶ブロックの前記消去情報領域に書き込む処理をさらに含む
請求項５に記載の電子制御装置。
【請求項７】
前記ＣＰＵは、前記書き込み処理に先立って、前記各記憶ブロックへのデータの書き込み回数が均等となるように前記今回の記憶ブロックを前記各記憶ブロックの中から選別する
請求項１〜請求項６のうち何れか一項に記載の電子制御装置。
【請求項８】
前記不揮発性メモリには、複数の前記記憶ブロックで構成されるグループが形成され、
書き込み頻度の高いデータに対応する前記グループほど、同グループを構成する前記記憶ブロックの数が多い
請求項１〜請求項７のうち何れか一項に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリと、同不揮発性メモリへのデータの書き込み及び同不揮発性メモリからのデータの読み出しを行うＣＰＵと、を備える電子制御装置に関する。
【背景技術】
【０００２】
従来、この種の電子制御装置として、例えば特許文献１に記載される車載用の電子制御装置が提案されている。この電子制御装置の不揮発性メモリは、データの書き込み及び読み出しが可能な複数の記憶ブロックに区分けされている。そして、不揮発性メモリにデータを記憶させる場合、ＣＰＵは、各記憶ブロックのうちの１つの記憶ブロックにデータを書き込むとともに、その記憶ブロックに書き込んだデータと同一のデータを、各記憶ブロックのうちの他の記憶ブロックに書き込むようにしている。すなわち、上記の電子制御装置にあっては、１つのデータを２つの記憶ブロックに書き込むことにより、不揮発性メモリに記憶されているデータの信頼性を高めている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−２８９２００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、不揮発性メモリは、データの書き込み回数が増えるほど劣化が進行しやすい。例えば、データの書き込み回数がその制限回数を超えた記憶ブロックでは、データの書き込みが不能となったり、書き込まれたデータを適切に保持できなくなったりすることがある。このため、上記のように１つのデータを２つの記憶ブロックに書き込む場合にあっては、記憶ブロックの劣化が進行しやすくなり、不揮発性メモリの寿命が短くなるおそれがある。
【０００５】
本発明の目的は、不揮発性メモリの長寿命化を図りつつも、同不揮発性メモリに記憶されているデータの信頼性を高めることができる電子制御装置を提供することにある。
【課題を解決するための手段】
【０００６】
以下、上記課題を解決するための手段及びその作用効果について記載する。
上記課題を解決する電子制御装置は、複数の記憶ブロックに区分けされている不揮発性メモリと、記憶ブロックへのデータの書き込み及び同記憶ブロックからのデータの読み出しを行うＣＰＵと、を備える装置を前提としている。この電子制御装置において、ＣＰＵは、各記憶ブロックのうち、前回にデータを書き込んだ前回の記憶ブロックとは異なる今回の記憶ブロックにデータを書き込む書き込み処理と、不揮発性メモリからデータを読み出す読み出し処理と、を行うようになっている。そして、読み出し処理は、上記今回の記憶ブロックへのデータの書き込みが正常に完了していると診断されるときには、上記今回の記憶ブロックからデータを読み出す処理と、上記今回の記憶ブロックへのデータの書き込みが正常に完了していないと診断されるときには、上記前回の記憶ブロックからデータを読み出す処理と、を含む。
【０００７】
上記構成によれば、今回の書き込み処理では、前回の書き込み処理でデータが書き込まれた上記前回の記憶ブロックとは異なる１つの記憶ブロック（上記今回の記憶ブロック）にのみデータが書き込まれる。こうした状態で不揮発性メモリからデータを読み出すに際し、上記今回の記憶ブロックへのデータの書き込みが正常に完了していると診断されるときには、読み出し処理によって、上記今回の記憶ブロックからデータが読み出される。そして、その後にあっては、当該データを参照した制御処理の実施が可能となる。
【０００８】
一方、上記今回の記憶ブロックへのデータの書き込みが正常に完了していないと診断されたときには、上記今回の記憶ブロックに書き込まれたデータが、正常ではない、いわゆる破損データである可能性がある。そのため、上記前回の記憶ブロックからデータ（すなわち、前回のデータ）が読み出される。すなわち、上記前回の記憶ブロックに書き込まれているデータをバックアップデータとして利用することができる。この場合、その後にあっては、上記前回の記憶ブロックから読み出したデータを参照した制御処理の実施が可能となる。
【０００９】
しかも、上記構成では、１つのデータを１つの記憶ブロックにのみ書き込むようにしているため、１つのデータを複数の記憶ブロックに対して重複して書き込む場合と比較して、記憶ブロック単位でのデータの書き込み回数が少なくなり、不揮発性メモリの劣化を遅らせることができる。したがって、不揮発性メモリの長寿命化を図りつつも、同不揮発性メモリに記憶されているデータの信頼性を高めることができるようになる。
【００１０】
なお、ＣＰＵは、書き込み処理において、初期化され、データを含む全ての情報が消去されている記憶ブロックに対し、新たなデータを書き込むようにしている。そのため、データを書き込もうとしている記憶ブロックに以前のデータが未だ残っている場合、当該記憶ブロックを消去した後に、新たなデータが当該記憶ブロックに書き込まれることとなる。この場合、記憶ブロックを初期化するために時間を要するため、当該記憶ブロックへのデータの書き込みが完了するまでに時間を要することとなる。そこで、上記電子制御装置において、書き込み処理は、上記今回の記憶ブロックにデータを書き込む処理と、同処理の完了後に実施する処理であって、且つ上記前回の記憶ブロックからデータを消去する処理と、を含むことが好ましい。
【００１１】
上記構成によれば、書き込み処理が実施された後では、１つの記憶ブロックにのみデータが書き込まれており、当該記憶ブロック以外の記憶ブロックにはデータが書き込まれていない状況とすることができる。そのため、次に書き込み処理を実施する際には、書き込み対象である記憶ブロック（上記今回の記憶ブロック）は既に初期化されており、当該記憶ブロックには既にデータが書き込まれていない。そのため、書き込み処理時にあっては、書き込み対象である記憶ブロックを初期化する処理を実施しなくてもよい分、当該記憶ブロックへの今回のデータの書き込みを速やかに完了させることができるようになる。
【００１２】
ところで、書き込み処理の実施最中に、電子制御装置への給電が遮断されたり、電子制御装置に印加されている電圧が著しく低くなったりすることがある。こうした場合、書き込み処理が強制的に中断され、書き込み処理が正常に完了されないことがある。このように書き込み処理が正常に完了されない場合としては、記憶ブロック（上記今回の記憶ブロック）へのデータの書き込みが途中で中断される場合を挙げることができる。この場合、当該記憶ブロックには、上記破損データ（例えば、途中まで書き込まれたデータ）が書き込まれていることとなる。そのため、次の読み出し処理では、当該記憶ブロックへのデータの書き込みが正常に完了していないと診断されるため、別の記憶ブロック（上記前回の記憶ブロック）からデータが読み出される。
【００１３】
ここで、当該記憶ブロックに上記破損データを残したままにすると、その後、同破損データが残っている記憶ブロックに新たなデータを書き込む際には、当該記憶ブロックに新たなデータを書き込むに先立って、当該記憶ブロックから破損データを消去する必要が生ずる。その結果として、当該記憶ブロックへのデータの書き込みが完了するまでに時間を要することとなる。
【００１４】
そこで、上記電子制御装置において、読み出し処理は、上記今回の記憶ブロックへのデータの書き込みが正常に完了していないと診断されるときに、上記今回の記憶ブロックからデータを消去する処理を含むことが好ましい。この構成によれば、書き込み処理の開始時において、上記今回の記憶ブロックに上記破損データが未だ残っていることがなくなる。そのため、上記今回の記憶ブロックに新たなデータを書き込む際に、当該記憶ブロックから上記破損データを消去する処理を実施しなくてもよい分、当該記憶ブロックへのデータの書き込みを速やかに完了させることができるようになる。
【００１５】
また、上記電子制御装置において、上記データは、データ本体と、同データ本体の誤り検出符号とを有し、記憶ブロックには、データ本体が書き込まれる本体領域と、誤り検出符号が書き込まれる符号領域とを設けるようにしてもよい。この場合、書き込み処理において上記今回の記憶ブロックにデータを書き込む処理は、データ本体を上記今回の記憶ブロックの本体領域に書き込む処理と、同処理の完了後に実施される処理であって、且つ誤り検出符号を上記今回の記憶ブロックの符号領域に書き込む処理と、を含むことが好ましい。
【００１６】
書き込み処理が正常に完了していない場合としては、上記今回の記憶ブロックの本体領域にデータ本体を書き込んでいる最中で、書き込み処理が強制的に終了される場合を挙げることができる。この場合、上記今回の記憶ブロックの符号領域には誤り検出符号が書き込まれていない。そのため、次の読み出し処理では、上記今回の記憶ブロックの符号領域の情報を用いて、同今回の記憶ブロックへのデータの書き込みが正常に完了しているか否かを診断しても、正常に完了していると誤診断されることはない。その結果、上記前回の記憶ブロックの本体領域からデータ本体が読み出されることとなり、上記今回の記憶ブロックの本体領域から上記破損データが読み出されることを抑制することができる。
【００１７】
また、書き込み処理が正常に完了していない場合としては、上記今回の記憶ブロックの符号領域に誤り検出符号を書き込んでいる最中で、書き込み処理が強制的に終了される場合を挙げることもできる。この場合、上記今回の記憶ブロックの符号領域の情報は、正しい誤り検出符号ではない。そのため、次の読み出し処理では、上記今回の記憶ブロックの符号領域の情報（すなわち、正しくない誤り検出符号）を用いて、上記今回の記憶ブロックへのデータの書き込みが正常に完了しているか否かを診断しても、正常に完了していると誤診断されにくい。そして、上記今回の記憶ブロックへのデータの書き込みが正常に完了していないと診断されたときには、上記前回の記憶ブロックの本体領域からデータ本体が読み出されることとなる。
【００１８】
ただし、上記のように上記今回の記憶ブロックの符号領域に誤り検出符号を書き込んでいる最中で、書き込み処理が強制的に終了された場合、上記今回の記憶ブロックの符号領域の情報が、正しい誤り検出符号と偶然に一致することがある。すると、次の読み出し処理時には、上記今回の記憶ブロックへのデータの書き込みが正常に完了していると誤診断され、上記今回の記憶ブロックからデータ本体が読み出される。この場合、上記今回の記憶ブロックの本体領域には、正しいデータ本体が書き込まれているため、上記今回の記憶ブロックの本体領域からデータ本体が読み出されても、問題はない。
【００１９】
また、上記電子制御装置において、書き込み処理は、誤り検出符号を符号領域に書き込む処理の完了後に実施する処理であって、且つ同符号領域に書き込まれている誤り検出符号を用いて、上記今回の記憶ブロックへのデータの書き込みが正常に完了したか否かを診断する処理をさらに含むようにしてもよい。そして、ＣＰＵは、書き込み処理において、上記前回の記憶ブロックからデータを消去する処理を、上記今回の記憶ブロックへのデータの書き込みが正常に完了したと診断した後に実施することが好ましい。
【００２０】
上記構成によれば、上記今回の記憶ブロックへのデータの書き込みが正常に完了していると診断される以前に、上記前回の記憶ブロックからデータが消去されることがなくなる。そのため、上記今回の記憶ブロックへのデータの書き込みが完了するまでは、上記前回の記憶ブロックのデータをバックアップデータとして利用することが可能となる。
【００２１】
また、上記電子制御装置において、記憶ブロックには、他の記憶ブロックからのデータの消去が完了した旨の消去情報が書き込まれる消去情報領域をさらに設けてもよい。そして、書き込み処理は、上記前回の記憶ブロックからデータを消去する処理の完了後に、消去情報を上記今回の記憶ブロックの消去情報領域に書き込む処理をさらに含んでもよい。また、ＣＰＵは、読み出し処理において、上記前回の記憶ブロックからデータを消去する処理を、上記今回の記憶ブロックの消去情報領域に消去情報が書き込まれていないときに実施するようにしてもよい。この場合、読み出し処理は、上記前回の記憶ブロックからのデータの消去の完了後に、消去情報を上記今回の記憶ブロックの消去情報領域に書き込む処理をさらに含むことが好ましい。
【００２２】
上記構成によれば、前回の書き込み処理で上記前回の記憶ブロックからデータを完全に消去できなかった場合には、消去情報が上記今回の記憶ブロックの消去情報領域に書き込まれていない。そのため、次の読み出し処理時には、上記今回の記憶ブロックの消去情報領域に消去情報が書き込まれているか否かに基づき、上記前回の記憶ブロックからデータを消去する処理の実施が必要であるか否かを判断することができるようになる。
【００２３】
また、上記電子制御装置において、ＣＰＵは、書き込み処理に先立って、各記憶ブロックへのデータの書き込み回数が均等となるように上記今回の記憶ブロックを各記憶ブロックの中から選別するようにしてもよい。この構成によれば、一部の記憶ブロックの劣化が、他の記憶ブロックよりも進んでしまうことを抑制することができる。
【００２４】
上記電子制御装置において、不揮発性メモリには、複数の記憶ブロックで構成されるグループが形成され、書き込み頻度の高いデータに対応するグループほど、同グループを構成する記憶ブロックの数を多くしてもよい。この構成では、一部のグループを構成する記憶ブロックの劣化が他のグループを構成する記憶ブロックよりも進んでしまうことが抑制される。したがって、不揮発性メモリの寿命を長くすることができるようになる。
【図面の簡単な説明】
【００２５】
【図１】電子制御装置の一実施形態を示すブロック図。
【図２】ＥＥＰＲＯＭに設けられる複数のリングを示す模式図。
【図３】リングを構成する記憶ブロックの構造を説明する模式図。
【図４】リングのデータを更新する際にＣＰＵが実行する処理ルーチンを示すフローチャート。
【図５】リングからデータを読み出す際にＣＰＵが実行する処理ルーチンを示すフローチャート。
【図６】（ａ）〜（ｅ）は、リングに対してデータを書き込む様子を説明する模式図。
【図７】（ａ），（ｂ）は、記憶ブロックへのデータの書き込みが正常に完了していない場合に、読み出し処理によってリングからデータを読み出す様子を説明する模式図。
【図８】（ａ）〜（ｃ）は、記憶ブロックの初期化が正常に完了していない場合に、読み出し処理によってリングからデータを読み出す様子を説明する模式図。
【発明を実施するための形態】
【００２６】
以下、電子制御装置を具体化した一実施形態について、図面を参照して説明する。なお、電子制御装置としては、例えば、車両に搭載される電子制御装置を挙げることができる。
【００２７】
図１に示すように、電子制御装置１０は、ＣＰＵ１１（中央処理装置）、ＲＡＭ１２、ＲＯＭ１３及びＥＥＰＲＯＭ１４を備えている。ＣＰＵ１１は、ＲＡＭ１２、ＲＯＭ１３及びＥＥＰＲＯＭ１４と、データを送受信するためのバス１５を介して接続されている。こうした電子制御装置１０には、モータなどの制御対象と、同制御対象の状態や車両の走行状態を検出するセンサとが電気的に接続されている。そして、ＣＰＵ１１は、センサからの検出信号に基づいて制御対象を制御する。
【００２８】
ＲＡＭ１２はデータの書き込み及び読み出しが可能な揮発性メモリであり、ＥＥＰＲＯＭ１４はデータの書き込み及び読み出しが可能な不揮発性メモリである。一方、ＲＯＭ１３は、データの書き込みが不能な一方でデータの読み出しが可能なメモリである。このため、ＲＯＭ１３には、時間の経過とともに内容が変化しない制御プログラムなどが記憶される。一方、ＥＥＰＲＯＭ１４には、時間の経過とともに内容が変化する各種のデータ（例えば、学習可能な制御変数やマップ）が記憶される。また、ＲＡＭ１２には、例えば、センサからの検出信号に基づくセンサ値や、ＲＯＭ１３やＥＥＰＲＯＭ１４から読み出された制御プログラムや各種のデータが一時的に記憶される。
【００２９】
また、電子制御装置１０には、同電子制御装置１０に電力を供給する電源装置１６が接続されている。電子制御装置１０と電源装置１６との間には、電源装置１６から電子制御装置１０への給電を許容したり遮断したりするスイッチ１７が設けられている。
【００３０】
次に、図２及び図３を参照して、ＥＥＰＲＯＭ１４におけるデータの書き込み領域について説明する。
ＥＥＰＲＯＭ１４は、データの書き込み及び読み出しが可能な複数の記憶ブロックＭｂに区分けされている。そして、図２に示すように、これら各記憶ブロックＭｂが、グループの一例であるリング２０に振り分けられている。すなわち、各リング２０は、少なくとも２つ以上の記憶ブロックＭｂで構成されている。
【００３１】
なお、本実施形態の電子制御装置１０にあっては、リング２０を構成する記憶ブロックＭｂの数（以下「記憶ブロック数ＮＢ」ともいう。）は、予想されるデータの更新頻度に基づき設定されている。すなわち、更新頻度の高いと予測されるデータ、すなわち書き込み頻度の高いデータが記憶されるリング２０ほど、記憶ブロック数ＮＢが多くなっている。
【００３２】
例えば、図２に示すように、ＥＥＰＲＯＭ１４には、３つのリング２０（２１，２２，２３）が予め形成されているものとする。そして、第３のリング２３に対応するデータの更新頻度が、第１のリング２１に対応するデータの更新頻度や第２のリング２２に対応するデータの更新頻度よりも高いと予測されるため、第３のリング２３の記憶ブロック数ＮＢ（例えば、４つ）は、他のリング２１，２２の記憶ブロック数ＮＢよりも多い。また、第２のリング２２に対応するデータの更新頻度が、第１のリング２１に対応するデータの更新頻度や第３のリング２３に対応するデータの更新頻度よりも低いと予測されるため、第２のリング２２の記憶ブロック数ＮＢ（例えば、２つ）は、他のリング２１，２３の記憶ブロック数ＮＢよりも少ない。
【００３３】
なお、本明細書では、リング２１〜２３を構成する各記憶ブロックＭｂのうち、図２で最も下に位置する第１の記憶ブロックＭｂ１を「先頭の記憶ブロック」ともいう。また、リング２１〜２３を構成する各記憶ブロックＭｂのうち、図２で最も上に位置する記憶ブロックＭｂ（第１のリング２１では第３の記憶ブロックＭｂ３、第２のリング２２では第２の記憶ブロックＭｂ２、第３のリング２３では第４の記憶ブロックＭｂ４）を、「最後尾の記憶ブロック」ともいう。
【００３４】
ここで、あるリング（例えば、第１のリング２１）からのデータの読み出し手順、及び同リングのデータの更新手順の概略について説明する。
基本的には、第１のリング２１を構成する各記憶ブロックＭｂ１〜Ｍｂ３のうち、何れか１つの記憶ブロック（例えば、第１の記憶ブロックＭｂ１）にのみ、データが書き込まれている。そのため、第１のリング２１からデータを読み出す際には、データが書き込まれている記憶ブロックＭｂを特定し、当該記憶ブロックＭｂからデータが読み出される。そして、このようにデータの読み出し処理が完了された後にあっては、当該データ（詳しくは、後述するデータ本体Ｄ１）を用いた制御処理の実施が可能となる。
【００３５】
一方、第１のリング２１のデータを更新する際、最新のデータを書き込む記憶ブロックＭｂが選択される。このとき、各記憶ブロックＭｂのうち何れか１つの記憶ブロック（例えば、第１の記憶ブロックＭｂ１）には、前回のデータが書き込まれている。そして、前回のデータが書き込まれている記憶ブロック以外の他の記憶ブロック（例えば、第２の記憶ブロックＭｂ２）が選択される。すると、選択した記憶ブロックＭｂに最新のデータが書き込まれる。その後、選択した記憶ブロックＭｂに最新のデータが正常に書き込まれると、前回のデータが書き込まれている記憶ブロックＭｂが初期化され、同記憶ブロックＭｂからは、前回のデータを含む全ての情報が消去される。このように前回のデータを含む情報の消去が完了されると、データの書き込み処理が終了される。これにより、書き込み処理の終了後にあっては、リング２０を構成する各記憶ブロックＭｂのうち何れか１つの記憶ブロックのみにデータが書き込まれている状態が作り出される。
【００３６】
なお、１つのリング２０において、最新のデータを書き込む記憶ブロックは、所定のルールに従って選択される。すなわち、前回の書き込み処理時に第Ｎ（Ｎは１以上の整数）の記憶ブロックにデータを書き込んだ場合、今回の書き込み処理を実施するに際し、第Ｎ＋１の記憶ブロックが選択される。ただし、第Ｎの記憶ブロックが上記最後尾の記憶ブロックである場合、今回の書き込み処理を実施するに際し、先頭の記憶ブロックである第１の記憶ブロックＭｂ１が選択される。すなわち、第Ｎの記憶ブロックが、前回にデータを書き込んだ「前回の記憶ブロック」に相当する。また、第Ｎ＋１の記憶ブロックが、「今回の記憶ブロック」に相当する。ただし、前回の記憶ブロックに相当するブロックが最後尾の記憶ブロックである場合、第１の記憶ブロックＭｂ１が「今回の記憶ブロック」に相当することとなる。
【００３７】
次に、記憶ブロックＭｂに書き込まれるデータの構成と、記憶ブロックＭｂの構造とについて説明する。
データには、制御処理の実施時に使用される制御変数やマップ等に該当するデータ本体Ｄ１と、同データ本体Ｄ１の誤り検出符号の一例としてのチェックサムＤ２とが設けられている。チェックサムＤ２は、データ本体Ｄ１の所定の記憶領域への書き込みが正常に完了しているか否かを診断する際に用いられる。
【００３８】
図３に示すように、記憶ブロックＭｂは、データのデータ本体Ｄ１が書き込まれる本体領域Ｓ１と、チェックサムＤ２が書き込まれる符号領域Ｓ２と、他の記憶ブロックに書き込まれていた全ての情報の消去が完了した旨の消去情報Ｄ３が書き込まれる消去情報領域Ｓ３とを含んでいる。例えば、書き込み処理によって第２の記憶ブロックＭｂ２にデータ（すなわち、データ本体Ｄ１とチェックサムＤ２）を書き込んだときには、第１の記憶ブロックＭｂ１に書き込まれている全ての情報が消去される。ここでいう「情報」とは、データ（データ本体Ｄ１及びチェックサムＤ２）と消去情報Ｄ３とを含んでいる。そして、こうした情報の消去が完了した旨の消去情報Ｄ３が第２の記憶ブロックＭｂ２の消去情報領域Ｓ３に書き込まれる。また、以降の説明では、符号領域Ｓ２に書き込まれたチェックサムＤ２と区別するために、本体領域Ｓ１に書き込まれたデータ本体Ｄ１から生成されるチェックサムを「チェックサムＤ２１」ともいう。
【００３９】
次に、図４に示すフローチャートを参照して、あるリング２０のデータを更新する際にＣＰＵ１１が実行する書き込み処理ルーチンについて説明する。例えば、本処理ルーチンは、上記スイッチ１７をオフにし、電子制御装置１０への給電を遮断させる場合に実行される処理ルーチンである。また、本処理ルーチンを、こうした電子制御装置１０への給電を遮断させる場合以外であっても、データの更新が必要な際には適宜実行してもよい。
【００４０】
図４に示すように、本処理ルーチンにおいて、ＣＰＵ１１は、あるリング２０を構成する各記憶ブロックＭｂのうち、データ（前回のデータ）が書き込まれている記憶ブロックＭｂ（前回の記憶ブロック）を特定し、特定した記憶ブロックＭｂのブロック番号Ｎｐを取得する（ステップＳ１１）。例えば、特定した記憶ブロックが第１の記憶ブロックＭｂ１である場合、取得されるブロック番号Ｎｐは「１」である。
【００４１】
続いて、ＣＰＵ１１は、あるリング２０を構成する上記各記憶ブロックＭｂのうち、今回にデータ（最新のデータ）を書き込む記憶ブロックＭｂ（今回の記憶ブロック）を選択し、選択した記憶ブロックＭｂのブロック番号Ｎｒを取得する（ステップＳ１２）。例えば、選択した記憶ブロックが第２の記憶ブロックＭｂ２である場合、取得されるブロック番号Ｎｒは「２」である。
【００４２】
そして、ＣＰＵ１１は、ステップＳ１２で選択した記憶ブロックＭｂ、すなわち第Ｎｒの記憶ブロックが初期化されているか否かを判定する（ステップＳ１３）。すなわち、第Ｎｒの記憶ブロックを構成する本体領域Ｓ１、符号領域Ｓ２及び消去情報領域Ｓ３の全てが初期化されているときには、第Ｎｒの記憶ブロックの全ての情報が消去されていると判定することができる。そして、第Ｎｒの記憶ブロックが初期化されている場合（ステップＳ１３：ＹＥＳ）、ＣＰＵ１１は、その処理を後述するステップＳ１５に移行する。一方、第Ｎｒの記憶ブロックに情報が未だ残っている場合（ステップＳ１３：ＮＯ）、ＣＰＵ１１は、第Ｎｒの記憶ブロックを初期化する（ステップＳ１４）。すなわち、ＣＰＵ１１は、第Ｎｒの記憶ブロックの全ての情報を消去する処理を実施し、消去の完了後に、その処理を次のステップＳ１５に移行する。
【００４３】
そして、ＣＰＵ１１は、最新のデータを第Ｎｒの記憶ブロックに書き込むための書き込み処理を実施する（ステップＳ１５〜Ｓ１９）。
すなわち、ステップＳ１５において、ＣＰＵ１１は、第Ｎｒの記憶ブロックの本体領域Ｓ１に、最新のデータを構成するデータ本体Ｄ１を書き込む処理を実施する。そして、データ本体Ｄ１の書き込み完了後に、ＣＰＵ１１は、第Ｎｒの記憶ブロックの符号領域Ｓ２に対し、最新のデータを構成するチェックサムＤ２を書き込む処理を実施する（ステップＳ１６）。
【００４４】
その後、ＣＰＵ１１は、念のために、第Ｎｒの記憶ブロックへの最新のデータの書き込みが正常に完了しているか否かを診断する処理を実施する（ステップＳ１７）。すなわち、ＣＰＵ１１は、第Ｎｒの記憶ブロックの本体領域Ｓ１に書き込んだデータ本体Ｄ１からチェックサムＤ２１を生成し、このチェックサムＤ２１と、第Ｎｒの記憶ブロックの符号領域Ｓ２に書き込まれているチェックサムＤ２とを比較する。そして、ＣＰＵ１１は、チェックサムＤ２１とチェックサムＤ２とが一致しているときにはデータの書き込みが正常に完了していると診断する。一方、ＣＰＵ１１は、チェックサムＤ２１とチェックサムＤ２とが不一致であるときにはデータの書き込みが正常に完了していない、すなわち本体領域Ｓ１に書き込まれている情報が破損したデータであると診断する。
【００４５】
そして、第Ｎｒの記憶ブロックへのデータの書き込みが正常に完了していないと診断した場合（ステップＳ１７：ＮＯ）、ＣＰＵ１１は、その処理を先のステップＳ１３に移行する。すなわち、ＣＰＵ１１は、第Ｎｒの記憶ブロックへのデータの書き込みを再度実施する。一方、第Ｎｒの記憶ブロックへのデータの書き込みが正常に完了していると診断した場合（ステップＳ１７：ＹＥＳ）、ＣＰＵ１１は、その処理を次のステップＳ１８に移行する。
【００４６】
ステップＳ１８において、ＣＰＵ１１は、第Ｎｐの記憶ブロックを初期化し、第Ｎｐの記憶ブロックの全ての情報、すなわちデータ本体Ｄ１、チェックサムＤ２及び消去情報Ｄ３を消去する処理を実施する。続いて、第Ｎｐの記憶ブロックからの情報の消去の完了後に、ＣＰＵ１１は、第Ｎｒの記憶ブロックの消去情報領域Ｓ３に消去情報Ｄ３を書き込む処理を実施する（ステップＳ１９）。そして、同処理の終了後に、ＣＰＵ１１は、本処理ルーチンを終了する。
【００４７】
次に、図５に示すフローチャートを参照して、あるリング２０からデータを読み出す際にＣＰＵ１１が実行する処理ルーチンについて説明する。例えば、本処理ルーチンは、スイッチ１７がオンにされ、電子制御装置１０に対する給電が開始される際などに実行される。また、本処理ルーチンは、こうした電子制御装置１０への給電の開始時以外であっても、データの読み出しが必要な際には適宜実行してもよい。
【００４８】
図５に示すように、本処理ルーチンにおいて、ＣＰＵ１１は、あるリング２０を構成する上記各記憶ブロックＭｂのうち、最新のデータが書き込まれていると予測される記憶ブロックＭｂ（今回の記憶ブロック）を特定し、特定した記憶ブロックＭｂのブロック番号Ｎｒを取得する（ステップＳ２１）。すなわち、リング２０を構成する各記憶ブロックＭｂのうち何れか１つの記憶ブロックにのみ情報が残っている場合、その唯一の記憶ブロックが特定される。また、２つの記憶ブロックＭｂに情報が残っている場合、付されている番号の大きい記憶ブロックが特定される。ただし、最後尾の記憶ブロックと先頭の記憶ブロックとの双方に情報が残っている場合、先頭の記憶ブロックが選択される。そして、例えば、選択した記憶ブロックが第２の記憶ブロックＭｂ２である場合、ブロック番号Ｎｒは「２」である。
【００４９】
続いて、ＣＰＵ１１は、上記各記憶ブロックＭｂのうち、バックアップデータが書き込まれている可能性のある記憶ブロックＭｂ（前回の記憶ブロック）を特定し、特定した記憶ブロックＭｂのブロック番号Ｎｐを取得する（ステップＳ２２）。例えば、第Ｎｒ−１の記憶ブロックが、バックアップデータが書き込まれている可能性のある記憶ブロックとして特定される。ただし、ステップＳ２１で取得したブロック番号Ｎｒが「１」である場合、最後尾の記憶ブロックが、バックアップデータが書き込まれている可能性のある記憶ブロックとして特定される。そして、特定した記憶ブロックが第１の記憶ブロックＭｂ１である場合、取得されるブロック番号Ｎｐは「１」である。
【００５０】
そして、ＣＰＵ１１は、あるリング２０からデータ本体Ｄ１を読み出す読み出し処理を実施する（ステップＳ２３〜Ｓ２９）。
すなわち、ＣＰＵ１１は、第Ｎｒの記憶ブロックへのデータの書き込みが正常に完了しているか否かを診断する（ステップＳ２３）。すなわち、ＣＰＵ１１は、第Ｎｒの記憶ブロックの本体領域Ｓ１に書き込まれているデータ本体Ｄ１からチェックサムＤ２１を生成し、このチェックサムＤ２１と、第Ｎｒの記憶ブロックの符号領域Ｓ２に書き込まれているチェックサムＤ２とを比較する。そして、ＣＰＵ１１は、チェックサムＤ２１とチェックサムＤ２とが一致しているときにはデータの書き込みが正常に完了していると診断する。一方、ＣＰＵ１１は、チェックサムＤ２１とチェックサムＤ２とが不一致であるときにはデータの書き込みが正常に完了していない、すなわち第Ｎｒの記憶ブロックには破損したデータが残っていると診断する。
【００５１】
そして、第Ｎｒの記憶ブロックへのデータの書き込みが正常に完了していないと診断した場合（ステップＳ２３：ＮＯ）、ＣＰＵ１１は、第Ｎｐの記憶ブロックの本体領域Ｓ１からデータ本体Ｄ１（バックアップデータ）を読み出す処理を実施する（ステップＳ２４）。そして、データ本体Ｄ１の読み出しの完了後に、ＣＰＵ１１は、第Ｎｒの記憶ブロックを初期化する（ステップＳ２５）。すなわち、ＣＰＵ１１は、第Ｎｒの記憶ブロックの全ての情報を消去する処理を実施し、情報の消去の完了後、本処理ルーチンを終了する。
【００５２】
一方、先のステップＳ２３において、第Ｎｒの記憶ブロックへのデータの書き込みが正常に完了していると診断した場合（ステップＳ２３：ＹＥＳ）、ＣＰＵ１１は、第Ｎｒの記憶ブロックの本体領域Ｓ１からデータ本体Ｄ１を読み出す処理を実施する（ステップＳ２６）。そして、データ本体Ｄ１の読み出しの完了後に、ＣＰＵ１１は、第Ｎｒの記憶ブロックの消去情報領域Ｓ３に消去情報Ｄ３が書き込まれているか否かを判定する（ステップＳ２７）。このとき、ＣＰＵ１１は、消去情報Ｄ３が書き込まれている場合、第Ｎｐの記憶ブロックの初期化、すなわち第Ｎｐの記憶ブロックの全ての情報の消去が完了していると判断することができる。一方、消去情報Ｄ３が書き込まれていない場合、第Ｎｐの記憶ブロックの初期化が完了しておらず、全ての情報の消去が完了していないと判断することができる。
【００５３】
そのため、消去情報Ｄ３が書き込まれている場合（ステップＳ２７：ＹＥＳ）、ＣＰＵ１１は、本処理ルーチンを終了する。一方、消去情報Ｄ３が書き込まれていない場合（ステップＳ２７：ＮＯ）、ＣＰＵ１１は、第Ｎｐの記憶ブロックを初期化し（ステップＳ２８）、第Ｎｐの記憶ブロックの全ての情報を消去する処理を実施する。そして、ＣＰＵ１１は、第Ｎｐの記憶ブロックからの情報の消去の完了後に、第Ｎｒの記憶ブロックの消去情報領域Ｓ３に消去情報Ｄ３を書き込む処理を実施し（ステップＳ２９）、消去情報Ｄ３の書き込み完了後に、本処理ルーチンを終了する。
【００５４】
次に、図６〜図８を参照して、あるリング２０のデータの更新時及び同リング２０からのデータの読み出し時における電子制御装置１０の作用について説明する。
まず、図６を参照して、データの書き込み処理と、そのデータの書き込み処理が正常に完了した場合におけるデータの読み出し処理とについて説明する。なお、図６において、前回のデータは、第１の記憶ブロックＭｂ１に書き込まれているものとする。
【００５５】
図６（ａ），（ｂ），（ｃ），（ｄ），（ｅ）に示すように、データの書き込み処理時には、前回のデータが書き込まれている記憶ブロック（前回の記憶ブロック）として第１の記憶ブロックＭｂ１が特定される（ステップＳ１１）。続いて、最新のデータを書き込む記憶ブロック（今回の記憶ブロック）として第２の記憶ブロックＭｂ２が選択される（ステップＳ１２）。
【００５６】
なお、今回の記憶ブロックとして選択された第２の記憶ブロックＭｂ２は、既に初期化されている（ステップＳ１３：ＹＥＳ）。そのため、この第２の記憶ブロックＭｂ２には、情報（例えば、以前に書き込まれたデータ）が全く残っていない。
【００５７】
すると、図６（ｂ）に示すように、第２の記憶ブロックＭｂ２の本体領域Ｓ１に、最新のデータを構成するデータ本体Ｄ１が書き込まれ（ステップＳ１５）、データ本体Ｄ１の書き込み完了後に、第２の記憶ブロックＭｂ２の符号領域Ｓ２に、同データ本体Ｄ１のチェックサムＤ２が書き込まれる（ステップＳ１６）。そして、チェックサムＤ２の書き込み完了後では、図６（ｃ）に示すように、第１の記憶ブロックＭｂ１が初期化され（ステップＳ１８）、第１の記憶ブロックＭｂ１の全ての情報（データ本体Ｄ１、チェックサムＤ２及び消去情報Ｄ３）が消去される。すると、図６（ｄ）に示すように、第２の記憶ブロックＭｂ２の消去情報領域Ｓ３に消去情報Ｄ３が書き込まれる（ステップＳ１９）。こうして、リング２０に対する最新のデータの書き込み処理が完了する。
【００５８】
その後のデータの読み出し処理時には、最新のデータが書き込まれている記憶ブロック（今回の記憶ブロック）として、第２の記憶ブロックＭｂ２が特定される（ステップＳ２１）。すると、第２の記憶ブロックＭｂ２の符号領域Ｓ２に書き込まれているチェックサムＤ２を用い、第２の記憶ブロックＭｂ２へのデータの書き込みが正常に完了しているか否かが診断される（ステップＳ２３）。そして、第２の記憶ブロックＭｂ２へのデータの書き込みが正常に完了していると診断されると（ステップＳ２３：ＹＥＳ）、第２の記憶ブロックＭｂ２からデータ本体Ｄ１が読み出される（ステップＳ２６）。すると、その後にあっては、このデータ本体Ｄ１を参照した制御処理の実施が可能となる。
【００５９】
なお、この場合、第２の記憶ブロックＭｂ２の消去情報領域Ｓ３に消去情報Ｄ３が書き込まれていることから（ステップＳ２７：ＹＥＳ）、第１の記憶ブロックＭｂ１の全ての情報は既に消去されている。そのため、第２の記憶ブロックＭｂ２からのデータ本体Ｄ１の読み出し完了後に、第１の記憶ブロックＭｂ１を初期化する処理が実施されない。
【００６０】
そして、図６（ｄ）に示すように、リング２０を構成する各記憶ブロックＭｂ１〜Ｍｂ３のうち、第２の記憶ブロックＭｂ２にのみデータが書き込まれているときに、新たに書き込み処理が実施されることがある。この場合、図６（ｅ）に示すように、第２の記憶ブロックＭｂ２には前回のデータが書き込まれているため、最新のデータを書き込む記憶ブロックとして、第３の記憶ブロックＭｂ３が選択される（ステップＳ１２）。すると、第３の記憶ブロックＭｂ３に最新のデータが書き込まれ（ステップＳ１５，Ｓ１６）、第２の記憶ブロックＭｂ２が初期化される（ステップＳ１７）。
【００６１】
次に、図７及び図８を参照して、第２の記憶ブロックＭｂ２に対するデータの書き込み処理が正常に完了していない状況下で、データの読み出し処理を実施する場合の作用について説明する。なお、書き込み処理が正常に完了されない場合としては、同処理の実施最中に、電子制御装置１０への給電が遮断されたり電子制御装置１０に印加されている電圧が著しく低くなったりすることで、当該処理が中断される場合を挙げることができる。
【００６２】
そして、書き込み処理が中断される場合としては、記憶ブロックＭｂの符号領域Ｓ２へのチェックサムＤ２の書き込みが中断される場合を挙げることができる。この場合、図７（ａ）に示すように、第２の記憶ブロックＭｂ２の本体領域Ｓ１へのデータ本体Ｄ１の書き込みは正常に完了している一方、第２の記憶ブロックＭｂ２の符号領域Ｓ２のチェックサムＤ２は、正しくないデータ、すなわち破損したデータである。
【００６３】
図７（ａ），（ｂ）に示すように、最新のデータの書き込みが行われた第２の記憶ブロックＭｂ２（今回の記憶ブロック）と、前回のデータが書き込まれている第１の記憶ブロックＭｂ１とが特定される（ステップＳ２１，Ｓ２２）。そして、データの読み出し処理時には、第２の記憶ブロックＭｂ２の符号領域Ｓ２に書き込まれている情報（すなわち、破損したデータ）をチェックサムＤ２とし、第２の記憶ブロックＭｂ２へのデータの書き込みが正常に完了しているか否かが診断される（ステップＳ２３）。
【００６４】
この場合、図７（ａ）に示すように、第２の記憶ブロックＭｂ２の情報は、正しいチェックサムＤ２ではないため、第２の記憶ブロックＭｂ２へのデータの書き込みが正常に完了していないと診断される可能性が高い。そして、このように第２の記憶ブロックＭｂ２へのデータの書き込みが正常に完了していないと診断されると（ステップＳ２３：ＮＯ）、第１の記憶ブロックＭｂ１からデータ本体Ｄ１が読み出される（ステップＳ２４）。続いて、図７（ｂ）に示すように、第２の記憶ブロックＭｂ２が初期化される（ステップＳ２５）。そして、その後にあっては、第１の記憶ブロックＭｂ１から読み出されたデータ本体Ｄ１を用いた制御処理の実施が可能となる。
【００６５】
ところで、第２の記憶ブロックＭｂ２に書き込まれている情報が、破損したチェックサムである場合、この破損しているチェックサムと、第２の記憶ブロックＭｂ２の本体領域Ｓ１に書き込まれているデータ本体Ｄ１から生成したチェックサムＤ２１とが、偶然に一致することもある。この場合、第２の記憶ブロックＭｂ２へのデータの書き込みが正常に完了していると診断されるため（ステップＳ２３：ＹＥＳ）、第１の記憶ブロックＭｂ１からではなく、第２の記憶ブロックＭｂ２からデータ本体Ｄ１が読み出されることとなる（ステップＳ２６）。また、この場合、第２の記憶ブロックＭｂ２へのデータ本体Ｄ１の書き込み自体は、実際には正常に完了している。すなわち、第２の記憶ブロックＭｂ２から読み出したデータ本体Ｄ１は正常なデータである。そのため、第２の記憶ブロックＭｂ２から読み出したデータ本体Ｄ１を用いることにより、制御処理が適切に実施される。
【００６６】
また、書き込み処理が中断される場合としては、第２の記憶ブロックＭｂ２の本体領域Ｓ１へのデータ本体Ｄ１の書き込みが中断される場合を挙げることもできる。この場合、第２の記憶ブロックＭｂ２の符号領域Ｓ２にはチェックサムＤ２が書き込まれていない。すなわち、符号領域Ｓ２は初期化されたままである。そのため、次の読み出し処理時にあっては、第２の記憶ブロックＭｂ２の符号領域Ｓ２から読み出した情報をチェックサムＤ２として用い、第２の記憶ブロックＭｂ２へのデータの書き込みが正常に完了しているか否かを診断しても、正常に完了していると診断されることはない（ステップＳ２３：ＮＯ）。そのため、第１の記憶ブロックＭｂ１からデータ本体Ｄ１が読み出され（ステップＳ２４）、第２の記憶ブロックＭｂ２が初期化される（ステップＳ２５）。
【００６７】
さらに、書き込み処理が中断される場合としては、第１の記憶ブロックＭｂ１を初期化する処理が途中で中断される場合を挙げることもできる。この場合、第２の記憶ブロックＭｂ２からデータ本体Ｄ１を読み出す読み出し処理時にあっては、図８（ａ）に示すように、第２の記憶ブロックＭｂ２の消去情報領域Ｓ３には、消去情報Ｄ３が書き込まれていない。その一方で、第２の記憶ブロックＭｂ２へのデータ本体Ｄ１及びチェックサムＤ２の書き込みが正常に完了している。
【００６８】
そのため、第２の記憶ブロックＭｂ２の符号領域Ｓ２に書き込まれているチェックサムＤ２を用いることにより、第２の記憶ブロックＭｂ２へのデータの書き込みが正常に完了していると診断される（ステップＳ２３：ＹＥＳ）。その結果、第２の記憶ブロックＭｂ２からデータ本体Ｄ１が読み出される（ステップＳ２６）。これにより、以降にあっては、第２の記憶ブロックＭｂ２から読み出したデータ本体Ｄ１を用いた制御処理の実施が可能となる。
【００６９】
また、第２の記憶ブロックＭｂ２からのデータ本体Ｄ１の読み出しの完了後にあっては、第２の記憶ブロックＭｂ２の消去情報領域Ｓ３に消去情報Ｄ３が記憶されていないため（ステップＳ２７：ＮＯ）、図８（ｂ）に示すように、第１の記憶ブロックＭｂ１が初期化される（ステップＳ２８）。そして、図８（ｃ）に示すように、第２の記憶ブロックＭｂ２の消去情報領域Ｓ３には、第１の記憶ブロックＭｂ１の全ての情報の消去が完了した旨を示す消去情報Ｄ３が書き込まれる（ステップＳ２９）。
【００７０】
以上説明した実施形態によれば、以下に示す効果を得ることができる。
（１）リング２０に最新のデータを書き込む場合にあっては、リング２０を構成する各記憶ブロックＭｂのうち、前回のデータが書き込まれている記憶ブロック（前回の記憶ブロック）とは別の記憶ブロックＭｂ（今回の記憶ブロック）が１つだけ選択される。そして、この選択した記憶ブロックＭｂにデータが書き込まれる。これにより、１つのデータを複数の記憶ブロックＭｂに対して重複して書き込む場合と比較して、記憶ブロックＭｂ単位でのデータの書き込み回数が少なくなり、ＥＥＰＲＯＭ１４の劣化を遅らせることができる。
【００７１】
また、その後に、リング２０からデータ（具体的には、データ本体Ｄ１）を読み出す場合にあっては、最新のデータが書き込まれている記憶ブロックＭｂを特定し、この記憶ブロックＭｂへのデータの書き込みが正常に完了しているか否かが診断される。そして、正常に完了していると診断したときには、当該記憶ブロックＭｂからデータ本体Ｄ１が読み出される。一方、正常に完了していないと診断したときには、上記前回の記憶ブロックからデータ本体Ｄ１が読み出される。すなわち、上記前回の記憶ブロックに書き込まれているデータ本体Ｄ１をバックアップデータとして用いることができる。したがって、ＥＥＰＲＯＭ１４の長寿命化を図りつつも、同ＥＥＰＲＯＭ１４に記憶されているデータの信頼性を高めることができる。
【００７２】
（２）書き込み処理では、今回の記憶ブロックへのデータ本体Ｄ１及びチェックサムＤ２の書き込みが完了した後に、前回の記憶ブロックが初期化される。このため、書き込み処理が正常に完了した後にあっては、１つの記憶ブロックＭｂにのみデータが書き込まれており、当該記憶ブロックＭｂ以外の記憶ブロックＭｂには情報が何ら残っていない状態となりやすい。そして、このように当該記憶ブロックＭｂ以外の記憶ブロックＭｂには情報が何ら残っていない場合、次に書き込み処理を実施する際には、書き込み対象となる記憶ブロックＭｂを初期化することなく、記憶ブロックＭｂへの今回のデータの書き込みを開始させることができる。したがって、記憶ブロックＭｂへのデータの書き込みを速やかに完了させることができる。
【００７３】
（３）ただし、書き込み処理が正常に完了されない場合、書き込み対象とされていた記憶ブロックＭｂ（今回の記憶ブロック）に破損したデータが残る場合がある。そこで、読み出し処理では、今回の記憶ブロックへのデータの書き込みが正常に完了していないと診断されるときには、前回の記憶ブロックからデータ本体Ｄ１を読み出すことに加え、今回の記憶ブロックを初期化する処理も実施するようにした。これにより、書き込み処理の開始時において、上記今回の記憶ブロックに上記破損したデータが未だ残っていることがなくなる。そのため、上記今回の記憶ブロックに新たなデータを書き込む際に、当該記憶ブロックから上記破損したデータを消去する処理を実施しなくてもよい分、当該記憶ブロックＭｂへのデータの書き込みを速やかに完了させることができる。
【００７４】
（４）書き込み処理では、データ本体Ｄ１を本体領域Ｓ１に書き込み、その後、チェックサムＤ２を符号領域Ｓ２に書き込むようにした。このため、本体領域Ｓ１にデータ本体Ｄ１を書き込んでいる最中に書き込み処理が中断される場合や、符号領域Ｓ２にチェックサムＤ２を書き込んでいる最中に書き込み処理が中断される場合には、符号領域Ｓ２に書き込まれたチェックサムを用いた診断を行うことにより、記憶ブロックＭｂへのデータの書き込みが正常に完了していないと診断される。その結果、当該記憶ブロックＭｂからデータ本体Ｄ１が読み出されることを抑制することができる。
【００７５】
なお、符号領域Ｓ２へのチェックサムＤ２の書き込みが中断された場合にあっては、書き込み途中のチェックサムを用いた診断によって、記憶ブロックへのデータの書き込みが正常に完了していると誤診断されることがある。この場合、記憶ブロックＭｂに書き込まれているデータ本体Ｄ１自体は正常であるため、当該記憶ブロックＭｂからデータ本体Ｄ１が読み出されても問題は生じない。
【００７６】
（５）書き込み処理では、今回の記憶ブロックへのデータの書き込みが正常に完了していることが確認された上で、前回の記憶ブロックが初期化される。言い換えると、今回の記憶ブロックへのデータの書き込みが正常に完了していることが確認されるまでは、前回の記憶ブロックのデータ本体Ｄ１をバックアップデータとして利用することができる。
【００７７】
（６）書き込み処理では、今回の記憶ブロックへのデータ本体Ｄ１及びチェックサムＤ２の書き込みの完了後に、前回の記憶ブロックを初期化し、その後、今回の記憶ブロックの消去情報領域Ｓ３に消去情報Ｄ３が書き込まれる。そのため、次の読み出し処理時には、今回の記憶ブロックの消去情報領域Ｓ３に消去情報Ｄ３が書き込まれているか否かによって、前回の記憶ブロックを初期化する処理の実施が必要であるか否かを判断することができる。
【００７８】
（７）書き込み処理に先立って、各記憶ブロックＭｂへのデータの書き込み回数が均等となるように、最新のデータを書き込む記憶ブロックが選択される。そのため、一部の記憶ブロックＭｂの劣化が、他の記憶ブロックＭｂよりも進んでしまうことを抑制することができる。
【００７９】
（８）リング２０の記憶ブロック数ＮＢは、リング２０に対応するデータの更新頻度の予測に応じて決定されている。そのため、一部のリング２０を構成する記憶ブロックＭｂの劣化が他のリング２０を構成する記憶ブロックＭｂよりも進んでしまうことが抑制される。したがって、ＥＥＰＲＯＭ１４の寿命を長くすることができる。
【００８０】
なお、上記実施形態は、以下に示す他の実施形態に変更してもよい。
・書き込み処理では、記憶ブロックＭｂへの最新のデータの書き込みが完了した後に、前回のデータが書き込まれている記憶ブロックＭｂ（前回の記憶ブロック）を初期化する処理を実施しなくてもよい。この場合、前回の記憶ブロックには情報が残ったままとなるが、当該記憶ブロックＭｂにデータを書き込む書き込み処理を実施する際には、当該記憶ブロックＭｂを初期化する処理を実施した上で（ステップＳ１４）、当該記憶ブロックＭｂにデータが書き込まれることとなる（ステップＳ１５，Ｓ１６）。なお、こうした制御構成を採用する場合、記憶ブロックＭｂに消去情報領域Ｓ３を設けなくてもよい。
【００８１】
・書き込み処理において、記憶ブロックＭｂの符号領域Ｓ２にチェックサムＤ２を書き込む処理（ステップＳ１６）を、同記憶ブロックＭｂの本体領域Ｓ１にデータ本体Ｄ１を書き込む処理（ステップＳ１５）よりも先に実施するようにしてもよい。
【００８２】
・通常、定められた手順に従って書き込み処理が実施されれば、データは正常に記憶ブロックＭｂに書き込まれる。このため、書き込み処理において、記憶ブロックＭｂへのデータ本体Ｄ１及びチェックサムＤ２の書き込み完了後に、当該記憶ブロックＭｂへのデータの書き込みが正常に完了しているか否かを診断することなく、前回のデータが書き込まれている記憶ブロックＭｂ（前回の記憶ブロック）を初期化する処理を実施するようにしてもよい。また、データの書き込み完了後に、記憶ブロックＭｂへデータの書き込みが正常に完了しているか否かを診断しない場合には、データの書き込み後、前回の記憶ブロックを必ず初期化することにより、データの書き込み前の記憶ブロックが初期化されているか否かの判定処理（ステップＳ１３）を省略するようにしてもよい。
【００８３】
・読み出し処理では、最新のデータが書き込まれている記憶ブロックＭｂ（今回の記憶ブロック）へのデータの書き込みが正常に完了していないと診断された場合（ステップＳ２３：ＮＯ）、当該記憶ブロックＭｂを初期化する処理を実施しなくてもよい。この場合、書き込み処理を実施するに際し、当該記憶ブロックＭｂが選択された場合、当該記憶ブロックＭｂを初期化する処理（ステップＳ１４）を実施した上で、当該記憶ブロックＭｂにデータが書き込まれることとなる（ステップＳ１５，Ｓ１６）。
【００８４】
・記憶ブロックＭｂへのデータの書き込みが正常に完了しているか否かの診断を、チェックサムＤ２によるデータの誤り検出以外の方法で診断するようにしてもよい。例えば、こうした診断方法としては、パリティチェックによるデータの誤り検出やＣＲＣ（巡回冗長検査）によるデータの誤り検出などを挙げることができる。
【００８５】
・チェックサムＤ２などの誤り検出符号を用いることなく、記憶ブロックＭｂへのデータの書き込みが正常に完了しているか否かを診断することができるのであれば、記憶ブロックＭｂに符号領域Ｓ２を設けなくてもよい。
【００８６】
・最新のデータを書き込むに際し、前回のデータが書き込まれている記憶ブロックＭｂとは異なる他の記憶ブロックＭｂを選択するのであれば、記憶ブロックＭｂ毎のデータの書き込み回数に偏りが生じるようなルールに従って、今回の書き込み対象の記憶ブロックＭｂを選択するようにしてもよい。
【００８７】
・複数の記憶ブロックＭｂへのデータの書き込み回数が均等となるのであれば、リング２０を構成する記憶ブロックＭｂに対するデータの書き込み順序は、適宜変更してもよい。一例として、乱数を用いて、最新のデータを書き込む記憶ブロックＭｂを選択するようにしてもよい。
【００８８】
・リング２０の記憶ブロック数ＮＢを、設計段階で予測されるリング２０毎のデータの更新頻度に加え、データの重要度を考慮して決定するようにしてもよい。この場合、予測されるデータの更新頻度が同等であっても、書き込まれるデータの重要度の高いリング２０の記憶ブロック数ＮＢは、書き込まれるデータの重要度の低いリング２０の記憶ブロック数ＮＢよりも多くなる。
【００８９】
・各リング２０の記憶ブロック数ＮＢは、予測されるデータの更新頻度などとは関係なく同じ数であってもよい。
・記憶ブロックＭｂの記憶容量を、振り分けられているリング２０毎に異ならせるようにしてもよい。
【００９０】
・電子制御装置１０は、ＥＥＰＲＯＭ１４以外の不揮発性メモリ（例えば、フラッシュメモリ）を備える装置であってもよい。そして、ＥＥＰＲＯＭ１４以外の不揮発性メモリへのデータの書き込み時及び同メモリからのデータの読み出し時には、上記実施形態でのＥＥＰＲＯＭ１４へのデータの書き込み時やＥＥＰＲＯＭ１４からのデータの読み出し時と同等の処理を実施するようにしてもよい。
【符号の説明】
【００９１】
１０…電子制御装置、１１…ＣＰＵ、１４…ＥＥＰＲＯＭ（不揮発性メモリの一例）、２０…リング（グループの一例）、Ｍｂ…記憶ブロック、Ｄ１…データ本体、Ｄ２…チェックサム（誤り検出符号の一例）、Ｄ３…消去情報、Ｓ１…本体領域、Ｓ２…符号領域、Ｓ３…消去情報領域。
【図１】
2015225565.tif 000003
【図２】
2015225565.tif 000004
【図３】
2015225565.tif 000005
【図４】
2015225565.tif 000006
【図５】
2015225565.tif 000007
【図６】
2015225565.tif 000008
【図７】
2015225565.tif 000009
【図８】
2015225565.tif 000010