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

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

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

特許7547368プロセッサの処理回路の電流消費を動的に制御するためのシステム、装置及び方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-30
(45)【発行日】2024-09-09
(54)【発明の名称】プロセッサの処理回路の電流消費を動的に制御するためのシステム、装置及び方法
(51)【国際特許分類】
   G06F 1/3296 20190101AFI20240902BHJP
   G06F 1/324 20190101ALI20240902BHJP
   G06F 1/3206 20190101ALI20240902BHJP
   G06F 15/78 20060101ALI20240902BHJP
   G06F 1/04 20060101ALI20240902BHJP
【FI】
G06F1/3296
G06F1/324
G06F1/3206
G06F15/78 530
G06F15/78 517
G06F15/78 515
G06F1/04 570
【請求項の数】 12
(21)【出願番号】P 2021560890
(86)(22)【出願日】2020-03-19
(65)【公表番号】
(43)【公表日】2022-07-20
(86)【国際出願番号】 US2020023580
(87)【国際公開番号】W WO2020231514
(87)【国際公開日】2020-11-19
【審査請求日】2023-03-16
(31)【優先権主張番号】16/412,606
(32)【優先日】2019-05-15
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】593096712
【氏名又は名称】インテル コーポレイション
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】アナンサクリシュナン,アヴィナッシュ エヌ.
(72)【発明者】
【氏名】アンバーデカール,アメヤ
(72)【発明者】
【氏名】ヴァルマ,アンクッシュ
(72)【発明者】
【氏名】エンジェル,ニムロッド
(72)【発明者】
【氏名】ローゼンツヴァイク,ニール
(72)【発明者】
【氏名】ギホン,アリック
(72)【発明者】
【氏名】ゲンドラー,アレクサンダー
(72)【発明者】
【氏名】レイエス,ラシッド イー.
(72)【発明者】
【氏名】サルース,タミール
【審査官】佐賀野 秀一
(56)【参考文献】
【文献】特開2018-019152(JP,A)
【文献】特開2017-021831(JP,A)
【文献】特開2014-071903(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 1/26- 1/3296
G06F 15/78
G06F 1/04
(57)【特許請求の範囲】
【請求項1】
装置であって、
複数のインテレクチュアルプロパティ(IP)回路であり、当該複数のIP回路の各々が、動的電流割当量を格納する構成レジスタを含む、複数のIP回路と、
前記複数のIP回路に結合された電力コントローラであり、前記複数のIP回路のうちの少なくとも一部上で実行されるワークロードに関する電流スロットリングヒント情報を受信し且つそれに少なくとも部分的に基づいて前記複数のIP回路の各々についての前記動的電流割当量を生成する動的電流共有制御回路、を含む電力コントローラと、
を有し、
前記電力コントローラは、前記電流スロットリングヒント情報を格納する複数の第2の構成レジスタを含み、前記動的電流共有制御回路は、前記電流スロットリングヒント情報と当該装置の1つ以上のパラメータとに基づいて、前記複数のIP回路についての前記動的電流割当量を決定する、
装置。
【請求項2】
前記電力コントローラは、ソフトウェアが前記電流スロットリングヒント情報を前記複数の第2の構成レジスタに書き込むことを可能にするインタフェースを有する、請求項に記載の装置。
【請求項3】
前記電力コントローラは、前記ワークロードの実行中の前記複数のIP回路の使用に関する発見的情報に基づいて、前記ソフトウェアから前記電流スロットリングヒント情報を受信する、請求項に記載の装置。
【請求項4】
前記動的電流共有制御回路は、前記複数のIP回路の各々に対して設定された最大電流割当量に更に基づいて、前記複数のIP回路についての前記動的電流割当量を決定する、請求項乃至のいずれか一項に記載の装置。
【請求項5】
第1のワークロードに対し、前記動的電流共有制御回路は、
第1のIP回路についての前記動的電流割当量を、該第1のIP回路に対して設定された前記最大電流割当量に設定し、
第2のIP回路についての前記動的電流割当量を、該第2のIP回路に対して設定された前記最大電流割当量よりも少なく設定する、
請求項に記載の装置。
【請求項6】
第2のワークロードに対し、前記動的電流共有制御回路は、
前記第1のIP回路についての前記動的電流割当量を、前記第1のIP回路に対して設定された前記最大電流割当量よりも少なく設定し、
前記第2のIP回路についての前記動的電流割当量を、前記第2のIP回路に対して設定された前記最大電流割当量に設定する、
請求項に記載の装置。
【請求項7】
前記第1のIP回路はコアを有し、前記第2のIP回路はグラフィックスプロセッサを有する、請求項に記載の装置。
【請求項8】
前記電力コントローラからのスロットル信号に応答して、前記第1のIP回路は、動作を、前記第1のIP回路に対して設定された前記最大電流割当量に制限し、前記第2のIP回路は、動作を、前記第2のIP回路についての前記動的電流割当量に制限する、請求項に記載の装置。
【請求項9】
前記第2のIP回路は、前記動的電流割当量に基づいて、前記スロットル信号に応答して、クロック信号の1つ以上のクロックサイクルをスカッシュする、請求項に記載の装置。
【請求項10】
複数のインテレクチュアルプロパティ(IP)回路であり、当該複数のIP回路の各々が、動的電流割当量を格納する構成レジスタを含む、複数のIP回路と、
前記複数のIP回路に結合された電力コントローラであり、前記複数のIP回路のうちの少なくとも一部上で実行されるワークロードに関する電流スロットリングヒント情報を受信し且つそれに少なくとも部分的に基づいて前記複数のIP回路の各々についての前記動的電流割当量を生成する動的電流共有制御回路、を含む電力コントローラと、
を有し、
前記動的電流共有制御回路は、スロットルイベントの間に、前記複数のIP回路のうちの少なくとも1つに便宜的電流割当量を提供し、該便宜的電流割当量は、該少なくとも1つのIP回路が該少なくとも1つのIP回路についての前記動的電流割当量を超えることを可能にする、
置。
【請求項11】
システム・オン・チップ(SoC)であり、
複数のコア及び少なくとも1つのグラフィックスプロセッサであり、当該複数のコア及び当該少なくとも1つのグラフィックスプロセッサの各々が、動的電流割当量を格納する構成レジスタを含む、複数のコア及び少なくとも1つのグラフィックスプロセッサと、
前記複数のコア及び前記少なくとも1つのグラフィックスプロセッサに結合された電力コントローラであり、当該電力コントローラは、当該SoC上で実行されるワークロードに関する電流スロットリングヒント情報をソフトウェアエンティティから受信するインタフェースを有し、当該電力コントローラは更に、前記電流スロットリングヒント情報に少なくとも部分的に基づいて前記複数のコア及び前記少なくとも1つのグラフィックスプロセッサについての前記動的電流割当量を生成する動的電流共有制御回路を有する、電力コントローラと、
を有するSoCと、
前記SoCに結合されたダイナミックランダムアクセスメモリと、
を有し、
前記電力コントローラは、前記電流スロットリングヒント情報を格納する複数の第2の構成レジスタを含み、前記動的電流共有制御回路は、前記電流スロットリングヒント情報と前記SoCの1つ以上のパラメータとに基づいて、前記複数のコア及び前記少なくとも1つのグラフィックスプロセッサについての分解された電流割当量を決定する、
システム。
【請求項12】
前記動的電流共有制御回路は、前記複数のコア及び前記少なくとも1つのグラフィックスプロセッサについての前記分解された電流割当量と、前記複数のコア及び前記少なくとも1つのグラフィックスプロセッサの各々に対して設定された最大電流割当量とに基づいて、前記動的電流割当量を決定する、請求項11に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
実施形態は、プロセッサの電力管理に関する。
【背景技術】
【0002】
半導体処理及び論理設計における進歩が、集積回路デバイス上に存在し得るロジックの量の増加を可能にしてきた。結果として、コンピュータシステム構成は、システム内の単一又は複数の集積回路から、個々の集積回路上の複数のハードウェアスレッド、複数のコア、複数のデバイス、及び/又は完全なシステムへと進化してきた。さらに、集積回路の密度が増すにつれて、コンピューティングシステム(組み込みシステムからサーバまで)に対する電力要求も段階的に増大してきた。また、ソフトウェアの非効率性、及びそのハードウェアの要求も、コンピューティング装置のエネルギー消費を増加させている。実際、一部の研究が示すことには、コンピューティング装置は、例えば米国などの国の電力供給全体のうちのかなりの割合を消費している。結果として、集積回路に関連したエネルギー効率及び省エネルギーに対する切実なニーズが存在する。それらのニーズは、(典型的なコンピュータ、自動車、テレビジョンに含まれるものからバイオテクノロジまで)サーバ、デスクトップコンピュータ、ノートブック、UltrabookTM、タブレット、携帯電話、プロセッサ、組み込みシステムなどがますます普及するにつれて増すことになる。
【図面の簡単な説明】
【0003】
図1】本発明の一実施形態に従ったシステムの一部のブロック図である。
図2】本発明の一実施形態に従ったプロセッサのブロック図である。
図3】本発明の他の一実施形態に従ったマルチドメインプロセッサのブロック図である。
図4】複数のコアを含むプロセッサの一実施形態である。
図5】本発明の一実施形態に従ったプロセッサコアのマイクロアーキテクチャのブロック図である。
図6】他の一実施形態に従ったプロセッサコアのマイクロアーキテクチャのブロック図である。
図7】更なる他の一実施形態に従ったプロセッサコアのマイクロアーキテクチャのブロック図である。
図8】より更なる一実施形態に従ったプロセッサコアのマイクロアーキテクチャのブロック図である。
図9】本発明の他の一実施形態に従ったプロセッサのブロック図である。
図10】本発明の一実施形態に従った代表的なSoCのブロック図である。
図11】本発明の一実施形態に従ったSoCの他の一例のブロック図である。
図12】それとともに実施形態が使用され得るシステムの一例のブロック図である。
図13】それとともに実施形態が使用され得るシステムの他の一例のブロック図である。
図14】代表的なコンピュータシステムのブロック図である。
図15】本発明の一実施形態に従ったシステムのブロック図である。
図16】一実施形態に従った動作を実行する集積回路を製造するために使用されるIPコア開発システムを示すブロック図である。
図17】本発明の一実施形態に従ったコンピューティングシステムのブロック図である。
図18】本発明の一実施形態に従った方法のフロー図である。
図19】本発明の一実施形態に従った方法のフロー図である。
図20】本発明の他の一実施形態に従った方法のフロー図である。
図21】本発明の一実施形態に従ったプロセッサのブロック図である。
図22】本発明の他の一実施形態に従った制御構成のブロック図である。
図23】本発明の一実施形態に従った方法のフロー図である。
図24】本発明の他の一実施形態に従った方法のフロー図である。
【発明を実施するための形態】
【0004】
様々な実施形態において、プロセッサが、当該プロセッサの複数の処理回路の各々について、独立して制御可能な最大電流消費能力を動的に決定するように構成される。例えば、プロセッサは、汎用の処理コア及びグラフィックスプロセッサなどを含む多様な異なる処理回路を含むマルチコアプロセッサ又は他のシステム・オン・チップ(SoC)とし得る。ここでの実施形態では、例えばオペレーティングシステム若しくは他のスケジューラ又はアプリケーション自体などのソフトウェアエンティティから受け取った情報に少なくとも部分的に基づいて、電力コントローラが処理回路の各々について独立した電流消費リミットを動的に決定し得る。そのような情報は、所与のワークロードに対する異なる処理回路の相対的な優先度又は重要度を特定することができ、それにより、コア(又は他の処理回路)毎をベースにして、動的な、独立した、制御可能な電流消費値を提供することができるようにし得る。
【0005】
斯くして、動作中に電力逸脱に遭遇したときに、実行中のワークロードへの影響をできるだけ限られたものとするように、個々の処理回路のスロットリングが独立して実行され得る。対照的に、従来の処理回路のスロットリングは、電力逸脱が起こるときに、予め定められた静的な量のスロットリングで行われる。そのような静的な構成は、ワークロード挙動の全範囲を満足するように設定されており、所与のケースにとって最適なものではない。代わりに、実施形態では、個々の処理回路に許される電流消費を動的に設定することによって、実行中の所与のワークロードに対して最適なスロットリング挙動が実現され得る。
【0006】
ハイレベル例として、コアが主体の、少量のグラフィックス処理を有した第1のワークロードのケースを考える。コアがあまり使用されずにグラフィックスプロセッサが多く使用される第2のワークロードのケースを考える。ソフトウェアエンティティによって提供される適切なヒント情報を用いて、これら異なる処理回路による最大電流消費レベルの動的で制御可能な決定を提供及び執行することができる。従って、ワークロード応答性に影響を与える作業をコアが実行しているとし得る第1のワークロードの場合、それらのコアは、グラフィックスプロセッサがスロットリングされる程度まではスロットリングされないとし得る。代わりに、ユーザから見える作業をグラフィックスプロセッサが実行しているとし得る第2のワークロードの場合には、グラフィックスプロセッサに対してよりも高いレベルのスロットリングがコアに関して行われ得る。従って、実行中であり得る異なるワークロードに基づいて、異なる処理回路が異なるようにスロットリングされ得る。
【0007】
実施形態では、プロセッサの異種の処理回路間での電流共有を最適化するために、例えばランタイムソフトウェア、ドライバ、ファームウェア、又は他のソフトウェアエンティティなどのソフトウェアエンティティがスロットリング情報の動的プログラミングを提供することを、ソフトウェアインタフェースが可能にする。斯くして、電流制約される状況において性能が向上され得る。
【0008】
以下の実施形態は、例えば計算プラットフォーム又はプロセッサにおいてなど、特定の集積回路におけるエネルギー節約及びエネルギー効率を参照して説明されるが、他の実施形態は、他のタイプの集積回路及び論理デバイスに適用可能である。ここに記載される実施形態の技術及び教示と同様のものが、より良いエネルギー効率及びエネルギー節約の恩恵をやはり受け得る他のタイプの回路又は半導体デバイスに適用され得る。例えば、開示される実施形態は、如何なる特定のタイプのコンピュータシステムにも限定されない。すなわち、開示される実施形態は、サーバコンピュータ(例えば、タワー、ラック、ブレード、マイクロサーバなど)、通信システム、ストレージシステム、任意の構成のデスクトップコンピュータ、ラップトップ、ノートブック、及びタブレットコンピュータ(2:1タブレット、ファブレットなどを含む)に及ぶ数多くの異なるシステムタイプで使用されることができ、また、例えばハンドヘルド装置、システム・オン・チップ(SoC)、及び組み込みアプリケーションなどの他のデバイスでも使用され得る。ハンドヘルド装置の一部の例は、例えばスマートフォンなどの携帯電話、インターネットプロトコル装置、デジタルカメラ、携帯情報端末(PDA)、及びハンドヘルドPCを含む。組み込みアプリケーションは典型的に、マイクロコントローラ、デジタル信号プロセッサ(DSP)、ネットワークコンピュータ(NetPC)、セットトップボックス、ネットワークハブ、ワイドエリアネットワーク(WAN)スイッチ、ウェアラブル装置、又は以下に教示される機能及び動作を実行することができる任意の他のシステムを含み得る。また、実施形態は、例えば移動電話、スマートフォン及びファブレットなどの標準的な音声機能を有するモバイル端末、及び/又は多くのウェアラブル、タブレット、ノートブック、デスクトップ、マイクロサーバ、サーバなどの、標準的な無線音声機能の通信能力を持たない非モバイル端末に実装され得る。さらに、ここに記載される装置、方法、及びシステムは、物理的なコンピューティング装置に限定されず、エネルギー節約及び効率のためのソフトウェア最適化にも関係し得る。以下の説明にてただちに明らかになるように、ここに記載される方法、装置、及びシステムの実施形態(ハードウェア、ファームウェア、ソフトウェア、又はこれらの組み合わせのいずれを参照していようと)は、例えば米国経済の大部分を網羅するプロダクトの電力節約及びエネルギー効率などの“グリーン技術”の将来にとって不可欠である。
【0009】
次に図1を参照するに、本発明の一実施形態に従ったシステムの一部のブロック図が示されている。図1に示すように、システム100は、図示のようにマルチコアプロセッサであるプロセッサ110を含む様々なコンポーネントを含み得る。プロセッサ110は、外部電圧レギュレータ160を介して電源150に結合されることができ、外部電圧レギュレータ160は、第1の電圧変換を実行して、プロセッサ110に一次レギュレート電圧を提供し得る。
【0010】
見てとれるように、プロセッサ110は、複数のコア120-120を含む単一ダイのプロセッサとし得る。また、各コアに集積電圧レギュレータ(integrated voltage regulator;IVR)125-125が付随するようにすることができ、IVRは、一次レギュレート電圧を受けて、該IVRが付随するプロセッサの1つ以上のエージェントに供給される動作電圧を生成する。従って、IVR実装は、個々のコア各々の電圧ひいては電力及び性能の、細かい粒度での制御を可能にするように提供され得る。従って、各コアは、独立した電圧及び周波数で動作することができ、大きな柔軟性を可能にするとともに、電力消費を性能とバランスさせるための幅広い機会を提供する。一部の実施形態において、複数のIVRの使用は、コンポーネントを別々の電力プレーンにグループ分けし、電力がIVRによってレギュレートされてそのグループ内のコンポーネントのみに供給されるようにすることを可能にする。電力管理において、プロセッサがある特定の低電力状態に置かれるときに、所与の電力プレーンの1つのIVRが電力を下げられるか切られるかする一方で、他の電力プレーンの別のIVRがアクティブのままである又はフルに電力供給されることができる。
【0011】
なおも図1を参照するに、プロセッサ内には、入力/出力インタフェース132、別のインタフェース134、及び集積メモリコントローラ136を含む更なるコンポーネントが存在し得る。見てとれるように、これらのコンポーネントの各々が、別の集積電圧レギュレータ125によって電力供給され得る。一実施形態において、インタフェース132は、物理層、リンク層、及びプロトコル層を含む複数レイヤを含んだキャッシュコヒーレントプロトコルにおいてポイント・ツー・ポイント(PtP)リンクを提供するものであるIntel(登録商標)QPI(Quick Path Interconnect)インターコネクト向けの動作を可能にし得る。代わって、インタフェース134は、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIeTM)プロトコルを介して通信してもよい。
【0012】
プロセッサ110に対する電力管理動作を実行するための、ハードウェア、ソフトウェア、及び/又はファームウェアを含み得るものである電力制御ユニット(PCU)138も示されている。見てとれるように、PCU138は、デジタルインタフェースを介して外部電圧レギュレータ160に制御情報を提供し、該電圧レギュレータに適切なレギュレートされた電圧を生成させる。PCU138はまた、別のデジタルインタフェースを介してIVR125に制御情報を提供し、生成される動作電圧を制御する(又は、対応するIVRを低電力モードで無効にさせる)。様々な実施形態において、PCU138は、ハードウェアベースの電力管理を実行する多様な電力管理論理ユニットを含み得る。そのような電力管理は、全体がプロセッサ制御されてもよく(例えば、様々なプロセッサハードウェアによってであり、ワークロード及び/又は電力、熱若しくは他のプロセッサ制約によってトリガーされ得る)、及び/又は電力管理は、外部ソース(例えば、プラットフォーム又は管理電力管理ソース若しくはシステムソフトウェア)に応答して実行されてもよい。
【0013】
また、図1は、PCU138が別個の処理エンジン(これはマイクロコントローラとして実装され得る)である実装を示しているが、理解されたいことには、一部の実施形態では、専用の電力コントローラに加えて又は代えて、各コアが、電力制御エージェントを含むか、それに付随されるかして、いっそう自律的に、電力消費を独立して制御するようにしてもよい。一部のケースでは、階層的な電力管理アーキテクチャが提供され、PCU138が、コア120の各々に付随した対応する電力管理エージェントと通信する。
【0014】
PCU138に含まれる1つの電力管理論理ユニットは、各コア120及び/又は更なる処理回路に対して独立した最大電流消費値を動的に決定するように構成される動的電流共有制御回路とし得る。ここに更にさらに記載されるように、この制御回路は、コア120の各々に動的に設定可能な最大電流消費値を与えて、各コア120がこの制約に従って動作することを可能にし得る。従って、スロットルイベントをトリガーする状態をPCU138が確認したとき、スロットル信号がこれらのコア120に送信され得る。そして、各コア120が、その動作をその動的に特定された最大電流消費値に制限し得る。斯くして、特にスロットルイベントが確認されたときに、異なるコアが非対称な性能状態で動作して、ユーザに対峙するワークロードに対して生じる影響が最小限となるようにし得る。
【0015】
説明を容易にするために図示していないが、理解されたいことには、プロセッサ110内には、追加の制御回路や、例えば1つ以上のレベルのキャッシュメモリ階層などといった内部メモリなどのその他のコンポーネントなどの、更なるコンポーネントが存在し得る。また、図1の実装は集積電圧レギュレータを備えるように示されているが、実施形態はそのように限定されるものではない。
【0016】
なお、ここに記載される電力管理技術は、オペレーティングシステム(OS)ベースの電力管理(OSPM)機構とは独立であり且つそれに対して補完的であるとし得る。一例のOSPM技術によれば、プロセッサは、いわゆるP0からPNまでのP状態である様々な性能状態又はレベルで動作することができる。一般に、P1性能状態は、OSによって要求される最高保証性能状態に対応し得る。ここに記載される実施形態は、多様な入力及びプロセッサ動作パラメータに基づいた、P1性能状態の保証周波数に対する動的な変更を可能にし得る。このP1状態に加えて、OSは、更に高い性能状態すなわちP0状態を要求することができる。このP0状態は、故に、電力量及び/又は熱量が利用可能であるときにプロセッサハードウェアが、プロセッサ又はその少なくともその一部を、保証周波数よりも高い周波数で動作するように設定することができるという、日和見モード状態又はターボモード状態とし得る。多くの実装において、プロセッサは、製造中に該プロセッサにヒューズによって又はその他によって書き込んで、その特定のプロセッサの最大ピーク周波数を超える、P1保証最大周波数よりも高い、複数のいわゆるビン周波数を含むことができる。さらに、一OSPM機構によれば、プロセッサは様々な電力状態又はレベルで動作することができる。電力状態に関して、OSPM機構は、一般にC0、C1-Cn状態なるC状態として参照される複数の異なる電力消費状態を指定し得る。あるコアがアクティブであるとき、それはC0状態で動作し、コアがアイドルであるとき、それは、コア非ゼロC状態(例えば、C1-C6状態)とも呼ばれるコア低電力状態に置かれることができ、これらの各C状態が低めの電力消費レベルにある(C6の方がC1よりも深い低電力状態である等々であるように)。
【0017】
理解されたいことには、異なる実施形態では数多くの異なるタイプの電力管理技術が個別に又は組み合わせて使用され得る。代表的な例として、電力コントローラが、特定の状況において電力消費を低減させるように1つ以上のコア又は他のプロセッサロジックの動作電圧及び/又は動作周波数が動的に制御されるものである何らかの形態の動的電圧・周波数スケーリング(dynamic voltage frequency scaling;DVFS)によって電力管理されるように、プロセッサを制御し得る。一例として、DVFSは、最低電力消費レベルで最適な性能を提供するために、カリフォルニア州サンタクララのインテル社から入手可能なEnhanced Intel SpeedStepTM技術を用いて実行され得る。他の一例において、DVFSは、1つ以上のコア又は他の計算エンジンが条件(例えば、ワークロード及び利用可能性)に基づいて保証動作周波数よりも高い周波数で動作することを可能にするために、Intel TurboostTM技術を用いて実行されてもよい。
【0018】
特定の例において使用され得る他の電力管理技術は、異なる計算エンジン間でのワークロードの動的スワッピングである。例えば、プロセッサは、異なる電力消費レベルで動作する非対称なコア又は他の処理エンジンを含むことができ、ある電力制約状況において、1つ以上のワークロードを、より低電力のコア又は他の計算エンジン上で実行するように動的に切り替えることができるようにし得る。他の例示的な電力管理技術は、ハードウェアデューティサイクリング(hardware duty cycling;HDC)技術であり、これは、1つ以上のコアが、デューティサイクルのうち非活性期間の間は非アクティブにされ、デューティサイクルのうち活性期間の間はアクティブにされ得るように、デューティサイクルに従ってコア及び/又は他の計算エンジンを周期的に有効化及び無効化させ得るものである。これら特定の例を用いて説明したが、理解されたいことには、数多くの他の電力管理技術が具体的な実施形態において使用され得る。
【0019】
実施形態は、サーバプロセッサ、デスクトッププロセッサ、モバイルプロセッサなどを含む様々な市場向けのプロセッサに実装されることができる。次に図2を参照するに、本発明の一実施形態に従ったプロセッサのブロック図が示されている。図2に示すように、プロセッサ200は、複数のコア210-210を含むマルチコアプロセッサとし得る。一実施形態において、そのようなコアは各々、独立した電力ドメインのものとすることができ、ワークロードに基づいてアクティブ状態及び/又は最大性能状態を出入りするように構成されることができる。これら様々なコアは、インターコネクト215を介して、様々なコンポーネントを含むシステムエージェント220に結合され得る。見てとれるように、システムエージェント220は、最終レベルキャッシュとし得る共有キャッシュ230を含むことができる。加えて、システムエージェントは、例えばメモリバスを介してシステムメモリ(図2には示さず)と通信する集積メモリコントローラ240を含み得る。システムエージェント220はまた、ここに記載される電力管理技術を実行するためのロジックを含み得るものである様々なインタフェース250及び電力制御ユニット255を含み得る。図示した実施形態において、電力制御ユニット255は、ソフトウェアによって提供されるヒント情報に少なくとも部分的に基づいてコア210の各々についての動的な電流消費値を動的に決定し得る動的電流共有制御回路258を含んでいる。動的電流共有制御回路258は、特にスロットルイベントが確認されたときに、そのような動的な電流消費値を、それらの記憶及び内部使用のためにコア210に通信して、それらのコアの電流消費を独立に制御し得る。
【0020】
さらに、インタフェース250a-250nにより、例えば周辺装置及び大容量ストレージなどの様々なオフチップコンポーネントへの接続を為すことができる。図2の実施形態ではこの特定の実装を有するように示されているが、本発明の範囲は、これに関して限定されるものではない。
【0021】
次に図3を参照するに、他の一実施形態に従ったマルチドメインプロセッサのブロック図が示されている。図3の実施形態に示すように、プロセッサ300は複数のドメインを含んでいる。具体的には、コアドメイン310が複数のコア310-310を含むことができ、グラフィックスドメイン320が1つ以上のグラフィックスエンジンを含むことができ、そして、システムエージェントドメイン350が更に存在してもよい。一部の実施形態において、システムエージェントドメイン350は、コアドメインとは独立した周波数で実行することができ、また、ドメイン310及び320が高電力状態及び低電力状態に動的に出入りするように制御され得るように電力制御イベント及び電力管理を扱うために、常時、電力オンのままにされることができる。ドメイン310及び320の各々は、異なる電圧及び/又は電力で動作することができる。なお、3つのドメインのみを有するように示されているが、理解されたいことには、本発明の範囲は、これに関して限定されるものではなく、他の実施形態では更なるドメインが存在することができる。例えば、各々が少なくとも1つのコアを含む複数のコアドメインが存在してもよい。
【0022】
一般に、各コア310は更に、様々な実行ユニット及び追加の処理要素に加えて、低レベルキャッシュを含み得る。そして、これら様々なコアが、互いに結合され得るとともに最終レベルキャッシュ(LLC)340-340の複数ユニットで形成される共有キャッシュメモリに結合され得る。様々な実施形態において、LLC340は、これらのコア及びグラフィックスエンジンの間だけでなく様々なメディア処理回路の間で共有され得る。見てとれるように、斯くしてリングインターコネクト330がこれらのコアをともに結合するとともに、コア、グラフィックスドメイン320、及びシステムエージェント回路350の間の相互接続を提供する。一実施形態において、インターコネクト330は、コアドメインの一部とすることができる。しかしながら、他の実施形態において、リングインターコネクトは、それ自身のドメインのものであってもよい。
【0023】
更に見てとれるように、システムエージェントドメイン350は、結合されるディスプレイの制御及びそれへのインタフェースを提供し得るディスプレイコントローラ352を含み得る。更に見てとれるように、システムエージェントドメイン350は、ここに記載される電力管理技術を実行するロジックを含むことができる電力制御ユニット355を含み得る。図示した実施形態において、電力制御ユニット355は動的電流共有制御回路359を含んでおり、これは、ここに記載されるように、ソフトウェアによって提供されるヒント情報に少なくとも部分的に基づいて、各コア310及びグラフィックスエンジン320に対して独立に最大電流消費レベルを動的に決定するものである。
【0024】
図3にて更に見てとれるように、プロセッサ300は更に、例えばダイナミックランダムアクセスメモリ(DRAM)などのシステムメモリへのインタフェースを提供し得る集積メモリコントローラ(IMC)370を含むことができる。プロセッサと他の回路との間の相互接続を可能にするために、複数のインタフェース380-380が存在し得る。例えば、一実施形態において、1つ以上のPCIeTMンタフェースとともに少なくとも1つのダイレクトメディアインタフェース(DMI)インタフェースが設けられ得る。さらには、追加のプロセッサ又は他の回路などの他のエージェント同士の間での通信を提供するために、1つ以上のQPIインタフェースも設けられ得る。図3の実施形態ではこのハイレベルで示されているが、理解されたいことには、本発明の範囲は、これに関して限定されるものではない。
【0025】
図4を参照するに、複数のコアを含むプロセッサの一実施形態が示されている。プロセッサ400は、例えばマイクロプロセッサ、埋め込みプロセッサ、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、ハンドヘルドプロセッサ、アプリケーションプロセッサ、コプロセッサ、システム・オン・チップ(SoC)、又はコードを実行する他のデバイスなどの、任意のプロセッサ又は処理デバイスを含む。プロセッサ400は、一実施形態において、非対称コア又は対称コア(図示した実施形態)を含み得る少なくとも2つのコア、コア401及び402、を含む。しかしながら、プロセッサ400は、対称又は非対称とし得る如何なる数の処理要素を含んでもよい。
【0026】
一実施形態において、処理要素は、ソフトウェアスレッドをサポートするハードウェア又はロジックを指す。ハードウェア処理要素の例は、例えば実行状態若しくはアーキテクチャ状態などのプロセッサに関する状態を保持することが可能な、スレッドユニット、スレッドスロット、スレッド、プロセスユニット、コンテキスト、コンテキストユニット、論理プロセッサ、ハードウェアスレッド、コア、及び/又は任意の他の要素を含む。換言すれば、処理要素は、一実施形態において、例えばソフトウェアスレッド、オペレーティングシステム、アプリケーション、又は他のコードなどのコードと独立に関連付けられることが可能な任意のハードウェアを指す。物理プロセッサは典型的に、例えばコア又はハードウェアスレッドなどの任意数の他の処理要素を含み得るものである集積回路を指す。
【0027】
コアは、しばしば、独立したアーキテクチャ状態を維持することが可能な集積回路上に置かれたロジックを指し、独立して維持される各アーキテクチャ状態が、少なくとも一部の専用実行リソースと関連付けられる。コアとは対照的に、ハードウェアスレッドは典型的に、独立したアーキテクチャ状態を維持することが可能な集積回路上に置かれた任意のロジックを指し、独立して維持される複数のアーキテクチャ状態が、実行リソースへのアクセスを共有する。理解され得るように、特定のリソースが共有され、他のリソースがあるアーキテクチャ状態に専用にされる場合、ハードウェアスレッドという用語とコアという用語との間の線引きが重なり合う。更には、しばしば、コア及びハードウェアスレッドは、オペレーティングシステムによって、個別の論理プロセッサとして見られ、オペレーティングシステムは、各論理プロセッサ上での演算を個別にスケジュールすることができる。
【0028】
物理プロセッサ400は、図4に例示するように、コア401及びコア402という2つのコアを含んでいる。ここでは、コア401及び402を、対称コア、すなわち、同じ構成、機能ユニット、及び/又はロジックを有するコアとして考える。他の一実施形態では、コア401はアウト・オブ・オーダプロセッサコアを含む一方で、コア402はイン・オーダプロセッサコアを含む。しかしながら、コア401及び402は、例えばネイティブコア、ソフトウェア管理コア、ネイティブの命令セットアーキテクチャ(ISA)を実行するように適応されたコア、変換されたISAを実行するように適応されたコア、協調設計コア、又は他の知られたコアなど、任意のタイプのコアから個別に選択され得る。しかし、議論を更に進めるため、コア402内のユニットは同様にして動作するので、以下、コア401内に例示する機能ユニットを更に詳細に説明する。
【0029】
図示のように、コア401は、ハードウェアスレッドスロット401a及び401bとしても参照することがある2つのハードウェアスレッド401a及び401bを含んでいる。従って、例えばオペレーティングシステムなどのソフトウェアエンティティは、一実施形態において、プロセッサ400を4つの別々のプロセッサ、すなわち、4つのソフトウェアスレッドを同時に実行することが可能な4つの論理プロセッサ又は処理要素として見ることが可能である。上で示唆したように、第1のスレッドはアーキテクチャ状態レジスタ401aと関連付けられ、第2のスレッドはアーキテクチャ状態レジスタ401bと関連付けられ、第3のスレッドはアーキテクチャ状態レジスタ402aと関連付けられ、そして、第4のスレッドはアーキテクチャ状態レジスタ402bと関連付けられ得る。ここで、アーキテクチャ状態レジスタ(401a、401b、402a、及び402b)の各々は、上述のように、処理要素、スレッドスロット、又はスレッドユニットと称されることがある。図示のように、アーキテクチャ状態レジスタ(Arch Reg)401aは、アーキテクチャ状態レジスタ401b内に複製され、故に、個々のアーキテクチャ状態/コンテキストは、論理プロセッサ401a及び論理プロセッサ401bのために格納されることが可能である。コア401内で、例えばアロケータ・リネーマブロック430における命令ポインタ及びリネームロジックなどの、より小さい他のリソースも、スレッド401a及び401bに対して複製され得る。例えばリオーダ/リタイアメントユニット435内のリオーダバッファ、ILTB420、ロード/ストアバッファ、及びキューなどの、一部のリソースは、パーティショニングを通して共有され得る。例えば汎用内部レジスタ、(1つ以上の)ページテーブルベースレジスタ、低レベルデータキャッシュ及びデータTLB415、(1つ以上の)実行ユニット440、及びアウト・オブ・オーダユニット435の部分などの、他のリソースは完全に共有され得る。
【0030】
プロセッサ400は、しばしば、完全に共有されるか、パーティションを通して共有されるか、又は処理要素によって/対して専用にされるかし得るものである他のリソースを含む。図4には、プロセッサの例示的な論理ユニット/リソースを有する純粋に例示的なプロセッサの一実施形態が示されている。なお、プロセッサは、これらの機能ユニットのうちのいずれかを含んだり省略したりすることができるとともに、図示されていない任意の他の知られた機能ユニット、ロジック、又はファームウェアを含むことができる。図示のように、コア401は、単純化された代表的なアウト・オブ・オーダ(OOO)プロセッサコアを含んでいる。しかし、異なる実施形態ではイン・オーダプロセッサが利用されてもよい。OOOコアは、実行される/採択される分岐を予測する分岐ターゲットバッファ420、及び命令に関するアドレス変換エントリを格納する命令-変換バッファ(I-TLB)420を含んでいる。
【0031】
コア401は更に、フェッチされたエレメントを復号するためにフェッチユニット420に結合された復号モジュール425を含んでいる。フェッチロジックは、一実施形態において、それぞれスレッドスロット401a、401bと関連付けられた個々のシーケンサを含む。通常、コア401は、プロセッサ400上で実行可能な命令を定義/規定するものである第1のISAと関連付けられる。しばしば、第1のISAの一部であるマシンコード命令が、実行されるべき命令又は演算を参照/指定するものである命令の一部(オペコードと呼ばれる)を含む。復号ロジック425は、以下の回路を含み、すなわち、それらのオペコードからこれらの命令を認識し、復号した命令を、第1のISAによって定められる処理用のパイプラインに渡す回路を含む。例えば、デコーダ425は、一実施形態において、例えばトランザクション命令などの特定の命令を認識するように設計又は適応されたロジックを含む。デコーダ425による認識の結果として、アーキテクチャ又はコア401は、特定の予め定められたアクションをとって、その適切な命令に関連するタスクを実行する。言及しておくことが重要なことには、ここに記載されるタスク、ブロック、演算、及び方法のいずれも、単一又は複数の命令に応答して実行されることができ、それらのうちの一部は新規の命令であることもあるし、旧来の命令であることもある。
【0032】
一例において、アロケータ・リネーマブロック430は、例えば命令処理結果を記憶するためのレジスタファイルなどのリソースを予約するアロケータを含む。しかしながら、スレッド401a及び401bは、アウト・オブ・オーダ実行が可能であってもよく、その場合、アロケータ・リネーマブロック430は、例えば命令結果を追跡するためのリオーダバッファなどの他のリソースも予約する。ユニット430はまた、プログラム/命令参照レジスタをプロセッサ400の内部の他のレジスタにリネームするレジスタリネーマを含み得る。リオーダ/リタイアメントユニット435は、アウト・オブ・オーダ実行と、後の、アウト・オブ・オーダ実行された命令のイン・オーダリタイアメントとをサポートするために、例えば上述のリオーダバッファ、ロードバッファ、及びストアバッファなどのコンポーネントを含む。
【0033】
スケジューラ及び(1つ以上の)実行ユニットのブロック440は、一実施形態において、実行ユニット上の命令/演算をスケジュールするスケジューラユニットを含む。例えば、浮動小数点命令が、利用可能な浮動小数点実行ユニットを有する実行ユニットのポート上にスケジュールされる。情報命令処理結果を格納するために、実行ユニットに関連付けられたレジスタファイルも含められる。例示的な実行ユニットは、浮動小数点実行ユニット、整数実行ユニット、ジャンプ実行ユニット、ロード実行ユニット、ストア実行ユニット、及び他の知られた実行ユニットを含む。
【0034】
下位データキャッシュ及びデータ変換バッファ(D-TLB)450が、(1つ以上の)実行ユニット440に結合される。データキャッシュは、メモリコヒーレンシ状態に保持され得るものである例えばデータオペランドなどの最近使用/演算されたエレメントを格納する。D-TLBは、最近の仮想/線形-物理アドレス変換を格納する。一具体例として、プロセッサは、物理メモリを複数の仮想ページに分割するページテーブル構造を含み得る。
【0035】
ここで、コア401及び402は、最近フェッチされたエレメントをキャッシュするものである、より上位の又は更に外のキャッシュ410へのアクセスを共有する。なお、より上位又は更に外は、キャッシュレベルが増すこと又は(1つ以上の)実行ユニットから更に遠ざかることを指す。一実施形態において、より上位のキャッシュ410は、例えば第2レベル又は第3レベルのデータキャッシュなど、プロセッサ400のメモリ階層内の最後のキャッシュである最終レベルデータキャッシュである。しかしながら、より上位のキャッシュ410は、命令キャッシュと関連付けられたり、それを含んだりしてもよいものであるので、そのように限定されるものではない。代わりに、最近復号されたトレースを格納するために、デコーダ425の後に、一種の命令キャッシュであるトレースキャッシュが結合されてもよい。
【0036】
図示した構成において、プロセッサ400はまた、バスインタフェースモジュール405と、本発明の一実施形態に従って電力管理を実行し得るものである及び電力コントローラ460とを含んでいる。このシナリオでは、バスインタフェース405は、例えばシステムメモリ及び他のコンポーネントなどの、プロセッサ400の外部の装置と通信する。
【0037】
メモリコントローラ470は、例えば1つ以上のメモリなどの他の装置とインタフェースをとり得る。一例において、バスインタフェース405は、メモリとインタフェースをとるためのメモリコントローラ及びグラフィックスプロセッサとインタフェースをとるためのグラフィックスコントローラとのリングインターコネクトを含む。SoC環境では、高い機能性及び低い消費電力の小さなフォームファクタを提供するよう、例えばネットワークインタフェース、コプロセッサ、メモリ、グラフィックスプロセッサ、及び任意の他の知られたコンピュータデバイス/インタフェースなどの、もっと多くのデバイスが、単一のダイ又は集積回路上に集積され得る。
【0038】
次に図5を参照するに、本発明の一実施形態に従ったプロセッサコアのマイクロアーキテクチャのブロック図が示されている。図5に示すように、プロセッサコア500は、多段パイプライン型アウト・オブ・オーダプロセッサとし得る。コア500は、集積電圧レギュレータ又は外部電圧レギュレータから受け取り得るものである受けた動作電圧に基づいて、様々な電圧で動作し得る。
【0039】
図5にて見てとれるように、コア500はフロントエンドユニット510を含んでおり、これは、実行すべき命令をフェッチし、それら命令をプロセッサパイプラインでの後の使用のために準備するために使用され得るものである。例えば、フロントエンドユニット510は、フェッチユニット501、命令キャッシュ503、及び命令デコーダ505を含み得る。一部の実装において、フロントエンドユニット510は更に、マイクロコードストレージ及びマイクロ演算ストレージと共に、トレースキャッシュを含んでもよい。フェッチユニット501は、例えばメモリ又は命令キャッシュ503から、マクロ命令をフェッチし、それらマクロ命令を、それらをプリミティブへと、すなわち、プロセッサによる実行のためのマイクロ演算へと復号する命令デコーダ505に送り得る。
【0040】
フロントエンドユニット510と実行ユニット520との間に、マイクロ命令を受け取って、それらを実行のために準備するために使用され得るアウト・オブ・オーダ(OOO)エンジン515が結合される。より具体的には、OOOエンジン515は、マイクロ命令フローを並べ替えて、実行に必要な様々なリソースを割り当てるために、及び、例えばレジスタファイル530及び拡張レジスタファイル535などの様々なレジスタファイル内のストレージ位置に対する論理レジスタのリネームを提供するために、様々なバッファを含み得る。レジスタファイル530は、整数演算及び浮動小数点演算のための別々のレジスタファイルを含み得る。拡張レジスタファイル535は、レジスタ当たり例えば256又は512ビットといった、ベクトルサイズのユニット向けのストレージを提供し得る。設定、制御、及び追加演算の目的のために、一組のマシン固有レジスタ(MSR)538も存在してコア500内の(及びコア外部の)様々なロジックにアクセス可能にされ得る。
【0041】
実行ユニット520内には、例えば、数多の特殊化されたハードウェアの中でもとりわけ、様々な整数、浮動小数点、及び単一命令複数データ(SIMD)の論理ユニットを含め、様々なリソースが存在し得る。例えば、そのような実行ユニットは、とりわけ、数多のそのような実行ユニットの中でもとりわけ、1つ以上の算術論理ユニット(ALU)522及び1つ以上のベクトル実行ユニット524を含み得る。
【0042】
実行ユニットからの結果は、リオーダバッファ(ROB)540というリタイアメントロジックに提供され得る。より具体的には、ROB540は、実行される命令に関連する情報を受信する様々なアレイ及びロジックを含み得る。この情報は、次いで、命令が正当に退去させられて結果データがプロセッサのアーキテクチャ状態にコミットされるかを判定するため、又は命令の適切な退去を妨げる1つ以上の例外が発生したかを判定するために、ROB540によって検査される。当然ながら、ROB540は、リタイアメントに関連する他の操作も取り扱い得る。
【0043】
図5に示すように、ROB540はキャッシュ550に結合され、キャッシュ550は、一実施形態において低レベルキャッシュ(例えば、L1キャッシュ)とし得るが、本発明の範囲は、これに関して限定されるものではない。また、実行ユニット520は、キャッシュ550に直接的に結合されることができる。キャッシュ550から、より上位のキャッシュ、システムメモリなどとのデータ通信が行われ得る。図5の実施形態においてはこのハイレベルで示されているが、理解されたいことには、本発明の範囲はこれに関して限定されるものではない。例えば、図5の実装は、例えばIntel(登録商標)x86命令セットアーキテクチャ(ISA)のものなどのアウト・オブ・オーダマシンに関するものであるが、本発明の範囲は、これに関して限定されるものではない。すなわち、他の実施形態は、イン・オーダプロセッサにて実装されてもよいし、例えばARMベースのプロセッサなどの縮小命令セットコンピューティング(RISC)プロセッサにて実装されてもよいし、あるいは、エミュレーションエンジン及び関連論理回路を介して異なるISAの命令及び演算をエミュレートすることができる別のタイプのISAのプロセッサにて実装されてもよい。
【0044】
次に図6を参照するに、他の一実施形態に従ったプロセッサコアのマイクロアーキテクチャのブロック図が示されている。図6の実施形態において、コア600は、電力消費を低減させるように設計された比較的限られたパイプライン深さを持った、例えばIntel(登録商標)AtomTMベースのプロセッサなどの、異なるマイクロアーキテクチャの低電力コアとし得る。見てとれるように、コア600は、命令デコーダ615に命令を提供するように結合された命令キャッシュ610を含んでいる。分岐予測器605が命令キャッシュ610に結合され得る。なお、命令キャッシュ610は更に、例えばL2キャッシュなどの別レベルのキャッシュメモリ(図6では図示の容易さのために示していない)に結合されてもよい。代わって、命令デコーダ615は、復号した命令を、保管及び所与の実行パイプラインへの送達のために、発行(イシュー)キュー620に提供する。マイクロコードROM618が命令デコーダ615に結合される。
【0045】
浮動小数点パイプライン630は、例えば128、256又は512ビットなどの所与のビットの複数のアーキテクチャレジスタを含み得る浮動小数点レジスタファイル632を含む。パイプライン630は、パイプラインの複数の実行ユニットのうちの1つで実行する命令をスケジュールする浮動小数点スケジューラ634を含む。図示した実施形態において、そのような実行ユニットは、ALU635、シャッフルユニット636、及び浮動小数点加算器638を含んでいる。次いで、これらの実行ユニットで生成された結果を、レジスタファイル632のバッファ及び/又はレジスタに提供し返すことができる。理解されたいことには、これら僅かな例の実行ユニットを有するように示されているが、当然ながら、他の一実施形態では追加の又は異なる浮動小数点実行ユニットが存在し得る。
【0046】
整数パイプライン640も設けられ得る。図示した実施形態において、パイプライン640は、例えば128又は256ビットなどの所与のビットの複数のアーキテクチャレジスタを含み得る整数レジスタファイル642を含んでいる。パイプライン640は、パイプラインの複数の実行ユニットのうちの1つで実行する命令をスケジュールする整数スケジューラ644を含む。図示した実施形態において、そのような実行ユニットは、ALU645、シフタユニット646、及びジャンプ実行ユニット648を含んでいる。次いで、これらの実行ユニットで生成された結果を、レジスタファイル642のバッファ及び/又はレジスタに提供し返すことができる。理解されたいことには、これら僅かな例の実行ユニットを有するように示されているが、当然ながら、他の一実施形態では追加の又は異なる整数実行ユニットが存在し得る。
【0047】
メモリ実行スケジューラ650が、TLB654にも結合されるアドレス生成ユニット652における実行のためのメモリ動作をスケジュールし得る。見てとれるように、これらの構造はデータキャッシュ660に結合することができ、データキャッシュ660は、次いでL2キャッシュメモリを含むキャッシュメモリ階層の更なるレベルに結合するL0及び/又はL1データキャッシュとし得る。
【0048】
アウト・オブ・オーダ実行のサポートを提供するため、アウト・オブ・オーダ実行された命令をリタイアメントのために順序通りに並べ替えるように構成されるものであるリオーダバッファ680に加えて、アロケータ/リネーマ670を設けられ得る。図6の例示ではこの特定のパイプラインアーキテクチャを有するように示されているが、理解されたいことには、数多くの変形及び代替が可能である。
【0049】
なお、例えば図5及び図6のマイクロアーキテクチャに従ってなど、非対称コアを有するプロセッサにおいては、電力管理の理由で、コア間でワークロードが動的に交換され得る。何故なら、それらのコアは、異なるパイプライン設計及び深さを持つが、同一又は関連するISAのものとし得るからである。そのような動的なコアスワッピングは、ユーザアプリケーションに対して(及び恐らくはカーネルに対しても)トランスペアレントなやり方で実行され得る。
【0050】
図7を参照するに、更なる他の一実施形態に従ったプロセッサコアのマイクロアーキテクチャのブロック図が示されている。図7に例示するように、コア700は、非常に低い電力消費レベルで実行するための多段インオーダパイプラインを含み得る。そのような一例として、プロセッサ700は、カリフォルニア州サニーベールのアームホールディング社から入手可能なARM Cortex A53設計に従ったマイクロアーキテクチャを有し得る。一実装において、32ビット及び64ビットの両方のコードを実行するように構成された8段パイプラインが設けられ得る。コア700は、命令をフェッチしてそれらを復号ユニット715に提供するように構成されたフェッチユニット710を含んでおり、復号ユニット715は、例えばARMv8 ISAなどの所与のISAのマクロ命令といった命令を復号し得るものである。更に言及しておくことには、復号された命令を格納するために、キュー730が復号ユニット715に結合し得る。復号された命令は発行ロジック725に提供され、そこで、復号された命令が、複数の実行ユニットのうちの所与の1つに発行され得る。
【0051】
図7を更に参照するに、発行ロジック725は、複数の実行ユニットのうちの1つに命令を発行し得る。図示した実施形態では、それらの実行ユニットは、整数ユニット735、乗算ユニット740、浮動小数点/ベクトルユニット750、デュアル発行ユニット760、及びロード/ストアユニット770を含んでいる。これら様々な実行ユニットの結果は、ライトバックユニット780に提供され得る。理解されたいことには、図示の容易さのために単一のライトバックユニットが示されているが、一部の実装では、実行ユニットの各々に別々のライトバックユニットが付随してもよい。さらに、理解されたいことには、図7に示したユニット及びロジックの各々はハイレベルで表されているが、特定の一実装は、より多くの又は異なる構造を含み得る。図7においてのようにパイプラインを有する1つ以上のコアを用いて設計されるプロセッサは、モバイル装置からサーバシステムにまでわたる数多くの異なる最終製品にて実装され得る。
【0052】
図8を参照するに、より更なる一実施形態に従ったプロセッサコアのマイクロアーキテクチャのブロック図が示されている。図8に例示するように、コア800は、非常に高い性能レベル(図7のコア700よりも高い電力消費レベルで発生し得る)で実行するための多段マルチ発行アウト・オブ・オーダパイプラインを含み得る。そのような一例として、プロセッサ800は、ARM Cortex A57設計に従ったマイクロアーキテクチャを有し得る。一実装において、32ビット及び64ビットの両方のコードを実行するように構成された15(又はそれより多く)段パイプラインが設けられ得る。さらに、このパイプラインは、3(又はそれより多く)ワイド及び3(又はそれより多く)発行オペレーションを提供し得る。コア800は、命令をフェッチしてそれらをデコーダ/リネーマ/ディスパッチャ815に提供するように構成されたフェッチユニット810を含んでおり、デコーダ/リネーマ/ディスパッチャ815は、例えばARMv8命令セットアーキテクチャのマクロ命令といった命令を復号し、命令内のレジスタ参照をリネームし、そして、命令を(最終的には)選択された実行ユニットへとディスパッチし得る。復号された命令はキュー825に格納され得る。なお、図8では図示の容易さのために単一のキュー構造が示されているが、理解されたいことには、複数の異なるタイプの実行ユニットの各々に対して別々のキューが設けられてもよい。
【0053】
発行ロジック830も図8に示されており、そこから、キュー825に格納された復号された命令が、選択された実行ユニットに発行され得る。発行ロジック830はまた、特定の一実施形態において、発行ロジック830が結合する複数の異なるタイプの実行ユニットの各々に対して別個の発行ロジックを有するように実施されてもよい。
【0054】
復号された命令が、複数の実行ユニットのうちの所与の1つに発行され得る。図示した実施形態では、それらの実行ユニットは、1つ以上の整数ユニット835、乗算ユニット840、浮動小数点/ベクトルユニット850、分岐ユニット860、及びロード/ストアユニット870を含んでいる。一実施形態において、浮動小数点/ベクトルユニット850は、128ビット又は256ビットのSIMD又はベクトルデータを取り扱うように構成され得る。より更には、浮動小数点/ベクトル実行ユニット850は、IEEE-754倍精度浮動小数点演算を実行することができる。これら様々な実行ユニットの結果は、ライトバックユニット880に提供され得る。なお、一部の実装では、実行ユニットの各々に別々のライトバックユニットが付随してもよい。さらに、理解されたいことには、図8に示したユニット及びロジックの各々はハイレベルで表されているが、特定の一実装は、より多くの又は異なる構造を含み得る。
【0055】
なお、例えば図7及び図8のマイクロアーキテクチャに従ってなど、非対称コアを有するプロセッサにおいては、電力管理の理由でワークロードが動的に交換され得る。何故なら、それらのコアは、異なるパイプライン設計及び深さを持つが、同一又は関連するISAのものとし得るからである。そのような動的なコアスワッピングは、ユーザアプリケーションに対して(及び恐らくはカーネルに対しても)トランスペアレントなやり方で実行され得る。
【0056】
図5図8のいずれか1つ以上においてのようにパイプラインを有する1つ以上のコアを用いて設計されるプロセッサは、モバイル装置からサーバシステムにまでわたる数多くの異なる最終製品にて実装され得る。次に図9を参照するに、本発明の他の一実施形態に従ったプロセッサのブロック図が示されている。図9の実施形態において、プロセッサ900は、複数のドメインを含むSoCとすることができ、それらドメインの各々が、独立した動作電圧及び動作周波数で動作するように制御され得る。例示的な一具体例として、プロセッサ900は、例えばi3、i5、i7などのIntel(登録商標)Architecture CoreTMベースのプロセッサ、又はインテル社から入手可能な別のそのようなプロセッサとし得る。しかしながら、例えば、Apple A7プロセッサ、Qualcomm Snapdragonプロセッサ、又はTexas Instruments OMAPプロセッサなどの他の実施形態には、例えば、カリフォルニア州サニーベールのアドバンストマイクロデバイス社(AMD)から入手可能なもの、アームホールディング社又はそのライセンシーからのARMベースの設計、又はカリフォルニア州サニーベールのMIPSテクノロジーズ社又はそのライセンシー若しくは採用者からのMIPSベースの設計などの、他の低電力プロセッサが存在し得る。このようなSoCは、例えばスマートフォン、タブレットコンピュータ、ファブレットコンピュータ、UltrabookTMコンピュータ、又は他のポータブルコンピューティング装置若しくはコネクテッド装置などの低電力システムで使用され得る。
【0057】
図9に示すハイレベル図において、プロセッサ900は、複数のコアユニット910-910を含んでいる。各コアユニットが、1つ以上のプロセッサコア、1つ以上のキャッシュメモリ、及び他の回路を含み得る。各コアユニット910は、1つ以上の命令セット(例えば、x86命令セット(より新しいバージョンで追加された幾つかの拡張を有する)、MIPS命令セット、ARM命令セット(例えばNEONなどのオプションの追加拡張を有する))若しくは他の命令セット、又はこれらの組み合わせをサポートし得る。なお、これらコアユニットの一部は、異種のリソース(例えば、異なる設計のもの)であってもよい。さらに、このようなコアは各々、一実施形態において共有レベル(L2)キャッシュメモリとし得るキャッシュメモリ(図示せず)に結合され得る。様々なプログラム及び他のデータを記憶するために、不揮発性ストレージ930が使用され得る。例えば、このストレージは、マイクロコードの少なくとも一部、例えばBIOSなどのブート情報、又は他のシステムソフトウェアなどを格納するために使用され得る。
【0058】
各コアユニット910はまた、例えばプロセッサの更なる回路への相互接続を可能にするバスインタフェースユニットなどのインタフェースを含み得る。一実施形態において、各コアユニット910は、一次キャッシュコヒーレントなオンダイインターコネクトとして作用し得るコヒーレントファブリックに結合し、それが次に、メモリコントローラ935に結合する。そして、メモリコントローラ935が、例えばDRAMなどのメモリ(図9では図示の容易さのために示していない)との通信を制御する。
【0059】
プロセッサ内に、コアユニットに加えて、少なくとも1つのグラフィックスユニット920を含む更なる処理エンジンが存在し、該更なる処理エンジンは、グラフィックス処理を実行するとともにグラフィックスプロセッサ上で汎用演算(いわゆるGPGPU演算)を実行し得る1つ以上のグラフィックス処理ユニット(GPU)を含み得る。さらに、少なくとも1つの画像信号プロセッサ925が存在し得る。信号プロセッサ925は、SoCの内部又はオフチップのいずれかの1つ以上のキャプチャデバイスから受信する入力画像データを処理するように構成され得る。
【0060】
他のアクセラレータも存在し得る。図9の例示では、ビデオコーダ950が、ビデオ情報の符号化及び復号を含むコーディング操作を実行し、例えば、高精細度映像コンテンツに対するハードウェア加速サポートを提供する。システムの内部及び外部ディスプレイに対するサポートを提供することを含め、表示操作を加速するためにディスプレイコントローラ955が更に設けられ得る。加えて、例えばセキュアなブート動作及び様々な暗号化演算などのセキュリティ処理を実行するために、セキュリティプロセッサ945が存在してもよい。
【0061】
これらのユニットの各々が、自身の電力消費を、電力マネジャ940を介して制御されてもよく、電力マネジャ940は、ここに記載される様々な電力管理技術を実行する制御ロジックを含み得る。
【0062】
一部の実施形態において、SoC900は更に、様々な周辺デバイスが結合し得るコヒーレントファブリックに結合された非コヒーレントファブリックを含んでもよい。1つ以上のインタフェース960a-960dが、1つ以上のオフチップデバイスとの通信を可能にする。このような通信は、数多のタイプの通信プロトコルの中でもとりわけ、例えばPCIeTM、GPIO、USB、IC、UART、MIPI、SDIO、DDR、SPI、HDMI(登録商標)などの、多様な通信プロトコルを介し得る。図9の実施形態ではこのハイレベルで示されているが、理解されたいことには、本発明の範囲はこれに関して限定されるものではない。
【0063】
次に図10を参照するに、代表的なSoCのブロック図が示されている。図示した実施形態において、SoC1000は、スマートフォン又は例えばタブレットコンピュータ若しくは他のポータブルコンピューティング装置などの他の低電力装置への組み込みのために最適化される低電力動作用に構成されたマルチコアSoCとし得る。一例として、SoC1000は、例えばアウト・オブ・オーダコア及びイン・オーダコアといった、高めの電力のコア及び/又は低電力コアの組み合わせなどの、非対称な又は異なるタイプのコアを用いて実装され得る。異なる実施形態において、これらのコアは、Intel(登録商標)ArchitectureTMコア設計又はARMアーキテクチャ設計に基づき得る。更なる他の実施形態において、Intel(登録商標)コアとARMコアとの混ぜ合わせが所与のSoC内に実装されてもよい。
【0064】
図10にて見てとれるように、SoC1000は、複数の第1のコア1012-1012を有する第1のコアドメイン1010を含んでいる。一例において、これらのコアは、例えばイン・オーダコアなどの低電力コアとし得る。一実施形態において、これら第1のコアは、ARM Cortex A53コアとして実装され得る。そして、これらのコアは、コアドメイン1010のキャッシュメモリ1015に結合する。さらに、SoC1000は第2のコアドメイン1020を含んでいる。図10の例示において、第2のコアドメイン1020は、複数の第2のコア1022-1022を有している。一例において、これらのコアは、第1のコア1012よりも高電力消費のコアとし得る。一実施形態において、第2のコアは、ARM Cortex A57コアとして実装され得るものであるアウト・オブ・オーダコアとし得る。そして、これらのコアは、コアドメイン1020のキャッシュメモリ1025に結合する。なお、図10に示した例は各ドメイン内に4つのコアを含んでいるが、理解されたいことには、他の例では、より多数又は少数のコアが所与のドメイン内に存在し得る。
【0065】
図10を更に参照するに、グラフィックスドメイン1030も設けられており、これは、例えば、コアドメイン1010及び1020の1つ以上のコアによって与えられるグラフィックスワークロードを独立して実行するように構成された1つ以上のグラフィックス処理ユニット(GPU)を含み得る。一例として、GPUドメイン1030は、グラフィックス及び表示レンダリング演算を提供することに加えて、多様なスクリーンサイズに対する表示サポートを提供するために使用され得る。
【0066】
見てとれるように、これらの様々なドメインはコヒーレントインターコネクト1040に結合し、コヒーレントインターコネクト1040は、一実施形態において、次いで集積メモリコントローラ1050に結合するキャッシュコヒーレントなインターコネクトファブリックとし得る。コヒーレントインターコネクト1040は、一部の例において、例えばL3キャッシュなどの共有キャッシュメモリを含み得る。一実施形態において、メモリコントローラ1050は、例えばDRAMの複数のチャネルなど、複数のチャネルでのオフチップメモリとの通信を提供するダイレクトメモリコントローラとし得る(図10では図示の容易さのために示していない)。
【0067】
異なる例ではコアドメインの数が変わり得る。例えば、モバイルコンピューティング装置への組み込みに適した低電力SoCでは、図10に示すような限られた数のコアドメインが存在し得る。より更には、そのような低電力SoCにおいて、より高電力のコアを含むコアドメイン1020は、より少ない数のそのようなコアを有していてもよい。例えば、一実装において、低減された電力消費レベルでの動作を可能にするよう、2つのコア1022が設けられ得る。さらに、異なるコアドメインはまた、異なるドメイン間でのワークロードの動的スワッピングを可能にするために、割り込みコントローラに結合されてもよい。
【0068】
更なる他の実施形態では、例えばデスクトップ、サーバ、高性能コンピューティングシステム、基地局などの他のコンピューティング装置への組み込みのために、SoCを、より高い性能(及び電力)レベルにスケーリングすることができるという点で、より多数のコアドメイン及び追加のオプションのIPロジックが存在してもよい。そのような一例として、各々が所与の数のアウト・オブ・オーダコアを持つ4つのコアドメインが設けられ得る。より更には、オプションのGPUサポート(一例としてGPGPUの形態をとり得る)に加えて、特定の機能(例えば、ウェブサービス、ネットワーク処理、又は交換など)に対して最適化されたハードウェアサポートを提供する1つ以上のアクセラレータも設けられ得る。さらに、そのようなアクセラレータをオフチップコンポーネントに結合するために入力/出力インタフェースが存在してもよい。
【0069】
次に図11を参照するに、SoCの他の一例のブロック図が示されている。図11の実施形態において、SoC1100は、マルチメディアアプリケーション、通信、及び他の機能のために高い性能を可能にする様々な回路を含み得る。従って、SoC1100は、例えばスマートフォン、タブレットコンピュータ、及びスマートTVなどの多種多様なポータブル装置及び他の装置への組み込みに適している。図示した例において、SoC1100は中央プロセッサユニット(CPU)ドメイン1110を含んでいる。一実施形態において、CPUドメイン1110内に複数の個々のプロセッサコアが存在し得る。一例として、CPUドメイン1110は、4つのマルチスレッドコアを有するクワッドコアプロセッサとし得る。そのようなプロセッサは、同種のプロセッサであってもよいし、異種のプロセッサであってもよく、例えば、低電力プロセッサコアと高電力プロセッサコアとの混ぜ合わせとし得る。
【0070】
次に、グラフィックスを扱うとともにAPIを計算するために、1つ以上のGPUで高度なグラフィックス処理を実行するようにGPUドメイン1120が設けられる。DSPユニット1130が、マルチメディア命令の実行中に生じ得る高度な計算に加えて、例えば音楽再生及びオーディオ/ビデオなどの低電力マルチメディアアプリケーションを扱うための1つ以上の低電力DSPを提供し得る。そして、通信ユニット1140が、例えばセルラー通信(3G/4G LTEを含む)や、BluetoothTM及びIEEE802.11などの無線ローカルエリアプロトコルなどの、様々な無線プロトコルを介した接続を提供する様々なコンポーネントを含み得る。
【0071】
より更には、ユーザジェスチャの処理を含め、高精細度ビデオ及びオーディオコンテンツのキャプチャ及び再生を実行するために、マルチメディアプロセッサ1150が用いられ得る。センサユニット1160が、複数のセンサ、及び/又は所与のプラットフォーム内に存在する様々なオフチップセンサへのインタフェースをとるためのセンサコントローラを含み得る。静止画カメラ及びビデオカメラを含め、プラットフォームの1つ以上のカメラからのキャプチャコンテンツに関する画像処理を実行するために、画像信号プロセッサ1170が1つ以上の別個のISPを備え得る。
【0072】
表示プロセッサ1180が、ディスプレイ上での再生のためにコンテンツを無線通信する能力を含め、所与のピクセル密度の高精細ディスプレイへの接続に対するサポートを提供し得る。より更には、位置特定ユニット1190が、複数のGPSコンステレーションに対するサポートを有するGPS受信器を含み、そのようなGPS受信器を用いて得られる高精度なポジショニング情報をアプリケーションに提供し得る。理解されたいことには、図11の例にはこの特定のコンポーネントセットを有するように示されているが、数多くの変形及び代替が可能である。
【0073】
次に図12を参照するに、それとともに実施形態が使用され得るシステムの一例のブロック図が示されている。見てとれるように、システム1200は、スマートフォン又は他のワイヤレス通信機とし得る。ベースバンドプロセッサ1205が、当該システムから送信される又は当該システムによって受信される通信信号に関する様々な信号処理を実行するように構成される。そして、ベースバンドプロセッサ1205はアプリケーションプロセッサ1210に結合される。アプリケーションプロセッサ1210は、数多くの周知のソーシャルメディアアプリ及びマルチメディアアプリなどのユーザアプリケーションに加えて、OS及び他のシステムソフトウェアを実行するために、当該システムのメインCPUとし得る。アプリケーションプロセッサ1210は更に、装置に関する多様な他のコンピューティング演算を実行するとともに、ここに記載される電力管理技術を実行するように構成され得る。
【0074】
そして、アプリケーションプロセッサ1210は、例えばタッチスクリーンディスプレイといったユーザインタフェース/ディスプレイ1220に結合することができる。さらに、アプリケーションプロセッサ1210は、フラッシュメモリ1230とする不揮発性メモリ及びダイナミックランダムアクセスメモリ(DRAM)1235とするシステムメモリを含むメモリシステムに結合し得る。更に見てとれるように、アプリケーションプロセッサ1210は更に、ビデオ及び/又は静止画像を記録することができる1つ以上の画像キャプチャデバイスなどのキャプチャデバイス1240に結合する。
【0075】
なおも図12を参照するに、加入者識別モジュールと、場合によりセキュアストレージ及び暗号プロセッサと、を有するユニバーサル集積回路カード(UICC)1240も、アプリケーションプロセッサ1210に結合されている。システム1200は更に、アプリケーションプロセッサ1210に結合し得るセキュリティプロセッサ1250を含んでいてもよい。複数のセンサ1225がアプリケーションプロセッサ1210に結合して、例えば加速度計及び他の環境情報などの多様な検知情報の入力を可能にし得る。オーディオ出力装置1295が、例えば、音声通信や再生若しくはストリーミングオーディオデータといった形態で、音を出力するためのインタフェースを提供し得る。
【0076】
更に図示するように、NFCアンテナ1265を介してNFC近距離場内で通信する近距離無線通信(NFC)非接触インタフェース1260が設けられている。図12には別個のアンテナが示されているが、理解されたいことには、一部の実装では、様々な無線機能を実現するために1つのアンテナ又は異なるアンテナセットが設けられてもよい。
【0077】
プラットフォームレベルの電力管理を行うために、PMIC1215がアプリケーションプロセッサ1210に結合している。この目的のために、PMIC1215は、所望に応じた特定の低電力状態に入るようにアプリケーションプロセッサ1210に電力管理要求を発行し得る。さらに、プラットフォーム制約に基づいて、PMIC1215はまた、システム1200の他のコンポーネントの電力レベルも制御し得る。
【0078】
通信が送受信されることを可能にするために、様々な回路がベースバンドプロセッサ1205とアンテナ1290との間に結合され得る。具体的には、無線周波数(RF)トランシーバ1270及び無線ローカルエリアネットワーク(WLAN)トランシーバ1275が存在し得る。一般に、RFトランシーバ1270は、例えば符号分割多元接続(CDMA)、グローバルシステムフォーモバイルコミュニケーション(GSM)、ロングタームエボリューション(LTE)、又は他のプロトコルに従ってなど、例えば3G又は4G無線通信プロトコルなどの所与の無線通信プロトコルに従って無線データ及びコールを送受信するために使用され得る。加えて、GPSセンサ1280が存在してもよい。例えばAM/FMといったラジオ信号及び他の信号の受信又は送信などの、他の無線通信も提供され得る。さらに、WLANトランシーバ1275を介して、ローカルな無線通信も実現されることができる。
【0079】
次に図13を参照するに、それとともに実施形態が使用され得るシステムの他の一例のブロック図が示されている。図13の例示において、システム1300は、例えばタブレットコンピュータ、2:1タブレット、ファブレット、又は他のコンバーチブルな若しくはスタンドアロンのタブレットシステムなどの、モバイル低電力システムとし得る。図示のように、SoC1310が存在し、装置のアプリケーションプロセッサとして動作するとともに、ここに記載される電力管理技術を実行するように構成され得る。
【0080】
多様なデバイスがSoC1310に結合し得る。図示の例では、メモリサブシステムが、SoC1310に結合されたフラッシュメモリ1340及びDRAM1345を含んでいる。さらに、タッチパネル1320がSoC1310に結合されて、タッチパネル1320のディスプレイ上に仮想キーボードを設けることを含め、表示能力及びタッチを介したユーザ入力を提供する。有線ネットワーク接続を提供するために、SoC1310は、イーサネット(登録商標)インタフェース1330に結合している。周辺ハブ1325がSoC1310に結合されて、例えば様々なポート又は他のコネクタのいずれかによってシステム1300に結合され得るようになど、様々な周辺装置とインタフェースをとることを可能にする。
【0081】
SoC1310内の内部電力管理回路及び機能に加えて、PMIC1380がSoC1310に結合されて、例えば、当該システムがバッテリ1390によって電力供給されるのは、それともACアダプタ1395を介してAC電力によって電力供給されるのかに基づいて、プラットフォームベースの電力管理を提供する。この電源ベースの電力管理に加えて、PMIC1380は更に、環境及び使用条件に基づいてプラットフォーム電力管理活動を実行し得る。より更には、PMIC1380は、SoC1310内での様々な電力管理アクションを引き起こすために、制御及びステータス情報をSoC1310に通信し得る。
【0082】
なおも図13を参照するに、無線能力を提供するために、WLANユニット1350がSoC1310に結合され、ひいてはアンテナ1355に結合される。様々な実装において、WLANユニット1350は、1つ以上の無線プロトコルに従って通信を提供し得る。
【0083】
更に例示するように、複数のセンサ1360がSoC1310に結合し得る。これらのセンサは、ユーザジェスチャセンサを含め、様々な加速度計、環境センサ、及び他のセンサを含み得る。最後に、オーディオ出力装置1370へのインタフェースを提供するために、オーディオコーデック1365がSoC1310に結合されている。理解されたいことには、図13ではこの特定の実装を有するように示されているが、当然ながら、数多くの変形及び代替が可能である。
【0084】
次に図14を参照するに、例えばノートブック、UltrabookTM又は他の小型フォームファクタシステムなどの代表的なコンピュータシステムのブロック図が示されている。プロセッサ1410は、一実施形態において、マイクロプロセッサ、マルチコアプロセッサ、マルチスレッドプロセッサ、超低電圧プロセッサ、埋め込みプロセッサ、又は他の知られた処理要素を含む。図示した実装では、プロセッサ1410は、メイン処理ユニットとして、及びシステム1400の様々なコンポーネントのうちの多くと通信する中央ハブとして機能する。一例として、プロセッサ1400は、SoCとして実装される。
【0085】
プロセッサ1410は、一実施形態において、システムメモリ1415と通信する。例示的な一例として、システムメモリ1415は、所与の量のシステムメモリを提供するために、複数のメモリデバイス又はモジュールにより実装される。
【0086】
例えばデータ、アプリケーション、及び1つ以上のオペレーティングシステムなどの情報の永続的な保管を提供するために、大容量ストレージ1420もプロセッサ1410に結合し得る。様々な実施形態において、より薄くて軽量なシステム設計を可能にするとともに、システム応答性を改善するために、この大容量ストレージはSSDにより実装されてもよく、あるいは、大容量ストレージは、システム活動の再始動時に高速パワーアップを行うことができるように、より少量のSSDストレージが、電力停止イベントの間コンテキスト状態及び他のそのような情報の不揮発性記憶を可能にするSSDキャッシュとして作用するようにして、主にハードディスクドライブ(HDD)を用いて実装されてもよい。これまた図14に示すように、フラッシュデバイス1422が、例えばシリアルペリフェラルインタフェース(SPI)を介してプロセッサ1410に結合され得る。このフラッシュデバイスは、システムの基本入出力ソフトウェア(BIOS)及び他のファームウェアを含むシステムソフトウェアの不揮発性記憶を提供し得る。
【0087】
様々な入力/出力(I/O)装置がシステム1400内に存在し得る。図14の実施形態には、タッチスクリーン1425を更に提供する高精細LCD又はLEDパネルとし得るディスプレイ1424が具体的に示されている。一実施形態において、ディスプレイ1424は、高性能グラフィックスインターコネクトとして実装されることができるディスプレイインターコネクトを介してプロセッサ1410に結合され得る。タッチスクリーン1425は、別のインターコネクトを介してプロセッサ1410に結合されてもよく、それは、一実施形態においてICインターコネクトとすることができる。図14に更に示すように、タッチスクリーン1425に加えて、タッチによるユーザ入力はタッチパッド1430を介して行われることもできる。タッチパッド1430は、シャーシ内に構成されてもよく、これまた、タッチスクリーン1425と同じICインターコネクトに結合され得る。
【0088】
知覚によるコンピューティング及び他の目的のために、様々なセンサが、システム内に存在し得るとともに、様々なやり方でプロセッサ1410に結合され得る。ある一定の慣性センサ及び環境センサは、例えばICインターコネクトを介してなどで、センサハブ1440を通じてプロセッサ1410に結合し得る。図14に示した実施形態において、これらのセンサは、加速度計1441、周辺光センサ(ALS)1442、方位計1443、及びジャイロスコープ1444を含み得る。他の環境センサは、一部の実施形態ではシステム管理バス(SMBus)を介してプロセッサ1410に結合する1つ以上の熱センサ1446を含み得る。
【0089】
やはり図14にて見てとれるように、様々な周辺装置が、ローピンカウント(LPC)インターコネクトを介してプロセッサ1410に結合し得る。図示した実施形態では、様々なコンポーネントを、埋め込みコントローラ(EC)1435を通して結合することができる。そのようなコンポーネントは、キーボード1436(例えば、PS2インタフェースを介して結合される)、ファン1437、及び熱センサ1439を含むことができる。一部の実施形態において、タッチパッド1430はまた、PS2インタフェースを介してEC1435に結合してもよい。さらに、トラステッドプラットフォームモジュール(TPM)1438などのセキュリティプロセッサも、このLPCインターコネクトを介してプロセッサ1410に結合し得る。
【0090】
システム1400は、無線によるものを含め、多様なやり方で外部装置と通信することができる。図14に示した実施形態には、それらの各々が特定の無線通信プロトコル用に構成された無線機に対応し得る様々な無線モジュールが存在している。例えば近距離などの短距離における無線通信のための一手法は、NFCユニット1445を介してとすることができ、これは、一実施形態において、SMBusを介してプロセッサ1410と通信し得る。なお、このNFCユニット1445を介して、互いに近接した装置同士が通信してもよい。
【0091】
図14にて更に見てとれるように、更なる無線ユニットが、WLANユニット1450及びBluetoothユニット1452を含む他の短距離無線エンジンを含むことができる。WLANユニット1450を用いてWi-FiTM通信を実現することができる一方で、Bluetoothユニット1452を介して、短距離BluetoothTM通信を行うことができる。これらのユニットは、所与のリンクを介してプロセッサ1410と通信し得る。
【0092】
さらに、例えばセルラー式又は他の無線広域プロトコルに従った無線広域通信を、WWANユニット1456を介して行うことができ、そして、WWANユニット1456は、加入者識別モジュール(SIM)1457に結合し得る。加えて、位置情報の受信及び使用を可能にするために、GPSモジュール1455も存在し得る。なお、図14に示した実施形態では、WWANユニット1456と、例えばカメラモジュール1454などの集積キャプチャデバイスとが、所与のリンクを介して通信し得る。
【0093】
集積カメラモジュール1454は、蓋に組み込まれることができる。オーディオ入力及び出力を提供するために、デジタル信号プロセッサ(DSP)1460によりオーディオプロセッサを実装することができ、これは、ハイレゾリューションオーディオ(HDA)リンクを介してプロセッサ1410に結合し得る。同様に、DSP1460は、集積されたコーダ/デコーダ(CODEC)及び増幅器1462と通信することができ、そして、それは、シャーシ内に実装され得る出力スピーカ1463に結合し得る。同様に、増幅器及びCODEC1462は、マイクロフォン1465からのオーディオ入力を受信するように結合されることができ、マイクロフォン1465は、一実施形態において、デュアルアレイマイクロフォン(例えば、デジタルマイクロフォンアレイなど)により実装されることができ、高品質のオーディオ入力を提供して、システム内の様々な動作の音声作動制御を可能にする。なお、また、オーディオ出力は、増幅器/CODEC1462からヘッドフォンジャック1464に提供されることができる。図14の実施形態ではこれらの特定のコンポーネントを有するように示されているが、理解されたいことには、本発明の範囲は、これに関して限定されるものではない。
【0094】
実施形態は、数多くの異なるシステムタイプで実施され得る。次に図15を参照するに、本発明の一実施形態に従ったシステムのブロック図が示されている。図15に示すように、マルチプロセッサシステム1500は、ポイント・ツー・ポイント相互接続システムであり、ポイント・ツー・ポイントインターコネクト1550を介して結合された第1のプロセッサ1570及び第2のプロセッサ1580を含んでいる。図15に示すように、プロセッサ1570及び1580の各々は、第1及び第2のプロセッサコア(すなわち、プロセッサ1574a及び1574b、並びにプロセッサコア1584a及び1584b)を含むマルチコアプロセッサとし得るが、可能性として、当該プロセッサ内にはもっと多くのコアが存在し得る。さらに、プロセッサ1570及び1580の各々はまた、グラフィックス演算を実行するグラフィックスプロセッサユニット(GPU)1573、1583を含み得る。そして、例えばコアとGPUとの間での所与のワークロードに対する処理レベルの優先順位に関してなどの、ソフトウェア提供されるヒント情報を用いて、ここに記載されるような動的な最大電流の決定及び制御が実行され得る。この目的のために、プロセッサの各々が、ここに記載されるように、ソフトウェアによって提供されるヒント情報に少なくとも部分的に基づいて各コア及びGPUに対して個別に最大電流消費レベルを動的決定する動的電流を含め、プロセッサベースの電力管理を実行するPCU1575、1585を含むことができる。
【0095】
なおも図15を参照するに、第1のプロセッサ1570は更に、メモリコントローラハブ(MCH)1572と、ポイント・ツー・ポイント(P-P)インタフェース1576及び1578とを含んでいる。同様に、第2のプロセッサ1580は、MCH1582と、P-Pインタフェース1586及び1588とを含んでいる。図15に示すように、MCHの1572及び1582は、プロセッサを、それぞれのプロセッサにローカルに取り付けられるシステムメモリの部分とし得るものであるメモリ1532及びメモリ1534というそれぞれのメモリに結合する。第1のプロセッサ1570及び第2のプロセッサ1580は、それぞれ、P-Pインターコネクト1562及び1564を介してチップセット1590に結合され得る。図15に示すように、チップセット1590は、P-Pインタフェース1594及び1598を含んでいる。
【0096】
さらに、チップセット1590は、P-Pインターコネクト1539によってチップセット1590を高性能グラフィックスエンジン1538と結合するインタフェース1592を含んでいる。そして、チップセット1590は、インタフェース1596を介して第1のバス1516に結合され得る。図15に示すように、第1のバス1516には、第1のバス1516を第2のバス1520に結合するバスブリッジ1518と共に、様々な入力/出力(I/O)装置1514が結合され得る。第2のバス1520には、一実施形態において、例えば、キーボード/マウス1522、通信装置1526、及びコード1530を含み得る例えばディスクドライブ若しくは他の大容量ストレージなどのデータストレージユニット1528を含む、様々な装置が結合され得る。さらに、オーディオI/O1524が第2のバス1520に結合されてもよい。実施形態は、例えばスマートセルラー電話、タブレットコンピュータ、ネットブック、又はUltrabookTMなどのモバイル装置を含め、他のタイプのシステムに組み込まれることができる。
【0097】
図16は、一実施形態に従った動作を実行する集積回路を製造するために使用され得るIPコア開発システム1600を示すブロック図である。IPコア開発システム1600は、より大きな設計に組み込まれることが可能な、又は集積回路(例えば、SoC集積回路)全体を構築するために使用されることが可能な、モジュール式の再利用可能な設計を生成するために使用され得る。設計設備1630は、高水準プログラミング言語(例えば、C/C++)にてIPコア設計のソフトウェアシミュレーション1610を生成することができる。ソフトウェアシミュレーション1610は、IPコアの挙動を設計、テスト、及び検証するために使用されることができる。次いで、シミュレーションモデル1612から、レジスタ転送レベル(RTL)設計を作成又は合成することができる。RTL設計1615は、ハードウェアレジスタ間でのデジタル信号の流れをモデル化する集積回路の挙動の抽象概念であり、モデル化されたデジタル信号を用いて実行される関連ロジックを含む。RTL設計1615に加えて、論理レベル又はトランジスタレベルでのより低レベル設計も、作成、設計、又は合成され得る。従って、初期設計及びシミュレーションの特定の詳細は様々であり得る。
【0098】
RTL設計1615又はそれと同等なものは、設計設備によってさらに、ハードウェア記述言語(HDL)、又は物理設計データの何らかの他の表現、とし得るものであるハードウェアモデル1620へと合成され得る。HDLは、IPコア設計を検証するために更にシミュレーション又はテストされ得る。IPコア設計は、第三者の製造設備1665への送達のために、不揮発性メモリ1640(例えば、ハードディスク、フラッシュメモリ、又は任意の不揮発性記憶媒体)を使用して格納されることができる。それに代えて、IPコア設計は、有線接続1650又は無線接続1660上で(例えば、インターネットを介して)伝送されてもよい。そして、製造設備1665は、少なくとも部分的にIPコア設計に基づく集積回路を製造することができる。製造される集積回路は、ここに記載される少なくとも1つの実施形態に従った動作を行うように構成されることができる。
【0099】
次に図17を参照するに、本発明の一実施形態に従ったコンピューティングシステムのブロック図が示されている。図17に示すように、
次に図17を参照するに、本発明の一実施形態に従ったコンピューティングシステムのブロック図が示されている。図17に示すように、システム1700は、例えばスマートフォン又はタブレットコンピュータなどの小型のポータブル装置から、ラップトップコンピュータ、デスクトップコンピュータ、及びサーバコンピュータなどを含む、より大型の装置まで及び如何なるタイプのコンピューティングシステムであってもよい。
【0100】
いずれにせよ、図17に示すハイレベルにおいて、システム1700は、マルチコアプロセッサ又は任意の他のタイプのSoCとして実装され得るシステム・オン・チップ(SoC)1710を含む。SoC1710内に、複数のインテレクチュアルプロパティ(IP)回路1720-1720が含まれる。実施形態において、各IP回路1720は、処理コア、グラフィックスプロセッサ、又は例えば特殊化された処理ユニット及び固定機能ユニットなどの任意の他のタイプのホモジニアス若しくはヘテロジニアス処理回路とし得る。特定の一実施形態において、IP回路1720、1720は汎用の処理コアであり、IP回路1720はグラフィックスプロセッサであると仮定し、グラフィックスプロセッサは、一部のケースにおいて、複数の個別のグラフィックス処理ユニットで形成され得る。
【0101】
SoC1710内で実行される具体的なワークロードに依存して、特定の処理回路が、他のものよりも、そのワークロードに対して重要であることがある。従って、ここでの実施形態では、実行のためにワークロードを提供し得るものであるソフトウェア1740から受信したヒント情報に少なくとも部分的に基づいて、複数の異なるIP回路に制御可能な量の電流消費を許すことができる。このワークロードを提供することにより、ソフトウェア1740は、ワークロードの性質並びに異なるIP回路の重要性及びおそらくは相対的な電流消費について、事前の、より深い理解を有する。従って、実施形態は、ソフトウェア1740から電力制御ユニット(PCU)1730に、ランタイムでの発見的手法に基づく電流消費情報を提供するためのインタフェース1745を含む。
【0102】
様々な実施形態において、PCU1730は、専用ハードウェア回路、複数のコアのうちの1つ、マイクロコントローラ、又は何らかの他のハードウェア回路として実装され得る。図示した実施形態において、PCU1730は、複数の構成(コンフィギュレーション)レジスタ1736-1736を含んでいる。実施形態において、所与の構成レジスタ1736が、対応するIP回路1720に関連付けられて、対応するIP回路についてソフトウェア1740から受信した電流スロットル情報を格納し得る。なお、この情報は、異なる実施形態では異なる形態をとってもよい。一部のケースにおいて、このような情報は、優先度情報に基づくことができ、各IP回路について、例えばパーセンテージ単位での相対的な優先度レベルを含み得る。他のケースにおいて、ソフトウェア1740は、スロットリング状況においてIP回路に強いられる実際の最大電流値を提供してもよい。更なる他の実施形態において、この情報は他の形態をとってもよい。
【0103】
なおも図17を参照するに、PCU1730は更に、動的電流共有制御回路1735を含んでいる。ここでの実施形態において、動的電流共有制御回路1735は、構成レジスタ1736に格納された情報に少なくとも部分的に基づいて、個々のIP回路ごとの分解された最大電流値を決定し得る。さらに、制御回路1735は、例としてリーク情報、プロセスバラつき情報、及び電圧/周波数カーブなどを含むダイ固有の情報に更に基づいて、これら分解された最大電流値を決定してもよい。斯くして、動的電流共有制御回路1735は、そのような情報に基づいて、ソフトウェア1740によって書き込まれた値を更新して、分解された値を生成することができ、それらの値からスロットリング制御値が決定され得る。これらのスロットリング制御値は、対応するIP回路1720に送信され得る。図17に示すように、処理回路1720は各々、対応するスロットリング制御値を格納する構成(コンフィギュレーション)ストレージ1712を含んでいる。なお、スロットリング制御値それ自体は、異なる実施形態では異なる形態をとり得る。一部のケースにおいて、このスロットリング制御値はデューティサイクル値として実装され得る。他のケースにおいて、スロットリング制御値は、IP回路に対する許容最大電流消費又は許容最大動作周波数などであってもよい。ここに記載されるように、IP回路1720は、構成ストレージ1712に格納されたこのスロットリング制御値に少なくとも部分的に基づいて、スロットリング状況におけるそれ自身の動作を動的に制御することができる。
【0104】
なお、図17の例示では更に、SoC1720に対して外部にある電圧レギュレータ1750が存在している。電圧レギュレータ(VR)1750は、図17に示すIP回路1712-1712の全てとSoC1710の他の回路とに電力を供給し得る。しかしながら、理解されたいことには、他のケースにおいて、実施形態にて実現される制御及び電流共有は、電圧レールごとをベースにして行われてもよい。すなわち、各々がプロセッサの1つ以上のIP回路及び他のロジックに結合された複数の独立した電圧レールによって電力を供給する電圧レギュレータ1750又は追加の電圧レギュレータが存在してもよい。そのようなケースでは、動的電流共有制御回路1735は、所与の電圧レールに結合されたIP回路の集合ごとに電流共有スロットリング制御値を動的に決定し得る。
【0105】
なおも図17を参照し、IP回路1720(ここではIP1-IP3としても参照する)が、それぞれ、最大IP1.iccmax、Ip2.iccmax、及びIP3.iccmaxなる最大電流を引き出す実装を仮定する。また、VR1750がVR1.iccmaxなる合計最大電流を提供することができると仮定する。例えばVR1750などの高電流VRにおいて、VR1.iccmax<IP1.iccmax+IP2.iccmax+IP3.iccmaxである。このアンダーサイズ化は、VRのコストを制限するために行われる。正確さを確保するために、PCU1730は、電圧レギュレータ1750の最大電流能力がまさに超えられようとしていることを検出したときに、スロットリングをトリガーし得る。このようなスロットリングは、実際に設定された最大電流能力よりも幾分低い閾値に基づいて、先を見越して実行され得る。理解されたいことには、異なる実装が可能であるものの、一実施形態において、スロットリングは、あるデューティサイクルでIPクロックをゲーティングすることによって実装されることができる。このようなスキームのデューティサイクルは、PCU1730によって設定されることができる。
【0106】
一実施形態において、PCU1730は、iccmax違反が検出されたときにその値にIP回路がスロットリングされるべきであるという特定のiccmax値、すなわち、IP0_ICCMAX_WHEN_THROTTLED、IP1_ICCMAX_WHEN_THROTTLED、IP2_ICCMAX_WHEN_THROTTLEDを、インタフェース1745により受信することができ、値が構成レジスタ1736に格納される。ソフトウェアは、ランタイムでの発見的手法に基づいてこれらの値を投入することができ、また、ここで書き込まれる電流がVR1.iccmax値より大きくないことを保証することができる。
【0107】
次に、PCU1730、より具体的には、動的電流共有制御回路1735は、ダイ固有の情報(例えば、リーク、プロセスバラつき、V/Fカーブ)を用いて、ソフトウェアによって書き込まれた値を更新し得る。この例では、PCU1730が、ソフトウェア入力及びダイ固有情報を考慮して、RESOLVED_IP0_ICCMAX_WHEN_THROTTLED、RESOLVED_IP1_ICCMAX_WHEN_THROTTLED、及びRESOLVED_IP2_ICCMAX_WHEN_THEROTTLEDなる分解された値を決定すると仮定する。そして、動的電流共有制御回路1735は、これら最終的な分解された値及び設定された最大電流値(iccmax)に基づいて、IP回路をスロットリングするためのデューティサイクル値を計算し得る。このケースでのデューティサイクルは、duty_cycle_ip_n=RESOLVED_IPn_ICCMAX_WHEN_THROTTLED/IPN.iccmaxとして計算されることができる。IP0の場合、これは、duty_cycle_ip_0=RESOLVED_IP0_ICCMAX_WHEN_THROTTLED/IP0.iccmaxとなる。
【0108】
PCU1730は、次いで、構成レジスタ1712内にスロットリングのためのデューティサイクルをプログラムすることができる。プラットフォーム/SoCレベルの発見的手法に応じて、IP_N_ICCMAX_WHEN_THROTTLED値を変更して、最適なランタイム挙動を得ることができる。
【0109】
特定の一例として、IP回路1720がグラフィックプロセッサであり、且つIP回路1720、1720が汎用プロセッサであるとして、グラフィックス集約的なワークロードを仮定する。この構成において、グラフィックスドライバが、グラフィックスプロセッサ(及びインターコネクト回路)がそれらの最大設定電流消費を提供されるべきである一方で、コアをスロットリングすることができることを指し示すヒント情報を、インタフェース1745を介して提供し得る。この目的のために、グラフィックスドライバは、グラフィックスプロセッサ及びインターコネクトに対して設定された最大電流消費値を提供することができ、残りの電流割当量をコアに割り当てることができる。斯くして、最大電流消費限界に達するときに、コアはスロットリングされ得るが、グラフィックスプロセッサ及びインターコネクトは制約なしで動作し続けることができ、グラフィックスワークロードを改善する。
【0110】
コア計算集約的なワークロードを持つ他の一ケースでは、コア及びインターコネクトに対して最大電流消費値を割り当て、残りの電流消費割当量をグラフィックスプロセッサに割り当てることによって、反対の挙動を起こすことができる。斯くして、電力スパイクが確認されたときに、グラフィックスプロセッサはスロットリングされ得るが、コア及びインターコネクトはなおも制約なしで動作することができ、コアベースのワークロードを改善する。一実施形態において、ソフトウェアは、利用情報を利用して、コア拘束ワークロード又はグラフィックス拘束ワークロードを特定し得る。理解されたいことには、図17の実施形態ではこのハイレベルで示されているが、数多くの変形及び代替が可能である。
【0111】
次に図18を参照するに、本発明の一実施形態に従った方法のフロー図が示されている。図18に示すように、方法1800は、実行されているワークロードに関するソフトウェアベースの情報に少なくとも部分的に基づいて複数のIP回路間で動的な電流共有を実行する方法である。より具体的には、方法1800は、実行されるワークロードを有するソフトウェアを含む様々なエージェントと、ハードウェアベースの電力コントローラ及びワークロードの少なくとも一部がその上で実行され得る1つ以上のIP回路を含む対応するとの間で協調して実行され得る。従って、方法1800は、ハードウェア回路、ファームウェア、ソフトウェア、及び/又はこれらの組み合わせによって実行され得る。
【0112】
図示さのように、方法1800において、ソフトウェアエージェント1810が、実行するワークロードを持ち得るとともに、発見的手法に基づいて、各IP回路についてのIP回路ごとの最大電流割当量(及び/又は最大電流優先度)を決定(ブロック1815)し得る。図示のように、ソフトウェア1810は、この情報を、インタフェースを介して電力コントローラ1820に提供することができ、電力コントローラ1820が、この情報を、対応する構成レジスタすなわち電流スロットリング構成レジスタに格納し得る。次に、PCU1820、より具体的には、動的電流共有制御回路1830が、この情報を読み取り、この情報並びにダイのパラメータ及び特徴に基づいて、IP回路ごとの最大電流割当量を決定し得る。電力コントローラ1820は、次いで、この情報を、IP回路1840の対応する構成レジスタをプログラムするために送信し得る。そして、ワークロードの操作中に、電力コントローラ1820が先を見越して最大電流状況を確認すると、電力コントローラ1820はスロットリング信号をIP回路1840に送信する。次に、IP回路1840が、その構成レジスタにて特定される最大電流割当量の中にとどまるように動作をスロットリングし得る。理解されたいことには、図18の実施形態ではこのハイレベルで示されているが、数多くの変形及び代替が可能である。
【0113】
次に図19を参照するに、本発明の一実施形態に従った方法のフロー図が示されている。図19に示すように、方法1900は、電力コントローラと、実行されるワークロードの事前知識を持つソフトウェアエンティティとの間でインタフェースをとる方法である。図19の方法1900は、電力コントローラの視点からのものであり、そのようなものとして、方法1900は、ハードウェア回路、ファームウェア、ソフトウェア、及び/又はこれらの組み合わせによって実行され得る。
【0114】
図19に示すように、方法1900は、ワークロードに関する電流スロットルヒント情報を受信することによって開始する(ブロック1910)。より具体的には、電力コントローラは、このヒント情報を、インタフェースを介してソフトウェアエンティティから受信し得る。異なる実施形態が可能であるが、一実施形態において、インタフェースは、ソフトウェアエンティティが書き込み得る電力コントローラのメールボックスインタフェースとし得る。他の一実施形態において、ソフトウェアエンティティは、この電流スロットルヒント情報を提供するために、例えばマシン固有レジスタ(MSR)への書き込み動作などの構成レジスタ書き込みを実行し得る。なお、電流スロットルヒント情報は、例えばパーセンテージの形態などの、複数の異なる処理回路についての優先情報を含め、様々な形態をとり得る。
【0115】
ブロック1920にて、電力コントローラは、この電流スロットルヒント情報を電力コントローラの構成レジスタのセットに格納する。次にブロック1930にて、電力コントローラは、複数の処理回路についての分解されたスロットル値を決定し得る。より具体的には、これらの分解されたスロットル値は、電流スロットルヒント情報と、例えば電圧/周波数カーブなどのダイベースのパラメータ及び動作の特徴を含め、プロセッサの様々なパラメータとに基づき得る。一部のケースにおいて、電力コントローラは、構成レジスタ内に存在する電流スロットルヒント情報を、これらの分解されたスロットル値で上書きし得る。他のケースにおいて、分解されたスロットル値は、別の位置に格納されてもよい。
【0116】
いずれにせよ、次に制御はブロック1940へと進み、そこで、各処理回路についての動的最大電流割当量が計算され得る。このような計算される電流割当量は、所与の処理回路についての分解されたスロットル値と、プロセッサに対して設定された最大電流割当量とに基づき得る。この目的のために、電力コントローラは、各処理回路についての最大電流割当量を格納する別セットの構成レジスタを含んだり、それに関連付けられたりしてもよい。なお、この設定された最大電流情報は、例えば所与のファームウェアによってなどで、プリブート環境中に格納され得る。
【0117】
なおも図19を参照するに、ブロック1950にて、動的最大電流割当量を処理回路に送ることができる。理解されたいことには、所与の動的最大電流割当量の受信に応答して、処理回路は、そのような値を構成レジスタに格納することができ、そして、スロットル条件が確認されたときに、この動的最大電流割当量以下に維持されるように動作を制御することができる。なお、これらの動的最大電流割当量は、スロットルイベントの間のみ意味を持つ。すなわち、所与の処理回路は、通常動作中にはそのプログラムされた最大電流割当量を超えることが許され得るが、スロットリング状態の間は制限に従う。
【0118】
なおも図19を参照するに、プロセッサの通常動作中、電力コントローラは、種々のテレメトリ(遠隔測定)情報又はセンサ情報を受信してもよい。具体的には、ブロック1960に示すように、このような情報は、プロセッサの電圧、電流、電力、及び熱状態を捉え得る。その電力制御動作の一部として、電力コントローラは、菱形ブロック1970にて、プロセッサの合計電流消費が所与の閾値を超えているかを判定し得る。なお、この閾値は、先を見越した電流消費の制御を行い得るよう、プロセッサに対して設定された最大電流消費よりも低い値に設定されて得る。
【0119】
合計電流がこの閾値を超えていると判定された場合、制御はブロック1980へと進み、そこで、スロットル信号が処理回路に送信され得る。このスロットル信号の受信に応答して、処理回路は、それらの電流消費が動的最大電流割当量を超えないことを確保するように自身の動作を制御し得る。斯くして、スロットル条件が確認されたときであっても、処理回路の各々が、独立した動的制御可能な電流消費レベルで動作することができ、ワークロード実行を改善し得る。何故なら、所与の処理回路の相対的な優先度に基づいて動的に電流消費レベルを独立制御することにより、特定のワークロードに対して肝要な処理回路は、そのようなワークロードの実行中に、全く又は最小限しかスロットリングされないことができ、あるいは、他の(あまり肝要ではない)処理回路よりも少ししかスロットリングされないことができるからである。理解されたいことには、図19の実施形態ではこのハイレベルで示されているが、数多くの変形及び代替が可能である。
【0120】
次に図20を参照するに、本発明の他の一実施形態に従った方法のフロー図が示されている。図20に示すように、方法2000は、動的電流割当量に基づいて処理回路内の電流消費を動的に制御する方法である。そのようなものとして、方法2000は、例えば処理コア、グラフィックスプロセッサ、若しくは他の処理回路などのハードウェア回路、又はそのような回路上で実行されるファームウェア、ソフトウェア、及び/又はそれらの組み合わせによって実行され得る。
【0121】
方法2000は、電力コントローラから動的電流割当量を受信することによって開始する(ブロック2010)。なお、この動的電流割当量は、ここに記載されるようなデューティサイクル情報の形態を含め、様々な実施形態において異なる形態をとり得る。その形態にかかわらず、ブロック2020にて、処理回路は、この動的電流割当量を最大電流構成レジスタに格納する。その後、処理回路は、設定された性能状態で動作を開始(又は継続)し得る(ブロック2030)。例えば、処理回路は、電力コントローラ又は他の制御回路の制御下で、所与の動作周波数及び動作電圧を有する性能状態で動作するように設定され得る。この設定された性能状態での動作中に、菱形ブロック2040にて、スロットル信号が電力コントローラから受信されたかが判定され得る。
【0122】
この状態において、制御はブロック2050へと進み、そこで、処理回路はその動作をスロットリングすることができる。より具体的には、処理回路は、その電流消費を動的電流割当量以下に維持するように、その動作を制御し得る。一部のケースにおいて、処理回路は、この電流消費維持を達成するために動作パラメータ変更を決定し得る内部電力制御ロジックを含み得る。一例として、処理回路は、動作が遅くなるように、幾つかのクロック信号をスカッシュすることによって動作をスロットリングしてもよく、その結果、設定された動作周波数ではなく、スカッシュされたクロックで動作することによって電流消費が低減される。例えば、一つおきのクロックサイクルがスカッシュされてもよいし、あるいは、他のデューティサイクル制御又はクロックサイクルの減少が行われてもよい。
【0123】
なお、他の処理回路がそれらのフル電流消費レベルを消費しない特定の状況において、処理回路が電力コントローラから便宜的な電流割当量を受け取ってもよい。従って、菱形ブロック2060にて、便宜的電流割当量が受け取られているかが判定される。受け取られていない場合、処理回路は、(菱形ブロック2080で判定されるように)スロットル信号の解除を受信するまで、スロットル状態で動作し続け得る。
【0124】
そうでなく、便宜的電流割当量が受け取られている場合、制御はブロック2070へと進み、そこで、処理回路はその動作を上昇させ得る。例えば、処理回路は、クロックスカッシングを終了して、便宜的電流割当量を消費し得る。理解されたいことには、図19の実施形態ではこのハイレベルで示されているが、数多くの変形及び代替が可能である。
【0125】
一部の状況において、一部のコア又は他の処理回路は、高い電流消費で動作し得る。全てのコア又は他の処理回路に、パッケージ全体の電流割当量のうちの等量ずつが割り当てられる構成では、内部での又はローカルでの制御動作を介して、割り当てられた電流制限より上で動作する如何なるコアもスロットリングされるので、性能損失が内在し得る。さらには同時に、1つ以上の他のコア又は処理回路は自身に割り当てられた電流限界より下のレベルで動作しており、未使用の電流ヘッドルームが残される。
【0126】
この懸念を回避するために、実施形態は、制約付き電力送達ソリューションを有するプラットフォーム内で性能最適化を提供し得る。この目的のために、実施形態は、パッケージに対する全体の電流制限を超えない限りにおいて、1つ以上のコア又は他の処理回路が自身の個々の閾値レベルを超えることが許されるような、グローバル電流制御を伴う制御技術を実装してもよい。斯くして、実施形態は、プロセッサ全体が制限内での動作を維持しながら、一部のコア又は他の処理回路が(設定されたものよりも)いっそう高い電流消費レベルで動作し得るので、性能を高めることができる。
【0127】
この目的のために、実施形態は、実際の電流消費の高速測定を提供するよう、負荷側(例えば、集積された電圧レギュレータ内に実施される)で高速電流センシングを実行し得る。この電流消費の測定値は、デジタル出力として、集積電圧レギュレータから出力され得る。次に、複数の電圧レギュレータからの個々の電流値が合計され得る。この合計値が、次に、デジタルフィルタリングにかけられ得る。次に、結果として得られた、フィルタリングされた値が、閾値と比較される。このフィルタリングされた値によって表される全体の電流消費がこの閾値よりも小さいと仮定すると、スロットリングは行われないとし得る。フィルタリングされた値によって表される全体の電流消費が閾値を超える場合には、1つ以上のドメインが制限内に留まるようにスロットリングされ得る。なお、このスロットリングは、ここに記載されるように、各ドメインの実際の電流消費及びその個々の設定された制限に基づいて、各ドメインにおいて独立に、行われることができる(行われないことができる)。そして、更に上述したように、各ドメインが、例えばクロックスカッシング又はその他の方法で動作周波数若しくは動作電圧などを制御するなど、異なるスロットル動作を実行してもよい。
【0128】
実施形態では、詳細なモデルを維持管理することなく、実際の電流消費が検出され得る。結果として、複数のドメインがスケーリングされ得るとともに、不必要なスロットリングを最小限に抑えるように時定数が適応され得る。より更には、実施形態は、このような性能最適化を、システムの如何なるランタイム適応も用いずに可能にする。さらに、ここに記載されるように、実施形態は、電流を電力に変換し、複数の電圧レギュレータの寄与の結果を合計することによって、複数の外部電圧レギュレータに拡張され得る。実施形態はまた、例えば、最小動作電圧性能を改善するための共振周波数にあるエネルギーの抑圧などの、より複雑な電力送達制限のために使用され得る。
【0129】
次に図21を参照するに、本発明の一実施形態に従ったプロセッサのブロック図が示されている。図21に示すように、プロセッサ2100は、複数のコア2110-2110を含むマルチコアプロセッサである。グラフィックスエンジン2115を含め、追加の処理エンジンが存在し得る。例えばリングインターコネクトなどのインターコネクト2120が存在し、コア2110及び他のコンポーネントと共に結合するために使用され得る。図21の実施形態に示すように、これらのドメインは各々、所与の集積電圧レギュレータ2130-2130から電力を受け取り得る。これらのドメインによって提示される負荷に基づいて、電圧レギュレータ2130は、(高速(例えば、400MHz)に動作する回路を使用して)リアルタイムデジタル電流を測定し得る。次に、各集積電圧レギュレータ2130がデジタル電流値を加算回路2140に提供し、加算回路2140がこれらの値を合計電流値へと足し合わせる。なお、一部の実施形態において、加算回路2140は、分散方式で実装されてもよい。
【0130】
なおも図21を参照するに、この合計電流値が電流コントローラ2150に提供される。異なる実施形態において、コントローラ2150は、プロセッサのコア2110及び電力コントローラ(図21では図示の容易さのために示していない)のどちらからも別個の専用回路として実装されてもよい。他のケースにおいて、コントローラ2150は電力コントローラ内に実装されてもよい。いずれにしても、図示のように、コントローラ2150は、受信した合計電流値をフィルタ2155に提供する。フィルタ2155は、一実施形態において、この合計電流値のデジタルフィルタリングを実行するローパスフィルタとして実装され得る。このフィルタ操作は、ウィンドウストレージ2158に記憶された平均時間ウィンドウに従って実行され得る。一実施形態において、この時間値は、ローパスフィルタ2155に、20ナノ秒のローパスフィルタとして動作させる。フィルタリングされた電流値が、閾値ストレージ2162に記憶された閾電流値との比較を実行するものであるデジタル比較器2160に提供される。フィルタリングされた測定電流値が閾値を超えていると判定された場合、スロットル状況が、斯くして確認されたことになり、スロットルウィンドウストレージ2180によって提供されるスロットルウィンドウ期間に従って様々なドメインにスロットル信号を発行し得るものであるパルス延長回路2170に通信される。他のケースにおいて、共振周波数帯域内のエネルギーを低減させるために、ローパスフィルタがバンドパスフィルタで置き換えられ得る。
【0131】
実施形態において、パルス延長回路2170は、制御機構のリンギング又はヒステリシスを低減させるように構成され得る。すなわち、パルス延長回路2170は、スロットルイベントの検出(フィルタリングされた測定電流値が閾値を超えるときに特定される)に続く所与のスロットルウィンドウ期間にわたって、スロットル信号をアクティブにさせ得る。このイベントに従ってスロットリングが開始された後に(1つ以上のコア又は他の処理回路においてスロットル動作が起こることの結果として)測定電流が閾値を下回ったときであっても、パルス延長回路2170は、ヒステリシス又はリンギングを回避するために、少なくともスロットルウィンドウ期間の長さにわたって、アクティブなスロットル信号を維持する。異なる実施形態において、このスロットルウィンドウ期間の長さはプログラム可能であってもよく、一部の実施形態において、パルス延長回路2170は、オプションのコンポーネントであってもよい。すなわち、他のケースでは、ヒステリシス又は他の制御スキームがスロットル信号に適用されてもよい。理解されたいことには、図21の実施形態ではこのハイレベルで示されているが、数多くの変形及び代替が可能である。
【0132】
上述のように、図21においてのような電流コントローラの複数のインスタンスが、複数の電圧レギュレータの各々に提供され、そして、それら複数のインスタンスが電力コントローラに結合され得る。そのような電力コントローラは、複数の電圧レギュレータに電力を供給する電源のための電力制御を実行し得る。すなわち、所与のコンピューティングプラットフォームにおいて、例えばマザーボード上に存在する複数の電圧レギュレータなどの複数の外部電圧レギュレータに電力供給する単一の電源が存在してもよく、それら電圧レギュレータの各々が、オンチップ及びオフチップのコンポーネントによって使用される所与のレギュレートされた電圧を提供する。上での説明と同様に、これら個々の電圧レギュレータは、これらの電圧レギュレータのうちの1つ以上の他のものが低めのレベルで実行を行っているときに、高めのレベルで動作することが可能である。何故なら、これらの電圧レギュレータの全てが自身の個別の閾値レベルを超えるわけではないと仮定すると、これら個々の電圧レギュレータに電力を供給する単一の電源で、そうするのに十分な能力を有するからである。
【0133】
次に図22を参照するに、本発明の他の一実施形態に従った制御構成のブロック図が示されている。図22に示すように、複数の電流コントローラ2250が設けられ、各々が所定の電圧レギュレータに関連付けられる。より具体的には、図示のように、第1の電流コントローラ2250が、第1の電圧レベル(例えば、VCC)を提供する第1の電圧レギュレータ(図示せず)に関連付けられ、第2の電流コントローラ2250が、第2の(例えば、補助)電圧レベル(例えば、VAux)を提供する第2の電圧レギュレータ(図示せず)に関連付けられる。なお、コントローラ2250は、対応するローパスフィルタ2252、デジタル比較器2254、及びダウンサンプラ2256を含むようにハイレベルで示されているが、理解されたいことには、これらのコントローラは、図21に示したように構成されてもよい。なお、ダウンサンプラ2256は、一部の実施形態においてオプションとし得る。ハイレベルにおいて、受信した測定電流が閾値レベルを超えているとき、上で説明したように、この電圧レギュレータによって電力供給される個々のドメインに、対応するスロットル信号が提供される。
【0134】
さらに、電流コントローラ2250は、ダウンサンプラ2256により、測定された電流消費のダウンサンプリングを実行し、代わってそれが電力コントローラ2260に提供される。電力コントローラ2260は、専用回路として実装されてもよいし、プロセッサの電力コントローラ内に実装されてもよい。いずれにしても、電力コントローラ2260は、電流-電力変換を行うものであるコンバータ2265-2265を介して、複数の入力デジタル電流値を電力値に変換する。コンバータ2265-2265は、所与の電圧レギュレータによって送達される電圧(すなわち、レギュレートされた電圧から送達損失(例えば、I)を指し引いたもの)による乗算演算を介して、電流-電力変換を実行して、デジタル電力値を、該デジタル電力値を合計するものである加算器2270に提供する。なお、他の実施形態において、電力コントローラ2260は、電流コントローラ2250を含むことなく直接的に電流値を受信してもよい。
【0135】
次に、この合計された電力値が、ウィンドウストレージ2276に記憶された平均時間ウィンドウに従った、より長い時間ウィンドウ期間で動作し得るものであるローパスフィルタ2275に提供される。次に、このフィルタリングされた電力値がデジタル比較器2280に提供され、デジタル比較器2280が、それを、閾値ストレージ2282から受け取った閾値と比較する。デジタル比較器2280にて、フィルタリングされた測定電力値が閾値を超えていると判定されたとき、スロットルイベントが指し示されたことになり、パルス延長回路2290に通信される。一般に、パルス延長回路2290は、スロットルウィンドウストレージ2295に記憶された値に従った異なるスロットルウィンドウ期間であるものの、上述のパルス延長回路2170と同じように動作し得る。従って、パルス延長回路2290は、デジタル比較器2280の比較出力に少なくとも部分的に基づいて、スロットル信号を、電力供給されているドメインに送信し、それらのドメインに適切なスロットリング動作をとらせる。理解されたいことには、図22の実施形態ではこのハイレベルで示されているが、数多くの変形及び代替が可能である。
【0136】
次に図23を参照するに、本発明の一実施形態に従った方法のフロー図が示されている。より具体的には、図23に示すように、方法2300は、ここに記載される動的電流消費制御を実行する方法である。そのようなものとして、方法2300は、ハードウェア回路、ファームウェア、ソフトウェア、及び/又はこれらの組み合わせによって実行されることができ、例えば、プロセッサの専用ハードウェア回路を用いて及び/又は電力制御回路とともに実装され得る。
【0137】
図示のように、方法2300は、複数の処理回路についての複数のデジタル電流値を受信することによって開始する(ブロック2310)。より具体的には、加算回路が、これらのデジタル電流値を、対応する集積電圧レギュレータから受信することができ、各電圧レギュレータは、例えばコア、グラフィックスユニット、又はインターコネクト回路などの処理回路に付随している。理解されたいことには、他のケースでは、集積電圧レギュレータのうちの1つ以上が複数の回路にデジタル電流値を提供し得るように、処理回路よりも少ない集積電圧レギュレータのみが存在してもよい。
【0138】
いずれにしても、ブロック2320にて、加算回路は、これら複数のデジタル電流値を足し合わせて合計電流値を得る。次に、制御はブロック2330へと進み、そこで、この合計電流値がフィルタリングされ得る。一例として、例えばここに記載される電力コントローラ内に実装されるものなどのローパスフィルタが、プログラム可能な時定数に従ってこの合計電流値のフィルタリングを実行し得る。次に、菱形ブロック2340にて、このフィルタリングされた合計電流値が閾値を超えているかが判定される。超えていない場合、制御ループのこの繰り返しにおいて更なる動作は行われず、方法2300は、プロセッサの電流消費が適切なレベル内に維持されることを確保するように動作し続け得る。
【0139】
なおも図23を参照するに、そうでなく、フィルタリングされた合計電流値が閾値を超えていると判定された場合、制御はブロック2350へと進み、そこで、スロットル信号が処理回路に送信される。理解されたいことには、このスロットル信号に応答して、処理回路のうちの、少なくとも1つ、そしておそらくは複数のものが、それに従って自身の動作をスロットリングし得る。例えば、各処理回路が、設定された最大電流消費値で構成されているとし得る。スロットル信号に応答して、ある処理回路が、この設定最大電流消費値をその電流消費が下回ることを確保するように、その動作をスロットリングし得る。ここに記載される構成では、フィルタリングされた合計電流値が閾値未満である限り、プロセッサ動作はスロットリングされずに継続され得る。この状況において、1つ以上の他の処理回路が自身の設定最大消費電流値よりも下で動作している間に、1つ以上の処理回路が設定最大消費電流値を上回る電流消費レベルで動作し得る。図23の実施形態ではこのハイレベルで示されているが、数多くの変形及び代替が可能である。
【0140】
理解されたいことには、ここで得られる高速な電流情報は更に、例えばプラットフォームの複数の電圧レギュレータに電力供給する電源のレベルを制御するためなど、追加の電力制御技術を実行するために使用されることができる。次に図24を参照するに、本発明の他の一実施形態に従った方法のフロー図が示されている。より具体的には、図24に示すように、方法2400は、ここに記載される動的電流消費制御を実行する他の一方法である。そのようなものとして、方法2400は、ハードウェア回路、ファームウェア、ソフトウェア、及び/又はこれらの組み合わせによって実行されることができ、例えば、プロセッサの専用ハードウェア回路を用いて及び/又は電力制御回路とともに実装され得る。
【0141】
図示のように、方法2400は、複数の電圧レギュレータと関連付けられた電流コントローラからフィルタリングされた合計電流値を受信することによって開始する(ブロック2410)。次に、制御はブロック2420へと進み、そこで、これらのフィルタリングされた合計電流値を電力値に変換することができる。次いで、それらの電力値が合計され得る(ブロック2430)。電力値を加算電力値へと足し合わせた後、制御はブロック2440へと進み、そこで、この加算計電力値が、例えば、上述した電流値のフィルタリングとは異なる時定数に従って、フィルタリングされる。
【0142】
なおも図24を参照するに、次に、菱形ブロック2450にて、このフィルタリングされた電力値が閾値を超えているかが判定される。超えていない場合、制御ループのこの繰り返しにおいて更なる動作は行われず、方法2400は、プロセッサの電流消費が適切なレベル内に維持されることを確保するように動作し続け得る。そうでなく、フィルタリングされた電力値が閾値を超えていると判定された場合、制御はブロック2460へと進み、そこで、スロットル信号が、例えば処理回路それら自体(又は電圧レギュレータのうちの所与の1つに関連付けられたそのような回路のうちの少なくともサブセット)など、電力供給されているドメインに送信される。理解されたいことには、このスロットル信号に応答して、電力供給されているドメインは、それに従って、例えばそれらの動作パラメータを低くすることによってなどで動作をスロットリングして、電流需要を減少させ得る。
【0143】
以下の例は、更なる実施形態に関する。
【0144】
一例において、装置は、複数のIP回路であり、当該複数のIP回路の各々が、動的電流割当量を格納する構成レジスタを含む、複数のIP回路と、前記複数のIP回路に結合された電力コントローラであり、前記複数のIP回路のうちの少なくとも一部上で実行されるワークロードに関する電流スロットリングヒント情報を受信し且つそれに少なくとも部分的に基づいて前記複数のIP回路の各々についての前記動的電流割当量を生成する動的電流共有制御回路、を含む電力コントローラと、を含む。
【0145】
一例において、前記電力コントローラは、前記電流スロットリングヒント情報を格納する複数の第2の構成レジスタを含み、前記動的電流共有制御回路は、前記電流スロットリングヒント情報と当該装置の1つ以上のパラメータとに基づいて、前記複数のIP回路についての前記動的電流割当量を決定する。
【0146】
一例において、前記電力コントローラは、ソフトウェアが前記電流スロットリングヒント情報を前記複数の第2の構成レジスタに書き込むことを可能にするインタフェースを有する。
【0147】
一例において、前記電力コントローラは、前記ワークロードの実行中の前記複数のIP回路の使用に関する発見的情報に基づいて、前記ソフトウェアから前記電流スロットリングヒント情報を受信する。
【0148】
一例において、前記動的電流共有制御回路は、前記複数のIP回路の各々に対して設定された最大電流割当量に更に基づいて、前記複数のIP回路についての前記動的電流割当量を決定する。
【0149】
一例において、第1のワークロードに対し、前記動的電流共有制御回路は、第1のIP回路についての前記動的電流割当量を、該第1のIP回路に対して設定された前記最大電流割当量に設定し、第2のIP回路についての前記動的電流割当量を、該第2のIP回路に対して設定された前記最大電流割当量よりも少なく設定する。
【0150】
一例において、第2のワークロードに対し、前記動的電流共有制御回路は、前記第1のIP回路についての前記動的電流割当量を、前記第1のIP回路に対して設定された前記最大電流割当量よりも少なく設定し、前記第2のIP回路についての前記動的電流割当量を、前記第2のIP回路に対して設定された前記最大電流割当量に設定する。
【0151】
一例において、前記第1のIP回路はコアを有し、前記第2のIP回路はグラフィックスプロセッサを有する。
【0152】
一例において、前記電力コントローラからのスロットル信号に応答して、前記第1のIP回路は、動作を、前記第1のIP回路に対して設定された前記最大電流割当量に制限し、前記第2のIP回路は、動作を、前記第2のIP回路についての前記動的電流割当量に制限する。
【0153】
一例において、前記第2のIP回路は、前記動的電流割当量に基づいて、前記スロットル信号に応答して、クロック信号の1つ以上のクロックサイクルをスカッシュする。
【0154】
一例において、前記動的電流共有回路は、スロットルイベントの間に、前記複数のIP回路のうちの少なくとも1つに便宜的電流割当量を提供し、該便宜的電流割当量は、該少なくとも1つのIP回路が該少なくとも1つのIP回路についての前記動的電流割当量を超えることを可能にする。
【0155】
他の一例において、方法は、プロセッサの電力コントローラにて、ワークロードに関する電流スロットルヒント情報をソフトウェアエンティティから受信し、前記プロセッサの複数の処理回路の各々についての動的最大電流割当量を、前記電流スロットルヒント情報と前記複数の処理回路に対して設定された最大電流割当量の値とに基づいて計算し、前記複数の処理回路の各々に前記動的最大電流割当量を送信し、前記プロセッサの電流消費レベルが閾値を超えていると判定したことに応答して、前記複数の処理回路に前記動的最大電流割当量に基づいて活動をスロットリングさせるために、前記複数の処理回路にスロットル信号を送信する、ことを有する。
【0156】
一例において、当該方法は更に、前記電力コントローラにて、前記電流スロットルヒント情報を、インタフェースを介して受信し、前記電流スロットルヒント情報を前記電力コントローラの構成レジスタのセット内に格納する、ことを有する。
請求項22に記載の方法。
【0157】
一例において、当該方法は更に、前記電流スロットルヒント情報とダイ固有の情報とに基づいて、前記複数の処理回路についての分解されたスロットル値を決定する、ことを有する。
【0158】
一例において、前記複数の処理回路の各々についての前記動的最大電流割当量を計算することは、前記複数の処理回路についての前記分解されたスロットル値に更に基づく。
【0159】
一例において、当該方法は更に、前記スロットル信号に応答して、前記複数の処理回路のうちの第1の処理回路をスロットリングし、且つ前記スロットル信号に応答して、前記複数の処理回路のうちの第2の処理回路が無制約で実行を行うことを可能にする、ことを有する。
【0160】
他の一例において、命令を含んだコンピュータ読み取り可能媒体が、上の例のうちのいずれかの方法を実行する。
【0161】
更なる一例において、データを含んだコンピュータ読み取り可能媒体が、少なくとも1つの機械によって使用されて、上の例のうちのいずれか1つの方法を実行する少なくとも1つの集積回路を製造する。
【0162】
より更なる一例において、装置が、上の例のうちのいずれか1つの方法を実行する手段を有する。
【0163】
他の一例において、システムは、SoCと、該SoCに結合されたダイナミックランダムアクセスメモリとを含む。SoCは、複数のコア及び少なくとも1つのグラフィックスプロセッサであり、当該複数のコア及び当該少なくとも1つのグラフィックスプロセッサの各々が、動的電流割当量を格納する構成レジスタを含む、複数のコア及び少なくとも1つのグラフィックスプロセッサと、前記複数のコア及び前記少なくとも1つのグラフィックスプロセッサに結合された電力コントローラであり、当該電力コントローラは、当該SoC上で実行されるワークロードに関する電流スロットリングヒント情報をソフトウェアエンティティから受信するインタフェースを有し、当該電力コントローラは更に、前記電流スロットリングヒント情報に少なくとも部分的に基づいて前記複数のコア及び前記少なくとも1つのグラフィックスプロセッサについての前記動的電流割当量を生成する動的電流共有制御回路を有する、電力コントローラと、を含み得る。
【0164】
一例において、前記電力コントローラは、前記電流スロットリングヒント情報を格納する複数の第2の構成レジスタを含み、前記動的電流共有制御回路は、前記電流スロットリングヒント情報と前記SoCの1つ以上のパラメータとに基づいて、前記複数のコア及び前記少なくとも1つのグラフィックスプロセッサについての分解された電流割当量を決定する。
【0165】
一例において、前記動的電流共有制御回路は、前記複数のコア及び前記少なくとも1つのグラフィックスプロセッサについての前記分解された電流割当量と、前記複数のコア及び前記少なくとも1つのグラフィックスプロセッサの各々に対して設定された最大電流割当量とに基づいて、前記動的電流割当量を決定する。
【0166】
一例において、第1のワークロードに対し、前記動的電流共有制御回路は、前記複数のコアのうちの少なくとも1つについての前記動的電流割当量を、該少なくとも1つのコアに対して設定された前記最大電流割当量に設定し、前記少なくとも1つのグラフィックスプロセッサについての前記動的電流割当量を、前記少なくとも1つのグラフィックスプロセッサに対して設定された前記最大電流割当量よりも少なく設定する。
【0167】
他の一例において、装置は、命令を実行する複数の処理回路と、前記複数の処理回路に結合された加算回路であり、当該加算回路は、各デジタル電流値が前記複数の処理回路のうちの1つからの測定電流に対応する複数のデジタル電流値を受信し、該複数のデジタル電流値から合計電流値を生成する、加算回路と、前記加算回路に結合され、前記合計電流値をフィルタリングし、該フィルタリングした合計電流値を閾値と比較し、前記フィルタリングした合計電流値が前記閾値を超えている場合に、前記複数の処理回路にスロットル信号を送信する電流コントローラと、を含む。
【0168】
一例において、前記スロットル信号に応答して、前記複数の処理回路の各々が独立に動作をスロットルする。
【0169】
一例において、前記スロットル信号に応答して、前記複数の処理回路の各々が独立に、対応する前記処理回路の構成ストレージに格納された構成値に従って動作をスロットルする。
【0170】
一例において、当該装置は更に、前記複数のデジタル電流値を前記加算回路に提供するための、前記複数の処理回路に結合された複数の集積電圧レギュレータを有する。
【0171】
一例において、前記電流コントローラは、前記合計電流値をフィルタリングするローパスフィルタと、前記フィルタリングした合計電流値を前記閾値と比較するデジタル比較器と、前記デジタル比較器から比較信号を受信し、該比較信号に少なくとも部分的に基づいて前記スロットル信号を出力するように結合された、パルス延長回路と、を有する。
【0172】
一例において、前記パルス延長回路は、前記フィルタリングした電流値が前記閾値を下回った後、スロットルウィンドウの残りの期間にわたって前記スロットル信号を維持する。
【0173】
一例において、当該装置は更に、各々が複数の電圧レギュレータのうちの1つに付随する複数の電流コントローラと、前記複数の電圧レギュレータに結合された電力コントローラと、を有する。該電力コントローラは、前記複数の電流コントローラの各々からのフィルタリングされた電流値を電力値に変換し、該電力値を加算電力値へと結合し、該加算電力値をフィルタリングし、該フィルタリングした加算電力値が閾電力値を超えている場合に、前記複数の処理回路のうちの少なくとも一部に第2のスロットル信号を送信する。
【0174】
理解されたいことには、上の例の様々な組み合わせが可能である。
【0175】
なお、用語“circuit(回路)”及び“circuitry(回路)”は、ここでは交換可能に使用される。ここで使用されるとき、これらの用語及び用語“ロジック”は、単独で又は任意の組み合わせで、アナログ回路、デジタル回路、ハードワイヤード回路、プログラマブル回路、プロセッサ回路、マイクロコントローラ回路、ハードウェア論理回路、状態マシン回路、及び/又は他のタイプの物理的ハードウェアコンポーネントを指すように使用される。実施形態は、数多くの異なるタイプのシステムにおいて使用され得る。例えば、一実施形態において、ここに記載される様々な方法及び技術を実行するように通信装置を構成することができる。当然ながら、本発明の範囲は通信装置に限定されず、代わりに、他の実施形態は、命令を処理する他のタイプの装置に向けられてもよいし、あるいは、コンピューティング装置上で実行されることに応答して、該装置にここに記載される1つ以上の方法及び技術を実行させる命令を含んだ1つ以上の機械読み取り可能媒体に向けられてもよい。
【0176】
実施形態は、コードにて実装されて、命令を格納する非一時的な記憶媒体に格納されてもよく、それを用いて、システムを、当該命令を実行するようにプログラムすることができる。実施形態はまた、データにて実装されて、非一時的な記憶媒体に格納されてもよく、それが少なくとも1つのマシンによって使用される場合に、該少なくとも1つのマシンに、1つ以上の動作を実行する少なくとも1つの集積回路を製造させる。より更なる実施形態は、命令を含んだコンピュータ読み取り可能記憶媒体にて実装されてもよく、それがSoC又は他のプロセッサに製造されるときに、該SoC又は他のプロセッサを、1つ以上の動作を実行するように構成する。記憶媒体は、以下に限られないが、フロッピーディスク(登録商標)、光ディスク、ソリッドステートドライブ(SSD)、コンパクトディスク読み出し専用メモリ(CD-ROM)、書き換え可能コンパクトディスク(CD-RW)、及び光磁気ディスクを含む任意のタイプのディスク、例えば読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、スタティックランダムアクセスメモリ(SRAM)、消去可能プログラム可能読み出し専用メモリ(EPROM)、フラッシュメモリ、電気的消去可能プログラム可能読み出し専用メモリ(EEPROM)、磁気カード若しくは光カード、又は電子命令を格納するのに適した任意の他のタイプの媒体を含み得る。
【0177】
限られた数の実施形態に関して本発明を説明したが、当業者は、それらから数多の変更及び変形を理解することになる。意図されることには、添付の請求項は、本発明の真の精神及び範囲に入る全てのそのような変更及び変形に及ぶものである。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24