(57)【要約】【課題】二重化されたＥＣＣ回路の何れが故障しているかの判定を可能とする。【解決手段】メモリ（１０）からデータ読み出しが行われる毎に、第１ＣＰＵ（２１）は、第１比較回路（５１）での比較結果から不一致を検出したか否かを判定し、それに基づいて上記メモリにＥＣＣエラーを発生させるための所定データを書き込み、第１ＥＣＣ回路（４１）の故障と第２ＥＣＣ回路（４２）の故障とを判別する処理を実行する。上記処理により、上記第１ＥＣＣ回路の故障と上記第２ＥＣＣ回路の故障との判別が行われ、それによって、二重化されたＥＣＣ回路（４１，４２）の何れが故障しているかの判定が可能となる。【選択図】図１
2009282849.tif 000002
【特許請求の範囲】
【請求項１】
それぞれデータを記憶可能なデータマットとＥＣＣマットとを含むメモリと、
上記メモリのデータマットとＥＣＣマットのそれぞれにデータを書き込み可能な第１メモリインタフェースと、
上記メモリから読み出されたデータのエラーチェックを行い、読み出しデータに誤りがある場合には当該データの誤り訂正を行う第１ＥＣＣ回路と、
上記メモリから読み出されたデータのエラーチェックを行い、読み出しデータに誤りがある場合には当該データの誤り訂正を行う第２ＥＣＣ回路と、
上記第１ＥＣＣ回路を介して得られたデータを伝達可能な第１バスと、
上記第２ＥＣＣ回路を介して得られたデータを伝達可能な第２バスと、
上記第１バスに結合され、上記第１バスを介して取り込まれたデータを処理可能な第１ＣＰＵと、
上記第２バスに結合され、上記第２バスを介して取り込まれたデータを処理可能な第２ＣＰＵと、
上記第１ＥＣＣ回路の出力情報と上記第２ＥＣＣ回路の出力情報とが一致するか否かの比較を可能とする第１比較回路と、を含み、
上記メモリからデータ読み出しが行われる毎に、上記第１ＣＰＵは、上記第１比較回路での比較結果に基づいて不一致を検出したか否かを判断し、不一致を検出た場合には、上記メモリのデータマットとＥＣＣマットのそれぞれにＥＣＣエラーを発生させるための所定データを書き込み、上記第１ＥＣＣ回路の故障と上記第２ＥＣＣ回路の故障との判別を可能とする故障診断処理を実行するものであることを特徴とするマイクロコンピュータ。
【請求項２】
上記第１ＣＰＵによる故障診断処理は、上記第１比較回路での比較結果に基づいて不一致検出を把握した場合、ＥＣＣエラーを発生させるための所定データを上記メモリのデータマットとＥＣＣマットのそれぞれに書き込んだ後にそれを読み出し、上記第１ＥＣＣ回路及び上記第１バスを介して伝達された上記所定データを、上記所定データの誤り訂正後の期待値と比較し、その比較結果に基づいて、上記第１ＥＣＣ回路の故障と上記第２ＥＣＣ回路の故障との判別を可能とする処理を含む請求項１記載のマイクロコンピュータ。
【請求項３】
上記メモリから読み出され、上記第１ＥＣＣ回路及び上記第１バスを介して伝達された第１読み出しデータと、上記メモリから読み出され、上記第２ＥＣＣ回路及び上記第２バスを介して伝達された第２読み出しデータとが一致するか否かの比較を可能とする第２比較回路を含み、
上記第１ＣＰＵによる故障診断処理は、上記第１比較回路での比較結果に基づいてＥＣＣエラーを把握した場合、ＥＣＣエラーを発生させるための所定データを上記メモリのデータマットとＥＣＣマットのそれぞれに書き込んだ後にそれを読み出し、上記第１ＥＣＣ回路及び上記第１バスを介して伝達された上記所定データを、上記所定データの誤り訂正後の期待値と比較し、その比較結果と、上記第１比較回路での比較結果と、上記第２比較回路での比較結果とに基づいて、上記第１ＥＣＣ回路の故障と上記第２ＥＣＣ回路の故障との判別を可能とする処理を含む請求項１記載のマイクロコンピュータ。
【請求項４】
上記故障診断処理は、上記所定データと上記所定データの誤り訂正後の期待値とが一致せず、且つ、上記第１読み出しデータと上記第２読み出しデータとが一致しない場合には、上記第１ＥＣＣ回路の故障と判断する第１処理と、
上記所定データと上記所定データの誤り訂正後の期待値とが一致し、且つ、上記第１ＥＣＣ回路でのエラーチェック結果と上記第２ＥＣＣ回路でのエラーチェック結果とが一致しない場合には、上記第２ＥＣＣ回路の故障と判断する第２処理と、を含む請求項３記載のマイクロコンピュータ。
【請求項５】
上記第１ＣＰＵは、上記故障診断処理において上記第２ＥＣＣ回路の故障と判断した場合、リセットしても安全な状態へ遷移するためのシステム停止処理を実行し、その後、リセット処理に遷移する請求項４記載のマイクロコンピュータ。
【請求項６】
上記第１ＣＰＵは、上記故障診断処理において上記第１ＥＣＣ回路の故障と判断した場合、速やかにリセット処理に遷移する請求項４記載のマイクロコンピュータ。
【請求項７】
それぞれデータを記憶可能なデータマットとＥＣＣマットとを含むメモリと、
上記メモリのデータマットとＥＣＣマットのそれぞれにデータを書き込み可能な第１メモリインタフェースと、
上記メモリから読み出されたデータのエラーチェックを行い、読み出しデータに誤りがある場合には当該データの誤り訂正を行う第１ＥＣＣ回路と、
上記メモリから読み出されたデータのエラーチェックを行い、読み出しデータに誤りがある場合には当該データの誤り訂正を行う第２ＥＣＣ回路と、
上記第１ＥＣＣ回路を介して得られたデータを伝達可能な第１バスと、
上記第２ＥＣＣ回路を介して得られたデータを伝達可能な第２バスと、
上記第１バスに結合され、上記第１バスを介して取り込まれたデータを処理可能な第１ＣＰＵと、
上記第２バスに結合され、上記第２バスを介して取り込まれたデータを処理可能な第２ＣＰＵと、を含み、
上記第１ＣＰＵは、ＥＣＣエラーを発生させるための所定データを上記メモリのデータマットとＥＣＣマットのそれぞれに書き込んだ後にそれを読み出し、上記第１ＥＣＣ回路及び上記第１バスを介して伝達された上記所定データを、上記テストデータの誤り訂正後の期待値と比較し、その比較結果に基づいて、上記第１ＥＣＣ回路の故障と上記第２ＥＣＣ回路の故障との判別を可能とするエラーインジェクション処理を実行するものであることを特徴とするマイクロコンピュータ。
【請求項８】
上記エラーインジェクション処理は、所定の時間間隔で定期的に実行される請求項７記載のマイクロコンピュータ。
【請求項９】
上記エラーインジェクション処理は、上記マイクロコンピュータへの通電開始によるパワーオンリセットに起因して実行される請求項７記載のマイクロコンピュータ。
【請求項１０】
上記エラーインジェクション処理は、上記マイクロコンピュータのリセットに起因して実行される請求項７記載のマイクロコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＥＣＣ（Error Correction Code）による誤り訂正機能を備えたマイクロコンピュータ、さらにはそれにおけるＥＣＣ機能の診断技術に関するものである。
【背景技術】
【０００２】
ＥＣＣは、記憶装置などからデータを読み出す際、データの誤りを訂正するために本来のデータとは別に付加される冗長なデータを指しており、ＥＣＣによる誤り訂正機能は、コンピュータや通信の分野で持ち入れられているエラー訂正技術である。ある一定の情報をメモリから読み出したとき、あるいは受信したときに、その情報のエラーを検出し、最小単位の１ビットを自動的に訂正することができる。マイクロコンピュータにおいて、メモリから読み出されたデータの信頼性を向上させるには、プログラムなどのデータにＥＣＣを付加して記録し、読み出されたデータについてＥＣＣを用いて誤り訂正を行うことが有効とされる。ＥＣＣ機能を実現するためのハードウェアは、ＥＣＣ回路と称される。このＥＣＣ回路では、ＥＣＣ付き読み出しデータにエラーチェック処理を施し、読み出しデータに誤りがある場合には、その誤り訂正が行われる。そして誤り訂正が完了すると、ＥＣＣは不要であるので削除される。
【０００３】
例えば自動車の制御系などに使用されるマイクロコンピュータは、制御プログラムによって重要な制御を行っている。この制御プログラムを格納するプログラム格納用メモリの記憶内容が何らかの原因で変化した場合には、マイクロコンピュータは正しい制御を行うことができないので、危険な状態を招きかねない。従って自動車の制御系などに用いられるマイクロコンピュータのＥＣＣ誤り訂正機能には高い信頼性が要求され、ＥＣＣ回路自体の診断も必要とされる。
【０００４】
しかしながら、ＥＣＣ回路を診断するためには、ＥＣＣ回路を介して読み出したデータと期待値との比較が必要、かつＥＣＣ回路を構成する論理式に基づきデータを導く必要があり、論理設計に起因するいろいろな組合せを考慮しなければならず、ソフトウェアが複雑化する。ソフトウェアが複雑化すると新たな不具合を発生させる原因になる。そこで、ＥＣＣ回路を二重化し、二つのＥＣＣ回路の出力信号が一致するか否かをコンパレータなどの比較器で検出することが考えられる（例えば特許文献１参照）。
【０００５】
【特許文献１】特開平４−１５３８３８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、ＥＣＣ回路を二重化し、二つのＥＣＣ回路の出力信号が一致するか否かをコンパレータなどの比較器で検出する構成においては、上記比較器によって二つのＥＣＣ回路の出力信号の不一致は検出できても、二重化されたＥＣＣ回路の何れが故障しているのかの判定はできない。また、上記比較器で不一致が検出された場合の処理として強制的にリセットすることが考えられるが、例えば自動車の制御系などに使用されるマイクロコンピュータの場合には、リセットによって周辺回路およびマイクロコンピュータの外部に接続される各種周辺回路での処理が不所望に中断され、それによって制御対象が暴走した場合には危険な状態を招きかねない。
【０００７】
本発明の目的は、二重化されたＥＣＣ回路の何れが故障しているかの判定を可能とする技術を提供することにある。
【０００８】
また本発明の別の目的は、二重化されたＥＣＣ回路の何れが故障しているかを判定し、その判定結果に基づいてマイクロコンピュータの信頼性を向上させるための技術を提供することにある。
【０００９】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１０】
本願において開示される発明のうち代表的なものについて簡単に説明すれば下記のとおりである。
【００１１】
すなわち、メモリからデータ読み出しが行われる毎に、第１ＣＰＵは、第１比較回路での比較結果から不一致を検出したか否かを判定し、それに基づいて上記メモリにＥＣＣエラーを発生させるための所定データを書き込み、第１ＥＣＣ回路の故障と第２ＥＣＣ回路の故障とを判別する処理を実行する。上記処理により、上記第１ＥＣＣ回路の故障と上記第２ＥＣＣ回路の故障との判別が行われ、このことが、二重化されたＥＣＣ回路の何れが故障しているかの判定を可能とする。
【発明の効果】
【００１２】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【００１３】
すなわち、二重化されたＥＣＣ回路の何れが故障しているかの判定が可能とされる。また。二重化されたＥＣＣ回路の何れが故障しているかを判定し、その判定結果に基づいてマイクロコンピュータの信頼性を向上させることができる。
【発明を実施するための最良の形態】
【００１４】
１．代表的な実施の形態
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１５】
〔１〕本発明の代表的な実施の形態に係るマイクロコンピュータ（１）は、データマットとＥＣＣマットとを含むメモリ（１０）と、上記メモリのデータマットとＥＣＣマットのそれぞれにデータを書き込みおよび読み出し可能なメモリインタフェース（３１、３２）と、上記メモリから読み出されたデータのエラーチェックを行い、読み出しデータに誤りがある場合には当該データの誤り訂正を行う第１ＥＣＣ回路（４１）とが含まれる。また、上記メモリから読み出されたデータのエラーチェックを行い、読み出しデータに誤りがある場合には当該データの誤り訂正を行う第２ＥＣＣ回路（４２）と、上記第１ＥＣＣ回路を内蔵する上記第１メモリインタフェース（３１）を介して得られたデータを伝達可能な第１バス（６１）と、上記第２ＥＣＣ回路を内蔵する第２メモリインタフェース（３２）を介して得られたデータを伝達可能な第２バス（６２）とが含まれる。さらに、上記第１バスに結合され、上記第１バスを介して取り込まれたデータを処理可能な第１ＣＰＵ（２１）と、上記第２バスに結合され、上記第２バスを介して取り込まれたデータを処理可能な第２ＣＰＵ（２２）と、上記第１ＥＣＣ回路の出力情報と上記第２ＥＣＣ回路の出力情報とが一致するか否かの比較を可能とする第１比較回路（５１）とが含まれる。そして、上記メモリからデータ読み出しが行われる毎に、上記第１ＣＰＵは、上記第１比較回路での比較結果に基づいて不一致を検出したか否かを判断し、不一致を検出した場合には、上記メモリのデータマットとＥＣＣマットのそれぞれにＥＣＣエラーを発生させるための所定データを書き込んだ後にそれを読み出し、上記第１ＥＣＣ回路の故障と上記第２ＥＣＣ回路の故障との判別を可能とする故障診断処理（Ｓ２０９〜Ｓ２２２）を実行する。
【００１６】
上記メモリからデータ読み出しが行われる毎に、上記第１ＣＰＵは、上記第１比較回路での比較結果に基づいて不一致を検出したか否かを判断し、不一致を検出した場合には、上記故障診断処理故障診断処理（Ｓ２０９〜Ｓ２２２）により、上記第１ＥＣＣ回路の故障と上記第２ＥＣＣ回路の故障との判別が行われる。このことが、二重化されたＥＣＣ回路の何れが故障しているかの判定を可能とする。
【００１７】
〔２〕上記〔１〕において、上記第１ＣＰＵによる故障診断処理は、上記第１比較回路での比較結果に基づいて不一致検出を把握した場合、ＥＣＣエラーを発生させるための所定データを上記メモリのデータマットとＥＣＣマットのそれぞれに書き込んだ後にそれを読み出し、上記第１ＥＣＣ回路及び上記第１バスを介して伝達された上記所定データを、上記所定データの誤り訂正後の期待値と比較し、その比較結果に基づいて、上記第１ＥＣＣ回路の故障と上記第２ＥＣＣ回路の故障との判別を可能とする処理を含めることができる。
【００１８】
〔３〕上記〔１〕において、上記メモリから読み出され、上記第１ＥＣＣ回路及び上記第１バスを介して伝達された第１読み出しデータと、上記メモリから読み出され、上記第２ＥＣＣ回路及び上記第２バスを介して伝達された第２読み出しデータとが一致するか否かの比較を可能とする第２比較回路（５２）を含めることができる。その場合において、上記第１ＣＰＵによる故障診断処理には、上記第１比較回路での比較結果に基づいて不一致検出を把握した場合、ＥＣＣエラーを発生させるための所定データを上記メモリのデータマットとＥＣＣマットのそれぞれに書き込んだ後にそれを読み出し、上記第１ＥＣＣ回路及び上記第１バスを介して伝達された上記所定データを、上記所定データの誤り訂正後の期待値と比較し、その比較結果と、上記第１比較回路での比較結果と、上記第２比較回路での比較結果とに基づいて、上記第１ＥＣＣ回路の故障と上記第２ＥＣＣ回路の故障との判別を可能とする処理を含めることができる。
【００１９】
〔４〕上記〔３〕において、上記故障診断処理は、上記所定データと上記所定データの誤り訂正後の期待値とが一致せず、且つ、上記第１読み出しデータと上記第２読み出しデータとが一致しない場合には、上記第１ＥＣＣ回路の故障と判断する第１処理（Ｓ２１９）と、上記所定データと上記所定データの誤り訂正後の期待値とが一致し、且つ、上記第１ＥＣＣ回路でのエラーチェック結果と上記第２ＥＣＣ回路でのエラーチェック結果とが一致しない場合には、上記第２ＥＣＣ回路の故障と判断する第２処理（Ｓ２１５）とを含めることができる。
【００２０】
〔５〕上記〔４〕において、上記第１ＣＰＵ（２１）は、上記故障診断処理において上記第２ＥＣＣ回路の故障と判断した場合、リセットしても安全な状態へ遷移するためのシステム停止処理を実行し（Ｓ２１６）、その後、リセット処理に遷移する（Ｓ２１９）ように構成することができる。
【００２１】
このようにリセット前の安全なシステム停止処理を実行し、その処理が完了した後にリセット処理に遷移されることにより、システム全体としての信頼性をさらに向上させることができる。
【００２２】
〔６〕上記〔４〕において、上記第１ＣＰＵは、上記故障診断処理において上記第１ＥＣＣ回路の故障と判断した場合、速やかにリセット処理に遷移するように構成することができる。
【００２３】
〔７〕また、別の観点によれば、本発明の代表的な実施の形態に係る別のマイクロコンピュータ（１）において、第１ＣＰＵは、ＥＣＣエラーを発生させるための所定データを上記メモリのデータマットとＥＣＣマットのそれぞれに書き込んだ後にそれを読み出し、上記第１ＥＣＣ回路及び上記第１バスを介して伝達された上記所定データを、上記所定データの誤り訂正後の期待値と比較し、その比較結果に基づいて、上記第１ＥＣＣ回路の故障と上記第２ＥＣＣ回路の故障との判別を可能とするエラーインジェクション処理（Ｓ２０２，Ｓ３１０〜Ｓ３２０）を実行するように構成することができる。
【００２４】
〔８〕上記〔７〕において、上記エラーインジェクション処理は、所定の時間間隔で定期的に実行されるように構成することができる。
【００２５】
〔９〕上記〔７〕において、上記エラーインジェクション処理は、上記マイクロコンピュータへの通電開始によるパワーオンリセットに起因して実行されるように構成することができる。
【００２６】
〔１０〕上記〔７〕において、上記エラーインジェクション処理は、上記マイクロコンピュータのリセットに起因して実行されるように構成することができる。
【００２７】
２．実施の形態の説明
次に、実施の形態について更に詳述する。
【００２８】
図４には、本発明にかかるマイクロコンピュータ（マイクロコントローラ又はマイクロプロセッサなどと称されることもある）が示される。図４に示されるマイクロコンピュータ１は、特に制限されないが、自動車の制御系システムに搭載されるもので、公知の半導体集積回路製造技術により単結晶シリコン基板などの一つの半導体基板に形成される。上記マイクロコンピュータ１は、特に制限されないが、第１割り込みコントローラ１１、第２割り込みコントローラ１２、メモリ１０、第１ＣＰＵ（中央処理装置）２１、第２ＣＰＵ２２、第１メモリインタフェース３１、第２メモリインタフェース３２、第１比較回路５１、第２比較回路５２、ＰＷＭタイマ５４、ＳＣＩ（Serial Communication Interface）５５、ＣＡＮ（Controller Area Network）５６、及びＡＤ変換器５７とを含む。
【００２９】
第１ＣＰＵ２１、第２ＣＰＵ２２は、それぞれメモリ１０にロードされたプログラムに従って所定の演算処理を実行する。第１ＣＰＵ２１がメインＣＰＵとされるとき、第２ＣＰＵ２２はサブＣＰＵとされる。上記第１割り込みコントローラ１１は、上記第１ＣＰＵ２１に対する割り込み処理を行い、上記第２割り込みコントローラ１２は、上記第２ＣＰＵ２２に対する割り込み処理を行う。上記第１ＣＰＵ２１は、第１ＣＰＵバス６１に結合され、この第１ＣＰＵバス６１を介して各種データやアドレス信号及びコントロール信号のやり取りを可能とする。上記第２ＣＰＵ２１は、第２ＣＰＵバス６２に結合され、この第２ＣＰＵバス６２を介して各種データやアドレス信号及びコントロール信号のやり取りを可能とする。上記メモリ１０は、ランダムアクセス可能なＲＡＭ（ランダム・アクセス・メモリ）とされ、上記第１ＣＰＵ２１や上記第２ＣＰＵ２２で実行されるプログラムや、そのプログラム実行に必要とされる各種データなどが格納される。上記メモリ１０は、上記第１メモリインタフェース３１を介して第１ＣＰＵバス６１に結合される。また、上記メモリ１０は、上記第２メモリインタフェース３２を介して第２ＣＰＵバス６２に結合される。上記第１メモリインタフェース３１及び上記第２メモリインタフェース３２には、ＥＣＣ（Error Correction Code）回路が内蔵され、上記メモリから読み出されたデータのエラーチェックが行われ、読み出しデータに誤りがある場合には当該データの誤り訂正が行われるようになっている。また、上記第１メモリインタフェース３１は、上記メモリ１０のデータマット１０ＡとＥＣＣマット１０Ｂのそれぞれにデータを書き込む機能を有する。上記第１比較回路５１は、上記第１メモリインタフェース３１でのエラーチェック結果と、上記第２メモリインタフェース３２でのエラーチェック結果とが一致するか否かを比較する。上記第２比較回路５２は、第１メモリインタフェース３１を介して上記第１ＣＰＵバス６１に出力された読み出しデータと、第２メモリインタフェース３２を介して第２ＣＰＵバス６２に出力された読み出しデータとを比較する。上記第１ＣＰＵバス６１には、バスブリッジ５３を介して周辺バス６３が結合される。この周辺バス５７には、ＰＷＭタイマ５４、ＳＣＩ５５、ＣＡＮ５６、及びＡＤ変換器５７が結合される。ＰＷＭタイマ５４はＰＷＭパルスを生成し、このＰＷＭパルスのデューティ比を変化させる。上記ＰＷＭタイマ５４は、上記ＰＷＭパルスのデューティ値パターンをセット可能なＲＡＭと、ＰＷＭパルスの生成を可能とするＰＷＭコントローラとを含む。上記ＰＷＭコントローラは、ＰＷＭカウンタを含み、上記ＰＷＭパルスの単位波形は、上記ＲＡＭ内のデューティ値と上記ＰＷＭカウンタの出力値とのコンペアマッチにより生成され、上記コンペアマッチ毎に次のデューティ値が上記ＣＰＵの介在無しに上記ＲＡＭからロードされることで、上記ＰＷＭパルスのデューティ値の時系列変化が可能にされる。上記ＳＣＩ５５は、外部との間でシリアル通信を可能とする。上記ＣＡＮ５６は、所定のポートを介してコントロールエリアネットワークにおける各種情報のやり取りを可能とする。上記ＡＤ変換器５７は、センサーなどから伝達されたアナログ信号をマイクロコンピュータ１での処理可能なディジタル信号に変換する。
【００３０】
図１には、図４に示されるマイクロコンピュータにおける主要部の詳細な構成例が示される。
【００３１】
上記メモリ１０は、データを格納するためのデータマット１０Ａと、このデータマット１０Ａに格納されたデータに対応するＥＣＣが格納されるＥＣＣマット１０Ｂとが設けられている。上記データマット１０Ａからデータが読み出される場合には、それに対応するＥＣＣがＥＣＣマット１０Ｂから読み出されるようになっている。上記第１メモリインタフェース３１は上記データマット１０Ａと上記ＥＣＣマット１０Ｂのそれぞれに所定データの書き込みを可能とする機能を有する。
【００３２】
上記第１メモリインタフェース３１は、上記メモリ１０から読み出されたデータを、それに対応するＥＣＣに基づいてエラーチェックを行い、ＥＣＣエラーを生じた場合には、最小単位の１ビットを自動的に訂正するための第１ＥＣＣ回路４１と、ＥＣＣエラーを生じた場合に、そのエラーにかかるデータが格納されていたメモリ１０におけるアドレス（「エラーアドレス」という）を一時的に保持するための第１エラーアドレスレジスタ７１とを含む。上記エラーチェックの結果は、ＥＣＣエラー情報に反映される。このＥＣＣエラー情報は、１ビットのフラグ情報とされ、第１メモリインタフェース３１内の適宜のレジスタに保持される。このＥＣＣエラー情報は、特に制限されないが、ＥＣＣエラーを生じた場合には論理値“１”とされ、ＥＣＣエラーを生じていない場合には論理値“０”とされる。上記第１エラーアドレスレジスタ７１の保持情報（エラーアドレス）は第１ＣＰＵバス６１を介して第１ＣＰＵ２１に出力される。上記メモリ１０からの読み出しデータ（ＥＣＣエラーを生じた場合にはエラー訂正されたデータ）は、第１ＣＰＵバス６１及び第１比較回路５１に出力される。また、ＥＣＣエラーの有無を示すＥＣＣエラー情報は第１比較回路５１及び割り込みコントローラ１１，１２に出力される。そして、上記メモリ１０への書き込みデータ（ＥＣＣ付データ）は、第１ＣＰＵバス６１から上記第１メモリインタフェース３１を介して上記メモリ１０のデータマット１０ＡとＥＣＣマット１０Ｂへ伝達される。
【００３３】
上記第２メモリインタフェース３２は、上記メモリ１０から読み出され、上記第１メモリインタフェース３１に供給されるのと同一のデータ及びＥＣＣに基づいてエラーチェックを行い、ＥＣＣエラーを生じた場合には、最小単位の１ビットを自動的に訂正するための第２ＥＣＣ回路４２と、ＥＣＣエラーを生じた場合に、そのエラーにかかるデータが格納されていたメモリ１０におけるアドレス（「エラーアドレス」という）を一時的に保持するための第２エラーアドレスレジスタ７２とを含む。また、上記エラーチェックの結果は、ＥＣＣエラー情報に反映される。このＥＣＣエラー情報は、１ビットのフラグ情報とされ、第１メモリインタフェース３１内の適宜のレジスタに保持される。このＥＣＣエラー情報は、特に制限されないが、ＥＣＣエラーを生じた場合には論理値“１”とされ、ＥＣＣエラーを生じていない場合には論理値“０”とされる。上記第２エラーアドレスレジスタ７２の保持情報（エラーアドレス）は第２ＣＰＵバス６２を介して第２ＣＰＵ２２に出力される。上記メモリ１０からの読み出しデータ（ＥＣＣエラーを生じた場合にはエラー訂正されたデータ）は、第２ＣＰＵバス６２及び第２比較回路５２に出力される。また、ＥＣＣエラーの有無を示すＥＣＣエラー情報は第２比較回路５２に出力される。このＥＣＣエラー情報も、特に制限されないが、上記第１メモリインタフェース３１から出力されるのと同様に、ＥＣＣエラーを生じた場合には論理値“１”とされ、ＥＣＣエラーを生じていない場合には論理値“０”とされる。  上記第１比較回路５１は、上記第１メモリインタフェース３１から出力された読み出しデータと、上記第２メモリインタフェース３２から出力された読み出しデータとを比較するためのコンパレータ５１１と、上記第１メモリインタフェース３１から出力されたＥＣＣエラー情報と、上記第２メモリインタフェース３２から出力されたＥＣＣエラー情報とを比較するためのコンパレータ５１２と、上記コンパレータ５１１，５１２の出力信号の論理和を得る論理和ゲート５１３とを含む。上記第１ＥＣＣ回路４１及び上記第２ＥＣＣ回路４２が正常に動作されている場合、上記第１メモリインタフェース３１から出力された読み出しデータと、上記第２メモリインタフェース３２から出力された読み出しデータとが一致し、上記第１メモリインタフェース３１から出力されたＥＣＣエラー情報と、上記第２メモリインタフェース３２から出力されたＥＣＣエラー情報とが一致する。この場合、上記コンパレータ５１１，５１２の出力信号は双方とも論理値“０”となり、論理和ゲート５１３の出力も論理値“０”となる。これに対して、上記第１メモリインタフェース３１から出力された読み出しデータと、上記第２メモリインタフェース３２から出力された読み出しデータとが不一致の場合、コンパレータ５１１の出力信号は論理値“１”となり、上記第１メモリインタフェース３１から出力されたＥＣＣエラー情報と、上記第２メモリインタフェース３２から出力されたＥＣＣエラー情報とが不一致の場合、コンパレータ５１２の出力信号は論理値“１”となる。従って、論理和ゲート５１３の出力信号が論理値“０”の場合には、第１ＥＣＣ回路４１及び第２Ｅ���Ｃ回路４２は双方とも正常に動作しており、論理和ゲート５１３の出力信号（第１比較回路５１の出力信号）が論理値“１”の場合には、第１ＥＣＣ回路４１又は第２ＥＣＣ回路４２が故障しているおそれがある。このような論理和ゲート５１３の出力信号は不一致検出信号として第１割り込みコントローラ１１及び第２割り込みコントローラ１２の双方に伝達される。
【００３４】
上記第２比較回路５２は、上記第１メモリインタフェース３１及び上記第１ＣＰＵバス６１を介して伝達された読み出しデータと、上記第２メモリインタフェース３２及び上記第２ＣＰＵバス６２を介して伝達された読み出しデータとを比較するためのコンパレータ５２１を含む。上記両データが一致すればコンパレータ５２１の出力信号は論理値“０”となり、上記両データが不一致の場合にはコンパレータ５２１の出力信号は論理値“１”となる。このようなコンパレータ５２１の出力信号は、不一致検出信号として第１割り込みコントローラ１１及び第２割り込みコントローラ１２の双方に伝達される。
【００３５】
上記第１割り込みコントローラ１１は、上記第１メモリインタフェース３１からのＥＣＣエラー情報や、上記第１比較回路５１からの不一致検出結果、上記第２比較回路５２からの不一致検出結果を取り込み、所定の優先順位に従って上記第１ＣＰＵ２１に対する割り込み制御を行う。
【００３６】
上記第２割り込みコントローラ１２は、上記第２メモリインタフェース３２からのＥＣＣエラー情報や、上記第１比較回路５１からの不一致検出結果、上記第２比較回路５２からの不一致検出結果を取り込み、所定の優先順位に従って上記第２ＣＰＵ２２に対する割り込み制御を行う。
【００３７】
上記第１ＣＰＵ２１は、上記第１ＣＰＵバス６１を介して上記メモリ１０からの読み出しデータ（命令を含む）を取得して所定の演算処理を実行する。また、上記第１ＣＰＵバス６１を介して上記第１メモリインタフェース３１に対して上記メモリ１０への書き込みデータを出力する。そして、上記第１ＣＰＵ２１は、上記第１割り込みコントローラ１１からの割り込み要求に応じて、所定の割り込み処理を実行する。
【００３８】
上記第２ＣＰＵ２２は、上記第２ＣＰＵバス６２を介して上記メモリ１０からの読み出しデータ（命令を含む）を取得して所定の演算処理を実行する。また、上記第２ＣＰＵバス６２を介して上記第２メモリインタフェース３２に対して上記メモリ１０への書き込みデータを出力する。そして、上記第２ＣＰＵ２２は、上記第２割り込みコントローラ１２からの割り込み要求に応じて、所定の割り込み処理を実行する。
【００３９】
上記第１比較回路５１からの不一致検出結果、上記第２比較回路５２からの不一致検出結果は、上記第１ＣＰＵ２１や上記第２ＣＰＵ２２へも伝達されるようなっている。これによって、第１ＣＰＵ２１や上記第２ＣＰＵ２２は、上記第１比較回路５１での不一致検出結果や、上記第２比較回路５２での不一致検出結果を把握することができる。
【００４０】
図２には、上記マイクロコンピュータ１における主要な処理の流れが示される。
【００４１】
上記第１ＣＰＵ２１及び第２ＣＰＵ２２では、メモリ１０から取得した命令（プログラム）を実行することによって、例えば自動車における制御対象の動作を制御する。このとき、上記第１ＣＰＵ２１及び第２ＣＰＵ２２では、ＳＣＩ５５やＡＣＮ５６を介して外部との間で各種情報のやり取りを可能とする。また、各種センサーからのアナログ信号がＡＤ変換器５７を介して取り込むことができる。さらに、ＰＷＭタイマ５４を制御してＰＷＭパルスのデューティ比を変化させる。このような動作を「通常動作」という。そして、上記マイクロコンピュータ１は、必要に応じて通常動作からエラーインジェクション処理へ遷移することができる。通常動作がメインルーチンで行われるとき、上記エラーインジェクション処理はサブルーチンで行われる。このようなエラーインジェクション処理は、上記マイクロコンピュータ１の信頼性をさらに向上させるために、所定の時間間隔（例えば１０分間隔）で定期的に実施される。例えば上記第１ＣＰＵ２１及び第２ＣＰＵ２２では、エラーインジェクション処理を実施するか否かの判別が行われ（Ｓ２０１）、この判別に基づいて、通常動作からエラーインジェクション処理に遷移される。尚、上記エラーインジェクション処理については、後に図３を参照しながら詳述する。
【００４２】
上記エラーインジェクション処理が終了されて通常動作が再開され（Ｓ２０３）、上記第１ＣＰＵ２１及び第２ＣＰＵ２２によるメモリアクセスが発生すると（Ｓ２０４）、このメモリアクセスがメモリ１０からのリードアクセスか否かの判別が行われ（Ｓ２０５）、リードアクセスの場合には、上記第１比較回路５１および上記第２比較回路５２において不一致検出が行われる（Ｓ２０６）。メモリ１０からのリードアクセスにて上記第１比較回路５１の不一致または上記第２比較回路５２の不一致を検出した場合には、不一致検出結果が論理値“１”とされ、それに基づいて第１割り込みコントローラ１１及び第２割り込みコントローラ１２によって、それぞれ第１ＣＰＵ２１及び第２ＣＰＵ２２に対して割り込み要求が発生される（Ｓ２０７）。この割り込み要求を受けて、第１ＣＰＵ２１及び第２ＣＰＵ２２では、当該割り込み要求に対して直ぐにリセットする必要があるか否かの判別が行われる（Ｓ２０８）。当該割り込み要求に対して、直ぐにリセットする必要が無いと判断された場合は、故障診断処理に遷移される。この故障診断処理は、ステップＳ２０９〜Ｓ２２２の処理を含む。
【００４３】
上記故障診断処理は以下のように行われる。
【００４４】
不一致を検出した場合、不一致が発生したメモリアドレスがエラーアドレスレジスタ７１，７２に保持されているため、このエラーアドレスが、第１ＣＰＵ２１及び第２ＣＰＵ２２により読み出される（Ｓ２０９）。そして、第１ＣＰＵ２１は、上記メモリ１０における上記エラーアドレスのデータマット１０ＡとＥＣＣマット１０Ｂのそれぞれに、ＥＣＣエラーを発生させるための所定データ（読み出された際にＥＣＣエラーとなってしまうデータを意味し、以下、それを「テストデータ」と称する）を書き込む（Ｓ２１０）。そして、上記第１ＣＰＵ２１は、上記ＥＣＣエラーを発生させるためのテストデータが第１ＥＣＣ回路４１によってエラー訂正された場合の期待値を、上記第１ＣＰＵ２１内の適宜のレジスタに保持する（Ｓ２１１）。次に第１ＣＰＵ２１は、上記第１メモリインタフェース３１を介して上記メモリ１０から上記テストデータを読出しを行う（Ｓ２１２）。このとき、第１ＥＣＣ回路４１では、上記メモリ１０から読み出されたテストデータのエラー訂正が行われる。第１ＣＰＵ２１は、上記第１ＥＣＣ回路４１でエラー訂正が行われたテストデータと、上記ステップＳ２１１で内部の適宜のレジスタに格納しておいた期待値とを比較する（Ｓ２１３）。この比較において、エラー訂正が行われたテストデータと期待値とが不一致であると判断された場合には、第２比較回路５２での比較結果は一致か否かの判別が行われる（Ｓ２１７）。この判別において、第２比較回路５２での比較結果は不一致であると判断された場合には、第１ＥＣＣ回路４１が故障していると判断し（Ｓ２１９）、この場合には、第１ＣＰＵ２１によるリセット処理に遷移される（Ｓ２２０）。また、上記ステップＳ２１７の判別において、第２比較回路５２での比較結果は一致すると判断された場合には、第２比較回路５２の故障と判断し（Ｓ２１８）、第１ＣＰＵ２１によるリセット処理に遷移される（Ｓ２２０）。さらに、上記ステップＳ２１３の判別において、エラー訂正が行われたテストデータと期待値とが一致すると判断された場合には、上記第１比較回路５１での比較結果は一致か否かの判別が行われる（Ｓ２１４）。この判別において、上記第１比較回路５１での比較結果は不一致であると判断された場合、上記第２ＥＣＣ回路４２の故障が疑われるが（Ｓ２１５）、上記第１ＥＣＣ回路４１は正常であり、第１メモリインタフェース３１を介することにより正しいデータを取得できることから、直ちにリセット処理に遷移する必要はなく、むしろ、リセット前の安全なシステム停止処理を実行し（Ｓ２１６）、その処理が完了した後にリセットする（Ｓ２２０）ようにしたほうが、システム全体としての信頼性を向上させる上で好ましい。ここで、「リセット前の安全なシステム停止処理」とは、直ちにシステムがリセットされた場合に不都合を生ずる場合の回避措置であり、例えば現在、モータのＰＷＭ制御中であれば、当該モータの回転を安全に停止させるための処理を挙げることができる。また、ＳＣＩ５５やＣＡＮ５６を介して通信が行われている場合には、当該通信が終了するまでリセットするのを待ったほうが良い場合があり、かかる場合においては、通信が終了するまでリセットするのを待たせる処理も、上記ステップＳ２１６における「リセット前の安全なシステム停止処理」に含めることができる。さらに、Ａ／Ｄ変換器５７によって入力アナログ信号のＡ／Ｄ変換処理が行われている場合には、当該Ａ／Ｄ変換処理が終了するまでリセットするのを待たせる処理も、上記ステップＳ２１６における「リセット前の安全なシステム停止処理」に含めることができる。
【００４５】
また、上記ステップＳ２１４の判別において、上記第１比較回路５１での比較結果は一致すると判断された場合、故障ではないにもかかわらず、何らかの原因で一時的に故障検出されたと考えられるため（Ｓ２２１）、リセットするか否かの判別を行う（Ｓ２２２）。この判別においてリセットの必要がある（ｙｅｓ）と判断された場合には、リセット前の安全なシステム停止処理を行った後にリセットされる（Ｓ２１６，Ｓ２２０）。また、上記ステップＳ２２２の判別において、リセットの必要はない（ｎｏ）と判断された場合には、故障診断処理が終了され、通常動作が開始される（Ｓ２０３）。
【００４６】
上記故障診断処理が実行されることで、第１ＣＣ回路４１及び第２ＥＣＣ回路４２の何れが故障しているのかを判定することができ、しかも故障の場合にはシステムがリセットされることで、エラーにかかるデータに基づく不所望な処理が回避され、また、必要に応じてリセット要求前の安全なシステム停止処理（Ｓ２１６）が行われることで、マイクロコンピュータ１による動作制御の信頼性の向上を図ることができる。
【００４７】
次に、上記ステップＳ２０２のエラーインジェクション処理について、図３を参照しながら説明する。上記ステップＳ２０２のエラーインジェクション処理は、ＥＣＣエラーを発生させるためのテストデータを上記メモリ１０のデータマット１０ＡとＥＣＣマット１０Ｂのそれぞれに書き込んだ後にそれを読み出し、上記第１ＥＣＣ回路４１及び上記第１ＣＰＵバスを介して伝達された上記テストデータを、上記テストデータの誤り訂正後の期待値と比較し、その比較結果に基づいて、上記第１ＥＣＣ回路４１の故障と上記第２ＥＣＣ回路４２の故障との判別を可能とするもので、基本的には図２における故障診断処理と同様の処理とされる。ただし、上記ステップＳ２０２のエラーインジェクション処理では、通常動作における上記メモリ１０へのリードアクセスの有無にかかわらず、任意のアドレスのデータマットとＥＣＣマットのそれぞれにテストデータの書き込みが行われる点が大きく相違する。すなわち、上記ステップＳ２０２のエラーインジェクション処理では、図３に示されるように、第１ＣＰＵ２１によって、上記メモリ１０における任意のアドレスのデータマットとＥＣＣマットのそれぞれに、ＥＣＣエラーを発生させるためのテストデータの書き込みが行われる（Ｓ３１０）。そして、上記第１ＣＰＵ２１は、上記ＥＣＣエラーを発生させるためのテストデータが第１ＥＣＣ回路４１によってエラー訂正された場合の期待値を、上記第１ＣＰＵ２１内の適宜のレジスタに保持する（Ｓ３１１）。次に第１ＣＰＵ２１は、上記第１メモリインタフェース３１を介して上記メモリ１０から上記テストデータを読出しを行う（Ｓ３１２）。このとき、第１ＥＣＣ回路４１では、上記メモリ１０から読み出されたテストデータのエラー訂正が行われる。第１ＣＰＵ２１は、上記第１ＥＣＣ回路４１でエラー訂正が行われたテストデータと、上記ステップＳ２１１で内部の適宜のレジスタに格納しておいた期待値とを比較する（Ｓ３１３）。この比較において、エラー訂正が行われたテストデータと期待値とが不一致であると判断された場合には、第２比較回路５２での比較結果は一致か否かの判別が行われる（Ｓ３１７）。この判別において、第２比較回路５２での比較結果は不一致であると判断された場合には、第１ＥＣＣ回路４１が故障していると判断し（Ｓ３１９）、この場合には、第１ＣＰＵ２１によるリセット処理に遷移される（Ｓ３２０）。また、上記ステップＳ３１７の判別において、第２比較回路５２での比較結果は一致すると判断された場合には、第２比較回路５２の故障と判断し（Ｓ３１８）、第１ＣＰＵ２１によるリセット処理に遷移される（Ｓ３２０）。さらに、上記ステップＳ３１３の判別において、エラー訂正が行われたテストデータと期待値とが一致すると判断された場合には、上記第１比較回路５１での比較結果は一致か否かの判別が行われる（Ｓ３１４）。この判別において、上記第１比較回路５１での比較結果は不一致であると判断された場合、上記第２ＥＣＣ回路４２の故障と判断し（Ｓ３１５）、リセット前の安全なシステム停止処理が行われ（Ｓ３１６）、その処理が完了した後にリセット処理に遷移される（Ｓ３２０）。ここで、リセット前の安全なシステム停止処理とは、直ちにシステムがリセットされた場合に不都合を生ずる場合の回避措置であり、その具体例は図２におけるステップ２１６の場合と同様とされる。
【００４８】
また、上記ステップＳ３１４の判別において、上記第１比較回路５１での比較結果は一致すると判断された場合には、本サブルーチンによるエラーインジェクション処理が終了され、図２に示されるメインルーチンに戻され、通常動作が開始される（Ｓ２０３）。
【００４９】
このようなエラーインジェクション処理が、所定の時間間隔で定期的に実行されることで、第１ＣＣ回路４１及び第２ＥＣＣ回路４２の何れが故障しているのかを判定することができ、しかも故障の場合にはシステムがリセットされることで、エラーにかかるデータに基づく不所望な処理が回避され、また、必要に応じてリセット要求前の安全なシステム停止処理（Ｓ３１６）が行われることで、マイクロコンピュータ１による動作制御の信頼性の向上を図ることができる。
【００５０】
上記の例によれば、以下の作用効果を得ることができる。
【００５１】
（１）上記メモリ１０からデータ読み出しが行われる毎に、上記第１ＣＰＵ２１は、第１比較回路５２での比較結果に基づいてＥＣＣエラーを生じたか否かを判断し、ＥＣＣエラーを生じた場合には、上記第１ＥＣＣ回路の故障と上記第２ＥＣＣ回路の故障との判別を可能とする故障診断処理故障診断処理（Ｓ２０９〜Ｓ２２２）が行われることで、二重化されたＥＣＣ回路の何れが故障しているかの判定を行うことができる。
【００５２】
（２）上記ステップＳ２１７の判別において、第２比較回路５２での比較結果は一致すると判断された場合には、第２比較回路５２の故障と判断し（Ｓ２１８）、第１ＣＰＵ２１によるリセット処理に遷移される（Ｓ２２０）。さらに、上記ステップＳ２１３の判別において、エラー訂正が行われたテストデータと期待値とが一致すると判断された場合には、上記第１比較回路５１での比較結果は一致か否かの判別が行われる（Ｓ２１４）。この判別において、上記第１比較回路５１での比較結果は不一致であると判断された場合には、直ちにリセット処理に遷移する必要はなく、リセット前の安全なシステム停止処理を実行し（Ｓ２１６）、その処理が完了した後にリセット処理に遷移される（Ｓ２２０）ことにより、システム全体としての信頼性をさらに向上させることができる。
【００５３】
（３）エラーインジェクション処理（Ｓ２０２）が所定の時間間隔で定期的に実施されることにより、上記マイクロコンピュータ１の信頼性をさらに向上させることができる。
【００５４】
以上本発明者によってなされた発明を具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【００５５】
例えば、電源投入に起因して行われるパワーオンリセットや、割り込み等のリセット処理の際に、上記エラーインジェクション処理（Ｓ２０２）が行われるようにしても良い。このようにすることで、上記マイクロコンピュータ１の信頼性をさらに向上させることができる。
【図面の簡単な説明】
【００５６】
【図１】本発明にかかるマイクロコンピュータにおける主要部の詳細な構成例ブロック図である。
【図２】上記マイクロコンピュータにおける故障診断の流れを示すフローチャートである。
【図３】上記マイクロコンピュータにおけるエラーインジェクション処理の流れを示すフローチャートである。
【図４】上記マイクロコンピュータにおける全体的な構成例ブロック図である。
【符号の説明】
【００５７】
１  マイクロコンピュータ
１０  メモリ
１０Ａ  データマット
１０Ｂ  ＥＣＣマット
１１  第１割り込みコントローラ
１２  第２割り込みコントローラ
２１  第１ＣＰＵ
２２  第２ＣＰＵ
３１  第１メモリインタフェース
３２  第２メモリインタフェース
４１  第１ＥＣＣ回路
４２  第２ＥＣＣ回路
５１  第１比較回路
５２  第２比較回路
６１  第１ＣＰＵバス
６２  第２ＣＰＵバス
【図１】
2009282849.tif 000003
【図２】
2009282849.tif 000004
【図３】
2009282849.tif 000005
【図４】
2009282849.tif 000006