特許第6154071号(P6154071)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ アップル インコーポレイテッドの特許一覧

特許6154071アクティブなプロセッサに基づく動的電圧及び周波数管理
<>
  • 特許6154071-アクティブなプロセッサに基づく動的電圧及び周波数管理 図000002
  • 特許6154071-アクティブなプロセッサに基づく動的電圧及び周波数管理 図000003
  • 特許6154071-アクティブなプロセッサに基づく動的電圧及び周波数管理 図000004
  • 特許6154071-アクティブなプロセッサに基づく動的電圧及び周波数管理 図000005
  • 特許6154071-アクティブなプロセッサに基づく動的電圧及び周波数管理 図000006
  • 特許6154071-アクティブなプロセッサに基づく動的電圧及び周波数管理 図000007
  • 特許6154071-アクティブなプロセッサに基づく動的電圧及び周波数管理 図000008
  • 特許6154071-アクティブなプロセッサに基づく動的電圧及び周波数管理 図000009
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6154071
(24)【登録日】2017年6月9日
(45)【発行日】2017年6月28日
(54)【発明の名称】アクティブなプロセッサに基づく動的電圧及び周波数管理
(51)【国際特許分類】
   G06F 1/32 20060101AFI20170619BHJP
   G06F 1/04 20060101ALI20170619BHJP
   G06F 15/78 20060101ALI20170619BHJP
【FI】
   G06F1/32 Z
   G06F1/04 575
   G06F15/78 517
   G06F15/78 530
