(57)【要約】処理ノードのパフォーマンス制御のための装置および方法を開示する。一実施形態において、システムは、処理ノードと、電力管理ユニットとを含み、電力管理ユニットは、複数の時間間隔の各々に対して、処理ノードの活動レベルを監視し、所与の間隔内の活動レベルが高活動閾値を超える場合、１つの連続する時間間隔の間、高動作点で処理ノードを動作させ、活動レベルが低活動閾値未満である場合、少なくとも１つの連続する時間間隔の間、低動作点で処理ノードを動作させる、または活動レベルが高活動閾値未満であり、かつ低活動閾値を超える場合、オペレーティングシステムソフトウェアが複数の動作点のうちの１つ以上の既定の中間動作点のうちの１つで処理ノードを動作させることを可能にするように構成されている。【選択図】図８
2013536532.tif 000002
【特許請求の範囲】
【請求項１】
処理ノードと、
複数の第１の時間間隔の各々に対して、前記処理ノードの活動レベルを監視するように構成された電力管理ユニットとを備え、
前記電力管理ユニットは、
所与の第１の時間間隔内の前記活動レベルが高活動閾値を超える場合、少なくとも１つの連続する第１の時間間隔の間、複数の動作点のうちの所定の高動作点で前記処理ノードを動作させ、
前記所与の第１の時間間隔内の前記活動レベルが低活動閾値未満である場合、前記少なくとも１つの連続する第１の時間間隔に対して、前記複数の動作点のうちの所定の低動作点で前記処理ノードを動作させ、
前記活動レベルが前記低活動閾値と前記高活動閾値との間にある場合、オペレーティングシステムソフトウェアが、前記少なくとも１つの連続する第１の時間間隔に対して、前記複数の動作点のうちの１つ以上の所定の中間動作点のうちの１つで前記処理ノードを動作させることを可能にするように、さらに構成されている、
システム。
【請求項２】
前記第１の時間間隔の各々の第１の継続時間は、前記処理ノードの前記活動レベルを監視するように前記オペレーティングシステムソフトウェアによって使用される複数の第２の時間間隔であって、前記監視された活動レベルが前記高活動閾値未満であり、かつ前記低活動閾値を超える場合に、前記処理ノードの前記動作点を変更するように前記オペレーティングシステムソフトウェアによってさらに使用される複数の第２の時間間隔の各々の第２の継続時間未満である、請求項１に記載のシステム。
【請求項３】
前記複数の第１の間隔の各々は、１００マイクロ秒以下の継続時間を有し、前記複数の第２の時間間隔の各々は、３０ミリ秒以上の継続時間を有する、請求項２に記載のシステム。
【請求項４】
前記所定の高動作点は、前記複数の動作点のうちの最高の動作点であり、前記所定の低動作点は、前記複数の動作点のうちの最低の非アイドル動作点であり、前記１つ以上の中間動作点は、前記所定の高動作点よりも低く、かつ前記所定の低動作点よりも高い、請求項１に記載のシステム。
【請求項５】
前記電力管理ユニットは、２つ以上の処理ノードの各々に対して、前記それぞれの活動レベルを前記高活動閾値および前記低活動閾値と比較するようにさらに構成され、前記２つ以上の処理ノードは各々、相互に独立してそれぞれの動作点で動作するように構成されている、請求項１に記載のシステム。
【請求項６】
前記電力管理ユニットは、前記少なくとも１つの処理ノードの前記動作点を変更する際に、クロック信号のクロック周波数を変更するように構成されている、請求項１に記載のシステム。
【請求項７】
最高動作点で動作するときの前記クロック周波数は、前記複数の動作点のうちの他の動作点のうちのいずれかで動作するときのクロック周波数を超え、最低の非アイドル動作点で動作するときの前記クロック周波数は、前記複数の動作点のうちの他の動作点のうちのいずれか１つで動作するときのクロック周波数未満であり、前記最低の非アイドル動作点での前記クロック周波数はゼロを超える、請求項５に記載のシステム。
【請求項８】
前記複数の動作点の各々は動作電圧をさらに含み、
前記電力管理ユニットは、前記処理ノードの前記動作点を変更するときに、前記処理ノードに提供される前記動作電圧を変更するように構成されている、請求項５に記載のシステム。
【請求項９】
前記電力管理ユニットは、
前記複数の第１の時間間隔のうちの所与の間隔内に受信されるリタイアされた命令の各指示に応答して、カウンタを増加させ、
前記複数の第１の時間間隔のうちの前記所与の間隔に対する命令リタイア数が、予測された命令リタイア数以下であると判定することに応答して、カウンタを減少させ、
前記複数の第１の時間間隔のうちの前記所与の間隔の終了時に前記カウンタによって提供されるカウンタ値を、前記高活動閾値および低活動閾値と比較するように構成されている、請求項１に記載のシステム。
【請求項１０】
前記電力管理ユニットは、前記カウンタを増加させる時に第１の重み係数を適用し、前記カウンタを減少させる時に第２の重み係数を適用するようにさらに構成されている、請求項８に記載のシステム。
【請求項１１】
前記電力管理ユニットは、前記命令リタイア数が、前記所与の第１の時間間隔内の既定値を超える場合、前記所与の第１の時間間隔内に前記カウンタをさらに増加させることを防止するように構成されているローパスフィルタを含む、請求項８に記載のシステム。
【請求項１２】
前記電力管理ユニットは、
所与の第１の時間間隔にわたる前記少なくとも１つの処理ノードの活動の移動平均を判定し、
前記活動の移動平均を前記高活動閾値および前記低活動閾値と比較するように構成されている、請求項１に記載のシステム。
【請求項１３】
前記管理ユニットは、
実行された命令、
リタイアされた命令、
発行された命令、
パイプライン失速、
メモリアクセスリクエスト、
キャッシュの失敗、
分岐の予測ミス、のうちの１つ以上の監視に基づいて、前記活動の移動平均を判定するように構成されている、請求項１１に記載のシステム。
【請求項１４】
前記電力管理ユニットは、前記少なくとも１つの処理ノードによって実行される１サイクルあたりの命令数を判定するように構成され、前記１サイクルあたりの命令数を前記高活動閾値および前記低活動閾値と比較するようにさらに構成されている、請求項１に記載のシステム。
【請求項１５】
前記高活動閾値は、第１の閾値および第１のヒステリシス値に基づくものであり、前記低活動閾値は、第２の閾値および第２のヒステリシス値に基づくものである、請求項１に記載のシステム。
【請求項１６】
複数の第１の時間間隔の各々に対して、処理ノードの活動レベルを判定することと、
前記活動レベルが高活動閾値を超える場合、電力管理ユニットが、少なくとも１つの連続する第１の時間間隔に複数の動作点のうちの所定の高動作点で前記処理ノードを動作させることと、
前記活動レベルが低活動閾値未満である場合、前記電力管理ユニットが、前記少なくとも１つの連続する第１の時間間隔に前記複数の動作点のうちの所定の低動作点で前記処理ノードを動作させることと、
前記活動レベルが前記低活動閾値と前記高活動閾値との間である場合、オペレーティングシステムソフトウェアが、前記複数の動作点のうちの１つ以上の中間動作点のうちの１つで前記処理ノードを動作させることと、を含む、
方法。
【請求項１７】
前記オペレーティングシステムソフトウェアが、複数の第２の時間間隔にわたって前記活動レベルを監視することをさらに含み、前記第１の時間間隔の各々の第１の継続時間は、前記第２の時間間隔の各々の第２の継続時間未満である、請求項１６に記載の方法。
【請求項１８】
前記所定の高動作点は、前記複数の動作点のうちの最高の動作点であり、前記所定の低動作点は、前記複数の動作点のうちの最低の非アイドル動作点であり、前記１つ以上の中間動作点の各々は、前記所定の高動作点より低く、かつ前記所定の低動作点より高い、請求項１６に記載の方法。
【請求項１９】
前記複数の第１の時間間隔の各々に対して、２つ以上の処理ノードのそれぞれの活動レベルを高活動閾値および低活動閾値と比較することと、
それぞれの活動レベルの前記比較に基づいて、前記２つ以上の処理ノードのうちの第１のノードの動作点を設定することと、
それぞれの活動レベルの前記比較に基づいて、前記２つ以上の処理ノードのうちの第２のノードの動作点を設定することと、をさらに含み、
前記２つ以上の処理ノードのうちの前記第２のノードの前記動作点は、前記２つ以上の処理ノードのうちの前記第１のノードの前記動作点を設定することとは独立して設定される、請求項１６に記載の方法。
【請求項２０】
前記処理ノードの前記動作点を変更することは、前記処理ノードに提供されるクロック信号の周波数を変更することを含む、請求項１６に記載の方法。
【請求項２１】
前記処理ノードの前記動作点を変更することは、前記処理ノードに提供される動作電圧を変更することを含む、請求項２０に記載の方法。
【請求項２２】
所与の第１の時間間隔内に受信されるリタイアされた命令の各指示に応答してカウンタを増加させることと、
前記所与の第１の時間間隔内に発生する命令リタイア数が、予測される命令リタイア数以下であると判定することに応答して、カウンタを減少させることと、
前記所与の第１の時間間隔の終了時に前記カウンタによって提供されるカウンタ値を前記高活動閾値および低活動閾値と比較することと、をさらに含む、請求項１６に記載の方法。
【請求項２３】
少なくとも１つの第１の時間間隔にわたる前記少なくとも１つの処理ノードの活動の移動平均を判定することと、
前記活動の移動平均を前記高活動閾値および前記低活動閾値と比較することと、をさらに含む、請求項１６に記載の方法。
【請求項２４】
実行された命令、
リタイアされた命令、
発行された命令、
パイプライン失速、
メモリアクセスリクエスト、
キャッシュの失敗、
分岐の予測ミス、のうちの１つ以上に基づいて、前記移動平均を判定することをさらに含む、請求項２３に記載の方法。
【請求項２５】
前記少なくとも１つの処理ノードによって実行された１サイクルあたりの命令数を判定することと、前記１サイクルあたりの命令数を前記高活動閾値および前記低活動閾値と比較することとをさらに含む、請求項１６に記載の方法。
【請求項２６】
コンピュータシステム上で実行可能なプログラムによって動作されるデータ構造を記憶するコンピュータ可読媒体であって、前記プログラムは、前記データ構造によって記述される回路を含む集積回路を加工するプロセスの一部を実施するように、前記データ構造上で作動し、前記データ構造内に記述される前記回路は電力管理ユニットを含み、
前記電力管理ユニットは、
複数の第１の時間間隔の各々に対して、処理ノードの活動レベルを監視するように構成され、
所与の第１の時間間隔内の前記活動レベルが高活動閾値を超える場合、少なくとも１つの連続する第１の時間間隔の間、複数の動作点のうちの所定の高動作点で前記処理ノードを動作させ、
前記所与の第１の時間間隔内の前記活動レベルが低活動閾値未満である場合、前記少なくとも１つの連続する第１の時間間隔に対して、前記複数の動作点のうちの所定の低動作点で前記処理ノードを動作させ、
前記活動レベルが前記低活動閾値と前記高活動閾値との間にある場合、オペレーティングシステムソフトウェアが、前記少なくとも１つの連続する第１の時間間隔に対して、前記複数の動作点のうちの１つ以上の所定の中間動作点のうちの１つで前記処理ノードを動作させることを可能にするように、さらに構成されている、
コンピュータ可読媒体。
【請求項２７】
前記第１の時間間隔の各々の第１の継続時間は、前記処理ノードの前記活動レベルを監視するようにオペレーティングシステムソフトウェアによって使用される複数の第２の時間間隔であって、前記監視された活動レベルが前記高活動閾値未満であり、かつ前記低活動閾値を超える場合、前記処理ノードの前記動作点を変更するように前記オペレーティングシステムソフトウェアによってさらに使用される複数の第２の時間間隔の各々の第２の継続時間未満であり、
電力管理ユニットは、
実行された命令、
リタイアされた命令、
発行された命令、
パイプライン失速、
メモリアクセスリクエスト、
キャッシュの失敗、
分岐の予測ミス、のうちの１つ以上に基づいて、前記活動レベルを判定するように構成されている、請求項２６に記載のコンピュータ可読媒体。
【請求項２８】
前記データ構造内に記述される前記電力管理ユニットは、
前記少なくとも１つの処理ノードによって受信されるクロック信号の周波数と、前記少なくとも１つの処理ノードに提供される動作電圧と、のうちの１つ以上に対する変更を生じさせることによって、前記処理ノードの前記動作点の変更を生じさせるように構成されている、請求項２６に記載のコンピュータ可読媒体。
【請求項２９】
前記データ構造は、
ＨＤＬ（高レベル設計言語）データ、
ＲＴＬ（レジスタトランスファレベル）データ、
グラフィックデータシステム（ＧＤＳ）ＩＩデータ、のデータタイプのうちの１つ以上を含む、請求項２５に記載のコンピュータ可読媒体。
【請求項３０】
処理ノードと、
電力管理ユニットとを備え、
前記電力管理ユニットは、複数の第１の時間間隔の各々に対して、
活動レベルが所与の第１の時間間隔に高活動閾値を超える場合、少なくとも１つの連続する第１の時間間隔の間、複数の動作点のうちのより高い動作点で前記処理ノードを動作させ、
前記活動レベルが前記所与の第１の時間間隔に低活動閾値未満である場合、前記少なくとも１つの連続する第１の時間間隔の間、前記複数の動作点のうちのより低い動作点で前記少なくとも１つの処理ノードを動作させるように構成されており、
前記第１の時間間隔の各々の第１の継続時間は、前記処理ノードの前記活動レベルを監視するためにオペレーティングシステムソフトウェアによって使用される複数の第２の時間間隔であって、前記監視された活動レベルに基づいて前記処理ノードの前記動作点を変更するために前記オペレーティングシステムソフトウェアによってさらに使用される複数の第２の時間間隔の各々の第２の継続時間未満である、
システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサに関し、より具体的には、プロセッサ内でパフォーマンスおよび電力消費のバランスをとることに関する。
【背景技術】
【０００２】
コンピュータまたは他のプロセッサベースのシステムの設計中、多数の設計因子が考慮されなければならない。設計の成功には、電力消費、パフォーマンス、熱出力等の間でいくつかのトレードオフが必要になるかもしれない。例えば、高パフォーマンスを重視するコンピュータシステムの設計では、より大きい電力消費および熱出力を許可するかもしれない。これとは逆に、時には電池によって駆動される携帯用コンピュータシステムの設計では、何らかのパフォーマンスを犠牲にして、電力消費を抑制することを重視するかもしれない。
【０００３】
いくつかのコンピュータシステムにおいて、動作点（例えば、クロック周波数および動作電圧）は作業負荷に応じて調整されてもよい。このようなシステムにおいて、計算主体の作業負荷（すなわち、プロセッサ集中型の作業負荷）は、処理ノードをより高い動作点で動作させるかもしれないのに対し、メモリ主体の作業負荷（すなわち、多数のメモリアクセスを含む、多大なレイテンシが関与するかもしれない作業負荷）は、処理ノードをより低い動作点で動作させるかもしれない。例えば、いくつかのコンピュータシステムでは、動作時間の総量（すなわち、アイドル状態およびアクティブ状態）に対するアクティブ状態の時間量の比率は、所与の間隔に対して、オペレーティングシステムソフトウェアによって計算されるかもしれない。比率がある閾値を超える場合、処理ノードは、より高い動作点で動作されてもよい。そうではない場合、動作は、より低い動作点で発生してもよい。計算を実施するための典型的な間隔は、３０〜１００ミリ秒の範囲であってもよく、いくつかの高度なシステムは、毎１０ミリ秒の頻度で計算を実施する。
【発明の概要】
【０００４】
処理ノードの動的パフォーマンス制御のための装置および方法を開示する。一実施形態において、システムは、処理ノードと、電力管理ユニットとを含む。電力管理ユニットは、複数の第１の時間間隔の各々に対して、処理ノードの活動レベルを監視するように構成されてもよい。電力管理ユニットは、所与の第１の時間間隔内の活動レベルが高活動閾値を超える場合、少なくとも１つの連続する第１の時間間隔の間、複数の動作点のうちの既定の高動作点で処理ノードを動作させ、所与の第１の時間間隔内の活動レベルが低活動閾値未満である場合、少なくとも１つの連続する第１の時間間隔に対して、複数の動作点のうちの既定の低動作点で処理ノードを動作させるように、さらに構成されてもよい。電力管理ユニットはまた、少なくとも１つの連続する第１の時間間隔に対する活動レベルが、所与の第１の時間間隔内で、高活動閾値未満かつ低活動閾値を超える場合、オペレーティングシステムソフトウェアが、複数の動作点のうちの１つ以上の既定の中間動作点のうちの１つで処理ノードを動作させることが可能であるように構成されてもよい。
【０００５】
一実施形態において、方法は、複数の第１の時間間隔の各々に対して、処理ノードの活動レベルを判定することを含む。方法は、活動レベルが高活動閾値を超える場合、電力管理ユニットが、少なくとも１つの連続する第１の時間間隔中、複数の動作点のうちの既定の高動作点で処理ノードを動作させることと、活動レベルが低活動閾値未満である場合、電力管理ユニットが、少なくとも１つの連続する第１の時間間隔中、複数の動作点のうちの既定の低動作点で処理ノードを動作させることとをさらに含んでもよい。方法はまた、活動レベルが高活動閾値未満かつ低活動閾値を超える場合に、オペレーティングシステムソフトウェアが、複数の動作点のうちの１つ以上の中間動作点のうちの１つで処理ノードを動作させることも含んでもよい。
【０００６】
本発明の他の態様は、以下の詳細説明を一読し、添付の図面を参照すると明らかになるであろう。
【０００７】
本発明は、様々な修正および代替形態を容易に生じることができるが、その具体的な実施形態が、一例として図面に示され、本明細書において詳細に記載される。しかしながら、図面およびその説明は、本発明を開示される特定の形態に限定することは意図されず、むしろ、本発明は、添付の「特許請求の範囲」によって定義される本発明の主旨および範囲内である、すべての修正、均等物、および変形を網羅することを理解されたい。
【図面の簡単な説明】
【０００８】
【図１】集積回路（ＩＣ）システムオンチップ（ＳＯＣ）の一実施形態のブロック図である。
【図２】処理ノードの一実施形態のブロック図である。
【図３】電力管理ユニットの一実施形態の動作を例示する図である。
【図４】電力管理ユニットの一実施形態のブロック図である。
【図５】活動モニタの一実施形態を例示するブロック図である。
【図６】ＣＩＰＳ（Ｃｏｍｍｉｔｔｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎｓ  Ｐｅｒ  Ｓｅｃｏｎｄ：１秒あたりに実行される命令数）の一実施形態を例示するブロック図である。
【図７】ＩＰＣ（Ｉｎｓｔｒｕｃｔｉｏｎｓ−ｐｅｒ−ｃｙｃｌｅ：１サイクルあたりの命令数）ユニットの一実施形態のブロック図である。
【図８】電力管理ユニットを動作するための方法の一実施形態の流れ図である。
【図９】いくつかの時間間隔にわたって方法の一実施形態の動作を例示する図である。
【図１０】電力管理ユニットを含む回路の実施形態を記述するデータ構造を含むコンピュータ可読媒体の一実施形態のブロック図である。
【発明を実施するための形態】
【０００９】
本開示は、プロセッサベースのシステムの１ワットあたりのパフォーマンスを改善するための方法および装置に関する。より具体的には、本明細書に開示される方法および装置は、アプリケーション活動（例えば、処理作業負荷）に基づいて、１つ以上の処理ノード（例えば、シングルコアまたはマルチコアのマイクロプロセッサのプロセッサコア、個別のスタンドアロンマイクロプロセッサ等）の動作点を調整するように利用されてもよい。多様な実施形態において、処理ノードの動作点として、そこに提供されるクロック信号の周波数が挙げられてもよい。動作点として更に、処理ノードに提供される動作電圧（例えば、電源電圧）が挙げられてもよい。したがって、最高動作点は、処理ノードに対して利用可能な最高のクロック周波数を有する動作点として定義されてもよく、また、処理ノードに対して利用可能な最高の動作電圧を有する動作点として定義されてもよい。逆に、最低動作点は、処理ノードに対して利用可能な最低動作（例えば、ゼロ以外の）クロック周波数を有する動作点として定義されてもよく、利用可能な最低のゼロ以外の動作電圧を有する動作点としてさらに定義されてもよい。中間動作点は、クロック周波数および動作電圧のうちの少なくとも１つが、そうでなければ、最高動作点および最低動作点を定義するために使用されてもよい値の間のそれぞれの値に設定される、動作点として定義されてもよい。
【００１０】
１つ以上の処理ノードの各々の動作点は、１つ以上の処理ノードのうちの１つの上で稼動している電力管理ユニットまたはオペレーティングシステム（ＯＳ）のいずれかによって設定されてもよい。各処理ノードに対して、電力管理ユニットは、いくつかの第１の時間間隔にわたってその活動レベルを監視してもよく、監視された活動レベルを高活動閾値および低活動閾値と比較してもよい。電力管理ユニットは、活動レベルが高活動閾値を超える場合、複数の動作点のうちのより高い動作点（例えば、最高）で処理ノードを動作させてもよい。電力管理ユニットは、活動レベルが低活動閾値未満である場合、複数の動作点のうちのより低い動作点で処理ノードを動作させてもよい。活動レベルが低閾値を超え、かつ高閾値未満である場合、電力管理ユニットは、オペレーティングシステムソフトウェアが、処理ノードに対して、１つ以上の中間動作点のうちの１つを選択することを可能にしてもよい。オペレーティングシステムソフトウェアは、第２の時間間隔の１期間にわたって活動レベルを監視してもよく、その継続時間は、第１の時間間隔の各々を超える。一実施形態において、第１の時間間隔の各々の継続時間は、１００マイクロ秒以下であり、一方、第２の時間間隔の各々の継続時間は、３０ミリ秒以上である。したがって、電力管理ユニットは、オペレーティングシステムソフトウェアよりも速く動作点に対する変更を有効にしてもよく、それによって、電力消費のより綿密な制御、したがってプロセッサのワットあたりのパフォーマンスのより精密な制御を可能にする。電力管理ユニットは、監視される活動レベルが高活動閾値以上、または低活動閾値以下である場合、任意の時点で、オペレーティングシステムによって行われた動作点の選択をオーバーライドしてもよい。
【００１１】
本明細書に記載される電力管理ユニットは、プロセッサ内部にハードウェアとして実装されてもよく、このような実施形態は、検出された動作レベルに基づいて動作点を選択および設定する際に、ＯＳソフトウェアとは独立して動作してもよい。いくつかの実施形態において、電力管理ユニットの機能は、ファームウェアとして、またはＯＳとは独立して動作する他のソフトウェアとして実装されてもよい。特定の実装には関係なく、電力管理ユニットは、ＯＳ単体によって制御される実施形態に伴って起こり得るオーバーヘッド（例えば、中断等）なしに、本明細書に記載される機能を実施してもよい。電力管理ユニットの多様な実施形態で活動が監視される時間間隔は、ＯＳが動作点を設定するために使用される活動監視を実施する場合がある時間間隔より相当（例えば、１つ以上の桁）小さくてもよい。
【００１２】
一実施形態において、処理ノードの動作点は、その中のアプリケーション活動が計算主体、メモリ主体、またはこれらの２つの点の間であるかに依存して調整されてもよい。計算主体の作業負荷は、メインメモリへの頻度の低い（存在する場合）アクセスを伴う、計算集中型である処理作業負荷として定義されてもよい。可能な限り最短の時間量で計算主体の作業負荷を完了するには、処理ノードが最高の利用可能なクロック周波数で作業負荷動作を実行する一方、１サイクルあたりに実行される命令の数を最大にすることが要求されてもよい。したがって、本明細書に記載される方法および装置は、計算主体の作業負荷が実行中であるときを判定し、さらにそれに応答する高パフォーマンス状態に動作点を増加する（クロック周波数および／または動作電圧を増加する）ことが可能であってもよい。一実施形態において、方法および装置は、計算主体の作業負荷を検出することに応答して、その特定のノードで利用可能な最高のパフォーマンス状態に対応する動作点で処理ノードを動作させてもよい。
【００１３】
処理作業負荷がメモリ主体である場合、処理ノードは、メインメモリの頻繁なアクセスを実施してもよい。メインメモリのアクセスに関連するレイテンシは、プロセッサのサイクル時間より何桁も大きい可能性があるため、メモリ主体の作業負荷は、実行されている処理ノードの動作周波数（すなわち、クロック周波数）に対する制約がはるかに低くてもよい。より具体的には、メモリアクセスは、プロセッサを失速させてもよく、その後のこれらの失速の継続時間は、メモリアクセスレイテンシの関数である。メモリアクセスに関連するレイテンシは、典型的にはコアクロック周波数よりはるかに低い、メモリバスクロック周波数の関数である。このために、メモリ主体の作業負荷の処理において、コアクロック周波数の増加は、典型的には、対応するパフォーマンスの増加とはならない。その上、メモリ主体の作業負荷を処理するときにコアクロック周波数を削減しても、メモリアクセスレイテンシは通常、これらの作業負荷が実行される場合がある速度を判定する上で限定的因子であるため、典型的には、相応するパフォーマンスの損失とはならない。したがって、本明細書に記載される方法および装置は、メモリ主体の作業負荷が実行中であるときを判定し、さらにそれに応答して低パフォーマンス状態へ動作点を減少させる（例えば、クロック周波数および／または動作電圧を減少させる）ことが可能であってもよい。メモリ主体の作業負荷を実行するときに動作点を低パフォーマンス状態に減少することで、パフォーマンスに悪影響を与えることなく、電力を節約し得る。一実施形態において、方法および装置は、メモリ主体の作業負荷を検出することに応答して、最低の非アイドルパフォーマンス状態に対応する動作点で処理ノードを動作させてもよい。最低の非アイドル動作点は、本明細書において、処理ノードが電力およびゼロ以外の周波数でクロック信号を受信している動作点として定義されてもよい。
【００１４】
所与の処理ノードに対して計算主体およびメモリ主体の作業負荷を検出することは、そのノードの活動レベルを高閾値および低閾値と比較することが関与してもよい。活動レベルが高閾値を超える場合、処理ノードは、高パフォーマンス状態に対応する動作点で動作されてもよい。活動レベルが低閾値未満である場合、処理ノードは、低パフォーマンス状態に対応する動作点で動作されてもよい。活動レベルが高閾値未満であるが、低閾値を超える場合、処理ノードは、１つ以上の中間動作点のうちの１つで動作されてもよい。一実施形態において、中間動作点は、ソフトウェアによって（例えば、オペレーティングシステムソフトウェアによって）選択されてもよい。
【００１５】
各処理ノードに対する活動レベルの検出および比較は、いくつかの連続する第１の時間間隔の各々に対して、電力管理ユニットによって実施されてもよい。上述のように、間隔の継続時間は、マイクロ秒の単位であってもよい。一実施形態において、間隔の最大継続時間は、１００マイクロ秒であってもよく、１０マイクロ秒までの短い間隔が検討される。第１の間隔の継続期間が１０マイクロ秒未満である実施形態もまた検討される。したがって、本明細書に開示される方法および装置は、オペレーティングシステムソフトウェアによって提供されるものと比較して、綿密な動作点の制御を可能にしてもよく、動作点の監視、比較、および設定の時間間隔は、３０〜１００ミリ秒の範囲とすることができる。加えて、活動レベルおよび動作点の判定は、オペレーティングシステムソフトウェアによって要求される場合がある中断または他のオーバーヘッドを要求することなく実施されてもよい。このように、消費電力１ワットあたりのパフォーマンスが最適化されてもよい。
【００１６】
（電力管理ユニットを備えるプロセッサ）
図１は、メモリに連結された集積回路（ＩＣ）の一実施形態のブロック図である。ＩＣ２およびメモリ６、さらにディスプレイ３およびディスプレイメモリ３００は、この例において、コンピュータシステム１０の少なくとも一部を形成する。示される実施形態において、ＩＣ２は、いくつかの処理ノード１１を有するプロセッサである。処理ノード１１は、この特定の例ではプロセッサコアであり、このため、コア＃１、コア＃２等とも指定される。本明細書に記載される方法論は、個別の専用のＩＣダイ上に複数のプロセッサ（シングルコアまたはマルチコアプロセッサの場合がある）を実装するマルチプロセッサコンピュータシステムのような他の配置に適用されてもよい。その上、単一の処理ノード１１だけを有する実施形態も可能であり、検討される。
【００１７】
各処理ノード１１は、示される実施形態においてノースブリッジ（ｎｏｒｔｈ  ｂｒｉｄｇｅ）１２に連結される。ノースブリッジ１２は、メモリおよび多様な周辺機器へのインターフェースを含む、処理ノード１１の各々のための多種多様なインターフェース機能を提供してもよい。加えて、ノースブリッジ１２は、以下に詳細を記載するように、それぞれの活動レベルまたは作業負荷に基づいて、処理ノード１１の各々の電力消費を管理するように構成されている電力管理ユニット２０を含む。その上、マルチコア（またはマルチプロセッサ）実施形態では、電力管理ユニット２０は、相互に独立して個別の処理ノード１１の動作点を設定してもよい。このように、第１の処理ノード１１は第１の動作点で動作してもよい一方、第２の処理ノード１１は、第１とは異なる第２の動作点で動作してもよい。
【００１８】
多様な実施形態において、処理ノード１１の数は、わずか１であってもよく、またはＩＣダイ上に実装可能である限り多くてもよい。マルチコア実施形態において、処理ノード１１は相互に同一であってもよく（すなわち、ホモジニアスマルチコア）、または１つ以上の処理ノード１１は相互に異なってもよい（すなわち、ヘテロジニアスマルチコア）。処理ノード１１は各々、１つ以上の実行ユニット、キャッシュメモリ、スケジューラ、分岐予測回路等を含んでもよい（例示的な処理ノードは図２を参照して以下に記載する）。その上、処理ノード１１の各々は、コンピュータシステム１０のメインメモリとして機能してもよいし、メモリ６へのアクセスリクエストをアサート（ａｓｓｅｒｔ）するように構成されてもよい。このようなリクエストは、読み出しリクエストおよび／または書き込みリクエストを含んでもよく、ノースブリッジ１２によって、それぞれの処理ノード１１から最初に受信されてもよい。メモリ６へのアクセスリクエストは、示される実施形態では、メモリコントローラ１８を通して送られてもよい。
【００１９】
Ｉ／Ｏインターフェース１３は、示される実施形態ではノースブリッジ１２にも連結される。Ｉ／Ｏインターフェース１３は、コンピュータシステム１０のサウスブリッジデバイスとして機能してもよい。いくつかの異種の周辺バスがＩ／Ｏインターフェース１３に連結されてもよい。この特定の例では、バスの種類として、周辺構成要素相互接続（ＰＣＩ）バス、ＰＣＩ拡張（ＰＣＩ−Ｘ）、ＰＣＩＤ（ＰＣＩエクスプレス）バス、ギガビットイーサネット（登録商標）（ＧＢＥ）バス、およびユニバーサルシリアスバス（ＵＳＢ）が挙げられる。しかしながら、これらのバスの種類は例であり、多数の他のバスの種類もまたＩ／Ｏインターフェース１３に連結されてもよい。周辺機器は、周辺バスのいくつかまたは全てに連結されてもよい。そのような周辺機器として、（これらに限定されないが）キーボード、マウス、プリンタ、スキャナ、ジョイスティックまたは他の種類のゲームコントローラ、媒体記録装置、外付け記憶装置、ネットワークインターフェースカード等が挙げられる。対応する周辺バスを介してＩ／Ｏインターフェース１３に連結されるかもしれないがある周辺機器の少なくともいくつかは、ダイレクトメモリアクセス（ＤＭＡ）を使用してメモリアクセスリクエストをアサートしてもよい。これらのリクエスト（読み出しおよび書き込みリクエストを含んでもよい）は、Ｉ／Ｏインターフェース１３を介してノースブリッジ１２に伝達されてもよく、メモリコントローラ１８に送られてもよい。
【００２０】
示される実施形態において、ＩＣ２は、コンピュータシステム１０のディスプレイ３に連結されるディスプレイ／ビデオエンジン１４を含む。ディスプレイ３は、フラットパネルＬＣＤ（液晶ディスプレイ）、プラズマディスプレイ、ＣＲＴ（ブラウン管）、または任意の他の好適なディスプレイの種類であってもよい。ディスプレイ／ビデオエンジン１４は、多様なビデオ処理機能を実施し、処理された情報をビジュアル情報として出力するためにディスプレイ３に提供してもよい。３Ｄ処理、ビデオゲームの処理、およびより複雑な種類のグラフィックス処理等のいくつかのビデオ処理機能は、グラフィックスエンジン１５によって実施されてもよく、処理された情報は、ノースブリッジ１２を介して、ディスプレイ／ビデオエンジン１４へリレーされる。
【００２１】
この特定の例では、コンピュータシステム１０は、ビデオメモリおよびＲＡＭは相互に独立している非統合メモリアーキテクチャ（ＮＵＭＡ）実装を実装する。示される実施形態において、コンピュータシステム１０は、ディスプレイ／ビデオエンジン１４に連結されるディスプレイメモリ３００を含む。このように、メモリ６からビデオデータを受信する代わりに、ビデオデータは、ディスプレイメモリ３００から、ディスプレイ／ビデオエンジン１４によってアクセスされてもよい。これによって、周辺バスのうちの１つを介して、Ｉ／Ｏインターフェース１３に連結されるコア１１および任意の周辺機器の各々に対して、より大きいメモリアクセスの帯域幅が可能になってもよい。
【００２２】
示される実施形態において、ＩＣ２は、システムクロック信号を受信するように連結された位相同期ループ（ＰＬＬ）４を含む。ＰＬＬ４は、処理ノード１１の各々に対応するクロック信号を分散してもよい。この実施形態では、処理ノード１１の各々によって受信されたクロック信号は相互に独立している。その上、この実施形態のＰＬＬ４は、処理ノード１１のそれぞれに相互に独立して提供されたクロック信号の各々の周波数を個別に制御し、変更するように構成されている。以下に詳細を記載するように、処理ノード１１の任意の所与の１つによって受信されたクロック信号の周波数は、その上に課されるパフォーマンス要求に応じて、増加または減少されてもよい。クロック信号がＰＬＬ４から出力されてもよい多様な周波数は、処理ノード１１の各々に対して異なる動作点に対応してもよい。したがって、処理ノード１１の特定の１つに対する動作点の変更は、そのそれぞれに受信されるクロック信号の周波数を変更することによって、有効にされてもよい。
【００２３】
１つ以上の処理ノード１１のそれぞれの動作点を変更することが、１つ以上のそれぞれのクロック周波数を変更することを含む場合、電力管理ユニット２０は、ＰＬＬ４に提供されるデジタル信号ＳｅｔＦ［Ｍ：０］の状態を変更してもよい。これらの信号の変更に応じて、ＰＬＬ４は、影響する処理ノードのクロック周波数を変更してもよい。
【００２４】
示される実施形態において、ＩＣ２は、電圧調整器５も含む。他の実施形態において、電圧調整器５は、ＩＣ２とは別に実装されてもよい。電圧調整器５は、処理ノード１１の各々に供給電圧を提供してもよい。いくつかの実施形態において、電圧調整器５は、（例えば、より優れたパフォーマンスのために増加、より大きい電力節約のために減少された）特定の動作点にしたがって変動する供給電圧を提供してもよい。いくつかの実施形態において、処理ノード１１の各々は、電圧プレーンを共有してもよい。このため、このような実施形態の各処理ノード１１は、処理ノード１１の他のノードと同じ電圧で動作する。別の実施形態において、電圧プレーン（ｐｌａｎｅ）は共有されず、このため、各処理ノード１１によって受容される供給電圧は、処理ノード１１の他のノードによって受容されるそれぞれの供給電圧とは独立して設定、調整されてもよい。このため、供給電圧の調整を含む動作点の調整は、電圧プレーンを共有しない実施形態の他のノードとは独立して、各処理ノード１１に選択的に応用されてもよい。動作点を変更することは、１つ以上の処理ノード１１の動作電圧を変更することを含む場合、電圧管理ユニット２０は、電圧調整器５に提供されるデジタル信号ＳｅｔＶ［Ｍ：０］の状態を変更してもよい。信号ＳｅｔＶ［Ｍ：０］の変更に応じて、電圧調整器５は、処理ノード１１の影響を受けるノードに提供される供給電圧を調整してもよい。
【００２５】
動作点は、それぞれの動作レベル（例えば、処理作業負荷）に応じて、相互に独立して、処理ノード１１の各々に対して設定されてもよい。示される実施形態において、電力管理ユニット２０は、処理ノード１１の各々の活動レベルを示す情報を受信してもよい。各処理ノードに示される活動レベルは、閾値に比較されてもよく、対応する処理ノードの動作点は、比較の結果に基づいて、これに応じて調整されてもよい。閾値は、高活動閾値と、低活動閾値とを含んでもよい。所与の処理ノード１１の活動レベルが高活動閾値を超える場合、その動作点は、既定の高動作点（例えば、最高のクロック周波数および動作電圧）に調整されてもよい。所与の処理ノード１１の活動レベルが低活動閾値未満である場合、動作点は、既定の低い非アイドル動作点（例えば、最低のゼロ以外のクロック周波数および電圧）に調整されてもよい。
【００２６】
比較演算が、所与の処理ノード１１の活動が高活動閾値未満であるが、低活動閾値を超えることを示す場合、電力管理ユニット２０は、オペレーティングシステムソフトウェア（または他のソフトウェア）が、１つ以上の中間動作点のうちの１つで特定の処理ノード１１に動作させることを可能にしてもよい。いくつかの実施形態において、単一の中間動作点が実装されてもよい。他の実施形態において、複数の中間動作点が利用されてもよい。
【００２７】
処理ノード１１の各々の活動レベルを上記の閾値と比較することは、いくつかの連続する時間間隔にわたって実施されてもよい。所与の時間間隔の間の１つの比較が、処理ノード１１の動作点を調整する必要を示す場合、動作点は、次に続く時間間隔に対して調整されてもよい。比較演算は、各間隔に対して１回実施されてもよく、比較結果に基づいて行われる任意の調整が、次に続く間隔に適用されてもよい。変更が全く必要ないことを比較結果が示す場合、処理ノード１１は、比較結果が異なる動作点に対応する活動レベルを示すまで、１つ以上の連続する時間間隔に対して、その現在の動作点で継続してもよい。
【００２８】
一実施形態において、オペレーティングシステム（ＯＳ）ソフトウェア等、集積回路２上で稼動しているソフトウェアは、活動レベルが高閾値未満かつ低閾値を超える場合、処理ノード１１の各々のための動作点を選択してもよい。しかしながら、比較演算は、各時間間隔に対して、電力管理ユニットによって実施されるように継続してもよい。比較演算が、活動レベルが高閾値を超える、または低閾値未満であることを検出した場合、影響が及ぶ処理ノード１１の動作点はこれに応じて変更されてもよく、それ以外の場合には中間動作点を選択するために使用されるＯＳまたは他の機構によって指定される場合がある動作点をオーバーライドする。ＯＳは、電力管理ユニット２０によって使用される時間間隔の継続時間を超える継続時間を各々有する、別の組の時間間隔にわたって、活動を監視してもよい。ＯＳが活動レベルを監視する時間間隔の継続時間は、電力管理ユニット２０の継続時間より少なくとも１桁大きくてもよい。例えば、一実施形態において、電力管理ユニット２０は、１００ミリ秒以内の時間間隔にわたって活動レベルを監視（したがって、動作点の変更を有効に）してもよい。対照的に、この実施形態のオペレーティングシステムソフトウェアは、３０ミリ秒未満の時間間隔にわたって活動レベルを監視（したがって、動作点の変更を有効に）してもよい。
【００２９】
上述のように、処理ノード１１の動作点は、少なくともクロック周波数によって定義されてもよく、また、動作電圧によって定義されてもよい。一般的に、「より高い」動作点への推移は、影響を受ける処理ノード１１のクロック周波数を増加することによって定義されてもよい。より高い動作点への推移は、その動作（例えば、供給）電圧を増加することも含んでもよい。同様に、「より低い」動作点への推移は、影響を受ける処理ノード１１のクロック周波数を減少することによって定義されてもよい。影響を受ける処理ノード１１に提供される動作／供給電圧の減少もまた、より低い動作点への推移の定義に含まれてもよい。
【００３０】
一実施形態において、動作点は、アドバンスコンフィギュレーションおよびパワーインターフェース（ＡＣＰＩ）仕様のパフォーマンス状態（以下、「Ｐ状態」）に対応してもよい。以下の表１は、ＡＣＰＩ基準を使用して実装される一実施形態のＰ状態を列挙する。
【表１】
2013536532.tif 000003
【００３１】
表１に列挙されたＰ状態は、ＡＣＰＩに準拠するプロセッサが、Ｃ０として知られる非アイドル状態で動作中に適用されてもよい。上記の表１に対応する実施形態では、Ｐ状態のＰ０は、最高動作点であり、２ＧＨｚのクロック周波数および１．１ボルトの動作電圧を有する。一実施形態の電力管理ユニット２０は、対応する活動レベルが高活動閾値を超えることに応答して、Ｐ状態Ｐ０で処理ノード１１に動作させてもよい。Ｐ状態Ｐ０の動作は、計算主体である作業負荷を処理するために利用されてもよい。計算主体の作業負荷は、時間的制約がある計算集中型であってもよく、（存在する場合）いくつかのメモリアクセスを必要とする。より低い電力消費でＰ状態相応により短時間で戻ることを可能にしながら、最高のパフォーマンスを維持するためにできるだけ最短時間で作業負荷を実行することが所望される場合がある。したがって、高活動レベルを有する計算主体の作業負荷は、Ｐ状態Ｐ０で実行されてもよく、より高速の完了を可能にしてもよい。
【００３２】
Ｐ状態Ｐ４は、この特定の実施形態では最低の非アイドル動作点であり、８００ＭＨｚのクロック周波数および０．８Ｖの動作電圧を有する。電力管理ユニット２０は、対応する活動レベルが低活動閾値未満であることに応答して、Ｐ状態Ｐ４で処理ノード１１に動作させてもよい。Ｐ状態Ｐ４は、メモリ主体の作業負荷ならびに時間的制約（または周波数制約）のない他のタスクで使用されてもよい。メモリ主体の作業負荷は、システムメモリへの頻繁なアクセスを含む作業負荷である。メモリアクセスには、（メモリにアクセスしない命令の実行時間に比較して）大きいレイテンシが関与し、メモリ主体の作業負荷のクロック周波数を削減することは、最低のパフォーマンス影響を有する場合があり、この場合電力の節約は、システムの１ワットあたりのパフォーマンスメトリクスを向上させてもよい。
【００３３】
検出された活動レベルが、低活動閾値を超え、かつ高活動閾値未満である場合、対応する処理ノード１１の動作は、特定の実施形態に依存して、ＯＳ、他のソフトウェア、ファームウェア、および／または他のハードウェアの管轄下で、Ｐ状態Ｐ１、Ｐ２、Ｐ３のうちの任意の１つに設定されてもよい。
【００３４】
表１に列挙されたＰ状態は、例示的な１組の動作点であることに注意されたい。異なるクロック周波数および動作電圧を有する動作点を使用する実施形態が可能であり、検討される。その上、上述のように、いくつかの実施形態は、処理ノード１１の共有電圧プレーンを利用してもよく、このため、これらのそれぞれの動作点は、クロック周波数に基づいて定義されてもよい。いくつかの実施形態では、処理ノードの各々の動作電圧は、固定されたままであってもよく、一方、他の実施形態では、動作電圧は、全ての処理ノード１１に対して同時に調整されてもよい。
【００３５】
上記の多様なユニットが個別のＩＣ上に実装される実施形態が可能であり、検討されることに注意されたい。例えば、コア１１が第１のＩＣ上に実装され、ノースブリッジ１２およびメモリコントローラ１８が別のＩＣ上にあり、一方、残りの機能ユニットはまた別のＩＣ上にある、一実施形態が検討される。一般的に、上記の機能ユニットは、好みに応じて多数または少数の異なるＩＣ上、ならびに単一のＩＣ上に実装されてもよい。
【００３６】
また、上記の表１にＰ状態として列挙された動作点は、ＡＣＰＩ以外の実施形態で利用されてもよいことにも注意されたい。
【００３７】
（処理ノード）
図２は、処理ノード１１の一実施形態のブロック図である。処理ノード１１は、システムメモリ２００に記憶される場合がある命令を実行するように構成されている。これらの命令の多くは、これもシステムメモリ２００上に記憶されるデータ上で作動する。システムメモリ２００は、コンピュータシステム全体に物理的に分散されてもよく、および／または１つ以上のプロセッサ１００によってアクセスされてもよい。
【００３８】
例示される実施形態において、処理ノード１１は、レベル１（Ｌ１）命令キャッシュ１０６と、Ｌ１データキャッシュ１２８とを含んでもよい。処理ノード１１は、命令キャッシュ１０６に連結されるプリフェッチユニット１０８を含んでもよい。ディスパッチユニット１０４は、命令キャッシュ１０６から命令を受信し、スケジューラ１１８に演算をディスパッチするように構成されてもよい。スケジューラ１１８のうちの１つ以上は、ディスパッチユニット１０４からディスパッチされた演算を受信し、１つ以上の実行ユニット１２４へ演算を発行するように連結されてもよい。実行ユニット１２４は、１つ以上の整数ユニットと、１つ以上の浮動小数点ユニットと、１つ以上のロード／記憶ユニットとを含んでもよい。実行ユニット１２４によって生成される結果は、１つ以上の結果バス１３０（ここでは明確化のために単一の結果バスが示されるが、複数の結果バスが可能であり、検討される）に出力されてもよい。これらの結果は、その次に発行される命令のオペランド値として使用されても、および／またはレジスタファイル１１６に記憶されてもよい。リタイアキュー１０２は、スケジューラ１１８およびディスパッチユニット１０４に連結されてもよい。リタイアキュー１０２は、各発行された演算がいつリタイアされてもよいかを判定するように構成されている。
【００３９】
一実施形態において、処理ノード１１は、ｘ８６アーキテクチャ（インテルアーキテクチャ３２またはＩＡ３２とも呼ばれる）と互換性があるように設計されてもよい。別の実施形態において、処理ノード１１は、６４ビットアーキテクチャと互換性があってもよい。他のアーキテクチャと互換性のある処理ノード１１の実施形態も検討される。
【００４０】
処理ノード１１の各々は、多数の他の構成要素も含むことに注意されたい。例えば、処理ノードは、命令スレッドを実行する際に、分岐を予測するように構成されている分岐予測ユニット（図示せず）を含んでもよい。
【００４１】
命令キャッシュ１０６は、ディスパッチユニット１０４によってフェッチするための命令を記憶してもよい。命令コードは、プリフェッチユニット１０８を介して、システムメモリ２００からコードを予めフェッチすることによって、記憶するために命令キャッシュ１０６に提供されてもよい。命令キャッシュ１０６は、多様な構成（例えば、セットアソシアティブ、フルアソシアティブ、またはダイレクトマップ方式）で実装されてもよい。
【００４２】
処理ノード１１はまた、レベル２（Ｌ２）キャッシュ１４０も含んでもよい。命令キャッシュ１０６は、命令を記憶するために使用されてもよく、データキャッシュ１２８は、データ（例えば、オペランド）を記憶するために使用されてもよいが、Ｌ２キャッシュ１４０は、命令およびデータを記憶するように統合されて使用されてもよい。ここには明示的に示されないが、いくつかの実施形態は、レベル３（Ｌ３）キャッシュも含んでもよい。一般的に、キャッシュレベルの数は、実施形態により異なってもよい。
【００４３】
プリフェッチユニット１０８は、命令キャッシュ１０６内に記憶するために、システムメモリ２００から命令コードを予めフェッチしてもよい。プリフェッチユニット１０８は、多様な特定のコードプリフェッチ技法およびアルゴリズムを採用してもよい。
【００４４】
ディスパッチユニット１０４は、実行ユニット１２４によって実行可能な演算ならびにオペランドのアドレス情報、即時データおよび／または置換データを出力してもよい。いくつかの実施形態では、ディスパッチユニット１０４は、所定の命令を実行ユニット１２４内で実行可能な演算にデコードするためのデコード回路（図示せず）を含んでもよい。簡単な命令は、単一の演算に対応してもよい。いくつかの実施形態において、より複雑な命令は、複数の演算に対応してもよい。レジスタの更新が関与する演算のデコード時に、レジスタファイル１１６内のレジスタの場所は、投機的レジスタ状態を記憶するために、保存されてもよい（代替の実施形態では、リオーダバッファが、各レジスタに対して１つ以上の投機的レジスタ状態を記憶するために使用されてもよく、レジスタファイル１１６は各レジスタに対して登録されたレジスタ状態を記憶してもよい）。レジスタマップ１３４は、レジスタの名前変更を促進するために、ソースおよびデスティネーションオペランドの論理レジスタ名を物理的レジスタ番号に変換してもよい。レジスタマップ１３４は、レジスタファイル１１６内のどのレジスタが現在割り当てられているか、および割り当てられていないかを追跡してもよい。
【００４５】
図２の処理ノード１１は、アウトオブオーダ（ｏｕｔ  ｏｆ  ｏｒｄｅｒ）実行をサポートしてもよい。リタイアキュー（ｒｅｔｉｒｅ  ｑｕｅｕｅ）１０２は、レジスタの読み出しおよび書き込み演算に対する本来のプログラムシーケンスの追跡を維持し、投機的命令実行および分岐予測ミスの復元を可能にし、正確な例外を促進してもよい。いくつかの実施形態では、リタイアキュー１０２はまた、投機的レジスタ状態のデータ値ストレージを提供することによって、レジスタの名前変更をサポートしてもよい（例えば、リオーダバッファに類似）。他の実施形態では、リタイアキュー１０２は、リオーダバッファに類似して機能してもよいが、データ値ストレージは一切提供しなくてもよい。演算がリタイアすると、リタイアキュー１０２は、投機的レジスタ状態を記憶することがもはや必要ではない、レジスタファイル１１６内のレジスタの割り当てを解消し、レジスタマップ１３４に対して、どのレジスタが現在解放されているかを示す信号を提供してもよい。それらの状態を生成した演算が検証されるまで、レジスタファイル１１６内（または、代替の実施形態ではリオーダバッファ内）に投機的レジスタ状態を維持することによって、投機的に実行された演算の結果ならびに誤って予測されたパスは、分岐予測が正しくない場合、レジスタファイル１１６内で無効化されてもよい。
【００４６】
一実施形態において、レジスタファイル１１６の所与のレジスタは、実行された命令のデータ結果を記憶するように構成されてもよく、また、実行された命令によって更新されてもよい１つ以上のフラグビットを記憶してもよい。フラグビットは、次の命令を実行する上で重要な場合がある多様な種類の情報を伝達してもよい（例えば、加算または乗算演算の結果、キャリーまたはオーバーフロー状況が存在することを示す）。設計上、フラグを記憶するフラグレジスタが定義されてもよい。このため、所与のレジスタへの書き込みは、論理レジスタおよびフラグレジスタの両方を更新してもよい。全ての命令が１つ以上のフラグを更新しなくてもよいことに注意されたい。
【００４７】
レジスタマップ１３４は、演算のためのデスティネーションオペランドとして指定された特定の論理レジスタ（例えば、アーキテクチャ上のレジスタまたはマイクロアーキテクチャ上で指定されたレジスタ）に物理的レジスタを割り当ててもよい。ディスパッチユニット１０４は、レジスタファイル１１６が、所与の演算の中のソースオペランドとして指定された論理レジスタに割り当てられた、以前に割り当てられた物理的レジスタを有すると判定してもよい。レジスタマップ１３４は、その論理レジスタに最近割り当てられた物理的レジスタのためのタグを提供してもよい。このタグは、レジスタファイル１１６のオペランドのデータ値にアクセスするため、または結果バス１３０上の結果転送を介してデータ値を受信するために使用されてもよい。オペランドがメモリ場所に対応する場合、オペランド値は、ロード／ストアユニット（図示せず）を通して、（結果転送および／またはレジスタファイル１１６内に記憶するために）結果バス上に提供されてもよい。オペランドデータ値は、演算がスケジューラ１１８のうちの１つによって発行されると、実行ユニット１２４に提供されてもよい。代替の実施形態では、オペランド値は、（演算が発行されると対応する実行ユニット１２４に提供される代わりに）演算がディスパッチされると、対応するスケジューラ１１８に提供されてもよいことに注意されたい。
【００４８】
本明細書に使用される場合、スケジューラは、演算が実行の準備が整い、整った演算を１つ以上の実行ユニットに発行するときを検出するデバイスである。例えば、予約局は、スケジューラの１種の場合がある。１実行ユニットにつき独立した予約局が提供されてもよく、演算が発行される中央の予約局が提供されてもよい。他の実施形態において、リタイアするまで演算を保存する中央のスケジューラが使用されてもよい。各スケジューラ１１８は、実行ユニット１２４への発行を待機しているいくつかの保留演算に対して、演算情報（例えば、演算ならびにオペランド値、オペランドタグ、および／または即時データ）を保留することが可能であってもよい。いくつかの実施形態では、各スケジューラ１１８は、オペランド値にストレージを提供しなくてもよい。その代わり、各スケジューラは、実行ユニット１２４によって（レジスタファイル１１６または結果バス１３０から）読み出されるオペランド値がいつ利用可能になるかを判定するために、発行された演算およびレジスタファイル１１６内の利用可能な結果を監視してもよい。
【００４９】
本明細書には明示的に示されないが、図１の多様なユニットの処理ノード１１（明示的に示されていないユニットも含む）と、電力管理ユニット２０との間に、いくつかの異なる通信経路が提供されてもよい。より具体的には、処理ノード１１は、電力管理ユニット２０に対して活動レベルを示す情報を提供するために、このような通信経路を利用してもよい。例えば、リタイアキュー１０２は、命令のリタイアに関する情報を電力管理ユニット２０に提供してもよい。別の例では、実行ユニット１２４は、実行された命令に関する情報を提供してもよく、ディスパッチユニット１０４は、ディスパッチされた命令に関する情報を提供してもよく、スケジューラ１１８は、スケジュールされた命令に関する情報を提供してもよく、多様なキャッシュのうちの任意の１つ（または全て）は、キャッシュヒットまたはミスに関する情報を提供してもよい。存在し得るユニットであって本明細書に明示的に示されないユニットのうち、分岐予測ユニットは、一例として、分岐予測ミスに関する情報を提供してもよい。ここに記載されない他のユニットもまた、他の種類の情報を電力管理ユニット２０に提供してもよい。多様なユニットの処理ノード１１から受信された情報は、その活動レベルを判定するために使用されてもよい。活動レベルを判定する多様な方法が適用されてもよく、ある種類の情報には、他の種類より大きい重みを付けてもよい。加えて、いくつかの種類の情報は、ある時間にまとめて無視されてもよい。提供された情報から判定された活動レベルは、次に、処理ノード１１の動作点を選択するために使用されてもよい。
【００５０】
（概念観点）
図３は、アプリケーションの活動に関して、電力管理ユニットの一実施形態の動作を例示するブロック図である。示される例では、グラフは、「アイドル」と低閾値の間の領域、低閾値と高閾値との間の領域、および高閾値より上の領域、の３つの領域に分割される。
【００５１】
第１の領域の活動レベル（すなわち、低閾値未満）は、処理作業負荷がメモリ主体である、またはそうでなければ、（対応する処理ノード１１のクロック周波数に関して）低い周波数制約があることを示す。このような活動レベルが検出される処理ノード１１は、処理ノード全体の性能に非常に少ない（存在する場合）マイナスの影響を与える、できる限り最低の非アイドル動作点に入れられてもよい。最低の非アイドル動作点は、最低のクロック周波数を有する動作点として定義されてもよい。できる限り最低の動作点はまた、できる限り最低の動作電圧を有する動作点によって定義されてもよい。上記の表１の例を使用すると、処理ノード１１の活動レベルが、所与の時間間隔の間、この領域にあると判定されると、少なくとも次の時間間隔は、Ｐ状態Ｐ４に入れられてもよい。
【００５２】
第３の領域の活動レベル（すなわち、高閾値より上）は、処理作業負荷が計算主体である、またはそうでなければ、（クロック周波数に関して）高い周波数制約があることを示す。この活動レベルが１時間間隔の間、所与の処理ノード１１で検出されると、少なくとも次の時間間隔はそのノードに対して、最高の動作点が選択されてもよい。上記の表１の例を使用すると、高活動レベルを検出すると、電力管理ユニット２０が、対応する処理ノードをＰ０状態に入れることになってもよい。これによって、タスクをより高速で完了する間、作業負荷が最高のパフォーマンスで実行することを可能にしてもよい。
【００５３】
所与の時間間隔に対して検出された活動レベルが第２の領域（低閾値を超えるが、高閾値未満）で検出されると、対応する処理ノードは、オペレーティングシステム（ＯＳ）、他のソフトウェア、ファームウェア、または他のハードウェアによって要求される動作点に入れられてもよい。表１のＰ状態、Ｐ１、Ｐ２、およびＰ３は、第２の領域で利用されてもよい中間動作点の例である。
【００５４】
ＯＳまたは他のソフトウェアが第２の領域内の動作点を選択する実施形態において、処理ノードは、いくつかの時間間隔に対して、その特定の点で動作し続けてもよく、検出されたアプリケーションの活動レベルは、第２の領域（すなわち、低閾値を超え、かつ高閾値未満）相応にとどまると想定する。ある中間動作点から別の動作点への変更は、最高および最低の動作点での動作を判定するために使用されるよりもはるかに長い時間間隔にしたがって発生してもよい。アプリケーションの活動レベルを低閾値および高閾値と比較することは、毎１０〜１００マイクロ秒の単位の間隔で発生し続けてもよいが、どの中間動作点が最適であるかを判定するために使用される比較は、毎３０〜１００ミリ秒の単位の間隔で発生してもよい。このように、電力管理ユニット２０は、アプリケーションの活動レベルを高閾値および低閾値と比較することを続けてもよく、対応する活動レベルが検出される任意のタイミングで、影響される処理ノード１１を最高動作点または最低動作点に推移させることによって、中間動作点の選択をオーバーライドしてもよい。
【００５５】
図３に示される高閾値および低閾値に加えて、ヒステリシス閾値レベルもまた、処理ノードの動作点を変更すべきかどうかを判定する際に検討されてもよい。高ヒステリシス閾値はまた、最高動作点へ推移または最高動作点から推移すべきかどうかを判定する際に検討されてもよく、一方、低ヒステリシス閾値は、最低動作点へ推移または最低動作点から推移すべきかどうかを判定する際に検討されてもよい。これらのヒステリシス閾値を利用することで、異常に起因して非最適動作点へ推移することを防止してもよい。例えば、計算主体の作業負荷がＰ状態Ｐ０で実行している状況を検討する。この状況での分岐予測ミスは、パイプライン失速を発生させる場合があり、これによって、活動レベル全体に一時的減少を生じる。高ヒステリシス閾値レベルは、このような状況で考慮に入れられてもよく、これによって、対応する処理ノード１１がＰ状態Ｐ０で引き続き動作することを可能にする。
【００５６】
上記の動作は、消費される電力の１ワットあたりのそのパフォーマンスを向上することによって、プロセッサの効率を強化してもよい。最低の周波数制約および／またはメモリ主体のアプリケーションのためにクロック周波数および動作電圧をそれらの可能な限りの最低動作値へ削減することによって、これらのアプリケーションが依然として、そうでなければ不要である電力を無駄にすることなく、適時に実行することを可能にしてもよい。最高の周波数制約および／または計算主体のアプリケーションのためにクロック周波数および動作電圧をそれらの可能な限りの最高動作値に増加することによって、これらのアプリケーションが、所望のパフォーマンスレベルでより高速に実行することを可能にし、このため、完了時に、より低い電力消費の動作点により迅速に戻ることを可能にしてもよい。
【００５７】
（電力管理ユニットおよびその構成要素）
図４は、電力管理ユニットの一実施形態を例示するブロック図である。示される実施形態において、電力管理ユニット２０は、以下に詳細を記載する、活動モニタ２０２、１秒あたりに実行される命令数（ＣＩＰＳ）ユニット２０４、１サイクルあたりの命令数（ＩＰＣ）ユニット２０６を使用して、１つ以上の処理ノードの各々の活動レベルを監視するように構成されている。これらの多様なユニットは、判定ユニット２０８に情報を提供してもよい。この情報は、処理ノード１１の各々の動作点を設定するために、判定ユニット２０８によって使用されてもよい。判定ユニット２０８は、処理ノード１１の各々のための動作点を判定するために、これらのユニットのうちの選択された１つから、または各々から提供される情報を検討してもよい。判定ユニット２０８はまた、処理ノード１１の各々の現在の動作点を示す情報を受信するように連結される。
【００５８】
所与の処理ノード１１の動作点への変更は、そこに提供されるクロック信号の周波数を変更することによって実施されてもよく、また、それぞれの供給電圧を変更することを含んでもよい。判定ユニット２０８による処理ノード１１の各々に対するクロック周波数の調整は、信号ＳｅｔＦ［Ｎ：０］の状態への変更を通して有効になってもよい。処理ノード１１の各々に対する動作電圧の調整は、信号ＳｅｔＶ［Ｎ：０］の状態への変更を通して有効になってもよい。
【００５９】
図４に示される電力管理ユニット２０の実施形態は例示であり、他の実施形態が可能で、検討されることに注意されたい。活動モニタ２０２、ＣＩＰＳユニット２０４、またはＩＰＣユニット２０６のうちの１つだけを含む実施形態もまた可能で考慮され、そのような実施形態は、判定ユニット２０８を使用することなく実装されてもよい。例えば、処理ノード１１の活動レベルがＣＩＰＳユニット２０４に提供される情報に基づいて判定される実施形態が検討される。このような実施形態では、ＣＩＰＳユニット２０４は、そうでなければ、判定ユニット２０８によって提供される機能のうちの少なくともいくつかを組み入れてもよい。
【００６０】
一般的に、電力管理ユニット２０は、任意の構成で実装されてもよく、１つ以上の処理ノードの活動レベル／処理作業負荷が監視されてもよく、これに応じて動作点の変更を有効にしてもよい。より具体的には、電力管理ユニット２０は、１つ以上の処理ノードの各々の活動レベルが、複数の時間間隔の各々に対して、高活動閾値および低活動閾値と比較され、次に続く時間間隔のそれぞれの動作点が比較の結果にしたがって選択されてもよい、任意の構成に実装されてもよい。より具体的には、電力管理ユニット２０は、次に続く時間間隔内の演算が、監視される活動レベルが高活動閾値を越える場合には最高の動作点（例えば、上記表１のＰ状態Ｐ０）に、活動レベルが低活動閾値未満の場合には最低の動作点（例えば、上記の表１のＰ状態Ｐ４）に、または活動レベルが高閾値未満かつ低閾値未満を超える場合には１つ以上の中間動作点のうちの１つ（例えば、Ｐ状態Ｐ１、Ｐ２、またはＰ３）に設定される、任意の構成に実装されてもよい。
【００６１】
ここで図５を参照すると、活動モニタの一実施形態を例示するブロック図が示される。示される実施形態において、活動モニタ２０２は、平均活動カルキュレータ（ＡＡＣ）２５０、閾値コンパレータ２５２、および間隔タイマ２５４を含む。示される実施形態の活動モニタ２０２は、１つ以上の処理ノード１１の活動の移動平均を計算、追跡し、平均活動レベルを高活動閾値および低活動閾値と比較するように構成されている。比較の結果は、処理ノードのための適当な動作点を判定するために使用されてもよい。示される実施形態において、比較は各間隔で１回実行され、間隔タイマ２５４によって計測される。
【００６２】
ＡＡＣ２５０は、１つ以上のメトリクスに基づいて、そこに連結される各処理ノード１１の活動レベルを判定してもよい。この特定の実施形態において、ＡＡＣ２５０は、パイプライン失速、命令実行、キャッシュヒットおよびミス、分岐予測ミス、および発行された命令に関する情報を受信するように連結される。本明細書に明示的に記載された以外の、または本明細書で検討されたメトリクスに追加して、メトリクスを利用する実施形態も可能で、検討される。また、これらのメトリクスのうちのいくつかは、いくつかの実施形態では、他よりも大きい重みが与えられる場合があることにも注意されたい。
【００６３】
ＡＡＣ２５０によって計算、追跡される平均活動レベルは、これらのメトリックスのうちの任意の１つ、これらのメトリックスの２つ以上の集積、またはこれらのメトリックスの全ての組み合わせに基づいて判定されてもよい。例えば、ＡＡＣ２５０は、キャッシュミスおよびパイプライン失速の両方に基づいて、プロセッサの作業負荷がメモリ主体であることを判定してもよく、これらの両方は、多数のメモリアクセスを必要とするアプリケーションで頻繁に発生してもよい。別の例では、キャッシュアクセスが少ない（キャッシュヒットおよびミスの合計によって示される）多数の命令実行は、計算主体の作業負荷を示す場合がある。
【００６４】
現在の時間間隔の間に受信される情報ならびに履歴情報の両方に基づいて、ＡＡＣ２５０は、活動が報告された各処理ノード１１に対して平均活動を判定してもよい。示される実施形態において、平均は、信号Ｔをアサートしている間隔タイマ２５４に応答して判定されてもよい。示される実施形態の間隔タイマ２５４は、間隔クロック信号を受信するように連結され、このクロック信号が受信された所定の数のサイクル後に、信号Ｔをアサートしてもよい。
【００６５】
各処理ノード１１の計算された活動平均は、ＡＡＣ２５０から閾値コンパレータ２５２へ提供されてもよい。閾値コンパレータ２５２は、信号Ｔをアサートしている間隔タイマ２５４に応答して、受信された活動レベルの比較を実施してもよく、これらは、その比較入力上で受信されてもよい。遅延時間は、ＡＡＣ２５０が、結果を判定、提供することを可能にするように許可されてもよく、閾値コンパレータ２５２は、遅延時間が経過した後に比較を実施する。閾値コンパレータ２５２は、各処理ノードの計算された活動平均を上記の低活動閾値および高活動閾値と比較してもよい。これらの比較結果は、次いで、閾値コンパレータ２５２から判定ユニット２０８へ提供されてもよく、これは、次いで、上述のように電力管理ユニット２０の動作にしたがって、これらの処理ノード１１の動作点への調整を生じさせてもよい。活動モニタ２０２のこれらの動作は、間隔タイマ２５４によって時間が決定される各時間間隔のために反復されてもよい。
【００６６】
図６は、ＣＩＰＳユニット２０４の一実施形態を例示するブロック図である。示される実施形態において、ＣＩＰＳユニット２０４は、ローパスフィルタ２６６、ＣＩＰＳカウンタ２６０、閾値コンパレータ２６２、および間隔タイマ２６４を含む。示される実施形態では、ＣＩＰＳユニット２０４は、処理ノード１１の各々のリタイアキュー（例えば、図２のリタイアキュー１０２）から、リタイアされた命令に関する情報を受信するように連結される。ＣＩＰＳユニット２０４は、既定の間隔内にリタイアした命令の数を判定してもよく、ＣＩＰＳ値を推定するためにこの値を使用してもよい。ＣＩＰＳ値はこのため、命令が実行され、実際にリタイアされる速度を示してもよい（例えば、分岐予測ミスに起因して、投機的に実行され、リタイアされないいくつかの命令、とは対照的に）。
【００６７】
リタイアの指示は、処理ノード１１から受信されてもよく、ローパスフィルタ２６６に初期に提供されてもよい。ローパスフィルタ２６６は、１つ以上のカウンタとして実装されてもよく、各カウンタは、処理ノード１１のうちの１つに対応する。この実施形態では、ローパスフィルタ２６６のカウンタは、Ｍの上限を有してもよく、このため、間隔ＴにわたってＭ個未満のリタイアがＣＩＰＳユニット２０４によって追跡される。これによって、短い突然の活動のバーストが、高活動として誤って解釈され、報告している処理ノード１１の最高動作点へのそうでなければ所望されない推移を発生させることを防止してもよい。
【００６８】
ローパスフィルタ２６６は、間隔タイマ２６４に連結されるリセット入力を含む。間隔が完了すると、間隔タイマ２６４は、Ｔ信号をアサートしてもよい。リセット入力上でＴ信号を受信することに応答して、ローパスフィルタ２６６の各カウンタがゼロにリセットされてもよい。
【００６９】
示される実施形態のＣＩＰＳカウンタ２６０もまた、いくつかのカウンタを含み、１つは各処理ノード１１に対応する。ローパスフィルタのカウンタが増加するたび、ＣＩＰＳカウンタ２６０の対応するカウンタもまた、増加させてもよい。ＣＩＰＳカウンタ２６０のカウンタを増加させることは重み付けされてもよい。したがって、ローパスフィルタ２６６のカウンタの増加とＣＩＰＳカウンタ２６０の増加の間には１対１の対応が必ず存在するわけではない。
【００７０】
ＣＩＰＳカウンタ２６０のカウンタはまた、間隔タイマ２６４によるＴ信号のアサーション（ＤｅｃＡｌｌに提供される）に応答して、条件付きで減少されてもよい。一実施形態において、ＣＩＰＳカウンタ２６０の所与のカウンタは、対応する処理ノード１１の命令リタイア数は、現在の動作点の予測数以下または等しい、（Ｔ信号のアサーションに応答して）任意の間隔の終了時に減少されてもよい。そうでなければ、対応する処理１１の命令リタイア数が、その所与の間隔の間に予測されるリタイア数を超える場合、カウンタは、Ｔ信号のアサーションに応答して減少しなくてもよい。
【００７１】
減少もまた重み付けられてもよい。増加および減少の重み付けは、パフォーマンスがバイアスまたは電力がバイアスされるように、本明細書に記載の電力管理機能のバイアスを可能にしてもよい。電力管理機能がバイアスされたパフォーマンスである場合、重み付けは、増加を重視して行われてもよく、それによって、命令リタイアに応答してＣＩＰＳカウンタ２６０内のより高いカウントを生じる。重視が電力消費の削減（すなわち、電力バイアス）にある場合、重み付けは、減少を重視して行われてもよく、それによって、命令リタイアに応答してＣＩＰＳカウンタ２６０内のより低いカウントを生じる。この重み付けは、ユーザによるプログラミング、ファームウェア、プログラミングフューズ等を通して等、多様な機構によって構成可能であってもよい。
【００７２】
ＣＩＰＳカウンタ２６０によって生成されるカウンタ値は、閾値コンパレータ２６２に提供されてもよい。示される実施形態において、閾値コンパレータ２６２は、図５に示されるその対応部分と類似の様式で機能してもよい。各カウンタ値は、高活動閾値および低活動閾値と比較されてもよく、動作点は、高活動閾値または低活動閾値が、前の時間間隔に対して越えている、これらの処理ノードに対して調整されてもよい。比較は、比較入力上で受信されてもよい、間隔タイマ２６４によるＴ信号のアサーションに応答して、各間隔で１回実施されてもよい。比較結果は、判定ユニット２０８に提供されてもよく、これにしたがって処理ノード１１の動作点を調整してもよい。
【００７３】
図７は、ＩＰＣユニット２０６の一実施形態のブロック図である。示される実施形態において、ＩＰＣユニットは、いくつかの処理ノード１１の各々から実行された命令の指示を受信するように連結されてもよい、命令カウンタを含む。これは、処理ノード１１がスーパースカラー処理ノードである実施形態において、２つ以上の実行ユニットから実行された命令の指示を受信することを含んでもよい。命令カウンタ２７０は、処理ノード１１の各々に対して実行された命令のカウントを追跡してもよい。各処理ノードのために追跡されたカウントは、カウント値として、図５および６を参照して上述した対応部分に類似した様式で、高活動閾値および低活動閾値との比較を実施してもよい、閾値コンパレータ２７２に提供されてもよい。比較結果は、任意の動作点の変更が対応する処理ノード１１に行われるかを判定するために、カウント値を使用してもよい、判定ユニット２０８に提供されてもよい。カウントすること、および比較することは、間隔タイマ２７４によって制御される間隔毎を基本に実施されてもよい。命令カウンタ２７０のカウンタは、間隔タイマ２７４のＴ信号のアサーションによって示されるように、各間隔が完了するつど、リセットされてもよい。
【００７４】
前述のように、活動モニタ２０２、ＣＩＰＳユニット２０４、およびＩＰＣユニット２０６によって提供される比較結果は各々、判定ユニット２０８に提供されてもよい。提供された比較結果に基づいて、判定ユニット２０８は、それぞれのクロック周波数、それぞれの動作電圧、または両方に変更を生じさせることによって、処理ノード１１のうちの１つ以上の動作点に変更を生じさせてもよい。いくつかの実施形態では、判定ユニット２０８は、比較結果に重み付けを提供して、いくつかに他よりも多い重み付けを与えてもよい。例えば、判定ユニット２０８は、ＩＰＣユニット２０６から受信されるものに対して、活動モニタ２０２およびＣＩＰＳユニット２０４から受信される比較結果に追加の重み付けを提供してもよい。
【００７５】
別の実施形態では、判定ユニット２０８は、異なる比較結果が受信された場合、投票スキームに基づいて、動作点を変更するかどうかを判定してもよい。例えば、活動モニタ２０２およびＣＩＰＳユニット２０４の両方の活動レベルが高活動閾値を超えていることを示すが、ＩＰＣユニット２０６が同じことを示さない場合、判定ユニット２０８は、対応する処理ノードの動作点をＰ状態Ｐ０に変更してもよい。別の実施形態では、判定ユニット２０８は、処理ノードの動作点を変更するかどうかを判定する際、ユニットの１つだけを検討する（例えば、ＣＩＰＳユニット２０４からの情報だけを検討する）ように構成可能であってもよい。
【００７６】
一般的に、判定ユニット２０８は、任意の好適な手法において、各処理ノード１１の適当な動作点を判定するように構成されてもよい。その上、ユニットのうちの１つだけ（例えば、活動モニタ２０２）を含む電力管理ユニット２０の実施形態も可能で、検討され、そのような実施形態では、ＳｅｔＦおよびＳｅｔＶ信号の状態を設定することに同様な機能がその中に組み入れられてもよい。
【００７７】
（動的パフォーマンス制御のための方法）
図８および９は、上記の電力管理ユニット２０の多様な実施形態が動作されてもよい方法を例示する。方法の実施形態は、本明細書では単一の処理ノードを参照して記載される。しかしながら、上記に準じて、電力管理ユニット２０は、いくつかの異なる処理ノードと同時に本明細書に記載の方法の多様な実施形態を実施してもよいことに注意されたい。
【００７８】
図８は、電力管理ユニットを動作するための方法の一実施形態の流れ図である。示される実施形態において、方法７００は、処理ノード内のアプリケーション活動を追跡することから開始する（ブロック７０５）。活動レベルは、低閾値および高閾値と比較されてもよい。活動レベルが高閾値を超える（ブロック７１０、はい）が、処理ノードが高動作点で既に動作している（例えば、最高のＰ状態、Ｐ０、ブロック７１５、はい）場合、変更は行われず、アプリケーション活動の追跡が継続する（ブロック７０５）。
【００７９】
活動レベルが高閾値を超え（ブロック７１０、はい）、動作点が高動作点未満である（ブロック７１５、はい）場合、その処理ノードの動作点は、少なくとも次の時間間隔に対しては、高動作への推移であってもよい（ブロック７２０）。新しい動作点に推移した後、活動は再び追跡される（ブロック７２５）。処理ノードの動作は、活動レベルが高閾値を超えたままである（ブロック７３０、いいえ）場合、高動作点で継続してもよい。間隔の活動レベルが高閾値未満（ブロック７３０、はい）であるが、低閾値を超えたままで（ブロック７３５、いいえ）、現在の動作点が本来の動作点と同じではない（ブロック７７０、いいえ）場合、処理ノードは、ＯＳまたはソフトウェアによって必要とされる中間動作点に推移する（ブロック７７５）。
【００８０】
ブロック７１０で、活動レベルが高閾値未満（ブロック７１０、いいえ）であり、低閾値を超える（ブロック７４０、いいえ）場合、方法は、ブロック７０５のアプリケーション活動の追跡に戻る。ブロック７４０の活動レベルが低閾値未満（ブロック７４０、はい）で、動作点が低動作点にある（ブロック７４５、いいえ）場合、方法は再び、ブロック７０５のアプリケーション活動の追跡に戻る。しかしながら、ブロック７４０の活動レベルが低閾値未満（ブロック７４０、はい）で、動作点が低動作点を超える（ブロック７４５、はい）場合、処理ノードは、低動作点に推移する（ブロック７５０）。低動作点に推移した後、アプリケーション活動が追跡され（ブロック７５５）、活動レベルが低閾値未満のままである（ブロック７６０、いいえ）場合、方法はブロック７５５に戻り、処理ノードはそのままで、動作点は変更されないままである。しかしながら、活動レベルが低閾値を超える（ブロック７６０、はい）が、高閾値を超えない（ブロック７６５、いいえ）場合、ブロック７７０は、「いいえ」になり、処理ノードは、オペレーティングシステムまたは他のソフトウェアによって必要とされる中間動作点に推移する。
【００８１】
ブロック７３５で、活動レベルが低閾値未満である（ブロック７３５、はい）場合、方法は、ブロック７４５へ推移してもよい。処理ノードが低動作点以外の動作点で動作している（ブロック７４５、はい）場合、少なくとも次の時間間隔に対しては、低動作点へ推移してもよい（ブロック７５０）。この推移に続いて、方法は、ブロック７５５から以降、上記のシーケンスに従ってもよい。そうでなく、処理ノードが低動作点で既に動作している（ブロック７４５、いいえ）場合、方法はブロック７０５に戻ってもよい。
【００８２】
ブロック７６５で、活動レベルが高閾値を超える（ブロック７６５、はい）場合、方法は、ブロック７１５へ推移してもよい。処理ノードが高動作点以外の動作点で動作している（ブロック７１５、はい）場合、少なくとも次の時間間隔に対しては、高動作点へ推移してもよい（ブロック７２０）。この推移に続いて、方法は、ブロック７２５から、上記のシーケンスに従ってもよい。そうでなく、処理ノードが高動作点で既に動作している（ブロック７１５、いいえ）場合、方法はブロック７０５に戻ってもよい。
【００８３】
図９は、いくつかの時間間隔にわたって、方法の一実施形態の動作を例示する図である。例示を容易にするために、方法は、単一の中間動作点のみを参照して説明される。しかしながら、上記（例えば、表１を参照）に準じて、いくつかの中間動作点が実装されてもよい、実施形態が可能で、検討されることが理解される。さらに、上記のように、図９の例は、単一の処理ノードを参照して行われるが、上記の方法論は、同じ電気系統内のいくつかの固有の処理ノードと同時に実施することができることが理解される。
【００８４】
示される例のＴ０のすぐ前の時点で、処理ノードの活動レベルは低閾値未満である。したがって、例の最初の完全な時間間隔、Ｔ０からＴ１までに対しては、処理ノードの動作点は、低動作点に設定される。最初の間隔の間、活動レベルは増加し、低閾値より上の点にとどまる。このため、次の間隔、Ｔ１からＴ２までに対しては、処理ノードの動作点は、中間動作点に設定される。
【００８５】
Ｔ１からＴ２までの間隔の間、処理ノードの活動レベルは、高閾値を超える点まで増加する。このため、Ｔ２からＴ３の間隔に対しては、処理ノードは高動作点で作動する。活動レベルはこの間隔全体で高閾値を超えたままで、このため、処理ノードは、Ｔ３からＴ４までの間隔に対して、高動作点での動作にとどまる。
【００８６】
Ｔ３とＴ４との間の間隔において、活動レベルは、再び高閾値を超える点まで上昇する前に、間隔の一部に対して、高閾値未満に低下する。分岐予測ミス、キャッシュミス、中断、または他の理由でパイプラインをフラッシュまたは失速させる場合がある他のイベント等の多様なイベントは、必ずしも処理作業負荷自体の低下を示すことなく、処理全体の低下を一時的に示す場合がある。したがって、本明細書に記載の方法を実施するように構成されている電力管理ユニットは、このような状況を考慮するように構成されてもよい。例えば、前の間隔の終了時点の実際の活動レベルに基づいて、次の間隔の動作点を設定する代わりに、電力管理ユニットは、即時の間隔および１つ以上の前の間隔にわたる平均活動レベルをその代わりに判定してもよい（例えば、図５を参照した上記の実施形態等）。したがって、プロセッサ処理能力に一時的な低下を生じる場合があるが、それ以外は一切の削減された作業負荷を示さないイベントは、動作点がその現在のレベル、またはこの特定のインスタンスの高い点にとどまるように、効果的にフィルタされてもよい。同様に、現在および１つ以上の前の間隔にわたる平均活動レベルを使用することは、そうでなければ低い（例えば、メモリ主体の）作業負荷の活動の突然のバーストを選択的にフィルタしてもよい。このような技法を使用することによって、本明細書に記載される電力管理ユニットが、異常イベントが動作点に影響することを防止する一方、プロセッサの作業負荷に対して動作点をより効果的に一致させることを可能にしてもよい。
【００８７】
Ｔ４で開始する間隔に対して、活動レベルは何度か低下し、再上昇し、動作点はそれに従う。前述のように、間隔は継続時間が短くてもよい。一実施形態において、間隔は、１０マイクロ秒から１００マイクロ秒までの範囲であってもよいが、他の継続時間の間隔（１０マイクロ秒より短い継続時間の間隔を含む）が可能で、検討される。短い間隔を利用することによって、処理ノードの動作点が、その対応する活動レベルを密接に反映することを可能にしてもよい。これによって、処理ノードが、計算主題の作業負荷が完了した後相当時間にわたって最高動作点で、または作業負荷要求の増加に続いて相当時間にわたって最低動作点で、維持されることを防止してもよい。
【００８８】
図９は、第２の継続時間の複数の間隔のうちの１つ、Ｔ０−ＯＳからＴ１−ＯＳも例示する。ここに示される第１の間隔Ｔ０−Ｔ１０の数から第２の間隔の数は、例であって、第１の間隔と第２の間隔の比率は異なってもよい。ここに例示される第２の間隔のうちの例示的間隔は、オペレーティングシステムソフトウェアが処理ノードの活動レベルを監視してもよい、間隔であってもよい。これらの間隔は、第１の間隔よりも継続時間が相当に長くてもよく、いくつかの場合、１つ以上の桁数だけ長い。オペレーティングシステムは、これらの第２の間隔にわたって活動レベルを監視してもよく、これにしたがって動作点を調整してもよい。しかしながら、本明細書に記載される電力管理ユニットの多様な実施形態は、活動レベルが高活動閾値以上、または低活動閾値以下の場合に、各処理ノードの動作点の制御を保持してもよい。これらの２つの閾値の間になる活動レベルでは、電力管理ユニットは、オペレーティングシステムが、プロセッサの各処理ノード（またはプロセッサコア）の動作点を設定することを可能にしてもよい。しかしながら、電力管理ユニットは、第１の間隔の間、高活動閾値以上または低活動閾値以下である活動レベルが検出される場合、第２の間隔のうちの１つの間隔の間の任意の時点で、オペレーティングシステムによって行われる動作点の選択をオーバーライドしてもよい。
【００８９】
（コンピュータアクセス可能記憶媒体）
次に図１０を参照すると、システム１０のデータベース４０５表現を含むコンピュータアクセス可能記憶媒体４００のブロック図が示される。一般的に、コンピュータアクセス可能記憶媒体４００として、使用中にコンピュータに命令および／またはデータを提供するように、コンピュータによってアクセス可能な任意の非一時的記憶媒体が挙げられてもよい。例えば、コンピュータアクセス可能記憶媒体４００には、磁気または光学媒体、例えば、ディスク（固定された、もしくは取り外し可能な）、テープ、ＣＤ−ＲＯＭ、またはＤＶＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ、あるいはブルーレイ等の記憶媒体が挙げられる。記憶媒体には、ＲＡＭ（例えば、シンクロナスダイナミックＲＡＭ（ＳＤＲＡＭ）、ダブルデータレート（ＤＤＲ、ＤＤＲ２、ＤＤＲ３等）ＳＤＲＡＭ、低パワーＤＤＲ（ＬＰＤＤＲ２等）ＳＤＲＡＭ、Ｒａｍｂｕｓ  ＤＲＡＭ（ＲＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）等）、ＲＯＭ、フラッシュメモリ、ユニバーサルシリアルバス（ＵＳＢ）インターフェース等の周辺インターフェースを介してアクセス可能である不揮発性メモリ（例えば、フラッシュメモリ）等の揮発性または不揮発性メモリ媒体がさらに挙げられる。記憶媒体には、微小電気機械システム（ＭＥＭＳ）、ならびにネットワークおよび／または無線リンク等の通信媒体を介してアクセス可能な記憶媒体が挙げられる。
【００９０】
概して、コンピュータアクセス可能記憶媒体４００上に含まれるシステム１０のデータベース４０５は、システム１０を備えるハードウェアを組み立てるように、プログラムによって読み出され、直接または間接的に使用され得る、データベースまたは他のデータ構造であってもよい。例えば、データベース４０５は、ＶｅｒｉｌｏｇもしくはＶＨＤＬ等の高級設計言語（ＨＤＬ）でのハードウェア機能性の動作レベル記述またはレジスタ転送レベル（ＲＴＬ）記述であってもよい。記述は、ゲートのリストを含むネットリストを生成するために、記述を合成し得る合成ツールによって、合成ライブラリから読み出されてもよい。ネットリストは、また、システム１０を備えるハードウェアの機能性も表す、ゲートのセットを含む。次いで、ネットリストは、マスクに適用される幾何学的形状を記述するデータセットを生成するように、定置され、経路指定されてもよい。次いで、マスクはシステム１０に対応する半導体回路（単数または複数）を生産するために、様々な半導体加工ステップで使用されてもよい。代替として、コンピュータアクセス可能記憶媒体４００上のデータベースは４０５、所望により、ネットリスト（合成ライブラリを伴う、または伴わない）またはデータセットであってもよい。
【００９１】
コンピュータアクセス可能記憶媒体４００は、システム１０の表現を含むが、他の実施形態は、ＩＣ２、任意の組のエージェント（例えば、処理ノード１１、Ｉ／Ｏインターフェース１３、電力管理ユニット２０等）、またはエージェントの一部（例えば、活動モニタ２０２、ＣＩＰＳユニット２０４等）を含めて、所望に応じて、システム１０の任意の部分の表現を含んでもよい。
【００９２】
本発明は、特定の実施形態を参照して記載されてきたが、実施形態は、例示であり、本発明の範囲は、それに限定されないことが理解される。記載される実施形態に対する任意の変形、修正、追加、および改善が可能である。これらの変形、修正、追加、および改善は、以下の「特許請求の範囲」内に詳述されるように、本発明の範囲内であり得る。
【図１】
2013536532.tif 000004
【図２】
2013536532.tif 000005
【図３】
2013536532.tif 000006
【図４】
2013536532.tif 000007
【図５】
2013536532.tif 000008
【図６】
2013536532.tif 000009
【図７】
2013536532.tif 000010
【図８】
2013536532.tif 000011
【図９】
2013536532.tif 000012
【図１０】
2013536532.tif 000013
【手続補正書】
【提出日】平成25年4月30日(2013.4.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
処理ノードと、
複数の第１の時間間隔の各々に対して、前記処理ノードの活動レベルを監視するように構成された電力管理ユニットとを備え、
前記電力管理ユニットは、
所与の第１の時間間隔内の前記活動レベルが高活動閾値を超える場合、少なくとも１つの連続する第１の時間間隔の間、複数の動作点のうちの所定の高動作点で前記処理ノードを動作させ、
前記所与の第１の時間間隔内の前記活動レベルが低活動閾値未満である場合、前記少なくとも１つの連続する第１の時間間隔に対して、前記複数の動作点のうちの所定の低動作点で前記処理ノードを動作させ、
前記活動レベルが前記低活動閾値と前記高活動閾値との間にある場合、オペレーティングシステムソフトウェアが、前記少なくとも１つの連続する第１の時間間隔に対して、前記複数の動作点のうちの１つ以上の所定の中間動作点のうちの１つで前記処理ノードを動作させることを可能にするように、さらに構成されている、
システム。
【請求項２】
前記第１の時間間隔の各々の第１の継続時間は、前記処理ノードの前記活動レベルを監視するように前記オペレーティングシステムソフトウェアによって使用される複数の第２の時間間隔であって、前記監視された活動レベルが前記高活動閾値未満であり、かつ前記低活動閾値を超える場合に、前記処理ノードの前記動作点を変更するように前記オペレーティングシステムソフトウェアによってさらに使用される複数の第２の時間間隔の各々の第２の継続時間未満である、請求項１に記載のシステム。
【請求項３】
前記複数の第１の間隔の各々は、１００マイクロ秒以下の継続時間を有し、前記複数の第２の時間間隔の各々は、３０ミリ秒以上の継続時間を有する、請求項２に記載のシステム。
【請求項４】
前記所定の高動作点は、前記複数の動作点のうちの最高の動作点であり、前記所定の低動作点は、前記複数の動作点のうちの最低の非アイドル動作点であり、前記１つ以上の中間動作点は、前記所定の高動作点よりも低く、かつ前記所定の低動作点よりも高い、請求項１に記載のシステム。
【請求項５】
前記電力管理ユニットは、２つ以上の処理ノードの各々に対して、前記それぞれの活動レベルを前記高活動閾値および前記低活動閾値と比較するようにさらに構成され、前記２つ以上の処理ノードは各々、相互に独立してそれぞれの動作点で動作するように構成されている、請求項１に記載のシステム。
【請求項６】
前記電力管理ユニットは、前記少なくとも１つの処理ノードの前記動作点を変更する際に、クロック信号のクロック周波数を変更するように構成されている、請求項１に記載のシステム。
【請求項７】
最高動作点で動作するときの前記クロック周波数は、前記複数の動作点のうちの他の動作点のうちのいずれかで動作するときのクロック周波数を超え、最低の非アイドル動作点で動作するときの前記クロック周波数は、前記複数の動作点のうちの他の動作点のうちのいずれか１つで動作するときのクロック周波数未満であり、前記最低の非アイドル動作点での前記クロック周波数はゼロを超える、請求項５に記載のシステム。
【請求項８】
前記複数の動作点の各々は動作電圧をさらに含み、
前記電力管理ユニットは、前記処理ノードの前記動作点を変更するときに、前記処理ノードに提供される前記動作電圧を変更するように構成されている、請求項５に記載のシステム。
【請求項９】
前記電力管理ユニットは、
前記複数の第１の時間間隔のうちの所与の間隔内に受信されるリタイアされた命令の各指示に応答して、カウンタを増加させ、
前記複数の第１の時間間隔のうちの前記所与の間隔に対する命令リタイア数が、予測された命令リタイア数以下であると判定することに応答して、カウンタを減少させ、
前記複数の第１の時間間隔のうちの前記所与の間隔の終了時に前記カウンタによって提供されるカウンタ値を、前記高活動閾値および低活動閾値と比較するように構成されている、請求項１に記載のシステム。
【請求項１０】
前記電力管理ユニットは、前記カウンタを増加させる時に第１の重み係数を適用し、前記カウンタを減少させる時に第２の重み係数を適用するようにさらに構成されている、請求項８に記載のシステム。
【請求項１１】
複数の第１の時間間隔の各々に対して、処理ノードの活動レベルを判定することと、
前記活動レベルが高活動閾値を超える場合、電力管理ユニットが、少なくとも１つの連続する第１の時間間隔に複数の動作点のうちの所定の高動作点で前記処理ノードを動作させることと、
前記活動レベルが低活動閾値未満である場合、前記電力管理ユニットが、前記少なくとも１つの連続する第１の時間間隔に前記複数の動作点のうちの所定の低動作点で前記処理ノードを動作させることと、
前記活動レベルが前記低活動閾値と前記高活動閾値との間である場合、オペレーティングシステムソフトウェアが、前記複数の動作点のうちの１つ以上の中間動作点のうちの１つで前記処理ノードを動作させることと、を含む、
方法。
【請求項１２】
前記オペレーティングシステムソフトウェアが、複数の第２の時間間隔にわたって前記活動レベルを監視することをさらに含み、前記第１の時間間隔の各々の第１の継続時間は、前記第２の時間間隔の各々の第２の継続時間未満である、請求項１１に記載の方法。
【請求項１３】
前記所定の高動作点は、前記複数の動作点のうちの最高の動作点であり、前記所定の低動作点は、前記複数の動作点のうちの最低の非アイドル動作点であり、前記１つ以上の中間動作点の各々は、前記所定の高動作点より低く、かつ前記所定の低動作点より高い、請求項１１に記載の方法。
【請求項１４】
前記複数の第１の時間間隔の各々に対して、２つ以上の処理ノードのそれぞれの活動レベルを高活動閾値および低活動閾値と比較することと、
それぞれの活動レベルの前記比較に基づいて、前記２つ以上の処理ノードのうちの第１のノードの動作点を設定することと、
それぞれの活動レベルの前記比較に基づいて、前記２つ以上の処理ノードのうちの第２のノードの動作点を設定することと、をさらに含み、
前記２つ以上の処理ノードのうちの前記第２のノードの前記動作点は、前記２つ以上の処理ノードのうちの前記第１のノードの前記動作点を設定することとは独立して設定される、請求項１１に記載の方法。
【請求項１５】
前記処理ノードの前記動作点を変更することは、前記処理ノードに提供されるクロック信号の周波数を変更することを含む、請求項１１に記載の方法。
【国際調査報告】
2013536532.tif 000014
2013536532.tif 000015
2013536532.tif 000016
2013536532.tif 000017
2013536532.tif 000018