(57)【特許請求の範囲】
【請求項１】
複数の演算部（１１０，１２０）において同一の演算が並行して実行される電子制御装置（１０）であって、
それぞれの前記演算部における演算結果を常に比較し、当該演算結果が互いに同一かどうかを判定する比較判定部（１３０）と、
情報を一時的に保存するための第１保存部（１５１）及び第２保存部（１５２）と、を備えており、
それぞれの前記演算部は、
入力情報（ＰＲ）を用いて処理を行うように記述された関数を実行する際、
前記入力情報を前記第１保存部に保存する処理（Ｓ１０１）と、
前記関数の格納場所である関数アドレスを、前記第２保存部に保存する処理（Ｓ１０２）と、
を、前記関数を実行する直前において予め実行するように構成されており、
前記比較判定部により、それぞれの前記演算結果が互いに同一ではないと判定された場合には、
それぞれの前記演算部によって、
前記第１保存部に記憶されている前記入力情報を用いて、前記第２保存部に保存されている前記関数アドレスに対応する前記関数が再度実行され、
前記比較判定部の判定結果を記憶するためのレジスタを更に備えており、
複数の前記演算部のうちの一つが、前記レジスタから前記判定結果を読み込むように構成されていることを特徴とする電子制御装置。
【請求項２】
前記第１保存部に記憶されている前記入力情報を用いて、前記第２保存部に保存されている前記関数アドレスに対応する前記関数が再度実行された後、
前記比較判定部の判定結果に基づいて、前記演算部に生じた異常が恒久的なものであるか否かの判定が行われることを特徴とする、請求項１に記載の電子制御装置。
【請求項３】
前記第１保存部に記憶されている前記入力情報を用いて、前記第２保存部に保存されている前記関数アドレスに対応する前記関数が再度実行された後、
前記比較判定部により、それぞれの前記演算結果が互いに同一であると判定された場合には、前記演算部に生じた異常が一時的なものであると判定することを特徴とする、請求項２に記載の電子制御装置。
【請求項４】
前記演算部に生じた異常が恒久的なものであると判定された場合には、安全に動作を停止するためのフェールセーフ処理が実行され、前記演算部に生じた異常が一時的なものであると判定された場合には、前記フェールセーフ処理が実行されないことを特徴とする、請求項３に記載の電子制御装置。
【請求項５】
前記第１保存部に記憶されている前記入力情報を用いて、前記第２保存部に保存されている前記関数アドレスに対応する前記関数が再度実行されるよりも前に、それぞれの前記演算部がリセットされることを特徴とする、請求項１乃至４のいずれか１項に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の演算部において同一の演算が並行して実行される電子制御装置に関する。
【背景技術】
【０００２】
自動車用の電子制御装置では、常に正確な制御を行うことが求められる。そこで、制御のための演算を司るＣＰＵを複数備えた構成とした上で、それぞれのＣＰＵにおいて同一の演算を並列して実行させ、全ての演算結果が同一であることを確認しながら制御を行う方式（ロックステップ方式）の電子制御装置が実用化されている（例えば下記特許文献１を参照）。
【０００３】
尚、ロックステップ方式の電子制御装置としては、上記のように複数設けられたＣＰＵが同一の演算を行う態様の他、単一のＣＰＵに設けられた複数のコアが同一の演算を行う態様とされることもある。以下では、同一の演算を行うために複数設けられたＣＰＵ又はコアのことを総じて「演算部」と表記する。
【０００４】
下記特許文献１に記載の電子制御装置では、一部の演算部における演算結果が他と異なってしまったことが検出された場合、それぞれの演算部において自己診断ソフトを実行させることで、異常が生じた演算部を特定することとしている。一部の演算部における診断結果（自己診断ソフトを実行することにより得られる演算結果）が異常を示すものであった場合には、当該演算部において何らかの異常が生じているということである。そこで、当該演算部からの演算結果の使用を中断し、以降は正常な演算部からの演算結果のみを用いて制御が行われる。
【０００５】
また、全ての演算部における診断結果が異常を示すものであった場合には、全ての演算部において何らかの異常が生じているということである。そこで、動作が保障されたフェールセーフソフトをそれぞれの演算部において実行させて安全を確保する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１２−６８７８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ところで、一部の演算部における演算結果が他と異なってしまったことが検出された後、自己診断ソフトが実行されたにも拘らず、全ての診断結果が正常となってしまう場合がある。このような現象が生じる原因の一つとしては、例えば、演算部において生じた異常はノイズの影響等による一時的なものであり、自己診断ソフトが実行される際には当該異常が解消していた、ということが考えられる。
【０００８】
もう一つの原因としては、一部又は全ての演算部において恒久的な異常が生じているにも拘らず、当該異常が自己診断ソフトでは検出されなかったということも考えられる。
【０００９】
上記特許文献１に記載の電子制御装置では、自己診断ソフトによる診断結果が全ての演算部において正常であった場合、演算結果の違いは演算部の一時的な異常により生じたのか、それとも、（自己診断ソフトでは検出不可能な）演算部の恒久的な異常により生じたのか、を区別することができない。
【００１０】
このため、上記特許文献１に記載の電子制御装置では、全ての診断結果が正常となった場合には、少なくとも一部の演算部に恒久的な異常が生じている可能性に鑑み、フェールセーフソフトを全ての演算部において実行させることとしている。実際には演算部の恒久的な異常は生じておらず、一時的な異常のみが生じたような場合にも、必ずフェールセーフソフトが実行されてしまうため、ソフトに異常がなくてもフェールセーフが働いてしまうという問題がある。
【００１１】
本発明はこのような課題に鑑みてなされたものであり、その目的は、一部の演算部における演算結果が他と異なってしまったことが検出された際において、演算部の異常が一時的なものであるのか、それとも恒久的なものであるのかを正確に区別し、その後の対応を適切にとることのできる電子制御装置を提供することにある。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、本発明に係る電子制御装置では、複数の演算部において同一の演算が並行して実行される電子制御装置であって、それぞれの演算部における演算結果を常に比較し、当該演算結果が互いに同一かどうかを判定する比較判定部と、情報を一時的に保存するための第１保存部及び第２保存部と、を備えている。それぞれの演算部は、入力情報を用いて処理を行うように記述された関数を実行する際、入力情報を第１保存部に保存する処理と、関数の格納場所である関数アドレスを、第２保存部に保存する処理と、を、関数を実行する直前において予め実行するように構成されている。比較判定部により、それぞれの演算結果が互いに同一ではないと判定された場合には、それぞれの演算部によって、第１保存部に記憶されている入力情報を用いて、第２保存部に保存されている関数アドレスに対応する関数が再度実行され、比較判定部の判定結果を記憶するためのレジスタを更に備えており、複数の演算部のうちの一つが、レジスタから判定結果を読み込むように構成されている。
【００１３】
上記のような電子制御装置では、複数の演算部におけるそれぞれの演算結果が互いに同一ではないと判定された場合、第１保存部に記憶されている入力情報を用いて、第２保存部に保存されている関数アドレスに対応する関数が再度実行される。すなわち、演算結果が互いに同一ではないと判定される直前に実行されたものと同一の演算が、全ての演算部において、前回と同一の条件で再度実行される。
【００１４】
例えば、関数が再度実行された後の演算結果が全ての演算部において同一となった場合には、演算部に生じていたのは一時的な異常であったと推定することができる。また、関数が再度実行された後の演算結果が全ての演算部において同一とならなかった場合には、少なくとも一部の演算部において恒久的な異常が生じていると推定することができる。
【００１５】
つまり、本発明では、予め用意された自己診断ソフトによってではなく、演算結果が互いに同一ではないと判定される直前に実行されたものと同一の演算によって、演算部に生じた異常が一時的なものであったかどうかが判定される。演算部において恒久的な異常が生じていた場合には確実に演算結果の不一致が生じるため、上記の判定を正確に行うことができ、その後の対応を適切にとることができる。
【発明の効果】
【００１６】
本発明によれば、一部の演算部における演算結果が他と異なってしまったことが検出された際において、演算部の異常が一時的なものであるのか、それとも恒久的なものであるのかを正確に区別し、その後の対応を適切にとることのできる電子制御装置を提供することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施形態に係る電子制御装置の構成を模式的に示す図である。
【図２】図１に示された電子制御装置によって実行される処理の流れを示すフローチャートである。
【図３】図１に示された電子制御装置によって実行される処理の流れを示すフローチャートである。
【図４】入力情報及び関数について説明するための図である。
【発明を実施するための形態】
【００１８】
以下、添付図面を参照しながら本発明の実施形態について説明する。説明の理解を容易にするため、各図面において同一の構成要素に対しては可能な限り同一の符号を付して、重複する説明は省略する。
【００１９】
本実施形態に係る電子制御装置１０は、不図示の車両に備えられ、当該車両の各種動作（例えば燃料噴射等）を制御するための装置である。尚、本発明の適用範囲はこのような車両用の電子制御装置に限定されるものではなく、機器の制御を行うための電子制御装置全般に適用することができる。特に、利用者の安全のために正確な制御が求められるような機器の電子制御装置に、本発明が適用されることが望ましい。
【００２０】
図１に示されるように、本実施形態に係る電子制御装置１０は、演算器１１０と、演算器１２０と、判定部１３０と、不揮発性メモリ１４０と、揮発性メモリ１５０と、を備えている。
【００２１】
演算器１１０及び演算器１２０は、互いに同一な構成の中央演算装置（ＣＰＵ）である。電子制御装置１０が制御を行うにあたって実行される演算は、これら演算器１１０及び演算器１２０によって実行される。具体的には、演算器１１０及び演算器１２０によってそれぞれ異なる演算が行われるのではなく、同一の演算が並行して且つ同期して行われる。このため、演算器１１０及び演算器１２０の両方が正常に動作しているのであれば、それぞれの演算結果は常に一致することとなる。逆に、少なくとも一方の演算器（１１０，１２０）に異常が生じた場合には、それぞれの演算結果は通常は一致しない。
【００２２】
後に詳しく説明するように、本実施形態においては、演算部１１０がメインの演算部として演算を行いながら、その演算結果が演算器１２０の演算結果と一致することの確認を常に行うように構成されている。演算部１１０は、その演算結果が演算器１２０の演算結果と異なっている場合には、その原因が演算部１１０又は演算器１２０に生じた恒久的な異常なのか、それとも一時的な異常なのかの判定を引き続き行う。
【００２３】
判定部１３０は、演算器１１０及び演算器１２０のそれぞれの演算結果を監視し、両者が互いに一致しているかどうかの判定を行う部分である。判定部１３０は、判定結果を記憶するためのレジスタ（以下、「比較結果レジスタ」と称する）を備えている。演算器１１０の演算結果（以下、「第１演算結果」とも称する）と演算器１２０の演算結果（以下、「第２演算結果」とも称する）とが互いに一致している場合、すなわち、演算器１１０及び演算器１２０がいずれも正常に動作している場合には、比較結果レジスタには０が書き込まれる。第１演算結果と第２演算結果とが互いに一致していない場合、すなわち、演算器１１０及び演算器１２０の少なくとも一方において異常が生じた場合には、比較結果レジスタには１が書き込まれる。
【００２４】
不揮発性メモリ１４０は、所謂ＲＯＭ（Ｒｅａｄ Ｏｎｌｙ Ｍｅｍｏｒｙ）であって、演算器１１０及び演算器１２０によって実行されるプログラムの一部や、固定値として設定された制御パラメータ等が記憶された記憶装置である。不揮発性メモリ１４０に記憶された情報は、演算器１１０及び演算器１２０の両方から参照される。
【００２５】
揮発性メモリ１５０は、所謂ＲＡＭ（Ｒａｎｄｏｍ Ａｃｃｅｓｓ Ｍｅｍｏｒｙ）であって、演算器１１０及び演算器１２０によって実行されるプログラムの一部や、当該プログラムの処理が行われる際に用いられる情報（変数値等）を一時的に記憶するための記憶装置である。揮発性メモリ１５０に記憶された情報は、演算器１１０及び演算器１２０の両方から参照される。また、揮発性メモリ１５０に対する情報の書き込みも、演算器１１０及び演算器１２０の両方から行われる。
【００２６】
揮発性メモリ１５０は、情報を一時的に保存するための部分として、第１保存部１５１と、第２保存部１５２とを有している。尚、揮発性メモリ１５０はその全体が情報を一時的に保存するためのものなのであるが、後の説明の便宜のために、その一部を特に第１保存部１５１及び第２保存部１５２と表記している。これらのそれぞれに保存される情報については、後に説明する。
【００２７】
演算器１１０及び演算器１２０においてプログラムが実行される際の処理の流れについて説明する。当該プログラムは不揮発性メモリ１４０に記憶されており、複数の関数を含んだ形で記載されている。ここで、関数とは、例えば揮発性メモリ１５０に記憶された各種情報（入力情報）を用いて処理を行うように記述された命令群のことである。
【００２８】
図４には、Ｃ言語によって記載された関数の簡単な例が示されている。関数「ｅｘａｍｐｌｅ」は、整数型の引数を２つ（ｉｎｔ ａ，ｉｎｔ ｂ）渡されて実行されると、これら引数の積（ｉｎｔ ａ＊ｂ）を返すものである。この例では、関数「ｅｘａｍｐｌｅ」が実行されると、引数である変数ａ及び変数ｂの値を用いた演算が行われる。変数ａ及び変数ｂの値のように、関数内の演算処理に用いられる情報（変数値）を総じて、以下では「入力情報ＰＲ」と表記する。尚、入力情報ＰＲには、引数として関数に渡されるような情報のみならず、当該関数の外で定義されたグローバル変数の値が含まれる場合もある。
【００２９】
図２に示されたフローチャートは、プログラムに含まれる関数が実行される際に、電子制御装置１０において都度行われる処理の流れを示すものである。具体的には、プログラム中の関数が実行される度に図２に示される処理の一部（Ｓ１０１〜Ｓ１０３）が行われるように、当該プログラムが記載されている。図２に示される処理のうち、ステップＳ１０１からステップＳ１０７までの処理は、演算器１１０は制御側として処理を行い、演算器１２０は監視側として処理を行う。図２に示される処理のうち、ステップＳ１０４以降の処理は、演算器１１０のみによって行われる。
【００３０】
最初のステップＳ１０１では、これから実行される（後のステップＳ１０３で実行される）関数に用いられる入力情報ＰＲの値が、全て第１保存部１５１に記憶（コピー）される。具体的には、例えば、入力情報ＰＲに含まれる変数に対応したメンバ変数を有する構造体を予め用意しておき、構造体の各メンバ変数の値を入力情報ＰＲの値に一致させた後、当該構造体を第１保存部１５１に記憶すればよい。尚、入力情報ＰＲに含まれる変数の種類（型及びサイズ）や数は、関数によって異なるので、上記の構造体は関数ごとに用意しておけばよい。
【００３１】
ステップＳ１０１に続くステップＳ１０２では、これから実行される関数の格納場所（不揮発性メモリ１４０におけるアドレス）が第２保存部１５２に保存される。関数の格納場所とは、所謂「関数ポインタ」としてプログラム中に記述される変数に記憶されている情報である。
【００３２】
ステップＳ１０２に続くステップＳ１０３では、関数が実行される。ステップＳ１０３に続くステップＳ１０４では、比較結果レジスタの値が読み込まれる。既に述べたように、比較結果レジスタは、判定部１３０に設けられたレジスタであって、第１演算結果と第２演算結果とが一致した場合には０が書き込まれ、第１演算結果と第２演算結果とが一致しない場合には１が書き込まれるレジスタである。本実施形態では、演算器１１０及び演算器１２０によって一つの命令が実行される毎に、判定部１３０によって第１演算結果と第２演算結果との比較が行われ、当該比較の結果に基づいて比較結果レジスタへの値の書き込みが行われている。
【００３３】
このため、ステップＳ１０４において読み込まれる比較結果レジスタの値は、ステップＳ１０３における処理（関数の実行）の結果が、演算器１１０と演算器１２０とで一致するかどうかを示す値、ということになる。
【００３４】
ステップＳ１０４に続くステップＳ１０５では、ステップＳ１０４において読み込まれた比較結果レジスタの値が、電子制御装置１０が備えるフラッシュメモリ（不図示）に記憶される。
【００３５】
ステップＳ１０５に続くステップＳ１０６では、ステップＳ１０４において読み込まれた比較結果レジスタの値が０であるか否か、すなわち、第１演算結果と第２演算結果とが一致しているかが判定される。比較結果レジスタの値が０である場合には、図２に示される一連の処理を終了する。その後は、プログラムにおいて次の関数が実行される際に、再び図２に示される処理が実行される。つまり、ステップＳ１０３においては、前回の関数に続く次の関数が実行される。
【００３６】
ステップＳ１０６において、比較結果レジスタの値が１である場合には、ステップＳ１０７に移行する。ステップＳ１０７では、演算器１１０及び演算器１２０の両方が同時にリセット（再起動）される。
【００３７】
演算器１１０及び演算器１２０がリセットされた直後において行われる処理について、図３を参照しながら説明する。図３に示される一連の処理は、演算器１１０は制御側として処理を行い、演算器１２０は監視側として処理を行う。
【００３８】
最初のステップＳ２０１では、比較結果レジスタの値がフラッシュメモリから読み込まれる。ここで読み込まれる比較結果レジスタの値は、演算器１１０及び演算器１２０がリセットされる直前に、図２に示されるステップＳ１０５においてフラッシュメモリに記憶されていた値である。
【００３９】
ステップＳ２０１に続くステップＳ２０２では、ステップＳ２０１において読み込まれた比較結果レジスタの値が０であるか否か、すなわち、リセット前における第１演算結果と第２演算結果とが一致していたかどうかが判定される。比較結果レジスタの値が０である場合には、図３に示される一連の処理を終了する。その後は、図２を参照しながら説明した一連の処理が実行される。
【００４０】
ステップＳ２０２において、比較結果レジスタの値が１である場合には、ステップＳ２０３に移行する。ステップＳ２０３では、第１保存部１５１に記憶されていた入力情報ＰＲの値が読み込まれ、関数で用いられる全ての変数にその値が代入される。ここでいう関数とは、リセットが実行される直前において、演算器１１０及び演算器１２０で実行された関数のことである。換言すれば、第１演算結果と第２演算結果とが不一致となる直前において実行された関数のことである。
【００４１】
ステップＳ２０３に続くステップＳ２０４では、第２保存部１５２に記憶されていた値（関数ポインタに記憶されていた値）が読み込まれる。
【００４２】
ステップＳ２０４に続くステップＳ２０５では、ステップＳ２０４において読み込まれた関数ポインタに対応する関数（関数ポインタに記憶されていたアドレスに格納されている関数）が実行される。ステップＳ２０５では、第１演算結果と第２演算結果とが不一致となる直前において実行された関数が、前回（第１演算結果と第２演算結果とが不一致となる直前）と同一条件にて再度実行される。
【００４３】
ステップＳ２０５に続くステップＳ２０６では、図２のステップＳ１０４と同様に、比較結果レジスタの値が読み込まれる。
【００４４】
ステップＳ２０６に続くステップＳ２０７では、ステップＳ２０６において読み込まれた比較結果レジスタの値が０であるか否か、すなわち、第１演算結果と第２演算結果とが一致しているか否かが判定される。比較結果レジスタの値が０である場合には、ステップＳ２０８に移行する。
【００４５】
ステップＳ２０８に移行したということは、前回においては第１演算結果と第２演算結果とが一致しなかった演算を、同一条件において再度実行したところ（ステップＳ２０５）、今回は第１演算結果と第２演算結果とが一致した、ということである。このため、前回（リセット前）において第１演算結果と第２演算結果とが一致しなかったのは、演算器１１０又は演算器１２０において恒久的な異常が生じていたことに起因するのではなく、ノイズ等の影響により一時的な異常が生じていたことに起因すると推測される。
【００４６】
このため、ステップＳ２０８では、演算器１１０又は演算器１２０のいずかに生じていたのは一時的な異常であって、現時点では演算器１１０及び演算器１２０はいずれも正常に機能していると判定される。その後は、図２を参照しながら説明した一連の処理が実行される（ステップＳ２０９）。
【００４７】
ステップＳ２０７において、比較結果レジスタの値が１である場合には、ステップＳ２１０に移行する。
【００４８】
ステップＳ２１０に移行したということは、前回においては第１演算結果と第２演算結果とが一致しなかった演算を、同一条件において再度実行したところ、今回もやはり第１演算結果と第２演算結果とが一致しなかった、ということである。このため、前回（リセット前）において第１演算結果と第２演算結果とが一致しなかったのは、演算器１１０又は演算器１２０において恒久的な異常が生じていたことに起因すると推測される。
【００４９】
このため、ステップＳ２１０では、演算器１１０又は演算器１２０のいずかに生じていたのは恒久的な異常であって、現時点においても演算器１１０又は演算器１２０（もしくは両方）が正常に機能し得ない状態であると判定される。
【００５０】
ステップＳ２１０に続くステップＳ２１１では、異常に対応する処理が必要に応じて適宜実行される。例えば、本実施形態のように制御対象が車両である場合には、車両を安全に停止させるために必要となる一連の処理、すなわち、フェールセーフ処理が実行される。
【００５１】
また、演算器１１０又は演算器１２０に生じた異常の具体的な原因を更に詳しく検査するような処理が行われてもよい。当該処理の結果、演算器１１０又は演算器１２０に生じた異常が軽微であると判明した場合には、一部の機能を制限しながら引き続き車両の走行を継続するような処理が行われてもよい。
【００５２】
以上のように、本実施形態に係る電子制御装置１０では、２つの演算器（１１０，１２０）におけるそれぞれの演算結果が互いに同一ではないと判定された場合、第１保存部１５１に記憶されている入力情報ＰＲを用いて、第２保存部１５２に保存されている関数アドレスに対応する関数が再度実行される（ステップＳ２０５）。すなわち、演算結果が互いに同一ではないと判定される直前に実行されたものと同一の演算が、全ての演算器（１１０，１２０）において、前回と同一の条件で再度実行される。
【００５３】
その後、２つの演算器（１１０，１２０）におけるそれぞれの演算結果が再度比較される（ステップＳ２０７）。第１演算結果と第２演算結果が互いに一致した場合には、演算器１１０及び演算器１２０はいずれも正常であると判定される（ステップＳ２０８）。第１演算結果と第２演算結果が再び不一致となった場合には、演算器１１０又は演算器１２０の少なくとも一方において恒久的な異常が生じていたと判定され（ステップＳ２１０）、必要な対応がとられる（ステップＳ２１１）。
【００５４】
つまり、本実施形態では、予め用意された自己診断ソフトによってではなく、演算結果が互いに同一ではないと判定される直前に実行されたものと同一の演算によって、演算器（１１０，１２０）に生じた異常が一時的なものであったかどうかが判定される。恒久的な異常が生じていた場合には確実に演算結果の不一致が生じるため、上記の判定を正確に行うことができ、その後の対応を適切にとることが可能となっている。
【００５５】
また、本実施形態では、前回と同一の条件において同一の関数が再度実行される前に、演算器１１０及び演算器１２０の両方が同時にリセット（再起動）される。このため、一時的な異常等によって演算器１１０等が不安定な状態のまま、関数が再実行されてしまうことが防止される。リセット後の安定した状態において異常が判定されるため、演算器１１０等に生じた異常が恒久的なものであるかどうかの判定が、正確に行われる。
【００５６】
以上、具体例を参照しつつ本発明の実施の形態について説明した。しかし、本発明はこれらの具体例に限定されるものではない。すなわち、これら具体例に、当業者が適宜設計変更を加えたものも、本発明の特徴を備えている限り、本発明の範囲に包含される。例えば、前述した各具体例が備える各要素およびその配置、材料、条件、形状、サイズなどは、例示したものに限定されるわけではなく適宜変更することができる。また、前述した各実施の形態が備える各要素は、技術的に可能な限りにおいて組み合わせることができ、これらを組み合わせたものも本発明の特徴を含む限り本発明の範囲に包含される。
【符号の説明】
【００５７】
１０：電子制御装置
１１０：演算器
１２０：演算器
１３０：統括制御部
１４０：不揮発性メモリ
１５０：揮発性メモリ
１５１：第１保存部
１５２：第２保存部
【図１】
0006405966.tif 000002
【図２】
0006405966.tif 000003
【図３】
0006405966.tif 000004
【図４】
0006405966.tif 000005