(57)【特許請求の範囲】
【請求項１】
処理を実行するための命令を記憶する非一時的コンピュータ可読媒体であって、前記命令は、
複数のパラメータを含むネットワークオンチップ（ＮｏＣ）仕様を設計するステップであって、前記複数のパラメータは、ＮｏＣベースのシステムの設計及び性能シミュレーションを容易にするように構成された情報を示し、前記複数のパラメータは、前記ＮｏＣベースのシステムの複数のルータ及び相互接続性の情報を含み、当該情報には前記ＮｏＣベースのシステムのメッセージ依存関係に付随している依存関係情報、バンド幅情報、及び属性情報が含まれるステップと、
複数のルータ及び相互接続性を含む前記ＮｏＣベースのシステムを生成するステップであって、前記ＮｏＣベースのシステムの前記複数のルータ及び相互接続性は、仕様要求を満たすように構成されているステップと、
前記ＮｏＣベースのシステムの生成に利用される前記仕様の前記複数のパラメータを利用するステップであって、前記ＮｏＣベースのシステムの性能シミュレーションを実行するステップと、を含むことを特徴とする非一時的コンピュータ可読媒体。
【請求項２】
請求項１に記載の非一時的コンピュータ可読媒体であって、前記バンド幅情報は、特定時間のアイソクロナス・トラフィックのバンド幅を保証するための１つ以上のパラメータを含むことを特徴とする非一時的コンピュータ可読媒体。
【請求項３】
請求項１に記載の非一時的コンピュータ可読媒体であって、前記バンド幅情報は、トラフィック・ジッタを示す１つ以上のパラメータを含むことを特徴とする非一時的コンピュータ可読媒体。
【請求項４】
請求項１に記載の非一時的コンピュータ可読媒体であって、前記依存関係情報は、前記ＮｏＣベースのシステムの複数の要素間の依存関係、又は前記ＮｏＣベースのシステム内の複数の種類のメッセージ間の依存関係を示すことを特徴とする非一時的コンピュータ可読媒体。
【請求項５】
請求項１に記載の非一時的コンピュータ可読媒体であって、前記依存関係情報は、前記ＮｏＣベースのシステムの複数の要素間の非依存関係、又は前記ＮｏＣベースのシステム内の複数の種類のメッセージ間の非依存関係を示すことを特徴とする非一時的コンピュータ可読媒体。
【請求項６】
請求項１に記載の非一時的コンピュータ可読媒体であって、前記バンド幅情報は、１つ以上のトランザクションのメッセージのバンド幅要求、前記１つ以上のトランザクションの前記メッセージのクオリティ・オブ・サービス要求、前記１つ以上のトランザクションの前記メッセージのレイテンシ要求、及び前記１つ以上のトランザクションのレイテンシ要求、のうちの少なくとも１つを含むことを特徴とする非一時的コンピュータ可読媒体。
【請求項７】
請求項１に記載の非一時的コンピュータ可読媒体であって、前記相互接続性の情報は、前記ＮｏＣベースのシステムのトラフィックシミュレーションを示す前記ＮｏＣベースのシステムの１つ以上のメッセージに関するトランザクション情報、前記ＮｏＣベースのシステムのメッセージ伝送に関するプロトコル情報、及び前記ＮｏＣベースのシステムのメッセージに関するシーケンスを示すオーダ情報のうちの少なくとも１つをさらに含むことを特徴とする非一時的コンピュータ可読媒体。
【請求項８】
請求項７に記載の非一時的コンピュータ可読媒体であって、前記トランザクション情報は１つ以上のトランザクションを含み、前記１つ以上のトランザクションの各々はホップのシーケンスを示し、前記ホップのシーケンスのホップの各々は、送信元エージェントから送信先エージェントへの１つ以上のメッセージを示し、
前記ＮｏＣベースのシステムを生成するステップは、前記トランザクション情報に基づいて前記ＮｏＣベースのシステムを構成して、前記１つ以上のトランザクションの各々に関する前記ホップのシーケンスに従って、前記送信元エージェントから前記送信先エージェントへ各々のホップに関する前記１つ以上のメッセージを伝送するステップを含むことを特徴とする非一時的コンピュータ可読媒体。
【請求項９】
請求項８に記載の非一時的コンピュータ可読媒体であって、前記トランザクション情報は、前記１つ以上のトランザクションの少なくとも１つのサブセットに関するシステムレベルシミュレーションを容易にするように構成されていることを特徴とする非一時的コンピュータ可読媒体。
【請求項１０】
請求項１に記載の非一時的コンピュータ可読媒体であって、前記属性情報は、１つ以上のトランザクションのメッセージのサイズ、前記１つ以上のトランザクションの前記メッセージの優先度、前記１つ以上のトランザクションの前記メッセージのクオリティ・オブ・サービス(ＱｏＳ)、及び前記１つ以上のトランザクションの前記メッセージのオーダリング要求、のうちの少なくとも１つを示すメッセージ属性情報を含むことを特徴とする非一時的コンピュータ可読媒体。
【請求項１１】
請求項１に記載の非一時的コンピュータ可読媒体であって、前記命令は、前記性能シミュレーションを実行するための前記仕様の前記複数のパラメータから、トラフィック・トレース・データベースを生成するステップをさらに含み、前記トラフィック・トレース・データベースは１つ以上のトラフィック・トレース・ファイルを含み、前記１つ以上のトラフィック・トレース・ファイルの各々は、トランザクションを開始するための情報を示すことを特徴とする非一時的コンピュータ可読媒体。
【請求項１２】
請求項１１に記載の非一時的コンピュータ可読媒体であって、前記トランザクションを開始するための前記情報は、前記仕様の前記複数のパラメータに基づいて判定されることを特徴とする非一時的コンピュータ可読媒体。
【請求項１３】
請求項１２に記載の非一時的コンピュータ可読媒体であって、前記命令は、前記複数のパラメータ及び１つの統計モデルに基づいて、複数のトランザクションから前記トランザクションを選択するステップをさらに含むことを特徴とする非一時的コンピュータ可読媒体。
【請求項１４】
請求項１に記載の非一時的コンピュータ可読媒体であって、前記バンド幅情報は、トランザクションのレート、前記トランザクションのメッセージのレート、及び前記ＮｏＣベースのシステムの１つ以上のホストのポートの容量、のうちの１つを示すことを特徴とする非一時的コンピュータ可読媒体。
【請求項１５】
ネットワークオンチップ（ＮｏＣ）ベースのシステムであって、
予め設計された仕様から構成された複数のルータ及び相互接続を含み、前記仕様は複数のパラメータを含み、前記複数のパラメータは、前記ＮｏＣベースのシステムの設計及び性能シミュレーションを容易にするように構成された情報を示し、前記複数のパラメータは、前記ＮｏＣベースのシステムの前記複数のルータ及び相互接続性の情報を含み、当該情報には前記ＮｏＣベースのシステムのメッセージ依存関係に付随している依存関係情報、バンド幅情報、及び属性情報が含まれ、
前記ＮｏＣベースのシステムにおいて、前記複数のルータ及び相互接続性は、仕様要求を満たすように生成され、
前記ＮｏＣベースのシステムの生成に利用される前記仕様の前記複数のパラメータは、前記ＮｏＣベースのシステム上で実行される性能シミュレーションにおいて利用されるように構成されることを特徴とするＮｏＣベースのシステム。
【請求項１６】
請求項１５に記載のＮｏＣベースのシステムであって、前記複数のパラメータは前記ＮｏＣの接続性情報を含み、加えて、依存関係情報、バンド幅情報及び属性情報のうちの少なくとも１つを含むことを特徴とするＮｏＣベースのシステム。
【請求項１７】
請求項１６に記載のＮｏＣベースのシステムであって、前記バンド幅情報は、特定時間のアイソクロナス・トラフィックのバンド幅を保証するための１つ以上のパラメータを含むことを特徴とするＮｏＣベースのシステム。
【請求項１８】
請求項１５に記載のＮｏＣベースのシステムであって、前記バンド幅情報は、トラフィック・ジッタを示す１つ以上のパラメータを含むことを特徴とするＮｏＣベースのシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に記載の方法及び実施例は、インターコネクト(interconnect)アーキテクチャに関し、特に、ＮｏＣの設計及びシミュレーションに使用され得るトランザクショナル・トラフィック仕様（transactional traffic specification）に関する。
【背景技術】
【０００２】
チップ上のコンポーネントの数は、高集積度化、システムの複雑化及びトランジスタ寸法の小型化によって急激に増加している。複雑なシステムオンチップ（ＳｏＣｓ：System-on-Chips）は、例えば、プロセッサコア、ＤＳＰ、ハードウェアアクセラレータ、メモリ及びＩ／Ｏのような様々なコンポーネントを含んでいてもよい。その一方で、チップマルチプロセッサ（ＣＭＰｓ：Chip Multi-Processors）は、多数の同種のプロセッサコア、メモリ及びＩ／Ｏサブシステムを有していてもよい。ＳｏＣ及びＣＭＰの両方のシステムにおいて、チップ上のインターコネクトは、様々なコンポーネント間の高パフォーマンス通信をもたらす上で役割を果たす。従来のバス及びクロスバーベースのインターコネクトの寸法的な制限の故に、チップ上の多数のコンポーネントをインターコネクト（相互接続）する対応策としてネットワークオンチップ（ＮｏＣ）が登場している。ＮｏＣは、ポイント・トゥー・ポイント（point-to-point）物理リンクを用いて互いに相互接続されている複数のルーティングノードによって形成されている世界共通の通信インフラストラクチャーである。
【０００３】
メッセージは送信元（source）から入れられて、当該送信元ノードから複数の中間ノード及び物理リンクを通って送信先（destination）に送信される。その後、送信先のノードは、当該メッセージを排出し、当該メッセージを送信先にもたらす。以下、用語「コンポーネント」、「ブロック」、「ホスト」または「コア」は、ＮｏＣを用いて相互接続されている様々なシステムコンポーネントに言及する際に、互いに置き換え可能に区別無く用いられる。用語「ルータ」及び「ノード」も、互いに置き換え可能に区別無く用いられる。一般化の喪失なしに、相互接続されている複数のコンポーネントを有するシステム自体は、「マルチコアシステム」と称される。
【０００４】
ルータが互いに接続してシステムネットワークを形成することが可能な、複数の実現可能なトポロジーがある。双方向リング（図１（ａ）に示すようなもの）、２−Ｄ（２次元）メッシュ（図１（ｂ）に示すようなもの）及び２−Ｄトーラス（図１（ｃ）に示すようなもの）は、関連技術におけるトポロジーの例である。メッシュ及びトーラスは、２．５−Ｄ（２．５次元）または３−Ｄ（３次元）構造にも拡張され得る。図１（ｄ）は、３−ＤメッシュＮｏＣが示されている。図１（ｄ）においては、３層（３レイヤ）の３×３の２ＤメッシュＮｏＣが互いに重ねられて示されている。ＮｏＣルータは、２以下の追加ポートを有しており、その一方が上層レイヤに接続されており、他方が下層レイヤに接続されている。この例の中間層レイヤ内のルータ１１１は、両方のポートを有しており、一方が上層レイヤ内のルータに接続されており、他方が下層レイヤ内のルータに接続されている。ルータ１１０及び１１２は、下層メッシュレイヤ及び上層メッシュレイヤの各々配されている。従って、ルータ１１０及び１１２は、それぞれ接続されているアッパーフェーシングポート（upper facing port）１１３及びロアーフェーシングポート（lower facing port）のみを有している。
【０００５】
パケットは、様々なコンポーネント間の相互通信のメッセージ伝送単位である。ルーティングは、パケットが送信元から送信先に送信されるネットワークのルータ及び物理リンクのセットからなる経路（パス）の特定を含む。コンポーネントは、１または複数のルータの１または複数のポートに接続されており、これらのポートの各々は独自のＩＤを有している。パケットは、中間ルータによって用いられる送信先のルータ及びポートのＩＤ情報を有しており、それによってパケットが送信先コンポーネントにルーティングされる。
【０００６】
ルーティング技術の例には、全てのパケットに対してＡからＢへの同一の経路を選択することを伴う決定論的ルーティングを含む。このルーティング形式は、ネットワークの状態に依存しないものであり、アンダーレイネットワーク（underlying network）に存在するであろうパスダイバーシティ（pass diversities）に亘る負荷をバランシングしないものである。しかし、このような決定論的ルーティングは、ハードウェアに実装され得、パケットの順序を維持し、ネットワークレベルデッドロック（network level deadlocks）が無くなり得る。最短経路ルーティングは、遅延を最小化する。なぜならば、このようなルーティングは、送信元から送信先へのホップの数を減少させるからである。このため、最短経路は、２つのコンポーネントの間の通信に関して最も低パワーの経路でもあり得る。次元オーダールーティング（Dimension-order routing）は、２−Ｄ、２．５−Ｄ及び３−Ｄメッシュネットワーク内の決定論的最短経路ルーティングの１つの形式である。このルーティングスキームにおいて、メッセージは、当該メッセージが最終的な送信先に到達するまで特定の順序で座標（coordinates）の各々に沿ってルーティングされる。例えば、３−Ｄメッシュネットワークにおいて、あるものは、最初に、送信先ルータのＸ座標と同一のＸ座標のルータに到達するまでＸ次元（X dimension）に沿ってルーティングし得る。次に、メッセージは方向転換してＹ次元（Y dimension）に沿ってルーティングされ、最終的にもう１つの方向転換をし、メッセージが最終的な送信先ルータに到達するまでＺ次元に沿って移動する。次元順ルーティングは、最少の方向転換かつ最短経路のルーティングであり得る。
【０００７】
図２（ａ）は、２次元メッシュ内のＸＹルーティングの一例を図解で示している。さらに具体的には、図２は、ノード「３４」からノード「００」までのＸＹルーティングを示している。図２（ａ）の例において、コンポーネントの各々は、１つのルータの１つのポートのみに接続されている。パケットは、最初に、当該パケットが、Ｘ座標が送信先のＸ座標と同一であるノード「０４」に達するまでＸ軸に亘ってルーティングされる。次に、当該パケットは、当該パケットが送信先ノードに達するまでＹ軸に亘ってルーティングされる。
【０００８】
１もしくは複数のルータまたは１もしくは複数のリンクが存在しない不均一メッシュトポロジー（heterogeneous mesh topology）において、次元順ルーティングは、特定の送信元及び送信先ノード間において不可能であり得、代替経路が取られなければならない。この代替経路は最短または最少の方向転換のものでないであろう。
【０００９】
ソースルーティング及びテーブルを用いたルーティングは、ＮｏＣにおいて用いられる他のルーティングの例である。アダプティブルーティングは、ネットワークの状態に応じてネットワーク上の２つの点の間で取られる経路を動的に変更し得る。このルーティングの形式は、分析及び実装するには複雑であり得る。
【００１０】
ＮｏＣインターコネクトは、複数の物理的ネットワークを含んでいてもよい。物理ネットワークの各々に亘って複数の仮想ネットワークが存在してもよく、様々なタイプのメッセージが様々な仮想ネットワークを通じて伝送される。この場合、物理リンクまたはチャネルの各々において、複数の仮想チャネルが存在する。この複数の仮想チャネルの各々は、両終点（end points）において専用のバッファを有していてもよい。任意の所定のクロックサイクルにおいて、１つの仮想チャネルのみが物理チャネル上でデータを伝送可能である。
【００１１】
ＮｏＣインターコネクトは、しばしばワームホールルーティングを用いる。ワームホールルーティングにおいて、大きなメッセージまたはパケットは、フリット（flit）（フローコントロールディジット（flow control digits）とも称される）として知られる小さな欠片に分解される。最初のフリットはヘッダフリットであり、ペイロードデータ（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）を有するようにＮｏＣインターコネクトを設計することもできる。様々なレイヤ内のチャネルは、チャネルに亘って移動するフロー及びそのバンド幅要求に基づいた異なった幅を有してもよい。このように多様性に富んだ設計事項によって、所定のシステムに関してルータ、チャネル及び接続性の適切な組合せを決定することは依然として困難かつ時間を浪費するマニュアルプロセスであり、次善又は効果的でない結果に終わることも多い。
【００２０】
ますます多くの標準プロセッサコア、メモリ＆Ｉ／Ｏサブシステム、及び特殊な高速化ＩＰを融合させることにより、システムオンチップ（ＳｏＣｓ）は、次第に洗練され、機能豊富になり、高性能化されつつある。この複雑さに対処するため、ＳｏＣのコンポーネントを接続するネットワークオンチップ（ＮｏＣ）の手法が好評を博している。ＮｏＣは、多数のコンポーネント及びインターフェースに接続性をもたらすことができ、加えて同時にハイレベルの仕様（specification）（スペック）から自動的に生成されることによって迅速な設計終了を可能にする。当該仕様は、接続性、バンド幅及び遅延に関してＳｏＣのインターコネクト要求を描写する。これに加えて、例えば、様々なコンポーネントの位置、プロトコル情報、クロッキング及びパワードメインなどの情報が供給されても良い。ＮｏＣコンパイラはその後、この仕様を使用してＳｏＣに関するＮｏＣを自動的に設計することができる。当該技術分野において、自動的にＮｏＣを合成してトラフィック仕様（traffic specification）に適合させる多数のＮｏＣコンパイラが導入された。このような設計フローにおいて、合成されたＮｏＣはシミュレーションされて、様々な動作環境下のパフォーマンスが評価され、当該仕様が対応するか否かが判定される。このことは、以下のような理由で必要であり得る。ＮｏＣスタイルのインターコネクトは分散型のシステムであり、当該インターコネクトの負荷の下での動的なパフォーマンス特性は静的な予見が困難であり、多岐にわたるパラメータに非常に敏感であり得る、という理由である。
【００２１】
図４は、２つのホストと２つのフローとを有する実施例のシステム４００をフローレベル仕様（flow-level specification）として示している。このようなフローレベル仕様は通常、エッジ重み付き有向グラフ（edge-weighted digraph）の形式であり、グラフ内の各ノードはネットワークにおいてホストであり、エッジは、１つのノードから他のノードへ送られるトラフィックを表わしている。さらに、重みはトラフィックのバンド幅を表わしている。このような仕様は時々、それぞれのフローへのレイテンシ要求（latency requirement）によって注釈を付けられ、伝達時間の制限を示す。システム４００はＣＰＵ４０のような第１のホストとメモリユニット４０４のような第２のホストとの間の接続を、当該間の２つのトラフィックフロー（４０６及び４０８）によって示す。第１のフローはＣＰＵ４０２からメモリ４０４への「ロードリクエスト」４０６であり、第２のフローはメモリ４０４からＣＰＵ４０２に返送される「ロードデータ」４０８である。
【００２２】
このトラフィックフロー情報は、ＮｏＣの仕様内に記述され、ＮｏＣの設計及びシミュレーションに使用される。当該フローレベルの情報を記述する仕様は、以降、フローレベル仕様と称され得る。公知のフローレベル仕様は、他の引用しない制限に加えて、下記の２つの制限を有し得る。公知のフローレベル仕様の第１の制限は、当該仕様に含まれる情報が、ＮｏＣを通じＳｏＣのホスト間のデッドロックフリールーティングを定めるのに不十分であり得ることである。当該フローレベル仕様は、様々なホストのポート間の外部依存性（external dependencies）に関する情報を含んでいるものの、ホストの内部依存関係（internal dependencies）及び／又はメッセージ／パケットは含まれていない。フローレベル仕様の第１の制限は、ポイント・トゥー・ポイントのトラフィックを使用して実行されるネットワークシミュレーションは、フロー・イン・フローレベルの仕様に代表され、相互依存情報などの他の欠落した情報の故に十分に効果的ではないか又は不正確であり得ることである。フローベースのシミュレーションは、各ホストが他のホストの挙動から独立してパケットを送信することを可能にする。リクエスト/応答プロトコルによって引き起こされるトラフィックの相関は、ネットワーク挙動に重大な影響を与え得る。
【００２３】
従って、ＮｏＣには、トラフィックフロー情報を含む仕様を提供することができ、より良い設計及びシミュレーションを容易にすることが要求される。また、統合されたＮｏＣ仕様、設計及びパフォーマンス評価のためにトラフィック仕様を利用してトラフィックのバンド幅及びレイテンシを特定し、メッセージ間の相互依存関係も同様に特定し、相互依存関係をキャプチャするトランザクションベースの仕様が必要とされている。トラフィックはトランザクションとして特定され、各々のトランザクションは多数のポイント・トゥー・ポイントのホップを有する。
【発明の概要】
【課題を解決するための手段】
【００２４】
本願は、ネットワークオンチップ（ＮｏＣ）ベースのシステムをトランザクショナル・トラフィック仕様から生成／開発／設計することに関する命令（Instruction）を格納する非一時的（non-transitory）なコンピュータ読み取り可能な記憶媒体に関する。ある態様において、このようなトランザクショナル・トラフィック仕様は、ＮｏＣベースのシステムの設計及び性能シミュレーションを容易にするように設定された情報を示す複数のパラメータを含み得る。１つの実施例において、ＮｏＣベースのシステムのＮｏＣは当該トランザクショナル・トラフィック仕様から、仕様要求を満たして生成され得る。
【００２５】
１つの実施例において、トランザクショナル・トラフィック仕様は、ＮｏＣを生成し最適化するための情報を提供することができ、既存技術におけるフローレベル仕様のフローレベルエントリと比較した場合にトランザクションベースのエントリを含み得る。このようなトランザクショナル・トラフィック仕様は、複数のパラメータと、接続性、依存関係、バンド幅、レイテンシ、トラフィック・ジッタ(traffic jitter)、属性(attribute) に関する情報及びＮｏＣの設計及び／又はシミュレーションに使用され得る他の必要な情報を示し／定義する情報と、を含み得る。
【００２６】
本願の開示の１つの実施例は、トランザクション・トラフィック仕様を使用してＮｏＣ設計及びシミュレーション向けのシステムを提供する。また、本願の開示の１つの実施例は、トラフィック・トレース・ファイルの生成を容易にし得るトランザクショナル・トラフィック仕様を提供することができる。当該トラフィック・トレース・ファイルに基づいて、設計性能シミュレーションが実行され得る。
【００２７】
実施例に関する上述の及び他の目的、特徴及び利益は、添付の図面と共に以下に示す実施例のより具体的な記載によって明白となるであろう。当該図面内の同様の参照番号は、概して同様の部分を表わす。
【図面の簡単な説明】
【００２８】
【図１（ａ）】図１（ａ）は、双方向リングＮｏＣトポロジーの例を示す図である。
【図１（ｂ）】図１（ｂ）は、２ＤメッシュＮｏＣトポロジーの例を示す図である。
【図１（ｃ）】図１（ｃ）は、２ＤトーラスＮｏＣトポロジーの例を示す図である。
【図１（ｄ）】図１（ｄ）は、３ＤメッシュＮｏＣトポロジーの例を示す図である。
【図２（ａ）】図２（ａ）は、関連技術の双方向メッシュにおけるＸＹルーティングの一例を示す図である。
【図２（ｂ）】図２（ｂ）は、送信元ノードと送信先ノードとの間の３つの異なったルートを示す図である。
【図３（ａ）】図３（ａ）は、関連技術の２レイヤＮｏＣインターコネクトの一例を示す図である。
【図３（ｂ）】図３（ｂ）は、関連技術におけるホストと複数のＮｏＣレイヤとの間のブリッジ論理回路を示す図である。
【図４（ａ）】図４（ａ）は、典型的なフローレベル仕様に従って表わされた２つのホスト及び２つのフローを有する典型的なシステムを示す図である。
【図４（ｂ）】図４（ｂ）は、本願の実施例による２つのホスト間の２つのフローを１つのトランザクションとして有する典型的なシステムを示す図である。
【図５】図５は、本願の実施例によるホスト間のトランザクションを示す図である。
【図６（ａ）】図６（ａ）は、トランザクション向けに構築されたチェーンの例を示す図である。
【図６（ｂ）】図６（ｂ）は、本願の実施例によるチェーン生成アルゴリズムを使用してつくられたトランザクション・チェーンの例を示す図である。
【図７】図７は、実施例が実装され得るコンピュータシステムの例を示す図である。
【発明を実施するための形態】
【００２９】
以下の詳細な説明は、本出願の図面及び実施例のさらなる詳細を提供するものである。図面間で重複する要素の参照符号及び説明は、明確性のために省略される。明細書に亘って使用される用語は、例示であり、限定することを意図したものではない。例えば、用語「自動的（automatic）」の使用は、本出願の実施例を実施する当業者の所望の実施に基づいて、完全に自動的な実行または特定の実装形態に亘るユーザまたは管理者の制御を含む半自動的な実行を含んでもよい。
【００３０】
本明細書に記載の実施例は、複数のパラメータを含むトランザクショナル・トラフィック仕様からネットワークオンチップ（ＮｏＣ）ベースのシステムを生成／開発／設計するための命令を格納する非一時的コンピュータ可読媒体に関する。１つの実施例において、トランザクショナル・トラフィック仕様は、ＮｏＣベースのシステムの性能シミュレーションを容易にするように構成された情報を示す複数のパラメータを含み得る。ＮｏＣベースのシステムのＮｏＣは当該仕様から、仕様要求を満たして生成され得る。
【００３１】
本明細書に記載の実施例は、ＮｏＣを生成し最適化するための情報を含むトランザクショナル・トラフィック仕様に関する。そのようなトランザクショナル・トラフィック仕様は、統合されたＮｏＣ仕様、設計、及び性能評価向けのトラフィック仕様を利用することができる。当該トランザクショナル・トラフィック仕様は、フローレベル仕様内のフローレベルエントリと比較した場合に１つ以上のトランザクションベースのエントリを含む。トランザクショナル・トラフィック仕様はさらに、限定するものではないが、接続性、依存関係、バンド幅、レイテンシ、トラフィック・ジッタ、属性に関する情報及びＮｏＣの設計及び／又はシミュレーションに使用され得る他の必要な情報を含む情報を含み得る。また、トランザクショナル・トラフィック仕様は、トラフィック・トレース・ファイルの生成を容易にすることができる。当該トラフィック・トレース・ファイルに基づいて、パケットがＮｏＣにインジェクトされる性能シミュレーションが遂行され得る。
【００３２】
提案されるシステムの実施例は、トランザクショナル・トラフィック仕様を備えるＮｏＣを開示する。当該仕様は、ＮｏＣのより良い設計若しくはシミュレーション及びその性能／動作に使用され得る。
【００３３】
上述のように、上記した実施例において、ＮｏＣトラフィック要求は、フローレベル仕様を用いて特定される。これらのタイプの仕様は通常、エッジ重み付き有向グラフの形式で表され、グラフ中の各々のノードは、ネットワーク内のホストである。エッジ重み付き有向グラフの各々のエッジは、１のノードからもう１つのノードに送られるトラフィックを表わし、重みは当該トラフィックのバンド幅を示す。このタイプの仕様は時々、各々のフローへのレイテンシ要求で注釈がつけられ、転送時間の制限を示す。
【００３４】
本明細書に記載の実施例は、トランザクションベースのトラフィック仕様に関し、当該仕様は、バンド幅及びトラフィックのレイテンシを特定することができ、また、メッセージ及び／又はホスト間の内部依存関係を特定することができる。内部依存関係をキャプチャするために、トラフィックはトランザクションとして特定され得、各々のトランザクションは多数のポイント・トゥー・ポイントのホップ及び内部依存関係を有する。実施例はさらに、処理を実行するための命令を格納する非一時的コンピュータ可読媒体に関し、当該命令はネットワークオンチップ（ＮｏＣ）ベースのシステムを仕様から生成するステップを含む。当該提案される仕様は、ＮｏＣベースのシステムの性能シミュレーションを容易にするように構成された情報を示す複数のパラメータを含み得る。当該ＮｏＣベースのシステムのＮｏＣは仕様から生成され得、仕様要求を満たす。
【００３５】
１つの実施例において、当該複数のパラメータは、ＮｏＣの接続性情報（connectivity information）、依存関係情報（dependency information）、バンド幅情報（bandwidth information）及び属性情報（attribute information）の１つ又は組み合わせを含み得る。１つの実施例において、バンド幅情報は、特定時間（specified period of time）のアイソクロナス・トラフィック（isochronous traffic）のためのバンド幅を保証する１つ以上のパラメータを含み得る。当該バンド幅情報はさらに、トラフィック・ジッタを示す１つ以上のパラメータを含み得る。依存関係情報は、ＮｏＣの複数の要素間の、又はＮｏＣ内の複数のメッセージ間の依存関係を示し得る。また、依存関係情報は、ＮｏＣの複数の要素間の、又はＮｏＣ内の複数のメッセージ間の非依存関係を示し得る。
【００３６】
１つの実施例において、バンド幅の情報は、１つ以上のトランザクションのメッセージのバンド幅要求、１つ以上のトランザクションのメッセージのサービスのクオリティ（クオリティ・オブ・サービス：quality of service）要求、１つ以上のトランザクションのメッセージのレイテンシ要求、及び１つ以上のトランザクションのレイテンシ要求の１つ又は組み合わせを含み得る。他の実施例において、接続性情報は、ＮｏＣベースのシステムのトラフィックシミュレーションを示すＮｏＣベースのシステムの１つ以上のメッセージに関するトランザクション情報、ＮｏＣのメッセージ伝送に関するプロトコル情報、及びＮｏＣのメッセージに関するシーケンスを示すオーダ情報のうちの１つ又は組み合わせを含み得る。一方で、トランザクション情報は、１つの実施例において、１つ以上のトランザクションを含み得る。当該１つ以上のトランザクションの各々は、ホップのシーケンスを示し得る。当該ホップのシーケンスのホップの各々は、送信元エージェント(source agent)から送信先エージェント（destination agent）への１つ以上のメッセージを示し得る。ＮｏＣの生成は、トランザクション情報に基づいてＮｏＣベースのシステムを構成して、１つ以上のトランザクションの各々に関するホップのシーケンスに従って送信元エージェントから送信先エージェントへの各々のホップに関する１つ以上のメッセージを伝送することを含み得る。他の実施例において、トランザクション情報は、１つ以上のトランザクションの少なくとも１つのサブセットに関するシステムレベルシミュレーションを容易にするように構成され得る。属性情報は、１つの実施例において、１つ以上のトランザクションのメッセージのサイズ、１つ以上のトランザクションのメッセージの優先度、１つ以上のトランザクションのメッセージのＱｏＳ(Quality of Service)、及び１つ以上のトランザクションのメッセージのオーダリング要求(ordering requirements)、のうちの１つ又は組み合わせを含むメッセージ属性情報を含み得る。本明細書に記載のシステムは、当該仕様の当該複数のパラメータに基づいてのＮｏＣのシミュレーションを含み得る。本明細書に記載のシステムは、さらに、シミュレーションを実行するための仕様の複数のパラメータからトラフィック・トレース・データベース（traffic trace database）を生成することを含み得る。当該データベースは１つ以上のトラフィック・トレース・ファイル(traffic trace file)を含み得、当該トラフィック・トレース・ファイルの各々は、トランザクションを開始するための情報を示し得る。トランザクションを開始するためのそのような情報は、当該仕様の当該複数のパラメータに基づいて決定され得る。さらに、本明細書に記載の命令及び／又はシステムは、複数のパラメータ及び１つの統計モデルに基づいて、複数のトランザクションから１つのトランザクションを選択することを含み得る。
【００３７】
他の実施例において、バンド幅情報は、トランザクションのレート（rate）、トランザクションのメッセージのレート、及びＮｏＣベースのシステムの１つ以上のホストのレートのうちの１つ又は組み合わせを含み得る。
【００３８】
１つの実施例において、本願の発明の開示は、仕様から構成されたネットワークオンチップ（ＮｏＣ）ベースのシステムをさらに含み得る。そのような仕様は複数のパラメータを含み得る。当該複数のパラメータは、ＮｏＣベースのシステムの性能シミュレーションを容易にするように構成された情報を示し得る。当該ＮｏＣベースのシステムのＮｏＣは、当該仕様から生成されて仕様要求を満たす。当該複数のパラメータは、限定するものではないが、ＮｏＣの接続性情報、依存関係情報、バンド幅情報及び属性情報のうちの１つ又は組み合わせを含み得る。バンド幅情報は、特定時間のアイソクロナス・トラフィックのバンド幅を保証するための１つ以上のパラメータを含み得る。バンド幅情報は、トラフィック・ジッタを示す１つ以上のパラメータをさらに含み得る。
【００３９】
図４（ｂ）は、４５２及び４５４の２つのホスト間の２つのフローを本願の実施態様による単一のトランザクション４５６として示す模式図４５０を表わしている。従って、図４（ａ）の２つのフローは、単一のトランザクションとして表わされ得る。１つの実施例において、二つのホップ間の単一のトランザクションとして表わすことによって、当該仕様は２つのメッセージ間の関係を保持する。１つの実施例において、当該仕様は、そのような２つ以上のホスト間のトランザクションのコレクション(collection)を含み得る。
【００４０】
フローレベル仕様の代わりに、トランザクションベースのエントリをトラフィック仕様に使用してトラフィックを特定することは、上述の及び他の既知の、フローレベルトラフィック仕様の制限を克服することを補助する。トランザクションベースのエントリを用いて設計された仕様は、区別されずにトランザクショナル・トラフィック仕様とも称され得ることは、十分に理解されるであろう。トランザクショナル・トラフィック仕様を用いることは、ソースルーティングされたシステムにおいて、デッドロックが回避されることを可能にする。当該システムにおいて、デッドロック防止アルゴリズムは、トランザクションのホップ間で暗黙的にエンコードされた内部依存関係を用いることができ、デッドロックフリーのＮｏＣ設計を構築し得る。また、ＮｏＣのより一層正確なシミュレーションを可能にする。リクエストの到来によってトリガされる応答メッセージを有することは、単純化された仕様に起因してより複雑なトラフィック挙動を可能とする。さらに、トランザクショナル・シミュレーションは、潜在的なシステムボトルネック及び単純なポイント・トゥー・ポイントのトラフィックモデルにおいては検出されないデッドロックの問題をハイライトし得る。現実世界のＳｏＣ仕様及びワークロード(workload)に関する広範な評価を通じて、実施例の仕様を含むシミュレーションは、迅速な設計及び評価の反復を継続する単純なポイント・トゥー・ポイントのＮｏＣシミュレーションと比較した場合に、ＮｏＣの性能をより一層効果的に評価し得る。仕様の実施例は、ＮｏＣのトラフィック要求のハイレベルの実態を提供し得る。当該仕様の言語は、アーキテクトがマルチホップ・トランザクションのグループの構造を記述することを可能にし得る。加えて、当該仕様の言語は、当該トランザクション全体におけるプロパティと、同様に、当該トランザクションのホップの各々のプロパティと、の両方をサポートし得る。
【００４１】
１つの実施例において、トランザクショナル・トラフィック仕様は、本明細書において、以降トランザクション・トラフィック仕様とも称し、ＮｏＣの設計、開発及び最適化に用いられ得るトランザクショナル情報を含み得る。当該トランザクショナル・トラフィック仕様は、トラフィック・トレース・ファイルの生成にも用いられ得る。図４（ａ）に示すように、従来の仕様は、エージェント間の対の（ポイント・トゥー・ポイントの）接続性の表示を提供してＮｏＣトラフィックを特定するのみである。しかしながら、ホスト間に要求される接続性は常にポイント・トゥー・ポイントではないであろう。すなわち、パケットは常にホストからホストへ直接伝送されないであろう。しかし、当該接続性は、多数のホスト又は間に含まれるホストを有し得、多数の依存関係を創造し得る。また、多数のパケット／メッセージ自体が相互依存関係を有する可能性もある。上述したように、既知のＮｏＣインターコネクト・システムは、送信元ホスト、１つ以上の中間ホスト（intermediate host）、及び送信先ホストを含み得る。例示において、当該送信元ホスト自体が当該送信先ホストである可能性もあり、また一方では、トランザクションを完成させるためには、多数の中間ホストがなお必要とされ得る。当該トランザクショナル・トラフィック仕様は、相互依存関係、中間ホップ（intermediate hop）及びそのステータスといった、現存する（先行技術の）フローレベル仕様に欠けている全てのトランザクション情報を含み得る。
【００４２】
１つの実施例において、トランザクショナル・トラフィック仕様は、接続性、ホスト／ホップ間の相互依存関係、メッセージ／パケット／フリット間の相互依存関係、バンド幅、レイテンシ、及びＮｏＣトラフィックに関する他の記述の間のメッセージ属性に関する情報を含み得る。依存関係情報は、例えば、ブロックされた／失敗した場合に送信元から送信先へのトランザクションを停止及び／又は妨害する中継的なホップを記述し得る。他の実施例において、依存関係は、適切な方法を用いて決定され得る。例えば、メッセージのシーケンスを解析することによって決定され得る。トラフィック仕様の記述は、方法に関して、例えば、送信元は中間ホップに依存して、といったことに関する明確な依存関係情報を含み得る。又は、ある場合には、当該トラフィック仕様の記述は、メッセージ／パケット／フリット及び／又は中間ホップ間の非依存性を明確に記述し得る。
【００４３】
他の実施例において、トランザクショナル・トラフィック仕様は、例えば、メッセージ・レイテンシ、トランザクショナル・レイテンシ、各々のホップ及び／又はトランザクション全体の実行レイテンシなどのバンド幅及び／又はレイテンシに関する記述を含む。他の実施例において、レイテンシは、上述したような１つ以上の相互依存関係に基づき得る。バンド幅の記述は、各々のホスト及びホップ間のバンド幅要求及び全トランザクションへの総合的なバンド幅要求を包含し得る。当該バンド幅の記述は、異なるホップ間及びＮｏＣ上のホスト間のリンクのサイズに関する情報を含み得る。当該トラフィック仕様は、メッセージ属性に関する記述、例えば、メッセージのサイズ、メッセージの優先度、メッセージの種類、メッセージの品質及び他のメッセージに関する仕様情報をさらに含み得る。類似の属性、例えば、サイズ、優先度、種類及び品質は、パケット及び／又はパケットのフリットの各々にも定義され得る。
【００４４】
他の実施例において、ソースルーティングされたシステムにおいて、トランザクショナル・トラフィック仕様を用いて、潜在的なトラフィック・デッドロックを防ぎ得る。これは、当該トランザクショナル・トラフィック仕様がメーセージ及び／又はＮｏＣホスト間の内部依存関係に関する詳細と共にトランザクション・レベル仕様を含むからである。１つの実施例において、デッドロック防止アルゴリズムは、当該トランザクショナル・トラフィック仕様において定義された内部依存関係を用い得る。当該トランザクショナル・トラフィック仕様は、トランザクションのホップ間で暗黙的にエンコードされてデッドロックフリーのＮｏＣ設計を構築する。１つの実施例において、トランザクショナル・トラフィック仕様は、ＮｏＣトラフィックのより正確なシミュレーションを得ることにも用いられ得る。トランザクショナル・トラフィック仕様を用いてのトランザクショナル・シミュレーションは、フローレベル仕様を用いてのシミュレーションではハイライトされ得ない、潜在的なシステムボトルネック及びデッドロック問題をハイライトし得る。
【００４５】
トランザクショナル・トラフィック仕様の実施例は、ＮｏＣのトラフィック要求のハイレベルの一覧／描写を提供し得る。仕様の言語は、アーキテクトがマルチ-ホップ・トランザクションのグループの構造を記述することを可能にし得る。加えて、当該仕様の言語は、当該トランザクション全体におけるプロパティと、同様に、当該トランザクションのホップの各々のプロパティと、の両方のプロパティをサポートし得る。
【００４６】
１つの実施例において、個別のトランザクショナル・トラフィック仕様がＮｏＣを設計するために書かれ得る。また、個別のトランザクショナル・トラフィック仕様がＮｏＣのシミュレーションをするために書かれ得る。
【００４７】
１つの実施において、現実世界のＳｏＣ仕様及びワークロードに関する広範な評価を通じて、実施例の仕様を含むシミュレーションは、迅速な設計及び評価の反復を継続する単純なポイント・トゥー・ポイントのＮｏＣシミュレーションと比較した場合に、ＮｏＣの性能をより一層効果的に評価し得る。図５は、本願の開示の実施態様に従ったホスト間のトランザクションを示す。当該トランザクションは、システム５００を参照して示されており、当該システム５００は、２つの中央演算装置（central processing unit）であるＣＰＵ−１  ５０４を及びＣＰＵ−２  ５０４を有し、ＮｏＣ上の２つのＣＰＵ５０２及び５０４の間に設けられたハードウェア・キャッシュ・コヒーレンス・モジュール５０６と共に示されている。１つの実施例において、モジュール５０６が要求されたデータを持っていない場合、キャッシュ・コヒーレンス・モジュール５０６は、キャッシュしたロードリクエスト５０８をＣＰＵ−１  ５０２から受信し得る。加えて、キャッシュ・コヒーレンス・モジュール５０６は、スヌープ・リクエスト５１０をＣＰＵ−２  ５０４に行う。要求されたデータがＣＰＵ−２  ５０４のキャッシュ内にある場合、ＣＰＵ−２  ５０４はスヌープデータ５１２で応答し得る。当該スヌープデータ５１２は、キャッシュ・コヒーレンス・モジュール５０６によって受信され得、その後、ＣＰＵ−１  ５０２に送られる。メッセージの当該全体のシーケンスは、単一のトランザクション５１６として表わされ得、図５において１本の線によって表わされている。
【００４８】
１つの実施例において、トランザクションを記述するために、ＣＰＵ  ５０２及びＣＰＵ  ５０４は、ＣＰＵ＿１及びＣＰＵ＿２としてそれぞれ表わされ得る。また、キャッシュ・コヒーレンス・モジュール５０６は、当該仕様内の上記トランザクションを記述するためにＣＣとして表わされ得る。同様に、仕様内のトランザクションを記述する目的で、ロードリクエストの送出を担うポートはＬＤと称することができ、スヌープメッセージの送出を担うポートはＳＮと称することができ、スヌープ応答の受信を担うポートはＳＮ＿ＲＥＳＰと称することができ、ロードデータの受信を担うポートはＬＤ＿ＤＡＴＡと称することができる。従って、このトランザクションに関するメッセージのシーケンスは、以下のように記述される。
・pri 1 rates 0.05 0.1 latency 30 profile 0,1
・ＣＰＵ＿１/ＩＤ ＣＰＵ＿２/ＩＤ → beats １ ＣＣ/ＬＤ/ＳＮ →
・beats １ ＣＰＵ＿１/ＳＮ/ＳＮ＿ＲＥＳＰ ＣＰＵ−２/ＳＮ/ＳＮ＿ＲＥＳＰ →
・beats ４ ＣＣ/ＳＮ＿ＲＥＳＰ/ＬＤ＿ＤＡＴＡ →
・beats ４ ＣＰＵ＿１/ＬＤ＿ＤＡＴＡ ＣＰＵ＿２/ＬＤ＿ＤＡＴＡ
上記のトランザクションの記述の例は、４つのプロパティを有する。当該４つのプロパティは、１）優先度、２）メッセージレート、３）レイテンシ・ターゲット及び４）対応するトラフィック・プロファイルである。当該トランザクションの記述の例において、「pri 1」はトランザクションの優先度を１として表わし得る。当該トランザクションにおいて、当該優先度の記述はルータにおける優先度ベースの属性に用いられ得る。「rate 0.05 0.01」は、どのくらいの頻度でこのトランザクションが開始されるかを示す２つのメッセージレートを表わすように設定され得る。この頻度は、サイクル毎のメッセージの数を単位として計測され得る。当該サイクル毎のメッセージの数は、インターフェース幅、メッセージ毎のフリットの数、及びＮｏＣのクロックレートを乗じることによってバンド幅の値に変換され得る。この例では、レート0.05は平均レート0.05を表わすことができ、すなわち、２０サイクル毎に１つのメッセージを表わし、レート0.1はピークレートを表わすことができ、すなわち、１０サイクル毎に１つのメッセージを表わす。当該レートの記述は、ポートの容量を解析するために重要である。例えば、３ビートのメッセージは１／３以上のトランザクション・レートを有しており、ポートの容量を超過するであろう。
【００４９】
当該仕様内において、次に記述されるトランザクションプロパティは、レイテンシ・ターゲットである。レイテンシ・ターゲットは、仕様の例においては「レイテンシ(laytency) 30」と記述されており、要求されるシステム性能を達成するためのトランザクションに向けた所望の完了レイテンシを示している。トランザクションの例は３０サイクルのレイテンシ・ターゲットを有し、これは、完了するために３０サイクル以上要するとすれば、システムの性能に悪影響を及ぼすことを意味している。仕様において、トランザクションプロパティのうち最後に記述されるものはプロファイルであり、当該プロファイルにおいて各トランザクションは、例えば、多数のトラフィック・プロファイル又はトラフィック・モードの要素となり得る。１つのプロファイル内のトランザクションのみを駆動することによって、異なるトラフィック・モード間で容易に切り替えることができる。当該実施例においてさらに、トランザクショナル・トラフィック仕様は、異なるホップの入力及び出力のための２種類の記述を含み、１種類は送信元及び送信先の入力及び出力ポート向けであり、もう１種類は中間ホップの入力及び出力ポート向けである。例えば、最初のホップの送信元及び最後のホップの送信先は、ホスト／ポートとして特定され得、トランザクションに加わるであろうホスト及び使われるであろうそのポートを示し得る。当該トランザクションの例において、当該最初のホップは可能な２つのポート、ＣＰＵ＿１のＬＤポート又はＣＰＵ＿２のＬＤポートのいずれかで開始し、その後、当該トランザクション仕様はそれをＣＰＵ＿１／ＬＤ及びＣＰＵ＿２／ＬＤとして記述する。
【００５０】
１つの実施例において、中間ホップは、例えばＣＣ／ＬＤ／ＳＮのようにホスト／ポートとして特定され得る。第１のポートは受信ポートであり、例えばメッセージが受信され得るＬＤである。第２のポートは送信ポートＳＮであり、次のメッセージが中間ホップから伝送されるであろうポートである。当該記述は、１つのポート、すなわちＬＤにメッセージが到来したこと、もう一つのポート、すなわちＳＮによって送信されたことを示す。当該ポートは、いくつかのプロトコルがホップ内でポートの混合を可能にすることで、ホップの両端で特定され得る。
【００５１】
提案されるトランザクショナル・トラフィック仕様の１つの実施例において、トランザクション内のホップの各々は、例えば「ビート(beat)１」のようなビートプロパティを記述することができる。当該ビートプロパティは、完全なメッセージを作り上げるデータのチャンク／フリットの数を示す。これは、そのメッセージに関するパケット内のフリットの数を含み得る。例えば、ロード及びスヌープメッセージは、各々の1つのフリットであっても良く、一方でデータを伝えるスヌープ応答及びロードデータメッセージは、ビート(beat)４によって示されるように４フリットの長さであっても良い。対になったバンド幅のグラフは、トランザクショナル・トラフィック仕様の実施例から、レート及びポートの幅によるビートを乗ずることによって算出され得る。
【００５２】
１つの実施例において、トランザクションの記述は最適化され得、例えば、リクエスト、応答、関連するメッセージ及び１つのメッセージに関する記述を有するプロトコルを用いるトランザクションは、他のメッセージを作ることができる。そのような場合、両方のメッセージに関する記述は、当該仕様内で特定されることは必要とされないであろう。プロトコルの定義に基づいて、シーケンス内の他のメッセージが導出され得る。他の実施例において、ユーザは、メッセージ情報及びプロトコル仕様に基づいて生成され得る全記述に基づいて、トランザクションの部分的な記述を提供することができる。
【００５３】
１つの実施例において、メモリユニットにメッセージを送信するＣＰＵのような一般的なパターンを有する多数のトランザクションは、トランザクショナル・トラフィック仕様において、トランザクション・チェーンとして記述され得る。トランザクショナル・トラフィック仕様におけるそのようなトランザクション・チェーンに関する記述は、マルチホップ・トランザクションの効果的なシミュレーションを可能にするために使用され得る。
【００５４】
[トラフィック・チェーン]
トランザクションは、各々のホップが単一の送信元/送信先を有するチェーンとして表わされ得る。シミュレーションの開始時に、全てのトランザクションをチェーンに変換することによって、送信されるべき次のメッセージが既に決まっており、ホストの稼働が迅速になり得る。１つのトランザクションを多数のチェーンに変換する単純な方法は、各ホップでのコンポーネントの可能な選択の各々に関してチェーンを作ることである。そのようなトランザクションは、図６（ａ）に示すようなチェーンを作ることができる。図６（ａ）は、コヒーレンシ・コントローラが、データを必要とするＣＰＵをスヌープする理由が無いと記載されたシナリオに対応しないチェーン６００の例を示す。加えて、当該コントローラは、データをリクエストしなかったＣＰＵにデータを送るべきではない。図６（ａ）に示されるようなチェーンは、上述したようなトランザクション及び図５に表わしたようなトランザクションに関して構成され得る。図６（ａ）において、ＣＰＵ−１ ６０２−ａ及びＣＰＵ−１ ６０２−bは、単一のＣＰＵであり得、以降、集合的にＣＰＵ−１ ６０２と称する。ＣＰＵ−１ ６０２−ａ及びＣＰＵ−１ ６０２−bが２つの例として表わされている目的は、説明の目的のみである。同様に、キャッシュ・コヒーレンス・モジュール ６０４−ａ及びキャッシュ・コヒーレンス・モジュール ６０４−bは、単一のキャッシュ・コヒーレンス・モジュールであり得、以降、集合的にキャッシュ・コヒーレンス・モジュール ６０４と称する。当該キャッシュ・コヒーレンス・モジュール ６０４−ａ及び当該キャッシュ・コヒーレンス・モジュール ６０４−bが２つの例として表わされている目的は、説明の目的のみである。実施例において、ＣＰＵ−１ ６０２−ａは、キャッシュ・コヒーレンス・モジュール ６０４−ａにデータリクエストを送信することができ、キャッシュ・コヒーレンス・モジュール ６０４−ａは、応答として、リクエストをＣＰＵ−１ ６０２−bに返送することができる。その結果、誤解を生じる記述（misleading representation）を与え、実際にデータのリクエストを有していたＣＰＵ−１ ６０２−（ａ）にデータを送信するか又は当該ＣＰＵ−１ ６０２−（ａ）にスヌープ・リクエストを送信することのいずれをも意味する。上述したように、本実施例において、代わりにスヌープ・リクエストはＣＰＵ-２ ６０６に送信されるべきである。上述したトランザクションに関して、コヒーレンシ・コントローラ６０４がスヌープ・リクエストを、実際にデータをリクエストしていたＣＰＵ−１ ６０２−（ａ）に返送する理由は無い。同様に、コヒーレンス・コントローラ６０４は、当該データを、データをリクエストしていなかったＣＰＵ-２ ６０６に送信するべきではない。上記の創造されたトランザクション・チェーンは、当該トランザクションを明確に表現するものではない。従って、トランザクション・チェーンを適切に、誤解を生じる記述無しに生成するためには、トランザクション・トラフィック・チェーンを適切に表現することができるチェーン生成アルゴリズムが必要である。
【００５５】
１つの実施例は、実際のシステムが生成するであろうチェーンを生成するための、チェーン生成アルゴリズムを利用する。当該チェーン生成アルゴリズムは、リクエストと応答との区別を使用し、現在のメッセージの種類及び現在までに作られた部分的なチェーンに基づいて、現在のホップの不正な送信先を除外することができる。理想的には、リクエストは、まだ現在までに作られたチェーンの一部ではない新たな送信先に行くべきであり、同様に、例えば応答は、既に現在までに作られたチェーンの一部である送信先に行くべきである。
【００５６】
このアルゴリズムを当該トランザクションの例に適用すると、ＣＰＵ−１で開始する１つのみのチェーンＣＰＵ−１：ＣＰＵ−１→ＣＣ→ＣＰＵ−２→ＣＣ→ＣＰＵ−１が構成され得る。
【００５７】
図６（ｂ）は、本願の実施例に従って、提案されるチェーン生成アルゴリズムを用いて作られた例示であるトランザクション・チェーン６５０を示す。ＣＰＵ−１ ６５２−ａ及びＣＰＵ−１ ６５２−ｂは、単一のＣＰＵ−１であり、以降、集合的にＣＰＵ−１ ６５２と称する。ＣＰＵ−１ ６５２−ａ及びＣＰＵ−１ ６５２−ｂが２つの例として表わされている目的は、説明の目的のみである。同様に、キャッシュ・コヒーレンス・モジュール ６５４−ａ及びキャッシュ・コヒーレンス・モジュール ６５４−bは、単一のキャッシュ・コヒーレンス・モジュールであり、以降、集合的にキャッシュ・コヒーレンス・モジュール ６５４と称する。当該キャッシュ・コヒーレンス・モジュール ６５４−ａ及びキャッシュ・コヒーレンス・モジュール ６５４−bが２つの例として表わされている目的は、説明の目的のみである。実施例において、ＣＰＵ−１ ６５２−ａは、本明細書において６５４−ａと表わされているキャッシュ・コヒーレンス・モジュール ６５４にデータリクエストを送信することができ、次に、スヌープ・リクエストをＣＰＵ−２ ６５６に送信することができる。当該ＣＰＵ−２ ６５６は、本明細書において６５４−ｂと表わされているキャッシュ・コヒーレンス・モジュール ６５４に、リクエストされたデータの入手可能性に関して返答する。当該キャッシュ・コヒーレンス・モジュール ６５４は、本明細書において６５４−ｂと表わされ、データを、本明細書において６５４−ｂと表わされるＣＰＵ−１ ６５２に送信する。従って、ＣＰＵ−１−＞キャッシュ・コヒーレンシ・モジュール−＞ＣＰＵ−２−＞キャッシュ・コヒーレンシ・モジュール−＞ＣＰＵ−１のようにチェーンが作り出される。
【００５８】
上述したように、キャッシュ・コヒーレンス・モジュール ６５４からのスヌープメッセージは、元々はＣＰＵ−１ ６５２によって開始されたリクエストであり、ＣＰＵ−１へ行くことはできない。また、ロードデータメッセージはＣＰＵ−２ ６５６によって送信された応答であり、ＣＰＵ−２ ６５６へ行くことはできない。
【００５９】
１つの実施例において、当該チェーン生成アルゴリズムは保守的である。例えば、いくつかの点で、トラフィック仕様が次のいずれのホップにも従わない場合、フィルタリングはなされず、当該仕様は可能な限り良く追従される。あるいは、リクエストと応答との型に合わないトランザクションに関して、チェーンを生成しないこともあり得る。このことは、入力が既にチェーンである場合に、当該アルゴリズムがユーザの意図を維持することを可能とする。
【００６０】
実施例において、トランザクショナル・トラフィック仕様はＮｏＣシミュレーションから独立して書かれ得る。当該トランザクショナル・トラフィック仕様の記述は、当該ＮｏＣシミュレーションに関して要求されることで、非常に特殊であり得る。
【００６１】
[トレースの生成]
ＮｏＣシミュレーションの実施例において、外部トランザクション・トレースは、さらなる適応性を提供するために用いられ得る。そのようなトランザクション・トレースは、統計モデルから算出されても良く、現実のシステムから記録されても良い。コンポーネントに関するトランザクション・トレースは、トランザクション開始メッセージ及び内部トランザクション・インターバルの一覧を含み得る。例えば実施例において、当該トレースは、シミュレートすべきチェーンを示すのみであっても良く、当該トランザクションの全体の詳細は示さなくとも良い。
【００６２】
１つの実施例において、トランザクショナル・トラフィック仕様は、トラフィック・トレーシングの生成に用いられ得る。トランザクショナル・トラフィック仕様における各々のトランザクションに関してトランザクション・レートが特定されることで、トランザクショナル・トラフィック仕様に適合したトランザクションに関して現実的なトレースが生成され得る。１つの実施例において、ｎサイクルに及ぶトレースを生成するために、レートｒのトランザクションは、当該トレースにおいてｎｒメッセージを送信すべきである。トランザクション配列は、特定の送信元からの各々のトランザクションｔiがｎｒi回出現するように構築され得る。一度構築がなされると、当該配列は、ランダムに組み替えられ得、メッセージが送信されるであろう順書を形成し得る。後は当該トレースがｎサイクルに及ぶようにメッセージ間の遅延を算出するのみである。例えば、ビートの総数ｔがｎより大きい場合、特定された総トラフィックは、送信元の伝送能力を超過する。当該送信元の伝送能力は、サイクル当たり１ビートのみ送信し得るものだからである。他の実施例において、標準のレート制限アルゴリズムがメッセージ間に間隔のあるメッセージ伝送をスケジューリングすることに用いられ得、短いインターバルにわたる平均バンド幅は伝送ビートのレートをサイクルあたりおよそｔ／ｎビートに制限し得る。他の実施例において、当該ＮｏＣは、例えばバースト性及びジッタなどのプロパティをこのモデルに使用することができ、より一層現実的なトレースを作成することができる。
【００６３】
[トランザクショナル・シミュレーション]
１つの実施例において、ＮｏＣは本願のトランザクショナル・トラフィック仕様をトランザクショナル・シミュレーションに使用することができる。本願のトランザクショナル・トラフィック仕様を用いてのトランザクショナル・シミュレーションは、より緊急及び詳細なシミュレーションを提供することにおいて、フローレベルのシミュレーションと異なる。フローレベル仕様を用いてのフローレベル・シミュレーションと、トランザクショナル・トラフィック仕様を用いてのトランザクショナル・シミュレーションとは、トランザクションの中間点にメッセージが到来した際に何が起こるか、に関して異なる。当該両方のシミュレーションにおいて、送信されるべきメッセージのトレースは、ネットワークをシミュレーションすることに用いられる。トランザクションベースのシミュレーションに関して、当該トレースは、各々のトランザクションの最初のメッセージをスケジューリングすることにのみ必要であり、他のメッセージはメッセージの受信上でトリガされるであろう。パケットがその送信先に到着した場合、当該パケットは、チェーン内に次のパケットがあれば当該次のパケットへのポインタを有する。当該次のパケットは、当該次のパケットを送信するであろうネットワークのホスト／ホップの伝送キューに挿入され得る。この応答の伝送は、当該ホスト／ホップによって処理が行われることで遅延される。当該キュー内に空きがない場合、当該ホストはメッセージを受信することができず、バックプレッシャ・アップストリーム（backpressure upstream）を引きおこす。
【００６４】
トランザクションベースのシミュレーションの当該実施例は、トランザクショナル・トラフィック仕様を、フォローレベル仕様が使用されているポイント・トゥー・ポイントのシミュレーションに亘って使用することを通じて利益をもたらすであろう。例えば、当該トランザクショナル・シミュレーションは、レジスタ転送レベル（register transfer level:RTL）のシミュレーション中に起こり得る全ての潜在的なデッドロックを再現し得る。潜在的なデッドロックの早期の検出は、ＮｏＣ上のデッドロックフリーのトラフィックを保証すること、加えて、当該ＮｏＣはルーティング機能及び仮想チャネル割り当てレベル（ＶＣ assignment level）に至るまで適切に構築されていることを保証することに関して、当該シミュレーションを有益なものにする。ＶＣ及びコンポーネント間の依存関係の正確なモデリングは、当該シミュレーションが、現実のシステムにおいて起こり得る潜在的なデッドロックをより一層ハイライトし易くする。
【００６５】
ＮｏＣ設計の開発及びシミュレーションの際に、多数の潜在的なデッドロック起こり得るとすれば、ＶＣマッピングアルゴリズムに、当該システムにおける依存関係の正確なモデルを使用されていない可能性があることを示している。
【００６６】
さらに、トランザクショナル・トラフィック仕様を使用することによって、当該シミュレーションはＮｏＣのより現実的な表現をもたらし得る。トランザクション・トラフィック仕様を使用するシミュレータはリクエスト後の応答を生成するのみであろうから、シミュレーション中にみられるトラフィックパターンはより正確に現実のシステムを表現するであろう。さらに、当該ネットワークの挙動のより正確な描写がもたらされ得、正確なバンド幅が提供され得る。これらの利益を総合して、無視できるほどの複雑さで、当該シミュレータの使いやすさは大きく改善する。
【００６７】
[ＮｏＣ設計]
より正確に実行するシミュレーションに加えて、１つの実施例において、トランザクショナル・トラフィック仕様はＮｏＣを設計することに利用され得る。トランザクショナル・トラフィック仕様を使用して、当該ＮｏＣの設計は、ロバスト性及び信頼性の高い結果並びに（必要な場合は）迅速な設計の反復を生じ得る。トランザクショナル・トラフィック仕様は相互依存関係情報、バンド幅情報、レイテンシ情報を含んでおり、ルート割当及び他のＮｏＣの接続性を確立することに使用され得る。当該トランザクショナル・トラフィック仕様は、デッドロックフリーのＮｏＣの設計を補助し得る仮想チャネル割り当て（ＶＣ assignment）を容易にすることにおいても有効であり得る。１つの実施例において、トランザクショナル・トラフィック仕様は、当該ＮｏＣ内の正確なコア配置（core placement）においても補助し得る。
【００６８】
[仮想チャネルマッピング（ＶＣ mapping）]
仮想チャネル割り当ての際、トラフィックフローは、デットロックを回避するため、ＮｏＣにおいてルート及び仮想チャネル（ＶＣ）が割り当てられ得る。トランザクション情報は、最適な仮想チャネル割り当てに関して、トランザクションの様々なフロー間の追加の依存関係情報を活用すること及び当該仮想チャネル割り当てはデッドロックフリーであることを保証することに用いられ得る情報として有効である。
【００６９】
フローべースのトラフィックグラフを用いるシミュレーションは、ＮｏＣにおけるデッドロックを検出及び防止するためには不十分であろう。これに対してトランザクショナル・トラフィック仕様はより良いシミュレーション及びデッドロックの検出を提供する。フローベースのモデルは、各々のメッセージを互いに独立して取り扱うが、現実のシステムにおいては、リクエスト／応答プロトコルが利用され得、当該応答は当該リクエストに依存し、トランザクショナル・トラフィック仕様に記述されているように、当該応答及びリクエストの両方のメッセージは単一のトランザクションに属する。例えば、キャッシュコントローラを考えると、キャッシュミス（cache miss）が起こった場合、ＣＰＵとのインターフェース(ＣＰＵ−facing interface)上でロードリクエストを受信し、メモリとのインターフェース(memory−facing interface)上でロードリクエストを送出する。バッファリングは制限されているため、応答が送信され得ない場合は、当該コンポーネントは、リクエストの受信を停止しなければならないであろう。これらの依存関係は、インターコネクトデッドロックを防止するためにマッピングに含まれるべきである。そのような状況を取り扱う関連技術は、リクエストと応答とを別々のＶＣ上に配置することを含むが、そのような設計は、複雑なコヒーレンシプロトコルに関する過多なＶＣを使用し得る。
【００７０】
１つの実施例において、トランザクショナル・トラフィック仕様は、同じトランザクションのフロー間の依存関係の根拠となる（account for）ＮｏＣコンポーネントへの仮想チャネル割り当てに使用され得る。実施例において、トランザクショナル・トラフィック仕様を仮想チャネル割り当てに利用することは、マルチホップ・トラフィック・トランザクションから依存関係を推定することによって、同じトランザクションのフロー間の依存関係の根拠となる。例えばＣＰＵ及びメモリ間のトランザクションにおいて、入力インターフェースから出力インターフェースへのメモリにおける依存関係を推定することができる。仮想チャネル割り当ての間のこれらの依存関係の根拠となることは、はるかに少ないＶＣを使用するデッドロックフリーのネットワークを設計することを可能にし、より効果的なＮｏＣの設計へと導く。さらに、その結果として生ずる設計は、より複雑なプロトコルに関するものまでも構築することによって、デッドロックフリー及び正確であり得る。
【００７１】
[コア配置(Core Placement)]
ＮｏＣにおける通信コストは、コンポーネント間の距離と共に増大し、コンポーネントを再配置することは、ＮｏＣ性能に大きく影響し得る。注意深い位置決めは、レイテンシ及び輻輳（congestion）を削減し得るが、しかしながら、適切な位置が要求されると、いくつかの近くにあるコンポーネントを動かすことで、他のコンポーネント間の距離を増大させることができる。ＮｏＣコンテクスト(context)におけるコンポーネントの配置の当該ＮＰ困難問題（ＮＰ-hard problem）に対して、疑似アニーリング法（Simulated Annealing）から分岐限定法（branch and bound）まで多種多様のアプローチがある。本明細書に記載された実施例は、トラフィックはレイテンシ・ターゲットを満たすことを保証し得る。
【００７２】
フローベースのトラフィックモデルは、コンポーネントのペアにレイテンシ制約（latency constraints）を加えることができる。例えば、ＣＰＵとキャッシュコントローラとの間のレイテンシは、５未満であるという制約をかけられ得る。アプリケーションレベルでは、キャッシュコントローラに対するレイテンシは、メモリのリクエスト及び応答の間の遅延の一部に過ぎない。従って、当該アプリケーションには全体のトランザクションレイテンシが起こり得、当該レイテンシは最適化され得る。
【００７３】
１つの実施例において、ホップ毎のプロパティの代わりに、レイテンシをトランザクションプロパティとして特定することは、配置最適化アルゴリズム（placement optimization algorithm）上の制約を緩和する。当該トランザクションプロパティは、トランザクショナル・トラフィック仕様に記述されることで、当該仕様がそのトランザクションの全てのホップ間のレイテンシを割り当てることを可能にすることができ、当該仕様は、システムの全ての制約を満たすという解決策を容易に見出すことができる。
【００７４】
１つの実施例において、ＮｏＣはトランザクショナル・トラフィック仕様から生成され得る。当該仕様は、完全なシステムレベルの接続性、依存関係情報、メッセージ／パケット／フリット及び／又はチャネルのバンド幅情報、メッセージトランザクションのレイテンシ情報、例えばメッセージのサイズ、プロパティ、仕様におけるトラフィックの他の記述の間のオーダなどのメッセージ属性情報を有する。
【００７５】
１つの実施態様によれば、提案される本願の仕様はいずれの種類のルート及び／又はホップのシーケンスも取り扱うように構成され得る。当該仕様において、まず第１に、送信元及び送信先のホストは１つ以上の中間ホップと同じであり得る。また、接続性を有することも可能であり得る。当該接続性において、送信先は直接送信元に接続し、送信元は第１の中継に接続し、第１の中継はサイクルにおいて第２の中継に接続し、加えて送信先にも接続する。仕様は、接続性、依存関係、バンド幅、レイテンシ、及びメッセージ属性のうちの１つ又は組み合わせをキャプチャするように構成され得る。これに対して従来の仕様は対になった接続性を有していたのみである。
【００７６】
１つの実施例において、依存関係は、メッセージのシーケンスの解析に基づいて、又は当該仕様から明示的に、又は非依存関係に基づいて明示的に決定され得る。上述したように、仕様はバンド幅及びレイテンシを詳細に記述するように構成され得る。当該レイテンシは、メッセージ・レイテンシ、トランザクション・レイテンシ、他の同様の要素であり得る。従って、レイテンシは各ホップ又は完全なトランザクション（複数のホップを含む）に関するものであり得る。メッセージ属性は、メッセージのサイズ、優先度、メッセージのサービスのクオリティ、及び他に定義されるメッセージに関するいくつかの情報を含み得る。バンド幅分布は例えば、テーブルなどに保存された又は時間の機能として表現された、一定時間に亘るバンド幅のような時間変化バンド幅分布を含み得る。１つの側面の例として、バンド幅分布は、一定の時間内に一定のバンド幅を提供し得るアイソクロナス・トラフィックからキャプチャされ得る。
【００７７】
図７は、ＮｏＣ設計の例及び実施例が実装されるシステム７００の例を示す。コンピュータシステム７００は、サーバ７０５を含む。サーバ７０５は、Ｉ／Ｏユニット７３５、ストレージ７６０、及び１つ以上の当業者に周知のユニットを実行する動作が可能なプロセッサ７１０を含み得る。本明細書において「コンピュータ可読媒体」は、プロセッサ７１０に実行するための命令を提供することに関与するいかなる媒体をも意味し、限定的ではないが、光ディスク、磁気ディスク、リードオンリーメモリ、ランダムアクセスメモリ、固体（solid state）デバイス及びドライブ、又は電子情報を格納するのに適している他のいかなる種類の有形の媒体、又は搬送波のような媒体を含み得るコンピュータ読み取り可能な信号媒体などのコンピュータ可読記憶媒体の形態を有していてもよい。Ｉ／Ｏユニットは、キーボード、マウス、タッチ装置、又は音声コマンドなどの入力デバイスを利用することができるユーザ・インタフェース７４０及びオペレータ・インタフェース７４５からの入力を処理する。
【００７８】
サーバ７０５はまた、ポータブル・ハードディスク、光学式媒体（ＣＤ又はＤＶＤ）、ディスク媒体、又はコンピュータが実行可能なコードを読み取ることができる他のいかなる媒体などの着脱可能なストレージを含み得る外部ストレージ７５０に接続されていてもよい。サーバはまた、ユーザへデータ及び他の情報、またユーザからの追加情報要求を出力するディスプレイなどの出力デバイス７５５に接続されていてもよい。サーバ７０５からユーザ・インタフェース７４０、オペレータ・インタフェース７４５、外部ストレージ７５０及び出力デバイス７５５への接続は、８０２．１１規格、ブルートゥース（登録商標）（Bluetooth（登録商標））又はセルラ・プロトコルなどの無線プロトコル、あるいはケーブル又は光学ファイバなどの物理的伝送メディアを経たものであってもよい。したがって、出力デバイス７５５は、さらにユーザと対話する入力デバイスとしての機能を果たすことができる。
【００７９】
プロセッサ７１０は、トランザクショナル・トラフィック仕様モジュール７１１、内部依存関係判定モジュール７１２、バンド幅判定モジュール７１３、応答優先度判定モジュール７１４、トラフィック生成モジュール７１５、及びシミュレーションモジュール７１６を含む１つ以上のモジュールを実行することができる。当該トランザクショナル・トラフィック仕様モジュール７１１は、１つ以上の要素間の内部依存関係、バンド幅割り当て、メッセージ属性、及び他のトランザクショナル・トラフィックレベルのパラメータ／因子／属性のうちの１つ又は組み合わせの情報を含むＮｏＣトランザクションを記述するように構成され得る。
【００８０】
１つの実施例において、内部依存関係判定モジュール７１２は、トランザクショナル・トラフィック仕様モジュール７１１から依存関係情報を抽出して、トランザクショナル・トラフィック仕様モジュール７１１において記述された他の依存関係との間で、メッセージ／パケット／フリットのうちの１つ又は組み合わせの間の内部依存関係、送信元ホストと送信先ホストとの間の内部依存関係、中間ホップ上の依存関係を判定するように構成され得る。１つの実施例において、トランザクショナル・トラフィック仕様モジュール７１１は、依存関係情報、バンド幅情報及び属性情報などの１つ以上のパラメータを用いてトランザクショナル・トラフィック仕様を生成するように構成され得る。
【００８１】
他の実施例において、ＮｏＣ設計及びシミュレーションシステム７００は、ＮｏＣのホストと中間ホップとの間の可用バンド幅（available bandwidth）及びそれに応じてトランザクショナル・トラフィック仕様に基づく設計トラフィックを判定するように構成されたバンド幅判定モジュール７１３を含み得る。上述したように、トランザクショナル・トラフィック仕様はまた、メッセージのサイズ、優先度及びトランザクションの全てのメッセージのオーダに関する情報を含み得る。
【００８２】
他の実施例において、優先度判定モジュール７１４は情報を抽出してホスト及び／又は中間ホップに入力されるメッセージ並びにホスト及び／又は中間ホップから出力されるメッセージを解析及び優先順位付けをするように構成され得る。１つの実施例において、トランザクショナル・トラフィック仕様を用いて、トラフィック生成モジュール７１５は、多数の依存関係、優先度、レイテンシ及び他の関連する情報を計算に入れ、それに応じてトラフィックを処理する／扱うように構成され得る。他の実施例において、シミュレーションモジュール７１６は、トランザクショナル・トラフィック仕様を用いてＮｏＣ全体をシミュレーションしてＮｏＣを解析することができ、当該ＮｏＣにおける潜在的なデッドロックを判定することができる。
【００８３】
本詳細な説明のいくつかの部分は、コンピュータ内のアルゴリズムとして及び動作の記号表現として表されている。これらのアルゴリズム的記載及び記号表現は、情報処理分野の当業者によって、他の当業者に新しい考えの本質を最も効果的に伝えるために用いられる手段である。アルゴリズムは、所望の最終状態又は結果を導く一連の定義されたステップである。実施例において、実行されるステップは、具体的な成果を達成するための具体的な量の物理的操作を必要とする。
【００８４】
さらに、本願の他の実施例は、本明細書に開示されている実施例の仕様及び実行を考慮することによって、当業者に明らかに理解される。様々な説明された実施例の態様及び／又はコンポーネントは、単一で又は任意の組み合わせで用いられてもよい。仕様及び実施例は例示として理解されることが意図され、本出願の真の範囲及び精神は、添付の特許請求の範囲によって示されることが意図されている。
【図１（ａ）】
0006353084.tif 000002
【図１（ｂ）】
0006353084.tif 000003
【図１（ｃ）】
0006353084.tif 000004
【図１（ｄ）】
0006353084.tif 000005
【図２（ａ）】
0006353084.tif 000006
【図２（ｂ）】
0006353084.tif 000007
【図３（ａ）】
0006353084.tif 000008
【図３（ｂ）】
0006353084.tif 000009
【図４（ａ）】
0006353084.tif 000010
【図４（ｂ）】
0006353084.tif 000011
【図５】
0006353084.tif 000012
【図６（ａ）】
0006353084.tif 000013
【図６（ｂ）】
0006353084.tif 000014
【図７】
0006353084.tif 000015