(57)【要約】【課題】マイクロプロセッサにおけるパワー散逸及び消費を制御するためのシステム及び方法を提供する。【解決手段】マイクロプロセッサ（１０）におけるパワー・パラメータを制御するための装置は、マイクロプロセッサ（１０）の最大パワーを制御するためのリソース・アクティブ化制御ユニット（１２）と、２つ以上のリソース（２６１，２６２，２６３）とを含む。リソース・アクティブ化制御ユニット（１２）は、マイクロプロセッサ（１０）の消費され散逸されるパワーが最大パワーより下の所定値に設定可能であるパワー限度を超えないように、リソース（２６１，２６２，２６３）のアクティブ化を制御する。【選択図】図１
2009505279.tif 000002
【特許請求の範囲】
【請求項１】
マイクロプロセッサにおいてパワー・パラメータを制御するための装置であって、前記装置は、
前記マイクロプロセッサの最大パワーを制御するためのリソース・アクティブ化制御ユニットと、
２つ以上のリソースとを含み、前記リソース・アクティブ化制御ユニットは、前記マイクロプロセッサに消費されるパワー及び散逸されるパワーが前記最大パワーより下の所定値に設定可能であるパワー限度を超えないように、前記リソースのアクティブ化を制御する、
装置。
【請求項２】
前記パワー限度は、プログラマブルに制御されるメカニズムを介して設定可能である、請求項１の装置。
【請求項３】
前記装置は、
マイクロプロセッサ命令によりアクティブ化されるようにリクエストされた前記リソースのうちの１つ以上を含む第１セレクションと、
前記第１セレクションに含まれる前記リソース以外の前記リソースのうちの１つ以上を含む第２セレクションとを更に含み、
前記リソース・アクティブ化制御ユニットは、前記リソース・アクティブ化制御ユニットが前記第２セレクションの前記リソースのうちの少なくとも１つをゲーティングした後に前記第１セレクションをアクティブ化する、請求項１の装置。
【請求項４】
前記リソース・アクティブ化制御ユニットは、パワー・ゲーティング技術、クロック・ゲーティング技術、データ・ゲーティング技術、複合パワー及びクロック・ゲーティング技術、複合パワー及びデータ・ゲーティング技術、又はクロック及びデータ・ゲーティング技術の組み合わせを用いて前記第２セレクションの中の前記リソースをゲーティングする、請求項３の装置。
【請求項５】
前記リソース・アクティブ化制御ユニットは、前記リソースの１つ以上のアクティブ化されたセレクションの中の全てのリソースにより散逸される総パワーが前記パワー限度を超えないように前記リソースを制御する、請求項３の装置。
【請求項６】
前記リソース・アクティブ化制御ユニットは、マイクロプロセッサ命令の発行を、前記命令によりリクエストされた前記第１セレクションの中の前記リソースが完全にアクティブ化されるまで、ストールさせる、請求項３の装置。
【請求項７】
前記リソース・アクティブ化制御ユニットは、前記第２セレクションの中の前記リソースがアクティブ解除プロセスを終了するまで前記第１セレクションの中のリソースのアクティブ化を遅らせる、請求項６の装置。
【請求項８】
前記リソース・アクティブ化制御ユニットは、前記第１セレクションのエレメントにより索引付けされたリソース・テーブルから前記第２セレクションについての１つ以上の項目を読み出すことによって前記第２セレクションを形成する前記リソースをアクティブ解除されるように決定する、請求項３の装置。
【請求項９】
前記リソース・テーブルはハードウェア、ソフトウェア、又はハードウェア及びソフトウェアの組み合わせで実装される、請求項８の装置。
【請求項１０】
前記リソース・テーブルはソフトウェア・コマンド、ハードウェア装置、又はソフトウェア及びハードウェアの組み合わせを介して更新可能である、請求項８の装置。
【請求項１１】
前記テーブルはソフトウェアにより維持されるリソース使用ヒントまたはハードウェアにより維持されるリソース使用カウンタを記憶し、それらはアクティブ解除されるリソースの選択に使用される、請求項１０の装置。
【請求項１２】
前記マイクロプロセッサにより散逸される前記最大パワーは、ハードウェア維持されるテーブルからマイクロプロセッサ・リソースについてパワー値及び使用ビットを読み出し、対応するリソース使用ビットが乗じられた前記パワー値を合計することによってハードウェアにより決定される、請求項１１の装置。
【請求項１３】
前記リソース制御ユニットは、前記マイクロプロセッサにより散逸される最大パワーが前記パワー限度を超えないように前記第２セレクションを選択する、請求項３の装置。
【請求項１４】
前記リソース制御ユニットは、前記第２セレクションの中の前記リソースの全てをアクティブ解除するために前記第２セレクションを選択する、請求項１３の装置。
【請求項１５】
前記リソース制御ユニットは、前記最大パワーを前記パワー限度より低く保つのに必要な最少数のリソースが前記第２セレクションにおいて選択されるように前記第２セレクションを選択する、請求項１３の装置。
【請求項１６】
前記第２セレクションのアクティブ解除は、アクティブ解除のための条件が検出されることに応答して、前記マイクロプロセッサの前記最大パワーに関わらず、直ちに実行される、請求項３の装置。
【請求項１７】
前記第１セレクションの中のリソースのアクティブ化は、使用要求に基づいて最後の可能なときに遅延して実行される、請求項３の装置。
【請求項１８】
前記第１セレクションの中のパワー・ゲーティングされているリソースの使用を必要とする条件は、ゲーティングされている前記リソースのうちの１つのアクティブ化の前に、使用されていない前記第２セレクションの中の前記リソースのうちの１つ以上をオフにゲーティングされるように選択するフェーズ変更ループをトリガーする、請求項３の装置。
【請求項１９】
前記第１セレクションの中の前記リソースのうちの１つのアクティブ化の前に現在アクティブなリソースのアクティブ解除を必要とする条件は、前記第２セレクションの中の前記リソースのうちの１つをアクティブ解除するプロセスを開始する不規則挙動ループを作動させる、請求項３の装置。
【請求項２０】
前記リソース制御ユニットは、アクティブ解除されている前記リソースのうちの１つへのアクセスをリクエストする投機的命令を、前記投機的命令が非投機的となるか又は命令無効化メカニズムを通して無効化されるまで、ストールさせる、請求項１の装置。
【請求項２１】
前記リソース制御ユニットは、前記マイクロプロセッサにより実行されているプログラムの不規則挙動を判定し、前記判定後直ちに前記プログラムの実行優先順位を下げるか又はスレッド実行スケジュールを変更するトラップ信号を生成する、請求項１の装置。
【請求項２２】
マイクロプロセッサにおけるパワー・パラメータを制御する方法であって、前記方法は、
前記マイクロプロセッサの２つ以上のリソースのアクティブ化を制御するステップと、
アクティブ化されている前記リソースにより消費されるパワーと散逸されるパワーとの総パワーを、前記マイクロプロセッサの最大パワーより低い所定値に設定可能であるパワー限度より低く保つステップと、
を含む、前記方法。
【請求項２３】
マイクロプロセッサ命令によりアクティブ化されるようにリクエストされている前記リソースのうちの１つ以上を含む第１セレクションをアクティブ化するステップと、
前記第１セレクションに含まれる前記リソース以外の前記リソースの中の１つ以上を含む第２セレクションをゲーティングするステップと、
を更に含む、請求項２２の方法。
【請求項２４】
前記ゲーティングするステップは、前記第１セレクションの中の前記リソースをアクティブ化する前に前記第２セレクションの中の前記リソースのパワー・ゲーティング、クロック・ゲーティング、データ・ゲーティング、複合パワー及びクロック・ゲーティング、複合パワー及びデータ・ゲーティング、又は複合クロック及びデータ・ゲーティングを実行することを含み、前記第１セレクションの中のアクティブ化されるべき前記リソースはマイクロプロセッサ命令によりリクエストされる、請求項２３の方法。
【請求項２５】
前記パワー・ゲーティングのステップは、
前記第２セレクションの中の前記リソースが何時でもアクティブ解除され得るようになるまでマイクロプロセッサ命令の発行をストールさせるステップと、
前記マイクロプロセッサ命令によりリクエストされた前記第１セレクションの中の前記リソースをアクティブ化する前に前記第２セレクションの中の前記リソースをアクティブ解除するステップと、
を含む、請求項２３の方法。
【請求項２６】
前記ゲーティングのステップは、命令サイクルにおいて前記マイクロプロセッサにより散逸されるパワーが前記パワー限度を超えないように、前記第２セレクションの中のアクティブ解除されるべきリソースを選択することを含む、請求項２３の方法。
【請求項２７】
前記ゲーティングのステップは、前記リソースのうちのゲーティングされている少なくとも１つをアクティブ化する前に前記第２セレクションから使用されていない前記リソースのうちの１つ以上をオフにゲーティングされるように選択するフェーズ変更ループを、前記第１セレクションの中のパワー・ゲーティングされているリソースの使用を必要とする条件が発生したときに、作動させるステップを含む、請求項２３の方法。
【請求項２８】
前記ゲーティングのステップは、前記第２セレクションの前記リソースのうちの１つをアクティブ解除するプロセスを開始する不規則挙動ループを、前記第１セレクションの中の前記リソースのうちの少なくとも１つのアクティブ化の前に現在アクティブのリソースのアクティブ解除を必要とする条件が発生したときに、作動させるステップを含む、請求項２３の方法。
【請求項２９】
前記ゲーティングのステップは、ストールするようにアクティブ解除されている前記リソースのうちの１つへのアクセスをリクエストする投機的命令を、前記投機的命令が非投機的になるか又は命令無効化メカニズムを通して無効にされるまで、ストールさせるステップを含む、請求項２３の方法。
【請求項３０】
前記第１セレクションのエレメントにより索引付けされたリソース・テーブルから前記第２セレクションについての１つ以上の項目を読み出すことによって前記第２セレクションを形成する前記リソースをアクティブ解除されるように決定するステップを更に含む、請求項２３の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にマイクロプロセッサに関し、特にマイクロプロセッサにおけるパワー散逸及び消費に関する。
【背景技術】
【０００２】
マイクロプロセッサは、割合に小さなチップ・スペースにますます増える電子部品を詰め込んで作られている。パワー消費及び散逸（ｄｉｓｓｉｐａｔｉｏｎ）の問題は、マイクロプロセッサ内の電子コンポーネントの量が増えるに連れて目立つようになる。パワー散逸（ｐｏｗｅｒ  ｄｉｓｓｉｐａｔｉｏｎ）及び消費は、マイクロプロセッサのための設計選択肢と動作条件とに影響を及ぼす。従って、マイクロプロセッサにおけるパワー散逸及び消費を最少にする必要がある。以下においては、特に述べられない限りは、“パワー”という用語は、パワー・パラメータの“散逸”及び“消費”の両方の側面を包摂するために使われる。
【０００３】
平均パワーと最大パワー散逸とは異なる。平均パワーは、通例ユーザにより実行されるアプリケーション或いはプログラムの集合の上で平均されたパワーを指す。平均パワーを節約すれば、配線アプリケーションにおいてエネルギー・コストが減少し、携帯アプリケーションでは電池の寿命が長くなる。最大パワーは、マイクロプロセッサにおいて最大数のリソースを利用するコードのセグメントで散逸されるパワーである。最大パワーは、パッケージのパワー散逸能力と、配電システムの電流配達能力とに要求条件を課する。従って、最大パワーはマイクロプロセッサのコストに大きな影響を及ぼす。
【特許文献１】米国特許第６，０４７，２４８号明細書
【特許文献２】米国特許第５，１８９，３１４号明細書
【特許文献３】米国特許第５，５０４，９０８号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００４】
マイクロプロセッサのコンポーネント又はリソースにおけるパワーを減少させるための技術が幾つかある。クロック・ゲーティングは、その様な技術の１つである。クロック・ゲーティングは、動的な或いはスイッチングするコンポーネントのパワーを節約し得るに過ぎない。別の節電技術はデータ・ゲーティングと呼ばれる。データ・ゲーティングは、マイクロプロセッサ・コンポーネントの入力に遷移障壁を挿入することを含む。これらの遷移障壁は、通例、ＡＮＤ又はＯＲ論理ゲートとして実現される。マイクロプロセッサ・コンポーネントが使用されないサイクルでは、遷移障壁はコンポーネントの入力がスイッチングすることを防止し、それは、データ・ゲーティングされるコンポーネント内での動的パワー又はスイッチング・パワーを節約するという結果をもたらす。クロック・ゲーティングと同様に、データ・ゲーティングは、動的パワー或いはスイッチング・パワーを節約し得るに過ぎず、リークを節約することはできない。
【０００５】
パワー・ゲーティング（Ｖｄｄゲーティングとも呼ばれる）は、動的パワー成分とリーク・パワー成分との両方を減少させる別の１つの公知節電技術である。クロック・ゲーティングとは異なって、ＶｄｄゲーティングはＶｄｄゲーティングされるリソースをアクティブ化するために複数のクロック・サイクルを必要とし、それは複雑な制御メカニズムを必要とする。Ｖｄｄゲーティングされるリソースは、そのリソースのアクティブ化及びアクティブ解除のプロセスに関連するエネルギー・オーバーヘッドを償却するために最少数のサイクル（通例、数十サイクル）にわたってゲーティングされていなければならない。
【０００６】
マイクロ・プロセッサーのゲーティングを制御することへの１つのアプローチはリアクティブ・ゲーティング（Ｒｅａｃｔｉｖｅ  Ｇａｔｉｎｇ  （ＲＧ））技術を含む。これらのＲＧ技術は、チップの最高温度、又はマイクロプロセッサ・コア又はチップに引かれる最大電流、或いはその両方を制御するために使用される。ＲＧ技術は、温度センサ又は電流センサのセットを使用し、それらのセンサは、それらのセンサのうちの１つにより感知された温度（又は電流消費量）がスレショルドを超えたならばマイクロプロセッサ・リソースをゲーティングするための信号を生成する。そのスレショルドは、パッケージのパワー散逸能力の限度より下に或いは配電システムの電流配達能力より下にセットされる。
【０００７】
ＲＧ技術は、スレショルドに基づく制御のためにパワー又は電流配達システムについての要求条件を緩めることを可能にせず、スレショルドは、リアクティブ・メカニズムが適時にトリガーしてチップ故障を防止するように割合に悲観的な或いは控えめなレベルにセットされなければならない。リアクティブ・メカニズムがプログラム実行中にトリガーし得るので、ＲＧ技術はプロセッサ・コアの性能を予測することを困難にする。更に、節電ＲＧ技術のためのトリガー・メカニズムは、温度のような動作環境要素に依存することがある。このトリガー・メカニズムは、マイクロプロセッサの性能を動作環境要素に依存させる。
【０００８】
次にＲＧ技術の幾つかの例が論じられる。特許文献１：米国特許第６，０４７，２４８号とジョージオ等（Ｇｅｏｒｇｉｏｕ，ｅｔ  ａｌ．）の特許文献２：米国特許第５，１８９，３１４号とは、温度センサから受け取られた情報に基づいてプロセッサの性能を変化させる技術を提案している。これらのＲＧ技術は、性能測定基準のセットのオン・チップ監視からのフィードバックでアクティブ化されるリアクティブ・スロットリング技術を使用する。
【０００９】
ゲーティングを制御することへの別のアプローチは純粋予測ゲーティング技術を含むが、その技術は、平均のマイクロプロセッサ・コア又はチップのパワーを減少させるけれども最大パワー使用量以下への減少を保証せず、また全てのマイクロプロセッサ・リソースが完全に利用されているときには最大パワーに関して如何なる上限も提供しない。純粋予測ゲーティング技術の例として、イケダの特許文献３：米国特許第５，５０４，９０８号は、プロセッサがアイドル・ループ中にあることを判定するためにアドレス・アクセス情報を使用することを開示している。ゲーティングを制御するためのこれらの技術は、マイクロプロセッサのコストに影響を及ぼすパッケージのパワー散逸能力或いは配電システムの電流配達能力に関する要求条件の緩和を可能にするものではない。従って、マイクロプロセッサにおけるパワーの散逸を制御し最大パワーを最少にする技術に対するニーズがある。
【課題を解決するための手段】
【００１０】
本発明の代表的実施態様は、一般に、マイクロプロセッサにおけるパワー散逸及び消費を制御するためのシステム及び方法を含む。より具体的には、本発明の１つの代表的実施態様においては、マイクロプロセッサにおいてパワー・パラメータを制御するためのシステムは、マイクロプロセッサ及び２つ以上のリソースの最大パワーを制御するためのリソース・アクティブ化制御ユニットを含む。このリソース・アクティブ化制御ユニットは、マイクロプロセッサの消費され散逸されるパワーが最大パワーより低い所定値に設定可能であるパワー限度を超えないように、それらのリソースのアクティブ化を制御する。
【００１１】
本発明の他の代表的実施態様においては、マイクロプロセッサにおいてパワー・パラメータを制御する方法は、マイクロプロセッサの２つ以上のリソースのアクティブ化を制御することと、アクティブ化されたそれらのリソースにより消費され散逸される総パワーを、マイクロプロセッサの最大パワーより下の所定値に設定可能であるパワー限度より下であるように保つこととを含む。
【００１２】
本発明のこれらの及び他の実施態様、側面、特徴及び利点は、添付図面と関連して読まれるべき代表的実施態様についての以下の詳細な記述から記述され或いは明らかとなろう。
【発明を実施するための最良の形態】
【００１３】
図１は、本発明の代表的実施態様における相互排除リソースアクティブ化（Ｍｕｔｕａｌｌｙ  Ｅｘｃｌｕｓｉｖｅ  Ｒｅｓｏｕｒｃｅ  Ａｃｔｉｖａｔｉｏｎ（ＭＥＲＡ））制御ユニット及び他のプロセッサ・コア・リソースを示す。プロセッサ・コア１０が示されている。ＭＥＲＡ制御ユニット１２は、プロセッサ・コア１０のリソースを相互排除的に制御する。フェッチ・アドレス予測リソース１４は、ＭＥＲＡ制御ユニット１２に接続されており、例えばブランチ予測器、リンク・スタックなどのアドレス取り出しリソースを含む。ブランチ予測器（図示されていない）は、ブランチ・ヒストリー・アレイの複数のバンクを含むことができ、それらはオプションで独立してパワー・オン及びパワー・オフされ得る。
【００１４】
命令キャッシュ・リソース１６は、命令キャッシュの複数のバンクを含み、個々の命令キャッシュ・メモリ・バンクのゲーティング及びアクティブ化を可能にするオプションで実現される機能を有する。キャッシュのアソシアティブ・セットのうちの１つ以上は、命令キャッシュ・バンクのためのゲーティング制御をキャッシュのアソシアティブ・セットの粒状度レベル（ｇｒａｎｕｌａｒｉｔｙ  ｌｅｖｅｌ）で実行することによって独立に制御され得る。
【００１５】
フロント・エンド１８は、命令パイプラインのためのフロント・エンドである。フロント・エンド１８は、命令フェッチ・メカニズムを含んでおり、また、命令フェッチ・エンジン（図示されていない）を命令デコード及び発行パイプライン（図示されていない）から切り離すデカップリング・バッファをオプションで含むことができる。フロント・エンド１８は、ＭＥＲＡ制御ユニット１２及びデコード論理回路２０に結合されている。デコード論理回路２０は、フロント・エンド１８、ＭＥＲＡ制御ユニット１２、及び発行及びストール論理回路２２に結合されている。デコード論理回路２０は、プロセッサ命令をデコードし、パイプライン・ストールを生成することができる。発行及びストール論理回路２２は実行リソース（図示されていない）に実行させるべく命令を送る。発行論理回路２２は、オペランドが利用可能でない命令を保持するバッファを実現することができる。発行論理回路２２は、ＭＥＲＡ制御ユニット１２、リソース２６１−２６３、及びマイクロコード・エンジン２４に結合されている。
【００１６】
マイクロコード・エンジン２４は命令の指定されたセットをマイクロコードとして実行する。マイクロコード・エンジン２４は、ＭＥＲＡ制御ユニット１２及び発行論理回路２２に結合されている。マイクロコードで実現される命令のうちの１つがパイプラインに入れば、マイクロコード・エンジン２４は、メイン・デコード発行パイプラインからの命令の発行を停止させ、その後にマイクロコード・エンジン２４から一連のマイクロコード命令を実行させるべく発行する。
【００１７】
プロセッサ・リソース２６１−２６３は、発行論理回路２２に結合されていて、例えば固定小数点計算、浮動小数点計算と；ロード及びストアのためのアドレス計算と；ブランチ実行と；ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ，  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ（単一命令、複数データ））及びメディア・エンジンなどの機能ユニットを含む。プロセッサ・リソース２６１−２６３のうちの１つ以上は、プロセッサの設計された状態を維持することができる。３つのリソース２６１−２６３だけが例として示されているが、任意の数のリソースを使用し得ること、及びそのうちの各々が単独で或いは部分集合として独立にアクティブ解除され得ることを当業者は認めるであろう。
【００１８】
プロセッサ・リソース（例えば、ここで示されている２６１−２６３）によるパワー消費は、マイクロプロセッサにより消費され散逸される総パワーを相当の程度まで決定する。従って、プロセッサ・リソース（例えば、リソース２６１−２６３）により消費されるパワーを減少させ制御することによってマイクロプロセッサの総パワーの制御を成し遂げることができる。
【００１９】
データ・プリフェッチ・リソース２８は、データ・キャッシュ・ミスの数を減らすためにデータをデータ・キャッシュ３０の中にプリフェッチする。データ・キャッシュ３０は、データ・キャッシュ・バンクのアクティブ解除又はアクティブ化を制御するオプションのメカニズムを有するデータ・キャッシュの複数のバンクを含むためにデータ・キャッシュ・リソース３２１-３２２を含む。データ・キャッシュ・バンクのためのゲーティング・メカニズムは、データ・キャッシュ（図示されていない）においてアソシアティブ・セットの粒状度レベルで実行され得る。ゲーティング・メカニズムは、データ・キャッシュ３０のアソシアティブ・セットのうちの１つ以上を独立にアクティブ解除することができる。データ・キャッシュ・リソース３２１-３２２は２つの代表的バンクとして示されているが、任意の個数のデータ・キャッシュ・バンクが使用され得る。
【００２０】
割込み制御論理回路３４とリソース・アクティブ化制御レジスタ３６とがＭＥＲＡ制御ユニット１２に結合されている。リソース制御アクティブ化バス３８は、フェッチ・アドレス予測ユニット１４、命令キャッシュ・リソース１６、プロセッサ・リソース２６１-２６３、データ・プリフェッチ・リソース２８、及びデータ・キャッシュ３０のようなプロセッサ・コア１０上の他のリソースにＭＥＲＡ制御ユニット１２を結合させる。ＭＥＲＡ制御ユニット１２は、フロント・エンド１８、デコード論理回路２０、発行論理回路２２及びマイクロコード・エンジン２４に結合されている。
【００２１】
フェッチ・アドレス予測ユニット１４、命令キャッシュ・リソース１６、リソース２６１-２６３、データ・プリフェッチ・リソース２８及びデータ・キャッシュ３０のようなリソースのうちのセレクションすなわち選択されたもの或いは全部は、それらがアクティブ・モードとゲーティングされるモードとの間でのリソースの遷移を制御する制御信号を受け入れることを可能にする特別の入力ポート４０１-４０８を実現する。入力ポート４０１-４０８は、プロセッサ・リソースへの結線として図示されている。入力ポート４０１-４０８は、制御アクティブ化バス３８を通して、対応するリソースをＭＥＲＡ制御ユニット１２に接続する。
【００２２】
ＭＥＲＡ制御ユニット１２は、適切な制御信号をリソース制御アクティブ化バス３８を介して送出することによって複数のマイクロプロセッサ・リソースを制御する。バス３８は、リソースのアクティブ化を直接制御する専用ポイント・ツー・ポイント信号のセットとして、或いは通信プロトコルを実行する共用バスとして、実現され得る。その通信プロトコルは、例えば、アクティブ化される１つ以上のリソースのＩＤ（アイデンティフィケーション）及びアクティブ解除されるリソースのＩＤをアクティブ化制御バス３８の１つの又は複数のサイクルでアサートする機能などの種々の機能を含むことができる。
【００２３】
ＭＥＲＡ制御ユニット１２は、フロント・エンド・バス４２及びデコード論理回路バス４４を用いてコア１０のデコード論理回路２０又はフロント・エンド１８に、或いはデコード論路２０及びフロント・エンド１８の両方に結合される。ＭＥＲＡ制御ユニット１２は、バス４２及び４４を介するこれらの接続を用いてプロセッサ・パイプラインの対応する部分における活動を監視し、また、この情報を用いて、アクティブ化制御バス３８に接続されている全てのプロセッサ・リソースにおけるゲーティングされるモードとアクティブ・モードとの間での遷移を制御する。
【００２４】
ＭＥＲＡ制御ユニット１２に加えて、リソース・アクティブ化制御レジスタ３６はオプションでプロセッサ・リソースのアクティブ・モードとゲーティングされるモードとの間での遷移を制御することができる。制御レジスタ・バス４６は制御レジスタ３６をＭＥＲＡ制御ユニット１２に結合させる。
【００２５】
制御レジスタ３６は、システム/ソフトウェア（例えば、オペレーティング・システム、基本入出力システムすなわちＢＩＯＳ、など）によりリード及びライトのような特権命令を通して制御される。プロセッサ・アーキテクチャは、命令のセットを通してリソース・アクティブ化レジスタ３６における適切なビットのセッティングを可能にすることができる。ＩＳＡ（Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ（命令セット・アーキテクチャ））は、リソース・アクティブ化レジスタ３６における適切なビットのセッティングを可能にするためのレジスタ転送又はメモリ転送；リソース・アクティブ化レジスタ３６とプロセッサの他のコンポーネントとの間での転送；及びオプションでレジスタ３６とメモリとの間での転送のための命令を提供することができる。適切なビットのセッティングを可能にするように命令のセットが設計され得、或いはその様な能力を提供するように現存する命令セットが改変され得る。
【００２６】
ＭＥＲＡ制御ユニット１２は、発行論理回路接続４８により発行及びストール論理回路２２に結合されている。プロセッサのためのパワー・パラメータを制御するために、ＭＥＲＡ制御ユニット１２は、実行リソースへの命令の発行についてストールを強要することができる。ＭＥＲＡ制御ユニット１２により強要されるストールは、パイプラインの発行ステージにおける全ての命令に、或いはＭＥＲＡ制御ユニット１２により指定された１つ以上の特定の命令に影響を及ぼすことができる。発行及びストール論理回路２２は、ＭＥＲＡ制御ユニット１２によりアサートされたストール・リクエストに完全に応答するように設計或いは改変され得る。
【００２７】
ＭＥＲＡ制御ユニット１２は、プログラム実行のための割込みをリクエストし割り込みサービス・ルーチンにトラップするために割込み接続５０で割込み制御論理回路３４にも接続され得る。割込み制御論理回路３４は、ＭＥＲＡ制御ユニット１２によりアサートされた割込み又はトラップ・リクエストに完全に応答するように設計或いは改変され得る。
【００２８】
ＭＥＲＡ制御ユニット１２は、マイクロコード命令をパイプラインの中に発行するようにマイクロコード・エンジン２４をアクティブ化するためにオプションでマイクロコード・バス５２でマイクロコード・エンジン２４にも接続され得る。割込みマイクロコード・エンジン２４は、ＭＥＲＡ制御ユニット１２によりアサートされたマイクロコード発行リクエストに完全に応答するように設計或いは改変され得る。
【００２９】
ＭＥＲＡ制御ユニット１２は、コア・コンポーネント間の接続を用いて、マイクロプロセッサ・コア・リソースのアクティブ・モード及びゲーティングされるモードの間の遷移を制御し、パイプライン・ストールをリクエストし、マイクロコード・エンジンからの命令の発行をリクエストし、また割り込みをリクエストする制御信号を生成する。ＭＥＲＡ制御ユニット１２は、マイクロプロセッサ・コアの総パワーが境界パワー限度と称される所定の“Ｐ＿バウンド（Ｐ＿ｂｏｕｎｄ）”を超えないことを保証するためにこれらの制御信号を使用する。
【００３０】
平均パワーと最大パワー散逸とは異なる。平均パワーは、通例顧客により走らされるアプリケーション或いはプログラムの集合の上で平均されたパワーを指す。平均パワーを節約すれば、配線アプリケーションにおいてエネルギー・コストが減少し、携帯アプリケーションでは電池の寿命が長くなる。
【００３１】
Ｐ＿マックス（Ｐ＿ｍａｘ）と呼ばれる最大パワーは、マイクロプロセッサにおいて最大数のリソースを利用するコードのセグメントで散逸されるパワーである。その様なコード・セグメントは、科学技術計算のような計算集約的アプリケーションの重要な部分であり得、その場合には、それらのコード・セグメントに関してプロセッサが最高性能を発揮し得ることが重要である。最大パワーは、パッケージのパワー散逸能力と、配電システムの電流配達能力とに要求条件を課する。従って、最大パワーはマイクロプロセッサのコストに対して大きな影響を及ぼす。
【００３２】
Ｐ＿ｂｏｕｎｄの値は、プロセッサ・コアの全リソースにより散逸されるパワーの合計と同じくらいの大きさであり得る最大パワーＰ＿ｍａｘより小さい。本発明を実施するマイクロプロセッサにおいては、チップのパワー配達システムは、最大パワーＰ＿ｍａｘではなくて境界パワーＰ＿ｂｏｕｎｄを配達するように設計され得る。同様に、本発明の少なくとも１つの実施態様においては、マイクロプロセッサ・チップ・パッケージは、最大パワーＰ＿ｍａｘではなくて境界パワーＰ＿ｂｏｕｎｄを散逸するように設計され得る。
【００３３】
ＭＥＲＡ制御ユニット１２は、データ・ゲーティング、パワー・ゲーティング及びクロック・ゲーティングの形のゲーティングを実行することができる。クロック・ゲーティングは、ラッチの出力により駆動されるコンポーネントがその特定のクロック・サイクルにおいて使用されないために、或いはラッチの入力に有効なデータが存在しないか又は前のクロック・サイクルのうちの１つにおいてラッチに保存された旧データが保持される必要があるためにそのラッチが新しいデータを受け入れて保存することを要求されないときにその特定のラッチに到来するクロック信号のスイッチングを止める技術である。クロック・ゲーティングは、動的な又はスイッチングするコンポーネントについてパワーを節約できるに過ぎない。クロック・ゲーティングは、１つのラッチ、ラッチのグループの粒状度で、或いはプリフェッチ・ユニット又は浮動小数点ユニットなどのマイクロプロセッサ・リソースの粒状度で、実行され得る。
【００３４】
パワー・ゲーティング（Ｖｄｄゲーティングとも称される）は１つの別の公知節電技術である。この技術は、配電ネットワークとマイクロプロセッサ・コンポーネントのパワー入力との間にヘッダ装置を挿入することにある。或いは、グランド配電ネットワークとマイクロプロセッサ・コンポーネントのグランド入力との間にフッタ装置が挿入され得る。オプションで、フッタ装置及びヘッダ装置の両方が実現され得る。ヘッダ装置は通例ＰＦＥＴとして実現され、フッタ装置は通例ＮＦＥＴとして実現される。このヘッダ装置又はフッタ装置（又は両方）をオフにすることによりコンポーネントは電源又はグランド又は両方から切り離され、その結果としてスイッチング・パワー及びリーク・パワーの両方が減少する。
【００３５】
上に記載された節電技術（例えば、パワー、データ及びクロック・ゲーティング）は、本書においては包括的に“ゲーティング”と称される。従ってゲーティングは上記の３つの節電技術のいずれか、又はこれらの任意の組み合わせを指す。“アクティブ”という用語は、コンポーネントがゲーティングされていないときのモードを指す。ＭＥＲＡ制御ユニット１２はマイクロプロセッサ・コンポーネント又はリソースのゲーティングをアクティブ化するために使用される、すなわち、ＭＥＲＡ制御ユニット１２はマイクロプロセッサ・コンポーネントをアクティブ・モードとゲーティングされるモードとの間でスイッチングする。リソースのゲーティングされるモードへのスイッチングはそのリソースのアクティブ解除と称され、リソースのゲーティングされるモードからアクティブ又は通常の動作モードへのスイッチングはそのリソースのアクティブ化と称される。
【００３６】
図２は、本発明の代表的実施態様におけるマイクロプロセッサ・コンポーネントとＭＥＲＡ制御ユニットの間の代表的インターフェースを示す。この代表的インターフェースでは節電ゲーティング技術としてパワー・ゲーティングが使用される。リソース５４は、プロセッサ・コアに置かれていて、ゲーティング可能なコンポーネント５６とゲーティング不可能なコンポーネント５８とを含む。ゲーティング不可能なコンポーネント５８は、リソース５４の状態を維持しなければならない幾つかのレジスタ又はメモリ・アレイを含むことができる。例えば、リソース５４が浮動小数点ユニットであるならば、浮動小数点レジスタ・ファイルはゲーティング不可能コンポーネント５８として実現され得、加算器、乗算器、バイパスなどの全ての機能ユニットはゲーティング可能コンポーネント５６として実現され得る。ゲーティング不可能コンポーネント５８内の全ての回路はグランド６０及び電源６２に直接接続される。ゲーティング可能コンポーネント５８内の全ての回路は仮想グランド６４及び仮想電源６６に接続される。
【００３７】
仮想電源６６はヘッダ装置６８により電源６２から切り離され、仮想グランド６４はフッタ装置７０を通してグランド６０から切り離される。ヘッダ装置６８及びフッタ装置７０は制御信号７２を通して制御され、それは、リソース５４がゲーティングされるモードに入るように命令されるときにアサートされる。フッタ装置７０又はヘッダ装置６８は無くても良い。ヘッダ装置６８が無い場合、仮想電源６６はパワー分配ネットワーク６２に直接接続される。フッタ装置７０が無い場合、仮想グランド６４はグランド分配ネットワーク６０に直接接続される。
【００３８】
リソース５４は、入力ポート４０９（他の同様のポートについては図１の４０１-４０３を参照）を通してリソース制御アクティブ化バス３８に接続される。フッタ装置７０及びヘッダ装置６８を制御する制御信号７２は、入力ポート４０９に直接接続され得る。少なくとも１つの実施態様において、入力制御信号はレジスタ７４にラッチされ、リバッファリング（ｒｅｂｕｆｆｅｒｉｎｇ）ブロック７６の追加リバッファリングを通過する。リバッファリング・ブロック７６内には、パイプライン・ラッチによって分離された複数のパイプライン・ステージが存在し得る。
【００３９】
少なくとも１つ実施態様では、リソース・アクティブ化バス３８（図１を参照）におけるプロトコルのインプリメンテーションにより、バス・インターフェース論理回路７８が含まれ得る。バス・インターフェース論理回路７８は、リソース・アクティブ化制御バス３８でアサートされたリソースＩＤをこのリソース５４に割り当てられたＩＤと比較することによって、リソース５４に向けられた制御信号を認識することができる。少なくとも１つの実施態様では、バス・インターフェース論理回路７８はバス・プロトコルをサポートすることができる。当業者は、いろいろなプロトコルが使用され得ることを認めるであろう。
【００４０】
図３は、本発明の代表的実施態様におけるマイクロプロセッサ・リソースのアクティブ解除及びアクティブ化の制御を示す流れ図である。この流れ図では、オン・デマンド（又はレージー）リソース・アクティブ化ポリシーとオン・デマンド（又はレージー）アクティブ解除ポリシーとが適用される。各サイクルの間、ステップ８０で示されているように、ＭＥＲＡ制御ユニット１２は命令パイプラインのフロント・エンド１８及び（オプションで）デコード論理回路２０（図１を参照）における活動を監視している。この監視は、命令バッファ（図示されていない）に格納されている命令から、又はデコーディング・ステージ２０を通過する命令からリソース使用情報を集めることを含む。
【００４１】
どのサイクルにおいても、命令バッファから発行されるべく指定されたか或いはデコード論理回路２０（図１を参照）を通る各々の命令又は命令のグループについて、その命令のうちのいずれかが利用し得ないリソース（すなわちそのリソースは現在オフにゲーティングされている）へのアクセスを必要とするか否かがステップ８２で調べられる。ゲーティングされているリソースを必要とする命令が無ければ、その命令又は命令のグループはステップ８４でデコーディング及び発行のプロセスを続けることを許される。もしリクエストされたリソースのうちの１つがオフにゲーティングされていると（すなわち利用できないと）マークされているならば、ＭＥＲＡ制御ユニット１２は、オフにゲーティングされることについてリソースが資格を有するか（ステップ８６へ移行）否かをチェックする。ステップ８４において、現在の発行及びデコード・サイクルの命令のいずれも、ゲーティングされている（従って利用できない）リソースを必要としていないので、その命令又は命令のグループは通常通りにデコーディング及び発行プロセスを続けることを許される。
【００４２】
ステップ８４は、“通常の”実行ループを、すなわちステップ８０,８２,８４及び８０に沿っての移行を完成させる。このループは、規則的な挙動を示すプログラムについては実行サイクルのほとんどにおいて循環されると期待される。プログラムがこの通常ループを通って循環するときにはＭＥＲＡ制御ユニット１２（図１を参照）を通して実行されるＭＥＲＡ制御メカニズムに関連する動作は行われず、性能上の不利益は招かれない。
【００４３】
ステップ８０,８２,８６,８８,９２,９６,８４及び８０の第２ループは“プログラム・フェーズ変更ループ”と称される。ステップ８２で、いずれかの命令がゲーティングされるリソースを必要とするならば、コントロールはステップ８６へ移る。ステップ８６で、ＭＥＲＡ制御ユニット１２は、パワー限度Ｐ＿ｂｏｕｎｄを超えずにリクエストされたリソースのアクティブ化を許すために充分な数のリソースがオフにゲーティングされる資格を有するか否か調べる。ステップ８６での計算のために、ハードウェア（このようなハードウェアの例が、後述される図９に示されている）は、オフにゲーティングされる資格を有するとマークされていないリソース（すなわち、アクティブであり続けるもの）と、アクティブ化されるようにリクエストされているものとのパワー・ウェイトの合計を計算する。もしその合計が所定パワー限度Ｐ＿ｂｏｕｎｄに等しいか又はそれより小さいならば、コントロールはステップ８８へ進み、そうでなければゲーティングされるリソースの指定がステップ９０で行われる。
【００４４】
ステップ８８において、ステップ８６でオフにゲーティングされる資格を有するとマークされたリソースのリストから、オフにゲーティングされるリソースのセットが選択される。プロセッサのパワーを限度Ｐ＿ｂｏｕｎｄより低く保つために必要とされるよりも多くのリソースがオフにゲーティングされる資格を有するとマークされていたならば、ゲーティングされるリソースは、ＬＲＵアルゴリズムを用いて又はソフトウェア・ヒントを用いて、或いは他の何らかのアルゴリズム（ランダム手法を含む）を用いて指定され得る。ステップ８８にステップ９２が続き、ここで全ての指定されたリソースがアクティブ解除される。
【００４５】
ステップ９２で、ＭＥＲＡ制御ユニット１２は、リソース・アクティブ化バス３８で適切な信号をアサートすることによって、ゲーティングされるように指定されたリソースにゲーティングされるモードにスイッチングするように命令する。
【００４６】
ステップ９６で、ＭＥＲＡ制御ユニット１２は、リソース・アクティブ化バス３８で適切な制御信号をアサートすることによって、アクティブ化されるようにリクエストされているリソースをアクティブ化する。ステップ９６において、アクティブ化されるように信号されたリソースが、それらに対して何らかの命令が発行される前にアクティブ化手続きを完了し得るように、数個のストール・サイクルがＭＥＲＡ制御ユニット１２によって強要され得る。ステップ９６における付加的なストール・サイクルは、アクティブ化されるリソースにおけるアクティブ化手続きにより引き起こされる一時的なパワー増大を防止するために、或いは電流消費に生じ得るスパイクを減少させるために、必要とされ得る。
【００４７】
ステップ９６は、“プログラム・フェーズ変更ループ”と称されるステップ８０,８２,８６,８８,９２,９６,８４及び８０の第２ループを完成させる。このループは、“行儀の良い”プログラムが新しいリソースのセットを使用する新しいプログラム・フェーズに入るときにそれらのプログラムにより時折とられると期待される。プログラム・フェーズ変更ループは性能上の不利益を招かないか或いは最小限の不利益を招くに過ぎない。性能上の不利益は、もしあるならば、ステップ９６でアクティブ化されるリソースが、これらのリソースをリクエストした命令が発行されることを許される前に、新しい命令をいつでも処理できるようになれるために必要とされ得るストール・サイクルから生じ得る。付加的なストール・サイクルは、アクティブ化されるリソースにおけるアクティブ化手続きにより引き起こされる一時的なパワー増大を防止するために、或いは電流消費におけるスパイクを減少させるために、ステップ９６でＭＥＲＡ制御ユニット１２により強要され得る。
【００４８】
もしステップ８６でＭＥＲＡ制御ユニット１２がゲーティングされる資格のある充分な数のリソースを見出すことができなければ、ＭＥＲＡ制御ユニット１２はステップ９０を開始する。ステップ９０で、ゲーティングされるリソースの選択が行われる。ステップ８８とは違って、ステップ９０では、現在使用されているものを含めて全てのリソースがアクティブ解除についての候補として選択されるべく考慮される。アクティブ解除されるリソースは、アクティブ解除されるように指定されない全てのリソース（すなわちアクティブであり続けているリソース）の総パワーとアクティブ化されるようにリクエストされたリソースのパワーとの合計が所定のパワー限度Ｐ＿ｂｏｕｎｄを超えてはならないように、指定される。ランダム選択を含めて、オフにゲーティングされるリソースを選択するためにどの様な手法も使用され得る。オプションの性能最適化特徴として、アクティブ解除されるリソースの選択は、ＭＥＲＡ制御ユニット１２が将来ステップ９０に移る可能性が最少となるように、行われ得る。
【００４９】
ステップ９４において、アクティブ解除されるように指定されたリソース内のパイプラインは、アクティブ解除シーケンスがＭＥＲＡ制御ユニット１２により開始される前に空になることを許される。パイプラインを空にすることは、指定されたリソースにより処理されている全ての命令（発行ステージでキューイングされているものを含む）がその実行を終えることを可能にする。ステップ９４において、ＭＥＲＡ制御ユニット１２は、オプションで、不規則な挙動を示していると判定されたプログラム・スレッドに対して、ストールのサイクルを強要し、マイクロコード発行を開始し、及びそのスレッドについての実行優先順位をより低いレベルへスイッチングすることによって、ペナルティーを科することができる。ＭＥＲＡ制御ユニット１２は、またオプションで、その不規則な動作を割り込みでシステム・ソフトウェアに報告することもできる。
【００５０】
ステップ９２は、“不規則挙動ループ”と称されるステップ８０,８２,８６,９０,９４,９２,９６,８４及び８０の第３ループを完成させる。この不規則挙動ループは、“行儀の良い”プログラムにより非常に稀にとられるに過ぎないと期待される。不規則挙動ループを通って循環するプロセスは、フェーズ変更ループを通るプロセスより大きな性能ペナルティーをもたらす。
【００５１】
リクエストされたリソースは、アクティブ解除されるべく指定されたリソースがアクティブ解除手続きを完了するまでは、たとえそれが性能ペナルティーを招くかもしれないとしても、アクティブ化されない。これは、コアの最大より下げられたパワーの限度すなわちＰ＿ｂｏｕｎｄが、不規則な挙動を示すプログラムすなわち所与のマイクロプロセッサ・コアについて指定されたリソース使用ガイドラインに従わないプログラムにおいて性能ロスのペナルティーが場合によっては課されるとしても、維持されることを保証する。
【００５２】
図４は、本発明の代表的実施態様におけるマイクロプロセッサ・リソースのアクティブ解除及びアクティブ化の制御を示す流れ図である。通常実行ループは、図３と関連して上で記載されたように機能する。フェーズ変更は、次に記載されるように改変されている。ステップ８６でオフにゲーティングされる資格を有するとマークされているリソースの全てがオフにゲーティングされるべく選択され、これは、資格のあるリソースのセットの中からオフにゲーティングされるリソースが幾つか選択されるだけである図３に示されているステップ８８を持つ必要を無くする。ステップ８６は、資格のあるリソースの全てがアクティブ解除されるステップ９２に直に続く。
【００５３】
資格のあるリソースの全てがオフにゲーティングされる。従って、パワーをＰ＿ｂｏｕｎｄより下に保つために必要な数より多くのリソースがオフにゲーティングされる。これは平均パワーの付加的な減少を可能にし得るけれども、その結果として、ステップ８０でゲーティングされるリソースを必要とする命令に遭遇する公算が大きくなる。従って、フェーズ変更ループを通る頻度が大きくなり得る。不規則挙動ループは上で図３に関して記載されているとおりである。
【００５４】
図５は、テーブルに格納されているリソースの対についてのオン・デマンドのアクティブ化及びアクティブ解除ポリシーを示す流れ図である。ステップ（８０→８２→８４→８０）の通常実行フロー・ループは、図３及び４と関連して上で記載されたとおりである。フェーズ変更ループについては、制御フローはステップ８０からステップ８２への図３のフローに従う。
【００５５】
ステップ１１０において、ＭＥＲＡ制御ユニット１２はアクティブ化されるようにリクエストされたリソース（又はリソースのグループ）があるか調べる。ＭＥＲＡ制御ユニット１２は、アクティブ化されるようにリクエストされたリソースに関して相互排除として指定されているリソース（又はリソースのグループ）が現在使用されているか否か調べる。もし本発明の実施態様においてＭＥＲＡ制御ユニット１２又は相互排除手法を実行する他のプロセッサ・エレメントが、アクティブ化されるようにリクエストされたリソースに関して相互排除として指定されているリソースのいずれもが現在使用されていないと判定したならば、ＭＥＲＡ制御ユニット１２は、コントロールをステップ９２へ移行させ、図３に示されているようにステップ９２→９６→８４→８０のシーケンスをたどる。
【００５６】
もしアクティブ化されるようにリクエストされたリソース（又はリソースのグループ）に対して相互排除として指定されているリソースのうちの少なくとも１つがパイプライン中の１つ以上の命令により使用されているか或いは使用される予定であるならば、プロセスはステップ９４に移行する。次にステップのシーケンス（９４→９２→９６→８４→８０）は、不規則挙動についてのものと同じであって、図３と関連して上で記述されている。ステップ８６における計算のために、ハードウェア（その様なハードウェアの例は、下で記述される図８に示されている）は、全てのリソースについて、それに対して相互排除として指定されているリソースのリストと、それらのリソースが現在使用されているか否かを示すビットとを記憶しているテーブルを調べる。
【００５７】
図６は、本発明の代表的実施態様におけるマイクロプロセッサ・リソースのアクティブ解除及びアクティブ化の制御を示す流れ図である。マイクロプロセッサの最大パワーＰ＿ｍａｘの減少に加えて平均パワーを減少させるためにオン・デマンド（又は“レージー”）リソース・アクティブ化ポリシー及び“イーガー”アクティブ解除ポリシーが実施される。イーガー（又は“欲張り（ｇｒｅｅｄｙ））”及び“レージー”ポリシーは、一般的に、特定のヒューリスティック手続きを修飾するために使用される用語である。イーガー又は欲張りポリシーは、一般的に、イベントを見越して、予測的に或いは先行的に（ｐｒｏａｃｔｉｖｅｌｙ）、一定の決定が最先の利用可能な又は実行可能な機会にアクティブ化されることを意味し、レージー・ポリシーは決定が最も遅い可能なときまで遅らされることを意味する。
【００５８】
ステップの３つのループ、すなわち通常実行ループ、プログラム・フェーズ変更ループ及び不規則挙動ループ、が使用される。リソースをゲーティングするための決定と、指定されたリソースをゲーティングするステップとは、通常実行ループの一部として実行される。通常実行ループの経路は、ステップ８０,８２，１０６，１０４及び８４、又は８０,８２，１０６及び８４を通る。
【００５９】
もしリソースのいずれもがアクティブ化されるようにリクエストされていなければ、ステップ１０６が実行される。ステップ１０６で、ＭＥＲＡ制御ユニット１２は、プロセッサ・リソースのうちのいずれかがアクティブ解除される資格を有するか調べる。リソースがアクティブ解除される資格を有するためには、それはパイプライン中のどの命令にも使用されてはならない。更に、ステップ１０６でリソースをアクティブ解除されるように指定するとき、リソース使用のヒストリ及びオプションのソフトウェア・ヒントが使用される。公知のリソース静止予測装置のうちのどれでも使用され得る。もしステップ１０６で１つ以上のリソースがアクティブ解除される資格を有すると確認されたならば、それらはステップ１０４でアクティブ解除され、ステップ８４のデコード及び発行プロセスで命令が続行されることが許される。別の場合には、制御経路はステップ８４に直接進む。ステップ８４は通常実行ループを完成させる。
【００６０】
もしステップ８２で１つ以上のリソースがアクティブ化されるようにリクエストされたならば、コントロールはステップ１１０に進む。ステップ１１０で、ＭＥＲＡ制御ユニット１２（図１を参照）は、アクティブ化されるようにリクエストされたリソースが所定パワー限度Ｐ＿ｂｏｕｎｄを超えずにアクティブ化され得るか調べる。この条件を調べるためのメカニズムは、図３に示されているステップ８６で使用されるものと同様であって上で記述されている。ハードウェア（その様なハードウェアの例が、後述される図９に示されている）は、アクティブであるリソースと、アクティブ化されるようにリクエストされたものとのパワー・ウェイトの合計を計算する。もしその合計が所定パワー限度Ｐ＿ｂｏｕｎｄに等しいか又はそれより小さいならば、プロセスはステップ９６へ進む。そうでなければゲーティングされるリソースの指定がステップ９０で行われる。
【００６１】
ステップ９６で、ＭＥＲＡ制御ユニット１２は、アクティブ化されるようにリクエストされたリソースをアクティブ化する。ステップ９６はプログラム・フェーズ変更ループを完成させる。もしステップ１１０でＭＥＲＡ制御ユニット１２が充分な数のゲーティングされる資格を有するリソースを見出せなかったならば、ＭＥＲＡ制御ユニットはステップ９０に進み、ここでゲーティングされるリソースの選択が行われる。図３の上記ステップ９４及び９２と同様のステップ９４及び１０８のシーケンスは、不規則挙動ループを完成させる。
【００６２】
図７は、本発明の代表的実施態様におけるイーガー・リソース・アクティブ解除及びオン・デマンド・リソース・アクティブ化ポリシーを用いるリソースの相互排除アクティブ化の制御を示す流れ図である。
【００６３】
通常実行フロー・ループは、ステップ８０→８２→１０６→１０４→８４又はステップ８０→８２→１０６→８４→８０をたどる。フェーズ変更ループについては、制御フローは、図６に関して上で記述されたようにステップ８０からステップ１１２へのシーケンスをたどる。ステップ１１２で、ＭＥＲＡ制御ユニット１２は、アクティブ化されるようにリクエストされたリソース（又はリソースのグループ）について、アクティブ化されるようにリクエストされているリソースに対して相互排除として指定されているリソース（又はリソースのグループ）が既にオフにゲーティングされているか否か調べる。この調べに対する答えが“はい”ならば、コントロールはステップ９６へ進む。ステップ１１２における答えが相互排除としてのリソースの指定に対して“いいえ”ならば、すなわち、アクティブ化されるようにリクエストされたリソース（又はリソースのグループ）に対して相互排除として指定されているリソースのうちの少なくとも１つがアクティブ解除されていなければ、プロセスはステップ９４へ移行する。シーケンスの残り、ステップ９４→１０８→９６→８４、は相互排除リソース（又はリソースのグループ）のセットを指定する仕方と共に、図５に関して上で記述されたものと同様である。
【００６４】
図８は、本発明の代表的実施態様において相互排除リソース（又はリソースのグループ）の必要性を調べてそれを明示するために用いられるテーブル・ベースのハードウェア構造を示す。ＭＥＲＡ制御ユニット１２（図１を参照）のために相互排除リソース（又はリソースのグループ）のセットを明示するために複数の手法が使用され得る。少なくとも１つの実施態様では、リソースの相互排除セットは、ハードウェアで実現される代表的テーブル１１４であって、相互排除リソース識別子テーブルと称される。また、特権（又はシステム）ソフトウェアが相互排除リソース識別子テーブルに対して項目を読み書きすることを可能にする命令のセットがプロセッサＩＳＡ（命令セット・アーキテクチャ）に付け加えられる。テーブル１１４は列１１５-１２６及び行１３０-１４６を含む。
【００６５】
テーブル１１４は、リソース・アクティブ化バス３８（図１を参照）を通してＭＥＲＡ制御ユニット１２により制御される各リソースについて項目（行として示されている）を有する。テーブル１１４は列１１５のリソース識別子で索引付けされており、それは複数のリード・ポートを実現することができる。複数のポートは、このテーブルから２ライン以上を読み出すために必要とされ得る。デコード論理回路２０（図３を参照）への接続は１ラインとして示されているが、帯域幅は１サイクルあたりに１命令からＮ命令までのいずれでもあり得る（例えば、Ｎ＝８）。
【００６６】
パイプラインに入る命令の各グループについて、デコード論理回路２０は命令の各グループを実行するために必要とされるリソースを識別する。また、リクエストされたリソースの識別子がプリ・デコード論理回路により判定され得、命令と共に命令キャッシュに格納され得る。テーブル１１４は、計算された索引（又は索引のセット）（図示されていない）を用いてアクセスされる。
【００６７】
各リソースについて、リソース・テーブル１１４は相互排除リソースの識別子を記憶する（列１１６に示されている）。列１１６は、この行に対応するリソースに関して相互排除として指定されている識別子又はリソースを記憶する。テーブル１１４の列１１６は、システム・ソフトウェアにより維持され得る。プロセッサのＩＳＡ（命令セット・アーキテクチャ）は、テーブルの列１１６の項目をロードするための命令を実行し、またテーブルの列１１６の内容をメモリに格納するための或いはデータをテーブル１１４とプロセッサ構築されたレジスタのうちの１つ以上との間で移動させるための命令も実行する。これらの余分の命令は、プロセッサが特権モードで動作しているときに実行可能であるに過ぎない。列１１６は、システム・ブート中に初期化される。ソフトウェアによるテーブル１１４の列１１６への書き込みと、それからの読み出しとは、ポート１５０を介して行われる。列１１６を更新するためのデータは、図１に示されているリソース・アクティブ化制御レジスタ３６から来る。或いは、列１１６内の項目は、例えば、スキャン・チェーンを通してのプリローディングによって、システム・パワーアップ中にハードウェアにより事前ロードされ得る。
【００６８】
図示されているように、テーブルの列１１６に２つ以上のリソースが記入され得る。テーブルの列１１６で相互排除リソースを明示するために“又は（ＯＲ）”又は“及び（ＡＮＤ）”規則が許容される。図示されている例については、リソースＲ４（行１３６）がアクティブ化されるためには、両方のリソースＲ５及びＲ６がオフにゲーティングされなければならない（行１３６、列１１６）。列１１６のリソース識別子は、テーブルの列１１５のリソースのパワーが数個のリソースのパワーの合計に等しいか又は近いときには“及び（ＡＮＤ）で結ばれた”対（又はストリング）として機能する。本例では、リソースＲ４のパワーは、リソースＲ５及びＲ６で散逸されるパワーの合計に近い。
【００６９】
“又は（ＯＲ）で結ばれた”対（又はストリング）として列１１６に記入されているリソース識別子は、アクティブ解除されるリソースの選択に関して柔軟性を許容する。例として、リソースＲ７（行１４２）がアクティブ化されるためには、リソースＲ８又はＲ９がアクティブ解除されなければならない（行１４２、列１１６）。同様に、リソースＲ８（行１４４、列１１５）がアクティブ化されるためには、リソースＲ７又はＲ９がアクティブ解除されなければならず（行１４４、列１１６）、リソースＲ９（行１４６）がアクティブ化されるためには、リソースＲ７又はＲ８がアクティブ解除されなければならない（行１４６、列１１６）。リソースＲ９（行１４６）は現在使用されているがリソースＲ７（行１４４）は使用されていないときにリソースＲ８（行１４４）がアクティブ化されるようにリクエストされたならば、ハードウェアはアクティブ解除されるものとしてリソースＲ７（行１４４）を指定し、ＭＥＲＡ手法が不規則挙動ループではなくてフェーズ変更ループ（図５及び７を参照）上を進むことを可能にする。
テーブルの列１１８は、対応する行の中のリソースが現在利用可能であるか（すなわち、アクティブであるか）否かを示す。列１１８内の項目は、対応するリソースがアクティブ化されているときには“リソース利用可能”としてセットされ、対応するリソースがオフにゲーティングされているときには“リソース利用不可能”としてセットされる。列１１８内の項目はハードウェアによりポート１２８を介して自動的に更新される。列１１８から読み出されたビットは、通常実行ループに続くか、それとも図５のステップ８６（図７のステップ１１２）に続くかを選択するために、図５及び７に示されているステップ８２において使用される。
【００７０】
テーブルの列１２０の項目は、対応する行の列１１６に記載されているリソースを使用している（または使用するように予定されている）命令がパイプライン中に存在するか否かを示す。列１２０の項目も、ハードウェア・ポート１２８によって自動的に更新される。“又は（ＯＲ）で結ばれた”又は“及び（ＡＮＤ）で結ばれた”ストリングとして列１１６に記入されている各リソースについて、ハードウェアは列１２０において別々のビットを維持する。
【００７１】
テーブル１１４がリソース索引でアクセスされるごとに、列１２０の指示された項目が列１１６及び１１８内の対応するビットと共にテーブルから読み出される。列１２０から読み出されたビットは２つの目的のために使われる。第１に、これらのビットは、ＭＥＲＡ制御ユニット（図１を参照）がステップ８６（又は１１２）（図５及び７を参照）からプログラム・フェーズ変更ループに進むべきかそれとも不規則挙動ループに進むべきかを決定するために使用される。例えば、リソースＲ１（行１３０）がアクティブ化されるようにリクエストされたならば、行１３０、列１２０のビットは、Ｒ１に対して相互排除として指定されているリソースＲ２が現在使用されていないことを示し、ＭＥＲＡ制御ユニット１２は図５及び７のステップ８６（１１２）からフェーズ変更ループに続く。しかし、リソースＲ２（行１３２）がアクティブ化されるようにリクエストされたならば、列１２０から読み出されたリソースＲ２に対応する行のビットは、Ｒ２に対して相互排除として指定されているリソースＲ１が現在使用されていることを示し、ＭＥＲＡ制御ユニット１２は図５及び７のステップ８６（１１２）から不規則挙動ループに続く。
【００７２】
列１２０から読み出されたビットは、アクティブ解除されるリソースの選択のために複数の選択肢があるときには（それは、数個のリソースが“又は（ＯＲ）”規則を用いて列２に記入されているときに生じる）、アクティブ解除されるリソースを指定するために選択論理回路１４８により使用される。例えば、リソースＲ７がアクティブ化されるようにリクエストされたならば、列１１６から読み出された情報はリソースＲ８又はＲ９がアクティブ解除されなければならないことを明示する。列１２０から読み出されたビットは、リソースＲ８が使用されていなくてリソースＲ９が現在使用されていることを示す。この場合、選択論理回路１４８は、アクティブ解除されるものとしてリソースＲ８を選択する。ＭＥＲＡ制御ユニット１２は、不規則挙動ループの性能ペナルティーを招くこと無く図５及び７に示されているステップ８６（１１２）の後のフェーズ変更ループ上を進み続ける。
【００７３】
テーブル１１４の列１２０の中のビットは、サイクル毎に、列１２２に格納されている値或いはリソース使用カウンタに基づいて、特定のリソースについてリソース使用カウンタがゼロにセットされているときにはそのリソースに対応する列１２０内の全ての“相互排除リソースが使用されている”項目が“いいえ”にセットされるように、更新される。特定のリソースについてリソース使用カウンタが非ゼロ値にセットされているときには、そのリソースに対応する列１２０内の全ての項目が“はい”にセットされる。例えば、本例ではリソースＲ４（行１３６）に対応するリソース使用カウンタはゼロであるので、列１２０内の行１３８及び１４０の両方の項目が“いいえ”にセットされる。
【００７４】
列１２２内の項目に基づいて列１２０内の項目を更新するために必要なハードウェアは、ゼロ値を検出する回路と、更新を必要とする列１２０内の適切な項目を始めに見出して書き込みポート１２を用いて所要の更新を実行する論理回路とを含む。特定のリソースについてのリソース使用カウンタがゼロ値に又はゼロ値から変化するときに更新を必要とする列１２０内の項目を探すサーチは、どの行がこのリソースを相互排除として記録しているかを見出すために列１１６内の項目をスキャンすることを含み得る。或いは、ハードウェアは列１１６への逆方向マッピングを有するテーブルを維持することができる。例えば、その逆方向マッピング・テーブルは、リソースＲ２を行１３０に記録し、リソースＲ１を行１３２に記録し、リソースＲ５及びＲ６を行１３６に記録する。
【００７５】
テーブル１１４の列１２２は、各リソースについてのリソース使用カウンタを維持する。列１２２内のカウンタは、サイクル毎にハードウェアによりポート１２８を介して更新される。特定のリソースを使用する命令がパイプラインに入るとき、列１２２内の対応する項目中のカウンタがインクリメントされる。特定のリソースを使用する命令が実行を終えるか（すなわち、プロセッサ・パイプラインから去るか）或いはパイプラインからフラッシングされると、列１２２内の対応する項目中のカウンタはデクリメントされる。例えば、リソースＲ１を使用する命令がパイプラインに入ると、行１３０、列１２２に存するリソースＲ１に対応するカウンタは値５から値６にインクリメントされる。列１２０内のカウンタの非ゼロ値は、対応するリソースが現在使用されていることを示す。これらのカウンタのゼロ値は、対応するリソースが使用されていないことを示す。
【００７６】
テーブル１１４の列１２４はソフトウェア・ヒントを記憶しており、これは、ソフトウェアに知られている対応するリソースの使用に関する情報を示すように意図されている。列１２４は列１１６と同様にポート１５０を介してソフトウェアにより更新可能である。ソフトウェア・ヒント列を書くための命令は、システム及びユーザ・コードの両方にとって利用可能である。ソフトウェア・ヒントの例は、対応するリソースがこのプログラムによって使用されると予想されないことを意味する“使用されない”或いは対応するリソースがこのプログラムによって頻繁に使用されると予想されることを意味する“頻繁に使用される”を含む。ソフトウェア・ヒントは、アクティブ解除されるリソースを指定するための複数の選択肢があるときにテーブルから読み出されて、アクティブ解除されるリソースを指定する論理回路１４８により使用される。例えば、リソースＲ９がアクティブ化されるようにリクエストされたならば、リソースＲ７又はＲ８がアクティブ解除されなければならない。これらのリソースはいずれも現在使用されていないので、選択論理回路１４８は両方のリソースＲ７及びＲ８について列１２４から読み出された情報を使用する。リソースＲ７についてのソフトウェア・ヒントは、それがこのプログラムによって再び使用されそうであることを示す。このときリソースＲ８がアクティブ解除されるように指定され、リソースＲ７はアクティブ・モードにとどまる。排除リソース識別子テーブルのソフトウェア・ヒント列１２４はオプションである。ソフトウェア・ヒント列１２４のための更新は図１のリソース・アクティブ化制御レジスタ３６から生ずる。
【００７７】
テーブル１１４は、リソースの使用についてのヒストリを記憶する列１２６をオプションで実現することができる。この使用ヒストリ情報は、アクティブ解除されるリソースを指定する選択論理回路１４８によって使用され得る。アクティブ解除されるリソースを指定するために複数の選択肢があり、列１２０及び１２４から読み出されたビットに基づいて決定を行うことができないときには、選択論理回路１４８は決定を行うために使用ヒストリ情報を使用する。頻繁には使われない（或いは長い間使用されていない）リソースがアクティブ解除されるように選択される。
【００７８】
列１２６の使用ヒストリ情報は図６及び７に示されているようにステップ１０６でアクティブ解除されるリソースを選択するためにも使用され、ここでリソース使用ヒストリ列１２６は、最近のヒストリにおいて夫々のリソースが使われた回数、或いはそのリソースが最後に何サイクル前に使われたかを記憶している。列１２６から読み出されたデータは、夫々のリソース又はリソースのグループについて別々に特権ソフトウェアによりセットされ得るスレショルド値と比較される。リソース使用カウンタ値がそのリソースについてセットされているスレショルドを下回れば、比較論理回路１５２は、ステップ１０６（図６及び７を参照）でそのリソースがアクティブ解除される資格を有すると図１のＭＥＲＡ制御ユニット１２に信号する。同様に、リソースが使われた最後のサイクルを示すカウンタを維持する実施態様では、カウンタがそのリソースについてセットされているスレショルドを上回れば、比較論理回路１５２は、ステップ１０６でそのリソースがアクティブ解除される資格を有するとＭＥＲＡ制御ユニット１２に信号する（図６及び７を参照）。この情報はＭＥＲＡ制御ユニット１２によりステップ１０６の判定を行うために使用される。これは、リソースのアクティブ解除のためにイーガー・ポリシーを実施する図６及び７に示されている実施態様に当てはまるだけである。
【００７９】
上記のテーブル１１４は例であり、当業者は、例えば列の異なる順序付け、テーブルの置き換え、異なる索引付けメカニズム、テーブル中のいろいろなフィールドの更新についての異なるポリシー（偶数サイクルにおいてのみ列１２６を更新するなど）など、リソース識別子テーブルの実現に関して多くのバリエーションが可能であることを認めるであろう。いろいろな列についてソフトウェア及びハードウェア更新メカニズムの種々の組み合わせも可能である。更に、特定のアプリケーションの必要に応じてテーブルの幾つかの列だけが実現されても良い。
【００８０】
図９は、本発明の代表的実施態様においてパワー・ゲーティングを制御するための代表的ハードウェア構造を示す。本発明の少なくとも１つの実施態様で使われるＭＥＲＡ制御ユニットが次に説明される。リソース使用テーブル１５４は、幾つかのステップでＭＥＲＡユニットのフローを制御するために必要な情報を提供する。列１５６はリソース識別子を含み、列１５８はソフトウェア・ヒント／指示を含み、列１６０はリソース使用ヒストリを含み、列１６２はリソース使用カウンタを含み、列１６４はアクティブ解除されるための有資格性リソースを示すリソース・ビットを含み、列１６６はリソース利用可能性インジケータを含み、列１６８はリソース・パワー・インジケータを含む。行１７０-１７８はリソース識別子Ｒ１−Ｒ７に割り当てられている。これらの列１５６-１６２は、図８と関連して上でテーブル１１４について記述されたものと同様の仕方で更新される。
【００８１】
リソース使用テーブル１５４の列１６４は、対応する行のリソースがアクティブ解除される資格を有するか否かを示す。列１６４の“１”という記載事項は資格があることを示し、“０”という記載事項はそのリソースがアクティブ解除される資格を持っていないことを示す。これらのビットは、対応する行の列１５８，１６０及び１６２の中の値に基づいてハードウェアにより更新される。列１６２の中のリソース使用カウンタがゼロでなければ、対応するリソースはアクティブ解除される資格を有しない。列１５８の中のソフトウェア・ヒントが、このリソースがこのプログラムによって頻繁に使用されることを示しているならば、対応するリソースはアクティブ解除される資格を有しない。その他の点に関して、列１６０のリソース使用ヒストリが所定の（ソフトウェア更新可能な）スレショルドより低く、かつ、又は、オプションのソフトウェア・ヒントがこのリソースがこのプログラムによって使われそうもないことを示すならば、列１６４の中の対応するビットは“１”にセットされ、そのリソースがアクティブ解除される資格を有することを示す。
【００８２】
リソース使用テーブルの列１６８は、夫々のリソースについてのパワーを記憶する。これらの値は、システムのパワー・アップのときにロードされ得、或いは製造時にハード・コーディングされ得る。
【００８３】
列１６６及び１６８の値は、夫々のサイクルにおいてテーブル１５４から読み出されて回路１８２に転送される。列１６６の中の値が“１”ならば、対応するデータ・ゲーティング回路１８２は列１６８から読み出された値を多入力加算器１９６に転送し、その他の場合、列１６６の中の値が“０”ならば、ゲーティングするデータ・ゲーティング回路１８２はゼロを多入力加算器１９６に転送する。多入力加算器１９６は、全ての行からの値を合計し、その結果（それは、現在アクティブである全てのリソースの総パワーである）を多入力加算器１８６に転送する。
【００８４】
列１６４及び１６８からの値は、夫々のサイクルでテーブルから読み出されてデータ・ゲーティング回路１８２に転送される。列１６４の中の値が“１”ならば、対応するデータ・ゲーティング回路１８２は列１６８から読み出された値を多入力加算器１８４に転送し、その他の場合、列１６４の中の値が“０”ならば、ゲーティングするデータ・ゲーティング回路１８２はゼロを多入力加算器１８４に転送する。多入力加算器１８４は、全ての行１７０-１７８からの値を合計し、その結果（それは、アクティブ解除に利用し得る全てのリソースの総パワーである）を多入力加算器１８６に転送する。加算器１８４から受け取られた値は加算器１８６において結果から差し引かれる（すなわち、その値は、他のオペランドに加えられる前に符号を変える）。
【００８５】
アクティブ化されるようにリクエストされているリソースについての列１６８からの値も多ビット加算器１８６に転送される。加算器１８６の残りの入力は、本書において前に定義されたＰ＿ｂｏｕｎｄの値を保持するレジスタ１８８に接続されている。レジスタ１８８はシステムのパワー・アップ時に書かれ、そしてオプションでシステム・ソフトウェアにより書換え可能であるように実現され得る。レジスタ１８８からの値は加算器１８６の他の入力に存する値から差し引かれる（すなわち、それは他のオペランドに加えられる前に符号を変える）。加算器１８６の出力の符号は符号検出器１９０に転送される。符号検出器の出力１９２は、充分な数のリソースがオフにゲーティングされる資格を有するか否かを示す。例えば、出力１９２は、図３,４及び６に示されているステップ８６（１１０）で充分な数のリソースがオフにゲーティングされる資格を有するか否か判定するために使用され得る。
【００８６】
加算器１８６，１９４，１９６及び１８４及び符号検出器１９０の論理図は、明瞭性を得るために簡略化された形で示されている。これらの加算器１８６，１９４，１９６及び１８４及び符号検出器１９０は、統合多入力桁上げ保留加算器として実現され得る。
【００８７】
アクティブ解除されるリソースの選択は、図８の排除リソース識別子テーブル１１４と関連して上で記述された付加的ステップを用いる、図８に示されているものと同様のハードウェア構造により支援され得る。
【００８８】
図１０は、本発明の代表的実施態様において投機的命令のステータスを調べるための流れ図である。ＭＥＲＡ制御ユニット１２により使用される制御フローにおけるステップのシーケンスが流れ図１９８で示されている。流れ図１９８におけるステップのシーケンスは、マイクロプロセッサにおける命令実行の効率を投機的発行で改善する。図示されている制御ステップのシーケンスは、オフにゲーティングされているリソースへのアクセスをリクエストする命令が検出された後に加入される。例えば、図示されているステップのシーケンスへの制御フローは、図３-７に示されているステップ８２から生じ得る。
【００８９】
ステップ２００は制御シーケンスの第１ステップであり、ここでゲーティングされているリソースへのアクセスをリクエストする命令のステータスが調べられる。命令が非投機的であるならば（すなわち、その命令に先行する全てのブランチが解決されているならば）、コントロールは出口ポイント２０６から出て、コントロールがプログラム・フェーズ変更ループへ進まなければならないか、それとも不規則挙動ループへ進まなければならないかを調べる（例えば、図３-７を参照）。
【００９０】
ステップ２００で命令が投機的であると（すなわち、その命令に先行する少なくとも１つのブランチが解決されていないと）判定されたならば、コントロールはステップ２０２へ進む。このステップにおいて、命令の発行プロセスは、先行する全てのブランチが解決されるまでストールされる。ステップ２０２からの出口で命令のステータスは非投機的に変更され、或いは命令はパイプラインからフラッシングされる。
【００９１】
ステップ２０４で命令のステータスが調べられる。それが非投機的になっているならば、コントロールはこのオプションのステップのシーケンスから出て、コントロールがプログラム・フェーズ変更ループへ進まなければならないか、それとも不規則挙動ループへ進まなければならないかを調べる（例えば、図３-７を参照）。命令がフラッシングされているならば、コントロールは、出口ポイント２０８においてこのオプションのステップのシーケンスから出て、図３-７に示されているステップ８０又は８４を行うか、或いは出口ポイント２０６を通って図６-７に示されているステップ８２へ進む。
【００９２】
図１１は、本発明の代表的実施態様においてプロセッサにより実行されているプログラム・スレッドの不規則挙動を調べることを示す流れ図である。制御フローの中には、流れ図２１０で示されているステップのシーケンスが挿入され得るポイントが幾つかある。図示されている制御ステップのシーケンスは、図３-７の実施態様の制御フローにおいて以下の条件、すなわち
ａ）オフにゲーティングされているリソースへのアクセスをリクエストする命令が検出されたか（例えば、図３-７に示されているステップ８２からの“はい”ブランチ）、或いは
ｂ）アクティブ解除され得るリソースが充分に無いか（例えば、図３及び４の実施態様のステップ８６からの“いいえ”ブランチ）、或いは
ｃ）相互排除として指定されているリソースが使用されているか（例えば、図５に示されているステップ８６からの“はい”ブランチ）、或いはオフにゲーティングされていないか（例えば、図７に示されているステップ１１２からの“いいえ”ブランチ）、或いは
ｄ）リクエストされたリソースが、セットされているパワー限度を超えなければアクティブ化され得ない（例えば、図６の実施態様のステップ１１０からの“いいえ”ブランチ）という条件、
のうちの１つが検出された後に加入され得る。
【００９３】
ステップ２１４を実行するために、ハードウェアは、夫々のリソースについて、或いはリソースのグループについて、リソース・アクティブ化ヒストリ・カウンタ２２２を実現することができる。これらは、対応するリソースがアクティブ化されるごとにインクリメントされるエージング・カウンタである。また、夫々のリソース又はリソースのグループについて、ハードウェアは、ソフトウェアにより更新され得るスレショルドの値を記憶する。比較器のセット２２４は、行２３０の中のカウンタを行２３２の中の対応するスレショルド値と比較する。いずれかのカウンタが対応するスレショルド値を超えると、カウンタの出力のトリガー信号２２６がアサートされる。
【００９４】
ステップ２１４において、トリガーがセットされると（すなわち、リソース・アクティブ化・ヒストリが、アクティブ・モードとゲーティングされるモードとの間でのリソースのスイッチングが所定のリソース・アクティブ化頻度スレショルドより頻繁に生じることを示せば）、コントロールはステップ２１６へ進む。そうでなければ、コントロールは、このステップのシーケンスを出口ポイント２１８から出て、コントロールの適切なポイントに、例えば図３-７の実施態様のステップ８６に、又は図３-４に示されているステップ９０に、及び図５及び７に示されているステップ９４に、戻る。
【００９５】
ステップ２１６で、システム・ソフトウェアへのトラップが開始される（例えば、割込み／トラップ制御ブロック３４の入力へ行く図１の信号５０で適切なコントロールをアサートすることにより）。そのトラップは、システム・ソフトウェア（例えば、スレッド・スケジューラ）に対して、スレッドの現在走っている組み合わせが不十分な実行をもたらすこと、或いは、現在のスレッドが不規則な挙動を示していて、より低い優先順位のモードにスイッチングされるか或いは他のコアで実行するように移動されるか或いは終了されるべきであることを示す。トラップ中、ゲーティングされているリソースへのアクセスをリクエストする命令はソフトウェアでエミュレートされ得る。ステップ２１６の後、アプリケーション・コードの実行が出口ポイント２２０から再開される。
【００９６】
図１２は、ゲーティングされているリソースのアクティブ化を避けるべく実行されるように代わりのリソースへ命令を発行することを示す流れ図である。流れ図２３６のこのステップのシーケンスが挿入され得るポイントが制御フローの中に幾つかある。流れ図２３６の制御ステップのシーケンスは、次のように図３-７の実施態様の制御フローにおいて次の条件、すなわち、
ａ）アクティブ解除され得るリソースが充分に無いか（例えば、図３及び４に示されているステップ８６からの“いいえ”ブランチ）、或いは
ｂ）相互排除として指定されているリソースが使用されているか（例えば、図５に示されているステップ８６からの“はい”ブランチ）、或いはオフにゲーティングされていないか（例えば、図７に示されているステップ１１２からの“いいえ”ブランチ）、或いは
ｃ）リクエストされたリソースが、セットされているパワー限度を超えなければアクティブ化され得ない（例えば、図６に示されているステップ１１０からの“いいえ”ブランチ）という条件、
のうちの１つが検出された後に加入され得る。
【００９７】
ステップ２４０において、ＭＥＲＡ制御ユニット１２は、ゲーティングされているリソースをリクエストした命令が、代わりのリソースに対して、実行されるように発行され得るか否かを調べる。代わりのリソースでの実行は、その命令の多重発行（すなわち、その命令を同じユニットに複数のサイクルで送ること）を必要とし得、或いは、その命令の代わりに他の命令のシーケンスを、それらがゲーティングされているリソースのアクティブ化を必要としないように、用いることを必要とし得る。命令を他の命令のシーケンスに置換することは、マイクロコード・エンジン（例えば、図１のマイクロコード・エンジン２４）により実行され得る。その様な命令置換の例は、加算命令のシーケンスを使用する乗算命令の実行、３２ビット乗算のシーケンスを使用する６４ビット乗算命令の実行、桁送り及び加算命令、及びスカラー命令のシーケンスを使用するＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ（単一命令複数データ））命令の実行を含む。別の例は、２つの浮動小数点ユニットを必要とする２つの浮動小数点命令のグループ（並列に発行されたならば）の単一浮動小数点ユニットにおける実行であり、それは２つの浮動小数点スカラー命令をシーケンシャルに発行することにより実行される。
【００９８】
代わりのリソースに対して命令が発行され得なければ、コントロールは、流れ図２３６のステップのシーケンスを出口ポイント２４６から出て、種々の実施態様の適切な制御ポイントに、例えば図３-４及び６の実施態様のステップ９０に、或いは図５及び７に示されているステップ９４に、戻る。
【００９９】
ステップ２４０でのチェックの結果として、その命令が代わりのリソースへ発行され得ると判定されたならば、コントロールはステップ２４２に進む。ステップ２４２において、その命令は、代わりのリソースへ場合によってはシーケンシャルに発行される命令のシーケンスに置換され、そしてコントロールは図３-７に示されているステップ８０又はステップ８４へ戻され、或いは図６-７に示されているステップ１０６へ進む。
【０１００】
次にストール・サイクルの挿入が記述される。ＭＥＲＡ制御１２（図１を参照）ユニットは、上で記述され図３-７に示されている制御フローのいろいろなステップで数個のストール・サイクルを強要することができる。例えば、ステップ９６でアクティブ化されるように信号されたリソースがアクティブ化手続きを完了することを可能にするために図３-７に示されているステップ９６の後に数個のストール・サイクルが強要され得る。このステップは、リクエストされたリソースが、それに対して何らかの命令が発行される前に、完全にアクティブ化されることを保証する。また、アクティブ化されるリソースにおけるアクティブ化手続きに起因する一時的パワー増大を防止するために、図３-５に示されているステップ９２及び９６の間で付加的なストール・サイクルが強要され得る。
【０１０１】
本書において添付図面と関連して代表的実施態様が記述されたけれども、本発明が本書に記載された代表的実施態様には限定されないこと、及び、それらに対して種々の他の変更及び改変が本発明の範囲から逸脱すること無く当業者によって行われ得ることが理解されなければならない。添付されている請求項により定義される発明の範囲内に全てのそのような変更及び改変が含まれることが意図されている。
【図面の簡単な説明】
【０１０２】
【図１】本発明の代表的実施態様における相互排除リソース・アクティブ化（ＭＥＲＡ）制御ユニット及び他のプロセッサ・コア・リソースを示す。
【図２】本発明の代表的実施態様におけるマイクロプロセッサ・コンポーネントとＭＥＲＡ制御ユニットとの間の代表的インターフェースを示す。
【図３】本発明の代表的実施態様におけるマイクロプロセッサ・リソースのアクティブ解除及びアクティブ化の制御を示す流れ図である。
【図４】本発明の代表的実施態様におけるマイクロプロセッサ・リソースのアクティブ解除及びアクティブ化の制御を示す流れ図である。
【図５】本発明の代表的実施態様においてテーブルに格納されたリソースの対についてのオン・デマンドのアクティブ化及びアクティブ解除ポリシーを示す流れ図である。
【図６】本発明の代表的実施態様におけるマイクロプロセッサ・リソースのアクティブ解除及びアクティブ化の制御を示す流れ図である。
【図７】本発明の代表的実施態様におけるイーガー・リソース・アクティブ解除及びオン・デマンド・リソース・アクティブ化ポリシーを用いるリソースの相互排除アクティブ化の制御を示す流れ図である。
【図８】本発明の代表的実施態様における相互排除リソース（またはリソースのグループ）に対するニーズをチェックし、それらを指定するテーブル・ベースのハードウェア構造を示す。
【図９】本発明の代表的実施態様においてパワー・ゲーティングを制御するための代表的ハードウェア構造を示す。
【図１０】本発明の代表的実施態様における投機的命令のステータスのチェックを示す流れ図である。
【図１１】本発明の代表的実施態様においてＭＥＲＡ制御ユニットにより実行されているプログラム命令の不規則な挙動のチェックを示す流れ図である。
【図１２】リクエストされたゲーティングされるリソースのアクティブ化を避けるための代わりのリソースへの実行命令の発行を示す流れ図である。
【図１】
2009505279.tif 000003
【図２】
2009505279.tif 000004
【図３】
2009505279.tif 000005
【図４】
2009505279.tif 000006
【図５】
2009505279.tif 000007
【図６】
2009505279.tif 000008
【図７】
2009505279.tif 000009
【図８】
2009505279.tif 000010
【図９】
2009505279.tif 000011
【図１０】
2009505279.tif 000012
【図１１】
2009505279.tif 000013
【図１２】
2009505279.tif 000014
【国際調査報告】
2009505279.tif 000015