(57)【要約】【課題】処理継続性の向上、故障検出結果出力処理のリアルタイム性確保、故障判定信号の不正出力防止、小面積低コスト化を実現させた、情報処理装置を提供する。【解決手段】フェイルセーフ機能を有する情報処理装置であって、故障検出機能を有する演算処理ユニットと、故障検出の対象となるプログラムまたは故障検出の対象外となるプログラムのアドレス範囲を記憶するアドレス記憶部と、演算処理ユニットが実行するプログラムを監視して、その実行するプログラムがアドレス記憶部に記憶されたアドレス範囲のプログラムであるか否かを判断する監視判断部と、監視判断部におけるプログラム判断の結果に基づいて、演算処理ユニットが検出した結果を出力するか否かを制御する出力制御部とを備える。【選択図】図１
2015072567.tif 000002
【特許請求の範囲】
【請求項１】
フェイルセーフ機能を有する情報処理装置であって、
故障検出機能を有する演算処理ユニットと、
故障検出の対象となるプログラムまたは故障検出の対象外となるプログラムのアドレス範囲を記憶するアドレス記憶部と、
前記演算処理ユニットが実行するプログラムを監視して、当該実行するプログラムが前記アドレス記憶部に記憶されたアドレス範囲のプログラムであるか否かを判断する監視判断部と、
前記監視判断部におけるプログラム判断の結果に基づいて、前記演算処理ユニットが検出した結果を出力するか否かを制御する出力制御部とを備えることを特徴とする、情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵ（Central Processing Unit）などの演算処理手段の故障を検出する機能を有する情報処理装置に関する。
【背景技術】
【０００２】
安全性が重要な自動車などに搭載される情報処理装置には、高い信頼性が求められる。この情報処理装置の信頼性を高くする手法として、ＣＰＵなどの演算処理手段の故障を検出する手法が存在する。例えば、このＣＰＵの故障検出機能として主流になりつつあるロックステップデュアルコア（ＬＳＤＣ：Lock Step Dual Core）方式では、２つのＣＰＵに同じ演算を実行させ、その出力結果を比較することでＣＰＵの故障を検出する。例えば、特許文献１および特許文献２を参照。
【０００３】
自動車などに搭載される情報処理装置では、ＣＰＵが実行する全てのプログラムを、車両の安全に関わるプログラムと、車両の安全に関わらないプログラムとに、大別できる。ここで、車両の安全に関わらないプログラムであれば、たとえＣＰＵが演算間違いを起こしたとしても運転上の安全性に問題はない。
【０００４】
ところが、現状の情報処理装置では、車両の安全に関わるプログラムと車両の安全に関わらないプログラムとを明確に判別していない。このため、実際には、車両の安全に関わらないプログラムの実行中に発生した故障のようにそのまま処理を継続しても問題ない故障の場合でも、故障が検出されてしまうと何かしらのフェールオペレーション（システムリセットやシステムダウンなど）を実施して車両機能の縮退を行ってしまうことがある。しかし、この場合における車両機能の縮退は、本来不必要であり避けたいものである。
また、車両の安全に関わらないプログラムの実行中に発生した故障は、そのプログラム実行中に顕在化しなくても、その後の安全性に関わるプログラムの実行中に顕在化して検出できれば、運転上の安全性に問題はない。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−０６５２２０号公報
【特許文献２】特開２０００−１８１７３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記特許文献１には、ソフトウエアによって故障検出に対する通知不可フラグを切り替えることによって、故障検出機能のＯＮ／ＯＦＦを制御する情報処理装置が開示されている。
しかしながら、この特許文献１に記載されたソフトウエアによって故障検出機能をＯＮ／ＯＦＦする構成の場合、そのソフトウエアを実行するＣＰＵ自体に故障が発生した場合、故障検出機能のＯＮ／ＯＦＦが不正に切り替えられる危険性があるという問題が生じる。また、故障検出機能のＯＮ／ＯＦＦに処理負荷のオーバーヘッドが発生するという問題もある。
【０００７】
また、上記特許文献２には、故障検出機能のＯＮ／ＯＦＦを行う切り替え手段が、故障検出対象のＣＰＵとは異なる演算手段で動作する情報処理装置が開示されている。
しかしながら、この特許文献２に記載されたＣＰＵとは異なる演算手段で故障検出を動作させる構成の場合、故障検出が不必要なプログラムに対しても故障検出処理を行うため、不必要な車両機能の縮退が生じて情報処理装置の処理継続性が低下してしまうという問題がある。
【０００８】
本発明は、上記の課題を鑑みてなされたものであり、処理継続性の向上、故障検出結果出力処理のリアルタイム性確保、故障判定信号の不正出力防止、小面積低コスト化を実現させた、情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記の課題を解決するための本発明の一態様は、フェイルセーフ機能を有する情報処理装置であって、故障検出機能を有する演算処理ユニットと、故障検出の対象となるプログラムまたは故障検出の対象外となるプログラムのアドレス範囲を記憶するアドレス記憶部と、演算処理ユニットが実行するプログラムを監視して、その実行するプログラムがアドレス記憶部に記憶されたアドレス範囲のプログラムであるか否かを判断する監視判断部と、監視判断部におけるプログラム判断の結果に基づいて、演算処理ユニットが検出した結果を出力するか否かを制御する出力制御部とを備える、ことを特徴とする情報処理装置である。
【発明の効果】
【００１０】
上記本発明によれば、故障の監視が必要なプログラムを実行中である場合にだけ、故障検出処理結果を出力する。よって、安全性に影響しないプログラムなどに対して得られたＣＰＵ故障検出の結果を過剰に反映させなくてすみ、情報処理装置の処理継続性を向上させることができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施形態に係るＬＳＤＣ方式による常時実施のＣＰＵ故障検出機能を有する情報処理装置１の構成を説明する図
【図２】図１の情報処理装置１の各構成がＣＰＵ故障検出処理において入出力する信号のタイミングチャートの一例を示す図
【図３】図１の情報処理装置１の監視判断部１３が実行するＣＰＵ故障検出処理の手順を示すフローチャート
【発明を実施するための形態】
【００１２】
本発明は、フェイルセーフ機能を有する情報処理装置であって、ＣＰＵなどの演算処理手段（以下、単に「ＣＰＵ」と記す）の故障検出機能を有する構成を含む様々な情報処理装置に適用可能である。
以下の実施形態では、ロックステップデュアルコア（ＬＳＤＣ）方式による常時実施のＣＰＵ故障検出機能を有する情報処理装置を一例に挙げて、本発明を説明する。しかし、本発明は、この実施形態に限定されるものではなく、他の常時実施されるＣＰＵの故障検出機能を有する装置の全般に適用することができる。
【００１３】
図１は、本発明の一実施形態に係るＬＳＤＣ方式による常時実施のＣＰＵ故障検出機能を有する情報処理装置１の構成を説明する図である。図１に例示する本実施形態の情報処理装置１は、ＬＳＤＣ−ＣＰＵ１１と、アドレス記憶部１２と、監視判断部１３と、出力制御部１４とを備えている。
まず、本実施形態の情報処理装置１の各構成を説明する。
【００１４】
ＬＳＤＣ−ＣＰＵ１１は、ロックステップデュアルコア（ＬＳＤＣ）方式によって演算処理手段の故障を検出する演算処理ユニットであって、マスタＣＰＵ１１ａと、チェッカＣＰＵ１１ｂと、比較器１１ｃとを含んでいる。
マスタＣＰＵ１１ａは、情報処理装置１におけるプログラム処理を実行するメイン演算処理手段である。チェッカＣＰＵ１１ｂは、演算処理手段の故障検出のために冗長的に設けられたサブ演算処理手段である。チェッカＣＰＵ１１ｂは、マスタＣＰＵ１１ａと同等の性能を発揮できる機能を持っていればよく、マスタＣＰＵ１１ａと全く同じＣＰＵであっても、異なるＣＰＵであってもよい。これらのマスタＣＰＵ１１ａ、チェッカＣＰＵ１１ｂ、および比較器１１ｃは、プログラムやデータやコマンドなど（以下、まとめてプログラムなどと記す）の送受信が行われるデータバス２１にそれぞれ接続されている。
【００１５】
このＬＳＤＣ−ＣＰＵ１１では、ＣＰＵの故障検出が次のように常時行われる。
マスタＣＰＵ１１ａおよびチェッカＣＰＵ１１ｂには、データバス２１を介して同じプログラムなどが入力される。マスタＣＰＵ１１ａは、入力されたプログラムなどに従って所定の演算処理を実行し、得られた演算結果をデータバス２１に出力すると共に比較器１１ｃにも出力する。チェッカＣＰＵ１１ｂは、入力されたプログラムなどに従ってマスタＣＰＵ１１ａと同じ演算処理を同時に実行し、得られた演算結果を比較器１１ｃに出力する。
【００１６】
比較器１１ｃは、マスタＣＰＵ１１ａが出力する演算結果と、チェッカＣＰＵ１１ｂが出力する演算結果とを入力し、双方の演算結果を比較する。そして、比較器１１ｃは、双方の演算結果を比較した結果、双方の演算結果が一致すればマスタＣＰＵ１１ａおよびチェッカＣＰＵ１１ｂの両者に故障が無い（すなわち、正常状態）と判断し、双方の演算結果が一致しなければマスタＣＰＵ１１ａおよびチェッカＣＰＵ１１ｂのいずれかに故障がある（すなわち、不良状態）と判断する。
この判断の理由は、２つの演算処理手段が共に故障していなければ、同一のプログラムなどを入力して同一の演算処理を実行することによってそれぞれ得られる２つの結果は、自ずと同じになるという理由によるものである。従って、２つの結果が異なるということによって、２つある演算処理手段の少なくともいずれか１つに故障が有ると判断できるのである。
【００１７】
そして、比較器１１ｃは、マスタＣＰＵ１１ａおよびチェッカＣＰＵ１１ｂの両者に故障が無いと判断した場合には、「ＯＫ」を示すＣＰＵ故障判定信号を出力制御部１４へ出力する。一方、比較器１１ｃは、マスタＣＰＵ１１ａおよびチェッカＣＰＵ１１ｂのいずれかに故障が有ると判断した場合には、「ＮＧ」を示すＣＰＵ故障判定信号を出力制御部１４へ出力する。
【００１８】
アドレス記憶部１２には、情報処理装置１において扱われる全てのプログラムのうち、ＣＰＵの故障検出処理を行わないＣＰＵ故障検出処理対象外のプログラムのアドレスが記憶されている。このＣＰＵ故障検出処理の対象外となるプログラムとは、例えば安全性に影響しないプログラムなどの、故障検出が不必要なプログラムをいう。
このアドレス記憶部１２に記憶されている具体的な一例としては、ＣＰＵ故障検出処理対象外であるプログラムの先頭アドレス（start_add）と終了アドレス（end_add）とのアドレス対が挙げられる。図１に示した例では、第１プログラムの先頭アドレス（start_add1）および終了アドレス（end_add1）のアドレス対が、第２プログラムの先頭アドレス（start_add2）および終了アドレス（end_add2）のアドレス対が、第３プログラムの先頭アドレス（start_add3）および終了アドレス（end_add3）のアドレス対が、それぞれ記憶されている。
【００１９】
なお、このアドレス記憶部１２には、情報処理装置１において扱われる全てのプログラムのうち、ＣＰＵの故障検出処理を行うＣＰＵ故障検出処理対象のプログラム（例えば、安全性に影響するプログラムなど）のアドレスが記憶されていてもよい。すなわち、このアドレス記憶部１２には、ＬＳＤＣ−ＣＰＵ１１が実行するプログラムがＣＰＵ故障検出処理の実施対象か否かを判断できる内容が記憶されていればよい。
また、ＣＰＵ故障検出処理対象またはＣＰＵ故障検出処理対象外のどちらの範囲をアドレス記憶部１２に記憶するかを、任意に切り替えられるようにしてもよい。このようにすれば、アドレス記憶部１２に記憶するアドレス対が少なくなる方の範囲を選択することができる。
【００２０】
監視判断部１３は、ＬＳＤＣ−ＣＰＵ１１が実行するプログラムを常時監視している。この監視は、例えば、マスタＣＰＵ１１ａが備えるプログラムカウンタＰＣの値を監視判断部１３がモニタリングすることで実行される。監視判断部１３は、マスタＣＰＵ１１ａが備えるプログラムカウンタＰＣの値と、アドレス記憶部１２に記憶されているＣＰＵ故障検出処理対象外プログラム（または故障検出処理対象プログラム）のアドレスとに基づいて、マスタＣＰＵ１１ａおよびチェッカＣＰＵ１１ｂがＣＰＵ故障検出処理対象外のプログラムを実行中であるか否かを判断する。
そして、監視判断部１３は、マスタＣＰＵ１１ａおよびチェッカＣＰＵ１１ｂがＣＰＵ故障検出処理対象のプログラムを実行中であると判断した場合、「ＯＮ」を示すＣＰＵ監視信号を出力制御部１４へ出力する。一方、監視判断部１３は、マスタＣＰＵ１１ａおよびチェッカＣＰＵ１１ｂがＣＰＵ故障検出処理対象外のプログラムを実行中であると判断した場合、「ＯＦＦ」を示すＣＰＵ監視信号を出力制御部１４へ出力する。
【００２１】
出力制御部１４は、ＬＳＤＣ−ＣＰＵ１１の比較器１１ｃが出力するＣＰＵ故障判定信号と、監視判断部１３が出力するＣＰＵ監視信号とを入力する。
そして、出力制御部１４は、ＣＰＵ監視信号が「ＯＮ」の場合には、「ＯＫ」を示すＣＰＵ故障判定信号は「ＯＫ」を示すＣＰＵ故障外部通知信号として、「ＮＧ」を示すＣＰＵ故障判定信号は「ＮＧ」を示すＣＰＵ故障外部通知信号として、後段に存在する構成へ出力する（ＣＰＵ故障検出機能の動作）。
一方、出力制御部１４は、ＣＰＵ監視信号が「ＯＦＦ」の場合には、ＣＰＵ故障判定信号が「ＯＫ」か「ＮＧ」かにかかわらず、後段に存在する構成へのＣＰＵ故障外部通知信号の出力を「ＯＫ」のまま固定する。つまり、ＣＰＵ監視信号が「ＯＦＦ」の場合には、ＣＰＵ故障判定信号がマスクされて外部に通知されないことになる（ＣＰＵ故障検出機能の非動作）。
【００２２】
上述した比較器１１ｃ、監視判断部１３、および出力制御部１４の具体的な構成例としては、次のような構成が考えられる。
比較器１１ｃは、マスタＣＰＵ１１ａおよびチェッカＣＰＵ１１ｂの両者に故障が無いと判断した場合に出力する「ＯＫ」を示すＣＰＵ故障判定信号として、「１」の論理値を出力制御部１４へ出力する。一方、比較器１１ｃは、マスタＣＰＵ１１ａおよびチェッカＣＰＵ１１ｂのいずれかに故障が有ると判断した場合に出力する「ＮＧ」を示すＣＰＵ故障判定信号として、「０」の論理値を出力制御部１４へ出力する。
監視判断部１３は、マスタＣＰＵ１１ａがＣＰＵ故障検出処理対象のプログラムを実行中であると判断した場合に出力する「ＯＮ」を示すＣＰＵ監視信号として、「１」の論理値を出力制御部１４へ出力する。一方、監視判断部１３は、マスタＣＰＵ１１ａがＣＰＵ故障検出処理対象外のプログラムを実行中であると判断した場合に出力する「ＯＦＦ」を示すＣＰＵ監視信号として、「０」の論理値を出力制御部１４へ出力する。
出力制御部１４には、図１に示すように２入力の論理積（ＡＮＤ）素子を用い、一方の入力端子にＬＳＤＣ−ＣＰＵ１１の比較器１１ｃが出力するＣＰＵ故障判定信号を、他方の入力端子に監視判断部１３が出力するＣＰＵ監視信号をそれぞれ入力する。
【００２３】
図２に、上述した構成例において、各構成がＣＰＵ故障検出処理において入出力する信号のタイミングチャートを示す。
監視判断部１３は、マスタＣＰＵ１１ａが備えるプログラムカウンタＰＣの値およびアドレス記憶部１２に記憶されているアドレス対に基づいて、マスタＣＰＵ１１ａがＣＰＵ故障検出処理対象のプログラムを実行中である場合には、論理値「１」のＣＰＵ監視信号を出力し（監視区間）、マスタＣＰＵ１１ａがＣＰＵ故障検出処理対象のプログラムを実行中でない場合には、論理値「０」のＣＰＵ監視信号を出力する（非監視区間）。論理値「１」のＣＰＵ監視信号が出力されている監視区間では、ＣＰＵの故障が検出されれば（ＣＰＵ故障判定信号「ＮＧ」）「ＮＧ」のＣＰＵ故障外部通知信号が出力され、ＣＰＵの故障が検出されなければ（ＣＰＵ故障判定信号「ＯＫ」）「ＯＫ」のＣＰＵ故障外部通知信号が出力される。一方、論理値「０」のＣＰＵ監視信号が出力されている非監視区間では、ＣＰＵの故障が検出されても（ＣＰＵ故障判定信号「ＮＧ」）「ＮＧ」のＣＰＵ故障外部通知信号が出力されず、「ＯＫ」のＣＰＵ故障外部通知信号のままである。
【００２４】
これらのＣＰＵ監視信号、ＣＰＵ故障判定信号、およびＣＰＵ故障外部通知信号は、各ハードウエアにおいてＣＰＵのクロック信号に同期して生成される。よって、クロック信号のサイクル毎にプログラムカウンタＰＣの値がモニタリングされてＣＰＵ監視信号が更新されるため、ＣＰＵ故障検出機能の動作／非動作をリアルタイムに切り替えることができる。
なお、上述した構成例はあくまで一例であって、各々の論理値を反転したり、出力制御部１４に否定論理積（ＮＡＮＤ）素子を用いたりしても、もちろん構わない。
【００２５】
このような構成により、マスタＣＰＵ１１ａがＣＰＵ故障検出処理対象のプログラムを実行中である場合にだけ、ＬＳＤＣ−ＣＰＵ１１が実行するＣＰＵ故障検出処理の結果を後段に存在する構成へ出力することができる。
【００２６】
次に、上記構成による情報処理装置１が実行するＣＰＵ故障検出処理の手順を説明する。図３は、本発明の一実施形態に係る情報処理装置１の監視判断部１３によって行われるＣＰＵ故障検出処理の手順を示すフローチャートである。
【００２７】
図３において、監視判断部１３は、マスタＣＰＵ１１ａおよびチェッカＣＰＵ１１ｂによって現在演算処理が実行されているプログラムを、マスタＣＰＵ１１ａが備えるプログラムカウンタＰＣの値をモニタリングすることで監視する（ステップＳ３１）。次に、監視判断部１３は、アドレス記憶部１２に記憶されているＣＰＵ故障検出処理対象外プログラムのアドレス範囲を参照し、マスタＣＰＵ１１ａおよびチェッカＣＰＵ１１ｂがＣＰＵ故障検出処理対象のプログラムを実行中であるか否かを判断する（ステップＳ３２）。
【００２８】
マスタＣＰＵ１１ａおよびチェッカＣＰＵ１１ｂがＣＰＵ故障検出処理対象のプログラムを実行中であると判断した場合、監視判断部１３は、「ＯＮ」を示すＣＰＵ監視信号を出力制御部１４へ出力し、ＣＰＵ故障検出機能を作動させる（ステップＳ３３）。すなわち、ＬＳＤＣ−ＣＰＵ１１の比較器１１ｃが出力するＣＰＵ故障判定の結果を外部に通知することを許可する。
一方、マスタＣＰＵ１１ａおよびチェッカＣＰＵ１１ｂがＣＰＵ故障検出処理対象外のプログラムを実行中であると判断した場合、監視判断部１３は、「ＯＦＦ」を示すＣＰＵ監視信号を出力制御部１４へ出力し、ＣＰＵ故障検出機能を非作動にする（ステップＳ３４）。すなわち、ＬＳＤＣ−ＣＰＵ１１の比較器１１ｃが出力するＣＰＵ故障判定の結果を外部に通知することを許可しない。
上記ステップＳ３１〜Ｓ３４の処理は、繰り返して行われる。
【００２９】
以上のように、本発明の一実施形態に係るＬＳＤＣ方式による常時実施のＣＰＵ故障検出機能を有する情報処理装置１によれば、ＣＰＵ故障検出処理対象または対象外のプログラムを予め記憶しておき、マスタＣＰＵ１１ａがＣＰＵ故障検出処理対象のプログラムを実行中であるか否かを判断する。
これにより、マスタＣＰＵ１１ａがＣＰＵ故障検出処理対象のプログラムを実行中である場合にだけ、ＬＳＤＣ−ＣＰＵ１１が実行するＣＰＵ故障検出処理の結果を後段に存在する構成へ出力する（ＣＰＵ故障検出機能を動作させる）ことができる。よって、故障検出が不必要なプログラム（安全性に影響しないプログラムなど）に対して得られたＣＰＵ故障検出の結果を過剰に反映させなくてすみ、情報処理装置１の処理継続性を向上させることができる。
【００３０】
また、本実施形態に係る情報処理装置１の構成によれば、ＣＰＵ故障検出処理範囲の特定およびＣＰＵ故障検出機能の動作／非動作を、ハードウエアで実現している。よって、ＣＰＵ監視（ＣＰＵ故障検出結果の出力処理）のリアルタイム性を確保することができる。
【００３１】
また、本実施形態に係る情報処理装置１の構成によれば、マスタＣＰＵ１１ａがＣＰＵ故障検出処理対象外のプログラムを実行中であるか否かを判断する監視判断部１３を、ＬＳＤＣ−ＣＰＵ１１とは異なるハードウエアで構成している。よって、ＬＳＤＣ−ＣＰＵ１１の不良などによってＣＰＵ故障判定信号が不正に出力されることを防止することができ、装置やシステムの安全性を確保することができる。
【００３２】
さらに、本実施形態に係る情報処理装置１の構成によれば、ＬＳＤＣ−ＣＰＵ１１自体には何ら変更を加える必要がない。よって、既存の装置に対して微小な回路を追加するだけでよく、小面積かつ低設計コストで、簡単に本実施形態に係る情報処理装置１を実現することができる。
【産業上の利用可能性】
【００３３】
本発明は、ＣＰＵなどの演算処理手段の故障検出機能を有する構成を含む様々な情報処理装置に利用可能であり、特に情報処理装置の処理継続性を向上させたい場合などにおいて有効である。
【符号の説明】
【００３４】
１      情報処理装置
１１    ＬＳＤＣ−ＣＰＵ
１１ａ  マスタＣＰＵ
１１ｂ  チェッカＣＰＵ
１１ｃ  比較器
１２    アドレス記憶部
１３    監視判断部
１４    出力制御部
２１    データバス
ＰＣ    プログラムカウンタ
【図１】
2015072567.tif 000003
【図３】
2015072567.tif 000004
【図２】
2015072567.tif 000005