説明

ディジタル・パワー・スロットルを備えたマイクロプロセッサ

【課題】 プロセッサ内の電力消費を調整するためのディジタルベースのメカニズムを提供する。
【解決手段】 本発明は、プロセッサ内の電力消費を調整するためのディジタルベースのメカニズムを提供する。このプロセッサは、1つまたは複数の機能ユニットと、プロセッサの機能ユニットの活動状態を監視して、プロセッサの電力消費を推定するディジタル・スロットルとを含む。このディジタル・スロットルの一実施形態は、1つまたは複数のゲート・ユニットと、1つの監視回路(320)と、1つのスロットル回路(330)とを含む。各ゲート・ユニットは、プロセッサの機能ユニットへの電力送付を制御し、その関連機能ユニットの活動状態を示す信号を出力する。監視回路は、信号から推定電力消費レベルを決定し、その推定電力消費としきい電力レベルを比較する。推定電力消費レベルがしきい電力レベルを超える場合、スロットル回路はプロセッサ内の命令フローを調整する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マイクロプロセッサに関し、特に、マイクロプロセッサ内の電力消費を制御するためのメカニズムに関する。
【背景技術】
【0002】
最新のプロセッサは、複数命令の並行処理をサポートするために多くの実行資源を含んでいる。通常、プロセッサは、それぞれ、整数命令、浮動小数点命令、分岐命令、ロード/ストア命令を実施するために、1つまたは複数の整数実行ユニット、浮動小数点実行ユニット、分岐実行ユニット、メモリ実行ユニットを含む。そのうえ、整数ユニットと浮動小数点ユニットは通常、プロセッサ・コアに比較的密接なデータを維持管理するためのレジスタ・ファイルを含む。多くの実行資源をプロセッサに設ける場合の欠点の1つは、それらを動作させるために大量の電力を必要とすることである。種々の実行ユニットは、それらのサイズおよびそれらが実施する機能に応じて、多かれ少なかれ電力を消費するがあるが、比較的小さいプロセス・チップ上に非常に多くのロジックをパッキングすることによる最終結果として、重大な電力損問題の可能性が生じる。
【0003】
相当な間隔の間プロセッサの実行資源の全域を必要とするプログラムはほとんどない。プログラムを実行することによって浪費する電力は、そのコンポーネント命令の性質と、その命令が並行して実行される可能性によって決まる。プログラムは通常、様々な命令タイプを含むが、相当な期間の間、プロセッサのすべての実行資源を使用中として保持するために適切なタイプの沢山の命令が使用可能であることはめったにない。このため、ほとんどのプロセッサではクロック・ゲート・メカニズムを使用し、実行資源を使用していないときにその実行資源に送られるクロックを遮断し、それにより電力を削減する。そのうえ、実行資源の種々のコンポーネントは、そのコンポーネントが処理するパイプ・ステージに命令が出入りするときに、オン/オフすることができる。その結果、平均的なプログラムが浪費する電力レベルは比較的管理しやすいものになる可能性がある。
【0004】
プログラムによっては、比較的長い間プロセッサの実行資源の多くを活動化し、その結果、平均的なプログラムよりかなり多くの電力を浪費するものがある。プロセッサの電力消費を制限するためのメカニズムが設けられていない場合、そのプロセッサは、一般に、最大電力を消費するプログラムを取り扱うように設計されている。このため、平均的なプログラムを実行するために必要な電力とは無関係に、すべてのプログラムについて、その最高パフォーマンス・レベル未満でプロセッサを動作させることが必要になる場合もある。
【0005】
パワー・スロットルは、ハイ・パフォーマンス・プロセッサによって発生する電力消費問題を取り扱うために提案された戦略である。パワー・スロットルは、プロセッサの電力消費が高くなりすぎると、そのプロセッサのパフォーマンスを低下させる。これは、電力消費が安全なレベルに低下するまでプロセッサが命令を実行する速度を一時的に低減することによって実行することができる。パワー・スロットルにより、平均的なプログラムが実行される電力レベルに対応してプロセッサを設計することができる。多大な資源を必要とするプログラムを実行すると、プロセッサはその命令実行速度を低減して、その電力消費を既定の制限内に維持する。
【0006】
提案されているパワー・スロットル・メカニズムは、プロセッサが浪費する電力を監視するためにアナログ・パラメータを頼りにしている。たとえば、サーマル・スロットル・メカニズムは、プロセッサ・チップの温度を監視し、その温度がしきい値を超えるとプロセッサの実行速度を低減する。プロセッサが消費する電流またはスイッチング・レギュレータ内のパルス幅変調器のデューティ・サイクルを監視するために、その他のスロットル方式も提案されている。
【0007】
このようなパワー・スロットル・メカニズムにはいくつかの欠点がある。このようなメカニズムは、主にディジタルの環境、すなわち、プロセッサ内に追加のアナログ回路をもたらすことになる。このようなメカニズムは、プロセッサの環境(温度、電圧、構成)の変化によって様々になる傾向がある。また、このようなメカニズムは、プロセッサが消費する電力を直接制限するわけではなく、決定的なものではない。すなわち、その挙動はクロック単位で予測することができない。
【0008】
本発明は、使用可能なパワー・スロットル・メカニズムの上記その他の欠点に対処するものである。
【発明の概要】
【発明が解決しようとする課題】
【0009】
本発明は、マイクロプロセッサの電力消費を制御するためのディジタル・スロットルを提供する。
【0010】
本発明によれば、プロセッサは、1つまたは複数の機能ユニットと、ディジタル・スロットルとを含む。ディジタル・スロットルは、プロセッサの機能ユニットの活動状態を監視して、プロセッサの電力消費を推定する。
【課題を解決するための手段】
【0011】
本発明の一実施態様の場合、ディジタル・スロットルは、1つまたは複数のゲート・ユニットと、1つの監視回路と、1つのスロットル回路とを含む。各ゲート・ユニットは、プロセッサの機能ユニットへの電力送付を制御し、その関連機能ユニットの活動状態を示す信号を出力する。監視回路は、信号からそのプロセッサの推定電力消費を決定し、その推定電力消費としきい電力レベルを比較する。推定電力消費レベルがしきい電力レベルを超える場合、スロットル回路はプロセッサ内の命令フローを調整する。
【0012】
本発明は添付図面を参照して理解可能であるが、その添付図面では同様の要素は同様の番号で示されている。これらの図面は、本発明の特定の実施形態を例示するために提供するものであり、本発明の範囲を制限するためのものではない。
【図面の簡単な説明】
【0013】
【図1】本発明を実施することができるコンピュータ・システムの一実施形態を示すブロック図である。
【図2】本発明によるディジタル・パワー・スロットルを実現するプロセッサの一実施形態を示すブロック図である。
【図3】図2のプロセッサによって実現されるディジタル・パワー・スロットルの一実施形態を示すブロック図である。
【図4】図3のスロットル回路の一実施形態を表す概略図である。
【図5】プロセッサの電力消費を調整するための本発明による方法を表す流れ図である。
【図6A】本発明によるディジタル・スロットルを実現する複数実行コア・プロセッサの実施形態を表すブロック図である。
【図6B】本発明によるディジタル・スロットルを実現する複数実行コア・プロセッサの実施形態を表すブロック図である。
【発明を実施するための形態】
【0014】
以下の説明では、本発明を完全に理解できるようにするために多くの具体的な詳細を示している。しかし、この開示内容の恩恵を受ける当業者は、このような具体的な詳細がなくても本発明を実施可能であることが分かるだろう。さらに、本発明の特徴に焦点を当てるために、様々な周知の方法、手順、構成要素、回路については詳細に説明していない。
【0015】
本発明は、一連の命令に応答してプロセッサの機能ユニットの活動を監視してプロセッサの電力損を制御するためのメカニズムを提供する。その活動、たとえば、現在進行中の命令によってどの機能ユニットが活動化されるかは、対応する機能ユニットがオンかオフかを示す2進信号によって表すことができる。プロセッサが消費する電力の推定値は、現在「オン」になっている各機能ユニットに関連するパワー・ウェイトを合計することによって得られる。機能ユニットのパワー・ウェイトは、その機能ユニットが活動化されたときに消費する電力の量を表す。推定電力がしきい値レベルを超えた場合、スロットル・メカニズムはプロセッサを通る命令フローを調整して、機能ユニットの活動を低減する。
【0016】
各機能ユニットのパワー・ウェイトは、較正プロセスによって決定することができる。たとえば、デジタル・スロットルは設計プロセスの一部として1回較正される場合もあれば、自己較正し続ける場合もある。後者の場合、ディジタル・スロットルは、電流監視回路と較正アルゴリズムを使用して、定期的に各機能ユニットごとにパワー・ウェイトを調整することができる。
【0017】
本発明の一実施形態の場合、現在進行中の命令に応答して機能ユニットへの電力送付を制御するために、各機能ユニットに1つのゲート・ユニットが関連づけられている。パイプライン制御回路は、各ゲート・ユニットにそれに関連する機能ユニットのオン/オフ状態を示す。各ゲート・ユニットからの信号は、それに関連する機能ユニットのオン/オフ状態を監視回路に示す。監視回路は、示された状態に応じて、対応するパワー・ウェイトをプロセッサの現行電力消費の推定値に含めるかまたはそのパワー・ウェイトを無視する。別法として、各ゲート・ユニット信号は、それに関連する機能ユニットが「オン」になっているときにその機能ユニットのパワー・ウェイトを監視回路に連絡することもできる。本発明の他の実施形態では、推定電力で考慮すべきパワー・ウェイトを示すために他のメカニズムを使用することができる。
【0018】
監視回路は、アクティブな機能ユニットのパワー・ウェイトを合計し、それをしきい値と比較して、プロセッサの電力消費のクロック単位の推定値を出力する。ディジタル・スロットルの一実施形態の場合、複数のクロック・サイクルにわたってこのような推定値を累積し、プロセッサの電力消費のクロック単位の変動を平滑化する累積電力値を出力する。スロットル回路は、累積電力値に応じて、命令が処理される速度を調整する。たとえば、スロットル回路は、プロセッサの命令実行パイプラインに「バブル」を注入してパフォーマンスを低減する場合もあれば、プロセッサのクロックが動作する周波数を低減する場合もある。
【0019】
したがって、開示したメカニズムでは、電力消費を推定するためにプロセッサのロジック内のディジタル・イベント(活動状態)を頼りにし、命令が処理される速度によってこれらのイベントの速度を直接調整する。これにより、プロセッサの電力消費を制御するための高速かつ直接的で決定的なメカニズムが得られ、プロセッサにアナログ回路をもたらさずにそれが実行される。
【0020】
図1は、本発明を実施可能なコンピュータ・システム100の一実施形態を示すブロック図である。コンピュータ・システム100は、1つまたは複数のプロセッサ110と、メイン・メモリ140と、不揮発性メモリ150と、様々な周辺装置160と、システム・ロジック170とを含む。システム・ロジック170は、プロセッサ(複数も可)110と、メイン・メモリ140と、不揮発性メモリ150と、周辺装置160との間のデータ転送を制御する。コンピュータ・システム100は、本発明の様々な特徴を例示するために示したものである。図示の特定の構成は、本発明を実施するために必要なものではない。
【0021】
プロセッサ110は複数の機能ユニット124を含み、これらが1つの命令実行パイプライン120を形成する。命令は、メイン・メモリ140および不揮発性メモリ150からプロセッサ110に供給される。ディジタル・スロットル130は、処理された命令に応答して様々な機能ユニット124内の電力消費を監視し、それに応じてパイプライン120を通る命令フローを調整する。
【0022】
命令は、パイプライン120のステージに載せられると、まとめるとその命令を実施することになる1つまたは複数のオペレーションを実行するよう様々な機能ユニット124に指示する。たとえば、浮動小数点乗算累算命令(FMAC)では示された資源内で次のようなオペレーションが行われる可能性がある。すなわち、浮動小数点レジスタ・ファイルが3つのオペランドを読み取り、FMAC実行ユニットがそのうちの2つのオペランドを乗算し、その積を第3のオペランドに加算し、例外ユニットがその積と和についてエラーがないかどうかチェックし、エラーが検出されない場合にリタイヤメント・ユニットがその結果を浮動小数点レジスタに書き込む。特定のプロセッサ実施例に応じて、このような資源またはそのコンポーネントは1つまたは複数の機能ユニットにグループ化することができ、その機能ユニットは命令がパイプラインのステージに載せられるときにオン/オフされる。各機能ユニットは、命令によって活動化されると、所与の量の電力を消費する。
【0023】
本発明の一実施形態の場合、機能ユニット124が消費する電力は関連のパワー・ウェイトによって表される。機能ユニットが命令によって活動化されると、ディジタル・スロットル130は、そのアクティブ状態を検出し、それに関連するパワー・ウェイトをプロセッサの総電力消費の推定値に加算する。ディジタル・スロットル130は、選択した間隔にわたってこのようなオペレーションを実施し、現在実行中の命令シーケンスが消費する電力の推定値を生成し、推定電力消費が指定のしきい値レベルを超えた場合にパイプライン120を通る命令フローを調整する。
【0024】
図2は、プロセッサ110の一実施形態をより詳細に表している。開示したプロセッサ110の実施形態の場合、パイプライン120は、それぞれフェッチ(FET)ステージ、展開(EXP)ステージ、レジスタ(REG)ステージ、実行(EXE)ステージ、検出(DET)ステージ、リタイヤメント(RET)ステージとして表され、各ステージに対応する実行資源が示されている。本発明では、プロセッサ110を特定のパイプライン・ステージ・セットに区分する必要はない。たとえば、開示した1つのステージは、タイミング問題に対処するかまたはより高速のプロセッサ・クロック速度を容易にするために、2つまたはそれ以上のステージに細分することができる。別法として、2つまたはそれ以上のステージを単一ステージに結合することもできる。他の実施形態では、命令をout−of−order方式で処理するためのハードウェアを含むこともできる。開示したパイプラインは、本発明を実施するプロセッサに複数のオペレーションを区分する方法の一例のみを示している。
【0025】
パイプライン120のフロント・エンドはフェッチ・ユニット210と発行ユニット220とを含み、これらはパイプライン120のバック・エンド内の実行ユニットに命令を供給して実行する。フェッチ・ユニット210は、メモリ140から直接またはローカル・キャッシュ(図示せず)を介して命令を取り出し、フェッチした命令を発行ユニット220に供給する。発行ユニット220は、命令をデコードし、それをパイプライン120のバック・エンド内の実行資源に発行する。
【0026】
この説明全体を通して、「命令」という用語は、一般に、命令、マクロ命令、命令バンドル、またはプロセッサ・オペレーションをコード化するために使用するその他の複数のメカニズムのいずれかを指すために使用する。たとえば、デコード・オペレーションは、マクロ命令を1つまたは複数のマイクロオペレーション(μop)に変換する場合もあれば、命令バンドルを1つまたは複数の命令シラブルに分解するか、または命令に関連するマイクロコード・シーケンスを取り出す場合もある。
【0027】
パイプライン120のバック・エンドは、レジスタ・ユニット230と、実行ユニット250と、例外ユニット260と、リタイヤメント・ユニット270とを含む。レジスタ・ユニット230は、命令に指定されたレジスタを識別し、識別したレジスタからのデータにそれぞれアクセスするために、レジスタ・リネーム・ユニットと様々なレジスタ・ファイル(図示せず)とを含む。実行ユニット250は、分岐命令、整数命令、ロード/ストア命令、浮動小数点命令を処理するために、1つまたは複数の分岐実行ユニット(BRU)252と、整数実行ユニット(IEU)254と、ロード/ストア・ユニット(LSU)256と、浮動小数点実行ユニット(FPU)258とを含む。例外ユニット260は、実行ユニット250によって生成された結果をチェックし、例外条件を検出した場合に制御フローを調整する。例外条件が一切検出されない場合、リタイヤメント・ユニット270は、その結果によってプロセッサ110のアーキテクチャ状態を更新する。
【0028】
種々の命令によって活動化された機能ユニットは、パイプライン120に関して示した実行資源の様々な組合せおよびサブセットに対応する。ディジタル・スロットル130は、これらの機能ユニットの活動状態を監視し、パイプライン120を通って命令が処理される速度をそれに応じて調整する。たとえば、1つの機能ユニットが浮動小数点レジスタ(レジスタ・ユニット230内)を含む場合があり、FPU258が2つまたはそれ以上の機能ユニット内のコンポーネントを有する場合もある。一般に、機能ユニットは、まとめて活動化され非活動化される様々な実行資源(レジスタ・ファイル、実行ユニット、追跡ロジック)を含む。本発明は、図2に示す機能ユニットと実行資源間の詳細なマッピングに依存していない。
【0029】
図3は、ディジタル・スロットル130の一実施形態と、それとパイプライン120の機能ユニット124との対話を表すブロック図である。開示したディジタル・スロットル130の実施形態は、ゲート・ユニット310(1)〜310(n)(総称してゲート・ユニット130)と、監視回路320と、スロットル回路330とを含む。各ゲート・ユニット310は、機能ユニットへの電力送付を制御するために、パイプライン120内の機能ユニット124に関連づけられている。たとえば、ゲート・ユニット310は、現在、機能ユニットが動作するパイプライン・ステージ内にある命令を実施するために機能ユニット124のサービスが必要かどうかに応じて機能ユニット124にクロック信号を結合するかまたは減結合するクロック・ゲート回路にすることができる。図3には、現在実行中の命令に関してどの機能ユニットがアクティブであるかをゲート・ユニット310に示すパイプライン制御回路350も示されている。
【0030】
開示したディジタル・スロットル130の実施形態の場合、各ゲート・ユニット130は、機能ユニット124に電力が送付されているかどうかを示すための信号を監視回路320に供給する。たとえば、その信号は機能ユニット124の活動状態にすることができ、機能ユニット124が「オン」になったときにアサートされる。その信号がアサートされると、すなわち、ゲート・ユニット130が機能ユニット124に電力を供給すると、その機能ユニットのパワー・ウェイトがプロセッサ110の推定電力消費に加算される。その信号がアサートされないと、すなわち、ゲート・ユニット130が機能ユニット124への電力を遮断すると、関連のパワー・ウェイトは推定電力消費に加算されない。典型的なプロセッサは、10〜20個の機能ユニット124への電力送付を制御するために、10〜20個のゲート・ユニット310を含むことができる。
【0031】
監視回路320は、ゲート・ユニット130から信号を収集し、収集した信号からプロセッサ110の現行推定電力消費レベルを決定する。開示したディジタル・スロットル130の実施形態の場合、監視回路320は、ウェイト・ユニット314(1)〜314(n)(総称してウェイト・ユニット314)と、加算器324と、飽和回路326と、アキュムレータ328とを含む。本発明の一実施形態では、各ウェイト・ユニット314は、対応するゲート・ユニット310を介して機能ユニット124の1つに関連づけられている。ウェイト・ユニット314は、そのゲート・ユニット310からの活動状態信号がアサートされると、加算器324に電力レベルを供給する。活動状態信号がアサートされないと、ウェイト・ユニット314は0を出力する。
【0032】
加算器324は、ウェイト・ユニット134によって示されたパワー・ウェイトを合計し、その和からしきい値レベルを減算する。加算器324の出力は飽和回路326を介してアキュムレータ328に転送される。飽和回路326は、加算器324によって転送された値がオーバフローした場合のラップアラウンドを防止するために含まれている。アキュムレータ328は、転送された値をスロットル回路330に供給し、プロセッサの後続活動状態に応じて更新すべきコピー・バックも加算器324に供給する。
【0033】
アキュムレータ328の内容(「累積電力」)は、選択した間隔でスロットル回路330に供給される。スロットル回路330の一実施形態では、累積電力が正の場合、たとえば、指定の間隔にわたる累積電力消費推定値がしきい電力レベルを超えた場合に、パイプライン120を通る命令フローを低減する。スロットル回路330は、パイプライン120のバック・エンドに供給された命令ストリームに「バブル」を注入するよう、フェッチ・ユニット210に合図する。実際に、スロットル回路330は、指定の間隔に関する推定電力消費がしきい値レベルを超えると、プロセッサ・クロックのデューティ・サイクルを調整する。
【0034】
表1は、指定の間隔が128クロック・サイクルである場合のデューティ・サイクル調整値のセットを示している。
【0035】
【表1】

