(57)【要約】【課題】プロセッサ内の電力消費を調整するためのディジタルベースのメカニズムを提供する。【解決手段】本発明は、プロセッサ内の電力消費を調整するためのディジタルベースのメカニズムを提供する。このプロセッサは、１つまたは複数の機能ユニットと、プロセッサの機能ユニットの活動状態を監視して、プロセッサの電力消費を推定するディジタル・スロットルとを含む。このディジタル・スロットルの一実施形態は、１つまたは複数のゲート・ユニットと、１つの監視回路（３２０）と、１つのスロットル回路（３３０）とを含む。各ゲート・ユニットは、プロセッサの機能ユニットへの電力送付を制御し、その関連機能ユニットの活動状態を示す信号を出力する。監視回路は、信号から推定電力消費レベルを決定し、その推定電力消費としきい電力レベルを比較する。推定電力消費レベルがしきい電力レベルを超える場合、スロットル回路はプロセッサ内の命令フローを調整する。【選択図】図３
2014112399.tif 000002
【特許請求の範囲】
【請求項１】
複数の機能ユニットと、
前記複数の機能ユニットのそれぞれに対する電力供給を制御し、前記複数の機能ユニットに供給された電力レベルを示す信号を出力する複数のゲート回路と、
示された前記電力レベルを反映した推定電力レベルをしきい電力レベルと比較する監視回路と、
前記推定電力レベルが前記しきい電力レベルを超えた場合にプロセッサ内の命令フローを調整するスロットル回路とを含む、プロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサに関し、特に、マイクロプロセッサ内の電力消費を制御するためのメカニズムに関する。
【背景技術】
【０００２】
最新のプロセッサは、複数命令の並行処理をサポートするために多くの実行資源を含んでいる。通常、プロセッサは、それぞれ、整数命令、浮動小数点命令、分岐命令、ロード／ストア命令を実施するために、１つまたは複数の整数実行ユニット、浮動小数点実行ユニット、分岐実行ユニット、メモリ実行ユニットを含む。そのうえ、整数ユニットと浮動小数点ユニットは通常、プロセッサ・コアに比較的密接なデータを維持管理するためのレジスタ・ファイルを含む。多くの実行資源をプロセッサに設ける場合の欠点の１つは、それらを動作させるために大量の電力を必要とすることである。種々の実行ユニットは、それらのサイズおよびそれらが実施する機能に応じて、多かれ少なかれ電力を消費するがあるが、比較的小さいプロセス・チップ上に非常に多くのロジックをパッキングすることによる最終結果として、重大な電力損問題の可能性が生じる。
【０００３】
相当な間隔の間プロセッサの実行資源の全域を必要とするプログラムはほとんどない。プログラムを実行することによって浪費する電力は、そのコンポーネント命令の性質と、その命令が並行して実行される可能性によって決まる。プログラムは通常、様々な命令タイプを含むが、相当な期間の間、プロセッサのすべての実行資源を使用中として保持するために適切なタイプの沢山の命令が使用可能であることはめったにない。このため、ほとんどのプロセッサではクロック・ゲート・メカニズムを使用し、実行資源を使用していないときにその実行資源に送られるクロックを遮断し、それにより電力を削減する。そのうえ、実行資源の種々のコンポーネントは、そのコンポーネントが処理するパイプ・ステージに命令が出入りするときに、オン／オフすることができる。その結果、平均的なプログラムが浪費する電力レベルは比較的管理しやすいものになる可能性がある。      
【０００４】
プログラムによっては、比較的長い間プロセッサの実行資源の多くを活動化し、その結果、平均的なプログラムよりかなり多くの電力を浪費するものがある。プロセッサの電力消費を制限するためのメカニズムが設けられていない場合、そのプロセッサは、一般に、最大電力を消費するプログラムを取り扱うように設計されている。このため、平均的なプログラムを実行するために必要な電力とは無関係に、すべてのプログラムについて、その最高パフォーマンス・レベル未満でプロセッサを動作させることが必要になる場合もある。      
【０００５】
パワー・スロットルは、ハイ・パフォーマンス・プロセッサによって発生する電力消費問題を取り扱うために提案された戦略である。パワー・スロットルは、プロセッサの電力消費が高くなりすぎると、そのプロセッサのパフォーマンスを低下させる。これは、電力消費が安全なレベルに低下するまでプロセッサが命令を実行する速度を一時的に低減することによって実行することができる。パワー・スロットルにより、平均的なプログラムが実行される電力レベルに対応してプロセッサを設計することができる。多大な資源を必要とするプログラムを実行すると、プロセッサはその命令実行速度を低減して、その電力消費を既定の制限内に維持する。      
【０００６】
提案されているパワー・スロットル・メカニズムは、プロセッサが浪費する電力を監視するためにアナログ・パラメータを頼りにしている。たとえば、サーマル・スロットル・メカニズムは、プロセッサ・チップの温度を監視し、その温度がしきい値を超えるとプロセッサの実行速度を低減する。プロセッサが消費する電流またはスイッチング・レギュレータ内のパルス幅変調器のデューティ・サイクルを監視するために、その他のスロットル方式も提案されている。      
【０００７】
このようなパワー・スロットル・メカニズムにはいくつかの欠点がある。このようなメカニズムは、主にディジタルの環境、すなわち、プロセッサ内に追加のアナログ回路をもたらすことになる。このようなメカニズムは、プロセッサの環境（温度、電圧、構成）の変化によって様々になる傾向がある。また、このようなメカニズムは、プロセッサが消費する電力を直接制限するわけではなく、決定的なものではない。すなわち、その挙動はクロック単位で予測することができない。      
【０００８】
本発明は、使用可能なパワー・スロットル・メカニズムの上記その他の欠点に対処するものである。      
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明は、マイクロプロセッサの電力消費を制御するためのディジタル・スロットルを提供する。      
【００１０】
本発明によれば、プロセッサは、１つまたは複数の機能ユニットと、ディジタル・スロットルとを含む。ディジタル・スロットルは、プロセッサの機能ユニットの活動状態を監視して、プロセッサの電力消費を推定する。  
【課題を解決するための手段】
【００１１】
本発明の一実施態様の場合、ディジタル・スロットルは、１つまたは複数のゲート・ユニットと、１つの監視回路と、１つのスロットル回路とを含む。各ゲート・ユニットは、プロセッサの機能ユニットへの電力送付を制御し、その関連機能ユニットの活動状態を示す信号を出力する。監視回路は、信号からそのプロセッサの推定電力消費を決定し、その推定電力消費としきい電力レベルを比較する。推定電力消費レベルがしきい電力レベルを超える場合、スロットル回路はプロセッサ内の命令フローを調整する。      
【００１２】
本発明は添付図面を参照して理解可能であるが、その添付図面では同様の要素は同様の番号で示されている。これらの図面は、本発明の特定の実施形態を例示するために提供するものであり、本発明の範囲を制限するためのものではない。      
【図面の簡単な説明】
【００１３】
【図１】本発明を実施することができるコンピュータ・システムの一実施形態を示すブロック図である。
【図２】本発明によるディジタル・パワー・スロットルを実現するプロセッサの一実施形態を示すブロック図である。
【図３】図２のプロセッサによって実現されるディジタル・パワー・スロットルの一実施形態を示すブロック図である。
【図４】図３のスロットル回路の一実施形態を表す概略図である。
【図５】プロセッサの電力消費を調整するための本発明による方法を表す流れ図である。
【図６Ａ】本発明によるディジタル・スロットルを実現する複数実行コア・プロセッサの実施形態を表すブロック図である。
【図６Ｂ】本発明によるディジタル・スロットルを実現する複数実行コア・プロセッサの実施形態を表すブロック図である。
【発明を実施するための形態】
【００１４】
以下の説明では、本発明を完全に理解できるようにするために多くの具体的な詳細を示している。しかし、この開示内容の恩恵を受ける当業者は、このような具体的な詳細がなくても本発明を実施可能であることが分かるだろう。さらに、本発明の特徴に焦点を当てるために、様々な周知の方法、手順、構成要素、回路については詳細に説明していない。
【００１５】
本発明は、一連の命令に応答してプロセッサの機能ユニットの活動を監視してプロセッサの電力損を制御するためのメカニズムを提供する。その活動、たとえば、現在進行中の命令によってどの機能ユニットが活動化されるかは、対応する機能ユニットがオンかオフかを示す２進信号によって表すことができる。プロセッサが消費する電力の推定値は、現在「オン」になっている各機能ユニットに関連するパワー・ウェイトを合計することによって得られる。機能ユニットのパワー・ウェイトは、その機能ユニットが活動化されたときに消費する電力の量を表す。推定電力がしきい値レベルを超えた場合、スロットル・メカニズムはプロセッサを通る命令フローを調整して、機能ユニットの活動を低減する。
【００１６】
各機能ユニットのパワー・ウェイトは、較正プロセスによって決定することができる。たとえば、デジタル・スロットルは設計プロセスの一部として１回較正される場合もあれば、自己較正し続ける場合もある。後者の場合、ディジタル・スロットルは、電流監視回路と較正アルゴリズムを使用して、定期的に各機能ユニットごとにパワー・ウェイトを調整することができる。      
【００１７】
本発明の一実施形態の場合、現在進行中の命令に応答して機能ユニットへの電力送付を制御するために、各機能ユニットに１つのゲート・ユニットが関連づけられている。パイプライン制御回路は、各ゲート・ユニットにそれに関連する機能ユニットのオン／オフ状態を示す。各ゲート・ユニットからの信号は、それに関連する機能ユニットのオン／オフ状態を監視回路に示す。監視回路は、示された状態に応じて、対応するパワー・ウェイトをプロセッサの現行電力消費の推定値に含めるかまたはそのパワー・ウェイトを無視する。別法として、各ゲート・ユニット信号は、それに関連する機能ユニットが「オン」になっているときにその機能ユニットのパワー・ウェイトを監視回路に連絡することもできる。本発明の他の実施形態では、推定電力で考慮すべきパワー・ウェイトを示すために他のメカニズムを使用することができる。      
【００１８】
監視回路は、アクティブな機能ユニットのパワー・ウェイトを合計し、それをしきい値と比較して、プロセッサの電力消費のクロック単位の推定値を出力する。ディジタル・スロットルの一実施形態の場合、複数のクロック・サイクルにわたってこのような推定値を累積し、プロセッサの電力消費のクロック単位の変動を平滑化する累積電力値を出力する。スロットル回路は、累積電力値に応じて、命令が処理される速度を調整する。たとえば、スロットル回路は、プロセッサの命令実行パイプラインに「バブル」を注入してパフォーマンスを低減する場合もあれば、プロセッサのクロックが動作する周波数を低減する場合もある。      
【００１９】
したがって、開示したメカニズムでは、電力消費を推定するためにプロセッサのロジック内のディジタル・イベント（活動状態）を頼りにし、命令が処理される速度によってこれらのイベントの速度を直接調整する。これにより、プロセッサの電力消費を制御するための高速かつ直接的で決定的なメカニズムが得られ、プロセッサにアナログ回路をもたらさずにそれが実行される。      
【００２０】
図１は、本発明を実施可能なコンピュータ・システム１００の一実施形態を示すブロック図である。コンピュータ・システム１００は、１つまたは複数のプロセッサ１１０と、メイン・メモリ１４０と、不揮発性メモリ１５０と、様々な周辺装置１６０と、システム・ロジック１７０とを含む。システム・ロジック１７０は、プロセッサ（複数も可）１１０と、メイン・メモリ１４０と、不揮発性メモリ１５０と、周辺装置１６０との間のデータ転送を制御する。コンピュータ・システム１００は、本発明の様々な特徴を例示するために示したものである。図示の特定の構成は、本発明を実施するために必要なものではない。      
【００２１】
プロセッサ１１０は複数の機能ユニット１２４を含み、これらが１つの命令実行パイプライン１２０を形成する。命令は、メイン・メモリ１４０および不揮発性メモリ１５０からプロセッサ１１０に供給される。ディジタル・スロットル１３０は、処理された命令に応答して様々な機能ユニット１２４内の電力消費を監視し、それに応じてパイプライン１２０を通る命令フローを調整する。      
【００２２】
命令は、パイプライン１２０のステージに載せられると、まとめるとその命令を実施することになる１つまたは複数のオペレーションを実行するよう様々な機能ユニット１２４に指示する。たとえば、浮動小数点乗算累算命令（ＦＭＡＣ）では示された資源内で次のようなオペレーションが行われる可能性がある。すなわち、浮動小数点レジスタ・ファイルが３つのオペランドを読み取り、ＦＭＡＣ実行ユニットがそのうちの２つのオペランドを乗算し、その積を第３のオペランドに加算し、例外ユニットがその積と和についてエラーがないかどうかチェックし、エラーが検出されない場合にリタイヤメント・ユニットがその結果を浮動小数点レジスタに書き込む。特定のプロセッサ実施例に応じて、このような資源またはそのコンポーネントは１つまたは複数の機能ユニットにグループ化することができ、その機能ユニットは命令がパイプラインのステージに載せられるときにオン／オフされる。各機能ユニットは、命令によって活動化されると、所与の量の電力を消費する。
【００２３】
本発明の一実施形態の場合、機能ユニット１２４が消費する電力は関連のパワー・ウェイトによって表される。機能ユニットが命令によって活動化されると、ディジタル・スロットル１３０は、そのアクティブ状態を検出し、それに関連するパワー・ウェイトをプロセッサの総電力消費の推定値に加算する。ディジタル・スロットル１３０は、選択した間隔にわたってこのようなオペレーションを実施し、現在実行中の命令シーケンスが消費する電力の推定値を生成し、推定電力消費が指定のしきい値レベルを超えた場合にパイプライン１２０を通る命令フローを調整する。      
【００２４】
図２は、プロセッサ１１０の一実施形態をより詳細に表している。開示したプロセッサ１１０の実施形態の場合、パイプライン１２０は、それぞれフェッチ（ＦＥＴ）ステージ、展開（ＥＸＰ）ステージ、レジスタ（ＲＥＧ）ステージ、実行（ＥＸＥ）ステージ、検出（ＤＥＴ）ステージ、リタイヤメント（ＲＥＴ）ステージとして表され、各ステージに対応する実行資源が示されている。本発明では、プロセッサ１１０を特定のパイプライン・ステージ・セットに区分する必要はない。たとえば、開示した１つのステージは、タイミング問題に対処するかまたはより高速のプロセッサ・クロック速度を容易にするために、２つまたはそれ以上のステージに細分することができる。別法として、２つまたはそれ以上のステージを単一ステージに結合することもできる。他の実施形態では、命令をｏｕｔ−ｏｆ−ｏｒｄｅｒ方式で処理するためのハードウェアを含むこともできる。開示したパイプラインは、本発明を実施するプロセッサに複数のオペレーションを区分する方法の一例のみを示している。      
【００２５】
パイプライン１２０のフロント・エンドはフェッチ・ユニット２１０と発行ユニット２２０とを含み、これらはパイプライン１２０のバック・エンド内の実行ユニットに命令を供給して実行する。フェッチ・ユニット２１０は、メモリ１４０から直接またはローカル・キャッシュ（図示せず）を介して命令を取り出し、フェッチした命令を発行ユニット２２０に供給する。発行ユニット２２０は、命令をデコードし、それをパイプライン１２０のバック・エンド内の実行資源に発行する。      
【００２６】
この説明全体を通して、「命令」という用語は、一般に、命令、マクロ命令、命令バンドル、またはプロセッサ・オペレーションをコード化するために使用するその他の複数のメカニズムのいずれかを指すために使用する。たとえば、デコード・オペレーションは、マクロ命令を１つまたは複数のマイクロオペレーション（μｏｐ）に変換する場合もあれば、命令バンドルを１つまたは複数の命令シラブルに分解するか、または命令に関連するマイクロコード・シーケンスを取り出す場合もある。      
【００２７】
パイプライン１２０のバック・エンドは、レジスタ・ユニット２３０と、実行ユニット２５０と、例外ユニット２６０と、リタイヤメント・ユニット２７０とを含む。レジスタ・ユニット２３０は、命令に指定されたレジスタを識別し、識別したレジスタからのデータにそれぞれアクセスするために、レジスタ・リネーム・ユニットと様々なレジスタ・ファイル（図示せず）とを含む。実行ユニット２５０は、分岐命令、整数命令、ロード／ストア命令、浮動小数点命令を処理するために、１つまたは複数の分岐実行ユニット（ＢＲＵ）２５２と、整数実行ユニット（ＩＥＵ）２５４と、ロード／ストア・ユニット（ＬＳＵ）２５６と、浮動小数点実行ユニット（ＦＰＵ）２５８とを含む。例外ユニット２６０は、実行ユニット２５０によって生成された結果をチェックし、例外条件を検出した場合に制御フローを調整する。例外条件が一切検出されない場合、リタイヤメント・ユニット２７０は、その結果によってプロセッサ１１０のアーキテクチャ状態を更新する。      
【００２８】
種々の命令によって活動化された機能ユニットは、パイプライン１２０に関して示した実行資源の様々な組合せおよびサブセットに対応する。ディジタル・スロットル１３０は、これらの機能ユニットの活動状態を監視し、パイプライン１２０を通って命令が処理される速度をそれに応じて調整する。たとえば、１つの機能ユニットが浮動小数点レジスタ（レジスタ・ユニット２３０内）を含む場合があり、ＦＰＵ２５８が２つまたはそれ以上の機能ユニット内のコンポーネントを有する場合もある。一般に、機能ユニットは、まとめて活動化され非活動化される様々な実行資源（レジスタ・ファイル、実行ユニット、追跡ロジック）を含む。本発明は、図２に示す機能ユニットと実行資源間の詳細なマッピングに依存していない。      
【００２９】
図３は、ディジタル・スロットル１３０の一実施形態と、それとパイプライン１２０の機能ユニット１２４との対話を表すブロック図である。開示したディジタル・スロットル１３０の実施形態は、ゲート・ユニット３１０（１）〜３１０（ｎ）（総称してゲート・ユニット１３０）と、監視回路３２０と、スロットル回路３３０とを含む。各ゲート・ユニット３１０は、機能ユニットへの電力送付を制御するために、パイプライン１２０内の機能ユニット１２４に関連づけられている。たとえば、ゲート・ユニット３１０は、現在、機能ユニットが動作するパイプライン・ステージ内にある命令を実施するために機能ユニット１２４のサービスが必要かどうかに応じて機能ユニット１２４にクロック信号を結合するかまたは減結合するクロック・ゲート回路にすることができる。図３には、現在実行中の命令に関してどの機能ユニットがアクティブであるかをゲート・ユニット３１０に示すパイプライン制御回路３５０も示されている。      
【００３０】
開示したディジタル・スロットル１３０の実施形態の場合、各ゲート・ユニット１３０は、機能ユニット１２４に電力が送付されているかどうかを示すための信号を監視回路３２０に供給する。たとえば、その信号は機能ユニット１２４の活動状態にすることができ、機能ユニット１２４が「オン」になったときにアサートされる。その信号がアサートされると、すなわち、ゲート・ユニット１３０が機能ユニット１２４に電力を供給すると、その機能ユニットのパワー・ウェイトがプロセッサ１１０の推定電力消費に加算される。その信号がアサートされないと、すなわち、ゲート・ユニット１３０が機能ユニット１２４への電力を遮断すると、関連のパワー・ウェイトは推定電力消費に加算されない。典型的なプロセッサは、１０〜２０個の機能ユニット１２４への電力送付を制御するために、１０〜２０個のゲート・ユニット３１０を含むことができる。      
【００３１】
監視回路３２０は、ゲート・ユニット１３０から信号を収集し、収集した信号からプロセッサ１１０の現行推定電力消費レベルを決定する。開示したディジタル・スロットル１３０の実施形態の場合、監視回路３２０は、ウェイト・ユニット３１４（１）〜３１４（ｎ）（総称してウェイト・ユニット３１４）と、加算器３２４と、飽和回路３２６と、アキュムレータ３２８とを含む。本発明の一実施形態では、各ウェイト・ユニット３１４は、対応するゲート・ユニット３１０を介して機能ユニット１２４の１つに関連づけられている。ウェイト・ユニット３１４は、そのゲート・ユニット３１０からの活動状態信号がアサートされると、加算器３２４に電力レベルを供給する。活動状態信号がアサートされないと、ウェイト・ユニット３１４は０を出力する。      
【００３２】
加算器３２４は、ウェイト・ユニット１３４によって示されたパワー・ウェイトを合計し、その和からしきい値レベルを減算する。加算器３２４の出力は飽和回路３２６を介してアキュムレータ３２８に転送される。飽和回路３２６は、加算器３２４によって転送された値がオーバフローした場合のラップアラウンドを防止するために含まれている。アキュムレータ３２８は、転送された値をスロットル回路３３０に供給し、プロセッサの後続活動状態に応じて更新すべきコピー・バックも加算器３２４に供給する。      
【００３３】
アキュムレータ３２８の内容（「累積電力」）は、選択した間隔でスロットル回路３３０に供給される。スロットル回路３３０の一実施形態では、累積電力が正の場合、たとえば、指定の間隔にわたる累積電力消費推定値がしきい電力レベルを超えた場合に、パイプライン１２０を通る命令フローを低減する。スロットル回路３３０は、パイプライン１２０のバック・エンドに供給された命令ストリームに「バブル」を注入するよう、フェッチ・ユニット２１０に合図する。実際に、スロットル回路３３０は、指定の間隔に関する推定電力消費がしきい値レベルを超えると、プロセッサ・クロックのデューティ・サイクルを調整する。      
【００３４】
表１は、指定の間隔が１２８クロック・サイクルである場合のデューティ・サイクル調整値のセットを示している。      
【００３５】
【表１】
2014112399.tif 000003
【００３６】
表１が示す実施形態の場合、パワー・ウェイトは、機能ユニットが活動化されたときにその機能ユニットが消費する電力に比例した８〜１６ビットの固定小数点数にすることができる。Ｘの上位８ビットは、プロセッサ・クロックのデューティ・サイクルを調整するために使用することができる。これらのビットはより低速で変化し、スロットル回路３３０が示す命令フローの変化をダンピングする。上記の例では、サンプリング間隔が１２８クロック・サイクルであり、ディジタル・スロットル１３０は、１２８通りのスロットル・レベルを提供する。これらのレベルは、推定電力消費がしきい電力消費を超えた量に比例した微調整スロットル制御を可能にする。好ましくは、スロットル回路３５０は、そのサンプリング間隔にわたって推定電力消費が示すオン／オフ周期を分散させる。この分散は、均一である場合もあれば、ランダムである場合もあり、他の何らかのパターンで左右される場合もある。このような分散の１つを以下に詳細に説明する。      
【００３７】
図４は、スロットル回路３３０の一実施形態の概略表現である。開示したスロットル回路３３０の実施形態は、メモリ装置４１０と、制御ユニット４２０と、カウンタ４３０とを含む。累積電力が記憶されるアキュムレータ３３８のレジスタ４４０も示されている。メモリ装置４１０はたとえば読取り専用メモリ（ＲＯＭ）にすることができ、その項目はカウンタ４２０からのタイミング表示とアキュムレータ３２８からの累積電力レベルに応答して制御ユニット４２０を介してアクセスされる。      
【００３８】
開示したスロットル回路３３０の実施形態の場合、カウンタ４３０はモジュロ１２８カウンタである。カウンタ４３０の出力は、連続するクロック・サイクルで０〜１２７まで制御ユニット４２０内の列インデックスを増分し、１２７に達すると０に戻る。同様に、アキュムレータ３２８の出力は、累積電力の現行値に応じて制御ユニット４２０内の行インデックスを調整する。開示した実施形態の場合、行インデックスは、Ｘ＜＝０、７２、１２４のときに、それぞれ０、７１、１２３になる。制御ユニット４２０はこれらのインデックスを使用して、メモリ装置４１０から対応する項目を読み取る。その項目の値は、プロセッサ１１０の命令実行パイプラインにバブルを注入すべきかどうかを示す。たとえば、出力が０の場合はバブルを注入し、出力が１の場合はバブルを一切注入しない。
【００３９】
メモリ装置４１０の一実施形態の場合、各行には１と０からなる種々の数が入り、０の数はその行にマッピングされたＸの値でスケーリングする。たとえば、行０はすべて１を含み、したがって、累積電力レベル（Ｘ）が０を超えない場合、すなわち、動作電力推定値がしきい値レベルを超えない場合は、命令実行パイプラインにバブルが一切注入されない。パワー・スペクトルの反対側の行１２７は１を一切含まない。したがって、累積電力レベルが指定の量を超える限り、各クロック・サイクルごとに命令実行パイプラインにバブルが注入される。開示した例では、この量は飽和回路３２８によって１２７として決定され、すなわち、Ｘ＝＞１２７になる。行０から行１２７までの行には、Ｘの値に比例した０を入れることができる。たとえば、行６７はその種々の列に分散した６８個の０を含み、行１１１はその列全体に分散した１１２個の０を含み、行１７はその列全体に分散した１８個の０を含む。本発明の一実施形態の場合、それが指定する行の列全体に０をランダムに分散することができる。      
【００４０】
開示したディジタル・スロットル１３０の実施形態はフィードバック・ループを含む。スロットルの量は機能ユニットの活動状態によって決まり、それはスロットルの量に影響される。アキュムレータ３２８は経時的に積分を実行し、このフィードバック・ループに９０度の遅れ移相をもたらす。安定性のため、フィードバック・ループ内のその他の遅延、すなわち移相を最小限にすることが重要である。ディジタル・フィードバック・ループの安定性基準は、おそらく、命令実行パイプラインを通り抜けるために必要なクロック・サイクル数に対応する間隔（パイプライン間隔）中にプロセッサの電力消費を著しく調整する方法によって決まることになる。たとえば、パイプライン間隔中の電力消費の変化が比較的小さくなるようにパワー・ウェイトを選択しなければならない。      
【００４１】
ディジタル・スロットル１３０の応答時間はそのフィードバック・ループによって制御される。ディジタル・スロットルは、プロセッサのコンポーネントの群挙動によって決まる巨視的現象（温度、電流）ではなくロジック内の離散信号に応答して動作するので、その応答時間は数マイクロ秒程度になる。また、サーマル・ベースのスロットル・メカニズムの応答時間は数秒程度になる。ディジタル・スロットル１３０は、この応答時間より持続時間が短い電力消費のピークを制御することはできない。たとえば、注入したバブルによって表されるパフォーマンス損失を最小限にするために、ディジタル・スロットル１３０は、電力送付システムが許す限り低速で応答する。これは、電力送付システムがこの応答時間より短い間隔についてしきい値レベルを上回るプロセッサの電力消費のピークを処理できなければならないことを意味する。このようなピークの場合、プロセッサの電源コンデンサからエネルギーを供給することができる。      
【００４２】
ディジタル・スロットル１３０は、それがプロセッサの電力消費を制御する程度が大きくなるほど効果的なものになるだろう。また、プロセッサの機能ユニットの大部分をカバーするゲート・メカニズムをプロセッサ１３０が実装する場合にディジタル・スロットル１３０は最も効果的なものになる。多くのゲート制御手段のディジタル・スロットル１３０は、しきい値レベルを超えたときに電力消費のレベルを迅速かつ大幅に制御することができる。同様に、機能ユニットをきめ細かく制御すると、ディジタル・スロットル１３０の効力が増大する。たとえば、プロセッサの実行資源をより多数の機能ユニット１２４に分割し、これらの機能ユニットを制御するために追加のゲート・ユニットを設けると、スロットル１３０はプロセッサの電力消費をより強力に制御できるようになる。      
【００４３】
図５は、プロセッサ内の電力をスロットリングするための本発明による方法５００を表す流れ図である。方法５００は、まず、５１０でプロセッサ内のどの機能ユニットがアクティブになっているかを決定する。機能ユニットの状態（アクティブ／非アクティブ）は、たとえば、その機能ユニットに電力を供給するクロック・ゲート回路からの信号によって示すことができる。たとえば、ゲート回路はそれが機能ユニットに電力を供給している場合（アクティブ状態）にその信号をアサートすることができ、それが現在機能ユニットに電力を供給していない場合（非アクティブ状態）にその信号をアサート解除することができる。      
【００４４】
５１０でアクティブな機能ユニットが決定されると、５２０でそのプロセッサの電力レベルを推定する。これは、各ゲート・ユニットが出力する信号にパワー・ウェイトを関連づけ、アサートされた各信号に関連するパワー・ウェイト分だけ推定電力レベルを増分することによって、実施することができる。アサート解除した信号に関連するウェイト付き電力は現行推定電力レベルに寄与しない。      
【００４５】
５３０で現行推定電力レベルをしきい電力レベルと比較する。しきい電力レベルは、たとえば、そのレベル以上で長期間の間、プロセッサを動作させてはならない電力レベルを表している。一実施形態の場合、現行推定電力レベルからしきい値を減算し、プロセッサの相対電力レベルの現行推定値、すなわち、累積電力にその結果を加算する。累積電力が正（ＥＰＬ＞しきい値）である場合、５４０で命令スループットを調整する。累積電力が負（ＥＰＬ＜しきい値）である場合、命令スループットに対する調整を一切行わない。
【００４６】
プロセッサの命令スループットはいくつかのメカニズムによって低減することができる。方法５００の一実施形態の場合、クロック・サイクルのうち、プロセッサの機能ユニットがアクティブになっている部分を低減するために、命令実行パイプラインにバブルを注入することができる。たとえば、プロセッサ・クロックの選択したサイクルでのみ命令を発行するよう発行ユニットをトリガすることによってバブルを導入することができる。本発明の他の実施形態の場合、プロセッサのクロックが動作する周波数を低減することができる。      
【００４７】
本発明の利点の１つは、プロセッサ・パイプラインの実行資源がパイプラインの機能ユニットにおける活動のレベルに応じて調整されることである。電力消費を推定するためのサーマル・ベースまたは電流ベースの技法とは異なり、ディジタル・スロットルが監視する機能ユニットの活動は、プロセッサ内の個々のパイプラインに特有のものである。その結果、特定のユニットに活動および電力消費を割り当てる際の特異性は、単一のプロセッサ・チップ上で複数の実行コアを実施するプロセッサで特に有用である。この場合、「実行コア」とは、完全なプロセッサに関連する実行資源を指すので、複数実行コア・プロセッサは単一チップ上で複数のプロセッサを効果的に実施する。本発明のディジタル・スロットルにより、多大な電力を必要とするコード・セグメントを処理する実行コアは、総電力消費量がしきい値レベルを超えない限り、残りの実行コア（複数も可）から電力を効果的に借りることができる。別法として、その命令実行パイプライン内の活動に応じて、各実行コアをスロットリングすることができる。      
【００４８】
図６Ａは、本発明が実施される複数実行コア・プロセッサ６１０の一実施形態を示すブロック・レベル図である。プロセッサ６１０は実行コア６２０（ａ）〜６２０（ｎ）（総称して実行コア（複数も可）６３０）を含む。各実行コア６２０は、実行パイプライン６４０を形成する機能ユニット６３０を含む。共用ディジタル・スロットル６５０は、すべてのパイプライン６４０の機能ユニット６３０内の活動を監視して調整する。プロセッサ１１０のこの実施形態により、各実行コア６２０は、総電力しきい値を超えない限り、残りの実行コアから電力を借りることができる。      
【００４９】
図６Ｂは、本発明が実施される複数実行コア・プロセッサ６６０の他の実施形態を示すブロック・レベル図である。プロセッサ６６０は実行コア６２０（ａ）〜６２０（ｎ）（総称して実行コア（複数も可）６３０）を含み、そのそれぞれは、実行パイプライン６４０を形成する機能ユニット６３０を含む。各実行コア６３０は、その機能ユニット６３０内の活動を監視して調整するためのディジタル・スロットル６５０も含む。プロセッサ１１０のこの実施形態により、各実行コア６２０は、それに関連するディジタル・スロットル６３０によって独立してスロットリングすることができる。      
【００５０】
したがって、プロセッサの機能ユニットの活動状態に応じてプロセッサ内の電力消費を制御するディジタル・スロットルが提供されている。命令実行中に活動状態を監視し、活動状態から推定した電力消費レベルに応じて実行速度を調整する。推定電力消費に応答して命令実行ストリーム内に「バブル」またはＮＯＰを注入することにより、電力消費を制御することができる。      
【００５１】
本発明の一実施形態の場合、各機能ユニットにパワー・ユニットを割り当て、アクティブになっている各機能ユニットのパワー・ウェイトを合計することによりプロセッサの電力消費を推定する。推定電力消費量がしきい値を超えると、ディジタル・スロットルは、プロセッサが命令を実行する速度を低減する。プロセッサの設計またはテスト段階での較正手順によって様々な機能ユニットのパワー・ウェイトを決定することができる。また、ディジタル・スロットルは、自己較正手順を実施するための回路も含むことができる。
【００５２】
開示した実施形態は、本発明の様々な特徴を例示するために提供されている。この開示内容の恩恵を受けるプロセッサ設計の当業者であれば、開示した実施形態の変形および変更を認識できるだろうが、それにもかかわらず、その変形および変更は特許請求の範囲の精神および範囲に含まれるものである。
【図１】
2014112399.tif 000004
【図２】
2014112399.tif 000005
【図３】
2014112399.tif 000006
【図４】
2014112399.tif 000007
【図５】
2014112399.tif 000008
【図６Ａ】
2014112399.tif 000009
【図６Ｂ】
2014112399.tif 000010
【手続補正書】
【提出日】平成26年2月10日(2014.2.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の機能ユニットと、
複数のゲート回路であって、各ゲート回路は、前記複数の機能ユニットのうちの関連する１つに対する電力供給を制御し、前記複数の機能ユニットのうちの関連する１つに電力が供給されているか否かを示す信号を出力する、複数のゲート回路と、
出力された前記信号に応じて、電力が供給された複数の機能ユニットの各パワー・ウェイトを累積して推定電力消費レベルを決定し、前記推定電力消費レベルをしきい電力消費レベルと比較する監視回路と、
前記推定電力消費レベルが前記しきい電力消費レベルを超えた場合にプロセッサ内の命令フローを調整するスロットル回路とを含む、プロセッサ。
【請求項２】
前記監視回路は、前記推定電力消費レベルと前記しきい電力消費レベルの比較値を累積するアキュムレータを含む、請求項１に記載のプロセッサ。
【請求項３】
前記ゲート回路からの信号は、前記監視回路に対して前記関連する機能ユニットのパワー・ウェイトを伝達し、前記パワー・ウェイトは、電力が供給されたときに関連する機能ユニットが消費する電力の量を表す、請求項１に記載のプロセッサ。
【請求項４】
前記スロットル回路は、前記推定電力消費レベルがしきい電力消費レベルを超えた量に比例した前記命令フローの調整を行う、請求項１に記載のプロセッサ。
【請求項５】
電流監視回路と、定期的に機能ユニットのパワー・ウェイトを調整する較正アルゴリズムと、をさらに備えた、請求項１に記載のプロセッサ。
【請求項６】
プロセッサ内の電力消費を制御する方法であって、
前記プロセッサ内の複数のゲート回路から、前記複数のゲート回路に関連する複数の機能ユニットに現在電力が供給されているか否かを示す電力信号を収集し、
前記収集した前記電力信号に応じて、電力が供給された複数の機能ユニットの各パワー・ウェイトを累積して推定電力消費レベルを調整し、
前記推定電力消費レベルをしきい電力消費レベルと比較し、
前記推定電力消費レベルが前記しきい電力消費レベルを超えるときに前記プロセッサによる命令実行速度を調整することを含む方法。
【請求項７】
複数の機能ユニットと、
複数のゲート・ユニットであって、各ゲート・ユニットは、前記複数の機能ユニットのうちの関連する１つへの電力供給を制御し、前記複数の機能ユニットのうちの関連する１つに電力が供給されているか否かを示す信号を出力する、複数のゲート・ユニットと、
出力された前記信号に応じて、電力が供給された複数の機能ユニットの各パワー・ウェイトを累積して推定電力消費レベルを決定し、前記推定電力消費レベルをしきい電力消費レベルと比較し、前記推定電力消費レベルと前記しきい電力消費レベルの比較値を累積する監視回路と、
前記推定電力消費レベルと前記しきい電力消費レベルの比較値の累積値に基づいて、プロセッサ内の命令フローを調整するスロットル回路とを含むプロセッサ。
【請求項８】
前記監視回路が前記推定電力消費レベルと前記しきい電力消費レベル間の差を決定し、前記差の表示をアキュムレータに対して行う請求項７に記載のプロセッサ。
【請求項９】
前記プロセッサが、命令実行パイプライン内の命令のタイプに応じて前記複数の機能ユニットの活動状態を示すパイプライン制御モジュールをさらに含む請求項７に記載のプロセッサ。
【請求項１０】
機能ユニットと、
複数のゲート回路であって、各ゲート回路は、前記機能ユニットのうちの関連する１つに対する電力供給を制御し、前記機能ユニットのうちの関連する１つに電力が供給されているか否かを示す信号を出力するゲート回路と、
出力された前記信号に応じて、電力が供給された複数の機能ユニットの各パワー・ウェイトを累積して推定電力消費レベルを決定し、前記推定電力消費レベルをしきい電力消費レベルと比較する監視回路と、
前記推定消費電力レベルが前記しきい電力消費レベルを超えた場合にプロセッサ内の命令フローを調整するスロットル回路とを含むプロセッサであって、
前記スロットル回路は、前記複数の機能ユニットを有するプロセッサパイプラインにバブルを注入して、プロセッサ内の命令実行速度を調整するプロセッサ。
【請求項１１】
１つまたは複数の機能ユニットを有する第１の実行コアと、
１つまたは複数の機能ユニットを有する第２の実行コアと、
前記第１の実行コアの１つまたは複数の機能ユニットに電力が供給されているか否かを監視する前記第１の実行コアの第１のデジタル・スロットルと、
前記第２の実行コアの１つまたは複数の機能ユニットに電力が供給されているか否かを監視する前記第２の実行コアの第２のデジタル・スロットルと、を備え、
前記第１のデジタル・スロットルは、１つまたは複数のゲート回路であって、各ゲート回路は前記第１の実行コアの前記複数の機能ユニットのうち関連する１つへの電力供給を制御し、前記関連する機能ユニットに電力が供給されているか否かを示す、１つまたは複数のゲート回路と、
前記第１の実行コアの電力が供給された複数の機能ユニットの各パワー・ウェイトを累積して、前記プロセッサの前記第１の実行コアの電力消費レベルを決定する第１の監視回路と、を有し、
前記第２のデジタル・スロットルは、１つまたは複数のゲート回路であって、各ゲート回路は前記第２の実行コアの前記複数の機能ユニットのうち関連する１つへの電力供給を制御し、前記関連する機能ユニットに電力が供給されているか否かを示す、１つまたは複数のゲート回路と、
前記第２の実行コアの電力が供給された複数の機能ユニットの各パワー・ウェイトを累積して、前記プロセッサの前記第２の実行コアの電力消費レベルを決定する第２の監視回路と、を有することを特徴とするプロセッサ。
【請求項１２】
機能ユニットと、
前記機能ユニットのうちの関連する１つに電力が供給されているか否かを示す信号を出力するために、前記複数の機能ユニットのうちの関連する１つに対する電力供給を制御する複数の制御手段と、
出力された前記信号に応じて、電力が供給された機能ユニットの各パワー・ウェイトをを累積して推定電力消費レベルを決定し、前記推定電力消費レベルをしきい電力消費レベルと比較する手段と、
前記推定電力消費レベルが前記しきい電力消費レベルを超えた場合にプロセッサ内の命令フローを調整する手段と、を備え、
前記調整する手段は、前記命令フローを調整するために前記プロセッサのクロックの周波数を低減させ、前記推定電力消費レベルが前記しきい電力消費レベルを超えた量に基づいてスロットリングすることを特徴とするプロセッサ。
【請求項１３】
機能ユニットと、
前記機能ユニットに対する電力供給を制御し、前記機能ユニットに供給された電力レベルを示す信号を出力するゲート回路と、
示された前記電力レベルを反映した推定電力レベルをしきい電力レベルと比較する監視回路と、
前記推定電力レベルが前記しきい電力レベルを超えた場合にプロセッサ内の命令フローを調整するスロットル回路と、を備えることを特徴とするプロセッサ。
【請求項１４】
１つまたは複数の機能ユニットと、
１つまたは複数のゲート回路を有し、各ゲート回路は前記第１の実行コアの前記機能ユニットのうち関連する１つへの電力供給を制御し、前記関連する機能ユニットに対する活動状態を示し、
前記１つまたは複数の機能ユニットの前記示された活動状態より、前記プロセッサの電力消費レベルを推定する監視回路と、を含むことを特徴とするプロセッサ。
【請求項１５】
実行パイプラインの少なくとも１つの実行ユニットと、
少なくとも１つの実行ユニットのサービスは前記パイプラインで命令を実行するのに必要か否かに応える前記少なくとも１つのクロック信号に前記少なくとも１つの実行ユニットを連結しそして離す少なくとも１つのクロック・ゲート回路と、
クロック信号が連結するか又は離れる多数の実行ユニットによって決まる前記少なくとも１つの実行ユニットへの命令の割合を制御するディジタル・スロットルユニットと、を含むことを特徴とするプロセッサ。