JP4811879B2 - 最大パワーを制御するためのマイクロプロセッサ・リソースの相互排除アクティブ化のためのシステム及び方法 - Google Patents

最大パワーを制御するためのマイクロプロセッサ・リソースの相互排除アクティブ化のためのシステム及び方法 Download PDF

Info

Publication number
JP4811879B2
JP4811879B2 JP2008526944A JP2008526944A JP4811879B2 JP 4811879 B2 JP4811879 B2 JP 4811879B2 JP 2008526944 A JP2008526944 A JP 2008526944A JP 2008526944 A JP2008526944 A JP 2008526944A JP 4811879 B2 JP4811879 B2 JP 4811879B2
Authority
JP
Japan
Prior art keywords
resource
power
resources
microprocessor
gating
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008526944A
Other languages
English (en)
Other versions
JP2009505279A (ja
Inventor
ボーズ、プラディップ
ビュークトサンオグル、アルパー
ハウ、ツィーアン
ヤコブソン、ハンス、ミカエル
スリニバサン、ヴィジャヤラクシミ
ジューバン、ビクター
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2009505279A publication Critical patent/JP2009505279A/ja
Application granted granted Critical
Publication of JP4811879B2 publication Critical patent/JP4811879B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Power Sources (AREA)

Description

本発明は、一般的にマイクロプロセッサに関し、特にマイクロプロセッサにおけるパワー散逸及び消費に関する。
マイクロプロセッサは、割合に小さなチップ・スペースにますます増える電子部品を詰め込んで作られている。パワー消費及び散逸(dissipation)の問題は、マイクロプロセッサ内の電子コンポーネントの量が増えるに連れて目立つようになる。パワー散逸(power dissipation)及び消費は、マイクロプロセッサのための設計選択肢と動作条件とに影響を及ぼす。従って、マイクロプロセッサにおけるパワー散逸及び消費を最少にする必要がある。以下においては、特に述べられない限りは、“パワー”という用語は、パワー・パラメータの“散逸”及び“消費”の両方の側面を包摂するために使われる。
平均パワーと最大パワー散逸とは異なる。平均パワーは、通例ユーザにより実行されるアプリケーション或いはプログラムの集合の上で平均されたパワーを指す。平均パワーを節約すれば、配線アプリケーションにおいてエネルギー・コストが減少し、携帯アプリケーションでは電池の寿命が長くなる。最大パワーは、マイクロプロセッサにおいて最大数のリソースを利用するコードのセグメントで散逸されるパワーである。最大パワーは、パッケージのパワー散逸能力と、配電システムの電流配達能力とに要求条件を課する。従って、最大パワーはマイクロプロセッサのコストに大きな影響を及ぼす。
米国特許第6,047,248号明細書 米国特許第5,189,314号明細書 米国特許第5,504,908号明細書
マイクロプロセッサのコンポーネント又はリソースにおけるパワーを減少させるための技術が幾つかある。クロック・ゲーティングは、その様な技術の1つである。クロック・ゲーティングは、動的な或いはスイッチングするコンポーネントのパワーを節約し得るに過ぎない。別の節電技術はデータ・ゲーティングと呼ばれる。データ・ゲーティングは、マイクロプロセッサ・コンポーネントの入力に遷移障壁を挿入することを含む。これらの遷移障壁は、通例、AND又はOR論理ゲートとして実現される。マイクロプロセッサ・コンポーネントが使用されないサイクルでは、遷移障壁はコンポーネントの入力がスイッチングすることを防止し、それは、データ・ゲーティングされるコンポーネント内での動的パワー又はスイッチング・パワーを節約するという結果をもたらす。クロック・ゲーティングと同様に、データ・ゲーティングは、動的パワー或いはスイッチング・パワーを節約し得るに過ぎず、リークを節約することはできない。
パワー・ゲーティング(Vddゲーティングとも呼ばれる)は、動的パワー成分とリーク・パワー成分との両方を減少させる別の1つの公知節電技術である。クロック・ゲーティングとは異なって、VddゲーティングはVddゲーティングされるリソースをアクティブ化するために複数のクロック・サイクルを必要とし、それは複雑な制御メカニズムを必要とする。Vddゲーティングされるリソースは、そのリソースのアクティブ化及びアクティブ解除のプロセスに関連するエネルギー・オーバーヘッドを償却するために最少数のサイクル(通例、数十サイクル)にわたってゲーティングされていなければならない。
マイクロ・プロセッサーのゲーティングを制御することへの1つのアプローチはリアクティブ・ゲーティング(Reactive Gating (RG))技術を含む。これらのRG技術は、チップの最高温度、又はマイクロプロセッサ・コア又はチップに引かれる最大電流、或いはその両方を制御するために使用される。RG技術は、温度センサ又は電流センサのセットを使用し、それらのセンサは、それらのセンサのうちの1つにより感知された温度(又は電流消費量)がスレショルドを超えたならばマイクロプロセッサ・リソースをゲーティングするための信号を生成する。そのスレショルドは、パッケージのパワー散逸能力の限度より下に或いは配電システムの電流配達能力より下にセットされる。
RG技術は、スレショルドに基づく制御のためにパワー又は電流配達システムについての要求条件を緩めることを可能にせず、スレショルドは、リアクティブ・メカニズムが適時にトリガーしてチップ故障を防止するように割合に悲観的な或いは控えめなレベルにセットされなければならない。リアクティブ・メカニズムがプログラム実行中にトリガーし得るので、RG技術はプロセッサ・コアの性能を予測することを困難にする。更に、節電RG技術のためのトリガー・メカニズムは、温度のような動作環境要素に依存することがある。このトリガー・メカニズムは、マイクロプロセッサの性能を動作環境要素に依存させる。
次にRG技術の幾つかの例が論じられる。特許文献1:米国特許第6,047,248号とジョージオ等(Georgiou,et al.)の特許文献2:米国特許第5,189,314号とは、温度センサから受け取られた情報に基づいてプロセッサの性能を変化させる技術を提案している。これらのRG技術は、性能測定基準のセットのオン・チップ監視からのフィードバックでアクティブ化されるリアクティブ・スロットリング技術を使用する。
ゲーティングを制御することへの別のアプローチは純粋予測ゲーティング技術を含むが、その技術は、平均のマイクロプロセッサ・コア又はチップのパワーを減少させるけれども最大パワー使用量以下への減少を保証せず、また全てのマイクロプロセッサ・リソースが完全に利用されているときには最大パワーに関して如何なる上限も提供しない。純粋予測ゲーティング技術の例として、イケダの特許文献3:米国特許第5,504,908号は、プロセッサがアイドル・ループ中にあることを判定するためにアドレス・アクセス情報を使用することを開示している。ゲーティングを制御するためのこれらの技術は、マイクロプロセッサのコストに影響を及ぼすパッケージのパワー散逸能力或いは配電システムの電流配達能力に関する要求条件の緩和を可能にするものではない。従って、マイクロプロセッサにおけるパワーの散逸を制御し最大パワーを最少にする技術に対するニーズがある。
本発明の代表的実施態様は、一般に、マイクロプロセッサにおけるパワー散逸及び消費を制御するためのシステム及び方法を含む。より具体的には、本発明の1つの代表的実施態様においては、マイクロプロセッサにおいてパワー・パラメータを制御するためのシステムは、マイクロプロセッサ及び2つ以上のリソースの最大パワーを制御するためのリソース・アクティブ化制御ユニットを含む。このリソース・アクティブ化制御ユニットは、マイクロプロセッサの消費され散逸されるパワーが最大パワーより低い所定値に設定可能であるパワー限度を超えないように、それらのリソースのアクティブ化を制御する。
本発明の他の代表的実施態様においては、マイクロプロセッサにおいてパワー・パラメータを制御する方法は、マイクロプロセッサの2つ以上のリソースのアクティブ化を制御することと、アクティブ化されたそれらのリソースにより消費され散逸される総パワーを、マイクロプロセッサの最大パワーより下の所定値に設定可能であるパワー限度より下であるように保つこととを含む。
本発明のこれらの及び他の実施態様、側面、特徴及び利点は、添付図面と関連して読まれるべき代表的実施態様についての以下の詳細な記述から記述され或いは明らかとなろう。
図1は、本発明の代表的実施態様における相互排除リソースアクティブ化(Mutually Exclusive Resource Activation(MERA))制御ユニット及び他のプロセッサ・コア・リソースを示す。プロセッサ・コア10が示されている。MERA制御ユニット12は、プロセッサ・コア10のリソースを相互排除的に制御する。フェッチ・アドレス予測リソース14は、MERA制御ユニット12に接続されており、例えばブランチ予測器、リンク・スタックなどのアドレス取り出しリソースを含む。ブランチ予測器(図示されていない)は、ブランチ・ヒストリー・アレイの複数のバンクを含むことができ、それらはオプションで独立してパワー・オン及びパワー・オフされ得る。
命令キャッシュ・リソース16は、命令キャッシュの複数のバンクを含み、個々の命令キャッシュ・メモリ・バンクのゲーティング及びアクティブ化を可能にするオプションで実現される機能を有する。キャッシュのアソシアティブ・セットのうちの1つ以上は、命令キャッシュ・バンクのためのゲーティング制御をキャッシュのアソシアティブ・セットの粒状度レベル(granularity level)で実行することによって独立に制御され得る。
フロント・エンド18は、命令パイプラインのためのフロント・エンドである。フロント・エンド18は、命令フェッチ・メカニズムを含んでおり、また、命令フェッチ・エンジン(図示されていない)を命令デコード及び発行パイプライン(図示されていない)から切り離すデカップリング・バッファをオプションで含むことができる。フロント・エンド18は、MERA制御ユニット12及びデコード論理回路20に結合されている。デコード論理回路20は、フロント・エンド18、MERA制御ユニット12、及び発行及びストール論理回路22に結合されている。デコード論理回路20は、プロセッサ命令をデコードし、パイプライン・ストールを生成することができる。発行及びストール論理回路22は実行リソース(図示されていない)に実行させるべく命令を送る。発行論理回路22は、オペランドが利用可能でない命令を保持するバッファを実現することができる。発行論理回路22は、MERA制御ユニット12、リソース26−26、及びマイクロコード・エンジン24に結合されている。
マイクロコード・エンジン24は命令の指定されたセットをマイクロコードとして実行する。マイクロコード・エンジン24は、MERA制御ユニット12及び発行論理回路22に結合されている。マイクロコードで実現される命令のうちの1つがパイプラインに入れば、マイクロコード・エンジン24は、メイン・デコード発行パイプラインからの命令の発行を停止させ、その後にマイクロコード・エンジン24から一連のマイクロコード命令を実行させるべく発行する。
プロセッサ・リソース26−26は、発行論理回路22に結合されていて、例えば固定小数点計算、浮動小数点計算と;ロード及びストアのためのアドレス計算と;ブランチ実行と;SIMD(Single Instruction, Multiple Data(単一命令、複数データ))及びメディア・エンジンなどの機能ユニットを含む。プロセッサ・リソース26−26のうちの1つ以上は、プロセッサの設計された状態を維持することができる。3つのリソース26−26だけが例として示されているが、任意の数のリソースを使用し得ること、及びそのうちの各々が単独で或いは部分集合として独立にアクティブ解除され得ることを当業者は認めるであろう。
プロセッサ・リソース(例えば、ここで示されている26−26)によるパワー消費は、マイクロプロセッサにより消費され散逸される総パワーを相当の程度まで決定する。従って、プロセッサ・リソース(例えば、リソース26−26)により消費されるパワーを減少させ制御することによってマイクロプロセッサの総パワーの制御を成し遂げることができる。
データ・プリフェッチ・リソース28は、データ・キャッシュ・ミスの数を減らすためにデータをデータ・キャッシュ30の中にプリフェッチする。データ・キャッシュ30は、データ・キャッシュ・バンクのアクティブ解除又はアクティブ化を制御するオプションのメカニズムを有するデータ・キャッシュの複数のバンクを含むためにデータ・キャッシュ・リソース32-32を含む。データ・キャッシュ・バンクのためのゲーティング・メカニズムは、データ・キャッシュ(図示されていない)においてアソシアティブ・セットの粒状度レベルで実行され得る。ゲーティング・メカニズムは、データ・キャッシュ30のアソシアティブ・セットのうちの1つ以上を独立にアクティブ解除することができる。データ・キャッシュ・リソース32-32は2つの代表的バンクとして示されているが、任意の個数のデータ・キャッシュ・バンクが使用され得る。
割込み制御論理回路34とリソース・アクティブ化制御レジスタ36とがMERA制御ユニット12に結合されている。リソース制御アクティブ化バス38は、フェッチ・アドレス予測ユニット14、命令キャッシュ・リソース16、プロセッサ・リソース26-26、データ・プリフェッチ・リソース28、及びデータ・キャッシュ30のようなプロセッサ・コア10上の他のリソースにMERA制御ユニット12を結合させる。MERA制御ユニット12は、フロント・エンド18、デコード論理回路20、発行論理回路22及びマイクロコード・エンジン24に結合されている。
フェッチ・アドレス予測ユニット14、命令キャッシュ・リソース16、リソース26-26、データ・プリフェッチ・リソース28及びデータ・キャッシュ30のようなリソースのうちのセレクションすなわち選択されたもの或いは全部は、それらがアクティブ・モードとゲーティングされるモードとの間でのリソースの遷移を制御する制御信号を受け入れることを可能にする特別の入力ポート40-40を実現する。入力ポート40-40は、プロセッサ・リソースへの結線として図示されている。入力ポート40-40は、制御アクティブ化バス38を通して、対応するリソースをMERA制御ユニット12に接続する。
MERA制御ユニット12は、適切な制御信号をリソース制御アクティブ化バス38を介して送出することによって複数のマイクロプロセッサ・リソースを制御する。バス38は、リソースのアクティブ化を直接制御する専用ポイント・ツー・ポイント信号のセットとして、或いは通信プロトコルを実行する共用バスとして、実現され得る。その通信プロトコルは、例えば、アクティブ化される1つ以上のリソースのID(アイデンティフィケーション)及びアクティブ解除されるリソースのIDをアクティブ化制御バス38の1つの又は複数のサイクルでアサートする機能などの種々の機能を含むことができる。
MERA制御ユニット12は、フロント・エンド・バス42及びデコード論理回路バス44を用いてコア10のデコード論理回路20又はフロント・エンド18に、或いはデコード論路20及びフロント・エンド18の両方に結合される。MERA制御ユニット12は、バス42及び44を介するこれらの接続を用いてプロセッサ・パイプラインの対応する部分における活動を監視し、また、この情報を用いて、アクティブ化制御バス38に接続されている全てのプロセッサ・リソースにおけるゲーティングされるモードとアクティブ・モードとの間での遷移を制御する。
MERA制御ユニット12に加えて、リソース・アクティブ化制御レジスタ36はオプションでプロセッサ・リソースのアクティブ・モードとゲーティングされるモードとの間での遷移を制御することができる。制御レジスタ・バス46は制御レジスタ36をMERA制御ユニット12に結合させる。
制御レジスタ36は、システム/ソフトウェア(例えば、オペレーティング・システム、基本入出力システムすなわちBIOS、など)によりリード及びライトのような特権命令を通して制御される。プロセッサ・アーキテクチャは、命令のセットを通してリソース・アクティブ化レジスタ36における適切なビットのセッティングを可能にすることができる。ISA(Instruction Set Architecture(命令セット・アーキテクチャ))は、リソース・アクティブ化レジスタ36における適切なビットのセッティングを可能にするためのレジスタ転送又はメモリ転送;リソース・アクティブ化レジスタ36とプロセッサの他のコンポーネントとの間での転送;及びオプションでレジスタ36とメモリとの間での転送のための命令を提供することができる。適切なビットのセッティングを可能にするように命令のセットが設計され得、或いはその様な能力を提供するように現存する命令セットが改変され得る。
MERA制御ユニット12は、発行論理回路接続48により発行及びストール論理回路22に結合されている。プロセッサのためのパワー・パラメータを制御するために、MERA制御ユニット12は、実行リソースへの命令の発行についてストールを強要することができる。MERA制御ユニット12により強要されるストールは、パイプラインの発行ステージにおける全ての命令に、或いはMERA制御ユニット12により指定された1つ以上の特定の命令に影響を及ぼすことができる。発行及びストール論理回路22は、MERA制御ユニット12によりアサートされたストール・リクエストに完全に応答するように設計或いは改変され得る。
MERA制御ユニット12は、プログラム実行のための割込みをリクエストし割り込みサービス・ルーチンにトラップするために割込み接続50で割込み制御論理回路34にも接続され得る。割込み制御論理回路34は、MERA制御ユニット12によりアサートされた割込み又はトラップ・リクエストに完全に応答するように設計或いは改変され得る。
MERA制御ユニット12は、マイクロコード命令をパイプラインの中に発行するようにマイクロコード・エンジン24をアクティブ化するためにオプションでマイクロコード・バス52でマイクロコード・エンジン24にも接続され得る。割込みマイクロコード・エンジン24は、MERA制御ユニット12によりアサートされたマイクロコード発行リクエストに完全に応答するように設計或いは改変され得る。
MERA制御ユニット12は、コア・コンポーネント間の接続を用いて、マイクロプロセッサ・コア・リソースのアクティブ・モード及びゲーティングされるモードの間の遷移を制御し、パイプライン・ストールをリクエストし、マイクロコード・エンジンからの命令の発行をリクエストし、また割り込みをリクエストする制御信号を生成する。MERA制御ユニット12は、マイクロプロセッサ・コアの総パワーが境界パワー限度と称される所定の“P_バウンド(P_bound)”を超えないことを保証するためにこれらの制御信号を使用する。
平均パワーと最大パワー散逸とは異なる。平均パワーは、通例顧客により走らされるアプリケーション或いはプログラムの集合の上で平均されたパワーを指す。平均パワーを節約すれば、配線アプリケーションにおいてエネルギー・コストが減少し、携帯アプリケーションでは電池の寿命が長くなる。
P_マックス(P_max)と呼ばれる最大パワーは、マイクロプロセッサにおいて最大数のリソースを利用するコードのセグメントで散逸されるパワーである。その様なコード・セグメントは、科学技術計算のような計算集約的アプリケーションの重要な部分であり得、その場合には、それらのコード・セグメントに関してプロセッサが最高性能を発揮し得ることが重要である。最大パワーは、パッケージのパワー散逸能力と、配電システムの電流配達能力とに要求条件を課する。従って、最大パワーはマイクロプロセッサのコストに対して大きな影響を及ぼす。
P_boundの値は、プロセッサ・コアの全リソースにより散逸されるパワーの合計と同じくらいの大きさであり得る最大パワーP_maxより小さい。本発明を実施するマイクロプロセッサにおいては、チップのパワー配達システムは、最大パワーP_maxではなくて境界パワーP_boundを配達するように設計され得る。同様に、本発明の少なくとも1つの実施態様においては、マイクロプロセッサ・チップ・パッケージは、最大パワーP_maxではなくて境界パワーP_boundを散逸するように設計され得る。
MERA制御ユニット12は、データ・ゲーティング、パワー・ゲーティング及びクロック・ゲーティングの形のゲーティングを実行することができる。クロック・ゲーティングは、ラッチの出力により駆動されるコンポーネントがその特定のクロック・サイクルにおいて使用されないために、或いはラッチの入力に有効なデータが存在しないか又は前のクロック・サイクルのうちの1つにおいてラッチに保存された旧データが保持される必要があるためにそのラッチが新しいデータを受け入れて保存することを要求されないときにその特定のラッチに到来するクロック信号のスイッチングを止める技術である。クロック・ゲーティングは、動的な又はスイッチングするコンポーネントについてパワーを節約できるに過ぎない。クロック・ゲーティングは、1つのラッチ、ラッチのグループの粒状度で、或いはプリフェッチ・ユニット又は浮動小数点ユニットなどのマイクロプロセッサ・リソースの粒状度で、実行され得る。
パワー・ゲーティング(Vddゲーティングとも称される)は1つの別の公知節電技術である。この技術は、配電ネットワークとマイクロプロセッサ・コンポーネントのパワー入力との間にヘッダ装置を挿入することにある。或いは、グランド配電ネットワークとマイクロプロセッサ・コンポーネントのグランド入力との間にフッタ装置が挿入され得る。オプションで、フッタ装置及びヘッダ装置の両方が実現され得る。ヘッダ装置は通例PFETとして実現され、フッタ装置は通例NFETとして実現される。このヘッダ装置又はフッタ装置(又は両方)をオフにすることによりコンポーネントは電源又はグランド又は両方から切り離され、その結果としてスイッチング・パワー及びリーク・パワーの両方が減少する。
上に記載された節電技術(例えば、パワー、データ及びクロック・ゲーティング)は、本書においては包括的に“ゲーティング”と称される。従ってゲーティングは上記の3つの節電技術のいずれか、又はこれらの任意の組み合わせを指す。“アクティブ”という用語は、コンポーネントがゲーティングされていないときのモードを指す。MERA制御ユニット12はマイクロプロセッサ・コンポーネント又はリソースのゲーティングをアクティブ化するために使用される、すなわち、MERA制御ユニット12はマイクロプロセッサ・コンポーネントをアクティブ・モードとゲーティングされるモードとの間でスイッチングする。リソースのゲーティングされるモードへのスイッチングはそのリソースのアクティブ解除と称され、リソースのゲーティングされるモードからアクティブ又は通常の動作モードへのスイッチングはそのリソースのアクティブ化と称される。
図2は、本発明の代表的実施態様におけるマイクロプロセッサ・コンポーネントとMERA制御ユニットの間の代表的インターフェースを示す。この代表的インターフェースでは節電ゲーティング技術としてパワー・ゲーティングが使用される。リソース54は、プロセッサ・コアに置かれていて、ゲーティング可能なコンポーネント56とゲーティング不可能なコンポーネント58とを含む。ゲーティング不可能なコンポーネント58は、リソース54の状態を維持しなければならない幾つかのレジスタ又はメモリ・アレイを含むことができる。例えば、リソース54が浮動小数点ユニットであるならば、浮動小数点レジスタ・ファイルはゲーティング不可能コンポーネント58として実現され得、加算器、乗算器、バイパスなどの全ての機能ユニットはゲーティング可能コンポーネント56として実現され得る。ゲーティング不可能コンポーネント58内の全ての回路はグランド60及び電源62に直接接続される。ゲーティング可能コンポーネント58内の全ての回路は仮想グランド64及び仮想電源66に接続される。
仮想電源66はヘッダ装置68により電源62から切り離され、仮想グランド64はフッタ装置70を通してグランド60から切り離される。ヘッダ装置68及びフッタ装置70は制御信号72を通して制御され、それは、リソース54がゲーティングされるモードに入るように命令されるときにアサートされる。フッタ装置70又はヘッダ装置68は無くても良い。ヘッダ装置68が無い場合、仮想電源66はパワー分配ネットワーク62に直接接続される。フッタ装置70が無い場合、仮想グランド64はグランド分配ネットワーク60に直接接続される。
リソース54は、入力ポート40(他の同様のポートについては図1の40-40を参照)を通してリソース制御アクティブ化バス38に接続される。フッタ装置70及びヘッダ装置68を制御する制御信号72は、入力ポート40に直接接続され得る。少なくとも1つの実施態様において、入力制御信号はレジスタ74にラッチされ、リバッファリング(rebuffering)ブロック76の追加リバッファリングを通過する。リバッファリング・ブロック76内には、パイプライン・ラッチによって分離された複数のパイプライン・ステージが存在し得る。
少なくとも1つ実施態様では、リソース・アクティブ化バス38(図1を参照)におけるプロトコルのインプリメンテーションにより、バス・インターフェース論理回路78が含まれ得る。バス・インターフェース論理回路78は、リソース・アクティブ化制御バス38でアサートされたリソースIDをこのリソース54に割り当てられたIDと比較することによって、リソース54に向けられた制御信号を認識することができる。少なくとも1つの実施態様では、バス・インターフェース論理回路78はバス・プロトコルをサポートすることができる。当業者は、いろいろなプロトコルが使用され得ることを認めるであろう。
図3は、本発明の代表的実施態様におけるマイクロプロセッサ・リソースのアクティブ解除及びアクティブ化の制御を示す流れ図である。この流れ図では、オン・デマンド(又はレージー)リソース・アクティブ化ポリシーとオン・デマンド(又はレージー)アクティブ解除ポリシーとが適用される。各サイクルの間、ステップ80で示されているように、MERA制御ユニット12は命令パイプラインのフロント・エンド18及び(オプションで)デコード論理回路20(図1を参照)における活動を監視している。この監視は、命令バッファ(図示されていない)に格納されている命令から、又はデコーディング・ステージ20を通過する命令からリソース使用情報を集めることを含む。
どのサイクルにおいても、命令バッファから発行されるべく指定されたか或いはデコード論理回路20(図1を参照)を通る各々の命令又は命令のグループについて、その命令のうちのいずれかが利用し得ないリソース(すなわちそのリソースは現在オフにゲーティングされている)へのアクセスを必要とするか否かがステップ82で調べられる。ゲーティングされているリソースを必要とする命令が無ければ、その命令又は命令のグループはステップ84でデコーディング及び発行のプロセスを続けることを許される。もしリクエストされたリソースのうちの1つがオフにゲーティングされていると(すなわち利用できないと)マークされているならば、MERA制御ユニット12は、オフにゲーティングされることについてリソースが資格を有するか(ステップ86へ移行)否かをチェックする。ステップ84において、現在の発行及びデコード・サイクルの命令のいずれも、ゲーティングされている(従って利用できない)リソースを必要としていないので、その命令又は命令のグループは通常通りにデコーディング及び発行プロセスを続けることを許される。
ステップ84は、“通常の”実行ループを、すなわちステップ80,82,84及び80に沿っての移行を完成させる。このループは、規則的な挙動を示すプログラムについては実行サイクルのほとんどにおいて循環されると期待される。プログラムがこの通常ループを通って循環するときにはMERA制御ユニット12(図1を参照)を通して実行されるMERA制御メカニズムに関連する動作は行われず、性能上の不利益は招かれない。
ステップ80,82,86,88,92,96,84及び80の第2ループは“プログラム・フェーズ変更ループ”と称される。ステップ82で、いずれかの命令がゲーティングされるリソースを必要とするならば、コントロールはステップ86へ移る。ステップ86で、MERA制御ユニット12は、パワー限度P_boundを超えずにリクエストされたリソースのアクティブ化を許すために充分な数のリソースがオフにゲーティングされる資格を有するか否か調べる。ステップ86での計算のために、ハードウェア(このようなハードウェアの例が、後述される図9に示されている)は、オフにゲーティングされる資格を有するとマークされていないリソース(すなわち、アクティブであり続けるもの)と、アクティブ化されるようにリクエストされているものとのパワー・ウェイトの合計を計算する。もしその合計が所定パワー限度P_boundに等しいか又はそれより小さいならば、コントロールはステップ88へ進み、そうでなければゲーティングされるリソースの指定がステップ90で行われる。
ステップ88において、ステップ86でオフにゲーティングされる資格を有するとマークされたリソースのリストから、オフにゲーティングされるリソースのセットが選択される。プロセッサのパワーを限度P_boundより低く保つために必要とされるよりも多くのリソースがオフにゲーティングされる資格を有するとマークされていたならば、ゲーティングされるリソースは、LRUアルゴリズムを用いて又はソフトウェア・ヒントを用いて、或いは他の何らかのアルゴリズム(ランダム手法を含む)を用いて指定され得る。ステップ88にステップ92が続き、ここで全ての指定されたリソースがアクティブ解除される。
ステップ92で、MERA制御ユニット12は、リソース・アクティブ化バス38で適切な信号をアサートすることによって、ゲーティングされるように指定されたリソースにゲーティングされるモードにスイッチングするように命令する。
ステップ96で、MERA制御ユニット12は、リソース・アクティブ化バス38で適切な制御信号をアサートすることによって、アクティブ化されるようにリクエストされているリソースをアクティブ化する。ステップ96において、アクティブ化されるように信号されたリソースが、それらに対して何らかの命令が発行される前にアクティブ化手続きを完了し得るように、数個のストール・サイクルがMERA制御ユニット12によって強要され得る。ステップ96における付加的なストール・サイクルは、アクティブ化されるリソースにおけるアクティブ化手続きにより引き起こされる一時的なパワー増大を防止するために、或いは電流消費に生じ得るスパイクを減少させるために、必要とされ得る。
ステップ96は、“プログラム・フェーズ変更ループ”と称されるステップ80,82,86,88,92,96,84及び80の第2ループを完成させる。このループは、“行儀の良い”プログラムが新しいリソースのセットを使用する新しいプログラム・フェーズに入るときにそれらのプログラムにより時折とられると期待される。プログラム・フェーズ変更ループは性能上の不利益を招かないか或いは最小限の不利益を招くに過ぎない。性能上の不利益は、もしあるならば、ステップ96でアクティブ化されるリソースが、これらのリソースをリクエストした命令が発行されることを許される前に、新しい命令をいつでも処理できるようになれるために必要とされ得るストール・サイクルから生じ得る。付加的なストール・サイクルは、アクティブ化されるリソースにおけるアクティブ化手続きにより引き起こされる一時的なパワー増大を防止するために、或いは電流消費におけるスパイクを減少させるために、ステップ96でMERA制御ユニット12により強要され得る。
もしステップ86でMERA制御ユニット12がゲーティングされる資格のある充分な数のリソースを見出すことができなければ、MERA制御ユニット12はステップ90を開始する。ステップ90で、ゲーティングされるリソースの選択が行われる。ステップ88とは違って、ステップ90では、現在使用されているものを含めて全てのリソースがアクティブ解除についての候補として選択されるべく考慮される。アクティブ解除されるリソースは、アクティブ解除されるように指定されない全てのリソース(すなわちアクティブであり続けているリソース)の総パワーとアクティブ化されるようにリクエストされたリソースのパワーとの合計が所定のパワー限度P_boundを超えてはならないように、指定される。ランダム選択を含めて、オフにゲーティングされるリソースを選択するためにどの様な手法も使用され得る。オプションの性能最適化特徴として、アクティブ解除されるリソースの選択は、MERA制御ユニット12が将来ステップ90に移る可能性が最少となるように、行われ得る。
ステップ94において、アクティブ解除されるように指定されたリソース内のパイプラインは、アクティブ解除シーケンスがMERA制御ユニット12により開始される前に空になることを許される。パイプラインを空にすることは、指定されたリソースにより処理されている全ての命令(発行ステージでキューイングされているものを含む)がその実行を終えることを可能にする。ステップ94において、MERA制御ユニット12は、オプションで、不規則な挙動を示していると判定されたプログラム・スレッドに対して、ストールのサイクルを強要し、マイクロコード発行を開始し、及びそのスレッドについての実行優先順位をより低いレベルへスイッチングすることによって、ペナルティーを科することができる。MERA制御ユニット12は、またオプションで、その不規則な動作を割り込みでシステム・ソフトウェアに報告することもできる。
ステップ92は、“不規則挙動ループ”と称されるステップ80,82,86,90,94,92,96,84及び80の第3ループを完成させる。この不規則挙動ループは、“行儀の良い”プログラムにより非常に稀にとられるに過ぎないと期待される。不規則挙動ループを通って循環するプロセスは、フェーズ変更ループを通るプロセスより大きな性能ペナルティーをもたらす。
リクエストされたリソースは、アクティブ解除されるべく指定されたリソースがアクティブ解除手続きを完了するまでは、たとえそれが性能ペナルティーを招くかもしれないとしても、アクティブ化されない。これは、コアの最大より下げられたパワーの限度すなわちP_boundが、不規則な挙動を示すプログラムすなわち所与のマイクロプロセッサ・コアについて指定されたリソース使用ガイドラインに従わないプログラムにおいて性能ロスのペナルティーが場合によっては課されるとしても、維持されることを保証する。
図4は、本発明の代表的実施態様におけるマイクロプロセッサ・リソースのアクティブ解除及びアクティブ化の制御を示す流れ図である。通常実行ループは、図3と関連して上で記載されたように機能する。フェーズ変更は、次に記載されるように改変されている。ステップ86でオフにゲーティングされる資格を有するとマークされているリソースの全てがオフにゲーティングされるべく選択され、これは、資格のあるリソースのセットの中からオフにゲーティングされるリソースが幾つか選択されるだけである図3に示されているステップ88を持つ必要を無くする。ステップ86は、資格のあるリソースの全てがアクティブ解除されるステップ92に直に続く。
資格のあるリソースの全てがオフにゲーティングされる。従って、パワーをP_boundより下に保つために必要な数より多くのリソースがオフにゲーティングされる。これは平均パワーの付加的な減少を可能にし得るけれども、その結果として、ステップ80でゲーティングされるリソースを必要とする命令に遭遇する公算が大きくなる。従って、フェーズ変更ループを通る頻度が大きくなり得る。不規則挙動ループは上で図3に関して記載されているとおりである。
図5は、テーブルに格納されているリソースの対についてのオン・デマンドのアクティブ化及びアクティブ解除ポリシーを示す流れ図である。ステップ(80→82→84→80)の通常実行フロー・ループは、図3及び4と関連して上で記載されたとおりである。フェーズ変更ループについては、制御フローはステップ80からステップ82への図3のフローに従う。
ステップ110において、MERA制御ユニット12はアクティブ化されるようにリクエストされたリソース(又はリソースのグループ)があるか調べる。MERA制御ユニット12は、アクティブ化されるようにリクエストされたリソースに関して相互排除として指定されているリソース(又はリソースのグループ)が現在使用されているか否か調べる。もし本発明の実施態様においてMERA制御ユニット12又は相互排除手法を実行する他のプロセッサ・エレメントが、アクティブ化されるようにリクエストされたリソースに関して相互排除として指定されているリソースのいずれもが現在使用されていないと判定したならば、MERA制御ユニット12は、コントロールをステップ92へ移行させ、図3に示されているようにステップ92→96→84→80のシーケンスをたどる。
もしアクティブ化されるようにリクエストされたリソース(又はリソースのグループ)に対して相互排除として指定されているリソースのうちの少なくとも1つがパイプライン中の1つ以上の命令により使用されているか或いは使用される予定であるならば、プロセスはステップ94に移行する。次にステップのシーケンス(94→92→96→84→80)は、不規則挙動についてのものと同じであって、図3と関連して上で記述されている。ステップ86における計算のために、ハードウェア(その様なハードウェアの例は、下で記述される図8に示されている)は、全てのリソースについて、それに対して相互排除として指定されているリソースのリストと、それらのリソースが現在使用されているか否かを示すビットとを記憶しているテーブルを調べる。
図6は、本発明の代表的実施態様におけるマイクロプロセッサ・リソースのアクティブ解除及びアクティブ化の制御を示す流れ図である。マイクロプロセッサの最大パワーP_maxの減少に加えて平均パワーを減少させるためにオン・デマンド(又は“レージー”)リソース・アクティブ化ポリシー及び“イーガー”アクティブ解除ポリシーが実施される。イーガー(又は“欲張り(greedy))”及び“レージー”ポリシーは、一般的に、特定のヒューリスティック手続きを修飾するために使用される用語である。イーガー又は欲張りポリシーは、一般的に、イベントを見越して、予測的に或いは先行的に(proactively)、一定の決定が最先の利用可能な又は実行可能な機会にアクティブ化されることを意味し、レージー・ポリシーは決定が最も遅い可能なときまで遅らされることを意味する。
ステップの3つのループ、すなわち通常実行ループ、プログラム・フェーズ変更ループ及び不規則挙動ループ、が使用される。リソースをゲーティングするための決定と、指定されたリソースをゲーティングするステップとは、通常実行ループの一部として実行される。通常実行ループの経路は、ステップ80,82,106,104及び84、又は80,82,106及び84を通る。
もしリソースのいずれもがアクティブ化されるようにリクエストされていなければ、ステップ106が実行される。ステップ106で、MERA制御ユニット12は、プロセッサ・リソースのうちのいずれかがアクティブ解除される資格を有するか調べる。リソースがアクティブ解除される資格を有するためには、それはパイプライン中のどの命令にも使用されてはならない。更に、ステップ106でリソースをアクティブ解除されるように指定するとき、リソース使用のヒストリ及びオプションのソフトウェア・ヒントが使用される。公知のリソース静止予測装置のうちのどれでも使用され得る。もしステップ106で1つ以上のリソースがアクティブ解除される資格を有すると確認されたならば、それらはステップ104でアクティブ解除され、ステップ84のデコード及び発行プロセスで命令が続行されることが許される。別の場合には、制御経路はステップ84に直接進む。ステップ84は通常実行ループを完成させる。
もしステップ82で1つ以上のリソースがアクティブ化されるようにリクエストされたならば、コントロールはステップ110に進む。ステップ110で、MERA制御ユニット12(図1を参照)は、アクティブ化されるようにリクエストされたリソースが所定パワー限度P_boundを超えずにアクティブ化され得るか調べる。この条件を調べるためのメカニズムは、図3に示されているステップ86で使用されるものと同様であって上で記述されている。ハードウェア(その様なハードウェアの例が、後述される図9に示されている)は、アクティブであるリソースと、アクティブ化されるようにリクエストされたものとのパワー・ウェイトの合計を計算する。もしその合計が所定パワー限度P_boundに等しいか又はそれより小さいならば、プロセスはステップ96へ進む。そうでなければゲーティングされるリソースの指定がステップ90で行われる。
ステップ96で、MERA制御ユニット12は、アクティブ化されるようにリクエストされたリソースをアクティブ化する。ステップ96はプログラム・フェーズ変更ループを完成させる。もしステップ110でMERA制御ユニット12が充分な数のゲーティングされる資格を有するリソースを見出せなかったならば、MERA制御ユニットはステップ90に進み、ここでゲーティングされるリソースの選択が行われる。図3の上記ステップ94及び92と同様のステップ94及び108のシーケンスは、不規則挙動ループを完成させる。
図7は、本発明の代表的実施態様におけるイーガー・リソース・アクティブ解除及びオン・デマンド・リソース・アクティブ化ポリシーを用いるリソースの相互排除アクティブ化の制御を示す流れ図である。
通常実行フロー・ループは、ステップ80→82→106→104→84又はステップ80→82→106→84→80をたどる。フェーズ変更ループについては、制御フローは、図6に関して上で記述されたようにステップ80からステップ112へのシーケンスをたどる。ステップ112で、MERA制御ユニット12は、アクティブ化されるようにリクエストされたリソース(又はリソースのグループ)について、アクティブ化されるようにリクエストされているリソースに対して相互排除として指定されているリソース(又はリソースのグループ)が既にオフにゲーティングされているか否か調べる。この調べに対する答えが“はい”ならば、コントロールはステップ96へ進む。ステップ112における答えが相互排除としてのリソースの指定に対して“いいえ”ならば、すなわち、アクティブ化されるようにリクエストされたリソース(又はリソースのグループ)に対して相互排除として指定されているリソースのうちの少なくとも1つがアクティブ解除されていなければ、プロセスはステップ94へ移行する。シーケンスの残り、ステップ94→108→96→84、は相互排除リソース(又はリソースのグループ)のセットを指定する仕方と共に、図5に関して上で記述されたものと同様である。
図8は、本発明の代表的実施態様において相互排除リソース(又はリソースのグループ)の必要性を調べてそれを明示するために用いられるテーブル・ベースのハードウェア構造を示す。MERA制御ユニット12(図1を参照)のために相互排除リソース(又はリソースのグループ)のセットを明示するために複数の手法が使用され得る。少なくとも1つの実施態様では、リソースの相互排除セットは、ハードウェアで実現される代表的テーブル114であって、相互排除リソース識別子テーブルと称される。また、特権(又はシステム)ソフトウェアが相互排除リソース識別子テーブルに対して項目を読み書きすることを可能にする命令のセットがプロセッサISA(命令セット・アーキテクチャ)に付け加えられる。テーブル114は列115-126及び行130-146を含む。
テーブル114は、リソース・アクティブ化バス38(図1を参照)を通してMERA制御ユニット12により制御される各リソースについて項目(行として示されている)を有する。テーブル114は列115のリソース識別子で索引付けされており、それは複数のリード・ポートを実現することができる。複数のポートは、このテーブルから2ライン以上を読み出すために必要とされ得る。デコード論理回路20(図3を参照)への接続は1ラインとして示されているが、帯域幅は1サイクルあたりに1命令からN命令までのいずれでもあり得る(例えば、N=8)。
パイプラインに入る命令の各グループについて、デコード論理回路20は命令の各グループを実行するために必要とされるリソースを識別する。また、リクエストされたリソースの識別子がプリ・デコード論理回路により判定され得、命令と共に命令キャッシュに格納され得る。テーブル114は、計算された索引(又は索引のセット)(図示されていない)を用いてアクセスされる。
各リソースについて、リソース・テーブル114は相互排除リソースの識別子を記憶する(列116に示されている)。列116は、この行に対応するリソースに関して相互排除として指定されている識別子又はリソースを記憶する。テーブル114の列116は、システム・ソフトウェアにより維持され得る。プロセッサのISA(命令セット・アーキテクチャ)は、テーブルの列116の項目をロードするための命令を実行し、またテーブルの列116の内容をメモリに格納するための或いはデータをテーブル114とプロセッサ構築されたレジスタのうちの1つ以上との間で移動させるための命令も実行する。これらの余分の命令は、プロセッサが特権モードで動作しているときに実行可能であるに過ぎない。列116は、システム・ブート中に初期化される。ソフトウェアによるテーブル114の列116への書き込みと、それからの読み出しとは、ポート150を介して行われる。列116を更新するためのデータは、図1に示されているリソース・アクティブ化制御レジスタ36から来る。或いは、列116内の項目は、例えば、スキャン・チェーンを通してのプリローディングによって、システム・パワーアップ中にハードウェアにより事前ロードされ得る。
図示されているように、テーブルの列116に2つ以上のリソースが記入され得る。テーブルの列116で相互排除リソースを明示するために“又は(OR)”又は“及び(AND)”規則が許容される。図示されている例については、リソースR4(行136)がアクティブ化されるためには、両方のリソースR5及びR6がオフにゲーティングされなければならない(行136、列116)。列116のリソース識別子は、テーブルの列115のリソースのパワーが数個のリソースのパワーの合計に等しいか又は近いときには“及び(AND)で結ばれた”対(又はストリング)として機能する。本例では、リソースR4のパワーは、リソースR5及びR6で散逸されるパワーの合計に近い。
“又は(OR)で結ばれた”対(又はストリング)として列116に記入されているリソース識別子は、アクティブ解除されるリソースの選択に関して柔軟性を許容する。例として、リソースR7(行142)がアクティブ化されるためには、リソースR8又はR9がアクティブ解除されなければならない(行142、列116)。同様に、リソースR8(行144、列115)がアクティブ化されるためには、リソースR7又はR9がアクティブ解除されなければならず(行144、列116)、リソースR9(行146)がアクティブ化されるためには、リソースR7又はR8がアクティブ解除されなければならない(行146、列116)。リソースR9(行146)は現在使用されているがリソースR7(行144)は使用されていないときにリソースR8(行144)がアクティブ化されるようにリクエストされたならば、ハードウェアはアクティブ解除されるものとしてリソースR7(行144)を指定し、MERA手法が不規則挙動ループではなくてフェーズ変更ループ(図5及び7を参照)上を進むことを可能にする。
テーブルの列118は、対応する行の中のリソースが現在利用可能であるか(すなわち、アクティブであるか)否かを示す。列118内の項目は、対応するリソースがアクティブ化されているときには“リソース利用可能”としてセットされ、対応するリソースがオフにゲーティングされているときには“リソース利用不可能”としてセットされる。列118内の項目はハードウェアによりポート128を介して自動的に更新される。列118から読み出されたビットは、通常実行ループに続くか、それとも図5のステップ86(図7のステップ112)に続くかを選択するために、図5及び7に示されているステップ82において使用される。
テーブルの列120の項目は、対応する行の列116に記載されているリソースを使用している(または使用するように予定されている)命令がパイプライン中に存在するか否かを示す。列120の項目も、ハードウェア・ポート128によって自動的に更新される。“又は(OR)で結ばれた”又は“及び(AND)で結ばれた”ストリングとして列116に記入されている各リソースについて、ハードウェアは列120において別々のビットを維持する。
テーブル114がリソース索引でアクセスされるごとに、列120の指示された項目が列116及び118内の対応するビットと共にテーブルから読み出される。列120から読み出されたビットは2つの目的のために使われる。第1に、これらのビットは、MERA制御ユニット(図1を参照)がステップ86(又は112)(図5及び7を参照)からプログラム・フェーズ変更ループに進むべきかそれとも不規則挙動ループに進むべきかを決定するために使用される。例えば、リソースR1(行130)がアクティブ化されるようにリクエストされたならば、行130、列120のビットは、R1に対して相互排除として指定されているリソースR2が現在使用されていないことを示し、MERA制御ユニット12は図5及び7のステップ86(112)からフェーズ変更ループに続く。しかし、リソースR2(行132)がアクティブ化されるようにリクエストされたならば、列120から読み出されたリソースR2に対応する行のビットは、R2に対して相互排除として指定されているリソースR1が現在使用されていることを示し、MERA制御ユニット12は図5及び7のステップ86(112)から不規則挙動ループに続く。
列120から読み出されたビットは、アクティブ解除されるリソースの選択のために複数の選択肢があるときには(それは、数個のリソースが“又は(OR)”規則を用いて列2に記入されているときに生じる)、アクティブ解除されるリソースを指定するために選択論理回路148により使用される。例えば、リソースR7がアクティブ化されるようにリクエストされたならば、列116から読み出された情報はリソースR8又はR9がアクティブ解除されなければならないことを明示する。列120から読み出されたビットは、リソースR8が使用されていなくてリソースR9が現在使用されていることを示す。この場合、選択論理回路148は、アクティブ解除されるものとしてリソースR8を選択する。MERA制御ユニット12は、不規則挙動ループの性能ペナルティーを招くこと無く図5及び7に示されているステップ86(112)の後のフェーズ変更ループ上を進み続ける。
テーブル114の列120の中のビットは、サイクル毎に、列122に格納されている値或いはリソース使用カウンタに基づいて、特定のリソースについてリソース使用カウンタがゼロにセットされているときにはそのリソースに対応する列120内の全ての“相互排除リソースが使用されている”項目が“いいえ”にセットされるように、更新される。特定のリソースについてリソース使用カウンタが非ゼロ値にセットされているときには、そのリソースに対応する列120内の全ての項目が“はい”にセットされる。例えば、本例ではリソースR4(行136)に対応するリソース使用カウンタはゼロであるので、列120内の行138及び140の両方の項目が“いいえ”にセットされる。
列122内の項目に基づいて列120内の項目を更新するために必要なハードウェアは、ゼロ値を検出する回路と、更新を必要とする列120内の適切な項目を始めに見出して書き込みポート12を用いて所要の更新を実行する論理回路とを含む。特定のリソースについてのリソース使用カウンタがゼロ値に又はゼロ値から変化するときに更新を必要とする列120内の項目を探すサーチは、どの行がこのリソースを相互排除として記録しているかを見出すために列116内の項目をスキャンすることを含み得る。或いは、ハードウェアは列116への逆方向マッピングを有するテーブルを維持することができる。例えば、その逆方向マッピング・テーブルは、リソースR2を行130に記録し、リソースR1を行132に記録し、リソースR5及びR6を行136に記録する。
テーブル114の列122は、各リソースについてのリソース使用カウンタを維持する。列122内のカウンタは、サイクル毎にハードウェアによりポート128を介して更新される。特定のリソースを使用する命令がパイプラインに入るとき、列122内の対応する項目中のカウンタがインクリメントされる。特定のリソースを使用する命令が実行を終えるか(すなわち、プロセッサ・パイプラインから去るか)或いはパイプラインからフラッシングされると、列122内の対応する項目中のカウンタはデクリメントされる。例えば、リソースR1を使用する命令がパイプラインに入ると、行130、列122に存するリソースR1に対応するカウンタは値5から値6にインクリメントされる。列120内のカウンタの非ゼロ値は、対応するリソースが現在使用されていることを示す。これらのカウンタのゼロ値は、対応するリソースが使用されていないことを示す。
テーブル114の列124はソフトウェア・ヒントを記憶しており、これは、ソフトウェアに知られている対応するリソースの使用に関する情報を示すように意図されている。列124は列116と同様にポート150を介してソフトウェアにより更新可能である。ソフトウェア・ヒント列を書くための命令は、システム及びユーザ・コードの両方にとって利用可能である。ソフトウェア・ヒントの例は、対応するリソースがこのプログラムによって使用されると予想されないことを意味する“使用されない”或いは対応するリソースがこのプログラムによって頻繁に使用されると予想されることを意味する“頻繁に使用される”を含む。ソフトウェア・ヒントは、アクティブ解除されるリソースを指定するための複数の選択肢があるときにテーブルから読み出されて、アクティブ解除されるリソースを指定する論理回路148により使用される。例えば、リソースR9がアクティブ化されるようにリクエストされたならば、リソースR7又はR8がアクティブ解除されなければならない。これらのリソースはいずれも現在使用されていないので、選択論理回路148は両方のリソースR7及びR8について列124から読み出された情報を使用する。リソースR7についてのソフトウェア・ヒントは、それがこのプログラムによって再び使用されそうであることを示す。このときリソースR8がアクティブ解除されるように指定され、リソースR7はアクティブ・モードにとどまる。排除リソース識別子テーブルのソフトウェア・ヒント列124はオプションである。ソフトウェア・ヒント列124のための更新は図1のリソース・アクティブ化制御レジスタ36から生ずる。
テーブル114は、リソースの使用についてのヒストリを記憶する列126をオプションで実現することができる。この使用ヒストリ情報は、アクティブ解除されるリソースを指定する選択論理回路148によって使用され得る。アクティブ解除されるリソースを指定するために複数の選択肢があり、列120及び124から読み出されたビットに基づいて決定を行うことができないときには、選択論理回路148は決定を行うために使用ヒストリ情報を使用する。頻繁には使われない(或いは長い間使用されていない)リソースがアクティブ解除されるように選択される。
列126の使用ヒストリ情報は図6及び7に示されているようにステップ106でアクティブ解除されるリソースを選択するためにも使用され、ここでリソース使用ヒストリ列126は、最近のヒストリにおいて夫々のリソースが使われた回数、或いはそのリソースが最後に何サイクル前に使われたかを記憶している。列126から読み出されたデータは、夫々のリソース又はリソースのグループについて別々に特権ソフトウェアによりセットされ得るスレショルド値と比較される。リソース使用カウンタ値がそのリソースについてセットされているスレショルドを下回れば、比較論理回路152は、ステップ106(図6及び7を参照)でそのリソースがアクティブ解除される資格を有すると図1のMERA制御ユニット12に信号する。同様に、リソースが使われた最後のサイクルを示すカウンタを維持する実施態様では、カウンタがそのリソースについてセットされているスレショルドを上回れば、比較論理回路152は、ステップ106でそのリソースがアクティブ解除される資格を有するとMERA制御ユニット12に信号する(図6及び7を参照)。この情報はMERA制御ユニット12によりステップ106の判定を行うために使用される。これは、リソースのアクティブ解除のためにイーガー・ポリシーを実施する図6及び7に示されている実施態様に当てはまるだけである。
上記のテーブル114は例であり、当業者は、例えば列の異なる順序付け、テーブルの置き換え、異なる索引付けメカニズム、テーブル中のいろいろなフィールドの更新についての異なるポリシー(偶数サイクルにおいてのみ列126を更新するなど)など、リソース識別子テーブルの実現に関して多くのバリエーションが可能であることを認めるであろう。いろいろな列についてソフトウェア及びハードウェア更新メカニズムの種々の組み合わせも可能である。更に、特定のアプリケーションの必要に応じてテーブルの幾つかの列だけが実現されても良い。
図9は、本発明の代表的実施態様においてパワー・ゲーティングを制御するための代表的ハードウェア構造を示す。本発明の少なくとも1つの実施態様で使われるMERA制御ユニットが次に説明される。リソース使用テーブル154は、幾つかのステップでMERAユニットのフローを制御するために必要な情報を提供する。列156はリソース識別子を含み、列158はソフトウェア・ヒント/指示を含み、列160はリソース使用ヒストリを含み、列162はリソース使用カウンタを含み、列164はアクティブ解除されるための有資格性リソースを示すリソース・ビットを含み、列166はリソース利用可能性インジケータを含み、列168はリソース・パワー・インジケータを含む。行170-178はリソース識別子R1−R7に割り当てられている。これらの列156-162は、図8と関連して上でテーブル114について記述されたものと同様の仕方で更新される。
リソース使用テーブル154の列164は、対応する行のリソースがアクティブ解除される資格を有するか否かを示す。列164の“1”という記載事項は資格があることを示し、“0”という記載事項はそのリソースがアクティブ解除される資格を持っていないことを示す。これらのビットは、対応する行の列158,160及び162の中の値に基づいてハードウェアにより更新される。列162の中のリソース使用カウンタがゼロでなければ、対応するリソースはアクティブ解除される資格を有しない。列158の中のソフトウェア・ヒントが、このリソースがこのプログラムによって頻繁に使用されることを示しているならば、対応するリソースはアクティブ解除される資格を有しない。その他の点に関して、列160のリソース使用ヒストリが所定の(ソフトウェア更新可能な)スレショルドより低く、かつ、又は、オプションのソフトウェア・ヒントがこのリソースがこのプログラムによって使われそうもないことを示すならば、列164の中の対応するビットは“1”にセットされ、そのリソースがアクティブ解除される資格を有することを示す。
リソース使用テーブルの列168は、夫々のリソースについてのパワーを記憶する。これらの値は、システムのパワー・アップのときにロードされ得、或いは製造時にハード・コーディングされ得る。
列166及び168の値は、夫々のサイクルにおいてテーブル154から読み出されて回路182に転送される。列166の中の値が“1”ならば、対応するデータ・ゲーティング回路182は列168から読み出された値を多入力加算器196に転送し、その他の場合、列166の中の値が“0”ならば、ゲーティングするデータ・ゲーティング回路182はゼロを多入力加算器196に転送する。多入力加算器196は、全ての行からの値を合計し、その結果(それは、現在アクティブである全てのリソースの総パワーである)を多入力加算器186に転送する。
列164及び168からの値は、夫々のサイクルでテーブルから読み出されてデータ・ゲーティング回路182に転送される。列164の中の値が“1”ならば、対応するデータ・ゲーティング回路182は列168から読み出された値を多入力加算器184に転送し、その他の場合、列164の中の値が“0”ならば、ゲーティングするデータ・ゲーティング回路182はゼロを多入力加算器184に転送する。多入力加算器184は、全ての行170-178からの値を合計し、その結果(それは、アクティブ解除に利用し得る全てのリソースの総パワーである)を多入力加算器186に転送する。加算器184から受け取られた値は加算器186において結果から差し引かれる(すなわち、その値は、他のオペランドに加えられる前に符号を変える)。
アクティブ化されるようにリクエストされているリソースについての列168からの値も多ビット加算器186に転送される。加算器186の残りの入力は、本書において前に定義されたP_boundの値を保持するレジスタ188に接続されている。レジスタ188はシステムのパワー・アップ時に書かれ、そしてオプションでシステム・ソフトウェアにより書換え可能であるように実現され得る。レジスタ188からの値は加算器186の他の入力に存する値から差し引かれる(すなわち、それは他のオペランドに加えられる前に符号を変える)。加算器186の出力の符号は符号検出器190に転送される。符号検出器の出力192は、充分な数のリソースがオフにゲーティングされる資格を有するか否かを示す。例えば、出力192は、図3,4及び6に示されているステップ86(110)で充分な数のリソースがオフにゲーティングされる資格を有するか否か判定するために使用され得る。
加算器186,194,196及び184及び符号検出器190の論理図は、明瞭性を得るために簡略化された形で示されている。これらの加算器186,194,196及び184及び符号検出器190は、統合多入力桁上げ保留加算器として実現され得る。
アクティブ解除されるリソースの選択は、図8の排除リソース識別子テーブル114と関連して上で記述された付加的ステップを用いる、図8に示されているものと同様のハードウェア構造により支援され得る。
図10は、本発明の代表的実施態様において投機的命令のステータスを調べるための流れ図である。MERA制御ユニット12により使用される制御フローにおけるステップのシーケンスが流れ図198で示されている。流れ図198におけるステップのシーケンスは、マイクロプロセッサにおける命令実行の効率を投機的発行で改善する。図示されている制御ステップのシーケンスは、オフにゲーティングされているリソースへのアクセスをリクエストする命令が検出された後に加入される。例えば、図示されているステップのシーケンスへの制御フローは、図3-7に示されているステップ82から生じ得る。
ステップ200は制御シーケンスの第1ステップであり、ここでゲーティングされているリソースへのアクセスをリクエストする命令のステータスが調べられる。命令が非投機的であるならば(すなわち、その命令に先行する全てのブランチが解決されているならば)、コントロールは出口ポイント206から出て、コントロールがプログラム・フェーズ変更ループへ進まなければならないか、それとも不規則挙動ループへ進まなければならないかを調べる(例えば、図3-7を参照)。
ステップ200で命令が投機的であると(すなわち、その命令に先行する少なくとも1つのブランチが解決されていないと)判定されたならば、コントロールはステップ202へ進む。このステップにおいて、命令の発行プロセスは、先行する全てのブランチが解決されるまでストールされる。ステップ202からの出口で命令のステータスは非投機的に変更され、或いは命令はパイプラインからフラッシングされる。
ステップ204で命令のステータスが調べられる。それが非投機的になっているならば、コントロールはこのオプションのステップのシーケンスから出て、コントロールがプログラム・フェーズ変更ループへ進まなければならないか、それとも不規則挙動ループへ進まなければならないかを調べる(例えば、図3-7を参照)。命令がフラッシングされているならば、コントロールは、出口ポイント208においてこのオプションのステップのシーケンスから出て、図3-7に示されているステップ80又は84を行うか、或いは出口ポイント206を通って図6-7に示されているステップ82へ進む。
図11は、本発明の代表的実施態様においてプロセッサにより実行されているプログラム・スレッドの不規則挙動を調べることを示す流れ図である。制御フローの中には、流れ図210で示されているステップのシーケンスが挿入され得るポイントが幾つかある。図示されている制御ステップのシーケンスは、図3-7の実施態様の制御フローにおいて以下の条件、すなわち
a)オフにゲーティングされているリソースへのアクセスをリクエストする命令が検出されたか(例えば、図3-7に示されているステップ82からの“はい”ブランチ)、或いは
b)アクティブ解除され得るリソースが充分に無いか(例えば、図3及び4の実施態様のステップ86からの“いいえ”ブランチ)、或いは
c)相互排除として指定されているリソースが使用されているか(例えば、図5に示されているステップ86からの“はい”ブランチ)、或いはオフにゲーティングされていないか(例えば、図7に示されているステップ112からの“いいえ”ブランチ)、或いは
d)リクエストされたリソースが、セットされているパワー限度を超えなければアクティブ化され得ない(例えば、図6の実施態様のステップ110からの“いいえ”ブランチ)という条件、
のうちの1つが検出された後に加入され得る。
ステップ214を実行するために、ハードウェアは、夫々のリソースについて、或いはリソースのグループについて、リソース・アクティブ化ヒストリ・カウンタ222を実現することができる。これらは、対応するリソースがアクティブ化されるごとにインクリメントされるエージング・カウンタである。また、夫々のリソース又はリソースのグループについて、ハードウェアは、ソフトウェアにより更新され得るスレショルドの値を記憶する。比較器のセット224は、行230の中のカウンタを行232の中の対応するスレショルド値と比較する。いずれかのカウンタが対応するスレショルド値を超えると、カウンタの出力のトリガー信号226がアサートされる。
ステップ214において、トリガーがセットされると(すなわち、リソース・アクティブ化・ヒストリが、アクティブ・モードとゲーティングされるモードとの間でのリソースのスイッチングが所定のリソース・アクティブ化頻度スレショルドより頻繁に生じることを示せば)、コントロールはステップ216へ進む。そうでなければ、コントロールは、このステップのシーケンスを出口ポイント218から出て、コントロールの適切なポイントに、例えば図3-7の実施態様のステップ86に、又は図3-4に示されているステップ90に、及び図5及び7に示されているステップ94に、戻る。
ステップ216で、システム・ソフトウェアへのトラップが開始される(例えば、割込み/トラップ制御ブロック34の入力へ行く図1の信号50で適切なコントロールをアサートすることにより)。そのトラップは、システム・ソフトウェア(例えば、スレッド・スケジューラ)に対して、スレッドの現在走っている組み合わせが不十分な実行をもたらすこと、或いは、現在のスレッドが不規則な挙動を示していて、より低い優先順位のモードにスイッチングされるか或いは他のコアで実行するように移動されるか或いは終了されるべきであることを示す。トラップ中、ゲーティングされているリソースへのアクセスをリクエストする命令はソフトウェアでエミュレートされ得る。ステップ216の後、アプリケーション・コードの実行が出口ポイント220から再開される。
図12は、ゲーティングされているリソースのアクティブ化を避けるべく実行されるように代わりのリソースへ命令を発行することを示す流れ図である。流れ図236のこのステップのシーケンスが挿入され得るポイントが制御フローの中に幾つかある。流れ図236の制御ステップのシーケンスは、次のように図3-7の実施態様の制御フローにおいて次の条件、すなわち、
a)アクティブ解除され得るリソースが充分に無いか(例えば、図3及び4に示されているステップ86からの“いいえ”ブランチ)、或いは
b)相互排除として指定されているリソースが使用されているか(例えば、図5に示されているステップ86からの“はい”ブランチ)、或いはオフにゲーティングされていないか(例えば、図7に示されているステップ112からの“いいえ”ブランチ)、或いは
c)リクエストされたリソースが、セットされているパワー限度を超えなければアクティブ化され得ない(例えば、図6に示されているステップ110からの“いいえ”ブランチ)という条件、
のうちの1つが検出された後に加入され得る。
ステップ240において、MERA制御ユニット12は、ゲーティングされているリソースをリクエストした命令が、代わりのリソースに対して、実行されるように発行され得るか否かを調べる。代わりのリソースでの実行は、その命令の多重発行(すなわち、その命令を同じユニットに複数のサイクルで送ること)を必要とし得、或いは、その命令の代わりに他の命令のシーケンスを、それらがゲーティングされているリソースのアクティブ化を必要としないように、用いることを必要とし得る。命令を他の命令のシーケンスに置換することは、マイクロコード・エンジン(例えば、図1のマイクロコード・エンジン24)により実行され得る。その様な命令置換の例は、加算命令のシーケンスを使用する乗算命令の実行、32ビット乗算のシーケンスを使用する64ビット乗算命令の実行、桁送り及び加算命令、及びスカラー命令のシーケンスを使用するSIMD(Single Instruction Multiple Data(単一命令複数データ))命令の実行を含む。別の例は、2つの浮動小数点ユニットを必要とする2つの浮動小数点命令のグループ(並列に発行されたならば)の単一浮動小数点ユニットにおける実行であり、それは2つの浮動小数点スカラー命令をシーケンシャルに発行することにより実行される。
代わりのリソースに対して命令が発行され得なければ、コントロールは、流れ図236のステップのシーケンスを出口ポイント246から出て、種々の実施態様の適切な制御ポイントに、例えば図3-4及び6の実施態様のステップ90に、或いは図5及び7に示されているステップ94に、戻る。
ステップ240でのチェックの結果として、その命令が代わりのリソースへ発行され得ると判定されたならば、コントロールはステップ242に進む。ステップ242において、その命令は、代わりのリソースへ場合によってはシーケンシャルに発行される命令のシーケンスに置換され、そしてコントロールは図3-7に示されているステップ80又はステップ84へ戻され、或いは図6-7に示されているステップ106へ進む。
次にストール・サイクルの挿入が記述される。MERA制御12(図1を参照)ユニットは、上で記述され図3-7に示されている制御フローのいろいろなステップで数個のストール・サイクルを強要することができる。例えば、ステップ96でアクティブ化されるように信号されたリソースがアクティブ化手続きを完了することを可能にするために図3-7に示されているステップ96の後に数個のストール・サイクルが強要され得る。このステップは、リクエストされたリソースが、それに対して何らかの命令が発行される前に、完全にアクティブ化されることを保証する。また、アクティブ化されるリソースにおけるアクティブ化手続きに起因する一時的パワー増大を防止するために、図3-5に示されているステップ92及び96の間で付加的なストール・サイクルが強要され得る。
本書において添付図面と関連して代表的実施態様が記述されたけれども、本発明が本書に記載された代表的実施態様には限定されないこと、及び、それらに対して種々の他の変更及び改変が本発明の範囲から逸脱すること無く当業者によって行われ得ることが理解されなければならない。添付されている請求項により定義される発明の範囲内に全てのそのような変更及び改変が含まれることが意図されている。
本発明の代表的実施態様における相互排除リソース・アクティブ化(MERA)制御ユニット及び他のプロセッサ・コア・リソースを示す。 本発明の代表的実施態様におけるマイクロプロセッサ・コンポーネントとMERA制御ユニットとの間の代表的インターフェースを示す。 本発明の代表的実施態様におけるマイクロプロセッサ・リソースのアクティブ解除及びアクティブ化の制御を示す流れ図である。 本発明の代表的実施態様におけるマイクロプロセッサ・リソースのアクティブ解除及びアクティブ化の制御を示す流れ図である。 本発明の代表的実施態様においてテーブルに格納されたリソースの対についてのオン・デマンドのアクティブ化及びアクティブ解除ポリシーを示す流れ図である。 本発明の代表的実施態様におけるマイクロプロセッサ・リソースのアクティブ解除及びアクティブ化の制御を示す流れ図である。 本発明の代表的実施態様におけるイーガー・リソース・アクティブ解除及びオン・デマンド・リソース・アクティブ化ポリシーを用いるリソースの相互排除アクティブ化の制御を示す流れ図である。 本発明の代表的実施態様における相互排除リソース(またはリソースのグループ)に対するニーズをチェックし、それらを指定するテーブル・ベースのハードウェア構造を示す。 本発明の代表的実施態様においてパワー・ゲーティングを制御するための代表的ハードウェア構造を示す。 本発明の代表的実施態様における投機的命令のステータスのチェックを示す流れ図である。 本発明の代表的実施態様においてMERA制御ユニットにより実行されているプログラム命令の不規則な挙動のチェックを示す流れ図である。 リクエストされたゲーティングされるリソースのアクティブ化を避けるための代わりのリソースへの実行命令の発行を示す流れ図である。