【0036】
表1が示す実施形態の場合、パワー・ウェイトは、機能ユニットが活動化されたときにその機能ユニットが消費する電力に比例した8〜16ビットの固定小数点数にすることができる。Xの上位8ビットは、プロセッサ・クロックのデューティ・サイクルを調整するために使用することができる。これらのビットはより低速で変化し、スロットル回路330が示す命令フローの変化をダンピングする。上記の例では、サンプリング間隔が128クロック・サイクルであり、ディジタル・スロットル130は、128通りのスロットル・レベルを提供する。これらのレベルは、推定電力消費がしきい電力消費を超えた量に比例した微調整スロットル制御を可能にする。好ましくは、スロットル回路350は、そのサンプリング間隔にわたって推定電力消費が示すオン/オフ周期を分散させる。この分散は、均一である場合もあれば、ランダムである場合もあり、他の何らかのパターンで左右される場合もある。このような分散の1つを以下に詳細に説明する。
【0037】
図4は、スロットル回路330の一実施形態の概略表現である。開示したスロットル回路330の実施形態は、メモリ装置410と、制御ユニット420と、カウンタ430とを含む。累積電力が記憶されるアキュムレータ338のレジスタ440も示されている。メモリ装置410はたとえば読取り専用メモリ(ROM)にすることができ、その項目はカウンタ420からのタイミング表示とアキュムレータ328からの累積電力レベルに応答して制御ユニット420を介してアクセスされる。
【0038】
開示したスロットル回路330の実施形態の場合、カウンタ430はモジュロ128カウンタである。カウンタ430の出力は、連続するクロック・サイクルで0〜127まで制御ユニット420内の列インデックスを増分し、127に達すると0に戻る。同様に、アキュムレータ328の出力は、累積電力の現行値に応じて制御ユニット420内の行インデックスを調整する。開示した実施形態の場合、行インデックスは、X<=0、72、124のときに、それぞれ0、71、123になる。制御ユニット420はこれらのインデックスを使用して、メモリ装置410から対応する項目を読み取る。その項目の値は、プロセッサ110の命令実行パイプラインにバブルを注入すべきかどうかを示す。たとえば、出力が0の場合はバブルを注入し、出力が1の場合はバブルを一切注入しない。
【0039】
メモリ装置410の一実施形態の場合、各行には1と0からなる種々の数が入り、0の数はその行にマッピングされたXの値でスケーリングする。たとえば、行0はすべて1を含み、したがって、累積電力レベル(X)が0を超えない場合、すなわち、動作電力推定値がしきい値レベルを超えない場合は、命令実行パイプラインにバブルが一切注入されない。パワー・スペクトルの反対側の行127は1を一切含まない。したがって、累積電力レベルが指定の量を超える限り、各クロック・サイクルごとに命令実行パイプラインにバブルが注入される。開示した例では、この量は飽和回路328によって127として決定され、すなわち、X=>127になる。行0から行127までの行には、Xの値に比例した0を入れることができる。たとえば、行67はその種々の列に分散した68個の0を含み、行111はその列全体に分散した112個の0を含み、行17はその列全体に分散した18個の0を含む。本発明の一実施形態の場合、それが指定する行の列全体に0をランダムに分散することができる。
【0040】
開示したディジタル・スロットル130の実施形態はフィードバック・ループを含む。スロットルの量は機能ユニットの活動状態によって決まり、それはスロットルの量に影響される。アキュムレータ328は経時的に積分を実行し、このフィードバック・ループに90度の遅れ移相をもたらす。安定性のため、フィードバック・ループ内のその他の遅延、すなわち移相を最小限にすることが重要である。ディジタル・フィードバック・ループの安定性基準は、おそらく、命令実行パイプラインを通り抜けるために必要なクロック・サイクル数に対応する間隔(パイプライン間隔)中にプロセッサの電力消費を著しく調整する方法によって決まることになる。たとえば、パイプライン間隔中の電力消費の変化が比較的小さくなるようにパワー・ウェイトを選択しなければならない。
【0041】
ディジタル・スロットル130の応答時間はそのフィードバック・ループによって制御される。ディジタル・スロットルは、プロセッサのコンポーネントの群挙動によって決まる巨視的現象(温度、電流)ではなくロジック内の離散信号に応答して動作するので、その応答時間は数マイクロ秒程度になる。また、サーマル・ベースのスロットル・メカニズムの応答時間は数秒程度になる。ディジタル・スロットル130は、この応答時間より持続時間が短い電力消費のピークを制御することはできない。たとえば、注入したバブルによって表されるパフォーマンス損失を最小限にするために、ディジタル・スロットル130は、電力送付システムが許す限り低速で応答する。これは、電力送付システムがこの応答時間より短い間隔についてしきい値レベルを上回るプロセッサの電力消費のピークを処理できなければならないことを意味する。このようなピークの場合、プロセッサの電源コンデンサからエネルギーを供給することができる。
【0042】
ディジタル・スロットル130は、それがプロセッサの電力消費を制御する程度が大きくなるほど効果的なものになるだろう。また、プロセッサの機能ユニットの大部分をカバーするゲート・メカニズムをプロセッサ130が実装する場合にディジタル・スロットル130は最も効果的なものになる。多くのゲート制御手段のディジタル・スロットル130は、しきい値レベルを超えたときに電力消費のレベルを迅速かつ大幅に制御することができる。同様に、機能ユニットをきめ細かく制御すると、ディジタル・スロットル130の効力が増大する。たとえば、プロセッサの実行資源をより多数の機能ユニット124に分割し、これらの機能ユニットを制御するために追加のゲート・ユニットを設けると、スロットル130はプロセッサの電力消費をより強力に制御できるようになる。
【0043】
図5は、プロセッサ内の電力をスロットリングするための本発明による方法500を表す流れ図である。方法500は、まず、510でプロセッサ内のどの機能ユニットがアクティブになっているかを決定する。機能ユニットの状態(アクティブ/非アクティブ)は、たとえば、その機能ユニットに電力を供給するクロック・ゲート回路からの信号によって示すことができる。たとえば、ゲート回路はそれが機能ユニットに電力を供給している場合(アクティブ状態)にその信号をアサートすることができ、それが現在機能ユニットに電力を供給していない場合(非アクティブ状態)にその信号をアサート解除することができる。
【0044】
510でアクティブな機能ユニットが決定されると、520でそのプロセッサの電力レベルを推定する。これは、各ゲート・ユニットが出力する信号にパワー・ウェイトを関連づけ、アサートされた各信号に関連するパワー・ウェイト分だけ推定電力レベルを増分することによって、実施することができる。アサート解除した信号に関連するウェイト付き電力は現行推定電力レベルに寄与しない。
【0045】
530で現行推定電力レベルをしきい電力レベルと比較する。しきい電力レベルは、たとえば、そのレベル以上で長期間の間、プロセッサを動作させてはならない電力レベルを表している。一実施形態の場合、現行推定電力レベルからしきい値を減算し、プロセッサの相対電力レベルの現行推定値、すなわち、累積電力にその結果を加算する。累積電力が正(EPL>しきい値)である場合、540で命令スループットを調整する。累積電力が負(EPL<しきい値)である場合、命令スループットに対する調整を一切行わない。
【0046】
プロセッサの命令スループットはいくつかのメカニズムによって低減することができる。方法500の一実施形態の場合、クロック・サイクルのうち、プロセッサの機能ユニットがアクティブになっている部分を低減するために、命令実行パイプラインにバブルを注入することができる。たとえば、プロセッサ・クロックの選択したサイクルでのみ命令を発行するよう発行ユニットをトリガすることによってバブルを導入することができる。本発明の他の実施形態の場合、プロセッサのクロックが動作する周波数を低減することができる。
【0047】
本発明の利点の1つは、プロセッサ・パイプラインの実行資源がパイプラインの機能ユニットにおける活動のレベルに応じて調整されることである。電力消費を推定するためのサーマル・ベースまたは電流ベースの技法とは異なり、ディジタル・スロットルが監視する機能ユニットの活動は、プロセッサ内の個々のパイプラインに特有のものである。その結果、特定のユニットに活動および電力消費を割り当てる際の特異性は、単一のプロセッサ・チップ上で複数の実行コアを実施するプロセッサで特に有用である。この場合、「実行コア」とは、完全なプロセッサに関連する実行資源を指すので、複数実行コア・プロセッサは単一チップ上で複数のプロセッサを効果的に実施する。本発明のディジタル・スロットルにより、多大な電力を必要とするコード・セグメントを処理する実行コアは、総電力消費量がしきい値レベルを超えない限り、残りの実行コア(複数も可)から電力を効果的に借りることができる。別法として、その命令実行パイプライン内の活動に応じて、各実行コアをスロットリングすることができる。
【0048】
図6Aは、本発明が実施される複数実行コア・プロセッサ610の一実施形態を示すブロック・レベル図である。プロセッサ610は実行コア620(a)〜620(n)(総称して実行コア(複数も可)630)を含む。各実行コア620は、実行パイプライン640を形成する機能ユニット630を含む。共用ディジタル・スロットル650は、すべてのパイプライン640の機能ユニット630内の活動を監視して調整する。プロセッサ110のこの実施形態により、各実行コア620は、総電力しきい値を超えない限り、残りの実行コアから電力を借りることができる。
【0049】
図6Bは、本発明が実施される複数実行コア・プロセッサ660の他の実施形態を示すブロック・レベル図である。プロセッサ660は実行コア620(a)〜620(n)(総称して実行コア(複数も可)630)を含み、そのそれぞれは、実行パイプライン640を形成する機能ユニット630を含む。各実行コア630は、その機能ユニット630内の活動を監視して調整するためのディジタル・スロットル650も含む。プロセッサ110のこの実施形態により、各実行コア620は、それに関連するディジタル・スロットル630によって独立してスロットリングすることができる。
【0050】
したがって、プロセッサの機能ユニットの活動状態に応じてプロセッサ内の電力消費を制御するディジタル・スロットルが提供されている。命令実行中に活動状態を監視し、活動状態から推定した電力消費レベルに応じて実行速度を調整する。推定電力消費に応答して命令実行ストリーム内に「バブル」またはNOPを注入することにより、電力消費を制御することができる。
【0051】
本発明の一実施形態の場合、各機能ユニットにパワー・ユニットを割り当て、アクティブになっている各機能ユニットのパワー・ウェイトを合計することによりプロセッサの電力消費を推定する。推定電力消費量がしきい値を超えると、ディジタル・スロットルは、プロセッサが命令を実行する速度を低減する。プロセッサの設計またはテスト段階での較正手順によって様々な機能ユニットのパワー・ウェイトを決定することができる。また、ディジタル・スロットルは、自己較正手順を実施するための回路も含むことができる。
【0052】
開示した実施形態は、本発明の様々な特徴を例示するために提供されている。この開示内容の恩恵を受けるプロセッサ設計の当業者であれば、開示した実施形態の変形および変更を認識できるだろうが、それにもかかわらず、その変形および変更は特許請求の範囲の精神および範囲に含まれるものである。

