(57)【要約】  複数のプロセッシングエンティティを有するプロセッシングプラットフォームのグローバル電力制御ユニットとインタフェースをとるローカル電力制御アービタが提供される。当該ローカル電力制御アービタは、プロセッシングプラットフォームのローカルプロセッシングユニットを制御する。当該ローカル電力制御アービタは、グローバル電力制御評価に応じてローカルプロセッシングユニットに割り当てられたローカル性能リミットを、グローバル電力制御ユニットから受信するインタフェースと、グローバル電力制御ユニットによってローカル性能リミットがローカルプロセッシングユニットに適用される期間よりも短い時間スケールでローカルプロセッシングユニットにおいて見られる１つ以上の処理状態に対する変化を決定し、且つローカル性能リミットと、存在する場合の、ローカルプロセッシングユニット上で見られる処理状態について決定された変化と、の双方に応じて、ローカルプロセッシングユニットの性能レベルを選択する、プロセッシング回路と、を有する。
2021531526.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッシングエンティティを有するプロセッシングプラットフォームのグローバル電力制御ユニットとインタフェースをとるローカル電力制御アービタであって、当該ローカル電力制御アービタは、前記プロセッシングプラットフォームのローカルプロセッシングユニットを制御するものであり、当該ローカル電力制御アービタは、
グローバル電力制御評価に応じて前記ローカルプロセッシングユニットに割り当てられたローカル性能リミットを、前記グローバル電力制御ユニットから受信するインタフェースと、
プロセッシング回路であり、
前記グローバル電力制御ユニットによって前記ローカル性能リミットが前記ローカルプロセッシングユニットに適用される期間よりも短い時間スケールで前記ローカルプロセッシングユニットにおいて見られる１つ以上の処理状態に対する変化を決定し、且つ
前記ローカル性能リミットと、存在する場合の、前記ローカルプロセッシングユニット上で見られる処理状態について決定された変化と、の双方に応じて、前記ローカルプロセッシングユニットの性能レベルを選択する、
プロセッシング回路と、
を有する、ローカル電力制御アービタ。
【請求項２】
前記ローカル性能リミットは、周波数上限、電圧上限、電力上限、及び電流上限のうちの少なくとも１つを有する、請求項１に記載のローカル電力制御アービタ。
【請求項３】
前記グローバル電力制御ユニットによって前記ローカル性能リミットが前記ローカルプロセッシングユニットに適用される前記期間は、１００マイクロ秒よりも長く、前記処理状態に対する変化が決定される時間スケールは、１０マイクロ秒と１００マイクロ秒との間の範囲内である、請求項１に記載のローカル電力制御アービタ。
【請求項４】
前記処理状態において決定される変化は、前記プロセッシングユニット上で実行されているスレッドの数における変化、処理しているワークロードにおける変化、及び前記プロセッシングユニットの利用率における変化、のうちの少なくとも１つを有する、請求項１に記載のローカル電力制御アービタ。
【請求項５】
前記ローカルプロセッシングユニットから、前記ローカルプロセッシングユニットの性能レベルの変更要求を受信し、該性能レベルの変更要求を、その後の、前記ローカル性能リミットを更新するためのグローバル電力評価のために、前記グローバル電力制御ユニットに中継する、ように構成されている請求項１に記載のローカル電力制御アービタ。
【請求項６】
当該ローカル電力制御アービタは、前記ローカルプロセッシングユニットの少なくとも１つのプロセッシングエンティティについての閾値電力、前記ローカルプロセッシングユニットの少なくとも１つのプロセッシングエンティティについての閾値電流、前記ローカルプロセッシングユニットの少なくとも１つのプロセッシングエンティティについての１つ以上のターボ比リミット、及び前記ローカルプロセッシングユニットの少なくとも１つのプロセッシングエンティティ上で実行されている処理中のワークロードのスケーラビリティ、のうちの少なくとも１つを管理する、請求項１に記載のローカル電力制御アービタ。
【請求項７】
前記グローバル電力制御ユニットによって決定された前記ローカル性能リミットと、前記ローカル電力制御ユニットによって要求されたローカル電力制約と、の間で調停を行うワークポイントアービタ、を有する請求項１に記載のローカル電力制御アービタ。
【請求項８】
前記ワークポイントアービタは、前記ローカル性能リミットの制約の範囲内で、前記ローカルプロセッシングユニットの１つ以上のプロセッシングエンティティについて、複数の異なるローカル性能レベルの間で選択する、請求項７に記載のローカル電力制御アービタ。
【請求項９】
前記ローカル性能レベルは、レジスタのセットに格納された所定の値に基づいて選択される、請求項８に記載のローカル電力制御アービタ。
【請求項１０】
マイクロプロセッサと、不揮発性メモリと、入力／出力インタフェースとを有する請求項１に記載のローカル電力制御アービタ。
【請求項１１】
前記ローカルプロセッシングユニットは、プロセッサコア、グラフィックス処理ユニット、及び画像処理ユニットのうちの１つを有する、請求項１に記載のローカル電力制御アービタ。
【請求項１２】
前記グローバル電力制御ユニットから当該ローカル電力制御アービタにコマンドを送信するための１つ以上のハードウェアレジスタを有するグローバル・ツー・ローカルメールボックス、を有する請求項１に記載のローカル電力制御アービタ。
【請求項１３】
前記グローバル・ツー・ローカルメールボックスは、前記グローバル電力制御ユニットからコマンドを受信すべき複数のプロセッシングユニットのうちの１つの選択を可能にするレジスタフィールドを有する、請求項１２に記載のローカル電力制御アービタ。
【請求項１４】
当該ローカル電力制御アービタが前記グローバル電力制御ユニットにコマンドを送信することを可能にする１つ以上のハードウェアレジスタを有するローカル・ツー・グローバルメールボックス、を有する請求項１に記載のローカル電力制御アービタ。
【請求項１５】
前記ローカル・ツー・グローバルメールボックスは、存在する場合に前記ローカル・ツー・グローバルメールボックスを現在制御しているのが前記プロセッシングプラットフォームの前記複数のプロセッシングエンティティのうちのいずれの１つであるかを特定するレジスタフィールドを有する、請求項１４に記載のローカル電力制御アービタ。
【請求項１６】
前記ローカル・ツー・グローバルメールボックスは、前記現在制御しているプロセッシングエンティティ以外のプロセッシングエンティティからの前記ローカル・ツー・グローバルメールボックスへの書き込みの試みを無効にするためにファイルされるレジスタを有する、請求項１５に記載のローカル電力制御アービタ。
【請求項１７】
リセット動作中に前記プロセッシングプラットフォームのオペレーティングシステムの基本入力出力システムＢＩＯＳから設定データをロードするように構成される、請求項１６に記載のローカル電力制御アービタ。
【請求項１８】
複数のプロセッシングエンティティと、
前記複数のプロセッシングエンティティの性能レベルを制御するグローバル電力制御ユニットと、
少なくとも１つの、請求項１乃至１７のいずれか一項に記載のローカル電力制御アービタと、
を有し、
前記複数のプロセッシングエンティティのうちの少なくとも１つのサブセットが、それぞれのローカル電力制御アービタによって制御される、
プロセッシングプラットフォーム。
【請求項１９】
当該プロセッシングプラットフォームのそれぞれの複数のプロセッシングユニットを制御する複数のローカル電力制御アービタを有し、各プロセッシングユニットが、少なくとも１つのプロセッサコアを有する、請求項１８に記載のプロセッシングプラットフォーム。
【請求項２０】
請求項１８又は１９に記載のプロセッシングプラットフォームを有する集積回路。
【請求項２１】
一時的又は非一時的な機械読み取り可能媒体上で提供される機械読み取り可能命令であって、機械読み取り可能命令は、ローカル電力制御アービタの１つ以上のプロセッサによる実行を受けて、
プロセッシングプラットフォームのグローバル電力制御ユニットから、グローバル電力制御評価に応じて前記プロセッシングプラットフォームのローカルプロセッシングユニットに割り当てられたローカル性能リミットを受信し、
前記グローバル電力制御ユニットによって前記ローカル性能リミットが前記ローカルプロセッシングユニットに適用される期間よりも短い時間スケールで前記ローカルプロセッシングユニットにおいて見られる１つ以上の処理状態に対する変化を決定し、且つ
前記ローカル性能リミットと、存在する場合の、前記ローカルプロセッシングユニット上で見られる処理状態について決定された変化と、の双方に応じて、前記ローカルプロセッシングユニットの性能レベルを選択する、
機械読み取り可能命令。
【請求項２２】
前記ローカル性能リミットは、前記プロセッシングユニットについての周波数上限を有し、該周波数上限は、前記プロセッシングユニットの１つ以上のプロセッサコアに適用される、請求項２１に記載の機械読み取り可能命令。
【請求項２３】
グローバル電力制御ユニットを有するプロセッシングプラットフォームのローカルプロセッシングユニットの性能レベルを制御する方法であって、
前記グローバル電力制御ユニットから、グローバル電力制御評価に応じて前記プロセッシングプラットフォームの前記ローカルプロセッシングユニットに割り当てられたローカル性能リミットを受信し、
前記グローバル電力制御ユニットによって前記ローカル性能リミットが前記ローカルプロセッシングユニットに適用される期間よりも短い時間スケールで前記ローカルプロセッシングユニットにおいて見られる１つ以上の処理状態に対する変化を決定し、且つ
前記ローカル性能リミットと、存在する場合の、前記ローカルプロセッシングユニット上で見られる処理状態について決定された変化と、の双方に応じて、前記ローカルプロセッシングユニットの性能レベルを選択する、
ことを有する方法。
【請求項２４】
前記ローカルプロセッシングユニットから、前記プロセッシングユニットの性能レベルに対する変更の要求を受信し、前記ローカル性能リミットを更新するために前記要求を前記グローバル電力制御ユニットに中継する、ことを有する請求項２３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
ここに記載される実施形態は、概して、プロセッシングプラットフォームのプロセッシングエンティティの電力制御の分野に関する。
【背景技術】
【０００２】
プロセッサは、処理しているアプリケーション（ワークロード）の要求に応じて動的に変化する電力要求を持つ。例えば、実行周波数ｆ、及び対応するプロセッサコア電圧Ｖを選択することによって、プロセッサの幾つかの異なる性能状態が実現され得る。プロセッサ電力消費Ｐは、Ｐ＝ｆ×Ｖ２×Ｃ＋リークとして近似されることができ、ここで、Ｃはキャパシタンスである。リークは、トランジスタに電圧を印加することの結果として浪費される電力に対応して略一定である。従って、プロセッサ周波数及び電圧は、処理しているワークロードが高くていっそう速く動作するときに上昇されることができ、これは増大された電力消費をもたらすが、その一方で、プロセッサ周波数及び電圧は、プロセッサが低いワークロードを持つとき又は電力消費を減少させるためにアイドル状態にあるときに低下されることができる。
【０００３】
現行のプロセッシングプラットフォームでは、電圧及び周波数のうち少なくとも一方を動的にスケーリングすることによって、能動的な電力マネジメントを行うことができ、これは、動的電圧周波数スケーリング（Dynamic  Voltage  and  Frequency  Scaling；ＤＶＦＳ）として知られる技術である。ＤＶＦＳは、プロセッサがより高い（又はより低い）性能状態を要求するときに実行されことができ、プロセッサ利用率における変化に基づき得る。より高い性能状態（より高い周波数状態）は、例えば処理中の熱違反又はピーク電流違反の検出などの、より高い周波数の選択を抑える何らかの他の制約又は制限がない限り、ＤＶＦＳコントローラによって叶えられることが多い。より高い周波数で動作することは、例えばメモリ依存ストールなどの処理状態がスループットを制限してしまうことがあるので、より良好な処理スループットを保証しないことがある。ＤＶＦＳアルゴリズムによるプロセッサ使用における変化のモニタリングは、例えばミリ秒の時間スケールといった、一定のインターバルで実行され得る。個々のプロセッサコアが、これらの時間スケールで電力管理を実行し得るとともに、例えばシステム・オン・チップ（ＳｏＣ）上で提供されるものなどの、同じプロセッシングプラットフォーム上の他のプロセッシングユニットが、グローバル電力管理アルゴリズムに周波数要求を送信し得る。同一のプロセッシングプラットフォーム上で２つ以上のプロセッシングエンティティが提供される場合、ＤＶＦＳアルゴリズムは、異なるプロセッシングエンティティからの性能レベル要求に順番にサービス提供して適切な動作周波数を割り当て得る。
【図面の簡単な説明】
【０００４】
ここに記載される実施形態は、同様の要素を似通った参照符号が指す添付の図面の図に、限定ではなく例として示される。
【図１】プラットフォームレベル電力制御ユニットと、性能レベルを調停する複数のＳＯＣレベル電力制御アービタとを有するプロセッシングプラットフォームを概略的に示している。
【図２】プロセッシングエンティティのグローバル及びローカル双方の性能制御を有するプロセッシングプラットフォームを概略的に示している。
【図３】イベント周波数の様々な帯域幅と、それらの帯域幅に関する対応する性能制御マネジメントエンティティとを概略的に示している。
【図４】図１又は図２に示したものよりも詳細に、ローカル電力制御アービタ４３０のコンポーネント及び機能を概略的に示している。
【図５】ローカル電力制御アービタハードウェア及びソフトウェアを使用してプロセッサコア又は他のプロセッシングエンティティにどのように性能レベル設定が適用されるのかを概略的に示している；
【図６】グローバル電力制御ユニットとローカル電力制御アービタとの間で異なるワークポイントリミット及びアルゴリズムがどのように細分化されるのかを概略的に示している。
【図７Ａ】ローカル・ツー・グローバル（Ｌ２Ｇ）メールボックスのレジスタレイアウトを概略的に示している。
【図７Ｂ】グローバル・ツー・ローカル（ＧツーＬ）メールボックスのグローバル電力制御ユニットにおけるレジスタレイアウトを概略的に示している。
【図８】グローバル電力制御ユニット及びローカル電力制御アービタを使用して性能レベルワークポイントがどのように協働設定されるのかを概略的に示すフローチャートである。
【図９】ローカル電力制御アービタの機能を記述するハイレベルフローを概略的に示すフローチャートである。
【発明を実施するための形態】
【０００５】
本開示の例示的な実施形態は、以下に限られないが、プロセッシングユニットにおけるピーク電力決定のための方法、システム及び装置、並びに機械読み取り可能命令を含む。
【０００６】
図１は、プラットフォームレベル電力制御ユニット１１０と、図１の例においてグローバル電力制御を実装するものであるＳＯＣ１２０の１つ以上の個々のプロセッシングエンティティについて例えば動作周波数などの性能レベルを調停する複数のＳＯＣレベル電力制御アービタ１２５ｂ、１２７ｂ、１２９ｂと、を有するプロセッシングプラットフォーム１００を概略的に示している。プロセッシングプラットフォーム１００は、電源セレクタ１０２、充電器１０４、バッテリ１０６、燃料計１０８、プラットフォームレベル電力制御回路１１０、及び１つ以上のシステム電力センサ１１２を有している。システムバス１１４が、プラットフォームレベル電力制御ユニット１１０と、ＳＯＣ１２０と、プラットフォームレベル電力制御ユニット１１０が利用可能な電源からの電力を制御するＳＯＣ１２０以外の一組のシステムコンポーネントを表すプラットフォーム残部（Rest-of-Platform；ＲＯＰ）１３０と、の間の通信経路を提供する。
【０００７】
この例におけるＲＯＰ１３０は、メモリ１３２、ディスプレイ１３４、モデム１３６、及びカメラ１３８を有している。ＳＯＣ１２０は、プラットフォームワイドの電力制御ユニット１２２と、１つ以上のＳＯＣベースセンサ１２３と、ＳＯＣバス１２４と、プロセッシングコア１２５ａ及び対応するコア電力アービタ１２５ｂと、画像処理ユニット（Image  Processing  Unit；ＩＰＵ）１２７ａ及び対応するＩＰＵ電力アービタ１２７ｂと、グラフィックス処理ユニット（Graphics  Processing  Unit；ＧＰＵ）１２９ａ及び対応するＧＰＵ電力アービタ１２９ｂとを有している。プラットフォームワイドの電力制御ユニット１１０は、グローバル電力制御ユニットの例であり、コア電力アービタ１２５ｂ、ＩＰＵ電力アービタ１２７ｂ、及びＧＰＵ電力アービタ１２９ｂの各々は、本技術に従ったローカル電力制御アービタの例である。グローバル電力制御ユニット及び（１つ以上の）ローカル電力制御アービタによって実装される協調的な性能レベル制御は、プラットフォームワイドの電力制御ユニット１１０からの周波数割り当てのみに頼ることによって可能であるものよりも短い時間スケールで、見られている処理状態に応答するようにプロセッシングユニット１２５ａ、１２７ａ、１２９ａが性能レベルを変化させるための、より多くの自律性を可能にする。
【０００８】
本技術によれば、プラットフォームワイドの電力制御ユニット１１０から単に動作周波数を受信して実装するのではなく、各プロセッシングユニット１２５ａ、１２７ａ、１２９ａが、例えば周波数上限、電圧上限、電力リミットなどの性能レベルリミットを受信する。コア電力アービタ１２５ｂ、ＩＰＵ電力アービタ１２７ｂ、及びＧＰＵ電力アービタ１２９ｂは、異なるプロセッシングエンティティでは異なり得るものであるこれらの性能レベルリミットを制約として使用し得るとともに、さらに、ローカル電力アービトレーションなしで可能であるものよりも短い時間スケールで、動作周波数及び電圧の変更を実装し得る。例えば、コア電力アービタ１２５ｂは、例えば所与の時間ウィンドウにおいてコア１２５ａによって単一スレッド処理が実行されているのか、それともマルチスレッド処理が実行されているのかなどの、コア１２５ａ内でローカルにアクセス可能な情報を用いて、又は、ワークロード依存であり、従って、プロセッサ負荷とともに変化するコア１２５ａの動的キャパシタンスＣｄｙｎを測定することによって、処理性能又は電力消費を最適化又は少なくとも改善するアルゴリズムをコア１２５ａ上に実装し得る。例えば、コア１２５ａによって引き出される電力がＳＯＣセンサのうちの１つによって測定されると、式Ｐ＝Ｃ×Ｖ２×ｆからＣｄｙｎを求め得る。
【０００９】
ＩＰＵ１２７ａは、エレクトロニクス装置に一体化されたカメラからのカメラ画像を処理する撮像サブシステムとし得る。ＩＰＵ１２７ａは、センサと、カメラ制御チップセットと、画像信号プロセッサとを有し得る。ＩＰＵ１２７ａは、画像キャプチャ、ビデオキャプチャ、顔検出、及び画像処理機能をサポートし得る。
【００１０】
ＧＰＵ１２９ａは、コンピュータグラフィックス及び画像の処理を加速するように、フレームバッファ及びメモリ操作を使用してデータのブロックを処理する特殊化された高度に並列のプロセッシングユニットである。ＧＰＵ１２９ａは、各々が少なくとも１つの浮動小数点ユニット（floating  point  unit；ＦＰＵ）を有する複数の実行ユニット（execution  unit；ＥＵ）を有し得る。
【００１１】
電源セレクタ１０２は、プロセッシングプラットフォーム１００に電力を供給するために幹線ＡＣ電源９６からの電力に交流（ＡＣ）−直流（ＤＣ）変換を実行するＡＣアダプタ９６を選択し得る。しかしながら、幹線電力が利用できないとき、電源セレクタ１０２は、ＳＯＣ１２０及びＲＯＰ１３０に電力を供給するためにプロセッシングプラットフォーム１００のバッテリ１０６を選択し得る。バッテリ１０６が完全に充電されていない場合、ＡＣアダプタが電源セレクタ１０２によって制御されて、バッテリ１０６の充電レベルを増加させるために電力を供給するとともに、ＳＯＣ１２０及びＲＯＰ１３０に電力を供給する。
【００１２】
燃料計１０８は、例えば、クーロンゲージ又はセンス抵抗を用いて、充電サイクル中にバッテリに供給される又は放電サイクル中にバッテリから受け取られる電荷の総量をモニタすることによって、少なくともバッテリ電力及びバッテリ電流を決定するために使用され得る。燃料計１０８は、例えばクーロン又はアンペア時などの次元単位で、バッテリ充電レベル及び全バッテリ容量のうちの少なくとも一方を指し示すインジケーションを提供し得る。全バッテリ容量は、何度もの充放電サイクルの影響により、バッテリ寿命の間に値が低下し得る。燃料計は、従って、所与の時点におけるバッテリ１０６のピーク電力容量のインジケーションを提供することができ、これは、所定の時点におけるバッテリの較正及びバッテリ充電レベルに依存し得る。
【００１３】
プラットフォームワイドの電力制御ユニット１１０は、上記１つ以上のシステムセンサ１１２に結合されて、上記１つ以上のセンサ１１２の状態を指し示す情報を受信し得る。センサ１１２は、例えばバッテリ１０６若しくは電源セレクタ１０２に近接して、又は、例えばバス１１４若しくはプロセッシングプラットフォーム１００に付随する他のコンポーネントなどの相互接続に近接してなど、システムのコンポーネントに近接して設けられ得る。ＳＯＣセンサ１２３は、コア１２５ａ、ＩＰＵ１２７ａ、ＧＰＵ１２９ａ及びバス１２４のうちの１つ以上に近接して設けられ得る。センサ１１２、１２３は、例えば、バッテリ充電レベル、バッテリ電流値、アダプタ電流値、温度、動作電圧、動作電流、動作電力、コア間通信活動、動作周波数、又はプロセッシングプラットフォーム１００の電力マネジメント若しくは熱マネジメントに関連する他のパラメータといったものの測定値を提供し得る。
【００１４】
図１のＳＯＣ１２０は、プラットフォームレベル電力制御ユニット１１０からシステム電力信号ＰＳＹＳ１１１を、システムバス１１４を介して受信し得るとともに、システム電力がピーク電力閾値条件を含む１つ以上の閾値条件を満たすときにＰＳＹＳ信号１１１を使用し得る。閾値条件は、プロセッシングプラットフォーム１００の平均電力リミット又は瞬時電力リミットに関係し得る。閾値条件は、それより低いとシステム故障が発生しやすいＶＳＹＳの最小電圧値、又はそれより高いとシステム故障が発生しやすいＰＳＹＳの最大値（又は対応する最大の電流ＩＳＹＳ又は電圧ＶＳＹＳ）に関係してもよい。ＳＯＣに関する閾値電圧ＶＴＨ及び最大許容システム電力ＰＭＡＸ＿ＳＹＳ及び最大許容システム電流ＩＭＡＸ若しくは電圧ＶＭＡＸは、例えば、プラットフォームレベル電力制御ユニット１１０からの情報に基づいて、ＳＯＣ内のソフトウェアによって設定され得る。他の例において、ＳＯＣ１２０に関するこれらの電力制限パラメータは、プロセッシングプラットフォーム上の組込コントローラ（図示せず）によって設定されてもよい。また、本技術によれば、グローバル電力制御ユニット１１０は、コア１２５ａ、ＩＰＵ１２７ａ、及びＧＰＵ１２９ａのうちの１つ以上に、上限周波数若しくは上限電圧若しくは上限電力の割当て、又は２つ以上の上限値の組み合わせを割り当て得る。
【００１５】
上側閾値が破られることによるシステム障害を防止するためのスロットリング信号のアサーションのトリガーは、値ＶＴＨ、ＩＭＡＸ、及びＰＳＹＳ＿ＭＡＸのうちの１つ以上に依存し得る。スロットリング信号は、ＳｏＣの電力低減機能を起動して、スロットリング信号がアサートされることの予測可能な時間ウィンドウΔｔ１内でプロセッサ周波数を低下させ得る。一部の例における電力低減機能は、閾値が超えられることに応答して受身的に、又は閾値が超えられることを防止するために先制的に、のいずれかでグローバル電力管理回路１１０によって実装される。一部の電力閾値は平均電力インジケータに関係し、他の電力閾値は、プロセッシング活動における“スパイク”に関連する瞬時電力特性に関連し得る。本技術によれば、例えば特定の電力閾値などの電力低減機能のうちのサブセットが、ローカル電力制御アービタ１２５ｂ、１２７ｂ、１２９ｂによってローカルに実装され得るとともに、プロセッシング活動におけるスパイクが、ローカル電力制御アービトレーションハードウェア及びソフトウェアを設けることにより、より高い分解能で（より短い時間スケールで）解消され得る。
【００１６】
システムセンサ１１２及びＳＯＣセンサ１２３のうちの少なくとも１つからのフィードバックに基づいて、例えば、処理ユニットの熱的限界に応じて、更なる電力制御信号がシステムバス１１４を介して送られ得る。例えば、ＳＯＣセンサ１２３は、プロセッシングユニット１２５ａ、１２７ａ、１２９ａからの温度及び電力消費の測定値を、バス１１４を介して、プラットフォームワイドの電力制御回路１１０へフィードバックし得る。
【００１７】
プラットフォームワイドの電力制御ユニット１１０は、ＳＯＣ１２０及びＲＯＰ１３０を含め、全体としてのプラットフォームに適用可能な閾値を扱い得る。例えば、プラットフォームワイドの電力制御ユニット１１０は、ＲＯＰ１３０及びＳＯＣ１２０によって引き出される総電力が、選択された電源から現在利用可能な最大システム電力ＰＳＹＳを超えないことを保証し得る。利用可能な最大電力は、例えば、バッテリ１０６の充電レベルが枯渇するにつれて変化し得る。プラットフォームワイドの電力制御ユニット１１０は、電源セレクタからの入力電圧１０３と、燃料計１０８からの信号１０９を介したバッテリ充電レベルのインジケーションと、節電モード若しくは性能増強モードが現在選択されているかを指し示すＥＰＰ（Energy  Performance  Preference）として表されるユーザ嗜好のインジケーションと、例えばプロセッシングプラットフォーム１００を幹線ＡＣ電源９８に接続するドッキングステーションからのプロセッシングプラットフォーム１００のアンドッキング及びドッキングなどのシステムイベントのインジケーションと、を受け取り得る。ＥＰＰは、オペレーティングシステムによって提供されてもよいし、ユーザプログラム可能な値であってもよい。プラットフォームワイドの電力制御ユニット１１０は、各プロセッシングエンティティについて１つ以上の性能リミットを決定し得る。性能リミットは、例えば、周波数リミット、電圧リミット、電流リミット、又は電力リミットとし得る。これら（１つ以上の）性能リミットは、所与のプロセッシングエンティティについての上限及び下限のうちの少なくとも一方を含み得る。
【００１８】
一部の実施形態において、プロセッシングプラットフォーム１００は、ＳＯＣ１２０のみを有して、ＲＯＰ１３０コンポーネントを有しないことがある。プラットフォームワイドの電力制御ユニット１１０は、プラットフォームコンポーネントによって引き出される電力がＰＳＹＳを超えないように該電力を制御するとともに、例えばコア１２５ａなどのプロセッシングユニットに関連する電力消散及びジャンクション温度の動作状態リミットとの適合性を維持するように、プロセッシングプラットフォーム１００の適切な熱マネジメントを確保し得る。コア１２５ａを熱的なリミット及び他の設計リミット内で動作させることで、コア１２５ａ及びプラットフォーム１００の他のコンポーネントへの不用意なダメージを防止することができる。プラットフォームワイドの電力制御ユニット１１０及びローカル電力制御アービタ１２５ｂ、１２７ｂ、１２９ｂのうちの少なくとも１つが、例えば無制限に持続可能であり得るプラットフォーム１００の平均電力に関する閾値を提供する第１の電力リミットＰＬ１などの、１つ以上の電力リミットを実装し得る。ＰＬ１の値は、プロセッシングプラットフォームの熱設計リミットに設定され又はその近くに設定され得る。
【００１９】
プロセッシングエンティティの性能をモニタするために、複数の異なる性能パラメータが使用されてもよい。例えば、プロセッシングユニットの“利用率”は、トータルの利用可能な処理サイクルのうち、プロセッサ（複数の物理コアを有し得る）が、スリープ状態、節電モード、又はオフ状態ではなく、アクティブ状態であるときの割合を指し得る。利用率は“ロード”と呼ばれるときがあるが、この“ロード”は、ワークロード（実行すべき命令を有する処理タスク）とは異なる。ワークロードは、所与のプロセッサによる実行を受けて、プロセッサの対応する利用率、及び対応するスケーラビリティ（以下にて定義する）をもたらし得る。所与のワークロードの利用率及びスケーラビリティの瞬時測定値は、実行時間中に変化し得る。スリープ状態では、処理を中断することによって電力消費が低減されるが、“目覚め”が電力オフ状態からよりも速くなるように幾らかの電力が保持される。
【００２０】
プロセッサは、アクティブモードにおいてさえ複数の異なる電力状態を提供し得るが、アクティブ状態とは、プロセッサ状態が完全にオンであり且つシステムクロックがオンであることを指す。アクティブ状態は、コードが実行されているときの物理コアの通常状態である。マルチスレッド処理の場合には、プロセッサコア内のいずれかのスレッドがアクティブであれば、コアの状態はアクティブであると決定され得る。“スリープ”状態では、プロセッサ状態は完全にはオンでないが、システムクロックはオンである。プロセッサ性能レベルは、オペレーティングシステムを介して、又は専用若しくは特殊目的のハードウェアを介して、又はハードウェアとソフトウェアとの組み合わせを用いて制御され得る。プラットフォームワイドの電力制御ユニット１１０は、処理ワークロード要求（例えば、実行されているプログラムアプリケーションのタイプ）、処理ハードウェアの熱リミット、最大電力、電圧、周波数及び電流レベル、並びにオペレーティングシステムによって要求される性能のアクティビティウィンドウ、のうちの１つ以上を考慮に入れ得る。
【００２１】
プロセッシングユニットの“スケーラビリティ”とは、プロセッシングユニットの所与の処理ワークロードの実行時間が動作周波数とともにどのように変化し得るのかを指し得る。例えば、多数のストールを生じさせるワークロードは、少ししかストールを生じさせないワークロードよりもスケーラブルでないとし得る。ストールは、例えば、メモリから返されるデータへの依存性のために発生し得る。従って、利用率は、プロセッサがアクティブであるときの尺度を提供し得るのに対し、スケーラビリティは、プロセッサがアクティブであるときに行われるのに有用な（ストールのない）作業の尺度を提供し得る。理解されることには、スケーラビリティが低いときに処理周波数を高めることは、スケーラビリティが高いときよりもワークロードスループットの増加率が小さい可能性が高い。これは、例えばメモリ依存ストールなどのストールは、ストール時間がプロセッシングユニット実行クロック速度の明確な関数ではないので、プロセッシングユニットの周波数を高めてもて改善されないからである。
【００２２】
既知のシステムにおいて、プロセッシングユニットの性能レベル（例えば、動作周波数）の選択は、プラットフォームワイドの電力制御ユニット１１０又は何らかの他のグローバル電力制御ユニットによって、システム電力閾値に基づいて行われており、また、新たな性能レベルを選択するときにプロセッシングユニット１２５ａ、１２７ａ、１２９ａに対して新たな周波数を分配するために、プロセッシングエンティティの利用率及びスケーラビリティを考慮に入れることがあった。
【００２３】
対照的に、本技術によれば、個々のプロセッシングユニット１２５ａ、１２７ａ、１２９ａが、ローカルにモニタする処理状態に基づいて、動作周波数を選択する際にある程度の自律性を持つことが可能にされ得る。この例におけるプラットフォームワイドの電力制御ユニットは、動作周波数又は電圧を直接設定するのではなく、プロセッシングユニット動作周波数又は動作電圧に上限を設定する。そして、実際の動作周波数又は電圧は、プロセッシングユニットにおいて、それぞれのローカル電力制御アービタ１２５ｂ、１２７ｂ、１２９ｂにより、ローカルな処理状態をモニタし、グローバルに設定されたリミットを超えることなく複数の性能レベルのうちの１つを選択することによって、ローカルに自律的に設定され得る。グローバル周波数リミットが第１の時間スケールで更新され得るのに対し、ローカル動作周波数の更新は、第１の時間スケールよりも短い第２の時間スケールで実行されて、よりきめ細かい制御を与え得る。
【００２４】
一部のプロセッシングユニットは、ユニットの性能レベルに影響を及ぼす２つ以上の関連付けられた動作周波数を持ち得る。例えば、ＩＰＵ１２７ａは、別々に制御され得るものである入力サブシステム周波数とプロセッシングサブシステム周波数とを持ち得る。単一コア１２５の代わりに、ＳＯＣは、複数の物理コアを持つマルチコアプロセッサを有し得る。
【００２５】
マルチコアプロセッサでは、例えば、それらのアクティブコアの全ての間で要求される最も高い周波数性能状態を、割り当てる周波数として選択することによって、全てのアクティブプロセッサコアが同じ周波数及び電圧を共有し得る。コア１２５ａは、関連付けられた周波数及び電圧パラメータを持つ複数の性能動作点を有し得る。動作点は、ＥＰＰパラメータの値に応じて電力効率又は性能を優先するように選択され得る。周波数選択は、１つ以上のＣＰＵレジスタに書き込むことによってソフトウェア制御され得る。そして、コア１２５ａの場合、選択された周波数に応じて動作電圧が選択され得る。性能状態間の低い遷移レイテンシにより、グローバル電力制御ユニット１１０は、各プロセッシングユニット１２５ａ、１２７ａ、１２９ａに対して、毎秒複数の性能レベル遷移（例えば、図３に示すように、１０ミリ秒と１００μｓとの間の更新頻度）を実現することができ得る。
【００２６】
ＧＰＵ１２９は、性能、電力及び熱的制約を維持管理するために性能状態間で動的に調節を行うドライバを有し得る。ＧＰＵ１２９ａの電圧は、それをスリープ状態に置くために下方に調節され得る。節電を行うために、ＧＰＵ１２９ａ上の負荷を低減させ、より低い速度で動作されることを可能にするよう、フレームレートが制限されてもよい。従って、ＧＰＵ１２９は、利用可能なシステム電力ＰＳＹＳに応じて周波数又は電圧又は電流リミット内で動作するように、ＧＰＵ電力制御アービタ１２９ｂと協働するプラットフォームワイドの電力制御ユニット１２２によって制御され得る。
【００２７】
一部の既知のシステムでは、コア１２５ａへの動作周波数の割り当てが、例えばおよそ毎ミリ秒といった一定のインターバルでプロセッサコアの利用率及びスケーラビリティをモニタし、測定された量に平均化を適用するように構成されたＤＶＦＳアルゴリズムに従って制御されることがあった。例えばＩＰＵ１２７ａ及びＧＰＵ１２９ａなどの他のＤＶＦＳ対応プラットフォームコンポーネントが、それらの周波数要求をプラットフォームワイドの電力制御ユニット１２２のグローバル電力管理アルゴリズムに送信することがあった。同様に、マルチコアプロセッサの場合に、複数のコアの各々が、例えば、スループットを高めるため又は電力を節約するために、プラットフォームワイドの電力制御ユニット１２２にそれぞれの周波数要求を送信することがあった。それら複数によって要求された周波数の中で最も高い要求周波数が選択されることがあり、それにより、少なくとも、より低い動作周波数を要求したコアにとって、性能利得を伴わない電力消費を生じさせることがあった。
【００２８】
ＣＰＵ以外のプロセッシングユニット１２７ａ、１２９ａは、それぞれのプロセッシングユニットについての電力を意識した管理を実行しない傾向があるが、周波数要求を行われることがあった。既知のシステムでは、性能に基づく調整の電力影響を十分に検討することなく、最良の性能を取り出すことに強い焦点が当てられてきた。コア１２５ａの動作周波数は、利用率及びスケーラビリティにおいて観測された変化に基づいて選択されることがあった。性能状態は、システム電力ＰＳＹＳに対するコア１２５ａ電力の比を使用して、しかしまた、コア１２５ａ以外の全てのプラットフォームコンポーネントからの電力を静的なＳＯＣ電力と見なして、性能状態が決定されることがあった。利用率閾値が超えられることに応じて、“ターボ周波数”として知られる高周波性能レベル又はブースト性能レベルが割り当てられることがあった。システムは、電力消費量を望ましいレベルまで低減させるようにプロセッシングユニットの動作周波数を低下させることによって電力消費を受身的に抑制するために、例えば、熱的な警告がトリガーされること又はピーク電流違反に対応した、望ましいものよりも高い電力消費に受身的に反応することがあった。
【００２９】
そのような既知のシステムにおいて、コア１２５ａの電力管理アルゴリズムが、例えばＩＰＵ１２７ａ及びＧＰＵ１２９ａなどの他のプロセッシングユニットに周波数を付与する中央集権的なアービタ及びコントローラであることがあった。対照的に、本技術によれば、各ＤＶＦＳ対応プロセッシングユニット１２５ａ、１２７ａ、１２９ａが、それぞれのユニットの自律的ではあるが上限制約された周波数割り当てを可能にする電力制御を実行するためのユニット固有のアルゴリズムを有し得る。例えばグローバル電力コントローラ及びローカル電力制御アービタ１２５ｂ、１２７ｂ、１２９ｂのうちの１つ以上などの、２つ以上の電力コントローラ間で一部の性能レベル選択能力を分散させることは、様々なプラットフォームアーキテクチャにとって、既知の中央（グローバル）電力管理アプローチよりもスケーラブルである。実施形態例の自律的ローカル性能レベル選択は、電力効率と性能増強とを区別する性能レベルの嗜好が、単にコア１２５に対してではなく、各プロセッシングユニット１２５ａ、１２７ａ、１２９ａに対して入力されることを可能にする。さらに、各プロセッシングユニット用の電力制御アービタ１２５ｂ、１２７ｂ、１２９ｂに熱リミット、並びに上限電流、上限周波数、上限電圧、及び電力消費リミットを与えることができ、また、これらのリミットを第１の時間スケールで更新することができる。そして、プロセッシング性能パラメータに対するこれらの上限は、それらが更新されるまで、対応するローカルプロセッシングユニットにおける周波数選択制約としてローカルに実装され得るが、ローカルプロセッシングユニット１２５ａ、１２７ａ、１２９ａは、処理状態に対する細かい変化を考慮に入れるように、第１の時間スケールよりも短い第２の時間スケールで実際の動作周波数及び電圧を選択する自律性を有する。ローカル電力制御アービタ１２５ｂ、１２７ｂ、１２９ｂによるこの半自律的周波数選択の使用は、性能及び電力消費のうち少なくとも一方を微調整するために使用されることができる。示されていることには、例えばプロセッサコアなどのプロセッシングユニットの動作周波数を設定することにおける、グローバル電力制御ユニットとローカル電力制御ユニットとの間での協調というこの新たなアプローチは、以下を行うことができる：
・  クライアントとサーバの実施形態において、一部の例でおよそ１０％だけ性能を向上させることができる；
・  より高い周波数に達することを可能にする、最大動作電流ＩＣＣｍａｘ違反のきめ細かいクリッピングにより、既知のシステムに対して性能を高めることができる；
・  いっそうきめ細かい位相のマネジメントにより、完全一体型電圧レギュレータ（Fully  Integrated  Voltage  Regulator；ＦＩＶＲ）効率を向上させることができ、これは、少なくとも２−６％のコア電力低減を提供し得るとともに、電力制限されるシナリオにおいて対応する性能利得を与え得る；
・  個々のプロセッシングユニットにおいて、より高速なインテリジェント周波数スイッチを可能にし、例えば、入り混じった命令幅を持つワークロードについて少なくとも約１０％の性能改善を提供する。
【００３０】
図２は、プロセッシングエンティティのローカル電力マネジメント及びグローバル電力マネジメントの双方を含んだ階層的電力マネジメントを有するプロセッシングプラットフォーム２００を概略的に示しており、グローバル電力コントローラ及びローカル電力アービタを図１の実施形態よりも詳細に示している。プロセッシングプラットフォーム２００は、全てがシステムバス２１１に接続された第１のプロセッサ２１０ａ、第２のプロセッサ２１０ｂ、第３のプロセッサ２１０ｃ、及び第４のプロセッサ２１０ｄを含む複数のプロセッサを有している。バス２１１にはメモリ２１２も接続されている。図２には単一の電源２０２及び電圧レギュレータ２０４が示されているが、追加の電源及び電圧レギュレータが設けられてもよい。電圧レギュレータ２０４は、単一の電力プレーンを介して又は複数の電力プレーンを介して、プロセッシングコア又はプロセッサに接続され得る。
【００３１】
グローバル電力制御ユニット２２０は、図２の実施形態において第１のプロセッサ２１０ａ内に設けられることができ、これは、プロセッサ固有ではなくプラットフォームワイドであるグローバル電力制御ユニット１１０を示す図１の構成とは異なる。実施形態は、グローバル電力制御ユニットについて図１の構成又は図２の構成のいずれかに限定されるものではなく、グローバル電力制御ユニットは、代わりに、電圧レギュレータ、電源、その他のプロセッシングプラットフォームエンティティに結合されたり組み込まれたりしてもよい。グローバル電力コントローラを用いて性能レベルリミットを設定し、１つ以上のグローバルリミットの制約内で、よりローカルレベルで、より短い時間スケールでの性能レベル選択を実行できることは、より効果的で効率的な、動的な電圧及び周波数スケーリングを提供する。グローバル電力制御ユニット２２０は、グローバルコントローラハードウェア２２２と、不揮発性メモリ内のファームウェアとして提供され得る機械読み取り可能命令を有するグローバルコントローラコード２２４とを有する。
【００３２】
第１のプロセッサ２１０ａは更に、ローカルアービタハードウェア２３２ａ及び対応する第１のローカルアービタコード２３２ｂを有する第１のローカル電力アービタ２３０ａを含んでいる。第１のローカルアービタコード２３２ｂは、ファームウェアとして提供され得る機械読み取り可能なプログラム命令を有する。第１のローカルアービタ２３２ａは、第１のプロセッサコア２４２ａの動作周波数を設定するように構成される。第１のプロセッサ２１０ａの第２のローカル電力アービタ２３０ｂが、第２のローカルアービタハードウェア２３２ｂ及び第２のローカルアービタコード２３４ｂを有し、第２のコア２５２及びＧＰＵ２５４を有する２つの別個のプロセッシングユニットの動作周波数を設定するように構成される。第２のローカルアービタ２３０ｂについて、グローバル電力制御ユニット２２０は、第２のコア２５２及びＧＰＵ２５４の双方に対して集合的に周波数リミットを設定し、また、第２のローカルアービタ２３０ｂは、グローバルに設定されたリミット以下であるが、自律性を持って、第２のコア２５２及びＧＰＵ２５４の双方に共通の実際の動作周波数を設定する。第２のローカルアービタ２３０ｂは代わりに、第２のコア２５２及びＧＰＵ２５４の各々に対して異なる周波数を設定してもよい。第１のプロセッサ２１０ａ内のバス２１５が、グローバル電力制御ユニット２２０と、第１のローカル電力アービタ２３０ａ及び第２のローカル電力アービタ２３０ｂの各々とを接続する。
【００３３】
グローバル電力制御ユニット２２０によって第１のローカル電力アービタ２３０ａ及び第２のローカル電力アービタ２３０ｂに供されるローカル性能リミットは、周期的又は間欠的に更新され得るが、ローカル電力制御アービタ２３０ａ、２３０ｂのいずれによって実行されるローカルプロセッシングユニットの性能レベルマネジメントよりも粗い時間スケールでの更新である。
【００３４】
図６によって更に詳細に示されるように、グローバル電力制御ユニット２２０によってモニタされるリミットとは異なるリミットがローカル電力制御アービタ２３０ａ、２３０ｂによってモニタされ得るが、ローカル電力制御アービタ２３０ａ、２３０ｂ上ではスケーラビリティアルゴリズムが、グローバル電力制御ユニット２２０上で実行されるスケーラビリティアルゴリズムよりも短い時間スケールで解決するように実行され得る。異なる実装は、ローカル及びグローバルに、異なる時間パーティションを使用し得る。ローカル電力制御アービタが、単一のコアに、又は複数のコアのうち総数よりも小さいサブセットに、サービス提供する実施形態において、例えば複数のコアを参照するリミットなどの、一部のリミットは、グローバル電力制御ユニット２２０によって実装されるままとし得る。ローカル電力制御アービタ２３０ａ、２３０ｂは、１００％利用率で動作しているときに所与の回路セットによって引き出されることが許される最大電流であるＩＣＣｍａｘ制限を実装し得る。複数の異なる処理パラメータをモニタし、複数の異なるリミットを実装する責任の委譲が、グローバル電力制御ユニット２２０とローカル電力制御アービタ２３０ａ、２３０ｂとの間で必要に応じて構成され、異なる責任の割り当てによって性能又は電力効率が改善されることができる場合に、その構成が実装されるようにし得る。
【００３５】
ローカルアービタハードウェア２３２ａ、２３４ｂは、対応するローカル処理ユニットに適切な性能レベルを適用し、処理状態が変化するときにローカル性能レベルを更新するとともに、より低いレートでグローバル電力制御ユニット２２０と通信する。第２のアービタハードウェア２３２ｂは、ＧＰＵ２５４から、その性能レベルに対する調節の要求を受信し得る。そして、第２のローカルアービタコード２３４ｂが、ＧＰＵ要求の受信に確認応答するために確認応答信号を第２のアービタハードウェア２３２ｂに送信し、次いで、３つのプラットフォームプロセッシングエンティティ２４２ａ、２５２、２５４の全てに対して性能レベルリミットを設定する観点から、変更要求への適切なグローバル応答を決定するために、ＧＰＵ要求をグローバル電力コントローラ２２０に中継し得る。そして、グローバル電力コントローラ２２０が、適切な性能リミットに関する応答を第２のローカルアービタコード２３４ｂに送り返し得るとともに、それが、次いで、第２のローカルアービタハードウェア３２３ｂによってリミットとして実装され得る。しかし、性能レベルリミットのこの更新は、ローカルに実装される動作周波数及び電圧への更新ほど規則的には行われない。ローカル電力制御アービタ２３０ｂは、ＧＰＵ２５４からの要求に応答して、例えばＧＰＵ２５４に固有のローカルにデータ投入された周波数及び電圧のテーブルのエントリなどの、複数の所定の性能レベルから選択することができ、また、第２のローカルアービタハードウェア２３２ｂは、グローバル電力コントローラ２２０のみを用いて可能であるよりも迅速にＧＰＵ要求に応答する能力を持つ。何故なら、例えば第１のコア２４２ａなどの他のプラットフォームコンポーネントからグローバルコントローラへのアクセスに対する競合が存在し得るためである。これは、プロセッシングエンティティが仲介物なしで直接的にグローバル電力制御ユニット２２０と通信することによって可能であるよりも短い時間スケールで、ローカル処理特性に対する変化への適応性を提供する。この実施形態によれば、ローカル電力コントローラ２３０ｂは、ＧＰＵ２５４の性能レベル変更要求を、ローカル電力アービタ２３０ｂを介してグローバル電力コントローラ２２０に中継する。この要求は、先ず、第２のローカル電力アービタハードウェア２３２ｂによってＧＰＵ２５４から受信され、そして、ローカル電力制御アービタ２３０ｂ内で第２のローカルアービタコード２３４ｂに転送されてから、グローバル電力コントローラ２２０に通信され得る。
【００３６】
複数のプロセッシングエンティティのうちの異なるものからの個々の性能変更要求に順にサービス提供する例えば２２０などのグローバル電力制御ユニットのみを有する既知のシステムとは対照的に、本技術によれば、複数のローカル電力制御アービタ２３０ａ、２３０ｂが、それぞれのローカルプロセッシングユニット２４２ａ、２４２ｂ（各々が１つ以上のプロセッシングエンティティを有する）に設けられ、ローカルプロセッシングユニットの各々が、対応するプロセッシングエンティティ２４２ａ、２５２、２５４のためにグローバル電力制御ユニット２２０と通信し得る。図４に更に詳細に示すように、第１のローカルアービタコード２３４ａとグローバルコントローラコード２２４との間、及び同様に第２のローカルアービタコード２３４ｂとグローバルコントローラコード２２４との間で、コマンドが送られることを可能にするメールボックスが設けられ得る。第１のローカルアービタコード２３４ａ及び第２のローカルアービタコード２３４ｂに関して、グローバルコントローラコード２２４への競争ベースのアクセスが行われ得る。しかしながら、第１のコア２４２ａから第１のローカル電力アービタ２３０ａへの、並びに第２のコア２５２及びＧＰＵ２５４から第２のローカルアービタコードへの、性能変更要求は、競合が減少する又はないために、より迅速にサービス提供され得る。従って、ローカル電力制御アービタ２３０ａ、２３０ｂを設けることは、さもなければ例えばグローバル電力制御ユニット２２０からの処理性能の増加などの計算リソースを要求するときに２つ以上のローカルプロセッシングユニット２４２ａ、２４２ｂによる競合の結果として生じ得る通信ボトルネックを改善する。
【００３７】
図３は、イベント周波数の様々な帯域幅と、それらの帯域幅に関する対応する性能制御マネジメントエンティティとを概略的に示している。図３の左側の、軸の最も低い周波数端から始めて、第１の帯域幅３１０は、オペレーティングシステムによって管理され得る０から１００Ｈｚ（１０ｍｓ以上の分解能）まで延在し、オペレーティングシステムは、例えば、ワークロード要求に応じて個々のプロセッサコアを１つ以上のスリープ状態とアクティブ状態との間で遷移させることによって、この帯域幅で電力を制御し得る。第２の帯域幅３２０は、１００Ｈｚから１０ｋＨｚ（１０ｍｓから１００μｓの分解能）に対応し、この帯域幅での周波数遷移は、既知のタイプのもののようなプラットフォームワイド（グローバル）の電力制御ユニットのプログラムコードによって管理され得る。グローバル電力制御ユニットソフトウェアは、図３では“ｐコード”と表記されるが、この説明では代わりに、グローバルコードの略称として“Ｇコード”と表記されることもある。第３の帯域幅３３０は、１０ｋＨｚから１００ｋＨｚ（１００μｓから１０μｓの分解能）の周波数レンジに対応し、これは、ローカル電力マネジメントファームウェア、又は等価的に“ａコード”又は本技術に従ったローカル電力制御アービタハードウェア上で走る（ローカルコードの略称としての“Ｌコード”と表記されるプログラムコードによって管理され得る。第４の帯域幅３４０は、１００ｋＨｚから１ＭＨｚ（１０μｓから１μｓの分解能）の周波数レンジに対応し、この第４の帯域幅は、本技術に従ったローカル電力アービタハードウェアによって管理され得る。第５の帯域幅３５０は、１ＭＨｚから１ＧＨｚ（１μｓから１ｎｓ）の周波数レンジに対応し、コアファームウェア又は等価的に“ｕコード”によって管理され得る。第６の帯域幅３６０は、１ＧＨｚ以上（１ｎｓ以下）の周波数レンジ範囲に対応し、コアハードウェアによって管理され得る。
【００３８】
実施形態例は、１０ｋＨｚから１ＭＨｚ（１００μｓから１μｓ）にわたる第３及び第４の帯域幅３３０、３４０を組み合わせた周波数レンジが、このレベルの粒度での電力マネジメント制御の効果的な手段を持っていなかったという既知の技術の不足に対処する。従って、グローバル電力制御ユニットに加えて１つ以上のローカル電力アービタを設けることは、イベント切換え周波数における隙間を埋めて、１０ｋＨｚから１ＭＨｚの周波数レンジ内のイベントを考慮に入れる性能レベル選択を可能にし、それ故に、電力マネジメントの全体的な効率及び有効性を向上させる。
【００３９】
図４は、プロセッシングユニット４１０と、グローバル電力コントローラ４２０とのインタフェース４５２を有するローカル電力制御アービタ４３０とを概略的に示している。図４は、図１又は図２に示したものよりも詳細に、ローカル電力制御アービタ４３０のコンポーネント及び機能を示している。ローカル電力制御アービタ４３０は、マイクロコントローラ４３２と、命令ランダムアクセスメモリ（Ｉ−ＲＡＭ）４３４と、データランダムアクセスメモリ（Ｄ−ＲＡＭ）４３６と、ワークポイントレジスタのセット４５４とを有している。ローカル電力制御アービタに対応するＬコード（図示せず）が、集積マイクロコントローラ４３２上で実行され、インタフェース４５２を介してグローバル電力コントローラ４２０から受信されるローカル性能リミットに応じて、ワークポイントアービタ４５６及び状態マシン４５８を介して、プロセッシングユニット上のワークポイント設定の制御を実行する。ワークポイントとは、例えば、あるプロセッシングエンティティについての周波数及び電圧設定とし得る。
【００４０】
ローカル電力制御アービタ４３０とグローバル電力コントローラ４２０との間での情報の通信を可能にするために、ローカル・ツー・グローバル（Ｌ２Ｇ）メールボックス４２４が、グローバル電力コントローラ４２０の一部として設けられるとともに、グローバル・ツー・ローカル（Ｇ２Ｌ）メールボックス４６４が、ローカル電力制御アービタ４３０の一部として設けられる。Ｌ２Ｇメールボックス４２４は、図７Ａに更に詳細に示されており、これは、一度に１つのコア（又は他のプロセッシングユニット）のみにサービス提供するものであるＬ２Ｇメールボックス４２４の制御を所与のローカル電力制御アービタが得ていることを条件として、ＬコードがＧコードにコマンドを送信することを可能にする。Ｇ２Ｌメールボックス４６４は、Ｇコードが一度に所与のコアのＬコードにコマンドを送信することを可能にするものであり、図７Ｂに更に詳細に示される。グローバル電力コントローラ４２０はまた、ローカル電力制御アービタ４３０に情報をブロードキャストするためのテレメトリレジスタのセット４２２のセットを有する。
【００４１】
制御情報４１１及びステータス情報４１３及び他のデータが、図示のように、プロセッシングユニット４１０とローカル電力制御アービタ４３０との間で通信され得る。
【００４２】
ワークポイントアービタ４５６は、グローバル電力コントローラ４２０によって現在設定されているローカル性能リミット４６０を受け取るとともに、例えば、ワークロード、スケーラビリティ値、現在実行中のスレッドの数、動的キャパシタンス推定値、引き出されている電力、引き出されている電流、電圧測定値、及び温度のうちの１つ以上など、に関するプロセッシングユニットステータス情報４６２を受信する。一部の実施形態において、ローカル性能リミットは上限周波数であるが、これに限定されず、ローカル性能リミット４６０は、例えば、最大電圧、最小電圧、最小周波数、若しくは電力リミット、又は複数の異なるリミットの組み合わせであってもよい。マイクロコントローラ４３２は、Ｉ−ＲＡＭからのＬコード命令を実行して、例えば、ワークロードの細かい粒度でのスケーラビリティ、又はプロセッサコア上で現在実行中のスレッドの数を決定し得る。マイクロコントローラ４３２は、そのワークロード分析の結果をワークポイントレジスタ４５４に出力し、それにより、動作周波数及び対応する電圧設定の所定のセットが、ローカル性能リミット４６０に応じてワークポイントアービタによって選択可能であるようにする。従って、ローカル電力制御アービタ４３０は、状態マシン４５８を用いて、且つマイクロコントローラ４３２ｎ上でワークポイントレジスタ４５４を実行するＬコードによるローカルアルゴリズム解析に基づく動作パラメータの選択に応じて、各状態が異なる動作周波数及び動作電圧を持つ複数の異なる状態間でプロセッシングユニット４１０を遷移させ得る。動作点選択を行うために、周波数及び電圧のルックアップテーブルがＬコードによって使用され得る。ワークポイントアービタ４５６は、グローバル電力コントローラ４２０によって設定されたローカル性能リミット４６０と矛盾する動作周波数の選択を防止する。マイクロコントローラ４３２は、一部の実施形態において、プロセッシングユニット４１０に対する１つ以上の電力リミットへの準拠に関連するスロットリングインターバルを調節及び／又は制御し得る。
【００４３】
マイクロコントローラ４３２上で実行されるＬコードは、プロセッシングコア、マルチコアプロセッサ、ＧＰＵ又はＩＰＵとし得るものである特定のプロセッシングユニット４１０に対して、それぞれの予測によるユニット固有の電力プロファイルを使用し得る。Ｌコードは、ユニット固有のスケーラビリティ値及びユニット固有の利用率値を受信又は決定し得る。電力プロファイルは、周波数、利用率、及び電力消費の間の関係を提供し得る。
【００４４】
見られている処理状態に基づいてプロセッシングユニット４１０に関するこれらの値を決定するために、１つ以上のハードウェアカウンタ（図示せず）が使用されてもよい。例えば、第１のカウンタが、プロセッシングユニット４１０の少なくとも１つのプロセッシングコアがアクティブであるときにのみ固定レートでカウントするための基準クロックを提供することができ；第２のカウンタが、プロセッシングユニットがアクティブ状態にあるときに実際のクロックレートでカウントすることができ、なお、クロックレートは、性能レベルのシフトに起因して時間と共に変化し得るものであり、第３のカウンタが、プロセッシングユニットはアクティブであるが、例えばプロセッサコアがメモリのクロックに基づいてゲーティングされているなど、何らかの依存関係のためにプロセッシングユニットがストールするときにはカウントを抑制することができる場合に、実際のクロックレートをカウントすることができる。
【００４５】
プロセッシングユニット４１０は、利用率、周波数、及び電力の間の“先験的”関係を有し得る。プロセッシングユニット４１０の電力プロファイルが、プレシリコンモデルに基づいて、又はポストシリコン測定データに基づいて、又は合成ワークロードに基づいて取得され得る。プレシリコンモデルとは、製造前の又はプロセッサ設計シミュレーションに基づくモデルとし得る。所与のプロセッシングユニットの電力プロファイルは、幾つもある異なる方法のうちの任意の１つで生成され得るが、一部の実施形態において、予測される電力プロファイルを用いて、以下のプロセッシングユニット統治式を生成してもよい：
１）周波数と利用率の関数としての電力、
２）利用率と電力の関数としての周波数、及び
３）電力と周波数の関数としての利用率。
一部の実施形態において、個々のプロセッシングユニット４１０の電力消費は、ローカル電力制御アービタ４３０が動作周波数を割り当てる前に特に考慮されないが、代わりに、例えばグローバル電力コントローラによって設定される最大周波数などの制約を満たす支配的なワークロードのための適切な周波数を選択するために、例えば、もっと高い又は低いスループットが必要とされるなどの、単純な決定が使用されてもよい。従って、電力プロファイルの代わりに、あるいは加えて、周波数−電圧カーブが使用されてもよい。
【００４６】
現在の動作状態を選択する際に、状態マシン４５８は、（ｉ）システムレベル入力、（ｉｉ）プロセッシングユニット４１０に固有の利用率入力、及び（ｉｉｉ）プロセッシングユニット４１０に固有のスケーラビリティ入力を考慮に入れ得る。システムレベル入力は、グローバル電力コントローラ４２０によって提供される、電力リミット（平均又は閾値）、上限周波数、下限周波数、最大動作電流、熱リミット、及びエネルギ性能嗜好情報を有し得る。
【００４７】
図５は、ローカル電力制御アービタハードウェア及びソフトウェアを使用してプロセッサコア（又は他のプロセッシングエンティティ）にどのように性能レベル設定を適用されるのかを概略的に示している。この構成は、ワークポイントレジスタ５２０のセットとしてのローカル電力制御ファームウェア５１０と、ローカル電力制御アービタハードウェア５３０と、完全一体型電圧レギュレータ（ＦＩＶＲ）５４２と、位相ロックループ回路５４４と、プロセッサコア５５０とを有している。ローカル電力制御ファームウェア５１０は、グローバル電力制御ユニット（図示せず）によって制御される、より粗い粒度（より長い時間スケール、及びより低いイベント分解能）の性能レベル選択と協働して、細かい粒度の性能レベル選択を実行するための“Ｌコード”を格納する。
【００４８】
ローカル電力制御ファームウェア５１０は、ワークポイントレジスタのセット５２０に書き込まれる値に影響を与えることができる多数の入力を受信する。特に、この実施形態において、入力は、オペレーティングシステム又はグローバル電力制御ユニットのいずれかから受信される、グローバル電力制御ユニット制約に対応する信号５１３、コアイベントに対応する信号５１５、他のイベントに対応する信号５１７、及びテレメトリに対応する信号５１９である。ローカル電力制御ファームウェア５１０は、ローカルに決定される見られている処理状態に従って、適切な周波数及び電圧の値をワークポイントレジスタに書き込むように構成される。ワークポイントは、周波数、電圧、及びリセットタイプを含むことができ、また、メールボックス構造を有する。ローカル電力制御ファームウェア５１０によってワークポイントレジスタ５２０に書き込まれた値が、ローカル電力制御ハードウェア５３０によって読み込まれ、それが、例えば動作周波数及び対応する動作電圧などの選択された性能レベルの値を、第１の制御信号５４１を完全一体型電圧レギュレータ５４２に送ることによって実装し、次いで、完全一体型電圧レギュレータ５４２が、適切な動作電圧を供給する信号５４３をプロセッシングコア５５０へと送る。一部の実施形態において、例えばプロセッシングユニット４１０の利用率のレベルなどの処理状態は、プロセッシングユニット４１０に適し且つローカル電力制御アービタ４３０にアクセス可能な所定の周波数及び電圧ペアリングの組から選択するために使用される。同様に、第２の制御信号５４５が、ローカル電力制御ハードウェア５３２から位相ロックループ回路５４４に与えられ、それが、位相ロックループ回路５４４から出力されてプロセッシングコア５５０に入力される信号５４７を介して、プロセッサコア５５０の動作周波数を設定する。
【００４９】
従って、実施形態によれば、グローバル電力制御ユニットからの例えば上限周波数などの制限に基づき、また、グローバルファクタ、システム状態、及び関連するプロセッシングプラットフォームの他の処理イベントも考慮に入れて、適切なワークポイントが選択されることが分かる。選択されるワークポイントは、グローバル電力制御に頼って動作周波数及び電圧を直接的に設定する既知のシステムにおいてよりも細かい粒度のイベント追跡に基づいて、現在の処理状態に従って適切に選択され得る。この特別に選択されたワークポイントがハードウェアレジスタ５２０に書き込まれて、電力制御アービタハードウェアが、処理状態に対するローカルに検出された変化に基づいて、適切なワークポイントをプロセッサコア５５０に適用することを可能にする。
【００５０】
この例におけるローカルファームウェア５１０でのＬコードの提供は、１０ｋＨｚと１００ｋＨｚとの間の周波数レンジ内のイベントが効率的に追跡されることを可能にし、一方、ローカル電力アービタハードウェア５３０の提供は、１００ｋＨｚから１ＭＨｚまでのレンジ内の周波数が追跡されることを可能にする。これに代わる実施形態は、異なる周波数レンジ内のイベントを追跡してもよい。図３（上述）に示したように、これらの周波数は、コアプログラムコード（“ｕコード”）及びプロセッサコア５５０のハードウェアそれ自体によって追跡されるイベントの時間分解能よりは低い周波数レンジにあるものの、既知のグローバル電力制御ユニットを用いて追跡が可能であるものより高い周波数である。
【００５１】
本技術のローカル電力制御アービタ構成を用いて可能な、より細かい粒度のイベント分解能を使用することによって得ることが可能な性能改善は、以下を含む：
・  コア５５０がアイドル状態にあるが、それでもなお、高い電圧及び周波数で動作するように設定されているときをローカルに検出して、短いアイドル期間と一致するように周波数低減を実装することを可能にできること；
・  例えばコア５５０などのプロセッシングユニットが複数のスレッドを走らせることから単一のスレッド空間を走らせることに移行（これは、１０−１５％だけ低い動的キャパシタンスをもたらし得る）したときを、より細かい時間スケールで検出できること；
・  既知のシステムでは、グローバル電力制御ユニットに適用可能な時間スケールとして数百マイクロ秒での電圧補償に固定していたところで、動的キャパシタンスにおける変化に対してもっと迅速に適応して、動作周波数及び電圧を低減させて電力を節減できること；
・  グローバル電力制御アービタのみでは、コアが周波数において不必要に制限されることをもたらし得る比較的長い時間にわたって最悪の場合が当てはまると仮定してしまい得るのに対し、ＩＣＣｍａｘの値に基づいてプロセッサコア５５０の動作を制限できること；
・  例えばメモリ停止や、スピンループや、同様のものが存在する状況など、処理スループットがより高い周波数設定からの恩恵を受けていない状況を検出できることであり、このために、ローカル電力制御アービタによって維持管理されるカウンタが使用され得る。
【００５２】
図６は、グローバル電力制御ユニット６１０とローカル電力制御アービタ６５０との間で異なるワークポイントリミット及びアルゴリズムがどのように細分化され得るのかを概略的に示している。図６に示すように、この実施形態におけるグローバル電力制御ユニットは、３つの異なる電力リミット“ＰＬ１”、“ＰＬ２”及び“ＰＬ３”と、アクティブコア（従って、グローバル制御が保持される）の数に応じて異なるマルチコアターボパラメータと、１００μｓを超えるが約１０ｍｓ未満のイベント分解能に関係する粗粒度スケーラビリティアルゴリズムと、例えば所与の動作周波数での書き込みワークロードにおける読み出しレイテンシなどの応答性メトリックをモニタする応答性アルゴリズムと、例えばＣＰＵがＣＰＵマルチプライヤを使用することなくそれ自身のステッピング速度を選択することを可能にするアルゴリズムなどの、ハードウェア制御性能状態（hardware  controlled  performance  state；ＨＷＰ）アルゴリズムと、を有する一組のＧコードリミット６１２を制御する。
【００５３】
第１の電力リミット“ＰＬ１”は、プロセッサユニット（例えば、マルチコアプロセッサ又はプロセッサコア又はＧＰＵ）によって超えられるべきではないが、プロセッシングユニットが無制限に電力を維持し得る平均電力閾値に対応することができ、第２の電力リミット“ＰＬ２”は、第１の継続時間（例えば、１００秒）に至るまでプロセッシングユニットによって維持され得るが、それより上で１つ以上の電力制限アルゴリズムがプロセッシングユニットの過渡電力を制限しようと試みる電力レベルに対応した、ＰＬ１よりも高い電力リミットとすることができ、第３の電力リミット“ＰＬ３”は、ＰＬ２よりも高いとし得るとともに、ＰＬ３よりも上の過渡電力のデューティサイクルを制限するように処理周波数を受身的に制限するプロセッシングユニットの電力低減応答を生じさせ得る。
【００５４】
グローバル電力制御ユニット６１０が、３つの電力リミットＰＬ１、ＰＬ２及びＰＬ３を制御するのに対し、ローカル電力制御アービタは、プロセッシングユニットによって超えられないようにされ得る第４の電力リミット“ＰＬ４”に関する責任を委譲されることができ、この第４の電力リミットを超えるスパイクを防止するように電力制限アルゴリズムが処理周波数を先制的に制限し得るようにされる。過渡電力は、プロセッシングユニットがＰＬ１とＰＬ２との間の電力レベルで電力を維持し得る時間（例えば、約１００ｓ）と比較して相対的に短い所定の時間（例えば、１０ｍｓなど）に至るまで、ＰＬ２より高く且つＰＬ４までの電力をピークとすることが許され得る。
【００５５】
一組のＬコードリミット６５２は、例えば、おおよそ１０ｋＨｚ（１００μｓ）と１ＭＨｚ（１μｓ）との間のレンジ内のイベント周波数を分解することができるものといった、細かい粒度のスケーラビリティアルゴリズムを有し、さらに、（グローバル制御の下でのマルチコアターボパラメータとは対照的に）コア固有のターボ比リミットを有する。
【００５６】
Ｇコードリミット６１２は、ローカルアービタを有する各コア（又は他のプロセッシングユニット）についてのコア性能リミット理由の記録を含み得るとともに、グローバル性能リミット理由の記録も維持管理し得る。例えば、１つのコアに対する電力割り当てのうちの少なくとも一部が別のコアに割り当て直されることを可能にするために、１つのコアが、別のコアについての性能リミット理由を要求してもよい。各ローカル電力制御アービタが、それが所有するローカル自律性能アルゴリズムのためのビットを有する制御レジスタを維持管理し得るとともに、周波数リミット又は他の性能リミットを指し示すレジスタが、２つの現在ビット、及び、ターボ比リミット及びＩＣＣｍａｘの各々に対して１つずつの２つのログビットを維持管理し得る。
【００５７】
図６に示すように、周波数上限値“Ｆ上限”が、Ｇコードリミット６１２のうちの少なくともサブセットに基づいて計算され、そして、グローバル電力制御ユニット６１０から出力されて、ローカル電力制御アービタ６５２に入力として与えられ得る。そして、ローカル電力制御アービタ６５０が、細かい粒度のスケーラビリティアルゴリズムを実行し、コア固有のターボ比リミットを実装して、Ｆ上限値を超えない動作周波数要求値を決定し得る。そして、ローカルに要求された動作周波数が、第４の電力リミット及び最大許容電流ＩＣＣＭＡＸに対して評価され、次いで、ブロック６５４でチェックにかけられた信号６５７に応答して、コア内のハードウェアによって選択されて実装され得る。周波数要求を満足するためのヒント値を提供するために、ＰＬ４及びＩＣＣＭＡＸローカルアービタチェックからのフィードバック信号６５５がグローバル電力制御ユニットに返される。
【００５８】
図７Ａは、ローカル・ツー・グローバル（Ｌ２Ｇ）メールボックスのグローバル電力制御ユニットにおけるレジスタレイアウトを概略的に示している。Ｌ２Ｇメールボックスは、この実施形態例において、１つの６２ビットレジスタと２つの３２ビットレジスタとを含む合計３つのレジスタを有している。第１の６２ビットレジスタはＩＯ＿Ｌ２Ｇ＿ＭＡＩＬＢＯＸ＿ＩＦと名付けられ、これは８ビットのコマンドフィールド、１４ビットのペイロードフィールド、８ビットのＷＩＮＮＩＮＧ＿ＣＯＲＥ＿ＩＤフィールド、１ビットのＣＯＲＥ＿ＢＵＳＹフィールド、１ビットのＲＵＮ＿ＢＵＳＹフィールド、及びレジスタビット［３２：６１］を占有する３２ビットのデータフィールドを有している。第２のレジスタは、ＩＯ＿Ｌ２Ｇ＿ｍａｉｌｂｏｘ＿ｄａｔａ＿ｌｏｗと名付けられた３２ビットレジスタであり、第３のレジスタは、ＩＯ＿Ｌ２Ｇ＿ｍａｉｌｂｏｘ＿ｄａｔａ＿ｈｉｇｈと名付けられた連れの３２ビットレジスタである。メールボックスインタフェースレジスタＩＯ＿Ｌ２Ｇ＿ＭＡＩＬＢＯＸ＿ＩＦが、ＩＯ＿Ｌ２Ｇ＿ｍａｉｌｂｏｘ＿ｄａｔａ＿ｌｏｗ及びＩＯ＿Ｌ２Ｇ＿ｍａｉｌｂｏｘ＿ｄａｔａ＿ｈｉｇｈとともに、ローカル電力制御アービタからグローバル電力制御ユニットへのインタフェースを提供する。
このＬ２Ｇメールボックス４２４（図４参照）は、ＬコードがＧコードにコマンドを送ることを可能にする。Ｇコードは、コマンド結果をデータレジスタに書き込み、制御レジスタとしてこれらにアクセスする。ＲＵＮ＿ＢＵＳＹビットはＧコードによってリセットされ、Ｌコードによってセットされる。Ｌ２Ｇ＿ｍａｉｌｂｏｘ＿ＩＦレジスタは、ＲＵＮ＿ＢＵＳＹビットがセットされている場合には、Ｇコードによってのみ書き込み可能であるが、ＲＵＮ＿ＢＵＳＹビットがクリアされている場合にはハードウェアによってのみ書き込み可能である。Ｌ２Ｇ＿ｍａｉｌｂｏｘ＿ｄａｔａ＿ｌｏｗ及びＬ２Ｇ＿ｍａｉｌｂｏｘ＿ｄａｔａ＿ｈｉｇｈレジスタにデータが書き込まれる。ＣＯＲＥ＿ＢＵＳＹフィールド及びＷＩＮＮＩＮＧ＿ＣＯＲＥ＿ＩＤフィールドは、例えば複数のプロセッシングコアなどの複数のプロセッシングエンティティのうちどれが現在Ｌ２Ｇメールボックスを制御しているかを指し示すために使用され得る。“ＷＩＮＮＩＮＧ＿ＣＯＲＥ”で表される現在制御しているコア以外のコアによって試みられる書き込み操作は、メールボックスインタフェースによって無視される。従って、Ｌ２Ｇメールボックスは、所与の時点に単一のコアのみにサービス提供する。従って、所与のＬコードは、ＷＩＮＮＩＮＧ＿ＣＯＲＥ＿ＩＤ＝＝ｍｙ  ｃｏｒｅ  ＩＤとなるまで、再試行を続けるべきである。
【００５９】
図７Ｂは、グローバル電力制御ユニットからローカル電力制御アービタへのメールボックス、すなわち、Ｇ２Ｌメールボックス４６４（図４参照）を概略的に示している。Ｇ２Ｌメールボックスは、３２ビットのＧ２Ｌ＿ＭＡＩＬＢＯＸ＿ＩＮＴＥＲＦＡＣＥレジスタと、３２ビットのＧ２Ｌ＿ｍａｉｌｂｏｘ＿ｄａｔａ＿ｌｏｗレジスタと、３２ビットのＧ２Ｌ＿ｍａｉｌｂｏｘ＿ｄａｔａ＿ｈｉｇｈレジスタを有している。この例におけるＧ２Ｌ＿ＭＡＩＬＢＯＸ＿ＩＮＴＥＲＦＡＣＥレジスタは、８ビットのコマンドフィールド、１４ビットのペイロードフィールド、９ビットの予備（ＲＳＶＤ）フィールド、及び１ビットのＲＵＮ＿ＢＵＳＹフィールドを有している。Ｇ２Ｌメールボックス４６４のこれら３つの３２ビットレジスタは、Ｇコードが所与のコアのＬコードにコマンドを送ることを可能にする。ＲＵＮ＿ＢＵＳＹビットはコードによってセットされ、Ｌコードによってクリアされる。このレジスタは、ＲＵＮ＿ＢＵＳＹビットがセットされている場合には、Ｌコードによってのみ書き込み可能であるが、ＲＵＮ＿ＢＵＳＹビットがクリアされている場合にはハードウェアによってのみ書き込み可能である。
【００６０】
図８は、本技術に従って、グローバル電力制御ユニット及びローカル電力制御アービタを使用して性能レベルワークポイントがどのように協働設定されるのかを概略的に示すフローチャートである。ブロック８１０にて、ローカル電力制御アービタが、グローバル電力制御ユニットから、例えば上限ワークポイント（例えば、周波数上限）などの電力リミットを受信する。ブロック８２０にて、ローカル電力制御アービタは、上限ワークポイントによって制約されるローカルプロセッシングエンティティの性能レベルの細かい粒度の制御を実行するために、プロセッシングコア（又は他のローカルプロセッシングエンティティ）の現在の状態を決定する。ブロック８３０にて、関連する時間スケールで状態の変化が存在しないと判定された場合、プロセスフローはブロック８２０に戻される。
【００６１】
代わりに、動作周波数の増加又は減少の理由となる状態の変化が実際に存在すると判定された場合、プロセスはブロック８４０に進み、そこで、Ｌコードが、現時に適した新たなワークポイントを選択するために、ワークポイントレジスタのセット内で周波数及び電圧のルックアップを行う。この時、動作周波数及び電圧を選択する際に、例えば命令ワークロードは重いのか、それとも軽いのか、及び／又は、ローカルコア上で現在実行されているのは単一のスレッドなのか、それとも複数のスレッドなのかなど、異なるファクタが考慮に入れられ得る。ブロック８４０でワークポイント変更が選択されて実装されると、ブロック８５０にて、ワークポイントにおける変更がグローバル電力制御ユニットに通信され、これが、グローバル電力制御ユニットによる周波数上限変更の要求へのフィードバックとなり得る。こうして、ブロック８５０の後、プロセスはブロック８１０に戻る。
【００６２】
図９は、ローカル電力制御アービタ及びグローバル電力コントローラの機能を記述するハイレベルフローを概略的に示すフローチャートである。ブロック９１０にて、未補正エラーリセット信号のアサート停止に対応してローカルハードウェアが準備できているか否かを判定するチェックが行われる。次いで、ブロック９２０にて、システムがリセットされたか否かが判定される。ブロック９２０でシステムが実際にリセットされたと判定された場合、プロセスはブロック９３０に進み、そこで、オペレーティングシステム基本入力出力システム（ＢＩＯＳ）から特定のデータをフェッチすることによってリブートが実行される。特に、設定がグローバル電力制御ユニットファームウェアからフェッチされ、プロセッシングプラットフォームのコアごとに電圧−周波数カーブが構築されるとともに、コアごとに動的キャパシタンステーブルが構築される。次に、ブロック９３０で設定データ及びテーブルがデータ投入されると、プロセスは、以下を有する“低速ループ”（周期タスク）ブロック９４０に進み、すなわち、完全一体型電圧レギュレータ電力設定を決定し、（Ｇコードにより）上限ワークポイント計算を実行し、電力電圧プロファイルをチェックし、細かい粒度でのスケーラビリティをチェックし、且つローカル電力制御アービタからグローバル電力制御ファームウェアへテレメトリを送信する、ことを有するブロック９４０に進む。
【００６３】
ブロック９２０で、システムがリセットされたと判定されることに代えて、システムリセットがまだされていないと判定された場合、プロセスはブロック９２０からブロック９５０に進む。ブロック９５０にて、現在データが旧い温度で計算されたことを指し示すフラグがセットされ、これが、ブロック９３０の設定フェッチング、動的キャパシタンス構築、及び電圧−周波数カーブ構築をバイパスしてブロック９４０の低速ループ周期タスクに直接移ることを可能にする高速パス計算に使用される。温度の関連性は、トランジスタスピードが温度とともに変化し得るために、所与の周波数に適した電圧が温度とともに変化するというものである。
【００６４】
この例でのＬコードは、周期タスクブロック９４０から割り込み不可能な高速パス処理ブロック９６０へと導かれる割り込みトリガー信号９４１によって示されるように、割り込み駆動される。高速パス処理ブロック９６０は、クリティカルワークポイントを計算し、該ワークポイントをハードウェアに対して発し、且つ他の全てのワークポイントを計算することを伴う。クリティカルワークポイントは、例えば命令セットアーキテクチャ命令又は何らかの他の特別な命令などの上でコアが実行される条件に関係し得る。イネーブル割り込み信号９６１が、高速パス処理ブロック９６０と低速処理ブロック９４０との間で提供され、低速処理ブロック９４０へと導かれる。イネーブル割り込み信号は、Ｌコードに、中断させ、クリティカルタスクに切り替えさせる。割り込みトリガー９４１は、低速ループ９４０から高速パスブロック９６０に送られる。実行されるべきクリティカルワークが存在しない場合、Ｌコードは一部の保守タスクを実行することを許されるが、割り込みトリガー９４１が、よりクリティカルなタスクへと焦点を変える。
【００６５】
一部の実施形態例では、ローカルに実行される自律的なワークポイント選択を非アクティブにして、グローバル電力制御ユニットが周波数及び電圧におけるワークポイント変更を制御及びトリガーするスキームに戻すことを可能にし得る。この非アクティブ化は、例えばＳＯＣなどの特定の集積回路がローカル性能レベル制御の１つ以上の機能を選択的にアクティブ化又は非アクティブ化することを可能にし得る。しかしながら、自律ワークポイント選択機能が有効にされるとき、Ｇコードは、実際のワークポイントを決定する責任を委譲されたＬコードと同じインタフェース上で、周波数天井及び電圧天井を伴うワークポイント変更を発し得る。周波数天井は、ある周波数上限を有し得る。これは、マルチコアターボ、熱スロットリング、エネルギーリミット制御、スケーラビリティ及び応答性アルゴリズムを含み得る。電圧天井は、或る電圧上限を有することができ、これは、最大電圧ヒューズ及び動的電圧マネジメントからの制約を含み得る。電圧天井及び周波数天井は、許容可能なワークポイントとして設定され得る。本技術に従った細かい粒度のワークポイント決定は、例えば、機能内のビット又はコンフィグレーションビットを使用してイネーブル又はディセーブルされ得る。例えばＬコードに欠陥があると判定される場合など、ワークポイントの自律的ローカル制御を非アクティブにして、プロセッシングユニットワークポイントのグローバル設定をアクティブにし直すことが有用であることがあり、その場合、都合よく非アクティブ化されることができる。
【００６６】
この明細書において、“Ａ又はＢのうちの少なくとも１つ”という言い回し及び“Ａ及びＢのうちの少なくとも１つ”という言い回しは、あらゆる全ての並べ替えにおいてまとめられた又は別々にされた、列挙された複数のアイテムＡ、Ｂなどのうちの任意の１つ以上を意味すると解釈されるべきである。
【００６７】
機能ユニットが回路として記述される場合、回路は、指定された処理機能を実行するためのプログラムコードによって構成された汎用プロセッサ回路であってもよい。回路はまた、プロセッシングハードウェアへの変更によって構成されてもよい。指定された機能を実行するための回路の構成は、完全にハードウェアにあってもよいし、完全にソフトウェアにあってもよいし、あるいは、ハードウェア変更及びソフトウェア実行の組み合わせを用いてもよい。プログラム命令を用いて、処理機能を実行するように汎用又は専用のプロセッサ回路の論理ゲートを構成してもよい。
【００６８】
回路は、例えば、プロセッサ、マイクロプロセッサ、回路、回路素子（例えば、トランジスタ、抵抗、キャパシタ、インダクタなど）、集積回路、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックデバイス（ＰＬＤ）、デジタル信号プロセッサ（ＤＳＰ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセット、及びこれらに類するものを有するハードウェア回路として実装されてもよい。
【００６９】
プロセッサは、汎用プロセッサ、コンピュータネットワーク上で通信されるデータを処理するネットワークプロセッサ、又は、縮小命令セットコンピュータＲＩＳＣ若しくは複数命令セットコンピュータＣＩＳＣを含む他のタイプのプロセッサを有し得る。プロセッサは、シングルコア設計又はマルチコア設計を有し得る。マルチコアプロセッサは、同一の集積回路ダイ上に複数の異なるプロセッサコアタイプを集積してもよい。
【００７０】
機械読み取り可能プログラム命令が、例えば伝送媒体などの一時的な媒体上で、あるいは、例えば記憶媒体などの非一時的な媒体上に提供され得る。このような機械読み取り可能命令（コンピュータプログラムコード）は、高水準手続き型プログラミング言語又はオブジェクト指向プログラミング言語で実装され得る。しかし、望ましい場合、（１つ以上の）プログラムはアセンブリ言語又は機械語で実装されてもよい。いずれにしても、言語は、コンパイル又は解釈された言語であってよく、ハードウェア実装と組み合わされてもよい。
【００７１】
本発明の実施形態は、全てのタイプの半導体集積回路（“ＩＣ”）チップとの使用に適用可能である。それらのＩＣチップの例は、以下に限られないが、プロセッサ、コントローラ、チップセットコンポーネント、プログラマブルロジックアレイ（ＰＬＡ）、メモリチップ、ネットワークチップ、及びこれらに類するものを含む。一部の実施形態において、ここに記載されたコンポーネントのうち１つ以上は、システム・オン・チップ（ＳＯＣ）デバイスとして具体化され得る。ＳＯＣは、例えば、１つ以上の中央演算処理ユニット（ＣＰＵ）コア、１つ以上のグラフィックス処理ユニット（ＧＰＵ）コア、入力／出力インタフェース、及びメモリコントローラを含み得る。一部の実施形態において、ＳＯＣ及びそのコンポーネントは、例えば単一の半導体デバイスへとパッケージされた、１つ以上の集積回路ダイ上に設けられ得る。
【００７２】
例
以下の例は、更なる実施形態に関する。
例１は、複数のプロセッシングエンティティを有するプロセッシングプラットフォームのグローバル電力制御ユニットとインタフェースをとるローカル電力制御アービタであり、当該ローカル電力制御アービタは、前記プロセッシングプラットフォームのローカルプロセッシングユニットを制御するものであり、当該ローカル電力制御アービタは、
グローバル電力制御評価に応じて前記ローカルプロセッシングユニットに割り当てられたローカル性能リミットを、前記グローバル電力制御ユニットから受信するインタフェースと、
プロセッシング回路であり、
前記グローバル電力制御ユニットによって前記ローカル性能リミットが前記ローカルプロセッシングユニットに適用される期間よりも短い時間スケールで前記ローカルプロセッシングユニットにおいて見られる１つ以上の処理状態に対する変化を決定し、且つ
前記ローカル性能リミットと、存在する場合の、前記ローカルプロセッシングユニット上で見られる処理状態について決定された変化と、の双方に応じて、前記ローカルプロセッシングユニットの性能レベルを選択する、
プロセッシング回路と、
を有する。
例２
前記ローカル性能リミットは、周波数上限、電圧上限、電力上限、及び電流上限のうちの少なくとも１つを有する、例１に記載のローカル電力制御アービタ。
例３
前記グローバル電力制御ユニットによって前記ローカル性能リミットが前記ローカルプロセッシングユニットに適用される前記期間は、１００マイクロ秒よりも長く、前記処理状態に対する変化が決定される時間スケールは、１０マイクロ秒と１００マイクロ秒との間の範囲内である、例１又は２に記載のローカル電力制御アービタ。
例４
前記処理状態において決定される変化は、前記プロセッシングユニット上で実行されているスレッドの数における変化、処理しているワークロードにおける変化、及び前記プロセッシングユニットの利用率における変化、のうちの少なくとも１つを有する、例１乃至３のいずれか一に記載のローカル電力制御アービタ。
例５
前記ローカルプロセッシングユニットから、前記ローカルプロセッシングユニットの性能レベルの変更要求を受信し、該性能レベルの変更要求を、その後の、前記ローカル性能リミットを更新するためのグローバル電力評価のために、前記グローバル電力制御ユニットに中継する、ように構成されている例１乃至４のいずれか一に記載のローカル電力制御アービタ。
例６
当該ローカル電力制御アービタは、前記ローカルプロセッシングユニットの少なくとも１つのプロセッシングエンティティについての閾値電力、前記ローカルプロセッシングユニットの少なくとも１つのプロセッシングエンティティについての閾値電流、前記ローカルプロセッシングユニットの少なくとも１つのプロセッシングエンティティについての１つ以上のターボ比リミット、及び前記ローカルプロセッシングユニットの少なくとも１つのプロセッシングエンティティ上で実行されている処理中のワークロードのスケーラビリティ、のうちの少なくとも１つを管理する、例１乃至５のいずれか一に記載のローカル電力制御アービタ。
例７
前記グローバル電力制御ユニットによって決定された前記ローカル性能リミットと、前記ローカル電力制御ユニットによって要求されたローカル電力制約と、の間で調停を行うワークポイントアービタ、を有する例１乃至６のいずれか一に記載のローカル電力制御アービタ。
例８
前記ワークポイントアービタは、前記ローカル性能リミットの制約の範囲内で、前記ローカルプロセッシングユニットの１つ以上のプロセッシングエンティティについて、複数の異なるローカル性能レベルの間で選択する、例７に記載のローカル電力制御アービタ。
例９
前記ローカル性能レベルは、レジスタのセットに格納された所定の値に基づいて選択される、例８に記載のローカル電力制御アービタ。
例１０
マイクロプロセッサと、不揮発性メモリと、入力／出力インタフェースとを有する例１乃至９のいずれか一に記載のローカル電力制御アービタ。
例１１
前記ローカルプロセッシングユニットは、プロセッサコア、グラフィックス処理ユニット、及び画像処理ユニットのうちの１つを有する、例１乃至１０のいずれか一に記載のローカル電力制御アービタ。
例１２
前記グローバル電力制御ユニットから当該ローカル電力制御アービタにコマンドを送信するための１つ以上のハードウェアレジスタを有するグローバル・ツー・ローカルメールボックス、を有する例１乃至１１のいずれか一に記載のローカル電力制御アービタ。
例１３
前記グローバル・ツー・ローカルメールボックスは、前記グローバル電力制御ユニットからコマンドを受信すべき複数のプロセッシングユニットのうちの１つの選択を可能にするレジスタフィールドを有する、例１２に記載のローカル電力制御アービタ。
例１４
当該ローカル電力制御アービタが前記グローバル電力制御ユニットにコマンドを送信することを可能にする１つ以上のハードウェアレジスタを有するローカル・ツー・グローバルメールボックス、を有する例１乃至１３のいずれか一に記載のローカル電力制御アービタ。
例１５
前記ローカル・ツー・グローバルメールボックスは、存在する場合に前記ローカル・ツー・グローバルメールボックスを現在制御しているのが前記プロセッシングプラットフォームの前記複数のプロセッシングエンティティのうちのいずれの１つであるかを特定するレジスタフィールドを有する、例１４に記載のローカル電力制御アービタ。
例１６
前記ローカル・ツー・グローバルメールボックスは、前記現在制御しているプロセッシングエンティティ以外のプロセッシングエンティティからの前記ローカル・ツー・グローバルメールボックスへの書き込みの試みを無効にするためにファイルされるレジスタを有する、例１５に記載のローカル電力制御アービタ。
例１７
リセット動作中に前記プロセッシングプラットフォームのオペレーティングシステムの基本入力出力システムＢＩＯＳから設定データをロードするように構成される、例１６に記載のローカル電力制御アービタ。
例１８は、プロセッシングプラットフォームであって、当該プロセッシングプラットフォームは、
複数のプロセッシングエンティティと、
前記複数のプロセッシングエンティティの性能レベルを制御するグローバル電力制御ユニットと、
少なくとも１つの、例１乃至１７のいずれか一に記載のローカル電力制御アービタと、
を有し、
前記複数のプロセッシングエンティティのうちの少なくとも１つのサブセットが、それぞれのローカル電力制御アービタによって制御される。
例１９
当該プロセッシングプラットフォームのそれぞれの複数のプロセッシングユニットを制御する複数のローカル電力制御アービタを有し、各プロセッシングユニットが、少なくとも１つのプロセッサコアを有する、例１８に記載のプロセッシングプラットフォーム。
例２０は、例１８又は１９に記載のプロセッシングプラットフォームを有する集積回路である。
例２１
一時的又は非一時的な機械読み取り可能媒体上で提供される機械読み取り可能命令であって、機械読み取り可能命令は、ローカル電力制御アービタの１つ以上のプロセッサによる実行を受けて、
プロセッシングプラットフォームのグローバル電力制御ユニットから、グローバル電力制御評価に応じて前記プロセッシングプラットフォームのローカルプロセッシングユニットに割り当てられたローカル性能リミットを受信し、
前記グローバル電力制御ユニットによって前記ローカル性能リミットが前記ローカルプロセッシングユニットに適用される期間よりも短い時間スケールで前記ローカルプロセッシングユニットにおいて見られる１つ以上の処理状態に対する変化を決定し、且つ
前記ローカル性能リミットと、存在する場合の、前記ローカルプロセッシングユニット上で見られる処理状態について決定された変化と、の双方に応じて、前記ローカルプロセッシングユニットの性能レベルを選択する、
機械読み取り可能命令。
例２２
前記ローカル性能リミットは、前記プロセッシングユニットについての周波数上限を有し、該周波数上限は、前記プロセッシングユニットの１つ以上のプロセッサコアに適用される、例２１に記載の機械読み取り可能命令。
例２３
グローバル電力制御ユニットを有するプロセッシングプラットフォームのローカルプロセッシングユニットの性能レベルを制御する方法であって、
前記グローバル電力制御ユニットから、グローバル電力制御評価に応じて前記プロセッシングプラットフォームの前記ローカルプロセッシングユニットに割り当てられたローカル性能リミットを受信し、
前記グローバル電力制御ユニットによって前記ローカル性能リミットが前記ローカルプロセッシングユニットに適用される期間よりも短い時間スケールで前記ローカルプロセッシングユニットにおいて見られる１つ以上の処理状態に対する変化を決定し、且つ
前記ローカル性能リミットと、存在する場合の、前記ローカルプロセッシングユニット上で見られる処理状態について決定された変化と、の双方に応じて、前記ローカルプロセッシングユニットの性能レベルを選択する、
ことを有する方法。
例２４
前記ローカルプロセッシングユニットから、前記プロセッシングユニットの性能レベルに対する変更の要求を受信し、前記ローカル性能リミットを更新するために前記要求を前記グローバル電力制御ユニットに中継する、ことを有する例２３に記載の方法。
【図１】
2021531526.tif 000003
【図２】
2021531526.tif 000004
【図３】
2021531526.tif 000005
【図４】
2021531526.tif 000006
【図５】
2021531526.tif 000007
【図６】
2021531526.tif 000008
【図７Ａ】
2021531526.tif 000009
【図７Ｂ】
2021531526.tif 000010
【図８】
2021531526.tif 000011
【図９】
2021531526.tif 000012
【国際調査報告】
2021531526.tif 000013
2021531526.tif 000014