(57)【要約】  【課題】従来、コンピュータの動作異常を検出するため、２台一組のコンピュータを接続し、ウォッチドッグパルスを用いて相互に監視し合う装置がある。この構成では、ハード、ソフト両面で規模が大きくなり、コスト高であった。本発明は、簡素な構成で安価なコンピュータ異常検知回路および検知方法の開発を目的とした。  【解決手段】使用コンピュータは１台とし、このコンピュータで初期値となるランダムな値を生成し、この初期値に対してコンピュータの有する演算機能を用いて、演算結果が初期値と同じ値となるように異なる種類の一連の演算処理を行う。もし、異常があれば演算処理の結果が初期値と同じにならないため、初期値と演算結果とを比較することによりコンピュータの異常を検知する回路とした。【選択図】図２
2006309639.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータの動作状態の監視を、当該監視対象となるコンピュータ１台で実行するコンピュータ異常検知回路であって、コンピュータと外部比較手段とから成り、
前記コンピュータは、
ランダムな値Ａを設定する設定手段と、
前記値Ａを初期値として前記コンピュータが有する演算機能を用い、その演算結果である値Ｂが前記値Ａと同一になるように設定した、異なる種類の演算を予め定められた手順により実施する演算手段と、
前記値Ａを記憶するメモリ部と、
前記メモリ部に記憶されている値Ａを出力する第１の出力手段と、
前記演算結果である値Ｂを出力する第２の出力手段とを有しており、
前記外部比較手段は、
前記第１の出力手段からの出力である値Ａと、前記第２の出力手段からの出力である値Ｂとの差異を調べる比較部と、
前記比較部による比較結果から前記コンピュータの動作が正常か異常かを判定する判定手段と、
前記判定手段の判定結果が前記コンピュータの動作異常を示している場合は、異常信号を出力する第３の出力手段とを有することを特徴とするコンピュータ異常検知回路。
【請求項２】
請求項１に記載のコンピュータ異常検知回路において、
前記第１の出力手段の予め定められた桁を、論理回路を介して前記比較部の一方の入力側に接続し、
前記演算手段においては、前記論理回路における演算処理と同じ演算処理を実行し、前記第２の出力手段を前記比較部の他方の入力側に接続し、
前記コンピュータが正常に動作している場合は、前記外部比較手段の二つの入力側への入力値が等しくなるように前記演算処理を行う構成であることを特徴とするコンピュータ異常検知回路。
【請求項３】
コンピュータの動作状態の監視を、当該監視対象となるコンピュータ１台と外部比較手段とで実行するコンピュータ異常検知方法であって、
前記コンピュータにおいてランダムな値Ａの設定と記憶を行い、
前記値Ａを初期値として前記コンピュータが有する演算機能を用い、その演算結果である値Ｂが前記値Ａと同一になるように設定した、異なる種類の演算が予め定められた手順により配列されている演算処理を行い、
前記記憶している値Ａと、前記演算結果である値Ｂを前記コンピュータから出力し、
前記値Ａと、値Ｂとの差異をコンピュータ外部に接続された外部比較手段で比較し、
前記比較結果が同一か否かで前記コンピュータの動作が正常か異常かを判定することを特徴とするＣＰＵ異常検知方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータの動作異常検知回路および動作異常検知方法に係る。特に所定の時間間隔ごとにコンピュータの状態監視用パルスを用いてコンピュータの動作異常を検知する回路および方法に係る。
【背景技術】
【０００２】
コンピュータ（以下、ＣＰＵと略記）の動作異常を検出する監視装置として、ウォッチドッグパルスと呼ばれるＣＰＵの動作状態監視用のパルスを用いる装置が用いられている。このウォッチドッグパルスとは下記特許文献１に記載されているように、一対のＣＰＵを用い、それぞれのＣＰＵが所定のタイミングで発するウォッチドッグパルスを相互に監視し合うように接続し、それぞれのループ処理プログラム途中の所定のステップにおいてループタイムが経過したことを判定する制御情報、すなわちウォッチドッグパルスの授受を行う。この判定時点で、例えばサーバー側のＣＰＵが発したウォッチドッグパルスとクライアント側のＣＰＵが発するウォッチドッグパルスとが規定時間内に極性（論理値）が一致しない場合はクライアント側のＣＰＵが暴走していると判定し、自らのＣＰＵ（サーバー側）のループ処理を停止する方法で相互監視を行うための回路がある。
【０００３】
【特許文献１】特開平８−３０５６１１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記の従来技術においては、対象であるＣＰＵの動作状態の異常検知用としてさらに１台のＣＰＵを設置し、動作異常を予め定められたタイミングでこれら２台のＣＰＵ間で相互に制御情報の授受を行うことにより相互監視を行う構成としている。このため、２台で構成することが要求されるため、ハードウェア、ソフトウェア両面でコスト高となり、演算処理の点でもソフトウェア面での負担が大きくなる問題があった。  
本発明においては、上記問題点を解決し、１台のＣＰＵと安価な外部回路とを用いるのみでＣＰＵ異常検知回路および異常検知方法を実現することを目的とした。
【課題を解決するための手段】
【０００５】
前記目的を達成するために本発明による回路においては、監視対象であるＣＰＵと、このＣＰＵにおいて予め定められた演算処理を行うことで得られた演算結果からＣＰＵが正常か否かを判定する外部比較器とを基本要素として構成している。このＣＰＵにおいては、ＣＰＵ監視用のランダムな値Ａを発生し、この値ＡをＣＰＵのメモリ部に記憶しておく。一方、このランダムな値Ａを初期値としてＣＰＵが有する演算機能を用いて、ＣＰＵが正常であれば、演算結果が初期値である値Ａに等しくなるように予め定められた手順で異なる種類の演算を実行し、演算処理完了後に演算結果の値Ｂとメモリに記憶しておいた初期値である値Ａとを出力手段を介してそれぞれ出力する。外部比較器においては、簡単なハードウェアでこれら値Ａと値Ｂとを比較し、比較出力の極性（論理値）から値Ａと値Ｂとの一致を判定する。これら値が等しい場合は，ＣＰＵは正常に動作していると判定し、異なる場合はＣＰＵに異常が発生していると判定してＣＰＵ異常検知信号を出力し、ＣＰＵの動作を停止させる。
【発明の効果】
【０００６】
本発明によれば、１台のＣＰＵでランダムに発生させ記憶している値Ａと、異なる種類の演算を予め定められた手順で実行し、これにより得られた演算結果と前記の値Ａとを安価な外部比較器を用いて比較する構成としたため、ＣＰＵは１台で済み、従来のように２台１組で使用することは不要となり、回路構成を単純化することが出来た。また、ＣＰＵが１台で済むため相互監視用のソフトウェアも単純化されコスト減を実現することが出来た。
【発明を実施するための最良の形態】
【０００７】
以下図により本発明の構成を説明する。  
（実施の形態１）
図１（ａ）に本発明によるＣＰＵ異常検知回路のブロック図を示す。図１（ｂ）はＣＰＵが正常に動作している場合の信号の流れを示しており、図１（ｃ）は異常が発生した場合の信号の流れを示している。
【０００８】
本発明によるＣＰＵ異常検知回路は図１（ａ）に示すようにＣＰＵ１０１と外部比較器１０２とを基本要素として構成されている。  
ＣＰＵ１０１は、異常検知テストを行うためのランダムな値Ａを設定する設定手段であるテストデータ設定部１０３と、このランダムな値である値Ａを記憶しておくメモリ部１０４と、ランダムな値である値Ａを初期値として予め定められた一連の演算を実行し、演算結果が値Ａと等しくなるような値Ｂを出力する演算手段である演算処理部１０５と、さらにメモリ部１０４に記憶されている値ＡをＣＰＵ１０１から出力する第１の出力手段１０９と、値ＢをＣＰＵ１０１から出力する第２の出力手段１１０で構成されている。この演算処理としてはＣＰＵが有する各種演算機能（加算、減算、乗算、除算、右シフト、左シフト等の全てまたは何れか）を適用して実行される。
【０００９】
外部比較手段である外部比較器１０２は、ＣＰＵ１０１の出力でメモリ部１０４に記憶されている値Ａと、演算結果である値Ｂとの一致の判定すなわち異常判定を行う比較部１０６と、この比較部１０６の出力である比較結果からＣＰＵ１０１の動作異常により演算処理に演算ミスが発生したか否かを判定する判定手段である判定部１０７と、異常発生の場合の信号を出力する第３の出力手段である異常信号検知出力部１０８とを基本構成としている。
【００１０】
すなわち、前記「特許文献１」においては１対のＣＰＵが互いに所定のタイミングで所定のパターン（ウォッチドッグパルス）の授受を行うことによりＣＰＵの状態を監視していたが、本発明においては監視対象のＣＰＵ１台で、値Ａの設定と値Ｂの算出とを行い、これら両値の比較を全て１台のＣＰＵで行うためＣＰＵ異常検知回路の構成が簡素になり、これにより制御ソフトも単純化される効果がある。
【００１１】
図１（ｂ）は図１（ａ）においてＣＰＵ１０１が正常に動作している場合の信号の経路を示している。すなわち、ＣＰＵ１０１の出力である値Ａと値ＢとはＣＰＵ１０１の第１および第２の出力手段を経由してそれぞれ比較部１０６に入力され、ここでこれら両値は比較される。図１（ｂ）の例においてはＣＰＵ１０１が正常に動作している場合であるから値Ａ＝値Ｂ＝“１１１０（１０進数で１４）”である。比較された結果は判定部１０７でＣＰＵ１０１の異常の有無が判定される。図１（ｂ）の例では、値Ａと値Ｂとが一致した場合であるから、判定部１０７出力は演算ミスがない場合（判定部１０７；ＮＯ）であり、値Ａを設定する最初のステップである入力手段であるテストデータ設定部１０３に戻り、次の異常検知処理の開始を待つ。  
図１（ｃ）は値Ａと値Ｂとが一致しない場合、すなわち演算ミスが生じた場合（判定部１０７；ＹＥＳ）であり、異常信号を出力する出力手段である異常信号検知出力部１０８を介してＣＰＵの異常信号を出力する。
【００１２】
図２は、図１のブロック図を具体的な回路図で示したものである。図２の回路においては、図１に示すブロック図の構成要素にさらに外部比較器２０２からの出力である異常検出信号を保持して異常信号を出力する第３の出力手段となるラッチ回路２０３と、ＣＰＵ２０１のリセット信号立ち上がり時点後にＣＰＵ異常検知信号を誤って出力しないようにするＣＰＵ異常検知出力キャンセル回路２０４とが付加される。なお、ラッチ回路２０３の出力はフェールセーフ回路（Ｆ／Ｓ回路）２０５に入力されている。ここで、外部比較器２０２は図１における外部比較器１０２の具体的回路構成として示したものである。また、図３は図２の回路における動作のタイミング図である。以下、図２および図３により本発明による回路の動作の詳細について説明する。
【００１３】
図２において、監視対象であるＣＰＵ２０１は、８個の出力用の端子（端子１乃至端子４が第１の出力手段である値Ａ用出力端子、端子５乃至端子８が第２の出力手段である値Ｂ用出力端子）と２個の制御端子（リセット端子／ＲＥＳＥＴ、およびＰＲＵＮ端子／ＰＲＵＮ）とを有しており、図１におけるテストデータ設定部１０３はＣＰＵ２０１の内部でソフトウェアにより設定され、メモリ部１０４もＣＰＵ２０１に内蔵されている。
【００１４】
外部比較器２０２はこの例においてはＣＰＵ２０１の出力端子の数にあわせて４個のＥＸ−ＯＲ１乃至ＥＸ−ＯＲ４（排他的論理和）回路（２０２１乃至２０２４）と、これら４個のＥＸ−ＯＲ（２０２１乃至２０２４）の出力の論理和を求めるためのダイオード（Ｄ４乃至Ｄ７）２０３１乃至２０３４および抵抗２０４とで構成されている。この４個のＥＸ−ＯＲ回路部分は図１における比較部１０６に対応している。さらにラッチ回路２０３とＣＰＵ異常検知出力キャンセル回路２０４およびウォッチドッグタイマ（ＷＤＴ）を内蔵した電源ＩＣ２０７とが付加されている。電源ＩＣ２０６は、電源投入時にＣＰＵ２０１からＰＲＵＮ信号が印加され、電源ＩＣ２０６のウォッチドッグタイマが動作を開始し、ＣＰＵ２０１の監視動作のタイミング設定が行われる。
【００１５】
この回路の動作は、図３に示すように５区間に分割することが出来、これにより順次実行される。  
第１のステップ：［電源投入からリセット信号立ち上がり直前まで］  これは図３において区間（１）の部分で、電源投入直後においてはリセット信号は論理“０”（Ｌレベル）の状態にあり、この間においてはラッチ回路２０３のインバータ２０５１（ＩＮＶ２）の入力はＬレベルであり、したがってラッチ回路２０３の出力となるインバータ２０５１（ＩＮＶ２）の出力は論理“１”（Ｈレベル）となる。このラッチ回路２０３の出力はＣＰＵ異常検出信号となるものであり、図１の判定部１０７に相当している。このＣＰＵ異常検出信号がＨレベルであることはＣＰＵが正常な状態であることを示している。
【００１６】
第２ステップ：［リセット信号立ち上がりからＣＰＵ起動直前まで］  これは図３において区間（２）の部分で、ＣＰＵがリセット信号立ち上がりからＰＲＵＮ出力や各種演算を開始可能となるまでの期間を指す。この間に、電源投入時のＣＰＵ異常誤検出防止のためのＣＰＵ異常検知出力キャンセル回路２０４を動作させる。
【００１７】
ＣＰＵ異常検知出力キャンセル回路２０４は、リセット信号が立ち上がってからＣＰＵが正常に演算が出来るようになるまでの時間ｔｒの期間だけ外部比較器２０２の出力を強制的にＬレベルにして、本コンピュータ異常検知回路が立ち上がり時にＣＰＵ異常信号が誤って出力されることのないようにキャンセルする回路である。ここで、上記の時間ｔｒは図２におけるＣＰＵ異常検知出力キャンセル回路２０４に含まれているＣＲ時定数回路（抵抗２０６１およびキャパシタ２０６２）により決定されている。この時間ｔｒが経過すれば上記のキャンセル動作は解除され、図３における区間（３）以後の状態となりＣＰＵ異常監視状態となる。
【００１８】
第３ステップ：［ＣＰＵが正常な場合］  上記区間（３）の状態でＣＰＵが正常に動作している場合は、ＣＰＵ内でランダムな値Ａを設定し、この値Ａを図１におけるメモリ部１０４に記憶させておく。同時に、この値Ａを初期値として各種演算機能（加算、減算、乗算、除算、右シフト、左シフト等）の全てを使用して値Ａ（初期値）＝値Ｂとなるように演算を行う。ここで、例えば、値Ａを図２における端子１乃至端子４の出力信号として“１１１０（１０進数で１４）”とする。ここで、上記演算が正しく実行された場合においては、図２における端子５乃至端子８の出力である値Ｂも“１１１０”となる。したがって、図２の外部比較器２０２におけるＥＸ−ＯＲ回路２０２１乃至２０２４の２入力端子には互いに等しい論理値（１１１０）が入力されることになり、したがって各ＥＸ−ＯＲ出力は何れも論理“０”（Ｌレベル）となり、正常と判断する。これにより、図１（ｂ）に示す経路により初期値であるランダムな値Ａを設定する最初のステップであるテストデータ設定部１０３に戻り、次の監視開始を待つ状態となる。
【００１９】
第４ステップ：［ＣＰＵ異状による演算ミスを生じている場合］  上記区間（４）の状態でＣＰＵ異状による演算ミスが発生した場合は、例えば、上記例のランダムな値Ａと同じ初期値“１１１０”を入力したとし、演算結果の値Ｂとして図１（ｃ）に示すように“１１０１”となった場合は、ＥＸ−ＯＲ３（２０２３）は間違った論理値が入力されたことになり、したがって、出力の論理値は論理“１”（Ｈレベル）となる。各ＥＸ−ＯＲ出力はダイオード２０３１（Ｄ４）乃至２０３４（Ｄ７）を介して論理和が求められラッチ回路２０３のインバータ２０５１（ＩＮＶ２）の入力に接続されており、したがって、インバータ２０５１の出力はＬレベルとなりＣＰＵ２０１の異状が検出され、図１（ｃ）に示す経路によりＣＰＵ１０１（図２におけるＣＰＵ２０１）の異状検知信号が出力される。
【００２０】
ラッチ回路２０３の動作は以下のように説明される。すなわち、ラッチ回路２０３の出力であるインバータ２０５１（ＩＮＶ２）の出力がＬレベルとなることにより、ダイオード２０５２（Ｄ２）を通じてインバータ２０５３（ＩＮＶ１）の入力がＬレベルとなるため、結局、インバータ２０５１の入力はＣＰＵ異常検知の論理レベルであるＨレベルを保持し続けることになる。これは、ＣＰＵ２０１における演算ミスの原因が解決されても依然として保持し続ける。図３の区間（４）および区間（５）にこの状況を示す。
【００２１】
第５ステップ：［ラッチされているＣＰＵ異常検知信号の解除］  第４ステップで保持されたＣＰＵ異常検知の論理レベルは、図示していないがＣＰＵ２０１のＲＥＳＥＴ端子から論理“０”（Ｌレベル）が出力された場合にのみ解除される。
【００２２】
（実施の形態２）
本実施の形態２は、ＣＰＵ１０１または２０１の異常を見逃してしまう場合を排除するためのものである。例えば、ＣＰＵ１０１または２０１に異常が生じた結果全ての出力端子（端子１乃至端子８）が同一論理値（論理“１”または論理“０”の何れか）となった場合にこのようなＣＰＵ異常の見逃しが発生する。この問題は例えば値Ａ側の端子（端子１乃至端子４）の予め定められた桁にインバータ等の論理回路を介して外部比較器２０２のＥＸ−ＯＲ１乃至４（２０２１乃至２０２４）に接続することで解決し得る。この場合の回路構成の例を図４に示す。
【００２３】
図４においては、値Ａ側の第１桁（端子１）出力と第３桁（端子３）出力とをＥＸ−ＯＲ２０２１および２０２３それぞれの一方の入力端子にインバータ４０１および４０２を介して入力する構成としている。これにより得られる、外部比較器２０２の一方の入力値を値Ａ’とする。また、値Ｂ側の出力側においても値Ａ側でインバータを挿入した桁に対しては演算処理の中で反転操作を行いこれにより得られる外部比較器２０２の他方の入力値を値Ｂ’とする。ＣＰＵが正常に動作している場合に、値Ａ’＝値Ｂ’となるように演算処理を行ってＥＸ−ＯＲ（２０２１乃至２０２４）のそれぞれ対応する入力端子に等しい値が入力される構成としておく必要がある。  
なお、値Ａと値Ｂとは値の一致以外に、値Ａと値Ｂとが所定の関係を満たす場合であってもよい。この所定の関係は、例えば、値Ａと値Ｂの差が一定である場合、一定の係数を掛けた場合（１次の関数関係）等であってもよい。
【００２４】
また、以上の例においてはすべて４桁の場合（４ビットの値）について説明したが、ＥＸ−ＯＲを増設し、値Ａ値Ｂの桁数を増すことによりＣＰＵ異常の検出精度を向上させることが出来る。
【図面の簡単な説明】
【００２５】
【図１】本発明によるコンピュータ異常検知回路の基本構成図。
【図２】本発明における実施の形態１を示す回路図。
【図３】図２の回路図の動作を示すタイミング図。
【図４】本発明における実施の形態２を示す回路図。
【符号の説明】
【００２６】
１０１，２０１：ＣＰＵ            １０２、２０２：外部比較器
１０３：テストデータ設定部        １０４：メモリ部
１０５：演算処理部                １０６：比較部
１０７：判定部                    １０８：異常信号検知出力部
１０９：第１の出力手段            １１０：第１の出力手段
２０２１〜２０２４：排他的論理和回路
２０３１〜２０３４、２０５２：ダイオード
２０５１，２０５３，４０１，４０２：インバータ
２０４、２０６１：抵抗            ２０６２：キャパシタ
２０６：電源ＩＣ
【図１】
2006309639.tif 000003
【図２】
2006309639.tif 000004
【図３】
2006309639.tif 000005
【図４】
2006309639.tif 000006