(57)【要約】【課題】監視対象の演算処理装置が無限ループに陥った異常状態の発生を、単にプログラムカウンタの値を監視するだけの場合と比較して、高い精度で検出することを可能とする。【解決手段】制御部３１は、監視対象の他方のＣＰＵから送信される確認信号を、入力部３４を介して受信する。制御部３１は、予め設定されている確認信号を監視対象のＣＰＵから予め設定された期間以上受信することができない場合、入力部３４を介して監視対象のＣＰＵからプログラムカウンタの値を読み出す。そして、制御部３１は、読み出したプログラムカウンタの値が同一の変化パターンを周期的に繰り返している場合、監視対象のＣＰＵを正常な状態に復帰させるための処理を実行する。【選択図】図２
2020140592.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算処理装置を有し、
前記複数の演算処理装置のうちの少なくとも１つは、
監視対象の演算処理装置から送信される確認信号を受信する受信手段と、
監視対象の演算処理装置におけるプログラムカウンタの値を読み出す読出手段と、
予め設定されている確認信号を監視対象の演算処理装置から予め設定された期間以上受信することができない場合、前記読出手段により監視対象の演算処理装置からプログラムカウンタの値を読み出し、当該プログラムカウンタの値が同一の変化パターンを周期的に繰り返している場合、監視対象の演算処理装置を正常な状態に復帰させるための処理を実行する実行手段と、
を備えた情報処理システム。
【請求項２】
前記実行手段が、監視対象の演算処理装置から読み出したプログラムカウンタの値が同一の変化パターンを繰り返す周期が、予め設定された期間よりも短い場合に、監視対象の演算処理装置を正常な状態に復帰させるための処理を実行する請求項１記載の情報処理システム。
【請求項３】
前記実行手段が、監視対象の演算処理装置から読み出したプログラムカウンタの値が同一の変化パターンを繰り返している際の変動幅が予め設定された値よりも狭い場合に、監視対象の演算処理装置を正常な状態に復帰させるための処理を実行する請求項１記載の情報処理システム。
【請求項４】
前記実行手段は、監視対象の演算処理装置から読み出したプログラムカウンタの値が同一の変化パターンを繰り返している際の繰り返し回数が予め設定された値以上となった場合に、監視対象の演算処理装置を正常な状態に復帰させるための処理を実行する請求項１記載の情報処理システム。
【請求項５】
前記実行手段が、監視対象の演算処理装置をリセットすることにより正常な状態に復帰させる請求項１から４のいずれか記載の情報処理システム。
【請求項６】
前記実行手段が、監視対象の演算処理装置のプログラムカウンタの値を、復帰するための処理を実行する命令が格納された番地に書き換えることにより正常な状態に復帰させる請求項１から４のいずれか記載の情報処理システム。
【請求項７】
前記実行手段により復帰処理が実行される前に、プログラムカウンタの値が同一の変化パターンを周期的に繰り返していると判定された演算処理装置から、動作状態を記録した履歴情報を取得する取得手段をさらに備えた請求項１から６のいずれか記載の情報処理システム。
【請求項８】
前記複数の演算処理装置が、それぞれ、次に実行する命令が格納された領域を示す情報をプログラムカウンタの値として記憶しつつ、予め格納された複数の命令を順次実行する演算処理装置である請求項１から７のいずれか記載の情報処理システム。
【請求項９】
前記複数の演算処理装置は２つの演算処理装置であり、当該２つの演算処理装置は、それぞれ、一方の演算処理装置が他方の演算処理装置を監視対象とする相互監視を行うことにより、いずれか一方の演算処理装置が異常状態となった場合に他方の演算処理装置により正常な状態に復帰させるための処理が実行される請求項１記載の情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システムに関する。
【背景技術】
【０００２】
特許文献１には、以前に実行したプログラムアドレスと現プログラム実行アドレスとの一致を検出し、その一致間隔が等間隔か否かを検出し、等間隔のプログラム実行アドレス一致が検出された場合に、その一致の繰り返し数をカウントし、カウント値が所定値以上になると無限ループに入った暴走状態であると検出するようにした暴走検出方法が開示されている。
【０００３】
特許文献２には、デュアルプロセッサシステムにおいて、２つのプロセッサ間に設けられた共通メモリを用いて、いずれからのプロセッサに障害が発生した場合でもある程度自律的に復旧してシステム機能の回復が図れるようにした障害管理方式が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−１６１９０８号公報
【特許文献２】特開平１０−２６９０９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、監視対象の演算処理装置が無限ループに陥った異常状態の発生を、単にプログラムカウンタの値を監視するだけの場合と比較して、高い精度で検出することが可能な情報処理システムを提供することである。
【課題を解決するための手段】
【０００６】
請求項１に係る本発明は、複数の演算処理装置を有し、
前記複数の演算処理装置のうちの少なくとも１つは、
監視対象の演算処理装置から送信される確認信号を受信する受信手段と、
監視対象の演算処理装置におけるプログラムカウンタの値を読み出す読出手段と、
予め設定されている確認信号を監視対象の演算処理装置から予め設定された期間以上受信することができない場合、前記読出手段により監視対象の演算処理装置からプログラムカウンタの値を読み出し、当該プログラムカウンタの値が同一の変化パターンを周期的に繰り返している場合、監視対象の演算処理装置を正常な状態に復帰させるための処理を実行する実行手段とを備えた情報処理システムである。
【０００７】
請求項２に係る本発明は、前記実行手段が、監視対象の演算処理装置から読み出したプログラムカウンタの値が同一の変化パターンを繰り返す周期が、予め設定された期間よりも短い場合に、監視対象の演算処理装置を正常な状態に復帰させるための処理を実行する請求項１記載の情報処理システムである。
【０００８】
請求項３に係る本発明は、前記実行手段が、監視対象の演算処理装置から読み出したプログラムカウンタの値が同一の変化パターンを繰り返している際の変動幅が予め設定された値よりも狭い場合に、監視対象の演算処理装置を正常な状態に復帰させるための処理を実行する請求項１記載の情報処理システムである。
【０００９】
請求項４に係る本発明は、前記実行手段が、監視対象の演算処理装置から読み出したプログラムカウンタの値が同一の変化パターンを繰り返している際の繰り返し回数が予め設定された値以上となった場合に、監視対象の演算処理装置を正常な状態に復帰させるための処理を実行する請求項１記載の情報処理システムである。
【００１０】
請求項５に係る本発明は、前記実行手段が、監視対象の演算処理装置をリセットすることにより正常な状態に復帰させる請求項１から４のいずれか記載の情報処理システムである。
【００１１】
請求項６に係る本発明は、前記実行手段が、監視対象の演算処理装置のプログラムカウンタの値を、復帰するための処理を実行する命令が格納された番地に書き換えることにより正常な状態に復帰させる請求項１から４のいずれか記載の情報処理システムである。
【００１２】
請求項７に係る本発明は、前記実行手段により復帰処理が実行される前に、プログラムカウンタの値が同一の変化パターンを周期的に繰り返していると判定された演算処理装置から、動作状態を記録した履歴情報を取得する取得手段をさらに備えた請求項１から６のいずれか記載の情報処理システムである。
【００１３】
請求項８に係る本発明は、前記複数の演算処理装置が、それぞれ、次に実行する命令が格納された領域を示す情報をプログラムカウンタの値として記憶しつつ、予め格納された複数の命令を順次実行する演算処理装置である請求項１から７のいずれか記載の情報処理システムである。
【００１４】
請求項９に係る本発明は、前記複数の演算処理装置は２つの演算処理装置であり、当該２つの演算処理装置は、それぞれ、一方の演算処理装置が他方の演算処理装置を監視対象とする相互監視を行うことにより、いずれか一方の演算処理装置が異常状態となった場合に他方の演算処理装置により正常な状態に復帰させるための処理が実行される請求項１記載の情報処理システムである。
【発明の効果】
【００１５】
請求項１に係る本発明によれば、監視対象の演算処理装置が無限ループに陥った異常状態の発生を、単にプログラムカウンタの値を監視するだけの場合と比較して、高い精度で検出することが可能な情報処理システムを提供することができる。
【００１６】
請求項２に係る本発明によれば、正常な動作を無限ループに陥った異常状態と誤判定することを防ぐことが可能な情報処理システムを提供することができる。
【００１７】
請求項３に係る本発明によれば、正常な動作を無限ループに陥った異常状態と誤判定することを防ぐことが可能な情報処理システムを提供することができる。
【００１８】
請求項４に係る本発明によれば、正常な動作を無限ループに陥った異常状態と誤判定することを防ぐことが可能な情報処理システムを提供することができる。
【００１９】
請求項５に係る本発明によれば、監視対象の演算処理装置が無限ループに陥った場合でも正常な状態に復帰させることが可能な情報処理システムを提供することができる。
【００２０】
請求項６に係る本発明によれば、監視対象の演算処理装置が無限ループに陥った場合でも、リセットすることなく正常な状態に復帰させることが可能な情報処理システムを提供することができる。
【００２１】
請求項７に係る本発明によれば、監視対象の演算処理装置を正常な状態に復帰させた後であっても、監視対象の演算処理装置が無限ループに陥った原因を解明することが可能な情報処理システムを提供することができる。
【００２２】
請求項８に係る本発明によれば、監視対象の演算処理装置が無限ループに陥った異常状態の発生を、単にプログラムカウンタの値を監視するだけの場合と比較して、高い精度で検出することが可能な情報処理システムを提供することができる。
【００２３】
請求項９に係る本発明によれば、２つの演算処理装置がそれぞれお互いに監視しあう相互監視を行う際に、いずれか一方の演算処理装置が無限ループに陥った異常状態の発生を、単にプログラムカウンタの値を監視するだけの場合と比較して、高い精度で検出することが可能な情報処理システムを提供することができる。
【図面の簡単な説明】
【００２４】
【図１】本発明の一実施形態の情報処理システム１０のシステム構成を示す図である。
【図２】本発明の一実施形態におけるＣＰＵ２０のハードウェア構成を示すブロック図である。
【図３】本発明の一実施形態のＣＰＵ２０の動作を説明するためのフローチャートである。
【図４】ＣＰＵ２０Ｂが無限ループに陥って異常状態となった場合の様子を示す図である。
【図５】チェックモードに入ったＣＰＵ２０Ａが、ＣＰＵ２０Ｂからプログラムカウンタ３３Ｂの値を読み出す様子を示す図である。
【図６】プログラムカウンタの値が周期的に同一の変化パターンを繰り返している場合の一例を示す図である。
【図７】ＣＰＵ２０ＡがＣＰＵ２０Ｂからログ情報３７Ｂを取得した後にリセット処理を実行する様子を示す図である。
【発明を実施するための形態】
【００２５】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【００２６】
図１は本発明の一実施形態の情報処理システム１０のシステム構成を示す図である。
【００２７】
本実施形態の情報処理システムは、図１に示されるように、演算処理装置である２つのＣＰＵ２０Ａ、２０Ｂを有している。
【００２８】
本実施形態におけるＣＰＵ２０Ａ、２０Ｂは、予め設定されたそれぞれ異なる処理を実行している。本実施形態の情報処理システム１０のような２ＣＰＵ構成によれば、役割分担と負荷分散により処理の効率化を図ることができるという利点が得られるため、高いリアルタイム性が要求されるようなシステムを実現する際には有利な構成である。
【００２９】
このようなＣＰＵを有するシステムでは、ＣＰＵを実行しているプログラムが何らかの理由によりループ処理から抜け出すことができずに永遠に同じループ処理を実行し続ける状態である無限ループに陥ってしまうと、システムがハングアップ状態となってしまう。そして、システムがこのようなハングアップ状態になると、そのシステムは外部からのユーザによる操作を受け付けなくなり主電源を一旦落としてリセットしなければ正常な状態に復帰することができなくなってしまう。
【００３０】
また、システムがこのような無限ループ状態に陥ると、外部からの操作を受け付けないため、ログ情報を取得して原因解明を行うことができない。このような理由により無限ループを原因とする不具合の解析には時間がかかることが一般的である。
【００３１】
本実施形態におけるＣＰＵ２０Ａ、２０Ｂは、それぞれ、他方のＣＰＵを監視対象として、他方のＣＰＵが無限ループに陥った異常状態となっているか否かを常時相互監視している。
【００３２】
この相互監視を行うために、ＣＰＵ２０Ａ、２０Ｂは、予め設定された確認信号をそれぞれ相互に他方のＣＰＵに対して、例えば５秒間隔というような予め設定された間隔で定期的に出力する。
【００３３】
図１では、ＣＰＵ２０ＡはＣＰＵ２０Ｂに対して1101  1100という８ビットの確認信号を出力し、ＣＰＵ２０ＢはＣＰＵ２０Ａに対して1010  1001という８ビットの確認信号を出力する場合が示されている。
【００３４】
なお、図１では、８ビットの確認信号を相互に送信するような構成が示されているが、確認信号はこのような信号に限定されるものではなくどのような情報を確認信号として用いるようにしても良い。例えば、それぞれのＣＰＵに異なる識別番号が付与されている場合に、各ＣＰＵは自己の識別番号を確認信号として出力するようにしても良い。
【００３５】
次に、ＣＰＵ２０Ａ、２０Ｂのハードウェア構成について図２を参照して説明する。なお、ＣＰＵ２０Ａ、２０Ｂは共に基本的な構成は同じであるため、ＣＰＵ２０Ａ、２０Ｂの共通の構成を説明する際には単にＣＰＵ２０として表現する。
【００３６】
ＣＰＵ２０は、図２に示されるように、制御部３１と、命令コード格納部３２と、プログラムカウンタ３３と、入力部３４と、出力部３５と、内部メモリ３６とを有している。また、内部メモリ３６には、ＣＰＵ２０の現在の動作状態を記録した履歴情報であるログ情報３７が格納されている。
【００３７】
ＣＰＵ２０は、次に実行する命令コードが格納された領域を示す情報をプログラムカウンタの値として記憶しつつ、予め格納された複数の命令コードを順次実行する演算処理装置である。
【００３８】
制御部３１は、命令コード格納部３２に格納されている複数の命令コード、つまりプログラムを順次読み出して実行することにより各種制御を行っている。そして、プログラムカウンタ３３は、次に実行すべき命令コードが格納された領域を示す情報を記憶している。
【００３９】
入力部３４は、制御部３１による制御に基づいてＣＰＵ２０の外部からの信号を入力する。出力部３５は、制御部３１による制御に基づいてＣＰＵ２０の外部に信号を出力する。
【００４０】
制御部３１は、出力部３５を介して、予め設定されている確認信号を他方のＣＰＵに出力する。また、制御部３１は、監視対象の他方のＣＰＵから送信される確認信号を、入力部３４を介して受信する。
【００４１】
そして、制御部３１は、入力部３４を介して、監視対象のＣＰＵにおけるプログラムカウンタの値を読み出すことができるような構成となっている。
【００４２】
そして、制御部３１は、予め設定されている確認信号を監視対象のＣＰＵから予め設定された期間以上受信することができない場合、入力部３４を介して監視対象のＣＰＵからプログラムカウンタの値を読み出す。例えば、確認信号を５秒間隔で出力するよう設定されている場合、監視対象のＣＰＵから１０秒間以上確認信号が出力されない場合に、入力部３４を介して監視対象のＣＰＵからプログラムカウンタの値を読み出す。
【００４３】
そして、制御部３１は、読み出したプログラムカウンタの値が同一の変化パターンを周期的に繰り返している場合、監視対象のＣＰＵを正常な状態に復帰させるための処理を実行する。
【００４４】
具体的には、制御部３１は、監視対象のＣＰＵをリセットすることにより正常な状態に復帰させる。または、制御部３１は、監視対象のＣＰＵのプログラムカウンタの値を、復帰するための処理を実行する命令が格納された番地に書き換えることにより正常な状態に復帰させるようにしても良い。
【００４５】
なお、制御部３１は、監視対象のＣＰＵから読み出したプログラムカウンタの値が同一の変化パターンを周期的に繰り返しているか否かの判定を行う際に、プログラムカウンタの値が同一の変化パターンを繰り返す周期が、予め設定された期間よりも短い場合に、監視対象のＣＰＵを正常な状態に復帰させるための処理を実行するようにしても良い。
【００４６】
また、制御部３１は、監視対象のＣＰＵから読み出したプログラムカウンタの値が同一の変化パターンを周期的に繰り返しているか否かの判定を行う際に、プログラムカウンタの値が同一の変化パターンを繰り返している際の変動幅が予め設定された値よりも狭い場合に、監視対象のＣＰＵを正常な状態に復帰させるための処理を実行するようにしても良い。
【００４７】
さらに、制御部３１は、監視対象のＣＰＵから読み出したプログラムカウンタの値が同一の変化パターンを繰り返している際の繰り返し回数が予め設定された値以上となった場合に、監視対象のＣＰＵを正常な状態に復帰させるための処理を実行するようにしても良い。
【００４８】
そして、無限ループの状態に陥ったＣＰＵを正常な状態に復帰させた後に、無限ループの状態に陥った原因を解明するために、制御部３１は、復帰処理を実行する前に、プログラムカウンタの値が同一の変化パターンを周期的に繰り返していると判定されたＣＰＵから、動作状態を記録したログ情報３７を取得する。
【００４９】
そして、制御部３１は、ログ情報３７の取得後に、無限ループの状態に陥ったＣＰＵを正常な状態に復帰させるための処理を実行する。
【００５０】
次に、本実施形態の情報処理システムの動作について図面を参照して詳細に説明する。
【００５１】
先ず、本実施形態のＣＰＵ２０の動作を図３のフローチャートを参照して説明する。
【００５２】
なお、以下の説明では、一例として図４に示すようにＣＰＵ２０Ｂが無限ループに陥って異常状態となった場合を用いて説明する。図４では、ＣＰＵ２０Ｂが無限ループに陥ることにより、ＣＰＵ２０Ｂから確認信号がＣＰＵ２０Ａに送信されなくなる様子が示されている。
【００５３】
ＣＰＵ２０Ａは、ステップＳ１０１において、ＣＰＵ２０Ｂから出力される確認信号を継続的に受信して、予め設定された期間以内に少なくとも１回の確認信号を受信することによりＣＰＵ２０Ｂが正常な状態であることを確認し続けている。
【００５４】
そして、ＣＰＵ２０Ａは、ステップＳ１０１において、予め設定されている確認信号を監視対象のＣＰＵＢから予め設定された期間以上受信することができなくなった場合、ステップＳ１０２において、動作モードをチェックモードにする。
【００５５】
このチェックモードになると、ＣＰＵ２０Ａは、図５に示すようにＣＰＵ２０Ｂからプログラムカウンタ３３Ｂの値を読み出す。なお、以下の説明においては、ＣＰＵ２０Ｂにおける構成を説明する際には、図２に示した符号にＢという文字を付与して示すものとする。
【００５６】
そして、ＣＰＵ２０Ａは、ステップＳ１０４において、ＣＰＵ２０Ｂから読み出したプログラムカウンタの値が同一の変化パターンを周期的に繰り返しているか否かの判定を行う。
【００５７】
ＣＰＵ２０Ａは、プログラムカウンタの値が同一の変化パターンを周期的に繰り返しているか否かの判定の際には、充分な期間においてプログラムカウンタの値の変化を観察する。
【００５８】
図６にプログラムカウンタの値が周期的に同一の変化パターンを繰り返している場合の一例を示す。
【００５９】
図６に示した変化パターン例を参照すると、同一の変化パターンが同一周期、同一変動幅で繰り返されている様子が示されている。この変化パターンの周期を検出するためには、同一の値が現れる期間を測定することにより変化パターンの周期を検出することができる。
【００６０】
ＣＰＵ２０Ｂが無限ループの状態に陥った場合、このような同一の変化パターンが永遠と繰り返されることになる。そのため、ＣＰＵ２０Ａは、ステップＳ１０４において、このようなプログラムカウンタの値において同一の変化パターンが周期的に複数回繰り返されていることを検出すると、ＣＰＵ２０Ｂは無限ループの状態となっていると判定する。
【００６１】
すると、ＣＰＵ２０Ａは、ステップＳ１０５において、ログ情報３７ＢをＣＰＵ２０Ｂから取得し、ステップＳ１０６において、ＣＰＵ２０Ｂのリセット処理を実行する。ＣＰＵ２０ＡがＣＰＵ２０Ｂからログ情報３７Ｂを取得した後にリセット処理を実行する様子を図７に示す。
【００６２】
なお、ＣＰＵ２０Ａが、無限ループの状態となったＣＰＵ２０Ｂを正常な状態に復帰させるために、リセット処理を行うのではなくプログラムカウンタの値を書き換えて強制的に無限ループを終了させるようにしても良い。
【００６３】
本実施形態では、最初に確認信号が監視対象のＣＰＵから出力されなくなることを確認してから、プログラムの値が同一の変化パターンを周期的に繰り返しているか否かの判定を行っている。このようにしている理由としては、無限ループの状態となっていない正常な状態の場合でもプログラムカウンタの値が周期的に同一の変化パターンで遷移するような場合があるため、プログラムカウンタの値のみで判定を行うと誤判定をする可能性があるからである。
【００６４】
つまり、確認信号が予め設定された時間以上出力されないことと、プログラムカウンタの値が同一の変化パターンを周期的に繰り返していることの両方を検出して初めて監視対象のＣＰＵが無限ループの状態に陥っていると判定することにより、上記のような誤判定の可能性を低くすることができる。
【００６５】
さらに、プログラムカウンタの値が同一の変化パターンを周期的に繰り返しているか否かを判定する処理と比較して、確認信号が出力されているか否かの判定を行うための処理は監視を行うＣＰＵにとって処理負担が少ない。そのため、通常は確認信号のみで監視を行い、確認信号が確認できなくなって初めてプログラムカウンタの値を監視するようにすることにより監視するための処理負担を低く抑えることができる。
【００６６】
なお、本実施形態では、監視を行うＣＰＵは、監視対象のＣＰＵから確認信号が出力されなくなったことを確認してチェックモードに入り、監視対象のＣＰＵのプログラムカウンタの値を読み出して無限ループの状態となっているか否かを判定していたが、判定順序を入れ替えるようにしても良い。
【００６７】
つまり、監視を行うＣＰＵが、正常な状態において、監視対象のＣＰＵのプログラムカウンタの値を読み出して同一の変化パターンが周期的に繰り返されていると判定した場合にチェックモードに入り、監視対象のＣＰＵから確認信号が出力されなくなったことを確認して無限ループの状態となっていると最終的に判定するようにしても良い。
【００６８】
[変形例]
上記実施形態では、２つのＣＰＵ２０Ａ、２０Ｂがお互いを相互監視する場合の構成について説明したが、本発明はこれに限定されるものではなく、複数のＣＰＵうちの少なくとも１つのＣＰＵが他のＣＰＵを監視対象として監視する構成の場合でも同様に本発明を適用することができるものである。
【００６９】
また、３つ以上のＣＰＵにより構成される情報処理システムにおいて、各ＣＰＵがそれぞれ他のＣＰＵを監視するような構成とする場合についても本発明を適用することが可能である。
【符号の説明】
【００７０】
１０    情報処理システム
２０、２０Ａ、２０Ｂ    ＣＰＵ
３１    制御部
３２    命令コード格納部
３３    プログラムカウンタ
３４    入力部
３５    出力部
３６    内部メモリ
３７    ログ情報
【図１】
2020140592.tif 000003
【図２】
2020140592.tif 000004
【図３】
2020140592.tif 000005
【図４】
2020140592.tif 000006
【図５】
2020140592.tif 000007
【図６】
2020140592.tif 000008
【図７】
2020140592.tif 000009