(57)【要約】【課題】同期ＣＰＵのトランザクションに同期外れが発生したときに、プロセッサの縮退を引き起こすことなく自動的にプロセッサ間の同期を取り戻すフォールトトレラントコンピュータ、トランザクション同期化方法を提供する。【解決手段】フォールトトレラントコンピュータ（８）は、冗長化される演算処理部（１１、１２）と、冗長化される入出力部（２１、２２）と、検出部（１６０）とを具備する。演算処理部（１１、１２）は、ロックステップ動作し、その同期外れを検出部（１６０）が検出する。入出力部（２１、２２）は、検出部（１６０）が同期外れを検出したとき、演算処理部（１１、１２）から出力されるトランザクションのフローを制御するトランザクション比較制御部を備える。【選択図】図２
2008046942.tif 000002
【特許請求の範囲】
【請求項１】
冗長化され、ロックステップ動作する演算処理部と、
前記演算処理部の同期外れを検出する検出部と、
冗長化され、前記演算処理部に接続される入出力部と
を具備し、
前記入出力部は、前記検出部が前記同期外れを検出したとき、前記演算処理部から出力されるトランザクションのフローを制御するトランザクション比較制御部を備え、
縮退せずに前記同期外れを解消するフォールトトレラントコンピュータ。
【請求項２】
前記トランザクション比較制御部は、前記演算処理部から出力されるトランザクションを格納する待ち合わせバッファを含み、前記待ち合わせバッファは、前記演算処理部に対応して設けられ、
前記検出部が前記同期外れを検出したとき、前記待ち合わせバッファから前記トランザクション出力を停止する
請求項１に記載のフォールトトレラントコンピュータ。
【請求項３】
前記検出部は、前記待ち合わせバッファに格納される前記トランザクションのデータ数に基づいて前記同期外れを検出する
請求項２に記載のフォールトトレラントコンピュータ。
【請求項４】
冗長化される前記演算処理部の各々は、それぞれのバス上のタイミングを比較するバスタイミング比較部を備え、
検出部は、前記バスタイミング比較部から出力される比較結果に基づいて前記同期外れを検出する
請求項２または請求項３に記載のフォールトトレラントコンピュータ。
【請求項５】
前記待ち合わせバッファは、所定の数以上の前記トランザクションを格納するとき、前記演算処理部に前記トランザクションの出力停止のフロー制御を指示する
請求項２から請求項４のいずれかに記載のフォールトトレラントコンピュータ。
【請求項６】
前記待ち合わせバッファに格納される前記トランザクションのデータ数が閾値に達したとき、前記待ち合わせバッファから前記トランザクションの出力を再開する
請求項２から請求項５のいずれかに記載のフォールトトレラントコンピュータ。
【請求項７】
前記演算処理部に対応するそれぞれの前記待ち合わせバッファに格納される前記トランザクションのデータ数が同数になったとき、前記待ち合わせバッファから前記トランザクションの出力を再開する
請求項２から請求項６のいずれかに記載のフォールトトレラントコンピュータ。
【請求項８】
前記同期外れが検出されてから、所定の時間を経過したとき、前記待ち合わせバッファから前記トランザクションの出力を再開する
請求項２から請求項７のいずれかに記載のフォールトトレラントコンピュータ。
【請求項９】
フォールトトレラントコンピュータの冗長化され、ロックステップ動作する演算処理部の同期外れを検出する検出ステップと、
前記検出ステップで前記同期外れを検出したとき、前記演算処理部から出力されるトランザクションのフローを制御するトランザクション制御ステップと
を具備し、
前記同期外れを縮退せずに解消するトランザクション同期制御方法。
【請求項１０】
前記フォールトトレラントコンピュータは、前記トランザクションを前記演算処理部に対応させて格納する待ち合わせバッファを備え、
前記トランザクション制御ステップは、前記待ち合わせバッファに前記トランザクションを格納してフローを制御するステップを備える
請求項９に記載のトランザクション同期制御方法。
【請求項１１】
前記演算処理部のバスのタイミングを比較するバスタイミング比較ステップをさらに備え、
前記検出ステップは、前記バスタイミング比較ステップから通知されるバスタイミングの比較結果に基づいて、前記同期外れを検出するステップを備える
請求項１０に記載のトランザクション同期制御方法。
【請求項１２】
前記フォールトトレラントコンピュータは、前記トランザクションを前記演算処理部に対応させて格納する待ち合わせバッファを備え、
前記検出ステップは、前記待ち合わせバッファに格納される前記トランザクションのデータ数に基づいて、前記同期外れを検出するステップを備える
請求項１０に記載のトランザクション同期制御方法。
【請求項１３】
前記トランザクション制御ステップは、前記検出ステップにより前記同期外れが検出されたとき、前記待ち合わせバッファから前記トランザクションの出力を停止するステップを備える
請求項１０から請求項１２のいずれかに記載のトランザクション同期制御方法。
【請求項１４】
前記トランザクション制御ステップは、前記待ち合わせバッファに所定の数以上の前記トランザクションが格納されたとき、前記演算処理部に前記トランザクションの出力停止のフロー制御を指示するステップを備える
請求項１０から請求項１３のいずれかに記載のトランザクション同期制御方法。
【請求項１５】
前記トランザクション制御ステップは、前記待ち合わせバッファに格納される前記トランザクションのデータ数が閾値に達したとき、前記待ち合わせバッファから前記トランザクションの出力を再開するステップを備える
請求項１０から請求項１４のいずれかに記載のトランザクション同期制御方法。
【請求項１６】
前記トランザクション制御ステップは、前記演算処理部に対応するそれぞれの前記待ち合わせバッファに格納される前記トランザクションのデータ数が同数になったとき、前記待ち合わせバッファから前記トランザクションの出力を再開するステップを備える
請求項１０から請求項１５のいずれかに記載のトランザクション同期制御方法。
【請求項１７】
前記トランザクション制御ステップは、前記同期外れが検出されて所定の時間を経過したとき、前記待ち合わせバッファから前記トランザクションの出力を再開するステップを備える
請求項１０から請求項１６のいずれかに記載のトランザクション同期制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フォールトトレラントコンピュータに関する。
【背景技術】
【０００２】
従来のフォールト・トレラント・システムにおいて、冗長化されたプロセッサの出力の不一致を検出する装置は、共通のクロックを分配してロックステップで動作する冗長化された各プロセッサの出力を比較することで不一致を検出する。例えば、二重化されたプロセッサは、共通のクロックソースを用いてロックステップ同期で動作する。双方のプロセッサが同一のオペレーションを同時に出力し、その出力を比較することによりオペレーションの同期が判定される。
【０００３】
しかし、各プロセッサが各々独立に正常動作していても、各プロセッサ間でロックステップ同期の動作がまれに外れることがあり、オペレーションの不一致が観測されることがある。また、各プロセッサ内のデバイス間のインタフェースに高速シリアル転送が使用されることが多くなり、高速化に伴って通信エラーの発生頻度が上昇している。したがって、デバイス間の通信エラーによるリトライ動作により、転送タイミングが各インタフェースの受信側で異なるケースが多くなっている。このような場合にも各プロセッサの出力にエラーが検出されなかった場合には、その都度、単純な同期外れと判断され、各プロセッサ間の同期復旧処理が行われる。
【０００４】
同期復旧処理とは、再同期化（プロセッサモジュールの同時リセット）により両方のプロセッサモジュールの動作を合わせる処理である。同時リセットの前に、正常動作しているプロセッサモジュールから同期外れを起こしたプロセッサモジュールに対して、プロセッサに接続されたメモリの内容、プロセッサのレジスタの内容等のコンテンツ情報が全てコピーされる。コンテンツ情報が各プロセッサで同一になった後、処理が再開されて同期が復旧する。
【０００５】
一旦、同期復旧処理が始まると、通常のデータ処理が一時中断され、データ処理速度の低下を招く。したがって、一時的な同期外れのような場合、極力この同期復旧処理を回避することが望ましい。
【０００６】
従来は、ＣＰＵのロックステップ同期状態が外れた場合、ＣＰＵからのトランザクションを一時格納手段に保持し、各ＣＰＵトランザクションの一定時間内のシーケンスを比較して、一致する場合に同期外れを許容していた。しかし、一旦同期外れが発生すると、ＣＰＵモジュールにあるＣＰＵバスとＩＯモジュールに接続されているＣＰＵバスコントローラ内部でＣＰＵからのトランザクションとその応答、およびＩＯからのトランザクションの競合によって次第にそのずれが蓄積する。したがって、一定時間内でのＣＰＵ同期外れを許容するシステムにおいてもその許容範囲を逸脱し始めるため、結果的にＣＰＵの同期外れは短時間しか許容できないという問題があった。ＣＰＵの同期外れが許容されなくなると、結果的にＣＰＵの再同期処理となるが、これはＣＰＵの切離しを行い、主記憶の複写、そして主記憶内容の一致比較の手順を踏むこととなり、この間はＣＰＵの冗長化が行われていない状態となる。
【０００７】
特開平１１−３３８８３２号公報によれば、運用系プロセッサカードと待機系プロセッサカードのプロセッサクロックを同期化する機構を備えるプロセッサの同期装置が開示されている。このプロセッサの同期方法では運用系プロセッサと待機系プロセッサ間で、プロセッサ間のバスのデータ転送開始および終了の信号を用いる。処理が遅れているプロセッサカードと同一タイミングになるまでデータ転送を待たせることにより、短時間で両者の同期が取られる。これは同一バス上に接続されたプロセッサ間での出力タイミング同期を取るものである。
【０００８】
また、特開２００４−１１０８０３号公報には、デバイスコントローラ毎にＩＯトランザクションのシーケンスの一致をチェックするフォールトトレラントコンピュータが開示されている。このフォールトトレラントコンピュータは、複数のＣＰＵモジュールと、複数のＩＯモジュールと、トランザクション同期制御部とを有する。複数のＣＰＵモジュールは、同じ命令列をクロック同期して処理する。複数のＩＯモジュールは、デバイスに対し入出力制御処理を実行する複数のデバイスコントローラを備える。トランザクション同期制御部は、デバイスコントローラ毎に、複数のＣＰＵモジュールの各々から発行されるＩＯトランザクションのシーケンスの一致をチェックする。ＩＯトランザクションのシーケンスの一致が得られた場合は同期外れではないとみなす。すなわち、プロセッサ出力の同期ずれをＩＯコントローラ毎のＩＯトランザクションの時間的なずれを許容するものであるが、結果的にプロセッサ間の同期ずれの状態を放置することになる。したがって、プロセッサに対する出力と入力の競合によって比較的短時間にこのプロセッサ間の時間的ずれが許容可能な範囲を逸脱してしまう可能性がある。
【０００９】
特開２００４−４６６１１号公報によれば、プロセッサ、メモリを含むコンピューティングモジュールを複数備え、各コンピューティングモジュールがクロック同期して同じ命令列を処理するロックステップ方式のフォルトトレラントコンピュータ装置が開示されている。このフォールトトレラントコンピュータは、各コンピューティングモジュール内の各プロセッサ間の外部バスへのアクセス状態の不一致を検出しても、装置の故障が検出されない場合に、全てのプロセッサに対して割り込みが生成される。この割り込みにより各プロセッサがクロック同期制御命令を実行し、各コンピューティングモジュールからのアクセスに対する応答タイミングが調整される。これによって、各コンピューティングモジュールに対してクロック同期での動作の再開処理が行われる。      
【００１０】
同期の検出方法は、例えば、特開２００４−３１８７０２号公報に開示される。これによれば、情報処理装置は、互いに同期して同一の処理を行う第１および第２の処理手段と、一致状態を判別する第３の処理手段とを含む。第３の処理手段は、第１および第２の処理手段からの出力を受け取る。第３の処理手段は、第１の処理手段からの複数個数の出力と、第２の処理手段からの複数個数の出力との順序を対応させて比較し一致しているか否かを判別する。
【００１１】
ローカルエリアネットワーク間の通信の同期に関し、特開平２−４７９４３号公報に通信方法が開示されている。ネットワークシステムは、ローカルエリアネットワーク同志が中継器によって相互に接続されている。ローカルエリアネットワークには複数の端末が接続される。中継器は、端末または他の中継器からの送信情報を貯えるバッファと、このバッファのフロー制御を行うフロー制御手段を有する。フロー制御手段は、バッファの容量が不足してくると、抑制信号を発信元の端末または中継器に通知する。抑制信号を受信した発信元の端末または中継器は、以降の情報を予め定められた時間遅らせて送信する。
【００１２】
特表平９−５０９２７０号公報によれば、他の計算素子のクロックに対して非同期的に作動するクロックを備えた計算素子少なくとも二つ（ＣＥ１、ＣＥ２）を同期させる方法が開示されている。コンピュータシステムは、少なくとも二つの計算素子と少なくとも一つのコントローラとから成る。信号を選択する段階と、信号の生成を検出する段階と、信号の生成を待合わせる段階と、送信する段階と、更新する段階とを有する。信号を選択する段階では、計算素子によって生成された信号組から一つ以上の信号が選択される。信号の生成を検出する段階では、計算素子を監視して計算素子の一方による選択信号が生成されたことが検出される。信号の生成を待合わせる段階では、計算素子の一方による選択信号の検出の後、他方の計算素子による選択信号の生成が待機される。送信する段階では、計算素子全部からの選択信号の受信後、少なくとも一つのコントローラからの等時間更新が計算素子各々に送信される。更新する段階では、時間更新に基づいて計算素子のクロックが更新される。
【００１３】
【特許文献１】特開平１１−３３８８３２号公報
【特許文献２】特開２００４−１１０８０３号公報
【特許文献３】特開２００４−４６６１１号公報
【特許文献４】特開２００４−３１８７０２号公報
【特許文献５】特開平２−４７９４３号公報
【特許文献６】特表平９−５０９２７０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
本発明の目的は、同期ＣＰＵのトランザクションに同期外れが発生したときに、プロセッサの縮退を引き起こすことなく自動的にプロセッサ間の同期を取り戻すフォールトトレラントコンピュータ、トランザクション同期化方法を提供することにある。
【００１５】
本発明の他の目的は、通常動作時の性能低下を引き起こさずに同期外れを回復するフォールトトレラントコンピュータ、トランザクション同期化方法を提供することにある。
【００１６】
また、本発明の他の目的は、簡単な構成により同期外れを回復するフォールトトレラントコンピュータ、トランザクション同期化方法を提供することにある。
【課題を解決するための手段】
【００１７】
以下に、［発明を実施するための最良の形態］で使用される番号・符号を用いて、課題を解決するための手段を説明する。これらの番号・符号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］との対応関係を明らかにするために付加されたものである。ただし、それらの番号・符号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１８】
本発明の観点では、フォールトトレラントコンピュータ（８）は、冗長化された演算処理部（１１、１２）と、冗長化された入出力部（２１、２２）と、検出部（１６０）とを具備する。演算処理部（１１、１２）は、ロックステップ動作し、その同期外れを検出部（１６０）が検出する。入出力部（２１、２２）は、検出部（１６０）が同期外れを検出したとき、演算処理部（１１、１２）から出力されるトランザクションのフローを制御するトランザクション比較制御部を備える。フォールトトレラントコンピュータ（８）は、検出部（１６０）で検出された同期外れを縮退せずに解消する。
【００１９】
本発明のトランザクション比較制御部（３１、３２）は、演算処理部（１１、１２）から出力されるトランザクションを格納する待ち合わせバッファ（１２１、１２２）を含む。待ち合わせバッファ（１２１、１２２）は、演算処理部（１１、１２）に対応して設けられる。検出部（１６０）が同期外れを検出したとき、待ち合わせバッファ（１２１、１２２）からのトランザクション出力が停止される。
【００２０】
本発明の検出部（１６０）は、待ち合わせバッファ（１２１、１２２）に格納されるトランザクションのデータ数に基づいて同期外れを検出する。また、冗長化される演算処理部（１１、１２）の各々は、それぞれのバス上のタイミングを比較するバスタイミング比較部（５１、５２）を備えることもある。その場合、検出部（１６０）は、バスタイミング比較部（５１、５２）から出力される比較結果に基づいて同期外れを検出してもよい。
【００２１】
本発明の待ち合わせバッファ（１２１、１２２）は、所定の数以上のトランザクションを格納するとき、演算処理部（１１、１２）にトランザクションの出力停止のフロー制御を指示する。
【００２２】
また、待ち合わせバッファ（１２１、１２２）に格納されるトランザクションのデータ数が閾値に達したとき、演算処理部（１１、１２）が安定状態になったものとして待ち合わせバッファ（１２１、１２２）からトランザクションの出力を再開する。演算処理部に対応してそれぞれ待ち合わせバッファ（１２１、１２２）に格納されるトランザクションのデータ数が同数になったとき、演算処理部（１１、１２）の同期が回復したものとして待ち合わせバッファ（１２１、１２２）からトランザクションの出力を再開してもよい。さらに、同期外れが検出されてから、所定の時間を経過したとき、待ち合わせバッファ（１２１、１２２）からトランザクションの出力を再開してもよい。
【００２３】
本発明の他の観点では、トランザクション同期制御方法は、検出ステップと、トランザクション制御ステップとを具備し、演算処理部（１１、１２）の同期外れを縮退せずに解消する。検出ステップは、冗長化され、ロックステップ動作するフォールトトレラントコンピュータの演算処理部（１１、１２）の同期外れを検出するステップである。トランザクション制御ステップは、検出ステップで同期外れを検出したとき、演算処理部（１１、１２）から出力されるトランザクションのフローを制御するステップである。
【００２４】
本発明のフォールトトレラントコンピュータは、トランザクションを演算処理部に対応させて格納する待ち合わせバッファ（１２１、１２２）を備える。トランザクション制御ステップは、待ち合わせバッファ（１２１、１２２）にトランザクションを格納してフローを制御するステップを備える。
【００２５】
また、本発明のトランザクション同期制御方法は、演算処理部（１１、１２）のバスのタイミングを比較するバスタイミング比較ステップをさらに備えてもよい。その場合、検出ステップは、バスタイミング比較ステップから通知されるバスタイミングの比較結果に基づいて、同期外れを検出するステップを備える。
【００２６】
また、本発明のフォールトトレラントコンピュータは、トランザクションを演算処理部に対応させて格納する待ち合わせバッファ（１２１、１２２）を備える。検出ステップは、待ち合わせバッファ（１２１、１２２）に格納されるトランザクションのデータ数に基づいて、同期外れを検出するステップを備えてもよい。
【００２７】
本発明のトランザクション制御ステップは、検出ステップにより前記同期外れが検出されたとき、待ち合わせバッファ（１２１、１２２）からトランザクションの出力を停止するステップを備える。
【００２８】
また、本発明のトランザクション制御ステップは、待ち合わせバッファに所定の数以上のトランザクションが格納されたとき、演算処理部（１１、１２）にトランザクションの出力停止のフロー制御を指示するステップを備える。これにより演算処理部（１１、１２）の処理の同期を揃える。
【００２９】
本発明のトランザクション制御ステップは、待ち合わせバッファに格納されるトランザクションのデータ数が閾値に達したとき、演算処理部（１１、１２）が安定状態になったものとして待ち合わせバッファからトランザクションの出力を再開するステップを備える。
【００３０】
また、本発明のトランザクション制御ステップは、演算処理部（１１、１２）に対応するそれぞれの待ち合わせバッファ（１２１、１２２）に格納されるトランザクションのデータ数が同数になったとき、演算処理部（１１、１２）の同期が回復したものとして、待ち合わせバッファ（１２１、１２２）からトランザクションの出力を再開するステップを備えてもよい。
【００３１】
さらに、本発明のトランザクション制御ステップは、同期外れが検出されて所定の時間を経過したとき、待ち合わせバッファ（１２１、１２２）からトランザクションの出力を再開するステップを備えてもよい。
【発明の効果】
【００３２】
本発明によれば、同期ＣＰＵのトランザクションに同期外れが発生したときに、プロセッサの縮退を引き起こすことなく自動的にプロセッサ間の同期を取り戻すフォールトトレラントコンピュータ、トランザクション同期化方法を提供することができる。
【００３３】
また、本発明によれば、同期はずれの検出によってのみ、ＣＰＵの冗長化を維持したままフロー制御によってＣＰＵのタイミングを調整するため、通常動作時の性能低下を引き起こさずに同期外れを回復するフォールトトレラントコンピュータ、トランザクション同期化方法を提供することができる。
【００３４】
さらに、本発明によれば、タイミング調整にトランザクションのフロー制御が利用されるため、簡単な構成により同期外れを回復するフォールトトレラントコンピュータ、トランザクション同期化方法を提供することができる。
【発明を実施するための最良の形態】
【００３５】
図を参照して本発明を実施するための最良の形態が説明される。
図１は、本発明の実施の形態に係るフォールトトレラントコンピュータの構成を示すブロック図である。フォールトトレラントコンピュータ８は、中央演算処理装置（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）としてＣＰＵモジュール１１とＣＰＵモジュール１２とを備えて冗長化され、入出力装置としてＩＯモジュール２１とＩＯモジュール２２とを備えて冗長化されている。このように、フォールトトレラントコンピュータ８は、コンピュータの構成要素となるＣＰＵモジュールとＩＯモジュールとが冗長化されることにより、各モジュールの何れかが故障した場合にその故障モジュールを切離し、残りのモジュールで動作を継続することが可能となる。
【００３６】
第１ＣＰＵモジュール１１と第２ＣＰＵモジュール１２とは、２重化されたハードウェアをリアルタイムに同期させるロックステップ機能により同一命令を同時に実行する。したがって、ＣＰＵモジュール１１、１２は、各ＩＯモジュール４０、５０に対して同一のトランザクションを同時に出力する。
【００３７】
ＣＰＵモジュール１１、１２に接続されるＩＯモジュール２１は、トランザクション比較制御部３１とＩＯコントローラ４１とを具備し、ＩＯモジュール２２は、トランザクション比較制御部３２とＩＯコントローラ４２とを具備する。ＩＯモジュール２１は、第１ＣＰＵモジュール１１及び第２ＣＰＵモジュール１２から同時に同一のトランザクションを受け取る。第２ＩＯモジュール２２も同様に、第１ＣＰＵモジュール１１及び第２ＣＰＵモジュール１２から同時に同一のトランザクションを受け取る。第１ＣＰＵモジュール１１及び第２ＣＰＵモジュール１２から受け取るトランザクションは、一旦、トランザクション比較制御部３１、３２に格納される。
【００３８】
トランザクション比較制御部３１、３２は、それぞれ、２系のＣＰＵモジュール１１、１２と、ＩＯコントローラ４１、４２との間のトランザクションを通過させ、一時停止し、消去する機能を有する。また、トランザクション比較制御部３１、３２は、ＣＰＵモジュール１１、１２が出力するトランザクションの内容およびタイミングを比較する機能を有する。比較の結果、不一致を検出すると、トランザクション比較制御部３１、３２は、ＩＯコントローラ４１、４２に対するトランザクションの通過を一旦停止する。ＣＰＵモジュール１１、１２からトランザクションの出力が停止した安定状態に移行すると、トランザクション比較制御部３１、３２は、ＣＰＵモジュール１１、１２への応答及びトランザクションの通過を同期させて再開する。これにより、ＣＰＵモジュール１１、１２の同期外れが回復する。
【００３９】
図２を参照して、トランザクション比較制御部３１、３２を詳細に説明する。トランザクション比較制御部３１、３２は、同じ構成であり、図２においてトランザクション比較制御部３０として説明される。
【００４０】
トランザクション比較制御部３０は、タイミング調整用遅延バッファ１１１、１１２、１９１、１９２と、同期外れ補償用待ち合わせバッファ１２１、１２２と、バッファ使用量監視部１３０と、比較器１４０と、データフロー制御部１６０と、タイマ１７０と、ＩＯ出力制御部１８０とを具備する。
【００４１】
タイミング調整用遅延バッファ１１１、１１２、１９１、１９２は、経路を通過するトランザクションを指定された時間だけ遅延させ、タイミングを調整する。タイミング調整用遅延バッファ１１１は、第１ＣＰＵモジュール１１からＩＯコントローラに向けて流れるトランザクションのタイミングを調整する。タイミング調整用遅延バッファ１１２は、第２ＣＰＵモジュール１２からＩＯコントローラに向けて流れるトランザクションのタイミングを調整する。タイミング調整用遅延バッファ１９１は、ＩＯコントローラから第１ＣＰＵモジュール１１に向けて流れるトランザクションのタイミングを調整する。タイミング調整用遅延バッファ１９２は、ＩＯコントローラから第２ＣＰＵモジュール１２に向けて流れるトランザクションのタイミングを調整する。
【００４２】
同期外れ補償用待ち合わせバッファ１２１、１２２は、トランザクションのフロー制御を行うバッファである。ＣＰＵ同期外れが発生した場合に、同期外れ補償用待ち合わせバッファ１２１、１２２は、ＣＰＵモジュール１１、１２から出力されるトランザクションの到着タイミングの時間差を互いに待ち合わせることによって吸収し、同一内容と推定されるトランザクション同士を同時に送り出す。
【００４３】
同期外れ補償用待ち合わせバッファ１２１は、タイミング調整用遅延バッファ１１１を介して、第１ＣＰＵモジュール１１が出力するトランザクションを受け取る。バッファ内のトランザクションは、到着タイミングの時間差を待ち合わせた後、比較器１４０およびバッファ出力制御部１５０に送出される。バッファ内に格納されているトランザクション数は、バッファバッファ使用量監視部１３０に通知される。また、バッファ内に所定の数以上のトランザクションが滞留した場合、第１ＣＰＵモジュール１１に対してトランザクション停止のフロー制御が行われる。
【００４４】
同期外れ補償用待ち合わせバッファ１２２は、タイミング調整用遅延バッファ１１２を介して、第２ＣＰＵモジュール１２が出力するトランザクションを受け取る。バッファ内のトランザクションは、到着タイミングの時間差を待ち合わせた後、比較器１４０およびバッファ出力制御部１５０に送出される。バッファ内に格納されているトランザクション数は、バッファ使用量監視部１３０に通知される。また、バッファ内に所定の数以上のトランザクションが滞留した場合、第２ＣＰＵモジュール１２に対してトランザクション停止のフロー制御が行われる。
【００４５】
バッファ使用量監視部１３０は、同期外れ補償用待ち合わせバッファ１２１、１２２に格納される有効トランザクション数、或いは有効データ数を比較し、到着時刻のずれを検出する。トランザクションの到着時刻のずれが所定の閾値を超えた時、バッファ使用量監視部１３０は、ＣＰＵの同期外れと判断する。また、バッファ使用量監視部１３０は、同期外れ補償用バッファ１２１、１２２の各々に格納されている有効トランザクション数、或いは有効データ数を監視し、一定数以上になった場合、および、一定数以下になった場合に、これらの情報をデータフロー制御部１６０に通知する。
【００４６】
比較器１４０は、同期外れ補償用待ち合わせバッファ１２１および１２２から同時に出力されるトランザクションの内容を比較する。比較器１４０は、トランザクション内容の一致を検証した結果をバッファ出力制御部１５０に通知する。
【００４７】
バッファ出力制御部１５０は、比較器１４０から通知される一致検証の結果に基づいて、バッファ１２１、１２２から出力されるトランザクションを単一のトランザクションとし、接続されるＩＯコントローラに送出する。データフロ制御部１６０からトランザクション通過を停止する指示がある場合、バッファ出力制御部１５０は、トランザクションをＩＯコントローラに出力しない。
【００４８】
データフロー制御部１６０は、バッファ出力制御部１５０とＩＯ出力制御部１８０とにおけるトランザクションの通過／停止を制御する。データフロー制御部１６０は、バッファ使用量監視部１３０からＣＰＵ同期状態の通知を受信し、トランザクションの通過／停止の制御を行う。トランザクションの通過／停止の制御は、バッファ使用量監視部１３０から通知される同期外れの情報と同期外れ補償用待ち合わせバッファ１２１、１２２の使用量の情報と、タイマ１７０から通知されるタイムアウト情報と基づいて行われる。
【００４９】
タイマ１７０は、データフロー制御部１６０により起動され、トランザクションの停止期間を計測する。トランザクションの停止期間が所定の閾値以上になると、タイマ１７０はデータフロー制御部１６０にタイムアウトを通知する。
【００５０】
ＩＯ出力制御部１８０は、ＩＯコントローラから出力されるトランザクションを適切にルーティングし、第１ＣＰＵモジュール１１または第２ＣＰＵモジュール１２または両ＣＰＵモジュールにタイミング調整用遅延バッファ１９１、１９２を介して送出する。データフロー制御部１６０からトランザクション停止の指示を受けている場合、ＩＯ出力制御部１８０は、ＩＯコントローラから出力されるトランザクションのＣＰＵモジュールへの転送を停止する。
【００５１】
ここでは、タイミング調整用遅延バッファ１１１および１１２は、ＣＰＵモジュール１１、１２との接続点に配置されているが、ＩＯモジュール３０とＣＰＵモジュール１１、１２との接続方法に応じて、どちらか一方または両方を削除してもよい。また、比較器１４０によって比較された後のトランザクションを格納するバッファを同期外れ補償用待ち合わせバッファ１２１、１２２とは別に設けてもよい。その場合、バッファ出力制御部１５０は、そのバッファからトランザクションを読み出すことになる。
【００５２】
次に、図３に示されるフローチャートを参照して、このデータフロー制御部１６０の動作が説明される。
【００５３】
データフロー制御部１６０は、バッファ使用量監視部１３０から通知される同期外れの情報と同期外れ補償用待ち合わせバッファ１２１、１２２の使用量の情報と、タイマ１７０から通知されるタイムアウト情報とに基づいて、トランザクションの通過／停止の制御を行う。
【００５４】
データフロー制御部１６０は、バッファ使用量監視部１３０から通知される同期外れ補償用待ち合わせバッファ１２１、１２２の使用量の差分通知に基づいて、同期外れであるか否かを判定する（ステップＳ１２）。同期外れ補償用待ち合わせバッファ１２１、１２２の使用量が一致している場合（ステップＳ１２−ＮＯ）、ＣＰＵモジュール１１、１２からトランザクションがほぼ同時に入力され、ＩＯコントローラに出力されている。したがって、ＣＰＵモジュール１１、１２は、同期状態にあり、データフロー制御部１６０は、待機状態となる。
【００５５】
同期外れ補償用待ち合わせバッファ１２１、１２２の使用量が不一致の場合（ステップＳ１２−ＹＥＳ）、ＣＰＵモジュール１１、１２から入力されるトランザクションの到着タイミングがずれている。したがって、データフロー制御部１６０は、ＣＰＵ同期外れと判断し、バッファ出力制御部１５０およびＩＯ出力制御部１８０を経由するトランザクションの通過の停止を指示する。また、停止期間を計測するためにタイマ１７０を起動する（ステップＳ１４）。
【００５６】
バッファ出力制御部１５０を経由するトランザクションの通過を停止すると、同期外れ補償用待ち合わせバッファ１２１には、第１ＣＰＵモジュール１１から出力されるトランザクションが蓄積され、同期外れ補償用待ち合わせバッファ１２２には、第２ＣＰＵモジュール１２から出力されるトランザクションが蓄積されていく。同期外れ補償用待ち合わせバッファ１２１に蓄積されるトランザクションが所定の閾値を超えると、第１ＣＰＵモジュール１１に対してトランザクション停止のフロー制御がなされる。同じように、同期外れ補償用待ち合わせバッファ１２２に蓄積されるトランザクションが所定の閾値を超えると、第２ＣＰＵモジュール１２に対してトランザクション停止のフロー制御がなされる。
【００５７】
バッファ出力制御部１５０から出力されるトランザクションは、比較器１４０により一致が確認されて出力される（ステップＳ１６−ＮＯ）。そのため、ＣＰＵモジュール１１、１２の両方にトランザクション停止のフロー制御がなされた後、同期外れ補償用待ち合わせバッファ１２１、１２２には、ＣＰＵモジュール１１、１２が同一の処理を行っている限り同数のトランザクションが蓄積されていることになる。
【００５８】
ＣＰＵモジュール１１、１２とＩＯモジュール２１、２２との間のトランザクションが安定した状態になると、トランザクションの停止解除に移行する。その判定条件は、同期外れ補償用待ち合わせバッファ１２１、１２２に格納されたトランザクション数（またはデータ数）がともに閾値を超えた場合、タイマ１７０が、所定のトランザクション停止期間を超え、タイムアップを通知した場合である（ステップＳ１８）。また、同期外れ補償用待ち合わせバッファ１２１、１２２に格納されるトランザクション数が同数になったとき、ＣＰＵモジュール１１、１２の同期が回復したものとして、トランザクションの停止解除をしてもよい。
【００５９】
タイマ１７０がタイムアップとする所定のトランザクション停止期間は、ＣＰＵモジュール１１、１２がトランザクションに対する応答を期待する許容時間を保証する必要がある。また、所定のトランザクション停止期間は、ＣＰＵモジュール１１、１２がトランザクションに対する応答によって次のトランザクションを発行するシーケンスに移行する場合、そのトランザクションが発行されて、それに続くトランザクションが発行されなくなるまでの時間を確保しなければならない。
【００６０】
トランザクションの停止解除条件が揃うことにより、データフロー制御部１６０は、ＩＯ出力制御部１８０に対してトランザクション通過の許可を通知し、ＩＯコントローラからＣＰＵモジュールに対するトランザクションの出力が再開される（ステップＳ２２）。続いて、データフロー制御部１６０は、バッファ出力制御部１５０に対してトランザクション通過の許可を通知し、同期外れ補償用待ち合わせバッファ１２１、１２２からＩＯコントローラに対するトランザクションの出力が再開される（ステップＳ２４）。その後、データフロー制御部１６０は、再びバッファ使用量監視部１３０から通知される情報に基づいて同期外れを監視する。
【００６１】
トランザクション停止解除の条件が整う前に、トランザクション内容が不一致であることを比較器１４０が検出した場合（ステップＳ１６−ＹＥＳ）、トランザクション比較制御部３０は、同期化できないため、ＩＯ出力制御部１８０およびバッファ出力制御部１５０にトランザクション出力再開を指示する。また、トランザクション比較制御部３０は、システムの管理部に対して、ＣＰＵモジュールの出力不一致エラーを通知し、故障被疑ＣＰＵモジュールは切り離しとなる（ステップＳ３２）。
【００６２】
このトランザクション内容の不一致は、第１ＣＰＵモジュール１１が出力したトランザクションと第２ＣＰＵモジュール１２が出力したトランザクションとの内容が不一致であった場合に検出される。また、片方のＣＰＵモジュールからのトランザクションが消滅し、ＩＯモジュールに到達しない場合にも不一致が検出される。この故障被疑ＣＰＵモジュールの切離し以降の処理については当業者にとってよく知られており、また本発明とは直接関係しないので、その詳細な説明は省略する。
【００６３】
上述のように、両ＣＰＵモジュールが同一処理のトランザクションのタイミングでトランザクション出力を停止し、ＩＯモジュールからＣＰＵモジュールに対して同一タイミングで同一応答を返すことができる。これにより、ＣＰＵモジュールからのトランザクションの入力と出力の競合を避け、ＣＰＵ同期外れからの同期動作回復が期待出来るようになる。
【００６４】
上記では、ＩＯモジュール３１、３２において同期外れ補償用待ち合わせバッファ１２１、１２２に格納されるトランザクション数に基づいて同期外れを検出した。同期外れをさらに早期に検出する例を、図４を参照して説明する。
【００６５】
図４は、フォールトトレラントコンピュータの構成を示すブロック図である。フォールトトレラントコンピュータ８は、ＣＰＵとしてＣＰＵモジュール１１とＣＰＵモジュール１２とを備えて冗長化され、入出力装置としてＩＯモジュール２１とＩＯモジュール２２とを備えて冗長化されている。ＣＰＵモジュール１１、１２に接続されるＩＯモジュール２１は、トランザクション比較制御部３１とＩＯコントローラ４１とを具備し、ＩＯモジュール２２は、トランザクション比較制御部３２とＩＯコントローラ４２とを具備する。
【００６６】
ＣＰＵモジュール１１、１２は、それぞれＣＰＵバス上のタイミングの比較を行うＣＰＵバスタイミング比較部５１、５２を備える。ＣＰＵバス上のタイミングを比較してＣＰＵモジュール間のタイミングのずれを検出するため、ＩＯモジュール２１、２２で行うバッファ使用量に基づく同期外れ検出よりも早期にＣＰＵ同期外れを検出することが可能となる。ＣＰＵバスタイミング比較部５１、５２で検出したＣＰＵバスのタイミングずれは、それぞれＩＯモジュール２１、２２内のトランザクション比較制御部３１、３２に通知される。トランザクション比較制御部３１、３２は、その通知に基づいてデータフロー制御部１６０に同期外れ条件を与え、トランザクションの同期化が行われる。
【００６７】
このように、ＣＰＵモジュール１１、１２の内部でＣＰＵ同期外れを検出しているため、ＩＯモジュール２１、２２の内部で検出するよりも早期に検出できる。すなわち、同期外れ発生直後からトランザクションを停止させることが可能になる。したがって、ＣＰＵ同期外れを悪化させる要因となるＣＰＵモジュールからＩＯモジュールへ、およびＩＯモジュールからＣＰＵモジュールへといった双方向トランザクションの競合を防ぐことができるため、より確実にＣＰＵモジュールの同期合わせができるようになる。
【００６８】
このように、本発明では、同期ＣＰＵモジュールからのトランザクションの到着時刻のずれはある程度許容され、その範囲内の同期外れはエラーとせずに動作が継続される。したがって、ＣＰＵモジュールの冗長化を外したＣＰＵ縮退の状態となる再同期処理を行わずに済ませることができる。また、同期外れが検出されたときのみ、ＣＰＵの冗長化を維持したままフロー制御によってＣＰＵ動作のタイミング調整が行われるため、通常動作時の性能低下はない。さらに、ＣＰＵ動作のタイミング調整にトランザクションのフロー制御を利用しているため、本来のトランザクションのフロー制御の延長で簡単に構成できる。
【図面の簡単な説明】
【００６９】
【図１】本発明の実施の形態に係るフォールトトレラントコンピュータの構成を示すブロック図である。
【図２】同トランザクション比較制御部の構成を示すブロック図である。
【図３】同データフロー制御部の動作を説明するフローチャートである。
【図４】本発明の他の実施の形態に係るフォールトトレラントコンピュータの構成を示すブロック図である。
【符号の説明】
【００７０】
８  フォールトトレラントコンピュータ
１１、１２  ＣＰＵモジュール
２１、２２  ＩＯモジュール
３０、３１、３２  トランザクション比較制御部
４１、４２  ＩＯコントローラ
５１、５２  ＣＰＵバスタイミング比較部
１１１、１１２、１９１、１９２  タイミング調整用遅延バッファ
１２１、１２２  同期外れ補償用待ち合わせバッファ
１３０  バッファ使用量監視部
１４０  比較器
１５０  バッファ出力制御部
１６０  データフロー制御部
１７０  タイマ
１８０  ＩＯ出力制御部
【図１】
2008046942.tif 000003
【図２】
2008046942.tif 000004
【図３】
2008046942.tif 000005
【図４】
2008046942.tif 000006