(57)【特許請求の範囲】
【請求項１】
インストラクションを選択して発行するよう構成されたスケジューラと、
前記発行されたインストラクションを受け取って実行するよう構成された実行コアと、  電力スロットルユニットと、
を備え、前記電力スロットルユニットは、
１つ以上のインストラクション形式に対応するインストラクション発行カウントを維持し、前記インストラクション発行カウントは、前記１つ以上のインストラクション形式のうちの所与のインストラクション形式のインストラクションを前記実行コアへ発行されるクロックサイクル毎に第１の量だけインクリメントされ、前記所与のインストラクション形式のインストラクションが発行されないクロックサイクル毎に第２の量だけデクリメントされるカウンタのカウント値であり、
１つのインストラクション発行カウントが前記所与のインストラクション形式に対応するスレッシュホールドを越えることを決定するのに応答して、
前記所与のインストラクション形式に対する新たな発行レートであって、前記少なくとも１つのインストラクション形式の現在の発行レートとは異なり、発効される新たな発行レートを前記第１の量及び前記第２の量の少なくとも１つを変更することにより選出する、
前記スレッシュホールドを越える前記インストラクション発行カウントに対応する前記所与のインストラクション形式のインストラクションの発行阻止を開始する、
ように構成され、
前記スレッシュホールドを越えたインストラクション発行カウントが前記スレッシュホールドより低くなることを決定するのに応答して、当該インストラクション形式のインストラクションの発行阻止を解除する、プロセッサ。
【請求項２】
前記電力スロットルユニットは、更に、複数のエントリを含む電力状態テーブルにアクセスし、電力状態コードを用いて前記電力状態テーブルのエントリを選択し、前記エントリに記憶された電力スロットルコードを読み出し、前記選出を、前記電力スロットルコードに基づいて遂行するように構成された、請求項１に記載のプロセッサ。
【請求項３】
前記電力状態コードは、前記プロセッサの動作電力状態に基づく、請求項２に記載のプロセッサ。
【請求項４】
前記電力スロットルユニットは、更に、複数のエントリを含むスロットルテーブルにアクセスし、前記電力スロットルコードを用いて前記スロットルテーブルのエントリを選択し、前記スロットルテーブルの選択されたエントリから所与のインストラクション形式、当該所与のインストラクション形式に対応するスレッシュホールド及び前記所与のインストラクション形式に対応する発行レート限界を読み出すように構成された、請求項２に記載のプロセッサ。
【請求項５】
前記電力スロットルユニットは、更に、前記選出を、どのインストラクション発行カウントが各スレッシュホールドを越えたかに更に基づいて遂行するように構成された、請求項３に記載のプロセッサ。
【請求項６】
前記第１の量及び前記第２の量は等しくない、請求項１に記載のプロセッサ。
【請求項７】
前記インストラクション形式は、シングルインストラクション・マルチデータ（ＳＩＭＤ）インストラクションを含む、請求項１に記載のプロセッサ。
【請求項８】
１つ以上のインストラクション形式に対応するインストラクション発行カウントを維持する段階であって、前記インストラクション発行カウントは、前記１つ以上のインストラクション形式のうち所与のインストラクション形式のインストラクションが実行コアへ発行されるクロックサイクル毎に第１の量だけインクリメントされ、前記所与のインストラクション形式のインストラクションが発行されないクロックサイクル毎に第２の量だけデクリメントされるカウンタのカウンタ値である、段階と、
１つのインストラクション発行カウントが前記所与のインストラクション形式に対応するスレッシュホールドを越えることを決定する段階と、
前記決定に応答して、前記所与のインストラクション形式に対して、前記少なくとも１つのインストラクション形式の現在の発行レートとは異なり、発効される新たな発行レートを前記第１の量及び前記第２の量の少なくとも１つを変更することにより選出し、
前記スレッシュホールドを越える前記インストラクション発行カウントに対応する前記所与のインストラクション形式の少なくとも１つのインストラクションの発行阻止を開始する、
という段階と、
前記スレッシュホールドを越えたインストラクション発行カウントが前記スレッシュホールドより低くなることを決定するのに応答して、当該インストラクション形式のインストラクションの発行阻止を解除する段階と、
を備える、方法。
【請求項９】
複数のエントリを含む電力状態テーブルにアクセスする段階と、電力状態コードを用いて前記電力状態テーブルのエントリを選択する段階と、前記エントリに記憶された電力スロットルコードを読み出す段階と、前記選出を、ソフトウェアにより書かれた電力スロットルコードに基づいて遂行する段階とを更に備えた、請求項８に記載の方法。
【請求項１０】
前記電力状態コードはプロセッサの動作電力状態に基づく、請求項９に記載の方法。
【請求項１１】
複数のエントリを含むスロットルテーブルにアクセスする段階と、前記電力スロットルコードを用いて前記スロットルテーブルのエントリを選択する段階と、前記スロットルテーブルの選択されたエントリから所与のインストラクション形式、当該所与のインストラクション形式に対応するスレッシュホールド及び前記所与のインストラクション形式に対応する発行レート限界を読み出す段階とを更に備えた、請求項９に記載の方法。
【請求項１２】
前記選出を、どのインストラクション発行カウントが各スレッシュホールドを越えたかに更に基づいて遂行する段階を更に備えた、請求項１０に記載の方法。
【請求項１３】
前記決定に応答して、前記第１の量及び第２の量の１つ以上を変更する段階を更に備えた、請求項８に記載の方法。
【請求項１４】
前記インストラクション形式は、シングルインストラクション・マルチデータ（ＳＩＭＤ）インストラクションを含む、請求項９に記載の方法。
【請求項１５】
インストラクションを選択して発行するよう構成されたスケジューラに対する第１のインターフェイスと、
前記発行されたインストラクションを受け取って実行するよう構成された実行コアに対する第２のインターフェイスと、
スロットルコントロールロジックと、
を備え、前記スロットルコントロールロジックは、
前記第２のインターフェイスを経て発行されるインストラクションの検出に基づいて１つ以上のインストラクション形式に対応するインストラクション発行カウントを維持し、前記インストラクション形式は、前記実行コアにより実行されるサポートされるインストラクション形式のサブセットであり、前記インストラクション発行カウントは、前記１つ以上のインストラクション形式のうちの所与のインストラクション形式のインストラクションが前記実行コアへ発行されるクロックサイクル毎に第１の量だけインクリメントされ、前記所与のインストラクション形式のインストラクションが発行されないクロックサイクル毎に第２の量だけデクリメントされるカウンタのカウンタ値であり、
１つのインストラクション発行カウントが前記所与のインストラクション形式に対応するスレッシュホールドを越えることを決定し、
前記決定に応答して、
前記所与のインストラクション形式に対して、前記少なくとも１つのインストラクション形式の現在の発行レートとは異なり、発効される新たな発行レートを前記第１の量及び前記第２の量の少なくとも１つを変更することにより選出し、
前記スレッシュホールドを越える前記インストラクション発行カウントに対応する前記所与のインストラクション形式の少なくとも１つのインストラクションの発行阻止を開始し、
前記スレッシュホールドを越えたインストラクション発行カウントが前記スレッシュホールドより低くなることを決定するのに応答して、当該インストラクション形式のインストラクションの発行阻止を解除するコントロール信号を前記第１のインターフェイスを経て送信する、
ように構成される、電力スロットルユニット。
【請求項１６】
前記スロットルコントロールロジックは、更に、複数のエントリを含む電力状態テーブルにアクセスし、電力状態コードを用いて前記電力状態テーブルのエントリを選択し、前記エントリに記憶された電力スロットルコードを読み出し、前記選出を、前記電力スロットルコードに基づいて遂行するように構成された、請求項１５に記載の電力スロットルユニット。
【請求項１７】
前記電力状態コードは、プロセッサの動作電力状態に基づく、請求項１６に記載の電力スロットルユニット。
【請求項１８】
インストラクションを選択して発行するよう構成されたスケジューラと、
前記発行されたインストラクションを受け取って実行するよう構成された実行コアに対するインターフェイスと、
装置内のアクティビティに基づいて電力状態コードを決定するように構成された電力マネージャーと、
コントロールロジックと、
を備え、前記電力マネージャーは、更に、電力スロットルコードを前記コントロールロジックへ搬送するように構成され、前記電力スロットルコードは、現在の電力状態コードに関連され、前記コントロールロジックは、
所与のインストラクション形式に対する発行レートを前記電力スロットルコードに基づいて選出し、
適格化条件が満足されることの決定に応答して、
前記所与のインストラクション形式に対して、前記少なくとも１つのインストラクション形式の現在の発行レートとは異なり、発効される新たな発行レートを前記第１の量及び前記第２の量の少なくとも１つを変更することにより選出し、
前記スレッシュホールドを越える前記インストラクション発行カウントに対応する前記所与のインストラクション形式の少なくとも１つのインストラクションの発行阻止を開始する、
ように構成された、装置であって、
前記装置は、１つ以上のインストラクション形式に対応するインストラクション発行カウントを維持し、前記インストラクション発行カウントは、前記１つ以上のインストラクション形式のうちの所与のインストラクション形式のインストラクションが前記実行コアに発行されるクロックサイクル毎に第１の量だけインクリメントされ、前記所与のインストラクション形式のインストラクションが発行されないクロックサイクル毎に第２の量だけデクリメントされるカウンタのカウント値であり、
前記適格化条件が満足されなくなることの決定に応答して、前記所与のインストラクション形式のインストラクションの発行阻止を解除する、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピューティングシステムに関するもので、より特定すれば、問題のある選択されたインストラクションの発行を絞り込むことにより電力消費を効率的に減少することに関する。
【背景技術】
【０００２】
各世代の半導体プロセッサコアにおける装置及び金属ルートの幾何学的な大きさが減少しつつある。それ故、ダイ上の有効面積の所与のエリア内に多くの機能が設けられる。その結果、ラップトップコンピュータ、タブレットコンピュータ、スマートホン、ビデオカメラ、等の移動装置は、益々人気を得ている。典型的に、これら移動装置は、１つ以上のバッテリセルから電力を受けている。バッテリは、容量に限度があるから、定期的に外部充電器に接続して再充電される。これら移動装置の重大な問題は、電力消費である。電力消費が増加すると、それら装置のバッテリ寿命が低下し、再充電の頻度が増加する。
【０００３】
ダイ上の集積回路の密度は、複数のパイプライン、大きなキャッシュ、及びより複雑なロジックと共に高くなるので、クロックサイクル当たり切り換わるノード及びバスの数が著しく増加する。それ故、電力消費が増加する。加えて、ソフトウェアアプリケーションは、ハードウェアを高い電力消散値に到達させる特定のコンピュータプログラムコードを実行する。そのようなコードは、偶発的に又は意図的に（例えば、電力ウィルス）これを行う。電力消散は、プログラムコード内に所与のインストラクション形式が複数発生することにより上昇し得る。この電力消散値は、チップの熱設計電力（ＴＤＰ）又は最大チップ電力消散にも到達し又はそれを越えることもある。
【０００４】
以上に加え、移動装置の冷却システムは、所与の熱設計電力（ＴＤＰ）又は熱設計点に対して設計される。冷却システムは、半導体ダイの最大接合温度を越えることなくＴＤＰ値を消散し得る。しかしながら、所与のインストラクション形式が複数発生すると、電力消散が半導体チップのＴＤＰを越え得る。更に、電源に対して電流制限があるが、これを越えることもある。電力モードがチップの動作モードを変更したりチップ内の特定ブロックをターンオフしたりしない場合には、バッテリが急速に放電し得る。更に、物理的なダメージも生じ得る。ピーク電力消散を管理する１つの解決策は、特定スレッシュホールドを越えないようにインストラクションの発行を単に制限することであるが、これは、全体的な性能の受け容れられない低下を招くことがある。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
以上のことから、選択されたインストラクションの発行を絞り込むことにより電力消費を減少するための効率的な方法及びメカニズムが要望される。
【課題を解決するための手段】
【０００６】
選択されたインストラクションの発行を絞り込むことにより電力消費を減少するためのシステム及び方法が意図される。
【０００７】
一実施形態において、プロセッサは、電力スロットルユニットを備えている。この電力スロットルユニットは、同じパイプライン段内でスケジューラとして使用される。電力スロットルユニットは、１つ以上のインストラクション形式に対して１つ以上のインストラクション発行カウントを維持する。インストラクション形式とは、プロセッサ内の実行コアにより実行されるサポートされるインストラクション形式のサブセットである。インストラクション形式は、それら形式のインストラクションを処理するための高電力消費推定値に基づいて選出される。例えば、フローティングポイント（ＦＰ）シングルインストラクション・マルチデータ（ＳＩＭＤ）インストラクション形式は、マルチサイクルのレイテンシ中にベクトルエレメントを処理するための広いデータレーンを有する。インストラクション発行カウントを維持する間に、電力スロットルユニットは、所与のインストラクション発行カウントが所与のスレッシュホールドを越えることを決定する。それに応答して、電力スロットルユニットは、各発行レートを制限するために１つ以上のインストラクション形式を選択する。
【０００８】
１つ以上のインストラクション形式の選択は、電力状態推定に基づく。或いは又、この選択は、ソフトウェアを経てなされるユーザの変更に基づいてもよい。電力スロットルユニットは、選択された１つ以上の候補インストラクション形式の各々に対して発行レートを選出する。発行レートのこの選出は、特定のコントロールレジスタの電力状態推定又はソフトウェア更新にも基づく。電力スロットルユニットは、選択された１つ以上のインストラクション形式の各々に対する関連発行レートを各選出された発行レートに制限する。それ故、発行レートの制限は、変化してもよいし、又はプログラム可能でもよい。
【０００９】
これら及び他の実施形態は、添付図面を参照して、以下に詳細に説明される。
【図面の簡単な説明】
【００１０】
【図１】無秩序な実行を遂行するプロセッサコアの一実施形態の一般化されたブロック図である。
【図２】半導体チップの電力管理の一実施形態の一般化されたブロック図である。
【図３】電力スロットルユニットの一実施形態を示す一般化されたブロック図である。
【図４】特定のインストラクション形式のインストラクション発行レートをコントロールする方法の一実施形態を示す一般化されたフローチャートである。
【図５】スロットルテーブルの一実施形態を示す一般化されたブロック図である。
【図６】インストラクション発行レートを制限する一実施形態を示す一般化されたブロック図である。
【図７】インストラクション発行レートを制限する別の実施形態を示す一般化されたブロック図である。
【図８】インストラクション発行レートを制限する更に別の実施形態を示す一般化されたブロック図である。
【図９】特定のインストラクション形式のインストラクション発行レートをコントロールする方法の一実施形態の一般化されたフローチャートである。
【発明を実施するための形態】
【００１１】
本発明は、種々の変更を受けそして別の形態でも実施できるが、その特定の実施形態を一例として添付図面に示して以下に詳細に説明する。しかしながら、添付図面及び詳細な説明は、本発明を、ここに開示する特定の形態に限定するものではなく、本発明は、特許請求の範囲に規定される本発明の精神及び範囲内に入る全ての変更、等効物及び代替え物を網羅することを理解されたい。又、本出願全体に使用される「〜してもよい(may)」という語は、許すという意味（即ち、〜の潜在性があるという意味）で使用されるもので、強制の意味（即ち、〜しなければならないという意味）ではない。同様に、「含む(include)」、「含んでいる(including)」及び「含む(includes)」という語は、含むことを意味するが、それに限定されない。
【００１２】
種々のユニット、回路又は他のコンポーネントは、１つ又は複数のタスクを遂行するように「構成される」ものとして述べる。この点について、「構成される」とは、動作中に１つ又は複数のタスクを遂行する「回路を有する」ことを一般的に意味する構造を広く表現するものである。従って、ユニット／回路／コンポーネントは、そのユニット／回路／コンポーネントが現在オンでなくても、タスクを遂行するように構成することができる。一般的に、「構成される」に対応する構造を形成する回路は、ハードウェア回路を含む。同様に、種々のユニット／回路／コンポーネントは、説明の便宜上、１つ又は複数のタスクを遂行するものとして説明されてもよい。そのような説明は、「構成される」という句を含むものと解釈されねばならない。１つ以上のタスクを遂行するように構成されたユニット／回路／コンポーネントを表現する場合に、そのユニット／回路／コンポーネントに関して３５Ｕ.Ｓ.Ｃ.§１１２、第６節の解釈を引用しないことが明確に意図される。
【００１３】
以下の説明において、本発明を完全に理解するために幾つかの特定の細部について述べる。しかしながら、当業者であれば、これら特定の細部がなくても本発明を実施できることが明らかであろう。ある場合には、本発明を不明瞭にしないため、良く知られた回路、構造及び技術は詳細に示さない。
【００１４】
図１は、無秩序な実行を遂行するプロセッサコア１００の一実施形態を示す一般化されたブロック図である。プロセッサ１００は、インストラクションを処理するために多段パイプラインを使用する。インストラクションキャッシュ（ｉ−キャッシュ）１０４は、ソフトウェアアプリケーションのためのインストラクションを記憶する。アドレス選択ロジック１０２により搬送されるアドレスで指示される１つ以上のインストラクションがｉ−キャッシュ１０４からフェッチされる。ｉ−キャッシュミスがない場合にはクロックサイクル当たりｉ−キャッシュ１０４から複数のインストラクションがフェッチされる。アドレスは、次回フェッチプレディクタ１０６によりインクリメントされる。分岐方向プレディクタ１０８が、次回フェッチプレディクタ１０６、及びその後のパイプライン段のコントロールフロー評価ロジック１１０の各々に結合される。プレディクタ１０６は、次に続くインストラクションを実行することからインストラクションストリームのフローを変更するインストラクションの情報を予想する。
【００１５】
デコードユニット１１０は、フェッチされた複数のインストラクションのＯＰコードをデコードする。或いは又、インストラクションがマイクロインストラクション又はマイクロＯＰに分割されてもよい。ここで使用する「インストラクション」及び「マイクロＯＰ」という語は、交換可能である。というのは、本発明は、各々の具現化を使用するアーキテクチャーで使用されるからである。デコードユニット１１０は、ディスパッチキュー１１４においてエントリを割り当てる。一実施形態では、コントロールフロー評価ブロック１１２は、アドレスセレクタ１０２におけるインストラクションのフェッチを変更する。例えば、無条件分岐ＯＰコードに関連した絶対アドレス値がアドレスセレクタ１０２へ送られる。ディスパッチキュー１１４のインストラクションは、リネーマーアレイ１１８により再命名された関連オペランド及び行先識別子を有する。リネーマーアレイ１１８は、フリーリストアロケータ１２０から候補ネームを受け取る。
【００１６】
依存性合併ブロック１２２は、受け取ったインストラクションに対する依存性ベクトルを発生する。手前のパイプライン段で選択された再命名された識別子は、インストラクション間の依存性を見出しそして指示するのに使用される。依存性合併ブロック１２２は、インストラクション及びそれに関連した再命名された識別子、プログラムカウンタ（ＰＣ）値、依存性ベクトル、等をスケジューラ１２４に与える。
【００１７】
スケジューラ１２４は、インストラクションを、実行コア１３０において実行するためにスケジュールする。オペランドが得られ、ハードウェアリソースも得られるときには、インストラクションがスケジューラ１２４から実行コア１３０内のファンクションユニットの１つへ無秩序に発行される。スケジューラ１２４は、そのリソースオペランドをアーキテクチャーレジスタファイル（図示せず）又はオペランドバイパスロジックから読み取る。ソースオペランドは、実行コア１３０に与えられる。
【００１８】
実行コア１３０は、スケジューラ１２４へ報告されるインストラクションの実行中に種々のイベントを検出する。その２つの例は、予想を誤った分岐インストラクションと、再生されるロード／記憶インストラクションとを含む。種々の例外が検出される。その２つの例は、非特権モードで実行される特権インストラクション又はメモリアクセスに対する保護例外と、アドレス変換なしに対する例外とを含む。例外は、それに対応する例外取り扱いルーチンを、例えば、マイクロコード１１６により実行させる。
【００１９】
実行コアは、ロード／記憶ユニット１４０を含む。該ロード／記憶ユニット１４０は、記憶インストラクションに対応するアドレスを記憶するための記憶バッファ、記憶インストラクションに対応する記憶データを記憶するための記憶キュー、及びロードインストラクションに対するアドレス及びデータの両方を記憶するロードバッファを含む。ロード／記憶ユニット１４０は、データキャッシュ（図示せず）に接続される。プロセッサ１００は、各ｉ−キャッシュ１０４に対する変換ルックアサイドバッファ（ＴＬＢ）、及びキャッシュアクセスを遂行するときに全メモリ変換を遂行するコストを回避するためのデータキャッシュを含む。
【００２０】
実行コア１３０は、少なくとも、加算、減算、シフト、ビットごとの論理演算、回転、及び／又は他の機能を遂行する多数の計算ユニットを含む。ここに示す例では、実行コア１３０は、整数演算論理ユニット（ＡＬＵ）１３２、整数ＡＬＵ及び分岐分析ロジックの組み合わせ１３４、フローティングポイント加算・減算及びシングルインストラクション・マルチデータ（ＳＩＭＤ）計算ロジックの両方をもつフローティングポイントユニット１３６、並びにフローティングポイント乗算及びＳＩＭＤ計算ロジックの両方をもつフローティングポイントユニット１３８を含む。
【００２１】
ＳＩＭＤインストラクションは、複数のデータレーンにおいて同じオペレーションを遂行する。ＳＩＭＤインストラクションは、インストラクションセットアーキテクチャー（ＩＳＡ）において他のインストラクションにより使用されるアーキテクチャーレジスタファイルからの個別のレジスタファイルを使用する。ＳＩＭＤインストラクションに対するレジスタは、同じデータ形式のエレメントのベクトルとして使用される。ＳＩＭＤインストラクションは、メディア加速度、信号処理及びグラフィックをサポートするのに使用される。プロセッサ１００は、署名及び非署名信号、並びに倍精度フローティングポイントオペレーションの両方をサポートする。これらのＳＩＭＤインストラクションの１つ以上は、マルチサイクルレイテンシを有する。
【００２２】
大量の処理及び長いレイテンシのために、特定のインストラクションを実行すると、電源から著しい量の電流が引き出されることがある。従って、それらの識別されたインストラクションは、著しい電力を消費する。それらの高電力インストラクションは、問題のあるインストラクションと称される。それら問題のあるインストラクションの発行レートは、チップにおける所与の電力消費レベルを維持するためにクロックサイクルごとに変更される。例えば、電力スロットル１５０は、問題のあるインストラクションの発行レートを監視する。適格な状態が生じたときに、電力スロットルは、問題のあるインストラクションの発行レートを、プログラム可能な減少レートに制限する。
【００２３】
図２は、半導体チップの電力管理システム２００の一実施形態を示す一般化されたブロック図である。種々の実施形態において、プロセッサ１００は、電力スロットルユニット１５０を使用して特定のインストラクション形式の発行レートを制限するように構成される。電力スロットルユニット１５０は、ソフトウェア又はハードウェアによりコントロールされる。一実施形態において、プロセッサ１００内の選出されたハードウェア構成レジスタ２７０内の特定ビットフィールドは、ソフトウェアレイヤ２６０によりスロットルコードで更新される。電力スロットルユニットは、スロットルコードを使用して、特定のインストラクション形式に対するインストラクション発行レート限界を決定する。ソフトウェアレイヤ２６０は、ユーザプログラム、オペレーティングシステムのカーネル、又は他のソフトウェアである。別の実施形態では、スロットルコード以外のパラメータ値を使用して、特定のインストラクション形式のインストラクション発行レートの限界をセットする。これら他のパラメータは、以下に詳細に述べる。更に別の実施形態では、電力マネージャー２１０は、電力スロットルユニット１５０により使用されるスロットルコード又は他のパラメータを調整して、特定のインストラクション形式のインストラクション発行レートの限界をセットする
【００２４】
プロセッサ１００は、集積回路（ＩＣ）である。種々の実施形態において、プロセッサ１００は、オン・ダイ(on-die)インストラクション及びデータキャッシュを各々伴う１つ以上のコアを含む。プロセッサ１００は、シングルパイプライン又はマルチパイプラインを伴うスーパースカラープロセッサである。別の実施形態では、プロセッサ１００は、特定用途向けＩＣ（ＡＳＩＣ）である。更に別の実施形態では、プロセッサ１００は、システムオンチップ（ＳＯＣ）上に１つ以上の計算ブロックを含む。プロセッサ１００を具現化するために、いずれのトランジスタファミリーが使用されてもよい。例えば、金属酸化物半導体電界効果トランジスタ（ＭＯＳＦＥＴ）及びバイポーラ接合トランジスタ（ＢＪＴ）が含まれる。
【００２５】
一実施形態において、ソフトウェアレイヤ２６０は、プロセッサ１００内のハードウェア構成レジスタ２７０をスロットルコードで更新する。一実施形態では、プロセッサ１００の入力／出力（Ｉ／Ｏ）ピンは、ハードウェア構成レジスタへのアクセスを与える。或いは又、ユーザソフトウェアプログラム又はオペレーティングシステムのカーネルからの特定のインストラクションがプロセッサ１００のハードウェアにより実行され、構成レジスタを指定値で更新する。一例において、構成レジスタ２７０は、予約された雑多なビットフィールドを伴うスーパーバイザレベル例外取り扱いレジスタである。雑多なビットフィールドの指定部分は、スロットルコードを記憶するように注意して使用される。ユーザレベル及びスーパーバイザレベルの構成レジスタの他の例も使用できる。更に、ハードウェア構成レジスタ２７０には、他の値が記憶されてもよい。他の値の一例は、インストラクション発行レート限界を含む。他の例は、インストラクションカウントを維持しそしてインストラクション発行レート限界を発生するのに使用される以下に述べるインクリメント値及びデクリメント値を含む。或いは又、ハードウェアロジックを使用して、これらのステップを以下に述べるように遂行してもよい。
【００２６】
一実施形態では、電力マネージャー状態マシン２２０は、プロセッサ１００からデータを収集するのに使用される。１つ又は複数のアプリケーションを実行する間に、プロセッサ１００の推定リアルタイム電力消費が電力マネージャー状態マシン２２０へ搬送される。プロセッサ１００の電力消費を決定するのに種々の技術のいずれかが使用される。一実施形態において、オン・ダイ(on-die)電流センサが、引き出される電流の推定値を電力マネージャー状態テーブル２３０に与える。別の実施形態では、データは、選択されサンプリングされたコントロール及びデータ信号のバイナリ論理値又は重み付けされた数値を含む。データを収集した後に、電力マネージャー状態マシン２２０は、プロセッサ１００の電力消費を推定し、そしてプロセッサ１００の動作パラメータに対する変化を決定する。
【００２７】
種々の実施形態において、電力ターゲットがプロセッサ１００に指定される。電力ターゲットは、例えば、熱設計電力値である。熱設計電力（ＴＤＰ）は、熱設計ポイントとも称され、冷却システムがプロセッサ１００に対して効率的に消散できる最大電力量を表わす。プロセッサ１００において高電力アプリケーション又はウィルスが実行される場合には、電力マネージャー状態マシン２２０は、動作電圧、動作周波数、等に対して調整を行う。一般的に述べると、電力消費は、プロセッサ１００の動作周波数及び動作電圧に比例する。プロセッサ１００から更新された電力推定データを受け取るのに応答して、電力マネージャー状態マシン２２０は、電力性能状態（Ｐ状態）を多数の考えられるＰ状態から選択する。選択されたＰ状態は、最大性能状態と最小電力状態との間である。最大性能状態は、最大動作周波数に対応し、そして最小電力状態は、最小動作周波数に対応する。これら２つの状態間の中間の個別電力性能状態（Ｐ状態）は、動作周波数及び動作電圧の組み合わせに対する所与のスケール値を含む。
【００２８】
電力マネージャー状態マシン２２０により選択されたＰ状態は、所与の電力状態コードにより指示される。この電力状態コードは、電力状態テーブル２３０をインデックスするのに使用される。一実施形態において、電力状態テーブル２３０は、複数のフィールド２４２−２４８を各々含む複数のエントリ２４０ａ−２４０ｇを含む。フィールド２４２は、電力状態コードを含む。電力マネージャー状態マシンから送られる電力状態コードは、エントリ２４０ａ−２４０ｇの各々においてフィールド２４２に記憶された値と比較される。一致する電力状態コードを有するエントリ２４０ａ−２４０ｇのうちの所与のエントリは、他のフィールド２４４−２４８に記憶された１つ以上の値をプロセッサ１００に与えるのに使用される。フィールド２４４は、フィールド２４２に記憶された電力状態コードにより指示されたＰ状態に関連した動作周波数を記憶する。同様に、フィールド２４６は、フィールド２４２に記憶された電力状態コードによって指示されたＰ状態に関連した動作電圧を記憶する。
【００２９】
フィールド２４８は、電力スロットルコードを記憶する。電力スロットルコードは、プロセッサ１００により処理される特定サブセットのインストラクション形式に関連付けられる。特定サブセットのインストラクション形式は、候補インストラクション形式と称される。電力スロットルコードは、候補インストラクション形式に対するインストラクション発行限界を指示する。一例において、所与の電力スロットルコードは、パーセンテージとして表されたインストラクション発行限界を指示する。このパーセンテージは、所与のクロックサイクル数以内に候補インストラクション形式のインストラクションを発行することが許される最大クロックサイクル数として定義される。例えば、５０％のパーセンテージとは、２クロックサイクルごとに最大１クロックサイクルで、候補インストラクション形式のインストラクションを実行のために発行できることを指示する。６６％のパーセンテージとは、３クロックサイクルごとに最大２クロックサイクルで、候補インストラクション形式のインストラクションを実行のために発行できることを指示する。以下に述べるように、他の発行レート限界パーセンテージも持考えられ、意図される。プロセッサ１００におけるアプリケーションの実行中にＰ状態が変化するので、電力スロットルコードも変化して、より高い性能を与えるか又は電力消費を下げる。
【００３０】
候補インストラクション形式の所与のグループは、実行中に著しい電力を消費することが決定され又は推定される１つ以上のインストラクション形式を含む。例えば、シングルインストラクション・マルチデータ（ＳＩＭＤ）インストラクションは、典型的に、複数のベクトルエレメントを同時に処理するための広いデータレーンを有する。更に、１つ以上のＳＩＭＤインストラクションは、著しいレイテンシを有することがある。著しい数のデータレーンに対してレイテンシが８ないし１２個のクロックサイクル又はそれ以上というインストラクションは、インストラクション実行中に電源から著しい量の電流を引き出す。
【００３１】
識別された高電力消費のインストラクション形式の幾つかの例は、ＳＩＭＤフローティングポイント（ＦＰ）乗算−加算、ＳＩＭＤ  ＦＰ乗算、ＳＩＭＤ  ＦＰ加算、ＳＩＭＤＦＰ平方根、ＳＩＭＤ逆平方、ＳＩＭＤ加算、等を含む。他の高電力消費インストラクションも考えられ、意図される。候補インストラクション形式の所与のグループは、識別されたインストラクション形式の１つ以上を含む。候補インストラクション形式の所与のグループは、第２グループより大きく、そして電力消費の大きな減少に関連した所与の電力スロットルコードが電力状態テーブル２３０から選択されたときに強力なインストラクション発行レート限界に関連付けられる。
【００３２】
図３は、電力スロットルユニット３００の一実施形態を示す一般化されたブロック図である。一実施形態において、電力スロットルユニット３００は、プロセッサ１００内に配置され、そしてスケジューラ１２４と同じパイプライン段内に使用される。電力スロットルユニット３００は、スロットルテーブル３１０を含む。一実施形態において、スロットルテーブル３１０は、複数のフィールド３２２−３２８を各々含む複数のエントリ３２０ａ−３２０ｊを含む。フィールド３２２は、電力スロットルコードを記憶する。スロットルテーブル３１０は、電力スロットルコード値によりインデックスされる。一実施形態において、電力スロットルコード値は、状態コントロールレジスタのような構成レジスタに記憶される。この特定の構成レジスタは、設計者、オペレーティングシステム、等により書かれたソフトウェアアプリケーションのようなソフトウェアにより更新される。別の実施形態では、電力スロットルコードは、図２に示すように、電力状態テーブル２３０から送信される。電力スロットルコードを維持するための他のメカニズムも考えられ、意図される。維持される電力スロットルコードは、エントリ３２０ａ−３２０ｇの各々においてフィールド３２２に記憶された値と比較される。一致する電力スロットルコードを有するエントリ３２０ａ−３２０ｇのうちの所与のエントリを使用して、他のフィールド３２４−３２８に記憶された値をスロットルロジック３４０に与える。
【００３３】
電力スロットルテーブル３１０のフィールド３２４は、フィールド３２２に記憶された電力スロットルコードに関連した候補インストラクション形式の１つ以上の識別子を記憶する。フィールド３２６は、フィールド３２４に記憶された候補インストラクション形式及びフィールド３２２に記憶された電力スロットルコードの両方に関連したスレッシュホールドインストラクション発行カウントを記憶する。或いは又、フィールド３２６は、インストラクション発行カウントではなく、インストラクション発行レートのスレッシュホールド値を記憶してもよい。識別された候補インストラクション形式のインストラクションを実行するためにプロセッサ１００により遂行される処理の量に対応する他の測定を使用してもよい。フィールド３２６に記憶されたスレッシュホールド値は、識別された候補インストラクション形式に対してインストラクションレートをいつ制限すべきか決定するためにスロットルロジック３４０により使用される。スロットルロジック３４０は、このインストラクションレートを、フィールド３２８に記憶された制限値に制限する。
【００３４】
監視ユニット３３０は、１つ以上の候補インストラクション形式に対するインストラクション発行カウントを維持する。このカウント値は、クロックサイクルごとに更新され、そして所与の候補インストラクション形式のインストラクションがプロセッサ１００内の実行コア１３０へ発行されるかどうかに依存する。一実施形態では、候補インストラクション形式ごとに個々のカウントが維持される。別の実施形態では、２つ以上の候補インストラクション形式のグループに対してカウントが維持される。候補インストラクション形式の１つ以上のグループに所与の候補インストラクション形式が含まれる。
【００３５】
一実施形態において、所与の候補インストラクション形式に対するカウントは、所与の候補インストラクション形式のインストラクションが実行コア１３０へ発行されるところのクロックサイクルごとに１だけインクリメントされる。このカウンタは、所与の候補インストラクション形式のインストラクションが実行コア１３０へ発行されないクロックサイクルごとに１だけデクリメントされる。以下に更に述べるように、このような実施形態では、発行レート限界は、５０％である。一般的に、発行レート限界は、デクリメント値と、インクリメント及びデクリメント値の和との比に対応する。他の実施形態では、異なる発行レート限界を得るためにインクリメント及びデクリメント量に対して１以外の値が使用される。同様に、インクリメント値がデクリメント値と異なってもよい。例えば、所与の候補インストラクション形式のインストラクションが実行コア１３０へ発行される各クロックサイクルに対してインクリメント値を２にセットし、そして所与の候補インストラクション形式のインストラクションが実行コア１３０へ発行されない各クロックサイクルに対してデクリメント値を３にセットすることにより、６０％の発行レート限界が得られる。種々の他の実施形態では、インクリメント及びデクリメントの各値をプログラムすることができる。一実施形態では、このカウンタ内の値が、テーブル３１０のエントリ３２０ａ−３２０ｊのうちの選択されたエントリのフィールド３２６に記憶された値に達するか又はそれを越えると、スロットルロジック３４０は、フィールド３２４に記憶された識別子により識別された候補インストラクション形式のインストラクションの発行を阻止するためにスケジューラ１２４へのコントロール信号の送信を開始する。
【００３６】
一例において、テーブル３１０のエントリ３２０ａ−３２０ｊのうちの選択されたエントリにおいてフィールド３２４によりＳＩＭＤ  ＦＰ乗算−加算インストラクション形式が識別される。フィールド３２６には、１２８のスレッシュホールドカウント値が記憶される。監視ユニット３３０は、上述したように、１だけインクリメント及びデクリメントするカウンタを有する。監視ユニット３３０は、１２８のカウント値を検出すると、スロットルロジック３４０に通知する。テーブル３１０の同じ選択されたエントリのフィールド３２８は、５０％の発行レート限界を記憶する。スロットルロジックは、次のクロックサイクルにＳＩＭＤ  ＦＰ乗算−加算インストラクション形式のインストラクションの発行を阻止するためにコントロール信号をスケジューラ１２４へ送信する。この阻止の結果として、カウント値が１２７へデクリメントされる。それに続くクロックサイクルにおいて、カウントがスレッシュホールドより低いので、コントロール信号は、阻止を除去するようにスロットルロジック３４０によって変更される。ＳＩＭＤ  ＦＰ乗算−加算インストラクション形式のインストラクションが発行される。カウントは、再び、１２８へインクリメントされる。再び、コントロール信号がスケジューラ１２４へ送信されて、このインストラクション形式のインストラクションの発行を防止する。それ故、ＳＩＭＤ  ＦＰ乗算−加算に対する最大発行レートが５０％にセットされる。
【００３７】
一実施形態において、インクリメント及びデクリメントの量は、フィールド３２６に記憶されたスレッシュホールド値に達したときに変更される。前記の例を続けると、フィールド３２８が６６％の発行レート限界を記憶した場合には、デクリメント量が２へ変更される。ＳＩＭＤ  ＦＰ乗算−加算インストラクション形式のインストラクションがスロットルロジック３４０により阻止されると、その関連カウント値が、１２８から、１２７ではなく、１２６へデクリメントされる。それ故、２つのクロックサイクルに対して、この特定インストラクション形式のインストラクションは、１つのクロックサイクルに対して再び阻止される前に発行することが許される。ＳＩＭＤ  ＦＰ乗算−加算に対する最大発行レートは、６６％にセットされる。他の特定の発行レート限界を満足するために他のインクリメント及びデクリメント量が選択されてもよい。例えば、インクリメント量を２に変更し、そしてデクリメント量を１に保つことにより、３３％の発行レート限界が得られる。
【００３８】
一実施形態において、フィールド３２６に記憶された複数のスレッシュホールド値が存在する。そのような実施形態では、各発行レートを制限するために１つ以上の候補インストラクション形式を選択すること、及びその選択された１つ以上の候補インストラクション形式の各１つに対して発行レートを選択することは、どのインストラクション発行カウントがフィールド３２６に記憶された各スレッシュホールドを越えるかに基づく。
【００３９】
前記実施形態を続けると、候補インストラクション形式の２つ以上のグループがフィールド３２４において識別される。フィールド３２４において識別されるグループに関連したフィールド３２６に２つ以上のスレッシュホールド値が記憶される。候補インストラクション形式の２つ以上のグループの各々に対して発行レートを制限するのではなく、各インストラクション発行カウントがそのスレッシュホールドを越えるかどうかに基づいて各発行レートを制限するために２つ以上のグループのうちの所与のグループが選択される。そのような実施形態では、電力スロットルコードのサイズが制限され、そして電力スロットルコードを定義する上でより高い融通性が与えられる。
【００４０】
図４は、特定のインストラクション形式のインストラクション発行レートをコントロールする方法４００の一実施形態を示す一般化されたフローチャートである。この方法４００は、別の実施形態を導出するように当業者により変更することができる。又、この実施形態におけるステップは、順次に示されている。しかしながら、あるステップは、図示されたものとは異なる順序で行われてもよく、又、あるステップは、同時に遂行されてもよく、又、あるステップは、他のステップと組み合わされてもよく、そしてあるステップは、別の実施形態では存在しなくてもよい。
【００４１】
ブロック４０２において、所与のインストラクション形式を、絞り込むべき候補インストラクション形式として選択する。例えば、実行中に比較的高い電力消費に関連したインストラクション形式を絞り込みとして選択する。種々の実施形態では、フローティングポイントＳＩＭＤインストラクション、ロード／記憶インストラクション、及び他のものが候補となる。
【００４２】
ブロック４０４において、候補インストラクション形式に対する発行レート限界を決定するために、インクリメント値Ａ及びデクリメント値Ｂの両方を選択する。例えば、一実施形態において、発行レート限界は、比Ｂ／（Ａ＋Ｂ）に対応する。それ故、全サイクル数に対して候補インストラクション形式を発行するサイクルのパーセンテージとして表される所与の限界が選択される。例えば、電力スロットルユニット及びスケジューラを６０％の限界にセットし又は「ダイヤル」するために、２のインクリメント値及び３のデクリメント値が選択される。これらの選択された値は、３／（２＋３）、即ち６０％に等しい比を生じる。
【００４３】
一実施形態において、選択値Ａ及びＢは、特定のハードウェア構成レジスタを更新するユーザソフトウェアによって選択される。電力スロットルユニットは、この特定のハードウェア構成レジスタを読み取る。上述したように、プロセッサ１００の入力／出力（Ｉ／Ｏ）ピンは、ハードウェア構成レジスタへのアクセスを与える。或いは又、ユーザソフトウェアプログラム又はオペレーティングシステムのカーネルからの特定のインストラクションは、プロセッサ１００のハードウェアによって実行され、そして構成レジスタの特定ビットフィールドの特定の値で更新される。更に別の実施形態では、ハードウェアコントロールロジックがインクリメント及びデクリメント値を選択する。又、ある実施形態では、ハードウェアコントロールロジックが少なくともＰ状態値に基づいてこれらの値を選択する。
【００４４】
図４のブロック４０６において、発行される候補形式インストラクションのカウントに対するスレッシュホールドを選択する。又、このスレッシュホールドは、選択されたインクリメント及びデクリメント値に対して使用されるハードウェア構成レジスタの特定ビットフィールドにも記憶される。ブロック４０８において、現在阻止されていない形式のインストラクションをスケジューラから実行ユニットへ発行する。候補形式インストラクションがこのクロックサイクルに発行される場合には（条件ブロック４１０）、次いで、ブロック４１２において、候補形式インストラクション発行カウントをインクリメント値だけインクリメントする。このカウント値が、選択されたスレッシュホールドを越える場合には（条件ブロック４１４）、次いで、ブロック４１６において、スレッシュホールドに対応する候補形式インストラクションの発行をブロックする設定がなされる。これに続いて、方法４００のコントロールフローは、ブロック４０８へ戻る。他方、候補形式インストラクションがこのクロックサイクルに発行されない場合には（条件ブロック４１０）、次いで、ブロック４１８において、候補形式インストラクションの発行カウントをデクリメント値だけデクリメントする。種々の実施形態では、カウントは、最小値０である。
【００４５】
候補形式インストラクションが阻止され（条件ブロック４２０）、そしてこのカウント値が選択されたスレッシュホールドより低い場合には（条件ブロック４２２）、次いで、ブロック４２４において、候補形式インストラクションの発行の阻止を除去又はリセットする。これに続いて、方法４００のコントロールフローは、ブロック４０８へ戻る。阻止が除去されたことにより、候補形式インストラクションを発行のために選択する。候補形式インストラクションが阻止されず（条件ブロック４２０）、又はカウント値が選択されたスレッシュホールドより高い場合には（条件ブロック４２２）、方法４００のコントロールフローがブロック４０８へ戻る。
【００４６】
ブロック４０４及び４０６の以上の説明では、インクリメント値、デクリメント値及びスレッシュホールド値の個々の選択について述べた。或いは又、これらの値の特定の組み合わせがテーブルに記憶されてもよい。このテーブルにおいて特定のエントリを選択することにより特定の組み合わせを選択することは、先に述べたソフトウェア及びハードウェアメカニズムで遂行される。そのようなテーブルの１つの具現化について以下に述べる。
【００４７】
図５は、スロットルテーブル５００の一実施形態の一般化されたブロック図である。図示されたように、電力スロットルコードは、バイナリ値として記憶される。候補インストラクション形式は、対応するインストラクションを実行するために推定電力消費に基づいてグループ編成される。レイテンシは、電力消費の著しい差を区別するのに使用される。ここでは、ＳＩＭＤ  ＦＰインストラクション形式は、レイテンシによりグループ編成される。例えば、‘ｂ０００の電力スロットルコードが選択されると、８及び１２クロックサイクルのレイテンシをもつＳＩＭＤ  ＦＰインストラクション形式だけが潜在的なインストラクション発行絞り込みに対して選択される。絞り込みが開始すると、８及び１２クロックサイクルのレイテンシをもつ識別されたインストラクション形式に対して６６％の発行レート限界が使用される。
【００４８】
別の実施形態では、インストラクション発行絞り込みをいつ開始すべきか決定するのに使用されるスレッシュホールド値は、インストラクション発行カウントではなく、実際の発行レートである。例えば、スケジューラ１２４が、Ｙ個のクロックサイクル内に、識別された候補インストラクション形式のインストラクションをＸ個以上発行すると、スロットルロジック３４０は、Ｚ個のクロックサイクルごとに関連インストラクションを阻止する。Ｙ個のクロックサイクルごとに、関連インストラクションが発行されたかどうか指示する最後のＹ個のクロックサイクルの可動ウインドウが維持される。
【００４９】
一実施形態では、Ｙを整数とすれば、Ｙビットのサイズのシフトレジスタを使用して、最後のＹ個のクロックサイクルの可動ウインドウを維持する。関連候補インストラクション形式のインストラクションが実行コア１３０へ発行されるクロックサイクルごとにカウントＸがインクリメントされる。Ｙ個のクロックサイクルが経過すると、所与のクロックサイクル中に、候補インストラクション形式のインストラクションが実行コアへ発行されないときにカウントＸもデクリメントされ、所与のクロックサイクルは、現在クロックサイクルよりもＹクロックサイクル前に生じたものである。
【００５０】
スロットルテーブル３１０を再び参照すると、所与の電力スロットルコードに対するフィールド３２４−３２８は、各々、プログラム可能である。これらの値は、プログラムの実行が始まった後にそれらの初期値から変更される。同様に、所与の電力スロットルコードに対するテーブル５００内のフィールドも、各々、プログラム可能である。電力マネージャー状態マシン２２０から送られる電力状態コードと、電力スロットルコードとの間の相関も、プログラム可能である。ソフトウェアを経て、ユーザは、テーブル３１０又はテーブル５００内のエントリに対応する値を記憶する特定のコントロールレジスタを更新する。
【００５１】
図６は、インストラクション発行レートを制限する一実施形態を示す一般化されたブロック図である。図示されたように、この例では、３のカウントスレッシュホールドが使用される。いかなるカウント値が選択されてもよい。３のカウントスレッシュホールドは、例示を容易にするために使用される。スレッシュホールドにヒットする前に、インクリメント及びデクリメント量は、各々、値１である。５０％の発行レート限界が選択される。それ故、この例では、インクリメント及びデクリメント量は、スレッシュホールドに到達した後に１のままである。
【００５２】
クロックサイクル（ＣＣ）１では、識別された候補インストラクション形式の問題のあるインストラクションが実行コア１３０へ発行される。それ故、カウントは、０から１へインクリメントされる。同様に、ＣＣ２では、問題のあるインストラクションが発行され、そしてカウントがインクリメントされる。このとき、カウントは、２にインクリメントされる。ＣＣ３では、おそらく、問題のあるインストラクションがスケジューラ１２４内にないか、又はスケジューラ１２４内の選択ロジックが他のインストラクションを発行のために選択していることから、問題のあるインストラクションが選択されない。従って、カウンタは、２から１へデクリメントされる。
【００５３】
ＣＣ４及びＣＣ５の各々において、問題のあるインストラクションが発行され、そしてカウントがインクリメントされる。ＣＣ５では、カウントがスレッシュホールド値３に達する。それ故、スロットルロジック３４０は、識別された候補インストラクション形式の問題のあるインストラクションの発行を阻止するためにスケジューラ１２４へコントロール信号を送信する。ＣＣ６では、阻止のために問題のあるインストラクションが発行されず、カウントは、３から２へデクリメントされる。カウントがスレッシュホールドより低いので、阻止が除去される。ＣＣ７では、問題のあるインストラクションが発行され、そしてカウントがインクリメントされる。ＣＣ７では、カウントが再びスレッシュホールド値３に達する。ＣＣ８及びＣＣ９では、ＣＣ６及びＣＣ７で生じたように阻止及び発行が生じる。問題のあるインストラクションの発行レートは、２つのクロックサイクル当たり１つのインストラクションの発行、即ち時間の５０％という最大限界に到達する。
【００５４】
図７は、インストラクション発行レートを制限する別の実施形態を示す一般化されたブロック図である。図示されたように、この例でも、３のカウントスレッシュホールドが使用される。スレッシュホールドにヒットする前に、インクリメント量は、１であり、そしてデクリメント量は、１の値である。６６％の発行レート限界が選択される。それ故、この例では、スレッシュホールドに達した後に、デクリメント量が２に変化する。
【００５５】
ＣＣ１からＣＣ４において、問題のあるインストラクションが、スケジューラ１２４内の選択ロジック及び利用性に基づいて実行コア１３０へ発行される。カウントが維持されるが、ＣＣ５においてスレッシュホールド値に達するまで、問題のあるインストラクションの発行を阻止しない。そこで、カウントが、１ではなく、２だけデクリメントされる。ＣＣ６からＣＣ８において、問題のあるインストラクションが実行コア１３０に発行され、その間、カウントが１だけインクリメントされる。ＣＣ８では、再び、スレッシュホールドに達する。ＣＣ９では、問題のあるインストラクションの発行が阻止され、そしてカウントが、１ではなく、ここでは、２だけデクリメントされる。問題のあるインストラクションの発行レートは、３つのクロックサイクル当たり２つのインストラクションの発行、即ち時間の６６％という最大限界に達する。
【００５６】
図８は、発行レートを制限する更に別の実施形態を示す一般化されたブロック図である。図示されたように、この例でも、３のカウントスレッシュホールドが使用される。スレッシュホールドにヒットする前に、インクリメント量は、１であり、そしてデクリメント量は、１の値である。３３％の発行レート限界が選択される。それ故、この例では、スレッシュホールドに達した後に、インクリメント量が２に変化する。
【００５７】
ＣＣ１からＣＣ４において、問題のあるインストラクションが、スケジューラ１２４内の選択ロジック及び利用性に基づいて実行コア１３０へ発行される。カウントが維持されるが、ＣＣ５においてスレッシュホールド値に達するまで、問題のあるインストラクションの発行を阻止しない。そこで、カウントは、依然、１だけデクリメントされる。ＣＣ７では、カウントがスレッシュホールドより低いので、問題のあるインストラクションが実行コア１３０へ発行される。しかしながら、カウントは、ここでは、１ではなく、２だけインクリメントされる。カウントは、２から４に変化する。スレッシュホールドを越えるので、スロットルロジック３４０は、問題のあるインストラクションの発行を阻止するためにコントロール信号をスケジューラ１２４へ送信する。ＣＣ８では、スレッシュホールドに依然到達し、従って、問題のあるインストラクションは、依然、阻止される。問題のあるインストラクションに対する発行レートは、３つのクロックサイクル当たり１つのインストラクションの発行、即ち時間の３３％という最大限界に達する。
【００５８】
図９は、特定のインストラクション形式のインストラクション発行レートをコントロールする方法９００の一実施形態の一般化されたフローチャートである。方法９００は、別の実施形態を導出するように当業者により変更することができる。又、この実施形態におけるステップは、順次に示されている。しかしながら、あるステップは、図示されたものとは異なる順序で行われてもよく、又、あるステップは、同時に遂行されてもよく、又、あるステップは、他のステップと組み合わされてもよく、そしてあるステップは、別の実施形態では存在しなくてもよい。
【００５９】
図示された実施形態では、ブロック９０２において、所与のインストラクション形式を、絞り込むべき候補インストラクション形式として選択する。実行中に高い電力消費に関連したインストラクション形式を選択する。関連する高い電力消費は、著しいレイテンシ中に顕著な量の処理が遂行されることによるものである。フローティングポイントＳＩＭＤインストラクション、ロード／記憶インストラクション、及び他のものが候補となる。候補インストラクション形式の１つ以上のグループを選択する。
【００６０】
ブロック９０４において、１つ以上のソフトウェアアプリケーションの実行中に電力スロットルコードを決定する。一実施形態では、１つ以上のソフトウェアアプリケーションの実行中に推定される電力性能状態（Ｐ状態）に基づいて電力スロットルコードを選択する。別の実施形態では、ユーザによりソフトウェアを経て書かれた状態コントロールレジスタから電力スロットルコードを読み取る。候補インストラクション形式及び発行レート限界の所与のグループを選択するために電力スロットルコードの所与の値を選択する。一実施形態において、電力スロットルコードに基づいてインストラクション発行カウントの所与のスレッシュホールドを選択する。別の実施形態では、電力スロットルコードに基づいて、インストラクション発行カウントではなく、インストラクション発行レートの所与のスレッシュホールドを選択する。
【００６１】
ブロック９０６において、プログラム実行中に、１つ以上のインストラクション形式の選択されたグループごとにインストラクション発行カウントを維持する。このカウントは、プログラム実行前に決定された一定量だけインクリメント及びデクリメントされる。別の実施形態では、このカウントは、電力スロットルテーブル３１０のようなテーブルから読み取られた量だけインクリメント及びデクリメントされる。更に別の実施形態では、先に述べたカウントではなく、インストラクション発行レートが維持される。
【００６２】
維持されたカウント又はレートが所与のスレッシュホールドを越える場合には（条件ブロック９０８）、次いで、ブロック９１０において、おそらく絞り込むために、候補インストラクション形式の１つ以上のインストラクション形式の１つ以上のグループを選択する。発行絞り込みの量は、少なくとも電力スロットルコードに基づく。ブロック９１２において、選択された１つ以上のグループに対する発行レート限界を、少なくとも電力スロットルコードに基づいて選択する。ブロック９１４において、選択された１つ以上のグループのインストラクション発行レートを、それに関連する選択された発行レートに制限する。電力スロットルコードが変化しない場合には（条件ブロック９１６）、方法９００のコントロールフローは、ブロック９０６へ戻る。さもなければ、ブロック９１８において、インストラクション発行カウントのスレッシュホールドを、変更された電力スロットルコードに基づいて更新する。別の実施形態では、インストラクション発行レートのスレッシュホールドを、変更された電力スロットルコードに基づいて更新する。次いで、方法９００のコントロールフローは、ブロック９１８からブロック９０６へ進む。
【００６３】
以上、本発明の実施形態を詳細に説明したが、当業者であれば、以上の開示が理解されれば、多数の修正や変更が明らかとなろう。そのような変更や修正は、全て、特許請求の範囲内に網羅されることが意図される。
【符号の説明】
【００６４】
１００：プロセッサ
１０２：アドレス選択ロジック
１０４：ｉ−キャッシュ
１０６：次回フェッチプレディクタ
１０８：分岐方向プレディクタ
１１０：デコードユニット
１１２：コントロールフロー評価ブロック
１１４：ディスパッチキュー
１１６：マイクロコード
１１８：リネーマーアレイ
１２０：ＰＲ（フリーリスト）アロケータ
１２２：依存性合併ブロック
１２４：スケジューラ
１３０：実行コア
１３２：整数ＡＬＵ
１３４：整数ＡＬＵ／分岐ユニット
１３６：ＳＩＭＤ  ＦＰ加算ユニット
１３８：ＳＩＭＤ  ＦＰ乗算ユニット
１４０：ロード／記憶ユニット
１５０：電力スロットルユニット
２１０：電力マネージャー
２２０：電力マネージャー状態マシン
２３０：電力状態テーブル
２４０ａ、ｂ、ｑ：エントリ
２４２：電力状態コード
２４４：動作周波数
２４６：動作電圧
２４８：スロットルコード
２６０：ソフトウェアレイヤ
２７０：構成レジスタ
【図１】
0005853301.tif 000002
【図２】
0005853301.tif 000003
【図３】
0005853301.tif 000004
【図４】
0005853301.tif 000005
【図５】
0005853301.tif 000006
【図６】
0005853301.tif 000007
【図７】
0005853301.tif 000008
【図８】
0005853301.tif 000009
【図９】
0005853301.tif 000010