(57)【要約】【課題】マイクロプロセッサの診断時間を短縮する。【解決手段】本発明のマイクロプロセッサの異常診断方法は、コンパレータ１６の診断を、監視回路３２及びフェールセーフ回路３４を介さずに、コンパレータ群１４に含まれるコンパレータ１６の数量分だけ繰り返し行った後に、監視回路３２及びフェールセーフ回路３４の診断を行うものである。従って、従来のマイクロプロセッサの診断方法と比較すると、監視回路３２及びフェールセーフ回路３４の診断を繰り返し行う必要がないため、診断時間を短縮することができる。【選択図】図３
2015197729.tif 000002
【特許請求の範囲】
【請求項１】
冗長に駆動可能な２つのマイクロプロセッサコアと、該２つのマイクロプロセッサコアの各々に接続される複数のコンパレータと、故障判定回路とを含むマイクロプロセッサの異常診断方法であって、
前記マイクロプロセッサコアと前記複数のコンパレータとは、前記複数のコンパレータの演算結果に基づいて、外部の監視回路により動作が監視され、該監視回路は、前記マイクロプロセッサの異常検出時にフェールセーフ回路へフェールセーフ処理を実行させるものであり、
前記故障判定回路は、前記複数のコンパレータ毎に疑似故障信号を注入し、前記フェールセーフ回路を介さずに、或いは、前記監視回路及び前記フェールセーフ回路を介さずに、前記複数のコンパレータの各々の診断を行うことを特徴とするマイクロプロセッサの異常診断方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサの異常診断方法に関するものである。
【背景技術】
【０００２】
一般的に、車載装置に用いられるデュアルコアのマイクロプロセッサは、冗長に駆動させるために、マスタコアとスレーブコアとの双方で同じ演算が行われている。通常時は、ロックステップ処理により、マスタコアで行った演算結果と、スレーブコアで行った演算結果とが、マイクロプロセッサ内のコンパレータで常に比較され、マイクロプロセッサが正常に動作しているか監視される。コンパレータの比較結果は、マイクロプロセッサ外部の監視回路により監視され、比較結果が異なる等の異常を検出した場合には、監視回路からフェールセーフ回路へ指令信号が送信され、フェールセーフ回路によりフェールセーフ処理が行われる。従って、マイクロプロセッサの使用前には、上記の各回路及び各機能が正常に動作していることを確認する必要がある。
【０００３】
例えば、特許文献１には、マイクロプロセッサの２つのコアに、互いに内容が異なる作業レジスタを設定して、これらの異なる内容をコンパレータに供給したときに、コンパレータによりエラー信号が生成されることを確認する方法が開示されている。
又、図８には、マイクロプロセッサ１００内の複数のコンパレータ１６と、監視回路３２及びフェールセーフ回路３４とを診断する、従来の異常診断方法が示されている。従来の異常診断方法では、各コンパレータ１６の一方の入力側に、疑似故障発生回路１８で発生させた疑似故障信号を入力し、この際のコンパレータ１６の比較結果を、出力インタフェース２４を介して監視回路３２へ出力する。そして、監視回路３２からの指令をフェールセーフ回路３４により受け、フェールセーフ回路３４においてフェールセーフ処理が行われることを示す信号を、入力インタフェース２６を介してマイクロプロセッサ１００内の故障判定回路２８により受信して、故障判定回路２８において診断を行う。このような一連の診断処理を、複数のコンパレータ１６の数量分だけ、繰り返し行うものである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２００９−５１６２７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、図８に示す従来の異常診断方法では、繰り返し行う一連の診断処理Ｓ２１０〜Ｓ２４０に、監視回路３２の診断Ｓ２２０やフェールセーフ回路３４の診断Ｓ２３０が含まれているため、診断時間が長くなってしまうという課題があった。
本発明は上記課題に鑑みてなされたものであり、その目的とするところは、マイクロプロセッサの診断時間を短縮することにある。
【課題を解決するための手段】
【０００６】
（発明の態様）
上記課題を解決するための手段として、本発明は、冗長に駆動可能な２つのマイクロプロセッサコアと、該２つのマイクロプロセッサコアの各々に接続される複数のコンパレータと、故障判定回路とを含むマイクロプロセッサの異常診断方法であって、前記マイクロプロセッサコアと前記複数のコンパレータとは、前記複数のコンパレータの演算結果に基づいて、外部の監視回路により動作が監視され、該監視回路は、前記マイクロプロセッサの異常検出時にフェールセーフ回路へフェールセーフ処理を実行させるものであり、前記故障判定回路は、前記複数のコンパレータ毎に疑似故障信号を注入し、前記フェールセーフ回路を介さずに、或いは、前記監視回路及び前記フェールセーフ回路を介さずに、前記複数のコンパレータの各々の診断を行うことを特徴とするものである。
【発明の効果】
【０００７】
本発明はこのように構成したので、マイクロプロセッサの診断時間を短縮することが可能となる。
【図面の簡単な説明】
【０００８】
【図１】本発明の第１の実施の形態に係るマイクロプロセッサの異常診断方法を示しており、（ａ）は信号の流れを概略的に示すブロック図、（ｂ）は処理の流れを示すフローチャートである。
【図２】図１の異常診断方法におけるコンパレータ及び監視回路の診断方法を説明するためのイメージ図である。
【図３】本発明の第２の実施の形態に係るマイクロプロセッサの異常診断方法を示しており、（ａ）は信号の流れを概略的に示すブロック図、（ｂ）は処理の流れを示すフローチャートである。
【図４】図３の異常診断方法におけるコンパレータの診断方法を説明するためのイメージ図である。
【図５】図３の異常診断方法における監視回路の診断方法を説明するためのイメージ図である。
【図６】第３の実施の形態に係るマイクロプロセッサの異常診断方法の、信号の流れを概略的に示すブロック図である。
【図７】図６の異常診断方法におけるコンパレータの診断方法を説明するためのイメージ図である。
【図８】従来のマイクロプロセッサの異常診断方法を示しており、（ａ）は信号の流れを概略的に示すブロック図、（ｂ）は処理の流れを示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下、実施の形態を図面に基づき説明する。なお、図１〜図８において、共通する部分については、同一の符号を付している。又、以降の説明において、「通常時」という記載は、マイクロプロセッサの異常診断により正常であると判定された後に、マイクロプロセッサを実際の用途に用いた状態を示している。
図１及び図２は、本発明の第１の実施の形態に係るマイクロプロセッサの異常診断方法を示している。まず、図１（ａ）及び図２を参照して、本異常診断方法が診断の対象とするマイクロプロセッサ１０と、マイクロプロセッサ１０が搭載された車載制御装置３０との構成について説明する。
【００１０】
図１（ａ）の例において、マイクロプロセッサ１０は、例えばエンジン制御ユニット等の車載制御装置３０に搭載されており、２つのマイクロプロセッサコア、すなわち、マスタコア１２ａ及びスレーブコア１２ｂを有するデュアルコアのマイクロプロセッサである。更に、マイクロプロセッサ１０は、複数のコンパレータ１６を含むコンパレータ群１４、ＯＲ回路２２、出力インタフェース２４、入力インタフェース２６、故障判定回路２８を有している。又、車載制御装置３０には、マイクロプロセッサ１０の他に、監視回路３２やフェールセーフ回路３４等が搭載されている。
【００１１】
コンパレータ群１４は、複数のコンパレータ１６と、コンパレータ１６毎に設けられた疑似故障発生回路１８及び疑似故障切替回路２０とで構成されている。コンパレータ１６の各々は、図１（ａ）の例では、一方の入力がマスタコア１２ａに接続され、もう一方の入力が疑似故障切替回路２０に接続されている。各疑似故障切替回路２０は、スレーブコア１２ｂに接続されており、コンパレータ１６への一方の入力を、スレーブコア１２ｂからの信号と、疑似故障発生回路１８により発生する疑似故障信号とに、切替可能なものである。なお、疑似故障発生回路１８により発生する疑似故障信号には、マスタコア１２ａから各コンパレータ１６へ入力される信号と比較した際に、必ず不一致となる信号が設定される。
【００１２】
ＯＲ回路２２は、複数のコンパレータ１６から入力される比較結果をＯＲ演算するものである。すなわち、複数のコンパレータ１６からの入力のうち、１つでも異常を示す比較結果があれば、異常を示す信号を出力する。出力インタフェース２４は、マイクロプロセッサ１０から信号を出力するためのものであり、図１（ａ）の例では、ＯＲ回路２２の演算結果を監視回路３２へ出力するために用いている。又、入力インタフェース２６は、マイクロプロセッサ１０へ信号を入力するためのものであり、図１（ａ）の例では、監視回路３２からの出力信号を、マイクロプロセッサ１０内の故障判定回路２８へ入力するために用いている。故障判定回路２８は、入力された信号から異常の有無を判定するものであり、図１（ａ）の例では、監視回路３２からの信号を受けて、疑似故障信号が入力されているコンパレータ１６と監視回路３２との、何れか一方又は双方で、異常が発生しているか否かを判定するように構成されている。
【００１３】
更に、マイクロプロセッサ１０は、図１（ａ）での図示は省略しているが、図２に示すように、ＯＲ回路２２と出力インタフェース２４との間に、ピン機能制御手段５０を備えている。このピン機能制御手段５０は、例えばＰＦＣ（Ｐｉｎ  Ｆｕｎｃｔｉｏｎ  Ｃｏｎｔｒｏｌｌｅｒ）であり、出力インタフェース２４の機能を設定可能なものである。図２の例では、ピン機能制御手段５０は、出力インタフェース２４から出力する信号を、ＯＲ回路２２を介したコンパレータ１６の出力値と、ポート出力用のデータレジスタに設定した値と、任意の他の機能からの出力値との間で、切替可能なものである。
【００１４】
一方、マイクロプロセッサ１０の外部に設けられている監視回路３２は、ＯＲ回路２２及び出力インタフェース２４を介して、複数のコンパレータ１６による比較結果を受け、マスタコア１２ａとスレーブコア１２ｂとの演算結果に、相違がないことを監視するものである。そして、監視回路３２は、複数のコンパレータ１６の比較結果の何れかに、相違があることを検出した場合に、フェールセーフ回路３４に対して、フェールセーフ処理を実行させる指令信号を送信する。なお、本実施形態において、監視回路３２は、図２に示すように、サブＣＰＵ４０の内部に設けられている。
又、フェールセーフ回路３４は、例えばリレー遮断回路等であり、監視回路３２からの指令信号を受けて、フェールセーフ処理を行うものである。なお、図１（ａ）は、本異常診断方法により、コンパレータ１６及び監視回路３２の診断を行う際の信号の流れを示しているため、監視回路３２がフェールセーフ回路３４へ送信する指令信号の流れは図示していない。
【００１５】
次に、図１（ｂ）に示すフローチャートに沿って、図１（ａ）及び図２を参照しながら、本発明の第１の実施の形態に係るマイクロプロセッサの異常診断方法の各処理工程について説明する。
Ｓ１０（コンパレータの診断）：各コンパレータ１６を診断するための処理工程である。具体的には、コンパレータ群１４の中で未だ診断を行っていないコンパレータ１６の１つを診断対象に設定し、この診断対象のコンパレータ１６に対して疑似故障信号を入力（エラー注入）する。すなわち、診断対象のコンパレータ１６の一方の入力に接続された疑似故障切替回路２０により、コンパレータ１６へ入力する信号を、スレーブコア１２ｂの演算結果の信号から、疑似故障発生回路１８で発生させる疑似故障信号へと切り替える。この際、診断対象以外のコンパレータ１６に対しては、疑似故障信号ではなく、スレーブコア１２ｂの演算結果の信号を入力することとする。
【００１６】
そして、診断対象のコンパレータ１６に、マスタコア１２ａの演算結果の信号と疑似故障信号とを比較させる。ここで、診断対象のコンパレータ１６が正常に動作していると仮定すると、診断対象のコンパレータ１６は、入力されたマスタコア１２ａの演算結果の信号と疑似故障信号とが相違しているため、相違していることを示す比較結果（説明の便宜上「１」とする）をＯＲ回路２２へ出力する。又、診断対象以外のコンパレータ１６は、マスタコア１２ａの演算結果の信号とスレーブコア１２ｂの演算結果の信号とを比較して、相違していないことを示す比較結果（説明の便宜上「０」とする）をＯＲ回路２２へ出力する。この場合、ＯＲ回路２２は、診断対象のコンパレータ１６からの入力が「１」であり、診断対象以外のコンパレータ１６からの入力が「０」であることから、相違があることを示す演算結果「１」を出力する。
【００１７】
一方、診断対象のコンパレータ１６が正常に動作していないと仮定すると、診断対象のコンパレータ１６は、入力されたマスタコア１２ａの演算結果の信号と疑似故障信号とが相違しているにも関わらず、相違していないことを示す比較結果「０」をＯＲ回路２２へ出力する。この場合、ＯＲ回路２２は、診断対象のコンパレータ１６からの入力が「０」であり、診断対象以外のコンパレータ１６からの入力も「０」であることから、相違がないことを示す演算結果「０」を出力する。
すなわち、ＯＲ回路２２は、診断対象のコンパレータ１６の比較結果が「１」又は「０」の何れであっても、演算結果として、診断対象のコンパレータ１６の比較結果と等しい結果を出力することとなる。
【００１８】
Ｓ２０（監視回路の診断）：監視回路３２を診断するための処理工程である。具体的には、上記Ｓ１０において診断対象としたコンパレータ１６の比較結果を、ＯＲ回路２２及び出力インタフェース２４を介して、サブＣＰＵ４０へ出力する。すなわち、本異常診断方法では、図２に示しているように、ピン機能制御手段５０を用いて、出力インタフェース２４からＯＲ回路２２の演算結果が出力されるように設定する。そして、サブＣＰＵ４０において、マイクロプロセッサ１０から出力された診断対象のコンパレータ１６の比較結果を、入力インタフェース４２を介してポート入力として受信し、監視回路３２へ伝達する。
【００１９】
ここで、監視回路３２と診断対象のコンパレータ１６との双方が正常に動作していると仮定すると、監視回路３２は、マイクロプロセッサ１０から、相違があることを示す演算結果「１」を受信するため、マイクロプロセッサ１０に異常が発生していると判定する。次に、監視回路３２による判定結果を示す信号を、サブＣＰＵ４０の出力インタフェース４４、マイクロプロセッサ１０の入力インタフェース２６を介して、故障判定回路２８へ入力する。すると、故障判定回路２８は、診断対象のコンパレータ１６に対して疑似故障信号が入力された状態で、診断対象のコンパレータ１６が相違を示す比較結果を出力し、それを受けた監視回路３２が異常発生の判定結果を出力したと判断する。このため、故障判定回路２８により、診断対象のコンパレータ１６と監視回路３２との双方が、正常に動作していると判定される。
【００２０】
一方、監視回路３２が正常に動作し、診断対象のコンパレータ１６が正常に動作していないと仮定すると、監視回路３２は、マイクロプロセッサ１０から、相違がないことを示す演算結果「０」を受信するため、マイクロプロセッサ１０に異常が発生していないと判定し、この判定結果を示す信号を、故障判定回路２８へ出力する。又、診断対象のコンパレータ１６が正常に動作し、監視回路３２が正常に動作していないと仮定すると、監視回路３２は、マイクロプロセッサ１０から、相違があることを示す演算結果「１」を受信するにも関わらず、マイクロプロセッサ１０に異常が発生していないと判定し、この判定結果を示す信号を、故障判定回路２８へ出力する。上述した何れの場合においても、診断対象のコンパレータ１６に対して疑似故障信号が入力されているにも関わらず、マイクロプロセッサ１０に異常が発生していないことを示す信号を受信するため、故障判定回路２８は、診断対象のコンパレータ１６又は監視回路３２が、正常に動作していないと判定する。
【００２１】
以上のように、本実施形態では、上記Ｓ１０及びＳ２０の処理工程を組み合わせて、診断対象のコンパレータ１６及び監視回路３２の診断を行う。
なお、上述した監視回路３２から故障判定回路２８への入力は、マイクロプロセッサ１０とサブＣＰＵ４０との間のＣＰＵ間通信のラインにより行えばよい。
【００２２】
Ｓ３０（診断回数加算）：上記Ｓ１０及びＳ２０の処理工程を実施した後に、診断回数を１加算する。
【００２３】
Ｓ４０（診断回数判定）：診断回数と、コンパレータ群１４が有する複数のコンパレータ１６の数量とを比較する。そして、診断回数がコンパレータ１６の数量に満たない場合（ＮＯ）は、Ｓ１０へ復帰し、診断回数がコンパレータ１６の数量に達した場合（ＹＥＳ）は、Ｓ５０へ移行する。すなわち、コンパレータ群１４が有する全てのコンパレータ１６を診断するまで、Ｓ１０〜Ｓ３０の処理工程を繰り返し行う。
【００２４】
Ｓ５０（フェールセーフ回路の診断）：フェールセーフ回路３４を診断するための処理工程である。具体的には、例えば、図８（ａ）に示した従来のマイクロプロセッサの異常診断方法の信号の流れのように、監視回路３２から出力される信号をフェールセーフ回路３４へ入力し、この入力を受けてフェールセーフ回路３４から出力される信号を、マイクロプロセッサ１０の故障判定回路２８へ入力する。すなわち、上記Ｓ１０、Ｓ２０の処理工程において正常に動作していると判定された何れかのコンパレータ１６に対して、疑似故障発生回路１８から疑似故障信号を入力し、このコンパレータ１６の比較結果を、ＯＲ回路２２及び出力インタフェース２４を介して、監視回路３２へ入力する。この際、コンパレータ１６は正常に動作しているため、監視回路３２には、相違があることを示す演算結果「１」が入力される。この入力を受けて、監視回路３２は、正常に動作している状態で、コンパレータ１６に異常があることを検出する。この際に監視回路３２から出力される、フェールセーフ処理を実行させるための指令信号を、フェールセーフ回路３４へ入力する。そして、フェールセーフ処理の実行の有無を示す信号を、フェールセーフ回路３４から、入力インタフェース２６を介して故障判定回路２８へ入力する。
【００２５】
ここで、フェールセーフ回路３４が正常に動作していると仮定すると、フェールセーフ回路３４は、監視回路３２からの指令信号を受けて、フェールセーフ処理を実行する状態となるため、フェールセーフ回路３４から故障判定回路２８へ、フェールセーフ処理が実行されることを示す信号が入力される。この際、故障判定回路２８は、コンパレータ１６の１つに疑似故障信号が入力されているため、フェールセーフ回路３４がフェールセーフ処理を実行するものと判断する。このため、故障判定回路２８により、フェールセーフ回路３４が正常に動作していると判定される。
【００２６】
一方、フェールセーフ回路３４が正常に動作していないと仮定すると、フェールセーフ回路３４は、監視回路３２からの指令信号を受けても、フェールセーフ処理を実行する状態とならないため、フェールセーフ回路３４から故障判定回路２８へ、フェールセーフ処理が実行されることを示す信号が入力されない。この際、故障判定回路２８は、コンパレータ１６の１つに疑似故障信号が入力されているにも関わらず、フェールセーフ回路３４がフェールセーフ処理を実行しないと判断する。このため、故障判定回路２８により、フェールセーフ回路３４が正常に動作していないと判定される。
【００２７】
以上説明したように、本発明の第１の実施の形態に係るマイクロプロセッサの異常診断方法は、図１に示すように、複数のコンパレータ１６の各々の診断を、フェールセーフ回路３４を介さずに行う、言い換えれば、複数のコンパレータ１６の各々の診断のための信号を監視回路３２から出力して故障判定回路２８が入力するようにしたものである。すなわち、コンパレータ１６及び監視回路３２の一連の診断（Ｓ１０及びＳ２０）を、コンパレータ群１４に含まれるコンパレータ１６の数量分だけ繰り返し行った（Ｓ４０）後に、フェールセーフ回路３４の診断（Ｓ５０）を行う。これに対し、図８に示した従来のマイクロプロセッサの異常診断方法は、コンパレータ１６、監視回路３２、フェールセーフ回路３４の一連の診断（Ｓ２１０〜Ｓ２３０）を、コンパレータ群１４に含まれるコンパレータ１６の数量分だけ繰り返し行う（Ｓ２５０）ものである。従って、本発明の第１の実施の形態に係るマイクロプロセッサの異常診断方法は、従来のマイクロプロセッサの異常診断方法と比較すると、フェールセーフ回路３４の診断を繰り返し行う必要がないため、診断時間を短縮することができる。
【００２８】
更に、本発明の第１の実施の形態に係るマイクロプロセッサの異常診断方法は、フェールセーフ回路３４の診断工程（Ｓ５０）において、疑似故障信号を入力するコンパレータ１６として、最後に実施したコンパレータ１６の診断工程（Ｓ１０）で疑似故障信号を入力して、正常に動作していると判定されたコンパレータ１６を、続けて利用することとすれば、疑似故障信号を入力するコンパレータ１６の設定や疑似故障信号の入力を、改めて行う必要が無くなるため、更に診断時間を短縮することができる。
又、本発明の第１の実施の形態に係るマイクロプロセッサの異常診断方法は、複数のコンパレータ１６と監視回路３２との診断を、フェールセーフ回路３４を介さずに行うことから、従来のマイクロプロセッサの異常診断方法と比較して、異常発生箇所の切り分けが容易になる。
【００２９】
次に、図３〜図５を参照して、本発明の第２の実施の形態に係るマイクロプロセッサの異常診断方法について説明する。なお、本発明の第２の実施の形態に係るマイクロプロセッサの異常診断方法は、図１及び図２に示した本発明の第１の実施の形態に係るマイクロプロセッサの異常診断方法との比較において、信号の流れの一部や処理の流れの一部を除き、同様の構成のものである。このため、本発明の第１の実施の形態に係るマイクロプロセッサの異常診断方法と、同様の部分の構成や処理については、説明を省略する。
【００３０】
図３（ａ）及び図４の例において、出力インタフェース２４は、ＯＲ回路２２の演算結果を、一端マイクロプロセッサ１０’の外部へ出力するために用いられ、又、入力インタフェース２６は、マイクロプロセッサ１０’の外部へ出力したＯＲ回路２２の演算結果を、マイクロプロセッサ１０’内の故障判定回路２８へ入力するために用いられる。すなわち、ＯＲ回路２２の演算結果は、出力インタフェース２４を介してマイクロプロセッサ１０’の外部に出力された後、入力インタフェース２６を介して再びマイクロプロセッサ１０’の内部に入力される。又、故障判定回路２８は、ＯＲ回路２２からの演算結果を受けて、疑似故障信号が入力されているコンパレータ１６で、異常が発生しているか否かを判定するように構成されている。
【００３１】
監視回路３２は、通常時は、複数のコンパレータ１６による比較結果を受け、マスタコア１２ａとスレーブコア１２ｂとの演算結果に、相違がないことを監視する。フェールセーフ回路３４は、監視回路３２からの指令信号を受けた場合に、フェールセーフ処理を行う。なお、図３（ａ）は、本異常診断方法により、コンパレータ１６の診断を行う際の信号の流れを示しているため、通常時に、マイクロプロセッサ１０’から監視回路３２へ入力される信号や、監視回路３２からフェールセーフ回路３４へ送信する指令信号の流れは、図示していない。
【００３２】
続いて、図３（ｂ）に示すフローチャートに沿って、図３（ａ）、図４、図５を参照しながら、本発明の第２の実施の形態に係るマイクロプロセッサの異常診断方法の各処理工程について説明する。
Ｓ１１０（コンパレータの診断）：図１（ｂ）のＳ１０と同様の処理を実行する。その後、ＯＲ回路２２の演算結果を、出力インタフェース２４及び入力インタフェース２６を介して、故障判定回路２８へ入力する。すなわち、本処理工程では、図４に示しているように、ピン機能制御手段５０を用いて、出力インタフェース２４からＯＲ回路２２の演算結果が出力されるように設定する。
【００３３】
ここで、診断対象のコンパレータ１６が正常に動作していると仮定すると、故障判定回路２８は、ＯＲ回路２２から、相違があることを示す演算結果「１」を受信する。すると、故障判定回路２８は、診断対象のコンパレータ１６に対して疑似故障信号が入力されているため、診断対象のコンパレータ１６が相違を示す比較結果を出力したと判断する。このため、故障判定回路２８により、診断対象のコンパレータ１６が正常に動作していると判定される。
【００３４】
一方、診断対象のコンパレータ１６が正常に動作していないと仮定すると、故障判定回路２８は、ＯＲ回路２２から、相違がないことを示す演算結果「０」を受信する。すると、故障判定回路２８は、診断対象のコンパレータ１６に対して疑似故障信号が入力されているにも関わらず、診断対象のコンパレータ１６が、相違がないことを示す比較結果を出力したと判断する。このため、故障判定回路２８により、診断対象のコンパレータ１６が正常に動作していないと判定される。
【００３５】
Ｓ１２０（診断回数加算）：上記Ｓ１１０の処理工程を実施した後に、診断回数を１加算する。
Ｓ１３０（診断回数判定）：診断回数と、コンパレータ群１４が有する複数のコンパレータ１６の数量とを比較する。そして、診断回数がコンパレータ１６の数量に満たない場合（ＮＯ）は、Ｓ１１０へ復帰し、診断回数がコンパレータ１６の数量に達した場合（ＹＥＳ）は、Ｓ１４０へ移行する。すなわち、コンパレータ群１４が有する全てのコンパレータ１６を診断するまで、Ｓ１１０及びＳ１２０の処理工程を繰り返し行う。
【００３６】
Ｓ１４０（監視回路の診断）：図５に示すように、ピン機能制御手段５０を用いて、出力インタフェース２４から、ポート出力用のデータレジスタの設定値が出力されるように設定する。この際、ポート出力用のデータレジスタには、コンパレータ１６が相違を示す際に出力する値と同じ値を設定する。そして、データレジスタの設定値を、出力インタフェース２４及びサブＣＰＵ４０の入力インタフェース４２を介して、監視回路３２へ入力する。
【００３７】
ここで、監視回路３２が正常に動作していると仮定すると、監視回路３２は、マイクロプロセッサ１０’から、相違があることを示す信号を受信するため、マイクロプロセッサ１０’に異常があると判定する。次に、監視回路３２による判定結果を示す信号を、サブＣＰＵ４０の出力インタフェース４４、マイクロプロセッサ１０’の入力インタフェース２６を介して、故障判定回路２８へ入力する。すると、故障判定回路２８は、コンパレータ１６が相違を示す際に出力する値と同じ値を設定した、ポート出力用のデータレジスタの設定値を受けて、監視回路３２が異常発生の判定結果を出力したと判断する。このため、故障判定回路２８により、監視回路３２が正常に動作していると判定される。
【００３８】
一方、監視回路３２が正常に動作していないと仮定すると、監視回路３２は、マイクロプロセッサ１０’から、相違があることを示す比較結果を受信するにも関わらず、マイクロプロセッサ１０’に異常があると判定しない。このため、この判定結果を示す信号を故障判定回路２８に入力すると、故障判定回路２８は、コンパレータ１６が相違を示す際に出力する値と同じ値を設定した、ポート出力用のデータレジスタの設定値を出力しているにも関わらず、監視回路３２が、異常があることを示す信号を出力していないと判断し、監視回路３２が正常に動作していないと判定する。
なお、上述した監視回路３２から故障判定回路２８への入力は、マイクロプロセッサ１０’とサブＣＰＵ４０との間のＣＰＵ間通信のラインにより行えばよい。
【００３９】
Ｓ１５０（フェールセーフ回路の診断）：図１（ｂ）のＳ５０と同様の処理を実行する。この際、出力インタフェース２４から出力する信号を、ピン機能制御手段５０を用いて、コンパレータ１６が相違を示す際に出力する値と同じ値を設定したポート出力用のデータレジスタの設定値へ切り替えて、フェールセーフ回路３４の診断を行ってもよい。
【００４０】
以上説明したように、本発明の第２の実施の形態に係るマイクロプロセッサの異常診断方法は、図３に示すように、複数のコンパレータ１６の各々の診断を、監視回路３２及びフェールセーフ回路３４を介さずに行うものである。すなわち、コンパレータ１６の診断（Ｓ１１０）を、コンパレータ群１４に含まれるコンパレータ１６の数量分だけ繰り返し行った（Ｓ１３０）後に、監視回路３２の診断（Ｓ１４０）及びフェールセーフ回路３４の診断（Ｓ１５０）を行うものである。従って、本発明の第２の実施の形態に係るマイクロプロセッサの異常診断方法は、監視回路３２の診断を繰り返し行う必要がないため、本発明の第１の実施の形態に係るマイクロプロセッサの異常診断方法よりも更に、診断時間を短縮することができる。
【００４１】
更に、本発明の第２の実施の形態に係るマイクロプロセッサの異常診断方法は、複数のコンパレータ１６の診断を、監視回路３２及びフェールセーフ回路３４を介さずに行う、言い換えれば、複数のコンパレータ１６の各々の診断のためにマイクロプロセッサから出力した信号を故障判定回路２８が入力するようにしたものである。このため、各コンパレータ１６と監視回路３２とフェールセーフ回路３４との間で、異常発生箇所を切り分けることができる。
【００４２】
次に、図６及び図７を参照して、第３の実施の形態に係るマイクロプロセッサの異常診断方法について説明する。なお、第３の実施の形態に係るマイクロプロセッサの異常診断方法は、図３〜図５に示した本発明の第２の実施の形態に係るマイクロプロセッサの異常診断方法との比較において、ＯＲ回路２２からの出力をマイクロプロセッサ１０”の外部に出力しない点を除き、同様の構成のものである。このため、本発明の第２の実施の形態に係るマイクロプロセッサの異常診断方法と、同様の部分の構成や処理については、説明を省略する。
【００４３】
図６及び図７の例において、マイクロプロセッサ１０”は、出力インタフェース２４の状態をマイクロプロセッサ１０”の内部で参照可能なものである。このため、マイクロプロセッサ１０”の故障判定回路２８は、ＯＲ回路２２の演算結果等を、出力インタフェース２４から参照できる。又、出力インタフェース２４は、通常時や監視回路３２及びフェールセーフ回路３４の診断時に、ＯＲ回路２２の演算結果やポート出力用のレジスタの設定値を、マイクロプロセッサ１０”から監視回路３２へ出力するために用いられる。
【００４４】
第３の実施の形態に係るマイクロプロセッサの異常診断方法の処理の流れは、図３（ｂ）に示した本発明の第２の実施の形態に係るマイクロプロセッサの異常診断方法の処理の流れと同様である。但し、コンパレータの診断（Ｓ１１０）では、故障判定回路２８が、ＯＲ回路２２の演算結果を、マイクロプロセッサ１０”の外部を介することなく、出力インタフェース２４から直接参照する。
【００４５】
以上の如く、第３の実施の形態に係るマイクロプロセッサの異常診断方法は、図６及び図７に示すように、マイクロプロセッサ１０”の内部において、ＯＲ回路２２の演算結果、すなわち、診断対象のコンパレータ１６の比較結果を、故障判定回路２８により出力インタフェース２４から直接参照して、診断対象のコンパレータ１６を診断するものである。従って、第３の実施の形態に係るマイクロプロセッサの異常診断方法は、本発明の第２の実施の形態に係るマイクロプロセッサの異常診断方法と比較すると、診断対象のコンパレータ１６の比較結果を、一端マイクロプロセッサ１０”の外部に出力した後に、再度マイクロプロセッサ１０”の内部に入力する必要がないため、診断時間を更に短縮することが可能である。
【００４６】
なお、上記説明中の「入力インタフェース」という表現は、マイクロプロセッサやサブＣＰＵに信号を入力するための機能的な意味で用いている。従って、図示されている入力インタフェースの数が１つであっても、物理的には複数のピンを使用している場合があり、更に、同一の符号で示されている入力インタフェースであっても、物理的には別のピンを使用している場合もある。これは、上記説明中の「出力インタフェース」という表現についても同様である。
【符号の説明】
【００４７】
１０、１０’、１０”：マイクロプロセッサ、１２ａ：マスタコア、１２ｂ：スレーブコア、１６：コンパレータ、３２：監視回路、３４：フェールセーフ回路
【図１】
2015197729.tif 000003
【図２】
2015197729.tif 000004
【図３】
2015197729.tif 000005
【図４】
2015197729.tif 000006
【図５】
2015197729.tif 000007
【図６】
2015197729.tif 000008
【図７】
2015197729.tif 000009
【図８】
2015197729.tif 000010