(57)【要約】  一実施形態では、システムは、複数のプロセッサと、当該複数のプロセッサをさまざまな動作点の間で切り替えるように構成される自動電力状態コントローラ（ＡＰＳＣ）とを含んでもよい。当該複数の動作点は、ＡＰＳＣ内にプログラムされるデータによって記述されてもよく、ＡＰＳＣは、記述されている動作点の中からプロセッサのためのターゲット動作点を特定するターゲット動作点要求をプログラム可能なレジスタを含んでもよい。動作点を記述するデータは、また、動作点において同時にアクティブになっていてもよいプロセッサの数が制限されているか否かについての表示を含んでもよい。当該表示及びアクティブなプロセッサの数に基づいて、ＡＰＳＣは、要求動作点を低減動作点と置き換えてもよい。いくつかの実施形態では、デジタル電力推定器（ＤＰＥ）がプロセッサの動作を監視してもよく、高い消費電力が検出されると、プロセッサに対してスロットリングを行ってよい。
2016527609.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサと、
前記複数のプロセッサに結合される電力制御回路であって、前記電力制御回路は、前記複数のプロセッサのための複数の動作点を記述するデータをプログラム可能であり、前記データは、前記複数の動作点のそれぞれの動作点についての表示であって、当該それぞれの動作点における、前記複数のプロセッサ内のアクティブなプロセッサの数の限度を示す表示を更に含み、前記電力制御回路は、アクティブなコアの前記数が、選択動作点についての前記限度を超えることを検出するように構成され、かつ、前記検出に応じて、前記選択動作点を第２の動作点と置き換えるように構成される、電力制御回路と、
を備えることを特徴とする装置。
【請求項２】
前記第２の動作点が、前記選択動作点よりも低電力の動作点である
ことを特徴とする請求項１に記載の装置。
【請求項３】
前記第２の動作点における前記複数のプロセッサのためのクロック周波数が、前記選択動作点における前記複数のプロセッサのためのクロック周波数よりも低い
ことを特徴とする請求項２に記載の装置。
【請求項４】
前記第２の動作点における前記複数のプロセッサのための供給電圧の大きさが、前記選択動作点における前記複数のプロセッサのための供給電圧の大きさよりも低い
ことを特徴とする請求項２又は３に記載の装置。
【請求項５】
前記電力制御回路が、前記複数のプロセッサのうちの第１のプロセッサがアクティブ化することに応じて、アクティブなプロセッサの前記数が前記限度を超えることを検出するように構成され、
前記選択動作点が、前記第１のプロセッサがアクティブ化する時点における現在の動作点である
ことを特徴とする請求項１から４のいずれか一項に記載の装置。
【請求項６】
前記電力制御回路が、前記複数のプロセッサの現在の動作点を前記選択動作点に変更せよとの要求に応じて、アクティブなプロセッサの前記数が前記限度を超えることを検出するように構成される
ことを特徴とする請求項１から５のいずれか一項に記載の装置。
【請求項７】
前記電力制御回路が、前記複数のプロセッサの現在の動作点が前記第２の動作点である間に前記複数のプロセッサのうちの１つが非アクティブ化することに応じて、アクティブなプロセッサの前記数が前記限度よりも少ないことを検出するように構成され、
前記電力制御回路が、前記非アクティブ化の検出に応じて、前記選択動作点に変更するように構成される
ことを特徴とする請求項１から６のいずれか一項に記載の装置。
【請求項８】
前記複数のプロセッサに結合され、前記複数のプロセッサによって消費される電力量を推定するように構成されるデジタル電力推定器を更に備え、
前記デジタル電力推定器は、前記電力量が閾値量を超えることに応じて、前記複数のプロセッサのうちの１つ以上に対してスロットリングを行うように構成される
ことを特徴とする請求項１から７のいずれか一項に記載の装置。
【請求項９】
システム・オン・チップに複数の供給電圧を供給するように構成される電力管理ユニットと、
前記電力管理ユニットに結合され、請求項１から８のいずれか一項に記載の装置を含む前記システム・オン・チップと、
を備えることを特徴とするシステム。
【請求項１０】
前記システム・オン・チップが、
前記電力管理ユニットからの前記複数の供給電圧についての複数の供給電圧の大きさを要求するように構成される電力マネージャ回路と、
複数のプロセッサ、及び前記複数のプロセッサに結合される電力制御回路を含む中央処理装置複合体であって、前記電力制御回路は、前記複数のプロセッサの動作点を、前記複数のプロセッサのうちのアクティブなプロセッサの数が、前記動作点に関連付けられたアクティブなプロセッサの最大数を超えることに応じて自動的に低減するように構成され、前記電力制御回路は、前記低減に応じて、要求された供給電圧の大きさを前記電力マネージャ回路へ伝送するように構成される、中央処理装置複合体と、
を含むことを特徴とする請求項９に記載のシステム。
【請求項１１】
システム内の複数のプロセッサのうちのアクティブなプロセッサの数を監視する工程と、
前記数が、前記複数のプロセッサの現在の動作点に対して許容されるアクティブなプロセッサの最大数を超えることを検出する工程であって、前記検出は、前記現在の動作点に関連付けられた表示に応じるものである、検出する工程と、
前記数が前記最大数を超えることの検出に応じて、前記現在の動作点を第２の動作点に置き換える工程と、
を含むことを特徴とする方法。
【請求項１２】
前記検出が、現在非アクティブの前記複数のプロセッサのうちの１つをアクティブ化せよとの要求に更に応じるものである
ことを特徴とする請求項１１に記載の方法。
【請求項１３】
現在アクティブなプロセッサの前記数が、前記複数のプロセッサの要求動作点に対して許容されるアクティブなプロセッサの前記最大数を超えることを検出する工程と、
前記検出に応じて、前記現在の動作点を、前記要求動作点よりも小さい第２の動作点に変更する工程と、
を更に含むことを特徴とする請求項１１に記載の方法。
【請求項１４】
前記アクティブなプロセッサのうちの１つの非アクティブ化を検出する工程であって、前記非アクティブ化は、アクティブなプロセッサの前記数を、前記要求動作点に対して許容される数に低減する、検出する工程と、
前記検出に応じて、前記現在の動作点を前記要求動作点に変更する工程と、
を更に含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記アクティブなプロセッサのうちの１つの非アクティブ化を検出する工程であって、前記非アクティブ化は、アクティブなプロセッサの前記数を、前記現在の動作点に対して許容される数に低減する、検出する工程と、
前記検出に応じて、前記現在の動作点を復元する工程と、
を更に含むことを特徴とする請求項１１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプロセッサ内の電力管理に関する。
【背景技術】
【０００２】
集積回路を形成するために所与の半導体基板上に組み込むことができるトランジスタの数が増大し続けている。並行して、集積回路を動作させるクロック周波数（「動作周波数」）も同様に増大し続けている。供給電圧の大きさは徐々に減少してきたが、集積回路の消費電力は増大している。制約されたエネルギー蓄積器を有するデバイス（例えば、電池で動作するモバイルデバイス）内で集積回路が用いられる場合には、消費電力は、デバイスを再充電しなければならなくなるまで、デバイスをどのぐらい使用することができるのかを左右する因子となる。加えて、電力消費を通じて発生される熱は、モバイルデバイス及び非モバイルデバイスのどちらにおいても問題となり得る。
【０００３】
ソフトウェアを実行するためのプロセッサを含むデバイスはプロセッサ内の消費電力を管理することができる。通例、所与のプロセッサは、そのプロセッサ上で実行する必要があるソフトウェアが現在存在しない場合には、停止することができる。プロセッサを停止することは、クロックは停止されるが、プロセッサは電源が入ったままであり、クロックが再開されるとすぐに命令を実行できる、クロックゲーティング、及びプロセッサは電源を切られ、命令を実行する前に電源を入れられ、リセットされることになる、パワーゲーティングを含むことができる。
【０００４】
モバイルデバイスを含む、多くのデバイスは複数のプロセッサを含む。プロセッサは、特に、特定の作業負荷の下では、大電力消費者にもなり得る。したがって、全てのプロセッサがアクティブに実行している場合には、デバイスがデバイス内の電源の容量を超えてしまう危険にさらされる動作点（供給電圧の大きさと動作周波数との組み合わせ）が存在し得る。すなわち、電源は最大電流量を調達する能力を有する。動作点のいくつかにおいて全てのプロセッサが電力集中作業負荷をアクティブに実行している場合には、その結果生じる消費電流は、電源が提供することができる電流量を超え得る。電源の容量を超えると、誤動作を発生させる場合がある（例えば、供給電圧の大きさが、集積回路がその動作周波数でもはや適切に動作しなくなる点まで降下する場合がある）。
【発明の概要】
【０００５】
一実施形態では、システムは、複数のプロセッサと、プロセッサをさまざまな動作点の間で切り替えるように構成される自動電力状態コントローラ（ＡＰＳＣ：automatic power state controller）とを含んでもよい。動作点は、ＡＰＳＣ内にプログラムされるデータによって記述されてもよく、ＡＰＳＣは、記述されている動作点の中からプロセッサのためのターゲット動作点を特定するターゲット動作点要求をプログラム可能であるレジスタを含んでもよい。動作点を記述するデータはまた、動作点において同時にアクティブになっていてもよいプロセッサの数が制限されているか否かについての表示（indication）を含んでもよい。当該表示及びアクティブなプロセッサの数に基づいて、ＡＰＳＣは、要求動作点を低減動作点と置き換えてもよい。低減動作点は、アクティブなプロセッサの数が（例えば、電源の容量を超えることなく）安全に動作し得る動作点であってもよい。いくつかの実施形態では、デジタル電力推定器（ＤＰＥ：digital power estimator）がプロセッサの動作を監視してもよく、高い消費電力が検出されると、プロセッサに対してスロットリングを行ってもよい。ＤＰＥを含む実施形態では、最も電力を消費するシナリオを制御するためのＤＰＥのスロットリング（throttling）に依存して、低減動作点は、プロセッサが安全に動作し得る動作点をいくらか上回ってもよい。
【図面の簡単な説明】
【０００６】
以下の詳細な説明は、次に簡単に説明される添付の図面を参照する。
【０００７】
【図１】中央処理装置（ＣＰＵ：central processing unit）複合体を含むシステム・オン・チップの一実施形態のブロック図である。
【０００８】
【図２】図１に示される自動電力状態コントローラ（ＡＰＳＣ）の一実施形態のブロック図である。
【０００９】
【図３】図２に示されるＡＰＳＣの一実施形態の動作を示すフローチャートを示す図である。
【００１０】
【図４】ＡＰＳＣと連動した図１に示されるデジタル電力推定器（ＤＰＥ：digital power estimator）の一実施形態の動作を示すフローチャートを示す図である。
【００１１】
【図５】ＣＰＵ複合体内のＤＰＥの一実施形態のブロック図である。
【００１２】
【図６】ＤＰＥを選択的に有効にすることの一実施形態を示すフローチャートを示す図である。
【００１３】
【図７】ＤＰＥが有効にされた時の、図５における構成要素の一実施形態の動作を示すフローチャートを示す図である。
【００１４】
【図８】システムの一実施形態のブロック図である。
【００１５】
本発明は種々の変更及び代替的な形態を受け入れる余地があるが、その特定の諸実施形態が図面には例として示されており、本明細書において詳細に説明されることになる。しかし、図面及びそれらに対する詳細な説明は、本発明を、開示されている特定の形態に限定することを意図されているのではなく、逆に、その意図は、添付の請求項によって定義されているとおりの本発明の趣旨及び範囲内に入る全ての変更、均等物及び代替物を範囲に含むことであることを理解されたい。本明細書において用いられている見出しは単に構成上の目的のためのみのものであり、説明の範囲を限定するために用いられるように意図されているわけではない。本出願全体を通じて使用される時、「〜してもよい（may）」という語は、義務的な意味（すなわち、〜なければならない（must）を意味する）ではなく、許容的な意味で使用される（すなわち、〜する可能性を有していることを意味する）。同様に、「含む（include）」、「含む（including）」、及び「含む（includes）」という語は、〜を含むが、それに限定するものではないことを意味する。
【００１６】
種々のユニット、回路、又はその他の構成要素は、タスク又はタスク群を実行する「ように構成される（configured to）」と説明される場合がある。このような文脈において、「〜するように構成される」とは、動作時にそのタスク又はタスク群を実行する「回路機構を有する」ことを広く意味する構造の広義の表現である。それゆえ、ユニット／回路／構成要素は、たとえ、ユニット／回路／構成要素が現在は作動していなくても、タスクを実行するように構成することができる。概して、「〜するように構成される」に対応する構造を形成する回路機構は、操作を実施するために実行可能なプログラム命令を記憶するハードウェア回路及び／又はメモリを含んでもよい。メモリは、スタティックランダムアクセスメモリ若しくはダイナミックランダムアクセスメモリ等の揮発性メモリ、及び／又は光ディスク記憶装置若しくは磁気ディスク記憶装置、フラッシュメモリ、プログラム可能読み出し専用メモリ等の不揮発性メモリ等を含むことができる。同様に、さまざまなユニット／回路／構成要素は、説明の中で、便宜上、タスク又はタスク群を実行すると記述される場合がある。このような説明は、「〜ように構成される」という文言を含むと解釈されるべきである。１つ以上のタスクを実行するように構成されるユニット／回路／構成要素と表現することは、米国特許法第１１２条、第６項のユニット／回路／構成要素についての解釈を行使しないことを明示的に意図されている。
【００１７】
本明細書は、「一実施形態（one embodiment）」又は「一実施形態（an embodiment）」への言及を含む。「一実施形態において（in one embodiment）」又は「一実施形態において（in an embodiment）」という文言の出現は、必ずしも同じ実施形態に言及するわけではない。しかし、本明細書において明示的に否定されない限り、特徴の任意の組み合わせを含む実施形態が概して企図されている。特定の機能、構造又は特性は、本開示に整合する任意の好適な方法で組み合わせ得る。
【発明を実施するための形態】
【００１８】
次に図１を参照すると、メモリ１２及び電力管理ユニット（ＰＭＵ：power management unit）１５６に結合されるＳＯＣ  １０の一実施形態のブロック図が示されている。名称によって含意されるように、ＳＯＣ  １０の構成要素は集積回路「チップ」として単一の半導体基板上に一体化されてもよい。いくつかの実施形態では、構成要素はシステム内の２つ以上の別個のチップ上に実装されてもよい。ただし、ＳＯＣ  １０が本明細書において例として用いられることになる。図示されている実施形態では、ＳＯＣ  １０の構成要素は、中央処理装置（ＣＰＵ）複合体１４、周辺装置構成要素１８Ａ〜１８Ｂ（より短く、「周辺装置」）、メモリコントローラ２２、電力マネージャ（ＰＭＧＲ：power manager）３２、及び通信ファブリック２７を含む。構成要素１４、１８Ａ〜１８Ｂ、２２、及び３２は全て通信ファブリック２７に結合されてもよい。使用時、メモリコントローラ２２はメモリ１２に結合されてもよい。図示されている実施形態では、ＣＰＵ複合体１４は、１つ以上のプロセッサ２８、レベル２（Ｌ２）キャッシュ３０、自動電力状態コントローラ１６、及びデジタル電力推定器（ＤＰＥ）回路２０を含む。
【００１９】
ＣＰＵ複合体１４は、ＳＯＣ  １０のＣＰＵの役割を果たす１つ以上のＣＰＵプロセッサ２８を含んでもよい。システムのＣＰＵは、オペレーティングシステムなどの、システムの主制御ソフトウェアを実行する（１つ以上の）プロセッサを含む。概して、使用時にＣＰＵによって実行されるソフトウェアは、システムの所望の機能性を実現するためにシステムの他の構成要素を制御してもよい。プロセッサ２８はまた、アプリケーションプログラムなどの、他のソフトウェアを実行してもよい。アプリケーションプログラムはユーザ機能性を提供してもよく、より低レベルのデバイス制御についてはオペレーティングシステムに依存してもよい。したがって、プロセッサ２８はまた、アプリケーションプロセッサと呼ばれてもよい。ＣＰＵ複合体１４は、Ｌ２キャッシュ３０、及び／又は及びシステムの他の構成要素へのインタフェース（例えば、通信ファブリック２７へのインタフェース）などの、他のハードウェアを更に含んでもよい。
【００２０】
ＡＰＳＣ  １６は、アクティブなプロセッサ２８を監視するように構成されてもよく、現在の動作点、及びアクティブなプロセッサの数に基づいてＣＰＵ複合体１４の動作点を動的に変更するように構成されてもよい。特に、動作点のうちのいくつかにおいて、最大数を超えるプロセッサがアクティブになっている場合には、消費される総電力は、各プロセッサ内の最悪の場合の消費電力の下で電力を提供するために、ＰＭＵ  １５６の能力を超える可能性がある。ＡＰＳＣ  １６は、最大数を超えるプロセッサがアクティブとなる時を検出するように構成されてもよく、消費される電力がＰＭＵ  １５６の能力を超えるのを防止するべく動作点を低減するように構成されてもよい。低減動作点は、たとえ、アクティブなプロセッサ２８の全てが最悪の場合の電力を消費している場合でも、消費される総電力はＰＭＵ  １５６の能力を超える可能性がない動作点であってもよい。
【００２１】
プロセッサ２８の最大数はプロセッサの総数よりも２以上少なくてもよい。例えば、プロセッサ２８の総数はＮ個であってもよく、所与の動作点のためのプロセッサの最大数はＮ−Ｍ個であってもよい。ここで、Ｎ及びＭは整数であり、ＮはＭよりも大きい。所与の動作点のために定義される低減動作点はＭ個存在してもよく、Ｍ個の低減動作点のうちの１つはアクティブなプロセッサの数に基づいて選択されてもよい。すなわち、Ｍ個の低減動作点のうちの１つは、アクティブなプロセッサの数が最大数よりも１つ大きい場合に選択されてもよく、Ｍ個の低減動作点のうちの更に別の１つは、アクティブなプロセッサの数が最大数よりも２つ大きい場合に選択されてもよい、などのようになる。代替的には、Ｎ個のプロセッサが最悪の場合の消費電力でアクティブとなるために十分に低減された低減動作点が１つ存在してもよい。プロセッサの最大数は動作点に固有であってもよい。すなわち、１つの動作点はＮ−Ｍ１個を最大数として有してもよく、別の動作点はＮ−Ｍ２個を最大数として有してもよい。ここで、Ｍ１及びＭ２は、同じでない整数である。いくつかの動作点は最大数を有しなくてもよい（すなわち、Ｎ個のプロセッサが全てアクティブであってもよい）。
【００２２】
最悪の場合の消費電力は、例えば、最も消費電力が高い命令を包含するコードがプロセッサ２８内で繰り返し実行される時に発生し得る。どの命令が最も消費電力が高い命令であるのかはプロセッサ２８の実装形態によって異なり得る。場合によっては、最も消費電力が高い命令は特定の種類の命令になり得る（例えば、浮動小数点命令はメディア命令若しくは整数命令よりも消費電力が高くなり得るか、又はメディア命令は最も消費電力が高くなり得る、などである）。命令のその種類の内の特定の命令は他のものよりも高くなり得る（例えば、乗加算浮動小数点命令は他の浮動小数点命令よりも消費電力が高くなり得る）。
【００２３】
最悪の場合の消費電力が各アクティブコア内で同時に発生する尤度は低くなり得る。しかし、最悪の場合が実際に起きた場合には、動作不良が発生する可能性があるため、ＡＰＳＣ  １６はその可能性を防止するように構成されてもよい。もしその可能性が防止されていなかったとすれば、このとき、ＳＯＣ  １０を含むシステムは、不正な主体が最悪の場合のシナリオを発生させることによって動作不良を発生させようと試みる、いわゆる「電力ウィルス」攻撃を受けやすくなるであろう。
【００２４】
いくつかの実施形態では、ＤＰＥ回路２０が同様に含まれてもよく、最悪の場合の消費電力が動作不良を発生させるのを防止するためにＡＰＳＣ  １６と協力して動作してもよいが、ＡＰＳＣ  １６が単独で用いられる場合よりも比較的高い点に低減動作点が設定されることを可能にし得る。例えば、低減動作点は、システム内の一般的な作業負荷を代表する、さまざまなベンチマークプログラムを実行している際のプロセッサ２８の消費電力に基づいて設定されてもよい。最も消費電力が高いベンチマークが選択されてもよく、低減動作点は、最も消費電力が高いベンチマークが各々のアクティブなプロセッサ２８内でＰＭＵ  １５６の能力を超えることなく実行され得るように設定されてもよい。ＤＰＥ回路２０は、消費電力が閾値を超える場合を検出するためにプロセッサ２８を監視するように構成されてもよく、消費電力を低減するためにプロセッサ２８のうちの１つ以上に対してスロットリングを行うように構成されてもよい。それゆえ、プロセッサ２８が、最も消費電力が高いベンチマークを超える消費電力を生じさせるコードを実行している場合には、ＤＰＥ回路２０は、できる限り短い期間（例えば、１又は数クロックサイクル）を除き、ＰＭＵ  １５６の能力を超えてしまうのを防止してもよい。
【００２５】
動作点とは、ＣＰＵ複合体１４のための供給電圧の大きさ及び動作周波数の組み合わせを指してもよい。動作周波数は、プロセッサ２８をクロック制御するクロックの周波数であってもよい。場合によっては、ＣＰＵ複合体１４内の他の回路機構は、動作周波数から派生する、より低いクロック周波数で動作してもよい（例えば、Ｌ２キャッシュ３０はより低いクロック周波数で動作してもよい）。供給電圧の大きさ及び動作周波数は関連してもよい。例えば、供給電圧の大きさは、少なくとも、プロセッサ２８が動作周波数で適切に動作するために十分高くてもよい。一実施形態では、供給電圧の大きさは、プロセッサ２８が、対応する動作周波数のために適切に動作する最小供給電圧の大きさであってもよい。動作点はまた動作状態又は電力状態と呼ばれてもよい。
【００２６】
供給電圧の大きさ及び動作周波数が増大するにつれて、ＣＰＵ複合体１４によって消費される電力は概して増大し得る。したがって、より低い動作点（より低い供給電圧の大きさ及び動作周波数）では、プロセッサ２８が消費する電力はより少なくなり得、より多くのプロセッサが、いつでもアクティブになることを許容され得る。概して、プロセッサは、電源が入っている場合には、アクティブであってもよい。プロセッサはほとんど遅延を伴うことなく命令実行のために利用可能になってもよい（例えば、それはクロックゲートされてもよいが、命令の実行準備ができている場合には、ゲートされなくてもよい）。プロセッサは、電源が入っていないか、又は命令を実行し得るようになる前に大きな遅延が経験され得る別の低電力状態にある場合には、アクティブでなくてもよい。例えば、プロセッサが位相ロックループ（ＰＬＬ：phase lock loop）のリセット又は再ロックを必要とする場合には、たとえ、電源が入っているままであっても、それはアクティブでなくてもよい。
【００２７】
ＤＰＥ  ２０によるプロセッサ２８のスロットリングは、概して、プロセッサを非アクティブ化すること又はその現在の動作点を変更することなく、プロセッサ２８による命令実行を制限することを指してもよい。スロットリングは、命令（又は消費電力が高い命令などの特定の命令）の発行レートを制限すること、命令の実行レートを制限することなどを含んでもよい。
【００２８】
概して、プロセッサは、そのプロセッサによって実装される命令セットアーキテクチャ内で定義された命令を実行するように構成される任意の回路機構及び／又はマイクロコードを含んでもよい。プロセッサは、集積回路上に他の構成要素とともにシステム・オン・チップ（ＳＯＣ  １０）又は他の一体化レベルとして実装されるプロセッサコアを包含してもよい。プロセッサは、マルチチップモジュール実装形態内に一体化される別個のマイクロプロセッサ、プロセッサコア及び／又はマイクロプロセッサ、複数の集積回路として実装されるプロセッサなどを更に包含してもよい。
【００２９】
概して、メモリコントローラ２２は、ＳＯＣ  １０の他の構成要素からのメモリ操作を受信し、そのメモリ操作を完了するためにメモリ１２にアクセスするための回路機構を含んでもよい。メモリコントローラ２２は任意の種類のメモリ１２にアクセスするように構成されてもよい。例えば、メモリ１２は、スタティックランダムアクセスメモリ（ＳＲＡＭ：static random access memory）、ダブルデータレート（ＤＤＲ、ＤＤＲ２、ＤＤＲ３など）ＤＲＡＭを含むシンクロナスＤＲＡＭ（ＳＤＲＡＭ：synchronous DRAM）などのダイナミックＲＡＭ（ＤＲＡＭ：dynamic RAM）であってもよい。ＤＤＲ  ＤＲＡＭの低電力／モバイルバージョンがサポートされてもよい（例えばＬＰＤＤＲ、ｍＤＤＲ、など）。メモリコントローラ２２は、操作を順序付けし（及び潜在的に再順序付けし）、メモリ１２へ操作を提示するための、メモリ操作のためのキューを含んでもよい。メモリコントローラ２２は、メモリへの書き込みを待っている書き込みデータ、及びメモリ操作の送信元への返送を待っている読み出しデータを記憶するためのデータバッファを更に含んでもよい。いくつかの実施形態では、メモリコントローラ２２は、最近アクセスされたメモリデータを記憶するためのメモリキャッシュを含んでもよい。ＳＯＣ実装形態では、例えば、メモリキャッシュは、データが再びすぐにアクセスされると予想される場合には、メモリ１２からのデータの再アクセスを回避することによって、ＳＯＣ内の消費電力を低減してもよい。場合によっては、メモリキャッシュはまた、特定の構成要素にのみ貢献する、Ｌ２キャッシュ３０などのプライベートキャッシュ又はプロセッサ２８内のキャッシュと対照的に、システムキャッシュと呼ばれてもよい。加えて、いくつかの実施形態では、システムキャッシュはメモリコントローラ２２内に配置される必要がない。
【００３０】
周辺装置１８Ａ〜１８Ｂは、ＳＯＣ  １０内に含まれる追加のハードウェア機能性の任意のセットであってもよい。例えば、周辺装置１８Ａ〜１８Ｂは、カメラ又はその他の画像センサからの画像キャプチャデータを処理するように構成される画像信号プロセッサ、１つ以上の表示デバイス上にビデオデータを表示するように構成されるディスプレイコントローラ、グラフィック処理ユニット（ＧＰＵ：graphics processing unit）、ビデオエンコーダ／デコーダ、スケーラ、ローテータ、ブレンダ等などのビデオ周辺装置を含んでもよい。周辺装置は、マイクロフォン、スピーカ、マイクロフォン及びスピーカへのインタフェース、オーディオプロセッサ、デジタル信号プロセッサ、ミキサ等などのオーディオ周辺装置を含んでもよい。周辺装置は、ユニバーサルシリアルバス（ＵＳＢ：Universal Serial Bus）、ＰＣＩエクスプレス（ＰＣＩｅ：PCI Express）を含む周辺装置相互接続（ＰＣＩ：peripheral component interconnect）、シリアルポート及びパラレルポート等などのインタフェースを含むＳＯＣ  １０の外部のさまざまなインタフェースのためのインタフェースコントローラ（例えば周辺装置１８Ｂ）を含んでもよい。周辺装置は、メディアアクセスコントローラ（ＭＡＣ：media access controller）などのネットワーキング周辺装置を含んでもよい。ハードウェアの任意のセットが含まれてもよい。
【００３１】
通信ファブリック２７は、ＳＯＣ  １０の構成要素間で通信するための任意の通信インターコネクト及びプロトコルであってもよい。通信ファブリック２７は、共有バス構成、クロスバー構成、及びブリッジを有する階層バスを含む、バスベースのものであってもよい。通信ファブリック２７はまた、パケットベースのものであってもよく、ブリッジを有する階層型、クロスバー型、ポイントツーポイント型、又はその他のインターコネクトであってもよい。
【００３２】
ＰＭＧＲ  ３２は、ＰＭＵ  １５６から要求される供給電圧の大きさを制御するように構成されてもよい。ＰＭＵ  １５６によってＳＯＣ  １０のために発生される供給電圧は複数存在してもよい。例えば、図１に示されているのはＶＣＰＵ及びＶＳＯＣである。ＶＣＰＵはＣＰＵ複合体１４のための供給電圧であってもよい。ＶＳＯＣは概して、ＣＰＵ複合体１４の外部のＳＯＣ  １０の残りのための供給電圧であってもよい。いくつかの実施形態では、ＳＯＣ  １０の残りのための供給電圧は複数存在してもよい。いくつかの実施形態では、ＣＰＵ複合体１４及び／又はＳＯＣ  １０内のさまざまなメモリアレイのためのメモリ供給電圧が同様に存在してもよい。メモリ供給電圧は、論理回路機構に供給される電圧（例えば、ＶＣＰＵ又はＶＳＯＣ）とともに用いられてもよく、ロバストなメモリ操作を確実にするために要求されるものよりも低い電圧の大きさを有してもよい。いくつかの実施形態では、さまざまな構成要素（例えば、ＡＰＳＣ  １６）に局所的な論理が、電源投入及び電源切断、並びに１つを超える動作点をサポートするそれらの構成要素のためのさまざまな他の動作点を含む、構成要素の電力状態を制御してもよい。他の実施形態では、ＰＭＧＲ  ３２がＳＯＣ  １０の他の構成要素の電源投入及び電源切断を制御してもよいか、又はいくつかの構成要素のための局所制御及びその他の構成要素のためのＰＭＧＲ制御の組み合わせがサポートされてもよい。ＰＭＧＲ  ３２は直接ソフトウェア制御を受けてもよく（例えば、ソフトウェアが構成要素の電源投入及び／若しくは電源切断を直接要求してもよい）、並びに／又はＳＯＣ  １０を監視し、さまざまな構成要素がいつ電源投入又は電源切断されるべきかを決定するように構成されてもよい。
【００３３】
概して、ＰＭＵ  １５６は、供給電圧を発生し、それらの供給電圧を、ＳＯＣ  １０、メモリ１２、表示デバイス、画像センサ、ユーザインタフェースデバイス等などの（図１には示されていない）さまざまなオフチップ周辺装置構成要素などの、システムの他の構成要素に提供するための回路機構を含んでもよい。それゆえ、ＰＭＵ  １５６は、プログラム可能電圧調整器、電圧要求を受信するべくＳＯＣ  １０及びより具体的にはＰＭＧＲ  ３２へのインタフェースをとるための論理、などを含んでもよい。
【００３４】
ＳＯＣ  １０の構成要素の数（及びＣＰＵ複合体１４内などの、図１に示されているものについての下位構成要素の数）は実施形態によって異なってもよいことに留意されたい。各構成要素／下位構成要素は、図１に示されている数よりも多いか、又は少なくてもよい。
【００３５】
図２はＡＰＳＣ  １６の一実施形態のブロック図である。図示されている実施形態では、ＡＰＳＣ  １６は、動的電圧及び周波数管理（ＤＶＦＭ：dynamic voltage and frequency management）テーブル４０、制御回路４２、レジスタ４４Ａ〜４４Ｄ、マルチプレクサ（ｍｕｘ）４６Ａ〜４６Ｃ、及び論理回路４８Ａ〜４８Ｂを含む。ＤＶＦＭテーブル４０は、レジスタ４４Ａ、ｍｕｘ  ４６Ａ〜４６Ｃ、及び論理回路４８Ａ〜４８Ｂに結合される。論理回路４８Ａ〜４８Ｂは、ｍｕｘ  ４６Ａ〜４６Ｃに選択制御を提供するために結合される。ｍｕｘ  ４６Ａ〜４６Ｃはレジスタ４４Ｂ〜４４Ｄにそれぞれ結合される。制御回路は、レジスタ４４Ａ〜４４Ｂに結合されるとともに、ＤＰＥイベント及びＡＰＳＣイベントを受信するために結合される。レジスタ４４Ｃ及び４４Ｄの出力は、ＰＭＧＲ  ３２及びクロック制御（ＣｌｋＣｔｌ）ユニット（図示されていない）へそれぞれ伝達される。
【００３６】
ＤＶＦＭテーブル４０は、（図２におけるＤＶＦＭ状態列によって示される）さまざまな動作点又は状態を記述するデータをプログラムされてもよい複数のエントリを含む。レジスタ４４Ａは、ＣＰＵ複合体１４のための所望の動作点を特定する、ソフトウェアからのターゲット動作点選択（ＴｇｔＳｅｌ）をプログラムされてもよい。レジスタ４４Ａはテーブル４０上の読み込みポートに結合されてもよく、対応するエントリからのデータがテーブル４０によって第１の入力としてｍｕｘ  ４６Ｂ〜４６Ｃへ出力されてもよい。各動作点を記述するデータは、供給電圧の大きさ（図２における電圧列）及び動作周波数（図２における周波数列）の表示であってもよい。データは、動作点において動作している時に許容され得るプロセッサ２８の最大数の表示を更に含んでもよい。任意の表示（例えば、最大数のカウント、以下において説明されるとおりのビットベクトル、動作点の変更を伴わずにアクティブでなくなり得る数のカウント、など）が用いられ得る。
【００３７】
図示されている実施形態及び同様の実施形態では、表示は、少なくとも１つの可能な動作点のための最大数を超え得るプロセッサの数ごとのビットを有するビットベクトルであってもよい。それゆえ、図示されている実施形態の場合には、４つのプロセッサが存在し、３つのアクティブなプロセッサが最大を超え得ること（Ｌｉｍｉｔ３ビット）、及び４つのアクティブなプロセッサが最大を超え得ること（Ｌｉｍｉｔ４ビット）があり得る。テーブル４０内のエントリをプログラムする際に、ソフトウェアは、最悪の場合の電力分析、又は、ＤＰＥ回路２０が用いられる実施形態では、ベンチマークなどのより標準的な作業負荷に基づく電力分析に基づいて、ビットベクトルを同様に埋めてもよい。ビットは、第１の状態ではプロセッサの数が限度を超え、第２の状態ではプロセッサの数が限度を超えないことを示してもよい。図示されている実施形態では、第１の状態はセット状態であってもよく、第２の状態はクリア状態であってもよい。他の実施形態はセット状態及びクリア状態の反対の意味を用いてもよい。
【００３８】
Ｌｉｍｉｔ３及びＬｉｍｉｔ４ビットのための例示的な値がテーブル４０内にＤＶＦＭ状態０〜３について示されている。ＤＶＦＭ状態０及び１の両方では、任意の数のプロセッサが、ＰＭＵ  １５６の能力を上回る消費電力を呈することなくアクティブとなり得る。したがって、テーブル４０内のこれらのエントリについて、Ｌｉｍｉｔ３ビット及びＬｉｍｉｔ４ビットは両方ともクリアとなる。ＤＶＦＭ状態２では、限度は３つのプロセッサになり得、それゆえ、Ｌｉｍｉｔ４ビットはセットされ、Ｌｉｍｉｔ３ビットはクリアとなる。ＤＶＦＭ状態３では、限度は２つのプロセッサになり得、それゆえ、Ｌｉｍｉｔ３ビット及びＬｉｍｉｔ４ビットの両方がセットされる。
【００３９】
テーブル４０は、レジスタ４４Ａによって指し示されたＬｉｍｉｔ３ビット及びＬｉｍｉｔ４ビットをＡＮＤゲート４８Ａ〜４８Ｂへそれぞれ出力してもよい。加えて、３つのアクティブなコアが存在するのか（３Ａｃ）、それとも４つのアクティブなコアが存在するのか（４Ａｃ）を示す信号がＡＮＤゲート４８Ａ〜４８Ｂへそれぞれ入力されてもよい。３Ａｃ信号及び４Ａｃ信号は制御回路４２によって発生されてもよい。したがって、Ｌｉｍｉｔ３ビットがセットされ、３つのアクティブなコアが存在する場合には、ＡＮＤゲート４８Ａはその出力信号をアサートしてもよい。Ｌｉｍｉｔ４ビットがセットされ、４つのアクティブなコアが存在する場合には、ＡＮＤゲート４８Ｂはその出力信号をアサートしてもよい。
【００４０】
ｍｕｘ  ４６Ａ〜４６Ｃを通したデフォルトの選択は第１の入力（ｍｕｘ  ４６Ｂ〜４６Ｃのためのレジスタ４４Ａ内の値に応じてテーブル４０から出力されたデータ、及びｍｕｘ  ４６Ａのためのレジスタ４４Ａの出力であってもよい）であってもよい。ＡＮＤゲート４８Ａ〜４８Ｂからのどちらのｍｕｘ選択もアサートされない場合には、デフォルトの出力が選択されてもよい。
【００４１】
本実施形態では、テーブル４０はＤＶＦＭ状態エントリを超えて追加のエントリを含む。これらの追加のエントリは、現在の動作点が、アクティブなプロセッサの最大数を制限し、その最大数がアクティブである（又はアクティブになろうとしている）場合に用いられるべき低減動作点を記憶してもよい。より具体的には、３ｒｄＣｏｒｅＭａｘエントリは、Ｌｉｍｉｔ３ビット（２つのプロセッサが最大数である場合）に対応する低減動作点を記述するデータを記憶してもよい。４ｔｈＣｏｒｅＭａｘエントリは、Ｌｉｍｉｔ４ビット（３つのプロセッサが最大数である場合）に対応する低減動作点を記憶してもよい。概して、４ｔｈＣｏｒｅＭａｘエントリは、使用時に３ｒｄＣｏｒｅＭａｘエントリよりも（プロセッサ毎の潜在的な消費電力に関して）低い動作点を表すデータを記憶してもよい。
【００４２】
テーブル４０は、３ｒｄＣｏｒｅＭａｘエントリ及び４ｔｈＣｏｒｅＭａｘエントリからのデータをｍｕｘ  ４６Ｂ〜４６Ｃへ出力するように構成されてもよい。３ｒｄＣｏｒｅＭａｘエントリからのデータは、ＡＮＤゲート４８Ａからの選択のアサーションに応じて選択されてもよく、４ｔｈＣｏｒｅＭａｘエントリからのデータは、ＡＮＤゲート４８Ｂからの選択のアサーションに応じて選択されてもよい。現在の動作点を特定するために、対応する識別子がｍｕｘ  ４６Ａを通して選択されてもよく、その一方で、ターゲット動作点はレジスタ４４Ａ内に保持されてもよい。いくつかの実施形態では、３ｒｄＣｏｒｅＭａｘエントリ及び４ｔｈＣｏｒｅＭａｘエントリはソフトウェアによって要求動作点として選択されなくてもよい（例えば、エントリは、レジスタ４４Ａに書き込まれ得るいかなる値によって指し示されなくてもよい）。他の実施形態では、エントリはまた、レジスタ４４Ａを介して選択されてもよい。このような実施形態では、３ｒｄＣｏｒｅＭａｘエントリ及び４ｔｈＣｏｒｅＭａｘエントリのための限度ビットベクトル（Ｌｉｍｉｔ３フィールド及びＬｉｍｉｔ４フィールド）が提供され、適正にプログラムされてもよい（又は３ｒｄＣｏｒｅＭａｘエントリのためのＬｉｍｉｔ３  １、Ｌｉｍｉｔ４  １及び４ｔｈＣｏｒｅＭａｘエントリのためのＬｉｍｉｔ３  ０、Ｌｉｍｉｔ４  １に結線接続されてもよい）。
【００４３】
図２では、ＡＮＤゲート４８Ａ〜４８Ｂは、制御回路４２から分離しているように示されているが、ＡＮＤゲート４８Ａ〜４８Ｂは制御回路４２の一部であってもよいことに留意されたい。更に、ＡＮＤゲート４８Ａ〜４８Ｂの代わりに、ＡＮＤゲート４８Ａ〜４８Ｂの任意のブール等価物を含む、任意の他の論理実装形態が用いられてもよい。
【００４４】
レジスタ４４Ｂ〜４４Ｄは、現在の動作点（又は移行が進行中である場合には、ＣＰＵ複合体１４が移行する動作点）を記述するデータを記憶してもよい。レジスタ４４Ｂは、現在の動作点の識別子（レジスタ４４ＡからＣＰＵ複合体１４のために要求されたターゲット識別子、又はアクティブなプロセッサの数が要求動作点の最大を超える場合には、置き換えの識別子のどちらか）を記憶してもよい。制御回路４２は、さまざまなＡＰＳＣイベント及びＤＰＥイベントのためにとるべきアクションを決定するべくレジスタ４４Ａ〜４４Ｂの出力を受信するために結合されてもよい。レジスタ４４Ｃは、現在要求されている供給電圧の大きさの表示を記憶してもよく、この表示はＰＭＵ  １５６へ伝えるためにＰＭＧＲ回路３２へ伝達されてもよい。同様に、現在要求されている動作周波数の表示が、ＣＰＵ複合体１４のための動作周波数を設定するためにレジスタ４４Ｄからクロック制御回路へ提供されてもよい。さまざまな実施形態において、クロック制御回路は、ＰＭＧＲ  ３２の一部であるか、ＣＰＵ複合体１４の一部であるか、又はＳＯＣ  １０内の他の箇所にあってもよい。
【００４５】
次に図３を参照すると、ＡＰＳＣ  １６（及びより具体的には、ＡＮＤゲート４８Ａ〜４８Ｂを含む制御回路４２）の一実施形態の動作を示すフローチャートが示されている。理解を容易にするためにブロックは特定の順序で示されているが、他の順序が用いられてもよい。ブロックはＡＰＳＣ  １６／制御回路４２内の組み合わせ論理内で並列に実行されてもよい。所望の場合には、ブロック、ブロックの組み合わせ、及び／又はフローチャート全体は、複数のクロックサイクルにわたってパイプライン処理されてもよい。ＡＰＳＣ  １６及び／又は制御回路４２は、図３に示される動作を実施するように構成されてもよい。
【００４６】
上述されたように、ＡＰＳＣ  １６／制御回路４２はＣＰＵ複合体１４内のさまざまなＡＰＳＣイベントを受信してもよい。ＡＰＳＣイベントは、プロセッサアクティブ化イベント及び非アクティブ化イベントを含んでもよい。プロセッサアクティブ化イベントが発生した場合には（決定ブロック５０、「はい」肢）、ＡＰＳＣ  １６／制御回路４２はアクティブなプロセッサのそのカウントを更新してもよい。アクティブなプロセッサの更新された数がＰＭＵ限度を潜在的に超える可能性がある場合には（決定ブロック５２、「はい」肢）、ＡＰＳＣ  １６／制御回路４２は、ＰＭＵ限度を超える可能性を防止するべく現在の動作点を低減するために、ｍｕｘ  ４６Ａ〜４６Ｃを通して適正なＣｏｒｅＭａｘ電力状態（又は動作点）を選択してもよい（ブロック５４）。本実施形態では、現在選択されているターゲットエントリ内のビットベクトルからの対応する限度ビットがセットされている場合には、アクティブなプロセッサの更新された数はＰＭＵ限度を超える可能性がある。いくつかの実施形態では、１つを超えるこうした移行が行われてもよい。例えば、ターゲット動作点が図２におけるＤＶＦＭ状態３であり、２つのプロセッサが最初にアクティブである場合には、ターゲット動作点は確立されてもよい。その後、第３のプロセッサのアクティブ化が、３ｒｄＣｏｒｅＭａｘ状態への動作点の低減を引き起こす場合がある。３ｒｄＣｏｒｅＭａｘ状態にある間に（又は更に、３ｒｄＣｏｒｅＭａｘ状態へ移行している間に）、第４のプロセッサがアクティブ化し、４ｔｈＣｏｒｅＭａｘ状態への移行を引き起こす場合がある。
【００４７】
低減された状態への移行は時間を要する場合がある。例えば、動作周波数を低減するために約４．５マイクロ秒が使われる場合があり、次に、供給電圧の大きさを低減するために約５マイクロ秒が使われる場合がある。移行時間の最中に、新たにアクティブ化するプロセッサが実行し始める場合があり、その結果、低減動作点が確立されるまでＰＭＵ限度を超えていることが生じ得る。これを防止するために、ＡＰＳＣ  １６／制御回路４２は、クロック分周器を用いて動作周波数を低減してもよい（例えば、クロック周波数を２又は何らかの他の整数で割る）。このような動作周波数変更は、例えば、位相ロックループ（ＰＬＬ）を新しいクロック周波数へ再ロックすることを必要とする、異なる動作点において指定されているとおりの周波数間の変更よりも高速に達成され得る。すなわち、除数を、現在の整数の２の累乗である異なる整数に変更することは、クロック信号の位相を変更しなくてもよく、それゆえＰＬＬロックは失われなくてもよく、再獲得される必要がない。低減された周波数は、低減動作点への移行が完了するまで有効であり続けてもよい。
【００４８】
ＡＰＳＣイベントがプロセッサの非アクティブ化である場合には（決定ブロック５８、「いいえ」肢）、制御回路４２はアクティブなプロセッサの数を更新してもよい。現在の動作点が低減動作点のうちの１つである場合には、アクティブなプロセッサの更新された数に基づいて、ターゲット動作点又はより高い動作点（例えば、現在の動作点が４ｔｈＣｏｒｅＭａｘ状態である場合には、３ｒｄＣｏｒｅＭａｘ状態）に戻ることは安全になり得る。更新された数が、より高い動作点が用いられてもよいことを示す場合には（決定ブロック６０、「はい」肢）、ＡＰＳＣ  １６／制御回路４２はｍｕｘ  ４６Ａ〜４６Ｃを通して新しい動作点を選択してもよい（ブロック６２）。
【００４９】
現在の動作点に影響を与え得る別の種類のＡＰＳＣイベントは、レジスタ４４Ａ内のＴｇｔＳｅｌ値によって表されるとおりの、選択動作点の変更である。制御回路４２が、変更を検出するためにレジスタ４４Ａを監視してもよいか、又はソフトウェアが、動作点の変更を示すために別のレジスタを更新してもよく、それがＡＰＳＣイベントとなってもよい。ＴｇｔＳｅｌが、異なる動作点を示すように変更された場合には（決定ブロック６４）、その異なる動作点のために、現在アクティブなプロセッサに対してはＰＭＵ限度を超えてしまう可能性が潜在的にある。したがって、ＴｇｔＳｅｌが変更され（決定ブロック６４、「はい」肢）、新たに選択された動作点が、現在アクティブなプロセッサの数と関連して、ＰＭＵ限度を潜在的に超え得ることを示す場合には（決定ブロック６６、「はい」肢）、ＡＰＳＣ  １６／制御回路４２は、上述の説明と同様に、ｍｕｘ  ４６Ａ〜４６Ｃを通して適正なＣｏｒｅＭａｘ状態を選択してもよく、移行が完了するまで動作周波数を低減してもよい（ブロック６８及び７０）。新たに選択された動作点のために、現在アクティブなプロセッサの数ではＰＭＵ限度を超えてしまう可能性がない場合には（決定ブロック６６、「いいえ」肢）、ＡＰＳＣ  １６／制御回路４２はＴｇｔＳｅｌ動作点を選択してもよく、選択動作点へ移行してもよい（ブロック７２）。
【００５０】
上述されたように、いくつかの実施形態はまた、ＤＰＥ回路２０を用いてもよく、このような実施形態は、３ｒｄＣｏｒｅＭａｘエントリ及び４ｔｈＣｏｒｅＭａｘエントリを、もしＤＰＥ回路２０が含まれていなければ許容されるであろう動作点よりも高い動作点（より高い供給電圧の大きさ及び動作周波数）にプログラムすることを可能にし得る。図４は、ＡＰＳＣ  １６と併用するためのＤＰＥ回路２０の一実施形態の動作を示すフローチャートである。理解を容易にするためにブロックは特定の順序で示されているが、他の順序が用いられてもよい。ブロックはＤＰＥ回路２０内の組み合わせ論理内で並列に実行されてもよい。所望の場合には、ブロック、ブロックの組み合わせ、及び／又はフローチャート全体は、複数のクロックサイクルにわたってパイプライン処理されてもよい。ＤＰＥ  ２０は、図４に示される動作を実施するように構成されてもよい。
【００５１】
ＤＰＥ回路２０はＣＰＵ複合体１４内のアクティブなプロセッサを監視してもよく、消費電力のデジタル推定値を形成するように構成されてもよい（ブロック８０）。デジタル推定値はいかなる方法で生成されてもよい。例えば、ＤＰＥ回路２０は、各プロセッサを有するさまざまなブロック（例えばパイプライン段、実行ユニット、その他のマイクロアーキテクチャブロックなど）を監視するように構成されてもよい。ＤＰＥ回路は、各ブロックからのアクティビティレベル、イベント、又はアクティビティの任意のその他の尺度を検出するように構成されてもよく、監視されているアクティビティによって消費される電力を推定してもよい。ＤＰＥ回路２０は、例えば、各々の監視されているアクティビティについての数値係数をプログラム可能であってもよく、推定値を形成するために各アクティビティについての係数を合計してもよい。いくつかの実施形態では、推定値は現在の動作周波数及び供給電圧の大きさに合わせてスケーリングされてもよい。ＤＰＥ回路２０は、アクティブなプロセッサの電力推定値が、ＰＭＵ限度を超える可能性があることを示しているかどうかを判定するように構成されてもよい（決定ブロック８２）。そうである場合には（決定ブロック８２、「はい」肢）、ＤＰＥ回路２０は、１つ以上のアクティブなプロセッサに対してスロットリングを行うように構成されてもよい（ブロック８４）。
【００５２】
いくつかの実施形態では、ＤＰＥ回路２０はまた、プロセッサは閾値回数よりも多くスロットリングが行われたかどうかを判定するように構成されてもよいことに留意されたい。このような動作を検出することは、ＣＰＵ複合体１４が最悪の場合の消費電力を経験していることを示す可能性があり、それゆえ、スロットリングを低減するために、更に低減された動作点が望まれてもよいことを示す可能性がある。一実施形態では、ＤＰＥ回路２０は、このような変更を要求するための制御回路４２へのＤＰＥイベントを生成してもよい。このような実施形態では、ＤＰＥ回路２０はまた、ＤＰＥ回路２０は閾値回数よりも多くプロセッサに対してスロットリングを行わなかったことを検出する場合もあり、動作点が以前に更に低減されていた場合には、動作点を以前のレベルへ戻すためのＤＰＥイベントを生成してもよい。いくつかのこのような実施形態が以下において更に詳細に説明される。
【００５３】
次に図５を参照すると、ＣＰＵ複合体１４の一部分の一実施形態のブロック図が示されている。図示されている実施形態では、ＣＰＵ複合体１４は、ＤＰＥ回路２０、プロセッサ２８、及びヒステリシスカウンタ９０を含む。ＤＰＥ回路２０は、プロセッサ２８及びヒステリシスカウンタ９０に結合されるとともに、ＤＶＦＭ要求を提供するために結合される。プロセッサ２８のうちの１つは、ブロック９２Ａ〜９２Ｄを含むように示されている。他のプロセッサ２８も同様であってよい。ＤＰＥ回路２０は、１つ以上の電力閾値レジスタ９４及び（１つ以上の）比較器９６を含んでもよい。ヒステリシスカウンタ９０は、アップカウンタ９８、ダウンカウンタ１００、及びレジスタ１０２内の１つ以上のカウント閾値を含んでもよい。
【００５４】
ブロック９２Ａ〜９２Ｄはプロセッサ２８のさまざまなサブ機能を実装してもよい。例えば、ブロック９２Ａ〜９２Ｄはプロセッサ２８のさまざまなパイプラインステージであってもよい。ブロック９２Ａ〜９２Ｄはプロセッサ２８内の実行ユニットであってもよい。ブロック９２Ａ〜９２Ｄは、実行ユニットに加えて、その他のマイクロアーキテクチャ要素（例えばキャッシュ、復号ユニット、分岐予測ハードウェア、リネームハードウェア、リオーダバッファ、スケジューラ、リザベーションステーションなど）であってもよい。所望に応じて、任意のブロック分割が行われてもよい。各ブロック９２Ａ〜９２Ｄは１つ以上のアクティビティインジケータ（ＡＩ：activity indicator）をＤＰＥ回路２０に提供してもよい。いくつかの実施形態では、ブロック９２Ａ〜９２Ｄの全てがアクティビティインジケータを提供しなくてもよい。プロセッサ２８内のブロックの数は実施形態によって異なってもよい。
【００５５】
アクティビティインジケータに基づいて、ＤＰＥ回路２０は、プロセッサ２８についての電力推定値を生成するように構成されてもよい。ＤＰＥ回路は、電力推定値をレジスタ９４からの電力閾値と比較するように構成されてもよい。電力推定値が電力閾値を超えた場合には、ＤＰＥ回路２０は、プロセッサ２８のうちの１つ以上に対してスロットリングを行うように構成されてもよい。例えば、ＤＰＥ回路２０は、最も多くの電力を消費しているプロセッサ又はプロセッサ群２８に対してスロットリングを行ってもよい。代替的に、ＤＰＥ回路２０はプロセッサ群２８に対して均等にスロットリングを行ってもよい。ブロック９２Ａ〜９２Ｄへのスロットリング表示は、さまざまなブロックに対してスロットリングを行ってもよい。いくつかの実施形態では、全てのブロック９２Ａ〜９２Ｄがスロットリング表示を受信しなくてもよい。加えて、ＤＰＥ回路２０は、電力推定値が電力閾値を超えたとの信号をヒステリシスカウンタ９０へ送るように構成されてもよい。電力推定値が電力閾値を超えていない場合には、ＤＰＥ回路２０はプロセッサ２８に対してスロットリングを行わなくてもよく、電力推定値は電力閾値を超えていないとの信号をヒステリシスカウンタ９０へ送ってもよい。代替的に、電力閾値レジスタ９４は第２の電力閾値を記憶してもよく、比較器９６は第２の電力閾値を電力推定値と比較し、電力推定値は第２の電力閾値を超えていないとの信号をヒステリシスカウンタ９０へ送ってもよい。第２の電力閾値は、本段落において上述された他の電力閾値よりも低くプログラムされてもよい。
【００５６】
電力閾値はＰＭＵ  １５６の能力に基づいてプログラムされてもよく、ＰＭＵの能力を超えないことを確実にするためのガードバンディング（guard banding）を含んでもよい。電力閾値は、ＤＰＥ回路２０がＡＰＳＣ  １６と併用される実施形態では、ＤＰＥ回路２０のみが用いられる場合と異なってプログラムされてもよい（例えば、ＡＰＳＣ  １６と併用される時には閾値はより高くてもよい）。
【００５７】
ヒステリシスカウンタは、電力閾値を超えたとの信号に応じてアップカウンタ９８をインクリメントするように構成されてもよく、電力閾値を超えていないとの信号に応じてダウンカウンタをインクリメントするように構成されてもよい。カウントは閾値レジスタ１０２からのカウント閾値と比較されてもよく、ヒステリシスカウンタ９０は、閾値を超えたかどうかをＤＰＥ回路２０に信号で知らせるように構成されてもよい。アップカウンタが閾値を超えた場合には、ＤＰＥ回路２０は、動作点を低減せよとのＤＶＦＭ要求を生成するように構成されてもよい。ダウンカウンタが閾値を超えた場合には、ＤＰＥ回路２０は、動作点が以前に低減されていた場合には、動作点を復元せよとのＤＶＦＭ要求を生成するように構成されてもよい。いくつかの実施形態では、アップカウンタ９８及びダウンカウンタ１００のためにレジスタ１０２内の別個のカウント閾値が存在してもよい。他の実施形態では、同じ閾値が用いられてもよい。
【００５８】
一実施形態では、ヒステリシスカウンタ９０は、アップカウンタをインクリメントする際にダウンカウンタをクリアし、その逆も行うように構成されてもよい。したがって、アップカウンタ９８は、電力閾値（又は第２の電力閾値）を超えない介在推定値を有しない、電力閾値を超えた連続した電力推定値の数のカウントになってもよい。同様に、ダウンカウンタ１００は、電力閾値を超えた介在電力推定値を有しない、電力閾値（又は第２の電力閾値）を超えない連続した電力推定値の数のカウントになってもよい。このように、ＤＶＦＭ移行を生じさせるまでに電力推定値におけるヒステリシスが存在してもよい。電力推定値は、プロセッサ２８をクロック制御するクロックのクロックサイクル毎に取得されてもよい。代替的に、電力推定値は、よりゆっくりした間隔で、間隔全体を通じたアクティビティに基づいて取得されてもよい。
【００５９】
次に図６を参照すると、ＤＰＥ回路２０と対話するためのＤＶＦＭハードウェア及び／又はソフトウェアの一実施形態の動作を示すフローチャートが示されている。理解を容易にするためにブロックは特定の順序で示されているが、他の順序が用いられてもよい。ハードウェアの形態で実装される機能（例えば、さまざまな実施形態における、ＡＰＳＣ  １６及び／又はＰＭＧＲ  ３２）については、ブロックはＤＶＦＭハードウェア内の組み合わせ論理内で並列に実行されてもよい。所望の場合には、ブロック、ブロックの組み合わせ、及び／又はフローチャート全体は、複数のクロックサイクルにわたってパイプライン処理されてもよい。ＤＶＦＭハードウェアは、図６に示される動作を実施するように構成されてもよい。ソフトウェアの形態で実装される機構については、ソフトウェアコードは、上述の機構のための動作を実施するために（例えば、プロセッサ２８のうちの１つによって）実行可能な命令を含んでもよい。
【００６０】
ＤＶＦＭハードウェア／ソフトウェアはＣＰＵ複合体１４のための動作点を選択してもよい（ブロック１１０）。さまざまな因子が動作点の選択に影響を与え得る。例えば、実行されるべきタスクのスケジュールが選択に影響を与え得る。実行されるべき作業がより多く存在する場合には、より高い動作点が所望されてもよい（なぜなら、より高い動作点は、より高い性能をもたらすはずだからである）。他方で、実行されるべきタスクがより少ない場合には、電力を節約するために、より低い動作点が選択されてもよい。システムのために利用可能なエネルギー（例えば、壁コンセントへの差し込み対電池電力及び利用可能な残りの電池電力の量）が、所望の動作点に影響を与える因子になる場合がある。場合によっては、熱の問題が低減動作点の原因になる場合がある。
【００６１】
ＤＶＦＭハードウェア／ソフトウェアは、十分なプロセッサがアクティブになっている場合には、選択動作点においてＣＰＵ複合体１４がＰＭＵ限度を超えることが潜在的にあり得るかどうかを判定してもよい（決定ブロック１１２）。そうである場合には（決定ブロック１１２、「はい」肢）、ＤＶＦＭハードウェア／ソフトウェアは、アクティブなプロセッサを監視するためにＤＰＥ回路２０を有効にしてもよい（ブロック１１４）。いくつかの実施形態では、ＤＶＦＭハードウェア／ソフトウェアはまた、ＤＰＥ回路２０内の電力閾値及びヒステリシスカウンタ９０内のカウント閾値をプログラムしてもよい（ブロック１１６）。いくつかの実施形態では、電力閾値及び／又はカウント閾値は選択動作点に基づいて変化してもよく、ＤＰＥ回路２０が有効にされるたびにプログラムされてもよい。他の実施形態では、閾値は動作点毎に同じであってもよく、それらは、例えばＳＯＣ  １０の初期化中に、１度プログラムされてもよい。ＣＰＵ複合体１４が、選択動作点においてＰＭＵ限度を超えることがあり得ない場合には（決定ブロック１１２、「いいえ」肢）、監視は必要ないため、ＤＶＦＭハードウェア／ソフトウェアはＤＰＥ回路２０を無効にしてもよい（ブロック１１８）。どちらの場合でも、ＤＶＦＭハードウェア／ソフトウェアは選択動作点への変更を開始してもよい（ブロック１１９）。
【００６２】
次に図７を参照すると、ＤＰＥ回路２０及びヒステリシスカウンタ９０の一実施形態の動作を示すフローチャートが示されている。理解を容易にするためにブロックは特定の順序で示されているが、他の順序が用いられてもよい。ブロックは、ＤＰＥ回路２０及び／又はヒステリシスカウンタ９０内の組み合わせ論理内で並列に実行されてもよい。所望の場合には、ブロック、ブロックの組み合わせ、及び／又はフローチャート全体は、複数のクロックサイクルにわたってパイプライン処理されてもよい。ＤＰＥ回路２０及び／又はヒステリシスカウンタ９０は、図７に示される動作を実施するように構成されてもよい。
【００６３】
ＤＰＥ回路２０は（有効にされると）、プロセッサ２８内のプロセッサアクティビティを監視し、電力推定値を生成するように構成されてもよい（ブロック１２０）。ＤＰＥ回路２０は、推定値を高電力閾値（決定ブロック１２２）及び低電力閾値（決定ブロック１２８）と比較するように構成されてもよい。高電力閾値は、２つの閾値が実装される場合において、ＤＰＥ回路２０が、電力閾値を超えるかどうかを判定するために電力推定値を比較する対象となる電力閾値であってもよい。低閾値は、２つの閾値が実装される場合において、ＤＰＥ回路２０が、より高い動作点への復帰が許容され得るどうかを判定するために電力推定値を比較する対象となる電力閾値であってもよい。いくつかの実施形態では、１つの閾値のみが実装されてもよく、その単一の閾値に対する比較（より大きい／より小さい）が行われてもよい。
【００６４】
電力推定値が高電力閾値を超えた場合には（決定ブロック１２２、「はい」肢）、ＤＰＥ回路２０は、プロセッサ２８に対してスロットリングを行うように構成されてもよい（ブロック１２４）。加えて、ＤＰＥ回路２０は、ヒステリシスカウンタ９０に信号を送るように構成されてもよく、ヒステリシスカウンタ９０は、アップカウンタ９８をインクリメントし、ダウンカウンタ１００をクリアするように構成されてもよい（ブロック１２６）。他方で、電力推定値が低閾値よりも小さい場合には（決定ブロック１２８、「はい」肢）、ＤＰＥ回路２０は、ヒステリシスカウンタ９０へ信号を送るように構成されてもよく、ヒステリシスカウンタ９０は、ダウンカウンタ１００をインクリメントし、アップカウンタ９８をクリアするように構成されてもよい（ブロック１３０）。
【００６５】
ヒステリシスカウンタ９０は、アップカウンタ９８及びダウンカウンタ１００内のアップカウント及びダウンカウントを閾値レジスタ１０２内のカウント閾値と（又は、アップカウンタ及びダウンカウンタのための別個の閾値が実装されている場合には、それらの別個の閾値と）比較するように構成されてもよい。アップカウントがカウント閾値を超えた場合には（決定ブロック１３２、「はい」肢）、ヒステリシスカウンタ９０は、ＤＰＥ回路２０へ信号を送ってもよく、ＤＰＥ回路２０は、より低い動作点へ変更するためにＤＶＦＭハードウェアへ信号を送ってもよい（ブロック１３４）。ダウンカウント１３６がカウント閾値を超えた場合には（決定ブロック１３６、「はい」肢）、ヒステリシスカウンタ９０はＤＰＥ回路２０へ信号を送ってもよく、アップカウントに基づいてより高い動作点が以前に低減されていた場合には、ＤＰＥ回路２０は、そのより高い動作点を復元するためにＤＶＦＭハードウェアへ信号を送ってもよい（ブロック１３８）。ＡＰＳＣ  １６が含まれる実施形態では、ＤＶＦＭハードウェアはＡＰＳＣ  １６であってもよい。他の実施形態では、ＡＰＳＣ  １６は含まれなくてもよく、ＤＶＦＭハードウェアはＰＭＧＲ  ３２内にあってもよい。
【００６６】
次に図８を参照すると、システム１５０の一実施形態のブロック図が示されている。図示されている実施形態では、システム１５０は、１つ以上の周辺装置１５４及び外部メモリ１２に結合されるＳＯＣ  １０の少なくとも１つのインスタンスを含む。ＳＯＣ  １０に供給電圧を供給するとともに、メモリ１２及び／又は周辺装置１５４に１つ以上の供給電圧を供給するＰＭＵ１５６が提供されている。いくつかの実施形態では、ＳＯＣ  １０の１つを超えるインスタンスが含まれてもよい（及び１つを超えるメモリ１２も含まれてよい）。
【００６７】
周辺装置１５４は、システム１５０の種類に応じて、任意の所望の回路機構を含んでよい。例えば、一実施形態では、システム１５０はモバイルデバイス（例えば、携帯情報端末（ＰＤＡ：personal digital assistant）、スマートフォン等）であってもよく、周辺装置１５４は、Ｗｉ−Ｆｉ、Ｂｌｕｅｔｏｏｔｈ（登録商標）、セルラー、全地球測位システムなど等の、さまざまな種類の無線通信用のデバイスを含んでもよい。周辺装置１５４はまた、ＲＡＭ記憶装置、ソリッドステート記憶装置、又はディスク記憶装置を含む、追加の記憶装置を含んでもよい。周辺装置１５４は、タッチ表示画面又はマルチタッチ表示画面を含む、表示画面、キーボード又はその他の入力デバイス、マイクロフォン、スピーカ等などの、ユーザインタフェースデバイスを含んでもよい。他の実施形態では、システム１５０は任意の種類のコンピューティングシステム（例えばデスクトップパーソナルコンピュータ、ラップトップ、ワークステーション、ネットトップなど）であってもよい。
【００６８】
外部メモリ１２は任意の種類のメモリを含んでもよい。例えば、外部メモリ１２は、ＳＲＡＭ、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）などのダイナミックＲＡＭ（ＤＲＡＭ）、ダブルデータレート（ＤＤＲ、ＤＤＲ２、ＤＤＲ３など）ＳＤＲＡＭ、ＲＡＭＢＵＳ  ＤＲＡＭ、ＤＤＲ  ＤＲＡＭの低電力バージョン（例えばＬＰＤＤＲ、ｍＤＤＲなど）、などであってもよい。外部メモリ１２は、シングルインラインメモリモジュール（ＳＩＭＭ：single inline memory module）、デュアルインラインメモリモジュール（ＤＩＭＭ：dual inline memory module）等などの、メモリデバイスが装着される１つ以上のメモリモジュールを含んでもよい。代替的に、外部メモリ１２は、チップオンチップ又はパッケージオンパッケージ実装でＳＯＣ  １０上に装着される１つ以上のメモリデバイスを含んでもよい。
【００６９】
上述の開示が完全に理解されれば、当業者には数多くの変形及び変更が明らかになるであろう。以下の特許請求の範囲は、そのような変形及び変更の全てを包含するように解釈されることが意図される。
【図１】
2016527609.tif 000003
【図２】
2016527609.tif 000004
【図３】
2016527609.tif 000005
【図４】
2016527609.tif 000006
【図５】
2016527609.tif 000007
【図６】
2016527609.tif 000008
【図７】
2016527609.tif 000009
【図８】
2016527609.tif 000010
【手続補正書】
【提出日】平成28年1月21日(2016.1.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のプロセッサと、
前記複数のプロセッサに結合される電力制御回路であって、前記電力制御回路は、前記複数のプロセッサのための複数の動作点を記述するデータをプログラム可能であり、前記データは、前記複数の動作点のそれぞれの動作点についての表示であって、当該それぞれの動作点における、前記複数のプロセッサ内のアクティブなプロセッサの第１の数の限度を示す表示を更に含み、前記それぞれの動作点におけるアクティブなプロセッサの前記限度を超えることは、前記アクティブなプロセッサが最大量の電力を消費している際に前記複数のプロセッサに電力を提供する電力管理ユニットの能力を超えることになる可能性があり、前記電力制御回路は、選択動作点においてアクティブになるプロセッサの第２の数が前記選択動作点についての前記限度を超えることを検出するように構成され、かつ、前記検出に応じて、前記選択動作点を第２の動作点と置き換えるように構成される、電力制御回路と、
を備えることを特徴とする装置。
【請求項２】
前記第２の動作点が、前記選択動作点よりも低電力の動作点である
ことを特徴とする請求項１に記載の装置。
【請求項３】
前記第２の動作点における前記複数のプロセッサのためのクロック周波数が、前記選択動作点における前記複数のプロセッサのためのクロック周波数よりも低い
ことを特徴とする請求項２に記載の装置。
【請求項４】
前記第２の動作点における前記複数のプロセッサのための供給電圧の大きさが、前記選択動作点における前記複数のプロセッサのための供給電圧の大きさよりも低い
ことを特徴とする請求項２に記載の装置。
【請求項５】
前記電力制御回路が、前記複数のプロセッサのうちの第１のプロセッサがアクティブ化することに応じて、前記第２の数が前記限度を超えることを検出するように構成され、
前記選択動作点が、前記第１のプロセッサがアクティブ化する時点における現在の動作点である
ことを特徴とする請求項１に記載の装置。
【請求項６】
前記電力制御回路が、前記複数のプロセッサの現在の動作点を前記選択動作点に変更せよとの要求に応じて、前記第２の数が前記限度を超えることを検出するように構成される
ことを特徴とする請求項１に記載の装置。
【請求項７】
前記電力制御回路が、前記複数のプロセッサの現在の動作点が前記第２の動作点である間に前記複数のプロセッサのうちの１つが非アクティブ化することに応じて、アクティブなプロセッサの前記数が前記限度よりも少ないことを検出するように構成され、
前記電力制御回路が、前記非アクティブ化の検出に応じて、前記選択動作点に変更するように構成される
ことを特徴とする請求項１に記載の装置。
【請求項８】
前記複数のプロセッサに結合され、前記複数のプロセッサによって消費される電力量を推定するように構成されるデジタル電力推定器を更に備え、
前記デジタル電力推定器は、前記電力量が閾値量を超えることに応じて、前記複数のプロセッサのうちの１つ以上に対してスロットリングを行うように構成される
ことを特徴とする請求項１に記載の装置。
【請求項９】
システム・オン・チップに複数の供給電圧を供給するように構成される電力管理ユニットと、
前記電力管理ユニットに結合され、請求項１に記載の装置を含む前記システム・オン・チップと、
を備えることを特徴とするシステム。
【請求項１０】
前記システム・オン・チップが、
前記電力管理ユニットからの前記複数の供給電圧についての複数の供給電圧の大きさを要求するように構成される電力マネージャ回路と、
複数のプロセッサ、及び前記複数のプロセッサに結合される電力制御回路を含む中央処理装置複合体であって、前記電力制御回路は、前記複数のプロセッサの動作点を、前記複数のプロセッサのうちのアクティブなプロセッサの数が、前記動作点に関連付けられたアクティブなプロセッサの最大数を超えることに応じて自動的に低減するように構成され、前記電力制御回路は、前記低減に応じて、要求された供給電圧の大きさを前記電力マネージャ回路へ伝送するように構成される、中央処理装置複合体と、
を含むことを特徴とする請求項９に記載のシステム。
【請求項１１】
システム内の複数のプロセッサのうちのアクティブなプロセッサの第１の数を監視する工程と、
アクティブになるプロセッサの第２の数が、前記複数のプロセッサの現在の動作点に対して許容されるアクティブなプロセッサの最大数を超えることを検出する工程であって、前記検出は、前記現在の動作点に関連付けられた表示に応じるものであり、それぞれの動作点におけるアクティブなプロセッサの前記最大数を超えることは、前記アクティブなプロセッサが最大量の電力を消費している際に前記複数のプロセッサに電力を提供する電力管理ユニットの能力を超えることになる可能性がある、検出する工程と、
前記数が前記最大数を超えることの検出に応じて、前記現在の動作点を第２の動作点に置き換える工程と、
を含むことを特徴とする方法。
【請求項１２】
前記検出が、現在非アクティブの前記複数のプロセッサのうちの１つをアクティブ化せよとの要求に更に応じるものである
ことを特徴とする請求項１１に記載の方法。
【請求項１３】
現在アクティブなプロセッサの第３の数が、前記複数のプロセッサの要求動作点に対して許容されるアクティブなプロセッサの前記最大数を超えることを検出する工程と、
前記検出に応じて、前記現在の動作点を、前記要求動作点よりも小さい第２の動作点に変更する工程と、
を更に含むことを特徴とする請求項１１に記載の方法。
【請求項１４】
前記アクティブなプロセッサのうちの１つの非アクティブ化を検出する工程であって、前記非アクティブ化は、アクティブなプロセッサの前記第３の数を、前記要求動作点に対して許容される数に低減する、検出する工程と、
前記検出に応じて、前記現在の動作点を前記要求動作点に変更する工程と、
を更に含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記アクティブなプロセッサのうちの１つの非アクティブ化を検出する工程であって、前記非アクティブ化は、アクティブなプロセッサの前記第１の数を、前記現在の動作点に対して許容される数に低減する、検出する工程と、
前記検出に応じて、前記現在の動作点を復元する工程と、
を更に含むことを特徴とする請求項１１に記載の方法。
【国際調査報告】
2016527609.tif 000011
2016527609.tif 000012
2016527609.tif 000013