"データ記録領域に記録されたデータの異常を検出する異常検出装置であって、前記データ記録領域へのデータの書き込み時に、所定のアルゴリズムに従って該書き込むデータの内容に応じた値である基準値を生成する基準値生成手段と、前記データ記録領域からのデータの読み出し時に、前記基準値を生成する際に利用した同様のアルゴリズムに従って該読み出すデータの内容に応じた値である比較値を生成する比較値生成手段と、前記比較値が生成されると、前記基準値と前記比較値とを比較し、この比較結果が不一致であればデータに異常がある旨の判定をする異常判定手段と、を備えたことを特徴とする異常検出装置。請求項1に記載の異常検出装置において、前記基準値生成手段は、生成した基準値を、前記データ記録領域とは隣接しない領域に設定された基準値記録領域に記録することを特徴とする異常検出装置。請求項2に記載の異常検出装置において、前記基準値生成手段は、生成した基準値を、前記データ記録領域とは異なるハードウェアとして構成された基準値記録領域に記録することを特徴とする異常検出装置。請求項1~請求項3の何れか1項に記載の異常検出装置において、前記基準値生成手段は、前記書き込むデータおよび既にデータ記録領域に記録されているデータを含む複数のデータに基づいて前記基準値を生成し、前記比較値生成手段は、前記基準値を生成したときに利用した複数のデータを利用して前記比較値を生成することを特徴とする異常検出装置。請求項1~請求項4の何れか1項に記載の異常検出装置において、前記異常判定手段によって異常がある旨の判定がされると割込処理によって異常用プログラムを実行させる割込実行手段、を備えたことを特徴とする異常検出装置。コンピュータを、請求項1~請求項5の何れか1項に記載の異常検出装置を構成する各手段として機能させるための異常検出プログラム。ところで、ビットの反転等の異常が問題となるのは、異常のあるデータを利用する場合であり、データ記録領域に記録されたままの状態でデータが利用されない場合には問題は生じない。しかしながら、上記異常検出装置においては、データ記録領域に記録されたままになっているデータに対しても、繰り返し異常を検出しており、異常を検出する処理の多くが無駄になっている可能性が高い。また、上記異常検出装置においては、定期的に異常の有無を監視するが、データ記録領域にデータが記録された直後に異常の有無を検出するとは限らないため、データが記録された後、異常の有無を監視するまでにビットの反転等の異常が生じた場合に、この異常を検出できない虞がある。そこで、このような問題点を鑑み、データ記録領域に記録されたデータの異常を検出する異常検出装置、および異常検出プログラムにおいて、効率的かつ確実にデータの異常を検出できるようにすることを本発明の目的とする。かかる目的を達成するために成された第1の構成の異常検出装置において、基準値生成手段は、データ記録領域へのデータの書き込み時に、所定のアルゴリズムに従って書き込むデータの内容に応じた値である基準値を生成し、比較値生成手段は、データ記録領域からのデータの読み出し時に、基準値を生成する際に利用した同様のアルゴリズムに従って読み出すデータの内容に応じた値である比較値を生成する。そして、異常判定手段は、比較値が生成されると、基準値と比較値とを比較し、この比較結果が不一致であればデータに異常がある旨の判定をする。すなわち、本発明で生成される基準値と比較値とは、同じ値になるべきであるが、データ記録領域へのノイズ等の影響によってデータが書き換えられると同じ値にならなくなる。このため本発明では、このようにデータが書き換えられ、基準値と比較値とが不一致となると、データに異常がある旨を出力する。このような異常検出装置によれば、データ記録領域へデータを記録するとき書き込み時と利用するとき読み出し時とでデータが変化していないかどうかを確認するので、確実にデータの異常を検出することができる。また、このような異常検出装置によれば、周期的にデータの異常を検出する構成と比較して、データの異常を検出する処理を実施する回数を少なくすることができるので、効率的にデータの異常を検出する処理を行うことができる。さらに、上記異常検出装置においては、第2の構成のように、基準値生成手段は、生成した基準値を、データ記録領域とは隣接しない領域に設定された基準値記録領域に記録するようにしてもよい。特に、第3の構成のように、基準値生成手段は、生成した基準値を、データ記録領域とは異なるハードウェアとして構成された基準値記録領域に記録するようにしてもよい。一般的に、データ記録領域にノイズ等の影響を受けたときには隣接する領域にも同様の影響を受けやすいが、本発明の異常検出装置によれば、データ記録領域と基準値記録領域とが隣接しないように配置されているので、データ記録領域にノイズ等の影響を受けた場合であっても、基準値記録領域がノイズ等の影響を受け難くすることができる。よって、異常を検出する精度を向上させることができる。ところで、上記異常検出装置においては、第4の構成のように、基準値生成手段は、書き込むデータおよび既にデータ記録領域に記録されているデータを含む複数のデータに基づいて基準値を生成し、比較値生成手段は、基準値を生成したときに利用した複数のデータを利用して比較値を生成するようにしてもよい。このような異常検出装置によれば、複数のデータについて1つの基準値を生成するので、一時的に記録しておく基準値の数を少なくすることができる。よって、基準値を記録するための記録領域基準値記録領域を節約することができる。また、上記異常検出装置においては、第5の構成のように、異常判定手段によって異常がある旨の判定がされると割込処理によって異常用プログラムを実行させる割込実行手段、を備えていてもよい。このような異常検出装置によれば、割込処理によって速やかに異常用プログラムを実行させることができる。次に、上記目的を達成するために成された第6の構成としての異常検出プログラムは、コンピュータを、上記に記載の異常検出装置を構成する各手段として機能させるためのプログラムであることを特徴とする。このような異常検出プログラムによれば、少なくとも請求項1に記載の異常検出装置と同様の効果を享受することができる。以下に本発明にかかる実施の形態を図面と共に説明する。[本実施形態の構成]図1は、本発明が適用された異常検出ECU電子制御装置1異常検出装置の概略構成を示すブロック図である。異常検出ECU1は、例えば乗用車等の車両に搭載されており、車両を制御するプログラムの実行中において、RAM13に記録されたデータの異常を検出する機能、およびデータの異常が検出された場合に、異常用のプログラムを実施する機能を備えている。詳細には、異常検出ECU1は、図1に示すようにCPU11と、ROM12と、RAM13データ記録領域、基準値記録領域と、CRC巡回冗長検査計算回路14基準値生成手段、比較値生成手段と、割込コントローラ15と、通信部16とを備えている。CPU11は、ROM12に格納されたプログラム異常検出プログラムを含むや、RAM13にロードされたプログラムに基づき、後述する記録時処理、利用処理等の各種処理を実行する。RAM13は、CPU11の作業領域として機能するが、特に、データを記録するためのデータ記録領域と、CRC値を記録するためのCRC値記録領域とが分離されており図3参照、データとCRC値とがRAM13において離れた領域に記録されるつまり、隣接する領域に記録されないようにCPU11が記録領域を設定する。CRC計算回路14は、RAM13に記録されるデータ、およびRAM13から読み出されるデータについて周知のCRCを実施し、この値を出力する。なお、CRC計算回路14の詳細な作動については後述する。割込コントローラ15は、所定のフラグCRC破壊フラグが立てられると、CPU11に対して割込信号を送り、CPU11に所定のプログラムを実行させる。通信部16は、周知の車内LANを介して他のECU等の他の装置と通信を行う。[本実施形態の処理]上記のような異常検出ECU1においては、以下に示す処理が実施される。図2はCPU11が実行する記録時処理を示すフローチャートである。記録時処理は、CPU11がRAM13にデータを記録しようとする都度開始され、データをRAM13に記録させる際の処理である。記録時処理では、図2に示すように、まず、割込を禁止するよう設定するS110。このように割込を禁止することで、割込を許可するまで本処理が中断されることなく実施される。続いて、記録しようとするデータをRAM13に記録させるS120。このとき、RAM13において予め設定されたデータ記録領域のうちの空いている領域にデータを記録させる。そして、書き込んだデータを含むデータを指定して、CRC計算回路14にCRC値を計算させるようデータの位置アドレスおよびビット番号の範囲を指定して指示するS130。この指示を受けると、CRC計算回路14は、指定された位置のデータについて、所定のアルゴリズムに基づいてCRC値を演算する。ここで、本処理では、図3aに示すように、アドレス0x0000XX10のEビットに存在するデータを書き込んだ場合、0x0000XX10に存在する複数のデータを1つのデータとみなしてCRC値基準値を演算させる。つまり、新たに書き込まれたデータおよび既に書き込まれていたデータを含む複数のデータに基づいて基準値を生成する。なお、この処理では、書き込んだデータのみについてCRC値を演算するようにしてもよい。この場合には例えば、アドレス0x0000XX30の0~3ビットの範囲内に存在するデータを書き込んだ場合、このデータのみについてCRC値を演算させるようにすればよい。続いて、RAM13のCRC値記録領域にCRC計算回路14によって演算されたCRC値を書き込むS140:基準値生成手段。ここで、CRC値記録領域には、図3bに示すように、CRC値を求めたデータが記録されていたデータ記録領域のアドレスに対応するアドレスが割り振られており、この処理では、対応するアドレスにCRC値を記録させる。そして、割込許可を設定しS150、記録時処理を終了する。次に、RAM13に記録されたデータを読み出して利用する処理について図4を用いて説明する。図4は、CPU11が実行する利用処理を示すフローチャートである。利用処理は、RAM13内のデータを読み出そうとする都度開始され、読み出そうとするデータに異常があるか否かを確認し、異常があれば異常に対する処置を行う処理である。利用処理では、図4に示すように、まず、CRC破壊フラグをOFFに設定するS210。この処理は、CRC破壊フラグを初期値としてOFFに設定する処理である。続いて、読出処理を実施するS220。読出処理については図5aに示すフローチャートを用いて説明する。読出処理では、図5aに示すように、まず、S110の処理と同様に、割込を禁止するよう設定するS310。そして、読み出すデータの位置に応じて、CRC計算回路14にCRC値を計算させるようデータの位置アドレスおよびビット番号の範囲を指定して指示するS320。この指示を受けると、CRC計算回路14は、指定された位置のデータについて、所定のアルゴリズムに基づいてCRC値比較値を演算する。このとき、CRC値の計算対象とするデータは、S130の処理でCRC値を演算したときのデータと同一の範囲のものとし、CRC値を演算するアルゴリズムも同様とする。続いて、CRC値比較値が生成されると、読み出すデータに対応するCRC値記録領域におけるCRC値基準値と、生成されたCRC値比較値とを比較しS330:異常判定手段、この比較結果が一致しているか否かを判定するS340:異常判定手段。この結果が等しければS340:YES、読み出そうとしたデータを正常時の処理と同様に読み出しS350、割込許可を設定しS360、読出処理を終了する。また、各CRC値が不一致であればS340:NO、データに異常があるものとして、CRC値異常割込を実施させるS370:異常判定手段、割込実行手段。この処理では、割込コントローラ15に異常信号を送り、この異常信号を受けた割込コントローラ15がCPU11に割込信号を送る。すると、CPU11は、読出処理とは並列する処理として異常割込処理を実施する。異常割込処理では、図5bのフローチャートに示すように、CRC破壊フラグをONに設定するS410。続いて、図5aの読出処理にて、CRC値異常割込を実施させると、割込許可を設定しS380、読出処理を終了する。このような読出処理が終了すると図4に戻り、CRC破壊フラグの状態を判定するS230。なお、S210~S230の処理の間で異常割込処理が実施されていれば、CRC破壊フラグはONになっている。CRC破壊フラグがOFFであればS230:OFF、RAM13のデータを利用した正常な処理を実施しS240、利用処理を終了する。また、CRC破壊フラグがONであればS230:ON、別途設けられた異常用プログラムを実施することでフェールセーフ処理を実施しS250:割込実行手段、利用処理を終了する。ここで、フェールセーフ処理とは、車両の駆動系や制御系に負担をかけないように安全側に制御を設定した状態で、必要最低限の作動のみを許可する処理を示す。例えば、車両を低速での移動のみを許可したり、出力駆動力や電流を制限したりする。[本実施形態による効果]以上のように詳述した異常検出ECU1においてCPU11は、RAM13へのデータの書き込み時に、所定のアルゴリズムに従ってCRC計算回路14に書き込むデータの内容に応じた値である基準値を生成させ、RAM13からのデータの読み出し時に、基準値を生成する際に利用した同様のアルゴリズムに従ってCRC計算回路14に読み出すデータの内容に応じた値である比較値を生成させる。そして、CPU11は、比較値が生成されると、基準値と比較値とを比較し、この比較結果が不一致であればデータに異常がある旨の判定をする。すなわち、上記実施形態で生成される基準値と比較値とは、同じ値になるべきであるが、RAM13へのノイズ等の影響によってデータが書き換えられると同じ値にならなくなる。このため上記実施形態では、このようにデータが書き換えられ、基準値と比較値とが不一致となると、データに異常がある旨を出力する。このような異常検出ECU1によれば、RAM13へデータを記録するとき書き込み時と利用するとき読み出し時とでデータが変化していないかどうかを確認するので、確実にデータの異常を検出することができる。また、このような異常検出ECU1によれば、周期的にデータの異常を検出する構成と比較して、データの異常を検出する処理を実施する回数を少なくすることができるので、効率的にデータの異常を検出する処理を行うことができる。また、CPU11の処理によってデータの異常を検出するので、処理を高速化することができる。さらに、異常検出ECU1においてCPU11は、生成した基準値を、RAM13におけるデータ記録領域とは隣接しない領域に設定されたRAM13におけるCRC値記録領域に記録する。一般的に、RAM13にノイズ等の影響を受けたときには隣接する領域にも同様の影響を受けやすいが、本実施形態の異常検出ECU1によれば、RAM13におけるデータ記録領域とCRC値記録領域とが隣接しないように配置されているので、RAM13におけるデータ記録領域にノイズ等の影響を受けた場合であっても、CRC値記録領域がノイズ等の影響を受け難くすることができる。よって、異常を検出する精度を向上させることができる。また、異常検出ECU1においてCPU11は、書き込むデータおよび既にRAM13に記録されているデータを含む複数のデータに基づいて基準値を生成させ、この基準値を生成したときに利用した複数のデータを利用して比較値を生成させる。このような異常検出ECU1によれば、複数のデータについて1つの基準値を生成するので、一時的に記録しておく基準値の数を少なくすることができる。よって、基準値を記録するための記録領域RAM13のうちのCRC値を格納する領域を節約することができる。また、異常検出ECU1においてCPU11は、異常がある旨の判定がされると割込処理によって異常用プログラムを実行させる。このような異常検出ECU1によれば、割込処理によって速やかに異常用プログラムを実行させることができる。[その他の実施形態]本発明の実施の形態は、上記の実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の形態を採りうる。例えば、読出処理においては、図6に示すように、S340の処理とS370の処理との間で、S510の処理を行うようにしてもよい。すなわち、書き込み時のCRC値と読出し時のCRC値とが異なる場合、データ記録領域に所定のフェール値制御を安全に行うことができるように予め設定された値を書き込み、この値を読み出して使用するようにしてもよいS510。このような処理を行う場合には、CRC値異常割込を行う処理S230~S250,S370,S410の処理を不要とすることができる。また、上記実施形態では、生成した基準値を、RAM13におけるデータ記録領域とは隣接しない領域に設定されたRAM13におけるCRC値記録領域に記録するようにしたが、図7に示す異常検出ECU2のように、RAM13とは異なるハードウェアとして構成されたCRC値用専用RAM17を備えておき、CPU11は、生成した基準値を、このCRC値用専用RAM17に記録するようにしてもよい。このようにすれば、RAM13にノイズ等の影響を受けた場合であっても、CRC値用専用RAM17がノイズ等の影響を受け難くすることができる。さらに、上記実施形態においては、CRC計算回路14を用いてCRC値を算出したが、CPU11による処理としてCRC値を算出してもよい。また、上記実施形態では、CRCによる手法を利用して書き込み時のデータと読み出し時のデータとの違いを検出したが、CRCに限らず、例えばミラーリングやチェックサム等による手法を利用して書き込み時のデータと読み出し時のデータとの違いを検出してもよい。"