説明

プロセッサインストラクションの発行の絞り込み

【課題】選択された問題のあるインストラクションの発行を絞り込むことにより電力消費を減少するためのシステム及び方法を提供する。
【解決手段】プロセッサ内の電力スロットルユニットは、高電力消費推定値に基づいて選出される関連インストラクション形式に対するインストラクション発行カウントを維持する。電力スロットルユニットは、所与のインストラクション発行カウントが所与のスレッシュホールドを越えることを決定する。それに応答して、電力スロットルユニットは、各発行レートを制限するための所与のインストラクション形式を選択する。電力スロットルユニットは、その選択された所与のインストラクション形式の各々に対する発行レートを選出し、そしてその関連発行レートを、選出された発行レートに制限する。所与のインストラクション形式及び関連発行レート限界の選択は、プログラム可能である。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピューティングシステムに関するもので、より特定すれば、問題のある選択されたインストラクションの発行を絞り込むことにより電力消費を効率的に減少することに関する。
【背景技術】
【0002】
各世代の半導体プロセッサコアにおける装置及び金属ルートの幾何学的な大きさが減少しつつある。それ故、ダイ上の有効面積の所与のエリア内に多くの機能が設けられる。その結果、ラップトップコンピュータ、タブレットコンピュータ、スマートホン、ビデオカメラ、等の移動装置は、益々人気を得ている。典型的に、これら移動装置は、1つ以上のバッテリセルから電力を受けている。バッテリは、容量に限度があるから、定期的に外部充電器に接続して再充電される。これら移動装置の重大な問題は、電力消費である。電力消費が増加すると、それら装置のバッテリ寿命が低下し、再充電の頻度が増加する。
【0003】
ダイ上の集積回路の密度は、複数のパイプライン、大きなキャッシュ、及びより複雑なロジックと共に高くなるので、クロックサイクル当たり切り換わるノード及びバスの数が著しく増加する。それ故、電力消費が増加する。加えて、ソフトウェアアプリケーションは、ハードウェアを高い電力消散値に到達させる特定のコンピュータプログラムコードを実行する。そのようなコードは、偶発的に又は意図的に(例えば、電力ウィルス)これを行う。電力消散は、プログラムコード内に所与のインストラクション形式が複数発生することにより上昇し得る。この電力消散値は、チップの熱設計電力(TDP)又は最大チップ電力消散にも到達し又はそれを越えることもある。
【0004】
以上に加え、移動装置の冷却システムは、所与の熱設計電力(TDP)又は熱設計点に対して設計される。冷却システムは、半導体ダイの最大接合温度を越えることなくTDP値を消散し得る。しかしながら、所与のインストラクション形式が複数発生すると、電力消散が半導体チップのTDPを越え得る。更に、電源に対して電流制限があるが、これを越えることもある。電力モードがチップの動作モードを変更したりチップ内の特定ブロックをターンオフしたりしない場合には、バッテリが急速に放電し得る。更に、物理的なダメージも生じ得る。ピーク電力消散を管理する1つの解決策は、特定スレッシュホールドを越えないようにインストラクションの発行を単に制限することであるが、これは、全体的な性能の受け容れられない低下を招くことがある。
【発明の概要】
【発明が解決しようとする課題】
【0005】
以上のことから、選択されたインストラクションの発行を絞り込むことにより電力消費を減少するための効率的な方法及びメカニズムが要望される。
【課題を解決するための手段】
【0006】
選択されたインストラクションの発行を絞り込むことにより電力消費を減少するためのシステム及び方法が意図される。
【0007】
一実施形態において、プロセッサは、電力スロットルユニットを備えている。この電力スロットルユニットは、同じパイプライン段内でスケジューラとして使用される。電力スロットルユニットは、1つ以上のインストラクション形式に対して1つ以上のインストラクション発行カウントを維持する。インストラクション形式とは、プロセッサ内の実行コアにより実行されるサポートされるインストラクション形式のサブセットである。インストラクション形式は、それら形式のインストラクションを処理するための高電力消費推定値に基づいて選出される。例えば、フローティングポイント(FP)シングルインストラクション・マルチデータ(SIMD)インストラクション形式は、マルチサイクルのレイテンシ中にベクトルエレメントを処理するための広いデータレーンを有する。インストラクション発行カウントを維持する間に、電力スロットルユニットは、所与のインストラクション発行カウントが所与のスレッシュホールドを越えることを決定する。それに応答して、電力スロットルユニットは、各発行レートを制限するために1つ以上のインストラクション形式を選択する。
【0008】
1つ以上のインストラクション形式の選択は、電力状態推定に基づく。或いは又、この選択は、ソフトウェアを経てなされるユーザの変更に基づいてもよい。電力スロットルユニットは、選択された1つ以上の候補インストラクション形式の各々に対して発行レートを選出する。発行レートのこの選出は、特定のコントロールレジスタの電力状態推定又はソフトウェア更新にも基づく。電力スロットルユニットは、選択された1つ以上のインストラクション形式の各々に対する関連発行レートを各選出された発行レートに制限する。それ故、発行レートの制限は、変化してもよいし、又はプログラム可能でもよい。
【0009】
これら及び他の実施形態は、添付図面を参照して、以下に詳細に説明される。
【図面の簡単な説明】
【0010】
【図1】無秩序な実行を遂行するプロセッサコアの一実施形態の一般化されたブロック図である。
【図2】半導体チップの電力管理の一実施形態の一般化されたブロック図である。
【図3】電力スロットルユニットの一実施形態を示す一般化されたブロック図である。
【図4】特定のインストラクション形式のインストラクション発行レートをコントロールする方法の一実施形態を示す一般化されたフローチャートである。
【図5】スロットルテーブルの一実施形態を示す一般化されたブロック図である。
【図6】インストラクション発行レートを制限する一実施形態を示す一般化されたブロック図である。
【図7】インストラクション発行レートを制限する別の実施形態を示す一般化されたブロック図である。
【図8】インストラクション発行レートを制限する更に別の実施形態を示す一般化されたブロック図である。
【図9】特定のインストラクション形式のインストラクション発行レートをコントロールする方法の一実施形態の一般化されたフローチャートである。
【発明を実施するための形態】
【0011】
本発明は、種々の変更を受けそして別の形態でも実施できるが、その特定の実施形態を一例として添付図面に示して以下に詳細に説明する。しかしながら、添付図面及び詳細な説明は、本発明を、ここに開示する特定の形態に限定するものではなく、本発明は、特許請求の範囲に規定される本発明の精神及び範囲内に入る全ての変更、等効物及び代替え物を網羅することを理解されたい。又、本出願全体に使用される「〜してもよい(may)」という語は、許すという意味(即ち、〜の潜在性があるという意味)で使用されるもので、強制の意味(即ち、〜しなければならないという意味)ではない。同様に、「含む(include)」、「含んでいる(including)」及び「含む(includes)」という語は、含むことを意味するが、それに限定されない。
【0012】
種々のユニット、回路又は他のコンポーネントは、1つ又は複数のタスクを遂行するように「構成される」ものとして述べる。この点について、「構成される」とは、動作中に1つ又は複数のタスクを遂行する「回路を有する」ことを一般的に意味する構造を広く表現するものである。従って、ユニット/回路/コンポーネントは、そのユニット/回路/コンポーネントが現在オンでなくても、タスクを遂行するように構成することができる。一般的に、「構成される」に対応する構造を形成する回路は、ハードウェア回路を含む。同様に、種々のユニット/回路/コンポーネントは、説明の便宜上、1つ又は複数のタスクを遂行するものとして説明されてもよい。そのような説明は、「構成される」という句を含むものと解釈されねばならない。1つ以上のタスクを遂行するように構成されたユニット/回路/コンポーネントを表現する場合に、そのユニット/回路/コンポーネントに関して35U.S.C.§112、第6節の解釈を引用しないことが明確に意図される。
【0013】
以下の説明において、本発明を完全に理解するために幾つかの特定の細部について述べる。しかしながら、当業者であれば、これら特定の細部がなくても本発明を実施できることが明らかであろう。ある場合には、本発明を不明瞭にしないため、良く知られた回路、構造及び技術は詳細に示さない。
【0014】
図1は、無秩序な実行を遂行するプロセッサコア100の一実施形態を示す一般化されたブロック図である。プロセッサ100は、インストラクションを処理するために多段パイプラインを使用する。インストラクションキャッシュ(i−キャッシュ)104は、ソフトウェアアプリケーションのためのインストラクションを記憶する。アドレス選択ロジック102により搬送されるアドレスで指示される1つ以上のインストラクションがi−キャッシュ104からフェッチされる。i−キャッシュミスがない場合にはクロックサイクル当たりi−キャッシュ104から複数のインストラクションがフェッチされる。アドレスは、次回フェッチプレディクタ106によりインクリメントされる。分岐方向プレディクタ108が、次回フェッチプレディクタ106、及びその後のパイプライン段のコントロールフロー評価ロジック110の各々に結合される。プレディクタ106は、次に続くインストラクションを実行することからインストラクションストリームのフローを変更するインストラクションの情報を予想する。
【0015】
デコードユニット110は、フェッチされた複数のインストラクションのOPコードをデコードする。或いは又、インストラクションがマイクロインストラクション又はマイクロOPに分割されてもよい。ここで使用する「インストラクション」及び「マイクロOP」という語は、交換可能である。というのは、本発明は、各々の具現化を使用するアーキテクチャーで使用されるからである。デコードユニット110は、ディスパッチキュー114においてエントリを割り当てる。一実施形態では、コントロールフロー評価ブロック112は、アドレスセレクタ102におけるインストラクションのフェッチを変更する。例えば、無条件分岐OPコードに関連した絶対アドレス値がアドレスセレクタ102へ送られる。ディスパッチキュー114のインストラクションは、リネーマーアレイ118により再命名された関連オペランド及び行先識別子を有する。リネーマーアレイ118は、フリーリストアロケータ120から候補ネームを受け取る。
【0016】
依存性合併ブロック122は、受け取ったインストラクションに対する依存性ベクトルを発生する。手前のパイプライン段で選択された再命名された識別子は、インストラクション間の依存性を見出しそして指示するのに使用される。依存性合併ブロック122は、インストラクション及びそれに関連した再命名された識別子、プログラムカウンタ(PC)値、依存性ベクトル、等をスケジューラ124に与える。
【0017】
スケジューラ124は、インストラクションを、実行コア130において実行するためにスケジュールする。オペランドが得られ、ハードウェアリソースも得られるときには、インストラクションがスケジューラ124から実行コア130内のファンクションユニットの1つへ無秩序に発行される。スケジューラ124は、そのリソースオペランドをアーキテクチャーレジスタファイル(図示せず)又はオペランドバイパスロジックから読み取る。ソースオペランドは、実行コア130に与えられる。
【0018】
実行コア130は、スケジューラ124へ報告されるインストラクションの実行中に種々のイベントを検出する。その2つの例は、予想を誤った分岐インストラクションと、再生されるロード/記憶インストラクションとを含む。種々の例外が検出される。その2つの例は、非特権モードで実行される特権インストラクション又はメモリアクセスに対する保護例外と、アドレス変換なしに対する例外とを含む。例外は、それに対応する例外取り扱いルーチンを、例えば、マイクロコード116により実行させる。
【0019】
実行コアは、ロード/記憶ユニット140を含む。該ロード/記憶ユニット140は、記憶インストラクションに対応するアドレスを記憶するための記憶バッファ、記憶インストラクションに対応する記憶データを記憶するための記憶キュー、及びロードインストラクションに対するアドレス及びデータの両方を記憶するロードバッファを含む。ロード/記憶ユニット140は、データキャッシュ(図示せず)に接続される。プロセッサ100は、各i−キャッシュ104に対する変換ルックアサイドバッファ(TLB)、及びキャッシュアクセスを遂行するときに全メモリ変換を遂行するコストを回避するためのデータキャッシュを含む。
【0020】
実行コア130は、少なくとも、加算、減算、シフト、ビットごとの論理演算、回転、及び/又は他の機能を遂行する多数の計算ユニットを含む。ここに示す例では、実行コア130は、整数演算論理ユニット(ALU)132、整数ALU及び分岐分析ロジックの組み合わせ134、フローティングポイント加算・減算及びシングルインストラクション・マルチデータ(SIMD)計算ロジックの両方をもつフローティングポイントユニット136、並びにフローティングポイント乗算及びSIMD計算ロジックの両方をもつフローティングポイントユニット138を含む。
【0021】
SIMDインストラクションは、複数のデータレーンにおいて同じオペレーションを遂行する。SIMDインストラクションは、インストラクションセットアーキテクチャー(ISA)において他のインストラクションにより使用されるアーキテクチャーレジスタファイルからの個別のレジスタファイルを使用する。SIMDインストラクションに対するレジスタは、同じデータ形式のエレメントのベクトルとして使用される。SIMDインストラクションは、メディア加速度、信号処理及びグラフィックをサポートするのに使用される。プロセッサ100は、署名及び非署名信号、並びに倍精度フローティングポイントオペレーションの両方をサポートする。これらのSIMDインストラクションの1つ以上は、マルチサイクルレイテンシを有する。
【0022】
大量の処理及び長いレイテンシのために、特定のインストラクションを実行すると、電源から著しい量の電流が引き出されることがある。従って、それらの識別されたインストラクションは、著しい電力を消費する。それらの高電力インストラクションは、問題のあるインストラクションと称される。それら問題のあるインストラクションの発行レートは、チップにおける所与の電力消費レベルを維持するためにクロックサイクルごとに変更される。例えば、電力スロットル150は、問題のあるインストラクションの発行レートを監視する。適格な状態が生じたときに、電力スロットルは、問題のあるインストラクションの発行レートを、プログラム可能な減少レートに制限する。
【0023】
図2は、半導体チップの電力管理システム200の一実施形態を示す一般化されたブロック図である。種々の実施形態において、プロセッサ100は、電力スロットルユニット150を使用して特定のインストラクション形式の発行レートを制限するように構成される。電力スロットルユニット150は、ソフトウェア又はハードウェアによりコントロールされる。一実施形態において、プロセッサ100内の選出されたハードウェア構成レジスタ270内の特定ビットフィールドは、ソフトウェアレイヤ260によりスロットルコードで更新される。電力スロットルユニットは、スロットルコードを使用して、特定のインストラクション形式に対するインストラクション発行レート限界を決定する。ソフトウェアレイヤ260は、ユーザプログラム、オペレーティングシステムのカーネル、又は他のソフトウェアである。別の実施形態では、スロットルコード以外のパラメータ値を使用して、特定のインストラクション形式のインストラクション発行レートの限界をセットする。これら他のパラメータは、以下に詳細に述べる。更に別の実施形態では、電力マネージャー210は、電力スロットルユニット150により使用されるスロットルコード又は他のパラメータを調整して、特定のインストラクション形式のインストラクション発行レートの限界をセットする
【0024】
プロセッサ100は、集積回路(IC)である。種々の実施形態において、プロセッサ100は、オン・ダイ(on-die)インストラクション及びデータキャッシュを各々伴う1つ以上のコアを含む。プロセッサ100は、シングルパイプライン又はマルチパイプラインを伴うスーパースカラープロセッサである。別の実施形態では、プロセッサ100は、特定用途向けIC(ASIC)である。更に別の実施形態では、プロセッサ100は、システムオンチップ(SOC)上に1つ以上の計算ブロックを含む。プロセッサ100を具現化するために、いずれのトランジスタファミリーが使用されてもよい。例えば、金属酸化物半導体電界効果トランジスタ(MOSFET)及びバイポーラ接合トランジスタ(BJT)が含まれる。
【0025】
一実施形態において、ソフトウェアレイヤ260は、プロセッサ100内のハードウェア構成レジスタ270をスロットルコードで更新する。一実施形態では、プロセッサ100の入力/出力(I/O)ピンは、ハードウェア構成レジスタへのアクセスを与える。或いは又、ユーザソフトウェアプログラム又はオペレーティングシステムのカーネルからの特定のインストラクションがプロセッサ100のハードウェアにより実行され、構成レジスタを指定値で更新する。一例において、構成レジスタ270は、予約された雑多なビットフィールドを伴うスーパーバイザレベル例外取り扱いレジスタである。雑多なビットフィールドの指定部分は、スロットルコードを記憶するように注意して使用される。ユーザレベル及びスーパーバイザレベルの構成レジスタの他の例も使用できる。更に、ハードウェア構成レジスタ270には、他の値が記憶されてもよい。他の値の一例は、インストラクション発行レート限界を含む。他の例は、インストラクションカウントを維持しそしてインストラクション発行レート限界を発生するのに使用される以下に述べるインクリメント値及びデクリメント値を含む。或いは又、ハードウェアロジックを使用して、これらのステップを以下に述べるように遂行してもよい。
【0026】
一実施形態では、電力マネージャー状態マシン220は、プロセッサ100からデータを収集するのに使用される。1つ又は複数のアプリケーションを実行する間に、プロセッサ100の推定リアルタイム電力消費が電力マネージャー状態マシン220へ搬送される。プロセッサ100の電力消費を決定するのに種々の技術のいずれかが使用される。一実施形態において、オン・ダイ(on-die)電流センサが、引き出される電流の推定値を電力マネージャー状態テーブル230に与える。別の実施形態では、データは、選択されサンプリングされたコントロール及びデータ信号のバイナリ論理値又は重み付けされた数値を含む。データを収集した後に、電力マネージャー状態マシン220は、プロセッサ100の電力消費を推定し、そしてプロセッサ100の動作パラメータに対する変化を決定する。
【0027】
種々の実施形態において、電力ターゲットがプロセッサ100に指定される。電力ターゲットは、例えば、熱設計電力値である。熱設計電力(TDP)は、熱設計ポイントとも称され、冷却システムがプロセッサ100に対して効率的に消散できる最大電力量を表わす。プロセッサ100において高電力アプリケーション又はウィルスが実行される場合には、電力マネージャー状態マシン220は、動作電圧、動作周波数、等に対して調整を行う。一般的に述べると、電力消費は、プロセッサ100の動作周波数及び動作電圧に比例する。プロセッサ100から更新された電力推定データを受け取るのに応答して、電力マネージャー状態マシン220は、電力性能状態(P状態)を多数の考えられるP状態から選択する。選択されたP状態は、最大性能状態と最小電力状態との間である。最大性能状態は、最大動作周波数に対応し、そして最小電力状態は、最小動作周波数に対応する。これら2つの状態間の中間の個別電力性能状態(P状態)は、動作周波数及び動作電圧の組み合わせに対する所与のスケール値を含む。
【0028】
電力マネージャー状態マシン220により選択されたP状態は、所与の電力状態コードにより指示される。この電力状態コードは、電力状態テーブル230をインデックスするのに使用される。一実施形態において、電力状態テーブル230は、複数のフィールド242−248を各々含む複数のエントリ240a−240gを含む。フィールド242は、電力状態コードを含む。電力マネージャー状態マシンから送られる電力状態コードは、エントリ240a−240gの各々においてフィールド242に記憶された値と比較される。一致する電力状態コードを有するエントリ240a−240gのうちの所与のエントリは、他のフィールド244−248に記憶された1つ以上の値をプロセッサ100に与えるのに使用される。フィールド244は、フィールド242に記憶された電力状態コードにより指示されたP状態に関連した動作周波数を記憶する。同様に、フィールド246は、フィールド242に記憶された電力状態コードによって指示されたP状態に関連した動作電圧を記憶する。
【0029】
フィールド248は、電力スロットルコードを記憶する。電力スロットルコードは、プロセッサ100により処理される特定サブセットのインストラクション形式に関連付けられる。特定サブセットのインストラクション形式は、候補インストラクション形式と称される。電力スロットルコードは、候補インストラクション形式に対するインストラクション発行限界を指示する。一例において、所与の電力スロットルコードは、パーセンテージとして表されたインストラクション発行限界を指示する。このパーセンテージは、所与のクロックサイクル数以内に候補インストラクション形式のインストラクションを発行することが許される最大クロックサイクル数として定義される。例えば、50%のパーセンテージとは、2クロックサイクルごとに最大1クロックサイクルで、候補インストラクション形式のインストラクションを実行のために発行できることを指示する。66%のパーセンテージとは、3クロックサイクルごとに最大2クロックサイクルで、候補インストラクション形式のインストラクションを実行のために発行できることを指示する。以下に述べるように、他の発行レート限界パーセンテージも持考えられ、意図される。プロセッサ100におけるアプリケーションの実行中にP状態が変化するので、電力スロットルコードも変化して、より高い性能を与えるか又は電力消費を下げる。
【0030】
候補インストラクション形式の所与のグループは、実行中に著しい電力を消費することが決定され又は推定される1つ以上のインストラクション形式を含む。例えば、シングルインストラクション・マルチデータ(SIMD)インストラクションは、典型的に、複数のベクトルエレメントを同時に処理するための広いデータレーンを有する。更に、1つ以上のSIMDインストラクションは、著しいレイテンシを有することがある。著しい数のデータレーンに対してレイテンシが8ないし12個のクロックサイクル又はそれ以上というインストラクションは、インストラクション実行中に電源から著しい量の電流を引き出す。
【0031】
識別された高電力消費のインストラクション形式の幾つかの例は、SIMDフローティングポイント(FP)乗算−加算、SIMD FP乗算、SIMD FP加算、SIMDFP平方根、SIMD逆平方、SIMD加算、等を含む。他の高電力消費インストラクションも考えられ、意図される。候補インストラクション形式の所与のグループは、識別されたインストラクション形式の1つ以上を含む。候補インストラクション形式の所与のグループは、第2グループより大きく、そして電力消費の大きな減少に関連した所与の電力スロットルコードが電力状態テーブル230から選択されたときに強力なインストラクション発行レート限界に関連付けられる。
【0032】
図3は、電力スロットルユニット300の一実施形態を示す一般化されたブロック図である。一実施形態において、電力スロットルユニット300は、プロセッサ100内に配置され、そしてスケジューラ124と同じパイプライン段内に使用される。電力スロットルユニット300は、スロットルテーブル310を含む。一実施形態において、スロットルテーブル310は、複数のフィールド322−328を各々含む複数のエントリ320a−320jを含む。フィールド322は、電力スロットルコードを記憶する。スロットルテーブル310は、電力スロットルコード値によりインデックスされる。一実施形態において、電力スロットルコード値は、状態コントロールレジスタのような構成レジスタに記憶される。この特定の構成レジスタは、設計者、オペレーティングシステム、等により書かれたソフトウェアアプリケーションのようなソフトウェアにより更新される。別の実施形態では、電力スロットルコードは、図2に示すように、電力状態テーブル230から送信される。電力スロットルコードを維持するための他のメカニズムも考えられ、意図される。維持される電力スロットルコードは、エントリ320a−320gの各々においてフィールド322に記憶された値と比較される。一致する電力スロットルコードを有するエントリ320a−320gのうちの所与のエントリを使用して、他のフィールド324−328に記憶された値をスロットルロジック340に与える。
【0033】
電力スロットルテーブル310のフィールド324は、フィールド322に記憶された電力スロットルコードに関連した候補インストラクション形式の1つ以上の識別子を記憶する。フィールド326は、フィールド324に記憶された候補インストラクション形式及びフィールド322に記憶された電力スロットルコードの両方に関連したスレッシュホールドインストラクション発行カウントを記憶する。或いは又、フィールド326は、インストラクション発行カウントではなく、インストラクション発行レートのスレッシュホールド値を記憶してもよい。識別された候補インストラクション形式のインストラクションを実行するためにプロセッサ100により遂行される処理の量に対応する他の測定を使用してもよい。フィールド326に記憶されたスレッシュホールド値は、識別された候補インストラクション形式に対してインストラクションレートをいつ制限すべきか決定するためにスロットルロジック340により使用される。スロットルロジック340は、このインストラクションレートを、フィールド328に記憶された制限値に制限する。
【0034】
監視ユニット330は、1つ以上の候補インストラクション形式に対するインストラクション発行カウントを維持する。このカウント値は、クロックサイクルごとに更新され、そして所与の候補インストラクション形式のインストラクションがプロセッサ100内の実行コア130へ発行されるかどうかに依存する。一実施形態では、候補インストラクション形式ごとに個々のカウントが維持される。別の実施形態では、2つ以上の候補インストラクション形式のグループに対してカウントが維持される。候補インストラクション形式の1つ以上のグループに所与の候補インストラクション形式が含まれる。
【0035】
一実施形態において、所与の候補インストラクション形式に対するカウントは、所与の候補インストラクション形式のインストラクションが実行コア130へ発行されるところのクロックサイクルごとに1だけインクリメントされる。このカウンタは、所与の候補インストラクション形式のインストラクションが実行コア130へ発行されないクロックサイクルごとに1だけデクリメントされる。以下に更に述べるように、このような実施形態では、発行レート限界は、50%である。一般的に、発行レート限界は、デクリメント値と、インクリメント及びデクリメント値の和との比に対応する。他の実施形態では、異なる発行レート限界を得るためにインクリメント及びデクリメント量に対して1以外の値が使用される。同様に、インクリメント値がデクリメント値と異なってもよい。例えば、所与の候補インストラクション形式のインストラクションが実行コア130へ発行される各クロックサイクルに対してインクリメント値を2にセットし、そして所与の候補インストラクション形式のインストラクションが実行コア130へ発行されない各クロックサイクルに対してデクリメント値を3にセットすることにより、60%の発行レート限界が得られる。種々の他の実施形態では、インクリメント及びデクリメントの各値をプログラムすることができる。一実施形態では、このカウンタ内の値が、テーブル310のエントリ320a−320jのうちの選択されたエントリのフィールド326に記憶された値に達するか又はそれを越えると、スロットルロジック340は、フィールド324に記憶された識別子により識別された候補インストラクション形式のインストラクションの発行を阻止するためにスケジューラ124へのコントロール信号の送信を開始する。
【0036】
一例において、テーブル310のエントリ320a−320jのうちの選択されたエントリにおいてフィールド324によりSIMD FP乗算−加算インストラクション形式が識別される。フィールド326には、128のスレッシュホールドカウント値が記憶される。監視ユニット330は、上述したように、1だけインクリメント及びデクリメントするカウンタを有する。監視ユニット330は、128のカウント値を検出すると、スロットルロジック340に通知する。テーブル310の同じ選択されたエントリのフィールド328は、50%の発行レート限界を記憶する。スロットルロジックは、次のクロックサイクルにSIMD FP乗算−加算インストラクション形式のインストラクションの発行を阻止するためにコントロール信号をスケジューラ124へ送信する。この阻止の結果として、カウント値が127へデクリメントされる。それに続くクロックサイクルにおいて、カウントがスレッシュホールドより低いので、コントロール信号は、阻止を除去するようにスロットルロジック340によって変更される。SIMD FP乗算−加算インストラクション形式のインストラクションが発行される。カウントは、再び、128へインクリメントされる。再び、コントロール信号がスケジューラ124へ送信されて、このインストラクション形式のインストラクションの発行を防止する。それ故、SIMD FP乗算−加算に対する最大発行レートが50%にセットされる。
【0037】
一実施形態において、インクリメント及びデクリメントの量は、フィールド326に記憶されたスレッシュホールド値に達したときに変更される。前記の例を続けると、フィールド328が66%の発行レート限界を記憶した場合には、デクリメント量が2へ変更される。SIMD FP乗算−加算インストラクション形式のインストラクションがスロットルロジック340により阻止されると、その関連カウント値が、128から、127ではなく、126へデクリメントされる。それ故、2つのクロックサイクルに対して、この特定インストラクション形式のインストラクションは、1つのクロックサイクルに対して再び阻止される前に発行することが許される。SIMD FP乗算−加算に対する最大発行レートは、66%にセットされる。他の特定の発行レート限界を満足するために他のインクリメント及びデクリメント量が選択されてもよい。例えば、インクリメント量を2に変更し、そしてデクリメント量を1に保つことにより、33%の発行レート限界が得られる。
【0038】
一実施形態において、フィールド326に記憶された複数のスレッシュホールド値が存在する。そのような実施形態では、各発行レートを制限するために1つ以上の候補インストラクション形式を選択すること、及びその選択された1つ以上の候補インストラクション形式の各1つに対して発行レートを選択することは、どのインストラクション発行カウントがフィールド326に記憶された各スレッシュホールドを越えるかに基づく。
【0039】
前記実施形態を続けると、候補インストラクション形式の2つ以上のグループがフィールド324において識別される。フィールド324において識別されるグループに関連したフィールド326に2つ以上のスレッシュホールド値が記憶される。候補インストラクション形式の2つ以上のグループの各々に対して発行レートを制限するのではなく、各インストラクション発行カウントがそのスレッシュホールドを越えるかどうかに基づいて各発行レートを制限するために2つ以上のグループのうちの所与のグループが選択される。そのような実施形態では、電力スロットルコードのサイズが制限され、そして電力スロットルコードを定義する上でより高い融通性が与えられる。
【0040】
図4は、特定のインストラクション形式のインストラクション発行レートをコントロールする方法400の一実施形態を示す一般化されたフローチャートである。この方法400は、別の実施形態を導出するように当業者により変更することができる。又、この実施形態におけるステップは、順次に示されている。しかしながら、あるステップは、図示されたものとは異なる順序で行われてもよく、又、あるステップは、同時に遂行されてもよく、又、あるステップは、他のステップと組み合わされてもよく、そしてあるステップは、別の実施形態では存在しなくてもよい。
【0041】
ブロック402において、所与のインストラクション形式を、絞り込むべき候補インストラクション形式として選択する。例えば、実行中に比較的高い電力消費に関連したインストラクション形式を絞り込みとして選択する。種々の実施形態では、フローティングポイントSIMDインストラクション、ロード/記憶インストラクション、及び他のものが候補となる。
【0042】
ブロック404において、候補インストラクション形式に対する発行レート限界を決定するために、インクリメント値A及びデクリメント値Bの両方を選択する。例えば、一実施形態において、発行レート限界は、比B/(A+B)に対応する。それ故、全サイクル数に対して候補インストラクション形式を発行するサイクルのパーセンテージとして表される所与の限界が選択される。例えば、電力スロットルユニット及びスケジューラを60%の限界にセットし又は「ダイヤル」するために、2のインクリメント値及び3のデクリメント値が選択される。これらの選択された値は、3/(2+3)、即ち60%に等しい比を生じる。
【0043】
一実施形態において、選択値A及びBは、特定のハードウェア構成レジスタを更新するユーザソフトウェアによって選択される。電力スロットルユニットは、この特定のハードウェア構成レジスタを読み取る。上述したように、プロセッサ100の入力/出力(I/O)ピンは、ハードウェア構成レジスタへのアクセスを与える。或いは又、ユーザソフトウェアプログラム又はオペレーティングシステムのカーネルからの特定のインストラクションは、プロセッサ100のハードウェアによって実行され、そして構成レジスタの特定ビットフィールドの特定の値で更新される。更に別の実施形態では、ハードウェアコントロールロジックがインクリメント及びデクリメント値を選択する。又、ある実施形態では、ハードウェアコントロールロジックが少なくともP状態値に基づいてこれらの値を選択する。
【0044】
図4のブロック406において、発行される候補形式インストラクションのカウントに対するスレッシュホールドを選択する。又、このスレッシュホールドは、選択されたインクリメント及びデクリメント値に対して使用されるハードウェア構成レジスタの特定ビットフィールドにも記憶される。ブロック408において、現在阻止されていない形式のインストラクションをスケジューラから実行ユニットへ発行する。候補形式インストラクションがこのクロックサイクルに発行される場合には(条件ブロック410)、次いで、ブロック412において、候補形式インストラクション発行カウントをインクリメント値だけインクリメントする。このカウント値が、選択されたスレッシュホールドを越える場合には(条件ブロック414)、次いで、ブロック416において、スレッシュホールドに対応する候補形式インストラクションを発行するブロックがセットされる。これに続いて、方法400のコントロールフローは、ブロック408へ戻る。他方、候補形式インストラクションがこのクロックサイクルに発行されない場合には(条件ブロック410)、次いで、ブロック418において、候補形式インストラクションの発行カウントをデクリメント値だけデクリメントする。種々の実施形態では、カウントは、最小値0である。
【0045】
候補形式インストラクションが阻止され(条件ブロック420)、そしてこのカウント値が選択されたスレッシュホールドより低い場合には(条件ブロック422)、次いで、ブロック424において、候補形式インストラクションの発行の阻止を除去又はリセットする。これに続いて、方法400のコントロールフローは、ブロック408へ戻る。阻止が除去されたことにより、候補形式インストラクションを発行のために選択する。候補形式インストラクションが阻止されず(条件ブロック420)、又はカウント値が選択されたスレッシュホールドより高い場合には(条件ブロック422)、方法400のコントロールフローがブロック408へ戻る。
【0046】
ブロック404及び406の以上の説明では、インクリメント値、デクリメント値及びスレッシュホールド値の個々の選択について述べた。或いは又、これらの値の特定の組み合わせがテーブルに記憶されてもよい。このテーブルにおいて特定のエントリを選択することにより特定の組み合わせを選択することは、先に述べたソフトウェア及びハードウェアメカニズムで遂行される。そのようなテーブルの1つの具現化について以下に述べる。
【0047】
図5は、スロットルテーブル500の一実施形態の一般化されたブロック図である。図示されたように、電力スロットルコードは、バイナリ値として記憶される。候補インストラクション形式は、対応するインストラクションを実行するために推定電力消費に基づいてグループ編成される。レイテンシは、電力消費の著しい差を区別するのに使用される。ここでは、SIMD FPインストラクション形式は、レイテンシによりグループ編成される。例えば、‘b000の電力スロットルコードが選択されると、8及び12クロックサイクルのレイテンシをもつSIMD FPインストラクション形式だけが潜在的なインストラクション発行絞り込みに対して選択される。絞り込みが開始すると、8及び12クロックサイクルのレイテンシをもつ識別されたインストラクション形式に対して66%の発行レート限界が使用される。
【0048】
別の実施形態では、インストラクション発行絞り込みをいつ開始すべきか決定するのに使用されるスレッシュホールド値は、インストラクション発行カウントではなく、実際の発行レートである。例えば、スケジューラ124が、Y個のクロックサイクル内に、識別された候補インストラクション形式のインストラクションをX個以上発行すると、スロットルロジック340は、Z個のクロックサイクルごとに関連インストラクションを阻止する。Y個のクロックサイクルごとに、関連インストラクションが発行されたかどうか指示する最後のY個のクロックサイクルの可動ウインドウが維持される。
【0049】
一実施形態では、Yを整数とすれば、Yビットのサイズのシフトレジスタを使用して、最後のY個のクロックサイクルの可動ウインドウを維持する。関連候補インストラクション形式のインストラクションが実行コア130へ発行されるクロックサイクルごとにカウントXがインクリメントされる。Y個のクロックサイクルが経過すると、所与のクロックサイクル中に、候補インストラクション形式のインストラクションが実行コアへ発行されないときにカウントXもデクリメントされ、所与のクロックサイクルは、現在クロックサイクルよりもYクロックサイクル前に生じたものである。
【0050】
スロットルテーブル310を再び参照すると、所与の電力スロットルコードに対するフィールド324−328は、各々、プログラム可能である。これらの値は、プログラムの実行が始まった後にそれらの初期値から変更される。同様に、所与の電力スロットルコードに対するテーブル500内のフィールドも、各々、プログラム可能である。電力マネージャー状態マシン220から送られる電力状態コードと、電力スロットルコードとの間の相関も、プログラム可能である。ソフトウェアを経て、ユーザは、テーブル310又はテーブル500内のエントリに対応する値を記憶する特定のコントロールレジスタを更新する。
【0051】
図6は、インストラクション発行レートを制限する一実施形態を示す一般化されたブロック図である。図示されたように、この例では、3のカウントスレッシュホールドが使用される。いかなるカウント値が選択されてもよい。3のカウントスレッシュホールドは、例示を容易にするために使用される。スレッシュホールドにヒットする前に、インクリメント及びデクリメント量は、各々、値1である。50%の発行レート限界が選択される。それ故、この例では、インクリメント及びデクリメント量は、スレッシュホールドに到達した後に1のままである。
【0052】
クロックサイクル(CC)1では、識別された候補インストラクション形式の問題のあるインストラクションが実行コア130へ発行される。それ故、カウントは、0から1へインクリメントされる。同様に、CC2では、問題のあるインストラクションが発行され、そしてカウントがインクリメントされる。このとき、カウントは、2にインクリメントされる。CC3では、おそらく、問題のあるインストラクションがスケジューラ124内にないか、又はスケジューラ124内の選択ロジックが他のインストラクションを発行のために選択していることから、問題のあるインストラクションが選択されない。従って、カウンタは、2から1へデクリメントされる。
【0053】
CC4及びCC5の各々において、問題のあるインストラクションが発行され、そしてカウントがインクリメントされる。CC5では、カウントがスレッシュホールド値3に達する。それ故、スロットルロジック340は、識別された候補インストラクション形式の問題のあるインストラクションの発行を阻止するためにスケジューラ124へコントロール信号を送信する。CC6では、阻止のために問題のあるインストラクションが発行されず、カウントは、3から2へデクリメントされる。カウントがスレッシュホールドより低いので、阻止が除去される。CC7では、問題のあるインストラクションが発行され、そしてカウントがインクリメントされる。CC7では、カウントが再びスレッシュホールド値3に達する。CC8及びCC9では、CC6及びCC7で生じたように阻止及び発行が生じる。問題のあるインストラクションの発行レートは、2つのクロックサイクル当たり1つのインストラクションの発行、即ち時間の50%という最大限界に到達する。
【0054】
図7は、インストラクション発行レートを制限する別の実施形態を示す一般化されたブロック図である。図示されたように、この例でも、3のカウントスレッシュホールドが使用される。スレッシュホールドにヒットする前に、インクリメント量は、1であり、そしてデクリメント量は、1の値である。66%の発行レート限界が選択される。それ故、この例では、スレッシュホールドに達した後に、デクリメント量が2に変化する。
【0055】
CC1からCC4において、問題のあるインストラクションが、スケジューラ124内の選択ロジック及び利用性に基づいて実行コア130へ発行される。カウントが維持されるが、CC5においてスレッシュホールド値に達するまで、問題のあるインストラクションの発行を阻止しない。そこで、カウントが、1ではなく、2だけデクリメントされる。CC6からCC8において、問題のあるインストラクションが実行コア130に発行され、その間、カウントが1だけインクリメントされる。CC8では、再び、スレッシュホールドに達する。CC9では、問題のあるインストラクションの発行が阻止され、そしてカウントが、1ではなく、ここでは、2だけデクリメントされる。問題のあるインストラクションの発行レートは、3つのクロックサイクル当たり2つのインストラクションの発行、即ち時間の66%という最大限界に達する。
【0056】
図8は、発行レートを制限する更に別の実施形態を示す一般化されたブロック図である。図示されたように、この例でも、3のカウントスレッシュホールドが使用される。スレッシュホールドにヒットする前に、インクリメント量は、1であり、そしてデクリメント量は、1の値である。33%の発行レート限界が選択される。それ故、この例では、スレッシュホールドに達した後に、インクリメント量が2に変化する。
【0057】
CC1からCC4において、問題のあるインストラクションが、スケジューラ124内の選択ロジック及び利用性に基づいて実行コア130へ発行される。カウントが維持されるが、CC5においてスレッシュホールド値に達するまで、問題のあるインストラクションの発行を阻止しない。そこで、カウントは、依然、1だけデクリメントされる。CC7では、カウントがスレッシュホールドより低いので、問題のあるインストラクションが実行コア130へ発行される。しかしながら、カウントは、ここでは、1ではなく、2だけインクリメントされる。カウントは、2から4に変化する。スレッシュホールドを越えるので、スロットルロジック340は、問題のあるインストラクションの発行を阻止するためにコントロール信号をスケジューラ124へ送信する。CC8では、スレッシュホールドに依然到達し、従って、問題のあるインストラクションは、依然、阻止される。問題のあるインストラクションに対する発行レートは、3つのクロックサイクル当たり1つのインストラクションの発行、即ち時間の33%という最大限界に達する。
【0058】
図9は、特定のインストラクション形式のインストラクション発行レートをコントロールする方法900の一実施形態の一般化されたフローチャートである。方法900は、別の実施形態を導出するように当業者により変更することができる。又、この実施形態におけるステップは、順次に示されている。しかしながら、あるステップは、図示されたものとは異なる順序で行われてもよく、又、あるステップは、同時に遂行されてもよく、又、あるステップは、他のステップと組み合わされてもよく、そしてあるステップは、別の実施形態では存在しなくてもよい。
【0059】
図示された実施形態では、ブロック902において、所与のインストラクション形式を、絞り込むべき候補インストラクション形式として選択する。実行中に高い電力消費に関連したインストラクション形式を選択する。関連する高い電力消費は、著しいレイテンシ中に顕著な量の処理が遂行されることによるものである。フローティングポイントSIMDインストラクション、ロード/記憶インストラクション、及び他のものが候補となる。候補インストラクション形式の1つ以上のグループを選択する。
【0060】
ブロック904において、1つ以上のソフトウェアアプリケーションの実行中に電力スロットルコードを決定する。一実施形態では、1つ以上のソフトウェアアプリケーションの実行中に推定される電力性能状態(P状態)に基づいて電力スロットルコードを選択する。別の実施形態では、ユーザによりソフトウェアを経て書かれた状態コントロールレジスタから電力スロットルコードを読み取る。候補インストラクション形式及び発行レート限界の所与のグループを選択するために電力スロットルコードの所与の値を選択する。一実施形態において、電力スロットルコードに基づいてインストラクション発行カウントの所与のスレッシュホールドを選択する。別の実施形態では、電力スロットルコードに基づいて、インストラクション発行カウントではなく、インストラクション発行レートの所与のスレッシュホールドを選択する。
【0061】
ブロック906において、プログラム実行中に、1つ以上のインストラクション形式の選択されたグループごとにインストラクション発行カウントを維持する。このカウントは、プログラム実行前に決定された一定量だけインクリメント及びデクリメントされる。別の実施形態では、このカウントは、電力スロットルテーブル310のようなテーブルから読み取られた量だけインクリメント及びデクリメントされる。更に別の実施形態では、先に述べたカウントではなく、インストラクション発行レートが維持される。
【0062】
維持されたカウント又はレートが所与のスレッシュホールドを越える場合には(条件ブロック908)、次いで、ブロック910において、おそらく絞り込むために、候補インストラクション形式の1つ以上のインストラクション形式の1つ以上のグループを選択する。発行絞り込みの量は、少なくとも電力スロットルコードに基づく。ブロック912において、選択された1つ以上のグループに対する発行レート限界を、少なくとも電力スロットルコードに基づいて選択する。ブロック914において、選択された1つ以上のグループのインストラクション発行レートを、それに関連する選択された発行レートに制限する。電力スロットルコードが変化しない場合には(条件ブロック916)、方法900のコントロールフローは、ブロック906へ戻る。さもなければ、ブロック918において、インストラクション発行カウントのスレッシュホールドを、変更された電力スロットルコードに基づいて更新する。別の実施形態では、インストラクション発行レートのスレッシュホールドを、変更された電力スロットルコードに基づいて更新する。次いで、方法900のコントロールフローは、ブロック918からブロック906へ進む。
【0063】
以上、本発明の実施形態を詳細に説明したが、当業者であれば、以上の開示が理解されれば、多数の修正や変更が明らかとなろう。そのような変更や修正は、全て、特許請求の範囲内に網羅されることが意図される。
【符号の説明】
【0064】
100:プロセッサ
102:アドレス選択ロジック
104:i−キャッシュ
106:次回フェッチプレディクタ
108:分岐方向プレディクタ
110:デコードユニット
112:コントロールフロー評価ブロック
114:ディスパッチキュー
116:マイクロコード
118:リネーマーアレイ
120:PR(フリーリスト)アロケータ
122:依存性合併ブロック
124:スケジューラ
130:実行コア
132:整数ALU
134:整数ALU/分岐ユニット
136:SIMD FP加算ユニット
138:SIMD FP乗算ユニット
140:ロード/記憶ユニット
150:電力スロットルユニット
210:電力マネージャー
220:電力マネージャー状態マシン
230:電力状態テーブル
240a、b、q:エントリ
242:電力状態コード
244:動作周波数
246:動作電圧
248:スロットルコード
260:ソフトウェアレイヤ
270:構成レジスタ

