JP7014812B2 - 分散制御同期リングネットワークアーキテクチャ - Google Patents

分散制御同期リングネットワークアーキテクチャ Download PDF

Info

Publication number
JP7014812B2
JP7014812B2 JP2019547588A JP2019547588A JP7014812B2 JP 7014812 B2 JP7014812 B2 JP 7014812B2 JP 2019547588 A JP2019547588 A JP 2019547588A JP 2019547588 A JP2019547588 A JP 2019547588A JP 7014812 B2 JP7014812 B2 JP 7014812B2
Authority
JP
Japan
Prior art keywords
message
node
ring network
clock signal
point
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019547588A
Other languages
English (en)
Other versions
JP2020508625A (ja
Inventor
タム、キット・エス
Original Assignee
デジラム コーポレーション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by デジラム コーポレーション filed Critical デジラム コーポレーション
Publication of JP2020508625A publication Critical patent/JP2020508625A/ja
Application granted granted Critical
Publication of JP7014812B2 publication Critical patent/JP7014812B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/42Loop networks
    • H04L12/422Synchronisation for ring networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/10Distribution of clock signals, e.g. skew
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/396Clock trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/02Details
    • H04J3/06Synchronising arrangements
    • H04J3/0635Clock or time synchronisation in a network
    • H04J3/0638Clock or time synchronisation among nodes; Internode synchronisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/42Loop networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/42Loop networks
    • H04L12/437Ring fault isolation or reconfiguration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L7/00Arrangements for synchronising receiver with transmitter
    • H04L7/0008Synchronisation information channels, e.g. clock distribution lines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L7/00Arrangements for synchronising receiver with transmitter
    • H04L7/0016Arrangements for synchronising receiver with transmitter correction of synchronization errors
    • H04L7/0033Correction by delay
    • H04L7/0037Delay of clock signal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L7/00Arrangements for synchronising receiver with transmitter
    • H04L7/04Speed or phase control by synchronisation signals

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Multi Processors (AREA)
  • Small-Scale Networks (AREA)

Description

(関連出願)
本出願は、2017年11月17日出願の「分散制御同期リングネットワークアーキテクチャ」と題する米国特許出願第15/816、235号、及び2016年11月23日出願の「分散制御同期リングネットワークアーキテクチャ」と題する米国仮特許出願第62/425、792号に基づく優先権を主張するものである。上記両出願の開示内容は、参照により本明細書に援用される。
(技術分野)
本発明は、高帯域幅及び低レイテンシを有するオンチップ通信を実現するための改良されたリングネットワークアーキテクチャに関する。
従来の半導体チップは、チップ上に製造された複数の回路ブロックの各々にグローバルクロック信号を分配する大規模な低スキュークロックツリーを含み得る。クロックツリーは、複数の回路ブロックの各々が、他の回路ブロックの各々と同一の入力クロック信号を確実に受信するように設計される。このようなグローバルクロックツリーの実現には、広範囲のレイアウト(ダイ)領域と、比較的複雑な相互接続構造(ポイントツーポイント通信、ブロードキャスト通信、調停、同期を可能にするために)とを必要とする。パイプラインステージが、最小遅延を維持するために相互接続構造に沿って含まれる。加えて、グローバルクロックツリーを確立及び制御するために、集中制御装置が必要とされる。これらの構造の結果として、グローバルクロックツリーは大量の電力を消費する。
上述の制御にもかかわらず、クロックスキューは、最終的に、グローバルクロックツリーの性能を低下させ得る。全ての通信エージェントにおける物理的距離の相違は、このクロックスキューの除去を困難にする。
したがって、クロック同期を実施するための改良された方法及び構造を半導体チップ上に有することが望ましい。この改良された方法及び構造は、集中制御装置を必要とせずに、半導体チップ上で高周波数かつ低レイテンシの動作を提供できることが望ましい。さらに、この改良された方法及び構造は、半導体チップの広範囲にわたって低スキューかつ高電力消費のクロックツリーの使用を必要としない、単純な物理的実装を有することが望ましい。
したがって、本発明は、複数の通信ノードが環状に配置されたリングネットワークアーキテクチャを提供する。リングネットワークアーキテクチャは、高帯域幅及び低レイテンシを有するオンチップ通信を提供するためにウェーブパイプラインを使用する。非常に高い動作周波数は、本発明のリングネットワークアーキテクチャを用いて実現することができる。例えば、各通信ノードが、リングネットワーク上でメッセージを転送するためのノードロジックを含み、ノードロジックが、12レベル未満のファンアウト4(FO4)ロジックを含み、各ロジックゲートが100ピコ秒(PS)のゲート遅延を有すると仮定する。この場合、本発明のリングネットワークアーキテクチャは、ノード間の配線遅延を考慮しても、5GHz以上のデータ転送周波数を提供することができる。
一実施形態によれば、リングネットワークの各ノードは、ソース同期クロッキングスキームを実装し、この結果、広範囲のダイ領域にわたって大規模な低スキュークロックツリーを構築する必要がない。必要とされる制御ロジックは、各ノードに分散されるため、集中制御装置は不要となる。本発明のリングネットワークアーキテクチャによって実現されるクロッキング及び制御スキームは、ネットワークの物理的実装を大幅に単純化し、かつ、非常に高速な動作を可能にする。
一実施形態によれば、基準クロック信号は、リングネットワークのルートノード内で生成される。この基準クロック信号は、リングネットワークの各ノードを経由して一方向にルーティングされる。メッセージは、基準クロック信号と共にノード間で送信され、或るノードによって受信されたメッセージは、対応する受信された基準クロック信号を使用してそのノードにクロック入力される。リングネットワークの各ノードは、タイムスタンプカウンタとカラービットレジスタとを含む。各ノードのタイムスタンプカウンタは、ノードがオリジナルの順序付けられたメッセージを生成して送信するたびに、及びノードがそのノードで生成されていない順序付けられたメッセージを受信するたびに、受信した基準クロック信号を使用して更新される。パルスメッセージがリングネットワークのノードを経由して連続的に転送され、パルスメッセージは、ノードがパルスメッセージを受信するたびにそのノードのカラービットレジスタをトグルする。タイムスタンプカウンタ及びカラービットレジスタの各々は、各タイムスタンプカウンタが同一のタイムスタンプ値を格納し、各カラービットレジスタが同一のカラービット値を格納するように、通常動作の前に初期化される。タイムスタンプ値及びカラービット値により、各ノードが独立して動作していても、各ノードは他のノードによって発行されたトランザクションメッセージを正確な順序でリゾルブし、また、様々なトランザクションメッセージを全く異なるタイミング順序で受信することができる。この機能は、調停と同期のための強力な手段を提供する。
一実施形態では、各ノードは、生成された各順序付けメッセージに、そのタイムスタンプカウンタからのタイムスタンプ値を付加する。各ノードは、リングネットワーク上で受信された順序付けられたメッセージを格納するメッセージスヌーパをさらに含む。カラービットがノード内でトグルされると、ノードは、そのメッセージスヌーパに格納されている順序付けされたメッセージを分析し、最も古いタイムスタンプ値を有する順序付けされたメッセージに優先権を与える。
本発明のリングネットワークアーキテクチャは、例えば、MOSEI(Modified Owned Shared Exclusive Invalid)キャッシュコヒーレンスプロトコル・メモリバスまたは大規模並列プロセッサ上の通信ネットワークを実現するために使用することができる。
本発明は、以下の説明及び図面を参照することによって、より完全に理解されるであろう。
本発明の一実施形態による分散制御同期リングネットワークのブロック図 本発明の一実施形態による、図1の分散制御同期リングネットワークのルートノードのブロック図 本発明の一実施形態による、図1の分散制御同期リングネットワークのブランチノードのブロック図 本発明の一実施形態による、メッセージとクロック信号とのソース同期送信に使用される、図2のルートノード及び図3のブランチノードの一部を示すブロック図 本発明の一実施形態による、図4の様々な信号のソース同期タイミングを示す波形図 本発明の一実施形態による、図1のリングネットワークを初期化する方法を説明するためのフロー図 本発明の一実施形態による、図6の方法のノード初期化プロセスを実施する方法を説明するためのフロー図 本発明の一実施形態による、ポイントツーポイント順序付けメッセージの送信中のリングネットワークの状態を示すテーブル 本発明の一実施形態による、ポイントツーポイント順序付けメッセージの送信中のリングネットワークの状態を示すテーブル 本発明の一実施形態による、ポイントツーポイント順序付けメッセージの送信中のリングネットワークの状態を示すテーブル 本発明の一実施形態による、ポイントツーポイント順序付けメッセージの送信中のリングネットワークの状態を示すテーブル 本発明の一実施形態による、ポイントツーポイント順序付けされたメッセージの送信中のリングネットワークの状態を示すテーブル 本発明の一実施形態による、ポイントツーポイント順序付けメッセージの送信中のリングネットワークの状態を示すテーブル 本発明の一実施形態による、ポイントツーポイント順序付けメッセージの送信中のリングネットワークの状態を示すテーブル 本発明の一実施形態による、ポイントツーポイント順序付けメッセージの送信中のリングネットワークの状態を示すテーブル 本発明の一実施形態による、ポイントツーポイント順序付けメッセージの送信中のリングネットワークの状態を示すテーブル
図1は、本発明の一実施形態による分散制御同期リングネットワーク100のブロック図である。リングネットワーク100は、ルートノードN0と、リング状に接続されたブランチノードN1~N5とを含む。この実施例では、6つの通信ノードN0~N5が含まれているが、他の実施例では、他の数のノードを含み得ることを理解されたい。ただし、各リングネットワークは、1つのルートノードと1以上のブランチノードとを含む。ノードN0~N5の各々は、対応するクロック入力信号及び対応するメッセージ入力信号を受信し、対応するクロック出力信号及び対応するメッセージ出力信号を送信する。リングネットワーク100の信号は、一方向に送信される。図示した実施形態では、リングネットワーク100の信号は時計回りにルーティングされる(ただし、これは必須ではない)。ノードN0~N5の各々は、送信隣接ノードと受信隣接ノードとを有する。例えば、ブランチノードN3は、送信隣接N2と受信隣接N4とを有する。ノードN0、N1、N2、N3、N4及びN5はそれぞれ、クロック信号CLK_01、CLK_12、CLK_23、CLK_34、CLK_45及びCLK_50と、対応する出力メッセージMSG_01、MSG_12、MSG_23、MSG_34、MSG_45及びMSG_50とを受信隣接ノードN1、N2、N3、N4、N5及びN0に送信する。クロック信号CLK_01、CLK_12、CLK_23、CLK_34、CLK_45及びCLK_50は、リングネットワーク100のクロック信号経路101上に送信され、メッセージMSG_01、MSG_12、MSG_23、MSG_34、MSG_45及びMSG_50は、リングネットワーク100のメッセージバス102(メッセージ経路)上に送信される。
図2は、本発明の一実施形態によるルートノードN0をより詳細に示すブロック図である。ルートノードN0は、マスタークロック生成器201(CLK GEN)、遅延ライン202(DELAY)、再同期回路205(SYNC)、ノードロジック210、同期回路220(SYNC)、メッセージスヌーパ230、受信先入れ先出し(FIFO)メモリ231、送信FIFOメモリ232、クライアントロジック240、ノード識別子(ID)メモリ250、カラービットレジスタ251、タイムスタンプ(TS)カウンタ255、メッセージアセンブラ260、及びマルチプレクサ265を含む。
一般に、ルートノードN0は、リングネットワーク・クロックドメイン(基準クロックCK_REFによって指定される)と、クライアントロジック・クロックドメイン(ローカルクロック信号CK0によって指定される)とを含む2つのクロックドメインで動作する回路を含む。これらの2つのクロックドメイン間の境界は、図2の破線270によって示されている。したがって、クライアントロジック240は、クライアントロジック・クロックドメインにおいて実行される。また、クライアントロジック240と、カラービットレジスタ251、ノードIDレジスタ250(ノードIDメモリ250)、タイムスタンプカウンタ255、メッセージスヌーパ230、受信FIFO231、及び送信FIFO232との間の転送は、クライアントロジック・クロックドメインにおいて実行される。クロック生成器201、遅延ライン202、再同期回路205、ノードロジック210、ノードIDメモリ250、カラービットレジスタ251、タイムスタンプ(TS)カウンタ255、メッセージアセンブラ260、及びマルチプレクサ265は、リングネットワーク・クロックドメインにおいて動作する。加えて、メッセージスヌーパ230及び受信FIFO231への書き込み動作、及び送信FIFO232からの読み出し動作は、リングネットワーク・クロックドメインにおいて実行される。一実施形態では、同期回路220(基準クロック信号CK_REF及びローカルクロック信号CK0を受信する)は、リングネットワーク・クロックドメインとクライアントロジック・クロックドメインとの間の同期を、当分野で既知の再同期方法を用いて実行する。リングネットワーク・クロックドメイン及びクライアントロジック・クロックドメインの要件は、以下でより詳細に説明する。
ルートノードN0のマスタークロック生成器201は、リングネットワーク100の基準クロック信号CK_REFを生成する。従来のクロック生成回路(例えば、位相同期ループ回路)を使用して、基準クロック信号CK_REFを生成することができる。上述した実施形態では、基準クロック信号CK_REFは、約5GHz以上の周波数を有する。なお、他の実施形態では、基準クロック信号CK_REFが他の周波数を有し得ることを理解されたい。基準クロック信号CK_REFの周波数及び電圧は、リングネットワークアーキテクチャの帯域幅需要及び電力最適化に基づいてスケーリングすることができる。なお、セットアップ処理(後述する)は通常動作よりも低い基準クロック周波数で実施することができるので、ノードN0~N5間の配線遅延はセットアップ処理に影響を与えないことに留意されたい。また、ルートノードN0は、マスタークロック生成器201を有する唯一のノードであることに留意されたい。以下でより詳細に説明するように、ブランチノードN1、N2、N3、N4及びN5の各々は、それらの送信隣接ノードN0、N1、N2、N3及びN4から送信された対応するクロック信号CLK_01、CLK_12、CLK_23、CLK_34及びCLK_45に応答して動作する。すなわち、基準クロック信号CK_REFは、ブランチノードN0~N5をその順に経由して効率良く転送される。
ルートノードN0は、基準クロック信号CK_REFを使用して、(送信隣接ノードN5からクロック信号CLK_50と共に送信された)入力メッセージMSG_50を同期化する。より具体的には、入力メッセージMSG_50は、まず、送信隣接ノードN5のネットワーククロックドメインと同期される。この結果、ルートノードN0内でのクロックドメインクロス同期が必要となる(すなわち、送信隣接ノードN5から受信したメッセージMSG_50は、ルートノードN0内の基準クロック信号CK_REFと再同期させる必要がある)。一実施形態では、再同期回路205は、入力したクロック信号CLK_50に応答して入力メッセージMSG_50を第1のフリップフロップにラッチすることによって、この再同期動作を実施する。第1のフリップフロップの出力に提供されたメッセージMSG_50は、基準クロック信号CK_REFに応答して第2のフリップフロップにラッチされる。第2のフリップフロップは、ノードロジック210に提供される同期メッセージMSG_0を提供する。この同期メッセージMSG_0は、基準クロック信号CK_REFに応答してノードロジック210に格納される。
図3は、ブランチノードN1をより詳細に示すブロック図である。上述した実施形態では、ブランチノードN2~N5は、ブランチノードN1と実質的に同一である(ただし、これらのノードは、異なるクライアントロジックを実装してもよい)。ブランチノードN1は、クロック遅延ライン302、ノードロジック310、同期回路320、メッセージスヌーパ330、受信FIFOメモリ331、送信FIFOメモリ332、クライアントロジック340、ノード識別子(ID)メモリ350、カラービットレジスタ351、タイムスタンプ(TS)カウンタ355、メッセージアセンブラ360、及びマルチプレクサ365を含む。なお、上述したブランチノードN1の各要素は、ルートノードN0における同様の名称の要素と同様であることに留意されたい。ブランチノードN1のクライアントロジック340は、ローカルノード・クロックドメイン信号CK1に応答して動作する。破線370は、ローカルノード・クロックドメイン(CK1)とリングネットワーク・クロックドメイン(CK_REF)との境界を示し、同期回路320は、これらの2つのクロックドメイン間の通信を提供する。なお、ブランチノードN1は、ルートノードN0のマスタークロック生成部201または再同期回路205に相当する回路を含まないことに留意されたい。すなわち、ルートノードN0は、リングネットワーク100における唯一のマスタークロック生成器201を含む。
次に、ルートノードN0からブランチノードN1へのメッセージ及びクロック信号のソース同期送信のタイミングについて説明する。なお、他ノード間の送信は、ノードN0からノードN1への送信と同様に行われることに留意されたい。
図4は、ノードロジック210、遅延ライン202、メッセージアセンブラ260、マルチプレクサ265、リングネットワーククロック信号経路101、リングネットワークメッセージバス102、及びノードロジック310を含む、ルートノードN0からブランチノードN1へのメッセージ及びクロック信号の送信についてのルートノードN0及びブランチノードN1の関連部分を示すブロック図である。図5は、本発明の一実施形態による、図4の様々な信号のソース同期タイミングを示す波形図である。
一般に、ルートノードN0は、2つの経路上に出力メッセージを送信することができる。第1の経路では、ノードロジック210によって受信されたメッセージMSG_0が、ブランチノードN1のノードロジック310に転送される。この場合、ノードロジック210は、受信したメッセージMSG_0を転送するべきであると判断し(例えば、受信したメッセージMSG_0がルートノードN0をアドレス指定していないと判断する)、そのメッセージをマルチプレクサ265に転送する。マルチプレクサ265は、このメッセージを出力メッセージMSG_01(図4及び図5では、MSG_01INとして示されている)としてルーティングするように制御される。ノードロジック210及びマルチプレクサ265は、基準クロック信号CK_REFに対するノード遅延DN0を導入する。
第2の経路では、クライアントロジック240によって提供されたメッセージMSG_0CLが送信FIFO232を経由してルーティングされ、(基準クロック信号CK_REFに応答して)メッセージアセンブラ260に提供される。メッセージアセンブラ260は、必要な情報(例えば、タイムスタンプカウンタ255からのタイムスタンプ値、及びノードIDメモリ350からのノードID値)をメッセージMSG_0CLに提供し、その結果得られたメッセージをマルチプレクサ265に提供する。マルチプレクサ265は、このメッセージを出力メッセージMSG_01(図4及び図5では、MSG_01INとして示されている)としてルーティングするように制御される。メッセージアセンブラ260及びマルチプレクサ265は、基準クロック信号CK_REFに対するノード遅延DN0をメッセージMSG_0CLに導入する。一実施形態では、メッセージアセンブラ260及びノードロジック210は、これらの回路がそれぞれ、基準クロック信号CK_REFに対する同一(または類似)の遅延を受信メッセージMSG_0CL及びMSG_0に導入するように設計される。図5は、メッセージMSG_0またはメッセージMSG_0CLについて、基準クロック信号と送信メッセージMSG_01INとの間に存在するノード遅延DN0を示す。
図4及び図5の例では、メッセージMSG_0及びMSG_0CLは総称的に示されているが、これらのメッセージ(そして、ブロードキャストメッセージ、リードモディファイライトメッセージ、ポイントツーポイント非順序付けメッセージ、及びポイントツーポイント順序付けメッセージを含む、関連するメッセージタイプ)の詳細は以下で説明する。
送信メッセージMSG_01INは基準クロック信号CK_REFに対して遅延されているので、遅延ライン202を使用して基準クロック信号CK_REFに遅延D202を加えることにより、ルートノードN0の出力クロック信号CLK_01が生成される(図4及び図5では、クロック信号CLK_01INとして示されている)。遅延ライン202によって導入される遅延D202は、クロック信号CLK_01INが、ルートノードN0から送信されたメッセージMSG_01INに対して適切なセットアップ/ホールドタイムを有することを確実にするために選択される。一実施形態では、遅延ライン202の遅延D202は、上述したノード遅延DN0と等しくされる。すなわち、送信メッセージMSG_01INは、ノードN0の既知の内部遅延を用いて出力クロック信号CLK_01INと同期化される。一実施形態では、遅延D202は調整可能である(例えば、ノードロジック210及び/またはクライアントロジック240の制御下で、必要に応じて長くするかまたは短くすることができる)。
なお、ノードN0とノードN1との間のクロック信号経路101及びメッセージバス102を実現するために使用されるクロック信号経路構造101D及びメッセージバス構造102Dは、著しい遅延(例えば、バッファ遅延)を示し得ることに留意されたい。クロック信号経路構造101D及びメッセージバス構造102Dによって導入される遅延は、それぞれ、遅延D101及びD102と示される。したがって、ノードN1によって受信されたクロック信号CLK_01OUTは、ノードN0によって送信されたクロック信号CLK_01INに対してD101だけ遅延される。同様に、ノードN1によって受信されたメッセージMSG_01OUTは、ノードN0によって送信されたメッセージMSG_01INに対してD102だけ遅延される。この関係を図5に示す。(CLK_01IN及びMSG_01INの生成時に)ノードN0によって確立された所望のセットアップ/ホールドタイムを維持するためには、遅延D101及びD102は互いに同一でなければならない。そのため、セットアップ/ホールドタイムの損失を最小限に抑えるためには、クロック信号経路構造101D及びメッセージバス構造102Dを実現するために使用される配線及びバッファを高度に均一化し、かつバランスを取ることが非常に重要である。すなわち、クロック信号経路構造101D及びメッセージバス構造102Dは、送信されたクロック信号CLK_01INと送信されたメッセージMSG_01INとの相対位相が、受信されたクロック信号CLK_01OUTと受信されたメッセージMSG_01OUTとにおいて受信ノードN1で維持されるように、ノードN0とノードN1との間で実質的に同一の送信特性を提供するべきである。
上述した例では、クロック信号経路101及びメッセージバス102は、ウェーブパイプラインシステムとして動作し、メッセージバス102上で送信されたメッセージは、クロック信号経路101上で送信されたクロック信号を用いてソース同期方式で受信ノードにラッチされる。このように、メッセージは、ノードN0からノードN1へ基準クロック信号CK_REFの周波数で送信され、これにより、ノードN0からノードN1への高速データ送信が可能となる。通常動作中、各ノードN0~N5内のノードロジックは、受信したクロック信号に応答して入力メッセージをラッチする(例えば、ノードロジック210及び310は、受信したクロック信号CK_REF及びCLK_01にそれぞれ応答して、入力メッセージMSG_0及びMSG_01をそれぞれラッチする)。
ウェーブパイプライン化が実現されるので、クロック信号経路構造101D及びメッセージバス構造102Dの配線及びバッファ遅延D101及びD102は、リングネットワーク100の動作周波数を劣化させない。なお、ウェーブパイプライン化は、送信ノードが第1のメッセージを受信ノードに送信し、その後、受信ノードが第1のメッセージを受信する前に、送信ノードが第2のメッセージを受信ノードに送信することを可能にすることに留意されたい。すなわち、メッセージバス構造102D上でノードN0からノードN1へ複数のメッセージを同時に送信することができる。このことは、基準クロック信号CK_REFの周期(例えば、5GHzクロックでは200ps)が、隣接するノードN0及びN1間の配線/バッファ遅延D101/D102よりも短い場合に起こり得ることに留意されたい。一実施形態では、隣接するノードの各対の間の配線/バッファ遅延D101/D102は、第1のノード(例えば、ノードN0)からそれに隣接する第2のノード(例えば、ノードN1)に送信される第1の複数のメッセージが、第2のノード(例えば、ノードN1)からそれに隣接する第3のノード(例えば、ノードN2)に送信される第2の複数のメッセージを追い越さないことを確実にするのに十分な長さでなければならない(すなわち、最小遅延を示す)。
一実施形態では、ノードロジック210及びマルチプレクサ265のゲート遅延により、基準クロック信号CK_REFの最大周波数が決定され得る。効率を最大化するためには、生成される基準クロック信号CK_REFの周期をノード遅延DN0と等しくする必要がある。一実施形態では、ノードロジック210は、基準クロック信号CK_REFが5GHz以上の周波数を有することを可能にするシーケンシャルロジック(例えば、10レベルのファンアウト4(FO4)ロジック)を含む。
ノードロジック210は比較的単純な設計を有するので、リングネットワークのノードN0~N5間の通信を比較的高い周波数で実施することができる。クライアントロジック240は一般的に、より複雑な設計を有し、基準クロック信号CK_REFの周波数よりも遅い周波数で動作し得る。すなわち、クライアントロジック240は、リングネットワークからメッセージを基準クロック信号CK_REFの周波数で受信するが、基準クロック信号CK_REFの周波数で応答する必要はない。
別の実施形態では、リングネットワーク100はまた、比較的低い周波数を有する基準クロック信号CK_REFに応答して動作することができ、基準クロック信号CK_REFの周期は、隣接するノード間の配線/バッファ遅延D101/D102よりも大きい。この場合、ノードから送信された各メッセージは、送信ノードが次のメッセージを送信する前に、隣接ノードによって受信(及びラッチ)される。この実施形態では、隣接ノード間の配線/バッファ遅延D101/D102は、信号パイプラインに影響を与えない。一実施形態では、基準クロック信号CK_REFは、セットアップフェーズ(以下で説明する)中はそのような低周波数に減少されるが、通常動作中は高周波数(例えば5GHz以上)に増加される。
次に、リングネットワーク100のノードN0~N5の設定について説明する。
図6は、本発明の一実施形態によるリングネットワーク100を初期化する方法を示すフロー図600である。図6のステップ601に示すように、セットアッププロセスが開始される(例えば、ルートノードN0のクライアントロジック240に提供されるリセット信号をアクティブ化することによって、セットアッププロセスが開始される)。これに応じて、クライアントロジック240はノード初期化処理を開始する(ステップ602)。このノード初期化処理では、ノードN0~N5のノードIDレジスタに格納されているノードID値を初期化し、ノードN0~N5のカラービットレジスタに格納されているカラービットを所定値(例えば、「0」)にリセットし、かつ、各ノードN0~N5内のタイムスタンプカウンタに格納されているタイムスタンプ値を所定値(例えば、「0」)にリセットする。図6のステップ603に示すように、各ノードN0~N5を経由して転送されるパルスメッセージを初期化する(例えば、ルートノードN0のクライアントロジック240に提供されるパルス信号をアクティブ化することによって、パルスメッセージを初期化する)。その後、リングネットワーク100の通常動作が開始される(ステップ604)。
図7は、本発明の一実施形態による、ステップ602のノード初期化プロセスを実施する方法を示すフロー図700である。ルートノードN0は、ノードIDレジスタ250が「0」に等しいノードID値を格納するようにハードワイヤードされる。アクティブ化されたリセット信号の受信に応答して、クライアントロジック240は、読み出し/変更/書き込みメッセージであるID_セットアップメッセージを生成する(ステップ701)。このID_セットアップメッセージは、(ノードN0のノードIDレジスタ250に格納されたノードID値に基づく)「0」の値を有するように初期設定されたノードIDフィールドを含む。クライアントロジック240はまた、そのタイムスタンプカウンタ255をリセットして「0」のタイムスタンプ値を格納し、かつ、そのカラービットレジスタ251をリセットして「0」のカラービット値を格納する(ステップ702)。クライアントロジック240は、(送信FIFO232、メッセージアセンブラ260及びマルチプレクサ265を介して)ID_セットアップメッセージを隣接する受信ノードN1に送信する。このID_セットアップメッセージは、図4及び図5を参照して上述した方法で基準クロック信号CK_REFと同期化される。
ノードロジック310は、(対応するクロック信号CLK_01を用いて)ノードN1内でID_セットアップメッセージ(ノードSETS)を受信する。ノードロジック310は、(受信FIFO331を介して)ID_セットアップメッセージをノードN1内のクライアントロジック340に送信する。これに応じて、クライアントロジック340は、ID_セットアップメッセージのIDフィールドのID値を1つインクリメントする(ステップ703)。次いで、クライアントロジック340は、更新されたID値(例えば、「1」)をそのノードIDレジスタ350に書き込む(ステップ704)。クライアントロジック340はまた、そのタイムスタンプカウンタ355をリセットして「0」のタイムスタンプ値を格納し、かつ、そのカラービットレジスタ351をリセットして「0」のカラービット値を格納する(ステップ705)。したがって、ブランチノードN1には、「1」に等しいノードID値、「0」に等しいタイムスタンプ値、及び「0」に等しいカラービット値が割り当てられる。
クライアントロジック340は、(送信FIFO332、メッセージアセンブラ360及びマルチプレクサ365を介して)更新されたノードID値を含む変更されたID_セットアップメッセージを隣接する受信ノードN2(下流受信ノード)に送信する(ステップ706)。
下流受信ノードがルートノードN0である場合(ステップ707:YES)は、ID_セットアップ処理を完了する(ステップ708)。下流受信ノードがルートノードN0でない場合(ステップ707:NO)はステップ703に戻り、受信ブランチノードのクライアントロジックはID_セットアップメッセージのノードID値を1つインクリメントし(ステップ703)、インクリメントされたノードID値をノードIDレジスタに格納し(ステップ704)、そして、タイムスタンプカウンタ及びカラービットをリセットする(ステップ705)。この処理は、ノードN0~N5に、0~5のノードID値がそれぞれ割り当てられるように継続される。ID_セットアップ処理の最後に、ノードN0~N5のタイムスタンプカウンタは全て、同一のタイムスタンプ値(例えば、「0」)及び同一のカラービット値(例えば、「0」)を格納する。
ノード初期化プロセスの完了後、ノードN0のクライアントロジック240は、パルスメッセージをリングネットワーク100上に送信する。一実施形態では、パルスメッセージは、クライアントロジック240に提供されたアクティブ化パルス信号によって開始される。別の実施形態では、クライアントロジック240は、送信ノードN5からの変更されたID_セットアップメッセージの受信に応答してパルスメッセージを開始する。パルスメッセージは、リングネットワーク100上で連続的に転送される。パルスメッセージは、ノードN0~N5内のノードロジックに順次提供される。ノード内のノードロジックがパルスメッセージを受信するたびに、ノードロジックは、それに対応するカラービットレジスタに格納されたカラービット値をトグルする。例えば、ノードN1内のノードロジック310がノードN0からパルスメッセージを初めて受信すると、ノードロジック310は、カラービットレジスタ351に格納されているカラービットの値を「0」から「1」に変更する。以下でより詳細に説明するように、カラービットは、ノードN0~N5によって受信された順序付けメッセージの調停に使用される。
上述したセットアッププロセスの完了後、ノードN0~N5は通常動作の準備が整う。次に、本発明の一実施形態による、リングネットワーク100の通常動作について説明する。
ノードN0~N5のクライアントロジック(例えば、クライアントロジック240)は、メッセージバス102を介してメッセージを交換することによって通信する。メッセージバス102の幅及びフォーマットは、以下の要件を満たす必要がある。メッセージバス102は、以下でより詳細に説明する全てのメッセージタイプのカプセル化が可能である必要がある。メッセージバス102はまた、配線/バッファの必要なレイアウト面積を最小化するとともに、必要な帯域幅及びタイミングを提供するように設計される。
一実施形態では、メッセージバス102上には、(1)ブロードキャストメッセージ、(2)読み出し/変更/書き込みメッセージ、(3)ポイントツーポイント非順序付けメッセージ、(4)ポイントツーポイント順序付けメッセージを含む4つのメッセージタイプが実装される。これらのメッセージの大部分は、例えば、中央処理装置(CPU)またはメモリコントローラを含む、ノードN0~N5内のクライアントロジックによって生成される。
ブロードキャストメッセージでは、送信ノードのクライアントロジック(例えば、ノードN0のクライアントロジック240)は、ブロードキャストメッセージをその受信隣接ノード(例えば、ノードN1)に、(例えば、送信FIFO232、メッセージアセンブラ260及びマルチプレクサ265を介して)送信する。受信隣接ノード内のノードロジック(例えば、ノードロジック310)は、ブロードキャストメッセージを受信する。これに応じて、このノードロジックは、ブロードキャストメッセージをそれに対応するクライアントロジック(例えばクライアントロジック340)に、(例えば、それに対応する受信FIFO331を介して)ルーティングする。このノードロジックはまた、ブロードキャストメッセージをその受信隣接ノード(例えば、ノードN2)に、(例えば、マルチプレクサ365を介して)転送する。転送は、元の送信ノード(例えば、ノードN0)が送信隣接ノード(例えば、ノードN5)からブロードキャストメッセージを受信したときに停止される。例えば、キャッシュライン無効化要求が、ブロードキャストメッセージとして送信され得る。
読み出し/変更/書き込みメッセージでは、送信ノードのクライアントロジック(例えば、ノードN0のクライアントロジック240)が、その受信隣接ノード(例えば、ノードN1)に、(例えば、送信FIFO232、メッセージアセンブラ260及びマルチプレクサ265を介して)メッセージを送信する。受信隣接ノード内のノードロジック(例えば、ノードロジック310)は、読み出し/変更/書き込みメッセージを受信し、そのメッセージを、それに対応するクライアントロジック(例えば、クライアントロジック340)に、(例えば、それに対応する受信FIFO331を介して)転送する。このクライアントロジックは、必要であれば、メッセージを変更する。その後、クライアントロジックは、その受信隣接ノード(例えば、ノードN2)に、(例えば、送信FIFO332、メッセージアセンブラ360及びマルチプレクサ365を介して)読み出し/変更/書き込みメッセージを転送する。なお、クライアントロジックは、それ自体の裁量で(例えば、対応するフロー制御及び帯域幅割り当てロジックを使用して)、読み出し/変更/書き込みメッセージを転送することに留意されたい。上記の裁量は、読み出し/変更/書き込みメッセージを受信した後のサイクル数(ローカルクロック信号の)であり得る。この転送プロセスは、読み出し/変更/書き込みメッセージがその送信隣接ノード(例えば、ノードN5)によって元の送信ノード(例えば、ノードN0)に戻るまで、各ノードで繰り返される。元の送信ノードは、受信した読み出し/変更/書き込みメッセージを処理し、読み出し/変更/書き込みメッセージの転送を停止する。上記のセットアップ処理に関連して説明したID_セットアップメッセージは、読み出し/変更/書き込みメッセージの一例である。別の例では、CPUからのキャッシュライン・スヌーパ応答は、読み出し/変更/書き込みメッセージとして送信され得る。
ポイントツーポイント非順序付けメッセージでは、送信ノードのクライアントロジック(例えば、ノードN0のクライアントロジック240)は、その受信隣接ノード(例えば、ノードN1)に、(例えば、送信FIFO232、メッセージアセンブラ260及びマルチプレクサ265を介して)メッセージを送信する。ポイントツーポイント非順序付けメッセージは、他のノードのうちの特定のノード(例えば、ノードN2)をアドレス指定し、アドレス指定されたノードのノードID値がメッセージに含められる。送信ノードとアドレス指定されたノードとの間の各中間ノード内のノードロジックは、メッセージがアドレス指定されたノードに到達するまで、メッセージをその受信隣接ノードに転送する。例えば、ノードN1内のノードロジック310は、ノードN0からポイントツーポイント非順序付けメッセージを受信し、そのノードID値(例えば、「1」)をメッセージに含まれているノードID値(例えば、「2」)と比較し、その結果、そのメッセージがノードN1をアドレス指定していないと判定する。これに応じて、ノードロジック310は、ポイントツーポイント非順序付けメッセージを、(マルチプレクサ365を介して)受信ノードN2に転送する。なお、ノードロジック310は、アドレス指定されていないノードN1内のクライアントロジック340には、メッセージを転送しないことに留意されたい。ポイントツーポイント非順序付けメッセージを受信すると、ノードN2内のノードロジック310は、ポイントツーポイント非順序付けメッセージに含まれているノードID値(例えば、「2」)がそれ自体のノードID値(例えば、「2」)と等しいことを判定し、これに応じて、(それに対応する受信FIFOを介して)それに対応するクライアントロジックにポイントツーポイント非順序付けメッセージを提供する。ポイントツーポイント非順序付けメッセージは、リングネットワーク100上のアドレス指定されたノードを越えて送信されない(例えば、ノードN2は、ポイントツーポイント非順序付けメッセージをノードN3に転送しない)。一実施形態では、読み出し要求に対するデータ応答は、ポイントツーポイント非順序付けメッセージとして送信され得る。
ポイントツーポイント順序付けメッセージでは、送信ノードのクライアントロジック(例えば、ノードN0のクライアントロジック240)は、その受信隣接ノード(例えば、ノードN1)に、(例えば、送信FIFO232、メッセージアセンブラ260及びマルチプレクサ265を介して)メッセージを送信する。ポイントツーポイント順序付けメッセージは、他のノードのうちの特定のノード(例えば、ノードN2)をアドレス指定し、アドレス指定されたノードのノードID値がメッセージに含められる。また、送信ノードは、それ自体のノードIDレジスタからのそれ自体の一意のノードID値(例えば、ノードIDレジスタ250からのノードID値「0」)と、それ自体のタイムスタンプカウンタ(例えば、タイムスタンプカウンタ255)からの現在のタイムスタンプ値(TS)とをメッセージに付加する。送信ノード(例えば、ノードN0)内では、メッセージアセンブラ260は、ポイントツーポイント順序付けメッセージを送信するときに、タイムスタンプカウンタ255をインクリメントする。
送信ノードとアドレス指定されたノードとの間の各中間ノード(例えば、ノードN1)内のノードロジックは、そのノードID値(例えば、「1」)と、ポイントツーポイント順序付けメッセージに含まれているアドレス指定ノードID値(例えば、「2」)とを比較し、その結果、メッセージがその中間ノードをアドレス指定していないと判定する。これに応じて、この中間ノードN1のノードロジック310は、それに対応する受信ノードN2に、(マルチプレクサ365を介して)ポイントツーポイント順序付けメッセージを転送する。ポイントツーポイント順序付けメッセージを受信すると、各ノードのノードロジックは、それに対応するタイムスタンプカウンタをインクリメントし、順序付けメッセージをそのメッセージスヌーパに格納する(例えば、ノードN1内で、ノードロジック310は、それに対応するタイムスタンプカウンタ355をインクリメントし、順序付けメッセージをそのメッセージスヌーパ330に格納する)。
ポイントツーポイント順序付けメッセージを受信すると、アドレス指定されたノード(例えば、ノードN2)内のノードロジックは、そのタイムスタンプカウンタをインクリメントし、ポイントツーポイント順序付けメッセージに含まれているアドレス指定されたノードID値が、それ自体のノードID値(例えば、「2」)に等しいと判定する。これに応じて、アドレス指定されたノードN2内のノードロジックは、そのカラービットレジスタに格納されたカラービット値を、ポイントツーポイント順序付けメッセージと共にそのメッセージスヌーパに格納する。次いで、アドレス指定されたノードN2内のノードロジックは、順序付けメッセージをその対応する受信ノード(例えば、ノードN3)に転送する。この転送は、順序付けメッセージが元の送信ノード(例えば、ノードN0)に到達するまで継続され、各中間ノードは、そのタイムスタンプカウンタをインクリメントし、順序付けメッセージをそのメッセージスヌーパに格納する。順序付けメッセージを受信すると、元の送信ノード(例えば、ノードN0)は、そのタイムスタンプカウンタをインクリメントしない。この時点で、元の送信ノードは、それ自体のメッセージスヌーパのコンテンツを調べることによって、その順序付けメッセージがアドレス指定されたノードによって優先権を与えられるか否かを判定することができる。アドレス指定されたノードは、パルスメッセージが、その対応するカラービットレジスタに格納されたカラービットの状態を変更し、ポイントツーポイント順序付けメッセージの優先度をリゾルブ(resolve)するまで待機する。このようにして、各ノードのメッセージスヌーパ内の情報は、メッセージが異なる順序で各ノードに受信された場合でも、メッセージの発行順序についての一貫性のあるビューを提供する。メッセージスヌーパ内の情報は、以下でより詳細に説明する方法において、調停及び競合解決のために使用される。
上述したように、ノードN0~N5の各々は、該ノードによって受信された各ポイントツーポイント順序付けメッセージを、該ノードのメッセージスヌーパに一時的に格納する(例えば、ノードN0及びN1のメッセージスヌーパ230及び330は、それぞれ、ノードロジック210及び310によって受信された順序付けメッセージを格納する)。上述した実施形態では、各メッセージスヌーパはFIFOであり、メッセージスヌーパFIFOの深さはリングネットワーク100の設計パラメータである。一実施形態では、各メッセージスヌーパの深さは、レイアウト領域、動作速度、消費電力、及び必要な帯域幅において適切なトレードオフを提供するように選択される。以下で説明するように、メッセージスヌーパの深さは、リングネットワーク100上で任意の所与の時点において未処理であり得るポイントツーポイント順序付けメッセージ要求の数を制限する。
一実施形態では、リングネットワーク100の各ノードには、ポイントツーポイント順序付けメッセージ要求のクォータ(quota)が割り当てられる。このクォータは、0から、メッセージスヌーパの深さから1を引いた値に等しい値までの範囲をとる。各ノードは、そのクォータを超える数の未処理のポイントツーポイント順序付けメッセージを保持することはできず、そのポイントツーポイント順序付けメッセージは、それをオリジネート(生成)したノードにループバックされるまでは未処理と見なされる。各ノードに割り当てられるクォータは、同一である必要はない。例えば、ポイントツーポイント順序付けメッセージを送信することができないノードのクォータは0に設定し、パフォーマンスクリティカルなノード(例えば、CPU)には、ポイントツーポイント順序付けメッセージのクォータよりも大きなクォータを割り当てるようにしてもよい。ただし、未処理のポイントツーポイント順序付けメッセージ要求の総数(例えば、各ノードN0~N5に割り当てられたクォータの合計)は、メッセージスヌーパの深さよりも小さくなければならない。
各メッセージスヌーパは、それに対応するノードを通過するポイントツーポイント順序付けメッセージを格納する。以下でより詳細に説明するように、これらの格納された順序付けメッセージは、リングネットワーク100上でメッセージが発行された順序を識別するのに使用される。
上述したように、ノードN0~N5の各タイムスタンプカウンタは「0」の値に初期化される。そして、各タイムスタンプカウンタは、それに対応するノードが元のポイントツーポイント順序付けメッセージを送信したとき、または別のノードでオリジネートされたポイントツーポイント順序付けメッセージを受信したときにインクリメントされる。各タイムスタンプカウンタは、MAX_カウント値に達するまでカウントする。MAX_カウント値に達した後、タイムスタンプカウンタは「0」の値に戻る。一実施形態では、MAX_カウント値は、カウンタエイリアスを回避するために、各メッセージスヌーパのエントリ数の少なくとも2倍になるように選択される。
一実施形態では、タイムスタンプカウンタの初期化(またはラップアラウンド)はまた、タイムスタンプカウンタ値の符号ビットを反転させる。以下でより詳細に説明するように、ノードN0~N5は、タイムスタンプ値(及び符号ビット)を使用して、メッセージバス102上で受信されるポイントツーポイント順序付けメッセージの順序を判定する。
一般に、2つのポイントツーポイント順序付けメッセージに関連するタイムスタンプ値の符号ビットが互いに等しい場合、より小さいタイムスタンプ値を有するポイントツーポイント順序付けメッセージの方が古い(そのため、優先権を有する)。2つのポイントツーポイント順序付けメッセージに関連するタイムスタンプ値の符号ビットが互いに異なる場合、より大きいタイムスタンプ値を有するポイントツーポイント順序付けメッセージの方が古い(そのため、優先権を有する)。2つのポイントツーポイント順序付きメッセージに関連付けられた符号ビット及びタイムスタンプの値の両方が互いに等しい場合、2つのポイントツーポイント順序付きメッセージは同時に送信されたものである。このような条件下では、リゾルブを提供するためには「タイ・ブレーカ」が必要とされる。例えば、各ポイントツーポイント順序付けメッセージにアドレスハッシュ関数を適用して、ランダム値を生成するとよい。より大きい値に関連するポイントツーポイント順序付きメッセージが古いメッセージとして指定され、優先権が与えられる。他の方法を使用して、これらの条件下で、優先度のリゾルブを提供してもよい。
本発明の一実施形態によりポイントツーポイント順序付けメッセージの優先度を判定する方法を、特定の例を用いてより詳細に説明する。この例では、ルートノードN0のクライアントロジック240は、第1のCPU(例えば、CPU_0)を含み、ブランチノードN3のクライアントロジックは、第2のCPU(例えば、CPU_1)を含み、ブランチノードN5のクライアントロジックは、システムメモリを含む。CPU_0(ノードN0)及びCPU_1(ノードN3)は、ノードN5のシステムメモリ内の同一のキャッシュライン「Α」への占有アクセスを試みる。この例では、各ノードN0~N5のタイムスタンプカウンタの初期値は「0」とする。
図8Aは、時間T0でのリングネットワーク100の状態を示す表800である。この表800は、ノードN0~N5によって実行されるアクション、ノードN0~N5によってメッセージバス102上に提供される出力メッセージ、ノードN0~N5のメッセージスヌーパのコンテンツ、ノードN0~N5のタイムスタンプカウンタの値、ノードN0~N5のカラービットの値、及びリングネットワーク100上で連続的に転送されるパルスメッセージの位置を含む。時間T0では、ルートノードN0のCPU_0は、メッセージM0_5(0)をメッセージバス102上に送信する(例えば、MSG_01として)。この例では、MX_Y(Z)のメッセージバス表記が使用される。Mは、ポイントツーポイント順序付けメッセージを示し、Xは、ソースノードID(すなわち、メッセージをオリジネート(生成)したノードN0のノードIDレジスタ250のコンテンツ)を示し、Yは、宛先ノードID(すなわち、ポイントツーポイント順序付けメッセージを受信するノードN5のノードIDレジスタのコンテンツ)を示し、Zは、メッセージをオリジネートしたノードN0のタイムスタンプ値(メッセージの最初の送信時)を示す。したがって、メッセージM0_5(0)は、ノードN0のタイムスタンプカウンタが0の値を有するときに開始される、ノードN0からノードN5に送信されるポイントツーポイント順序付けメッセージを指定する。この例では、メッセージM0_5(0)は、トランザクションがノードN5のシステムメモリ内のキャッシュライン「Α」へのアクセスであることを示す追加の情報(図示しない)を含む。ポイントツーポイント順序付けメッセージM0_5(0)をメッセージバス102上に送信すると、ノードN0のCPU_0は、そのタイムスタンプカウンタ255を0の値から1の値にインクリメントする。ノードN0のメッセージスヌーパ230は、メッセージM0_5(0)を格納する。
また、時間T0では、ノードN2は、ポイントツーポイント順序付けメッセージM2_4(0)をメッセージバス102上に送信する(例えば、MSG_23として)。上記に定義した命名法にしたがって、メッセージM2_4(0)は、ノードN2のタイムスタンプカウンタの値が0であるときに開始される、ノードN2からノードN4に送信されるポイントツーポイント順序付けメッセージを指定する。ポイントツーポイント順序付けメッセージM2_4(0)をメッセージバス102上に送信すると、ノードN2は、そのタイムスタンプカウンタを0の値から1の値にインクリメントする。ノードN2のメッセージスヌーパは、メッセージM2_4(0)を格納する。
なお、時間T0では、ノードN1及びN3~N5は、いかなるアクションも開始せず(すなわち、いかなるメッセージもメッセージバス102上に提供せず)、ノードN1及びN3~N5のメッセージスヌーパは空であることに留意されたい。これらのノードN1、N3~N5のいずれも、ポイントツーポイント順序付きメッセージを受信または送信していないので、これらのノードのタイムスタンプカウンタは変更されない。
図示の例では、パルスメッセージは時間T0においてノードN4に到達し、これにより、ノードN4のカラービットが「0」値から「1」値に遷移する。この例では、カラービット値及びパルス位置は任意に選択されることに留意されたい。
図8Bは、次のサイクルT1中のリングネットワーク100の状態を示す表801である。このサイクル中は、ノードN0~N5はいずれも、いかなる新しいメッセージも送信しない。メッセージM0_5(0)はノードN1によって受信され、このノードN1はメッセージM0_5(0)をそのメッセージスヌーパに格納する。ノードN1はポイントツーポイント順序付けメッセージを受信したので、このノードN1はそのタイムスタンプカウンタを0から1にインクリメントする。ノードN1内のノードロジック310は、その後、ポイントツーポイント順序付けメッセージM0_5(0)をノードN2に送信する。
加えて、ポイントツーポイント順序付けメッセージM2_4(0)はノードN3によって受信され、このノードN3はメッセージM2_4(0)をそのメッセージスヌーパに格納する。ノードN3はポイントツーポイント順序付けメッセージを受信したので、このノードN3はそのタイムスタンプカウンタを0から1にインクリメントする。ノードN3内のノードロジック310は、その後、ポイントツーポイント順序付けメッセージM2_4(0)をノードN4に送信する。
パルスメッセージは、サイクルT1中にノードN5に到達し、これにより、ノードN5のカラービットを「0」値から「1」値にトグルする。
図8Cは、次のサイクルT2中のリングネットワーク100の状態を示す表802である。このサイクル中は、ノードN3のCPU_1は、メッセージM3_5(1)をメッセージバス102上に送信し(例えば、MSG_34として)、かつ、このメッセージM3_5(1)をそのメッセージスヌーパに格納する。上述したように、メッセージM3_5(1)は、ノードN3からノードN5に送信されるポイントツーポイント順序付けメッセージを指定する。なお、ノードN3のタイムスタンプ値は、メッセージM3_5(1)が生成された時点では「1」であることに留意されたい。この例では、メッセージM3_5(1)は、トランザクションがノードN5のシステムメモリ内のキャッシュライン「Α」へのアクセスであることを示す追加の情報(図示しない)を含む。ノードN3は順序付けメッセージM3_5(1)を送信したので、ノードN3は、そのタイムスタンプカウンタを1から2にインクリメントする。なお、ノードN0~N2及びN4~N5は、サイクルT2中は、いかなる新たなアクションも開始しないことに留意されたい。
また、サイクルT2中には、ポイントツーポイント順序付けメッセージM0_5(0)はノードN2によって受信され、このノードN2は、メッセージM0_5(0)をそのメッセージスヌーパに格納する。ノードN2は順序付けメッセージを受信したので、このノードN2はそのタイムスタンプカウンタを1から2にインクリメントする。ノードN2内のノードロジックは、その後、ポイントツーポイント順序付けメッセージM0_5(0)をノードN3に送信する。
加えて、ポイントツーポイント順序付けメッセージM2_4(0)はノードN4によって受信され、このノードN4はメッセージM2_4(0)をそのメッセージスヌーパに格納する。ノードN4は順序付けメッセージを受信したので、このノードN4はそのタイムスタンプカウンタを0から1にインクリメントする。ノードN4内のノードロジックは、その後、ポイントツーポイント順序付けメッセージM2_4(0)をノードN5に送信する。
パルスメッセージは、サイクルT2中にノードN0に到達し、これにより、ノードN0のカラービットを「1」値から「0」値にトグルする。
図8Dは、次のサイクルT3中のリングネットワーク100の状態を示す表803である。このサイクル中は、ノードN0~N5はいずれも、いかなる新しいメッセージも送信しない。ポイントツーポイント順序付けメッセージM0_5(0)はノードN3によって受信され、このノードN3はメッセージM0_5(0)をそのメッセージスヌーパに格納する。ノードN3は順序付けメッセージを受信したので、このノードN3はそのタイムスタンプカウンタを2から3にインクリメントする。ノードN3内のノードロジックは、その後、ポイントツーポイント順序付けメッセージM0_5(0)をノードN4に送信する。
加えて、ポイントツーポイント順序付けメッセージM2_4(0)はノードN5によって受信され、このノードN5は、メッセージM2_4(0)をそのメッセージスヌーパに格納する。ノードN5は順序付けメッセージを受信したので、このノードN5はそのタイムスタンプカウンタを0から1にインクリメントする。ノードN5内のノードロジックは、その後、ポイントツーポイント順序付けメッセージM2_4(0)をノードN0に送信する。
また、ポイントツーポイント順序付けメッセージM3_5(1)はノードN4によって受信され、このノードN4はメッセージM3_5(1)をそのメッセージスヌーパに格納する。ノードN4は順序付けメッセージを受信したので、このノードN4はそのタイムスタンプカウンタを1から2にインクリメントする。ノードN4内のノードロジックは、その後、ポイントツーポイント順序付けメッセージM3_5(1)をノードN5に送信する。
パルスメッセージは、サイクルT3中にノードN1に到達し、これにより、ノードN1のカラービットを「1」値から「0」値にトグルする。
図8Eは、次のサイクルT4中のリングネットワーク100の状態を示す表804である。このサイクル中は、ノードN0~N5はいずれも、いかなる新しいメッセージも送信しない。ポイントツーポイント順序付けメッセージM0_5(0)はノードN4によって受信され、このノードN4はメッセージM0_5(0)をそのメッセージスヌーパに格納する。ノードN4は順序付けメッセージを受信したので、このノードN4はそのタイムスタンプカウンタを2から3にインクリメントする。ノードN4内のノードロジックは、その後、ポイントツーポイント順序付けメッセージM0_5(0)をノードN5に送信する。
加えて、ポイントツーポイント順序付けメッセージM2_4(0)はノードN0によって受信され、このノードN0はメッセージM2_4(0)をそのメッセージスヌーパに格納する。ノードN0は順序付けメッセージを受信したので、このノードN0はそのタイムスタンプカウンタを1から2にインクリメントする。ノードN0内のノードロジックは、その後、ポイントツーポイント順序付けメッセージM2_4(0)をノードN1に送信する。
また、ポイントツーポイント順序付けメッセージM3_5(1)はノードN5によって受信され、このノードN5はメッセージM3_5(1)をそのメッセージスヌーパに格納する。ノードN5は順序付けメッセージを受信したので、このノードN5はそのタイムスタンプカウンタを1から2にインクリメントする。ポイントツーポイント順序付けメッセージM3_5(1)はノードN5をアドレス指定しているので、ノードN5はメッセージM3_5(1)を受信したときにカラービット(例えば、カラービット=1)の状態を判定して記憶する。一実施形態では、このカラービットは、ノードN5のメッセージスヌーパにポイントツーポイント順序付けメッセージM3_5(1)と共に格納される。ノードN5が適切な順序でポイントツーポイント順序付けメッセージをリゾルブすることを確実にするために、ノードN5は、受信したポイントツーポイント順序付けメッセージM3_5(1)をリゾルブするべく、カラービットの値がトグルされる(例えば、ノードN5内でカラービットが0の値に遷移する)まで待機しなくてはならない。ノードN5のノードロジックは、その後、ポイントツーポイント順序付けメッセージM3_5(1)をノードN0に送信する。
パルスメッセージは、サイクルT4中にノードN2に到達し、これにより、ノードN2のカラービットを「1」値から「0」値にトグルする。
図8Fは、次のサイクルT5中のリングネットワーク100の状態を示す表805である。このサイクル中は、ノードN0~N5はいずれも、いかなる新しいメッセージも送信しない。ポイントツーポイント順序付けメッセージM0_5(0)はノードN5によって受信され、このノードN5はメッセージM0_5(0)をそのメッセージスヌーパに格納する。ノードN5は順序付けメッセージを受信したので、このノードN5はそのタイムスタンプカウンタを2から3にインクリメントする。ポイントツーポイント順序付けメッセージM0_5(0)はノードN5をアドレス指定しているので、ノードN5はメッセージM0_5(0)を受信したときにカラービット(例えば、カラービット=1)の状態を判定して記憶する。ノードN5が順序付けメッセージを適切な順序でリゾルブすることを確実にするために、ノードN5は、受信したポイントツーポイント順序付けメッセージM0_5(0)をリゾルブするべく、カラービットの値がトグルされる(例えば、ノードN5内でカラービットが0の値に遷移する)まで待機しなくてはならない。ノードN5のノードロジックは、その後、ポイントツーポイント順序付けメッセージM0_5(0)をノードN0に送信する。
加えて、ポイントツーポイント順序付けメッセージM2_4(0)はノードN1によって受信され、このノードN1はメッセージM2_4(0)をそのメッセージスヌーパに格納する。ノードN1は順序付けメッセージを受信したので、このノードN1はそのタイムスタンプカウンタを1から2にインクリメントする。ノードN1のノードロジックは、その後、メッセージM2_4(0)をノードN2に送信する。
また、ポイントツーポイント順序付けメッセージM3_5(1)はノードN0によって受信され、このノードN0はメッセージM3_5(1)をそのメッセージスヌーパに格納する。ノードN0は順序付けメッセージを受信したので、このノードN0はそのタイムスタンプカウンタを2から3にインクリメントする。ノードN0のノードロジックは、その後、ポイントツーポイント順序付けメッセージM3_5(1)をノードN1に送信する。
パルスメッセージは、サイクルT5中にノードN3に到達し、これにより、ノードN3のカラービットを「1」値から「0」値にトグルする。
図8Gは、次のサイクルT6中のリングネットワーク100の状態を示す表806である。このサイクル中は、ノードN0~N5はいずれも、いかなる新しいメッセージも送信しない。ポイントツーポイント順序付けメッセージM0_5(0)は、そのメッセージをオリジネートしたノードN0にループバックする。これに応じて、ノードN0は、リングネットワーク200上でのこのメッセージM0_5(0)の転送を停止する。なお、ノードN0は、そこで生成され送信された順序付けメッセージの受信に応答して、そのタイムスタンプカウンタをインクリメントしないことに留意されたい。メッセージM0_5(0)を受信すると、ノードN0は、そのメッセージスヌーパにアクセスし、格納されている順序付けメッセージを比較して、そのポイントツーポイント順序付けメッセージM0_5(0)が、同一のノードN5をアドレス指定する他のポイントツーポイント順序付けメッセージM3_5(1)よりも優先度が高いと判定する(なぜならば、メッセージM0_5(0)のタイムスタンプが、他の順序付けメッセージM3_5(1)のタイムスタンプよりも小さいからである)。この結果、ノードN0に、そのポイントツーポイント順序付けメッセージM0_5(0)がノードN5によって優先権を与えられ、ノードN5によって処理されることが通知される。
加えて、ポイントツーポイント順序付けメッセージM2_4(0)は、そのメッセージをオリジネートしたノードN2にループバックする。これに応じて、ノードN2は、リングネットワーク200上でのこのメッセージM2_4(0)の転送を停止する。ノードN2は、そこで生成され送信された順序付けメッセージの受信に応答して、そのタイムスタンプカウンタをインクリメントしない。メッセージM2_4(0)を受信すると、ノードN2は、そのメッセージスヌーパにアクセスし、格納されている順序付けメッセージを比較して、そのメッセージM2_4(0)が、そのメッセージスヌーパに格納されている他の順序付けメッセージよりも優先度が高いと判定する(なぜならば、これらの他のメッセージが、ノードN4をアドレス指定していないからである)。この結果、ノードN2に、そのメッセージM2_4(0)がノードN4によって優先権が与えられノードN4で処理されることが通知される。
加えて、ポイントツーポイント順序付けメッセージM3_5(1)はノードN1によって受信され、このノードN1はメッセージM3_5(1)をそのメッセージスヌーパに格納する。ノードN1は順序付けメッセージを受信したので、このノードN1はそのタイムスタンプカウンタを2から3にインクリメントする。ノードN1のノードロジックは、その後、ポイントツーポイント順序付けメッセージM3_5(1)をノードN2に送信する。
パルスメッセージは、サイクルT6中にノードN4に到達し、これにより、ノードN4のカラービットを「1」値から「0」値にトグルする。なお、ノードN4は、そのカラービットのトグルに応答して、そのメッセージスヌーパに格納された順序付けメッセージの優先度をリゾルブすることに留意されたい。上述したように、ノードN4は、そのメッセージバッファ内の、ノードN4をアドレス指定した唯一の順序付けメッセージM2_4(0)に優先権を与える。
図8Hは、次のサイクルT7中のリングネットワーク100の状態を示す表807である。このサイクル中は、ノードN0~N5はいずれも、いかなる新しいメッセージも送信しない。パルスメッセージは、サイクルT7中にノードN5に到達し、それによって、ノードN5のカラービットを「1」値から「0」値にトグルする。このカラービットのトグルに応答して、ノードN5は、カラービットが以前の値「1」を有している間に、そのメッセージスヌーパに格納された順序付けメッセージの調停(アービトレーション)を実行する。したがって、ノードN5は、ポイントツーポイント順序付けメッセージM0_5(0)が他のポイントツーポイント順序付けメッセージM3_5(1)よりも優先度が高いと判定する。なぜならば、メッセージM0_5(0)のタイムスタンプ値が、他のメッセージM3_5(1)のタイムスタンプ値よりも小さいからである。これに応じて、ノードN5は、システムメモリのキャッシュライン「A」内の、メッセージM0_5(0)によって要求されたデータにアクセスする。ノードN5は、この要求されたデータをノードN0に送信する別のメッセージ(図示しない)を生成することに留意されたい。さらに、ノードN5は、そのメッセージスヌーパに格納されたポイントツーポイント順序付けメッセージM2_4(0)を無視することに留意されたい。なぜならば、このメッセージはノードN5をアドレス指定していないからである。
加えて、ポイントツーポイント順序付けメッセージM3_5(1)はノードN2によって受信され、このノードN2はメッセージM3_5(1)をそのメッセージスヌーパに格納する。ノードN2は順序付けメッセージを受信したので、このノードN2はそのタイムスタンプカウンタを2から3にインクリメントする。ノードN2のノードロジックは、その後、ポイントツーポイント順序付けメッセージM3_5(1)をノードN3に送信する。
図81は、次のサイクルT8中のリングネットワーク100の状態を示す表808である。このサイクル中は、ノードN0~N5はいずれも、いかなる新しいメッセージも送信しない。ポイントツーポイント順序付けメッセージM3_5(1)は、そのメッセージをオリジネートしたノードN3にループバックする。これに応じて、ノードN3は、リングネットワーク200上でのこのメッセージM3_5(1)の転送を停止する。ノードN3は、そこで生成され送信されたポイントツーポイント順序付けメッセージの受信に応答して、そのタイムスタンプカウンタをインクリメントしない。メッセージM3_5(1)を受信すると、ノードN3は、そのメッセージスヌーパにアクセスし、格納されている順序付けメッセージを比較して、ノードN0から送信されたポイントツーポイント順序付けメッセージM0_5(0)が、ノードN3から送信されたポイントツーポイント順序付けメッセージM3_5(1)よりも優先権が高いと判定する。なぜならば、メッセージM0_5(0)のタイムスタンプ値が、メッセージM3_5(1)のタイムスタンプ値よりも小さいからである。この結果、ノードN3に、メッセージM3_5(1)がノードN5によって優先されず、ノードN5で処理されないことが通知される。これに応じて、ノードN3は、メッセージM3_5(1)を再送信するべきであると判断する。
以上のようにして、複雑な集中制御回路を必要とせずに、ポイントツーポイント順序付けメッセージをリングネットワーク100によって処理することができる。必要とされる制御ロジックは、有利なことに各ノードに分散されており、そのため、集中制御装置は不要となる。さらに、広範囲のダイ領域にわたって大規模な低スキュークロックツリーを設計/製造する必要がなく、これにより、有利なことにネットワークの物理的実装を単純化することができる。加えて、リングネットワーク100は、最小レイテンシかつ高周波数で動作することができる。
上述したように、ノードN0~N5内のクライアントロジックは、メッセージバス102上のメッセージの流れを制御する。リングネットワークの平均帯域幅は2つ(二分割帯域幅)であるため、帯域幅割り当てポリシーとフロー制御ロジックは、各ノードのクライアントロジック内に必ず含まれる。ラウンドロビンまたはクレジットベーススキームなどのいくつかのよく知られている技術を、各ノード内の帯域幅割当て及びフロー制御回路に使用することができる。上述した説明によれば、各ノードの帯域幅割り当て及びフロー制御ロジックは、クライアントロジック・クロックドメインで動作するので、リングネットワーク・クロックドメインの基準クロック信号CK_REFとは異なる周波数で動作することができる。
以上、本発明をいくつかの実施形態に関連して説明してきたが、本発明は、開示した実施形態に限定されるものではなく、当業者には明らかなように、種々の変形が可能であることを理解されたい。したがって、本発明は、特許請求の範囲によってのみ限定される。

Claims (15)

  1. リングネットワークであって、
    ルートノード及び1以上のブランチノードを含み、前記ルートノードが基準クロック信号を受信するように結合された複数のノードと、
    前記基準クロック信号を、前記ルートノードから前記1以上のブランチノードの各々を経由して転送し、前記ルートノードに戻す環状のクロック信号経路と、
    前記環状のクロック信号経路と並列に延在する環状のメッセージ経路とを備え、
    前記ルートノード及び前記1以上のブランチノードは、前記クロック信号経路上の前記基準クロック信号とソース同期させて、前記メッセージ経路上にメッセージを送信し、
    前記複数のノードの各々は、前記クロック信号経路上で受信された前記基準クロック信号に応答して、前記メッセージ経路上で受信されたメッセージをラッチする対応するノードロジックを備え、
    前記複数のノードの各々は、メッセージを送信するとき、前記基準クロック信号に対しての対応するノード遅延を導入し、
    前記クロック信号経路は、前記複数のノードの各々のなかの遅延ラインを含み、
    前記対応するノードロジックが、前記基準クロック信号に応答して前記メッセージ経路上で受信された前記メッセージをラッチした後に、前記遅延ラインが前記クロック信号経路上で前記基準クロック信号に対して遅延を導入し、
    前記複数のノードの各々のなかで前記遅延ラインによって導入される前記遅延は、前記対応するノード遅延に基づいて選択された遅延であり、
    前記遅延ラインから出力される前記基準クロック信号は、前記ノードからの前記メッセージ経路上への送信を制御するためには使用されないことを特徴とするリングネットワーク。
  2. 請求項1に記載のリングネットワークであって、
    前記メッセージは、前記メッセージ経路上に一方向に送信されることを特徴とするリングネットワーク。
  3. 請求項1に記載のリングネットワークであって、
    前記基準クロック信号は、前記メッセージ経路上に送信される前記メッセージの同期化に使用される唯一のクロック信号であることを特徴とするリングネットワーク。
  4. 請求項1に記載のリングネットワークであって、
    前記ノードの各々の前記ノードロジックは、前記基準クロック信号によって定義される第1のクロックドメイン内で動作することを特徴とするリングネットワーク。
  5. 請求項1に記載のリングネットワークであって、
    前記複数のノードの各々は、それに対応するローカルクロック信号によって定義されるローカルクロックドメイン内で動作するクライアントロジックを含むことを特徴とするリングネットワーク。
  6. 請求項5に記載のリングネットワークであって、
    前記基準クロック信号は、前記各ローカルクロック信号よりも高い周波数を有することを特徴とするリングネットワーク。
  7. 請求項5に記載のリングネットワークであって、
    前記複数のノードの各々のなかの前記第1のクロックドメインと前記ローカルクロックドメインとの間の通信を可能にする同期回路をさらに備えることを特徴とするリングネットワーク。
  8. 請求項1に記載のリングネットワークであって、
    前記複数のノードの各々は、対応するタイムスタンプカウンタをさらに含むことを特徴とするリングネットワーク。
  9. 請求項8に記載のリングネットワークであって、
    前記複数のノードの各々の前記対応するタイムスタンプカウンタを初期化する手段をさらに含むことを特徴とするリングネットワーク。
  10. 請求項9に記載のリングネットワークであって、
    前記複数のノードの各々は、順序付けされたメッセージをオリジネートしたことに応じて、及び別のノードから順序付けされたメッセージを受信したことに応じて、前記ノードの前記対応するタイムスタンプカウンタをインクリメントする手段であって、前記順序付けされたメッセージの各々は、前記複数のノードのなかの特定の1つをアドレス指定する、該インクリメントする手段をさらに含むことを特徴とするリングネットワーク。
  11. 請求項1に記載のリングネットワークであって、
    前記複数のノードの各々は、
    前記環状のメッセージ経路上で連続的に転送されるパルスメッセージによってトグルされるカラービット値を格納するカラービットレジスタと、
    前記ノードによって前記メッセージ経路上で受信された順序付けメッセージを格納するメッセージスヌーパと、
    前記カラービット値が第1の値である間に前記メッセージスヌーパに格納された順序付けメッセージの優先度を調停する手段であって、前記調停する手段は、前記カラービット値が、前記第1の値から第2の値にトグルされたことに応じて、前記メッセージスヌーパに格納された前記順序付けメッセージの優先度を調停する、該調停する手段とを含むことを特徴とするリングネットワーク。
  12. 請求項1に記載のリングネットワークであって、
    前記複数のノードの各々は、一意のノード識別子アドレスを格納するノード識別子レジスタを含むことを特徴とするリングネットワーク。
  13. 請求項1に記載のリングネットワークであって、
    前記各遅延ラインの遅延は調節可能であることを特徴とするリングネットワーク。
  14. 請求項1に記載のリングネットワークであって、
    前記ルートノードは、前記メッセージ経路上のメッセージを受信し、前記受信されたメッセージを前記基準クロック信号と再同期させるための再同期回路を含むことを特徴とするリングネットワーク。
  15. 請求項1に記載のリングネットワークであって、
    前記各複数のノードの各々は、
    対応するタイムスタンプ値を保存する対応するタイムスタンプカウンタと、
    順序付けされたメッセージをオリジネートしたことに応じて、及び別のノードから順序付けされたメッセージを受信したことに応じて、前記ノードの前記対応するタイムスタンプカウンタをインクリメントする手段であって、前記順序付けされたメッセージの各々は、前記複数のノードのなかの特定の1つをアドレス指定する、該インクリメントする手段と、
    前記ノードによって生成された各順序付けメッセージに、前記対応するタイムスタンプ値を付加する手段と、
    前記ノードによって前記メッセージ経路上で受信された順序付けメッセージを格納する対応するメッセージスヌーパと、
    前記環状のメッセージ経路上で連続的に転送されるパルスメッセージによってトグルされる対応するカラービット値を格納する対応するカラービットレジスタと、
    前記対応するカラービット値が第1の値である間に前記対応するメッセージスヌーパに格納された順序付けメッセージの優先度を調停する手段であって、前記調停する手段は、前記対応するカラービット値が、前記第1の値から第2の値にトグルされたことに応じて、前記対応するメッセージスヌーパに格納された前記順序付けメッセージの優先度を調停する、該調停する手段とを含むことを特徴とするリングネットワーク。
JP2019547588A 2016-11-23 2017-11-20 分散制御同期リングネットワークアーキテクチャ Active JP7014812B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662425792P 2016-11-23 2016-11-23
US62/425,792 2016-11-23
US15/816,235 US10411910B2 (en) 2016-11-23 2017-11-17 Distributed control synchronized ring network architecture
US15/816,235 2017-11-17
PCT/US2017/062627 WO2018098084A2 (en) 2016-11-23 2017-11-20 Distributed control synchronized ring network architecture

Publications (2)

Publication Number Publication Date
JP2020508625A JP2020508625A (ja) 2020-03-19
JP7014812B2 true JP7014812B2 (ja) 2022-02-01

Family

ID=62144074

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019547588A Active JP7014812B2 (ja) 2016-11-23 2017-11-20 分散制御同期リングネットワークアーキテクチャ

Country Status (9)

Country Link
US (1) US10411910B2 (ja)
EP (1) EP3545653B1 (ja)
JP (1) JP7014812B2 (ja)
KR (1) KR102214874B1 (ja)
CN (1) CN110546922B (ja)
CA (1) CA3044672C (ja)
ES (1) ES2903557T3 (ja)
TW (1) TWI730197B (ja)
WO (1) WO2018098084A2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102017011458A1 (de) * 2017-12-12 2019-06-13 WAGO Verwaltungsgesellschaft mit beschränkter Haftung Teilnehmer eines Bussystems, Verfahren zum Betrieb und ein Bussystem
US11829196B2 (en) * 2019-10-22 2023-11-28 Advanced Micro Devices, Inc. Ring transport employing clock wake suppression
JP7231909B2 (ja) * 2019-11-12 2023-03-02 株式会社アーリーワークス 情報処理装置及びプログラム
CN111884901B (zh) * 2020-07-01 2021-10-22 浙江杰芯科技有限公司 一种基于环形网络的时钟同步路径查询方法及系统
CN112514289B (zh) * 2020-10-29 2022-04-12 华为技术有限公司 控制系统、时钟同步方法、控制器、节点设备及车辆
WO2023211320A1 (en) * 2022-04-25 2023-11-02 Saab Ab Method for generating a non-jittering trigger signal in a node of a serial data ring-bus

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002141922A (ja) 2000-11-01 2002-05-17 Ricoh Co Ltd ループ型バスシステム

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58127246A (ja) * 1982-01-26 1983-07-29 Nec Corp リングバスインタフエイス回路
US4716575A (en) * 1982-03-25 1987-12-29 Apollo Computer, Inc. Adaptively synchronized ring network for data communication
US5539727A (en) * 1992-04-14 1996-07-23 Kramarczyk; Marian Method and apparatus for configuring and maintaining token ring networks
JPH06332852A (ja) * 1993-05-20 1994-12-02 Hitachi Ltd データ転送システム
US5815016A (en) 1994-09-02 1998-09-29 Xilinx, Inc. Phase-locked delay loop for clock correction
US6574219B1 (en) * 1998-08-06 2003-06-03 Intel Corp Passive message ordering on a decentralized ring
US6523155B1 (en) * 1998-11-17 2003-02-18 Jeffrey Joseph Ruedinger Method for partitioning a netlist into multiple clock domains
US7012927B2 (en) 2001-02-06 2006-03-14 Honeywell International Inc. High level message priority assignment by a plurality of message-sending nodes sharing a signal bus
US6570813B2 (en) * 2001-05-25 2003-05-27 Micron Technology, Inc. Synchronous mirror delay with reduced delay line taps
US6990316B2 (en) 2001-06-26 2006-01-24 Nokia Corporation Short range RF network configuration
US20030172190A1 (en) * 2001-07-02 2003-09-11 Globespanvirata Incorporated Communications system using rings architecture
US6961861B2 (en) * 2002-02-27 2005-11-01 Sun Microsystems, Inc. Globally clocked interfaces having reduced data path length
US7280550B1 (en) * 2002-12-18 2007-10-09 Cirrus Logic, Inc. Bandwidth optimization of ring topology through propagation delay compensation
US7292585B1 (en) 2002-12-20 2007-11-06 Symantec Operating Corporation System and method for storing and utilizing routing information in a computer network
US7769956B2 (en) * 2005-09-07 2010-08-03 Intel Corporation Pre-coherence channel
US7885296B2 (en) 2006-07-27 2011-02-08 Cisco Technology, Inc. Maintaining consistency among multiple timestamp counters distributed among multiple devices
US7809871B2 (en) 2006-12-07 2010-10-05 Integrated Device Technology Inc. Common access ring system
JP5327832B2 (ja) * 2007-05-16 2013-10-30 独立行政法人情報通信研究機構 ノード識別子と位置指示子とを用いたパケットの通信方法
EP2045971B1 (en) * 2007-10-04 2011-12-07 Harman Becker Automotive Systems GmbH Data network with time synchronization mechanism
US7864747B2 (en) 2008-03-28 2011-01-04 Embarq Holdings Company, Llc System and method for communicating timing to a remote node
US8261218B1 (en) * 2008-08-01 2012-09-04 Altera Corporation Systems and methods for determining beneficial clock-path connection delays
KR101299443B1 (ko) * 2009-05-15 2013-08-22 한국전자통신연구원 보호 절체 방법
CN102064927B (zh) * 2010-09-21 2013-11-13 四川和芯微电子股份有限公司 时序纠错系统及方法
US9247157B2 (en) * 2011-05-13 2016-01-26 Lattice Semiconductor Corporation Audio and video data multiplexing for multimedia stream switch
US8995473B2 (en) * 2012-04-20 2015-03-31 Telefonaktiebolaget L M Ericsson (Publ) Ring based precise time data network clock phase adjustments
US9294301B2 (en) * 2012-09-20 2016-03-22 Arm Limited Selecting between contending data packets to limit latency differences between sources
US9053257B2 (en) * 2012-11-05 2015-06-09 Advanced Micro Devices, Inc. Voltage-aware signal path synchronization
CN105144579B (zh) * 2013-03-15 2018-06-01 高通股份有限公司 低功率架构
US9652804B2 (en) * 2013-12-19 2017-05-16 Chicago Mercantile Exchange Inc. Deterministic and efficient message packet management
US9355054B2 (en) * 2014-01-07 2016-05-31 Omnivision Technologies, Inc. Digital calibration-based skew cancellation for long-reach MIPI D-PHY serial links
CN104796212B (zh) * 2014-01-22 2019-07-05 中兴通讯股份有限公司 一种光突发传送网、节点和传输方法
US9209961B1 (en) * 2014-09-29 2015-12-08 Apple Inc. Method and apparatus for delay compensation in data transmission
EP3015971B1 (en) * 2014-10-28 2019-07-31 Napatech A/S A system and a method of deriving information
US9755955B2 (en) * 2015-02-18 2017-09-05 Accedian Networks Inc. Single queue link aggregation
TW201735581A (zh) * 2016-03-16 2017-10-01 瑞昱半導體股份有限公司 網路通訊裝置與電子裝置
US10496581B2 (en) * 2016-03-30 2019-12-03 Intel Corporation Un-sampled decision feedback equalizer including configurable loop delay

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002141922A (ja) 2000-11-01 2002-05-17 Ricoh Co Ltd ループ型バスシステム

Also Published As

Publication number Publication date
CN110546922B (zh) 2022-05-10
EP3545653B1 (en) 2022-01-05
EP3545653A2 (en) 2019-10-02
KR102214874B1 (ko) 2021-02-09
TWI730197B (zh) 2021-06-11
WO2018098084A2 (en) 2018-05-31
WO2018098084A3 (en) 2019-12-05
CN110546922A (zh) 2019-12-06
ES2903557T3 (es) 2022-04-04
CA3044672A1 (en) 2018-05-31
TW201832470A (zh) 2018-09-01
JP2020508625A (ja) 2020-03-19
EP3545653A4 (en) 2021-01-27
US20180145849A1 (en) 2018-05-24
US10411910B2 (en) 2019-09-10
KR20190085992A (ko) 2019-07-19
CA3044672C (en) 2023-08-29

Similar Documents

Publication Publication Date Title
JP7014812B2 (ja) 分散制御同期リングネットワークアーキテクチャ
JP7019709B2 (ja) 順列リングネットワーク
US5392422A (en) Source synchronized metastable free bus
US7925803B2 (en) Method and systems for mesochronous communications in multiple clock domains and corresponding computer program product
US10355851B2 (en) Methods and systems for synchronization between multiple clock domains
TWI759585B (zh) 異步多時鐘域資料流接合及再同步系統及方法
CN101278528A (zh) 通信系统的用户和通信控制器以及用于在通信系统的用户中实现网关功能的方法
CN111447031B (zh) 一种具有时钟同步功能的片上网络路由器结构
JP7373579B2 (ja) 並べ替えリングネットワーク相互接続型コンピューティングアーキテクチャ
Weber et al. Exploring asynchronous end-to-end communication through a synchronous NoC
TWI834374B (zh) 排列環狀網路
CN111435340B (zh) 互联网总线单元及数据传输方法、wishbone互联网模块、芯片
JP7316083B2 (ja) 情報処理装置
JP2021175127A (ja) 産業用ネットワークに接続されるスレーブ装置を制御するマスタ装置及び当該マスタ装置に備えられる通信モジュール
JPH11345053A (ja) 情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200707

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210428

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210518

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210728

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211223

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220111

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220120