(57)【要約】  本明細書に記載の実装例は、ヒューリスティックベースの最適化を用いて最適なＮｏＣトポロジを自動的に決定することを対象とする。第１に、様々なホストのポートの最適な方向は、システムトラフィック及び接続性仕様に基づいて決定される。第２に、ホストのポートが直接的に接続されるＮｏＣルータは、ＮｏＣレイアウト内で決定される。第３に、経路の最適な集合は、システムトラフィックについて計算され、経路に沿って要求されたルータ及びチャネルは、全てのＮｏＣトポロジを形成することが割り当てられる。３つの技術は、様々なＮｏＣチャネル上の負荷を削減し、遅延、性能、及びホスト間のメッセージ送信効率性を向上する、ＮｏＣトポロジ、ホストポートの方向、及び、ルータ接続性を決定するために任意の組合せで適用され得る。【選択図】図７ｃ
2016525290.tif 000002
【特許請求の範囲】
【請求項１】
複数のホスト及び複数のポートを備えるネットワークオンチップ（Network-on-Chip（ＮｏＣ））を構成するための方法であって、
前記ポートに割り当てられた重みに基づき、前記複数のポートから一つのポートを選択し、
前記選択されたポートについて、前記複数のホストから一つのホストを同定し、
費用関数及び確率受理関数の少なくとも一つに基づき、前記同定されたホストへ前記選択されたポートを再配置する
ことを含む方法。
【請求項２】
前記ポートに割り当てられた重みは、１以上のトラフィック属性に基づくものである
請求項１に記載の方法。
【請求項３】
前記ポートを選択すること、前記ホストを同定すること、及び、前記選択されたポートを再配置することは、閾値に到達するまで反復的に繰り返され、
前記複数のポートに割り当てられた重みは、１以上の更新された確率関数に基づいて更新される
請求項１に記載の方法。
【請求項４】
前記選択されたポートについて、前記複数のホストからホストを同定することは、別の確率受理関数に基づくものである
請求項１に記載の方法。
【請求項５】
前記システムトラフィックフローに割り当てられた重みに基づいて複数のシステムトラフィックフローから一つのシステムトラフィックフローを選択し、
費用関数に基づき、前記ＮｏＣ内の複数の経路から一つの経路を同定し、
前記同定された経路に前記選択されたシステムトラフィックフローをマッピングする
ことをさらに含む
請求項１に記載の方法。
【請求項６】
前記費用関数は、遅延、帯域幅、及びホップ数の少なくとも一つに基づくものである
請求項１に記載の方法。
【請求項７】
前記システムトラフィックフローを選択すること、前記経路を同定すること、及び、前記選択されたシステムトラフィックフローをマッピングすることは、前記ＮｏＣの全てのシステムトラフィックフローが処理されるまで反復的に繰り返される
請求項１に記載の方法。
【請求項８】
複数のホスト及び複数のポートを備えるネットワークオンチップ（Network-on-Chip（ＮｏＣ））を構成する命令を格納するコンピュータ可読記憶媒体であって、
前記命令は、
前記ポートに割り当てられた重みに基づき、前記複数のポートから一つのポートを選択し、
前記選択されたポートについて、前記複数のホストから一つのホストを同定し、
費用関数及び確率受理関数の少なくとも一つに基づき、前記同定されたホストへ前記選択されたポートを再配置すること、を含む
コンピュータ可読記憶媒体。
【請求項９】
前記ポートに割り当てられた重みは、１以上のトラフィック属性に基づくものである
請求項８に記載のコンピュータ可読記憶媒体。
【請求項１０】
前記ポートを選択すること、前記ホストを同定すること、及び、前記選択されたポートを再配置することは、閾値に到達するまで反復的に繰り返され、
前記複数のポートに割り当てられた重みは、１以上の更新された確率関数に基づいて更新される
請求項８に記載のコンピュータ可読記憶媒体。
【請求項１１】
前記選択されたポートについて、前記複数のホストからホストを同定することは、別の確率受理関数に基づくものである
請求項８に記載のコンピュータ可読記憶媒体。
【請求項１２】
前記命令は、
前記システムトラフィックフローに割り当てられた重みに基づいて複数のシステムトラフィックフローから一つのシステムトラフィックフローを選択し、
費用関数に基づき、前記ＮｏＣ内の複数の経路から一つの経路を同定し、
前記同定された経路に前記選択されたシステムトラフィックフローをマッピングする
ことをさらに含む
請求項８に記載のコンピュータ可読記憶媒体。
【請求項１３】
前記費用関数は、遅延、帯域幅、及びホップ数の少なくとも一つに基づくものである
請求項８に記載のコンピュータ可読記憶媒体。
【請求項１４】
前記システムトラフィックフローを選択すること、前記経路を同定すること、及び、前記選択されたシステムトラフィックフローをマッピングすることは、前記ＮｏＣの全てのシステムトラフィックフローが処理されるまで反復的に繰り返される
請求項８に記載のコンピュータ可読記憶媒体。
【請求項１５】
複数のホスト及び複数のポートを備えるネットワークオンチップ（Network-on-Chip（ＮｏＣ））を構成するためのシステムであって、
前記ポートに割り当てられた重みに基づき、前記複数のポートから一つのポートを選択し、前記選択されたポートについて、前記複数のホストから一つのホストを同定し、費用関数及び確率受理関数の少なくとも一つに基づき、前記同定されたホストへ前記選択されたポートを再配置する、システムオンチップ（System on Chip （ＳｏＣ））トポロジモジュール
を備えるシステム。
【請求項１６】
前記ポートに割り当てられた重みは、１以上のトラフィック属性に基づくものである
請求項１５に記載のシステム。
【請求項１７】
前記ＳｏＣトポロジモジュールは、前記ポートを選択すること、前記ホストを同定すること、及び、前記選択されたポートを再配置することを、閾値に到達するまで反復的に繰り返し、
前記ＳｏＣトポロジモジュールは、１以上の更新された確率関数に基づいて、前記複数のポートに割り当てられた重みを更新する
請求項１５に記載のシステム。
【請求項１８】
前記ＳｏＣトポロジモジュールは、別の確率受理関数に基づいて、前記選択されたポートについて、前記複数のホストからホストを同定する
請求項１５に記載のシステム。
【請求項１９】
前記システムトラフィックフローに割り当てられた重みに基づいて複数のシステムトラフィックフローから一つのシステムトラフィックフローを選択し、
費用関数に基づき、前記ＮｏＣ内の複数の経路から一つの経路を同定し、
前記同定された経路に前記選択されたシステムトラフィックフローをマッピングする
ＮｏＣトポロジモジュールをさらに備える
請求項１５に記載のシステム。
【請求項２０】
前記費用関数は、遅延、帯域幅、及びホップ数の少なくとも一つに基づくものである
請求項１５に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に記載された方法及び実装例は、全般的に、相互接続アーキテクチャを対象とし、より具体的には、所与のＳｏＣフロアプラン及びトラフィック仕様に関する最適化トポロジを自動的に生成するためのものである。
【背景技術】
【０００２】
複雑化したシステムと縮小したトランジスタジオメトリによる統合レベルの増大によって、チップ上のコンポーネント数は急速に成長している。複雑なシステムオンチップ（System-on-Chips（ＳｏＣｓ））は、例えば、プロセッサコア、デジタル信号プロセッサ（Digital Signal Processors （ＤＳＰｓ））、ハードウェア・アクセラレータ、メモリそしてＩ／Ｏ等の様々なコンポーネントを含んでもよい。一方、チップマルチプロセッサ（Chip Multi-Processors（ＣＭＰｓ））は、多数の同種のプロセッサコア、メモリそしてＩ／Ｏサブシステムを含んでもよい。ＳｏＣとＣＭＰシステムの両方で、様々なコンポーネント間において高性能な通信を提供することに、オンチップ相互接続が役割を果たしている。従来のバスのスケーラビリティの制限とクロスバー基準の相互接続のために、チップ上の多数のコンポーネントを相互接続するための典型として、ネットワークオンチップ（Network-on-Chip（ＮｏＣ））が登場した。ＮｏＣは、ポイントツーポイントの物理リンクを使用して互いに相互接続されたいくつかのルーティングノードで構成される、グローバルな共有通信インフラストラクチャである。
【０００３】
メッセージは送信元によって注入され、多数の中間ノードとの物理リンク上の宛先へソースノードからルーティングされる。送信先ノードはメッセージを排出し、送信先へメッセージを提供する。本出願の残りの部分について、用語「コンポーネント（components）」、「ブロック（blocks）」、「ホスト（hosts）」又は「コア（cores）」は、Ｎｏｃを用いて相互接続される多様なシステムコンポーネントを参照して、交換可能に使用されるだろう。用語「ルータ（routers）」及び「ノード（nodes）」もまた、交換可能に使用されるだろう。一般化の損失なしに、多数の相互接続されたコンポーネントを有するシステム自体は、「マルチコアシステム」として参照されるだろう。
【０００４】
ルータがシステムネットワークを生成するために相互に接続することができるいくつかのトポロジが存在する。（図１ａに示されるような）双方向リング（Bi-directional rings）、（図１ｂに示されるような）２Ｄ（二次元）メッシュ、及び（図１ｃに示されるような）２Ｄトーラスは、関連技術におけるトポロジの例である。メッシュ及びトーラスは、また、２．５Ｄ（２．５次元）又は３Ｄ（三次元）構成へ拡大され得る。図１ｄは、互いの上に示される３×３の２Ｄメッシュの三層が存在する、３ＤメッシュＮｏＣを示す。ＮｏＣルータは、一方がより高い層でルータに接続し、他方がより低い層でルータに接続する、追加ポートを二つまで有する。本例の中間層におけるルータ１１１は、一方が最上位層におけるルータと接続し、他方が最下層におけるルータと接続して使用される双方のポートを有する。ルータ１１０及び１１２は、それぞれ最下位及び最上位層に存在し、それ故、それぞれで接続される上側ポート１１３及び下側ポート１１４のみを有する。
【０００５】
パケットは、様々なコンポーネント間の相互接続のためのメッセージ搬送単位である。ルーティングは、パケットが送信元から送信先へ送信されるネットワークのルータ及び物理リンクの集合が構成されるパスを同定することを含む。コンポーネントは、一意なＩＤを有するこのような各ポートを有する、１又は複数のルータの１又は複数のポートと接続される。パケットは、送信先コンポーネントへパケットを転送するための中間ルータにより、使用する送信先のルータ及びポートＩＤを運搬する。
【０００６】
ルーティング技術の例は、全てのパケットについてＡからＢへ同一パスを選択することを含む、確定的ルーティング（deterministic routing）を含む。このルーティング方式は、ネットワークの状態から独立であり、基盤となるネットワークに存在してもよく、パスの多様性全体のロードバランスを行わない。しかしながら、このような確定的ルーティングは、ハードウェアに実装され、パケットの順序を維持し、ネットワークレベルのデッドロックのないレンダリングを行うことができる。このようなルーティングが送信元から送信先へのホップ数を減少するように、最短経路ルーティングは、遅延を最小化してもよい。このために、最短経路は、２つのコンポーネント間の通信について最低の電力経路でもよい。次元順ルーティング（Dimension-order routing）は、２Ｄ、２．５Ｄ及び３Ｄメッシュネットワーク内の確定的な最短経路ルーティングの方式である。このルーティングスキームにおいて、メッセージは、メッセージが最終的な宛先へ到達するまで特定の順序で各座標に沿って転送される。３Ｄメッシュネットワークにおける例について、一例として、Ｘ座標が宛先ルータのＸ座標と等しいルータに到達するまで、Ｘ次元に沿って最初に転送できる。次に、メッセージは転回し、Ｙ次元に沿って転送され、最終的に、別の転回をし、メッセージが最終的な宛先ルータへ到達するまで、Ｚ次元に沿って移動する。次元順ルーティングは、最少の順番で、最短経路ルーティングであるとよい。
【０００７】
図２ａは、二次元メッシュないでＸＹルーティングの例を、絵を用いて示す。すなわち、図２ａは、ノード「３４」からノード「００」へのＸＹルーティングを示す。図２ａの例において、各コンポーネントは、あるルータのあるポートのみが接続される。まず、パケットは、ノード「０４」に到達するまで、Ｘ軸上で転送される。そのノードのＸ座標は、宛先ノードのＸ座標と同じである。次に、パケットが宛先ノードへ到達するまで、パケットは、Ｙ軸上で転送される。
【０００８】
１以上のルータ又は１以上のリンクが存在しないヘテロジニアス（heterogeneous）メッシュトポロジでは、次元順ルーティングは、特定の送信元及び送信先ノードの間で実現可能ではなく、迂回経路が取られなければならないかもしれない。迂回経路は、最短又は最小の順序でなくてよい。
【０００９】
ソースルーティング（Source routing）及びテーブルを用いたルーティングは、ＮｏＣに用いられる他のルーティングオプションである。適応ルーティング（Adaptive routing）は、ネットワークの状態に基づいてネットワーク上の二地点間で取られるパスを動的に変化できる。このルーティング方式は、分析及び実装することが複雑であるかもしれない。
【００１０】
ＮｏＣ相互接続は、複数の物理的ネットワークを含めてよい。各物理ネットワーク上で、複数の仮想ネットワークが存在してよく、異なるメッセージ型が異なる仮想ネットワーク上で送信される。この場合、各物理的リンク又はチャネルにおいて、複数の仮想チャネルが存在し、各仮想チャネルは双方の末端において専用のバッファを有することができる。任意の所与のクロックサイクルで、ある仮想チャネルのみが物理チャネル上でデータを送信できる。
【００１１】
ＮｏＣ相互接続は、ワームホール（wormhole）ルーティングを採用してよく、巨大なメッセージ又はパケットは、フリット（flits）として知られる（フロー制御桁としても参照される）小片に分割される。最初のフリットは、ヘッダーフリットであり、ペイロードデータに加えて、このパケットの経路についての情報及びキーメッセージレベル情報を保持し、メッセージに関連付けられた全ての後続のフリットについてのルーティング行動を設定する。必要に応じて、１以上のボディフリットがヘッダーフリットに続き、データの残りのペイロードを含む。最後のフリットは、テイル（tail）フリットであり、加えて、最終ペイロードがメッセージに対する接続をクローズするためにいくつかの記帳も実行する。ワームホールフロー制御では、仮想チャネルが度々実装される。
【００１２】
物理チャネルは、仮想チャネル（virtual channels (VCs)）と呼ばれる、多くの独立論理チャネルにタイムスライスされる。ＶＣは、パケットを転送するための多数の独立パスを提供するが、物理チャネル上で時分割多重化される。仮想チャネルは、チャネル上のパケットのフリットの取り扱いを調整することが必要とされる状態を保持する。最小において、この状態は、経路の次のホップ及び仮想チャネルの状態（アイドル、リソース待ち、又は、アクティブ）について、現在のノードの出力チャネルを同定する。仮想チャネルは、現在のノード上でバッファされるパケットのフリットへのポインタと、次のノード上で利用可能なフリットバッファの数も含めてよい。
【００１３】
用語「ワームホール（wormhole）」は、チャネル上で送信される途中のメッセージ（way messages）を再生する。次のルータにおける出力ポートは、受信データが全メッセージが到着する前にヘッダーフリット内で変換できるように、短くすることができる。このことは、ヘッダーフリットの到着に際して、ルータがすぐに経路を設定することを可能にし、会話の残りの部分から離れる。メッセージがフリットによりフリットが送信されるため、メッセージは異なるルータにおいてそのパスに沿ったいくつかのフリットバッファを占有し、ワームのような画像を生成する。
【００１４】
様々なエンドポイント間のトラフィック、並びに、様々なメッセージについて使用される経路及び物理ネットワークに基づき、ＮｏＣ相互接続の異なる物理チャネルは、負荷及び混雑の異なるレベルを経験できる。ＮｏＣ相互接続の様々な物理チャネルの容量は、チャネルの幅（物理回線の数）及び動作しているクロック周波数により決定される。ＮｏＣの様々なチャネルは、異なるクロック周波数で動作し、様々なチャネルは、チャネルにおける帯域幅要件に基づく異なる幅を有する。チャネルにおける帯域幅要件は、チャネル上を横断するフロー及びそれらの帯域幅の値により決定される。様々なＮｏＣチャネル上を横断するフローは、多様なフローにより取られる経路により影響が与えられる。メッシュ又はトーラスＮｏＣにおいて、同じ長さの多数の経路パス、又は、送信元及び送信先ノードの任意の組の間のホップ数が存在し得る。例えば、図２ｂでは、ノード３４及び００の間の標準のＸＹ経路に加えて、例えば、ＹＸ経路２０３、又は、送信元から送信先まで１回以上曲がらされるマルチターン経路２０２のような、利用可能な追加経路が存在する。
【００１５】
様々なトラフィックフローについて経路が静的に割り当てられるＮｏＣでは、様々なチャネルにおける負荷は、様々なフローのための経路を知的に選択することにより制御されるとよい。多数のトラフィックフロー及び重要なパスの多様性が存在する場合、経路は、全てのＮｏＣチャネルにおける負荷がほぼ均一にバランスされるように選択され、このようにして、ボトルネックの一地点を回避することができる。一旦、経路が決められると、ＮｏＣチャネル幅は、チャネル上のフローの帯域幅要求に基づいて決定されることができる。残念ながら、チャネル幅は、例えば、タイミングや配線混雑のような、物理的なハードウェア設計制約のため、任意の大きさにすることができない。最大チャネル幅における制限が存在し、それによって、任意の単一ＮｏＣチャネルの最大帯域幅に制限を加える。
【００１６】
さらに、メッセージが短い場合、より広い物理チャネルは、より高い帯域幅を達成するのに役立たない。例えば、パケットが６４ビット幅を備える単一のフリットパケットである場合、チャネルがどんなに広くても、チャネル上の全パケットが同じであるなら、チャネルはデータのサイクル当たり６４ビットを運搬することができるだけだろう。従って、チャネル幅は、ＮｏＣ内のメッセージサイズによっても制限される。最大ＮｏＣチャネル幅におけるこれらの制限のため、チャネルは、経路をバランスするにもかかわらず、十分な帯域幅を有する必要がない。
【００１７】
上記の帯域幅の懸念を取り扱うため、多数の並行物理ＮｏＣが使用され得る。各ＮｏＣは、層と呼ばれ、多層ＮｏＣアーキテクチャを生成する。ホストは、ＮｏＣ層にメッセージを注入する。メッセージは、ＮｏＣ層上で宛先へ転送され、ＮｏＣ層からホストへ届けられる。従って、各層は、お互いから多かれ少なかれ独立して動作し、層間の通信（interaction）は、注入及び排出の時間中にのみ発生し得る。図３ａは、二層ＮｏＣを示す。ここで、二つのＮｏＣ層は、左と右の図の双方に複製されたＮｏＣと接続されるホストを備え、左と右に互いに隣接することが示される。ホストは、この例では、第１層内のルータはＲ１として示され、第２層であるルータはＲ２として示される、二つのルータに接続される。この例では、多層ＮｏＣは３ＤＮｏＣとは異なる、すなわち、多層とは、単一のシリコンダイ（silicon die）であり、同一のシリコンダイ上のホスト間の通信の高い帯域幅需要を満たすために使用される。メッセージはある層から別の層へ向かわない。明確化の目的のために、本出願は、互いに垂直にＮｏＣを描くことにより示され、３ＤＮｏＣから区別するために多層ＮｏＣについて水平左右のイラストを利用するだろう。
【００１８】
図３ｂでは、各層からのルータ、Ｒ１及びＲ２のそれぞれと接続されるホスト（HOST）が示される。各ルータは、指向性ポート３０１を用いてその層内の他のルータと接続され、注入及び排出ポート３０２を用いてホストと接続される。ブリッジ論理３０３は、送信メッセージについてのＮｏＣ層を決定するために、ホストと２つのＮｏＣ層の間に位置し、ホストからＮｏＣ層へメッセージを送信し、２つのＮｏＣ層からの受信メッセージの間で調停及び多重化を行い、ホストへそれらを届ける。
【００１９】
多層ＮｏＣにおいて、必要とされる層の数は、例えば、システム内の全トラフィックフローの総計帯域幅要件、様々なフローにより使用される経路、メッセージサイズの配分、最大チャネル幅、その他の要因のような多数の要因に依存することができる。一度、ＮｏＣ相互接続内のＮｏＣ層の数が設計内で決定されると、異なるメッセージ及びトラフィックフローは、異なるＮｏＣ層上で経路が決められる。さらに、一例として、異なる層がルータ、チャネル及び接続の数における異なるトポロジを有するような、ＮｏＣ相互接続を設計してもよい。異なる層におけるチャネルは、チャネル上を横断するフロー及びそれらの帯域幅要件に基づいて異なる幅を有してもよい。そのような多種多様な設計上の選択において、所与のシステムについて正しい設計ポイントは、挑戦するままであり、手動プロセスを費やす時間を残し、結果の設計は、次善及び非効率的なままである。これらの問題を取り扱う多数の技術革新は、米国特許出願第13/658,663, 13/752,226, 13/647,557, 13/856,835, 13/723,732に記述され、その内容は本明細書にその全体が参照により援用される。
【００２０】
相互接続性能を最適化するためにＳｏＣフロアプラン内でホスト／ＩＰコアを配置することは、重要である。例えば、２つのホストが頻繁に互いに通信し、他の相互接続よりも高い帯域幅を要求する場合、これらのホスト間のトランザクションがより少ないルータホップ及びリンクを超えて、全体の遅延及びＮｏＣコストが削減され得るように、互いにより近くにそれらを配置することがより良い。
【００２１】
特定の形や大きさを持つ２つのホストが互いに２ＤのＳｏＣ平面上で空間的に重複しないと仮定すると、トレードオフが必要になる場合がある。それらの間の相互通信を改善するために、特定の近いホストを移動することは、特定の他のホストを強制的にさらに離れさせ得る、それによって、それらの他のホストとの間の相互通信を不利にする。システムの性能を向上させるトレードオフを行うために、例えば全体の平均通信遅延のような特定の性能測定基準は、ホストがＮｏＣのトポロジ内に配置されるようＳｏＣアーキテクチャを最適化するために、目的関数として使用することができる。システムの性能測定基準を最大化する、実質的に最適なホスト位置を決定することは、すべてのホストの間の接続と相互通信特性の分析と、慎重に２ＤのＮｏＣトポロジにそれらを配置することとを伴う。
【００２２】
３ｘ６メッシュ組織に配置されるべき１６個のＣＰＵ（Central Processing Units）と２個のメモリがある、という例を考える。図４ａに示されるように、第１のメモリＭＥＭ１と通信する第１の８個のＣＰＵセットと、第２のメモリＭＥＭ２と通信する第２の８個のＣＰＵセットとを仮定する。図４ｂに示されように、ＣＰＵとメモリは、順番に３ｘ６メッシュ内に配置されてもよい。各ホストは、メッシュ内のセルを占めており、直接セルのルータに接続されている。ここでは、さまざまなホスト間のトラフィックを考慮しない。相互通信ホストは、互いから遠くに配置されており、これにより、ホップ数において平均値を高くし、かつ、構造遅延のピークに導く。例えば、図に示すように、ホストＣＰＵ１とＭＥＭ１との間のメッセージは、７ルータノードを超える必要があり、ホストＣＰＵ１３とＭＥＭ２との間のメッセージは、６ホップを移動する必要がある。このような長いパスは、遅延を増加させるだけでなくだけでなく、相互接続帯域幅に悪影響を与える、即ち、メッセージが長い期間ＮｏＣに留まり、多数のリンクの帯域幅を消費する。
【００２３】
図４ｃに示すように、一例として、上記のホストのセットは組織内に置いてもよい。これは、構造遅延の平均とピーク値を有意に減少させる。図示されるように、この組織の相互通信ホスト間の最大の構造遅延は、３ルータのホップであり、相互通信ホストの大部分は、２ルータのホップが離れている。以前の位置から新しい位置に、特定のホストを繰り返し再配置し、その過程で、新しい位置に既に存在するホストはそれらを交換することにより、図４ｃ中のホスト位置は、図４ｂから実現することができる。最適なホスト位置を見つけ出すために、この例は比較的直感的であるが、トラフィックプロファイルが複雑な接続性と、高い非対称帯域幅と、さまざまなホスト間の遅延の仕様とで構成されている場合は、ＮｏＣトポロジ内のホストに最適な位置を決定することは、さらに困難となり得る。実際には、既知のＮＰ困難問題に帰着することができる。このように、発見的解決法は、このような設定によって最適なホストの位置を決定するために使用されるべきである。
【００２４】
大規模ネットワークでは、効率が主な関心事である。機械学習アプローチ、シミュレーションアニーリング（simulation annealing）などのようなメカニズムがシステムに対する最適化されたトポロジを提供する。しかしながら、そのような複雑なメカニズムは、レイアウトネットワークの最適化を自動化する特定のアルゴリズムを含むようにかなりの制限を有する。それは、過去にマップされたフローの遅延制約、又は、現在のフローの遅延制約に違反する可能性がある。それ故、ＮｏＣ相互接続アーキテクチャを用いたトラフィックフローのために取られるシステムレベルの経路を示すと共に、ホスト及びホスト内のポートに関する最良の位置及び構成を正確に示すことにより、システムの効率を著しく向上させるシステム及び方法の必要性がある。システム及び方法は、効率的なレイアウトを備える所与のＳｏＣフロアプラン及びトラフィック仕様に対して最適化されたトポロジを自動的に生成することも要求される。
【発明の概要】
【課題を解決するための手段】
【００２５】
本出願は、様々なチャネル上の負荷が制御されるように、そのようなトポロジレイアウト内で最適なホスト位置を決定し、効率性、低遅延及び高性能を達成するためのヒューリスティックアプローチを実装することにより、トポロジ選択を自動的に決定すること、及び、それらの中から最適な設計を選択することを対象とする。本開示の態様は、低遅延、及び、ホスト間のより高いメッセージ送信効率性を可能とするように、ホスト内でポートの最適な位置を決定することにさらに関連する。さらに別の態様では、計算的に効率的なＮｏＣトポロジは、ホスト間の様々なシステムフローについて最も効率的な経路を同定するように、ルータ及びＮｏＣチャネルの割当に基づいて生成される。
【００２６】
本出願の態様は、最適な位置が最低の遅延及び費用、高性能及び高帯域幅を可能とするような、ＳｏＣ環境におけるホスト内のホスト及び／又はポートの最適な位置、方向、構成を自動的に決定することを含む、方法を備えるとよい。
【００２７】
態様は、最適化されたＳｏＣ環境内で通信するコンポーネント／ＩＰコアの前述のネットワークを接続するために横断されるべきルータの順序を同定することを含み、コンポーネントを接続するために必要とされたルータの数及び構成を確立することによりＮｏＣトポロジを自動的に生成すること、適格な通信経路及びチャネルを定義することを含む、方法も備える。
【００２８】
態様は、処理を実行するための命令を格納するコンピュータ可読記憶媒体を備えると良い。その命令は、予め定義された、及び／又は、動的に生成された、トラフィックシステムフロー及び類似の制約が満たされ、全体の性能測定基準が最大化され得るように、コンポーネント内の様々なＳｏＣコンポーネント及びポートの最適な位置、方向、及び、構成を自動的に生成することを含めるとよい。その上、その命令は、最適化されたＳｏＣ環境内で通信するコンポーネント／ＩＰコアの前述のネットワークを接続するために横断されるべきルータの順序を同定することを含み、コンポーネントを接続するためのルータの数及び構成を確立すること、適格な通信経路及びチャネルを定義することによりＮｏＣトポロジを生成するためのメカニズムを含めてもよい。命令は、トラフィックフローをマッピングすること、及び、例えば、ルータ間で要求されたＮｏＣルータノード及びチャネルについて必要とされた帯域幅のようなリソースを割り当てること、により、最適化されたトポロジを定義することをさらに含むとよい。
【００２９】
態様は、異質又は異質なメッシュ、リング又はトーラス配置内の複数のルータにより相互接続される複数のコアを含む、ネットワークオンチップ（network on chip (NoC)）について、予め定義された、及び／又は、動的に生成された、トラフィックシステムフロー及び類似の制約が満たされ、全体の性能測定基準が最大化され得るように、様々なＳｏＣコンポーネント／ＩＰコア及びコンポーネント内のポートの最適な位置、方向、及び構成を自動的に生成することを含む方法を備えるとよい。本方法は、所与のシステムフローについてより最適な経路を同定するための２つのルータ間のデータリンクの数を反復的に変化させるように、（例えば、方向付けの頻度、リンクの帯域幅のような）１以上の重大なＮｏＣアーキテクチャ的なパラメータを自動的に調整することをさらに備えることができる。
【００３０】
態様は、ＳｏＣトポロジモジュール及びＮｏＣトポロジモジュールを含むシステムを備えるとよい。ＳｏＣトポロジモジュールは、低遅延のアーキテクチャ、高い帯域幅、それ故に、かなり高い性能を可能とするように、様々なＳｏＣコンポーネント／ＩＰコア及びコンポーネント内のポートの最適な位置、方向、及び構成を生成する。ＮｏＣトポロジモジュールは、他方、最適化されたＳｏＣ環境内で通信するコンポーネント／ＩＰコアの前述のネットワークを接続するために横断されるべきルータの順序を同定することを含み、コンポーネントと接続するルータの数及び構成を確立し、適格な通信経路及びチャネルを定義し、ルータ及びチャネルリソースを割り当てる。さらに、ＳｏＣトポロジのそれぞれのサブモジュール及びＮｏＣトポロジモジュールは、以下の添付の説明で詳細に定義される。
【００３１】
実装例の上記および他の目的、特徴および利点は明らかであり、参照番号のような添付の図面に示されるような以下の実装例のより具体的な説明は、本出願の例示的な実施態様の同様の部分を一般的に表現するであろう。
【図面の簡単な説明】
【００３２】
【図１ａ】双方向リング、２Ｄメッシュ、２Ｄトーラス、および３ＤメッシュのＮｏＣのトポロジの例を示した図である。
【図１ｂ】双方向リング、２Ｄメッシュ、２Ｄトーラス、および３ＤメッシュのＮｏＣのトポロジの例を示した図である。
【図１ｃ】双方向リング、２Ｄメッシュ、２Ｄトーラス、および３ＤメッシュのＮｏＣのトポロジの例を示した図である。
【図１ｄ】双方向リング、２Ｄメッシュ、２Ｄトーラス、および３ＤメッシュのＮｏＣのトポロジの例を示した図である。
【図２ａ】従来の２次元メッシュでのＸＹルーティングの例を示した図である。
【図２ｂ】送信元と宛先ノードの間の３つの異なる経路を示した図である。
【図３ａ】従来の２層のＮｏＣ相互接続の例を示した図である。
【図３ｂ】ホストと複数のＮｏＣ層の間の従来のブリッジ・ロジックを示した図である。
【図４ａ】システムコンポーネント数およびそれらの間の接続を示した図である。
【図４ｂ】３ｘ６メッシュのＮｏＣトポロジ内のさまざまなホストのサンプル位置を示した図である。
【図４ｃ】３ｘ６メッシュＮｏＣトポロジでのさまざまなホストのより良い位置を示した図である。
【図５ａ】ＳｏＣコンポーネント及び接続仕様を示す図である。
【図５ｂ】最適化されたポート指向及びＮｏＣ相互接続に関する代わりのトポロジを示す図である。
【図５ｃ】最適化されたポート指向及びＮｏＣ相互接続に関する代わりのトポロジを示す図である。
【図５ｄ】最適化されたポート指向及びＮｏＣ相互接続に関する代わりのトポロジを示す図である。
【図６】ＳｏＣ環境におけるコンポーネント及びその中のポートの位置決め並びに方向付けを示す例示的フロー図である。
【図７ａ】実装例に則った所与のホストのポートの再配置及び再位置決めを示す図である。
【図７ｂ】実装例に則った所与のホストのポートの再配置及び再位置決めを示す図である。
【図７ｃ】実装例に則った所与のホストのポートの再配置及び再位置決めを示す図である。
【図７ｄ】実装例に則った所与のホストのポートの再配置及び再位置決めを示す図である。
【図８】所与のシステムトラフィックフローについての最適な経路の同定（identification）を示す例示的フロー図である。
【図９ａ】異なる重みを有する複数のトラフィックフローから順番に選択される、所与のシステムトラフィックフローについてのより最適な経路の同定を示す。
【図９ｂ】異なる重みを有する複数のトラフィックフローから順番に選択される、所与のシステムトラフィックフローについてのより最適な経路の同定を示す。
【図９ｃ】異なる重みを有する複数のトラフィックフローから順番に選択される、所与のシステムトラフィックフローについてのより最適な経路の同定を示す。
【図９ｄ】異なる重みを有する複数のトラフィックフローから順番に選択される、所与のシステムトラフィックフローについてのより最適な経路の同定を示す。
【図１０】例示的な実施形態を実現することができるコンピュータシステムの例を示す図である。
【発明を実施するための形態】
【００３３】
以下の詳細な説明は、本出願の図面及び例の実装の詳細を提供する。参照符号と図の間の冗長要素の説明は、明確にするために省略されている。明細書全体を通して使用される用語は、例として提供され、限定することを意図するものではない。例えば、「自動」という用語の使用は、完全に自動または半自動の実装を含むことができ、本出願の当技術分野の練習の実装で当業者の所望の実装に応じ、実装の特定の側面を制御するユーザまたは管理者に関連する。
【００３４】
様々なＳｏＣコンポーネントと接続するためのＮｏＣ相互接続のトポロジは、効率性、低遅延及び高性能を達成するために使用することができる。ＮｏＣに関するトポロジの選択数は、チップ上の様々なコンポーネントの配置及びこれらのコンポーネントの間の接続要件に大きく依存する。例示的なシステム及び方法は、自動的に、これらのトポロジ選択を決定すること及びそれらの中から最適な一つを選択することを目的とする。
【００３５】
いくつかの実装例について、ネットワークオンチップ（Network-on-Chip（ＮｏＣ））の構成に用いるフリット（flit）を伝播する方法が利用される。本方法は、アップストリームルータから、入力ポートに関連付けられた複数の入力仮想チャネル（ＶＣ）のうち目的とされた入力ＶＣへ転送されるフリットを受信することを含む。フリットは、第１のＩＰ（Intellectual Property）コアから発信され、かつ、第２のＩＰコアへ転送されるパケットと関連付けられる。フリットは、目的とされた入力仮想チャネルと関連付けられた仮想チャネルストレージ内に格納され得る。リンク幅変換は、出力ポートの幅とは異なる入力フリットの幅に基づいて実行され得る。
【００３６】
本出願の実装に従ってＮｏＣ上のデータ処理に関するシステム及び方法の説明例は、図５ａで始まり、添付図面を参照して説明される。
【００３７】
図５ａに示されるシステムは、ホストのそれぞれのポートと共に、以下ではホストとして互いに置き換え可能に参照される、様々なコンポーネント／ＩＰコアの配置を示す。図５ａに示すコンポーネントは、ＣＰＵの２つのグループ（cpua1からcpua4、及び、cpub1からcpub4）を備え、ＣＰＵの各グループは、それぞれ、mema及びmembと動作可能に接続される。図５ａは、様々なホストのポートとの通信を処理するためにノード／ルータからなるＮｏＣ相互接続（不図示）を備えてよい。例では、最初のグループの４つのＣＰＵ（cpua1, cpua2, cpua3, cpua4）は、メモリmemaと通信し、次のグループの４つのＣＰＵ（cpub1, cpub2, cpub3, cpub4）は、membと通信する。図５ａに示されるように、各コンポーネント／ホストのポートは、それぞれのコンポーネントの左上の角に最初に又はデフォルトにより配置され、ノード／ルータを介して他のホストとのパケット／メッセージの送受信するように構成することができる。ポートが各コンポーネントについて異なる位置に構成可能であるとよく、さらに、各コンポーネントは要求された位置／方向／パターン内の複数のポートを備えることができることが理解されるであろう。第１及び第２のＣＰＵのグループは、他のコンポーネントの対応に依存せずに、任意の通信の配線又はパスを介してmema及びmembとそれぞれ通信できる。遅延、ＮｏＣコスト及び帯域幅の消費の全体は、相互接続の結果がＳｏＣフロアプランの通りであるように、設計フローを物理的に認識し続けることにより、削減され得る。下記のように、多くのＮｏＣトポロジは、必要な接続を提供できる。
【００３８】
図５ｂは、ポートとメモリの間のパス通信を含む例示的トポロジの一つの可能な型を示す。メモリmemaは、ノード／ルータRmemaと動作可能に接続されるポートPmemaを備える。同様に、各コンポーネントは、ＮｏＣ相互接続を介して通信するための対応するルータ／ノードと動作可能に接続され得る１以上の複数のポートを有することができる。コンポーネントのグループ間の例示的通信は、以下のように示される。
(cpua1, cpua2, cpua3, cpua4) <=> mema                 (1)
(cpub1, cpub2, cpub3, cpub4) <=> memb                  (2)
図５ｂは、例えば、Rmema及びRcpua1のようなＮｏＣルータを描き、それぞれが対応するコンポーネントのポートと動作可能に関連付けられる。ルータ間の線は、ＮｏＣリンク又はチャネルであり、各ルータ／ノードは、対応するコンポーネント及び／又はポートからパケットを受信（又は、受信されたパケットを外部から目標ポートへ送信）する。各パケットに示されるアドレスに基づいて、ルータは、取り付けられたポート、又は、別の共有リンクのポートへ受信パケットを転送する。
【００３９】
図５ｂは、メモリが相互作用できるメモリ及びコンポーネントの間の共有リンクを示す。ルータ間の線は、通信に関するＮｏＣリンク又はチャネルである。図に示されるように、例えば、ホストcpua1からホストmemaへのメッセージは、２つのルータノード（最初にRcpua1へ、そしてRmemaへ、又は、メッセージの方向に依存してその逆に）を超える必要があり、同様に、ホストcpua2及びmemaの間のメッセージは、３つのルータノードを移動する必要があり、ホストcpua3の間のメッセージは、３つのルータノードを移動する必要があり、cpua4及びmemaの間のメッセージは、４ホップを移動する必要がある。同様に、memb は、コンポーネントのグループと通信する。
【００４０】
トポロジの別の型は、図５ｃに示される。図５ｂに示されるように、コンポーネントの左上の角におけるポートに関する同じ位置と、対応するメモリと相互作用するコンポーネントの同じグループ分けを仮定すると、図５ｃに示されるように、ＮｏＣリンク又は通信チャネルは、新たなトポロジに再設計され得る。このトポロジがＳｏＣ環境のポート及び／又はホストの方向を変更しない場合、トポロジ内のＳｏＣレベルの変更はなく、ＮｏＣ相互接続トポロジは、コンポーネント間の同じトラフィックフローについて異なるかつ可能なより最適化された経路を許可するために変更される。図５ｃに示されるように、例えば、ホストcpua1及びmemaの間のメッセージは、現在、２つのルータノードを超える必要があり、ホストcpua2及びmemaの間のメッセージは、２つのルータノード上を移動する必要があり、ホストcpua3の間のメッセージは、３つのルータノード上を移動する必要があり、cpu4及びmemaの間のメッセージは、３ホップ上を移動する必要がある。membの構成は、対応するコンポーネントとの相互作用についてmemaと類似する。図５ａ及び図５ｂで議論されたこれらのトポロジのそれぞれは、同一の遅延特性を有するが、２つのトポロジ内の配線長は異なる。図５ｂと比べた場合、図５ｃの配線長はより長く、チャネルに沿った通信の速度を妨げることがある。それ故、図５ｃ及び図５ｂは、同じシステムトラフィックフローを満たす異なるルータを用いることにより、ＮｏＣレベルトポロジ内の変化を示す。下記のように、そのような経路のそれぞれは、接続されたシステムトラフィックフローについてより最適な経路を決定するための費用関数に関して評価されることができる。
【００４１】
より複雑なシステムでは、コンポーネントとして可能な多数のトポロジがしばしば存在し、対応するルータ及びポートは、様々なコストに加えて、性能及び遅延特性が増加する。トポロジは、システムの必要性に応じて再設計され、相互接続帯域幅及び遅延を削減すること、及び、目的関数として全体の平均通信遅延を維持することに依存し得る。最適化されたトポロジ方向のある型は、図５ｄに示され、減少した配線長、削減した遅延及び相互接続帯域幅を有するトポロジを示す。実装例において、図５ｄに示されるように、メモリに対応するポート及びルータは、柔軟な方向付けを有し、配置され得る。そのようなケースでは、ポートPmemaは、メモリコンポーネントmema内の新たな位置へシフトされ、及び／又は、再位置決めされ得る。図５ｄに示されるように、ポートは、左上から左下の方向にシフトされた。図５ｄに示されるように、所与のホスト／コンポーネントのポートの方向におけるこの変化に伴い、ホストcpua1及びmemaの間のメッセージは、一つのルータノードを超える必要があり、ホストcpua2及びmemaの間のメッセージは、２つのルータノード上を移動する必要があり、ホストcpua3の間のメッセージは、２つのルータノード上を移動する必要があり、cpu4及びmemaの間のメッセージは、３ホップ上を移動する必要がある。それ故、その構成は、ＳｏＣ環境及びアーキテクチャの性能を向上する。membについての構成は、対応するコンポーネントとの相互作用についてmemaと類似する。この例では、ポートの構成及び位置の変化に伴い、メモリに対応するルータがメモリとコンポーネントの間のホップ数を削減し、相互接続帯域幅が削減されるという結果ももたらし、従って、費用が削減するように、遅延は削減され得る。図５ｄに示されるように、各ルータ／ノードは多数のポートを含み、それ故、ルータの各ポートはホスト／コンポーネントのポートと動作可能に接続及び構成され得る。その各ルータ及びポートはＳｏＣアーキテクチャ内の複数のホストと動作可能に接続される。
【００４２】
上記で説明された各トポロジは、同一の遅延特性を有するが、図５ｂ及び図５ｃに示される２つのトポロジ内の配線長は異なる。複雑なシステムでは、しばしば、多数のトポロジが様々なコスト、性能及び遅延特性を備えることが可能である。最適化されたＮｏＣトポロジを決定する第１ステップは、それ故、ＳｏＣ上の様々なコンポーネントの正しい位置を決定することであり、その後、ホスト内のポートの最も最適な位置を決定する。一旦、ホスト及びポートが、より最適かつ効率的にＳｏＣ内に構成されると、１以上のシステムフローについて可能な異なる経路は、ＮｏＣ相互接続を定義するために評価され、選択され得る。
【００４３】
最適化されたトポロジは、ＳｏＣ上の様々なコンポーネントについて位置を計算することにより決定することができる。その上、ＳｏＣ上のコンポーネントのより最適な位置決めは、機械学習又は焼き鈍し法（simulated annealing）を含む、様々な技術により決定することができる。機械学習アプローチは、所与のルータマイクロアーキテクチャに関するパラメータ化された合成可能なルーティングテーブルルックアップ（Routing Table Lookup (RTL)）仕様、すなわち、構成可能なルータマイクロアーキテクチャ仕様で開始できる。それは、異なる構成パラメータの下で実際のルータ実装を生成するために使用される。選択された構成の小さな部分集合を用いることにより、各構成は、各ルータインスタンスの詳細な物理的レイアウトを取得するために、タイミング駆動型のＲＴＬ合成及びタイミング駆動型の配置及びルーティングを含む、対象ＡＳＴＣ実装フローを介した集合内で実行され得る。
【００４４】
他方、焼き鈍し法アプローチは、ランダムサーチ技術として説明され、複雑な組み合わせ問題を対処する改善された結果を提供できる。焼き鈍し法は、組み合わせ的に大規模な最適化問題を解決するために適用され得る。焼き鈍し法のため、全体的な目的関数の最小化が直接的にアプローチされ得る。
【００４５】
様々なコンポーネントの配置を決定するために、コンポーネントの形状及びサイズは、コンポーネントが互いに重複しないことを確保することが考慮される必要がある。あるコンポーネント設計では、ポートは、特定の方向に固定され、他にいる間、ポートは、任意の方向にいくつかの柔軟性を有し得る。そのようなシステムについて、費用関数は、固定されたポートの方向を反映するために調整され得る。方向付けの柔軟性を備えたポートについて、適切なポート位置が計算され、最後のポート位置は、最も近くのＮｏＣルータに対するポートと接続するように構成することができる。図５ａから５ｄの直前の例のシステムでは、mema及びmembが任意のポート方向の柔軟性を有する場合、より最適化されたポート方向は、図５ｄに示されるように、設計され得る。
【００４６】
自動的なＮｏＣトポロジ設計の実装例では、以下に記載されるように、ホストのポートの方向及びホスト配置は、共に計算され得る。「ホストの位置決め（positioning hosts）」及び「ホスト内のポートの位置決め（positioning ports within hosts）」の両方が単独の実行又は同時に発生するように説明されるにも関わらず、両方が別に実行され、又は、独立に実行される場合には一つが省略され得る。例えば、ＳｏＣアーキテクチャ内のホストの位置を変更する代わりに、それらの位置は維持され、実装はより最適なＳｏＣトポロジを作成するホスト内でポートを再調整すること及び／又は正しい方向に置くことだけを実行する。アルゴリズムは、ホスト内のポートの再配置と同様に、互いにホストの交換を許可するために変更され得る。ホスト内に多数のポートが存在する場合、それらは、互いに交換もされ得る。
【００４７】
図６は、削減された遅延及び削減された相互接続帯域幅という結果をもたらすホスト及び／又はポートのより最適化された位置を計算することにより、ＳｏＣトポロジを生成する方法を示すフローチャート６００である。実装例では、図６の６０１で描かれるように、ホスト及びポートは、ＮｏＣ内の初期／デフォルトの位置及び方向に割り当てられる。一旦、デフォルト位置に位置決めされると、ホスト／コンポーネントのポートは、それらの対応する／最も近くのルータと動作可能に接続される。ＳｏＣコンポーネント及びそれぞれのポートの最適化が行われる回数を示すことができる反復カウンタＩは、０に設定され、閾値（例、Threshold_I）は、コンポーネント及びポートの既に最適化された集合が最適化されることになる回数を示すために定義される。例えば、一旦、同定され、かつ、適格な全てのホスト及びポートが実装例により位置決めされると、別の最適化のラウンドが、可能な限り最高の最適化がされたＳｏＣトポロジが生成されることを確保するために実行され得る。
【００４８】
６０２では、多数のパラメータに基づき、各ホスト及びそれらのポートに重みが割り当てられる。実装例では、重みは、例えば、費用関数、遅延、相互接続帯域幅、トラフィック属性、その他のパラメータのような属性に基づき計算される。一実装例によれば、各ポート及び／又はホストに重みが割り当てられることの代わりに、重みが計算され、ポート／ホストの部分集合に割り当てられる。一例では、最高の遅延を有するホスト及び／又はポートは、最低の重みが割り当てられ、最低の遅延及び最高の帯域幅を備えるホスト／ポートは最高の重みが割り当てられる。重み割当は反対であってもよく、つまり、最高の遅延を備えるホスト／ポートには最高の重みを割り当てられる。一例では、ホスト／ポートｘｉに対する重みは、以下のように計算され得る：
weight(xi) = bandwidth(xi) / Σ bandwidth(xi)                (3)
【００４９】
６０３では、１以上のホスト及びポートに割り当てられた重みに基づいて、ホスト又はホスト内のポート（例えば、ｘ１）が再配置の考慮のために選択され得る。（例えば、最高の遅延を有するために）ｘ１がシステム内の他のポートと比べて最低の重みが割り当てられたポートであると仮定し、ホスト内のポートの再配置がＳｏＣの効率を向上するため、及び、遅延及び帯域幅ベースの性能を高めるためにも、実施されると良い。ある実装例では、重みの閾値はシステムにより定義され、その実装は、規定の重み閾値よりも少ない重みを有するホスト／ポートについてのみ実行される。別の実装例によれば、ホスト及び／又はポートは、最初の反復でＪ＝０であり、所与の数のカウント（例えば、Ｊ）に到達するまで、可能性のある再配置について同定され得る。例えば、システム内に５個のホストが存在し、各ホストが２個のポートを有する場合、再配置が可能な合計１５個のコンポーネント／ポート（５個のコンポーネント及び１０個のポート）が存在する。それ故、Ｊは、コンポーネント／ポートの再配置が、コンポーネント／ホスト又はポートの重みに基づいて実行される必要がある回数を示すことができる。上述した実装例に加えて、他の実装は、再配置される必要があるポート及び／又はホストと、処理が実行される必要がある回数とを選択するために実行もされ得る。
【００５０】
６０４では、ポートが再配置のために選択されたか、又は、ホストが検出されたかどうかについて、同定が実施される。ホストが再方向付け（Ｎ）のために選択された場合、グリッド／ＳｏＣアーキテクチャ内のより適切な位置へホストの再配置が実施され得る。この点は、米国特許出願第13/779,618に記述され、全ての目的のためにその全体が参照により本明細書に組み込まれる。
【００５１】
他方、ステップ６０５では、ポートが再配置又は再位置決めをするために選択された場合、ポートと動作可能に接続されるホストのグループから選択されるホストは、確率受理関数ｆ１に基づき、同定される。例えば、ホストｈ１のポートｘ１が、ホストｈ３、ｈ７、ｈ９、ｈ１８及びｈ３２と動作可能に接続される場合、ホスト３、７、９、１８及び３２のうち一つは、関数ｆ１に基づいて選択される。関数ｆ１は、関係するホストが備える相互作用の頻度、遅延、帯域幅考慮及び要求された実装に依存する他の性能属性を含むがこれらに限定されない多数のトラフィックレベルパラメータに基づいて定義される。このようなパラメータは、コンテクスト内のポートｘ１に最も好ましいホストのどの一つが同定され得るかに基づいて、関数ｆ１を取得するために、重み付けされ、又は、任意の他の要求され、かつ、知られた方法で組み合わせることもできる。例えば、「相互作用の頻度」がホストを同定するための最も重要な要因であるために決定された場合、ホストｈ７は、例えば、関係するポートｘ１について選択され得る。一旦、コンテクスト内の関係するポートｘ１についてのホストが同定されると、ポートｘ１について可能性のある新たな位置／配置は、同定されたホストの位置及び他の属性に基づき決定され得る。
【００５２】
実装例では、確率関数ｆ１を使用することは、極小値を避け、ポートｘ１の新たな方向を決定することにおいて、あるランダム性を取り入れることができる。例えば、確率関数ｆ１は、ホストｈ７がｎ％の回数を選択されるべきであり、ｈ３がｍ％の回数を選択されるべき、などを示すように構成することができる。
【００５３】
一実装例によれば、関数がポートｘ１がより頻繁に通信するホストを優先するように、関数ｆ１は、設けられるとよい。例えば、ポートｘ１がh1_1からh1_nと命名された「ｎ」個のホストと通信し、これらのホスト間の通信帯域幅の要求がB(x1, h1_i), i = 1からnである場合、h1_1からh1_nの中からいずれかのホストが選択される確率は、以下により与えられ得る：
P(h1_i) = B(x1, h1_i) / Σ B(x1, h1_i)      (4)
【００５４】
特定のホストが他より低い遅延を有するｘ１と通信する必要があることと同様に、遅延の要件が存在する。L((x1, h1_i), i = 1からnで与えられるそのような遅延制約が存在する場合、確率関数ｆ１は、以下に示すように、帯域幅と遅延の両方を受け入れるために調整され得る。
P(h1_i) = (B(x1, h1_i) / Σ B(x1, h1_i)) × (ΣL(x1, h1_i) / L(x1, h1_i))            (5)
【００５５】
一実装例によれば、重み付けされた確率関数ｆ１は、帯域幅及び遅延が所与のシステムでは重要性を反映する所与の異なる重み値であることを組み込むこともできる。よって、任意の他のトラフィック又はノントラフィックベースのパラメータは、関数ｆ１を定義するために選択され、コンテクスト内のポートｘ１についてホストを選択する。
【００５６】
６０６では、費用関数はポートｘ１について計算され得る。費用関数は、例えば、遅延、帯域幅、その他のパラメータのような１以上のトラフィックパラメータに基づいて任意の所与の位置について各ポートについて計算され得る。現在のコンテクストでは、費用関数は、最初に、ポートの初期位置（コンポーネントの左下）について、そして、ポートの提案される新たな位置（コンポーネントの右上）について計算され得る。
【００５７】
６０７では、ポートｘ１の位置が初期位置から新たな提案位置へ変更されるべきか否かについて確認が行われる。このステップは、旧費用関数（ポートｘ１が初期位置内である場合）、新費用関数（ポートｘ１が新たに提案された位置内である場合）及び確率関数ｆ２に基づき、確認される。実装例では、関数ｆ２が旧費用関数を新費用関数と比較するように構成することができる。
【００５８】
新費用関数が旧費用関数より少ない場合、ポートは再配置される。それによって、新しい位置へのポートｘ１の再配置は、遅延及び他の性能レベルトラフィック属性の見地から、より安価となる。たとえ、新費用関数が旧費用関数より高価であっても確率関数ｆ２は、ｙ％の回数、ポートｘ２の再配置を許可できる。それ故、新たなコスト、過去のコスト、及び確率受理関数ｆ２に基づいて、ポートｘ１の再配置及び／又は再方向付けは、再配置決定に基づき受理又は拒否のいずれかがされ得る（例えば、ｘが確率関数により示される確率である場合、ｘ％回、受理する）。別の実装例に応じて、関数ｆ２は多数の方法で設けられるとよい。例えば、ポートの再配置が費用関数を削減する場合、再配置は常に受理され得る。他方、再配置がコストを増加する場合、再配置は特定の確率関数で受理され得る。確率関数は、最適化の型に基づいて設けられるとよい。例えば、焼き鈍し法ベースのアプローチにおいて、受理確率は、費用関数を増加する再配置が受理又は拒否されるかを制御する、「温度」と呼ばれる時変パラメータに依存してよい。そのアルゴリズムは、より高温で内部ループを反復し始め、内部ループの各パスで温度を徐々に減少する。より高い温度レベルにおいて、費用関数を増加する再配置は、より低い温度レベルよりも高い確率で受理され、より高い温度で極小値から離れるより高い機会を許可する。システムがクールダウンする（すなわち、温度が下がる）場合、費用関数を増加する移動は、より低い確率で受理される。各外部の反復ループの開始において、温度はより高いレベルで復元され、内部ループでより冷やす処理の多数のパスを生成する。関数ｆ２は次のように定義され得る：
P(relocation) = 1/(1 + exp((cost(old) - cost(new)) / cost(initial)×temp))         (6)
ここで、
P(relocation)は、再配置（relocation）が受理されるか否かの確率を示し、
cost(old)は再配置前の費用関数であり、
cost(new) は再配置後の費用関数であり、
cost(initial)は初期システム費用関数であり、
tempは、現在の温度レベルである。
初期温度レベルは、１又はいくつかの他の値で選択され、内部ループの全ての固定数のパスの後に等比数列で減少される。温度は、同様にいくつかの他の方法で低減され得る。内部ループは、温度がいくつかの所定の最低許可値T(min)に到達するまで続く。このアルゴリズムは、機械学習及び焼き鈍し法に基づくものであり、一般的に、システム内のポート及びホストについて最適な位置を決定する。
【００５９】
６０８では、Ｊカウンタの値がその閾値に到達したか否かについて確認が行われる。６０９では、Ｊの値が閾値（Ｙ）に到達した場合、関数ｆ１及びｆ２の修正と共にＩカウンタの値が増加される。新たな関数ｆ１及びｆ２に基づいて、ポート及びホストの費用関数も修正され、ホスト及びホストのポートに割り当てられた重みの修正という結果をもたらす。６１０では、カウンタＩが上限閾値Threshold_Iに到達したか否かについて、確認が行われる。閾値Threshold_Iが（Ｎ）に到達していない場合、フローが６０２へ戻る。遅延、帯域幅、その他のパラメータを含むがこれらに限定されない、トラフィックパラメータに基づき、新たな重みが１以上のホスト及びそのポートに割り当てられる。他方、カウンタＩの閾値が（Ｙ）に到達した場合、フローは停止する。カウンタＪの値が、Threshold_Jというその閾値（Ｎ）に到達しない場合、フローは６０３へ戻る。
新たなホスト又はポートは、別の位置へ可能な再配置の評価のために選択される。新たなポート（例えば、ｘ２）は、その重みに基づく再配置のために同定され得る（例えば、ｘ２の重みは、全ての他のホスト及び／又はポートより低いがｘ１より高い）。
【００６０】
一実装例では、図６のフローについての６０３において、内部及び外部のループ反復カウンタＪ及びＩのそれぞれが、ホスト選択をよりよく制御するためのポート／ホストの重みへの主な要因とされる。
【００６１】
図７ａ、７ｂ、７ｃ及び７ｄは、実装例に応じて、所与のホストのポートの再配置及び再位置決めを示す。図７ａは、１以上の他のコンポーネント／ホストと動作可能に接続される、多数のコンポーネント／ホストＣ１からＣ１６を示す。例えば、ホストＣ１は、それぞれのポートを介して、ホストＣ２及びＣ５のポートと接続される。同様に、Ｃ６は、Ｃ５、Ｃ１０、Ｃ２、Ｃ３、Ｃ１１及びＣ７のポートと接続される。一実装例では、図７ａに示されるように、各ポートは、重みが割り当てられることができる。現在の例では、ポートは、それぞれのホストの範囲内に再配置され、ホストの位置は静的である。それ故、重みは、ポートへ割り当てられるだけである。
【００６２】
ホストＣ６のポートは、他のポートの全てのうち、「．１５」の最小の重みを有し、ホスト／コンポーネントＣ６のポートは最高の遅延を有することを意味し、それ故、（図６の６０３におけるフローに従って）可能性のある再配置についてピックアップされ得る。再配置されるためのコンポーネントＣ６のポートの選択が図７ｂに示される。
【００６３】
図７ｂは、Ｃ６のポートが動作可能に接続されるＣ２、Ｃ３、Ｃ５、Ｃ７、Ｃ１０及びＣ１１を含む全てのホストを示す。図６のフローに定義されるように確率関数ｆ１に基づいて、現在の例がＣ３であることを仮定し、一つのホストが現在選択され得る。（図６の６０５におけるフローに従って）一旦、ホストＣ３が選択されたとすると、Ｃ６のポートの再配置が提案されると仮定して、Ｃ６のポートについての費用関数が計算される。
【００６４】
図７ｃは、再配置前のＣ６のポートの旧費用関数を示す。「.15」として計算され、Ｃ６のポートをホストＣ６の右上への再配置と仮定した新たな費用関数をさらに計算する。図７ｃに示されるように、新たな費用関数は「.10」であり、それ故、確率関数ｆ２に従って、新費用関数からの値が旧費用関数からの値より少ない場合、全ての他の動作可能に接続されたホストとＣ６の再配置ポートの更新された接続と共に、ポートが図７ｄに示されるように再配置され得る。コンポーネント及びポートに関する位置の最も最適化された集合が達成された回数まで、この処理は、続けられ得る。
【００６５】
一実装例に応じて、一旦、ホストの位置及び方向がＳｏＣ内に決定されると、自動的なＮｏＣトポロジ生成処理は、ＮｏＣトポロジを形成するためのルータ及びＮｏＣチャネルの割当を含むことができる。ルータは、仲裁地点の第１集合を形成するホストのポートを接続するためにインスタンス化され得る。そのポートは、最も近くのルータに接続される。ルータからポートの割当後、ホストポート当たりに１つルータが存在する。グリッドベースの設計方法論では、ルータは、ポートが存在するグリッドセル内でインスタンス化されるとよい。その後、追加のルータ及びＮｏＣチャネルは、より最適なＮｏＣトポロジが自動的に形成されるように接続が提供されるために割り当てられ得る。（あるホスト／コンポーネントから別のホスト／コンポーネントへのメッセージフローは一つのシステムトラフィックフローを形成する）システムトラフィックフローが特定のルータにおいてＮｏＣグリッドへマップされる場合、多数のフローが互いに相互作用する度に、仲裁論理が必要とされ、それ故、交差点が発生するグリッドセルにおいてまだ存在しない場合に、ルータがインスタンス化され得る。また、新たなＮｏＣチャネルは、それらがまだ存在しない場合に、経路に沿って割り当てられ得る。それ故、最適なＮｏＣトポロジを決定することにおける鍵は、全トラフィック要件を満たすが、交点の最小数及び／又はチャネルの最小数が存在するように、システム内の全てのトラフィックフローについて最適な経路を選択することである。
【００６６】
別の実装例によれば、確率関数は、要求された実装に依存して、ポート又はホストの新たな最適化された位置について、遅延、相互接続帯域幅、トラフィックフロー又は全関数の合計に基づき、いずれか一つの関数を考慮して計算され得る。
【００６７】
図８は、１以上のシステムトラフィックフローについての可能であり最適な適格経路を同定するためのフローチャート図８００である。ＳｏＣアーキテクチャは、１以上の経路／ノードを介して互いに動作可能に接続された多数のコンポーネントを備えることができる。
８０１では、最適な経路が同定されるべき全システムトラフィックフローを検索する。
８０２では、１以上のシステムトラフィックフローに重み関数が割り当てられ、重みは、例えば、遅延、帯域幅、その他のパラメータのようなトラフィックパラメータに基づいて各トラフィックフローに割り当てられ得る。例えば、正規化された遅延は、フロー最適化としてより低く正規化された遅延がより高く優先される前に、より高く正規化された遅延を有するフローが処理されるように、１以上のシステムトラフィックフローについて計算される。この例では、最大遅延を経験するフローが最も低い重みを有し、それ故、最初に処理される必要がある。
８０３では、１以上のシステムトラフィックフローが割り当てられた重みに基づきを順序付けされる。実装例では、順序付けは、最も低い重み（最高の遅延）を有するフローがリストの最上位にあるように行われ得る。
【００６８】
８０４では、リストの最上位のシステムトラフィックフローがピックアップされ、リストから削除され得る。しかしながら、フローの任意の他の再編もまた行われ得る（例えば、最高の遅延を有するフローもまた、リストの最下位に加えられる）。別の実装例では、重みは、全く遅延に基づかず、いくつかの他のパラメータは、リストに割り当てる間に考慮され得る。実装例は、最初に最適な経路が最適化されるべきシステムトラフィックフローを同定する。
【００６９】
８０５では、選択されたシステムトラフィックフローについて全ての可能な経路が同定され、検査される。例えば、ＣＰＵからキャッシュメモリへ初期化されるシステムフローに関する多数の経路が存在し、各経路が多数のルータ及びその中での相互接続を含む。全ての可能な経路の中から、例えば、必要されるホップ数、コンポーネント相互作用属性、他のトラフィック／コンポーネント／ノードレベル属性のような１以上のパラメータに基づいて、複数の経路が適格であるように最初に選択される。実装例では、経路に沿ったフローをマッピングし、全ての必要な経路をインスタンス化した後に、過去にマップされたフロー遅延制約、又は、現在のフローの遅延制約に違反しない場合、経路は適格である。別の実装例では、所与のシステムトラフィックフローについて同定される全ての経路が同定され得る。
【００７０】
８０６では、経路は、経路の適格な集合から費用関数に基づいて選択される。各経路は、それ故、例えば、必要されるルータ、必要されるチャネル、遅延考慮、帯域幅属性及び他のパラメータのような、１以上のパラメータにより同定される費用関数に関連付けられる。例えば、費用関数はそれぞれの経路で必要とされるホップ数に基づくものであり、より少ないホップ数を有する経路が費用関数の最低値を有する。その上、多数のパラメータは、費用関数を構成する重み付けられたパラメータ集合を形成するために、一定の比率で組み合わされ得る。実装例では、最低の費用関数を有する経路は、コンテクスト内でシステムトラフィックフローについて最適な経路として選択され得る。
【００７１】
８０７では、選択された経路は、システムトラフィックフローにマップされ、フローに必要とされるコンポーネントを含むシステムトラフィックフローと同様に、経路のプロパティが更新される。フローがマップされた時、ルータは、送信元及び送信先ノードにおいて、及び、現在のフローを促進する所与のルータが存在しない場合、そのフローが、現在のフローとは異なる方向で入り又は出て行く（又は両方の）いくつかの以前にマップされたフローとマージする全てのノードにおいて、インスタンス化される必要がある。
【００７２】
８０８では、同定されたシステムトラフィックフローについて選択された最適な経路のマッピング後に、システムトラフィックフローの全てがマップされたか否かを判定するために、確認が行われる。フローの全てがマップされていた場合（Ｙ）、フローは終了し、さもなければ（Ｎ）フローは８０４へ戻り、他のシステムトラフィックフローについて最適な経路を同定するために続行する。
【００７３】
別の実装例では、それらがマップされているようなフローについて仮想的なチャネル割当と同様に、帯域幅分析及びＮｏＣチャネルの最適化を組み合わせることにより、以前の処理を付け加えてもよい。そのような設計は以下を含むとよい。
１）フローの遅延要求及びフローの送信元及び送信先コンポーネントの位置に依存する様々なクラスへ複数のシステムトラフィックフローを自動的に分類すること
２）複数のシステムトラフィックフローから同定される所与のトラフィックフローについて適格な経路を同定すること
３）その経路が、デッドロックの回避及び分離について利用可能な仮想チャネル、並びに、このフローについての利用可能な帯域幅を有するか否かを決定し、利用可能な帯域幅及び仮想チャネルを有するそれらの経路だけを考慮すること
４）全ての経路の中から、関係するトラフィックシステムフローについての経路を決定する際のホップ数及び遅延に加えて、帯域幅、仮想チャネルに関して、ロードバランスを実行すること
５）経路にフローをマッピングし、様々なチャネルの帯域幅、及び、仮想チャネルの依存関係及び使用を追跡するために全てのデータ構造を更新すること
【００７４】
結果として生じる手順は、経路の適格性の基準が異なることを除いて、図８に示されるフローと同様である。多数の他の実施は、ランダムに経路を考慮すること、又は、全ての適格な経路においてシステムトラフィックフローをマッピングすることを考慮し、それらの中で最も良い経路を選択することなどで使用される。複数のＮｏＣ層へのフローのマッピング及び最も最適な経路を選択する、関連する帯域幅の認識及び仮想チャネルの認識のいくつかの例は、米国特許出願第13/752,226に記述され、全ての目的のためにその全体が参照により本明細書に組み込まれる。
【００７５】
別の実装例では、トポロジ生成アルゴリズムは、任意の遅延制約がないことにおいて、全てのシステムトラフィックフローのホップ数に関して全体的な遅延を削減することを目指してもよい。さらに、ルータノード及びチャネルに関するＮｏＣコストは、様々なフローについての様々な経路が選択され、ルータ及びチャネルが割り当てられることに基づいて費用の測定基準として使用されてもよい。よって、図８の費用関数は、遅延の削減又はＮｏＣ費用の削減のいずれか、又は、両方の組み合わせの要求された最適化目標に基づいて、設けられる。
【００７６】
別の実装例では、もし可能ならば（例えば、他のフローがそこに存在しない）、より速い経路からのルータ及びチャネルを削除し、もし要求されれば、そこに新たな経路を追加する間に、フローは全て最初にマップされ、代替経路へ再配置される。その後、新システムの費用は、計算され、受理の基準／費用関数に基づいて、再配置は受理又は拒否のいずれかがされる。受理の基準は、再配置においていくつかのランダムさを取得するために、確率的に作成され得る。確率受理関数は、それを増加する確率よりも高い確率を有する費用を削減するそれらの再配置を受理することができる。焼き鈍し法アプローチにおける例示的受理関数は、以下である。
P(relocation) = 1/(1 + exp((cost(old) - cost(new)) / cost(initial)×temp))                        (7)
ここで、P(relocation)は、再配置が受理されるか否かの確率を示し、
cost(old)は、再配置前の費用関数であり、
cost(new)は、再配置後の費用関数であり、
cost(initial)は、初期のシステム費用関数であり、
ｔｅｍｐは、現在の温度レベルである。
【００７７】
初期の温度レベルは、１又はいくつかの他の値で設定され、全ての再配置の固定番号後の等比数列内で削減される。温度は、他の方法でも同様に削減され得る。温度が任意の所定の最低許容値Ｔ（ｍｉｎ）に達するまで、再配置は、実行され得る。代替の受理関数は使用され、再配置の合計数が様々な異なる方法で決定され得る。
【００７８】
上記アルゴリズムの代替の実装は、相互接続の生成において特定の基数のルータだけを使用するような、制約を置いても良い。このケースでは、様々なフローについての経路が選択され、仲裁ポイント又はルータは基数制約を満足するように割り当てられる。例えば、基数３（すなわち、３ポート）のルータだけが使用されるように、制約が使用される場合、各ルータは、最大一つのホストと左右の二つの追加のルータに接続できるため、上記実装を有するＮｏＣトポロジを結果として生じることは、全部又は部分的なリングであり得る。ＮｏＣトポロジを結果として生じることは、非メッシュ又はトーラストポロジである場合に、あるものは、より高い基数のルータを使用するために決定することができる。例えば、基数がＳｏＣ内のホストポートの合計数と等しいＮｏＣルータを使用することが可能である場合、単一のルータが十分であり、相互接続を結果として生じることは、クロスバーのように見える。
【００７９】
自動的なＮｏＣトポロジ生成の代替の実装例は、異なるトポロジを有するそれぞれの多重のＮｏＣ層を決定し、異なるＮｏＣ層上で異なるトラフィックフローをマップするとよい。このような技術は、例えば、米国特許出願第13/856,835に記述され、その全体が参照により本明細書に組み込まれる。
【００８０】
自動的なＮｏＣトポロジ生成の提案された実装例を要約するために、第１に、様々なＳｏＣコンポーネント及びコンポーネント内のポートの位置は、特定の性能制約が満たされ、全体の性能測定基準が最大化され得るように自動的に決定される。その上、実装例は、ＮｏＣルータノードの間及びそれらの間のチャネルで必要されるトラフィックフロー及び割当をマッピングすることによりＮｏＣトポロジを自動的に決定する。生成及びマッピングは確率的手法に基づくため、全体のプロセスは、最善のソリューションを反復的に見つけ出すために複数回繰り返されるとよい。このことは、ＮｏＣトポロジを自動的に計算する実装例であるが、多数の代替の実装例が可能である。相互接続ソリューションを設計し、性能制約を満たすための効果的なＮｏＣトポロジを自動的に決定する概念は、実装例の焦点に含まれる。
【００８１】
図９ａ、９ｂ、９ｃ及び９ｄは、異なる重みを有する複数のトラフィックフローから順番に選択され、所与のシステムトラフィックフローについて、より最適な経路の同定を示す。図９ａに示されるように、例のＳｏＣ環境は、１以上が互いに動作可能に接続され得る１６個のコンポーネントを備える。コンポーネントは、メモリ、キャッシュメモリ、ＣＰＵ、プロセッサコア、ＤＳＰ、ハードウェアアクセラレータ、メモリ、及びＩ／Ｏを備え、チップマルチプロセッサ（Chip Multi-Processors(CMPs)）は、多数の均質なプロセッサコア、メモリ、及びＩ／Ｏサブシステムを含む。
【００８２】
図９ａは、存在し、より最適な経路へマップされることが要求される複数のシステムトラフィックフローを示し、各フローは２つのコンポーネントの間のトランザクションを示す。例えば、１つのフローがＣ２とＣ５の間、Ｃ２とＣ７の間、Ｃ７とＣ１４の間、他の同様なシステムフローの中のメッセージ相互作用を表す。上述したように、各システムフローは、トラフィックパラメータ、フローの優先度、必要とされるコンポーネント、他の属性に基づき、重みと関連付けられ得る（図８の８０２のフローを参照）。それ故、Ｃ６とＣ９の間のシステムトラフィックフローは、０．６３の重みを有し、一方、Ｃ４とＣ８の間のフローは、０．４５の重みを有するなどである。
【００８３】
一旦、マップされるべき全てのシステムトラフィックフローが同定され、重みが割り当てられると、最初にマップされるべき一つのシステムトラフィックフローが重みに基づいて同定される。例えば、現在の実装例の目的について、最低の重みを有するフローは、より最適な経路の同定について最初にピックアップされ得る。図９ｂに示されるように、Ｃ７とＣ１４の間のフローは、０．１０の最小の重みを有し、それ故、マッピングについてピックアップされ得る。一旦、要求されたフローが選択されると、フローについて全ての可能かつ適格な経路が、図９ｃに示されるように計算され、第１の可能な経路は、Ｃ７−＞Ｃ６−＞Ｃ１０−＞Ｃ１４であり、第２の可能な経路は、Ｃ７−＞Ｃ１１−＞Ｃ１０−＞Ｃ１４であり、第３の可能な経路は、Ｃ７−＞Ｃ１１−＞Ｃ１５−＞Ｃ１４である。各適格な経路は、費用関数に関連付けられ、上記に記載されているように、トラフィックパラメータ及び他のＮｏＣレベル属性に基づく経路の最適性の査定及び評価に役立つ。図９ｃに示されるように、第２の同定された経路Ｃ７−＞Ｃ１１−＞Ｃ１０−＞Ｃ１４は、９の最低の費用関数を有し、それ故、ホストＣ７及びＣ１４の間でシステムトラフィックフローについて最適な経路として選択され得る。一旦、経路が選択されると、ルータ及びチャネルは、それに応じて割り振られ、経路に沿って割り当てられる。最後の経路選択は、図９ｄに示され、ＮｏＣトポロジの一部を生成する。一旦、全ての経路が決定されると、全てのＮｏＣトポロジが実現されるだろう。
【００８４】
図１０は、例示的な実施形態を実現することができる例示的なコンピュータシステム１０００を示す図である。コンピュータシステム１０００は、入出力部１０３５と、記憶装置１０６０と、当業者に知られているように１以上の装置を実行可能なプロセッサ１０１０とを含むサーバ１００５を備える。本明細書で使用する用語「コンピュータ可読媒体」は、実行のためにプロセッサ１０１０に命令を提供することに関与する任意の媒体を指し、これは、コンピュータ可読記憶媒体の形となることがあり、例えば、光ディスク、磁気ディスク、リードオンリーメモリ、ランダム・アクセス・メモリ、ソリッドステート装置及びドライブに限らず、または電子情報を格納するのに適した有形の媒体の任意の他のタイプ、またはコンピュータ可読信号媒体、であり、これらはキャリアウェーブを含むことができる。Ｉ／Ｏユニットは、ユーザインタフェース１０４０とオペレータインタフェース１０４５からの入力を処理し、これは、キーボード、マウス、タッチデバイス、または言葉によるコマンドなどの入力装置を利用することができる。
【００８５】
サーバ１００５はまた、外部記憶装置１０５０に接続することができる。これはリムーバブルストレージを含めることができる。例えば、ポータブルハードドライブ、光メディア（ＣＤまたはＤＶＤ）、ディスク媒体またはコンピュータが実行可能なコードを読み取ることができる任意の他の媒体である。サーバはまた、出力装置１０５５、例えば、ユーザにデータおよび他の情報を出力し、同様に、ユーザからの追加情報を要求するディスプレイを接続することができる。サーバ１００５から、ユーザインタフェース１０４０、オペレータインタフェース１０４５、外部記憶装置１０５０、出力装置１０５５への接続は、無線プロトコルを介してもよい。例えば、８０２．１１規格、Ｂｌｕｅｔｏｏｔｈ（登録商標）またはセルラープロトコル、または、ケーブルや光ファイバなどの物理的な伝送媒体を介したものである。出力装置１０５５は、従って、ユーザと対話するための入力装置として機能することができる。
【００８６】
プロセッサ１０１０は、ＳｏＣトポロジモジュール１０１１及びＮｏＣトポロジモジュール１０１２を含む一つ以上のモジュールを実行してもよい。ＳｏＣトポロジモジュール１０１１は、遅延を最小化し、かつ、全体的なシステム帯域幅を拡張するために、システム内のコンポーネント間の高いスケーラビリティ及び性能の通信を提供し、コンポーネント及び／又はその中のポートの位置決め、設定及び方向付けにより全体的な性能メトリックを最大化するように構成することができる。各ポート及び／又はホスト／コンポーネントに割り当てられるトラフィックベースの重みに基づいて、ＳｏＣトポロジモジュール１０１１は、再位置決めされるためのポート及び／又はホストを同定し、それに応じて、前回の位置と新たな位置の費用関数の比較に基づいて、それらの位置を変更する。ＮｏＣトポロジモジュール１０１２は、他方、最適な経路が同定されるべきであるシステムフローを同定し、それに応じて、ＮｏＣ相互接続アーキテクチャのルータ／ノード及びチャネルを割り当てることにより、同定された効果的なルータをシステムトラフィックフローにマッピングする。
【００８７】
一実施形態によれば、ＳｏＣトポロジモジュール１０１１は、１以上のサブモジュールを実行し、様々なトラフィックパラメータに基づくＳｏｃ環境におけるホスト内の１以上のホスト及び／又はポートに重みを割り当てる重み割当モジュール１０１１−１を備えてもよい。ＳｏＣトポロジモジュール１０１１のホスト／ポート選択モジュール１０１１−２は、その重みに基づきホスト又はポートを選択するように構成することができる。これは、重み割当モジュール１０１１−１に応じて最低又は最高の重みであるとよい。候補地同定モジュール１０１１−３は、ホスト／ポート選択モジュール１０１１−２により選択されたホスト／ポートについて、確率関数ｆ１に基づきホストを決定するように構成することができる。関数ｆ１は、トラフィックパラメータ、例えば、遅延、帯域幅、使用頻度、その他の属性に基づきホストを評価する。一度、ホストが決定されると、ポートは、コンテクスト内でホストと最良に整列する位置に再配置されていたことを認識することができる。上述の実施形態のほとんどがモジュール１０１１−２により選択されているポートに関して説明されたものであるが、コンポーネント／ホストは、選択され、そして、再配置／再位置決め／再方向付けされてもよい。ポートｘ１がモジュール１０１１−２により同定されるとすれば、候補地同定モジュール１０１１−３は、関数ｆ１に基づいてホストであるｈ２を同定し、さらに、同定されたホストに関してポートの最良の位置を同定するように構成される。費用計算モジュール１０１１−４は、検出されたホストｈ２について最も適した新しい位置に再配置したと仮定するポートの新費用関数を計算ように構成することができる。再配置モジュール１０１１−５は、ポートが新たに提案された位置に再配置されるべきか否かを結論付けるための、ポートの初期費用関数（初期位置）、新費用関数（提案された新しい位置）、及び確率関数ｆ２を考慮に入れるように構成することができる。
【００８８】
ＮｏＣトポロジモジュール１０１２は、１以上のサブモジュールをさらに備えることができる。トラフィックフロー重み割当モジュール１０１２−１は、全システムトラフィックフローを検索し、１以上のシステムトラフィックフローに重みを割り当てるように構成することができる。そのような重みは、トラフィックパラメータ、例えば、遅延、必要とされるコンポーネント、要求された帯域幅、現在の帯域幅、他のパラメータのようなものに基づいて割り当てられることができる。トラフィックフロー選択モジュール１０１２−２は、割り当てられた重みに基づいて１以上のシステムトラフィックフローを順序付け、それに応じて、割り当てられた重みに基づいてシステムトラフィックフローを選択するように構成することができる。例では、（最高の遅延を有する）最低の重みを備えたフローは、最初に取り上げられることができる。経路決定モジュール１０１２−３は、選択されたシステムトラフィックフローについて全ての可能な経路を同定するように構成することができる。実装において、同定された可能な経路は、適格な経路のリストを検索するために分析されることができ、適格な経路が追加で処理されてよい。費用関数計算モジュール１０１２−４は、関係したシステムトラフィックフローに関して同定され／適格な経路のそれぞれについて費用関数を計算するように構成することができる。最適経路同定モジュール１０１２−５は、費用関数計算モジュール１０１２−４により計算された費用関数に基づいて、選択されたトラフィックフローについて最も適格な経路を同定するように構成することができる。
【００８９】
また、詳細な説明のいくつかの部分は、コンピュータ内のオペレーションのアルゴリズム及び記号表現に関して提示される。これらのアルゴリズム記述および記号表現は、最も効果的に他の当業者に彼らの技術革新の本質を伝えるために、データ処理分野の当業者によって使用される手段である。アルゴリズムは、望ましい最終状態又は結果に導く一連の定義されたステップである。実装例で実行されるステップは、有形の結果を達成するための具体的な量の物理的操作を必要とする。
【００９０】
また、本発明の他の実装は、本明細書に開示の例示的な実装の仕様および実施を考慮すれば当業者にとって明らかであろう。様々な態様および／または記載された例の実装の構成要素は、単独で又は任意の組み合わせによって使用することができる。明細書および実施例は、アプリケーションの真の範囲および精神が以下の特許請求の範囲によって示される例として考慮されることが意図されている。
【図１ａ】
2016525290.tif 000003
【図１ｂ】
2016525290.tif 000004
【図１ｃ】
2016525290.tif 000005
【図１ｄ】
2016525290.tif 000006
【図２ａ】
2016525290.tif 000007
【図２ｂ】
2016525290.tif 000008
【図３ａ】
2016525290.tif 000009
【図３ｂ】
2016525290.tif 000010
【図４ａ】
2016525290.tif 000011
【図４ｂ】
2016525290.tif 000012
【図４ｃ】
2016525290.tif 000013
【図５ａ】
2016525290.tif 000014
【図５ｂ】
2016525290.tif 000015
【図５ｃ】
2016525290.tif 000016
【図５ｄ】
2016525290.tif 000017
【図６】
2016525290.tif 000018
【図７ａ】
2016525290.tif 000019
【図７ｂ】
2016525290.tif 000020
【図７ｃ】
2016525290.tif 000021
【図７ｄ】
2016525290.tif 000022
【図８】
2016525290.tif 000023
【図９ａ】
2016525290.tif 000024
【図９ｂ】
2016525290.tif 000025
【図９ｃ】
2016525290.tif 000026
【図９ｄ】
2016525290.tif 000027
【図１０】
2016525290.tif 000028
【手続補正書】
【提出日】平成28年2月4日(2016.2.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のホスト及び複数のポートを備えるネットワークオンチップ（Network-on-Chip（ＮｏＣ））を構成するための方法であって、
前記ポートに割り当てられた重みに基づき、前記複数のポートから一つのポートを選択し、
前記選択されたポートについて、前記複数のホストから一つのホストを同定し、
費用関数及び確率受理関数の少なくとも一つに基づき、前記同定されたホストへ前記選択されたポートを再配置し、
別の費用関数に基づき、前記ＮｏＣ内の複数の経路から同定される一つの経路を用いて、システムトラフィックフローに割り当てられた重みに基づいて、複数のシステムトラフィックフローから選択された一つのシステムトラフィックフローをマッピングする
ことを含む方法。
【請求項２】
前記ポートに割り当てられた重みは、１以上のトラフィック属性に基づくものである
請求項１に記載の方法。
【請求項３】
前記ポートを選択すること、前記ホストを同定すること、及び、前記選択されたポートを再配置することは、閾値に到達するまで反復的に繰り返され、
前記複数のポートに割り当てられた重みは、１以上の更新された確率受理関数に基づいて更新される
請求項１に記載の方法。
【請求項４】
前記選択されたポートについて、前記複数のホストからホストを同定することは、前記別の確率受理関数に基づくものである
請求項１に記載の方法。
【請求項５】
前記費用関数及び前記別の費用関数は、遅延、帯域幅、及びホップ数の少なくとも一つに基づくものである
請求項１に記載の方法。
【請求項６】
前記システムトラフィックフローを選択すること、前記経路を同定すること、及び、前記選択されたシステムトラフィックフローをマッピングすることは、前記ＮｏＣの全てのシステムトラフィックフローが処理されるまで反復的に繰り返される
請求項１に記載の方法。
【請求項７】
複数のホスト及び複数のポートを備えるネットワークオンチップ（Network-on-Chip（ＮｏＣ））を構成する命令を格納するコンピュータ可読記憶媒体であって、
前記命令は、
前記ポートに割り当てられた重みに基づき、前記複数のポートから一つのポートを選択し、
前記選択されたポートについて、前記複数のホストから一つのホストを同定し、
費用関数及び確率受理関数の少なくとも一つに基づき、前記同定されたホストへ前記選択されたポートを再配置し、
別の費用関数に基づき、前記ＮｏＣ内の複数の経路から同定される一つの経路を用いて、システムトラフィックフローに割り当てられた重みに基づいて、複数のシステムトラフィックフローから選択された一つのシステムトラフィックフローをマッピングすること、を含む
コンピュータ可読記憶媒体。
【請求項８】
前記ポートに割り当てられた重みは、１以上のトラフィック属性に基づくものである
請求項７に記載のコンピュータ可読記憶媒体。
【請求項９】
前記ポートを選択すること、前記ホストを同定すること、及び、前記選択されたポートを再配置することは、閾値に到達するまで反復的に繰り返され、
前記複数のポートに割り当てられた重みは、１以上の更新された確率受理関数に基づいて更新される
請求項７に記載のコンピュータ可読記憶媒体。
【請求項１０】
前記選択されたポートについて、前記複数のホストからホストを同定することは、前記別の確率受理関数に基づくものである
請求項７に記載のコンピュータ可読記憶媒体。
【請求項１１】
前記費用関数及び前記別の費用関数は、遅延、帯域幅、及びホップ数の少なくとも一つに基づくものである
請求項７に記載のコンピュータ可読記憶媒体。
【請求項１２】
前記システムトラフィックフローを選択すること、前記経路を同定すること、及び、前記選択されたシステムトラフィックフローをマッピングすることは、前記ＮｏＣの全てのシステムトラフィックフローが処理されるまで反復的に繰り返される
請求項７に記載のコンピュータ可読記憶媒体。
【請求項１３】
複数のホスト及び複数のポートを備えるネットワークオンチップ（Network-on-Chip（ＮｏＣ））を構成するためのシステムであって、
前記ポートに割り当てられた重みに基づき、前記複数のポートから一つのポートを選択し、前記選択されたポートについて、前記複数のホストから一つのホストを同定し、費用関数及び確率受理関数の少なくとも一つに基づき、前記同定されたホストへ前記選択されたポートを再配置し、別の費用関数に基づき、前記ＮｏＣ内の複数の経路から同定される一つの経路を用いて、システムトラフィックフローに割り当てられた重みに基づいて、複数のシステムトラフィックフローから選択された一つのシステムトラフィックフローをマッピングする、システムオンチップ（System on Chip （ＳｏＣ））トポロジモジュール
を備えるシステム。 
【請求項１４】
前記ポートに割り当てられた重みは、１以上のトラフィック属性に基づくものである
請求項１３に記載のシステム。
【請求項１５】
前記ＳｏＣトポロジモジュールは、前記ポートを選択すること、前記ホストを同定すること、及び、前記選択されたポートを再配置することを、閾値に到達するまで反復的に繰り返し、
前記ＳｏＣトポロジモジュールは、１以上の更新された確率受理関数に基づいて、前記複数のポートに割り当てられた重みを更新する
請求項１３に記載のシステム。
【請求項１６】
前記ＳｏＣトポロジモジュールは、前記別の確率受理関数に基づいて、前記選択されたポートについて、前記複数のホストからホストを同定する
請求項１３に記載のシステム。
【請求項１７】
前記費用関数及び前記別の費用関数は、遅延、帯域幅、及びホップ数の少なくとも一つに基づくものである
請求項１３に記載のシステム。
【国際調査報告】
2016525290.tif 000029
2016525290.tif 000030
2016525290.tif 000031
2016525290.tif 000032
2016525290.tif 000033
2016525290.tif 000034