(57)【要約】マルチプロセッサシステムのプロセッサから、データに対するメモリアクセス要求を受信し、前記メモリアクセス要求の前記データが、通信ネットワークを介して前記マルチプロセッサシステムと結合されたリモート処理システムに記憶されているかどうかを決定し、前記リモート処理システムから前記データを要求し、前記通信ネットワークを介して前記リモート処理システムから前記データを受信し、前記マルチプロセッサシステムの前記プロセッサに前記データを提供する方法および装置である。
2009503624.tif 000002
【特許請求の範囲】
【請求項１】
マルチプロセッサシステムのプロセッサから、データに対するメモリアクセス要求を受信するステップと、
前記メモリアクセス要求の前記データが、通信ネットワークを介して前記マルチプロセッサシステムと結合されたリモート処理システムに記憶されているかどうかを決定するステップと、
前記リモート処理システムから前記データを要求するステップと、
前記通信ネットワークを介して前記リモート処理システムから前記データを受信するステップと、
前記マルチプロセッサシステムの前記プロセッサに前記データを提供するステップと、を有する方法。
【請求項２】
前記決定するステップは、前記メモリアクセス要求と関連する１つ以上のメモリアドレスが、所定の範囲から外れているかどうかを評価するステップを有する請求項１に記載の方法。
【請求項３】
前記所定の範囲は、前記マルチプロセッシングシステムの前記プロセッサに結合された１つ以上のメモリユニットによって定義される請求項２に記載の方法。
【請求項４】
前記リモート処理システムのネットワークアドレスに対する要求を、前記通信ネットワークを介して管理サーバに送信するステップと、
前記通信ネットワークを介して前記管理サーバから前記リモート処理システムの前記ネットワークアドレスを受信するステップと、を更に有する請求項１に記載の方法。
【請求項５】
１つ以上の管理サーバのリストを含むサーバテーブルにアクセスして、前記リモート処理システムのネットワークアドレスに対する前記要求を送信すべき前記管理サーバに関連するネットワークアドレスを選択するステップを更に有する請求項４に記載の方法。
【請求項６】
前記要求するステップは、前記リモート処理システムの前記ネットワークアドレスに、前記データに対する仲介メモリアクセス要求を送信するステップを有する請求項４に記載の方法。
【請求項７】
前記リモート処理システムから前記データを要求する前記ステップは、前記仲介メモリアクセス要求を生成するために、前記マルチプロセッシングシステムのネットワークアドレスによって、前記メモリアクセス要求を増やすステップを有し、
前記通信ネットワークを介して前記リモート処理システムから前記データを受信する前記ステップは、前記マルチプロセッシングシステムの前記ネットワークアドレスにおいて前記データを受信するステップを有する請求項６に記載の方法。
【請求項８】
管理サーバから前記リモート処理システムの前記ネットワークアドレスを受信する前記ステップは、前記要求されたデータに関連する仮想アドレスに関連する前記リモート処理システムの１つ以上の物理アドレスを受信するステップを有し、
前記リモート処理システムから前記データを要求する前記ステップは、前記仲介メモリアクセス要求を生成するために、前記リモート処理システムの前記１つ以上の物理アドレスによって、前記メモリアクセス要求を増やすステップを有する請求項７に記載の方法。
【請求項９】
１つ以上のリモート処理システムの１つ以上のネットワークアドレスをメモリアドレスの１つ以上の範囲と関連付けているネットワークアドレステーブルにアクセスするステップと、
前記メモリアクセス要求の前記データと関連付けられている前記ネットワークアドレスの１つ以上を選択するステップと、を更に有する請求項１に記載の方法。
【請求項１０】
前記要求するステップは、前記リモート処理システムの前記ネットワークアドレスに、前記データに対する仲介メモリアクセス要求を送信するステップを有する、
前記リモート処理システムから前記データを要求する前記ステップは、前記仲介メモリアクセス要求を生成するために、前記マルチプロセッシングシステムのネットワークアドレスによって、前記メモリアクセス要求を増やすステップを有する、
前記通信ネットワークを介して前記リモート処理システムから前記データを受信する前記ステップは、前記マルチプロセッシングシステムの前記ネットワークアドレスにおいて前記データを受信するステップを有する、の少なくともいずれかに該当する請求項９に記載の方法。
【請求項１１】
前記マルチプロセッシングシステムの別のプロセッサが、少なくとも前記決定するステップ、前記要求するステップ、および前記提供するステップを実行する、
前記プロセッサが、データに対する前記メモリアクセス要求を発行する、
前記メモリアクセス要求は、データに対するダイレクトメモリアクセス（ＤＭＡ）要求である、
前記プロセッサに前記データを提供する前記ステップは、前記プロセッサへの前記データのＤＭＡデータ転送を支援するステップを有する、の少なくともいずれかに該当する請求項1に記載の方法。
【請求項１２】
第１の処理システムから、第２の処理システムに記憶されている要求されたデータを指定している１つ以上の仮想アドレスを含むネットワークアドレス要求を受信するステップと、
前記要求されたデータを指定している前記１つ以上の仮想アドレスに基づいて、前記第２の処理システムのネットワークアドレスを選択するステップと、
前記第２の処理システムの前記ネットワークアドレスを、通信ネットワークを介して前記第１の処理システムに送信するステップと、を有する方法。
【請求項１３】
前記選択するステップは、複数のネットワークアドレスを複数のメモリ範囲と関連付けているネットワークアドレステーブルにアクセスするステップを有する請求項１２に記載の方法。
【請求項１４】
前記１つ以上の仮想アドレスを１つ以上の物理アドレスに変換するステップと、
前記第２の処理システムの前記関連付けられたネットワークアドレスを取得するために、前記１つ以上の物理アドレスを前記複数のメモリ範囲と比較するステップと、を更に有する請求項１３に記載の方法。
【請求項１５】
通信ネットワークを介して、前記第１の処理システムに前記１つ以上の物理アドレスを送信するステップを更に有する請求項１４に記載の方法。
【請求項１６】
メインメモリと動作可能に通信可能な複数のプロセッサと、
前記プロセッサのそれぞれに結合された各々のローカルメモリと、を有し、
前記プロセッサの１つ以上は、マルチプロセッサシステムの開始プロセッサから、データに対するメモリアクセス要求を受信して、前記メモリアクセス要求の前記データが、通信ネットワークを介して前記マルチプロセッサシステムに結合されたリモート処理システムに記憶されているかどうかを決定するように動作可能である装置。
【請求項１７】
前記１つ以上のプロセッサは、前記リモート処理システムから前記データを要求し、前記通信ネットワークを介して前記リモート処理システムから前記データを受信することを支援し、前記開始プロセッサに前記データを提供することを支援するように更に動作可能である請求項１６に記載の装置。
【請求項１８】
前記１つ以上のプロセッサは、
前記リモート処理システムのネットワークアドレスを取得して、
前記リモート処理システムの前記ネットワークアドレスに、前記データに対する仲介メモリアクセス要求を送信するように更に動作可能である請求項１６に記載の装置。
【請求項１９】
前記１つ以上のプロセッサは、
前記リモート処理システムのネットワークアドレスに対する要求を、前記通信ネットワークを介して管理サーバに送信して、前記管理サーバから前記ネットワークアドレスを受信する、
１つ以上のリモート処理システムの１つ以上のネットワークアドレスをメモリアドレスの１つ以上の範囲と関連付けているネットワークアドレステーブルにアクセスして、前記メモリアクセス要求の前記データと関連付けられている前記ネットワークアドレスの１つ以上を選択する、の少なくとも１つを行うように更に動作可能である請求項１８に記載の装置。
【請求項２０】
前記１つ以上のプロセッサは、
前記仲介メモリアクセス要求を生成するために、前記マルチプロセッシングシステムのネットワークアドレスによって、前記メモリアクセス要求を増やすことによって、前記リモート処理システムから前記データを要求する、
前記要求されたデータに関連する仮想アドレスに関連する前記リモート処理システムの１つ以上の物理アドレスを取得する、
前記仲介メモリアクセス要求を生成するために、前記リモート処理システムの前記１つ以上の物理アドレスによって、前記メモリアクセス要求を増やすことによって、前記リモート処理システムから前記データを要求する、の少なくとも１つを行うように更に動作可能である請求項１８に記載の装置。
【請求項２１】
前記ローカルメモリは、ハードウェアキャッシュメモリではない、
各プロセッサは、そのローカルメモリ内でプログラムを実行することができるが、各プロセッサは、前記メインメモリ内でプログラムを実行することができない、の少なくともいずれかに該当する請求項１６に記載の装置。
【請求項２２】
前記プロセッサおよび関連するローカルメモリは共通の半導体基板に配置されている、
複数のプロセッサ、関連するローカルメモリおよび前記メインメモリは共通の半導体基板に配置されている、の少なくともいずれかに該当する請求項１６に記載の装置。
【請求項２３】
マルチプロセッサシステムの開始プロセッサから、データに対するメモリアクセス要求を受信し、
前記メモリアクセス要求の前記データが、通信ネットワークを介して前記マルチプロセッサシステムと結合されたリモート処理システムに記憶されているかどうかを決定するアクションを、前記マルチプロセッシングシステムに実行させるように動作可能な実行可能プログラムを含む記憶媒体。
【請求項２４】
前記アクションは、
前記リモート処理システムから前記データを要求し、
前記通信ネットワークを介して前記リモート処理システムから前記データを受信することを支援し、
前記開始プロセッサに前記データを提供することを支援することを更に有する請求項２３に記載の記憶媒体。
【請求項２５】
前記アクションは、
前記リモート処理システムのネットワークアドレスを取得して、
前記リモート処理システムの前記ネットワークアドレスに、前記データに対する仲介メモリアクセス要求を送信することを更に有する請求項２３に記載の記憶媒体。
【請求項２６】
前記アクションは、
前記リモート処理システムのネットワークアドレスに対する要求を、前記通信ネットワークを介して管理サーバに送信して、前記管理サーバから前記ネットワークアドレスを受信し、
１つ以上のリモート処理システムの１つ以上のネットワークアドレスをメモリアドレスの１つ以上の範囲と関連付けているネットワークアドレステーブルにアクセスして、前記メモリアクセス要求の前記データと関連付けられている前記ネットワークアドレスの１つ以上を選択する、の少なくとも１つを行うことを更に有する請求項２５に記載の記憶媒体。
【請求項２７】
前記アクションは、
前記仲介メモリアクセス要求を生成するために、前記マルチプロセッシングシステムのネットワークアドレスによって、前記メモリアクセス要求を増やすことによって、前記リモート処理システムから前記データを要求し、
前記要求されたデータに関連する仮想アドレスに関連する前記リモート処理システムの１つ以上の物理アドレスを取得し、
前記仲介メモリアクセス要求を生成するために、前記リモート処理システムの前記１つ以上の物理アドレスによって、前記メモリアクセス要求を増やすことによって、前記リモート処理システムから前記データを要求することを更に有する請求項２５に記載の記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッシングシステム内でデータを転送するための方法および装置に関する。
【背景技術】
【０００２】
最先端のコンピュータアプリケーションには、リアルタイムのマルチメディア機能が伴うため、近年、コンピュータ処理のデータスループットの向上が常に望まれている。グラフィックアプリケーションは処理システムへの要求が最も大きいアプリケーションの１つであり、その理由は、グラフィックアプリケーションが所望の視覚的効果を得るために、比較的短い時間に膨大なデータアクセス、データの演算処理、およびデータの操作を要求するからである。これらのアプリケーションは、１秒間に何千メガビットものデータ処理等の非常に高速な処理速度を要求する。シングルプロセッサを採用して、高速の処理速度を実現している処理システムもあるが、マルチプロセッサアーキテクチャを利用して実装されている処理システムもある。マルチプロセッサシステムでは、所望の処理結果を得るために、複数のプロセッサが並列に（あるいは少なくとも協調して）動作することができる。
【０００３】
マルチプロセッシングシステムのなかには、各プロセッサが、プログラムコードを実行するための（容量の大きなランダムアクセスメモリ（ＲＡＭ）ではなく）比較的小さなローカルメモリを使用するものもある。容量の大きなＲＡＭ（メインメモリまたはシステムメモリ）は、大容量記憶に使用されうる。また、プロセッサは、ダイレクトメモリアクセス（ＤＭＡ）技術を使用して、メインメモリからそれぞれのローカルメモリにデータを転送することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
マルチプロセッサシステムにおいては、複数のプロセッサが、非常に広い空間（リモートに存在するが、ネットワークを介して利用可能な他のマルチプロセッサシステム内など）にあるデータにアクセスすることが望ましいことがある。リモートに存在するシステム間でのデータ転送に関連するレーテンシは予測不可能のことがあるため、マルチプロセッサシステムでメモリ空間を管理するための先行技術による手法は、この点に関しては満足のいくものではない。
【課題を解決するための手段】
【０００５】
本発明の各種態様は、マルチプロセッサ環境内のプロセッサに、広範なメモリ空間へのアクセスを提供することを考察するものである。好ましくは、データがメモリ空間のどこに存在していても、データの要求元のプロセッサが、ＤＭＡコマンドを発行するだけでデータを取得できるように、専用プロセッサが、アドレス変換、データのクエリー即ちデータ問い合わせなどを担当する。
【０００６】
例えば、プロセッサが、ネットワーク（インターネットなど）上でリモートに存在するマルチプロセッサシステムにあるデータを要求すると、好ましくは、以下のアクションが実行される。
（ｉ）データの要求元のプロセッサがＤＭＡコマンドを発行し、これによって、専用プロセッサへのページフォルト割込が発生する。
（ｉｉ）専用プロセッサはデータのアドレスを検査して、当該データがメモリ空間内にあるかどうかを決定する（ＤＭＡプロセスが終了していない場合）。
（ｉｉｉ）専用プロセッサが、（ＤＭＡコマンドアドレスに対応する）ＩＰアドレスに対する要求を管理サーバに送信する。
（ｉｖ）管理サーバは、ＩＰアドレスとメモリ空間のアドレス間を対応付けているテーブルにアクセスして、専用プロセッサにＩＰアドレスを返す。
（ｖ）専用プロセッサは、このＩＰアドレスに（リモートのマルチプロセッサシステムに）、ＤＭＡコマンドを送信する。
（ｖｉ）リモートマルチプロセッサシステムは、ＤＭＡ要求に対応し、要求元のプロセッサのメインメモリにデータを返す。
（ｖｉｉ）専用プロセッサは、元のＤＭＡ要求に対する対応を支援する。
【０００７】
本発明の１つ以上の実施形態によれば、方法ならびに装置は、マルチプロセッサシステムの開始プロセッサから、データに対するメモリアクセス要求を受信し、前記メモリアクセス要求の前記データが、通信ネットワークを介して前記マルチプロセッサシステムと結合されたリモート処理システムに記憶されているかどうかを決定するようになっている。前記方法および装置は、更に、前記リモート処理システムから前記データを要求し、前記通信ネットワークを介して前記リモート処理システムから前記データを受信することを支援し、前記開始プロセッサに前記データを提供することを支援するようになっていてもよい。前記方法および装置は、更に、前記リモート処理システムのネットワークアドレスを取得して、前記リモート処理システムの前記ネットワークアドレスに、前記データに対する仲介メモリアクセス要求を送信するようになっていてもよい。
【０００８】
１つ以上の実施形態によれば、前記方法および装置は、更に、前記リモート処理システムのネットワークアドレスに対する要求を、前記通信ネットワークを介して管理サーバに送信して、前記管理サーバから前記ネットワークアドレスを受信するようになっていてもよい。１つ以上の実施形態によれば、前記方法および装置は、更に、１つ以上のリモート処理システムの１つ以上のネットワークアドレスをメモリアドレスの１つ以上の範囲と関連付けているネットワークアドレステーブルにアクセスして、前記メモリアクセス要求の前記データと関連付けられている前記ネットワークアドレスの１つ以上を選択するようになっていてもよい。
【０００９】
１つ以上の実施形態によれば、前記方法および装置は、更に、前記仲介メモリアクセス要求を生成するために、前記マルチプロセッシングシステムのネットワークアドレスによって、前記メモリアクセス要求を増やすことによって、前記リモート処理システムから前記データを要求する、前記要求されたデータに関連する仮想アドレスに関連する前記リモート処理システムの１つ以上の物理アドレスを取得する、前記仲介メモリアクセス要求を生成するために、前記リモート処理システムの前記１つ以上の物理アドレスによって、前記メモリアクセス要求を増やすことによって、前記リモート処理システムから前記データを要求する、の少なくとも１つを行うようになっていてもよい。
【発明を実施するための最良の形態】
【００１０】
添付の図面を参照しつつ、ここに記載する本発明の説明を読めば、他の態様、特徴および利点等は当業者に自明となるであろう。
【００１１】
本発明の各種態様を説明するために、現時点での好ましい形態を図面の形式で示すが、本発明は図示したとおりの構成ならびに手段に限定されないことを理解されたい。
【００１２】
図面において、同一の要素は同じ参照符号によって参照される。図１に、本発明の１つ以上の特徴を実行するために適合されうる処理システム１０を例示する。簡潔を期すと共に明確になるように、図１〜２のブロック図は装置の説明として本明細書において参照かつ記載される。しかし、この記載は同等の効力を有する方法のさまざまな態様に容易に適用できることを理解されたい。
【００１３】
処理システム１０は、複数のマルチプロセッシングシステム１００Ａ，１００Ｂ，…，１００Ｎ、管理サーバ１５２、およびこれらの要素を相互接続している通信ネットワーク１５０を有する。マルチプロセッサシステム１００については、本明細書において、図２を参照して更に詳細に後述する。通信ネットワーク１５０は、マルチプロセッサ１００、管理サーバ１５２、および他の任意の要素（図示せず）を相互接続する公知の技術であれば、どのようなものでも使用することができる。例えば、通信ネットワーク１５０は、インターネットなどの広域ネットワークであってもよい。
【００１４】
図２は、ここに記載した特徴および発明の１つ以上の更に別の実施形態を実装するのに適合されうるマルチプロセシングシステム１００のブロック図である。システム１００は、複数のプロセッサ１０２Ａ〜Ｄ、関連するローカルメモリ１０４Ａ〜Ｄ、および共有メモリ１０６を備え、これらはバス１０８によって相互に接続されている。共有メモリ１０６は、本明細書において、メインメモリまたはシステムメモリとも呼ばれることがある。例示のため４つのプロセッサ１０２を示したが、本発明の趣旨および範囲から逸脱することなく、任意の個数のプロセッサを使用することができる。各プロセッサ１０２は構成が同じであっても、構成が異っていてもよい。
【００１５】
プロセッサ１０２は、システムメモリ１０６からデータを要求し、このデータを操作して所望の結果を得ることができる公知の技術であればいずれを利用しても実装することができる。例えば、プロセッサ１０２は、通常のマイクロプロセッサ、分散型マイクロプロセッサなど、ソフトウェアおよび／またはファームウェアを実行することができる公知のマイクロプロセッサのいずれかを利用して実装することができる。例えば、プロセッサ１０２のうちの１つ以上は、グレースケール情報、色情報、テクスチャデータ、ポリゴン情報、ビデオフレーム情報等を含むピクセルデータなどのデータを要求して操作することができるグラフィックプロセッサであり得る。
【００１６】
ローカルメモリ１０４は、好ましくは、対応するプロセッサ１０２と同じチップ（同じ半導体基板）に配置される。しかし、ローカルメモリ１０４は、ハードウェアキャッシュメモリ機能を実装するためのオンチップまたはオフチップのハードウェアキャッシュ回路、キャッシュレジスタ、キャッシュメモリコントローラなどが存在しないという点で、好ましくは従来のハードウェアキャッシュメモリでない。チップ上のスペースには限りがある場合があるため、ローカルメモリ１０４はシステムメモリ１０６よりも相当サイズが小さいことがある。
【００１７】
プロセッサ１０２は、好ましくは、プログラムを実行したりデータを操作するために、バス１０８経由でシステムメモリ１０６から対応するローカルメモリ１０４にデータ（プログラムデータを含みうる）をコピーするため、データアクセス要求を出す。データアクセスを容易にするためのメカニズムは、好ましくは図示しないダイレクトメモリアクセスコントローラ（ＤＭＡＣ）を利用して実装され、これは、プロセッサ１０２からみてその内部に設けられても、外部に設けられてもよい。
【００１８】
システムメモリ１０６は、好ましくは高帯域メモリ接続（図示せず）を介してプロセッサ１０２に結合されたダイナミックランダムアクセスメモリ（ＤＲＡＭ）である。好ましくは、システムメモリ１０６はＤＲＡＭであるが、メモリ１０６は例えば、スタティックランダムアクセスメモリ（ＳＲＡＭ： Static Random Access Memory）、磁気ランダムアクセスメモリ（ＭＲＡＭ： Magnetic Random Access Memory）、光メモリ、ホログラフィックメモリなどとして、他の方法を用いて実装されうる。
【００１９】
各プロセッサ１０２は、好ましくは、論理命令がパイプライン方式で処理される、処理パイプラインを用いて実装される。パイプラインは命令が処理される任意の数のステージに分けられうるが、一般にパイプラインは１つ以上の命令のフェッチ、命令のデコード、命令間の依存性チェック、命令の発行、および命令の実行ステップを有している。これに関連して、プロセッサ１０２は命令バッファ、命令デコード回路、依存性チェック回路、命令発行回路、および実行ステージを有する。
【００２０】
１つ以上の実施形態では、プロセッサ１０２とローカルメモリ１０４は共通の半導体基板に配置されうる。１つ以上の更に別の実施形態では、共有メモリ１０６も共通の半導体基板に配置されていても、別個に配置されていてもよい。
【００２１】
１つ以上の別の実施形態では、プロセッサ１０２の１つ以上が、メインプロセッサとして動作し、他のプロセッサに動作可能に結合されており、バス１０８経由で共有メモリ１０６に結合可能でありうる。メインプロセッサは、他のプロセッサ１０２によるデータの処理をスケジューリングし調整を行う。しかし、他のプロセッサ１０２と異なり、メインプロセッサは、共有メモリ１０６とプロセッサ１０２の１つ以上のローカルメモリ１０４との少なくとも一方から取得したデータをキャッシュすることができるハードウェアキャッシュメモリに結合されてもよい。メインプロセッサは、プログラムを実行したりデータを操作するために、ＤＭＡ法などの公知の技術のいずれかを使用して、バス１０８経由でシステムメモリ１０６からキャッシュメモリにデータ（プログラムデータを含みうる）をコピーするため、データアクセス要求を出す。
【００２２】
本発明の１つ以上の態様によれば、マルチプロセッサシステム１００は、好ましくは、自身の関連するメモリのほかに、ネットワーク１５０を介して結合された他のマルチプロセッサシステム１００のメモリを利用して、プログラムを実行したりデータを操作するように動作可能である。このため、例えば、マルチプロセッサ１００Ａは、好ましくは、マルチプロセッサ１００Ｄに関連するメモリにあるデータを要求して、ネットワーク１５０を介してこれを受け取ることによって、このデータを要求するように動作可能である。この意味では、マルチプロセッサ１００Ａのメモリ空間には、その関連するメモリ（ローカルメモリ１０４Ａ、他のローカルメモリ１０４、共有メモリ１０６など）と、他のマルチプロセッサ１００Ｂ，１００Ｃ，１００Ｄ等に関連する１つ以上のメモリが含まれる。この特徴については、本明細書において更に詳細に後述する。
【００２３】
図１〜３を参照すると、システム１００Ａのプロセッサ１２０の１つ（プロセッサ１２０Ａなど）が、別のマルチプロセッサシステム１００のプロセッサ（マルチプロセッサ１００Ｄなど）に記憶されているデータを要求しうる。より詳細には、プロセッサコア１０２Ａが、マルチプロセッサシステム１００Ｄの共有メモリ１０６に記憶されているデータにアクセスしうる。この意味では、プロセッサコア１０２Ａに関連するメモリ空間には、プロセッサ１０２Ａに関連するローカルメモリ１０４Ａ、マルチプロセッサシステム１００Ａの共有メモリ１０６、およびマルチプロセッサシステム１００Ｄの共有メモリ１０６の一部またはその全てが含まれる。
【００２４】
本発明の１つ以上の実施形態によれば、かつ上の例に合わせれば、プロセッサコア１０２Ａは、好ましくは、そのメモリ空間の特定の仮想アドレスにあるデータに対するモリアクセス要求を生成するように動作可能である。ここで、メモリアクセス要求は、所定の範囲の仮想メモリアドレスを対象としていてもよいが、説明を簡単にするために、このようなアドレスが１つしかないものとする点に留意されたい。好ましい実施形態では、メモリアクセス要求は、プロセッサ１０２Ａのローカルメモリ１０４Ａに記憶させるデータのブロックを指定するＤＭＡ要求である（アクション２０２）。別のプロセッサ１０２（プロセッサ１０２Ｄなど）が、好ましくは管理プロセッサの役割を担う。管理プロセッサ１０２Ｄは、プロセッサコア１０２Ａによるメモリアクセス要求を受けて、好ましくは、メモリアクセス要求のデータが、参加しているリモート処理システム（マルチプロセッサ１００Ｄなど）に記憶されているかどうかを決定する。
【００２５】
好ましい実施形態では、ＤＭＡ要求（メモリアクセス要求）は、最初は、ＤＭＡハンドラに対して発行される。メモリアクセス要求が、マルチプロセッサ１００Ａの共有メモリ１０６に記憶されているデータに対するものである場合、ＤＭＡハンドラは、好ましくは、管理プロセッサ１０２Ｄの介入なしに、このようなデータの転送を支援する。メモリアクセス要求に関連する仮想アドレスが所定の範囲から外れている（ネットワーク１５０を介して関連するデータを転送する必要がある）場合には、ＤＭＡハンドラは、好ましくはページフォルト割込み要求を発行する。ページフォルト割込み要求は、好ましくは、管理プロセッサ１０２Ｄに、メモリアクセス要求に対するアクションを開始させる。
【００２６】
最初に、管理プロセッサ１０２Ｄは、好ましくは、仮想アドレスが適切であるか（例えば、リモートメモリ位置にマップされてはいるが、許容される範囲内にあるなど）、あるいは仮想メモリが正しくないか（例えば、許容される範囲から外れているなど）かを決定する。例えば、許可されるアドレス範囲には、参加している任意のマルチプロセッサシステム１００（例えばマルチプロセッサ1００Ｂ，１００Ｃ，１００Ｄなど）に関連するアドレスが含まれる。仮想アドレスが許容される範囲から外れている場合、管理プロセッサ１０２Ｄは、好ましくはメモリアクセス要求を終了する。しかし、仮想アドレスが許容される範囲内にある場合、管理プロセッサ１０２Ｄは、好ましくは、データに対する要求と、マルチプロセッサシステム１００Ｄからのデータの転送を支援する。 
【００２７】
管理プロセッサ１０２Ｄは、要求されたデータがリモートのマルチプロセッサシステム１００に記憶されていると決定すると、好ましくは、そのリモート処理システムのネットワークアドレスに対する要求を、通信ネットワーク１５０を介して管理サーバ１５２に送信する（アクション２０４）。ネットワークアドレスに対する要求には、プロセッサコア１０２Ａによって発行されたメモリアクセス要求内で指定されていた仮想アドレスが含まれうる。管理サーバ１５２は、好ましくは管理プロセッサ１０２Ｄからネットワークアドレス要求を受け取って、要求されたデータが記憶されているマルチプロセッサシステム１００のネットワークアドレス（マルチプロセッサ１００Ｄのネットワークアドレスなど）を返す（アクション２０６）。
【００２８】
図４を参照すると、本発明の別の実施形態では、ネットワーク１５０を介して結合された複数の管理サーバ１５２が含まれていてもよい。このような実施形態では、管理プロセッサ１０２Ｄは、好ましくは、複数の管理サーバを、対応する１つ以上の条件と関連付けているサーバテーブル１６０にアクセスする。このような条件には、マルチプロセッサシステム１００Ａおよび／または管理サーバ自体の地理的位置および／またはネットワーク位置が含まれうる。また、この条件には、マルチプロセッサシステム１００Ａで実行されているアプリケーションプログラムによって定義されるパラメータ、仮想アドレスの範囲と程度などが含まれていてもよい。
【００２９】
図５を参照すると、本発明の好ましい実施形態によれば、管理サーバ１５２は、好ましくは、数多くのネットワークアドレスを、それぞれのメモリアドレス範囲と関連付けているネットワークアドレステーブル１６２を維持している。例えば、ネットワークアドレス０がメモリアドレス範囲０に関連付けられ、ネットワークアドレス１がメモリアドレス範囲１に関連付けられ、ネットワークアドレス２がメモリアドレス範囲２に関連付けられ…、という具合に続いていく。メモリアドレス範囲は、好ましくは、管理サーバ１５２と、参加しているマルチプロセッサシステム１００との間で実行される登録プロセスに従って決定される（アクション２００）。例えば、マルチプロセッサシステム１００Ｄは既に登録プロセスを行っており、その際、マルチプロセッサ１００Ｄは、メモリアドレス範囲２が、そのネットワークアドレス２と関連付けられていることを特定している。これを受けて、管理サーバ１５２は、好ましくは、ネットワークアドレステーブル１６２に、ネットワークアドレス２をメモリアドレス範囲２に関連付けるエントリを維持し、これによりマルチプロセッサ１００Ｄを登録している。
【００３０】
管理プロセッサ１０２Ｄから管理サーバ１５２に対してネットワークアドレス要求が発行されると（アクション２０４）、管理サーバ１５２は、好ましくは、ネットワークアドレステーブル１６２にアクセスし、仮想アドレスをメモリアドレス範囲と比較する。仮想アドレスが特定のメモリアドレス範囲（メモリアドレス範囲２など）にマップされている場合、管理サーバ１５２は、好ましくは、関連するネットワークアドレス（ネットワークアドレス２など）を選択する。その後、管理サーバ１５２は、好ましくは、ネットワーク１５０を介して管理プロセッサ１０２Ｄにネットワークアドレス２を返す。管理サーバ１５２から管理プロセッサ１０２Ｄへの応答には、ネットワークアドレスのほか、要求されたデータの仮想アドレスに関連する物理アドレス（またはアドレス範囲）が含まれうる点に留意されたい。つまり、管理サーバ１５２は、プロセッサコア１０２Ａによって要求された元のメモリアクセス要求の仮想アドレスを、マルチプロセッサシステム１００Ｄの共有メモリ１０６の物理アドレスに変換するメモリ変換機能を提供することができる。
【００３１】
次に、管理プロセッサ１０２Ｄは、好ましくは、管理サーバ１５２によって提供されたネットワークアドレスを利用して、マルチプロセッサ１００Ｄに、データに対する仲介メモリ（intermediate memory）要求を送信する（アクション２０８）。好ましい実施形態では、仲介メモリアクセス要求には、マルチプロセッサシステム１００Ａのネットワークアドレスと、要求されたデータが記憶されているマルチプロセッサシステム１００Ｄの物理アドレス（またはアドレス範囲）のうちの少なくとも１つが含まれる。好ましい実施形態では、仲介メモリアクセス要求は、マルチプロセッサシステム１００Ｄの共有メモリ１０６からマルチプロセッサシステム１００Ａへ、ブロックデータの転送を要求するＤＭＡ要求である。
【００３２】
管理プロセッサは、好ましくは、マルチプロセッサ１００Ａの共有メモリ１０６内に、ネットワーク１５０を介してマルチプロセッサ１００Ｄから転送されたデータを受け入れるための空間を予約する。
【００３３】
アクション２１０において、マルチプロセッサシステム１００Ｄは、好ましくは、通信ネットワーク１５０を介してデータ転送を行い、マルチプロセッサシステム１００Ａの共有メモリ１０６への要求されたデータの転送を支援することによって、仲介メモリアクセス要求に対応する。
【００３４】
本発明の１つ以上の別の実施形態によれば、管理プロセッサ１０２Ｄは、ネットワークアドレステーブル１６２、および／またはマルチプロセッサ１００Ａ内のその複製（facsimile）の一部またはその全体にアクセスすることができる。この場合、管理プロセッサ１０２Ｄは、マルチプロセッサ１００Ｄのネットワークアドレスを取得するために、管理サーバ１５２とハンドシェークを行う必要がない（アクション２０４、２０６）。ネットワークアドレステーブル１６２へのアクセスは、数多くの方法で取得することができ、これには、管理サーバ１５２からマルチプロセッサ１００Ａにデータをダウンロードする方法、管理プロセッサ１０２Ｄが、ネットワークアドレステーブル１６２を作成するために十分な分の、ネットワークアドレスに対する要求と、それに対する応答の履歴を記憶する学習プロセスなどがある。
【００３５】
データが、マルチプロセッサシステム１００Ｄからマルチプロセッサシステム１００Ａに転送されると、管理プロセッサ１０２Ｄは、好ましくは、このデータの、共有メモリ１０６からプロセッサ１０２Ａのローカルメモリ１０４Ａへの転送を支援する（アクション２１２）。特に、プロセッサ１０２Ａからみると、リモートに記憶されているデータに対するメモリアクセス要求が、マルチプロセッサ１００Ａ自体の記憶メモリ１０６内に記憶されているデータとは異なる方法によって開始も対応もされなかったという点に留意されたい。このため、プロセッサ１０２Ａは、ハンドシェークを作製および実行し、ネットワーク１５０を介したマルチプロセッサ１００Ｄからマルチプロセッサ１００Ａへのデータ転送を支援するために必要なインタフェースを行うことに関連する負荷を過度に負うことなく、効率的に、プログラムコードを実行して、データを操作することができる。その代わり、このような活動に関連する処理の負荷は、管理プロセッサ１０２Ｄが担う。好ましい実施形態では、管理プロセッサ１０２Ｄは、マルチプロセッサ１００Ａに参加している全てのプロセッサに関してこのような負荷を負う。同様に、管理プロセッサ１０２Ｄは、好ましくは、マルチプロセッサ１００Ａからデータを取得しようとしている他のマルチプロセッサ１００によって行われる、マルチプロセッサ１００Ａへのデータ要求の全てを支援する。
【００３６】
以下に本明細書で説明している１つ以上の特徴を実行するのに適した、マルチプロセッサシステムのための好ましいコンピュータアーキテクチャを説明する。１つ以上の実施形態によれば、マルチプロセッサシステムは、ゲームシステム、家庭用端末、ＰＣシステム、サーバシステム、およびワークステーションなどのメディアを多用したアプリケーションを、スタンドアロン処理、および／または分散処理するために動作することができる、シングルチップソリューションとして実装されうる。ゲームシステムや家庭用端末などのアプリケーションのなかには、リアルタイムの演算処理が必須なものがある。例えば、リアルタイムの分散ゲームアプリケーションでは、ユーザーにリアルタイムの経験をしていると思わせる程速く、１つ以上のネットワーク化された画像の復元、三次元コンピュータグラフィック、オーディオ生成、ネットワーク通信、物理的シミュレーション、および人工知能処理が実行される必要がある。したがって、マルチプロセッサシステムの各プロセッサは、短時間で、かつ予測可能時間でタスクを完了する必要がある。
【００３７】
このために、本コンピュータアーキテクチャによれば、マルチプロセッシングコンピュータシステムの全プロセッサは、共通の演算モジュール（あるいはセル）から構成される。この共通の演算モジュールは、構造が一貫しており、また好ましくは、同じ命令セットアーキテクチャを採用している。マルチプロセッシングコンピュータシステムは、１つ以上のクライアント、サーバ、ＰＣ、モバイルコンピュータ、ゲームマシン、ＰＤＡ、セットトップボックス、電気器具、デジタルテレビ、およびコンピュータプロセッサを使用する他のデバイスから形成されうる。
【００３８】
複数のコンピュータシステムもまた、所望に応じてネットワークのメンバーとなりうる。一貫したモジュール構造により、マルチプロセッシングコンピュータシステムによるアプリケーションおよびデータの効率的な高速処理が可能になる。またネットワークが採用される場合は、ネットワークを介したアプリケーションおよびデータの高速送信が可能となる。また、この構造は、サイズや処理能力が様々に異なるネットワークのメンバーの構築を簡略にし、これらのメンバーが処理するアプリケーションの準備を簡略にする。
【００３９】
図６を参照すると、基本的な処理モジュールはプロセッサエレメント（ＰＥ）５００である。ＰＥ５００はＩ／Ｏインタフェース５０２、プロセッシングユニット（ＰＵ）５０４、および複数のサブプロセッシングユニット５０８、すなわち、サブプロセッシングユニット５０８Ａ、サブプロセッシングユニット５０８Ｂ、サブプロセッシングユニット５０８Ｃ、およびサブプロセッシングユニット５０８Ｄを備えている。なお、好適には、ＰＵとしてパワーＰＣ（ＰＰＥ: Power PC Element）を、ＳＰＵとしてシナジスティックプロセッシングエレメント（ＳＰＥ: Synergistic Processing Element）を用いる。ローカル（あるいは内部）ＰＥバス５１２は、データおよびアプリケーションを、ＰＵ５０４、サブプロセッシングユニット５０８、およびメモリインタフェース５１１間に送信する。ローカルＰＥバス５１２は、例えば従来のアーキテクチャを備えることができ、または、パケット−スイッチネットワークとして実装されうる。パケットスイッチネットワークとして実装される場合は、更なるハードウェアが必要であるものの、利用可能な帯域幅を増やす。
【００４０】
ＰＥ５００はデジタル論理回路を実装するために様々な方法を用いて構成されうる。しかし、好ましくは、ＰＥ５００はＳＯＩ基板を用いた集積回路として構成でき、あるいは、シリコン基板に相補性金属酸化膜半導体（ＣＭＯＳ：Complementary Metal Oxide Semiconductor）を用いた単一の集積回路とすることも好適な構成である。基板の他の材料には、ガリウムヒ素、ガリウムアルミ二ウムヒ素、および、様々なドーパントを採用している他の、いわゆる、ＩＩＩ−Ｂ化合物を含む。また、ＰＥ５００は、高速単一磁束量子（ＲＳＦＱ：Rapid Single-flux-Quantum）論理回路などの超電導デバイスを用いて実装されうる。
【００４１】
ＰＥ５００は高帯域のメモリ接続５１６を介して、共有（メイン）メモリ５１４と密接に結合するよう構成できる。なお、メモリ５１４をオンチップ化してもよい。好ましくは、メモリ５１４はダイナミックランダムアクセスメモリ（ＤＲＡＭ：Dynamic Random Access Memory）であるが、メモリ５１４は例えば、スタティックランダムアクセスメモリ（ＳＲＡＭ：Static Random Access Memory）、磁気ランダムアクセスメモリ（ＭＲＡＭ：Magnetic Random Access Memory）、光メモリ、ホログラフィックメモリなどとして、他の方法を用いて実装されうる。
【００４２】
ＰＵ５０４とサブプロセッシングユニット５０８は好ましくは、それぞれダイレクトメモリアクセス（ＤＭＡ）の機能を備えたメモリフローコントローラ（ＭＦＣ：Memory Flow Controller）と結合されており、当該コントローラはメモリインタフェース５１１と共に、ＰＥ５００のＤＲＡＭ５１４とサブプロセッシングユニット５０８、ＰＵ５０４間のデータ転送を支援する。ＤＭＡＣおよび／またはメモリインタフェース５１１は、サブプロセッシングユニット５０８およびＰＵ５０４からみて、一体化されて配置されても、または別個に配置されてもよい。実際、ＤＭＡＣの機能および／またはメモリインタフェース５１１の機能は、１つ以上の（好ましくは全ての）サブプロセッシングユニット５０８およびＰＵ５０４に統合することができる。また、ＤＲＡＭ５１４はＰＥ５００と統合されていても、別個に配置されていてもよいことに留意されたい。例えば、ＤＲＡＭ５１４は、図示しているように、チップ外に配置しても、あるいは一体化してオンチップ配置としてもよい。
【００４３】
ＰＵ５０４はデータおよびアプリケーションをスタンドアロン処理できる標準プロセッサなどでありうる。作動時、ＰＵ５０４は、好ましくは、サブプロセッシングユニットによるデータおよびアプリケーション処理をスケジューリングし、調整を行う。サブプロセッシングユニットは好ましくは、単一命令複数データ（ＳＩＭＤ：Single Instruction Multiple Data）プロセッサである。ＰＵ５０４の管理下、サブプロセッシングユニットは並列で、かつ独立して、これらのデータおよびアプリケーション処理を行う。ＰＵ５０４は好ましくは、ＲＩＳＣ（Reduced Instruction Set Computing）技術を採用しているマイクロプロセッサアーキテクチャであるパワーＰＣ（ＰｏｗｅｒＰＣ）コアを用いて実装される。ＲＩＳＣは、単純な命令の組合せを用いて、より複雑な命令を実行する。したがって、プロセッサのタイミングは、単純で高速の動作に基づくものであり、マイクロプロセッサがより多くの命令を所定のクロック速度で実行できるようにする。
【００４４】
ＰＵ５０４は、サブプロセッシングユニット５０８による、データおよびアプリケーションの処理をスケジューリングし調整を行う、メインプロセッシングユニットの役割を果たしている、サブプロセッシングユニット５０８のうちの１つのサブプロセッシングユニットにより実装されてもよい点に留意されたい。更に、プロセッサエレメント５００内には１つ以上の実装されたＰＵが存在しうる。
【００４５】
本モジュール構造によれば、特定のコンピュータシステムが採用するＰＥ５００の数は、そのシステムが要求する処理能力に基づく。例えば、サーバにおけるＰＥ５００の数は４、ワークステーションにおけるＰＥ５００の数は２、ＰＤＡにおけるＰＥ５００の数は１とすることができる。特定のソフトウェアセルの処理に割当てられるＰＥ５００のサブプロセッシングユニット数は、セル内のプログラムやデータの複雑度や規模により決定される。
【００４６】
図７は、サブプロセッシングユニット（ＳＰＵ）５０８の好ましい構造および機能を示す。ＳＰＵ５０８アーキテクチャは好ましくは、多目的プロセッサ（平均して高性能を広範なアプリケーションに実現するように設計されているもの）と、特殊目的プロセッサ（高性能を単一のアプリケーションに実現するように設計されているもの）間の間隙を埋める。ＳＰＵ５０８は、ゲームアプリケーション、メディアアプリケーション、ブロードバンドシステムなどに高性能を実現するように、また、リアルタイムアプリケーションのプログラマに高度な制御を提供するように設計される。ＳＰＵ５０８は、グラフィックジオメトリパイプライン、サーフェースサブディビジョン、高速フーリエ変換、画像処理キーワード、ストリーム処理、ＭＰＥＧのエンコード／デコード、暗号化、復号化、デバイスドライバの拡張、モデリング、ゲームの物理学、コンテンツ制作、音響合成および処理が可能である。
【００４７】
サブプロセッシングユニット５０８は、ＳＰＵコア５１０Ａおよびメモリフローコントローラ（ＭＦＣ）５１０Ｂの２つの基本機能ユニットを有する。ＳＰＵコア５１０Ａはプログラムの実行、データ操作などを行い、ＭＦＣ５１０ＢはシステムのＳＰＵコア５１０ＡとＤＲＡＭ５１４の間のデータ転送に関連する機能を実施する。
【００４８】
ＳＰＵコア５１０Ａはローカルメモリ５５０、命令ユニット（ＩＵ：Instruction Unit）５５２、レジスタ５５４、１つ以上の浮動小数点実行ステージ５５６、および１つ以上の固定小数点実行ステージ５５８を有している。ローカルメモリ５５０は好ましくは、ＳＲＡＭなどの、シングルポートのランダムメモリアクセスを用いて実装される。ほとんどのプロセッサはキャッシュの採用により、メモリへのレイテンシを低減する一方、ＳＰＵコア５１０Ａはキャッシュより小さいローカルメモリ５５０を実装している。更に、リアルタイムアプリケーション（および本明細書に述べているような他のアプリケーション）のプログラマに一貫した、予測可能なメモリアクセスのレイテンシを提供するためには、ＳＰＵ５０８Ａ内のキャッシュメモリアーキテクチャは好ましくない。キャッシュメモリのキャッシュヒット／ミスという特徴のために、数サイクルから数百サイクルまでの、予測困難なメモリアクセス時間が生じる。そのような予測困難性により、例えばリアルタイムアプリケーションのプログラミングに望ましい、アクセス時間の予測可能性が低下する。ＤＭＡ転送をデータの演算処理に重複させることで、ローカルメモリＳＲＡＭ５５０においてレイテンシの隠蔽を実現しうる。これにより、リアルタイムアプリケーションのプログラミングが制御しやすくなる。ＤＭＡの転送に関連するレイテンシと命令のオーバーヘッドが、キャッシュミスに対応するレイテンシのオーバーヘッドを超過していることから、ＤＭＡの転送サイズが十分に大きく、十分に予測可能な場合（例えば、データが必要とされる前にＤＭＡコマンドが発行される場合）に、このＳＲＡＭのローカルメモリ手法による利点が得られる。
【００４９】
サブプロセッシングユニット５０８のうちの、所定の１つのサブプロセッシングユニット上で実行しているプログラムは、ローカルアドレスを使用している関連のローカルメモリ５５０を参照する。しかし、ローカルメモリ５５０のそれぞれの場所には、システムのメモリマップ全体内に実アドレス（ＲＡ：Real Address）も割当てられる。これにより、プリビレッジソフトウェア（Privilege Software）はローカルメモリ５５０をプロセスの有効アドレス（ＥＡ：Effective Address）にマッピングする、ローカルメモリ５５０と別のローカルメモリ５５０間のＤＭＡ転送を支援する。また、ＰＵ５０４は、有効アドレスを用いてローカルメモリ５５０に直接アクセスすることができる。好ましい実施形態では、ローカルメモリ５５０は５５６キロバイトの記憶容量を有し、またレジスタ５５２の容量は１２８×１２８ビットである。
【００５０】
ＳＰＵコア５０４Ａは、好ましくは、論理命令がパイプライン式で処理される、処理パイプラインを用いて実装される。パイプラインは命令が処理される任意の数のステージに分けられうるが、一般にパイプラインは１つ以上の命令のフェッチ、命令のデコード、命令間の依存性チェック、命令の発行、および、命令の実行ステップを有している。これに関連して、ＩＵ５５２は命令バッファ、命令デコード回路、依存性チェック回路、および命令発行回路を有する。
【００５１】
命令バッファは、好ましくは、ローカルメモリ５５０と結合され、フェッチされる際に一時的に命令を格納するよう動作できる、複数のレジスタを備えている。命令バッファは好ましくは、全ての命令が１つのグループとしてレジスタから出て行く、つまり、実質的に同時に出て行くように動作する。命令バッファのサイズは任意のサイズであってもよいが、好ましくは、レジスタの２つあるいは３つ分を超えないサイズである。
【００５２】
一般に、デコード回路は命令を分解して、対応する命令の関数を実施する論理マイクロオペレーションを生成する。例えば、論理マイクロオペレーションは、算術論理演算、ローカルメモリ５５０へのロードおよびストアオペレーション、レジスタソースオペランド、および／または即値データオペランドを特定しうる。また、デコード回路は、ターゲットレジスタアドレス、構造リソース、機能ユニット、および／またはバスなど、命令がどのリソースを使用するかを示しうる。また、デコード回路は、リソースが要求される命令パイプラインステージを示す情報を与えることができる。命令デコード回路は好ましくは、命令バッファのレジスタ数に等しい数の命令を実質的に同時にデコードするように動作する。
【００５３】
依存性チェック回路は、所定の命令のオペランドがパイプラインの他の命令のオペランドに依存しているかどうかを判断するために検査を行う、デジタル論理回路を含む。その場合、所定の命令はそのような他のオペランドが（例えば、他の命令が実行を完了することを許可することにより）更新されるまで、実行すべきではない。依存性チェック回路は好ましくは、デコーダ回路１１２から同時に送られる複数の命令の依存性を判断する。
【００５４】
命令発行回路は浮動小数点実行ステージ５５６、および／または固定小数点実行ステージ５５８へ命令を発行するように動作することができる。
【００５５】
レジスタ５５４は好ましくは、１２８エントリのレジスタファイルなどの、比較的大きな統一レジスタファイルとして実装される。これにより、レジスタが足りなくなる状態を回避するためのレジスタリネーミングを必要としない、階層深くパイプライン化された高周波数での実装が可能になる。一般に、リネーミング用ハードウェアは、処理システムの面積と電力のかなりの割合を消費する。その結果、ソフトウェアのループ展開、または他のインターリーブ技術によりレイテンシがカバーされると、有利な処理が実現されうる。
【００５６】
好ましくは、ＳＰＵコア５１０Ａはスーパースカラアーキテクチャであり、これにより１つ以上の命令がクロックサイクル毎に発行される。ＳＰＵコア５１０Ａは好ましくは、命令バッファから同時に送られる命令の数、例えば２〜３命令（クロックサイクル毎に２命令あるいは３命令が発行される）に対応する程度までは、スーパースカラとして動作する。所望の処理能力に応じて、採用する浮動小数点実行ステージ５５６と固定小数点実行ステージ５５８の数が増減してもよい。好ましい実施形態では、浮動小数点実行ステージ５５６の演算速度は１秒あたり３２０億回の浮動小数点演算であり（３２ＧＦＬＯＰＳ）、固定小数点実行ステージ５５８の演算速度は１秒あたり３２０億回の演算（３２ＧＯＰＳ）である。
【００５７】
ＭＦＣ５１０Ｂは、好ましくは、バスインタフェースユニット（ＢＩＵ：Bus Interface Unit）５６４、メモリ管理ユニット（ＭＭＵ：Memory Management Unit）５６２、およびダイレクトメモリアクセスコントローラ（ＤＭＡＣ：Direct Memory Access Controller）５６０を備えている。ＤＭＡＣ５６０は例外として、ＭＦＣ５１０Ｂは好ましくは、低電力化設計とするため、ＳＰＵコア５１０Ａやバス５１２と比べて半分の周波数（半分の速度）で動作する。ＭＦＣ５１０Ｂはバス５１２からＳＰＵ５０８に入力されるデータや命令を処理するように動作することができ、ＤＭＡＣに対しアドレス変換を行い、データコヒーレンシーのためにスヌープオペレーションを提供する。ＢＩＵ５６４はバス５１２とＭＭＵ５６２およびＤＭＡＣ５６０間をインタフェースする。したがって、ＳＰＵ５０８（ＳＰＵコア５１０ＡおよびＭＦＣ５１０Ｂを含む）およびＤＭＡＣ５６０は、バス５１２と、物理的および／または論理的に接続されている。
【００５８】
ＭＭＵ５６２は、好ましくは、メモリアクセスのために、実アドレスに有効アドレスを変換するように動作することができる。例えば、ＭＭＵ５６２は、有効アドレスの上位ビットを実アドレスビットに変換しうる。しかし、下位のアドレスビットは好ましくは変換不能であり、実アドレスの生成およびメモリへのアクセス要求に使用する場合には、ともに論理的および物理的なものと考えられる。１つ以上の実施形態では、ＭＭＵ５６２は、６４ビットのメモリ管理モデルに基づいて実装され、また、４Ｋバイト、６４Ｋバイト、１Ｍバイト、および１６Ｍバイトのページサイズを有する２６４バイトの有効アドレススペースと、２５６ＭＢのセグメントサイズを提供しうる。ＭＭＵ５６２は好ましくは、ＤＭＡコマンドに対し、２６５バイトまでの仮想メモリ、２４２バイト（４テラバイト）までの物理メモリをサポートするように動作することができる。ＭＭＵ５６２のハードウェアは、８エントリのフルアソシエイティブのＳＬＢと、２５６エントリ、４ウエイのセットアソシアティブのＴＬＢと、ハードウェアＴＬＢのミスハンドリングに使用されるＴＬＢの４×４リプレースメント管理テーブル（ＲＭＴ：Replacement Management Table）とを含む。
【００５９】
ＤＭＡＣ５６０は、好ましくは、ＳＰＵコア５１０Ａや、ＰＵ５０４、および／または他のＳＰＵなどの、１つ以上の他のデバイスからのＤＭＡコマンドを管理するように動作することができる。ＤＭＡコマンドには、プットコマンド、ゲットコマンド、およびストレージ制御コマンドの３つの分類が存在する。プットコマンドは、ローカルメモリ５５０から共有メモリ５１４へデータを移動させるよう動作する。ゲットコマンドは、共有メモリ５１４からローカルメモリ５５０へデータを移動させるよう動作する。また、ストレージ制御コマンドには、ＳＬＩコマンドと同期化コマンドが含まれる。この同期化コマンドは、アトミックコマンド(atomic command)、信号送信コマンド、および専用バリアコマンドを有しうる。ＤＭＡコマンドに応答して、ＭＭＵ５６２は有効アドレスを実アドレスに変換し、実アドレスがＢＩＵ５６４に送られる。
【００６０】
ＳＰＵコア５１０Ａは、好ましくは、ＤＭＡＣ５６０内のインタフェースと通信する（ＤＭＡコマンド、ステータスなどを送る）ために、チャネルインタフェースおよびデータインタフェースを使用する。ＳＰＵコア５１０Ａはチャネルインタフェースを介して、ＤＭＡＣ５６０のＤＭＡキューへＤＭＡコマンドを送る。ＤＭＡコマンドがＤＭＡキューに入ると、そのコマンドはＤＭＡＣ５６０内の発行および完了論理により処理される。ＤＭＡコマンドに対する全てのバストランザクションが終了すると、完了信号が、チャネルインタフェースを介してＳＰＵコア５１０Ａに送られる。
【００６１】
図８はＰＵ５０４の一般的な構造および機能を示している。ＰＵ５０４は、ＰＵコア５０４Ａとメモリフローコントローラ（ＭＦＣ）５０４Ｂの２つの機能ユニットを有している。ＰＵコア５０４Ａは、プログラムの実行、データ操作、マルチプロセッサ管理機能などを実行し、ＭＦＣ５０４Ｂはシステム１００のＰＵコア５０４Ａとメモリ空間間のデータ転送に関連する機能を実行する。
【００６２】
ＰＵコア５０４ＡはＬ１キャッシュ５７０、命令ユニット５７２、レジスタ５７４、１つ以上の浮動小数点実行ステージ５７６、および１つ以上の固定小数点実行ステージ５７８を有することができる。Ｌ１キャッシュは、共有メモリ１０６、プロセッサ１０２、またはＭＦＣ５０４Ｂを介してメモリ空間の他の部分から受信したデータに対するデータキャッシングの機能を提供する。ＰＵコア５０４Ａは好ましくはスーパーパイプラインとして実装されるため、命令ユニット５７２は好ましくは、フェッチ、デコード、依存性チェック、発行などを含む、多くのステージを備えた命令パイプラインとして実装される。また、ＰＵコア５０４は好ましくは、スーパースカラ構成であり、このため、１つ以上の命令がクロックサイクル毎に命令ユニット５７２から発行される。高度な処理能力を実現するために、浮動小数点実行ステージ５７６と固定小数点実行ステージ５７８は、パイプライン構成で複数のステージを有する。所望の処理能力に応じて、採用する浮動小数点実行ステージ５５６と固定小数点実行ステージ５５８の数が増減してもよい。
【００６３】
ＭＦＣ５０４Ｂは、バスインタフェースユニット（ＢＩＵ）５８０、Ｌ２キャッシュメモリ、キャッシュ不可能なユニット（ＮＣＵ：Non-Cachable Unit）５８４、コアインタフェースユニット（ＣＩＵ：Core Interface Unit）５８６、およびメモリ管理ユニット（ＭＭＵ）５８８を備えている。ほとんどのＭＦＣ５０４Ｂは、低電力化設計とするために、ＰＵコア５０４Ａとバス１０８と比べて、半分の周波数（半分の速度）で動作する。
【００６４】
ＢＩＵ５８０はバス１０８とＬ２キャッシュ５８２とＮＣＵ５８４論理ブロック間をインタフェースする。このために、ＢＩＵ５８０はバス１０８上で、十分にコヒーレントなメモリオペレーションを実施するために、マスタデバイスとして、同様にスレーブデバイスとして機能する。ＢＩＵ５８０は、マスタデバイスとして、Ｌ２キャッシュ５８２とＮＣＵ５８４のために機能するため、バス１０８にロード／ストア要求を供給する。また、ＢＩＵ５８０は、バス１０８へ送信されうるコマンドの合計数を制限するコマンドについて、フロー制御機構を実装しうる。バス１０８のデータオペレーションは、８ビートを要するように設計され、そのため、ＢＩＵ５８０は好ましくは、１２８バイトキャッシュライン程度に設計され、コヒーレンシーと同期化の粒度単位は１２８ＫＢである。
【００６５】
Ｌ２キャッシュメモリ５８２（およびサポートハードウェア論理回路）は、好ましくは、５１２ＫＢのデータをキャッシュするように設計されている。例えば、Ｌ２キャッシュ５８２はキャッシュ可能なロード／ストア、データプリフェッチ、命令プリフェッチ、命令プリフェッチ、キャッシュオペレーション、およびバリアオペレーションを処理しうる。Ｌ２キャッシュ５８２は好ましくは８ウエイのセットアソシアティブシステムである。Ｌ２キャッシュ５８２は、６つのキャストアウトキュー（６つのＲＣマシンなど）と一致する６つのリロードキューと、８つ（６４バイト幅）のストアキューを備えうる。Ｌ２キャッシュ５８２はＬ１キャッシュ５７０において、データの一部あるいは全てのコピーをバックアップするように動作しうる。この点は、処理ノードがホットスワップである場合に状態を回復するのに有利である。この構成により、Ｌ１キャッシュ５７０が少ないポート数でより速く動作することができ、かつ、キャッシュツーキャッシュ転送がより速く行える（要求がＬ２キャッシュ５８２でストップしうるため）。また、この構成は、キャッシュコヒーレンシー管理をＬ２キャッシュメモリ５８２へ渡すための機構も提供しうる。
【００６６】
ＮＣＵ５８４は、ＣＩＵ５８６、Ｌ２キャッシュメモリ５８２、およびＢＩＵ５８０とインタフェースしており、通常は、ＰＵコア５０４Ａとメモリシステム間のキャッシュ不可能なオペレーションに対して、キューイング／バッファリング回路として機能する。ＮＣＵ５８４は好ましくは、キャッシュ抑制ロード／ストア、バリアオペレーション、およびキャッシュコヒーレンシーオペレーションなどの、Ｌ２キャッシュ５８２によって処理されないＰＵコア５０４Ａとの全ての通信を処理する。ＮＣＵ５８４は好ましくは、上述の低電力化目的を満たすように、半分の速度で動作しうる。
【００６７】
ＣＩＵ５８６は、ＭＦＣ５０４ＢとＰＵコア５０４Ａの境界に配置され、実行ステージ５７６，５７８、命令ユニット５７２、およびＭＭＵユニット５８８からの要求に対し、また、Ｌ２キャッシュ５８２およびＮＣＵ５８４への要求に対し、ルーティング、仲裁、およびフロー制御ポイントして機能する。ＰＵコア５０４ＡおよびＭＭＵ５８８は好ましくはフルスピードで実行され、Ｌ２キャッシュ５８２およびＮＣＵ５８４は２：１の速度比で動作することができる。したがって、周波数の境界がＣＩＵ５８６に存在し、その機能の１つは、２つの周波数ドメイン間で要求の送信およびデータのリロードを行いながら、周波数の差を適切に処理することである。
【００６８】
ＣＩＵ５８６は、ロードユニット、ストアユニット、およびリロードユニットの３つの機能ブロックを有している。更に、データプリフェッチ機能がＣＩＵ５８６により実施され、好ましくは、ロードユニットの機能部である。ＣＩＵ５８６は、好ましくは、
（ｉ）ＰＵコア５０４ＡおよびＭＭＵ５８８からロードおよびストア要求を受け取る。
（ｉｉ）要求を、クロック周波数をフルスピードからハーフスピードに変換する（２：１のクロック周波数変換）。
（ｉｉｉ）キャッシュ可能な要求をＬ２キャッシュ５８２に中継し、キャッシュできない要求をＮＣＵ５８４に中継する。
（ｉｖ）要求を、Ｌ２キャッシュ５８２とＮＣＵ５８４に公平に仲裁する。
（ｖ）要求が目標とするウィンドウで受信され、オーバフローが回避されるように、Ｌ２キャッシュ５８２およびＮＣＵ５８４への送信に対するフロー制御を提供する。
（ｖｉ）ロードの戻りデータを受け取り、これを、実行ステージ５７６，５７８、命令ユニット５７２またはＭＭＵ５８８に中継する。
（ｖｉｉ）スヌープ要求を、実行ステージ５７６，５７８、命令ユニット５７２またはＭＭＵ５８８に渡す。
（ｖｉｉｉ）ロードの戻りデータおよびスヌープのトラフィックを、ハーフスピードからフルスピードに変換する。
【００６９】
ＭＭＵ５８８は、好ましくはＰＵコア５４０Ａに対して、第２レベルのアドレス変換機能などによりアドレス変換を行う。第１レベルの変換は好ましくは、ＭＭＵ５８８よりも小型で高速でありうる、別々の命令およびデータＥＲＡＴ（Effective to Real Address Translation）アレイにより、ＰＵコア５０４Ａにおいて提供されうる。
【００７０】
好ましい実施形態では、ＰＵコア５０４は６４ビットの実装で、４〜６ＧＨｚ、１０Ｆ０４で動作する。レジスタは好ましくは６４ビット長（１つ以上の特殊用途のレジスタは小型でありうるが）であり、また、有効アドレスは６４ビット長である。命令ユニット５７０、レジスタ５７２、および実行ステージ５７４，５７６は好ましくは、（ＲＩＳＣ）演算技術を実現するために、ＰｏｗｅｒＰＣステージ技術を用いて実装される。
【００７１】
本コンピュータシステムのモジュール構造に関する更に詳しい詳細は、米国特許第６，５２６，４９１号明細書に記載されており、この明細書は参照により本明細書に援用される。
【００７２】
本発明の少なくとも１つの更に別の態様によれば、上述の方法および装置は、図面に図示しているような、適切なハードウェアを利用して実現されうる。この種のハードウェアは、公知の技術のいずれかを用いて実装することができる。この例には、標準的なディジタル回路、ソフトウェアプログラムおよび／またはファームウェアプログラムを実行するように動作可能な公知のプロセッサのいずれか、プログラマブル読出し専用メモリ（ＰＲＯＭ）、プログラマブルアレイロジックデバイス（ＰＡＬ）などの、１つ以上のプログラム可能なディジタル装置またはシステムなどがある。更に、図示している装置は、特定の機能ブロックに分割されて示されているが、そのようなブロックは別々の回路を用いて、および／あるいは１つ以上の機能ユニットに組み合わせて実装されうる。更に、本発明の様々な態様は、輸送および／または配布のために、[フロッピーディスク（登録商標）、メモリチップなどの]適切な記憶媒体に格納されうる、ソフトウェア、および／またはファームウェアプログラムによって実装されうる。
【００７３】
本明細書において、具体的な実施形態を用いて本発明を記載したが、これらの実施形態は、本発明の原理および利用の例を示すものに過ぎないことを理解されたい。このため、添付の請求の範囲に記載した本発明の趣旨および範囲から逸脱することなく、これら例示的な実施形態を種々に変更したり、上記以外の構成を考案し得ることが理解されよう。
【図面の簡単な説明】
【００７４】
【図１】本発明の１つ以上の態様による、ネットワークを介して相互に結合された複数のマルチプロセッサシステムのブロック図である。
【図２】本発明の１つ以上の態様により適合されうる、サブプロセッサを２つ以上有するマルチプロセシングシステムの構造を示すブロック図である。
【図３】図１〜２および／またはここに記載の他の実施形態における要素のうちの１つ以上によって実行されうる処理ステップを示す部分ブロック図および部分フローチャートである。
【図４】図２（および／またはここに記載の他の実施形態）のシステムのプロセッサの１つ以上によって使用されうるサーバテーブルの構造を示すブロック図である。
【図５】図１（および／またはここに記載の他の実施形態）のシステムのサーバによって使用されうるネットワークアドレステーブルの構造を示すブロック図である。
【図６】本発明の１つ以上の更に別の態様の実装に使用されうる好適なプロセッサエレメント（ＰＥ）を示すブロック図である。
【図７】本発明の１つ以上の更に別の態様により適合されうる、図６のシステムの例示的なサブプロセッシングユニット（ＳＰＵ）の構造を示すブロック図である。
【図８】本発明の１つ以上の更に別の態様により適合されうる、図６のシステムの例示的なプロセッシングユニット（ＰＵ）の構造を示すブロック図である。
【図１】
2009503624.tif 000003
【図２】
2009503624.tif 000004
【図３】
2009503624.tif 000005
【図４】
2009503624.tif 000006
【図５】
2009503624.tif 000007
【図６】
2009503624.tif 000008
【図７】
2009503624.tif 000009
【図８】
2009503624.tif 000010
【国際調査報告】
2009503624.tif 000011
2009503624.tif 000012