(57)【特許請求の範囲】
【請求項１】
第１のコンピュータおよび第２のコンピュータがデータ送受信用通信バスを介して相互に接続されて構成された二重化コンピュータシステムにおいて、前記第１のコンピュータまたは前記第２のコンピュータに異常が生じた場合に用いられる、前記第１のコンピュータから出力され前記第２のコンピュータに入力される第１の異常時処理用信号、および、前記第２のコンピュータから出力され前記第１のコンピュータに入力される第２の異常時処理用信号についての活性化診断を行う異常時処理用信号の診断方法であって、
前記第１のコンピュータは、
前記異常時処理用信号診断の開始または完了を指示する診断開始コマンドまたは診断完了コマンドが設定されるコマンド保持部と、
前記異常時処理用信号診断のための診断データが設定される診断データ保持部と、
前記コマンド保持部に、前記診断開始コマンドがセットされたときにセットされ、前記診断完了コマンドがセットされたときにクリアされる第１の診断モードフラグ記憶部と、
前記コマンド保持部に設定された前記診断開始コマンドまたは診断完了コマンドを、前記データ送受信用通信バスを介して前記第２のコンピュータへ送信するコマンド送信部と、
前記第１の診断モードフラグ記憶部がセットされているときには、前記診断データ保持部に保持されている診断データが前記第１の異常時処理用信号として前記第２のコンピュータへ出力されるように、前記第１の異常時処理用信号の出力信号を切り替える第１の信号切り替え部と、
を備え、
前記第２のコンピュータは、
前記データ送受信用通信バスを介して前記第１のコンピュータから送信される前記診断開始コマンドまたは診断完了コマンドを受信するコマンド受信部と、
前記コマンド受信部が前記診断開始コマンドを受信したときセットされ、前記診断完了コマンドを受信したときクリアされる第２の診断モードフラグ記憶部と、
前記第２の診断モードフラグ記憶部がセットされているときには、前記第１のコンピュータから入力された前記第１の異常時処理用信号がそのまま前記第２の異常時処理用信号としてループバックされるように、前記第２の異常時処理用信号の出力信号を切り替える第２の信号切り替え部と、
を備え、
前記第１のコンピュータは、
前記診断開始コマンドを前記コマンド保持部に設定して、前記第１の診断モードフラグ記憶部をセットする処理と、
前記コマンド保持部に設定した診断開始コマンドを、前記コマンド送信部を介して前記第２のコンピュータへ送信し、前記第２のコンピュータに前記第２の診断モードフラグ記憶部をセットさせる処理と、
前記診断データ保持部に診断データを設定し、前記設定した診断データを前記第１の異常時処理用信号として前記第２のコンピュータへ出力する処理と、
前記出力した第１の異常時処理用信号に応答して前記第２のコンピュータからループバックされる第２の異常時処理用信号を応答データとして取得する処理と、
前記応答データを前記応答データの期待値と比較し、両者が一致したとき、前記第１の異常時処理用信号および前記第２の異常時処理用信号がともに活性化可能であると判定する処理と、
を実行すること
を特徴とする異常時処理用信号の診断方法。
【請求項２】
前記第２のコンピュータは、
前記コマンド受信部が前記診断開始コマンドを受信したときセットされ、前記診断完了コマンドを受信したときクリアされるタイムアウト監視部をさらに備え、
前記タイムアウト監視部が所定のタイムアウト時間の経過を検出したときには、前記第２の診断モードフラグ記憶部をクリアすること
を特徴とする請求項１に記載の異常時処理用信号の診断方法。
【請求項３】
データ送受信用通信バスを介して相互に接続された第１のコンピュータおよび第２のコンピュータによって構成され、第１のコンピュータまたは第２のコンピュータに異常が生じた場合に、前記第１のコンピュータから出力され前記第２のコンピュータに入力される第１の異常時処理用信号、および、前記第２のコンピュータから出力され前記第１のコンピュータに入力される第２の異常時処理用信号を用いて所定の回復処理を行う二重化コンピュータシステムであって、
前記第１のコンピュータは、
前記異常時処理用信号診断の開始または完了を指示する診断開始コマンドまたは診断完了コマンドが設定されるコマンド保持部と、
前記異常時処理用信号診断のための診断データが設定される診断データ保持部と、
前記コマンド保持部に、前記診断開始コマンドがセットされたときにセットされ、前記診断完了コマンドがセットされたときにクリアされる第１の診断モードフラグ記憶部と、
前記コマンド保持部に設定された前記診断開始コマンドまたは診断完了コマンドを、前記データ送受信用通信バスを介して前記第２のコンピュータへ送信するコマンド送信部と、
前記第１の診断モードフラグ記憶部がセットされているときには、前記診断データ保持部に保持されている診断データが前記第１の異常時処理用信号として前記第２のコンピュータへ出力されるように、前記第１の異常時処理用信号の出力信号を切り替える第１の信号切り替え部と、
を備え、
前記第２のコンピュータは、
前記データ送受信用通信バスを介して前記第１のコンピュータから送信される前記診断開始コマンドまたは診断完了コマンドを受信するコマンド受信部と、
前記コマンド受信部が前記診断開始コマンドを受信したときセットされ、前記診断完了コマンドを受信したときクリアされる第２の診断モードフラグ記憶部と、
前記第２の診断モードフラグ記憶部がセットされているときには、前記第１のコンピュータから入力された前記第１の異常時処理用信号がそのまま前記第２の異常時処理用信号としてループバックされるように、前記第２の異常時処理用信号の出力信号を切り替える第２の信号切り替え部と、
を備え、
前記第１のコンピュータは、
前記診断開始コマンドを前記コマンド保持部に設定して、前記第１の診断モードフラグ記憶部をセットする処理と、
前記コマンド保持部に設定した診断開始コマンドを、前記コマンド送信部を介して前記第２のコンピュータへ送信し、前記第２のコンピュータに前記第２の診断モードフラグ記憶部をセットさせる処理と、
前記診断データ保持部に診断データを設定し、前記設定した診断データを前記第１の異常時処理用信号として前記第２のコンピュータへ出力する処理と、
前記出力した第１の異常時処理用信号に応答して前記第２のコンピュータからループバックされる第２の異常時処理用信号を応答データとして取得する処理と、
前記応答データを前記応答データの期待値と比較し、両者が一致したとき、前記第１の異常時処理用信号および前記第２の異常時処理用信号がともに活性化可能であると判定する処理と、
を実行すること
を特徴とする二重化コンピュータシステム。
【請求項４】
前記第２のコンピュータは、
前記コマンド受信部が前記診断開始コマンドを受信したときセットされ、前記診断完了コマンドを受信したときクリアされるタイムアウト監視部をさらに備え、
前記タイムアウト監視部が所定のタイムアウト時間の経過を検出したときには、前記第２の診断モードフラグ記憶部をクリアすること
を特徴とする請求項３に記載の二重化コンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、二重化コンピュータシステムにおける異常時処理用信号の診断方法、および、その異常時処理用信号の診断方法が適用された二重化コンピュータシステムに関する。
【背景技術】
【０００２】
システムの信頼性（耐故障性）を向上させるために、しばしば、二つのコンピュータを用いて二重化コンピュータシステムが構成される。その構成の方法としては、同時に二つのコンピュータに同じ処理を実行させるデュアルシステムや、通常は、二つのコンピュータに異なる処理をさせつつも、一方が故障した場合には、その故障したコンピュータの一部または全部の処理を他方のコンピュータに肩代わりして処理させるデュプレックスシステムなどがある。
【０００３】
このような二重化コンピュータシステムにおいては、二つのコンピュータのそれぞれが自らの動作状態を他方に通知し合うことが必要となる。例えば、特許文献１に開示されている二重化コンピュータシステムでは、実行系のコンピュータは、自らの動作に何らかの異常を検知した場合には、異常通知信号を待機系のコンピュータに送信する。一方、待機系のコンピュータは、その異常通知信号を受信すると、実行系のコンピュータで実行中のタスクについての引継ぎ・切り替え処理を行った後、実行系のコンピュータに対して初期化信号を送信する。
【０００４】
二重化コンピュータシステムにおいて、このような異常通知信号や初期化信号は、一般的に用いられる信号であるが、このような信号は、通常の動作状態では活性化されることはなく、いずれかのコンピュータに何らかの異常が発生したときに初めて活性化される。従って、これらの信号の活性化機能が何らかの障害によって失われていたとしても、通常状態では、それが検知されることはない。
【０００５】
ここで、コンピュータなどのディジタルシステムにおいて、信号を活性化するとは、通常状態が“Ｌｏｗ”レベルの信号（正論理信号）であれば、その信号を“Ｈｉｇｈ”レベルにすることを意味し、通常状態が“Ｈｉｇｈ”レベルの信号（負論理信号）であれば、その信号を“Ｌｏｗ”レベルにすることを意味する。
【０００６】
ちなみに、異常通知信号や初期化信号は、通常状態では、不活性状態にあり、例えば、実行系のコンピュータに異常が発生した場合に、活性化される。しかしながら、もし、そのとき、異常通知信号の活性化機能が失われていた場合には、実行系のコンピュータは、その異常通知信号を待機系コンピュータに伝達することができない。これでは、二重化コンピュータシステムによるシステムの信頼性（耐故障性）の向上は実現されない。そこで、異常通知信号や初期化信号（以下、本明細書では、これらの信号を異常時処理用信号と総称する）については、それらの信号が活性化可能であることを、常々診断しておくことが必要となる。
【０００７】
ところで、二つの装置を接続するデータ伝送路の障害を検知する方法として、例えば、特許文献２に開示されているようなループバックテストが知られている。ループバックテストでは、ループバックテストを実行する第一の装置は、相手側装置に受信ラインと送信ラインとをその内部で接続することを指示するとともに、送信ラインを介して相手側装置に所定のデータを送信する。そのとき、相手側装置では、受信ラインと送信ラインとが接続されているので、第一の装置には、送信したデータが受信ラインを介してそのまま返送される。従って、第一の装置は、返送されたデータが送信したデータと同じであるか否かを判定することにより、送信ラインおよび受信ラインにおける障害の有無を検知することができる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平６−２５９２７４号公報
【特許文献２】特開２００２−１６６６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
二重化コンピュータシステムにおける異常時処理用信号の活性化機能の診断に、前記のようなループバックテストを適用する場合、診断処理を制御する、例えば、実行系のコンピュータが、相手系のコンピュータに対し、ループバックテストを行うことを如何にして伝達すればよいかという問題が生じる。すなわち、相手系のコンピュータにループバックテストを行うことを伝達しなければ、相手系のコンピュータは、入力された信号を出力信号としてループバックさせることはできない。
【００１０】
また、二重化コンピュータシステムの場合には、少なくとも一方のコンピュータが所定のタスク実行の合間に、異常時処理用信号の活性化機能の診断処理を行う必要がある。従って、その診断処理は、人の操作が介入することなどは許容されず、コンピュータのプログラム制御だけで完了される必要がある。
【００１１】
そこで、本発明は、新たな信号の追加や、人の操作介入を必要とせず、コンピュータのプログラム制御により実現が可能な二重化コンピュータシステムにおける異常時処理用信号の診断方法、および、その異常時処理用信号の診断方法が適用された二重化コンピュータシステムを提供することにある。
【課題を解決するための手段】
【００１２】
本発明の異常時処理用信号の診断方法は、第１のコンピュータおよび第２のコンピュータがデータ送受信用通信バスを介して相互に接続されて構成された二重化コンピュータシステムにおいて、前記第１のコンピュータまたは前記第２のコンピュータに異常が生じた場合に用いられる、前記第１のコンピュータから出力され前記第２のコンピュータに入力される第１の異常時処理用信号、および、前記第２のコンピュータから出力され前記第１のコンピュータに入力される第２の異常時処理用信号について、その活性化診断を行うものである。
【００１３】
この二重化コンピュータシステムにおいて、前記第１のコンピュータは、前記異常時処理用信号診断の開始または完了を指示する診断開始コマンドまたは診断完了コマンドが設定されるコマンド保持部と、前記異常時処理用信号診断のための診断データが設定される診断データ保持部と、前記コマンド保持部に、前記診断開始コマンドがセットされたときにセットされ、前記診断完了コマンドがセットされたときにクリアされる第１の診断モードフラグ記憶部と、前記コマンド保持部に設定された前記診断開始コマンドまたは診断完了コマンドを、前記データ送受信用通信バスを介して前記第２のコンピュータへ送信するコマンド送信部と、前記第１の診断モードフラグ記憶部がセットされているときには、前記診断データ保持部に保持されている診断データが前記第１の異常時処理用信号として前記第２のコンピュータへ出力されるように、前記第１の異常時処理用信号の出力信号を切り替える第１の信号切り替え部と、
を備える。
【００１４】
また、前記第２のコンピュータは、前記データ送受信用通信バスを介して前記第１のコンピュータから送信される前記診断開始コマンドまたは診断完了コマンドを受信するコマンド受信部と、前記コマンド受信部が前記診断開始コマンドを受信したときセットされ、前記診断完了コマンドを受信したときクリアされる第２の診断モードフラグ記憶部と、前記第２の診断モードフラグ記憶部がセットされているときには、前記第１のコンピュータから入力された前記第１の異常時処理用信号がそのまま前記第２の異常時処理用信号としてループバックされるように、前記第２の異常時処理用信号の出力信号を切り替える信号第２の切り替え部と、を備える。
【００１５】
そして、その活性化診断を行う場合には、前記第１のコンピュータは、前記診断開始コマンドを前記コマンド保持部に設定して、前記第１の診断モードフラグ記憶部をセットする処理と、前記コマンド保持部に設定した診断開始コマンドを、前記コマンド送信部を介して前記第２のコンピュータへ送信し、前記第２のコンピュータに前記第２の診断モードフラグ記憶部をセットさせる処理と、前記診断データ保持部に診断データを設定し、前記設定した診断データを前記第１の異常時処理用信号として前記第２のコンピュータへ出力する処理と、前記出力した第１の異常時処理用信号に応答して前記第２のコンピュータからループバックされる第２の異常時処理用信号を応答データとして取得する処理と、前記応答データを前記応答データの期待値と比較し、両者が一致したとき、前記第１の異常時処理用信号および前記第２の異常時処理用信号がともに活性化可能であると判定する処理と、を実行する。
【００１６】
以上の通り、異常時処理用信号の診断は、第１のコンピュータの制御によって実現されるので、とくに人の操作介入が必要なことはない。また、第１のコンピュータが第２のコンピュータに診断モードを設定したことを伝達するためには、既存のデータ送受信用通信バスが用いられているので、あらたな信号は追加されていない。
【発明の効果】
【００１７】
本発明によれば、二重化コンピュータシステムの異常時処理用信号の診断を、新たな信号の追加や人の操作介入がなくとも、一方のコンピュータのプログラム制御により実現させることができる。
【図面の簡単な説明】
【００１８】
【図１】本発明が適用される二重化コンピュータシステムの概略構成の例を示した図。
【図２】本発明の実施形態に係る主系信号診断処理部および従系信号診断処理部の詳細な構成の例、および、そのそれぞれの診断モードを設定するための送信制御部および受信制御部の構成の例を示した図。
【図３】本発明の実施形態に係る二重化コンピュータで用いられるデータ送受信コマンドおよび信号診断処理コマンドのフレーム構成の例を示した図。
【図４】本発明の実施形態に係る主系コンピュータにおいてＣＰＵが実行する信号診断処理のメインルーチンのフローチャートの例を示した図。
【図５】本発明の実施形態に係る主系コンピュータにおいてＣＰＵが実行する信号診断完了コマンド送信処理のフローチャートの例を示した図。
【図６】本発明の実施形態に係る従系コンピュータの受信制御部が信号診断処理コマンドを受信したときに処理する処理フローの例を示した図。
【発明を実施するための形態】
【００１９】
以下、本発明の実施形態について、図面を参照して詳細に説明する。
【００２０】
＜１．二重化コンピュータシステムの概略の構成および動作＞
図１は、本発明が適用される二重化コンピュータシステムの概略構成の例を示した図である。本実施形態では、二重化コンピュータは、主系コンピュータ１および従系コンピュータ２により構成されるものとする。その場合、主系コンピュータ１および従系コンピュータ２は、両者が同期しながら同じタスクを処理するものであってもよく、互いに異なる処理をするものであってもよい。あるいは、従系コンピュータ２は、ホットスタンバイの待機コンピュータであってもよい。
【００２１】
図１に示すように、主系コンピュータ１および従系コンピュータ２は、それぞれ、ＣＰＵ（Central Processing Unit）１１，２１、メインメモリ１２，２２、ＤＭＡ（Direct Memory Access）制御部１３，２３、送信制御部１４，２４、受信制御部１５，２５を含んで構成され、さらに、異常時処理用信号を送受信するための異常検知フラグ１６，２６、リセット要求フラグ１７，２７、主系信号診断処理部１０または従系信号診断処理部２０を含んで構成される。
【００２２】
ここで、主系コンピュータ１および従系コンピュータ２は、通信バス３１，３２を介して相互に接続され、主系コンピュータ１および従系コンピュータ２間でのデータの送受信が可能にされている。そして、そのデータの送受信に必要なメインメモリ１２，２２へのアクセスは、ＤＭＡ制御部１３，２３によって行われる。
【００２３】
すなわち、通信バス３１，３２を介して行われるデータ送受信動作は、送信制御部１４，２４および受信制御部２５，１５によって制御される。そして、送信制御部１４，２４または受信制御部２５，１５の送受信制御で用いられる送受信データは、ＤＭＡ制御部１３，２３がメインメモリ１２，２２へ直接にアクセスすることによって用意される。
【００２４】
従って、ＣＰＵ１１，２１は、後記するように、簡単なデータ送受信用コマンドを発行するだけで、主系コンピュータ１と従系コンピュータ２との間のデータ送受信動作、例えば、メインメモリ１２，２２の各領域間でのデータの転写などが実現される。
【００２５】
以上の説明からも分かるように、主系コンピュータ１および従系コンピュータ２は、基本的には、互いに同形で対称になるように構成されている。従って、主系コンピュータ１および従系コンピュータ２が、適宜、入れ替わっても構わない。以下、主系コンピュータ１または従系コンピュータ２の一方についてのみ説明するが、その説明は、他方のコンピュータにも適用される。
【００２６】
図１に示すように、主系コンピュータ１内において、ＣＰＵ１１は、ＣＰＵバス１８を介してメインメモリ１２に接続されている。ＣＰＵ１１は、メインメモリ１２に格納されている所定のプログラムを実行する。そのプログラムの実行によって、主系コンピュータ１の所定の機能が実現される。
【００２７】
また、ＣＰＵ１１は、ＣＰＵバス１８を介して送信制御部１４に接続されている。送信制御部１４には、後記するように、ＣＰＵバス１８に接続されたコマンドレジスタおよびステータスレジスタが設けられており、ＣＰＵ１１は、コマンドレジスタに所定のデータ送受信に関するコマンドを書き込むことによって、ＤＭＡ制御部１３、送信制御部１４および受信制御部１５を動作させるとともに、ステータスレジスタを監視して、適宜、その動作を制御する。
【００２８】
さらに、ＣＰＵ１１は、ＣＰＵバス１８を介して異常検知フラグ１６およびＲ要求フラグ（リセット要求フラグ）１７に接続されている。ＣＰＵ１１は、適宜、所定のプログラムに従って、異常検知フラグ１６およびＲ要求フラグ１７をそれぞれ独立にセットまたはクリアすることができる。なお、本明細書では、フラグとは、「１」または「０」の論理状態を記憶する記憶素子を指すものとし、フラグを「セット」するとは、フラグを活性状態（本実施形態では、論理状態「１」）にすることを意味し、フラグを「クリア」するとは、フラグを不活性状態（本実施形態では、論理状態「０」）にすることを意味ものとする。
【００２９】
ここで、異常検知フラグ１６は、初期状態でクリアされており、ＣＰＵ１１が、例えば、自己診断プログラムなどで自己の動作異常を検知したり、あるいは、パリティ検査などによりメインメモリ１２の読み出し誤りを検知したりするなど、主系コンピュータ１における何らかの動作異常を検知した場合には、ＣＰＵ１１は、異常検知フラグ１６をセットする。
【００３０】
異常検知フラグ１６のセットは、主系コンピュータ１のダウンを意味する。そこで、異常検知フラグ１６の出力信号は、主系信号診断処理部１０を経由して、主系ダウン信号として主系コンピュータ１から出力され、従系コンピュータ２へ入力される。なお、主系信号診断処理部１０の詳細については、後記するが、主系信号診断処理部１０で設定される動作モードが診断モードでない場合には、異常検知フラグ１６の出力信号がそのまま主系ダウン信号となる。
【００３１】
従系コンピュータ２に入力された主系ダウン信号は、従系信号診断処理部２０を経由して、ＣＰＵ２１の、例えば、割込端子（ＩＲ端子）に入力される。なお、従系信号診断処理部２０の詳細については、後記するが、従系信号診断処理部２０で設定される動作モードが診断モードでない場合には、従系信号診断処理部２０に入力された主系ダウン信号は、そのまま（同じ論理信号として）ＣＰＵ２１へ入力される。
【００３２】
ＣＰＵ２１は、割込端子（ＩＲ端子）から活性化された主系ダウン信号の入力を受付けると、主系コンピュータ１がダウンしたことを認識して、主系コンピュータ１をリセットするために、Ｒ要求フラグ２７をセットする。なお、Ｒ要求フラグ２７は、初期状態でクリアされており、Ｒ要求フラグ２７のセットは、主系コンピュータ１に対し、リセットを要求すること意味する。
【００３３】
Ｒ要求フラグ２７の出力信号は、従系信号診断処理部２０を経由して、主系リセット信号として従系コンピュータ２から出力され、主系コンピュータ１へ入力される。なお、従系信号診断処理部２０で設定される動作モードが診断モードでない場合には、Ｒ要求フラグ２７の出力信号がそのまま主系リセット信号となる。
【００３４】
主系コンピュータ１へ入力された主系リセット信号は、主系信号診断処理部１０を経由して、ＣＰＵ１１の、例えば、リセット端子（ＲＳ端子）に入力される。なお、主系信号診断処理部１０で設定される動作モードが診断モードでない場合には、主系信号診断処理部１０に入力された主系リセット信号は、そのまま（同じ論理信号として）ＣＰＵ１１へ入力される。
【００３５】
ＣＰＵ１１は、リセット端子（ＲＳ端子）から活性化された主系リセット信号の入力を受付けると、所定のリセット処理を実行して、主系コンピュータ１全体を初期化する。なお、一般的には、このとき併せて、主系コンピュータ１および従系コンピュータ２のそれぞれにおける主系−従系の交代処理などが行われる。
【００３６】
なお、以上の説明では、主系コンピュータ１において異常検知フラグ１６がセットされた場合の主系コンピュータ１および従系コンピュータ２の動作について説明したが、従系コンピュータ２において異常検知フラグ２６がセットされた場合にも、主系コンピュータ１および従系コンピュータ２は、同様に動作するので、その説明を省略する。
【００３７】
図１において、主系信号診断処理部１０および従系信号診断処理部２０は、ＣＰＵ１１が、主系コンピュータ１および従系コンピュータ２をつなぐ主系ダウン信号、従系リセット信号、従系ダウン信号および主系リセット信号の診断を行うために設けられたものである。すなわち、ＣＰＵ１１は、その診断を行うとき、主系信号診断処理部１０および従系信号診断処理部２０を診断モードに設定する。
【００３８】
＜２．信号診断処理部の構成および動作＞
図２は、主系信号診断処理部１０および従系信号診断処理部２０の詳細な構成の例、および、そのそれぞれの診断モードを設定するための送信制御部１４および受信制御部２５の構成の例を示した図である。ここでは、まず、図２を参照して、主系信号診断処理部１０および従系信号診断処理部２０の回路の構成、ならびに、これら回路の診断時の動作について説明する。
【００３９】
図２に示すように、主系信号診断処理部１０および従系信号診断処理部２０のそれぞれには、診断モードフラグ１０１および診断モードフラグ２０１が設けられている。診断モードフラグ１０１，２０１は、初期状態でクリアされており、これらのフラグがセットされることにより、主系信号診断処理部１０および従系信号診断処理部２０の動作は、診断モードに切り替えられる。
【００４０】
なお、詳細については後記するが、基本的には、主系信号診断処理部１０の診断モードフラグ１０１がセットされると、多少の時間遅れで、従系信号診断処理部２０の診断モードフラグ２０１もセットされる。また、同様に、診断モードフラグ１０１がクリアされると、わずかではあるが多少の時間遅れで、診断モードフラグ２０１もクリアされる。従って、主系信号診断処理部１０および従系信号診断処理部２０において、診断モードは、わずかな時間の相違があるものの、ほぼ同時に形成され、ＣＰＵ１１は、両者がともに診断モードであるときに所定の診断処理を実行する。
【００４１】
ところで、本実施形態でいう診断処理とは、主系コンピュータ１と従系コンピュータ２とをつなぐ主系ダウン信号、従系リセット信号、従系ダウン信号および主系リセット信号（本明細書では、これらの信号を異常時処理用信号と総称する）が実際に活性化可能であるか否かを診断する処理である。
【００４２】
本実施形態では、その診断処理は、いわゆるループバックテストによって実現される。ループバックテストでは、まず、主系コンピュータ１から出力され、従系コンピュータ２へ入力される第１の異常時処理用信号（例えば、主系ダウン信号）と、従系コンピュータ２から出力され、主系コンピュータ１へ入力される第２の異常時処理用信号（例えば、従系ダウン信号）と、があったとき、それらの信号を従系コンピュータ２の内側で事前に短絡しておく。短絡することによって、主系コンピュータ１から出力された第１の異常時処理用信号を、従系コンピュータ２を介して、第２の異常時処理用信号へループバックさせることができる。すなわち、主系コンピュータ１から出発して、従系コンピュータ２へ到り、主系コンピュータ１へ戻るループバック経路が形成されたことになる。
【００４３】
そこで、主系コンピュータ１側からそのループバック経路の出力側信号（例えば、主系ダウン信号）に対し、活性化信号を供給し、その活性化信号がループバック経路の入力側信号（例えば、従系ダウン信号）を介して戻ってくるか否かを判定し、活性化信号が戻ってきた場合には、そのループバック経路に含まれる信号（例えば、主系ダウン信号および従系ダウン信号）は、活性化可能と判定する。また、活性化信号が戻ってこなかった場合には、そのループバック経路には何らかの障害があると判定する。
【００４４】
このようなループバックテストを実現するために、主系信号診断処理部１０には、セレクタ１０４、マスクゲート１０９、診断データレジスタ１０２および診断結果レジスタ１０３が設けられている。また、従系信号診断処理部２０には、セレクタ２０２およびマスクゲート２０７が設けられている。
【００４５】
主系信号診断処理部１０において、診断モードフラグ１０１がセットされ、診断モードが設定されると、セレクタ１０４は、主系コンピュータ１の内部側から入力される異常検知フラグ信号およびＲ要求フラグ信号の通過をブロックし、代りに、診断データレジスタ１０２から出力された信号を通過させる。ここで、診断データレジスタ１０２は、例えば、２ビットのレジスタであり、診断モード時に、異常検知フラグ信号およびＲ要求フラグ信号の代替信号を任意に生成するためのレジスタである。
【００４６】
この診断データレジスタ１０２は、ＣＰＵバス１８を介してＣＰＵ１１に接続されている。従って、ＣＰＵ１１は、診断データレジスタ１０２に任意のデータを書き込むことができる。その結果、ＣＰＵ１１は、診断モード時には、主系コンピュータ１から出力される主系ダウン信号および従系リセット信号を、任意に活性化または不活性化することができる。
【００４７】
なお、図２において、主系ダウン信号および従系リセット信号は、それぞれ、正論理信号、および、それをインバータ１０５で反転させた負論理信号の２本の信号として、主系コンピュータ１から出力され、従系コンピュータ２へ入力されている。このような信号の二重化を行うことは、必須ではないが、信号を二重化することにより、信号伝達の信頼性を向上させることができる。
【００４８】
なお、図２に示した主系信号診断処理部１０の構成では、セレクタ１０４は、異常検知フラグ信号およびＲ要求フラグ信号が正論理信号および負論理信号に分岐させられる前の位置に設けられているが、正論理信号および負論理信号に分岐させられた後の正論理信号および負論理信号上に設けられるとしてもよい。ただし、その場合には、４つのセレクタ１０４が必要となり、さらには、診断データレジスタ１０２も４ビットが必要となる。
【００４９】
次に、主系信号診断処理部１０から出力された主系ダウン信号の正論理信号および負論理信号が従系信号診断処理部２０に入力されると、従系信号診断処理部２０では、それらの入力信号は、ＲＣ回路や同期化用のラッチ回路などからなる同期化フィルタ２０４によってわずかに遅延（例えば、１００ｎｓ）させられた後、ＯＲゲート２０５へ入力され、その論理和がとられる。
【００５０】
ここで、ＯＲゲート２０５の負論理信号の入力部の小丸印は、インバータを表している。従って、ＯＲゲート２０５は、正論理信号および負論理信号という異なる信号により伝送されているが、実質的に同じ信号（ここでは、主系ダウン信号）の論理和をとっていることになる。なお、このＯＲゲート２０５の出力は、マスクゲート２０７を介して、ＣＰＵ２１（図１参照）の割込端子（ＩＲ端子）などに入力される。そのため、診断モードでない場合には、ＣＰＵ２１は、主系ダウン信号の正論理信号および負論理信号の少なくとも一方の活性化信号が到着したとき、主系コンピュータ１がダウンしたことを知ることができる。これは、正論理信号または負論理信号の一方の信号線に何らかの障害があった場合でも、主系ダウン信号が主系コンピュータ１から従系コンピュータ２で伝達されることを意味している。
【００５１】
同様に、主系信号診断処理部１０から出力された従系リセット信号の正論理信号および負論理信号が従系信号診断処理部２０に入力されると、従系信号診断処理部２０では、それらの入力信号は、いわゆるＲＣ回路や同期化用のラッチ回路などからなる同期化フィルタ２０４によってわずかに遅延（例えば、１００ｎｓ）させられた後、ＡＮＤゲート２０６へ入力され、その論理積がとられる。
【００５２】
ここで、ＡＮＤゲート２０６の負論理信号の入力部の小丸印は、インバータを表している。従って、ＡＮＤゲート２０６は、正論理信号および負論理信号という異なる信号により伝送されているが、実質的に同じ信号（ここでは、従系リセット信号）の論理積をとっていることになる。なお、このＡＮＤゲート２０６の出力は、マスクゲート２０７を介して、ＣＰＵ２１（図１参照）のリセット端子（ＲＳ端子）などに入力される。そのため、診断モードでない場合には、ＣＰＵ２１は、従系リセット信号の正論理信号および負論理信号の両方の活性化信号が到着したとき、自身に対するリセット要求を知る。これは、正論理信号または負論理信号の一方の信号が到着しただけでは、従系リセット信号は、有効とはならず、両方の信号が到着して初めて、従系リセット信号がＣＰＵ２１すなわち従系コンピュータ２に受付けられる。
【００５３】
マスクゲート２０７は、診断モードフラグ２０１がクリアされているとき（診断モードでないとき）には、前記のＯＲゲート２０５およびＡＮＤゲート２０６の出力信号を通過させるが、診断モードフラグ２０１がセットされているとき（診断モード時）には、それらの信号の通過をブロック（マスク）する。従って、診断モード時に、主系コンピュータ１のＣＰＵ１１が主系ダウン信号や従系リセット信号を如何様に活性化したり、不活性化したりしようとも、従系コンピュータ２の動作に影響が及ぶことはない。
【００５４】
次に、従系信号診断処理部２０において、従系コンピュータ２の内部側から入力される異常検知フラグ信号およびＲ要求フラグ信号は、それぞれ、インバータ２０３により正論理信号と負論理信号とに分岐させられた後、セレクタ２０２の一方の入力端子に入力される。一方、セレクタ２０２の他方の端子には、主系コンピュータ１から従系コンピュータ２へ入力された信号で、ループバックが必要な信号が入力される。
【００５５】
セレクタ２０２は、診断モードでないときには、異常検知フラグ信号およびＲ要求フラグ信号のそれぞれの正論理信号および負論理信号を通過させ、診断モード時には、これらの信号の通過をブロックし、代りに、ループバック対象の信号を通過させる。
【００５６】
すなわち、図２の例では、主系ダウン信号の正論理信号および負論理信号は、セレクタ２０２を介して、それぞれ従系ダウン信号の正論理信号および負論理信号へループバックされる。また、従系リセット信号の正論理信号および負論理信号は、セレクタ２０２を介して、それぞれ主系リセット信号の正論理信号および負論理信号へループバックされる。なお、ここでは、ループバックすべき信号は、類似する信号を介してループバックさせ、また、正論理（負論理）信号は、正論理（負論理）信号を介してループバックさせているが、必ずしもそうしなければならないわけではない。
【００５７】
これらのセレクタ２０２から出力された信号は、従系ダウン信号の正論理信号および負論理信号、ならびに、主系リセット信号の正論理信号および負論理信号として従系コンピュータ２から出力されて、主系コンピュータ１へ入力される。
【００５８】
こうして、主系信号診断処理部１０に入力された従系ダウン信号の正論理信号および負論理信号は、同期化フィルタ１０６によってわずかに遅延（例えば、１００ｎｓ）させられた後、いずれもＯＲゲート１０７へ入力される。ただし、負論理信号は、ＯＲゲート１０７の入力部の小丸印（インバータ）により正論理信号化された後、入力される。なお、ＯＲゲート１０７の役割は、従系信号診断処理部２０におけるＯＲゲート２０５の役割と同じであるので、説明を省略する。
【００５９】
同様に、主系信号診断処理部１０に入力された主系リセット信号の正論理信号および負論理信号は、同期化フィルタ１０６によってわずかに遅延（例えば、１００ｎｓ）させられた後、ＡＮＤゲート１０８へ入力される。ただし、負論理信号は、ＡＮＤゲート１０８の入力部の小丸印（インバータ）により正論理信号化された後、入力される。なお、ＡＮＤゲート１０８の役割は、従系信号診断処理部２０におけるＡＮＤゲート２０６の役割と同じである。
【００６０】
マスクゲート１０９は、診断モードフラグ２０１がクリアされているとき（診断モードでないとき）には、前記のＯＲゲート１０７およびＡＮＤゲート１０８の出力信号を通過させるが、診断モードフラグ２０１がセットされているとき（診断モード時）には、それらの信号の通過をブロック（マスク）する。従って、診断モード時に、主系コンピュータ１のＣＰＵ１１が主系ダウン信号や従系リセット信号を如何様に活性化し、それらの信号が従系ダウン信号や主系リセット信号の活性化信号としてループバックされたとしても、主系コンピュータ１の動作に影響が及ぶことはない。
【００６１】
また、従系ダウン信号の正論理信号および負論理信号、ならびに、主系リセット信号の正論理信号および負論理信号は、同期化フィルタ１０６の前および後の位置で分岐する信号を有し、その分岐した信号は、診断結果レジスタ１０３に入力される。なお、この場合、診断結果レジスタ１０３は、８ビット必要となるが、同期化フィルタ１０６の前および後の両方の信号を診断結果レジスタ１０３に入力することは必須ではなく、同期化フィルタ１０６の前または後の一方の信号を診断結果レジスタ１０３へ入力してもよい。その場合には、診断結果レジスタ１０３は４ビットあればよい。
【００６２】
診断結果レジスタ１０３は、ＣＰＵバス１８を介してＣＰＵ１１に接続されている。従って、ＣＰＵ１１は、診断結果レジスタ１０３のデータを読み出すことによって、先に診断データレジスタ１０２を介して送出した活性化信号が診断モード時に形成されたループバック経路で戻ってきたか否かを判定することができる。
【００６３】
＜３．データ送受信コマンドの機能および動作＞
さらに、図２および図３を参照して、データ送受信コマンドについて説明する。図２に示した二重化コンピュータにおいて、ＣＰＵ１１が主系コンピュータ１と従系コンピュータ２とをつなぐ異常時処理用信号（主系ダウン信号、従系リセット信号、従系ダウン信号および主系リセット信号）の診断を行う場合には、前記した主系信号診断処理部１０および従系信号診断処理部２０を構成した上で、それぞれに含まれる診断モードフラグ１０１，２０１をセットする必要がある。
【００６４】
その場合、ＣＰＵ１１と診断モードフラグ１０１とは、同じ主系コンピュータ１に含まれるハードウエアであるため、ＣＰＵ１１から診断モードフラグ１０１をセットまたはクリア可能にすることは容易である。例えば、診断モードフラグ１０１をＣＰＵバス１８につないで、診断モードフラグ１０１をＣＰＵ１１が読み書き可能なレジスタにしておけばよい。それに対し、従系コンピュータ２に含まれる診断モードフラグ２０１については、ＣＰＵ１１から直接にセットまたはクリア可能にすることはできない。
【００６５】
そこで、本実施形態では、データの送受信時に主系コンピュータ１の送信制御部１４から従系コンピュータ２の受信制御部２５に送信されるデータ送受信コマンド（図３参照）の一種として、異常時処理用信号の診断を行う信号診断処理コマンドを設け、その信号診断処理コマンドにより、ＣＰＵ１１が従系コンピュータ２に含まれる診断モードフラグ２０１をセットまたはクリアできるようにする。
【００６６】
このとき、本実施形態では、主系コンピュータ１の送信制御部１４は、従系コンピュータ２の受信制御部２５と、例えば、８ビット並列のデータ送信用の通信バス３１によって接続され、その通信バス３１には応答用のＡＣＫ（Acknowledge）信号が付属している。また、同様に、従系コンピュータ２の送信制御部２４は、主系コンピュータ１の受信制御部１５と、例えば、８ビット並列のデータ送信用の通信バス３２によって接続され、その通信バス３２には応答用のＡＣＫ信号が付属している。
【００６７】
図３は、本発明の実施形態に係る二重化コンピュータで用いられるデータ送受信コマンドおよび信号診断処理コマンドのフレーム構成の例を示した図である。これらのコマンドのフレームは、図３（ａ）に示すように、固定長全３２０ビット（４０バイト）で構成される。そして、そのフレームは、コマンドフィールド（４ビット）、アドレスフィールド（２８ビット）、データフィールド（２５６ビット）およびＣＲＣフィールド（３２ビット）により構成される。
【００６８】
ここで、コマンドフィールドには、コマンドを識別するコマンドコードが格納される。また、アドレスフィールドには、送受信対象のデータが書き込まれる、または、読み出される相手系（従系コンピュータ２）のメインメモリ２２の領域の先頭アドレスが格納される。また、データフィールドには、当該コマンドで送受信されるデータが格納される。また、ＣＲＣフィールドは、先行するフィールドのデータに付加される誤りチェック用のＣＲＣ（Cyclic Redundancy Check）コードである。
【００６９】
本実施形態では、信号診断処理コマンドは、データ送受信コマンドの一種であるので、ここでは、まず、図３（ｂ）〜（ｄ）および図２を参照して、通常のデータ送受信コマンドの動作について説明する。
【００７０】
自系リード・相手系ライトデータ送信コマンドは、図３（ｂ）のフレーム構成を有し、ＣＰＵ１１が、自系（主系コンピュータ１）のメインメモリ１２から読み出したデータを、相手系（従系コンピュータ２）へ送信して、そのメインメモリ２２に書き込むためのコマンドである。
【００７１】
ＣＰＵ１１は、このコマンドを実行するときには、まず、所定のコマンドコードをコマンドレジスタ１４１に書き込むとともに、送信すべきデータが格納されている自系のメインメモリ１２の先頭アドレスと、送信したデータを書き込むべき相手系のメインメモリ２２の先頭アドレスと、を図示しないアドレスレジスタに書き込む。次に、ＣＰＵ１１がアクセス起動レジスタ１４３の図示しない起動ビットをセットすると、ＤＭＡ制御部１３およびデータ送信部１４４の動作が起動される。
【００７２】
すなわち、ＤＭＡ制御部１３は、メインメモリ１２の指定された先頭アドレスから所定数のデータを読み出し、データ送信部１４４の図示しない送信バッファへ書き込む。また、データ送信部１４４は、コマンド解読部１４２により指示される図３（ｂ）のフレームを生成し、生成したフレームを相手系（従系コンピュータ２）の受信制御部２５へ送信する。また、データ送信部１４４は、フレームの送信をするたびに、送信ＴＯ（Time Out）監視部１４５に対し、そのフレームに対するＡＣＫ応答のタイムアウトエラーの監視を指示する。
【００７３】
一方、相手系（従系コンピュータ２）のデータ受信部２５１は、データ送信部１４４から送信されたフレームを受信し、受信したフレームを図示しない受信バッファメモリに一時記憶するとともに、ＣＲＣに基づき受信誤りチェックを行う。そして、そのチェックの結果、受信に誤りがなかった場合には、データ送信部１４４は、ＡＣＫ送信部２５３に対し、ＡＣＫ送信を指示し、また、コマンド解読部２５２に対し、コマンドの解読を指示する。コマンド解読部２５２は、その解読したコマンドが相手系メモリライトを意味するものであれば、ＤＭＡ制御部２３に対し、受信バッファメモリに一時記憶されたデータのメインメモリ２２への書き込みを指示する。続いて、ＤＭＡ制御部２３は、受信したフレームに含まれる相手系先頭アドレスによって指定されるメインメモリ２２の領域へ受信バッファメモリに一時記憶されたデータを書き込み、一連のコマンドの動作を終了する。
【００７４】
自系（主系コンピュータ１）側では、ＡＣＫ受信部１４６がＡＣＫ送信部２５３から送信されたＡＣＫを受信したときには、その旨がステータスレジスタ１４７に反映されるので、ＣＰＵ１１は、ステータスレジスタ１４７を監視しておくことにより、コマンドの動作終了を知ることができる。また、ＡＣＫ受信部１４６は、ＡＣＫを受信したときには、送信ＴＯ監視部１４５における監視タイマをリセットする。
【００７５】
相手系リード要求コマンドは、図３（ｃ）のフレーム構成を有し、ＣＰＵ１１が、相手系（従系コンピュータ２）に対し、その相手系のメインメモリ２２からデータを読み出して、送信することを要求するコマンドである。なお、このコマンドでは、相手系のメインメモリ２２から読み出すデータが格納されているメモリ領域の先頭アドレスが相手系へ送信されるだけであるので、送信フレームのデータフィールドには、ダミーデータが設定される。
【００７６】
ＣＰＵ１１は、このコマンドを実行するときには、所定のコマンドコードをコマンドレジスタ１４１に書き込み、相手系に対し送信を求めるデータが格納されているメインメモリ２２の先頭アドレスを図示しないアドレスレジスタに書き込み、さらに、アクセス起動レジスタ１４３の図示しない起動ビットをセットする。これにより、ＤＭＡ制御部１３および送信制御部１４の動作が起動され、さらに、このコマンドが相手系の受信制御部２５へ送信されることにより、受信制御部２５およびＤＭＡ制御部２３の動作が起動される。
【００７７】
ここで、ＤＭＡ制御部１３、２５、送信制御部１４および受信制御部２５の動作は、先に説明した自系リード・相手系ライトデータ送信コマンドの場合の動作とほとんど同じであるが、当該コマンドの場合には、実質的なデータ転送が行われないので、自系および相手系のいずれにおいても、ＤＭＡ制御部１３，２３の動作は、省略される。
【００７８】
リード要求応答コマンドは、図３（ｄ）のフレーム構成を有し、ＣＰＵ１１が、先行して受信した相手系リード要求コマンド（図３（ｃ）参照）に応答して、その相手系リード要求コマンドにより要求されたデータを送信するコマンドである。従って、このコマンドによる自系および相手系におけるＤＭＡ制御部１３、２５、送信制御部１４および受信制御部２５の動作は、先に説明した自系リード・相手系ライトデータ送信コマンドの場合の動作とほとんど同じである。ただし、このコマンドの場合には、相手系におけるメインメモリ２２の先頭アドレスを改めて指定する必要がないので、送信フレームのアドレスフィールドには、ダミーデータが設定される。
【００７９】
データ送受信コマンドとしては、他の形態のものも想定し得るが、ここでは、その例示を省略する。
【００８０】
＜４．信号診断処理コマンドの機能および動作＞
続いて、図３（ｅ）、（ｆ）および図２を参照して、信号診断処理コマンドについて説明する。本実施形態では、信号診断処理コマンドとして、信号診断開始コマンドと信号診断完了コマンドが設けられている。
【００８１】
主系コンピュータ１のＣＰＵ１１が、コマンドレジスタ１４１に所定のコマンドを書き込むと、コマンド解読部１４２は、そのコマンドの解読を行い、そのコマンドが信号診断開始コマンドであった場合には、診断モードフラグ１０１をセットする。これにより、主系信号診断処理部１０の動作モードは、診断モードになる。また、データ送信部１４４は、そのコマンドを含んだフレームを生成し、生成したフレームを従系コンピュータ２のデータ受信部２５１へ送信する。このとき、その送信フレームに含まれるアドレスフィールドおよびデータフィールドには、ダミーデータが設定される。
【００８２】
これに対し、従系コンピュータ２においては、データ受信部２５１が信号診断開始コマンドを含んだフレームを受信すると、コマンド解読部２５２は、受信したフレームに含まれるコマンドの解読を行い、それが信号診断開始コマンドであった場合には、診断モードフラグ２０１をセットする。これにより、従系信号診断処理部２０の動作モードも、診断モードになる。
【００８３】
以上により、主系信号診断処理部１０および従系信号診断処理部２０がともに診断モードに設定されたことになる。そこで、このときに、ＣＰＵ１１は、所定の信号診断処理を実行する。その処理の詳細に付いては、図４以下の図を用いて詳細に説明する。
【００８４】
同様に、主系コンピュータ１のＣＰＵ１１が、コマンドレジスタ１４１に所定のコマンドを書き込むと、コマンド解読部１４２は、そのコマンドの解読を行い、そのコマンドが信号診断完了コマンドであった場合には、診断モードフラグ１０１をクリアする。これにより、主系信号診断処理部１０の診断モードは解除される。また、データ送信部１４４は、そのコマンドを含んだフレームを生成し、生成したフレームを従系コンピュータ２のデータ受信部２５１へ送信する。このとき、その送信フレームに含まれるアドレスフィールドおよびデータフィールドには、ダミーデータが設定される。
【００８５】
これに対し、従系コンピュータ２においては、データ受信部２５１が信号診断完了コマンドを含んだフレームを受信すると、コマンド解読部２５２は、受信したフレームに含まれるコマンドの解読を行い、それが信号診断完了コマンドであった場合には、診断モードフラグ２０１をクリアする。これにより、従系信号診断処理部２０の診断モードは解除される。
【００８６】
なお、診断モードフラグ２０１がセットされた後、例えば、通信バス３１に何らかの障害が発生した場合には、データ受信部２５１が信号診断完了コマンドを含んだフレームを受信することができず、診断モードフラグ２０１がクリアされないことがある。その場合に備えて、従系信号診断処理部２０には、診断完了ＴＯ（Time Out）監視部２５４が設けられている。診断完了ＴＯ監視部２５４は、所定の信号診断処理の所要時間より十分に大きい時間が経過しても診断モードフラグ２０１がクリアされなかった場合には、その診断モードフラグ２０１を強制的にクリアする。
【００８７】
図４は、主系コンピュータ１においてＣＰＵ１１が実行する信号診断処理のメインルーチンのフローチャートの例を示した図である。
【００８８】
図４に示すように、ＣＰＵ１１は、信号診断処理を開始するに当たって、診断データレジスタ１０２をクリアしておく（ステップＳ１０）。続いて、信号診断開始コマンド送信処理を実行する（ステップＳ１１）。ここで、信号診断開始コマンド送信処理は、主系信号診断処理部１０の診断モードフラグ１０１をセットし、かつ、従系信号診断処理部２０の診断モードフラグ２０１をセットして、異常時処理用信号（主系ダウン信号、従系リセット信号、従系ダウン信号および主系リセット信号）のループバックテストが実施可能な状態を生成する処理である。
【００８９】
以下、信号診断開始コマンド送信処理（ステップＳ１１）のフローについて、詳しく説明する。ＣＰＵ１１は、まず、信号診断開始コマンドをコマンドレジスタ１４１にセットし（ステップＳ３１）、アドレスフィールドのデータなど送信フレーム生成用データを所定のレジスタに設定する（ステップＳ３２）。ただし、本実施形態では、そのようなデータはとくに必要ではないので、ダミーデータを設定する、または、その設定処理（ステップＳ３２）を省略してもよい。なお、前記したように、信号診断開始コマンドがコマンドレジスタ１４１にセットされると（ステップＳ３１）、コマンド解読部１４２によって主系信号診断処理部１０の診断モードフラグ１０１がセットされる（ステップＳ４１）。
【００９０】
次に、ＣＰＵ１１は、アクセス起動レジスタ１４３の起動ビットをセットし（ステップＳ３３）、さらに、送信ＴＯ監視部１４５の監視タイマをセットする（ステップＳ３４）。ここで、アクセス起動レジスタ１４３の起動ビットがセットされると、信号診断開始コマンドの送信フレームは、従系コンピュータ２の受信制御部２５へ送信される（ステップＳ４２）。受信制御部２５における処理については後記するが、受信制御部２５で信号診断開始コマンドが誤りなく受信された場合には、従系信号診断処理部２０の診断モードフラグ２０１がセットされ、受信制御部２５からはＡＣＫが送信される（図６参照）。
【００９１】
ここで、ＡＣＫ受信部１４６がＡＣＫを受信したときには、その旨をステータスレジスタ１４７に反映させる。そこで、ＣＰＵ１１は、そのステータスレジスタ１４７を読むことによって（ステップＳ３５）、ＡＣＫの受信を監視する（ステップＳ３６）。すなわち、ＣＰＵ１１は、ＡＣＫの受信を検知せず（ステップＳ３６でＮｏ）、かつ、所定のタイムアウトにならない場合には（ステップＳ３９でＮｏ）、ステップＳ３６を繰り返して実行する。
【００９２】
一方、ＣＰＵ１１は、ＡＣＫの受信を検知したときには（ステップＳ３６でＹｅｓ）、従系信号診断処理部２０での診断モードフラグ２０１のセットも行われたものと判断し、アクセス起動レジスタの起動ビットをクリアするとともに（ステップＳ３７）、送信ＴＯ監視部１４５の監視タイマをクリアする（ステップＳ３８）。これによって、ＣＰＵ１１は、信号診断開始コマンド送信処理を終了する。
【００９３】
なお、ステップＳ３６において、送信ＴＯ監視部１４５の監視タイマのタイムアウトとなった場合には（ステップＳ３９でＹｅｓ）、従系信号診断処理部２０での診断モードフラグ２０１のセットは行われなかったと判断して、所定のエラーコードを設定した上で、エラー処理を実行する（ステップＳ２１：図４では、丸で囲んだＥ１を経由）。
【００９４】
以上の信号診断開始コマンド送信処理（ステップＳ１１）を終えると、ＣＰＵ１１は、異常時処理用信号（主系ダウン信号、従系リセット信号、従系ダウン信号および主系リセット信号）のループバックテストを開始する。ＣＰＵ１１は、まず、診断データレジスタ１０２にテストデータを設定する（ステップＳ１２）。ここで、診断データレジスタ１０２が主系ダウン信号および従系リセット信号に対応して２ビットで構成されていた場合には、その２ビットには、主系ダウン信号および従系リセット信号を活性化するためのテストデータ「１１（２進）」が設定される。なお、診断データレジスタ１０２のループバック開始時の初期値は、「００（２進）」である（ステップＳ１０参照）。
【００９５】
図２に示したように、診断データレジスタ１０２のデータは、主系ダウン信号、従系リセット信号それぞれの正論理信号および負論理信号、ならびに、従系ダウン信号、主系リセット信号それぞれの正論理信号および負論理信号を経由して、診断結果レジスタ１０３にループバックされる。そこで、ＣＰＵ１１は、そのループバックの遅延時間よりも長い時間（例えば、１０μ秒）待ち（ステップＳ１３）、その後、診断結果レジスタ１０３からデータを読み出す（ステップＳ１４）。
【００９６】
ここで、ステップＳ１３での待ち時間がループバックの遅延時間よりも十分に長い場合には（例えば、１０μ秒は十分に長いと考えられる）、そのループバック信号は、同期化フィルタ１０６の前であっても後であっても安定しているので、診断結果レジスタ１０３は、同期化フィルタ１０６の後の信号により設定され４ビットで構成されるとする。その場合、診断データレジスタ１０２で設定した活性化信号が誤りなくループバックされたときには、診断結果レジスタ１０３には「１０１０（２進）」が設定される。
【００９７】
そこで、ＣＰＵ１１は、診断結果レジスタ１０３から読み出したデータを所定の期待値と比較し、期待値と一致した場合には（ステップＳ１５でＹｅｓ）、ループバックの経路に含まれる信号はいずれも活性化可能であると判断する。
【００９８】
さらに、ＣＰＵ１１は、ループバックの経路に含まれる活性化した信号がいずれも不活性化可能であることを確認する。すなわち、ＣＰＵ１１は、診断データレジスタ１０２をクリアし（ステップＳ１６）、所定の時間（例えば、１０μ秒）待ち（ステップＳ１７）、その後、診断結果レジスタ１０３からデータを読み出す（ステップＳ１８）。そして、そのデータを所定の期待値と比較し、期待値と一致した場合には（ステップＳ１９でＹｅｓ）、ループバックの経路に含まれる信号はいずれも不活性化可能であると判断する。
【００９９】
以上、ステップＳ１２〜Ｓ１９の処理によって、診断対象とした異常時処理用信号（主系ダウン信号、従系リセット信号、従系ダウン信号および主系リセット信号）のループバックテストが完了したことになる。そこで、ＣＰＵ１１は、信号診断完了コマンド送信処理を実行し（ステップＳ２０）、図４の信号診断処理を終了する。
【０１００】
ただし、診断結果レジスタ１０３から読み出したデータが期待値と一致しなかった場合には（ステップＳ１５およびＳ１９の各ステップでＮｏ）、診断対象とした異常時処理用信号（主系ダウン信号、従系リセット信号、従系ダウン信号および主系リセット信号）に活性化または不活性化が不可能な信号があることになるので、ＣＰＵ１１は、所定のエラー処理を実行し（ステップＳ２１）、信号診断完了コマンド送信処理を実行し（ステップＳ２０）、図４の信号診断処理を終了する。
【０１０１】
なお、信号診断完了コマンド送信処理の詳細については、別途、図５を用いて説明するが、その処理は、ＣＰＵ１１が信号診断完了コマンドをコマンドレジスタ１４１にセットする（ステップＳ４３）ことによって開始される。そして、コマンドレジスタ１４１に信号診断完了コマンドがセットされると、それを解読したコマンド解読部１４２により診断モードフラグ１０１がクリアされる（ステップＳ４４）。さらに、信号診断完了コマンドは、従系コンピュータ２の受信制御部２５へ送信され、そのコマンド解読部２５２により信号診断完了コマンドであることが解読されると、診断モードフラグ２０１がクリアされる。こうして、主系信号診断処理部１０および従系信号診断処理部２０では、ともに診断モードが解除され、異常時処理用信号がループバックされない通常の動作モードに戻る。
【０１０２】
図５は、ＣＰＵ１１が実行する信号診断処理における信号診断完了コマンド送信処理のフローチャートの例を示した図である。図５に示すように、信号診断完了コマンド送信処理のフロー構成は、図４の中に示した信号診断開始コマンド送信処理のフロー構成とほとんど同じである。
【０１０３】
すなわち、ＣＰＵ１１が信号診断完了コマンドをコマンドレジスタ１４１にセットすると（ステップＳ５１）、その後のステップＳ５２〜Ｓ５９の処理は、図４に示したステップＳ３２〜Ｓ３９の処理と同じである。そこで、ステップＳ５２〜Ｓ５９の処理の説明を省略する。
【０１０４】
なお、この信号診断開始コマンド送信処理と信号診断完了コマンド送信処理の相違は、コマンドレジスタ１４１にセットされ、従系コンピュータ２に送信されるコマンドが相違しているだけの相違に過ぎない。しかしながら、コマンド解読部１４２，２５２は、そのコマンドを異なるコマンドとして検知するので、図４の信号診断開始コマンドでは、診断モードフラグ１０１，２０１がセットされるが、図５の信号診断完了コマンドでは、診断モードフラグ１０１，２０１がクリアされることになる。
【０１０５】
図６は、従系コンピュータ２の受信制御部２５が信号診断処理コマンドを受信したときに処理する処理フローの例を示した図である。なお、この処理は、受信制御部２５内での処理であり、従系コンピュータ２のＣＰＵ２１は、この処理に関与しない。
【０１０６】
図６に示すように、受信制御部２５のデータ受信部２５１は、主系コンピュータ１から送信された受信診断開始コマンドの送信フレームを受信すると（ステップＳ７１）、受信したフレームについて、ＣＲＣなどをチェックすることにより、受信エラーの有無を判定する（ステップＳ７２）。その判定で、受信エラーがなかった場合には（ステップＳ７２でＹｅｓ）、コマンド解読部２５２により、診断モードフラグ２０１をセットするとともに（ステップＳ７３）、診断完了ＴＯ監視部２５４の監視タイマをセットし（ステップＳ７４）、さらに、ＡＣＫ送信部２５３から主系コンピュータ１の送信制御部１４へＡＣＫを送信する（ステップＳ７５）。
【０１０７】
また、ステップＳ７２の受信エラー有無の判定で、受信エラーがあった場合には（ステップＳ７２でＮｏ）、所定のエラー処理を行って（ステップＳ７６）、信号診断開始コマンド受信処理を終了する。従って、この場合には、主系コンピュータ１の送信制御部１４へＡＣＫが送信されることはない。
【０１０８】
一方、受信制御部２５のデータ受信部２５１は、主系コンピュータ１から送信された受信診断完了コマンドの送信フレームを受信すると（ステップＳ８１）、受信したフレームについて、ＣＲＣなどをチェックすることにより、受信エラーの有無を判定する（ステップＳ８２）。その判定で、受信エラーがなかった場合には（ステップＳ８２でＹｅｓ）、コマンド解読部２５２により、診断モードフラグ２０１をクリアするとともに（ステップＳ８３）、診断完了ＴＯ監視部２５４の監視タイマをクリアし（ステップＳ８４）、さらに、ＡＣＫ送信部２５３から主系コンピュータ１の送信制御部１４へＡＣＫを送信する（ステップＳ８５）。
【０１０９】
また、ステップＳ８２の受信エラー有無の判定で、受信エラーがあった場合には（ステップＳ８２でＮｏ）、所定のエラー処理を行って（ステップＳ８６）、信号診断完了コマンド受信処理を終了する。従って、この場合には、主系コンピュータ１の送信制御部１４へＡＣＫが送信されることはない。
【０１１０】
さらに、診断完了ＴＯ監視部２５４で診断完了タイムアウトが発生した場合には、診断完了ＴＯ監視部２５４は、診断モードフラグ２０１をクリアする（図示省略）。なお、診断完了ＴＯ監視部２５４での診断完了タイムアウトは、例えば、主系コンピュータ１側から従系コンピュータ２側へ、信号診断開始コマンドが送信された後、何らかの障害のために、所定のタイムアウト監視時間内に信号診断完了コマンドが送信されない、少なくとも、従系コンピュータ２が信号診断完了コマンドを受信できない場合に発生する。
【０１１１】
そのような場合には、主系信号診断処理部１０の診断モードフラグ１０１はクリアされ（主系コンピュータ１は通常動作モード）、従系信号診断処理部２０の診断モードフラグ２０１はクリアされない（従系コンピュータ２は診断モード）という中途半端な状態になる。そこで、ここでは、従系信号診断処理部２０の診断モードフラグ２０１を、診断完了ＴＯ監視部２５４でのタイムアウト監視によってクリアし、両者をともに通常動作モードに戻すことができるようにしたものである。
【０１１２】
なお、当該異常時処理用信号の診断処理（図４のステップＳ１０〜Ｓ２０の処理）に、例えば、０．１秒を要していた場合には、診断完了ＴＯ監視部２５４のタイムアウト監視時間としては、その所要時間より十分に大きい、例えば、１〜５秒程度の値を設定するとよい。
【０１１３】
以上に説明した本発明の実施形態によれば、主系コンピュータ１のＣＰＵ１１は、主系コンピュータ１および従系コンピュータ２をつなぐ異常時処理用信号（主系ダウン信号、従系リセット信号、従系ダウン信号および主系リセット信号）についてのループバックテストを行うことができ、さらに、そのループバックテストによって、前記の異常時処理用信号について、それぞれの信号が活性化可能であるか否かを診断する信号診断処理を実現することができる。そして、この信号診断処理の特徴は、診断専用の通信路（通信線）をとくに必要としないことであり、また、主系コンピュータ１のＣＰＵ１１の主体的な制御の下に、いつでも診断処理を行うことができる点にある。従って、本実施形態は、様々な形態の二重化コンピュータシステムへの適用が容易といえる。
【０１１４】
なお、図１を用いて説明したように、主系コンピュータ１および従系コンピュータ２は、基本的には、互いに同形で対称になるように構成されている。しかしながら、主系信号診断処理部１０と従系信号診断処理部２０の構成は、必ずしも対称形にはなっていない。これは、主系コンピュータ１のＣＰＵ１１の制御の下に、異常時処理用信号の信号診断処理が実行されることを前提とした構成である。そのため、本実施形態においては、通常の二重化コンピュータにおける主系コンピュータと従系コンピュータとの関係のように、その主系／従系の役割を任意に変えることはできない。
【０１１５】
従って、通常の二重化コンピュータシステムでいう主系（例えば、実行系）および従系（例えば、待機系）の関係が障害の回復処理によって入れ替わったとしても、本実施形態でいう主系コンピュータ１および従系コンピュータ２の関係は変わらない。本実施形態では、あくまでも、図２に示した主系信号診断処理部１０を有するコンピュータが主系コンピュータ１であり、従系信号診断処理部２０を有するコンピュータが従系コンピュータ２である。すなわち、本実施形態では、通常の二重化コンピュータシステムでいう従系（例えば、待機系）コンピュータが、本実施形態でいう主系コンピュータ１になって、異常時処理用信号の信号診断処理を主導して行うことがあり得ることになる。
【０１１６】
なお、図示して説明することを省略するが、図２の主系信号診断処理部１０および従系信号診断処理部２０を互いに対称になるように構成することは可能である。ただし、その場合には、やや回路規模が大きくなることは避けられない。
【符号の説明】
【０１１７】
１      主系コンピュータ
２      従系コンピュータ
１０    主系信号診断処理部
２０    従系信号診断処理部
１１，２１      ＣＰＵ
１２，２２      メインメモリ
１３，２３      ＤＭＡ制御部
１４，２４      送信制御部
１５，２５      受信制御部
１６，２６      異常検知フラグ
１７，２７      Ｒ要求フラグ（リセット要求フラグ）
３１，３２      通信バス
１０１，２０１  診断モードフラグ
１０２          診断データレジスタ
１０３          診断結果レジスタ
１０４，２０２  セレクタ
１０５，２０３  インバータ
１０６，２０４  同期化フィルタ
１０７，２０５  ＯＲゲート
１０８，２０６  ＡＮＤゲート
１０９，２０７  マスクゲート
１４１  コマンドレジスタ
１４２  コマンド解読部
１４３  アクセス起動レジスタ
１４４  データ送信部
１４５  送信ＴＯ監視部
１４６  ＡＣＫ受信部
１４７  ステータスレジスタ
２５１  データ受信部
２５２  コマンド解読部
２５３  ＡＣＫ送信部
２５４  診断完了ＴＯ監視部
【図１】
0005449906.tif 000002
【図２】
0005449906.tif 000003
【図３】
0005449906.tif 000004
【図４】
0005449906.tif 000005
【図５】
0005449906.tif 000006
【図６】
0005449906.tif 000007