説明

プローブアクティビティレベルの追跡による性能状態の制御

【解決手段】
処理ノードは、その内部キャシング又はメモリシステムに関連するプローブアクティビティレベルを追跡する。プローブアクティビティレベルがスレッショルドプローブアクティビティレベルを超えると、処理ノードの性能状態がその当座の性能状態よりも高くされて、高められた性能能力をプローブ要求に応答して提供する。プローブアクティビティレベルがスレッショルドプローブアクティビティレベルを超えたことに応答してより高い性能状態にエンターした後に、処理ノードは、プローブアクティビティの低下に応答してより低い性能状態に戻る。多重スレッショルドプローブアクティビティレベル及び関連する性能状態があってよい。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はコンピュータシステムの性能に関し、より特定的にはキャッシュプローブ(cache probes)に関連する性能に関する。
【背景技術】
【0002】
コンピュータシステムにおける処理ノードは、多重の性能状態(又は動作状態)Pnのいずれかにあることがあり、ここで特定の性能状態(又はP状態)は、関連する電圧又は周波数によって特徴付けられる。ノードの適切な性能状態を決定するための1つの因子は、その使用率(utilization)である。使用率は、アクティブ(実行)状態にある処理ノードによって費やされる時間の、実行時間が追跡され又は測定された全時間インターバルに対する比である。例えば、全時間インターバルが10ミリ秒(ms)であり且つ処理ノードがアクティブ(C0)状態において6msを費やした場合、プロセッサノードの使用率は6/10=60%である。プロセッサノードは、コード実行がサスペンドされるアイドル(非C0)状態で残りの4msを費やす。より高いノード使用率は、より良好なアドレス性能/ワット要求に対して、より高い電圧及び/又は周波数を有するより高い性能状態Pの選択をトリガーする。複数の性能状態の間で処理ノードを移行させる決定は、通常、オペレーティングシステム(OS)、高レベルなソフトウエア、ドライバ、又は何らかのハードウエア制御器のいずれかによってなされる。例えば、より長いコード実行時間を結果としてもたらす低い性能状態で処理ノードが動作している場合、システムはより高い使用率の必要性を認識し、そしてソフトウエア又はハードウエアをトリガーして、処理ノードがコード実行をより速く完了し得ると共にアイドル状態でより多くの時間を費やすことができるより高い性能に処理ノードを移行させる。それにより、ワットあたりでの全体のより良好な性能から電力節約の増大を図ることができる。
【発明の概要】
【発明が解決しようとする課題】
【0003】
使用率をトリガーとして用いることにより、幾つかの状況ではワットあたりの性能が増大し得る一方で、ワットあたりのより良好な性能に伴う問題又はその低下を防止することに対処することができない。
【課題を解決するための手段】
【0004】
そこで、1つの実施形態においては、処理ノードにおけるプローブアクティビティレベルを追跡することを含む方法が提供される。プローブアクティビティレベルはスレッショルドプローブアクティビティレベルと比較される。ある実施形態においては、プローブアクティビティレベルがスレッショルドプローブアクティビティレベルを超えている場合、処理ノードの性能状態は、その当座の性能レベル(current performance level)よりも高くされる。ある実施形態においては、プローブアクティビティレベルが第1のスレッショルドプローブアクティビティレベルスレッショルドを超えており且つ処理ノードの予測されるアイドル期間がアイドルスレッショルドよりも大きい場合、処理ノード内のキャッシュメモリがフラッシュされる(flushed)。ある実施形態においては、プローブアクティビティレベルがスレッショルドプローブアクティビティレベルを超えていることに応答して第1の性能状態をエンターした後に、処理ノードは、それがプローブアクティビティにおける十分な低下に応答して開始した、より低い性能状態に戻る。ある実施形態においては、十分な低下は、ヒステリシス因子を差し引いた第1のスレッショルドであるレベルまでのものである。実施形態においては、多重スレッショルドプローブアクティビティレベル及び関連する複数の性能状態があってよい。
【0005】
別の実施形態においては、装置は、処理ノードにおけるプローブアクティビティレベルを追跡するプローブ追跡器を含む。装置は、プローブアクティビティレベルが第1のスレッショルドプローブアクティビティレベルを超えて増大することに応答して、処理ノードの性能状態を当座の性能状態から第1の性能状態に上げる。ある実施形態においては、装置は、第1のスレッショルドプローブアクティビティレベルより低い予め定められたレベルまでプローブアクティビティレベルが下がることに応答して、第1の性能状態よりも低い第2の性能状態に処理ノードをエンターさせる。
【0006】
ある実施形態においては、プローブ追跡器はキューを含み、プローブ要求はキュー内にエンターされ、データ移動及び応答の少なくとも一方を伴うプローブ要求に処理ノードが応答した後に、キュー内のプローブ要求はキューからリタイヤさせられる(retired)。別の実施形態においては、プローブ追跡器は、プローブアクティビティレベルを表すカウント値を有するカウンタを含む。カウンタは、プローブアクティビティに応答して予め定められた量でカウント値をインクリメントし、また予め定められた時間の経過に応答して別の予め定められた量でカウント値をデクリメントする。
【図面の簡単な説明】
【0007】
添付の図面を参照することによって、当業者にとって、本発明はより良く理解されるであろうし、またその種々の目的、特徴、及び利点が明らかになるであろう。
【0008】
【図1】図1は本発明の実施形態に従う多重コアプロセッサを示す図である。
【図2】図2は単一スレッショルドを有する本発明の実施形態のフロー図である。
【図3A】図3Aは多重スレッショルドを有する本発明の実施形態の状態図である。
【図3B】図3Bは多重スレッショルドを有する本発明の実施形態の状態図である。
【図4】図4は電力を節約するためにノードのキャッシュがフラッシュされる本発明の実施形態を示す図である。
【図5】図5は単一スレッショルドを有するインフライトキュー(In-Flight Queue)(IFQ)構造を用いてプローブアクティビティを追跡するための実施形態を示す図である。
【図6】図6は多重スレッショルドを有するIFQを用いてプローブアクティビティを追跡するための実施形態を示す図である。
【図7】図7は異なるインクリメント基準及びデクリメント基準を有するカウンタを用いてプローブアクティビティを追跡するための別の実施形態を示す図である。
【0009】
尚、異なる図面における同じ参照符号の使用は類似の又は同一の事項を表す。
【発明を実施するための形態】
【0010】
図1を参照すると、高レベルなブロック図が多重コアプロセッサ実施形態を示しており、ここでは各コア又はノードは、キャッシュメモリ102及びプローブ制御103を含み、以下に更に説明される。図1のキャッシングシステムにおいては、処理ノードが低性能状態又はアイドル状態にある場合であっても、システム内の各処理ノードは、他のノード又は入力/出力(I/O)ドメインからのプローブ要求に応答すること(キャシュからのダーティデータを提供すること、キャッシュライン無効化、等)によって、メモリ内のコヒーレンシを維持する必要がある。従って、メモリロケーションのローカルコピーが種々のキャッシュ内で維持されているであろうにもかかわらず、メモリシステムにおいてコヒーレンシは維持される。しかし、プローブ動作の要求ノードの性能状態が、使用率(utilization)を評価することによって効果的に制御され得る一方で、その手法は、応答ノードの性能状態Pを直接的には高めない。要求ノードに適用可能な使用率ベースの性能制御は、応答ノードがボトルネックである場合に、全体的なシステム性能を脆弱なままにしてしまう。
【0011】
応答ノードにおけるコヒーレントアクティビティは、ノードがアイドル状態にあるにもかかわらずプローブ要求に応答し得るままであるという理由で、ノードそれ自身の使用率の増大(ノードの実行ストリームに基づく)には貢献しない。加えて、ノードの実行ストリームはプローブ応答とは完全に無関係であり得るので、応答ノードにおけるコヒーレントアクティビティは、通常は性能状態の高まりをトリガーする更に高い実行使用率をもたらさない。応答ノードが低性能状態にあり且つ多数の要求ノードによってプローブされる場合、応答ノードのクロック周波数に依存するプローブ応答能力(プローブ帯域幅)が性能ボトルネックとなって、要求処理ノード上で実行中のアプリケーションスレッドに関する性能低下の原因になり始めることがある。従って、応答処理ノードのプローブ帯域幅が不十分であるシナリオを識別し、また応答ノードのより高い性能状態への迅速で且つ制御可能な移行によって帯域幅の不足に対処することが有益である。一旦プローブアクティビティのバースト(burst of proving activity)が終了し、そして追加の帯域幅がもはや必要でなくなると、応答ノードは、その実行使用率によって指定される先行する性能状態に戻されてよい。
【0012】
潜在的なプローブ応答ボトルネックに対処する1つの手法は、オペレーティングシステム(OS)又はシステムデバイスの高レベルなソフトウエア操作がプロセッサP状態を適切に調節し得るシステムにおけるソフトウエアベースの解決法である。1つのソフトウエアベースの解決法は、OS又は高レベルなソフトウエアがプロセッサP状態をより頻繁に再評価することを必要とし(アクティビティのバーストに適切に応答するために)、従ってこの再評価のためにプロセッサを任意のアプリケーションと共により頻繁にウェイクアップさせる。この手法は、そのような頻繁な再評価が不要なアプリケーションに対しても、電力消費の増大をもたらしかねない。OS又は高レベルな挙動をより洗練されたものにし且つアプリケーション不変(application-invariant)でなくすることは、アイドルハンドラ又はルーチン(P状態再評価が通常は生じる)における追加的なオーバヘッドをもたらし、これに伴い電力消費の増大をもたらす。概して、ソフトウエアベースの解決法の細かさは、ハードウエアベースの手法に匹敵せず、プローブアクティビティの開始及びプローブアクティビティの終了の両方を迅速に識別することはできない。プロセッサは、追加的な時間に対してより高い性能状態に置かれると余分な電力消費をもたらし性能/ワットを低下させるという理由で、そのような状態に置かれるべきではないので、後者(プローブアクティビティの終了)は、電力節約のために識別することが等しく重要である。
【0013】
別の解決法は、全ての要求ノード及び応答ノードに対して共有される電圧/クロック水準を提供するハードウエアベースの解決法である。そのようなハードウエア構成は、要求ノード(コア)がその周波数を高くする場合に応答ノード(コア)の周波数を高める。応答ノードの遅い応答は、要求ノード(コア)の使用率の増大の原因になる。従って、要求ノードの性能状態を制御しているソフトウエアは、要求ノードの性能状態を高めることになり、また応答ノード性能状態も高められることになり(共有されている周波数及び電圧水準に起因して)、応答コアのプローブ帯域が最終的に増大する。しかし、この手法は、携帯電話又はウルトラモバイルの市場区分における最も典型的な種類のワークロードである単一の又は少数のノード(コア)上でのみアプリケーションが実行中である状況においても、多重コアプロセッサで余分な電力を消費する。更に、ソフトウエアは通常、要求ノード(コア)の使用率増大に起因する更に高いクロック周波数に対する必要性に、典型的には数百マイクロ秒から数ミリ秒の範囲にある時間インターバルでは即座には応答せず、このインターバルでの性能低下をもたらす可能性がある。
【0014】
そこで、本発明の実施形態においては、各処理ノードがそのプローブアクティビティを追跡する。プローブアクティビティのレベルがスレッショルドを超えると、処理ノードの性能状態は、最低性能フロア、即ち最低P状態限界(MinPstateLimit)に移行させられて、プローブアクティビティ帯域に対して増大された要求に対処する。関連するヒステリシスを差し引かれたスレッショルドをプローブアクティビティが下回った後に、処理ノードは、その先行するP状態が最低P状態限界よりも低い(性能の観点から)状況において、その先行する性能状態(P状態)に戻る。尚、幾つかの実施形態においては、ヒステリシス値はゼロであってよく、また他の実施形態においては、一定値又はプログラム可能な値であってよい。
【0015】
図2のフローチャートは、本発明の実施形態に従いプローブ制御論理103(図1参照)において動作し得る例示的な決定処理を示している。ステップ201では、処理ユニットが最低P状態限界よりも低い性能状態にあるかどうかをノードが決定する。処理ユニットが最低P状態限界よりも低い状態にない場合には、当座の性能状態はプローブアクティビティを取り扱うのに十分であり、フローはステップ201内にとどまる。当座の性能状態が最低P状態限界よりも低い場合には、ステップ203においてノードはプローブアクティビティを追跡する。ステップ205においてプローブアクティビティがスレッショルドよりも大きい場合には、ノードはステップ207において性能状態を最低P状態限界に移行させ、そしてステップ208においてプローブアクティビティの追跡を継続する。尚、性能状態を調節する制御論理は、図示の簡素化を目的として、プローブ制御論理103の一部であることが仮定されている。幾つかの実施形態においては、性能状態を調節する制御論理は、プローブ制御論理とは別であってよい。電圧及び周波数を用いて処理ノードの性能状態を制御することは、当該分野においてよく知られており、ここでは詳細には説明しない。ヒステリシス因子を差し引いたスレッショルドをプローブアクティビティがまだ超えている場合には、ノードは最低P状態限界にとどまりプローブアクティビティに対処する。しかし、ステップ209において、ヒステリシス因子を差し引いたスレッショルドを下回るレベルにプローブアクティビティが戻った場合には、ノードは、ステップ211において、先行する性能状態(ステップ201及び203における)が最低P状態限界よりも低かったかどうかを決定する。そうである場合には、ステップ213においてノードは先行するより低い性能状態に移行し、次いでステップ201に戻って、スレッショルドレベルを上回るプローブアクティビティ増大に対処するのに当座の性能状態が適切であるかどうかを決定する。尚、処理ノード使用率因子に基づくソフトウエア(又はハードウエア)によって管理される通常フローによって処理ノードの当座の性能状態が最低P状態限界以上に高められてしまっている場合には、ステップ211において、より低い性能状態への移行は生じない。
【0016】
図2に示される実施形態は、最低P状態限界の性能状態によって対処される1つのプローブ性能スレッショルドのみを含む。最悪の場合のプローブ帯域幅要求を満たすために、最低P状態限界よりも高い任意の性能状態(P状態)が想定される。しかし、他の実施形態は、プローブ帯域幅に関連する2つ以上のスレッショルドを有することができる。より大きなプローブ帯域幅の要求は、プローブ帯域幅限定に対処するためにより高い動作P状態を必要とする。表1はプローブ帯域幅に対する異なる要求に対応する3つの性能状態(P状態)を有する実施形態を示している。
【0017】
【表1】

【0018】
P状態に対して、Pm>Pn>Pkである。性能の観点からは、PrbActM>PrbActN>PrbActKである。ヒステリシス値HystM、HystN、及びHystKは同一であってよく、あるいは各スレッショルドに対して異なっていてよい。ヒステリシス値はスレッショルドと共に設定可能であってよい。
【0019】
プローブアクティビティが(PrbActM−HystM)を上回り続けている限り、処理ノードはP状態Pmにとどまる。一旦プローブアクティビティが(PrbActM−HystM)を下回り且つ先の性能状態(プローブアクティビティの増大の前)がPmよりも低い場合には、処理ノードはより低い性能状態に移行する。尚、処理ノード使用率因子に基づくソフトウエア(又はハードウエア)によって管理される通常フローによって処理ノードの当座の性能状態がPm以上に高められてしまっている場合には、より低い性能状態への移行は生じない。
【0020】
図3A及び3Bは2つ以上のプローブ性能スレッショルドを伴う実施形態に対する状態間移行を表しており、各性能スレッショルドは異なるレベルのプローブアクティビティに対応している。状態移行はプローブ制御論理103(図1)内に実装されていてよい。一旦プローブアクティビティがスレッショルドの1つを超えると、応答ノードは、プローブアクティビティのレベルに対応するP状態に移行させられる。それにより、アイドル状態にある応答ノードが、より高い性能状態(P状態)が必要とされる増大されたプローブアクティビティの期間を除いてずっと最低性能状態(又はより適切には保持(retention)状態)に確実にあるようにすることが支援される。図3Aを参照すると、周波数の観点からは、Pm(301)>Pn(303)>Pk(305)>当座のP状態(307)であると仮定している。そして、P状態307にある間にプローブアクティビティにおける高いプローブアクティビティ(Prob_Act)レベルへの増大が生じると、ノードは、以下に説明されるプローブアクティビティのレベルに応じてP状態Pk、Pm、又はPnの1つにエンターしてよい。以下は、ノードが現在は低電力状態307にあると仮定した場合における処理ノードの移行上昇(transition-up)を説明している。
(Prob_Act>PrbActM)であれば、P状態=Pm
それ以外の場合において、(Prob_Act>PrbActN)であれば、P状態=Pn
それ以外の場合において、(Prob_Act>PrbActK)であれば、P状態=Pk
【0021】
また、ある実施形態においては、図3Bに示されるように、ノードは、P状態Pn303又はPk305にある場合、次のより高いレベルのP状態まで移行してよい。P状態Pn303にある間にノードがプローブアクティビティの増大を検出すると(Prob_Act>PrbActM)、ノードは306を介してP状態Pm301に移行する。P状態Pk305にある間にノードがプローブアクティビティの増大を検出すると(PrbActM>Prob_Act>PrbActN)、ノードは移行308を介してP状態Pn303に移行する。P状態Pk305にある間にノードがプローブアクティビティの増大を検出すると(Prob_Act>PrbActM)、ノードは移行310を介してP状態Pm301に移行する。
【0022】
ある実施形態における追加的な態様は、プローブアクティビティがスレッショルドを下回る場合にアイドルノードのP状態を最低P状態に下げることである。処理ノードのP状態を使用率ベースで設定するように動作するソフトウエア又はハードウエアが、準最適に高いP状態(最低P状態限界よりも高い)に残ってしまっている場合、それでもなおノードが電力を節約しながら非バーストの(non-bursty)又はより低いレベルのプローブアクティビティに応答することができるように、プローブ中のP状態制御機能は、ノードP状態をPmin(最低動作P状態)又はより適切には保持電力状態に下げることができる。プローブアクティビティ(Prob_Act)のレベルの低下に基づく図3Aに示される移行下降(transitioning down)が以下に説明される。
(Prob_Act<(PrbActM−HystM)且つProb_ACT>PrbActN且つ当座のP状態<Pm)であれば、P状態=Pn
それ以外の場合において、(Prob_Act<(PrbActN−HystN)且つProb_ACT>PrbActK且つ当座のP状態<Pn)であれば、P状態=Pk
それ以外の場合において、(Prob_Act<(PrbActK−HystK)且つ当座のP状態<Pk)であれば、P状態=当座のP状態
【0023】
同様に、図3Bに示されるように、ある実施形態においては、ノードは、1つのP状態303又は305からプローブアクティビティにおける低下を反映する適切なP状態に移行下降してよい。例えばP状態Pn303にあるノードは、プローブアクティビティに応じてP状態Pk305又は当座のP状態307のいずれかに移行してよい。(Prob_Act<PrbActN−HystN且つProb_ACT>PrbActK)になるようにプローブアクティビティが低下する場合には、ノードはP状態Pk305に移行する。P状態Pn303にあるプローブアクティビティがProb_Act<PrbActK−HystKになるように低下する場合には、ノードは当座のP状態307に移行する。同様に、P状態Pk305にあるプローブアクティビティがProb_Act<PrbActK−HystKになるように低下する場合には、ノードは当座のP状態307に移行する。
【0024】
このように、制御論理は、当座のプローブアクティビティに基づいて上げるか下げるかして電力状態を移行させて、当座の電力状態をプローブアクティビティニーズに適合させるよう試行することになる。それにより、利用可能な電力の節約を達成するよう努めるながら応答ノードにおけるボトルネックを回避することが支援される。
【0025】
別の実施形態においては、ノードがアイドルであり且つそのプローブアクティビティがスレッショルドを超えている場合、プローブアクティビティは、ノードのキャッシュシステムのフラッシュ(flushing)(書き戻し失効化及び無効化(write-back invalidate and disabling))をトリガーすることができる。この手法は、多重ノードシステムに対して又は比較的短いキャッシュフラッシュ時間を伴うノードに対して有用であろう。フラッシュすることの決定は、スレッショルドを超えるプローブアクティビティ(プローブしているキャッシュ上で応答ノードによって消費される電力が、キャッシュシステムをフラッシュすることに付随する電力よりも大きくなることを意味する)等の因子に基づいていてよく、そしてノードは十分な時間アイドルであり続けると予測される。アイドルネス(idleness)を予測するする手法は、内部追跡器(internal trackers)又は典型的にはノースブリッジ内にある(又はより一般的には、プロセッサコアではなく、典型的にはメモリ制御器及び電力管理、等の機能を含むプロセッサ集積回路(アンコア(Uncore))の部品内にある)アクティビティ追跡器に基づいて予測を行うことを含む。加えて、I/Oサブシステムアクティビティ予測、例えば割り込み、入ってくる又は出てゆく転送、及びタイマーチック(timer-ticks)もまた、アイドルネスの予測において利用されてよく、また別の集積回路(例えばサウスブリッジ)に基づいて利用されてもよい。
【0026】
図4はプローブアクティビティ及びノードアイドルネス予測に基づいてキャッシュフラッシュするための実施形態の例示的なフロー図を示している。ステップ401において処理ノードがアイドル状態にある場合には、処理ノードはステップ402においてプローブアクティビティを追跡し、そしてステップ403において、プローブスレッショルドよりも大きいプローブアクティビティをノードがチェックする。次いでステップ405においては、処理ノードアイドルネスがアイドルスレッショルドよりも大きいと予測されるかどうかをフローがチェックする。予測される場合には、ステップ407において処理ノードは、そのキャッシュをフラッシュし、そのキャッシュシステムを無効化し、保持電圧又は他の適切な電力節約電圧を印加し、そしてシステムはノードをプローブすることを停止する。一方、ノードアイドルネスの予測された期間がスレッショルドを下回る場合、キャッシュフラッシュすることは、電力を節約せず又は十分な電力を節約しないのでそれほど魅力的ではなく、P状態制御アルゴリズム(上述した)がステップ409で適用されてよく、そしてノードはプローブアクティビティの追跡を継続し、必要であればプローブアクティビティのレベルに従ってP状態を調節する。
【0027】
プローブアクティビティを追跡するための1つの実施形態は、ここではインフライトキュー(IFQ)と称される図5に示されるキュー構造を利用する。IFQ構造500は、プローブアクティビティのレベルを論理的に反映する多重エントリアレイである。任意のトランザクション(コヒーレント又は非コヒーレント)501は、IFQの利用可能なエントリ内へと置かれ、そして退去時点(eviction point)までそこにある。トランザクションは、応答ノードによる応答の後に、503で示されるようにIFQから割り当てを解除される(de-allocated)(退去させられる)。応答は、データ移動を含むトランザクションのためのデータフェーズ(即ち処理ノードから共有メモリへの又は共有メモリから処理ノードへのデータ移動)、又はデータ移動を伴わないトランザクションのための応答後フェーズ(即ちローカルキャッシュ内又は処理ノードのメモリ内のキャッシュを失効化するための要求)のいずれかであってよい。IFQ構造は、複数の処理ノード間で共有されてよく、又は処理ノード毎に例示化されて(instantiated)いてよい。プローブアクティビティのレベルは、アクティブなIFQエントリ(完了保留中の未決のコヒーレント要求が入っているエントリ)の数によって表される。
【0028】
1つの実施形態においては、ノード(又は制御機能があるどこでも)は、アクティブなIFQエントリの数を単一のスレッショルド502と比較する。尚、制御機能はノードの内部又は外部にあってよい。ノードの外部である場合には、上述したようなダイのアンコア部分内の同じダイ上にあってよい。エントリの数がスレッショルドを超える場合には、より高いP状態(最低P状態限界)への移行が生じる。ヒステリシスを差し引かれたスレッショルドよりも低いレベルにアクティブIFQエントリの数が落ちた後に、最低P状態限界性能フロアはキャンセルされ、そして処理ノードは、より低い電力で動作しながらより小さいプローブ帯域幅が対処され得る当座のP状態へと戻される。
【0029】
他の実施形態は図6に示される多重レベルIFQベースの手法を利用してよく、ここでは、各レベルは、異なるプローブ帯域幅に付随する関連する最低性能レベル(P状態スレッショルド)を有する。例えば16エントリIFQ構造600は、プローブ帯域幅における増大したニーズを表すP状態Pm及びPkにそれぞれ対応する2つのスレッショルド602及び604を有していてよい。状態間移行は、図3A及び3Bに示されるように達成されてよい。
【0030】
他の実施形態においては、プローブアクティビティを追跡するのに異なる手法が用いられてよい。例えば、プローブ要求に対して隠された、利用可能でない、又は追跡困難な完了フェーズを有するシステムにおいては、追跡手法は、異なるインクリメント速度及びデクリメント速度を伴うプローブカウントメカニズムに基づいていてよい。例えば図7を参照すると、新たなプローブ要求703が処理ノードに送られるたびに(CNT=CNT+w_inc)でインクリメントされるカウンタ701が示されている。カウント値は、処理ノードの特定のP状態に関連するプローブ速度(帯域幅)に合致する設定可能な時間インターバル(許容可能なインターバル(IntervalTolerated))毎に(CNT=CNT−w_dec)でデクリメントされる。ある実施形態においては、設定可能な時間インターバルは、特定のP状態に関連する最大プローブ帯域幅に合致する。このように、実際の応答(データ移動、データ移動を伴わないトランザクションのための応答フェーズ)が追跡されない場合であっても、プローブ要求が特定の速度でサービスされているものと仮定される。
【0031】
任意の新たなプローブ要求はカウンタを(CNT=CNT+w_inc)でインクリメントし、ここでw_incはカウンタの現在値に加えられる設定可能な重みである。幾つかの実施形態においては、インクリメント/デクリメント値は設定可能であってよく、またそれらの設定は、顧客、又はより高いレベルのソフトウエアの選択(性能バイアスされた、バランスされた、又は電力バイアスされた)に依存していてよい。性能バイアスされた設定に対しては、w_inc(インクリメント重み)はより大きな値に設定され、またw_dec(デクリメント重み)はより小さい値に設定される。電力節約バイアスされた設定に対しては、これらのパラメータは逆のやり方で設定されてよい。また、許容可能なインターバル(IntervalTolerated)値は、顧客又は高レベルソフトウエアの性能/電力の選択に依存して設定されてよい。カウンタ値は、プローブアクティビティのレベルを表し、そしてプローブアクティビティスレッショルドと比較されて最適P状態を導き出す。より大きなカウンタ値は、当座のP状態が満たすことのできない増大されたプローブ帯域幅に合致するために、より高い動作P状態を必要とする。
【0032】
ワークロード均一性を適切には表さず且つカウンタの過インクリメント及び性能/ワットの観点からは準最適であろう性能状態(P状態)の選択をもたらすプローブアクティビティのバーストを除去する(filter out)ために、ローパスフィルタ(LPF)705が用いられてよい。特定の実施形態によると、設定可能な数(1〜N)のプローブ要求が、設定可能なインターバルTの間に追跡される。プローブ要求の過カウンティングを、それらの出現が時間インターバルの間の何らかの設定可能な限界を超える場合に回避するために、ローパスフィルタは種々の方法で設定されてよい。例えばローパスフィルタは、インターバルTの間のn(1≦n≦N)個以下のプローブイベントを追跡するように実装されてよい。従って、プローブイベントの数がnより大きい場合には、カウンタはnだけをカウントする。ローパスフィルタは、フィルタリングされたプローブ要求をカウンタに供給する。
【0033】
代替的には、ローパスフィルタ705は、多重インターバルTにわたるプローブイベントの数を平均化するように実装されてよく、その結果、特定のインターバルTが高バーストのアクティビティを有してしまったとしても、その高バーストは、多重インターバルにわたる平均化によって制限される。平均化は例えば移動平均として実装されてよい。1つの実施形態においては、プローブ要求は、移動平均よりも高速度ではカウンタに供給されない。
【0034】
言うまでもなく、ローパスフィルタの実装は、重みw_incがどのように決定されるかに影響するであろう。従って、例えば多数の時間インターバルにわたる平均化が用いられる場合には、重みは時間インターバルを反映するようにスケーリングされてよい。他の実施形態においては、フィルタリングせずにプローブ要求が直接カウンタに供給されてよい。
【0035】
ここでの実施形態の態様は、図1に示されるプロセッサに関連する揮発性又は不揮発性のメモリに記憶されるソフトウエアにおいて部分的に実装されてよい。ソフトウエアはコンピュータシステムの不揮発性部分に記憶されていてよく、揮発性メモリにロードされてよく、そして実行されてよい。このように、本発明の実施形態は、不揮発性メモリ等の機械可読媒体によって提供される機械実行可能命令内で具現化される特徴又は処理を含んでいてよい。そのような媒体は、マイクロプロセッサ又は更に一般的にはコンピュータシステム等の機械によってアクセス可能な形態にあるデータを記憶する任意のメカニズムを含んでいてよい。機械可読媒体は、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光学的記憶媒体、フラッシュメモリデバイス、テープ、又は他の磁気的、光学的、若しくは電子的な記憶媒体、等の揮発性メモリ及び/又は不揮発性メモリを含んでいてよい。そのような記憶されている命令は、命令がプログラムされる汎用又は専用のプロセッサに本発明の処理を実行させるために用いられ得る。
【0036】
尚、本発明の幾つかの処理は、プログラムされた命令に応答するハードウエア動作を含んでいてよい。代替的には、本発明の処理は、動作を行う状態マシン等のハードワイヤード論理を含む特定のハードウエアコンポーネントによって、又はプログラムされたデータ処理コンポーネント及びハードウエアコンポーネントの任意の組み合わせによって行われてよい。このように、本発明の実施形態は、ここに説明されるようなソフトウエア、データ処理ハードウエア、システム実装のデータ処理方法、及び種々の処理動作を含んでいてよい。
【0037】
以上のように、種々の実施形態が説明されてきた。尚、ここに記載される本発明の説明は例示的なものであり、以下の特許請求の範囲に記載される本発明の範囲を限定することが意図されるものではない。以下の特許請求の範囲に記載される本発明の範囲から逸脱することなしに、ここに記載される説明に基づいて、ここに説明される実施形態の変形及び修正がなされてよい。

【特許請求の範囲】
【請求項1】
処理ノードにおけるプローブアクティビティレベルを追跡することと、
前記プローブアクティビティレベルを第1のスレッショルドプローブアクティビティレベルと比較することと、
前記プローブアクティビティレベルが前記第1のスレッショルドプローブアクティビティレベルを超えている場合に前記処理ノードの性能状態を当座の性能状態よりも高い第1の性能状態に上げることと、を備える方法。
【請求項2】
前記プローブアクティビティレベルが前記スレッショルドプローブアクティビティレベルを超えていることに応答して前記第1の性能状態をエンターした後に、前記プローブアクティビティレベルが前記第1のスレッショルドプローブアクティビティよりも低い予め定められたレベルを下回る場合に前記第1の性能状態よりも低い第2の性能状態をエンターすることを更に備える請求項1に記載の方法。
【請求項3】
ヒステリシス因子を差し引いた前記第1のスレッショルドよりも前記プローブアクティビティレベルが低い場合に前記第2の性能状態をエンターすることを更に備える請求項2に記載の方法。
【請求項4】
前記第2の性能状態は前記処理ノードが前記第1の性能状態をエンターした性能状態である請求項3に記載の方法。
【請求項5】
前記第1及び第2の性能状態は電圧及び周波数の少なくとも1つによって定義される請求項1〜4のいずれかに記載の方法。
【請求項6】
前記プローブアクティビティレベルが前記第1のスレッショルドプローブアクティビティレベルよりも高い第2のスレッショルドプローブアクティビティレベルを超えて増大することに応答して前記処理ノードの前記性能状態を前記第1の性能状態よりも高い第3の性能状態に上げることと、
前記プローブアクティビティレベルが前記第2のスレッショルドプローブアクティビティレベルを超えて増大することに応答して前記処理ノードの前記性能状態を前記第3の性能状態に上げた後に前記性能状態を下げることと、を更に備える請求項1〜4のいずれかに記載の方法。
【請求項7】
前記処理ノードが前記第1の性能状態を下回る性能状態にある場合に前記プローブアクティビティレベルの前記追跡することを開始することを更に備える請求項1〜4のいずれかに記載の方法。
【請求項8】
前記プローブアクティビティを追跡することは、
各プローブ要求をキュー内にエンターすること並びにデータ移動及び応答の少なくとも一方を伴うプローブ要求に前記処理ノードが応答した後に前記プローブ要求を前記キューからリタイヤさせることと、
前記キュー内のエントリの数を前記第1のスレッショルドプローブアクティビティレベルと比較して前記プローブアクティビティが前記第1のスレッショルドプローブアクティビティレベルを上回っているかどうかを決定することと、を更に備える請求項1〜4のいずれかに記載の方法。
【請求項9】
前記プローブアクティビティを追跡することは、プローブアクティビティの発生に応答してプローブアクティビティのレベルを表すカウント値をインクリメントすることと、予め定められた時間の経過に基づいて前記カウント値をデクリメントすることと、を更に備える請求項1〜4のいずれかに記載の方法。
【請求項10】
処理ノードにおけるプローブアクティビティレベルを追跡するプローブ追跡器を備える装置であって、
前記装置は前記プローブアクティビティレベルが第1のスレッショルドプローブアクティビティレベルを超えて増大する場合に前記処理ノードの性能状態を当座の性能状態から第1の性能状態に上げるように動作し、
前記装置は前記第1のスレッショルドプローブアクティビティレベルより低い予め定められたレベルまで前記プローブアクティビティレベルが下がることに応答して前記第1の性能状態よりも低い第2の性能状態に前記処理ノードをエンターさせ、
前記第1及び第2の性能状態は電圧及び周波数の少なくとも一方によって定義される装置。
【請求項11】
前記装置は前記プローブアクティビティレベルが前記第1のスレッショルドプローブアクティビティレベルよりも高い第2のスレッショルドプローブアクティビティレベルを超えて増大することに応答して前記処理ノードの前記性能状態を前記第1の性能状態よりも高い第3の性能状態に上げるように更に動作可能である請求項10に記載の装置。
【請求項12】
前記プローブ追跡器は前記ノードが前記第1の性能状態より低い性能状態にあることに応答して前記プローブアクティビティレベルの追跡を開始する請求項10に記載の装置。
【請求項13】
前記プローブ追跡器はキューを更に備え、
前記キュー内にプローブ要求がエンターされ、データ移動及び応答の少なくとも一方を伴うプローブ要求に前記処理ノードが応答した後に前記キュー内の前記プローブ要求は前記キューからリタイヤさせられ、
前記装置は前記キュー内のエントリの数を前記第1のスレッショルドプローブアクティビティレベルと比較して前記プローブアクティビティが第1のスレッショルドプローブアクティビティレベルを上回っているかどうかを決定するように動作可能である請求項10〜12のいずれかに記載の装置。
【請求項14】
前記プローブ追跡器は、プローブアクティビティに応答してプローブアクティビティのレベルを表すカウント値をインクリメントすると共に予め定められた時間の経過に応答して前記カウント値をデクリメントするカウンタを備える請求項10〜12のいずれかに記載の装置。

【図1】
image rotate

【図2】
image rotate

【図3A】
image rotate

【図3B】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公表番号】特表2013−510376(P2013−510376A)
【公表日】平成25年3月21日(2013.3.21)
【国際特許分類】
【出願番号】特願2012−538025(P2012−538025)
【出願日】平成22年11月5日(2010.11.5)
【国際出願番号】PCT/US2010/055598
【国際公開番号】WO2011/057059
【国際公開日】平成23年5月12日(2011.5.12)
【出願人】(591016172)アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド (439)
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
【Fターム(参考)】