(57)【特許請求の範囲】
【請求項１】
グループ内の複数の計算ユニットを含むコンピュータシステムを動作させるための方法であって、
前記グループ内の１つ以上の前記計算ユニットであって前記グループ内の他の前記計算ユニットよりも低い性能感度を伴う１つ以上の前記計算ユニットを、前記グループ内に残っている計算ユニットの予想される電力マージンがゼロよりも大きくなるまで除去することと、
前記グループ内に残っている前記計算ユニットの性能をブーストすることによって性能を変化させることとを備えた方法。
【請求項２】
性能が変化させられる前記１つ以上の計算ユニットは変化させられる前に同じ電力状態にあり、前記同じ電力状態は公称最大電力状態である請求項１に記載の方法。
【請求項３】
前記計算ユニットは前記グループ内の複数の処理コアを含む、請求項１に記載の方法。
【請求項４】
複数の計算ユニットを含むコンピュータシステムを動作させるための方法であって、
前記計算ユニットのグループの性能をブーストすることに起因して予想される電力マージンがゼロよりも小さい場合においては、
前記グループ内の他よりも低い性能感度を伴う計算ユニットを前記グループから除去して計算ユニットの小さいグループを形成することと、
新たな予想される電力マージンを計算するとともに、前記小さいグループ内の前記計算ユニットの性能がブーストされたときに、前記新たな予想される電力マージンがゼロよりも大きいかどうかを決定することと、
前記新たな予想される電力マージンが前記小さいグループ内の前記計算ユニットに対してゼロよりも大きいときに、前記小さいグループ内の前記計算ユニットの前記性能をブーストすることによって性能を変化させることと、
前記小さいグループに対する前記新たな予想される電力マージンが未だにゼロよりも小さいときに、他の計算ユニットに対して低いブースト感度を伴う別の計算ユニットを前記小さいグループから除去して別の小さいグループを形成することとを備える方法。
【請求項５】
現在の実際の電力マージン−Σ（ブーストされた電力−現在の電力）に従って前記新たな予想される電力マージンを決定することを更に備え、前記ブーストされた電力はブーストされた電力レベルで動作させられる前記小さいグループ内の前記計算ユニットの電力であり、前記現在の電力は現在の電力レベルで動作している前記小さいグループ内の前記計算ユニットの電力であり、前記現在の実際の電力マージンは前記計算ユニットの現在の電力消費に対応する電力マージンである請求項４に記載の方法。
【請求項６】
記憶装置にアクセスして前記計算ユニットの前記それぞれの性能感度を決定することを更に備え、前記記憶装置は各処理コアで実行中のそれぞれの処理コンテクストに対応する性能感度を記憶している請求項１に記載の方法。
【請求項７】
複数の計算ユニットと、
前記計算ユニットに対するそれぞれの性能感度を記憶する記憶装置と、
前記性能感度に従って１つ以上の前記計算ユニットの性能をブーストするように構成される電力割り当て機能と、を備え、
前記電力割り当て機能は、コアのグループの全てをブーストされた性能状態へとブーストするには十分でない予想される電力マージンに更に応答し、計算ユニットの前記グループから１つ以上の計算ユニットを除去し、新たな予想される電力マージンを再計算するものであり、前記除去は、前記グループの他の前記計算ユニットの性能感度よりも低いそれぞれの性能感度を有する前記グループからの前記１つ以上の計算ユニットに従って決定され、前記除去及び前記再計算は前記新たな予想される電力マージンがゼロよりも大きくなるまで繰り返され、それにより前記計算ユニットの残りの性能をブーストすることを提供する装置。
【請求項８】
前記装置は少なくとも１つの集積回路を備え、前記計算ユニットは少なくとも１つの処理コア、メモリ制御器、及びグラフィックス処理ユニットを備え、前記電力割り当て機能はハードウエア、ファームウエア、及びコンピュータ可読媒体に記憶されるソフトウエアの１つ以上において実装される請求項７に記載の装置。
【請求項９】
前記それぞれの計算ユニットの前記性能感度は、第１及び第２の性能レベルで決定される前記それぞれの計算ユニットの第１及び第２の性能測定基準に従って決定される請求項７に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータシステムにおける電力割り当てに関し、より特定的には性能を向上させるために電力を割り当てることに関する。
【背景技術】
【０００２】
プロセッサは、電力消費をワークロード要求に釣り合わせることを目的として種々の性能レベルで動作する。性能レベルは、典型的にはプロセッサによって用いられる電圧／周波数の組み合わせにより決定される。プロセッサはこれまで多重コア及び他の機能性を伴いより高度に集積化されてきており、電力の及び熱的な検討が極めて重要なことであることに変わりはない。
【発明の概要】
【課題を解決するための手段】
【０００３】
改善された性能を提供するために、実施形態は、例えば周波数変化やシステムにおいて利用可能な電力ヘッドルームによる実行能力の変化に対する計算ユニットの性能感度に基づく電力割り当て戦略に基づいて、処理コア及びグラフィックス処理ユニットのような計算ユニット上で実行されるワークロードの解析を可能にし、一定の電力制限のなかでシステム性能を改善する。
【０００４】
そこで、１つの実施形態においては、複数の計算ユニットを含むコンピュータシステムを動作させるための方法が提供される。方法は、計算ユニットのそれぞれの性能感度に従って１つ以上の計算ユニットの性能を変化させることを含む。方法は、１つ以上の計算ユニットのどれが他の計算ユニットよりも高い性能感度を有しているかに従って１つ以上の計算ユニットの性能を変化させることを含んでいてよい。実施形態においては、計算ユニットは複数の処理コアのグループを含み、方法は、処理コアのグループの性能をブーストすることに起因して予想される電力マージンがゼロよりも小さい場合においては、グループ内の他よりも低いブースト感度を伴うコアをグループから除去して小さいグループを形成することと、小さいグループ内のコアの性能がブーストされたときに、新たな予想される電力マージンを計算すると共に新たな予想される電力マージンがゼロよりも大きいかどうかを決定することとを更に含む。新たな予想される電力マージンがゼロよりも大きい場合には、小さいグループ内のコアの性能がブーストされる。小さいグループ内のコアは、小さいグループ内のコアに供給されるクロック信号の少なくとも周波数を増大することによってブーストされてよい。
【０００５】
それぞれの計算ユニットの性能感度は、第１及び第２の性能レベルで決定されるそれぞれの計算ユニットの第１及び第２の性能測定基準に従って決定され得る。
【０００６】
別の実施形態においては、複数の計算ユニットを含む装置が提供される。装置は、それぞれの計算ユニットに対する性能感度を記憶する記憶装置を更に含む。ハードウエア、ファームウエア、及び／又はソフトウエアにおいて実装される電力割り当て機能は、性能感度に従って１つ以上の計算ユニットの性能をブーストする。
【０００７】
電力割り当て機能は、計算ユニットのどの１つ以上が計算ユニットの他よりも高い性能感度を有しているかに応答する。
【０００８】
電力割り当て機能は、計算ユニットの各々の性能感度をスレッショルド値と比較すると共にスレッショルドよりも高い性能感度を有している計算ユニットをブーストするように構成され得る。
【０００９】
電力割り当て機能は、コアのグループの全てをブーストされた性能状態へとブーストするには十分でない予想される電力マージンに応答してよく、計算ユニットのグループから１つ以上の計算ユニットを除去し、新たな予想される電力マージンを再計算するものであってよく、除去は、グループの他の計算ユニットの性能感度よりも低いそれぞれの性能感度を有するグループからの１つ以上の計算ユニットに従って決定される。除去及び再計算は、新たな予想される電力マージンがゼロよりも大きくなるまで繰り返され、それにより計算ユニットの残りの性能をブーストすることを提供する。
【図面の簡単な説明】
【００１０】
添付の図面を参照することによって、当業者にとって、本発明はよりよく理解されるであろうし、またその数々の目的、特徴、及び利点が明らかになるであろう。
【００１１】
【図１】図１は本発明の実施形態に従う例示的なチップ上システム（ＳＯＣ）システムの高位レベルのブロック図である。
【図２】図２は本発明の１つの実施形態に従いコア周波数に対する性能感度をプロファイリングするための高位レベルのフロー図である。
【図３】図３はシステムブロック図レベルでの周波数トレーニングを示す図である。
【図４】図４は周波数トレーニングの追加的な態様を示す図である。
【図５】図５は本発明の実施形態に従う電力再割り当ての例示的なフロー図である。
【図６】図６は周波数感度に従い計算ユニットをスロットルするための例示的なフロー図である。
【００１２】
異なる図面における同じ参照記号の使用は、類似の又は同一の事項を表す。
【発明を実施するための形態】
【００１３】
プロセッサ集積回路がその熱設計点(thermal design point)（ＴＤＰ）を下回って動作している場合に、多重コアプロセッサ上のＣＰＵコアの性能レベルを日和見的に引き上げる（例えば周波数を引き上げる）ことを提案してきた多くの方法がある。集積回路が動作する実際の熱点(thermal point)は、熱測定、スイッチングアクティビティ測定、又は電流測定によって決定され得る。そのような手法は、所与のＴＤＰの下での性能を改善するために見積もられた電力、電流、又は熱ヘッドルーム(thermal headroom)がある場合には、複数のＣＰＵコアの動作周波数が同時に引き上げられることを可能にし、また動作がそれらの限界を超えている場合には、ＣＰＵコアの動作周波数が減少させられることを可能にする。そのような手法は、全てのアクティブなＣＰＵコアが、それらの周波数が協調的なやり方で引き上げられている場合にそれらの最大性能で動作することを前提としてきた。
【００１４】
別の手法は複数のＣＰＵコアの間での電力再割り当てを提供する。Ｐ０（オペレーティングシステム（ＯＳ）によって設定される最も高い性能状態）にあるコアは、性能状態が何らかのスレッショルド（より低い性能状態によって定義される）を下回る他の単一又は複数のコア上で利用可能な電力ヘッドルームを再割り当てすることによって、オーバークロックされることがある。
【００１５】
コアの性能状態に基づいて全てのコアに対して又は１つ以上のコアに対して電力を均一に増大するための上述した手法は、アイドル中の計算ユニット、例えばＣＰＵ又はグラフィカル処理ユニット（ＧＰＵ）から電力を再割り当てすることを可能にするが、周波数をディザリング(dithering)し又は定常状態周波数をブーストする場合に全てのアクティブなユニットを均等に扱ってしまう。しかし、幾つかのアクティブなコア又は他の計算ユニットが、より高いコア周波数から性能増大を殆ど獲得していない又は全く獲得していないことがある一方で、他のコア又は計算ユニットは、コア周波数における増大に対してより高い感度を伴うワークロードを動作させているかもしれない。周波数感度に基づきアクティブなコア又は他の計算ユニットの間で電力を選択的に分配することは、均一なワークロード又は不均一なスレッドを伴う多重スレッド化されたワークロードに対して、より大きな全体のシステムスループットを可能にする。このことは、コア周波数の変化に対するワークロード感度を識別する効果的な手法を必要としている。
【００１６】
図１は本発明の実施形態を実装している例示的なチップ上システム（ＳＯＣ）１００の高位レベルを示す図(high-level view)である。ＳＯＣ１００は、多重ＣＰＵ処理コア１０１、ＧＰＵ（グラフィックス処理ユニット）１０３、Ｉ／Ｏブリッジ１０５（幾つかの実施形態ではサウスブリッジと称される）、及びノースブリッジ１０７（幾つかの実施形態ではメモリ制御器と兼ねることがある）を含む。電力割り当て制御器１０９は、熱設計点（ＴＤＰ）電力ヘッドルームのダイ上又はプラットフォーム上構成部品への割り当てを制御する機能要素である。性能解析制御論理１１１は、後で更に説明されるように、コア及び他の計算ユニットの性能感度を解析する。尚、電力割り当て制御器１０９及び性能解析センタ１１１はノースブリッジ１０７の部分として示されているが、他の実施形態においては、それらはＳＯＣ１００内の別の場所にあってもよい。
【００１７】
ＴＤＰ（熱設計点）は、ＳＯＣ全体によって消費され得る電力を表し、そして形状因子(form-factor)、利用可能な冷却解決法、ＡＣアダプタ／バッテリ、及び電圧レギュレータのような因子に依存する。ＳＯＣ性能は最新のＴＤＰの範囲内で最適化され、ある実施形態においては、ＴＤＰに対応する電力限界は超えられない。ＳＯＣ電力限界がＳＯＣのＴＤＰ限界（ＳＯＣ＿ＴＤＰ＿Ｌｉｍｉｔ）であると仮定する。ＳＯＣ特性は、典型的にはダイ上構成部品の各々に対して最大電力を割り当てることに基づくと共にＳＯＣ＿ＴＤＰ＿Ｌｉｍｉｔの範囲内にとどまる。このことは、最高動作点（周波数（Ｆ）及び電圧（Ｖ）における）で実行されると最大限予想されるアクティビティでさえも、割り当てられた限界(envelope)に対して電力を超えさせないように、この最高動作点を設定することによって生じる。例えば、４コアＳＯＣの最大電力が４０ｗのＴＤＰ限界によって制限されていると仮定する。表１はダイ上構成部品の各々に対して割り当てられる電力割当量(power budget)を箇条書きしている。
【００１８】
【表１】
0005564564.tif 000002
【００１９】
８ｗの電力割り当て量は、コアの最高の公称動作点（Ｆ，Ｖ）を定義している限界であり、またＧＰＵに対しては５ｗの電力割当量がそれである。しかし、このような割り当ては、全てのダイ上構成部品の同時使用を前提としているから、保守的でありまた公称最大値でしかない。多くの現実的なアプリケーションは、ＣＰＵ制約又はＧＰＵ制約(GPU-bounded)のいずれかである。あるアプリケーションが両計算エンジンを用いているとしても（例えばビデオ再生はプロセッサコアに対して幾つかのタスクを解放する）、そのアプリケーションは４プロセッサコア全部を利用しはしない。ＣＰＵ制約のクライアントアプリケーションでさえ、多くの場合、１乃至２個のプロセッサコア（１乃至２スレッドのワークロード）を利用し、またそれらのうちの少数のみが、長時間にわたって４つのコア全部を利用するのに十分な並列性を有している。
【００２０】
ある実施形態は、アイドリング中の又はより活動的でない構成部品から活発に動作している構成部品への電力の再割り当てを、活発に動作している構成部品にもっと多くの電力を割り当てることによって提供する。例えば、４つのうちの２つのコアがアイドリング中であり且つＧＰＵが半分の電力で動作しているワークロードの例において、この状態を反映する電力割当量が表２に示されている。
【００２１】
【表２】
0005564564.tif 000003
【００２２】
コア０及びコア１は、全体的なＣＰＵスループットを改善するために１６．７５ｗを割り当てられる。両コアの動作点（Ｆ，Ｖ）は、新たな電力ヘッドルーム（８ｗの代わりに１６．７５ｗ）を満たすために高められてよい。代替的には、一方のコアの電力割当量だけが２５．５ｗに増大されると共に、他方のコアは８ｗの電力割当量に維持されてよい。このような場合、増大された電力割当量を伴うコアは、より高い動作点（Ｆ，Ｖ）までブーストされてよく、その結果、新たな電力ヘッドルーム（２５．５ｗ）が有効に用いられ得る。この特定の場合において、２つのコアを均等にブーストするかあるいは利用可能な全ての電力ヘッドルームを１つのコアへ供給するかの決定は、全体的なＳＯＣ性能を改善するために何が最良であるかに依存している。
【００２３】
ブースト感度トレーニング及びデータ構造
【００２４】
ある実施形態によると、改善された性能向上を試み且つ達成するためにコア０とコア１の間でどのように電力を割り当てるかを決定する１つの方法は、２つのコアのどちらが、もしあれば例えば周波数の増大により提供される実行能力における向上をより有効に活かすことができるかを知ることである。実行能力の変化は、例えば、コアが利用可能なキャッシュの量の変化、コアで動作中のパイプラインの数、及び／又は命令フェッチ速度によってもたらされることもある。コアのうちのどれが実行能力における向上をより有効に活かすことができるかを評価するために、１つの実施形態では、周波数変化及び／又は実行能力における他の変化への各計算ユニットの性能感度、ここではブースト感度とも称される、が計算ユニットベースで決定され且つ記憶される。
【００２５】
図２を参照すると、本発明の１つの実施形態に従ってコア周波数変化に対して性能感度をプロファイリングするための高位レベルのフロー図が示されている。まずステップ２０１では、解析中のＣＰＵコアに所定の低周波数クロック信号が予め定められた又はプログラム可能なインターバル、例えば１００μｓ〜１０ｍｓで印加される。当該インターバルの間、ハードウエア性能解析制御論理（図１参照、要素１１１）は、サイクル毎のコア命令（ＩＰＣ）（コアの報告による）をサンプリングし、そしてその平均をとる。性能解析制御論理は、ＩＰＣ×コア周波数（低周波数又は第１の性能レベル）に基づいて第１の秒毎命令（ＩＰＳ）測定基準(first instructions per second (IPS) metric)を第１の性能測定基準として決定する。ＩＰＳ測定基準は一時レジスタ「Ａ」内に記憶されてよい。次いでステップ２０５では、性能解析制御論理は、所定の高周波数クロック信号が同じ予め定められた又はプログラム可能な時間インターバルで、解析中のＣＰＵコアに印加されるようにする。性能解析制御論理は、ステップ２０７において再びＩＰＣ（コアの報告による）をサンプリングし、そしてその平均をとる。性能解析制御論理は、ＩＰＣ×コア周波数（高周波数又は第２の性能レベル）に基づいて第２の秒毎命令（ＩＰＳ）測定基準を決定し、そして第２のＩＰＳ測定基準を一時レジスタ「Ｂ」内に第２の性能測定基準として記憶する。性能解析制御論理は、ステップ２０９でＡとＢの間の数値差を決定し、そしてその結果を、解析中のコアの番号と解析の間にＣＰＵコア上で実行中のプロセスのコンテクスト番号(process context number)と共に性能テーブル又はブースト感度テーブル内へ性能感度として記憶する（ステップ２１１）。尚、ブースト感度を決定するために、周波数変化の代わりに又は周波数変化と併せて、実行能力の他の変化が利用されてもよい。
【００２６】
コンテクスト番号は、ＣＲ３レジスタの内容又はＣＲレジスタのハッシュ(hash)がより短い番号が記憶されるのを可能にすることによって決定され得る。当該数値差はコアに対するブースト感度を表している。即ち、当該数値差は、当該特定プロセスコンテクストを実行中のコアの周波数変化に対する感度を表している。感度が高ければ高いほど、周波数を増大することによってより大きな性能向上が得られることになる。プロセッサコアの各々に対して及びその公称最大電力値を超えてブースト（オーバークロック）され得る任意の他の構成部品に対して、図２に示される同じトレーニングが適用され、そして値はブースト感度テーブル内に記憶される。ブースト感度テーブル内の値は、最も高いブースト感度を伴うコア又は他のダイ上構成部品から始まって降べき順で記憶されてよい。
【００２７】
他の実施形態においては、種々の性能状態を実装するためにその周波数が変化させられる可能性のある全ての計算ユニットに対して、それらが公称電力レベルを超えてクロックされ得る（オーバークロックされ得る）かどうかにかかわらず、周波数感度トレーニングが適用される。そのようにして、システムは、周波数変化に対してより繊細なコア（又は他の計算ユニット）については電力割り当て量を与え、また周波数変化に対してより繊細でないコアからは電力割り当て量を取り去るように更に割り当てすることができる。そのようにして、ＳＯＣに対する顕著な性能低下を伴うことなしに、コア又は他の計算ユニットはそれらの周波数を低下させて電力を節約することができる。
【００２８】
図３はシステムブロック図レベルでの周波数トレーニングを示している。トレーニング中のコア３０１が各コアに対する周波数トレーニングを代表している。クロック発生器３０３は、性能解析制御論理１１１によって制御されて、高周波数及び低周波数のクロック信号をコア３０１へ周波数周期の間に供給する。コア３０１はサイクル毎命令の値を性能解析制御論理１１１へ供給し、性能解析制御論理１１１は、図２に従って処理を制御する。図４は第１の時間周期の間にサンプリングし且つ平均をとることによって決定されるサイクル毎命令の測定値（ＩＰＣ１）を示しており、ＩＰＣ１は、乗算器４０１において、第１の時間周期の間に供給される周波数（ＦＲＥＱ１）と乗ぜられる。同様に、第２の時間周期の間に決定されるサイクル毎命令の測定値（ＩＰＣ２）は、乗算器４０３において、第２の時間周期の間に供給される周波数（ＦＲＥＱ２）と乗ぜられる。乗算器４０１及び４０３において決定された利用測定基準の差が加算器４０５において決定される。その結果がブースト感度であり、ブースト感度テーブル４０７内に記憶される。ブースト感度テーブル４０７は、各測定に対して、結果と共にコア番号（Ｃ＃）、コアで実行中の処理コンテクスト、及び最後の性能感度測定からの経過時間を記憶する。その結果が、例えば平均ＩＰＣ×コア周波数によって計算される秒毎命令（ＩＰＳ）として表現された性能測定基準又はブースト感度である。尚、ブースト感度テーブルは、ＳＯＣ１００（図１）内又はコンピュータシステムにおける他の場所に記憶されてよい。
【００２９】
各コアに対するブースト感度は、最新のプロセッサコンテクストに関連しており、最新のプロセッサコンテクストは、ノースブリッジにより追跡されるＣＲ３のｘ８６レジスタ値によって概算され得る。１つの実施形態においては、コンテクストが変化するときに、感度は再評価される。別の実施形態においては、ブースト感度は、固定の又はプログラム可能なタイマに基づいて各コンテクストに対して満了する（例えば１〜１００ｍｓ後）。更に他の実施形態においては、タイマ及びコンテクスト切り替えの両方のうちどちらでも最初に生じたものが、ブースト感度再評価を開始するために用いられる。
【００３０】
このように、周波数トレーニングのための１つの実施形態が説明されてきた。図２における機能性は、ハードウエア（例えば性能解析制御ブロック１１１内の状態マシン）内、ファームウエア（マイクロコード又はマイクロ制御器内の）内、又はソフトウエア（例えばドライバ、ＢＩＯＳルーチン又は高位レベルソフトウエア）内で実装されてよい。ソフトウエアは、低周波数及び高周波数のクロック信号を供給開始し、ＩＰＣ値を受信し、ＩＰＣ値の平均値を求め、そして図２に関連して説明される他の機能を実行するように機能し得る。ソフトウエアは、図１のコンピュータシステムにおいて、コンピュータ可読な電子的、光学的、磁気的、又は他の種類の揮発性若しくは不揮発性のメモリ内に記憶されてよく、そして１つ以上のコアによって実行されてよい。更に他の実施形態においては、図２に示される上述の周波数感度トレーニングは、特定のシステムのニーズ及び能力に応じて、部分的にはハードウエアにおいて、また部分的にはソフトウエアにおいて実装される。例えば、ソフトウエアは、ブースト感度テーブルを維持し、ＣＲ３レジスタを読んで処理コンテクストを決定し、そしてブースト感度を再決定するためにソフトウエアタイマを維持することに関与してよい一方で、ハードウエアは、ソフトウエアによって通知されたときに、第１及び第２の周波数を有するクロックを適切な時間周期で印加すると共に平均ＩＰＣを決定する。ソフトウエアはＩＰＳ値を決定することに関与することがある。
【００３１】
電力割当量の再割り当て
【００３２】
ブースト感度テーブル（ＢＳＴ）は、周波数感度トレーニングセッションの結果として、ブーストされる可能性のある構成部品のために維持される。他の実施形態においては、周波数感度テーブルが、周波数感度トレーニングの結果として、典型的には周波数（及び必要であれば電圧）を調節することを通してその性能が調節され得る全ての構成部品のために維持される。ある実施形態においては、電力割当量の再割り当ては、ＢＳＴ内の情報を用いて、単一又は複数のどのダイ上構成部品がブーストに対して最も敏感で、従って再割り当てが生じたときに再割り当てされるより高いＴＤＰ電力マージンを獲得するのに「ふさわしい」のかを決定する。
【００３３】
特定のプロセッサコアは、Ｎ個の性能状態の１つにあってよい。性能状態は、コア電圧及び周波数の値の固有のペアによって特徴付けられる。最も高い性能状態は、典型的には、任意の予想されるアクティビティが、コアに対して割り当てられた電力割当量を当該コア電力（動的＋静的）が超えることのないようにし得るように、選択されそして特徴付けられる。最新のシステムにおいては、コア性能状態は、現在のコア利用により導かれるオペレーティングシステムソフトウエアによって定義される。他の実施形態においては、コア性能状態は、コアによって現在実行されているコンテクストに基づいて、ハードウエアによって指定されてよい。表３は、オペレーティングシステム（ＯＳ）（又は任意の他の高位レベルソフトウエア）が時間インターバルにわたるコア利用に応じて各コアに対して利用し得る４つの性能状態（Ｐ０、Ｐ１、Ｐ２、及びＰ３）を有する例示的なシステムのための性能状態を示している。１つの例示的なオペレーティングシステムにおける時間インターバルは、１ミリ秒〜１００ミリ秒の範囲にある。ＯＳ（又は任意の他の高位レベルソフトウエア）がコアを低Ｃ状態にセットしている場合、２つのアイドル状態が用いられる。Ｃ状態はコア電力状態である。この特定の実施形態においては、コアは、アイドル状態（短時間のアイドルであることが期待される場合）又は深いＣ状態のいずれかに置かれてよい。最も高い動作点（Ｐブースト）は、コア電力（ＣｏｒｅＢｏｏｓｔＰｗｒ）が当該特定コアに対して割り当てられる公称最大電力割当量を超えるときのものである。
【００３４】
【表３】
0005564564.tif 000004
【００３５】
ＧＰＵ電力状態は、従来どおりソフトウエア（グラフィックスドライバ）によって制御される。他の実施形態においては、ＧＰＵ電力状態は、ハードウエアがＧＰＵアクティビティを追跡すると共に他のグラフィック関連エンジン（ユニファイドビデオデコーダ（ＵＶＤ）、ディスプレイ等）からの情報を受信することによって制御されてもよい。１つの例示的な実施形態においては、ＧＰＵは、表４に示されるように、４つの電力状態のうちの１つであってよい。
【００３６】
【表４】
0005564564.tif 000005
【００３７】
１つの実施形態においては、２種類のダイ上構成部品、即ちコアプロセッサ及びＧＰＵのみがより高い性能点までブーストされてよい。コア又はＧＰＵのブースト処理に対して、Ｉ／Ｏモジュール及びメモリ制御器がそれらの「不使用な」電力割り当てをこれらの構成部品へ再割り当てすることによって貢献し得るが、それらはそれら自身によってはブーストされ得ない。他の実施形態においては、メモリ制御器は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）及びそれ自身の周波数をより高い動作点へ移行させることによるのと同じようにしてブーストされ得る。
【００３８】
計算ユニットへ電力を効率的に割り当てる１つの実施形態は、利用可能な電力ヘッドルームを恒久的に追跡すること、又はＴＤＰ電力マージンを基礎としている。ＳＯＣのＴＤＰマージン（ＳＯＣ＿ＴＤＰ＿Ｍａｒｇｉｎ）は、全てのダイ上構成部品の電力消費の和をＳＯＣ＿ＴＤＰ＿Ｌｉｍｉｔから減ずることによって計算され、即ち、ＳＯＣ＿ＴＤＰ＿Ｍａｒｇｉｎ＝ＳＯＣ＿ＴＤＰ＿Ｌｉｍｉｔ−ΣＣｏｒｅ（ｉ）Ｐｗｒ−ＧＰＵ＿Ｐｗｒ−Ｍｅｍｏｒｙ＿Ｃｏｎｔｒｏｌｌｅｒ＿Ｐｗｒ−Ｉ／Ｏ＿Ｂｒｉｄｇｅ＿Ｐｗｒとなる。ダイ上構成部品の状態における任意の変化が、ＳＯＣ＿ＴＤＰ＿Ｍａｒｇｉｎ値の更新のトリガーとなる。１つの実施形態においては、更新をトリガーする状態の変化は、性能若しくは電力状態の変化又はアプリケーション／ワークロードアクティビティの変化である。他の実施形態においては、更新をトリガーする状態の変化は、処理コンテクスト変化であってよく、又は処理コンテクスト変化若しくは性能状態変化のいずれかであってよい。ある実施形態においては、構成部品によって消費される電力の変化、例えば性能／電力状態の変化又はアプリケーション／ワークロードアクティビティの変化、を結果としてもたらす任意のイベントは、状態トリガーイベントの変化として機能し得る。
【００３９】
一般的には、特定の計算ユニットの電力（電圧×電流）は、クロック信号の周波数、供給電圧、及び計算ユニットにおけるアクティビティの量に基づいている。各計算ユニットの電力を決定する特定の手法は、システムの能力及びニーズに従って変わるであろうし、またハードウエア及び／又はソフトウエア手法に基づいて実装されるであろう。例えば、１つの手法においては、平均電力値＝動的電力＋静的電力として平均電力値を計算すると共に報告する。動的電力は、動的電力＝（平均ワークロードアクティビティ／最大アクティビティ）×最大電力として計算することができ、ここで最大電力は、最大アクティビティに関連する最大動的電力の融合した又は設定可能な値(fused or configurable value)である。静的電力は計算ユニットが動作している電圧に依存し、また静的電力は、テーブルから抽出することができ、さもなければ電力管理資源から利用可能にされ又はハードウエアで決定され得る。平均ワークロードアクティビティは、インターバルにおける計算ユニットでの信号切り替え(signal toggles)の平均数として、又はインターバルにおける平均ＩＰＣとして計算され得る。電力計算は、ソフトウエア（例えばドライバ）が計算ユニットで実行中のアプリケーションのアクティビティを知っており且つ上述と同様の手法を用いて平均電力を決定するソフトウエア方法を利用してもよい。
【００４０】
ある実施形態においては、Ｐ０状態にあるコア及びＧＰＵ＿Ｐ０状態にあるＧＰＵのみが、他のダイ上構成部品から電力を再割り当てされ得ると共により高い性能点へとブーストされ得る。このことは、Ｐ０状態にあるコア又はＧＰＵ＿Ｐ０状態にあるＧＰＵが、現在実行されているタスクが計算的に拘束されていることの本質的な暗示（オペレーティングシステム又は幾つかの高位レベルソフトウエア、例えばグラフィックスドライバによってもたらされる）であるという観察に基づいている。他の実施形態においては、コア及び／又はＧＰＵは、それらが他の非アイドル状態にあるときにブーストされてよい。
【００４１】
図５は電力を割り当てる電力割り当て制御器１０９（図１）の実施形態の動作の例示的なフロー図を示している。ステップ５０１では、電力割り当て制御器は、任意のダイ上構成部品に対する状態変化、例えば性能状態変化、アプリケーション／アクティビティ変化、又は処理コンテクスト変化を待つ。状態変化が生じると、ステップ５０３においてＴＤＰ＿ＳＯＣ＿Ｍａｒｇｉｎが追跡され、そしてステップ５０５においてマージンが０よりも大きいかどうかの決定がなされる。大きくない場合にはフローはステップ５０１に行く。マージンが０よりも大きい場合、これは１つ以上のコアをブーストするヘッドルームがあることを意味し、この場合、ステップ５０７において任意のＣＰＵコアがＰ０状態にあるかどうかを調べるためにチェックがなされる。この特定の実施形態においては、Ｐ０にあるコアのみがブーストされ得る。Ｐ０にあるコアがない場合、フローはステップ５２３においてＧＰＵ電力状態をチェックする。少なくとも１つのコアがＰ０にある場合、電力割り当て制御器は、ステップ５０９において、Ｐ０にある全てのコアに対して、新ＴＤＰ＿ＳＯＣ＿Ｍａｒｇｉｎ＝ＴＤＰ＿ＳＯＣ＿Ｍａｒｇｉｎ−Σ（ＣｏｒｅＢｏｏｓｔＰｗｒ−ＣｏｒｅＰｗｒ）を計算することによって、全てのＰ０コアをブーストするのに十分なルームがあるかどうかをチェックする。新ＴＤＰ＿ＳＯＣ＿Ｍａｒｇｉｎは、Ｐ０にある全てのコアがブーストされると仮定した場合に予想されるマージン値である。ＴＤＰ＿ＳＯＣ＿Ｍａｒｇｉｎは現在のマージン値である。ＣｏｒｅＢｏｏｓｔＰｗｒはブーストされたときのコア電力であり、そしてＣｏｒｅＰｗｒはＰ０状態にある現在のコア電力である。電力割り当て制御器は、ステップ５１１において新マージンがゼロよりも大きいかどうかをチェックする。大きい場合には、全てのＰ０コアをブーストするのに十分なヘッドルームがあることになり、当該処理がステップ５１５でなされると共にＴＤＰ＿ＳＯＣ＿Ｍａｒｇｉｎが更新される。フローは次いでステップ５０１へ戻り、別の状態変化を待ち受ける。
【００４２】
ステップ５１１においてマージンがゼロより大きくない場合には、何らかのマージンが可能であるかどうかを見つけるためにフローはステップ５１７へ進む。最も高い感度を伴うコアが識別される。このことは、例えば上述したブースト感度トレーニングによりもたらされるブースト感度テーブルにアクセスすることによってなされてよい。ステップ５１９では、Ｐ０状態にあるコアが例えばブースト感度の降べき順で順序付けられる。従って、最後尾は周波数増大に対して感度が最も小さい。ステップ５２１では、電力割り当て制御器は、最も低いブースト感度を伴うコアを１つずつリストから除去し、そしてリストにまだ残っている全てのコアに対してステップ５０９におけるように新ＴＤＰ＿ＳＯＣ＿Ｍａｒｇｉｎを再計算する。他の実施形態においては、予め定められた又はプログラム可能なスレッショルドを下回るブースト感度を有する全てのコアが一斉にリストから除去される。これに対する論拠は、性能が向上され得ないであろうコアをブーストすることによる電力を浪費しないようにするところにある。新ＴＤＰ＿ＳＯＣ＿Ｍａｒｇｉｎがゼロよりも大きい場合には、リストにまだあるＰ０コアはＰブーストに移行させられ、そしてＴＤＰ＿ＳＯＣ＿Ｍａｒｇｉｎが更新される。
【００４３】
ステップ５２３では、電力割り当て制御器は、ＧＰＵがＧＰＵ＿Ｐ０状態にあるかどうかを調べるためにチェックする。ＧＰＵ＿Ｐ０状態にない場合には、フローは５０１に戻って状態変化を待ち受ける。ＧＰＵがＰ０状態にある場合には、電力割り当て制御器は、ＧＰＵに対してブーストされる電力とその現在の電力の差を現在のＴＤＰ＿ＳＯＣ＿Ｍａｒｇｉｎから減じて新ＴＤＰ＿ＳＯＣ＿Ｍａｒｇｉｎを計算することによって、ＧＰＵをブーストするのに十分なヘッドルームがあるかどうかをステップ５２５で決定する。ステップ５２７では、電力割り当て制御器は、新マージンがゼロよりも大きいかどうかを調べるためにチェックし、もしゼロよりも大きければ、ＧＰＵをそのブーストされた状態へ移行させると共にＴＤＰ＿ＳＯＣ＿Ｍａｒｇｉｎを更新し、そしてステップ５０１に戻って任意の構成部品における別の状態変化を待ち受ける。十分なマージンがない場合には、フローはステップ５０１に戻る。
【００４４】
このように、十分なマージンがある場合にはＰ０状態にある計算ユニットに電力を割り当てると共に、周波数ブーストにそれほど敏感ではない計算ユニットを除くことによって当該マージンを見出すための１つの実施形態が説明されてきた。他の実施形態においては、追加的な電力を保証するために、例えば予め定められた又はプログラム可能なスレッショルドを上回る十分に高いブースト感度を伴う例えば計算ユニットにだけ周波数ブーストがもたらされる。そのようにして、可能であれば低減された電力消費を維持することを試みつつ、性能の向上を図ることができる。
【００４５】
図５における機能性は、ハードウエア（例えば状態マシン）内、ファームウエア（マイクロコード又はマイクロ制御器内の）内、又はソフトウエア（例えばドライバ、ＢＩＯＳルーチン又は高位レベルソフトウエア）内、あるいはブースト感度に基づいて電力を割り当てるハードウエアやソフトウエアの任意の適切な組み合わせにおいて実装されてよい。ブースト感度情報がブースト感度トレーニングから利用可能であるとすると、１つの実施形態においては、ソフトウエアは、任意の構成部品の状態の変化を通知されて図５に関連して説明された手法を実装してよい。ソフトウエアは、図１のコンピュータシステムにおいて、コンピュータ可読な電子的、光学的、磁気的、又は他の種類の揮発性若しくは不揮発性のメモリ内に記憶されてよく、そして１つ以上のコアによって実行されてよい。更に他の実施形態においては、図５の機能性は、特定のシステムのニーズ及び能力に応じて、部分的にはハードウエアにおいて、また部分的にはソフトウエアにおいて実装される。
【００４６】
ブースト感度情報の有用性は、ＳＯＣによって種々の方法で利用され得る。中央処理ユニット（ＣＰＵ）スロットリングはそのような利用の１つの例である。ＧＰＵ拘束のアプリケーションが実行中であると仮定する。即ち、ＧＰＵ上で実行中のアプリケーションは、例えば現在の性能状態が特定のアプリケーションに必要とされるよりも低いことを理由として、ＧＰＵの性能によって制限される。その場合、コアの全てにＰ状態制限（例えばＰ状態制限＝Ｐ２状態）を課すことによって、ＣＰＵコアがスロットルされてよい（それらの性能を制限してよい）。このことは、利用可能な電力マージンをＧＰＵに対して解放することになる。ある実施形態においては、ＧＰＵ拘束の又はＣＰＵ拘束のアプリケーションは、特定のコア又はＧＰＵがどれくらいビジーであるかを表すデータに基づいて識別される。
【００４７】
代替的には、周波数に対して最も低い性能感度を伴うコアのみがＰ状態制限へとスロットルされてよい。例えば、４コアシステムにおいては、ブースト感度テーブルに従いコア周波数変化に対して最も低いＩＰＳ感度を伴う２つのコアが、Ｐ状態制限＝Ｐ２を課すことによってスロットルされてよい一方で、他のコアの状態は変化しないままであってよい。このことは、ＧＰＵに対して（（Ｃｏｒｅ＿Ｐｗｒ０−Ｃｏｒｅ＿Ｐｗｒ２）×２）に等しい電力マージンを解放するであろうし、ここでＣｏｒｅ＿Ｐｗｒ０はＰ０状態にあるコアによって消費される電力であり、またＣｏｒｅ＿Ｐｗｒ２はＰ２状態にあるコアによって消費される電力である。
【００４８】
更に他の実施形態においては、ＣＰＵ拘束の（又は計算拘束の）アプリケーション（１つ以上の処理コアの性能によって制限されるアプリケーション）が実行中である場合、しばしばアプリケーションは利用可能なコアのサブセットで実行されるから、周波数増大（又は周波数低減）にそれほど敏感でないコアは、他のコアに対して追加のマージンをもたらすためにスロットルされてよい。ＧＰＵ拘束のアプリケーションは、ＧＰＵの性能によって制限されるアプリケーションである。
【００４９】
図６はブースト感度情報に基づく性能スロットルの高位のレベルのフロー図を示している。ステップ６０１では、ＣＰＵ拘束の又はＧＰＵ拘束のアプリケーションが識別される。ステップ６０３では、記憶されているブースト感度情報又は性能感度情報が精査され、そしてステップ６０５では、例えば周波数、電圧、コアに利用可能なキャッシュの量、コアで動作しているパイプラインの数、及び／又は命令フェッチ速度の低減のような実行能力の低減に対しては性能に関してそれほど繊細でないコアのサブセットに基づいて、計算ユニットのサブセット、例えば処理コアが、スロットルするものとして識別される。ステップ６０７では、サブセットの性能が制限され、そしてスロットルすることによって利用可能にされた電力ヘッドルームが、ステップ６０９において、ＣＰＵ拘束の及び／又はＧＰＵ拘束のアプリケーションを実行中の単一又は複数の計算ユニットに対して提供される。図６において説明される機能性は、電力割り当て制御器１０９内又は高位のレベルのソフトウエア内に実装されてよく、あるいはハードウエア及びソフトウエアの両方を利用して実装されてよい。
【００５０】
アプリケーションが主としてＣＰＵコアを利用する場合、ＧＰＵは、ＧＰＵ＿Ｐｗｒ０よりも低いＰ状態制限にＧＰＵを強制すること又はその命令／メモリトラフィックストリームをスロットルすることのいずれかによってスロットルされてよい。スロットルされたＧＰＵ電力がＧＰＵ＿Ｐｗｒ２に等しい場合、追加の電力マージンＧＰＵ＿Ｐｗｒ０−ＧＰＵ＿Ｐｗｒ２が、ブースト感度テーブル値に応じて１つ以上のＣＰＵコアをブーストするために再割り当てされ得る。
【００５１】
計算拘束ワークロードが多重コアプロセッサ上又はＧＰＵ上で動作する場合、メモリもまたスロットルされてよい。１つの方法は、幾つかのサイクルだけＤＲＡＭへのアクセスを１つおきにストール(stall)することによって、ＤＲＡＭ＿Ｉ／Ｏ及びＤＲＡＭ＿ＤＩＭＭ電力の動的な部分を２に近い係数で低減することである。別の手法は、幾つかの利用可能なメモリチャネルを中断することを含んでいてよく、これによってもＤＲＡＭ＿Ｉ／Ｏ及びＤＲＡＭ＿ＤＩＭＭ電力の所与のパーセンテージを解放することができる。低減されたＤＲＡＭ＿Ｉ／Ｏ電力は、ＧＰＵ又はＣＰＵコアのいずれかにこれらの構成部品の利用、及びＢＳＴ値（ＣＰＵコアが関係する限り）に応じて再割り当てされてよく、それにより更に高い全体的なＳＯＣ性能スループットを導き出すことができる。ＤＲＡＭ＿ＤＩＭＭはＳＯＣの一部ではなくてよく、この場合その電力割当量はＳＯＣ＿ＴＤＰの一部ではない。しかし、低減されたＤＲＡＭ＿ＤＩＭＭ電力マージンがＳＯＣ＿ＴＤＰへと再割り当てし戻され得る状況においては、ＧＰＵ又は幾つかのＣＰＵコアをブーストするために追加のマージンが用いられ得る。
【００５２】
本発明の幾つかの実施形態に対して回路及び物理的な構造が概して想定されてはいるが、最新の半導体設計及び製造においては、物理的な構造及び回路は、後続の設計、試験、又は製造の段階における使用に適したコンピュータ可読の記述形態において具体化され得ることが、十分に認識されている。例示的な構成における個別的な構成部品として提示されている構造及び機能性は、組み合わされた構造又は構成部品として実装され得る。本発明は、回路、回路のシステム、関連する方法、並びにそのような回路、システム、及び方法を符号化しているコンピュータ可読媒体、並びにここに説明され及び添付の特許請求の範囲で画定されるような全てを包含することが意図されている。ここで用いられるコンピュータ可読媒体は、少なくともディスク、テープ、又は他の磁気的な、光学的な、半導体（例えばフラッシュメモリカード、ＲＯＭ）の、若しくは電子的な媒体を含む。
【００５３】
このように種々の実施形態が説明されてきた。ここに記載されている本発明の説明は例示的なものであり、そして下記の特許請求の範囲に記載される本発明の範囲を限定することを意図するものでないことを特記しておく。例えば、複数の計算ユニットが多重コアプロセッサの一部であってよい一方で、他の実施形態においては、複数の計算ユニットが、一緒に又は別個にパッケージされ得る複数の別個の集積回路内にあってよい。例えば、グラフィカル処理ユニット（ＧＰＵ）及びプロセッサは、一緒に又は別個にパッケージされ得る複数の別個の集積回路であってよい。ここに開示される実施形態の変形及び修正が、下記の特許請求の範囲に記載される本発明の範囲から逸脱することなしに、ここに記載される説明に基づいてなされるであろう。
【図１】
0005564564.tif 000006
【図２】
0005564564.tif 000007
【図３】
0005564564.tif 000008
【図４】
0005564564.tif 000009
【図５】
0005564564.tif 000010
【図６】
0005564564.tif 000011