(57)【要約】【課題】　一定範囲のプロセッサの同期外れを許容することができるフォールトトレラントコンピュータ及びトランザクション同期制御プログラムを提案する。【解決手段】　複数のＣＰＵモジュール２０、３０で、同じ命令列をクロック同期させて処理するロックステップ方式のフォールトトレラントコンピュータ１０であって、複数のＣＰＵモジュール２０、３０から発行されるＩＯトランザクションについて、ＩＯモジュール５０、６０のデバイスコントローラ毎に、一定の時間内において互いの一致をチェックし、一致が得られたＩＯトランザクションを同期外れではないとみなす。【選択図】　　図１
2004110803.tif 000002
【特許請求の範囲】
【請求項１】
同じ命令列をクロック同期して処理する複数のＣＰＵモジュールと、
　デバイスに対し入出力制御処理を実行する複数のデバイスコントローラを備えた複数のＩＯモジュールと、
前記デバイスコントローラ毎に、前記複数のＣＰＵモジュールの各々から発行されるＩＯトランザクションのシーケンスの一致をチェックし、一致が得られた場合は同期外れではないとみなすトランザクション同期制御部と、
　を有することを特徴とするフォールトトレラントコンピュータ。
【請求項２】
前記トランザクション同期制御部は、一定時間を計るタイマ手段と、
前記デバイスコントローラ毎に、複数のＣＰＵモジュールから発行される前記ＩＯトランザクションのシーケンスの一致を、前記一定時間待ち合せて判別する比較手段と、
を有することを特徴とする請求項１に記載のフォールトトレラントコンピュータ。
【請求項３】
前記トランザクション同期制御部は、前記シーケンスの一致が得られたタイミングで、前記ＩＯトランザクションを前記デバイスコントローラに出力する出力制御部を有することを特徴とする請求項２に記載のフォールトトレラントコンピュータ。
【請求項４】
前記出力制御部は、各ＣＰＵモジュールからのＩＯトランザクションの一致が得られたタイミングで、一致が得られたＩＯトランザクションを１つづつ、前記デバイスコントローラに出力することを特徴とする請求項３に記載のフォールトトレラントコンピュータ。
【請求項５】
前記出力制御部は、一定時間内にシーケンスの一致が得られない場合、あるいはＩＯトランザクションのシーケンスが互いに相違している場合に、障害の通知を出力することを特徴とする請求項２から請求項４の何れかに記載のフォールトトレラントコンピュータ。
【請求項６】
前記トランザクション同期制御部は、
　前記複数のＣＰＵモジュールから発行される前記ＩＯトランザクションを格納する複数の格納手段を備えることを特徴とする請求項２から請求項５の何れか１項に記載のフォールトトレラントコンピュータ。
【請求項７】
前記トランザクション同期制御部は、
　前記比較手段に入力するＩＯトランザクションを前記複数の格納手段から入力するか、前記ＣＰＵモジュールから入力するかを選択する選択回路を備えることを特徴とする請求項２から請求項５の何れか１項に記載のフォールトトレラントコンピュータ。
【請求項８】
同じ命令列をクロック同期して処理する複数のＣＰＵモジュールからＩＯモジュールへの複数かつ同一のＩＯトランザクションを入力する第１のステップと、
入力されたＩＯトランザクションについて、前記ＩＯモジュールに備えられた複数のデバイスコントローラ毎にシーケンスの一致をチェックし、一致が得られた場合、同期外れではないとみなす第２のステップとを有することを特徴とするフォールトトレラントコンピュータのトランザクション同期制御方法。
【請求項９】
前記第２のステップは、互いのＩＯトランザクションのシーケンスの一致を、一定時間待ち合せて判別することを特徴とする請求項８に記載のフォールトトレラントコンピュータのトランザクション同期制御方法。
【請求項１０】
シーケンスの一致が得られたタイミングで、前記ＩＯトランザクションを前記デバイスコントローラに出力する第３のステップをさらに有することを特徴とする請求項９に記載のフォールトトレラントコンピュータのトランザクション同期制御方法。
【請求項１１】
前記第１のステップは、前記複数のＣＰＵモジュールから発行される前記ＩＯトランザクションをデバイスコントローラ毎に複数の格納手段に格納し、
前記第２のステップは、各ＣＰＵモジュールから入力されたＩＯトランザクションを比較手段に入力してＩＯトランザクションを比較し、一致しなかった場合、一定時間経過しているか判定し一定時間経過していない場合は同期外れではないとみなす、
ことを特徴とする請求項９に記載のフォールトトレラントコンピュータのトランザクション同期制御方法。
【請求項１２】
入力されたＩＯトランザクションの一致が得られたタイミングで、一致が得られたＩＯトランザクションを１つづつ、前記デバイスコントローラに出力することを特徴とする請求項１１に記載のフォールトトレラントコンピュータのトランザクション同期制御方法。
【請求項１３】
一定時間内にシーケンスの一致が得られない場合、障害の通知を出力するステップをさらに有することを特徴とする請求項９から請求項１２の何れかに記載のフォールトトレラントコンピュータのトランザクション同期制御方法。
【請求項１４】
新たなＩＯトランザクションを比較手段に入力するとき、前記複数の格納手段から入力するか、前記ＣＰＵモジュールから入力するかを選択するステップを有することを特徴とする請求項１１から請求項１３の何れか１項に記載のフォールトトレラントコンピュータのトランザクション同期制御方法。
【請求項１５】
前記複数の格納手段から入力するか、前記ＣＰＵモジュールから入力するかを選択するステップは、格納手段に有効なデータが格納されていない場合にはＣＰＵモジュールからの入力に切り替えることを特徴とする請求項１４に記載のフォールトトレラントコンピュータのトランザクション同期制御方法。
【請求項１６】
複数のＣＰＵモジュールで、同じ命令列をクロック同期させて処理するフォールトトレラントコンピュータにおいて実行され、
　複数のＣＰＵモジュールからＩＯモジュールへの複数かつ同一のＩＯトランザクションを入力する第１の処理と、入力されたＩＯトランザクションについて、前記ＩＯモジュールに備えられた複数のデバイスコントローラ毎にシーケンスの一致をチェックし、一致が得られた場合、同期外れではないとみなす第２の処理を行うことを特徴とするフォールトトレラントコンピュータのトランザクション同期制御プログラム。
【請求項１７】
前記第２の処理は、互いのＩＯトランザクションのシーケンスの一致を、一定時間待ち合せて判別することを特徴とする請求項１６に記載のフォールトトレラントコンピュータのトランザクション同期制御プログラム。
【請求項１８】
シーケンスの一致が得られたタイミングで、前記ＩＯトランザクションを前記デバイスコントローラに出力する第３の処理を実行することを特徴とする請求項１７に記載のフォールトトレラントコンピュータのトランザクション同期制御プログラム。
【請求項１９】
一定時間内にシーケンスの一致が得られない場合、あるいはＩＯトランザクションのシーケンスが互いに相違している場合に、障害の通知を出力する処理を実行することを特徴とする請求項１６から請求項１８の何れかに記載のフォールトトレラントコンピュータのトランザクション同期制御プログラム。
【請求項２０】
前記第１の処理は、前記複数のＣＰＵモジュールから発行される前記ＩＯトランザクションをデバイスコントローラ毎に複数の格納手段に格納する処理を有し、前記第２の処理は、各ＣＰＵモジュールから入力された前記ＩＯトランザクションを比較手段に入力してＩＯトランザクションを比較する処理と、一致しなかった場合、前記一定時間の経過を経過しているか判定し一定時間経過していない場合は同期外れではないとみなす処理とを実行することを特徴とする請求項１７から請求項１９の何れか１項に記載のフォールトトレラントコンピュータのトランザクション同期制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
　本発明は、複数のＣＰＵモジュールで、同じ命令列をクロック同期させて全く同じに処理するロックステップ方式のフォールトトレラントコンピュータ（fault tolerant computer）に関し、特に、複数のＣＰＵモジュールからＩＯモジュールに対して発行されるＩＯトランザクションの時間的なずれを許容するフォールトトレラントコンピュータ、そのトランザクション同期制御方法及びトランザクション同期制御プログラムに関する。
【背景技術】
【０００２】
　従来のハードウェアを多重化し同一クロックで同期するフォールトトレラントコンピュータは、複数のＣＰＵモジュールと複数のＩＯモジュールを有し、各ＩＯモジュールは複数のＣＰＵモジュールの動作が同期しているかどうかをチェックする比較装置をそれぞれ有しており、同時にＩＯトランザクションを入力した場合にＣＰＵモジュールが同期していると判断してＩＯ処理を行い、各ＣＰＵモジュールが故障しない限り同期していることを保証していた。
【０００３】
　しかし、近年のプロセッサの高速化に伴い、各ＣＰＵモジュールに搭載されるプロセッサは、同一のクロックを入力しても完全に同期しない同期外れが発生し、これにより各ＩＯモジュールで複数のＣＰＵモジュールから発行されるＩＯトランザクション相互に時間的な差分が発生する場合がある。
【０００４】
　このようなＣＰＵモジュールの障害に起因しない同期外れの現象に関しては、ＣＰＵモジュールでのハードウェア動作に差異があるものの、プログラム上は同じ動作がなされていることが分かっている。しかし、従来のフォールトトレラントコンピュータでは、障害が原因の同期外れでないにも関わらず、ＣＰＵモジュールの縮退状態や再組み込みの動作が発生してしまうことがある。
【０００５】
　上述したように、従来のフォールトトレラントコンピュータでは、各ＣＰＵモジュールの同期外れにより、各ＩＯモジュールで複数のＣＰＵモジュールから発行されるＩＯトランザクション相互に時間的な差分が発生した場合、障害が原因の同期外れでないにも関わらず、ＣＰＵモジュールの縮退状態や再組み込みの動作が発生してしまうという問題があった。このことは、またフォールトトレラントコンピュータのMTBF（Mean Time Between Failure：コンピュータシステムが故障してから次に故障するまでの平均時間）を小さくする原因となり、フォールトトレラントコンピュータ本来の利点が損なわれてしまう結果ともなる。
【０００６】
　なお、運用系プロセッサと待機系プロセッサ間で、プロセッサ間のバスのデータ転送開始及び終了の信号を用いて、待機系プロセッサの処理の遅れを待つことにより、短時間で両者の同期をとるといった（例えば、特許文献１参照）、複数のプロセッサ間の同期外れを解決するための従来技術については種々提案されているが、何れもＩＯコントローラ毎のＩＯトランザクションの時間的なずれを許容することを特徴とする本発明とは相違する。
【０００７】
【特許文献１】特開平１１−３３８８３２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
　本発明の課題は、時間的にずれてＩＯトランザクションが発行されても、論理的なシーケンスの一致が得られれば障害が原因の同期外れではないとみなすことにより、障害が原因の同期外れでないにも関わらずＣＰＵモジュールの縮退や再組み込み動作が発生してしまうのを極力抑え、一定範囲のプロセッサの同期外れを許容することができるフォールトトレラントコンピュータ及びトランザクション同期制御方法を提案することにある。
【課題を解決するための手段】
【０００９】
　本発明のフォールトトレラントコンピュータは、同じ命令列をクロック同期して処理する複数のＣＰＵモジュールと、デバイスに対し入出力制御処理を実行する複数のデバイスコントローラを備えた複数のＩＯモジュールと、前記デバイスコントローラ毎に、前記複数のＣＰＵモジュールの各々から発行されるＩＯトランザクションのシーケンスの一致をチェックし、一致が得られた場合は同期外れではないとみなすトランザクション同期制御部と、を有することを特徴とする。
【００１０】
　請求項２の本発明のフォールトトレラントコンピュータは、前記トランザクション同期制御部が、一定時間を計るタイマ手段と、前記デバイスコントローラ毎に、複数のＣＰＵモジュールから発行される前記ＩＯトランザクションのシーケンスの一致を、前記一定時間待ち合せて判別する比較手段と、を有することを特徴とする。
【００１１】
　請求項３の本発明のフォールトトレラントコンピュータは、前記トランザクション同期制御部が、前記シーケンスの一致が得られたタイミングで、前記ＩＯトランザクションを前記デバイスコントローラに出力する出力制御部を有することを特徴とする。
【００１２】
　請求項４の本発明のフォールトトレラントコンピュータは、前記出力制御部が、各ＣＰＵモジュールからのＩＯトランザクションの一致が得られたタイミングで、一致が得られたＩＯトランザクションを１つづつ、前記デバイスコントローラに出力することを特徴とする。
【００１３】
　請求項５の本発明のフォールトトレラントコンピュータは、前記トランザクション同期制御部は、前記複数のＣＰＵモジュールから発行される前記ＩＯトランザクションを格納する複数の格納手段と、該格納手段に格納された前記ＩＯトランザクションのシーケンスを互いに比較する比較手段と、前記一定時間を計るタイマ手段とを備えることを特徴とする。
【００１４】
　請求項６の本発明によるフォールトトレラントコンピュータは、前記トランザクション同期制御部が、前記複数のＣＰＵモジュールから発行される前記ＩＯトランザクションを格納する複数の格納手段を備えることを特徴とする。
【００１５】
　請求項７の本発明によるフォールトトレラントコンピュータは、前記トランザクション同期制御部が、前記比較手段に入力するＩＯトランザクションを前記複数の格納手段から入力するか、前記ＣＰＵモジュールから入力するかを選択する選択回路を備えることを特徴とする。
【発明の効果】
【００１６】
　本発明によれば、複数のＣＰＵモジュールのプロセッサに同期外れが発生しＩＯモジュールのＩＯコントローラに対して同じタイミングでＩＯトランザクションが発行されなくても、ＩＯコントローラ毎にＩＯトランザクションのシーケンス一致をチェックし、一定時間内にシーケンスの一致が得られれば障害が原因の同期外れではないとみなして、ＩＯトランザクションをＩＯコントローラに出力するようにしたので、障害が原因の同期外れでないにも関わらずＣＰＵモジュールの縮退や再組み込み動作が発生してしまうのを極力抑え一定範囲のプロセッサの同期外れを許容することができる。
【発明を実施するための最良の形態】
【００１７】
　以下、本発明の実施の形態について図面を参照して詳細に説明する。図１は、本発明の実施の形態によるフォールトトレラントコンピュータの構成を示すブロック図である。
【００１８】
　図１を参照すると、本実施の形態によるフォールトトレラントコンピュータ１０は、複数のＣＰＵモジュール２０、３０を備えている。各ＣＰＵモジュール２０、３０はそれぞれクロック同期して同じ命令列を処理する。本実施の形態によるフォールトトレラントコンピュータ１０は、各ＣＰＵモジュールの処理結果を比較し、１個のＣＰＵモジュールで故障が発生しても、残りのＣＰＵモジュールにより処理を継続することができるようになっている。このＣＰＵモジュール２０、３０は、それぞれ１以上のプロセッサと、プロセッサ外部バスと、メモリを有している。なお、図１には、本実施の形態の特徴的な構成のみを記載し、他の一般的な構成については記載を省略してある。
【００１９】
　また、フォールトトレラントコンピュータ１０は、第１のＩＯモジュール５０と第２のＩＯモジュール６０を備えている。第１のＩＯモジュール５０と第２のＩＯモジュール６０がそれぞれ上記ＣＰＵモジュール２０、３０の双方に接続されている。
【００２０】
　この第１及び第２のＣＰＵモジュール２０、３０は、互いに同じクロックで動作し、第１及び第２のＩＯモジュール５０、６０に対してそれぞれＩＯトランザクションの発行を行なう。
【００２１】
　第１及び第２のＩＯモジュール５０、６０は、それぞれ２つのＩＯコントローラ５２Ａ、５２Ｂと６２Ａ、６２Ｂを備えている。また本実施形態の第１及び第２のＩＯモジュール５０、６０は、ＩＯコントローラ毎にトランザクション同期制御部５１Ａ、５１Ｂと６１Ａ、６１Ｂを備えて構成される。
【００２２】
　ＩＯコントローラ５２Ａ、５２Ｂと６２Ａ、６２Ｂには、例えばネットワークコントローラやディスクコントローラ等を含むデバイスが接続される。ＩＯコントローラ５２Ａ、５２Ｂと６２Ａ、６２Ｂは、これらのデバイスに対してＩＯトランザクションに従って入出力制御処理を実行する。
【００２３】
　トランザクション同期制御部５１Ａ、５１Ｂ、６１Ａ、６１Ｂは、第１及び第２のＣＰＵモジュール２０、３０からのＩＯトランザクションについて、そのシーケンスが一致しているかどうかを、対応するＩＯコントローラ毎にチェックする。ここでシーケンスとは、ＩＯトランザクションの複数まとまった一連の動作を意味している。本実施形態のトランザクション同期制御部５１Ａ、５１Ｂ、６１Ａ、６１Ｂは、時間的にずれが発生しても同じＩＯトランザクションが異なるタイミングで入力される場合を許容する。すなわち、ＩＯトランザクションが異なるタイミングで入力されても予め設定した一定時間だけ待ち合わせ、一定時間内に入力されたＩＯトランザクションが一致すればシーケンスが一致したものとみなす。なお、一定時間内に一方のＣＰＵモジュールからしかＩＯトランザクションが入力されなければ、一致しないとみなす。また、同じＩＯトランザクションが入力されているが、入力された順序が異なる場合も一致しないとみなす。トランザクション同期制御部５１Ａ、５１Ｂ、６１Ａ、６１Ｂは、シーケンスが一致したタイミングでＩＯトランザクションをデバイスに対応したＩＯコントローラ５２Ａ、５２Ｂ、６２Ａ、６２Ｂに対して出力する。
【００２４】
　図４に、トランザクション同期制御部５１Ａの構成例を示す。ここでは、便宜上トランザクション同期制御部５１Ａについて示しているが、その他のトランザクション同期制御部についても全く同じ構成である。
【００２５】
　図示のように、トランザクション同期制御部５１Ａは、第１のＣＰＵモジュール２０と第２のＣＰＵモジュール３０からＩＯコントローラ５２Ａに対して発行されたＩＯトランザクションをそれぞれ格納する第１のトランザクション格納手段８１−１及び第２のトランザクション格納手段８１−２と、第１及び第２のトランザクション格納手段８１−１、８１−２双方のＩＯトランザクションのシーケンスの一致を比較して判別する比較手段８２と、一定時間の経過を計るタイマ手段８３と、比較手段８２によるＩＯトランザクションのシーケンスの一致が得られたタイミングでＩＯトランザクションをＩＯコントローラに対して出力する出力制御手段８４を有する。出力制御手段８４は、タイマ手段８３による一定時間経過してもＩＯトランザクションのシーケンスの一致が得られない場合には、障害監視部等に障害を通知する。なお、タイマ手段８３により待ち合わせのために設定される時間は、例えば、ＰＣＩ−ＢＵＳのＩＯのハードウェアシーケンスの１０回分程度、長くて１００〜１０００回分程度に設定される。例えば１回分が約１μ秒程度であれば、１０μ秒程度、長くて１００μ秒から１ｍ秒程度である。
【００２６】
　なお、図４に示したトランザクション同期制御部の構成例については、あくまでその一構成例を示すものであり、図示の構成に限定されるものではない。
【００２７】
　図５は、トランザクション同期制御部の動作内容を説明するフローチャートである。まず、第１のＣＰＵモジュール２０と第２のＣＰＵモジュール３０からデバイスの宛先を示すコマンドを含むＩＯトランザクションを入力しこのコマンドを見て自分のＩＯトランザクションかどうか判断し必要なものだけそれぞれ対応するトランザクション格納手段に格納し（ステップ５０１）、第１及び第２のＣＰＵモジュールのＩＯトランザクションのシーケンスが互いに一致するかどうかを判別する（ステップ５０２）。ここで、トランザクション格納手段からそれぞれ格納された順に１つずつＩＯトランザクションが比較手段８２に入力され比較され、対応するＩＯトランザクションが一致すると、トランザクション格納手段に格納された次の対応するＩＯトランザクション同士が比較手段８２に入力され比較されるという処理が繰り返される。
【００２８】
　すべてのＩＯトランザクションが一致すればシーケンスが一致しているとみなし、入力したＩＯトランザクションをＩＯコントローラへ出力する（ステップ５０３）。
【００２９】
　ステップ５０２において一方のＣＰＵモジュールからしかＩＯトランザクションが届いておらずＩＯトランザクションのシーケンスが一致していない場合には、一方のＣＰＵモジュールからＩＯトランザクションが届いてから一定時間が経過しているかを判別する（ステップ５０４）。一定時間が経過していなければＩＯトランザクションの入力を待ち合せる。すなわちステップ５０１にもどり入力されたＩＯトランザクションのシーケンスを再度比較する処理を一定時間が経過するまで繰り返す。一定時間が経過していれば、フォールトトレラントコンピュータ内に備えられている障害監視部等に障害の発生を通知する。一定時間が経過する前に他方のＣＰＵモジュールからＩＯトランザクションが届き、シーケンスが一致すればステップ５０３で入力したＩＯトランザクションをＩＯコントローラへ出力する。なお、ステップ５０２において両方のＣＰＵモジュールからＩＯトランザクションが届いているが届いたシーケンスが一致していない場合、ステップ５０４，５０１，５０２を繰り返し、一定時間経過後に障害監視部等に障害の発生を通知することになる。
【００３０】
　次いで、図１、図２、図３を参照して、第１及び第２のＣＰＵモジュール２０、３０からどのようにＩＯトランザクションが発行され、第１及び第２のＩＯモジュール５０、６０でどのように一致チェックが行なわれ、ＩＯトランザクションが処理されるかについて具体例をあげて説明する。
【００３１】
　ここで、プロセッサ同期外れの場合、第１のＣＰＵモジュール２０から第１のＩＯモジュール５０へのＩＯトランザクションが、ＩＯトランザクション（ＩＯ−Ａ１）、ＩＯトランザクション（ＩＯ−Ｂ１）、ＩＯトランザクション（ＩＯ−Ａ２）、ＩＯトランザクション（ＩＯ−Ｂ２）の順で発行されたとする。
【００３２】
　なお、ＩＯトランザクション（ＩＯ−Ａ１）、（ＩＯ−Ａ２）はＩＯコントローラ５２Ａに対して発行され、ＩＯトランザクション（ＩＯ−Ｂ１）、（ＩＯ−Ｂ２）はＩＯコントローラ５２Ｂに対して発行されるＩＯトランザクションであるとする。
【００３３】
　一方、第２のＣＰＵモジュール３０から第１のＩＯモジュール５０へのＩＯトランザクションについては、ＩＯトランザクション（ＩＯ−Ａ１）、ＩＯトランザクション（ＩＯ−Ａ２）、ＩＯトランザクション（ＩＯ−Ｂ１）、ＩＯトランザクション（ＩＯ−Ｂ２）の順番で発行されたとする。
【００３４】
　このＩＯトランザクションの順番を比較すると、図２に示すように、第１及び第２のＣＰＵモジュール２０、３０から第１及び第２のＩＯモジュール５０、６０に対して発行されるＩＯトランザクションの中で、ＩＯトランザクション（ＩＯ−Ｂ１）と（ＩＯ−Ａ２）の順番が互いに逆となり、２つのＩＯトランザクションが不一致となっていることが分かる。
【００３５】
　第１のＩＯモジュール５０は、通常は同じタイミングでＩＯトランザクションに差分があるため、通常であればどちらかのＣＰＵモジュールを縮退もしくは再組み込みする動作が行われる状況であっても、ＩＯコントローラ毎にＩＯトランザクションのシーケンス（順序）をチェックするためのトランザクション同期制御部５１Ａ、５１Ｂを備えることで、タイミングがずれても同じＩＯトランザクションと認識して処理を継続する。
【００３６】
　例えば、ＩＯコントローラ５２Ａに対するＩＯトランザクションをＩＯ−Ａｘとし、ＩＯコントローラ５２Ｂに対するＩＯトランザクションをＩＯ−Ｂｘとすると、図３に示すように、トランザクション同期制御部５１Ａで見ると、第１及び第２のＣＰＵモジュールから発行されるＩＯトランザクションは（ＩＯ−Ａ１）−（ＩＯ−Ａ２）となって共に一致し、トランザクション同期制御部５１Ｂで見ても第１及び第２のＣＰＵモジュールから発行されるＩＯトランザクションは（ＩＯ−Ｂ１）−（ＩＯ−Ｂ２）で一致する。
【００３７】
　このときトランザクション同期制御部５１Ａ、５１Ｂは、第１のＣＰＵモジュール２０と第２のＣＰＵモジュール３０とのＩＯトランザクションの時間的差分が発生する可能性が高いため、ＩＯコントローラ毎にシーケンスの一致をチェックするのみでＩＯトランザクションの時間的な一致については判断していない。すなわち、トランザクション同期制御部５１Ａ、５１Ｂは、それぞれ第１のＣＰＵモジュール２０と第２のＣＰＵモジュール３０からの同じＩＯトランザクションが到着するまで一定時間待ち合わせした後にＩＯコントローラ５２Ａ及び５２Ｂに対してＩＯトランザクションを出力する。
【００３８】
　ＩＯコントローラ５２Ａに着目すれば、まず最初のタイミングで第１のＣＰＵモジュール２０と第２のＣＰＵモジュール３０からの同じＩＯトランザクション（ＩＯ−Ａ１）が発行され、次のタイミングでは第２のＣＰＵモジュール３０からの（ＩＯ−Ａ２）は届くが、第１のＣＰＵモジュール２０からのＩＯトランザクション（ＩＯ−Ａ２）が届かない。ＩＯコントローラ５２Ａに対応するトランザクション同期制御部５１Ａは、第１のＣＰＵモジュール２０からのＩＯトランザクション（ＩＯ−Ａ２）が受け取るまで一定時間待合せ（ＩＯトランザクション（ＩＯ−Ａ１）、（ＩＯ−Ａ２）を出力せずに保持し）、さらに次のタイミングで第１のＣＰＵモジュール２０からのＩＯトランザクション（ＩＯ−Ａ２）が届くと、ＩＯトランザクションのシーケンスが一致したことを判別し、それらのＩＯトランザクション（ＩＯ−Ａ１）、（ＩＯ−Ａ２）を、ＩＯコントローラ５２Ａに対して出力する。
【００３９】
　なお、トランザクション同期制御部５１Ａ、５１Ｂ、６１Ａ、６１Ｂによる比較の結果、ＩＯコントローラに対する第１、第２のＣＰＵモジュール２０、３０からのＩＯトランザクションのシーケンスが互いに相違している場合には、フォールトトレラントコンピュータ内に備えられている障害監視部等に障害の発生を通知するようにしてもよい。
【００４０】
　本発明のフォールトトレラントコンピュータでは、トランザクション同期制御部が実行する各手段の機能をハードウェア的に実現することは勿論として、上記した各手段の機能を実行するトランザクション制御プログラム１００をＩＯコントローラ等のプロセッサ（ＣＰＵ）にロードして実行することにより、ソフトウェア的に実現することができる。このトランザクション制御プログラム１００は、磁気ディスク、半導体メモリその他の記録媒体に格納され、その記録媒体からＣＰＵのメモリにロードされ、ＣＰＵで実行されることにより、上述した各機能を実現する。
【００４１】
　次に、本発明のトランザクション同期制御部の変形例について説明する。上述の例では第１のＣＰＵモジュール２０と第２のＣＰＵモジュール３０からの同じＩＯトランザクション（ＩＯ−Ａ１）が発行されても、第２のＣＰＵモジュール３０からの（ＩＯ−Ａ２）は届いて第１のＣＰＵモジュール２０からのＩＯトランザクション（ＩＯ−Ａ２）が届かない状態ではＩＯトランザクション（ＩＯ−Ａ１）、（ＩＯ−Ａ２）を出力せずに保持するものであったが、本変形例においては、１つのＩＯトランザクションについて２つのＣＰＵモジュール間で一致した場合は即座にそのＩＯトランザクションをＩＯコントローラに対して出力する点で図５の例と異なる。
【００４２】
　図６は、本変形例のトランザクション同期制御部の動作例を説明するフローチャートである。まず、第１のＣＰＵモジュール２０と第２のＣＰＵモジュール３０からのＩＯトランザクションを入力しそれぞれ対応するトランザクション格納手段に格納し（ステップ６０１）、各トランザクション格納手段に最も早く格納されたＩＯトランザクションが比較手段８２に入力される（ステップ６０２）。このとき有効なＩＯトランザクションが格納されていなければ、そのトランザクション格納手段から比較手段にＩＯトランザクションは入力されない。
各トランザクション格納手段から多くて１つ入力されたＩＯトランザクションは、比較手段８２にて比較される（ステップ６０３）。比較の結果ＩＯトランザクションが一致していれば、即座に一致したＩＯトランザクションをＩＯコントローラへ出力する（ステップ６０４）。このとき、出力したＩＯトランザクションは両方のトランザクション格納手段から消去される。最後のＩＯトランザクションか判断し（ステップ６０５）、最後でなければステップ６０２にもどり、次のＩＯトランザクションが比較手段８２に入力されて比較される。
【００４３】
　ステップ６０３において一致しない場合、例えば、一方のＣＰＵモジュールからしかＩＯトランザクションが届いておらずＩＯトランザクションのシーケンスが一致していない場合には、一方のＣＰＵモジュールからＩＯトランザクションが届いてから一定時間が経過しているかを判別する（ステップ６０６）。
一定時間が経過していなければステップ６０１にもどりＣＰＵモジュールからＩＯトランザクションが新たに届いていれば対応するトランザクション格納手段に格納し、新たに各トランザクション格納手段に最も早く格納されたＩＯトランザクションを再度比較する処理を一定時間が経過するまで繰り返す。ステップ６０６において一定時間が経過していれば、フォールトトレラントコンピュータ内に備えられている障害監視部等に障害の発生を通知する。
【００４４】
　一定時間が経過する前に他方のＣＰＵモジュールからＩＯトランザクションが届き、一致すればステップ６０３で一致となり、ステップ６０４において、一致したＩＯトランザクションをＩＯコントローラへ出力する。なお、ステップ６０３において両方のＣＰＵモジュールからＩＯトランザクションが届いているが届いたシーケンスが一致していない場合、ステップ６０６，６０１，６０２を繰り返し、一定時間経過後に障害監視部等に障害の発生を通知することになる。
【００４５】
　なお、トランザクション同期制御部は、複数のタイマ手段を備え、第１及び第２のトランザクション格納手段は複数のＩＯトランザクションを格納可能な容量とし、他方のＣＰＵモジュールから入力される前に続けて同じＣＰＵモジュールからＩＯトランザクションが入力された場合その入力を受け付け、複数のＩＯトランザクションを待ち合わせることができるよう構成してもよい。
【００４６】
　他方のＣＰＵモジュールからの入力を待ち合わせている間に続けて同じＣＰＵモジュールからのＩＯトランザクション入力された場合には、すでにスタートしているタイマ手段とは別のタイマ手段をスタートし、今回入力されたＩＯトランザクションを、すでに以前に受信したＩＯトランザクションが格納されたアドレスとは別のアドレスに格納する。これにより複数のトランザクションを待ち合わせて各ＣＰＵモジュールからのＩＯトランザクションの一致を判断することができる。
【００４７】
　本変形例に図２，３に示すＩＯトランザクションのシーケンスが入力された場合の動作について説明する。まず第１のＣＰＵモジュール２０と第２のＣＰＵモジュール３０からの同じＩＯトランザクション（ＩＯ−Ａ１）が発行されると、このタイミングでＩＯトランザクションを比較し、一致したことを判別すると、ＩＯトランザクション（ＩＯ−Ａ１）を、ＩＯコントローラ５２Ａに対して出力する。次のタイミングでは第２のＣＰＵモジュール３０からの（ＩＯ−Ａ２）は届くが、第１のＣＰＵモジュール２０からのＩＯトランザクション（ＩＯ−Ａ２）が届かない。
【００４８】
　ＩＯコントローラ５２Ａに対応するトランザクション同期制御部５１Ａは、第２のＣＰＵモジュール３０からの（ＩＯ−Ａ２）を第２のトランザクション格納手段８１−２に格納し、第１のＣＰＵモジュール２０からのＩＯトランザクション（ＩＯ−Ａ２）を受け取るまで一定時間待ち合せ、第１のＣＰＵモジュール２０からのＩＯトランザクション（ＩＯ−Ａ２）が届くと、このタイミングで第１のＣＰＵモジュール２０からのＩＯトランザクションと、第２のトランザクション格納手段８１−２に格納されていたＩＯトランザクションとを比較し、一致したことを判別すると、ＩＯトランザクション（ＩＯ−Ａ２）を、ＩＯコントローラ５２Ａに対して出力する。
【００４９】
　次に、本発明のトランザクション同期制御部の他の変形例について説明する。図７は、本発明のトランザクション同期制御部の他の変形例の構成を示すブロック図である。本変形例では、比較手段１８２に第１及び第２のＣＰＵモジュール２０，３０が直接接続されるとともに、第１及び第２のＣＰＵモジュール２０，３０と、第１及び第２のトランザクション格納手段１８１−１，１８１−２のどちらからＩＯトランザクションを入力するか選択する第１及び第２の選択回路１８５−１，１８５−２を備えている。
【００５０】
　図８は、図７の動作例を説明するフローチャートである。まず、新たなＩＯトランザクションを比較手段に入力するとき、各トランザクション格納手段に、有効なデータが格納されているか判断する（ステップ８０１）。有効なデータが格納されている場合、対応する選択回路をトランザクション格納手段側に切り替える（ステップ８０２）。有効なデータが格納されていない場合、選択回路をＣＰＵモジュール側とする（ステップ８０２）。したがって、格納手段に未処理のＩＯトランザクションが格納されておらず、同時にＣＰＵモジュールからＩＯトランザクションが入力されるような通常の状態ではＩＯトランザクションは格納手段に格納することなく、比較手段１８２に直接入力される。
【００５１】
　そしてＩＯトランザクションのシーケンスが互いに一致するかどうかが判別される（ステップ８０４）。比較手段１８２に入力されたＩＯトランザクションが一致していれば、一致したＩＯトランザクションをＩＯコントローラへ出力する（ステップ８０５）。
【００５２】
　ステップ８０４において一致しなかった場合、一方のＣＰＵモジュールからしかＩＯトランザクションが届いておらず、そのＩＯトランザクションがトランザクション格納手段に格納されていない場合は格納する（ステップ８０６）。ＩＯトランザクションのシーケンスが一致していない場合には、一方のＣＰＵモジュールからＩＯトランザクションが届いてから一定時間が経過しているかを判別する（ステップ８０７）。
【００５３】
　一定時間が経過していなければステップ８０１にもどりＩＯトランザクションノシーケンスを再度比較する処理を一定時間が経過するまで繰り返す。一定時間が経過していれば、フォールトトレラントコンピュータ内に備えられている障害監視部等に障害の発生を通知する。一定時間が経過する前に他方のＣＰＵモジュールからＩＯトランザクションが届き、ステップ８０４において一致すれば、ステップ８０５において、入力したＩＯトランザクションをＩＯコントローラへ出力する。
【００５４】
　なお、ステップ８０４において一致せず、両方のＣＰＵモジュールからＩＯトランザクションが届いているが届いたシーケンスが一致していない場合、一定時間経過後に障害監視部等に障害の発生を通知することになる。
【００５５】
　以上好ましい実施の形態をあげて本発明を説明したが、本発明は必ずしも上記実施の形態に限定されるものではなく、その技術的思想の範囲内において様々に変形して実施することができる。
【図面の簡単な説明】
【００５６】
【図１】本発明の実施の形態によるフォールトトレラントコンピュータの構成を示すブロック図である。
【図２】本発明の実施の形態によるフォールトトレラントコンピュータの各ＣＰＵモジュールから発行されるＩＯトランザクションの具体例を説明する図である。
【図３】本発明の実施の形態によるフォールトトレラントコンピュータの具体的な動作例を説明する図である。
【図４】本発明の実施の形態によるフォールトトレラントコンピュータに備えられるトランザクション同期制御部の構成例を示すブロック図である。
【図５】本発明の実施の形態によるフォールトトレラントコンピュータに備えられるトランザクション同期制御部の動作例を説明するフローチャートである。
【図６】トランザクション同期制御部の変形例の動作例を説明するフローチャートである。
【図７】トランザクション同期制御部の他の変形例の構成を示すブロック図である。
【図８】図７の動作例を説明するフローチャートである。
【符号の説明】
【００５７】
　１０　フォールトトレラントコンピュータ
　２０　第１のＣＰＵモジュール
　３０　第２のＣＰＵモジュール
　５０　第１のＩＯモジュール
　６０　第２のＩＯモジュール
　５１Ａ、５１Ｂ、６１Ａ、６１Ｂ　トランザクション同期制御部
　５２Ａ、５２Ｂ、６２Ａ、６２Ｂ　ＩＯコントローラ
　８１−１　第１のトランザクション格納手段
　８１−２　第２のトランザクション格納手段
　８２　比較手段
　８３　タイマ手段
　８４　出力制御手段
【図１】
2004110803.tif 000003
【図２】
2004110803.tif 000004
【図３】
2004110803.tif 000005
【図４】
2004110803.tif 000006
【図５】
2004110803.tif 000007
【図６】
2004110803.tif 000008
【図７】
2004110803.tif 000009
【図８】
2004110803.tif 000010