(57)【要約】【課題】  マルチコントローラ環境において一時的な障害に耐性があるシステムおよび方法を提供すること。【解決手段】  マルチコントローラ環境におけるデータ通信のシステムおよび方法を開示する。本システムおよび方法は、シーケンス番号プロトコルを用いて重複パケットをフィルタリングし、一時的なエラーに適応し、及び、ハードウェア動作不良を回避するようにデータパケットをリルートする。本システムおよび方法は、さらにトランザクションデータベースを採用し、シーケンス番号に従うパケット通信を追跡する。さらに、本システムおよび方法は、ハードウェアで実施され、透過的なトランスポート層を上位ハードウェア層へ提供する。本システムおよび方法は、シーケンス番号ドメインおよびブリッジプロトコルを用いて、シーケンス番号スレッドの管理に関連する要件を削減する。【選択図】図４
2009205692.tif 000002
【特許請求の範囲】
【請求項１】
複数の要素を含むマルチプロセッサシステムであって、
複数のメモリコントローラと、
送信シーケンス番号を含むメッセージを生成する複数のＣＰＵエージェントと、
前記送信シーケンス番号を記憶するための送信シーケンス番号テーブルであって、該送信シーケンス番号のそれぞれが前記複数の要素のうちの一要素に送信された以前のメッセージに関連するものである、送信シーケンス番号テーブルと、
トランザクション要求に対応するデータベースエントリを作成するためのトランザクションデータベースユニットであって、該トランザクション要求が宛先アドレスに関連するものである、トランザクションデータベースユニットと、
前記シーケンス番号テーブルを参照して次の送信シーケンス番号を取得するための手段と、
前記次の送信シーケンス番号と前記宛先アドレスとを含むトランザクションメッセージを送信するための送信手段と、
を含み、前記送信シーケンス番号テーブルは、前記ＣＰＵエージェント、及び／又は前記メモリコントローラに配置され、
前記トランザクションデータベースユニットは、入ってくるメッセージを以前に送信された送信シーケンス番号を含む肯定応答パケットについて監視する手段をさらに含み、
前記送信手段は、前記肯定応答パケットが所定の時間内に受信されなかった場合、代替経路を介して前記トランザクションメッセージを再送信するようにさらに構成される、マルチプロセッサシステム。
【請求項２】
前記複数の要素が複数のシーケンス番号ドメインのうちの１つのシーケンス番号ドメインに配置され、前記宛先アドレスが前記１つのシーケンス番号ドメインに配置された要素に関連するものでない場合、前記トランザクションメッセージはブリッジユニットにルーティングされ、
前記トランザクションデータベースユニットは、前記宛先アドレスが前記１つのシーケンス番号ドメインに配置された要素に関連するものでない場合、入ってくるメッセージをエンド・ツー・エンドの肯定応答について監視するための手段を含む、請求項１のマルチプロセッサシステム。
【請求項３】
ブリッジユニットであって、
第１のシーケンス番号ドメインのメッセージを受信するための第１の受信部と、
第２のシーケンス番号ドメインのメッセージを受信するための第２の受信部と、
一連の送信シーケンス番号を含む送信シーケンス番号テーブルであって、該送信シーケンス番号が前記第１のシーケンス番号ドメインおよび前記第２のシーケンス番号ドメインのうちのいずれか一方に含まれる要素に送信された以前のパケットに関連するものである、送信シーケンス番号テーブルと、
前記第１のシーケンス番号ドメインおよび前記第２のシーケンス番号ドメインのうちのいずれか一方に配置された要素からの受信メッセージに応答してデータベースエントリを作成する手段と、前記送信シーケンス番号テーブルから次の送信シーケンス番号を取得する手段と、前記受信メッセージから得られた情報と前記次の送信シーケンス番号とを含むトランザクションメッセージを他方のシーケンス番号ドメインに配置された要素へ送信する手段とを含む、ブリッジデータベース部と
からなるブリッジユニット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチコントローラシステムにおけるデータ通信に関し、特に、マルチコントローラシステムのトランスポート層プロトコルに関する。
【背景技術】
【０００２】
マルチプロセッサまたはマルチコントローラアーキテクチャを利用するための高性能データ処理システムが開発されてきた。マルチプロセッサ構成を利用する主な動機は、ＶＬＳＩデバイスにともなう制限に対応する必要性にある。個々のＶＬＳＩユニットは、生来的に、制限された処理能力を有する。しかしながら、多数のＶＬＳＩユニットを分散して利用することにより実質的により高い処理能力を有するシステムを形成することができる。
【０００３】
多くの高性能システムは共通の特徴を持っている。まず、これらのマルチプロセッサシステムは、共有メモリ環境を利用することが可能である。すなわち、共有メモリ構造の見え方は、いずれのプロセッサの見え方も同じである。共有メモリ構造における待ち時間を最小にするために、様々なキャッシュコヒーレンシプロトコルが実施される。さらに、上記のシステムは同様の機能のサブデバイスを内蔵することができる。このシステムは、プロセッサ、プロセッサエージェント、相互接続ＡＳＩＣチップ、メモリコントローラ等を備えることができる。プロセッサがシステムの処理機能を提供することは明らかである。プロセッサエージェントは、メモリ要求等のトランザクション要求をプロセッサから受信する。メモリコントローラは、ＤＲＡＭユニット等のメモリユニットおよびプロセッサエージェントとの通信を管理する。さらに、相互接続ユニットは、システムの他のサブユニット間の通信手段として機能する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記のシステムの利点は明確であるが、この優れたアーキテクチャはいくつかの望ましくない特徴も伴う。まず、このシステムには高可用性の問題がある。すなわち、相互接続チップが動作不良になると、あるいはサブユニットのいずれかに接続している配線の１つに障害が発生すると、システムは機能を停止する場合がある。これは、一時的な障害について特に問題とされる。たとえば、一時的な障害は、配線接続を介して伝送されるパケットのデータが電気ノイズにより破損されることによって引き起こされる場合がある。また、一時的な障害は、ハードウェアの動作不良により引き起こされる場合があり、相互接続チップへの給電停止によりシステムの特定のリンクを介する通信が阻害されることなどにより引き起こされる場合がある。これらのマルチコントローラシステムでは、一時的な障害が検出されるとリブートが必要とされる場合がある。ある種の状況では、高性能マルチプロセッサシステムのリブートは面倒であり、時間のかかる処理である。
【０００５】
これまで、マルチプロセッサシステムは、低速信号技術、すなわち、信号状態間の変化をより長い周期で生じさせる技術を利用することによって一時的な障害に対処してきた。また、低速信号技術は、高信号レベルと低信号レベルの差を大きくとることを容易にする。したがって、低速信号技術は電気ノイズまたは干渉によるデータ破損の影響を受けにくく、一時的なエラーの発生が減少される。低速信号技術を利用しながらより高いデータ通信レートを提供するため、より多くのピン数がＶＬＳＩチップ上に設けられてきた。しかしながら、ＶＬＳＩチップのピン数を増大することによるデータ通信レートを高める能力は、物理的な制約により制限されている。
【０００６】
ピン数の増大により信号レートを高めることは最早不可能であることが予測される。このため、より高周波の信号技術を利用してより高い通信データレートを達成することが、マルチプロセッサシステムにまもなく必要とされるであろう。もちろん、高周波信号技術は、データ破損、ひいては一時的な障害を起こす可能性をさらに大きくするものである。
【課題を解決するための手段】
【０００７】
したがって、本発明は、マルチコントローラ環境における高周波信号技術に関連して増大するデータ通信の不信頼性に対処するシステムおよび方法に関する。本システムおよび方法は、好ましくは、一時的な障害に耐性があるシステムおよび方法を提供する。本システムおよび方法は、好ましくは、マルチコントローラシステムの遅延をスケーラブルに減少させるように一時的な障害にハードウェアで対処する。また、本システムおよび方法は、好ましくは一時的な障害に耐性のあるマルチコントローラシステムを用いて事前割当てされたメモリへのデータ通信を容易にする。
【０００８】
本システムおよび方法は、好ましくはパケット再送方式を実施して一時的な障害に対処する。本システムおよび方法は、トランザクションデータベースを用いてデータパケットの送受信を追跡する。トランザクションデータベースは、好ましくは、ソースサブユニットから受信された最後のパケットに関連するシーケンス番号と、宛先サブユニットへ送信される最後のパケットに関連するシーケンス番号とを含む。本システムおよび方法は、シーケンス番号を用いてデータパケットが無事に伝送されたことを追跡する。本システムおよび方法において、ソースサブユニットは、好ましくはデータパケットをシーケンス番号と共に宛先サブユニットへ送信することができる。このデータパケットが宛先サブユニットへ無事に伝送されると、宛先サブユニットは、このシーケンス番号を含む肯定応答を送信することにより応答する。ソースサブユニットは、好ましくは送信データパケットと関連するタイマ機構を実施することができる。ソースサブユニットが、トランザクションデータベースに格納された適切なシーケンス番号に対応する肯定応答パケットを所定の時間内に受信しない場合、ソースサブユニットは一時的な障害が発生したと推定し、そのデータパケットを再送する。
【０００９】
本システムおよび方法は、好ましくは、断線または給電障害等のハードウェア障害に関連する一時的な障害に適応する。さらに本システムおよび方法は、タイミング機構および再送プロセスを連続的に用いる。肯定応答パケットを受信することなく相次ぐ送信が発生すると、本システムおよび方法は、一時的な障害の原因を分離し、ハードウェア障害をバイパスする代替のルーティングを行うなどの、訂正動作を行うことができる。
【００１０】
さらに、本システムおよび方法は、好ましくは、トランザクションデータベースおよび関連するシーケンス番号を利用して、重複したパケットのフィルタリングを行う。さらに本システムおよび方法は、好ましくは、より上位のプロトコル層に対してデータ通信を透過的に管理するためのトランスポート層を提供する。
【００１１】
本システムおよび方法は、好ましくは、スケーラブルなアドレス指定アーキテクチャを用いる。本システムおよび方法は、マルチコントローラシステムにおけるデータ伝送用のドメインアドレス指定を用いてトランザクションデータベースおよびルーティングデータベースのメモリ要件を減少する。本システムおよび方法は、好ましくは、２つの異なるドメインに存在するブリッジユニットを用いてドメイン間の通信を容易にする。すなわち、これらのブリッジは２つの異なるドメイン（自身のドメインと、親ドメイン、ソースドメインまたは宛先ドメインのいずれか）に存在している。たとえば、ブリッジは、ソースドメインと中間ドメイン、または、中間ドメインと宛先ドメイン、のうちのいずれかに属することができる。
【００１２】
パケットソースが宛先に事前割当てされた空間を有する場合、マルチコントローラシステムはさらに優れた性能を示し、マルチコントローラシステムのキャッシュコヒーレンシプロトコルはさらに単純になる。プロセッサエージェントは、メモリ要求用のメモリコントローラにリソースを事前割当てすることが可能であり、また、メモリコントローラは、キャッシュコヒーレンシリコール用のプロセッサエージェント、および、他の信頼性メモリプロトコルを実施する他のメモリコントローラにリソースを事前割当てすることが可能である。概説したように、シーケンス番号を用いたトランスポートプロトコルを実施することによって、キャッシュコヒーレンシプロトコルは、トランスポート層プロトコルのフィルタリング特性により、終点における事前割当てを好ましく利用することができる。さらに、マルチコントローラシステムは、システム内の遅延を最小にすることに対して優れた特性を示す。本システムおよび方法は、上述したハードウェアの機能を実施することによって遅延を減少し、優れたデータ通信効率を提供する。
【発明の効果】
【００１３】
本発明は、上記のように構成することによって、マルチコントローラ環境において一時的な障害に耐性があるシステムおよび方法を提供する。
【図面の簡単な説明】
【００１４】
【図１Ａ】キャッシュコヒーレンシ層およびＰＩＯ層へデータ通信補助を提供するトランスポート層を含む、例示的なプロトコル階梯を示す図である。
【図１Ｂ】簡略化された例示的なマルチコントローラシステムにおける信号シーケンスを示す図である。
【図２】シーケンス番号ハードウェアを備える好ましい実施形態とインタフェースするコヒーレンシエンジンを示す図である。
【図３】単一のシーケンス番号ドメインとして実施されるマルチコントローラシステムの例示的なトポロジーを示す図である。
【図４】複数のシーケンス番号ドメインとして実施されるマルチコントローラシステムの例示的なトポロジーを示す図である。
【図５】シーケンス番号ブリッジハードウェアの好ましい実施形態を示す図である。
【図６】ブリッジ方法を使用する好ましい信号シーケンスを示す図である。
【図７】フェイルオーバー方法に関する好ましい信号シーケンスを示す図である。
【発明を実施するための形態】
【００１５】
図面を参照すると、図１Ａは、本発明による好ましいシステム機能の構成を説明する例示的なシステム層の図である。図１Ａは、様々なシステム層と本発明との好ましい関係を例示するための図である。
【００１６】
下位のシステム層は通常の通信層を示す。たとえば、物理層１０は、ドライバおよび受信機を介するシステム接続におけるデータの物理的な信号化を実施する。データリンク層１１は、下位データ転送プロトコルを実施してデータ破損に適応する。ネットワーク層１２は、ルーティングテーブル、ソースベクトルルーティング等を介してシステムを通過するパケットのルーティングを担っている。当業者であれば、物理層、データリンク層およびネットワーク層を実施するために任意の数の方式または機構を利用することが可能である。これらのシステム層については、本発明の理解のためには、それほど説明する必要はないであろう。
【００１７】
トランスポート層１３は、システムを介する信頼性のあるデータの受け渡しについて主に責任を負う層である。トランスポート層１３は、好ましくは、メッセージシーケンスの番号付けを実施する。これによりトランスポート層１３は、重複するパケットをフィルタリングすることが可能になる。さらに、トランスポート層１３は、好ましくはタイムアウト時間が経過すると、指示された再試行を実施する。同様に、トランスポート層１３は、好ましくはシステム内の一時的な障害に対しデータ転送を適応させる。
【００１８】
トランスポート層１３により、キャッシュコヒーレンシ層１４およびプロセッサ入出力（ＰＩＯ）層１５等の上位層はマルチコントローラ環境で効率よく動作することが可能になる。キャッシュコヒーレンシ層１４は、好ましくはプロセッサライトバックキャッシュの追跡と管理、及び、メインメモリ内のコヒーレンシタグの管理を管理することができる。ＰＩＯ層１５は、割り込みおよびシステム構成アクセスを実施するのに利用される。さらに、これらの上位層およびその他の上位層は、トランスポート層１３によりイネーブルされ、システム内の一時的な障害およびハードウェア障害により生じる問題に対して透過的に動作する。
【００１９】
図１Ｂは、本発明を実施する簡略化されたマルチコントローラシステムを示している。図１Ｂのシステムは、プロセッサ１０１、ＣＰＵエージェント１０２、ＤＲＡＭ１０４、及び、メモリコントローラ１０３を備える。図１Ｂは、さらに、本発明に関する例示的な信号シーケンスを示している。この例示の信号シーケンスは、プロセッサ１０１によるＤＲＡＭ１０４のメモリ位置の読み出しを含むトランザクションを示している。プロセッサ１０１は、ＣＰＵエージェント１０２と通信することによってこのトランザクションを開始する。これに応答して、ＣＰＵエージェント１０２は、シーケンス番号Ａを含むＲｅａｄ＿ｐｒｉｖａｔｅパケット１０５を生成してメモリコントローラ１０３へ送信する。メモリコントローラ１０３は、シーケンス番号Ａを含むＡＣＫパケット１０５ＡをＣＰＵエージェント１０２へエコーバックすることにより応答する。Ｒｅａｄ＿ｐｒｉｖａｔｅ１０５およびＡＣＫパケット１０５Ａは転送Ｘを形成する。さらに、メモリコントローラ１０３は、ＤＲＡＭ１０４と通信して、Ｒｅａｄ＿ｐｒｉｖａｔｅパケット１０５で指定されたようにＤＲＡＭ１０４のメモリアドレスに格納されたデータの値を取得する。メモリコントローラは、取得したデータ値およびシーケンス番号Ｖを含むＤａｔａ＿ｒｅｔｕｒｎパケット１０６を構築してＣＰＵエージェント１０２へ送信する。ＣＰＵエージェント１０２は、シーケンス番号Ｖを含むＡＣＫパケット１０６Ａを生成してメモリコントローラ１０３へ送信することによって応答する。Ｄａｔａ＿ｒｅｔｕｒｎパケット１０６およびＡＣＫパケット１０６Ａは転送Ｙを形成する。転送Ｘおよび転送Ｙは１つのトランザクションＮを形成する。最終的に、ＣＰＵエージェントは、取得した値をプロセッサ１０１へ伝達する。ＣＰＵエージェント１０２が別のパケット（ＡＣＫパケット以外）を送信する場合には、シーケンス番号Ｂを用いる。同様に、メモリコントローラ１０３が別のパケット（ＡＣＫパケット以外）を発行する場合には、シーケンス番号Ｗを用いる。
【００２０】
トランスポート層プロトコルに関連する前述の信号は、単にプロセッサを利用してソフトウェアにより実施されるのではなく、好ましくはハードウェアにより実施されることが分かるであろう。ハードウェアによる実施が有効であることには、いくつかの理由がある。第一に、ハードウェアのアプローチは、マルチコントローラシステム内の遅延を大幅に減少させる。遅延の減少は、最適な処理能力の提供を意図する高性能マルチコントローラシステムにとって重要な性能課題である。第二に、トランスポート層をハードウェアで実施することにより、他のシステムレベル機能を要素レベルに統合することも可能になる。たとえば、キャッシュコヒーレンシプロトコルは、その最良の有用性を実現するためにはハードウェアレベルで実施することが好ましい。
【００２１】
ハードウェア層にトランスポート層を統合することによって、キャッシュコヒーレンシ機能は、一時的なエラーに対して個々に対応することなく、下位のハードウェアトランスポート層を用いて透過的に動作することができる。たとえば、パケットソースが宛先に事前割当てされた空間を確立することができるならば、マイクロプロセッサは向上した性能を示し、マイクロプロセッサのキャッシュコヒーレンシプロトコルは大幅に簡略化される。たとえば、プロセッサエージェントは、メモリ要求用のメモリコントローラのリソースを事前に割り当て、メモリコントローラは、キャッシュコヒーレンシリコール用のプロセッサエージェントのリソースを事前に割り当てて他の信頼性のあるメモリプロトコルを実施することができる。概説したようにシーケンス番号を用いてトランスポートプロトコルを実施することにより、キャッシュコヒーレンシプロトコルは、トランスポート層プロトコルのフィルタリング特性を使用して終点における事前割当てを用いることができる。この種の事前割当ての最適化は、重複したパケットをフィルタリングするトランスポート層プロトコルを実施することなく達成することが極めて困難である。同様に、本発明によりＰＩＯトラフィックの順序の維持が容易になる。したがって、多くの上位ハードウェアプロトコルおよび機能は、本発明により簡略化することができる。
【００２２】
前述のシステムおよび信号は本発明の簡略化した説明であることが理解されるはずである。本発明の実際の実施は、実際には、もっと多くのプロセッサ、ＣＰＵエージェント、メモリコントローラ、ＤＲＡＭおよび他のハードウェアを含むことが可能であり、任意の数の実現可能な構成に配される。さらに、パケットは、経路情報、エラー検出値、パケット年齢値(packet age value)等の任意数の追加フィールドを含むことができる。さらに、データ転送は、１回の転送につき２つ以上の値を含むことができる。
【００２３】
前述の信号シーケンスは、一時的なエラーまたはハードウェア障害を受けることなく各メッセージが適切に送受信されることを前提にしている。本システムおよび方法は、好ましくはＡＣＫパケットを用いて一時的なエラーおよびハードウェア障害を検出してこれらに適応する。もしＡＣＫパケットが受信されない場合、パケットはシステム内で紛失または破損してしまったと推定される。したがって、本システムおよび方法は、紛失したパケットの再送を試みることができる。再送は、別々の回数行うことが好ましい。再送が不成功に終わると、本システムおよび方法は、フェイルオーバープロトコルを用いて代替の経路を介してパケットを送信することが可能であるが、これについてはさらに詳細を後述する。
【００２４】
図２は、コヒーレンシユニットと通信するシーケンス番号ハードウェアを示している。この要素のアセンブリは、ＣＰＵエージェントまたはメモリコントローラ等のマルチコントローラシステムの様々な要素と共に使用されてもよく、あるいは様々な要素に組み込まれてもよい。まず、コヒーレンシユニットはコヒーレンシエンジン２０１を含んでいる。コヒーレンシエンジン２０１は、メモリアドレスからのデータの要求等のコヒーレンシプロトコルを管理している。コヒーレンシエンジン２０１は、ｒｅａｄ＿ｐｒｉｖａｔｅトランザクション要求をトランザクションデータベース（ＴＤＢ）２０２へ発行することによってトランザクションを開始することができる。ＴＤＢ２０２は、自身のデータベース内にエントリを作成する。ＴＤＢ２０２は、要求情報のタイプ（ＲＱ）、宛先アドレス（Ｄｅｓｔ）、タイムアウト情報（ＴＯ）、終点シーケンス番号（ＥＰ  ＳＮ）、一次または二次経路インジケータ（Ｐ／Ｓ）、ローカルシーケンス番号（ＬＳＮ）等の複数のフィールドから構成されるテーブルエントリを作成する。テーブルエントリの作成は、ＡＳＩＣ設計内にエンコードされた論理命令によって実施され、必要な情報をＡＳＩＣに常駐するメモリまたはレジスタへ配置することができる。あるいは、テーブルエントリ作成タスクは、プロセッサにより実行される論理命令によって実施されてもよい。メッセージを送信する場合、ＴＤＢ２０２は、送信シーケンス番号テーブル（ＳＳＮＴ）２０３内の次のエントリを調べて、その要求パケットに関連付けられるべき次の送信シーケンス番号を突き止める。同様に、このタスクも、メモリおよび／またはレジスタを操作するようにＡＳＩＣにエンコードされた命令またはプロセッサベースの命令により実施することができる。実際のメッセージは、適切なドライバユニットにより回線を介して送信可能である。使用済みの送信シーケンス番号を含む肯定応答（ＡＣＫ）パケットが受信された場合、そのエントリはＴＤＢ２０２から除去される。また、ＴＤＢ２０２は、ＡＣＫパケットで伝達された（使用済み）シーケンス番号よりも小さい使用済み送信シーケンス番号を伴う全てのトランザクションをクリアすることができる。なぜなら、これは以前発行したシーケンス番号の完了を意味しているからである。
【００２５】
終点シーケンス番号は、好ましくはマルチシーケンス番号ドメインシステムに利用される。終点シーケンス番号は、一時的な障害を克服するための代替のルーティングを行うのに有用である。同様に、Ｐ／Ｓインジケータも代替のルーティングを容易にする。たとえば、ＴＤＢ２０２のエントリがタイムアウトになると（ＴＯフィールドを使用して）、Ｐ／Ｓビットが反転させられ、別のパケットが発行される。Ｐ／Ｓ値は再発行されたパケットに表示されるため、これによってシステムは一時的な障害またはハードウェア障害を回避する代替の経路を介してパケットをルーティングさせることができる。もちろん、Ｐ／Ｓフィールドは、代替のルーティングに関して単一ビットに制限される必要はない。より大きいＰ／Ｓフィールドを採用することによって、複数の代替の経路にも同様に適用することができる。
【００２６】
同様に、ハードウェア部は受信部（ＲＵ）２０５を含んでいる。ＲＵ２０５が宛先からパケットを受信すると、ＲＵ２０５は、受信シーケンス番号テーブル（ＲＳＮＴ）２０４を参照する。ＳＳＮＴ２０３と同じように、ＲＳＮＴ２０４は、メモリおよび／またはレジスタを操作するＡＳＩＣにエンコードされた命令またはプロセッサベースの命令を介して実施可能である。ＲＵ２０５は、受信したパケットのシーケンス番号が、その特定の宛先についてＲＳＮＴ２０４に保持される予想したシーケンス番号と一致することを確認する。シーケンス番号同士が一致すると、そのメッセージはＴＤＢへ転送され、受信したシーケンス番号を含むＡＣＫパケットが発信元の要素へ送信される。ＲＵ２０５は、任意の数の方法で実施可能である。もちろん、ＲＵ２０５には、他のシステム要素から回線を介して信号を受け入れるための受信機が含まれる。また、ＲＵ２０５は、シーケンス番号の比較を行うため、ＡＬＵまたは他の論理部を備えてもよく、または利用してもよい。また、ＲＵ２０５は、ＡＳＩＣ設計にエンコードされた論理命令またはプロセッサにより実行される論理命令を備えて予想したシーケンス番号をＲＳＮＴから取得してもよく、ＲＳＮＴは、この装置（ＲＵ２０５）に関連するメモリおよび／またはレジスタとして実施されることができる。同様に、ＲＵ２０５は他の要素からのＡＣＫパケットをモニタするための他の命令を備えてもよい。
【００２７】
図３は、本発明を実施するさらに複雑なシステムを例示している。このシステムは単一のシーケンス番号ドメインであり、以下に詳細を説明する。本システムはプロセッサ３０１ａ〜３０１ｄを備える。プロセッサ３０１ａ〜３０１ｄは、好ましくはライトバックキャッシュを利用してシステム処理を実施する。
【００２８】
システム３００は、ＣＰＵエージェント３０２ａ〜３０２ｄをさらに備える。ＣＰＵエージェント３０２ａ〜３０２ｄは、好ましくはそれぞれのプロセッサと直接接続されてメモリ要求を受信する。ＣＰＵエージェント３０２ａ〜３０２ｄは、ＣＰＵメモリ要求から要求パケットを形成し、そのメモリ要求において識別される物理アドレスと関連するメモリコントローラへ送信する。ＣＰＵエージェントは、リコール要求（プロセッサに特定のキャッシュライン上の制御を放棄させる要求）等、他のシステム機能を実施することができる。
【００２９】
また、本システムはメモリコントローラ（ＭＣ）３０３ａ〜３０３ｄをさらに備える。メモリコントローラ３０３ａ〜３０３ｄは、好ましくは、ＤＲＡＭとインタフェースして、メインメモリに記憶されたデータを取得または変更する。メモリコントローラ３０３ａ〜３０３ｄは、記憶されたデータを他のコントローラまたはエージェントへ伝送する。メモリコントローラ３０３ａ〜３０３ｄは、好ましくは、いずれのプロセッサが個々のメモリコントローラと関連するキャッシュラインに読み出し／書き込みアクセス権を所有するかを追跡する。
【００３０】
インタフェース３０４および３０５は、要素間の物理的接続とルーティング機能を提供するインタフェースチップである。インタフェース３０４および３０５は、システムの物理層、データ層およびネットワーク層を実施する。この例示の実施形態では、２個のインタフェースチップが各メッセージ要素と接続されている。したがって、要素間には複数の経路が形成され、一時的なエラー、回線障害、要素の障害等に適応している。このようなシステムでは、シーケンス番号のサイズにより性能が影響を受ける場合がある。たとえば、シーケンス番号は３２ビット、８ビットまたは任意の他のビット数を用いて実施することができる。システム性能は、デバイスが同一のシーケンス番号を含む２つの異なるトランザクションを受信しないことをシステムが保証するならば、最適化されることになる。したがって、最適なシーケンス番号のサイズを判定するために特定のシステム設計の配慮を検討しなければならない。システムが多数のパケットを生成するように設計されるならば、好ましくは、シーケンス番号データ表現も多数のビットから構成されるように選択されるべきである。このようにすることによって、重複パケットが回避される。なぜなら、特定のシーケンス番号は、システムの時間が経過しそれと同一のシーケンス番号を有する先行のパケットが不用になるまで、再使用されないからである。しかしながら、短いビット表現が選択される場合には、システムは、好ましくは再送中に経路を切り換える前にトランザクション寿命を待たなければならない。
【００３１】
予想したシーケンス番号を追跡するためには、各ＣＰＵエージェントまたはメモリコントローラは、同一シーケンス番号ドメイン内のすべての他のＣＰＵエージェントまたはメモリコントローラに対して２つのシーケンス番号を追跡することが好ましい。すなわち、特定の要素へ送信した最後のシーケンス番号と特定の要素から受信した最後のシーケンス番号を追跡することが好ましい。単一シーケンス番号のアプローチを採用することも可能であるが、２つのシーケンス番号スレッドを用いてそれぞれのデータベースのエントリを早い時点でクリアして新たなエントリを追加できる用にする方が好ましい。そのため、ｎ個のメッセージソースを有するシステムにおいて、この好ましい実施形態をとるメッセージソースのそれぞれは、２＊（ｎ−１）個のシーケンス番号スレッドを維持して必要なシーケンス番号を追跡することになる。
【００３２】
単一のシーケンス番号ドメインは、単一の相互接続要素上で共有される共通のシーケンススレッドの集合により定義される要素の概念的アーキテクチャである。１０２５個のコントローラを含むシステムに対して、３２ビットのシーケンス番号でこのスレッド化の実施形態を実施する場合、要素は、このスレッドシーケンスを維持するためにかなりのリソースを必要とする。この好ましい実施形態を用いる場合、メモリ要件としては、シーケンス番号のスレッド化のために、各コントローラに対して６４Ｋが割り当てられることになる。これは、大容量のＶＬＳＩ設計であっても明らかに過剰な要件である。
【００３３】
したがって、ブリッジ要素およびブリッジプロトコルを提供し、スケーラブルに実施できるようにすることが本発明のさらなる態様である。ブリッジ化は、ブリッジユニットにより接続される個別のシーケンス番号ドメインを作成することを含む。図４は、ブリッジ要素を利用する簡略化された実施例を示している。図４に示すシステムは、３つの個別のシーケンス番号ドメイン４０１、４０２および４０３を含んでいる。
【００３４】
シーケンス番号ドメイン４０１、４０２および４０３は、それぞれインタフェース４０４〜４０５、４０６〜４０７および４０８〜４０９を備える。さらに、インタフェース４０４および４０５は、ブリッジユニット４０４ａおよび４０５ａを備える。同様に、インタフェース４０８および４０９は、ブリッジユニット４０８ａおよび４０９ａを備える。ブリッジユニット４０４ａ、４０５ａ、４０８ａおよび４０９ａは、２つの異なるドメインに属し、ドメイン間のデータ伝達を容易にしている。たとえば、インタフェースユニット４０４は、シーケンス番号ドメイン４０１およびシーケンス番号ドメイン４０２に属する。同様に、ブリッジユニット４０８ａはシーケンス番号ドメイン４０２および４０３に属する。インタフェース４０６および４０７はブリッジユニットを含まない。これらの要素はトランスポート層では役割を果たさない。代わりに、これらの要素は、システムの物理層、データリンク層およびネットワーク層を単に実施して、これによりそれぞれのブリッジユニット間を接続している。
【００３５】
図５は、ブリッジユニットの好ましいハードウェアの実施を示す。ブリッジハードウェアは、シーケンス番号ドメインのそれぞれに対して２つの受信部５０１ａおよび５０１ｂを備える。ブリッジハードウェアは、２つのＲＳＮＴ５０２ａおよび５０２ｂをさらに備える。ブリッジハードウェアは、ＳＳＮＴ５０３をさらに備える。また、ブリッジハードウェアは、ブリッジデータベース５０４も備える。ブリッジデータベース５０４は、図２で説明したトランザクションデータベースと同様である。しかしながら、ブリッジデータベース５０４は、２つのシーケンス番号ドメインへ送信されたメッセージ、および、これらのシーケンス番号ドメインから受信されたメッセージを追跡する。たとえば、パケットがブリッジデータベース５０４の一方から受信されると、ＡＣＫメッセージを逆方向へ発行する。ブリッジデータベース５０４は、ＳＳＮＴを調べて、中間シーケンス番号ドメインについて、次のブリッジユニットまたは宛先要素の次のシーケンス番号を取得する。ブリッジデータベース５０４は、受信シーケンス番号を用いて転送データベースに新たなエントリを作成する。そしてブリッジデータベース５０４は、出力配線を介してパケットを送信する。
【００３６】
図６は、ブリッジプロトコルに関連する信号の例示的な集合を示している。ソースエージェント６０９とローカルブリッジユニット６１０との間のすべてのメッセージは、シーケンス番号ドメイン６００Ａ内で発生する。ローカルブリッジユニット６１０とリモートブリッジユニット６１１との間のメッセージはシーケンス番号ドメイン６００Ｂ内で発生する。同様に、リモートブリッジユニット６１１と宛先エージェント６１２との間のメッセージはシーケンス番号ドメイン６００Ｃ内で発生する。
【００３７】
ソースエージェント６０９がシーケンス番号Ａ０のメモリ要求６０１をローカルブリッジユニット６１０へ送信すると、例示のブリッジ接続された通信トランザクションが開始される。ローカルブリッジユニットは、シーケンス番号Ｂ０のメッセージ６０２を用いて、この要求をリモートブリッジユニット６１１へ転送する。ほぼ同時に、ローカルブリッジユニット６１０は、シーケンス番号Ａ０のＡＣＫ６０１Ａもソースエージェント６０９へ送信する。リモートブリッジユニット６１１は、シーケンス番号Ｂ０のＡＣＫ６０２Ａをローカルブリッジユニット６１０へ送信する。リモートブリッジユニット６１１は、シーケンス番号Ｂ１のリモート情報パケット６０３もローカルブリッジユニット６１０へ送信する。リモート情報パケット６０３は、リモートブリッジユニット６１１により送信された次のパケットについて宛先エージェント６１２が予想したシーケンス番号を含んでいる。ローカルブリッジユニット６１０は、シーケンス番号Ｂ１のＡＣＫ６０３Ａで応答する。ローカルブリッジユニット６１０は、このリモート情報をパケット６０４（シーケンス番号Ａ１）によりソースエージェント６０９へ渡し、ソースエージェントはシーケンス番号Ａ１のＡＣＫパケット６０４Ａを用いて肯定応答を返す。
【００３８】
この時点で、実際のメモリ要求を最終的な宛先へ転送するのに十分な信号が行なわれた。この予備的な信号はいくつかの理由により行なわれるが、たとえば、リモート情報（リモートエージェントに格納されている予想されたシーケンス番号）を入手してフェイルオーバープロトコルを有効にし、一時的な障害に適応できるようにするためなどが含まれる。フェイルオーバープロトコルについてはさらに詳細を後述する。
【００３９】
リモート情報を入手後、ソースエージェントは、シーケンス番号Ａ２のパケット６０５をローカルブリッジユニット６１０へ送信する。パケット６０５は、リモート情報がすでに入手されているので、要求が最終的な宛先へ送信可能であることを示す。ローカルブリッジユニット６１０は、シーケンス番号Ａ２のＡＣＫパケット６０５Ａを送信する。ローカルブリッジユニット６１０は、パケット６０６（シーケンス番号Ｂ２）としてＲｅａｄ＿ｐｒｉｖａｔｅパケットをリモートブリッジユニット６１１へ送信し、パケット６０６はＡＣＫパケット６０６Ａ（シーケンス番号Ｂ２）によって肯定応答が返される。同様に、リモートブリッジユニット６１１は、Ｒｅａｄ＿ｐｒｉｖａｔｅパケットをパケット６０７（シーケンス番号Ｃ０）として転送し、パケット６０７はＡＣＫパケット６０７Ａ（シーケンス番号Ｃ０）によって肯定応答が返される。この時点で、リモートブリッジユニットは、エンド・ツー・エンド確認を開始し、Ｒｅａｄ＿ｐｒｉｖａｔｅ要求が受信されたことを、パケット６０８を送信することによってソースエージェント６０９へ通知する。このエンド・ツー・エンド確認は、ローカルブリッジユニット６１０によりパケット６０９（シーケンス番号Ａ３）を介してソースエージェント６０９へ転送される。パケット６０８および６０９には、それぞれＡＣＫパケット６０８Ａ（シーケンス番号Ｂ３）および６０９Ａ（シーケンス番号Ａ３）が伴うことは勿論である。
【００４０】
ここで図２に関して説明した信号シーケンスを思い出すと、直前の信号シーケンスは転送Ｘと類似している。トランザクション全体は、宛先エージェント６１２がこれまでのブリッジプロトコルを繰り返して実際のｄａｔａ＿ｒｅｔｕｒｎをソースエージェント６０９へ送信すると終了する。
【００４１】
ブリッジプロトコルは任意の数のＣＰＵエージェント、メモリコントローラおよびブリッジユニットにおいて実施可能であることが理解されるはずである。ブリッジプロトコルの利点は、多数のシーケンスドメインをまたぐメモリ要求および応答が容易になることである。システムを複数のシーケンス番号ドメインに分割することによって、シーケンス番号ストリームのためにコントローラデバイスに課されるメモリ要件が大幅に削減される。したがって、本発明により、数千個のプロセッサおよびメモリコントローラを含むシステムに対し、信頼性のあるトランスポートプロトコルが可能となる。
【００４２】
図７は、フェイルオーバープロトコルの好ましい実施形態に関する信号シーケンスを示している。フェイルオーバープロトコルを実施するシステムは、図６に示すシステムと同様である。しかしながら、本システムは、２つのローカルブリッジユニット７１４ａおよび７１４ｂと、２つのリモートブリッジユニット７１５ａおよび７１５ｂとを備え、ソースエージェント７１３から宛先エージェント７１６への代替の経路およびこれと逆方向への代替の経路を提供している。信号シーケンスは、図６に示す信号シーケンスと同じ方法で開始される（このため、ＡＣＫパケットステップを含むいくつかのステップは簡潔のために省略した）。すなわち、（ａ）ソースエージェントはメモリ要求７０１を送信する。（ｂ）ローカルブリッジエージェント７１４ａはメモリ要求７０２を送信する。（ｃ）リモートブリッジユニット７１５ａは宛先シーケンス番号を含むリモート情報パケット７０３で応答する。（ｄ）ローカルブリッジユニット７１４ａが宛先シーケンス番号を含むパケット７０４を送信する。（ｅ）ソースエージェント７１３は、要求パケットが宛先まで転送可能であることを示す転送パケット７０５を送信する。（ｆ）ローカルブリッジユニット７１４ａは要求パケットをメッセージ７０６により転送する。
【００４３】
この時点で信号シーケンスは異なる。リモートブリッジユニット７１５ａはメッセージ７０７を介してこの要求パケットを宛先エージェントへ転送する。しかしながら、メッセージ７０７は、電気ノイズ、一時的なデバイスの動作不良、電力損失、配線障害等の一時的なエラーにより宛先エージェント７１６まで到着しない。ソースエージェント７１３は、適切なエンド・ツー・エンド確認パケットを所定の期間待つ。しかしながら、このパケットは、宛先エージェント７１６がメッセージ７０７を受信しなかったため到着しない。ソースエージェント７１３は、エンド・ツー・エンド確認パケットを待っている際のペンディング状態の時間を計測する。タイムアウト時間が経過すると、ソースエージェント７１３は、メッセージ７０８を経由して別の経路により、この場合ローカルブリッジユニット７１４ｂを介してメモリ要求パケットを再発行する。ソースエージェント７１３は受信リモート情報（予想されたシーケンス番号が含まれている）を組み込み、この新たなパケットを宛先エージェント７１６が誤った重複パケットではなく有効な要求として認識するようにする。このように、代替の経路は、メッセージ７０９、７１０、７１１および７１２を使用して首尾よく完了する。
【００４４】
なお、タイムアウト機構は本システムの他の部分において実施可能であることが理解されるはずである。たとえば、タイムアウト機構はローカルブリッジユニット７１４ａにおいて実施することも可能である。この場合、ローカルブリッジユニット７１４ａにより、すでにメッセージ７０６に含まれているメッセージの、新たなメッセージを介する再送は、代替としてリモートブリッジユニット７１５ｂを経由させることができる。また、一時的なエラーがいくつか発生しても２つ以上の代替の経路で再送できることがさらに理解されるはずである。同様に、本システムおよび方法は、複数のルートの中から１つのルートで任意の回数再送を試みた後で代替のルートを選択することもできる。
【００４５】
以下においては、本発明の種々の構成要件の組み合わせからなる例示的な実施態様を示す。
１．第１および第２のシーケンス番号ドメイン間の通信を容易にするブリッジユニットであって、
前記第１のシーケンス番号ドメインのメッセージを受信する第１の受信部(501a)と、
前記第２のシーケンス番号ドメインのメッセージを受信する第２の受信部(501b)と、
前記第１のシーケンス番号ドメインまたは前記第２のシーケンス番号ドメインのうちのいずれかに含まれる要素へ先に送信されたパケットに関連する一連の送信シーケンス番号を含む送信シーケンス番号テーブル(503)と、
前記第１または第２のシーケンス番号ドメインのうちの一方に配置された要素から受信したメッセージに応答してデータベースエントリを作成する手段と、次の送信シーケンス番号を取得する手段と、前記受信したメッセージおよび前記次の送信シーケンス番号からの情報を含むトランザクションメッセージを他方のシーケンス番号ドメインに配置された要素へ送信する手段とを含むブリッジデータベース部(504)と、
からなるブリッジユニット。
２．第１の一連の受信シーケンス番号を含む第１の受信シーケンス番号テーブル(502a)であって、前記第１の一連のシーケンス番号のそれぞれが前記第１のシーケンス番号ドメインの要素から先に受信されたメッセージと関連する、第１の受信シーケンス番号テーブル(502a)と、
第２の一連の受信シーケンス番号を含む第２の受信シーケンス番号テーブル(502b)であって、前記第２の一連のシーケンス番号のそれぞれが前記第２のシーケンス番号ドメインの要素から受信された先のメッセージと関連する、第２の受信シーケンス番号テーブル(502b)と、
をさらに含む、項番１のブリッジユニット。
３．前記第１の受信部は、
前記第１のシーケンス番号ドメインに配置された要素から、受信シーケンス番号を含むメッセージを受信する手段と、
前記要素と関連する次に予想される受信シーケンス番号を取得する手段と、
前記受信された受信シーケンス番号を前記予想される受信シーケンス番号と比較し、前記受信された受信シーケンス番号と前記予想される受信シーケンス番号が一致しない場合に前記メッセージは破棄されるようにする手段と、
をさらに含む、項番２のブリッジユニット。
４．マルチプロセッサシステムにおける信頼性のあるデータ通信を保証する方法であって、
宛先アドレスと関連するトランザクション要求を受信するステップと、
次の送信シーケンス番号を取得するステップと、
前記トランザクション要求に対応するデータベースエントリを作成するステップと、
前記宛先アドレスおよび前記次の送信シーケンス番号を含むトランザクションメッセージを送信するステップと、
すでに送信された送信シーケンス番号を含む確認パケットについて受信メッセージをモニタするステップと、
からなる方法。
５．前記確認パケットが所定時間内に受信されない場合、前記トランザクションメッセージを再送するステップをさらに含む、項番４の方法。
６．前記確認パケットが所定時間内に受信されない場合、代替の経路を介するようルーティングして前記トランザクションメッセージを再送するステップをさらに含む、項番４の方法。
７．前記送信するステップは、前記宛先アドレスが前記送信するステップを実行する要素に関連するシーケンス番号ドメインと関連していない場合、前記トランザクションメッセージがブリッジユニットへルーティングされるようにするサブステップをさらに含む、項番４の方法。
８．前記宛先アドレスは、前記送信するステップを実行する前記要素と関連する前記シーケンス番号ドメインと関連せず、
前記宛先アドレスと関連する要素により予想された次のシーケンス番号を含むリモート情報を受信するステップをさらに含む、項番７の方法。
９．前記宛先アドレスと関連する要素からのエンド・ツー・エンド確認パケットについて受信メッセージをモニタするステップをさらに含む、項番８の方法。
１０．前記エンド・ツー・エンド確認パケットが所定時間内に受信されない場合、代替のルートを介してメッセージを再送するステップをさらに含む、項番９の方法。
【符号の説明】
【００４６】
５０１ａ  第１の受信部
５０１ｂ  第２の受信部
５０２ａ  第１の受信シーケンス番号テーブル（ＲＳＮＴ）
５０２ｂ  第２の受信シーケンス番号テーブル（ＲＳＮＴ）
５０３    送信シーケンス番号テーブル（ＳＳＮＴ）
５０４    ブリッジデータベース部
【図１Ａ】
2009205692.tif 000003
【図１Ｂ】
2009205692.tif 000004
【図２】
2009205692.tif 000005
【図３】
2009205692.tif 000006
【図４】
2009205692.tif 000007
【図５】
2009205692.tif 000008
【図６】
2009205692.tif 000009
【図７】
2009205692.tif 000010