IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インテル コーポレイションの特許一覧

特許7553182プロセッサのパワーライセンス制御のためのシステム、装置、および方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-09
(45)【発行日】2024-09-18
(54)【発明の名称】プロセッサのパワーライセンス制御のためのシステム、装置、および方法
(51)【国際特許分類】
   G06F 1/26 20060101AFI20240910BHJP
   G06F 9/50 20060101ALI20240910BHJP
   G06F 1/324 20190101ALI20240910BHJP
   G06F 1/3296 20190101ALI20240910BHJP
【FI】
G06F1/26
G06F9/50 120Z
G06F1/324
G06F1/3296
【請求項の数】 22
(21)【出願番号】P 2021556770
(86)(22)【出願日】2020-03-18
(65)【公表番号】
(43)【公表日】2022-05-26
(86)【国際出願番号】 US2020023278
(87)【国際公開番号】W WO2020197870
(87)【国際公開日】2020-10-01
【審査請求日】2023-03-16
(31)【優先権主張番号】16/367,581
(32)【優先日】2019-03-28
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】593096712
【氏名又は名称】インテル コーポレイション
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ジャンブール サスヤナラヤナ,クリシュナムルティ
(72)【発明者】
【氏名】ヴァレンタイン,ロバート
(72)【発明者】
【氏名】ゲンドラー,アレクサンダー
(72)【発明者】
【氏名】ゾベル,シュムエル
(72)【発明者】
【氏名】ベルガー,ガヴリ
(72)【発明者】
【氏名】シュタイナー,イアン エム.
(72)【発明者】
【氏名】グプタ,ニキル
(72)【発明者】
【氏名】ハダス,エイヤル
(72)【発明者】
【氏名】ハチャモ,エド
(72)【発明者】
【氏名】スブラマニアン,スメシュ
【審査官】松浦 かおり
(56)【参考文献】
【文献】米国特許出願公開第2014/0317422(US,A1)
【文献】特表2017-503261(JP,A)
【文献】特表2013-539121(JP,A)
【文献】米国特許出願公開第2007/0043960(US,A1)
【文献】米国特許出願公開第2016/0098078(US,A1)
【文献】米国特許出願公開第2012/0084389(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 1/26 -1/3296
G06F 9/455-9/54
(57)【特許請求の範囲】
【請求項1】
プロセッサであって、
複数のコアであり、該複数のコアのうち少なくとも一部は、
実行回路と、
電流保護コントローラであり、
前記実行回路による1つ以上の命令の実行前に、命令キュー内に保管された前記1つ以上の命令に関連付けられた命令幅情報および命令タイプ情報を受信し、
対応する前記命令幅情報および前記命令タイプ情報に基づいて、前記コアについてパワーライセンスレベルを決定し、
前記パワーライセンスレベルに対応する前記コアについてパワーライセンス要求を生成し、
前記1つ以上の命令が推論的であるか否かを決定し、かつ、
前記1つ以上の命令が非推論的であるとの決定に応答して、パワーコントローラに対して前記パワーライセンス要求を通信し、前記1つ以上の命令のうち少なくとも1つが推論的である場合には、前記要求の通信を延期する、
電流保護コントローラと、を含む、
複数のコア、を含み、
前記パワーコントローラは、前記パワーライセンス要求に応じて前記電流保護コントローラにパワーライセンスを付与するために、前記複数のコアに結合されている、
プロセッサ。
【請求項2】
前記プロセッサは、さらに、
前記命令を保管するレジスタ別名テーブルを備え、
前記レジスタ別名テーブルは、複数の命令についてデフォルトパワーライセンス情報を保管するための複数のコンフィグレーションレジスタを含んでおり、
前記レジスタ別名テーブルは、第1命令のためのデフォルトパワーライセンスレベルを前記電流保護コントローラへ送信する、
請求項1に記載のプロセッサ。
【請求項3】
前記複数のコンフィグレーションレジスタそれぞれは、
命令タイプに関連付けられており、かつ、それぞれ命令幅に関連付けられた複数のフィールドを含み、
前記命令タイプおよび前記命令幅についてデフォルトのプロセッサライセンスレベルを保管する、
請求項2に記載のプロセッサ。
【請求項4】
前記レジスタ別名テーブルは、第1融合乗加算回路および第2融合乗加算回路に結合されており、
少なくとも前記第2融合乗加算回路は、前記コアが最も高いレベルを有するライセンス付与を受けなければ、ゲート制御される、
請求項2に記載のプロセッサ。
【請求項5】
前記電流保護コントローラは、前記1つ以上の命令のうち前記少なくとも1つが推論的であるという決定に応答して、前記パワーコントローラへの前記パワーライセンス要求の通信を延期する、
請求項4に記載のプロセッサ。
【請求項6】
前記電流保護コントローラは、さらに、
前記第1命令のための前記デフォルトパワーライセンスレベルが、前記コアの現在パワーライセンスレベルを超えるという決定に応答して、前記1つ以上の命令の実行を調整するために、前記レジスタ別名テーブルにスロットル信号を送信する、スロットルコントローラ、を含む、
請求項2に記載のプロセッサ。
【請求項7】
前記電流保護コントローラは、前記少なくとも1つの命令のスロットル持続時間が閾値持続時間を超えるとの決定に応答して、前記延期されたパワーライセンス要求を通信する、
請求項5に記載のプロセッサ。
【請求項8】
前記電流保護コントローラは、前記少なくとも1つの推論的命令の廃棄に応答して、前記延期されたパワーライセンス要求を通信する、
請求項5に記載のプロセッサ。
【請求項9】
前記電流保護コントローラは、
1つ以上のベクトルメモリアクセス命令について第1レベルのパワーライセンスレベルを有する前記パワーライセンス要求を生成し、かつ、
1つ以上のベクトル演算命令について第2レベルのパワーライセンスレベルを有する前記パワーライセンス要求を生成し、
前記第2レベルは、前記第1レベルよりも大きい、
請求項1に記載のプロセッサ。
【請求項10】
前記実行回路は、スロットリングを行うことなく、前記コアのパワーライセンスレベルにかかわらず、1つ以上の512ビットメモリアクセス命令を実行する、
請求項1に記載のプロセッサ。
【請求項11】
命令が保管されている非一時的なマシンで読取り可能な記憶媒体であって、命令がマシンによって実行されると、前記マシンに、
プロセッサのパワーコントローラにおいて、スケジューラから、1つ以上のベクトル命令を含む第1ワークロードに関連するパワーレベル、および、前記第1ワークロードがスケジュールされているプロセッサの複数のコアのうち第1コアを示すスケジューリング情報を受信するステップと、
前記スケジューリング情報に基づいて、前記パワーコントローラによって、第1コアに関連する第1コンフィグレーションレジスタを、第1パワーコンフィグレーション設定に設定するステップであり、前記第1コアは前記第1パワーコンフィグレーション設定に従って動作するように構成され、前記第1パワーコンフィグレーション設定は、前記複数のコアのうち他のコアと関連するパワーコンフィグレーション設定から独立している、ステップと、
前記第1コンフィグレーションレジスタ内の前記第1パワーコンフィグレーション設定に基づいて、第1保証動作周波数を決定する、ステップと、
前記第1ワークロードを、前記第1コンフィグレーションレジスタ内の前記第1パワーコンフィグレーション設定に基づいて、前記第1保証動作周波数で、前記第1コア上で実行させるステップであり、前記第1保証動作周波数は、前記第1ワークロードの実行中に変更されない、ステップと、
を含む、方法を実施させる、
マシンで読取り可能な記憶媒体。
【請求項12】
前記方法は、さらに、
前記パワーコントローラにおいて、前記スケジューラから、第2ワークロードに関連するパワーレベル、および、前記第2ワークロードがスケジュールされているプロセッサの前記複数のコアのうち第2コアを示している第2スケジューリング情報を受信するステップと、
前記スケジューリング情報に基づいて、前記パワーコントローラによって、第2コアに関連する第2コンフィグレーションレジスタを、第2パワーコンフィグレーション設定に設定するステップであり、前記第2コアは前記第2パワーコンフィグレーション設定に従って動作するように構成され、前記第2パワーコンフィグレーション設定は、前記第1パワーコンフィグレーション設定より大きい、ステップと、
前記第2コンフィグレーションレジスタ内の前記第2パワーコンフィグレーション設定に基づいて、第2保証動作周波数を決定する、ステップと、
前記第2ワークロードを、前記第2コンフィグレーションレジスタ内の前記第2パワーコンフィグレーション設定に基づいて、第2保証動作周波数で、前記第2コア上で実行させるステップであり、前記第2保証動作周波数は、前記第2ワークロードの実行中に変更されず、かつ、前記第2保証動作周波数は、前記第1保証動作周波数より大きい、ステップと、
を含む、請求項11に記載のマシンで読取り可能な記憶媒体。
【請求項13】
前記方法は、さらに、
プロセッサの単一ブート中に、前記第1コンフィグレーションレジスタを第2パワーコンフィグレーション設定に動的にリセットするステップであり、前記第1コアは、前記第2パワーコンフィグレーション設定に従って動作するように構成される、ステップと、
第3ワークロードを、前記第2保証動作周波数で、前記第1コア上で実行させるステップであり、前記第2保証動作周波数は、前記第3ワークロードの実行中に変更されない、ステップと、
を含む、請求項12に記載のマシンで読取り可能な記憶媒体。
【請求項14】
前記方法は、さらに、
識別ストレージのフラグを介して、コア毎の構成可能なパワーコンフィグレーション設定を保管する複数のコンフィグレーションレジスタの存在を決定するステップ、
を含む、請求項11に記載のマシンで読取り可能な記憶媒体。
【請求項15】
前記方法は、さらに、
前記複数のコアによって実行されるワークロードに基づいて、独立して、前記複数のコンフィグレーションレジスタの少なくとも一部を独立したパワーコンフィグレーション設定に更新するステップであり、前記第1コアを前記第1保証動作周波数で動作させ、一方で、前記複数のコアのうち少なくとも1つの他のコアを前記第1保証動作周波数よりも大きい第2保証動作周波数で動作させる、ステップ、
を含む、請求項14に記載のマシンで読取り可能な記憶媒体。
【請求項16】
前記第1パワーコンフィグレーション設定は、前記第1保証動作周波数について事前付与の周波数ライセンスを含み、前記第1コアが、前記第1コアをスロットリングすることなく、前記第1ワークロードを実行することを可能にする、
請求項11に記載のマシンで読取り可能な記憶媒体。
【請求項17】
コンピューティングデバイスであって、
1つ以上のプロセッサと、
複数の命令が保管されているメモリと、を含み、
前記1つ以上のプロセッサによって命令が実行されると、前記コンピューティングデバイスに請求項11乃至16いずれか一項に記載のマシンで読取り可能な記憶媒体に係る方法を実施させる、
コンピューティングデバイス。
【請求項18】
データが保管されている少なくとも1つのマシンで読取り可能な記憶媒体であって、
前記少なくとも1つのマシンによって使用される場合、前記少なくとも1つのマシンに請求項11乃至16いずれか一項に記載のマシンで読取り可能な記憶媒体に係る方法を実施させる、
少なくとも1つのマシンで読取り可能な記憶媒体。
【請求項19】
請求項11乃至16いずれか一項に記載のマシンで読取り可能な記憶媒体に係る方法を実施するための手段を備える、電子機器。
【請求項20】
システムであって、
プロセッサであり、該プロセッサは、
複数のコアと、
複数のコンフィグレーションレジスタであり、
前記複数のコアのうち1つについてパワーコンフィグレーション設定をそれぞれ保管し、前記システムの単一のブートの間に更新可能である、
複数のコンフィグレーションレジスタと、
前記複数のコアに結合されたパワーコントローラであり、
1つ以上のベクトル命令を含む第1ワークロードに関連するパワーレベルと、前記第1ワークロードがスケジューリングされる前記複数のコアの第1コアとを示している、スケジューリング情報を受信し、
前記スケジューリング情報に基づいて、前記複数のコンフィグレーションレジスタの第1コンフィグレーションレジスタを第1パワーコンフィグレーション設定に設定し、前記第1コアを前記第1パワーコンフィグレーション設定に従って動作するように構成し、
一方で、前記複数のコンフィグレーションレジスタのうちの1つ以上の他のコンフィグレーションレジスタはノミナルのパワーコンフィグレーション設定を保管し、
前記第1コンフィグレーションレジスタ内の前記第1パワーコンフィグレーション設定に基づいて、第1保証動作周波数を決定し、かつ、
前記第1コンフィグレーションレジスタ内の前記第1パワーコンフィグレーション設定に基づいて、前記第1コアに、前記第1保証動作周波数で前記第1ワークロードを実行させ、前記第1保証動作周波数は、前記第1ワークロードの実行中に変更されない、
パワーコントローラと、
を含む、プロセッサと、
前記プロセッサに結合されたダイナミックランダムアクセスメモリと、
を含む、システム。
【請求項21】
前記第1コアは、電流保護コントローラを含み、
該電流保護コントローラは、
前記1つ以上の命令の実行前に、命令キュー内に保管された前記1つ以上の命令に関連付けられた命令幅情報および命令タイプ情報を受信し、
対応する前記命令幅情報および前記命令タイプ情報に基づいて、前記コアについてパワーライセンスレベルを決定し、
前記パワーライセンスレベルに対応する前記第1コアについてパワーライセンス要求を生成し、
前記1つ以上の命令が推論的であるか否かを決定し、かつ、
前記1つ以上の命令が非推論的であるとの決定に応答して、パワーコントローラに対して前記パワーライセンス要求を通信し、前記1つ以上の命令のうち少なくとも1つが推論的であるとの決定に応答して、前記パワーライセンス要求の通信を延期する、
請求項20に記載のシステム。
【請求項22】
前記パワーコントローラは、前記第1コアによる前記第1ワークロードの実行と同時に、
プロセッサのパワーコントローラにおいて、第2ワークロードに関連するパワーレベル、および、前記第2ワークロードがスケジュールされている前記複数のコアのうち第2コアを示しているスケジューリング情報を受信し、かつ、
前記スケジューリング情報に基づいて、第2パワーコンフィグレーション設定に従って前記第2コアが動作するように構成するために、前記複数のコンフィグレーションレジスタのうち第2コンフィグレーションレジスタを前記第2パワーコンフィグレーション設定に設定し、かつ、
前記第2コアに、前記第1保証動作周波数よりも大きい第2保証動作周波数で第2ワークロードを実行させ、前記第2保証動作周波数は、前記第2コンフィグレーションレジスタ内の前記第2パワーコンフィグレーション設定に基づいて決定される、
請求項20に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本実施形態は、プロセッサのパワー管理に関する。
【背景技術】
【0002】
半導体処理および論理設計における進歩により、集積回路デバイス上に存在し得る論理量の増加が可能となった。その結果として、コンピュータシステム構成は、システム内の単一または複数の集積回路から、個々の集積回路上の複数のハードウェアスレッド、複数のコア、複数のデバイス、及び/又は、完全なシステムへ進化してきた。加えて、集積回路の密度が増加するにつれて、コンピューティングシステム(組み込みシステムからサーバまで)に対するパワー要求も、また、増大した。さらに、ソフトウェアの非効率性、および、ハードウェアの要求も、また、コンピューティングデバイスのエネルギー消費の増加を生じさせている。実際に、いくつかの研究は、コンピューティングデバイスが、アメリカ合衆国といった、国に対するパワー供給全体のうちのかなりの割合を消費していることを示している。その結果、集積回路に関連したエネルギー効率および省エネルギーに対する極めて重要な必要性が存在している。サーバ、デスクトップコンピュータ、ノートブック、UltrabookTM、タブレット、移動電話、プロセッサ、組み込みシステム、等が、さらもっと流行するにつれて(従来のコンピュータ、自動車、およびテレビの包括からバイオテクノロジーまで)これらのニーズは増えていくだろう。
【図面の簡単な説明】
【0003】
図1図1は、本発明の一つの実施形態に従った、システムの一部のブロック図である。
図2図2は、本発明の一つの実施形態に従った、プロセッサのブロック図である。
図3図3は、本発明の別の実施形態に従った、マルチドメインプロセッサのブロック図である。
図4図4は、複数のコアを含むプロセッサの一つの実施形態である。
図5図5は、本発明の一つの実施形態に従った、プロセッサコアのマイクロアーキテクチャのブロック図である。
図6図6は、別の実施形態に従った、プロセッサコアのマイクロアーキテクチャのブロック図である。
図7図7は、さらに別の実施形態に従った、プロセッサコアのマイクロアーキテクチャのブロック図である。
図8図8は、なおも別の実施形態に従った、プロセッサコアのマイクロアーキテクチャのブロック図である。
図9図9は、本発明の別の実施形態に従った、プロセッサのブロック図である。
図10図10は、本発明の一つの実施形態に従った、代表的なSoCのブロック図である。
図11図11は、本発明の一つの実施形態に従った、別の例のSoCのブロック図である。
図12図12は、実施形態と共に使用することができる一つの例示的なシステムのブロック図である。
図13図13は、実施形態と共に使用され得る別の例示的なシステムのブロック図である。
図14図14は、代表的なコンピュータシステムのブロック図である。
図15図15は、本発明の一つの実施形態に従った、システムのブロック図である。
図16図16は、一つの実施形態に従った、動作を実行するための集積回路を製造するために使用されるIPコア開発システムを示すブロック図である。
図17図17は、本発明の一つの実施形態に従った、プロセッサのブロック図である。
図18図18は、本発明の一つの実施形態に従った、プロセッサのブロック図である。
図19図19は、本発明の一つの実施形態に従った、プロセッサコアのブロック図である。
図20図20は、プロセッサのレジスタ別名テーブル(register alias table)または他のアウトオブオーダ(out of order)エンジン内に存在し得る、コンフィグレーションストレージのブロック図である。
図21図21は、一つの実施形態に従った、プロセッサの一部のブロック図である。
図22図22は、一つの実施形態に従った、プロセッサパワー管理技術のフローチャートである。
図23図23は、一つの実施形態に従った、プロセッサパワー管理技術の別のフローチャートである。
図24図24は、本発明の別の実施形態に従った、方法のフローチャートである。
図25図25は、本発明の別の実施形態に従った、方法のフローチャートである。
図26図26は、本発明の一つの実施形態に従った、プロセッサのブロック図である。
図27図27は、本発明の別の実施形態に従った、方法のフローチャートである。
【発明を実施するための形態】
【0004】
様々な実施形態において、プロセッサは、プロセッサ動作の最中に動的に決定するためのパワー管理回路、これらのエージェントから受け取ったライセンス付与(license grant)からの要求に応答して、処理コアまたは他の処理回路に付与するための適切なパワーライセンスレベルを用いて構成されている。一般的に、コアが、ベクトルベースの命令といった所定の広範な命令を含む、より高いパワー消費命令に遭遇したときには、パワーライセンスレベル増大の要求が成され得る。実施形態は、ベクトル幅に対するメモリアクセス命令を含む、所定のそうした広範な命令が、より低いライセンスレベルで実行されることを可能にし、より高いライセンスレベルに対する要求の数を低減している。加えて、実施形態は、推論的(speculative)な性質の命令に対するライセンス付与の要求を延期するようにコアを構成することができる。このようにして、より高いパワーライセンスのうちいくらかの数量が要求されず、プロセッサ性能に対する影響を低減している。
【0005】
加えて、実施形態は、さらに、熱設計パワー(thermal design power、TDP)レベルといった、コア毎に設定可能なパワー消費レベルを提供することができる。このようにして、1つ以上のコアに対するワークロードのスケジューリングに関連して、ワークロードのパワー消費特性の表示が、スケジューラからパワーコントローラへ識別され、コアに対する設定可能なTDPレベルが、例えば、より低いレベルに、設定されることを可能にする。このようにして、保証動作周波数でのワークロードの動作のための周波数ライセンスの事前付与(pre-grant)が発生し得る。その結果、コアとパワーコントローラとの間でライセンス交渉を実行するオーバーヘッドが回避され、ワークロード実行の待ち時間(latency)を低減している。
【0006】
以下の実施形態は、コンピューティングプラットフォームまたはプロセッサにおけるといった、特定の集積回路における省エネルギーおよびエネルギー効率に関連して説明されているが、他の実施形態は、他のタイプの集積回路および論理デバイスについて適用可能である。ここにおいて説明される実施形態の同様な技術および教示は、また、より良いエネルギー効率および省エネルギーから利益を得ることができる他のタイプの回路または半導体デバイスにも適用され得る。例えば、開示される実施形態は、任意の特定のタイプのコンピュータシステムに限定されない。すなわち、開示される実施形態は、サーバコンピュータ(例えば、タワー、ラック、ブレード、マイクロサーバ、など)、通信システム、ストレージシステム、任意の構成のデスクトップコンピュータ、ラップトップ、ノートブック、およびタブレットコンピュータ(2:1タブレット、ファブレット、などを含む)の範囲にわたる、多くの異なるシステムタイプにおいて使用することができ、そして、ハンドヘルドデバイス、システムオンチップ(SoC)、および、埋め込み(embedded)アプリケーションといった、他のデバイスにおいても、また、使用することができる。ハンドヘルドデバイスのいくつかの例は、スマートフォンといった携帯電話、インターネットプロトコルデバイス、デジタルカメラ、携帯情報端末(personal digital assistant、PDA)、およびハンドヘルドPCを含む。埋め込みアプリケーションは、典型的に、マイクロコントローラ、デジタル信号プロセッサ(DSP)、ネットワークコンピュータ(NetPC)、セットトップボックス、ネットワークハブ、ワイドエリアネットワーク(WAN)スイッチ、ウェアラブルデバイス、または、以下に教示される機能および動作を実行することができる他の任意のシステム、を含み得る。さらに、実施形態は、移動電話、スマートフォン、およびファブレットといった標準的な音声機能を有する移動端末において、及び/又は、多くのウェアラブル、タブレット、ノート、デスクトップ、マイクロサーバ、サーバなど、といった標準的な無線音声機能通信器能を持たない非移動端末において実装され得る。さらに、ここにおいて説明される装置、方法、およびシステムは、物理的なコンピューティングデバイスに限定されるものではなく、省エネルギーおよびエネルギー効率のためのソフトウェア最適化にも、また、関連し得る。以下の説明において直ちに明らかになるように、ここにおいて説明される方法、装置、およびシステムの実施形態(ハードウェア、ファームウェア、ソフトウェア、または、それらの組み合わせに関するものであるか否かを問わない)は、米国経済の大部分を包含する製品における省パワーおよびエネルギー効率のためといった、「環境技術(“green technology”)」の将来にとって極めて重要である。
【0007】
これから、図1を参照すると、本発明の一つの実施形態に従った、システムの一部のブロック図が示されている。図1に示されるように、システム100は、図示されるようにマルチコアプロセッサであるプロセッサ110を含む、様々なコンポーネントを含み得る。プロセッサ110は、外部電圧レギュレータ160を介して電源150に接続され得る。外部電圧レギュレータは、プロセッサ110に対して一次(primary)調整電圧を提供するように、第1電圧変換を実行することができる。
【0008】
分かるように、プロセッサ110は、複数のコア120a-120nを含む単一のダイプロセッサであり得る。加えて、各コアは、一次調整電圧を受け取り、そして、IVRと関連するプロセッサの1つ以上のエージェントに供給される動作電圧を生成する、集積電圧レギュレータ(integrated voltage regulator、IVR)125a-125nと関連付けることができる。従って、IVR実装は、個々のコアそれぞれの電圧、および、従ってパワーおよび性能についてきめの細かい(fine-grained)制御を可能にするために提供され得る。かくして、各コアは、独立した電圧および周波数で動作することができ、大きなフレキシビリティを可能にし、かつ、パワー消費を性能とバランスさせるための幅広い機会を提供している。いくつかの実施形態において、複数のIVRの使用は、構成要素を別々の電源プレーン(power planes)へとグループ化することを可能にして、その結果、パワーは、グループ内の構成要素のみに対してIVRによって制御され、そして、供給される。パワー管理の最中、プロセッサが所定の低パワー状態に置かれると、1つのIVRの所与の電源プレーンは、電源ダウンまたはオフされ得る。一方で、別のIVRの別の電源プレーンは、アクティブのままであるか、または完全にパワー供給される。
【0009】
なおも図1を参照すると、追加の構成要素がプロセッサ内に存在してよく、入力/出力インターフェイス132、別のインターフェイス134、および、集積メモリコントローラ136を含んでいる。分かるように、これらの構成要素それぞれは、別の集積電圧レギュレータ125xによってパワー供給され得る。一つの実施形態において、インターフェイス132は、Intel(R)について動作を可能にし得る。クイックパスインターコネクト(Quick Path Interconnect、QPI)相互接続は、物理層、リンク層、およびプロトコル層を含む、複数の層を含むキャッシュコヒーレントプロトコルにおけるポイントツーポイント(point-to-point、PtP)リンクを提供する。順番に、インターフェイス134は、ペリフェラルコンポーネント相互接続エクスプレス(PCIeTM)プロトコルを介して通信することができる。
【0010】
また、パワー制御ユニット(PCU)138が示されており、PCUは、プロセッサ110に関してパワー管理動作を実行するためのハードウェア、ソフトウェア、及び/又は、ファームウェアを含み得る。分かるように、PCU138は、デジタルインターフェイスを介して外部電圧レギュレータ160に対して制御情報を提供し、電圧レギュレータに適切な調整電圧を生成するようにさせる。PCU138は、また、別のデジタルインターフェイスを介してIVR125に対して制御情報を提供し、生成された動作電圧を制御する(または、対応するIVRを低パワーモードで無効にする)ようにさせる。様々な実施形態において、PCU138は、ハードウェアベースのパワー管理を実行するために、様々なパワー管理論理ユニットを含み得る。そうしたパワー管理は、完全にプロセッサ制御されてよく(例えば、種々のプロセッサハードウェアによるものであり、そして、ワークロード及び/又はパワー、熱(thermal)、または他のプロセッサ制約によってトリガされ得る)、かつ/あるいは、パワー管理は、外部ソース(プラットフォーム、または、管理パワー管理ソース、もしくは、システムソフトウェアといったもの)に応答して実行されてよい。
【0011】
さらに、図1は、PCU138が別個の処理エンジンである(マイクロコントローラとして実装されてよい)実装を示しているが、ある場合には、専用のパワーコントローラに加えて、または、その代わりに、各コアは、パワー消費を独立して、より自律的に制御するために、パワー制御エージェントを含んでよく、または、パワー制御エージェントと関連付けられてよいことを理解されたい。ある場合には、階層的パワー管理アーキテクチャが提供されてよく、PCU138は、コア120それぞれに関連する対応するパワー管理エージェントと通信する。
【0012】
PCU138に含まれる1つのパワー管理論理ユニットは、ライセンス付与回路であってよい。そうしたライセンス付与回路は、パワーライセンスについて入ってくる要求を受け取ることができ、そして、1つ以上のバジェット(budget)に少なくとも部分的に基づいて、所与のパワーレベルでの実行のために、所与のコア120に対してライセンス付与を提供することができる。さらに、なおも、このライセンス付与回路は、さらに、ここにおいて説明されるように、コア毎に設定可能なTDP値の設定を生じさせるスケジューリング情報に基づいて、所与のコア124に対してワークロードの実行の周波数ライセンスの事前付与を提供することができる。
【0013】
説明を容易にするために示されていないが、プロセッサ110内には、追加の制御回路といった追加の構成要素、および、内部メモリといった他の構成要素、例えば、キャッシュメモリ階層の1つ以上のレベル、など、が存在し得ることを理解されたい。さらに、図1の実装は、1つの集積電圧レギュレータと共に示されているが、実施形態は、そのように限定されるものではない。
【0014】
ここにおいて説明されるパワー管理技術は、オペレーティングシステム(OS)ベースのパワー管理メカニズム(OPSM)から独立しており、かつ、補足的であり得ることに留意する。一つの例示的なOSPM技術に従って、プロセッサは、種々の性能状態またはレベル、いわゆるP状態、すなわちP0からPNで動作することができる。一般的に、P1のパフォーマンス状態は、OSによって要求され得る最高の保証性能状態に対応し得る。ここにおいて説明される実施形態は、様々な入力およびプロセッサ動作パラメータに基づいて、P1性能状態の保証された周波数に対する動的な変更を可能にし得る。このP1状態に加えて、OSは、さらに高いパフォーマンス状態、すなわちP0状態を要求することができる。このP0状態は、従って、パワー及び/又は熱バジェットが利用可能な場合に、プロセッサハードウェアが、保証周波数よりも高い周波数で動作するようにプロセッサまたはその少なくとも一部を構成することができる、日和見性(opportunistic)またはターボモード状態であってよい。多くの実装において、プロセッサは、特定のプロセッサの最大ピーク周波数を超える、P1保証最大周波数の上にある複数のいわゆるビン周波数を含むことができ、製造中に融合(fused)されるか、または、そうでなければ、プロセッサに書き込まれる。加えて、1つのOSPMメカニズムに従って、プロセッサは、種々のパワー状態またはレベルで動作することができる。パワー状態に関して、OSPMメカニズムは、異なるパワー消費状態を指定することができる。一般的にC状態、C0、C1-Cn状態と呼ばれるものである。コアがアクティブであるとき、それはC0状態で動作し、そして、コアがアイドルであるときは、コア低パワー状態に置かれてよい。コア低パワー状態は、コア非ゼロC状態(例えば、C1-C6状態)とも呼ばれるものであり、各C状態は、より低いパワー消費レベルにある(その結果、C6はC1より深い低パワー状態である、等)。
【0015】
多くの異なるタイプのパワー管理技術が、異なる実施形態において、個別に又は組み合わせて使用され得ることを理解されたい。代表的な例として、パワーコントローラは、ある形態の動的電圧周波数スケーリング(dynamic voltage frequency scaling、DVFS)によってパワー管理されるようにプロセッサを制御することができる。ここで、1つ以上のコアまたは他のプロセッサロジックの動作電圧及び/又は動作周波数が動的に制御され、所定の状況におけるパワー消費を低減することができる。一つの実施例において、DVFSは、最低消費パワーレベルにおいて最適な性能を提供するために、Intel社、カリフォルニア州サンタクララ、から入手可能なEnhanced Intel SpeedStepTM技術を用いて実施され得る。別の例において、DVFSはIntel TurboostTM技術を使用して実行されてよく、1つ以上のコアまたは他のコンピュータエンジンを、条件(例えば、ワークロードおよび可用性)に基づいて、保証動作周波数よりも高い周波数で動作させることができる。
【0016】
所定の例で使用され得る別のパワー管理技術は、異なる計算エンジン間のワークロードの動的スワッピングである。例えば、プロセッサは、異なるパワー消費レベルで動作する非対称コアまたは他のプロセッサエンジンを含むことができ、その結果、パワー制約状況において、1つ以上のワークロードを、より低いパワーコアまたは他のコンピュータエンジン上で実行するように動的に切り替えることができる。別の例示的なパワー管理技術は、ハードウェアデューティサイクリング(hardware duty cycling、HDC)であり、これは、デューティサイクルに従ってコア及び/又は他のコンピュータエンジンを周期的にイネーブルにし、かつ、ディセーブルにすることができ、その結果、1つ以上のコアは、デューティサイクルの非アクティブ期間中に非アクティブにされ、そして、デューティサイクルのアクティブ期間中にアクティブにされ得る。これら特定の例を用いて説明したが、多くの他のパワー管理技術が特定の実施形態において使用され得ることを理解されたい。
【0017】
実施形態は、サーバプロセッサ、デスクトッププロセッサ、モバイルプロセッサ、などを含む、種々の市場向けのプロセッサにおいて実施することができる。これから図2を参照すると、本発明の一つの実施形態に従った、プロセッサのブロック図が示されている。図2に示されるように、プロセッサ200は、複数のコア210a-210nを含むマルチコアプロセッサであってよい。一つの実施形態において、そうした、コアそれぞれは、独立したパワードメインであってよく、そして、ワークロードに基づいてアクティブ状態及び/又は最大性能状態を出入りするように構成することができる。種々のコアは、相互接続215を介して、種々の構成要素を含むシステムエージェント220に接続され得る。分かるように、システムエージェント220は、最後のレベルキャッシュであり得る、共有キャッシュ230を含んでよい。加えて、システムエージェントは、例えば、メモリバスを介して、システムメモリ(図2に示されていない)と通信するための集積メモリコントローラ240を含んでよい。システムエージェント220は、また、種々のインターフェイス250およびパワー制御ユニット255も含んでおり、これらは、ここにおいて説明されるパワー管理技術を実行するためのロジックを含み得る。ライセンス付与回路258は、推論的でない命令実行に対するライセンス要求に基づいて、コア210にパワーライセンスを付与することができる。ライセンス付与回路258は、さらに、ここにおいて説明されるように、コア毎の設定可能なTDP値に基づいて特定のワークロードを実行するために、所与のコア210に対して、保証動作周波数の周波数ライセンスの事前付与を提供することができる。
【0018】
加えて、インターフェイス250a-250nによって、周辺装置、大容量ストレージ装置、などの種々のオフチップ構成要素に対する接続を行うことができる。図2の実施形態においては、この特定の実装を用いて示されているが、本発明の範囲は、この点に関して限定されるものではない。
【0019】
これから図3を参照すると、本発明の別の実施形態に従った、マルチドメインプロセッサのブロック図が示されている。図3の実施形態に示されるように、プロセッサ300は、複数のドメインを含んでいる。具体的に、コアドメイン310は、複数のコア3100-310nを含むことができ、グラフィックスドメイン320は、1つ以上のグラフィックスエンジンを含むことができ、そして、システムエージェントドメイン350が、さらに、存在してよい。いくつかの実施形態において、システムエージェントドメイン350は、コアドメインとは独立した周波数で実行することができ、そして、パワー制御イベントおよびパワー管理を処理するために常にパワーオンのままであってよく、その結果、ドメイン310および320が動的に高パワー状態および低パワー状態に入り、そして、終了するように制御され得る。ドメイン310および320それぞれは、異なる電圧及び/又はパワーで動作することができる。3つのドメインのみで示されているが、本発明の範囲は、この点に限定されるものではなく、そして、さらなるドメインが他の実施形態において存在し得ることに留意されたい。例えば、少なくとも1つのコアをそれぞれ含む複数のコアドメインが存在し得る。
【0020】
一般的に、各コア310は、さらに、様々な実行ユニットおよび追加の処理要素に加えて、低レベルのキャッシュを含み得る。順番に、種々のコアは、相互に、かつ、最後のレベルキャッシュ(last level cache、LLC)3400-340nの複数のユニットから形成される共有キャッシュメモリに、接続されてよい。様々な実施形態において、LLC340は、コアとグラフィックスエンジンとの間、並びに、様々な媒体処理回路の間で共有されもよい。分かるように、リング相互接続330は、従って、コアを一緒に結合し、そして、コア、グラフィックスドメイン320、およびシステムエージェント回路350間の相互接続を提供する。一つの実施形態において、相互接続330は、コアドメインの一部であり得る。しかしながら、他の実施形態において、リング相互接続は、それ自身のドメインであってよい。
【0021】
さらに分かるように、システムエージェントドメイン350は、関連するディスプレイの制御およびインターフェイスを提供し得る、ディスプレイコントローラ352を含んでよい。さらに分かるように、システムエージェントドメイン350は、ここにおいて説明されるパワー管理技術を実行するためのロジックを含み得る、パワー制御ユニット355を含んでよい。示される実施形態において、パワー制御ユニット355は、ここにおいて説明されるように、推論的でない命令実行の要求に応じてパワーライセンス付与を実行するためのライセンス付与回路359、および、コアTDP値毎のワークロード実行のための周波数ライセンスの事前付与を含む。
【0022】
図3にさらに示されるように、プロセッサ300は、ダイナミックランダムアクセスメモリ(DRAM)といった、システムメモリへのインターフェイスを提供することができる集積メモリコントローラ(integrated memory controller、IMC)370を、さらに、含み得る。プロセッサと他の回路との間の相互接続を可能にするために、複数のインターフェイス3800-380nが存在し得る。例えば、一つの実施形態では、少なくとも1つの直接媒体インターフェイス(direct media interface、DMI)、並びに、1つ以上のPCIeTMインターフェイスを備えることができる。さらに、なお、追加のプロセッサまたは他の回路といった、他のエージェント間の通信を提供するために、1つ以上のQPIインターフェイスを備えることもできる。図3の実施形態においてはこの高レベルで示されているが、本発明の範囲は、この点に関して限定されるものではないことを理解されたい。
【0023】
図4を参照すると、複数のコアを含むプロセッサの一つの実施形態が示されている。プロセッサ400は、マイクロプロセッサ、埋め込みプロセッサ、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、ハンドヘルドプロセッサ、アプリケーションプロセッサ、コプロセッサ、システムオンチップ(SoC)、または、コードを実行する他のデバイスといった、任意のプロセッサまたは処理デバイスを含んでいる。プロセッサ400は、一つの実施形態において、非対称コアまたは対称コア(図示の実施形態)を含み得る、少なくとも2つのコア、つまりコア401および402を含む。しかしながら、プロセッサ400は、対称または非対称であり得る任意の数の処理要素を含んでよい。
【0024】
一つの実施形態において、処理要素は、ソフトウェアスレッドをサポートするためのハードウェアまたはロジックを指している。ハードウェア処理要素の例は、スレッドユニット、スレッドスロット、スレッド、プロセスユニット、コンテキスト、コンテキストユニット、論理プロセッサ、ハードウェアスレッド、コア、及び/又は、実行状態またはアーキテクチャ状態といった、プロセッサのための状態を保持することができる、任意の他の要素、を含んでいる。換言すれば、処理要素は、一つの実施形態において、ソフトウェアスレッド、オペレーティングシステム、アプリケーション、または他のコードといった、コードと独立して関連付けることができる任意のハードウェアを指している。物理的プロセッサは、典型的に、集積回路を指しており、これは、潜在的に、コアまたはハードウェアスレッドといった、任意の数の他の処理要素を含んでいる。
【0025】
コアは、しばしば、独立したアーキテクチャ状態を維持することができる集積回路上に配置されたロジックを指している。ここで、各独立して維持されるアーキテクチャ状態は、少なくともいくつかの専用実行リソースと関連付けられている。コアとは対照的に、ハードウェアスレッドは、典型的には、独立したアーキテクチャ状態を維持することができる集積回路上に配置された任意のロジックを指しており、ここで、独立して維持されるアーキテクチャ状態は、実行リソースに対するアクセスを共有する。分かるように、所定のリソースが共有され、かつ、他のリソースがアーキテクチャ状態に専念する場合には、ハードウェアスレッドの術語(nomenclature)とコアとの間の線は重なり合う。なお、しばしば、コアおよびハードウェアスレッドは、オペレーティングシステムによって、個々の論理プロセッサとして見なされる。ここで、オペレーティングシステムは、煽各論理プロセッサ上で個々にオペレーションをスケジューリングすることができる。
【0026】
物理的プロセッサ400は、図4に示されるように、2つのコアを含む。コア401およびコア402である。ここで、コア401および402は、対称コア、すなわち、同じ構成、機能ユニット、及び/又は、ロジックを有するコアと考えられる。別の実施形態において、コア401は、アウトオブオーダ(out of order)のプロセッサコアを含み、コア402はインオーダ(in order)のプロセッサコアを含む。しかし、コア401および402は、ネイティブコア、ソフトウェア管理コア、ネイティブ命令セットアーキテクチャ(ISA)を実行するように適合されたコア、変換されたISAを実行するように適合されたコア、共設計コア、または、他の既知のコアといった、任意のタイプのコアから個別に選択することができる。なお、議論をさらに進めるために、コア401に示される機能ユニットは、コア402内のユニットが同様の態様で動作するので、以下でさらに詳細に説明される。
【0027】
図示されるように、コア401は、2つのハードウェアスレッド401aおよび401bを含み、これらは、ハードウェアスレッドスロット401aおよび401bとも称される。従って、一つの実施形態において、オペレーティングシステムといった、ソフトウェアエンティティは、プロセッサ400を、4つの別個のプロセッサ、すなわち、4つのソフトウェアスレッドを同時に実行することができる4つの論理プロセッサまたは処理要素として見なす可能性がある。上述のように、第1スレッドはアーキテクチャ状態レジスタ401aに関連し、第2スレッドはアーキテクチャ状態レジスタ401bに関連し、第3スレッドはアーキテクチャ状態レジスタ402aに関連し、第4スレッドはアーキテクチャ状態レジスタ402bに関連し得る。ここで、アーキテクチャ状態レジスタ(401a、401b、402a、および402b)それぞれは、上述のように、処理エレメント、スレッドスロット、またはスレッドユニットと称される。図示されるように、アーキテクチャ状態レジスタ401aは、アーキテクチャ状態レジスタ401b内で複製(replicate)されるので、個々のアーキテクチャ状態/コンテキストは、論理プロセッサ401aおよび論理プロセッサ401bのために保管することができる。コア401では、アロケータおよびリネームブロック430における命令ポインタおよびリネーム論理といった、他のより小さいリソースも、スレッド401aおよび401bのために複製することができる。再注文(reorder)/廃棄(retirement)ユニット435内の再注文バッファ、ILTB420、ロード/ストアバッファ、およびキューといった、いくつかのリソースは、分割によって共有されてよい。汎用内部レジスタ、ページテーブル・ベースレジスタ、低レベル・データキャッシュおよびデータTLB415、実行ユニット440、およびアウトオブオーダ・ユニット435の部分といった、他のリソースは、完全に共有される可能性がある。
【0028】
プロセッサ400は、しばしば、完全に共有されるか、パーティション分割によって共有されるか、または処理エレメントによって/対して専用され得る、他のリソースを含む。図4では、プロセッサの例示的な論理ユニット/リソースを有する純粋に例示的なプロセッサの実施形態が示されている。プロセッサは、これらの機能ユニットのいずれかを含んでよく、または省略してもよく、並びに、図示されていない任意の他の既知の機能ユニット、ロジック、またはファームウェアを含んでよいことに留意されたい。図示されるように、コア401は、単純化された代表的なアウトオブオーダ(OOO)プロセッサコアを含む。しかし、異なる実施形態では、インオーダプロセッサを利用することができる。OOOコアは、実行/取得されるブランチを予測するためのブランチターゲットバッファ420、および、命令のためのアドレス変換エントリを保管するための命令-変換バッファ420を含む。
【0029】
コア401はさらに、フェッチユニット420に結合されたデコードモジュール425を含み、フェッチされたエレメントをデコードする。一つの実施形態において、フェッチロジックは、スレッドスロット401a、401bにそれぞれ関連付けられた個々のシーケンサを含む。たいてい、コア401は、プロセッサ400上で実行可能な命令を定義/指定する、第1ISAと関連付けられる。第1ISAの一部であるマシンコード命令は、しばしば、実行されるべき命令または操作を参照/指定する命令の一部(オペコードと呼ばれる)を含む。デコードロジック425は、それらのオペコードからこれらの命令を認識し、そして、第1ISAによって定義される処理のために、デコードされた命令をパイプライン内の上に渡す回路を含む。例えば、一つの実施形態において、デコーダ425は、トランザクション命令といった、特定の命令を認識するように設計または適合されたロジックを含む。デコーダ425による認識の結果、アーキテクチャまたはコア401は、適切な命令に関連するタスクを実行するために、特定の、予め定義されたアクションをとる。ここにおいて説明されるタスク、ブロック、操作、および方法のいずれも、単一または複数の命令に応答して実行されてよく、そのうちのいくつかは、新規または古い命令であってよいことに留意することが重要である。
【0030】
一つの例において、アロケータおよびリネーマ(renamer)ブロック430は、命令処理結果を保管するためのレジスタファイルといった、リソースを予約するためのアロケータを含む。しかしながら、スレッド401aおよび401bは、アロケータおよびリネームブロック430が命令結果を追跡(track)するためのリオーダバッファといった、他のリソースも予約する場合には、アウトオブオーダの実行ができる可能性がある。ユニット430は、また、プログラム/命令リファレンスレジスタをプロセッサ400の内部の他のレジスタにリネームするためのレジスタリネーマを含んでよい。再注文/廃棄ユニット435は、アウトオブオーダの実行、および、後にアウトオブオーダの実行された命令のアウトオブオーダの除去をサポートするために、上述の再注文バッファ、ロードバッファ、およびストアバッファといった、構成要素を含む。
【0031】
スケジューラおよび実行ユニットブロック440は、一つの実施形態において、実行ユニット上の命令/操作をスケジュールするスケジューラユニットを含む。例えば、浮動小数点命令は、利用可能な浮動小数点実行ユニットを有する実行ユニットのポート上でスケジュールされる。また、実行ユニットに関連付けられたレジスタファイルも含まれ、情報命令処理結果を保管する。例示的な実行ユニットは、浮動小数点実行ユニット、整数実行ユニット、ジャンプ実行ユニット、ロード実行ユニット、ストア実行ユニット、および、他の既知の実行ユニットを含んでいる。
【0032】
低レベル・データキャッシュおよびデータ変換バッファ(D-TLB)450は、実行ユニット440に結合されている。データキャッシュは、メモリコヒーレンス状態に保持される可能性のある、データオペランドといった、要素上に、最近に使用/操作されたものを保管する。D-TLBは、最近の仮想/線形の物理アドレス変換を保管する。特定の例として、プロセッサは、物理的メモリを複数の仮想ページに分割するページテーブル構造を含んでよい。
【0033】
ここで、コア401および402は、最近にフェッチ(fetched)された要素をキャッシュするための、より高レベルまたはより長い(further-out)キャッシュ410へのアクセスを共有する。より高レベルまたはより長いとは、キャッシュレベルが増えたり、または、実行ユニットから離れたりすることを指す。一つの実施形態において、より高レベルのキャッシュ410は、最後のレベルのデータキャッシュ-プロセッサ400上のメモリ階層内の最後のキャッシュ、-第2または第3レベルのデータキャッシュ、である。しかしながら、より高レベルのキャッシュ410は、命令キャッシュと関連することができ、または、命令キャッシュを含み得るので、そのように限定されない。トレースキャッシュ-命令キャッシュの一種-が、代わりに、最近デコードされたトレースを保管するために、デコーダ425の後に、結合されてよい。
【0034】
図示された構成において、プロセッサ400は、また、本発明の一つの実施形態に従ってパワー管理を行うことができる、バスインターフェイスモジュール405およびパワーコントローラ460も含んでいる。このシナリオにおいて、バスインターフェイス405は、システムメモリおよび他の構成要素といった、プロセッサ400の外部の装置と通信する。
【0035】
メモリコントローラ470は、1つ以上のメモリといった他のデバイスとインターフェイス(interface)することができる。一つの実施形態において、バスインターフェイス405は、メモリとインターフェイスするためのメモリコントローラとのリング相互接続、および、グラフィックスプロセッサとインターフェイスするためのグラフィックスコントローラを含んでいる。SoC環境においては、ネットワークインターフェイス、コプロセッサ、メモリ、グラフィックスプロセッサ、および、任意の他の既知のコンピュータ装置/インターフェイスといった、さらに多くの装置を単一のダイまたは集積回路上に集積して、高機能性および低消費パワーを有するスモールフォームファクタを提供することができる。
【0036】
これから、図5を参照すると、本発明の一つの実施形態に従った、プロセッサコアのマイクロアーキテクチャのブロック図が示されている。図5に示されるように、プロセッサコア500は、多段(multi-stage)パイプライン型アウトオブオーダプロセッサであってよい。コア500は、受け取った動作電圧、集積電圧レギュレータまたは外部電圧レギュレータから受け取ることができるもの、に基づいて、様々な電圧で動作することができる。
【0037】
図5に示されるように、コア500は、フロントエンドユニット510を含み、これは、実行される命令をフェッチし、そして、プロセッサパイプラインの後の使用のためにそれらを準備するために使用され得る。例えば、フロントエンドユニット510は、フェッチユニット501、命令キャッシュ503、および命令デコーダ505を含み得る。いくつかの実装形態において、フロントエンドユニット510は、さらに、マイクロコード・ストレージおよびマイクロ動作・ストレージと共に、トレースキャッシュを含んでよい。フェッチユニット501は、例えば、メモリまたは命令キャッシュ503から、マクロ命令をフェッチし、そして、それらを命令デコーダ505に送り(feed)、それらをプリミティブ(primitives)、すなわちプロセッサによる実行のためのマイクロ操作へとデコードするように、デコーダ505に命令することができる。
【0038】
フロントエンドユニット510と実行ユニット520との間には、マイクロ命令を受け取り、かつ、それらの実行を準備するために使用され得る、アウトオブオーダ(OOO)エンジン515が結合されている。より具体的に、OOOエンジン515は、マイクロ命令フローを再順序付け(re-order)し、かつ、実行に必要な種々のリソースを割り当てるために、並びに、レジスタファイル530および拡張レジスタファイル535といった種々のレジスタファイル内のストレージ位置に論理レジスタの名前変更(renaming)を提供するための、種々のバッファを含んでよい。レジスタファイル530は、整数および浮動小数点演算のための別々のレジスタファイルを含んでよい。拡張レジスタファイル535は、ベクトルサイズのユニット、例えば、レジスタ当たり256または512ビットのストレージを提供することができる。構成、制御、および、追加的な動作の目的のために、一式のマシン固有レジスタ(machine specific register、MSR)538が、また、コア500の中(および、コアの外部)に存在し、そして、種々のロジックにアクセス可能であってもよい。
【0039】
種々のリソースは、例えば、種々の整数、浮動小数点、および単一命令多重データ(SIMD)論理ユニット、とりわけ特殊化されたハードウェアを含んでいる、実行ユニット520内に存在することができる。例えば、そうした、実行ユニットは、とりわけ、1つ以上の算術論理ユニット(ALU)522および1つ以上のベクトル実行ユニット524を含んでよい。
【0040】
実行ユニットからの結果は、廃棄ロジック、すなわち、リオーダバッファ(ROB)540に対して提供され得る。より具体的に、ROB540は、実行される命令に関連付けられた情報を受信するために、種々のアレイおよびロジックを含んでよい。この情報は、次いで、ROB540によって検査され、命令が有効に廃棄可能であるか否か、および、結果データがプロセッサのアーキテクチャ状態にコミットされるか否か、または、命令の適切な廃棄を妨げる1つ以上の例外が発生したか否かを決定する。もちろん、ROB540は、廃棄に関連する他の動作を取り扱うことができる。
【0041】
図5に示されるように、ROB540は、キャッシュ550に結合されており、このキャッシュは、一つの実施形態において、低レベルのキャッシュ(例えば、L1キャッシュ)であってよいが、本発明の範囲は、この点に関して限定されるものではない。実行ユニット520は、また、キャッシュ550に直接的に結合することもできる。キャッシュ550から、データ通信は、より高レベルのキャッシュ、システムメモリ、などを用いて行われ得る。図5の実施形態にはこの高レベルで示されているが、本発明の範囲は、この点に関して限定されるものではないことを理解されたい。例えば、図5の実装は、Intel(R)のx86命令セットアーキテクチャ(ISA)といった、アウトオブオーダのマシンに関するものであるが、本発明の範囲は、この点に関して限定されるものではない。すなわち、他の実施形態は、インオーダプロセッサ、ARMベースのプロセッサといった、縮小命令セットコンピューティング(RISC)プロセッサ、または、エミュレーションエンジンおよび関連する論理回路を介して異なるISAの命令および動作をエミュレートすることができる、別のタイプのISAのプロセッサで実施することができる。
【0042】
これから、図6を参照すると、別の実施形態に従った、プロセッサコアのマイクロアーキテクチャのブロック図が示されている。図6の実施形態では、コア600は、異なるマイクロアーキテクチャの低パワーコアであってもよい。Intel(R)のAtomTMベースのプロセッサであり、消費パワーを削減するように設計された比較的に限定されたパイプライン深さを有する、といったものである。分かるように、コア600は、命令デコーダ615に命令を提供するために結合された命令キャッシュ610を含む。ブランチ予測器605は、命令キャッシュ610に結合されてよい。命令キャッシュ610は、さらに、L2キャッシュ(図6では、説明を容易にするために示されていない)といった、キャッシュメモリの別のレベルに結合されて得ることに留意されたい。順番に、命令デコーダ615は、所与の実行パイプラインへの保管および配送のために、発行キュー620に対してデコードされた命令を提供する。マイクロコードROM618は、命令デコーダ615に結合されている。
【0043】
浮動小数点パイプライン630は、128、256、または512ビットといった所与のビットの複数のアーキテクチャレジスタを含み得る、浮動小数点レジスタファイル632を含んでいる。パイプライン630は、浮動小数点スケジューラ634を含み、パイプラインの複数の実行ユニットのうちの1つで実行するための命令をスケジュールする。図示の実施形態において、そうした実行ユニットは、ALU635、シャッフルユニット636、および、浮動小数点加算器638を含んでいる。順番に、これらの実行ユニットで生成された結果は、レジスタファイル632のバッファ及び/又はレジスタに戻され得る。これらの少数の例示的な実行ユニットで示されているが、もちろん、別の実施形態では、追加または異なる浮動小数点実行ユニットが存在し得ることを理解されたい。
【0044】
整数パイプライン640が、また、設けられてよい。図示の実施形態において、パイプライン640は、この整数レジスタファイルは、128または256ビットといった所与のビットの複数のアーキテクチャレジスタを含み得る、整数レジスタファイル642を含んでもよい。パイプライン640は、整数スケジューラ644を含み、パイプラインの複数の実行ユニットのうちの1つで実行するための命令をスケジュールする。図示の実施形態において、そうした実行ユニットは、ALU645、シフタユニット646、およびジャンプ実行ユニット648を含んでいる。順番に、これらの実行ユニットで生成された結果は、レジスタファイル642のバッファ及び/又はレジスタに戻されてよい。これらの少数の例示的な実行ユニットで示されているが、もちろん、別の実施形態では、追加または異なる整数の実行ユニットが存在してよいことを、理解されたい。
【0045】
メモリ実行スケジューラ650は、TLB654に結合されているアドレス生成ユニット652における実行のためのメモリ動作をスケジュールすることができる。分かるように、これらの構造は、データキャッシュ660に結合され得る。データキャッシュは、L2キャッシュメモリを含む、キャッシュメモリ階層の追加的なレベルに結合するL0及び/又はL1データキャッシュであってよい。
【0046】
アウトオブオーダの実行をサポートするために、リオーダバッファ680に加えて、アロケータ/リネーマ670を設けることができる。リオーダバッファは、廃棄についてアウトオブオーダで実行された命令を順序どおり(in order)にリオーダするように構成されている。図6の説明にはこの特定のパイプラインアーキテクチャが示されているが、多くのバリエーションおよび代替が可能であることを理解されたい。
【0047】
図5および図6のマイクロアーキテクチャに従うといった、非対称コアを有するプロセッサでは、パワー管理の理由により、コア間でワークロードを動的に交換(swap)され得ることに留意されたい。これらのコアは、異なるパイプライン設計および深さを有するが、同一または関連するISAであってよいからである。そうした、動的なコアスワッピングは、ユーザアプリケーション(および、おそらくカーネル)に対して透明な方法で実行され得る。
【0048】
図7は、さらに別の実施形態に従った、プロセッサコアのマイクロアーキテクチャのブロック図である。図7に示されるように、コア700は、非常に低いパワー消費レベルで実行するために、多段階のインオーダパイプラインを含んでよい。そうした一つの例として、プロセッサ700は、カリフォルニア州サニーベールのARM Holdings社から入手可能なARM Cortex A53設計に従ったマイクロアーキテクチャを有し得る。一つの実装においては、32ビットおよび64ビットの両方のコードを実行するように構成された、8段階のパイプラインが提供されて得る。コア700は、命令をフェッチし、そして、それらをデコードユニット715に提供するように構成されたフェッチユニット710を含む。デコードユニットは、命令、例えば、ARMv8 ISAといった所与のISAのマクロ命令、をデコードすることができる。さらに、デコードされた命令を保管するために、キュー730がデコードユニット715に結合され得ることに留意されたい。デコードされた命令は、発行ロジック725に提供され、そこで、デコードされた命令は、複数の実行ユニットのうち所与の1つに対して発行され得る。
【0049】
図7を、さらに、参照すると、発行ロジック725は、複数の実行ユニットのうち1つに対する命令を発行し得る。図示の実施形態において、これらの実行ユニットは、整数ユニット735、乗算ユニット740、浮動小数点/ベクトルユニット750、二重発行ユニット760、および、ロード/ストアユニット770を含んでいる。これらの異なる実行ユニットの結果は、ライトバックユニット780に提供され得る。例示を容易にするために単一のライトバックユニットが示されているが、いくつかの実装では、別々のライトバックユニットが実行ユニットそれぞれに関連付けられてよいことを理解されたい。さらに、図7に示されるユニットおよびロジックそれぞれは高レベルで示されているが、特定の実施形態は、より多くの、または、異なる構造を含み得ることを理解されたい。図7のようなパイプラインを有する1つ以上のコアを使用して設計されたプロセッサは、モバイルデバイスからサーバシステムまで広がる、多くの異なる最終製品に実装することができる。
【0050】
図8は、さらに別の実施形態に従った、プロセッサコアのマイクロアーキテクチャのブロック図である。図8に示されるように、コア800は、非常に高い性能レベル(図7のコア700よりも高いパワー消費レベルで発生し得るもの)で実行するために、多段マルチ発行アウトオブオーダパイプラインを含んでよい。そうした一つの例として、プロセッサ800は、ARM Cortex A57設計に従ったマイクロアーキテクチャを有し得る。一つの実装においては、32ビットおよび64ビット両方のコードを実行するように構成された、15段階(または、それ以上)のパイプラインが提供されてよい。加えて、パイプラインは、3(または、それ以上の)幅、および、3(または、それ以上の)発行動作を提供することができる。コア800は、命令をフェッチし、それらをデコーダ/リネーマ/ディスパッチャ815に提供するように構成されたフェッチユニット810を含む。デコーダ/リネーマ/ディスパッチャは、命令、例えば、ARMv8命令セットアーキテクチャのマクロ命令をデコードし、命令内のレジスタ参照をリネームし、かつ、選択された実行ユニットに(最終的に)命令を送る(dispatch)ことができる。デコードされた命令は、キュー825に保管されてよい。図8においては説明を容易にするために単一のキュー構造が示されているが、複数の異なるタイプの実行ユニットそれぞれに対して別々のキューが提供され得ることを理解するように留意されたい。
【0051】
図8には、また、発行ロジック(issue logic)830が示されており、そこから、キュー825に保管されているデコードされた命令が、選択された実行ユニットに対して発行され得る。発行ロジック830は、また、論理830が結合される複数の異なる種類の実行ユニットそれぞれに対して別個の発行ロジックを有する特定の実施形態において実施されてよい。
【0052】
デコードされた命令は、複数の実行ユニットのうち所与の1つに対して発行され得る。図示の実施形態において、これらの実行ユニットは、1つ以上の整数ユニット835、乗算ユニット840、浮動小数点/ベクトルユニット850、分岐ユニット860、および、ロード/ストアユニット870を含んでいる。一つの実施形態において、浮動小数点/ベクトルユニット850は、128ビットまたは256ビットのSIMDまたはベクトルデータを処理するように構成されてよい。さらに、浮動小数点/ベクトル実行ユニット850は、IEEE-754倍精度浮動小数点演算を実行することができる。これらの異なる実行ユニットの結果は、ライトバックユニット880に対して提供され得る。いくつかの実装では、別々のライトバックユニットが実行ユニットそれぞれに関連付けられ得ることに留意されたい。さらに、図8に示されるユニットおよびロジックそれぞれは高レベルで表さていれるが、特定の実施形態は、より多くの、または異なる構造を含み得ることを理解されたい。
【0053】
図7および図8のマイクロアーキテクチャに従うといった、非対称コアを有するプロセッサにおいて、これらのコアは、異なるパイプライン設計および深さを有するが、同一または関連するISAであってよいため、パワー管理の理由により、ワークロードが動的に交換され得ることに留意されたい。そうした動的なコアスワッピングは、ユーザアプリケーションに対して(および、おそらくカーネルに対しても)透明(transparent)な方法で実行することができる。
【0054】
図5-8のいずれか1つ以上のパイプラインを有する1つ以上のコアを使用して設計されたプロセッサは、モバイルデバイスからサーバシステムまで広がる、多くの異なる最終製品において実装することができる。これから、図9を参照すると、本発明の別の実施形態に従った、プロセッサのブロック図が示されている。図9の実施形態において、プロセッサ900は、複数のドメインを含むSoCであってよく、各ドメインは、独立した動作電圧および動作周波数で動作するように制御されてよい。具体的な例として、プロセッサ900は、i3、i5、i7などのIntel(R) Architecture CoreTMベースのプロセッサ、または、Intel社から入手可能な別のそうしたプロセッサであってよい。しかしながら、カリフォルニア州サニーベールのAdvanced Micro Devices社(AMD)から入手可能な他の低パワープロセッサ、ARM Holdings社またはそのライセンシーから入手可能なARMベースの設計、もしくは、カリフォルニア州サニーベールのMIPS Technologies社、または、それらのライセンシーもしくは採用者から入手可能なMIPSベースの設計は、Apple A7プロセッサ、Qualcomm Snapdragonプロセッサ、またはTexas Instruments OMAPプロセッサといった、他の実施形態において、代わりに、存在してよい。そうしたSoCは、スマートフォン、タブレットコンピュータ、ファブレットコンピュータ、UltrabookTMコンピュータ、または他のポータブルコンピューティングデバイス、もしくは接続されたデバイスといった、低パワーシステムで使用され得る。
【0055】
図9に示される高レベル図において、プロセッサ900は、複数のコアユニット9100-910nを含んでいる。各コアユニットは、1つ以上のプロセッサコア、1つ以上のキャッシュメモリ、および、他の回路を含み得る。各コアユニット910は、1つ以上の命令セット(例えば、x86命令セット(より新しいバージョンで追加されたいくつかの拡張子を有する)、MIPS命令セット、ARM命令セット(NEONといった任意の追加の拡張子を有する))、または、他の命令セット、もしくは、それらの組み合わせをサポートすることができる。コアユニットのいくつかは、異種リソース(例えば、異なる設計のもの)であり得るあることに留意されたい。加えて、そうした各コアは、キャッシュメモリ(図示なし)に結合されてよく、一つの実施形態において共有レベル(L2)キャッシュメモリであり得る、キャッシュメモリ(図示なし)に結合されてよい。不揮発性ストレージ930を使用して、種々のプログラムおよび他のデータを保管することができる。例えば、このストレージは、マイクロコードの少なくとも一部、BIOSといったブート情報、他のシステムソフトウェア、等を保管するために使用することができる。
【0056】
各コアユニット910は、また、プロセッサの追加の回路への相互接続を可能にするために、バスインターフェイスユニットといったインターフェイスを含んでもよい。一つの実施形態に従った、各コアユニット910は、一次キャッシュコヒーレント・オン・ダイ相互接続(primary cache coherent on-die interconnect)として作用することができ、順番に、メモリコントローラ935に接続する、コヒーレントファブリック(coherent fabric)に対して接続される。順番に、メモリコントローラ935は、DRAM(図9では説明を容易にするために図示されていない)といった、メモリとの通信を制御する。
【0057】
コアユニットに加えて、少なくとも1つのグラフィックスユニット920を含む、追加的な処理エンジンがプロセッサ内に存在する。処理エンジンは、グラフィックス処理を実行し、並びに、グラフィックスプロセッサ上の汎用的な動作(いわゆるGPGPU動作)を実行するために、1つ以上のグラフィックス処理ユニットを含んでよい。加えて、少なくとも1つの画像信号プロセッサ925が存在し得る。信号プロセッサ925は、SoCの内部またはオフチップのいずれかで、1つ以上のキャプチャデバイスから受信された入力画像データを処理するように構成され得る。
【0058】
他のアクセラレータ(accelerator)も、また、存在し得る。図9の例において、ビデオコーダ(video coder)950は、ビデオ情報のための符号化および復号化(encoding and decoding)を含むコード化動作を実行することができ、例えば、高精細度ビデオコンテンツのためのハードウェア・アクセラレーション・サポートを提供してい。ディスプレイコントローラ955が、さらに、備えられてよく、システムの内部および外部ディスプレイのためにサポートを提供すること含む、ディスプレイ動作を加速し得る。加えて、セキュリティプロセッサ945が、セキュアなブート動作、種々の暗号化動作、等といった、セキュリティ動作を実行するように存在し得る。
【0059】
ユニットそれぞれは、パワーマネージャ940を介してそのパワー消費を制御することができる。ユニットは、ここにおいて説明される種々のパワー管理技術を実行するための制御ロジックを含み得る。
【0060】
いくつかの実施形態において、SoC900は、さらに、様々な周辺装置が結合され得るコヒーレントファブリックに結合された、非コヒーレントファブリックを含んでよい。1つ以上のインターフェイス960a-960dは、1つ以上のオフチップデバイスとの通信を可能にする。そうした通信は、あまたある通信プロトコルの中でPCIeTM、GPIO、USB、I2C、UART、MIPI、SDIO、DDR、SPI、HDMI(登録商標)といった、様々なタイプの通信プロトコルを介して行うことができる。図9の実施形態ではこの高レベルにおいて示されているが、本発明の範囲は、この点に関して限定されるものではないことを理解されたい。
【0061】
これから図10を参照すると、代表的なSoCのブロック図が示されている。図示される実施形態において、SoC1000は、スマートフォン、またはタブレットコンピュータ、もしくは他のポータブルコンピューティングデバイスといった他の低パワーデバイスの中へ組み込むために最適化される低パワー動作のために構成されたマルチコアSoCであってよい。一つの例として、SoC1000は、高出力及び/又は低出力コア、例えば、アウトオブオーダコアおよびインオーダコアの組み合わせといった、非対称または異なるタイプのコアを使用して実装されてよい。異なる実施形態において、これらのコアは、Intel(R)ArchitectureTMコア設計またはARMアーキテクチャ設計に基づいてよい。さらに他の実施形態では、Intel(R)コアとARMコアの混合が所与のSoにおいて実装され得る。
【0062】
図10から分かるように、SoC1000は、複数の第1コア10120-10123を有する第1コアドメイン1010を含んでいる。一つの実施形態において、これらのコアは、インオーダコアといった低パワーコアであってよい。一つの実施形態において、これらの第1コアは、ARM Cortex A53コアとして実装されてよい。順番に、これらのコアは、コアドメイン1010のキャッシュメモリ1015に結合される。加えて、SoC1000は、第2コアドメイン1020を含んでいる。図10の説明において、第2コアドメイン1020は、複数の第2コア10220-10223を有する。一つの実施形態において、これらのコアは、第1コア1012よりも高いパワー消費コアであり得る。一つの実施形態において、第2コアは、ARM Cortex A57コアとして実装され得るアウトオブオーダのコアであってよい。順番に、これらのコアは、コアドメイン1020のキャッシュメモリ1025に結合される。図10に示す例は、各ドメイン内に4つのコアを含むが、他の例では、所与のドメイン内に存在するコアは、より多く、または、より少ないことを理解するように留意されたい。
【0063】
図10をさらに参照すると、グラフィックスドメイン1030も、また、提供されている。グラフィックスドメインは、グラフィックス・ワークロードを独立して実行するように構成された1つ以上のグラフィックス処理ユニットを含んでよく、例えば、コアドメイン1010および1020の1つ以上のコアによって提供される。一つの例として、GPUドメイン1030は、グラフィックスおよび表示レンダリング動作を提供することに加えて、様々な画面サイズのための表示サポートを提供するために使用され得る。
【0064】
分かるように、種々のドメインは、コヒーレント相互接続1040に結合されており、これは、一つの実施形態では、順番に集積メモリコントローラ1050に結合されるキャッシュコヒーレント相互接続ファブリックであってよい。コヒーレント相互接続1040は、いくつかの実施例では、L3キャッシュといった、共有キャッシュメモリを含んでよい。一つの実施形態において、メモリコントローラ1050は、DRAMの複数チャネル(図10では説明を容易にするために示されていない)といった、オフチップメモリとの複数チャネルの通信を提供するための直接的なメモリコントローラであってよい。
【0065】
異なる実施例では、コアドメインの数が変化し得る。例えば、モバイルコンピューティングデバイスの中へ組み込むのに適した低パワーSoCについては、図10に示されるように限定された数のコアドメインが存在し得る。なおも、さらに、そうした低パワーSoCにおいて、より高いパワーコアを含むコアドメイン1020は、より少ない数のそうしたコアを有してよい。例えば、一つの実施形態では、低減されたパワー消費レベルでの動作を可能にするために、2つのコア1022が備えられてよい。加えて、異なるコアドメインは、また、異なるドメイン間のワークロードの動的なスワップを可能にするために、割り込みコントローラに結合されてもよい。
【0066】
さらに他の実施形態では、デスクトップ、サーバ、高性能コンピューティングシステム、基地局など、といった他のコンピューティングデバイスの中へ組み込むために、SoCをより高い性能(およびパワー)レベルへスケール化(scale)することができるという点で、より多くのコアドメイン、並びに、追加のオプションのIPロジックが存在し得る。そうした一つの例として、各々が所与の数のアウトオブオーダのコアを有する4つのコアドメインが提供され得る。なおも、さらに、任意的なGPUサポート(例として、GPGPUの形態をとり得るもの)に加えて、特定の機能(例えば、ウェブサービス、ネットワーク処理、スイッチング、など)のために最適化されたハードウェアサポートを提供するための1つ以上のアクセラレータも、また、提供され得る。加えて、そうした、アクセラレータをオフチップ構成要素に結合するために、入力/出力インターフェイスが存在し得る。
【0067】
これから、図11を参照すると、別の例のSoCのブロック図が示されている。図11の実施形態において、SoC1100は、マルチメディアアプリケーション、通信、および他の機能のための高性能を可能にするための種々の回路を含み得る。かくして、SoC1100は、スマートフォン、タブレットコンピュータ、スマートテレビなど、といった、様々なポータブルデバイスおよび他のデバイスの中へ組み込むのに適している。図示の例において、SoC1100は、中央処理装置(CPU)ドメイン1110を含んでいる。一つの実施形態では、複数の個別のプロセッサコアがCPUドメイン1110内に存在してよい。一つの例として、CPUドメイン1110は、4つのマルチスレッドコアを有するクワッドコアプロセッサであってよい。そうしたプロセッサは、均質(homogeneous)または異質(heterogeneous)なプロセッサ、例えば、低パワーおよび高パワープロセッサコアの混合、であよい。
【0068】
順番に、GPUドメイン1120は、1つ以上のGPUにおいて高度なグラフィックス処理を実行するために提供され、グラフィックスを処理し、かつ、APIを計算する。DSPユニット1130は、マルチメディア命令の実行中に起こり得る高度な計算に加えて、音楽再生、オーディオ/ビデオ、などの低パワーマルチメディアアプリケーションを処理するための1つ以上の低パワーDSPを提供することができる。順番に、通信ユニット1140は、セルラー通信(3G/4G LTEを含む)、Bluetooth(登録商標)、IEEE 802.11など、といった無線ローカルエリアプロトコルなどの、様々な無線プロトコルを介して接続性を提供する様々な構成要素を含んでよい。
【0069】
なおも、さらに、マルチメディアプロセッサ1150は、ユーザジェスチャの処理を含む、高精細度ビデオおよびオーディオコンテンツのキャプチャおよび再生を実行するために使用され得る。センサユニット1160は、所与のプラットフォーム内に存在する種々のオフチップセンサとインターフェイスするために、複数のセンサ及び/又はセンサコントローラを含み得る。画像信号プロセッサ1170は、静止画カメラおよびビデオカメラを含む、プラットフォームの1つ以上のカメラからキャプチャされたコンテンツに関する画像処理を行うために、1つ以上の別々のISPを備えることができる。
【0070】
ディスプレイプロセッサ1180は、そうした、ディスプレイ上で再生するためにコンテンツを無線で通信する能力を含む、所与のピクセル密度の高精細度ディスプレイへの接続のためのサポートを提供することができる。なおも、さらに、位置決めユニット1190は、そうしたGPS受信器を使用して獲得された非常に正確な位置決め情報をアプリケーションに提供するために、複数のGPS配置(constellation)をサポートするGPS受信器を含んでよい。図11の例では、この特定の一組の構成要素が示されいるが、多くのバリエーションおよび代替が可能であることを理解されたい。
【0071】
これから、図12を参照すると、実施形態を共に使用することができる一つの例示的なシステムのブロック図が示されている。分かるように、システム1200は、スマートフォンまたは他のワイヤレス通信器であってよい。ベースバンドプロセッサ1205は、システムから送信されるか又はシステムによって受信される通信信号に関して種々の信号処理を実行するように構成されている。順番に、ベースバンドプロセッサ1205は、多くの周知のソーシャルメディアおよびマルチメディアアプリといったユーザアプリケーションに加えて、OSおよび他のシステムソフトウェアを実行するためのシステムのメインCPUであり得る、アプリケーションプロセッサ1210に結合されている。アプリケーションプロセッサ1210は、さらに、装置のための種々の他の演算操作を実行し、そして、ここにおいて説明されるパワー管理技術を実行するように構成され得る。
【0072】
順番に、アプリケーションプロセッサ1210は、ユーザインターフェイス/ディスプレイ1220、例えば、タッチスクリーンディスプレイ、に結合することができる。加えて、アプリケーションプロセッサ1210は、不揮発性メモリ、すなわちフラッシュメモリ1230、および、システムメモリ、すなわちダイナミックランダムアクセスメモリ(DRAM)1235を含むメモリ・システムに対して結合し得る。さらに分かるように、アプリケーションプロセッサ1210は、ビデオ画像及び/又は静止画像を記録することができる1つ以上の画像キャプチャデバイスといったキャプチャデバイス1240に対して、さらに、結合する。
【0073】
なおも、図12を参照すると、加入者識別モジュールと、おそらくセキュアなストレージと、暗号化プロセッサとを含むユニバーサル集積回路カード(UICC)1240も、また、アプリケーションプロセッサ1210に結合されている。システム1200は、さらに、アプリケーションプロセッサ1210に結合可能なセキュリティプロセッサ1250を含み得る。複数のセンサ1225が、加速度計および他の環境情報といった種々の感知された情報の入力を可能にするために、アプリケーションプロセッサ1210に結合され得る。オーディオ出力装置1295は、例えば、音声通信、音声データの再生またはストリーミング、などの形態で、音声を出力するためのインターフェイスを提供することができる。
【0074】
さらに示されるように、近接場通信(NFC)非接触インターフェイス1260が提供され、NFCアンテナ1265を介してNFC近接場において通信する。図12には別個のアンテナが示されているが、いくつかの実装では、種々の無線器能を可能にするために、1つのアンテナまたは異なるアンテナセットが提供され得ることを理解されたい。
【0075】
PMIC1215は、プラットフォームレベルのパワー管理を実行するためにアプリケーションプロセッサ1210に結合されている。この目的のために、PMIC1215は、希望通りに所定の低パワー状態に入るために、アプリケーションプロセッサ1210に対してパワー管理要求を発行することができる。さらに、プラットフォームの制約に基づいて、PMIC1215は、また、システム1200の他の構成要素のパワーレベルも制御し得る。
【0076】
通信が送信され、かつ、受信されるのを可能にするために、ベースバンドプロセッサ1205とアンテナ1290との間に様々な回路が結合され得る。特定的に、無線周波数(RF)トランシーバ1270および無線ローカルエリアネットワーク(WLAN)トランシーバ1275が存在し得る。一般的に、RFトランシーバ1270は、コード分割多元接続(CDMA)、移動通信のためのグローバルシステム(GSM)、ロングタームエボリューション(LTE)、または他のプロトコルに従うような、3Gまたは4G無線通信プロトコルといった、所与の無線通信プロトコルに従って、無線データおよびコールを受信し、かつ、受信するために使用され得る。加えて、GPSセンサ1280が存在し得る。無線信号、例えばAM/FM、および、他の信号の受信または送信といった、他の無線通信も、また、提供され得る。加えて、WLANトランシーバ1275を介して、ローカル無線通信も、また、実現され得る。
【0077】
これから、図13を参照すると、実施形態と共に使用され得る別の例示的なシステムのブロック図が示されている。図13の説明において、システム1300は、タブレットコンピュータ、2:1タブレット、ファブレット、または、他のコンパーチブルもしくはスタンドアロンタブレットシステムといった、モバイル低パワーシステムであってよい。図示されるように、SoC1310が存在し、そして、装置のアプリケーションプロセッサとして動作し、かつ、ここにおいて説明されるパワー管理技術を実行するように、構成され得る。
【0078】
種々のデバイスがSoC1310に結合され得る。図示の説明において、メモリサブシステムは、SoC1310に結合されたフラッシュメモリ1340およびDRAM1345を含んでいる。加えて、タッチパネル1320は、タッチパネル1320のディスプレイ上に仮想キーボードを設けることを含み、表示能力、および、タッチを介したユーザ入力を提供するためにSoC1310に結合されている。有線ネットワーク接続を提供するために、SoC1310は、イーサネットインターフェイス1330に結合している。周辺(peripheral)ハブ1325は、SoC1310に結合され、様々なポートまたは他のコネクタのいずれかによってシステム1300に結合され得るといった、様々な周辺装置とのインターフェイスを可能にする。
【0079】
SoC1310内の内部パワー管理回路および機能性に加えて、PMIC1380がSoC1310に結合され、例えば、システムが、バッテリ1390により、または、ACアダプタ1395を介してACパワーにより、給電されるかに基づいて、プラットフォームベースのパワー管理を提供する。この電源ベースのパワー管理に加えて、PMIC1380は、さらに、環境および使用条件に基づいて、プラットフォームのパワー管理活動を実行することができる。なおも、さらに、PMIC1380は、制御およびステータス情報をSoC1310に通信して、SoC1310内で様々なパワー管理動作を引き起こすことができる。
【0080】
なおも、図13を参照すると、無線能力を提供するために、無線LANユニット1350は、SoC1310に、そして、順番に、アンテナ1355に結合されている。様々な実装において、WLANユニット1350は、1つ以上の無線プロトコルに従った通信を提供することができる。
【0081】
さらに示されるように、複数のセンサ1360が、SoC1310に結合されてよい。これらのセンサは、種々の加速度計、環境センサ、および、ユーザジェスチャセンサを含む他のセンサ、を含み得る。最終的に、音声コーデック1365が、SoC1310に結合され、音声出力装置1370へのインターフェイスを提供する。図13にはこの特定の実装が示されているが、多くのバリエーションおよび代替案可能であることを、もちろん、理解されたい。
【0082】
これから、図14を参照すると、ノートブック、UltrabookTM、または、他のスモールフォームファクタシステムといった代表的なコンピュータシステムのブロック図が示されている。プロセッサ1410は、一つの実施形態では、マイクロプロセッサ、マルチコアプロセッサ、マルチスレッドプロセッサ、超低電圧プロセッサ、埋め込みプロセッサ、または、他の公知の処理要素、を含んでいる。図示された実装において、プロセッサ1410は、メイン処理ユニット、および、システム1400の様々な構成要素の多くと通信するための中央ハブとして機能する。一つの例として、プロセッサ1400は、SoCとして実装されている。
【0083】
プロセッサ1410は、一つの実施形態において、システムメモリ1415と通信する。説明的な実施例として、システムメモリ1415は、所与の量のシステムメモリを提供するために、複数のメモリデバイスまたはモジュールを介して実装される。
【0084】
データ、アプリケーション、1つ以上のオペレーティングシステムなど、といった情報の永続的なストレージを提供するために、また、大容量ストレージ1420もプロセッサ1410に結合することができる。様々な実施形態では、より薄く、かつ、より軽量なシステム設計を可能にし、並びに、システムの応答性を改善するために、この大容量ストレージは、SSDを介して実装されてよく、または、この大容量ストレージは、主に、より少ない量のSSDストレージを有するハードディスクドライブを使用して実装されて、SSDキャッシュとして作用し、システム活動の再始動時に高速なパワーアップが発生するように、パワー停止イベントの間にコンテキスト状態およびその他の情報の不揮発性ストレージを可能にする。また、図14に示されるように、フラッシュ装置1422は、例えば、シリアル周辺インターフェイス(SPI)を介してプロセッサ1410に結合され得る。このフラッシュ装置は、基本入力/出力ソフトウェア(BIOS)、並びに、システムの他のファームウェアを含む、システムソフトウェアの不揮発性ストレージを提供することができる。
【0085】
種々の入力/出力(I/O)装置が、システム1400内に存在してよい。特に、図14の実施形態で示されているのは、タッチスクリーン1425をさらに提供する高精細度LCDまたはLEDパネルであり得る、ディスプレイ1424である。一つの実施形態において、ディスプレイ1424は、高性能グラフィックス相互接続として実装することができるディスプレイ相互接続を介してプロセッサ1410に結合され得る。タッチスクリーン1425は、別の相互接続を介してプロセッサ1410に結合され得る。相互接続は、一つの実施形態においては、I2C相互接続であってもい。図14にさらに示されるように、タッチスクリーン1425に加えて、タッチとしてのユーザ入力は、シャーシ内に構成され、そして、タッチスクリーン1425と同じI2C相互接続にも、また、結合され得る、タッチパッド1430を介して行うことができる。
【0086】
知覚コンピューティングおよび他の目的のために、種々のセンサがシステム内に存在し、そして、異なる方法でプロセッサ1410に結合され得る。所定の慣性センサおよび環境センサは、センサ・ハブ1440を介して、例えば、I2C相互接続を介して、プロセッサ1410に結合することができる。図14に示される実施形態において、これらのセンサは、加速度計1441、周囲光(ALS)センサ1442、コンパス1443、およびジャイロスコープ1444を含み得る。他の環境センサは、システム管理バス(SMBus)を介してプロセッサ1410に結合される1つ以上の熱センサ1446を含み得る。
【0087】
また、図14で分かるように、種々の周辺装置が、ローピンカウント(LPC)相互接続を介してプロセッサ1410に結合されてもよい。図示の実施形態では、種々のコンポーネントを、埋め込みコントローラ1435を介して結合することができる。そうした構成要素は、キーボード1436(例えば、PS2インターフェイスを介して結合される)、ファン1437、および、熱センサ1439を含み得る。いくつかの実施形態において、タッチパッド1430は、また、PS2インターフェイスを介してEC1435に結合されてもよい。さらに、トラステッドプラットフォームモジュール(TPM)1438といった、セキュリティプロセッサも、また、このLPC相互接続を介してプロセッサ1410に結合することができる。
【0088】
システム1400は、ワイヤレスを含む様々な方法で外部装置と通信することができる。図14に示される実施形態では、各々が特定の無線通信プロトコル用に構成された無線器(radio)に対応することができる、種々の無線モジュールが存在している。近接場(near field)といった短距離での無線通信のための一つの方法は、一つの実施形態では、SMBusを介してプロセッサ1410と通信することができる、NFCユニット1445を介したものであり得る。このNFCユニット1445を介して、近接した装置は相互に通信できることに留意されたい。
【0089】
図14でさらに分かるように、追加の無線ユニットは、無線LANユニット1450およびBluetoothユニット1452を含む、他の短距離無線エンジンを含み得る。WLANユニット1450を使用して、Wi-FiTM通信を実現することができ、一方、Bluetoothユニット1452を使用して、短距離のBluetoothTM通信を行うことができる。これらのユニットは、所与のリンクを介してプロセッサ1410と通信することができる。
【0090】
加えて、無線広域通信は、例えば、セルラーまたは他の無線広域プロトコルに従って、WWANユニット1456を介して行うことができる。WWANユニットは順番に、加入者識別モジュール(SIM)1457に結合し得る。加えて、位置情報の受信および使用を可能にするために、GPSモジュール1455も、また、存在してよい。図14に示される実施形態では、WWANユニット1456、および、カメラモジュール1454といった統合キャプチャ装置が、所与のリンクを介して通信し得ることに留意されたい。
【0091】
統合カメラモジュール1454は、蓋(lid)に組み込むことができる。オーディオ入力および出力を提供するために、オーディオプロセッサは、デジタル信号プロセッサ(DSP)1460を介して実装することができる。DSPは、高精細度オーディオ(HDA)リンクを介してプロセッサ1410に結合し得る。同様に、DSP1460は、統合コーダ/デコーダ(CODEC)及びアンプ1462と通信することができ、順番に、それは、シャーシ内に実装され得る、出力スピーカ1463と結合することができる。同様に、アンプ及びCODEC1462は、マイクロホン1465から音声入力を受信するように結合することができる。このマイクロホンは、一つの実施形態では、デュアルアレイマイクロホン(デジタルマイクロホンアレイといったもの)を介して実装することができ、高品質の音声入力を提供して、システム内の様々な動作の音声作動制御を可能にする。音声出力は、アンプ/CODEC1462からヘッドフォンジャック1464へ供給され得ることにも、また、留意されたい。図14の実施形態には、これらの特定の構成要素を用いて示されているが、本発明の範囲は、この点に関して限定されるものではないことを理解されたい。
【0092】
実施形態は、多くの異なるシステムタイプにおいて実施することができる。これから、図15を参照すると、本発明の一つの実施形態に従った、システムのブロック図が示されている。図15に示されるように、マルチプロセッサシステム1500は、ポイントツーポイント相互接続システムであり、そして、ポイントツーポイント相互接続1550を介して結合された第1プロセッサ1570および第2プロセッサ1580を含んでいる。図15に示されるように、プロセッサ1570および1580それぞれは、第1および第2プロセッサコア(すなわち、プロセッサコア1574aおよび1574b、並びに、プロセッサコア1584aおよび1584b)を含む、マルチコアプロセッサであり得るが、プロセッサ内には、潜在的に、より多くのコアが存在してよい。プロセッサそれぞれは、プロセッサベースのパワー管理を実行するためにPCU1575、1585を含むことができ、ここにおいて説明されるように、非推論的な命令実行の要求に応答してパワーライセンス付与を実行し、かつ、コアTDP値に基づくワークロード実行について周波数ライセンスの事前付与を実行するためのライセンス付与回路1559を含んでいる。
【0093】
なおも図15を参照すると、第1プロセッサ1570は、さらに、メモリコントローラハブ(MCH)1572、並びに、ポイントツーポイントインターフェイス1576および1578を含んでいる。同様に、第2プロセッサ1580は、MCH1582、並びに、P-Pインターフェイス1586および1588を含んでいる。図15に示されるように、MCH1572および1582は、プロセッサをそれぞれのメモリ、すなわち、メモリ1532およびメモリ1534に結合し、これらは、それぞれのプロセッサにローカルに取り付けられたシステムメモリ(例えば、DRAM)の一部であってよい。第1プロセッサ1570および第2プロセッサ1580は、それぞれに、P-P相互接続1562および1564を介してチップセット1590に結合され得る。図15に示されるように、チップセット1590は、P-Pインターフェイス1594および1598を含んでいる。
【0094】
さらに、チップセット1590は、P-P相互接続1539によって、チップセット1590を高性能グラフィックエンジン1538と結合するためのインターフェイス1592を含んでいる。順番に、チップセット1590は、インターフェイス1596を介して第1バス1516に結合することができる。図15に示されるように、種々の入力/出力(I/O)装置1514は、第1バス1516を第2バス1520に結合するバスブリッジ1518と共に、第1バス1516に結合され得る。一つの実施形態では、種々の装置が、第2バス1520に結合されてよく、例えば、キーボード/マウス1522、通信装置1526、および、コード1530を含み得るディスクドライブまたは他の大容量ストレージといったデータストレージユニット1528を含んでいる。さらに、オーディオI/O1524は、第2バス1520に結合され得る。実施形態は、スマート携帯電話、タブレットコンピュータ、ネットブック、UltrabookTMなど、といったモバイルデバイスを含む、他のタイプのシステムの中に組み込むことができる。
【0095】
図16は、一つの実施形態に従った、動作を実行するための集積回路を製造するために使用され得るIPコア開発システム1600を示すブロック図である。IPコア開発システム1600は、より大きな設計に組み込むことができ、または、集積回路(例えば、SoC集積回路)全体を構築するために使用できる、モジュール式の(modular)再利用可能な設計を生成するために使用され得る。設計機能1630は、高レベルプログラミング言語(例えば、C/C++)におけるIPコア設計のソフトウェアシミュレーション1610を生成することができる。ソフトウェアシミュレーション1610は、IPコアの挙動を設計、テスト、および検証するために使用され得る。レジスタ転送レベル(RTL)設計が、次いで、シミュレーションモデルから作成または合成され得る。RTL設計1615は、ハードウェアレジスタ間のデジタル信号の流れをモデル化する集積回路の挙動の抽象概念であり、モデル化されたデジタル信号を用いて実行される関連論理を含んでいる。RTL設計1615に加えて、論理レベルまたはトランジスタレベルでのより低いレベルの設計も、また、生成、設計、または合成され得る。従って、初期設計およびシミュレーションの特定の詳細は、変動し得る。
【0096】
RTL設計1615または均等物は、設計機能によって、さらに、ハードウェアモデル1620へと合成され得る。ハードウェアモデルは、ハードウェア記述言語(HDL)、または、物理的設計データに係るいくつかの他の表現であってよい。HDLは、さらに、IPコア設計を検証するためにシミュレーションまたは試験され得る。IPコア設計は、第三者の製造施設1665に配送するために、不揮発性メモリ1640(例えば、ハードディスク、フラッシュメモリ、または、任意の不揮発性記憶媒体)を使用して保管され得る。代替的に、IPコア設計は、有線接続1650または無線接続1660を介して(例えば、インターネットを介して)送信され得る。製造施設1665は、次いで、少なくとも部分的にIPコア設計に基づく、集積回路を製造することができる。製造された集積回路は、ここにおいて説明される少なくとも1つの実施形態に従って、動作を実行するように構成することができる。
【0097】
図17を参照すると、本発明の一つの実施形態に従った、プロセッサ1700のブロック図が示されている。プロセッサ1700は、複数のコア17020、1702n、および、任意的に少なくとも1つの他の計算要素1712、例えばグラフィックスエンジン、を含み得る。示されるように、コア17020において、各コア1702i(i=1,n)は、実行回路1704i、アウトオブオーダ(OOO)回路1706i、カウンタ回路1708i、および、電流保護(IccP)コントローラ1710iを含み得る。例えば、コア17020は、実行ユニット17040、OOO回路ユニット17060、カウンタ回路17080、および、IccPコントローラ17100を含んでいる。プロセッサ1700は、また、加算回路1732および決定回路1734を含み得る、パワー管理ユニット1730を含む。
【0098】
動作中に、コア17020、・・・、1702nそれぞれ、および、計算要素1712は、それぞれのIccPライセンス要求17360、・・・、1736nを発行することができる。各ライセンス要求は、コア1702iに係るそれぞれのIccPコントローラ1710i(例えば、コア17020のIccPコントローラ17100)によって決定され得る。そして、ライセンス要求は、例えば、それぞれの実行ユニット1704i(例えば、コア17020の実行ユニット17040)によって指定された期間中に実行されるべき命令のグループのパワーウェイト(power weight)の合計に基づいてよい。パワーウェイトの合計は、カウンタ論理1708iによって決定され得る。例えば、ライセンス要求のサイズ、例として、最初の期間に実行される実行キュー内の命令のグループを実行するためにコア1702iに利用可能な最大電流(Icc)の大きさは、命令のグループのパワーウェイトの合計に基づいて決定され得る。このパワーウェイトの合計は、少なくとも部分的に命令に係る命令幅(instruction width)および命令のタイプに基づいてよいことに留意されたい。所定の命令は、より大きな幅であってさえ、その命令幅の他の命令と同じパワー消費を負わないことが認識されるからである。
【0099】
各コアは、異なるレベルのIccに関連する異なるライセンスについてPMU1730に要求することができる。PMU1730は、異なるコアのライセンス要求を考慮して、ライセンス要求に従ってアクションを決定することができる。アクションは、例えば、ライセンスに応じてコア周波数を変更すること、ガードバンド電圧を増加させること、または、コアに供給されるパワーを制限する別のメカニズムを含み得る。PMU1730は、コアが要求するライセンスに従って、ガードバンド電圧を上昇させるか、或る性能を低下させるか(例えば、コア周波数を低下させる)、または、別の動作を行うか、あるいは、それらの組み合わせを決定することができる。PMU1730は、次いで、各コア/計算要素(17020-1702n、1712)に対して、コア/計算要素の最大期待電流ドロー(Icc)に関連する、それぞれのライセンス17380、17381、・・・、1738n(図17、17380-17383)を発行することができる。
【0100】
例えば、OOO論理17060は、コア17020の実行ユニット17040によって第1期間中に実行されるべき実行キューにある第1グループ内の命令を識別することができる。OOO論理17060は、カウンタ論理17080に、第1グループの命令の表示(例えば、識別リスト)を提供することができる。カウンタ論理17080は、(例えば、一つの実施形態では、実行論理17040によって提供され得る、ルックアップテーブルまたは他のデータ記憶装置を介して)第1グループの命令それぞれについて対応するパワーウェイトを決定することができる。各パワーウェイトは、対応する命令幅に依存しないそれぞれの値を有し得る。カウンタ論理17080は、第1グループに対するパワーウェイトの合計を決定することができる。カウンタ論理17080は、IccPコントローラ17100にパワーウェイトの合計を提供することができる。IccPコントローラは、パワーウェイトの合計に基づいて、コアの要求された最大電流(Icc)に関連付けられた、IccPライセンス要求17360を決定することができ、そして、IccPライセンス要求17360をPMU17300に送信することができる。実施形態において、IccPコントローラ1710は、ライセンス要求の基礎を形成する1つ以上の命令が、ここにおいてさらに説明されるように、推論的な命令であると判断される場合に、そうしたライセンス要求の送信を延期することができることに留意されたい。それにもかかわらず、電流パワーライセンスレベルを超えるパワーライセンスレベルに対する受信されたライセンス要求に応答して、IccPコントローラ1710は、コア1702内の命令の実行を調整(throttle)するスロットル信号を発行するように構成され得る。
【0101】
PMU1730は、各コア17020、・・・、1702nから(および、任意的に、計算要素1712といった1つ以上の計算要素から)それぞれのライセンス要求、IccPを受け取ることができ、そして、PMU1730は、加算ロジック1732および決定ロジック1734の組み合わせを介して、コア及び/又は計算要素のそれぞれについてそれぞれのライセンスを決定することができる。例えば、一つの実施形態において、加算ロジック1732は、IccPライセンス要求それぞれの電流要求を加算することができ、そして、決定ロジック1734は、コア/計算要素の要求されたIccおよびPMU1730の総電流容量の合計に基づいて、それぞれのライセンス17380-1738nを決定することができる。PMU1730は、それぞれのコア17020、・・・、1702nに対してIccPライセンス17380-1738nを発行することができ、そして、また、コア17020、・・・、1702nに対するパワー制御パラメータ17400-1740nを決定することもできる。パワー制御パラメータは、各コア/計算要素について、それぞれのコア周波数及び/又はガードバンド電圧を含んでよい。発行されたIccPライセンスが(例えば、予想される電流需要よりも高いため)キュー内の全ての命令のパワー要求を満たすのに十分でない場合、IccPコントローラは、例えば、1つ以上のコアのフロントエンドに対して、スループットが調整されること(例えば、命令の実行速度が低下すること)を示すことができ、そして、調整されたコアのそれぞれのIccPコントローラは、また、より高いIccを有する更新されたライセンスの要求を発行することもできる。一つの実施形態において、スロットリングおよびライセンスに対する要求は、キュー内の最初の命令が実行される前に発生し得る。
【0102】
図18は、本発明の一つの実施形態に従った、プロセッサのブロック図である。プロセッサ1800は、複数のコア18021-1802Nを含んでいる。コア18021は、カウンタ論理1820、IccPコントローラ1840、アウトオブオーダ(OOO)論理1860、および実行論理1880、並びに、他の構成要素(図示なし)を含む。動作において、カウンタ論理1820は、OOO 1860から、Nサイクルのウィンドウ内の各サイクルの実行キューで実行される各命令の指示を受信することができる。カウンタ論理1820は、例えば、サイクル内で実行されるべき各命令に関連する対応するパワーウェイトの検索、および、検索されたパワーウェイトのサイクル毎の加算によって、サイクル毎のパワーウェイトの合計を決定することができる。所与のサイクルに対するパワーウェイトの合計は、IccPコントローラ1840に送信され得る。IccPコントローラは、各サイクルに対するパワーウェイトの合計を、複数のビンのうち1つに分類することができる。各ビンは、閾値レベル(“T”)内のパワー範囲に対応している。一つの例として、5つのビンが示されている。しかしながら、他の実施形態では、より多くのビン又はより少ないビンが存在してよい。図18に示されるように、ビンは、ビン1804(閾値1以下)、ビン1806(>T1かつ≦T2)、ビン1808(>T2かつ≦T3)、ビン1810(>T3かつ≦T4)、および、ビン1812(>T4)である。サイクル当たりのパワーウェイトの合計は、適切なビンへと配置される。例えば、適切なビンに関連するカウントが1ずつ増加される。IccPコントローラ1840は、コンフィグレーションレジスタ1850に存在するそうした閾値情報にアクセスすることができ、ここにおいてさらに説明されるように、異なる命令幅およびタイプの命令を実行するために利用可能な異なるレベルのライセンスに基づいて、これらの閾値を生成するために使用され得る、ことに留意されたい。
【0103】
Nサイクルのパワーウェイトが合計され、かつ、合計が適切なビンに配置された後で、論理1814で結果が結合される。一つの実施形態では、各ビンの合計のカウントにビンの閾値レベルを乗算し、そして、結果を合計して、Nサイクルにおける命令のパワー尺度(power measure)を決定することができる。つまり、各合計はビンの単一カウントとして扱われ得る。(例えば、特定のビンに置かれた3つの合計は、特定のビンに対する3つのカウントとして扱われてよい。)一つの実施形態では、A合計のカウントはビン1804(T1)であり、B合計のカウントはビン1806(T2)であり、C合計のカウントはビン1808(T3)であり、D合計のカウントはビン1810(T4)であり、そして、E合計のカウントはビン1812(T5)であることが決定され得る。そして、パワー尺度は、次のように計算され得る。
Power measure=(T1)(A)+(T2)(B)+(T3)(C)+(T4)(D)+(T5)(E) (式1)
【0104】
パワー尺度は、ライセンス選択回路1816に送信され得る。ライセンス選択回路は、パワー尺度に基づいて、要求に対する電流保護(IccP)ライセンスの大きさを決定することができる。ライセンス選択回路1816は、パワー制御ユニット1860に送信されるべき対応するライセンス要求1818を生成することができる。
【0105】
なおも、さらに、図18に示されるように、ライセンス要求のレベルが現在のライセンスレベル未満であると(比較器1819で決定されるように)IccPコントローラ1840が判断した場合、ここにおいて説明されるように、スロットル信号がOOO 1860に送信されてよく、コア1802内で命令実行のスロットリングを生じさせる。
【0106】
これから図19を参照すると、本発明の一つの実施形態に従った、プロセッサコアのブロック図が示されている。図19に示されるように、コア1900は、所与のマルチコアプロセッサまたは他のSoCにおける複数のプロセッサコアの1つであってよい。関連部分において、コア1900は、命令の幅およびタイプを含む、実行のために割り当てられた命令を識別するための回路、および、そうした命令を実行するための実行回路を含んでいる。加えて、電流保護制御回路は、命令の幅およびタイプに少なくとも部分的に基づいて、命令の実行を求める(seek)ための適切な電流ライセンスを決定するために存在する。加えて、そうしたコントローラは、推論的命令の存在を識別し、そして、そうした命令が非推論的になるまでライセンス要求を保留する回路を含んでよい。
【0107】
図示されるように、コア1900は、例えば、uopの形態で、割り当てのために入って来る命令を受信することができる、レジスタ別名テーブル(register alias table、RAT)1910を含んでいる。RAT1910は、特定の命令タイプに対するデフォルトライセンスに関する情報を保管する1つ以上のコンフィグレーションレジスタ1915を含み得る(これらの命令の少なくとも一部の幅に基づく異なるデフォルトライセンスレベルを含んでいる)。割り当てられた命令の幅およびタイプ、並びに、コンフィグレーションレジスタ1915内の情報に基づいて、その命令のための適切なデフォルトライセンスレベルが決定され得る。RAT1910は、このデフォルトライセンスレベルを電流保護コントローラ1920に通信することができる。加えて、実行回路1930(それ自体が種々の実行ロジックを含み得る)は、カウンタ1940に提供する、サイクル重みとして、サイクル毎に実行される命令の相対重みに関する情報を通信することができる。順番に、重み付けされたカウント情報がカウンタ1940から電流保護コントローラ1920へ提供される。
【0108】
図19でさらに示されるように、電流保護コントローラ1920は、ウイルス検出回路1922、ICCコントローラ1925、およびスロットルコントローラ1928を含む、構成を含んでいる。カウンタ1940から受信された重み付けカウント情報に基づいて、ウイルス検出回路1922は、パワーウイルスが識別されるときを決定し、そして、ICCコントローラ1925に増加電流の要求を発行することができる。この情報に少なくとも部分的に基づいて、ICCコントローラ1925は、プロセッサのパワーコントローラに送信するライセンス要求を発行することができる(説明を容易にするため図19には示されていない)。
【0109】
しかしながら、1つ以上の命令が推論的であると判断される場合、ICCコントローラ1925は、そうした1つ以上の命令が実際には実行されない可能性があるため、ライセンス要求の送信を延期することができる。そうした1つ以上の命令の推論的な性質は、スロットルコントローラ1928から通信され得る。現在のライセンス付与より大きい所与のライセンスレベルに対する要求に応答して、スロットルコントローラ1928は、(ICCコントローラ1925から受信したスロットル要求に応答して)スロットル信号を発行し得ることに留意されたい。さらに説明されるように、ICCコントローラ1925は、さらに、例えば、パワーコントローラから、ライセンス確認応答(acknowledge)を受信する。図19の実施形態ではこの高レベルで示されているが、多くのバリエーションおよび代替が可能であることを理解されたい。
【0110】
これから、図20を参照すると、コンフィグレーションストレージのブロック図が示されており、これは、プロセッサのレジスタ別名テーブルまたは他のアウトオブオーダエンジン内に存在し得る。図20に示されるように、コンフィグレーションストレージ2000は、複数のレジスタ20200-2020nを用いて実装され得る。そうした各レジスタは、所与の命令(例えば、uop)タイプと関連付けられ、かつ、複数のフィールドを含んでよく、各フィールドは、所与の命令の幅と関連付けられている。より具体的には、図20に示されるように、各コンフィグレーションレジスタ2020は、タイプフィールド2010を含む複数のフィールドを含み、所与の命令(uop)、および、フィールドそれぞれが命令の所与のビット幅に関連付けられている複数の幅フィールド(2012、2014、2016、および2018)を識別する。図20の実施形態に示されるように、より具体的に、これらのビット幅は、64ビットから512ビットの範囲である。各コンフィグレーションレジスタ2020内の各フィールドは、そのビット幅の命令を適切に実行するために、適切な電流消費レベルに対応するデフォルトライセンスレベルを保管するように構成されている。より具体的に、各フィールドは、命令の適切な実行のために要求され得るデフォルトライセンスレベルに対応する数値を保管している。これらのデフォルトライセンスレベルは、実際の電流レベルではなく、単に、数値表現(例えば、図20の例では0-3のスケール)であってよいことに留意されたい。もちろん、そうした各デフォルトライセンスレベルは、所与の実際のレベルに対応し得る。
【0111】
所定の幅が広い命令(例えば、ロード命令および保管命令)に対しては、最も高いライセンスレベルよりも低いデフォルトのライセンスレベルが使用され得ることに留意されたい。さらに、このより低いデフォルトライセンスレベルでは、所定の高パワー消費uop、例えば、512ビットの融合乗加算(fused multiply add、FMA)uopについて、単一の実行ユニットで実行することが可能であり得る。しかしながら、複数のそうした実行ユニットは、最も高い電流ライセンスが付与されない限り、パワー供給されないことがある。
【0112】
これから、図21を参照すると、一つの実施形態に従った、プロセッサの一部のブロック図が示されている。図21に示されるように、コア2100の一部は、ICCPコントローラ2140に結合されたレジスタ別名テーブル2160を含んで示されている。さらに分かるように、RAT2160は、複数の融合乗加算(FMA)実行回路21650-21651に結合される。ここにおける実施形態において、デフォルトでは、これらの2つのFMA実行回路2165のうち少なくとも1つは、最大の電流ライセンス付与がない場合にパワーゲート(登録商標)制御され得る。かくして、最も高い電流ライセンスレベル付与を受信すると、RAT2160は、両方のFMA回路21650,1を起動させ、そして、両方の実行回路(所与の実行ポートにそれぞれ関連している)に対してuop(512bのuopを含くんでいる)を発行することができる。
【0113】
これから、図22を参照すると、一つの実施形態に従った、プロセッサパワー管理技術のフローチャートが示されている。図22に示されるように、方法2200は、現在付与されている電流ライセンスレベルよりも高い電流レベルを消費する命令(例えば、uop)を識別すると、OOOエンジン2210(一般的にはOOO 2210)において開始される。かくして、OOO 2210は、MLC2220に対して、電流ライセンスの増加を要求する。さらに、OOO 2210およびMLC2220は、増加した電流ライセンスレベルに対するこの要求に応じて、増加したライセンスレベルの付与まで延長する、スロットリング期間へ入り得るに留意されたい。MLC2220は、増加した電流レベルに対するこの要求を受信すると、評価ウィンドウ(例えば、一つの実施形態では64サイクル)を開始し、ウィンドウの最中の命令実行に関する重み情報に少なくとも部分的に基づいて、要求する適切なライセンスレベルを決定することに留意されたい。
【0114】
このウィンドウの終わりに、MLC2220は、適切な電流ライセンスレベルに対するライセンス要求をパワー制御ユニット2230に発行する。十分な予算(budget)が利用可能であると仮定すると、PCU2230は、ライセンスを付与し、ライセンスは、MLC2220において受信される。順番に、MLC2220は、スロットル表示のリセットと共に、ライセンス付与された命令をOOO 2210に転送し、その結果、更なるスロットリングなく、命令が発行され、かつ、実行され得る。命令は、ライセンス要求(そして、現在は付与)によって求められるより高いパワーレベルである命令(例えば、uop)を含んでいる。
【0115】
同様に、図23は、別の実施形態に従った、プロセッサパワー管理技術の別のフローチャートを示している。図23において、方法2300は、OOOエンジン2310、MLC2320、およびPCU2330の間で同様に進行する。この方法では、方法2200と比較して、サイクル当たりの命令の重み付け数が、より高いライセンスレベルを要求するために使用され得る。他の態様において、方法2300は、方法2200のように進行してよい。
【0116】
これから、図24を参照すると、本発明の別の実施形態に従った、方法のフローチャートが示されている。より具体的に、方法2400は、ここにおいて説明されるライセンス要求および認可プロトコルに少なくとも部分的に基づいて、プロセッサ内でパワー制御を実行する方法である。かくして、方法2400は、コアおよび関連するパワーコントローラ内の電流保護回路によって実行され得る。そして、かくして、ハードウェア回路、ファームウェア、ソフトウェア、及び/又は、それらの組み合わせによって実行され得る。
【0117】
図示されるように、方法2400は、割り当て(allocation)において命令を受信することによって開始する(ブロック2405)。そうした命令は、レジスタ別名テーブルといった、アウトオブオーダエンジンで受信され得る。この命令に対するパワーライセンスレベルは、RATの1つ以上のコンフィグレーションレジスタ内に実装され得る、パワーライセンステーブルへのアクセスに基づいて決定され得る。次に、ダイヤモンド2415において、コアが、少なくともこの決定されたパワーライセンスレベルで作動しているか否かが決定される。そうであれば、命令は、実行のために所与の実行ユニットに提供される(ブロック2420)。
【0118】
そうでなければ、コアが、要求されたパワーライセンスレベルで動作していないと決定される場合に、ブロック2425において、コア動作が調整され得る。加えて、ブロック2430において、コア活動を分析するために評価ウィンドウが開かれ、適切なパワーライセンスレベルを決定する。このウィンドウの最中に、活動情報が収集され得る(ブロック2435)。そうした活動情報は、各サイクルで実行される命令の数および幅(およびタイプ)の表示と共に、サイクルベースで獲得され得る。ダイヤモンド2440において、ウィンドウが完了(例示的実施形態では、64サイクルであり得る)したことが決定された後で、ウィンドウの活動情報に基づいて、パワーライセンスレベルが決定され得る(ブロック2445)。例として、電流保護コントローラは、例えば、各々が所与のパワーライセンスレベルに関連する閾値のセットを参照して、適切なパワーレベルを識別することができる。
【0119】
なおも、図24を参照すると、次に、命令(増加されたパワーライセンスレベルをトリガしたもの)が推論的であるか否か決定される(ダイヤモンド2450)。そうである場合、次に、電流スロットル持続時間が、所与のスロットル閾値を超えるか否か決定される(ダイヤモンド2455)。そうでない場合、パワーコントローラへのライセンス要求の発行は、延期され得る(ブロック2460)。命令がもはや推論的でなく、または、スロットル持続時間が閾値持続時間を超えると決定される場合、ブロック2470において、決定されたパワーライセンスレベルに対するライセンス要求がパワーコントローラに送信される。このライセンス付与が受信されたと(ダイヤモンド2480で)決定されると、制御は、ブロック2420に進み、そこでは、実行のための命令が提供される。図24の実施形態ではこの高レベルで示されているが、多くのバリエーションおよび代替が可能であることを理解されたい。
【0120】
これから、図25を参照すると、本発明の別の実施形態に従った、方法のフローチャートが示されている。図25に示されるように、方法2500は、コアおよび関連するパワーコントローラ内の電流保護回路によって実行され得る。そして、かくして、ハードウェア回路、ファームウェア、ソフトウェア、及び/又は、それらの組み合わせによって実行され得る。
【0121】
図示されるように、方法2500は、割り当てにおいて命令(例えば、uop)を受信することによって開始する(ブロック2505)。そうした命令は、レジスタ別名テーブルまたは他のアウトオブオーダのエンジンで受信され得る。次に、ダイヤモンド2510において、命令幅が第1閾値幅(一つの例示的な実施形態では、64ビットであり得る)であるか否か決定される。そうである場合、命令は、第1パワーレベル命令(例えば、最もい低パワーレベル命令)として識別され得る。そして、従って、最も低いパワーライセンスレベルは、この命令の実行のために十分である(ブロック2515)。代わりに、ダイヤモンド2520において、命令幅が第2閾値幅(一つの例示的な実施形態では、128ビットであり得る)であると決定される場合には、次に、命令が算術命令であるか否か(ダイヤモンド2525において)決定される。そうである場合、命令は、第2パワーライセンスレベルに対応し得る、第2パワーレベル命令として識別される(ブロック2530)。そうでなければ、命令が算術命令でない場合(例えば、ロード命令または記憶命令)、制御は、ブロック2535に進み、そこで、命令は、第1パワーレベル命令として識別され、そして、従って、最も低いパワーライセンスレベルは、この命令の実行に十分である(ブロック2535)。
【0122】
なおも、図25を参照すると、制御は、ダイヤモンド2520からダイヤモンド2540へ進み、命令幅が第3閾値未満であるか否かを決定する。そうであれば、次に、(ダイヤモンド2550において)命令が算術命令であるか否か決定される。そうでない場合、命令は、第2パワーライセンスレベルに対応する第2パワーレベル命令として識別される(ブロック2560)。そうでなければ、命令が算術命令である場合に、制御は、ブロック2565に進み、ここで、命令は、第3パワーレベル命令(第1および第2パワーレベルよりも大きい)として識別され得る(ブロック2565)。
【0123】
最後に、命令幅が第3閾値を超える場合、制御は、ダイヤモンド2570に進み、そこで、命令が算術命令であるか否か決定される。そうである場合、命令は、第4、最も高いレベルの命令として識別される。そうでなければ、命令が算術命令でない場合、制御は、ブロック2575に進み、そこで、命令は第2パワーレベル命令として識別され得る。従って、実施形態では、命令幅およびタイプの両方が、適切なパワーライセンスレベルを決定する際に考慮され得る。そうした命令についてスロットリングおよび増加したライセンス交渉が回避され得るので、より低いパワーレベルで、かつ、低減された待ち時間で、非算術的な幅の命令を実行する能力を実現している。図25の実施形態ではこの高レベルで示されているが、多くのバリエーションおよび代替が可能であることを理解されたい。
【0124】
上述のように、コア回路は、所定の命令タイプを実行する前に、パワーライセンス付与を要求することができる。この構成は、比較的少数のハイパワー命令のために必要とされるハイパワー時に、より低いパワー動作を可能にするのに適しているが、そうした、ライセンスを求める際に生じるオーバーヘッドおよび待ち時間が存在し得る(そして、これは、上述のように、少なくとも所定の時間の間についてスロットリングをもたらし得る)。かくして、実施形態は、さらに、プロセッサを、比較的に細粒度のレベルで(例えば、コア毎に)、設定可能な熱設計パワー(thermal design power、TDL)レベルで構成することができ、ワークロードが高パワー消費命令を含む場合でさえも、保証動作周波数でのワークロードの動作を確実にするための周波数ライセンスの事前付与として機能する。さらに、この構成を用いて、そうした高パワー命令を実際に実行するコアのみに、より低い設定可能なTDP値(そして、従って、より低い対応する保証動作周波数)を提供することができ、その結果、他のコアは、より高い設定可能なTDPレベル(そして、従って、より高い対応する保証動作周波数)で、これらのより高いパワー消費命令を欠いているワークロードを実行することができる。
【0125】
つまり、プロセッサで利用可能な1つのパフォーマンス状態は、保証されたパフォーマンス状態であり、また、P1パフォーマンス状態とも呼ばれ、変動するワークロードで一貫したパフォーマンスを確保する動作周波数を提供する。しかしながら、増加したワークロード要求に基づく例外は、この決定論(determinism)からの逸脱を結果としてもたらし、ジッタおよび不規則なパワー管理状態の変化につながる。そうした非決定論に対する1つの所定の例外は、所定のベクトル命令といった、強力で計算集約的な命令の実行である。
【0126】
実施形態では、所与のパワー予算に基づいて、変動するワークロードで一貫性のある決定論的な挙動を提供するために、設定可能なTDP設定についてコア毎の構成パラメータが実現され得る。より具体的に、実施形態は、1つ以上のコンフィグレーションレジスタを提供することができ、それに対して、スケジューラは、所与のプロセッサコアまたは他の処理回路に対して動的構成可能なTDP値の保管を可能にする情報を提供し得る。本発明の範囲はこの点に関して限定されるものではないが、そうしたスケジューラの例は、コアまたは他の処理回路にスケジュールされるべきワークロードに関する情報を有するオペレーティングシステム・スケジューラ及び/又はワークロード・スケジューラであってよい。
【0127】
そうしたコンフィグレーションレジスタは、少なくとも部分的に、特定のコアに対するワークロードのスケジューリング中といった、動的なスケジューリング情報に基づいて更新され、この構成可能なTDP値に従うことによって、コアが決定論的な方法でワークロードを実行することを可能にする。スケジューラは、ランタイム中に、これらのコンフィグレーションレジスタの更新を引き起こすスケジューリング情報を提供し得る。一つの実施形態において、コンフィグレーションレジスタは、1つ以上のモデル固有レジスタ(model specific register、MSR)として実装されてよい。このようにして、所与のコアで所与のワークロードを実行する前に、周波数ライセンスの事前付与が生じ得る。そして、スケジューラは、次のワークロードに対して、そうした設定可能なTDP値の変更を動的にトリガすることができ、従って、この次のワークロードに対して事前付与(pre-grant)の周波数ライセンスを提供していることに留意されたい。実施形態において、コア毎に構成可能なTDP構成は、例えば、所与のCPUIDレジスタといった、プロセッサ識別レジスタ内のフラグ設定によって、スケジューラおよび他のエンティティに対して露出されてよい。
【0128】
対照的に、典型的なプロセッサでは、例えば、基本入力/出力システム(BIOS)によって、システムのプリブート中に設定される、プロセッサ全体(processor-wide)の単一のTDP設定が利用可能である。この従来の構成では、プロセッサ全体の単一TDP値に対する任意の変更は、プラットフォームのリセットを必要とし、これは、望ましくなく、待ち時間と複雑性を増加させる。そうした典型的な構成では、異なるタイプのアプリケーションがプロセッサ上で実行されると、そうしたブート時のプラットフォーム全体の設定は、高度なベクトル拡張(AVX)命令(AVX2およびAVX-512といったもの)、および、ストリーミングSIMD拡張(SSE)命令といった追加のISA命令、などを含む種々のベクトル命令といった、より高性能なの命令を使用する種々のアプリケーションのパフォーマンスに対して有害であり得る。
【0129】
結果として、実施形態は、ランタイム中のコア毎の周波数ライセンス付与によって、ベクトルベースおよび非ベクトルベースの両方の命令を使用する異質なワークロードについてパフォーマンス改善を提供することができる。そうしたランタイム制御は、1つ以上のコンフィグレーションレジスタを用いて実現することができ、特定のコア上でワークロードに基づく事前付与の周波数ライセンスを実行することを可能にするようにスケジューラに露出される。このようにして、クラウドベースの展開において典型的であり得る異質のワークロードは、複雑なリアルタイムワークロードが、より高いパフォーマンスレベルで非リアルタイムワークロードと共存できるような方法で実行され得る。
【0130】
様々な実施形態において、スケジューラは、スケジューリンググループに存在する命令のために、所与のパワーレベルの形態でスケジューリング情報を提供することができる。このパワーレベル情報は、スケジューリンググループに存在する命令のタイプおよび幅に応じて、いくつかの場合には異なる形態をとり得るが、スケジューラは、そうした複数のパワーレベルの1つ以上のパワーレベルをPCUまたは他のパワーコントローラに提供することができる。順番に、パワーコントローラは、スケジューラが、このスケジューリンググループを含むワークロードが実行されるべき1つ以上のコアの表示をさらに提供することができるので、スケジューリンググループの命令に対する最大パワーレベルを、所与の設定可能なTDP値にマッピングすることができ、コア毎のコンフィグレーションレジスタに保管することができる。次いで、パワーコントローラは、設定可能なTDP値に少なくとも部分的に基づいて、保証動作周波数を決定することができる。このようにして、スケジュールされた命令は、命令の実行中にパワーライセンス交渉の必要なしに実行することができ、そして、さらに、スロットリングまたは他の状態を回避するために選択される保証動作周波数で動作することができる。
【0131】
以下の表1は、特定のタイプの命令に関連付けられ得るパワーレベルに係る一つの例示的なセットを示している。分かるように、異なるパワーレベルそれぞれは、特定のタイプおよび幅の命令に関連付けることができる。かくして、スケジューラは、スケジューリンググループの最大パワー消費命令を識別し、そして、スケジューリンググループが実行すべきコアの表示と共に、一つの実施形態においては、スケジューリング情報として対応するパワーレベルを提供することができる。
【表1】
【0132】
なおも、さらに、実施形態は、コア毎の周波数レベル付与を提供することによって、より高い性能およびワット当たりのより良い性能を実現することができる。加えて、所与のワークロードが実行されることに基づいて、コアレベル毎に省パワー(power saving)を実現することができる。実施形態は、また、クラウドオーケストレータが、そうした構成可能性に適した特定のワークロードを展開するためのオンデマンド周波数ライセンス付与能力を有するターゲットプラットフォームを識別することを可能にするインターフェイスを提供する。本発明の範囲はこの点に関して限定されるものではないが、そうしたワークロードは、ソフトウェア定義のネットワークワークロード、他のテレコムベースのワークロード、および、金融ワークロード、高性能コンピューティング、などを含む、他のワークロードを含み得る。例として、実施形態は、異なる構成可能なTDP値で動作する、異なるコアへの無線ネットワークのワークロードに係る異なる層のスケジューリングを可能にし得る。例えば、そうしたワークロードの物理層(L1)部分は、高パワー消費命令を含むことができ、そして、従って、ワークロードのより高い層部分がスケジュールされている他のコアよりも低いTDP値で動作するコアに対してスケジュールすることができる。
【0133】
実施形態では、ベース保証動作周波数は、設定可能なコアTDP能力を用いて比較的高い値を維持することができる。すなわち、全体的なコンピューティングプラットフォームが第1TDPレベルで設定され、結果として、種々のコアまたは他の処理ユニットが第1P1動作周波数で動作し、AVXワークロードといったより高い電流消費ワークロードを実行する1つ以上の他のコアが、第2の、より低いTDPレベルで構成され得る。その結果として、これらのコアは、第1P1動作周波数より低い、第2P1動作周波数で動作する。従って、改善された性能は、プロセッサ全体を、この第2の、より低いTDPレベル(および、第2P1動作周波数)に制限する代わりに、実現され得る。ここにおいて説明される実施形態は、ベクトル命令の存在に基づく事前付与ライセンス要求を基本とすることができるが、より大きなパワーを消費する他のワークロードは、同様に、スケジューラに、そうしたワークロードを実行するために1つ以上のコアに対して、より低い構成のTDP値を要求するようにさせ得ることを理解されたい。
【0134】
これから、図26を参照すると、本発明の実施形態に従った、プロセッサのブロック図が示されている。図26に示されるように、プロセッサ2600は、マルチコアプロセッサまたは他のタイプのSoCであってよい。図示されるように、プロセッサ2600は、複数のコア26100-2610nを含んでいる。異なる実装において、コア2610は、均質コアであってよく、他の場合において、コアの少なくとも一部は、相互に異質であってよい。いずれにせよ、スケジューラ2620は、それ自体がプロセッサ2600内で実行可能であり、ワークロードをコア2610に提供する。そして、ここにおける実施形態で、スケジューラ2620は、コア毎に構成可能なTDP情報の設定を可能にするために、ワークロードのパワー消費特性に関するスケジューリング情報をさらに提供し得る。このように、実施形態は、コア2610上で実行される所与のワークロードが決定論的方法で実行されることを確実にし得る。すなわち、ワークロードが実行される所与のコア2610に対して設定可能なTDP値を設定することによって、決定論的なパフォーマンスが実現される。これは、選択されたコア2610が、この保証動作周波数からのスロットリングまたは他の摂動(perturbation)なしに、保証動作周波数で動作し、ワークロードの実質的に決定論的な実行を提供する。
【0135】
この目的のために、さらに図26に示されるように、スケジューラ2620は、コア毎のスケジューリング情報をPCU2630に提供する。そうした情報は、表1に上記されるようなパワーレベルを含んでよく、または、それに基づいてもよい。図示されるように、PCU2630は、複数のコンフィグレーションレジスタ26320-2632nを含んでいる。より具体的に、コンフィグレーションレジスタ2632は、コア毎に提供されてよく、それぞれ、スケジューラ2620から受信されるスケジューリング情報に少なくとも部分的に基づいてPCUによって決定される構成可能なTDP値をそれぞれ保管する。図26にさらに示されるように、PCU2630は、また、事前付与周波数ライセンス計算器2635も含んでいる。実施形態において、周波数計算器2635は、少なくとも部分的に、所与の設定可能なTDP値および他の動作パラメータ、テーブル情報などに基づいて、特定のワークロードを実行するコア2610に対する保証動作周波数を決定することができる。従って、ワークロード内の命令のパワー消費特性にかかわらず、そうしたワークロードは、スロットリングまたは他の摂動なしに、コア2610上で実行することができ、適切な保証動作電圧および周波数での決定論的動作を可能にしている。
【0136】
具体的な例として、プロセッサが150ワットのノミナル(nominal)TDPレベルで構成されていると仮定する。そして、プロセッサのコンフィグレーション情報に基づいて、このノミナルTDPレベルで、このTDPバジェット内の動作を可能にする保証動作周波数は、第1保証動作周波数、例えば2.4GHz、であってよい。しかしながら、そうした動作レベルでは、ワークロードが相当数の高パワー消費命令を含む場合には、熱的制限、パワー制限、電流制限、または他の環境条件のうち1つ以上に遭遇することがあり、スロットリング状態が発生し、この保証動作周波数を減少させるだろう。
【0137】
代わりに、一つの実施形態において、スケジューラは、ワークロードが高パワー消費命令を含むと判断する場合に、スケジューリング情報をPCU2630に通信し、1つ以上のコンフィグレーションレジスタ2632内の設定を、ノミナルTDP値より低いコア毎の構成可能TDP値に設定することを可能にする。そして、順番に、事前付与ライセンス周波数計算器2635は、保証動作周波数をより低いレベル、例えば、2.2GHzで決定することができる。そうした動作周波数レベルにおいて、ワークロードは、いかなる種類の制限にも達することなく動作し、スロットリングを回避し、かつ、決定論的動作を確実にしてい。図26の実施形態ではこの高レベルで示されているが、多くのバリエーションおよび代替が可能であることを理解されたい。
【0138】
図27は、本発明の別の実施形態に従った、方法のフローチャートである。より具体的に、方法2700は、一つの実施形態に従った、コア毎に構成可能TDP制御を実施するための方法である。かくして、方法2700は、ハードウェア、ファームウェア、ソフトウェア、及び/又は、それらの組み合わせによって実行され得る。図示されるように、方法2700は、コア毎の構成可能TDP能力を機械固有のレジスタとして露出することによって開始する(ブロック2710)。例えば、CPUIDレジスタは、所与のフィールドのフラグを設定して、そうした制御のためのプロセッサの能力を識別することができる。
【0139】
制御は、次いで、ブロック2720に進み、そこでは、ノミナルTDPレベルがコンピューティングプラットフォームのために構成され得る。一つの例として、BIOSまたは他のファームウェアは、このノミナルレベルを設定することができる。制御は、次いで、ブロック2730に進み、そこでは、コンピューティングプラットフォームがブート環境に入り、例えばOSによって、ノミナルTDPレベルが設定され得る。この時点で、プラットフォームは通常動作の準備ができている。
【0140】
かくして、ブロック2740において、スケジューラは、所与のワークロードに対するスケジューリング情報を受信(または、そうでなければ識別)することができる。一つの実施形態において、このスケジューリング情報は、ワークロード内の命令に関するパワー消費情報を含み得る。例えば、ワークロードが広いベクトル命令といった、相当な数の高パワー消費命令を含む場合、スケジューリング情報は、上の表1で示されるように、高パワーレベルを識別することができる。次に、ブロック2750において、スケジューラは、ワークロードをスケジュールするための1つ以上のコアを決定することができる。例えば、異質なコアの場合、スケジューラは、ワークロードの特定の命令を実行するコアの能力に少なくとも部分的に基づいて、ワークロードを実行する1つ以上のコアを決定することができる。例えば、ベクトルベースの命令の場合には、ベクトル実行ユニットを有する1つ以上のコアが選択され得る。
【0141】
次に、ブロック2760において、スケジューラは、パワーコントローラにスケジューリング情報を送信することができる。スケジューリング情報は、パワーレベルと同様に、ワークロードが実行される1つ以上のコアの表示を含み得る。制御は、次いで、ブロック2770に進み、そこで、PCUは、少なくとも1つのコンフィグレーションレジスタに保管するためのコア毎の構成可能なTDP値を設定することができる。前述のように、PCU内の事前付与ライセンス周波数計算器は、少なくとも部分的に、この設定可能なTDP値に基づいて、1つ以上のコアといった適切な保証動作周波数を選択し得ることに留意されたい。最後に、ブロック2780において、スケジューラは、実行のために決定された1つ以上のコアにワークロードを割り当てることができる。それ以降に、スケジューリング・ループは、別のワークロードのスケジューリングのためにブロック2740に戻ることができる。図27の実施形態ではこの高レベルで示されているが、多くのバリエーションおよび代替が可能であることを理解されたい。
【0142】
以下の実施例は、さらなる実施形態に関する。
【0143】
一つの例において、プロセッサは、複数のコアを含み、そこでは、複数のコアのうちの少なくとも一部は、実行回路および電流保護コントローラを含んでいる。電流保護コントローラは、前記実行回路による1つ以上の命令の実行前に、命令キュー内に保管された前記1つ以上の命令に関連付けられた命令幅情報および命令タイプ情報を受信し、対応する前記命令幅情報および前記命令タイプ情報に基づいて、前記コアについてパワーライセンスレベルを決定し、前記パワーライセンスレベルに対応する前記コアについてライセンス要求を生成し、かつ、前記1つ以上の命令が非推論的である場合には、パワーコントローラに対して前記要求を通信し、前記1つ以上の命令のうち少なくとも1つが推論的である場合には、前記要求の通信を延期し得る。プロセッサは、さらに、前記要求に応じて前記電流保護コントローラにライセンスを付与するために、前記複数のコアに結合されたパワーコントローラを含み得る。
【0144】
一つの例において、プロセッサは、さらに、前記命令を保管するレジスタ別名テーブルを備え、前記レジスタ別名テーブルは、複数の命令についてデフォルトパワーライセンス情報を保管するための複数のコンフィグレーションレジスタを含んでおり、前記レジスタ別名テーブルは、第1命令のためのデフォルトパワーライセンスレベルを前記電流保護コントローラへ送信する。
【0145】
一つの例において、複数のコンフィグレーションレジスタそれぞれは、命令タイプに関連付けられており、かつ、それぞれ命令幅に関連付けられた複数のフィールドを含み、そして、前記命令タイプおよび前記命令幅についてデフォルトのプロセッサライセンスレベルを保管する。
【0146】
一つの例において、レジスタ別名テーブルは、第1融合乗加算回路および第2融合乗加算回路に結合されており、そこで、少なくとも前記第2融合乗加算回路は、前記コアが最も高いレベルを有するライセンス付与を受けなければ、ゲート制御される。
【0147】
一つの例において、レジスタ別名テーブルは、前記コアが最も高いレベルを有するパワーライセンス付与を受けたときに、前記第2融合乗加算回路を起動させる。
【0148】
一つの例において、電流保護コントローラは、さらに、前記第1命令のための前記デフォルトパワーライセンスレベルが、前記コアの現在パワーライセンスレベルを超えるという決定に応答して、前記1つ以上の命令の実行を調整するために、前記レジスタ別名テーブルにスロットル信号を送信する、スロットルコントローラ、を含む。
【0149】
一つの例において、電流保護回路は、スロットル実行のスロットル持続時間が閾値持続時間を超えるとき、延期された要求(deferred request)を通信する。
【0150】
一つの例において、電流保護回路は、前記少なくとも1つの推論的命令の廃棄に応答して、前記延期された要求を通信する。
【0151】
一つの例において、1つ以上のベクトルメモリアクセス命令について第1レベルのパワーライセンスレベルを有する前記ライセンス要求を生成し、かつ、1つ以上のベクトル演算命令について第2レベルのパワーライセンスレベルを有する前記ライセンス要求を生成する。前記第2レベルは、前記第1レベルよりも大きい。
【0152】
一つの例において、実行回路は、スロットリングを行うことなく、前記コアの電流パワーライセンスレベルにかかわらず、1つ以上の512ビットメモリアクセス命令を実行する。
【0153】
別の例において、方法は、プロセッサのパワーコントローラにおいて、スケジューラから、1つ以上のベクトル命令を含む第1ワークロードに関連するパワーレベル、および、前記第1ワークロードがスケジュールされているプロセッサの複数のコアのうち第1コアを識別するためのスケジューリング情報を受信するステップと、前記スケジューリング情報に基づいて、前記パワーコントローラによって、第1コアに関連する第1コンフィグレーションレジスタを、第1TDP値に設定するステップであり、前記第1コアは前記第1TDP値に従って動作するように構成され、前記第1TDP値は、前記複数のコアのうち他のコアと関連するTDP値から独立している、ステップと、前記第1ワークロードを、前記第1TDP値に基づいて、第1保証動作周波数で、前記第1コア上で決定論的に実行させるステップと、を含む。
【0154】
一つの例において、本方法は、さらに、前記パワーコントローラにおいて、前記スケジューラから、第2ワークロードに関連するパワーレベル、および、前記第2ワークロードがスケジュールされているプロセッサの前記複数のコアのうち第2コアを識別するための第2スケジューリング情報を受信するステップと、前記スケジューリング情報に基づいて、前記パワーコントローラによって、第2コアに関連する第2コンフィグレーションレジスタを、第2TDP値に設定するステップであり、前記第2コアは前記第2TDP値に従って動作するように構成され、前記第2TDP値は、前記第1TDP値より大きい、ステップと、前記第2ワークロードを、前記第1保証動作周波数より大きい第2保証動作周波数で、前記第2コア上で決定論的に実行させるステップと、を含む。
【0155】
一つの例において、本方法は、さらに、プロセッサの単一ブート中に、前記第1コンフィグレーションレジスタを第2TDP値に動的にリセットするステップであり、前記第1コアは、前記第2TDP値に従って動作するように構成される、ステップと、第3ワークロードを、前記第2保証動作周波数で、前記第1コア上で決定論的に実行させるステップと、を含む。
【0156】
一つの例において、本方法は、さらに、識別ストレージのフラグを介して、コア毎の構成可能なTDP値を保管する複数のコンフィグレーションレジスタの存在を決定するステップ、を含む。
【0157】
一つの例において、本方法は、さらに、システムのプリブート環境中に、前記複数のコンフィグレーションレジスタをノミナルTDP値に設定するステップ、を含む。
【0158】
一つの例において、本方法は、さらに、前記複数のコアによって実行されるワークロードに基づいて、独立して、前記複数のコンフィグレーションレジスタの少なくとも一部を独立したTDP値に更新するステップであり、前記第1コアを前記第1保証動作周波数で動作させ、一方で、前記複数のコアのうち少なくとも1つの他のコアを前記第1保証動作周波数よりも大きい第2保証動作周波数で動作させる、ステップを含む。
【0159】
一つの例において、前記第1TDP値は、前記第1保証動作周波数について事前付与の周波数ライセンスを含み、前記第1コアが、前記第1コアをスロットリングすることなく、前記第1ワークロードを実行することを可能にする。
【0160】
別の例において、コンピュータ読取り可能な記憶媒体は、命令を含み、上記の例のいずれかの方法を実行する。
【0161】
さらなる例において、コンピュータ読取り可能な記憶媒体は、データを含み、少なくとも1つのマシンによって使用され、上記の例のいずれか1つの方法を実行するために少なくとも1つの集積回路を製造する。
【0162】
なおも、さらに別の例において、装置は、上記の例のいずれか1つの方法を実施するための手段を含む。
【0163】
別の例において、システムは、プロセッサ、および、プロセッサに結合されたダイナミックランダムアクセスメモリを含む。プロセッサは、複数のコア、および、前記複数のコアのうち1つについて構成可能なTDP値をそれぞれ保管するし、複数のコンフィグレーションレジスタを含み、ここで、前記複数のコンフィグレーションレジスタは、前記システムの単一のブートの間に更新可能である。プロセッサは、さらに、複数のコアに結合されたパワーコントローラを含み、ここで、パワーコントローラは、1つ以上のベクトル命令と、第1ワークロードがスケジューリングされる複数のコアの第1コアとを含む第1ワークロードに関連するパワーレベルを識別するスケジューリング情報を受信し、該スケジューリング情報に基づいて、複数のコンフィグレーションレジスタの第1コンフィグレーションレジスタを第1TDP値に設定し、第1コアを第1TDP値に従って動作するように設定し、複数のコンフィグレーションレジスタのうちの1つ以上の他のものをノミナルのTDP値を記憶し、第1コアを第1TDP値に基づいて第1保証動作周波数で第1ワークロードを実行させる。
【0164】
一つの例において、前記第1コアは、電流保護コントローラを含む。該電流保護コントローラは、前記1つ以上の命令の実行前に、命令キュー内に保管された前記1つ以上の命令に関連付けられた命令幅情報および命令タイプ情報を受信し、対応する前記命令幅情報および前記命令タイプ情報に基づいて、前記コアについてパワーライセンスレベルを決定し、前記パワーライセンスレベルに対応する前記コアについてライセンス要求を生成し、かつ、前記1つ以上の命令が非推論的である場合には、パワーコントローラに対して前記要求を通信し、前記1つ以上の命令のうち少なくとも1つが推論的である場合には、前記要求の通信を延期する。、
【0165】
一つの例において、パワーコントローラは、前記第1コアによる前記第1ワークロードの実行と同時に、プロセッサのパワーコントローラにおいて、第2ワークロードに関連するパワーレベル、および、前記第2ワークロードがスケジュールされている前記複数の複数のコアのうち第2コアを識別するためのスケジューリング情報を受信し、かつ、前記スケジューリング情報に基づいて、第2TDP値に従って前記第2コアが動作するように構成するために、前記複数のコンフィグレーションレジスタのうち第2コンフィグレーションレジスタを前記第2TDP値に設定し、かつ、前記第2TDP値に基づいて、前記第2コアに、前記第1保証動作周波数よりも大きい第2保証動作周波数で第2ワークロードを実行させる。
【0166】
上記の例の様々な組み合わせが可能であることを理解されたい。
【0167】
用語「回路(“circuit”および“circuitry”)」、ここにおいては互換的に使用されることに留意されたい。ここにおいて使用されるように、これらの用語および用語「論理(“logic”)」は、単独または任意の組み合わせで、アナログ回路、デジタル回路、ハードワイヤード回路、プログラマブル回路、プロセッサ回路、マイクロコントローラ回路、ハードウェア論理回路、状態マシン回路、及び/又は、他のタイプの物理的ハードウェア構成要素を参照するために使用される。実施形態は、多くの異なるタイプのシステムにおいて使用され得る。例えば、一つの実施形態において、通信装置は、ここにおいて説明される種々の方法および技術を実行するように配置され得る。もちろん、本発明の範囲は通信装置に限定されるものではなく、代わりに、他の実施形態は、命令を処理するための他のタイプの装置、または、コンピュータ装置上で実行されることに応答して、装置にここにおいて説明された1つ以上の方法および技術を本明細書で実行させる命令を含む1つ以上のマシンで読取り可能な媒体に向けることができる。
【0168】
実施形態は、コードで実装することができ、そして、命令を実行するようにシステムをプログラムするために使用できる命令が保管されている非一時的な記憶媒体上に保管することができる。実施形態は、また、データに実装することができ、そして、非一時的な記憶媒体上に保管することができ、少なくとも1つのマシンによって使用される場合、1つ以上の動作を実行させるように、少なくとも1つのマシンに少なくとも1つの集積回路を組み立てさせる。なおも、さらに
別の実施形態は、SoCまたは他のプロセッサの中へ製造されるとき、SoCまたは他のプロセッサを構成して1つ以上の動作を実行する情報を含むコンピュータ読取り可能な記憶媒体に実装されてよい。記憶媒体は、これらに限定されるわけではないが、フロッピーディスク(登録商標)、光ディスク、ソリッドステートドライブ(SSD)、コンパクトディスク読み出し専用メモリ(CD-ROM)、コンパクトディスク書き換え可能メモリ(CD-RW)、および、光磁気ディスク、読み出し専用メモリ(ROM)、スタティックランダムアクセスメモリ(DRAM)などのランダムアクセスメモリ(RAM)、消去可能プログラマブル読み出し専用メモリ(EPROM)、フラッシュメモリ、電気的消去可能プログラマブル読み出し専用メモリ(EEPROM)、磁気カードまたは光学カード、といった半導体デバイス、もしくは、電子命令を保管するのに適した任意のタイプの媒体を含み得る。
【0169】
本発明が、限られた数の実施形態に関して説明されてきたが、当業者であれば、そこから多くの修正および変形を理解するだろう。添付の請求項は、本発明の真の精神および範囲内にある全てのそうした修正および変形をカバーすることが意図されている。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27