(57)【要約】【課題】  高スレッド化ネットワーク・オン・ア・チップ（ＮＯＣ）プロセッサにおけるスループットを非トラステッド作業単位メッセージが損なうのを防止するためのコンピュータによって実行される方法、システム、およびコンピュータ・プログラムを提供することにある。【解決手段】  セキュリティ・メッセージは、非トラステッド作業単位メッセージに関連するものであり、ＮＯＣ内の指定のノードがあまり特権的ではない非セキュア・モードで作業単位メッセージからの命令を実行している間にセキュア・モードで動作するよう、ＮＯＣ内の他のリソースに指示する。したがって、第１のノード以外のリソースが非トラステッド作業単位メッセージから保護されているために、ＮＯＣ内のスループットは損なわれない。【選択図】  図１
2010102694.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク・オン・ア・チップ（ＮＯＣ）内のリソースへの無許可アクセスを防止するためのコンピュータによって実行される方法において、前記方法が、
ネットワーク・オン・ア・チップ（ＮＯＣ）の第１のノードで作業単位メッセージを受信するステップと、
前記ＮＯＣの前記第１のノードでセキュリティ・メッセージを受信するステップであって、前記第１のノードがあまり特権的ではない非セキュア・モードで実行している間にセキュア・モードで動作するよう、前記セキュリティ・メッセージが前記ＮＯＣ内の第２のノードに指示し、前記セキュア・モードにより前記第１のノードが前記第２のノードにアクセスするのを防止するステップと、
前記ＮＯＣの前記第１のノードで前記作業単位メッセージを実行するステップと、
を含む、コンピュータによって実行される方法。
【請求項２】
前記第１のノードおよび前記第２のノードが前記ＮＯＣ内の異なるノードである、請求項１記載のコンピュータによって実行される方法。
【請求項３】
前記第１のノードおよび前記第２のノードが前記ＮＯＣ内の同じノードである、請求項１記載のコンピュータによって実行される方法。
【請求項４】
前記作業単位メッセージが第１の操作と第２の操作とを含み、前記第１の操作が前記同じノード内の第１のコアで実行され、前記第２の操作が前記同じノード内の第２のコアで実行される、請求項３記載のコンピュータによって実行される方法。
【請求項５】
前記作業単位メッセージが前記第１のノードで実行されるグラフィックス・シェーダであり、前記グラフィックス・シェーダが前記第１のノードで実行されている間にグラフィカル・ワイヤフレーム・ジェネレータが前記第２のノードで実行される、請求項２記載のコンピュータによって実行される方法。
【請求項６】
前記作業単位メッセージからの命令が前記第１のノードで実行されている間に前記第１のノードにとってアクセス不能になるよう、前記セキュリティ・メッセージが前記ＮＯＣにとって使用可能なメモリ・リソースに指示する、請求項１記載のコンピュータによって実行される方法。
【請求項７】
前記ＮＯＣ内の各ノードが異なる専用ナノカーネルに関連し、各ナノカーネルが、前記ＮＯＣ内のノードへの作業単位メッセージの伝送および前記ＮＯＣ内のノード間の作業単位メッセージの伝送のみが可能である１つの細かいソフトウェア論理である、請求項１記載のコンピュータによって実行される方法。
【請求項８】
前記第１のノードに関連する第１の専用ナノカーネルが受信側ロジックを制御し、前記受信側ロジックが前記第１のノードに前記作業単位メッセージをディスパッチし、前記セキュア・モードで動作するよう、前記受信側ロジックが前記第２のノードに指示する、請求項７記載のコンピュータによって実行される方法。
【請求項９】
前記ＮＯＣ内の他のノードへのアクセスを制限することにより、前記セキュリティ・メッセージが前記ＮＯＣ内の前記他のノードへのメッセージ・トラフィックをさらに抑制する、請求項１記載のコンピュータによって実行される方法。
【請求項１０】
前記ＮＯＣがホスト・コンピュータによって制御され、前記作業単位メッセージが前記ホスト・コンピュータから前記第１のノードにディスパッチされ、前記作業単位メッセージが前記ホスト・コンピュータに保管されたユーザ・アプリケーションの一部である、請求項１記載のコンピュータによって実行される方法。
【請求項１１】
前記作業単位メッセージが、非トラステッド・ソースから送信された非トラステッド作業単位であり、前記非トラステッド・ソースが、前記ＮＯＣ内の受信側ロジックによって許可ソースとして認証されていない、請求項１記載のコンピュータによって実行される方法。
【請求項１２】
ホスト・コンピュータと、
前記ホスト・コンピュータに結合され、第１のノードと、第２のノードと、受信側ロジックとを含む、ネットワーク・オン・ア・チップ（ＮＯＣ）と、
を含むシステムにおいて、前記受信側ロジックが、
前記ＮＯＣ内の前記第１のノードにアドレス指定された作業単位メッセージを受信し、
前記第１のノードがあまり特権的ではない非セキュア・モードで実行している間にセキュア・モードで動作するよう、前記ＮＯＣ内の前記第２のノードに指示するセキュリティ・メッセージを受信し、前記セキュア・モードにより前記第１のノードが前記第２のノードにアクセスするのを防止し、前記第１のノードが、前記あまり特権的ではない非セキュア・モードの間に前記作業単位メッセージを実行する、システム。
【請求項１３】
コンピュータ・プログラムがエンコードされたコンピュータ可読記憶媒体において、前記コンピュータ・プログラムが、
ネットワーク・オン・ア・チップ（ＮＯＣ）の第１のノードで作業単位メッセージを受信し、
前記ＮＯＣの前記第１のノードでセキュリティ・メッセージを受信し、前記第１のノードがあまり特権的ではない非セキュア・モードで実行している間にセキュア・モードで動作するよう、前記セキュリティ・メッセージが前記ＮＯＣ内の第２のノードに指示し、前記セキュア・モードにより前記第１のノードが前記第２のノードにアクセスするのを防止し、
前記ＮＯＣの前記第１のノードで前記作業単位メッセージを実行する
ために構成されたコンピュータ実行可能命令を含む、コンピュータ可読記憶媒体。
【請求項１４】
前記第１のノードおよび前記第２のノードが前記ＮＯＣ内の異なるノードである、請求項１３記載のコンピュータ可読記憶媒体。
【請求項１５】
前記第１のノードおよび前記第２のノードが前記ＮＯＣ内の同じノードである、請求項１３記載のコンピュータ可読記憶媒体。
【請求項１６】
前記作業単位メッセージが第１の操作と第２の操作とを含み、前記第１の操作が前記同じノード内の第１のコアで実行され、前記第２の操作が前記同じノード内の第２のコアで実行される、請求項１５記載のコンピュータ可読記憶媒体。
【請求項１７】
前記作業単位メッセージが前記第１のノードで実行されるグラフィックス・シェーダであり、前記グラフィックス・シェーダが前記第１のノードで実行されている間にグラフィカル・ワイヤフレーム・ジェネレータが前記第２のノードで実行される、請求項１４記載のコンピュータ可読記憶媒体。
【請求項１８】
前記作業単位メッセージからの命令が前記第１のノードで実行されている間に前記第１のノードにとってアクセス不能になるよう、前記セキュリティ・メッセージが前記ＮＯＣにとって使用可能なメモリ・リソースに指示する、請求項１３記載のコンピュータ可読記憶媒体。
【請求項１９】
前記ＮＯＣ内の各ノードが異なる専用ナノカーネルに関連し、各ナノカーネルが、前記ＮＯＣ内のノードへの作業単位メッセージの伝送および前記ＮＯＣ内のノード間の作業単位メッセージの伝送のみが可能である１つの細かいソフトウェア論理である、請求項１３記載のコンピュータ可読記憶媒体。
【請求項２０】
前記第１のノードに関連する第１の専用ナノカーネルが受信側ロジックを制御し、前記受信側ロジックが前記第１のノードに前記作業単位メッセージをディスパッチし、前記セキュア・モードで動作するよう、前記受信側ロジックが前記第２のノードに指示する、請求項１９記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータの分野に関し、具体的にはスレッド化コンピュータ（threadedcomputer）に関する。さらに詳細には、本発明は、ネットワーク・オン・ア・チップ（ＮＯＣ：NetworkOn a Chip）集積回路プロセッサに関する。
【背景技術】
【０００２】
ネットワーク・オン・ア・チップ（ＮＯＣ）は、固有の処理装置を作成するために単一チップにネットワーク・アーキテクチャを適用する新規な集積回路である。演算論理装置とメモリとの間、ならびにシステム・バスおよび入出力（Ｉ／Ｏ）バスに沿った演算論理装置と入出力バッファとの間を流れるデータを調整する制御装置を有する標準的な単一フォン・ノイマン・アーキテクチャを利用するのではなく、ＮＯＣはパケットを使用して論理ノード（そのそれぞれがノイマン型プロセッサを利用することができる）間でデータを渡す。各パケットは、そのパケットを受信し処理する予定の論理ノードをアドレス指定するヘッダを含む。
【０００３】
このようなパケットをＮＯＣにディスパッチし、その結果、ＮＯＣ内のリソースにアクセスすることは、ホスト・コンピュータが他の内部リソース（たとえば、メモリ、ディスプレイ、入力装置など）のようにＮＯＣを取り扱うカーネル・モードで動作するホスト・コンピュータの制御下で行われる場合が多い。したがって、カーネル・モードで動作している間に、ホスト・コンピュータからＮＯＣ内の任意のノード（すなわち、処理装置）にパケットをディスパッチすることができる。このパケットは、どのユーザ・ソースから送ることもでき、非トラステッド作業単位メッセージ（untrusted work unit message）の形になる場合が多い。その結果、カーネル・モードでＮＯＣを操作すると、ＮＯＣ内のリソースに対する損害、ＮＯＣ内のリソースに関する不当な競合、ＮＯＣ内の種々のノードによる操作同士の衝突、またはＮＯＣセキュリティの侵害（たとえば、ＮＯＣ内のノードおよびリソースに対する内部または外部あるいはその両方のアクセスを制御するロジック）、あるいはこれらの組み合わせを含む、ＮＯＣのスループットに対するいくつかの脅威が提起される。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
高スレッド化ネットワーク・オン・ア・チップ（ＮＯＣ）プロセッサにおけるスループットを非トラステッド作業単位メッセージが損なうのを防止するためのコンピュータによって実行される方法、システム、およびコンピュータ・プログラム（computerprogram product）が提示される。
【課題を解決するための手段】
【０００５】
セキュリティ・メッセージは、非トラステッド作業単位メッセージに関連するものであり、ＮＯＣ内の指定のノードがあまり特権的ではない非セキュア・モードで作業単位メッセージからの命令を実行している間にセキュア・モードで動作するよう、ＮＯＣ内の他のリソースに指示する。したがって、第１のノード以外のリソースが非トラステッド作業単位メッセージから保護されているために、ＮＯＣ内のスループットは損なわれない。
【０００６】
本発明の上記ならびに追加の目的、特徴、および利点は、以下の詳細な説明で明らかになるであろう。
【０００７】
本発明に特有なものと思われる新規な特徴は特許請求の範囲に明記されている。しかし、本発明そのもの、ならびにその好ましい使用態様、追加の目的および利点は、添付図面に併せて読んだときに、以下に示す例示的な一実施形態の詳細な説明を参照することにより、最も良く理解できるであろう。
【図面の簡単な説明】
【０００８】
【図１】本発明の一実施形態で使用するために企図されている、ホスト・コンピュータに結合された模範的なネットワーク・オン・ア・チップ（ＮＯＣ）の高レベル描写を示す図である。
【図２】図１に示されているＮＯＣ内のノード内のコアの追加の詳細を示す図である。
【図３】本発明の一実施形態により１つまたは複数のＮＯＣを利用するコンピュータの模範的な一実施形態を示す図である。
【図４】図１および図３に描写されている１つまたは複数のＮＯＣの追加の詳細を示す図である。
【図５】図４に示されているＮＯＣからのＩＰブロック・ノードの追加の詳細を示す図である。
【図６】図５に示されているＮＯＣのＩＰブロック・ノードで検出されるプロセッサ・コアの追加の詳細を示す図である。
【図７】受信された作業単位メッセージによる使用のために許可されていない、ＮＯＣ内のリソースを保護することにより、ＮＯＣ内のスループットを損なうのを防止するために本発明によって行われる模範的な諸ステップの高レベル流れ図である。
【発明を実施するための形態】
【０００９】
次に、添付図面、特に図１に関連して説明すると、模範的なネットワーク・オン・ア・チップ（ＮＯＣ）１０２が提示されている。ＮＯＣ１０２は、複数のノード１０４ａ〜１０４ｄ（この場合、「ｄ」は整数である）を含む。ＮＯＣ１０２に関する追加の詳細は、以下の図２〜図６に提示する。複数のノード１０４ａ〜１０４ｄのそれぞれは、少なくとも１つのプロセッサ・コア（コア（複数も可）１０６ａ〜１０６ｄとして描写されている）を含む。ノード１０４ａ〜１０４ｄのそれぞれは、１つまたは複数のナノカーネルに関連するものである。すなわち、ノード１０４ａ〜１０４ｄのそれぞれが異なる専用ナノカーネル（たとえば、描写されているナノカーネル１０８ａ〜１０８ｄ）に関連付けることができるか、またはノード１０４ａ〜１０４ｄのすべてが単一のナノカーネル（図示せず）を共用することもできる。ナノカーネルは、ＮＯＣ内のプロセッサ・ノードによって実行される処理活動を調整することによりＮＯＣ内のソフトウェア・スレッドを管理するソフトウェア論理として定義される。この調整は、１）特定の作業単位メッセージを特定のノードに向けること、または２）セキュリティ・メッセージによって設定されたパラメータに応じてＮＯＣ１０２内のリソースへのアクセスを管理すること、あるいはその両方を含むが、これらに限定されない。
【００１０】
次に、ＮＯＣ１０２に結合されたホスト・コンピュータ１１０について考慮する。ホスト・コンピュータ１１０は、ＮＯＣ１０２に保管されたユーザ・アプリケーション１１２からの命令を含む、ＮＯＣ１０２への命令のディスパッチを監視する。（ユーザ・アプリケーション１１２はホスト・コンピュータ１１０内に保管されているものとして描写されているが、ユーザ・アプリケーション１１２は、加えて／代わって、ＮＯＣ１０２または他の外部位置（図示せず）内に保管することができることに留意されたい。）ユーザ・アプリケーション１１２は、複数の作業単位メッセージ１１４を含むことができ、そのそれぞれは１つまたは複数のソフトウェア・スレッド（第１のソフトウェア・スレッド１２４および第２のソフトウェア・スレッド１２６として模範的な方法で後述する）を含むことができる。複数の作業単位メッセージ１１４の１つは描写されている作業単位メッセージ１１６であると想定し、その作業単位メッセージ１１６は、ＮＯＣ１０２のノード１０４ａ内で実行される予定の複数命令（たとえば、ペイロード１１８）を含むものとする。受信側ロジック１２０は、ホスト・コンピュータ１１０から作業単位メッセージ１１６を受信し、それをナノカーネル１０８ａに向ける。ナノカーネル１０８ａは作業単位メッセージ１１６をノード１０４ａに転送する。したがって、ノード１０４ａはペイロード１１８（すなわち、第１のソフトウェア・スレッド１２４または第２のソフトウェア・スレッド１２６あるいはその両方）を実行することができる。以下の図２においてより詳細に説明する通り、第１のソフトウェア・スレッド１２４および第２のソフトウェア・スレッド１２６は、コア１０６ａ内の異なるハードウェア・スレッド内で実行することができる。
【００１１】
また、ノード１０４ａは、作業単位メッセージ１１６内でセキュリティ・メッセージ１２２を処理することもできる。セキュリティ・メッセージ１２２は、実行中にどのリソースがペイロード１１８と対話する可能性があり、どのリソースが対話する可能性がないかに関する命令を含む。たとえば、ノード１０４ａは、第１のソフトウェア・スレッド１２４が、他のノード１０４ｂ〜１０４ｄ、メモリ・リソース１２８（すなわち、ＮＯＣ１０２にアクセス可能であるかまたはＮＯＣ１０２内にある動的または静的キャッシュ、レジスタ、システム・メモリ、大容量記憶装置など）、または入出力（Ｉ／Ｏ）リソース１３０（すなわち、ネットワーク・ポート、キーボード、マウス、プリンタ、モニタなど）、あるいはこれらの組み合わせを含む、ＮＯＣ１０２内の任意の他のリソースへのアクセスを試みるのを防止することができる。図２においてより詳細に説明する通り、１つのハードウェア・スレッド（ペイロード１１８からの特定のソフトウェア・スレッドを実行している）が同じコア内の他のハードウェア・スレッドにアクセスできないように、ナノカーネル１０８ａは、セキュリティ・メッセージ１２２により、ノード１０４ａ内の個別ハードウェア・スレッドも制御することができる。
【００１２】
これらのリソースにアクセスするために第１のソフトウェア・スレッド１２４または作業単位メッセージ１１６またはノード１０４ａあるいはこれらの組み合わせからの任意の要求を拒否するようこのようなリソースに指示するために、ナノカーネル１０８ａは、セキュリティ・メッセージ１２２を他のリソース（ノード１０４ｂ〜１０４ｄ、メモリ・リソース１２８、Ｉ／Ｏリソース１３０）に転送することもできる。
【００１３】
上記の通り、各ノード（たとえば、ノード１０４ａ〜１０４ｄのそれぞれ）は、１つまたは複数のプロセッサ・コア（たとえば、描写されているプロセッサ・コア（複数も可）１０６ａ〜１０６ｄのうちの１つ）を含む。このようなプロセッサ・コアの模範的な一実施形態の追加の詳細は図２にプロセッサ・コア２０６として提示されている。プロセッサ・コア２０６内には、有効／実アドレス・テーブル（ＥＲＡＴ：Effective-to-Real Address Table）２０２が存在し、これは、ユーザ・アプリケーション（たとえば、図１に示されているユーザ・アプリケーション１１２）または作業単位メッセージ（たとえば、図１に示されている作業単位メッセージ１１６）にすることができる作業単位２０８から種々のソフトウェア・スレッド２０４ａ〜２０４ｄをディスパッチするために使用される。作業単位２０８がプロセッサ・コア２０６（ＮＯＣ内のアドレス指定されたノード内にあるもの）によって受信されると、レジスタ２１０ｄ、実行ユニット２１２ｄ、および出力バッファ２１４ｄから構成された特定のハードウェア・スレッド２１６は、ソフトウェア・スレッド２０４ｄ内の命令を実行することになる。以下の図６に関連して説明すると、模範的なハードウェア・スレッドは、ＦＰＲマッパ６６０、ＦＰＩＱ６７２、ＦＰＲ６８８、およびＦＰＵ６０４から構成することができる。もう１つの模範的なハードウェア・スレッドは、ＧＰＲマッパ６５８、ＦＸＩＱ６６８、ＦＸＵ６０５、およびＧＰＲ６８６から構成することができる。その他のものはＦＸＵ６９４、ＬＳＵ６９８、ＣＲＵ６９０、ＢＥＵ６９２などを含むものとして企図することができるので、これらは模範的なハードウェア・スレッドである。
【００１４】
もう一度、図２を参照し、ソフトウェア・スレッド２０４ｄは図１に描写されている第１のソフトウェア・スレッド１２４であると想定する。したがって、セキュリティ・メッセージ１２２は、ハードウェア・スレッド２１６がソフトウェア・スレッド２０４ｄ（すなわち、第１のソフトウェア・スレッド１２４）からの命令を実行する予定であるが、ハードウェア・スレッド２１６またはソフトウェア・スレッド２０４ｄあるいはその両方は、ソフトウェア・スレッド２０４ｄが実行している間、他のハードウェア・スレッド（それぞれ、他のレジスタ２１０ａ〜２１０ｃ、実行ユニット２１２ａ〜２１２ｃ、および出力バッファ２１４ａ〜２１４ｃから構成される）のいずれかにアクセスするのを禁止される予定であることを指示することができる。この例では、第２のソフトウェア・スレッド１２６（ソフトウェア・スレッド２０４ｂとして描写されている）は、ソフトウェア・スレッド１２６／２０４ｂおよびハードウェア・スレッド２１８がＮＯＣ１０２内の他のリソースへのアクセスを許可され、ソフトウェア・スレッド１２４／２０４ｄおよびハードウェア・スレッド２１６がＮＯＣ１０２内のこのような他のリソースへのアクセスを禁止されるように、ハードウェア・スレッド２１８内で非セキュア・カーネル・モードで実行することができる。
【００１５】
次に図１に戻り、模範的な目的のために、ユーザ・アプリケーション１１２はモニタ（たとえば、以下の図３に示されているディスプレイ装置３４６）上にオレンジの写実的な描写を作成するためのアプリケーションであると想定する。また、ノード１０４ａは第２のソフトウェア・スレッド１２６を実行して、オレンジのワイヤフレーム（すなわち、骨組みだけの球体のデジタル・イメージ）を作成したと想定する。オレンジのワイヤフレームに対して必要なシェーディング／テクスチャリングなどを行うために、第１のソフトウェア・スレッド１２４は、同じノード１０４ａ（描写されているもの）内またはノード１０４ｂ〜１０４ｄとは異なるノード内のいずれかで実行する必要がある。しかし、第１のソフトウェア・スレッド１２４は、無許可のユーザによって作成されたか、ウィルスによって破壊されているか、またはトラステッド・ソースからの１つのトラステッド・ソフトウェアとして妥当性検査されていない（たとえば、受信したときに公開鍵／秘密鍵のペアなどのセキュリティ・アルゴリズムによって認証されていない）１つの非トラステッド・コードにすることができる。したがって、セキュリティ・メッセージ１２２は、ＮＯＣ１０２のスループットを損なうのを防止するために、第１のハードウェア・スレッド１２４を他のリソースから分離する。第１のソフトウェア・スレッド１２４であるシェーダは、信頼できるものとして妥当性検査された後でのみ、第２のソフトウェア・スレッド１２６によって作成されたワイヤフレームについて作業して、写実的に描写されたオレンジの最終イメージを作成することができる。
【００１６】
この場合も、図１に描写されているＮＯＣ１０２の一実施形態では、ノード１０４ａ〜１０４ｄのそれぞれが、それぞれの専用ナノカーネル１０８ａ〜１０８ｄに対する排他的権利を有することに留意されたい。しかし、他の一実施形態では、単一ナノカーネル（図示せず）を使用して、すべてのノード１０４ａ〜１０４ｄ間のメッセージを制御する。しかし、この好ましい実施形態では、各ナノカーネルが固有の所定の方法でメッセージを管理することができる、より堅固なアーキテクチャを提供するために、各ノードとともに異なるナノカーネルを使用する。
【００１７】
非トラステッドの第１のソフトウェア・スレッド１２４がＮＯＣ１０２内の他のリソースにアクセスするのを防止することにより、いくつかの利点が得られる。たとえば、作業単位メッセージがどこに送信されるかを指示するルーティング・テーブルを保護することができる。このような作業単位メッセージがどこに送信されるかを制御することにより、許可トラフィックのために帯域幅が予約され、その結果、待ち時間問題が低減される。許可メッセージのみが種々のリソースにアクセスできるので、これにより、ロード・バランシングおよびリソース割り振りが行われる。
【００１８】
本発明によるＮＯＣを利用する模範的な装置は、図３に高レベルで記述されている。描写されている通り、図３は、本発明の諸実施形態によるＮＯＣとともにデータ処理で有用な模範的なコンピュータ３０２のブロック図を明記している。コンピュータ３０２は少なくとも１つのコンピュータ・プロセッサ３０４を含む。コンピュータ３０２は、高速メモリ・バス３０８およびバス・アダプタ３１０によりプロセッサ３０４およびコンピュータ３０２の他のコンポーネントに結合されるシステム・メモリである、ランダム・アクセス・メモリ（ＲＡＭ）３０６も含む。
【００１９】
ＲＡＭ３０６には、たとえば、ワード・プロセッシング、スプレッドシート、データベース操作、ビデオ・ゲーム、株式市場シミュレーション、原子量子プロセス・シミュレーション、またはその他のユーザレベル・アプリケーションなどの特定のデータ処理タスクを実行するためのコンピュータ・プログラム命令のモジュールであるアプリケーション・プログラム３１２が保管されている。また、アプリケーション・プログラム３１２は、上記の図１〜図２および以下の図７に記載されているものなどの制御プロセスも含む。また、ＲＡＭ３０６には、オペレーティング・システム（ＯＳ）３１４も保管されている。ＯＳ３１４は、アプリケーション・プログラム３１２などのリソースへの透過的ユーザ・アクセスを可能にするためにシェル３１６を含む。一般に、シェル３１６は、ユーザとオペレーティング・システムとの間のインタープリタおよびインターフェースを提供するプログラムである。より具体的には、シェル３１６は、コマンド・ライン・ユーザ・インターフェースに入力されたかまたはファイルから入力されたコマンドを実行する。したがって、コマンド・プロセッサとも呼ばれるシェル３１６は、一般に、オペレーティング・システムのソフトウェア階層の最高レベルであり、コマンド・インタープリタとして機能する。シェルは、システム・プロンプトを提供し、キーボード、マウス、またはその他のユーザ入力媒体によって入力されたコマンドを解釈し、解釈されたコマンド（複数も可）を処理のためにオペレーティング・システムの適切な下位レベル（たとえば、カーネル３１８）に送信する。シェル３１６はテキストベースで行指向のユーザ・インターフェースであるが、本発明は、図形、音声、ジェスチャなどの他のユーザ・インターフェース・モードも等しくサポートすることに留意されたい。
【００２０】
描写されている通り、ＯＳ３１４は、メモリ管理、プロセスおよびタスク管理、ディスク管理、ならびにマウスおよびキーボード管理を含む、ＯＳ３１４の他の部分およびアプリケーション・プログラム（たとえば、アプリケーション３１２）によって要求される本質的なサービスの提供を含む、ＯＳ３１４用の下位レベルの機能を含むカーネル３１８も含む。
【００２１】
図３の例のオペレーティング・システム３１４およびアプリケーション３１２はＲＡＭ３０６内に示されているが、このようなソフトウェア・コンポーネントは、データ記憶装置３２０としてのディスク・ドライブ上などの不揮発性メモリに保管することもできる。
【００２２】
このコンピュータ例３０２は、ＮＯＣビデオ・アダプタ３２２およびＮＯＣコプロセッサ３２４という本発明の諸実施形態による２つのＮＯＣ例を含む。ＮＯＣビデオ・アダプタ３２２は、ディスプレイ画面またはコンピュータ・モニターなどのディスプレイ装置３４６への図形出力のために特別に設計されたＩ／Ｏアダプタの一例である。ＮＯＣビデオ・アダプタ３２２は、高速ビデオ・バス３２６、バス・アダプタ３１０、および同じく高速バスであるフロント・サイド・バス３２８によりプロセッサ３０４に接続される。
【００２３】
このＮＯＣコプロセッサ例３２４は、バス・アダプタ３１０、フロント・サイド・バス３２８、および同じく高速バスであるフロント・サイド・バス３３０によりプロセッサ３０４に接続される。ＮＯＣコプロセッサ３２４は、メイン・プロセッサ３０４の命令で特定のデータ処理タスクを加速するように最適化される。
【００２４】
このＮＯＣビデオ・アダプタ例３２２およびＮＯＣコプロセッサ例３２４はそれぞれ、統合プロセッサ（「ＩＰ：Integrated Processor」）ブロック、ルータ、メモリ通信コントローラ、およびネットワーク・インターフェース・コントローラを含む、本発明の一実施形態によるＮＯＣを含み、各ＩＰブロックはメモリ通信コントローラおよびネットワーク・インターフェース・コントローラによりルータに対して適合され、各メモリ通信コントローラはＩＰブロックとメモリとの間の通信を制御し、各ネットワーク・インターフェース・コントローラはルータによるＩＰブロック間通信を制御する。ＮＯＣビデオ・アダプタ３２２およびＮＯＣコプロセッサ３２４は、並列処理を使用し、共用メモリへの高速ランダム・アクセスも必要とするプログラム用に最適化される。しかし、一実施形態では、本明細書に記載され、本発明によって使用するために企図されているＮＯＣは、共用メモリへの直接アクセスではなく、パケット・データのみを利用する。この場合も、本発明によって使用するために企図されている模範的なＮＯＣアーキテクチャの追加の詳細は以下の図４〜図６に提示されることに留意されたい。
【００２５】
引き続き図３について説明すると、コンピュータ３０２は、拡張バス３３４およびバス・アダプタ３１０によりプロセッサ３０４およびコンピュータ３０２の他のコンポーネントに結合されたディスク・ドライブ・アダプタ３３２を含むことができる。ディスク・ドライブ・アダプタ３３２は、データ記憶装置３２０として表されたディスク・ドライブの形で不揮発性データ記憶装置をコンピュータ３０２に接続する。本発明の諸実施形態によるＮＯＣによるデータ処理のためにコンピュータ内で有用なディスク・ドライブ・アダプタとしては、統合ドライブ・エレクトロニクス（「ＩＤＥ：Integrated Drive Electronics」）アダプタ、小型コンピュータ・システム・インターフェース（「ＳＣＳＩ：Small Computer System Interface」）アダプタ、当業者にとって思い浮かぶその他のものを含む。当業者にとって思い浮かぶように、光ディスク・ドライブ、電気的消去可能プログラマブル読み取り専用メモリ（いわゆる「ＥＥＰＲＯＭ」または「フラッシュ」メモリ）などの不揮発性コンピュータ・メモリも実現することができる。
【００２６】
このコンピュータ例３０２は、１つまたは複数の入出力（「Ｉ／Ｏ」）アダプタ３３６も含む。Ｉ／Ｏアダプタ（複数も可）３３６は、たとえば、コンピュータ・ディスプレイ画面などのディスプレイ装置への出力ならびにキーボードおよびマウスなどのユーザ入力装置３３８からのユーザ入力を制御するためのソフトウェア・ドライバおよびコンピュータ・ハードウェアによるユーザ指向入出力を実現する。
【００２７】
模範的なコンピュータ３０２は、他のコンピュータ３４２とのデータ通信のためならびにデータ通信ネットワーク３４４とのデータ通信のために通信アダプタ３４０も含むことができる。このようなデータ通信は、ＲＳ−２３２接続により、ユニバーサル・シリアル・バス（「ＵＳＢ」）などの外部バスにより、ＩＰデータ通信ネットワークなどのデータ通信ネットワークにより、さらに当業者にとって思い浮かぶその他の方法で、シリアルに実行することができる。通信アダプタは、直接またはデータ通信ネットワークを介して、あるコンピュータが他のコンピュータにデータ通信を送信するハードウェア・レベルのデータ通信を実現する。本発明の諸実施形態によるＮＯＣとともにデータ処理に有用な通信アダプタの例としては、有線ダイヤルアップ通信のためのモデム、有線データ通信ネットワーク通信のためのイーサネット（ＩＥＥＥ８０２．３）アダプタ、および無線データ通信ネットワーク通信のためのＩＥＥＥ８０２．ｘアダプタを含む。
【００２８】
ＮＯＣビデオ・アダプタ３２２およびＮＯＣコプロセッサ３２４はＮＯＣの２つの模範的な使い方に過ぎないが、本明細書に記載されているＮＯＣならびに作業パケットの制御は、ＮＯＣがデータ処理に有用であるコンテキストであれば、どのようなコンテキストでも見つけられることに留意されたい。
【００２９】
次に図４に関連して説明すると、本発明の諸実施形態による模範的なＮＯＣ４０２の機能ブロック図が提示されている。ＮＯＣ４０２は、図３に示されているＮＯＣビデオ・アダプタ３２２またはＮＯＣコプロセッサ３２４あるいはその両方として利用可能な模範的なＮＯＣである。ＮＯＣ４０２は、集積回路チップ４００上に実現され、ホスト・コンピュータ１０１（たとえば、図３に示されているプロセッサ３０４）によって制御される。ＮＯＣ４００は、統合プロセッサ（「ＩＰ」）ブロック４０４と、ルータ４１０と、メモリ通信コントローラ４０６と、ネットワーク・インターフェース・コントローラ４０８とを含む。各ＩＰブロック４０４は、専用メモリ通信コントローラ４０６および専用ネットワーク・インターフェース・コントローラ４０８によりルータ４１０に対して適合されている。各メモリ通信コントローラ４０６は、ＩＰブロック４０４とメモリ（たとえば、オンチップ・メモリ４１４またはオフチップ・メモリ４１２あるいはその両方）との間の通信を制御し、各ネットワーク・インターフェース・コントローラ４０８は、ルータ４１０によりＩＰブロック間通信を制御する。
【００３０】
ＮＯＣ４０２では、各ＩＰブロック４０４は、ＮＯＣ４０２内のデータ処理のためのビルディング・ブロックとして使用される同期または非同期論理設計の再使用可能ユニットを表す。「ＩＰブロック」という用語は、「知的財産ブロック」と呼ばれることもあり、したがって、ＩＰブロック４０４は、ある当事者によって所有され、ある当事者の知的財産であり、半導体回路の他のユーザまたは設計者にライセンス供与される設計として指定される。しかし、本発明の範囲では、ＩＰブロックは任意の特定の所有権の対象とするという要件はまったくなく、したがって、この用語は本明細書では必ず「統合プロセッサ・ブロック」として詳述される。したがって、ここで指定されるＩＰブロック４０４は、知的財産の主題である場合もあれば、主題ではない場合もある、論理、セル、またはチップ・レイアウト設計の再使用可能ユニットである。さらに、ＩＰブロック４０４は、特定用途向け集積回路（ＡＳＩＣ）チップ設計またはフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）論理設計として形成可能な論理コアである。
【００３１】
類推によってＩＰブロックを説明すると、ＩＰブロックがＮＯＣ設計のためのものであり、ライブラリがコンピュータ・プログラミングのためのものであり、離散集積回路コンポーネントがプリント回路板設計のためのものであるということになる。本発明の諸実施形態によるＮＯＣでは、ＩＰブロックは、汎用ゲート・ネットリストとして、完全な特殊目的または汎用マイクロプロセッサとして、あるいは当業者にとって思い浮かぶ他の方法で、実現することができる。ネットリストは、高レベル・プログラム・アプリケーションのためのアセンブリ・コード・リストに類似したＩＰブロックの論理機能のブール代数表現（ゲート、標準セル）である。また、ＮＯＣは、たとえば、ＶｅｒｉｌｏｇまたはＶＨＳＩＣハードウェア記述言語（ＶＨＤＬ）などのハードウェア記述言語で記述された合成可能な形で実現することもできる。ネットリストおよび合成可能な実現例に加えて、ＮＯＣは、下位レベルの物理的記述で配布することもできる。シリアライザ／デシリアライザ（ＳＥＲＤＥＳ）、フェイズロック・ループ（ＰＬＬ）、デジタル・アナログ変換器（ＤＡＣ）、アナログ・デジタル変換器（ＡＤＣ）などのアナログＩＰブロック・エレメントは、グラフィック・データ・システムＩＩ（ＧＤＳＩＩ）などのトランジスタレイアウト・フォーマットで配布することができる。ＩＰブロックのデジタル・エレメントもレイアウト・フォーマットで提供されることもある。
【００３２】
図４に示されている各ＩＰブロック４０４は、メモリ通信コントローラ４０６によりルータ４１０に対して適合されている。各メモリ通信コントローラは、ＩＰブロックとメモリとの間のデータ通信を提供するように適合された同期および非同期論理回路の集合である。ＩＰブロックとメモリとの間のこのような通信の例としては、メモリ・ロード命令およびメモリ・ストア命令を含む。メモリ通信コントローラ４０６については、以下の図５においてより詳細に説明する。
【００３３】
また、図４に描写されている各ＩＰブロック４０４は、ネットワーク・インターフェース・コントローラ４０８によりルータ４１０に対して適合されている。各ネットワーク・インターフェース・コントローラ４０８は、ＩＰブロック４０４同士のルータ４１０による通信を制御する。ＩＰブロック同士の通信の例としては、並列アプリケーションおよびパイプライン化アプリケーションにおいてＩＰブロック間でデータを処理するための命令とそのデータを伝達するメッセージ（たとえば、メッセージ／データ・パケット）を含む。ネットワーク・インターフェース・コントローラ４０８については、以下の図５においてより詳細に説明する。
【００３４】
ルータ４１０およびルータ間のリンク４２０は、図４に示されているＮＯＣ４０２のネットワーク操作を実現する。リンク４２０は、すべてのルータを接続する物理的な並列ワイヤ・バス上に実現されたパケット構造である。すなわち、各リンクは、すべてのヘッダ情報およびペイロード・データを含む、データ交換パケット全体を同時に収容するために十分な幅のワイヤ・バス上に実現される。パケット構造が、たとえば、８バイトのヘッダと５６バイトのペイロード・データを含む６４バイトを含む場合、各リンクの範囲を定めるワイヤ・バスは６４バイト幅であり、したがって、５１２本のワイヤを必要とする。加えて、各リンク４２０は双方向性であり、したがって、リンク・パケット構造が６４バイトを含む場合、ワイヤ・バスは、実際にはネットワーク内の各ルータ４１０とその隣接ルータ４１０のそれぞれとの間の１０２４本のワイヤを含む。１つのメッセージは２つ以上のパケットを含むことができるが、各パケットはワイヤ・バスの幅に正確に収まる。ルータとワイヤ・バスの各セクションとの間の接続をポートという場合、各ルータは、ネットワーク上の４つの方向のデータ伝送のそれぞれについて１つずつと、メモリ通信コントローラおよびネットワーク・インターフェース・コントローラにより特定のＩＰブロックに対してルータを適合させるための第５のポートという５つのポートを含む。
【００３５】
上記の通り、各メモリ通信コントローラ４０６は、ＩＰブロックとメモリとの間の通信を制御する。メモリは、オフチップ・メインＲＡＭ４１２、メモリ通信コントローラ４０６によりＩＰブロックに直接接続されるオンチップ・メモリ４１５、ＩＰブロックとして使用可能になっているオンチップ・メモリ４１４、およびオンチップ・キャッシュを含むことができる。図４に示されているＮＯＣ４０２では、たとえば、オンチップ・メモリ（４１４、４１５）のいずれかをオンチップ・キャッシュ・メモリとして実現することができる。これらの形式のメモリはいずれも、ＩＰブロックに直接付加されたメモリの場合でも、物理アドレスまたは仮想アドレスの同じアドレス空間に配置することができる。したがって、このようなメモリはネットワーク上のどこでも任意のＩＰブロックから直接アドレス指定することができるので、メモリ・アドレス指定メッセージはＩＰブロックに対して全面的に双方向性にすることができる。ＩＰブロック上のオンチップ・メモリ４１４は、そのＩＰブロックまたはＮＯＣ内の任意の他のＩＰブロックからアドレス指定することができる。オンチップ・メモリ４１５は、メモリ通信コントローラに直接付加され、そのメモリ通信コントローラによってネットワークに対して適合されるＩＰブロックによってアドレス指定することができる。また、オンチップ・メモリ４１５は、ＮＯＣ４０２内のどこでも任意の他のＩＰブロック４０４からアドレス指定することもできる。
【００３６】
模範的なＮＯＣ４０２は、２つのメモリ管理ユニット（「ＭＭＵ：MemoryManagement Unit」）４０７および４０９を含み、本発明の諸実施形態によるＮＯＣのための２つの代替メモリ・アーキテクチャを例示している。ＭＭＵ４０７は、特定のＩＰブロック４０４で実現され、そのＩＰブロック４０４内のプロセッサが仮想メモリで動作できるようにし、ＮＯＣ４０２の残りのアーキテクチャ全体が物理的なメモリ・アドレス空間で動作できるようにする。ＭＭＵ４０９は、ポート４１６として参照されるデータ通信ポートによりＮＯＣに接続されたオフチップとして実現される。ポート４１６は、ＮＯＣ４０２とＭＭＵ４０９との間の信号を伝導するために必要なピンおよびその他の相互接続部ならびにＮＯＣパケット・フォーマットから外部ＭＭＵ４０９によって要求されるバス・フォーマットにメッセージ・パケットを変換するために十分な知能を含む。ＭＭＵ４０９の外部位置とは、ＮＯＣ４０２のすべてのＩＰブロック４０４内のすべてのプロセッサが仮想メモリ・アドレス空間で動作することができ、オフチップ・メモリの物理アドレスへのすべての変換がオフチップＭＭＵ４０９によって処理されることを意味する。
【００３７】
ＭＭＵ４０７および４０９の使用により例示される２つのメモリ・アーキテクチャに加えて、ポート４１８として描写されているデータ通信ポートは、本発明の諸実施形態によるＮＯＣにおいて有用な第３のメモリ・アーキテクチャを例示するものである。ポート４１８は、ＮＯＣ４０２のＩＰブロック４０４とオフチップ・メモリ４１２との間の直接接続を提供する。処理経路内にＭＭＵがまったくない場合、このアーキテクチャはＮＯＣのすべてのＩＰブロックによる物理アドレス空間の利用を可能にする。このアドレス空間を双方向的に共用する際に、ＮＯＣのすべてのＩＰブロックは、ポート４１８に直接接続されたＩＰブロックにより向けられた、ロードおよびストアを含む、メモリ・アドレス指定メッセージによりアドレス空間内のメモリにアクセスすることができる。ポート４１８は、ＮＯＣとオフチップ・メモリ４１２との間の信号を伝導するために必要なピンおよびその他の相互接続部ならびにＮＯＣパケット・フォーマットからオフチップ・メモリ４１２によって要求されるバス・フォーマットにメッセージ・パケットを変換するために十分な知能を含む。
【００３８】
図４に示されている模範的なＮＯＣ４０２では、ＩＰブロック４０４の１つはホスト・インターフェース・プロセッサ４０５として指定される。ホスト・インターフェース・プロセッサ４０５は、ＮＯＣ４０２とホスト・コンピュータ２０２（図２に紹介されている）との間のインターフェースを提供する。ホスト・インターフェース・プロセッサ４０５は、たとえば、ホスト・コンピュータからＮＯＣデータ処理要求を受信し、ＩＰブロック間でディスパッチすることを含む、データ処理サービスをＮＯＣ上の他のＩＰブロックに提供する。
【００３９】
ホスト・インターフェース・プロセッサ４０５は、ポート４１７などのデータ通信ポートにより、より大型のホスト・コンピュータ１１０に接続される。ポート４１７は、ＮＯＣ４０２とホスト・コンピュータ１１０との間の信号を伝導するために必要なピンおよびその他の相互接続部ならびにＮＯＣ４０２からホスト・コンピュータ１１０によって要求されるバス・フォーマットにメッセージ・パケットを変換するために十分な知能を含む。図３に示されているコンピュータ３０２内のＮＯＣコプロセッサ３２４の例では、このようなポートは、ＮＯＣコプロセッサ３２４とバス・アダプタ３１０との間のフロント・サイド・バス３３０に必要なプロトコルと、ＮＯＣコプロセッサ３２４のリンク構造とのデータ通信フォーマット変換を可能にするであろう。
【００４０】
次に図５を参照すると、本発明の諸実施形態によるＮＯＣ４０２の追加の詳細が提示されている。図４および図５に描写されている通り、ＮＯＣ４０２は、チップ（たとえば、図４に示されているチップ４００）上に実現され、統合プロセッサ（「ＩＰ」）ブロック４０４、ルータ４１０、メモリ通信コントローラ４０６、およびネットワーク・インターフェース・コントローラ４０８を含む。各ＩＰブロック４０４はメモリ通信コントローラ４０６およびネットワーク・インターフェース・コントローラ４０８によりルータ４１０に対して適合される。各メモリ通信コントローラ４０６はＩＰブロックとメモリとの間の通信を制御し、各ネットワーク・インターフェース・コントローラ４０８はルータ４１０によるＩＰブロック間通信を制御する。図５の例では、その構造および動作に関するより詳細な説明を支援するために、メモリ通信コントローラ４０６およびネットワーク・インターフェース・コントローラ４０８によりルータ４１０に対して適合されたＩＰブロック４０４のセット５２２が拡大されている。図５の例のＩＰブロック、メモリ通信コントローラ、ネットワーク・インターフェース・コントローラ、およびルータはいずれも、拡大セット５２２と同じように構成される。
【００４１】
図５の例では、各ＩＰブロック４０４は、１つまたは複数のコア５５０を含むコンピュータ・プロセッサ５２６と、Ｉ／Ｏ機能５２４とを含む。この例では、コンピュータ・メモリは、各ＩＰブロック４０４内のランダム・アクセス・メモリ（「ＲＡＭ」）５２８のセグメントによって表される。図４の例に関連して上述したように、このメモリは、各ＩＰブロック上のその内容がＮＯＣ内の任意のＩＰブロックからアドレス指定可能でありアクセス可能である物理アドレス空間のセグメントを占有することができる。各ＩＰブロック上のプロセッサ５２６、Ｉ／Ｏ機能５２４、およびメモリ（ＲＡＭ５２８）は、一般にプログラム可能なマイクロコンピュータとしてＩＰブロックを効果的に実現する。しかし、上記で説明したように、本発明の範囲では、ＩＰブロックは一般に、ＮＯＣ内のデータ処理のためのビルディング・ブロックとして使用される同期または非同期論理の再使用可能ユニットを表す。したがって、一般にプログラム可能なマイクロコンピュータとしてＩＰブロックを実現することは、説明のために有用な共通の一実施形態であるが、本発明の制限ではない。
【００４２】
図５に示されているＮＯＣ４０２では、各メモリ通信コントローラ４０６は複数のメモリ通信実行エンジン５４０を含む。各メモリ通信実行エンジン５４０は、ネットワーク・インターフェース・コントローラ４０８とＩＰブロック４０４との間の双方向メモリ通信命令の流れ（５４４、５４５、５４６）を含む、ＩＰブロック４０４からのメモリ通信命令を実行できるようになっている。メモリ通信コントローラによって実行されるメモリ通信命令は、特定のメモリ通信コントローラによりルータに対して適合されたＩＰブロックからだけでなく、ＮＯＣ４０２内のどこでも任意のＩＰブロック４０４からも発生することができる。すなわち、ＮＯＣ４０２内の任意のＩＰブロック４０４は、メモリ通信命令を生成し、そのメモリ通信命令の実行のためにＮＯＣ４０２のルータ４１０により他のＩＰブロックに関連する他のメモリ通信コントローラにそのメモリ通信命令を伝送することができる。このようなメモリ通信命令は、たとえば、変換索引バッファ制御命令、キャッシュ制御命令、バリア命令、ならびにメモリ・ロードおよびストア命令を含むことができる。
【００４３】
描写されているメモリ通信実行エンジン５４０のそれぞれは、完全なメモリ通信命令を単独でならびに他のメモリ通信実行エンジン５４０と並列に実行できるようになっている。メモリ通信実行エンジン５４０は、メモリ通信命令の同時スループットのために最適化されたスケーラブル・メモリ・トランザクション・プロセッサを実現する。メモリ通信コントローラ４０６は複数のメモリ通信実行エンジン５４０をサポートし、そのすべてのエンジンは複数のメモリ通信命令を同時実行するために同時に動作する。新しいメモリ通信命令はメモリ通信コントローラ４０６によって各メモリ通信実行エンジン５４０に割り振られ、メモリ通信実行エンジン５４０は複数の応答イベントを同時に受け入れることができる。この例では、メモリ通信実行エンジン５４０はすべて同一である。したがって、メモリ通信コントローラ４０６によって同時に処理できるメモリ通信命令の数のスケーリングは、メモリ通信実行エンジン５４０の数をスケーリングすることによって実現される。
【００４４】
図５に描写されているＮＯＣ４０２では、各ネットワーク・インターフェース・コントローラ４０８は、ルータ４１０によりＩＰブロック４０４間で伝送するためにコマンド・フォーマットからネットワーク・パケット・フォーマットに通信命令を変換できるようになっている。通信命令は、ＩＰブロック４１０によるかまたはメモリ通信コントローラ４０６によってコマンド・フォーマットで公式化され、コマンド・フォーマットでネットワーク・インターフェース・コントローラ４０８に提供される。コマンド・フォーマットは、ＩＰブロック４０４およびメモリ通信コントローラ４０６のアーキテクチャ・レジスタ・ファイルに準拠するネイティブ・フォーマットである。ネットワーク・パケット・フォーマットは、ネットワークのルータ４１０による伝送に必要なフォーマットである。このようなメッセージはそれぞれ、１つまたは複数のネットワーク・パケットから構成される。ネットワーク・インターフェース・コントローラでコマンド・フォーマットからパケット・フォーマットに変換されるこのような通信命令の例としては、ＩＰブロックとメモリとの間のメモリ・ロード命令およびメモリ・ストア命令を含む。このような通信命令は、並列アプリケーションおよびパイプライン化アプリケーションにおいてＩＰブロック間でデータを処理するための命令とそのデータを伝達するＩＰブロック間でメッセージを送信する通信命令も含むことができる。
【００４５】
図５に示されているＮＯＣ４０２では、各ＩＰブロック４０４は、ＩＰブロックのメモリ通信コントローラによりメモリとの間でメモリアドレスベースの通信を送信し、次にそのネットワーク・インターフェース・コントローラによりネットワークにメモリアドレスベースの通信を送信できるようになっている。メモリアドレスベースの通信は、ＩＰブロックのメモリ通信コントローラのメモリ通信実行エンジンによって実行される、ロード命令またはストア命令などのメモリ・アクセス命令である。このようなメモリアドレスベースの通信は、典型的には、ＩＰブロックで発生し、コマンド・フォーマットで公式化され、実行のためにメモリ通信コントローラに受け渡される。
【００４６】
アクセスすべきメモリはいずれも、ＮＯＣ内の任意のメモリ通信コントローラに直接付加されたオンチップまたはオフチップの物理メモリ・アドレス空間内のどこにでも位置することができるか、またはどのＩＰブロックが任意の特定のメモリアドレスベースの通信を発生したかにかかわらず、ＮＯＣの任意のＩＰブロックにより最終的にアクセスすることができるので、多くのメモリアドレスベースの通信はメッセージ・トラフィックで実行される。メッセージ・トラフィックで実行されるすべてのメモリアドレスベースの通信は、（命令変換ロジック５３６を使用して）コマンド・フォーマットからパケット・フォーマットに変換し、メッセージに入れてネットワークにより伝送するために、メモリ通信コントローラから関連のネットワーク・インターフェース・コントローラに渡される。パケット・フォーマットに変換する際に、ネットワーク・インターフェース・コントローラは、メモリアドレスベースの通信によってアクセスすべき１つまたは複数のメモリ・アドレスに依存して、そのパケットに関するネットワーク・アドレスも識別する。メモリアドレスベースのメッセージはメモリ・アドレスでアドレス指定される。各メモリ・アドレスは、ネットワーク・インターフェース・コントローラによってネットワーク・アドレスにマッピングされ、典型的には、ある範囲の物理メモリ・アドレスを担当するメモリ通信コントローラのネットワーク位置にマッピングされる。メモリ通信コントローラ４０６のネットワーク位置は、当然、そのメモリ通信コントローラの関連ルータ４１０、ネットワーク・インターフェース・コントローラ４０８、およびＩＰブロック４０４のネットワーク位置でもある。各ネットワーク・インターフェース・コントローラ内の命令変換ロジック５３６は、ＮＯＣのルータによりメモリアドレスベースの通信を伝送するために、メモリ・アドレスをネットワーク・アドレスに変換することができる。
【００４７】
ネットワークのルータ４１０からメッセージ・トラフィックを受信すると、各ネットワーク・インターフェース・コントローラ４０８は、メモリ命令について各パケットを検査する。メモリ命令を含む各パケットは、受信側ネットワーク・インターフェース・コントローラに関連するメモリ通信コントローラ４０６に手渡され、そのネットワーク・インターフェース・コントローラは、パケットの残りのペイロードをＩＰブロックに送信してさらに処理する前に、メモリ命令を実行する。このようにして、メモリ内容はいつでも、ＩＰブロックが特定のメモリ内容に依存するメッセージからの命令の実行を開始する前に、ＩＰブロックによるデータ処理をサポートする準備ができている。
【００４８】
次に図５に描写されているＮＯＣ４０２に戻ると、各ＩＰブロック４０４は、そのメモリ通信コントローラ４０６をバイパスし、ＩＰブロックのネットワーク・インターフェース・コントローラ４０８によりネットワークに直接、ＩＰブロック間のネットワーク・アドレス指定通信５４６を送信できるようになっている。ネットワーク・アドレス指定通信は、ネットワーク・アドレスによって他のＩＰブロックに向けられたメッセージである。このようなメッセージは、当業者にとって思い浮かぶように、パイプライン化アプリケーション内の作業データ、ＳＩＭＤアプリケーション内のＩＰブロック間の単一プログラム処理のための複数データなどを伝送する。このようなメッセージは、ＮＯＣのルータによりメッセージが向けられるネットワーク・アドレスを把握している発生側ＩＰブロックにより、開始からネットワーク・アドレス指定されるという点で、メモリアドレスベースの通信とは異なるものである。このようなネットワーク・アドレス指定通信は、そのＩ／Ｏ機能５２４によりＩＰブロックによってコマンド・フォーマットでＩＰブロックのネットワーク・インターフェース・コントローラに直接渡され、次にネットワーク・インターフェース・コントローラによってパケット・フォーマットに変換され、ＮＯＣのルータにより他のＩＰブロックに伝送される。このようなネットワーク・アドレス指定通信５４６は、任意の特定のアプリケーションにおけるそれぞれの使い方に応じて、潜在的にＮＯＣの各ＩＰブロックとの間で移行する双方向性である。しかし、各ネットワーク・インターフェース・コントローラは、関連ルータとの間でこのような通信を送受信（通信５４２）できるようになっており、各ネットワーク・インターフェース・コントローラは、関連ＩＰブロックとの間でこのような通信を直接送受信（通信５４６）して、関連メモリ通信コントローラ４０６をバイパスできるようになっている。
【００４９】
図５の例の各ネットワーク・インターフェース・コントローラ４０８は、タイプ別にネットワーク・パケットを特徴付けて、ネットワーク上の仮想チャネルを実現できるようにもなっている。各ネットワーク・インターフェース・コントローラ４０８は、ＮＯＣ上で伝送するためにパケット形式でルータ４１０に命令を受け渡す前に、各通信命令をタイプ別に分類し、ネットワーク・パケット・フォーマットのフィールドに命令のタイプを記録する仮想チャネル実現ロジック５３８を含む。通信命令タイプの例としては、ＩＰブロック間ネットワークアドレスベースのメッセージ、要求メッセージ、要求メッセージへの応答、キャッシュに向けられた無効化メッセージ、メモリ・ロードおよびストア・メッセージ、ならびにメモリ・ロード・メッセージへの応答などを含む。
【００５０】
図５の例の各ルータ４１０は、経路指定ロジック５３０と、仮想チャネル制御ロジック５３２と、仮想チャネル・バッファ５３４とを含む。経路指定ロジックは、典型的には、ルータ４１０、リンク４２０、およびルータ間のバス・ワイヤによって形成されたネットワークにおけるデータ通信のためのデータ通信プロトコル・スタックを実現する同期および非同期論理のネットワークとして実現される。経路指定ロジック５３０は、当業者がオフチップ・ネットワークにおいてルーティング・テーブルと関連付けることができる機能を含み、少なくとも一部の実施形態のルーティング・テーブルはＮＯＣで使用するには遅すぎ厄介なものであると見なされている。同期および非同期論理のネットワークとして実現された経路指定ロジックは、単一クロック・サイクル程度の高速で経路指定決定を行うように構成することができる。この例の経路指定ロジックは、ルータで受信した各パケットを転送するためのポートを選択することによりパケットを経路指定する。各パケットは、そのパケットが経路指定されるネットワーク・アドレスを含む。この例の各ルータは、バス・ワイヤ（５２０−Ａ、５２０−Ｂ、５２０−Ｃ、５２０−Ｄ）により他のルータに接続された４つのポート５２１と、ネットワーク・インターフェース・コントローラ４０８およびメモリ通信コントローラ４０６により各ルータをその関連ＩＰブロック４０４に接続する第５のポート５２３という５つのポートを含む。
【００５１】
上記でメモリアドレスベースの通信について説明する際に、各メモリ・アドレスは、ネットワーク・インターフェース・コントローラによって、メモリ通信コントローラのネットワーク位置であるネットワーク・アドレスにマッピングされたものとして説明されている。メモリ通信コントローラ４０６のネットワーク位置は、当然、そのメモリ通信コントローラの関連ルータ４１０、ネットワーク・インターフェース・コントローラ４０８、およびＩＰブロック４０４のネットワーク位置でもある。したがって、ＩＰブロック間通信またはネットワークアドレスベースの通信では、アプリケーションレベルのデータ処理においてＮＯＣのルータ、リンク、およびバス・ワイヤによって形成されたネットワーク内のＩＰブロックの位置としてネットワーク・アドレスを表示することも典型的なことである。図４は、このようなネットワークの編成の１つが行と列のメッシュになっており、たとえば、そのメッシュの関連ルータ、ＩＰブロック、メモリ通信コントローラ、およびネットワーク・インターフェース・コントローラからなる各セット用の固有の識別子またはそのメッシュ内のこのような各セットのｘ、ｙ座標のいずれかとして、各ネットワーク・アドレスを実現できることを例示していることに留意されたい。
【００５２】
図５に描写されているＮＯＣ４０２では、各ルータ４１０は２つまたはそれ以上の仮想通信チャネルを実現し、各仮想通信チャネルは通信タイプによって特徴付けられる。通信命令タイプ、したがって、仮想チャネル・タイプとしては、ＩＰブロック間ネットワークアドレスベースのメッセージ、要求メッセージ、要求メッセージへの応答、キャッシュに向けられた無効化メッセージ、メモリ・ロードおよびストア・メッセージ、ならびにメモリ・ロード・メッセージへの応答など、上述のものを含む。仮想チャネルをサポートして、図５に描写されている各ルータ４１０は、仮想チャネル制御ロジック５３２および仮想チャネル・バッファ５３４も含む。仮想チャネル制御ロジック５３２は、それに割り当てられた通信タイプについて各受信パケットを検査し、ポートによりＮＯＣ上の隣接ルータに伝送するためにその通信タイプに関する発信仮想チャネル・バッファ内に各パケットを置く。
【００５３】
各仮想チャネル・バッファ５３４は有限の記憶空間を有する。多くのパケットが短期間に受信されると、仮想チャネル・バッファはいっぱいになる可能性があり、したがって、それ以上パケットをバッファに入れることができなくなる。他のプロトコルでは、そのバッファがいっぱいである仮想チャネル上に到着したパケットは除去されるであろう。しかし、この例の各仮想チャネル・バッファ５３４は、バス・ワイヤの制御信号により、仮想チャネルにおける伝送を中断する、すなわち、特定の通信タイプのパケットの伝送を中断するよう、仮想チャネル制御ロジックにより周囲のルータに勧告できるようになっている。ある仮想チャネルがこのように中断されると、他のすべての仮想チャネルは影響を受けず、全能力で動作し続けることができる。制御信号は、各ルータから各ルータの関連ネットワーク・インターフェース・コントローラ４０８まで全面的に有線になる。各ネットワーク・インターフェース・コントローラは、このような信号を受信すると、その関連メモリ通信コントローラ４０６からまたはその関連ＩＰブロック４０４から、中断された仮想チャネルに関する通信命令を受け入れることを拒否するよう構成される。このようにして、仮想チャネルの中断は、発生側ＩＰブロックまで全面的に、仮想チャネルを実現するすべてのハードウェアに影響する。
【００５４】
仮想チャネルにおけるパケット伝送を中断することによる影響の１つは、図５のアーキテクチャでどのパケットも除去されないことである。たとえば、インターネット・プロトコルなど、何らかの信頼できないプロトコルでパケットが除去される可能性のある状況をルータが検出した場合、バッファ空間がもう一度使用可能になり、パケットを除去する必要性が解消されるまで、図５の例のルータはその仮想チャネル・バッファ５３４およびその仮想チャネル制御ロジック５３２により仮想チャネル内のパケットのすべての伝送を中断する。したがって、図５に描写されているＮＯＣ４０２は、極めて薄い層のハードウェアにより高信頼性のネットワーク通信プロトコルを実現する。
【００５５】
図５に描写されているネットワーク・インターフェース・コントローラ４０８およびルータ４１０は、上記の図２に記載されているパケット受信側ロジック２１２およびパケット・リダイレクト・ロジック２１６の機能を実行することに留意されたい。加えて、ブレークポイント検出ロジック２１４は、上述のようにシングルステップで着信ソフトウェア・パケットを引き起こすようにＩＰブロック４０４とのインターフェースを取る。
【００５６】
次に図６を参照すると、元々は図５に提示されているコア５５０の追加の模範的な詳細が提示されている。コア５５０は、統一されたレベル２（Ｌ２）キャッシュ６１６と、それぞれ二叉のレベル１（Ｌ１）の命令（Ｉ）キャッシュ６１８およびデータ（Ｄ）キャッシュ６２０とを含む、オンチップ・マルチレベル・キャッシュ階層を含む。当業者にとって周知の通り、キャッシュ６１６、６１８、および６２０は、システム・メモリ（たとえば、図３に示されているＲＡＭ３０６）内のメモリ位置に対応するキャッシュ・ラインへの低待ち時間アクセスを可能にする。
【００５７】
命令取り出しアドレス・レジスタ（ＩＦＡＲ：instructionfetch address register）６３０内に常駐する有効アドレス（ＥＡ：effectiveaddress）に応答して、処理のためにＬ１  Ｉキャッシュ６１８から命令が取り出される。各サイクル中に、条件付き分岐命令の予測による投機的ターゲット経路（speculative target path）および順次アドレスを提供する分岐予測ユニット（ＢＰＵ：branch prediction unit）６３６、フラッシュおよび割り込みアドレスを提供するグローバル完了テーブル（ＧＣＴ：global completion table）６３８、予測された条件付き分岐命令の解決による非投機的アドレス（non-speculative address）を提供する分岐実行ユニット（ＢＥＵ：branchexecution unit）６９２という３つのソースのうちの１つからＩＦＡＲ６３０に新しい命令取り出しアドレスをロードすることができる。分岐履歴テーブル（ＢＨＴ：branch history table）６３５はＢＰＵ６３６に関連するものであり、今後の分岐命令の予測を支援するために条件付き分岐命令の解決がそこに記録される。
【００５８】
ＩＦＡＲ６３０内の命令取り出しアドレスなどの有効アドレス（ＥＡ）は、プロセッサによって生成された命令またはデータのアドレスである。ＥＡは、セグメント・レジスタおよびそのセグメント内のオフセット情報を指定する。メモリ内のデータ（命令を含む）にアクセスするために、ＥＡは、１つまたは複数のレベルの変換により、そのデータまたは命令が保管されている物理的位置に関連する実アドレス（ＲＡ：real address）に変換される。
【００５９】
コア５５０内では、有効／実アドレス変換は、メモリ管理ユニット（ＭＭＵ）および関連のアドレス変換機構によって実行される。好ましくは、命令アクセスおよびデータ・アクセスのために別々のＭＭＵが提供される。図６には、明瞭にするために、単一のＭＭＵ６６１が例示されており、命令ストア・ユニット（ＩＳＵ：Instruction Store Unit）６０１への接続のみを示している。しかし、当業者であれば、ＭＭＵ６１１が好ましくはロード／ストア・ユニット（ＬＳＵ：load/store unit）６９６および６９８ならびにメモリ・アクセスを管理するために必要な他のコンポーネントへの接続（図示せず）も含むことを理解するであろう。ＭＭＵ６１１は、データ変換索引バッファ（ＤＴＬＢ：Data Translation Lookaside Buffer）６１２および命令変換索引バッファ（ＩＴＬＢ：Instruction Translation Lookaside Buffer）６１３を含む。各ＴＬＢは最近参照されたページ・テーブル項目を含み、その項目はデータ（ＤＴＬＢ６１２）または命令（ＩＴＬＢ６１３）についてＥＡをＲＡに変換するためにアクセスされる。ＩＴＬＢ６１３からの最近参照されたＥＡ／ＲＡ変換は、ＥＯＰ有効／実アドレス・テーブル（ＥＲＡＴ：effective-to-real address table）６３２にキャッシュされる。
【００６０】
ＥＲＡＴ６３２によりＩＦＡＲ６３０に含まれるＥＡを変換し、Ｉキャッシュ・ディレクトリ６３４内の実アドレス（ＲＡ）をルックアップした後に、ＩＦＡＲ６３０内のＥＡに対応する命令のキャッシュ・ラインがＬ１  Ｉキャッシュ６１８に常駐しないことをヒット／ミス・ロジック６２２が判断した場合、ヒット／ミス・ロジック６２２は、Ｉキャッシュ要求バス６２４を介して要求アドレスとしてＬ２キャッシュ６１６にＲＡを提供する。このような要求アドレスは、最近のアクセス・パターンに基づいてＬ２キャッシュ６１６内の事前取り出しロジックによって生成することもできる。要求アドレスに応答して、Ｌ２キャッシュ６１６は複数命令のキャッシュ・ラインを出力し、その命令は、おそらく任意選択の事前デコード・ロジック６０２を通過した後、Ｉキャッシュ再ロード・バス６２６を介して事前取り出しバッファ（ＰＢ：prefetch buffer）６２８およびＬ１  Ｉキャッシュ６１８にロードされる。
【００６１】
ＩＦＡＲ６３０内のＥＡによって指定されたキャッシュ・ラインがＬ１キャッシュ６１８内に常駐すると、Ｌ１  Ｉキャッシュ６１８は、分岐予測ユニット（ＢＰＵ）６３６および命令取り出しバッファ（ＩＦＢ）６４０の両方にキャッシュ・ラインを出力する。ＢＰＵ６３６は、複数命令のキャッシュ・ラインを走査して分岐命令を捜し、条件付き分岐命令があれば、その結果を予測する。分岐予測後に、ＢＰＵ６３６は、上述の通り、ＩＦＡＲ６３０に投機的命令取り出しアドレスを供給し、条件付き分岐命令がその後、分岐実行ユニット６９２によって解決されたときに予測の正確さを決定できるように、分岐命令キュー６６４にその予測を渡す。
【００６２】
ＩＦＢ６４０は、複数命令のキャッシュ・ラインが命令変換ユニット（ＩＴＵ）６４２によって変換できるまで、Ｌ１  Ｉキャッシュ６１８から受信した複数命令のキャッシュ・ラインを一時的にバッファリングする。コア５５０の例示されている実施形態では、ＩＴＵ６４２は、ユーザ命令セット・アーキテクチャ（ＵＩＳＡ：user instruction set architecture）命令からの命令を、コア５５０の実行ユニットによって直接実行可能な、おそらく異なる数の内部ＩＳＡ（ＩＩＳＡ：internal ISA）命令に変換する。このような変換は、たとえば、読み取り専用メモリ（ＲＯＭ）テンプレートに保管されたマイクロコードを参照することにより、実行することができる。少なくともいくつかの実施形態では、ＵＩＳＡ／ＩＩＳＡ変換の結果、ＵＩＳＡ命令とは異なる数のＩＩＳＡ命令または対応するＵＩＳＡ命令とは異なる長さのＩＩＳＡ命令あるいはその両方が得られる。結果として得られるＩＩＳＡ命令は、次に、グローバル完了テーブル６３８によって命令グループに割り当てられ、そのメンバは相互に対して順不同にディスパッチし実行することが許可される。グローバル完了テーブル６３８は、それに関する実行を少なくとも１つの関連ＥＡによって完了する必要がある各命令グループを追跡し、その関連ＥＡは好ましくは命令グループ内の最も古い命令のＥＡである。
【００６３】
ＵＩＳＡ／ＩＩＳＡ命令変換後に、命令は、命令タイプに基づいて、おそらく順不同に、ラッチ６４４、６４６、６４８、および６５０のうちの１つにディスパッチされる。すなわち、分岐命令およびその他の条件レジスタ（ＣＲ：condition register）変更命令はラッチ６４４にディスパッチされ、固定小数点およびロード・ストア命令はラッチ６４６および６４８のいずれか一方にディスパッチされ、浮動小数点命令はラッチ６５０にディスパッチされる。実行結果を一時的に保管するためにリネーム・レジスタを必要とする各命令には、次に、ＣＲマッパ６５２、リンクおよびカウント（ＬＣ：link and count）レジスタ・マッパ６５４、例外レジスタ（ＸＥＲ：exceptionregister）マッパ６５６、汎用レジスタ（ＧＰＲ：general-purpose register）マッパ６５８、および浮動小数点レジスタ（ＦＰＲ：floating-point register）マッパ６６０のうちの適切なマッパによって１つまたは複数のリネーム・レジスタが割り当てられる。
【００６４】
ディスパッチされた命令は、次に、ＣＲ発行キュー（ＣＲＩＱ：CRissue queue）６６２、分岐発行キュー（ＢＩＱ：branch issue queue）６６４、固定小数点発行キュー（ＦＸＩＱ：fixed-point issue queue）６６６および６６８、ならびに浮動小数点発行キュー（ＦＰＩＱ：floating-point issue queue）６７０および６７２のうちの適切な発行キューに一時的に入れられる。データ依存および逆依存が観察される限り、実行のために発行キュー６６２、６６４、６６６、６６８、６７０、および６７２から、処理装置６０３の実行ユニットに対し適切な機会に命令を発行することができる。しかし、いずれかの命令を再発行する必要がある場合、命令の実行が完了し、結果データがある場合にそのデータが書き戻されるまで、命令は発行キュー６６２〜６７２に維持される。
【００６５】
例示されている通り、コア５５０の実行ユニットは、ＣＲ変更命令を実行するためのＣＲユニット（ＣＲＵ）６９０、分岐命令を実行するための分岐実行ユニット（ＢＥＵ）６９２）、固定小数点命令を実行するための２つの固定小数点ユニット（ＦＸＵ）６９４および６０５、ロードおよびストア命令を実行するための２つのロード／ストア・ユニット（ＬＳＵ）６９６および６９８、浮動小数点命令を実行するための２つの浮動小数点ユニット（ＦＰＵ）６０６および６０４を含む。実行ユニット６９０〜６０４のそれぞれは、好ましくは、いくつかのパイプライン・ステージを有する実行パイプラインとして実現される。
【００６６】
実行ユニット６９０〜６０４のうちの１つにおける実行中に、命令は、実行ユニットに結合されたレジスタ・ファイル内の１つまたは複数の構築レジスタまたはリネーム・レジスタあるいはその両方からのオペランドがある場合にそのオペランドを受信する。ＣＲ変更命令またはＣＲ依存命令を実行しているときに、ＣＲＵ６９０およびＢＥＵ６９２はＣＲレジスタ・ファイル６８０にアクセスし、そのレジスタ・ファイルは好ましい一実施形態では１つのＣＲと、それぞれが１つまたは複数のビットから形成されたいくつかの個別フィールドを含むいくつかのＣＲリネーム・レジスタとを含む。これらのフィールドの中には、ある値（典型的には命令の結果またはオペランド）がゼロより小さいか、ゼロより大きいか、またはゼロに等しいかどうかをそれぞれ示すＬＴ、ＧＴ、ＥＱフィールドがある。リンクおよびカウント・レジスタ（ＬＣＲ）ファイル６８２は、それぞれのカウント・レジスタ（ＣＴＲ）、リンク・レジスタ（ＬＲ）、およびリネーム・レジスタを含み、それによりＢＥＵ６９２は条件付き分岐を解決して経路アドレスを入手することもできる。同期している汎用レジスタ・ファイル（ＧＰＲ）６８４および６８６は、レジスタ・ファイルを複製し、ＦＸＵ６９４および６０５ならびにＬＳＵ６９６および６９８によってアクセスされ生成された固定小数点値および整数値を保管する。浮動小数点レジスタ・ファイル（ＦＰＲ）６８８は、ＧＰＲ６８４および６８６のように、同期レジスタの複製セットとして実現することもでき、ＦＰＵ６０６および６０４による浮動小数点命令の実行ならびにＬＳＵ６９６および６９８による浮動小数点ロード命令の実行の結果として得られる浮動小数点値を含む。
【００６７】
実行ユニットが命令の実行を終了した後、その実行ユニットはＧＣＴ６３８に通知し、そのＧＣＴはプログラムの順序で命令の完了をスケジュールする。ＣＲＵ６９０、ＦＸＵ６９４および６０５、またはＦＰＵ６０６および６０４のうちの１つによって実行された命令を完了するために、ＧＣＴ６３８は実行ユニットに信号を送り、その実行ユニットは、割り当てられたリネーム・レジスタ（複数も可）からの結果データがある場合にそのデータを適切なレジスタ・ファイル内の１つまたは複数の構築レジスタに書き戻す。次に命令は発行キューから除去され、その命令グループ内のすべての命令が完了すると、ＧＣＴ６３８から除去される。しかし、他のタイプの命令は異なる方法で完了される。
【００６８】
ＢＥＵ６９２が条件付き分岐命令を解決し、取るべき実行経路の経路アドレスを決定すると、その経路アドレスはＢＰＵ６３６によって予測された投機的経路アドレスと比較される。経路アドレスが一致する場合、それ以上の処理は不要である。しかし、計算された経路アドレスが予測された経路アドレスと一致しない場合、ＢＥＵ６９２は正しい経路アドレスをＩＦＡＲ６３０に供給する。いずれかの場合、次に分岐命令をＢＩＱ６６４から除去することができ、同じ命令グループ内の他のすべての命令が実行を完了すると、分岐命令をＧＣＴ６３８から除去することができる。
【００６９】
ロード命令の実行後、ロード命令を実行することによって計算された有効アドレスは、データＥＲＡＴ（例示せず）によって実アドレスに変換され、次に要求アドレスとしてＬ１  Ｄキャッシュ６２０に提供される。この時点で、ロード命令はＦＸＩＱ６６６または６６８から除去され、指示されたロードが実行されるまでロード・リオーダ・キュー（ＬＲＱ：load reorder queue）６０９に入れられる。要求アドレスがＬ１  Ｄキャッシュ６２０で見当たらない場合、要求アドレスはロード・ミス・キュー（ＬＭＱ：load miss queue）６０７に入れられ、それにより要求されたデータがＬ２キャッシュ６１６から取り出され、それに失敗すると、他のコア５５０またはシステム・メモリ（たとえば、図５に示されているＲＡＭ５２８）から取り出される。ＬＲＱ６０９は、排他的アクセス要求（たとえば、変更予定の読み取り（read-with-intent-to-modify））をスヌープし、未完了のロードに対して相互接続ファブリック（図示せず）上でフラッシュまたは強制終了し、ヒットが発生した場合、ロード命令を取り消して再発行する。ストア命令は、ストア命令の実行後にストア用の有効アドレスがそこにロードされるストア・キュー（ＳＴＱ：store queue）６１０を利用して同様に完了する。ＳＴＱ６１０からＬ１  Ｄキャッシュ６２０およびＬ２キャッシュ６１６のいずれか一方または両方にデータを保管することができる。
【００７０】
コア５５０は状態を有し、その状態は特定の時点で保管データ、命令、およびハードウェア状態を含み、本明細書では「ハード」または「ソフト」のいずれかとして定義されることに留意されたい。「ハード」状態は、プロセス内の現在のポイントからプロセスを実行するためにコア５５０にとってアーキテクチャ上必要な、コア５５０内の情報として定義される。対照的に、「ソフト」状態は、プロセスの実行の効率を改善すると思われるコア５５０内の情報として定義されるが、アーキテクチャ上正しい結果を達成するために必要なものではない。コア５５０では、ハード状態は、ＣＲＲ６８０、ＬＣＲ６８２、ＧＰＲ６８４および６８６、ＦＰＲ６８８などのユーザレベル・レジスタならびにスーパバイザ・レベル・レジスタ６５１の内容を含む。コア５５０のソフト状態は、Ｌ１  Ｉキャッシュ６１８、Ｌ１  Ｄキャッシュ６２０の内容などの「パフォーマンスクリティカル」情報、ＤＴＬＢ６１２およびＩＴＬＢ６１３などのアドレス変換情報と、ＢＨＴ６３５およびＬ２キャッシュ６１６の内容の全部または一部などのあまり重要ではない情報の両方を含む。ソフトウェア・スレッド（たとえば、第１のソフトウェア・スレッド１２４または第２のソフトウェア・スレッド１２６あるいはその両方）がコア５５０に入るかまたはそこを出ると必ず、ハード状態およびソフト状態は、ハード／ソフト状態を明記された位置に直接格納するか、またはコンテキスト交換を使用してそれを完全にフラッシュすることにより、それぞれ格納されるかまたは復元される。この状態管理は好ましくはナノカーネル（たとえば、上記の図１に記載されているナノカーネル１０８ａ〜１０８ｄ）によって実行され、したがって、１つの非トラステッド・ソフトウェア（たとえば、図１に記載されている作業単位メッセージ１１６）は悪意を持ってまたは不注意でコンテキスト交換を引き起こすことはない。
【００７１】
次に図７を参照すると、非トラステッド作業単位メッセージが高スレッド化ネットワーク・オン・ア・チップ（ＮＯＣ）プロセッサにおけるスループットを損なうのを防止するために行われる模範的な諸ステップの高レベル流れ図が提示されている。開始ブロック７０２の後、一実施形態においてＮＯＣ内の特定の第１のノードに関連するナノカーネルが作業単位メッセージを受信する（ブロック７０４）。上述の通り、この作業単位メッセージは、実行可能命令のペイロード、ならびに実行可能命令が第１のノード内で処理される間にＮＯＣ内のリソースをどのように利用し保護するかに関するセキュリティ命令を含む。したがって、その作業単位メッセージが実行している間に他のリソース（ノード、ハードウェア・スレッド、コア、メモリ、Ｉ／Ｏ装置など）を保護する（セキュア環境に置く）必要がないとセキュリティ・メッセージ／命令が判断した場合（照会ブロック７０６）、その作業単位メッセージは、ＮＯＣ内の他のリソースにアクセスできる第１のノード内で通常の非セキュア・モードで実行され（ブロック７０８）、プロセスは終了する（終了ブロック７２２）。
【００７２】
しかし、ＮＯＣ内の他のリソースを保護する必要がある（たとえば、作業単位メッセージが非トラステッドである）場合、ブロック７１０に記載されているように、その作業単位メッセージを受信するナノカーネルは、他のリソース（作業単位メッセージ内の命令が実行される予定の第１のノード以外のリソース）用のセキュア環境を確立する。これらの他のリソースは、第１のノード内で実行されているペイロード命令に対してそのリソース自体を暴露することを拒否するよう、作業単位メッセージ内のセキュリティ・メッセージによって指示される。また、作業単位からのペイロード命令が第１のノード内で実行されている間に第１のノードがＮＯＣ内の他のリソースにアクセスできないように、第１のノードに関連するナノカーネルは、そのノードを下位のあまり特権的ではないモードに押し込む（ブロック７１２）。次に、第１のノードは、すべての命令が処理されるまで（照会ブロック７１６）、作業単位メッセージからのペイロード命令を実行し始める（ブロック７１４）。作業単位メッセージまたは第１のノードあるいはその両方がＮＯＣ内の保護リソースを利用しようと試みる場合、ホスト・コンピュータ（たとえば、図１に示されているホスト・コンピュータ１１０）に例外メッセージを伝送することができ、そのホスト・コンピュータは、他のリソースが損なわれているかまたは不適切に接触されているというリスクまたは証拠がある場合に、（たとえば、図１に記載されているユーザ・アプリケーション１１２から）ユーザ・アプリケーションベースの作業単位メッセージの伝送を完全に再始動することを含む、適切な方法でその例外を処理することができることに留意されたい。
【００７３】
ブロック７１８に記載されているように、作業単位メッセージからのすべてのペイロード命令の実行を完了すると、ナノカーネルは、上位の特権ノード（それがもう一度、ＮＯＣ内の他のリソースにアクセスできる）に戻るよう、その関連の第１のノードに指示する。また、このナノカーネルは、もう一度、他のリソース自体を第１のノードにとって使用可能なものにするよう、そのリソースに指示し、その結果、そのセキュア環境の損失が発生する（ブロック７２０）。
【００７４】
本発明の少なくともいくつかの態様は代わって、プログラムを含むコンピュータ可読媒体で実現できることを理解されたい。本発明の諸機能を定義するプログラムは、書き込み不能記憶媒体（たとえば、ＣＤ−ＲＯＭ）、書き込み可能記憶媒体（たとえば、ハード・ディスク・ドライブ、読み書きＣＤ−ＲＯＭ、光学媒体）を無制限に含む、様々な有形信号伝送媒体、ならびに、イーサネット、インターネット、無線ネットワーク、同様のネットワーク・システムなどのコンピュータ・ネットワークおよび電話網などの非有形通信媒体を介して、データ記憶システムまたはコンピュータ・システムに配布することができる。したがって、本発明における方法機能を指示するコンピュータ可読命令を伝達またはエンコードするときに、このような信号伝送媒体が本発明の代替諸実施形態を表すことを理解されたい。さらに、本明細書に記載されているハードウェア、ソフトウェア、またはソフトウェアとハードウェアの組み合わせあるいはそれらと同等の形の手段を有するシステムにより本発明を実現できることは言うまでもない。
【符号の説明】
【００７５】
１０２  ネットワーク・オン・ア・チップ（ＮＯＣ）
１０４ａ〜ｄ  ノード
１０６ａ〜ｄ  コア（複数も可）
１０８ａ〜ｄ  ナノカーネル
１１０  ホスト・コンピュータ
１１２  ユーザ・アプリケーション
１１４  複数作業単位メッセージ
１１６  作業単位メッセージ
１１８  ペイロード
１２０  受信側ロジック
１２２  セキュリティ・メッセージ
１２４  第１のソフトウェア・スレッド
１２６  第２のソフトウェア・スレッド
１２８  メモリ・リソース
１３０  Ｉ／Ｏリソース
【図１】
2010102694.tif 000003
【図２】
2010102694.tif 000004
【図３】
2010102694.tif 000005
【図４】
2010102694.tif 000006
【図５】
2010102694.tif 000007
【図６】
2010102694.tif 000008
【図７】
2010102694.tif 000009