(57)【要約】【課題】異種の命令セットアーキテクチャ（ＩＳＡ）間でソフトウェアプログラムの移植を行うための方法及びそのための装置を提供する。【解決手段】方法及び装置は、マルチプロセッサシステムのプロセッサのセットのうちの１つ以上のプロセッサを使用して、ソフトウェアプログラムを第１の命令セットアーキテクチャ（ＩＳＡ）から第２のＩＳＡにページ単位で変換し、前記マルチプロセッサシステムその他の専用のプロセッサを使用して前記変換されたソフトウェアプログラムを実行する。【選択図】図１
2006221643.tif 000002
【特許請求の範囲】
【請求項１】
マルチプロセッサシステムの少なくとも１つのプロセッサを使用して、第１の命令セットアーキテクチャにより記述されたソフトウェアプログラムの少なくとも一部を第２の命令セットアーキテクチャに変換するステップと、
前記マルチプロセッサシステムの少なくとも１つの別のプロセッサを使用してソフトウェアプログラムの前記少なくとも一部を実行するステップと、を有することを特徴とするデータ処理方法。
【請求項２】
前記マルチプロセッサシステムは、前記第１の命令セットアーキテクチャでなく前記第２の命令セットアーキテクチャにより記述されたプログラムを実行するように動作可能であることを特徴とする請求項１に記載のデータ処理方法。
【請求項３】
前記少なくとも１つのプロセッサを使用して前記ソフトウェアプログラムの１ページ以上を一度に変換するステップを有することを特徴とする請求項１又は２に記載のデータ処理方法。
【請求項４】
少なくとも１つの更に別のプロセッサを使用して前記ソフトウェアプログラムの更に別の１ページ以上を変換するステップを有することを特徴とする請求項３に記載のデータ処理方法。
【請求項５】
前記ソフトウェアプログラムの前記１ページ以上が、前記ソフトウェアプログラムの更に別の１ページ以上への分岐を有する場合に、少なくとも１つの更に別のプロセッサを使用して前記ソフトウェアプログラムの前記更に別の１ページ以上を変換するステップを有することを特徴とする請求項３に記載のデータ処理方法。
【請求項６】
前記ソフトウェアプログラムのいずれかのページが、前記ソフトウェアプログラムがなお更に別の１ページ以上への分岐を有する場合に、利用可能な少なくとも１つのプロセッサを使用して前記ソフトウェアプログラムの前記なお更に別の１ページ以上を変換するステップを有することを特徴とする請求項５に記載のデータ処理方法。
【請求項７】
前記ソフトウェアプログラムの全ページが変換されるまで、前述したステップを繰り返すことを特徴とする請求項６に記載のデータ処理方法。
【請求項８】
前記マルチプロセッサシステムの別の１つのプロセッサのみを使用してソフトウェアプログラムの前記少なくとも一部を実行するステップを有することを特徴とする請求項１〜７のいずれかの項に記載のデータ処理方法。
【請求項９】
マルチプロセッサシステムのプロセッサのセットとなるプロセッサのうちの１つ以上のプロセッサを使用して、ソフトウェアプログラムを第１の命令セットアーキテクチャから第２の命令セットアーキテクチャにページ単位で変換するステップと、
前記マルチプロセッサシステムの別の専用のプロセッサを使用して前記変換されたソフトウェアプログラムを実行するステップと、を有することを特徴とするデータ処理方法。
【請求項１０】
前記変換するステップは、
前記セットとなるプロセッサのうちの第１のプロセッサを使用して前記ソフトウェアプログラムの第１のページを変換するステップと、
前記第１のページが前記ソフトウェアプログラムの第２のページへの分岐命令を有する場合に、前記セットとなるプロセッサのうち第２のプロセッサを使用して前記第２のページを変換するステップと、を有することを特徴とする請求項９に記載のデータ処理方法。
【請求項１１】
前記セットとなるプロセッサのうち前記第１のプロセッサが前記ソフトウェアプログラムの前記第１のページの変換を完了したら、前記第１のプロセッサを使用して前記ソフトウェアプログラムの別のページを変換するステップを更に有することを特徴とする請求項１０に記載のデータ処理方法。
【請求項１２】
前記ソフトウェアプログラムの全ページが変換されるまで、前述したステップを繰り返すことを特徴とする請求項１０に記載のデータ処理方法。
【請求項１３】
メインメモリと機能的に接続可能な複数のプロセッサと、
前記プロセッサの各々に結合されたそれぞれのローカルメモリと、を有し、
前記プロセッサのうちの１つ以上のプロセッサは、第１の命令セットアーキテクチャにより記述されたソフトウェアプログラムを第２の命令セットアーキテクチャに変換するように動作可能であり、前記プロセッサのうちの１つ以上の別のプロセッサは、前記ソフトウェアプログラムを実行するように動作可能であることを特徴とするデータ処理装置。
【請求項１４】
前記プロセッサの前記１つ以上の別のプロセッサは、前記第１の命令セットアーキテクチャでなく前記第２の命令セットアーキテクチャにより記述されたプログラムを実行するように動作可能であることを特徴とする請求項１３に記載のデータ処理装置。
【請求項１５】
前記１つ以上のプロセッサは、前記ソフトウェアプログラムをページ単位で変換するように動作可能であることを特徴とする請求項１３又は１４に記載のデータ処理装置。
【請求項１６】
前記１つ以上のプロセッサは、プロセッサのセットとして、
前記セットとなるプロセッサのうち第１のプロセッサを使用して前記ソフトウェアプログラムの第１のページを変換し、
前記第１のページが前記ソフトウェアプログラムの第２のページへの分岐命令を有する場合に、前記セットとなるプロセッサのうち第２のプロセッサを使用して前記第２のページを変換するように動作可能であることを特徴とする請求項１５に記載のデータ処理装置。
【請求項１７】
前記プロセッサのセットは、前記セットとなるプロセッサのうち前記第１のプロセッサが前記ソフトウェアプログラムの前記第１のページの変換を完了したら、前記第１のプロセッサを使用して前記ソフトウェアプログラムの別のページを変換するように動作可能であることを特徴とする請求項１６に記載のデータ処理装置。
【請求項１８】
前記プロセッサのセットは、前記ソフトウェアプログラムの全ページが変換されるまで、前述したアクションを繰り返すように動作可能であることを特徴とする請求項１７に記載のデータ処理装置。
【請求項１９】
前記ローカルメモリはハードウェアキャッシュメモリではないことを特徴とする請求項１３〜１８に記載のデータ処理装置。
【請求項２０】
各プロセッサは自身のローカルメモリ内でプログラムを実行することができるが、各プロセッサは前記メインメモリ内でプログラムを実行することができないことを特徴とする請求項１９に記載のデータ処理装置。
【請求項２１】
前記プロセッサ及び関連するローカルメモリが共通の半導体基板に配置されていることを特徴とする請求項１３〜１８に記載のデータ処理装置。
【請求項２２】
前記プロセッサ、関連するローカルメモリ及び前記メインメモリが共通の半導体基板に配置されていることを特徴とする請求項１３〜１８に記載のデータ処理装置。
【請求項２３】
メインメモリと機能的に接続可能な複数のプロセッサと、
前記プロセッサの各々に結合されたそれぞれのローカルメモリと、を有し、
前記プロセッサのうちの１つ以上のプロセッサは、第１の命令セットアーキテクチャにより記述されたソフトウェアプログラムを第２の命令セットアーキテクチャに変換するように動作可能であり、前記プロセッサのうちの１つ以上の別のプロセッサは、前記ソフトウェアプログラムを実行するように動作可能であることを特徴とするデータ処理システム。
【請求項２４】
マルチプロセッサシステムに、
前記マルチプロセッサシステムのセットとなるプロセッサのうちの１つ以上のプロセッサを使用して、ソフトウェアプログラムを第１の命令セットアーキテクチャから第２の命令セットアーキテクチャにページ単位で変換するステップと、
前記マルチプロセッサシステムの別の専用のプロセッサを使用して前記変換されたソフトウェアプログラムを実行するステップと、を有するアクションをマルチプロセッサシステムに実行させることを特徴とするコンピュータプログラム。
【請求項２５】
前記変換するステップは、
前記セットとなるプロセッサのうち第１のプロセッサを使用して前記ソフトウェアプログラムの第１のページを変換するステップと、
前記第１のページが前記ソフトウェアプログラムの第２のページへの分岐命令を有する場合に、前記セットとなるプロセッサのうち第２のプロセッサを使用して前記第２のページを変換するステップと、を有することを特徴とする請求項２４に記載のプログラム。
【請求項２６】
前記セットとなるプロセッサのうち前記第１のプロセッサが前記ソフトウェアプログラムの前記第１のページの変換を完了したら、前記第１のプロセッサを使用して前記ソフトウェアプログラムの別のページを変換するステップを更に有することを特徴とする請求項２５に記載のプログラム。
【請求項２７】
前記ソフトウェアプログラムの全ページが変換されるまで、前述したステップを繰り返すことを特徴とする請求項２６に記載のプログラム。
【請求項２８】
請求項２４〜２７のいずれかの項に記載のプログラムが記録されたことを特徴とするコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッシングシステム内でデータを移行するための方法、装置及びシステムに関する。
【背景技術】
【０００２】
最先端のコンピュータアプリケーションは、リアルタイムのマルチメディア機能を伴っているために、近年はデータスループットが高くより高速なコンピュータが常に望まれている。グラフィックアプリケーションは処理システムへの要求が大きいアプリケーションの１つであり、その理由は、グラフィックアプリケーションが所望のビジュアル結果を実現するために、比較的短時間で非常に多くのデータアクセス、データの演算処理、及びデータ操作を要求するからである。これらのアプリケーションは、１秒間に数千メガビットのデータ処理等の非常に高速な処理速度を要求する。シングルプロセッサを採用し、高速の処理速度を実現している処理システムもある一方で、マルチプロセッサアーキテクチャを利用して実装されている処理システムもある。マルチプロセッサシステムでは、複数のプロセッサが並列に（あるいは少なくとも協調して）動作し、所望の処理結果を実現することができる。
【０００３】
一部のマルチプロセッシングシステムでは、各プロセッサが、プログラムコードを実行するために（大きなランダムアクセスメモリ（ＲＡＭ）ではなく）比較的少ないローカルメモリを使用することがある。大きなＲＡＭ（メインメモリ又はシステムメモリ）は、大容量記憶装置として用いられうる。また、プロセッサは、ダイレクトメモリアクセス（ＤＭＡ）技術を使用して、メインメモリから各々のローカルメモリにデータを転送することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
第１の命令セットアーキテクチャ（ＩＳＡ）を使用して記述されたプログラムを、第２のＩＳＡを実行するように設計された処理システムで実行することが望まれる場合がある。例えば、前述のマルチプロセッサシステムにおいて、複数のプロセッサが、例えば、Ｐｏｗｅｒ  ＰＣ  ＩＳＡで記述されたプログラムを実行するように動作可能でありえる。別のＩＳＡ（例えばＩＡ３２、ＩＡ６４等）を使用して記述されたプログラムを実行するには、ＰｏｗｅｒＰＣでの変換及びコンパイルが必要となる。変換／コンパイルを実行するための従来技術は、少なくともマルチプロセッサ環境については満足できるものではない。
【課題を解決するための手段】
【０００５】
本発明の態様は、マルチプロセッサシステムのプロセッサのうちの少なくとも１つを、変換されてコンパイルされたコードを実行する実行プロセッサとして使用することを考察する。他のプロセッサ（又はそのサブセット）は、変換／コンパイル（ＴＣ）プロセッサとして使用されうる。ＴＣプロセッサのうちの第１のプロセッサが、好ましくは、元のプログラムの第１のページ（例えば、ローカルメモリに記憶できるサイズのページ）の変換及びコンパイルを開始する。ある分岐が、プログラムの別のページに関係している場合、次のプロセッサが、そのページの変換及びコンパイルを開始する。このシーケンスは、関与している全てのＴＣプロセッサが使用中となるか、あるいは変換とコンパイルが完了するまで続く。第１のページの変換及びコンパイルが完了すると、実行プロセッサはプログラムの実行を開始し、ページが利用不能となるか、あるいはプログラムの実行が完了するまで実行を続ける。
【０００６】
本発明の１つ以上の実施形態によれば、方法及び装置は、マルチプロセッサシステムのプロセッサの組、あるいはセットとなるプロセッサ、のうちの１つ以上のプロセッサを使用して、ソフトウェアプログラムを第１の命令セットアーキテクチャ（ＩＳＡ）から第２のＩＳＡにページ単位で変換し、前記マルチプロセッサシステムその他の専用のプロセッサを使用して前記変換されたソフトウェアプログラムを実行する。
【０００７】
前記変換するステップは、前記組の第１のプロセッサを使用して前記ソフトウェアプログラムの第１のページを変換するステップと、前記第１のページが前記ソフトウェアプログラムの第２のページへの分岐命令を有する場合に、前記組の第２のプロセッサを使用して前記第２のページを変換するステップと、を有しうる。前記方法及び装置は、更に、前記組の前記第１のプロセッサが前記ソフトウェアプログラムの前記第１のページの変換を完了したら、前記第１のプロセッサを使用して前記ソフトウェアプログラムの別のページを変換しうる。
【０００８】
前記アクションは、前記ソフトウェアプログラムの全ページが変換されるまで好ましくは繰り返される。
【０００９】
好ましくは、前記プロセッサのうちの１つ以上のプロセッサは前記ソフトウェアプログラムの変換専用とされ、前記プロセッサのうちの１つ以上の別のプロセッサは前記ソフトウェアプログラムの実行専用とされる。
【発明の効果】
【００１０】
添付の図面を参照しつつ、ここに記載する本発明の説明を読めば、他の態様、特徴及び利点等は当業者に自明となるであろう。
【発明を実施するための最良の形態】
【００１１】
本発明を説明するために、現在の好ましい形態を図面の形式に示すが、本発明は図示したとおりの構成ならびに手段に限定されないことを理解されたい。
【００１２】
図面を参照すると、同一の要素は同じ参照符号によって参照される。図１に、本発明の１つ以上の特徴を実行するために適しうる処理システム１００を例示する。簡潔を期すと共に明確になるように、図１のブロック図を装置１００を例示するものとして本明細書において参照かつ記載する。しかし、この記載は同等の効力を有する方法のさまざまな態様に容易に適用できることを理解されたい。
【００１３】
図１は、ここに記載した特徴及び発明の１つ以上の更なる実施形態を実装するのに適しうるマルチプロセッシングシステム１００のブロック図である。システム１００は、複数のプロセッサ１０２Ａ〜Ｄ、関連するローカルメモリ１０４Ａ〜Ｄ、及び共有メモリ１０６を備え、これらはバス１０８によって相互に接続されている。共有メモリ１０６は、本明細書において、メインメモリ又はシステムメモリとも呼ばれることがある。例示のため４つのプロセッサ１０２を示したが、本発明の趣旨及び範囲から逸脱することなく、任意の個数のプロセッサを使用することができる。各プロセッサ１０２は構成が同じであっても、構成が異っていてもよい。
【００１４】
プロセッサ１０２は、システムメモリ１０６からデータを要求し、このデータを操作して所望の結果を得ることができる公知の技術であればいずれを利用しても実装することができる。例えば、プロセッサ１０２は、通常のマイクロプロセッサ、分散型マイクロプロセッサなど、ソフトウェア及び／又はファームウェアを実行することができる公知のマイクロプロセッサのいずれかを利用して実装することができる。例えば、プロセッサ１０２の１つ以上は、グレースケール情報、色情報、テクスチャデータ、ポリゴン情報、ビデオフレーム情報等を含むピクセルデータなどのデータを要求して操作することができるグラフィックプロセッサであり得る。
【００１５】
ローカルメモリ１０４は、好ましくは、対応するプロセッサ１０２と同じチップ（同じ半導体基板）に配置される。しかし、ローカルメモリ１０４は、ハードウェアキャッシュメモリ機能を実装するためのオンチップ又はオフチップのハードウェアキャッシュ回路、キャッシュレジスタ、キャッシュメモリコントローラなどが存在しないという点で、好ましくは従来のハードウェアキャッシュメモリでない。チップ上のスペースには限りがある場合があるため、ローカルメモリ１０４はシステムメモリ１０６よりも相当サイズが小さいことがある。
【００１６】
プロセッサ１０２は、好ましくは、プログラムを実行したりデータを操作するために、バス１０８経由でシステムメモリ１０６から対応するローカルメモリ１０４にデータ（プログラムデータを含みうる）をコピーするため、データアクセスリクエストを出す。データアクセスを容易にするためのメカニズムは、好ましくはダイレクトメモリアクセスコントローラ（ＤＭＡＣ）（図示せず）を使用して実装され、このメカニズムは、プロセッサ１０２の内部に配置されても、外部に配置されてもよい。
【００１７】
システムメモリ１０６は、好ましくは高帯域メモリ接続（図示せず）を介してプロセッサ１０２に結合されたダイナミックランダムアクセスメモリ（ＤＲＡＭ）である。好ましくは、システムメモリ１０６はＤＲＡＭであるが、システムメモリ１０６は例えば、スタティックランダムアクセスメモリ（ＳＲＡＭ：Static Random Access Memory）、磁気ランダムアクセスメモリ（ＭＲＡＭ：Magnetic Random Access Memory）、光メモリ、ホログラフィックメモリなどとして、他の方法を用いて実装されうる。
【００１８】
各プロセッサ１０２は、好ましくは、論理命令がパイプライン式で処理される、プロセッシングパイプラインを用いて実装される。パイプラインは命令が処理される任意の数のステージに分けられうるが、一般にパイプラインは１つ以上の命令のフェッチ、命令のデコード、命令間の依存性チェック、命令の発行、及び、命令の実行ステップを有している。これに関連して、プロセッサ１０２は命令バッファ、命令デコード回路、依存性チェック回路、及び命令発行回路、を有する。
【００１９】
１つ以上の実施形態では、プロセッサ１０２とローカルメモリ１０４は共通の半導体基板に配置されうる。１つ以上の更なる実施形態では、共有メモリ１０６も共通の半導体基板に配置されていても、別個に配置されていてもよい。
【００２０】
１つ以上の別の実施形態では、プロセッサ１０２の１つ以上が、メインプロセッサとして動作し、他のプロセッサに動作可能に結合されており、バス１０８経由で共有メモリ１０６に結合可能でありうる。メインプロセッサは、他のプロセッサによるデータの処理をスケジューリングし調整を行う。しかし、他のプロセッサ１０２と異なり、メインプロセッサは、共有メモリ１０６とプロセッサ１０２の１つ以上のローカルメモリ１０４との少なくとも一方から取得したデータをキャッシュすることができるハードウェアキャッシュメモリに結合されてもよい。メインプロセッサは、プログラムを実行したりデータを操作するために、ＤＭＡ法などの公知の技術のいずれかを使用して、バス１０８経由でシステムメモリ１０６からキャッシュメモリにデータ（プログラムデータを含みうる）をコピーするため、データアクセスリクエストを出す。
【００２１】
本発明の１つ以上の実施形態によれば、プロセッサ１０２は、メインメモリ１０６からローカルメモリ１０４に実行可能コードをコピーすることにより、第１のＩＳＡ（Ｐｏｗｅｒ  ＰＣなど）で記述されたソフトウェアプログラムを実行し、各ローカルメモリ１０４内でそのソフトウェアプログラムを実行しうる。ローカルメモリ１０４は比較的小容量（２５６ＫＢなど）であるため、（ソフトウェアプログラム全体ではなく）プログラムの一部と、関連するデータをローカルメモリ１０４にコピーさせて、実行させることが望ましいことがある。更に、システム１００は、プロセッサ１０２が別のＩＳＡ（ＩＡ６４など）で記述されたソフトウェアプログラムも実行できるように、このようなプログラムを第１のＩＳＡに変換してコンパイルするように動作可能である。
【００２２】
次に図２を参照すると、図１（又はここに記載のその他の実施形態）の処理システム１００によって実行されうるプロセスステップを例示しているフローチャートである。図２は、多数のプロセッサのステップ（processor step）を有する処理ルーチン２００である。本発明の１つ以上の実施形態によれば、処理システム１００は、好ましくは、第１の命令セットアーキテクチャ（ＩＳＡ）により記述されたソフトウェアプログラムを、第２のＩＳＡに変換するように動作可能である。その後、変換されたソフトウェアプログラムは、第２のＩＳＡに従って、プロセッサ１０２の１つ以上によって実行される。例えば、プロセッサ１０２は、第１のＩＳＡでなく第２のＩＳＡで記述されたプログラムを実行するように動作可能であることが考察される。例として、プロセッサ１０２は、Ｐｏｗｅｒ  ＰＣ  ＩＳＡで記述されたソフトウェアプログラムを実行するように動作可能でありえる。しかし、このソフトウェアプログラムは、元々はＩＡ６４などの別のＩＳＡで記述されていたものでありえる。
【００２３】
好ましくは、１つ以上のプロセッサ１０２は、ソフトウェアプログラムを第１のＩＳＡから第２のＩＳＡに変換するように動作可能であり、１つ以上のその他のプロセッサ１０２は、この変換されたソフトウェアプログラムを実行するように動作可能である。ソフトウェアプログラムを変換する１つ以上のプロセッサ１０２はこの機能のみを行い、変換されたソフトウェアプログラムを実行する１つ以上のプロセッサ１０２は、この機能のみを行うことが好ましい。
【００２４】
ソフトウェアプログラムを第１のＩＳＡから第２のＩＳＡに変換する１つ以上のプロセッサ１０２は、好ましくは、ソフトウェアプログラムの各部分を取得し、処理ルーチンに従って当該部分を変換することによって、この機能を実行するように動作可能である。適切なルーチンの一例が、図２のルーチン２００である。ルーチン２００は、図１のマルチプロセッサシステム１００のプロセッサ１０２の組のうちの１つ以上のプロセッサを使用してソフトウェアプログラムを、第１のＩＳＡから第２のＩＳＡにページ単位で変換する。アクション２０２において、組のプロセッサ１０２のうちの利用可能なプロセッサによって、ソフトウェアプログラムの次のページの変換が開始される。アクション２０４において、１つ以上のイベントにより更なるアクションが始動されるまで、変換が続行される。例えば、アクション２０６において、好ましくは所定のページの変換が完了したかどうかが判定される。この判定の結果が「Ｎ」の場合、処理フローは好ましくはアクション２０４に戻り、所定のページの変換が続行される。一方、アクション２０６における判定の結果が「Ｙ」の場合、プロセスフローは好ましくはアクション２０２に戻り、プログラムの次のページの変換が開始される。例えば、組の第１のプロセッサ１０２が、ソフトウェアプログラムの第１のページを適切なＩＳＡに変換し、この変換が完了した（アクション２０６における判定が「Ｙ」である）場合、この第１のプロセッサ１０２又はプロセッサ１０２のうちの別のプロセッサが、ソフトウェアプログラムの第２のページの変換を開始しうる（アクション２０２）。
【００２５】
ルーチン２００のアクションを始動できる別のイベントには、ソフトウェアプログラムの分岐命令の変換がある。これに関連して、アクション２０８において、好ましくは、分岐アドレスがソフトウェアプログラムの別のページのアドレスであるかどうかが判定される。アクション２０８における判定の結果が「Ｎ」の場合、処理フローは好ましくはアクション２０４に戻り、変換が続行される。一方、アクション２０８における判定の結果が「Ｙ」の場合、処理フローは好ましくはアクション２０２に戻り、プロセッサのフローは好ましくはアクション２０２に戻り、プログラムの別のページの変換が開始される。より詳細には、ソフトウェアプログラムのこの次のページの変換は、分岐命令がアドレス指定しているページ（アクション２０８で決定された）が対象となる。好ましくは、プロセッサ１０２のうちの別のプロセッサが、ソフトウェアプログラムのこの新しいページを変換するタスクを実行する。
【００２６】
図２の変換ルーチン２００は、好ましくは必要に応じて繰り返され、ソフトウェアプログラムの各ページが変換される。図３を参照すると、ソフトウェアプログラムの複数のページを変換するためにルーチン２００が使用されうる方法の一例が例示される。最初に、ソフトウェアプログラムの第１のページが、システム１００の第１のプロセッサ１０２によって変換されうる。この変換の間、２つの分岐命令がみつかり、これらの分岐命令は、ページ１Ａ，１Ｂなど、ソフトウェアプログラムの別のページをアドレス指定しているとする。これを受けて、好ましくはプロセッサ１０２のうちの別の１つ以上のプロセッサが、第１のプロセッサ１０２がソフトウェアプログラムのページ１の変換を続行している間に、この別のページの変換を行うように動作可能である。
【００２７】
ある時点で、第１のプロセッサはソフトウェアプログラムのページ１の変換を完了し、このプロセッサ（又は別の変換プロセッサ１０２の１つ以上）が、ソフトウェアプログラムのページ２の変換を開始する。ソフトウェアプログラムのページ１と同様に、ソフトウェアプログラムのページ２は、ページ２Ａ，２Ｂ，２Ｃなど、ソフトウェアプログラムの別のページをアドレス指定している分岐命令を多数含みうる。システム１００の利用可能なプロセッサ１０２の１つ以上が、ソフトウェアプログラムのこれらの新しいページの変換を開始しうる。変換の実行に利用可能なプロセッサが存在する限り、ページ２Ａ，２Ｂ，２Ｃの変換は、ページ２又はソフトウェアプログラムのほかのページの変換と同時に実行されうる点に留意されたい。変換を実行するためのプロセッサが、ソフトウェアプログラムの別のページの変換に既に使用されているなどの理由により利用できない場合、ソフトウェアプログラムの新しいページを変換するタスクが一時的に保留にされうる。その後、利用可能なプロセッサ１０２が生じると、このプロセッサは、待機中のページを変換するタスクを開始しうる。この処理は、好ましくは、ソフトウェアプログラムの全てのページが変換されて、実行可能となるまで繰り返される。
【００２８】
以下に本明細書で説明している１つ以上の特徴を実行するのに適した、マルチプロセッサシステムのための好ましいコンピュータアーキテクチャを説明する。１つ以上の実施形態によれば、マルチプロセッサシステムは、ゲームシステム、家庭用端末、ＰＣシステム、サーバーシステム、及びワークステーションなどのメディアリッチアプリケーションを、スタンドアローン処理、及び／又は分散処理するために動作することができる、シングルチップソリューションとして実装されうる。ゲームシステムや家庭用端末などのいくつかのアプリケーションでは、リアルタイムの演算処理は必須である。例えば、リアルタイムの分散ゲームアプリケーションでは、ユーザーにリアルタイムの経験をしていると思わせる程速く、１つ以上のネットワークイメージの復元、３Ｄコンピュータグラフィック、オーディオ生成、ネットワーク通信、物理的シミュレーション、及び人工知能処理が実行される必要がある。従って、マルチプロセッサシステムの各プロセッサは、短時間で、かつ予測可能時間でタスクを完了する必要がある。
【００２９】
このために、また、本コンピュータアーキテクチャによれば、マルチプロセッシングコンピュータシステムの全プロセッサは、共通の演算モジュール（あるいはセル）から構成される。この共通の演算モジュールは、構造が一貫しており、また好ましくは、同じ命令セットアーキテクチャを採用している。マルチプロセッシングコンピュータシステムは、１つ以上のクライアント、サーバー、ＰＣ、モバイルコンピュータ、ゲームマシン、ＰＤＡ、セットトップボックス、電気器具、デジタルテレビ、及びコンピュータプロセッサを使用する他のデバイスから形成されうる。
【００３０】
複数のコンピュータシステムもまた、所望に応じてネットワークのメンバーとなりうる。一貫モジュール構造により、マルチプロセッシングコンピュータシステムによるアプリケーション及びデータの効率的高速処理が可能になる。またネットワークが採用される場合は、ネットワーク上にアプリケーション及びデータの高速送信が可能になる。この構造はまた、大きさや処理能力が様々なネットワークのメンバーの構築を単純化し、また、これらのメンバーが処理するアプリケーションの準備を単純化する。
【００３１】
図４を参照すると、基本的な処理モジュールはプロセッサエレメント（ＰＥ）５００である。ＰＥ５００はＩ／Ｏインターフェース５０２、プロセッシングユニット（ＰＵ）５０４、及び複数のサブプロセッシングユニット５０８、すなわち、サブプロセッシングユニット５０８Ａ、サブプロセッシングユニット５０８Ｂ、サブプロセッシングユニット５０８Ｃ、及びサブプロセッシングユニット５０８Ｄを備えている。なお、好適には、ＰＵとしてパワーＰＣ（ＰＰＥ: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）５８６、及びメモリ管理ユニット（ＭＭＵ）５８８を備えている。殆どのＭＦＣ５０４Ｂは、低電力化設計とするために、ＰＵコア５０４Ａとバス１０８と比べて、半分の周波数（半分の速度）で実行する。
【００５６】
ＢＩＵ５８０はバス１０８とＬ２キャッシュ５８２とＮＣＵ５８４論理ブロック間にインターフェースを提供する。このために、ＢＩＵ５８０はバス１０８上で、十分にコヒーレントなメモリオペレーションを実施するために、マスタデバイスとして、また同様にスレーブデバイスとして機能する。マスタデバイスとして、ＢＩＵ５８０はＬ２キャッシュ５８２とＮＣＵ５８４のために機能するため、バス１０８へロード／ストアリクエストを供給する。ＢＩＵ５８０はまた、バス１０８へ送信されうるコマンドの合計数を制限するコマンドに対し、フロー制御機構を実装しうる。バス１０８のデータオペレーションは、８ビート要するように設計され、そのために、ＢＩＵ５８０は好ましくは１２８バイトキャッシュラインを有するように設計され、また、コヒーレンシーと同期化の粒度単位は１２８ＫＢである。
【００５７】
Ｌ２キャッシュメモリ５８２（及びサポートハードウェア論理回路）は、好ましくは、５１２ＫＢのデータをキャッシュするように設計されている。例えば、Ｌ２キャッシュ５８２はキャッシュ可能なロード／ストア、データプリフェッチ、命令プリフェッチ、命令プリフェッチ、キャッシュオペレーション、及びバリアオペレーションを処理しうる。Ｌ２キャッシュ５８２は好ましくは８ウエイのセットアソシエイティブシステムである。Ｌ２キャッシュ５８２は６つのキャストアウトキュー（６つのＲＣマシンなど）と一致する６つのリロードキューと、８つ（６４バイト幅）のストアキューを備えうる。Ｌ２キャッシュ５８２はＬ１キャッシュ５７０において、一部の、あるいは全てのデータのコピーをバックアップするように動作しうる。この点は、処理ノードがホットスワップである場合に状態を回復するのに便利である。この構成により、Ｌ１キャッシュ５７０が少ないポート数でより速く動作することができ、また、より速くキャッシュツーキャッシュ転送ができる（リクエストがＬ２キャッシュ５８２でストップしうるため）。この構成はまた、キャッシュコヒーレンシー管理をＬ２キャッシュメモリ５８２へ送るための機構も提供しうる。
【００５８】
ＮＣＵ５８４は、ＣＩＵ５８６、Ｌ２キャッシュメモリ５８２、及びＢＩＵ５８０と連動しており、通常は、ＰＵコア５０４Ａとメモリシステム間のキャッシュ不可能なオペレーションに対して、キューイング／バッファリング回路として機能する。ＮＣＵ５８４は好ましくは、キャッシュ抑制ロード／ストア、バリアオペレーション、及びキャッシュコヒーレンシーオペレーションなどの、Ｌ２キャッシュ５８２により処理されないＰＵコア５０４Ａとの全ての通信を処理する。ＮＣＵ５８４は好ましくは、上述の低電力化目的を満たすように、半分の速度で実行されうる。
【００５９】
ＣＩＵ５８６は、ＭＦＣ５０４ＢとＰＵコア５０４Ａの境界に配置され、実行ステージ５７６、５７８、命令ユニット５７２、及びＭＭＵユニット５８８からのリクエストに対し、また、Ｌ２キャッシュ５８２及びＮＣＵ５８４へのリクエストに対し、ルーティング、アービトレーション、及びフロー制御ポイントして機能する。ＰＵコア５０４Ａ及びＭＭＵ５８８は好ましくはフルスピードで実行され、一方でＬ２キャッシュ５８２及びＮＣＵ５８４は２：１の速度比で動作することができる。従って、周波数の境界がＣＩＵ５８６に存在し、その機能の一つは、２つの周波数ドメイン間でリクエストの送信及びデータのリロードを行いながら、周波数の差を適切に処理することである。
【００６０】
ＣＩＵ５８６は３つの機能ブロックを有しており、それらは、ロードユニット、ストアユニット、及びリロードユニットである。更に、データプリフェッチ関数がＣＩＵ５８６により実施され、また好ましくは、ロードユニットの機能部である。ＣＩＵ５８６は、好ましくは、
（ｉ）ＰＵコア５０４ＡとＭＭＵ５８８からのロード及びストアリクエストを受ける、
（ii）フルスピードのクロック周波数をハーフスピードに変換する（２：１のクロック周波数変換）、
（iii）キャッシュ可能なリクエストをＬ２キャッシュ５８２へ送り、キャッシュ不可能なリクエストをＮＣＵ５８４へ送る、
（iv）Ｌ２キャッシュ５８２に対するリクエストとＮＣＵ５８４に対するリクエストを公正に調停する、
（ｖ）ターゲットウインドウでリクエストが受信されてオーバーフローが回避されるように、Ｌ２キャッシュ５８２とＮＣＵ５８４に対する転送のフロー制御を提供する、
（vi）ロードリターンデータを受信し、そのデータを実行ステージ５７６、５７８、命令ユニット５７２、又はＭＭＵ５８８へ送る、
（vii）スヌープリクエストを実行ステージ５７６、５７８、命令ユニット５７２、又はＭＭＵ５８８へ送る、
（viii）ロードリターンデータとスヌープトラフィックを、ハーフスピードからフルスピードへ変換する、
ように動作可能である。
【００６１】
ＭＭＵ５８８は、好ましくはＰＵコア５４０Ａに対して、第２レベルのアドレス変換機能などによりアドレス変換を行う。第１レベルの変換は好ましくは、ＭＭＵ５８８よりも小型で高速でありうる、別々の命令及びデータＥＲＡＴ（Effective to Real Address Translation）アレイにより、ＰＵコア５０４Ａにおいて提供されうる。
【００６２】
好ましい実施形態では、ＰＵコア５０４は、６４ビットの実装品で、４−６ＧＨｚ、１０Ｆ０４で動作する。レジスタは好ましくは６４ビット長（１つ以上の特殊用途のレジスタは小型でありうるが）であり、また、有効アドレスは６４ビット長である。命令ユニット５７２、レジスタ５７４、及び実行ステージ５７６と５７８は好ましくは、（ＲＩＳＣ）演算技術を実現するために、ＰｏｗｅｒＰＣステージ技術を用いて実装される。
【００６３】
本コンピュータシステムのモジュール構造に関する更なる詳細は、米国特許第６，５２６，４９１号に解説されており、該特許は参照として本願に組込まれる。
【００６４】
本発明の少なくとも１つの更なる態様によれば、上述の方法及び装置は、図面において例示しているような、適切なハードウェアを利用して実現されうる。そのようなハードウェアは標準デジタル回路などのいずれの従来技術、ソフトウェア、及び／又はファームウエアプログラムを実行するよう動作できるいずれの従来のプロセッサ、プログラム可能なＲＯＭ（ＰＲＯＭ）、プログラム可能なアレイ論理デバイス（ＰＡＬ：Programmable Array Logic）などの、１つ以上のプログラム可能なデジタルデバイスあるいはシステム、を用いて実装されうる。更に、図示している装置は、特定の機能ブロックに分割されて示されているが、そのようなブロックは別々の回路を用いて、及び／あるいは１つ以上の機能ユニットに組み合わせて実装されうる。更に、本発明の様々な態様は、輸送及び／又は配布のために、（フロッピーディスク、メモリチップ、などの）適切な記憶媒体に格納されうる、ソフトウェア、及び／又はファームウエアプログラムを通じて実装されうる。
【００６５】
本明細書において、具体的な実施形態を用いて本発明を記載したが、これらの実施形態は本発明の原理及び用途の例を例示したものに過ぎないことを理解されたい。このため、添付の請求の範囲に記載した本発明の趣旨及び範囲から逸脱することなく、これら例示的な実施形態を種々に変更したり、上記以外の構成を考案し得ることが理解されよう。
【図面の簡単な説明】
【００６６】
【図１】本発明の１つ以上の態様により適しうるサブプロセッサを２つ以上有するマルチプロセッシングシステムの構造を例示した説明図。
【図２】図１の実施形態及び／又はここに記載の他の実施形態のシステムのプロセッサの１つ以上によって実行されうるプロセスステップを例示しているフローチャート。
【図３】図１の実施形態及び／又はここに記載の他の実施形態のシステムのプロセッサの１つ以上によって実行されうるプロセスステップを例示している別のフローチャート。
【図４】本発明の１つ以上の更なる態様の実装に使用されうる好適なプロセッサエレメント（ＰＥ）を例示した説明図。
【図５】本発明の１つ以上の更なる態様により適しうる、図４の一般的なサブプロセッシングユニット（ＳＰＵ）の構造を例示した説明図。
【図６】本発明の１つ以上の更なる態様により適しうる、図４の一般的なプロセッシングユニット（ＰＵ）の構造を例示した説明図。
【符号の説明】
【００６７】
１００  マルチプロセッサシステム
１０２Ａ〜Ｄ  プロセッサ
１０４Ａ〜Ｄ  ローカルメモリ
１０６  共有メモリ（メインメモリ、システムメモリ）
１０８  バス
１１２  デコーダー回路
２００  処理ルーチン
５００  プロセッサエレメント
５０２  インターフェース
５０４  ＰＵ
５０４Ａ  ＰＵコア
５０４Ｂ  メモリフローコントローラ
５０８  サブプロセッシングユニット
５０８Ａ〜Ｄ  サブプロセッシングユニット
５１０Ａ  ＳＰＵコア
５１１  メモリインターフェース
５１２  バス
５１４  共有メモリ
５１６  メモリ接続
５５０  ローカルメモリ
５５４  レジスタ
５５６  浮動小数点実行ステージ
５５８  固定小数点実行ステージ
５７０  Ｌ２キャッシュ
５７２  命令ユニット
５７４  レジスタ
５７６  浮動小数点実行ステージ
５７８  固定小数点実行ステージ
５８２  Ｌ１キャッシュ
【図１】
2006221643.tif 000003
【図２】
2006221643.tif 000004
【図３】
2006221643.tif 000005
【図４】
2006221643.tif 000006
【図５】
2006221643.tif 000007
【図６】
2006221643.tif 000008