(57)【特許請求の範囲】
【請求項１】
マルチノード・データ処理システム中で命令を処理する方法であって、前記マルチノード・データ処理システムが複数の処理ノードを含み、前記複数の処理ノードのうちの各処理ノードがアドレス変換データ構造を備え、前記方法が、
前記複数の処理ノードのうちの第１の処理ノード中で、書込みおよびプッシュ命令を含む変換管理命令を復号することであって、前記変換管理命令が、前記第１の処理ノードに対する命令セット中で定義されたものである、前記復号すること、および、
前記第１の処理ノード中で前記変換管理命令を復号するのに応答して、前記第１の処理ノード中の前記アドレス変換データ構造に対して、前記第１の処理ノード中の前記アドレス変換データ構造中のエントリにデータを書き込む第１の操作を実施し、前記複数の処理ノードのうちの第２の処理ノード中の前記アドレス変換データ構造に対して、前記データの少なくとも一部を前記第２の処理ノードにプッシュして、前記第２の処理ノード中の前記アドレス変換データ構造中のエントリに前記データを書き込む第２の操作を開始することを含む方法。
【請求項２】
前記エントリの前記一部を前記第２の処理ノードにプッシュすることが、前記エントリが見つかった場合にのみ実施される、請求項１に記載の方法。
【請求項３】
前記第２の操作を開始することが、前記複数の処理ノードの各々が結合された共有ネットワークを介してブロードキャスト・コマンドを通信して、前記複数の処理ノードのうちの前記第１の処理ノード以外の各処理ノードが前記ブロードキャスト・コマンドに応答して前記第２の操作を実施するようにすることを含む、請求項１に記載の方法。
【請求項４】
前記変換管理命令が前記第２の処理ノードをターゲットとし、前記第２の操作を開始することが、前記複数の処理ノードの各々が結合された共有ネットワークを介して前記第２の処理ノードにコマンドを通信することを含む、請求項１に記載の方法。
【請求項５】
各処理ノード中の前記アドレス変換データ構造が、有効−実変換（ＥＲＡＴ）テーブルを含む、請求項１に記載の方法。
【請求項６】
各処理ノード中の前記アドレス変換データ構造が、変換ルックアサイド・バッファ（ＴＬＢ）を含む、請求項１に記載の方法。
【請求項７】
前記第２の処理ノードが汎用処理ノードを含む、請求項１に記載の方法。
【請求項８】
前記第２の処理ノードが、アクセラレータとコプロセッサとからなるグループから選択された、請求項１に記載の方法。
【請求項９】
前記変換管理命令がコプロセッサ開始命令を含み、前記第２の操作がさらに、前記コプロセッサ上でコプロセッサ・タスクを開始するように構成された、請求項８に記載の方法。
【請求項１０】
コンピュータ・プログラムであって、請求項１〜９の何れか１項に記載の方法の各ステップを、コンピュータに実行させる、コンピュータ・プログラム。
【請求項１１】
請求項１０に記載の前記コンピュータ・プログラムを、コンピュータ可読記録媒体に記録した、記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にデータ処理に関し、特に、プロセッサ・アーキテクチャおよびそれに組み込まれるアドレス変換データ構造に関する。
【背景技術】
【０００２】
メモリ管理、すなわち、コンピュータに記憶されたデータを管理する際に発生する操作は、しばしば、コンピュータの全体的なシステム性能における重要なファクタである。タスクの中でもとりわけメモリ管理は、コンピュータ上のデータの取出しおよび記憶を監督し、また、ユーザおよびコンピュータ・プログラムが何にアクセスすることが許されるかに対して制限を課すことによってコンピュータに関するいくつかのセキュリティ・タスクも管理する。
【０００３】
現代のコンピュータは通常、仮想メモリ管理として知られるメモリ管理技法に依拠して、コンピュータと、コンピュータが前提とする基礎をなすアーキテクチャ上の設計とにおいて、性能を増大させ、より多くのフレキシビリティを提供する。仮想メモリ・システムにより、コンピュータのメモリ・システムを実現する基礎をなすハードウェアは、コンピュータのソフトウェアから実際上は隠される。このようなコンピュータに対しては、比較的大きい仮想メモリ空間、例えば６４ビット以上の幅のものが定義され、コンピュータ上で実行されるコンピュータ・プログラムは、仮想メモリ空間中の位置を指す仮想アドレスを使用してメモリ・システムにアクセスする。しかし、コンピュータ中の物理メモリ・デバイスは、物理メモリ・デバイス中の特定のメモリ位置に直接にマッピングする「実」アドレスを介してアクセスされる。物理メモリの実メモリ・アドレスを仮想メモリ空間の仮想アドレスにマッピングするための「アドレス変換」を実施するために、コンピュータ中のハードウェアまたはソフトウェアあるいはその両方が提供される。したがって、コンピュータ上のコンピュータ・プログラムが仮想アドレスを使用してメモリへのアクセスを試みるときは常に、コンピュータは自動的に仮想アドレスを対応する実アドレスに変換し、それにより、仮想アドレスにマッピングされる適切な物理デバイス中の適切な位置へのアクセスを行うことができる。
【０００４】
仮想アドレス指定の特徴の１つは、コンピュータが、仮想メモリ空間全体に対する記憶域をコンピュータのメイン・メモリ中の物理メモリ・デバイスに含める必要がないことである。その代わり、ディスク・ドライブや他の大容量記憶デバイスなど、より低いレベルの記憶装置を補助記憶装置として使用することができ、メモリ・アドレスは、メイン・メモリと補助記憶装置との間で必要に応じてスワップされる「ページ」にグループ化される。コンピュータ中でのアクセス要求が頻繁なせいで、アドレス変換は、全体的なシステム性能に大きな影響を有する可能性がある。したがって、アドレス変換が実施されるクリティカルなタイミング・パスに関連する処理オーバヘッドを最小限に抑えることが望ましい。
【０００５】
仮想メモリ・システム中でのアドレス変換は通常、様々なアドレス変換データ構造にアクセスすることを組み込む。このような構造の１つはページ・テーブルと呼ばれるが、この構造は、仮想アドレスをページ単位で実アドレスにマッピングする複数のエントリを含む。しばしば、コンピュータ中で多数のメモリ・アクセスが絶えず発生するせいで、コンピュータによって使用されているメモリ・アドレス空間の全てをマッピングするのに必要とされるエントリの数はかなりの数である可能性があり、これらのエントリが専用メモリではなく主記憶装置に記憶されることが必要な可能性がある。これにより、このようなエントリへのアクセスは法外に遅くなる。このような方式によるアドレス変換を加速化するために、通常、トランスレーション・ルックアサイド・バッファ（ＴＬＢ）と呼ばれる高速メモリを使用して、最近使用されたエントリが、コンピュータによって素早くアクセスされるようにキャッシュされる。必要とされるエントリがＴＬＢに記憶されていない場合は、このエントリを主記憶装置からロードする際に性能ペナルティを被る。しかし通常、ＴＬＢ上のヒット率は、主記憶装置からエントリをロードすることに関連するペナルティが、ＴＬＢからすぐにエントリにアクセス可能なときの性能利得によって相殺されて余りあるほど、十分である。さらに他の設計では、１つまたは複数の有効−実アドレス変換（ＥＲＡＴ）テーブルを利用することによって、追加レベルのキャッシングを使用してさらに性能を加速化することができる。そのうえ、いくつかの設計では、別々のデータおよび命令ＥＲＡＴが、プロセッサ中の命令およびデータ処理ロジックの近くにそれぞれ提供されて、プロセッサ中のクリティカルな性能パスに対するアドレス変換の影響が最小限に抑えられる。
【０００６】
加えて、半導体技術がクロック速度の増加の点で実質的な制限に刻々と近づき続けるのに伴い、設計者らは、プロセッサ・アーキテクチャにおける並列性にますます焦点を合わせて性能向上を得ている。チップ・レベルでは、複数の処理コアが同じチップ上にしばしば配置され、別々のプロセッサ・チップとほぼ同じようにして機能するか、またはある程度、完全に別々のコンピュータとして機能する。加えて、コア内においても、いくつかのタイプの操作を扱うことに特化された複数の実行ユニットを使用することを通して、並列性が採用される。多くの実例ではパイプライン化も採用され、したがって、実施するのに複数のクロック・サイクルを要する場合のあるいくつかの操作がステージに分解され、それにより、より早い操作の完了前に他の操作を開始することができる。複数の命令ストリームが並列処理されるのを可能にするためにマルチスレッディングも採用され、それにより、いずれかの所与のクロック・サイクル中に、より多くの全体的作業を実施することができる。
【０００７】
結果として、多くのデータ処理システムは今や、相互接続された複数の処理ノードを組み込み、これらの処理ノードは、同じネットワークを介して相互に結合され、しばしば同じチップまたは集積回路デバイス上に配置される。いくつかの設計では、処理ノードは相互と同一である場合があるが、他の設計では、処理ノードは異種であって様々な能力を備える場合があり、したがってシステム全体は様々なタイプの作業負荷を扱うことができる。例えば、いくつかの処理ノードは、汎用作業負荷を実行できる汎用処理ノードである場合があり、他の処理ノードは、より特殊化され、汎用処理ノードが特定のタスクを扱うのを補助することに特に向けられている場合がある。特殊化された処理ノードは、例えばアクセラレータまたはコプロセッサである場合があり、これらの特殊化された処理ノードは、高度算術演算、暗号化／暗号化解除、圧縮／圧縮解除、グラフィックス、ビデオまたは画像処理など、多様なタスクを扱うのに使用されることがある。しかし、多くの場合、これらの特殊化された処理ノードは、要求に応じて特定のタスクを実施するように、汎用処理ノードによって管理される。
【０００８】
複数の処理ノードが、同じネットワークに結合されているとき、また特に、同じ物理メモリを共有するときは、専用のアドレス変換データ構造を各処理ノード中に設けて、変換エントリをキャッシュし、それによりこれらの処理ノードによるメモリ・アクセスを加速化することができる。しかし、多くの場合、作業負荷は複数の処理ノードに分散していることがあり、したがって、同じ作業負荷に取り組んでいる異なる処理ノードが、共有メモリに記憶されたいずれかのデータについての同じ変換エントリをキャッシュするときに、遅延が導入されることがある。
【０００９】
一例として、汎用処理ノードがコプロセッサに結合された場合に、汎用処理ノード上で稼働するプログラムが、コプロセッサによって使用されるようにメモリ領域にいくらかのデータを記憶し、次いで、このメモリ領域に記憶されたデータに対する操作を実施するように指示するコマンドをコプロセッサに送ることがある。汎用処理ノードがまずデータをメモリ領域に記憶しようとするとき、このノードの専用ＥＲＡＴまたはＴＬＢ中でミスが最初に発生して、それにより、メモリ領域についての変換エントリを取り出すためにページ・テーブルへのアクセスが必要な場合があり、これはしばしば、かなりの性能ペナルティを伴う。次いでその後、汎用処理ノードがコプロセッサにコマンドを送ってからコプロセッサが記憶済みデータを取り出そうとするとき、通常、コプロセッサの専用ＥＲＡＴまたはＴＬＢ中で別のミスが発生することになり、それにより、メモリ領域についての変換エントリを取り出すためにページ・テーブルへの別のアクセスが必要になる。したがって、汎用処理ノードとコプロセッサが同じデータにアクセスしようとするとき、２つのミスを被る。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
したがって、マルチノード・データ処理システム全体に分散したアドレス変換データ構造をよりよく管理する方式に対する著しい必要性が、当技術分野で存在し続けている。
【課題を解決するための手段】
【００１１】
本発明は、マルチノード・データ処理システム全体に分散したアドレス変換データ構造のリモート管理を容易にする１つまたは複数のタイプの変換管理命令を、このシステム中でサポートすることによって、従来技術に関連するこれらおよび他の問題に対処する。したがって、複数の処理ノードが共同で作業負荷を扱うマルチノード・データ処理システムの場合に、このようなノードのアドレス変換データ構造を一括管理して、変換ミスと、それに通常関連する性能ペナルティとを最小限に抑えることができる。例えば、いくつかの実施形態では、ある処理ノードが、変換管理命令を使用して、１つまたは複数の他の処理ノードのアドレス変換データ構造を管理することができ、それにより、アドレス変換データ構造は、これら他のノードによって実施されることになる近づきつつあるタスクを扱うように、事前に最適にセットアップされる。
【００１２】
例えば、あるタイプの変換管理命令は、ローカルおよびリモートの処理ノード中にそれぞれ配置されたアドレス変換データ構造に対してローカルとリモートの両方の操作を実施するのに使用することができる。例えば、探索およびプッシュ命令を使用して、ローカル・アドレス変換データ構造を探索し、探索基準に合致するエントリの索引または他の識別子を返すことができ、また、追加で、このエントリをリモート・ノードのアドレス変換データ構造中で記憶できるかまたは他の方法で生成できるように、合致するエントリに関連するデータをこのリモート・ノードにプッシュすることもできる。別の例として、書込みおよびプッシュ命令を使用して、ローカル・アドレス変換データ構造中のエントリにデータを書き込むことができ、また、追加で、リモート・ノードのアドレス変換データ構造中の対応するエントリを同様に更新できるように、書き込まれたデータをこのリモート・ノードにプッシュすることもできる。
【００１３】
別のタイプの変換管理命令は、リモート・ノードのアドレス変換データ構造中のエントリのリモート無効化を、ただしローカル・アドレス変換データ構造中のエントリに対する対応する無効化は伴わずに、開始するのに使用することができる。
【００１４】
したがって、本発明の一態様によれば、複数の処理ノードのうちの各処理ノードがアドレス変換データ構造を有する、複数の処理ノードを含むタイプのデータ処理システム中で、命令が処理される。これは、複数の処理ノードのうちの第１の処理ノード中で変換管理命令を復号することであって、変換管理命令が、第１の処理ノードに対する命令セット中で定義されたものである、復号すること、および、第１の処理ノード中で変換管理命令を復号するのに応答して、第１の処理ノード中のアドレス変換データ構造に対して第１のローカル操作を実施し、複数の処理ノードのうちの第２の処理ノード中のアドレス変換データ構造に対して第２のリモート操作を開始することによって行われる。
【００１５】
本発明の別の態様によれば、複数の処理ノードのうちの各処理ノードがアドレス変換データ構造を有する、複数の処理ノードを含むタイプのデータ処理システム中で、命令が処理される。これは、複数の処理ノードのうちの第１の処理ノード中で変換管理命令を復号することであって、変換管理命令が、第１の処理ノードに対する命令セット中で定義されたものである、復号すること、および、第１の処理ノード中で変換管理命令を復号するのに応答して、複数の処理ノードのうちの第２の処理ノード中のアドレス変換データ構造に対して無効化操作を開始して、第１の処理ノード中のアドレス変換データ構造中の対応するエントリを無効化することなく第２の処理ノード中のアドレス変換データ構造中のエントリを無効化することによって行われる。
【００１６】
本発明を特徴付けるこれらおよび他の利点および特徴は、本明細書に添付され本明細書のさらに他の部分を形成する特許請求の範囲に示す。しかし、本発明、ならびにその使用によって達成される利点および目的をよりよく理解するために、図面と、本発明の例示的な実施形態が記述された付随する記述物とを参照されたい。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施形態によるデータ処理において有用な例示的なコンピュータを含む例示的な自動化されたコンピューティング機構のブロック図である。
【図２】図１のコンピュータ中で実現される例示的なＮＯＣのブロック図である。
【図３】図２のＮＯＣからのノードの例示的な一実装形態をより詳細に示すブロック図である。
【図４】図２のＮＯＣからのＩＰブロックの例示的な一実装形態を示すブロック図である。
【図５】本発明による変換管理命令を実装するのに適したマルチノード・データ処理システムの例示的な一実装形態を示すブロック図である。
【図６】図５の実装形態に対する、マルチノード・データ処理システムの代替の一実装形態を示すブロック図である。
【図７】図５と６のいずれかのデータ処理システム中の処理ノード中でＥＲＡＴ探索およびプッシュ命令を実行するときに実施される例示的な動作シーケンスを示すフローチャートである。
【図８】図５と６のいずれかのデータ処理システム中の処理ノード中でＥＲＡＴ書込みおよびプッシュ命令を実行するときに実施される例示的な動作シーケンスを示すフローチャートである。
【図９】図５と６のいずれかのデータ処理システム中の処理ノード中でＥＲＡＴリモート無効化命令を実行するときに実施される例示的な動作シーケンスを示すフローチャートである。
【図１０】図５と６のいずれかのデータ処理システム中の処理ノード中でＴＬＢ探索およびプッシュ命令を実行するときに実施される例示的な動作シーケンスを示すフローチャートである。
【図１１】図５と６のいずれかのデータ処理システム中の処理ノード中でＴＬＢ書込みおよびプッシュ命令を実行するときに実施される例示的な動作シーケンスを示すフローチャートである。
【図１２】図５と６のいずれかのデータ処理システム中の処理ノード中でＴＬＢリモート無効化命令を実行するときに実施される例示的な動作シーケンスを示すフローチャートである。
【図１３】図５と６のいずれかのデータ処理システム中の処理ノード中で変換付きコプロセッサ開始命令を実行するときに実施される例示的な動作シーケンスを示すフローチャートである。
【発明を実施するための形態】
【００１８】
マルチノード・データ処理システム中で変換管理命令を提供して、システム全体に分散したアドレス変換データ構造のリモート管理を容易にする。
【００１９】
例えば、あるタイプの変換管理命令は、ローカルおよびリモートの処理ノード中にそれぞれ配置されたアドレス変換データ構造に対してローカルとリモートの両方の操作を実施するのに使用することができる。探索およびプッシュ命令を使用して、ローカル・アドレス変換データ構造を探索し、探索基準に合致するエントリの索引または他の識別子を返すことができ、また、追加で、このエントリをリモート・ノードのアドレス変換データ構造中で記憶できるかまたは他の方法で生成できるように、合致するエントリに関連するデータをこのリモート・ノードにプッシュすることもできる。書込みおよびプッシュ命令を使用して、ローカル・アドレス変換データ構造中のエントリにデータを書き込むことができ、また、追加で、リモート・ノードのアドレス変換データ構造中の対応するエントリを同様に更新できるように、書き込まれたデータをこのリモート・ノードにプッシュすることもできる。
【００２０】
別のタイプの変換管理命令は、リモート・ノードのアドレス変換データ構造中のエントリのリモート無効化を、ただしローカル・アドレス変換データ構造中のエントリに対する対応する無効化は伴わずに、開始するのに使用することができる。
【００２１】
これに関して、ローカルおよびリモートの処理ノードは、共通のコヒーレンス領域に配置されて共有バスなどの共有ネットワークを介して相互に結合された、任意の処理ロジックを含んでよい。処理ノードの例は、共有メモリへのアクセス時にアドレス変換データを利用する、汎用処理コア、コプロセッサ、アクセラレータ、および他の処理ロジックを含む。
【００２２】
他の変形および変更も当業者には明らかであろう。したがって、本発明は、本明細書に論じる特定の実装形態に限定されない。
【００２３】
ハードウェアおよびソフトウェア環境
次に図面に目を向けるが、いくつかの図を通して、同じ番号は同じ部分を示す。図１に、本発明の実施形態によるデータ処理において有用な例示的なコンピュータ１０を含む例示的な自動化されたコンピューティング機構を示す。図１のコンピュータ１０は、少なくとも１つのコンピュータ・プロセッサ１２または「ＣＰＵ」、ならびにランダム・アクセス・メモリ１４（ＲＡＭ）を備え、ＲＡＭ１４は、高速メモリ・バス１６およびバス・アダプタ１８を介して、プロセッサ１２に、かつコンピュータ１０の他のコンポーネントに接続される。
【００２４】
ＲＡＭ１４には、特定のデータ処理タスクを実施するためのユーザレベル・コンピュータ・プログラム命令のモジュールである、アプリケーション・プログラム２０が記憶される。これらの特定のデータ処理タスクは、例えば、文書処理、表計算、データベース操作、ビデオ・ゲーミング、株式市場シミュレーション、原子量子プロセス・シミュレーション、または他のユーザレベル応用例などである。ＲＡＭ１４にはまた、オペレーティング・システム２２も記憶される。本発明の実施形態に関して有用なオペレーティング・システムは、ＵＮＩＸ（ＴＭ）、Ｌｉｎｕｘ（ＴＭ）、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  ＸＰ（ＴＭ）、ＡＩＸ（ＴＭ）、ＩＢＭのｉ５／ＯＳ（ＴＭ）および、当業者が思い付くであろう他のオペレーティング・システムを含む。図１の例におけるオペレーティング・システム２２およびアプリケーション２０はＲＡＭ１４中に示されているが、このようなソフトウェアの多くのコンポーネントは通常、不揮発性メモリ、例えばディスク・ドライブ２４にも記憶される。
【００２５】
以下でより明らかになるであろうが、本発明による実施形態は、ネットワーク・オン・チップ（ＮＯＣ）集積回路デバイスまたはチップ内で実現することができ、したがって、コンピュータ１０は、２つの例示的なＮＯＣ、すなわちビデオ・アダプタ２６およびコプロセッサ２８を備えるように示される。ＮＯＣビデオ・アダプタ２６は、別法としてグラフィックス・アダプタと呼ばれることもあるが、これは、表示画面やコンピュータ・モニタなどの表示デバイス３０へのグラフィック出力のために特に設計されたＩ／Ｏアダプタの例である。ＮＯＣビデオ・アダプタ２６は、高速ビデオ・バス３２、バス・アダプタ１８、およびフロント・サイド・バス３４（これも高速バスである）を介してプロセッサ１２に接続される。ＮＯＣコプロセッサ２８は、バス・アダプタ１８ならびにフロント・サイド・バス３４および３６（これも高速バスである）を介してプロセッサ１２に接続される。図１のＮＯＣコプロセッサを最適化して、例えば、メイン・プロセッサ１２の命を受けて特定のデータ処理タスクを加速化することができる。
【００２６】
図１の例示的なＮＯＣビデオ・アダプタ２６およびＮＯＣコプロセッサ２８はそれぞれＮＯＣを備え、ＮＯＣは、統合プロセッサ（ＩＰ）ブロック、ルータ、メモリ通信コントローラ、およびネットワーク・インタフェース・コントローラを備える。これらの詳細については、後で図２〜３に関してより詳細に論じる。ＮＯＣビデオ・アダプタおよびＮＯＣコプロセッサはそれぞれ、並列処理を使用し共有メモリへの高速ランダム・アクセスも必要とするプログラムに向けて、最適化される。しかし、本発明をＮＯＣデバイスおよびデバイス・アーキテクチャ以外のデバイスおよびデバイス・アーキテクチャ中で実現することもできることは、本開示の利益を得る当業者には理解されるであろう。したがって、本発明は、ＮＯＣデバイス内での実現に限定されない。
【００２７】
図１のコンピュータ１０はディスク・ドライブ・アダプタ３８を備え、ディスク・ドライブ・アダプタ３８は、拡張バス４０およびバス・アダプタ１８を介して、プロセッサ１２に、かつコンピュータ１０の他のコンポーネントに結合される。ディスク・ドライブ・アダプタ３８は、ディスク・ドライブ２４の形の不揮発性データ記憶装置をコンピュータ１０に接続し、また、例えばＩＤＥ（Integrated Drive Electronics）アダプタ、ＳＣＳＩ（SmallComputer System Interface）アダプタ、および当業者が思い付くであろう他のアダプタを使用して実現されてよい。不揮発性コンピュータ・メモリはまた、当業者が思い付くであろうように、光学ディスク・ドライブ、電気的に消去可能プログラム可能な読取専用メモリ（いわゆる「ＥＥＰＲＯＭ」または「フラッシュ」メモリ）、ＲＡＭドライブなどとして実現されてもよい。
【００２８】
コンピュータ１０はまた、１つまたは複数の入出力（Ｉ／Ｏ）アダプタ４２を備え、Ｉ／Ｏアダプタ４２は、コンピュータ表示画面などの表示デバイスへの出力、ならびにキーボードやマウスなどのユーザ入力デバイス４４からのユーザ入力を制御するためのソフトウェア・ドライバおよびコンピュータ・ハードウェアを例えば介して、ユーザ指向の入出力を実現する。加えて、コンピュータ１０は、他のコンピュータ４８とのデータ通信のため、およびデータ通信ネットワーク５０とのデータ通信のための、通信アダプタ４６を備える。このようなデータ通信は、ＲＳ−２３２接続を介して直列に、ユニバーサル・シリアル・バス（ＵＳＢ）などの外部バスを介して、ＩＰデータ通信ネットワークなどのデータ通信ネットワークを介して、および当業者が思い付くであろう他の方法で、実施することができる。通信アダプタは、あるコンピュータが別のコンピュータにデータ通信を直接にまたはデータ通信ネットワークを介して送る際に経由する、データ通信のハードウェア・レベルを実現する。コンピュータ１０中で使用するのに適した通信アダプタの例は、有線ダイヤルアップ通信用のモデム、有線データ通信ネットワーク通信用のイーサネット（Ｒ）（ＩＥＥＥ８０２．３）アダプタ、および、ワイヤレス・データ通信ネットワーク通信用の８０２．１１アダプタを含む。
【００２９】
さらに説明するために、図２に、本発明の実施形態による例示的なＮＯＣ１０２の機能ブロック図を示す。図２のＮＯＣは、「チップ」１００上すなわち集積回路上で実現される。ＮＯＣ１０２は、相互接続されたノードにグループ化された、統合プロセッサ（ＩＰ）ブロック１０４、ルータ１１０、メモリ通信コントローラ１０６、およびネットワーク・インタフェース・コントローラ１０８を備える。各ＩＰブロック１０４は、メモリ通信コントローラ１０６およびネットワーク・インタフェース・コントローラ１０８を介してルータ１１０に適合される。各メモリ通信コントローラは、ＩＰブロックとメモリとの間の通信を制御し、各ネットワーク・インタフェース・コントローラ１０８は、ルータ１１０を介したＩＰブロック間通信を制御する。
【００３０】
ＮＯＣ１０２中で、各ＩＰブロックは、ＮＯＣ内におけるデータ処理のための基本単位として使用される、同期または非同期ロジック設計の再使用可能なユニットを表す。用語「ＩＰブロック」は、「知的所有権ブロック」として展開されることもあり、これは、半導体回路の他のユーザまたは設計者にライセンス供与されることになる、当事者によって所有される設計すなわち当事者の知的所有権として、ＩＰブロックを実際上指定する。しかし、本発明の範囲では、ＩＰブロックがどんな特定の所有権を受けるという要件もなく、したがってこの用語は、本明細書では常に「統合プロセッサ・ブロック」として展開される。ここで指定されるＩＰブロックは、知的所有権の対象である場合とそうでない場合のある、ロジック、セル、またはチップ・レイアウト設計の再使用可能なユニットである。ＩＰブロックは、ＡＳＩＣチップ設計またはＦＰＧＡロジック設計として形成できるロジック・コアである。
【００３１】
ＩＰブロックを類比によって述べる方法の１つは、ＮＯＣ設計にとってのＩＰブロックとは、コンピュータ・プログラミングにとってのライブラリ、またはプリント回路板設計にとってのディスクリート集積回路コンポーネントと同じものだということである。本発明の実施形態によるＮＯＣ中では、ＩＰブロックは、包括的なゲート・ネットリストとして、または完全な専用もしくは汎用マイクロプロセッサとして、または当業者が思い付くであろう他の方法で、実現されてよい。ネットリストは、高レベルのプログラム応用例のためのアセンブリコード・リストに似た、ＩＰブロックの論理機能のブール代数表現（ゲート、標準セル）である。ＮＯＣはまた、例えば、ＶｅｒｉｌｏｇやＶＨＤＬなどのハードウェア記述言語で記述された合成可能な形で実現されてもよい。ネットリストおよび合成可能な実現に加えて、ＮＯＣはまた、より低いレベルの物理的記述で送達されてもよい。ＳＥＲＤＥＳ、ＰＬＬ、ＤＡＣ、ＡＤＣなど、アナログＩＰブロック要素が、ＧＤＳＩＩなどのトランジスタ・レイアウト・フォーマットで配布される場合がある。ＩＰブロックのディジタル要素もまた、レイアウト・フォーマットで提供されることがある。ＩＰブロック、ならびに本発明により実現される他のロジック回路は、このようなロジックを実現する回路構成の機能またはレイアウトあるいはその両方を様々な詳細レベルで定義するコンピュータ・データ・ファイル（例えばロジック定義プログラム・コード）の形で配布される場合があることもまた理解されるであろう。したがって、完全に機能する集積回路デバイス、およびそのようなデバイスを利用するデータ処理システム、および他の有形の物理ハードウェア回路中で実現される、回路構成のコンテキストで、本発明について以上および以下では述べているが、本発明がプログラム製品内で実現されてもよいこと、および、プログラム製品の配布に使用されるコンピュータ可読記憶媒体の特定のタイプにかかわらず等しく本発明が適用されることは、本開示の利益を得る当業者なら理解するであろう。コンピュータ可読記憶媒体の例は、揮発性および不揮発性メモリ・デバイス、フロッピー（Ｒ）・ディスク、ハード・ディスク・ドライブ、ＣＤ−ＲＯＭ、およびＤＶＤなど（とりわけ）、物理的な記録可能タイプの媒体を含むが、これらに限定されない。
【００３２】
図２の例における各ＩＰブロック１０４は、メモリ通信コントローラ１０６を介してルータ１１０に適合される。各メモリ通信コントローラは、ＩＰブロックとメモリとの間のデータ通信を提供するように適合された同期および非同期ロジック回路の集約である。ＩＰブロックとメモリとの間のこのような通信の例は、メモリ・ロード命令およびメモリ記憶命令を含む。メモリ通信コントローラ１０６については、後で図３に関してより詳細に述べる。各ＩＰブロック１０４はまた、ネットワーク・インタフェース・コントローラ１０８を介してルータ１１０に適合され、ネットワーク・インタフェース・コントローラ１０８は、ルータ１１０を介したＩＰブロック１０４間の通信を制御する。ＩＰブロック間の通信の例は、並列応用例およびパイプライン化応用例において、データとデータを処理するための命令とをＩＰブロック間で搬送するメッセージを含む。ネットワーク・インタフェース・コントローラ１０８についても、後で図３に関してより詳細に述べる。
【００３３】
ルータ１１０、およびそれらの間の対応するリンク１１８は、ＮＯＣのネットワーク動作を実現する。リンク１１８は、全てのルータを接続する物理的な並列ワイヤ・バス上で実現されるパケット構造とすることができる。すなわち、各リンクは、全てのヘッダ情報およびペイロード・データを含めたデータ交換パケット全体を同時に収容するのに十分な幅のワイヤ・バス上で実現されてよい。例えば、パケット構造が、８バイトのヘッダと５６バイトのペイロード・データとを含めた６４バイトを含む場合は、各リンクをなすワイヤ・バスは、６４バイト幅、５１２本のワイヤである。加えて、各リンクは双方向であってよく、したがって、リンク・パケット構造が６４バイトを含む場合、ワイヤ・バスは実際には、各ルータとネットワーク中のその近傍の各々との間で１０２４本のワイヤを含む。このような実装形態では、メッセージは複数のパケットを含む可能性があるが、各パケットは、ワイヤ・バスの幅に正確に収まることになる。別法では、リンクは、パケットの一部のみを収容するのに足りる幅のワイヤ・バス上で実現されてよく、したがって、パケットは複数のビートに分解されることになる。例えば、したがって、リンクが１６バイト幅または１２８本のワイヤとして実現される場合、６４バイトのパケットが４つのビートに分解されてよい。実際上の物理的制限ならびに望まれる性能特性に応じて、異なる実装形態で異なるバス幅を使用できることは理解されるであろう。ルータとワイヤ・バスの各セクションとの間の接続がポートと呼ばれるならば、各ルータは５つのポートを備える。ネットワーク上のデータ伝送の４方向のそれぞれに１つのポートがあり、第５のポートは、メモリ通信コントローラおよびネットワーク・インタフェース・コントローラを介してルータを特定のＩＰブロックに適合するためのものである。
【００３４】
各メモリ通信コントローラ１０６は、ＩＰブロックとメモリとの間の通信を制御する。メモリは、オフチップ・メインＲＡＭ１１２と、メモリ通信コントローラ１０６を介してＩＰブロックに直接に接続されるメモリ１１４と、ＩＰブロックとしてイネーブルにされるオンチップ・メモリ１１６と、オンチップ・キャッシュとを含んでよい。ＮＯＣ１０２中では、例えばオンチップ・メモリ１１４と１１６のいずれかが、オンチップ・キャッシュ・メモリとして実現されてよい。これらの形のメモリは全て、同じアドレス空間（物理アドレスまたは仮想アドレス）に配置されてよく、このことは、ＩＰブロックに直接に取り付けられたメモリにも当てはまる。したがって、メモリ・アドレス指定メッセージは、ＩＰブロックに関して完全に双方向とすることができる。というのは、このようなメモリへは、ネットワーク上のどんな場所にあるどんなＩＰブロックからも直接にアドレス指定できるからである。ＩＰブロック上のメモリ１１６へは、このＩＰブロックから、またはＮＯＣ中の他のどんなＩＰブロックからも、アドレス指定することができる。メモリ通信コントローラに直接に取り付けられたメモリ１１４へは、このメモリ通信コントローラによってネットワークに適合されたＩＰブロックによってアドレス指定することができ、また、ＮＯＣ中のどんな場所にある他のどんなＩＰブロックからもアドレス指定することができる。
【００３５】
ＮＯＣ１０２は、２つのメモリ管理ユニット（ＭＭＵ）１２０、１２２を備え、これらは、本発明の実施形態によるＮＯＣについての２つの代替メモリ・アーキテクチャを例示する。ＭＭＵ１２０は、ＩＰブロック内で実現され、ＩＰブロック内のプロセッサが仮想メモリ中で動作できるようにするとともに、ＮＯＣの残りのアーキテクチャ全体が物理メモリ・アドレス空間で動作できるようにする。ＭＭＵ１２２は、オフチップで実現され、データ通信ポート１２４を介してＮＯＣに接続される。ポート１２４は、ＮＯＣとＭＭＵとの間で信号を伝導するのに必要とされるピンおよび他の相互接続を備え、かつ、メッセージ・パケットをＮＯＣパケット・フォーマットから外部ＭＭＵ１２２によって必要とされるバス・フォーマットに変換するための十分なインテリジェンスを備える。ＭＭＵが外部に位置することは、ＮＯＣの全てのＩＰブロック中の全てのプロセッサが仮想メモリ・アドレス空間で動作でき、オフチップ・メモリの物理アドレスへの全ての変換がオフチップＭＭＵ１２２によって扱われることを意味する。
【００３６】
ＭＭＵ１２０、１２２を使用して例示される２つのメモリ・アーキテクチャに加えて、データ通信ポート１２６が、本発明の実施形態で利用できるＮＯＣ中で有用な第３のメモリ・アーキテクチャを例示する。ポート１２６は、ＮＯＣ１０２のＩＰブロック１０４とオフチップ・メモリ１１２との間の直接接続を提供する。ＭＭＵが処理パス中にないことにより、このアーキテクチャは、ＮＯＣの全てのＩＰブロックによって物理アドレス空間が利用されることをもたらす。アドレス空間を双方向に共有する際、ＮＯＣの全てのＩＰブロックは、ポート１２６に直接に接続されたＩＰブロックを介して送られる、ロードおよび記憶を含めたメモリ・アドレス指定メッセージによって、アドレス空間中のメモリにアクセスすることができる。ポート１２６は、ＮＯＣとオフチップ・メモリ１１２との間で信号を伝導するのに必要とされるピンおよび他の相互接続を備え、かつ、メッセージ・パケットをＮＯＣパケット・フォーマットからオフチップ・メモリ１１２によって必要とされるバス・フォーマットに変換するための十分なインテリジェンスを備える。
【００３７】
図２の例では、ＩＰブロックのうちの１つが、ホスト・インタフェース・プロセッサ１２８として指定される。ホスト・インタフェース・プロセッサ１２８は、ＮＯＣとＮＯＣがインストールされ得るホスト・コンピュータ１０との間のインタフェースを提供し、また、ＮＯＣ上の他のＩＰブロックにデータ処理サービス（例えば、ホスト・コンピュータからのデータ処理要求をＮＯＣのＩＰブロック間で受領およびディスパッチすることを含む）を提供する。ＮＯＣは、例えば、図１に関して上述したように、より大きいコンピュータ１０上のビデオ・グラフィックス・アダプタ２６またはコプロセッサ２８を実現することができる。図２の例では、ホスト・インタフェース・プロセッサ１２８は、データ通信ポート１３０を介して、より大きいホスト・コンピュータに接続される。ポート１３０は、ＮＯＣとホスト・コンピュータとの間で信号を伝導するのに必要とされるピンおよび他の相互接続を備え、かつ、メッセージ・パケットをＮＯＣからホスト・コンピュータ１０によって必要とされるバス・フォーマットに変換するための十分なインテリジェンスを備える。図１のコンピュータ中のＮＯＣコプロセッサの例では、このようなポートは、ＮＯＣコプロセッサ２８のリンク構造と、フロント・サイド・バス３６（ＮＯＣコプロセッサ２８とバス・アダプタ１８との間の）に必要とされるプロトコルとの間で、データ通信フォーマット変換を提供することになる。
【００３８】
次に、図３に、１３２においてまとめて示される、ＮＯＣ１０２中のＩＰブロック１０４、メモリ通信コントローラ１０６、ネットワーク・インタフェース・コントローラ１０８、およびルータ１１０内で実現されるコンポーネントをより詳細に示す機能ブロック図を示す。ＩＰブロック１０４は、コンピュータ・プロセッサ１３４およびＩ／Ｏ機能１３６を備える。この例では、ＩＰブロック１０４中のランダム・アクセス・メモリ（ＲＡＭ）１３８のセグメントによって、コンピュータ・メモリが表される。メモリは、図２に関して上述したように、各ＩＰブロック上におけるその内容がＮＯＣ中の任意のＩＰブロックからアドレス指定可能かつアクセス可能な、物理アドレス空間のセグメントを占めることができる。各ＩＰブロック中のプロセッサ１３４、Ｉ／Ｏ能力１３６、およびメモリ１３８は実際上、ＩＰブロックを、一般にプログラム可能なマイクロコンピュータとして実現する。しかし、上に説明したように、本発明の範囲では、ＩＰブロックは一般に、ＮＯＣ内におけるデータ処理のための基本単位として使用される、同期または非同期ロジックの再使用可能なユニットを表す。したがって、一般にプログラム可能なマイクロコンピュータとしてＩＰブロックを実現することは、説明の目的で有用な一般的実施形態ではあるが、本発明の限定ではない。
【００３９】
図３のＮＯＣ１０２中では、各メモリ通信コントローラ１０６は、複数のメモリ通信実行エンジン１４０を備える。各メモリ通信実行エンジン１４０は、ネットワークとＩＰブロック１０４との間の双方向メモリ通信命令フロー１４１、１４２、１４４を含めた、ＩＰブロック１０４からのメモリ通信命令を実行することが可能とされる。メモリ通信コントローラによって実行されるメモリ通信命令は、特定のメモリ通信コントローラを介してルータに適合されたＩＰブロックからだけでなく、ＮＯＣ１０２中のどんな場所にあるどんなＩＰブロック１０４からも発信される場合がある。すなわち、ＮＯＣ中の任意のＩＰブロックが、メモリ通信命令を生成し、このメモリ通信命令の実行に向けて、ＮＯＣのルータを介して、別のＩＰブロックに関連する別のメモリ通信コントローラにこのメモリ通信命令を送信することができる。このようなメモリ通信命令は、例えば、トランスレーション・ルックアサイド・バッファ制御命令、キャッシュ制御命令、バリア命令、ならびにメモリ・ロードおよび記憶命令を含み得る。
【００４０】
各メモリ通信実行エンジン１４０は、他のメモリ通信実行エンジンと別々に、かつ並行して、完全なメモリ通信命令を実行することが可能とされる。メモリ通信実行エンジンは、メモリ通信命令の同時スループットに最適化された、スケーラブルなメモリ・トランザクション・プロセッサを実現する。メモリ通信コントローラ１０６は、複数のメモリ通信実行エンジン１４０をサポートし、これらのメモリ通信実行エンジン１４０は全て、複数のメモリ通信命令の同時実行のために同時に稼働する。新しいメモリ通信命令が、メモリ通信コントローラ１０６によってメモリ通信実行エンジン１４０に割り振られ、メモリ通信実行エンジン１４０は、複数の応答イベントを同時に受諾することができる。この例では、全てのメモリ通信実行エンジン１４０は同一である。したがって、メモリ通信コントローラ１０６によって同時に扱えるメモリ通信命令の数を増減させることは、メモリ通信実行エンジン１４０の数を増減させることによって実現される。
【００４１】
図３のＮＯＣ１０２中では、各ネットワーク・インタフェース・コントローラ１０８は、通信命令を、コマンド・フォーマットから、ルータ１１０を介したＩＰブロック１０４間での伝送のためのネットワーク・パケット・フォーマットに変換することが可能にされる。通信命令は、ＩＰブロック１０４またはメモリ通信コントローラ１０６によってコマンド・フォーマットで構築されて、コマンド・フォーマットでネットワーク・インタフェース・コントローラ１０８に提供されるものとすることができる。コマンド・フォーマットは、ＩＰブロック１０４およびメモリ通信コントローラ１０６のアーキテクチャ上のレジスタ・ファイルに準拠したネイティブ・フォーマットとすることができる。ネットワーク・パケット・フォーマットは通常、ネットワークのルータ１１０を介した伝送に必要とされるフォーマットである。このような各メッセージは、１つまたは複数のネットワーク・パケットからなる。ネットワーク・インタフェース・コントローラ中でコマンド・フォーマットからパケット・フォーマットに変換されるこのような通信命令の例は、ＩＰブロックとメモリとの間のメモリ・ロード命令およびメモリ記憶命令を含む。このような通信命令はまた、並列応用例およびパイプライン化応用例において、データとデータを処理するための命令とをＩＰブロック間で搬送するメッセージを、ＩＰブロック間で送る通信命令を含む場合もある。
【００４２】
図３のＮＯＣ１０２中では、各ＩＰブロックは、ＩＰブロックのメモリ通信コントローラを介して、次いでまたネットワークへのそのネットワーク・インタフェース・コントローラを介して、メモリとの間でメモリアドレスベースの通信を送ることが可能にされる。メモリアドレスベースの通信は、ＩＰブロックのメモリ通信コントローラのメモリ通信実行エンジンによって実行される、ロード命令や記憶命令などのメモリ・アクセス命令である。このようなメモリアドレスベースの通信は通常、ＩＰブロック中で発信され、コマンド・フォーマットで構築され、実行に向けてメモリ通信コントローラに渡される。
【００４３】
多くのメモリアドレスベースの通信は、メッセージ・トラフィックを用いて実行される。というのは、アクセスされることになるどんなメモリも、ＮＯＣ中のいずれかのメモリ通信コントローラに直接に取り付けられたかまたはＮＯＣのいずれかのＩＰブロックを介して最終的にアクセスされる物理メモリ・アドレス空間（オンチップまたはオフチップ）の、どこかに位置する可能性があるからであり、これは、どのＩＰブロックがどんな特定のメモリアドレスベースの通信を発信したかにかかわらずそうである。したがって、ＮＯＣ１０２中では、メッセージ・トラフィックを用いて実行される全てのメモリアドレスベースの通信は、コマンド・フォーマットからパケット・フォーマットに変換されてネットワークを介してメッセージ中で送信されるように、メモリ通信コントローラから関連するネットワーク・インタフェース・コントローラに渡される。パケット・フォーマットへの変換の際、ネットワーク・インタフェース・コントローラはまた、メモリアドレスベースの通信によってアクセスされることになる１つまたは複数のメモリ・アドレスに依存して、パケットのネットワーク・アドレスを識別する。メモリアドレスベースのメッセージは、メモリ・アドレスを用いてアドレス指定される。各メモリ・アドレスは、ネットワーク・インタフェース・コントローラによって、ネットワーク・アドレス（通常はいくらかの範囲の物理メモリ・アドレスを担うメモリ通信コントローラのネットワーク位置）にマッピングされる。メモリ通信コントローラ１０６のネットワーク位置はまた、当然ながら、このメモリ通信コントローラに関連するルータ１１０、ネットワーク・インタフェース・コントローラ１０８、およびＩＰブロック１０４のネットワーク位置でもある。各ネットワーク・インタフェース・コントローラ内の命令変換ロジック１５０は、ＮＯＣのルータを介してメモリアドレスベースの通信を送信するために、メモリ・アドレスをネットワーク・アドレスに変換することができる。
【００４４】
各ネットワーク・インタフェース・コントローラ１０８は、ネットワークのルータ１１０からメッセージ・トラフィックを受け取ると、メモリ命令があるかどうか各パケットを調べる。メモリ命令を含む各パケットは、受信側ネットワーク・インタフェース・コントローラに関連するメモリ通信コントローラ１０６に渡され、メモリ通信コントローラ１０６は、メモリ命令を実行した後で、パケットの残りのペイロードを、さらに処理されるようにＩＰブロックに送る。このようにすれば、メモリ内容は常に、特定のメモリ内容に依存するメッセージからの命令の実行をＩＰブロックが開始する前に、ＩＰブロックによるデータ処理をサポートする準備ができている。
【００４５】
図３のＮＯＣ１０２中では、各ＩＰブロック１０４は、そのメモリ通信コントローラ１０６を迂回して、ＩＰブロック間のネットワーク・アドレス指定通信１４６を、ＩＰブロックのネットワーク・インタフェース・コントローラ１０８を介してネットワークに直接送ることが可能にされる。ネットワーク・アドレス指定通信は、ネットワーク・アドレスによって別のＩＰブロックに向けて送られるメッセージである。このようなメッセージは、当業者なら思い付くであろうように、パイプライン化応用例における作業データや、ＳＩＭＤ応用例におけるＩＰブロック間の単一プログラム処理のための複数データなどを送信する。このようなメッセージは、メッセージがＮＯＣのルータを介して向けられる先であるネットワーク・アドレスを知っている発信側ＩＰブロックによって最初からネットワーク・アドレス指定されるという点で、メモリアドレスベースの通信とは異なる。このようなネットワーク・アドレス指定通信は、ＩＰブロックによって、Ｉ／Ｏ機能１３６を介してＩＰブロックのネットワーク・インタフェース・コントローラにコマンド・フォーマットで直接渡され、次いで、ネットワーク・インタフェース・コントローラによってパケット・フォーマットに変換され、ＮＯＣのルータを介して別のＩＰブロックに送信される。このようなネットワーク・アドレス指定通信１４６は、双方向であり、いずれかの特定の応用例におけるそれらの使用に応じて、ＮＯＣの各ＩＰブロックに、または各ＩＰブロックから進行する可能性がある。しかし、各ネットワーク・インタフェース・コントローラは、関連するルータとの間でこのような通信を送信することと受信することの両方が可能にされ、各ネットワーク・インタフェース・コントローラは、関連するメモリ通信コントローラ１０６を迂回して、関連するＩＰブロックとの間で直接にこのような通信を送信することと受信することの両方が可能にされる。
【００４６】
図３の例における各ネットワーク・インタフェース・コントローラ１０８はまた、ネットワーク上で仮想チャネルを実装して、ネットワーク・パケットをタイプによって特徴付けることが可能にされる。各ネットワーク・インタフェース・コントローラ１０８は仮想チャネル実装ロジック１４８を備え、仮想チャネル実装ロジック１４８は、各通信命令をタイプによって分類し、命令のタイプをネットワーク・パケット・フォーマットのフィールドに記録した後で、パケット形式の命令を、ＮＯＣ上で送信されるようにルータ１１０に渡す。通信命令タイプの例は、ＩＰブロック間のネットワークアドレスベースのメッセージ、要求メッセージ、要求メッセージに対する応答、キャッシュに向けられた無効化メッセージ、メモリ・ロードおよび記憶メッセージ、ならびに、メモリ・ロード・メッセージへの応答などを含む。
【００４７】
図３の例における各ルータ１１０は、ルーティング・ロジック１５２、仮想チャネル制御ロジック１５４、および仮想チャネル・バッファ１５６を備える。ルーティング・ロジックは通常、ルータ１１０とリンク１１８とルータ間のバス・ワイヤとによって形成されたネットワーク中でのデータ通信のためのデータ通信プロトコル・スタックを実装する同期および非同期ロジックのネットワークとして実現される。ルーティング・ロジック１５２は、当技術分野の読者ならオフチップ・ネットワーク中でルーティング・テーブルに関連付けるであろう機能を含むが、少なくともいくつかの実施形態におけるルーティング・テーブルは、ＮＯＣ中で使用するには遅すぎて煩雑すぎると考えられる。同期および非同期ロジックのネットワークとして実装されるルーティング・ロジックは、単一クロック・サイクルの速さでルーティング決定を行うように構成されてよい。この例におけるルーティング・ロジックは、ルータ中で受け取られた各パケットを転送するためのポートを選択することによって、パケットをルーティングする。各パケットは、パケットのルーティング先となるネットワーク・アドレスを含む。
【００４８】
メモリアドレスベースの通信に関する上の記述において、各メモリ・アドレスは、ネットワーク・インタフェース・コントローラによって、ネットワーク・アドレスに、すなわちメモリ通信コントローラのネットワーク位置にマッピングされるものとして述べた。メモリ通信コントローラ１０６のネットワーク位置はまた、当然ながら、このメモリ通信コントローラに関連するルータ１１０、ネットワーク・インタフェース・コントローラ１０８、およびＩＰブロック１０４のネットワーク位置でもある。したがって、ＩＰブロック間またはネットワークアドレスベースの通信でも通常、アプリケーションレベルのデータ処理は、ネットワーク・アドレスを、ＮＯＣのルータとリンクとバス・ワイヤとによって形成されるネットワーク内におけるＩＰブロックの位置と見なす。図２は、このようなネットワークの編成の１つが行と列のメッシュである場合を示すが、このメッシュ中では、例えば、各ネットワーク・アドレスを、メッシュの関連するルータとＩＰブロックとメモリ通信コントローラとネットワーク・インタフェース・コントローラとの各セットごとの一意の識別子として、または、メッシュ中のこのような各セットのＸＹ座標として、実現することができる。
【００４９】
図３のＮＯＣ１０２中では、各ルータ１１０は２つ以上の仮想通信チャネルを実装し、各仮想通信チャネルは通信タイプによって特徴付けられる。通信命令タイプ、したがって仮想チャネル・タイプは、上述したものを含む。すなわち、ＩＰブロック間のネットワークアドレスベースのメッセージ、要求メッセージ、要求メッセージに対する応答、キャッシュに向けられた無効化メッセージ、メモリ・ロードおよび記憶メッセージ、ならびに、メモリ・ロード・メッセージへの応答などを含む。仮想チャネルに対するサポートとして、図３の例における各ルータ１１０はまた、仮想チャネル制御ロジック１５４および仮想チャネル・バッファ１５６を備える。仮想チャネル制御ロジック１５４は、各受信パケットを、それに割り振られた通信タイプについて調べ、各パケットを、ポートを介してＮＯＣ上の近隣ルータに送信されるように、その通信タイプ用の送出仮想チャネル・バッファ中に配置する。
【００５０】
各仮想チャネル・バッファ１５６は、有限の記憶空間を有する。短期間に多くのパケットが受信されたときは、仮想チャネル・バッファが一杯になって、それ以上のパケットをバッファに入れることができない可能性がある。他のプロトコルでは、バッファが一杯である仮想チャネル上で到着したパケットは、ドロップされることになる。しかし、この例における各仮想チャネル・バッファ１５６は、バス・ワイヤの制御信号により、仮想チャネル中の送信をサスペンドするよう（すなわち特定の通信タイプのパケットの送信をサスペンドするよう）に仮想チャネル制御ロジックを介して周囲のルータに勧めることが可能にされる。１つの仮想チャネルがこのようにサスペンドされたとき、他の全ての仮想チャネルは影響を受けず、全能力で動作し続けることができる。制御信号は、各ルータを介して、各ルータに関連するネットワーク・インタフェース・コントローラ１０８に遡って電送される。各ネットワーク・インタフェース・コントローラは、このような信号を受け取ると、それに関連するメモリ通信コントローラ１０６からまたはそれに関連するＩＰブロック１０４から、サスペンドされた仮想チャネルについての通信命令を受け入れることを拒否するように構成される。このようにして、仮想チャネルのサスペンドは、発信側ＩＰブロックまで遡って、仮想チャネルを実装する全てのハードウェアに影響を及ぼす。
【００５１】
仮想チャネル中のパケット送信をサスペンドすることの効果の１つは、どのパケットも決してドロップされないことである。ルータが、何らかの信頼できないプロトコル、例えばインターネット・プロトコルなどにおいてパケットがドロップされるおそれのある状況に遭遇したとき、図３の例におけるルータは、それらの仮想チャネル・バッファ１５６およびそれらの仮想チャネル制御ロジック１５４によって、バッファ空間が再び利用可能になるまで仮想チャネル中のパケットの全ての送信をサスペンドすることができ、パケットをドロップする必要をなくす。したがって、図３のＮＯＣは、極めて薄いハードウェア・レイヤを用いて、より信頼性の高いネットワーク通信プロトコルを実装することができる。
【００５２】
図３の例示的なＮＯＣはまた、オンチップとオフチップの両方のメモリ・キャッシュ間のキャッシュ・コヒーレンシを維持するように構成されてよい。各ＮＯＣは複数のキャッシュをサポートすることができ、各キャッシュは、基礎をなす同じメモリ・アドレス空間に対して動作する。例えば、キャッシュは、ＩＰブロックによって、メモリ通信コントローラによって、またはＮＯＣ外部のキャッシュ・コントローラによって、制御されてよい。図２の例におけるオンチップ・メモリ１１４と１１６のいずれかはオンチップ・キャッシュとして実現されてもよく、本発明の範囲内で、キャッシュ・メモリはオフチップで実現されてもよい。
【００５３】
図３に示す各ルータ１１０は５つのポートを備え、４つのポート１５８Ａ〜Ｄはバス・ワイヤ１１８を介して他のルータに接続され、第５のポート１６０は、ネットワーク・インタフェース・コントローラ１０８およびメモリ通信コントローラ１０６を介して、各ルータをそれに関連するＩＰブロック１０４に接続する。図２および３における例示からわかるように、ＮＯＣ１０２のルータ１１０およびリンク１１８は、垂直および水平リンクが各ルータ中の垂直および水平ポートを接続するメッシュ・ネットワークを形成する。図３の例示では、例えば、ポート１５８Ａ、１５８Ｃ、および１６０は垂直ポートと呼ばれ、ポート１５８Ｂおよび１５８Ｄは水平ポートと呼ばれる。
【００５４】
次に、図４に、本発明によるＩＰブロック１０４の例示的な一実装形態を別の方式で示すが、このＩＰブロック１０４は、発行または命令ユニット（ＩＵ）１６２、実行ユニット（ＸＵ）１６４、および補助実行ユニット（ＡＸＵ）１６６に区分化された処理要素として実現される。例示する実装形態では、ＩＵ１６２は、Ｌ１命令キャッシュ（ｉＣＡＣＨＥ）１７０から命令を受け取る複数の命令バッファ１６８を備える。各命令バッファ１６８は、複数の、例えば４つの同期マルチスレッディング（ＳＭＴ）ハードウェア・スレッドのうちの１つに専用にされる。有効−実変換ユニット（ｉＥＲＡＴ）１７２がｉＣＡＣＨＥ１７０に結合され、ｉＥＲＡＴ１７２は、命令を下位メモリから取り出すために、複数のスレッド・フェッチ・シーケンサ１７４からの命令フェッチ要求を実アドレスに変換するのに使用される。各スレッド・フェッチ・シーケンサ１７４は、特定のハードウェア・スレッドに対して専用にされ、各スレッド・フェッチ・シーケンサ１７４は、関連するスレッドによって実行されることになる命令が適切な実行ユニットへのディスパッチに向けて確実にｉＣＡＣＨＥ中にフェッチされるようにするのに使用される。図４にやはり示すように、命令バッファ１６８中にフェッチされた命令はまた、分岐予測ロジック１７６によってモニタされてよく、分岐予測ロジック１７６は、スレッドを実行する際の分岐の結果として生じる命令キャッシュ・ミスを最小限に抑えるためのヒントを各スレッド・フェッチ・シーケンサ１７４に提供する。
【００５５】
ＩＵ１６２はまた、依存性／発行ロジック・ブロック１７８を備え、依存性／発行ロジック・ブロック１７８は、各ハードウェア・スレッドに対して専用にされ、依存性を解決するように、かつ命令バッファ１６８からＸＵ１６４への命令の発行を制御するように構成される。加えて、例示する実施形態では、別個の依存性／発行ロジック１８０がＡＸＵ１６６中に備わり、したがって、異なるスレッドによって別々の命令がＸＵ１６４とＡＸＵ１６６とに同時に発行されるのを可能にする。代替の一実施形態では、ロジック１８０は、ＩＵ１６２中に配置されてもよく、または、完全に省略されてもよく、したがってロジック１７８がＡＸＵ１６６に命令を発行する。
【００５６】
ＸＵ１６４は、汎用レジスタ（ＧＰＲ）のセット１８２を備える固定小数点実行ユニットとして実現され、ＧＰＲのセット１８２は、固定小数点ロジック１８４、分岐ロジック１８６、およびロード／記憶ロジック１８８に結合される。ロード／記憶ロジック１８８は、Ｌ１データ・キャッシュ（ｄＣＡＣＨＥ）１９０に結合され、ｄＥＲＡＴロジック１９２によって有効−実変換が提供される。ＸＵ１６４は、実質的に任意の命令セット（例えば、３２ｂまたは６４ｂ  ＰｏｗｅｒＰＣ命令セットの全部または一部）を実装するように構成されてよい。
【００５７】
ＡＸＵ１６６は、補助実行ユニットとして動作し、１つまたは複数の実行ブロック１９４と共に、専用の依存性／発行ロジック１８０を備える。ＡＸＵ１６６は、任意の数の実行ブロックを備えてよく、実質的に任意のタイプの実行ユニット、例えば、浮動小数点ユニット、または、１つもしくは複数の特殊化された実行ユニット（暗号化／暗号化解除ユニット、コプロセッサ、ベクトル処理ユニット、グラフィックス処理ユニット、ＸＭＬ処理ユニットなど）を実現することができる。例示する実施形態では、ＡＸＵ１６６は、例えばＡＸＵ設計された状態とＸＵ設計された状態との間の直接移行をサポートするために、ＸＵ１６４への高速補助インタフェースを備える。
【００５８】
ＩＰブロック１０４との通信は、図２に関して上に論じたようにして、ＮＯＣ１０２に結合されたネットワーク・インタフェース・コントローラ１０８を介して管理することができる。例えばＬ２キャッシュ・メモリにアクセスするための、アドレスベースの通信を、メッセージベースの通信と共に提供することができる。例えば、各ＩＰブロック１０４は、ＩＰブロック間におけるノード間通信を扱うために、専用の受信ボックスまたは送信ボックスあるいはその両方を備えてよい。
【００５９】
本発明の実施形態は、図１〜４に関して上述したハードウェアおよびソフトウェア環境内で実現することができる。しかし、本発明が多くの異なる環境で実現されてよいこと、および、本発明の主旨および範囲を逸脱することなく前述のハードウェアおよびソフトウェア実施形態に他の変更を加えてもよいことは、本開示の利益を得る当業者には理解されるであろう。したがって、本発明は、本明細書に開示される特定のハードウェアおよびソフトウェア環境に限定されない。
【００６０】
リモート・アドレス変換データ構造を管理するための変換管理命令
アクセラレータ、コプロセッサ、中央処理装置（ＣＰＵ、本明細書では汎用処理ノードとも呼ばれる）、および他のタイプの処理ノードは、機能的かつ安全な方式で共有メモリにアクセスするために、ページ・テーブル、トランスレーション・ルックアサイド・バッファ（ＴＬＢ）、および有効−実アドレス変換テーブル（ＥＲＡＴ）などの、アドレス変換データ構造をしばしば必要とする。このため、これらのハードウェア・コンポーネントの多くは、変換エントリをキャッシュするのに必要なハードウェアを備えており、多くの状況では、このようなアドレス変換データ構造のソフトウェア管理をサポートすることが望ましい。すなわち、それにより、複数の処理ノードのうちの１つの処理ノード上のハイパーバイザまたは他の監視プログラムが、他のノード上のアドレス変換データ構造を管理することができる。
【００６１】
本発明による実施形態は、リモート・アドレス変換データ構造を管理するのに適した１つまたは複数の変換管理命令をサポートすることによって、アクセラレータ、コプロセッサ、ＣＰＵ、および他の処理ノードを管理する際のソフトウェア・オーバヘッドの量を削減するのが望ましい。
【００６２】
例えば、図５に、本発明による変換管理命令を実装するのに適した例示的なデータ処理システム２００を示す。システム２００は、複数の処理コア２０４を共にメモリ管理ユニット（ＭＭＵ）２０６に結合するメモリ・バス２０２を伴って示される。図５では２つの処理コア２０４しか示されていないが、本発明の種々の実施形態で、任意の数の処理コアを利用できることは理解されるであろう。
【００６３】
各処理コア２０４は、有効−実変換（ＥＲＡＴ）テーブル２１０および統合Ｌ１キャッシュ２１２と共に、複数（Ｎ個）のハードウェア・スレッド２０８を備えるＳＭＴコアである。ＥＲＡＴ２１０は、当技術分野で理解されるように、メモリ・アドレス変換データ（例えばページ・テーブル・エントリ（ＰＴＥ））のためのキャッシュとしての働きをし、通常、より低いレベルのデータ構造（例えば、ＭＭＵ２０６中に配置されたかまたは他の方法でＭＭＵ２０６にアクセス可能なトランスレーション・ルックアサイド・バッファ（ＴＬＢ）２１４）に関連する。ＴＬＢ２１４もまた、メモリ２１８に通常記憶された、より大きいページ・テーブル２１６のためのキャッシュとしての働きをすることができる。
【００６４】
メモリ・システムは、複数レベルのメモリおよびキャッシュを備えてよく、したがって、データ処理システム２００は、ＭＭＵ２０６に結合され処理コア２０４によって共有されるＬ２キャッシュ２２０を備えるものとして示される。
【００６５】
加えて、特定の応用例または特定タイプの作業負荷に対するデータ処理システム２００の性能を拡張または強化するために、１つまたは複数のアクセラレータ２２２またはコプロセッサ２２４あるいはその両方もまた、バス２０２に結合されてよく、したがって、これらには、様々な処理タスク（例えば高度算術演算、暗号化／暗号化解除、圧縮／圧縮解除、グラフィックス、ビデオまたは画像処理など）の実施のためにアクセス可能とすることができる。このような各アクセラレータ２２２およびコプロセッサ２２４内にもまた、専用のＥＲＡＴ２２６、２２８が備わってよい。
【００６６】
しかし、本発明の他の実施形態では、様々な代替処理アーキテクチャまたはメモリ・アーキテクチャあるいはその両方を利用できることは、理解されるであろう。例えば、追加レベルのキャッシュ・メモリ、例えばＬ３キャッシュを使用することもでき、メモリ２１８は、いくつかの実施形態、例えば非均一メモリ・アクセス（ＮＵＭＡ）ベースのデータ処理システムでは、区分化されてもよい。さらに、追加のキャッシュ・レベルが、特定の処理コアに専用にされてもよく、例えば、それにより、各処理コアは専用のＬ２キャッシュを備え、このＬ２キャッシュは、処理コアに統合されてもよく、または処理コアとメモリ・バスとの間に結合されてもよい。いくつかの実施形態では、Ｌ２またはＬ３キャッシュは、専用のインタフェースを介してＭＭＵに結合されるのではなく、メモリ・バスに直接に結合されてもよい。
【００６７】
例えば、図６に、データ処理システムの代替実装形態２４０を示すが、このデータ処理システム２４０は、複数の処理コアと、メイン・メモリ２４８をサポートするメモリ管理ユニット２４６とに結合された、メモリ・バスまたは他の共有ネットワーク２４２を備える。各処理コア２４４は、１つまたは複数の命令ストリームからの命令をフェッチ、復号、発行、および実行することのできる、命令ユニット（ＩＵ）２５０、ロード記憶ユニット（ＬＱ）２５２、１つまたは複数の固定小数点実行ユニット（ＸＵ）２５４、および１つまたは複数の補助実行ユニット（ＡＸＵ）２５６など、いくつかの機能ユニットを備える。種々の設計において種々の数および組合せのＸＵおよびＡＸＵを使用して、種々のタイプの作業負荷をサポートすることができ、ＡＸＵは、例えば、スカラもしくはベクトル・ユニット、浮動小数点実行ユニット、または、様々なアクセラレータもしくはエンジンとして実現することができる。
【００６８】
各処理コア２４４はさらに、別々の命令（ｉＣａｃｈｅ）およびデータ（ｄＣａｃｈｅ）キャッシュ２５８、２６０を使用して実現されるＬ１キャッシュを備え、それぞれにはＥＲＡＴが関連する（ｉＣａｃｈｅ２５８にはｉＥＲＡＴ２６２が関連し、ｄＣａｃｈｅ２６０にはｄＥＲＡＴ２６４が関連する）。加えて、各処理コア２４４は、関連するＬ２キャッシュ２６６を介してシステム・バス２４２に結合され、また、それに関連するＭＭＵ２６８およびＴＬＢ２７０を備える。
【００６９】
各ｉＥＲＡＴ２６２、ｄＥＲＡＴ２６４、およびＴＬＢ２７０は、システム・メモリ２４８中のページ・テーブル２７２からのエントリをキャッシュする。加えて、ＭＭＵ２４６は追加で、１つまたは複数のアクセラレータ２７６またはコプロセッサ２７８あるいはその両方の代わりにエントリをキャッシュするための、ＴＬＢ２７４を備え、各アクセラレータ２７６およびコプロセッサ２７８は、専用のＥＲＡＴ２８０、２８２を備える。
【００７０】
図５および６に示すコンポーネントは、同じ集積回路デバイスまたはチップ上に統合されてもよく、または複数のそのようなチップ中に配置されてもよいことは、理解されるであろう。一実施形態では、例えば、各処理コアは、ＮＯＣ構成の中のＩＰブロックとして実現され、関連するシステム・バス、アクセラレータ、コプロセッサ、キャッシュ、ＭＭＵ、またはメモリ、あるいはそれらの全ては、ＳＯＣ構成の中の処理コアと同じチップ上に統合される。他の実施形態では、これらのコンポーネントの１つまたは複数は、処理コアとは異なるチップ中に配置されてよく、いくつかの事例では、処理コアは、別々のチップ上に配置されてよい。
【００７１】
これらの実施形態の各々では、専用のＥＲＡＴ、ＴＬＢ、または他のアドレス変換データ構造を備えた、処理コア、アクセラレータ、コプロセッサ、および他の任意のコンポーネントは、処理ノードであると考えることができる。さらに、各システム・バスは、それに結合された処理ノードが相互と通信するのを可能にする共有ネットワークであると考えることができる。代替形態では、例えばマルチドロップ・バス、交換ネットワーク、パケットベースのネットワークなどを含めた、他の共有ネットワーク実装形態を使用することもできることは理解されるであろう。一般に、本発明を共に利用できる多様な既知のプロセッサおよびメモリ・アーキテクチャがあることを考えれば、本発明が、本明細書に示される特定のハードウェア・コンポーネントおよび他のアーキテクチャ実装形態に限定されないことは理解されるであろう。
【００７２】
図５および６に示すものなどの実施形態の内では、変換管理命令を実装して、ある処理ノード上、例えばＣＰＵまたは汎用処理ノード上で稼働しているソフトウェアが、同じ共有ネットワークに結合された他のノード中のアドレス変換データ構造をリモート管理するのを可能にすることができる。こうすることによって、ハイパーバイザなどの監視プログラムは、リモート・ノード、特にそのようなノード中のアドレス変換データ構造を、よりよく管理して、共有メモリへのアクセス時のこれらのリモート・ノードによるメモリ・アクセス性能を最大限にすることができる。
【００７３】
本発明の一実施形態では、例えば、処理ノードの少なくとも一部は、インターナショナル・ビジネス・マシーンズから入手可能でありＰｏｗｅｒ  ＩＳＡ（Instruction Set Architecture）との互換性を有する、Ａ２互換処理コアとして実現することができる。Ａ２コア命令セットは、メモリ管理に関係するいくつかの命令をサポートする。例えば、ＴＬＢ管理については以下の命令がサポートされる。すなわち、ＴＬＢ読取命令（ｔｌｂｒｅ）、ＴＬＢ書込命令（ｔｌｂｗｅ）、ＴＬＢ探索命令（ｔｌｂｓｘ）、ＴＬＢ探索および予約命令（ｔｌｂｓｒｘ）、ＴＬＢ仮想アドレス無効化命令（ｔｌｂｉｖａｘ）、ＴＬＢローカル無効化命令（ｔｌｂｉｌｘ）、ならびにＴＬＢ同期命令（ｔｌｂｓｙｎｃ）である。対応する命令がＥＲＡＴ管理についても存在し、これらは、ｅｒａｔｒｅ、ｅｒａｔｗｅ、ｅｒａｔｓｘ、ｅｒａｔｉｖａｘ、およびｅｒａｔｉｌｘを含む。
【００７４】
これらの命令の共通特性は、ＴＬＢおよびＥＲＡＴ仮想アドレス無効化命令（ｔｌｂｉｖａｘおよびｅｒａｔｉｖａｘ）を除いては、命令を使用して、命令を実行しているノードと同じノード中のアドレス変換データ構造のローカル管理が実施されることである。ｔｌｂｉｖａｘおよびｅｒａｔｉｖａｘ命令については、命令はグローバルに作用し、いずれかのアドレス変換データ構造中のどこでエントリがキャッシュされようと、ローカルとリモートの両方の処理ノード中で同様に、エントリを無効化する。
【００７５】
しかし、本発明による実施形態は、Ａ２命令セットによって提供される以上の、追加の機能を提供する。これは、異なるが相補的な２つの操作をローカル・ノードおよびリモート・ノード上で開始する追加の変換管理命令、ならびに、ローカル・ノード上で相補的な操作を実施することなくリモート・ノード上で操作を開始する追加の命令をサポートすることによって、行われる。後でより明らかになるであろうが、このような追加の機能は、ある処理ノード上で稼働するハイパーバイザまたは他の監視プログラムが、アクセラレータ、コプロセッサ、さらには他の汎用処理ノードのアドレス変換データ構造を「セットアップ」できるようにするのに有用である場合があり、それにより、実施すべきタスクがこれらのノードに発行されたときに変換ミスが発生する可能性が最小限に抑えられることになり、したがって、これらの発行されたタスクの実施に関連するレイテンシが最小限に抑えられることになる。
【００７６】
第１のタイプの命令は、ローカル処理ノード中のアドレス変換データ構造に対して第１のローカル操作を実施して、少なくとも１つのリモート処理ノードのアドレス変換データ構造に対して第２のリモート操作を開始するのに使用される。例えば、探索およびプッシュ命令をハイパーバイザが使用して、ローカル・ノード上のアドレス変換データ構造を探索し、合致が見つかった場合に、１つまたは複数のリモート・ノード、例えばアクセラレータや別の処理ノードに、値を転送することができる。したがって、このような命令により、あるノードが、アクセラレータまたは他の処理ノードを、ローカル・ハイパーバイザによって制御される位置にアクセスするように事前イネーブルおよびセットアップすることができる。
【００７７】
図７に示すように、例えば、ＥＲＡＴ探索およびプッシュ命令２８０を使用して、命令に対するオペランドによって指定された探索基準など、指定された探索基準に基づいて、ローカル・ノード中のＥＲＡＴを探索することができる（ブロック２８２）。ブロック２８４に示すように、探索基準に合致するエントリが見つからなかった場合は、命令に応答して「見つからず」ステータスが返されてよい（ブロック２８６）。そうではなく見つかった場合は、識別されたエントリは１つまたは複数のリモートＥＲＡＴにプッシュされてよく（ブロック２８８）、合致するエントリの識別子が、命令に対する応答としてローカル・ノードに返されてよい（ブロック２９０）。加えて、ブロック２９２に示すように、プッシュされたエントリがリモート・ノードによって受け取られると、このノードは、エントリをこのノードに関連するＥＲＡＴに挿入することができる。
【００７８】
エントリは、本発明によりいくつかの方式でリモートＥＲＡＴにプッシュされてよい。例えば、エントリは、プッシュ命令に割り振られたコマンド・タイプを例えば使用して、システム・バス上のコマンドを介してプッシュされてよく、このコマンドは、ＥＲＡＴを有する任意の処理ノードによってスヌープされることになる。加えて、いくつかの実施形態では、ターゲット特定プッシュ命令とブロードキャスト・プッシュ命令のうちの一方または両方をサポートすることが望ましい場合がある。例えば、ターゲット特定プッシュ命令は、システム・バス上でターゲットを絞ったコマンドを例えば使用して、１つまたは複数の特定の処理ノードを識別することができ、したがって、ローカル・ノードによって要求された特定の処理ノードのみにエントリがプッシュされることになる。他方、ブロードキャスト・プッシュ命令は、システム・バス上でブロードキャスト・コマンドを例えば使用して、全てのリモート処理ノードにエントリをプッシュし、したがって全てのこのようなノードがそれぞれのＥＲＡＴにエントリを記憶するようにするのに使用することができる。
【００７９】
ＥＲＡＴ探索およびプッシュ命令は、例えば、Ｐｏｗｅｒ  ＩＳＡにおけるＥＲＡＴ探索索引付き命令と同様にして実装されてよい。後者は、ＲＡ、ＲＢ、およびＲＴの３つのオペランドを含む。ＲＡおよびＲＢは、ローカルＥＲＡＴ中で探索すべき有効アドレス（ＥＡ）を指定するのに使用され、ＲＴは、この有効アドレスに対する第１の合致エントリの索引を返すのに使用され、本発明によるＥＲＡＴ探索およびプッシュ命令にも同じ命令フォーマットを使用することができる。様々な実施形態で、専用レジスタを使用して様々な構成可能オプション（例えばブロードキャストまたはターゲット特定）を選択することができ、１つまたは複数の特定のリモート処理ノードにターゲットを絞るのに使用されるマスクもしくは他の識別子、またはこのような情報のいくらかもしくは全てを、命令の中にエンコードすることができる。例えば、一実施形態では、マスクまたはターゲットをＲＴオペランド中で指定して、命令がどのリモート・ノードをターゲットとするかを指定することができる。
【００８０】
第１のタイプの命令の別の例として、書込みおよびプッシュ命令を使用して、アドレス変換データ構造に書き込み、アクセラレータまたは別の処理ノードに値を転送することができる。したがって、このような命令によってもまた、ローカル・ハイパーバイザによって制御される位置にアクセスするようにアクセラレータまたは他の処理ノードを事前イネーブルおよびセットアップすることができる。図８に示すように、例えば、ＥＲＡＴ書込みおよびプッシュ命令３００を使用して、命令のオペランドによって指定されるＥＲＡＴエントリなど、ローカル・ノード中のＥＲＡＴエントリに、データを書き込むことができる（ブロック３０２）。次いで、書込みデータは、１つまたは複数のリモートＥＲＡＴにプッシュされ（ブロック３０４）、ブロック３０６に示すように、プッシュされたデータがリモート・ノードによって受け取られると、このノードは、このノードに関連するＥＲＡＴに対して同様の書込みを実施することができる。
【００８１】
ＥＲＡＴ書込みおよびプッシュ命令は、例えば、Ｐｏｗｅｒ  ＩＳＡにおけるＥＲＡＴ書込み命令と同様にして実装されてよい。後者は、ＲＳ、ＲＡ、およびＷＳの３つのオペランドを含む。ＲＳは、エントリに書き込まれることになるデータを指定し、ＲＡは、書き込まれることになるエントリを指定し、ＷＳは、エントリの２つの部分のうちのどちらに書き込まれることになるかを指定する。様々な実施形態で、専用レジスタを使用して様々な構成可能オプション（例えばブロードキャストまたはターゲット特定）を選択することができ、１つまたは複数の特定のリモート処理ノードにターゲットを絞るのに使用されるマスクもしくは他の識別子、またはこのような情報のいくらかもしくは全てを、命令の中にエンコードすることができる。例えば、一実施形態では、マスクまたはターゲットをＲＡオペランドの一部において指定して、命令がどのリモート・ノードをターゲットとするかを指定することができる。
【００８２】
第２のタイプの変換管理命令に関しては、リモート無効化命令を使用して、ローカル・ノード中のアドレス変換データ構造中の対応するエントリも削除または無効化することはせずに、１つまたは複数のリモート・ノード中の１つまたは複数のアドレス変換データ構造中の選択されたエントリを削除または無効化することができる。具体的には、リモート無効化命令を使用して、リモート処理ノード中のアドレス変換データ構造に対する無効化操作を開始して、ローカル・ノード中のアドレス変換データ構造中の対応するエントリを無効化することなくリモート処理ノード中のアドレス変換データ構造中のエントリを無効化することができる。
【００８３】
図９に示すように、例えば、ＥＲＡＴリモート無効化命令３１０が、無効化操作を１つまたは複数のリモートＥＲＡＴにプッシュすることができ（ブロック３１２）、ブロック３１４に示すように、プッシュされた無効化操作がリモート・ノードによって受け取られると、このノードは、このリモート・ノード中のＥＲＡＴ中の指定されたエントリを無効化することができる。
【００８４】
ＥＲＡＴリモート無効化命令は、例えば、Ｐｏｗｅｒ  ＩＳＡにおけるＥＲＡＴ仮想アドレス無効化索引付き命令と同様にして実装されてよい。後者は、ＲＳ、ＲＡ、およびＲＢの３つのオペランドを含む。ＲＳはページ・サイズを指定し、ＲＡおよびＲＢは有効アドレス（ＥＡ）を共同で指定する。様々な実施形態で、専用レジスタを使用して様々な構成可能オプション（例えばブロードキャストまたはターゲット特定）を選択することができ、１つまたは複数の特定のリモート処理ノードにターゲットを絞るのに使用されるマスクもしくは他の識別子、またはこのような情報のいくらかもしくは全てを、命令の中にエンコードすることができる。例えば、一実施形態では、マスクまたはターゲットをＲＳオペランドの一部において指定して、命令がどのリモート・ノードをターゲットとするかを指定することができる。しかし、ＥＲＡＴ仮想アドレス無効化索引付き命令とは異なり、ローカル・ノード上のＥＲＡＴ中の対応するエントリは無効化されず、これにより、多くの実施形態で、ローカル・ハイパーバイザがリモートＥＲＡＴエントリをより高精度に制御することができる。
【００８５】
本発明のいくつかの実施形態では、ＥＲＡＴ特有の命令の代わりに、またはそれに加えて、ＴＬＢ特有の命令を使用することができる。例えば、図１０にＴＬＢ探索およびプッシュ命令３２０を示すが、この命令を使用して、命令に対するオペランドによって指定された探索基準など、指定された探索基準に基づいて、ローカル・ノード中のＴＬＢを探索することができる（ブロック３２２）。ブロック３２４に示すように、探索基準に合致するエントリが見つからなかった場合は、命令に応答して「見つからず」ステータスが返されてよい（ブロック３２６）。そうではなく見つかった場合は、識別されたエントリは１つまたは複数のリモートＴＬＢにプッシュされてよく（ブロック３２８）、合致するエントリの識別子が、命令に対する応答としてローカル・ノードに返されてよい（ブロック３３０）。加えて、ブロック３３２に示すように、プッシュされたエントリがリモート・ノードによって受け取られると、このノードは、エントリをこのノードに関連するＴＬＢに挿入することができる。
【００８６】
加えて、図１１に示すように、例えば、ＴＬＢ書込みおよびプッシュ命令３４０を使用して、命令に対するオペランドによって指定されるＴＬＢエントリなど、ローカル・ノード中のＴＬＢエントリに、データを書き込むことができる（ブロック３４２）。次いで、書込みデータは、１つまたは複数のリモートＴＬＢにプッシュされ（ブロック３４４）、ブロック３４６に示すように、プッシュされたデータがリモート・ノードによって受け取られると、このノードは、このノードに関連するＴＬＢに対して同様の書込みを実施することができる。
【００８７】
さらに、図１２に示すように、例えば、ＴＬＢリモート無効化命令３５０が、無効化操作を１つまたは複数のリモートＴＬＢにプッシュすることができ（ブロック３１５）、ブロック３５４に示すように、プッシュされた無効化操作がリモート・ノードによって受け取られると、このノードは、このリモート・ノード中のＴＬＢ中の指定されたエントリを無効化することができる。
【００８８】
ＴＬＢ探索およびプッシュ命令、書込みおよびプッシュ命令、ならびにリモート無効化命令の各々は、Ｐｏｗｅｒ  ＩＳＡにおける命令と同様に実装されてよく、上に論じたＥＲＡＴ特有の命令と同様にして構成されてよい。例えば、ＴＬＢ探索およびプッシュ命令はｔｌｂｓｘ命令と同様に実装されてよく、ＴＬＢ書込みおよびプッシュ命令はｔｌｂｗｅ命令と同様に実装されてよく、ＴＬＢリモート無効化命令はｔｌｂｉｖａｘ命令と同様に実装されてよい。
【００８９】
加えて、本発明によるいくつかの実施形態では、前述の変換管理命令は、例えば命令を命令セット中の他の命令に結合するかまたは便乗させることによって、追加の機能を実現することができる。例えば、一実施形態では、探索およびプッシュ命令ならびに書込みおよびプッシュ命令を、Ｐｏｗｅｒ  ＩＳＡにおけるｉｃｓｗｘ命令などのコプロセッサ開始命令と対にするか、またはそれに便乗させることができる。このような一実施形態では、コプロセッサまたはアクセラレータ（この実施形態ではこれらをコプロセッサと総称する）に対する開始またはキックオフ・コマンドと共に、所望の変換情報を通信することができる。
【００９０】
例えば、図１３に、Ｐｏｗｅｒ  ＩＳＡのｉｃｓｗｘ命令と同様にして例えば実装できる、変換付きコプロセッサ開始命令３６０を例示する。命令は、例えば、制御ブロックがコプロセッサのためにセットアップされた後で実行されてよく、したがって、開始命令の実行により、コプロセッサは、制御ブロック中（ならびに様々な制御レジスタ中）のデータを使用してタスクを実施する。このような命令は、例えば、コプロセッサがメモリの１ページのみを必要とする場合に有用なことがあり、したがって、この１ページについての変換エントリが、キックオフ・コマンドと共に送られてよい。
【００９１】
変換付きコプロセッサ開始命令を実行するとき、命令に対するオペランドによって指定された探索基準など、指定された探索基準に基づいて、ローカル・ノード中のＥＲＡＴ（またはＴＬＢ）が探索される（ブロック３６２）。ブロック３６４に示すように、探索基準に合致するエントリが見つからなかった場合は、命令に応答して「見つからず」ステータスが返されてよい（ブロック３６６）。そうではなく見つかった場合は、識別されたエントリは、キックオフ・コマンドまたはビットと共に、コプロセッサにプッシュされてよい（ブロック３６８）。次に、コプロセッサからステータスが返されるまでノードが待機すべきであると命令が指定するかどうか（ブロック３７０）に応じて、命令は、合致するエントリの識別子を返してすぐに完了する（ブロック３７２）か、または、ステータスがコプロセッサから返されるのを待機する（ブロック３７４）。ステータスが受け取られると、ブロック３７６で、合致するエントリの識別子およびステータスが返される。
【００９２】
コプロセッサの観点からは、エントリおよびキックオフが開始ノードから受け取られると、コプロセッサは、プッシュされたエントリをそれに関連するＥＲＡＴ（またはＴＬＢ）に挿入し（３７８）、制御ブロックによって指定されるタスクを実行する（ブロック３８０）。次いで、ブロック３８２でタスク実行のステータスが返される。
【００９３】
加えて、いくつかの実施形態では、変換付きコプロセッサ開始命令は、専用のアドレス変換データ構造がないコプロセッサまたはアクセラレータに関して使用することができる。したがって、特定のコプロセッサまたはアクセラレータがメモリの１ページのみを必要とする場合、この命令を使用して、次いでこの１ページについての変換エントリを作業キックオフと共に送ることができ、したがって、コプロセッサまたはアクセラレータは、専用のＥＲＡＴまたはＭＭＵを必要としない。
【００９４】
理解されるであろうが、前述の命令の各々は、ローカル処理ノードに対する命令セット中で定義され、したがって、ローカル処理ノードによって実行されている命令ストリームからこれらの命令の各々が受け取られたとき、ローカル処理ノード中の発行ユニットは、命令を復号し、次いで上に論じた操作を実施することになる。理解されるであろうが、このような命令を処理ノード内で実装すること、特に、このような命令を、このような命令を復号するための発行ユニット中の復号ロジック内、関連する操作を実施するためのアドレス変換ロジック内、および、共有ネットワークを介してコマンドをプッシュすることと他のノードによって送られたコマンドをスヌープすることの両方のためのインタフェース・ロジック内で実装することは、本開示の利益を得る当業者の能力内に十分入るであろう。
【００９５】
したがって、本発明による実施形態を使用して、マルチノード・データ処理システム中のアクセラレータ、コプロセッサ、および他のリモート処理ノードを管理する際のソフトウェア・オーバヘッドの量を削減することができる。本発明の主旨および範囲を逸脱することなく、開示する実施形態に様々な追加の変更を加えることができる。よって、本発明は、添付の特許請求の範囲にある。
【図１】
0006381541.tif 000002
【図２】
0006381541.tif 000003
【図３】
0006381541.tif 000004
【図４】
0006381541.tif 000005
【図５】
0006381541.tif 000006
【図６】
0006381541.tif 000007
【図７】
0006381541.tif 000008
【図８】
0006381541.tif 000009
【図９】
0006381541.tif 000010
【図１０】
0006381541.tif 000011
【図１１】
0006381541.tif 000012
【図１２】
0006381541.tif 000013
【図１３】
0006381541.tif 000014