Claims (30)

  1. マイクロプロセッサにおけるパワー・パラメータを制御する方法であって、
    前記マイクロプロセッサの複数のリソース制御するステップであって、前記制御は、前記複数のリソースのうちの、命令の実行のためにリクエストされる第1のリソースをアクティブ化するステップ、及び、前記複数のリソースのうちの、前記命令の前記実行のためにリクエストされていない第2のリソースをゲーティングするステップを含む、前記制御するステップと、
    アクティブ化されている前記リソースにより消費されるパワーと散逸されるパワーとの総パワーを、前記マイクロプロセッサの最大パワーより低い所定値に設定可能であるパワー限度より低く保つステップであって、前記最大パワーは前記マイクロプロセッサにおいて最大数のリソースを利用するコードのセグメントで散逸されるパワーである、前記保つステップ
    を含む、前記方法。
  2. マイクロプロセッサにおけるパワー・パラメータを制御する方法であって、
    前記マイクロプロセッサの複数のリソースのアクティブ化を制御するステップと、
    アクティブ化されている前記リソースにより消費されるパワーと散逸されるパワーとの総パワーを、前記マイクロプロセッサの最大パワーより低い所定値に設定可能であるパワー限度より低く保つステップであって、前記最大パワーは前記マイクロプロセッサにおいて最大数のリソースを利用するコードのセグメントで散逸されるパワーである、前記保つステップと、
    マイクロプロセッサ命令によりアクティブ化されるようにリクエストされている第1のリソースをアクティブ化するステップと、
    前記第1のリソースに含まれるリソース以外の1以上の第2のリソースをゲーティングするステップと
    を含み、
    前記ゲーティングするステップは、前記投機的命令が非投機的になるか又は命令無効化メカニズムを通して無効にされるまで、アクティブ解除されているリソースのうちの1つへのアクセスをリクエストする投機的命令をストールさせるステップを含む、前記方法。
  3. マイクロプロセッサにおけるパワー・パラメータを制御する方法であって、
    前記マイクロプロセッサの複数のリソースのアクティブ化を制御するステップと、
    アクティブ化されている前記リソースにより消費されるパワーと散逸されるパワーとの総パワーを、前記マイクロプロセッサの最大パワーより低い所定値に設定可能であるパワー限度より低く保つステップであって、前記最大パワーは前記マイクロプロセッサにおいて最大数のリソースを利用するコードのセグメントで散逸されるパワーである、前記保つステップと、
    前記第1のリソースのエレメントにより索引付けされたリソース・テーブルから前記第2のリソースについての1つ以上の項目を読み出すことによってアクティブ解除される第2のリソースを決定するステップと、
    前記決定された第2のリソースをゲーティングするステップと
    を含む、前記方法。
  4. 前記第1のリソースのエレメントにより索引付けされたリソース・テーブルから前記第2のリソースについての1つ以上の項目を読み出すことによってアクティブ解除される前記第2リソース決定するステップを更に含む、請求項1又は2に記載の方法。
  5. 前記ゲーティングするステップは、前記第1リソースをアクティブ化する前に前記第2リソースのパワー・ゲーティング、クロック・ゲーティング、データ・ゲーティング、複合パワー及びクロック・ゲーティング、複合パワー及びデータ・ゲーティング、又は複合クロック及びデータ・ゲーティング、を実行することを含み、
    前記第1リソースは前記命令によりリクエストされる、請求項1〜3のいずれか一項に記載の方法。
  6. 前記パワー・ゲーティングを実行することは、
    前記第2リソースがアクティブ解除され得るようになるまでマイクロプロセッサ命令の発行をストールさせるステップと、
    前記命令によりリクエストされた前記第1リソースをアクティブ化する前に前記第2リソースをアクティブ解除するステップと
    を含む、請求項に記載の方法。
  7. 前記ゲーティングするステップは、
    前記第1のリソースにおけるパワー・ゲーティングされているリソースの使用を必要とする条件が発生したときに、ゲーティングされている前記第1のリソースをアクティブ化する前に使用されていない前記第2リソースオフにゲーティングされるように選択するフェーズ変更ループ作動させるステップを含む、請求項1〜3のいずれか一項に記載の方法。
  8. 前記ゲーティングするステップは、
    前記第1のリソースのアクティブ化の前に現在アクティブのリソースのアクティブ解除を必要とする条件が発生したときに、前記第2リソースアクティブ解除するプロセスを開始する不規則挙動ループ作動させるステップを含む、請求項1〜3のいずれか一項に記載の方法。
  9. 前記ゲーティングするステップは、前記投機的命令が非投機的になるか又は命令無効化メカニズムを通して無効にされるまで、ストールするようにアクティブ解除されている前記第1のリソースへのアクセスをリクエストする投機的命令をストールさせるステップを含む、請求項1又は2に記載の方法。
  10. マイクロプロセッサにおいてパワー・パラメータを制御するための装置であって、
    前記マイクロプロセッサの複数のリソースと、
    前記複数のリソースを制御するためのリソース・アクティブ化制御ユニットであって、前記制御は、前記複数のリソースのうちの、命令の実行のためにリクエストされる第1のリソースをアクティブ化すること、及び、前記複数のリソースのうちの、前記命令の前記実行のためにリクエストされていない第2のリソースをゲーティングすることを含む、前記リソース・アクティブ化制御ユニットと
    を含み、
    前記リソース・アクティブ化制御ユニットは、アクティブ化されている前記リソースにより消費されるパワーと散逸されるパワーとの総パワーを、前記マイクロプロセッサの最大パワーより低い所定値に設定可能であるパワー限度より低く保ち、前記最大パワーは前記マイクロプロセッサにおいて最大数のリソースを利用するコードのセグメントで散逸されるパワーである、前記装置。
  11. 前記パワー限度は、プログラマブルに制御されるメカニズムを介して設定可能である、請求項10に記載の装置。
  12. 前記リソース・アクティブ化制御ユニットは、前記リソース・アクティブ化制御ユニットが前記第2リソースのうちの少なくとも1つをゲーティングした後に前記第1のリソースをアクティブ化する、請求項10に記載の装置。
  13. 前記リソース・アクティブ化制御ユニットは、パワー・ゲーティング技術、クロック・ゲーティング技術、データ・ゲーティング技術、複合パワー及びクロック・ゲーティング技術、複合パワー及びデータ・ゲーティング技術、又はクロック及びデータ・ゲーティング技術の組み合わせを用いて前記第2リソースをゲーティングする、請求項12に記載の装置。
  14. 前記リソース・アクティブ化制御ユニットは、アクティブ化されたリソース中の全てのリソースにより散逸される総パワーが前記パワー限度を超えないように前記リソースを制御する、請求項12に記載の装置。
  15. 前記リソース・アクティブ化制御ユニットは、前記命令によりリクエストされた前記第1のリソースが完全にアクティブ化されるまで、マイクロプロセッサ命令の発行ストールさせる、請求項12に記載の装置。
  16. 前記リソース・アクティブ化制御ユニットは、前記第2リソースがアクティブ解除プロセスを終了するまで前記第1リソースのアクティブ化を遅らせる、請求項15に記載の装置。
  17. 前記リソース・アクティブ化制御ユニットは、前記第1のリソースのエレメントにより索引付けされたリソース・テーブルから前記第2のリソースについての1つ以上の項目を読み出すことによってアクティブ解除される前記第2リソース決定する、請求項12に記載の装置。
  18. 前記リソース・テーブルはハードウェア、ソフトウェア、又はハードウェア及びソフトウェアの組み合わせで実装される、請求項17に記載の装置。
  19. 前記リソース・テーブルは、ソフトウェア・コマンド、ハードウェア装置、又はソフトウェア・コマンド及びハードウェア装置の組み合わせを介して更新可能である、請求項17に記載の装置。
  20. 前記テーブルはソフトウェアにより維持されるリソース使用ヒントまたはハードウェアにより維持されるリソース使用カウンタを記憶し、それらはアクティブ解除されるリソースの選択に使用される、請求項19に記載の装置。
  21. 前記マイクロプロセッサにより散逸される前記最大パワーは、ハードウェア維持されるテーブルからマイクロプロセッサ・リソースについてパワー値及び使用ビットを読み出し、対応するリソース使用ビットが乗じられた前記パワー値を合計することによってハードウェアにより決定される、請求項20に記載の装置。
  22. 前記リソース制御ユニットは、前記マイクロプロセッサにより散逸される最大パワーが前記パワー限度を超えないように前記第2のリソースを選択する、請求項12に記載の装置。
  23. 前記リソース制御ユニットは、前記第2のリソースの全てをアクティブ解除するために前記第2のリソースを選択する、請求項22に記載の装置。
  24. 前記リソース制御ユニットは、前記最大パワーを前記パワー限度より低く保つのに必要な最少数のリソースが前記第2のリソースにおいて選択されるように前記第2のリソースを選択する、請求項22に記載の装置。
  25. 前記第2のリソースのアクティブ解除は、アクティブ解除のための条件が検出されることに応答して、前記マイクロプロセッサの前記最大パワーに関わらず、直ちに実行される、請求項22に記載の装置。
  26. 前記第1リソースのアクティブ化は、使用要求に基づいて最後の可能なときに遅延して実行される、請求項22に記載の装置。
  27. 前記第1のリソースにおけるパワー・ゲーティングされているリソースの使用を必要とする条件が発生したときに、ゲーティングされている前記第1のリソースアクティブ化するに使用されていない前記第2リソースオフにゲーティングされるように選択するフェーズ変更ループを作動させる、請求項22に記載の装置。
  28. 前記第1のリソースのアクティブ化の前に現在アクティブなリソースのアクティブ解除を必要とする条件が発生したときに、前記第2リソースアクティブ解除するプロセスを開始する不規則挙動ループを作動させる、請求項22に記載の装置。
  29. 前記リソース制御ユニットは、前記投機的命令が非投機的となるか又は命令無効化メカニズムを通して無効化されるまで、ストールするようにアクティブ解除されている前記第1のリソースへのアクセスをリクエストする投機的命令ストールさせる、請求項10に記載の装置。
  30. 前記リソース制御ユニットは、前記マイクロプロセッサにより実行されているプログラムの不規則挙動を判定し、前記判定後直ちに前記プログラムの実行優先順位を下げるか又はスレッド実行スケジュールを変更するトラップ信号を生成する、請求項10に記載の装置。
