(57)【要約】リングネットワークアーキテクチャは、環状に配置された複数の通信ノードを含む。ウェーブパイプラインが、高帯域幅及び低レイテンシを有するオンチップ通信を提供するために使用される。各ノードはソース同期クロッキングスキームを実装するので、広範囲のダイ領域にわたって大規模な低スキュークロックツリーを構築する必要はない。単一の基準クロック信号がルートノード内で生成され、リングネットワークの各ノードを経由して一方向にルーティングされる。各ノードは、タイムスタンプカウンタとカラービットレジスタとを含み、これらは、ノードが独立して動作していても、各ノードが、他のノードによって発行された順序付けられたトランザクションメッセージを正確な順序でリゾルブし、また、様々なトランザクションメッセージを全く異なるタイミング順序で受信することを可能にする値を格納する。制御ロジックは、各ノードに分散されるため、集中制御装置は不要となる。【選択図】図１
2020508625.tif 000002
【特許請求の範囲】
【請求項１】
リングネットワークであって、
ルートノード及び１以上のブランチノードを含み、前記ルートノードが基準クロック信号を受信するように結合された複数のノードと、
前記基準クロック信号を、前記ルートノードから前記１以上のブランチノードの各々を経由して転送し、前記ルートノードに戻す環状クロック信号経路と、
前記環状クロック信号経路と並列に延在する環状メッセージ経路とを備え、
前記ルートノード及び前記１以上のブランチノードは、前記クロック信号経路上の前記基準クロック信号とソース同期させて、前記メッセージ経路上にメッセージを送信することを特徴とするリングネットワーク。
【請求項２】
請求項１に記載のリングネットワークであって、
前記メッセージは、前記メッセージ経路上に一方向に送信されることを特徴とするリングネットワーク。
【請求項３】
請求項１に記載のリングネットワークであって、
前記基準クロック信号は、前記メッセージ経路上に送信される前記メッセージの同期化に使用される唯一のクロック信号であることを特徴とするリングネットワーク。
【請求項４】
請求項１に記載のリングネットワークであって、
前記メッセージ経路上の前記メッセージは、前記クロック信号経路上の前記基準クロック信号に応答して前記ノードにラッチされることを特徴とするリングネットワーク。
【請求項５】
請求項１に記載のリングネットワークであって、
前記ノードの各々は、前記リングネットワーク上に送信されたメッセージを格納するために前記基準クロック信号によって定義される第１のクロックドメイン内で動作するノードロジックを含むことを特徴とするリングネットワーク。
【請求項６】
請求項５に記載のリングネットワークであって、
前記ノードの各々は、それに対応するローカルクロック信号によって定義されるローカルクロックドメイン内で動作するクライアントロジックを含むことを特徴とするリングネットワーク。
【請求項７】
請求項６に記載のリングネットワークであって、
前記基準クロック信号は、前記各ローカルクロック信号よりも高い周波数を有することを特徴とするリングネットワーク。
【請求項８】
請求項６に記載のリングネットワークであって、
前記各ノード内の前記第１のクロックドメインと前記ローカルクロックドメインとの間の通信を可能にする同期回路をさらに備えることを特徴とするリングネットワーク。
【請求項９】
請求項１に記載のリングネットワークであって、
前記ノードの各々は、タイムスタンプカウンタをさらに含むことを特徴とするリングネットワーク。
【請求項１０】
請求項９に記載のリングネットワークであって、
前記ノードの前記タイムスタンプカウンタを初期化する手段をさらに含むことを特徴とするリングネットワーク。
【請求項１１】
請求項１０に記載のリングネットワークであって、
前記ノードの各々は、前記ノードが順序付けされたメッセージをオリジネートしたとき、または前記ノードが別のノードから順序付けされたメッセージを受信したときに、前記ノードの前記タイムスタンプカウンタをインクリメントする手段をさらに含むことを特徴とするリングネットワーク。
【請求項１２】
請求項１に記載のリングネットワークであって、
前記ノードの各々は、前記環状メッセージ経路上で連続的に転送されるパルスメッセージによってトグルされるカラービット値を格納するカラービットレジスタを含むことを特徴とするリングネットワーク。
【請求項１３】
請求項１に記載のリングネットワークであって、
前記ノードの各々は、一意のノード識別子アドレスを格納するノード識別子レジスタを含むことを特徴とするリングネットワーク。
【請求項１４】
請求項１に記載のリングネットワークであって、
前記ノードの各々は、前記メッセージ経路上の前記ノードによって受信された順序付けられたメッセージを格納するメッセージスヌーパを含むことを特徴とするリングネットワーク。
【請求項１５】
請求項１に記載のリングネットワークであって、
前記ノードの各々は、前記ノードによって受信された複数の順序付けられたメッセージの優先度を調停する手段を含むことを特徴とするリングネットワーク。
【請求項１６】
請求項１に記載のリングネットワークであって、
前記ノードの各々は、前記クロック信号経路に沿って前記基準クロック信号に遅延を導入する遅延ラインを含むことを特徴とするリングネットワーク。
【請求項１７】
請求項１６に記載のリングネットワークであって、
前記各遅延ラインの遅延は調節可能であることを特徴とするリングネットワーク。
【請求項１８】
請求項１に記載のリングネットワークであって、
前記ルートノードは、前記メッセージ経路上の前記ルートノードによって受信されたメッセージを前記基準クロック信号と再同期させるための再同期回路を含むことを特徴とするリングネットワーク。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願）
本出願は、２０１７年１１月１７日出願の「分散制御同期リングネットワークアーキテクチャ」と題する米国特許出願第１５／８１６、２３５号、及び２０１６年１１月２３日出願の「分散制御同期リングネットワークアーキテクチャ」と題する米国仮特許出願第６２／４２５、７９２号に基づく優先権を主張するものである。上記両出願の開示内容は、参照により本明細書に援用される。
【０００２】
（技術分野）
本発明は、高帯域幅及び低レイテンシを有するオンチップ通信を実現するための改良されたリングネットワークアーキテクチャに関する。
【背景技術】
【０００３】
従来の半導体チップは、チップ上に製造された複数の回路ブロックの各々にグローバルクロック信号を分配する大規模な低スキュークロックツリーを含み得る。クロックツリーは、複数の回路ブロックの各々が、他の回路ブロックの各々と同一の入力クロック信号を確実に受信するように設計される。このようなグローバルクロックツリーの実現には、広範囲のレイアウト（ダイ）領域と、比較的複雑な相互接続構造（ポイントツーポイント通信、ブロードキャスト通信、調停、同期を可能にするために）とを必要とする。パイプラインステージが、最小遅延を維持するために相互接続構造に沿って含まれる。加えて、グローバルクロックツリーを確立及び制御するために、集中制御装置が必要とされる。これらの構造の結果として、グローバルクロックツリーは大量の電力を消費する。
【０００４】
上述の制御にもかかわらず、クロックスキューは、最終的に、グローバルクロックツリーの性能を低下させ得る。全ての通信エージェントにおける物理的距離の相違は、このクロックスキューの除去を困難にする。
【０００５】
したがって、クロック同期を実施するための改良された方法及び構造を半導体チップ上に有することが望ましい。この改良された方法及び構造は、集中制御装置を必要とせずに、半導体チップ上で高周波数かつ低レイテンシの動作を提供できることが望ましい。さらに、この改良された方法及び構造は、半導体チップの広範囲にわたって低スキューかつ高電力消費のクロックツリーの使用を必要としない、単純な物理的実装を有することが望ましい。
【発明の概要】
【課題を解決するための手段】
【０００６】
したがって、本発明は、複数の通信ノードが環状に配置されたリングネットワークアーキテクチャを提供する。リングネットワークアーキテクチャは、高帯域幅及び低レイテンシを有するオンチップ通信を提供するためにウェーブパイプラインを使用する。非常に高い動作周波数は、本発明のリングネットワークアーキテクチャを用いて実現することができる。例えば、各通信ノードが、リングネットワーク上でメッセージを転送するためのノードロジックを含み、ノードロジックが、１２レベル未満のファンアウト４（ＦＯ４）ロジックを含み、各ロジックゲートが１００ピコ秒（ＰＳ）のゲート遅延を有すると仮定する。この場合、本発明のリングネットワークアーキテクチャは、ノード間の配線遅延を考慮しても、５ＧＨｚ以上のデータ転送周波数を提供することができる。
【０００７】
一実施形態によれば、リングネットワークの各ノードは、ソース同期クロッキングスキームを実装し、この結果、広範囲のダイ領域にわたって大規模な低スキュークロックツリーを構築する必要がない。必要とされる制御ロジックは、各ノードに分散されるため、集中制御装置は不要となる。本発明のリングネットワークアーキテクチャによって実現されるクロッキング及び制御スキームは、ネットワークの物理的実装を大幅に単純化し、かつ、非常に高速な動作を可能にする。
【０００８】
一実施形態によれば、基準クロック信号は、リングネットワークのルートノード内で生成される。この基準クロック信号は、リングネットワークの各ノードを経由して一方向にルーティングされる。メッセージは、基準クロック信号と共にノード間で送信され、或るノードによって受信されたメッセージは、対応する受信された基準クロック信号を使用してそのノードにクロック入力される。リングネットワークの各ノードは、タイムスタンプカウンタとカラービットレジスタとを含む。各ノードのタイムスタンプカウンタは、ノードがオリジナルの順序付けられたメッセージを生成して送信するたびに、及びノードがそのノードで生成されていない順序付けられたメッセージを受信するたびに、受信した基準クロック信号を使用して更新される。パルスメッセージがリングネットワークのノードを経由して連続的に転送され、パルスメッセージは、ノードがパルスメッセージを受信するたびにそのノードのカラービットレジスタをトグルする。タイムスタンプカウンタ及びカラービットレジスタの各々は、各タイムスタンプカウンタが同一のタイムスタンプ値を格納し、各カラービットレジスタが同一のカラービット値を格納するように、通常動作の前に初期化される。タイムスタンプ値及びカラービット値により、各ノードが独立して動作していても、各ノードは他のノードによって発行されたトランザクションメッセージを正確な順序でリゾルブし、また、様々なトランザクションメッセージを全く異なるタイミング順序で受信することができる。この機能は、調停と同期のための強力な手段を提供する。
【０００９】
一実施形態では、各ノードは、生成された各順序付けメッセージに、そのタイムスタンプカウンタからのタイムスタンプ値を付加する。各ノードは、リングネットワーク上で受信された順序付けられたメッセージを格納するメッセージスヌーパをさらに含む。カラービットがノード内でトグルされると、ノードは、そのメッセージスヌーパに格納されている順序付けされたメッセージを分析し、最も古いタイムスタンプ値を有する順序付けされたメッセージに優先権を与える。
【００１０】
本発明のリングネットワークアーキテクチャは、例えば、ＭＯＳＥＩ（Modified Owned Shared Exclusive Invalid）キャッシュコヒーレンスプロトコル・メモリバスまたは大規模並列プロセッサ上の通信ネットワークを実現するために使用することができる。
【００１１】
本発明は、以下の説明及び図面を参照することによって、より完全に理解されるであろう。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態による分散制御同期リングネットワークのブロック図
【図２】本発明の一実施形態による、図１の分散制御同期リングネットワークのルートノードのブロック図
【図３】本発明の一実施形態による、図１の分散制御同期リングネットワークのブランチノードのブロック図
【図４】本発明の一実施形態による、メッセージとクロック信号とのソース同期送信に使用される、図２のルートノード及び図３のブランチノードの一部を示すブロック図
【図５】本発明の一実施形態による、図４の様々な信号のソース同期タイミングを示す波形図
【図６】本発明の一実施形態による、図１のリングネットワークを初期化する方法を説明するためのフロー図
【図７】本発明の一実施形態による、図６の方法のノード初期化プロセスを実施する方法を説明するためのフロー図
【図８Ａ】本発明の一実施形態による、ポイントツーポイント順序付けメッセージの送信中のリングネットワークの状態を示すテーブル
【図８Ｂ】本発明の一実施形態による、ポイントツーポイント順序付けメッセージの送信中のリングネットワークの状態を示すテーブル
【図８Ｃ】本発明の一実施形態による、ポイントツーポイント順序付けメッセージの送信中のリングネットワークの状態を示すテーブル
【図８Ｄ】本発明の一実施形態による、ポイントツーポイント順序付けメッセージの送信中のリングネットワークの状態を示すテーブル
【図８Ｅ】本発明の一実施形態による、ポイントツーポイント順序付けされたメッセージの送信中のリングネットワークの状態を示すテーブル
【図８Ｆ】本発明の一実施形態による、ポイントツーポイント順序付けメッセージの送信中のリングネットワークの状態を示すテーブル
【図８Ｇ】本発明の一実施形態による、ポイントツーポイント順序付けメッセージの送信中のリングネットワークの状態を示すテーブル
【図８Ｈ】本発明の一実施形態による、ポイントツーポイント順序付けメッセージの送信中のリングネットワークの状態を示すテーブル
【図８Ｉ】本発明の一実施形態による、ポイントツーポイント順序付けメッセージの送信中のリングネットワークの状態を示すテーブル
【発明を実施するための形態】
【００１３】
図１は、本発明の一実施形態による分散制御同期リングネットワーク１００のブロック図である。リングネットワーク１００は、ルートノードＮ０と、リング状に接続されたブランチノードＮ１〜Ｎ５とを含む。この実施例では、６つの通信ノードＮ０〜Ｎ５が含まれているが、他の実施例では、他の数のノードを含み得ることを理解されたい。ただし、各リングネットワークは、１つのルートノードと１以上のブランチノードとを含む。ノードＮ０〜Ｎ５の各々は、対応するクロック入力信号及び対応するメッセージ入力信号を受信し、対応するクロック出力信号及び対応するメッセージ出力信号を送信する。リングネットワーク１００の信号は、一方向に送信される。図示した実施形態では、リングネットワーク１００の信号は時計回りにルーティングされる（ただし、これは必須ではない）。ノードＮ０〜Ｎ５の各々は、送信隣接ノードと受信隣接ノードとを有する。例えば、ブランチノードＮ３は、送信隣接Ｎ２と受信隣接Ｎ４とを有する。ノードＮ０、Ｎ１、Ｎ２、Ｎ３、Ｎ４及びＮ５はそれぞれ、クロック信号ＣＬＫ＿０１、ＣＬＫ＿１２、ＣＬＫ＿２３、ＣＬＫ＿３４、ＣＬＫ＿４５及びＣＬＫ＿５０と、対応する出力メッセージＭＳＧ＿０１、ＭＳＧ＿１２、ＭＳＧ＿２３、ＭＳＧ＿３４、ＭＳＧ＿４５及びＭＳＧ＿５０とを受信隣接ノードＮ１、Ｎ２、Ｎ３、Ｎ４、Ｎ５及びＮ０に送信する。クロック信号ＣＬＫ＿０１、ＣＬＫ＿１２、ＣＬＫ＿２３、ＣＬＫ＿３４、ＣＬＫ＿４５及びＣＬＫ＿５０は、リングネットワーク１００のクロック信号経路１０１上に送信され、メッセージＭＳＧ＿０１、ＭＳＧ＿１２、ＭＳＧ＿２３、ＭＳＧ＿３４、ＭＳＧ＿４５及びＭＳＧ＿５０は、リングネットワーク１００のメッセージバス１０２（メッセージ経路）上に送信される。
【００１４】
図２は、本発明の一実施形態によるルートノードＮ０をより詳細に示すブロック図である。ルートノードＮ０は、マスタークロック生成器２０１（ＣＬＫ  ＧＥＮ）、遅延ライン２０２（ＤＥＬＡＹ）、再同期回路２０５（ＳＹＮＣ）、ノードロジック２１０、同期回路２２０（ＳＹＮＣ）、メッセージスヌーパ２３０、受信先入れ先出し（ＦＩＦＯ）メモリ２３１、送信ＦＩＦＯメモリ２３２、クライアントロジック２４０、ノード識別子（ＩＤ）メモリ２５０、カラービットレジスタ２５１、タイムスタンプ（ＴＳ）カウンタ２５５、メッセージアセンブラ２６０、及びマルチプレクサ２６５を含む。
【００１５】
一般に、ルートノードＮ０は、リングネットワーク・クロックドメイン（基準クロックＣＫ＿ＲＥＦによって指定される）と、クライアントロジック・クロックドメイン（ローカルクロック信号ＣＫ０によって指定される）とを含む２つのクロックドメインで動作する回路を含む。これらの２つのクロックドメイン間の境界は、図２の破線２７０によって示されている。したがって、クライアントロジック２４０は、クライアントロジック・クロックドメインにおいて実行される。また、クライアントロジック２４０と、カラービットレジスタ２５１、ノードＩＤレジスタ２５０（ノードＩＤメモリ２５０）、タイムスタンプカウンタ２５５、メッセージスヌーパ２３０、受信ＦＩＦＯ２３１、及び送信ＦＩＦＯ２３２との間の転送は、クライアントロジック・クロックドメインにおいて実行される。クロック生成器２０１、遅延ライン２０２、再同期回路２０５、ノードロジック２１０、ノードＩＤメモリ２５０、カラービットレジスタ２５１、タイムスタンプ（ＴＳ）カウンタ２５５、メッセージアセンブラ２６０、及びマルチプレクサ２６５は、リングネットワーク・クロックドメインにおいて動作する。加えて、メッセージスヌーパ２３０及び受信ＦＩＦＯ２３１への書き込み動作、及び送信ＦＩＦＯ２３２からの読み出し動作は、リングネットワーク・クロックドメインにおいて実行される。一実施形態では、同期回路２２０（基準クロック信号ＣＫ＿ＲＥＦ及びローカルクロック信号ＣＫ０を受信する）は、リングネットワーク・クロックドメインとクライアントロジック・クロックドメインとの間の同期を、当分野で既知の再同期方法を用いて実行する。リングネットワーク・クロックドメイン及びクライアントロジック・クロックドメインの要件は、以下でより詳細に説明する。
【００１６】
ルートノードＮ０のマスタークロック生成器２０１は、リングネットワーク１００の基準クロック信号ＣＫ＿ＲＥＦを生成する。従来のクロック生成回路（例えば、位相同期ループ回路）を使用して、基準クロック信号ＣＫ＿ＲＥＦを生成することができる。上述した実施形態では、基準クロック信号ＣＫ＿ＲＥＦは、約５ＧＨｚ以上の周波数を有する。なお、他の実施形態では、基準クロック信号ＣＫ＿ＲＥＦが他の周波数を有し得ることを理解されたい。基準クロック信号ＣＫ＿ＲＥＦの周波数及び電圧は、リングネットワークアーキテクチャの帯域幅需要及び電力最適化に基づいてスケーリングすることができる。なお、セットアップ処理（後述する）は通常動作よりも低い基準クロック周波数で実施することができるので、ノードＮ０〜Ｎ５間の配線遅延はセットアップ処理に影響を与えないことに留意されたい。また、ルートノードＮ０は、マスタークロック生成器２０１を有する唯一のノードであることに留意されたい。以下でより詳細に説明するように、ブランチノードＮ１、Ｎ２、Ｎ３、Ｎ４及びＮ５の各々は、それらの送信隣接ノードＮ０、Ｎ１、Ｎ２、Ｎ３及びＮ４から送信された対応するクロック信号ＣＬＫ＿０１、ＣＬＫ＿１２、ＣＬＫ＿２３、ＣＬＫ＿３４及びＣＬＫ＿４５に応答して動作する。すなわち、基準クロック信号ＣＫ＿ＲＥＦは、ブランチノードＮ０〜Ｎ５をその順に経由して効率良く転送される。
【００１７】
ルートノードＮ０は、基準クロック信号ＣＫ＿ＲＥＦを使用して、（送信隣接ノードＮ５からクロック信号ＣＬＫ＿５０と共に送信された）入力メッセージＭＳＧ＿５０を同期化する。より具体的には、入力メッセージＭＳＧ＿５０は、まず、送信隣接ノードＮ５のネットワーククロックドメインと同期される。この結果、ルートノードＮ０内でのクロックドメインクロス同期が必要となる（すなわち、送信隣接ノードＮ５から受信したメッセージＭＳＧ＿５０は、ルートノードＮ０内の基準クロック信号ＣＫ＿ＲＥＦと再同期させる必要がある）。一実施形態では、再同期回路２０５は、入力したクロック信号ＣＬＫ＿５０に応答して入力メッセージＭＳＧ＿５０を第１のフリップフロップにラッチすることによって、この再同期動作を実施する。第１のフリップフロップの出力に提供されたメッセージＭＳＧ＿５０は、基準クロック信号ＣＫ＿ＲＥＦに応答して第２のフリップフロップにラッチされる。第２のフリップフロップは、ノードロジック２１０に提供される同期メッセージＭＳＧ＿０を提供する。この同期メッセージＭＳＧ＿０は、基準クロック信号ＣＫ＿ＲＥＦに応答してノードロジック２１０に格納される。
【００１８】
図３は、ブランチノードＮ１をより詳細に示すブロック図である。上述した実施形態では、ブランチノードＮ２〜Ｎ５は、ブランチノードＮ１と実質的に同一である（ただし、これらのノードは、異なるクライアントロジックを実装してもよい）。ブランチノードＮ１は、クロック遅延ライン３０２、ノードロジック３１０、同期回路３２０、メッセージスヌーパ３３０、受信ＦＩＦＯメモリ３３１、送信ＦＩＦＯメモリ３３２、クライアントロジック３４０、ノード識別子（ＩＤ）メモリ３５０、カラービットレジスタ３５１、タイムスタンプ（ＴＳ）カウンタ３５５、メッセージアセンブラ３６０、及びマルチプレクサ３６５を含む。なお、上述したブランチノードＮ１の各要素は、ルートノードＮ０における同様の名称の要素と同様であることに留意されたい。ブランチノードＮ１のクライアントロジック３４０は、ローカルノード・クロックドメイン信号ＣＫ１に応答して動作する。破線３７０は、ローカルノード・クロックドメイン（ＣＫ１）とリングネットワーク・クロックドメイン（ＣＫ＿ＲＥＦ）との境界を示し、同期回路３２０は、これらの２つのクロックドメイン間の通信を提供する。なお、ブランチノードＮ１は、ルートノードＮ０のマスタークロック生成部２０１または再同期回路２０５に相当する回路を含まないことに留意されたい。すなわち、ルートノードＮ０は、リングネットワーク１００における唯一のマスタークロック生成器２０１を含む。
【００１９】
次に、ルートノードＮ０からブランチノードＮ１へのメッセージ及びクロック信号のソース同期送信のタイミングについて説明する。なお、他ノード間の送信は、ノードＮ０からノードＮ１への送信と同様に行われることに留意されたい。
【００２０】
図４は、ノードロジック２１０、遅延ライン２０２、メッセージアセンブラ２６０、マルチプレクサ２６５、リングネットワーククロック信号経路１０１、リングネットワークメッセージバス１０２、及びノードロジック３１０を含む、ルートノードＮ０からブランチノードＮ１へのメッセージ及びクロック信号の送信についてのルートノードＮ０及びブランチノードＮ１の関連部分を示すブロック図である。図５は、本発明の一実施形態による、図４の様々な信号のソース同期タイミングを示す波形図である。
【００２１】
一般に、ルートノードＮ０は、２つの経路上に出力メッセージを送信することができる。第１の経路では、ノードロジック２１０によって受信されたメッセージＭＳＧ＿０が、ブランチノードＮ１のノードロジック３１０に転送される。この場合、ノードロジック２１０は、受信したメッセージＭＳＧ＿０を転送するべきであると判断し（例えば、受信したメッセージＭＳＧ＿０がルートノードＮ０をアドレス指定していないと判断する）、そのメッセージをマルチプレクサ２６５に転送する。マルチプレクサ２６５は、このメッセージを出力メッセージＭＳＧ＿０１（図４及び図５では、ＭＳＧ＿０１ＩＮとして示されている）としてルーティングするように制御される。ノードロジック２１０及びマルチプレクサ２６５は、基準クロック信号ＣＫ＿ＲＥＦに対するノード遅延ＤＮ０を導入する。
【００２２】
第２の経路では、クライアントロジック２４０によって提供されたメッセージＭＳＧ＿０ＣＬが送信ＦＩＦＯ２３２を経由してルーティングされ、（基準クロック信号ＣＫ＿ＲＥＦに応答して）メッセージアセンブラ２６０に提供される。メッセージアセンブラ２６０は、必要な情報（例えば、タイムスタンプカウンタ２５５からのタイムスタンプ値、及びノードＩＤメモリ３５０からのノードＩＤ値）をメッセージＭＳＧ＿０ＣＬに提供し、その結果得られたメッセージをマルチプレクサ２６５に提供する。マルチプレクサ２６５は、このメッセージを出力メッセージＭＳＧ＿０１（図４及び図５では、ＭＳＧ＿０１ＩＮとして示されている）としてルーティングするように制御される。メッセージアセンブラ２６０及びマルチプレクサ２６５は、基準クロック信号ＣＫ＿ＲＥＦに対するノード遅延ＤＮ０をメッセージＭＳＧ＿０ＣＬに導入する。一実施形態では、メッセージアセンブラ２６０及びノードロジック２１０は、これらの回路がそれぞれ、基準クロック信号ＣＫ＿ＲＥＦに対する同一（または類似）の遅延を受信メッセージＭＳＧ＿０ＣＬ及びＭＳＧ＿０に導入するように設計される。図５は、メッセージＭＳＧ＿０またはメッセージＭＳＧ＿０ＣＬについて、基準クロック信号と送信メッセージＭＳＧ＿０１ＩＮとの間に存在するノード遅延ＤＮ０を示す。
【００２３】
図４及び図５の例では、メッセージＭＳＧ＿０及びＭＳＧ＿０ＣＬは総称的に示されているが、これらのメッセージ（そして、ブロードキャストメッセージ、リードモディファイライトメッセージ、ポイントツーポイント非順序付けメッセージ、及びポイントツーポイント順序付けメッセージを含む、関連するメッセージタイプ）の詳細は以下で説明する。
【００２４】
送信メッセージＭＳＧ＿０１ＩＮは基準クロック信号ＣＫ＿ＲＥＦに対して遅延されているので、遅延ライン２０２を使用して基準クロック信号ＣＫ＿ＲＥＦに遅延Ｄ２０２を加えることにより、ルートノードＮ０の出力クロック信号ＣＬＫ＿０１が生成される（図４及び図５では、クロック信号ＣＬＫ＿０１ＩＮとして示されている）。遅延ライン２０２によって導入される遅延Ｄ２０２は、クロック信号ＣＬＫ＿０１ＩＮが、ルートノードＮ０から送信されたメッセージＭＳＧ＿０１ＩＮに対して適切なセットアップ／ホールドタイムを有することを確実にするために選択される。一実施形態では、遅延ライン２０２の遅延Ｄ２０２は、上述したノード遅延ＤＮ０と等しくされる。すなわち、送信メッセージＭＳＧ＿０１ＩＮは、ノードＮ０の既知の内部遅延を用いて出力クロック信号ＣＬＫ＿０１ＩＮと同期化される。一実施形態では、遅延Ｄ２０２は調整可能である（例えば、ノードロジック２１０及び／またはクライアントロジック２４０の制御下で、必要に応じて長くするかまたは短くすることができる）。
【００２５】
なお、ノードＮ０とノードＮ１との間のクロック信号経路１０１及びメッセージバス１０２を実現するために使用されるクロック信号経路構造１０１Ｄ及びメッセージバス構造１０２Ｄは、著しい遅延（例えば、バッファ遅延）を示し得ることに留意されたい。クロック信号経路構造１０１Ｄ及びメッセージバス構造１０２Ｄによって導入される遅延は、それぞれ、遅延Ｄ１０１及びＤ１０２と示される。したがって、ノードＮ１によって受信されたクロック信号ＣＬＫ＿０１ＯＵＴは、ノードＮ０によって送信されたクロック信号ＣＬＫ＿０１ＩＮに対してＤ１０１だけ遅延される。同様に、ノードＮ１によって受信されたメッセージＭＳＧ＿０１ＯＵＴは、ノードＮ０によって送信されたメッセージＭＳＧ＿０１ＩＮに対してＤ１０２だけ遅延される。この関係を図５に示す。（ＣＬＫ＿０１ＩＮ及びＭＳＧ＿０１ＩＮの生成時に）ノードＮ０によって確立された所望のセットアップ／ホールドタイムを維持するためには、遅延Ｄ１０１及びＤ１０２は互いに同一でなければならない。そのため、セットアップ／ホールドタイムの損失を最小限に抑えるためには、クロック信号経路構造１０１Ｄ及びメッセージバス構造１０２Ｄを実現するために使用される配線及びバッファを高度に均一化し、かつバランスを取ることが非常に重要である。すなわち、クロック信号経路構造１０１Ｄ及びメッセージバス構造１０２Ｄは、送信されたクロック信号ＣＬＫ＿０１ＩＮと送信されたメッセージＭＳＧ＿０１ＩＮとの相対位相が、受信されたクロック信号ＣＬＫ＿０１ＯＵＴと受信されたメッセージＭＳＧ＿０１ＯＵＴとにおいて受信ノードＮ１で維持されるように、ノードＮ０とノードＮ１との間で実質的に同一の送信特性を提供するべきである。
【００２６】
上述した例では、クロック信号経路１０１及びメッセージバス１０２は、ウェーブパイプラインシステムとして動作し、メッセージバス１０２上で送信されたメッセージは、クロック信号経路１０１上で送信されたクロック信号を用いてソース同期方式で受信ノードにラッチされる。このように、メッセージは、ノードＮ０からノードＮ１へ基準クロック信号ＣＫ＿ＲＥＦの周波数で送信され、これにより、ノードＮ０からノードＮ１への高速データ送信が可能となる。通常動作中、各ノードＮ０〜Ｎ５内のノードロジックは、受信したクロック信号に応答して入力メッセージをラッチする（例えば、ノードロジック２１０及び３１０は、受信したクロック信号ＣＫ＿ＲＥＦ及びＣＬＫ＿０１にそれぞれ応答して、入力メッセージＭＳＧ＿０及びＭＳＧ＿０１をそれぞれラッチする）。
【００２７】
ウェーブパイプライン化が実現されるので、クロック信号経路構造１０１Ｄ及びメッセージバス構造１０２Ｄの配線及びバッファ遅延Ｄ１０１及びＤ１０２は、リングネットワーク１００の動作周波数を劣化させない。なお、ウェーブパイプライン化は、送信ノードが第１のメッセージを受信ノードに送信し、その後、受信ノードが第１のメッセージを受信する前に、送信ノードが第２のメッセージを受信ノードに送信することを可能にすることに留意されたい。すなわち、メッセージバス構造１０２Ｄ上でノードＮ０からノードＮ１へ複数のメッセージを同時に送信することができる。このことは、基準クロック信号ＣＫ＿ＲＥＦの周期（例えば、５ＧＨｚクロックでは２００ｐｓ）が、隣接するノードＮ０及びＮ１間の配線／バッファ遅延Ｄ１０１／Ｄ１０２よりも短い場合に起こり得ることに留意されたい。一実施形態では、隣接するノードの各対の間の配線／バッファ遅延Ｄ１０１／Ｄ１０２は、第１のノード（例えば、ノードＮ０）からそれに隣接する第２のノード（例えば、ノードＮ１）に送信される第１の複数のメッセージが、第２のノード（例えば、ノードＮ１）からそれに隣接する第３のノード（例えば、ノードＮ２）に送信される第２の複数のメッセージを追い越さないことを確実にするのに十分な長さでなければならない（すなわち、最小遅延を示す）。
【００２８】
一実施形態では、ノードロジック２１０及びマルチプレクサ２６５のゲート遅延により、基準クロック信号ＣＫ＿ＲＥＦの最大周波数が決定され得る。効率を最大化するためには、生成される基準クロック信号ＣＫ＿ＲＥＦの周期をノード遅延ＤＮ０と等しくする必要がある。一実施形態では、ノードロジック２１０は、基準クロック信号ＣＫ＿ＲＥＦが５ＧＨｚ以上の周波数を有することを可能にするシーケンシャルロジック（例えば、１０レベルのファンアウト４（ＦＯ４）ロジック）を含む。
【００２９】
ノードロジック２１０は比較的単純な設計を有するので、リングネットワークのノードＮ０〜Ｎ５間の通信を比較的高い周波数で実施することができる。クライアントロジック２４０は一般的に、より複雑な設計を有し、基準クロック信号ＣＫ＿ＲＥＦの周波数よりも遅い周波数で動作し得る。すなわち、クライアントロジック２４０は、リングネットワークからメッセージを基準クロック信号ＣＫ＿ＲＥＦの周波数で受信するが、基準クロック信号ＣＫ＿ＲＥＦの周波数で応答する必要はない。
【００３０】
別の実施形態では、リングネットワーク１００はまた、比較的低い周波数を有する基準クロック信号ＣＫ＿ＲＥＦに応答して動作することができ、基準クロック信号ＣＫ＿ＲＥＦの周期は、隣接するノード間の配線／バッファ遅延Ｄ１０１／Ｄ１０２よりも大きい。この場合、ノードから送信された各メッセージは、送信ノードが次のメッセージを送信する前に、隣接ノードによって受信（及びラッチ）される。この実施形態では、隣接ノード間の配線／バッファ遅延Ｄ１０１／Ｄ１０２は、信号パイプラインに影響を与えない。一実施形態では、基準クロック信号ＣＫ＿ＲＥＦは、セットアップフェーズ（以下で説明する）中はそのような低周波数に減少されるが、通常動作中は高周波数（例えば５ＧＨｚ以上）に増加される。
【００３１】
次に、リングネットワーク１００のノードＮ０〜Ｎ５の設定について説明する。
【００３２】
図６は、本発明の一実施形態によるリングネットワーク１００を初期化する方法を示すフロー図６００である。図６のステップ６０１に示すように、セットアッププロセスが開始される（例えば、ルートノードＮ０のクライアントロジック２４０に提供されるリセット信号をアクティブ化することによって、セットアッププロセスが開始される）。これに応じて、クライアントロジック２４０はノード初期化処理を開始する（ステップ６０２）。このノード初期化処理では、ノードＮ０〜Ｎ５のノードＩＤレジスタに格納されているノードＩＤ値を初期化し、ノードＮ０〜Ｎ５のカラービットレジスタに格納されているカラービットを所定値（例えば、「０」）にリセットし、かつ、各ノードＮ０〜Ｎ５内のタイムスタンプカウンタに格納されているタイムスタンプ値を所定値（例えば、「０」）にリセットする。図６のステップ６０３に示すように、各ノードＮ０〜Ｎ５を経由して転送されるパルスメッセージを初期化する（例えば、ルートノードＮ０のクライアントロジック２４０に提供されるパルス信号をアクティブ化することによって、パルスメッセージを初期化する）。その後、リングネットワーク１００の通常動作が開始される（ステップ６０４）。
【００３３】
図７は、本発明の一実施形態による、ステップ６０２のノード初期化プロセスを実施する方法を示すフロー図７００である。ルートノードＮ０は、ノードＩＤレジスタ２５０が「０」に等しいノードＩＤ値を格納するようにハードワイヤードされる。アクティブ化されたリセット信号の受信に応答して、クライアントロジック２４０は、読み出し／変更／書き込みメッセージであるＩＤ＿セットアップメッセージを生成する（ステップ７０１）。このＩＤ＿セットアップメッセージは、（ノードＮ０のノードＩＤレジスタ２５０に格納されたノードＩＤ値に基づく）「０」の値を有するように初期設定されたノードＩＤフィールドを含む。クライアントロジック２４０はまた、そのタイムスタンプカウンタ２５５をリセットして「０」のタイムスタンプ値を格納し、かつ、そのカラービットレジスタ２５１をリセットして「０」のカラービット値を格納する（ステップ７０２）。クライアントロジック２４０は、（送信ＦＩＦＯ２３２、メッセージアセンブラ２６０及びマルチプレクサ２６５を介して）ＩＤ＿セットアップメッセージを隣接する受信ノードＮ１に送信する。このＩＤ＿セットアップメッセージは、図４及び図５を参照して上述した方法で基準クロック信号ＣＫ＿ＲＥＦと同期化される。
【００３４】
ノードロジック３１０は、（対応するクロック信号ＣＬＫ＿０１を用いて）ノードＮ１内でＩＤ＿セットアップメッセージ（ノードＳＥＴＳ）を受信する。ノードロジック３１０は、（受信ＦＩＦＯ３３１を介して）ＩＤ＿セットアップメッセージをノードＮ１内のクライアントロジック３４０に送信する。これに応じて、クライアントロジック３４０は、ＩＤ＿セットアップメッセージのＩＤフィールドのＩＤ値を１つインクリメントする（ステップ７０３）。次いで、クライアントロジック３４０は、更新されたＩＤ値（例えば、「１」）をそのノードＩＤレジスタ３５０に書き込む（ステップ７０４）。クライアントロジック３４０はまた、そのタイムスタンプカウンタ３５５をリセットして「０」のタイムスタンプ値を格納し、かつ、そのカラービットレジスタ３５１をリセットして「０」のカラービット値を格納する（ステップ７０５）。したがって、ブランチノードＮ１には、「１」に等しいノードＩＤ値、「０」に等しいタイムスタンプ値、及び「０」に等しいカラービット値が割り当てられる。
【００３５】
クライアントロジック３４０は、（送信ＦＩＦＯ３３２、メッセージアセンブラ３６０及びマルチプレクサ３６５を介して）更新されたノードＩＤ値を含む変更されたＩＤ＿セットアップメッセージを隣接する受信ノードＮ２（下流受信ノード）に送信する（ステップ７０６）。
【００３６】
下流受信ノードがルートノードＮ０である場合（ステップ７０７：ＹＥＳ）は、ＩＤ＿セットアップ処理を完了する（ステップ７０８）。下流受信ノードがルートノードＮ０でない場合（ステップ７０７：ＮＯ）はステップ７０３に戻り、受信ブランチノードのクライアントロジックはＩＤ＿セットアップメッセージのノードＩＤ値を１つインクリメントし（ステップ７０３）、インクリメントされたノードＩＤ値をノードＩＤレジスタに格納し（ステップ７０４）、そして、タイムスタンプカウンタ及びカラービットをリセットする（ステップ７０５）。この処理は、ノードＮ０〜Ｎ５に、０〜５のノードＩＤ値がそれぞれ割り当てられるように継続される。ＩＤ＿セットアップ処理の最後に、ノードＮ０〜Ｎ５のタイムスタンプカウンタは全て、同一のタイムスタンプ値（例えば、「０」）及び同一のカラービット値（例えば、「０」）を格納する。
【００３７】
ノード初期化プロセスの完了後、ノードＮ０のクライアントロジック２４０は、パルスメッセージをリングネットワーク１００上に送信する。一実施形態では、パルスメッセージは、クライアントロジック２４０に提供されたアクティブ化パルス信号によって開始される。別の実施形態では、クライアントロジック２４０は、送信ノードＮ５からの変更されたＩＤ＿セットアップメッセージの受信に応答してパルスメッセージを開始する。パルスメッセージは、リングネットワーク１００上で連続的に転送される。パルスメッセージは、ノードＮ０〜Ｎ５内のノードロジックに順次提供される。ノード内のノードロジックがパルスメッセージを受信するたびに、ノードロジックは、それに対応するカラービットレジスタに格納されたカラービット値をトグルする。例えば、ノードＮ１内のノードロジック３１０がノードＮ０からパルスメッセージを初めて受信すると、ノードロジック３１０は、カラービットレジスタ３５１に格納されているカラービットの値を「０」から「１」に変更する。以下でより詳細に説明するように、カラービットは、ノードＮ０〜Ｎ５によって受信された順序付けメッセージの調停に使用される。
【００３８】
上述したセットアッププロセスの完了後、ノードＮ０〜Ｎ５は通常動作の準備が整う。次に、本発明の一実施形態による、リングネットワーク１００の通常動作について説明する。
【００３９】
ノードＮ０〜Ｎ５のクライアントロジック（例えば、クライアントロジック２４０）は、メッセージバス１０２を介してメッセージを交換することによって通信する。メッセージバス１０２の幅及びフォーマットは、以下の要件を満たす必要がある。メッセージバス１０２は、以下でより詳細に説明する全てのメッセージタイプのカプセル化が可能である必要がある。メッセージバス１０２はまた、配線／バッファの必要なレイアウト面積を最小化するとともに、必要な帯域幅及びタイミングを提供するように設計される。
【００４０】
一実施形態では、メッセージバス１０２上には、（１）ブロードキャストメッセージ、（２）読み出し／変更／書き込みメッセージ、（３）ポイントツーポイント非順序付けメッセージ、（４）ポイントツーポイント順序付けメッセージを含む４つのメッセージタイプが実装される。これらのメッセージの大部分は、例えば、中央処理装置（ＣＰＵ）またはメモリコントローラを含む、ノードＮ０〜Ｎ５内のクライアントロジックによって生成される。
【００４１】
ブロードキャストメッセージでは、送信ノードのクライアントロジック（例えば、ノードＮ０のクライアントロジック２４０）は、ブロードキャストメッセージをその受信隣接ノード（例えば、ノードＮ１）に、（例えば、送信ＦＩＦＯ２３２、メッセージアセンブラ２６０及びマルチプレクサ２６５を介して）送信する。受信隣接ノード内のノードロジック（例えば、ノードロジック３１０）は、ブロードキャストメッセージを受信する。これに応じて、このノードロジックは、ブロードキャストメッセージをそれに対応するクライアントロジック（例えばクライアントロジック３４０）に、（例えば、それに対応する受信ＦＩＦＯ３３１を介して）ルーティングする。このノードロジックはまた、ブロードキャストメッセージをその受信隣接ノード（例えば、ノードＮ２）に、（例えば、マルチプレクサ３６５を介して）転送する。転送は、元の送信ノード（例えば、ノードＮ０）が送信隣接ノード（例えば、ノードＮ５）からブロードキャストメッセージを受信したときに停止される。例えば、キャッシュライン無効化要求が、ブロードキャストメッセージとして送信され得る。
【００４２】
読み出し／変更／書き込みメッセージでは、送信ノードのクライアントロジック（例えば、ノードＮ０のクライアントロジック２４０）が、その受信隣接ノード（例えば、ノードＮ１）に、（例えば、送信ＦＩＦＯ２３２、メッセージアセンブラ２６０及びマルチプレクサ２６５を介して）メッセージを送信する。受信隣接ノード内のノードロジック（例えば、ノードロジック３１０）は、読み出し／変更／書き込みメッセージを受信し、そのメッセージを、それに対応するクライアントロジック（例えば、クライアントロジック３４０）に、（例えば、それに対応する受信ＦＩＦＯ３３１を介して）転送する。このクライアントロジックは、必要であれば、メッセージを変更する。その後、クライアントロジックは、その受信隣接ノード（例えば、ノードＮ２）に、（例えば、送信ＦＩＦＯ３３２、メッセージアセンブラ３６０及びマルチプレクサ３６５を介して）読み出し／変更／書き込みメッセージを転送する。なお、クライアントロジックは、それ自体の裁量で（例えば、対応するフロー制御及び帯域幅割り当てロジックを使用して）、読み出し／変更／書き込みメッセージを転送することに留意されたい。上記の裁量は、読み出し／変更／書き込みメッセージを受信した後のサイクル数（ローカルクロック信号の）であり得る。この転送プロセスは、読み出し／変更／書き込みメッセージがその送信隣接ノード（例えば、ノードＮ５）によって元の送信ノード（例えば、ノードＮ０）に戻るまで、各ノードで繰り返される。元の送信ノードは、受信した読み出し／変更／書き込みメッセージを処理し、読み出し／変更／書き込みメッセージの転送を停止する。上記のセットアップ処理に関連して説明したＩＤ＿セットアップメッセージは、読み出し／変更／書き込みメッセージの一例である。別の例では、ＣＰＵからのキャッシュライン・スヌーパ応答は、読み出し／変更／書き込みメッセージとして送信され得る。
【００４３】
ポイントツーポイント非順序付けメッセージでは、送信ノードのクライアントロジック（例えば、ノードＮ０のクライアントロジック２４０）は、その受信隣接ノード（例えば、ノードＮ１）に、（例えば、送信ＦＩＦＯ２３２、メッセージアセンブラ２６０及びマルチプレクサ２６５を介して）メッセージを送信する。ポイントツーポイント非順序付けメッセージは、他のノードのうちの特定のノード（例えば、ノードＮ２）をアドレス指定し、アドレス指定されたノードのノードＩＤ値がメッセージに含められる。送信ノードとアドレス指定されたノードとの間の各中間ノード内のノードロジックは、メッセージがアドレス指定されたノードに到達するまで、メッセージをその受信隣接ノードに転送する。例えば、ノードＮ１内のノードロジック３１０は、ノードＮ０からポイントツーポイント非順序付けメッセージを受信し、そのノードＩＤ値（例えば、「１」）をメッセージに含まれているノードＩＤ値（例えば、「２」）と比較し、その結果、そのメッセージがノードＮ１をアドレス指定していないと判定する。これに応じて、ノードロジック３１０は、ポイントツーポイント非順序付けメッセージを、（マルチプレクサ３６５を介して）受信ノードＮ２に転送する。なお、ノードロジック３１０は、アドレス指定されていないノードＮ１内のクライアントロジック３４０には、メッセージを転送しないことに留意されたい。ポイントツーポイント非順序付けメッセージを受信すると、ノードＮ２内のノードロジック３１０は、ポイントツーポイント非順序付けメッセージに含まれているノードＩＤ値（例えば、「２」）がそれ自体のノードＩＤ値（例えば、「２」）と等しいことを判定し、これに応じて、（それに対応する受信ＦＩＦＯを介して）それに対応するクライアントロジックにポイントツーポイント非順序付けメッセージを提供する。ポイントツーポイント非順序付けメッセージは、リングネットワーク１００上のアドレス指定されたノードを越えて送信されない（例えば、ノードＮ２は、ポイントツーポイント非順序付けメッセージをノードＮ３に転送しない）。一実施形態では、読み出し要求に対するデータ応答は、ポイントツーポイント非順序付けメッセージとして送信され得る。
【００４４】
ポイントツーポイント順序付けメッセージでは、送信ノードのクライアントロジック（例えば、ノードＮ０のクライアントロジック２４０）は、その受信隣接ノード（例えば、ノードＮ１）に、（例えば、送信ＦＩＦＯ２３２、メッセージアセンブラ２６０及びマルチプレクサ２６５を介して）メッセージを送信する。ポイントツーポイント順序付けメッセージは、他のノードのうちの特定のノード（例えば、ノードＮ２）をアドレス指定し、アドレス指定されたノードのノードＩＤ値がメッセージに含められる。また、送信ノードは、それ自体のノードＩＤレジスタからのそれ自体の一意のノードＩＤ値（例えば、ノードＩＤレジスタ２５０からのノードＩＤ値「０」）と、それ自体のタイムスタンプカウンタ（例えば、タイムスタンプカウンタ２５５）からの現在のタイムスタンプ値（ＴＳ）とをメッセージに付加する。送信ノード（例えば、ノードＮ０）内では、メッセージアセンブラ２６０は、ポイントツーポイント順序付けメッセージを送信するときに、タイムスタンプカウンタ２５５をインクリメントする。
【００４５】
送信ノードとアドレス指定されたノードとの間の各中間ノード（例えば、ノードＮ１）内のノードロジックは、そのノードＩＤ値（例えば、「１」）と、ポイントツーポイント順序付けメッセージに含まれているアドレス指定ノードＩＤ値（例えば、「２」）とを比較し、その結果、メッセージがその中間ノードをアドレス指定していないと判定する。これに応じて、この中間ノードＮ１のノードロジック３１０は、それに対応する受信ノードＮ２に、（マルチプレクサ３６５を介して）ポイントツーポイント順序付けメッセージを転送する。ポイントツーポイント順序付けメッセージを受信すると、各ノードのノードロジックは、それに対応するタイムスタンプカウンタをインクリメントし、順序付けメッセージをそのメッセージスヌーパに格納する（例えば、ノードＮ１内で、ノードロジック３１０は、それに対応するタイムスタンプカウンタ３５５をインクリメントし、順序付けメッセージをそのメッセージスヌーパ３３０に格納する）。
【００４６】
ポイントツーポイント順序付けメッセージを受信すると、アドレス指定されたノード（例えば、ノードＮ２）内のノードロジックは、そのタイムスタンプカウンタをインクリメントし、ポイントツーポイント順序付けメッセージに含まれているアドレス指定されたノードＩＤ値が、それ自体のノードＩＤ値（例えば、「２」）に等しいと判定する。これに応じて、アドレス指定されたノードＮ２内のノードロジックは、そのカラービットレジスタに格納されたカラービット値を、ポイントツーポイント順序付けメッセージと共にそのメッセージスヌーパに格納する。次いで、アドレス指定されたノードＮ２内のノードロジックは、順序付けメッセージをその対応する受信ノード（例えば、ノードＮ３）に転送する。この転送は、順序付けメッセージが元の送信ノード（例えば、ノードＮ０）に到達するまで継続され、各中間ノードは、そのタイムスタンプカウンタをインクリメントし、順序付けメッセージをそのメッセージスヌーパに格納する。順序付けメッセージを受信すると、元の送信ノード（例えば、ノードＮ０）は、そのタイムスタンプカウンタをインクリメントしない。この時点で、元の送信ノードは、それ自体のメッセージスヌーパのコンテンツを調べることによって、その順序付けメッセージがアドレス指定されたノードによって優先権を与えられるか否かを判定することができる。アドレス指定されたノードは、パルスメッセージが、その対応するカラービットレジスタに格納されたカラービットの状態を変更し、ポイントツーポイント順序付けメッセージの優先度をリゾルブ（ｒｅｓｏｌｖｅ）するまで待機する。このようにして、各ノードのメッセージスヌーパ内の情報は、メッセージが異なる順序で各ノードに受信された場合でも、メッセージの発行順序についての一貫性のあるビューを提供する。メッセージスヌーパ内の情報は、以下でより詳細に説明する方法において、調停及び競合解決のために使用される。
【００４７】
上述したように、ノードＮ０〜Ｎ５の各々は、該ノードによって受信された各ポイントツーポイント順序付けメッセージを、該ノードのメッセージスヌーパに一時的に格納する（例えば、ノードＮ０及びＮ１のメッセージスヌーパ２３０及び３３０は、それぞれ、ノードロジック２１０及び３１０によって受信された順序付けメッセージを格納する）。上述した実施形態では、各メッセージスヌーパはＦＩＦＯであり、メッセージスヌーパＦＩＦＯの深さはリングネットワーク１００の設計パラメータである。一実施形態では、各メッセージスヌーパの深さは、レイアウト領域、動作速度、消費電力、及び必要な帯域幅において適切なトレードオフを提供するように選択される。以下で説明するように、メッセージスヌーパの深さは、リングネットワーク１００上で任意の所与の時点において未処理であり得るポイントツーポイント順序付けメッセージ要求の数を制限する。
【００４８】
一実施形態では、リングネットワーク１００の各ノードには、ポイントツーポイント順序付けメッセージ要求のクォータ（ｑｕｏｔａ）が割り当てられる。このクォータは、０から、メッセージスヌーパの深さから１を引いた値に等しい値までの範囲をとる。各ノードは、そのクォータを超える数の未処理のポイントツーポイント順序付けメッセージを保持することはできず、そのポイントツーポイント順序付けメッセージは、それをオリジネート（生成）したノードにループバックされるまでは未処理と見なされる。各ノードに割り当てられるクォータは、同一である必要はない。例えば、ポイントツーポイント順序付けメッセージを送信することができないノードのクォータは０に設定し、パフォーマンスクリティカルなノード（例えば、ＣＰＵ）には、ポイントツーポイント順序付けメッセージのクォータよりも大きなクォータを割り当てるようにしてもよい。ただし、未処理のポイントツーポイント順序付けメッセージ要求の総数（例えば、各ノードＮ０〜Ｎ５に割り当てられたクォータの合計）は、メッセージスヌーパの深さよりも小さくなければならない。
【００４９】
各メッセージスヌーパは、それに対応するノードを通過するポイントツーポイント順序付けメッセージを格納する。以下でより詳細に説明するように、これらの格納された順序付けメッセージは、リングネットワーク１００上でメッセージが発行された順序を識別するのに使用される。
【００５０】
上述したように、ノードＮ０〜Ｎ５の各タイムスタンプカウンタは「０」の値に初期化される。そして、各タイムスタンプカウンタは、それに対応するノードが元のポイントツーポイント順序付けメッセージを送信したとき、または別のノードでオリジネートされたポイントツーポイント順序付けメッセージを受信したときにインクリメントされる。各タイムスタンプカウンタは、ＭＡＸ＿カウント値に達するまでカウントする。ＭＡＸ＿カウント値に達した後、タイムスタンプカウンタは「０」の値に戻る。一実施形態では、ＭＡＸ＿カウント値は、カウンタエイリアスを回避するために、各メッセージスヌーパのエントリ数の少なくとも２倍になるように選択される。
【００５１】
一実施形態では、タイムスタンプカウンタの初期化（またはラップアラウンド）はまた、タイムスタンプカウンタ値の符号ビットを反転させる。以下でより詳細に説明するように、ノードＮ０〜Ｎ５は、タイムスタンプ値（及び符号ビット）を使用して、メッセージバス１０２上で受信されるポイントツーポイント順序付けメッセージの順序を判定する。
【００５２】
一般に、２つのポイントツーポイント順序付けメッセージに関連するタイムスタンプ値の符号ビットが互いに等しい場合、より小さいタイムスタンプ値を有するポイントツーポイント順序付けメッセージの方が古い（そのため、優先権を有する）。２つのポイントツーポイント順序付けメッセージに関連するタイムスタンプ値の符号ビットが互いに異なる場合、より大きいタイムスタンプ値を有するポイントツーポイント順序付けメッセージの方が古い（そのため、優先権を有する）。２つのポイントツーポイント順序付きメッセージに関連付けられた符号ビット及びタイムスタンプの値の両方が互いに等しい場合、２つのポイントツーポイント順序付きメッセージは同時に送信されたものである。このような条件下では、リゾルブを提供するためには「タイ・ブレーカ」が必要とされる。例えば、各ポイントツーポイント順序付けメッセージにアドレスハッシュ関数を適用して、ランダム値を生成するとよい。より大きい値に関連するポイントツーポイント順序付きメッセージが古いメッセージとして指定され、優先権が与えられる。他の方法を使用して、これらの条件下で、優先度のリゾルブを提供してもよい。
【００５３】
本発明の一実施形態によりポイントツーポイント順序付けメッセージの優先度を判定する方法を、特定の例を用いてより詳細に説明する。この例では、ルートノードＮ０のクライアントロジック２４０は、第１のＣＰＵ（例えば、ＣＰＵ＿０）を含み、ブランチノードＮ３のクライアントロジックは、第２のＣＰＵ（例えば、ＣＰＵ＿１）を含み、ブランチノードＮ５のクライアントロジックは、システムメモリを含む。ＣＰＵ＿０（ノードＮ０）及びＣＰＵ＿１（ノードＮ３）は、ノードＮ５のシステムメモリ内の同一のキャッシュライン「Α」への占有アクセスを試みる。この例では、各ノードＮ０〜Ｎ５のタイムスタンプカウンタの初期値は「０」とする。
【００５４】
図８Ａは、時間Ｔ０でのリングネットワーク１００の状態を示す表８００である。この表８００は、ノードＮ０〜Ｎ５によって実行されるアクション、ノードＮ０〜Ｎ５によってメッセージバス１０２上に提供される出力メッセージ、ノードＮ０〜Ｎ５のメッセージスヌーパのコンテンツ、ノードＮ０〜Ｎ５のタイムスタンプカウンタの値、ノードＮ０〜Ｎ５のカラービットの値、及びリングネットワーク１００上で連続的に転送されるパルスメッセージの位置を含む。時間Ｔ０では、ルートノードＮ０のＣＰＵ＿０は、メッセージＭ＊０＿５（０）をメッセージバス１０２上に送信する（例えば、ＭＳＧ＿０１として）。この例では、Ｍ＊Ｘ＿Ｙ（Ｚ）のメッセージバス表記が使用される。Ｍ＊は、ポイントツーポイント順序付けメッセージを示し、Ｘは、ソースノードＩＤ（すなわち、メッセージをオリジネート（生成）したノードＮ０のノードＩＤレジスタ２５０のコンテンツ）を示し、Ｙは、宛先ノードＩＤ（すなわち、ポイントツーポイント順序付けメッセージを受信するノードＮ５のノードＩＤレジスタのコンテンツ）を示し、Ｚは、メッセージをオリジネートしたノードＮ０のタイムスタンプ値（メッセージの最初の送信時）を示す。したがって、メッセージＭ＊０＿５（０）は、ノードＮ０のタイムスタンプカウンタが０の値を有するときに開始される、ノードＮ０からノードＮ５に送信されるポイントツーポイント順序付けメッセージを指定する。この例では、メッセージＭ＊０＿５（０）は、トランザクションがノードＮ５のシステムメモリ内のキャッシュライン「Α」へのアクセスであることを示す追加の情報（図示しない）を含む。ポイントツーポイント順序付けメッセージＭ＊０＿５（０）をメッセージバス１０２上に送信すると、ノードＮ０のＣＰＵ＿０は、そのタイムスタンプカウンタ２５５を０の値から１の値にインクリメントする。ノードＮ０のメッセージスヌーパ２３０は、メッセージＭ＊０＿５（０）を格納する。
【００５５】
また、時間Ｔ０では、ノードＮ２は、ポイントツーポイント順序付けメッセージＭ＊２＿４（０）をメッセージバス１０２上に送信する（例えば、ＭＳＧ＿２３として）。上記に定義した命名法にしたがって、メッセージＭ＊２＿４（０）は、ノードＮ２のタイムスタンプカウンタの値が０であるときに開始される、ノードＮ２からノードＮ４に送信されるポイントツーポイント順序付けメッセージを指定する。ポイントツーポイント順序付けメッセージＭ＊２＿４（０）をメッセージバス１０２上に送信すると、ノードＮ２は、そのタイムスタンプカウンタを０の値から１の値にインクリメントする。ノードＮ２のメッセージスヌーパは、メッセージＭ＊２＿４（０）を格納する。
【００５６】
なお、時間Ｔ０では、ノードＮ１及びＮ３〜Ｎ５は、いかなるアクションも開始せず（すなわち、いかなるメッセージもメッセージバス１０２上に提供せず）、ノードＮ１及びＮ３〜Ｎ５のメッセージスヌーパは空であることに留意されたい。これらのノードＮ１、Ｎ３〜Ｎ５のいずれも、ポイントツーポイント順序付きメッセージを受信または送信していないので、これらのノードのタイムスタンプカウンタは変更されない。
【００５７】
図示の例では、パルスメッセージは時間Ｔ０においてノードＮ４に到達し、これにより、ノードＮ４のカラービットが「０」値から「１」値に遷移する。この例では、カラービット値及びパルス位置は任意に選択されることに留意されたい。
【００５８】
図８Ｂは、次のサイクルＴ１中のリングネットワーク１００の状態を示す表８０１である。このサイクル中は、ノードＮ０〜Ｎ５はいずれも、いかなる新しいメッセージも送信しない。メッセージＭ＊０＿５（０）はノードＮ１によって受信され、このノードＮ１はメッセージＭ＊０＿５（０）をそのメッセージスヌーパに格納する。ノードＮ１はポイントツーポイント順序付けメッセージを受信したので、このノードＮ１はそのタイムスタンプカウンタを０から１にインクリメントする。ノードＮ１内のノードロジック３１０は、その後、ポイントツーポイント順序付けメッセージＭ＊０＿５（０）をノードＮ２に送信する。
【００５９】
加えて、ポイントツーポイント順序付けメッセージＭ＊２＿４（０）はノードＮ３によって受信され、このノードＮ３はメッセージＭ＊２＿４（０）をそのメッセージスヌーパに格納する。ノードＮ３はポイントツーポイント順序付けメッセージを受信したので、このノードＮ３はそのタイムスタンプカウンタを０から１にインクリメントする。ノードＮ３内のノードロジック３１０は、その後、ポイントツーポイント順序付けメッセージＭ＊２＿４（０）をノードＮ４に送信する。
【００６０】
パルスメッセージは、サイクルＴ１中にノードＮ５に到達し、これにより、ノードＮ５のカラービットを「０」値から「１」値にトグルする。
【００６１】
図８Ｃは、次のサイクルＴ２中のリングネットワーク１００の状態を示す表８０２である。このサイクル中は、ノードＮ３のＣＰＵ＿１は、メッセージＭ＊３＿５（１）をメッセージバス１０２上に送信し（例えば、ＭＳＧ＿３４として）、かつ、このメッセージＭ＊３＿５（１）をそのメッセージスヌーパに格納する。上述したように、メッセージＭ＊３＿５（１）は、ノードＮ３からノードＮ５に送信されるポイントツーポイント順序付けメッセージを指定する。なお、ノードＮ３のタイムスタンプ値は、メッセージＭ＊３＿５（１）が生成された時点では「１」であることに留意されたい。この例では、メッセージＭ＊３＿５（１）は、トランザクションがノードＮ５のシステムメモリ内のキャッシュライン「Α」へのアクセスであることを示す追加の情報（図示しない）を含む。ノードＮ３は順序付けメッセージＭ＊３＿５（１）を送信したので、ノードＮ３は、そのタイムスタンプカウンタを１から２にインクリメントする。なお、ノードＮ０〜Ｎ２及びＮ４〜Ｎ５は、サイクルＴ２中は、いかなる新たなアクションも開始しないことに留意されたい。
【００６２】
また、サイクルＴ２中には、ポイントツーポイント順序付けメッセージＭ＊０＿５（０）はノードＮ２によって受信され、このノードＮ２は、メッセージＭ＊０＿５（０）をそのメッセージスヌーパに格納する。ノードＮ２は順序付けメッセージを受信したので、このノードＮ２はそのタイムスタンプカウンタを１から２にインクリメントする。ノードＮ２内のノードロジックは、その後、ポイントツーポイント順序付けメッセージＭ＊０＿５（０）をノードＮ３に送信する。
【００６３】
加えて、ポイントツーポイント順序付けメッセージＭ＊２＿４（０）はノードＮ４によって受信され、このノードＮ４はメッセージＭ＊２＿４（０）をそのメッセージスヌーパに格納する。ノードＮ４は順序付けメッセージを受信したので、このノードＮ４はそのタイムスタンプカウンタを０から１にインクリメントする。ノードＮ４内のノードロジックは、その後、ポイントツーポイント順序付けメッセージＭ＊２＿４（０）をノードＮ５に送信する。
【００６４】
パルスメッセージは、サイクルＴ２中にノードＮ０に到達し、これにより、ノードＮ０のカラービットを「１」値から「０」値にトグルする。
【００６５】
図８Ｄは、次のサイクルＴ３中のリングネットワーク１００の状態を示す表８０３である。このサイクル中は、ノードＮ０〜Ｎ５はいずれも、いかなる新しいメッセージも送信しない。ポイントツーポイント順序付けメッセージＭ＊０＿５（０）はノードＮ３によって受信され、このノードＮ３はメッセージＭ＊０＿５（０）をそのメッセージスヌーパに格納する。ノードＮ３は順序付けメッセージを受信したので、このノードＮ３はそのタイムスタンプカウンタを２から３にインクリメントする。ノードＮ３内のノードロジックは、その後、ポイントツーポイント順序付けメッセージＭ＊０＿５（０）をノードＮ４に送信する。
【００６６】
加えて、ポイントツーポイント順序付けメッセージＭ＊２＿４（０）はノードＮ５によって受信され、このノードＮ５は、メッセージＭ＊２＿４（０）をそのメッセージスヌーパに格納する。ノードＮ５は順序付けメッセージを受信したので、このノードＮ５はそのタイムスタンプカウンタを０から１にインクリメントする。ノードＮ５内のノードロジックは、その後、ポイントツーポイント順序付けメッセージＭ＊２＿４（０）をノードＮ０に送信する。
【００６７】
また、ポイントツーポイント順序付けメッセージＭ＊３＿５（１）はノードＮ４によって受信され、このノードＮ４はメッセージＭ＊３＿５（１）をそのメッセージスヌーパに格納する。ノードＮ４は順序付けメッセージを受信したので、このノードＮ４はそのタイムスタンプカウンタを１から２にインクリメントする。ノードＮ４内のノードロジックは、その後、ポイントツーポイント順序付けメッセージＭ＊３＿５（１）をノードＮ５に送信する。
【００６８】
パルスメッセージは、サイクルＴ３中にノードＮ１に到達し、これにより、ノードＮ１のカラービットを「１」値から「０」値にトグルする。
【００６９】
図８Ｅは、次のサイクルＴ４中のリングネットワーク１００の状態を示す表８０４である。このサイクル中は、ノードＮ０〜Ｎ５はいずれも、いかなる新しいメッセージも送信しない。ポイントツーポイント順序付けメッセージＭ＊０＿５（０）はノードＮ４によって受信され、このノードＮ４はメッセージＭ＊０＿５（０）をそのメッセージスヌーパに格納する。ノードＮ４は順序付けメッセージを受信したので、このノードＮ４はそのタイムスタンプカウンタを２から３にインクリメントする。ノードＮ４内のノードロジックは、その後、ポイントツーポイント順序付けメッセージＭ＊０＿５（０）をノードＮ５に送信する。
【００７０】
加えて、ポイントツーポイント順序付けメッセージＭ＊２＿４（０）はノードＮ０によって受信され、このノードＮ０はメッセージＭ＊２＿４（０）をそのメッセージスヌーパに格納する。ノードＮ０は順序付けメッセージを受信したので、このノードＮ０はそのタイムスタンプカウンタを１から２にインクリメントする。ノードＮ０内のノードロジックは、その後、ポイントツーポイント順序付けメッセージＭ＊２＿４（０）をノードＮ１に送信する。
【００７１】
また、ポイントツーポイント順序付けメッセージＭ＊３＿５（１）はノードＮ５によって受信され、このノードＮ５はメッセージＭ＊３＿５（１）をそのメッセージスヌーパに格納する。ノードＮ５は順序付けメッセージを受信したので、このノードＮ５はそのタイムスタンプカウンタを１から２にインクリメントする。ポイントツーポイント順序付けメッセージＭ＊３＿５（１）はノードＮ５をアドレス指定しているので、ノードＮ５はメッセージＭ＊３＿５（１）を受信したときにカラービット（例えば、カラービット＝１）の状態を判定して記憶する。一実施形態では、このカラービットは、ノードＮ５のメッセージスヌーパにポイントツーポイント順序付けメッセージＭ＊３＿５（１）と共に格納される。ノードＮ５が適切な順序でポイントツーポイント順序付けメッセージをリゾルブすることを確実にするために、ノードＮ５は、受信したポイントツーポイント順序付けメッセージＭ＊３＿５（１）をリゾルブするべく、カラービットの値がトグルされる（例えば、ノードＮ５内でカラービットが０の値に遷移する）まで待機しなくてはならない。ノードＮ５のノードロジックは、その後、ポイントツーポイント順序付けメッセージＭ＊３＿５（１）をノードＮ０に送信する。
【００７２】
パルスメッセージは、サイクルＴ４中にノードＮ２に到達し、これにより、ノードＮ２のカラービットを「１」値から「０」値にトグルする。
【００７３】
図８Ｆは、次のサイクルＴ５中のリングネットワーク１００の状態を示す表８０５である。このサイクル中は、ノードＮ０〜Ｎ５はいずれも、いかなる新しいメッセージも送信しない。ポイントツーポイント順序付けメッセージＭ＊０＿５（０）はノードＮ５によって受信され、このノードＮ５はメッセージＭ＊０＿５（０）をそのメッセージスヌーパに格納する。ノードＮ５は順序付けメッセージを受信したので、このノードＮ５はそのタイムスタンプカウンタを２から３にインクリメントする。ポイントツーポイント順序付けメッセージＭ＊０＿５（０）はノードＮ５をアドレス指定しているので、ノードＮ５はメッセージＭ＊０＿５（０）を受信したときにカラービット（例えば、カラービット＝１）の状態を判定して記憶する。ノードＮ５が順序付けメッセージを適切な順序でリゾルブすることを確実にするために、ノードＮ５は、受信したポイントツーポイント順序付けメッセージＭ＊０＿５（０）をリゾルブするべく、カラービットの値がトグルされる（例えば、ノードＮ５内でカラービットが０の値に遷移する）まで待機しなくてはならない。ノードＮ５のノードロジックは、その後、ポイントツーポイント順序付けメッセージＭ＊０＿５（０）をノードＮ０に送信する。
【００７４】
加えて、ポイントツーポイント順序付けメッセージＭ＊２＿４（０）はノードＮ１によって受信され、このノードＮ１はメッセージＭ＊２＿４（０）をそのメッセージスヌーパに格納する。ノードＮ１は順序付けメッセージを受信したので、このノードＮ１はそのタイムスタンプカウンタを１から２にインクリメントする。ノードＮ１のノードロジックは、その後、メッセージＭ＊２＿４（０）をノードＮ２に送信する。
【００７５】
また、ポイントツーポイント順序付けメッセージＭ＊３＿５（１）はノードＮ０によって受信され、このノードＮ０はメッセージＭ＊３＿５（１）をそのメッセージスヌーパに格納する。ノードＮ０は順序付けメッセージを受信したので、このノードＮ０はそのタイムスタンプカウンタを２から３にインクリメントする。ノードＮ０のノードロジックは、その後、ポイントツーポイント順序付けメッセージＭ＊３＿５（１）をノードＮ１に送信する。
【００７６】
パルスメッセージは、サイクルＴ５中にノードＮ３に到達し、これにより、ノードＮ３のカラービットを「１」値から「０」値にトグルする。
【００７７】
図８Ｇは、次のサイクルＴ６中のリングネットワーク１００の状態を示す表８０６である。このサイクル中は、ノードＮ０〜Ｎ５はいずれも、いかなる新しいメッセージも送信しない。ポイントツーポイント順序付けメッセージＭ＊０＿５（０）は、そのメッセージをオリジネートしたノードＮ０にループバックする。これに応じて、ノードＮ０は、リングネットワーク２００上でのこのメッセージＭ＊０＿５（０）の転送を停止する。なお、ノードＮ０は、そこで生成され送信された順序付けメッセージの受信に応答して、そのタイムスタンプカウンタをインクリメントしないことに留意されたい。メッセージＭ＊０＿５（０）を受信すると、ノードＮ０は、そのメッセージスヌーパにアクセスし、格納されている順序付けメッセージを比較して、そのポイントツーポイント順序付けメッセージＭ＊０＿５（０）が、同一のノードＮ５をアドレス指定する他のポイントツーポイント順序付けメッセージＭ＊３＿５（１）よりも優先度が高いと判定する（なぜならば、メッセージＭ＊０＿５（０）のタイムスタンプが、他の順序付けメッセージＭ＊３＿５（１）のタイムスタンプよりも小さいからである）。この結果、ノードＮ０に、そのポイントツーポイント順序付けメッセージＭ＊０＿５（０）がノードＮ５によって優先権を与えられ、ノードＮ５によって処理されることが通知される。
【００７８】
加えて、ポイントツーポイント順序付けメッセージＭ＊２＿４（０）は、そのメッセージをオリジネートしたノードＮ２にループバックする。これに応じて、ノードＮ２は、リングネットワーク２００上でのこのメッセージＭ＊２＿４（０）の転送を停止する。ノードＮ２は、そこで生成され送信された順序付けメッセージの受信に応答して、そのタイムスタンプカウンタをインクリメントしない。メッセージＭ＊２＿４（０）を受信すると、ノードＮ２は、そのメッセージスヌーパにアクセスし、格納されている順序付けメッセージを比較して、そのメッセージＭ＊２＿４（０）が、そのメッセージスヌーパに格納されている他の順序付けメッセージよりも優先度が高いと判定する（なぜならば、これらの他のメッセージが、ノードＮ４をアドレス指定していないからである）。この結果、ノードＮ２に、そのメッセージＭ＊２＿４（０）がノードＮ４によって優先権が与えられノードＮ４で処理されることが通知される。
【００７９】
加えて、ポイントツーポイント順序付けメッセージＭ＊３＿５（１）はノードＮ１によって受信され、このノードＮ１はメッセージＭ＊３＿５（１）をそのメッセージスヌーパに格納する。ノードＮ１は順序付けメッセージを受信したので、このノードＮ１はそのタイムスタンプカウンタを２から３にインクリメントする。ノードＮ１のノードロジックは、その後、ポイントツーポイント順序付けメッセージＭ＊３＿５（１）をノードＮ２に送信する。
【００８０】
パルスメッセージは、サイクルＴ６中にノードＮ４に到達し、これにより、ノードＮ４のカラービットを「１」値から「０」値にトグルする。なお、ノードＮ４は、そのカラービットのトグルに応答して、そのメッセージスヌーパに格納された順序付けメッセージの優先度をリゾルブすることに留意されたい。上述したように、ノードＮ４は、そのメッセージバッファ内の、ノードＮ４をアドレス指定した唯一の順序付けメッセージＭ＊２＿４（０）に優先権を与える。
【００８１】
図８Ｈは、次のサイクルＴ７中のリングネットワーク１００の状態を示す表８０７である。このサイクル中は、ノードＮ０〜Ｎ５はいずれも、いかなる新しいメッセージも送信しない。パルスメッセージは、サイクルＴ７中にノードＮ５に到達し、それによって、ノードＮ５のカラービットを「１」値から「０」値にトグルする。このカラービットのトグルに応答して、ノードＮ５は、カラービットが以前の値「１」を有している間に、そのメッセージスヌーパに格納された順序付けメッセージの調停（アービトレーション）を実行する。したがって、ノードＮ５は、ポイントツーポイント順序付けメッセージＭ＊０＿５（０）が他のポイントツーポイント順序付けメッセージＭ＊３＿５（１）よりも優先度が高いと判定する。なぜならば、メッセージＭ＊０＿５（０）のタイムスタンプ値が、他のメッセージＭ＊３＿５（１）のタイムスタンプ値よりも小さいからである。これに応じて、ノードＮ５は、システムメモリのキャッシュライン「Ａ」内の、メッセージＭ＊０＿５（０）によって要求されたデータにアクセスする。ノードＮ５は、この要求されたデータをノードＮ０に送信する別のメッセージ（図示しない）を生成することに留意されたい。さらに、ノードＮ５は、そのメッセージスヌーパに格納されたポイントツーポイント順序付けメッセージＭ＊２＿４（０）を無視することに留意されたい。なぜならば、このメッセージはノードＮ５をアドレス指定していないからである。
【００８２】
加えて、ポイントツーポイント順序付けメッセージＭ＊３＿５（１）はノードＮ２によって受信され、このノードＮ２はメッセージＭ＊３＿５（１）をそのメッセージスヌーパに格納する。ノードＮ２は順序付けメッセージを受信したので、このノードＮ２はそのタイムスタンプカウンタを２から３にインクリメントする。ノードＮ２のノードロジックは、その後、ポイントツーポイント順序付けメッセージＭ＊３＿５（１）をノードＮ３に送信する。
【００８３】
図８１は、次のサイクルＴ８中のリングネットワーク１００の状態を示す表８０８である。このサイクル中は、ノードＮ０〜Ｎ５はいずれも、いかなる新しいメッセージも送信しない。ポイントツーポイント順序付けメッセージＭ＊３＿５（１）は、そのメッセージをオリジネートしたノードＮ３にループバックする。これに応じて、ノードＮ３は、リングネットワーク２００上でのこのメッセージＭ＊３＿５（１）の転送を停止する。ノードＮ３は、そこで生成され送信されたポイントツーポイント順序付けメッセージの受信に応答して、そのタイムスタンプカウンタをインクリメントしない。メッセージＭ＊３＿５（１）を受信すると、ノードＮ３は、そのメッセージスヌーパにアクセスし、格納されている順序付けメッセージを比較して、ノードＮ０から送信されたポイントツーポイント順序付けメッセージＭ＊０＿５（０）が、ノードＮ３から送信されたポイントツーポイント順序付けメッセージＭ＊３＿５（１）よりも優先権が高いと判定する。なぜならば、メッセージＭ＊０＿５（０）のタイムスタンプ値が、メッセージＭ＊３＿５（１）のタイムスタンプ値よりも小さいからである。この結果、ノードＮ３に、メッセージＭ＊３＿５（１）がノードＮ５によって優先されず、ノードＮ５で処理されないことが通知される。これに応じて、ノードＮ３は、メッセージＭ＊３＿５（１）を再送信するべきであると判断する。
【００８４】
以上のようにして、複雑な集中制御回路を必要とせずに、ポイントツーポイント順序付けメッセージをリングネットワーク１００によって処理することができる。必要とされる制御ロジックは、有利なことに各ノードに分散されており、そのため、集中制御装置は不要となる。さらに、広範囲のダイ領域にわたって大規模な低スキュークロックツリーを設計／製造する必要がなく、これにより、有利なことにネットワークの物理的実装を単純化することができる。加えて、リングネットワーク１００は、最小レイテンシかつ高周波数で動作することができる。
【００８５】
上述したように、ノードＮ０〜Ｎ５内のクライアントロジックは、メッセージバス１０２上のメッセージの流れを制御する。リングネットワークの平均帯域幅は２つ（二分割帯域幅）であるため、帯域幅割り当てポリシーとフロー制御ロジックは、各ノードのクライアントロジック内に必ず含まれる。ラウンドロビンまたはクレジットベーススキームなどのいくつかのよく知られている技術を、各ノード内の帯域幅割当て及びフロー制御回路に使用することができる。上述した説明によれば、各ノードの帯域幅割り当て及びフロー制御ロジックは、クライアントロジック・クロックドメインで動作するので、リングネットワーク・クロックドメインの基準クロック信号ＣＫ＿ＲＥＦとは異なる周波数で動作することができる。
【００８６】
以上、本発明をいくつかの実施形態に関連して説明してきたが、本発明は、開示した実施形態に限定されるものではなく、当業者には明らかなように、種々の変形が可能であることを理解されたい。したがって、本発明は、特許請求の範囲によってのみ限定される。
【図１】
2020508625.tif 000003
【図２】
2020508625.tif 000004
【図３】
2020508625.tif 000005
【図４】
2020508625.tif 000006
【図５】
2020508625.tif 000007
【図６】
2020508625.tif 000008
【図７】
2020508625.tif 000009
【図８Ａ】
2020508625.tif 000010
【図８Ｂ】
2020508625.tif 000011
【図８Ｃ】
2020508625.tif 000012
【図８Ｄ】
2020508625.tif 000013
【図８Ｅ】
2020508625.tif 000014
【図８Ｆ】
2020508625.tif 000015
【図８Ｇ】
2020508625.tif 000016
【図８Ｈ】
2020508625.tif 000017
【図８Ｉ】
2020508625.tif 000018
【国際調査報告】
2020508625.tif 000019