(54)【発明の名称】データ処理システム中で命令を処理する方法、回路構成、集積回路デバイス、プログラム製品(リモート処理ノード中のアドレス変換データ構造を更新するための変換管理命令)
(58)【調査した分野】(Int.Cl.,DB名)
マルチノード・データ処理システム中で命令を処理する方法であって、前記マルチノード・データ処理システムが複数の処理ノードを含み、前記複数の処理ノードのうちの各処理ノードがアドレス変換データ構造を備え、前記方法が、
前記複数の処理ノードのうちの第1の処理ノード中で、書込みおよびプッシュ命令を含む変換管理命令を復号することであって、前記変換管理命令が、前記第1の処理ノードに対する命令セット中で定義されたものである、前記復号すること、および、
前記第1の処理ノード中で前記変換管理命令を復号するのに応答して、前記第1の処理ノード中の前記アドレス変換データ構造に対して、前記第1の処理ノード中の前記アドレス変換データ構造中のエントリにデータを書き込む第1の操作を実施し、前記複数の処理ノードのうちの第2の処理ノード中の前記アドレス変換データ構造に対して、前記データの少なくとも一部を前記第2の処理ノードにプッシュして、前記第2の処理ノード中の前記アドレス変換データ構造中のエントリに前記データを書き込む第2の操作を開始することを含む方法。
前記第2の操作を開始することが、前記複数の処理ノードの各々が結合された共有ネットワークを介してブロードキャスト・コマンドを通信して、前記複数の処理ノードのうちの前記第1の処理ノード以外の各処理ノードが前記ブロードキャスト・コマンドに応答して前記第2の操作を実施するようにすることを含む、請求項1に記載の方法。
前記変換管理命令が前記第2の処理ノードをターゲットとし、前記第2の操作を開始することが、前記複数の処理ノードの各々が結合された共有ネットワークを介して前記第2の処理ノードにコマンドを通信することを含む、請求項1に記載の方法。
【背景技術】
【0002】
メモリ管理、すなわち、コンピュータに記憶されたデータを管理する際に発生する操作は、しばしば、コンピュータの全体的なシステム性能における重要なファクタである。タスクの中でもとりわけメモリ管理は、コンピュータ上のデータの取出しおよび記憶を監督し、また、ユーザおよびコンピュータ・プログラムが何にアクセスすることが許されるかに対して制限を課すことによってコンピュータに関するいくつかのセキュリティ・タスクも管理する。
【0003】
現代のコンピュータは通常、仮想メモリ管理として知られるメモリ管理技法に依拠して、コンピュータと、コンピュータが前提とする基礎をなすアーキテクチャ上の設計とにおいて、性能を増大させ、より多くのフレキシビリティを提供する。仮想メモリ・システムにより、コンピュータのメモリ・システムを実現する基礎をなすハードウェアは、コンピュータのソフトウェアから実際上は隠される。このようなコンピュータに対しては、比較的大きい仮想メモリ空間、例えば64ビット以上の幅のものが定義され、コンピュータ上で実行されるコンピュータ・プログラムは、仮想メモリ空間中の位置を指す仮想アドレスを使用してメモリ・システムにアクセスする。しかし、コンピュータ中の物理メモリ・デバイスは、物理メモリ・デバイス中の特定のメモリ位置に直接にマッピングする「実」アドレスを介してアクセスされる。物理メモリの実メモリ・アドレスを仮想メモリ空間の仮想アドレスにマッピングするための「アドレス変換」を実施するために、コンピュータ中のハードウェアまたはソフトウェアあるいはその両方が提供される。したがって、コンピュータ上のコンピュータ・プログラムが仮想アドレスを使用してメモリへのアクセスを試みるときは常に、コンピュータは自動的に仮想アドレスを対応する実アドレスに変換し、それにより、仮想アドレスにマッピングされる適切な物理デバイス中の適切な位置へのアクセスを行うことができる。
【0004】
仮想アドレス指定の特徴の1つは、コンピュータが、仮想メモリ空間全体に対する記憶域をコンピュータのメイン・メモリ中の物理メモリ・デバイスに含める必要がないことである。その代わり、ディスク・ドライブや他の大容量記憶デバイスなど、より低いレベルの記憶装置を補助記憶装置として使用することができ、メモリ・アドレスは、メイン・メモリと補助記憶装置との間で必要に応じてスワップされる「ページ」にグループ化される。コンピュータ中でのアクセス要求が頻繁なせいで、アドレス変換は、全体的なシステム性能に大きな影響を有する可能性がある。したがって、アドレス変換が実施されるクリティカルなタイミング・パスに関連する処理オーバヘッドを最小限に抑えることが望ましい。
【0005】
仮想メモリ・システム中でのアドレス変換は通常、様々なアドレス変換データ構造にアクセスすることを組み込む。このような構造の1つはページ・テーブルと呼ばれるが、この構造は、仮想アドレスをページ単位で実アドレスにマッピングする複数のエントリを含む。しばしば、コンピュータ中で多数のメモリ・アクセスが絶えず発生するせいで、コンピュータによって使用されているメモリ・アドレス空間の全てをマッピングするのに必要とされるエントリの数はかなりの数である可能性があり、これらのエントリが専用メモリではなく主記憶装置に記憶されることが必要な可能性がある。これにより、このようなエントリへのアクセスは法外に遅くなる。このような方式によるアドレス変換を加速化するために、通常、トランスレーション・ルックアサイド・バッファ(TLB)と呼ばれる高速メモリを使用して、最近使用されたエントリが、コンピュータによって素早くアクセスされるようにキャッシュされる。必要とされるエントリがTLBに記憶されていない場合は、このエントリを主記憶装置からロードする際に性能ペナルティを被る。しかし通常、TLB上のヒット率は、主記憶装置からエントリをロードすることに関連するペナルティが、TLBからすぐにエントリにアクセス可能なときの性能利得によって相殺されて余りあるほど、十分である。さらに他の設計では、1つまたは複数の有効−実アドレス変換(ERAT)テーブルを利用することによって、追加レベルのキャッシングを使用してさらに性能を加速化することができる。そのうえ、いくつかの設計では、別々のデータおよび命令ERATが、プロセッサ中の命令およびデータ処理ロジックの近くにそれぞれ提供されて、プロセッサ中のクリティカルな性能パスに対するアドレス変換の影響が最小限に抑えられる。
【0006】
加えて、半導体技術がクロック速度の増加の点で実質的な制限に刻々と近づき続けるのに伴い、設計者らは、プロセッサ・アーキテクチャにおける並列性にますます焦点を合わせて性能向上を得ている。チップ・レベルでは、複数の処理コアが同じチップ上にしばしば配置され、別々のプロセッサ・チップとほぼ同じようにして機能するか、またはある程度、完全に別々のコンピュータとして機能する。加えて、コア内においても、いくつかのタイプの操作を扱うことに特化された複数の実行ユニットを使用することを通して、並列性が採用される。多くの実例ではパイプライン化も採用され、したがって、実施するのに複数のクロック・サイクルを要する場合のあるいくつかの操作がステージに分解され、それにより、より早い操作の完了前に他の操作を開始することができる。複数の命令ストリームが並列処理されるのを可能にするためにマルチスレッディングも採用され、それにより、いずれかの所与のクロック・サイクル中に、より多くの全体的作業を実施することができる。
【0007】
結果として、多くのデータ処理システムは今や、相互接続された複数の処理ノードを組み込み、これらの処理ノードは、同じネットワークを介して相互に結合され、しばしば同じチップまたは集積回路デバイス上に配置される。いくつかの設計では、処理ノードは相互と同一である場合があるが、他の設計では、処理ノードは異種であって様々な能力を備える場合があり、したがってシステム全体は様々なタイプの作業負荷を扱うことができる。例えば、いくつかの処理ノードは、汎用作業負荷を実行できる汎用処理ノードである場合があり、他の処理ノードは、より特殊化され、汎用処理ノードが特定のタスクを扱うのを補助することに特に向けられている場合がある。特殊化された処理ノードは、例えばアクセラレータまたはコプロセッサである場合があり、これらの特殊化された処理ノードは、高度算術演算、暗号化/暗号化解除、圧縮/圧縮解除、グラフィックス、ビデオまたは画像処理など、多様なタスクを扱うのに使用されることがある。しかし、多くの場合、これらの特殊化された処理ノードは、要求に応じて特定のタスクを実施するように、汎用処理ノードによって管理される。
【0008】
複数の処理ノードが、同じネットワークに結合されているとき、また特に、同じ物理メモリを共有するときは、専用のアドレス変換データ構造を各処理ノード中に設けて、変換エントリをキャッシュし、それによりこれらの処理ノードによるメモリ・アクセスを加速化することができる。しかし、多くの場合、作業負荷は複数の処理ノードに分散していることがあり、したがって、同じ作業負荷に取り組んでいる異なる処理ノードが、共有メモリに記憶されたいずれかのデータについての同じ変換エントリをキャッシュするときに、遅延が導入されることがある。
【0009】
一例として、汎用処理ノードがコプロセッサに結合された場合に、汎用処理ノード上で稼働するプログラムが、コプロセッサによって使用されるようにメモリ領域にいくらかのデータを記憶し、次いで、このメモリ領域に記憶されたデータに対する操作を実施するように指示するコマンドをコプロセッサに送ることがある。汎用処理ノードがまずデータをメモリ領域に記憶しようとするとき、このノードの専用ERATまたはTLB中でミスが最初に発生して、それにより、メモリ領域についての変換エントリを取り出すためにページ・テーブルへのアクセスが必要な場合があり、これはしばしば、かなりの性能ペナルティを伴う。次いでその後、汎用処理ノードがコプロセッサにコマンドを送ってからコプロセッサが記憶済みデータを取り出そうとするとき、通常、コプロセッサの専用ERATまたはTLB中で別のミスが発生することになり、それにより、メモリ領域についての変換エントリを取り出すためにページ・テーブルへの別のアクセスが必要になる。したがって、汎用処理ノードとコプロセッサが同じデータにアクセスしようとするとき、2つのミスを被る。
【発明を実施するための形態】
【0018】
マルチノード・データ処理システム中で変換管理命令を提供して、システム全体に分散したアドレス変換データ構造のリモート管理を容易にする。
【0019】
例えば、あるタイプの変換管理命令は、ローカルおよびリモートの処理ノード中にそれぞれ配置されたアドレス変換データ構造に対してローカルとリモートの両方の操作を実施するのに使用することができる。探索およびプッシュ命令を使用して、ローカル・アドレス変換データ構造を探索し、探索基準に合致するエントリの索引または他の識別子を返すことができ、また、追加で、このエントリをリモート・ノードのアドレス変換データ構造中で記憶できるかまたは他の方法で生成できるように、合致するエントリに関連するデータをこのリモート・ノードにプッシュすることもできる。書込みおよびプッシュ命令を使用して、ローカル・アドレス変換データ構造中のエントリにデータを書き込むことができ、また、追加で、リモート・ノードのアドレス変換データ構造中の対応するエントリを同様に更新できるように、書き込まれたデータをこのリモート・ノードにプッシュすることもできる。
【0020】
別のタイプの変換管理命令は、リモート・ノードのアドレス変換データ構造中のエントリのリモート無効化を、ただしローカル・アドレス変換データ構造中のエントリに対する対応する無効化は伴わずに、開始するのに使用することができる。
【0021】
これに関して、ローカルおよびリモートの処理ノードは、共通のコヒーレンス領域に配置されて共有バスなどの共有ネットワークを介して相互に結合された、任意の処理ロジックを含んでよい。処理ノードの例は、共有メモリへのアクセス時にアドレス変換データを利用する、汎用処理コア、コプロセッサ、アクセラレータ、および他の処理ロジックを含む。
【0022】
他の変形および変更も当業者には明らかであろう。したがって、本発明は、本明細書に論じる特定の実装形態に限定されない。
【0023】
ハードウェアおよびソフトウェア環境
次に図面に目を向けるが、いくつかの図を通して、同じ番号は同じ部分を示す。
図1に、本発明の実施形態によるデータ処理において有用な例示的なコンピュータ10を含む例示的な自動化されたコンピューティング機構を示す。
図1のコンピュータ10は、少なくとも1つのコンピュータ・プロセッサ12または「CPU」、ならびにランダム・アクセス・メモリ14(RAM)を備え、RAM14は、高速メモリ・バス16およびバス・アダプタ18を介して、プロセッサ12に、かつコンピュータ10の他のコンポーネントに接続される。
【0024】
RAM14には、特定のデータ処理タスクを実施するためのユーザレベル・コンピュータ・プログラム命令のモジュールである、アプリケーション・プログラム20が記憶される。これらの特定のデータ処理タスクは、例えば、文書処理、表計算、データベース操作、ビデオ・ゲーミング、株式市場シミュレーション、原子量子プロセス・シミュレーション、または他のユーザレベル応用例などである。RAM14にはまた、オペレーティング・システム22も記憶される。本発明の実施形態に関して有用なオペレーティング・システムは、UNIX(TM)、Linux(TM)、Microsoft Windows XP(TM)、AIX(TM)、IBMのi5/OS(TM)および、当業者が思い付くであろう他のオペレーティング・システムを含む。
図1の例におけるオペレーティング・システム22およびアプリケーション20はRAM14中に示されているが、このようなソフトウェアの多くのコンポーネントは通常、不揮発性メモリ、例えばディスク・ドライブ24にも記憶される。
【0025】
以下でより明らかになるであろうが、本発明による実施形態は、ネットワーク・オン・チップ(NOC)集積回路デバイスまたはチップ内で実現することができ、したがって、コンピュータ10は、2つの例示的なNOC、すなわちビデオ・アダプタ26およびコプロセッサ28を備えるように示される。NOCビデオ・アダプタ26は、別法としてグラフィックス・アダプタと呼ばれることもあるが、これは、表示画面やコンピュータ・モニタなどの表示デバイス30へのグラフィック出力のために特に設計されたI/Oアダプタの例である。NOCビデオ・アダプタ26は、高速ビデオ・バス32、バス・アダプタ18、およびフロント・サイド・バス34(これも高速バスである)を介してプロセッサ12に接続される。NOCコプロセッサ28は、バス・アダプタ18ならびにフロント・サイド・バス34および36(これも高速バスである)を介してプロセッサ12に接続される。
図1のNOCコプロセッサを最適化して、例えば、メイン・プロセッサ12の命を受けて特定のデータ処理タスクを加速化することができる。
【0026】
図1の例示的なNOCビデオ・アダプタ26およびNOCコプロセッサ28はそれぞれNOCを備え、NOCは、統合プロセッサ(IP)ブロック、ルータ、メモリ通信コントローラ、およびネットワーク・インタフェース・コントローラを備える。これらの詳細については、後で
図2〜3に関してより詳細に論じる。NOCビデオ・アダプタおよびNOCコプロセッサはそれぞれ、並列処理を使用し共有メモリへの高速ランダム・アクセスも必要とするプログラムに向けて、最適化される。しかし、本発明をNOCデバイスおよびデバイス・アーキテクチャ以外のデバイスおよびデバイス・アーキテクチャ中で実現することもできることは、本開示の利益を得る当業者には理解されるであろう。したがって、本発明は、NOCデバイス内での実現に限定されない。
【0027】
図1のコンピュータ10はディスク・ドライブ・アダプタ38を備え、ディスク・ドライブ・アダプタ38は、拡張バス40およびバス・アダプタ18を介して、プロセッサ12に、かつコンピュータ10の他のコンポーネントに結合される。ディスク・ドライブ・アダプタ38は、ディスク・ドライブ24の形の不揮発性データ記憶装置をコンピュータ10に接続し、また、例えばIDE(Integrated Drive Electronics)アダプタ、SCSI(SmallComputer System Interface)アダプタ、および当業者が思い付くであろう他のアダプタを使用して実現されてよい。不揮発性コンピュータ・メモリはまた、当業者が思い付くであろうように、光学ディスク・ドライブ、電気的に消去可能プログラム可能な読取専用メモリ(いわゆる「EEPROM」または「フラッシュ」メモリ)、RAMドライブなどとして実現されてもよい。
【0028】
コンピュータ10はまた、1つまたは複数の入出力(I/O)アダプタ42を備え、I/Oアダプタ42は、コンピュータ表示画面などの表示デバイスへの出力、ならびにキーボードやマウスなどのユーザ入力デバイス44からのユーザ入力を制御するためのソフトウェア・ドライバおよびコンピュータ・ハードウェアを例えば介して、ユーザ指向の入出力を実現する。加えて、コンピュータ10は、他のコンピュータ48とのデータ通信のため、およびデータ通信ネットワーク50とのデータ通信のための、通信アダプタ46を備える。このようなデータ通信は、RS−232接続を介して直列に、ユニバーサル・シリアル・バス(USB)などの外部バスを介して、IPデータ通信ネットワークなどのデータ通信ネットワークを介して、および当業者が思い付くであろう他の方法で、実施することができる。通信アダプタは、あるコンピュータが別のコンピュータにデータ通信を直接にまたはデータ通信ネットワークを介して送る際に経由する、データ通信のハードウェア・レベルを実現する。コンピュータ10中で使用するのに適した通信アダプタの例は、有線ダイヤルアップ通信用のモデム、有線データ通信ネットワーク通信用のイーサネット(R)(IEEE802.3)アダプタ、および、ワイヤレス・データ通信ネットワーク通信用の802.11アダプタを含む。
【0029】
さらに説明するために、
図2に、本発明の実施形態による例示的なNOC102の機能ブロック図を示す。
図2のNOCは、「チップ」100上すなわち集積回路上で実現される。NOC102は、相互接続されたノードにグループ化された、統合プロセッサ(IP)ブロック104、ルータ110、メモリ通信コントローラ106、およびネットワーク・インタフェース・コントローラ108を備える。各IPブロック104は、メモリ通信コントローラ106およびネットワーク・インタフェース・コントローラ108を介してルータ110に適合される。各メモリ通信コントローラは、IPブロックとメモリとの間の通信を制御し、各ネットワーク・インタフェース・コントローラ108は、ルータ110を介したIPブロック間通信を制御する。
【0030】
NOC102中で、各IPブロックは、NOC内におけるデータ処理のための基本単位として使用される、同期または非同期ロジック設計の再使用可能なユニットを表す。用語「IPブロック」は、「知的所有権ブロック」として展開されることもあり、これは、半導体回路の他のユーザまたは設計者にライセンス供与されることになる、当事者によって所有される設計すなわち当事者の知的所有権として、IPブロックを実際上指定する。しかし、本発明の範囲では、IPブロックがどんな特定の所有権を受けるという要件もなく、したがってこの用語は、本明細書では常に「統合プロセッサ・ブロック」として展開される。ここで指定されるIPブロックは、知的所有権の対象である場合とそうでない場合のある、ロジック、セル、またはチップ・レイアウト設計の再使用可能なユニットである。IPブロックは、ASICチップ設計またはFPGAロジック設計として形成できるロジック・コアである。
【0031】
IPブロックを類比によって述べる方法の1つは、NOC設計にとってのIPブロックとは、コンピュータ・プログラミングにとってのライブラリ、またはプリント回路板設計にとってのディスクリート集積回路コンポーネントと同じものだということである。本発明の実施形態によるNOC中では、IPブロックは、包括的なゲート・ネットリストとして、または完全な専用もしくは汎用マイクロプロセッサとして、または当業者が思い付くであろう他の方法で、実現されてよい。ネットリストは、高レベルのプログラム応用例のためのアセンブリコード・リストに似た、IPブロックの論理機能のブール代数表現(ゲート、標準セル)である。NOCはまた、例えば、VerilogやVHDLなどのハードウェア記述言語で記述された合成可能な形で実現されてもよい。ネットリストおよび合成可能な実現に加えて、NOCはまた、より低いレベルの物理的記述で送達されてもよい。SERDES、PLL、DAC、ADCなど、アナログIPブロック要素が、GDSIIなどのトランジスタ・レイアウト・フォーマットで配布される場合がある。IPブロックのディジタル要素もまた、レイアウト・フォーマットで提供されることがある。IPブロック、ならびに本発明により実現される他のロジック回路は、このようなロジックを実現する回路構成の機能またはレイアウトあるいはその両方を様々な詳細レベルで定義するコンピュータ・データ・ファイル(例えばロジック定義プログラム・コード)の形で配布される場合があることもまた理解されるであろう。したがって、完全に機能する集積回路デバイス、およびそのようなデバイスを利用するデータ処理システム、および他の有形の物理ハードウェア回路中で実現される、回路構成のコンテキストで、本発明について以上および以下では述べているが、本発明がプログラム製品内で実現されてもよいこと、および、プログラム製品の配布に使用されるコンピュータ可読記憶媒体の特定のタイプにかかわらず等しく本発明が適用されることは、本開示の利益を得る当業者なら理解するであろう。コンピュータ可読記憶媒体の例は、揮発性および不揮発性メモリ・デバイス、フロッピー(R)・ディスク、ハード・ディスク・ドライブ、CD−ROM、およびDVDなど(とりわけ)、物理的な記録可能タイプの媒体を含むが、これらに限定されない。
【0032】
図2の例における各IPブロック104は、メモリ通信コントローラ106を介してルータ110に適合される。各メモリ通信コントローラは、IPブロックとメモリとの間のデータ通信を提供するように適合された同期および非同期ロジック回路の集約である。IPブロックとメモリとの間のこのような通信の例は、メモリ・ロード命令およびメモリ記憶命令を含む。メモリ通信コントローラ106については、後で
図3に関してより詳細に述べる。各IPブロック104はまた、ネットワーク・インタフェース・コントローラ108を介してルータ110に適合され、ネットワーク・インタフェース・コントローラ108は、ルータ110を介したIPブロック104間の通信を制御する。IPブロック間の通信の例は、並列応用例およびパイプライン化応用例において、データとデータを処理するための命令とをIPブロック間で搬送するメッセージを含む。ネットワーク・インタフェース・コントローラ108についても、後で
図3に関してより詳細に述べる。
【0033】
ルータ110、およびそれらの間の対応するリンク118は、NOCのネットワーク動作を実現する。リンク118は、全てのルータを接続する物理的な並列ワイヤ・バス上で実現されるパケット構造とすることができる。すなわち、各リンクは、全てのヘッダ情報およびペイロード・データを含めたデータ交換パケット全体を同時に収容するのに十分な幅のワイヤ・バス上で実現されてよい。例えば、パケット構造が、8バイトのヘッダと56バイトのペイロード・データとを含めた64バイトを含む場合は、各リンクをなすワイヤ・バスは、64バイト幅、512本のワイヤである。加えて、各リンクは双方向であってよく、したがって、リンク・パケット構造が64バイトを含む場合、ワイヤ・バスは実際には、各ルータとネットワーク中のその近傍の各々との間で1024本のワイヤを含む。このような実装形態では、メッセージは複数のパケットを含む可能性があるが、各パケットは、ワイヤ・バスの幅に正確に収まることになる。別法では、リンクは、パケットの一部のみを収容するのに足りる幅のワイヤ・バス上で実現されてよく、したがって、パケットは複数のビートに分解されることになる。例えば、したがって、リンクが16バイト幅または128本のワイヤとして実現される場合、64バイトのパケットが4つのビートに分解されてよい。実際上の物理的制限ならびに望まれる性能特性に応じて、異なる実装形態で異なるバス幅を使用できることは理解されるであろう。ルータとワイヤ・バスの各セクションとの間の接続がポートと呼ばれるならば、各ルータは5つのポートを備える。ネットワーク上のデータ伝送の4方向のそれぞれに1つのポートがあり、第5のポートは、メモリ通信コントローラおよびネットワーク・インタフェース・コントローラを介してルータを特定のIPブロックに適合するためのものである。
【0034】
各メモリ通信コントローラ106は、IPブロックとメモリとの間の通信を制御する。メモリは、オフチップ・メインRAM112と、メモリ通信コントローラ106を介してIPブロックに直接に接続されるメモリ114と、IPブロックとしてイネーブルにされるオンチップ・メモリ116と、オンチップ・キャッシュとを含んでよい。NOC102中では、例えばオンチップ・メモリ114と116のいずれかが、オンチップ・キャッシュ・メモリとして実現されてよい。これらの形のメモリは全て、同じアドレス空間(物理アドレスまたは仮想アドレス)に配置されてよく、このことは、IPブロックに直接に取り付けられたメモリにも当てはまる。したがって、メモリ・アドレス指定メッセージは、IPブロックに関して完全に双方向とすることができる。というのは、このようなメモリへは、ネットワーク上のどんな場所にあるどんなIPブロックからも直接にアドレス指定できるからである。IPブロック上のメモリ116へは、このIPブロックから、またはNOC中の他のどんなIPブロックからも、アドレス指定することができる。メモリ通信コントローラに直接に取り付けられたメモリ114へは、このメモリ通信コントローラによってネットワークに適合されたIPブロックによってアドレス指定することができ、また、NOC中のどんな場所にある他のどんなIPブロックからもアドレス指定することができる。
【0035】
NOC102は、2つのメモリ管理ユニット(MMU)120、122を備え、これらは、本発明の実施形態によるNOCについての2つの代替メモリ・アーキテクチャを例示する。MMU120は、IPブロック内で実現され、IPブロック内のプロセッサが仮想メモリ中で動作できるようにするとともに、NOCの残りのアーキテクチャ全体が物理メモリ・アドレス空間で動作できるようにする。MMU122は、オフチップで実現され、データ通信ポート124を介してNOCに接続される。ポート124は、NOCとMMUとの間で信号を伝導するのに必要とされるピンおよび他の相互接続を備え、かつ、メッセージ・パケットをNOCパケット・フォーマットから外部MMU122によって必要とされるバス・フォーマットに変換するための十分なインテリジェンスを備える。MMUが外部に位置することは、NOCの全てのIPブロック中の全てのプロセッサが仮想メモリ・アドレス空間で動作でき、オフチップ・メモリの物理アドレスへの全ての変換がオフチップMMU122によって扱われることを意味する。
【0036】
MMU120、122を使用して例示される2つのメモリ・アーキテクチャに加えて、データ通信ポート126が、本発明の実施形態で利用できるNOC中で有用な第3のメモリ・アーキテクチャを例示する。ポート126は、NOC102のIPブロック104とオフチップ・メモリ112との間の直接接続を提供する。MMUが処理パス中にないことにより、このアーキテクチャは、NOCの全てのIPブロックによって物理アドレス空間が利用されることをもたらす。アドレス空間を双方向に共有する際、NOCの全てのIPブロックは、ポート126に直接に接続されたIPブロックを介して送られる、ロードおよび記憶を含めたメモリ・アドレス指定メッセージによって、アドレス空間中のメモリにアクセスすることができる。ポート126は、NOCとオフチップ・メモリ112との間で信号を伝導するのに必要とされるピンおよび他の相互接続を備え、かつ、メッセージ・パケットをNOCパケット・フォーマットからオフチップ・メモリ112によって必要とされるバス・フォーマットに変換するための十分なインテリジェンスを備える。
【0037】
図2の例では、IPブロックのうちの1つが、ホスト・インタフェース・プロセッサ128として指定される。ホスト・インタフェース・プロセッサ128は、NOCとNOCがインストールされ得るホスト・コンピュータ10との間のインタフェースを提供し、また、NOC上の他のIPブロックにデータ処理サービス(例えば、ホスト・コンピュータからのデータ処理要求をNOCのIPブロック間で受領およびディスパッチすることを含む)を提供する。NOCは、例えば、
図1に関して上述したように、より大きいコンピュータ10上のビデオ・グラフィックス・アダプタ26またはコプロセッサ28を実現することができる。
図2の例では、ホスト・インタフェース・プロセッサ128は、データ通信ポート130を介して、より大きいホスト・コンピュータに接続される。ポート130は、NOCとホスト・コンピュータとの間で信号を伝導するのに必要とされるピンおよび他の相互接続を備え、かつ、メッセージ・パケットをNOCからホスト・コンピュータ10によって必要とされるバス・フォーマットに変換するための十分なインテリジェンスを備える。
図1のコンピュータ中のNOCコプロセッサの例では、このようなポートは、NOCコプロセッサ28のリンク構造と、フロント・サイド・バス36(NOCコプロセッサ28とバス・アダプタ18との間の)に必要とされるプロトコルとの間で、データ通信フォーマット変換を提供することになる。
【0038】
次に、
図3に、132においてまとめて示される、NOC102中のIPブロック104、メモリ通信コントローラ106、ネットワーク・インタフェース・コントローラ108、およびルータ110内で実現されるコンポーネントをより詳細に示す機能ブロック図を示す。IPブロック104は、コンピュータ・プロセッサ134およびI/O機能136を備える。この例では、IPブロック104中のランダム・アクセス・メモリ(RAM)138のセグメントによって、コンピュータ・メモリが表される。メモリは、
図2に関して上述したように、各IPブロック上におけるその内容がNOC中の任意のIPブロックからアドレス指定可能かつアクセス可能な、物理アドレス空間のセグメントを占めることができる。各IPブロック中のプロセッサ134、I/O能力136、およびメモリ138は実際上、IPブロックを、一般にプログラム可能なマイクロコンピュータとして実現する。しかし、上に説明したように、本発明の範囲では、IPブロックは一般に、NOC内におけるデータ処理のための基本単位として使用される、同期または非同期ロジックの再使用可能なユニットを表す。したがって、一般にプログラム可能なマイクロコンピュータとしてIPブロックを実現することは、説明の目的で有用な一般的実施形態ではあるが、本発明の限定ではない。
【0039】
図3のNOC102中では、各メモリ通信コントローラ106は、複数のメモリ通信実行エンジン140を備える。各メモリ通信実行エンジン140は、ネットワークとIPブロック104との間の双方向メモリ通信命令フロー141、142、144を含めた、IPブロック104からのメモリ通信命令を実行することが可能とされる。メモリ通信コントローラによって実行されるメモリ通信命令は、特定のメモリ通信コントローラを介してルータに適合されたIPブロックからだけでなく、NOC102中のどんな場所にあるどんなIPブロック104からも発信される場合がある。すなわち、NOC中の任意のIPブロックが、メモリ通信命令を生成し、このメモリ通信命令の実行に向けて、NOCのルータを介して、別のIPブロックに関連する別のメモリ通信コントローラにこのメモリ通信命令を送信することができる。このようなメモリ通信命令は、例えば、トランスレーション・ルックアサイド・バッファ制御命令、キャッシュ制御命令、バリア命令、ならびにメモリ・ロードおよび記憶命令を含み得る。
【0040】
各メモリ通信実行エンジン140は、他のメモリ通信実行エンジンと別々に、かつ並行して、完全なメモリ通信命令を実行することが可能とされる。メモリ通信実行エンジンは、メモリ通信命令の同時スループットに最適化された、スケーラブルなメモリ・トランザクション・プロセッサを実現する。メモリ通信コントローラ106は、複数のメモリ通信実行エンジン140をサポートし、これらのメモリ通信実行エンジン140は全て、複数のメモリ通信命令の同時実行のために同時に稼働する。新しいメモリ通信命令が、メモリ通信コントローラ106によってメモリ通信実行エンジン140に割り振られ、メモリ通信実行エンジン140は、複数の応答イベントを同時に受諾することができる。この例では、全てのメモリ通信実行エンジン140は同一である。したがって、メモリ通信コントローラ106によって同時に扱えるメモリ通信命令の数を増減させることは、メモリ通信実行エンジン140の数を増減させることによって実現される。
【0041】
図3のNOC102中では、各ネットワーク・インタフェース・コントローラ108は、通信命令を、コマンド・フォーマットから、ルータ110を介したIPブロック104間での伝送のためのネットワーク・パケット・フォーマットに変換することが可能にされる。通信命令は、IPブロック104またはメモリ通信コントローラ106によってコマンド・フォーマットで構築されて、コマンド・フォーマットでネットワーク・インタフェース・コントローラ108に提供されるものとすることができる。コマンド・フォーマットは、IPブロック104およびメモリ通信コントローラ106のアーキテクチャ上のレジスタ・ファイルに準拠したネイティブ・フォーマットとすることができる。ネットワーク・パケット・フォーマットは通常、ネットワークのルータ110を介した伝送に必要とされるフォーマットである。このような各メッセージは、1つまたは複数のネットワーク・パケットからなる。ネットワーク・インタフェース・コントローラ中でコマンド・フォーマットからパケット・フォーマットに変換されるこのような通信命令の例は、IPブロックとメモリとの間のメモリ・ロード命令およびメモリ記憶命令を含む。このような通信命令はまた、並列応用例およびパイプライン化応用例において、データとデータを処理するための命令とをIPブロック間で搬送するメッセージを、IPブロック間で送る通信命令を含む場合もある。
【0042】
図3のNOC102中では、各IPブロックは、IPブロックのメモリ通信コントローラを介して、次いでまたネットワークへのそのネットワーク・インタフェース・コントローラを介して、メモリとの間でメモリアドレスベースの通信を送ることが可能にされる。メモリアドレスベースの通信は、IPブロックのメモリ通信コントローラのメモリ通信実行エンジンによって実行される、ロード命令や記憶命令などのメモリ・アクセス命令である。このようなメモリアドレスベースの通信は通常、IPブロック中で発信され、コマンド・フォーマットで構築され、実行に向けてメモリ通信コントローラに渡される。
【0043】
多くのメモリアドレスベースの通信は、メッセージ・トラフィックを用いて実行される。というのは、アクセスされることになるどんなメモリも、NOC中のいずれかのメモリ通信コントローラに直接に取り付けられたかまたはNOCのいずれかのIPブロックを介して最終的にアクセスされる物理メモリ・アドレス空間(オンチップまたはオフチップ)の、どこかに位置する可能性があるからであり、これは、どのIPブロックがどんな特定のメモリアドレスベースの通信を発信したかにかかわらずそうである。したがって、NOC102中では、メッセージ・トラフィックを用いて実行される全てのメモリアドレスベースの通信は、コマンド・フォーマットからパケット・フォーマットに変換されてネットワークを介してメッセージ中で送信されるように、メモリ通信コントローラから関連するネットワーク・インタフェース・コントローラに渡される。パケット・フォーマットへの変換の際、ネットワーク・インタフェース・コントローラはまた、メモリアドレスベースの通信によってアクセスされることになる1つまたは複数のメモリ・アドレスに依存して、パケットのネットワーク・アドレスを識別する。メモリアドレスベースのメッセージは、メモリ・アドレスを用いてアドレス指定される。各メモリ・アドレスは、ネットワーク・インタフェース・コントローラによって、ネットワーク・アドレス(通常はいくらかの範囲の物理メモリ・アドレスを担うメモリ通信コントローラのネットワーク位置)にマッピングされる。メモリ通信コントローラ106のネットワーク位置はまた、当然ながら、このメモリ通信コントローラに関連するルータ110、ネットワーク・インタフェース・コントローラ108、およびIPブロック104のネットワーク位置でもある。各ネットワーク・インタフェース・コントローラ内の命令変換ロジック150は、NOCのルータを介してメモリアドレスベースの通信を送信するために、メモリ・アドレスをネットワーク・アドレスに変換することができる。
【0044】
各ネットワーク・インタフェース・コントローラ108は、ネットワークのルータ110からメッセージ・トラフィックを受け取ると、メモリ命令があるかどうか各パケットを調べる。メモリ命令を含む各パケットは、受信側ネットワーク・インタフェース・コントローラに関連するメモリ通信コントローラ106に渡され、メモリ通信コントローラ106は、メモリ命令を実行した後で、パケットの残りのペイロードを、さらに処理されるようにIPブロックに送る。このようにすれば、メモリ内容は常に、特定のメモリ内容に依存するメッセージからの命令の実行をIPブロックが開始する前に、IPブロックによるデータ処理をサポートする準備ができている。
【0045】
図3のNOC102中では、各IPブロック104は、そのメモリ通信コントローラ106を迂回して、IPブロック間のネットワーク・アドレス指定通信146を、IPブロックのネットワーク・インタフェース・コントローラ108を介してネットワークに直接送ることが可能にされる。ネットワーク・アドレス指定通信は、ネットワーク・アドレスによって別のIPブロックに向けて送られるメッセージである。このようなメッセージは、当業者なら思い付くであろうように、パイプライン化応用例における作業データや、SIMD応用例におけるIPブロック間の単一プログラム処理のための複数データなどを送信する。このようなメッセージは、メッセージがNOCのルータを介して向けられる先であるネットワーク・アドレスを知っている発信側IPブロックによって最初からネットワーク・アドレス指定されるという点で、メモリアドレスベースの通信とは異なる。このようなネットワーク・アドレス指定通信は、IPブロックによって、I/O機能136を介してIPブロックのネットワーク・インタフェース・コントローラにコマンド・フォーマットで直接渡され、次いで、ネットワーク・インタフェース・コントローラによってパケット・フォーマットに変換され、NOCのルータを介して別のIPブロックに送信される。このようなネットワーク・アドレス指定通信146は、双方向であり、いずれかの特定の応用例におけるそれらの使用に応じて、NOCの各IPブロックに、または各IPブロックから進行する可能性がある。しかし、各ネットワーク・インタフェース・コントローラは、関連するルータとの間でこのような通信を送信することと受信することの両方が可能にされ、各ネットワーク・インタフェース・コントローラは、関連するメモリ通信コントローラ106を迂回して、関連するIPブロックとの間で直接にこのような通信を送信することと受信することの両方が可能にされる。
【0046】
図3の例における各ネットワーク・インタフェース・コントローラ108はまた、ネットワーク上で仮想チャネルを実装して、ネットワーク・パケットをタイプによって特徴付けることが可能にされる。各ネットワーク・インタフェース・コントローラ108は仮想チャネル実装ロジック148を備え、仮想チャネル実装ロジック148は、各通信命令をタイプによって分類し、命令のタイプをネットワーク・パケット・フォーマットのフィールドに記録した後で、パケット形式の命令を、NOC上で送信されるようにルータ110に渡す。通信命令タイプの例は、IPブロック間のネットワークアドレスベースのメッセージ、要求メッセージ、要求メッセージに対する応答、キャッシュに向けられた無効化メッセージ、メモリ・ロードおよび記憶メッセージ、ならびに、メモリ・ロード・メッセージへの応答などを含む。
【0047】
図3の例における各ルータ110は、ルーティング・ロジック152、仮想チャネル制御ロジック154、および仮想チャネル・バッファ156を備える。ルーティング・ロジックは通常、ルータ110とリンク118とルータ間のバス・ワイヤとによって形成されたネットワーク中でのデータ通信のためのデータ通信プロトコル・スタックを実装する同期および非同期ロジックのネットワークとして実現される。ルーティング・ロジック152は、当技術分野の読者ならオフチップ・ネットワーク中でルーティング・テーブルに関連付けるであろう機能を含むが、少なくともいくつかの実施形態におけるルーティング・テーブルは、NOC中で使用するには遅すぎて煩雑すぎると考えられる。同期および非同期ロジックのネットワークとして実装されるルーティング・ロジックは、単一クロック・サイクルの速さでルーティング決定を行うように構成されてよい。この例におけるルーティング・ロジックは、ルータ中で受け取られた各パケットを転送するためのポートを選択することによって、パケットをルーティングする。各パケットは、パケットのルーティング先となるネットワーク・アドレスを含む。
【0048】
メモリアドレスベースの通信に関する上の記述において、各メモリ・アドレスは、ネットワーク・インタフェース・コントローラによって、ネットワーク・アドレスに、すなわちメモリ通信コントローラのネットワーク位置にマッピングされるものとして述べた。メモリ通信コントローラ106のネットワーク位置はまた、当然ながら、このメモリ通信コントローラに関連するルータ110、ネットワーク・インタフェース・コントローラ108、およびIPブロック104のネットワーク位置でもある。したがって、IPブロック間またはネットワークアドレスベースの通信でも通常、アプリケーションレベルのデータ処理は、ネットワーク・アドレスを、NOCのルータとリンクとバス・ワイヤとによって形成されるネットワーク内におけるIPブロックの位置と見なす。
図2は、このようなネットワークの編成の1つが行と列のメッシュである場合を示すが、このメッシュ中では、例えば、各ネットワーク・アドレスを、メッシュの関連するルータとIPブロックとメモリ通信コントローラとネットワーク・インタフェース・コントローラとの各セットごとの一意の識別子として、または、メッシュ中のこのような各セットのXY座標として、実現することができる。
【0049】
図3のNOC102中では、各ルータ110は2つ以上の仮想通信チャネルを実装し、各仮想通信チャネルは通信タイプによって特徴付けられる。通信命令タイプ、したがって仮想チャネル・タイプは、上述したものを含む。すなわち、IPブロック間のネットワークアドレスベースのメッセージ、要求メッセージ、要求メッセージに対する応答、キャッシュに向けられた無効化メッセージ、メモリ・ロードおよび記憶メッセージ、ならびに、メモリ・ロード・メッセージへの応答などを含む。仮想チャネルに対するサポートとして、
図3の例における各ルータ110はまた、仮想チャネル制御ロジック154および仮想チャネル・バッファ156を備える。仮想チャネル制御ロジック154は、各受信パケットを、それに割り振られた通信タイプについて調べ、各パケットを、ポートを介してNOC上の近隣ルータに送信されるように、その通信タイプ用の送出仮想チャネル・バッファ中に配置する。
【0050】
各仮想チャネル・バッファ156は、有限の記憶空間を有する。短期間に多くのパケットが受信されたときは、仮想チャネル・バッファが一杯になって、それ以上のパケットをバッファに入れることができない可能性がある。他のプロトコルでは、バッファが一杯である仮想チャネル上で到着したパケットは、ドロップされることになる。しかし、この例における各仮想チャネル・バッファ156は、バス・ワイヤの制御信号により、仮想チャネル中の送信をサスペンドするよう(すなわち特定の通信タイプのパケットの送信をサスペンドするよう)に仮想チャネル制御ロジックを介して周囲のルータに勧めることが可能にされる。1つの仮想チャネルがこのようにサスペンドされたとき、他の全ての仮想チャネルは影響を受けず、全能力で動作し続けることができる。制御信号は、各ルータを介して、各ルータに関連するネットワーク・インタフェース・コントローラ108に遡って電送される。各ネットワーク・インタフェース・コントローラは、このような信号を受け取ると、それに関連するメモリ通信コントローラ106からまたはそれに関連するIPブロック104から、サスペンドされた仮想チャネルについての通信命令を受け入れることを拒否するように構成される。このようにして、仮想チャネルのサスペンドは、発信側IPブロックまで遡って、仮想チャネルを実装する全てのハードウェアに影響を及ぼす。
【0051】
仮想チャネル中のパケット送信をサスペンドすることの効果の1つは、どのパケットも決してドロップされないことである。ルータが、何らかの信頼できないプロトコル、例えばインターネット・プロトコルなどにおいてパケットがドロップされるおそれのある状況に遭遇したとき、
図3の例におけるルータは、それらの仮想チャネル・バッファ156およびそれらの仮想チャネル制御ロジック154によって、バッファ空間が再び利用可能になるまで仮想チャネル中のパケットの全ての送信をサスペンドすることができ、パケットをドロップする必要をなくす。したがって、
図3のNOCは、極めて薄いハードウェア・レイヤを用いて、より信頼性の高いネットワーク通信プロトコルを実装することができる。
【0052】
図3の例示的なNOCはまた、オンチップとオフチップの両方のメモリ・キャッシュ間のキャッシュ・コヒーレンシを維持するように構成されてよい。各NOCは複数のキャッシュをサポートすることができ、各キャッシュは、基礎をなす同じメモリ・アドレス空間に対して動作する。例えば、キャッシュは、IPブロックによって、メモリ通信コントローラによって、またはNOC外部のキャッシュ・コントローラによって、制御されてよい。
図2の例におけるオンチップ・メモリ114と116のいずれかはオンチップ・キャッシュとして実現されてもよく、本発明の範囲内で、キャッシュ・メモリはオフチップで実現されてもよい。
【0053】
図3に示す各ルータ110は5つのポートを備え、4つのポート158A〜Dはバス・ワイヤ118を介して他のルータに接続され、第5のポート160は、ネットワーク・インタフェース・コントローラ108およびメモリ通信コントローラ106を介して、各ルータをそれに関連するIPブロック104に接続する。
図2および3における例示からわかるように、NOC102のルータ110およびリンク118は、垂直および水平リンクが各ルータ中の垂直および水平ポートを接続するメッシュ・ネットワークを形成する。
図3の例示では、例えば、ポート158A、158C、および160は垂直ポートと呼ばれ、ポート158Bおよび158Dは水平ポートと呼ばれる。
【0054】
次に、
図4に、本発明によるIPブロック104の例示的な一実装形態を別の方式で示すが、このIPブロック104は、発行または命令ユニット(IU)162、実行ユニット(XU)164、および補助実行ユニット(AXU)166に区分化された処理要素として実現される。例示する実装形態では、IU162は、L1命令キャッシュ(iCACHE)170から命令を受け取る複数の命令バッファ168を備える。各命令バッファ168は、複数の、例えば4つの同期マルチスレッディング(SMT)ハードウェア・スレッドのうちの1つに専用にされる。有効−実変換ユニット(iERAT)172がiCACHE170に結合され、iERAT172は、命令を下位メモリから取り出すために、複数のスレッド・フェッチ・シーケンサ174からの命令フェッチ要求を実アドレスに変換するのに使用される。各スレッド・フェッチ・シーケンサ174は、特定のハードウェア・スレッドに対して専用にされ、各スレッド・フェッチ・シーケンサ174は、関連するスレッドによって実行されることになる命令が適切な実行ユニットへのディスパッチに向けて確実にiCACHE中にフェッチされるようにするのに使用される。
図4にやはり示すように、命令バッファ168中にフェッチされた命令はまた、分岐予測ロジック176によってモニタされてよく、分岐予測ロジック176は、スレッドを実行する際の分岐の結果として生じる命令キャッシュ・ミスを最小限に抑えるためのヒントを各スレッド・フェッチ・シーケンサ174に提供する。
【0055】
IU162はまた、依存性/発行ロジック・ブロック178を備え、依存性/発行ロジック・ブロック178は、各ハードウェア・スレッドに対して専用にされ、依存性を解決するように、かつ命令バッファ168からXU164への命令の発行を制御するように構成される。加えて、例示する実施形態では、別個の依存性/発行ロジック180がAXU166中に備わり、したがって、異なるスレッドによって別々の命令がXU164とAXU166とに同時に発行されるのを可能にする。代替の一実施形態では、ロジック180は、IU162中に配置されてもよく、または、完全に省略されてもよく、したがってロジック178がAXU166に命令を発行する。
【0056】
XU164は、汎用レジスタ(GPR)のセット182を備える固定小数点実行ユニットとして実現され、GPRのセット182は、固定小数点ロジック184、分岐ロジック186、およびロード/記憶ロジック188に結合される。ロード/記憶ロジック188は、L1データ・キャッシュ(dCACHE)190に結合され、dERATロジック192によって有効−実変換が提供される。XU164は、実質的に任意の命令セット(例えば、32bまたは64b PowerPC命令セットの全部または一部)を実装するように構成されてよい。
【0057】
AXU166は、補助実行ユニットとして動作し、1つまたは複数の実行ブロック194と共に、専用の依存性/発行ロジック180を備える。AXU166は、任意の数の実行ブロックを備えてよく、実質的に任意のタイプの実行ユニット、例えば、浮動小数点ユニット、または、1つもしくは複数の特殊化された実行ユニット(暗号化/暗号化解除ユニット、コプロセッサ、ベクトル処理ユニット、グラフィックス処理ユニット、XML処理ユニットなど)を実現することができる。例示する実施形態では、AXU166は、例えばAXU設計された状態とXU設計された状態との間の直接移行をサポートするために、XU164への高速補助インタフェースを備える。
【0058】
IPブロック104との通信は、
図2に関して上に論じたようにして、NOC102に結合されたネットワーク・インタフェース・コントローラ108を介して管理することができる。例えばL2キャッシュ・メモリにアクセスするための、アドレスベースの通信を、メッセージベースの通信と共に提供することができる。例えば、各IPブロック104は、IPブロック間におけるノード間通信を扱うために、専用の受信ボックスまたは送信ボックスあるいはその両方を備えてよい。
【0059】
本発明の実施形態は、
図1〜4に関して上述したハードウェアおよびソフトウェア環境内で実現することができる。しかし、本発明が多くの異なる環境で実現されてよいこと、および、本発明の主旨および範囲を逸脱することなく前述のハードウェアおよびソフトウェア実施形態に他の変更を加えてもよいことは、本開示の利益を得る当業者には理解されるであろう。したがって、本発明は、本明細書に開示される特定のハードウェアおよびソフトウェア環境に限定されない。
【0060】
リモート・アドレス変換データ構造を管理するための変換管理命令
アクセラレータ、コプロセッサ、中央処理装置(CPU、本明細書では汎用処理ノードとも呼ばれる)、および他のタイプの処理ノードは、機能的かつ安全な方式で共有メモリにアクセスするために、ページ・テーブル、トランスレーション・ルックアサイド・バッファ(TLB)、および有効−実アドレス変換テーブル(ERAT)などの、アドレス変換データ構造をしばしば必要とする。このため、これらのハードウェア・コンポーネントの多くは、変換エントリをキャッシュするのに必要なハードウェアを備えており、多くの状況では、このようなアドレス変換データ構造のソフトウェア管理をサポートすることが望ましい。すなわち、それにより、複数の処理ノードのうちの1つの処理ノード上のハイパーバイザまたは他の監視プログラムが、他のノード上のアドレス変換データ構造を管理することができる。
【0061】
本発明による実施形態は、リモート・アドレス変換データ構造を管理するのに適した1つまたは複数の変換管理命令をサポートすることによって、アクセラレータ、コプロセッサ、CPU、および他の処理ノードを管理する際のソフトウェア・オーバヘッドの量を削減するのが望ましい。
【0062】
例えば、
図5に、本発明による変換管理命令を実装するのに適した例示的なデータ処理システム200を示す。システム200は、複数の処理コア204を共にメモリ管理ユニット(MMU)206に結合するメモリ・バス202を伴って示される。
図5では2つの処理コア204しか示されていないが、本発明の種々の実施形態で、任意の数の処理コアを利用できることは理解されるであろう。
【0063】
各処理コア204は、有効−実変換(ERAT)テーブル210および統合L1キャッシュ212と共に、複数(N個)のハードウェア・スレッド208を備えるSMTコアである。ERAT210は、当技術分野で理解されるように、メモリ・アドレス変換データ(例えばページ・テーブル・エントリ(PTE))のためのキャッシュとしての働きをし、通常、より低いレベルのデータ構造(例えば、MMU206中に配置されたかまたは他の方法でMMU206にアクセス可能なトランスレーション・ルックアサイド・バッファ(TLB)214)に関連する。TLB214もまた、メモリ218に通常記憶された、より大きいページ・テーブル216のためのキャッシュとしての働きをすることができる。
【0064】
メモリ・システムは、複数レベルのメモリおよびキャッシュを備えてよく、したがって、データ処理システム200は、MMU206に結合され処理コア204によって共有されるL2キャッシュ220を備えるものとして示される。
【0065】
加えて、特定の応用例または特定タイプの作業負荷に対するデータ処理システム200の性能を拡張または強化するために、1つまたは複数のアクセラレータ222またはコプロセッサ224あるいはその両方もまた、バス202に結合されてよく、したがって、これらには、様々な処理タスク(例えば高度算術演算、暗号化/暗号化解除、圧縮/圧縮解除、グラフィックス、ビデオまたは画像処理など)の実施のためにアクセス可能とすることができる。このような各アクセラレータ222およびコプロセッサ224内にもまた、専用のERAT226、228が備わってよい。
【0066】
しかし、本発明の他の実施形態では、様々な代替処理アーキテクチャまたはメモリ・アーキテクチャあるいはその両方を利用できることは、理解されるであろう。例えば、追加レベルのキャッシュ・メモリ、例えばL3キャッシュを使用することもでき、メモリ218は、いくつかの実施形態、例えば非均一メモリ・アクセス(NUMA)ベースのデータ処理システムでは、区分化されてもよい。さらに、追加のキャッシュ・レベルが、特定の処理コアに専用にされてもよく、例えば、それにより、各処理コアは専用のL2キャッシュを備え、このL2キャッシュは、処理コアに統合されてもよく、または処理コアとメモリ・バスとの間に結合されてもよい。いくつかの実施形態では、L2またはL3キャッシュは、専用のインタフェースを介してMMUに結合されるのではなく、メモリ・バスに直接に結合されてもよい。
【0067】
例えば、
図6に、データ処理システムの代替実装形態240を示すが、このデータ処理システム240は、複数の処理コアと、メイン・メモリ248をサポートするメモリ管理ユニット246とに結合された、メモリ・バスまたは他の共有ネットワーク242を備える。各処理コア244は、1つまたは複数の命令ストリームからの命令をフェッチ、復号、発行、および実行することのできる、命令ユニット(IU)250、ロード記憶ユニット(LQ)252、1つまたは複数の固定小数点実行ユニット(XU)254、および1つまたは複数の補助実行ユニット(AXU)256など、いくつかの機能ユニットを備える。種々の設計において種々の数および組合せのXUおよびAXUを使用して、種々のタイプの作業負荷をサポートすることができ、AXUは、例えば、スカラもしくはベクトル・ユニット、浮動小数点実行ユニット、または、様々なアクセラレータもしくはエンジンとして実現することができる。
【0068】
各処理コア244はさらに、別々の命令(iCache)およびデータ(dCache)キャッシュ258、260を使用して実現されるL1キャッシュを備え、それぞれにはERATが関連する(iCache258にはiERAT262が関連し、dCache260にはdERAT264が関連する)。加えて、各処理コア244は、関連するL2キャッシュ266を介してシステム・バス242に結合され、また、それに関連するMMU268およびTLB270を備える。
【0069】
各iERAT262、dERAT264、およびTLB270は、システム・メモリ248中のページ・テーブル272からのエントリをキャッシュする。加えて、MMU246は追加で、1つまたは複数のアクセラレータ276またはコプロセッサ278あるいはその両方の代わりにエントリをキャッシュするための、TLB274を備え、各アクセラレータ276およびコプロセッサ278は、専用のERAT280、282を備える。
【0070】
図5および6に示すコンポーネントは、同じ集積回路デバイスまたはチップ上に統合されてもよく、または複数のそのようなチップ中に配置されてもよいことは、理解されるであろう。一実施形態では、例えば、各処理コアは、NOC構成の中のIPブロックとして実現され、関連するシステム・バス、アクセラレータ、コプロセッサ、キャッシュ、MMU、またはメモリ、あるいはそれらの全ては、SOC構成の中の処理コアと同じチップ上に統合される。他の実施形態では、これらのコンポーネントの1つまたは複数は、処理コアとは異なるチップ中に配置されてよく、いくつかの事例では、処理コアは、別々のチップ上に配置されてよい。
【0071】
これらの実施形態の各々では、専用のERAT、TLB、または他のアドレス変換データ構造を備えた、処理コア、アクセラレータ、コプロセッサ、および他の任意のコンポーネントは、処理ノードであると考えることができる。さらに、各システム・バスは、それに結合された処理ノードが相互と通信するのを可能にする共有ネットワークであると考えることができる。代替形態では、例えばマルチドロップ・バス、交換ネットワーク、パケットベースのネットワークなどを含めた、他の共有ネットワーク実装形態を使用することもできることは理解されるであろう。一般に、本発明を共に利用できる多様な既知のプロセッサおよびメモリ・アーキテクチャがあることを考えれば、本発明が、本明細書に示される特定のハードウェア・コンポーネントおよび他のアーキテクチャ実装形態に限定されないことは理解されるであろう。
【0072】
図5および6に示すものなどの実施形態の内では、変換管理命令を実装して、ある処理ノード上、例えばCPUまたは汎用処理ノード上で稼働しているソフトウェアが、同じ共有ネットワークに結合された他のノード中のアドレス変換データ構造をリモート管理するのを可能にすることができる。こうすることによって、ハイパーバイザなどの監視プログラムは、リモート・ノード、特にそのようなノード中のアドレス変換データ構造を、よりよく管理して、共有メモリへのアクセス時のこれらのリモート・ノードによるメモリ・アクセス性能を最大限にすることができる。
【0073】
本発明の一実施形態では、例えば、処理ノードの少なくとも一部は、インターナショナル・ビジネス・マシーンズから入手可能でありPower ISA(Instruction Set Architecture)との互換性を有する、A2互換処理コアとして実現することができる。A2コア命令セットは、メモリ管理に関係するいくつかの命令をサポートする。例えば、TLB管理については以下の命令がサポートされる。すなわち、TLB読取命令(tlbre)、TLB書込命令(tlbwe)、TLB探索命令(tlbsx)、TLB探索および予約命令(tlbsrx)、TLB仮想アドレス無効化命令(tlbivax)、TLBローカル無効化命令(tlbilx)、ならびにTLB同期命令(tlbsync)である。対応する命令がERAT管理についても存在し、これらは、eratre、eratwe、eratsx、erativax、およびeratilxを含む。
【0074】
これらの命令の共通特性は、TLBおよびERAT仮想アドレス無効化命令(tlbivaxおよびerativax)を除いては、命令を使用して、命令を実行しているノードと同じノード中のアドレス変換データ構造のローカル管理が実施されることである。tlbivaxおよびerativax命令については、命令はグローバルに作用し、いずれかのアドレス変換データ構造中のどこでエントリがキャッシュされようと、ローカルとリモートの両方の処理ノード中で同様に、エントリを無効化する。
【0075】
しかし、本発明による実施形態は、A2命令セットによって提供される以上の、追加の機能を提供する。これは、異なるが相補的な2つの操作をローカル・ノードおよびリモート・ノード上で開始する追加の変換管理命令、ならびに、ローカル・ノード上で相補的な操作を実施することなくリモート・ノード上で操作を開始する追加の命令をサポートすることによって、行われる。後でより明らかになるであろうが、このような追加の機能は、ある処理ノード上で稼働するハイパーバイザまたは他の監視プログラムが、アクセラレータ、コプロセッサ、さらには他の汎用処理ノードのアドレス変換データ構造を「セットアップ」できるようにするのに有用である場合があり、それにより、実施すべきタスクがこれらのノードに発行されたときに変換ミスが発生する可能性が最小限に抑えられることになり、したがって、これらの発行されたタスクの実施に関連するレイテンシが最小限に抑えられることになる。
【0076】
第1のタイプの命令は、ローカル処理ノード中のアドレス変換データ構造に対して第1のローカル操作を実施して、少なくとも1つのリモート処理ノードのアドレス変換データ構造に対して第2のリモート操作を開始するのに使用される。例えば、探索およびプッシュ命令をハイパーバイザが使用して、ローカル・ノード上のアドレス変換データ構造を探索し、合致が見つかった場合に、1つまたは複数のリモート・ノード、例えばアクセラレータや別の処理ノードに、値を転送することができる。したがって、このような命令により、あるノードが、アクセラレータまたは他の処理ノードを、ローカル・ハイパーバイザによって制御される位置にアクセスするように事前イネーブルおよびセットアップすることができる。
【0077】
図7に示すように、例えば、ERAT探索およびプッシュ命令280を使用して、命令に対するオペランドによって指定された探索基準など、指定された探索基準に基づいて、ローカル・ノード中のERATを探索することができる(ブロック282)。ブロック284に示すように、探索基準に合致するエントリが見つからなかった場合は、命令に応答して「見つからず」ステータスが返されてよい(ブロック286)。そうではなく見つかった場合は、識別されたエントリは1つまたは複数のリモートERATにプッシュされてよく(ブロック288)、合致するエントリの識別子が、命令に対する応答としてローカル・ノードに返されてよい(ブロック290)。加えて、ブロック292に示すように、プッシュされたエントリがリモート・ノードによって受け取られると、このノードは、エントリをこのノードに関連するERATに挿入することができる。
【0078】
エントリは、本発明によりいくつかの方式でリモートERATにプッシュされてよい。例えば、エントリは、プッシュ命令に割り振られたコマンド・タイプを例えば使用して、システム・バス上のコマンドを介してプッシュされてよく、このコマンドは、ERATを有する任意の処理ノードによってスヌープされることになる。加えて、いくつかの実施形態では、ターゲット特定プッシュ命令とブロードキャスト・プッシュ命令のうちの一方または両方をサポートすることが望ましい場合がある。例えば、ターゲット特定プッシュ命令は、システム・バス上でターゲットを絞ったコマンドを例えば使用して、1つまたは複数の特定の処理ノードを識別することができ、したがって、ローカル・ノードによって要求された特定の処理ノードのみにエントリがプッシュされることになる。他方、ブロードキャスト・プッシュ命令は、システム・バス上でブロードキャスト・コマンドを例えば使用して、全てのリモート処理ノードにエントリをプッシュし、したがって全てのこのようなノードがそれぞれのERATにエントリを記憶するようにするのに使用することができる。
【0079】
ERAT探索およびプッシュ命令は、例えば、Power ISAにおけるERAT探索索引付き命令と同様にして実装されてよい。後者は、RA、RB、およびRTの3つのオペランドを含む。RAおよびRBは、ローカルERAT中で探索すべき有効アドレス(EA)を指定するのに使用され、RTは、この有効アドレスに対する第1の合致エントリの索引を返すのに使用され、本発明によるERAT探索およびプッシュ命令にも同じ命令フォーマットを使用することができる。様々な実施形態で、専用レジスタを使用して様々な構成可能オプション(例えばブロードキャストまたはターゲット特定)を選択することができ、1つまたは複数の特定のリモート処理ノードにターゲットを絞るのに使用されるマスクもしくは他の識別子、またはこのような情報のいくらかもしくは全てを、命令の中にエンコードすることができる。例えば、一実施形態では、マスクまたはターゲットをRTオペランド中で指定して、命令がどのリモート・ノードをターゲットとするかを指定することができる。
【0080】
第1のタイプの命令の別の例として、書込みおよびプッシュ命令を使用して、アドレス変換データ構造に書き込み、アクセラレータまたは別の処理ノードに値を転送することができる。したがって、このような命令によってもまた、ローカル・ハイパーバイザによって制御される位置にアクセスするようにアクセラレータまたは他の処理ノードを事前イネーブルおよびセットアップすることができる。
図8に示すように、例えば、ERAT書込みおよびプッシュ命令300を使用して、命令のオペランドによって指定されるERATエントリなど、ローカル・ノード中のERATエントリに、データを書き込むことができる(ブロック302)。次いで、書込みデータは、1つまたは複数のリモートERATにプッシュされ(ブロック304)、ブロック306に示すように、プッシュされたデータがリモート・ノードによって受け取られると、このノードは、このノードに関連するERATに対して同様の書込みを実施することができる。
【0081】
ERAT書込みおよびプッシュ命令は、例えば、Power ISAにおけるERAT書込み命令と同様にして実装されてよい。後者は、RS、RA、およびWSの3つのオペランドを含む。RSは、エントリに書き込まれることになるデータを指定し、RAは、書き込まれることになるエントリを指定し、WSは、エントリの2つの部分のうちのどちらに書き込まれることになるかを指定する。様々な実施形態で、専用レジスタを使用して様々な構成可能オプション(例えばブロードキャストまたはターゲット特定)を選択することができ、1つまたは複数の特定のリモート処理ノードにターゲットを絞るのに使用されるマスクもしくは他の識別子、またはこのような情報のいくらかもしくは全てを、命令の中にエンコードすることができる。例えば、一実施形態では、マスクまたはターゲットをRAオペランドの一部において指定して、命令がどのリモート・ノードをターゲットとするかを指定することができる。
【0082】
第2のタイプの変換管理命令に関しては、リモート無効化命令を使用して、ローカル・ノード中のアドレス変換データ構造中の対応するエントリも削除または無効化することはせずに、1つまたは複数のリモート・ノード中の1つまたは複数のアドレス変換データ構造中の選択されたエントリを削除または無効化することができる。具体的には、リモート無効化命令を使用して、リモート処理ノード中のアドレス変換データ構造に対する無効化操作を開始して、ローカル・ノード中のアドレス変換データ構造中の対応するエントリを無効化することなくリモート処理ノード中のアドレス変換データ構造中のエントリを無効化することができる。
【0083】
図9に示すように、例えば、ERATリモート無効化命令310が、無効化操作を1つまたは複数のリモートERATにプッシュすることができ(ブロック312)、ブロック314に示すように、プッシュされた無効化操作がリモート・ノードによって受け取られると、このノードは、このリモート・ノード中のERAT中の指定されたエントリを無効化することができる。
【0084】
ERATリモート無効化命令は、例えば、Power ISAにおけるERAT仮想アドレス無効化索引付き命令と同様にして実装されてよい。後者は、RS、RA、およびRBの3つのオペランドを含む。RSはページ・サイズを指定し、RAおよびRBは有効アドレス(EA)を共同で指定する。様々な実施形態で、専用レジスタを使用して様々な構成可能オプション(例えばブロードキャストまたはターゲット特定)を選択することができ、1つまたは複数の特定のリモート処理ノードにターゲットを絞るのに使用されるマスクもしくは他の識別子、またはこのような情報のいくらかもしくは全てを、命令の中にエンコードすることができる。例えば、一実施形態では、マスクまたはターゲットをRSオペランドの一部において指定して、命令がどのリモート・ノードをターゲットとするかを指定することができる。しかし、ERAT仮想アドレス無効化索引付き命令とは異なり、ローカル・ノード上のERAT中の対応するエントリは無効化されず、これにより、多くの実施形態で、ローカル・ハイパーバイザがリモートERATエントリをより高精度に制御することができる。
【0085】
本発明のいくつかの実施形態では、ERAT特有の命令の代わりに、またはそれに加えて、TLB特有の命令を使用することができる。例えば、
図10にTLB探索およびプッシュ命令320を示すが、この命令を使用して、命令に対するオペランドによって指定された探索基準など、指定された探索基準に基づいて、ローカル・ノード中のTLBを探索することができる(ブロック322)。ブロック324に示すように、探索基準に合致するエントリが見つからなかった場合は、命令に応答して「見つからず」ステータスが返されてよい(ブロック326)。そうではなく見つかった場合は、識別されたエントリは1つまたは複数のリモートTLBにプッシュされてよく(ブロック328)、合致するエントリの識別子が、命令に対する応答としてローカル・ノードに返されてよい(ブロック330)。加えて、ブロック332に示すように、プッシュされたエントリがリモート・ノードによって受け取られると、このノードは、エントリをこのノードに関連するTLBに挿入することができる。
【0086】
加えて、
図11に示すように、例えば、TLB書込みおよびプッシュ命令340を使用して、命令に対するオペランドによって指定されるTLBエントリなど、ローカル・ノード中のTLBエントリに、データを書き込むことができる(ブロック342)。次いで、書込みデータは、1つまたは複数のリモートTLBにプッシュされ(ブロック344)、ブロック346に示すように、プッシュされたデータがリモート・ノードによって受け取られると、このノードは、このノードに関連するTLBに対して同様の書込みを実施することができる。
【0087】
さらに、
図12に示すように、例えば、TLBリモート無効化命令350が、無効化操作を1つまたは複数のリモートTLBにプッシュすることができ(ブロック315)、ブロック354に示すように、プッシュされた無効化操作がリモート・ノードによって受け取られると、このノードは、このリモート・ノード中のTLB中の指定されたエントリを無効化することができる。
【0088】
TLB探索およびプッシュ命令、書込みおよびプッシュ命令、ならびにリモート無効化命令の各々は、Power ISAにおける命令と同様に実装されてよく、上に論じたERAT特有の命令と同様にして構成されてよい。例えば、TLB探索およびプッシュ命令はtlbsx命令と同様に実装されてよく、TLB書込みおよびプッシュ命令はtlbwe命令と同様に実装されてよく、TLBリモート無効化命令はtlbivax命令と同様に実装されてよい。
【0089】
加えて、本発明によるいくつかの実施形態では、前述の変換管理命令は、例えば命令を命令セット中の他の命令に結合するかまたは便乗させることによって、追加の機能を実現することができる。例えば、一実施形態では、探索およびプッシュ命令ならびに書込みおよびプッシュ命令を、Power ISAにおけるicswx命令などのコプロセッサ開始命令と対にするか、またはそれに便乗させることができる。このような一実施形態では、コプロセッサまたはアクセラレータ(この実施形態ではこれらをコプロセッサと総称する)に対する開始またはキックオフ・コマンドと共に、所望の変換情報を通信することができる。
【0090】
例えば、
図13に、Power ISAのicswx命令と同様にして例えば実装できる、変換付きコプロセッサ開始命令360を例示する。命令は、例えば、制御ブロックがコプロセッサのためにセットアップされた後で実行されてよく、したがって、開始命令の実行により、コプロセッサは、制御ブロック中(ならびに様々な制御レジスタ中)のデータを使用してタスクを実施する。このような命令は、例えば、コプロセッサがメモリの1ページのみを必要とする場合に有用なことがあり、したがって、この1ページについての変換エントリが、キックオフ・コマンドと共に送られてよい。
【0091】
変換付きコプロセッサ開始命令を実行するとき、命令に対するオペランドによって指定された探索基準など、指定された探索基準に基づいて、ローカル・ノード中のERAT(またはTLB)が探索される(ブロック362)。ブロック364に示すように、探索基準に合致するエントリが見つからなかった場合は、命令に応答して「見つからず」ステータスが返されてよい(ブロック366)。そうではなく見つかった場合は、識別されたエントリは、キックオフ・コマンドまたはビットと共に、コプロセッサにプッシュされてよい(ブロック368)。次に、コプロセッサからステータスが返されるまでノードが待機すべきであると命令が指定するかどうか(ブロック370)に応じて、命令は、合致するエントリの識別子を返してすぐに完了する(ブロック372)か、または、ステータスがコプロセッサから返されるのを待機する(ブロック374)。ステータスが受け取られると、ブロック376で、合致するエントリの識別子およびステータスが返される。
【0092】
コプロセッサの観点からは、エントリおよびキックオフが開始ノードから受け取られると、コプロセッサは、プッシュされたエントリをそれに関連するERAT(またはTLB)に挿入し(378)、制御ブロックによって指定されるタスクを実行する(ブロック380)。次いで、ブロック382でタスク実行のステータスが返される。
【0093】
加えて、いくつかの実施形態では、変換付きコプロセッサ開始命令は、専用のアドレス変換データ構造がないコプロセッサまたはアクセラレータに関して使用することができる。したがって、特定のコプロセッサまたはアクセラレータがメモリの1ページのみを必要とする場合、この命令を使用して、次いでこの1ページについての変換エントリを作業キックオフと共に送ることができ、したがって、コプロセッサまたはアクセラレータは、専用のERATまたはMMUを必要としない。
【0094】
理解されるであろうが、前述の命令の各々は、ローカル処理ノードに対する命令セット中で定義され、したがって、ローカル処理ノードによって実行されている命令ストリームからこれらの命令の各々が受け取られたとき、ローカル処理ノード中の発行ユニットは、命令を復号し、次いで上に論じた操作を実施することになる。理解されるであろうが、このような命令を処理ノード内で実装すること、特に、このような命令を、このような命令を復号するための発行ユニット中の復号ロジック内、関連する操作を実施するためのアドレス変換ロジック内、および、共有ネットワークを介してコマンドをプッシュすることと他のノードによって送られたコマンドをスヌープすることの両方のためのインタフェース・ロジック内で実装することは、本開示の利益を得る当業者の能力内に十分入るであろう。
【0095】
したがって、本発明による実施形態を使用して、マルチノード・データ処理システム中のアクセラレータ、コプロセッサ、および他のリモート処理ノードを管理する際のソフトウェア・オーバヘッドの量を削減することができる。本発明の主旨および範囲を逸脱することなく、開示する実施形態に様々な追加の変更を加えることができる。よって、本発明は、添付の特許請求の範囲にある。