(58)【調査した分野】(Int.Cl.,DB名)
前記複数の処理ノードの各々は、複数の動作点のうち1つの動作点で動作するように構成されており、前記複数の動作点の各々は、クロック周波数および供給電圧を有しており、前記電力管理ユニットは、第1の検出温度が第1の温度閾値以上であるとの指示を受信することに応じて、前記複数の処理ノードのうち前記1つの処理ノードに対して第1の動作点限界を設定するよう構成されており、さらに、第2の検出温度が第2の温度閾値以上であるとの指示を受信することに応じて、前記複数の処理ノードの各々に対して第2の動作点限界を設定するように構成されている、請求項1のシステム。
前記第1の動作点限界は、最大動作周波数よりも低い第1のクロック周波数を有する動作点と、最大供給電圧よりも低い第1の供給電圧とを有している、請求項2のシステム。
前記第2の動作点限界は、前記第1のクロック周波数よりも低い第2のクロック周波数を有する動作点と、前記第1の供給電圧よりも低い第2の供給電圧とを有している、請求項3のシステム。
前記電力管理ユニットは、前記複数の処理ノードのうち1つ以上のさらなる処理ノードの動作点に基づいて、前記複数の処理ノードのうち所与の処理ノードに対して前記ローカルTDP限界を設定するように構成されている、請求項1のシステム。
前記電力管理ユニットは、前記所与の処理ノードに物理的に隣接して配置された第2の処理ノードが待機状態に移行したことに応じて、前記所与の処理ノードに対して前記ローカルTDP限界を上昇させるように構成されている、請求項6のシステム。
前記複数の処理ノードのうち1つ以上の処理ノードはプロセッサコアであり、前記複数の処理ノードのうち少なくとも1つの処理ノードはグラフィック処理ユニット(GPU)である、請求項1のシステム。
第1の検出温度が第1の温度閾値よりも高いとの指示を受信することに応じて、複数の処理ノードのうち1つの処理ノードに対して、前記複数の処理ノードのうち他の処理ノードの周波数から独立した第1の周波数限界を設定するステップであって、前記第1の検出温度は前記複数の処理ノードのうち前記1つの処理ノードと関連しているステップと、
第2の検出温度が第2の温度閾値よりも高いとの指示を受信することに応じて、前記複数の処理ノードの各々に対して第2の周波数限界を設定するステップであって、前記第2の検出温度は、前記複数の処理ノードの何れかと関連しているステップと、
所与の処理ノードが、少なくとも2つの種類の作業負荷のうち第1の種類の作業負荷を処理していることを判定したことに応じて、前記所与の処理ノードのオーバークロックを引き起こすステップと、を含み、
前記複数の処理ノードごとの前記第1の温度閾値は、対応するローカル熱設計電力(TDP)限界に基づいており、前記第2の温度閾値は、グローバルTDP限界に基づいており、電力管理ユニットが、動作中に、前記複数の処理ノードごとの前記ローカルTDP限界を変更するステップをさらに含み、前記グローバルTDP限界は、動作中、固定されており、
前記第1の種類の作業負荷は、計算限定された作業負荷であり、前記所与の処理ノードが第2の種類の作業負荷を処理していることを判定したことに応じて、前記所与の処理ノードをより低い動作点に設定するステップをさらに含み、前記第2の種類の作業負荷は、メモリ限定の作業負荷である、
方法。
前記複数の処理ノードの各々は、複数の動作点のうち1つの動作点で動作するように構成されており、前記複数の動作点の各々は、クロック周波数および供給電圧を有している、請求項13のコンピュータ可読記憶媒体。
第1の動作点限界は前記第1の周波数限界を有しており、前記第1の周波数限界での第1のクロック周波数は、特定の最大動作周波数よりも低く、前記第1の動作点限界は、最大供給電圧よりも低い第1の供給電圧をさらに有しており、第2の動作点限界は、前記第1のクロック周波数よりも低い第2のクロック周波数を有する動作点と、前記第1の供給電圧よりも低い第2の供給電圧とを有している、請求項14のコンピュータ可読記憶媒体。
前記プログラム命令は、前記所与の処理ノードに物理的に隣接して配置された第2の処理ノードが待機状態に移行したことに応じて、前記所与の処理ノードに対してローカルTDP限界を上昇させるようにコンピュータシステムに実行させ、さらに、前記複数の処理ノードのうち選択された処理ノードのローカルTDP限界が、前記複数の処理ノードのうち他の処理ノードのローカルTDP限界よりも大きい場合には、前記複数の処理ノードのうち前記選択された処理ノードにオーバークロックを引き起こすようにコンピュータシステムに実行させる、請求項13のコンピュータ可読記憶媒体。
【発明を実施するための形態】
【0010】
ここで、マルチコアプロセッサのノード当たりの熱制御(PNTC)の方法および装置を詳細に説明する。この説明は、複数のプロセッサコア(グラフィック処理ユニットを含んでもよい)を有するプロセッサを対象とするが、本明細書において説明される様々な方法および装置の実施形態は、複合機能ユニットを有する任意の集積回路(IC)に対して、より幅広く適用されてもよい。したがって、本明細書における様々な方法および装置の実施形態の説明は、例示を意図するものではあるが、限定するものではない。本開示の目的として、処理ノードは、汎用コンピュータプロセッサのプロセッサコア、グラフィック処理ユニットまたは他の種類の処理回路網などの、処理を行う任意の種類の機能ユニットとしても定義されてもよい。さらに、本明細書に説明される方法および装置は、複数の異なる種類の処理ノードを同じICダイ上に有するICに適用されてもよい。
【0011】
PNTCの使用により、グローバルに適用されるハードウェア熱制御(HTC)の毒点滴な使用よりも、プロセッサまたは他のICのワット当たりの性能を、より向上することができる場合がある。例えば、プロセッサは、35℃の周囲温度を基に、IC全体用にグローバル熱設計電力(TDP)限界を有するように設計される場合がある。すなわち、ダイ上の温度が所定の温度閾値に到達したときに、TDP限界に到達する場合がある。より優れた性能は、例えば28℃という周囲温度に基づきTDP限界を使用し、プロセッサを動作することで得ることができる。これは、低い周囲温度での周囲空気が、35℃という、より高い周囲温度のときと比べて、より高い割合で熱を消散するので、プロセッサが、28℃の周囲温度で所定の温度閾値に到達するためには、より高いクロック周波数および/または動作電圧で動作しなければならないという事実によるものである。したがって、ローカル(局所的)な(例えば、コア当たりの)TDP限界は、より低い周囲温度の状況に基づき設定されてもよい。さらに、ローカルTDP限界は、動作中に変化してもよい。例えば、起動中のプロセッサコアのローカルTDP限界は、1つ以上の他のプロセッサコアが未起動状態にあるときに、上昇するようにしてもよい。本開示の目的として、グローバル(大域的)なTDP限界は、ICが格付けされる電力消散最大量として、IC全体に適用される限界として、定義されてもよい。グローバルTDP限界は、所与のIC設計に対して固定されてもよい。ローカルTDP限界は、プロセッサコア、グラフィック処理ユニットまたは相当量の熱を発生し得る任意の他の機能ユニットを含む、コアまたは処理ノード当たりの方式で処理ノード/コアに適用されるTDP限界と定義されてもよい。さらに、所与の処理ノード用のローカルTDP限界は、他の処理ノードの状態に基づき変更してもよい。
【0012】
本開示の目的のための動作点は、クロック周波数として定義されてもよく、動作電圧(例えば、機能ユニットに提供される供給電圧)を含んでもよい。所与の機能ユニットの動作点を上昇することは、そのユニットに提供されるクロック信号の周波数を上昇することとして定義されてもよく、かつその動作電圧の上昇を含んでもよい。同様に、所与の機能ユニットの動作点を低減することは、クロック周波数を低減することと定義されてもよく、かつ供給電圧を低減させることを含んでもよい。動作点を制限することは、クロック周波数および/または供給電圧を、特定の状況(ただし、必ずしも全ての状況の最大限界ではない)用の特定の最大値に制限することとして定義されてもよい。このように、動作点が特定の処理ノード用に制限されているとき、現在の状況用の特定値まで、クロック周波数および動作電圧で動作してもよいし、特定値未満のクロック周波数および動作電圧の値で動作してもよい。
【0013】
PNTCを使用すると、グローバルTDP限界に到達しているときに、閾値温度が、決定用に使用される温度閾値よりもわずかに低く設定されてもよい。例えば、グローバルTDP限界の閾値温度が100℃の場合、ローカルTDP限界に到達するときの決定用の温度閾値は、96℃である。プロセッサコアのそれぞれの温度は監視されてもよく、所与のコアの温度がこの限界に到達する場合、所与のコアは、第1の量によりスロットル制御されてもよい。例えば、Advanced Configuration and Power Interface (ACPI)規格に適合する実施形態では、コアは、P0状態のクロック周波数の90%までスロットル制御される(例えば、P0状態のクロックが2.0GHzのとき、コアは1.8GHzにスロットル制御される)。クロック周波数のスロットル制御に加えて、少なくとも所与のコア用には、相当する動作電圧低減も行ってよい(例えば、P0状態で動作する場合、電圧を1.1ボルトから1.0ボルトに低減する)。いくつかの実施形態では、他の実施形態が可能であり、企図されるが、他のプロセッサコアの動作点がこの動作点に制限されてもよく、この場合には、動作点は、他のコア用に変更されない。ローカル温度閾値に到達する1つのコアに応じて、全てのコアの動作点が制限される実施形態では、他のコアが、例えばP0状態または一般に高動作点で動作している場合にも、スロットル制御されてもよい。さらに、いくつかの実施形態では、プロセッサコアは、分離した、単独の電圧面に結合されてもよく、したがって、それらの動作電圧は、他のプロセッサコアから独立して制御されてもよい。他の実施形態では、プロセッサコアは、最高のローカルTDP限界を有するプロセッサコアに対する動作点に基づき設定されている動作電圧と、電圧面を共有してもよい。
【0014】
所与のコアの温度がスロットル制御後に上昇する場合、グローバルスロットル制御(HTC)が起こることがあり、全てのプロセッサコアが第2の動作点限界にスロットル制御される。より詳細には、これは、プロセッサのICダイ上のいずれかの点における温度が、グローバルTDP限界に相当するグローバル閾値温度に到達するときに発生することがある。これが発生すると、全てのプロセッサコアのクロック周波数は、スロットル制御を介して大幅な低減を受け、動作電圧もまた相応に低減される。例えば、ACPIに準拠した一実施形態では、プロセッサコアはスロットル制御され、そのクロック周波数をP3状態の1.0GHz(本実施形態におけるP0状態のクロック周波数が2.0GHzの場合)に制限されることがある。同様に、動作電圧は、全てのコア用に制限されるように、低減され得る。
【0015】
所与のプロセッサコアのローカルTDP限界は、可変であってもよく、他のプロセッサコアの状態により増減し得る。例えば、クアッドコアプロセッサでは、2つのコアがパワーゲート(例えば、パワーダウン)されるとき、第3のコアはスリープ状態にあるが、他のコアは、このコアにより発生する一部の熱を消散することがあるため、残りのコアのTDP限界が上昇する場合がある。コアのローカルTDP限界は、より低い周囲温度(例えば、グローバルなTDP限界用の35℃に対し28℃)に基づいてもよいため、オーバークロック(すなわち、相当するクロック信号を指定された周波数よりも高い周波数で運転すること)を可能にするほどに上昇する場合がある。例えば、P0状態のクロック周波数が2.0GHz(したがって、最大特定クロック周波数)の場合におけるACPIに準拠した一実施形態では、高いローカルTDP限界を持つコアは、2.0GHzよりも高い周波数(例えば、3.6GHzで)にクロックされる。このことは、とりわけ計算限定された、いくつかの処理作業負荷のより優れた性能につながる。計算限定された作業負荷とは、計算集約的な処理作業負荷として定義されてもよく、(ある場合は)メインメモリへの低頻度のアクセスで定義され得る。しかしながら、高ローカルTDP限界によって所与のプロセッサコアのオーバークロックが可能であっても、全ての場合において必要的に実行されるわけではないことに注意されたい。例えば、プロセッサの作業負荷がメモリ限定である場合(すなわち、頻繁にメモリへのアクセスが行われており、対応するパイプラインの停止を引き起こす場合)、オーバークロックは、典型的にはいかなる性能の向上も提供しない。したがって、高ローカルTDP限界を有するプロセッサコアは、メモリ限定の作業負荷を処理する場合には、より低いクロック周波数で動作し得る。
【0016】
(電力管理ユニット付きのプロセッサ)
図1は、メモリに結合した集積回路(IC)の一実施形態の構成図である。ディスプレイ3およびディスプレイメモリ300に加えて、IC2およびメモリ6は、本例において少なくともコンピュータシステム10の一部を形成する。記載の実施形態では、IC2は、多数の処理ノード11(例えば11−1、11−2など)を有するプロセッサである。本明細書に記載される方法は、分離した、単独のICダイ上に(シングルコアまたはマルチコアでもよい)マルチプロセッサを実装する多数のプロセッサコンピュータシステムなど、他の配置に適用されてもよいことに注意されたい。マルチコアの実施形態では、処理ノード11は互いに類似(すなわち、同質のマルチコア)してもよい。または、1つ以上の処理ノード11は、他方とは異なって(すなわち、異質のマルチコアであって)もよい。
【0017】
処理ノード11は、それぞれ1つ以上の実行ユニット、キャッシュメモリ、スケジューラおよび分岐予測回路などを含んでもよい。さらに、処理ノード11のそれぞれは、メモリ6へのアクセス要求をアサートする(有効にする)ように構成されており、コンピュータシステム10のメインメモリとして機能することができる。上記の要求は、読出し要求および/または書込み要求を含んでもよく、ノースブリッジ12により、各プロセッサコア11から初期に受信することができる。メモリ6へのアクセス要求は、実施形態に記載のメモリコントローラ18を介して経由してもよい。
【0018】
各プロセッサコア11は、記載の実施形態のノースブリッジ12に結合されている。ノースブリッジ12は、メモリおよび様々な周辺機器へのインターフェースを含む処理ノード11のそれぞれに対して、多種多様なインターフェース機能を提供してもよい。ノースブリッジ12は、処理ノード11のそれぞれに結合されていることに加えて、入力/出力(I/O)インターフェース13、グラフィック処理ユニット(GPU)14、メモリコントローラ18、位相同期回路(PLL)4および電圧調整器5に結合されている。追加機能ユニットもまた、いくつかの実施形態に含まれてもよい。ノースブリッジ12は、コンピュータシステム10内の活動の通信ハブとして機能してもよく、処理ノード11、メモリ6(メモリコントローラ18経由)、ディスプレイ3(GPU14経由)および様々な周辺装置(I/Oインターフェース13経由)の間の通信の経路設定および調整をする。
【0019】
I/Oインターフェース13は、コンピュータシステム10のサウスブリッジデバイスとしても機能してもよい。多数の異なる種類の周辺バスがI/Oインターフェース13と結合されてもよい。この特別な例では、バスの種類は、周辺装置相互接続(PCI)バス、PCI−Extended(PCI−X)、PCIE(PCI Express)バス、ギガビットイーサネット(登録商標)(GBE)バスおよびユニバーサルシリアルバス(USB)を含む。しかしながら、これらのバスの種類は典型例であり、多くの他のバスの種類は、I/Oインターフェース13に結合されてもよい。周辺デバイスは、周辺バスのいくつかまたは全てに結合することができる。このような周辺デバイスは、キーボード、マウス、プリンター、スキャナー、ジョイスティック若しくは他の種類のゲームコントローラと、メディア記録デバイスと、外部記憶デバイスと、ネットワークインターフェースカードなどとを含む(がこれらに限定されない)。対応する周辺バスを経由してI/Oユニット13に結合され得る周辺デバイスの少なくともいくつかは、ダイレクトメモリアクセス(DMA)を用いて、メモリアクセス要求をアサートすることが可能である。これらの要求(読出しおよび書込み要求を含んでもよい)は、I/Oインターフェース13を経由してノースブリッジ12へ搬送されてもよく、またはメモリコントローラ18へ経路設定されてもよい。
【0020】
GPU14は、コンピュータシステム10のビデオ処理機能を行ってもよい。GPU14により行われるビデオ処理機能は、基本的なビデオレンダリング、ならびに3−Dグラフィックおよび他の種類の複雑なグラフィック機能を含んでもよい。GPU14により処理されるビデオ情報は、ディスプレイ3の表示用の出力でもよく、これは多数の異なる種類の表示ユニットのうちの1つであってもよい。ディスプレイ3は、フラットパネル液晶ディスプレイ(LCD)、発光ダイオード(LED)ディスプレイ、プラズマディスプレイ、陰曲線管(CRT)ディスプレイまたは任意の他の適切な種類として実装されてもよい。
【0021】
記載の実施形態では、GPU14は、表示処理用のデータを保管するディスプレイバッファを含んでもよい。表示処理用のデータは、メモリコントローラ18およびノースブリッジ12を経由して、メモリ6から読み出されてもよい。したがって、GPU14は、フレーム更新およびディスプレイバッファを充填するために、メモリ6のダイレクトメモリアクセス(DMA)用に構成されてもよい。
【0022】
記載の実施形態では、ノースブリッジ12は、以下により詳細に説明される通り、各活動レベルまたは作業負荷に基づき、処理ノード11のそれぞれの電力消費を管理するように構成された、電力管理ユニット20を含む。さらに、マルチコア(またはマルチプロセッサ)の実施形態では、電力管理ユニット20は、個々の処理ノード11の動作点を、互いに独立して設定してもよい。したがって、第1のプロセッサコア11は、第1の動作点で動作してもよく、第2のプロセッサコア11は、第1とは異なる第2の動作点で動作してもよい。GPU14は、相当量の電力を消費(かつ相当量の熱を発生)するので、その各動作点は、処理ノード11の動作点と同様の方法で、電力管理ユニット20により制御することもできる。したがって、ローカルTDP限界の設定と、処理ノード11のうちの所与の1つの動作点の管理とを対象とする以下の説明は、GPU14にも適用することができる。
【0023】
記載の実施形態における電力管理ユニット20は、熱制御ユニット21も含む。電力管理ユニット20による動作点の設定は、熱制御ユニット21により行われる動作に基づき、少なくとも一部が行われる。一実施形態では、熱制御ユニット21は、IC2がグローバルTDP電力限界(以下、グローバル電力限界と称する)内で動作しているかどうかを決定するために、処理ノード11のそれぞれ(および以下に説明される、グラフィック処理ユニット14)から受信する温度情報を監視してもよい。さらに、熱制御ユニット21は、処理コア11のそれぞれの、ローカルTDP限界(以下、ローカル電力限界と称する)を、設定および変更してもよい。例えば、4つの処理ノード11を有する実施形態の場合、すべての4つの処理ノード11が起動中で作業負荷を処理している場合には、それらの各ローカル電力限界を同じ値に設定することが可能である。しかしながら、2つの処理ノード11が起動中であるが、その他の2つが待機状態にある場合には、起動中のノードのローカル電力限界は、待機ノードのローカル電力限界が対応して低減する場合があるのとともに、上昇する場合がある。これらの両方および他の場合において、処理ノード11のローカル電力限界は、グローバル電力限界を超過しないようにされてもよい。
【0024】
熱制御ユニット21は、処理ノード11のそれぞれから温度情報を受信してもよい。受信した温度情報は、処理ノード11がそれぞれのローカル電力限界内で動作しているかを判定するために使用されてもよい。例えば、熱制御ユニット21は、所与のプロセッサコア11から報告された温度を、現行のローカル電力限界に基づく温度閾値と比較してもよい。温度が閾値温度以上の場合、電力管理ユニット20は、報告したプロセッサコア11の制限的なスロットル制御を行うことで応答してもよい。制限的なスロットル制御は、報告したプロセッサコア11用の動作クロック周波数のわずかな低減を含み、かつ、制限的な電圧低減をも含むことができる。そのプロセッサコア11の動作点は、少なくとも温度が閾値未満に低下するまで、その後しばらく制限されてもよい。動作点限界を削除する前に、さらなる熱の消散を可能にするよう、温度に対して追加の時間を設けることができる。
【0025】
いくつかの実施形態では、動作点の制限は、ノード当たりを基として行われており、温度が閾値を超過するプロセッサコア11にのみ適用する。他の実施形態では、すべての処理ノード11は、温度閾値を超過した処理コア11と同じ動作点に制限されてもよい。動作点は、処理ノード11に提供されるクロック信号の周期を制限することによって、制限されてもよい。動作点のさらなる制限は、処理ノード11に提供される動作電圧を制限することによって達成されてもよい。
【0026】
熱制御ユニット21は、IC2全体がグローバル電力限界内で動作しているかどうかを判定するように構成されてもよい。熱制御ユニット21は、処理ノード11から温度情報を受信することに加えて、他の機能装置のそれぞれおよび他の実施形態に表れ得る他の機能ユニットから、同等の情報を受信してもよい。任意の機能ユニット(またはIC2上のいかなる点)から読み出した温度が第2の温度閾値を超過する場合、電力管理ユニット20は、IC2をグローバルスロットル制御することによって応答してもよい。グローバルスロットル制御は、処理ノード11のそれぞれへのクロック周波数の大幅な低減により定義されてもよく、IC2の他の機能ユニットに適用されてもよい。さらに、処理コア11のそれぞれの動作電圧も大幅に低減される場合がある。グローバルスロットル制御の後のすべての処理ノード11の動作点は、少なくとも熱制御ユニット21に報告されるすべての温度が第2の閾値未満になるまで制限されてもよく、その後IC2のさらなる冷却を可能にするように、一定期間制限されてもよい。
【0027】
記載の実施形態では、IC2は、システムのクロック信号を受信するように結合された位相同期回路(PLL)4を含む。PLL4は、対応するクロック信号を、処理ノード11のそれぞれおよびGPU14に分配してもよい。本実施形態では、処理ノード11のそれぞれおよびGPU14により受信されるクロック信号は、互いに独立している。さらに、本実施形態のPLL4は、互いに独立的で、処理ノード11のそれぞれに提供されるクロック信号の周波数を、個別に制御および変更するように構成されている。PLL4は、処理ノード11とは独立して、GPU14に提供されるクロック信号の周波数を制御および変更してもよい。以下の詳細にさらに説明される通り、処理ノード11のうち所与のいずれか1つにより受信されるクロック信号の周波数は、可変のローカル電力限界、処理ノード11から報告された温度値および処理ノード11に課せられる性能要求に従い増減されてもよい。クロック信号がPLL4から出力され得る様々な周波数は、それぞれの処理ノード11の異なる動作点に対応してもよい。したがって、処理ノード11の特定の1つの動作点の変更は、処理ノード11のそれぞれが受信したクロック信号の周波数を変更することによって、実施されてもよい。
【0028】
1つ以上の処理ノード11の各動作点の変更の場合は、1つ以上の各クロック周波数の変更を含み、電力管理ユニット20は、PLL4に提供されるデジタル信号SetF[M:0]の状態を変更してもよい。このデジタル信号のセットは、PLL4に結合される各機能ユニットのクロック周波数の設定用の情報を含んでもよい。これらの信号内の変更に応答し、PLL4は、影響を受ける機能ユニットのクロック周波数を変更してもよい。
【0029】
記載の実施形態では、IC2も電圧調整器5を含むことができる。他の実施形態では、電圧調整器5は、IC2から分離して実装されてもよい。電圧調整器5は、処理ノード11のそれぞれに動作電圧(または供給電圧)を供給してもよい。いくつかの実施形態では、電圧調整器5は、特定の動作点に従い、可変する動作電圧を供給してもよい(例えば、より優れた性能のために動作電圧を上昇させ、より節電するために動作電圧を低減するなど)。いくつかの実施形態では、処理ノード11のそれぞれは、電圧面を共有してもよい。したがって、上記実施形態の各プロセッサコア11は、他の処理ノード11と同じ電圧で動作する。別の実施形態では、電圧面は共有されず、したがって、各プロセッサコア11への供給電圧は、他の処理ノード11への供給電圧とは独立して設定および調整されてもよい。このように、動作電圧の調整を含む動作点の調整は、非共有電圧面を有する実施形態における他の処理ノード11とは独立的に、各プロセッサコア11に選択的に適用されてもよい。動作点の変更が1つ以上の処理ノード11用の動作電圧の変更を含む場合には、電力管理ユニット20は、電圧調整器5に提供されるデジタル信号SetV[M:0]の状態を変更してもよい。電圧調整器5は、信号SetV[M:0]の変更に応じて、処理ノード11のうち影響されたものに提供される動作電圧を調整してもよい。GPU14は、いくつかの実施形態では、1つ以上の処理ノード11と電圧面を共有してもよく、一方で他のノードにおいては独自の電圧面を有し、その供給電圧も適宜調整させてもよい。
【0030】
上述したように、各処理ノード11の動作点は、報告された温度、可変のローカル電力限界および固定のグローバル電力限界に基づいて、設定または制限されてもよい。また、各処理ノード11の動作点も、各活動レベル(例えば、処理作業負荷)に従って設定されてもよい。記載の実施形態では、電力管理ユニット20は、各処理ノード11の活動レベルを指示する情報を受信してもよく、ローカルおよびグローバル電力限界内で動作点を適宜設定してもよい。電力管理ユニット20は、作業負荷の特定の種類に基づき、所与の処理ノードの動作点を設定してもよい。一般的に言うと、計算限定作業負荷を実行するプロセッサコア11は、より高い動作点に設定されてもよいし、あるいはメモリ限定作業負荷を実行するときは、より低い動作点に設定されてもよい。計算限定またはメモリ限定のいずれでもない作業負荷には、プロセッサコア11が中間動作点に設定されてもよい。作業負荷の活動レベルおよび種類は、1秒当たりの完了命令、メモリアクセス要求、キャッシュヒット/ミス、パイプライン停止、分岐誤予測、発行された命令および実行された命令などの、様々なメトリクスに基づき、電力管理ユニット20により判定されてもよい。
【0031】
先述の通り、プロセッサコア11の動作点は、少なくともクロック周波数により定義されてもよく、また動作電圧によって定義されてもよい。一般的に言えば、「より高い」動作点への変更は、影響を受けるプロセッサコア11のクロック周波数を上昇させることにより定義されてもよい。より高い動作点への変更は、その動作電圧を上昇させることを含んでもよい。同様に、「より低い」動作点への変更は、影響を受けるプロセッサコア11のクロック周波数を低減することにより定義されてもよい。影響を受けるプロセッサコア11に供給される動作電圧の低減は、より低い動作点への変更の定義内に含まれてもよい。
【0032】
一実施形態では、動作点は、アドバンスト・コンフィギュレーション・アンド・パワー・インターフェース(Advanced Configuration and Power Interface)(ACPI)規格の性能状態(以下「P−state」という)に対応してもよい。下記表1は、ACPI基準を使用して実装される一実施形態のP−stateを記載する。
【表1】
【0033】
上記の表1に記載されたP−stateは、ACPI準拠のプロセッサが、C0として知られる非待機状態で動作するときに適用されてもよい。上記の表1に対応する実施形態では、P−stateのP0は、2GHzのクロック周波数および1.1ボルトの動作電圧を有する、最高の動作点である。一実施形態における電力管理ユニット20は、電流のローカル電力限界により許可されるときには、高い活動レベルに応じて、P0のP−stateでプロセッサコア11を動作させてもよい。P0のP−stateでの動作は、計算限定の作業負荷の処理に使用されてもよい。計算限定作業負荷は、時間依存的および計算集中的であり、(あったとしても)わずかなメモリアクセスしか必要としない。より低電力消費に対応する待機状態により早く戻ることも可能にする一方で、最大性能を維持するために可能な限り短時間で作業負荷を実行することが望ましい場合がある。したがって、高い活動レベルを有する計算限定作業負荷は、より早く完了することが可能なP0のP−stateで実行されてもよい。
【0034】
P4のP−stateは、この特定の実施形態における最低動作点であり、800MHzのクロック周波数および0.8Vの動作電圧を有する。電力管理ユニット20は、より高いP−stateが現行のローカル電力限界内に収まったとしても、低活動レベルに応じて、P4のP−stateで、プロセッサコア11を動作させる場合がある。P4のP−stateは、メモリ限定作業負荷および時間依存的(または周波数依存的)ではない他のタスクとともに使用されてもよい。メモリ限定作業負荷は、システムメモリへの頻繁なアクセスを含むものである。メモリアクセスには、(メモリにアクセスしない命令の実行時間と比較して)長い待機時間が関与するため、メモリ限定作業負荷のクロック周波数の低減は、性能への最小限の影響しか与えずに、システムのワット当たりの性能のメトリックを向上させ得る節電を伴うことがある。
【0035】
検出された活動レベルが、低活動閾値よりも高く、かつ高活動閾値よりも低い場合には、対応するプロセッサコア11の動作は、特定の実施形態に応じ、かつこれらのP−stateの動作が現行のローカル電力限界内に収まるという条件で、OS、他のソフトウェア、ファームウェア、および/またはその他のハードウェアの指示のもと、P1、P2、P3のP−stateのうち何れか1つに設定されてもよい。
【0036】
表1に記載のP−stateは、動作点の一式の例示であることに注意されたい。異なるクロック周波数および動作電圧を有する動作点を使用する実施形態が可能であり、企図される。さらに、上述の通り、いくつかの実施形態は、処理ノード11に共有する電圧面を使用してもよく、ひいてはそれらの各動作点は、クロック周波数を基に定義されてもよい。いくつかの実施形態では、処理ノードのそれぞれの動作電圧は固定のままでもよいが、他の実施形態では、動作電圧は同時にすべての処理ノード11用に調整されてもよい。表1のP−stateとして記載された動作点は、非ACPIの実施形態とともに使用されてもよいことにも注意されたい。
【0037】
さらに、ACPIの実施形態においても、上記の動作点は、PNTCが使用されるときに全て包含することはできない。より具体的には、場合によっては、P0状態を超える性能ブーストは、処理作業負荷に適切なとき、および現行のローカル電力限界により許可されたときに、所与のプロセッサコア11に適用されてもよい。例えば、処理ノード11のうち所与の1つが計算限定作業負荷を実行しているが、残りの処理ノード11が待機状態にある状況を考慮する。そのような場合、待機している処理ノードのローカル電力限界は低減される場合があるが、起動中のプロセッサコア11のローカル電力限界は上昇する場合がある。ローカル電力限界の上昇は、起動中のプロセッサコア11のオーバークロックを引き起こし得る。したがって、起動中のプロセッサコア11は、本例においては計算限定作業負荷を実行しているので、そのプロセッサコア11に提供されるクロック信号の周波数は、P0状態の値より大きい値まで上昇する場合がある。この結果、計算限定作業負荷のより早い実行が可能となり、周囲温度が十分低い場合には、グローバル電力限界内にIC2を留まらせることができる間に計算限定作業負荷を実行し得る。さらに、周囲温度がローカル電力限界の基となる値よりも低い場合には、起動中のプロセッサコア11のオーバークロックにより、スロットル制御の可能性なしに、計算限定作業負荷のより速い実行が可能となる。この種の決定論的な性能は、低周囲温度環境において、より優れたワット当たりの性能に繋がり得る。
【0038】
(グローバルおよびローカル熱設計電力(TDP))
図2は、熱制御ユニットを含むマルチコアプロセッサの一実施形態の構成図である。より詳細には、
図2は、様々な処理ノード11、GPU14および熱制御ユニット21の間の機能的関係を示している。
図2は、(個別的に可変であってもよいし、機能ユニットに適用されてもよい)ローカル電力限界および(IC全体として固定および適用されてもよい)グローバル電力限界に基づくシステム応答の相違を示すグラフも含む。
【0039】
記載の実施形態では、IC2は、電力管理ユニット20の熱制御ユニット21にそれぞれ結合される4つの処理コア11(すなわち、コア11−1から11−4まで)およびGPU14を含む。処理コア11およびGPU14のそれぞれは、IC2のダイの領域の特定の一部分を占有してもよい。さらに、記載の実施形態における処理コア11およびGPU14のそれぞれは、1つ以上のセンサ19を含み、そのそれぞれが各ユニット内の温度を感知するように構成されている。いくつかの実施形態では、各機能ユニットが実装されるICダイの全体の領域を通した様々な位置に、センサ19の複数のインスタンスが配置されてもよい。いくつかの実施形態では、各センサ19は、それぞれが感知した温度を報告するように、熱制御ユニット21に結合されてもよい。他の実施形態では、各機能ユニットは、その機能ユニットの最高測定温度のみを報告するように構成されてもよい。
【0040】
センサ19は、様々な方法で実装されてもよい。一実施形態では、センサ19は、リング発振器を基にした温度センサとして実装されてもよい。上記温度のリング発振器は、温度上昇に伴う周波数の上昇あるいは低下を伴って、特定の周波数を有する信号を出力してもよい。計測温度に比例する電圧または電流を出力する温度センサもまた可能であり、企図される。別の実施形態では、温度値は、実行されたコードストリームまたは動作中に発生する信号などの、他の情報から外挿することも可能である。
【0041】
熱制御ユニット21は、
図2の構成図に付随のグラフで示す通り、機能ユニットのそれぞれから受信した温度を、第1の温度閾値および第2の温度閾値と比較してもよい。第1の温度閾値は、ノードごとの方式(PNTC)での熱制御を行う際に使用されてもよく、一方で第2の温度閾値は、グローバル方式(HTC)で熱制御を行う際に使用されてもよい。記載の実施形態では、第1の温度閾値は、第2の温度閾値よりも低い。第1および第2の温度閾値の値の例は、それぞれ96℃および100℃である。さらに、第1の温度閾値は、第1の周囲温度(例えば、28℃)および最大ローカル電力限界に基づいてもよい。第2の温度閾値は、第2の周囲温度(例えば、35℃)およびグローバル電力限界に基づいてもよい。第1の温度閾値より高い温度の読出しは、報告する処理コア11がそのローカル電力限界を超過していることを指示してもよい。第2の温度閾値より高い温度の読出しは、IC2が全体としてそのグローバル電力限界を超過していることを指示してもよい。
【0042】
記載の実施形態では、プロセッサコア11のうち所与の1つが第1の閾値温度以上の温度を報告する場合には、報告するプロセッサコア11がスロットル制御され得る。より具体的には、報告するプロセッサコア11のクロック周波数は、その温度が第1の温度閾値以上であると決定する熱制御ユニット21に応じて、指定レベルまで低減され得る。ACPI準拠の一実施形態では、少なくとも報告するプロセッサコア11のクロック周波数は、P0状態の周波数の90%に低減する場合がある。さらに、報告するプロセッサコア11のクロック周波数は、少なくとも報告される温度が第1の閾値未満に低下するまでは、この動作点に制限されてもよく、さらなる冷却を可能にするように、さらなる時間、当該動作点に留まってもよい。
【0043】
いくつかの実施形態では、他の起動中のプロセッサコア11は、第1の温度閾値以上の温度を報告する1つのプロセッサコア11に応じて、P0状態の周波数の90%の動作点に制限されてもよい。1つの特定のプロセッサコア11が第1の温度閾値以上の温度を報告するときに、他の起動中のプロセッサコア11が動作点に制限されない、という実施形態も可能であり、企図される。
【0044】
記載の実施形態では、熱制御ユニット21が、第2の温度閾値以上の報告された温度値を任意のプロセッサコアから受信する場合には、電力管理ユニット20は、全ての起動中のプロセッサコア11を、グローバルにスロットル制御することによって応答してもよい。ACPI準拠の一実施形態では、添付のグラフに図示される通り、起動中のプロセッサコア11のクロック周波数は、P0状態の周波数の50%までスロットル制御される場合がある。P0状態の50%未満のクロック周波数ですでに動作している、起動中のプロセッサコア11は、以前の通り動作を続けてもよい。しかしながら、全てのプロセッサコア11は、クロック周波数がP0状態の50%以下の動作点に制限されてもよい。
【0045】
報告される温度の合致または当該温度の第2の温度閾値の超過に応じたクロック周波数の制限に加えて、プロセッサコア11のそれぞれの動作電圧も制限され得る。表1を再度参照すると、P0状態の周波数の50%のクロック周波数は、その特定の実施形態では、P3状態に相当する。表1のP3状態での動作電圧は0.85ボルト(P0状態で1.1ボルト)である。したがって、分割電圧面の実施形態(すなわち、各プロセッサコア11が独自の電圧面を有する実施形態)では、P3状態の電圧を超える電圧で動作する任意のプロセッサコア11に対する動作電圧は、報告される温度の読出しが第2の温度閾値以上であることを決定する熱制御ユニット21に応じて、0.85ボルトに低減されてもよい。共有電圧面の実施形態(すなわち、全てのプロセッサコア11が同じ電圧面を共有する実施形態)では、全てのプロセッサコア11の動作電圧は、P3状態の電圧に設定されてもよい。同様の動作電圧の調整は、それらの実施形態がACPI準拠であるか否かにかかわらず、またプロセッサコア11が共有電圧面あるいは分離した電圧面を使用するか否かにかかわらず、他の実施形態において行われてもよい。
【0046】
本明細書に記載の通り、スロットル制御行為およびプロセッサコア11で行われる動作点の制限もGPU14に適用されることに、再度留意されたい。
【0047】
(ノード当たりの熱制御を使用するローカルTDP分配)
図3A〜3Fは、PNTCを使用するプロセッサの実施形態における、様々な状況の熱設計電力の割り当てを示す構成図である。より詳細には、
図3A〜3Fは、コアのそれぞれが起動状態または待機状態などの多数の様々な状態の1つにあるときに、様々なプロセッサコア11へのローカル電力限界分配を示している。プロセッサコア11のうち所与の1つの待機は、クロックゲート状態(すなわち、クロック信号によりコアに加えられたままの電力が抑制される状態)、およびパワーゲート状態(すなわち、クロック信号がコアに提供されず、電力がそこから削除されている状態)を含んでもよいことに留意されたい。
【0048】
図3A〜3Fの例は、GPU14に割り当てられるローカル電力限界を含まないことに留意されたい。しかしながら、
図3A〜3Fは、説明を目的として提示されており、様々な実施形態では、GPU14などのGPU用ローカル電力限界は、本明細書に記載の同様の原理を使用して、割り当てまたは変更が可能であることに留意されたい。
【0049】
図3Aでは、全てのプロセッサコア11は、起動中であって、作業負荷の処理を実行している。記載の実施形態では、グローバル電力限界は40ワットである。本実施形態の4つのプロセッサコア11のそれぞれが起動中であるため、熱制御ユニット21は、それぞれのコア11に10ワットのローカル電力限界を割り当てることができ、これにより、ローカル電力限界を均等に分配することができる。記載の実施形態が、上記の表1に提示される数値と一致するACPI準拠の実施形態である場合には、最高3.2GHzまでの断続的な向上が許可される場合があるが、プロセッサコア11の何れかの最大クロック周波数を2.0GHzとすることができる。ローカル電力限界値に基づく周囲温度として、28℃という例示的数値を使用したとき、プロセッサコア11のそれぞれは、周囲温度が28℃より低い環境において、決定論的に、反復可能な方法により、3.2GHzという断続的なブーストに伴い、2.0GHzで動作してもよい。周囲温度が28℃より高い場合、(
図2に関連して記載される通り)何らかのスロットル制御が起こる可能性はあるが、
図3Aに記載の構成は許可され得る。
【0050】
図3Bでは、プロセッサコア11のうち2つは待機状態であるが、他の2つは起動中である。本例における待機状態のプロセッサコアは、クロックゲートされている(すなわち、これらのコアへのクロック信号が抑制されている)が、パワーゲートされていない。したがって、起動中のコアのローカル電力限界を、それぞれ15ワットに設定することができる。2つの起動中のプロセッサコア11の15ワットのローカル電力限界は、これらコアのオーバークロックを介して、性能ブーストを可能にし得る。この特定の例では、2つの起動中のプロセッサコア11のそれぞれは、3.2GHzまでのクロック周波数で動作されてもよい。低周囲温度(例えば、本明細書で説明される例示的な実施形態における28℃未満)では、2つの起動中のコアの動作は、ローカルまたはグローバル電力限界を超過するため、スロットル制御の必要なく達成される場合がある。より高い周囲温度の実施形態(例えば、例示的な実施形態での28℃以上)では、3.2GHzで起動中のプロセッサコア11の1つまたは両方の動作は、スロットル制御をもたらす可能性がある。
【0051】
起動中のプロセッサコア11に対して性能ブーストが可能なときでも、実際の動作のクロック周波数は、その処理作業負荷による場合があることに留意されたい。例えば、
図3Bの例における起動中のプロセッサコアの処理作業負荷が計算限定型である場合、クロック周波数は3.2GHzに上昇されてもよい。しかしながら、
図3Bの例における起動中のプロセッサコア11の処理作業負荷が、メモリ限定型である(よって、コアのクロック周波数に感応しない)場合、この状況でクロック周波数を上昇することは、いかなる適切な性能向上をもたらすことがないであろうから、コアは非常に低いクロック周波数として動作する場合がある。
【0052】
クロックゲートされたプロセッサコアに関しては、これらコアの一方または両方を起動状態にするような事象が発生する場合、これらのそれぞれの5ワットのローカル電力限界は、電力のマージンを提供する場合がある。さらに、2つの待機状態のプロセッサコア11は、2つの起動中のコアに関して、熱シンクとしての機能を果たす場合がある。いくつかの実施形態では、ローカル電力限界の様々なプロセッサコア11への割り当ては、コアが実装されるICダイ上の配置の形状によることもある。例えば、起動中のコアが待機状態のコアに物理的に隣接して位置する場合、そのローカル電力限界は、別の起動中のコアに物理的に隣接して位置する場合よりも、大きくなることがある。
【0053】
図3Cの例では、プロセッサコア11のうち3つが待機(クロックゲートされた)状態であるが、プロセッサコア11のうち1つは起動中である。この場合、起動中のプロセッサコア11は、19ワットのローカル電力限界が割り当てられてもよく、かつ3.6GHzまでの周波数にオーバークロックされてもよい。3.6GHzのクロック周波数では、起動中のプロセッサコア11は、指定値(例えば、上記に記載の28℃の値)未満の周囲温度では、その割り当てられたローカル電力限界内で動作することができる。指定値を超えると、3.6GHzのクロック周波数での動作は、起動中のプロセッサコア11の何らかのスロットル制御をもたらす場合がある。
【0054】
図3Dは、2つのプロセッサコア11が待機状態であるが他の2つが起動中である、
図3Bと類似した状況を示している。起動中のプロセッサコア11には、13ワットのローカル電力限界がそれぞれ割り当てられてもよい。起動中のプロセッサコア11は、
図3Bの例における3.2GHzの最大クロック周波数と比較し、本例においては、3.4GHzまでのクロック周波数で動作されてもよい。
【0055】
図3Bの例と比較して、本例におけるローカル電力限界間の差は、多数の異なる要因の1つ以上の結果となる可能性がある。1つの上記要因は、プロセッサコア11が実装されるICダイ上の配置形状である。例えば、
図3Bに示す例では、2つの起動中のプロセッサコア11は、待機状態のプロセッサコア11にそれぞれ物理的に隣接することができるが、互い隣接することができない。反対に、
図3Dの例における2つの起動中のプロセッサコア11は、互いに物理的に隣接してもよい。したがって、
図3Bの例では、起動中のプロセッサコア11により発生する熱は、
図3Dの例よりも簡単に消散し得る。
【0056】
図3Dの例における起動中のプロセッサコア11の、
図3Bの例と比較してより低いローカル電力限界は、起動中のコア11のそれぞれに対して、より精密な熱制御を提供し得る。このように、高周囲温度の環境における動作の場合には、
図3Bに関連したより低いローカル電力限界により、熱制御ユニット21は、起動中のコア11に対して、(
図2に関連して、上記に説明の通り)より早いPNTCスロットル制御を行い得る。これにより、(
図2に関連し、上記にまた説明の通り)グローバル(HTC)スロットル制御が必要となる可能性を少なくし得る。
【0057】
図3Eの例では、2つのプロセッサコア11がパワーゲート(すなわち、パワーダウン)され、別のプロセッサコア11が待機状態(クロックゲート)であるが、1つのプロセッサコア11は起動中である。起動中のプロセッサコア11は、3.9GHzの最大クロック周波数で、26ワットのローカル電力限界を割り当てられてもよい。この場合、最大電力消費は合計35.6ワットとなり、これは40ワットのグローバル電力限界よりも低いことに留意されたい。この差は、ウェイクアップ事象(wake−up event)により、待機状態またはパワーゲートされたプロセッサコアのうち1つが起動状態に入る場合に、保護バンドを提供し得る。
【0058】
図3Fでは、2つのプロセッサコア11がパワーゲートされているが、残りの2つは起動中である。この場合、起動中のプロセッサコア11は、3.8GHzの最大クロック周波数で、17ワットのローカル電力限界をそれぞれ割り当てられる。この場合、最大電力消費は合計34.6ワットとなり、これもまたグローバル電力限界の40ワット未満である。
図3Eの例と同様に、割り当てられるローカル電力限界の総量とグローバル電力限界との間の差は、ウェイクアップ事象により、待機状態またはパワーゲートされるプロセッサコアが起動状態に入る場合に、保護バンドを可能にし得る。
【0059】
図4は、マルチコアプロセッサの一実施形態の2つの異なるシナリオの下で使用され得る最大コア電力を示したグラフである。より具体的には、
図4は、グローバルHTCのみを使用した実施形態に対して、PNTCを用いて達成可能な最大コア電力使用における差を図示する。グラフの左側には、PNTC用に構成された実施形態の最大コア電力が図示される。グラフの右側には、HTCのみ用に構成された実施形態の最大コア電力が図示される。PNTCを使用するプロセッサコアに適用されるローカル電力限界は、グローバル電力限界用よりも低い周囲温度に基づいているため、PNTCの実施形態では、コア単位で追加電力が消費される場合がある。これにより、プロセッサコアの性能ブーストが、利用可能な余分な電力を使用し得る。上記に説明の通り、この性能ブーストは、その最高指定動作点の最大周波数(例えば、表1に例示のACPI準拠の実施形態において指定される最大周波数よりも高い値)を超えて、コアのクロック周波数を上昇させることで達成されてもよい。そのような方法でクロック周波数を上昇させることは、オーバークロックとして知られる。所与のプロセッサコアの作業負荷の要求が、上記周波数の上昇がオーバークロックに比例することを正当化する場合には、プロセッサコアは、グローバルに適用されるHTCのみに依存する実施形態において達成可能な他の方法よりも早く、作業負荷を実行し得る。
【0060】
(方法の実施形態)
図5および6は、PNTC用に構成されるマルチコアプロセッサで使用し得る様々な方法の実施形態を示している。
図5は、PNTCのプロセッサの実施形態において、ローカル電力限界に基づくプロセッサコアの性能をブーストする方法の一実施形態のフロー図を示す。
図6は、マルチコアプロセッサにおいて、PNTCおよびグローバルHTCの両方を使用する方法の一実施形態のフロー図を示す。
【0061】
図5の方法500は、1つ以上の未起動のプロセッサコアを、低減電力状態に配置する(ブロック502)ことから始まる。低減電力状態とは、クロックゲートされた状態またはパワーゲートされた状態であってよい。クロックゲートされた状態では、動作電圧が提供され続けるが、低減電力状態に配置されるコアへのクロック信号の提供が抑制され得る。パワーゲートされた状態では、クロック信号および動作電圧が、低減電力状態に配置されるコアに提供されない。未起動のプロセッサコアを低減電力状態に配置することに加えて、それらのローカル電力限界も低減し得る(ブロック504)。
【0062】
起動を維持する1つ以上のプロセッサコアは、上昇したローカル電力限界でそれぞれ動作を続けることが可能である(ブロック506)。残りの起動中のプロセッサコアのローカル電力限界は、低減電力状態に配置されるコアのローカル電力限界の低減に応じて、上昇されてもよい。起動中のコアの性能要求が上昇しない場合、または比較的に低い場合(ブロック508、いいえ)には、コアは、現行の動作点で動作を続けることができる。しかしながら、残りの起動中のコアの性能要求が上昇する場合、または比較的に高い場合(ブロック508、はい)には、ローカル電力限界の上昇により、動作点を最大の性能に上昇させ得る。記載の実施形態においては、このことは、高いまたは上昇した性能要求を有する起動中のコアをオーバークロックすることによって、達成し得る(ブロック510)。オーバークロックは、計算限定作業負荷、より一般には、性能がコアのクロック周波数に影響する作業負荷にて行われてもよい。
【0063】
オーバークロックは、2つの状況において、起動中のプロセッサコアに対して継続し得る。第1の状況は、そのコアに報告される最高温度がPNTCに使用される第1の温度閾値(例えば、上記
図2のグラフを参照)より低いまま維持するという状況である。温度が第1の閾値より低いままであり(ブロック512、いいえ)、プロセッサの作業負荷の性能要求が、より高い動作点を正当化するにあたり十分高いままである場合(ブロック514、はい)、オーバークロックが継続し得る(ブロック510)。オーバークロックするプロセッサコアから報告される温度が第1の閾値以上の場合(ブロック512、はい)、あるいは作業負荷要求が、オーバークロックが性能利得を提供しない点まで低減する場合(ブロック514、いいえ)、オーバークロックが停止する(ブロック516)。第1の温度閾値の超過のためにオーバークロックが停止する場合(ブロック512、はい)、報告するコアのスロットル制御(
図1および2に関連し、上記に記載の通り)が行われ得る。ACPI準拠の一実施形態では、このスロットル制御は、報告するコアの動作点を、P0状態の90%のクロック周波数を有する点まで制限し得る。
【0064】
図5のフロー図は、関連する方法の単一の反復処理を示す。しかしながら、本方法は、PNTCが使用されるプロセッサの動作中に、必要に応じて何回でも反復されてもよいことに留意されたい。
【0065】
図6は、同一のプロセッサ上での、PNTCおよびHTCの両方の使用を示すフロー図である。記載の実施形態では、方法600は、多数のプロセッサコアのそれぞれに報告された温度を監視することから開始する(ブロック602)。報告される温度の監視は、これらの値を、例えば
図2のグラフに記載された第1および第2の閾値と比較することを含んでもよい。ICダイ上の報告される温度が、第1および第2の閾値のいずれよりも低い場合(ブロック604、いいえ)、温度読出しに応じて、スロットル制御または他の電力低減行為が行われない(ブロック616)。しかしながら、低減された作業負荷要求に応じて、様々なプロセッサコアの各動作点の低減が発生する可能性があることに留意されたい。そのような動作点の低減は、性能要求が低減されるプロセッサコアのクロックゲートおよびパワーゲートを含み得る。
【0066】
所与のコアから報告される温度が、第1の温度閾値以上であるが(ブロック604、はい)、どのコアの温度も第2の温度閾値以上であることを報告していない場合(ブロック606、いいえ)、所与のコアがスロットル制御され、動作点(例えば、P−state)が制限され得る(ブロック608)。制限される動作点(例えば、P−state)は、ノード当たりを基にした熱制御(PNTC)を行うために使用されてもよい。一方、第2の温度閾値は、大域を基にした熱制御(HTC)を行うために使用されてもよい。
【0067】
いくつかの実施形態では、動作点は報告するコアにのみ制限されている。他の実施形態では、全てのコアが、報告するコアと同様の方法で、動作点に制限されてもよい。さらに、いくつかの実施形態では、動作点の部分的な制限を可能にしてもよい。例えば、電圧面がすべてのコア内で共有されている実施形態では、全てのコアの動作電圧は、指定値(例えば、
図1のP0状態の動作電圧の90%)に制限されてもよいが、一方で、報告しないコアのクロック周波数が制限されない。
【0068】
報告される温度の何れかが第2の温度閾値以上の場合(ブロック606、はい)、コア動作点のグローバルなスロットル制御および制限が行われ得る(ブロック610)。再び
図2および表1の例を参照すると、一実施形態では、全てのコアの動作点は、P0状態のクロック周波数の50%、すなわちP3状態に対応する動作点に制限される場合がある。動作電圧は、同様に、P3状態で指定された電圧に制限される。P3状態により指定されるクロック周波数より高いクロック周波数で動作するプロセッサコアは、報告される温度が第2の温度閾値以上であることに応じて、スロットル制御されてもよい。P3状態のクロック周波数および動作電圧以下で動作しているプロセッサコアは、全てのコアの動作点が制限されたままでいる一方で、これらのコアは、P3状態より高い動作点へ上昇することにより、上昇される作業負荷要求に応答しない場合があるが、各動作点で動作を継続する場合がある。
【0069】
(PNTCを用いる)1つのプロセッサコアまたは(グローバルに適用されるHTCを用いる)全てのプロセッサコアの動作点を低減した後、温度の監視が継続されてもよい。報告される温度が第1および第2の温度閾値未満でない場合(ブロック612、いいえ)、動作点の制限が継続し得る(ブロック614)。全ての温度が限界内にある場合(ブロック612、はい)、プロセッサコアは、指定された最大の状態より低い状態に動作点を制限することなく、各性能要求および各ローカル電力限界に基づき、動作し得る。
【0070】
しかしながら、第1および第2の温度閾値のうち何れかの閾値以上の温度の報告に応じて、スロットル制御行為に続いて、ICのさらなる冷却を可能にするように、動作点の制限がその後しばらく継続する可能性があることに留意されたい。したがって、第3の温度閾値を使用する実施形態が企図される。この実施形態では、第3の温度閾値は、第1および第2の温度閾値の何れかよりも低い。PNTCおよびHTCの何れかを用いる動作点の低減に続いて、1つ以上の処理コアは、1つ以上の報告される温度が第3の温度閾値未満に低下するまで、制限され続け得る。例えば、第1の温度閾値を超過する温度の報告に応じて、単一のコアが、PNTCを使用して動作点でスロットル制御および/または制限する場合、そのコアは、報告される最高温度が第3の温度閾値未満に低下するまで、動作点を制限され続け得る。
【0071】
(コンピュータアクセス可能記憶媒体)
次に
図7を参照すると、システム10を代表するデータベース705を含むコンピュータアクセス可能記憶媒体700の構成図が示されている。一般的に言うと、コンピュータアクセス可能記憶媒体400は、コンピュータへ命令および/またはデータを提供するための使用中に、当該コンピュータによってアクセス可能な任意の非一時的な記憶媒体を含んでもよい。コンピュータアクセス可能記憶媒体400は、例えば、(固定式または分離可能な)ディスク、テープ、CD−ROM、DVD−ROM、CD−R、CD−RW、DVD−R、DVD−RW若しくはBlu−Rayなどの磁気媒体若しくは光学式媒体などの記憶媒体を含んでもよい。記憶媒体は、RAM(例えば、同期式動的RAM(SDRAM)、倍データレート(DDR、DDR2、DDR3など)SDRAM、低消費電力DDR(LPDDR2など)SDRAM、ラムバスDRAM(RDRAM)、静的RAM(SRAM)など)、ROM、フラッシュメモリ、ユニバーサルシリアルバス(USB)インターフェースなどの周辺インターフェースを経由しアクセス可能な不揮発性メモリ(例えば、フラッシュメモリ)などの、揮発性または不揮発性記憶媒体をさらに含んでもよい。記憶媒体は、微小電気機械システム(MEMS)と、ネットワークおよび/または無線接続などの通信媒体を経由しアクセス可能な記憶媒体とを含んでもよい。
【0072】
一般に、コンピュータアクセス可能記憶媒体700で搬送される、システム10を代表するデータ705は、プログラムにより読み出すことができるとともに、直接的または間接的に、システム10を備えるハードウェアを製造するために用いることができるデータベースまたは他のデータ構造であってもよい。例えば、データベース705は、VerilogまたはVHDLなどの高レベル設計言語(HDL)における、ハードウェア機能の動作レベル記述あるいはレジスタ転送レベル(RTL)記述であってもよい。この記述は、合成ライブラリからのゲートのリストを備えるネットリストを生産する記述を合成し得る合成ツールにより読み出されてもよい。ネットリストは、システム10を備えるハードウェアの機能を表現する1式のゲートを備える。次いで、ネットリストは、マスクに適用される幾何学的形状を記載するデータ一式を生産するように、配置および経路設定してもよい。マスクはその後様々な半導体製造過程で使用され、システム10に対応する半導体回路または回路を生産する。代替として、コンピュータアクセス可能記憶媒体700上のデータベース705は、(合成ライブラリ有り、または無しの)ネットリスト若しくは所望によりデータ一式、またはグラフィックデータシステム(GDS)IIのデータであってもよい。
【0073】
コンピュータアクセス可能記憶媒体700は、システム10の表現を搬送するが、他の実施形態では、所望により、IC2、エージェントの任意の一式(例えば、処理コア11、I/Oインターフェース13、電力管理ユニット20など)またはエージェントの一部分(例えば、熱制御ユニット21など)を含む、システム10の任意の一部分の表現を搬送する場合がある。
【0074】
本発明は、特定の実施形態を参照して記述されてきたが、実施形態は例示的であり、発明の範囲がそのように限定されるものではないこと理解されたい。記述の実施形態へのいかなる変更、修正、追加、および改善も可能である。これらの変更、修正、追加、および改善は、以下の請求項において詳細に記載されている通り、本発明の範囲内に該当する。