(57)【要約】【課題】マルチプロセッサシステムにおいて複数のプロセッサが動作すると、電力消費量が増加する。【解決手段】マルチプロセッサシステムにおけるタスク共有方法を提供する。第１プロセッサの処理パイプラインに複数の命令を発行する（ステップ６００）。第２プロセッサが実行状態または待ち状態にあるかどうかを判定する（ステップ６０２）。第２プロセッサが待ち状態にあるとき、第２プロセッサのパイプラインの実行ステージに少なくとも１つの命令を転送し（ステップ６１２）、第２プロセッサのパイプラインの少なくとも１つの初期ステージをバイパスする（ステップ６１４）。【選択図】図７
2007042074.tif 000002
【特許請求の範囲】
【請求項１】
マルチプロセッサシステム内の第１プロセッサの処理パイプラインにおいて複数の命令を発行するステップと、
前記マルチプロセッサシステム内の第２プロセッサが実行状態または待ち状態にあるかどうかを判定するステップと、前記第２プロセッサが前記待ち状態にあるとき、前記複数の命令のうちの少なくとも１つを前記第２プロセッサの処理パイプラインの実行ステージへ転送し、前記第２プロセッサの前記処理パイプラインの少なくとも１つの初期ステージをバイパスするステップとを含むことを特徴とするタスク共有方法。
【請求項２】
前記バイパスするステップは、前記第２プロセッサの前記処理パイプラインのフェッチステージ、デコードステージ、および発行ステージの少なくとも１つをバイパスすることを特徴とする請求項１に記載のタスク共有方法。
【請求項３】
前記第２プロセッサの前記処理パイプライン内で、前記第１プロセッサから発行された命令を受け取るか、前記第２プロセッサの前記処理パイプラインから発行された命令を受け取るかを選択するステップをさらに含むことを特徴とする請求項２に記載のタスク共有方法。
【請求項４】
前記第２プロセッサにおいて転送された前記命令を実行することにより実行ステージの結果を生成するステップをさらに含むことを特徴とする請求項１から３のいずれかに記載のタスク共有方法。
【請求項５】
前記第１プロセッサに前記実行ステージの結果を戻すステップをさらに含むことを特徴とする請求項４に記載のタスク共有方法。
【請求項６】
前記第１プロセッサの前記処理パイプラインのレジスタファイルに前記実行ステージの結果を入力するステップをさらに含むことを特徴とする請求項４に記載のタスク共有方法。
【請求項７】
前記転送するステップは、前記第１プロセッサが実行状態にある場合に、前記命令を転送することを特徴とする請求項１から６のいずれかに記載のタスク共有方法。
【請求項８】
前記第２プロセッサにおける転送された前記命令の実行と並行して、前記第１プロセッサにおいて命令を実行するステップをさらに含むことを特徴とする請求項１から７のいずれかに記載のタスク共有方法。
【請求項９】
前記並行して命令を実行する間、前記第１プロセッサの少なくとも一部と前記第２プロセッサの少なくとも一部の動作周波数を減少させるステップをさらに含むことを特徴とする請求項８に記載のタスク共有方法。
【請求項１０】
前記減少させるステップは、前記並行して命令を実行する間、前記第１プロセッサと前記第２プロセッサの前記動作周波数を半分まで減少させることを特徴とする請求項９に記載のタスク共有方法。
【請求項１１】
前記第１プロセッサの前記一部は、レジスタファイルと前記第１プロセッサの前記処理パイプラインの実行ステージを含み、前記第２プロセッサの前記一部は、前記第２プロセッサの前記処理パイプラインの前記実行ステージを含むことを特徴とする請求項９に記載のタスク共有方法。
【請求項１２】
前記第１プロセッサおよび前記第２プロセッサの内、いずれか一方のプロセッサの前記処理パイプラインに命令が残っていないとき、前記一方のプロセッサの状態を前記実行状態から前記待ち状態に遷移させるステップをさらに含むことを特徴とする請求項１１に記載のタスク共有方法。
【請求項１３】
前記第１プロセッサおよび前記第２プロセッサの内、いずれか一方のプロセッサの前記パイプラインに少なくとも１つの命令が到着するか、あるいは、他のプロセッサから前記一方のプロセッサに少なくとも１つの命令が転送された場合に、前記一方のプロセッサの状態を前記待ち状態から前記実行状態に遷移させるステップをさらに含むことを特徴とする請求項１１または１２に記載のタスク共有方法。
【請求項１４】
前記マルチプロセッサシステムのプロセッサユニットによって前記判定するステップと前記転送するステップを起動させるステップをさらに含むことを特徴とする請求項１に記載のタスク共有方法。
【請求項１５】
複数の命令を発行するための命令発行ステージを有するパイプラインを備えた第１プロセッサと、
実行ステージと少なくとも１つの前段のステージとを有するパイプラインを備えた第２プロセッサと、
前記第２プロセッサが待ち状態にあるとき、前記複数の命令の少なくとも１つが前記第２プロセッサの前記少なくとも１つの前段のステージをバイパスして前記実行ステージにおいて実行されるように、前記第１プロセッサと前記第２プロセッサとを結合させる第１通信リンクと
を含むことを特徴とするマルチプロセッサシステム。
【請求項１６】
前記第２プロセッサが前記待ち状態にあるとき、前記第２プロセッサにおいて生成された実行ステージの結果が前記第２プロセッサの前記パイプラインの後段のステージをバイパスするように、前記第１プロセッサと前記第２プロセッサとを結合させる第２通信リンクをさらに含むことを特徴とする請求項１５に記載のマルチプロセッサシステム。
【請求項１７】
前記第１通信リンクは、前記少なくとも１つの命令が前記第２プロセッサの前記パイプラインのフェッチステージ、デコードステージおよび発行ステージの少なくとも１つをバイパスすることを可能にすることを特徴とする請求項１５に記載のマルチプロセッサシステム。
【請求項１８】
前記第１プロセッサと前記第２プロセッサをつなぐ前記第１通信リンクは、当該マルチプロセッサシステムの製造過程で構築されることを特徴とする請求項１５に記載のマルチプロセッサシステム。
【請求項１９】
前記第１通信リンクは前記第１プロセッサの前記命令発行ステージから前記第２プロセッサの前記実行ステージまでをつなぐことを特徴とする請求項１５に記載のマルチプロセッサシステム。
【請求項２０】
前記第２通信リンクは前記第２プロセッサの前記実行ステージから前記第１プロセッサのレジスタファイルまでをつなぐことを特徴とする請求項１６に記載のマルチプロセッサシステム。
【請求項２１】
前記第２プロセッサ内に、前記第１通信リンクと前記実行ステージの間に設けられた命令選択マルチプレクサをさらに含むことを特徴とする請求項１６に記載のマルチプロセッサシステム。
【請求項２２】
前記命令選択マルチプレクサは、前記第２プロセッサから発行された命令と、前記第１通信リンクを通って転送された命令のどちらかを選択する機能を有することを特徴とする請求項２１に記載のマルチプロセッサシステム。
【請求項２３】
前記第２プロセッサの前記実行ステージは、命令バッファと少なくとも１つの実行部とを含むことを特徴とする請求項１５に記載のマルチプロセッサシステム。
【請求項２４】
前記第１プロセッサ内に、前記第２通信リンクと前記第１プロセッサのレジスタファイルの間に設けられた実行結果マルチプレクサをさらに含むことを特徴とする請求項１６に記載のマルチプロセッサシステム。
【請求項２５】
前記実行結果マルチプレクサは、前記第１プロセッサにおいて生成された実行ステージ結果と前記第２プロセッサにおいて生成された前記実行ステージ結果のどちらかを選択する機能を有することを特徴とする請求項２４に記載のマルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムにおいて電力消費を管理する方法と装置、およびマルチプロセッサシステムにおいてプロセッサ間に演算処理を分散させて管理する方法と装置に関する。
【背景技術】
【０００２】
最近のマイクロプロセッサはクロック周波数が増加し、サイズが小さくなったため、計算性能が非常に大きく改善され、小さな設置面積で高い性能を提供することができるという利便性を生み出している。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、こういった性能向上によって、マイクロプロセッサによる電力消費量が増加することになった。これは、特にグラフィックプロセッサにあてはまることである。マルチプロセッサシステム内で複数のプロセッサがともに動作する場合、この問題はさらに悪化する。さらに、マルチプロセッサシステムが電池駆動の場合は、高い消費電力がマルチプロセッサシステムに課す負担はより大きいものとなる。
【０００４】
このようにマルチプロセッサシステムにおいて過度の電力が消費されるという問題を解決する技術が必要とされている。
【０００５】
本発明はこうした課題に鑑みてなされたものであり、その目的は、複数のプロセッサ間でタスクを共有し、電力消費を節約することのできる装置および方法を提供することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明のある態様のタスク共有方法は、マルチプロセッサシステム内の第１プロセッサの処理パイプラインにおいて複数の命令を発行するステップと、前記マルチプロセッサシステム内の第２プロセッサが実行状態または待ち状態にあるかどうかを判定するステップと、前記第２プロセッサが前記待ち状態にあるとき、前記複数の命令のうちの少なくとも１つを前記第２プロセッサの処理パイプラインの実行ステージへ転送し、前記第２プロセッサの前記処理パイプラインの少なくとも１つの初期ステージをバイパスするステップとを含む。
【０００７】
本発明の別の態様は、マルチプロセッサシステムである。このマルチプロセッサシステムは、複数の命令を発行するための命令発行ステージを有するパイプラインを備えた第１プロセッサと、実行ステージと少なくとも１つの前段のステージとを有するパイプラインを備えた第２プロセッサと、前記第２プロセッサが待ち状態にあるとき、前記複数の命令の少なくとも１つが前記第２プロセッサの前記少なくとも１つの前段のステージをバイパスして前記実行ステージにおいて実行されるように、前記第１プロセッサと前記第２プロセッサとを結合させる第１通信リンクとを含む。
【０００８】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、データ構造、記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【０００９】
本発明によれば、複数のプロセッサ間でタスクを共有し、電力消費を節約することのできる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施の形態を図面を参照して説明するが、本発明は図面と同一の構成および手段に限定されるものではない。
【００１１】
図１は、２つ以上のサブプロセッサ１０２を含むマルチプロセッサシステム（マルチプロセッシングシステムと呼んでもよい）１００Ａの構成図である。本明細書の別の箇所で述べるいろいろな概念はこのマルチプロセッサシステム１００Ａに適用することができる。マルチプロセッサシステム１００Ａは、複数のプロセッサ１０２Ａ〜１０２Ｄと、各プロセッサに付属するローカルメモリ１０４Ａ〜１０４Ｄと、バスシステム１０８で相互接続された共有メモリ１０６とを含む。共有メモリ１０６はメインメモリ１０６もしくはシステムメモリ１０６ともいう。ここでは４つのプロセッサ１０２を例示するが、本発明の趣旨と権利範囲を逸脱することなく、任意の数のプロセッサを用いることができる。各プロセッサ１０２は同一構成であってもよく、異なる構成であってもよい。
【００１２】
ローカルメモリ１０４は、好ましくは各プロセッサ１０２と同一チップ（同一の半導体基板）上に設けられる。もっとも、ローカルメモリ１０４は、従来のハードウェアキャッシュメモリではなく、ローカルメモリ１０４内には、ハードウェアキャッシュメモリ機能を実現するための、オンチップまたはオフチップのハードウェアキャッシュ回路、キャッシュレジスタ、キャッシュメモリコントローラなどが存在しないことが好ましい。
【００１３】
プロセッサ１０２は、好ましくは、プログラムを実行し、データを操作するために、バスシステム１０８を介してシステムメモリ１０６からそれぞれのローカルメモリ１０４にデータ（プログラムデータを含んでもよい）をコピーするためのデータアクセス要求を発行する。各プロセッサにダイレクト・メモリ・アクセス・コントローラ（ＤＭＡＣ）を用いてデータアクセスを容易にする機構を実装するのが好ましい。各プロセッサのＤＭＡＣは、本発明の他の特徴に関して本明細書の他の箇所で述べる能力と実質的に同じ能力をもつことが好ましい。
【００１４】
システムメモリ１０６は、図示しない広帯域メモリコネクションを介してプロセッサ１０２に接続されるダイナミックランダムアクセスメモリ（ＤＲＡＭ）であることが好ましい。ＤＲＡＭ１０６は、バスシステム１０８を介してプロセッサ１０２と接続されてもよい。システムメモリ１０６は、好適にはＤＲＡＭであるが、スタティックランダムアクセスメモリ（ＳＲＡＭ）、磁気ランダムアクセスメモリ（ＭＲＡＭ）、光学メモリ、またはホログラフィックメモリ等の他の手段を用いて実装されてもよい。
【００１５】
各プロセッサ１０２は好適には、論理命令がパイプライン方式で処理されるパイプライン処理を用いて実装される。パイプラインは、命令が処理される任意の数のステージに分割されるが、一般的には、パイプラインは、一つ以上の命令をフェッチするステージ、命令をデコードするステージ、命令間の依存性をチェックするステージ、命令を発行するステージ、および命令を実行するステージを有する。この点に関連して、プロセッサ１０２は、命令バッファ、命令デコード回路、依存性チェック回路、命令発行回路、および実行ステージを含んでもよい。本発明の実施の形態に適用可能な、プロセッサのいろいろなステージやそれらのステージに特化した回路の特定の配置例は、図６に図示され、図６との関連で詳しく説明される。
【００１６】
ここで、「実行ステージ」という用語は、プロセッサの１つ以上の実行部に対応し、たとえば、図６に示したプロセッサ１０２Ｄの実行部１１２Ｄと１１４Ｄなどである。「実行ステージ」には、プロセッサ１０２Ｄの命令バッファ１２８Ｄのような命令バッファを含んでもよい。また、一般に「実行結果」という用語は、「実行ステージの結果」という用語に対応して用いられる。
【００１７】
実施の形態において、プロセッサ１０２とローカルメモリ１０４は、共通の半導体基板上に設けられてもよい。さらに実施の形態において、共有メモリ１０６もその共通半導体基板上に設けられもよく、それとは別の半導体基板上に分離して設けられもよい。
【００１８】
一つ以上のプロセッサ１０２は、他のプロセッサと機能的に接続された、バス１０８を介して共有メモリ１０６と接続可能なメインプロセッサとして動作してもよい。このメインプロセッサは、他のプロセッサ１０２によるデータ処理をスケジューリングし、統括してもよい。メインプロセッサは、他のプロセッサ１０２とは違って、ハードウェアキャッシュメモリと結合してもよい。そのハードウェアキャッシュメモリにより、共有メモリ１０６およびプロセッサ１０２のローカルメモリ１０４の少なくとも１つから取得したデータをキャッシュすることができる。メインプロセッサは、プログラムを実行し、データを操作するために、ＤＭＡ技術のような既知の技術を用いて、バスシステム１０８を介してシステムメモリ１０６からそのキャッシュメモリにデータ（プログラムデータを含んでもよい）をコピーするためのデータアクセス要求を発行してもよい。
【００１９】
図２は、図１のマルチプロセッサシステム１００Ａの複数のプロセッサのうちの２つのプロセッサ間で並列処理を提供する一つの方法を示すブロック図である。２つのプロセッサ１０２Ａ、１０２Ｂの一部が図示されており、これらのプロセッサはそれぞれローカルストレージ１０４Ａ、１０４Ｂ、レジスタファイル１１０Ａ、１１０Ｂ、および実行部１１２Ａ、１１２Ｂを含む。
【００２０】
図２のマルチプロセッサシステム１００Ａでは、第１プロセッサ１０２Ａのレジスタファイル１１０Ａが、第１プロセッサのローカルストレージ１０４Ａや実行部１１２Ａと作用し合う。同様に、プロセッサ１０２Ｂのレジスタファイル１１０Ｂが、第２プロセッサのローカルストレージ１０４Ｂや実行部１１２Ｂと作用し合う。図２のシステムでは、いったん命令（インストラクション）がこれらのプロセッサのどちらかの処理パイプラインに与えられると、命令および命令から生成された実行結果は、その命令の最初の供給先であるプロセッサ内にとどまることが好ましいことに留意する。
【００２１】
図３は、本発明の実施の形態にしたがって、図１のマルチプロセッサシステム１００Ａにおいて、タスク処理を共有できるように接続された二つのプロセッサ１０２Ｃと１０２Ｄの構成図である。
【００２２】
図３で例示したような実施の形態において、図２の構成とは対照的に、第１プロセッサ１０２Ｃのレジスタファイル１１０Ｃは、好ましくは第２プロセッサ１０２Ｄの実行部１１２Ｄに接続される。この接続により、マルチプロセッサシステム１００Ａが、命令を第１プロセッサ１０２Ｃの処理パイプラインから第２プロセッサ１０２Ｄの処理パイプラインに転送して、プロセッサ１０２Ｄの実行部１１２Ｄに実行させることができるようになる。その後、転送された命令を実行することにより生成された結果は、第２プロセッサ１０２Ｄの実行部１１２Ｄから第１プロセッサ１０２Ｃのレジスタファイル１１０Ｃに返されてもよい。
【００２３】
図３で例示されるように、この実施の形態では、第１プロセッサ１０２Ｃと第２プロセッサ１０２Ｄは両方とも４ＧＨｚで動作することが好ましい。もっとも、４ＧＨｚより高いか低い動作周波数が用いられてもよい。
【００２４】
図４は、図３の構成の場合のように第１プロセッサ１０２Ｃと第２プロセッサ１０２Ｄが相互に接続されたマルチプロセッサシステム１００Ａの構成図であり、本発明の実施の形態に従ってタスク処理の共有とエネルギーの節約が可能である。
【００２５】
図４に示すような実施の形態において、第１プロセッサ１０２Ｃの一部と第２プロセッサ１０２Ｄの一部は、およそ２ＧＨｚの周波数で動作するが、第１プロセッサ１０２Ｃの残りの部分と第２プロセッサ１０２Ｄの残りの部分は、およそ４ＧＨｚの周波数で動作する。実施の形態において低い周波数で動作する構成要素は、図４において破線で囲んで図示されている。図４で示すように構成要素の動作周波数を下げることは、マルチプロセッサシステム１００Ａ内で消費電力を減らすことにつながる。マルチプロセッサシステム１００Ａの低周波数で動作する部分は２ＧＨｚ前後の周波数で動作してもよく、マルチプロセッサシステム１００Ａの残りの部分は４ＧＨｚ前後の周波数で動作してもよいことが、当業者には理解される。
【００２６】
より一般的には、図４の破線で囲んだ構成要素は、低電力モードで動作するよう構成されてもよい。低電力モードでは、図４の破線で囲んだ構成要素による消費電力を減らすために一つ以上の電力削減戦略を使用してもよい。低電力モードで動作していない部分は「通常モード」で動作することが好ましい。通常モードでは、動作周波数は好ましくはおよそ４ＧＨｚであり、供給電圧はおよそ１ボルトである。
【００２７】
一つの電力削減戦略は、上述のように構成要素の動作周波数をおよそ４ＧＨｚからおよそ２ＧＨｚまで減らすことである。もう一つの電力削減戦略として、第１プロセッサ１０２Ｃと第２プロセッサ１０２Ｄに対する供給電圧を通常レベルのおよそ２０％だけ下げる、すなわち、通常の供給電圧がおよそ１ボルトであるとすれば、供給電力をおよそ０．８ボルトまで下げることが考えられる。さらに、ある実施の形態においては、第１プロセッサ１０２Ｃと第２プロセッサ１０２Ｄの選択された構成要素の動作周波数の低減と供給電圧の低減は同時に実行されてもよい。それによって消費電力のさらなる削減が図られる。低電力モードで動作している構成要素の中でトランジスタの閾値電圧は増加させることが好ましい点に留意する。それによってこれらの構成要素においてリーク電流を減らすことができる。低電力モードで動作するために利用される電力削減戦略は、上述のものに限られない。
【００２８】
図４で破線に囲んで示す構成要素よりも少ないか多い構成要素を低い周波数で動作させたり、低い供給電圧で動作させるように構成してもよいことは、当業者には理解される。そのような変形例はすべて本発明の範囲内に含まれる。
【００２９】
図５は、本発明の実施の形態に係るマルチプロセッサシステム１００Ａにおいてプロセッサの３つの状態を示す状態図である。３つの状態とは、アイドル状態７０２、実行状態７０４、および待ち状態７０６である。アイドル状態７０２は、プロセッサ（例えばプロセッサ１０２Ｄ）のスリープモードである。スリープモードは、実質的にいかなる処理もなされない、あるいは実質的に電力が消費されないように、プロセッサ１０２への供給電圧および／またはシステムクロックを止めることによって引き起こされる。アイドル状態７０２は、プロセッサ自身により引き起こされてもよく、あるいは、上述のメインプロセッサのような外部デバイスによって引き起こされてもよい。
【００３０】
プロセッサの実行状態７０４では、好ましくは、図１に関連づけて説明した方法で、命令がフェッチされ、デコードされ、実行される。さらに、実行状態７０４にある間は、パイプラインは、好ましくは通常通りに動作している。待ち状態７０６では、プロセッサは供給電圧で駆動され、クロック信号を受けていることが好ましい。しかし、待ち状態７０６にあるプロセッサのパイプラインには実行を待っている命令は一般には存在しない。
【００３１】
ある実施の形態では、プロセッサ（例えばプロセッサ１０２Ｄ）を起動すると、プロセッサ１０２Ｄはアイドル状態７０２から実行状態７０４に遷移する。プロセッサ１０２Ｄが命令の実行および／または他のオペレーションの実行を終えると、プロセッサ１０２Ｄは実行状態７０４からアイドル状態７０２に遷移する。プロセッサのアイドル状態７０２は、プロセッサへのクロック信号の供給を止めたり、プロセッサへの電力供給を止めたり、あるいはそれらを組合せすることによって実装することができる。
【００３２】
実施の形態において、実行状態７０４にあるプロセッサのパイプラインにおいて最後の命令を実行すると、そのプロセッサは実行状態７０４から待ち状態７０６に遷移する。逆に言えば、いったん１つでも命令がプロセッサのパイプラインに現れると、待ち状態７０６のプロセッサは実行状態７０４に遷移する。
【００３３】
図６は、本発明の実施の形態に係るマルチプロセッサシステム１００Ａにおいて相互接続された２つのプロセッサ１０２Ｃと１０２Ｄおよびプロセッサユニット（ＰＵ）３８０を示すブロック図である。マルチプロセッサシステム１００Ａは、図６で例示された構成に加えてプロセッサおよび／または他のデバイスを含んでもよいことに留意する。図６で例示したプロセッサ１０２Ｃと１０２Ｄの処理パイプラインの構成要素は、図１と図３で例示されたものとは多少異なる。命令チェックステージや、図１で示されたローカルメモリや共有メモリを含め、従来の構成要素は、簡単のために図６では省略しているが、そのような構成要素は、マルチプロセッサシステム１００Ａの実施の形態において含まれてもよい。さらに、２つのプロセッサ１０２Ｃと１０２Ｄの相互接続に関しては、図３で示されたものよりも詳しく図示されている。もっとも、図４に関連づけて説明した電力削減戦略は、図６のマルチプロセッサシステム１００Ａにおいても実行することができる。
【００３４】
好ましい実施の形態においては、２つのプロセッサ１０２Ｃと１０２Ｄがともに協調モードにあるとき、すなわち、マスタ−スレーブ関係が存在するとき、第１プロセッサ１０２Ｃが命令を第２プロセッサ１０２Ｄへ転送して第２プロセッサ１０２Ｄ内でその命令を実行させる際、以下に述べる２つのプロセッサ１０２Ｃと１０２Ｄの間の相互接続が用いられる。
【００３５】
このように、図６の実施の形態では、２つのプロセッサ１０２Ｃと１０２Ｄが協調モードにあるとき、第１プロセッサ１０２Ｃはマスタプロセッサになり、第２プロセッサ１０２Ｄはスレーブプロセッサになる。もっとも、他の実施の形態では、第２プロセッサ１０２Ｄがマスタプロセッサになり、第１プロセッサ１０２Ｃがスレーブプロセッサになってもよい。さらに他の実施の形態において、２つのプロセッサ１０２Ｃと１０２Ｄ間を双方向に結合することにより、いずれのプロセッサでもマスタプロセッサまたはスレーブプロセッサになることができるようにしてもよい。
【００３６】
第２プロセッサ１０２Ｄがマスタプロセッサとして動作する実施の形態においては、第２プロセッサ１０２Ｄがマスタプロセッサとして動作できるように、付加的な構成要素がプロセッサ１０２Ｃおよび／またはプロセッサ１０２Ｄ内に設けられてもよい。一般に、そのような付加的な構成要素は、図６のマルチプロセッサシステム１００Ａと関連づけてすでに議論された構成要素と対になっている。このようなわけで、命令セレクタ・マルチプレクサ１２６Ｃ（図示せず）を第１プロセッサ１０２Ｃ内に設け、第１プロセッサ１０２Ｃのパイプライン内の命令と第２プロセッサ１０２Ｄから第１プロセッサ１０２Ｃへ転送された命令のどちらかが選択されるようにしてもよい。さらに、第２プロセッサ１０２Ｄの発行ステージ１２２Ｄから第１プロセッサ１０２Ｃの命令セレクタ・マルチプレクサ１２６Ｃ（図示せず）までをつなぐ通信リンク１２４Ｄ（図示せず）が設けられてもよい。
【００３７】
同様に、第２プロセッサ１０２Ｄから転送された命令を実行することによって生じる実行ステージの結果を、第１プロセッサ１０２Ｃから第２プロセッサ１０２Ｄへ戻すことを可能にするための構成要素が設けられてもよい。具体的には、実行結果マルチプレクサ１３０Ｄ（図示せず）と１３２Ｄ（図示せず）が、プロセッサ１０２Ｄ内に設けられてもよい。これらの実行結果マルチプレクサの各々は、第２プロセッサ１０２Ｄのパイプラインの実行部（１１２Ｄと１１４Ｄ）から生成された実行結果と、第１プロセッサ１０２Ｃの実行部１１２Ｃと１１４Ｃにおいて生成され、その後第２プロセッサ１０２Ｄに戻された実行結果のどちらかを選ぶことができる。このように第２プロセッサ１０２Ｄに実行結果を戻せるように、通信リンク１３４Ｃと１３６Ｃを設け、通信リンク１３４Ｃは、第１プロセッサ１０２Ｃの実行部１１２Ｃから第２プロセッサ１０２Ｄの実行結果マルチプレクサ１３０Ｄ（図示せず）までをつなぎ、通信リンク１３６Ｃは、第１プロセッサ１０２Ｃの実行部１１４Ｃから第２プロセッサ１０２Ｄの実行結果マルチプレクサ１３２Ｄ（図示せず）までをつないでもよい。図６で例示されたマルチプレクサに関して説明したのと同様に、ＰＵ３８０が上述の（図６で例示されていない）付加的なマルチプレクサの動作を制御できるように構成してもよい。もっとも、他のプロセッサが、この機能を実行できるようにしてもよい。
【００３８】
協調モードにある２つのプロセッサ１０２Ｃと１０２Ｄの動作は、これらのプロセッサが前述のいずれかの電力削減戦略が実施される低電力モードにあるときの動作を伴ってもよい。これらのプロセッサが通常モードの動作または低電力モードの動作に入るようにする方法は、図９に関連づけてさらに議論する。
【００３９】
実施の形態において、ＰＵ３８０は検出オペレーションを実行し、マルチプロセッサシステム１００Ａのオペレーションに関連した決定を行う。たとえば、ＰＵ３８０は、２つのプロセッサ１０２Ｃと１０２Ｄがいつ協調モードに入るのにふさわしい状態になるかを判定するために、ステータスレジスタ１２０Ｃと１２０Ｄの状態をポーリングしてもよい。また、ＰＵ３８０は、マルチプレクサ１２６Ｄ、１３０Ｃおよび１３２Ｃの内、一つ以上において選択の決定を行ってもよい。
【００４０】
好ましい実施の形態において、マルチプロセッサシステム１００Ａは、それぞれ処理パイプラインをもった第１プロセッサ１０２Ｃと第２プロセッサ１０２Ｄを含む。マルチプロセッサシステム１００Ａは、ＰＵ３８０を含んでもよい。マルチプロセッサシステム１００Ａは、さらにプロセッサを１つ以上含んでもよい。第１プロセッサ１０２Ｃと第２プロセッサ１０２Ｄは、２つのプロセッサ間をつなぐ通信リンク１２４Ｃが構築されることにより、マルチプロセッサシステム１００Ａ内でペア（対）になることができる。通信リンク１２４Ｃは、マルチプロセッサシステム１００Ａの製造過程で構築されてもよい。それによって好ましくは第１プロセッサ１０２Ｃと第２プロセッサ１０２Ｄの間に永続的なハードウェア結合が生成される。もっとも、他の実施の形態においては、第１プロセッサ１０２Ｃと第２プロセッサ１０２Ｄの間で通信するための他の手段が実装されてもよい。
【００４１】
第１プロセッサ１０２Ｃと第２プロセッサ１０２Ｄは好ましくは実質的に同じ構成要素を含むので、簡単のため、これらの構成要素は以下ではまとめて議論する。プロセッサ１０２Ｃ、１０２Ｄは、それぞれステータスレジスタ１２０Ｃ、１２０Ｄを含み、各ステータスレジスタ１２０Ｃ、１２０Ｄはアイドル状態７０２、実行状態７０４または待ち状態７０６のうちの１つを示す。
【００４２】
実施の形態において、各プロセッサ１０２Ｃ、１０２Ｄは、それぞれフェッチステージ１１６Ｃ、１１６Ｄを含み、各フェッチステージ１１６Ｃ、１１６Ｄの機能は、好ましくは図１のマルチプロセッサシステムのフェッチステージの機能と実質的に同じである。各プロセッサ１０２Ｃ、１０２Ｄは、それぞれデコードステージ１１８Ｃ、１１８Ｄを含み、各デコードステージ１１８Ｃ、１１８Ｄは、各フェッチステージ１１６Ｃ、１１６Ｄから命令を受け取り、図１のマルチプロセッサシステムに関連づけて説明したデコードステージと同じ方法で動作してもよい。各プロセッサ１０２Ｃ、１０２Ｄは、それぞれの発行ステージ１２２Ｃ、１２２Ｄを含み、各発行ステージ１２２Ｃ、１２２Ｄは、好ましくは各デコードステージ１１８Ｃ、１１８Ｄから命令を受け取る。
【００４３】
実施の形態において、第２プロセッサ１０２Ｄは、第１プロセッサ１０２Ｃの発行ステージ１２２Ｃと自分自身の発行ステージ１２２Ｄから命令を受け取り、命令バッファ１２８Ｄに出力を提供する命令セレクタ・マルチプレクサ１２６Ｄを含む。
【００４４】
好ましい実施の形態において、通信リンク１２４Ｃが、第１プロセッサ１０２Ｃの発行ステージ１２２Ｃの出力から第２プロセッサ１０２Ｄの命令セレクタ・マルチプレクサ１２６Ｄの入力までをつなぐ。
【００４５】
実施の形態において、第１プロセッサ１０２Ｃのバッファ１２８Ｃは、第１実行部１１２Ｃおよび／または第２実行部１１４Ｃに接続される。第２プロセッサ１０２Ｄのバッファ１２８Ｄは、第１実行部１１２Ｄおよび／または第２実行部１１４Ｄに接続される。実施の形態において、第１実行部１１２Ｃ、第２実行部１１４Ｃの出力は、それぞれ、第１実行結果マルチプレクサ１３０Ｃ、第２実行結果マルチプレクサ１３２Ｃの入力に接続される。実施の形態において、第２プロセッサ１０２Ｄの第１実行部１１２Ｄ、第２実行部１１４Ｄの出力は、第２プロセッサ１０２Ｄのレジスタファイル１１０Ｄに接続される。第１実行結果マルチプレクサ１３０Ｃと第２実行結果マルチプレクサ１３２Ｃの出力は、レジスタファイル１１０Ｃに接続される。
【００４６】
この実施の形態では、ＰＵ３８０は、命令選択オペレーションを制御するために、命令セレクタ・マルチプレクサ１２６Ｄ、第１実行結果マルチプレクサ１３０Ｃ、および第２実行結果マルチプレクサ１３２Ｃに（配線による接続または他のタイプの接続により）接続される。図６において、ＰＵ３８０は、便宜上、作用が及ぶ箇所に図示しているが、実施の形態においては、ＰＵ３８０は一つのデバイスである。ＰＵ３８０と同じか異なるＰＵが１つ以上、マルチプロセッサシステム１００Ａ内に設けられてもよく、そのような変形例はすべて本発明の範囲内に含まれる。ＰＵ３８０は、図１１と関連づけて議論されるＰＵ５０４と実質的に類似するものであってもよく、異なるものであってもよい。
【００４７】
図７は、本発明の実施の形態に係るマルチプロセッサシステム１００Ａにおいて第１プロセッサ１０２Ｃと第２プロセッサ１０２Ｄを協調動作させる方法を説明するフローチャートである。以下、図６と図７を参照して説明する。
【００４８】
命令が第１プロセッサ１０２Ｃの発行ステージ１２２Ｃにおいて発行される（ステップ６００）。マルチプロセッサシステム１００Ａは、第２プロセッサ１０２Ｄが待ち状態７０６にあるかどうかを判定する（ステップ６０２）。この判定は、ＰＵ３８０によってなされてもよいが、他のプロセッサがこのために用いられてもよい。
【００４９】
第２プロセッサ１０２Ｄが待ち状態７０６にないならば、命令は第１プロセッサ１０２Ｃのバッファ１２８Ｃ内にバッファされる（ステップ６０４）。その後、その命令のために、２つの実行部１１２Ｃと１１４Ｃのどちらかを利用して実行ステージ結果が生成される（ステップ６０６）。実行ステージ結果は、（第１実行部１１２Ｃで生成された実行結果のための）実行結果マルチプレクサ１３０Ｃと（第２実行部１１４Ｃで生成された実行結果のための）実行結果マルチプレクサ１３２Ｃのどちらかにおいて選択される（ステップ６０８）。実施の形態において、ＰＵ３８０は実行結果マルチプレクサ１３０Ｃおよび／または１３２Ｃを制御してもよい。その後、実行ステージ結果は、第１プロセッサ１０２Ｃのレジスタファイル１１０Ｃで受け取られる（ステップ６１０）。
【００５０】
ステップ６０２に戻り、第２プロセッサ１０２Ｄが待ち状態７０６にある場合、第１プロセッサ１０２Ｃの発行ステージ１２２Ｃにおいて発行された少なくとも１つの命令が、通信リンク１２４Ｃを経由して第２プロセッサ１０２Ｄの処理パイプラインの実行ステージに転送され、その中で処理される（ステップ６１２）。ステップ６１２の命令の転送は、第２プロセッサ１０２Ｄの処理パイプラインの少なくとも１つの初期ステージ（実行ステージより前のステージ）をバイパスしてなされる（ステップ６１４）。
【００５１】
第１プロセッサ１０２Ｃから転送された一つ以上の命令と第２プロセッサ１０２Ｄの発行ステージ１２２Ｄにおいて発行された命令のどちらかを選択するように命令セレクタ・マルチプレクサ１２６Ｄが指示される（ステップ６１６）。いったん命令セレクタ・マルチプレクサ１２６Ｄが第１プロセッサ１０２Ｃから転送された命令を選択すると、その命令は命令セレクタ・マルチプレクサ１２６Ｄを通ってバッファ１２８Ｄに到達する。その転送された命令はバッファ１２８Ｄにバッファされる（ステップ６１８）。その後、その命令は第１実行部１１２Ｄまたは第２実行部１１４Ｄに与えられる。実施の形態において、ＰＵ３８０は命令セレクタ・マルチプレクサ１２６Ｄにおける選択動作を制御してもよい。
【００５２】
転送された命令に対して実行ステージ結果が生成される（ステップ６２０）。その後、転送された命令に対して生成された実行ステージ結果は、第１プロセッサ１０２Ｃに戻される（ステップ６２２）。具体的には、転送された命令に対する実行ステージ結果は、通信リンク１３４Ｄを通って第１実行結果マルチプレクサ１３０Ｃに与えられるか、あるいは、通信リンク１３６Ｄを通って第２実行結果マルチプレクサ１３２Ｃに与えられる。ここで、第１実行結果マルチプレクサ１３０Ｃと第２実行結果マルチプレクサ１３２Ｃは両方とも第１プロセッサ１０２Ｃ内にある。
【００５３】
第２プロセッサ１０２Ｄから返された実行ステージ結果と第１プロセッサ１０２Ｃの処理パイプラインを通って生成された実行ステージ結果のどちらかを選択するように、実行結果マルチプレクサ１３０Ｃまたは１３２Ｃが指示される（ステップ６０８）。実行結果マルチプレクサ１３０Ｃまたは１３２Ｃが、第２プロセッサ１０２Ｄから返された実行ステージ結果を選択すると、その返された実行ステージ結果は、レジスタファイル１１０Ｃで受け取られる（ステップ６１０）。実施の形態において、ＰＵ３８０は実行結果マルチプレクサ１３０Ｃと１３２Ｃにおける選択動作を制御してもよい。
【００５４】
実施の形態において、第１プロセッサ１０２Ｃと第２プロセッサ１０２Ｄが、図７の方法のように並行して命令を実行するとき、ＰＵ３８０は、第１プロセッサ１０２Ｃの選択された部分と第２プロセッサ１０２Ｄの選択された部分に対して電力削減戦略を実行してもよい。ある実施の形態において、そのような並列実行の間、図６で例示した第１プロセッサ１０２Ｃの構成要素の全てまたは実質的に全てが、電力削減戦略の実施対象となってもよい。さらに、第２プロセッサ１０２Ｄのバッファ１２８Ｄ、実行部１１２Ｄおよび／または実行部１１４Ｄも、電力削減戦略の実施対象となってもよい。
【００５５】
以上、第１プロセッサ１０２Ｃが第２プロセッサ１０２Ｄの実行ステージを利用し、その後、第２プロセッサ１０２Ｄから実行結果を読み出す方法を実施の形態に沿って説明した。他の実施の形態において、第２プロセッサ１０２Ｄが、第１プロセッサ１０２Ｃの実行ステージを同様に利用し、その後、第１プロセッサ１０２Ｃから実行ステージ結果を読み出せるように構成してもよい。しかし、ここでは、簡単のため、そのような他の実施の形態の方法は詳細には説明しない。
【００５６】
図８は、本発明の実施の形態にしたがって動作する４つのプロセッサ１０２Ｃ、１０２Ｅ、１０２Ｄ、および１０２Ｆの状態とモードをリストしたテーブルである。なお、プロセッサ１０２Ｅと１０２Ｆはこれまでの図面には図示されていない。
【００５７】
実施の形態において、プロセッサ１０２Ｃと１０２Ｅはマスタプロセッサであり、プロセッサ１０２Ｄと１０２Ｆは二次的なプロセッサであってもよい。プロセッサ１０２Ｃと１０２Ｅの両方が実行状態７０４にある間、プロセッサ１０２Ｃは低電力モードにあり、プロセッサ１０２Ｅは通常モードにある。プロセッサ１０２Ｃ、１０２Ｅが二次的なプロセッサ１０２Ｄ、１０２Ｆとそれぞれペアを構成する状態においてこのバリエーションを説明する。具体的には、図８の表において、プロセッサ１０２Ｄ（プロセッサ１０２Ｃとペアを構成するプロセッサ）は待ち状態７０６にあり、プロセッサ１０２Ｆ（プロセッサ１０２Ｅとペアを構成するプロセッサ）は実行状態７０４にある。また、各プロセッサはそれとペアを構成するプロセッサと同じ動作モードにあることがわかる。すなわち、プロセッサ１０２Ｃとプロセッサ１０２Ｄは両方とも低電力モードにあり、プロセッサ１０２Ｅとプロセッサ１０２Ｆは両方とも通常モードにある。このように、図８で示される組み合わせの内、それぞれのプロセッサペアにおいて二次的なプロセッサの状態が、好ましくは、それが属するプロセッサペア全体の動作モードを決定する。
【００５８】
本発明の実施の形態に従ってプロセッサのペアの動作モード（すなわち通常モードまたは低電力モード）を制御する方法を、図９を参照して以下に述べる。以下、図６で例示されるプロセッサペアを参照する。もっとも、以下で述べる方法は、ここで開示される発明の原理と整合する任意のプロセッサペアに適用することができる。
【００５９】
図９の方法に関して、低電力モードに入っているプロセッサペアにとって好ましい状態の１つは、プロセッサペアのマスタプロセッサが実行状態７０４にあり、プロセッサペアのスレーブプロセッサが待ち状態７０６にあることである点に留意する。
【００６０】
以下で説明する方法において、各種の問い合わせと決定は、ＰＵ３８０によってなされてもよい。もっとも、他の実施の形態においては、その問い合わせと決定は、２つのプロセッサ１０２Ｃ、１０２Ｄと通信する他の処理デバイスによってなされてもよい。
【００６１】
この方法は、ステップ９０２から始まり、ステップ９０４においてプロセッサ１０２Ｄの状態が変わったかどうかが判定される。プロセッサ１０２Ｄの状態が変わらなかったなら、この方法はステップ９０４を繰り返す。プロセッサ１０２Ｄの状態が変わったなら、この方法は新しい状態について一連の問い合わせを行う。
【００６２】
方法９００において、ここから先は３つの基本的なパスに分かれる。プロセッサ１０２Ｄの新しい状態が、ステップ９０６と９１６においてそれぞれ判定されるように、待ち状態７０６でもなく、かつ、実行状態７０４でもないならば、この方法はステップ９０４に戻る。プロセッサ１０２Ｄの新しい状態が待ち状態７０６であるならば、この方法はステップ９０８から９１４までの少なくとも一部を実行し始める。プロセッサ１０２Ｄの新しい状態が実行状態７０４であるならば、この方法はステップ９１８から９２４までの少なくとも一部を実行し始める。
【００６３】
プロセッサ１０２Ｄの新しい状態が待ち状態７０６であるなら、この方法は図８のタスクテーブルをチェックし（ステップ９０８）、プロセッサ１０２Ｄとペアになっているプロセッサ１０２Ｃが実行状態７０４にあり、かつ、通常モードにあるかどうかを判定する（ステップ９１０）。プロセッサ１０２Ｃがこれらの条件をどちらも満たすことがないなら、この方法はステップ９０４に戻る。これらの条件がどちらも満たされるなら、この方法はプロセッサ１０２Ｃとプロセッサ１０２Ｄの両方を低電力モードに設定し（ステップ９１２）、動作モードの変化を適切に反映するために図８のタスクテーブルを更新する（ステップ９１４）。
【００６４】
ステップ９０６においてプロセッサ１０２Ｄの新しい状態が待ち状態７０６でないと判定され、かつ、ステップ９１６においてその新しい状態は実行状態７０４であると判定されるなら、この方法はタスクテーブルをチェックし（ステップ９１８）、プロセッサ１０２Ｃが低電力モードにあるかどうかを判定する（ステップ９２０）。プロセッサ１０２Ｃが低電力モードにないなら、この方法はステップ９０４に戻る。プロセッサ１０２Ｃが低電力モードにあるなら、この方法はプロセッサ１０２Ｃ−プロセッサ１０２Ｄのプロセッサペアを通常モードに設定し（ステップ９２２）、図８のテーブルを適切に更新する（ステップ９２４）。前述の手順の背後にある論理は、プロセッサ１０２Ｄが実行状態７０４にあるときは、プロセッサ１０２Ｃ−１０２Ｄのペアは低電力モードにしてはならないということである。したがって、ステップ９２０においてプロセッサ１０２Ｃが低電力モードにあると判定されるなら、この方法は、ステップ９２２においてプロセッサ１０２Ｃ−１０２Ｄのペアを通常モードに設定することによってこの状況を修正するよう動作する。
【００６５】
実施の形態において、図７のプロセッサペアのタスク共有方法と、図９のプロセッサペアの動作モード制御方法は、並行して行われてもよい。この並列実行が可能となるのは、プロセッサペアが通常モードで動作しているか、低電力モードで動作しているかに関係なく、図６のタスク共有方法を当該プロセッサペア内で実行することができるからである。
【００６６】
上述のプロセッサペアの動作モード制御方法は、プロセッサ１０２Ｃ−１０２Ｄのペアにおける両方のプロセッサの状態が許すときはいつでも、当該プロセッサペアを低電力モードに設定することによって消費電力を最小にするように動作するのが好ましい。図９で説明した方法は、マルチプロセッサシステム内の任意の望ましい数のプロセッサペア上で実施することができ、それによってマルチプロセッサシステム全体を通じてエネルギーを節約することができる。ここに開示された発明の原理によって電力がどれくらい節約できるか、図１０で例を示して議論する。
【００６７】
図１０は、マルチプロセッサシステムにおいてプロセッサ協調動作に対する従来のアプローチと好ましい実施の形態のアプローチのそれぞれを採用した場合の電力節約レベルを示す図である。図１０は、大きく分けて４つの部分を含み、それらのうちの２つの部分は共通期間におけるいろいろなプロセッサの消費電力レベルを示している。第１部分１０１０は、４つのプロセッサ１０２Ｃ、１０２Ｅ、１０２Ｄおよび１０２Ｆの共通期間における状態（アイドル状態、待ち状態、または実行状態）を示す。ここで、プロセッサ１０２Ｃとプロセッサ１０２Ｄはプロセッサペアを構成し、プロセッサ１０２Ｃはマスタプロセッサであり、プロセッサ１０２Ｄはスレーブプロセッサである。同様に、プロセッサ１０２Ｅと１０２Ｆはプロセッサペアを構成し、プロセッサ１０２Ｅはマスタプロセッサであり、プロセッサ１０２Ｆはスレーブプロセッサである。
【００６８】
チャートの第２部分１０２０は、好ましい実施の形態における４つのプロセッサの共通期間の動作モードを示す。第３部分１０３０は、好ましい実施の形態におけるプロセッサの共通期間の消費電力を示す。第４部分１０４０は、従来のアプローチにおけるプロセッサの共通期間の消費電力を示す。
【００６９】
図１０の第１部分１０１０には４つの時間区分が示されている。第１時間区分において、４つのプロセッサはすべて実行状態７０４にあり、実行すべきタスクをもつ。第２時間区分において、プロセッサ１０２Ｄ以外の全てのプロセッサは実行状態７０４にあるが、プロセッサ１０２Ｄは待ち状態７０６にあり、実行すべきタスクをもたない。第３時間区分では、プロセッサ１０２Ｃとプロセッサ１０２Ｅは実行状態７０４にあり、プロセッサ１０２Ｄとプロセッサ１０２Ｆは待ち状態７０６にある。第４時間区分では、プロセッサ１０２Ｃとプロセッサ１０２Ｅは、一部の区間では実行状態７０４にあり、別の区間ではアイドル状態７０２にある。また、第４時間区分では、プロセッサ１０２Ｄは実行状態７０４にあり、プロセッサ１０２Ｆは待ち状態７０６にある。
【００７０】
チャートの第２部分１０２０は、第１時間区分では、好ましい実施の形態において４つのプロセッサがすべて通常モードにあることを示している。この事実と整合性のあることとして、チャートの第４部分１０４０で示す従来のアプローチにおける４つのプロセッサの消費電力レベルと、チャートの第３部分１０３０で示す好ましい実施の形態における４つのプロセッサの消費電力レベルとは、実質的に同じである。
【００７１】
第２時間区分では、プロセッサ１０２Ｄは待ち状態７０６にあり、一方、他の残りのプロセッサは実行状態７０４にある。従来のアプローチにおけるプロセッサ群１０４０の消費電力を見ると、第１時間区分と比較した場合、第２時間区分におけるプロセッサ１０２Ｄの消費電力がほんのわずかだけ減少していることがわかる。それとは対照的に、好ましい実施の形態におけるプロセッサ群１０３０の消費電力を見ると、プロセッサ１０２Ｃとプロセッサ１０２Ｄの両方の消費電力が相当量減少していることがわかる。これは、実施の形態においては、プロセッサ１０２Ｃとプロセッサ１０２Ｄの両方が第２時間区分において低電力モード（チャートの第２部分１０２０参照）にあることによる。好ましくは、プロセッサ１０２Ｄにおいてタスク３が終了すると、プロセッサ１０２Ｃ−１０２Ｄのペアが処理タスクを共有することができるようになり、それによってプロセッサ１０２Ｃとプロセッサ１０２Ｄが低電力モードで動作することが可能になる。チャートの第３部分１０３０のプロセッサ１０２Ｃおよびプロセッサ１０２Ｄに対して示された消費電力の減少の程度は、動作周波数の低減と供給電圧の低減の両方がプロセッサ１０２Ｃ−１０２Ｄのペアに対して効果を発揮した状態に対応するものである。
【００７２】
第３時間区分では、プロセッサ１０２Ｄとプロセッサ１０２Ｆは待ち状態７０６にあり、プロセッサ１０２Ｃとプロセッサ１０２Ｆは実行状態７０４にある。従来のアプローチにおけるプロセッサ群１０４０の消費電力について見ると、プロセッサ１０２Ｃとプロセッサ１０２Ｅについては消費電力は減少しないが、プロセッサ１０２Ｄとプロセッサ１０２Ｆについては消費電力が適度に減少しているのがわかる。従来のアプローチにおけるプロセッサ群１０４０については、プロセッサ１０２Ｄとプロセッサ１０２Ｆが待ち状態７０６にあることの結果としてこれらのプロセッサについては動作モードに変化が生じないから、プロセッサ１０２Ｃとプロセッサ１０２Ｅについては何ら電力が節約されない点に留意する。
【００７３】
それとは対照的に、好ましい実施の形態におけるプロセッサ群１０３０の消費電力については、４つのプロセッサすべてについて大きな消費電力の減少が見られる。４つのすべてのプロセッサが低電力モードで動作することができるので、このように電力節約量が増える。プロセッサペア（１０２Ｃ−１０２Ｄおよび１０２Ｅ−１０２Ｆ）の各々が実行状態７０４にある１つのプロセッサと、待ち状態７０６にある別のプロセッサを含むので、低電力モードが利用可能になり、それによって、両方のプロセッサペアが低電力モードで動作するために必要な条件が整えられる。
【００７４】
以上、好ましい実施の形態におけるプロセッサ群が従来のアプローチにおけるプロセッサ群よりも消費電力を減らすことができる各種の要因を議論した。これらの同じ要因は、図１０のチャートの残りの部分にも当てはまる。簡潔さのために、図１０で例示される期間の他の時間区分に関する詳細な議論はここには記さない。
【００７５】
ここで議論された特徴を実現するのに適した、マルチプロセッサシステムに対する好ましいコンピュータアーキテクチャをこれから説明する。実施の形態によれば、マルチプロセッサシステムは、ゲームシステム、ホームターミナル、ＰＣシステム、サーバシステム、ワークステーションのようなメディアを豊富に用いるアプリケーションをスタンドアロン型および／または分散型で処理する機能をもつシングルチップソリューションとして実装することができる。例えば、ゲームシステムやホームターミナルのようなアプリケーションの場合、リアルタイムの演算が必要である。例えば、リアルタイムの分散型ゲームアプリケーションにおいて、ネットワーク型の画像復元、３Ｄコンピューターグラフィック、音声生成、ネットワーク通信、物理シミュレーション、人工知能処理のうち一つ以上は、ユーザにリアルタイムの感覚を体験させるために十分な速さで実行されなければならない。したがって、マルチプロセッサシステムにおける各プロセッサは、短く、かつ予測可能な時間内でタスクを完了できることが好ましい。
【００７６】
この目的を達成するために、このコンピュータアーキテクチャによれば、マルチプロセッサコンピュータシステムのすべてのプロセッサは、共通のコンピュータモジュール（セルともいう）から構成される。この共通のコンピュータモジュールは、共通の構成を有し、同一の命令セットアーキテクチャを用いるのが好ましい。マルチプロセッサコンピュータシステムは、複数のコンピュータプロセッサを用いて、一つ以上のクライアント、サーバ、ＰＣ、携帯端末、ゲーム機、ＰＤＡ、セットトップボックス、電気機器、デジタルテレビ、その他のデバイスから構成されてもよい。
【００７７】
必要に応じて、一つ以上のコンピュータシステムが一つのネットワークのメンバであってもよい。一貫性のあるモジュール構造により、マルチプロセッサコンピュータシステムによってアプリケーションおよびデータの効率的な高速処理が可能となり、かつネットワークを利用すれば、ネットワークを介してアプリケーションおよびデータを迅速に伝送することができる。またこの構造により、様々なサイズをもつネットワークのメンバを簡単に構築して各メンバの処理能力を強化することができ、これらのメンバによって処理されるアプリケーションを準備することも簡単になる。
【００７８】
図１１は、基本的な処理モジュールであるプロセッサエレメント（ＰＥ）５００を示す。ＰＥ５００は、Ｉ／Ｏインターフェース５０２、プロセッシングユニット（ＰＵ）５０４、および複数のサブプロセッシングユニット（ＳＰＵ）５０８（すなわち、ＳＰＵ５０８Ａ、５０８Ｂ、５０８Ｃ、５０８Ｄ）を含む。ローカル（すなわち内部）ＰＥバス５１２は、ＰＵ５０４、複数のＳＰＵ５０８、およびメモリインターフェース５１１間でデータおよびアプリケーションを伝送する。ローカルＰＥバス５１２は、例えば、従来のアーキテクチャであってもよいが、パケットスイッチネットワークとして実装することもできる。パケットスイッチネットワークとして実装すると、より多くのハードウェアが必要になるが、利用可能な帯域が広がる。
【００７９】
ＰＥ５００はディジタルロジック回路を実装する各種方法を利用して構成できる。ただし好適には、ＰＥ５００はシリコン基板上の相補的金属酸化膜半導体（ＣＭＯＳ）を用いる一つの集積回路として構成される。基板の他の材料には、ガリウム砒素、ガリウムアルミニウム砒素、および広範な種類の不純物を用いた他のいわゆるＩＩＩ−Ｂ族化合物が含まれる。ＰＥ５００はまた、超伝導材料を用いて高速単一磁束量子（ＲＳＦＱ）ロジック回路等として実装することもできる。
【００８０】
ＰＥ５００は、広帯域メモリコネクション５１６を介して共有メモリ（あるいはメインメモリ）５１４に密接に関連づけられる。このメモリ５１４は好適にはダイナミックランダムアクセスメモリ（ＤＲＡＭ）であるが、スタティックランダムアクセスメモリ（ＳＲＡＭ）、磁気ランダムアクセスメモリ（ＭＲＡＭ）、光学メモリ、またはホログラフィックメモリ等の他の手段を用いて実装してもよい。
【００８１】
ＰＵ５０４および複数のＳＰＵ５０８は、それぞれ、ダイレクトメモリアクセス（ＤＭＡ）機能を有するメモリフローコントローラ（ＭＦＣ）と接続されることが望ましい。ＭＦＣは、メモリインターフェース５１１と協働して、ＤＲＡＭ５１４と、ＰＥ５００の複数のＳＰＵ５０８、ＰＵ５０４との間のデータの転送を円滑にするものである。ここで、ＤＭＡＣおよび／またはメモリインターフェース５１１は、複数のＳＰＵ５０８やＰＵ５０４と一体化してもよく、それらとは別に設置してもよい。実際に、ＤＭＡＣの機能および／またはメモリインターフェース５１１の機能は、１つ以上（好ましくはすべて）のＳＰＵ５０８およびＰＵ５０４と一体化できる。ここで、ＤＲＡＭ５１４もまた、ＰＥ５００と一体化してもよく、ＰＥ５００とは別に設置してもよい。例えば、ＤＲＡＭ５１４は図に示すようにチップ外部に設けてもよく、集積方式でチップに内蔵してもよい。
【００８２】
ＰＵ５０４は、例えばスタンドアロン式のデータおよびアプリケーション処理が可能な標準的なプロセッサでもよい。動作時には、ＰＵ５０４は複数のＳＰＵによるデータおよびアプリケーションの処理のスケジューリングおよび調整を行う。ＳＰＵは、好適には、一命令複数データ（ＳＩＭＤ）プロセッサである。ＰＵ５０４の制御下で、複数のＳＰＵはデータおよびアプリケーションの処理を並列に、かつ独立して行う。ＰＵ５０４としては、ＲＩＳＣ（Reduced Instruction-Set Computing）技術を採用したマイクロプロセッサアーキテクチャであるＰｏｗｅｒＰＣ（登録商標）コアを用いることが好ましい。ＲＩＳＣは単純な命令の組み合わせによってより複雑な命令を実行する。このようにして、プロセッサのタイミングは、より簡単でより速いオペレーションに基づくものとなり、与えられたクロック速度に対してより多くの命令を実行することが可能となる。
【００８３】
ここで、ＰＵ５０４は、複数のＳＰＵ５０８のうちの一つが、残りのＳＰＵ５０８によるデータとアプリケーションの処理をスケジューリングして統括するメインプロセッシングユニットの役割を果たすことによって実装されてもよい。さらに、ＰＥ５００内において、複数のＰＵを実装してもよい。
【００８４】
このモジュール構造によれば、ある特定のコンピュータシステムで使用されるＰＥ５００の数は、そのシステムが必要とする処理能力に基づく。例えば、サーバは四つのＰＥ５００、ワークステーションは二つのＰＥ５００、ＰＤＡは一つのＰＥ５００を用いるなどである。ある特定のソフトウェアセルを処理するために割り当てられるＰＥ５００内のＳＰＵの数は、そのセル内のプログラムおよびデータの複雑さと規模に依存する。そして、ＰＥ５００は、マルチプロセッサシステム１００Ａに対応する。すなわちＰＵ５０４および複数のＳＰＵ５０８は、複数のプロセッサ１０２Ａ〜１０２Ｄに対応する。そしてＰＥ５００は、マルチプロセッサシステム１００Ａの上述の機能を有する。
【００８５】
図１２は、ＳＰＵ５０８の好適な構造と機能を示す図である。ＳＰＵ５０８のアーキテクチャは、汎用プロセッサ（幅広いアプリケーションにおいて高い平均性能を実現するように設計されているもの）と特殊用途のプロセッサ（一つのアプリケーションにおいて高い性能を実現するように設計されている）との間に位置するものであることが望ましい。ＳＰＵ５０８は、ゲームアプリケーション、メディアアプリケーション、ブロードバンドシステムなどにおいて高い性能を実現すると共に、リアルタイムアプリケーションのプログラマに高度な制御自由度を提供するように設計されている。ＳＰＵ５０８の機能には、グラフィックジオメトリパイプライン、サーフェス分割、高速フーリエ変換、画像処理キーワード、ストリーム処理、ＭＰＥＧエンコード／デコード、暗号化／復号、デバイスドライバ拡張、モデリング、ゲーム物理、コンテンツ制作、音声合成および音声処理などを挙げることができる。
【００８６】
ＳＰＵ５０８は、二つの基本機能ユニット、すなわちＳＰＵコア５１０Ａとメモリフローコントローラ（ＭＦＣ）５１０Ｂを有する。ＳＰＵコア５１０Ａは、プログラムの実行、データの操作などを担うものであり、一方、ＭＦＣ５１０Ｂは、ＳＰＵコア５１０Ａと、当該システムのＤＲＡＭ５１４との間のデータ転送に関連する機能を担うものである。
【００８７】
ＳＰＵコア５１０Ａは、ローカルメモリ５５０と、命令（インストラクション）ユニット（ＩＵ）５５２と、レジスタ５５４と、一つ以上の浮動小数点実行ステージ５５６と、一つ以上の固定小数点実行ステージ５５８とを有する。ローカルメモリ５５０は、ＳＲＡＭのようなシングルポートのＲＡＭを用いて実装されることが望ましい。メモリへのアクセスのレイテンシを軽減するために、従来のほとんどのプロセッサはキャッシュを用いるが、ＳＰＵコア５１０Ａは、キャッシュではなく、比較的小さいローカルメモリ５５０を用いる。実際には、リアルタイムのアプリケーション（およびここで言及したほかのアプリケーション）のプログラマにとって、メモリアクセスのレイテンシを一貫性があって予測可能なものとするために、ＳＰＵ５０８内にキャッシュメモリアーキテクチャを用いることは好ましくない。キャッシュメモリのキャッシュヒット／ミス特性は、数サイクルから数百サイクルの範囲内でばらつきのある、不規則なメモリアクセス回数を生じさせる。このような不規則性は、例えばリアルタイムアプリケーションのプログラミングに望まれるアクセスタイミングの予測可能性を下げてしまう。ローカルメモリＳＲＡＭ５５０においてデータ演算にＤＭＡ転送をオーバーラップさせることで、レイテンシを隠すことができる。これはリアルタイムアプリケーションのプログラミングに高い制御自由度を提供する。ＤＭＡ転送と関連するレイテンシおよび命令のオーバーヘッドは、キャッシュミスに対処するためのレイテンシより長いため、ＳＲＡＭローカルメモリアプローチは、ＤＭＡ転送サイズが十分大きくかつ十分予測可能である場合（例えばデータが必要となる前にＤＭＡコマンドを発行することができる場合）に、有利である。
【００８８】
複数のＳＰＵ５０８のうちのいずれか一つの上で実行されるプログラムは、ローカルアドレスを用いて、そのＳＰＵと関連づけられたローカルメモリ５５０を参照する。なお、ローカルメモリ５５０の各位置にはシステム全体のメモリマップ内の実アドレス（ＲＡ；Real Address）が付与されている。これにより、特権レベルのソフトウェアがローカルメモリ５５０をあるプロセスの実効アドレス（ＥＡ；Effective Address）にマッピングすることが可能となり、二つのローカルメモリ５５０間のＤＭＡ転送が容易になる。ＰＵ５０４は、実効アドレスを用いてローカルメモリ５５０に直接アクセスすることもできる。ローカルメモリ５５０は、２５６キロバイトの容量を有し、レジスタ５５４の容量は１２８×１２８ビットであることが望ましい。
【００８９】
ＳＰＵコア５１０Ａは、演算パイプラインを用いて実装されることが望ましく、その演算パイプラインにおいて論理命令がパイプライン方式で処理される。パイプラインは、命令を処理する任意の数のステージに分けることができるが、通常、パイプラインは、一つ以上の命令のフェッチ、命令のデコード、命令間の依存性のチェック、命令の発行、および命令の実行から構成される。これに関連して、命令ユニット５５２は、命令バッファと、命令デコード回路と、依存性チェック回路と、命令発行回路とを含む。
【００９０】
命令バッファは、ローカルメモリ５５０と接続されたレジスタであって、命令がフェッチされたときにこれらの命令を一時的に格納することができるレジスタを複数有することが好ましい。命令バッファは、すべての命令が一つのグループとして（すなわち実質上同時に）レジスタから出力されるように動作することが好ましい。命令バッファはいかなるサイズであってもよいが、レジスタの数がおよそ２または３以下となるサイズであることが好ましい。
【００９１】
通常、デコード回路は命令を細分化し、その命令の機能を実行する論理的なマイクロオペレーションを発生させる。例えば、論理的なマイクロオペレーションは、算術オペレーションと論理オペレーションの指定、ローカルメモリ５５０に対するロードオペレーションとストアオペレーションの指定、レジスタソースオペランドおよび／または即値（immediate）データオペランドの指定などを行うことができる。デコード回路は、ターゲットのレジスタのアドレスや、構造リソースや、機能ユニットおよび／またはバスなどのような、命令が用いるリソースを指定してもよい。デコード回路は、リソースが必要とされる命令パイプラインのステージを示す情報を提供してもよい。命令デコード回路は、実質上同時に、命令バッファのレジスタの数と同じ数の命令をデコードするように動作可能であることが好ましい。
【００９２】
依存性チェック回路は、与えられた命令のオペランドがパイプラン内の他の命令のオペランドに依存するか否かを判定するためのテストを行うデジタルロジックを含む。他の命令と依存する場合、その与えられた命令は、（例えば、依存関係にある他の命令の実行が完了するのを許すなどして）、他のオペランドが更新されるまで実行されてはならない。依存性チェック回路は、デコード回路から同時に送信されてきた複数の命令の依存関係を判定することが好ましい。
【００９３】
命令発行回路は、浮動小数点実行ステージ５５６および／または固定小数点実行ステージ５５８に命令を発行することができる。
【００９４】
レジスタ５５４は、１２８エントリのレジスタファイルのような、比較的大きな統合レジスタファイルとして実装されることが好ましい。これにより、レジスタが枯渇するのを回避するためにレジスタのリネーム処理を行う必要がなくなるため、パイプラインを深くした高い周波数での実装が可能となる。リネーム処理のハードウェアは、一般的にプロセッシングシステムにおいて大きな実装面積を要し、また電力も消費する。したがって、ソフトウェアによるループアンローリングまたは他のインターリーブ技術によってレイテンシを補償することができる場合には、オペレーションを有利に実行することができる。
【００９５】
ＳＰＵコア５１０Ａは、クロックサイクル毎に複数の命令を発行するようなスーパースカラアーキテクチャで実装されることが好ましい。ＳＰＵコア５１０Ａは、命令バッファから同時にディスパッチされる命令の数として、例えば２と３の間の数（クロックサイクル毎に２つまたは３つの命令が発行されることを意味する）に対応する程度のスーパースカラとして動作可能であることが好ましい。必要とされる処理能力に応じて、浮動小数点実行ステージ５５６と固定小数点実行ステージ５５８の数を増減してもよい。好適な実施の形態では、浮動小数点実行ステージ５５６は毎秒３２ギガ浮動小数点オペレーション（３２ＧＦＬＯＰＳ）で動作し、固定小数点実行ステージ５５８は毎秒３２ギガオペレーション（３２ＧＯＰＳ）で動作する。
【００９６】
ＭＦＣ５１０Ｂは、バスインターフェースユニット（ＢＩＵ）５６４と、メモリマネジメントユニット（ＭＭＵ）５６２と、ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）５６０とを有することが望ましい。低電力消費の設計目的を達成するために、ＭＦＣ５１０Ｂは、ＤＭＡＣ５６０を除いて、ＳＰＵコア５１０Ａおよびバス５１２の半分の周波数（半分のスピード）で動作することが好ましい。ＭＦＣ５１０Ｂは、バス５１２からＳＰＵ５０８に入るデータと命令を操作する機能を有し、ＤＭＡＣのためにアドレス変換を実行し、データ一貫性のためにスヌープオペレーションを実行する。ＢＩＵ５６４は、バス５１２とＭＭＵ５６２とＤＭＡＣ５６０の間のインターフェースを提供する。このように、ＳＰＵ５０８（ＳＰＵコア５１０ＡとＭＦＣ５１０Ｂを含む）とＤＭＡＣ５６０は、物理的および／または論理的にバス５１２と接続されている。
【００９７】
ＭＭＵ５６２は、メモリアクセスのために（ＤＭＡコマンドから取得される）実効アドレスを実アドレスへ変換する機能をもつことが望ましい。例えば、ＭＭＵ５６２は、実効アドレスの上位ビットを実アドレスのビットに変換する。一方、下位のアドレスビットについては、変換できないようにしておき、実アドレスを形成しメモリにアクセスを要求するために物理的にも論理的にも用いられるようにすることが好ましい。具体的には、ＭＭＵ５６２は、６４ビットのメモリ管理モデルにもとづいて実装され、４Ｋバイト、６４Ｋバイト、１メガバイト、１６メガバイトのページサイズと２５６ＭＢのセグメントサイズを有する２６４バイトの実効アドレス空間を提供してもよい。ＭＭＵ５６２は、ＤＭＡコマンドのために、２６５バイトまでの仮想メモリと、２４２バイト（４テラバイト）の物理メモリをサポート可能であることが好ましい。ＭＭＵ５６２のハードウェアは、８エントリの完全連想ＳＬＢ、２５６エントリの４ウェイセット連想ＴＬＢ、ＴＬＢのための４×４代替マネジメントテーブル（ＲＭＴ）を含むものとすることができる。なお、ＲＭＴはハードウェアＴＬＢミスのハンドリングに用いられるものである。
【００９８】
ＤＭＡＣ５６０は、ＳＰＵコア５１０ＡからのＤＭＡコマンドと、ＰＵ５０４および／または他のＳＰＵのような他のデバイスからのＤＭＡコマンドとを管理する機能をもつことが望ましい。ＤＭＡコマンドは下記の３つのカテゴリがある。すなわち、ローカルメモリ５５０から共有メモリ５１４へデータを移動させるＰｕｔコマンド、共有メモリ５１４からローカルメモリ５５０へデータを移動させるＧｅｔコマンド、ＳＬＩコマンドと同期コマンドとを含むストレージコントロールコマンドである。同期コマンドは、アトミックコマンド、シグナルコマンド、および専用のバリアコマンドを含むものであってもよい。ＤＭＡコマンドに応じて、ＭＭＵ５６２は実効アドレスを実アドレスに変換し、この実アドレスはＢＩＵ５６４に転送される。
【００９９】
ＳＰＵコア５１０Ａはチャンネルインターフェースとデータインターフェースとを用いて、ＤＭＡＣ５６０内のインターフェースと通信（ＤＭＡコマンド、ステータスなどの送信）することが好ましい。ＳＰＵコア５１０Ａは、チャンネルインターフェースを介してＤＭＡコマンドをＤＭＡＣ５６０内のＤＭＡキューに送信する。いったん、ＤＭＡキューに格納されたＤＭＡコマンドは、ＤＭＡＣ５６０内の発行ロジックと完了ロジックにより操作される。一つのＤＭＡコマンドのためのすべてのバス・トランザクションが完了すると、チャンネルインターフェースを介して、一つの完了信号がＳＰＵコア５１０Ａに返送される。
【０１００】
図１３は、ＰＵ５０４の好ましい構造と機能を示す図である。ＰＵ５０４は、二つの基本機能ユニット、すなわちＰＵコア５０４Ａとメモリフローコントローラ（ＭＦＣ）５０４Ｂを有する。ＰＵコア５０４Ａは、プログラムの実行、データの操作、マルチプロセッサ管理機能などを担うものであり、一方、ＭＦＣ５０４Ｂは、ＰＵコア５０４Ａと、当該システム１００のメモリスペースとの間のデータ転送に関連する機能を担うものである。
【０１０１】
ＰＵコア５０４Ａは、Ｌ１キャッシュ５７０と、命令ユニット５７２と、レジスタ５７４と、少なくとも一つの浮動小数点実行ステージ５７６と、少なくとも一つの固定小数点実行ステージ５７８とを有する。Ｌ１キャッシュ５７０は、ＭＦＣ５１０Ｂを通じて共有メモリ１０６、プロセッサ１０２、あるいはメモリ空間の他の部分から受け取ったデータのキャッシング機能を提供する。ＰＵコア５０４Ａはスーパーパイプラインとして実装されることが好ましいため、命令ユニット５７２は、フェッチ、デコード、依存関係のチェック、発行などを含む多数のステージを有する命令パイプラインとして実装されることが好ましい。ＰＵコア５０４Ａは、スーパースカラ構造を有することが好ましく、それによって、クロックサイクル毎に命令ユニット５７２から２以上の命令が発行される。高い演算パワーを実現するために、浮動小数点実行ステージ５７６と固定小数点実行ステージ５７８は、パイプライン構成において複数のステージを有する。必要とされる処理能力に応じて、浮動小数点実行ステージ５７６と固定小数点実行ステージ５７８の数を増減してもよい。
【０１０２】
ＭＦＣ５０４Ｂは、バスインターフェースユニット（ＢＩＵ）５８０と、Ｌ２キャッシュ５８２と、キャッシュ不可ユニット（ＮＣＵ；Non-Cacheable Unit）５８４と、コアインターフェースユニット（ＣＩＵ）５８６と、メモリマネジメントユニット（ＭＭＵ）５８８とを有する。低電力消費の設計目的を達成するために、ＭＦＣ５０４Ｂのほとんどの部分は、ＰＵコア５０４Ａとバス５１２の半分の周波数（半分のスピード）で動作することが好ましい。
【０１０３】
ＢＩＵ５８０は、バス５１２と、Ｌ２キャッシュ５８２と、ＮＣＵ５８４のロジックブロックとの間のインターフェースを提供する。ＢＩＵ５８０は、完全に一貫性のあるメモリオペレーションを実行するために、マスターデバイスとして動作してもよく、バス５１２上のスレーブデバイスとして動作してもよい。マスターデバイスとして動作する場合、ＢＩＵ５８０は、Ｌ２キャッシュ５８２とＮＣＵ５８４に代わって、バス５１２へのロードリクエストとストアリクエストを発信する。ＢＩＵ５８０は、バス５１２へ送ることができるコマンドの総数を限定するコマンドのフローコントロールメカニズムを実装してもよい。バス５１２上のデータオペレーションは、８ビートになるように設計してもよく、したがって、ＢＩＵ５８０は、キャッシュラインが１２８バイト前後であり、一貫性と同期の粒度が１２８キロバイトとなるように設計されることが好ましい。
【０１０４】
Ｌ２キャッシュ５８２（およびそれをサポートするハードウェアロジック）は、５１２ＫＢデータをキャッシュするように設計されることが好ましい。例えば、Ｌ２キャッシュ５８２は、キャッシュ可能なロードとストア、データのプリフェッチ、命令フェッチ、命令のプリフェッチ、キャッシュオペレーション、バリアオペレーションを操作できる。Ｌ２キャッシュ５８２は、８ウェイセット・アソシエイティブ・システムであることが好ましい。Ｌ２キャッシュ５８２は、６つのキャストアウトキュー（例えば６つのＲＣマシン）に合わせた６つのリロードキューと、８つの（６４バイトの幅の）ストアキューとを有することができる。Ｌ２キャッシュ５８２は、Ｌ１キャッシュ５７０の中の一部または全てのデータのバックアップコピーを提供するように動作してもよい。これは特に、処理ノードがホットスワップ（動作中に変更）されたときに状態を復元するときに有用である。この構成は、Ｌ１キャッシュ５７０が、より少ないポートでさらに速く動作することを可能にするとともに、キャッシュ間の転送を速くすることができる（リクエストがＬ２キャッシュ５８２で止まることができるから）。この構成は、Ｌ２キャッシュ５８２にキャッシュの一貫性管理を任せるメカニズムも提供する。
【０１０５】
ＮＣＵ５８４は、インターフェースによってＣＩＵ５８６と、Ｌ２キャッシュ５８２と、ＢＩＵ５８０と接続されており、通常、ＰＵコア５０４Ａとメモリシステム間のキャッシュ不可なオペレーションをキューイングまたはバッファリングする回路として機能する。ＮＣＵ５８４は、ＰＵコア５０４Ａとの通信のうちの、Ｌ２キャッシュ５８２によって扱わない全ての通信を操作することが好ましい。ここで、Ｌ２キャッシュ５８２によって扱わないものとしては、キャッシュ不可なロードとストアや、バリアオペレーションや、キャッシュ一貫性オペレーションなどを挙げることができる。低電力消費の設計目的を達成するために、ＮＣＵ５８４は、半分のスピードで動作することが好ましい。
【０１０６】
ＣＩＵ５８６は、ＭＦＣ５０４ＢとＰＵコア５０４Ａとの境界に設けられ、浮動小数点実行ステージ５７６、固定小数点実行ステージ５７８、命令ユニット５７２、ＭＭＵ５８８から渡され、Ｌ２キャッシュ５８２とＮＣＵ５８４へ送られるリクエストのためのルーティング、アービトレイション、フローコントロールポイントとして動作する。ＰＵコア５０４ＡとＭＭＵ５８８はフルスピードで動作し、Ｌ２キャッシュ５８２とＮＣＵ５８４は２：１のスピード比で動作可能であることが好ましい。こうすることによって、ＣＩＵ５８６に周波数境界が存在することになり、この境界がもつ機能の一つは、二つの周波数領域間でリクエストを転送し、データをリロードする際に、周波数の交錯を適切に操作することである。
【０１０７】
ＣＩＵ５８６は、ロードユニット、ストアユニット、リロードユニットの３つの機能ブロックから構成される。さらに、データをプリフェッチする機能がＣＩＵ５８６により実行される。この機能は、ロードユニットの一部の機能であることが好ましい。ＣＩＵ５８６は、下記の動作を実行可能であることが好ましい：（ｉ）ＰＵコア５０４ＡとＭＭＵ５８８からロードリクエストとストアリクエストを受け取る、（ｉｉ）これらのリクエストをフルスピードクロック周波数から半分のスピードに変換する（２：１クロック周波数変換）、（ｉｉｉ）キャッシュ可能なリクエストをＬ２キャッシュ５８２へルーティングし、キャッシュ不可のリクエストをＮＣＵ５８４へルーティングする、（ｉｖ）Ｌ２キャッシュ５８２とＮＣＵ５８４へのリクエストが均等になるように調整する、（ｖ）リクエストが目標ウインドウ内で受け取られ、オーバーフローが発生しないように、Ｌ２キャッシュ５８２とＮＣＵ５８４へディスパッチされるリクエストのフロー制御を提供する、（ｖｉ）ロードリターンデータを受け取り、そのデータを浮動小数点実行ステージ５７６、固定小数点実行ステージ５７８、命令ユニット５７２、またはＭＭＵ５８８へルーティングする、（ｖｉｉ）スヌープリクエストを浮動小数点実行ステージ５７６、固定小数点実行ステージ５７８、命令ユニット５７２、またはＭＭＵ５８８へ渡す、（ｖｉｉｉ）ロードリターンデータとスヌープトラフィックを半分のスピードからフルスピードへ変換する。
【０１０８】
ＭＭＵ５８８は、第２レベルのアドレス変換機構のように、ＰＵコア５０４Ａのためにアドレス変換を提供することが好ましい。変換の第１レベルは、ＰＵコア５０４Ａ内において、セパレート命令と、ＭＭＵ５８８より遥かに小さくてかつ速いデータＥＲＡＴ（実効アドレスから実アドレスへの変換；Effective to Real Address Translation）アレイとにより提供されることが好ましい。
【０１０９】
ＰＵ５０４は６４ビットで実装され、４〜６ＧＨz、１０ＦＯ４（Ｆａｎ−ｏｕｔ−ｏｆ−ｆｏｕｒ）で動作することが好ましい。レジスタは６４ビットの長さを有することが好ましく（特定用途のための一つ以上のレジスタは６４ビットより小さいかもしれないが）、実効アドレスは６４ビットの長さを有することが好ましい。命令ユニット５７２、レジスタ５７４、および浮動小数点実行ステージ５７６と固定小数点実行ステージ５７８は、ＲＩＳＣコンピューティング技術を達成するためにＰｏｗｅｒＰＣ技術により実装されることが好ましい。
【０１１０】
このコンピュータシステムのモジュラー構造のさらなる詳細については、米国特許第６５２６４９１号公報に記載されている。その公報の記載によれば、基本処理モジュールであるプロセッサエレメント（ＰＥ）はモジュラー構造をもち、プロセッサエレメント内に任意の数のサブプロセッシングユニット（ＳＰＵ）を設けることができる。プロセッサエレメントが搭載されるＰＣ、サーバ、携帯機器、ゲーム機、家電製品などの各種情報機器に要求される処理性能に応じて、サブプロセッシングユニットの数を設計すればよい。また、情報機器には１つ以上のプロセッサエレメントを設けてもよく、プロセッサエレメントの数は、当該情報機器に要求される処理性能に応じて適宜選択することができる。さらにプロセッサエレメントを搭載したノードがネットワークを介して接続されてなる分散処理システムを構成してもよく、当該分散処理システムに要求される処理性能に応じて、各ノードに搭載されるプロセッサエレメントの数やプロセッサエレメント内のサブプロセッシングユニットの数を設計してもよい。プロセッサエレメントがモジュラー構造をもつことから、要求性能に応じてプロセッサエレメント内のサブプロセッシングユニットの数やプロセッサエレメントの数を任意に選択して実装することができ、システムに柔軟性や拡張性をもたせることができる。
【０１１１】
本発明の少なくとも１つのさらなる態様によれば、上述の方法および装置は、図示したような適切なハードウェアを用いて実現することができる。そのようなハードウェアは、標準的なデジタル回路、ソフトウェアおよび／またはファームウェアプログラムを実行可能な任意の既知のプロセッサ、プログラマブル・リード・オンリー・メモリ（ＰＲＯＭ）やプログラマブル・アレイ・ロジック・デバイス（ＰＡＬ）のような１つ以上のプログラマブルなデジタルデバイス／システムなど、任意の既知の技術を用いて実装してもよい。さらに、図示された装置は、いくつかの機能ブロックに分けて示されたが、そのような機能ブロックは別々の回路により実装され、かつ／または、１つ以上の機能ユニットに結合されてもよい。さらに、本発明の様々の態様は、ソフトウェアおよび／またはファームウェアプログラムにより実装されてもよく、それらのプログラムは、運送および／または配布の便宜のため、好適な記録媒体もしくはフロッピーディスク（商標または登録商標）、メモリチップなどのメディアに格納されてもよい。
【０１１２】
ここでは本発明の具体例について説明したが、これらの実施例は単に本発明の原理と応用を示すものである。したがって、請求項により定義された本発明の主旨および範囲から逸脱しないかぎり、上述した実施形態に対して様々な変更を加えることができる。
【図面の簡単な説明】
【０１１３】
【図１】本発明の実施の形態に係る、２つ以上のサブプロセッサ（ＳＰＵ）をもつマルチプロセッサシステムの構成図である。
【図２】図１のマルチプロセッサシステムの２つのプロセッサ間で並列処理を実行するための一つのアプローチを示す構成図である。
【図３】図１のマルチプロセッサにおいて、タスク処理を共有できるように接続された二つのプロセッサの構成図である。
【図４】図１のマルチプロセッサにおいて、二つのプロセッサがタスク処理を共有できるように接続され、当該二つのプロセッサ内で電力節約が可能となる構成を示す図である。
【図５】本発明の実施の形態に係るマルチプロセッサシステムにおいてプロセッサの３つの状態を示す状態図である。
【図６】本発明の実施の形態に係るマルチプロセッサシステムにおいて相互接続された２つのプロセッサの構成図である。
【図７】本発明の実施の形態に係るマルチプロセッサシステムにおいて２つのプロセッサを協調動作させる方法を説明するフローチャートである。
【図８】本発明の実施の形態に係るマルチプロセッサシステムにおいて４つのプロセッサの状態とモードを列挙したテーブルを示す図である。
【図９】図８に列挙された４つのプロセッサの内、２つのプロセッサを含むプロセッサペアの動作モードを制御する手順を示すフローチャートである。
【図１０】マルチプロセッサシステムにおいてプロセスを管理するための従来のアプローチと好ましい実施の形態のアプローチのそれぞれを採用した場合の消費電力レベルを示す図である。
【図１１】本発明の別の実施の形態に係るプロセッサエレメント（ＰＥ）の構成図である。
【図１２】図１１のシステムのサブプロセッシングユニット（ＳＰＵ）の構成図である。
【図１３】図１１のプロセッシングユニット（ＰＵ）の構成図である。
【符号の説明】
【０１１４】
１００Ａ  マルチプロセッサシステム、  １０２  プロセッサ、  １０４  ローカルメモリ、  １０６  共有メモリ、  １１０  レジスタファイル、  １１２、１１４  実行部、  １３０、１３２  実行結果マルチプレクサ。
【図１】
2007042074.tif 000003
【図２】
2007042074.tif 000004
【図３】
2007042074.tif 000005
【図４】
2007042074.tif 000006
【図５】
2007042074.tif 000007
【図６】
2007042074.tif 000008
【図７】
2007042074.tif 000009
【図８】
2007042074.tif 000010
【図９】
2007042074.tif 000011
【図１０】
2007042074.tif 000012
【図１１】
2007042074.tif 000013
【図１２】
2007042074.tif 000014
【図１３】
2007042074.tif 000015