(57)【要約】【課題】従来のフォールトトレラントコンピュータは、多重化されたシステムにおいてロックステップ状態を維持できないという問題があった。【解決手段】本発明にかかるフォールトトレラントコンピュータは、演算処理回路１０１、１０９と、演算処理回路１０１との第１の信号送受信を行い、第１のクロックを調整する調整回路１０４と、演算処理回路１０９との第２の信号送受信を行い、第２のクロックを調整する調整回路１１２と、を備え、調整回路１０４は、第１の信号送受信時間を記憶するメモリ１０７と、第１の信号送受信時間と第２の信号送受信時間とに基づいて第１のクロック遅延調整量を決定する遅延調整量決定部１０８と、を備え、調整回路１１２は、第２の信号送受信時間を記憶するメモリ１１４と、第１の信号送受信時間と第２の信号送受信時間とに基づいて第２のクロック遅延調整量を決定する遅延調整量決定部１１６と、を備える。【選択図】図１
2010211250.tif 000002
【特許請求の範囲】
【請求項１】
第１及び第２のプロセッサと、
第１のクロックに基づいて前記第１のプロセッサとの第１の信号の送受信を行い、前記第１のクロックの遅延量を調整する第１のタイミング調整回路と、
第２のクロックに基づいて前記第２のプロセッサとの第２の信号の送受信を行い、前記第２のクロックの遅延量を調整する第２のタイミング調整回路と、を備え、
前記第１のタイミング調整回路は、
前記第１のクロックに与える複数の遅延量に対応した前記第１の信号の送受信時間を記憶する第１のメモリと、
前記第１の信号の送受信時間と前記第２の信号の送受信時間とに基づいて前記第１のクロックの遅延調整量を決定する第１の遅延調整量決定回路と、を備え、
前記第２のタイミング調整回路は、
前記第２のクロックに与える複数の遅延量に対応した前記第２の信号の送受信時間を記憶する第２のメモリと、
前記第１の信号の送受信時間と前記第２の信号の送受信時間とに基づいて前記第２のクロックの遅延調整量を決定する第２の遅延調整量決定回路と、を備えたフォールトトレラントコンピュータ。
【請求項２】
前記第１のクロックと前記第２のクロックは共通のクロック源から供給されたものであり、
前記第１の信号の送受信時間は、前記第１の信号の送受信に要する前記第１のクロックのサイクル数であり、
前記第２の信号の送受信時間は、前記第２の信号の送受信に要する前記第２のクロックのサイクル数であることを特徴とする請求項１に記載のフォールトトレラントコンピュータ。
【請求項３】
前記第１の遅延調整量決定回路は、
前記第１の信号の送受信に要する前記第１のクロックのサイクル数と、前記第２の信号の送受信に要する前記第２のクロックのサイクル数とが同一であるように前記第１のクロックの遅延調整量を決定し、
前記第２の遅延調整量決定回路は、
前記第２の信号の送受信に要する前記第１のクロックのサイクル数と、前記第２の信号の送受信に要する前記第２のクロックのサイクル数とが同一であるように前記第２のクロックの遅延調整量を決定することを特徴とする請求項１又は２に記載のフォールトトレラントコンピュータ。
【請求項４】
前記第１の遅延調整量決定回路によって決定される前記第１のクロックの遅延調整量は、
当該遅延調整量と時間的に隣接した遅延量と、前記第１のデータ送受信に要する前記第１のクロックのサイクル数が同一であって、
前記第２の遅延調整量決定回路によって決定される前記第２のクロックの遅延調整量は、
当該遅延調整量と時間的に隣接した遅延量と、前記第２のデータ送受信に要する前記第２のクロックのサイクル数が同一であることを特徴とする請求項１〜３のいずれか一項に記載のフォールトトレラントコンピュータ。
【請求項５】
前記第１のプロセッサとのデータの送受信を行う第１のデータ中継回路と、
前記第２のプロセッサとのデータの送受信を行う第２のデータ中継回路と、をさらに備え、
前記第１のタイミング調整回路は、前記第１のデータ中継回路に内蔵され、
前記第２のタイミング調整回路は、前記第２のデータ中継回路に内蔵されたことを特徴とする請求項１〜４のいずれか一項に記載のフォールトトレラントコンピュータ。
【請求項６】
前記第１のプロセッサとのデータの送受信を行う第１のデータ中継回路と、
前記第２のプロセッサとのデータの送受信を行う第２のデータ中継回路と、をさらに備え、
前記第１のタイミング調整回路は、前記第１のプロセッサと前記第１のデータ中継回路との間に接続され、
前記第２のタイミング調整回路は、前記第２のプロセッサと前記第２のデータ中継回路との間に接続されたことを特徴とする請求項１〜４のいずれか一項に記載のフォールトトレラントコンピュータ。
【請求項７】
第１のクロックに基づいて第１のプロセッサと第１の信号の送受信を行い、
前記第１のクロックに与える複数の遅延量に対応した前記第１の信号の送受信時間を記憶し、
第２のクロックに基づいて第２のプロセッサと前記第２の信号の送受信を行い、
前記第２のクロックに与える複数の遅延量に対応した前記第２の信号の送受信時間を記憶し、
前記第１の信号の送受信時間と前記第２の信号の送受信時間とに基づいて前記第１及び前記第２のクロックの遅延調整量を決定するフォールトトレラントコンピュータのタイミング調整方法。
【請求項８】
前記第１のクロックと前記第２のクロックは共通のクロック源から供給されたものであって、
前記第１の信号の送受信に要する前記第１のクロックのサイクル数と、前記第２の信号の送受信に要する前記第２のクロックのサイクル数と、が同一であるような前記第１及び前記第２のクロックの遅延調整量を選択する請求項７に記載のフォールトトレラントコンピュータのタイミング調整方法。
【請求項９】
前記第１のクロックの遅延調整量として、当該遅延調整量と時間的に隣接された遅延調整量と、前記第１のデータ送受信に要する前記第１のクロックのサイクル数が同一であるものを選択する請求項７又は８に記載のフォールトトレラントコンピュータのタイミング調整方法。
【請求項１０】
前記第２のクロックの遅延調整量として、当該遅延調整量と時間的に隣接された遅延調整量と、前記第２のデータ送受信に要する前記第２のクロックのサイクル数が同一であるものを選択することを特徴とする請求項７〜９のいずれか一項に記載のフォールトトレラントコンピュータのタイミング調整方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はフォールトトレラントコンピュータ及びそのタイミング調整方法に関する。
【背景技術】
【０００２】
高度な信頼性を提供するコンピュータとして、フォールトトレラントコンピュータがある。フォールトトレラントコンピュータは、システムを構成するハードウェアモジュールを二重化、または多重化し、それぞれのハードウェアモジュールを同期して動作させる。そのため、あるハードウェアモジュールを構成する回路の一部に故障が発生した場合でも、故障したモジュールを切り離し、正常なモジュールによって処理を続行することができる。つまり、フォールトトレラントコンピュータは、耐故障性を向上させたコンピュータである。
【０００３】
フォールトトレラントコンピュータは、ＣＰＵ等を含む演算処理回路、メモリ、Ｉ／Ｏデバイス、及び、これらの回路間のデータの受け渡しを行うデータ中継回路（チップセット）等から構成されるハードウェアモジュールと、フォールトトレラント制御部（以下、ＦＴ制御部と称す）と、が多重化されて構成される。ここで、ＦＴ制御部は、多重化されたハードウェアモジュールの同期動作処理、故障時の切替制御等を行う機能を有する。
【０００４】
図７にハードウェアモジュールを二重化したフォールトトレラントコンピュータの一例を示す。図７に示すフォールトトレラントコンピュータは、第１のシステムとして、第１のＣＰＵサブシステム３０５と、第１のＩ／Ｏサブシステム３１３と、ＦＴ制御部３０３と、を備える。また、第２のシステムとして、第２のＣＰＵサブシステム３０６と、第２のＩ／Ｏサブシステム３１４と、ＦＴ制御部３０４と、を備える。
【０００５】
第１のＣＰＵサブシステム３０５は、演算処理回路（ＣＰＵ等）３０７と、データ中継回路３０８と、メモリ３０９と、を有する。第２のＣＰＵサブシステム３０６は、演算処理回路３１０と、データ中継回路３１１と、メモリ３１２と、を有する。第１のＩ／Ｏサブシステム３１３は、Ｉ／Ｏデバイス３１５と、Ｉ／Ｏデバイス３１６と、を有する。第２のＩ／Ｏサブシステム３１４は、Ｉ／Ｏデバイス３１７と、Ｉ／Ｏデバイス３１８と、を有する。ここで、第１のシステムと第２のシステムとは、それぞれ回路構成及び動作が同様であるため、第１のシステムについてのみ説明する。
【０００６】
第１のＣＰＵサブシステム３０５において、演算処理回路３０７とデータ中継回路３０８とが互いに接続される。データ中継回路３０８とメモリ３０９とが互いに接続される。ここで、データ中継回路３０８は、例えば、演算処理回路３０７及びメモリ３０９との間でデータの受け渡しを行う。データ中継回路３０８とＦＴ制御部３０３とは互いに接続される。ＦＴ制御部３０３とＩ／Ｏデバイス３１５とは互いに接続される。ＦＴ制御部３０３とＩ／Ｏデバイス３１６とは互いに接続される。ここで、第１のシステムに備えられたＦＴ制御部３０３と、第２のシステムに備えられたＦＴ制御部３０４とは、互いに接続される。なお、ＦＴ制御部３０３とＦＴ制御部３０４とは、クロスリンクと呼ばれる信号を通して通信される。
【０００７】
図７のフォールトトレラントコンピュータの例では、ＦＴ制御部３０３及びＦＴ制御部３０４は、ＣＰＵサブシステム群（第１のＣＰＵサブシステム３０５及び第２のＣＰＵサブシステム３０６）と、Ｉ／Ｏサブシステム群（第１のＩ／Ｏサブシステム３１３及び第２のＩ／Ｏサブシステム３１４）との間に接続される。そして、ＦＴ制御部３０３及びＦＴ制御部３０４は、クロスリンクを介して互いに情報通信する。それにより、ＣＰＵサブシステム３０５、３０６の同期動作の維持、故障の検出、及び故障モジュールの切り離し制御等が行われる。
【０００８】
一般的に、フォールトトレラントコンピュータは各モジュールをハードウェアで多重化制御する部分と、ソフトウェアで多重化制御する部分とに分かれる。例えば、ＣＰＵサブシステムは、それ自身がソフトウェアを動作させるための基盤である。したがって、これらはハードウェアによって多重化制御される必要がある。
【０００９】
つまり、ＣＰＵサブシステム内でエラーが発生した場合、ハードウェア（例えば、ＦＴ制御部）が、故障した回路（例えば、ＣＰＵ、メモリ）をシステムから切り離す。それにより、正常動作しているＣＰＵ及びメモリに影響を及ぼさないようにする。
【００１０】
なお、図７のフォールトトレラントコンピュータの例では、例えば、第１のＣＰＵサブシステム３０５が故障した場合、第１のＣＰＵサブシステム３０５はＦＴ制御部３０３により論理的に切り離される。その後、このフォールトトレラントコンピュータの動作は、第２のＣＰＵサブシステム３０６と、第２のＩ／Ｏサブシステム３１４と、によって継続される。
【００１１】
一方、Ｉ／Ｏデバイス３１５に故障が発生した場合、その故障を検出したＦＴ制御部３０３が、Ｉ／Ｏデバイス３１５を制御するソフトウェア（以下Ｉ／Ｏデバイスドライバと呼ぶ）に対してエラーを通知する。この場合、Ｉ／Ｏデバイスドライバは、故障したＩ／Ｏデバイス３１５の使用を中止するように制御する。そして、Ｉ／Ｏデバイスドライバは、正常動作している別のＩ／Ｏデバイス３１６を使用するように制御する。このように、Ｉ／Ｏサブシステム群では、ソフトウェアであるＩ／Ｏデバイスドライバによって使用するＩ／Ｏデバイスが切替制御される。
【００１２】
ここで、ハードウェア（ＦＴ制御部）によって多重化制御されるモジュール（ＣＰＵサブシステム等）は、ロックステップ方式の同期動作をする。図７に示すフォールトトレラントコンピュータでは、例えば、ＣＰＵサブシステム３０５、３０６にそれぞれ同一タイミングのクロック及びデータが供給された場合、ＣＰＵサブシステム３０５、３０６はそれぞれ同じ動作をする。このように、多重化されたモジュールがそれぞれ同じ動作をすることをデターミニズムと呼ぶ。そして、デターミニズムの特徴を有するＣＰＵサブシステム３０５、３０６が互いに同じ動作をしている状態をロックステップ同期と呼ぶ。ここで、ＦＴ制御部３０３、３０４は、ＣＰＵサブシステム３０５、３０６から送信される信号を互いに比較することにより、第１のシステム及び第２のシステムが、ロックステップ同期していることを確認する。
【００１３】
従来、多重化されたＣＰＵサブシステムがロックステップ同期状態を示すためには、ＣＰＵサブシステム内に含まれるＣＰＵやデータ中継回路がデターミニズムの特徴を有するとともに、それらを結ぶバスが同期バスである必要があった。それにより、従来のフォールトトレラントコンピュータは、同一クロック源から供給されるクロックに基づいて多重化されたＣＰＵサブシステムをロックステップ同期状態に維持することが可能であった。
【００１４】
このようなロックステップ同期に関する技術が特許文献１〜３に紹介されている。特許文献１には、ソフトウェアの不具合に対するフォールトトレラント性の高いコンピュータが提案されている。また、特許文献２には、各プロセッサ間の外部バスへのアクセス状態の不一致が検出された場合、多重化されたコンピューティングモジュール間の命令実行状況を遅延調整により一致させるフォールトトレラントコンピュータが提案されている。
【００１５】
しかし、例えば、ＣＰＵとデータ中継回路とを結ぶバスが、近年登場したＱＰＩ（Ｉｎｔｅｌ  Ｑｕｉｃｋ  Ｐａｔｈ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）のような非同期シリアルバスの場合、同一クロック源からクロックを供給しても、各モジュールにデータを送受信するタイミングが異なる。そのため、非同期シリアルバスが用いられた多重化されたＣＰＵサブシステムはロックステップ状態を維持できないという問題があった。
【００１６】
また、特許文献３には、ＳＭＩＩ規格が適用されるＭＡＣチップとＰＨＹチップとのＰＣＢパターン距離制限を克服し、データ転送遅延による転送エラーを防止するデータ転送中継装置が提案されている。ここで、特許文献３に示すデータ転送中継装置は、送受信データの転送遅延に基づいてクロックのタイミングを調整する。しかし、特許文献３に示すデータ転送中継装置は、送受信データの遅延に対してどのようにクロックのタイミングを調整するのかについて、具体的な方法が記載されていない。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】特開２００８−１４６４４７号公報
【特許文献２】特開２００４−４６５９９号公報
【特許文献３】特開２００３−１７４４９１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１８】
上述のように、従来のフォールトトレラントコンピュータは、非同期シリアルバスが用いられた多重化されたシステムにおいてロックステップ状態を維持できないという問題があった。
【００１９】
本発明は、このような問題を解決するためになされたものであり、多重化されたシステムにおいてロックステップ状態を維持することが可能なフォールトトレラントコンピュータ及びそのタイミング調整方法を提供することを目的とする。
【課題を解決するための手段】
【００２０】
本発明にかかるフォールトトレラントコンピュータは、第１及び第２のプロセッサ（例えば、本発明の実施の形態における演算処理回路１０１及び演算処理回路１０９）と、第１のクロックに基づいて前記第１のプロセッサとの第１の信号の送受信を行い、前記第１のクロックの遅延量を調整する第１のタイミング調整回路（例えば、本発明の実施の形態におけるタイミング調整回路１０４）と、第２のクロックに基づいて前記第２のプロセッサとの第２の信号の送受信を行い、前記第２のクロックの遅延量を調整する第２のタイミング調整回路（例えば、本発明の実施の形態におけるタイミング調整回路１１２）と、を備え、前記第１のタイミング調整回路は、前記第１のクロックに与える複数の遅延量に対応した前記第１の信号の送受信時間を記憶する第１のメモリ（例えば、本発明の実施の形態におけるメモリ１０７）と、前記第１の信号の送受信時間と前記第２の信号の送受信時間とに基づいて前記第１のクロックの遅延調整量を決定する第１の遅延調整量決定回路（例えば、本発明の実施の形態における遅延調整量決定部１０８）と、を備え、前記第２のタイミング調整回路は、前記第２のクロックに与える複数の遅延量に対応した前記第２の信号の送受信時間を記憶する第２のメモリ（例えば、本発明の実施の形態におけるメモリ１１４）と、前記第１の信号の送受信時間と前記第２の信号の送受信時間とに基づいて前記第２のクロックの遅延調整量を決定する第２の遅延調整量決定回路（例えば、本発明の実施の形態における遅延調整量決定部１１６）と、を備える。
【００２１】
また、本発明にかかるフォールトトレラントコンピュータのタイミング調整方法は、第１のクロックに基づいて第１のプロセッサ（例えば、本発明の実施の形態における演算処理回路１０１）と第１の信号の送受信を行い、前記第１のクロックに与える複数の遅延量に対応した前記第１の信号の送受信時間を記憶し、第２のクロックに基づいて第２のプロセッサ（例えば、本発明の実施の形態における演算処理回路１０９）と前記第２の信号の送受信を行い、前記第２のクロックに与える複数の遅延量に対応した前記第２の信号の送受信時間を記憶し、前記第１の信号の送受信時間と前記第２の信号の送受信時間とに基づいて前記第１及び前記第２のクロックの遅延調整量を決定する。
【発明の効果】
【００２２】
本発明により、多重化されたシステムにおいてロックステップ状態を維持することが可能なフォールトトレラントコンピュータ及びそのタイミング調整方法を提供することができる。
【図面の簡単な説明】
【００２３】
【図１】本発明の実施の形態にかかるフォールトトレラントコンピュータの構成を示すブロック図である。
【図２】本発明の実施の形態にかかるフォールトトレラントコンピュータのタイミング調整方法を示すフローチャートである。
【図３】本発明の実施の形態にかかるフォールトトレラントコンピュータの構成を示すブロック図である。
【図４】本発明の実施の形態にかかるフォールトトレラントコンピュータの構成を示すブロック図である。
【図５】本発明の実施の形態にかかるタイミング調整回路に格納されたクロック遅延量及びデータ送受信時間の一例を示す図である。
【図６】クロック遅延量がデータ送受信に与える影響を示す図である。
【図７】従来のフォールトトレラントコンピュータの構成を示すブロック図である。
【発明を実施するための形態】
【００２４】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
【００２５】
本発明の実施の形態について図面を参照して説明する。図１は、システムを構成するハードウェアモジュールを二重化したロックステップ方式のフォールトトレラントコンピュータである。図１に示すフォールトトレラントコンピュータは、第１のシステムとして、ＣＰＵ等を備えた演算処理回路（第１のプロセッサ）１０１と、データ中継回路（第１のデータ中継回路。チップセットとも言う）１０２と、を備える。また、第２のシステムとして、演算処理回路（第２のプロセッサ）１０９と、データ中継回路（第２のデータ中継回路）１１０と、を備える。
【００２６】
なお、図１に示すフォールトトレラントコンピュータは、簡単のためデータ中継回路１０２、１１０と演算回路１０１、１０９のみを図示している。しかし、実際には、メモリ（不図示）、Ｉ／Ｏデバイス（不図示）等が備えられる場合もある。
【００２７】
データ中継回路１０２は、タイミング調整回路（第１のタイミング調整回路）１０４を備える。また、タイミング調整回路１０４は、データ送受信部１０５と、クロックシフト部１０６と、メモリ（第１のメモリ）１０７と、遅延調整量決定部（第１の遅延調整量決定回路）１０８と、を有する。データ中継回路１１０は、タイミング調整回路（第２のタイミング調整回路）１１２を備える。タイミング調整回路１１２は、データ送受信部１１３と、メモリ（第２のメモリ）１１４と、クロックシフト部１１５と、遅延調整量決定部（第２の遅延調整量決定回路）１１６と、を有する。ここで、図１に示すフォールトトレラントコンピュータは、二重化されたハードウェアモジュールのロックステップ状態を維持するタイミング調整回路１０４、１１２を有することを特徴とする。なお、第１のシステムと第２のシステムとは、それぞれ回路構成及び動作が同様であるため、第１のシステムについてのみ説明する。
【００２８】
第１のシステムにおいて、データ送受信部１０５のデータ送受信用端子は、演算処理回路１０１のデータ送受信用端子に接続される。外部から供給されるクロックは、クロックシフト部１０６の一方の入力端子に入力される。クロックシフト部１０６の出力端子は、データ送受信部１０５のクロック入力端子に接続される。データ送受信部１０５の出力端子は、メモリ１０７の入力端子に接続される。メモリ１０７の一方の出力端子は、遅延調整量決定部１０８の一方の入力端子に接続される。メモリ１０７の他方の出力端子は、第２のシステムにおける遅延調整量決定部１１６の一方の入力端子に接続される。遅延調整量決定部１０８の他方の入力端子は、第２のシステムにおけるメモリ１１４の一方の出力端子に接続される。遅延調整量決定部１０８の出力端子は、クロックシフト部１０６の他方の入力端子に接続される。
【００２９】
次に、図１に示す回路の動作について説明する。データ送受信部１０５は、例えば、データ中継回路１０２に備えられた周辺回路（不図示）から送受信された送受信データを演算処理回路１０１へ送受信する。それに加え、データ送受信部１０５は、演算処理回路１０１に対してリクエスト信号を送信する機能を有する。また、データ送受信部１０５は、演算処理回路１０１からのレスポンス信号を受信する機能を有する。また、データ送受信部１０５は、リクエスト信号を送信してからレスポンス信号を受信するまでの時間（データ送受信時間）を測定する機能を有する。
【００３０】
外部から供給されたクロックは、クロックシフト部１０６を介してデータ送受信部１０５に入力される。ここで、クロックシフト部１０６は、遅延調整量決定部１０８から出力される制御信号（後述）に基づいて出力するクロックのタイミングを調整する。つまり、クロックシフト部１０６は、遅延調整量決定部１０８からの制御信号に基づいて入力クロックを指定された時間だけ遅延させて出力する機能を有する。それにより、データ送受信部１０５から演算処理回路１０１に送信されるデータの送信タイミングを調整することができる。
【００３１】
図６に、クロック遅延量がデータ送受信に与える影響を示す。図６に示すように、クロックシフト部１０６から出力されるクロックの遅延量を調整することにより、リクエスト信号の出力タイミングを制御することができる。それにより、演算処理回路１０１からの応答信号であるレスポンス信号の受信時間を制御することができる。
【００３２】
メモリ１０７は、データ送受信部１０５において測定されたデータ送受信時間を格納する。ここで、メモリ１０７は、例えば、データ送受信に要するクロックのサイクル数をデータ送受信時間として格納することもできる。なお、本発明の実施の形態では、メモリ１０７、１１４がクロックのサイクル数をデータ送受信時間として格納する場合を例に説明する。メモリ１０７に格納されたデータ送受信時間の情報は、第１のシステムにおける遅延調整量決定部１０８と、第２のシステムにおける遅延調整量決定部１１６と、に送信される。遅延調整量決定部１０８は、メモリ１０７及びメモリ１１４に格納されたデータ送受信時間の情報に基づいて、クロックシフト部１０６の出力クロックに与える遅延調整量を決定する。なお、遅延調整寮の決定方法については後述する。そして、遅延調整量決定部１０８から出力された遅延調整量の情報を含む制御信号は、クロックシフト部１０６の他方の入力端子に入力される。
【００３３】
図１と図２のフローチャートとを用いて、本発明の実施の形態にかかるフォールトトレラントコンピュータのタイミング調整方法を説明する。なお、第１のシステムと第２のシステムとは、それぞれ回路構成及び動作が同様であるため、第１のシステムについてのみ説明する。まず、演算処理回路１０１とデータ中継回路１０２との間を接続するバス（例えば、非同期シリアルバス）の初期化が行われる（図２のＳ１００）。それにより、第１のシステムは、データの送受信が可能な状態に移行する。
【００３４】
初期化完了後、データ送受信部１０５は、通常動作によるデータ送受信を開始する前に、演算処理回路１０１に対してリクエスト信号を送信する。そして、データ送受信部１０５は、演算処理回路１０１からのレスポンス信号を受信する。データ送受信部１０５は、リクエスト信号を送信し、レスポンス信号を受信するまでの時間（データ送受信時間）を測定する（図２のＳ１０１）。データ送受信部１０５において測定されたデータ送受信時間は、そのときクロックに与えられていた遅延量と共にメモリ１０７に格納される（図２のＳ１０２）。なお、クロックに与えられる遅延量の初期値は"０"である。
【００３５】
メモリ１０７にクロック遅延量とデータ送受信時間（測定値）が格納された後、遅延調整量決定部１０８は、クロックシフト部１０６の出力クロックに所定の時間遅延させるための制御信号を出力する（図２のＳ１０３のＮＯ）。具体的には、遅延調整量決定部１０８は、メモリ１０７に最後に格納されたクロック遅延量に対してさらに所定の時間遅延させるための制御信号を出力する（図２のＳ１０４）。その後、再度バスの初期化が行われる（図２のＳ１００）。そして、データ送受信部１０５は、所定の遅延量が与えられたクロックに基づいてデータ送受信時間の測定を行う（図２のＳ１０１）。このときのクロック遅延量とデータ送受信時間はメモリ１０７に格納される（図２のＳ１０２）。このように所定の時間毎の遅延量を与えたクロックと、それに応じたデータ送受信時間の情報がメモリ１０７に格納される。この動作は、クロック遅延量が遅延調整量決定部１０８において設定された既定値に達するまで行われる。なお、第２のシステム（演算処理回路１０９、データ中継回路１１０）においても同様の動作が実行される。
【００３６】
図５に、メモリ１０７及びメモリ１１４に格納されたクロック遅延量及びデータ送受信時間のテーブルの一例を示す。なお、前述のようにメモリ１０７は、第１のシステム（演算処理回路１０１、データ中継回路１０２）におけるクロック遅延量及びそれに応じたデータ送受信時間を格納する。また、メモリ１１４は、第２のシステム（演算処理回路１０９、データ中継回路１１０）におけるクロック遅延量及びデータ送受信時間を格納する。図５の例では、クロック遅延量が０ｎｓから１５ｎｓまで１ｎｓ間隔で与えられた場合のデータ送受信時間を示す。なお、図５の例では、メモリ１０７及びメモリ１１４は、データ送受信に要するクロックのサイクル数をデータ送受信時間として格納している。遅延調整量決定部１０８は、クロック遅延量が規定値に達すると（図２のＳ１０３のＹＥＳ）、メモリ１０７、１１４に格納された情報に基づいて、第１のシステムにおけるクロックの遅延調整量を決定する（図２のＳ１０５）。同様に、遅延調整量決定部１１６は、クロック遅延量が規定値に達すると、メモリ１０７、１１４に格納された情報に基づいて、第２のシステムにおけるクロックの遅延調整量を決定する。
【００３７】
ここで、例えば、クロックに遅延を与えない（クロック遅延量が"０"）場合、メモリ１０７は、データ送受信時間が１００サイクルである。一方、メモリ１１４は、データ送受信時間が９９サイクルである。つまり、クロック遅延量が"０"の場合、第１及び第２のシステムは、それぞれデータを受信するタイミングにずれが生じてしまう。そのため、第１及び第２のシステムはロックステップ同期して動作することができない。そこで、遅延調整量決定部１０８は、データ送受信部１０５、１１３のデータ受信タイミングにずれが生じないような遅延調整量をメモリ１０７、１１４に格納された情報から選択する。同様に遅延調整量決定部１１６は、データ送受信部１０５、１１３のデータ受信タイミングにずれが生じないような遅延調整量をメモリ１０７、１１４に格納された情報から選択する。
【００３８】
ここで、データ送受信部１０５、１１３のデータ送受信に要するクロックサイクル数は、互いに一致する値が複数存在する可能性がある。図５の例では、"１００"、"１０１"、"１０２"の３つの値がこれに該当する。この場合、遅延調整量決定部１０８、１１６は、好ましくはクロック遅延量の変動に応じてクロックサイクル数が変化しない範囲が最も大きい値（クロックサイクル数）を選択する。図５の例では、"１０１"がこれに該当する。
【００３９】
次に、遅延調整量決定部１０８は、選択されたクロックサイクル数に基づいてクロックの遅延調整量を決定する。図５の例では、クロック遅延量が４ｎｓ〜１０ｎｓの場合に、データ送受信時間が"１０１"を示す。このとき、遅延調整量決定部１０８は、好ましくはクロックの遅延調整量として中間の値（図５の例では７ｎｓ）を選択する。これにより、クロックが何らかの要因でわずかに変動した場合でも、データ送受信部１０５のデータ送受信時間は変動しない。これは、第２のシステムにおける遅延調整量決定部１１６の場合も同様である。図５の例では、第１のシステムにおいて決定されたクロックの遅延調整量は７ｎｓである。また、第２のシステムにおいて決定されたクロックの遅延調整量は９ｎｓである。遅延調整量決定部１０８は、このような規則に基づいてクロックの遅延調整量を決定し、クロックシフト部１０６に制御信号を出力する。クロックシフト部１０６は、決定された遅延調整量に基づいて出力するクロックに遅延を与える。これは、第２のシステムにおける遅延調整量決定部１１６の場合も同様である。
【００４０】
クロックの遅延調整量が決定した後、再度、演算処理回路１０１とデータ中継回路１０２との間を接続するバスが初期化される。また、演算処理回路１０９とデータ中継回路１１０との間を接続するバスが初期化される。そして、今度は通常のデータ送受信が行われる（図２のＳ１０６）。このように本発明の実施の形態にかかるフォールトトレラントコンピュータは、各システムにおいて複数のクロック遅延量及びそれに対応するデータ送受信時間を記録する。そして、それらの情報に基づいてクロックに与える遅延調整量を決定する。それにより、多重化されたシステムは、ロックステップ同期状態を維持することができる。
【００４１】
以上のように、本発明の実施の形態にかかるフォールトトレラントコンピュータは、多重化されたシステムにおいて、例えば、演算処理回路とデータ中継回路とを結ぶバスが非同期シリアルバスであっても、ロックステップ同期状態を維持することが可能である。
【００４２】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、図１に示すフォールトトレラントコンピュータは、システムを構成するハードウェアモジュールを二重化した場合（第１及び第２のシステム）を例に説明したが、これに限られない。例えば、図３に示すようにシステムを構成するハードウェアモジュールを三重化した回路構成にも適宜変更可能である。図３に示すフォールトトレラントコンピュータは、図１のフォールトトレラントコンピュータに、第３のシステムを追加している。第３のシステムは、演算処理回路１１７と、データ中継回路１１８と、を備える。データ中継回路１１８は、タイミング調整回路１２０を備える。タイミング調整回路１２０は、データ送受信部１２１と、メモリ１２２と、クロックシフト部１２３と、遅延調整量決定部１２４と、を有する。第３のシステムの回路構成及び動作は、第１及び第２のシステムの場合と同様であるため説明を省略する。このように複数のシステムを備えた場合でも、それぞれのシステムに備えられたタイミング調整回路に基づいてそれぞれのシステムにおけるクロックの遅延調整量を決定することができる。
【００４３】
また、本発明の実施の形態では、タイミング調整回路１０４、１１２が、それぞれデータ中継回路１０２、１１０に備えられた場合を例に説明したが、これに限られない。例えば、図４に示すように、演算処理回路１０１とデータ中継装置１０２との間にタイミング調整回路１０４を設けた回路構成にも適宜変更可能である。同様に、演算処理回路１０９とデータ中継装置１１０との間にタイミング調整回路１１２を設けた回路構成にも適宜変更可能である。なお、図４には、タイミング調整回路１０４、１１２が、それぞれリピータ回路１２５、１２６に備えられた場合の例を示している。
【符号の説明】
【００４４】
１０１  演算処理回路
１０２  データ中継回路
１０４  タイミング調整回路
１０５  データ送受信部
１０６  クロックシフト部
１０７  メモリ
１０８  遅延調整量決定部
１０９  演算処理回路
１１０  データ中継回路
１１２  タイミング調整回路
１１３  データ送受信部
１１４  メモリ
１１５  クロックシフト部
１１６  遅延調整量決定部
１１７  演算処理回路
１１８  データ中継回路
１２０  タイミング調整回路
１２１  データ送受信部
１２２  メモリ
１２３  クロックシフト部
１２４  遅延調整量決定部
１２５  リピータ回路
１２６  リピータ回路
【図１】
2010211250.tif 000003
【図２】
2010211250.tif 000004
【図３】
2010211250.tif 000005
【図４】
2010211250.tif 000006
【図５】
2010211250.tif 000007
【図６】
2010211250.tif 000008
【図７】
2010211250.tif 000009