(57)【特許請求の範囲】
【請求項１】
ネットワーク・オン・チップ（ＮＯＣ）が統合プロセッサ（ＩＰ）・ブロック、ルータ、メモリ通信制御装置およびネットワーク・インターフェース制御装置を備え、各ＩＰブロックがメモリ通信制御装置およびネットワーク・インターフェース制御装置を介してルータに接続され、各メモリ通信制御装置がＩＰブロックとメモリとの間の通信を制御し、かつ、各ネットワーク・インターフェース制御装置がルータを介しているＩＰブロック間の通信を制御する前記ＮＯＣ上のソフトウェア・パイプライン化方法であって、前記方法が、
コンピュータ・ソフトウェア・アプリケーションを、各々がステージＩＤにより識別されるコンピュータ・プログラム命令が柔軟に設定可能なモジュールを備えるステージに分割するステップと、
各ステージをＩＰブロックのスレッドで実行するステップと、
を備え、
各ルータが複数の仮想通信チャネルを実装し、各仮想通信チャネルが通信タイプにより特徴づけられていて、対応する仮想チャネル・バッファを有しており、各仮想チャネル・バッファは、特定の仮想通信チャネルを介する、特定の通信タイプのパケットの伝送を中断するよう他のルータに通知することが可能である、方法。
【請求項２】
コンピュータ・ソフトウェア・アプリケーションをステージに分割するステップが、次のステージの各インスタンス用のステージＩＤを用いて各ステージを設定することをさらに備える、請求項１に記載の方法。
【請求項３】
コンピュータ・ソフトウェア・アプリケーションをステージに分割するステップが、前記ステージの負荷を調整することをさらに備え、前記方法が
前記ステージの性能を監視するステップと、
１つ以上の前記ステージの前記性能に従って各ステージの多くのインスタンスを作成するステップと、
を含む、請求項１に記載の方法。
【請求項４】
コンピュータ・ソフトウェア・アプリケーションをステージへ分割するステップが、各ステージをＩＰブロックのスレッドに割り当て、各ステージにステージＩＤを割り当てることをさらに備え、
ＩＰブロックのスレッドで各ステージを実行するステップが、
出力データを生成する第一のステージを実行することと、
前記第一のステージで、前記生成された出力データを第二のステージに送出することと、
前記第二のステージで、前記生成された出力データを消費することと、
を備える、請求項１に記載の方法。
【請求項５】
各ステージに基づいて前記ＮＯＣが、ＩＰブロックのメモリ通信制御装置を介してアドレス指定されているメモリにアクセスできる、請求項１に記載の方法。
【請求項６】
各ステージをＩＰブロックのスレッドで実行するステップが、ステージ間に非メモリ・アドレス・ベース通信を送出することをさらに備える、請求項１に記載の方法。
【請求項７】
ネットワーク・オン・チップ（ＮＯＣ）が統合プロセッサ（ＩＰ）・ブロック、ルータ、メモリ通信制御装置およびネットワーク・インターフェース制御装置を備え、各ＩＰブロックがメモリ通信制御装置およびネットワーク・インターフェース制御装置を介しているルータに接続され、各メモリ通信制御装置がＩＰブロックとメモリとの間の通信を制御し、かつ、各ネットワーク・インターフェース制御装置がルータを介しているＩＰブロック間の通信を制御するソフトウェア・パイプライン化用の前記ＮＯＣであって、前記ＮＯＣが、
コンピュータ・ソフトウェア・アプリケーションを備えるものであり、
前記コンピュータ・ソフトウェア・アプリケーションは、ステージに分割されているものであり、
前記ステージは、各々がステージＩＤにより識別されるコンピュータ・プログラム命令が柔軟に設定可能なモジュールを備え、各々がＩＰブロックのスレッドで実行されるものであり、
各ルータが複数の仮想通信チャネルを実装し、各仮想通信チャネルが通信タイプにより特徴づけられていて、対応する仮想チャネル・バッファを有しており、各仮想チャネル・バッファは、特定の仮想通信チャネルを介する、特定の通信タイプのパケットの伝送を中断するよう他のルータに通知することが可能である、ＮＯＣ。
【請求項８】
前記ステージの少なくともいずれかは、次のステージの各インスタンス用のステージＩＤを用いて設定されるものである、請求項７に記載のＮＯＣ。
【請求項９】
前記ステージの少なくともいずれかは、前記ステージの性能に従い、各ステージの多くのインスタンスを用いて負荷調整されるものである、請求項７に記載のＮＯＣ。
【請求項１０】
前記ステージは、各々がＩＰブロックのスレッドに割り当てられ、各々にステージＩＤが割り当てられるものであり、
ＩＰブロックのスレッドで実行する各ステージには、少なくとも第一のステージと第二のステージが含まれており、
前記第一のステージをＩＰブロックのスレッドで実行することにより、ＩＰブロックは、出力データを生成し、かつ、前記生成された出力データを前記第一のステージから前記第二のステージへ送出するものであり、
前記第二のステージをＩＰブロックのスレッドで実行することにより、ＩＰブロックは、前記生成された出力データを消費するものである、
請求項７に記載のＮＯＣ。
【請求項１１】
各ステージに基づいて前記ＮＯＣが、ＩＰブロックのメモリ通信制御装置を介してアドレス指定されているメモリにアクセスできる、請求項７に記載のＮＯＣ。
【請求項１２】
前記ステージの少なくとも１つをＩＰブロックのスレッドで実行することにより、ＩＰブロックは、他のステージへネットワーク・アドレス・ベース通信を送出するものである、請求項７に記載のＮＯＣ。
【請求項１３】
ネットワーク・オン・チップ（ＮＯＣ）が統合プロセッサ（ＩＰ）ブロック、ルータ、メモリ通信制御装置およびネットワーク・インターフェース制御装置を備え、各ＩＰブロックがメモリ通信制御装置およびネットワーク・インターフェース制御装置を介してルータに接続され、各メモリ通信制御装置がＩＰブロックとメモリとの間の通信を制御し、かつ、各ネットワーク・インターフェース制御装置がルータを介しているＩＰブロック間の通信を制御する、前記ＮＯＣ上でソフトウェア・パイプラインを実現するためのコンピュータ・プログラムであって、前記コンピュータ・プログラムが、
コンピュータ・ソフトウェア・アプリケーションを、各々がステージＩＤにより識別されるコンピュータ・プログラム命令が柔軟に設定可能なモジュールを備えるステージに分割するステップと、
各ステージをＩＰブロックのスレッドで実行するステップと、
を行わせるためのコンピュータ・プログラム命令を備え、
各ルータが複数の仮想通信チャネルを実装し、各仮想通信チャネルが通信タイプにより特徴づけられていて、対応する仮想チャネル・バッファを有しており、各仮想チャネル・バッファは、特定の仮想通信チャネルを介する、特定の通信タイプのパケットの伝送を中断するよう他のルータに通知することが可能である、コンピュータ・プログラム。
【請求項１４】
コンピュータ・ソフトウェア・アプリケーションをステージに分割するステップが、次のステージの各インスタンス用のステージＩＤを用いて各ステージを設定するステップをさらに備える、請求項１３に記載のコンピュータ・プログラム。
【請求項１５】
コンピュータ・ソフトウェア・アプリケーションをステージに分割するステップが、前記ステージの負荷を調整するステップをさらに備え、コンピュータ・プログラムが
前記ステージの性能を監視するステップと、
１つ以上の前記ステージの前記性能に従って、各ステージの多くのインスタンスを作成するステップと、
を行わせるためのものである、請求項１３に記載のコンピュータ・プログラム。
【請求項１６】
コンピュータ・ソフトウェア・アプリケーションをステージに分割するステップが、各ステージをＩＰブロックのスレッドに割り当て、各ステージにステージＩＤを割り当てることをさらに備え、
ＩＰブロックのスレッドで各ステージを実行するステップが、
出力データを生成する第一のステージを実行することと、
前記第一のステージにより前記生成された出力データを第二のステージに送出することと、
前記生成された出力データを前記第二のステージにより消費することと、
を備える、請求項１３に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理に関し、より詳細にはネットワーク・オン・チップ（ＮＯＣ：ｎｅｔｗｏｒｋ  ｏｎ  ｃｈｉｐ）を用いたデータ処理装置および方法に関する。
【背景技術】
【０００２】
データ処理には、広く使用されているパラダイムが２つある。すなわち、多重命令多重データ（ＭＩＭＤ：ｍｕｌｔｉｐｌｅ  ｉｎｓｔｒｕｃｔｉｏｎｓ，ｍｕｌｔｉｐｌｅ  ｄａｔａ）および単一命令多重データ（ＳＩＭＤ：ｓｉｎｇｌｅ  ｉｎｓｔｒｕｃｔｉｏｎ，ｍｕｌｔｉｐｌｅ  ｄａｔａ）である。ＭＩＭＤ処理においては、コンピュータ・プログラムは一般に、１以上のスレッドがある程度独立して動作し、そのスレッドの各々が、多数の共有メモリへの高速なランダム・アクセスを要求することを特徴とする。ＭＩＭＤは、それに合うプログラムの特定のクラス用に最適化されたデータ処理パラダイムであり、例えば、ワード・プロセッサ、スプレッドシート、データ管理ソフトウェア、ブラウザ等を例とする電気通信の多くの形態を含む。
【０００３】
ＳＩＭＤは、単一プログラムが多くのプロセッサ上で同時に並列して実行され、そのプログラムの各インスタンスが、同一方法ではあるがデータの別の項目上で動作することを特徴とする。ＳＩＭＤは、それに合うアプリケーションの特定のクラス用に最適化されたデータ処理パラダイムであり、例えば、デジタル単一処理の多くの形態、ベクトル処理などを含む。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、例えば、それ用に純粋なＳＩＭＤデータ処理も、純粋なＭＩＭＤデータ処理も最適化されない、多くの実世界シュミレーション・プログラムを含むアプリケーションのクラスがもう一つある。そのアプリケーションのクラスには、並列処理から利益を得、また、共有メモリへの高速なランダム・アクセスを要求するアプリケーションが含まれる。プログラムのそのクラスに関しては、純粋なＭＩＭＤシステムは、高い並列性を提供せず、純粋なＳＩＭＤシステムもメイン・メモリ・ストアへの高速なランダム・アクセスを提供しない。
【課題を解決するための手段】
【０００５】
統合プロセッサ（ＩＰ：ｉｎｔｅｇｒａｔｅｄ  ｐｒｏｃｅｓｓｏｒ）・ブロック、ルータ、メモリ通信制御装置およびネットワーク・インターフェース制御装置を含むネットワーク・オン・チップ（ＮＯＣ）であり、各ＩＰブロックがメモリ通信制御装置およびネットワーク・インターフェース制御装置を介してルータに接続（ａｄａｐｔ）され、各メモリ通信制御装置がＩＰブロックとメモリとの間の通信を制御し、かつ各ネットワーク・インターフェース制御装置がルータを介したＩＰブロック間の通信を制御し、また、このＮＯＣが、ステージに分割されたコンピュータ・ソフトウェア・アプリケーションを含み、各ステージがステージＩＤによって識別されるコンピュータ・プログラム命令が柔軟に設定可能なモジュールを備え、ＩＰブロック上のスレッドで実行する。
【０００６】
本発明の前述およびその他の目的、特徴ならびに利点が、同様の参照番号が全般に本発明の例示的実施形態の同様の部分を表す添付の図面において例示されるように、本発明の例示的実施形態の以下のより詳細な説明から明らかとなるであろう。
【発明を実施するための最良の形態】
【０００７】
本発明によるＮＯＣを用いたデータ処理の例示的な装置および方法が、図１から始まる添付の図面を参照して説明される。図１は、本発明の実施形態によるＮＯＣを用いたデータ処理に有用である例示的ホスト・コンピュータ（１５２）を備えるオートメーション化された計算機のブロック図である。図１のホスト・コンピュータ（１５２）は、少なくとも１つのコンピュータ・プロセッサ（１５６）、すなわち「中央演算処理装置（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）」ならびに高速なメモリ・バス（１６６）およびバス・アダプタ（１５８）を介してコンピュータ・プロセッサ（１５６）およびホスト・コンピュータ（１５２）のその他のコンポーネントに接続されるランダム・アクセス・メモリ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ：ＲＡＭ）（１６８）を含む。
【０００８】
ＲＡＭ（１６８）には、例えば、文書処理、表計算、データベース操作、ビデオゲーム、株取引シミュレーション、原子の量子化処理シミュレーション、または他のユーザ・レベル・アプリケーションなどの特定のデータ処理タスクを実行するためのユーザ・レベル・コンピュータ・プログラム命令のモジュールであるアプリケーション・プログラム（１８４）が格納される。また、ＲＡＭ（１６８）にはオペレーティング・システム（１５４）も格納される。本発明の実施形態によるＮＯＣを用いたデータ処理に有用であるオペレーティング・システムには、ＵＮＩＸ（登録商標）、Ｌｉｎｕｘ（Linus Torvalds の商標）、Ｍｉｃｒｏｓｏｆｔ  ＸＰ（Microsoft Corporation の商標）、ＡＩＸ（IBMCorporation の商標）、ＩＢＭ（IBM Corporation の商標）製ｉ５／ＯＳ（IBM Corporation の商標）および当業者が思いつくであろうその他のオペレーティング・システムが含まれる。図１の例では、オペレーティング・システム（１５４）およびアプリケーション・プログラム（１８４）がＲＡＭ（１６８）において示されているが、そうしたソフトウェアの多くのコンポーネントは一般に、例えばディスク駆動機構（１７０）上などの不揮発性メモリにも格納される。
【０００９】
例示的ホスト・コンピュータ（１５２）には、本発明の実施形態による２つの例示的ＮＯＣ、ＮＯＣビデオ・アダプタ（２０９）およびＮＯＣコプロセッサ（１５７）が含まれる。ＮＯＣビデオ・アダプタ（２０９）は、表示画面またはコンピュータ・モニタなどのディスプレイ・デバイス（１８０）へのグラフィック出力用に特別に設計されたＩ／Ｏアダプタの例である。ＮＯＣビデオ・アダプタ（２０９）は、高速なビデオ・バス（１６４）、バス・アダプタ（１５８）および同じく高速バスであるフロント・サイド・バス（１６２）を介してコンピュータ・プロセッサ（１５６）に接続される。
【００１０】
例示的ＮＯＣコプロセッサ（１５７）は、バス・アダプタ（１５８）および同じく高速バスであるフロント・サイド・バス（１６２および１６３）を介してコンピュータ・プロセッサ（１５６）に接続される。図１のＮＯＣコプロセッサは、コンピュータ・プロセッサ（１５６）の命令どおりに特定のデータ処理タスクを加速するために最適化される。
【００１１】
図１の例示的ＮＯＣビデオ・アダプタ（２０９）およびＮＯＣコプロセッサ（１５７）はそれぞれ、統合プロセッサ（ＩＰ）ブロック、ルータ、メモリ通信制御装置およびネットワーク・インターフェース制御装置を備え、各ＩＰブロックがメモリ通信制御装置およびネットワーク・インターフェース制御装置を介してルータに接続され、各メモリ通信制御装置がＩＰブロックとメモリとの間の通信を制御し、かつ、各ネットワーク・インターフェース制御装置がルータを介したＩＰブロック間の通信を制御する、本発明の実施形態によるＮＯＣを含む。このＮＯＣビデオ・アダプタおよびＮＯＣコプロセッサは、並列処理を利用し、共有メモリへの高速ランダム・アクセスも要求するプログラム用に最適化される。このＮＯＣの構造および動作の詳細は、図２から４を参照して以下で説明される。
【００１２】
図１のホスト・コンピュータ（１５２）には、拡張バス（１６０）およびバス・アダプタ（１５８）を介してコンピュータ・プロセッサ（１５６）およびこのホスト・コンピュータ（１５２）の他のコンポーネンツに接続されるディスク・ドライブ・アダプタ（１７２）が含まれる。ディスク・ドライブ・アダプタ（１７２）は、不揮発性データ・ストレージをディスク駆動機構（１７０）の形式でホスト・コンピュータ（１５２）に接続する。本発明の実施形態によるＮＯＣを用いたデータ処理用コンピュータに有用であるディスク・ドライブ・アダプタには、インテグレーテッド・ドライブ・エレクトロニクス（ＩＤＥ：Ｉｎｔｅｇｒａｔｅｄ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ）アダプタ、スモール・コンピュータ・システム・インターフェース（ＳＣＳＩ：Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）アダプタおよび当業者が思いつくであろうその他のアダプタが含まれる。不揮発性コンピュータ・メモリはまた、光学ディスク駆動機構として、当業者が思いつくであろう電気的に消去可能なプログラマブル・リードオンリー・メモリ（いわゆる「ＥＥＰＲＯＭ」または「フラッシュ」メモリ）、ＲＡＭドライブなど用に実装されてもよい。
【００１３】
図１の例示的ホスト・コンピュータ（１５２）には、１つ以上の入出力（Ｉ／Ｏ：ｉｎｐｕｔ／ｏｕｔｐｕｔ）アダプタ（１７８）が含まれる。Ｉ／Ｏアダプタは、例えば、コンピュータ表示画面などのディスプレイ・デバイスへの出力、ならびにキーボードおよびマウスなどのユーザ入力デバイス（１８１）からのユーザ入力を制御するためのソフトウェア・ドライバおよびコンピュータ・ハードウェアを介したユーザ志向の入出力を実施する。
【００１４】
図１の例示的ホスト・コンピュータ（１５２）は、別のコンピュータ（１８２）とのデータ通信用およびデータ通信ネットワーク（１０１）とのデータ通信用の通信アダプタ（１６７）を含む。そのようなデータ通信は、ＲＳ−２３２接続を介したり、ユニバーサル・シリアル・バス（ＵＳＢ：Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）などの外部バスを介したり、ＩＰデータ通信ネットワークなどのデータ通信ネットワークを介したり、当業者が思いつくであろうその他の方法で連続的に実行されてもよい。通信アダプタは、あるコンピュータが直接、またはデータ通信ネットワークを介して別のコンピュータにデータ通信を送出するのに用いるハードウェアレベルのデータ通信を実施する。本発明の実施形態によるＮＯＣを用いたデータ処理に有用な通信アダプタの例には、有線ダイアルアップ通信用のモデム、有線データ通信ネットワーク通信用のＥｔｈｅｒｎｅｔ（ＩＥＥＥ８０２．３）アダプタ、および無線データ通信ネットワーク通信用の８０２．１１アダプタが含まれる。
【００１５】
さらに説明するために、図２では、本発明の実施形態による例示的ＮＯＣ（１０２）の機能ブロック図を示す。図１の例におけるＮＯＣは、「チップ」（１００）上、つまり集積回路上に実装される。図２のＮＯＣ（１０２）には、統合プロセッサ（ＩＰ）ブロック（１０４）、ルータ（１１０）、メモリ通信制御装置（１０６）およびネットワーク・インターフェース制御装置（１０８）が含まれる。各ＩＰブロック（１０４）は、メモリ通信制御装置（１０６）およびネットワーク・インターフェース制御装置（１０８）を介してルータ（１１０）に接続される。各メモリ通信制御装置は、ＩＰブロックとメモリとの間の通信を制御し、かつ、各ネットワーク・インターフェース制御装置（１０８）は、ルータ（１１０）を介したＩＰブロック間の通信を制御する。
【００１６】
図２のＮＯＣ（１０２）において各ＩＰブロックは、このＮＯＣ内のデータ処理用のビルディング・ブロックとして使用される同期または非同期論理設計の再使用可能ユニットを表す。「ＩＰブロック」という用語は、時には「知的財産ブロック」と拡大解釈され、ＩＰブロックを、ある当事者つまりその知的財産の当事者が、半導体回路の他のユーザまたは設計者に許諾するために所有している設計として事実上指定する。しかし、本発明の範囲においては、ＩＰブロックが何らかの特定の所有権を前提とするという条件はなく、したがって、この用語は、本明細書においては常に「統合プロセッサ・ブロック」と解釈される。ここで明記されるようにＩＰブロックは、知的財産の対象となり得る、またはなり得ない論理、セル、またはチップ配置設計の再使用可能ユニットである。ＩＰブロックは、特定用途向けＩＣ（ＡＳＩＣ：Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）のチップ設計またはフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ：Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）の論理設計として形成され得る論理コアである。
【００１７】
ＩＰブロックを説明する際、別のものに置き換えて説明するのも一つの方法である。ＮＯＣ設計におけるＩＰブロックとは、コンピュータ・プログラミングにおけるライブラリのようなものであり、プリント基板設計における個々の集積回路コンポーネントのようなものである、ということも本発明の実施形態によるＮＯＣにおいて、ＩＰブロックは汎用ゲート・ネットリストとして、完全な専用もしくは汎用マイクロプロセッサとして、または当業者が思いつくであろうその他の方法で実装されてもよい。ネットリストは、ハイレベル・プログラム・アプリケーション用のアセンブリコード情報と類似な、ＩＰブロックの論理関数のブール代数表現（ゲート、標準セル）である。ＮＯＣはまた、例えば、ＶｅｒｉｌｏｇまたはＶＨＤＬなどのハードウェア記述言語で記述される統合可能な形態で実装されてもよい。ネットリストおよび統合可能な実装に加え、ＮＯＣを低レベルな物理的記述で実現してもよい。並直列変換回路（ＳＥＲＤＥＳ）、位相同期ループ回路（ＰＬＬ）、デジタル−アナログ変換回路（ＤＡＣ）、アナログ−デジタル変換回路（ＡＤＣ）などを始めとするアナログＩＰブロック・エレメントが、ＧＤＳＩＩなどのトランジスタ・レイアウト形式で分散されてもよい。ＩＰブロックのデジタル・エレメントが、同様にレイアウト形式で提供される場合もある。
【００１８】
図２の例における各ＩＰブロック（１０４）は、メモリ通信制御装置（１０６）を介してルータ（１１０）に接続される。各メモリ通信制御装置は、ＩＰブロックとメモリとの間のデータ通信を提供するようになされている同期および非同期論理回路の集合である。ＩＰブロックとメモリとの間のそのような通信の例には、メモリ読込み命令およびメモリ格納命令が含まれる。メモリ通信制御装置（１０６）は、図３を参照して以下でより詳細に説明される。
【００１９】
図２の例における各ＩＰブロック（１０４）もネットワーク・インターフェース制御装置（１０８）を介してルータ（１１０）に接続される。各ネットワーク・インターフェース制御装置（１０８）は、ルータ（１１０）を介したＩＰブロック（１０４）間の通信を制御する。ＩＰブロック間の通信の例には、データおよびそのデータを並列アプリケーションおよびパイプライン化されたアプリケーションでＩＰブロック間で処理するための命令を搬送するメッセージが含まれる。ネットワーク・インターフェース制御装置（１０８）は、図３を参照して以下でより詳細に説明される。
【００２０】
図２の例におけるＩＰブロック（１０４）各々は、ルータ（１１０）に接続される。ルータ（１１０）およびルータ間のリンク（１２０）は、ＮＯＣのネットワーク動作を実施する。リンク（１２０）は、全ルータを接続する物理的で並列なワイヤ・バス上に実装されるパケット構造体である。つまり、各リンクは、全ヘッダー情報およびペイロード・データを含むデータ交換パケット全体を同時に収容するのに十分な幅のあるワイヤ・バス上に実装される。パケット構造体が、例えば、８バイトのヘッダーおよび５６バイトのペイロード・データを含む６４バイトを含む場合、各リンクを内在するこのワイヤ・バスは、６４バイト幅で５１２本のワイヤである。さらに、各リンクは双方向であるので、リンクのパケット構造体が６４バイトならば、ネットワーク内の隣接する各ルータ間のワイヤ・バスには実際には、１０２４本のワイヤが含まれる。メッセージは、１以上のパケットを含むことが可能だが、各パケットは、正確にワイヤ・バスの幅に適合する。ルータとワイヤ・バスの各部分との間の接続がポートと呼ばれる場合、各ルータは５ポートを有し、ネットワーク上のデータ伝送４方向各々に１ポートが割り当てられ、５番目のポートにより、メモリ通信制御装置およびネットワーク・インターフェース制御装置を介してルータが特定のＩＰブロックに接続される。
【００２１】
図２の例における各メモリ通信制御装置（１０６）は、ＩＰブロックとメモリとの間の通信を制御する。メモリは、オフチップ・メモリ（１１２）（メインＲＡＭ）、メモリ通信制御装置（１０６）を介してＩＰブロックに直接接続されるオンチップ・メモリ（１１５）、ＩＰブロックとして使用可能なオンチップ・メモリ（１１４）、およびオンチップ・キャッシュを含むことが可能である。図２のＮＯＣにおいては、例えば、オンチップ・メモリ（１１４、１１５）のどちらが、オンチップ・キャッシュ・メモリとして実装されてもよい。ＩＰブロックに直接取り付けられるメモリにさえも言える事だが、これらの形態のメモリすべては、同一のアドレス空間、物理アドレスまたは仮想アドレスに配置されることが可能である。したがって、メモリ・アドレス指定メッセージは、ＩＰブロックに対して完全に双方向となり得る。そのようなメモリは、ネットワーク上のいかなる場所にあるどのＩＰブロックからでも直接アドレス指定され得るからである。あるＩＰブロック上のオンチップ・メモリ（１１４）は、そのＩＰブロックから、またはＮＯＣ内の任意の他のＩＰブロックからアドレス指定され得る。メモリ通信制御装置に直接取り付けられるオンチップ・メモリ（１１５）は、そのメモリ通信制御装置によりネットワークに接続されるＩＰブロックによりアドレス指定されることが可能であり、つまり、ＮＯＣ内のいかなる場所にある任意の他のＩＰブロックからもアドレス指定され得る。
【００２２】
例示的ＮＯＣには、本発明の実施形態によるＮＯＣの２つの代替メモリ・アーキテクチャを示す、２つのメモリ管理ユニット（ＭＭＵ：ｍｅｍｏｒｙ  ｍａｎａｇｅｍｅｎｔ  ｕｎｉｔ）（１０７、１０９）が含まれる。ＭＭＵ（１０７）はＩＰブロックとともに実装され、ＮＯＣの残りのアーキテクチャ全体が物理メモリ・アドレス空間内で動作できるようにしながら、そのＩＰブロック内のプロセッサが仮想メモリ内で動作できるようにしている。ＭＭＵ（１０９）は、チップ外に実装され、データ通信ポート（１１６）を介してＮＯＣに接続されている。データ通信ポート（１１６）には、ピンと、ＮＯＣとＭＭＵとの間の信号伝送に必要とされるその他の配線、ならびに、メッセージ・パケットをＮＯＣパケット形式から外付けのＭＭＵ（１０９）が必要とするバス形式に変換するのに十分な情報が含まれる。ＭＭＵが外部に位置することは、ＮＯＣの全ＩＰブロック内のプロセッサすべてが仮想メモリ・アドレス空間で動作でき、オフチップ・メモリの物理アドレスへの変換がすべてチップ外にあるＭＭＵ（１０９）により扱われることを意味する。
【００２３】
ＭＭＵ（１０７、１０９）の使用により示された２つのメモリ・アーキテクチャに加え、データ通信ポート（１１８）により本発明の実施形態によるＮＯＣ内で有用な第三のメモリ・アーキテクチャが示されている。データ通信ポート（１１８）は、ＮＯＣ（１０２）のＩＰブロック（１０４）とオフチップ・メモリ（１１２）との間の直接接続を提供する。処理パス内にＭＭＵが存在しない状態において、このアーキテクチャは、ＮＯＣの全ＩＰブロックが物理アドレス空間を利用できるようにする。アドレス空間を双方向に共有する際には、ＮＯＣの全ＩＰブロックは、データ通信ポート（１１８）に直接接続されたＩＰブロックを介して指示される読込みおよび格納を含むメモリ・アドレス指定メッセージにより、そのアドレス空間内においてメモリにアクセスすることが可能である。データ通信ポート（１１８）には、ピンと、ＮＯＣとオフチップ・メモリ（１１２）との間の信号伝送に必要とされる他の配線、ならびに、メッセージ・パケットをＮＯＣパケット形式からオフチップ・メモリ（１１２）が必要とするバス形式に変換するのに十分な情報が含まれる。
【００２４】
図２の例においては、ＩＰブロックの１つがホスト・インターフェース・プロセッサ（１０５）とされている。ホスト・インターフェース・プロセッサ（１０５）は、ＮＯＣとそのＮＯＣが実装されてもよいホスト・コンピュータ（１５２）との間のインターフェースを提供し、また、例えば、ＮＯＣ上のＩＰブロック間でのホスト・コンピュータからのデータ処理要求の受信と送出を含む、ＮＯＣ上のその他すべてのＩＰブロックへのデータ処理サービスを提供する。例えば、ＮＯＣは、図１を参照して上述されたようにホスト・コンピュータ（１５２）上のＮＯＣビデオ・アダプタ（２０９）またはＮＯＣコプロセッサ（１５７）を実装してもよい。図２の例においては、ホスト・インターフェース・プロセッサ（１０５）が、データ通信ポート（１１５）を介してその大規模なホスト・コンピュータに接続される。データ通信ポート（１１５）には、ピンと、ＮＯＣとホスト・コンピュータとの間の信号伝送で必要となるその他の配線、ならびに、メッセージ・パケットをＮＯＣパケット形式からホスト・コンピュータ（１５２）が必要とするバス形式に変換するのに十分な情報が含まれる。図１のコンピュータ内のＮＯＣコプロセッサの例では、このようなポートは、ＮＯＣコプロセッサ（１５７）のリンク構造と、ＮＯＣコプロセッサ（１５７）とバス・アダプタ（１５８）との間のフロント・サイド・バス（１６３）用に必要となるプロトコルとの間でのデータ通信フォーマットの変換を提供する。
【００２５】
さらに説明するために、図３は、本発明の実施形態によるさらに例示的なＮＯＣの機能ブロック図を示す。図３の例示的ＮＯＣは、図３の例示的ＮＯＣがチップ（図２の１００）上に実装され、図３のＮＯＣ（１０２）が統合プロセッサ（ＩＰ）ブロック（１０４）、ルータ（１１０）、メモリ通信制御装置（１０６）およびネットワーク・インターフェース制御装置（１０８）を含む点で図２の例示的ＮＯＣと類似である。各ＩＰブロック（１０４）は、メモリ通信制御装置（１０６）およびネットワーク・インターフェース制御装置（１０８）を介してルータ（１１０）に接続される。各メモリ通信制御装置は、ＩＰブロックとメモリとの間の通信を制御し、各ネットワーク・インターフェース制御装置（１０８）は、ルータ（１１０）を介したＩＰブロック間の通信を制御する。図３の例においては、メモリ通信制御装置（１０６）およびネットワーク・インターフェース制御装置（１０８）を介してルータ（１１０）に接続されるＩＰブロック（１０４）のセット（１２２）が、その構造および動作をより詳細に説明するために拡大されている。図３の例におけるＩＰブロック、メモリ通信制御装置、ネットワーク・インターフェース制御装置およびルータ全てが、拡大されたセット（１２２）と同一様式で構成されている。
【００２６】
図３の例において各ＩＰブロック（１０４）には、コンピュータ・プロセッサ（１２６）およびＩ／Ｏ機能（１２４）が含まれる。この例では、コンピュータ・メモリが、各ＩＰブロック（１０４）内のランダム・アクセス・メモリ（ＲＡＭ）（１２８）のセグメントにより表されている。図２の例を参照して上述されるようにメモリは、各ＩＰブロックに関するコンテンツがＮＯＣ内のどのＩＰブロックからもアドレス指定ができ、かつアクセスできる物理アドレス空間のセグメントを占有できる。各ＩＰブロック上のコンピュータ・プロセッサ（１２６）、Ｉ／Ｏ機能（１２４）およびＲＡＭ（１２８）は、ＩＰブロックを一般的なプログラマブル・マイクロプロセッサとして効果的に実現する。しかし、本発明の範囲において上説されたように、ＩＰブロックは一般に、ＮＯＣ内のデータ処理用のビルディング・ブロックとして使用される同期または非同期論理の再使用可能ユニットを表す。ＩＰブロックを一般的なプログラマブル・マイクロプロセッサとして実装することは、したがって、説明目的では有用な共通の実施形態ではあるが、本発明の制限ではない。
【００２７】
図３のＮＯＣ（１０２）において、各メモリ通信制御装置（１０６）には、複数のメモリ通信実行エンジン（１４０）が含まれる。各メモリ通信実行エンジン（１４０）は、ＩＰブロック（１０４）からのメモリ通信命令を実行することができ、ネットワークとそのＩＰブロック（１０４）との間には、双方向のメモリ通信命令流（１４４、１４５、１４６）が含まれる。メモリ通信制御装置により実行されるメモリ通信命令は、特定のメモリ通信制御装置を介してルータに接続されるＩＰブロックからだけでなく、ＮＯＣ（１０２）のどこかにあるいかなるＩＰブロック（１０４）から生成されてもよい。つまり、ＮＯＣ内のどのＩＰブロックも、メモリ通信命令を生成し、そのメモリ通信命令の実行の為にそのメモリ通信命令を、ＮＯＣのルータを介して別のＩＰブロックに関連づけられている別のメモリ通信制御装置に伝送することが可能である。そのようなメモリ通信命令には、例えば、変換索引バッファ制御命令、キャッシュ制御命令、バリア命令、ならびにメモリ読込みおよび格納命令を含めることが可能である。
【００２８】
各メモリ通信実行エンジン（１４０）は、完全なメモリ通信命令を独立して実行したり、他のメモリ通信実行エンジンと並列して実行することが可能である。メモリ通信実行エンジンは、メモリ通信命令の並列スループット用に最適化されたスケーラブルなメモリ・トランザクション処理ルーチンを実装する。メモリ通信制御装置（１０６）は、複数のメモリ通信命令を同時に実行するためにすべてが同時に実行される複数のメモリ通信実行エンジン（１４０）をサポートする。新たなメモリ通信命令が、メモリ通信制御装置（１０６）によりあるメモリ通信実行エンジン（１４０）に割り当てられ、そのメモリ通信実行エンジン（１４０）は、複数の応答イベントを同時に受諾するが可能である。この例では、メモリ通信実行エンジン（１４０）すべてが同一である。メモリ通信制御装置（１０６）が同時に扱うことのできるメモリ通信命令数の増加は、したがって、メモリ通信実行エンジン（１４０）の数を増加させることにより実施される。
【００２９】
図３のＮＯＣ（１０２）においては、各ネットワーク・インターフェース制御装置（１０８）は、通信命令をコマンド形式からルータ（１１０）を介したＩＰブロック（１０４）間での伝送用のネットワーク・パケット形式に変換することが可能である。通信命令は、ＩＰブロック（１０４）またはメモリ通信制御装置（１０６）によりコマンド形式に定式化され、コマンド形式でネットワーク・インターフェース制御装置（１０８）に提供される。コマンド形式は、ＩＰブロック（１０４）およびメモリ通信制御装置（１０６）のアーキテクチャのレジスタ・ファイルに従う固有の形式である。ネットワーク・パケット形式は、ネットワークのルータ（１１０）を介した伝送用に必要とされる形式である。そのようなメッセージの各々は、１つ以上のネットワーク・パケットから構成される。ネットワーク・インターフェース制御装置においてコマンド形式からパケット形式に変換されるそのような通信命令の例には、ＩＰブロックとメモリとの間のメモリ読込み命令およびメモリ格納命令が含まれる。そのような通信命令にはまた、データと、ＩＰブロック間でそのデータを並列アプリケーションおよびパイプライン化されたアプリケーションで処理する命令をＩＰブロック間で搬送しているメッセージを送出する通信命令が含まれてもよい。
【００３０】
図３のＮＯＣ（１０２）において、各ＩＰブロックは、メモリ・アドレス・ベースの通信をそのＩＰブロックのメモリ通信制御装置を介してメモリに送出し、次にそこからネットワーク・インターフェース制御装置を介してネットワークへ送出することが可能である。メモリ・アドレス・ベースの通信は、読込み命令または格納命令などのメモリ・アクセス命令であり、この命令は、ＩＰブロックのメモリ通信制御装置のメモリ通信実行エンジンにより実行される。そのようなメモリ・アドレス・ベースの通信は、一般にＩＰブロックにおいて生成され、コマンド形式に定式化され、実行のためメモリ通信制御装置に伝達される。
【００３１】
多くのメモリ・アドレス・ベースの通信がメッセージ・トラフィックとともに実行される。アクセスされるメモリはいずれも、物理メモリ・アドレス空間の任意の箇所、チップ上もしくはチップ外に配置されても、ＮＯＣ内の任意のメモリ通信制御装置に直接取り付けられてもよく、または最終的には、どのＩＰブロックが任意の特定のメモリ・アドレス・ベースの通信を生成したかに関わらず、ＮＯＣの任意のＩＰブロックを介してアクセスされてもよいからである。メッセージ・トラフィックとともに実行されるメモリ・アドレス・ベースの通信はすべて、命令変換論理（１３６）によるコマンド形式からパケット形式への変換およびネットワークを介したメッセージの状態での伝送のために、メモリ通信制御装置から関連するネットワーク・インターフェース制御装置へ受け渡しされる。パケット形式への変換の際には、ネットワーク・インターフェース制御装置は、またメモリ・アドレスまたはそのメモリ・アドレス・ベースの通信によりアクセスされることになるアドレスに従いパケット用のネットワーク・アドレスを識別する。メモリ・アドレス・ベースのメッセージは、メモリ・アドレスを用いてアドレス指定される。各メモリ・アドレスは、ネットワーク・インターフェース制御装置により、ネットワーク・アドレス、通常は、物理メモリ・アドレスのある範囲に該当するメモリ通信制御装置のネットワーク・ロケーションに対応づけされる。メモリ通信制御装置（１０６）のネットワーク・ロケーションはまた、当然のことながらそのメモリ通信制御装置が関連するルータ（１１０）、ネットワーク・インターフェース制御装置（１０８）およびＩＰブロック（１０４）のネットワーク・ロケーションでもある。各ネットワーク・インターフェース制御装置内の命令変換論理（１３６）は、ＮＯＣのルータを介してメモリ・アドレス・ベースの通信を伝送する目的でメモリ・アドレスをネットワーク・アドレスに変換することもできる。
【００３２】
ネットワークのルータ（１１０）からメッセージ・トラフィックを受信すると、各ネットワーク・インターフェース制御装置（１０８）は、メモリ命令に関して各パケットを検査する。メモリ命令を包含する各パケットは、それを受信したネットワーク・インターフェース制御装置と関連のあるメモリ通信制御装置（１０６）に渡され、そこでそのメモリ命令が実行されてから、残っているペイロードをさらに処理するためにＩＰブロックに送出される。このように、ＩＰブロックが特定のメモリ・コンテントに依存するメッセージからの命令の実行を開始する前に、そのＩＰブロックによるデータ処理をサポートするためのメモリ・コンテンツが必ず準備される。
【００３３】
図３のＮＯＣ（１０２）において、各ＩＰブロック（１０４）は、メモリ通信制御装置（１０６）を迂回しＩＰブロック間のネットワーク・アドレス指定通信（１４６）をそのＩＰブロックのネットワーク・インターフェース制御装置（１０８）を介して直接ネットワークに送出することが可能である。ネットワーク・アドレス指定通信は、ネットワーク・アドレスにより他のＩＰブロックに直接送信されるメッセージである。そのようなメッセージは、パイプライン化されたアプリケーションにおける作業データ、ＳＩＭＤアプリケーションにおけるＩＰブロック間の単一プログラム処理用の複数のデータなど、当業者が思いつくであろうデータを伝送する。そのようなメッセージは、ＮＯＣのルータを介して直接送信されることになるネットワークのアドレスを知る送信元ＩＰブロックにより初めからネットワーク・アドレスが指定されている点でメモリ・アドレス・ベースの通信とは異なる。そのようなネットワーク・アドレス指定通信は、ＩＰブロックによりＩ／Ｏ機能（１２４）を介して直接そのＩＰブロックのネットワーク・インターフェース制御装置にコマンド形式で渡された後、ネットワーク・インターフェース制御装置によりパケット形式に変換され、ＮＯＣのルータを介して別のＩＰブロックに伝送される。そのようなネットワーク・アドレス指定通信（１４６）は双方向性であり、任意の特定のアプリケーションでの使用によって、ＮＯＣの各ＩＰブロックへ送られ、そこから送出される可能性がある。しかし、各ネットワーク・インターフェース制御装置は、そうした通信の関連するルータへの送出とそこからの受信の両方（１４２）が可能であり、かつ、そうした通信の、関連するメモリ通信制御装置（１０６）を迂回した関連するＩＰブロックへとそこからの直接送受信の両方（１４６）が可能である。
【００３４】
図３の例におけるネットワーク・インターフェース制御装置（１０８）の各々はまた、ネットワーク・パケットをタイプによって特徴づけ、仮想チャネルをネットワーク上に実装することが可能である。各ネットワーク・インターフェース制御装置（１０８）には、各通信命令をタイプにより分類し、その命令タイプをネットワーク・パケット・フォーマットのフィールドに記録してからその命令をパケット形式でＮＯＣ上で伝送するためルータ（１１０）に渡す、仮想チャネル実装論理（１３８）が含まれる。通信命令のタイプの例には、ＩＰブロック間ネットワーク・アドレス・ベース・メッセージ、要求メッセージ、要求応答メッセージ、キャッシュへ直接送信される無効メッセージ、メモリ読込みおよび格納メッセージ、ならびにメモリ読込み応答メッセージなどが含まれる。
【００３５】
図３の例におけるルータ（１１０）各々には、ルーティング論理（１３０）、仮想チャネル制御論理（１３２）および仮想チャネル・バッファ（１３４）が含まれる。ルーティング論理は一般に、ルータ（１１０）、リンク（１２０）およびルータ間のバス・ワイヤで構成されるネットワーク内のデータ通信用のデータ通信プロトコル・スタックを実装する同期および非同期論理のネットワークとして実装される。ルーティング論理（１３０）には、当業者の読者がチップ外ネットワークにおいてルーティング・テーブルと結びつけて考えるであろう機能性が含まれ、少なくともいくつかの実施形態においては、ルーティング・テーブルは、ＮＯＣ上での使用には遅すぎて扱いにくいと考えられている。同期および非同期論理のネットワークとして実装されるルーティング論理を単一クロック・サイクルと同じ速さで経路指定の決定を下すように設定する事も可能である。この例におけるルーティング論理は、ルータにおいて受信された各パケットの伝送用ポートを選択することによりパケットをルーティングする。各パケットにはそれがルーティングされことになるネットワーク・アドレスが含まれる。この例における各ルータには、５つのポートが含まれ、４つのポート（１２１）がリンク（１２０−Ａ、１２０−Ｂ、１２０−Ｃ、１２０−Ｄ）を介して他のルータに接続され、５番目のポート（１２３）がネットワーク・インターフェース制御装置（１０８）およびメモリ通信制御装置（１０６）を介して各ルータを関連するＩＰブロック（１０４）に接続している。
【００３６】
メモリ・アドレス・ベース通信を上述した際、各メモリ・アドレスは、ネットワーク・インターフェース制御装置によりネットワーク・アドレス、すなわちメモリ通信制御装置のネットワーク・ロケーションに対応づけされると説明した。メモリ通信制御装置（１０６）のこのネットワーク・ロケーションはまた、当然のことながらそのメモリ通信制御装置の関連するルータ（１１０）、ネットワーク・インターフェース制御装置（１０８）およびＩＰブロック（１０４）のネットワーク・ロケーションでもある。したがって、ＩＰブロック間またはネットワーク・アドレス・ベースの通信においては、アプリケーション・レベルのデータ処理において、ネットワーク・アドレスが、ＮＯＣのルータ、リンクおよびバス・ワイヤで構成されるネットワーク内のＩＰブロックのロケーションとしてみなされることもよくあることである。図２では、そのようなネットワークの１構成が、行と列からなるメッシュ構造で示されており、そのメッシュ構造においては、各ネットワーク・アドレスを、例えば、関連するルータ、ＩＰブロック、メモリ通信制御装置およびネットワーク・インターフェース制御装置からなるセットの各々用の固有識別子、またはそのメッシュ構造におけるそうしたセット各々のｘ、ｙ座標のいずれかとして実装することが可能である。
【００３７】
図３のＮＯＣ（１０２）においては、各ルータ（１１０）が２つ以上の仮想通信チャネルを実装し、各仮想通信チャネルが通信タイプにより特徴づけられている。通信命令タイプ、すなわち仮想チャネル・タイプには上述されたような、ＩＰブロック間ネットワーク・アドレス・ベース・メッセージ、要求メッセージ、要求応答メッセージ、キャッシュへ直接送信される無効メッセージ、メモリ読込みおよび格納メッセージ、ならびにメモリ読込み応答メッセージなどが含まれる。仮想チャネルに加え、図３の例では各ルータ（１１０）には、仮想チャネル制御論理（１３２）、および仮想チャネル・バッファ（１３４）も含まれる。仮想チャネル制御論理（１３２）は、受信されたパケット各々を関連する通信タイプに関して調査し、ポートを介したＮＯＣ上の隣接するルータへの伝送のために、その通信タイプ用の出力仮想チャネル・バッファ内に各パケットを格納する。
【００３８】
各仮想チャネル・バッファ（１３４）は、有限のストレージ空間を有する。多くのパケットが短期間に受信された場合、仮想チャネル・バッファがいっぱいになることがあり、それ以上パケットがバッファに入れられなくなることがある。別のプロトコルでは、バッファがいっぱいの仮想チャネル上に到着したパケットは欠損することになる。しかし、この例の各仮想チャネル・バッファ（１３４）は、バス・ワイヤの制御信号を用いて、仮想チャネル制御論理を介して周囲のルータに仮想チャネル内の伝送を中断、つまり、特定の通信タイプのパケットの伝送を中断するよう通知することが可能である。ある仮想チャネルがそのように中断されても、他の仮想チャネルはすべて影響を受けず、全力で動作を継続できる。制御信号は、各ルータを介して各ルータの関連するネットワーク・インターフェース制御装置（１０８）へ戻る。各ネットワーク・インターフェース制御装置は、そのような信号を受信すると、関連するメモリ通信制御装置（１０６）または関連するＩＰブロック（１０４）からの中断された仮想チャネル用の通信命令の受理を拒むよう設定されている。このように、仮想チャネルの中断は、その仮想チャネルを実装する全ハードウェアに影響を与え、送信元ＩＰブロックまで戻る。
【００３９】
仮想チャネル内のパケット伝送を中断する効果の一つは、図３のアーキテクチャにおいてどのパケットも決して欠損しないことである。あるルータが、例えば、インターネット・プロトコルなどのある程度信頼できないプロトコルにおいてパケットが欠損したかもしれない状況に遭遇した場合、図３の例のルータが、その各々の仮想チャネル・バッファ（１３４）と仮想チャネル制御論理（１３２）により、仮想チャネル内のパケットの全伝送を、バッファ空間が再び利用可能になり、パケットを取りこぼす要因がなにもなくなるまで中断する。したがって図３のＮＯＣは、ハードウェアの層がかなり薄く高度な信頼性のあるネットワーク通信プロトコルを実装する。
【００４０】
さらに説明するために、図４は、本発明の実施形態によるＮＯＣを用いたデータ処理の例示的方法を図解する流れ図を示す。図４の方法は、本明細書で上述されたチップ（図３の１００）上にＩＰブロック（図３の１０４）、ルータ（図３の１１０）、メモリ通信制御装置（図３の１０６）およびネットワーク・インターフェース制御装置（図３の１０８）と共に実装されるＮＯＣ（図３の１０２）と同様のＮＯＣ上に実装される。各ＩＰブロック（図３の１０４）はメモリ通信制御装置（図３の１０６）およびネットワーク・インターフェース制御装置（図３の１０８）を介してルータ（図３の１１０）に接続される。図４の方法においては、各ＩＰブロックが、ＮＯＣ内のデータ処理用のビルディング・ブロックとして使用される、同期または非同期論理設計の再使用可能なユニットとして実装されてもよい。
【００４１】
図４の方法には、メモリ通信制御装置（図３の１０６）によるＩＰブロックとメモリとの間の通信制御（４０２）が含まれる。図４の方法では、メモリ通信制御装置が複数のメモリ通信実行エンジン（図３の１４０）を含む。また、図４の方法では、ＩＰブロックとメモリとの間の通信制御（４０２）は、各メモリ通信実行エンジンが完全なメモリ通信命令を独立、および他のメモリ通信実行エンジンと並列して実行（４０４）すること、およびネットワークとＩＰブロックとの間の双方向のメモリ通信命令流を実行（４０６）することによって実行される。図４の方法においては、メモリ通信命令が、変換検索バッファ制御命令、キャッシュ制御命令、バリア命令、メモリ読込み命令およびメモリ格納命令を含んでもよい。図４の方法では、メモリが、オフチップ・メインＲＡＭと、メモリ通信制御装置を介してＩＰブロックに直接接続されるメモリと、ＩＰブロックとして利用可能なオンチップ・メモリと、オンチップ・キャッシュとを含んでもよい。
【００４２】
図４の方法はまた、ネットワーク・インターフェース制御装置（図３の１０８）によるルータを介したＩＰブロック間の通信制御（４０８）を含む。図４の方法においてＩＰブロック間の通信制御（４０８）にはまた、各ネットワーク・インターフェース制御装置による通信命令のコマンド形式からネットワーク・パケット形式への変換（４１０）、および各ネットワーク・インターフェース制御装置によるネットワーク・パケットのタイプ毎の特徴付けを含む、ネットワーク上への仮想チャネルの実装（４１２）も含まれる。
【００４３】
図４の方法はまた、２つ以上の仮想通信チャネルを介した各ルータ（図３の１１０）によるメッセージの伝送（４１４）も含み、各仮想通信チャネルが通信タイプにより特徴づけられる。通信命令タイプ、すなわち仮想チャネル・タイプには、例えば、ＩＰブロック間のネットワーク・アドレス・ベース・メッセージ、要求メッセージ、要求応答メッセージ、キャッシュへ直接送信される無効メッセージ、メモリ読込みおよび格納メッセージ、メモリ読込み応答メッセージなどが含まれる。仮想チャネルに加え、各ルータはまた、仮想チャネル制御論理（図３の１３２）および仮想チャネル・バッファ（図３の１３４）も含む。仮想チャネル制御論理は、受信されたパケット各々を関連する通信タイプに関して調査し、ポートを介したＮＯＣ上の隣接するルータへの伝送のためその通信タイプ用の出力仮想チャネル・バッファ内に各パケットを格納する。
図５
【００４４】
本発明の実施形態によるＮＯＣ上では、コンピュータ・ソフトウェア・アプリケーションがソフトウェア・パイプラインとして実装されてもよい。さらに説明するため、図５は、例示的パイプライン（６００）の動作を図示するデータ流れ図を示す。図５の例示的パイプライン（６００）には、３つの実行のステージ（６０２、６０４、６０６）が含まれる。ソフトウェア・パイプラインは、一連のデータ処理タスクを順に実行するためにお互いが連携するコンピュータ・プログラム命令のセットのモジュール、すなわち「ステージ」に分割されたコンピュータ・ソフトウェア・アプリケーションである。パイプラインにおける各ステージは、ステージＩＤにより識別されるコンピュータ・プログラム命令が柔軟に設定可能なモジュールからなり、各ステージは、ＮＯＣ上のＩＰブロックのスレッドで実行される。ステージは、各々が、そのステージの複数の命令をサポートしてもよいという点において「柔軟に設定可能」であり、したがって、パイプラインは、仕事量による必要に応じてあるステージの追加インスタンスを作成することで拡張可能であってもよい。
【００４５】
各ステージ（６０２、６０４、６０６）は、ＮＯＣ（図２の１０２）のＩＰブロック（図２の１０４）上で実行しているコンピュータ・プログラム命令により実施されるので、上述のようにメモリ・アドレス指定メッセージを用いてＩＰブロックのメモリ通信制御装置（図２の１０６）を介してアドレス指定されたメモリにアクセスすることが可能である。さらに、少なくとも１つのステージが、ネットワーク・アドレス・ベースの通信を他のステージ間に送出し、そこでは、そのネットワーク・アドレス・ベースの通信がパケットの順序を保持する。図５の例では、ステージ１およびステージ２の両方がネットワーク・アドレス・ベースの通信をステージ間に送出しており、ステージ１は出力データ（６２２〜６２６）をステージ２へ送出し、ステージ２は出力データ（６２８〜６３２）をステージ３へ送出している。
【００４６】
図５の例の出力データ（６２２〜６３２）は、パケットの順序を保持する。パイプラインのステージ間のネットワーク・アドレス・ベースの通信は、すべて同一タイプの通信であり、したがって、上述されるように同じ仮想チャネルを介して流れる。そのような通信における各パケットは、本発明の実施形態によるルータ（図３の１１０）によりルーティングされ、次々に、先入れ先出し（ＦＩＦＯ：ｆｉｒｓｔ−ｉｎ  ｆｉｒｓｔ−ｏｕｔ）順に仮想チャネル・バッファ（図３の１３４）に出入りし、したがって、正確なパケットの順序が保たれる。本発明によるネットワーク・アドレス・ベースの通信においてパケットの順序を保つことにより、パケットが並び順と同一順序で受信される、つまり、データ通信プロトコル・スタックの上位層においてパケット順序を追跡する必要がなくなるので、メッセージの完全性が与えられる。ネットワーク・プロトコル、つまり、インターネット・プロトコルが、パケット・シーケンスに関して約束しないばかりか、実際に通常はパケットを順序に反して渡し、データ通信プロトコル・スタックにおいて上位層にあたる通信制御プロトコルに、そのパケットを正しい順序に組み立て完全なメッセージにしてアプリケーション層へ渡すことを任せる、ＴＣＰ／ＩＰの例と対比されたい。
【００４７】
各ステージは、次のステージと生産者／消費者の関係を実現する。ステージ１はホスト・コンピュータ（１５２）上で実行されているアプリケーション・プログラム（１８４）からホスト・インターフェース・プロセッサ（１０５）を介して作業命令および作業対象データ（６２０）を受け取る。ステージ１は、その作業対象に対して指定されたデータ処理タスクを実行し出力データを生成し、その出力データ（６２２、６２４、６２６）をステージ２に送出し、ステージ２は、ステージ１で生成された出力データに対して指定されたデータ処理タスクを実行する事でそのデータを消費し、その結果、出力データを生成し、その出力データ（６２８、６３０、６３２）をステージ３へ送出し、ステージ３は、ステージ２で生成された出力データに対して指定されたデータ処理タスクを実行する事でそのデータを消費し、その結果、出力データを生成し、その後、事実上、ホスト・インターフェース・プロセッサ（１０５）を介してホスト・コンピュータ（１５２）上の送信元のアプリケーション・プログラム（１８４）に返送するため、その出力データ（６３４、６３６）を出力データ構造体（６３８）内に格納する。
【００４８】
送信元のアプリケーション・プログラムへ戻るには、出力データ構造体（６３８）の返送の準備が整うまでに、多数の返送データを計算する必要があることもあるため、「最終結果」と言われる。この例におけるパイプライン（６００）は、３ステージ（６０２〜６０６）において、たった６つの出力データ（６２２〜６３２）だけを用いて表されている。しかし、本発明の実施形態による多くのパイプラインには、多くのステージと、ステージの多くのインスタンスが含まれてもよい。例えば、原子過程モデリング・アプリケーションにおいては、出力データ構造体（６３８）が、パイプラインの様々なステージにおいてその各々が数千回の計算を必要とする、数十億個の亜原子粒子の正確な量子状態を含む、原子過程の特定のナノ秒時の状態を表すこともある。または、さらなる例としては、ビデオ処理アプリケーションにおいては、出力データ構造体（６３８）が、パイプライの様々なステージにおいてその各々が多くの計算を必要とする数千ものピクセルの現在の表示状態から構成される映像フレームを表すこともある。
【００４９】
パイプライン（６００）の各ステージ（６０２〜６０６）の各出力データ（６２２〜６３２）は、ＮＯＣ（図２の１０２）上の個々のＩＰブロック（図２の１０４）上で実行されるコンピュータ・プログラム命令のアプリケーション・レベル・モジュールとして実装される。各ステージは、ＮＯＣのＩＰブロック上のスレッドに割り当てられる。各ステージにはステージＩＤが割り当てられ、ステージの各インスタンスには識別子が割り当てられる。パイプライン（６００）は、この例では、ステージ１の１つのインスタンス（６０８）、ステージ２の３つのインスタンス（６１０、６１２、６１４）、およびステージ３の２つインスタンス（６１６、６１８）と共に実装されている。ステージ１の（６０２、６０８）は、起動時にホスト・インターフェース・プロセッサ（１０５）によりステージ２のインスタンス数とステージ２の各インスタンスのネットワーク・ロケーションを用いて設定される。ステージ１の（６０２、６０８）は、例えばステージ２のインスタンス（６１０〜６１４）間に均等に分散することで、結果として生じる出力データ（６２２、６２４、６２６）を分散してもよい。ステージ２の各インスタンス（６１０〜６１４）は、起動時に、ステージ２のインスタンスが、その結果として生じる仕事量を送出する権限を与えられているステージ３の各インスタンスのネットワーク・ロケーションを用いて設定される。この例では、インスタンス（６１０、６１２）両方が結果として生じる出力データ（６２８、６３０）をステージ３のインスタンス（６１６）に送出するよう設定されているその一方でステージ２の１インスタンス（６１４）だけが出力データ（６３２）をステージ３のインスタンス（６１８）に送出する。インスタンス（６１６）が、インスタンス（６１８）の２倍の仕事量を行おうとするボトルネックになった場合、即時実行中でも必要に応じてステージ３の追加インスタンスが作成されてもよい。
【００５０】
コンピュータ・ソフトウェア・アプリケーション（５００）がステージ（６０２〜６０６）に分割されている図５の例では、各ステージが、次のステージの各インスタンス用のステージＩＤを用いて設定されてもよい。ステージがステージＩＤを用いて設定されてもよいということは、ステージが、そのステージが利用可能なメモリに格納された状態の次のステージの各インスタンス用の識別子を与えられているという意味である。次のステージのインスタンスの識別子を用いた設定には、上述のように、次のステージのインスタンス数、ならびに次のステージの各インスタンスのネットワーク・ロケーションを用いた設定が含まれ得る。この例においては、ステージ１の単一のインスタンス（６０８）が、次のステージ、もちろんここではステージ２の事であるが、の各インスタンス（６１０〜６１４）用のステージ識別子、またはＩＤを用いて設定されてもよい。ステージ２の３インスタンス（６１０〜６１４）の各々は、次のステージ、当然ステージ３の事であるが、の各インスタンス（６１６、６１８）用のステージＩＤを用いて設定されてもよい。つまり、この例のステージ３は、次のステージを持たないステージの些細な例を表しているので、結局、何も持たないステージは、次のステージのステージＩＤを用いて設定されることになることを表している。
【００５１】
ここで説明されたように、次のステージのインスタンス用のＩＤを用いてステージを設定することで、ステージ間の負荷調整を実行するために必要な情報がステージに提供される。例えば、コンピュータ・ソフトウェア・アプリケーション（５００）がステージに分割される図５のパイプラインにおいては、ステージが、その性能に従い各ステージの多数のインスタンスと負荷のバランスをとる。そのような負荷調整は、例えば、ステージの性能を監視し、１つ以上のステージの性能に応じて各ステージの多数のインスタンスを作成することにより実行され得る。ステージの性能監視は、インストールされＩＰブロックまたはホスト・インターフェース・プロセッサ上の別のスレッドで動作している監視アプリケーション（５０２）に性能統計を報告するように各ステージを設定することで実行され得る。性能統計には、例えば、データ処理タスクを完了するのに必要な時間、特定時間内で完了される多数のデータ処理タスクなど当業者が思いつくであろうことを含めることが可能である。
【００５２】
１つ以上のステージの性能に従い各ステージの多数のインスタンスを作成することは、監視された性能が新たなインスタンスの必要性を示した場合に、ホスト・インターフェース・プロセッサ（１０５）が、ステージの新たなインスタンスを作成することで実行可能である。述べられるように、この例におけるインスタンス６１０、６１２は、両方とも結果として生じる出力データ（６２８、６３０）をステージ３のインスタンス（６１６）へ送出するよう設定されている一方で、ステージ２のインスタンス（６１４）だけが出力データ（６３２）をステージ３のインスタンス（６１８）に送出する。インスタンス（６１６）がインスタンス（６１８）の２倍の仕事量を行おうとするボトルネックになる場合は、即時実行時でさえ必要に応じてステージ３の追加インスタンスが作成されてもよい。
図６
【００５３】
さらに説明するため、図６は本発明の実施形態によるＮＯＣ上でのソフトウェア・パイプライン化の例示的方法を図示する流れ図を示す。図６の方法は、本明細書において上述したのと類似のＮＯＣ（図２の１０２）、つまり、チップ（図２の１００）上にＩＰブロック（図２の１０４）、ルータ（図２の１１０）、メモリ通信制御装置（図２の１０６）およびネットワーク・インターフェース制御装置（図２の１０８）と共に実装されるＮＯＣ（図２の１０２）上に実装される。各ＩＰブロック（図２の１０４）はメモリ通信制御装置（図２の１０６）およびネットワーク・インターフェース制御装置（図２の１０８）を介してルータ（図２の１１０）に接続される。図６の方法においては、各ＩＰブロックは、ＮＯＣ内のデータ処理用のビルディング・ブロックとして使用される同期または非同期論理設計の再使用可能なユニットとして実装される。
【００５４】
図６の方法は、コンピュータ・ソフトウェア・アプリケーションのステージへの分割７０２を含み、各ステージは、ステージＩＤにより識別されるコンピュータ・プログラム命令が柔軟に設定可能なモジュールとして実装される。図６の方法においては、コンピュータ・ソフトウェア・アプリケーションのステージへの分割（７０２）が、次のステージの各インスタンス用のステージＩＤを用いた各ステージの設定（７０６）により実行されてもよい。図６の方法にはまた、ＩＰブロックのスレッドでの各ステージの実行（７０４）も含まれる。
【００５５】
図６の方法においては、コンピュータ・ソフトウェア・アプリケーションのステージへの分割（７０２）に、各ステージにステージＩＤを割り当て、各ステージのＩＰブロックのスレッドへの割り当て（７０８）を含めてもよい。そのような実施形態では、ＩＰブロックのスレッドでの各ステージの実行（７０４）に、第一のステージの実行（７１０）、出力データの生成、第一のステージによる生成された出力データの第二のステージへの送出（７１２）および第二のステージによる生成された出力データの消費（７１４）を含めてもよい。
【００５６】
図６の方法においては、コンピュータ・ソフトウェア・アプリケーションのステージへの分割（７０２）には、また、ステージの性能監視（７１８）、および１つ以上のステージの性能に従い各ステージの多数のインスタンスの作成（７２０）により実行されるステージの負荷調整（７１６）が含まれてもよい。
【００５７】
本発明の例示的な実施形態が、ＮＯＣ上でのソフトウェアのパイプライン化用の完全に機能的なコンピュータ・システムのコンテキストにおいて主に説明されている。しかし、当業者であれば、本発明が、任意の適切なデータ処理システムとともに使用するためのコンピュータ・プログラムとして具現化されてもよいことを理解するであろう。そのようなコンピュータ・プログラムは、伝送媒体または、磁気媒体、光学媒体もしくはその他の適切な媒体を含む機械可読情報用の記録媒体に記憶されてもよい。記録媒体の例には、ハード・ディスク・ドライブまたはフレキシブル・ディスク内の磁気ディスク、光学ドライブ用のコンパクト・ディスク、磁気テープおよび当業者が思いつくであろうその他の媒体が含まれる。伝送媒体の例には、音声通信用の電話回線網ならびに、例えば、イーサネット（登録商標）およびインターネット・プロトコルとワールド・ワイド・ウェブと通信するネットワークをはじめとするデジタル・データ通信ネットワーク、ならびに、例えば、ＩＥＥＥ８０２.１１系規格に従い実装されたネットワークなどの無線伝送媒体が含まれる。当業者ならすぐに適切なプログラミング手段を有するコンピュータ・システムならどのようなものでも、プログラムにおいて具現化されるように本発明の方法のステップを実行できると理解するであろう。当業者ならば、本明細書で説明される例示的実施形態のいくつかは、コンピュータ・ハードウェア上にインストールされ実行するソフトウェアが元であるが、そうは言ってもファームウェアとして、またはハードウェアとして実装される代替実施形態も本発明の範囲内に十分収まっていることをすぐに理解するであろう。
【００５８】
上述の説明から修正および変更が、本発明の真の精神から逸脱することなく、その様々な実施形態においてなされてもよいことが理解されるであろう。本明細書の説明は例示目的のみであり、限定する意味において解釈されるものではない。本発明の範囲は以下の請求の範囲の文面によってのみ制限される。
【図面の簡単な説明】
【００５９】
【図１】本発明の実施形態によるＮＯＣ（ｎｅｔｗｏｒｋ  ｏｎ  ｃｈｉｐ）を用いたデータ処理に有用である例示的コンピュータを備えるオートメーション化された計算機のブロック図である。
【図２】本発明の実施形態による例示的ＮＯＣの機能ブロック図である。
【図３】本発明の実施形態によるさらに例示的なＮＯＣの機能ブロック図である。
【図４】本発明の実施形態によるＮＯＣを用いたデータ処理の例示的方法を示す流れ図である。
【図５】本発明の実施形態によるＮＯＣ上の例示的ソフトウェア・パイプラインのデータ流れ図である。
【図６】本発明の実施形態によるＮＯＣ上でのソフトウェアのパイプライン化の例示的方法を示す流れ図である。
【符号の説明】
【００６０】
７０２：コンピュータ・ソフトウェア・アプリケーションを、各々がステージＩＤにより識別されるコンピュータ・プログラム命令が柔軟に設定可能なモジュールを備えるステージに分割
７０６：次のステージの各インスタンス用のステージＩＤを用いて各ステージを設定
７０８：ＩＰブロックのスレッドへの各ステージの割り当て。各ステージへのステージＩＤの割り当て
７１６：ステージの負荷調整
７１８：ステージの性能監視
７２０：１つ以上のステージの性能に従って各ステージの多数のインスタンスの作成
７１０：出力データを生成する第一のステージを実行
７１２：第一のステージによる生成出力データの第二のステージへの送出
７１４：第二のステージによる生成出力データの消費
７０４：ＩＰブロックのスレッドでの各ステージの実行
【図１】
0005363064.tif 000002
【図２】
0005363064.tif 000003
【図３】
0005363064.tif 000004
【図４】
0005363064.tif 000005
【図５】
0005363064.tif 000006
【図６】
0005363064.tif 000007