【特許請求の範囲】
【請求項1】
インストラクションを選択して発行するよう構成されたスケジューラと、
前記発行されたインストラクションを受け取って実行するよう構成された実行コアと、
電力スロットルユニットと、
を備え、前記電力スロットルユニットは、
1つ以上のインストラクション形式に対する1つ以上のインストラクション発行カウントを維持し、
前記1つ以上のインストラクションカウントのうちの所与のインストラクション発行カウントがスレッシュホールドを越えることを決定するのに応答して、
前記1つ以上のインストラクション形式のうちの少なくとも1つのインストラクション形式を限定インストラクション発行レートに対して選択し、
前記少なくとも1つのインストラクション形式に対する新たな発行レートを選出する、
ように構成された、プロセッサ。
【請求項2】
前記電力スロットルユニットは、更に、前記選択及び選出を、ソフトウェアにより書かれた電力スロットルコードに基づいて遂行するように構成された、請求項1に記載のプロセッサ。
【請求項3】
前記電力スロットルユニットは、更に、前記選択及び選出を、前記プロセッサの動作電力状態に基づいて遂行するように構成された、請求項1に記載のプロセッサ。
【請求項4】
前記電力スロットルユニットは、更に、前記1つ以上のインストラクション形式の各々に対する各スレッシュホールドを前記プロセッサの動作電力状態に基づいて選択するように構成された、請求項3に記載のプロセッサ。
【請求項5】
前記電力スロットルユニットは、更に、前記選択及び選出を、どのインストラクション発行カウントが各スレッシュホールドを越えたかに更に基づいて遂行するように構成された、請求項3に記載のプロセッサ。
【請求項6】
前記所与のインストラクション発行カウントを維持することは、
関連インストラクション形式のインストラクションが前記実行コアへ発行されるクロックサイクルごとに前記所与のインストラクション発行カウントを第1の量だけインクリメントし、
関連インストラクション形式のインストラクションが前記実行コアへ発行されないクロックサイクルごとに前記所与のインストラクション発行カウントを第2の量だけデクリメントする、
ことを含む請求項3に記載のプロセッサ。
【請求項7】
前記電力スロットルユニットは、更に、前記決定に応答して、前記第1の量及び第2の量の1つ以上を変更するように構成された、請求項6に記載のプロセッサ。
【請求項8】
前記インストラクション形式は、シングルインストラクション・マルチデータ(SIMD)インストラクションを含む、請求項6に記載のプロセッサ。
【請求項9】
1つ以上のインストラクション形式に対する1つ以上のインストラクション発行カウントを維持する段階と、
前記1つ以上のインストラクション発行カウントのうちの所与のインストラクション発行カウントが所与のスレッシュホールドを越えることを決定する段階と、
前記決定に応答して、
各発行レートを制限するための1つ以上のインストラクション形式を選択し、
その選択された1つ以上のインストラクション形式の各々に対して発行レートを選出し、
前記選択された1つ以上のインストラクション形式の各々に対する関連発行レートを各選出された発行レートに制限する、
という段階と、
を備えた方法。
【請求項10】
前記選択及び選出を、ソフトウェアにより書かれた電力スロットルコードに基づいて遂行する段階を更に備えた、請求項9に記載の方法。
【請求項11】
前記選択及び選出を、前記プロセッサの動作電力状態に基づいて遂行する段階を更に備えた、請求項9に記載の方法。
【請求項12】
前記1つ以上のインストラクション形式の各々に対する各スレッシュホールドを前記プロセッサの動作電力状態に基づいて選択する段階を更に備えた、請求項11に記載の方法。
【請求項13】
前記選択及び選出を、どのインストラクション発行カウントが各スレッシュホールドを越えたかに更に基づいて遂行する段階を更に備えた、請求項11に記載の方法。
【請求項14】
所与のインストラクション発行カウントを維持する前記段階は、
関連インストラクション形式のインストラクションが前記実行コアへ発行されるクロックサイクルごとに前記所与のカウントを第1の量だけインクリメントし、
関連インストラクション形式のインストラクションが前記実行コアへ発行されないクロックサイクルごとに前記所与のカウントを第2の量だけデクリメントする、
ことを含む請求項9に記載の方法。
【請求項15】
前記決定に応答して、前記第1の量及び第2の量の1つ以上を変更する段階を更に備えた、請求項14に記載の方法。
【請求項16】
前記インストラクション形式は、シングルインストラクション・マルチデータ(SIMD)インストラクションを含む、請求項14に記載の方法。
【請求項17】
インストラクションを選択して発行するよう構成されたスケジューラに対する第1のインターフェイスと、
前記発行されたインストラクションを受け取って実行するよう構成された実行コアに対する第2のインターフェイスと、
スロットルコントロールロジックと、
を備え、前記スロットルコントロールロジックは、
前記第2のインターフェイスを経て発行されるインストラクションの検出に基づいて1つ以上のインストラクション形式に対する1つ以上のインストラクション発行レートを維持し、前記インストラクション形式は、前記実行コアにより実行されるサポートされるインストラクション形式のサブセットであり、
前記1つ以上のインストラクション発行レートのうちの所与のインストラクション発行レートが所与のスレッシュホールドを越えることを決定し、
前記決定に応答して、
各発行レートを制限するための1つ以上のインストラクション形式を選択し、
前記選択された1つ以上のインストラクション形式の各々に対する発行レートを選出し、
前記選択された1つ以上のインストラクション形式の各々に対する関連発行レートが各選出された発行レートを越えるのを防止するコントロール信号を前記第1のインターフェイスを経て送信する、
ように構成された、電力スロットルユニット。
【請求項18】
前記スロットルコントロールロジックは、更に、前記選択及び選出を、ソフトウェアにより書かれた電力スロットルコードに基づいて遂行するように構成された、請求項17に記載の電力スロットルユニット。
【請求項19】
前記スロットルコントロールロジックは、更に、前記選択及び選出を、前記プロセッサの動作電力状態に基づいて遂行するように構成された、請求項17に記載の電力スロットルユニット。
【請求項20】
インストラクションを選択して発行するよう構成されたスケジューラと、
前記発行されたインストラクションを受け取って実行するよう構成された実行コアに対するインターフェイスと、
装置内のアクティビティに基づいて電力状態コードを決定するように構成された電力マネージャーと、
コントロールロジックと、
を備え、前記電力マネージャーは、更に、電力スロットルコードを前記コントロールロジックへ搬送するように構成され、前記電力スロットルコードは、現在の電力状態コードに関連され、前記コントロールロジックは、
各発行レートを制限するための1つ以上のインストラクション形式を前記電力スロットルコードに基づいて選択し、
前記選択された1つ以上のインストラクション形式の各々に対する発行レートを前記電力スロットルコードに基づいて選出し、
適格化条件が満足されるのに応答して、前記選択された1つ以上のインストラクション形式の各々に対する関連発行レートを各選出された発行レートに制限する、
ように構成された、装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2013−101605(P2013−101605A)
【公開日】平成25年5月23日(2013.5.23)
【国際特許分類】
【外国語出願】
【出願番号】特願2012−230295(P2012−230295)
【出願日】平成24年9月28日(2012.9.28)
【出願人】(503260918)アップル インコーポレイテッド (568)
【Fターム(参考)】