(57)【要約】【課題】ＰＣＩ−Ｅｘｐｒｅｓｓインタフェースやその他の非同期インタフェースをノースブリッジとＩ／Ｏバスブリッジとの間の接続として使用したシステムを構成可能なフォルトトレラントシステムを提供する。【解決手段】ＰＣＩ−Ｅｘｐｒｅｓｓインタフェース１０３〜１０６の非同期インタフェースはノースブリッジ１３，２３とＩ／Ｏバスブリッジ３１，４１との間のインタフェースとして用いられている。同期制御部１５，１６，２５，２６はノースブリッジ１３，２３内に分周クロックに同期して動作する同期Ａｃｋ信号を基に、ＰＣＩ−Ｅｘｐｒｅｓｓ制御部１７，１８，２７，２８へのパケットの送受信を両方のノースブリッジ１３，２３で同期させる。【選択図】      図１
2004280732.tif 000002
【特許請求の範囲】
【請求項１】
第１及び第２のノースブリッジと第１及び第２の入出力バスブリッジとによって二重化して構成し、非同期インタフェースを前記第１及び第２のノースブリッジと前記第１及び第２の入出力バスブリッジとの間のインタフェースとして用いるフォルトトレラントシステムであって、前記非同期インターフェースへのデータ送受信を前記第１及び第２のノースブリッジの両方で同期させる手段を前記第１及び第２のノースブリッジ各々に有することを特徴とするフォルトトレラントシステム。
【請求項２】
少なくとも前記非同期インターフェースへのデータ送受信を制御する制御手段を前記第１及び第２のノースブリッジ各々に含み、
前記非同期インターフェースへのデータ送受信を同期させる手段は、前記制御手段へのデータ送受信を前記第１及び第２のノースブリッジ間で同期させる同期制御手段を含むことを特徴とする請求項１記載のフォルトトレラントシステム。
【請求項３】
前記同期制御手段は、分周クロックに同期して動作する同期応答信号を基に前記制御手段へのデータ送受信を前記第１及び第２のノースブリッジ間で同期させることを特徴とする請求項２記載のフォルトトレラントシステム。
【請求項４】
第１及び第２のノースブリッジと第１及び第２の入出力バスブリッジとによって二重化して構成し、非同期インタフェースを前記第１及び第２のノースブリッジと前記第１及び第２の入出力バスブリッジとの間のインタフェースとして用いるフォルトトレラントシステムの同期化方法であって、前記非同期インターフェースへのデータ送受信を前記第１及び第２のノースブリッジの両方で同期させることを特徴とする同期化方法。
【請求項５】
前記第１及び第２のノースブリッジ各々に設けられかつ少なくとも前記非同期インターフェースへのデータ送受信を制御する制御手段へのデータ送受信を前記第１及び第２のノースブリッジ間で同期させることを特徴とする請求項４記載の同期化方法。
【請求項６】
前記第１及び第２のノースブリッジ間で同期させる際に、分周クロックに同期して動作する同期応答信号を基に前記制御手段へのデータ送受信を前記第１及び第２のノースブリッジ間で同期させることを特徴とする請求項５記載の同期化方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はフォルトトレラントシステム及びそれに用いる同期化方法に関し、特に各ユニットを二重化して構成したフォルトトレラントシステムにおける同期化方法に関する。
【０００２】
【従来の技術】
従来、この種のフォルトトレラントシステムにおいては、チップセット内のインタフェースとして、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バス等の同期インタフェースを使用し、それによってプロセッサユニットがまったく同じように動作している（例えば、特許文献１参照）。
【０００３】
一般のコンピュータシステムに使用されるチップセットにも、同期インタフェースを使用するものが多く、それらを流用してフォルトトレラントシステムを構成することが可能である。
【０００４】
【特許文献１】
特開平７−０７３０５９号公報（第１２〜１６頁、図１）
【０００５】
【発明が解決しようとする課題】
しかしながら、従来のフォルトトレラントシステムでは、周辺装置やネットワークの高速化によって、Ｉ／Ｏ（入出力）バスとして高速なものが要求されるようになり、それにともなってチップセット内のインタフェースも高速化が必要になってきている。
【０００６】
従来、使われてきたＰＣＩバス等の同期インタフェースでは、クロックスキュー等の問題によって高速化に限界があるため、ＰＣＩ−Ｅｘｐｒｅｓｓ等の非同期インタフェースが今後使われるようになる見込みである。
【０００７】
しかしながら、非同期インタフェースでは複数の相手へのデータ転送において、例えば送信側が同時に転送を開始しても、受信側が受信するタイミングが別々となる。また、ＰＣＩ−Ｅｘｐｒｅｓｓインタフェースでは、インタフェース上でエラーが発生した場合、受信側が送信側へエラーとなった部分の再送を要求するため、受信側が有効なデータを受信するタイミングが別々になる可能性がある。
【０００８】
これはフォルトトレラントシステムにおいて、非同期インタフェースをチップセット内のインタフェースとして使用すると、二重化されたプロセッサユニットの動きが異なってしまうことを意味する。フォルトトレラントシステムでは最低限、二重化されたプロセッサがまったく同じように動くことが必要であるため、そのままでは非同期インタフェースをチップセット内のインタフェースとして用いたチップセットを使用してフォルトトレラントシステムを構成することはできない。
【０００９】
そこで、本発明の目的は上記の問題点を解消し、ＰＣＩ−Ｅｘｐｒｅｓｓインタフェースやその他の非同期インタフェースをノースブリッジとＩ／Ｏバスブリッジとの間の接続として使用したシステムを構成することができるフォルトトレラントシステム及びそれに用いる同期化方法を提供することにある。
【００１０】
【課題を解決するための手段】
本発明によるフォルトトレラントシステムは、第１及び第２のノースブリッジと第１及び第２の入出力バスブリッジとによって二重化して構成し、非同期インタフェースを前記第１及び第２のノースブリッジと前記第１及び第２の入出力バスブリッジとの間のインタフェースとして用いるフォルトトレラントシステムであって、前記非同期インターフェースへのデータ送受信を前記第１及び第２のノースブリッジの両方で同期させる手段を前記第１及び第２のノースブリッジ各々に備えている。
【００１１】
本発明による同期化方法は、第１及び第２のノースブリッジと第１及び第２の入出力バスブリッジとによって二重化して構成し、非同期インタフェースを前記第１及び第２のノースブリッジと前記第１及び第２の入出力バスブリッジとの間のインタフェースとして用いるフォルトトレラントシステムの同期化方法であって、前記非同期インターフェースへのデータ送受信を前記第１及び第２のノースブリッジの両方で同期させている。
【００１２】
すなわち、本発明の同期化方法は、非同期インタフェースを使用するフォルトトレラントシステムにおける同期化方法であり、ＰＣＩ（ＰｅｒｉｐｈｅｒａｌＣｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）−Ｅｘｐｒｅｓｓインタフェース等の非同期インタフェースをノースブリッジとＩ／Ｏ（入出力）バスブリッジとの間のインタフェースとして用いたフォルトトレラントシステムにおいて、ノースブリッジ内に分周クロックに同期して動作する同期Ａｃｋ（Ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔ）信号を基にＰＣＩ−Ｅｘｐｒｅｓｓ制御部へのパケットの送受信を両ノースブリッジで同期させる同期制御部を備えることによって、両プロセッサがまったく同じように動作可能としている。
【００１３】
より具体的に説明すると、本発明のフォルトトレラントシステムでは、Ｉ／Ｏバスブリッジ（０）内の同期制御部が送信バッファ（０）に有効なパケットが存在し、かつ送信バッファ（１）と送信バッファ（２）との両方にパケットの書込みが可能な状態であるなら、送信バッファ（１）と送信バッファ（２）とに対して同時に同じパケットを転送する。
【００１４】
その後、本発明のフォルトトレラントシステムでは、ＰＣＩ−Ｅｘｐｒｅｓｓ制御部（０）とＰＣＩ−Ｅｘｐｒｅｓｓ制御部（１）とが各々別々のタイミングで送信バッファ（１）と送信バッファ（２）とからパケットを読出し、ＰＣＩ−Ｅｘｐｒｅｓｓインタフェースに送信する。これによって、ノースブリッジ（０）とノースブリッジ（１）とには同じパケットが送信される。
【００１５】
ノースブリッジ（０）内のＰＣＩ−Ｅｘｐｒｅｓｓ制御部（０）とノースブリッジ（１）内のＰＣＩ−Ｅｘｐｒｅｓｓ制御部（０）とは、Ｉ／Ｏバスブリッジ（０）からＰＣＩ−Ｅｘｐｒｅｓｓインタフェース経由で送られてきたパケットを受信し、そのパケットがノースブリッジ（０）内の同期制御部（０）の同期バッファ（０）及びノースブリッジ（１）内の同期制御部（０）の同期バッファ（０）に書込まれる。ＰＣＩ−Ｅｘｐｒｅｓｓインタフェースは非同期インタフェースなので、パケットを受信し、同期バッファ（０）に書込むタイミングは両方のノースブリッジ（０），（１）で異なっている。
【００１６】
ノースブリッジ（０）内の同期制御部（０）は同期バッファ（０）に有効なパケットが存在し、同期バッファ（１）が空いている場合、分周Ｃｌｏｃｋの立上りのタイミングでＩｎｂｏｕｎｄ同期Ａｃｋ信号（１）をアサートする。同様に、ノースブリッジ（１）内の同期制御部（０）は同期バッファ（０）に有効なパケットが存在し、同期バッファ（１）が空いている場合、分周Ｃｌｏｃｋの立上りのタイミングでＩｎｂｏｕｎｄ同期Ａｃｋ信号（０）をアサートする。
【００１７】
分周Ｃｌｏｃｋの立上りのタイミングで両方のＩｎｂｏｕｎｄ同期Ａｃｋ信号（０），（１）がアサートされていた場合、同期制御部（０），（１）は各々同期バッファ（０）から同期バッファ（１）へのパケットの転送を開始する。
【００１８】
これによって、Ｉ／Ｏバスブリッジ（０）が送信したパケットはノースブリッジ（０）内の同期バッファ（１）とノースブリッジ（１）内の同期バッファ（１）とにまったく同じタイミングで書込まれるようになり、ノースブリッジ（０）内のその他の制御部とノースブリッジ（１）内のその他の制御部とは同期制御部から同時にパケットを読出すことが可能になる。
【００１９】
ノースブリッジ（０）内のその他の制御部はＩ／Ｏバスブリッジ（０）方向に送るパケットがある場合、同期制御部（０）の同期バッファ（２）が空いているならばパケットを書込む。同様に、ノースブリッジ（１）内のその他の制御部はＩ／Ｏバスブリッジ（１）方向に送るパケットがある場合、同期制御部（０）の同期バッファ（２）が空いているならばパケットを書込む。
【００２０】
ノースブリッジ（０）内の同期制御部（０）は同期バッファ（３）が空いている場合、分周Ｃｌｏｃｋの立上りのタイミングでＯｕｔｂｏｕｎｄ同期Ａｃｋ信号（１）をアサートする。同様に、ノースブリッジ（１）内の同期制御部（０）は同期バッファ（３）が空いている場合、分周Ｃｌｏｃｋの立上りのタイミングでＯｕｔｂｏｕｎｄ同期Ａｃｋ信号（０）をアサートする。
【００２１】
分周Ｃｌｏｃｋの立上りのタイミングで、両方のＯｕｔｂｏｕｎｄ同期Ａｃｋ信号（０），（１）がアサートされていた場合、ノースブリッジ（０）内の同期制御部（０）とノースブリッジ（１）内の同期制御部（０）とは各々同期バッファ（２）から同期バッファ（３）へのパケットの転送を開始する。
【００２２】
これによって、ノースブリッジ（０）内の同期バッファ（２）と、ノースブリッジ（１）内の同期バッファ（２）とからは、まったく同じタイミングでパケットが読出される、すなわち、同期バッファ（２）の空き状況は両方のノースブリッジ（０），（１）で同期することになり、ノースブリッジ（０）内のその他の制御部とノースブリッジ（１）内のその他の制御部とは同期制御部に同時にパケットを書込むことが可能になる。
【００２３】
その後、ノースブリッジ（０）内のＰＣＩ−Ｅｘｐｒｅｓｓ制御部（０）とノースブリッジ（１）内のＰＣＩ−Ｅｘｐｒｅｓｓ制御部（０）とは、各々別々のタイミングで同期バッファ（３）からパケットを読出し、ＰＣＩ−Ｅｘｐｒｅｓｓインタフェースに送信する。
【００２４】
Ｉ／Ｏバスブリッジ（０）内のＰＣＩ−Ｅｘｐｒｅｓｓ制御部（０），（１）は、ノースブリッジ（０），（１）からＰＣＩ−Ｅｘｐｒｅｓｓインタフェース経由で送られてきたパケットを受信し、同期制御部の受信バッファ（０）及び受信バッファ（１）に書込む。
【００２５】
ＰＣＩ−Ｅｘｐｒｅｓｓインタフェースは非同期インタフェースであり、両方のノースブリッジ（０），（１）がパケットを発行するタイミングも別々なので、パケットを受信し、受信バッファに書込むタイミングが異なっている。Ｉ／Ｏバスブリッジ（０）内の同期制御部は、受信バッファ（０）と受信バッファ（１）との両方に有効なパケットがある場合、受信バッファ（０）と受信バッファ（１）とからのパケット読出しを同時に実施し、片方からのパケットのみを受信バッファに書込む。
【００２６】
これらによって、本発明のフォルトトレラントシステムでは、ＰＣＩ−Ｅｘｐｒｅｓｓ制御部が同期して動作しなくても、ノースブリッジ（０）内のその他の制御部とノースブリッジ（１）内のその他の制御部とが、まったく同じ動作をすることが可能となる。その結果、プロセッサ（０）とプロセッサ（１）とは、まったく同じ動作をすることが可能となる。
【００２７】
【発明の実施の形態】
次に、本発明の実施例について図面を参照して説明する。図１は本発明の一実施例によるフォルトトレラントシステムの構成を示すブロック図である。図１において、本発明の一実施例によるフォルトトレラントシステムはＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）−Ｅｘｐｒｅｓｓインタフェース（０〜３）１０３〜１０６を、ノースブリッジ（０，１）１３，２３とＩ／Ｏ（入出力）バスブリッジ（０，１）３１，４１との間のインタフェースとして用い、各構成要素を二重化している。
【００２８】
本発明の一実施例によるフォルトトレラントシステムはプロセッサユニット（０，１）１，２と、Ｉ／Ｏユニット（０，１）３，４と、プロセッサユニット（０，１）１，２とＩ／Ｏユニット（０，１）３，４との間を結ぶ４本のＰＣＩ−Ｅｘｐｒｅｓｓインタフェース（０〜３）１０３〜１０６とから構成されている。
【００２９】
プロセッサユニット（０）１はプロセッサ（０）１１と、プロセッサバス（０）１０１と、メインメモリ（０）１２と、ノースブリッジ（０）１３とから構成されている。同様に、プロセッサユニット（１）２はプロセッサ（１）２１と、プロセッサバス（１）１０２と、メインメモリ（１）２２と、ノースブリッジ（０）２３とから構成されている。
【００３０】
Ｉ／Ｏユニット（０）３はＩ／Ｏバスブリッジ（０）３１と、ＰＣＩ−Ｘバス（０）１０７と、ＰＣＩ−Ｘデバイス（０）３６とから構成されている。同様に、Ｉ／Ｏユニット（１）４はＩ／Ｏバスブリッジ（１）４１とＰＣＩ−Ｘバス（２）１０８と、ＰＣＩ−Ｘデバイス（２）４６とから構成されている。
【００３１】
これら両方のＩ／Ｏユニット（０，１）３，４には同じＰＣＩ−Ｘデバイスが搭載されている。ＰＣＩ−Ｘデバイス（０）３６は周辺装置（０）５と、ＰＣＩ−Ｘデバイス（２）４６は周辺装置（２）６とにそれぞれ接続されている。
【００３２】
２つのプロセッサ（０，１）１１，２１は、通常、まったく同じ動作をしている。片方のプロセッサユニットで障害等発生した場合にはそのプロセッサユニットを切離し、もう片方のプロセッサユニットのみを使用してシステム全体が動作し続ける。
【００３３】
周辺装置へのデータのライトは、まず周辺装置（０）５にライトした後、同じデータを周辺装置（２）６にもライトする。リードは、通常、周辺装置（０）５からのみリードするが、障害によるＩ／Ｏユニット（０）３の切離し等によって周辺装置（０）５にアクセスすることができない場合には、周辺装置（２）６からリードする。２つのプロセッサ（０，１）１１，２１はまったく同じ動作をしているので、周辺装置へのデータのライト／リードを両プロセッサが同時に要求する。
【００３４】
ノースブリッジ（０）１３はＰＣＩ−Ｅｘｐｒｅｓｓインタフェース（０．１）１０３，１０４に対するパケット送受信等を各々制御するＰＣＩ−Ｅｘｐｒｅｓｓ制御部（０，１）１７，１８と、ノースブリッジ（０）１３内の他の部分から来るＰＣＩ−Ｅｘｐｒｅｓｓインタフェースを経由するパケットの読み書きをノースブリッジ（１）２３側と同期させる同期制御部（０，１）１５，１６と、それ以外の動作（プロセッサバス制御等）を行うその他の制御部１４とから構成されている。
【００３５】
同様に、ノースブリッジ（１）２３はＰＣＩ−Ｅｘｐｒｅｓｓインタフェース（２，３）１０５，１０６に対するパケット送受信等を各々制御するＰＣＩ−Ｅｘｐｒｅｓｓ制御部（０，１）２７，２８と、ノースブリッジ（１）２３内の他の部分から来るＰＣＩ−Ｅｘｐｒｅｓｓインタフェースを経由するパケットの読み書きをノースブリッジ（０）１３側と同期させる同期制御部（０，１）２５，２６と、それ以外の動作を行うその他の制御部２４とから構成されている。
【００３６】
Ｉ／Ｏバスブリッジ（０）３１はＰＣＩ−Ｅｘｐｒｅｓｓインタフェース（０，２）１０３，１０５に対するパケット送受信等を各々制御するＰＣＩ−Ｅｘｐｒｅｓｓ制御部（０，１）３２，３３と、２つのＰＣＩ−Ｅｘｐｒｅｓｓ制御部（０，１）３２，３３に対して同時にパケットを読み書きする同期制御部３４と、それ以外の動作（ＰＣＩ−Ｘバス制御等）を行うその他の制御部３５とから構成されている。
【００３７】
同様に、Ｉ／Ｏバスブリッジ（１）４１はＰＣＩ−Ｅｘｐｒｅｓｓインタフェース（１，３）１０４，１０６に対するパケット送受信等を各々制御するＰＣＩ−Ｅｘｐｒｅｓｓ制御部（０，１）４２，４３と、２つのＰＣＩ−Ｅｘｐｒｅｓｓ制御部（０，１）４２，４３に対して同時にパケットを読み書きする同期制御部４４と、それ以外の動作を行うその他の制御部４５とから構成されている。
【００３８】
図２は図１の同期制御部の詳細な構成を示すブロック図である。図２において、ノースブリッジ（０）１３内の同期制御部（０）１５とノースブリッジ（１）２３内の同期制御部（０）２５とは、Ｉｎｂｏｕｎｄ同期Ａｃｋ信号（０〜１）１１３，１１４及びＯｕｔｂｏｕｎｄ同期Ａｃｋ信号（０〜１）１１５，１１６で接続されている。
【００３９】
図２には記載していないが、ノースブリッジ（０）１３内の同期制御部（１）１６及びノースブリッジ（１）２３内の同期制御部（１）２６も、上記と同様の信号線で接続されている。また、ノースブリッジ（０）１３内の同期制御部（０，１）１５，１６と、ノースブリッジ（１）２３内の同期制御部（０，１）２５，２６とには、分周器７で分周された同一の分周Ｃｌｏｃｋ１１２が供給されている。
【００４０】
ノースブリッジ（０）１３内の同期制御部（０）１５は同期バッファ（０〜３）１５１，１５２，１５４，１５５と、制御回路１５３とから構成されている。ＰＣＩ−Ｅｘｐｒｅｓｓインタフェース（０）１０３から受信したパケットは、ＰＣＩ−Ｅｘｐｒｅｓｓ制御部（０）１９から同期バッファ（０）１５２に書込まれ、その後、制御回路１５３の制御によって同期バッファ（１）１５１に転送され、その他の制御部１３に送られる。
【００４１】
ＰＣＩ−Ｅｘｐｒｅｓｓインタフェース（０）１０３に送信するパケットは、その他の制御部１３から同期バッファ（２）１５４に書込まれ、その後、制御回路１５３の制御によって同期バッファ（３）１５５に転送され、ＰＣＩ−Ｅｘｐｒｅｓｓ制御部（０）１７に送られる。
【００４２】
ノースブリッジ（０）１３内の同期制御部（１）１６と、ノースブリッジ（１）２３内の同期制御部（０）２５及び同期制御部（１）２６とにおいても、上記の同期制御部（０）１５と同様の動作が行われる。
【００４３】
Ｉ／Ｏバスブリッジ（０）３１内の同期制御部３４は受信バッファ（０〜２）３４１〜３４３と、送信バッファ（０〜２）３４４〜３４６と、セレクタ３４７と、制御回路３４８とから構成されている。
【００４４】
両方のＰＣＩ−Ｅｘｐｒｅｓｓインタフェース（０，２）１０３，１０５から受信したパケットは、ＰＣＩ−Ｅｘｐｒｅｓｓ制御部（０，１）３２，３３から受信バッファ（０，１）３４１，３４２に書込まれ、その後、セレクタ３４７によって選択された方のみ受信バッファ（２）３４３に書込まれ、もう片方は破棄される。その後、そのパケットはその他の制御部３５に送られる。
【００４５】
ＰＣＩ−Ｅｘｐｒｅｓｓインタフェース１に送信するパケットは、その他の制御部３５から送信バッファ（０）３４４に書込まれ、その後、制御回路３４８の制御によって送信バッファ（１，２）３４５，３４６に同時に転送され、ＰＣＩ−Ｅｘｐｒｅｓｓ制御部（０，１）３２，３３に送られる。
【００４６】
この図２を参照して本発明の一実施例によるフォールトトレラントシステムの動作について説明する。
【００４７】
Ｉ／Ｏバスブリッジ（０）３１内の同期制御部３４は送信バッファ（０）３４４に有効なパケットが存在し、かつ送信バッファ（１，２）３４５，３４６の両方共、パケットの書込みが可能な状態であるならば、送信バッファ（１，２）３４５，３４６に対して、同時に同じパケットを転送する。その後、ＰＣＩ−Ｅｘｐｒｅｓｓ制御部（０，１）３２，３３は各々別々のタイミングで送信バッファ（１，２）３４５，３４６からパケットを読出し、ＰＣＩ−Ｅｘｐｒｅｓｓインタフェース（０，２）１０３，１０５に送信する。これによって、ノースブリッジ（０，１）１３，２３には同じパケットが送信される。
【００４８】
ノースブリッジ（０）１３内のＰＣＩ−Ｅｘｐｒｅｓｓ制御部（０）１７とノースブリッジ（１）２３内のＰＣＩ−Ｅｘｐｒｅｓｓ制御部（０）２７とは、Ｉ／Ｏバスブリッジ（０）３１からＰＣＩ−Ｅｘｐｒｅｓｓインタフェース（０，２）１０３，１０５経由で送られてきたパケットを受信し、同期制御部（０）１５の同期バッファ（０）１５２及び同期制御部（０）２５の同期バッファ（０）２５２に書込む。ＰＣＩ−Ｅｘｐｒｅｓｓインタフェース（０，２）１０３，１０５は非同期インタフェースなので、パケットを受信し、同期バッファ（０）１５２，２５２に書込むタイミングは両ノースブリッジ（０，１）１３，２３で異なっている。
【００４９】
ノースブリッジ（０）１３内の同期制御部（０）１５は同期バッファ（０）１５２に有効なパケットが存在し、同期バッファ（１）１５１が空いている場合、分周Ｃｌｏｃｋ１１２の立上りのタイミングでＩｎｂｏｕｎｄ同期Ａｃｋ信号（１）１１４をアサートする。
【００５０】
同様に、ノースブリッジ（１）２３内の同期制御部（０）２５は同期バッファ（０）２５２に有効なパケットが存在し、同期バッファ（１）２５１が空いている場合、分周Ｃｌｏｃｋ１１２の立上りのタイミングでＩｎｂｏｕｎｄ同期Ａｃｋ信号（０）１１３をアサートする。
【００５１】
分周Ｃｌｏｃｋ１１２の立上りのタイミングで、両方のＩｎｂｏｕｎｄ同期Ａｃｋ信号（０，１）１１３，１１４がアサートされていた場合、同期制御部（０）１５，２５は各々同期バッファ（０）１５２，２５２から同期バッファ（１）１５１，２５１へのパケットの転送を開始する。
【００５２】
これによって、Ｉ／Ｏバスブリッジ（０）３１が送信したパケットはノースブリッジ（０）１３内の同期バッファ（１）１５１とノースブリッジ（１）２３内の同期バッファ（１）２５１とにまったく同じタイミングで書込まれるようになり、ノースブリッジ（０）１３内のその他の制御部１４とノースブリッジ（１）２３内のその他の制御部２４とは同期制御部（０）１５，２５から同時にパケットを読出すことが可能になる。
【００５３】
ノースブリッジ（０）１３内のその他の制御部１４はＩ／Ｏバスブリッジ（０）３１方向に送るパケットがある場合、同期制御部（０）１５の同期バッファ（２）１５４が空いているならば、パケットを書込む。同様に、ノースブリッジ（１）２３内のその他の制御部２４はＩ／Ｏバスブリッジ（１）４１方向に送るパケットがある場合、同期制御部（０）２５の同期バッファ（２）２５１が空いているならば、パケットを書込む。
【００５４】
同期制御部（０）１５は同期バッファ（３）１５５が空いている場合、分周Ｃｌｏｃｋ１１２の立上りのタイミングでＯｕｔｂｏｕｎｄ同期Ａｃｋ信号（１）１１６をアサートする。同様に、ノースブリッジ（１）２３内の同期制御部（０）２５は同期バッファ（３）２５５が空いている場合、分周Ｃｌｏｃｋ１１２の立上りのタイミングでＯｕｔｂｏｕｎｄ同期Ａｃｋ信号（０）１１５をアサートする。
【００５５】
分周Ｃｌｏｃｋ１１２の立上りのタイミングで、両方のＯｕｔｂｏｕｎｄ同期Ａｃｋ信号（０，１）１１５，１１６がアサートされていた場合、同期制御部（０）１５，２５は各々同期バッファ（２）１５４，２５４から同期バッファ（３）１５５，２５５へのパケットの転送を開始する。
【００５６】
これによって、ノースブリッジ（０）１３内の同期バッファ（２）１５４と、ノースブリッジ（１）２３内の同期バッファ（２）２５４とからはまったく同じタイミングで、パケットが読出される。すなわち、同期バッファ（２）１５４，２５４の空き状況は両方のノースブリッジ（０，１）１３，２３で同期することになり、ノースブリッジ（０）１３内のその他の制御部１４とノースブリッジ（１）２３内のその他の制御部２４とは同期制御部（０）１５，２５に同時にパケットを書込むことが可能になる。
【００５７】
その後、ＰＣＩ−Ｅｘｐｒｅｓｓ制御部（０）１７，２７は各々別々のタイミングで同期バッファ（３）１５５，２５５からパケットを読出し、ＰＣＩ−Ｅｘｐｒｅｓｓインタフェース（０，２）１０３，１０５に送信する。
【００５８】
Ｉ／Ｏバスブリッジ（０）３１内のＰＣＩ−Ｅｘｐｒｅｓｓ制御部（０，１）３２，３３は、ノースブリッジ（０，１）１３，２３からＰＣＩ−Ｅｘｐｒｅｓｓインタフェース（０，２）１０３，１０５経由で送られてきたパケットを受信し、同期制御部３４の受信バッファ（０，１）３４１，３４２に書込む。
【００５９】
ＰＣＩ−Ｅｘｐｒｅｓｓインタフェース（０，２）１０３，１０５は非同期インタフェースであり、両方のノースブリッジ（０，１）１３，２３がパケットを発行するタイミングも別々なので、パケットを受信し、受信バッファ（０，１）３４１，３４２に書込むタイミングは異なっている。
【００６０】
Ｉ／Ｏバスブリッジ（０）３１内の同期制御部３４は受信バッファ（０，１）３４１，３４２の両方に有効なパケットがある場合、受信バッファ（０，１）３４１，３４２からのパケット読出しを同時に実施し、片方からのパケットのみを受信バッファ（２）３４３に書込む。
【００６１】
これらによって、本実施例では、ＰＣＩ−Ｅｘｐｒｅｓｓ制御部が同期して動作しなくても、ノースブリッジ（０）１３内のその他の制御部１４とノースブリッジ（１）２３内のその他の制御部２４とは、まったく同じ動作をすることが可能となる。その結果、プロセッサ（０，１）１１，２１はまったく同じ動作をすることが可能となる。
【００６２】
図３は図２の同期バッファ（２）１５４，２５４から同期バッファ（３）１５５，２５５へのパケットの転送動作を示すタイムチャートであり、図４は図２の同期バッファ（０）１５２，２５２から同期バッファ（１）１５１，２５１へのパケットの転送動作を示すタイムチャートである。これら図１〜図４を参照して周辺装置（０，２）５，６へのアクセスにともなうＰＣＩ−Ｘデバイス（０，２）３６，４６へのリード動作について説明する。
【００６３】
プロセッサ（０）１１がプロセッサバス（０）１０１に発行したＰＣＩ−Ｘデバイス（０）３６へのリードリクエストは、ノースブリッジ（０）１３内のその他の制御部１４が受取り、ＰＣＩ−Ｅｘｐｒｅｓｓインタフェース（０〜３）１０３〜１０６での送受信に合った形（パケットと呼ぶ）に変更される。その後、このパケットは同期制御部（０）１５の同期バッファ（２）１５４が空ならば、同期バッファ（２）１５４に書込まれる。
【００６４】
プロセッサ（０）１１とプロセッサ（１）２１とはまったく同じように動作しているため、プロセッサ（１）２１はプロセッサ（０）１１と同じタイミングでＰＣＩ−Ｘデバイス（０）３６へのリードリクエストをプロセッサバス（１）１０２に発行する。このリードリクエストはノースブリッジ（１）２３内のその他の制御部２４が受取り、パケットに変更された後、同期制御部（０）２５の同期バッファ（２）２５４が空ならば、同期バッファ（２）２５４に書込まれる。書込まれるパケットの中身及び書込みのタイミングは同期バッファ（２）１５４と同期バッファ（２）２５４とでまったく同じである。
【００６５】
制御回路１５３，２５３はＯｕｔｂｏｕｎｄ同期Ａｃｋ信号（０，１）１１５，１１６を使用してタイミングを合わせ、同時に同期バッファ（２）１５４，２５４から同期バッファ（３）１５５，２５５にパケットを転送する。同期バッファ（３）１５５，２５５に書込まれたパケットは両方のノースブリッジ（０，１）１３，２３で別々のタイミングで、ＰＣＩ−Ｅｘｐｒｅｓｓ制御部（０）１７，２７によって読出され、ＰＣＩ−Ｅｘｐｒｅｓｓインタフェース（０，２）１０３，１０５に送信される。
【００６６】
この場合、タイミングが別々なのは、ＰＣＩ−Ｅｘｐｒｅｓｓインタフェース（０，２）１０３，１０５が非同期インタフェースであり、かつ再送等の動作があるため、ＰＣＩ−Ｅｘｐｒｅｓｓインターフェース（０，２）１０３，１０５の動きが異なるためである。
【００６７】
次に、同期バッファ（２）１５４，２５４から同期バッファ（３）１５５，２５５へのパケットの転送について図３を参照して説明する。
【００６８】
制御回路１５３は同期バッファ（３）１５５が空（すなわち、ライトアドレスとリードアドレスとが同じ値）ならば、分周Ｃｌｏｃｋ１１２の立上りのタイミングで、Ｏｕｔｂｏｕｎｄ同期Ａｃｋ信号（１）１１６をアサートする（図３の“０”のタイミング）。
【００６９】
同様に、制御回路２５３は同期バッファ（３）２５５が空ならば、分周Ｃｌｏｃｋ１１２の立上りのタイミングで、Ｏｕｔｂｏｕｎｄ同期Ａｃｋ信号（０）１１５をアサートする（図３の“６”のタイミング）。本実施例ではＰＣＩ−Ｅｘｐｒｅｓｓ制御部（０）２７のパケット送信がＰＣＩ−Ｅｘｐｒｅｓｓ制御部（０）１７より遅れているものとする。そのため、制御回路２５３は制御回路１５３と同じタイミングではＯｕｔｂｏｕｎｄ同期Ａｃｋ信号（０）１１５をアサートすることができない。
【００７０】
制御回路１５３は自分がアサートするＯｕｔｂｏｕｎｄ同期Ａｃｋ信号（１）１１６と、制御回路２５３がアサートするＯｕｔｂｏｕｎｄ同期Ａｃｋ信号（０）１１５との両信号がアサートされていて、かつ同期バッファ（２）１５４にパケットが存在する場合、分周Ｃｌｏｃｋ１１２の立上りのタイミングで、同期バッファ（３）１５５へのパケットの転送を開始する（図３の“１２”のタイミング）。
【００７１】
同様に、制御回路２５３は自分がアサートするＯｕｔｂｏｕｎｄ同期Ａｃｋ信号（０）１１５と、制御回路１５３がアサートするＯｕｔｂｏｕｎｄ同期Ａｃｋ信号（１）１１６との両信号がアサートされていて、かつ同期バッファ（２）２５４にパケットが存在する場合、分周Ｃｌｏｃｋ１１２の立上りのタイミングで、同期バッファ（３）２５５へのパケットの転送を開始する（図３の“１２”のタイミング）。
【００７２】
このタイミングは制御回路１５３と制御回路２５３とでまったく同じであり、その結果、同期バッファ（２）１５４が空になるタイミングと、同期バッファ（２）２５４が空になるタイミング（図３の“１７”のタイミング）もまったく同じになる。すなわち、次のパケットを、その他の制御部１４が同期バッファ（２）１５４に書込めるようになるタイミングと、その他の制御部２４が同期バッファ（２）２５４に書込めるようになるタイミングとがまったく同じになる。
【００７３】
ＰＣＩ−Ｅｘｐｒｅｓｓ制御部（０）１７によってＰＣＩ−Ｅｘｐｒｅｓｓインタフェース（０）１０３に送信されたパケットは、Ｉ／Ｏバスブリッジ（０）３１内のＰＣＩ−Ｅｘｐｒｅｓｓ制御部（０）３２によって受信され、受信バッファ（０）３４１が空ならば、受信バッファ（０）３４１に書込まれる。
【００７４】
同様に、ＰＣＩ−Ｅｘｐｒｅｓｓ制御部（０）２７によってＰＣＩ−Ｅｘｐｒｅｓｓインタフェース（２）１０５に送信されたパケットは、Ｉ／Ｏバスブリッジ（０）３１内のＰＣＩ−Ｅｘｐｒｅｓｓ制御部（１）３３によって受信され、受信バッファ（１）３４２が空ならば、受信バッファ（１）３４２に書込まれる。書込まれるパケットの中身は、受信バッファ（０，１）３４１，３４２で同じであるが、ＰＣＩ−Ｅｘｐｒｅｓｓインタフェース（０，１）１０３，１０５が非同期インタフェースであり、かつ再送等の動作があるため、書込みのタイミングはまったく異なっている。
【００７５】
制御回路３４８は受信バッファ（０，１）３４１，３４２にパケットがある時に、受信バッファ（２）３４３へのパケットの転送を実施する。その際、受信バッファ（０，１）３４１，３４２を同時に読出すが、セレクタ３４７によってどちらかのみが選択され、もう片方のパケットは破棄される。その後、その他の制御部３５が受信バッファ（２）３４３からパケットを読出し、ＰＣＩ−Ｘバス（０）１０７にリードリクエストとして発行する。
【００７６】
ＰＣＩ−Ｘバス（０）１０７に発行されたリードリクエストは、ＰＣＩ−Ｘデバイス（０）３６によって受信され、ＰＣＩ−Ｘデバイス（０）３６はリードリクエストに対するリードレスポンスをＰＣＩ−Ｘバス（０）１０７に発行する。
【００７７】
ＰＣＩ−Ｘバス（０）３６に発行されたリードレスポンスは、Ｉ／Ｏバスブリッジ（０）３１内のその他の制御部３５が受取り、パケットに変更された後、同期制御部３４の送信バッファ（０）３４４が空ならば、送信バッファ（０）３４４に書込まれる。制御回路３４８は送信バッファ（１，２）３４５，３４６の両方が空の時に、送信バッファ（０）３４４から送信バッファ（１，２）３４５，３４６への転送を実施する。
【００７８】
送信バッファ（１，２）３４５，３４６に書込まれたパケットの中身及び書込みのタイミングはまったく同じである。送信バッファ（１，２）３４５，３４６に書込まれたパケットは、別々のタイミングでＰＣＩ−Ｅｘｐｒｅｓｓ制御部（０，１）３２，３３によって読出され、ＰＣＩ−Ｅｘｐｒｅｓｓインタフェース（０，２）１０３，１０５に送信される。
【００７９】
ＰＣＩ−Ｅｘｐｒｅｓｓ制御部（０）３２によってＰＣＩ−Ｅｘｐｒｅｓｓインタフェース（０）１０３に送信されたパケットは、ノースブリッジ（０）１３内のＰＣＩ−Ｅｘｐｒｅｓｓ制御部（０）１７によって受信され、同期バッファ（０）１５２が空ならば、同期バッファ（０）１５２に書込まれる。
【００８０】
同様に、ＰＣＩ−Ｅｘｐｒｅｓｓ制御部（１）３３によってＰＣＩ−Ｅｘｐｒｅｓｓインタフェース（２）１０５に送信されたパケットは、ノースブリッジ（１）２３内のＰＣＩ−Ｅｘｐｒｅｓｓ制御部（０）２７によって受信され、同期バッファ（０）２５２が空ならば、同期バッファ（０）２５２に書込まれる。
【００８１】
同期バッファ（０，１）１５２，２５２に書込まれたパケットの中身はまったく同じであるが、書込まれるタイミングはまったく別々である。制御回路１５３，２５３はＩｎｂｏｕｎｄ同期Ａｃｋ信号（０，１）１１３，１１４を使用してタイミングを合わせ、同時に同期バッファ（０）１５２，２５２から同期バッファ（１）１５１，２５１にパケットを転送する。
【００８２】
同期バッファ（１）１５１，２５１に書込まれたパケットは、両方のノースブリッジ（０，１）１３，２３で同じタイミングで、その他の制御部１４，２４によって読出され、プロセッサバス（０，１）１０１，１０２に送信される。
【００８３】
続いて、同期バッファ（０）１５２，２５２から同期バッファ（１）１５１，２５１へのパケットの転送について図４を参照して説明する。
【００８４】
制御回路１５３は同期バッファ（０）１５２にパケットがありかつ同期バッファ（１）１５１が空ならば、分周Ｃｌｏｃｋ１１２の立上りのタイミングでＩｎｂｏｕｎｄ同期Ａｃｋ信号（１）１１４をアサートする（図４の“２”のタイミング）。
【００８５】
同様に、制御回路２５３は同期バッファ（０）２５２にパケットがありかつ同期バッファ（１）２５１が空ならば、分周Ｃｌｏｃｋ１１２の立上りのタイミングでＩｎｂｏｕｎｄ同期Ａｃｋ信号（０）１１５をアサートする（図４の“８”のタイミング）。
【００８６】
本実施例ではＰＣＩ−Ｅｘｐｒｅｓｓ制御部（０）２７のパケット受信がＰＣＩ−Ｅｘｐｒｅｓｓ制御部（０）１７より遅れているものとする。そのため、制御回路２５３は制御回路１５３と同じタイミングではＩｎｂｏｕｎｄ同期Ａｃｋ信号（０）１１５をアサートすることができない。
【００８７】
制御回路１５３は自分がアサートするＩｎｂｏｕｎｄ同期Ａｃｋ信号（１）１１６と、制御回路２５３がアサートするＩｎｂｏｕｎｄ同期Ａｃｋ信号（０）１１５との両信号がアサートされている場合、分周Ｃｌｏｃｋ１１２の立上りのタイミングで、同期バッファ（１）１５１へのパケットの転送を開始する（図４の“１４”のタイミング）。
【００８８】
同様に、制御回路２５３は自分がアサートするＩｎｂｏｕｎｄ同期Ａｃｋ信号（０）１１５と、制御回路１５３がアサートするＩｎｂｏｕｎｄ同期Ａｃｋ信号（１）１１６との両信号がアサートされてる場合、分周Ｃｌｏｃｋ１１２の立上りのタイミングで、同期バッファ（１）２５１へのパケットの転送を開始する（図４の“１４”のタイミング）。
【００８９】
このタイミングは制御回路１５３，２５３でまったく同じであり、その結果、その他の制御部１４が同期バッファ（１）１５１から読出せるようになるタイミングと、その他の制御部２４が同期バッファ（１）２５１から読出せるようになるタイミングもまったく同じになる。
【００９０】
その後、その他の制御部１４，２４は、まったく同じタイミングで同期バッファ（１）１５１，２５１からパケットを読出し、まったく同じタイミングでプロセッサバス（０，１）１０１，１０２にリードレスポンスとして発行する。その結果、プロセッサ（０）１１がリードレスポンスを受取るタイミングと、プロセッサ（１）２１がリードレスポンスを受取るタイミングも、まったく同じとなる。
【００９１】
このように、本実施例では、汎用の次世代Ｉ／Ｏインタフェースを用いてフォルトトレラントシステムを実現することができるようになるので、デファクトとなりうる次世代Ｉ／ＯインタフェースであるＰＣＩ−Ｅｘｐｒｅｓｓインタフェースやその他の非同期インタフェースを、ノースブリッジ（０，１）１３，２３とＩ／Ｏバスブリッジ（０，１）３１，４１との間の接続として使用したフォルトトレラントシステムを構成することができるため、フォルトトレラントシステム開発のコストが低減する。
【００９２】
本実施例では、各プロセッサユニット（０，１）１，２に１つのプロセッサ（０，１）１１，２１、各Ｉ／Ｏユニット（０，１）３，４に１つのＰＣＩ−Ｘバス（０，１）１０７，１０８を持つシステムについて説明しているが、ユニット内のプロセッサ数及びＰＣＩ−Ｘバス数について制限はない。
【００９３】
また、Ｉ／Ｏユニット（０，１）３，４内のＩ／Ｏバスは、ＰＣＩ−Ｘバス（０，１）１０７，１０８ではなく、ＰＣＩバスやＡＧＰ（Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）インタフェース、ＰＣＩ−Ｅｘｐｒｅｓｓインタフェース等の他のインタフェースでも良い。
【００９４】
さらに、本実施例では、各ユニットが二重化されたフォルトトレラントシステムについて説明しているが、三重化等のより多重度の高いフォルトトレラントシステムにも拡張することができる。
【００９５】
【発明の効果】
以上説明したように本発明は、上記のような構成及び動作とすることで、ＰＣＩ−Ｅｘｐｒｅｓｓインタフェースやその他の非同期インタフェースをノースブリッジとＩ／Ｏバスブリッジとの間の接続として使用したシステムを構成することができるという効果が得られる。
【図面の簡単な説明】
【図１】本発明の一実施例によるフォルトトレラントシステムの構成を示すブロック図である。
【図２】図１の同期制御部の詳細な構成を示すブロック図である。
【図３】図２の同期バッファ（２）から同期バッファ（３）へのパケットの転送動作を示すタイムチャートである。
【図４】図２の同期バッファ（０）から同期バッファ（１）へのパケットの転送動作を示すタイムチャートである。
【符号の説明】
１，２  プロセッサユニット
３，４  Ｉ／Ｏユニット
５，６  周辺装置
７  分周器
１１，２１  プロセッサ
１２，２２  メインメモリ
１３，２３  ノースブリッジ
１４，２４，３４，４４  その他の制御部
１５，１６，２５，２６，
３４，４４  同期制御部
１７，１８，２７，２８，
３２，３３，４２，４３  ＰＣＩ−Ｅｘｐｒｅｓｓ制御部
３１，４１  Ｉ／Ｏ（入出力）バスブリッジ
３６，４６  ＰＣＩ−Ｘデバイス
１０１，１０２  プロセッサバス
１０３〜１０６  ＰＣＩ−Ｅｘｐｒｅｓｓインタフェース
１０７，１０８  ＰＣＩ−Ｘバス
１１２  分周Ｃｌｏｃｋ
１１３，１１４  Ｉｎｂｏｕｎｄ同期Ａｃｋ信号
１１５，１１６  Ｏｕｔｂｏｕｎｄ同期Ａｃｋ信号
１５１，１５２，１５４，
１５５，２５１，２５２，
２５４，２５５  同期バッファ
１５３，２５３，３４８  制御回路
３４１〜３４３  受信バッファ
３４４〜３４６  送信バッファ
３４７  セレクタ
【図１】
2004280732.tif 000003
【図２】
2004280732.tif 000004
【図３】
2004280732.tif 000005
【図４】
2004280732.tif 000006