(57)【特許請求の範囲】
【請求項１】
第１次元および第２次元に配置された複数のノードを含むｎ×ｍのメッシュシステムと、
それぞれが前記複数のノードの一対を接続する複数のインターコネクトとを備え、
前記メッシュシステムは、トラフィックスケジュール期間の第１サイクルの間は、トラフィックに依存しない第１の接続状態にあり、前記トラフィックスケジュール期間の第２サイクルの間は、トラフィックに依存しない第２の接続状態にあるように構成されるシステム。
【請求項２】
前記トラフィックに依存しない第１の接続状態は、前記第１次元における隣接ノード間でパケットが伝達されるパススルーステートを含む請求項１に記載のシステム。
【請求項３】
前記トラフィックに依存しない第２の接続状態は、前記第２次元における隣接ノード間でパケットが伝達されるターンステートを含む請求項１または２に記載のシステム。
【請求項４】
前記メッシュシステムは、バッファレス転送媒体を含む請求項１から３の何れか一項に記載のシステム。
【請求項５】
前記トラフィックスケジュール期間は、Ｓがｍａｘ（ｎ，ｍ）であるＳ個のクロックの固定された周期的スケジュールであり、
前記メッシュシステムは、前記固定された周期的スケジュールのＳ−ｘ個のサイクルの間は、前記トラフィックに依存しない第１の接続状態にあり、前記固定された周期的スケジュールのｘ個のサイクルの間は、前記トラフィックに依存しない第２の接続状態にあるように構成される請求項１から４の何れか一項に記載のシステム。
【請求項６】
前記複数のノードはそれぞれ、複数の入力ポートおよび複数の出力ポートを含み、前記複数の入力ポートはそれぞれ、前記複数のインターコネクトのうちの少なくとも１つと接続される請求項１から５の何れか一項に記載のシステム。
【請求項７】
前記複数の入力ポートはそれぞれ、対応するノードに宛てられたパケットを、前記対応するノードと関連付けられたエージェントと接続された出口キューに向かわせる請求項６に記載のシステム。
【請求項８】
前記複数の出力ポートはそれぞれ、パケットの宛先に対応する宛先識別子、および、スロット識別子を格納するスロットテーブル内のエントリに基づいて、当該出力ポートから出力するために、対応するノードが受信する前記パケットを選択する請求項６または７に記載のシステム。
【請求項９】
前記複数の出力ポートはそれぞれ、静的グローバル循環スケジューラの制御に更に基づいて、パケットを選択する請求項８に記載のシステム。
【請求項１０】
前記出力ポートは、
第１ノードおよび第１隣接ノード間に接続された第１インターコネクトに前記パケットを出力する第１出力ポート、および、前記第１ノードと第２隣接ノード間に接続された第２インターコネクトに前記パケットを出力する第２出力ポートを含む請求項８または９に記載のシステム。
【請求項１１】
ノードで受信されるパケットが、前記ノードと関連付けられているエージェント宛であるかを判断する段階と、
前記受信されるパケットが前記エージェント宛である場合に、前記パケットを前記ノードの出口キューに供給する段階と、
前記受信されるパケットが前記エージェント宛である場合に、前記ノードの入口キューに１以上のパケットが存在するか判断する段階と、
前記入口キューに１以上のパケットが存在する場合には、トラフィックフローとは独立したグローバルスケジュールに従って、前記入口キューからの前記１以上のパケットから１つを選択して、第１出力ポートまたは第２出力ポートへと選択したパケットを供給する段階と、
前記入口キューに１以上のパケットが存在しない場合には、前記グローバルスケジュールに従って、前記受信されるパケットを前記第１出力ポートまたは前記第２出力ポートに供給する段階とを備える方法。
【請求項１２】
前記入口キューに存在する前記１以上のパケットの何れも、現在のスロットに対する前記グローバルスケジュールに一致しない場合には、空のパケットを選択された前記第１出力ポートまたは前記第２出力ポートに供給する段階を更に備える請求項１１に記載の方法。
【請求項１３】
前記ノードで前記受信されるパケットを受信する前に、前記受信されるパケットが前記エージェント宛であることを示す情報を隣接ノードから受信する段階を更に備える請求項１１または１２に記載の方法。
【請求項１４】
前記ノードで前記受信されるパケットを受信する前に、前記受信されるパケットが前記エージェント宛であることを示す情報を前記グローバルスケジュールのスロットで受信する段階を更に備える請求項１１または１２に記載の方法。
【請求項１５】
前記グローバルスケジュールのＳ−ｘ個のサイクルの間に、前記第１出力ポートから受信されるパケット、および、前記グローバルスケジュールのｘ個のサイクルの間に、前記第２出力ポートから受信されるパケットを転送する段階を更に備える請求項１１から１４の何れか一項に記載の方法。
【請求項１６】
第１隣接ノードからペイロードデータおよび対応する制御情報を受信する、ノードの入力ポートレジスタと、
前記ペイロードデータを受信し、前記ペイロードデータを前記ノードと関連付けられたエージェントへと転送するべく、前記入力ポートレジスタと接続された出口キューと、
前記ノードから出力させるべく、前記入力ポートレジスタからまたは前記エージェントからのペイロードデータを選択する出力データセレクタと、
前記出力データセレクタと接続され、選択された前記ペイロードデータおよび対応する制御情報を、トラフィックスケジュール期間の第１サイクルの間に第２隣接ノードと接続された第１出力ポートに出力する、および、前記トラフィックスケジュール期間の第２サイクルの間に第３隣接ノードと接続された第２出力ポートに出力する出力ポートセレクタとを備え、
前記トラフィックスケジュール期間は、前記ノード間のトラフィックに依存しない装置。
【請求項１７】
前記第１サイクルは、第１次元における前記ノードと前記第２隣接ノードとの間でパケットが伝達されるパススルーステートに対応し、
前記第２サイクルは、第２次元における前記ノードと前記第３隣接ノードとの間でパケットが伝達されるターンステートに対応する請求項１６に記載の装置。
【請求項１８】
前記出力ポートセレクタは、前記トラフィックスケジュール期間の第３サイクルの間に前記ペイロードデータおよび前記対応する制御情報を出力し、
前記トラフィックスケジュール期間の前記第３サイクルは、第３次元における前記ノードと第４隣接ノードとの間でパケットが伝達される別のターンステートに対応する請求項１７に記載の装置。
【請求項１９】
前記装置は、
前記ノードの第１入出力（Ｉ／Ｏ）回路を備え、
前記ノードは更に、入力ポートレジスタ、出口キュー、出力データセレクタおよび出力ポートセレクタをそれぞれ含む複数のＩ／Ｏ回路を有する請求項１６に記載の装置。
【請求項２０】
前記装置は、複数のスタックされた半導体ダイを含むプロセッサを備え、
前記ノードは第１半導体ダイ上に存在し、
前記プロセッサは、前記第１半導体ダイの上にスタックされた第２半導体ダイ上に構成された第４隣接ノードを有する請求項１６に記載の装置。
【発明の詳細な説明】
【背景技術】
【０００１】
小型で高速の回路の形態で半導体技術が進化し、より多くの構成要素を１つの半導体ダイに実装可能となった。ダイの一種として、データ処理およびその他のオペレーションを実行するのに使用可能な複数のエージェントがダイに存在する、いわゆるシステムオンチップ（ＳｏＣ）が挙げられる。複数のエージェント間の相互接続は、ネットワークオンチップ（ＮｏＣ）によって達成されるが、これは、パケットルーティングネットワーク、バス、リング等を含む様々な方法に基づいてもよい。しかしながら、これらの方法は、設計が複雑になる、拡張性に制限がある、または、エリア／電力の効率に関して問題を有する場合がある。さらに、周知の相互接続の一部は、複雑なデッドロック／接続の問題を示す場合があり、これを解決する必要がある。
【０００２】
多くの場合、実装では、トラフィック、レイテンシ等を考慮して、エージェント間の転送メカニズムの一部として、ある種のバッファ媒体を含み、エージェント間の転送メカニズムに複数のパケットが存在する。リングはバッファのない媒体を提供できるが、このようなリングは従来では、リングコンセプトをマルチディメンションに適用できないといったように、一次元のものであった。
【図面の簡単な説明】
【０００３】
【図１】本発明の一実施形態に係るメッシュ相互接続システムのブロック図である。
【図２】本発明の一実施形態に係るパススルーステートにおいて構成されるメッシュ相互接続システムのブロック図である。
【図３】本発明の一実施形態に係るターンステートおいて構成されるメッシュ相互接続システムのブロック図である。
【図４】本発明の別の実施形態に係る相互接続システムのブロック図である。
【図５】本発明の一実施形態に係るノードのブロック図である。
【図６】本発明の一実施形態に係る静的グローバル循環スケジュールに従うパケットの通信方法を示したフローチャートである。
【発明を実施するための形態】
【０００４】
様々な実施形態において、バッファレスのルータレス交差型リング、いわゆる"ルータレスＩリング"が提供され、システムオンチップ（ＳｏＣ）またはその他の半導体デバイスに存在するようなオンチップノードの相互接続を可能にする。このようなＳｏＣには、マルチコアおよび数多くのエージェントを有するメニーコア中央演算処理装置（ＣＰＵ）設計を含む様々な種類の設計が存在し、エージェントとしては、コア、キャッシュ、アクセラレータ、メモリコントローラ等が含まれる。
【０００５】
本発明の一実施形態に係る相互接続ネットワークは、２次元またはそれより高次に設計することができる。一般的に、ネットワークは、（ｉ）バッファレス転送媒体、（ｉｉ）（パケットを転送媒体にスケジュールするための）入口アクセスポイント（ingress access point）、（ｉｉｉ）（転送媒体からパケットを引き出す）出口受信ポイント（egress receiver point）を含む。多くの実施形態では、バッファレス転送媒体は、ｎ×ｍのメッシュに配置されたクロック同期されたノードのセットを含んでもよい。このようなノードはそれぞれ、ハードウェアと関連付けられているネットワークを含んでもよく、また、コア、キャッシュ、アクセラレータ等の対応するエージェントと接続されていてもよい。
【０００６】
図１には、本発明の一実施形態に係るメッシュシステムのブロック図が示されている。図１に示すように、システム１００は、複数のノード１１０１，１−１１０ｎ，ｍを含む２次元（２Ｄ）リンク相互接続メッシュとして実装されている。様々な実施形態において、システム１００は、システムオンチップ（ＳｏＣ）、または、１つの半導体ダイ上に形成されたその他の１つのチップの半導体デバイスであってもよい。別の実施形態では、システムは、複数のスタックされたダイから構成されてもよく、この場合、メッシュは２次元よりも大きな次元を有する。異なる実装形態では、エージェントは、異機種環境にあってもよい、または、同機種環境であってもよく、例えば、プロセッサコア、キャッシュブロック、メモリコントローラ、グラフィックスプロセッサのような専用処理ユニット、パケットプロセッサ等であってもよい。一般的に、ノードは、エージェント（例えば、コアまたはその他の処理ユニットまたは制御ユニット）と関連付けられてもよく、以下に説明するように接続に関連した入出力（Ｉ／Ｏ）回路を含んでもよい。
【０００７】
図１に示すように、ノード１１０それぞれは、双方向接続であってもよい複数の接続１１５を介して２Ｄで構成される複数のその他のノードと接続されてもよい。加えて、エッジノード（すなわち、システムの外縁にあるノード）は、対応するノードの出力ポートを、同じノードまたはその他の入力ポートに接続するフィードバック接続１２０を含んでもよい。図１のハイレベルを示した図では、Ｉ／Ｏ回路（例えば、ルート構造）のみが示されている。すなわち、図１には、実際のエージェントの機能ユニットは示されていない。一般的に、ノードはそれぞれ、複数の入力ポートおよび出力ポートを含んでもよい。一般的に、これら入力ポートおよび出力ポートは、メッシュ接続を介して受信された情報（例えば、パケット）の選択および転送を有効にするロジックおよびその他の回路を含んでもよい。図１に示す実装は、代表的なものであり、ノード内で利用可能な完全なスイッチングまたは構成を全て反映したものではない。すなわち、以下に詳細に説明するように、ノードはそれぞれ、所定のノードが接続されてもよい複数の異なるノードにデータをルートする複数のルーティングパターンに従って構成されてもよい。
【０００８】
図１に示すように、ノード１１０はそれぞれ、隣接するノードへの４つの双方向リンク（エッジノードでは特別なフィードバックルールが存在する）を有する。リンクの数は、次元が上がるに従って増えてもよい。各クロックサイクルにおいて、少なくとも１つのパケットを、各ノードの複数の入力ポートのそれぞれによって受信することができる。入力されるパケットは、各ノードの複数の出力ポートのうちの１つでローカルに使用されるまたは受け渡されてもよく、次のサイクルでは隣接するノードに送信される。このように、転送媒体は、バッファレスの構成となっている。ここで、Ｉ／Ｏ回路の詳細は、図１に示されていないことに注意されたい。図には、複数の出力レジスタ１０５ａ−ｄのみが示されており、これらはそれぞれ、所定の出力ポートと関連付けられており、選択されたパケットがノードから送信される構成要素となっている。出力ポートは、複数の入力ポートのそれぞれを除いて、ノードに接続されたローカルエージェントからのパケットを受信してもよく、マルチプレクサ（図１には図示せず）が出力レジスタ１０５のそれぞれの前に存在してもよい。
【０００９】
パケットがとるルートは、複数のシングルノード接続ステートの予め既定されトラフィックとは独立したシーケンスによって決定される。シーケンスは、全てのノードに対して同じになるように選択されてもよいし、各ノードに対して個別に構成されてもよい。いずれの場合であっても、ノード固有のシーケンスで決定されるように、メッシュの全てのノードは、複数の所定のトラフィックから独立した、入力ポートを出力ポートへマッピングする接続ステートのうちの１つにある。本発明の側面はこれに限定されないが、一実施形態において、全てのノードは、２つの接続ステート、すなわち、異なる次元での接続を可能とするパススルーステートおよびターンステートから構築される同じシーケンスに従ってもよい。
【００１０】
図２には、全てのノードがパススルーステートであるメッシュ接続システム１００のブロック図が示されている。パススルーステートでは、ノードはそれぞれ、第１隣接ノードから受信されたデータを第２隣接ノードへと直接渡す（例えば、マルチプレクサの制御によりまたはその他のスイッチロジックにより）ように設定されてもよい。図２の実装形態では、これらのノードは、水平方向に隣接するノードまたは垂直方向に隣接するノードであってもよい。本明細書で使用される、隣接ノードという言葉は、所定の次元におけるノードに直接隣接するノードを指す。図２に示す実装形態では、エッジノードは、直接フィードバックを行うためのインターコネクト１２０に接続されており、パススルーモードで動作する場合に、エッジノードから出力されたデータが、同じエッジノードで直接受信されるようになっている。図２では図示を簡単にし、ノード内の内部のルーティング等のその他の接続については、図２に示されたステートを分かりにくくするのを防ぐ目的から記載されていない。
【００１１】
このパススルーステートでは、ノードは、反対側からパケットを単純に転送するので、メッシュは、水平方向および垂直方向に敷かれた接続されていない複数のリングのセットに分解できる。ある実装形態では、システムの制御に基づいて両方の方向でパススルー接続が発生するので、複雑性が高くなるが、より効率的な接続を提供できる可能性がある。
【００１２】
図２に示したパススルーステートでは、１次元の隣接エージェント間のデータ接続が可能となっているが、異なる次元のノード間での通信を可能とする実施形態では、１以上のターンステートを提供するべくノードを構成してもよい。ターンステートは、異なる次元の隣接コア間でデータを伝達するのに使用されてもよい。選択されたステートに関わらず、ノードはそれぞれ、転送メカニズムがバッファを使用しないので、１周期毎に同じ数のパケットを入出力してもよい。
【００１３】
図３には、ターンステートに構成されたメッシュ接続システムのブロック図が示されている。図３に示すように、システム１００'は、入力されるパケットがそれぞれ、パススルー方向とは異なる方向にルートされる。図示されたステートでは、ノードはそれぞれ、入力パケットを左にルートしている。この結果、各ノードに入力されるパケットは、（パススルーステートで確立された）水平方向のリング間および垂直方向のリング間でやり取りされる。図３に示すように、このターンステートは、パケットが次の隣接するノードに伝達されるように左側に回転するようになっている。更に、図３に示すように、エッジノードは、フィードバックインターコネクト１２０を介して、ノードの入力ポートを介してノードの出力ポートから出力されたパケットを直接受信するように構成されてもよい。図３では、左方向に回転する状態が示されたが、本発明は、この点に関して限定されず、他の実装形態では、ターンステートは右方向に回転する状態であってもよい。
【００１４】
一実施形態において、ステート（状態）は、媒体の実際のトラフィックとは完全に独立させることができる周期的スケジュールに従って選択されてもよい。スケジュールは、各送信ノードにおいて、挿入のための時間枠（タイムスロット）が存在し、最終的には、挿入されたパケットが意図した宛先に到達することを保証する必要がある。このような制約に合致する１つのスキームとしては、パススルーステート（図２）において全てのノードに対するＳ−１個のクロックサイクル、および、ターンステート（例えば、図３に示した左方向の回転）における全てのノードに対する１サイクルからなる、Ｓ個のクロック（ここで、Ｓ−ｍａｘ（ｎ，ｍ））の周期的スケジュールが挙げられる。一般的には、周期的スケジュールは、Ｓ個のクロック（ここで、Ｓ＝ｍａｘ（ｎ，ｍ））であってもよく、Ｓ−ｘ個のクロックサイクルがパススルーステート（図２）に当てられ、ｘ個のサイクルがターンステートに（例えば、図３の左方向回転ステート）に当てられる。このような周期的スケジュールによれば、各送信ノードから他の全てのノードに対する少なくとも１つのマンハッタンルート（Manhattan route）を確立することができることが証明されている。本明細書において、"マンハッタンルート"とは、障害、迂回路、後方追跡等がない、エージェント間の最短距離のルートを既定するのに使用されている。典型的には、マンハッタン特性を満足しないが更なる実行可能な経路が存在する。その他のスケジュールについても実現可能であり、例えば、パススルー構成の全てのノードについてＳ−１個のサイクルが当てられ、ターン構成に対して１個のサイクルが当てられてもよく、ここで、Ｓ＝２＊ｍａｘ（ｎ，ｍ）である。全てのノードに適用される１つのシーケンスでも十分であるが、ノードのサブセットにそれぞれ適用されるシーケンスの複数のサブセットを考えて、媒体の任意の特性を改善させてもよい。一例として、複数のノードは、所定のサイクルに対してネットワークレイヤ上で可視の複数の異なる接続ステートへと導くような、接続ステートの個別のシーケンスを有してもよい。更に、右回転、または、１つのノード内のパススルー構成とターンステートとの組み合わせといったように、接続ステートの更なる種類を考えてもよい。一般的に、ステートを付加すると、出力ポートのマルチプレクサへの入力数が増加すると考えられる。
【００１５】
異なるトポロジーの変形例が存在し、例えば、あるノードのエッジにおけるその他のフィードバック接続スキーム、または、一方向転送メカニズムにして、メッシュを低減させるといったことが考えられる。図４には、本発明の別の実施形態に係る接続システムのブロック図が示されている。図４に示すように、システム２００は、複数のノード２１０１，１〜２１０ｎ，ｍを含む。この実装形態では、一方向接続１１５のみで、隣接するノードを共に接続している。加えて、エッジノードに対するフィードバック経路の替わりに、共通の次元の隣接ノードを接続するべくインターコネクト１２０が存在する。その他の側面においては、システム２００は、図１で説明したのと同様に構成されてもよい。
【００１６】
図１に戻り、各宛先ノードに対するソースノードにおいて、挿入タイムスロットのテーブル（スロットテーブル）が、出力段階それぞれに対して存在し、挿入されたパケットが意図した宛先ノードに配信されるのを確かにしている。図１のメッシュオペレーションであって、Ｓ個のクロックの固定されたスケジュール期間を仮定すると、シーケンスの有効な挿入オプションは、Ｓの期間を有するサイクルとなり、ソース／宛先の組み合わせに依存して１からＳの間で変化させてもよい。テーブルは、メッシュトポロジーおよび周期的スケジュールにのみ依存するので、異なる複数の方法によって予め計算することができる。ある実施形態では、テーブルは、分析的表現または網羅的な自己発見手法を使用して導かれてもよい。ある実施形態では、このテーブルは、各ノードの不揮発性記憶装置に実装されてもよい。このテーブルは、クロックサイクルをカウントする論理ゲート、並びに、ソースおよび入力パラメータとしての宛先情報によって実装される対応する関数によってオンザフライで構築されてもよい。または、所定のテーブルを、ノードの揮発性記憶装置まで動的にロードすることができる。特定の実施形態では、ノードの出力ポートのそれぞれは、メッシュシステム内の特定の接続を反映するように予め定められる自身のテーブルを含むことができる。一実施形態では、テーブルのエントリはそれぞれ、宛先識別子、および、出力ポートを介してその宛先に対するパケットが挿入されるべき対応するサイクルスロットを含んでもよい。別の実施形態では、１つのテーブルエントリが、Ｓビット幅のベクトルを含む宛先毎に提供され、クロックサイクルのｎ個の周期パターンのそれぞれに挿入が実行可能であるかを、ｎ個のビットそれぞれが示す。ある実施形態では、テーブルは更に、どのパケットを所定のスロットに供給するべきかを判断する出力ポートロジックを補助する発見的データを含んでもよい。例えば、１つか２つの専用スロットのみが宛先にたどり着けるような場合、パケットを選択するための発見的解決方法をこのような貴重なスロットに対して確立して、意図した宛先にたどり着くのに利用可能な更なる選択肢を有する多くのパケットに対して適用してもよい。このように、所定のパケットに対する優先順位は、送信待ちパケットに基づいて動的に変更されてもよい。シングルノードの接続状態シーケンスのグローバル同期は、システムのマルチプレクサそれぞれに提供されているマスタまたはグローバル制御信号に基づいてもよい。その他の実施形態では、同期は、ネットワーク初期化において送信される特別なパケットによって達成されてもよい。
【００１７】
Ｉ／Ｏ回路を介して、パケット挿入のために対応するノードと関連付けられているエージェントによってパケットが受け渡される場合、パケットは、送信のための適切なタイムスロットに達するまで中間地点として入口バッファに格納されてよく、対応する出力ポートにはデータが割り当てられない。すなわち、バッファレスオペレーションのため、受信されたパケットをバッファまたはその他の記憶構造に維持する能力がないことから、入力ポートに入力されるパケットは、ローカルに生成されたパケットよりも優先されるように、システムが構成される。
【００１８】
ある実施形態では、ポート毎の最大注入レートを改善させるべく、ローカルなエージェントによって提供された複数のパケットを平行して処理してもよい。通常は、パケットがネットワークに入る（または、同じタイムスロットに複数のパケットが入ってもよい）ためのタイムスロットおよび出力ポートの組み合わせが複数存在することから、ネットワーク性能を向上させるべく様々な発見的（heuristic）アルゴリズムを適用してもよい。これらのアルゴリズムにおいて、最適なマンハッタンルートにつながるような選択肢が好ましい。一例として、その他の実行可能であるが非効率なルート（ネットワーク中で長い経路となる）をテーブルから除外（または、優先順位を低くする）してもよい。同じタイムスロットで同じ出力ポートに競合する複数のパケットが存在する場合、少ない挿入選択肢を有するパケットが優先されてもよい。更に、このような発見的規則を動的に適用してもよい。媒体の決定性のある（deterministic）ふるまいから、このネットワークにおけるリアルタイム必要条件を満足することは容易である。これを達成するべく、決定性スロットを予め割り当てるメカニズムが存在してもよい。
【００１９】
入力ポートのそれぞれに対して、宛先アドレスに対して入力されるパケットを検査してもよい。この検査は、例えば、（宛先識別子のような）絶対値、または、ホップ（hop）毎にデクリメントされるダウンカウンタのような、異なる宛先エンコーディングに基づいてもよい。一致する場合、入力されるパケットは、入力ポート毎にインスタンス化された出口受信機キューにローカルに格納され、メッシュ上のそれぞれのスロットは、"空（empty）"であるとして印が付けられる。このようなオペレーションを実現するべく、受信機は、所定のサイクルで全ての入力ポートから平行してパケットを受信することを可能とするべく、ローカルオーバースピードクロックを有してもよい。ある実施形態では、オーバースピードクロックを取り除くべく、受信機が、所定の時間に入力ポートの決定性を有するサブセットのみを確認するように構成してもよく、その結果は、スロットテーブルの各エントリに反映される。加えて、入力ポートロジックは、スロットを"空（empty）"であるとして印を付けてもよく、（現在のノードが挿入を行わないと仮定して）次のノードが、このスロットをデータ挿入に使用可能としてもよい。一実施形態において、シングルビットインジケータを使用して、スロットが実際にデータに割り当てられているか、それとも空のスロットであるかを示してもよい。受信ポートは、（例えば、電力、リソースまたはその他の理由で）シンクされることになっている入力パケットをシンクしないことを選択してもよい。この仕組みにより、"不達（bounce）"条件を可能とし、一定時間が経過した後で再び宛先に再配信されることを確かにする。すなわち、この仕組みにより、決定性のある態様で、宛先ノードにパケットを戻す能力をサポートすることができる。様々な状況において、このような元々配信されていないパケットをソースに戻してもよく、非配信に関する情報は、フローの制御またはその他の目的に対して使用可能である。
【００２０】
様々なミクロ構造の改善技術を、本発明の実施形態に係るＩリング接続に適用してもよい。例えば、受信パイプラインを可能とする固定サイクルカウントによって同じ動作メッシュで先に実行させる空のスロットにフラグを立てる制御信号を可能とすることにより、物理的なタイミングを改善させてもよい。また、宛先デコードを、以下に詳細に説明するように、先行するノードに移動させることにより、パイプラインしてもよい。
【００２１】
実施形態は、２次元を超えてリングを拡張することを可能にしてもよい。例えば、ｐ個のｎ×ｍメッシュを、共に"スタック（積み重ね）"してもよい。このような実装形態では、ｎ×ｍのメッシュはそれぞれ、半導体ダイの１以上の異なるレイヤに位置してもよい。このような実装形態において、それぞれがｍ×ｎのメッシュを含む複数のスタックされたダイが存在してもよい。各ノードにおいて、垂直方向の次元で交差する３つのリングの間の"パケット交換（swapping）"を可能とするべく、"スイッチ"ステートが提供されてもよい。２−Ｄメッシュが、最小で２ステートのスイッチメカニズムで足りるように、メッシュの３−Ｄスタックでは、最小で３ステートのスイッチメカニズムで足りる。無論、更なるステートおよび周期的スケジュールを生成して、様々なネットワークパラメータを最適化してもよい。
【００２２】
図５には、本発明の一実施形態に係るネットワークノードのシングル入力データ経路のブロック図が示されている。この経路の複数のインスタンス化は、ＮｏＣの各ノードに表されている。特に、一実施形態では、このような４つの回路が存在して１つのノードを構成しており、回路はそれぞれ、第１方向からの入力データを受信し、第１方向とは反対の第２方向へとまたはターン方向である第３の方向へと、データを出力するように構成される。
【００２３】
図５の実装形態では、入力された情報は、入力ポートレジスタ３１０で受信されてもよい。ある実施形態では、存在または有効性を示すインジケータ（出力すべきパケットが存在しない場合にアクティブとなる）に基づいて、入力レジスタに対するクロックの制御を行って、有効なデータが入力されない時にはレジスタをディセーブルすることにより消費電力を低減させてもよい。受信された情報は、ペイロードデータおよびステータス／制御情報を含んでもよい。ステータス／制御情報は、入力されるデータが有効であるか、および、対応するパケットの宛先識別子のようなその他の制御情報、所定の接続に対してスロットを空けておく予約ビットのようなサービス品質（ＱｏＳ）関連情報を示すのに使用されてもよい。上記のように、例えば、制御情報に存在する宛先インジケータによって示されるように、入力されるペイロードデータが、ノードと関連付けられたエージェントのうちの１つに対するものである場合、出口キュー３２０にペイロードデータが供給される。そこから、データが、コア、メモリコントローラまたはその他の処理ユニットのようなノードに関連付けられたエージェントのうちの一つに提供されてもよい。
【００２４】
そうでない場合には、データおよび制御情報の両方は、出力データセレクタ３３０に渡される。出力データセレクタ３３０は、通常、入力ポートレジスタ３１０を介して受信されたデータか、ノードのエージェントから受信されたノードで生成されたデータかのどちらかを選択する。したがって、図５に示すように、入口キュー３５０は、別のノードに送信されることが望まれるエージェントのデータを受信するべく接続される。同様に、入口キューは、入口コントローラ３４０に接続される。一般的に、入口コントローラ３４０は、スロットテーブル３４５に存在する情報に基づいて、空いているスロットに挿入するための複数のデータパケットのうちの１つを選択してもよい。上記したように、スロットテーブル３４５は、対応するパケットに対する宛先識別子によってアクセスされてもよく、パケットを挿入するのに適したスロットを示すのに使用されてもよい。また、挿入するデータパケットを選択するべく入口コントローラ３４０によって使用された更なる情報は、静的グローバル循環スケジューラ３６５（static global cyclic scheduler）から受信されたスロット識別子であり、静的グローバル循環スケジューラについては以下に詳細に説明する。このように、入口コントローラ３４０の制御に基づいて、出力データセレクタ３３０は、入力ポートレジスタ３１０から受信されたペイロードデータ、または、入口コントローラ３４０から受信されたデータ（すなわち、ノード自身に基づくデータ）の何れかを出力する。
【００２５】
図５に示すように、出力データ３３０は、ノードの接続ステートのシーケンスを表す静的グローバル循環スケジューラ３６５によって制御される出力ポートセレクタ３６０に接続される。特に、２つのステート、すなわち、パススルーステートおよびターンステートが存在する実装形態では、タイムスロットの各々に対してスケジューラが、出力ポートセレクタに制御データおよびペイロードデータを第１の出力ポート３７０または第２の出力ポート３７５のうちの１つへと転送させる制御信号を生成する。一実施形態において、出力ポート３７０は、パススルースロットに対する情報を出力し、出力ポート３７５がターンスロットに対する情報を出力してもよい。図５の実施形態において特定の実装形態を示したが、本発明の範囲はこの点に関して限定されない。
【００２６】
例えば、上記したように、更なるステートが存在してもよく、それに伴って、現在のノードが接続される異なる隣接ノードへ情報を出力するように構成される更なる出力ポートが存在してもよい。また、多くの実装形態において、入力トラフィックが存在する場合には、出力ロジックは入力パケットのみを通過させて、次のスロットには新たなパケットを挿入しないという態様で、入力トラフィックを優先させているが、実施形態はこれに限定されない。すなわち、別の実装形態では、入力されるパケットが、新たなパケット（例えば、より高いトラフィッククラスのパケット）の挿入のために置き換えられる、オーバーライド構成が存在してもよい。例えば、ノードは、パケットを（例えば、キャッシュへと）シンクすることができ、フロー制御スキームに基づいて後でパケットを挿入する、または、置き換えられたパケットの元の送信者を、例えば、アクナリッジメントメッセージによって通知することができ、パケットを再送信することができる。
【００２７】
図６には、本発明の一実施形態に係る静的グローバル循環スケジュールに従ってパケットを伝送する方法を示したフローチャートが示されている。図６に示すように、方法４００は、有効な入力パケットを受信したか否かを判断する段階（ひし形４１０）から開始してもよい。この判断は、例えば、ペイロードデータおよび様々な制御情報を受信する入力ポートレジスタ内で行われてもよく、制御情報から入力ペイロードデータが有効であるかを判断することができる。入力パケットが有効である場合には、パケットが現在のノードと関連付けられているエージェント宛であるか否かを判断する（ひし形４１５）。この判断についても入力ポートレジスタで行われてもよく、パケットと関連付けられた宛先識別子に基づいて行われてもよい。パケットが現在のノードと関連付けられているエージェント宛である場合、制御はブロック４２０に移り、パケットが出口キューに供給される。加えて、このスロットに関連付けられたステータス情報が更新されてもよい。例えば、このスロットに有効なデータが存在せず、データ挿入に利用可能であることを示すべく有効インジケータがリセットされてもよい。
【００２８】
図６に示すように、入力パケットが現在のノード宛でないと判断された場合には、制御は、ひし形４１５からブロック４３０へと移り、パケットは、グローバルスケジュールに従って選択された出力ポートへと渡される（ブロック４３０）。このグローバルスケジュールは、第１方向または第２方向のうちの何れかのノードにパケットが渡されるべきかを指示してもよい。グローバルスケジュールに基づいて、制御はブロック４３５に移り、パケットがインターコネクト上で出力されてもよい。
【００２９】
図６に示すように、ひし形４１０において、有効パケットが受信されていないと判断された場合（または、受信されるパケットが関連付けられたエージェントに宛てられている場合）、制御は、ひし形４５０に移り、１以上のパケットが入口キューに存在するかが判断されてもよい。存在しない場合には、制御がブロック４７０に移り、空のパケット（void packet）が出力ポートに渡されてもよい。この空のパケット、すなわち、無効パケットを示すヌル（null）データペイロードおよび制御情報は、別のノードに提供され、この情報を受け取ったノードは、そのスロットに自身のパケットを挿入することができる。
【００３０】
ひし形４５０において、１以上のパケットが存在すると判断された場合、制御は、ひし形４６０に移り、グローバルスケジュールスロットが、パケットのうちの１つに一致するか否かが判断されてもよい。一致しない場合には、制御が上記で説明したブロック４７０に移る。一致する場合には、制御がブロック４８０に移り、パケットが入口キューから、ブローバルスケジュールに従って、選択された出力ポートに供給されてもよい。複数の待ちパケットのうちの何れを送信するかの判断は、テーブル内の情報に基づいてもよく、また、グローバルスケジュールの現在のスロットの情報に基づいてもよい。例えば、テーブル情報は、宛先とスロット識別子とを関連付けてもよい。複数のパケットうち出力すべき１つを選択するのに、様々な発見的解決策（heuristics）を考慮してもよい。このように、優先順位情報が、判断基準の一部としてもよい。また、ネットワークに挿入すべき所定のパケットに対して利用可能な複数のスロット（または存在しない）に関する発見的解決策を、判断基準の一部としてもよい。２つのパケットのうち、挿入可能なスロットが少ない方のパケットを、挿入可能なスロットが多いパケットよりも優先して選択してもよい。
【００３１】
このように、基本的な実装形態では、複数のパケットのうちどれを選択すべきかの判断は、スロット識別子および宛先識別子に基づいてもよく、高度な実装形態では、様々な発見的解決策に関する更なる詳細情報を考慮してもよい。制御は、ブロック４３５に移り、インターコネクト上にこのパケットを出力する。図６には特定の実装形態が示されているが、本発明の範囲はこれに限定されない。
【００３２】
例えば、ある実装形態では、パイプライン実装が存在してもよく、所定のノードにパケットが宛てられているかの判断を隣接ノード（すなわち、一つ前のノード）で行ってもよい。すなわち、この判断を一つ前のノードで行って、例えば、先見する態様でまたは通常の制御情報の一部として、１つのビットワイヤを介してその結果を転送することができる。いずれにしても、パイプライン実装を使用することにより、入口コントローラが、利用可能なスロットに挿入するパケットの選択を開始できるか否かを前もって判断することができる。１つ前のノードで、パケットが次のノードに宛てられているかの判断を行う１つのメカニズムとして、カウントダウンメカニズムを利用してもよい。例えば、宛先ノードに対応する宛先識別子ではなく、ソースと宛先間でパケットが通過するノードの数の形式で宛先識別子が表されてもよい。この場合、パケットがノードそれぞれを通過すると、カウントダウン値がデクリメントされる。このパケットが一つ前のノードで受信されると、カウント値が、例えば、ゼロまたは１へとデクリメントされて、パケットが次のノード宛であることが示されてもよい。したがって、事前に、宛先ノードが次に受信するパケットが宛先ノード宛のものであることを１ビットワイヤが示すことができる。このような構成を達成するべく、ある実装形態は、この宛先情報と、Ｉ／Ｏ回路を介して提供可能な別個の制御情報とに対して、個別の経路を提供して、これらの判断が前もって行われてもよい。
【００３３】
実施形態はコードに実装されてもよく、コードは、命令を実行するシステムをプログラムするのに使用可能な命令を格納する記憶媒体に格納されてもよい。記憶媒体としては、特にこれに限定されないが、フロッピー（登録商標）ディスク、光ディスク、ソリッドステートドライブ（ＳＳＤ）、コンパクトディスクリードオンリーメモリ（ＣＤ−ＲＯＭ）、再書き込み可能コンパクトディスク（ＣＤ−ＲＷ）および磁気光学ディスクを含むあらゆるディスク、並びに、リードオンリーメモリ（ＲＯＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）およびスタティックランダムアクセスメモリ（ＳＲＡＭ）のようなランダムアクセスメモリ（ＲＡＭ）、消去可能−プログラム可能リードオンリーメモリ（ＥＰＲＯＭ）、フラッシュメモリ、電気的消去可能−プログラム可能リードオンリーメモリ（ＥＥＰＲＯＭ）、磁気または光学カードのような半導体デバイス、または、電気的命令を格納するのに適したその他の種類の媒体が含まれる。
【００３４】
本発明が、限定された数の実施形態を参照して説明されたが、当業者であれば、数多くの改良および変形例が理解できる。このような改良および変形例についても、本発明の精神および範囲に含まれるものとして、添付の特許請求の範囲が記載されている。
【図１】
0005462412.tif 000002
【図２】
0005462412.tif 000003
【図３】
0005462412.tif 000004
【図４】
0005462412.tif 000005
【図５】
0005462412.tif 000006
【図６】
0005462412.tif 000007