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