【特許請求の範囲】
【請求項1】
複数の機能ユニットと、
前記複数の機能ユニットのそれぞれに対する電力供給を制御し、前記複数の機能ユニットに供給された電力レベルを示す信号を出力する複数のゲート回路と、
示された前記電力レベルを反映した推定電力レベルをしきい電力レベルと比較する監視回路と、
前記推定電力レベルが前記しきい電力レベルを超えた場合にプロセッサ内の命令フローを調整するスロットル回路とを含む、プロセッサ。
【請求項2】
前記複数の機能ユニットが、プロセッサ用の命令実行パイプラインを形成する請求項1に記載のプロセッサ。
【請求項3】
各ゲート回路が前記複数の機能ユニットのうちの対応する1つの機能ユニットへの電力供給を制御する請求項2に記載のプロセッサ。
【請求項4】
スロットル回路がプロセッサ・パイプラインにバブルを注入して、プロセッサ内の命令フローを調整する請求項3に記載のプロセッサ。
【請求項5】
前記信号によって示される電力レベルは、機能ユニットが動作状態であるときの機能ユニットの電力消費レベルを表す請求項1に記載のプロセッサ。
【請求項6】
スロットル回路が、ゲート回路によって出力されるクロックのデューティ・サイクルを低減して、プロセッサを通る命令フローを調整する請求項1に記載のプロセッサ。
【請求項7】
プロセッサ内の電力消費を制御する方法であって、
前記プロセッサ内のゲート回路から電力信号を収集し、
収集した前記電力信号に応じて推定電力消費レベルを調整し、
前記推定電力消費レベルをしきい電力消費レベルと比較し、
前記推定電力消費レベルが前記しきい電力消費レベルを超えるときに前記プロセッサによる命令実行速度を調整することを含む方法。
【請求項8】
前記命令実行速度を調整する前に、選択した周期の間、前記推定電力消費レベルを累積することをさらに含む請求項7に記載の方法。
【請求項9】
前記電力信号を収集することが、ゲート回路に関連する機能ユニットに現在供給されている電力レベルを示す信号を収集することを含む請求項7に記載の方法。
【請求項10】
各ゲート回路が、それに関連する機能ユニットに出力されたクロック信号を制御する請求項7に記載の方法。
【請求項11】
前記命令実行速度を調整することが、前記ゲート回路によって出力されたクロック信号を特徴づけるデューティ・サイクルを調整することを含む請求項10に記載の方法。
【請求項12】
前記推定電力消費レベルを累積することが、プロセッサ・クロックの選択したサイクル数について推定電力消費レベルを累積することを含む請求項8に記載の方法。
【請求項13】
前記請求項1ないし3のいずれかに記載されたプロセッサと、
前記プロセッサにより実行する命令を記憶するメモリ・システムとからなるコンピュータ・システム。
【請求項14】
複数の機能ユニットと、
複数のゲート・ユニットであって、各ゲート・ユニットが前記複数の機能ユニットのうちの関連する1つへの電力供給を制御し、前記複数の機能ユニットに供給された電力レベルを示す信号を出力する複数のゲート・ユニットと、
示された前記電力レベルを反映した推定電力レベルをしきい電力レベルと比較する監視回路と、
前記推定電力レベルが前記しきい電力レベルを超えた場合にプロセッサ内の命令フローを調整するスロットル回路とを含むプロセッサ。
【請求項15】
監視回路が前記推定電力消費レベルをしきい値と比較し、比較の表示を行う請求項14に記載のプロセッサ。
【請求項16】
前記複数の機能ユニットが命令実行パイプラインを形成し、前記プロセッサが、命令実行パイプライン内の命令のタイプに応じて前記複数の機能ユニットの活動状態を示すパイプライン制御モジュールをさらに含む請求項14に記載のプロセッサ。
【請求項17】
前記スロットル回路が、前記複数の機能ユニットの活動状態を使用してプロセッサの電力消費レベルを推定する監視回路をさらに含む請求項16に記載のプロセッサ。
【請求項18】
機能ユニットと、
前記機能ユニットに対する電力供給を制御し、前記機能ユニットに供給された電力レベルを示す信号を出力するゲート回路と、
示された前記電力レベルを反映した推定電力レベルをしきい電力レベルと比較する監視回路と、
前記推定電力レベルが前記しきい電力レベルを超えた場合にプロセッサ内の命令フローを調整するスロットル回路とを含むプロセッサであって、
前記スロットル回路は、前記機能ユニットを有するプロセッサパイプラインにバブルを注入して、プロセッサ内の命令実行速度を調整するプロセッサ。
【請求項19】
単一のプロセッサ・チップ上で複数の実行コアを有するプロセッサ内の電力消費を制御する方法であって、
プロセッサ内の複数のゲート回路から、前記複数のゲート回路に関連する複数の機能ユニットに現在供給されている電力レベルを示す電力信号を収集し、
前記収集した電力信号に応じて推定電力消費レベルを調整し、
前記推定電力消費レベルをしきい電力消費レベルと比較し、
累積された推定電力消費レベルが前記しきい電力消費レベルを超えるときに前記プロセッサによる命令実行速度を調整することを含み、
前記複数の機能ユニットは、第1の実行コアの第1パイプラインの一部であり、第2の実行コアは、機能ユニットの第2のセットを備えた第2のパイプラインを有し、
前記プロセッサにより前記命令実行速度を調整することは、前記第1の実行コアと前記第2の実行コアにより共有される共有デジタル・スロットルにより実行され、前記第1及び第2のパイプラインの両者の前記機能ユニットにおいて命令実行速度を調整することを含む方法。
【請求項20】
1つまたは複数の機能ユニットを有する第1の実行コアと、
1つまたは複数の機能ユニットを有する第2の実行コアと、
プロセッサの前記第1の実行コアに対する電力消費レベルを示す、前記第1の実行コアの1つまたは複数の機能ユニットの活動状態を監視する前記第1の実行コアの第1のデジタル・スロットルと、
前記第1の実行コアの1つまたは複数の機能ユニットの前記示された活動状態より、前記プロセッサの前記第1の実行コアの前記電力消費レベルを決定する監視回路と、
前記第2の実行コアの第2のデジタル・スロットルと、
を備え、
前記第1のデジタル・スロットルは、1つまたは複数のゲート回路を有し、各ゲート回路は前記第1の実行コアの前記機能ユニットのうち関連する1つへの電力供給を制御し、前記関連する機能ユニットに対する活動状態を示すことを特徴とするプロセッサ。
【請求項21】
機能ユニットと、
前記機能ユニットに対する電力供給を制御し、前記機能ユニットに供給された電力レベルを示す信号を出力するゲート回路と、
示された前記電力レベルを反映した推定電力レベルをしきい電力レベルと比較する監視回路と、
前記推定電力レベルが前記しきい電力レベルを超えた場合にプロセッサ内の命令フローを調整するスロットル回路と、
を備え、
前記スロットル回路は、前記命令フローを調整するために前記プロセッサのクロックの周波数を低減させ、前記推定電力レベルが前記しきい電力レベルを超えた量に基づいてスロットリングすることを特徴とするプロセッサ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6A】
image rotate

【図6B】
image rotate


【公開番号】特開2012−198922(P2012−198922A)
【公開日】平成24年10月18日(2012.10.18)
【国際特許分類】
【出願番号】特願2012−130447(P2012−130447)
【出願日】平成24年6月8日(2012.6.8)
【分割の表示】特願2001−549170(P2001−549170)の分割
【原出願日】平成12年11月21日(2000.11.21)
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】