(57)【特許請求の範囲】
【請求項１】
コンピュータシステムに、ウォッチドッグタイマによる異常監視手段、メモリチェックによる異常監視手段、基本演算チェックによる異常監視手段、さらに２台のＣＰＵを使用したコンピュータシステムではＣＰＵ相互監視による異常監視手段のうち、少なくとも１つの異常監視手段を備えて異常検出を行い、これらの異常検出時の誤出力・誤制御を防止してコンピュータシステムを復旧させる異常検出・復旧方式であって、
前記異常監視手段は、異常検出時に、ＣＰＵのプログラムのレジスタ命令によってシステムリセットを発行し、コンピュータシステムの一時的障害に対して復旧可能とするリスタート回路を設け、このリスタート回路がリスタートを実行したとき又は前記ＣＰＵの内部にもつリスタート処理手段がリスタートを実行したときのリスタート回数を積算記録する記録手段と、
前記ＣＰＵ動作の異常処理項目を監視する手段と、
前記異常処理項目について異常を検出したときにＣＰＵに例外処理割り込み処理を実行し、この割込み処理が発生したことを前記記録手段によって記録しておく手段と、
前記記録手段に記録された前回の割り込み処理と今回の割り込み処理との発生間隔が一定期間内に連続しないときにリスタート処理を行い、連続したときにコンピュータシステム停止を行う手段とを備え
前記異常処理項目がＣＰＵアドレスエラーの場合には、要因検出及び処理開始タイミングで、奇数アドレスからの命令読み込み、内蔵モジュール空間からの命令読み込み、外部メモリ空間からの命令読み込みの処理項目を含むことを特徴とするコンピュータの異常検出・復旧方式。
【請求項２】
コンピュータシステムのアドレス／データバスのデータについて、アドレス空間の先頭番地と最終番地の２箇所を検定アドレスとして一定周期で検定を行い、アドレス／データバスの異常を検出する手段を備えたことを特徴とする請求項１に記載のコンピュータの異常検出・復旧方式。
【請求項３】
コンピュータシステムのアドレスバスのデータについて、アドレスライン毎の検定アドレス単位で一定周期で検定を行い、アドレスバスの異常を検出する手段を備えたことを特徴とする請求項１又は２に記載のコンピュータの異常検出・復旧方式。
【請求項４】
コンピュータシステムに誤動作が発生する異常検出時にリセットし、このリセット状態を保持してコンピュータシステムを停止させるリセット出力回路を備えたことを特徴とする請求項１〜３のいずれか１項に記載のコンピュータの異常検出・復旧方式。
【請求項５】
２つのＣＰＵ構成にしたコンピュータシステムにおいて、前記リセット出力回路は、２つのＣＰＵ別に設けてそれぞれの異常検出でそれぞれリセット出力を得る構成にしたことを特徴とする請求項１〜４のいずれか１項に記載のコンピュータの異常検出・復旧方式。
【請求項６】
主ＣＰＵと従ＣＰＵの主従の関係をもたせた２つのＣＰＵ構成にしたコンピュータシステムにおいて、主ＣＰＵによる異常検出でリセット出力を得る前記リセット出力回路を設け、従ＣＰＵはその異常検出で主ＣＰＵへのシステム停止要求を発行する手段を設けたことを特徴とする請求項１〜５のいずれか１項に記載のコンピュータの異常検出・復旧方式。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムにおいて、ＣＰＵのプログラム暴走やアドレス／データバスのデータ異常等を検出するための異常検出と、これらの異常検出時の誤出力・誤制御を防止してシステムを復旧させる異常検出・復旧方式に関するものである。
【背景技術】
【０００２】
一般のコンピュータシステムにおいて、プログラムの暴走検出には、ウォッチドッグタイマ（ｗａｔｃｈ  ｄｏｇ  ｔｉｍｅｒ）を用いている。たとえば、ＣＰＵが、アドレス空間の割り当てられていない特定領域のアドレスを指定した場合には、アクセスが行われなくなり、プログラムが暴走する。このとき、ウォッチドッグタイマは、所定の監視期間内にリセットされないため、タイマーオーバーフローとなり、内部リセットが発生する。これにより、ＣＰＵは異常が発生したことを認識し、復旧可能なものについては復旧を行う。
【０００３】
また、ウォッチドッグ監視以外の異常検出には次のようなものがある（例えば、特許文献１参照）。
【０００４】
・メモリチェック（ＲＯＭチェック、ＲＡＭチェック）
ＲＯＭチェックは、チェックするプログラム領域のチェックサムを記録しておき、オンラインで対象プログラム領域のチェックサムを計算し、先に記録してあったチェックサム値を比較することで異常を検出する。ＲＡＭチェックは、メモリに既知の値を書き込み、正しく書き読みができるか否かを確認することで異常を検出する（例えば、特許文献１参照）。
【０００５】
・ＣＰＵ相互監視
２台のＣＰＵを使用したシステムにおいて、ＣＰＵ相互間で既知のデータをやり取りし、データの値を確認することで、互いのＣＰＵを監視する。
【０００６】
・基本演算チェック
予め設定したＣＰＵの演算機能を使用した演算結果と、予め確認して置いた演算結果とを比較することで、ＣＰＵ内部の機能監視をする。
【特許文献１】特開２０００−３４７９４８
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ＣＰＵ，ＲＯＭ，ＲＡＭで構成されるコンピュータシステムにおいて、部品故障、異物接触などによる異常状態を検出するのに各種監視機能を設けるが、ＣＰＵの誤った出力が重大な影響を及ぼす場合がある。そのために、ＣＰＵの動作に異常状態を確実に高速に検出して誤出力を抑える機能が必要である。
【０００８】
一般的に、ウォッチドッグタイマによるＣＰＵの監視は、定周期処理でタイマをリトリガさせ、タイムアップさせないように動作していることを正常とし、リトリガできなくなって、一定時間でタイムアップした時にウォッチドッグ監視異常とするものである。したがって、ウォッチドッグタイマ監視は、通常、数十ミリ秒から数秒程度に設定される。この時間設定は、定周期の確実性によって定められるものであり、処理によっては、周期をあまり短くすると、アクセスの遅れ等があったときに、誤って異常であると判定する場合がある。そのために、監視時間を長めに設定する傾向がある。
【０００９】
また、最近のＣＰＵは、フラッシュＲＯＭ内蔵のＣＰＵが出てきており、ＣＰＵ外部のバス上で発生する障害の影響を受けずにプログラムが動作して、ＣＰＵの外部にあるメモリのデータのみが誤り誤動作すると言うことも考えられる。
【００１０】
このように、ウォッチドッグタイマによるＣＰＵの監視には、監視時間を数十ミリ秒から数秒程度としているため、異常が発生したことをすぐに検出することができず、異常の検出に比較的長い時間を要するということになり暴走によっては、誤出力をしてしまうという問題があった。
【００１１】
また、前記のＣＰＵの動作を監視する方式としてのＲＯＭチェック方式では、チェックするプログラム領域のチェックサムを記録しておき、オンラインで対象プログラム領域のチェックサムを計算し、先に記録してあったチェックサム値を比較することで異常を検出するため、総和（チェックサム値）を取るために時間がかかることになる。また、ＲＡＭチェック方式は、メモリに既知の値を書き込み、正しく書き読みができるか否かを確認することで異常を検出するため、すべての領域を確認するために時間がかかることになる。
【００１２】
また、ＣＰＵ相互の監視方式では、ＣＰＵ相互間で既知のデータをやり取りし、データの値を確認することで、互いのＣＰＵを監視するため、タイミングを増やせば高速になるが、ＣＰＵ間の相互監視でしかない。
【００１３】
また、基本演算チェック方式では、予め設定したＣＰＵの演算機能を使用した演算結果と、予め確認して置いた演算結果とを比較することで、ＣＰＵ内部の機能監視をするため、基本演算を行う時だけ有効であり、タイミングを増やせば高速になるが、ＣＰＵ内部だけの監視でしかない。
【００１４】
本発明は、上記事情に基づいてなされたものであり、プログラム異常等の各種異常を早期に検出して、システムの確実な復旧を可能にした異常検出・復旧方式を提供することを目的とするものである。
【課題を解決するための手段】
【００１５】
本発明は、前記の課題を解決するため、ＣＰＵの内部の機能としてもつリスタート機能の他に、各種異常検出時にハードウェアによるリスタート機能を設けて一時的障害に対して復旧可能とし、さらに異常発生状況に応じてシステムの動作安定度を評価するメカニズムを持たせ、その評価結果によりリスタートさせるかシステムを停止させるか判定処理するようにしたもので、以下の構成を特徴とする。
【００１６】
コンピュータシステムに、ウォッチドッグタイマによる異常監視手段、メモリチェックによる異常監視手段、基本演算チェックによる異常監視手段、さらに２台のＣＰＵを使用したコンピュータシステムではＣＰＵ相互監視による異常監視手段のうち、少なくとも１つの異常監視手段を備えて異常検出を行い、これらの異常検出時の誤出力・誤制御を防止してコンピュータシステムを復旧させる異常検出・復旧方式であって、
前記異常監視手段は、異常検出時に、ＣＰＵのプログラムのレジスタ命令によってシステムリセットを発行し、コンピュータシステムの一時的障害に対して復旧可能とするリスタート回路を設け、このリスタート回路がリスタートを実行したとき又は前記ＣＰＵの内部にもつリスタート処理手段がリスタートを実行したときのリスタート回数を積算記録する記録手段と、
前記ＣＰＵ動作の異常処理項目を監視する手段と、
前記異常処理項目について異常を検出したときにＣＰＵに例外処理割り込み処理を実行し、この割込み処理が発生したことを前記記録手段によって記録しておく手段と、
前記記録手段に記録された前回の割り込み処理と今回の割り込み処理との発生間隔が一定期間内に連続しないときにリスタート処理を行い、連続したときにコンピュータシステム停止を行う手段とを備え
前記異常処理項目がＣＰＵアドレスエラーの場合には、要因検出及び処理開始タイミングで、奇数アドレスからの命令読み込み、内蔵モジュール空間からの命令読み込み、外部メモリ空間からの命令読み込みの処理項目を含むことを特徴とする。
【００１９】
コンピュータシステムのアドレス／データバスのデータについて、アドレス空間の先頭番地と最終番地の２箇所を検定アドレスとして一定周期で検定を行い、アドレス／データバスの異常を検出する手段を備えたことを特徴とする。
【００２０】
コンピュータシステムのアドレスバスのデータについて、アドレスライン毎の検定アドレス単位で一定周期で検定を行い、アドレスバスの異常を検出する手段を備えたことを特徴とする。
【００２１】
コンピュータシステムに誤動作が発生する異常検出時にリセットし、このリセット状態を保持してコンピュータシステムを停止させるリセット出力回路を備えたことを特徴とする。
【００２２】
２つのＣＰＵ構成にしたコンピュータシステムにおいて、前記リセット出力回路は、２つのＣＰＵ別に設けてそれぞれの異常検出でそれぞれリセット出力を得る構成にしたことを特徴とする。
【００２３】
主ＣＰＵと従ＣＰＵの主従の関係をもたせた２つのＣＰＵ構成にしたコンピュータシステムにおいて、主ＣＰＵによる異常検出でリセット出力を得る前記リセット出力回路を設け、従ＣＰＵはその異常検出で主ＣＰＵへのシステム停止要求を発行する手段を設けたことを特徴とする。
【発明の効果】
【００２４】
以上のとおり、本発明によれば、ＣＰＵの内部の機能としてもつリスタート機能の他に、各種異常検出時にハードウェアによるリスタート機能を設けて一時的障害に対して復旧可能とし、さらに異常発生状況に応じてシステムの動作安定度を評価するメカニズムを持たせ、その評価結果によりリスタートさせるかシステムを停止させるか判定処理するようにしたため、プログラム異常等の各種異常を早期に検出して、システムの確実な復旧が可能になる。
【発明を実施するための最良の形態】
【００２５】
（実施形態１）
本実施形態は、ＣＰＵ搭載のリスタート機能の他に、図１のようなリスタート回路を設けた異常検出・復旧方式を提案する。
【００２６】
図１は、異常検出・復旧方式の要部構成を示す。ＣＰＵ１とＲＯＭ２とＲＡＭ３およびＩ／Ｏ４をバス結合したコンピュータ構成において、ＣＰＵ１は、定周期処理でウォッチドッグタイマ５をリトリガさせ、ウォッチドッグタイマ５が一定時間でタイムアップした時に割込みコントローラ６による割込みで異常検出と判断し、復旧可能なものについてはリスタート機能で復旧させる。また、システムには、ウォッチドッグ監視以外の異常検出機能として、前記のメモリチェック機能、基本演算チェック機能、さらに２台のＣＰＵを使用したシステムではＣＰＵ相互監視機能を有する。
【００２７】
このような異常検出機能により異常検出されたときのリスタート機能の実行に際して、ＣＰＵ１からレジスタ７に命令を発行し、ワンショットタイマ８により所定のパルス化を行い、ワンショットタイマ８からシステムリセットパルスを出力する。このリセットパルスは強制リセットスイッチ９の出力やパワーオンリセット信号の経路でシステムリセットを実行する。
【００２８】
本実施形態によれば、ＣＰＵ搭載のリスタート機能、またはリスタートをする仕組みを有しているため、一時的障害に対して自動的に復旧可能となる。さらに、後述の監視の追加により、ハード故障によっても、リスタートの繰り返しを抑止することで、システム全体の保守性を持った、誤動作を起こさない強固なシステムとなる。
【００２９】
（実施形態２）
本実施形態は、図１に示すリスタート回路を設けたコンピュータシステムにおいて、リスタートによって消去されないエリア、例えば不揮発性メモリのエリアにリスタート回数を記憶しできる、このエリアにはＣＰＵ１がリスタート機能を実行したときにリスタートの回数を積算記憶しておき、異常原因の究明等に利用できるようにする。
【００３０】
本実施形態によれば、リスタートの回数を記録できるようにしたことで、システムの動作安定度を評価するメカニズムを持たせることができる。また、ノイズや、外的要因による一過性故障と部品の永久故障、異物付着による永久故障の差異を評価できる。
【００３１】
（実施形態３）
本実施形態は、実施形態１または２のシステム構成において、ＣＰＵ動作を保証しかねない異常処理項目を監視する機能を有し、図２に異常処理項目の監視と復旧手順を示すように、これら異常処理項目について異常を検出したときにＣＰＵに例外処理割り込み処理を実行し（Ｓ１、Ｓ２）、実施形態２のリスタート回数記録機能によって、その例外処理の中で、発生したことを記録しておき（Ｓ３）、結果を参照できるようにしたシステム構成とする。リスタート回数Ｒが１回目の例外処理となる場合は、内部リセットを掛け、回復を期待させる（Ｓ４、Ｓ５）。２回目の例外処理となる場合は、不安定動作抑制のために、内部リセットを継続させ、システムを停止させる（Ｓ６）。
【００３２】
異常処理項目は、以下の表に例を示す。異常処理がＣＰＵアドレスエラーの場合は、要因検出及び処理開始タイミングに、奇数アドレスからの命令読み込み、内蔵モジュール空間からの命令読み込み、外部メモリ空間からの命令読み込みなど、命令の読み出しやデータの読み出し／書き込み時のアドレスが間違っている場合とする。また、異常処理が未定義命令エラーの場合は未定義コードを読み込んだ場合とする。
【００３３】
【表１】
0005176405.tif 000002
【００３４】
これら異常処理項目になるＣＰＵアドレスエラー、未定義命令エラー、さらにタスク監視はログ（記録）を行うが、その際、前回のログと今回のログとの発生間隔をチェックし、一定期間内に連続したことを判定条件として、リセット出力し、システムを停止させ、装置異常を出力させる。つまり、１回の発生ではリスタート処理（内部リセットによる再起動）し、リスタート処理が連続発生する場合は、システム停止を行うことで、保守性の向上と誤動作防止による信頼性向上を目指す。
【００３５】
本実施形態によれば、１回目の例外処理となる場合は内部リセットを発生し、回復を期待させる。また、所定時間以内の２回目の例外処理となる場合は、不安定動作抑制のために、内部リセットを継続させ、システム停止とする。また、システムの動作安定度を評価するメカニズムを持たせ、その評価結果によりリスタートさせるか停止させるか自動的に判断させることで、コンピュータシステムの不安定動作、誤動作の危険性を判定して、誤動作が防止できる。
【００３６】
（実施形態４）
本実施形態は、実施形態１，２の構成のシステムにおいて、アドレス／データバスが故障した場合は、即時にアドレス／データバスの異常を検出できる、０故障検定アドレスと１故障検定アドレスの２力所で検定する監視を追加し、毎周期毎に監視を行う。
【００３７】
具体例として、図３の（ａ）に初期化時処理を示すように、ＳＲＡＭ領域の先頭番地（説明上、００００番地とする）に検定コード１「ＡＡＡＡ」、最終番地（説明上、ＦＦＦＦ番地とする）に検定コード２「５５５５」のデータを記録しておく。そして、図３の（ｂ）に周期処理を示すように、常時、両番地の内容を確認することで、アドレス／データバスに異常の無いことを確認する。異常の発生時にはログを記録し、リスタート処理に入る。
【００３８】
例えば、アドレスバスの「ライン４」がＨ（信号１側）レベルになる故障の場合は、００００番地を読もうとすると、００１０番地のデータを読み込むことになり、検定コード１でないため異常を検出する。また、アドレスバスの「ライン９」がＬ（信号０側）レベルになる故障の場合は、ＦＦＦＦ番地を読もうとすると、ＦＤＦＦ番地のデータを読むことになり、検定コード２でないため、Ｌレベルとなる異常を検出する。
【００３９】
本実施形態によれば、システムのアドレス／データバスのデータについて、アドレス空間の先頭番地と最終番地の２箇所を検定アドレスとして一定周期で検定を行い、アドレス／データバスの異常を検出することにより、アドレス／データバスの故障を早期に検出できる。また、アドレス空間の先頭番地と最終番地の２箇所を検定アドレスとして検定を行うことでアドレスライン全て、データライン全ての異常検定が可能である。
【００４０】
（実施形態５）
本実施形態は、実施形態１，２の構成のシステムにおいて、アドレスバスが故障した場合は、即時にアドレスバスの異常を検出できる、アドレスライン毎の検定アドレス単位で行う監視を追加し、毎周期、または、初期化時に監視を行う。
【００４１】
具体例として、図４に処理を示すように、ＳＲＡＭ領域の先頭番地（説明上、００００番地とする）に検定コード「ＡＡＡＡ」を書き込み、アドレスライン毎の検定アドレスに違う検定コード（例として、００１０番地に「５５５５」）を書き込み、先頭番地を読み出し、検定コードが書き換えられていないか否かを記憶ログからチェックすることにより、アドレスバスに異常の無いことを確認する。
【００４２】
例えば、アドレスバスの「ライン４」がＬ（信号０側）レベルになる故障の場合は、００１０番地にデータを書き込もうとしても００００番地に書かれることになり、結果００００番地の検定コード「ＡＡＡＡ」が違う値に上書きされることになり、再度００００番地を読み出した時は検定コードの値として読み出せないため異常検出する。
【００４３】
なお、アドレス毎の検定アドレスとは、例えば００１０、００２０、００４０、００８０、０１００、０２００、０４００、０８００、１０００、２０００、４０００、８０００番地である。
【００４４】
本実施形態によれば、アドレスバスが故障した場合は、即時にアドレスバスの異常を検出できる監視を追加し、毎周期に監視を行うことにより、アドレスバスの故障を検出できる。また、アドレスライン単位に検定を行う方式であるので、アドレスライン単位で監視の周期、監視のレベルを変えることができる。
【００４５】
（実施形態６）
本実施形態は、ハードウェアによるシステム停止手段（実施形態１，２）の機能を有し、実施形態３，４，５の監視を行い、これらの監視で異常を検出したとき、システムが誤動作する前にリセットすることにより、プログラムが動作して、データの誤りで誤出力する機能を停止させる。
【００４６】
図５に異常検出・復旧方式の要部構成を示すように、ＣＰＵ１による異常を検出した場合、異常処理で、所定のレジスタ１１に命令を発行することで、ラッチ回路１２でリスタート機能を維持し、不安定状態では、リセット状態を保持しシステムを停止させる。
【００４７】
コンピュータシステムにおいて、アドレスバス、データバスの異常は致命的である。本実施形態によれば、アドレスバス、データバスが異常となった時の不安定な動作でも、確実にシステムを停止できるよう、ソフトウェア処理でなく、ハードウェア処理によりシステムを停止可能とする。
【００４８】
（実施形態７）
本実施形態は、異常検出システムが２ＣＰＵ構成の場合、図６に異常検出・復旧方式の要部構成を示すように、実施形態１，２の機能を有し、実施形態３，４，５の監視を行い、両ＣＰＵの異常検出にはそれぞれリセット出力を得る構成とする。
【００４９】
本実施形態によれば、ＣＰＵ１，２の２ＣＰＵ構成の場合、実施形態６のハードによるリセット出力回路１３Ａ、１３Ｂをシステム停止手段としてそれぞれ用意することで、２ＣＰＵの異常検出には、同列に、完全二重化構成で、確実にシステム停止が取れる。
【００５０】
（実施形態８）
本実施形態は、図７に主／従ＣＰＵ構成の異常検出・復旧方式の要部構成を示すように、実施形態１，２の機能を有し、実施形態３，４，５の監視を行い、異常を検出するシステムが主ＣＰＵ１Ａと従ＣＰＵ１Ｂ構成の場合、リセット要求を従ＣＰＵ１Ｂから主ＣＰＵ１Ａにリセット要求信号で行い、主ＣＰＵ１Ａでリセット制御できる構成とする。
【００５１】
リセット要求は、システムの構成上、ＣＰＵ間のポートを使ったディジタルＩＯ信号でも良い。また、ＣＰＵ間の共有メモリを使用したある特定のエリアを使用したリセット要求コードのセット、リセット方式であっても良い。
【００５２】
本実施形態によれば、主ＣＰＵと従ＣＰＵのような主従の関係をもたせた２ＣＰＵ構成の場合、主ＣＰＵは、実施形態６のリセット出力回路でよいが、リセット要求を従ＣＰＵ１Ｂから主ＣＰＵ１Ａにリセット要求信号で行い、主ＣＰＵ１Ａでリセット制御できる構成としたことで、確実にリセット制御できる。
【図面の簡単な説明】
【００５３】
【図１】本発明の実施形態１を示す異常検出・復旧方式の要部構成図。
【図２】本発明の実施形態３における異常処理項目の監視と復旧手順図。
【図３】本発明の実施形態４における故障検定アドレスによる監視手順図。
【図４】本発明の実施形態５における故障検定アドレスによる監視手順図。
【図５】本発明の実施形態６を示す異常検出・復旧方式の要部構成図。
【図６】本発明の実施形態７を示す２ＣＰＵ構成の異常検出・復旧方式の要部構成図。
【図７】本発明の実施形態８を示す主／従ＣＰＵ構成の異常検出・復旧方式の要部構成図。
【符号の説明】
【００５４】
１、１Ａ、１Ｂ  ＣＰＵ
７、１１  レジスタ
８  ワンショットタイマ
１１  レジスタ
１２  ラッチ回路
１３Ａ、１３Ｂ  リセット出力回路
【図１】
0005176405.tif 000003
【図２】
0005176405.tif 000004
【図３】
0005176405.tif 000005
【図４】
0005176405.tif 000006
【図５】
0005176405.tif 000007
【図６】
0005176405.tif 000008
【図７】
0005176405.tif 000009