(57)【特許請求の範囲】
【請求項１】
プロセッサにおいて、
第１クロック信号周波数および第１動作電圧を有する第１クロック・ドメインと、
第２クロック信号周波数および第２動作電圧を有する第２クロック・ドメインと、
第３クロック信号周波数および第３動作電圧を有する第３クロック・ドメインと、から構成され、
前記プロセッサは、前記第１および第２クロック・ドメインのクロック信号周波数および動作電圧をエネルギー遅延二乗積の比を最小にすることに従って制御し、前記比の分母は、第１時間間隔に対する前記エネルギー遅延二乗積であり、前記比の分子は、第２時間間隔に対する前記エネルギー遅延二乗積であり、前記第１時間間隔は前記第２時間間隔に先行しており、前記比が前記第１クロック信号周波数および前記第１動作電圧の複数のペアに対して同じである場合、最小の第１クロック信号周波数を有するペアを選択する、
ことを特徴とするプロセッサ。
【請求項２】
前記第１クロック・ドメインは、命令デコーダ、リネーミング・ユニット、シーケンサ、リオーダ・バッファ、および分岐予測ユニットを含むことを特徴とする請求項１記載のプロセッサ。
【請求項３】
前記第２クロック・ドメインは、実行ユニット、レジスタ・ファイル、および送出キューを含むことを特徴とする請求項１記載のプロセッサ。
【請求項４】
前記第３クロック・ドメインは、第２レベル・キャッシュ・メモリを含むことを特徴とする請求項１記載のプロセッサ。
【請求項５】
各クロック・ドメインは、前記クロック・ドメイン間の動作を同期させるための先入れ先出しキューを含むことを特徴とする請求項１記載のプロセッサ。
【請求項６】
第４および第５動作電圧を有する第４および第５クロック・ドメインをさらに含み、前記第２、第４、および第５のクロック・ドメインは、クロスバを介して相互間で情報を通信することができることを特徴とする請求項１記載のプロセッサ。
【請求項７】
前記第４または第５クロック・ドメインは、第１レベル・キャッシュ・メモリおよびメモリ・オーダ・バッファを含むことを特徴とする請求項６記載のプロセッサ。
【請求項８】
プロセッサによって実行される方法において、
第１時間間隔に対して前記プロセッサのクロック・ドメインのエネルギーおよび遅延を決定する段階と、
第２時間間隔に対して前記プロセッサのクロック・ドメインのエネルギーおよび遅延を決定する段階であって、前記第２時間間隔は、前記第１時間間隔よりも後である、段階と、
前記プロセッサのロジックの第１グループにおける動作電圧およびクロック信号周波数を調整し、前記第２時間間隔に対するエネルギー遅延二乗積と、前記第１時間間隔に対するエネルギー遅延二乗積との比を最小にし、前記第１時間間隔に対する前記エネルギー遅延二乗積は計算され、かつ前記第２時間間隔に対する前記エネルギー遅延二乗積は推定され、前記比が前記クロック信号周波数および前記動作電圧の複数のペアに対して同じである場合、最小のクロック信号周波数を有するペアが選択される段階と、
から構成されることを特徴とする方法。
【請求項９】
前記プロセッサのロジックの前記第１グループは、前記プロセッサ内の複数のクロック・ドメインの１つであることを特徴とする請求項８記載の方法。
【請求項１０】
前記第１および第２時間間隔に対するエネルギーおよび遅延を決定する前記段階、および、動作電圧およびクロック信号周波数を調整する前記段階は、互いに独立して、前記複数のクロック・ドメインのそれぞれのために実行されることを特徴とする請求項９記載の方法。
【請求項１１】
前記複数のクロック・ドメインは、参照クロック信号に依存することを特徴とする請求項１０記載の方法。
【請求項１２】
前記複数のクロック・ドメインは、少なくとも一部が、前記複数のクロック・ドメインに対応する複数の先入れ先出し（ＦＩＦＯ）キューを介して同期されることを特徴とする請求項１１記載の方法。
【請求項１３】
前記複数のクロック・ドメインは、フロント・エンド・ドメイン、バック・エンド・ドメイン、および第２レベル・キャッシュ・メモリ・ドメインを含むことを特徴とする請求項１２記載の方法。
【請求項１４】
前記フロント・エンド・ドメインは、命令デコーダ、リネーミング・ユニット、シーケンサ、リオーダ・バッファ、および分岐予測ユニットを含むことを特徴とする請求項１３記載の方法。
【請求項１５】
前記バック・エンド・ドメインは、実行ユニット、レジスタ・ファイル、および送出キューを含むことを特徴とする請求項１３記載の方法。
【請求項１６】
前記バック・エンド・ドメインは、メモリ・オーダ・バッファおよび第１レベル・キャッシュ・メモリを含むことを特徴とする請求項１３記載の方法。
【請求項１７】
複数の命令を格納するためのメモリと、
複数の独立したクロック周波数および独立した動作電圧を有する複数のクロック・ドメインを含むプロセッサであって、第１時間間隔に対応するエネルギー遅延二乗積と、第２時間間隔に対応するエネルギー遅延二乗積との比が前記複数のクロック・ドメインのそれぞれに対して最小になるように、前記複数の独立したクロック周波数および独立した動作電圧を調整し、前記第１時間間隔に対する前記エネルギー遅延二乗積は計算され、かつ前記第２時間間隔に対する前記エネルギー遅延二乗積は推定され、かつ前記比が前記独立したクロック信号周波数および前記独立した動作電圧の複数のペアに対して同じである場合、最小の独立したクロック信号周波数を有するペアを選択する、プロセッサと、
から構成されることを特徴とするシステム。
【請求項１８】
前記複数のクロック・ドメインは、複数のプロセッサ・パイプライン・ステージ内で複数の関数を実行するための複数の機能ユニットを含むことを特徴とする請求項１７記載のシステム。
【請求項１９】
前記複数のクロック・ドメインは、フロント・エンド・ドメインを含み、前記フロント・エンド・ドメインは、命令デコーダを含むことを特徴とする請求項１８記載のシステム。
【請求項２０】
前記複数のクロック・ドメインは、バック・エンド・ドメインを含み、前記バック・エンド・ドメインは、前記複数の命令を実行するための実行ユニットを含むことを特徴とする請求項１９記載のシステム。
【請求項２１】
前記複数のクロック・ドメインは、メモリ・ドメインを含み、前記メモリ・ドメインは、第２レベル・キャッシュ・メモリを含むことを特徴とする請求項２０記載のシステム。
【請求項２２】
前記複数のクロック・ドメインは、バック・エンド・ドメインを含み、前記バック・エンド・ドメインは、メモリ・オーダリング・バッファおよび第１レベル・キャッシュ・メモリを含むことを特徴とする請求項１９記載のシステム。
【請求項２３】
前記複数のクロック・ドメインのそれぞれは、前記対応するドメインが前記データ上で動作することができるまで、前記複数の命令に関連する格納データを一時的に格納するための少なくとも１つの先入れ先出しキューを含むことを特徴とする請求項２２記載のシステム。
【請求項２４】
前記バック・エンド・ドメインは、前記複数の命令を実行するための複数の実行ユニット、および、それを通って前記複数の実行ユニット間で情報を通信するための複数のクロスバを含むことを特徴とする請求項２３記載のシステム。
【請求項２５】
命令のセットがその上に格納された機械読取り可能な媒体であって、それがマシンによって実行されたとき、前記マシンは、
第１時間間隔に対するプロセッサのクロック・ドメインのエネルギーおよび遅延を決定する段階と、
第２時間間隔に対する前記プロセッサのクロック・ドメインのエネルギーおよび遅延を決定する段階であって、前記第２時間間隔は、前記第１時間間隔より後である、段階と、
前記プロセッサのロジックの第１グループにおける動作電圧およびクロック信号周波数を調整し、その結果、前記第２時間間隔に対するエネルギー遅延二乗積と、前記第１時間間隔に対するエネルギー遅延二乗積との比が最小にされ、前記比が前記クロック信号周波数および前記動作電圧の複数のペアに対して同じである場合、最小のクロック信号周波数を有するペアが選択される段階と、
を含む方法を実行することを特徴とする機械読取り可能な媒体。
【請求項２６】
前記第２時間間隔に対する前記エネルギーと遅延との積と、前記第１時間間隔に対する前記エネルギーと遅延との積の比が最小にされることを特徴とする請求項２５記載の機械読取り可能な媒体。
【請求項２７】
前記プロセッサのロジックの第１グループは、前記プロセッサ内の複数のクロック・ドメインの１つであることを特徴とする請求項２６記載の機械読取り可能な媒体。
【請求項２８】
前記第１および第２時間間隔に対するエネルギーおよび遅延を決定する前記段階、および、動作電圧およびクロック信号周波数を調整する前記段階は、相互に独立して前記複数のクロック・ドメインのそれぞれに対して実行されることを特徴とする請求項２７記載の機械読取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施例は、マイクロプロセッサ・アーキテクチャの分野に関する。より詳しくは、本発明の実施例は、マイクロプロセッサ内の多様な機能ユニットの周波数および動作電圧をスケールするための技術に関する。
【背景技術】
【０００２】
マイクロプロセッサの性能への影響を最小限にする一方で、マイクロプロセッサ内での電力の低減を促進するために、プロセッサのクロック周波数を低減させるような先行技術が開発されてきた。これらの先行技術には、プロセッサを多様なクロック・ドメインに分割するアーキテクチャがある。例えば、１つの先行技術は、整数パイプラインのための個別クロック・ドメイン、浮動小数点パイプラインのための個別クロック・ドメイン、およびメモリ・アクセス・ロジックのための個別クロック・ドメインを有する。
【０００３】
個々のクロック・ドメインを各パイプラインおよび／またはメモリ・アクセス・クラスタのために使用することにより、各クロック・ドメインを制御するために必要とされる回路の総量が、プロセッサの性能を維持することへの挑戦となる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開２００４／０６６０９２号公報
【特許文献２】国際公開２００３／０２１４２６号公報
【特許文献３】特開２００３−００６１７９号公報
【非特許文献】
【０００５】
【非特許文献１】千代延昭宏，“命令の振る舞いを利用した消費電力削減に関する検討”，情報処理学会研究報告，社団法人情報処理学会，２００４年７月３１日，第２００４巻，第８０号，ｐ．１７１
【０００６】
実施例および本発明は、添付図面の図中に制限ではなく例示として示され、そこでは、同様の参照番号は同様の要素を示す。
【図面の簡単な説明】
【０００７】
【図１】本発明の一実施例に従ったクロックおよび電圧スケーリング・アーキテクチャを示す。
【図２】本発明の一実施例が使用されたフロント・サイド・バス・コンピュータ・システムを示す。
【図３】本発明の一実施例が使用されたポイント・ツー・ポイント・コンピュータ・システムを示す。
【発明を実施するための形態】
【０００８】
本発明の実施例は、マイクロプロセッサのための周波数および電圧制御アーキテクチャに関する。より詳しくは、本発明の実施例は、マイクロプロセッサ内の複数のクロック・ドメインにクロックおよび動作電圧を分配し、かつ制御するための技術に関し、それによって、各ドメインの周波数および動作電圧を独立して制御することができる。
【０００９】
図１は、本発明の一実施例に従ったクロックおよび電圧のドメイン・アーキテクチャを示す。図１は、３つの基本のクロック・ドメイン、すなわち、トレース・キャッシュ１０２、分岐予測器１０３、リネーミング・ユニット１０４、解読ユニット１０５、シーケンサ１０６、フリー・リスト１０７、リネーミング・テーブル１０８、およびリオーダ・バッファ（ＲＯＢ）１０９を有するフロント・エンド・ドメイン１０１；メモリ・オーダ・バッファ（ＭＯＢ）１１１、第１レベル・キャッシュ１１２、フィジカル・レジスタ・ファイル１１３、送出キュー１１４、バス・インターフェイス１１６、および実行ユニット１１５を有するいくつかのバック・エンド・ドメイン１１０；および、第２レベル・キャッシュ・メモリ１１９を含むメモリ・ドメインに分割されたプロセッサ・アーキテクチャ１００を示す。一実施例において、バス・インターフェイスは、フロント・サイド・バス・インターフェイスであり、一方、他の実施例では、それはポイント・ツー・ポイント・バス・インターフェイスである。
【００１０】
フロント・エンド・ドメイン、バック・エンド・ドメイン、およびメモリ・ドメインのそれぞれは、多様なクロック・ドメイン間における情報の交換を同期させるために使用する少なくとも１つの先入れ先出し（ＦＩＦＯ）キュー１１７を有する。本発明の一実施例において、少なくともいくつかの同期キューは、プロセッサ内で他の機能を提供するキューであるが、他の実施例では、同期キューは、クロック・ドメイン制御アーキテクチャ専用である。クロック・ドメインに加えて、本発明の１つの実施例は、プロセッサを電圧ドメインに分割し、それらは互いに独立して規制することができる。少なくとも１つの実施例では、クロック・ドメインおよび電圧ドメインは同一であり、同じ機能ユニットを含むが、他の実施例では、クロック・ドメインおよび電圧ドメインは同一ではなく、異なる機能ユニットを含む。
【００１１】
本発明の一実施例において、多様なクロック・ドメイン内の各クロックは、参照クロックと同期される。しかしながら、他の実施例では、各ドメイン・クロックは、他のドメイン・クロックに対して同期されない。さらに、少なくとも１つの実施例では、バック・エンド・ドメインは、「クロスバ」として知られている信号によって相互に通信する。
【００１２】
クロックおよび電圧のドメインの各々を制御するために、本発明の１つの実施例は、ある時間間隔における各ドメインのエネルギーおよび性能を決定することによって、各ドメインのエネルギーと遅延の２乗（「遅延二乗」）との積（以下、「エネルギー遅延二乗積」という。）を最小にすることを試みる。少なくとも１つの実施例において、エネルギーおよび性能は、第１時間間隔中にドメインのエネルギーおよび遅延を計算し、かつ、後続の時間間隔中にドメインのエネルギーおよび遅延を推定することによって、２つの時間間隔において決定される。その後、後続の時間間隔に対する周波数および電圧の対が、第１時間間隔に対するエネルギー遅延二乗積と、後続の時間間隔に対するエネルギー遅延二乗積との間の比を最小にすることによって選択される。
【００１３】
例えば、本発明の一実施例では、間隔ｎ＋１に対するプロセッサのエネルギー「Ｅ」は、次の方程式に従って推定される。
【数１】
0005159931.tif 000002
【００１４】
上記の方程式中、「ＥＦＥ，ｎ」は時間間隔「ｎ」におけるフロント・エンド・ドメインのエネルギーであり、「Ｅｎ＋１」は時間間隔ｎ＋１におけるフロント・エンド・ドメインのエネルギーであり、「Ｖｎ＋１」は時間間隔ｎ＋１におけるフロント・エンド・ドメインの動作電圧であり、「Ｖｎ」は時間間隔ｎにおけるフロント・エンド・ドメインの動作電圧である。
【００１５】
フロント・エンド・ドメインの周波数の関数としてのプロセッサの性能は、付与された時間間隔に対するフロント・エンド・ドメインのクロック周波数、命令がフロント・エンドによってフェッチされる速度、およびマイクロオペレーション（解読された命令）が後続のパイプライン・ステージに転送される速度を用いて推定することができる。一実施例において、間隔がｎ＋１のときの性能推定「Ｔｎ＋１」は、次の方程式に従って推定される。
【数２】
0005159931.tif 000003
【００１６】
上記の方程式において、「ｐｎ」はｎ番目の間隔に対するフロント・エンド・キュー内のエントリの平均数であり、「ｂ」は分岐誤予測率である。値「１＋ｂ」はフェッチ・キューがロードされる率のインディケータであり、また、「１−ｐｎ」はキュー内のエントリの平均数のインディケータである。「Ｔｎ」は間隔「ｎ」におけるフロント・エンドの性能であり、「ｆｎ」は間隔ｎにおけるフロント・エンド・ドメインの周波数であり、「ｆｎ＋１」は後続の時間間隔におけるフロント・エンド・ドメインの周波数である。
【００１７】
一旦プロセッサのエネルギーおよび性能が上記の方程式に従って計算されると、一実施例において、フロント・エンド・ドメインの周波数および電圧は、各時間間隔ｎの終わりに、次の時間間隔ｎ＋１のために調整することができる。一実施例において、周波数および電圧の選択は、次の比に従って行われる。
【数３】
0005159931.tif 000004
【００１８】
間隔ｎ＋１のために選択される周波数および電圧は、上記の比を最小にするものである。２またはそれ以上の対が同一の値Ｒになると判明した場合、一実施例では、その後、最小の周波数を有する対が選択される。その後、フロント・エンド・ドメインの周波数および動作電圧は、間隔ｎ＋１に対して適切な値に設定され、そのプロセスは次の間隔のために繰り返される。
【００１９】
各バック・エンド周波数および動作電圧は、各バック・エンド・ドメインの動作電圧および周波数の関数としてプロセッサのエネルギーおよび性能を推定し、かつ、エネルギー性能積の間の比を最小にする周波数および動作電圧を間隔ｎ＋１と間隔ｎとの間で選択することによって、フロント・エンドと同様の方法で推定される。一実施例において、プロセッサのエネルギー「Ｅｎ」は、バック・エンド・ドメインのエネルギー「ＥＢＥ，ｎ」の関数として、次の方程式に従って推定される。
【数４】
0005159931.tif 000005
【００２０】
各バック・エンド・ドメインの周波数の関数としてのプロセッサの性能は、次の方程式に従って各間隔ｎ＋１において計算することができる。
【数５】
0005159931.tif 000006
【００２１】
上記の方程式において、ｍｎは、間隔ｎに対してコミットされたマイクロ・オペレーションの数で分割された第２レベルのキャッシュ・ミスの数であり、Ｌｑ，ｎは、実行ユニットを含む全てのバック・エンド・ドメインのための全てのマイクロ・オペレーション送出キューの平均利用率である。一旦、プロセッサのエネルギーおよび性能が上記の方程式に従って計算されると、一実施例では、バック・エンド・ドメイン周波数および電圧は、各時間間隔の終わりに、次の時間間隔ｎ＋１のために調整することができる。一実施例において、周波数および電圧の選択は、次の比率に従って行われる。
【数６】
0005159931.tif 000007
【００２２】
間隔ｎ＋１に対して選択される周波数および電圧は、上記の比を最小にするものである。２またはそれ以上の対が同一の値Ｒになることが判明した場合、一実施例では最小の周波数を有する対が選択される。その後、バック・エンド・ドメインの周波数および動作電圧は、間隔ｎ＋１に対して適切な値に設定され、そのプロセスは次の間隔に対して繰り返される。
【００２３】
図２は、本発明の一実施例が用いられたフロント・サイド・バス（ＦＳＢ）コンピュータ・システムを示す。プロセッサ２０５は、レベル１（Ｌ１）キャッシュ・メモリ２１０およびメイン・メモリ２１５からのデータにアクセスする。本発明の他の実施例では、キャッシュ・メモリは、レベル２（Ｌ２）キャッシュまたはコンピュータ・システムのメモリの階層内の他のメモリであってもよい。さらに、いくつかの実施例では、図２のコンピュータ・システムは、Ｌ１キャッシュおよびＬ２キャッシュの両方を含み、それらは、コヒーレンシ・データがＬ１キャッシュとＬ２キャッシュとの間で共有される包括的なキャッシュ階層を含む。
【００２４】
本発明の１つの実施例２０６が、図２のプロセッサ内に示される。しかしながら、本発明の他の実施例は、個別のバス・エージェントとしてシステム内の他の装置内で実行されてもよく、あるいは、ハードウェアまたはソフトウェア、またはそれらの組合せでシステムにわたっ分配されてもよい。
【００２５】
メイン・メモリは、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）、ハード・ディスク・ドライブ（ＨＤＤ）２２０、または、多様な格納装置および技術を含むネットワーク・インターフェイス２３０を介してコンピュータ・システムから遠隔に位置するメモリ・ソースのような多様なメモリ・ソース内で実行される。キャッシュ・メモリは、プロセッサ内、またはプロセッサのローカル・バス２０７上のようなプロセッサのすぐ近くにある。さらに、キャッシュ・メモリは、シックス・トランジスタ（６Ｔ）セルのような比較的高速のメモリ・セル、またはアクセス速度がほぼ同じか、より速い他のメモリ・セルを含んでもよい。
【００２６】
図２のコンピュータ・システムは、マイクロプロセッサのようなバス・エージェントのポイント・ツー・ポイント（ＰｔＰ）ネットワークであり、それは、ＰｔＰネットワーク上の各エージェントに専用のバス信号によって通信する。それとともに、あるいは少なくともそれと関連して、各バス・エージェントは、少なくとも本発明の１つの実施例２０６であり、格納動作はバス・エージェント間の迅速な方法で促進することができる。
【００２７】
図３は、ポイント・ツー・ポイント（ＰｔＰ）構成内に配置されたコンピュータ・システムを示す。特に、図３は、プロセッサ、メモリ、および入力／出力装置が、複数のポイント・ツー・ポイント・インターフェイスによって相互接続されたシステムを示す。
【００２８】
図３のシステムは、さらに、いくつかのプロセッサを含むが、明瞭化のためにプロセッサ３７０，３８０の２つのみが示される。プロセッサ３７０，３８０は、それぞれ、メモリ２２，２４に接続するためのローカル・メモリ・コントローラ・ハブ（ＭＣＨ）３７２，３８２を含む。プロセッサ３７０，３８０は、ＰｔＰインターフェイス回路３７８，３８８を使用して、ポイント・ツー・ポイント（ＰｔＰ）インターフェイス３５０を介してデータを交換する。プロセッサ３７０，３８０は、それぞれ、ポイント・ツー・ポイント・インターフェイス回路３７６，３９４，３８６，３９８を使用して、個々のＰｔＰインターフェイス３５２，３５４を介してチップセット３９０とデータを交換する。チップセット３９０は、さらに、高性能グラフィックス・インターフェイス３３９を介して高性能グラフィックス回路３３８とデータを交換する。
【００２９】
本発明の少なくとも１つの実施例は、図３のＰｔＰバス・エージェントの各々内のＰｔＰインターフェイス回路内に配置される。しかしながら、本発明の他の実施例は、図３のシステム内の他の回路、論理ユニット、または装置内に存在してもよい。さらに、本発明の他の実施例は、いくつかの回路、論理ユニット、または図３に図示された装置の全体にわたって分配されてもよい。
【００３０】
本発明は、例示としての実施例に関して記述されたが、これらの記述は、制限的な意味に解することを意図していない。他の実施例と同様に、本実施例の多様な修正は、本発明に関連する当業者にとって明らかであるが、本発明の精神および範囲内であると認められる。
【符号の説明】
【００３１】
１００  プロセッサ・アーキテクチャ
１０１  フロント・エンド・ドメイン
１０２  トレース・キャッシュ
１０３  分岐予測器
１０４  リネーミング・ユニット
１０５  解読ユニット
１０６  シーケンサ
１０７  フリー・リスト
１０８  リネーミング・テーブル
１０９  オーダ・バッファ（ＲＯＢ）
１１０  バック・エンド・ドメイン
１１１  メモリ・オーダ・バッファ（ＭＯＢ）
１１２  第１レベル・キャッシュ
１１３  フィジカル・レジスタ・ファイル
１１６  送出キュー１１４、バス・インターフェイス
１１５  実行ユニット
１１９  第２レベル・キャッシュ・メモリ
２０５  プロセッサ
２０７  ローカル・バス
２１０  レベル１（Ｌ１）キャッシュ・メモリ
２１５  メイン・メモリ
【図１】
0005159931.tif 000008
【図２】
0005159931.tif 000009
【図３】
0005159931.tif 000010