(57)【要約】【課題】プロセシングシステムのロジカルパーティショニングの態様を、リソースの使用に関してリソース管理に結びつける。【解決手段】マルチプロセシングシステム１００のそれぞれのプロセッサ１０２を、複数のリソースグループへ論理的に区分けし、所定のアルゴリズムによる関数として、リソースグループ間のリソースを時間割り当てする方法および装置を提供する。リソースは、（i）プロセッサ１０２と入出力デバイス１１０との間の通信バンド幅の割り当て分、（ii）プロセッサ１０２によって使用される共有メモリ１０６内のスペースの割り当て分、および（iii）プロセッサ１０２によって使用されるキャッシュメモリラインのセット、のうち少なくとも一つを含む。【選択図】図１
2006318477.tif 000002
【特許請求の範囲】
【請求項１】
マルチプロセシングシステムのそれぞれのプロセッサを、複数のリソースグループへ論理的に区分けするステップと、
所定のアルゴリズムによる関数として、前記リソースグループ間でリソースを時間割り当てするステップと、を備えることを特徴とする方法。
【請求項２】
前記リソースは、
（i）前記プロセッサと入出力デバイスとの間の通信バンド幅の割り当て分、
（ii）前記プロセッサによって使用される共有メモリ内のスペースの割り当て分、
および（iii）プロセッサによって使用されるキャッシュメモリラインのセット、
のうち少なくとも一つを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記キャッシュメモリラインは、管理プロセッサのみによって使用されることを特徴とする請求項２に記載の方法。
【請求項４】
所定のプロセッサからリソースの要求を受信するステップと、
リソースが利用可能かに基づいて、前記要求されたリソースの一部または全部を割り当てるステップと、
を備えることを特徴とする請求項１から３のいずれかに記載の方法。
【請求項５】
所定の閾値を越えることなく、要求されたリソースの一部または全部を割り当てるステップを更に備えることを特徴とする請求項４に記載の方法。
【請求項６】
前記プロセッサは、前記マルチプロセシングシステムにデータを送受信するために、入出力デバイスへの通信バンド幅を共有し、
前記アルゴリズムは、各々のリソースグループに割り当てられる、バンド幅の閾値部分を設定し、
前記割り当てステップは、要求されたバンド幅が前記閾値を越えない範囲において、前記要求されたバンド幅を所定のリソースグループに割り当てることを含むことを特徴とする請求項５に記載の方法。
【請求項７】
各々のリソースグループに異なる閾値を設定するステップを更に備えることを特徴とする請求項６に記載の方法。
【請求項８】
前記割り当てられた閾値の合計は、入出力デバイスへの利用可能なバンド幅の１００％であることを特徴とする請求項６または７に記載の方法。
【請求項９】
前記割り当てステップは、他のリソースグループがより少ないバンド幅を要求するときに、所定のリソースグループに以前に割り当てられたバンド幅の量を、要求された量へ増加させることを含むことを特徴とする請求項６から８のいずれかに記載の方法。
【請求項１０】
前記プロセッサは、マルチプロセシングシステムにおいてデータを格納する共有メモリに連結し、
前記アルゴリズムは、各々のリソースグループに割り当てられる、前記共有メモリの閾値部分を設定し、
前記割り当てステップは、要求された共有メモリの割り当て分が一つ以上閾値を越えない範囲において、前記要求された共有メモリの割り当て分を、所定のリソースグループに割り当てることを含むことを特徴とする請求項５から９のいずれかに記載の方法。
【請求項１１】
各々のリソースグループに異なる閾値を設定するステップを更に備えることを特徴とする請求項１０に記載の方法。
【請求項１２】
前記割り当てられた閾値の合計は、前記プロセッサに対する利用可能な共有メモリスペースの１００％であることを特徴とする請求項１０または１１に記載の方法。
【請求項１３】
前記割り当てステップは、他のリソースグループがより少ない共有メモリを要求するときに、所定のリソースグループに以前に割り当てられた共有メモリの割り当て分を、要求された量へ増加させることを含むことを特徴とする請求項１０から１２のいずれかに記載の方法。
【請求項１４】
前記マルチプロセシングシステムの共有メモリのそれぞれの範囲を、リソースであるセットであって、キャッシュメモリラインのそれぞれのセットに関連付けるステップと、
前記範囲と前記セットとの関連付けを、所定のアルゴリズムによる関数として動的に変更するステップと、を備えることを特徴とする請求項１から１３のいずれかに記載の方法。
【請求項１５】
共有メモリと通信可能であって、論理的に複数のリソースグループに区分けされる複数のプロセッサと、
所定のアルゴリズムによる関数として、前記リソースグループ間でリソースを時間割り当てをするリソース管理ユニットと、
を備えることを特徴とする装置。
【請求項１６】
前記リソース管理ユニットには、前記複数のプロセッサの一つが実装されることを特徴とする請求項１５に記載の装置。
【請求項１７】
前記リソースは、
（i）前記プロセッサと、マルチプロセッサシステムの入出力用装置との間の通信バンド幅の割り当て分、
（ii）プロセッサによって使用される共有メモリ内のスペースの割り当て分、
および、（iii）プロセッサによって使用される、キャッシュメモリラインのセット、
のうち少なくとも一つを含むことを特徴とする請求項１５または１６に記載の装置。
【請求項１８】
前記キャッシュメモリラインは、管理プロセッサのみに使用されることを特徴とする請求項１７に記載の装置。
【請求項１９】
リソース管理ユニットは、前記リソースグループからリソースへの要求を受信し、そのリソースが利用可能かに基づいて、要求されたリソースの一部または全部を割り当てることを特徴とする請求項１５から１８のいずれかに記載の装置。
【請求項２０】
前記リソース管理ユニットは、所定の閾値を越えることなく要求されたリソースの一部または全部を割り当て、
または、前記リソース管理ユニットは、各々のリソースグループに異なる閾値を設定し、
または、前記リソース管理ユニットは、各々のリソースに異なる閾値を設定し、
または、同じリソースにおける閾値の合計は、そのリソースの１００％である
ことを特徴とする請求項１９に記載の装置。
【請求項２１】
前記リソース管理ユニットは、他のプロセッサがより少ないリソースを要求するときに、所定のプロセッサに以前に割り当てられたリソースの割り当て分を、前記要求された割り当て分へ増加させることを特徴とする請求項２０に記載の装置。
【請求項２２】
各々のプロセッサに連結するローカルメモリを更に備え、
前記ローカルメモリはハードウェアキャッシュメモリではなく、前記プロセッサの各々は、そのローカルメモリ内においてプログラムを実行することができ、共有メモリ内においてプログラムを実行することができないことを特徴とする請求項１５に記載の装置。
【請求項２３】
前記プロセッサおよび関連するローカルメモリは、共通の半導体基板上に配置され、
または、プロセッサ、関連するローカルメモリ、および共有メモリは、共通の半導体基板上に配置される
ことを特徴とする請求項２２に記載の装置。
【請求項２４】
マルチプロセシングシステムのそれぞれのプロセッサを、複数のリソースグループへ論理的に区分けする機能と、所定のアルゴリズムによる関数として、前記リソースグループ間でリソースを時間割り当てする機能と、をマルチプロセシングシステムに実行させるプログラム。
【請求項２５】
前記リソースは、
（i）プロセッサと入出力デバイスとの間の通信バンド幅の割り当て分、
（ii）プロセッサによって使用される共有メモリ内のスペースの割り当て分、
および（iii）プロセッサによって使用されるキャッシュメモリラインのセット、
のうち少なくとも一つを含むことを特徴とする請求項２４に記載のプログラム。
【請求項２６】
前記リソースグループからリソースへの要求を受信する機能と、
リソースが利用可能かに基づいて、要求されたリソースの一部または全部を割り当てる機能と、
を更に備えることを特徴とする請求項２４または２５に記載のプログラム。
【請求項２７】
所定の閾値を越えることなく、要求されたリソースの一部または全部を割り当てる機能、
各々のリソースグループに異なる閾値を設定する機能、
および、同じリソースにおける閾値の合計が、そのリソースの１００％となるよう、各々のリソースに異なる閾値を設定する機能、
のうち少なくとも一つを更に備えることを特徴とする請求項２６に記載のプログラム。
【請求項２８】
リソースグループの他のリソースグループがより少ないリソースを要求するときに、所定のリソースグループに以前に割り当てられたリソースの割り当て分を、前記要求された割り当て分へ増加させる機能を更に備えることを特徴とする請求項２６または２７に記載のプログラム。
【請求項２９】
請求項２４から２８のいずれかに記載のプログラムを格納した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセシングシステム内でデータを転送する方法および装置に関する。
【背景技術】
【０００２】
最先端のコンピュータアプリケーションは、リアルタイム機能およびマルチメディア機能を有している。このため、近年、コンピュータ処理において、より高速なデータスループットが求められている。グラフィックスアプリケーションは、所望の視覚的な効果を得るために比較的短時間に膨大なデータアクセス数、データ演算数、データ操作数を必要とするため、プロセシングシステムに最も高い要求を課している。これらのアプリケーションは、極めて速い処理速度（例えば１秒につき何千メガビットものデータ）を必要とする。速い処理速度を達成するためにシングルプロセッサを用いるプロセシングシステムがある。一方、マルチプロセッサアーキテクチャを利用して実行するものもある。マルチプロセッサシステムにおいて、複数のサブプロセッサは、所望の処理結果を達成するために、並行して（または、少なくとも協力して）動作することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ロジカルパーティショニングは、単一のプロセシングシステムを、いくつかの独立仮想システム（すなわち、ロジカルパーティション）に分けることを可能にするシステムアーキテクチャによるアプローチである。換言すれば、プロセシングシステムのハードウェアリソースは、多数の独立オペレーティング環境によって共有され得るよう仮想化される。このように、独立のオペレーティングシステムが各々のパーティションにおいて動作するよう、それぞれのプロセッサ、システムメモリおよびシステムの入出力デバイスが論理的に切り離されていてもよい。
【課題を解決するための手段】
【０００４】
本発明の態様は、プロセシングシステムのロジカルパーティショニングの態様を、リソースの使用に関してリソース管理に結びつけることを意図する。例えば、パーティションによって利用されるメモリの量が動的に調整されてもよく、パーティションによって利用される入出力バンド幅が動的に調整されてもよく、また、キャッシュ置換ポリシーが、パーティションにしたがって管理され（及び可能であれば調整され）てもよい。
【０００５】
潜在的なリソース要求元（例えばプロセッサ、システムメモリおよび入出力デバイス）の各々は、特定のリソース管理グループ（ＲＭＧ）に割り当てられる。ここで、各々のグループは、ロジカルパーティショニングの配置によって定義される。システム管理プログラムは、ＲＭＧから、リソース要求（例えばメモリアロケーション要求、メモリアクセスバンド幅要求、入出力バンド幅要求、その他）を受信する機能をもつ。また、システム管理プログラムは、要求に応答してこのようなリソースをＲＭＧに割り当てる機能をもつ。割り当てられたリソースが時変リソース要求に基づいて調整され得るよう、割り当ては動的であることが好ましい。
【０００６】
また、システム管理プログラムは、好適にはＲＭＧ間のシステムメモリのロジカルパーティショニングに基づいて、キャッシュラインのセットを割り当てる。特に、本発明における実施態様は、システムメモリの実効アドレス範囲をＬ２キャッシュラインのセットのグループに相互に関連させるリソース管理テーブル（RMT）を提供する。Ｌ２キャッシュのこのような割り当ては、タイムクリティカルデータ（例えば割り込みベクタ）を回避し、キャッシュにおいてストリーミングデータを全て異なるデータに交換することを抑制する。
【０００７】
本発明の実施例において、方法および装置は、マルチプロセシングシステムのそれぞれのプロセッサを、複数のリソースグループへロジカルパーティショニングし、および、所定のアルゴリズムによる関数として、リソースグループ間でリソースを時間割り当てする。リソースは、（i）前記プロセッサと入出力デバイスとの間の通信バンド幅の割り当て分、（ii）プロセッサによって使用される共有メモリ内のスペースの割り当て分、および、（iii）プロセッサによって使用されるキャッシュメモリラインのセット、のいずれかを含んでいてもよい。
【０００８】
また、方法および装置は、リソースグループからリソースへの要求を受信してもよく、リソースが利用可能かに基づいて、要求されたリソースの一部または全部を割り当ててもよい。また、方法および装置は、所定の閾値を越えることなく要求された一部のまたは全てのリソースを割り当ててもよく、各々のリソースグループに潜在的に異なる閾値を設定してもよく、または、各々のリソースに潜在的に異なる閾値を設定してもよい。好適には、同じリソースにおける閾値の合計は、そのリソースの１００％である。
【０００９】
また、方法および装置は、他のリソースグループがより少ないリソースを要求するときに、所定のリソースグループへへ以前に割り当てられたリソースの割り当て分を、要求された割り当て分へ増加させてもよい。
【００１０】
添付の図面とともに本明細書に記載される発明が理解されるとき、他の態様、特徴、効果などは当業者にとって明らかになる。
【００１１】
さまざまな本発明の態様を例示することのために、現在好ましい図面形式に示す。しかし、本発明が表された好適な設備や装置に限定されないことは当業者に理解されるところである。
【発明を実施するための最良の形態】
【００１２】
同一構成要素には同一符号を付した図面において、本発明の態様を実施するに適するプロセシングシステム１００を図１に示す。簡潔性および明確性のため、図１のブロック図は、装置１００としてここに記載され、参照される。しかし、この記載は、同等の方法のさまざまな態様に適用されることができることは理解されるところである。
【００１３】
プロセシングシステム１００は、本願明細書および本発明の更なる実施例において説明する特徴部分を実装可能なマルチプロセシングシステムである。システム１００は、複数のプロセッサ１０２Ａ-Ｈ、バス１０８経由して相互接続する共有メモリ１０６、およびバス１１２の上のプロセッサに連結する複数の入出力（Ｉ／Ｏ）デバイス１１０を含む。データ転送ファブリック１１４は、システムの全体にわたるデータフローを可能にする。この点において、バス１０８、バス１１２およびデータ転送ファブリック１１４は、全て同じデータ転送回路の一部と考えることができる。また、共有メモリ１０６は、本願明細書においてメインメモリまたはシステムメモリと解されてもよい。
【００１４】
８つのプロセッサ１０２が例として図示されるが、本発明の趣旨および範囲から逸脱することなく、いくつ使用されてもよい。プロセッサ１０２の各々は、類似した構造を有していてもよく、異なる構造を有していてもよい。プロセッサ１０２は、システムメモリ１０６からデータを要求し、所望の結果を達成するためにデータを操作することが可能ないずれかの周知技術を利用して実装されてもよい。たとえば、プロセッサ１０２は、標準のマイクロプロセッサ、分散型マイクロプロセッサなど、ソフトウェアおよび／またはファームウェアを実行することができる周知のマイクロプロセッサのいずれかを使用して実装されてもよい。たとえば、プロセッサ１０２は、グレイスケール情報、カラー情報、テクスチャデータ、ポリゴン情報、ビデオフレーム情報などを含むデータ（たとえば画素データ）を要求し、操作することができるグラフィックプロセッサであってもよい。
【００１５】
図２において、各々のプロセッサ１０２は、好適にはそれに関連するローカルメモリ１０４を含む。ローカルメモリ１０４は、それぞれのプロセッサ１０２と同様に、好ましくは同一のチップ（同一の半導体回路基板）に配置される。しかし、ローカルメモリ１０４は、従来のハードウェアキャッシュメモリではなく、ローカルメモリ内には、ハードウェアキャッシュメモリ機能を実現するための、オンチップまたはオフチップのハードウェアキャッシュ回路、キャッシュレジスタ、キャッシュメモリコントローラなどが存在しないことが好ましい。チップ上のスペースはしばしば制限されるため、ローカルメモリ１０４のサイズはシステムメモリ１０６より非常に小さくてもよい。
【００１６】
プロセッサ１０２は、プログラムの実行とデータの操作のためにデータアクセス要求を発行して、システムメモリ１０６からバス１０８を介して各ローカルメモリ１０４にデータ（プログラムデータを含んでもよい）をコピーすることが好ましい。データアクセスを容易にするメカニズムは、好適には、プロセッサ１０２の内部または外部に配置されるダイレクトメモリアクセスコントローラ（ＤＭＡＣ）（図示せず）を利用して実装される。
【００１７】
各々のプロセッサ１０２は、論理命令をパイプライン方式で処理するダイレクトメモリアクセスコントローラを使用して実装されることが好ましい。パイプラインは、命令が処理されるいかなる数のステージに分割されてもよいが、パイプラインは一般に、命令のフェッチ、命令のデコード、命令間の依存性チェック、命令の発行、および命令の実行を含む。この点において、プロセッサ１０２は、命令バッファ、命令デコード回路、依存性チェック回路、命令発行回路、および実行ステージを含んでもよい。
【００１８】
システムメモリ１０６は、高バンド幅メモリ接続（図示せず）を介してプロセッサ１０２に結合するダイナミックランダムアクセスメモリ（ＤＲＡＭ）であることが好ましい。システムメモリ１０６はＤＲＡＭであるが、メモリ１０６は他の手段、たとえばスタティックＲＡＭ（ＳＲＡＭ）、磁気ランダムアクセスメモリ（ＭＲＡＭ）、光メモリ、ホログラフィックメモリなどを使用して実装されてもよい。
【００１９】
実施例において、プロセッサ１０２およびローカルメモリ１０４は、共通の半導体基板上に配置されていてもよい。また、更なる実施例において、共有メモリ１０６は共通の半導体基板上に配置されていてもよく、または別々の半導体基板上に配置されていてもよい。
【００２０】
入出力デバイス１１０は、好適には、マルチプロセシングシステム１００と他の外部システム（例えば他のプロセシングシステム、ネットワーク、周辺デバイス、メモリサブシステム、スイッチ、ブリッジチップ、その他）との間の高性能相互接続を提供する。入出力デバイス１１０は、好適には、異なるシステム要求に応じるために、コヒーレント通信または非コヒーレント通信のいずれか、および適当なプロトコルでのインタフェース、およびバンド幅機能を提供する。
【００２１】
本発明の実施例において、マルチプロセシングシステム１００はまた、それぞれのプロセッサ１０２にシステムのリソースを時間の関数として割り当てるリソース管理ユニットを含むことが好ましい。具体的には、プロセッサ１０２は、好適には、複数のリソースグループに（論理的に）仕切られ、リソース管理ユニットは、これらのグループにリソースを割り当てる。リソースの細部はシステムの詳細によって異なるが、このようなリソースの実施例は、（i）プロセッサ１０２と入出力デバイス１１０との間の通信バンド幅の割り当て分、および（ii）共有メモリ１０６内のスペースの割り当て分、のうち少なくとも一つを含む。
【００２２】
別の実施例において、プロセッサ１０２は、リソース管理ユニットとして動作する機能をもつ。この点において、このようなプロセッサ１０２は、他のプロセッサ１０２に有効に連結して、バス１０８の上の共有メモリ１０６に連結するメインプロセッサとして機能する（なお、メインプロセッサはまた、リソース管理や、他のプロセッサ１０２によるデータ処理のスケジューリングおよび／または調整以外の他のタスクに関与してもよい。）
【００２３】
リソース管理機能には特に関係しないが、メインプロセッサ１０２は、共有メモリ１０６の少なくとも１つ、およびプロセッサ１０２のローカルメモリ１０４の一つ以上から取得したデータを格納するハードウェアキャッシュメモリに連結してもよい。メインプロセッサは、プログラム実行、および例えばＤＭＡ技術など周知の技術を利用したデータ処理のため、システムメモリ１０６からバス１０８を介してデータ（プログラムデータを含んでもよい）をキャッシュメモへコピーするためのデータアクセスを要求してもよい。
【００２４】
例えば、以下のような論理的な分割が可能である。プロセッサ１０２Ａは第１のリソースグループに、プロセッサ １０２Ｄ、１０２Ｆ、および１０２Ｈは第２のリソースグループに、プロセッサ１０２Ｂは第３のリソースグループに、プロセッサ１０２Ｃ、１０２Ｅ、および１０２Ｇは第４のリソースグループに分割される。リソースグループは、同様の斜線模様によって図示される。好適には、リソース管理ユニットは、複数のプロセッサ１０２からリソースの要求を受信する機能をもつ。ここで、各々の要求は、リソース（例えば、通信バンド幅、共有メモリ１０６内のスペース、その他）に対するものである。応答時に、リソース管理ユニットは、そのリソースが利用可能かに基づいて、要求されたリソースの一部または全部を割り当てる機能を持つことが好ましい。
【００２５】
例えば、図３は、上記グループ１および３のように２つのリソースグループに関連する、要求されたリソースの概略を時間軸に対して示したグラフである。説明のため、要求されたリソースは、プロセッサ１０２と入出力デバイス１１０との間の通信バンド幅の割り当て分であるものとする。時間t０では、グループ１および３のどちらのもバンド幅を要求していない。t０とt１との間において、グループ１については、例えば、グループ内のプロセッサが、リソース管理ユニットへリソースの要求を発行することによって、そのバンド幅への要求が増加する。時間t１において、グループ３（例えばプロセッサ１０２Ｂ）はまた、リソース管理ユニットへリソースの要求を発行することによって、バンド幅の要求を開始する。このように、時間t１とt２との間において、グループ１に割り当てられるバンド幅の割り当て分はいくぶん減少する。その一方で、グループ３に割り当てられるバンド幅の量は増加する。
【００２６】
リソース管理ユニットは、各々のプロセッサまたはグループに関連付けられた所定の閾値を越えることなく、要求されたリソースの一部または全部をリソースグループ（および、それぞれのプロセッサ）に割り当てる機能をもつことが好ましい。この例では、グループ１と関連付けられる閾値は、利用可能なバンド幅の合計の約５８％である。その一方で、グループ３と関連付けられる閾値は、利用可能なバンド幅の合計の４２％である。この点において、閾値の合計は、利用可能なすべてのリソース（この場合では入出力デバイス１１０へのバンド幅）の１００％となる。このように、リソース管理ユニットは、要求されたリソースがプロセッサまたはグループのそれぞれの閾値を越えない範囲において、要求されたリソースをリソースグループに割り当てる。
【００２７】
時間t３において、グループ１によって要求されたバンド幅は、そのグループに割り当てられた閾値以下に減少する。この点において、リソース管理ユニットは、グループ１がより少ないバンド幅を要求するときに、グループ３（例えばプロセッサ１０２Ｂ）に以前に割り当てられた量を、要求された量（例えば、この例では１００％）へ増加させる機能をもつことが好ましい。
【００２８】
図３に示されるようなリソースグループ間のリソース割り当てが、本願明細書において記載される本発明の実施例によって実行され得る多くの異なる形態のうちただ一つを表すことは当業者に理解されるところである。
【００２９】
図４において、共有メモリ１０６の各部分は、リソースグループのプロセッサ１０２中のリソース管理ユニットによって割り当てられてもよい。入出力デバイス１１０へのバンド幅の割り当てに関する前述の実施例のように、リソースグループ（例えば、そのプロセッサ）は、時間の関数として、リソース管理ユニットによる割り当てのため共有メモリ１０６の割り当て分を要求してもよい。したがって、図３についての前述の説明は、プロセッサ１０２間の共有メモリ１０６内でのスペースの割り当てに拡張することができる。
【００３０】
例示のため再び図３の概略図を用いると、時間t０において、グループ１および３のどちらも、共有メモリ１０６内でスペースを要求していない。t０とt１との間において、グループ１については、例えば、グループ１内のプロセッサが、リソース管理ユニットにリソースの要求を発行することによって、そのメモリへのその要求が増加する。時間t１において、グループ３は、リソース管理ユニットにリソースの要求を発行することによって、メモリスペースを要求する。このように、時間t１とt２との間において、グループ１に割り当てられる共有メモリ１０６の割り当て分が減少する。その一方で、グループ３に割り当てられるメモリの量は増加する。また、グループ１に関連付けられる閾値は、利用可能なメモリの合計の約５８％である。その一方で、グループ３に関連付けられる閾値は、利用可能なメモリの合計の４２％である。時間t３において、グループ１によって要求された共有メモリ１０６内のメモリスペースは、そのグループに割り当てられた閾値以下に減少する。この点において、リソース管理ユニットは、グループ１がより少ないメモリを要求するときに、グループ３（例えばプロセッサ１０２Ｂ）に以前に割り当てられた量を、要求された量（例えば、この例では１００％）へ増加させる機能をもつことが好ましい。
【００３１】
図４に戻って、本発明の更なる実施例において、システムのリソースはまた、割り当て可能なそれぞれのキャッシュメモリのセット（キャッシュライン）を含んでもよい。この点において、リソース管理ユニットは、共有メモリ１０６のそれぞれの範囲を、キャッシュメモリ１５０のそれぞれのセットに関連付けることができ、時間の関数として、動的にこのような関連付けを変えることが好ましい。好適には、リソース管理ユニットは、リソース管理テーブル１５２を維持し、および／またはリソース管理テーブル１５２にアクセスする。リソース管理テーブル１５２は、共有メモリ１０６のそれぞれの範囲を、キャッシュメモリ１５０のそれぞれのセットに関連付ける。例えば、共有メモリ１０６の実効アドレス（ＥＡ）レンジ０は、キャッシュメモリ１５０のセット０に関連付けられていてもよい。共有メモリ１０６のＥＡレンジ１は、キャッシュメモリ１５０のセット１-４に関連付けられていてもよい。共有メモリ１０６のＥＡレンジ２は、キャッシュメモリ１５０のセット７に関連付けられていてもよい。共有メモリ１０６のＥＡレンジ３は、キャッシュメモリ１５０のセット５-６に関連付けられていてもよい。このようなセット割り当ては、リソースグループによる要求に応答して、リソース管理ユニットによって動的に変更されてもよい。これらに対するこのような割り当てや変更は、問題としているリソースがキャッシュメモリ１５０のキャッシュラインである場合を除いて、図３について上述した説明と同様の方法で特徴付けられていてもよい。
【００３２】
例示のため再び図３の概略図を用いると、時間t０において、グループ１および３のどちらも、キャッシュメモリ内でキャッシュライン（セット）を要求していない。t０とt１との間において、グループ１については、例えば、グループ１内のプロセッサが、リソース管理ユニットにリソースの要求を発行することによって、キャッシュリソースへのその要求が増加する。時間t１において、グループ３は、リソース管理ユニットにリソースの要求を発行することによって、キャッシュスペースを要求する。このように、時間t１とt２との間において、グループ１に割り当てられるキャッシュメモリの割り当て分が減少する。その一方で、グループ３に割り当てられるキャッシュメモリの量は増加する。また、グループ１に関連付けられる閾値は、利用可能なキャッシュセットの合計の約５８％である。その一方で、グループ３に関連付けられる閾値は、利用可能なキャッシュの合計の４２％である。時間t３において、グループ１によって要求されたキャッシュ割り当ては、そのグループに割り当てられた閾値以下に減少する。この点において、リソース管理ユニットは、グループ１がより少ないキャッシュ割り当てを要求するときに、グループ３に以前に割り当てられた量を、要求された量（例えば、この例では１００％）へ増加させる機能をもつことが好ましい。
【００３３】
本明細書において説明される特徴を実行することに適したマルチプロセッサシステムの好適なコンピュータアーキテクチャを、以下に記載する。実施例において、マルチプロセッサシステムは、メディアリッチアプリケーション（例えばゲームシステム、ホームターミナル、ＰＣシステム、サーバシステムおよびワークステーション）におけるスタンドアローンの、および／または分散した処理を実施可能なシングルチップソリューションとして実装されてもよい。ゲームシステムや家庭端末など、いくつかのアプリケーションは、リアルタイムコンピューティングが必要とされる可能性がある。例えば、リアルタイムの分散型ゲームアプリケーションでは、ネットワークによるイメージ復元法、３Ｄコンピュータグラフィック、音声生成、ネットワーク通信、物理的なシミュレーションおよび人工知能プロセスは、リアルタイムで体験しているかのような錯覚をユーザに提供できるよう、充分高速に実行される必要がある。このように、マルチプロセッサシステムの各々のプロセッサは、短く予測可能な時間内にタスクを完了させなければならない。
【００３４】
このコンピュータアーキテクチャにおいて、マルチのプロセッサコンピュータシステムの全てのプロセッサは、共通のコンピューティングモジュール（すなわちセル）によって構成される。この共通のコンピューティングモジュールは一貫した構造を備えており、好適には同じ命令セットアーキテクチャを使用する。マルチプロセシングコンピュータシステムは、クライアント、サーバ、ＰＣ、モバイルコンピュータ、ゲーム機、ＰＤＡ、セットトップボックス、器具、デジタルテレビ、およびコンピュータプロセッサを使用している他の装置の中で形成されてもよい。
【００３５】
また、複数のコンピュータシステムは、必要であればネットワークのメンバであってもよい。一貫したモジュール式の構造によって、アプリケーションおよびデータに対するマルチプロセシングコンピュータシステムの効率的且つ高速な処理が可能となる。また、ネットワークが採用されている場合、ネットワーク上におけるプリケーションおよびデータの高速な伝送を可能にする。この構造によれば、様々なサイズおよび処理能力を持つネットワークのメンバを構築することが容易となり、そのようにして構築されたネットワークのメンバにより処理されるアプリケーションを準備することも容易となる。
【００３６】
図５は、基本的な処理モジュールであるプロセッサエレメント（ＰＥ）５００を示す。ＰＥ５００は、Ｉ／Ｏインタフェース５０２と、処理ユニット（ＰＵ）５０４と、複数のサブ処理ユニット５０８、すなわち、サブ処理ユニット５０８Ａと、サブ処理ユニット５０８Ｂと、サブ処理ユニット５０８Ｃと、サブ処理ユニット５０８Ｄとを含む。すなわち内部であるローカルＰＥバス５１２は、ＰＵ５０４、サブ処理ユニット５０８群、およびメモリインタフェース５１１間のデータおよびアプリケーションの伝送を行う。ローカルＰＥバス５１２は、例えば従来構成でもよいし、またはパケットスイッチネットワークとして実装することもできる。パケットスイッチネットワークとして実装するとより多くのハードウェアが必要になるが、利用可能な帯域が広がる。ＰＥ５００はプロセシングシステム１００に対応する。すなわち、ＰＵ５０４および複数のサブ処理ユニット５０８は複数のプロセッサ１０２Ａ−Ｈに対応する。そして、ＰＥ５００はプロセシングシステム１００の上述の機能を有する。
【００３７】
ＰＥ５００はディジタルロジック回路を実装する各種方法を利用して構成できる。ただし好適には、ＰＥ５００はシリコン基板上の相補的金属酸化膜半導体（ＣＭＯＳ）を用いる一つの集積回路として構成される。基板の他の材料には、ガリウム砒素、ガリウムアルミニウム砒素、および広範な種類の不純物を用いた他のいわゆるＩＩＩ−Ｂ族化合物が含まれる。ＰＥ５００はまた、超伝導材料を用いて高速単一磁束量子（ＲＳＦＱ）ロジック回路等として実装することもできる。
【００３８】
ＰＥ５００は、広帯域メモリ接続５１６を介してダイナミックランダムアクセスメモリ（ＤＲＡＭ）５１４に密接に関連付けられる。共有メモリ５１４は好適にはダイナミックランダムアクセスメモリ（ＤＲＡＭ）だが、スタティックランダムアクセスメモリ（ＳＲＡＭ）、磁気ランダムアクセスメモリ（ＭＲＡＭ）、光学メモリ、またはホログラフィックメモリ等の他の手段を用いて実装してもよい。
【００３９】
ＰＵ５０４およびサブ処理ユニット５０８は、それぞれ、ダイレクトメモリアクセス（ＤＭＡ）機能を有するメモリフローコントローラ（ＭＦＣ）と接続されることが望ましい。ＭＦＣは、メモリインタフェース５１１と協働して、共有メモリ５１４、ＰＥ５００におけるサブ処理ユニット５０８、ＰＵ５０４間のデータの転送を円滑にするものである。ここで、ＤＭＡＣおよび／またはメモリインタフェース５１１は、サブ処理ユニット５０８とＰＵ５０４とから独立して設置されるようにしてもよいし、一体化されるようにしてもよい。実際に、ＤＡＭＣの機能および／またはメモリインタフェース５１１の機能は、サブ処理ユニット５０８およびＰＵ５０４の一つ以上（好ましくはすべて）に一体化できる。ここで、共有メモリ５１４もまた、ＰＥ５００から独立して設置されるようにしてもよいし、一体化されるようにしてもよい。例えば、共有メモリ５１４は図に示すようにチップ外部に設けられるようにしてもよく、集積方式でチップ内蔵されるようにしてもよい。
【００４０】
ＰＵ５０４は、例えばスタンドアロン式のデータおよびアプリケーション処理が可能な標準的なプロセッサでもよい。動作時には、ＰＵ５０４はサブ処理ユニット群によるデータおよびアプリケーションの処理のスケジューリングおよび調整を行う。サブ処理ユニット群は、好適には、一命令複数データ（ＳＩＭＤ）プロセッサである。ＰＵ５０４の制御下で、サブ処理ユニット群はデータおよびアプリケーションの処理を並列に、かつ独立して行う。ＰＵ５０４としては、ＲＩＳＣ（ｒｅｄｕｃｅｄ  ｉｎｓｔｒｕｃｔｉｏｎ−ｓｅｔ  ｃｏｍｐｕｔｉｎｇ）技術を用いるマイクロプロセッサアーキテクチャとなるＰｏｗｅｒＰＣ（登録商標）コアを用いることが好ましい。ＲＩＳＣは単純な命令の組み合わせによって比較的複雑な命令を実行するものである。したがって、プロセッサのタイミングは、比較的簡単かつ速いオペレーションに基づきうる。これは、決められたクロック速度においてより多くの命令を実行することを可能とする。
【００４１】
ここで、ＰＵ５０４は、サブ処理ユニット５０８のうちの一つとして実装されてもよい。この場合、このサブ処理ユニット５０８は、メイン処理ユニットＰＵによる処理、すなわち各々のサブ処理ユニット５０８によるデータとアプリケーションの処理のスケジューリングと統合処理を行うものとすればよい。さらに、ＰＥ５００内において、複数のＰＵを実装してもよい。
【００４２】
このモジュール構造では、あるコンピュータシステムで使用されるＰＥ５００の数は、そのシステムが必要とする処理能力に基づく。例えば、サーバは４つのＰＥ５００群、ワークステーションは二つのＰＥ５００群、ＰＤＡは一つのＰＥ５００を使用しうる。あるソフトウェアセルの処理に割り当てられるＰＥ５００のサブ処理ユニットの数は、セル内のプログラムおよびデータの複雑さおよび規模によって異なる。
【００４３】
図６は、サブ処理ユニット（ＳＰＵ）５０８の好適な構造と機能を示す図である。サブ処理ユニット５０８のアーキテクチャは、汎用プロセッサ（多数のアプリケーションにおいて高い平均性能を実現するように設計されているもの）と特殊用途のプロセッサ（一つのアプリケーションにおいて高い性能を実現するように設計されている）との間に位置するものであることが望ましい。サブ処理ユニット５０８は、ゲームアプリケーション、メディアアプリケーション、ブロードバンドシステムなどにおいて高い性能を実現すると共に、リアルタイムアプリケーションのプログラマに高度な制御自由度を提供するように設計されている。サブ処理ユニット５０８の一部の機能として、グラフィック構造パイプライン、サーフェス分割、高速フーリエ変換、画像処理キーワード、ストリーム処理、ＭＰＥＧエンコード／デコード、暗号化、デコード、デバイスドライバー拡張、モデリング、ゲームフィジクス、コンテンツ制作、音声合成および音声処理などを挙げることができる。
【００４４】
サブ処理ユニット５０８は、すなわちＳＰＵコア５１０Ａとメモリフローコントローラ（ＭＦＣ）５１０Ｂという二つの基本機能ユニットを有する。ＳＰＵコア５１０Ａは、プログラムの実行、データの操作などを担うものであり、一方、ＭＦＣ５１０Ｂは、ＳＰＵコア５１０Ａと、システムの共有メモリ５１４との間のデータ転送に関連する機能を担うものである。
【００４５】
ＳＰＵコア５１０Ａはローカルメモリ５５０と、命令（インストラクション）ユニット（ＩＵ）５５２と、レジスタ５５４と、一つ以上の浮動小数点実行ステージ５５６と、一つ以上の固定小数点実行ステージ５５８とを有する。ローカルメモリ５５０は、ＳＲＡＭのようなシングルポートのＲＡＭを用いて実装されることが望ましい。メモリへのアクセスのレイテンシを軽減するために、従来のほとんどのプロセッサはキャッシュを用いるが、ＳＰＵコア５１０Ａは、キャッシュよりも、比較的小さいローカルメモリ５５０を用いる。実際には、リアルタイムのアプリケーション（およびここで言及したほかのアプリケーション）のプログラマに、予測可能で、かつ一致したメモリアクセスのレイテンシを提供するために、サブ処理ユニット５０８Ａ内においてキャッシュメモリアーキテクチャを用いることは好ましくない。キャッシュメモリのキャッシュヒット／ミス値は、数サイクルから数百サイクルの範囲内で変化する、予測困難な、メモリアクセス回数を生じさせる。このようなメモリアクセスの回数の予測困難性は、例えばリアルタイムアプリケーションのプログラミングに望まれるアクセスタイミングの予測可能性を下げる。データ演算を伴うＤＭＡ転送をオーバーラップすることで、ローカルメモリＳＲＡＭ５５０内のレイテンシを補うことができる。これはリアルタイムアプリケーションのプログラミングに高い制御自由度を提供する。ＤＭＡ転送と関連するレイテンシおよび命令のオーバーヘッドが、キャッシュミスにより生じたレイテンシより長いため、ＳＲＡＭローカルメモリアプローチは、ＤＭＡ転送サイズが十分大きいかつ十分予測可能なとき（例えばデータが要求される前にＤＭＡコマンドを発行することができるとき）において優位性を提供する。
【００４６】
サブ処理ユニット５０８のうちのいずれか一つの上で実行されるプログラムは、ローカルアドレスを用いて、関連するローカルメモリ５５０を参照する。なお、ローカルメモリ５５０の各場所にはシステムの全体のメモリマップ上におけるリアルアドレス（ＲＡ）が付与されている。これは、特権レベルのソフトウェアがローカルメモリ５５０を一つの処理における実効アドレス（ＥＡ）にマッピングすることを可能とし、それによって二つのローカルメモリ５５０間のＤＭＡ転送が容易になる。ＰＵ５０４は、実効アドレスを用いてローカルメモリ５５０に直接アクセスすることもできる。ローカルメモリ５５０は、３５６キロバイトの容量を有し、レジスタ５５４の容量は１２８×１２８ビットであることが望ましい。
【００４７】
ＳＰＵコア５１０Ａは、演算パイプラインを用いて実装されることが望ましく、その中において論理命令がパイプライン方式で処理される。パイプラインは、命令を処理する任意の数のステージに分けることができるが、通常、パイプラインは、一つ以上の命令のフェッチ、命令のデコード、命令の間の依存性のチェック、命令の発行、および命令の実行から構成される。これに関連して、命令ユニット５５２は、命令バッファと、命令デコード回路と、依存性チェック回路と、命令発行回路とを含む。
【００４８】
命令バッファは、ローカルメモリ５５０と接続されており、命令がフェッチされたときにこれらの命令を一時的に格納することができる複数のレジスタを有することが好ましい。命令バッファは、すべての命令が一つのグループとして（すなわち実質上同時に）レジスタから出力されるように動作することが好ましい。命令バッファはいかなるサイズであってもよいが、レジスタの数がおよそ２または３以下となるようにするサイズであることが好ましい。
【００４９】
通常、デコード回路は命令を細分化すると共に、対応する命令の機能を果たす論理・マイクロオペレーションを発生させる。例えば、論理・マイクロペレーションは、計算オペレーションと論理オペレーションの指定、ローカルメモリ５５０へのロードオペレーションとストアオペレーションの指定、レジスタソースオペランドおよび／または即値データオペランドの指定などを行うことができる。デコード回路は、ターゲットのレジスタのアドレスや、構造リソースや、機能ユニットおよび／またはバスなどのような、命令が用いるリソースを指定してもよい。デコード回路は、リソースが必要とされる命令パイプラインのステージを示す情報を提供してもよい。命令デコード回路は、実質上同時に、命令バッファのレジスタの数と同じ数の命令をデコードするように動作可能であることが好ましい。
【００５０】
依存性チェック回路は、チェック対象となる命令のオペランドがパイプラン内の他の命令のオペランドに依存するか否かを判定するためのチェックを行うデジタルロジックを含む。依存するならば、チェック対象となる命令は、これらの他のオペランドが（例えば、これらの他の命令の実行の完了を許可することによって）更新されるまで、実行されるべきではない。依存性チェック回路は、命令デコード回路から同時に送信されてきた複数の命令の依存性を判定することが好ましい。
【００５１】
命令発行回路は、浮動小数点実行ステージ５５６および／または固定小数点実行ステージ５５８に命令を発行することができる。
【００５２】
レジスタ５５４は、１２８―エントリレジスタファイルのような、比較的大きな統合レジスタファイルとして実装されることが好ましい。これは、レジスタ不足を回避するためのレジスタのリネームを必要とせずに、深くパイプライン化された高周波数の実行を可能とする。ハードウェアのリネームは、一般的に処理システムにおける実装面積と電力の高い割合を消費する。したがって、ソフトウェアによるループアンローリングまたは他のインターリーブ技術によってレイテンシがカバーされるような場合において、優位性のあるオペレーションを実現できる。
【００５３】
ＳＰＵコア５１０Ａは、クロックサイクル毎に複数の命令を発行するようなスーパースカラアーキテクチャで実装されることが好ましい。ＳＰＵコア５１０Ａは、命令バッファから同時に送信される命令の数、例えば２と３の間（クロックサイクル毎に２つまたは３つの命令が発行されることを意味する）に対応する程度のスーパースカラとして動作可能であることが好ましい。必要とされる処理能力に応じた多少なりの数の浮動小数点実行ステージ５５６と固定小数点実行ステージ５５８を用いることができる。好適な実施の形態では、浮動小数点実行ステージ５５６と固定小数点実行ステージ５５８の望ましいスピードは、それぞれ、毎秒３２ギガ浮動小数点オペレーション（３２  ＧＦＬＯＰＳ）と毎秒３２ギガオペレーション（３２  ＧＯＰＳ）である。
【００５４】
ＭＦＣ５１０Ｂは、バスインターフェースユニット（ＢＩＵ）５６４と、メモリマネジメントユニット（ＭＭＵ）５６２と、ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）５６０とを有することが望ましい。低電力消費の設計目的を達成するために、ＭＦＣ５１０Ｂは、ＤＭＡＣ５６０を除いて、ＳＰＵコア５１０ＡおよびローカルＰＥバス５１２の半分の周波数（半分のスピード）で動作することが好ましい。ＭＦＣ５１０Ｂは、ローカルＰＥバス５１２からサブ処理ユニット５０８に入るデータと命令を操作することができ、ＤＭＡＣのためのアドレス変換と、データ一貫性のためのスヌープオペレーションとを提供する。ＢＩＵ５６４は、ローカルＰＥバス５１２とＭＭＵ５６２とＤＭＡＣ５６０との間のインターフェースを提供する。したがって、サブ処理ユニット５０８（ＳＰＵコア５１０ＡとＭＦＣ５１０Ｂを含む）とＤＭＡＣ５６０は、物理的および／または論理的にローカルＰＥバス５１２と接続されている。
【００５５】
ＭＭＵ５６２は、メモリアクセスのために実効アドレス（ＤＭＡコマンドから取得される）をリアルアドレスへ変換することができるようにすることが望ましい。例えば、ＭＭＵ５６２は、実効アドレスの比較的高いオーダのビットをリアルアドレスのビットに変換できる。なお、比較的低いオーダアドレスビットについては、変換不可であると共に、物理的におよび論理的にリアルアドレスの形成およびメモリへのアクセスのリクエストに用いられるようにすることが好ましい。具体的には、ＭＭＵ５６２は、６４ビットのメモリマネジメントモジュールをベースにして実装でき、４Ｋバイト、６４Ｋバイト、１メガバイト、１６メガバイトのページサイズと２５６ＭＢのセグメントサイズを有する２６４のバイトの実効アドレス空間を提供することができる。ＭＭＵ５６２は、ＤＭＡコマンドのために、２６５までの仮想メモリと、２４２バイト（４テラバイト）の物理メモリをサポート可能であることが好ましい。ＭＭＵ５６２のハードウェアは、８−エントリの完全連想ＳＬＢ、２５６−エントリの４ウェイセット連想ＴＬＢ、ＴＬＢのための４×４代替マネジメントテーブル（ＲＭＴ）を含むものとすることができる。なお、ＲＭＴはハードウェアＴＬＢミスのハンドリングに用いられるものである。
【００５６】
ＤＭＡＣ５６０は、ＳＰＵコア５１０ＡからのＤＭＡコマンドと、一つ以上の、ＰＵ５０４および／または他のＳＰＵのような他のデバイスからのＤＭＡコマンドとを管理することができることが望ましい。ＤＭＡコマンドは下記の３つのカテゴリがある。すなわち、ローカルメモリ５５０から共有メモリ５１４へデータを移動させるＰｕｔコマンド、共有メモリ５１４からローカルメモリ５５０へデータを移動させるＧｅｔコマンド、ＳＬＩコマンドと同期コマンドとを含むストレージコントロールコマンドである。同期コマンドは、アトミックコマンド、送信コマンド、専用のバリアコマンドを含むものとすることができる。ＤＭＡコマンドに応じて、ＭＭＵ５６２は実効アドレスをリアルアドレスに変換し、このリアルアドレスはＢＩＵ５６４に転送される。
【００５７】
ＳＰＵコア５１０Ａはチャンネルインターフェースとデータインターフェースとを用いて、ＤＭＡＣ５６０内のインターフェースと通信（ＤＭＡコマンド、ステータスなどの送信）することが好ましい。ＳＰＵコア５１０Ａは、チャンネルインターフェースを介してＤＭＡコマンドをＤＭＡＣ５６０内のＤＭＡキューに送信する。いったん、ＤＭＡキューに格納されたＤＭＡコマンドは、ＤＭＡＣ５６０内の発行ロジックと完了ロジックにより操作される。一つのＤＭＡコマンドのためのすべてのバス・トランザクションが完了すると、チャンネルインターフェースを介して、一つの完了信号がＳＰＵコア５１０Ａに返送される。
【００５８】
図７は、ＰＵ５０４の好ましい構造と機能を示す図である。ＰＵ５０４は、ＰＵコア５０４Ａとメモリフローコントローラ、すなわちＭＦＣ５０４Ｂとの二つの基本機能ユニットを有する。ＰＵコア５０４Ａは、プログラムの実行、データの操作、マルチプロセッサ管理機能などを担うものであり、一方、ＭＦＣ５０４Ｂは、ＰＵコア５０４Ａと、マルチプロセシングシステム１００のメモリスペースとの間のデータ転送に関連する機能を担うものである。
【００５９】
ＰＵコア５０４Ａは、Ｌ１キャッシュ５７０と、命令ユニット５７２と、レジスタ５７４と、少なくとも一つの浮動小数点実行ステージ５７６と、少なくとも一つの固定小数点実行ステージ５７８とを有する。Ｌ１キャッシュ５７０は、共有メモリ１０６、プロセッサ１０２、あるいはＭＦＣ５０４Ｂにおけるほかの部分のメモリスペースから受信したデータのキャッシング機能を提供する。ＰＵコア５０４Ａはスーパーパイプラインとして実装されることが好ましいため、命令ユニット５７２は、フェッチ、デコード、依存性のチェック、発行などを含む多数のステージを有する命令パイプラインとして実装されることが好ましい。ＰＵコア５０４Ａは、スーパースカラ構造を有することが好ましく、それによって、クロックサイクル毎に命令ユニット５７２から２以上の命令が発行される。高い演算能力を実現するために、浮動小数点実行ステージ５７６と固定小数点実行ステージ５７８は、パイプライン方式の多数のステージを有する。必要とされる処理能力に応じた多少なりの浮動小数点実行ステージ５７６と固定小数点実行ステージ５７８とを用いることができる。
【００６０】
ＭＦＣ５０４Ｂは、バスインターフェースユニット（ＢＩＵ）５８０と、Ｌ２キャッシュ５８２と、キャッシュ不可ユニット（ＮＣＵ）５８４と、コアインターフェースユニット（ＣＩＵ）５８６と、メモリマネジメントユニット（ＭＭＵ）５８８とを有する。低電力消費の設計目的を達成するために、ＭＦＣ５０４Ｂのほとんどは、ＰＵコア５０４Ａとバス１０８の半分の周波数（半分のスピード）で動作することが好ましい。
【００６１】
ＢＩＵ５８０は、バス１０８と、Ｌ２キャッシュ５８２と、ＮＣＵ５８４のロジックブロックとの間のインターフェースを提供する。ＢＩＵ５８０は、完全一致のメモリオペレーションを実行するために、マスターデバイスとして動作してもよく、バス１０８上のスレーブデバイスとして動作してもよい。マスターデバイスとして動作する場合、ＢＩＵ５８０は、Ｌ２キャッシュ５８２とＮＣＵ５８４の代わりに、バス１０８へのロードリクエストとストアリクエストを発信する。ＢＩＵ５８０は、バス１０８へ送ることができるコマンドの総数を限定するコマンドのフローコントロールメカニズムを実装してもよい。バス１０８上のデータオペレーションは、８ビートになるように設計されることができ、そして、ＢＩＵ５８０は、キャッシュラインが１２８バイト前後であり、一貫性と同期の精度が１２８ＫＢであるように設計されることが好ましい。
【００６２】
Ｌ２キャッシュ５８２（およびそれをサポートするハードウェアロジック）は、５１２ＫＢデータをキャッシュするように設計されることが好ましい。例えば、Ｌ２キャッシュ５８２は、キャッシュ可能なロードとストア、データのプリフェッチ、命令フェッチ、命令のプリフェッチ、キャッシュオペレーション、バリアオペレーションを操作できる。Ｌ２キャッシュ５８２は、８ウエイセットアソシエイティブシステムであることが好ましい。Ｌ２キャッシュ５８２は、６つのキャストアウトキュー（例えば６つのＲＣマシン）に合わせた６つのリロードキューと、８つの（６４バイトの幅の）ストアキューとを有することができる。Ｌ２キャッシュ５８２は、Ｌ１キャッシュ５７０の中の一部または全てのデータのバックアップコピーを提供するように動作してもよい。これは特に、処理ノードがホットスワップ（動作中に変更）されたときの、復元状況において有用である。この構成は、Ｌ１キャッシュ５７０が、ほぼポート無しにさらに速く動作することを可能にするとともに、キャッシュ間の転送を速くすることができる（リクエストがＬ２キャッシュ５８２で止まることができるから）。この構成は、Ｌ２キャッシュ５８２にキャッシュ一貫性のマネジメントを及ばしめるメカニズムも提供する。
【００６３】
ＮＣＵ５８４はインターフェースによってＣＩＵ５８６と、Ｌ２キャッシュ５８２と、ＢＩＵ５８０と接続されており、通常、ＰＵコア５０４Ａとメモリシステム間のキャッシュ不可なオペレーションのキューまたはバッファ回路として機能する。ＮＣＵ５８４は、ＰＵコア５０４Ａとの通信のうちの、Ｌ２キャッシュ５８２によって扱わない全ての通信を操作することが好ましい。ここで、Ｌ２キャッシュ５８２によって扱わないものとしては、キャッシュ不可なロードとストアや、バリアオペレーションや、キャッシュ一貫性オペレーションなどを挙げることができる。低電力消費の設計目的を達成するために、ＮＣＵ５８４は、半分のスピードで動作することが好ましい。
【００６４】
ＣＩＵ５８６は、ＭＦＣ５０４ＢとＰＵコア５０４Ａとの境界線上に配置され、浮動小数点実行ステージ５７６、固定小数点実行ステージ５７８、命令ユニット５７２、ＭＭＵ５８８から、Ｌ２キャッシュ５８２とＮＣＵ５８４へ送られるリクエストのためのルーティング、アービトレイション、フローコントロールポイントとして動作する。ＰＵコア５０４ＡとＭＭＵ５８８はフルスピードで動作し、Ｌ２キャッシュ５８２とＮＣＵ５８４は２：１のスピード比で動作可能であることが好ましい。こうすることによって、ＣＩＵ５８６に周波数境界線が存在することになり、この境界線は、その一つの機能により、二つの周波数領域間にリクエストの転送およびデータのリロードをする際に、周波数の交錯を適切に操作する。
【００６５】
ＣＩＵ５８６は、ロードユニット、ストアユニット、リロードユニットの３つの機能ブロックから構成される。さらに、データをプリフェッチする機能がＣＩＵ５８６により実行される。この機能は、ロードユニットの一部の機能であることが好ましい。ＣＩＵ５８６は、下記の動作を実行可能であることが好ましい：（ｉ）ＰＵコア５０４ＡとＭＭＵ５８８からのロードリクエストとストアリクエストを受信する、（ｉｉ）これらのリクエストをフルスピードクロック周波数から半分のスピードに変換する（２：１クロック周波数変換）、（ｉｉｉ）キャッシュ可能なリクエストとキャッシュ不可なリクエストとをそれぞれＬ２キャッシュ５８２とＮＣＵ５８４へルーティングする、（ｉｖ）Ｌ２キャッシュ５８２とＮＣＵ５８４へのリクエストが均等になるように調整する、（ｖ）リクエストが目標時間内に受信されると共に、オーバーフローが発生しないための、Ｌ２キャッシュ５８２とＮＣＵ５８４へ送信するリクエストのフローコントロールを提供する、（ｖｉ）ロードリターンデータを受信すると共に、これらのデータを浮動小数点実行ステージ５７６、固定小数点実行ステージ５７８、命令ユニット５７２、またはＭＭＵ５８８へルーティングする、（ｖｉｉ）スヌープリクエストを浮動小数点実行ステージ５７６、固定小数点実行ステージ５７８、命令ユニット５７２、またはＭＭＵ５８８へ転送する、（ｖｉｉｉ）ロードリターンデータとスヌープトラフィックを半分のスピードからフルスピードへ変換する。
【００６６】
ＭＭＵ５８８は、第２レベルアドレス変換手段のごとく、ＰＵコア５０４Ａのためにアドレス変換を提供することが好ましい。変換の第１レベルは、ＰＵコア５０４Ａ内において、セパレート命令と、ＭＭＵ５８８より遥かに小さくてかつ速いデータＥＲＡＴ（実効アドレスからリアルアドレスへの変換）アレイとにより提供されることが好ましい。
【００６７】
ＰＵ５０４は６４ビットで実装され、４〜６ＧＨz、１０Ｆ０４（Ｆａｎ−ｏｕｔ−ｏｆ−ｆｏｕｒ）で動作することが好ましい。レジスタは６４ビットの長さを有することが好ましく（特定用途のための一つまたはより多くのレジスタが６４ビットより小さいかもしれないが）、実効アドレスは６４ビットの長さを有することが好ましい。命令ユニット５７２、レジスタ５７４、浮動小数点実行ステージ５７６と固定小数点実行ステージ５７８はＲＩＳＣコンピューティング技術を達成するためにＰｏｗｅｒＰＣ技術により実装されることが好ましい。
【００６８】
このコンピュータシステムのモジュラー構造のさらなる詳細については、米国特許第６５２６４９１号公報に記載されている。その公報の記載によれば、例えば、コンピュータネットワークのメンバのプロセッサに単一のＰＥを含め、さらに、このＰＥに、ＰＵ、ＤＭＡＣおよび８個のＡＰＵを含めることができる。他の例として、そのプロセッサは、ビジュアルアライザ（ＶＳ）の構造を有してもよく、この場合、ＶＳに、ＰＵ、ＤＭＡＣおよび４つのＡＰＵを含めてもよい。
【００６９】
少なくとも一つの本発明の更なる態様において、上記した方法と装置は、たとえば図において例示される適切なハードウェアを利用して提供されることができる。このようなハードウェアは、たとえば標準のデジタル回路、ソフトウェアおよび／またはファームウェアプログラムを実行することができる周知のプロセッサ、プログラム可能な読出し専用メモリ（ＰＲＯＭ）やプログラマブルアレイ論理装置（ＰＡＬ）などのプログラム可能な一つ以上のデジタル装置またはシステムなど、いずれかの周知技術を利用して実装されてもよい。さらに、図示される装置は、特定の機能的なブロックに仕切られると表されているが、このようなブロックは、別々の回路を経由して実装されてもよく、および／または一つ以上の機能ユニットに結合されてもよい。また更に、さまざまな本発明の態様は、（たとえばフレキシブル・ディスク、メモリ・チップなど）携帯性および配布性を有する適切な記憶媒体またはメディアに保存されるソフトウェアおよび／またはファームウェアプログラムとして実現されてもよい。
【００７０】
以上、特定の実施例を参照して本発明について説明したが、これらの実施例は、単に本発明の原理およびアプリケーションを例示するだけであることは理解されることろである。したがって、多数の変形が例示の実施例になされ得ることは理解されるところであり、請求の範囲に記載の本発明の趣旨および範囲から逸脱することなく、他の変形例が設けられることが可能である。
【図面の簡単な説明】
【００７１】
【図１】本発明の態様におけるマルチプロセッサシステムのブロック図である。
【図２】本発明の態様における、図１および／または本願明細書の他の実施例の、マルチプロセシングシステム内でのプロセッサの好適な構造を示すブロック図である。
【図３】図１および／または本願明細書の他の実施例の要素によって実行され得る、複数のパーティション間のリソース割り当てを示す図である。
【図４】図１（および／または本願明細書の他の実施例）のシステムによって使用され得るキャッシュ管理リソース割り当てを示す部分的なブロック図および部分的なフローチャートである。
【図５】本発明の更なる態様を実行するために使用され得る、好適なプロセッサ要素（ＰＥ）を示すブロック図である。
【図６】本発明の更なる態様において適応可能な、図５のシステムの典型的なサブ処理ユニット（ＳＰＵ）の構造を示す図である。
【図７】本発明の更なる態様において適応可能な、図５のシステムの典型的な処理ユニット（ＰＵ）の構造を示す図である。
【符号の説明】
【００７２】
１００  マルチプロセシングシステム、  １０２  プロセッサ、  １０４  ローカルメモリ、  １０６  共有メモリ、  １１０  入出力デバイス、  １５０  キャッシュメモリ、  １５２  リソース管理テーブル。
【図１】
2006318477.tif 000003
【図２】
2006318477.tif 000004
【図３】
2006318477.tif 000005
【図４】
2006318477.tif 000006
【図５】
2006318477.tif 000007
【図６】
2006318477.tif 000008
【図７】
2006318477.tif 000009