(57)【要約】【課題】装置の動作の一時停止時間を著しく短縮するフォルトトレラントコンピュータ装置とその再同期化方法を提供する。【解決手段】プロセッサ、メモリを含むコンピューティングモジュール１００、２００を複数備え、各コンピューティングモジュールがクロック同期して同じ命令列を処理するロックステップ方式のフォルトトレラントコンピュータ装置であって、各コンピューティングモジュール１００、２００内の各プロセッサ間の外部バスへのアクセス状態の不一致を検出した場合であって、各コンピューティングモジュール１００、２００を含む装置全体の故障が検出されない場合に、全ての各プロセッサに対して割り込みを発生させ、前記コンピューティングモジュール間の命令実行状況を一致させる遅延調整を行った後、各コンピューティングモジュールに対してクロック同期での動作の再開処理を行う。【選択図】　図１
2004046599.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ、メモリを含むコンピューティングモジュールを複数備え、各コンピューティングモジュールがクロック同期して同じ命令列を処理するロックステップ方式のフォルトトレラントコンピュータ装置において、
前記各コンピューティングモジュール内の前記各プロセッサ間の外部バスへのアクセス状態の不一致を検出した場合であって、前記各コンピューティングモジュールを含む装置全体の故障が検出されない場合に、全ての前記各プロセッサに対して割り込みを発生させ、前記コンピューティングモジュール間の命令実行状況を一致させる遅延調整を行った後、前記各コンピューティングモジュールに対してクロック同期での動作の再開処理を行うことを特徴とするフォルトトレラントコンピュータ装置。
【請求項２】
前記各コンピューティングモジュールを含む装置全体の故障の有無を監視する障害監視制御手段と、
前記各コンピューティングモジュール内の前記各プロセッサの外部バスへのアクセス状態を監視するバス監視制御手段と、
前記バス監視制御手段が前記各コンピューティングモジュール内の前記各プロセッサの外部バスへのアクセス状態の不一致を検出した場合であって、前記障害監視制御手段がなんらの障害も検出していない場合に、その旨を全ての前記各プロセッサに通知するための割り込みを発生させる割り込み制御手段と、
前記各コンピューティングモジュールと接続され、前記各コンピューティングモジュール内の前記各プロセッサ相互間で命令実行状況を通知するための系間通信制御手段と、
前記各コンピューティングモジュールと接続され、前記各コンピューティングモジュール間の命令実行状況を一致させる遅延調整を行った後、全ての前記コンピューティングモジュールのクロック同期での動作を再開するためのリセット信号を発生させる同期制御手段とを具備することを特徴とする請求項１に記載のフォルトトレラントコンピュータ装置。
【請求項３】
前記割り込み制御手段からの割り込みを受けた前記全てのプロセッサが、該プロセッサ内部の実行命令数を計数する命令数カウンタが動作しない、再同期化処理用のプロセッサ管理モードに移行し、
前記各プロセッサが、その読み出した命令数カウンタ値を、他のコンピューティングモジュール内の各プロセッサから受信した命令数カウンタ値と比較し、
前記命令数カウンタ値が最大でない前記コンピューティングモジュールが、最大であるコンピューティングモジュールの命令数カウント値と一致するまで命令実行を進める遅延調整を行い、一致した際に前記命令数カウンタ値が最大である前記コンピューティングモジュールに通知し、
前記命令数カウンタ値が最大である前記コンピューティングモジュールが、他の全てのコンピューティングモジュールから通知があるまで処理を待合せ、通知があると、前記同期制御手段に対して全てのコンピューティングモジュールにクロック同期での動作を再開させるためのリセット信号の発生を指令することを特徴とする請求項２に記載のフォルトトレラントコンピュータ装置。
【請求項４】
前記命令数カウンタ値が最大でない前記コンピューティングモジュールが、最大であるコンピューティングモジュールの命令数カウント値と一致するまで命令実行を進める遅延調整において、
前記プロセッサを１命令だけ実行した後、再び前記プロセッサ管理モードに移行せしめるステップ実行モードに設定し、
前記プロセッサが１命令を実行した後、再びプロセッサ管理モードに移行させ、
前記プロセッサは、命令数カウンタの値が実行命令数が最大であるコンピューティングモジュールの命令数カウンタ値と一致するまで、再度ステップ実行モード設定処理から処理を繰り返すことを特徴とする請求項３に記載のフォルトトレラントコンピュータ装置。
【請求項５】
前記割り込み制御部からの割り込みを受けた前記全てのプロセッサが、該プロセッサ内部の実行命令数を計数する命令数カウンタが動作せず、かつプログラムカウンタ値を待避して保存する、再同期化処理用のプロセッサ管理モードに移行し、
前記各プロセッサが、該各プロセッサの命令数カウンタ値と前記待避したプログラムカウンタ値とを読み出し、該読み出し値を他の全ての前記コンピューティングモジュールに送信し、
前記各プロセッサが、その読み出した命令数カウンタ値を、他のコンピューティングモジュール内の各プロセッサから受信した命令数カウンタ値と比較し、
前記命令数カウンタ値が最大でない前記コンピューティングモジュールが、最大であるコンピューティングモジュールの命令数カウント値と一致するまで命令実行を進める遅延調整を行い、一致した際に前記命令数カウンタ値が最大である前記コンピューティングモジュールに通知し、
前記命令数カウンタ値が最大である前記コンピューティングモジュールが、他の全てのコンピューティングモジュールから通知があるまで処理を待合せ、通知があると、前記同期制御手段に対して全てのコンピューティングモジュールにクロック同期での動作を再開させるためのリセット信号の発生を指令することを特徴とする請求項２に記載のフォルトトレラントコンピュータ装置。
【請求項６】
前記命令数カウンタ値が最大でない前記コンピューティングモジュールが、最大であるコンピューティングモジュールの命令数カウント値と一致するまで命令実行を進める遅延調整において、
前記プロセッサを、指定した命令列の特定の位置の命令まで実行した後再び前記プロセッサ管理モードに移行せしめるブレークポイント指定実行モードに設定し、
前記命令列の特定の位置として、前記実行命令数が最大であるコンピューティングモジュールから受信したプログラムカウンタ値の示す命令位置を指定し、その後、前記プロセッサを通常実行モードに移行させ、
前記プロセッサが指定された命令列中の特定の位置である、前記命令実行数が最大であるコンピューティングモジュールと同じ命令列の位置までの命令列を実行した後、再びプロセッサ管理モードに移行させることを特徴とする請求項５に記載のフォルトトレラントコンピュータ装置。
【請求項７】
前記命令数カウンタ値が最大であったコンピューティングモジュールが、プログラム実行状態を読み出した後、遅延調整による他のコンピューティングモジュールからの通知を待ち合わせ、
命令数カウンタ値が最大でない他の全てのコンピューティングモジュールでは、遅延調整処理を実施した後、プログラム実行状態を読み出して、遅延調整処理の完了通知と併せてプログラム実行状態を命令数カウンタ値が最大であるコンピューティングモジュールに送信し、
命令数カウンタ値が最大であるコンピューティングモジュールでは、全てのコンピューティングモジュールのプログラム実行状態を比較し、全てが一致した場合は即座に、不一致のコンピューティングモジュールを検出した場合は、当該コンピューティングモジュールのみを切り離して無効化する処理を行った後、クロック同期動作を再開させるためのリセット信号の発生を指令することを特徴とする請求項３又は請求項５に記載のフォルトトレラントコンピュータ装置。
【請求項８】
前記障害監視制御手段と、前記バス監視制御手段と、前記割り込み制御手段と、前記系間通信制御手段と、前記同期制御手段とを複数組備えることを特徴とする請求項２に記載のフォルトトレラントコンピュータ装置。
【請求項９】
プロセッサ、メモリを含むコンピューティングモジュールを複数備え、各コンピューティングモジュールがクロック同期して同じ命令列を処理するロックステップ方式のフォルトトレラントコンピュータ装置における再同期化方法であって、
前記各コンピューティングモジュール内の前記各プロセッサ間の外部バスへのアクセス状態の不一致を検出した場合であって、前記各コンピューティングモジュールを含む装置全体の故障が検出されない場合に、全ての前記各プロセッサに対して割り込みを発生させ、
前記コンピューティングモジュール間の命令実行状況を一致させる遅延調整を行った後、前記各コンピューティングモジュールに対してクロック同期動作の再開処理を行う
ことを特徴とするフォルトトレラントコンピュータ装置の再同期化方法。
【請求項１０】
前記各コンピューティングモジュールを含む装置全体の故障の有無を監視し、
前記各コンピューティングモジュール内の前記各プロセッサの外部バスへのアクセス状態を監視し、
前記各コンピューティングモジュール内の前記各プロセッサの外部バスへのアクセス状態の不一致を検出した場合であって、前記障害監視制御手段がなんらの障害も検出していない場合に、その旨を全ての前記各プロセッサに通知するための割り込みを発生させ、
前記各コンピューティングモジュール間の命令実行状況を一致させる遅延調整を行った後、全ての前記各コンピューティングモジュールのクロック同期動作の再開処理を行うためのリセット信号を発生させることを特徴とする請求項９に記載のフォルトトレラントコンピュータ装置の再同期化方法。
【請求項１１】
前記割り込み制御手段からの割り込みを受けた前記全てのプロセッサが、該プロセッサ内部の実行命令数を計数する命令数カウンタが動作しない、再同期化処理用のプロセッサ管理モードに移行し、
前記各プロセッサが、その読み出した命令数カウンタ値を、他のコンピューティングモジュール内の各プロセッサから受信した命令数カウンタ値と比較し、
前記命令数カウンタ値が最大でない前記コンピューティングモジュールが、最大であるコンピューティングモジュールの命令数カウント値と一致するまで命令実行を進める遅延調整を行い、一致した際に前記命令数カウンタ値が最大である前記コンピューティングモジュールに通知し、
前記命令数カウンタ値が最大である前記コンピューティングモジュールが、他の全てのコンピューティングモジュールから通知があるまで処理を待合せ、通知があると、前記同期制御手段に対して全てのコンピューティングモジュールにクロック同期での動作を再開させるためのリセット信号の発生を指令することを特徴とする請求項１０に記載のフォルトトレラントコンピュータ装置の再同期化方法。
【請求項１２】
前記命令数カウンタ値が最大でない前記コンピューティングモジュールが、最大であるコンピューティングモジュールの命令数カウント値と一致するまで命令実行を進める遅延調整において、
前記プロセッサを１命令だけ実行した後、再び前記プロセッサ管理モードに移行せしめるステップ実行モードに設定し、
前記プロセッサが１命令を実行した後、再びプロセッサ管理モードに移行させ、
前記プロセッサは、命令数カウンタの値が実行命令数が最大であるコンピューティングモジュールの命令数カウンタ値と一致するまで、再度ステップ実行モード設定処理から処理を繰り返すことを特徴とする請求項１１に記載のフォルトトレラントコンピュータ装置の再同期化方法。
【請求項１３】
前記割り込み制御部からの割り込みを受けた前記全てのプロセッサが、該プロセッサ内部の実行命令数を計数する命令数カウンタが動作せず、かつプログラムカウンタ値を待避して保存する、再同期化処理用のプロセッサ管理モードに移行し、
前記各プロセッサが、該各プロセッサの命令数カウンタ値と前記待避したプログラムカウンタ値とを読み出し、該読み出し値を他の全ての前記コンピューティングモジュールに送信し、
前記各プロセッサが、その読み出した命令数カウンタ値を、他のコンピューティングモジュール内の各プロセッサから受信した命令数カウンタ値と比較し、
前記命令数カウンタ値が最大でない前記コンピューティングモジュールが、最大であるコンピューティングモジュールの命令数カウント値と一致するまで命令実行を進める遅延調整を行い、一致した際に前記命令数カウンタ値が最大である前記コンピューティングモジュールに通知し、
前記命令数カウンタ値が最大である前記コンピューティングモジュールが、他の全てのコンピューティングモジュールから通知があるまで処理を待合せ、通知があると、前記同期制御手段に対して全てのコンピューティングモジュールにクロック同期での動作を再開させるためのリセット信号の発生を指令することを特徴とする請求項１０に記載のフォルトトレラントコンピュータ装置の再同期化方法。
【請求項１４】
前記命令数カウンタ値が最大でない前記コンピューティングモジュールが、最大であるコンピューティングモジュールの命令数カウント値と一致するまで命令実行を進める遅延調整において、
前記プロセッサを、指定した命令列の特定の位置の命令まで実行した後再び前記プロセッサ管理モードに移行せしめるブレークポイント指定実行モードに設定し、
前記命令列の特定の位置として、前記実行命令数が最大であるコンピューティングモジュールから受信したプログラムカウンタ値の示す命令位置を指定し、その後、前記プロセッサを通常実行モードに移行させ、
前記プロセッサが指定された命令列中の特定の位置である、前記命令実行数が最大であるコンピューティングモジュールと同じ命令列の位置までの命令列を実行した後、再びプロセッサ管理モードに移行させることを特徴とする請求項１３に記載のフォルトトレラントコンピュータ装置の再同期化方法。
【請求項１５】
前記命令数カウンタ値が最大であったコンピューティングモジュールが、プログラム実行状態を読み出した後、遅延調整による他のコンピューティングモジュールからの通知を待ち合わせ、
命令数カウンタ値が最大でない他の全てのコンピューティングモジュールでは、遅延調整処理を実施した後、プログラム実行状態を読み出して、遅延調整処理の完了通知と併せてプログラム実行状態を命令数カウンタ値が最大であるコンピューティングモジュールに送信し、
命令数カウンタ値が最大であるコンピューティングモジュールでは、全てのコンピューティングモジュールのプログラム実行状態を比較し、全てが一致した場合は即座に、不一致のコンピューティングモジュールを検出した場合は、当該コンピューティングモジュールのみを切り離して無効化する処理を行った後、クロック同期動作を再開するためのリセット信号の発生を指令することを特徴とする請求項１１又は請求項１３に記載のフォルトトレラントコンピュータ装置の再同期化方法。
【請求項１６】
プロセッサ、メモリを含むコンピューティングモジュールを複数備え、各コンピューティングモジュールがクロック同期して同じ命令列を処理するロックステップ方式のフォルトトレラントコンピュータ装置の再同期化処理を実行する再同期化プログラムであって、
前記各コンピューティングモジュール内の前記各プロセッサ間の外部バスへのアクセス状態の不一致を検出した場合であって、前記各コンピューティングモジュールを含む装置全体の故障が検出されない場合に、全ての前記各プロセッサに対して割り込みを発生させる機能と、
前記コンピューティングモジュール間の命令実行状況を一致させる遅延調整を行った後、前記各コンピューティングモジュールに対してクロック同期動作を再開させる機能を実行する
ことを特徴とするフォルトトレラントコンピュータ装置の再同期化プログラム。
【請求項１７】
前記各コンピューティングモジュールを含む装置全体の故障の有無を監視する機能と、
前記各コンピューティングモジュール内の前記各プロセッサの外部バスへのアクセス状態を監視する機能と、
前記各コンピューティングモジュール内の前記各プロセッサの外部バスへのアクセス状態の不一致を検出した場合であって、前記障害監視制御手段がなんらの障害も検出していない場合に、その旨を全ての前記各プロセッサに通知するための割り込みを発生させる機能と、
前記コンピューティングモジュール間の命令実行状況を一致させる遅延調整を行った後、全ての前記コンピューティングモジュールのクロック同期動作を再開させるためのリセット信号を発生させる機能を実行することを特徴とする請求項１６に記載のフォルトトレラントコンピュータ装置の再同期化プログラム。
【請求項１８】
前記割り込み制御手段からの割り込みを受けた前記全てのプロセッサが、該プロセッサ内部の実行命令数を計数する命令数カウンタが動作しない、再同期化処理用のプロセッサ管理モードに移行する機能と、
前記各プロセッサが、その読み出した命令数カウンタ値を、他のコンピューティングモジュール内の各プロセッサから受信した命令数カウンタ値と比較する機能と、
前記命令数カウンタ値が最大でない前記コンピューティングモジュールが、最大であるコンピューティングモジュールの命令数カウント値と一致するまで命令実行を進める遅延調整を行い、一致した際に前記命令数カウンタ値が最大である前記コンピューティングモジュールに通知する機能と、
前記命令数カウンタ値が最大である前記コンピューティングモジュールが、他の全てのコンピューティングモジュールから通知があるまで処理を待合せ、通知があると、前記同期制御手段に対して全てのコンピューティングモジュールをクロック同期で動作再開させるためのリセット信号の発生を指令する機能を実行することを特徴とする請求項１７に記載のフォルトトレラントコンピュータ装置の再同期化プログラム。
【請求項１９】
前記命令数カウンタ値が最大でない前記コンピューティングモジュールが、最大であるコンピューティングモジュールの命令数カウント値と一致するまで命令実行を進める遅延調整において、
前記プロセッサを１命令だけ実行した後、再び前記プロセッサ管理モードに移行せしめるステップ実行モードに設定する機能と、
前記プロセッサが１命令を実行した後、再びプロセッサ管理モードに移行させる機能と、
前記プロセッサは、命令数カウンタの値が実行命令数が最大であるコンピューティングモジュールの命令数カウンタ値と一致するまで、再度ステップ実行モード設定処理から処理を繰り返すことを特徴とする請求項１８に記載のフォルトトレラントコンピュータ装置の再同期化プログラム。
【請求項２０】
前記割り込み制御部からの割り込みを受けた前記全てのプロセッサが、該プロセッサ内部の実行命令数を計数する命令数カウンタが動作せず、かつプログラムカウンタ値を待避して保存する、再同期化処理用のプロセッサ管理モードに移行する機能と、
前記各プロセッサが、該各プロセッサの命令数カウンタ値と前記待避したプログラムカウンタ値とを読み出し、該読み出し値を他の全ての前記コンピューティングモジュールに送信する機能と、
前記各プロセッサが、その読み出した命令数カウンタ値を、他のコンピューティングモジュール内の各プロセッサから受信した命令数カウンタ値と比較する機能と、
前記命令数カウンタ値が最大でない前記コンピューティングモジュールが、最大であるコンピューティングモジュールの命令数カウント値と一致するまで命令実行を進める遅延調整を行い、一致した際に前記命令数カウンタ値が最大である前記コンピューティングモジュールに通知する機能と、
前記命令数カウンタ値が最大である前記コンピューティングモジュールが、他の全てのコンピューティングモジュールから通知があるまで処理を待合せ、通知があると、前記同期制御手段に対して全てのコンピューティングモジュールをクロック同期で動作再開させるためのリセット信号の発生を指令する機能を実行することを特徴とする請求項１８に記載のフォルトトレラントコンピュータ装置の再同期化プログラム。
【請求項２１】
前記命令数カウンタ値が最大でない前記コンピューティングモジュールが、最大であるコンピューティングモジュールの命令数カウント値と一致するまで命令実行を進める遅延調整において、
前記プロセッサを、指定した命令列の特定の位置の命令まで実行した後再び前記プロセッサ管理モードに移行せしめるブレークポイント指定実行モードに設定する機能と、
前記命令列の特定の位置として、前記実行命令数が最大であるコンピューティングモジュールから受信したプログラムカウンタ値の示す命令位置を指定し、その後、前記プロセッサを通常実行モードに移行させる機能と、
前記プロセッサが指定された命令列中の特定の位置である、前記命令実行数が最大であるコンピューティングモジュールと同じ命令列の位置までの命令列を実行した後、再びプロセッサ管理モードに移行させる機能を実行することを特徴とする請求項２０に記載のフォルトトレラントコンピュータ装置の再同期化プログラム。
【請求項２２】
前記命令数カウンタ値が最大であったコンピューティングモジュールが、プログラム実行状態を読み出した後、遅延調整による他のコンピューティングモジュールからの通知を待ち合わせる機能と、
命令数カウンタ値が最大でない他の全てのコンピューティングモジュールでは、遅延調整処理を実施した後、プログラム実行状態を読み出して、遅延調整処理の完了通知と併せてプログラム実行状態を命令数カウンタ値が最大であるコンピューティングモジュールに送信する機能と、
命令数カウンタ値が最大であるコンピューティングモジュールでは、全てのコンピューティングモジュールのプログラム実行状態を比較し、全てが一致した場合は即座に、不一致のコンピューティングモジュールを検出した場合は、当該コンピューティングモジュールのみを切り離して無効化する処理を行った後、クロック同期での動作を再開させるためのリセット信号の発生を指令する機能を実行することを特徴とする請求項１８又は請求項２０に記載のフォルトトレラントコンピュータ装置の再同期化プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のコンピューティングモジュールで、同じ命令列をクロック同期させて全く同じに処理するロックステップ方式のフォルトトレラントコンピュータ装置（ｆａｕｌｔ　ｔｏｌｅｒａｎｔ　ｃｏｍｐｕｔｅｒ）に関し、特にコンピューティングモジュール間の同一動作性が崩れた場合（ロックステップが外れた場合）の再同期化処理の高速化を実現するフォルトトレラントコンピュータ装置及び高速再同期制御方法に関する。
【０００２】
【従来の技術】
従来のロックステップ方式のフォルトトレラントコンピュータ装置では、同じ命令列を同時期に実行している複数のコンピューティングモジュールの中で、故障あるいはその他の外的あるいは内的要因により、他のコンピューティングモジュールと異なる出力を行うコンピューティングモジュールを検出した場合は、以下のような対策を講じている。以降において、他のコンピューティングモジュールと同期して同じ動作を行うことができないコンピューティングモジュールを検出した場合の、当該コンピューティングモジュールをロックステップが外れたコンピューティングモジュールと称する。
【０００３】
すなわち、ロックステップが外れたコンピューティングモジュールを一旦運用状態から切り離し、ロックステップが外れる要因に応じて必要によりコンピューティングモジュールを交換し、あるいは交換を必要としない場合は必要に応じた再初期化処理等を行うことにより、運用状態に組み込むといった対策がとられている。
【０００４】
そして、従来のロックステップ方式のフォルトトレラントコンピュータ装置における上述のような運用状態への組み込みに際しては、ロックステップの外れたコンピューティングモジュールを交換したかどうかに関わりなく、その再組み込みのときに、他の運用を継続しているコンピューティングモジュールと再度同期をとって同じ処理をするために、運用状態のコンピューティングモジュールのもつメモリのデータを全て、再組み込みするコンピューティングモジュールのもつメモリへコピーする方法がとられている。
【０００５】
【発明が解決しようとする課題】
従来のロックステップ方式のフォルトトレラントコンピュータ装置は、ロックステップが外れたコンピューティングモジュールの交換やロックステップが外れた原因の部位に応じた再初期化処理などを実施した後、再度運用状態に組み込む場合に、運用状態にあったコンピューティングモジュールを長時間停止させている。
【０００６】
すなわち、この従来のロックステップ方式のフォルトトレラントコンピュータ装置では、ロックステップが外れたコンピューティングモジュールの再組み込み処理の間、フォルトトレラントコンピュータ装置全体が長期間（一般に３〜５秒間、乃至分オーダーの時間）、業務を停止してしまうという問題があった。
【０００７】
その理由は、ロックステップが外れたコンピューティングモジュールを運用状態に組み込むために、故障の状態に関わらず、常に全てのメモリ内容を、運用を継続しているコンピューティングモジュールから、再度組み込もうとしているコンピューティングモジュールにコピーしているためである。
【０００８】
また、このコピー処理中に正常なコンピューティングモジュールの運用を継続すると、正常なコンピューティングモジュールのメモリ内容がコピー処理中にも変更されるため、正しくコピーすることができない。このため、コピー処理中は、運用状態にあったコンピューティングモジュールを一旦停止させて、メモリの内容が更新されないようにしている。
【０００９】
現在のコンピューティングモジュール内のメモリの容量は、数ギガバイトに及んでいることから、メモリの全領域をコピーするには長時間を要することになる。
【００１０】
ところで、ロックステップ方式のフォルトトレラントコンピュータ装置では、様々な原因により、各コンピューティングモジュール間のロックステップが外れる可能性がある。
【００１１】
第１の要因としては、コンピューティングモジュール内部で、固定的な故障が発生した場合である。この場合は、故障したコンピューティングモジュールの交換を行うことになり、交換するコンピューティングモジュールを運用系に組み込む時には、運用状態のコンピューティングモジュールのメモリの全てのデータをコピーする必要がある。
【００１２】
ロックステップ方式のフォルトトレラントコンピュータ装置では、上述のような固定的な故障のほかに、コンピューティングモジュール内の各ユニットの製造上の差違により、正常動作はしているものの異なるタイミングで動作していることからロックステップが外れることや、α線等の影響によるメモリの自動訂正可能な間欠障害によってロックステップが外れることがある。
【００１３】
これらのケースでは、コンピューティングモジュール自体に固定的な故障が発生しているのではないことから、本来、交換する必要はなく、再度運用中の他のコンピューティングモジュールとの処理の同期化を行い、組み込むことで、フォルトトレラントコンピュータ装置全体として、正常な稼働状態に復旧せしめることができる。
【００１４】
本発明の目的は、固定的な故障以外の原因によってロックステップが外れたコンピューティングモジュールを、従来の方式より高速に運用状態に再組み込みすることを可能とし、これによって組み込み処理のために発生する装置の動作の一時停止時間を著しく短縮するフォルトトレラントコンピュータ装置、その再同期化方法及び再同期化プログラムを提案することにある。
【００１５】
本発明の他の目的は、上述の再組み込み処理時間の短縮により、装置の可用性の向上を実現するフォルトトレラントコンピュータ装置、その再同期化方法及び再同期化プログラムを提案することにある。
【００１６】
【課題を解決するための手段】
上記目的を達成する本発明は、プロセッサ、メモリを含むコンピューティングモジュールを複数備え、各コンピューティングモジュールがクロック同期して同じ命令列を処理するロックステップ方式のフォルトトレラントコンピュータ装置において、前記各コンピューティングモジュール内の前記各プロセッサ間の外部バスへのアクセス状態の不一致を検出した場合であって、前記各コンピューティングモジュールを含む装置全体の故障が検出されない場合に、全ての前記各プロセッサに対して割り込みを発生させ、前記コンピューティングモジュール間の命令実行状況を一致させる遅延調整を行った後、前記各コンピューティングモジュールに対してクロック同期での動作の再開処理を行うことを特徴とする。
【００１７】
請求項２の本発明のフォルトトレラントコンピュータ装置は、前記各コンピューティングモジュールを含む装置全体の故障の有無を監視する障害監視制御手段と、前記各コンピューティングモジュール内の前記各プロセッサの外部バスへのアクセス状態を監視するバス監視制御手段と、前記バス監視制御手段が前記各コンピューティングモジュール内の前記各プロセッサの外部バスへのアクセス状態の不一致を検出した場合であって、前記障害監視制御手段がなんらの障害も検出していない場合に、その旨を全ての前記各プロセッサに通知するための割り込みを発生させる割り込み制御手段と、前記各コンピューティングモジュールと接続され、前記各コンピューティングモジュール内の前記各プロセッサ相互間で命令実行状況を通知するための系間通信制御手段と、前記各コンピューティングモジュールと接続され、前記各コンピューティングモジュール間の命令実行状況を一致させる遅延調整を行った後、全ての前記コンピューティングモジュールのクロック同期での動作を再開するためのリセット信号を発生させる同期制御手段とを具備することを特徴とする。
【００１８】
請求項３の本発明のフォルトトレラントコンピュータ装置は、前記割り込み制御手段からの割り込みを受けた前記全てのプロセッサが、該プロセッサ内部の実行命令数を計数する命令数カウンタが動作しない、再同期化処理用のプロセッサ管理モードに移行し、
前記各プロセッサが、その読み出した命令数カウンタ値を、他のコンピューティングモジュール内の各プロセッサから受信した命令数カウンタ値と比較し、前記命令数カウンタ値が最大でない前記コンピューティングモジュールが、最大であるコンピューティングモジュールの命令数カウント値と一致するまで命令実行を進める遅延調整を行い、一致した際に前記命令数カウンタ値が最大である前記コンピューティングモジュールに通知し、前記命令数カウンタ値が最大である前記コンピューティングモジュールが、他の全てのコンピューティングモジュールから通知があるまで処理を待合せ、通知があると、前記同期制御手段に対して全てのコンピューティングモジュールにクロック同期での動作を再開させるためのリセット信号の発生を指令することを特徴とする。
【００１９】
請求項４の本発明のフォルトトレラントコンピュータ装置は、前記命令数カウンタ値が最大でない前記コンピューティングモジュールが、最大であるコンピューティングモジュールの命令数カウント値と一致するまで命令実行を進める遅延調整において、前記プロセッサを１命令だけ実行した後、再び前記プロセッサ管理モードに移行せしめるステップ実行モードに設定し、前記プロセッサが１命令を実行した後、再びプロセッサ管理モードに移行させ、前記プロセッサは、命令数カウンタの値が実行命令数が最大であるコンピューティングモジュールの命令数カウンタ値と一致するまで、再度ステップ実行モード設定処理から処理を繰り返すことを特徴とする。
【００２０】
請求項５の本発明のフォルトトレラントコンピュータ装置は、前記割り込み制御部からの割り込みを受けた前記全てのプロセッサが、該プロセッサ内部の実行命令数を計数する命令数カウンタが動作せず、かつプログラムカウンタ値を待避して保存する、再同期化処理用のプロセッサ管理モードに移行し、前記各プロセッサが、該各プロセッサの命令数カウンタ値と前記待避したプログラムカウンタ値とを読み出し、該読み出し値を他の全ての前記コンピューティングモジュールに送信し、前記各プロセッサが、その読み出した命令数カウンタ値を、他のコンピューティングモジュール内の各プロセッサから受信した命令数カウンタ値と比較し、前記命令数カウンタ値が最大でない前記コンピューティングモジュールが、最大であるコンピューティングモジュールの命令数カウント値と一致するまで命令実行を進める遅延調整を行い、一致した際に前記命令数カウンタ値が最大である前記コンピューティングモジュールに通知し、前記命令数カウンタ値が最大である前記コンピューティングモジュールが、他の全てのコンピューティングモジュールから通知があるまで処理を待合せ、通知があると、前記同期制御手段に対して全てのコンピューティングモジュールにクロック同期での動作を再開させるためのリセット信号の発生を指令することを特徴とする。
【００２１】
請求項６の本発明のフォルトトレラントコンピュータ装置は、前記命令数カウンタ値が最大でない前記コンピューティングモジュールが、最大であるコンピューティングモジュールの命令数カウント値と一致するまで命令実行を進める遅延調整において、前記プロセッサを、指定した命令列の特定の位置の命令まで実行した後再び前記プロセッサ管理モードに移行せしめるブレークポイント指定実行モードに設定し、前記命令列の特定の位置として、前記実行命令数が最大であるコンピューティングモジュールから受信したプログラムカウンタ値の示す命令位置を指定し、その後、前記プロセッサを通常実行モードに移行させ、前記プロセッサが指定された命令列中の特定の位置である、前記命令実行数が最大であるコンピューティングモジュールと同じ命令列の位置までの命令列を実行した後、再びプロセッサ管理モードに移行させることを特徴とする。
【００２２】
請求項７の本発明のフォルトトレラントコンピュータ装置は、前記命令数カウンタ値が最大であったコンピューティングモジュールが、プログラム実行状態を読み出した後、遅延調整による他のコンピューティングモジュールからの通知を待ち合わせ、命令数カウンタ値が最大でない他の全てのコンピューティングモジュールでは、遅延調整処理を実施した後、プログラム実行状態を読み出して、遅延調整処理の完了通知と併せてプログラム実行状態を命令数カウンタ値が最大であるコンピューティングモジュールに送信し、命令数カウンタ値が最大であるコンピューティングモジュールでは、全てのコンピューティングモジュールのプログラム実行状態を比較し、全てが一致した場合は即座に、不一致のコンピューティングモジュールを検出した場合は、当該コンピューティングモジュールのみを切り離して無効化する処理を行った後、クロック同期動作を再開させるためのリセット信号の発生を指令することを特徴とする。
【００２３】
請求項８の本発明のフォルトトレラントコンピュータ装置は、前記障害監視制御手段と、前記バス監視制御手段と、前記割り込み制御手段と、前記系間通信制御手段と、前記同期制御手段とを複数組備えることを特徴とする。
【００２４】
請求項９の本発明は、プロセッサ、メモリを含むコンピューティングモジュールを複数備え、各コンピューティングモジュールがクロック同期して同じ命令列を処理するロックステップ方式のフォルトトレラントコンピュータ装置における再同期化方法であって、前記各コンピューティングモジュール内の前記各プロセッサ間の外部バスへのアクセス状態の不一致を検出した場合であって、前記各コンピューティングモジュールを含む装置全体の故障が検出されない場合に、全ての前記各プロセッサに対して割り込みを発生させ、前記コンピューティングモジュール間の命令実行状況を一致させる遅延調整を行った後、前記各コンピューティングモジュールに対してクロック同期動作の再開処理を行うことを特徴とする。
【００２５】
請求項１０の本発明の再同期化方法は、前記各コンピューティングモジュールを含む装置全体の故障の有無を監視し、前記各コンピューティングモジュール内の前記各プロセッサの外部バスへのアクセス状態を監視し、前記各コンピューティングモジュール内の前記各プロセッサの外部バスへのアクセス状態の不一致を検出した場合であって、前記障害監視制御手段がなんらの障害も検出していない場合に、その旨を全ての前記各プロセッサに通知するための割り込みを発生させ、前記各コンピューティングモジュール間の命令実行状況を一致させる遅延調整を行った後、全ての前記各コンピューティングモジュールのクロック同期動作の再開処理を行うためのリセット信号を発生させることを特徴とする。
【００２６】
請求項１１の本発明の再同期化方法は、前記割り込み制御手段からの割り込みを受けた前記全てのプロセッサが、該プロセッサ内部の実行命令数を計数する命令数カウンタが動作しない、再同期化処理用のプロセッサ管理モードに移行し、前記各プロセッサが、その読み出した命令数カウンタ値を、他のコンピューティングモジュール内の各プロセッサから受信した命令数カウンタ値と比較し、前記命令数カウンタ値が最大でない前記コンピューティングモジュールが、最大であるコンピューティングモジュールの命令数カウント値と一致するまで命令実行を進める遅延調整を行い、一致した際に前記命令数カウンタ値が最大である前記コンピューティングモジュールに通知し、前記命令数カウンタ値が最大である前記コンピューティングモジュールが、他の全てのコンピューティングモジュールから通知があるまで処理を待合せ、通知があると、前記同期制御手段に対して全てのコンピューティングモジュールにクロック同期での動作を再開させるためのリセット信号の発生を指令することを特徴とする。
【００２７】
請求項１２の本発明の再同期化方法は、前記命令数カウンタ値が最大でない前記コンピューティングモジュールが、最大であるコンピューティングモジュールの命令数カウント値と一致するまで命令実行を進める遅延調整において、前記プロセッサを１命令だけ実行した後、再び前記プロセッサ管理モードに移行せしめるステップ実行モードに設定し、前記プロセッサが１命令を実行した後、再びプロセッサ管理モードに移行させ、前記プロセッサは、命令数カウンタの値が実行命令数が最大であるコンピューティングモジュールの命令数カウンタ値と一致するまで、再度ステップ実行モード設定処理から処理を繰り返すことを特徴とする。
【００２８】
請求項１３の本発明の再同期化方法は、前記割り込み制御部からの割り込みを受けた前記全てのプロセッサが、該プロセッサ内部の実行命令数を計数する命令数カウンタが動作せず、かつプログラムカウンタ値を待避して保存する、再同期化処理用のプロセッサ管理モードに移行し、前記各プロセッサが、該各プロセッサの命令数カウンタ値と前記待避したプログラムカウンタ値とを読み出し、該読み出し値を他の全ての前記コンピューティングモジュールに送信し、前記各プロセッサが、その読み出した命令数カウンタ値を、他のコンピューティングモジュール内の各プロセッサから受信した命令数カウンタ値と比較し、前記命令数カウンタ値が最大でない前記コンピューティングモジュールが、最大であるコンピューティングモジュールの命令数カウント値と一致するまで命令実行を進める遅延調整を行い、一致した際に前記命令数カウンタ値が最大である前記コンピューティングモジュールに通知し、前記命令数カウンタ値が最大である前記コンピューティングモジュールが、他の全てのコンピューティングモジュールから通知があるまで処理を待合せ、通知があると、前記同期制御手段に対して全てのコンピューティングモジュールにクロック同期での動作を再開させるためのリセット信号の発生を指令することを特徴とする。
【００２９】
請求項１４の本発明の再同期化方法は、前記命令数カウンタ値が最大でない前記コンピューティングモジュールが、最大であるコンピューティングモジュールの命令数カウント値と一致するまで命令実行を進める遅延調整において、前記プロセッサを、指定した命令列の特定の位置の命令まで実行した後再び前記プロセッサ管理モードに移行せしめるブレークポイント指定実行モードに設定し、前記命令列の特定の位置として、前記実行命令数が最大であるコンピューティングモジュールから受信したプログラムカウンタ値の示す命令位置を指定し、その後、前記プロセッサを通常実行モードに移行させ、前記プロセッサが指定された命令列中の特定の位置である、前記命令実行数が最大であるコンピューティングモジュールと同じ命令列の位置までの命令列を実行した後、再びプロセッサ管理モードに移行させることを特徴とする。
【００３０】
請求項１５の本発明の再同期化方法は、前記命令数カウンタ値が最大であったコンピューティングモジュールが、プログラム実行状態を読み出した後、遅延調整による他のコンピューティングモジュールからの通知を待ち合わせ、命令数カウンタ値が最大でない他の全てのコンピューティングモジュールでは、遅延調整処理を実施した後、プログラム実行状態を読み出して、遅延調整処理の完了通知と併せてプログラム実行状態を命令数カウンタ値が最大であるコンピューティングモジュールに送信し、命令数カウンタ値が最大であるコンピューティングモジュールでは、全てのコンピューティングモジュールのプログラム実行状態を比較し、全てが一致した場合は即座に、不一致のコンピューティングモジュールを検出した場合は、当該コンピューティングモジュールのみを切り離して無効化する処理を行った後、クロック同期動作を再開するためのリセット信号の発生を指令することを特徴とする。
【００３１】
請求項１６の本発明は、プロセッサ、メモリを含むコンピューティングモジュールを複数備え、各コンピューティングモジュールがクロック同期して同じ命令列を処理するロックステップ方式のフォルトトレラントコンピュータ装置の再同期化処理を実行する再同期化プログラムであって、前記各コンピューティングモジュール内の前記各プロセッサ間の外部バスへのアクセス状態の不一致を検出した場合であって、前記各コンピューティングモジュールを含む装置全体の故障が検出されない場合に、全ての前記各プロセッサに対して割り込みを発生させる機能と、前記コンピューティングモジュール間の命令実行状況を一致させる遅延調整を行った後、前記各コンピューティングモジュールに対してクロック同期動作を再開させる機能を実行することを特徴とする。
【００３２】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
【００３３】
本発明の第１の実施の形態によるフォルトトレラントコンピュータ装置の構成を図１に示す。図１において、本実施の形態によるフォルトトレラントコンピュータ装置は、複数のコンピューティングモジュール１００、２００を備えて構成され、各コンピューティングモジュール１００、２００はそれぞれクロック同期して同じ命令列を処理し、各コンピューティングモジュールの処理結果を比較し、１個のコンピューティングモジュールで故障が発生しても、残りのコンピューティングモジュールにより処理を継続することができる。
【００３４】
各コンピューティングモジュール１００、２００は、それぞれ複数のプロセッサ１０１、１０２、２０１、２０２と、プロセッサ外部バス１０３、２０３と、メモリ１０４、２０４、メモリ制御部１０５、２０５とを備えて構成されている。
【００３５】
また、各コンピューティングモジュール１００、２００は、メモリ制御部１０５、２０５を介して周辺装置の制御を行う周辺装置制御部４００、５００が接続されている。
【００３６】
上記フォルトトレラントコンピュータ装置は、さらに、障害監視制御部７００と、バス監視制御部７０１と、割り込み制御部７０２と、系間通信制御部７０３と、同期制御手段７０４とを備えている。
【００３７】
障害監視制御部７００は、各コンピューティングモジュール１００、２００を含む装置全体の故障の有無を監視する。
【００３８】
バス監視制御部７０１は、各コンピューティングモジュール１００、２００のプロセッサの外部バス１０３、２０３へのアクセス状態を監視する。
【００３９】
割り込み制御部７０２は、バス監視制御部７０１が各コンピューティングモジュール１００、２００内の各プロセッサの外部バスへの出力の不一致を検出したときに、障害監視制御部７００がなんらの障害も検出していない場合に、その旨を全てのプロセッサに通知するための割り込みを発生させる。
【００４０】
系間通信制御部７０３は、各コンピューティングモジュール１００、２００と接続され、各コンピューティングモジュール１００、２００内のプロセッサ同士で動作の不一致状況を調べるための通信経路を提供する。
【００４１】
同期制御手段７０４は、各コンピューティングモジュール１００、２００と接続され、いずれかのプロセッサからの指令によって全てのコンピューティングモジュール１００、２００に対して再同期化を制御するためのリセット信号を発生させる。
【００４２】
ここで、各コンピューティングモジュール１００、２００に含まれるプロセッサの数については、本実施の形態に示すように２個に限られることはなく、それぞれのコンピューティングモジュールに１個づつの構成、あるいは３個以上づつ搭載される構成であってもよい。
【００４３】
また、コンピューティングモジュールの数も本実施の形態で示すように２個に限定されることはなく、３個以上を備える構成であってもよく、同様に本発明の効果を得られる。
【００４４】
次いで、上記のように構成される第１の実施の形態によるフォルトトレラントコンピュータ装置の動作を図１、図２及び図３を参照して詳細に説明する。
【００４５】
障害監視制御部７００は、各コンピューティングモジュール１００、２００と各周辺装置制御部４００、５００を含むフォルトトレラントコンピュータ装置全体の故障の有無を監視し、その結果を割り込み制御部７０２に通知する。
【００４６】
バス監視制御部７０１は、各コンピューティングモジュール１００、２００のプロセッサの外部バス１０３、２０３と接続されており、各プロセッサ１０１、１０２、２０１、２０２の外部バスへのアクセス状態（バスプロトコル）を比較して、各プロセッサ１０１、１０２、２０１、２０２がクロック同期で同じタイミングでプロセッサ外部バス１０３、２０３をアクセスしているかどうかを監視し、プロセッサ１０１、１０２、２０１、２０２の動作の不一致を検出すると、その旨を割り込み制御部７０２に通知する。
【００４７】
割り込み制御部７０２は、バス監視制御部７０１からの動作不一致検出の通知があったとき、障害監視制御部７００が、フォルトトレラントコンピュータ装置内になんらの故障も検出していない場合、その旨を各コンピューティングモジュール内の全てのプロセッサに通知するため、割り込み信号を真にして、割り込みを発生させる。
【００４８】
割り込み制御部７０２はまた、割り込みの発生以降、同期制御部７０４から指令があるまで、新たな割り込みの発生を抑止し、その後の各コンピューティングモジュールのクロック同期動作のための再同期化処理が原因となるプロセッサの外部バスへのアクセス動作の不一致を、通常動作時の動作不一致と誤認することを防止する。
【００４９】
割り込み制御部７０２からの割り込みを受けたプロセッサ１０１、１０２、２０１、２０２は、それぞれ図２に図示する動作により、各コンピューティングモジュール１００、２００間の動作のズレ（ロックステップ外れ）を補正し、再度クロック同期で同じ命令列の実行を行う状態に復旧する再同期化処理を行う。
【００５０】
図２及び図３のフローチャートを参照してその再同期化処理について説明する。
【００５１】
各プロセッサ１０１、１０２、２０１、２０２は、割り込みを受けて、プロセッサ内部の実行命令数を計数する命令数カウンタが動作しないモードである、再同期化処理用のプロセッサ管理モードに移行する（ステップ２０１）。
【００５２】
そして、各プロセッサ１０１、１０２、２０１、２０２は、各々の命令数カウンタの値を読み出し（ステップ２０２）、該読み出した命令数カウンタの値を他のコンピューティングモジュールに、メモリ制御部１０５、２０５及び系間通信制御部７０３を介して送信する（ステップ２０３）。
【００５３】
各プロセッサ１０１、１０２、２０１、２０２はまた、他のコンピューティングモジュールから送信された、他のコンピューティングモジュールのプロセッサの命令数カウンタ値を、系間通信制御部７０３、メモリ制御部１０５、２０５を介して読み出し（ステップ２０４）、全てのコンピューティングモジュールの対応するプロセッサの命令数カウンタ値と比較する（ステップ２０５）。
【００５４】
ここで、命令数カウンタ値が最大となっているコンピューティングモジュールでは、命令数カウンタ値の比較の結果、他のコンピューティングモジュールが遅延分の命令を実行している間、これを待ち合わせる処理を行い（ステップ２０６）、その後、全てのコンピューティングモジュール１００、２００の実行命令数が一致したとき、全てのコンピューティングモジュール１００、２００への再同期化処理のためのリセット指令を発生させるよう、同期制御部７０４に対して、メモリ制御部１０５あるいは２０５を介して指令する（ステップ２０７）。
【００５５】
一方、命令数カウンタ値が最大でない全てのコンピューティングモジュールでは、実行命令数（命令数カウンタ値）が最大であるコンピューティングモジュールと同一の命令列実行状態となるまで命令実行を進める遅延ステップ調整処理を行い（ステップ２０８）、その完了を命令数カウンタ値が最大であるコンピューティングモジュールに通知し（ステップ２０９）、その後、再同期化処理のためのリセット発生を待ち合わせる（ステップ２１０）。
【００５６】
同期制御部７０４は、前記指令を受けると、クロック同期動作を回復させるためのリセット信号を、全てのコンピューティングモジュール１００、２００に対して同時に発生させる。また、このとき同時に前記割り込み制御部７０２に対して、動作不一致の割り込み発生の許可を指令して、再開される通常のクロック同期動作に備える。
【００５７】
図３は、図２の遅延ステップ調整処理の詳細な作用を示している。
【００５８】
遅延ステップ調整処理（図２のステップ２０８）では、プロセッサを１命令だけ実行した後、再び前記プロセッサ管理モードに移行せしめるステップ実行モードに設定し（ステップ３０１）、プロセッサを通常実行モードに移行させる（ステップ８０２）。
【００５９】
この結果、プロセッサは１命令のみ実行（ステップ３０３）した後、再びプロセッサ管理モードに移行する（ステップ３０４）。
【００６０】
該プロセッサは、命令数カウンタの値を読み出し（ステップ３０５）、先に受信済みの実行命令数が最大であるコンピューティングモジュールの命令数カウンタ値と比較し（ステップ３０６）、不一致であれば、再度ステップ実行モード設定処理（ステップ３０１）から繰り返し、一致していれば遅延ステップ調整処理を完了する。
【００６１】
以上、説明した作用により、固定故障以外の原因でロックステップが外れたコンピューティングモジュールの状態を、他のコンピューティングモジュールの状態に一致せしめることができる。一般に、プロセッサの外部バスを監視し、その出力の不一致を最初に検出した時点では、例えロックステップが外れた状態にあっても、その外れの程度は小さく、上記で説明した作用によって、数ステップの処理の実行で、再び同一の命令列実行状態に復帰せしめることが可能であり、従来の全てのメモリ領域をコピーする方式に比べ、その処理時間を格段に短縮することが可能となる。
【００６２】
図４、図５は、図１に示すように構成されるフォルトトレラントコンピュータ装置における再同期化処理の第２の動作を説明するフローチャートである。
【００６３】
この第２の動作においては、割り込み制御部７０２からの割り込みを受けたプロセッサ１０１、１０２、２０１、２０２は、それぞれ図４に図示する動作により、各コンピューティングモジュール１００、２００間の動作のズレ（ロックステップ外れ）を補正し、再度クロック同期で同じ命令列の実行を行う状態に復旧する再同期化処理を行う。
【００６４】
各プロセッサ１０１、１０２、２０１、２０２は、前記割り込みを受けて、プロセッサ内部の実行命令数を計数する命令数カウンタが動作せず、かつ、通常動作のプログラムカウンタ（ＰＣ）の値を待避して保存するモードである、再同期化処理用のプロセッサ管理モードに移行する（ステップ４０１）。
【００６５】
各プロセッサ１０１、１０２、２０１、２０２は、各々の命令数カウンタと待避したプログラムカウンタの値を読み出し（ステップ４０２）、該読み出した値を他のコンピューティングモジュールに、メモリ制御部１０５、２０５及び系間通信制御部７０３を介して送信する（ステップ４０３）。
【００６６】
各プロセッサ１０１、１０２、２０１、２０２はまた、他のコンピューティングモジュールから送信された、他のコンピューティングモジュールのプロセッサの命令数カウンタ値とプログラムカウンタ値を、系間通信制御部７０３、メモリ制御部１０５、２０５を介して読み出し（ステップ４０４）、全てのコンピューティングモジュールの対応するプロセッサの命令数カウンタ読み出し値と比較する（ステップ４０５）。
【００６７】
ここで、実行命令数が最大となっているコンピューティングモジュールでは、前記比較の結果、他のコンピューティングモジュールが遅延分の命令を実行している間、これを待ち合わせる処理を行い（ステップ４０６）、その後、全てのコンピューティングモジュールの実行命令数が一致したとき、全てのコンピューティングモジュールに対する再同期化処理開始のためのリセット指令を発生させるよう、同期制御部７０４に対して、メモリ制御部１０５あるいは２０５を介して指令する（ステップ４０７）。
【００６８】
一方、命令数カウンタが最大でない全てのコンピューティングモジュールでは、命令数が最大であるコンピューティングモジュールと同一となるまで命令実行を進める遅延ステップ調整処理を行い（ステップ４０８）、その完了を命令数カウンタ値が最大であるコンピューティングモジュールに通知し（ステップ４０９）、その後、前記再同期化処理のためのリセット発生を待ち合わせる（ステップ４１０）。
【００６９】
図５は、図４における遅延ステップ調整処理の詳細を示している。
【００７０】
上記遅延ステップ調整処理（図４のステップ４０８）では、プロセッサを、指定した命令列の特定の位置の命令まで実行した後再び前記プロセッサ管理モードに移行せしめるブレークポイント指定実行モードに設定する。このとき、前記命令列の特定の位置として、前記実行命令数が最大であるコンピューティングモジュールから受信したプログラムカウンタ値の示す命令位置を指定する（ステップ５０１）。その後、プロセッサを通常実行モードに移行させる（ステップ５０２）。
【００７１】
この結果、プロセッサは指定された命令列中の特定の位置、すなわち前記命令実行数が最大であるコンピューティングモジュールと同じ命令列の位置までの命令列を実行（ステップ５０３）した後、再びプロセッサ管理モードに移行（ステップ５０４）して、遅延ステップ調整処理を完了する。
【００７２】
図６は、第１の実施の形態によるフォルトトレラントコンピュータ装置の第３の動作を説明するフローチャートであり、図２及び図４で示す動作における、特に命令数カウンタ比較処理（図２のステップ２０５及び図４のステップ４０５）以降の処理の他の処理例を示している。
【００７３】
図６の処理では、命令数カウンタ値が最大であったコンピューティングモジュールにおいて、プログラム実行状態を読み出し（ステップ６０１）た後、他のコンピューティングモジュールからの遅延ステップ調整処理完了通知を待ち合わせる（ステップ６０２）。
【００７４】
一方、命令数カウンタ値が最大でない他の全てのコンピューティングモジュールでは、上述の説明のいずれかの方法や、あるいは類似の方法で、遅延ステップ調整処理を実施（ステップ７０１）した後、そのコンピューティングモジュールのプログラム実行状態を読み出して（ステップ７０２）、遅延ステップ調整処理の完了通知と併せてプログラム実行状態を命令数カウンタ値が最大であるコンピューティングモジュールに送信（ステップ７０３）して、リセット待ち合わせ処理を行う（ステップ７０４）。
【００７５】
該プログラム実行状態を受信した、命令数カウンタ値が最大であるコンピューティングモジュールでは、全てのコンピューティングモジュールのプログラム実行状態を比較し（ステップ６０３）、全てが一致した場合は即座に、不一致のコンピューティングモジュールを検出した場合は、そのコンピューティングモジュールのみを切り離して無効化する処理（ステップ６０４）を行った後、他の全てのコンピューティングモジュールのクロック同期動作再開処理（ステップ６０５）を実施する。
【００７６】
図６に示す処理内容とすれば、ステップ実行やブレークポイント実行に必ずしも信頼のおけないプロセッサを採用したロックステップ方式のフォルトトレラントコンピュータ装置であっても、処理結果を誤らせることなく、本発明を実施することができるという効果を得られる。
【００７７】
次に、図７を参照して、本発明の第２の実施の形態によるフォルトトレラントコンピュータ装置について説明する。
【００７８】
図７を参照すると、本実施の形態によるフォルトトレラントコンピュータ装置は、プロセッサ、メモリを含むコンピューティングモジュール１００、２００、３００と、周辺装置との接続機構８０３、８０４を含む周辺装置制御部４００、５００をそれぞれ複数備え、各コンピューティングモジュール１００、２００、３００はクロック同期して同じ命令列を処理し、各コンピューティングモジュールの処理結果を比較し、１個のコンピューティングモジュールで故障が発生しても、残りのコンピューティングモジュールにより処理を継続する。
【００７９】
この第２の実施の形態によるフォルトトレラントコンピュータ装置においては、各周辺装置制御部４００、５００内に、図１に示した障害監視制御部７００と、バス監視制御部７０１と、割り込み制御部７０２と、系間通信制御部７０３と、同期制御部７０４とを備えると共に、さらに各コンピューティングモジュールと周辺装置制御内部の各制御部、及び周辺装置接続手段８０３、８０４との接続を制御するＰＣＩブリッジ７０５とを具備している。
【００８０】
なお、周辺装置制御部５００の内部の図示は省略しているが、周辺装置制御部４００と全く同様の構成となっており、周辺装置制御部４００と周辺装置制御部５００のいずれの制御手段を使用するかは、コンピューティングモジュール内のプロセッサ上で動作するプログラムが任意に決定することができ、これによって再同期に係る周辺装置制御部４００、５００の何れかの制御手段の故障があった場合でも、故障していない周辺装置制御部４００、５００の制御手段を使用可能とすることにより、可用性を高めることを可能としている。
【００８１】
本実施の形態では、各コンピューティングモジュール１００、２００、３００と各周辺装置制御部４００、５００の接続を代表的な周辺装置接続インタフェースであるＰＣＩブリッジ７０５を使用し、系間通信制御部７０３とのデータの送受信や同期制御部７０４に対するリセット処理の指令をＰＣＩプロトコルを使って実行する点を除けば、上述の図１で示した実施の形態と同様の動作により、本発明の効果を得られる。
【００８２】
また、本実施の形態は、コンピューティングモジュールが３個の構成を示しており、その場合の再同期化処理の詳細な動作は、図８及び図９に示す通りである。図８は上述の図２の動作を３個以上のコンピューティングモジュールで構成するロックステップ方式のフォルトトレラントコンピュータ装置に一般化した動作フローを示している。その処理内容は、コンピューティングモジュールの数が異なることを除いて、図２及び図３に示した内容と同じである。
【００８３】
すなわち、図８及び図９のフローチャートにおいて、各プロセッサは、割り込みを受けて、プロセッサ内部の実行命令数を計数する命令数カウンタが動作しないモードである、再同期化処理用のプロセッサ管理モードに移行する（ステップ８０１）。
【００８４】
そして、各プロセッサは、各々の命令数カウンタの値を読み出し（ステップ８０２）、該読み出した命令数カウンタの値を他のコンピューティングモジュールに、メモリ制御部１０５、２０５及びＰＣＩブリッジ７０５と系間通信制御部７０３を介して送信する（ステップ８０３）。
【００８５】
各プロセッサはまた、他のコンピューティングモジュールから送信された、他のコンピューティングモジュールのプロセッサの命令数カウンタ値を、系間通信制御部７０３、ＰＣＩブリッジ７０５、メモリ制御部１０５、２０５を介して読み出し（ステップ８０４）、全てのコンピューティングモジュールの対応するプロセッサの命令数カウンタ値と比較する（ステップ８０５）。
【００８６】
ここで、命令数カウンタ値が最大となっているコンピューティングモジュールでは、命令数カウンタ値の比較の結果、他のコンピューティングモジュールが遅延分の命令を実行している間、これを待ち合わせる処理を行い（ステップ８０６）、その後、全てのコンピューティングモジュール１００、２００、３００の実行命令数が一致したとき、全てのコンピューティングモジュール１００、２００、３００への再同期化処理のためのリセット指令を発生させるよう、同期制御部７０４に対して、メモリ制御部１０５あるいは２０５、ＰＣＩブリッジ７０５を介して指令する（ステップ８０７）。
【００８７】
一方、命令数カウンタ値が最大でない全てのコンピューティングモジュールでは、実行命令数（命令数カウンタ値）が最大であるコンピューティングモジュールと同一の命令列実行状態となるまで命令実行を進める遅延ステップ調整処理を行い（ステップ８０８）、その完了を命令数カウンタ値が最大であるコンピューティングモジュールに通知し（ステップ８０９）、その後、再同期化処理のためのリセット発生を待ち合わせる（ステップ８１０）。
【００８８】
同期制御部７０４は、前記指令を受けると、クロック同期動作を回復させるためのリセット信号を、全てのコンピューティングモジュール１００、２００、３００に対して同時に発生させる。また、このとき同時に前記割り込み制御部７０２に対して、動作不一致の割り込み発生の許可を指令して、再開される通常のクロック同期動作に備える。
【００８９】
図９は、図８の遅延ステップ調整処理の詳細な作用を示している。
【００９０】
遅延ステップ調整処理（図８のステップ８０８）では、プロセッサを１命令だけ実行した後、再び前記プロセッサ管理モードに移行せしめるステップ実行モードに設定し（ステップ９０１）、プロセッサを通常実行モードに移行させる（ステップ９０２）。
【００９１】
この結果、プロセッサは１命令のみ実行（ステップ９０３）した後、再びプロセッサ管理モードに移行する（ステップ９０４）。
【００９２】
該プロセッサは、命令数カウンタの値を読み出し（ステップ９０５）、先に受信済みの実行命令数が最大であるコンピューティングモジュールの命令数カウンタ値と比較し（ステップ９０６）、不一致であれば、再度ステップ実行モード設定処理（ステップ９０１）から繰り返し、一致していれば遅延ステップ調整処理を完了する。
【００９３】
図１０は、本発明の第３の実施の形態によるフォルトトレラントコンピュータ装置の構成を示す。図１０によれば、本実施の形態によるフォルトトレラントコンピュータ装置は、バス監視制御部７０１、割り込み制御部７０２においても、各コンピューティングモジュールとの情報送受信をＰＣＩブリッジ７０５を介して実行する構成となっている点を除いて、図７に示した第２の実施の形態と同じであり、図８及び図９に示したと同様の動作により同様の効果が得られる。
【００９４】
本発明のフォルトトレラントコンピュータ装置では、再同期化処理を実行する各手段の機能をハードウェア的に実現することは勿論として、上記した各手段の機能を実行する再同期化処理プログラム１０００をコンピュータ処理装置のメモリにロードしてコンピュータ処理装置を制御することで実現することができる。この再同期化処理プログラム１０００は、磁気ディスク、半導体メモリその他の記録媒体に格納され、その記録媒体からコンピュータ処理装置にロードされ、コンピュータ処理装置の動作を制御することにより、上述した各機能を実現する。
【００９５】
以上好ましい実施の形態をあげて本発明を説明したが、本発明は必ずしも上記実施の形態に限定されるものではなく、その技術的思想の範囲内において様々に変形して実施することができる。
【００９６】
本発明は、コンピューティングモジュールが２個であるか３個以上であるかに関わらず、これまで説明した構成と動作によってまったく同様の効果が得られる。
【００９７】
また、各コンピューティングモジュール内のプロセッサの数についても、なんらの制約されることはなく、プロセッサが１個であっても、あるいは３個以上であってもまったく同様に作用する。また、上述した実施の形態では、各プロセッサがひとつのプロセッサ外部バスを共有し、同一バス上に接続されている場合を示しているが、例えば、メモリ制御部から複数のプロセッサが星形接続されるような構成であっても、あるいはひとつのコンピューティングモジュールを構成するプロセッサが、物理的に複数のボードにわかれて構成されていても、本発明の効果になんら影響しない。
【００９８】
また、本発明では、各コンピューティングモジュールとバス監視制御手段その他の再同期化のための各手段が、１組であっても複数組であってもかまわない。また、その位置が周辺装置制御部に内蔵されていても、専用のボード等によって構成されていてもよい。あるいはまた、各コンピューティングモジュールとバス監視制御手段その他の再同期化のための各手段が、ＰＣＩによって接続されていても、ＰＣＩ−Ｘその他の他の規格のインタフェース手段で接続されていてもよいし、あるいは規格化されていない専用のインタフェース手段で接続されていても、上記の説明と同様の効果が得られる。
【００９９】
【発明の効果】
以上説明したように本発明によれば、以下に述べるような効果が得られるものである。
【０１００】
第１の効果は、フォルトトレラントコンピュータ装置のあるコンピューティングモジュールが、固定故障以外の要因でロックステップ状態から外れた場合に、極めて短時間でロックステップ状態に回復させられることである。
【０１０１】
その理由は、ロックステップ外れの発生の初期の段階であって、各コンピューティングモジュールの処理のずれが小さい時期にプロセッサに割り込ませ、処理が遅延しているコンピューティングモジュールの遅延を調整した後、クロック同期動作を再開させることにより、全メモリのコピーを行うことなくクロック同期動作状態を回復することができるからである。
【０１０２】
第２の効果は、フォルトトレラントコンピュータ装置の可用性を向上させることができることにある。その理由は、ロックステップ外れが起こった時の再同期化処理を著しく高速化することによって、装置全体が停止する期間を大幅に短縮することができるからである。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態によるフォルトトレラントコンピュータ装置の構成を示すブロック図である。
【図２】本発明の第１の実施の形態によるフォルトトレラントコンピュータ装置の第１の動作を説明する示すフローチャートである。
【図３】本発明の第１の実施の形態によるフォルトトレラントコンピュータ装置の第１の動作を説明する示すフローチャートである。
【図４】本発明の第１の実施の形態によるフォルトトレラントコンピュータ装置の第２の動作を説明する示すフローチャートである。
【図５】本発明の第１の実施の形態によるフォルトトレラントコンピュータ装置の第２の動作を説明する示すフローチャートである。
【図６】本発明の第１の実施の形態によるフォルトトレラントコンピュータ装置の第３の動作を説明するフローチャートである。
【図７】本発明の第２の実施の形態によるフォルトトレラントコンピュータ装置の構成を示すブロック図である。
【図８】本発明の第２の実施の形態によるフォルトトレラントコンピュータ装置の動作を説明するフローチャートである。
【図９】本発明の第２の実施の形態によるフォルトトレラントコンピュータ装置の動作を説明するフローチャートである。
【図１０】本発明の第３の実施の形態によるフォルトトレラントコンピュータ装置の構成を示すブロック図である。
【符号の説明】
１００、２００、３００　コンピューティングモジュール
１０１、１０２、２０１、２０２、３０１、３０２　プロセッサ
１０３、２０３、３０３　プロセッサ外部バス
１０４、２０４、３０４　メモリ
１０５、２０５、３０５　メモリ制御部
４００、５００　周辺装置制御部
７００　障害監視制御部
７０１　バス監視制御部
７０２　割り込み制御部
７０３　系間通信制御部
７０４　同期制御部
７０５　ＰＣＩブリッジ
８００、８０１、８０２、８０３、８０４　ＰＣＩバス
【図１】
2004046599.tif 000003
【図２】
2004046599.tif 000004
【図３】
2004046599.tif 000005
【図４】
2004046599.tif 000006
【図５】
2004046599.tif 000007
【図６】
2004046599.tif 000008
【図７】
2004046599.tif 000009
【図８】
2004046599.tif 000010
【図９】
2004046599.tif 000011
【図１０】
2004046599.tif 000012