(57)【要約】【課題】記憶領域を過分に増加させることを抑制しつつ、しかも書き込み異常が生じた場合にデータ修復を可能とする。【解決手段】ＣＰＵからの読み出し要求に応じて、前回のカウンタ値ＣＮ（01111111）がカウンタ値ＲＡＭＣＮとしてＲＡＭ上に読み出される（段階［１］）。次に、カウンタ値ＲＡＭＣＮに対して加算演算（＋３演算）が行われる（段階［２］）。その後、加算演算後のカウンタ値ＲＡＭＣＮ（10000010）がＥＥＰＲＯＭのサブ保存領域にカウンタ値ＣＰＣＮとして書き込まれ（段階［３］）、次に、加算演算後のカウンタ値ＲＡＭＣＮについて所定ビット位置の値がエラー判定ビットＥＲＲに書き込まれる（段階［４］）。さらに、加算演算後のカウンタ値ＲＡＭＣＮ（10000010）がＥＥＰＲＯＭのメイン保存領域にカウンタ値ＣＮとして書き込まれる（段階［５］）。【選択図】      図４
2008077135.tif 000002
【特許請求の範囲】
【請求項１】
電源供給の有無に関係なくデータを継続的に記憶保持でき、かつデータの書き換えが可能な不揮発性メモリと、
あらかじめ定めた加算分又は減算分を加算又は減算するカウンタ処理を実行してそのカウンタ値を前記不揮発性メモリに逐次書き込む演算手段と、
を備えた演算処理装置であって、
前記不揮発性メモリに、前記カウンタ処理による加減算後のカウンタ値を継続的に保存するための第１記憶領域と、同加減算後のカウンタ値を仮保存するための第２記憶領域と、同加減算後のカウンタ値について所定ビットの値をエラー判定データとして記憶するためのエラーデータ記憶領域とを設け、
前記演算手段は、
前記カウンタ処理によるカウンタ値の加減算を実行した後、
（１）加減算後のカウンタ値を前記第２記憶領域に書き込む処理、
（２）前記エラー判定データを前記エラーデータ記憶領域に書き込む処理、
（３）加減算後のカウンタ値を前記第１記憶領域に書き込む処理、
を（１）、（２）、（３）の順序にて行う書き込み手段と、
次回のデータ読み出しに際し、前記第１記憶領域に記憶されているカウンタ値の所定ビットの値と、前記エラーデータ記憶領域に記憶されているエラー判定データとを照合する照合手段と、
前記照合手段による照合結果に基づき、前記第２記憶領域に仮保存したカウンタ値によるデータ修復を行うデータ修復手段と、
を備えたことを特徴とする演算処理装置。
【請求項２】
前記カウンタ処理の対象として複数のカウンタ値を設定しておき、そのカウンタ値を個別に前記不揮発性メモリに記憶保持する演算処理装置であって、
前記第１記憶領域を前記複数のカウンタ値ごとに複数設ける一方、前記第２記憶領域を共通の仮保存領域として設けた請求項１に記載の演算処理装置。
【請求項３】
前記エラー判定データは１ビットデータである請求項１又は２に記載の演算処理装置。
【請求項４】
２進値のカウンタ処理を実行する演算処理装置であって、
前記カウンタ処理における加算分又は減算分を２進表記した場合に「１」が出現する最下位ビットの位置をｎとし、前記加減算後のカウンタ値においてｎビット位置の値を前記エラー判定データとして前記エラーデータ記憶領域に書き込むとともに、データ読み出しに際し、前記第１記憶領域に記憶されているカウンタ値のｎビット位置の値と、前記エラー判定データとを照合する請求項１乃至３のいずれかに記載の演算処理装置。
【請求項５】
あらかじめ定めた加算分又は減算分を加算又は減算するカウンタ処理を実行し、そのカウンタ値を、電源供給の有無に関係なくデータを継続的に記憶保持できかつデータの書き換えが可能な不揮発性メモリに逐次書き込むカウンタ値演算方法であって、
前記不揮発性メモリに、前記カウンタ処理による加減算後のカウンタ値を継続的に保存するための第１記憶領域と、同加減算後のカウンタ値を仮保存するための第２記憶領域と、同加減算後のカウンタ値について所定ビットの値をエラー判定データとして記憶するためのエラーデータ記憶領域とを設けておき、
前記カウンタ処理によるカウンタ値の加減算を実行した後、
（１）加減算後のカウンタ値を前記第２記憶領域に書き込む処理、
（２）前記エラー判定データを前記エラーデータ記憶領域に書き込む処理、
（３）加減算後のカウンタ値を前記第１記憶領域に書き込む処理、
を（１）、（２）、（３）の順序にて行い、
次回のデータ読み出しに際し、前記第１記憶領域に記憶されているカウンタ値の所定ビットの値と、前記エラーデータ記憶領域に記憶されているエラー判定データとを照合し、
前記照合手段による照合結果に基づき、前記第２記憶領域に仮保存したカウンタ値によるデータ修復を行うことを特徴とするカウンタ値演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、あらかじめ定めた加算分又は減算分を加算又は減算するカウンタ処理を実行し、そのカウンタ値を、ＥＥＰＲＯＭ等の不揮発性メモリに逐次書き込むようにした演算処理装置、及びカウンタ値演算方法に関する。
【背景技術】
【０００２】
例えば車両用の電子制御装置（ＥＣＵ）においては、電源からの給電の有無にかかわらず内部データを記憶保持（保存）できるＥＥＰＲＯＭ等の不揮発性メモリを有するものがあり、同不揮発性メモリを用いることにより、過去の制御等に基づいて算出された学習値、ＥＣＵ起動回数や故障診断回数等のカウンタ値、車両の固有情報データ等が継続的に記憶保持されるようになっている。
【０００３】
ここで、不揮発性メモリにデータを書き込む場合においてその書き込み途中に電子制御装置への給電が遮断される（以下、電源遮断という）ことがあり、その電源遮断が発生すると、書き込みが未完了のまま終了し、不揮発性メモリに不定データが残ってしまうといった不都合が生じる。
【０００４】
こうした書き込み異常の対策として、例えば特許文献１等に記載されているように、不揮発性メモリの異なる３つ以上の記憶領域に同一のデータを書き込むとともに、同不揮発性メモリからのデータ読み出しに際し、読み出しデータが相違する場合には多数決処理によりデータの修復を行うものがある（従来技術１）。また、不揮発性メモリの異なる２つの記憶領域に同一のデータを書き込むとともに、同不揮発性メモリからのデータ読み出しに際し、前記２つの記憶領域のデータが相違する場合にはデフォルトデータへの書き替えやフェールセーフ処理を適宜実施するものがある（従来技術２）。その他に、デジタル信号の伝送技術として特許文献２に記載されているように、デジタル信号の上位ビットからなるデータに訂正能力が相対的に高い訂正符号を生成付加するとともに、下位ビットからなるデータに訂正能力が相対的に低い訂正符号を生成付加し、下位ビットからなるデータに訂正不可能な誤りが生じた場合に、その下位ビットからなるデータを所定のデータに置換するものもある（従来技術３）。
【０００５】
しかしながら上記した従来技術１では、不揮発性メモリにおいて、本来データが書き込まれる記憶領域に対して３倍以上の大きさの記憶領域が必要となるという不都合があった。また、従来技術２では、書き込み異常が発生した場合にデータ修復する機能を有しておらず、実用上改善する余地が残されている。さらに、従来技術３では、やはりデータ修復を好適に行う上で改善の余地が残されている。
【特許文献１】特開平１１−１６４４８６号公報
【特許文献２】特開平４−２４３０６８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、記憶領域を過分に増加させることを抑制しつつ、しかも書き込み異常が生じた場合にデータ修復を可能とする演算処理装置、及びカウンタ値演算方法を提供することにある。
【課題を解決するための手段】
【０００７】
以下、上記課題を解決するための手段、及びその作用効果について説明する。
【０００８】
本発明の演算処理装置、及びカウンタ値演算方法は、あらかじめ定めた加算分又は減算分を加算又は減算するカウンタ処理を実行し、そのカウンタ値を、ＥＥＰＲＯＭ等からなる不揮発性メモリに逐次書き込むものである。
【０００９】
特に本発明では、不揮発性メモリに、カウンタ処理による加減算後のカウンタ値を継続的に保存するための第１記憶領域と、同加減算後のカウンタ値を仮保存するための第２記憶領域と、同加減算後のカウンタ値について所定ビットの値をエラー判定データとして記憶するためのエラーデータ記憶領域とを設けている。そして、ＣＰＵ等からなる演算手段は、カウンタ処理によるカウンタ値の加減算を実行した後、
（１）加減算後のカウンタ値を第２記憶領域に書き込む処理、
（２）前記エラー判定データをエラーデータ記憶領域に書き込む処理、
（３）加減算後のカウンタ値を第１記憶領域に書き込む処理、
を（１）、（２）、（３）の順序にて行う。また、次回のデータ読み出しに際しては、第１記憶領域に記憶されているカウンタ値の所定ビットの値と、エラーデータ記憶領域に記憶されているエラー判定データとを照合し、その照合結果に基づき、第２記憶領域に仮保存したカウンタ値によるデータ修復を実行する。
【００１０】
要するに、カウンタ処理が実行される際には、基本的に不揮発性メモリの第１記憶領域から前回カウンタ値が読み出されるとともに、加減算後のカウンタ値が同じく不揮発性メモリの第１記憶領域に書き込まれる（前回値に上書きされる）。ここで、カウンタ値の書き込み途中にて電源遮断が生じると書き込み異常が生じる場合がある。この点本発明では、第１記憶領域に記憶されているカウンタ値の所定ビットの値と、エラーデータ記憶領域に記憶されているエラー判定データとの照合により書き込み異常の発生が分かり、さらに、第２記憶領域にカウンタ値を仮保存しているため、該仮保存したカウンタ値によってデータ修復を行うことができる。このとき、不揮発性メモリには同一データを記憶するための２つの記憶領域（第１記憶領域及び第２記憶領域）を要するが、多数決処理を行うために同一データを３つ以上の記憶領域に記憶する従来技術に比べて、記憶領域の増加が抑制できる。その結果、記憶領域を過分に増加させることを抑制しつつ、しかも書き込み異常が生じた場合において好適なるデータ修復を実施することができる。
【００１１】
請求項２に記載の発明では、カウンタ処理の対象として複数のカウンタ値を設定しておき、そのカウンタ値を個別に不揮発性メモリに記憶保持する演算処理装置であって、第１記憶領域を複数のカウンタ値ごとに複数設ける一方、第２記憶領域を共通の仮保存領域として設けている。つまり、第２記憶領域は、カウンタ処理が行われる都度カウンタ値を仮保存する仮保存領域として機能すればよいため、全てのカウンタ値に対応させて設ける必要はなく、複数のカウンタ値で共通使用が可能となる。本構成によれば、同一データを記憶するための２つの記憶領域（第１記憶領域及び第２記憶領域）を不揮発性メモリに設けるにしても、実質上は２倍の記憶領域を必要としない。そのため、構成の簡素化を図ることができる。
【００１２】
ここで、請求項３に記載したように、前記エラー判定データは１ビットデータであると良い。これにより、エラーデータ記憶領域として要する記憶領域は１ビット分あれば足り、やはり構成の簡素化を図ることができる。
【００１３】
請求項４に記載の発明では、２進値のカウンタ処理を実行する演算処理装置であって、前記カウンタ処理における加算分又は減算分を２進表記した場合に「１」が出現する最下位ビットの位置をｎとし、前記加減算後のカウンタ値においてｎビット位置の値を前記エラー判定データとして前記エラーデータ記憶領域に書き込むとともに、データ読み出しに際し、前記第１記憶領域に記憶されているカウンタ値のｎビット位置の値と、前記エラー判定データとを照合する。なおこのとき、不揮発性メモリの各記憶領域（第１，第２記憶領域）には上位ビットから下位ビットに順にデータ書き込みが行われ、加減算後のカウンタ値においてその最下位ビットから数えてｎビット位置の値がエラー判定データとして記憶されるようになっている。
【００１４】
本構成によれば、カウンタ値を加減算する都度、同カウンタ値においてｎビット位置の値が０，１交互に出現することとなる。したがって、例えばエラー判定データをエラーデータ記憶領域に書き込む処理（上記（２）の処理）が正常に行われたが、加減算後のカウンタ値を第１記憶領域に書き込む処理（上記（３）の処理）が異常となる場合には、次回のデータ読み出しに際し、第１記憶領域から読み出したカウンタ値の所定ビットの値とエラーデータ記憶領域から読み出したエラー判定データとが不一致となる事態が生じ、書き込み異常に適正に対処できる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明にかかる演算処理装置を、車載エンジン用の電子制御装置（ＥＣＵ）として具体化した一実施の形態を図面に従って説明する。
【００１６】
図１に示す車両システムにおいて、電子制御装置１０は、ＣＰＵ１１、ＲＡＭ１２、ＥＥＰＲＯＭ１３等を備えており、この電子制御装置１０には電源スイッチ（例えばイグニッションスイッチ）２１を介してバッテリ２２が接続されている。電源スイッチ２１がＯＮ（閉鎖）されることにより、バッテリ２２から電子制御装置１０に対して給電が行われ、その給電により電子制御装置１０が起動する。
【００１７】
ＣＰＵ１１は、例えば３２ビットマイコンにより実現され、あらかじめ規定された演算プログラムに従い、エンジン制御に関する各種演算を実施する。ＲＡＭ１２は、各種演算において都度求められる演算データを一時記憶するための揮発性メモリであり、バッテリ２２からの給電が行われている状態下でデータを記憶保持する。また、ＥＥＰＲＯＭ１３は、バッテリ２２からの給電が無くとも（すなわち、電源スイッチ２１のＯＦＦ後も）内部データの継続的な記憶保持が可能であり、かつ電気的にデータ消去及び書き込みが可能な不揮発性メモリである。ＥＥＰＲＯＭ１３には、例えば、エンジンの始動回数（スタータ起動回数）、電子制御装置１０の起動回数、各種センサやアクチュエータ等の故障診断回数、故障診断データ（ダイアグデータ）、各種制御に用いる学習値などが適宜記憶される。
【００１８】
ここで、上述したエンジン始動回数などの各種回数データは、ＣＰＵ１１によりカウンタ値として適宜演算され、同カウンタ値の加算演算の都度ＥＥＰＲＯＭ１３に書き込まれる（ＥＥＰＲＯＭ記憶値が逐次更新される）ようになっている。以下、カウンタ値の加算演算に関し、その概要を説明する。
【００１９】
図２は、カウンタ値の加算演算に関して、ＲＡＭ１２及びＥＥＰＲＯＭ１３に規定した記憶領域を示す概略図である。図２において、ＲＡＭ１２には、ＣＰＵ１１によるカウンタ値の加算演算に際して同カウンタ値を一時記憶するための演算記憶領域Ｍ１１が設けられている。同演算記憶領域Ｍ１１にはカウンタ値が「カウンタ値ＲＡＭＣＮ」として記憶される。
【００２０】
また、ＥＥＰＲＯＭ１３には、加算演算後のカウンタ値を継続的に保存するためのメイン保存領域Ｍ２１（第１記憶領域に相当）と、同加算演算後のカウンタ値を仮保存するためのサブ保存領域Ｍ２２（第２記憶領域に相当）と、同加算演算後のカウンタ値について所定ビットの値をエラーデータとして記憶するためのエラー判定ビットＥＲＲ（エラーデータ記憶領域に相当）とが設けられている。この場合、メイン保存領域Ｍ２１は、エンジン始動回数用、ＥＣＵ起動回数用、故障診断回数用など、カウンタ値の種別ごとに複数設けられており、基本的には、同メイン保存領域Ｍ２１に記憶されたカウンタ値のみを用いてカウンタ値の更新が行われる。一方、サブ保存領域Ｍ２２は、全カウンタ値共通の、単一の作業領域として設けられている。メイン保存領域Ｍ２１には、加算演算後のカウンタ値が「カウンタ値ＣＮ」として記憶され、サブ保存領域Ｍ２２には、同じく加算演算後のカウンタ値が「カウンタ値ＣＰＣＮ」として記憶されるようになっている。なお、メイン保存領域Ｍ２１は、カウンタ値の種別ごとにそのビット長が異なるものでも良く、メイン保存領域Ｍ２１のビット長が異なる場合、メイン保存領域Ｍ２１に記憶されるデータの最大のビット長に合わせてサブ保存領域Ｍ２２が設定されると良い。
【００２１】
エラー判定ビットＥＲＲは、各メイン保存領域Ｍ２１に付随して同保存領域Ｍ２１内のカウンタ値ＣＮごとに設けられている。エラー判定ビットＥＲＲの詳細については後述する。
【００２２】
次に、加算処理の基本的な流れを図３及び図４を併せ参照しながら説明する。図３は、本加算処理においてＥＥＰＲＯＭ１３からの前回値の読み出し〜加算後カウンタ値の書き込みの処理手順を示すフローチャートであり、本処理は、エンジン始動時であること、ＥＣＵ起動時であること、故障診断の実行時であることなどを加算処理実行条件として同条件が成立する都度ＣＰＵ１１により実行される。また、図４は、同加算処理についてＲＡＭ１２とＥＥＰＲＯＭ１３との間のデータのやり取りを模式的に示すものであり、同図には説明の理解のために具体的数値の一例を示している。
【００２３】
図３において、まずステップＳ１１では、該当するカウンタ値の前回値（前回カウンタ値）をＥＥＰＲＯＭ１３からＲＡＭ１２上にカウンタ値ＲＡＭＣＮとして読み出し、続くステップＳ１２では、前記読み出したカウンタ値ＲＡＭＣＮに対して所定値αを加算する（ＲＡＭＣＮ←ＲＡＭＣＮ＋α）。加算幅である所定値αはあらかじめ定められた一定値である（αは１以上の整数）。
【００２４】
次いで、ステップＳ１３〜Ｓ１５では、ＥＥＰＲＯＭ１３へのデータ書き込みを所定順序で実施する。すなわち、ステップＳ１３では、加算演算後のカウンタ値ＲＡＭＣＮを、ＥＥＰＲＯＭ１３のサブ保存領域Ｍ２２にカウンタ値ＣＰＣＮとして書き込み、ステップＳ１４では、加算演算後のカウンタ値ＲＡＭＣＮについて所定ビット位置の値をエラー判定ビットＥＲＲに書き込み、ステップＳ１５では、加算演算後のカウンタ値ＲＡＭＣＮを、ＥＥＰＲＯＭ１３のメイン保存領域Ｍ２１にカウンタ値ＣＮとして書き込む。そしてその後、本処理を終了する。
【００２５】
エラー判定ビットＥＲＲに書き込まれる値（カウンタ値ＲＡＭＣＮの所定ビット位置の値）に関して補足説明する。すなわち、加算処理における加算幅である所定値αについて同所定値αを２進表記した場合に「１」が出現する最下位ビットの位置ｎ（ｎは０以上の整数）をあらかじめ算出しておく。そして、加算演算後のカウンタ値（カウンタ値ＲＡＭＣＮ）についてｎビット目の値を求め、当該値をエラー判定ビットＥＲＲに書き込むようにしている。
【００２６】
ビット位置ｎは所定値α（加算幅）をいくつにするかに応じて変更されるものであり、所定値αが１＝0001（２進数）であればｎ＝０、所定値αが２＝0010（２進数）であればｎ＝１、所定値αが３＝0011（２進数）であればｎ＝０、所定値αが４＝0100（２進数）であればｎ＝２となる。例えば、カウンタ値が「10000010」である場合、ｎ＝０であれば、同カウンタ値の０ビット目の値「０」がエラー判定ビットＥＲＲに書き込まれ、ｎ＝１であれば、同カウンタ値の１ビット目の値「１」がエラー判定ビットＥＲＲに書き込まれ、ｎ＝２であれば、同カウンタ値の２ビット目の値「０」がエラー判定ビットＥＲＲに書き込まれることとなる。
【００２７】
上述した処理の流れを図４に基づいてより具体的に説明する。図４では、一例として、ＥＥＰＲＯＭ１３のメイン保存領域Ｍ２１にカウンタ値ＣＮ（前回カウンタ値）として「01111111」が記憶されており、エラー判定ビットＥＲＲに「１」が記憶されている。そして、ＣＰＵ１１からの読み出し要求に応じて、前回のカウンタ値ＣＮ（01111111）がカウンタ値ＲＡＭＣＮとしてＲＡＭ１２上に読み出される（図の段階［１］）。
【００２８】
次に、カウンタ値ＲＡＭＣＮに対して加算演算（＋３演算）が行われ、その結果、加算演算後のカウンタ値ＲＡＭＣＮが「10000010」となる（図の段階［２］）。
【００２９】
その後、加算演算後のカウンタ値ＲＡＭＣＮ（10000010）がＥＥＰＲＯＭ１３のサブ保存領域Ｍ２２にカウンタ値ＣＰＣＮとして書き込まれ（図の段階［３］）、次に、加算演算後のカウンタ値ＲＡＭＣＮについて所定ビット位置ｎの値がエラー判定ビットＥＲＲに書き込まれる（図の段階［４］）。本例ではｎ＝０であり、「０」がエラー判定ビットＥＲＲに書き込まれる。さらに、加算演算後のカウンタ値ＲＡＭＣＮ（10000010）がＥＥＰＲＯＭ１３のメイン保存領域Ｍ２１にカウンタ値ＣＮとして書き込まれる（図の段階［５］）。なお、ＥＥＰＲＯＭ１３においてカウンタ値ＣＰＣＮ及びカウンタ値ＣＮの書き込みは上位ビットから下位ビットに順に行われるようになっている。
【００３０】
上述した段階［１］〜［５］の各処理は、加算処理実行条件が成立する都度行われ、ＥＥＰＲＯＭ１３のメイン保存領域Ｍ２１及びサブ保存領域Ｍ２２のカウンタ値が逐次更新される。
【００３１】
ところで、ＣＰＵ１１により加算演算した後のカウンタ値（カウンタ値ＲＡＭＣＮ）をＥＥＰＲＯＭ１３に書き込む際、電源遮断による書き込み不良が生じると、ＥＥＰＲＯＭ１３に記憶保持されるカウンタ値が不定データとなり、同カウンタ値の信憑性が低下する。本実施形態では、エラー判定ビットＥＲＲの値を参照し、その参照結果に応じて適宜データ修復を行うことで、カウンタ値が不定データとなり同カウンタ値の信憑性が低下することを抑制する。この場合、上述したとおりＥＥＰＲＯＭ１３へのカウンタ値ＲＡＭＣＮの書き込みは前後二回行われ（図４の段階［３］，［５］）、そのいずれの書き込み途中で電源遮断が生じることが考えられる。ここでは、いずれのタイミングで書き込み不良が生じたかに対応させてデータ修復を行うこととしている。
【００３２】
電源遮断による書き込み不良が生じた場合にＥＥＰＲＯＭ１３のデータがどうなるかを図５により説明する。図５では、上記図４で説明した加算処理の具体的数値を準用することとしており、加算演算によりカウンタ値ＲＡＭＣＮが「01111111」→「10000010」に更新され、同加算演算後のカウンタ値ＲＡＭＣＮ（10000010）がＥＥＰＲＯＭ１３に書き込まれる場合について図示している。図５に示す段階［３］〜［５］は、上記図４の段階［３］〜［５］と同じ処理に相当する。
【００３３】
ここで、図５（ａ）は、メイン保存領域Ｍ２１への書き込み途中（段階［５］）に電源遮断が生じてカウンタ値ＣＮが不定データ（図では、10001111）となる場合を示している。かかる場合、段階［３］及び［４］のデータ書き込みは正常に行われるためにサブ保存領域Ｍ２２のカウンタ値ＣＰＣＮとエラー判定ビットＥＲＲの値とは正常値（ＣＰＣＮ＝10000010、ＥＲＲ＝０）となるのに対し、メイン保存領域Ｍ２１のカウンタ値ＣＮが異常値となる。したがって、カウンタ値ＣＮとエラー判定ビットＥＲＲの値とが不整合となり、カウンタ値ＣＮのｎビット位置（本例ではｎ＝０）の値と、エラー判定ビットＥＲＲの値（カウンタ値ＲＡＭＣＮのｎビット位置の値）とが一致しなくなる。このことから、電子制御装置１０への給電再開後には、カウンタ値ＣＮのｎビット位置の値と、エラー判定ビットＥＲＲの値とを比較することにより、カウンタ値ＣＮの書き込み不良が判定できる。この場合、カウンタ値ＣＰＣＮについては加算演算後のカウンタ値ＲＡＭＣＮ（10000010）が正常に書き込まれているため、このカウンタ値ＣＰＣＮが修復値として用いられる。
【００３４】
また、図５（ｂ）は、サブ保存領域Ｍ２２への書き込み途中（段階［３］）に電源遮断が生じてカウンタ値ＣＰＣＮが不定データ（図では、10001111）となる場合を示している。かかる場合、段階［４］及び［５］が実施されないため、メイン保存領域Ｍ２１のカウンタ値ＣＮとエラー判定ビットＥＲＲの値とは前回値（すなわち、図４に示す加算演算前の値、ＣＰＣＮ＝01111111、ＥＲＲ＝１）のままとなっている。ただし、カウンタ値ＣＮとエラー判定ビットＥＲＲの値とに関しては、正常にデータ書き込みが行われた場合と同様、整合の取れたものとなっている。電子制御装置１０への給電再開後には、前回値であるカウンタ値ＣＮが修復値として用いられる。なおこの場合、正常値への修復はなされないが、それまでのカウンタ値が完全に消去されてしまう、又は以後の加算処理に不定データが用いられる、といった不都合は回避できる。
【００３５】
次に、ＥＥＰＲＯＭ１３からカウンタ値を読み出す処理を図６のフローチャートに基づいて説明する。特に本処理は、書き込み異常対策としてデータ修復機能を有するものであり、上記図３の加算処理におけるステップＳ１１のサブルーチンとして実行される。
【００３６】
ステップＳ２１では、ＥＥＰＲＯＭ１３のメイン保存領域Ｍ２１に記憶されているカウンタ値ＣＮについてｎビット位置の値と、エラー判定ビットＥＲＲの値とが一致するか否かを判定する。ステップＳ２１がＹＥＳの場合、ステップＳ２２に進み、メイン保存領域Ｍ２１に記憶されているカウンタ値ＣＮをカウンタ値ＲＡＭＣＮとしてＲＡＭ１２上に読み出す。また、ステップＳ２１がＮＯの場合、ステップＳ２３に進み、サブ保存領域Ｍ２２に記憶されているカウンタ値ＣＰＣＮをカウンタ値ＲＡＭＣＮとしてＲＡＭ１２上に読み出す。
【００３７】
以上詳述した本実施形態によれば、以下の優れた効果を得ることができる。
【００３８】
ＥＥＰＲＯＭ１３のメイン保存領域Ｍ２１に記憶されているカウンタ値ＣＮについてｎビット位置の値と、エラー判定ビットＥＲＲの値との照合により書き込み異常の発生が分かり、さらに、ＥＥＰＲＯＭ１３のサブ保存領域Ｍ２２にカウンタ値ＣＰＣＮを仮保存しているため、該カウンタ値ＣＰＣＮによってデータ修復を行うことができる。このとき、ＥＥＰＲＯＭ１３には同一データを記憶するための２つの記憶領域（メイン保存領域Ｍ２１及びサブ保存領域Ｍ２２）を要するが、多数決処理を行うために同一データを３つ以上の記憶領域に記憶する従来技術に比べて、記憶領域の増加が抑制できる。その結果、記憶領域を過分に増加させることを抑制しつつ、しかも書き込み異常が生じた場合において好適なるデータ修復を実施することができる。
【００３９】
メイン保存領域Ｍ２１をカウンタ値の種別に合わせて複数設ける一方、サブ保存領域Ｍ２２を共通の仮保存領域として１つのみ設けたため、データ修復用のカウンタ値を仮保存する構成にあって、構成の簡素化を図ることができる。
【００４０】
また、エラー判定データを記憶するためのエラー判定ビットＥＲＲを１ビット領域として設けたため、この点でも構成の簡素化に寄与できる。
【００４１】
加算幅である所定値αを２進表記した場合に「１」が出現する最下位ビットの位置をｎとし、加算演算後のカウンタ値（カウンタ値ＲＡＭＣＮ）においてｎビット位置の値をエラー判定ビットＥＲＲに書き込むようにしたため、加算演算を行う都度（所定値αを加算する都度）、同カウンタ値においてｎビット位置の値が０，１交互に出現することとなる。したがって、エラー判定ビットＥＲＲの書き込み処理が正常に行われたが、加算演算後のカウンタ値（カウンタ値ＲＡＭＣＮ）をメイン保存領域Ｍ２１に書き込む処理が異常となる場合（図５（ａ）のような異常時）において、当該書き込み異常に適正に対処することができる。
【００４２】
また、加算演算後のカウンタ値（カウンタ値ＲＡＭＣＮ）をサブ保存領域Ｍ２２に書き込む処理が異常となる場合（図５（ｂ）のような異常時）には、その異常そのものは把握できないが、前回カウンタ値を用いることで、それまで蓄積したカウンタ値を消滅させることなく加算演算処理を継続的に行わせることができる。
【００４３】
本発明は上記実施形態の記載内容に限定されず、例えば次のように実施されても良い。
【００４４】
上記実施形態では、加算処理において、加算幅である所定値αを「３」としたが、これは一例に過ぎず他の値としても良い。また、カウンタ値の種別ごとに所定値αを変更することも可能である。
【００４５】
上記実施形態では、サブ保存領域Ｍ２２を、全カウンタ値共通の、単一の作業領域として設けたが、これを変更し、同サブ保存領域Ｍ２２を２つ以上設けることも可能である。ただしかかる場合にも、全てのカウンタ値に対応させて設けるのではなく、複数のカウンタ値で共通使用するのが望ましい。
【００４６】
上記実施形態では、カウンタ処理として所定値αを逐次加算する加算処理について具体的な実現事例を説明したが、これに代えて、同カウンタ処理として所定値αを逐次減算する減算処理にも本発明が適用できる。
【００４７】
上記実施形態では、不揮発性メモリとしてＥＥＰＲＯＭを用いたが、ＥＥＰＲＯＭの他、フラッシュメモリ、磁気抵抗メモリ（ＭＲＡＭ：Magnetic Random Access Memory）、強誘電体メモリ（ＦｅＲＡＭ：Ferroelectric Random Access Memory）、相変化メモリ（ＯＵＭ：Ovonic Unified Memory）、抵抗変化型ＲＡＭ（ＲＲＡＭ：Resistive Random Access Memory）などを用いても良い。また、演算手段を、不揮発性メモリ等のメモリとＣＰＵとを１チップ内に具備したＳｏＣ（システムオンチップ）や、不揮発性メモリ等のメモリとＣＰＵとを１パッケージ内に具備したＳｉＰ（システムインパッケージ）等を用いて構成しても良い。
【図面の簡単な説明】
【００４８】
【図１】発明の実施形態における電子制御装置の全体構成を示す図。
【図２】ＲＡＭ及びＥＥＰＲＯＭに規定した記憶領域を示す概略図。
【図３】加算処理における処理手順を示すフローチャート。
【図４】加算処理についてＲＡＭとＥＥＰＲＯＭとの間のデータのやり取りを示す説明図。
【図５】電源遮断による書き込み不良が生じた場合についての説明図。
【図６】カウンタ値の読み出し処理を示すフローチャート。
【符号の説明】
【００４９】
１０…電子制御装置、１１…ＣＰＵ、１２…ＲＡＭ、１３…ＥＥＰＲＯＭ（不揮発性メモリ）、Ｍ２１…メイン保存領域、Ｍ２２…サブ保存領域、ＥＲＲ…エラー判定ビット。
【図１】
2008077135.tif 000003
【図２】
2008077135.tif 000004
【図３】
2008077135.tif 000005
【図４】
2008077135.tif 000006
【図５】
2008077135.tif 000007
【図６】
2008077135.tif 000008