(57)【特許請求の範囲】
【請求項１】
ネットワーク・オン・チップ（‘ＮＯＣ’）でのデータ処理の方法であって、前記ＮＯＣは、統合プロセッサ（‘ＩＰ’）ブロックと、ルータと、メモリ通信コントローラと、ネットワーク・インターフェース・コントローラとを含み、各ＩＰブロックはメモリ通信コントローラとネットワーク・インターフェース・コントローラとを通してルータに適合させられ、各メモリ通信コントローラはＩＰブロックとメモリとの間の通信を制御し、各ネットワーク・インターフェース・コントローラはルータを通してＩＰブロック間通信を制御し、前記方法は、
前記ネットワークを、少なくとも１つのＩＰブロックを各々含むとともに独自の物理メモリ・アドレス空間への排他的アクセスを各々割り当てられるパーティションに組織するステップであって、前記ネットワーク内で互いに隣接しあうルータのパーティションを構成するステップをさらに含み、前記パーティションの境界に沿うルータは、前記パーティションの外側で生じた前記パーティション内のネットワーク位置へアドレス指定されているメッセージを遮断する、前記組織するステップと、
前記パーティションのうちの１つ以上において１つ以上のアプリケーションを実行するステップと、
を含む、方法。
【請求項２】
前記ネットワークをパーティションに組織する前記ステップは、前記ネットワーク内で互いに隣接しあうルータのパーティションを構成するステップをさらに含み、前記パーティションの境界に沿うルータは、前記パーティション内で生じた前記パーティションの外側のネットワーク位置へアドレス指定されているメッセージが前記パーティションから出ることを妨げる、請求項１に記載の方法。
【請求項３】
前記ネットワークをパーティションに組織する前記ステップは、前記ネットワーク内で全てが互いに隣接しあっているわけではないルータのパーティションを構成するステップをさらに含み、各ルータは前記パーティションの外側のネットワーク・アドレスへアドレス指定されている前記ルータのＩＰブロックからのパケットを落とすように構成されるとともに前記ルータのＩＰブロックへアドレス指定されている前記パーティションの外側のネットワーク・アドレスからのパケットを落とすようにも構成されている、請求項１に記載の方法。
【請求項４】
前記ネットワークをパーティションに組織する前記ステップは、ホスト・インターフェース・プロセッサをパーティション上にインスタンス化するステップをさらに含み、前記パーティション上の前記ホスト・インターフェース・プロセッサは、前記パーティション上で実行する前記アプリケーションと前記パーティションの外側の他のコンピュータ・リソースとの間の通信のためにインターフェースを露出させる、請求項１に記載の方法。
【請求項５】
前記ホスト・インターフェース・プロセッサによって、前記パーティション内の前記ＩＰブロック上の１つ以上の実行のスレッドをプログラム・ロードのためのベクトル・アドレスで設定するステップをさらに含む、請求項４に記載の方法。
【請求項６】
前記パーティションのうちの１つ以上において１つ以上のアプリケーションを実行する前記ステップは、
前記アプリケーションのうちの少なくとも１つを、ステージＩＤにより特定されるコンピュータ・プログラム命令の柔軟に設定可能なモジュールをそれぞれ含むステージにパイプライン化するステップと、
各ステージを同じパーティション内のＩＰブロックで実行のスレッドにおいて実行するステップと、
をさらに含む、請求項１に記載の方法。
【請求項７】
少なくとも２つのパーティションが物理メモリ・アドレス空間のセグメントを共有する、請求項１に記載の方法。
【請求項８】
統合プロセッサ（‘ＩＰ’）ブロックと、ルータと、メモリ通信コントローラと、ネットワーク・インターフェース・コントローラとを含むネットワーク・オン・チップ（‘ＮＯＣ’）であって、各ＩＰブロックはメモリ通信コントローラとネットワーク・インターフェース・コントローラとを通してルータに適合させられ、各メモリ通信コントローラはＩＰブロックとメモリとの間の通信を制御し、各ネットワーク・インターフェース・コントローラはルータを通してＩＰブロック間通信を制御し、
前記ネットワークは、少なくとも１つのＩＰブロックを各々含むとともに独自の物理メモリ・アドレス空間への排他的アクセスを各々割り当てられるパーティションに組織され、前記ネットワーク内で互いに隣接しあうルータのパーティションをさらに含み、前記パーティションの境界に沿うルータは、前記パーティションの外側で生じた前記パーティション内のネットワーク位置へアドレス指定されているメッセージを遮断し、
前記パーティションのうちの１つ以上において１つ以上のアプリケーションを実行する、
ＮＯＣ。
【請求項９】
パーティションに組織された前記ネットワークは、前記ネットワーク内で互いに隣接しあうルータのパーティションをさらに含み、前記パーティションの境界に沿うルータは、前記パーティション内で生じた前記パーティションの外側のネットワーク位置へアドレス指定されているメッセージが前記パーティションから出ることを妨げる、請求項８に記載のＮＯＣ。
【請求項１０】
パーティションに組織された前記ネットワークは、前記ネットワーク内で全てが互いに隣接しあっているわけではないルータのパーティションをさらに含み、各ルータは前記パーティションの外側のネットワーク・アドレスへアドレス指定されている前記ルータのＩＰブロックからのパケットを落とすように構成されるとともに前記ルータのＩＰブロックへアドレス指定されている前記パーティションの外側のネットワーク・アドレスからのパケットを落とすようにも構成されている、請求項８に記載のＮＯＣ。
【請求項１１】
パーティションに組織された前記ネットワークは、パーティション上にインスタンス化されたホスト・インターフェース・プロセッサをさらに含み、前記パーティション上の前記ホスト・インターフェース・プロセッサは、前記パーティション上で実行する前記アプリケーションと前記パーティションの外側の他のコンピュータ・リソースとの間の通信のためにインターフェースを露出させる、請求項８に記載のＮＯＣ。
【請求項１２】
前記パーティションのうちの１つ以上の上で実行する前記１つ以上のアプリケーションに関して、
前記アプリケーションのうちの少なくとも１つはステージにパイプライン化され、各ステージは、ステージＩＤにより特定されるコンピュータ・プログラム命令の柔軟に設定可能なモジュールを含み、
各ステージを、同じパーティション内のＩＰブロックで実行のスレッドにおいて実行する、
請求項８に記載のＮＯＣ。
【請求項１３】
少なくとも２つのパーティションが物理メモリ・アドレス空間のセグメントを共有する、請求項８に記載のＮＯＣ。
【請求項１４】
ネットワーク・オン・チップ（‘ＮＯＣ’）でのデータ処理のためのコンピュータ・プログラムであって、前記ＮＯＣは、統合プロセッサ（‘ＩＰ’）ブロックと、ルータと、メモリ通信コントローラと、ネットワーク・インターフェース・コントローラとを含み、各ＩＰブロックはメモリ通信コントローラとネットワーク・インターフェース・コントローラとを通してルータに適合させられ、各メモリ通信コントローラはＩＰブロックとメモリとの間の通信を制御し、各ネットワーク・インターフェース・コントローラはルータを通してＩＰブロック間通信を制御し、前記コンピュータ・プログラムは、
前記ネットワークを、少なくとも１つのＩＰブロックを各々含むとともにそれ自身の物理メモリ・アドレス空間を各々有するパーティションに組織するステップであって、前記ネットワーク内で互いに隣接しあうルータのパーティションを構成するステップをさらに含み、前記パーティションの境界に沿うルータは、前記パーティションの外側で生じた前記パーティション内のネットワーク位置へアドレス指定されているメッセージを遮断する、前記組織するステップと、
前記パーティションのうちの１つ以上において１つ以上のアプリケーションを実行するステップと、
をＮＯＣに実行させるためのコンピュータ・プログラム命令を含む、コンピュータ・プログラム。
【請求項１５】
前記ネットワークをパーティションに組織する前記ステップは、前記ネットワーク内で互いに隣接しあうルータのパーティションを構成するステップをさらに含み、前記パーティションの境界に沿うルータは、前記パーティション内で生じた前記パーティションの外側のネットワーク位置へアドレス指定されているメッセージが前記パーティションから出ることを妨げる、請求項１４に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デザイン構造に関し、特にネットワーク・オン・チップ（‘ＮＯＣ’）でのデータ処理のためのデザイン構造に関する。
【０００２】
本出願は、２００７年１１月２７日に出願された米国特許出願第１１／９４５，３９６号、および、その一部継続出願である２００８年４月１４日に出願された米国特許出願第１２／１０２，０３８号について、これらの出願を基礎にして優先権を主張する。
【背景技術】
【０００３】
広く使われているデータ処理のパラダイムが２つある、すなわち、多重命令多重データ（‘ＭＩＭＤ’）と単一命令多重データ（‘ＳＩＭＤ’）とである。ＭＩＭＤ処理では、コンピュータ・プログラムは、通例、大量の共有されるメモリへの高速ランダム・アクセスを各々必要とする、幾分独立して動作する１つ以上の実行のスレッドとして特徴付けられる。ＭＩＭＤは、例えば、ワードプロセッサ、スプレッドシート、データベース・マネージャ、例えばブラウザのような多くの形の電気通信などを含む、それに合う特定のクラスのプログラムのために最適化されたデータ処理パラダイムである。
【０００４】
ＳＩＭＤは、多数のプロセッサ上で並行して同時に動作する単一のプログラムにより特徴付けられ、そのプログラムの各インスタンスは同じ仕方で、ただし別々のデータ・アイテムに対して、作用する。ＳＩＭＤは、例えば、多くの形のデジタル信号処理、ベクトル処理などを含む、それに合う特定のクラスのアプリケーションのために最適化されているデータ処理パラダイムである。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、純粋なＳＩＭＤデータ処理も純粋なＭＩＭＤデータ処理もそれのために最適化されていない、例えば多くの実世界シミュレーション・プログラムを含む、別のクラスのアプリケーションがある。そのクラスのアプリケーションは、並行処理から利益を得ると共に、また共有されるメモリへの高速ランダム・アクセスを必要とするアプリケーションを含む。そのクラスのプログラムのためには、純粋なＭＩＭＤシステムは高度の並行性を提供せず、純粋なＳＩＭＤシステムは主要な記憶装置への高速ランダム・アクセスを提供しない。
【課題を解決するための手段】
【０００６】
デザイン構造が提供される。このデザイン構造の実施態様はネットワーク・オン・チップ（‘ＮＯＣ’）を含み、該ＮＯＣは、統合プロセッサ（‘ＩＰ’）ブロックと、ルータと、メモリ通信コントローラと、ネットワーク・インターフェース・コントローラとを含み、各ＩＰブロックはメモリ通信コントローラとネットワーク・インターフェース・コントローラとを通してルータに適合させられ、各メモリ通信コントローラはＩＰブロックとメモリとの間の通信を制御し、各ネットワーク・インターフェース・コントローラはルータを通してＩＰブロック間通信を制御し、該ネットワークはパーティションに組織され、各パーティションは少なくとも１つのＩＰブロックを含み、各パーティションに独自の物理メモリ・アドレス空間への排他的アクセスが割り当てられ、１つ以上のアプリケーションが該パーティションのうちの１つ以上のパーティション上で実行する。
【０００７】
本発明の上記のおよびその他の目的、特徴および利点は、添付図面に示されている本発明の代表的実施態様についての以下のより具体的な記述から明らかとなろう。添付図面では、同じ参照番号は一般に本発明の代表的実施態様の同じ部分を表す。
【発明を実施するための最良の形態】
【０００８】
添付図面を始めに図１から参照して、本発明に従うＮＯＣでのデータ処理のための代表的な装置および方法を説明する。図１は、本発明の実施態様に従うＮＯＣでのデータ処理に有益な代表的コンピュータ（１５２）を含む自動計算機のブロック図を示す。図１のコンピュータ（１５２）は少なくとも１つのコンピュータ・プロセッサ（１５６）または‘ＣＰＵ’とランダム・アクセス・メモリ（１６８）（‘ＲＡＭ’）とを含み、このＲＡＭは、高速メモリ・バス（１６６）とバス・アダプタ（１５８）とを通してプロセッサ（１５６）とコンピュータ（１５２）の他のコンポーネントとに接続されている。
【０００９】
ＲＡＭ（１６８）には例えばワード・プロセッシング、スプレッドシート、データベース操作、ビデオ・ゲーム、株式市場シミュレーション、原子量子過程シミュレーションなどの特定のデータ処理タスクを実行するためのユーザ・レベルのコンピュータ・プログラム命令のモジュールであるアプリケーション・プログラム（１８４）、または他のユーザ・レベル・アプリケーションが格納されている。ＲＡＭ（１６８）にはオペレーティング・システム（１５４）も格納されている。本発明の実施態様に従うＮＯＣでのデータ処理に役立つオペレーティング・システムは、ＵＮＩＸ（The Open Group の商標）、Ｌｉｎｕｘ（Linus Torvalds の商標）、Ｍｉｃｒｏｓｏｆｔ  ＸＰ（Microsoft Corporation の商標）、ＡＩＸ（IBMCorporation の商標）、ＩＢＭのｉ５／ＯＳ（IBM Corporation の商標）、および当業者が想到する他のものを含む。図１の例におけるオペレーティング・システム（１５４）およびアプリケーション（１８４）はＲＡＭ（１６８）の中に示されているけれども、その様なソフトウェアの多くのコンポーネントは、通例、例えばディスク・ドライブ（１７０）などの不揮発性メモリにも格納される。
【００１０】
例としてのコンピュータ（１５２）は本発明の実施態様に従う２つの例としてのＮＯＣ、すなわちビデオ・アダプタ（２０９）とコプロセッサ（１５７）と、を含む。ビデオ・アダプタ（２０９）は、表示スクリーンまたはコンピュータ・モニタのような表示装置（１８０）へのグラフィック出力のために特別に設計されたＩ／Ｏアダプタの例である。ビデオ・アダプタ（２０９）は、高速ビデオ・バス（１６４）と、バス・アダプタ（１５８）と、高速バスであるフロント・サイド・バス（１６２）とを通してプロセッサ（１５６）に接続されている。
【００１１】
例としてのＮＯＣコプロセッサ（１５７）は、バス・アダプタ（１５８）と、高速バスであるフロント・サイド・バス（１６２，１６３）とを通してプロセッサ（１５６）に接続されている。図１のＮＯＣコプロセッサは、主なプロセッサ（１５６）の命令を受けて特定のデータ処理タスクを高速化するように最適化されている。
【００１２】
図１の例としてのＮＯＣビデオ・アダプタ（２０９）とＮＯＣコプロセッサ（１５７）とは本発明の実施態様に従うＮＯＣをそれぞれ含んでおり、該ＮＯＣは、統合プロセッサ（‘ＩＰ’）ブロックと、ルータと、メモリ通信コントローラと、ネットワーク・インターフェース・コントローラとを含み、各ＩＰブロックはメモリ通信コントローラとネットワーク・インターフェース・コントローラとを通してルータに適合させられ、各メモリ通信コントローラはＩＰブロックとメモリとの間の通信を制御し、各ネットワーク・インターフェース・コントローラはルータを通してＩＰブロック間通信を制御する。ＮＯＣビデオ・アダプタとＮＯＣコプロセッサとは、並行処理を用いるプログラムのために最適化されており、共有されるメモリへの高速ランダム・アクセスをやはり必要とする。該ＮＯＣ構造と動作の詳細を以下で図２−図４を参照して論じる。
【００１３】
図１のコンピュータ（１５２）は、拡張バス（１６０）とバス・アダプタ（１５８）とを通してプロセッサ（１５６）とコンピュータ（１５２）の他のコンポーネントとに結合されたディスク・ドライブ・アダプタ（１７２）を含む。ディスク・ドライブ・アダプタ（１７２）は、ディスク・ドライブ（１７０）の形の不揮発性データ記憶装置をコンピュータ（１５２）に接続する。本発明の実施態様に従うＮＯＣでのデータ処理のためにコンピュータにおいて役に立つディスク・ドライブ・アダプタは、インテグレーテッド・ドライブ・エレクトロニクス（‘ＩＤＥ’）アダプタ、スモール・コンピュータ・システム・インターフェース（‘ＳＣＳＩ’）アダプタ、および当業者が想到する他のものを含む。光ディスク・ドライブ、電気的に消去可能なプログラマブルな読み出し専用メモリ（いわゆる‘ＥＥＰＲＯＭ’または‘フラッシュ’メモリ）、ＲＡＭドライブ、および当業者が想到する他のものなどの不揮発性コンピュータ・メモリも実装され得る。
【００１４】
図１の例としてのコンピュータ（１５２）は１つ以上の入出力（‘Ｉ／Ｏ’）アダプタ（１７８）を含む。Ｉ／Ｏアダプタは、例えば、コンピュータ表示スクリーンのような表示装置への出力と、またキーボードおよびマウスのようなユーザ入力装置（１８１）からのユーザ入力とを制御するためのソフトウェア・ドライバとコンピュータ・ハードウェアとを通して、ユーザ指向入出力を実現する。
【００１５】
図１の代表的なコンピュータ（１５２）は、他のコンピュータ（１８２）とのデータ通信のための、またデータ通信ネットワーク（１０１）とのデータ通信のための、通信アダプタ（１６７）を含む。その様なデータ通信は、ＲＳ−２３２接続を通して、ユニバーサル・シリアル・バス（‘ＵＳＢ’）のような外部バスを通して、ＩＰデータ通信ネットワークのようなデータ通信ネットワークを通して、また当業者が想到する他の方法で、シリアルに実行され得る。通信アダプタは、１つのコンピュータがそれを通してデータ通信メッセージを他のコンピュータに直接にあるいはデータ通信ネットワークを通して送信するハードウェア・レベルのデータ通信を実現する。本発明の実施態様に従うＮＯＣでのデータ処理に役立つ通信アダプタの例は、有線ダイヤルアップ通信のためのモデム、有線データ通信ネットワーク通信のためのイーサネット（ＩＥＥＥ８０２．３）アダプタ、および無線データ通信ネットワーク通信のための８０２．１１アダプタを含む。
【００１６】
更なる説明のために、図２は、本発明の実施態様に従う例としてのＮＯＣ（１０２）の機能ブロック図を示す。図１の例におけるＮＯＣは‘チップ’（１００）において、すなわち集積回路において実現される。図２のＮＯＣ（１０２）は、統合プロセッサ（‘ＩＰ’）ブロック（１０４）と、ルータ（１１０）と、メモリ通信コントローラ（１０６）と、ネットワーク・インターフェース・コントローラ（１０８）とを含む。各ＩＰブロック（１０４）は、メモリ通信コントローラ（１０６）とネットワーク・インターフェース・コントローラ（１０８）とを通してルータ（１１０）に適合させられている。各メモリ通信コントローラはＩＰブロックとメモリとの間の通信を制御し、各ネットワーク・インターフェース・コントローラ（１０８）はルータ（１１０）を通してＩＰブロック間の通信を制御する。
【００１７】
図２のＮＯＣ（１０２）において、各ＩＰブロックは、該ＮＯＣ内でのデータ処理のための構成要素として用いられた同期または非同期の論理設計の再使用可能な単位を表す。‘ＩＰブロック’という用語は、時には、‘知的財産権（ｉｎｔｅｌｌｅｃｔｕａｌ  ｐｒｏｐｅｒｔｙ）ブロック’と展開され、実際上、ＩＰブロックを、半導体回路の他のユーザまたは設計者にライセンスされるべき一当事者により所有されるデザインとして、すなわち一当事者の知的財産権として、指定する。しかし、本発明の範囲内では、ＩＰブロックが特定の所有権に従属する必要は無くて、この用語はこの明細書において常に‘統合プロセッサ（ｉｎｔｅｇｒａｔｅｄ  ｐｒｏｃｅｓｓｏｒ）ブロックと展開される。ここで明示されるＩＰブロックは、知的財産権の対象であってもなくてもよい論理、セル、またはチップ・レイアウト・デザインの再使用可能な単位である。ＩＰブロックは、ＡＳＩＣチップ・デザインまたはＦＰＧＡ論理デザインとして形成され得る論理コアである。
【００１８】
ＩＰブロックを類推により説明する１つの仕方は、ＩＰブロックはＮＯＣデザインにとってはコンピュータ・プログラミングにとってのライブラリあるいは印刷回路基板デザインにとっての個別集積回路コンポーネントと同様であると言うことである。本発明の実施態様に従うＮＯＣでは、ＩＰブロックは、一般的ゲート・ネットリストとして、完全な特殊目的のまたは汎用のマイクロプロセッサとして、あるいは当業者が想到し得る他の仕方で、実装され得る。ネットリストは、高レベル・プログラム・アプリケーションのためのアセンブリ・コード・リスティングに類似する、ＩＰブロックの論理機能のブール代数表示（ゲート、スタンダード・セル）である。ＮＯＣは、例えば、ベリログ（Ｖｅｒｉｌｏｇ）またはＶＨＤＬのようなハードウェア記述言語で記述される合成可能な形でも実装され得る。ネットリストおよび合成可能なインプリメンテーションに加えて、ＮＯＣは低レベルの物理的記述でも配布され得る。ＳＥＲＤＥＳ、ＰＬＬ、ＤＡＣ、ＡＤＣなどのようなアナログＩＰブロック・エレメントは、ＧＤＳＩＩのようなトランジスタ・レイアウト・フォーマットで配布され得る。ＩＰブロックのデジタル・エレメントも、時にはレイアウト・フォーマットで提供される。
【００１９】
図２の例において各ＩＰブロック（１０４）は、メモリ通信コントローラ（１０６）を通してルータ（１１０）に適合させられる。各メモリ通信コントローラは、ＩＰブロックとメモリとの間のデータ通信を提供する同期論理回路と非同期論理回路の集合である。ＩＰブロックとメモリとの間のその様な通信の例は、メモリ・ロード命令とメモリ・ストア命令とを含む。メモリ通信コントローラ（１０６）について、以下で図３を参照してより詳しく説明する。
【００２０】
図２の例において各ＩＰブロック（１０４）は、また、ネットワーク・インターフェース・コントローラ（１０８）を通してルータ（１１０）に適合させられている。各ネットワーク・インターフェース・コントローラ（１０８）は、ＩＰブロック（１０４）間でのルータ（１１０）を通しての通信を制御する。ＩＰブロック間での通信の例は、並列のアプリケーションにおいて、またパイプライン型アプリケーションにおいて、ＩＰブロック間のデータを処理するためにデータおよび命令を伝えるメッセージを含む。ネットワーク・インターフェース・コントローラ（１０８）について、以下で図３を参照してより詳しく説明する。
【００２１】
図２の例において各ＩＰブロック（１０４）はルータ（１１０）に適合させられている。ルータ（１１０）とルータ間のリンク（１２０）とはＮＯＣのネットワーク動作を実現する。リンク（１２０）は、全てのルータを接続する物理的な並列ワイヤ・バスで実現されるパケット構造である。すなわち、各リンクは、全てのヘッダ情報とペイロード・データとを含むデータ交換パケット全体を同時に収容するために充分に広いバスで実現される。例えばパケット構造が８バイトの１つのヘッダと５６バイトのペイロード・データとを含んで６４バイトを含むならば、各リンクに対するワイヤ・バスは６４バイト関連で、５１２本のワイヤである。さらに、各リンクは双方向的であるので、リンク・パケット構造が６４バイトを含むならば、ワイヤ・バスは、実際には、各ルータと、ネットワーク内の隣接ルータの各々との間に１０２４本のワイヤを含む。１つのメッセージは２つ以上のパケットを含み得るけれども、各パケットはワイヤ・バスの幅に正確にはまる。ルータとワイヤ・バスの各セクションとの間の接続部がポートと称されるのであれば、各ルータは５個のポートを、すなわちネットワークでのデータ伝送の４方向の各々のために１つずつのポートと、メモリ通信コントローラおよびネットワーク・インターフェース・コントローラを通して該ルータを特定のＩＰブロックに適合させるための第５のポートと、を含む。
【００２２】
図２の例において各メモリ通信コントローラ（１０６）は、ＩＰブロックとメモリとの間の通信を制御する。メモリは、オフ・チップ・メモリ（メインＲＡＭ）（１１２）と、メモリ通信コントローラ（１０６）を通してＩＰブロックに直接接続されたメモリ（１１５）と、ＩＰブロックとして動作可能にされるオン・チップ・メモリ（１１４）と、オン・チップ・キャッシュとを含むことができる。図２のＮＯＣでは、例えばオン・チップ・メモリ（１１４，１１５）のいずれも、オン・チップ・キャッシュ・メモリとして実現され得る。これらの形のメモリは全て同じアドレス空間、物理アドレスあるいは仮想アドレス、に配置されることができ、ＩＰブロックに直接取り付けられるメモリについてもそうである。従って、メモリ・アドレス指定されたメッセージはＩＰブロックに関して完全に双方向的であることができる。なぜならば、その様なメモリはネットワーク上の何処のどのＩＰブロックからも直接アドレス指定され得るからである。ＩＰブロック上のメモリ（１１４）は、そのＩＰブロックから、あるいは該ＮＯＣ内の他の任意のＩＰブロックから、アドレス指定され得る。メモリ通信コントローラに直接取り付けられているメモリ（１１５）は、そのメモリ通信コントローラによってネットワークに適合させられているＩＰブロックによりアドレス指定されることができ、また該ＮＯＣ内の何処の他のどのＩＰブロックからもアドレス指定され得る。
【００２３】
該ＮＯＣ例は２つのメモリ管理ユニット（‘ＭＭＵ’）（１０７，１０９）を含んでおり、本発明の実施態様に従うＮＯＣのための２つの代替メモリ・アーキテクチャを示す。ＭＭＵ（１０７）はＩＰブロックと共に実現されており、このＩＰブロック内のプロセッサが仮想メモリにおいて動作することを可能にし、同時にＮＯＣの残りのアーキテクチャ全体が物理メモリ・アドレス空間において動作することを可能にする。ＭＭＵ（１０９）はオフ・チップで実現され、データ通信ポート（１１６）を通してＮＯＣに接続されている。ポート（１１６）は、ＮＯＣとＭＭＵとの間で信号を伝導するために必要とされるピンおよびその他の相互接続部と、メッセージ・パケットをＮＯＣパケット・フォーマットから外部ＭＭＵ（１０９）により要求されるバス・フォーマットに変換するための充分なインテリジェンスとを含む。ＭＭＵが外部に配置されているということは、ＮＯＣの全てのＩＰブロック内の全プロセッサが仮想メモリ・アドレス空間において動作でき、オフ・チップ・メモリの物理アドレスへの全ての変換がオフ・チップＭＭＵ（１０９）によって処理されることを意味する。
【００２４】
ＭＭＵ（１０７，１０９）の使用により示される２つのメモリ・アーキテクチャに加えて、データ通信ポート（１１８）は、本発明の実施態様に従うＮＯＣにおいて有益な第３のメモリ・アーキテクチャを示す。ポート（１１８）は、ＮＯＣ（１０２）のＩＰブロック（１０４）とオフ・チップ・メモリ（１１２）との間の直接接続を提供する。処理経路にＭＭＵが無いので、このアーキテクチャは、ＮＯＣの全てのＩＰブロックによる物理アドレス空間の利用を提供する。そのアドレス空間を双方向的に共有して、ＮＯＣの全ＩＰブロックは、ポート（１１８）に直接接続されているＩＰブロックを通して向けられたロードおよびストアを含むメモリ・アドレス指定されたメッセージにより該アドレス空間内のメモリにアクセスすることができる。ポート（１１８）は、ＮＯＣとオフ・チップ・メモリ（１１２）との間で信号を伝導するために必要とされるピンおよびその他の相互接続部と、メッセージ・パケットをＮＯＣパケット・フォーマットからオフ・チップ・メモリ（１１２）により要求されるバス・フォーマットに変換するための充分なインテリジェンスとを含む。
【００２５】
図２の例では、ＩＰブロックのうちの１つはホスト・インターフェース・プロセッサ（１０５）と称されている。ホスト・インターフェース・プロセッサ（１０５）は、ＮＯＣと、ＮＯＣをそれにインストールできるホスト・コンピュータ（１５２）との間のインターフェースを提供し、また、例えば、ホスト・コンピュータからのＮＯＣデータ処理リクエストのＩＰブロック間での受信およびディスパッチを含むデータ処理サービスをＮＯＣ上の他のＩＰブロックに提供する。ＮＯＣは、例えば、図１に関して上で記述されたように、より大きなコンピュータ（１５２）上のビデオ・グラフィックス・アダプタ（２０９）またはコプロセッサ（１５７）を実現することができる。図２の例においては、ホスト・インターフェース・プロセッサ（１０５）は、データ通信ポート（１１５）を通して、より大きなホスト・コンピュータに接続されている。ポート（１１５）は、ＮＯＣとホスト・コンピュータとの間で信号を伝導するために必要とされるピンおよびその他の相互接続部と、メッセージ・パケットをＮＯＣ・フォーマットからホスト・コンピュータ（１５２）により要求されるバス・フォーマットに変換するための充分なインテリジェンスとを含む。図１のコンピュータのＮＯＣコプロセッサの例では、その様なポートは、ＮＯＣコプロセッサ（１５７）のリンク構造と、ＮＯＣコプロセッサ（１５７）およびバス・アダプタ（１５８）の間のフロント・サイド・バス（１６３）のために必要とされるプロトコルとの間のデータ通信フォーマット変換を提供する。
【００２６】
更なる説明のために、図３は、本発明の実施態様に従う更なる例としてのＮＯＣの機能ブロック図を示す。図３のＮＯＣ例はチップ（図２の１００）上に実装され、図３のＮＯＣ（１０２）は統合プロセッサ（‘ＩＰ’）ブロック（１０４）と、ルータ（１１０）と、メモリ通信コントローラ（１０６）と、ネットワーク・インターフェース・コントローラ（１０８）とを含む、という点において図３のＮＯＣ例は図２のＮＯＣ例に似ている。各ＩＰブロック（１０４）は、メモリ通信コントローラ（１０６）とネットワーク・インターフェース・コントローラ（１０８）とを通してルータ（１１０）に適合させられている。各メモリ通信コントローラはＩＰブロックとメモリとの間の通信を制御し、各ネットワーク・インターフェース・コントローラ（１０８）はルータ（１１０）を通してＩＰブロック間通信を制御する。図３の例では、１セット（１２２）の、メモリ通信コントローラ（１０６）とネットワーク・インターフェース・コントローラ（１０８）とを通してルータ（１１０）に適合させられているＩＰブロック（１０４）が、その構造および動作のより詳しい説明を助けるために展開されている。図３の例において全てのＩＰブロックと、メモリ通信コントローラと、ネットワーク・インターフェース・コントローラと、ルータとは、展開されているセット（１２２）と同様に構成されている。
【００２７】
図３の例において、各ＩＰブロック（１０４）は、コンピュータ・プロセッサ（１２６）とＩ／Ｏ機能（１２４）とを含む。この例では、コンピュータ・メモリは、各ＩＰブロック（１０４）内のランダム・アクセス・メモリ（‘ＲＡＭ’）（１２８）のセグメントにより表されている。図２の例に関して上で記述されたメモリは、各ＩＰブロックにおけるその内容が該ＮＯＣ内の任意のＩＰブロックからアドレス指定可能でかつアクセス可能である物理的アドレス空間のセグメントを占めることができる。各ＩＰブロックのプロセッサ（１２６）と、Ｉ／Ｏ機能（１２４）と、ランダム・アクセス・メモリ（１２８）とは、実際上ＩＰブロックを概してプログラマブルなマイクロコンピュータとして実現する。しかし、上で説明されたように、本発明の範囲内で、ＩＰブロックは、一般的に、ＮＯＣ内でのデータ処理のための構成要素として用いられた同期または非同期の論理の再使用可能な単位を表す。従って、ＩＰブロックを概してプログラマブルなマイクロコンピュータとして実現することは、説明の目的上有益な普通の実施態様ではあるけれども、本発明の限定事項ではない。
【００２８】
図３のＮＯＣ（１０２）において、各メモリ通信コントローラ（１０６）は複数のメモリ通信実行エンジン（１４０）を含む。各メモリ通信実行エンジン（１４０）は、ネットワークとＩＰブロック（１０４）との間の双方向メモリ通信命令フロー（１４２，１４４，１４５）を含むＩＰブロック（１０４）からのメモリ通信命令を実行するように動作可能にされる。メモリ通信コントローラにより実行されるメモリ通信命令は、特定のメモリ通信コントローラを通してルータに適合させられているＩＰブロックからだけではなくて、ＮＯＣ（１０２）内の何処のどのＩＰブロック（１０４）からも生じ得る。すなわち、ＮＯＣ内のどのＩＰブロックも、メモリ通信命令を生成し、そのメモリ通信命令を実行させるためにそのメモリ通信命令を、該ＮＯＣのルータを通して、他のＩＰブロックに関連付けられている他のメモリ通信コントローラに送信することができる。その様なメモリ通信命令は、例えば、変換索引バッファ制御命令、キャッシュ制御命令、バリヤー命令、メモリ・ロード命令、メモリ・ストア命令を含み得る。
【００２９】
各メモリ通信実行エンジン（１４０）は、完全なメモリ通信命令を別々に、他のメモリ通信実行エンジンと並行して、実行するように動作可能にされる。メモリ通信実行エンジンは、メモリ通信命令の並行スループットのために最適化されたスケーラブルなメモリ・トランザクション・プロセッサを実現する。メモリ通信コントローラ（１０６）は、その全てが複数のメモリ通信命令の同時実行のために同時に動作する複数のメモリ通信実行エンジン（１４０）をサポートする。新しい通信命令はメモリ通信コントローラ（１０６）によりメモリ通信実行エンジン（１４０）に割り当てられ、メモリ通信実行エンジン（１４０）は複数のレスポンス・イベントを同時に受け入れることができる。この例では、メモリ通信実行エンジン（１４０）の全ては同一である。従って、１つのメモリ通信コントローラ（１０６）によって同時に処理され得るメモリ通信命令の数をスケーリングすることは、メモリ通信実行エンジン（１４０）の数をスケーリングすることによって実行される。
【００３０】
図３のＮＯＣ（１０２）では、各ネットワーク・インターフェース・コントローラ（１０８）は、通信命令をルータ（１１０）を通してのＩＰブロック（１０４）間での伝送のためにコマンド・フォーマットからネットワーク・パケット・フォーマットに変換するように動作可能にされる。通信命令は、ＩＰブロック（１０４）またはメモリ通信コントローラ（１０６）によってコマンド・フォーマットに定式化され、コマンド・フォーマットでネットワーク・インターフェース・コントローラ（１０８）に提供される。コマンド・フォーマットは、ＩＰブロック（１０４）とメモリ通信コントローラ（１０６）とのアーキテクチャ・レジスタ・ファイルに従うネイティブのフォーマットである。ネットワーク・パケット・フォーマットは、ネットワークのルータ（１１０）を通しての伝送のために必要とされるフォーマットである。各々のその様なメッセージは１つ以上のネットワーク・パケットから構成される。ネットワーク・インターフェース・コントローラでコマンド・フォーマットからパケット・フォーマットに変換されるその様な通信命令の例は、ＩＰブロックとメモリとの間のメモリ・ロード命令とメモリ・ストア命令とを含む。その様な通信命令は、データを伝えるＩＰブロック間のメッセージを送る通信命令と、並列アプリケーションとパイプライン型アプリケーションにおいてＩＰブロック間のデータを処理するための命令とをも含み得る。
【００３１】
図３のＮＯＣ（１０２）において、各ＩＰブロックは、メモリへの、またメモリからの、メモリ・アドレス・ベースの通信メッセージを、そのＩＰブロックのメモリ通信コントローラを通して、またその後にそのネットワーク・インターフェース・コントローラを通してネットワークに送るように動作可能にされる。メモリ・アドレス・ベースの通信メッセージは、ＩＰブロックのメモリ通信コントローラのメモリ通信実行エンジンにより実行されるロード命令またはストア命令のようなメモリ・アクセス命令である。このようなメモリ・アドレス・ベースの通信メッセージは、通例、ＩＰブロックから生じ、コマンド・フォーマットに定式化され、実行されるべくメモリ通信コントローラに渡される。
【００３２】
アクセスされるべき任意のメモリはＮＯＣ内の任意のメモリ通信コントローラに直接取り付けられたオン・チップまたはオフ・チップの物理メモリ・アドレス空間の中の何処にでも置かれることができ、あるいは、結局、どのＩＰブロックが任意の特定のメモリ・アドレス・ベースの通信メッセージを発したかということに関わらずにＮＯＣの任意のＩＰブロックを通してアクセスされ得るので、多くのメモリ・アドレス・ベースの通信メッセージはメッセージ・トラフィックで実行される。メッセージ・トラフィックで実行される全てのメモリ・アドレス・ベースの通信メッセージは、コマンド・フォーマットからパケット・フォーマットに変換（１３６）されてネットワークを通してメッセージで伝送されるべくメモリ通信コントローラから関連するネットワーク・インターフェース・コントローラに送られる。パケット・フォーマットに変換するとき、ネットワーク・インターフェース・コントローラは、また、メモリ・アドレス・ベースの通信メッセージによりアクセスされるべき１つまたは複数のメモリ・アドレスに依存してそのパケットのためのネットワーク・アドレスを特定する。メモリ・アドレス・ベースのメッセージは、メモリ・アドレスでアドレス指定される。各メモリ・アドレスは、ネットワーク・インターフェース・コントローラによって、通例或る範囲の物理メモリ・アドレスに対して責任を有するメモリ通信コントローラのネットワーク位置であるネットワーク・アドレスにマッピングされる。メモリ通信コントローラ（１０６）のネットワーク位置は、当然、そのメモリ通信コントローラの関連するルータ（１１０）と、ネットワーク・インターフェース・コントローラ（１０８）と、ＩＰブロック（１０４）とのネットワーク位置でもある。各ネットワーク・インターフェース・コントローラの中の命令変換ロジック（１３６）は、メモリ・アドレス・ベースの通信メッセージをＮＯＣのルータを通して伝送する目的のためにメモリ・アドレスをネットワーク・アドレスに変換することができる。
【００３３】
ネットワークのルータ（１１０）からメッセージ・トラフィックを受け取ると、各ネットワーク・インターフェース・コントローラ（１０８）は、各パケットをメモリ命令を目的として検査する。メモリ命令を含む各パケットは、受信したネットワーク・インターフェース・コントローラと関連付けられているメモリ通信コントローラ（１０６）に渡され、これは、そのメモリ命令を、該パケットの残りのペイロードを更なる処理のためにＩＰブロックに送る前に、実行する。この様にして、ＩＰブロックによるデータ処理をサポートするために、特定のメモリ内容に依存するメッセージからの命令の実行を該ＩＰブロックが開始する前に、メモリ内容が常に作成される。
【００３４】
図３のＮＯＣ（１０２）において、各ＩＰブロック（１０４）は、そのメモリ通信コントローラ（１０６）を迂回して該ＩＰブロックのネットワーク・インターフェース・コントローラ（１０８）を通してＩＰブロック間のネットワーク・アドレス指定された通信メッセージ（１４６）をネットワークに直接送るように動作可能にされる。ネットワーク・アドレス指定された通信メッセージは、ネットワーク・アドレスにより他のＩＰブロックに向けられるメッセージである。その様なメッセージは、パイプライン型アプリケーションにおいては作業データを伝送し、ＳＩＭＤアプリケーションにおいてはＩＰブロック間での単一プログラム処理のために複数のデータを伝送し、また当業者が想到するように伝送をする。このようなメッセージは、該メッセージがＮＯＣのルータを通して向けられるべきネットワーク・アドレスを知っている発信ＩＰブロックによって始めからネットワーク・アドレス指定されているという点において、メモリ・アドレス・ベースの通信メッセージとは異なる。このようなネットワーク・アドレス指定された通信メッセージは、該ＩＰブロックによってそのＩ／Ｏ機能（１２４）を通して該ＩＰブロックのネットワーク・インターフェース・コントローラにコマンド・フォーマットで直接送られ、その後に該ネットワーク・インターフェース・コントローラによってパケット・フォーマットに変換され、該ＮＯＣのルータを通して他のＩＰブロックに送られる。このようなネットワーク・アドレス指定された通信メッセージ（１４６）は双方向的であって、任意の具体的なアプリケーションにおけるその使用方法に依存して該ＮＯＣの各ＩＰブロックへ、またその各ＩＰから、進む可能性を有する。しかし、各ネットワーク・インターフェース・コントローラは、その様な通信メッセージを、関連するルータに送り（１４２）、またその関連するルータから受け取る（１４２）ように動作可能にされ、また各ネットワーク・インターフェース・コントローラは、その様な通信メッセージを関連するメモリ通信コントローラ（１０６）を迂回して関連するＩＰブロックに直接送り（１４６）、また該ＩＰブロックから直接受け取る（１４６）ように動作可能にされる。
【００３５】
図３の例において各ネットワーク・インターフェース・コントローラ（１０８）は、また、ネットワーク・パケットをタイプにより特徴付ける仮想チャネルをネットワーク上に実現するようにも動作可能にされる。各ネットワーク・インターフェース・コントローラ（１０８）は仮想チャネル・インプリメンテーション・ロジック（１３８）を含んでおり、このロジックは、各通信命令をタイプにより分類して、該命令をＮＯＣ上での伝送のためにパケット形でルータ（１１０）に渡す前に命令のタイプをネットワーク・パケット・フォーマットの１つのフィールドに記録する。通信命令タイプの例は、ＩＰブロック間ネットワーク・アドレス・ベース・メッセージ、リクエスト・メッセージ、対リクエスト応答メッセージ、キャッシュに向けられた無効化メッセージ、メモリ・ロード・メッセージ、メモリ・ストア・メッセージ、対メモリ・ロード応答メッセージ、などを含む。
【００３６】
図３の例において各ルータ（１１０）はルーティング・ロジック（１３０）と、仮想チャネル制御ロジック（１３２）と、仮想チャネル・バッファ（１３４）とを含む。ルーティング・ロジックは、通例、ルータ（１１０）と、リンク（１２０）と、ルータ間のバス・ワイヤとにより形成されるネットワークにおけるデータ通信のためのデータ通信プロトコル・スタックを実現する同期および非同期ロジックのネットワークとして実現される。ルーティング・ロジック（１３０）は、当業者がオフ・チップのネットワークにおいてルーティング・テーブルと関連付けるかもしれない機能を含んでいるが、ルーティング・テーブルは少なくとも或る実施態様においてはＮＯＣで用いるには余りに低速で扱いにくいと考えられる。同期および非同期ロジックのネットワークとして実現されるルーティング・ロジックは、単一のクロック・サイクルと同じ速さでルーティング決定を行うように構成され得る。この例におけるルーティング・ロジックは、ルータにおいて受信された各パケットを転送するためのポートを選択することによってパケットをルーティングする。各パケットは、そのパケットがそこへルーティングされるべきネットワーク・アドレスを含む。この例において各ルータは５つのポート、すなわちバス・ワイヤ（１２０−Ａ，１２０−Ｂ，１２０−Ｃ，１２０−Ｄ）を通して他のルータに接続されている４つのポート（１２１）と、ネットワーク・インターフェース・コントローラ（１０８）とメモリ通信コントローラ（１０６）とを通して各ルータをその関連ＩＰブロック（１０４）に接続する第５のポート（１２３）と、を含む。
【００３７】
上でメモリ・アドレス・ベースの通信について記述したとき、各メモリ・アドレスはネットワーク・インターフェース・コントローラによってメモリ通信コントローラのネットワーク位置であるネットワーク・アドレスにマッピングされると記述された。メモリ通信コントローラ（１０６）のネットワーク位置は、当然、そのメモリ通信コントローラと関連付けられたルータ（１１０）と、ネットワーク・インターフェース・コントローラ（１０８）と、ＩＰブロック（１０４）とのネットワーク位置でもある。従って、ＩＰブロック間の、あるいはネットワーク・アドレス・ベースの通信では、アプリケーション・レベルのデータ処理がネットワーク・アドレスを、ＮＯＣのルータと、リンクと、バス・ワイヤとにより形成されるネットワークの中のＩＰブロックの位置と見なすというのも普通のことである。図２は、その様なネットワークの一組織が行と列のメッシュであることを示しており、そのメッシュにおいては、各ネットワーク・アドレスは、例えば、そのメッシュの関連付けられたルータ、ＩＰブロック、メモリ通信コントローラ、およびネットワーク・インターフェース・コントローラの各セットのための一意の識別子として、または該メッシュにおける各々のその様なセットのｘ，ｙ座標として、実現され得る。
【００３８】
図３のＮＯＣ（１０２）では、各ルータ（１１０）は２つ以上の仮想通信チャネルを実現し、その各仮想通信チャネルは通信タイプによって特徴付けられる。通信命令タイプ、従って仮想チャネル・タイプは、上記のもの、すなわちＩＰブロック間ネットワーク・アドレス・ベース・メッセージ、リクエスト・メッセージ、対リクエスト応答メッセージ、キャッシュに向けられた無効化メッセージ、メモリ・ロード・メッセージ、メモリ・ストア・メッセージ、対メモリ・ロード応答メッセージを含む。仮想チャネルのサポートに、図３の例の各ルータ（１１０）は仮想チャネル制御ロジック（１３２）と仮想チャネル・バッファ（１３４）も含む。仮想チャネル制御ロジック（１３２）は、各々の受信したパケットに割り当てられている通信タイプを調べ、各パケットを、ポートを通してＮＯＣ上の隣接ルータに伝送するべく、その通信タイプのための発信仮想チャネル・バッファに置く。
【００３９】
各仮想チャネル・バッファ（１３４）は有限の記憶空間を有する。短時間のうちに多数のパケットが受信されたときには、仮想チャネル・バッファが満ちて、それ以上のパケットを該バッファ内に入れられなくなる可能性がある。他のプロトコルでは、そのバッファが満ちている仮想チャネルで到着したパケットは落とされる。しかし、この例の各仮想チャネル・バッファ（１３４）は、仮想チャネルでの送信を中断するように、すなわち、特定の通信タイプのパケットの送信を中断するように仮想チャネル制御ロジックを通して周囲のルータに通告するようにバス・ワイヤの制御信号で動作可能にされる。１つの仮想チャネルがその様に中断されたとき、他の全ての仮想チャネルは影響を受けず、全能力で動作し続けることができる。該制御信号は逆に各ルータを通して各ルータの関連するネットワーク・インターフェース・コントローラ（１０８）に伝えられる。各ネットワーク・インターフェース・コントローラは、その様な信号を受信すると、その関連するメモリ通信コントローラからあるいはその関連するＩＰブロック（１０４）から、中断された仮想チャネルのための通信命令を受け取ることを拒否するように構成されている。この様に、１つの仮想チャネルの中断は、逆に発信ＩＰブロックに至るまで、その仮想チャネルを実現する全てのハードウェアに影響を及ぼす。
【００４０】
仮想チャネルにおけるパケット伝送を中断することの１つの効果は、図３のアーキテクチャにおいてパケットが決して落とされないことである。例えばインターネット・プロトコルのような信頼できないプロトコルにおいてパケットが落とされるかもしれないという事態にルータが遭遇したとき、図３の例のルータは、自分の仮想チャネル・バッファ（１３４）と自分の仮想チャネル制御ロジック（１３２）とによって、バッファ空間が再び利用できるようになるまで仮想チャネルにおけるパケットの全伝送を中断し、パケットを落とす必要を無くする。従って、図３のＮＯＣは、ハードウェアの極めて薄い層で非常に信頼性の高いネットワーク通信プロトコルを実現する。
【００４１】
更なる説明のために、図４は本発明の実施態様に従うＮＯＣでのデータ処理のための代表的方法を説明するフローチャートを示す。図４の方法は、本明細書において上で記載されたものと同様のＮＯＣにおいて、すなわちＩＰブロック（図３の１０４）と、ルータ（図３の１１０）と、メモリ通信コントローラ（図３の１０６）と、ネットワーク・インターフェース・コントローラ（図３の１０８）とを伴ってチップ（図３の１００）上に実現されるＮＯＣ（図３の１０２）において、実行される。各ＩＰブロック（図３の１０４）は、メモリ通信コントローラ（図３の１０６）とネットワーク・インターフェース・コントローラ（図３の１０８）とを通してルータ（図３の１１０）に適合させられる。図４の方法において、各ＩＰブロックは、ＮＯＣ内でのデータ処理のための構成要素として用いられた同期または非同期の論理設計の再使用可能な単位として実現され得る。
【００４２】
図４の方法は、ＩＰブロックとメモリとの間の通信をメモリ通信コントローラ（図３の１０６）によって制御するステップ（４０２）を含む。図４の方法において、メモリ通信コントローラは複数のメモリ通信実行エンジン（図３の１４０）を含む。また、図４の方法においては、ＩＰブロックとメモリとの間の通信を制御するステップ（４０２）は、各メモリ通信実行エンジンによって完全なメモリ通信命令を別々に、他のメモリ通信実行エンジンと並行して実行するステップ（４０４）と、ネットワークおよびＩＰブロックの間のメモリ通信命令の双方向フローを実行するステップ（４０６）とによって実行される。図４の方法において、メモリ通信命令は、変換索引バッファ制御命令、キャッシュ制御命令、バリヤー命令、メモリ・ロード命令、メモリ・ストア命令を含み得る。図４の方法において、メモリは、オフ・チップのメインＲＡＭと、メモリ通信コントローラを通してＩＰブロックに直接接続されたメモリと、ＩＰブロックとして動作可能にされるオン・チップ・メモリと、オン・チップ・キャッシュとを含むことができる。
【００４３】
図４の方法は、ルータを通してのＩＰブロック間通信をネットワーク・インターフェース・コントローラ（図３の１０８）によって制御するステップ（４０８）をも含む。図４の方法において、ＩＰブロック間通信を制御するステップ（４０８）は、各ネットワーク・インターフェース・コントローラによって通信命令をコマンド・フォーマットからネットワーク・パケット・フォーマットに変換するステップ（４１０）と、各ネットワーク・インターフェース・コントローラによって、ネットワーク・パケットをタイプによって特徴付けることを含む、ネットワーク上に仮想チャネルを実現するステップ（４１２）とをも含む。
【００４４】
図４の方法は２つ以上の仮想通信チャネルを通して各ルータ（図３の１１０）によってメッセージを伝送するステップ（４１４）も含み、その各仮想通信チャネルは通信タイプにより特徴付けられる。通信命令タイプは、従って仮想チャネル・タイプは、例えば、ＩＰブロック間ネットワーク・アドレス・ベース・メッセージ、リクエスト・メッセージ、対リクエスト応答メッセージ、キャッシュに向けられた無効化メッセージ、メモリ・ロード・メッセージ、メモリ・ストア・メッセージ、対メモリ・ロード応答メッセージ、などを含む。仮想チャネルのサポートに、各ルータは仮想チャネル制御ロジック（図３の１３２）と仮想チャネル・バッファ（図３の１３４）も含む。仮想チャネル制御ロジックは、各々の受信したパケットに割り当てられている通信タイプを調べ、各パケットを、ポートを通してＮＯＣ上の隣接ルータに伝送するべく、その通信タイプのための発信仮想チャネル・バッファに置く。
【００４５】
説明を容易にするために、図２の例としてのＮＯＣは、メモリ通信コントローラとネットワーク・インターフェース・コントローラとを通してルータに適合させられた１６セットのＩＰブロックを伴って示されている。同様に、図３の例としてのＮＯＣは、メモリ通信コントローラとネットワーク・インターフェース・コントローラとを通してルータに適合させられた４セットのＩＰブロックを伴って示されている。しかし、本発明の実施態様に従って実装される実際的なＮＯＣがメモリ通信コントローラとネットワーク・インターフェース・コントローラとを通してルータに適合させられた数百セットあるいは数千セットのＩＰブロックをしばしば包含するであろうことを読者は認めるであろう。このようなＮＯＣは、同時に多数のアプリケーション・プログラムの動作をサポートし、従ってＮＯＣ上のリソースの分割から利益を得るであろう。
【００４６】
更なる説明のために、図５は、本発明の実施態様に従う更なるＮＯＣ例の機能ブロック図を示す。図５のＮＯＣ例がチップ（１００）上で実現され、図５のＮＯＣ（１０２）がＩＰブロック（１０４）と、ルータ（１１０）と、メモリ通信コントローラ（１０６）と、ネットワーク・インターフェース・コントローラ（１０８）とを含む点において、図５のＮＯＣ例は図２のＮＯＣ例と同様である。各ＩＰブロック（１０４）は、メモリ通信コントローラ（１０６）とネットワーク・インターフェース・コントローラ（１０８）とを通してルータ（１１０）に適合させられている。各メモリ通信コントローラはＩＰブロックとメモリとの間の通信を制御し、各ネットワーク・インターフェース・コントローラ（１０８）はルータ（１１０）を通してのＩＰブロック間通信を制御する。
【００４７】
図５の例において、ＮＯＣ（１０２）は複数のパーティション（５０２，５０４）に組織されている。各パーティション（５０２，５０４）は少なくとも１つのＩＰブロック（１０４）を含み、各パーティションに独自の物理メモリ・アドレス空間への排他的アクセスが割り当てられる。例えば、パーティション（５０２）に、またパーティション（５０２）内の全てのＩＰブロック（１０４）に、ポート（１１９）を通してアクセスされるホスト・コンピュータ（１５２）内のオフ・チップ・メモリ（１１２）に配置された独自の物理メモリ・アドレス空間への排他的アクセスが割り当てられる。同様に、パーティション（５０２）内の全てのＩＰブロックを含むパーティション（５０４）には、オン・チップ・メモリ（１１４，１１５）に配置された独自の物理メモリ・アドレス空間への排他的アクセスが割り当てられる。
【００４８】
以下でより詳しく説明されるように、本発明の範囲内で、任意選択により、パーティションの境界でネットワーク通信トラフィックを制限することによって分割を行うことが可能である。パーティションの境界でネットワーク通信トラフィックを制限することによってパーティションを画定することは、本発明の一般的限定事項ではなくて、１つの随意選択肢である。本発明の範囲内で、パーティションを画定するためには、独自の物理メモリ・アドレス空間への排他的アクセスがパーティションに、すなわちそのパーティションの中のルータおよびＩＰブロックに、割り当てられるだけで全く充分である。図５のＮＯＣでは、パーティション（５０２）は、ホスト・コンピュータ（１５２）上のオフ・チップ・メモリ（１１２）で具体化された独自の物理メモリ・アドレス空間への排他的アクセスの割り当てだけによって形成されたパーティションの例であり、パーティション（５０２）内のＩＰブロック（１０４）はポート（１１９）を通してオフ・チップ・メモリ（１１２）にアクセスする。ポート（１１９）は、ＮＯＣ（１０２）とオフ・チップ・メモリ（１１２）との間で信号を伝導するために必要とされるピンおよびその他の相互接続部と、メッセージ・パケットをＮＯＣパケット・フォーマットからオフ・チップ・メモリ（１１２）により要求されるバス・フォーマットに変換するための充分なインテリジェンスとを含む。
【００４９】
図５のＮＯＣでは、１つ以上のアプリケーションがパーティションのうちの１つ以上の上で実行している。アプリケーション（５１２）は、パーティション（５０４）内のＩＰブロック１０４上で実行する。アプリケーション（５１４）は、パーティション（５０２）内のＩＰブロック（１０４）上で実行する。この文脈においてアプリケーションとは、アプリケーション・プログラム、例えばビデオ・ゲーム、株式市場シミュレーション、原子量子過程シミュレーションなどのために使用されるタスクのような特定のデータ処理タスクを実行するためのユーザ・レベル・コンピュータ・プログラム命令のモジュール、あるいはその他のユーザ・レベル・アプリケーションである。
【００５０】
図５のＮＯＣにおいては、ネットワークは、ネットワーク内で互いに隣接しあっているルータのパーティションを含むパーティションに組織されることができ、該パーティションの境界に沿うルータは、該パーティションの外側で生じた該パーティション内のネットワーク位置へアドレス指定されているメッセージを遮断する。図５のＮＯＣでは、パーティション（５０４）は、ネットワーク内で互いに隣接しあっているルータ（１１０）のパーティションの例を表すことができる。パーティション（５０４）の境界に沿っているルータは、該パーティションの外側で生じた、該パーティション内のネットワーク位置へアドレス指定されているメッセージを遮断するように構成され得る。パーティション（５０４）の境界に沿っている各ルータは、該ルータで受信された通信パケットの発アドレスと宛先アドレスとを調べて、該パーティションの外側で生じた、該パーティション内のネットワーク位置へアドレス指定されているパケットを落とす。この様に構成されたルータは、パーティションの境界でネットワーク通信トラフィックを制限することによってＮＯＣのリソースの分割を行う。
【００５１】
図５のＮＯＣでは、ネットワークは、ネットワーク内で互いに隣接しあっているルータのパーティションを含むパーティションに組織されることができ、該パーティションの境界に沿うルータは、該パーティション内で生じた該パーティションの外側のネットワーク位置へアドレス指定されているメッセージが該パーティションから出ることを妨げる。図５のＮＯＣでは、パーティション（５０４）は、ネットワーク内で互いに隣接しあっているルータのパーティションの例を表すことができる。該パーティションの境界に沿っているルータは、該パーティション内で生じた該パーティションの外側のネットワーク位置へアドレス指定されているメッセージが該パーティションから出ることを妨げるように構成され得る。この例では、パーティション（５０４）の境界に沿っている各ルータは、該ルータで受信された通信パケットの発アドレスと宛先アドレスとを調べて、該パーティション内で生じた該パーティションの外側のネットワーク位置へアドレス指定されているパケットを落とす。これは、パーティションの境界でネットワーク通信トラフィックを制限することによってＮＯＣのリソースを分割するように構成されたルータで分割を行う実施態様の第２クラスである。
【００５２】
互いに隣接しあっているルータのパーティションの代わりとして、本発明の実施態様に従うネットワーク・オン・チップは、該ネットワーク内で全て互いに隣接しあっているわけではないルータを含むパーティションに組織され得る。図５のＮＯＣでは、ＩＰブロックと、ルータと、メモリ通信コントローラとネットワーク・インターフェース・コントローラとのセット（５０６）は、ＩＰブロックと、ルータと、メモリ通信コントローラとネットワーク・インターフェース・コントローラとのセット（５０８）と共に、そのような、ネットワーク内で全てのルータが互いに隣接しあっているわけではないパーティションを形成する。セット（５０８）のルータは全て該ネットワークのアーキテクチャの中で互いに隣接しあっているけれども、セット（５０６）のルータはセット（５０８）のルータのいずれとも隣接していない。
【００５３】
セット（５０６，５０８）により表されているパーティションの各ルータは、該パーティションの外側のネットワーク・アドレスへアドレス指定されている該ルータのＩＰブロックからのパケットを落とすように構成され、また、該ルータのＩＰブロックへアドレス指定されている該パーティションの外側のネットワーク・アドレスからのパケットを落とすように構成されている。この例において、パーティション（５０６，５０８）の各ルータは、該ルータで受信された通信パケットの発アドレスと宛先アドレスとを調べて、該パーティションの外側のネットワーク・アドレスへアドレス指定されている該ルータのＩＰブロックからのパケットを落とし、また、該ルータのＩＰブロックへアドレス指定されている該パーティションの外側のネットワーク・アドレスからのパケットを落とす。この様にして、該パーティションの中の通信を表すパケットは該パーティションに制限され、該パーティションの外側のルータの間のトラフィックは該パーティションの中のルータを通してトランスペアレントに送られる。例えば、パーティション（５０２）内のルータからパーティション（５０４）内のルータへ伝送されるパケットはセット（５０６，５０８）のいずれか一方の中のルータを横切らなくてはならず、そしてセット（５０６，５０８）により実現されるパーティションに関してトランスペアレントにそうする。なぜならば、その様なパケットは該パーティションの外側のネットワーク・アドレスへアドレス指定されている該パーティション（５０６，５０８）の中のＩＰブロックのルータからのパケットではなく、またその様なパケットは該パーティション内のルータのＩＰブロックへアドレス指定されている該パーティション（５０６，５０８）の外側のネットワーク・アドレスからのパケットではないからである。
【００５４】
図５のＮＯＣでは、パーティションに組織されたネットワークは、パーティション（５０２）においてインスタンス化されたホスト・インターフェース・プロセッサ（１０５）を含む。パーティション（５０２）上のホスト・インターフェース・プロセッサ（１０５）は、該パーティション上で実行するアプリケーションと該パーティションの外側の他のコンピュータ・リソースとの間の通信のために、ここではポート（１１９）により表されるインターフェースを露出させる。ホスト・インターフェース・プロセッサ（１０５）の例では、該パーティションの外側の、ホスト・インターフェース・プロセッサ（１０５）によりインターフェースされるコンピュータ・リソースはオフ・チップ・メモリ（１１２）であるが、これはホスト・インターフェース・プロセッサの使用の説明例であって、本発明の限定事項ではない。パーティション（５０４）も、その上でインスタンス化されたホスト・インターフェース・プロセッサ（１０７）を有し、パーティション（５０４）のホスト・インターフェース・プロセッサ（１０７）は、該パーティション上で動作するアプリケーション（５１２）と、例えばパーティション（５０２）のホスト・インターフェース・プロセッサ（１０５）または該ＮＯＣ上の他のパーティションのＩＰブロック上で動作するアプリケーション（５１０，５１４）などの該パーティション（５０４）の外側のオン・チップの他のコンピュータ・リソースとの間のインターフェース（図示されていない）を露出させる。
【００５５】
上記のように、本発明の実施態様に従うＮＯＣのパーティションは、独自の物理メモリ・アドレス空間への排他的アクセスの割り当てによって形成され得る。しかし、独自の物理メモリ・アドレス空間への排他的アクセスをパーティションに割り当てることは、そのパーティションが物理メモリ・アドレス空間のセグメントを他のパーティションと共有することを妨げない。すなわち、本発明に従うＮＯＣが物理メモリ・アドレス空間のセグメントを共有する少なくとも２つのパーティションを含み得るように、メモリが複数のパーティション間で共有され得るように、アドレス空間へのアクセスの割り当ては非排他的アクセスの割り当ても含むことができる。図５のＮＯＣでは、例えば、パーティション（５０４）は、独自の物理メモリであるオン・チップ・メモリ（１１４，１１５）への排他的アクセスを割り当てられるとともに、オン・チップ・メモリ（１１７）内の物理メモリ・アドレス空間のセグメントをパーティション（５０６，５０８）と共有することができる。同様に、パーティション（５０６，５０８）は、独自の物理オン・チップ・メモリ（１２９）への排他的アクセスを割り当てられるとともに、オン・チップ・メモリ（１１７）内の物理メモリ・アドレス空間のセグメントをパーティション（５０４）と共有することができる。例えば００００００００からＦＦＦＦＦＦＦＦまでの４ＧＢ空間として１６進アドレスで表されたＮＯＣ（１０２）のための物理メモリ・アドレス空間全体に関して、パーティション（５０６，５０８）は００００００００からＣＦＦＦＦＦＦＦまでのアドレス空間への排他的アクセスを割り当てられることができ、パーティション（５０４）はＥ０００００００からＦＦＦＦＦＦＦＦまでのアドレス空間への排他的アクセスを割り当てられることができ、また両方のパーティションがＤ０００００００からＤＦＦＦＦＦＦＦまでのアドレス空間への非排他的アクセスを割り当てられることができるので、これら２つのパーティションはＤ０００００００からＤＦＦＦＦＦＦＦまでの物理メモリ・アドレス空間のセグメントを共有する。メモリのこのような共有は、例えば、これら２つのパーティションで別々にインスタンス化され同じ物理メモリをアドレス指定するメモリ変数で該パーティション間の通信を容易にし、それへのアクセスは例えばセマフォで調整される。
【００５６】
図５のＮＯＣにおいて、パーティションのうちの１つ以上において実行する１つ以上のアプリケーション（５１０，５１２，５１４）は、該アプリケーションのうちの少なくとも１つが複数のステージにパイプライン化されて実行され得る。パイプラインとは、一連のデータ処理タスクを順に実行するために互いに協力し合うコンピュータ・プログラム命令のモジュールのセットのことである。１つのパイプラインの各ステージは、ステージＩＤにより特定されるコンピュータ・プログラム命令の柔軟に設定可能なモジュールから構成され、各ステージは、同じパーティション内のＩＰブロックで実行の１つのスレッドにおいて実行する。作業負荷に依存して必要に応じてステージの追加インスタンスをインスタンス化することによってパイプラインがスケーリングされ得るように、各ステージが該ステージの複数のインスタンスをサポートすることができるという意味において、ステージは‘柔軟に設定可能’である。
【００５７】
更なる説明のために、図６は、例としてのパイプライン（６００）の動作を説明するデータ流れ図を示す。図６の例としてのパイプライン（６００）は、実行の３つのステージ（６０２，６０４，６０６）を含む。ステージ１は、ホスト・コンピュータ（１５２）上で動作するアプリケーション（１８４）からホスト・インターフェース・プロセッサ（１０５）を通して作業命令とワーク・ピース・データ（６２０）とを受け取る。ステージ１は、その指定されているデータ処理タスクを該ワーク・ピースに対して実行してその結果（６２２，６２４，６２６）をステージ２に送り、ステージ２はその指定されているデータ処理タスクをステージ１からの結果に対して実行してその結果（６２８，６３０，６３２）をステージ３に送り、ステージ３は、その指定されているデータ処理タスクをステージ２からの結果に対して実行して、その結果（６３４，６３６）を、最終的にホスト・インターフェース・プロセッサ（１０５）を通してホスト・コンピュータ（１５２）上の発信したアプリケーション（１８４）に戻すために出力データ構造（６３８）に格納する。出力データ構造（６３８）が何時でも戻せるようになる前に大量の戻りデータを計算する必要があるかもしれないので、発信したアプリケーション・プログラムへの戻しは‘最終的’と言われる。この例においてパイプライン（６００）は、３つのステージ（６０２−６０６）における僅か６つのインスタンス（６２２−６３２）とともに表されている。しかし、本発明の実施態様に従う多くのパイプラインは、多数のステージと、ステージの多数のインスタンスとを含むことができる。例えば原子過程モデリング・アプリケーションでは、出力データ構造（６３８）は、パイプラインの種々のステージにおいて数千の計算を各々必要とする、莫大な数の亜原子粒子の正確な量子状態を含む原子過程の特定のナノ秒における状態を表すことができる。あるいはさらに別の例として、ビデオ処理アプリケーションでは、出力データ構造（６３８）は、パイプラインの種々のステージにおいて多数の計算を各々必要とする数千のピクセルの現在の表示状態から構成されるビデオ・フレームを表すことができる。
【００５８】
パイプライン（６００）の各ステージ（６０２−６０６）の各インスタンス（６２２−６３２）は、ＮＯＣ（図５の１０２）のパーティション（５０２）において独自のＩＰブロック（図５の１０４）で実行されるコンピュータ・プログラム命令のアプリケーション・レベル・モジュールとして実現される。パイプライン（６００）は、この例では、ステージ１の１つのインスタンス（６０８）と、ステージ２の３つのインスタンス（６１０，６１２，６１４）と、ステージ３の２つのインスタンス（６１６，６１８）とを有して実現されている。ステージ１は、スタートアップ時に、ホスト・インターフェース・プロセッサ（１０５）によりステージ２のインスタンスの個数とステージ２の各インスタンスのネットワーク位置とで設定される。ステージ１（６０２，６０８）は、その結果としての作業負荷（６２２，６２４，６２６）を、例えば、ステージ２のインスタンス（６１０−６１４）に等しく分配することによって、分配することができる。ステージ２の各インスタンス（６１０−６１４）は、スタートアップ時に、ステージ２のインスタンスがその結果としての作業負荷を送ることを許可されているステージ３の各インスタンスのネットワーク位置で設定される。この例では、インスタンス（６１０，６１２）は両方ともその結果としての作業負荷（６２８，６３０）をステージ３のインスタンス（６１６）に送るように設定され、ステージ２の１つのインスタンス（６１４）だけが作業負荷（６３２）をステージ３のインスタンス（６１８）に送る。もしインスタンス（６１６）がインスタンス（６１８）の作業負荷の２倍を処理しようとするボトルネックになったならば、必要ならばラン・タイム中に実時間でステージ３の追加インスタンスをインスタンス化することができる。
【００５９】
更なる説明のために、図７は、本発明の実施態様に従うＮＯＣでのデータ処理の代表的方法を説明するフローチャートを示す。図７の方法は、この明細書において上で記述されたものと類似するＮＯＣ、すなわち、チップ（図５の１００）上にＩＰブロック（図５の１０４）と、ルータ（図５の１１０）と、メモリ通信コントローラ（図５の１０６）と、ネットワーク・インターフェース・コントローラ（図５の１０８）とを伴って実現されるＮＯＣ（図５の１０２）、において実行される。各ＩＰブロック（図５の１０４）は、メモリ通信コントローラ（図５の１０６）とネットワーク・インターフェース・コントローラ（図５の１０８）とを通してルータ（図５の１１０）に適合させられる。図７の方法においては、各ＩＰブロックは、ＮＯＣ内でのデータ処理のための構成要素として用いられた同期または非同期の論理設計の再使用可能な単位として実装される。
【００６０】
図７の方法はネットワークをパーティションに組織するステップ（７０２）を含み、各パーティションは少なくとも１つのＩＰブロックを含み、各パーティションは独自の物理メモリ・アドレス空間への排他的アクセスを割り当てられる。さらに図７の方法では、２つ以上のパーティションが物理メモリ・アドレス空間のセグメントを共有することもできる。
【００６１】
図７の方法においては、ネットワークをパーティションに組織するステップ（７０２）は、パーティションの境界に沿うルータがパーティションの外側で生じたパーティション内のネットワーク位置へアドレス指定されているメッセージを遮断するようになっている、ネットワーク内で互いに隣接しあっているルータのパーティションを設定することによって、実行され得る。図７の方法においては、ネットワークをパーティションに組織するステップ（７０２）は、パーティションの境界に沿うルータが、パーティション内で生じたパーティションの外側のネットワーク位置へアドレス指定されているメッセージがパーティションから出ることを妨げるようになっている、ネットワーク内で互いに隣接しあっているルータのパーティションを設定することによっても、実行され得る。
【００６２】
図７の方法では、ネットワークをパーティションに組織するステップ（７０２）は、各ルータがパーティションの外側のネットワーク・アドレスへアドレス指定されている該ルータのＩＰブロックからのパケットを落とすように構成されるとともに各ルータが該ルータのＩＰブロックへアドレス指定されているパーティションの外側のネットワーク・アドレスからのパケットを落とすようにも構成されている、ネットワーク内で全てが互いに隣接しあっているわけではないルータのパーティションを設定することによっても、実行され得る。図７の方法においては、ネットワークをパーティションに組織するステップ（７０２）は、パーティション上でホスト・インターフェース・プロセッサをインスタンス化することを含むこともでき、該パーティション上の該ホスト・インターフェース・プロセッサは、該パーティション上で実行するアプリケーションと該パーティションの外側の他のコンピュータ・リソースとの間の通信のために、インターフェースを露出させる。
【００６３】
図７の方法は、ホスト・インターフェース・プロセッサによって、少なくとも１つのパーティション内のＩＰブロック上の実行の１つ以上のスレッドをプログラム・ロードのためのベクトル・アドレスで設定するステップ（７０３）を含む。本発明においては、１つのＩＰブロック上で実行され得る実行のスレッドの数に関して制限は無い。ＩＰブロックが受動的非同期ロジックのネットワークとして実現される限り、ＩＰブロックは実行のゼロ個のスレッドを実行すると言われても良い。代わりに、ＩＰブロックは、コンピュータ・ハードウェアにおいて複数の実行のスレッドをパイプライン化する汎用マイクロプロセッサで実現されても良い。ベクトルは、その内容がメモリ・アドレスであるメモリ位置である。ベクトル・アドレスは、ベクトルのメモリ・アドレスである。ベクトルに格納されているメモリ・アドレスは、パワー・オン時にＩＰブロックにロード（いわゆる初期プログラム・ロードすなわち‘ＩＰＬ’）されるべきコンピュータ・プログラムを含むメモリのセグメントのアドレスである。
【００６４】
各ＩＰブロックは、例えば、実行の各スレッドのための構成レジスタで構成され得る。各々のその様な構成レジスタは、物理メモリ・アドレス空間内の記憶位置として実現され得る。その様な例においてホスト・インターフェース・プロセッサはベクトル・アドレスのレコードを含む不揮発性メモリで構成されることができ、物理アドレス空間内のアドレスと関連付けられた各ベクトル・アドレスはＩＰブロック上の実行のスレッドのための構成レジスタに対応する。その様な例では、ホスト・インターフェース・プロセッサによって、少なくとも１つのパーティション内のＩＰブロック上の１つ以上の実行のスレッドをプログラム・ロードのためのベクトル・アドレスで設定するステップ（７０３）は、電力がＮＯＣに加えられるときにメモリ・ロード命令で関連するベクトル・アドレスを各々の実行のスレッドのための構成レジスタに書き込むことによって、実行され得る。ＩＰブロック上の実行のスレッドをプログラム・ロードのためのベクトル・アドレスでその様に設定するステップ（７０３）は、ＮＯＣがパワー・オンされるごとに該ＮＯＣの完全な再構成を容易にする。ブート間に、構成レジスタと関連付けられているベクトル・アドレスを含むメモリは、各ベクトル・アドレスに格納されている新しいメモリ・アドレスで再構成され得るので、ＮＯＣ上のどのＩＰブロック上のどのスレッドも、ＮＯＣがパワー・オンされるたびに、そのベクトル・アドレスに格納されているアドレスから異なるプログラムをロードすることができ、本発明の実施態様に従って実装されるＮＯＣのアーキテクチャに無比の柔軟性と力を与える。
【００６５】
図７の方法は、１つ以上のパーティションにおいて１つ以上のアプリケーションを実行するステップ（７０４）も含む。図７の方法においては、パーティションのうちの１つ以上において１つ以上のアプリケーションを実行するステップ（７０４）は、該アプリケーションのうちの少なくとも１つを、それぞれステージＩＤにより特定されるコンピュータ・プログラム命令の柔軟に設定可能なモジュールであるステージにパイプライン化するステップと、各ステージを同じパーティション内のＩＰブロックにおいて実行のスレッドで実行するステップとを含むことができる。
【００６６】
更なる説明のために、図８は、例えば半導体デザイン、製造およびテストのうちの少なくとも１つに使われる代表的なデザイン・フロー９００のブロック図を示す。デザイン・フロー９００は、設計されるＩＣのタイプに応じて変化し得る。例えば、特定用途向けＩＣ（ＡＳＩＣ）を作るためのデザイン・フロー９００は、標準コンポーネントを設計するためのデザイン・フロー９００とは異なり得る。デザイン構造９２０は、好ましくはデザイン・プロセス９１０への入力であって、ＩＰプロバイダ、コア開発者あるいは他のデザイン会社から出てくることができ、あるいは該デザイン・フローのオペレータにより作成されて良く、あるいは他の出所から出て来ることができる。デザイン構造９２０は、結線図またはＨＤＬすなわちハードウェア記述言語（例えば、Ｖｅｒｉｌｏｇ、ＶＨＤＬ、Ｃなど）の形の、図１−図７に示されている本発明の実施態様を含む。デザイン構造９２０は、１つ以上の機械可読媒体に含まれ得る。例えば、デザイン構造９２０は、図１−図７に示されている本発明の実施態様のテキスト・ファイルまたはグラフィック表現であり得る。デザイン・プロセス９１０は、好ましくは、図１−図７に示されている本発明の実施態様を合成（あるいは変換）してネットリスト９８０とし、ネットリスト９８０は、例えば、集積回路設計における他の素子および回路への接続を記述して機械可読媒体のうちの少なくとも１つに記録されるワイヤ、トランジスタ、論理ゲート、制御回路、Ｉ／Ｏ、モデルなどのリストである。例えば、該媒体は、ＣＤ、コンパクト・フラッシュ、他のフラッシュ・メモリ、インターネットを介して送信されるべきデータのパケット、または他の適切なネットワーキング手段であり得る。該合成は、ネットリスト９８０が回路のための設計仕様とパラメータとに依存して１回以上再合成される反復プロセスであり得る。
【００６７】
デザイン・プロセス９１０は、例えば、所与の製造技術（例えば３２ｎｍ、４５ｎｍ、９０ｎｍなどの、種々の技術ノード）のための、モデル、レイアウト、および記号表示を含む、よく使われるエレメント、回路、およびデバイスのセットを収容することのできるライブラリ・エレメント９３０からの入力、設計仕様９４０からの入力、特性データ９５０からの入力、検証データ９６０からの入力、設計ルール９７０からの入力、試験データ・ファイル９８５（これはテスト・パターンおよび他の試験情報を含むことができる）からの入力などの、種々の入力を用いるステップを含むことができる。デザイン・プロセス９１０は、さらに、例えば、タイミング解析、検証、設計ルール検査、プレース・オペレーションおよびルート・オペレーションなどの標準的回路設計プロセスを含むことができる。集積回路設計の当業者は、本発明の範囲から逸脱せずにデザイン・プロセス９１０に用いられ得る電子設計自動化ツールおよびアプリケーションの範囲を認識することができる。本発明のデザイン構造は、特定のデザイン・フローには限定されない。
【００６８】
デザイン・プロセス９１０は、好ましくは、図１−図７に示されている本発明の実施態様を、任意の付加的な集積回路デザインまたはデータ（該当する場合）とともに、第２のデザイン構造９９０に変換する。デザイン構造９９０は、集積回路のレイアウト・データの交換のために使われるデータ・フォーマットと、シンボリック・データ・フォーマットとの少なくとも一方で、記憶媒体に存在する（例えば、ＧＤＳＩＩ（ＧＤＳ２）、ＧＬ１、ＯＡＳＩＳ、マップ・ファイル、あるいはその様なデザイン構造を格納するための他の任意の適切なフォーマットで格納された情報）。デザイン構造９９０は、例えば、シンボリック・データ、マップ・ファイル、テスト・データ・ファイル、デザイン・コンテンツ・ファイル、製造データ、レイアウト・パラメータ、ワイヤ、メタルのレベル、バイア、形状、製造ラインを通してのルーティングのためのデータ、およびその他の、図１−図７に示されている本発明の実施態様を製造するために半導体製造業者により必要とされるデータなどの情報を含むことができる。その後、デザイン構造９９０はステージ９９５に進むことができ、ここで、例えば、デザイン構造９９０は、テープ・アウトに進み、製造に向けてリリースされ、マスク会社へリリースされ、他のデザイン会社へ送られ、顧客に送り戻されるなどする。
【００６９】
本発明の代表的実施態様は、主として，ＮＯＣでのデータ処理のための完全に機能的なコンピュータ・システムという文脈で記述されている。しかし、当業者は、本発明が、任意の適切なデータ処理システムで使用される（コンピュータ可読媒体に配置され得る）コンピュータ・プログラムにおいても具体化され得ることを認めるであろう。その様なコンピュータ可読媒体は、伝送媒体、あるいは、磁気媒体、光学式媒体、または他の適切な媒体を含む機械可読情報のための記録可能媒体であり得る。記録可能媒体の例は、ハードディスクまたはディスケットの中の磁気ディスク、光学式ドライブ用のコンパクト・ディスク、磁気テープ、およびその他の、当業者が想到するものを含む。伝送媒体の例は、音声通信のための電話網と、例えばイーサネット（商標）、およびインターネット・プロトコルおよびワールド・ワイド・ウェブで通信をするネットワークなどのデジタル・データ通信ネットワークと、例えばＩＥＥＥ８０２．１１ファミリーの仕様に従って実装されたネットワークなどの無線伝送媒体とを含む。当業者は、適切なプログラミング手段を持っている任意のコンピュータ・システムがプログラムで具体化された本発明の方法のステップを実行できることを直ぐに認めるであろう。この明細書に記載されている代表的実施態様の幾つかはコンピュータ・ハードウェアにインストールされてその上で実行するソフトウェアに向けられているけれども、ファームウェアまたはハードウェアとして実現される代わりの実施態様が充分に本発明の範囲内にあることを当業者は直ぐに認めるであろう。
【００７０】
叙上から、その真意から逸脱せずに本発明の種々の実施態様において改変および変更をなし得ることが理解されるであろう。この明細書の記述は例証を目的としているに過ぎず、限定的意味に解されるべきではない。本発明の範囲は請求項の言葉だけにより限定される。
【図面の簡単な説明】
【００７１】
【図１】本発明の実施態様に従うＮＯＣでのデータ処理に有益な代表的コンピュータを含む自動計算機のブロック図を示す。
【図２】本発明の実施態様に従うＮＯＣの例の機能ブロック図を示す。
【図３】本発明の実施態様に従うＮＯＣの別の例の機能ブロック図を示す。
【図４】本発明の実施態様に従うＮＯＣでのデータ処理のための代表的方法を説明するフローチャートを示す。
【図５】本発明の実施態様に従うＮＯＣの別の例の機能ブロック図を示す。
【図６】パイプラインの例の動作を説明するデータ流れ図を示す。
【図７】本発明の実施態様に従うＮＯＣでのデータ処理のための代表的方法を説明するフローチャートを示す。
【図８】半導体デザイン、製造およびテストのうちの少なくとも１つに使われるデザイン・プロセスの流れ図を示す。
【符号の説明】
【００７２】
１００  チップ
１０２  ネットワーク・オン・チップ（‘ＮＯＣ’）
１０４  ＩＰブロック
１０５，１０７  ホスト・インターフェース・プロセッサ
１０６  メモリ通信コントローラ
１０８  ネットワーク・インターフェース・コントローラ
１１０  ルータ
１１２  オフ・チップ・メモリ
１１４，１１５，１１７  オン・チップ・メモリ
１１９  ポート
１２０  リンク
１２９  ＯＣＭ（オン・チップ・メモリ）
１５２  ホスト・コンピュータ
５０２，５０４  パーティション
５０６，５０８  ＩＰブロックと、ルータと、メモリ通信コントローラとネットワーク・インターフェース・コントローラとのセット
５１０，５１２  アプリケーション
【図１】
0005294806.tif 000002
【図２】
0005294806.tif 000003
【図３】
0005294806.tif 000004
【図４】
0005294806.tif 000005
【図５】
0005294806.tif 000006
【図６】
0005294806.tif 000007
【図７】
0005294806.tif 000008
【図８】
0005294806.tif 000009