(57)【要約】  完全なＳｏＣ挙動を正確に再現することによって、ネットワークオンチップ（ＮｏＣ）アーキテクチャ内のＳｏＣＩＰコアの性能シミュレーションに基づいてマルチメッセージトランザクションを実行するシステム及び方法が記載されている。実施例は、異なったレート／時間／インターバルにおける複数のトランザクションの実行に基づいてＮｏＣ挙動を評価しかつ検出するシミュレーションを含み、トランザクションの各々は１または複数のメッセージを含み、メッセージの各々は送信元エージェント及び送信先エージェントに関連付けられている。メッセージの各々は、シミュレータによるトランザクションの実行を示し得るパラメータのうち、特にレート、サイズ、値、遅延等の複数のパラメータに関連付けられ得、ＮｏＣインターコネクトに関する性能レポートを生成するためのリアルタイムシナリオがシミュレートされ得る。
2016527636.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）が無くなり得る。最短経路ルーティングは、遅延を最小化する。なぜならば、このようなルーティングは、送信元から送信先へのホップの数を減少させるからである。このため、最短経路は、２つのコンポーネントの間の通信に関して最も低パワーの経路でもあり得る。次元オーダールーティング（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）を有するようにＮｏＣインターコネクトを設計することもできる。様々なレイヤ内のチャンネルは、チャンネルに亘って移動するフロー及びそのバンド幅要求に基づいた異なった幅を有してもよい。
【００２０】
ＮｏＣインターコネクトにおいて、トラフィックプロファイルが一様でない場合かつ一定量の不均一性がある場合（例えば、特定のホストが他よりも頻繁に互いにやりとり（talk）する場合）、インターコネクト性能は、ＮｏＣトポロジーに多く依存し得、様々なホストが互いに関するトポロジー及びそれらが接続されているルータに関するトポロジーにおいて配される。例えば、２つのホストが互いに頻繁にやりとりしてより高いバンド幅を必要とする場合、これらは互いに隣り合って配されるべきである。このことは、この通信の遅延を低減し、それによって全体の平均遅延が低減され、この通信の大きいバンド幅がもたらされるべきルータノード及びリンクの数が低減されるだろう。２つのホストをすぐ近くに移動させることは、特定の他のホストを遠ざけることになる。なぜならば、全てのホストは、互いに重なることなく２Ｄ平面ＮｏＣトポロジー内に収まらなければならないためである。従って、適切なトレードオフ（right tradeoffs）が形成されるべきであり、かつホストは全てのホストの間のバンド幅と遅延との対比較（pair-wise）を行った後に配置されるべきであり、それによって全体コスト及び性能メトリクス（metrics）が最適化される。コスト及び性能メトリクスは、ルータホップの数における全ての通信ホストの間の平均の構造的遅延、またはホップ数におけるホストの全てのペアの間のバンド幅の合計及びホストの全ての間の距離の合計、またはこれらの組み合わせを含んでもよい。この最適化の問題は、非決定性多項式時間困難（ＮＰ困難）であると知られており、かつヒューリスティック（heuristic）ベースの手法がしばしば用いられる。システム内のホストは、互いに対し形状及びサイズが異なっていても欲、このことが２Ｄ平面ＮｏＣトポロジー内にこれらを配置すること、小さな空白を最適に取り除くこと、及びホストの重なり合い回避することにおける追加的な複雑性をもたらす。
【００２１】
ＮｏＣ性能シミュレーションは、普通は、ルータ、ブリッジ及びチャネル等の様々なＮｏＣ要素を評価するためのモデルを用いて行われる。その後、以下シミュレーションエージェントまたは単にエージェントとも称される、トラフィックを送信しかつ受信するコンポーネント／コアに関する典型的なモデルが用いられてトラフィック要因が生成される。エージェントモデルは、様々なレートで、様々な他のエージェントに対して定められるデータ間隔（インターバル）（interval）を有する様々なサイズ及び値のメッセージを生成することによって、実際のエージェント／コンポーネントの振る舞い（挙動）を模倣する。レート、インターバル、メッセージの値及び送信先は、エージェントの統計的性質に基づいて変化させられ得、異なった条件かにおける性能挙動が取得される。これらのシミュレーションの間、メッセージを送信可能な全てのエージェントは、送信先エージェントによって受信されるメッセージを独立に生成する。複雑なシステムにおいて、エージェントによって受信されるメッセージが他のメッセージの送信をもたらすという挙動が起こり得る。さらに、エージェントがメッセージを受信した際に生成されて様々な送信先に向けられ得る複数のタイプのメッセージがあり得る。例えば、キャッシュコントローラは、ＣＰＵからメッセージを受信して、キャッシュヒットがあった場合にはＣＰＵへの応答メッセージを生成し、キャッシュミスがあった場合にはメモリへの補充メッセージを生成する。従って、ＣＰＵからキャッシュ、メモリ、そして戻る複数のメッセージシーケンスがあり得る。
【００２２】
しかし、関連技術において、現在のＮｏＣ性能シミュレータは、マルチポイントの相互依存（inter-dependent）メッセージシーケンス生成挙動を再現せず、ポイント・ツー・ポイントメッセージのみを生成することによって、ＮｏＣをシミュレーションする。すなわち上述の例のように、ＣＰＵからキャッシュへの要求メッセージ、キャッシュからＣＰＵへの応答メッセージ、及びキャッシュからメモリへの補充メッセージ等が、各々の送信元エージェントから送信先エージェントに向けて独立して生成され、３つの独立したメッセージフローが形成される。これらのフローのレート、インターバル及び属性は、エージェントの精確な挙動を再現するために調整される。このようなシミュレーションが様々なメッセージフローのバンド幅特性を正確に取得する一方で、当該様々なフローは、実際のシステムにおける場合のように互いに同調（synchronize）しない。例えば、補充メッセージは、要求メッセージの前に生成され得る。なぜなら、これらは独立して生成されるからである。
【００２３】
ＮｏＣシミュレータの少数の関連技術は、エージェントにおいて要求が応答を確定的に生成する場合、要求メッセージに対して応答メッセージの生成する試行をし得る。しかし、メッセージの受信において、エージェントは、ネットワークの状態、伝送プロトコル及び伝送方向、並びに受信されたメッセージに基づいて、複数のメッセージのタイプ空メッセージを生成してもよい。この場合、エージェントの正確なモデルを使用しなければ、応答メッセージを生成することは容易ではない。エージェントの正確なモデルは、性能シミュレーションの速度を低下させるだろうし、システム全体のモデルは構築するのには複雑であるし冗長である。従って、ＮｏＣシミュレータのほとんどは、このようなデザインをサポートしておらず、ホップのペアとシミュレーションとの間のポイント・ツー・ポイントメッセージフローのみに依存している。
【発明の概要】
【課題を解決するための手段】
【００２４】
本出願は、ＳｏＣ挙動の全てを正確に再現することによる、ネットワークオンチップ（ＮｏＣ）インターコネクトアーキテクチャ内のＳｏＣ ＩＰコアのマルチメッセージトランザクションベースの性能シミュレーションの実行に関する。本発明のシステムは、複数のトランザクションに基づいてＮｏＣ挙動を評価しかつ検出するためのシミュレーションを実行することを含み、当該トランザクションの各々は１または複数のメッセージを含む。メッセージ（以下、互いに置き換え可能に区別無くホップとも称される）の各々は、送信元エージェント及び送信先エージェントを含み得、これらは実際の状況におけるコンポーネント及びＩＰコアに対応する。通常はシステムトラフィックが複数のエージェントに亘って多数のメッセージ含んでいるので、２以上のエージェントに亘るメッセージのシーケンスは、トランザクションとも称され得、複数のトランザクションを含むシミュレーション環境がもたらされ、複数のトランザクションがメッセージフローの可能性のある状況を実現する。動作において、送信先エージェントに到達した際のトランザクションの先のメッセージは、後のメッセージを生成する。トランザクションが互いに重なり合っていてもよいので、本開示のシステムはメッセージの有向グラフの生成を可能とする。
【００２５】
本出願の態様は、複数のトランザクションシーケンスを用いてＮｏＣのシミュレーションの実行を可能とする方法を含んでもよく、トランザクションシーケンスの各々は、複数のエージェントに亘る１または複数のメッセージを含む。トランザクションシーケンスのメッセージの各々は、様々なある特性の中で特にレート、優先度、値、データサイズ及び遅延といった様々な特性を有し得る。さらに、トランザクションの各々は、異なったデータ間インターバルで拡散しておりかつ異なった属性／特性を有するメッセージを含み得る。他の態様によれば、本発明の方法は、さらに、複数のエントリ（entry）を有するトレースファイル（trace file）の生成を含み、１つの実施例において、エントリの各々は、所定のトランザクションの開始メッセージを示すもの（indication）を示し、トランザクションシーケンスを開始するために使用される。複数の他のエントリ及び／または条件は、トランザクションの開始及び実行を促進するためにトレースファイル内で定義され得る。様々な統計的かつ確率的なモデルは、グラフトラバース判定（graph traversal decision）を決定するために使用され得る。トレースファイル内のエントリに基づいて、トランザクションシーケンスグラフ内の様々な経路が取られ得、対応するメッセージが生成されかつシミュレーションされ得る。グラフトラバース判定は、様々なエージェントの挙動に依存してかつ／またはＳｏＣアーキテクチャの条件／状態に基づいてなされ得る。さらに、トレースファイルは、様々なメッセージシーケンスが開始されるレートを反映した待機インターバルを含んでいてもよく、エージェントモデルは、シーケンスの様々なメッセージが送信元エージェントで生成されて送信先エージェントによって消費されるレートを制御するレート指定を含んでいてもよい。
【００２６】
本出願の態様は、処理を実行するための命令を記憶するコンピュータ可読記憶媒体を含んでもよい。当該命令は、複数のトランザクションシーケンスを用いたＮｏＣのシミュレーションの実行を伴っていてもよく、トランザクションシーケンスの各々は、複数のエージェントに亘る１以上のメッセージを含む。複数のトランザクションが並列して実行され、複数のトランザクションは、重複するメッセージを有してもよく、当該重複するメッセージは、ＮｏＣの全てのトランザクションシーケンスを示すトランザクションシーケンスグラフによって示され得る。
【００２７】
本出願の態様は、所定のＮｏＣに関するトランザクションシーケンスを受信するトランザクションシーケンス入力モジュール、トランザクションシーケンスの各々内のメッセージに基づいてシーケンスグラフを生成するトランザクションシーケンスグラフ生成モジュール、１以上のトランザクションシーケンスの実行の間の待機時間の許可設定と共にトランザクションシーケンスの各々に関する開始メッセージを示すトレースファイルを生成するトレースファイル生成モジュール、及び当該トレースファイルに基づいて１以上のトランザクションシーケンスのシミュレーションを実行しかつＮｏＣ性能レポートを生成するトランザクションシミュレーションモジュールを含んでもよい。
【図面の簡単な説明】
【００２８】
【図１】図１（ａ）、図１（ｂ）、図１（ｃ）及び図１（ｄ）は、双方向リング、２Ｄメッシュ、２Ｄトーラス及び３ＤメッシュＮｏＣトポロジーの例を示す図である。
【図２（ａ）】図２（ａ）は、関連技術の双方向メッシュにおけるＸＹルーティングの一例を示す図である。
【図２（ｂ）】図２（ｂ）は、送信元ノードと送信先ノードとの間の２つの異なったルートを示す図である。
【図３（ａ）】図３（ａ）は、関連技術の２レイヤＮｏＣインターコネクトの一例を示す図である。
【図３（ｂ）】図３（ｂ）は、関連技術におけるホストと複数のＮｏＣレイヤとの間のブリッジ論理回路を示す図である。
【図４（ａ）】図４（ａ）は、トランザクションシーケンス及びトランザクションシーケンスの各々に含まれているメッセージを示す図である。
【図４（ｂ）】図４（ｂ）は、１のトランザクションのメッセージの各々に関する重みを有するトランザクションシーケンスグラフの一例を示す図である。
【図５】図５は、複数のメッセージを有するエージェント間マルチポイントトランザクションを示すエージェント及び／またはエージェントインタフェースのセットの一例を示す図であり、１以上のメッセージがトランザクションに亘って重なり合っている。
【図６】図６は、受信されたトランザクションシーケンス及びそれから生成されるトレースファイルに基づくシミュレーションの実行のフロー図である。
【図７】図７は、エージェントに関するトレースファイルの生成のフロー図である。
【図８】図８は、新しいトラフィックに基づく新しいトランザクションシーケンスの追加及び実行のフロー図である。
【図９】図９は、本命明細書に記載されている実装例が実装され得るコンピュータ／サーバのブロック図である。
【発明を実施するための形態】
【００２９】
以下の詳細な説明は、本出願の図面及び実施例のさらなる詳細を提供するものである。図面間で重複する要素の参照符号及び説明は、明確性のために省略される。明細書に亘って使用される用語は、例示であり、限定することを意図したものではない。例えば、用語「自動的（automatic）」の使用は、本出願の実施例を実施する当業者の所望の実施に基づいて、完全に自動的な実行または特定の実装形態に亘るユーザまたは管理者の制御を含む半自動的な実行を含んでもよい。
【００３０】
ＳｏＣアプリケーショントラフィックプロファイルの特性を明らかにしかつベンチマークするためのＮｏＣインターコネクト性能シミュレーションは、ＮｏＣインターコネクトモデル内のトラフィック生成へのサポートを必要とし得る。ＮｏＣに接続された様々なＳｏＣエージェント／コンポーネントによって生成されかつ消費されるトラフィックがアプリケーションのトラフィック特性を正確に再現することが好ましいが、この目的のために、ＳｏＣエージェントの全てを正確にモデリングすることは非常に複雑であり、シミュレーション速度が遅くなってしまい得る。提案されるシステム及び方法は、ＮｏＣ性能がＳｏＣ内で正確に評価される範囲で、特性ＳＯＣ  ＩＰコアまたはコンポーネントの挙動を正確に再現するための技術並びにメカニズムを実装する。
【００３１】
ＮｏＣ性能特性評価に関する１つの実施例によれば、ＳｏＣのＮｏＣトラフィックプロファイルは、エージェントのインタフェースの様々なペアの間のメッセージのシーケンスを用いて説明され得る。メッセージチェーン（message chain）全体は、トランザクションと称され得、メッセージの各々は代替的にホップと称され得る。ホップの各々は、ビット数におけるメッセージデータ幅及びメッセージデータ長、データレート及びバースト性のレベルの平均及びピークに関するバンド幅特性、遅延制約、または順序における任意の他の制約もしくはメッセージがＮｏＣ内でとる経路等の特性を有してもよい。トランザクション内のメッセージの特性によって、トランザクションの各々は、他の適用可能な属性のうち特に優先度、レートのような１以上の特性に関連付けられ得る。複数のトランザクションは、重複するメッセージを有してもよく、２つのトランザクションは、通過する共通のメッセージを有する。図４（ａ）は、当該図（エージェントインタフェースは図示せず）に示されているように互いに相互通信する４つのエージェントを有する例示のシステムを示しており、それらの間のメッセージは丸に囲まれている数字を付されたエッジ（edge）として示されている。例えば、送信元エージェントｈｐ１から送信先エージェントへ送信されるメッセージは、メッセージ１と称され得る。同様に、送信元エージェントｈｐ２から送信先エージェントｈｐ１に送信されるメッセージは、メッセージ２と称され得る。
【００３２】
図４（ａ）は、メッセージのグラフを介した複数のトランザクションを示している。これを表示するために、ユーザは、別個のトランザクションとして、グラフの経路の各々を独立的に提供してもよい。図４（ａ）は、５つのトランザクションの合計を示しており、各々はｈｐ１とｈｐ２との間のメッセージ１から開始し、全てのトランザクションの間に共通するホップを生成する。様々なトランザクションの間において、追加の共通ホップが存在し得る。例えば、トランザクション１は、ｈｐ１からｈｐ２に送信されてｈｐ２からｈｐ１に返送するメッセージを示している。同様に、トランザクション４は、メッセージ、１、３、５、６、４及び２を介して、ｈｐ１からｈｐ２、ｈｐ３、ｈｐ４、ｈｐ３、ｈｐ２、ｈｐ１と送信されるメッセージを示している。トランザクション毎のメッセージの各々は、どのような頻度でこのホップが実際のＳｏＣシステム内に取り入れられるかを示すレート及び他のメッセージ属性によってマーキングされてもよい。例えば、メッセージ１（ｈｐ１からｈｐ２）のレートは、他のメッセージと比較して高いだろう。なぜならば、メッセージ１は、複数のトランザクションによって共通して使用されるからである。従って、提案されるＮｏＣ性能シミュレーションメカニズムは、エージェントの実際の機能的挙動をシミュレーションすることなくＮｏＣ性能が適正に評価され得る範囲で、全てのマルチホップトランザクションを特定しかつシミュレーションすることを可能にする。
【００３３】
１つの実施例において、トランザクションシーケンスのグラフが構築されて、メッセージが受信されるかまたは送信されるエージェント及び／またはそのインタフェースが示され得る。例えば、図４（ａ）に関して、図４（ｂ）に示されているようなトランザクションシーケンスグラフが生成され得、各々のエッジは送信元エージェントから送信先エージェントへ送信されるメッセージを示す。見て解るように、上の列のノードは、メッセージシーケンスのオンワード送信（onward transmission）を示し、下の列はバックワードのエージェントから受信されるメッセージを示す。当然ながら、図４（ｂ）に示されるようなトランザクションシーケンスグラフ表現は一例であり、任意の他のグラフまたは表現がＳｏＣアーキテクチャの複数のエージェントに亘るトランザクションメッセージフローのシーケンスを表すために生成され得る。通常、グラフは、特定のメッセージの送信元エージェント及び送信先エージェントを表すエッジ／矢印によって示されるトランザクション（１または複数）及びメッセージに関与するエージェント及び／またはエージェントインタフェースを含んでもよい。エージェントに入ってくる矢印によって示されている到着メッセージは、エージェントから出て行く矢印によって示されている出発メッセージをもたらし得る。グラフは、メッセージに付随するトランザクションを含みかつこれを表し得る。１つの実施例において、ツリーレイアウトベースのグラフが生成されて、エージェント及びエージェントがやりとりするメッセージを表す。この場合、１以上のトランザクション／メッセージの開始点として機能するエージェントは、ルートノードとして機能する。
【００３４】
１つの実施例によれば、図４（ｂ）から解るように、所定のトランザクションのメッセージの各々のレート及びメッセージ属性指定に基づいて、メッセージ／エッジに重みが付与され得る。１つの例において、１つのメッセージが複数のトランザクション（図４（ａ）のｈｐ１からｈｐ２のようなもの）内に存在している場合、全てのトランザクション内のメッセージのレートが足し合わされて、グラフ内のメッセージの正味のレートが判定されても良いか、または平均または最大等の代替の関数が適用されてもよい。トランザクションシーケンスグラフの１以上のメッセージへのレートの割り当ては、シミュレーションが、関係しているメッセージまたはホップ／エッジをどの程度の頻度で使用すべきかを示す。なぜならば、実際のＳｏＣアーキテクチャ内でさらに高頻度で使用されるだろうメッセージにおけるシミュレーションをさらに多く実行し、現実の状況の経験を生み出しかつそれに従ってＮｏＣ性能の挙動評価をすることが重要であるからである。１つの実施例によれば、メッセージ／エッジのレートが判明すると、図４（ｂ）に示されるように、それらは重みに正規化され得る。正規化において、任意のノードへの全ての受信エッジまたはそこからの全ての発信エッジの重みは、合計で１になり得る。重み割り当ての一例は図４（ｂ）に示されている。
【００３５】
１つの実施例によれば、トランザクションシーケンスグラフに重みが割り当てられると、ＮｏＣパフォーマンスシミュレータは、これらの重みを用いて、シミュレーションの間に当該グラフにおいて採られ得る経路を確率的に判定し、それに応じて適切なメッセージを生成し得る。例えば、図４（ａ）を参照すると、ｈｐ２からｈｐ３へのメッセージが．２５の重みを有し、ｈｐ２からｈｐ４へのメッセージが．５の重みを有している場合、シミュレーションアーキテクチャは、トランザクションシーケンス及びその中のメッセージを実行して、ｈｐ２からｈｐ４へのメッセージフローの数がｈｐ２からｈｐ３へのメッセージフローの２倍になる。他の例において、重みはメッセージ選択に包含され、任意の所定のエージェントにおいて、発信エッジの全ての中から、重みに基づいて１つ選択され、対応するメッセージが、当該メッセージの他のサイドによって示されているエージェントに向かうＮｏＣ内に入れられる。このメッセージが送信先エージェントに到達すると、対応するノードの発信エッジが調べられ、次のメッセージが生成される。当該次のメッセージが発信エッジの無いノードに到達すると、当該トランザクションが完了したと見なされる。従って、この実施例において、高い重み（メッセージレート、すなわち実際のＳｏＣシステム内のメッセージの使用の頻度を反映している）を有するメッセージは、さらに高い頻度で監視され、それによって、ＳｏＣトラフィックのバンド幅特性が正確に再現される。さらに、トランザクションの後期のメッセージが、以前のメッセージが送信されて送信先エージェントによって消費されることによって生成されるので、ＳｏＣの正確なメッセージ送受信特性がエミュレーション（emulated）され得る。
【００３６】
１つの実施例によれば、グラフが構築されてもよく、当該構築において、ノードからの発信エッジの全ての重みは、正規化の後に１にはならない。この場合、トランザクションシーケンスは、当該ノードにおいて終端してもよいし、ノードからの発信エッジの重みの合計に応じて確率的に継続してもよい。このことは、トランザクションシーケンスがエージェントにおいて終了した際に発生してもよく、その一方で他のトランザクションシーケンスが当該エージェントに到達して他のエージェントに向かって継続する。例えば、２つのトランザクションが等しいレートｈｐ１⇒ｈｐ２及びｈｐ１⇒ｈｐ２⇒ｈｐ３を有している場合、エージェントｈｐ２においては、到着メッセージが終了して第１のトランザクションが形成されてもよいし、当該到着メッセージが継続して第２のトランザクションを形成してもよい。この場合において、ｈｐ２からの発信エッジは重み．５を有し、これはトランザクションがｈｐ２で終了するのとｈｐ３まで継続するのが等しい確率であってもよいことを示している。
【００３７】
１つの実施例によれば、本開示のシミュレータが、ＳｏＣシステムに関して定義されているかまたは定義されるサイズ、値、レート、データ間のインターバル、及び送信元−送信先情報メッセージパラメータ及び属性を含む全てのトランザクションシーケンスにアクセスする権利を有している故に、一度開始されると、トランザクションシーケンスは、自動的に完了され得る。しかし、トランザクションの各々が、メッセージをＮｏＣ内に投入するために当該トランザクションの第１のメッセージを伴って開始される必要がある故に、トレースファイルが形成されて、１または複数のトランザクションの第１のメッセージの詳細及び属性が特定され得る。トレースファイルには、トランザクション全ての第１のメッセージが記述されていてもよい。トランザクションが開始するエージェントのインタフェースの各々に関するトレースファイルが用いられてもよい。トレースファイルは、このエージェントによって開始されるトランザクションの第１のメッセージの情報を、待機インターバルをもって離間しているメッセージのシーケンスの形式で含んでもよく、それによって当該エージェントの転送挙動を取得してもよい。ホストｈｐ１に関する単純なトレースファイルの例が以下に示される。最初のワードは、メッセージの送信先を示し、その後にメッセージの特性が続く。メッセージは、待機インターバルを持って離間している。
ｈｐ２［第１のメッセージの特性及び属性を含んでいる］
待機１０
ｈｐ３［第１のメッセージの特性及び属性を含んでいる］
待機２０
ｈｐ２［第１のメッセージの特性及び属性を含んでいる］
ｈｐ４［第１のメッセージの特性及び属性を含んでいる］
待機２０
上述のｈｐ１に関するトレースファイルは、ｈｐ２への２つのトランザクション、ｈｐ３への１つのトランザクション及びｈｐ４への１つのトランザクションを示している。当該ｈｐ２への２つのトランザクションは同一のトランザクションであり得るか、またはｈｐ２への共通の第１のメッセージを有する異なったトランザクションであり得る。さらに、上述のトレースファイルは、ｈｐ２への第１のトランザクションとｈｐ３へのトランザクションとの間に１０単位の待機時間を示しており、ｈｐ２への第２のトランザクションとｈｐ４へのトランザクションとの間には待機時間は無い。理解されるように、任意の所定のトランザクションの第１のメッセージの待機時間及び特性／属性は、監視されるべきＮｏＣインターコネクトの所望の挙動に基づいて常時変更され得る。さらに、トランザクションの第１のメッセージ及びそれに続く他のメッセージの特性も事前に定義され得、トレースファイルに含まれることを回避している。さらに、以下にさらに詳細に説明するように、トランザクションの第１のメッセージのみの代わりに、トレースファイルは、全てのメッセージシーケンスと共にそのレート／値／サイズ／その他の属性も含み得る。
【００３８】
他の実施例において、異なった第１のメッセージを有する複数のトランザクションがエージェントにおいて開始して場合、任意のトランザクションの第１のメッセージがランダムに用いられてトランザクションが開始される。他の実施例において、トランザクションの各々は平等に選択され得、メッセージシーケンスの全ての均等な実行がなされる。代替的に、トランザクションは、当該トランザクションのメッセージの各々の重みから算出され得る優先度に関連し得、高い優先度を有するトランザクションが比較的に低い優先度を有するトランザクションより頻繁に実行され得る。理解されるように、任意の他のアルゴリズムも、トランザクションシーケンスを実行しかつ選択するために用いられ得、この際、このようなシーケンスが共通のメッセージを有する。
【００３９】
図５は、エージェント及び／またはエージェントインタフェース５００のセットの一例を示しており、複数のメッセージを有するエージェント間マルチポイントトランザクションを示している。ここにおいて、１以上のメッセージがトランザクションに亘って重なり合っている。図５の例は、互いに動作可能に接続されていてもいなくともよいエージェントＡ−Ｉを示している。この例は、７つのトランザクション、すなわちＴ１−Ｔ７も示している。例えば、Ｔ１は、エージェントＢを介してエージェントＡからエージェントＨまで移動する。同様にトランザクションシーケンスＴ５は、エージェントＣ及びＤを介してエージェントＢからエージェントＥまで移動する。上述のトランザクションシーケンスに基づいて、これに従って、トレースファイルは、エージェントＡ、Ｂ、Ｃ及びＤに関して形成され得、これらのエージェントから１以上のトランザクションが開始される。
【００４０】
上述の様に、トランザクションの各々のメッセージの各々は、重み（正規化レート）に関連付けられ得、当該重みは頻度（またはレート）を示してもよく、当該頻度で（当該レートで）関連するメッセージが実際のＳｏＣ実装において使用され得る。さらに、当該重みは、複数の選択肢が所定の送信先ノードにおいて存在する場合に用いられ得るトランザクション及びルートを画定する。例えば、エージェントＡからＢへのメッセージがシミュレーションの間に移動する場合、シミュレータに対して利用可能な次の可能性のある選択肢は、Ｈへの移動（トランザクションＴ１）、Ｉへの移動（トランザクションＴ３）、またはＣへの移動（トランザクションＴ３またはＴ４）を含み得る。このような場合、任意のトランザクションがランダムかまたは周期的に選択され得て、選択における衡平が維持される。またはメッセージ（ＢからＨ、ＢからＩ、及びＢからＣ）に関する重みが算出されかつ最も高いレートを有するメッセージが選択されて、Ｂにおける４つのメッセージの各々において、ＢからＣへのメッセージの重みが．５であり、ＢからＩへのメッセージの重みが．２５であり、ＢからＨへのメッセージの重みが．２５場合、２つは．５に向かい、１つはＩに向かい、１つはＨに向かう。従って、メッセージの重みに基づく比率が維持される。同様に、エージェントＣからＤに向かう共通のメッセージに関して、選択は次の送信先エージェントをＥとして選択するか（Ｔ５）、送信先エージェントとしてＦを選択するか（Ｔ６）、もしくは送信先エージェントをＧとして選択するか（Ｔ７）、またはＤに止まるか（Ｔ４）に関してなされ得る。これらの選択肢の各々の重みが等しい場合、任意のランダムなメッセージシーケンスが選択され得るか、または当該トランザクションはエージェントＤ自体に実際に留まって、トランザクション４が完了し得る。しかし、これは１つの実施例であり、任意の他のモード及びメカニズムがトランザクション及び前方へのメッセージの選択に含まれ得ることが理解されるだろう。
【００４１】
１つの実施例によれば、提案されるシミュレータデザインは、エージェント毎にトレースファイルを読んで、対応する送信先エージェントに対する第１のメッセージを生成し、当該メッセージをＮｏＣインターコネクト内に投入する。当該第１のメッセージは、次の送信先ルータを示すだけではなく、当該第１のメッセージが関連するトランザクションシーケンスを特定する。シミュレータは、ホップメッセージの各々がその送信先に到達した際に残りのホップメッセージを自動的に判定してもよい。メッセージにおいてマッチング（match）する（すなわち、エージェントインタフェースにおいて落ち合いかつ同一の次のメッセージを有する）複数のトランザクションがある場合、その後、トランザクションのメッセージの１つは、トランザクションまたは当該トランザクション内のメッセージのレートに基づいて確率的に選択され得る。例えば、図４（ａ）において、メッセージ１がトレースファイル内にある場合、５つのトランザクションの全てにマッチングする。５つのトランザクションのレートが．３、．３、．１、．２及び．２であると仮定すると、トレースファイル内のメッセージ１は、それらの確率で５つのトランザクションのうちの１つに拡張し得る。トランザクション３がランダムに選択される場合、メッセージ１はｈｐ１において、ｈｐ２に向けられて生成されてもよい。ｈｐ２において、このメッセージが到来すると、最後のメッセージ１がｈｐ２においてｈｐ１に向けて生成されるまでに、このメッセージが、ｈｐ２においてｈｐ３に向けられたメッセージ３を生成する。
【００４２】
他の実施例によれば、さらにユーザに制御させるため、トレースファイルエントリは、第１のメッセージ仕様の一部としてビートの数（number of beats）等の所定の属性を含んでもよい。提供された場合、属性がトレースファイル内の特定の属性とマッチングしているトランザクションのみがトラフィック生成に関して考慮される。
【００４３】
図６は、１つの実施例によるシミュレーションの実行に関するフローを表すブロック図６００を示している。ブロック６０１は、ＮｏＣインターコネクトの性能を対称にしてその特性を明らかするトランザクションシーケンスのセットの受信を示し、ここからシミュレーションが実行される。トランザクションシーケンスの各々は、異なっているかまたは同一の性質／属性を有している１以上のメッセージを含み得、１または複数のトランザクションのメッセージは、共通の送信元及び送信先エージェントを有していてもよい。ブロック６０２は、複数のエージェント間のインターコネクト及び当該複数のエージェントが当該複数のエージェント間で処理するメッセージを表したトランザクションシーケンスグラフの生成を示している。従って、当該シーケンスグラフは、メッセージがトランザクションに亘って共通な範囲を示し得かつ図表として表し得る。当該グラフは、メッセージの各々の重み（正規化されたレート）を示し得、第１のメッセージの高い重みは、シミュレーションの実行中に当該第１のメッセージの仕様の確率が高いことを示している。重みは、関連するメッセージ及び／またはそれに付随するトランザクションがシミュレーションの実行中に含まれるだろう回数を示し得る。
【００４４】
ブロック６０３は、１または複数のトレースファイルを形成する。トレースファイルの各々は、トランザクションシーケンスグラフの生成の実行において、並行してまたは順次生成され得る。トランザクションシーケンスグラフは、単なる例示であり、省略されてもよい。その一方で、トレースファイルは、１または複数のエージェントに対して生成され得、当該１または複数のエージェントの各々に対して、関連するエージェントによって開始されるトランザクションの第１のメッセージを示すのに役立ち得る。トレースファイルは、任意の他の態様においても構成され得、例えば、シミュレーション中に実行されるべきトランザクションの種類を定義する事前条件を設定するために使用され得る。トランザクションの第１のメッセージのみを含む代わりに、トレースファイルは、メッセージ及び／またはトランザクションの各々の性質及び属性の定義と併せて、トランザクションの他のメッセージも含み得る。トレースファイルは、手動で編集され得、複数のトランザクションの実行の間に導入される遅延を有し得る。ブロック６０４において、シミュレーションが実行され、この実行は複数のエージェントのトレースファイル内のそれらのエントリに基づいて１または複数のトランザクションを用いてなされる。このシミュレーションは。ＮｏＣインターコネクトの特有の性能を示し得る性能レポートの生成に役立ち得る。
【００４５】
提案されるシミュレータデザインは、ＳｏＣのトラフィックトランザクションの仕様に基づいてトレースファイルを自動的に生成して、トレースファイルの生成の処理を容易にし得る。その後、ユーザは、これらのファイルをさらに編集して、必要ならばさらに正確にＳｏＣエージェントの挙動を反映させ得る。更新されたトレースファイルは、新しいシミュレーションが開始される時点毎に再読み込みされ得る。この生成されたトレースファイルは仕様において特定されたトランザクションレートをからなっていてもよい。トラフィック仕様内のトランザクションの平均またはピークレートはバースト特性（burstiness properties）、データビートの数等の追加情報に加えて使用され得る。トレースファイルの生成に使用されるアルゴリズムの１つの実施例が以下に説明される。
【００４６】
エージェントＩから、Ｎトランザクションが開始したとする、すなわちＩがＮトランザクションの第１のメッセージを開始したとする。サイクル毎のメッセージの単位において、Ｎ番目のトランザクションのレートをＲnとする。当該レートに基づいて、第１のホップメッセージを含むリストが構築され得る。このリストにおいて、トランザクションＩの第１のメッセージは、Ｒ1×Ｃ回記載され得、第２のメッセージはＲ2＊Ｃ回記載され得、より高いレートを有しているトランザクションがより頻繁に存在することになる。例えば、エージェントＩが５つのトランザクションを、５つの異なった送信先エージェントに対して開始した場合、送信先エージェントの各々をＤ１、Ｄ２、Ｄ３、Ｄ４及びＤ５と称する。この実施例において、Ｄ１を用いるトランザクションシーケンスＤ１が最も高いレートを有し、Ｄ４を用いるトランザクションシーケンスが最も低いレートを有する場合、Ｄ１を用いるトランザクションは最も高い繰り返し確率を有し、Ｃを乗すると、Ｄ１を用いるトランザクションが使用される回数が得られる。アルゴリズムの実装に関して、Ｃは、Ｎ個の整数の最小公倍数であるグローバル定数であり得る。ここでｉ番目の整数は、（ｉｎｔ）１／Ｒｉであり、１／Ｒｉの整数部分である。当該最小公倍数の使用は、様々なホップのインスタンス（instance）の数の整数カウント（integer count）への浮動小数点Ｒｉの変換の故の丸め誤差を最小化し得る。その後、様々なトランザクションの第１のホップのリストは、遅延インターバルを挿入することで正規化されて、様々なトランザクションのレートが正確に反映され得る。遅延インターバルを判定するために、全てのトランザクションのレートは、Ｒ＝ΣＲｉとして足し合わされ得る。Ｒが１よりも大きい場合、遅延インターバルは必要ない。その一方で、Ｒが１未満の場合、リスト内のメッセージは、遅延の１／Ｒサイクルによってスペースが空けられる必要がある。丸め誤差を減少させるために、Ｍ／Ｒ単一サイクル待機インターバルがリスト内に挿入され得る。ここで、Ｍはリスト内のメッセージエントリの全数である。この遅延インターバルは、等しい数のメッセージエントリのスペースが空けられているリスト内に均等に挿入されてもよいし、ランダムになされてもよい。
【００４７】
図７は、トレースファイルを生成するための例示のフロー図７００を示している。７０１において、トレースファイルが形成／生成されるべきエージェントが特定される。７０２において、特定のエージェントから開始するトランザクションが検出される。７０３において、検出されたトランザクションの各々のレートが取得されて、当該トランザクションが繰り返されるべき回数が評価される。ここで、当該レートは、実際のＳｏＣ実装の間にトランザクションシーケンスを選択する確率を示す。７０４において、トランザクションの各々のレート及びトランザクションの各々が実行されるべき回数の算出を容易にする増倍計数に基づいてトランザクションの各々が実行されるべき回数が判定される。７０５において、ステップ７０４において算出されたトランザクションシーケンスの各々が実行されるべき回数に基づいて、トランザクションの各々の複数のエントリがトレースファイル内に生成されて、シミュレーションがトランザクションの各々を、そのレートまたは発生確率に基づいて実行し得る。７０６において、トランザクションのレートの全ての合計が算出される。７０７において、トランザクションのレートの合計が１より大きいかが判定される。７０８において、トランザクションのレートの合計が１（Ｎ）以下である場合、適切な遅延がトランザクションの間に導入され、当該合計が少なくとも１であることが保証される。そうでなく、トランザクションのレートの合計が１（Ｎ）以上である場合、遅延は導入されない。
【００４８】
トランザクションの各々の第１のメッセージの表示と共に、トレースファイルは第１のメッセージ、及び必要ならばそれ以降のメッセージの特性及び／または属性を示し得る。上述のトレースファイルの生成の態様は、１つの実施例であり、任意の他の形式及び態様が、トレースファイルの生成のためにまたはシミュレーションを開始するために使用され得る。従って、他のデザインが、トレースファイルの生成のために多数の代替のアルゴリズムを使用してもよい。
【００４９】
代替のシミュレータのデザインは、トランザクションの各々の複数のメッセージを記述するトレースファイルを使用してもよい。この場合、当該複数のメッセージは、当該システム内のトランザクションのプレフィックス（prefix）を形成してもよく、これらのトランザクションのみが、定義されているプレフィックスとマッチングするシミュレーションに対して使用されてもよい。図４（ａ）に示されている例を検討する。ｈｐ１に対するトレースファイルがｈｐ２のエントリを含む場合、５つのトランザクションの全てがマッチングし、これらのいくつかかが、上述の確率／レート／重みベースのモデルに基づいたシミュレーションの間に利用される。しかし、ｈｐ１に対するトレースファイルが「ｈｐ２及びｈｐ３」のエントリを含む場合、後の４つのトランザクションのみがこのエントリにマッチングし、これらのうちの任意の１つがランダム、またはトランザクション及び／またはそれらに含まれるメッセージの重みに基づいて利用されてもよい。確率モデルは、このようなデザインにおいて調整されて、グラフにおいてどの経路が使用されるかが正確に判定され得る。このデザインにおいて、トレースファイル内にトランザクションのプレフィックスまたはトランザクションの全てが記載されてもよい。この場合、１つのトランザクションのみがマッチングするのでシミュレーションは決定論的になる。さらに、中間のエージェントもトレースファイル内で記載され得、それによりこれらのエージェントを介して移動するトランザクションがシミュレーションプロセス内で実行される。要するに、トレースファイルは、１以上のトランザクションの実行に関する任意の所定の基準を設定し得、トランザクションが１以上のトランザクションの間の遅延と共に実行されるべき回数も定義し得る。
【００５０】
例示のシミュレータデザインは、ユーザが、ＮｏＣのデザインが基づいているオリジナルの仕様とは異なるトラフィックトランザクション仕様に基づいてトレースファイルを形成することを許容し得る。このことは、基準のトラフィックとは異なるトラフィックに関するＮｏＣのシミュレーションを実行するのに有用であり得る。当該新しいトランザクション仕様の定義を容易にするために、当該オリジナルの仕様がテキストファイルに記載され得、当該テキストファイルがユーザによって編集されて仕様に変更が行われ得る。ユーザは、様々なトランザクションの様々なメッセージのレート、及びホップの他のパラメータを変更し得る。しかし、ユーザは新しいトランザクションを追加することはできないだろう。なぜならば、これは当該デザインされたＮｏＣにおいてサポートされていないからである。編集されたトランザクション仕様が読み込まれ得、先んじて記述されているアルゴリズムを用いて、当該仕様に基づいてトレースファイルが自動的に生成され得る。新しいトレースファイルが形成されると、それらは新しいトラフィック仕様の挙動を反映し得、ＮｏＣ性能シミュレーションに関するシミュレータによって使用され得る。ユーザは、トラフィック刺激要因（traffic stimulus）における更なるカスタマイズのためにトレースファイルを編集し得るか、またはオリジナルのシミュレーションのためにオリジナルのトラフィック仕様に戻し得る。このようなシミュレータの実施例は図８に示されている。
【００５１】
図８は、フロー図８００を示しており、図８００に関して、新しいトラフィック及び可能性のあるトランザクションシーケンスがユーザによって手動で追加されるかまたは自動的に実行され得る。８０１において、新しいトラフィックがオリジナルのトラフィックトランザクションプロファイルに追加され、新しいトラフィックが、ＳｏＣ通信の一部を形成し得るエージェント／コンポーネント／知的所有権（ＩＰ）コアの間の新しいトランザクションを示し得る。８０２において、オリジナルのトラフィックトランザクションプロファイルが、新しいトラフィック情報に基づいて更新される。８０３において、更新されたトラフィックトランザクションプロファイルに基づいて、新しいトランザクションシーケンスが生成される。８０４において、当該トランザクションシーケンスの特性が変更され得る。当該変更のステップは、各々のトランザクションシーケンスのメッセージの様々ある属性の中で特にレート、サイズ、値、インターバル等の属性を変更することを含み得る。トランザクションシーケンス及びその中のメッセージは、任意のタイミングでユーザによって変更及び／または変化させられ得、それによってシミュレーションの実行がカスタマイズされる。８０５において、新しいトランザクションシーケンス及びそれらの特性に基づいて、トレースファイルが生成されるかまたは再生成される。このようなトレースファイルは、手動でまたは所定の基準に基づいて補正されて、トランザクション間の遅延、トランザクション／それらのメッセージの各々のパラメータのような因子が変化させられ得る。
その後、８０６において、更新されたかまたは新しく生成されたトレースファイルが、シミュレーションを行うために、かつトランザクションシーケンス内のエントリに基づいたトランザクションシーケンスの実行を開始するために使用され得る。８０７において、シミュレーションの各々が実行されたかまたはシミュレーションの組み合わせが実行された後に性能レポートが生成され、ＮｏＣインターコネクトの性能の分析が促進される。
【００５２】
当該性能レポートは、システムの遅延及びスループットの平均、様々な送信元及び送信先のペアの間のペア毎の遅延及びスループット、最大値及び最小値等を含んでもよい。当該性能レポートは、様々な送信元・送信先ペアによって受信されるスループット比を含み、システム内の様々なホストによって受信される相対的なバンド幅を示してもよい。しかし、実施例はこれに限定されず、実施例の発明概念から逸脱することなく、他の性能レポート情報が代わりに用いられてもよいし、追加して用いられてもよい。
【００５３】
図９は、実施例が実装され得る例示のコンピュータシステム９００を示している。コンピュータシステム９００は、Ｉ／Ｏユニット９３５、記憶装置９６０、及び当業者に知られている１または複数のユニットを実行することが可能なプロセッサ９１０を含んでもよいサーバ９０５を含んでいる。本明細書で使用される用語「コンピュータ可読媒体」は、実行のためにプロセッサ９１０に命令を提供することに関与する任意の媒体を言い、当該媒体は、限定するわけではないが、光ディスク、磁気ディスク、リードオンリーメモリ、ランダムアクセスメモリ、ソリッドステートデバイス及びドライブ、または電子情報を保存するのに適した任意の他のタイプの有形的媒体（tangible media）もしくは搬送波を含むことが可能なコンピュータ可読信号媒体等のコンピュータ可読媒体の形式で提供されてもよい。Ｉ／Ｏユニットは、キーボード、マウス、タッチデバイスまたは音声コマンド等の入力デバイスを用いてもよいユーザインタフェース９４０及びオペレータインタフェース９４５からの入力を処理する。
【００５４】
サーバ９０５は、コンピュータが実行可能コードを読み取ることが可能な、ポータブルハードディスクドライブ、光メディア（ＣＤまたはＤＶＤ）、ディスクメディアまたは任意の他のメディア等のリムーバブル記憶装置を含み得る外部記憶装置９５０に接続されていてもよい。当該サーバは、ディスプレイのような出力デバイス９５５に接続されて、ユーザにデータ及び他の情報を出力しかつユーザからの追加の情報を要求してもよい。サーバ９０５からユーザインタフェース９４０、オペレータインタフェース９４５、外部記憶装置９５０及び出力デバイス９５５への接続は、ワイヤレスプロトコル、８０２．１１規格、ブルートゥース（登録商標）もしくはセルラープロトコル等の無線プロトコルを介して、またはケーブルもしくは光ファイバ等の物理伝送媒体を介していてもよい。出力デバイス９５５は、さらに、ユーザとのやりとりのための入力デバイスとして動作してもよい。
【００５５】
プロセッサ９１０は、１または複数のモジュールを実行してもよい。トランザクション入力モジュール９１１は、所定のＮｏＣに関するトランザクションシーケンスを受信するように構成されていてもよい。トランザクションシーケンスの各々は、送信元エージェントから送信先エージェントに向かうようになされた１または複数のメッセージを含んでいてもよい。トランザクションシーケンスグラフ生成モジュール９１２は、トランザクションシーケンスに含まれるメッセージ及びエージェントに基づいてシーケンスグラフを生成するように構成されてもよい。トレースファイル生成モジュール９１３は、開始メッセージを示すか、または１または複数のトランザクションシーケンスの第１のメッセージの送信先エージェントを示すとともにメッセージの各々の属性と他のメッセージの属性との間の待機時間の設定を許容するトレースファイルを生成するように構成されてもよい。トランザクションシミュレーションモジュール９１４は、当該生成されたトレースファイルに基づく１または複数のトランザクションシーケンスのシミュレーションを実行するように構成されていてもよい。
【００５６】
トランザクションシーケンス入力モジュール９１１、トランザクションシーケンスグラフ生成モジュール９１２、トレースファイル生成モジュール９１３、及びトランザクションシミュレーションモジュール９１４は、所望の実施態様に応じて様々な方法で互いに相互作用してもよい。例えば、トランザクションシーケンスグラフ生成モジュール９１２は、入力モジュール９１１からトランザクションシーケンスを取得し、トランザクションシーケンスの各々に関して、トランザクションシーケンスのメッセージの各々に関与するエージェントを特定し、エージェントの全てをそれらのメッセージと共に示すシーケンスグラフを生成する。モジュール９１２は、さらに、トランザクションのメッセージの各々に重みを関連付けるように形成され得る。さらに、トレースファイル生成モジュール９１３は、入力モジュール９１１からの入力を取得して、含まれるべきトランザクションの各々の第１のメッセージのリストを含むようにエージェントの各々に関するトレースファイルの生成を促進する。トレースファイル生成モジュール９１３は、トランザクションシーケンスグラフ生成モジュール９１２と動作可能に接続されて、メッセージの各々に関する特性がトレースファイル内に追加され、当該ファイル内に待機時間が含められて、トランザクションが実行され得るレートの設定が可能とされ得る。
【００５７】
本詳細な説明のいくつかの部分は、コンピュータ内のアルゴリズムとして及び動作の記号表現として表されている。これらのアルゴリズム的記載及び記号表現は、情報処理分野の当業者によって、他の当業者に新しい考えの本質を最も効果的に伝えるために用いられる手段である。アルゴリズムは、所望の最終状態または結果を導く一連の定義済みのステップである。実施例において、実行されるステップは、具体的な成果を達成するための具体的な量の物理的操作を必要とする。
【００５８】
さらに、本出願の他の実施例は、本明細書に開示されている実施例の仕様及び実行を考慮することによって、当業者に明らかに理解される。様々な説明された実施例の態様及び／またはコンポーネントは、単一でまたは任意の組み合わせで用いられてもよい。仕様及び実施例は例示として理解されることが意図され、本出願の真の範囲及び精神は、添付の特許請求の範囲によって示されることが意図されている。
【図１（ａ）】
2016527636.tif 000003
【図１（ｂ）】
2016527636.tif 000004
【図１（ｃ）】
2016527636.tif 000005
【図１（ｄ）】
2016527636.tif 000006
【図２（ａ）】
2016527636.tif 000007
【図２（ｂ）】
2016527636.tif 000008
【図３（ａ）】
2016527636.tif 000009
【図３（ｂ）】
2016527636.tif 000010
【図４（ａ）】
2016527636.tif 000011
【図４（ｂ）】
2016527636.tif 000012
【図５】
2016527636.tif 000013
【図６】
2016527636.tif 000014
【図７】
2016527636.tif 000015
【図８】
2016527636.tif 000016
【図９】
2016527636.tif 000017
【国際調査報告】
2016527636.tif 000018
2016527636.tif 000019
2016527636.tif 000020