(57)【要約】   本発明は、演算器の異常を判定する演算器異常判定装置であって、前記演算器を用いて比較演算を実施し、該比較演算の異常の有無を判定する比較演算異常判定部と、前記演算器を用いて算術演算及び論理演算のうちの少なくとも一方を含む所定の演算式を算術／論理演算し、該算術／論理演算により得られる演算結果と、それに対応する正答値の記憶値とを比較演算することで、該算術／論理演算の異常の有無を判定する算術／論理演算異常判定部とを備えることを特徴とする。
2011142015.tif 000002
【特許請求の範囲】
【請求項１】
演算器の異常を判定する演算器異常判定装置であって、
前記演算器を用いて比較演算を実施し、該比較演算の異常の有無を判定する比較演算異常判定部と、
前記演算器を用いて算術演算及び論理演算のうちの少なくとも一方を含む所定の演算式を算術／論理演算し、該算術／論理演算により得られる演算結果と、それに対応する正答値の記憶値とを比較演算することで、該算術／論理演算の異常の有無を判定する算術／論理演算異常判定部とを備えることを特徴とする、演算器異常判定装置。
【請求項２】
前記比較演算異常判定部は、比較演算子をアセンブラ展開したレベルで前記比較演算の異常の有無を判定する、請求項１に記載の演算器異常判定装置。
【請求項３】
前記比較演算異常判定部は、同一の値同士の比較演算を実施すると共に、異なる値同士の比較演算を実施し、いずれか一方に異常がある場合に、前記比較演算に異常があると判定する、請求項１に記載の演算器異常判定装置。
【請求項４】
前記算術／論理演算異常判定部は、前記比較演算異常判定部により前記比較演算に異常がないと判定された場合に、前記判定を行う、請求項１に記載の演算器異常判定装置。
【請求項５】
当該演算器異常判定装置は、前記演算器を含むコンピューターにより実現される、請求項１に記載の演算器異常判定装置。
【請求項６】
前記コンピューターは、前記比較演算異常判定部及び前記算術／論理演算異常判定部のいずれかにより演算に異常があると判定された場合に、外部回路からリセットされるように構成される、請求項５に記載の演算器異常判定装置。
【請求項７】
前記外部回路は、前記コンピューターの電源ＩＣである、請求項６に記載の演算器異常判定装置。
【請求項８】
演算器の異常を判定する演算器異常判定方法であって、
前記演算器を用いて比較演算を実施し、該比較演算の異常の有無を判定するステップと、
前記演算器を用いて算術演算及び論理演算のうちの少なくとも一方を含む所定の演算式を算術／論理演算し、該算術／論理演算により得られる演算結果と、それに対応する正答値の記憶値とを比較演算することで、該算術／論理演算の異常の有無を判定するステップとを備えることを特徴とする、演算器異常判定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算器の異常を判定する演算器異常判定装置及び演算器異常判定方法に関する。
【背景技術】
【０００２】
従来から、演算手段によって演算可能な所定の演算問題を所定の監視周期毎に演算手段に演算させてその演算結果を取得し、演算結果と、演算問題に対して予め設定された答えとを照合することで演算処理が正常に実行されたか否かを判定する演算装置が知られている（例えば、特許文献１参照）。また、特許文献１には、１つのマイコンが、メイン制御ルーチン及びランパルス生成ルーチンに加えて、演算監視ルーチンをも実行する構成が開示される。この構成では、マイコンは、メイン制御処理の各制御処理で実行する演算処理が正常に実行されているか否かを演算監視処理によって自己診断し、その診断結果に基づいてメイン制御処理の実行を外部から中止する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第４００３４２０号公報（図７（ｂ））
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述の特許文献１に開示されるような構成では、演算結果と、演算問題に対して予め設定された答えとを照合する際には、比較演算を行う必要があるが、この比較演算が正常に行われていない場合には、誤った診断結果が出力される虞がある。【０００５】
そこで、本発明は、比較演算の異常の有無を判定することで精度良く演算器の異常を判定することができる演算器異常判定装置及び演算器異常判定方法の提供を目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するため、本発明の一局面によれば、演算器の異常を判定する演算器異常判定装置であって、
前記演算器を用いて比較演算を実施し、該比較演算の異常の有無を判定する比較演算異常判定部と、
前記演算器を用いて算術演算及び論理演算のうちの少なくとも一方を含む所定の演算式を算術／論理演算し、該算術／論理演算により得られる演算結果と、それに対応する正答値の記憶値とを比較演算することで、該算術／論理演算の異常の有無を判定する算術／論理演算異常判定部とを備えることを特徴とする演算器異常判定装置が提供される。【０００７】
また、本発明のその他の一局面によれば、演算器の異常を判定する演算器異常判定方法であって、
前記演算器を用いて比較演算を実施し、該比較演算の異常の有無を判定するステップと、
前記演算器を用いて算術演算及び論理演算のうちの少なくとも一方を含む所定の演算式を算術／論理演算し、該算術／論理演算により得られる演算結果と、それに対応する正答値の記憶値とを比較演算することで、該算術／論理演算の異常の有無を判定するステップとを備えることを特徴とする、演算器異常判定方法が提供される。
【発明の効果】
【０００８】
本発明によれば、比較演算の異常の有無を判定することで精度良く演算器の異常を判定することができる演算器異常判定装置及び演算器異常判定方法が得られる。
【図面の簡単な説明】
【０００９】
【図１】本発明による演算器異常判定装置１の一実施例を含む電子演算装置１０の要部構成の一例を示す図である。
【図２】電子演算装置１０の異常検出処理のタイミングの一例を示す時系列図である。
【図３】本発明による演算器異常判定装置４０の一実施例の要部機能を示す図である。
【図４】監視処理プログラムの一例を示す図である。
【図５】演算式の内訳を示す図である。
【図６】演算器異常判定装置４０により実行される監視処理の一例の流れを示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、図面を参照して、本発明を実施するための最良の形態の説明を行う。
【００１１】
図１は、本発明による演算器異常判定装置の一実施例を含む電子演算装置１０の要部構成の一例を示す。
【００１２】
電子演算装置１０は、図１に示すように、マイクロコンピューター２０と、電源ＩＣ３０とを含む。
【００１３】
マイクロコンピューター２０は、ＣＰＵ（中央演算処理装置）２１を含み、ＣＰＵ２１は、算術・論理演算を行うＡＬＵ（Arithmetic and Logic Unit）２２、プログラム・ステータス・ワードの保持を行うＰＳＵ（Program Status Unit）２４、シフト演算を行うＢＳＦ（バレルシフタ）２６等を含む。マイクロコンピューター２０は、また、ウォッチドックキャンセル信号（ＷＤＣ）を電源ＩＣ３０に出力するポート２６を含む。
【００１４】
電源ＩＣ３０は、マイクロコンピューター２０の外部に設けられ、マイクロコンピューター２０に接続される。電源ＩＣ３０は、ウォッチドックタイマー（ＷＤＴ）３２と、マイクロコンピューター２０の異常を検知する異常検知部３４と、異常検知部３４によりマイクロコンピューター２０の異常が検知された際にマイクロコンピューター２０をリセットさせるリセット信号を出力するリセット部（ＲＳＴ）３６とを含む。異常検知部３４は、マイクロコンピューター２０から送られるＷＤＣのＷＤＴ３２による監視結果に基づいて、マイクロコンピューター２０の異常の有無を判定してもよい。例えば、異常検知部３４は、一定時間内にＷＤＣの反転が生じない場合や、ＷＤＣの反転周期（パルス幅）に異常（例えば所定基準レベルよりも小さい反転周期）が発生した場合等、リセット部３６を介してマイクロコンピューター２０をリセットさせる。尚、リセット部３６は、電源切断によりマイクロコンピューター２０を強制停止させてもよいし、電源を切断した後に再投入してもよい。
【００１５】
図２は、電子演算装置１０の異常検出処理のタイミングの一例を示す時系列図である。マイクロコンピューター２０の監視処理は、図２に示すように、例えば１ｍｓ毎の割り込み発生時に実行される。この割り込み（パルス）は、マイクロコンピューター２０における最優先度処理にて出力される。監視処理では、主にＡＬＵ２２、ＰＳＵ２４及びＢＳＦ２６の演算結果等の異常の有無を監視・判断する。監視処理の内容の詳細は、図３以降を参照して、後述する。尚、制御処理は、監視処理から独立して実行されてもよい。制御処理は、例えば車両制御（例えばハイブリッドシステムの制御）に関する処理であってよい。図示の例では、制御処理は、８ｍｓ毎に実行される。ウォッチドックキャンセル信号（ＷＤＣ）は、監視処理の結果、正常時は反転される。従って、ＷＤＣは、正常時は、１ｍｓ毎に反転される。他方、監視処理の結果、異常時は、ＷＤＣは停止される。例えば、図２に示すように、Ａ点にて例えば演算結果の異常や１ｍｓの割り込み未発生があった場合、ＷＤＣが停止される。その結果、電源ＩＣ３０において、電圧がリセット閾値を超えて（図中の矢印Ｂ参照）マイクロコンピューター２０のリセットが生じる。尚、監視処理におけるＡＬＵ２２、ＰＳＵ２４及びＢＳＦ２６の演算結果等の異常の監視・判断は、例えば４ｍｓ毎といったように、１ｍｓ毎の割り込みの整数倍の周期毎に実行されてもよい。この場合、１ｍｓ毎の割り込みの整数倍の周期以外では、ＷＤＣは、１ｍｓ毎の割り込み発生時に反転され、１ｍｓ毎の割り込みの整数倍の周期では、ＷＤＣは、監視処理におけるＡＬＵ２２、ＰＳＵ２４及びＢＳＦ２６の演算結果等の異常の監視・判断結果に応じて反転される。
【００１６】
図３は、本発明による演算器異常判定装置４０の一実施例の監視処理に係る要部機能を示す図である。演算器異常判定装置４０は、図３に示すように、比較演算異常判定部４２と、算術／論理演算異常判定部４４とを含む。これらの比較演算異常判定部４２及び算術／論理演算異常判定部４４は、マイクロコンピューター２０のＣＰＵ２１が、マイクロコンピューター２０内のＲＯＭ等のメモリ（図示せず）に記憶された監視処理プログラム（図４参照）を実行することによって実現される。
【００１７】
図４は、監視処理プログラムの一例を示す図である。尚、図４に示すプログラムは、Ｃ言語で記述されているが、当然ながら他の言語（ＪＡＶＡ（登録商標）等の高級言語を含む）で記述されてもよい。
【００１８】
図４に示す監視処理プログラムは、主なる特徴として、比較演算のチェック部Ｐ，Ｑと、算術／論理演算のチェック部Ｒとを含む。
【００１９】
ここで、比較演算のチェック部Ｐ，Ｑは、比較演算子（＝＝）に基づく比較演算をアセンブラ展開したレベルでチェックするための構成である。即ち、比較演算子（＝＝）は、アセンブラ展開するとｃｍｐ，ｂｎｅ＊の２つの命令に展開されるため、命令毎に確認が実行される。尚、比較演算子（！＝）は、アセンブラ展開すると、ｃｍｐ，ｂｅ＊の２つの命令に展開される。ｃｍｐは、２つの値の差を取り、ゼロ（一致）ならば、ゼロフラグ（ＺＦ）を立てる（ＺＦ＝１）。ｂｎｅは、ＺＦ＝０のとき、ｉｆ文の外に分岐させる。ｂｅは、ＺＦ＝１のとき、ｉｆ文の外に分岐させる。
【００２０】
具体的には、チェック部Ｐでは、比較演算子（＝＝）に基づく同一の値同士の比較演算が実行される。本例では、チェック部Ｐでは、１と１の差を取り、ゼロならば、ゼロフラグを立て（ＺＦ＝１）、ＺＦ＝０のとき、ｉｆ文の外に分岐させる、という処理が実行される。ここで、比較演算子（＝＝）に基づく比較演算に係る部分に異常が無い場合は、１と１の差を取ると、ゼロとなり、ゼロフラグが立ち、ＺＦ＝１であるので、ｉｆ文の外に分岐されることはない。
【００２１】
チェック部Ｐにおいて、ｉｆ文の外に分岐されることは、比較演算子（＝＝）に基づく同一の値同士の比較演算に異常があることを表す。従って、この場合は、ＷＤＣは停止される。
【００２２】
チェック部Ｑでは、比較演算子（！＝）に基づく異なる値同士の比較演算が実行される。本例では、チェック部Ｑでは、異なる値ｓ＿ｂｕｆ１とｓ＿ｂｕｆ２（共にＲＯＭ値）の差を取り、ゼロならば、ゼロフラグを立て（ＺＦ＝１）、ＺＦ＝１のとき、ｉｆ文の外に分岐させる、という処理が実行される。ここで、比較演算子（！＝）に基づく比較演算に係る部分に異常が無い場合は、異なる値ｓ＿ｂｕｆ１とｓ＿ｂｕｆ２の差を取ると、ゼロとならず、ゼロフラグが立たず、ＺＦ＝０であるので、ｉｆ文の外に分岐されることはない。
【００２３】
チェック部Ｑにおいて、ｉｆ文の外に分岐されることは、比較演算子（！＝）に基づく異なる値同士の比較演算に異常があることを表す。従って、この場合は、ＷＤＣは停止される。
【００２４】
ここで、例えばｃｍｐに係る回路部分に異常があり、常にゼロを出力するような異常が発生した場合、チェック部Ｐでは、ゼロフラグが立ち、ＺＦ＝１であるので、ｉｆ文の外に分岐されることはない。他方、チェック部Ｑでは、ゼロフラグが立ち、ＺＦ＝１であるので、ｉｆ文の外に分岐される。このようにして、チェック部Ｐに加えて、チェック部Ｑを設けることにより、比較演算子（＝＝）に基づく比較演算をアセンブラ展開したレベルで正確にチェックすることができ、比較演算における異常の有無を高い信頼性をもって判断することができる。
【００２５】
算術／論理演算のチェック部Ｒでは、所定の演算式に従った演算結果と、それに対応する正答値の記憶値とを比較演算により比較することで、算術／論理演算の異常の有無が判定される。本例では、好ましい一例として、以下の演算式が使用される。
【００２６】
【数１】
2011142015.tif 000003
尚、図４との関係について、チェック部Ｒ中のgaluchkは、数１中の０ｘ６Ａに対応する。
【００２７】
ここで、所定の演算式は、好ましくは、算術演算の全ての種類と論理演算の全ての種類が含まれるように設定される。これにより、各種演算の異常の有無を漏れなくチェックすることができる。数１の式では、図５に示すように、Ｙ１部にてシフト演算が組み込まれ、Ｙ２部にて論理演算のＡＮＤが組み込まれ、Ｙ３部にて四則演算の積が組み込まれ、Ｙ４部にて四則演算の商が組み込まれ、Ｙ５部にて四則演算の和が組み込まれ、Ｙ６部に論理演算のＯＲが組み込まれ、Ｙ７部に論理演算のＮＯＴが組み込まれ、Ｙ８部にて四則演算の差が組み込まれている。
【００２８】
また、論理演算のＡＮＤ（Ｙ２部）における数値（０ｘ６Ａと０ｘ９Ｅ）は、好ましくは、０＆０、０＆１、１＆０、１＆１の全てを含むような値が選択される。また、四則演算の和（Ｙ５部）における数値（Ｙ３部の結果の数値とＹ４部の結果の数値）は、好ましくは、０，１の組み合わせで４パターンの和算が網羅されるように、設定され、更に好ましくは、繰り上がりの有無で計８パターンの和算が網羅されるように、設定される。また、論理演算のＯＲ（Ｙ６部）における数値（Ｙ３部とＹ４部の和算で得られる数値と、０ｘ０Ｄ）は、０｜０、０｜１、１｜０、１｜１の全てを含むような値が選択される。これにより、各種演算における各種パターンの全てを漏れなくチェックすることができる。
【００２９】
チェック部Ｒにおいて、所定の演算式に従った演算結果と、それに対応する正答値の記憶値とが一致しない場合は、ゼロフラグが立たず、ＺＦ＝０であるので、ｉｆ文の外に分岐される。ｉｆ文の外に分岐されることは、所定の演算式の演算に異常があることを表す。従って、この場合は、ＷＤＣは停止される。
【００３０】
このように、図４に示す監視処理では、ＷＤＣを反転させるための条件（ＷＤＣ出力条件）として３つのチェック部Ｐ，Ｑ，Ｒのチェック結果がアンド条件で結合されている。従って、３つのチェック部Ｐ，Ｑ，Ｒの全てにおいて正常であると判断された場合にのみ、ＷＤＣが反転される。即ち、３つのチェック部Ｐ，Ｑ，Ｒのいずれか１つにおいて異常であると判断されると、ＷＤＣが停止され、その結果、マイクロコンピューター２０がリセットされる。
【００３１】
ところで、数１の左辺の演算に異常が無い場合は、チェック部Ｒにおいて、ゼロフラグが立ち、ＺＦ＝１であるので、ｉｆ文の外に分岐されることはない。しかしながら、例えばｃｍｐに係る回路部分に異常があり、常にゼロを出力するような異常（即ち、異なるものを比較した場合に、同一であると判定する態様の異常）が発生した場合、チェック部Ｒにおいて、数１の左辺の演算に異常がある場合でも、ゼロフラグが立ち、ＺＦ＝１であるので、ｉｆ文の外に分岐されることはない。しかしながら、図４に示す監視処理では、かかる場合には、チェック部Ｑにおいて、ゼロフラグが立ち、ＺＦ＝１であるので、ｉｆ文の外に分岐される。これにより、数１の左辺の演算に異常があるにも拘わらず、かかる異常を検知できずにマイクロコンピューター２０がリセットされないことを防止することができる。このようにして、ＷＤＣ出力条件に、「異なる定数同士を比較し、同一でないならば」という条件を付加することで、比較演算の異常に起因して算術／論理演算の異常が隠れてしまうことを効果的に防止することができる。
【００３２】
図６は、演算器異常判定装置４０により実行される監視処理の一例の流れを示すフローチャートである。
【００３３】
ステップ６００では、算術／論理演算異常判定部４４において、所定の演算式の算術／論理演算が実施される。即ち、数１で示した演算式の左辺が演算される。尚、所定の演算式は、その回答値と共にＲＯＭ等に予め記憶される。また、所定の演算式は、複数種類用意されてもよく、この場合、複数種類の演算式のうちから１つずつ所定の順序で使用されるように読み出されてもよい。
【００３４】
ステップ６０２では、比較演算異常判定部４２において、比較演算が正常であるか否かがチェックされる。このチェックは、上述した方法で実行されてもよい（図４の比較演算のチェック部Ｐ，Ｑ参照）。即ち、同一の値同士の比較演算を実施すると共に、異なる値同士の比較演算を実施し、いずれか一方に異常がある場合に、比較演算に異常があると判定する。比較演算が正常である場合は、ステップ６０４に進む。他方、比較演算が異常である場合は、何も実行せず、そのまま終了する。この場合、ＷＤＣが停止されることになり、マイクロコンピューター２０がリセットされる。
【００３５】
ステップ６０４では、算術／論理演算異常判定部４４において、上記ステップ６００で実施された算術／論理演算の演算結果と、それに対応する正答値（数１で示した演算式の右辺）の記憶値（ＲＯＭ値）とを比較することにより、上記ステップ６００で実施された算術／論理演算が正常であるか否かがチェックされる（図４の算術／論理演算のチェック部Ｒ参照）。上記ステップ６００で実施された算術／論理演算の演算結果が正答値と一致する場合は、算術／論理演算が正常であると判断して、ステップ６０６に進む。他方、上記ステップ６００で実施された算術／論理演算の演算結果が正答値と一致しない場合は、算術／論理演算が異常であると判断して、何も実行せず、そのまま終了する。この場合、ＷＤＣが停止されることになり、マイクロコンピューター２０がリセットされる。
【００３６】
ステップ６０６では、ＷＤＣ出力（反転）が実施される。従って、マイクロコンピューター２０がリセットされない。
【００３７】
以上説明した本実施例の演算器異常判定装置４０によれば、とりわけ、以下のような優れた効果が奏される。
【００３８】
上述の如く、本実施例の演算器異常判定装置４０によれば、比較演算の異常の有無を、比較演算子をアセンブラ展開したレベルでチェックすることで、比較演算の異常の有無を高い信頼性をもって判断することができる。これにより、同比較演算を伴う算術／論理演算の異常判定を精度良く実行することができる。また、これにより、単一のマイクロコンピューター２０内で自身の異常の有無を精度良く判定することができ、単一のマイクロコンピューター２０と単一の電源ＩＣ３０にて低コストで高信頼性の監視機能を実現することができる。即ち、本実施例の演算器異常判定装置４０によれば、複数のマイクロコンピューター間で監視し合うようなシステムに比べて、信頼性を維持しつつ、低コスト化を図ることができる。
【００３９】
以上、本発明の好ましい実施例について詳説したが、本発明は、上述した実施例に制限されることはなく、本発明の範囲を逸脱することなく、上述した実施例に種々の変形及び置換を加えることができる。
【００４０】
例えば、上述した実施例において、他の演算機能を追加してチェックすることも可能である。例えば、上述した実施例では、浮動小数点の演算の異常の有無はチェックしていないが、浮動小数点の演算を数１の式に組み込んでチェックすることも可能である。
【００４１】
また、上述した実施例では、好ましい実施例として、ＷＤＣ出力条件に、ＡＬＵチェック条件（図６参照）を導入することで、ＷＤＣ監視と並列でＡＬＵ２２等を監視している。かかる構成は、ハードウェア資源を効率的に利用するので、低コストで監視システムを実現できる点で有利である。しかしながら、ＷＤＣのパルス幅をＡＬＵチェック結果（図６のステップ６０２，６０４参照）と連動させて変化させることで、ＡＬＵ２２等を監視してもよい。但し、この場合は、ＡＬＵチェック用に監視マイコンが必要となり、又は、高性能な監視ＩＣが必要となる。また、ＷＤＣ出力とは別に、専用パルスを、ＡＬＵチェック結果が正常であるときのみ（図６のステップ６０４のＹＥＳ参照）出力することとしてもよい。但し、この場合は、マイクロコンピューター２０と電源ＩＣ３０との間に、専用パルスの監視用の接続線が別途必要となる。
【符号の説明】
【００４２】
１０    電子演算装置
２０    マイクロコンピューター
２１    ＣＰＵ
２２    ＡＬＵ
２４    ＰＳＵ
２６    ＢＳＦ
２８    ポート
３０    電源ＩＣ
３２    ウォッチドックタイマー
３４    異常検知部
３６    リセット部
４０    演算器異常判定装置
４２    比較演算異常判定部
４４    算術／論理演算異常判定部
【図１】
2011142015.tif 000004
【図２】
2011142015.tif 000005
【図３】
2011142015.tif 000006
【図４】
2011142015.tif 000007
【図５】
2011142015.tif 000008
【図６】
2011142015.tif 000009
【国際調査報告】
2011142015.tif 000010
2011142015.tif 000011