【請求項の数】15
【全頁数】20
(21)【出願番号】特願2016-521404(P2016-521404)
(86)(22)【出願日】2014年4月16日
(65)【公表番号】特表2016-527609(P2016-527609A)
(43)【公表日】2016年9月8日
(86)【国際出願番号】US2014034386
(87)【国際公開番号】WO2014204568
(87)【国際公開日】20141224
【審査請求日】2016年1月21日
(31)【優先権主張番号】13/924,164
(32)【優先日】2013年6月21日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】503260918
【氏名又は名称】アップル インコーポレイテッド
(74)【代理人】
【識別番号】100076428
【弁理士】
【氏名又は名称】大塚 康徳
(74)【代理人】
【識別番号】100115071
【弁理士】
【氏名又は名称】大塚 康弘
(74)【代理人】
【識別番号】100112508
【弁理士】
【氏名又は名称】高柳 司郎
(74)【代理人】
【識別番号】100116894
【弁理士】
【氏名又は名称】木村 秀二
(74)【代理人】
【識別番号】100130409
【弁理士】
【氏名又は名称】下山 治
(74)【代理人】
【識別番号】100134175
【弁理士】
【氏名又は名称】永川 行光
(74)【代理人】
【識別番号】100134474
【弁理士】
【氏名又は名称】坂田 恭弘
(72)【発明者】
【氏名】リー, ヨン−スク
(72)【発明者】
【氏名】マリー, ダニエル シー.
(72)【発明者】
【氏名】リーエン, ウエイ−ハン
【審査官】 宮下 誠
(56)【参考文献】
【文献】 米国特許出願公開第2012/0117403(US,A1)
【文献】 特開2012−198922(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 1/32
G06F 1/04
G06F 15/78
(57)【特許請求の範囲】
【請求項1】
複数のプロセッサと、
前記複数のプロセッサに結合される電力制御回路であって、前記電力制御回路は、前記複数のプロセッサのための複数の動作点を記述するデータをプログラム可能であり、前記データは、前記複数の動作点のそれぞれの動作点についての表示であって、当該それぞれの動作点における、前記複数のプロセッサのうちのアクティブなプロセッサの第1の数の限度を示す表示を更に含み、前記それぞれの動作点におけるアクティブなプロセッサの前記限度を超えることは、前記アクティブなプロセッサが最大量の電力を消費している際に前記複数のプロセッサに電力を提供する電力管理ユニットの能力を超えることになる可能性があり、前記電力制御回路は、選択動作点においてアクティブになるプロセッサの第2の数が前記選択動作点についての前記限度を超えることを検出するように構成され、かつ、前記検出に応じて、前記選択動作点を第2の動作点と置き換えるように構成される、電力制御回路と、
を備えることを特徴とする装置。
【請求項2】
前記第2の動作点が、前記選択動作点よりも低電力の動作点である
ことを特徴とする請求項1に記載の装置。
【請求項3】
前記第2の動作点における前記複数のプロセッサのためのクロック周波数が、前記選択動作点における前記複数のプロセッサのためのクロック周波数よりも低い
ことを特徴とする請求項2に記載の装置。
【請求項4】
前記第2の動作点における前記複数のプロセッサのための供給電圧の大きさが、前記選択動作点における前記複数のプロセッサのための供給電圧の大きさよりも低い
ことを特徴とする請求項に記載の装置。
【請求項5】
前記電力制御回路が、前記複数のプロセッサのうちの第1のプロセッサがアクティブ化することに応じて、前記第2の数が前記限度を超えることを検出するように構成され、
前記選択動作点が、前記第1のプロセッサがアクティブ化する時点における現在の動作点である
ことを特徴とする請求項に記載の装置。
【請求項6】
前記電力制御回路が、前記複数のプロセッサの現在の動作点を前記選択動作点に変更せよとの要求に応じて、前記第2の数が前記限度を超えることを検出するように構成される
ことを特徴とする請求項に記載の装置。
【請求項7】
前記電力制御回路が、前記複数のプロセッサの現在の動作点が前記第2の動作点である間に前記複数のプロセッサのうちの1つが非アクティブ化することに応じて、アクティブなプロセッサの前記数が前記限度よりも少ないことを検出するように構成され、
前記電力制御回路が、前記非アクティブ化の検出に応じて、前記選択動作点に変更するように構成される
ことを特徴とする請求項に記載の装置。
【請求項8】
前記複数のプロセッサに結合され、前記複数のプロセッサによって消費される電力量を推定するように構成されるデジタル電力推定器を更に備え、
前記デジタル電力推定器は、前記電力量が閾値量を超えることに応じて、前記複数のプロセッサのうちの1つ以上に対してスロットリングを行うように構成される
ことを特徴とする請求項に記載の装置。
【請求項9】
システム・オン・チップに複数の供給電圧を供給するように構成される電力管理ユニットと、
前記電力管理ユニットに結合され、請求項に記載の装置を含む前記システム・オン・チップと、
を備えることを特徴とするシステム。
【請求項10】
前記システム・オン・チップが、
前記電力管理ユニットからの前記複数の供給電圧についての複数の供給電圧の大きさを要求するように構成される電力マネージャ回路と、
複数のプロセッサ、及び前記複数のプロセッサに結合される電力制御回路を含む中央処理装置複合体であって、前記電力制御回路は、前記複数のプロセッサの動作点を、前記複数のプロセッサのうちのアクティブなプロセッサの数が、前記動作点に関連付けられたアクティブなプロセッサの最大数を超えることに応じて自動的に低減するように構成され、前記電力制御回路は、前記低減に応じて、要求された供給電圧の大きさを前記電力マネージャ回路へ伝送するように構成される、中央処理装置複合体と、
を含むことを特徴とする請求項9に記載のシステム。
【請求項11】
システム内の複数のプロセッサのうちのアクティブなプロセッサの第1の数を監視する工程と、
アクティブになるプロセッサの第2の数が、前記複数のプロセッサの現在の動作点に対して許容されるアクティブなプロセッサの最大数を超えることを検出する工程であって、前記検出は、前記現在の動作点に関連付けられた表示に応じるものであり、それぞれの動作点におけるアクティブなプロセッサの前記最大数を超えることは、前記アクティブなプロセッサが最大量の電力を消費している際に前記複数のプロセッサに電力を提供する電力管理ユニットの能力を超えることになる可能性がある、検出する工程と、
前記数が前記最大数を超えることの検出に応じて、前記現在の動作点を第2の動作点に置き換える工程と、
を含むことを特徴とする方法。
【請求項12】
前記検出が、現在非アクティブの前記複数のプロセッサのうちの1つをアクティブ化せよとの要求に更に応じるものである
ことを特徴とする請求項11に記載の方法。
【請求項13】
現在アクティブなプロセッサの第3の数が、前記複数のプロセッサの要求動作点に対して許容されるアクティブなプロセッサの前記最大数を超えることを検出する工程と、
前記検出に応じて、前記現在の動作点を、前記要求動作点よりも小さい第2の動作点に変更する工程と、
を更に含むことを特徴とする請求項11に記載の方法。
【請求項14】
前記アクティブなプロセッサのうちの1つの非アクティブ化を検出する工程であって、前記非アクティブ化は、アクティブなプロセッサの前記第3の数を、前記要求動作点に対して許容される数に低減する、検出する工程と、
前記検出に応じて、前記現在の動作点を前記要求動作点に変更する工程と、
を更に含むことを特徴とする請求項13に記載の方法。
【請求項15】
前記アクティブなプロセッサのうちの1つの非アクティブ化を検出する工程であって、前記非アクティブ化は、アクティブなプロセッサの前記第1の数を、前記現在の動作点に対して許容される数に低減する、検出する工程と、
前記検出に応じて、前記現在の動作点を復元する工程と、
を更に含むことを特徴とする請求項11に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はプロセッサ内の電力管理に関する。
【背景技術】
【0002】
集積回路を形成するために所与の半導体基板上に組み込むことができるトランジスタの数が増大し続けている。並行して、集積回路を動作させるクロック周波数(「動作周波数」)も同様に増大し続けている。供給電圧の大きさは徐々に減少してきたが、集積回路の消費電力は増大している。制約されたエネルギー蓄積器を有するデバイス(例えば、電池で動作するモバイルデバイス)内で集積回路が用いられる場合には、消費電力は、デバイスを再充電しなければならなくなるまで、デバイスをどのぐらい使用することができるのかを左右する因子となる。加えて、電力消費を通じて発生される熱は、モバイルデバイス及び非モバイルデバイスのどちらにおいても問題となり得る。
【0003】
ソフトウェアを実行するためのプロセッサを含むデバイスはプロセッサ内の消費電力を管理することができる。通例、所与のプロセッサは、そのプロセッサ上で実行する必要があるソフトウェアが現在存在しない場合には、停止することができる。プロセッサを停止することは、クロックは停止されるが、プロセッサは電源が入ったままであり、クロックが再開されるとすぐに命令を実行できる、クロックゲーティング、及びプロセッサは電源を切られ、命令を実行する前に電源を入れられ、リセットされることになる、パワーゲーティングを含むことができる。
【0004】
モバイルデバイスを含む、多くのデバイスは複数のプロセッサを含む。プロセッサは、特に、特定の作業負荷の下では、大電力消費者にもなり得る。したがって、全てのプロセッサがアクティブに実行している場合には、デバイスがデバイス内の電源の容量を超えてしまう危険にさらされる動作点(供給電圧の大きさと動作周波数との組み合わせ)が存在し得る。すなわち、電源は最大電流量を調達する能力を有する。動作点のいくつかにおいて全てのプロセッサが電力集中作業負荷をアクティブに実行している場合には、その結果生じる消費電流は、電源が提供することができる電流量を超え得る。電源の容量を超えると、誤動作を発生させる場合がある(例えば、供給電圧の大きさが、集積回路がその動作周波数でもはや適切に動作しなくなる点まで降下する場合がある)。
【発明の概要】
【0005】
一実施形態では、システムは、複数のプロセッサと、プロセッサをさまざまな動作点の間で切り替えるように構成される自動電力状態コントローラ(APSC:automatic power state controller)とを含んでもよい。動作点は、APSC内にプログラムされるデータによって記述されてもよく、APSCは、記述されている動作点の中からプロセッサのためのターゲット動作点を特定するターゲット動作点要求をプログラム可能であるレジスタを含んでもよい。動作点を記述するデータはまた、動作点において同時にアクティブになっていてもよいプロセッサの数が制限されているか否かについての表示(indication)を含んでもよい。当該表示及びアクティブなプロセッサの数に基づいて、APSCは、要求動作点を低減動作点と置き換えてもよい。低減動作点は、アクティブなプロセッサの数が(例えば、電源の容量を超えることなく)安全に動作し得る動作点であってもよい。いくつかの実施形態では、デジタル電力推定器(DPE:digital power estimator)がプロセッサの動作を監視してもよく、高い消費電力が検出されると、プロセッサに対してスロットリングを行ってもよい。DPEを含む実施形態では、最も電力を消費するシナリオを制御するためのDPEのスロットリング(throttling)に依存して、低減動作点は、プロセッサが安全に動作し得る動作点をいくらか上回ってもよい。
【図面の簡単な説明】
【0006】
以下の詳細な説明は、次に簡単に説明される添付の図面を参照する。
【0007】
図1】中央処理装置(CPU:central processing unit)複合体を含むシステム・オン・チップの一実施形態のブロック図である。
【0008】
図2図1に示される自動電力状態コントローラ(APSC)の一実施形態のブロック図である。
【0009】
図3図2に示されるAPSCの一実施形態の動作を示すフローチャートを示す図である。
【0010】
図4】APSCと連動した図1に示されるデジタル電力推定器(DPE:digital power estimator)の一実施形態の動作を示すフローチャートを示す図である。
【0011】
図5】CPU複合体内のDPEの一実施形態のブロック図である。
【0012】
図6】DPEを選択的に有効にすることの一実施形態を示すフローチャートを示す図である。
【0013】
図7】DPEが有効にされた時の、図5における構成要素の一実施形態の動作を示すフローチャートを示す図である。
【0014】
図8】システムの一実施形態のブロック図である。
【0015】
本発明は種々の変更及び代替的な形態を受け入れる余地があるが、その特定の諸実施形態が図面には例として示されており、本明細書において詳細に説明されることになる。しかし、図面及びそれらに対する詳細な説明は、本発明を、開示されている特定の形態に限定することを意図されているのではなく、逆に、その意図は、添付の請求項によって定義されているとおりの本発明の趣旨及び範囲内に入る全ての変更、均等物及び代替物を範囲に含むことであることを理解されたい。本明細書において用いられている見出しは単に構成上の目的のためのみのものであり、説明の範囲を限定するために用いられるように意図されているわけではない。本出願全体を通じて使用される時、「〜してもよい(may)」という語は、義務的な意味(すなわち、〜なければならない(must)を意味する)ではなく、許容的な意味で使用される(すなわち、〜する可能性を有していることを意味する)。同様に、「含む(include)」、「含む(including)」、及び「含む(includes)」という語は、〜を含むが、それに限定するものではないことを意味する。
【0016】
種々のユニット、回路、又はその他の構成要素は、タスク又はタスク群を実行する「ように構成される(configured to)」と説明される場合がある。このような文脈において、「〜するように構成される」とは、動作時にそのタスク又はタスク群を実行する「回路機構を有する」ことを広く意味する構造の広義の表現である。それゆえ、ユニット/回路/構成要素は、たとえ、ユニット/回路/構成要素が現在は作動していなくても、タスクを実行するように構成することができる。概して、「〜するように構成される」に対応する構造を形成する回路機構は、操作を実施するために実行可能なプログラム命令を記憶するハードウェア回路及び/又はメモリを含んでもよい。メモリは、スタティックランダムアクセスメモリ若しくはダイナミックランダムアクセスメモリ等の揮発性メモリ、及び/又は光ディスク記憶装置若しくは磁気ディスク記憶装置、フラッシュメモリ、プログラム可能読み出し専用メモリ等の不揮発性メモリ等を含むことができる。同様に、さまざまなユニット/回路/構成要素は、説明の中で、便宜上、タスク又はタスク群を実行すると記述される場合がある。このような説明は、「〜ように構成される」という文言を含むと解釈されるべきである。1つ以上のタスクを実行するように構成されるユニット/回路/構成要素と表現することは、米国特許法第112条、第6項のユニット/回路/構成要素についての解釈を行使しないことを明示的に意図されている。
【0017】
本明細書は、「一実施形態(one embodiment)」又は「一実施形態(an embodiment)」への言及を含む。「一実施形態において(in one embodiment)」又は「一実施形態において(in an embodiment)」という文言の出現は、必ずしも同じ実施形態に言及するわけではない。しかし、本明細書において明示的に否定されない限り、特徴の任意の組み合わせを含む実施形態が概して企図されている。特定の機能、構造又は特性は、本開示に整合する任意の好適な方法で組み合わせ得る。
【発明を実施するための形態】
【0018】
次に図1を参照すると、メモリ12及び電力管理ユニット(PMU:power management unit)156に結合されるSOC 10の一実施形態のブロック図が示されている。名称によって含意されるように、SOC 10の構成要素は集積回路「チップ」として単一の半導体基板上に一体化されてもよい。いくつかの実施形態では、構成要素はシステム内の2つ以上の別個のチップ上に実装されてもよい。ただし、SOC 10が本明細書において例として用いられることになる。図示されている実施形態では、SOC 10の構成要素は、中央処理装置(CPU)複合体14、周辺装置構成要素18A〜18B(より短く、「周辺装置」)、メモリコントローラ22、電力マネージャ(PMGR:power manager)32、及び通信ファブリック27を含む。構成要素14、18A〜18B、22、及び32は全て通信ファブリック27に結合されてもよい。使用時、メモリコントローラ22はメモリ12に結合されてもよい。図示されている実施形態では、CPU複合体14は、1つ以上のプロセッサ28、レベル2(L2)キャッシュ30、自動電力状態コントローラ16、及びデジタル電力推定器(DPE)回路20を含む。
【0019】
CPU複合体14は、SOC 10のCPUの役割を果たす1つ以上のCPUプロセッサ28を含んでもよい。システムのCPUは、オペレーティングシステムなどの、システムの主制御ソフトウェアを実行する(1つ以上の)プロセッサを含む。概して、使用時にCPUによって実行されるソフトウェアは、システムの所望の機能性を実現するためにシステムの他の構成要素を制御してもよい。プロセッサ28はまた、アプリケーションプログラムなどの、他のソフトウェアを実行してもよい。アプリケーションプログラムはユーザ機能性を提供してもよく、より低レベルのデバイス制御についてはオペレーティングシステムに依存してもよい。したがって、プロセッサ28はまた、アプリケーションプロセッサと呼ばれてもよい。CPU複合体14は、L2キャッシュ30、及び/又は及びシステムの他の構成要素へのインタフェース(例えば、通信ファブリック27へのインタフェース)などの、他のハードウェアを更に含んでもよい。
【0020】
APSC 16は、アクティブなプロセッサ28を監視するように構成されてもよく、現在の動作点、及びアクティブなプロセッサの数に基づいてCPU複合体14の動作点を動的に変更するように構成されてもよい。特に、動作点のうちのいくつかにおいて、最大数を超えるプロセッサがアクティブになっている場合には、消費される総電力は、各プロセッサ内の最悪の場合の消費電力の下で電力を提供するために、PMU 156の能力を超える可能性がある。APSC 16は、最大数を超えるプロセッサがアクティブとなる時を検出するように構成されてもよく、消費される電力がPMU 156の能力を超えるのを防止するべく動作点を低減するように構成されてもよい。低減動作点は、たとえ、アクティブなプロセッサ28の全てが最悪の場合の電力を消費している場合でも、消費される総電力はPMU 156の能力を超える可能性がない動作点であってもよい。
【0021】
プロセッサ28の最大数はプロセッサの総数よりも2以上少なくてもよい。例えば、プロセッサ28の総数はN個であってもよく、所与の動作点のためのプロセッサの最大数はN−M個であってもよい。ここで、N及びMは整数であり、NはMよりも大きい。所与の動作点のために定義される低減動作点はM個存在してもよく、M個の低減動作点のうちの1つはアクティブなプロセッサの数に基づいて選択されてもよい。すなわち、M個の低減動作点のうちの1つは、アクティブなプロセッサの数が最大数よりも1つ大きい場合に選択されてもよく、M個の低減動作点のうちの更に別の1つは、アクティブなプロセッサの数が最大数よりも2つ大きい場合に選択されてもよい、などのようになる。代替的には、N個のプロセッサが最悪の場合の消費電力でアクティブとなるために十分に低減された低減動作点が1つ存在してもよい。プロセッサの最大数は動作点に固有であってもよい。すなわち、1つの動作点はN−M1個を最大数として有してもよく、別の動作点はN−M2個を最大数として有してもよい。ここで、M1及びM2は、同じでない整数である。いくつかの動作点は最大数を有しなくてもよい(すなわち、N個のプロセッサが全てアクティブであってもよい)。
【0022】
最悪の場合の消費電力は、例えば、最も消費電力が高い命令を包含するコードがプロセッサ28内で繰り返し実行される時に発生し得る。どの命令が最も消費電力が高い命令であるのかはプロセッサ28の実装形態によって異なり得る。場合によっては、最も消費電力が高い命令は特定の種類の命令になり得る(例えば、浮動小数点命令はメディア命令若しくは整数命令よりも消費電力が高くなり得るか、又はメディア命令は最も消費電力が高くなり得る、などである)。命令のその種類の内の特定の命令は他のものよりも高くなり得る(例えば、乗加算浮動小数点命令は他の浮動小数点命令よりも消費電力が高くなり得る)。
【0023】
最悪の場合の消費電力が各アクティブコア内で同時に発生する尤度は低くなり得る。しかし、最悪の場合が実際に起きた場合には、動作不良が発生する可能性があるため、APSC 16はその可能性を防止するように構成されてもよい。もしその可能性が防止されていなかったとすれば、このとき、SOC 10を含むシステムは、不正な主体が最悪の場合のシナリオを発生させることによって動作不良を発生させようと試みる、いわゆる「電力ウィルス」攻撃を受けやすくなるであろう。
【0024】
いくつかの実施形態では、DPE回路20が同様に含まれてもよく、最悪の場合の消費電力が動作不良を発生させるのを防止するためにAPSC 16と協力して動作してもよいが、APSC 16が単独で用いられる場合よりも比較的高い点に低減動作点が設定されることを可能にし得る。例えば、低減動作点は、システム内の一般的な作業負荷を代表する、さまざまなベンチマークプログラムを実行している際のプロセッサ28の消費電力に基づいて設定されてもよい。最も消費電力が高いベンチマークが選択されてもよく、低減動作点は、最も消費電力が高いベンチマークが各々のアクティブなプロセッサ28内でPMU 156の能力を超えることなく実行され得るように設定されてもよい。DPE回路20は、消費電力が閾値を超える場合を検出するためにプロセッサ28を監視するように構成されてもよく、消費電力を低減するためにプロセッサ28のうちの1つ以上に対してスロットリングを行うように構成されてもよい。それゆえ、プロセッサ28が、最も消費電力が高いベンチマークを超える消費電力を生じさせるコードを実行している場合には、DPE回路20は、できる限り短い期間(例えば、1又は数クロックサイクル)を除き、PMU 156の能力を超えてしまうのを防止してもよい。
【0025】
動作点とは、CPU複合体14のための供給電圧の大きさ及び動作周波数の組み合わせを指してもよい。動作周波数は、プロセッサ28をクロック制御するクロックの周波数であってもよい。場合によっては、CPU複合体14内の他の回路機構は、動作周波数から派生する、より低いクロック周波数で動作してもよい(例えば、L2キャッシュ30はより低いクロック周波数で動作してもよい)。供給電圧の大きさ及び動作周波数は関連してもよい。例えば、供給電圧の大きさは、少なくとも、プロセッサ28が動作周波数で適切に動作するために十分高くてもよい。一実施形態では、供給電圧の大きさは、プロセッサ28が、対応する動作周波数のために適切に動作する最小供給電圧の大きさであってもよい。動作点はまた動作状態又は電力状態と呼ばれてもよい。
【0026】
供給電圧の大きさ及び動作周波数が増大するにつれて、CPU複合体14によって消費される電力は概して増大し得る。したがって、より低い動作点(より低い供給電圧の大きさ及び動作周波数)では、プロセッサ28が消費する電力はより少なくなり得、より多くのプロセッサが、いつでもアクティブになることを許容され得る。概して、プロセッサは、電源が入っている場合には、アクティブであってもよい。プロセッサはほとんど遅延を伴うことなく命令実行のために利用可能になってもよい(例えば、それはクロックゲートされてもよいが、命令の実行準備ができている場合には、ゲートされなくてもよい)。プロセッサは、電源が入っていないか、又は命令を実行し得るようになる前に大きな遅延が経験され得る別の低電力状態にある場合には、アクティブでなくてもよい。例えば、プロセッサが位相ロックループ(PLL:phase lock loop)のリセット又は再ロックを必要とする場合には、たとえ、電源が入っているままであっても、それはアクティブでなくてもよい。
【0027】
DPE 20によるプロセッサ28のスロットリングは、概して、プロセッサを非アクティブ化すること又はその現在の動作点を変更することなく、プロセッサ28による命令実行を制限することを指してもよい。スロットリングは、命令(又は消費電力が高い命令などの特定の命令)の発行レートを制限すること、命令の実行レートを制限することなどを含んでもよい。
【0028】
概して、プロセッサは、そのプロセッサによって実装される命令セットアーキテクチャ内で定義された命令を実行するように構成される任意の回路機構及び/又はマイクロコードを含んでもよい。プロセッサは、集積回路上に他の構成要素とともにシステム・オン・チップ(SOC 10)又は他の一体化レベルとして実装されるプロセッサコアを包含してもよい。プロセッサは、マルチチップモジュール実装形態内に一体化される別個のマイクロプロセッサ、プロセッサコア及び/又はマイクロプロセッサ、複数の集積回路として実装されるプロセッサなどを更に包含してもよい。
【0029】
概して、メモリコントローラ22は、SOC 10の他の構成要素からのメモリ操作を受信し、そのメモリ操作を完了するためにメモリ12にアクセスするための回路機構を含んでもよい。メモリコントローラ22は任意の種類のメモリ12にアクセスするように構成されてもよい。例えば、メモリ12は、スタティックランダムアクセスメモリ(SRAM:static random access memory)、ダブルデータレート(DDR、DDR2、DDR3など)DRAMを含むシンクロナスDRAM(SDRAM:synchronous DRAM)などのダイナミックRAM(DRAM:dynamic RAM)であってもよい。DDR DRAMの低電力/モバイルバージョンがサポートされてもよい(例えばLPDDR、mDDR、など)。メモリコントローラ22は、操作を順序付けし(及び潜在的に再順序付けし)、メモリ12へ操作を提示するための、メモリ操作のためのキューを含んでもよい。メモリコントローラ22は、メモリへの書き込みを待っている書き込みデータ、及びメモリ操作の送信元への返送を待っている読み出しデータを記憶するためのデータバッファを更に含んでもよい。いくつかの実施形態では、メモリコントローラ22は、最近アクセスされたメモリデータを記憶するためのメモリキャッシュを含んでもよい。SOC実装形態では、例えば、メモリキャッシュは、データが再びすぐにアクセスされると予想される場合には、メモリ12からのデータの再アクセスを回避することによって、SOC内の消費電力を低減してもよい。場合によっては、メモリキャッシュはまた、特定の構成要素にのみ貢献する、L2キャッシュ30などのプライベートキャッシュ又はプロセッサ28内のキャッシュと対照的に、システムキャッシュと呼ばれてもよい。加えて、いくつかの実施形態では、システムキャッシュはメモリコントローラ22内に配置される必要がない。
【0030】
周辺装置18A〜18Bは、SOC 10内に含まれる追加のハードウェア機能性の任意のセットであってもよい。例えば、周辺装置18A〜18Bは、カメラ又はその他の画像センサからの画像キャプチャデータを処理するように構成される画像信号プロセッサ、1つ以上の表示デバイス上にビデオデータを表示するように構成されるディスプレイコントローラ、グラフィック処理ユニット(GPU:graphics processing unit)、ビデオエンコーダ/デコーダ、スケーラ、ローテータ、ブレンダ等などのビデオ周辺装置を含んでもよい。周辺装置は、マイクロフォン、スピーカ、マイクロフォン及びスピーカへのインタフェース、オーディオプロセッサ、デジタル信号プロセッサ、ミキサ等などのオーディオ周辺装置を含んでもよい。周辺装置は、ユニバーサルシリアルバス(USB:Universal Serial Bus)、PCIエクスプレス(PCIe:PCI Express)を含む周辺装置相互接続(PCI:peripheral component interconnect)、シリアルポート及びパラレルポート等などのインタフェースを含むSOC 10の外部のさまざまなインタフェースのためのインタフェースコントローラ(例えば周辺装置18B)を含んでもよい。周辺装置は、メディアアクセスコントローラ(MAC:media access controller)などのネットワーキング周辺装置を含んでもよい。ハードウェアの任意のセットが含まれてもよい。
【0031】
通信ファブリック27は、SOC 10の構成要素間で通信するための任意の通信インターコネクト及びプロトコルであってもよい。通信ファブリック27は、共有バス構成、クロスバー構成、及びブリッジを有する階層バスを含む、バスベースのものであってもよい。通信ファブリック27はまた、パケットベースのものであってもよく、ブリッジを有する階層型、クロスバー型、ポイントツーポイント型、又はその他のインターコネクトであってもよい。
【0032】
PMGR 32は、PMU 156から要求される供給電圧の大きさを制御するように構成されてもよい。PMU 156によってSOC 10のために発生される供給電圧は複数存在してもよい。例えば、図1に示されているのはVCPU及びVSOCである。VCPUはCPU複合体14のための供給電圧であってもよい。VSOCは概して、CPU複合体14の外部のSOC 10の残りのための供給電圧であってもよい。いくつかの実施形態では、SOC 10の残りのための供給電圧は複数存在してもよい。いくつかの実施形態では、CPU複合体14及び/又はSOC 10内のさまざまなメモリアレイのためのメモリ供給電圧が同様に存在してもよい。メモリ供給電圧は、論理回路機構に供給される電圧(例えば、VCPU又はVSOC)とともに用いられてもよく、ロバストなメモリ操作を確実にするために要求されるものよりも低い電圧の大きさを有してもよい。いくつかの実施形態では、さまざまな構成要素(例えば、APSC 16)に局所的な論理が、電源投入及び電源切断、並びに1つを超える動作点をサポートするそれらの構成要素のためのさまざまな他の動作点を含む、構成要素の電力状態を制御してもよい。他の実施形態では、PMGR 32がSOC 10の他の構成要素の電源投入及び電源切断を制御してもよいか、又はいくつかの構成要素のための局所制御及びその他の構成要素のためのPMGR制御の組み合わせがサポートされてもよい。PMGR 32は直接ソフトウェア制御を受けてもよく(例えば、ソフトウェアが構成要素の電源投入及び/若しくは電源切断を直接要求してもよい)、並びに/又はSOC 10を監視し、さまざまな構成要素がいつ電源投入又は電源切断されるべきかを決定するように構成されてもよい。
【0033】
概して、PMU 156は、供給電圧を発生し、それらの供給電圧を、SOC 10、メモリ12、表示デバイス、画像センサ、ユーザインタフェースデバイス等などの(図1には示されていない)さまざまなオフチップ周辺装置構成要素などの、システムの他の構成要素に提供するための回路機構を含んでもよい。それゆえ、PMU 156は、プログラム可能電圧調整器、電圧要求を受信するべくSOC 10及びより具体的にはPMGR 32へのインタフェースをとるための論理、などを含んでもよい。
【0034】
SOC 10の構成要素の数(及びCPU複合体14内などの、図1に示されているものについての下位構成要素の数)は実施形態によって異なってもよいことに留意されたい。各構成要素/下位構成要素は、図1に示されている数よりも多いか、又は少なくてもよい。
【0035】
図2はAPSC 16の一実施形態のブロック図である。図示されている実施形態では、APSC 16は、動的電圧及び周波数管理(DVFM:dynamic voltage and frequency management)テーブル40、制御回路42、レジスタ44A〜44D、マルチプレクサ(mux)46A〜46C、及び論理回路48A〜48Bを含む。DVFMテーブル40は、レジスタ44A、mux 46A〜46C、及び論理回路48A〜48Bに結合される。論理回路48A〜48Bは、mux 46A〜46Cに選択制御を提供するために結合される。mux 46A〜46Cはレジスタ44B〜44Dにそれぞれ結合される。制御回路は、レジスタ44A〜44Bに結合されるとともに、DPEイベント及びAPSCイベントを受信するために結合される。レジスタ44C及び44Dの出力は、PMGR 32及びクロック制御(ClkCtl)ユニット(図示されていない)へそれぞれ伝達される。
【0036】
DVFMテーブル40は、(図2におけるDVFM状態列によって示される)さまざまな動作点又は状態を記述するデータをプログラムされてもよい複数のエントリを含む。レジスタ44Aは、CPU複合体14のための所望の動作点を特定する、ソフトウェアからのターゲット動作点選択(TgtSel)をプログラムされてもよい。レジスタ44Aはテーブル40上の読み込みポートに結合されてもよく、対応するエントリからのデータがテーブル40によって第1の入力としてmux 46B〜46Cへ出力されてもよい。各動作点を記述するデータは、供給電圧の大きさ(図2における電圧列)及び動作周波数(図2における周波数列)の表示であってもよい。データは、動作点において動作している時に許容され得るプロセッサ28の最大数の表示を更に含んでもよい。任意の表示(例えば、最大数のカウント、以下において説明されるとおりのビットベクトル、動作点の変更を伴わずにアクティブでなくなり得る数のカウント、など)が用いられ得る。
【0037】
図示されている実施形態及び同様の実施形態では、表示は、少なくとも1つの可能な動作点のための最大数を超え得るプロセッサの数ごとのビットを有するビットベクトルであってもよい。それゆえ、図示されている実施形態の場合には、4つのプロセッサが存在し、3つのアクティブなプロセッサが最大を超え得ること(Limit3ビット)、及び4つのアクティブなプロセッサが最大を超え得ること(Limit4ビット)があり得る。テーブル40内のエントリをプログラムする際に、ソフトウェアは、最悪の場合の電力分析、又は、DPE回路20が用いられる実施形態では、ベンチマークなどのより標準的な作業負荷に基づく電力分析に基づいて、ビットベクトルを同様に埋めてもよい。ビットは、第1の状態ではプロセッサの数が限度を超え、第2の状態ではプロセッサの数が限度を超えないことを示してもよい。図示されている実施形態では、第1の状態はセット状態であってもよく、第2の状態はクリア状態であってもよい。他の実施形態はセット状態及びクリア状態の反対の意味を用いてもよい。
【0038】
Limit3及びLimit4ビットのための例示的な値がテーブル40内にDVFM状態0〜3について示されている。DVFM状態0及び1の両方では、任意の数のプロセッサが、PMU 156の能力を上回る消費電力を呈することなくアクティブとなり得る。したがって、テーブル40内のこれらのエントリについて、Limit3ビット及びLimit4ビットは両方ともクリアとなる。DVFM状態2では、限度は3つのプロセッサになり得、それゆえ、Limit4ビットはセットされ、Limit3ビットはクリアとなる。DVFM状態3では、限度は2つのプロセッサになり得、それゆえ、Limit3ビット及びLimit4ビットの両方がセットされる。
【0039】
テーブル40は、レジスタ44Aによって指し示されたLimit3ビット及びLimit4ビットをANDゲート48A〜48Bへそれぞれ出力してもよい。加えて、3つのアクティブなコアが存在するのか(3Ac)、それとも4つのアクティブなコアが存在するのか(4Ac)を示す信号がANDゲート48A〜48Bへそれぞれ入力されてもよい。3Ac信号及び4Ac信号は制御回路42によって発生されてもよい。したがって、Limit3ビットがセットされ、3つのアクティブなコアが存在する場合には、ANDゲート48Aはその出力信号をアサートしてもよい。Limit4ビットがセットされ、4つのアクティブなコアが存在する場合には、ANDゲート48Bはその出力信号をアサートしてもよい。
【0040】
mux 46A〜46Cを通したデフォルトの選択は第1の入力(mux 46B〜46Cのためのレジスタ44A内の値に応じてテーブル40から出力されたデータ、及びmux 46Aのためのレジスタ44Aの出力であってもよい)であってもよい。ANDゲート48A〜48Bからのどちらのmux選択もアサートされない場合には、デフォルトの出力が選択されてもよい。
【0041】
本実施形態では、テーブル40はDVFM状態エントリを超えて追加のエントリを含む。これらの追加のエントリは、現在の動作点が、アクティブなプロセッサの最大数を制限し、その最大数がアクティブである(又はアクティブになろうとしている)場合に用いられるべき低減動作点を記憶してもよい。より具体的には、3rdCoreMaxエントリは、Limit3ビット(2つのプロセッサが最大数である場合)に対応する低減動作点を記述するデータを記憶してもよい。4thCoreMaxエントリは、Limit4ビット(3つのプロセッサが最大数である場合)に対応する低減動作点を記憶してもよい。概して、4thCoreMaxエントリは、使用時に3rdCoreMaxエントリよりも(プロセッサ毎の潜在的な消費電力に関して)低い動作点を表すデータを記憶してもよい。
【0042】
テーブル40は、3rdCoreMaxエントリ及び4thCoreMaxエントリからのデータをmux 46B〜46Cへ出力するように構成されてもよい。3rdCoreMaxエントリからのデータは、ANDゲート48Aからの選択のアサーションに応じて選択されてもよく、4thCoreMaxエントリからのデータは、ANDゲート48Bからの選択のアサーションに応じて選択されてもよい。現在の動作点を特定するために、対応する識別子がmux 46Aを通して選択されてもよく、その一方で、ターゲット動作点はレジスタ44A内に保持されてもよい。いくつかの実施形態では、3rdCoreMaxエントリ及び4thCoreMaxエントリはソフトウェアによって要求動作点として選択されなくてもよい(例えば、エントリは、レジスタ44Aに書き込まれ得るいかなる値によって指し示されなくてもよい)。他の実施形態では、エントリはまた、レジスタ44Aを介して選択されてもよい。このような実施形態では、3rdCoreMaxエントリ及び4thCoreMaxエントリのための限度ビットベクトル(Limit3フィールド及びLimit4フィールド)が提供され、適正にプログラムされてもよい(又は3rdCoreMaxエントリのためのLimit3 1、Limit4 1及び4thCoreMaxエントリのためのLimit3 0、Limit4 1に結線接続されてもよい)。
【0043】
図2では、ANDゲート48A〜48Bは、制御回路42から分離しているように示されているが、ANDゲート48A〜48Bは制御回路42の一部であってもよいことに留意されたい。更に、ANDゲート48A〜48Bの代わりに、ANDゲート48A〜48Bの任意のブール等価物を含む、任意の他の論理実装形態が用いられてもよい。
【0044】
レジスタ44B〜44Dは、現在の動作点(又は移行が進行中である場合には、CPU複合体14が移行する動作点)を記述するデータを記憶してもよい。レジスタ44Bは、現在の動作点の識別子(レジスタ44AからCPU複合体14のために要求されたターゲット識別子、又はアクティブなプロセッサの数が要求動作点の最大を超える場合には、置き換えの識別子のどちらか)を記憶してもよい。制御回路42は、さまざまなAPSCイベント及びDPEイベントのためにとるべきアクションを決定するべくレジスタ44A〜44Bの出力を受信するために結合されてもよい。レジスタ44Cは、現在要求されている供給電圧の大きさの表示を記憶してもよく、この表示はPMU 156へ伝えるためにPMGR回路32へ伝達されてもよい。同様に、現在要求されている動作周波数の表示が、CPU複合体14のための動作周波数を設定するためにレジスタ44Dからクロック制御回路へ提供されてもよい。さまざまな実施形態において、クロック制御回路は、PMGR 32の一部であるか、CPU複合体14の一部であるか、又はSOC 10内の他の箇所にあってもよい。
【0045】
次に図3を参照すると、APSC 16(及びより具体的には、ANDゲート48A〜48Bを含む制御回路42)の一実施形態の動作を示すフローチャートが示されている。理解を容易にするためにブロックは特定の順序で示されているが、他の順序が用いられてもよい。ブロックはAPSC 16/制御回路42内の組み合わせ論理内で並列に実行されてもよい。所望の場合には、ブロック、ブロックの組み合わせ、及び/又はフローチャート全体は、複数のクロックサイクルにわたってパイプライン処理されてもよい。APSC 16及び/又は制御回路42は、図3に示される動作を実施するように構成されてもよい。
【0046】
上述されたように、APSC 16/制御回路42はCPU複合体14内のさまざまなAPSCイベントを受信してもよい。APSCイベントは、プロセッサアクティブ化イベント及び非アクティブ化イベントを含んでもよい。プロセッサアクティブ化イベントが発生した場合には(決定ブロック50、「はい」肢)、APSC 16/制御回路42はアクティブなプロセッサのそのカウントを更新してもよい。アクティブなプロセッサの更新された数がPMU限度を潜在的に超える可能性がある場合には(決定ブロック52、「はい」肢)、APSC 16/制御回路42は、PMU限度を超える可能性を防止するべく現在の動作点を低減するために、mux 46A〜46Cを通して適正なCoreMax電力状態(又は動作点)を選択してもよい(ブロック54)。本実施形態では、現在選択されているターゲットエントリ内のビットベクトルからの対応する限度ビットがセットされている場合には、アクティブなプロセッサの更新された数はPMU限度を超える可能性がある。いくつかの実施形態では、1つを超えるこうした移行が行われてもよい。例えば、ターゲット動作点が図2におけるDVFM状態3であり、2つのプロセッサが最初にアクティブである場合には、ターゲット動作点は確立されてもよい。その後、第3のプロセッサのアクティブ化が、3rdCoreMax状態への動作点の低減を引き起こす場合がある。3rdCoreMax状態にある間に(又は更に、3rdCoreMax状態へ移行している間に)、第4のプロセッサがアクティブ化し、4thCoreMax状態への移行を引き起こす場合がある。
【0047】
低減された状態への移行は時間を要する場合がある。例えば、動作周波数を低減するために約4.5マイクロ秒が使われる場合があり、次に、供給電圧の大きさを低減するために約5マイクロ秒が使われる場合がある。移行時間の最中に、新たにアクティブ化するプロセッサが実行し始める場合があり、その結果、低減動作点が確立されるまでPMU限度を超えていることが生じ得る。これを防止するために、APSC 16/制御回路42は、クロック分周器を用いて動作周波数を低減してもよい(例えば、クロック周波数を2又は何らかの他の整数で割る)。このような動作周波数変更は、例えば、位相ロックループ(PLL)を新しいクロック周波数へ再ロックすることを必要とする、異なる動作点において指定されているとおりの周波数間の変更よりも高速に達成され得る。すなわち、除数を、現在の整数の2の累乗である異なる整数に変更することは、クロック信号の位相を変更しなくてもよく、それゆえPLLロックは失われなくてもよく、再獲得される必要がない。低減された周波数は、低減動作点への移行が完了するまで有効であり続けてもよい。
【0048】
APSCイベントがプロセッサの非アクティブ化である場合には(決定ブロック58、「いいえ」肢)、制御回路42はアクティブなプロセッサの数を更新してもよい。現在の動作点が低減動作点のうちの1つである場合には、アクティブなプロセッサの更新された数に基づいて、ターゲット動作点又はより高い動作点(例えば、現在の動作点が4thCoreMax状態である場合には、3rdCoreMax状態)に戻ることは安全になり得る。更新された数が、より高い動作点が用いられてもよいことを示す場合には(決定ブロック60、「はい」肢)、APSC 16/制御回路42はmux 46A〜46Cを通して新しい動作点を選択してもよい(ブロック62)。
【0049】
現在の動作点に影響を与え得る別の種類のAPSCイベントは、レジスタ44A内のTgtSel値によって表されるとおりの、選択動作点の変更である。制御回路42が、変更を検出するためにレジスタ44Aを監視してもよいか、又はソフトウェアが、動作点の変更を示すために別のレジスタを更新してもよく、それがAPSCイベントとなってもよい。TgtSelが、異なる動作点を示すように変更された場合には(決定ブロック64)、その異なる動作点のために、現在アクティブなプロセッサに対してはPMU限度を超えてしまう可能性が潜在的にある。したがって、TgtSelが変更され(決定ブロック64、「はい」肢)、新たに選択された動作点が、現在アクティブなプロセッサの数と関連して、PMU限度を潜在的に超え得ることを示す場合には(決定ブロック66、「はい」肢)、APSC 16/制御回路42は、上述の説明と同様に、mux 46A〜46Cを通して適正なCoreMax状態を選択してもよく、移行が完了するまで動作周波数を低減してもよい(ブロック68及び70)。新たに選択された動作点のために、現在アクティブなプロセッサの数ではPMU限度を超えてしまう可能性がない場合には(決定ブロック66、「いいえ」肢)、APSC 16/制御回路42はTgtSel動作点を選択してもよく、選択動作点へ移行してもよい(ブロック72)。
【0050】
上述されたように、いくつかの実施形態はまた、DPE回路20を用いてもよく、このような実施形態は、3rdCoreMaxエントリ及び4thCoreMaxエントリを、もしDPE回路20が含まれていなければ許容されるであろう動作点よりも高い動作点(より高い供給電圧の大きさ及び動作周波数)にプログラムすることを可能にし得る。図4は、APSC 16と併用するためのDPE回路20の一実施形態の動作を示すフローチャートである。理解を容易にするためにブロックは特定の順序で示されているが、他の順序が用いられてもよい。ブロックはDPE回路20内の組み合わせ論理内で並列に実行されてもよい。所望の場合には、ブロック、ブロックの組み合わせ、及び/又はフローチャート全体は、複数のクロックサイクルにわたってパイプライン処理されてもよい。DPE 20は、図4に示される動作を実施するように構成されてもよい。
【0051】
DPE回路20はCPU複合体14内のアクティブなプロセッサを監視してもよく、消費電力のデジタル推定値を形成するように構成されてもよい(ブロック80)。デジタル推定値はいかなる方法で生成されてもよい。例えば、DPE回路20は、各プロセッサを有するさまざまなブロック(例えばパイプライン段、実行ユニット、その他のマイクロアーキテクチャブロックなど)を監視するように構成されてもよい。DPE回路は、各ブロックからのアクティビティレベル、イベント、又はアクティビティの任意のその他の尺度を検出するように構成されてもよく、監視されているアクティビティによって消費される電力を推定してもよい。DPE回路20は、例えば、各々の監視されているアクティビティについての数値係数をプログラム可能であってもよく、推定値を形成するために各アクティビティについての係数を合計してもよい。いくつかの実施形態では、推定値は現在の動作周波数及び供給電圧の大きさに合わせてスケーリングされてもよい。DPE回路20は、アクティブなプロセッサの電力推定値が、PMU限度を超える可能性があることを示しているかどうかを判定するように構成されてもよい(決定ブロック82)。そうである場合には(決定ブロック82、「はい」肢)、DPE回路20は、1つ以上のアクティブなプロセッサに対してスロットリングを行うように構成されてもよい(ブロック84)。
【0052】
いくつかの実施形態では、DPE回路20はまた、プロセッサは閾値回数よりも多くスロットリングが行われたかどうかを判定するように構成されてもよいことに留意されたい。このような動作を検出することは、CPU複合体14が最悪の場合の消費電力を経験していることを示す可能性があり、それゆえ、スロットリングを低減するために、更に低減された動作点が望まれてもよいことを示す可能性がある。一実施形態では、DPE回路20は、このような変更を要求するための制御回路42へのDPEイベントを生成してもよい。このような実施形態では、DPE回路20はまた、DPE回路20は閾値回数よりも多くプロセッサに対してスロットリングを行わなかったことを検出する場合もあり、動作点が以前に更に低減されていた場合には、動作点を以前のレベルへ戻すためのDPEイベントを生成してもよい。いくつかのこのような実施形態が以下において更に詳細に説明される。
【0053】
次に図5を参照すると、CPU複合体14の一部分の一実施形態のブロック図が示されている。図示されている実施形態では、CPU複合体14は、DPE回路20、プロセッサ28、及びヒステリシスカウンタ90を含む。DPE回路20は、プロセッサ28及びヒステリシスカウンタ90に結合されるとともに、DVFM要求を提供するために結合される。プロセッサ28のうちの1つは、ブロック92A〜92Dを含むように示されている。他のプロセッサ28も同様であってよい。DPE回路20は、1つ以上の電力閾値レジスタ94及び(1つ以上の)比較器96を含んでもよい。ヒステリシスカウンタ90は、アップカウンタ98、ダウンカウンタ100、及びレジスタ102内の1つ以上のカウント閾値を含んでもよい。
【0054】
ブロック92A〜92Dはプロセッサ28のさまざまなサブ機能を実装してもよい。例えば、ブロック92A〜92Dはプロセッサ28のさまざまなパイプラインステージであってもよい。ブロック92A〜92Dはプロセッサ28内の実行ユニットであってもよい。ブロック92A〜92Dは、実行ユニットに加えて、その他のマイクロアーキテクチャ要素(例えばキャッシュ、復号ユニット、分岐予測ハードウェア、リネームハードウェア、リオーダバッファ、スケジューラ、リザベーションステーションなど)であってもよい。所望に応じて、任意のブロック分割が行われてもよい。各ブロック92A〜92Dは1つ以上のアクティビティインジケータ(AI:activity indicator)をDPE回路20に提供してもよい。いくつかの実施形態では、ブロック92A〜92Dの全てがアクティビティインジケータを提供しなくてもよい。プロセッサ28内のブロックの数は実施形態によって異なってもよい。
【0055】
アクティビティインジケータに基づいて、DPE回路20は、プロセッサ28についての電力推定値を生成するように構成されてもよい。DPE回路は、電力推定値をレジスタ94からの電力閾値と比較するように構成されてもよい。電力推定値が電力閾値を超えた場合には、DPE回路20は、プロセッサ28のうちの1つ以上に対してスロットリングを行うように構成されてもよい。例えば、DPE回路20は、最も多くの電力を消費しているプロセッサ又はプロセッサ群28に対してスロットリングを行ってもよい。代替的に、DPE回路20はプロセッサ群28に対して均等にスロットリングを行ってもよい。ブロック92A〜92Dへのスロットリング表示は、さまざまなブロックに対してスロットリングを行ってもよい。いくつかの実施形態では、全てのブロック92A〜92Dがスロットリング表示を受信しなくてもよい。加えて、DPE回路20は、電力推定値が電力閾値を超えたとの信号をヒステリシスカウンタ90へ送るように構成されてもよい。電力推定値が電力閾値を超えていない場合には、DPE回路20はプロセッサ28に対してスロットリングを行わなくてもよく、電力推定値は電力閾値を超えていないとの信号をヒステリシスカウンタ90へ送ってもよい。代替的に、電力閾値レジスタ94は第2の電力閾値を記憶してもよく、比較器96は第2の電力閾値を電力推定値と比較し、電力推定値は第2の電力閾値を超えていないとの信号をヒステリシスカウンタ90へ送ってもよい。第2の電力閾値は、本段落において上述された他の電力閾値よりも低くプログラムされてもよい。
【0056】
電力閾値はPMU 156の能力に基づいてプログラムされてもよく、PMUの能力を超えないことを確実にするためのガードバンディング(guard banding)を含んでもよい。電力閾値は、DPE回路20がAPSC 16と併用される実施形態では、DPE回路20のみが用いられる場合と異なってプログラムされてもよい(例えば、APSC 16と併用される時には閾値はより高くてもよい)。
【0057】
ヒステリシスカウンタは、電力閾値を超えたとの信号に応じてアップカウンタ98をインクリメントするように構成されてもよく、電力閾値を超えていないとの信号に応じてダウンカウンタをインクリメントするように構成されてもよい。カウントは閾値レジスタ102からのカウント閾値と比較されてもよく、ヒステリシスカウンタ90は、閾値を超えたかどうかをDPE回路20に信号で知らせるように構成されてもよい。アップカウンタが閾値を超えた場合には、DPE回路20は、動作点を低減せよとのDVFM要求を生成するように構成されてもよい。ダウンカウンタが閾値を超えた場合には、DPE回路20は、動作点が以前に低減されていた場合には、動作点を復元せよとのDVFM要求を生成するように構成されてもよい。いくつかの実施形態では、アップカウンタ98及びダウンカウンタ100のためにレジスタ102内の別個のカウント閾値が存在してもよい。他の実施形態では、同じ閾値が用いられてもよい。
【0058】
一実施形態では、ヒステリシスカウンタ90は、アップカウンタをインクリメントする際にダウンカウンタをクリアし、その逆も行うように構成されてもよい。したがって、アップカウンタ98は、電力閾値(又は第2の電力閾値)を超えない介在推定値を有しない、電力閾値を超えた連続した電力推定値の数のカウントになってもよい。同様に、ダウンカウンタ100は、電力閾値を超えた介在電力推定値を有しない、電力閾値(又は第2の電力閾値)を超えない連続した電力推定値の数のカウントになってもよい。このように、DVFM移行を生じさせるまでに電力推定値におけるヒステリシスが存在してもよい。電力推定値は、プロセッサ28をクロック制御するクロックのクロックサイクル毎に取得されてもよい。代替的に、電力推定値は、よりゆっくりした間隔で、間隔全体を通じたアクティビティに基づいて取得されてもよい。
【0059】
次に図6を参照すると、DPE回路20と対話するためのDVFMハードウェア及び/又はソフトウェアの一実施形態の動作を示すフローチャートが示されている。理解を容易にするためにブロックは特定の順序で示されているが、他の順序が用いられてもよい。ハードウェアの形態で実装される機能(例えば、さまざまな実施形態における、APSC 16及び/又はPMGR 32)については、ブロックはDVFMハードウェア内の組み合わせ論理内で並列に実行されてもよい。所望の場合には、ブロック、ブロックの組み合わせ、及び/又はフローチャート全体は、複数のクロックサイクルにわたってパイプライン処理されてもよい。DVFMハードウェアは、図6に示される動作を実施するように構成されてもよい。ソフトウェアの形態で実装される機構については、ソフトウェアコードは、上述の機構のための動作を実施するために(例えば、プロセッサ28のうちの1つによって)実行可能な命令を含んでもよい。
【0060】
DVFMハードウェア/ソフトウェアはCPU複合体14のための動作点を選択してもよい(ブロック110)。さまざまな因子が動作点の選択に影響を与え得る。例えば、実行されるべきタスクのスケジュールが選択に影響を与え得る。実行されるべき作業がより多く存在する場合には、より高い動作点が所望されてもよい(なぜなら、より高い動作点は、より高い性能をもたらすはずだからである)。他方で、実行されるべきタスクがより少ない場合には、電力を節約するために、より低い動作点が選択されてもよい。システムのために利用可能なエネルギー(例えば、壁コンセントへの差し込み対電池電力及び利用可能な残りの電池電力の量)が、所望の動作点に影響を与える因子になる場合がある。場合によっては、熱の問題が低減動作点の原因になる場合がある。
【0061】
DVFMハードウェア/ソフトウェアは、十分なプロセッサがアクティブになっている場合には、選択動作点においてCPU複合体14がPMU限度を超えることが潜在的にあり得るかどうかを判定してもよい(決定ブロック112)。そうである場合には(決定ブロック112、「はい」肢)、DVFMハードウェア/ソフトウェアは、アクティブなプロセッサを監視するためにDPE回路20を有効にしてもよい(ブロック114)。いくつかの実施形態では、DVFMハードウェア/ソフトウェアはまた、DPE回路20内の電力閾値及びヒステリシスカウンタ90内のカウント閾値をプログラムしてもよい(ブロック116)。いくつかの実施形態では、電力閾値及び/又はカウント閾値は選択動作点に基づいて変化してもよく、DPE回路20が有効にされるたびにプログラムされてもよい。他の実施形態では、閾値は動作点毎に同じであってもよく、それらは、例えばSOC 10の初期化中に、1度プログラムされてもよい。CPU複合体14が、選択動作点においてPMU限度を超えることがあり得ない場合には(決定ブロック112、「いいえ」肢)、監視は必要ないため、DVFMハードウェア/ソフトウェアはDPE回路20を無効にしてもよい(ブロック118)。どちらの場合でも、DVFMハードウェア/ソフトウェアは選択動作点への変更を開始してもよい(ブロック119)。
【0062】
次に図7を参照すると、DPE回路20及びヒステリシスカウンタ90の一実施形態の動作を示すフローチャートが示されている。理解を容易にするためにブロックは特定の順序で示されているが、他の順序が用いられてもよい。ブロックは、DPE回路20及び/又はヒステリシスカウンタ90内の組み合わせ論理内で並列に実行されてもよい。所望の場合には、ブロック、ブロックの組み合わせ、及び/又はフローチャート全体は、複数のクロックサイクルにわたってパイプライン処理されてもよい。DPE回路20及び/又はヒステリシスカウンタ90は、図7に示される動作を実施するように構成されてもよい。
【0063】
DPE回路20は(有効にされると)、プロセッサ28内のプロセッサアクティビティを監視し、電力推定値を生成するように構成されてもよい(ブロック120)。DPE回路20は、推定値を高電力閾値(決定ブロック122)及び低電力閾値(決定ブロック128)と比較するように構成されてもよい。高電力閾値は、2つの閾値が実装される場合において、DPE回路20が、電力閾値を超えるかどうかを判定するために電力推定値を比較する対象となる電力閾値であってもよい。低閾値は、2つの閾値が実装される場合において、DPE回路20が、より高い動作点への復帰が許容され得るどうかを判定するために電力推定値を比較する対象となる電力閾値であってもよい。いくつかの実施形態では、1つの閾値のみが実装されてもよく、その単一の閾値に対する比較(より大きい/より小さい)が行われてもよい。
【0064】
電力推定値が高電力閾値を超えた場合には(決定ブロック122、「はい」肢)、DPE回路20は、プロセッサ28に対してスロットリングを行うように構成されてもよい(ブロック124)。加えて、DPE回路20は、ヒステリシスカウンタ90に信号を送るように構成されてもよく、ヒステリシスカウンタ90は、アップカウンタ98をインクリメントし、ダウンカウンタ100をクリアするように構成されてもよい(ブロック126)。他方で、電力推定値が低閾値よりも小さい場合には(決定ブロック128、「はい」肢)、DPE回路20は、ヒステリシスカウンタ90へ信号を送るように構成されてもよく、ヒステリシスカウンタ90は、ダウンカウンタ100をインクリメントし、アップカウンタ98をクリアするように構成されてもよい(ブロック130)。
【0065】
ヒステリシスカウンタ90は、アップカウンタ98及びダウンカウンタ100内のアップカウント及びダウンカウントを閾値レジスタ102内のカウント閾値と(又は、アップカウンタ及びダウンカウンタのための別個の閾値が実装されている場合には、それらの別個の閾値と)比較するように構成されてもよい。アップカウントがカウント閾値を超えた場合には(決定ブロック132、「はい」肢)、ヒステリシスカウンタ90は、DPE回路20へ信号を送ってもよく、DPE回路20は、より低い動作点へ変更するためにDVFMハードウェアへ信号を送ってもよい(ブロック134)。ダウンカウント136がカウント閾値を超えた場合には(決定ブロック136、「はい」肢)、ヒステリシスカウンタ90はDPE回路20へ信号を送ってもよく、アップカウントに基づいてより高い動作点が以前に低減されていた場合には、DPE回路20は、そのより高い動作点を復元するためにDVFMハードウェアへ信号を送ってもよい(ブロック138)。APSC 16が含まれる実施形態では、DVFMハードウェアはAPSC 16であってもよい。他の実施形態では、APSC 16は含まれなくてもよく、DVFMハードウェアはPMGR 32内にあってもよい。
【0066】
次に図8を参照すると、システム150の一実施形態のブロック図が示されている。図示されている実施形態では、システム150は、1つ以上の周辺装置154及び外部メモリ12に結合されるSOC 10の少なくとも1つのインスタンスを含む。SOC 10に供給電圧を供給するとともに、メモリ12及び/又は周辺装置154に1つ以上の供給電圧を供給するPMU156が提供されている。いくつかの実施形態では、SOC 10の1つを超えるインスタンスが含まれてもよい(及び1つを超えるメモリ12も含まれてよい)。
【0067】
周辺装置154は、システム150の種類に応じて、任意の所望の回路機構を含んでよい。例えば、一実施形態では、システム150はモバイルデバイス(例えば、携帯情報端末(PDA:personal digital assistant)、スマートフォン等)であってもよく、周辺装置154は、Wi−Fi、Bluetooth(登録商標)、セルラー、全地球測位システムなど等の、さまざまな種類の無線通信用のデバイスを含んでもよい。周辺装置154はまた、RAM記憶装置、ソリッドステート記憶装置、又はディスク記憶装置を含む、追加の記憶装置を含んでもよい。周辺装置154は、タッチ表示画面又はマルチタッチ表示画面を含む、表示画面、キーボード又はその他の入力デバイス、マイクロフォン、スピーカ等などの、ユーザインタフェースデバイスを含んでもよい。他の実施形態では、システム150は任意の種類のコンピューティングシステム(例えばデスクトップパーソナルコンピュータ、ラップトップ、ワークステーション、ネットトップなど)であってもよい。
【0068】
外部メモリ12は任意の種類のメモリを含んでもよい。例えば、外部メモリ12は、SRAM、シンクロナスDRAM(SDRAM)などのダイナミックRAM(DRAM)、ダブルデータレート(DDR、DDR2、DDR3など)SDRAM、RAMBUS DRAM、DDR DRAMの低電力バージョン(例えばLPDDR、mDDRなど)、などであってもよい。外部メモリ12は、シングルインラインメモリモジュール(SIMM:single inline memory module)、デュアルインラインメモリモジュール(DIMM:dual inline memory module)等などの、メモリデバイスが装着される1つ以上のメモリモジュールを含んでもよい。代替的に、外部メモリ12は、チップオンチップ又はパッケージオンパッケージ実装でSOC 10上に装着される1つ以上のメモリデバイスを含んでもよい。
【0069】
上述の開示が完全に理解されれば、当業者には数多くの変形及び変更が明らかになるであろう。以下の特許請求の範囲は、そのような変形及び変更の全てを包含するように解釈されることが意図される。
図1
図2
図3
図4
図5
図6
図7
図8