(57)【要約】  パイプライン・ステージを有するネットワークオンチップ（ＮｏＣ）インターコネクト・アーキテクチャを自動的に生成するシステム及び方法に関する。本開示は、ＮｏＣの各チャネルについてのパイプライン・ステージの数及び配置を自動的に決定する実施例を含む。実施例はまた、パイプライン・ステージに基づいて１つ以上のルータにおけるバッファを調整し、仮想チャネルのスループットを構成し得る。
2017500810.tif 000002
【特許請求の範囲】
【請求項１】
複数のチャネル及び複数のルータを有するネットワークオンチップ（ＮｏＣ）を生成するステップを含み、前記ＮｏＣは、関連するシステムオンチップ（ＳｏＣ）フロアプラン及びＮｏＣトポロジに基づいて、前記ＮｏＣの前記複数のチャネルのうち１つ以上のチャネルに配置される１つ以上のパイプライン・ステージを有して構成される方法。
【請求項２】
請求項１に記載の方法であって、
前記ＮｏＣの前記複数のチャネルの各々について、前記ＮｏＣの前記１つ以上のチャネルの各々への出力を取り扱う前記複数のルータのうち対応する１つに、当該対応するルータのセットアップ時間及び当該対応するルータ内のタイミング経路に基づいて、出力レジスタを生成するステップをさらに含む方法。
【請求項３】
請求項１に記載の方法であって、
前記１つ以上のチャネルの各々に関連する前記複数のルータの１対間のクロック周波数及び前記１つ以上のチャネルの各々の長さに基づいて、前記ＮｏＣの前記複数のチャネルの各々についての前記１つ以上のパイプライン・ステージの数を決定するステップと、
前記決定するステップによって決定された前記数に基づいて、前記複数のチャネルの各々についての前記１つ以上のパイプライン・ステージを生成するステップと、
を有する方法。
【請求項４】
請求項３に記載の方法であって、
前記複数のチャネルの各々について生成された前記１つ以上のパイプライン・ステージの各々を、前記複数のチャネルの各々のワイヤ遅延に基づいて配置するステップをさらに含む方法。
【請求項５】
請求項３に記載の方法であって、
前記複数のルータの各々と前記複数のルータのうちの１の隣接するルータとの１対間の前記１つ以上のパイプライン・ステージの数に基づいて、前記複数のルータの各々におけるバッファを調整するステップをさらに含む方法。
【請求項６】
請求項５に記載の方法であって、
前記複数のルータの各々における前記バッファを調整するステップは、前記複数のルータの各々と前記複数のルータのうちの前記１の隣接するルータとの前記１対間のスループット要求に基づいてなされる方法。
【請求項７】
請求項６に記載の方法であって、
前記スループット要求に基づいて、前記複数のルータの各々に関連する１つ以上の仮想チャネルのサイズを設定するステップをさらに含む方法。
【請求項８】
請求項５に記載の方法であって、
前記１つ以上のパイプライン・ステージの各々はバッファサプリメントとして利用されるように構成され、
前記複数のルータの各々における前記バッファを調整するステップは、前記複数のルータの各々によってバッファサプリメントとして利用される前記１つ以上のパイプライン・ステージに基づいてなされる方法。
【請求項９】
処理を実行する命令を記憶する非一時的コンピュータ可読記憶媒体であって、
前記命令は、複数のチャネル及び複数のルータからなるネットワークオンチップ（ＮｏＣ）を生成するステップを含み、前記ＮｏＣは、関連するシステムオンチップ（ＳｏＣ）フロアプラン及びＮｏＣトポロジに基づいて、前記ＮｏＣの前記複数のチャネルのうち１つ以上のチャネルに配置される１つ以上のパイプライン・ステージを有して構成される非一時的コンピュータ可読記憶媒体。
【請求項１０】
請求項９に記載の非一時的コンピュータ可読記憶媒体であって、
前記命令は、
前記ＮｏＣの前記複数のチャネルの各々について、前記ＮｏＣの前記１つ以上のチャネルの各々への出力を取り扱う前記複数のルータのうち対応する１つに、当該対応するルータのセットアップ時間及び当該対応するルータ内のタイミング経路に基づいて、出力レジスタを生成するステップをさらに含む非一時的コンピュータ可読記憶媒体。
【請求項１１】
請求項９に記載の非一時的コンピュータ可読記憶媒体であって、
前記命令は、
前記１つ以上のチャネルの各々に関連する前記複数のルータの１対間のクロック周波数及び前記１つ以上のチャネルの各々の長さに基づいて、前記ＮｏＣの前記複数のチャネルの各々についての前記１つ以上のパイプライン・ステージの数を決定するステップと、
前記数に基づいて、前記複数のチャネルの各々についての前記１つ以上のパイプライン・ステージを生成するステップと、
をさらに含む非一時的コンピュータ可読記憶媒体。
【請求項１２】
請求項１１に記載の非一時的コンピュータ可読記憶媒体であって、
前記命令は、前記複数のチャネルの各々について生成された前記１つ以上のパイプライン・ステージの各々を、前記複数のチャネルの各々のワイヤ遅延に基づいて配置するステップをさらに含む非一時的コンピュータ可読記憶媒体。
【請求項１３】
請求項１１に記載の非一時的コンピュータ可読記憶媒体であって、
前記命令は、前記複数のルータの各々と前記複数のルータのうちの１の隣接するルータとの１対間の前記１つ以上のパイプライン・ステージの数に基づいて、前記複数のルータの各々におけるバッファを調整するステップをさらに含む非一時的コンピュータ可読記憶媒体。
【請求項１４】
請求項１３に記載の非一時的コンピュータ可読記憶媒体であって、
前記複数のルータの各々における前記バッファを調整するステップは、前記複数のルータの各々と前記複数のルータのうちの前記１の隣接するルータとの前記１対間のスループット要求に基づいてなされる非一時的コンピュータ可読記憶媒体。
【請求項１５】
請求項１４に記載の非一時的コンピュータ可読記憶媒体であって、
前記命令は、前記スループット要求に基づいて、前記複数のルータの各々に関連する１つ以上の仮想チャネルのサイズを設定するステップをさらに含む非一時的コンピュータ可読記憶媒体。
【請求項１６】
請求項１３に記載の非一時的コンピュータ可読記憶媒体であって、
前記１つ以上のパイプライン・ステージの各々はバッファサプリメントとして利用されるように構成され、
前記複数のルータの各々における前記バッファを調整するステップは、前記複数のルータの各々によってバッファサプリメントとして利用される前記１つ以上のパイプライン・ステージに基づいてなされる方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に記載の方法及び実施例は、インターコネクト（interconnect）アーキテクチャに関し、特に、インターコネクトのパイプライニング・ソリューションを有するネットワークオンチップ（ＮｏＣ）を自動的に生成するアーキテクチャに関する。
【背景技術】
【０００２】
チップ上のコンポーネントの数は、高集積度化、システムの複雑化及びトランジスタ寸法の小型化の故に急激に増加している。複雑なシステムオンチップ（ＳｏＣｓ：System-on-Chips）は、例えば、プロセッサコア、ＤＳＰ、ハードウェアアクセラレータ、メモリ及びＩ／Ｏのような様々なコンポーネントを含んでいてもよい。その一方で、チップマルチプロセッサ（ＣＭＰｓ：Chip Multi-Processors）は、多数の同種のプロセッサコア、メモリ及びＩ／Ｏサブシステムを有していてもよい。ＳｏＣ及びＣＭＰの両方のシステムにおいて、チップ上のインターコネクトは、様々なコンポーネント間の高パフォーマンス通信をもたらす上で役割を果たす。従来のバス及びクロスバーベースのインターコネクトの寸法的な制限の故に、チップ上の多数のコンポーネントをインターコネクト（相互接続）する対応策としてネットワークオンチップ（ＮｏＣ）が登場している。ＮｏＣは、ポイント・トゥー・ポイント（point-to-point）物理リンクを用いて互いに相互接続されている複数のルーティングノードによって形成されている世界共通の通信インフラストラクチャーである。
【０００３】
メッセージは送信元（source）から入れられて、当該送信元ノードから複数の中間ノード及び物理リンクを通って送信先（destination）に送信される。その後、送信先のノードは、当該メッセージを放出し、当該メッセージを送信先にもたらす。以下、用語「コンポーネント」、「ブロック」、「ホスト」または「コア」は、ＮｏＣを用いて相互接続されている様々なシステムコンポーネントに言及する際に、互いに置き換え可能に区別無く用いられる。用語「ルータ」及び「ノード」も、互いに置き換え可能に区別無く用いられる。一般化の喪失なしに、相互接続されている複数のコンポーネントを有するシステム自体は、「マルチコアシステム」と称される。
【０００４】
ルータが互いに接続してシステムネットワークを形成することが可能な、複数の実現可能なトポロジがある。両方向リング（図１（ａ）に示すようなもの）、２−Ｄ（２次元）メッシュ（図１（ｂ）に示すようなもの）及び２−Ｄトーラス（図１（ｃ）に示すようなもの）は、関連技術におけるトポロジの例である。メッシュ及びトーラスは、２．５−Ｄ（２．５次元）または３−Ｄ（３次元）構造にも拡張され得る。図１（ｄ）には、３−ＤメッシュＮｏＣが示されている。図１（ｄ）においては、３層（３レイヤ）の３×３の２ＤメッシュＮｏＣが互いに重ねられて示されている。ＮｏＣルータは、２以下の追加ポートを有しており、その一方が上層レイヤに接続されており、他方が下層レイヤに接続されている。この例の中間層レイヤ内のルータ１１１は、両方のポートを有しており、一方が上層レイヤ内のルータに接続されており、他方が下層レイヤ内のルータに接続されている。ルータ１１０及び１１２は、下層メッシュレイヤ及び上層メッシュレイヤの各々配されている。従って、ルータ１１０及び１１２は、それぞれ接続されているアッパーフェーシングポート（upper facing port）１１３及びロアーフェーシングポート（lower facing port）のみを有している。
【０００５】
パケットは、様々なコンポーネント間の相互通信のメッセージ伝送単位である。ルーティングは、パケットが送信元から送信先に送信されるネットワークのルータ及び物理リンクのセットからなる経路（パス）の特定を含む。コンポーネントは、１または複数のルータの１または複数のポートに接続されており、これらのポートの各々は独自のＩＤを有している。パケットは、中間ルータによって用いられる送信先のルータ及びポートのＩＤ情報を有しており、それによってパケットが送信先コンポーネントにルーティングされる。
【０００６】
ルーティング技術の例には、全てのパケットに対してＡからＢへの同一の経路を選択することを伴う決定論的ルーティングを含む。このルーティング形式は、ネットワークの状態に依存しないものであり、アンダーレイネットワーク（underlying network）に存在するだろうパスダイバーシティ（pass diversities）に亘る負荷をバランシングしないものである。しかし、このような決定論的ルーティングは、ハードウェアに実装され得、パケットの順序を維持し、ネットワークレベルデッドロック（network level deadlocks）が無くなり得る。最短経路ルーティングは、遅延（レイテンシ：latency）を最小化する。なぜならば、このようなルーティングは、送信元から送信先へのホップの数を減少させるからである。このため、最短経路は、２つのコンポーネントの間の通信に関して最も低パワーの経路でもあり得る。次元オーダールーティング（Dimension-order routing）は、２−Ｄ、２．５−Ｄ及び３−Ｄメッシュネットワーク内の決定論的最短経路ルーティングの１つの形式である。このルーティングスキームにおいて、メッセージは、当該メッセージが最終的な送信先に到達するまで特定の順序で座標（coordinates）の各々に沿ってルーティングされる。例えば、３−Ｄメッシュネットワークにおいて、あるものは、最初に、送信先ルータのＸ座標と同一のＸ座標のルータに到達するまでＸ次元（X dimension）に沿ってルーティングし得る。次に、メッセージは方向転換してＹ次元（Y dimension）に沿ってルーティングされ、最終的にもう１つの方向転換をし、メッセージが最終的な送信先ルータに到達するまでＺ次元に沿って移動する。次元順ルーティングは、最少の方向転換かつ最短経路のルーティングであり得る。
【０００７】
図２（ａ）は、２次元メッシュ内のＸＹルーティングの一例を図解で示している。さらに具体的には、図２（ａ）は、ノード「３４」からノード「００」までのＸＹルーティングを示している。図２（ａ）の例において、コンポーネントの各々は、１つのルータの１つのポートのみに接続されている。パケットは、最初に、当該パケットが、Ｘ座標が送信先のＸ座標と同一であるノード「０４」に達するまでＸ軸に亘ってルーティングされる。次に、当該パケットは、当該パケットが送信先ノードに達するまでＹ軸に亘ってルーティングされる。
【０００８】
１もしくは複数のルータまたは１もしくは複数のリンクが存在しない不均一メッシュトポロジ（heterogeneous mesh topology）において、次元順ルーティングは、特定の送信元及び送信先ノード間において不可能であり得、代替経路が取られなければならない。この代替経路は最短または最少の方向転換のものではないであろう。
【０００９】
ソースルーティング及びテーブルを用いたルーティングは、ＮｏＣにおいて用いられる他のルーティングの例である。アダプティブルーティングは、ネットワークの状態に応じてネットワーク上の２つの点の間で取られる経路を動的に変更する。このルーティングの形式は、分析及び実装するには複雑であり得る。
【００１０】
ＮｏＣインターコネクトは、複数の物理的ネットワークを含んでいてもよい。物理ネットワークの各々に亘って複数の仮想ネットワークが存在してもよく、異なるタイプのメッセージが異なる仮想ネットワークを通じて伝送される。この場合、物理リンクまたはチャネルの各々において、複数の仮想チャネルが存在する。この複数の仮想チャネルの各々は、両終点（end points）において専用のバッファを有していてもよい。任意の所定のクロックサイクルにおいて、１つの仮想チャネルのみが物理チャネル上でデータを伝送可能である。
【００１１】
ＮｏＣインターコネクトは、ワームホールルーティングを用いてもよい。ワームホールルーティングにおいて、大きなメッセージまたはパケットは、フリット（flit）（フローコントロールディジット（flow control digits）とも称される）として知られる小さな断片（piece）に分解される。最初のフリットはヘッダフリットであり、ペイロードデータ（payload data）と共にそのパケットのルートの情報及びキーメッセージレベルの情報を保持し、当該メッセージに付随している後続の全てのフリットのルーティング態様を定める。任意的に、１または複数のボディフリットは、ヘッドフリットに続いており、データの残りのペイロードを含んでいる。最後のフリットはテイルフリットであり、当該テイルフリットは、最後のペイロードを包含しているのに加えて、当該メッセージについての接続を閉じるためのブックキーピング（bookkeeping）の役割を果たす。ワームホールフローコントロールにおいて、仮想チャネルがしばしば実装されている。
【００１２】
物理チャネルは、仮想チャネル（ＶＣｓ）と称される独立した多数の論理チャネルに時分割化（time slice）される。ＶＣｓは、パケットをルーティングする複数の独立した経路を提供するが、これらの経路は、物理チャネルにおいて時間多重化される。仮想チャネルは、チャネルに亘ってパケットのフリットの取り扱いを調整するために必要なステート（state）を保持する。少なくとも、このステートは、ルートのネクストホップに関する現在ノードの出力チャネル及び仮想チャネルの状態（アイドル、リソース待ち、またはアクティブ）を特定する。当該仮想チャネルは、パケットのうちの現在ノードにおいてバッファリングされているフリット及び次のノードにおいて利用できるフリットバッファの数へのポインターを含んでもよい。
【００１３】
「ワームホール」は、メッセージがチャネルに亘って伝送される経路において役割を果たす。すなわち、次のルータにおける出力ポートを短くでき、全てのメッセージが到来する前に受信データがヘッドフリットに変換され得る。このことは、ヘッドフリットの到来時においてルータが迅速にルートを定め、その後、後のやりとりからオプトアウト（opt out）することを可能にする。メッセージがフリット毎に伝送されるため、当該メッセージはその経路に沿って異なったルータにおいていくつかのフリットバッファを占有してもよく、これがワームのようなイメージを生成する。
【００１４】
様々なエンドポイント、並びに様々なメッセージのために用いられる経路及び物理ネットワーク間のトラフィックに基づいて、ＮｏＣインターコネクトの様々な物理チャネルが様々なレベルの負荷及び輻輳下に置かれ得る。ＮｏＣインターコネクトの様々な物理チャネルの容量は、チャネルの幅（物理的な線の数）及び当該チャネルが動作するクロック周波数によって決定される。ＮｏＣの様々なチャネルは、異なったクロック周波数で動作してもよく、かつ様々なチャネルはそのチャネルのバンド幅要求に基づいて異なった幅を有していてもよい。チャネルにおけるバンド幅要求は、そのチャネルを通るフロー及びバンド幅値によって判定される。様々なＮｏＣチャネルに亘って通過するフローは、様々なフローによって取られるルートによって影響を受ける。メッシュまたはトーラスＮｏＣにおいて、送信元ノード及び送信先ノードのペアの間で長さまたはホップ数が等しい複数のルートが存在し得る。例えば、図２（ｂ）において、ノード３４とノード００との間の標準的なＸＹルートに加えて、ＹＸルート２０３または送信元から送信先までの間に２以上の方向転換を行うマルチターン（multi-turn）ルート２０２のような更なるルートが利用可能である。
【００１５】
様々なトラフィック速度低下に対して静的に割り当てられる経路を有するＮｏＣにおいて、様々なチャネルにおける負荷は、様々なフローに対してルートをインテリジェントに選択することによって調整されてもよい。多数のトラフィックフロー及び相当なパスダイバーシティが存在する場合、経路は、全てのＮｏＣチャネル上の負荷がほとんど均一にバランスされるように選択され得、一点でのボトルネックの発生が防止される。一度ルーティングがなされると、ＮｏＣのチャネル幅は、当該チャネルにおけるフローのバンド幅要求に基づいて判定され得る。残念ながら、チャネル幅は、タイミングまたは配線の過密等の物理的なハードウェアデザインの制約の故に、勝手に大きくすることができない。最大チャネル幅があり得るので、単一のＮｏＣチャネルの最大バンド幅に限定がかかる。
【００１６】
さらに、メッセージが短い場合、物理チャネルの拡幅は、大きいバンド幅を達成することに貢献しないこともある。例えば、パケットが６４ビット幅を有する単一のフリットパケットである場合、どんなにチャネルが広くても、当該チャネルを通る全てのパケットが同一であれば、当該チャネルはデータサイクル毎に６４ビットしか伝送できないだろう。従って、チャネル幅は、ＮｏＣ内のメッセージのサイズによっても制限される。ＮｏＣチャネルの最大幅におけるこれらの制限の故に、チャネルはルートのバランシングにもかかわらず十分なバンド幅を持たない場合がある。
【００１７】
上述のバンド幅の問題に対処するために、マルチ並列物理ＮｏＣｓ（multi parallel physical NoCs）が使用されてもよい。ＮｏＣの各々はレイヤと称されてもよく、マルチレイヤＮｏＣアーキテクチャが形成される。ホストは、ＮｏＣレイヤにメッセージを投入する。その後、当該メッセージは、ＮｏＣレイヤ上の送信先に向けてルーティングされる。ここで、当該メッセージは当該ＮｏＣレイヤから当該ホストに送信される。従って、レイヤの各々は、多かれ少なかれ互いに独立して動作し、レイヤ間のやりとりは投入及び放出時にのみに発生してもよい。図３（ａ）は、２レイヤのＮｏＣを示している。この図において、２つのＮｏＣレイヤは、左と右に互いに隣り合って示されており、ホストが左図及び右図の両方において複製されているＮｏＣに接続されている。この例において、１つのホストは、２つのルータに接続されている。第１のレイヤ内のルータはＲ１として示され、第２のレイヤのルータはＲ２として示されている。この例において、マルチレイヤＮｏＣは、３Ｄ  ＮｏＣとは異なる。すなわち、マルチレイヤは単一のシリコンダイ上にあり、同一のシリコンダイ上のホスト間の通信の高いバンド幅要求を満たすために用いられる。メッセージは、一方のレイヤから他方のレイヤには行かない。明確にするために、本願では、マルチレイヤＮｏＣに関して水平面内の左図と右図を用いて、垂直方向に互いに重ねて示される３Ｄ  ＮｏＣと区別する。
【００１８】
図３（ｂ）において、レイヤの各々のルータＲ１及びＲ２にそれぞれ接続されているホストが示されている。ルータの各々は、ディレクショナルポート（directional ports）３０１を用いてレイヤ内において他のルータと接続されており、投入及び排出ポート（injection and ejection ports）３０２を用いてホストに接続されている。ブリッジ論理回路（bridge-logic）３０３は、ホストと２つのＮｏＣレイヤとの間にあって、送出されるメッセージのためのＮｏＣレイヤを判定してもよく、当該メッセージをホストからＮｏＣレイヤに送信し、かつ当該２つのＮｏＣレイヤから入ってくるメッセージ間のアービトレーション（arbitration）及び多重化（multiplexing）を行ってこれらをホストに送信する。
【００１９】
マルチレイヤＮｏＣにおいて、必要とされるレイヤの数は、システム内の全てのトラフィックフローの合計バンド幅要求、様々なフローによって用いられるルータ、メッセージサイズ分布、最大チャンネル幅等のような因子の数に依存してもよい。設計においてＮｏＣインターコネクト内のＮｏＣレイヤの数が決定されると、様々なメッセージ及びトラフィックフローが異なったＮｏＣレイヤに亘ってルーティングされてもよい。さらに、異なったレイヤが、ルータ、チャンネル及び接続性の数において異なったトポロジ（topologies）を有するようにＮｏＣインターコネクトを設計することもできる。異なるレイヤ内のチャンネルは、チャンネルに亘って移動するフロー及びそのバンド幅要求に基づいた異なった幅を有してもよい。
【００２０】
ＮｏＣインターコネクトにおいて、トラフィックプロファイルが一様でない場合かつ一定量の不均一性がある場合（例えば、特定のホストが他よりも頻繁に互いにやりとり（talk）する場合）、インターコネクト性能は、ＮｏＣトポロジに多く依存し得、様々なホストが互いに関するトポロジ及びそれらが接続されているルータに関するトポロジにおいて配される。例えば、２つのホストが互いに頻繁にやりとりしてより高いバンド幅を必要とする場合、これらは互いに隣り合って配されるべきである。このことは、この通信のレイテンシ（latency）を低減し、それによって全体の平均レイテンシが低減され、この通信の大きいバンド幅がもたらされるべきルータノード及びリンクの数が低減されるだろう。２つのホストを互いにすぐ近くに移動させることは、特定の他のホストを遠ざけることになる。なぜならば、全てのホストは、互いに重なることなく２Ｄ平面ＮｏＣトポロジ内に収まらなければならないためである。従って、トレードオフが行われるべきであり、かつホストは全てのホストの間のバンド幅とレイテンシの対での（pair-wise）要求の検討を行った後に配置されるべきであり、それによって全体コスト及び性能メトリクス（metrics）が最適化される。コスト及び性能メトリクスは、ルータホップの数における全ての通信ホストの間の平均の構造的レイテンシ、またはホップ数におけるホストの全てのペアの間のバンド幅の合計及びホストの全ての間の距離の合計、またはこれらの組み合わせを含んでもよい。この最適化の問題は、非決定性多項式時間困難（ＮＰ困難）であると知られており、かつヒューリスティック（heuristic）ベースの手法がしばしば用いられる。システム内のホストは、互いに対し形状及びサイズが異なっていても良く、このことが２Ｄ平面ＮｏＣトポロジ内にこれらを配置すること、空白を殆ど残さずに最適にパッキングすること、及びホストの重なり合いを回避することにおける追加的な複雑性をもたらす。
【００２１】
トラフィックプロファイルの最適化の１つの態様は、図４にて図示したように、パイプライン・ステージの配置を含む。図４に示されるポイント・トゥー・ポイントの例において、それらの間に４０６−１及び４０６−２のような入力及び出力チャネルを有する２つのルータＲ１  ４０２及びＲ２  ４０４がある。各々のチャネル４０６は、４１２−１を経て（４０６−１を使用してルータ１（Router 1）からルータ２（Router 2）へ）及び４１２−２ を経て（４０６−２を使用してルータ２（Router 2）からルータ１（Router 1）へ）データを伝送するように構成され、伝送データ（又は制御）とは反対方向のフローのクレジット信号を伴っている。このようなクレジット信号は、チャネル４０６−１に関して４１４−１及びチャネル４０６−２に関して４１４−２として示されている。各々のルータ４０２／４０４は、データ管理のための、クロック、一つ以上のバッファ及び内部フリップフロップを含む。データ伝送ルータは、更に、データがルータ１（Router 1）からルータ２（Router 2）へ伝送される場合に４１６−１として、データがルータ２（Router 2）からルータ１（Router 1）へ伝送される場合に４１６−２として示される登録ステージを含むことができる。さらに、受信ルータは、ルータ１（Router 1）からのデータがルータ２（Router 2）によって受信される場合に４１８−１として、ルータ２（Router 2）からのデータがルータ１（Router 1）によって受信される場合に４１８−２として示されるＦＩＦＯを含むことができる。タイミング制御又は性能要求を満たすために、４０２／４０４間のチャネル４０６は４０８−１及び４０８−２などのチャネル４０６内の一つ以上のパイプライン・ステージ（以下、パイプライン・ステージ４０８と総称する）を用いることができる。パイプライン・ステージ４０８は、トラフィックフローを制御するためにフリップフロップ（例えばＪＫ、データ／遅延、その他）のようなハードウェアエレメントを含むことができる。一つ以上のパイプライン・ステージ４０８は、４１０−１及び４１０−２などの出力レジスタ（以下、出力レジスタ４１０と総称する）として用いられてもよく、これらは各ルータ４０２／４０４の出力チャネルで使用され、トラフィックフローを制御する。所定のルータ４０２／４０４は、ルータを経る全てのトラフィックを取り扱う１つのバッファを使用することができるか、あるいは、またルータによって管理されるチャネルの各入力／出力対のためのバッファを使用することができる。さらに、各々のパイプライン・ステージ４０６をトラフィックが流れるに従い、パイプライン・ステージで実行されるフリップフロップに基づいて、トラフィックはタイミング及び・又は性能要求を満たすように制御されてもよい。更に、パイプライン・ステージ４０６は、それが適当な出力ポートに送られる前に、ルーティング計算（ＲＣ）、仮想チャネル割当て（ＶＡ）、スイッチ割当て（ＳＡ）、スイッチ・トラバーサル（switch traversal：ＳＴ）をすることを管理するように構成されることができる。
【００２２】
関連技術には、パイプライン・ステージの配置についてオートメーション化のソリューションは無く、システム・デザイナーはＮｏＣを構築するときに、最適状態に及ばない状態のパイプライン・ステージを利用することがある。更に、ＮｏＣの複雑さが増加するに従い、パイプライン・ステージの配置及び利用を決定することの難しさが増加する。
【発明の概要】
【課題を解決するための手段】
【００２３】
本願は、複数のチャネル及び複数のルータから成るネットワークオンチップ（ＮｏＣ）を生成することに向けられている。当該ＮｏＣは、関連するシステムオンチップ（ＳｏＣ）フロアプラン（floorplan）及びＮｏＣトポロジに基づいて、ＮｏＣの複数のチャネルのうち１つ以上に配置される１つ以上のパイプライン・ステージで構成することができる。
【００２４】
本願の態様は、これらに限定されないが、ルータ間の距離（例えば、ポイント・トゥー・ポイント・トランザクションについて）、チャネルの長さ、クロック周波数、ワイヤ遅延（例えば、ｍｍ／クロック・サイクル）及びルータ自身内のタイミング経路を含むいくつかのパラメータに基づいて、複数のルータに結合された複数の出力チャネル上に１つ以上のパイプライン・ステージを構成することを有する方法を含み得る。ルータは異なるタイミングを有し得るので（それらは、ルータを経るトラフィックを管理するため、別々のクロック、バッファ及びフリップフロップを有するので）、パイプライン・ステージのこのような実装（インプリメンテーション）は、各ルータ又はルータの組合せによって異なり、従って、パイプライン・ステージの構成を変更することが必要となる場合がある。パイプライン・ステージを規定するパラメータは、所望の実装に応じて、ＮｏＣを生成する仕様において提供されるか、又は、ＮｏＣトポロジ及びＳｏＣフロアプランから導出することができる。実装されたパイプライン・ステージは、タイミングの制御又は性能要求を満たすために用いられ得る。
【００２５】
本願の態様は、処理を実行する命令を記憶するコンピュータ可読記憶媒体を含むことができる。その命令は、これらに限定されないが、ルータ間の距離（例えば、ポイント・トゥー・ポイント・トランザクションについて）、チャネルの長さ、クロック周波数、ワイヤ遅延（例えば、ｍｍ／クロック・サイクル）及びルータ自身内のタイミング経路（timing path）を含むいくつかのパラメータに基づいて、複数のルータに結合された複数の出力チャネル上に１つ以上のパイプライン・ステージを構成することを含み得る。
【００２６】
本願の態様は、異種又は異種のメッシュ、リング、又はトーラス配置の複数のルータによって相互接続された複数のコアを含むネットワークオンチップ（ＮｏＣ）構成について、限定的ではないが、ルータ間の距離（例えば、ポイント・トゥー・ポイント・トランザクションについて）、チャネルの長さ、クロック周波数、ワイヤ遅延（例えば、ｍｍ／クロック・サイクル）及びルータ自身内のタイミング経路を含むいくつかのパラメータに基づいて、複数のルータに結合された複数の出力チャネル上に１つ以上のパイプライン・ステージを構成することを有する方法を含み得る。
【００２７】
本願の態様は、ルータ及びチャネル詳細抽出モジュール、パイプライン・パラメータ選択モジュール及びパイプライン・ステージ実装（インプリメンテーション）モジュールを含むことができる。ルータ及びチャネル詳細抽出モジュールは、ルータ及びパイプライン・ステージがインプリメント（実装）されることになるそれぞれの出力チャネルの詳細を取り出す（retrieve）ように構成され得る。このような詳細は、１例において、ＮｏＣインターコネクトの仕様から抽出することができる。パイプライン・パラメータ選択モジュールは、コンテキストにおける出力チャネルに実装されることを必要とするパイプライン・ステージの数を計算するために取り入れられるパラメータを特定するように構成することができる。そのようなパラメータは、これらに限定的されないが、送信元及び送信先ルータの一方または両方における、出力チャネルの長さ、ワイヤ遅延及び出力レジスタ、クロック周波数、及びクロックサイクルの数を含み得る。パイプライン・ステージ実装モジュールは、パイプライン・パラメータ選択モジュールによって特定されるパラメータのうちの１つ以上を取り入れ、当該取り入れられたパラメータに基づいて、コンテキストにおける出力チャネルに必要とされるパイプライン・ステージの数を計算するように構成することができる。パイプライン・ステージ実装モジュールによって特定された数のパイプライン・ステージは、その後関係ある出力チャネルに適切に組み込まれることができる。
【図面の簡単な説明】
【００２８】
【図１】図１（ａ）、図１（ｂ）、図１（ｃ）及び図１（ｄ）は、双方向リング、２Ｄメッシュ、２Ｄトーラス及び３ＤメッシュＮｏＣトポロジの例を示す図である。
【図２（ａ）】図２（ａ）は、関連技術の双方向メッシュにおけるＸＹルーティングの一例を示す図である。
【図２（ｂ）】図２（ｂ）は、送信元ノードと送信先ノードとの間の３つの異なったルートを示す図である。
【図３（ａ）】図３（ａ）は、関連技術の２レイヤＮｏＣインターコネクトの一例を示す図である。
【図３（ｂ）】図３（ｂ）は、関連技術におけるホストと複数のＮｏＣレイヤとの間のブリッジ論理回路を示す図である。
【図４】図４は、２つのルータ間のパイプライニングの一例を示す図である。
【図５（ａ）】図５（ａ）は、１つの実施例による、出力チャネル上の出力レジスタの位置決めについてのフローダイアグラムである。
【図５（ｂ）】図５（ｂ）は、１つの実施例による、出力チャネルに必要なパイプライン・ステージの数を特定するためのフローダイアグラムである。
【図６】図６は、１つの実施例による、パイプライン・ステージに基づくルータのバッファ調整の一例を示す図である。
【図７】図７は、１つの実施例による、パイプライン・ステージに基づく仮想チャネルの使用の一例を示す図である。
【図８】図８は、１つの実施例による、本願明細書において記載されている実施例が実装され得るコンピュータ／サーバのブロック図である。
【発明を実施するための形態】
【００２９】
以下の詳細な説明は、本出願の図面及び実施例のさらなる詳細を提供するものである。図面間で重複する要素の参照符号及び説明は、明確性のために省略される。明細書に亘って使用される用語は、例示であり、限定することを意図したものではない。例えば、用語「自動的（automatic）」の使用は、本出願の実施例を実施する当業者の所望の実施に基づいて、完全に自動的な実行または特定の実装形態に亘るユーザまたは管理者の制御を含む半自動的な実行を含んでもよい。
【００３０】
実施例において、複数のルータ及びチャネルを含むＮｏＣは自動的に生成されることができる。このような生成において、ＮｏＣは、関連するシステムオンチップ（ＳｏＣ）フロアプラン及びＮｏＣトポロジに基づいて、ＮｏＣの複数のチャネルのうち１つ以上（１つ又は複数）に配置される１つ以上のパイプライン・ステージを有して構成される。このようなパイプライン・ステージは、他の同様なパラメータの中で、出力チャネルの出力レジスタを実装する決定、所定のポイント・トゥー・ポイント伝送のためのパイプラインの数、及びチャネル上のパイプライン・ステージの距離及び位置に基づいて利用されることができる。ルータ・パイプライン・ステージはまた、これらに限定されないが、パケット／メッセージが適当な出力ポートに送られる前に、ルーティング計算（ＲＣ）、仮想チャネル割当て（ＶＡ）、スイッチ割当て（ＳＡ）、スイッチ・トラバーサル（ＳＴ）を含む機能を引き受けるように構成されることができる。更に、ＮｏＣの各ルータの一つ以上のバッファは、パイプライン・ステージの利用に基づいて構成されることができる。このような構成は、仕様又はレジスタトランスファレベル（ＲＴＬ）を更新することを含むことができ、又はＮｏＣの生成の間に行われてもよい。
【００３１】
本願の１つの態様において、ネットワークオンチップ（ＮｏＣ）インターコネクト・アーキテクチャは、関連するシステムオンチップ（ＳｏＣ）フロアプラン及びＮｏＣトポロジに基づいて、複数のチャネル、複数のルータ、及びＮｏＣの複数のチャネルのうち１つ以上のチャネルに配置される１つ以上のパイプライン・ステージを構成することによって生成され得る。ＮｏＣの、仕様、パラメータ、及びバンド幅、レイテンシ、及びＱｏＳ要求が、出力チャネルへの実装に必要な出力レジスタの数、必要なパイプライン・ステージの数、及び特定された数のパイプライン・ステージが配置されることになる位置を決定する際に重大な役割を果たす。
【００３２】
本願の１つの態様において、以下に、チャネル又は「複数のチャネル」とも称される出力チャネルは、対応するルータのセットアップ時間及び対応するルータ内のタイミング経路に基づいて、１つ以上の対応するルータ又はチャネルの出力を取り扱うルータに動作可能に（operatively）接続された１つ以上の出力レジスタを組み込み、実装するように構成され得る。
【００３３】
本願の他の態様において、所定のＮｏＣにおける出力チャネルに要求されるパイプライン・ステージの数は、関係するチャネルに関連した１対のルータ間のチャネル長、ワイヤ遅延、出力レジスタ、クロック消費、及びクロック周波数等のパラメータの１つ又は組合せに基づいて決定され得る。計算されたパイプライン・ステージの数に基づいて、関係するチャネルの組にパイプラインが生成され、実装され得る。本願の１つの態様において、実装されたパイプライン・ステージは、バッファサプリメントとして利用されるように構成され得る。これに基づいて、１つ以上の関係するルータの組の内部バッファが調整され得る。本願の１つの態様において、各々のパイプライン・ステージは、パイプライン・ステージに期待される性能及び機能の種類のカスタマイズを可能にする、異なるコンポーネント、特性、属性及びパラメータを有していてもよい。例えば、ルータ間のバックプレッシャー状態を除去し、取り扱い、又は低減するために、他のコンポーネントのなかで、１つ以上のフリップフロップ、中継局、単位レイテンシの同期（clocked）リピータ、２重（two-fold）記憶容量が１つ以上のパイプライン・ステージの一部として組み込まれていてもよい。
【００３４】
実施例において、パイプライン・ステージの構成及び使用は、いくつかのパラメータに基づいていてもよい。そのようなパラメータは、これらに限定されないが、ルータ間の距離（例えば、ポイント・トゥー・ポイント・トランザクションについて）、チャネルの長さ、クロック周波数、ワイヤ遅延（例えば、ｍｍ／クロック・サイクル）及びルータ自身内のタイミング経路を含み得る。各々のルータはルータを経るトラフィックを管理するための別々のクロック、バッファ及びフリップフロップを有し得るので、ルータは、異なるタイミングを有することがあり、パイプライン・ステージの構成を変化させることを必要とする場合がある。パラメータは、ＮｏＣを生成するための仕様において提供されるか、又は所望の実装に応じて、ＮｏＣトポロジ及びＳｏＣフロアプランから導出され得る。
【００３５】
実施例において、生成されたＮｏＣのルータは、ルータの出力チャネルにおける１つ以上の出力レジスタと関連することができる。ルータにおける出力レジスタの使用は、ルータ内の１つ以上のフリップフロップのセットアップ時間及びホールド時間に基づいていてもよい。更に、各ルータは、他のルータとのポイント・トゥー・ポイント・トランザクションにおけるタイミング経路に基づいてある量のクロックが割り当てられてもよい。実施例において、ルータで消費されるクロックとセットアップ時間の合計が少なくとも１クロックサイクルであるとき、ルータの出力チャネルにレジスタを配置することができる。例えば、出力チャネルを利用するポイント・トゥー・ポイント接続のルータの出力チャネルについては、ポイント・トゥー・ポイント・トランザクションにおいてクロックは他のルータと共有されるので、ルータのクロック消費は、ｘ＜１クロックサイクルである「ｘ」である。「ｘ＋ルータ・セットアップ時間」が少なくとも１クロックサイクルである場合、出力レジスタは、ルータのその出力チャネルについて配置することができる。このような評価は、ＮｏＣのルータの各々の出力チャネルの各々について行うことができる。他の実装もまた可能であり、本出願はこの実施例に限定されない。例えば、所望の実装に応じて、ルータにおける出力レジスタの使用はＮｏＣ仕様によって指定することができる。
【００３６】
他の実施例において、出力レジスタの位置決め及び要求特定はまた、信号が送出される所定のルータの最後の内部レジスタにおける組合せロジック・ステージ（combinatorial logic stages）、他のパラメータのうちの出力信号、ホールド時間、セットアップ時間、ルータのワイヤ遅延、スキュー及びワイヤ負荷（wireloads）の数の１つ又は組合せに基づいて構成することができる。１つの例として、ルータの最後の組合せロジック・ステージを経る時間＋セットアップ時間＋スキュー＋ワイヤ遅延がおよそ１のとき、出力レジスタを出力チャネルに組み込むことができる。他の例として、ルータの最後の組合せロジック・ステージを経る時間＋セットアップ時間＋スキュー＋ワイヤ遅延が１より大なるとき、出力レジスタばかりでなくルータ設計内に更なるパイプライニング必要とされるかもしれない。同様に、ワイヤ負荷を独立に、又は他の属性（アトリビュート）とともに用い、出力レジスタの位置決めを決定することができる。
【００３７】
パイプライン・ステージが必要な場合、ＮｏＣの１つ以上のルータの各々の出力チャネルが、出力チャネルに配置すべきパイプライン・ステージの数を決定するために評価されることができる。本願の１つの態様において、利用されるパイプライン・ステージの数は、出力チャネルの長さ、ワイヤ遅延及び出力レジスタに基づいていてもよい。実施例において、パイプライン・ステージの数は、所定の出力チャネルについて、ワイヤ遅延及びチャネルの長さに基づいて決定することができる。例えば、チャネル長を「Ｌ」及びワイヤ遅延を「Ｗ」とすると、そのチャネルに使用されるパイプライン・ステージの数を推定する１つの方法は、Ｌ及びＷの比（例えば、Ｌ／Ｗ）に基づくことができる。パイプライン・ステージの数は、最も近い数まで丸めこんだ比として決定することができ、又はポイント・トゥー・ポイント状態にあるルータ間のクロック消費を取り入れることができる。このような比を使用することによって、送信側及び受信側との間に、例えばバッファなどを挿入することによるワイヤ遅延によって生じるサイクル・タイムを低減するようにパイプライニングを実施することができる。例えば、与えられた出力チャネルについて、出力ルータがクロック「ｘ」を消費し、対応する入力ルータがクロック「ｙ」を有していると仮定する。従って、ｘ＋ｙがルータの入力及び出力で消費されるクロック・サイクルの量である。パイプライン・ステージの数は、追加の消費クロックサイクル（Ｌ／Ｗ）＋ｘ＋ｙに基づいて構成することができ、当該数値は丸め込んでもよい。所望の実装に応じて、他の実装もまた可能である。例えば、出力レジスタはまた、パイプライン・ステージとして計数することができ、１つの出力チャネルについてのパイプライン・ステージの数は出力レジスタの使用数から１だけデクリメントすることができる。パイプライン・ステージは、更に、ラッチ、フリップフロップ及び／又はハンドシェーク・コントローラのバンクからなる同期パイプライン・バッファを含んでいてもよい。
【００３８】
本願の１つの態様において、ある出力チャネルについて一旦パイプライン・ステージの数が決定されたならば、パイプライン・ステージの位置決めは１つ以上のパラメータに基づいて決定することができる。実施例において、パイプライン・ステージの配置は、ワイヤ遅延、出力チャネルのクロック、クロック周波数、フリップフロップのセットアップ時間、及びフリップフロップのホールド時間、クロックスキュー、及びワイヤ負荷に基づいて構成することができる。１つの例において、出力チャネルに沿ったフリップフロップの各々の間の距離を「ｗ」とする。このような場合、１つの例として、ｗをワイヤ遅延、ｆをクロック周波数としたとき、ｗ'＝ ｗ［１−ｆ（セットアップ時間＋ホールド時間）］であり得る。上記の例において、パイプライン・ステージは、各々のフリップフロップについて、距離ｗ'で互いに間隔を置いて配置することができる。出力レジスタリングが送信ルータとチャネル上の第１のパイプライン・ステージとの間の間隔を決定するのに用いられない場合、送信ルータの出力組合せロジックにおいて消費される時間を組み込むことができる。例えば、ｘを送信組合せロジックにおいて消費されるクロックの一部であるとすると、ルータ及び第１のパイプライン・ステージ間の間隔「ｗ"」はｗ'＊（１−ｘ）として計算される。同様に、受信ルータでの入力チャネル信号と当該受信ルータの第１のレジスタ・ステージとの間の組合せロジックに基づいて、最後のパイプライン・ステージと受信ルータとの間の間隔を決定することができる。受信組合せロジックにおいて消費されるクロックの一部をｙとすると、受信ルータと当該チャネルの最後のパイプラインとの間の間隔「ｗ'''」はｗ'＊（１−ｙ）として計算される。
【００３９】
図５（ａ）は、１つの実施例による、出力レジスタを実装（インプリメント）するフローダイアグラムの１例を示すフローダイアグラム５００である。フローは、５０１から始まり、ルータ及びそれぞれの出力チャネルの詳細がＮｏＣ設計及びハードウェア技術ライブラリから取り出さ（retrieve）れる。本開示は１つのルータ（入力又は出力）及び１つの出力チャネルに関して説明するが、これは説明の明快さのためであり、本方法はいかなる数のルータ及びこれに対応するチャネルについて実行することができる。
【００４０】
５０２において、信号が送出されるルータの最後の内部レジスタにおける組合せのロジック状態の数が決定される。５０３において、本方法は、他の同様なパラメータのうち、セットアップ時間、ホールド時間、スキュー、ルータ内のワイヤ遅延、及びワイヤ負荷の１つ又は組合せを決定するように構成されている。５０４において、ルータにおける最後の組合せロジック・ステージを経る時間＋セットアップ時間＋スキュー＋ワイヤ遅延、の合計時間がおよそ１であるかに関して評価される。当該合計が約１である場合、５０５において、出力チャネル上に１つ以上の出力レジスタが組み込まれ、実装される。５０６において、当該合計が１より大きい場合、出力レジスタと同様に、さらにルータ設計中にパイプライニングが必要となり得る。
【００４１】
図５（ｂ）は、１つの実施例による、実装されるパイプライン・ステージの数の計算の１例を示すフローダイアグラム５５０である。フローは、５５１から始まり、ルータ及びそれぞれの出力チャネルの詳細がＮｏＣ設計及びハードウェア技術ライブラリから検索される。実装されるパイプラインの数は、他のパラメータの中で、限定的ではないが、出力チャネルの長さ、ワイヤ遅延、クロック周波数、ルータ・クロック消費及び出力レジスタを含む多くのパラメータに基づいているが、本実施例の方法は、実装されるパイプライン・ステージの数を決定するためのワイヤ遅延、チャネル長及びクロック消費を取り入れている。
【００４２】
５５２において、考慮中の出力チャネルの長さ「Ｌ」が計算される。５５３において、ワイヤ遅延「Ｗ」が計算される。５５４において、チャネル長及びワイヤ遅延の比が計算され、Ｌ／Ｗが得られる。この段階又は一旦ステージの総数が計算された後にこの比は丸められてもよい。５５５において、他のパラメータのうち、例えば出力チャネルのクロック周波数、セットアップ時間、ホールド時間、出力レジスタの存在、スキュー及び配線負荷などの他のいかなるパラメータを取り入れることができる。５５６において、コンテキストにおける出力チャネルに対応する入力及び出力ルータのクロック消費が評価され、比Ｌ／Ｗに加えることができ、出力チャネルに実装するのに必要とされるパイプライン・ステージの総数を決定することができる。必要な場合、パイプライン・ステージの数は丸められることができる。
【００４３】
実施例において、各ルータのバッファは、入力及び出力接続の各々でのパイプライン・ステージの数に基づいて変化され得る。バッファは、レイテンシ要求に適応するように拡張され得る。図６は、１実施例によるパイプライン・ステージに基づくバッファ調整の例６００を示している。ルータ６０２及び６０４のバッファは、例えば、全ての目的のため本明細書においてその全体を援用する米国特許出願１３／８８６，７９４（NET013）に記載されているように、クレジット・システム上で動作することができる。クレジット・システムが使用されるとき、バッファ・レイテンシは、以下において６０６と総称するパイプライン・ステージ６０６−１，６０６−２，６０６−３，６０６−４及び６０６−５の使用に基づいて調整されることが必要となる場合がある。図６の実施例において、ポイント・トゥー・ポイント接続のルータ６０２及び６０４の間に配置されている５つのパイプライン・ステージ６０６がある。データがクロックサイクル毎に伝送されるとき、各パイプライン・ステージ６０６はデータに作用し、各バッファがデータを受信するときに影響を及ぼすことが有り得る。したがって、バッファは、バッファ・サイズＢを５データフリット（flit）だけ増加し（すなわち、Ｂ＝Ｂ＋５）、含まれる５つのパイプライン・ステージについて５サイクルだけレイテンシを増やすように構成されることができる。図６は、他の実施例における、ルータの伝送Ｔｘ側での任意の出力レジスタ及びルータの受信Ｒｘ側での入力ＦＩＦＯを示している。示されているように、任意の出力レジスタ６１２−１はルータ１（Router 1）のＴｘ側に構成することができ、任意の出力レジスタ６１２−２はまた、ルータ２（Router 2）のＴｘ側に構成することができる。同様に、入力ＦＩＦＯ ６１０−１はルータ２（Router 2）のＲｘ側に構成され、入力ＦＩＦＯ ６１０−２はルータ１（Router 1）のＲｘ側に構成される。他の実施例において、以下にクラウド６０８と総称するクラウド６０８−１，６０８−２，６０８−３，６０８−４の組合せは、１つ以上のルータのＴｘ側及びＲｘ側に構成されることができ、クラウド６０８は出力／入力信号をルータの出力レジスタ／入力ＦＩＦＯに動作可能に接続することができる。例えば、クラウド６０８−１は、ルータ１（Router 1）の出力レジスタ６１２−１をルータ１（Router 1）からの出力信号に接続する。同様に、クラウド６０８−２は、ルータ２（Router 2）の入力ＦＩＦＯ  ６１０−１をルータ１（Router 1）からの入力信号に接続する。１つの実施例において、与えられたクラウド６０８のロジック・ステージの組合せの数がパイプライン・ステージ６０６と同様に出力レジスタ６１２を決定するために重要である。例えば、Ｔｘクラウド（６０８−１又は６０８−４）がおよそ〜１サイクルを要するとき、出力レジスタ６１２が必要とされる。出力レジスタ６１２が使用されると決定される場合、Ｔｘクラウド時間はパイプライン・ステージ計算において使用されず、そうでなければ、パイプライン・ステージ計算において使用される。より多くの時間がＴｘクラウドで要するとき、追加のパイプライン・ステージ６０６の必要性もより多くなりやすい。クロック周波数で動作することができないためルータ設計を変更する必要が生じることを避けるには、Ｔｘクラウドによる時間が＜１でなければならない点に留意すべきである。Ｒｘクラウド（６０８−２又は６０８−３）でもまた＜１サイクルでなければならず、この値はチャネル上のパイプライン・ステージ６０６の数を決定するのに用いることができる。
【００４４】
図６の他の実施例において、２つのルータ６０２及び６０４の間にスループット要求があってもよい。例えば、第１のルータ６０２がデータ毎に「ｘ」クロックを消費し、第２のルータ６０４はデータ毎に「ｙ」クロックを消費すると仮定する。消費される合計クロックが１サイクル未満の場合、バッファはパイプライン・ステージ６０６の数及び消費されるクロックに基づいてバッファ・サイズＢが増加され、ｘ＋ｙのスループット要求を満たすように構成され得る。１つの例において、新たなバッファ・サイズＢ’は、Ｂ’＝Ｂ＋（パイプライン・ステージの数／（ｘ＋ｙ））として計算することができる。従って、図６の例６００において、２つのルータ６０２及び６０４によって消費されるクロックが半サイクルである場合、バッファ・サイズは、５／２データフリット（flit）（すなわちＢ＝Ｂ＋（５／２））増やされ得る。他の実施例もまた可能であり、本開示はこれらの実施例によって限定されない。所望の実施によって、バッファ・サイズは、フロー制御信号クレジットのみならず仕様において規定されているスループット要求に基づいて変更され得る。他の実施例において、パイプライン・ステージ６０６は、ルータ６０２及び６０４間の通信のための追加の入力バッファとして利用され得る。このような実施例において、ルータ６０２及び６０４におけるバッファは、パイプライン・ステージ６０６の各々が単一のバッファ・ステージとして機能することができるので、ルータ間の往復時間をカバーするために完全に拡張される必要はない。従って、チャネルの受信端での合計の入力バッファの要求は減少されるであろう。図６において、ルータ１（Router 1）からルータ２（Router 2）へのチャネルにおいて、２つのパイプライン・ステージ６０６−１及び６０１−２が２つの追加の入力バッファ・ステージとして使われることができ、従って、このチャネルについてのルータ６０４での入力バッファ要求を最大２まで減少させることができる。同様に、ルータ６０４からルータ６０２へのチャネルについてのルータ６０２での入力バッファ要求は最大３まで減少させることができる。
【００４５】
図７は、１つの実施例による、パイプライン・ステージ７０８に基づく仮想チャネルの使用の例７００を示している。ルータ７０２及び７０４の各々のバッファには、仮想チャネルのスループット要求に基づいて、以下において７０６として総称する仮想チャネルのうち、７０６−１，７０６−２，７０６−３がルータ７０２に、７０６−４，７０６−５，７０６−６がルータ７０４に割り当てられることができる。実施例７００は、ルータ７０２及び７０４の１つ以上に構成された出力レジスタ及び入力ＦＩＦＯを示している。ここで、出力レジスタ７１４−１，７１４−２はルータのＴｘ側に構成され、入力ＦＩＦＯ  ７１２−１，７１２−２はルータのＲｘ側に構成されている。さらに、入力／出力信号は、以下において７１０と総称する複数の計算クラウド７１０−１，７１０−２，７１０−３及び７１０−４によって、ルータのレジスタ／ＦＩＦＯに動作可能に結合されることができ、設計を変更することを必要とせずにルータが所望のクロック周波数で動作することができるためには、クラウド７１０の各々を経る時間は＜１サイクルでなければならない。図７の実施例７００において、示されているルータ対７０２／７０４の各々に３つの仮想チャネル７０６が有り、これらルータ間でのポイント・トゥー・ポイント通信を容易にする。仮想チャネル７０６が同等のスループットを有する場合、バッファは仮想チャネル７０６の各々で等しく分けられることができる。しかし、仮想チャネル７０６はまた、同一ではないスループット要求を有することができ、仮想チャネル７０６の間でのどのようなバッファ割当ての変更も完全に本出願の範囲内であることを理解すべきである。図６に示したように、バッファ割当ては、バッファの増加に基づいて実施することができる。仮想チャネル７０６の各々のバッファ割当ては、仮想チャネル７０６の各々のスループット要求に基づいて、比例して割り当てられることができる。仮想チャネル７０６のスループット要求に基づいて、ルータ７０２及び７０４に関連する１つ以上の仮想チャネル７０６のサイズはまた、評価され規定されることができる。
【００４６】
図８は、実施例が実装されるコンピュータシステム８００の例を示している。コンピュータシステム８００は、Ｉ／Ｏ装置８３５、ストレージ８６０、及び当業者に知られているように１つ以上のユニットを実行可能なプロセッサ８１０を含ことができるサーバ８０５を有している。本明細書において、「コンピュータ可読媒体」は、実行のためにプロセッサ８１０に命令を提供するために関わるいかなる媒体をも意味し、限定的ではないが、光ディスク、磁気ディスク、リードオンリーメモリ、ランダムアクセスメモリ、固体（solid state）デバイス及びドライブ、又は電子情報を格納するのに適している他のいかなる種類の有形の媒体、又は搬送波のような媒体を含み得るコンピュータ読み取り可能な信号媒体などのコンピュータ可読記憶媒体の形態を有していてもよい。Ｉ／Ｏ装置は、キーボード、マウス、タッチ装置、又は音声コマンドなどの入力装置を利用することができるユーザインタフェース８４０及びオペレータインタフェース８４５からの入力を処理する。
【００４７】
サーバ８０５はまた、ポータブル・ハードディスク、光学式媒体（ＣＤ又はＤＶＤ）、ディスク媒体、又はコンピュータが実行可能なコードを読み取ることができる他のいかなる媒体などの着脱可能なストレージを含み得る外部ストレージ８５０に接続さていてもよい。サーバはまた、ユーザへデータ及び他の情報、またユーザからの追加情報要求を出力するディスプレイなどの出力装置８５５に接続さていてもよい。サーバ８０５からユーザ・インタフェース８４０、オペレータ・インタフェース８４５、外部ストレージ８５０及び出力装置８５５への接続は、８０２．１１規格、ブルートゥース（登録商標）(Bluetooth（登録商標））又はセルラ・プロトコルなどの無線プロトコル、あるいはケーブル又は光学ファイバなどの物理的伝送メディアを経たものであってもよい。したがって、出力装置８５５は、さらにユーザと対話する入力装置としての機能を果たすことができる。
【００４８】
プロセッサ８１０は、１つ以上のモジュールを実行することができる。システム８００は、ルータ及びチャネル詳細抽出モジュール８１１、パイプライン・パラメータ選択モジュール８１２及びパイプライン・ステージ実装モジュール８１３を含むことができる。ルータ及びチャネル詳細抽出モジュール８１１は、ルータ及びパイプライン・ステージがインプリメント（実装）されるそれぞれの出力チャネルの詳細を取り出すように構成され得る。このような詳細は、ＮｏＣインターコネクトの仕様から抽出されることができる。パイプライン・パラメータ選択モジュール８１２は、コンテキストにおける出力チャネルに実装されることを必要とするパイプライン・ステージの数を計算するために取り入れられるパラメータを特定するように構成されることができる。そのようなパラメータは、これらに限定的されないが、送信元及び送信先ルータの一方または両方における、出力チャネルの長さ、ワイヤ遅延及び出力レジスタ、クロック周波数、及びクロックサイクルの数を含み得る。パイプライン・ステージ実装モジュール８１３は、パイプライン・パラメータ選択モジュール８１２によって特定されるパラメータのうちの１つ以上を取り入れ、当該取り入れられたパラメータに基づいて、コンテキストにおける出力チャネルに必要とされるパイプライン・ステージの数を計算するように構成することができる。例えば、所与のチャネル長「Ｌ」及びワイヤ遅延「Ｗ」に対し、当該チャネルに使用されるパイプライン・ステージの数を見積もる１つの方法は、Ｌ及びＷの比（例えば、Ｌ／Ｗ）に基づく方法である。パイプライン・ステージの数は、最も近い数まで丸めこんだ比として決定することができ、又はポイント・トゥー・ポイント状態にあるルータ間のクロック消費を取り入れることができる。例えば、与えられた出力チャネルを仮定すると、出力ルータはクロック「ｘ」を消費し、対応する入力ルータはクロック「ｙ」を有している。従って、ｘ＋ｙがルータの入力及び出力で消費されるクロックサイクルの量である。パイプライン・ステージの数は、追加の消費クロックサイクル（Ｌ／Ｗ）＋ｘ＋ｙに基づいて構成することができ、当該数値は丸め込んでもよい。パイプライン・ステージ実装モジュール８１３によって特定されるパイプライン・ステージの数は、その後関係ある出力チャネルに適切に組み込まれることができる。
【００４９】
いくつかの実施例において、コンピュータシステム８００は、クラウドのようなコンピューティング環境において実施されることができる。このようなコンピューティング環境は、１つ以上の他の装置として実施されるコンピュータシステム８００、あるいはこれらの装置にネットワークによって通信可能に接続され、またストレージ装置に接続されたコンピュータシステム８００を含むことができる。このような装置は、可動ユーザ機器（ＵＥ：user equipment）（例えば、スマートフォン、車両及び他の機械中の装置、人間や動物によって運ばれる装置、など）、モバイル装置（例えば、タブレット、ノートやラップトップパソコン、パーソナルコンピュータ、携帯テレビ、ラジオ、など）、固定使用にデザインされた装置（例えば、デスクトップ・コンピュータ、他のコンピュータ、情報キオスク、１つ以上のプロセッサを内蔵する、及び／又はそれらに接続されたテレビ、ラジオ、など）を含むことができる。
【００５０】
本詳細な説明のいくつかの部分は、コンピュータ内のアルゴリズムとして及び動作の記号表現として表されている。これらのアルゴリズム的記載及び記号表現は、情報処理分野の当業者によって、他の当業者に新しい考えの本質を最も効果的に伝えるために用いられる手段である。アルゴリズムは、所望の最終状態または結果を導く一連の定義されたステップである。実施例において、実行されるステップは、具体的な成果を達成するための具体的な量の物理的操作を必要とする。
【００５１】
さらに、本出願の他の実施例は、本明細書に開示されている実施例の仕様及び実行を考慮することによって、当業者に明らかに理解される。様々な説明された実施例の態様及び／またはコンポーネントは、単一でまたは任意の組み合わせで用いられてもよい。仕様及び実施例は例示として理解されることが意図され、本出願の真の範囲及び精神は、添付の特許請求の範囲によって示されることが意図されている。
【図１（ａ）】
2017500810.tif 000003
【図１（ｂ）】
2017500810.tif 000004
【図１（ｃ）】
2017500810.tif 000005
【図１（ｄ）】
2017500810.tif 000006
【図２（ａ）】
2017500810.tif 000007
【図２（ｂ）】
2017500810.tif 000008
【図３（ａ）】
2017500810.tif 000009
【図３（ｂ）】
2017500810.tif 000010
【図４】
2017500810.tif 000011
【図５（ａ）】
2017500810.tif 000012
【図５（ｂ）】
2017500810.tif 000013
【図６】
2017500810.tif 000014
【図７】
2017500810.tif 000015
【図８】
2017500810.tif 000016
【手続補正書】
【提出日】平成28年7月22日(2016.7.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のチャネル及び複数のルータを有するネットワークオンチップ（ＮｏＣ）を生成するステップであって、前記ＮｏＣは、関連するシステムオンチップ（ＳｏＣ）フロアプラン及びＮｏＣトポロジに基づいて、前記ＮｏＣの前記複数のチャネルのうち１つ以上のチャネルに配置される１つ以上のパイプライン・ステージを有して構成されるステップと、
前記ＮｏＣの前記複数のチャネルの各々について、前記ＮｏＣの前記１つ以上のチャネルの各々への出力を取り扱う前記複数のルータのうち対応する１つに、当該対応するルータのセットアップ時間及び当該対応するルータ内のタイミング経路に基づいて、出力レジスタを生成するステップと、
当該生成されたＮｏＣ及び当該生成された出力レジスタによって物理的ＳｏＣを構成するステップと、
を有する方法。
【請求項２】
請求項１に記載の方法であって、
前記１つ以上のチャネルの各々に関連する前記複数のルータの１対間のクロック周波数及び前記１つ以上のチャネルの各々の長さに基づいて、前記ＮｏＣの前記複数のチャネルの各々についての前記１つ以上のパイプライン・ステージの数を決定するステップと、
前記決定するステップによって決定された前記数に基づいて、前記複数のチャネルの各々についての前記１つ以上のパイプライン・ステージを生成するステップと、
を有する方法。
【請求項３】
請求項２に記載の方法であって、
前記複数のチャネルの各々について生成された前記１つ以上のパイプライン・ステージの各々を、前記複数のチャネルの各々のワイヤ遅延に基づいて配置するステップをさらに含む方法。
【請求項４】
請求項２に記載の方法であって、
前記複数のルータの各々と前記複数のルータのうちの１の隣接するルータとの１対間の前記１つ以上のパイプライン・ステージの数に基づいて、前記複数のルータの各々におけるバッファを調整するステップをさらに含む方法。
【請求項５】
請求項４に記載の方法であって、
前記複数のルータの各々における前記バッファを調整するステップは、前記複数のルータの各々と前記複数のルータのうちの前記１の隣接するルータとの前記１対間のスループット要求に基づいてなされる方法。
【請求項６】
請求項５に記載の方法であって、
前記スループット要求に基づいて、前記複数のルータの各々に関連する１つ以上の仮想チャネルのサイジングを行うステップをさらに含む方法。
【請求項７】
請求項４に記載の方法であって、
前記１つ以上のパイプライン・ステージの各々はバッファサプリメントとして利用されるように構成され、
前記複数のルータの各々における前記バッファを調整するステップは、前記複数のルータの各々によってバッファサプリメントとして利用される前記１つ以上のパイプライン・ステージに基づいてなされる方法。
【請求項８】
処理を実行する命令を記憶する非一時的コンピュータ可読記憶媒体であって、
前記命令は、
複数のチャネル及び複数のルータからなるネットワークオンチップ（ＮｏＣ）を生成するステップであって、前記ＮｏＣは、関連するシステムオンチップ（ＳｏＣ）フロアプラン及びＮｏＣトポロジに基づいて、前記ＮｏＣの前記複数のチャネルのうち１つ以上のチャネルに配置される１つ以上のパイプライン・ステージを有して構成されるステップと、
前記ＮｏＣの前記複数のチャネルの各々について、前記ＮｏＣの前記１つ以上のチャネルの各々への出力を取り扱う前記複数のルータのうち対応する１つに、当該対応するルータのセットアップ時間及び当該対応するルータ内のタイミング経路に基づいて、出力レジスタを生成するステップと、
当該生成されたＮｏＣ及び当該生成された出力レジスタによって物理的ＳｏＣを構成するステップと、
を有する非一時的コンピュータ可読記憶媒体。
【請求項９】
請求項８に記載の非一時的コンピュータ可読記憶媒体であって、
前記命令は、
前記１つ以上のチャネルの各々に関連する前記複数のルータの１対間のクロック周波数及び前記１つ以上のチャネルの各々の長さに基づいて、前記ＮｏＣの前記複数のチャネルの各々についての前記１つ以上のパイプライン・ステージの数を決定するステップと、
前記数に基づいて、前記複数のチャネルの各々についての前記１つ以上のパイプライン・ステージを生成するステップと、
をさらに含む非一時的コンピュータ可読記憶媒体。
【請求項１０】
請求項９に記載の非一時的コンピュータ可読記憶媒体であって、
前記命令は、前記複数のチャネルの各々について生成された前記１つ以上のパイプライン・ステージの各々を、前記複数のチャネルの各々のワイヤ遅延に基づいて配置するステップをさらに含む非一時的コンピュータ可読記憶媒体。
【請求項１１】
請求項９に記載の非一時的コンピュータ可読記憶媒体であって、
前記命令は、前記複数のルータの各々と前記複数のルータのうちの１の隣接するルータとの１対間の前記１つ以上のパイプライン・ステージの数に基づいて、前記複数のルータの各々におけるバッファを調整するステップをさらに含む非一時的コンピュータ可読記憶媒体。
【請求項１２】
請求項１１に記載の非一時的コンピュータ可読記憶媒体であって、
前記複数のルータの各々における前記バッファを調整するステップは、前記複数のルータの各々と前記複数のルータのうちの前記１の隣接するルータとの前記１対間のスループット要求に基づいてなされる非一時的コンピュータ可読記憶媒体。
【請求項１３】
請求項１２に記載の非一時的コンピュータ可読記憶媒体であって、
前記命令は、前記スループット要求に基づいて、前記複数のルータの各々に関連する１つ以上の仮想チャネルのサイジングを行うステップをさらに含む非一時的コンピュータ可読記憶媒体。
【請求項１４】
請求項１１に記載の非一時的コンピュータ可読記憶媒体であって、
前記１つ以上のパイプライン・ステージの各々はバッファサプリメントとして利用されるように構成され、
前記複数のルータの各々における前記バッファを調整するステップは、前記複数のルータの各々によってバッファサプリメントとして利用される前記１つ以上のパイプライン・ステージに基づいてなされる非一時的コンピュータ可読記憶媒体。
【手続補正２】
【補正対象書類名】図面
【補正対象項目名】図３（ｂ）
【補正方法】変更
【補正の内容】
【図３（ｂ）】
2017500810.tif 000017
【国際調査報告】
2017500810.tif 000018
2017500810.tif 000019