(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-07-24
(45)【発行日】2025-08-01
(54)【発明の名称】リングベースのトポロジにおける仮想チャネルバランシング
(51)【国際特許分類】
H04L 45/44 20220101AFI20250725BHJP
H04L 45/122 20220101ALI20250725BHJP
H04L 12/427 20060101ALI20250725BHJP
【FI】
H04L45/44
H04L45/122
H04L12/427
(21)【出願番号】P 2023577729
(86)(22)【出願日】2023-06-08
(86)【国際出願番号】 US2023024825
(87)【国際公開番号】W WO2024081043
(87)【国際公開日】2024-04-18
【審査請求日】2024-02-26
(32)【優先日】2022-10-14
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】タウルズ,ブライアン・パトリック
(72)【発明者】
【氏名】パルタ,ホジャット
【審査官】長濱 美紗
(56)【参考文献】
【文献】米国特許出願公開第2012/0195314(US,A1)
【文献】特表平10-506736(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/00-12/66
41/00-101/695
(57)【特許請求の範囲】
【請求項1】
リングネットワーク内でデータパケットをルーティングする方法であって、
前記リングネットワークの第1のノード内の第1のキューイング構造において、宛先ノードに送信される予定のデータパケットを受信するステップと、
前記第1のノードが、前記データパケットが前記リングネットワークの前記第1のノードから前記宛先ノードに送信されるときに前記データパケットが横断することになるホップの数を判定するステップと、
前記第1のノードが、前記ホップの数をホップ閾値と比較して前記ホップの数が前記ホップ閾値以下であるかどうかを判定するステップと、
前記第1のノードが、
(i)前記ホップの数が前記ホップ閾値よりも大きい場合は、前記リングネットワークの第2のノード内の第1の仮想チャネル用の次元キューイング構造に、または、
(ii)前記ホップの数が前記ホップ閾値以下である場合は、前記第2のノード内の第2の仮想チャネル用の次元キューイング構造もしくはターンキューイング構造に、
前記データパケットを送信するステップとを含
み、
前記第1の仮想チャネル用の前記次元キューイング構造は、前記データパケットを前記リングネットワークの単一の次元に沿って連続するように誘導し、
前記第2の仮想チャネル用の前記次元キューイング構造は、前記データパケットを前記リングネットワークの単一の次元に沿って連続するように誘導し、
前記ターンキューイング構造は、前記データパケットがトーラスネットワークのある次元から前記トーラスネットワークの別の次元または前記トーラスネットワーク外にターンするときに前記データパケットを誘導する、方法。
【請求項2】
前記第1のノード内の前記第1のキューイング構造は
前記ターンキューイング構造である、請求項1に記載の方法。
【請求項3】
前記データパケットは、前記第2のノードが前記宛先ノードであるときに、前記第2のノード内の前記ターンキューイング構造に送信される、請求項1または2に記載の方法。
【請求項4】
前記リングネットワークは、第1のデイトラインおよび第2のデイトラインを含
み、
前記データパケットは、前記第1のデイトラインおよび前記第2のデイトラインを横断する際に、現在の仮想チャネルから別の仮想チャネルに移動する、請求項1または2に記載の方法。
【請求項5】
前記第1のデイトラインおよび前記第2のデイトラインは、前記リングネットワーク上の1対のネットワークノード間に各々配置され、前記第1のデイトラインと前記第2のデイトラインとの間に配置されるノードの数は、前記第2のデイトラインと前記第1のデイトラインとの間に配置されるノードの数に一致する、請求項4に記載の方法。
【請求項6】
前記データパケットが前記第1のノードから前記宛先ノードに送信されるときに前記データパケットがデイトラインを横断することになるかどうかを判定するステップをさらに含
み、
前記データパケットは、前記デイトラインを横断する際に、現在の仮想チャネルから別の仮想チャネルに移動する、請求項1または2に記載の方法。
【請求項7】
前記データパケットが前記デイトラインを横断することになると判定されたときに、前記データパケットは、前記第2のノード内の前記第1の仮想チャネル用の前記次元キューイング構造に送信される、請求項6に記載の方法。
【請求項8】
前記第2のノードが、前記データパケットを受信した後に、前記データパケットが前記リングネットワークの前記第2のノードから前記宛先ノードに送信されるときに前記データパケットが横断することになるホップの第2の数を判定するステップと、
前記第2のノードが、前記ホップの第2の数を前記ホップ閾値と比較して前記ホップの第2の数が前記ホップ閾値以下であるかどうかを判定するステップと、
前記第2のノードが、
(i)前記ホップの第2の数が前記ホップ閾値よりも大きい場合は、前記リングネットワークの第3のノード内の前記第1の仮想チャネル用の
前記次元キューイング構造に、または、
(ii)前記ホップの第2の数が前記ホップ閾値以下である場合は、前記第3のノード内の第2の仮想チャネル用の
前記次元キューイング構造もしくは
前記ターンキューイング構造に、
前記データパケットを送信するステップとをさらに含む、請求項6に記載の方法。
【請求項9】
前記データパケットは、前記第3のノードが前記宛先ノードであるときに、前記第3のノード内の前記ターンキューイング構造に送信される、請求項8に記載の方法。
【請求項10】
前記リングネットワークは、トーラスリングまたはツイストトーラスを備えるリングネットワークである、請求項1または2に記載の方法。
【請求項11】
第1のキューイング構造を備える第1のノードと、
第1の仮想チャネル用の次元キューイング構造および第2の仮想チャネル用の次元キューイング構造を備え、
前記第1の仮想チャネル用の前記次元キューイング構造は、データパケットをリングネットワークの単一の次元に沿ってかつ前記第1の仮想チャネル上で連続するように誘導し、前記第2の仮想チャネル用の前記次元キューイング構造は、前記データパケットを前記リングネットワークの単一の次元に沿ってかつ前記第2の仮想チャネル上で連続するように誘導し、第2のノードと、
宛先ノードとを含み、前記第1のノードは、
前記第1のキューイング構造において、前記宛先ノードに送信される予定の
前記データパケットを受信し、
前記データパケットが
前記リングネットワークの前記第1のノードから前記宛先ノードに送信されるときに前記データパケットが横断することになるホップの数を判定し、
前記ホップの数をホップ閾値と比較して前記ホップの数が前記ホップ閾値以下であるかどうかを判定し、
(i)前記ホップの数が前記ホップ閾値よりも大きい場合は、前記第1の仮想チャネル用の前記次元キューイング構造に、または、
(ii)前記ホップの数が前記ホップ閾値以下である場合は、前記第2の仮想チャネル用の前記次元キューイング構造に、
前記データパケットを送信するように構成されている、リングネットワーク。
【請求項12】
前記第1のノード内の前記第1のキューイング構造はターンキューイング構造であ
り、
前記ターンキューイング構造は、前記データパケットがトーラスネットワークのある次元から前記トーラスネットワークの別の次元または前記トーラスネットワーク外にターンするときに前記データパケットを誘導する、請求項11に記載のリングネットワーク。
【請求項13】
前記リングネットワークは、第1のデイトラインおよび第2のデイトラインを含
み、
前記データパケットは、前記第1のデイトラインおよび前記第2のデイトラインを横断する際に、現在の仮想チャネルから別の仮想チャネルに移動する、請求項11または12に記載のリングネットワーク。
【請求項14】
前記第1のデイトラインおよび前記第2のデイトラインは、前記リングネットワーク上の1対のネットワークノード間に各々配置され、前記第1のデイトラインと前記第2のデイトラインとの間に配置されるノードの数は、前記第2のデイトラインと前記第1のデイトラインとの間に配置されるノードの数に一致する、請求項13に記載のリングネットワーク。
【請求項15】
前記リングネットワークは8個よりも多いノードを含む、請求項14に記載のリングネットワーク。
【請求項16】
前記第1のノードはさらに、
前記データパケットが前記第1のノードから前記宛先ノードに送信されるときに前記データパケットがデイトラインを横断することになるかどうかを判定するように構成され、
前記データパケットは、前記デイトラインを横断する際に、現在の仮想チャネルから別の仮想チャネルに移動する、請求項11または12に記載のリングネットワーク。
【請求項17】
前記データパケットが前記デイトラインを横断することになると判定されたときに、前記データパケットは、前記第1の仮想チャネル用の前記次元キューイング構造に送信される、請求項16に記載のリングネットワーク。
【請求項18】
前記第2のノードが、
前記データパケットを受信した後に、前記データパケットが前記リングネットワークの前記第2のノードから前記宛先ノードに送信されるときに前記データパケットが横断することになるホップの第2の数を判定し、
前記第2のノードが、前記ホップの第2の数を前記ホップ閾値と比較して前記ホップの第2の数が前記ホップ閾値以下であるかどうかを判定し、
(i)前記ホップの第2の数が前記ホップ閾値よりも大きい場合は、前記リングネットワークの第3のノード内の前記第1の仮想チャネル用の
前記次元キューイング構造に、または、
(ii)前記ホップの第2の数が前記ホップ閾値以下である場合は、前記第3のノード内の前記第2の仮想チャネル用の
前記次元キューイング構造もしくはターンキューイング構造に、
前記データパケットを送信するように構成されている、請求項16に記載のリングネットワーク。
【請求項19】
前記データパケットは、前記第3のノードが前記宛先ノードであるときに、前記第3のノード内の前記ターンキューイング構造に送信される、請求項18に記載のリングネットワーク。
【請求項20】
前記リングネットワークは、単一の次元のトーラスリングまたはツイストトーラスネットワークである、請求項11または12に記載のリングネットワーク。
【発明の詳細な説明】
【技術分野】
【0001】
相互参照
本願は、2022年10月14日出願の米国特許出願第17/966,134号の継続出願であり、その開示を本願に引用して援用する。
【背景技術】
【0002】
背景
多次元トーラスおよびツイストトーラスネットワークなど、リングベースのネットワークトポロジは、通常、オンチップおよびオフチップのネットワークに使用されている。それらのネットワークトポロジはデッドロックを有することがある。デッドロックは、パケットのチェーンがネットワークを通って進むために互いに待っており、そのチェーンがいずれのパケットも進まないようにするサイクルを形成するときに起きる。デッドロックフリーのネットワークトポロジを保証する一般的な手法は、デイトライン(dateline)またはレッドローバ(red-rover)アルゴリズムを使用することを含み、それらは両方とも仮想チャネルに依存する。しかし、仮想チャネルを使用すると、ネットワーク全体を通してデータパケットの分散がアンバランスになることで、ネットワークトポロジの性能が低下することがある。さらに、デイトラインを使用すると、仮想チャネル依存性チェーンを長くさせることがあり、そのことは、次元あたりのノード数が増えるため不公平性の悪化およびスループットのロスにつながる恐れがある。
【発明の概要】
【0003】
概要
本技術は、デッドロックなしでリングベースのネットワークを通してデータパケットをルーティングすることを対象とする。一態様において、本技術は、リングネットワーク内でデータパケットをルーティングする方法を対象とし、本方法は、リングネットワークの第1のノード内の第1のキューイング構造において、宛先ノードに送信される予定のデータパケットを受信するステップを含む。本方法は、第1のノードが、データパケットがリングネットワークの第1のノードから宛先ノードに送信されるときにデータパケットが横断することになるホップの数を判定するステップを含むこともできる。本方法は、第1のノードが、ホップの数をホップ閾値と比較してホップの数がホップ閾値以下であるかどうかを判定するステップを含むこともできる。
【0004】
本方法は、第1のノードが、(i)ホップの数がホップ閾値よりも大きい場合は、リングネットワークの第2のノード内の第1の仮想チャネル用の次元キューイング構造に、または(ii)ホップの数がホップ閾値以下である場合は、第2のノード内の第2の仮想チャネル用の次元キューイング構造もしくはターンキューイング構造に、データパケットを送信するステップを含むこともできる。
【0005】
いくつかの例において、第1のノード内の第1のキューイング構造はターンキューイング構造である。
【0006】
いくつかの例において、データパケットは、第2のノードが宛先ノードであるときに、第2のノード内のターンキューイング構造に送信される。
【0007】
いくつかの例において、ネットワークは、第1のデイトラインおよび第2のデイトラインを含む。いくつかの例において、第1のデイトラインおよび第2のデイトラインは、リングネットワーク上の1対のネットワークノード間に各々配置され、第1のデイトラインと第2のデイトラインとの間に配置されるノードの数は、第2のデイトラインと第1のデイトラインとの間に配置されるノードの数に一致する。
【0008】
いくつかの例において、第1のノードはさらに、データパケットが第1のノードから宛先ノードに送信されるときにデータパケットがデイトラインを横断することになるかどうかを判定することもできる。いくつかの例において、データパケットがデイトラインを横断することになると判定されたときに、データパケットは、第2のノード内の第1の仮想チャネル用の次元キューイング構造に送信される。
【0009】
いくつかの例において、本方法はさらに、第2のノードが、データパケットを受信した後に、データパケットがリングネットワークの第2のノードから宛先ノードに送信されるときにデータパケットが横断することになるホップの第2の数を判定するステップと、第2のノードが、ホップの数をホップ閾値と比較してホップの第2の数がホップ閾値以下であるかどうかを判定するステップと、第2のノードが、(i)ホップの数がホップ閾値よりも大きい場合は、リングネットワークの第3のノード内の第1の仮想チャネル用の次元キューイング構造に、または(ii)ホップの数がホップ閾値以下である場合は、第3のノード内の第2の仮想チャネル用の次元キューイング構造もしくはターンキューイング構造にデータパケットを送信するステップとを含む。
【0010】
いくつかの例において、データパケットは、第3のノードが宛先ノードであるときに、第3のノード内のターンキューイング構造に送信することができる。
【0011】
いくつかの例において、ネットワークはリングネットワークであり、リングネットワークは、単一の次元のトーラスまたはツイストトーラスネットワークである。
【0012】
別の態様において、本技術は、第1のキューイング構造を有する第1のノードを含むリングネットワークを含むことができる。リングネットワークは、第1の仮想チャネル用の次元キューイング構造および第2の仮想チャネル用の次元キューイング構造を有する第2のノードを含むことができる。リングネットワークは宛先ノードを含むこともでき、第1のノードは、第1のキューイング構造において、宛先ノードに送信される予定のデータパケットを受信するように構成される。リングネットワークは宛先ノードを含むこともできる。第1のノードは、データパケットがリングネットワークの第1のノードから宛先ノードに送信されるときにデータパケットが横断することになるホップの数を判定し、ホップの数をホップ閾値と比較してホップの数がホップ閾値以下であるかどうかを判定するように構成することができる。
【0013】
リングネットワークの第1のノードは、(i)ホップの数がホップ閾値よりも大きい場合は、第1の仮想チャネル用の次元キューイング構造に、または(ii)ホップの数がホップ閾値以下である場合は、第2の仮想チャネル用の次元キューイング構造にデータパケットを送信するように構成することができる。
【0014】
いくつかの例において、リングネットワークの第1のノード内の第1のキューイング構造はターンキューイング構造でよい。
【0015】
いくつかの例において、リングネットワークは、第1のデイトラインおよび第2のデイトラインを含むことができる。いくつかの例において、第1のデイトラインおよび第2のデイトラインは、リングネットワーク上の1対のネットワークノード間に各々配置され、第1のデイトラインと第2のデイトラインとの間に配置されるノードの数は、第2のデイトラインと第1のデイトラインとの間に配置されるノードの数に一致する。いくつかの例において、リングネットワークは8個よりも多いノードを含む。
【0016】
いくつかの例において、第1のノードはさらに、データパケットが第1のノードから宛先ノードに送信されるときにデータパケットがデイトラインを横断することになるかどうかを判定するように構成することができる。
【0017】
いくつかの例において、第2のノードが、データパケットを受信した後に、データパケットがリングネットワークの第2のノードから宛先ノードに送信されるときにデータパケットが横断することになるホップの第2の数を判定し、第2のノードが、ホップの数をホップ閾値と比較してホップの第2の数がホップ閾値以下であるかどうかを判定し、(i)ホップの数がホップ閾値よりも大きい場合は、リングネットワークの第3のノード内の第1の仮想チャネル用の次元キューイング構造に、または(ii)ホップの数がホップ閾値以下である場合は、第3のノード内の第2の仮想チャネル用の次元キューイング構造もしくはターンキューイング構造にデータパケットを送信するように構成することができる。
【0018】
いくつかの例において、データパケットは、第3のノードが宛先ノードであるときに第3のノード内のターンキュー構造に送信される。
【0019】
いくつかの例において、リングネットワークはトーラスリングまたはツイストトーラスである。
【0020】
他の技術的特徴は当業者に、以下の図、説明、および特許請求の範囲から容易に明白となるであろう。
【0021】
添付の図面と併せて論じられる以下の詳細な説明を参照することによって、本開示およびその付随する利点の多くのより完全な理解が容易に得られるであろう。
【図面の簡単な説明】
【0022】
【
図1】本開示の態様による、例示的なリングネットワークを示す図である。
【
図2】本開示の態様による、仮想チャネルを有する例示的なリングネットワークを示す図である。
【
図3】本開示の態様による、デュアルデイトラインを有する例示的なリングネットワークを示す図である。
【
図4】本開示の態様による、ノードがキューイング構造を有する例示的なリングネットワークを示す図である。
【
図5】本開示の態様による、リングネットワークを横断するデータパケットを示す図である。
【
図6】本開示の態様による、リングネットワークを横断するデータパケットを示す図である。
【
図7】本開示の態様による、ネットワーク上でデータパケットを送信する方法を示すフロー図である。
【発明を実施するための形態】
【0023】
詳細な説明
本明細書に記載する技術は、依存性チェーンを短縮し、ネットワークの仮想チャネル(VC:virtual channel)リソースを効率的にロードバランシングすることによって、デッドロックフリーの動作を保証しながら、リングベースのネットワークトポロジの性能を改善することを対象とする。この点において、依存性チェーンは、2つのデイトラインがリングの直径の半分だけ離れるように、付加的なデイトラインを付加することによって短縮できる。VCリソース間のロードバランシングの効率を向上させることは、データパケットがデイトラインの1つを横切らない限りデータパケットを任意の時に第2のVCに切り換えることを含むことができる。
【0024】
リングベースのネットワークトポロジでは、ネットワークを形成するノードは、ワイヤ、ケーブル、トレースなどの物理リンクを介して接続できる。各物理リンクは、任意の数のVC上でデータパケットを伝送することができる。この点において、1対のノード間の各物理リンクは、1つまたは複数のVCを介してデータパケットを通信することができる。例えば、また、
図1のリングネットワーク100に示されているように、各ノード対は物理リンクを介して接続される。例えば、ノード0 101は、物理リンク102を介してノード1 103に接続されており、ノード1 103は、物理リンク104を介してノード2 105に接続されており、ノード2 105は、物理リンク106を介してノード3 107に接続されており、ノード3 107は、物理リンク108を介してノード4 109に接続されており、ノード4 109は、物理リンク110を介してノード5 111に接続されており、ノード5 111は、物理リンク112を介してノード0 101に接続されている。リングネットワーク100の各物理リンク110~112は、コールアウト122および128によって示されているように、2つの仮想チャネルVC0およびVC1を含み、コールアウト122および128は、それぞれ接続102および108に関してVC0(実線)およびVC1(破線)を示す。簡単にするために、
図1は、接続102および108に関してのみVCを示すが、接続104、106、110、および112を含む他の接続も仮想チャネルVC0およびVC1を含むことを理解されたい。リングネットワーク100は、6個のノード(0~5)および2つの仮想チャネル(VC0およびVC1)のみを含むが、リングネットワークは、任意の数のノードおよび任意の数の仮想チャネルを含むことができる。
【0025】
ノードは、他のコンピューティングリソースと通信できる任意のタイプのコンピューティングリソースを含むことができる。例えば、ノードは、コンピュータ、サーバ、モバイルデバイス、プロセッサ、コア、ルータ、メモリ、カード(例えば、アクセラレータカード)、FIFO、または他のこのようなキューなどを含むことができる。いくつかの例において、ノードは、ルータを有するプロセッサなど、コンピューティングリソースの集合体を含むことができる。
【0026】
データパケットを送信するVCの選択は静的でよい。静的ルーティングにおいて、ルートは、予め定められており、固定されていてよい。機械的には、静的ルートをノード内のRAMメモリ内などのテーブルに格納することができる。パケットの宛先を用いて、テーブルにインデックス付与し、宛先までのルートをルックアップすることができる。
【0027】
デイトライン
リングベースのネットワークトポロジにおいて、デイトラインルーティングは、リングの各方向における1つの物理リンクをデイトラインとして指定するために用いられる。この点において、物理リンクは、リング内の両方の方向を別々に取り扱うことができるような双方向リンクとすることができる。キューイング構造は、通常、第1のチャネル上で各データパケットを送信するようにプログラムされている。データパケットがデイトラインを横切る際に、データパケットは、それぞれの宛先ノードに到達するまでに、第2の仮想チャネルに移動される。
【0028】
例えば、また、リングネットワーク100と比較できる
図2のリングネットワーク200に示されているように、ノード211と201との間にデイトライン220が配置されている。リングネットワーク200は、6個のノード201~211と、物理リンク202、204、206、208、210、および212を含む、隣接する各ノード間の物理リンクとを含む。各物理リンクは、物理リンク212以外は、2つの仮想チャネルVC0(実線で示す)およびVC1(破線で示す)を含み、物理リンク212は、VC0とVC1との間でデータパケットを転送する移行リンクと見なすことができる。VC0からVC1への移行を示すために、
図2は、ノード5 211とノード0 201との間の物理リンク212を単一の線として示し、その線は、デイトライン220の左側では実線、デイトライン220の右側では破線である。
【0029】
データパケットがネットワーク200を横断するときに、ルーティングアルゴリズムは、最初に、データパケットをVC0上にルート設定する。しかし、データパケットがデイトライン220を横切る際に、ルーティングアルゴリズムは、データパケットをVC1に切り換え、その後、データパケットをその宛先ノードまでVC1上にルート設定することができる。ほとんどのデータパケットが、デイトライン220を通過する前にそれぞれの宛先ノードに到達するときは、非循環VC依存性の渦巻き様のチェーンが作成される。非循環依存性のこのようなチェーンは、リングネットワーク200がデッドロックフリーであることを保証するのに十分である。しかし、デイトラインルーティングは、リングネットワーク自体よりも長いVC依存性のチェーンを作成する。
【0030】
いずれの個別のパケットもVC0およびVC1によって作成されたチェーン全体に沿って移動することはないが、依存パケットのシーケンスがチェーンに沿ってブロックされることがある。ブロックされたデータパケットを前進させるために、ネットワーク200のキューイング構造は、ローカルにフェアまたはグローバルにフェアな調停アルゴリズムなど、調停アルゴリズムを実装することができる。
【0031】
依存性チェーンの長さを短くするために、第2のデイトラインを導入することができる。2つのデイトラインは、本明細書では「デュアルデイトライン」と称され、リングネットワークの直径の半分だけ離れることができる。例えば、また、リングネットワーク100および200と比較できる
図3のリングネットワーク300に示されているように、第1のデイトライン320が第3のノード(305)の後ろに配置され、第2のデイトライン322が6個のノードのリングネットワーク300のうちのノード5 311の後ろに配置されている。この点において、第1のデイトライン320は、ノード2 305とノード3 307との間に配置され、第2のデイトライン322は、ノード5 311とノード0 301との間に配置されている。したがって、デイトラインの各側に3つのノードが配置されており、ノード301、303、および305は、第2のデイトライン322と第1のデイトライン320との間に配置され、ノード307、309、および311は、第1のデイトライン320と第2のデイトライン322との間に配置されている。
【0032】
リングネットワーク200と同様に、リングネットワーク300は、6個のノード301~311と、物理リンク302、304、306、308、310、および312を含む、隣接する各ノード間の物理リンクとを含む。各物理リンクは、移行リンク312および306以外は、2つの仮想チャネルVC0(実線で示す)およびVC1(破線で示す)を含む。
【0033】
データパケットがネットワーク300を横断するときに、ルーティングアルゴリズムは、最初に、データパケットをVC0上にルート設定することができる。しかし、データパケットが第1のデイトライン320または第2のデイトライン322を横切る際に、ルーティングアルゴリズムは、データパケットのルーティングをVC1に切り換えることができる。次いで、ルーティングアルゴリズムは、データパケットをその宛先ノードまでVC1上にルート設定することができる。データパケットは、VC1に移行される前に、VC0上で最大で2つの物理リンクを横断することができる。例えば、データパケットは、ノード0 301からノード5 311まで送信できる。本例で、データパケットは、VC0上で物理リンク302および304を横断できるが、次いで、物理リンク306で第1のデイトライン320を横切るときにVC1に移行される。データパケットは、次いで、宛先ノード5 311に到達する前に、VC1上で物理リンク308および310を横断することができる。対照的に、また、
図2を参照すると、データパケットは、VC0からVC1に移行する前に、5つの物理リンクを横断することができる。この点において、データパケットは、物理リンク202、204、206、208、および210を含むノード0 201からノード5 211まで物理リンク全体をVC0上で送信できる。
図3は、リングネットワーク300に2つのデイトライン、つまり第1のデイトライン320および第2のデイトライン322のみを示しているが、リングネットワークは任意の数のデイトラインを含むことができる。
【0034】
バランシング
仮想チャネル上でのデータパケットトラフィックのより良好なバランシングは、デイトラインを横切らないデータパケットを第2の仮想チャネルVC1にルーティングすることによって実現することができる。この点において、仮想チャネルを横切らないデータパケットは、データパケットがその宛先ノードからN個のホップであるときにVC0からVC1に移行することができる。Nという値は、リングネットワークのサイズ(例えば、リングネットワーク中のノード数)および予期されるパケットのトラフィックパターンに基づくことができる。
【0035】
バランシングされるVCの利用は、想定されるトラフィックパターンに基づいて決定することができる。この点において、異なるタイプのトラフィックパターンは、各VCを異なるように使用することができる。例えば、全対全トラフィックパターンを有するネットワークは、全対一または他のこのようなトラフィックパターンを有するネットワークとは異なるバランシングの必要を有する場合がある。本明細書で用いられる例では、グローバルな全対全トラフィックパターンについて論じる。グローバルな全対全トラフィックパターンを実装するネットワークでは、各ネットワークノードは、他のすべてのネットワークノードからデータパケットを受信し、他のすべてのネットワークノードにデータパケットを送信することができる。
【0036】
ターンキューおよび次元キューを含むキューイング構造が、ネットワークを通じてデータパケットをルート設定することができる。この点において、ネットワークは、データパケットがネットワークを横断するときにデータパケットを誘導するために、それらのキューイング構造を使用することができる。ターンキューは、データパケットがトーラスネットワークのある次元から次の次元にターンするときにデータパケットを誘導するために使用することができる。例えば、ターンキューは、第1の次元上のノードによって受信されたデータパケットを別の次元に誘導するために使用できる。次元キューは、データパケットがネットワークの単一の次元に沿ってかつ仮想チャネル上で連続するように誘導することができる。例えば、次元キューは、同じ次元およびVC0またはVC1などの共通の仮想チャネルに沿って、データパケットをあるノードから別のノードに誘導することができる。キューイング構造は、ノードの一部またはノードに接続されたコンポーネントでよい。例えば、キューイング構造は、ノードに組み込まれたルータまたは他のネットワークインターフェースの一部でよい。
【0037】
図4は、ネットワーク400のノード401、403、405、および407内のキューイング構造を示す。図示のように、各ノードがキューイング構造を含む。この点において、ノード401は、ターンキュー411、431および次元キュー421を含み、ノード403は、ターンキュー413、433および次元キュー423を含み、ノード405は、ターンキュー415、435および次元キュー425を含み、ノード407は、ターンキュー417、437および次元キュー427を含む。ターンキュー431、433、435、437および411、413、415、417は、データをトーラスネットワークの各次元に出入りするように誘導することができる。
【0038】
図4にさらに示されているように、例示的なデータパケットがネットワーク400に入るところ、それを通って進むところ、そこから出るところが矢印441、443、445、447、および449によって示されている。この点において、矢印441は、データパケットがターンキュー441を介してノード401に入るところを示す。データパケットは、矢印443によって示されているように、ノード401からノード403の次元キュー423に送信される。データパケットは、線445によって示されているように、ノード403からノード405の次元キュー425に送信される。次いで、データパケットは、ノード407のターンキュー417に送信され、その後、矢印449によって示されているように、そこから出るように送信される。
【0039】
図4に示す例のデータパケットは、3つの「ホップ」を行う。ホップは、あるノードから別のノードへの送信である。
図4において、3つのホップとは、ノード401からノード403、ノード403からノード405、およびノード405からノード407への送信である。データパケットがネットワークに沿った0または1のホップに限定されている例では、データパケットはターンキューの使用に限定される。この点において、データパケットは、ターンキューを用いたトーラスリングネットワークの出口次元または入口次元になるため、次元キューをいずれも使用しないことになる。
【0040】
図5のネットワーク500を参照すると、各ノード501、503、505、507、および509の次元キューに、リングネットワークの次元に沿ったルーティングのための仮想チャネルを割り当てることができる。この点において、それぞれノード501~509の次元キュー521、523、525、527、および529にはVC1が割り当てられている。それぞれノード501~509の次元キュー541、543、545、547、および549にはVC0が割り当てられている。同じ仮想チャネル上、例えば、VC0またはVC1上のノード間で移動するデータパケットは、同じ仮想チャネルが割り当てられた次元キュー間を通過することになる。例えば、仮想VC0上でノード503と505との間を通過するデータパケットは、次元キュー543から次元キュー545に通過することになる。同様に、仮想チャネルVC1上でノード503と505との間を通過するデータパケットは、次元キュー523から次元キュー525に通過することになる。
【0041】
h≧2ホップを移動するデータパケットの場合、データパケットは、それらのルートに沿ってh-1の次元キューを使用する。全対全トラフィックが対称的であるときは、次元キューの合計使用数は、少なくとも2ホップであるルートの和によって決定することができ、
合計次元キュー=sum_{h>1}(h-1)*t(h)
ここで、hはホップの数であり、t(h)は、次元キューに沿ってh個のホップを移動するトラフィックの割合である。この和の単位は、リングネットワーク中の各ノードで単一パケットが注入されるときにノード上で次元キューに入るデータパケットの平均数である。
【0042】
その次元に沿って偶数のノードkを有するトーラスリングネットワークにおける全対全トラフィックの場合は、
{1/k if 0≦h<k/2,else
t(h)={1/2k if h=k/2,else
{0
である。
【0043】
次元キュー専用の2つのVCであるVC0とVC1との間でロードバランシングするために、ルーティングアルゴリズムは、閾値Tを定義することができる。ルートにホップがT個以下残っており、デイトラインを通過しないデータパケットはいずれも、VC1に置いてよい。そうでなければ、データパケットはVC0を使用することができる。
【0044】
図5は、ネットワーク500上でDP1が付与された矢印によって示されているデータパケット1の3ホップのルートを示す。この点において、データパケット1は、ノード501にターンキュー531から入る。次いで、データパケット1は、ターンキュー531によってノード503に送信されて次元キュー543でVC0上に至る。データパケット1は、次元キュー543からノード505の次元キュー525に送信されてVC1上に至る。データパケット1は、次元キュー525からノード507のターンキュー517に送信され、その後、ネットワーク500から外される。
【0045】
図5はさらに、ネットワーク500上でDP2が付与された矢印によって示されているデータパケット2の2ホップのルートを示す。この点において、データパケットは、ネットワーク500にノード505を介してターンキュー535から入る。データパケット2は、ターンキュー535からノード507の次元キュー527に送信されてVC1上に至る。データパケットは、次元キュー527からノード509のターンキュー529に送信され、その後、ネットワーク500から外される。
【0046】
データパケット1およびデータパケット2のルーティングは、T=1の閾値を有するネットワーク500のルーティングアルゴリズムに基づいている。したがって、データパケット1は最初に、データパケット1に2ホップ残っているためノード503でVC0上にルート設定される。データパケット1がノード505に達してはじめて、つまり、データパケット1に残っているのが閾値の1に等しい1ホップのときに、VC1にルート設定される。閾値が2ホップであった場合には、データパケット1はノード503でVC1上にルート設定されたはずである。
【0047】
データパケット1の2ホップのルートについては、データパケットは、データパケット2がノード507に到達するときに残っているのが閾値の1に等しい1ホップであるため、すぐにVC1上にルート設定される。
【0048】
ネットワーク500はデイトラインを含むようには示されていないため、ネットワーク500全体のデータパケットのルーティングにおいてデイトラインが考慮されていない。しかし、デイトラインが存在した場合に、データパケット1および2は、データパケットが後からデイトラインを横切る予定がなければ、閾値のときにVC1に切り換えることになるだけである。パケットが横切ることができるデイトラインの数は、テーブルルックアップを行うことによって判定できる。この点において、宛先ノードまでのルートに沿ったデイトラインの数は、RAMメモリテーブルルートに格納することができる。したがって、宛先ノードまでにデータパケットによって横断されるデイトラインの数は、データパケットの宛先を用いて、テーブルにインデックス付与し、テーブルに格納されたように宛先までのルートに沿ったデイトラインの数をルックアップすることによって判定できる。
【0049】
次元VC0とVC1との間でロードバランシングする閾値を計算するために、次元キュー上の合計負荷を、h個のホップが残るデータパケットによってもたらされる負荷に分けることができ、これは、
r(h)=sum_{i>h}t(i)
と定義される。
【0050】
例えば、2個以上のホップを移動するすべてのパケットは、最終的に残りの1ホップを有する。したがって、それらのホップの各々に関するトラフィックの割合の和(すなわち、r(1)=t(1)+t(2)+・・・)を判定して、残りが1ホップのパケットによってもたらされる次元キューの利用を求めることができる。すべてのパケットに何らかの数のホップが残っているため、r(h)の和は、上記で計算したような合計負荷を回復する。
【0051】
合計=sum_{h>0}r(h)
次いで、Tは、2つのVC間のアンバランスを最小限に抑えるように選択できる。
【0052】
minimize|sum_{h>T}r(h)-sum_{0<h≦T}r(h)|
以下の表1の様々なサイズのリングに関して、閾値Tの例示的な値を上記の式を用いて計算した。
【0053】
【0054】
実験に基づくと、リングサイズと計算された閾値(T)との間には線形の関係がある。したがって、閾値(T)=round(0.145・k-0.3)を選択することは、kが4の倍数でありネットワークが最大64個のノードを含むリングを結果としてもたらすことができる。
【0055】
前の段落からの概念は、関数t(h)に関して適切な定義を有するツイストトーラスに拡大することができる。ツイストトーラスネットワークに関する例示的な閾値Tの値を、以下の表2で様々なサイズのリングについて式を用いて計算した。
【0056】
【0057】
トーラスリングネットワークと同様に、ツイストトーラスネットワークでもリングサイズと計算された閾値(T)との間に線形の関係がある。この点において、k≦64の値の場合の閾値(T)は、以下の式の一方を用いて決定することができる。
【0058】
(1)2k×k×k:閾値=round(0.175・k-0.15)
(2)2k×2k×k:閾値=round(0.222・k-0.1)
いくつかの例において、デイトラインは、リングネットワークのルーティングアルゴリズムから取り除くことができる。デイトラインを取り除くことによって、ネットワークを通じたスループットの改善を、特にダイレクトメモリアクセス(DMA)サイズが上昇するときに実現できる。デイトラインが取り除かれる前に一定の条件を満たすことができる。それらの条件は、(1)ネットワークがリング内に8個以下のノードを含むこと(これは、ツイストトーラスネットワークの場合のk≦4に相当する)、(2)VCの使用が、本明細書に記載するバランシング技術を用いてバランシングされていること、(3)リング内に8個のノードがある(やはりk=4のツイストトーラスに該当する)ときに、ノードは、正の方向と負の方向との間で交互に換わって、リングに沿ってちょうど中間に向かうルートに対してタイブレーキングすることを含むことができる。
【0059】
8個を超えるノードを有するネットワーク、VCバランシングが無効化されたネットワーク、またはタイブレーキングが交互に換わらないネットワークでは、VCの非循環の依存性が失われ、VC0対VC0の依存性が全ノード間に現れ、VC0サイクルを断つデイトライン(または他のアプローチ)が必要になる。
【0060】
いくつかの実施形態では、ノードは、インプットキューおよびアウトプットキューを有するキューイング構造を含むことができる。この点において、
図4および
図5で説明したようなインプットキューまたはアウトプットキューのあるアーキテクチャと異なり、データパケットは各ホップでインプットキューおよびアウトプットキューを通って移動する。それらの対のキューは、それらの関連付けられた次元に分割できる。例えば、
図6に示されているように、ネットワーク600の統合型のインプット-アウトプットキューイングアーキテクチャ内で、ノードは、ノード601、603、および605のターン631、633、635など、前の次元からのターンと、ノード601、603、および605のターン611、613、および615など、次の次元までのターンとを含むことができる。付加的に、ノードは、ノード601、603、および605のVC0とそれぞれ関連付けられたキューイング構造641、643、および645など、仮想チャネルと関連付けられた次元キューイング構造を含むことができる。付加的に、ノード601、603、および605は、VC1とそれぞれ関連付けられたキューイング構造621、623、および625を含む。
【0061】
図6にさらに示されているように、各キューイング構造は、「(i)」で識別されるインプットキューと、「(o)」で識別されるアウトプットキューとに分割することができる。例えば、次元キューイング構造621は、インプットキューであるVC1(i)およびアウトプットキューであるVC1(o)を含む。データパケットの送信中に、データパケットは、インプットキューおよびアウトプットキューの両方を通過する。例えば、
図6でDP1が付与されたデータパケット1は、T(i)が付与されたインプットキューおよびT(o)が付与されたアウトプットキューを含む、ターン631のキューイング構造を通過する。
【0062】
やはり
図6に示されているように、VC間の移行は、パケットがインプットキューからアウトプットキューに動くときに起こる。この点において、DP1はノード603においてVC0(i)(インプットキュー)からVC1(o)(アウトプットキュー)に通過することができる。VC1(o)は、その後、DP1をノード605のインプットキューVC1(i)に通過させることができる。ノード605内ではデータパケットをT(o)に通過させることができる。
【0063】
図7は、ネットワーク内でデータパケットをルーティングするためのフロー
図700を示す。ブロック702で、リングネットワークの第1のノード内の第1のキューイング構造においてデータパケットが受信される。データパケットは、ネットワーク上で宛先ノードまで送信される予定である。ブロック704で、第1のノードは、リングネットワークの第1のノードから宛先ノードに送信されるときにデータパケットが横断することになるホップの数を判定する。ブロック706で、第1のノードは、ホップの数をホップ閾値と比較してホップの数がホップ閾値以下であるかどうかを判定する。ブロック708で、第1のノードは、(i)ホップの数がホップ閾値よりも大きい場合は、リングネットワークの第2のノード内の第1の仮想チャネルの次元キュー構造に、または(ii)ホップの数がホップ閾値以下である場合は、第2のノード内の第2の仮想チャネル用の次元キュー構造もしくはターンキューイング構造にデータパケットを送信する。
【0064】
前述の例はリングネットワーク100、200、300、400、500、および600などのリングネットワークを示しているが、本明細書に記載する技術は、マルチプルリングベースのトポロジ(例えば、「トーラス」および「ツイストトーラス」トポロジ)など、他のリングベースのネットワークトポロジに応用できる。
【0065】
別段の明示がない限り、前述の代替的な例は互いに排他的ではなく、独自の利点を達成するために様々な組み合わせで実装できる。上記で論じた特徴のこれらのおよび他の変形例ならびに組み合わせを特許請求の範囲で定義される主題から逸脱することなく利用できるときは、実施形態の前述の説明は、特許請求の範囲で定義される主題の限定ではなく例示として解釈するべきである。さらに、本明細書に記載する例の提供、ならびに「など(such as)」、「含む(including)」などで表現される節は、特許請求の範囲の主題を特定の例に限定するものとして解釈するべきではなく、むしろそれらの例は、可能な多数の実施形態のうちの1つだけを示すことが意図されている。さらに、異なる図面にある同じ参照番号は同じかまたは同様の要素を識別できる。