JP2008526944A 2005-08-19 2006-07-19 最大パワーを制御するためのマイクロプロセッサ・リソースの相互排除アクティブ化のためのシステム及び方法 Expired - Fee Related JP4811879B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/207,333 2005-08-19
US11/207,333 US7447923B2 (en) 2005-08-19 2005-08-19 Systems and methods for mutually exclusive activation of microprocessor resources to control maximum power
PCT/US2006/028210 WO2007024374A2 (en) 2005-08-19 2006-07-19 Systems and methods for mutually exclusive activation of microprocessor resources to control maximum power

Publications (2)

Publication Number Publication Date
JP2009505279A JP2009505279A (ja) 2009-02-05
JP4811879B2 true JP4811879B2 (ja) 2011-11-09

Family

ID=37768515

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008526944A Expired - Fee Related JP4811879B2 (ja) 2005-08-19 2006-07-19 最大パワーを制御するためのマイクロプロセッサ・リソースの相互排除アクティブ化のためのシステム及び方法

Country Status (5)

Country Link
US (1) US7447923B2 (ja)
EP (1) EP1946200A4 (ja)
JP (1) JP4811879B2 (ja)
CN (1) CN101243372B (ja)
WO (1) WO2007024374A2 (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070094521A1 (en) * 2005-10-24 2007-04-26 Brooks Robert C Current-sensing control system for a microprocessor
US8112534B2 (en) * 2006-07-26 2012-02-07 Dell Products L.P. Apparatus and method for remote power control
US20090044032A1 (en) * 2007-08-09 2009-02-12 Timothy Chainer Method, Apparatus and Computer Program Product Providing Instruction Monitoring for Reduction of Energy Usage
US20110213995A1 (en) * 2007-08-09 2011-09-01 International Business Machines Corporation Method, Apparatus And Computer Program Product Providing Instruction Monitoring For Reduction Of Energy Usage
JP2009151573A (ja) * 2007-12-20 2009-07-09 Fujitsu Microelectronics Ltd 半導体集積回路
WO2010010515A1 (en) * 2008-07-23 2010-01-28 Nxp B.V. Adjustment of a processor frequency
KR101361508B1 (ko) * 2008-08-19 2014-02-10 삼성전자 주식회사 화상형성장치, 시스템 및 이 장치의 기능설정메뉴 제공방법
US8195704B2 (en) * 2009-01-06 2012-06-05 International Business Machines Corporation Validation and correction in a distributed namespace
EP2400387B1 (de) * 2010-06-25 2013-03-13 AVG Netherlands B.V. Verfahren zur Performanceverbesserung von Computern
US8565685B2 (en) * 2011-01-28 2013-10-22 Nokia Corporation Utilization-based threshold for choosing dynamically between eager and lazy scheduling strategies in RF resource allocation
US9218048B2 (en) 2012-02-02 2015-12-22 Jeffrey R. Eastlack Individually activating or deactivating functional units in a processor system based on decoded instruction to achieve power saving
US9104416B2 (en) 2012-02-05 2015-08-11 Jeffrey R. Eastlack Autonomous microprocessor re-configurability via power gating pipelined execution units using dynamic profiling
US9098271B2 (en) 2012-02-05 2015-08-04 Jeffrey R. Eastlack Autonomous microprocessor re-configurability via power gating pipelined execution units using static profiling
US9003218B2 (en) 2012-05-21 2015-04-07 International Business Machines Corporation Power shifting in multicore platforms by varying SMT levels
US8959371B2 (en) * 2012-07-17 2015-02-17 Freescale Semiconductor, Inc. Techniques for reducing processor power consumption through dynamic processor resource allocation
JP6024828B2 (ja) * 2013-08-08 2016-11-16 富士通株式会社 消費電力値が所定電力値以下である状態情報を、測定した処理性能値に基づいて選択する選択装置
US9311978B2 (en) * 2013-10-23 2016-04-12 Globalfoundries Inc. Regulated power gating for growable memory
US11016770B2 (en) 2015-09-19 2021-05-25 Microsoft Technology Licensing, Llc Distinct system registers for logical processors
US10768936B2 (en) 2015-09-19 2020-09-08 Microsoft Technology Licensing, Llc Block-based processor including topology and control registers to indicate resource sharing and size of logical processor
US10776115B2 (en) 2015-09-19 2020-09-15 Microsoft Technology Licensing, Llc Debug support for block-based processor
US11126433B2 (en) * 2015-09-19 2021-09-21 Microsoft Technology Licensing, Llc Block-based processor core composition register
US10162922B2 (en) 2017-03-15 2018-12-25 Qualcomm Incorporated Hybrid clock gating methodology for high performance cores
US11409560B2 (en) 2019-03-28 2022-08-09 Intel Corporation System, apparatus and method for power license control of a processor

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10133789A (ja) * 1996-10-29 1998-05-22 Toshiba Corp 消費電力制限機能つきプロセッサ
JP2000322259A (ja) * 1999-05-11 2000-11-24 Hitachi Ltd データ処理装置
JP2003296123A (ja) * 2002-01-30 2003-10-17 Matsushita Electric Ind Co Ltd 電力制御情報を付与する命令変換装置及び命令変換方法、命令変換を実現するプログラム及び回路、変換された命令を実行するマイクロプロセッサ
JP2004178613A (ja) * 1989-12-15 2004-06-24 Renesas Technology Corp マイクロプロセッサおよび情報処理装置
JP2004199139A (ja) * 2002-12-16 2004-07-15 Matsushita Electric Ind Co Ltd プロセッサシステム、命令列最適化装置、および命令列最適化プログラム
JP2004259274A (ja) * 2003-02-24 2004-09-16 Internatl Business Mach Corp <Ibm> マシン・コード・ビルダによって得られる電力消費低減
JP2006059068A (ja) * 2004-08-19 2006-03-02 Matsushita Electric Ind Co Ltd プロセッサ装置
JP2006509291A (ja) * 2002-12-04 2006-03-16 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ マイクロプロセッサ電力消費のソフトウェアベースの制御

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4488006A (en) * 1982-07-01 1984-12-11 At&T Bell Laboratories Apparatus for controlling the application of telephone line power in a telephone set
US5189314A (en) 1991-09-04 1993-02-23 International Business Machines Corporation Variable chip-clocking mechanism
JP3058986B2 (ja) 1992-04-02 2000-07-04 ダイヤセミコンシステムズ株式会社 コンピュータシステムの節電制御装置
EP0649086B1 (en) * 1993-10-18 2000-07-19 National Semiconductor Corporation Microprocessor with speculative execution
US5940785A (en) 1996-04-29 1999-08-17 International Business Machines Corporation Performance-temperature optimization by cooperatively varying the voltage and frequency of a circuit
US6385715B1 (en) * 1996-11-13 2002-05-07 Intel Corporation Multi-threading for a processor utilizing a replay queue
US6883089B2 (en) * 2000-12-30 2005-04-19 Intel Corporation Method and apparatus for processing a predicated instruction using limited predicate slip
US6792338B2 (en) * 2001-04-06 2004-09-14 Honeywell International, Inc. System and method for actively limiting the power drawn from a power distribution bus
US6721672B2 (en) * 2002-01-02 2004-04-13 American Power Conversion Method and apparatus for preventing overloads of power distribution networks
US6996728B2 (en) * 2002-04-26 2006-02-07 Hewlett-Packard Development Company, L.P. Managing power consumption based on utilization statistics
US7111182B2 (en) * 2003-08-29 2006-09-19 Texas Instruments Incorporated Thread scheduling mechanisms for processor resource power management
US7155623B2 (en) * 2003-12-03 2006-12-26 International Business Machines Corporation Method and system for power management including local bounding of device group power consumption
US7467306B2 (en) * 2005-03-08 2008-12-16 Hewlett-Packard Development Company, L.P. Methods and systems for allocating power to an electronic device

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004178613A (ja) * 1989-12-15 2004-06-24 Renesas Technology Corp マイクロプロセッサおよび情報処理装置
JPH10133789A (ja) * 1996-10-29 1998-05-22 Toshiba Corp 消費電力制限機能つきプロセッサ
JP2000322259A (ja) * 1999-05-11 2000-11-24 Hitachi Ltd データ処理装置
JP2003296123A (ja) * 2002-01-30 2003-10-17 Matsushita Electric Ind Co Ltd 電力制御情報を付与する命令変換装置及び命令変換方法、命令変換を実現するプログラム及び回路、変換された命令を実行するマイクロプロセッサ
JP2006509291A (ja) * 2002-12-04 2006-03-16 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ マイクロプロセッサ電力消費のソフトウェアベースの制御
JP2004199139A (ja) * 2002-12-16 2004-07-15 Matsushita Electric Ind Co Ltd プロセッサシステム、命令列最適化装置、および命令列最適化プログラム
JP2004259274A (ja) * 2003-02-24 2004-09-16 Internatl Business Mach Corp <Ibm> マシン・コード・ビルダによって得られる電力消費低減
JP2006059068A (ja) * 2004-08-19 2006-03-02 Matsushita Electric Ind Co Ltd プロセッサ装置

Also Published As

Publication number Publication date
JP2009505279A (ja) 2009-02-05
WO2007024374A3 (en) 2007-09-20
CN101243372A (zh) 2008-08-13
CN101243372B (zh) 2011-05-04
US20070043960A1 (en) 2007-02-22
EP1946200A2 (en) 2008-07-23
EP1946200A4 (en) 2008-11-26
US7447923B2 (en) 2008-11-04
WO2007024374A2 (en) 2007-03-01

Similar Documents

Publication Publication Date Title
JP4811879B2 (ja) 最大パワーを制御するためのマイクロプロセッサ・リソースの相互排除アクティブ化のためのシステム及び方法
Kalla et al. IBM Power5 chip: A dual-core multithreaded processor
KR101421346B1 (ko) 프로세서 명령어 발행 스로틀링
US9026705B2 (en) Interrupt processing unit for preventing interrupt loss
JP5255701B2 (ja) 疎及び密予測を伴うハイブリッド分岐予測デバイス
US6745336B1 (en) System and method of operand value based processor optimization by detecting a condition of pre-determined number of bits and selectively disabling pre-determined bit-fields by clock gating
US8255669B2 (en) Method and apparatus for thread priority control in a multi-threaded processor based upon branch issue information including branch confidence information
EP3055774B1 (en) Multi-mode set associative cache memory dynamically configurable to selectively allocate into all or a subset of its ways depending on the mode
US11416253B2 (en) Multiple-table branch target buffer
JP3716414B2 (ja) 同時マルチスレッド化プロセッサ
US20060101238A1 (en) Adaptive fetch gating in multithreaded processors, fetch control and method of controlling fetches
US8261276B2 (en) Power-efficient thread priority enablement
US20130138888A1 (en) Storing a target address of a control transfer instruction in an instruction field
CN112673346A (zh) 用于提取组的序列的控制对分支预测单元的存取
US10482017B2 (en) Processor, method, and system for cache partitioning and control for accurate performance monitoring and optimization
JP2004518183A (ja) マルチスレッド・システムにおける命令のフェッチとディスパッチ
Shum et al. Design and microarchitecture of the IBM System z10 microprocessor
Mehta et al. Fetch halting on critical load misses
US20230342148A1 (en) Microprocessor with non-cacheable memory load prediction
Lee et al. OPTS: increasing branch prediction accuracy under context switch
Hines et al. Guaranteeing instruction fetch behavior with a lookahead instruction fetch engine (LIFE)
Lee et al. On augmenting trace cache for high-bandwidth value prediction
Zhang et al. Loop-based leakage control for branch predictors
Yi et al. Computer Architecture
CN114846443A (zh) 控制对用于取出组序列的分支预测单元的存取

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090325

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110421

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110421

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20110421

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110425

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110425

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110426

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110811

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110811

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20110811

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110817

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140902

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees