(57)【要約】【解決手段】  処理ノードは、その内部キャシング又はメモリシステムに関連するプローブアクティビティレベルを追跡する。プローブアクティビティレベルがスレッショルドプローブアクティビティレベルを超えると、処理ノードの性能状態がその当座の性能状態よりも高くされて、高められた性能能力をプローブ要求に応答して提供する。プローブアクティビティレベルがスレッショルドプローブアクティビティレベルを超えたことに応答してより高い性能状態にエンターした後に、処理ノードは、プローブアクティビティの低下に応答してより低い性能状態に戻る。多重スレッショルドプローブアクティビティレベル及び関連する性能状態があってよい。【選択図】図１
2013510376.tif 000002
【特許請求の範囲】
【請求項１】
処理ノードにおけるプローブアクティビティレベルを追跡することと、
前記プローブアクティビティレベルを第１のスレッショルドプローブアクティビティレベルと比較することと、
前記プローブアクティビティレベルが前記第１のスレッショルドプローブアクティビティレベルを超えている場合に前記処理ノードの性能状態を当座の性能状態よりも高い第１の性能状態に上げることと、を備える方法。
【請求項２】
前記プローブアクティビティレベルが前記スレッショルドプローブアクティビティレベルを超えていることに応答して前記第１の性能状態をエンターした後に、前記プローブアクティビティレベルが前記第１のスレッショルドプローブアクティビティよりも低い予め定められたレベルを下回る場合に前記第１の性能状態よりも低い第２の性能状態をエンターすることを更に備える請求項１に記載の方法。
【請求項３】
ヒステリシス因子を差し引いた前記第１のスレッショルドよりも前記プローブアクティビティレベルが低い場合に前記第２の性能状態をエンターすることを更に備える請求項２に記載の方法。
【請求項４】
前記第２の性能状態は前記処理ノードが前記第１の性能状態をエンターした性能状態である請求項３に記載の方法。
【請求項５】
前記第１及び第２の性能状態は電圧及び周波数の少なくとも１つによって定義される請求項１〜４のいずれかに記載の方法。
【請求項６】
前記プローブアクティビティレベルが前記第１のスレッショルドプローブアクティビティレベルよりも高い第２のスレッショルドプローブアクティビティレベルを超えて増大することに応答して前記処理ノードの前記性能状態を前記第１の性能状態よりも高い第３の性能状態に上げることと、
前記プローブアクティビティレベルが前記第２のスレッショルドプローブアクティビティレベルを超えて増大することに応答して前記処理ノードの前記性能状態を前記第３の性能状態に上げた後に前記性能状態を下げることと、を更に備える請求項１〜４のいずれかに記載の方法。
【請求項７】
前記処理ノードが前記第１の性能状態を下回る性能状態にある場合に前記プローブアクティビティレベルの前記追跡することを開始することを更に備える請求項１〜４のいずれかに記載の方法。
【請求項８】
前記プローブアクティビティを追跡することは、
各プローブ要求をキュー内にエンターすること並びにデータ移動及び応答の少なくとも一方を伴うプローブ要求に前記処理ノードが応答した後に前記プローブ要求を前記キューからリタイヤさせることと、
前記キュー内のエントリの数を前記第１のスレッショルドプローブアクティビティレベルと比較して前記プローブアクティビティが前記第１のスレッショルドプローブアクティビティレベルを上回っているかどうかを決定することと、を更に備える請求項１〜４のいずれかに記載の方法。
【請求項９】
前記プローブアクティビティを追跡することは、プローブアクティビティの発生に応答してプローブアクティビティのレベルを表すカウント値をインクリメントすることと、予め定められた時間の経過に基づいて前記カウント値をデクリメントすることと、を更に備える請求項１〜４のいずれかに記載の方法。
【請求項１０】
処理ノードにおけるプローブアクティビティレベルを追跡するプローブ追跡器を備える装置であって、
前記装置は前記プローブアクティビティレベルが第１のスレッショルドプローブアクティビティレベルを超えて増大する場合に前記処理ノードの性能状態を当座の性能状態から第１の性能状態に上げるように動作し、
前記装置は前記第１のスレッショルドプローブアクティビティレベルより低い予め定められたレベルまで前記プローブアクティビティレベルが下がることに応答して前記第１の性能状態よりも低い第２の性能状態に前記処理ノードをエンターさせ、
前記第１及び第２の性能状態は電圧及び周波数の少なくとも一方によって定義される装置。
【請求項１１】
前記装置は前記プローブアクティビティレベルが前記第１のスレッショルドプローブアクティビティレベルよりも高い第２のスレッショルドプローブアクティビティレベルを超えて増大することに応答して前記処理ノードの前記性能状態を前記第１の性能状態よりも高い第３の性能状態に上げるように更に動作可能である請求項１０に記載の装置。
【請求項１２】
前記プローブ追跡器は前記ノードが前記第１の性能状態より低い性能状態にあることに応答して前記プローブアクティビティレベルの追跡を開始する請求項１０に記載の装置。
【請求項１３】
前記プローブ追跡器はキューを更に備え、
前記キュー内にプローブ要求がエンターされ、データ移動及び応答の少なくとも一方を伴うプローブ要求に前記処理ノードが応答した後に前記キュー内の前記プローブ要求は前記キューからリタイヤさせられ、
前記装置は前記キュー内のエントリの数を前記第１のスレッショルドプローブアクティビティレベルと比較して前記プローブアクティビティが第１のスレッショルドプローブアクティビティレベルを上回っているかどうかを決定するように動作可能である請求項１０〜１２のいずれかに記載の装置。
【請求項１４】
前記プローブ追跡器は、プローブアクティビティに応答してプローブアクティビティのレベルを表すカウント値をインクリメントすると共に予め定められた時間の経過に応答して前記カウント値をデクリメントするカウンタを備える請求項１０〜１２のいずれかに記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータシステムの性能に関し、より特定的にはキャッシュプローブ(cache probes)に関連する性能に関する。
【背景技術】
【０００２】
コンピュータシステムにおける処理ノードは、多重の性能状態（又は動作状態）Ｐｎのいずれかにあることがあり、ここで特定の性能状態（又はＰ状態）は、関連する電圧又は周波数によって特徴付けられる。ノードの適切な性能状態を決定するための１つの因子は、その使用率(utilization)である。使用率は、アクティブ（実行）状態にある処理ノードによって費やされる時間の、実行時間が追跡され又は測定された全時間インターバルに対する比である。例えば、全時間インターバルが１０ミリ秒（ｍｓ）であり且つ処理ノードがアクティブ（Ｃ０）状態において６ｍｓを費やした場合、プロセッサノードの使用率は６／１０＝６０％である。プロセッサノードは、コード実行がサスペンドされるアイドル（非Ｃ０）状態で残りの４ｍｓを費やす。より高いノード使用率は、より良好なアドレス性能／ワット要求に対して、より高い電圧及び／又は周波数を有するより高い性能状態Ｐの選択をトリガーする。複数の性能状態の間で処理ノードを移行させる決定は、通常、オペレーティングシステム（ＯＳ）、高レベルなソフトウエア、ドライバ、又は何らかのハードウエア制御器のいずれかによってなされる。例えば、より長いコード実行時間を結果としてもたらす低い性能状態で処理ノードが動作している場合、システムはより高い使用率の必要性を認識し、そしてソフトウエア又はハードウエアをトリガーして、処理ノードがコード実行をより速く完了し得ると共にアイドル状態でより多くの時間を費やすことができるより高い性能に処理ノードを移行させる。それにより、ワットあたりでの全体のより良好な性能から電力節約の増大を図ることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
使用率をトリガーとして用いることにより、幾つかの状況ではワットあたりの性能が増大し得る一方で、ワットあたりのより良好な性能に伴う問題又はその低下を防止することに対処することができない。
【課題を解決するための手段】
【０００４】
そこで、１つの実施形態においては、処理ノードにおけるプローブアクティビティレベルを追跡することを含む方法が提供される。プローブアクティビティレベルはスレッショルドプローブアクティビティレベルと比較される。ある実施形態においては、プローブアクティビティレベルがスレッショルドプローブアクティビティレベルを超えている場合、処理ノードの性能状態は、その当座の性能レベル(current performance level)よりも高くされる。ある実施形態においては、プローブアクティビティレベルが第１のスレッショルドプローブアクティビティレベルスレッショルドを超えており且つ処理ノードの予測されるアイドル期間がアイドルスレッショルドよりも大きい場合、処理ノード内のキャッシュメモリがフラッシュされる(flushed)。ある実施形態においては、プローブアクティビティレベルがスレッショルドプローブアクティビティレベルを超えていることに応答して第１の性能状態をエンターした後に、処理ノードは、それがプローブアクティビティにおける十分な低下に応答して開始した、より低い性能状態に戻る。ある実施形態においては、十分な低下は、ヒステリシス因子を差し引いた第１のスレッショルドであるレベルまでのものである。実施形態においては、多重スレッショルドプローブアクティビティレベル及び関連する複数の性能状態があってよい。
【０００５】
別の実施形態においては、装置は、処理ノードにおけるプローブアクティビティレベルを追跡するプローブ追跡器を含む。装置は、プローブアクティビティレベルが第１のスレッショルドプローブアクティビティレベルを超えて増大することに応答して、処理ノードの性能状態を当座の性能状態から第１の性能状態に上げる。ある実施形態においては、装置は、第１のスレッショルドプローブアクティビティレベルより低い予め定められたレベルまでプローブアクティビティレベルが下がることに応答して、第１の性能状態よりも低い第２の性能状態に処理ノードをエンターさせる。
【０００６】
ある実施形態においては、プローブ追跡器はキューを含み、プローブ要求はキュー内にエンターされ、データ移動及び応答の少なくとも一方を伴うプローブ要求に処理ノードが応答した後に、キュー内のプローブ要求はキューからリタイヤさせられる(retired)。別の実施形態においては、プローブ追跡器は、プローブアクティビティレベルを表すカウント値を有するカウンタを含む。カウンタは、プローブアクティビティに応答して予め定められた量でカウント値をインクリメントし、また予め定められた時間の経過に応答して別の予め定められた量でカウント値をデクリメントする。
【図面の簡単な説明】
【０００７】
添付の図面を参照することによって、当業者にとって、本発明はより良く理解されるであろうし、またその種々の目的、特徴、及び利点が明らかになるであろう。
【０００８】
【図１】図１は本発明の実施形態に従う多重コアプロセッサを示す図である。
【図２】図２は単一スレッショルドを有する本発明の実施形態のフロー図である。
【図３Ａ】図３Ａは多重スレッショルドを有する本発明の実施形態の状態図である。
【図３Ｂ】図３Ｂは多重スレッショルドを有する本発明の実施形態の状態図である。
【図４】図４は電力を節約するためにノードのキャッシュがフラッシュされる本発明の実施形態を示す図である。
【図５】図５は単一スレッショルドを有するインフライトキュー(In-Flight Queue)（ＩＦＱ）構造を用いてプローブアクティビティを追跡するための実施形態を示す図である。
【図６】図６は多重スレッショルドを有するＩＦＱを用いてプローブアクティビティを追跡するための実施形態を示す図である。
【図７】図７は異なるインクリメント基準及びデクリメント基準を有するカウンタを用いてプローブアクティビティを追跡するための別の実施形態を示す図である。
【０００９】
尚、異なる図面における同じ参照符号の使用は類似の又は同一の事項を表す。
【発明を実施するための形態】
【００１０】
図１を参照すると、高レベルなブロック図が多重コアプロセッサ実施形態を示しており、ここでは各コア又はノードは、キャッシュメモリ１０２及びプローブ制御１０３を含み、以下に更に説明される。図１のキャッシングシステムにおいては、処理ノードが低性能状態又はアイドル状態にある場合であっても、システム内の各処理ノードは、他のノード又は入力／出力（Ｉ／Ｏ）ドメインからのプローブ要求に応答すること（キャシュからのダーティデータを提供すること、キャッシュライン無効化、等）によって、メモリ内のコヒーレンシを維持する必要がある。従って、メモリロケーションのローカルコピーが種々のキャッシュ内で維持されているであろうにもかかわらず、メモリシステムにおいてコヒーレンシは維持される。しかし、プローブ動作の要求ノードの性能状態が、使用率(utilization)を評価することによって効果的に制御され得る一方で、その手法は、応答ノードの性能状態Ｐを直接的には高めない。要求ノードに適用可能な使用率ベースの性能制御は、応答ノードがボトルネックである場合に、全体的なシステム性能を脆弱なままにしてしまう。
【００１１】
応答ノードにおけるコヒーレントアクティビティは、ノードがアイドル状態にあるにもかかわらずプローブ要求に応答し得るままであるという理由で、ノードそれ自身の使用率の増大（ノードの実行ストリームに基づく）には貢献しない。加えて、ノードの実行ストリームはプローブ応答とは完全に無関係であり得るので、応答ノードにおけるコヒーレントアクティビティは、通常は性能状態の高まりをトリガーする更に高い実行使用率をもたらさない。応答ノードが低性能状態にあり且つ多数の要求ノードによってプローブされる場合、応答ノードのクロック周波数に依存するプローブ応答能力（プローブ帯域幅）が性能ボトルネックとなって、要求処理ノード上で実行中のアプリケーションスレッドに関する性能低下の原因になり始めることがある。従って、応答処理ノードのプローブ帯域幅が不十分であるシナリオを識別し、また応答ノードのより高い性能状態への迅速で且つ制御可能な移行によって帯域幅の不足に対処することが有益である。一旦プローブアクティビティのバースト(burst of proving activity)が終了し、そして追加の帯域幅がもはや必要でなくなると、応答ノードは、その実行使用率によって指定される先行する性能状態に戻されてよい。
【００１２】
潜在的なプローブ応答ボトルネックに対処する１つの手法は、オペレーティングシステム（ＯＳ）又はシステムデバイスの高レベルなソフトウエア操作がプロセッサＰ状態を適切に調節し得るシステムにおけるソフトウエアベースの解決法である。１つのソフトウエアベースの解決法は、ＯＳ又は高レベルなソフトウエアがプロセッサＰ状態をより頻繁に再評価することを必要とし（アクティビティのバーストに適切に応答するために）、従ってこの再評価のためにプロセッサを任意のアプリケーションと共により頻繁にウェイクアップさせる。この手法は、そのような頻繁な再評価が不要なアプリケーションに対しても、電力消費の増大をもたらしかねない。ＯＳ又は高レベルな挙動をより洗練されたものにし且つアプリケーション不変(application-invariant)でなくすることは、アイドルハンドラ又はルーチン（Ｐ状態再評価が通常は生じる）における追加的なオーバヘッドをもたらし、これに伴い電力消費の増大をもたらす。概して、ソフトウエアベースの解決法の細かさは、ハードウエアベースの手法に匹敵せず、プローブアクティビティの開始及びプローブアクティビティの終了の両方を迅速に識別することはできない。プロセッサは、追加的な時間に対してより高い性能状態に置かれると余分な電力消費をもたらし性能／ワットを低下させるという理由で、そのような状態に置かれるべきではないので、後者（プローブアクティビティの終了）は、電力節約のために識別することが等しく重要である。
【００１３】
別の解決法は、全ての要求ノード及び応答ノードに対して共有される電圧／クロック水準を提供するハードウエアベースの解決法である。そのようなハードウエア構成は、要求ノード（コア）がその周波数を高くする場合に応答ノード（コア）の周波数を高める。応答ノードの遅い応答は、要求ノード（コア）の使用率の増大の原因になる。従って、要求ノードの性能状態を制御しているソフトウエアは、要求ノードの性能状態を高めることになり、また応答ノード性能状態も高められることになり（共有されている周波数及び電圧水準に起因して）、応答コアのプローブ帯域が最終的に増大する。しかし、この手法は、携帯電話又はウルトラモバイルの市場区分における最も典型的な種類のワークロードである単一の又は少数のノード（コア）上でのみアプリケーションが実行中である状況においても、多重コアプロセッサで余分な電力を消費する。更に、ソフトウエアは通常、要求ノード（コア）の使用率増大に起因する更に高いクロック周波数に対する必要性に、典型的には数百マイクロ秒から数ミリ秒の範囲にある時間インターバルでは即座には応答せず、このインターバルでの性能低下をもたらす可能性がある。
【００１４】
そこで、本発明の実施形態においては、各処理ノードがそのプローブアクティビティを追跡する。プローブアクティビティのレベルがスレッショルドを超えると、処理ノードの性能状態は、最低性能フロア、即ち最低Ｐ状態限界(MinPstateLimit)に移行させられて、プローブアクティビティ帯域に対して増大された要求に対処する。関連するヒステリシスを差し引かれたスレッショルドをプローブアクティビティが下回った後に、処理ノードは、その先行するＰ状態が最低Ｐ状態限界よりも低い（性能の観点から）状況において、その先行する性能状態（Ｐ状態）に戻る。尚、幾つかの実施形態においては、ヒステリシス値はゼロであってよく、また他の実施形態においては、一定値又はプログラム可能な値であってよい。
【００１５】
図２のフローチャートは、本発明の実施形態に従いプローブ制御論理１０３（図１参照）において動作し得る例示的な決定処理を示している。ステップ２０１では、処理ユニットが最低Ｐ状態限界よりも低い性能状態にあるかどうかをノードが決定する。処理ユニットが最低Ｐ状態限界よりも低い状態にない場合には、当座の性能状態はプローブアクティビティを取り扱うのに十分であり、フローはステップ２０１内にとどまる。当座の性能状態が最低Ｐ状態限界よりも低い場合には、ステップ２０３においてノードはプローブアクティビティを追跡する。ステップ２０５においてプローブアクティビティがスレッショルドよりも大きい場合には、ノードはステップ２０７において性能状態を最低Ｐ状態限界に移行させ、そしてステップ２０８においてプローブアクティビティの追跡を継続する。尚、性能状態を調節する制御論理は、図示の簡素化を目的として、プローブ制御論理１０３の一部であることが仮定されている。幾つかの実施形態においては、性能状態を調節する制御論理は、プローブ制御論理とは別であってよい。電圧及び周波数を用いて処理ノードの性能状態を制御することは、当該分野においてよく知られており、ここでは詳細には説明しない。ヒステリシス因子を差し引いたスレッショルドをプローブアクティビティがまだ超えている場合には、ノードは最低Ｐ状態限界にとどまりプローブアクティビティに対処する。しかし、ステップ２０９において、ヒステリシス因子を差し引いたスレッショルドを下回るレベルにプローブアクティビティが戻った場合には、ノードは、ステップ２１１において、先行する性能状態（ステップ２０１及び２０３における）が最低Ｐ状態限界よりも低かったかどうかを決定する。そうである場合には、ステップ２１３においてノードは先行するより低い性能状態に移行し、次いでステップ２０１に戻って、スレッショルドレベルを上回るプローブアクティビティ増大に対処するのに当座の性能状態が適切であるかどうかを決定する。尚、処理ノード使用率因子に基づくソフトウエア（又はハードウエア）によって管理される通常フローによって処理ノードの当座の性能状態が最低Ｐ状態限界以上に高められてしまっている場合には、ステップ２１１において、より低い性能状態への移行は生じない。
【００１６】
図２に示される実施形態は、最低Ｐ状態限界の性能状態によって対処される１つのプローブ性能スレッショルドのみを含む。最悪の場合のプローブ帯域幅要求を満たすために、最低Ｐ状態限界よりも高い任意の性能状態（Ｐ状態）が想定される。しかし、他の実施形態は、プローブ帯域幅に関連する２つ以上のスレッショルドを有することができる。より大きなプローブ帯域幅の要求は、プローブ帯域幅限定に対処するためにより高い動作Ｐ状態を必要とする。表１はプローブ帯域幅に対する異なる要求に対応する３つの性能状態（Ｐ状態）を有する実施形態を示している。
【００１７】
【表１】
2013510376.tif 000003
【００１８】
Ｐ状態に対して、Ｐｍ＞Ｐｎ＞Ｐｋである。性能の観点からは、ＰｒｂＡｃｔＭ＞ＰｒｂＡｃｔＮ＞ＰｒｂＡｃｔＫである。ヒステリシス値ＨｙｓｔＭ、ＨｙｓｔＮ、及びＨｙｓｔＫは同一であってよく、あるいは各スレッショルドに対して異なっていてよい。ヒステリシス値はスレッショルドと共に設定可能であってよい。
【００１９】
プローブアクティビティが（ＰｒｂＡｃｔＭ−ＨｙｓｔＭ）を上回り続けている限り、処理ノードはＰ状態Ｐｍにとどまる。一旦プローブアクティビティが（ＰｒｂＡｃｔＭ−ＨｙｓｔＭ）を下回り且つ先の性能状態（プローブアクティビティの増大の前）がＰｍよりも低い場合には、処理ノードはより低い性能状態に移行する。尚、処理ノード使用率因子に基づくソフトウエア（又はハードウエア）によって管理される通常フローによって処理ノードの当座の性能状態がＰｍ以上に高められてしまっている場合には、より低い性能状態への移行は生じない。
【００２０】
図３Ａ及び３Ｂは２つ以上のプローブ性能スレッショルドを伴う実施形態に対する状態間移行を表しており、各性能スレッショルドは異なるレベルのプローブアクティビティに対応している。状態移行はプローブ制御論理１０３（図１）内に実装されていてよい。一旦プローブアクティビティがスレッショルドの１つを超えると、応答ノードは、プローブアクティビティのレベルに対応するＰ状態に移行させられる。それにより、アイドル状態にある応答ノードが、より高い性能状態（Ｐ状態）が必要とされる増大されたプローブアクティビティの期間を除いてずっと最低性能状態（又はより適切には保持(retention)状態）に確実にあるようにすることが支援される。図３Ａを参照すると、周波数の観点からは、Ｐｍ（３０１）＞Ｐｎ（３０３）＞Ｐｋ（３０５）＞当座のＰ状態（３０７）であると仮定している。そして、Ｐ状態３０７にある間にプローブアクティビティにおける高いプローブアクティビティ（Ｐｒｏｂ＿Ａｃｔ）レベルへの増大が生じると、ノードは、以下に説明されるプローブアクティビティのレベルに応じてＰ状態Ｐｋ、Ｐｍ、又はＰｎの１つにエンターしてよい。以下は、ノードが現在は低電力状態３０７にあると仮定した場合における処理ノードの移行上昇(transition-up)を説明している。
（Ｐｒｏｂ＿Ａｃｔ＞ＰｒｂＡｃｔＭ）であれば、Ｐ状態＝Ｐｍ
それ以外の場合において、（Ｐｒｏｂ＿Ａｃｔ＞ＰｒｂＡｃｔＮ）であれば、Ｐ状態＝Ｐｎ
それ以外の場合において、（Ｐｒｏｂ＿Ａｃｔ＞ＰｒｂＡｃｔＫ）であれば、Ｐ状態＝Ｐｋ
【００２１】
また、ある実施形態においては、図３Ｂに示されるように、ノードは、Ｐ状態Ｐｎ３０３又はＰｋ３０５にある場合、次のより高いレベルのＰ状態まで移行してよい。Ｐ状態Ｐｎ３０３にある間にノードがプローブアクティビティの増大を検出すると（Ｐｒｏｂ＿Ａｃｔ＞ＰｒｂＡｃｔＭ）、ノードは３０６を介してＰ状態Ｐｍ３０１に移行する。Ｐ状態Ｐｋ３０５にある間にノードがプローブアクティビティの増大を検出すると（ＰｒｂＡｃｔＭ＞Ｐｒｏｂ＿Ａｃｔ＞ＰｒｂＡｃｔＮ）、ノードは移行３０８を介してＰ状態Ｐｎ３０３に移行する。Ｐ状態Ｐｋ３０５にある間にノードがプローブアクティビティの増大を検出すると（Ｐｒｏｂ＿Ａｃｔ＞ＰｒｂＡｃｔＭ）、ノードは移行３１０を介してＰ状態Ｐｍ３０１に移行する。
【００２２】
ある実施形態における追加的な態様は、プローブアクティビティがスレッショルドを下回る場合にアイドルノードのＰ状態を最低Ｐ状態に下げることである。処理ノードのＰ状態を使用率ベースで設定するように動作するソフトウエア又はハードウエアが、準最適に高いＰ状態（最低Ｐ状態限界よりも高い）に残ってしまっている場合、それでもなおノードが電力を節約しながら非バーストの(non-bursty)又はより低いレベルのプローブアクティビティに応答することができるように、プローブ中のＰ状態制御機能は、ノードＰ状態をＰｍｉｎ（最低動作Ｐ状態）又はより適切には保持電力状態に下げることができる。プローブアクティビティ（Ｐｒｏｂ＿Ａｃｔ）のレベルの低下に基づく図３Ａに示される移行下降(transitioning down)が以下に説明される。
（Ｐｒｏｂ＿Ａｃｔ＜（ＰｒｂＡｃｔＭ−ＨｙｓｔＭ）且つＰｒｏｂ＿ＡＣＴ＞ＰｒｂＡｃｔＮ且つ当座のＰ状態＜Ｐｍ）であれば、Ｐ状態＝Ｐｎ
それ以外の場合において、（Ｐｒｏｂ＿Ａｃｔ＜（ＰｒｂＡｃｔＮ−ＨｙｓｔＮ）且つＰｒｏｂ＿ＡＣＴ＞ＰｒｂＡｃｔＫ且つ当座のＰ状態＜Ｐｎ）であれば、Ｐ状態＝Ｐｋ
それ以外の場合において、（Ｐｒｏｂ＿Ａｃｔ＜（ＰｒｂＡｃｔＫ−ＨｙｓｔＫ）且つ当座のＰ状態＜Ｐｋ）であれば、Ｐ状態＝当座のＰ状態
【００２３】
同様に、図３Ｂに示されるように、ある実施形態においては、ノードは、１つのＰ状態３０３又は３０５からプローブアクティビティにおける低下を反映する適切なＰ状態に移行下降してよい。例えばＰ状態Ｐｎ３０３にあるノードは、プローブアクティビティに応じてＰ状態Ｐｋ３０５又は当座のＰ状態３０７のいずれかに移行してよい。（Ｐｒｏｂ＿Ａｃｔ＜ＰｒｂＡｃｔＮ−ＨｙｓｔＮ且つＰｒｏｂ＿ＡＣＴ＞ＰｒｂＡｃｔＫ）になるようにプローブアクティビティが低下する場合には、ノードはＰ状態Ｐｋ３０５に移行する。Ｐ状態Ｐｎ３０３にあるプローブアクティビティがＰｒｏｂ＿Ａｃｔ＜ＰｒｂＡｃｔＫ−ＨｙｓｔＫになるように低下する場合には、ノードは当座のＰ状態３０７に移行する。同様に、Ｐ状態Ｐｋ３０５にあるプローブアクティビティがＰｒｏｂ＿Ａｃｔ＜ＰｒｂＡｃｔＫ−ＨｙｓｔＫになるように低下する場合には、ノードは当座のＰ状態３０７に移行する。
【００２４】
このように、制御論理は、当座のプローブアクティビティに基づいて上げるか下げるかして電力状態を移行させて、当座の電力状態をプローブアクティビティニーズに適合させるよう試行することになる。それにより、利用可能な電力の節約を達成するよう努めるながら応答ノードにおけるボトルネックを回避することが支援される。
【００２５】
別の実施形態においては、ノードがアイドルであり且つそのプローブアクティビティがスレッショルドを超えている場合、プローブアクティビティは、ノードのキャッシュシステムのフラッシュ(flushing)（書き戻し失効化及び無効化(write-back invalidate and disabling)）をトリガーすることができる。この手法は、多重ノードシステムに対して又は比較的短いキャッシュフラッシュ時間を伴うノードに対して有用であろう。フラッシュすることの決定は、スレッショルドを超えるプローブアクティビティ（プローブしているキャッシュ上で応答ノードによって消費される電力が、キャッシュシステムをフラッシュすることに付随する電力よりも大きくなることを意味する）等の因子に基づいていてよく、そしてノードは十分な時間アイドルであり続けると予測される。アイドルネス(idleness)を予測するする手法は、内部追跡器(internal trackers)又は典型的にはノースブリッジ内にある（又はより一般的には、プロセッサコアではなく、典型的にはメモリ制御器及び電力管理、等の機能を含むプロセッサ集積回路（アンコア(Uncore)）の部品内にある）アクティビティ追跡器に基づいて予測を行うことを含む。加えて、Ｉ／Ｏサブシステムアクティビティ予測、例えば割り込み、入ってくる又は出てゆく転送、及びタイマーチック(timer-ticks)もまた、アイドルネスの予測において利用されてよく、また別の集積回路（例えばサウスブリッジ）に基づいて利用されてもよい。
【００２６】
図４はプローブアクティビティ及びノードアイドルネス予測に基づいてキャッシュフラッシュするための実施形態の例示的なフロー図を示している。ステップ４０１において処理ノードがアイドル状態にある場合には、処理ノードはステップ４０２においてプローブアクティビティを追跡し、そしてステップ４０３において、プローブスレッショルドよりも大きいプローブアクティビティをノードがチェックする。次いでステップ４０５においては、処理ノードアイドルネスがアイドルスレッショルドよりも大きいと予測されるかどうかをフローがチェックする。予測される場合には、ステップ４０７において処理ノードは、そのキャッシュをフラッシュし、そのキャッシュシステムを無効化し、保持電圧又は他の適切な電力節約電圧を印加し、そしてシステムはノードをプローブすることを停止する。一方、ノードアイドルネスの予測された期間がスレッショルドを下回る場合、キャッシュフラッシュすることは、電力を節約せず又は十分な電力を節約しないのでそれほど魅力的ではなく、Ｐ状態制御アルゴリズム（上述した）がステップ４０９で適用されてよく、そしてノードはプローブアクティビティの追跡を継続し、必要であればプローブアクティビティのレベルに従ってＰ状態を調節する。
【００２７】
プローブアクティビティを追跡するための１つの実施形態は、ここではインフライトキュー（ＩＦＱ）と称される図５に示されるキュー構造を利用する。ＩＦＱ構造５００は、プローブアクティビティのレベルを論理的に反映する多重エントリアレイである。任意のトランザクション（コヒーレント又は非コヒーレント）５０１は、ＩＦＱの利用可能なエントリ内へと置かれ、そして退去時点(eviction point)までそこにある。トランザクションは、応答ノードによる応答の後に、５０３で示されるようにＩＦＱから割り当てを解除される(de-allocated)（退去させられる）。応答は、データ移動を含むトランザクションのためのデータフェーズ（即ち処理ノードから共有メモリへの又は共有メモリから処理ノードへのデータ移動）、又はデータ移動を伴わないトランザクションのための応答後フェーズ（即ちローカルキャッシュ内又は処理ノードのメモリ内のキャッシュを失効化するための要求）のいずれかであってよい。ＩＦＱ構造は、複数の処理ノード間で共有されてよく、又は処理ノード毎に例示化されて(instantiated)いてよい。プローブアクティビティのレベルは、アクティブなＩＦＱエントリ（完了保留中の未決のコヒーレント要求が入っているエントリ）の数によって表される。
【００２８】
１つの実施形態においては、ノード（又は制御機能があるどこでも）は、アクティブなＩＦＱエントリの数を単一のスレッショルド５０２と比較する。尚、制御機能はノードの内部又は外部にあってよい。ノードの外部である場合には、上述したようなダイのアンコア部分内の同じダイ上にあってよい。エントリの数がスレッショルドを超える場合には、より高いＰ状態（最低Ｐ状態限界）への移行が生じる。ヒステリシスを差し引かれたスレッショルドよりも低いレベルにアクティブＩＦＱエントリの数が落ちた後に、最低Ｐ状態限界性能フロアはキャンセルされ、そして処理ノードは、より低い電力で動作しながらより小さいプローブ帯域幅が対処され得る当座のＰ状態へと戻される。
【００２９】
他の実施形態は図６に示される多重レベルＩＦＱベースの手法を利用してよく、ここでは、各レベルは、異なるプローブ帯域幅に付随する関連する最低性能レベル（Ｐ状態スレッショルド）を有する。例えば１６エントリＩＦＱ構造６００は、プローブ帯域幅における増大したニーズを表すＰ状態Ｐｍ及びＰｋにそれぞれ対応する２つのスレッショルド６０２及び６０４を有していてよい。状態間移行は、図３Ａ及び３Ｂに示されるように達成されてよい。
【００３０】
他の実施形態においては、プローブアクティビティを追跡するのに異なる手法が用いられてよい。例えば、プローブ要求に対して隠された、利用可能でない、又は追跡困難な完了フェーズを有するシステムにおいては、追跡手法は、異なるインクリメント速度及びデクリメント速度を伴うプローブカウントメカニズムに基づいていてよい。例えば図７を参照すると、新たなプローブ要求７０３が処理ノードに送られるたびに（ＣＮＴ＝ＣＮＴ＋ｗ＿ｉｎｃ）でインクリメントされるカウンタ７０１が示されている。カウント値は、処理ノードの特定のＰ状態に関連するプローブ速度（帯域幅）に合致する設定可能な時間インターバル（許容可能なインターバル(IntervalTolerated)）毎に（ＣＮＴ＝ＣＮＴ−ｗ＿ｄｅｃ）でデクリメントされる。ある実施形態においては、設定可能な時間インターバルは、特定のＰ状態に関連する最大プローブ帯域幅に合致する。このように、実際の応答（データ移動、データ移動を伴わないトランザクションのための応答フェーズ）が追跡されない場合であっても、プローブ要求が特定の速度でサービスされているものと仮定される。
【００３１】
任意の新たなプローブ要求はカウンタを（ＣＮＴ＝ＣＮＴ＋ｗ＿ｉｎｃ）でインクリメントし、ここでｗ＿ｉｎｃはカウンタの現在値に加えられる設定可能な重みである。幾つかの実施形態においては、インクリメント／デクリメント値は設定可能であってよく、またそれらの設定は、顧客、又はより高いレベルのソフトウエアの選択（性能バイアスされた、バランスされた、又は電力バイアスされた）に依存していてよい。性能バイアスされた設定に対しては、ｗ＿ｉｎｃ（インクリメント重み）はより大きな値に設定され、またｗ＿ｄｅｃ（デクリメント重み）はより小さい値に設定される。電力節約バイアスされた設定に対しては、これらのパラメータは逆のやり方で設定されてよい。また、許容可能なインターバル(IntervalTolerated)値は、顧客又は高レベルソフトウエアの性能／電力の選択に依存して設定されてよい。カウンタ値は、プローブアクティビティのレベルを表し、そしてプローブアクティビティスレッショルドと比較されて最適Ｐ状態を導き出す。より大きなカウンタ値は、当座のＰ状態が満たすことのできない増大されたプローブ帯域幅に合致するために、より高い動作Ｐ状態を必要とする。
【００３２】
ワークロード均一性を適切には表さず且つカウンタの過インクリメント及び性能／ワットの観点からは準最適であろう性能状態（Ｐ状態）の選択をもたらすプローブアクティビティのバーストを除去する(filter out)ために、ローパスフィルタ（ＬＰＦ）７０５が用いられてよい。特定の実施形態によると、設定可能な数（１〜Ｎ）のプローブ要求が、設定可能なインターバルＴの間に追跡される。プローブ要求の過カウンティングを、それらの出現が時間インターバルの間の何らかの設定可能な限界を超える場合に回避するために、ローパスフィルタは種々の方法で設定されてよい。例えばローパスフィルタは、インターバルＴの間のｎ（１≦ｎ≦Ｎ）個以下のプローブイベントを追跡するように実装されてよい。従って、プローブイベントの数がｎより大きい場合には、カウンタはｎだけをカウントする。ローパスフィルタは、フィルタリングされたプローブ要求をカウンタに供給する。
【００３３】
代替的には、ローパスフィルタ７０５は、多重インターバルＴにわたるプローブイベントの数を平均化するように実装されてよく、その結果、特定のインターバルＴが高バーストのアクティビティを有してしまったとしても、その高バーストは、多重インターバルにわたる平均化によって制限される。平均化は例えば移動平均として実装されてよい。１つの実施形態においては、プローブ要求は、移動平均よりも高速度ではカウンタに供給されない。
【００３４】
言うまでもなく、ローパスフィルタの実装は、重みｗ＿ｉｎｃがどのように決定されるかに影響するであろう。従って、例えば多数の時間インターバルにわたる平均化が用いられる場合には、重みは時間インターバルを反映するようにスケーリングされてよい。他の実施形態においては、フィルタリングせずにプローブ要求が直接カウンタに供給されてよい。
【００３５】
ここでの実施形態の態様は、図１に示されるプロセッサに関連する揮発性又は不揮発性のメモリに記憶されるソフトウエアにおいて部分的に実装されてよい。ソフトウエアはコンピュータシステムの不揮発性部分に記憶されていてよく、揮発性メモリにロードされてよく、そして実行されてよい。このように、本発明の実施形態は、不揮発性メモリ等の機械可読媒体によって提供される機械実行可能命令内で具現化される特徴又は処理を含んでいてよい。そのような媒体は、マイクロプロセッサ又は更に一般的にはコンピュータシステム等の機械によってアクセス可能な形態にあるデータを記憶する任意のメカニズムを含んでいてよい。機械可読媒体は、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光学的記憶媒体、フラッシュメモリデバイス、テープ、又は他の磁気的、光学的、若しくは電子的な記憶媒体、等の揮発性メモリ及び／又は不揮発性メモリを含んでいてよい。そのような記憶されている命令は、命令がプログラムされる汎用又は専用のプロセッサに本発明の処理を実行させるために用いられ得る。
【００３６】
尚、本発明の幾つかの処理は、プログラムされた命令に応答するハードウエア動作を含んでいてよい。代替的には、本発明の処理は、動作を行う状態マシン等のハードワイヤード論理を含む特定のハードウエアコンポーネントによって、又はプログラムされたデータ処理コンポーネント及びハードウエアコンポーネントの任意の組み合わせによって行われてよい。このように、本発明の実施形態は、ここに説明されるようなソフトウエア、データ処理ハードウエア、システム実装のデータ処理方法、及び種々の処理動作を含んでいてよい。
【００３７】
以上のように、種々の実施形態が説明されてきた。尚、ここに記載される本発明の説明は例示的なものであり、以下の特許請求の範囲に記載される本発明の範囲を限定することが意図されるものではない。以下の特許請求の範囲に記載される本発明の範囲から逸脱することなしに、ここに記載される説明に基づいて、ここに説明される実施形態の変形及び修正がなされてよい。
【図１】
2013510376.tif 000004
【図２】
2013510376.tif 000005
【図３Ａ】
2013510376.tif 000006
【図３Ｂ】
2013510376.tif 000007
【図４】
2013510376.tif 000008
【図５】
2013510376.tif 000009
【図６】
2013510376.tif 000010
【図７】
2013510376.tif 000011
【国際調査報告】
2013510376.tif 000012
2013510376.tif 000013
2013510376.tif 000014