(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024024042
(43)【公開日】2024-02-21
(54)【発明の名称】プロセッサの最適スロットルのためのシステム、機器、及び方法
(51)【国際特許分類】
G06F 1/324 20190101AFI20240214BHJP
G06F 1/3203 20190101ALI20240214BHJP
G06F 1/3296 20190101ALI20240214BHJP
G06F 9/50 20060101ALI20240214BHJP
【FI】
G06F1/324
G06F1/3203
G06F1/3296
G06F9/50 120Z
【審査請求】有
【請求項の数】18
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2024000031
(22)【出願日】2024-01-04
(62)【分割の表示】P 2020549669の分割
【原出願日】2019-04-02
(31)【優先権主張番号】15/969,198
(32)【優先日】2018-05-02
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】593096712
【氏名又は名称】インテル コーポレイション
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ンゲ,チー リム
(72)【発明者】
【氏名】ハーマーディング,ザ セカンド,ジェイムズ ジー.
(72)【発明者】
【氏名】ダッタ,プロネイ
(72)【発明者】
【氏名】レシュ,ジョシュア
(57)【要約】
【課題】 プロセッサの最適スロットルのためのシステム、機器、及び方法を提供する。
【解決手段】 一実施形態では、プロセッサは、動作を実行する複数の処理要素と、前記複数の処理要素に結合され、前記複数の処理要素の電力消費を制御する電力管理エージェント(PMA)と、前記PMAに結合されるスロットル回路と、を含む。前記スロットル回路は、前記PMAから通信された変換情報に少なくとも部分的に基づき、前記複数の処理要素のスロットル電力レベルを決定する。他の実施形態が記載され請求される。
【選択図】
図16
【特許請求の範囲】
【請求項1】
機器であって、
複数の処理要素であって、第1処理コアと第2処理コアとグラフィックプロセッサとを含み、前記第1処理コアは前記第2処理コアよりも低電力の処理コアを含む、複数の処理要素と、
前記複数の処理要素に結合される電力管理エージェント(PMA)であって、前記PMAは前記複数の処理要素の電力消費を制御する、PMAと、
前記PMAに結合されるスロットル回路であって、前記スロットル回路は、前記PMAにより提供される変換情報に基づき対応する電圧/周波数ペアで前記処理要素を動作させる、スロットル回路と、
を含み、前記PMAは、異なる属性を有する負荷のために異なる変換情報を提供する、機器。
【請求項2】
前記PMAは、電力目標に基づき、前記複数の処理要素の電力消費を制御する、請求項1に記載の機器。
【請求項3】
前記異なる変換情報は、更に、前記スロットル回路に、前記グラフィックプロセッサのための異なる電力レベルを構成させる、請求項1又は2に記載の機器。
【請求項4】
前記異なる属性は、異なる負荷優先度を含み、前記異なる変換情報は、第1負荷優先度に基づく第1変換情報と、第2負荷優先度に基づく第2変換情報とを含む、請求項1~3のいずれかに記載の機器。
【請求項5】
前記第1変換情報は、前記第1処理コア、前記第2処理コア、及び前記グラフィックプロセッサの第1動作点を示す情報を含み、前記第2変換情報は、前記第1処理コア、前記第2処理コア、及び前記グラフィックプロセッサの第2動作点を示す情報を含む、請求項4に記載の機器。
【請求項6】
前記第1動作点及び前記第2動作点は、前記第1処理コア、前記第2処理コア、及び前記グラフィックプロセッサの第1周波数セット及び第2周波数セットを含む、請求項5に記載の機器。
【請求項7】
前記異なる変換情報は、異なる対応する比情報を含む、請求項1~6のいずれかに記載の機器。
【請求項8】
前記PMAは、ヒント情報に少なくとも部分的に基づき、前記異なる変換情報を決定する、請求項1~7のいずれかに記載の機器。
【請求項9】
前記ヒント情報は、第1負荷属性の第1特性及び第2負荷属性の第2特性に基づく、請求項8に記載の機器。
【請求項10】
方法であって、
第1処理コアと第2処理コアとグラフィックプロセッサとを含む複数の処理要素で負荷を実行するステップであって、前記第1処理コアは前記第2処理コアよりも低電力の処理コアを含む、ステップと、
電力管理エージェント(PMA)により前記複数の処理要素の電力消費を制御するステップと、
スロットル回路により、前記PMAにより提供される変換情報に基づき対応する電圧/周波数ペアで前記処理要素を動作させるステップと、
前記PMAにより、異なる属性を有する負荷のために異なる変換情報を提供するステップと、
を含む方法。
【請求項11】
前記PMAは、電力目標に基づき、前記複数の処理要素の電力消費を制御する、請求項10に記載の方法。
【請求項12】
前記異なる変換情報は、更に、前記スロットル回路に、前記グラフィックプロセッサのための異なる電力レベルを構成させる、請求項10又は11に記載の方法。
【請求項13】
前記異なる属性は、異なる負荷優先度を含み、前記異なる変換情報は、第1負荷優先度に基づく第1変換情報と、第2負荷優先度に基づく第2変換情報とを含む、請求項10~12のいずれかに記載の方法。
【請求項14】
前記第1変換情報は、前記第1処理コア、前記第2処理コア、及び前記グラフィックプロセッサの第1動作点を示す情報を含み、前記第2変換情報は、前記第1処理コア、前記第2処理コア、及び前記グラフィックプロセッサの第2動作点を示す情報を含む、請求項13に記載の方法。
【請求項15】
前記第1動作点及び前記第2動作点は、前記第1処理コア、前記第2処理コア、及び前記グラフィックプロセッサの第1周波数セット及び第2周波数セットを含む、請求項14に記載の方法。
【請求項16】
前記異なる変換情報は、異なる対応する比情報を含む、請求項10~15のいずれかに記載の方法。
【請求項17】
前記PMAは、ヒント情報に少なくとも部分的に基づき、前記異なる変換情報を決定する、請求項10~16のいずれかに記載の方法。
【請求項18】
前記ヒント情報は、第1負荷属性の第1特性及び第2負荷属性の第2特性に基づく、請求項17に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
実施形態は、システムの電力管理に関し、特にマルチコアプロセッサの電力管理に関する。
【背景技術】
【0002】
半導体プロセス及びロジック設計における進歩は、集積回路素子に存在し得るロジックの量の増大を可能にした。結果として、コンピュータシステム構成は、システム内の単一又は複数の集積回路から、個々の集積回路上の複数のハードウェアスレッド、複数のコア、複数の素子、及び/又は完全なシステムへと進化した。さらに、集積回路の密度が増大するにつれ、コンピューティングシステム(内蔵システムからサーバまで)の電力要件も次第に増大した。さらに、ソフトウェア非能率、そのハードウェア要件も、コンピューティング素子エネルギ消費を増大させた。実際に、幾つかの研究は、米国のような国では、コンピューティング装置が全体の電気供給のかなりの割合を消費すると示した。結果として、集積回路に関連するエネルギ効率及び管理に対する不可欠な必要性がある。これらの必要性は、サーバ、デスクトップコンピュータ、ノートブック、Ultrabook(商標)、タブレット、携帯電話機、プロセッサ、埋め込み型システム、等が更に広まるにつれ(標準的なコンピュータ、自動車、及びテレビへの包含から、バイオ技術まで)、増大するだろう。
【図面の簡単な説明】
【0003】
【
図1】本発明の一実施形態によるシステムの一部のブロック図である。
【0004】
【
図2】本発明の一実施形態によるプロセッサのブロック図である。
【0005】
【
図3】本発明の別の実施形態によるマルチドメインプロセッサのブロック図である。
【0006】
【
図4】複数のコアを含むプロセッサの一実施形態である。
【0007】
【
図5】本発明の一実施形態によるプロセッサコアのマイクロアーキテクチャのブロック図である。
【0008】
【
図6】別の実施形態によるプロセッサコアのマイクロアーキテクチャのブロック図である。
【0009】
【
図7】更に別の実施形態によるプロセッサコアのマイクロアーキテクチャのブロック図である。
【0010】
【
図8】また更に別の実施形態によるプロセッサコアのマイクロアーキテクチャのブロック図である。
【0011】
【
図9】本発明の別の実施形態によるプロセッサのブロック図である。
【0012】
【
図10】本発明の一実施形態による代表的なSoCのブロック図である。
【0013】
【
図11】本発明の一実施形態による別の例示的なSoCのブロック図である。
【0014】
【
図12】本発明の一実施形態による例示的なシステムのブロック図である。
【0015】
【
図13】実施形態が実施され得る別の例示的なシステムのブロック図である。
【0016】
【
図14】代表的なコンピュータシステムのブロック図である。
【0017】
【
図15】本発明の一実施形態によるシステムのブロック図である。
【0018】
【
図16】一実施形態によるシステムのブロック図である。
【0019】
【
図17】本発明の一実施形態による方法のフロー図である。
【0020】
【
図18】本発明の別の実施形態による方法のフロー図である。
【0021】
【
図19】本発明の別の実施形態による方法のフロー図である。
【0022】
【
図20】本発明の別の実施形態による方法のフロー図である。
【発明を実施するための形態】
【0023】
種々の実施形態では、マルチコアプロセッサ又は他のシステムオンチップ(SoC)のようなプロセッサは、プラットフォームイベントに応答して、プロセッサの1つ以上の処理要素のスロットル(throttling)を最適な方法で実行するよう構成されてよい。つまり、プロセッサ内の全部の動作を直ちに最小動作点までスロットル(落とす)のではなく、プロセッサ性能は、プラットフォームイベントの観点で電気的障害から保護する保護メカニズムを犠牲にすることなく、スロットル条件において最適化されてよい。より詳細には、ここで説明されるように、第1エージェント、つまりプラットフォーム目標エージェントは、プロセッサ全体の最適スロットル電力目標を先取り的に(proactively)決定してよい。一方、ここでは電力管理エージェントと呼ばれる別のエージェントは、ユーザ活動、優先度情報、等に少なくとも部分的に基づき、各処理要素の最適スロットル目標を先取り的に決定してよい。次に、また、ここではスロットルエージェントと呼ばれる追加エージェントは、これらの最適化された処理要素のスロットル目標、及び全体の最適スロットル電力目標に少なくとも部分的に基づき、処理要素の動作点を動的に制御してよい。このような動的に制御される動作点は最適化されてよい。その結果、プロセッサは、直ちに最小動作点にまで縮退する必要がない。
【0024】
ここに記載される実施形態によると、プロセッサのために適切なスロットル動作が維持されてよく、同時に、性能機能を維持できる。つまり、ここに記載のように最適化されるスロットルレベルは、標準的な付加が依然として適切な性能レベルで動作し得るレベルに設定されてよい。しかしながら、ウイルス負荷レベルのような最悪の条件では、完全なスロットルメカニズムは、全ての処理要素に最小動作点で動作させるよう実装されてよいことが理解される。
【0025】
実施形態では、このような最適化されたスロットル動作は、入力電力能力に基づき生じてよい。つまり、バッテリ電源のような所与の電源が十分に充電されているとき、バッテリ電源は、最小動作点より大きなスロットルレベルで動作するための十分な電力を供給できるので、スロットル動作は、最小動作点に制限される必要がない。
【0026】
反対に、従来のプラットフォームは、プラットフォームイベントに応答して、標準的には、強制的にプロセッサに最低動作点(例えば、最低周波数及び/又は電圧モード)で動作させる。これは、性能に望ましくない影響を及ぼし得る。代わりに、実施形態では、入力電力能力(例えば、充電容量)の先験的な知識に少なくとも部分的に基づき、プラットフォームイベントに応答するプロセッサスロットルは、最低動作点より高いレベルにあってよく、それにより不要な性能上の不利益を回避する。
【0027】
プラットフォームが、起こり得る機能障害があることを検出すると、プラットフォームは、該機能障害を回避するために、プロセッサ電力を素早くスロットルする高速信号を生成する。この状況では、実施形態によるプロセッサは、スロットルされると、(機能障害を回避するための)保護メカニズムを犠牲にすることなく、性能を最適化するよう構成されてよい。この目的のために、プロセッサメカニズムは、プロセッサの最適スロットル電力目標を先取り的に設定し、ユーザ活動に少なくとも部分的に基づき各処理要素の最適動作点を先取り的に設定するよう提供される。これらの先取り的設定が生成された後に、スロットル信号が受信されると(つまり、起こり得る機能障害の検出に応答して)、処理要素は、それぞれの処理要素のスロットル電力目標より高くない点で動作するよう低遅延で制御されてよい。
【0028】
以下の実施形態は、コンピューティングプラットフォーム又はプロセッサのような特定の集積回路を参照して説明されるが、他の実施形態が他の種類の集積回路及び論理素子に適用可能である。ここに記載の実施形態と同様の技術及び教示は、良好なエネルギ効率及びエネルギ保存から利益を得る他の種類の回路又は半導体素子に適用されてよい。例えば、開示の実施形態は、任意の特定の種類のコンピュータシステムに限定されない。つまり、開示の実施形態は、サーバコンピュータ(例えば、タワー、ラック、ブレード、マイクロサーバ、等)、通信システム、記憶システム、任意の構成のデスクトップコンピュータ、ラップトップ、ノートブック、及びタブレットコンピュータ(2:1タブレット、ファブレット(phablet)、等を含む)に及ぶ多くの異なるシステム種類で使用でき、ハンドヘルド装置、システムオンチップ(SoC)、内蔵アプリケーションのような他の装置内で使用されてよい。ハンドヘルド装置の幾つかの例は、スマートフォンのようなセルラフォン、インターネットプロトコル装置、デジタルカメラ、PDA(personal digital assistant)、及びハンドヘルドPCを含む。内蔵アプリケーションは、標準的に、マイクロコントローラ、デジタル信号プロセッサ(DSP)、ネットワークコンピュータ(NetPC)、セットトップボックス、ネットワークハブ、広域ネットワーク(WAN)スイッチ、ウェアラブル装置、又は、以下に教示する機能及び動作を実行できる任意の他のシステムを含んでよい。さらに、実施形態は、移動電話機、スマートフォン、及びファブレットのような標準的な音声機能を有するモバイル端末、及び/又は、多くのウェアラブル、タブレット、ノートブック、デスクトップ、マイクロサーバ、サーバ等のような標準的な無線音声機能通信能力を有しない非モバイル端末に実装されてよい。さらに、ここに記載の機器、方法、及びシステムは物理的コンピューティング装置に限定されず、ソフトウェア最適化にも関連してよい。
【0029】
図1を参照すると、本発明の一実施形態によるシステムの一部のブロック図が示される。
図1に示すように、システム100は、図示のようにマルチコアプロセッサであるプロセッサ110を含む種々のコンポーネントを含んでよい。プロセッサ110は、外部電圧レギュレータ160を介して電源150に結合されてよい。外部電圧レギュレータ160は、第1電圧変換を実行して、1次調整電圧をプロセッサ110に供給してよい。
【0030】
図示のように、プロセッサ110は、複数のコア120a~120nを含む単一ダイプロセッサであってよい。さらに、各コアは、集積電圧レギュレータ(integrated voltage regulator(IVR))125a~125nに関連付けられてよい。IVRは、1次調整電圧を受信し、IVRに関連付けられたプロセッサの1つ以上のエージェントに提供されるべき動作電圧を生成する。従って、IVR実装は、電圧、したがって個々のコアの電力及び性能の微細制御を可能にするために提供されてよい。従って、各コアは、独立した電圧及び周波数で動作でき、大きな柔軟性を可能にし、電力消費と性能とのバランスをとるための広範な機会を与える。幾つかの実施形態では、複数のIVRの使用は、コンポーネントを別個の電力プレーンにグループ化することを可能にする。その結果、電力はIVRにより調整され、グループ内のコンポーネントにのみ供給される。電力管理の間、1つのIVRの所与の電力プレーンは、プロセッサが特定の低電力状態に置かれると、電力を低下又はオフにされてよい。一方、別のIVRの別の電力プレーンはアクティブなままであり、又は完全に電力を供給される。
【0031】
更に
図1を参照すると、入力/出力インタフェース132、別のインタフェース134、及び集積メモリ制御部136を含む追加コンポーネントが、プロセッサ内に存在してよい。図示のように、これらのコンポーネントの各々は、別の集積電圧レギュレータ125xにより電力を供給されてよい。一実施形態では、インタフェース132は、Intel(登録商標) Quick Path Interconnect(QPI)相互接続の動作を可能にし得る。QPI相互接続は、物理層、リンク層、及びプロトコル層を含む複数の層を含むキャッシュコヒーレントプロトコルにおけるポイントツーポイント(PtP)リンクを提供する。また、インタフェース134は、PCIe(商標)(Peripheral Component Interconnect Express)プロトコルを介して通信してよい。
【0032】
プロセッサ110に関して電力管理動作を実行するハードウェア、ソフトウェア、及び/又はファームウェアを含み得る電力制御ユニット(power control unit(PCU))138も図示される。図示のように、PCU138は、デジタルインタフェースを介して外部電圧レギュレータ160に制御情報を提供して、電圧レギュレータに適切な調整電圧を生成させる。PCU138は、また、別のデジタルインタフェースを介してIVR125に制御情報を提供して、生成された動作電圧を制御する(又は、対応するIVRに、低電力モードでディスエーブルさせる)。種々の実施形態では、PCU138は、ハードウェアに基づく電力管理を実行するために、種々の電力管理論理ユニットを含んでよい。このような電力管理は、(例えば、種々のプロセッサハードウェアにより)完全に制御された(及び負荷及び/又は電力、熱、又は他のプロセッサ制約によりトリガされてよい)プロセッサであってよい。及び/又は、電力管理は、外部ソース(例えば、プラットフォーム又は管理電力管理ソース又はシステムソフトウェア)に応答して実行されてよい。
【0033】
ここで実施形態では、PCU138は、複数の異なる動作点のうちの1つで動作するよう、プロセッサ110内のドメインを制御するよう構成されてよい。より詳細には、PCU138は、異なるドメインの動作点を決定してよい。さらに、例えばPCU138の外部にある高速メカニズムは、プラットフォームイベントに応答してスロットル動作を実行することに関連してよい。従って、
図1に更に示すように、スロットル回路139(幾つかの場合には、分散型ハードウェア回路であってよい)は、さらに、IVR125(及び/又はコア120自体)と通信してよい。このように、スロットル回路139は、更に後述するように、PCU138から受信した変換情報に少なくとも部分的に基づき、プロセッサスロットル電力レベルを、個々のドメイン(例えば、コア120等)の対応するスロットルレベルに変換する。
【0034】
説明の簡易さのために図示しないが、アンコアロジックのような追加コンポーネント、及び内部メモリ、例えば1つ以上のレベルのキャッシュメモリ階層構造、等のような他のコンポーネントが、プロセッサ110内に存在してよいことが理解される。さらに、
図1の実装は集積電圧レギュレータと共に示されるが、実施形態はそれに限定されない。
【0035】
ここに記載のプロセッサは、オペレーティングシステム(OS)に基づく電力管理(OS-based power management(OSPM))メカニズムと独立であり相補的であってよい電力管理技術を利用してよい。ある例示的なOSPM技術によると、プロセッサは、種々の性能状態又はレベル、所謂P状態、つまりP0~PNで動作できる。通常、P1性能状態は、OSにより要求され得る最も高い保証された性能状態に対応してよい。このP1状態に加えて、OSは、高い性能状態、つまりP0状態を更に要求できる。このP0状態は、従って、電力及び/又は熱量が利用可能なとき、プロセッサハードウェアは、プロセッサ又はその少なくとも部分を、保証された周波数より高い周波数で動作するよう構成できる。多くの実装では、プロセッサは、ヒューズとして又は製造中にプロセッサに書き込まれるとき、P1保証最大周波数より上の、特定のプロセッサの最大ピーク周波数を超える、複数の所謂ビン周波数を含むことができる。さらに、1つのOSPMメカニズムによると、プロセッサは、種々の電力状態又はレベルで動作できる。電力状態に関して、OSPMメカニズムは、一般にC状態、C0、C1、~Cn状態と呼ばれる異なる電力消費状態を指定してよい。コアは、アクティブなときC0状態で実行し、コアは、アイドルのとき、非ゼロC状態(例えば、C1~C6状態)とも呼ばれるコア低電力状態に置かれてよく、各C状態は低電力消費レベルである(従って、C6はC1より深い低電力状態である、等)。
【0036】
多くの異なる種類の電力管理技術が、個々に又は異なる実施形態では結合されて使用されてよいことが理解される。代表的な例として、電力制御部は、特定の形式の動的電圧周波数スケーリング(dynamic voltage frequency scaling(DVFS))により電力管理されるようプロセッサを制御してよい。DVFSでは、1つ以上のコア又は他のプロセッサロジックの動作電圧及び/又は動作周波数は、特定の状況において電力消費を低減するよう動的に制御されてよい。一例では、DVFSは、Santa Clara、 CAにあるIntel社から入手可能なEnhanced Intel SpeedStep(商標)技術を用いて実行されて、最低電力消費レベルで最適性能を提供してよい。別の例では、DVFSは、Intel TurboBoost(商標)技術を用いて実行されて、1つ以上のコア又は他の計算エンジンに、条件(例えば、負荷及び可用性)に基づき、保証された動作周波数より高い周波数で動作させてよい。
【0037】
特定の例で使用され得る別の電力管理技術は、異なる計算エンジンの間の負荷の動的スワッピングである。例えば、プロセッサは、異なる電力消費レベルで動作する非対称コア又は他の処理エンジンを含んでよい。従って、電力の制約された状況では、より低い電力のコア又は他の計算エンジンで実行するよう、1つ以上の負荷が動的に切り替え可能である。別の例示的な電力管理技術は、ハードウェアデューティサイクル(hardware duty cycling(HDC))である。HDCは、コア及び/又は他の計算エンジンを、デューティサイクルに従い周期的にイネーブル及びディスエーブルにし、その結果、1つ以上のコアは、デューティサイクルの非アクティブ期間の間に非アクティブになり、デューティサイクルのアクティブ期間の間にアクティブになってよい。
【0038】
実施形態は、サーバプロセッサ、デスクトッププロセッサ、モバイルプロセッサ、等を含む種々の市場のプロセッサに実装できる。
図2を参照すると、本発明の一実施形態によるプロセッサのブロック図が示される。
図2に示すように、プロセッサ200は、複数のコア210a~210nを含むマルチコアプロセッサであってよい。一実施形態では、各々のこのようなコアは、独立した電力ドメインのものであってよく、負荷に基づきアクティブ状態及び/又は最大性能状態に出入りするよう構成され得る。
【0039】
種々のコアは、相互接続215を介して、システムエージェント、又は種々のコンポーネントを含むアンコア220に結合されてよい。図示のように、アンコア220は、最終レベルキャッシュであってよい共有キャッシュ230を含んでよい。さらに、アンコアは、システムメモリ(
図2に示さない)と例えばメモリバスを介して通信するために、集積メモリ制御部240を含んでよい。アンコア220は、種々のインタフェース250、性能監視ユニット(performance monitoring unit(PMU))260、及びここに記載の電力管理技術を実行するロジックを含み得る電力制御ユニット255、も含む。さらに、電力制御ユニット255は、スロットル制御回路256を含んでよい。スロットル制御回路256は、ヒント情報に少なくとも部分的に基づきスロットル回路258により使用される変換情報を動的に決定して、該回路に個々のコア210(及び場合によってはプロセッサ200の他のコンポーネント)のスロットル電力レベルを動的に決定させ、プラットフォームイベントに応答して低遅延動作点変更を可能にしてよい。
【0040】
さらに、インタフェース250a~250nにより、周辺装置、大容量記憶、等のような種々のオフチップコンポーネントとの接続が行われ得る。
図2の実施形態にはこの特定の実装により示されるが、本発明の範囲はこれに関して限定されない。
【0041】
図3を参照すると、本発明の別の実施形態によるマルチドメインプロセッサのブロック図が示される。
図3の実施形態に示すように、プロセッサ300は複数のドメインを含む。具体的に、コアドメイン310は複数のコア310
0~310
nを含むことができ、グラフィックドメイン320は1つ以上のグラフィックエンジンを含むことができ、システムエージェントドメイン350が更に存在してよい。幾つかの実施形態では、システムエージェントドメイン350は、コアドメインとは独立した周波数で実行してよく、電力制御イベントを処理するために常に電源オンのままであってよい。その結果、ドメイン310及び320は、動的に高電力状態及び低電力状態に入り、及び出るよう、制御できる。ドメイン310及び320の各々は、異なる電圧及び/又は電力で動作してよい。留意すべきことに、3個のドメインのみが示されるが、本発明の範囲はこれに関して限定されず、他の実施形態では追加ドメインが存在し得ることが理解される。例えば、それぞれが少なくとも1つのコアを含む複数のコアドメインが存在してよい。
【0042】
通常、各コア310は、種々の実行ユニットに加えて低レベルキャッシュ及び追加処理要素を更に含んでよい。また、種々のコアは、互いに、及び最終レベルキャッシュ(last level cache(LLC))の複数のユニット3400~340nで形成される共有キャッシュメモリに結合されてよい。種々の実施形態では、LLC340は、コア及びグラフィックエンジン、並びに種々のメディア処理回路の間で共有されてよい。図示のように、リング相互接続330は、従って、コアを一緒に結合し、コア、グラフィックドメイン320、及びシステムエージェント回路350の間の相互接続を提供する。一実施形態では、相互接続330は、コアドメインの部分であり得る。しかしながら、他の実施形態では、リング相互接続はそれ自体のドメインであり得る。
【0043】
更に図示されるように、システムエージェントドメイン350は、関連するディスプレイの制御及びインタフェースを提供し得るディスプレイ制御部352を含んでよい。更に図示されるように、システムエージェントドメイン350は、スロットル制御回路356を含み得る電力制御ユニット355を含んでよい。スロットル制御回路356は、コア310、グラフィックエンジン320、等で実行されている負荷に関するヒント情報に少なくとも部分的に基づき、変換情報を決定する。また、ここに記載されるように、PCU355は、このような情報をスロットル回路358に提供して、スロットル回路358が、対応するコア/グラフィックエンジンのスロットル動作点を決定できるようにし、そのような更新された動作点への低遅延遷移を可能にする。
【0044】
図3に更に図示されるように、プロセッサ300は、DRAM(dynamic random access memory)のようなシステムメモリへのインタフェースを提供できる統合メモリ制御部(integrated memory controller(IMC))370を更に含むことができる。複数のインタフェース380
0~380
nは、プロセッサと他の回路との間の相互接続を可能にするために存在してよい。例えば、一実施形態では、少なくとも1つのDMI(direct media interface)インタフェースが、1つ以上のPCIe(商標)インタフェースと共に提供されてよい。また更に、追加プロセッサ又は他の回路のような他のエージェント間の通信を提供するために、1つ以上のQPIインタフェースも提供されてよい。
図3の実施形態には上位レベルで示されるが、本発明の範囲はこれに関して限定されないことが理解される。
【0045】
図4は、複数のコアを含むプロセッサの一実施形態を示す。プロセッサ400は、マイクロプロセッサ、埋め込み型プロセッサ、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、ハンドヘルドプロセッサ、アプリケーションプロセッサ、コプロセッサ、システムオンチップ(SoC)、又はコードを実行する他の装置のような、任意のプロセッサ又は処理装置を含む。プロセッサ400は、一実施形態では、非対称コア又は対称コア(図示の実施形態)を含んでよい少なくとも2個のコア、つまりコア401及び402を含む。しかしながら、プロセッサ400は、対称又は非対称であってよい任意の数の処理要素を含んでよい。
【0046】
一実施形態では、処理要素は、ソフトウェアスレッドをサポートするハードウェア又はロジックを表す。ハードウェア処理要素の例は、スレッドユニット、スレッドスロット、スレッド、処理ユニット、コンテキスト、コンテキストユニット、論理プロセッサ、ハードウェアスレッド、コア、及び/又は実行状態又はアーキテクチャ状態のようなプロセッサの状態を保持可能な任意の他の要素を含む。言い換えると、処理要素は、一実施形態では、ソフトウェアスレッド、オペレーティングシステム、アプリケーション、又は他のコードのようなコードと独立に関連付けることの可能な任意のハードウェアを表す。物理プロセッサは、標準的に、コア又はハードウェアスレッドのような任意の数の他の処理要素を含む場合のある集積回路を表す。
【0047】
コアは、時に、独立したアーキテクチャ状態を維持することの可能な、集積回路上に配置されるロジックを表す。ここで、各々の独立して維持されるアーキテクチャ状態は、少なくとも幾つかの専用実行リソースに関連付けられる。コアとは対照的に、ハードウェアスレッドは、標準的に、独立したアーキテクチャ状態を維持することの可能な、集積回路上に配置される任意のロジックを表す。ここで、独立して維持されるアーキテクチャ状態は、リソースを実行するためのアクセスを共有する。図示のように、特定のリソースが共有され、他のものがアーキテクチャ状態に専用であるとき、ハードウェアスレッド及びコアの表示の間の線は重なり合う。更に、コア及びハードウェアスレッドは、オペレーティングシステムにより、個別論理プロセッサと見なされる。ここで、オペレーティングシステムは、各論理プロセッサ上の動作を個別にスケジューリングできる。
【0048】
図4に示すような物理プロセッサ400は、2個のコア、つまりコア401及び402を含む。ここで、コア401及び402は、対称コア、つまり同じ構成、機能ユニット、及び/又はロジックを備えるコアであると考えられる。別の実施形態では、コア401はアウトオブオーダ(out-of-order)プロセッサコアを含み、コア402はインオーダ(in-order)プロセッサコアを含む。しかしながら、コア401及び402は、ネイティブコア、ソフトウェア管理コア、ISA(native instruction set architecture)を実行するために適応されたコア、変換されたISAを実行するよう適応されたコア、共通設計(co-designed)コア、又は他の知られているコア、のような任意の種類のコアから個別に選択されてよい。更なる議論のために、コア401の中に示される機能ユニットは、以下に更に詳述され、コア402の中のユニットは同様に動作する。
【0049】
図示のように、コア401は、ハードウェアスレッドスロット401a及び401bとも呼ばれてよい2個のハードウェアスレッド401a及び401bを含む。従って、オペレーティングシステムのようなソフトウェアエンティティは、一実施形態では、プロセッサ400を4個の個別プロセッサ、つまり4個の論理プロセッサ又は4個のソフトウェアスレッドを同時に実行可能な処理要素として見る。上述のように、第1スレッドはアーキテクチャ状態レジスタ401aに関連付けられ、第2スレッドはアーキテクチャ状態レジスタ401bに関連付けられ、第3スレッドはアーキテクチャ状態レジスタ402aに関連付けられ、第4スレッドはアーキテクチャ状態レジスタ402bに関連付けられる。ここで、アーキテクチャ状態レジスタ(401a、401b、402a、402b)の各々は、上述のように、処理要素、スレッドスロット、又はスレッドユニットと呼ばれてよい。図示のように、アーキテクチャ状態レジスタ401aは、アーキテクチャ状態レジスタ401b内に複製される。従って、個々のアーキテクチャ状態/コンテキストが、論理プロセッサ401a及び論理プロセッサ401bについて格納可能である。コア401内で、アロケータ及びリネーマブロック430内の命令ポインタ及び残りのロジックのような他のより小さなリソースも、スレッド401a及び401bのために複製されてよい。リローダ/退避ユニット435内のリローダバッファ、ILTB420、ロード/ストアバッファ、及びキューのような幾つかのリソースは、パーティショニングを通じて共有されてよい。汎用内部レジスタ、ページ-テーブルベースレジスタ、低レベルデータキャッシュ、及びデータTLB415、実行ユニット440、及びアウトオブオーダユニット435の部分のような他のリソースは、完全に共有される可能性がある。
【0050】
プロセッサ400は、時に、完全に共有される、パーティショニングを通じて共有される、又は処理要素により/それに専用であってよい他のリソースを含む。
図4に、プロセッサの説明のための論理ユニット/リソースを備える純粋に例示的なプロセッサの一実施形態が示される。プロセッサは、これらの機能ユニットのうちの任意のものを含み又は省略してよく、また、図示されない他の任意の知られている機能ユニット、ロジック、又はファームウェアを含んでよい。図示のように、コア401は、簡略化された代表的なアウトオブオーダ(out-of-order(OOO))プロセッサコアを含む。しかし、異なる実施形態では、インオーダプロセッサが利用されてよい。OOOコアは、実行され/取り入れられるべきブランチを予測するブランチ目標バッファ420、及び命令のためのアドレス変換エントリを格納する命令-変換バッファ(instruction-translation buffer(I-TLB))420を含む。
【0051】
コア401は、フェッチユニット420に結合されフェッチした要素を復号する復号モジュール425を更に含む。フェッチロジックは、一実施形態では、スレッドスロット401a、401bにそれぞれ関連する個々のシーケンスを含む。通常、コア401は、プロセッサ400上で実行可能な命令を定める/指定する第1ISAに関連付けられる。時には、第1ISAの部分である機械コード命令は、実行されるべき命令又は動作を参照し/指定する、命令の一部を含む(オペコードと呼ばれる)。復号ロジック425は、これらの命令をそれらのオペコードから認識し第1ISAにより定められたように処理するためにパイプライン内に復号した命令を渡す回路を含む。例えば、デコーダ425は、一実施形態では、トランザクション命令のような、特定命令を認識するよう設計された又は適応されたロジックを含む。デコーダ425による認識の結果、アーキテクチャ又はコア401は、特定の所定の動作を行い、適切な命令に関連付けられたタスクを実行する。ここの記載のタスク、ブロック、動作、及び方法のうちの任意のものは、単一又は複数の命令に応答して実行されてよく、その幾つかは新しい又は古い命令であってよいことに留意することが重要である。
【0052】
一例では、アロケータ及びリネーマブロック430は、命令処理結果を格納するレジスタファイルのようなリソースを予約するアロケータを含む。しかしながら、スレッド401a及び401bは、アウトオブオーダ実行が可能な可能性がある。ここで、アロケータ及びリネーマブロック430も、命令結果を追跡するためにリオーダバッファのような他のリソースを予約する。ユニット430は、プロセッサ400の内部にある他のレジスタに、プログラム/命令参照レジスタをリネームするために、レジスタリネーマも含んでよい。リローダ/退避ユニット435は、アウトオブオーダ実行及び後にアウトオブオーダで実行される命令のインオーダ退避をサポートするために、上述のリオーダバッファ、ロードバッファ、ストアバッファのようなコンポーネントを含む。
【0053】
スケジューラ及び実行ユニットブロック440は、一実施形態では、実行ユニット上で命令/動作をスケジューリングするスケジューラユニットを含む。例えば、浮動小数点命令は、利用可能な浮動小数点実行ユニットを有する実行ユニットの一部にスケジューリングされる。情報命令処理結果を格納するために、実行ユニットに関連付けられるレジスタファイルも含まれる。例示的な実行ユニットは、浮動小数点実行ユニット、整数実行ユニット、ジャンプ実行ユニット、ロード実行ユニット、ストア実行ユニット、及び他の知られている実行ユニットを含む。
【0054】
より低いレベルのデータキャッシュ及びデータ変換バッファ(解釈)450は、実行ユニット440に結合される。データキャッシュは、メモリ内にコヒーレントに状態を保持する場合のある、データオペランドのような要素上で最近使用された/演算されたものを格納する。D-TLBは、最近の仮想/線形からの物理アドレスへの変換を格納する。特定の例として、プロセッサは、物理メモリを複数の仮想ページに分解するためにページテーブル構造を含んでよい。
【0055】
ここで、コア401及び402は、最近フェッチした要素をキャッシュするための、より上位レベルの、又は更なるアウト(further-out)キャッシュ410へのアクセスを共有する。留意すべきことに、より上位の、又は更なるアウトは、実行ユニットから更に増大する、又は離れていくキャッシュレベルを表す。一実施形態では、より上位レベルのキャッシュ410は、第2又は第3レベルデータキャッシュのような最終レベルデータキャッシュ、つまりプロセッサ400においてメモリ階層構造の中の最後のキャッシュ、である。しかしながら、より上位レベルのキャッシュ410は、命令キャッシュに関連付けられる、又はそれを含み得るので、限定されない。トレースキャッシュ、つまり命令型キャッシュは、代わりに、最近復号したトレースを格納するために、デコーダ425の後に結合されてよい。
【0056】
図示の構成では、プロセッサ400は、バスインタフェースモジュール405、及び本発明の実施形態に従い電力管理を実行してよい電力制御部460も含む。本シナリオでは、バスインタフェース405は、システムメモリ及び他のコンポーネントのような、プロセッサ400の外部にある装置と通信する。
【0057】
メモリ制御部470は、1つ以上のメモリのような他の装置とインタフェースしてよい。一例では、バスインタフェース405は、メモリとのインタフェースのためのメモリ制御部、及びグラフィックプロセッサとのインタフェースのためのグラフィック制御部を備えるリング相互接続を含む。SoC環境では、ネットワークインタフェース、コプロセッサ、メモリ、グラフィックプロセッサ、及び任意の他の知られているコンピュータ装置/インタフェースのような更に多くの装置が、単一のダイ又は集積回路上に統合されて、高機能及び低電力消費の因子の小さな形状因子を提供してよい。
【0058】
図5を参照すると、本発明の一実施形態によるプロセッサコアのマイクロアーキテクチャのブロック図が示される。
図5に示すように、プロセッサコア500は、複数段のパイプラインのアウトオブオーダプロセッサであってよい。コア500は、集積電圧レギュレータ又は外部電圧レギュレータから受信されてよい、受信した動作電圧に基づき種々の電圧で動作してよい。
【0059】
図5に示すように、コア500は、プロセッサパイプラインの中で後に使用するために、実行されるべき命令をフェッチし準備するために使用され得るフロントエンドユニット510を含む。例えば、フロントエンドユニット510は、フェッチユニット501、命令キャッシュ503、及び命令でコーダ505を含んでよい。幾つかの実装では、フロントエンドユニット510は、マイクロコードストレージ及びマイクロ動作ストレージと一緒に、トレースキャッシュを更に含んでよい。フェッチユニット501は、マクロ命令を、例えばメモリ又は命令キャッシュ503からフェッチし、それらを命令デコーダ505に供給して、それらをプロセッサによる実行のためにプリミティブ、つまりマイクロ動作へと復号してよい。
【0060】
フロントエンドユニット510と実行ユニット520との間には、マイクロ命令を受信しそれらを実行のために準備するために使用されてよいOOO(out-of-order)エンジン515が結合される。より具体的には、OOOエンジン515は、マイクロ命令フローを並べ替えて、実行のために必要な種々のリソースを割り当てるための、並びにレジスタファイル530及び拡張レジスタファイル535のような種々のレジスタファイル内の記憶位置に残りの論理レジスタを提供するための、種々のバッファを含んでよい。レジスタファイル530は、整数及び浮動小数点演算のための別個のレジスタファイルを含んでよい。構成、制御、及び追加動作を目的として、MSR(machine specific register)セット538も存在し、コア500内の(及びコア外部の)種々のロジックにアクセス可能であってよい。
【0061】
例えば、専用ハードウェアの中でも特に、種々の整数、浮動小数点、及びSIMD(single instruction multiple data)論理ユニットを含む種々のリソースは、実行ユニット520内に存在してよい。例えば、このような実行ユニットは、他のこのような実行ユニットの中で、1つ以上の算術論理ユニット(arithmetic logic unit(ALU))522及び1つ以上のベクトル実行ユニット524を含んでよい。
【0062】
実行ユニットからの結果は、退避ロジック、つまりリオーダバッファ(reorder buffer(ROB))540に提供されてよい。より詳細には、ROB540は、実行される命令に関連付けられた情報を受信する種々のアレイ及びロジックを含んでよい。この情報は、次に、命令が有効に退避可能か否か、及びプロセッサのアーキテクチャ状態に結果データをコミットできるか否か、又は命令の適正な退避を妨げる1つ以上の例外が生じたか否かを決定するために、ROB540により検査される。もちろん、ROB540は、退避に関連する他の動作を扱ってよい。
【0063】
図5に示すように、ROB540は、キャッシュ550に結合される。キャッシュ550は、一実施形態では、低レベルキャッシュ(例えば、L1キャッシュ)であってよい。しかしながら、本発明の範囲はこれに関して限定されない。また、実行ユニット520は、キャッシュ550に直接結合できる。キャッシュ550から、データ通信は、より上位のキャッシュ、システムメモリ、等と生じてよい。コア500の性能及びエネルギ効率能力は、負荷及び/又はプロセッサ制約に基づき変化してよい。このように、電力制御部(
図5に図示しない)は、ここに記載されるように決定されたサーマル設定点に少なくとも部分的に基づき、プロセッサ500の全体又は一部の適切な構成を動的に決定してよい。
図5の実施形態には上位レベルにより示されるが、本発明の範囲はこれに関して限定されないことが理解される。例えば、
図5の実装はIntel(登録商標)x86命令セットアーキテクチャ(ISA)のようなアウトオブオーダマシンに関連するが、本発明の範囲はこれに関して限定されない。つまり、他の実施形態は、インオーダプロセッサ、ARMに基づくプロセッサのようなRISC(reduced instruction set computing)プロセッサ、又はエミュレーションエンジン及び関連論理回路を介して異なるISAの命令及び動作をエミュレートできる別の種類のISAのプロセッサに実装されてよい。
【0064】
図6を参照すると、別実施形態によるプロセッサコアのマイクロアーキテクチャのブロック図が示される。
図6の実施形態では、コア600は、電力消費を低減するよう設計された比較的限られたパイプライン深さを有するIntel(登録商標)Atom(商標)に基づくプロセッサのような、異なるマイクロアーキテクチャの低電力コアであってよい。図示のように、コア600は、命令デコーダ615に命令を提供するために結合される命令キャッシュ610を含む。ブランチ予測器605は、命令キャッシュ610に結合されてよい。留意すべきことに、命令キャッシュ610は、L2キャッシュ(
図6には説明を容易にするために図示されない)のような別のレベルのキャッシュメモリに更に結合されてよい。また、命令デコーダ615は、復号した命令を、記憶及び所与の実行パイプラインへの配信のために発行キュー620に提供する。マイクロコードROM618は、命令デコーダ615に結合される。
【0065】
浮動小数点パイプライン630は、128、256、又は512ビットのような所与のビットの複数のアーキテクチャレジスタを含み得る浮動小数点レジスタファイル632を含む。パイプライン630は、パイプラインの1つ以上の実行ユニット上で実行するために命令をスケジューリングする浮動小数点スケジューラ634を含む。図示の実施形態では、このような実行ユニットは、ALU635、シャッフルユニット636、及び浮動小数点加算器638を含む、また、これらの実行ユニットで生成された結果は、バッファ及び/又はレジスタファイル632のレジスタに戻されてよい。勿論、これらの幾つかの例示的な実行ユニットにより示されるが、別の実施形態では追加又は異なる浮動小数点実行ユニットが存在してよいことが理解される。
【0066】
整数パイプライン640も提供されてよい。図示の実施形態では、パイプライン640は、128又は256ビットのような所与のビットの複数のアーキテクチャレジスタを含み得る整数レジスタファイル642を含む。パイプライン640は、パイプラインの1つ以上の実行ユニット上で実行するために命令をスケジューリングする整数スケジューラ644を含む。図示の実施形態では、このような実行ユニットは、ALU645、シフタユニット646、及びジャンプ実行ユニット648を含む。また、これらの実行ユニットで生成された結果は、バッファ及び/又はレジスタファイル642のレジスタに戻されてよい。勿論、これらの幾つかの例示的な実行ユニットにより示されるが、別の実施形態では追加又は異なる整数実行ユニットが存在してよいことが理解される。
【0067】
メモリ実行スケジューラ650は、TLB654に結合されるアドレス生成ユニット652において実行のためにメモリ動作をスケジューリングしてよい。理解されるように、これらの構造は、L0及び/又はL1データキャッシュであってよいデータキャッシュ660に結合されてよい。データキャッシュ660は、また、L2キャッシュメモリを含む、キャッシュメモリ階層構造の追加レベルに結合する。
【0068】
アウトオブオーダ実行のサポートを提供するために、退避のためにアウトオブオーダで実行された命令をインオーダに並べ替えるよう構成されるリオーダバッファ680に加えて、アロケータ/リネーマ670が提供されてよい。コア600の性能及びエネルギ効率能力は、負荷及び/又はプロセッサ制約に基づき変化してよいことに留意する。このように、電力制御部(
図6に図示しない)は、ここに記載されるように決定されたサーマル設定点に少なくとも部分的に基づき、プロセッサ500の全体又は一部の適切な構成を動的に決定してよい。
図6の説明では、この特定のパイプラインアーキテクチャにより示されたが、多くの変形及び代替が可能であることが理解される。
【0069】
図5及び6のマイクロアーキテクチャによるような非対称コアを有するプロセッサでは、負荷は、電力管理の理由からコアの間で動的にスワップされてよく、これらのコアは、異なるパイプライン設計及び深さを有するが、同じ又は関連するISAであってよいことに留意する。このような動的コアスワップは、ユーザアプリケーション(及び場合によってはカーネルも)に対して透過的方法で実行されてよい。
【0070】
図7を参照すると、更に別の実施形態によるプロセッサコアのマイクロアーキテクチャのブロック図が示される。
図7に示すように、コア700は、非常に低電力消費レベルで実行する複数段のインオーダパイプラインを含んでよい。1つのこのような例として、プロセッサ700は、ARM Holdings LTD., Sunnyvale、CAから入手可能なARM CortexA53設計に従うマイクロアーキテクチャを有してよい。一実装では、32ビット及び64ビットコードの両方を実行するよう構成される8段パイプラインが、提供されてよい。コア700は、命令をフェッチし、それらを復号ユニット715に提供するよう構成されるフェッチユニット710を含む。復号ユニット715は、命令、例えばARMv8 ISAのような所与のISAのマクロ命令を復号してよい。キュー730は、復号された命令を格納するために、復号ユニット715に結合してよいことに更に留意する。復号された命令は、発行ロジック725に提供され、発行ロジック725では、復号された命令は複数の実行ユニットのうちの所与の1つに発行されてよい。
【0071】
図7を更に参照すると、発行ロジック725は、複数の実行ユニットのうちの1つに命名を発行してよい。図示の実施形態では、これらの実行ユニットは、整数ユニット735、乗算ユニット740、浮動小数点/ベクトルユニット750、デュアル発行ユニット760、及びロード/ストアユニット770を含む。これらの異なる実行ユニットの結果は、書き戻しユニット780に提供されてよい。説明を簡単にするために単一の書き戻しユニットが示されるが、幾つかの実装では、別個の書き戻しユニットが実行ユニットの各々に関連付けられてよいことが理解される。更に、
図7に示されるユニット及びロジックの各々は上位レベルで示されるが、特定の実装はより多くの又は異なる構造を含んでよい。
図7のようなパイプラインを有する1つ以上のコアを用いて設計されたプロセッサは、モバイル装置からサーバシステムまで、多くの異なるエンド製品に実装されてよい。
【0072】
図8を参照すると、更に別の実施形態によるプロセッサコアのマイクロアーキテクチャのブロック図が示される。
図8に示されるように、コア800は、(
図7のコア700より高い電力消費レベルで生じ得る)非常に高い性能レベルで実行する複数段の複数命令のアウトオブオーダ(multi-stage multi-issue out-of-order)パイプラインを含んでよい。1つのこのような例として、プロセッサ800は、AMR CortexA57設計に従うマイクロアーキテクチャを有してよい。一実装では、32ビット及び64ビットコードの両方を実行するよう構成される15(又はそれより多くの)段パイプラインが、提供されてよい。さらに、パイプラインは、3(又はそれより多くの)幅の、及び3(又はそれより多くの)命令動作を提供してよい。コア800は、命令をフェッチしそれらをデコーダ/リネーマ/ディスパッチャ815に提供するよう構成されるフェッチユニット810を含む。デコーダ/リネーマ/ディスパッチャ815は、命令、例えばARMv8命令セットアーキテクチャのマクロ命令を復号し、命令内のレジスタ参照をリネームし、及び命令を(最終的に)選択された実行ユニットにディスパッチしてよい。復号された命令は、キュー825に格納されてよい。留意すべきことに、説明を容易にするために、
図8には単一のキュー構造が示されるが、別個のキューが複数の異なる種類の実行ユニットの各々に提供されてよいことが理解される。
【0073】
図8には、発行ロジック830も示される。発行ロジック830から、キュー825に格納された復号された命令が、選択された実行ユニットへと発行されてよい。発行ロジック830は、特定の実施形態では、発行ロジック830の結合する複数の異なる種類の実行ユニットの各々について、別個の発行ロジックにより実装されてもよい。
【0074】
復号された命令は、複数の実行ユニットのうちの所与の1つへと発行されてよい。図示の実施形態では、これらの実行ユニットは、1つ以上の整数ユニット835、乗算ユニット840、浮動小数点/ベクトルユニット850、ブランチユニット860、及びロード/ストアユニット870を含む。一実施形態では、浮動小数点/ベクトルユニット850は、128又は256ビットのSIMD又はベクトルデータを処理するよう構成されてよい。また更に、浮動小数点/ベクトル実行ユニット850は、IEEE-754倍精度浮動小数点動作を実行してよい。これらの異なる実行ユニットの結果は、書き戻しユニット880に提供されてよい。留意すべきことに、幾つかの実装では、別個の書き戻しユニットは実行ユニットの各々に関連付けられよい。更に、
図8に示されるユニット及びロジックの各々は上位レベルで示されるが、特定の実装はより多くの又は異なる構造を含んでよい。
【0075】
図7及び8のマイクロアーキテクチャによるような非対称コアを有するプロセッサでは、負荷は、電力管理の理由から動的にスワップされてよく、これらのコアは、異なるパイプライン設計及び深さを有するが、同じ又は関連するISAであってよいことに留意する。このような動的コアスワップは、ユーザアプリケーション(及び場合によってはカーネルも)に対して透過的方法で実行されてよい。
【0076】
図5~8のうちの任意の1つ以上におけるようなパイプラインを有する1つ以上のコアを用いて設計されたプロセッサは、モバイル装置からサーバシステムまで、多くの異なるエンド製品に実装されてよい。
図9を参照すると、本発明の別の実施形態によるプロセッサのブロック図が示される。
図9の実施形態では、プロセッサ900は、複数のドメインを含むSoCであってよい。ドメインの各々は、独立した電圧及び動作周波数で動作するよう制御されてよい。特定の説明のための例として、プロセッサ900は、i3、i5、i7、又はIntel Corporationから入手可能な別のこのようなプロセッサのようなIntel(登録商標)Architecture Core(商標)に基づくプロセッサであってよい。しかしながら、Sunnyvale, CAのAdvanced Micro Devices, Inc.(AMD)から入手可能な他の低電力プロセッサ、ARM Holdings, Ltd.又はそれらのライセンシーによるARMに基づく設計、又はSunnyvale, CAのMIPS Technologies, Inc.k又はそれらのライセンシー又は採用者からのMIPSに基づく設計が、他の実施形態では、Apple A7プロセッサ、Qualcomm Snapdragonプロセッサ、又はTexas Instruments OMAPプロセッサのように、代わりに存在してよい。このようなSoCは、スマートフォン、タブレットコンピュータ、ファブレットコンピュータ、Ultrabook(商標)コンピュータ、又は他のポータブルコンピューティング装置、又は車載コンピューティングシステムのような低電力システムで使用されてよい。
【0077】
図9の上位レベル図では、プロセッサ900は、複数のコアユニット910
0~910
nを含む。各コアユニットは、1つ以上のプロセッサコア、1つ以上のキャッシュメモリ、及び他の回路を含んでよい。各コアユニット910は、1つ以上の命令セット(例えば、x86命令セット(より新しいバージョンにより追加された幾つかの拡張を有する))、MIPS命令セット、ARM命令セット(NEONのような任意の追加拡張を有する)、又は他の命令セット、又はそれらの組み合わせをサポートしてよい。コアユニットのうちの幾つかは異種リソース(例えば、異なる設計)であってよい。さらに、各々のこのようなコアは、一実施形態では、共有レベル(L2)キャッシュメモリであってよいキャッシュメモリ(図示しない)に結合されてよい。不揮発性記憶930は、種々のプログラム及び他のデータを格納するために使用されてよい。例えば、この記憶は、マイクロコードの少なくとも部分、BIOSのようなブート情報、他のシステムソフトウェア、及び他の情報を格納するために使用されてよい。実施形態では、不揮発性記憶930は、ファームウェアによる使用のために優先順位付けされてよい、ここに記載のような複数の構成を格納してよい。
【0078】
各コアユニット910は、プロセッサの追加回路への相互接続を可能にするバスインタフェースユニットのようなインタフェースも含んでよい。一実施形態では、各コアユニット910は、1次キャッシュとして動作し得るコヒーレントファブリックをコヒーレントなダイ上の相互接続に結合する。ダイ上の相互接続は、また、メモリ制御部935に結合する。また、メモリ制御部935は、(
図9には説明を容易にするために図示されない)DRAMのようなメモリとの通信を制御する。
【0079】
コアユニットに加えて、追加処理エンジンがプロセッサ内に存在する。これは、グラフィック処理を実行し及び場合によってはグラフィックプロセッサ上の汎用動作(所謂、GPGPU動作)を実行する少なくとも1つのグラフィック処理ユニット(GPU)920を含む。さらに、少なくとも1つの画像信号プロセッサ925が存在してよい。信号プロセッサ925は、SoCの内部又はオフチップにある1つ以上のキャプチャ装置から受信した入力画像データを処理するよう構成されてよい。
【0080】
他のアクセラレータも存在してよい。
図9の説明では、ビデオコーダ950は、ビデオ情報の符号化及び復号を含む符号化動作を実行して、例えば高解像度ビデオコンテンツのためにハードウェア加速サポートを提供してよい。ディスプレイ制御部955は、さらに、システムの内部及び外部ディスプレイのサポートを提供することを含むディスプレイ動作を加速するために提供されてよい。さらに、セキュリティプロセッサ945は、セキュアブート動作、種々の暗号化動作、等のようなセキュリティ動作を実行するために存在してよい。
【0081】
ユニットの各々は、電力マネジャ940を介して制御される、それ自体の電力消費を有してよい。電力マネジャ940は、サーマル点(thermal point)選択に基づく適切な構成の動的決定を含む、ここに記載される種々の電力管理技術を実行する制御ロジックを含んでよい。
【0082】
幾つかの実施形態では、SoC900は、種々の周辺装置が結合されてよいコヒーレントファブリックに結合される非コヒーレントファブリックを更に含んでよい。1つ以上のインタフェース960a~960dは、1つ以上のオフチップ装置と通信可能である。このような通信は、他の種類の通信プロトコルの中でも特に得、PCIe(登録商標)、GPIO、USB、I2C、UART、MIPI、SDIO、DDR、SPI、HDMI(登録商標)のような種々の通信プロトコルを介してよい。
図9の実施形態には上位レベルで示されるが、本発明の範囲はこれに関して限定されないことが理解される。
【0083】
図10を参照すると、代表的SoCのブロック図が示される。図示の実施形態では、SoC1000は、スマートフォン又はタブレットコンピュータのような他の低電力装置、又は他のポータブルコンピューティング装置又は社債コンピューティング装置に組み込むために最適化された低電力動作のために構成されたマルチコアSoCであってよい。一例として、SoC1000は、高電力及び/又は低電力コアの組み合わせのような非対称又は異なる種類のコア、例えばアウトオブオーダコア及びインオーダコア、を用いて実装されてよい。異なる実施形態では、これらのコアは、Intel(登録商標)Architecture(商標)コア設計又はARMアーキテクチャ設計に基づいてよい。更に他の実施形態では、intel及びARMコアの混合は、所与のSoCとして実装されてよい。
【0084】
図10に示すように、SoC1000は、複数の第1コア1012
0~1012
3を有する第1コアドメイン1010を含む。一例では、これらのコアは、ここに記載されるように、インオーダコアのような低電力コアであってよい。一実施形態では、これらの第1コアは、ARM Cortex A53コアとして実装されてよい。また、これらのコアは、コアドメイン1010のキャッシュメモリ1015nに結合する。さらに、SoC1000は、第2コアドメイン1020を含む。
図10の説明では、第2コアドメイン1020は複数の第2コア1022
0~1022
3を有する。一例では、これらのコアは、第1コア1012より高い電力消費コアであってよい。一実施形態では、第2コアは、ARM Cortex A57コアとして実装されてよいアウトオブオーダコアであってよい。また、これらのコアは、コアドメイン1020のキャッシュメモリ1015に結合する。留意すべきことに、
図10に示した例は各ドメインに4個のコアを含むが、他の例では、より多くの又は少数のコアが所与のドメインに存在してよいことが理解される。
【0085】
図10を更に参照すると、例えばコアドメイン1010及び1020の1つ以上のコアにより提供されるグラフィック負荷を独立に実行するよう構成される1つ以上のグラフィック処理ユニット(GPU)を含んでよいグラフィックドメイン1030も提供される。一例として、GPUドメイン1030は、グラフィック及びディスプレイレンダリング動作を提供することに加えて、種々のスクリーンサイズのためのディスプレイサポートを提供するために使用されてよい。
【0086】
図示のように、種々のドメインは、一実施形態では、統合メモリ制御部1050に結合するキャッシュコヒーレント相互接続ファブリックであってよいコヒーレント相互接続1040に結合する。コヒーレント相互接続1040は、幾つかの例では、L3キャッシュのような共有キャッシュメモリを含んでよい。一実施形態では、メモリ制御部1050は、DRAM(説明を容易にするために
図10に図示されない)の複数のチャネルのような、オフチップメモリとの通信の複数のチャネルを提供する直接メモリ制御部であってよい。
【0087】
異なる例では、コアドメインの数は変化してよい。例えば、モバイルコンピューティング装置に組み込むのに適する低電力SoCでは、
図10に示すように限られた数のコアドメインが存在してよい。また更に、このような低電力SoCでは、より高い電力コアを含むコアドメイン1020は、より少数のこのようなコアを有してよい。例えば、一実装では、2個のコア1022が、低減された電力消費レベルでの動作を可能にするために提供されてよい。さらに、異なるコアドメインは、異なるドメイン間の負荷の動的スワップを可能にするために、割り込み制御部にも結合されてよい。
【0088】
更に他の実施形態では、より多数のコアドメイン、及び追加の任意的IPロジックが、存在してよく、ここで、SoCは、デスクトップ、サーバ、高性能コンピューティングシステム、基地局、等のような他のコンピューティング装置に組み込むために、より高い性能(及び電力)レベルへとスケーリングできる。1つのこのような例として、それぞれ所与の数のアウトオブオーダコアを有する4個のコアドメインが提供されてよい。また更に、(一例としてGPGPUの形式を取る)任意的GPUサポートに加えて、特定の機能(例えば、ウェブサービング、ネットワーク処理、スイッチング、等)の最適なハードウェアサポートを提供するために、1つ以上のアクセラレータも提供されてよい。さらに、入力/出力インタフェースは、このようなアクセラレータをオフチップコンポーネントに結合するために存在してよい。
【0089】
図11を参照すると、別の例示的なSoCのブロック図が示される。
図11の実施形態では、SoC1100は、マルチメディアアプリケーション、通信、及び他の機能のために、高性能を可能にするための種々の回路を含んでよい。従って、SoC1100は、スマートフォン、タブレットコンピュータ、スマートTV、車載コンピューティングシステム等のような広範な種類のポータブル及び他の装置への組み込みに適する。図示の例では、SoC1100は、中央処理ユニット(CPU)ドメイン1100を含む。一実施形態では、複数の個々のプロセッサコアは、CPUドメイン1110内に存在してよい。一例として、CPUドメイン1110は、4個のマルチスレッドコアを有するクワッドコアプロセッサであってよい。このようなプロセッサは、同種又は異種プロセッサ、例えば低電力及び高電力プロセッサコアの混合であってよい。
【0090】
また、GPUドメイン1120は、グラフィックを処理し及びAPIを計算するために、1つ以上のGPU内で高度グラフィック処理を実行するために提供される。DSP1130は、マルチメディア命令の実行中に生じ得る高度な計算に加えて、音楽再生、オーディオ/ビデオ等のような低電力マルチメディアアプリケーションを処理する1つ以上の低電力DSPを提供してよい。また、通信ユニット1140は、セルラ通信(3G/4G LTEを含む)、Bluetooth(登録商標)、IEEE802.11等のような無線ローカルエリアプロトコル種々の無線プロトコルを介して接続を提供する種々のコンポーネントを含んでよい。
【0091】
また更に、マルチメディアプロセッサ1150は、ユーザジェスチャの処理を含む、高解像度ビデオ及びオーディオコンテンツのキャプチャ及び再生を実行するために使用されてよい。センサユニット1160は、複数のセンサ及び/又は所与のプラットフォーム内に存在する種々のオフチップセンサとインタフェースするセンサ制御部を含んでよい。画像信号プロセッサ1170は、静止及びビデオカメラを含むプラットフォームの1つ以上のカメラからのキャプチャされたコンテンツに関して画像処理を実行するために、1つ以上の別個のISPと共に提供されてよい。
【0092】
ディスプレイプロセッサ1180は、このようなディスプレイ上での再生のためにコンテンツを無線通信する能力を含む、所与のピクセル密度の高解像度ディスプレイへの接続のサポートを提供してよい。また更に、位置ユニット1190は、GPS受信機を用いて取得される高度に正確な位置決め情報をアプリケーションに提供するために、複数のGPS衛星をサポートするGPS受信機を含んでよい。
図11の例では、この特定のコンポーネントセットにより示されたが、多くの変形及び代替が可能であることが理解される。
【0093】
図12は、実施形態が使用可能な例示的なシステムのブロック図を示す。図示のように、システム1200は、スマートフォン又は他の無線通信機であってよい。ベースバンドプロセッサ1205は、システムから送信されるべき、又はシステムにより受信された通信信号に関する種々の信号処理を実行するよう構成される。また、ベースバンドプロセッサ1205は、多くの良く知られたソーシャルメディア及びマルチメディアアプリのようなユーザアプリケーションに加えて、OS及び他のシステムソフトウェアを実行するために、システムのメインCPUであってよいアプリケーションプロセッサ1210に結合される。アプリケーションプロセッサ1210は、ここに記載されるような電力制御部及びスロットル回路を含んでよく、装置のための種々の他のコンピューティング動作を実行するよう更に構成されてよい。
【0094】
また、アプリケーションプロセッサ1210は、ユーザインタフェース/ディスプレイ1220、例えばタッチスクリーンディスプレイに結合できる。更に、アプリケーションプロセッサ1210は、不揮発性メモリ、つまりフラッシュメモリ1230を含むメモリシステム、及びシステムメモリ、つまりDRAM(dynamic random access memory)1235に結合してよい。更に図示のように、アプリケーションプロセッサ1210は、ビデオ及び/又は静止画を記録できる1つ以上の画像キャプチャ装置のようなキャプチャ装置1240に結合する。
【0095】
続けて
図12を参照すると、加入者識別モジュールを含むUICC(universal integrated circuit card)1240及び場合によってはセキュアストレージ及び暗号プロセッサもアプリケーションプロセッサ1210に結合される。システム1200は、アプリケーションプロセッサ1210に結合してよいセキュリティプロセッサ1250を更に含んでよい。複数のセンサ1225は、加速度計及び他の環境情報のような種々の検知情報の入力を可能にするアプリケーションプロセッサ1210に結合してよい。オーディオ出力装置1295は、例えば音声通信、オーディオデータの再生又はストリーミング、等の形式で、音声を出力するインタフェースを提供してよい。
【0096】
更に図示のように、NFC(near field communication)アンテナ1265を介してNFC近距離で通信するNFC非接触型インタフェース1260が提供される。
図12には別個のアンテナが示されるが、幾つかの実装では、種々の無線機能を可能にするために、1つのアンテナ又は異なるアンテナセットが提供されてよいことが理解される。
【0097】
電力管理集積回路(power management integrated circuit (PMIC))1215は、プラットフォームレベル電力管理を実行するために、アプリケーションプロセッサ1210に結合する。この目的のために、PMIC1215は、必要に応じて特定の低電力状態に入るために、アプリケーションプロセッサ1210に電力管理要求を発行してよい。更に、プラットフォーム制約に基づき、PMIC1215は、システム1200の他のコンポーネントの電力レベルも制御してよい。また更に、ここで説明されるように、PMIC1215は、所与のプラットフォームイベントに応答して、スロットル信号をアプリケーションプロセッサ1210へ送信してよい。
【0098】
通信を送信させ、及び受信させるために、種々の回路が、ベースバンドプロセッサ1205とアンテナ1290との間に結合されてよい。具体的に、無線周波数(radio frequency(RF))トランシーバ1270及び無線ローカルエリアネットワーク(wireless local area network(WLAN))トランシーバ1275が存在してよい。通常、RFトランシーバ1270は、CDMA(code division multiple access)、GSM(global system for mobile communication)、LTE(long term evolution)又は他のプロトコルに従うような、3G又は4G無線通信プロトコルのような所与の無線通信プロトコルに従い無線データ及び呼を受信及び送信するために使用されてよい。更に、GPSセンサ1280が存在してよい。無線信号、例えばAM/FM及び他の信号の受信又は送信のような他の無線通信も提供されてよい。更に、WLANトランシーバ1275を介して、ローカル無線通信も実現可能である。
【0099】
図13は、実施形態が使用可能な別の例示的なシステムのブロック図を示す。
図13の図では、システム1300は、タブレットコンピュータ、2:1タブレット、ファブレット、又は他のコンバーチブル又は独立型タブレットシステムのようなモバイル低電力システムであってよい。図示のように、SoC1310が存在し、装置のアプリケーションプロセッサとして動作するよう構成されてよく、ここに記載するような電力制御部及びスロットル回路を含んでよい。
【0100】
種々の装置がSoC1310に結合してよい。示される図では、メモリサブシステムは、SoC1310に結合されるフラッシュメモリ1340及びDRAM1345を含む。更に、タッチパネル1320は、SoC1310に結合されて、タッチパネル1320のディスプレイ上の仮想キーボードの提供を含む、ディスプレイ能力及び接触によるユーザインプットを提供する。有線ネットワーク接続を提供するために、SoC1310は、Ethernetインタフェース1330に結合する。周辺ハブ1325は、SoC1310に結合されて、種々のポート又は他のコネクタのうちの任意のものによりシステム1300に結合されてよい種々の周辺装置とのインタフェースを可能にする。
【0101】
SoC1310内の内部電力制御回路及び機能に加えて、PMIC1380がSoC1310に結合されて、プラットフォームに基づく電力管理を、例えばシステムがバッテリ1390又はACアダプタ1395を介してAC電源により電力供給されるかに基づき、提供する。この電源に基づく電力管理に加えて、PMIC1380は、環境及び使用条件に基づきプラットフォーム電力管理活動を更に実行してよい。また更に、PMIC1380は、制御及び状態情報をSoC1310へ通信して、SoC1310内の種々の電力管理動作を生じてよい。また更に、ここで説明されるように、PMIC1380は、所与のプラットフォームイベントに応答して、スロットル信号をSoC1310へ送信してよい。
【0102】
続けて
図13を参照すると、無線能力を提供するために、WLANユニット1350がSoC1310に結合され、またアンテナ1355に結合される。種々の実装では、WLANユニット1350は、1つ以上の無線プロトコルに従い通信を提供してよい。
【0103】
更に図示のように、複数のセンサ1360がSoC1310に結合してよい。これらのセンサは、種々の加速度計、環境及びユーザジェスチャセンサを含む他のセンサを含んでよい。最後に、オーディオコーデック1365は、オーディオ出力装置1370へのインタフェースを提供するためにSoC1310に結合される。勿論、
図13の例では、この特定の実装により示されたが、多くの変形及び代替が可能であることが理解される。
【0104】
図14を参照すると、ノートブック、Ultrabook(登録商標)、又は他の小型形状システムのような代表的コンピュータシステムのブロック図が示される。プロセッサ1410は、一実施形態では、マイクロプロセッサ、マルチコアプロセッサ、マルチスレッドプロセッサ、超低電圧プロセッサ、埋め込み型プロセッサ、又は他の知られている処理要素を含む。図示の実装では、プロセッサ1410は、メイン処理ユニット、及びシステム1400の種々のコンポーネントのうちの多数と通信するための中央ハブとして動作する。一例として、プロセッサ1400は、SoCとして実装され、ここに記載するような電力制御部及びスロットル回路を含んでよい。
【0105】
プロセッサ1410は、一実施形態では、システムメモリ1415と通信する。説明のための例として、システムメモリ1415は、所与の量のシステムメモリを提供するために、複数のメモリ装置又はモジュールにより実装される。
【0106】
データ、アプリケーション、1つ以上のオペレーティングシステム、等のような情報の永久記憶のために、大容量記憶1420もプロセッサ1410に結合されてよい。種々の実施形態では、システム応答性を向上し、並びに薄型及び軽量型システム設計を可能にするために、この大容量記憶は、SSDにより実装されてよい。或いは、大容量記憶は、SSDキャッシュとして動作する少ない容量のSSD記憶と共に、主にHDD(hard disk drive)を用いて実装されてよく、電力低下イベントの間のコンテキスト状態及び他のこのような情報の不揮発性記憶を可能にする。その結果、システム活動の再開において高速な起動が生じ得る。また、
図14に示すように、フラッシュ装置1422は、プロセッサ1410に、例えばSPI(serial peripheral interface)を介して結合されてよい。このフラッシュ装置は、BIOS(basic input/output software)及びシステムの他のファームウェアを含むシステムソフトウェアの不揮発性記憶を提供してよい。
【0107】
種々の入力/出力(I/O)装置がシステム1400内に存在してよい。具体的に、
図14の実施形態には、タッチスクリーン1425を更に提供する高解像度LCD又はLEDパネルであってよいディスプレイ1424が示される。一実施形態では、ディスプレイ1424は、プロセッサ1410に、高性能グラフィック相互接続として実装され得るディスプレイ相互接続を介して結合されてよい。タッチスクリーン1425は、プロセッサ1410に、一実施形態ではI2C相互接続であってよい別の相互接続を介して結合されてよい。更に
図14に示されるように、タッチスクリーン1425に加えて、接触(タッチ)によるユーザ入力は、タッチパッド1430を介しても生じ得る。タッチパッド1430は、筐体内に構成されてよく、タッチスクリーン1425と同じI2C相互接続に結合されてよい。
【0108】
知覚コンピューティング及び他の目的で、種々のセンサがシステム内に存在してよく、異なる方法でプロセッサ1410に結合されてよい。特定の内部及び環境センサは、プロセッサ1410に、センサハブ1440を通じて、例えばI2C相互接続を介して結合してよい。
図14に示す実施形態では、これあのセンサは、加速度計1441、環境光センサ(ambient light sensor(ALS))1442、コンパス1443、及びジャイロスコープ1444を含んでよい。他の環境センサは、幾つかの実施形態ではプロセッサ1410にシステム管理バス(system management bus(SMBus))を介して結合される1つ以上の熱センサ1446を含んでよい。
【0109】
また、
図14で、種々の周辺装置は、プロセッサ1410に、少数ピン(low pin count(LPC))相互接続を介して結合してよい。図示の実施形態では、種々のコンポーネントは、埋め込み型制御部1435を通じて結合できる。このようなコンポーネントは、キーボード1436(例えば、PS2インタフェースを介して結合される)、ファン1437、及び熱センサ1439を含み得る。幾つかの実施形態では、タッチパッド1430は、PS2インタフェースを介してEC1435にも結合してよい。更に、信頼できるプラットフォームモジュール(trusted platform module(TPM))1438のようなセキュリティプロセッサも、プロセッサ1410に、このLPC相互接続を介して結合してよい。
【0110】
システム1400は、無線を含む種々の方法で外部装置と通信できる。
図14に示す実施形態では、種々の無線モジュールが存在し、その各々が、特定の無線通信プロトコルのために構成される無線に対応し得る。近距離のような短距離の無線通信のための1つの方法は、NFCユニット1445を介してよい。NFCユニット1445は、一実施形態では、プロセッサ1410とSMBusを介して通信してよい。このNFCユニット1445を介して、互いに近い近傍にある装置が通信できることに留意する。
【0111】
図14で更に分かるように、追加無線ユニットは、WLANユニット1450及びBluetoothユニット1452を含む他の短距離無線エンジンを含み得る。WLANユニット1450を用いて、Wi-Fi(登録商標)通信が実現でき、一方で、Bluetoothユニット1452を介して、短距離Bluetooth(登録商標)通信が生じ得る。これらのユニットは、プロセッサ1410と所与のリンクを介して通信してよい。
【0112】
更に、例えばセルラ又は他の無線広域プロトコルに従う無線広域通信は、WWANユニット1456を介して生じ得る。WWANユニット1456は、また、SIM(subscriber identity module)1457に結合してよい。更に、位置情報の受信及び使用を可能にするために、GPSモジュール1455も存在してよい。留意すべきことに、
図14に示す実施形態では、WWANユニット1456及びカメラモジュール1454のような統合キャプチャ装置は、所与のリンクを介して通信してよい。
【0113】
統合カメラモジュール1454は、リッド(lid)内に組み込むことができる。オーディオ入力及び出力を提供するために、オーディオプロセッサは、デジタル信号プロセッサ(DSP)1460により実装できる。DSP1460は、プロセッサ1410に、高解像度オーディオ(high definition audio(HDA))リンクを介して結合してよい。同様に、DSP1460は、筐体内に実装されてよい出力スピーカ1463に結合してよい統合コーダ/デコーダ(CODEC)及び増幅器1462と通信してよい。同様に、増幅器及びCODEC1462は、マイクロフォン1465からオーディオ入力を受信するために結合できる。マイクロフォン1465は、一実施形態では、(デジタルマイクロフォンアレイのような)デュアルアレイマイクロフォンにより実装でき、高品質オーディオ入力を提供して、システム内の種々の動作の音声起動制御を可能にする。また、オーディオ出力は、増幅器/CODEC1462からヘッドフォンジャック1464に提供できることに留意する。
図14の実施形態はこれらの特定のコンポーネントと共に示されるが、本発明の範囲はこれに関して限定されないことが理解される。
【0114】
実施形態は、多くの異なるシステムタイプに実装されてよい。
図15を参照すると、本発明の一実施形態によるシステムのブロック図が示される。
図15に示すように、マルチプロセッサシステム1500は、ポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続1550を介して結合される第1プロセッサ1570及び第2プロセッサ1580を含む。
図15に示すように、プロセッサ1570及び1580の各々は、第1プロセッサコア及び第2プロセッサコア(つまり、プロセッサコア1574a及び1574b、並びにプロセッサコア1584a及び1584b)を含むマルチメディアプロセッサであってよいが、場合によっては、より多くのコアがプロセッサ内に存在してよい。プロセッサの各々は、PCU1575、1585、又は他の電力管理ロジック、及びスロットル回路1577、1587を含み得る。
【0115】
更に
図15を参照すると、第1プロセッサ1570は、メモリ制御ハブ(memory controller hub(MCH))1572、及びポイントツーポイント(P-P)インタフェース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を含む。
【0116】
更に、チップセット1590は、P-P相互接続1539によりチップセット1590を高性能グラフィックエンジン1538に結合するインタフェース1592を含む。また、チップセット1590は、インタフェース1596を介して第1バス1516に結合されてよい。
図15に示すように、種々の入力/出力(I/O)装置1514は、第1バス1516を第2バス1520に結合するバスブリッジ1518と一緒に、第1バス1516に結合されてよい。種々の装置は、一実施形態では、例えば、キーボード/マウス1522、通信装置1526、及びコード1530を含み得るディスクドライブ又は他の大容量記憶装置のようなデータ記憶ユニット1528を含む、第2バス1520に結合されてよい。更に、オーディオI/O1524は、第2バス1520に結合されてよい。実施形態は、スマートセルラ電話機、タブレットコンピュータ、ネットブック、Ultrabook(登録商標)、等のようなモバイル装置を含む他の種類のシステムに組み込むことができる。
【0117】
図16を参照すると、一実施形態によるシステムのブロック図が示される。より具体的には、
図16には、携帯電話機、タブレットコンピュータ、ラップトップコンピュータ等のような小型ポータブル装置から、デスクトップシステム、サーバコンピュータ等のようなより大きなシステムにまで及ぶ任意の種類のコンピューティングシステムであってよいシステム1600の一部が示される。ここで標準的な環境の実施形態では、コンピューティングシステムは、少なくとも時にはバッテリに基づく電源により電力を供給されてよい。その結果、プラットフォーム電気障害が起こり得る。本発明の範囲はこれに関して限定されないが、このような電気障害は、電圧レギュレータの低電圧ロックアウトレベルを下回るバッテリ電圧低下が含まれることがある。別の例は、バッテリ短絡回路保護障害であってよい。プラットフォームイベントは、AC電源で生じ得る。例えば、ACアダプタは、過電流及び短絡回路保護メカニズムも有する。1つには、ACアダプタは、特定の閾値に達すると出力電流を制限し、電圧を低下させる。電圧が特定の閾値を下回ると、ACアダプタはオフになる。復旧するために、ACアダプタは、標準的には、壁からプラグを外される。更に、プログラマブル電源は、標準的には、負荷が閾電流より多くを引き出すと、電源に電流を制限するよう要求し、電圧が閾電圧を下回るとオフになる。このような電気障害を防ぐために、電力管理集積回路(power management integrated circuit(PMIC))のようなプラットフォームエージェントは、通知を発行してよい。プラットフォームイベントのこの通知は、電気障害のような起こり得る不利なプラットフォームイベントの検出に応答して、プラットフォームイベント信号のトリガとして効力があってよい。ここに記載するように、このプラットフォームイベント信号は、プロセッサ内のスロットルを生じるために使用されてよい。
【0118】
具体的には、
図16に示すように、システム1600は、マルチコアプロセッサ又は他のSoCであってよいプロセッサ1610を含む。ここで実施形態では、プロセッサ1610は、プロセッサパッケージとして実装されてよく、1つ以上の半導体ダイを含んでよい。図示のように、プロセッサ1610は、複数の処理要素1620
1~1620
nを含む。幾つかの例では、処理要素1620は、同種の処理コアのような同種処理要素であってよい。しかしながら、多くの実施形態では、コア、グラフィックプロセッサ、制御部、専用機能ユニット、等を含む異種処理要素1620が存在してよい。幾つかの例では、処理要素1620の集合は、共通の又は独立した性能状態で動作し得る、所謂、ドメインにグループ化されてよい。
【0119】
更に
図16に示すように、プロセッサ1610は、スロットル回路1630も含む。図示の実施形態では、スロットル回路1630は、複数の個別スロットルエージェント1630
1~1630
nを含んでよい。図示のように、スロットル回路1630は、対応する処理要素1620に関連付けられた各スロットルエージェント1630を有する分散型ハードウェア回路であってよい。しかしながら、本発明の範囲はこれに関して限定されず、他の実施形態では、1:1以外の対応が可能であることが理解される。実施形態では、スロットル回路1630及びその構成要素であるスロットルエージェント1630
1~1630
nは、ハードウェア回路として実装されてよい。さらに、
図16に示す実装では、各スロットル回路1630は、対応する処理要素1620に関連付けられるが、それとは別個で有り、幾つかの例では、所与のスロットルエージェントは、対応する処理要素1620の中に含まれてよい。
【0120】
続けて
図16を参照すると、電力目標エージェント(power target agent(PTA))1640、電力管理エージェント(power management agent(PMA))1650、及び使用モニタ1660が更に示される。プロセッサ1610に関して外部コンポーネントとして示されるが、幾つかの実施形態では、PTA1640、PMA1650、及び使用モニタ1660は、プロセッサ1610の1つ以上の処理エンジン1620上で実行するファームウェア及び/又はソフトウェアで少なくとも部分的に実装されてよい。例えば、PTA1640は、オペレーティングシステム又は他のシステムスケジューラの中に実装されてよい。従って、PTA1640は、電源能力(例えば、充電能力)の状態に関する情報を受信する。また、PMA1650は、幾つかの実施形態では、ファームウェア又は電力管理マイクロコードであってよく、処理要素1620のうちの1つ以上で実行してよい。一例として、専用コア又はマイクロコントローラはプロセッサ1610の電力消費を管理するために、PMA1650を実行するために使用される。そして、使用モニタ1660も、オペレーティングシステム又は他のシステムスケジューラの中に実装されてよく、ユーザ動作をモニタし、PMA1650にヒント情報を提供する。使用モニタ1660は、電力(バッテリ実行時)及び性能のプロセッサ利用率を最適化してよい。留意すべきことに、一実施形態では、使用モニタ1660は、電力目標エージェント1640に、纏められて(bundled)よいが、これらの2つのエージェントは異なる機能を実行する。
【0121】
更に
図16に示すように、システム1600は、プラットフォームモニタ1670を更に含む。プラットフォームモニタ1670は、プラットフォームイベントをモニタし、スロットルをトリガすべきプラットフォームイベントの検出に応答して、スロットル信号をアサートするよう構成されてよい。一例として、プラットフォームモニタ1670は、臨界電圧レールを閾値と比較するハードウェア回路を含んでよい。このようなレール電圧が閾値を下回ると、プラットフォームモニタ1670は、スロットル信号を出力するよう構成されてよい。勿論、異なる実装が可能であるが、一実施形態では、プラットフォームモニタ1670は、電力管理集積回路(power management integrated circuit(PMIC))、充電制御部、又は他のプラットフォームハードウェアコンポーネントとして実装されてよい。
【0122】
通常動作中、PTA1640は、入力電力能力情報を受信し、それに少なくとも部分的に基づき、プラットフォームイベント中にプロセッサ1610に許可される最大電力消費レベルであるパッケージスロットル電力閾値又は目標を決定してよい。留意すべきことに、このパッケージスロットル電力目標は、プロセッサの所与の電力目標又は電力量より少なくてよい。幾つかの例では、プロセッサは、複数の電力レベルにより構成されてよい。このような電力レベルは、1つ以上の低い、長期間の電力量又は限度を含んでよい(平均して、プロセッサはこれを超えない)。プロセッサは、より高い、長期間の電力量を超えてよい瞬間電力量により更に構成されてよい。幾つかの実施形態では、各構成された電力量は、関連するスロットル電力目標も有してよいことが理解される。
【0123】
入力電力能力情報、又はプラットフォーム装置上の高負荷の別の通知のような他のプラットフォーム情報から、PTA1640は、システム1600のバッテリ電源の利用可能充電量に少なくとも部分的に基づき、パッケージスロットル電力閾値を決定してよい。別の通知の一例として、モデムが遠方の基地局へ送信するために高電力スパイクで動作すべきとき、モデムは、プロセッサを瞬間的にスロットルして信号をアサートしてよい。留意すべきことに、実施形態では、電力目標エージェント1640が更新イベントの入力電力状態をモニタし、その間、プラットフォームは、AC電源により電力供給されている。また更に、モニタした電力状態に少なくとも部分的に基づき、PTA1640は、パッケージスロットル電力目標を先取り的に(proactively)設定してよい。PTA1640は、パッケージスロットル電力目標を、スロットル回路1630のスロットルエージェントへ送信してよい。
【0124】
また、電力管理エージェント1650は、使用モニタ1660により提供されるヒント情報に少なくとも部分的に基づき、変換情報を生成して、スロットルエージェントがパッケージスロットル電力閾値を処理要素スロットル電力閾値又は目標に変換できるようにしてよい。一例として、ヒント情報は、異なる種類の処理要素1620で実行されている負荷に関する優先度ヒントに対応してよい。一実施形態では、ヒント情報は、電力管理エージェント1650がプロセッサ1610に適するパラメータを選択するための数値である。このようなヒント情報は、抽象概念であってよい。その結果、OS又は使用モニタ1660は、特定のプロセッサ(その役割は電力管理エージェント1650により行われる)に結びつけられない。一実施形態では、使用モニタ1660は、ユーザ動作をモニタし、ヒント情報を分子(numerator)として提供するよう構成されてよい。例えば、2つの異なる種類のユーザ活動、つまりファイルコピーとゲーム活動を想定する。この構成では、ユーザモニタ1660は、ファイルコピー活動の第1ヒント値(Hint-1)及びゲーム活動の第2ヒント値(Hint-2)を有するヒント情報を出力してよい。このヒント情報に少なくとも部分的に基づき、PMA1650は、変換情報を、例えば制御信号の形式で、対応するスロットル回路1630に提供してよい。電力管理エージェント1650は、この特定のヒント情報に応答して、「Hint-1」が受信された場合には、スロットルエージェント16301の変換比を10%に設定し、スロットルエージェント16302の変換比を90%に設定し、「Hint-2」が受信された場合には、スロットルエージェント16301の変換比を50%に設定し、スロットルエージェント16302の変換比を50%に設定してよい。また、各スロットルエージェント1630は、この変換情報及びパッケージスロットル電力閾値を用いて、1つ以上の関連する処理要素1620の適切なスロットル動作点を決定する。
【0125】
留意すべきことに、パッケージスロットル電力目標及び個別処理要素スロットル電力目標を設定する上述の動作は、通常動作の間に、例えば所与の時間期間又は実行ループに従い、先取り的に生じてよい。次に、動作中、プロセッサスロットルをトリガすべき所与のプラットフォームイベントが検出されると、個々の処理要素1620をスロットルするための高速で低遅延の、ハードウェアに基づく動作が生じる。つまり、プラットフォームモニタ1670は、AC電源からバッテリ電源への動作電力の切り替えのような、プラットフォーム内の変化を識別すると、プラットフォームイベントが生じたことを示すために、スロットル信号をスロットル回路1630へ送信する。そして、このスロットル信号に応答して、個々のスロットルエージェント1630は、直ちに対応する処理要素16620に、対応するスロットル動作点より上で動作しないようにさせ、低遅延スロットルを可能にする。
図16の実施形態では、上位レベルで示されたが、多くの変形及び代替が可能であることが理解される。
【0126】
図17を参照すると、本発明の一実施形態による方法のフロー図が示される。より具体的には、方法1700は、ユーザモニタによりユーザ活動をモニタするとともに、一実施形態による電力管理エージェントによりプラットフォーム電力消費を制御する方法である。従って、方法1700は、ハードウェア回路、ソフトウェア、ファームウェア及び/又はそれらの組み合わせにより実行されてよい。特定の実施形態では、電力目標エージェント及び使用モニタは、少なくとも部分的にソフトウェアとして実装されてよく、ある特定の実施形態では、エージェントは、オペレーティングシステム又は他の管理ソフトウェア内に含まれてよい。
【0127】
図示のように、方法1700は、入力電源能力変化の通知を受信することにより開始する(ブロック1710)。入力電源能力変化は、バッテリ能力又はAC電源状態であり得る。バッテリ能力は、バッテリの充電状態、温度、又は経年劣化の影響により変化してよい。AC電源は、プラグインされたポートの数に依存して提供電力(advertised power)の変化するUSB電力供給ハブであってよい。このような入力電力能力変化の指示は、PMIC、バッテリ残量ゲージ、USB電力供給制御部、バッテリ充電回路、電圧レギュレータ、等のような1つ以上のプラットフォームエンティティから、プラットフォーム目標エージェントに提供されるルーチン通知であってよい。例えば、バッテリ能力(例えば、充電割合)の周期的通知が提供されてよい。或いは、他の例では、電力目標エージェントは、この情報をルーチン的にポーリングしてよい。
【0128】
任意のイベントにおいて、制御はブロック1710からブロック1720へ渡り、ブロック1720で、パッケージスロットル電力目標が、この能力変化に少なくとも部分的に基づき設定されてよい。より具体的には、ここに記載されるように、バッテリの充電能力に少なくとも部分的に基づくピーク電力閾値が設定され得る。1つの代表的な例として、プラットフォームがバッテリにより電力を供給されるとき、電力目標エージェントは、パッケージスロットル電力目標を、バッテリが80%充電を有するとき50ワット(W)のレベルに、バッテリが20%充電を有するとき30Wに、設定してよい。留意すべきことに、プラットフォームはAC電源により供給されている間、電力目標エージェントは、パッケージスロットル電力目標を、バッテリが80%充電を有するとき50Wに設定し又はプログラミングし、バッテリが20%充電を有するとき30Wにプログラミングするよう構成されてよい(上述の代表例による)。ブロック1730で、このパッケージスロットル電力目標は、構成記憶に格納されてよい。例えば、この情報は、プロセッサの構成レジスタのスロットル電力閾値フィールドに格納されてよい。更に、電力管理エージェントは、このパッケージスロットル電力目標をスロットルエージェントへ送信してよい。
【0129】
電力目標エージェント(又はオペレーティングシステムの別の部分又は他のシステムソフトウェア)は、スケジューリング活動も実行してよい。従って、
図17に更に示されるように、ブロック1740で、電力目標エージェントは、処理要素に負荷をスケジューリングしてよい。例えば、計算集約型の負荷はコア処理要素にスケジューリングされてよく、グラフィック集約型の負荷はグラフィック処理要素にスケジューリングされてよく、ネットワーク負荷はインタフェース制御部にスケジューリングされてよい、等である。ブロック1750で、使用モニタは、ヒント情報を電力管理エージェントに提供してよい。より具体的には、このヒント情報は、異なる種類の処理要素にスケジューリングされている負荷に関する優先度情報に関連してよい。例えば、計算集約型の負荷に対して、コア処理要素は、より高い優先度を有してよく、従って、このヒント情報は同様に示してよい。また、グラフィック集約型の負荷に対して、グラフィック処理要素は、より高い優先度を有してよく、従って、この例では、これらの処理要素の対応するより高い優先度のヒント情報が提供されてよい。本発明の範囲はこれに関して限定されず、一実施形態では、このヒント情報は変換比、等の形式であってよい。
図17の実施形態では、上位レベルで示されたが、多くの変形及び代替が可能であることが理解される。
【0130】
図18を参照すると、本発明の別の実施形態による方法のフロー図が示される。より具体的には、
図18に示すように、方法1800は、ここに記載されるような電力管理エージェントにより、プロセッサ内の電力消費を制御する方法である。従って、方法1800は、ハードウェア回路、ソフトウェア、ファームウェア及び/又はそれらの組み合わせにより実行されてよい。特定の実施形態では、電力管理エージェントは、少なくとも部分的にハードウェア回路及びファームウェアにより実装されてよく、1つの特定の実施形態では、電力管理エージェントは、電力管理コードを実行する専用コア又はマイクロコントローラのような専用処理要素であってよい。
【0131】
図示のように、方法1800は、電力量及び負荷に少なくとも部分的に基づき、各処理要素の動作点を決定するステップにより開始する(ブロック1810)。例えば、プロセッサが、プロセッサの動作し得る(及びプロセッサの構成記憶に格納されてよい)TDPレベル又は他の長期間電力レベルのような所与の電力量により構成されると仮定する。また、電力管理エージェントは、異なる処理要素上で実行されるべき負荷に関する情報を有してよい。従って、一実施形態では、電力管理エージェントは、電力及び性能の所望の組み合わせを供給するための、ホストソフトウェアからの要求に少なくとも部分的に基づき、各処理要素の動作点を決定するよう構成されてよい。従って、電力管理エージェントは、処理要素の各々へのこの合計電力量の割り当て又は予算計上を実行してよい。例えば、全ての処理要素が等しい負荷を実行するとき、処理要素の各々に対して共通動作点が決定されてよい。代わりに、より標準的なシナリオでは、幾つかの処理要素は、他の処理要素よりも、高い負荷を有してよく、及び/又は高い電力を消費してよい。従って、非対称動作点(例えば、他の可能性のあるパラメータの中でも特に、動作電圧及び動作周波数でそれぞれ構成される)が、各処理要素について決定されてよい。その後、ブロック1820で、これらの動作点は、個々の処理要素へ送信されてよい。この動作点情報に応答して、処理要素は、このような動作点で動作させられる。ブロック1810及び1820のこれらの動作は、プラットフォームの通常動作中に繰り返し行われてよいことが理解される。
【0132】
また、
図18を参照すると、菱形1830で、ヒント情報が(例えば、使用モニタから)受信されたか否かが決定される。このようなヒント情報が受信されていないと決定された場合、制御は次に菱形1840へ渡り、更新期間が終了したか否かを決定する。この更新期間は、電力管理エージェントが電力量及び現在負荷を分析して、動作点を更新すべきか否かを決定し得る期間である。この更新期間が終了すると、制御は上述のブロック1810に戻る。
【0133】
また、
図18を参照すると、代わりに、更新されたヒント情報が受信されたと決定された場合、制御はブロック1850へ渡る。ブロック1850で、変換が決定されてよい。より具体的には、この変換は、パッケージスロットル電力目標を取り入れ、それを異なる処理要素の間で適切に割り当てる何らかの形式の動作である。実施形態では、電力管理エージェントは、この変換を、使用モニタから受信したヒント情報に少なくとも部分的に基づき実行してよい。このように、利用可能な電力量を異なる処理要素に、それらの優先度、臨界、ユーザ有益性、等に基づき、より公平に割り当てることが生じ得る。
【0134】
一実施形態では、パッケージから要素へのスロットル電力の変換は、倍率を用いてよい。1つのこのような例では、プロセッサは、2つの処理要素(コア及びグラフィックプロセッサ)を含むと仮定し、また、パッケージスロットル電力閾値が50Wであると仮定する。更に、例示的目的で、負荷がコア集約型であるとき(例えば、ホストソフトウェアがファイルをコピーする)、電力管理エージェントは、コアに対して90%及びグラフィックプロセッサに対して10%の比を設定するために、変換情報を生成する。この比又は倍率の構成によると、処理要素の結果として生じる電力量は、コアについて45W及びグラフィックプロセッサについて5Wのレベルに対応する。代わりに、負荷(例えば、ホストソフトウェアが画像をレンダリングする)が、電力管理エージェントがコアに対して20%及びグラフィックプロセッサに対して80%の比を設定するものであると仮定する。この比又は倍率の構成によると、処理要素の結果として生じる電力量は、コアについて10W及びグラフィックプロセッサについて40Wのレベルに対応する。
【0135】
留意すべきことに、各スロットルエージェントにより動的に計算される予算計上を定めるために電力管理エージェントが変換情報を提供できるようにするために、実施形態は異なる技術を使用してよい。従って、この変換を実行する異なる方法が可能であるが、幾つかの例では、割り当ては、処理要素の各々に関連付けられた比情報に従い生じてよい。或いは、電力管理エージェントにより実行された変換動作に基づき、ポインタ情報が提供されてよい。また、ポインタ情報は、動作点情報を含むテーブルへのアクセスを可能にするために使用される。一例では、変換情報が比情報を含み、各処理要素に対する比の値(例えば、計数)の設定は、使用モニタから受信したヒント情報に少なくとも部分的に基づいてよい。最後に、
図18を更に参照すると、制御は、ブロック1860に渡り、変換情報がスロットルエージェントへ送信されてよい。
図18の実施形態では、上位レベルで示されたが、多くの変形及び代替が可能である。
【0136】
図19を参照すると、本発明の更に別の実施形態による方法のフロー図が示される。より具体的には、方法1900は、一実施形態に従い、スロットルエージェントを用いて処理要素電力スロットル限界を設定する方法である。従って、方法1900は、ハードウェア回路、ソフトウェア、ファームウェア及び/又はそれらの組み合わせにより実行されてよい。特定の実施形態では、方法1900を実行するために1つ以上のハードウェア回路が提供されてよい(例えば、それぞれが少なくとも1つの処理要素に関連付けられる複数の個別ハードウェア回路を有する分散型スロットル回路)。留意すべきことに、方法1900は、個々のプラットフォーム要素スロットル電力目標を設定するために使用され、この目標設定が非決定的方法で実行され得るとき、このような動作は実際のスロットル動作の低遅延起動に影響を与えないので、所謂スローループに従い実行されてよい。
【0137】
図19に示すように、方法1900は、電力目標エージェントからパッケージスロットル電力目標を、電力目標エージェントから変換情報を受信することにより開始する(ブロック1910)。
図19には単一の動作が示されるが、これらの2つの異なる値は、非同期的に(2つの異なるエンティティから)、所与の時間期間に従い、受信されてよいことが理解される。任意のイベントにおいて、制御はブロック1920へ渡り、処理要素スロットル電力目標が、これら2つの値に少なくとも部分的に基づき決定されてよい。一例では、スロットルエージェントは、処理要素スロットル電力目標(P
element_throttle)を、(電力目標エージェントにより設定されたような)パッケージスロットル電力目標(P
package_throttle)及び(電力目標エージェントにより与えられるような)計数(c
power_management)の関数として、例えば次式に従い計算する:P
element_throttle=f(P
package_throttle,c
power_management)。幾つかの実施形態では、スロットルエージェントがパッケージから要素へスロットル電力閾値を変換するための特定のタイミング要件は存在しなくてよい。これは、電力目標エージェントが、特定のプラットフォームイベント(例えば、バッテリ状態の変化)にのみ応答して、スロットル電力を設定し得るからである。これは、標準的に、数秒程度の遅延を有する。更に、電力管理エージェントは、ホストソフトウェア活動種類に合わせて最適化してよいことに留意する。これは、標準的に、ハード的タイミング要件を有しない。
【0138】
別の実施形態では、スロットルエージェントは、(プラットフォームファームウェア、例えばBIOS(basic input/output system)により提供されてよい)ルックアップテーブルを維持するよう構成されてよい。本実施形態では、電力管理エージェントは、パッケージスロットル電力閾値の所与のセットについて、ルックアップテーブルへのポインタを提供する。
【0139】
更に
図19を参照すると、制御は次にブロック1930に渡り、処理要素のスロットル動作点が、この処理要素のスロットル電力目標に基づき決定されてよい。一例として、スロットルエージェントは、対応する動作点(例えば、電圧/周波数ペア)を識別するために、この処理要素のスロットル電力目標に基づき、ローカルルックアップテーブルにアクセスしてよい。次に、ブロック1940で、スロットル動作点は、所与の記憶位置に、例えばスロットルエージェントの内部に格納されてよい。一例として、スロットルエージェントは、決定したスロットル動作点を格納するために構成記憶を含んでよい。決定したスロットル動作点は、後述するように、スロットル指示が受信されるとスロットル活動を制御するために、読み出され使用されてよい。
【0140】
留意すべきことに、ここで実施形態によると、異なる処理要素の結果として生じる動作点は、所与の負荷について、処理要素の優先度に少なくとも部分的に基づき、非対称レベルであってよい。また更に、少なくとも1つの処理要素(及び場合によっては複数の処理要素)が、最小動作点より高いスロットル動作点で動作させられてよいことが理解される。つまり、バッテリ能力(例えば、充電レベル)に基づき、スロットル動作点は、標準的なスロットル動作点(つまり、プロセッサの構成記憶に格納されてよい最低動作点)より高くてよい。一例として、この最低動作点は、プロセッサの動作し得る最低周波数及び電圧である、低周波数モードに対応してよい。
図19の実施形態では、上位レベルで示されたが、多くの変形及び代替が可能であることが理解される。
【0141】
実施形態では、スロットルエージェントは、計算した処理要素スロットル電力目標を用いて、1つ以上の関連する処理要素を所与の動作点で動作させてよい。コア又はグラフィックプロセッサでは、動作点は、動作電圧/周波数ペアに変換されてよい。入力/出力(IO)ポートのような他の処理要素については、動作点は、ダイナミックリンク幅、帯域幅m、等のような他の動作パラメータに変換されてよい。留意すべきことに、スロットルエージェントは、プラットフォーム電気障害を直ちに回避するために、スロットルを実行するよう構成されてよい。幾つかの例では、処理要素は、(例えば、ハードウェア制限により)示されたスロットル動作点に直ちに変換しない場合、最適なスロットル状態にロックする前に、先ず、安全な状態(例えば、現在の動作点より低いがスロットル動作点より高い中間動作点)に遷移してよい。
【0142】
図20を参照すると、本発明の更に別の実施形態による方法のフロー図が示される。より具体的には、
図20の方法2000は、一実施形態に従い、スロットルエージェントを用いて処理要素電力をスロットル(スロットリング、throttling)する方法である。従って、方法2000は、ハードウェア回路、ソフトウェア、ファームウェア及び/又はそれらの組み合わせにより実行されてよい。ここで実施形態によると、方法2000は、所与のハードウェア回路、つまり所与のスロットルエージェントにより実行されてよい。ハードウェア回路(及び場合によっては、1つ以上の処理要素に関連付けられた専用ハードウェア回路)を使用することにより、スロットル動作は非常に低遅延で生じ得る。従って、方法2000は、低遅延スロットルを生じさせるために、高速ループに従い実行されてよい。例えば、一実施形態では、スロットルエージェントは、プラットフォームイベントの指示からサブマイクロ秒の遅延ウインドウの範囲内でスロットルを生じさせるよう構成されてよい。留意すべきことに、実施形態における分散型ハードウェア回路の使用により、適切なスロットル点を決定し及び処理要素を制御するOS又は他のシステムソフトウェア(及び/又は電力管理エージェントのような電力制御回路/ファームウェア)のオーバヘッドが、回避できる。
【0143】
図20に示すように、方法2000は、スロットル動作点を読み出すことにより開始する(ブロック2010)。上述のように、このスロットル動作点は、スロットルエージェントの構成記憶に格納されてよい。次に、菱形2020で、例えばプラットフォームモニタからスロットル信号が受信されたか否かが決定される。ここで説明されるように、このスロットル信号は、従って、プロセッサがパッケージスロットル電力閾値より高くない電力レベルで動作するよう今まさに制御される、スロットルエージェントへの指示である。従って、(例えば)AC電源が除去されると、プラットフォームイベントの指示が生じる(例えばスロットル信号)。この指示に応答して、プロセッサは、全体の電力消費を予めプログラミングされた電力目標にまでスロットルするよう構成されてよい(例えば、電力目標エージェントにより設定されるように、80%充電で50W、20%で30W)。
【0144】
スロットル信号が受信されたと決定された場合、制御はブロック2030に渡り、処理要素は、スロットル動作点で動作させられる。例えば、処理要素が内部クロック生成部及び関連する電圧レギュレータを含む例では、スロットルエージェントは、動作点コマンドを送信して、1つ以上の周波数及び動作電圧を、処理要素内部で更新させる。他の例では、スロットルエージェントは、関連するクロック生成部、電圧レギュレータ、リンク状態機械、等のような他の制御コンポーネントと通信して、適切な動作パラメータを制御してよい。その結果、処理要素は、処理要素スロットル電力閾値より高くない電力レベルで動作する。
図20の実施形態では、上位レベルで示されたが、多くの変形及び代替が可能であることが理解される。
【0145】
以下の例は、更なる実施形態に関連する。
【0146】
一例では、プロセッサは、動作を実行する複数の処理要素と、前記複数の処理要素に結合され、前記複数の処理要素の電力消費を制御するPMAと、前記PMAに結合されるスロットル回路と、を含む。前記スロットル回路は、それぞれが前記複数の処理要素のうちの1つに関連付けられる複数のスロットルエージェントを含んでよく、前記PMAは前記スロットル回路に変換情報を通信し、前記複数のスロットルエージェントの各々は、前記変換情報に少なくとも部分的に基づき、前記複数の処理要素のうちの関連付けられた1つのスロットル電力レベルを決定する。
【0147】
一例では、前記変換情報は、比情報を含み、前記PMAは、使用モニタから受信したヒント情報に少なくとも部分的に基づき、前記変換情報を決定し、前記ヒント情報は、前記複数の処理要素の相対優先度を示す。
【0148】
一例では、前記変換情報は、ポインタ情報を含み、前記複数のスロットルエージェントのうちの第1スロットルエージェントは、前記ポインタ情報の第1ポインタにより、ルックアップテーブルにアクセスして、第1処理要素の第1スロットル電力レベルを決定する。
【0149】
一例では、前記第1スロットルエージェントは、前記第1スロットル電力レベルに基づき、前記第1処理要素の第1動作点を決定し、動作点更新を前記第1処理要素へ送信して、前記第1処理要素に前記第1動作点で動作させる。
【0150】
一例では、前記第1動作点は、最小動作点より大きい。
【0151】
一例では、前記電力目標エージェントは、バッテリの充電能力の変化に少なくとも部分的に基づき、前記プロセッサのパッケージスロットル電力レベルを設定する。
【0152】
一例では、プラットフォームモニタは、プラットフォームイベントに応答して、前記スロットル回路にスロットル信号を通信し、前記プラットフォームイベントは、前記プラットフォームのバッテリ動作への切り替えを含み、前記電力目標エージェントは、前記パッケージスロットル電力レベルを前記スロットル回路へ更に通信する。
【0153】
一例では、前記パッケージスロットル電力レベルは、前記プロセッサの熱設計電力より小さく、前記スロットル回路は、前記複数の処理要素のうちの少なくとも幾つかに、最小動作点より大きい動作点で動作させる。
【0154】
別の例では、方法は、
複数の処理回路を含むシステムオンチップ(SoC)の電力制御部で、プラットフォームイベントに応答して、ヒント情報に少なくとも部分的に基づき、前記SoCのスロットル電力閾値の変換情報を決定するステップと、
前記複数のスロットルエージェントに、前記変換情報に少なくとも部分的に基づき、前記複数の処理回路のうちの少なくとも1つの動作点を、最小動作点より大きいスロットルレベルに更新させるために、前記SoCの複数のスロットルエージェントへ前記変換情報を送信するステップであって、前記複数のスロットルエージェントの各々は、前記複数の処理回路のうちの少なくとも1つに関連付けられる、ステップと、を含む。
【0155】
一例では、前記方法は、使用モニタから前記ヒント情報を受信するステップであって、前記ヒント情報は、前記複数の処理回路に関する優先度情報を含む、ステップ、を更に含む。
【0156】
一例では、前記方法は、
前記複数のスロットル回路で、変換情報を受信するステップと、
前記複数のスロットルエージェントのうちの第1スロットルエージェントにより、前記複数の処理回路のうちの第1処理回路に、前記変換情報のうちの第1変換要素に基づき、第1動作点で動作させるステップと、
前記複数のスロットルエージェントのうちの第2スロットルエージェントにより、前記複数の処理回路のうちの第2処理回路に、前記変換情報のうちの第2変換要素に基づき、第2動作点で動作させるステップであって、前記第2動作点は前記第1動作点より大きく、前記第2処理回路は前記ヒント情報に従い前記第1処理回路より高い優先度を有する、ステップと、を更に含む。
【0157】
一例では、前記変換情報を決定するステップは、前記ヒント情報に少なくとも部分的に基づき、それぞれが前記複数の処理回路のうちの1つに関連付けられる複数の係数を生成するステップを含む。
【0158】
一例では、前記方法は、
前記複数のスロットルエージェントのうちの第1スロットルエージェントで、前記複数の係数のうちの第1係数及び前記SoCのスロットル電力限界に基づき、前記複数の処理回路のうちの第1処理回路の第1スロットル電力レベルを計算するステップと、
前記第1処理回路に、前記第1スロットル電力レベルに基づき、第1動作点で動作させるステップであって、前記第1動作点は前記最小動作点より大きい、ステップと、を更に含む。
【0159】
一例では、前記方法は、
前記第1処理回路に、中間動作点で動作させるステップであって、前記中間動作点は、前記第1処理回路が動作していた前の動作点より低く、前記第1動作点より高い、ステップと、
前記第1処理回路に、前記第1処理回路のハードウェア限界に達した後に、前記第1動作点で動作させる、ステップと、を更に含む。
【0160】
一例では、前記変換情報を決定するステップは、前記ヒント情報に少なくとも部分的に基づき、それぞれが前記複数の処理回路のうちの1つに関連付けられる複数のポインタを生成するステップを含む。
【0161】
一例では、前記方法は、
前記複数のスロットルエージェントのうちの第1スロットルエージェントにより、前記複数のポインタのうちの第1ポインタを用いて、テーブルにアクセスして、前記複数の処理回路のうちの第1処理回路の第1スロットル電力レベルを取得するステップと、
前記第1処理回路に、前記第1スロットル電力レベルに基づき、第1動作点で動作させるステップであって、前記第1動作点は前記最小動作点より大きい、ステップと、を更に含む。
【0162】
別の例では、命令を含むコンピュータ可読媒体は、上述の例のいずれかの方法を実行するためのものである。
【0163】
別の例では、データを含むコンピュータ可読媒体は、上述の例のいずれかの方法を実行するよう少なくとも1つの集積回路を製造するために、少なくとも1つの機械により使用されるためのものである。
【0164】
別の例では、機器は、上述の例のいずれかの方法を実行する手段を含む。
【0165】
更に別の例では、システムは、
前記システムに電力を供給する第1電源と、
前記システムに電力を供給する第2電源であって、前記第2電源はバッテリを含む、第2電源と、
前記第2電源を充電する充電回路と、
プロセッサに結合される電力管理集積回路であって、前記電力管理集積回路は、前記第1電源から前記第2電源への電力の切り替えに応答して、前記プロセッサにスロットル信号を送信し、前記第2電源及び前記充電回路のうちの少なくとも1つは、前記バッテリの充電能力を前記プロセッサに通信する、電力管理集積回路と、
前記プロセッサと、を含む。
【0166】
一例では、前記プロセッサは、
第1命令を実行する少なくとも1つのコアと、
第2命令を実行する少なくとも1つのグラフィックプロセッサと、
前記少なくとも1つのコア及び前記少なくとも1つのグラフィックプロセッサに結合される電力制御部であって、前記プロセッサの電力量に従い、前記少なくとも1つのコア及び前記少なくとも1つのグラフィックプロセッサの電力消費を制御する、電力制御部と、
を含んでよく、電力目標エージェントは、前記充電能力に少なくとも部分的に基づき、前記プロセッサのスロットル電力量を先取り的に決定する。また、前記電力制御部は、前記少なくとも1つのコア及び前記少なくとも1つのグラフィックプロセッサの優先度に基づき、変換情報を先取り的に決定する。前記プロセッサは、前記電力制御部に結合されるスロットル回路であって、前記スロットル回路は、前記少なくとも1つのコアの第1スロットル電力量及び前記少なくとも1つのグラフィックプロセッサの第2スロットル電力量を、前記変換情報及び前記スロットル電力量に少なくとも部分的に基づき先取り的に決定し、前記スロットル信号に応答して、前記少なくとも1つのコアを前記第1スロットル電力量に基づき第1動作点で動作させ、前記少なくとも1つのグラフィックプロセッサを前記第2スロットル電力量に基づき第2動作点で動作させる、スロットル回路を更に含んでよい。
【0167】
一例では、前記変換情報は、比情報を含み、前記電力制御部は、使用モニタから受信したヒント情報に少なくとも部分的に基づき、前記変換情報を決定し、前記ヒント情報は、前記少なくとも1つのコア及び前記少なくとも1つのグラフィックプロセッサの相対優先度を示す。
【0168】
一例では、前記変換情報は、ポインタ情報を含み、前記スロットル回路は、前記ポインタ情報のうちの第1ポインタによりルックアップテーブルにアクセスして、前記少なくとも1つのコアの前記第1スロットル電力量を決定し、前記ポインタ情報のうちの第2ポインタにより前記ルックアップテーブルにアクセスして、前記少なくとも1つのグラフィックプロセッサの前記第2スロットル電力量を決定する。
【0169】
一例では、前記電力制御部は、前記少なくとも1つのコアに、中間動作点で動作させ、前記中間動作点は、前記少なくとも1つのコアが動作していた前の動作点より低く、前記第1動作点より高く、前記第1動作点は、最小動作点より大きく、
前記少なくとも1つのコアに、前記少なくとも1つのコアのハードウェア限界に達した後に、前記第1動作点で動作させる。
【0170】
上述の例の種々の組み合わせが可能であることが理解される。
【0171】
留意すべきことに、用語「回路(circuit、circuitry)」は、ここでは同義的に使用される。ここで使用されるように、これらの用語及び用語「ロジック」は、単独又は任意の組み合わせで、アナログ回路、デジタル回路、ハード結線回路、プログラマブル回路、プロセッサ回路、マイクロコントローラ回路、ハードウェア論理回路、状態機械回路、及び/又は任意の他の種類の物理的ハードウェアコンポーネントを参照するために使用される。実施形態は、多くの異なる種類のシステムで使用されてよい。例えば、一実施形態では、通信装置は、ここに記載した種々の方法及び技術を実行するよう構成できる。勿論、本発明の範囲は、通信装置に限定されず、むしろ、他の実施形態は、命令を処理する他の種類の機器、又はコンピューティング装置で実行されることに応答して装置にここに記載した方法及び技術のうちの1つ以上を実行させる命令を含む1つ以上の機械可読媒体、を対象とし得る。
【0172】
実施形態は、コードで実装されてよく、命令を実行するようシステムをプログラムするために使用できる命令を格納した非一時的記憶媒体に格納されてよい。実施形態は、データ内に実装されてよく、少なくとも1つの機械により使用された場合に該少なくとも1つの機械に1つ以上の動作を実行するための少なくとも1つの回路を製造させる非一時的記憶媒体に格納されてよい。また更なる実施形態は、SoC又は他のプロセッサ内に製造されると、該SoC又は他のプロセッサに1つ以上の動作を実行するよう構成する情報を含むコンピュータ可読記憶媒体に実装されてよい。前記記憶媒体は、限定ではなく、フロッピーディスク、光ディスク、個体ドライブ(SSD)、コンパクトディクス読み出し専用メモリ(CD-ROM)、コンパクトディスクリライタブル(CD-RW)、及び磁気光ディスクを含む任意の種類のディスク、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、静的RAM(SRAM)、消去可能プログラマブルROM(EPROM)、フラッシュメモリ、電気的消去可能プログラマブルROM(EEPROM)のような半導体素子、磁気もしくは光カード、又は電子命令を格納するのに適する任意の他の種類の媒体を含んでよい。
【0173】
本発明は限られた数の実施形態に関して記載されたが、当業者は、それらから多数の変更及び変形を理解する。添付の特許請求の範囲は、本発明の精神及び範囲に含まれる全てのこのような変更及び変形をカバーすることを意図する。
【符号の説明】
【0174】
1630 スロットルエージェント
1640 電力目標エージェント
1650 電力管理エージェント
1660 使用モニタ
1670 プラットフォームモニタ
【外国語明細書】