(57)【要約】プロセッサのクロック周波数要求を特定し、このクロック周波数要求を支援する電圧要求を特定する、動的電力コントローラが提供される。この動的電力コントローラは、クロック周波数要求および電圧要求によって定義される電力状態に、プロセッサを遷移させる。特に、電圧要求によって示される電圧レベルがプロセッサに供給されるとともに、周波数要求によって示される周波数分配がプロセッサのクロック信号に提供される。
2005502114.tif 000002
【特許請求の範囲】
【請求項１】
複数の周波数で動作可能な少なくとも１つのクロック信号を有する、少なくとも１つのプロセッサを含むシステムにおいて、
前記少なくとも１つのプロセッサのクロック周波数要求を特定するステップと、
前記クロック周波数要求を支援するための電圧要求を特定するステップと、
前記クロック周波数要求に応じて、前記少なくとも１つのクロック信号を動作させるステップと、
前記電圧要求に応じて、前記少なくとも１つのプロセッサに供給する電圧を提供するステップとを含む、動的電力制御方法。
【請求項２】
電圧要求を特定するステップが、クロック周波数要求の最大の最小クロック周波数を特定するステップを含む、請求項１に記載の方法。
【請求項３】
少なくとも１つのプロセッサに供給される現行電圧と、電圧要求に応じた電圧との間の電圧差の符号を特定するステップをさらに含む、請求項１に記載の方法。
【請求項４】
電圧差の符号が正の場合に、電圧要求に応じて少なくとも１つのプロセッサに供給する電圧を提供するステップを、クロック周波数要求に応じて少なくとも１つのクロック信号を動作させるステップの前に遂行する、請求項３に記載の方法。
【請求項５】
電圧差の符号が負の場合に、クロック周波数要求に応じて少なくとも１つのクロック信号を動作させるステップを、電圧要求に応じて少なくとも１つのプロセッサに供給する電圧を提供するステップの前に遂行する、請求項３に記載の方法。
【請求項６】
少なくとも１つのプロセッサが、複数のクロックドメインを有し、各クロックドメインが、前記少なくとも１つのプロセッサの、複数の構成要素に、複数の周波数でクロック信号を提供し、かつ
クロック周波数要求を特定するステップが、前記複数のクロックドメインのそれぞれにおいて必要とされる最小クロック周波数を特定することを含む、請求項１に記載の方法。
【請求項７】
複数のクロックドメインのそれぞれにおいて必要とされる、最小クロック周波数を比較するステップをさらに含む、請求項６に記載の方法。
【請求項８】
比較をするステップが、複数のクロックドメインのそれぞれにおいて必要とされる最小クロック周波数を比較して、前記複数のクロックドメインが必要とする最大の最小クロック周波数を特定することを含む、請求項７に記載の方法。
【請求項９】
電圧要求を特定するステップが、最大最小クロック周波数から前記電圧要求を特定することを含む、請求項８に記載の方法。
【請求項１０】
少なくとも１つのプロセッサが複数のクロックドメインを有し、各クロックドメインが前記プロセッサの複数の構成要素にクロック信号を提供し、各クロック信号が少なくとも１つの関連する周波数を有するとともに、
クロック周波数要求を特定するステップが、前記複数のクロックドメインのそれぞれを動作可能にする必要があるかどうかを判定することを含む、請求項１に記載の方法。
【請求項１１】
電圧要求を特定するステップが、動作可能にする必要のあるクロックドメインの、少なくとも１つの関連する周波数に基づいて、電圧要求を特定するステップを含む、請求項１０に記載の方法。
【請求項１２】
複数の周波数で動作する少なくとも１つのクロック信号を含むプロセッサであって、
前記少なくとも１つのクロック信号を受け取る１つまたは複数の構成要素と、
前記プロセッサのクロック周波数要求を同定する少なくとも１つの構成要素に結合されたコントローラであって、前記プロセッサのクロック周波数要求に基づいて電圧要求を特定するとともに、前記クロック周波数要求および前記電圧要求によって定義される電力状態への遷移を順序づける、前記コントローラとを含む、前記プロセッサ。
【請求項１３】
コントローラが複数のレジスタによって少なくとも１つの構成要素に結合され、前記複数のレジスタがプロセッサのクロック周波数要求を示す情報を記憶する、請求項１２に記載のプロセッサ。
【請求項１４】
コントローラが、複数のレジスタに結合されたコンパレータを含み、該コンパーレータが、前記複数のレジスタ内に記憶された情報に基づいて電圧要求を特定するように構成されている、請求項１３に記載のプロセッサ。
【請求項１５】
プロセッサが、１つまたは複数のクロック動作構成要素に提供されて、複数の周波数で動作する複数のクロック信号を含む、請求項１４に記載のプロセッサ。
【請求項１６】
複数のレジスタが、複数のクロック信号の、それぞれのクロック周波数要求に対応する値を記憶する、請求項１５に記載のプロセッサ。
【請求項１７】
コンパレータが、複数のレジスタ内に記憶された最大値を特定し、その結果としてクロック周波数要求を特定する、請求項１６に記載のプロセッサ。
【請求項１８】
コントローラが、複数の電圧値を記憶するメモリをさらに含む、請求項１４に記載のプロセッサ。
【請求項１９】
コンパレータが、複数のレジスタ内に記憶された情報を、プロセッサのクロック周波数要求を支援するのに十分な電圧値を記憶する、メモリ内の場所にマッピングする、請求項１８に記載のプロセッサ。
【請求項２０】
コントローラが、クロック周波数要求および電圧要求によって定義される電力状態への遷移を順序づける有限状態機械を含む、請求項１９に記載のプロセッサ。
【請求項２１】
有限状態機械が、メモリから得られた電圧値を受け取り、プロセッサに供給されている現行電圧レベルと前記得られた電圧値との差の符号を特定する、請求項２０に記載のプロセッサ。
【請求項２２】
差の符号が正のときには、有限状態機械は、得られた電圧値で動作するようにプロセッサを遷移させ、次いでクロック周波数要求で動作するようにプロセッサを遷移させる、請求項２１に記載のプロセッサ。
【請求項２３】
差の符号が負のときには、有限状態機械は、クロック周波数要求で動作するようにプロセッサを遷移させ、次いで得られた電圧値で動作するようにプロセッサを遷移させる、請求項２１に記載のプロセッサ。
【請求項２４】
少なくとも１つのクロック信号が複数のクロック信号を含み、１つまたは複数のクロック動作構成要素が複数のクロック動作構成要素を含む、請求項１３に記載のプロセッサ。
【請求項２５】
複数のレジスタが、複数のクロック動作構成要素のそれぞれが必要とする、複数のクロック信号のそれぞれに対する周波数値を記憶する、請求項２４に記載のプロセッサ。
【請求項２６】
複数のレジスタが、複数のクロック動作構成要素のそれぞれが複数のクロック信号のそれぞれを必要とするかどうかを示す、２進値を記憶する、請求項２４に記載のプロセッサ。
【請求項２７】
複数のクロック信号を有するプロセッサへの電力を動的に制御するコントローラであって、
前記プロセッサのクロック周波数要求を示す情報を記憶する複数のレジスタと、
該複数のレジスタに結合されたコンパレータであって、前記複数のレジスタに記憶された前記情報に基づいて電圧要求を特定するように構成された、前記コンパレータと、
前記コンパレータに結合されて、前記プロセッサを、前記クロック周波数要求および前記電圧要求によって定義される電力状態に遷移させるように構成されたシーケンサとを含む、前記コントローラ。
【請求項２８】
複数のレジスタが、プロセッサの複数の構成要素が必要とする複数の周波数値を記憶する、請求項２７に記載のコントローラ。
【請求項２９】
複数のレジスタのそれぞれが、プロセッサに供給される複数のクロック信号のそれぞれに対するビットを含み、該ビットが、それに対応するクロック信号を動作可能にする必要があるかどうかを示す、請求項２７に記載のコントローラ。
【請求項３０】
コンパレータが、複数の電圧値を記憶するメモリを含み、前記コンパレータは複数のレジスタに記憶された複数の周波数値を、前記複数の周波数値によって示されるクロック周波数要求を支援するのに十分な電圧値を記憶するメモリの場所にマッピングする、請求項２８に記載のコントローラ。
【請求項３１】
コンパレータがプログラマブル論理配列を含み、前記コンパレータは複数のレジスタに記憶された複数の周波数値をプログラマブル論理配列への入力にマッピングするように適合されており、前記プログラマブル論理配列は、クロック周波数要求を支援するのに必要な電圧値を示す、シーケンサへの出力を提供するようにプログラムされている、請求項２８に記載のコントローラ。
【請求項３２】
シーケンサが有限状態機械である、請求項２７に記載のコントローラ。
【請求項３３】
複数の構成要素をさらに含むプロセッサと組み合わせた、請求項２７に記載のコントローラ。
【請求項３４】
複数の構成要素のそれぞれが、複数のレジスタのそれぞれ１つを介して、前記構成要素のクロック周波数要求を示す、請求項３３に記載の組合せ。
【請求項３５】
複数のレジスタが、複数のクロック信号のそれぞれに対応するビットを含む、請求項２７に記載の組合せ。
【請求項３６】
複数の構成要素のそれぞれが、複数のレジスタの少なくとも１つと関連し、かつ前記複数の構成要素のそれぞれは、複数のクロック信号のそれぞれに対応するビットを介して、それぞれのクロック信号が必要かどうかを示す、請求項３５に記載の組合せ。
【請求項３７】
複数のクロック信号で動作する複数の構成要素を有する少なくとも１つのプロセッサと、
該少なくとも１つのプロセッサに、変更可能なレベルの電圧を供給するように適合された電源と、
前記複数のクロック信号の周波数を制御するように適合されたクロックコントローラと、
前記電源および前記クロックコントローラに接続されて、前記少なくとも１つのプロセッサを監視して前記少なくとも１つのプロセッサのクロック周波数要求を特定するとともに前記クロック周波数要求に基づいて電圧要求を特定し、かつ前記電源および前記クロックコントローラを、前記クロック周波数要求および前記電圧要求によって定義される電力状態に遷移させる、動的電力コントローラとを含む、デバイス。
【請求項３８】
複数のクロック信号が、システムクロック信号を含む、請求項３７に記載の低電力デバイス。
【請求項３９】
クロックコントローラが、位相同期ループ（ＰＬＬ）周波数逓倍器を含み、システムクロック信号と同期した高周波クロック信号を提供する、請求項３８に記載の低電力デバイス。
【請求項４０】
複数のクロック信号が、システムクロック信号および高周波クロック信号から導かれる、請求項３９に記載の低電力デバイス。
【発明の詳細な説明】
【０００１】
本出願は、３５Ｕ．Ｓ．Ｃ．§１１９（ｅ）の下で、２００１年８月２９日に出願されたアレンらの「ディジタルベースバンドプロセッサ（Allen, et al., "DIGITAL BASEBAND PROCESSOR"）」という名称の米国特許仮出願第６０／３１５，６５５号の優先権を主張するものである。前記仮出願の全文を、本明細書に参照により組み入れる。
発明の分野
本発明は、プロセッサの電力消費の低減に関し、より具体的には、プロセッサのクロック周波数要求およびそれに対応する電圧要求を特定することによって、プロセッサに供給する電圧レベルを、処理状態および／または計算要求に基づいて、動的に制御する方法および装置に関する。
【０００２】
発明の背景
電力消費および管理は、プロセッサ、ディジタルデバイス、コンピュータシステムなどの開発者にとっての設計関心事である。セルラー電話、ラップトップコンピュータ、パーソナルディジタルアシスタンツ（ＰＤＡ）、およびその他の携帯用およびハンドヘルド式デバイスなどのバテリー給電デバイスにおいて、電力消費は、デバイスを再充電かつ／または代替電源に接続しなくてはならなくなる前に、デバイスが動作できる時間の長さに対して重要な因子になることがある。そのために、電力消費はこれらのデバイスの利用性に大きな影響を与える。
【０００３】
コンピュータシステムおよび／またはデバイスによっては、電力制御によって２値の電力状態が供給されて、第１の電力状態がアイドルプロセッサに対応し、第２の電力状態がアクティブプロセッサに対応するものもある。しかしながら、ディジタルデバイス中のプロセッサは、多様なアクティブ処理状態を有し、例えば、処理状態を支援するために異なる電力レベルを必要とする計算需要を伴うことがある。
しかしながら、従来式の電力制御方法は、プロセッサの異なる電力需要を考慮することができない。したがって、プロセッサの計算要求に応じて、デバイスは、そのプロセッサの計算タスクおよび／またはファンクションを実行するのに要する電力を超える、電力を消費している可能性がある。
【０００４】
発明の概要
本発明の一実施態様は、少なくとも１つのプロセッサを有するシステムにおける動的電力制御の方法を含み、この少なくとも１つのプロセッサは、複数の周波数で動作可能な、少なくとも１つのクロック信号を含む。前記方法は、前記少なくとも１つのプロセッサのクロック周波数要求を特定するステップと、前記クロック周波数要求を支援するための電圧要求を特定するステップと、前記クロック周波数要求に応じて、前記少なくとも１つのクロック信号を動作させるステップと、前記電圧要求に応じて、前記少なくとも１つのプロセッサに電圧を供給するステップとを含む。
【０００５】
本発明による別の一実施態様は、複数の周波数で動作する少なくとも１つのクロック信号を含むプロセッサを含む。該プロセッサは、前記少なくとも１つのクロック信号を受け取る１つまたは複数のクロック動作構成要素と、少なくとも１つの構成要素に結合されて、前記プロセッサのクロック周波数要求を決定するコントローラであって、前記プロセッサのクロック周波数要求に基づいて電圧要求を特定するとともに、前記クロック周波数要求および前記電圧要求によって定義される電力状態への遷移を順序づける、前記コントローラとを含む。
【０００６】
本発明による別の実施態様は、プロセッサへの電力を動的に制御するコントローラをふくむ。該コントローラは、前記プロセッサのクロック周波数要求を示す情報を記憶する複数のレジスタと、該複数のレジスタに結合されたコンパレータであって、前記複数のレジスタに記憶された前記情報に基づいて電圧要求を特定するように構成された、前記コンパレータと、前記コンパレータに結合されたシーケンサであって、前記プロセッサを、前記クロック周波数要求および前記電圧要求によって定義される電力状態に遷移させるように構成された前記シーケンサとを含む。
【０００７】
本発明による別の実施態様は、複数のクロック信号で動作する複数のクロック動作構成要素を有する少なくとも１つのプロセッサと、該少なくとも１つのプロセッサに、変更可能な電圧を供給するように適合された電源と、前記複数のクロック信号の周波数を制御するように適合されたクロックコントローラと、前記電源および前記クロックコントローラに接続された動的電力コントローラであって、前記少なくとも１つのプロセッサを監視して前記少なくとも１つのプロセッサのクロック周波数要求を特定するとともに前記クロック周波数要求に基づいて電圧要求を特定するように適合され、かつ前記電源および前記クロックコントローラを、前記クロック周波数要求および前記電圧要求によって定義される電力状態に遷移させるように構成された、動的電力コントローラとを含む、低電力デバイスを含む。
【０００８】
詳細な説明
多くのデバイス、特に複数のバッテリ給電デバイスにおいて、そのデバイスのプロセッサが過剰な電力を消費する時間を低減することが有利である。より低い電力状態においても、プロセッサの計算タスク、機能、および動作が実行可能であり、かつ／または処理需要が満足されるときに、プロセッサは、過剰な電力を消費していると考えられる。「プロセッサ」の用語は、論理動作、計算タスク、制御機能などを実行する、任意の装置を全般的に意味するものである。プロセッサは、１つまたは複数のサブシステム、構成要素、および／または他のプロセッサを含むことがある。プロセッサは、通常、クロック信号を使用してデータをラッチし、論理状態を前進させ、かつ／または順序づけし、計算および論理動作を同期させ、かつ／またはその他のタイミング機能を提供する、様々な論理構成要素を含む。
【０００９】
本出願者は、デバイスの電力消費は、デバイスのプロセッサに供給される電圧の２乗に関係し、プロセッサが動作する周波数に比例することを見出した。デバイスの電力消費は次のように表すことができる。
ＰＤ＝ｃＶ２Ｆ          （式１）
ここで、
Ｖ＝デバイスに供給される電圧（すなわち、ＶｄｄとＧｎｄの差）、
Ｆ＝周波数（例えば、デバイスのクロック周波数）、
ｃ＝ＶおよびＦで動作する回路によって決まる定数である。
【００１０】
さらに、本出願者は、プロセッサを動作させるのに要する電圧は、クロック周波数またはプロセッサに供給かつ分配されている周波数の関数であることを認識した。したがって、デバイスの電力消費を低減する１つの方法は、プロセッサに供給されるクロック信号の周波数を動的に調整することによって、プロセッサのクロック周波数要求を反映する方法である。
「クロック周波数要求」という用語は、プロセッサのタスク、機能、および／または計算要求を支援するのに要する、プロセッサに供給されるクロック周波数またはクロック周波数の組を、全般的に意味する。一般に、クロック周波数要求より低い周波数を有するクロック信号（単数または複数）は、論理ゲート、フリップフロップ、その他のクロック動作回路、およびクロック信号が供給される構成要素を動作させるのに十分ではなく、かつ要求される時間内にタスクを完了するには不十分であり、かつ／またはプロセッサの１つまたは複数の動作を実行することができない。
【００１１】
上述のように、プロセッサが必要とする電圧は、プロセッサに提供され、かつ分配されるクロック周波数またはクロック周波数の組（すなわち、クロック周波数要求）の関数とすることができる。そのために、プロセッサの計算需要が低いときには、プロセッサのクロック周波数要求は低くてもよい。したがって、クロック周波数要求を支援するのに必要な電圧、すなわち電圧要求を、それに応じて低減することができる。
【００１２】
「電圧要求」という用語は、所与のクロック周波数要求を支援するために、プロセッサに供給される電圧のレベル（単数または複数）を全般的に意味する。特に、電圧要求は、クロック動作構成要素に誤動作（例えば、メモリアクセス障害、タイミング違反、重要な速度パスの遅延など）を起こさせることなく、クロック周波数要求に応じて、プロセッサの様々なクロック信号をドライブするのに十分な、電圧値またはレベルを示す。あるクロック周波数要求を支援する電圧レベルは多数（例えば、ある最小電圧を超える電圧）あるが、電圧要求とは、一般に、クロック周波数要求の要件により厳密に合致する電圧レベルを意味する。
【００１３】
プロセッサへの計算需要が時間とともに変化すると、クロック信号周波数とプロセッサに供給される電圧レベルの両方を低減する（すなわち、プロセッサがより低い電力状態に遷移することができる）機会が生ずることがある。すなわち、デバイスの電力消費は、プロセッサの処理要求を反映して動的に調整することが可能である。したがって、本発明による一実施態様は、プロセッサのクロック周波数要求を同定し、かつ、この同定されたクロック周波数を支援するためにプロセッサに供給される電圧を調整することを含む。
【００１４】
図１は、例示的なプロセッサ２０のブロック図を示す。プロセッサ２０は、例えば、単一半導体チップ上に製作することができる。プロセッサ２０は、ディジタル信号プロセッサ（ＤＳＰ）サブシステム２２、マイクロコントローラ（ＭＣＵ）サブシステム２４、システムメモリ２８、および周辺サブシステム２６を含む。これらのプロセッサの様々なサブシステムは、オペランドおよび命令、アドレスおよび／または制御信号などの、様々な構成要素間でデータを伝達および／または転送するための、システムバス３０に接続されている。
【００１５】
ＤＳＰ２２には、高速ディジタル信号プロセッサを含めることができる。ディジタル信号プロセッサの動作には、リアルタイム性能、計算集中型であり、かつしばしば時間が重要因子となるタスク、頻繁なメモリアクセスなどの特徴がある。ＭＣＵサブシステム２４は、例えば、様々な制御機能、座標系事象、実行システムソフトウエアなどを実行するとともに、ＤＳＰよりも低いクロック周波数で動作することができる。システムメモリ２８は、プロセッサ２０の様々なサブシステムが共有するメモリリソースを提供する、ＲＡＭのようなオンチップメモリとすることができる。周辺サブシステム２６には、プロセッサが、オフチップデバイスまたはその他のプロセッサと通信するために必要な、様々なインターフェイスおよびロジックを含めることができる。例えば、周辺サブシステム２６は、オフチップ電力管理チップと通信するか、またはオフチップメモリにアクセスすることができる。さらに、周辺サブシステムには、シリアル、赤外線通信（ＩｒＤＡ）、ユニバーサルシリアルバス（ＵＳＢ）、ＳＩＭインターフェイスなどの、様々な通信標準をサポートするためのインターフェイスを含めることができる。
【００１６】
本明細書において、図１に示すプロセッサ、および類似の変形態様を、本発明の様々な態様を示し、それを実証するために用いるが、本明細書の全体を通して示す、すべての構成要素およびプロセッサのサブシステムは、単に例示的なものであることを理解すべきである。本発明は、プロセッサの実装における構成要素の数、タイプまたは構成に限定されることも、またはそれによって限定されるものでもない。時間とともに変化するクロック周波数要求を有する、任意のデバイス、プロセッサおよび／または論理回路は、本発明の範囲に入るものと考えられる。
【００１７】
例として、ＤＳＰサブシステム２２には、スクラッチメモリ、コプロセッサ、割込みコントローラ、専用バスなどを含む、多様な構成要素を含めることができる。ＤＳＰサブシステム自体の様々な構成要素は、独立の周波数要求を有することがある。同様に、ＭＣＵサブシステム２４および周辺サブシステム２６などのその他のプロセッサ構成要素は、様々なクロック周波数要求を含むことがある。したがって、プロセッサのクロック周波数要求は、頻繁に変化する、すなわち、プロセッサのアクティブ状態は多数の動作モードを有する可能性がある。
【００１８】
したがって、プロセッサ２０は、時間とともに変化するクロック周波数要求を有する可能性がある。例えば、動作モードによっては、ＤＳＰはアイドル状態にある可能性がある。そのために、ある種の計算タスクを実行するのにＤＳＰが必要とする高周波クロック信号は、そのような動作モードにおいては必要ではないことがある。「動作モード」という用語は、プロセッサの特定のクロック周波数要求を発生させる、プロセッサの様々な構成要素の処理状態または処理状態の組を特徴づけるものである。一般に、動作モードとは、プロセッサの処理状態を特徴づけるものであり、処理状態において、異なる電力状態に遷移することが可能である。
【００１９】
プロセッサに対して、それが必要とする様々なクロック信号を提供するために、本明細書においてはシステムクロックと呼ぶ、１つの低周波クロックが、クロック基準としてプロセッサに設けられることが多い。プロセッサが必要とする様々なクロック周波数は、システムクロックから生成されて、プロセッサのサブシステムおよび／または構成要素に適切に分配される。プロセッサが必要とする、さまざまなクロック周波数は、位相同期ループ（ＰＬＬ）逓倍器によって生成して、プロセッサの構成要素に分配するクロック信号が、共通基準クロックと同相となるようにすることが多い。すなわち、プロセッサ中に分配されるクロック信号は、同期されている。
【００２０】
図２は、例えば、要求される周波数においてクロック信号をプロセッサ２０の様々な構成要素に分配する、例示的なシステムクロッキング方式を示す。プロセッサ２０の一部とすることのできる例示的な構成要素を図２に示してあり、それには、ＤＳＰ２２ａ、コプロセッサ２２ｂ、ＤＳＰバス２２ｃ（例えば、ＤＳＰサブシステム２２を相互接続する専用バス）、ＤＳＰ ＳＲＡＭ２２ｄ（例えば、キャッシュ、スクラッチメモリ、など）、ＭＣＵ２４ａ、システムメモリ（ＳＭＥＭ）２８、周辺バス２６ａ、および外部バス（ＥＢＵＳ）２６ｂが含まれる。クロックドメインという用語は、クロック信号、およびそのクロック信号が通常、動作する１組の周波数を、全般的に意味する。一般に、あるクロックドメイン内で動作する構成要素は、それぞれのクロックドメインの、前記１組の周波数で動作する、１つまたは複数のクロック動作要素（例えば、論理ゲート、フリップフロップなど）を有することになる。１つの構成要素は、複数のクロックドメインで動作することが可能であり、また逆に、１つのクロックドメインは、複数の構成要素にサービスを行うことができる。
【００２１】
プロセッサ２０が必要とする様々なクロック信号およびクロック信号周波数は、クロック制御１１０の構成要素によって供給、分配される。特に、クロック制御１１０は、システムクロック信号８２およびシステムＰＬＬ逓倍器１１４を含む。システムクロック信号８２、または単にシステムクロックは、プロセッサに分配される様々な他のクロック信号を同期する基準として提供される。システムＰＬＬ逓倍器１１４は、システムクロック信号８２を受け取り、高周波クロック信号８４を提供して、それをシステムクロック信号と同期してロックする。通常、クロック信号８４は、システムクロックのいくつかの倍数である。
【００２２】
図２は、システムクロック信号８２およびＰＬＬクロック信号８４から生成される３つの主要なクロックドメインである、クロックドメイン９０ａ、クロックドメイン９０ｂ、およびクロックドメイン９０ｃを示す。プロセッサ２０の構成要素は、これらのクロックドメイン内で動作する。例えば、ＤＳＰ２２ａおよびコプロセッサ２２ｂは、クロックドメイン９０ａで動作が可能である。ＤＳＰバス２２ｃおよびＤＳＰ ＳＲＡＭは、クロックドメイン９０ｂ内で動作が可能である。ＭＣＵ２４ａ、ＳＭＥＭ２８、周辺バス２６ａ、および外部バス（ＥＢＵＳ）２６ｂは、クロックドメイン９０ｃ内で動作が可能である。
各クロックドメイン内のクロック信号は、様々な選択、分割、およびゲート論理によって提供されて、複数のクロックツリー５０ａ〜５０ｈを介してプロセッサの構成要素に分配される。例えば、クロック制御１１０は、クロックドメインのそれぞれにマルチプレクサ（例えば、それぞれマルチプレクサ７０ａ、７０ｂ、および７０ｃ）を含み、これらのマルチプレクサは、対応するクロックドメインにおいて構成要素を動作させるためにクロック信号８４が必要かどうかを独立して選択することができる。あるいは、クロック信号８４をバイパスして、システムクロック信号８２を、プロセッサの適当な構成要素に供給することができる。
【００２３】
さらに、クロック制御１１０は、プロセッサのクロック周波数要求に合致させる目的で、プロセッサの構成要素に低い周波数を提供するために、クロック信号８４の周波数を分割することができる。特に、分割器６２および６４は、クロック信号８４の周波数を、周波数において低減することを可能にする。例えば、分割器６２は、システムＰＬＬ逓倍器からのクロック信号が選択されるとき、クロックドメイン９０ｂ内で動作するクロック動作構成要素に、クロック信号８４の半分の周波数を有するクロック信号を提供することができる。同様に、分割器６４は、クロックドメイン９０ｃ内で動作しているクロック動作構成要素に、２、４、６、８、１０、１２および１４の倍数で減少させた周波数を有するクロック信号を供給することができる。分割器６２、６４は、例えば、Ｎ分割カウンタ（divide-by-n counter）、またはクロック信号の周波数を低減するための、それと等価な構成要素とすることができる。それぞれのクロックドメインに対して選択される、様々な分割器係数（divider factor）を、例えば分割器選択（divider select）６６によって選択することができる。
【００２４】
図に示すクロッキング方式において、電力が消費されている複数の段階がある。システムＰＬＬ逓倍器１１４には、例えば、クロック信号８４を生成するために、電圧制御発振器（ＶＣＯ）を含めることができる。当該技術においては知られているように、電圧制御発振器では、発振器に電圧が供給されて、供給された電圧に比例する周波数を有する信号を生成する。したがって、クロック信号８４を生成するのに消費される電力は、生成されている周波数に比例する。
【００２５】
さらに、プロセッサの様々なクロック動作回路、論理ゲート、フリップフロップなどにクロック信号を提供するために、プロセッサの構成要素および／またはサブシステム内に、クロック分配ツリーまたは単にクロックツリーを設けてある。例えば、クロックツリー５０ａは、クロックドメイン９０ａのクロック信号をドライブして、それをＤＳＰ２２ａの低レベル構成要素に分配する。同様に、クロックツリー５０ｅは、クロックドメイン９０ｃのクロック信号をドライブして、それをＭＣＵ２４ａの低レベル論理構成要素に分配する。様々なクロックツリーに充電するためには電力が必要であり、したがって、関連する構成要素がアイドル状態にあるときにクロックツリーを動作不能にすれば、電力を節約することができる。さらに、より細い細分性（granularity）で電力消費を制御するため、すなわち、クロックツリー分配ネットワークのある部分のゲートを閉じるために、さらなるクロックゲート論理を、クロックツリー内に含めることができる。
【００２６】
そのように、プロセッサのクロック周波数要求を認識することによって、クロック制御１００は、過剰なクロック周波数が生成されているときに、その間隔を低減するように周波数分配を構成することができる。さらに、クロック制御１１０は、プロセッサのクロック周波数要求に応じて、様々なクロックツリーまたはクロックツリーの部分の動作不能化を制御することができる。
図２に示すクロッキング方式は、単に例示的なものであり、プロセッサが必要とする様々なクロック信号を制御し、プロセッサの構成要素および／またはサブシステムに分配することのできる、１つの方式を示すことを意図するものであることを理解すべきである。しかしながら、当業者であれば、特定の組のクロッキング要求を満足する、様々なクロッキング方式を思いつくであろう。例えば、システムクロックは、ＰＬＬ逓倍器が供給するクロック信号で多重化された状態で示してある。しかしながら、システムクロックは、ＰＬＬクロック信号と独立した別個のクロックドメインと考えて、分配することもできる。システムクロッキング方式に対する特定の設計選択は、限定的なものではなく、様々な変更形態、修正形態、および改善形態を、本発明の範囲内で考慮することができる。
【００２７】
図３は、プロセッサに分配された様々なクロック周波数の、時間による変化を示す図である。プロット３００は、あるベースバンドプロセッサのシステムクロッキング方式における、４つのクロックドメインの例示的な周波数値が、時間とともに変化するのを示す。図３に示す例示的なクロック周波数要求関数を生成するベースバンドプロセッサは、図１に示すプロセッサ２０と類似のものでもよい。点線で示したクロックドメイン３１０および、実線で示したクロックドメイン３２０は、それぞれ図２のクロックドメイン９０ａおよび９０ｃと同等にすることができる。破線で示すクロックドメイン３３０は、例えば、システムクロックドメインとすることができる。さらに、ベースバンドプロセッサは、太線で示すベースバンドクロックドメイン３４０を含み、プロセッサの適当な構成要素にベースバンドクロックを供給する。無線通信に使用されるプロセッサは、低周波ベースバンドクロックを介して動作する、外部デバイス、特に遠隔デバイスと同期されることが多い。
【００２８】
プロット３００上部の横方向につけてあるラベルは、０１から０９で示した一連の動作モードである。この動作モードは、任意の数の方法で区別することが可能であり、プロセッサの設計と所望の細分性のレベルに依存することを理解すべきである。例えば、クロックドメインの１つにおける、周波数のそれぞれの変化を、異なる動作モードと考えることができる。
動作モード０１において、唯一の動作可能なクロックは、ベースバンドクロック３４０である。その他のすべてのクロックは、動作不能にすることができる。例えば、ベースバンドプロセッサがセルラー電話で使用されている場合には、例えば動作モード１は、セルラー電話がオンであるが、使用されていないとき（すなわち、スタンバイモードにおいて）に発生することが考えられる。例えば、ある時刻ｔ１において、ＤＳＰの処理電力を要求する事象が発生する。このような場合には、システムクロック３３０は動作可能にされ、ＰＬＬに供給されて、このＰＬＬが最大クロック速度を生成する。第２の動作モードへの遷移をトリガーする事象には、クロックドメイン３１０および３２０における構成要素からの処理が必要となる可能性がある。そのような場合には、すべてのクロックツリーを動作可能にすることができる。時間とともに性能要求が低下し、クロック周波数を低減できる（例えば、システムＰＬＬ逓倍器から生成されるクロック信号の周波数が低減できる）可能性がある。
【００２９】
時刻ｔ２において、クロックドメイン３１０よび３２０を必要とするタスク（単数または複数）が完了すると、プロセッサの計算要求が低下する。このような場合には、システムＰＬＬ逓倍器はバイパスされて、システムクロックおよびベースバンドクロックだけが動作可能にされる。時刻ｔ３において、処理要求によって、動作モード０４に示すアクティブクロックドメインの構成がもたらされる、別の事象が発生する可能性がある。同様に、動作モード０５〜０９は、図２に示す対応するクロック要求を発生させる、さらに別の処理状態を示す。
【００３０】
したがって、計算需要が時間とともに変化すると、処理要求の低下によって、クロック信号周波数を低減できる機会がもたらされる。さらに、あるクロックドメインは、ある動作モード中には不十分であり、その結果関連するクロックツリーを動作不能にすることができる。変化するクロック周波数要求に応答して、プロセッサに供給される電圧は、クロック周波数要求の変化要求を支援するために調整することができる。このように、クロック周波数要求が低下すると、電圧要求を低減することができる。
【００３１】
本出願者は、プロセッサのクロック周波数要求を監視することによって、プロセッサに供給される電圧を動的に制御し、その結果として、プロセッサに要求を超える電圧が供給される、プロセッサの時間を短くすることができることをつきとめて、それを理解した。
図４は、動的電力制御（ＤＰＣ）機能を有するプロセッサ２０’を含む、本発明による一実施態様を示す。説明の目的で、プロセッサ２０’には、図１に関係して示して記述したサブシステムを含めてある。
【００３２】
プロセッサ２０’の動作中に、サブシステムに対する計算需要は、時間とともに変化する可能性がある。したがって、プロセッサのクロック周波数要求も、様々な構成要素およびサブシステムが異なる処理状態に遷移するにつれて、変化する可能性がある。動的電力コントローラ（ＤＰＣ）１００は、プロセッサ２０’の様々なサブシステムと通信するために、システムバス３０に接続することができる。動的電力コントローラ１００は、代替方法として、適当な相互接続を有する共有レジスタなどの、その他の様々な方法によって、サブシステムと通信してもよい。
図４において、プロセッサ２０’は、オフチップ電力管理４０によって電力を供給される。電力管理４０は、オフチップで存在するように示してあるが、別の選択肢としては、プロセッサと同一の半導体チップ上に配置してもよい。電力管理４０は、通常、電力を受け取る構成要素によって指定される電圧レベルを提供して、電力源とすることのできる、任意の構成要素とすることができる。例えば、電力管理４０には、ある特定の電圧レベルを要求するために、アクセスして書き込むことのできる読取り／書込みレジスタを含めることができる。
【００３３】
ＤＰＣ１００は、プロセッサに供給すべき電圧レベルを電力管理に示すために、レジスタ１８０に接続されている。電力管理は、例えば、低ドロップアウト（ＬＤＯ）電圧調節器とすることができる。電力管理は、ＬＤＯ制御１８２を含み、レジスタ１８０によって指定される電圧レベルが、安定して、供給ライン１４２に供給されるときを示すことができる。
さらに、ＤＰＣ１００はクロック制御１１０に接続されている。プロセッサ２０’は、例えば、図２に示すものと、実質的に同一のシステムクロッキング方式を有する。したがって、クロック制御１１０には、クロック信号をプロセッサの様々なサブシステムに分配するために、様々な構成要素および論理ゲートを含めることができる。例えば、クロック制御１１０には、図２に示すような、システムＰＬＬ逓倍器、バイパスマルチプレクサ、分割器選択（divider select）、ディセーブル論理（disable logic）、クロックツリーなどを含めてもよい。
【００３４】
クロック制御１１０には、システムＰＬＬ逓倍器に結合されて、システムＰＬＬによって出力される周波数を記憶する、書込み可能レジスタを含めることができる。このレジスタは、代替的に、ＶＣＯに要求される電圧値を記憶し、所望の周波数、その所望の周波数を生成するのに要する入力クロック信号の倍数比、またはシステムＰＬＬ逓倍器によって生成される高周波出力クロック信号の所望の周波数を表すその他の値を生成してもよい。さらに、クロック制御には、様々なクロックドメインにおいて、分割器の所望の分割を制御することのできる、レジスタまたはその他の制御手段を含めてもよい。例えば、分割器選択には、所望の分割器係数を記憶するレジスタのバンクを含めることができる。さらに、クロック制御１１０には、様々なクロックドメインをゲートオフできるようにする論理、独立して動作不能にされるクロックツリー、および／または動作不能にされたクロックツリーの部分を含めることができる。
【００３５】
ＤＰＣ１００は、プロセッサ２０’を監視して、プロセッサの現在クロック周波数要求を特定するために、構成要素および／またはサブシステムの処理状態を判定する。そのクロック周波数要求に応じて、ＤＰＣ１００は、クロック周波数要求を支援するのに必要な電圧レベルを特定する。次いで、ＤＰＣ１００は、プロセッサに供給される電圧を調整するように電力管理４０に指令するとともに、プロセッサのクロック周波数要求によって様々なサブシステムおよび構成要素に与えられる周波数分配を提供するようにクロック制御１１０に指令する。
【００３６】
コントローラ（例えば、動的電力コントローラ１００）は、専用ハードウエア（例えば、様々な回路、プレプログラム論理配列、有限状態機械（ＦＳＭｓ）など）を用いるか、またはソフトウエア（例えば、マイクロコード）を使用して、コントローラの様々な機能を実行するようにプログラムされた１つまたは複数のプロセッサを使用するなどの、多くの方法で実現ができることを理解すべきである。本発明の様々な実施態様によるコントローラの実現には、ハードウエア、ファームウエア、およびソフトウエア指向要素を含めてもよいことを理解すべきである。
図５は、本発明によるプロセッサに供給される電力を動的に調整する一方法を示すフローチャートである。例えば、以下に記述する方法を、プロセッサ２０’への電圧供給を動的に制御するために、ＤＰＣ１００で使用することができる。
【００３７】
ステップ２１０において、ＤＰＣはプロセッサのクロック周波数要求を監視する。クロック周波数要求の変化は、プロセッサに供給する電圧レベルを低減することができることを示すか、または新クロック周波数要求を支援するために、プロセッサの処理需要が追加の電圧を必要とすることを示す場合がある。したがって、ステップ２２０において、新しいクロック周波数要求を支援するのに必要な電圧要求を特定するために、クロック周波数要求が評価される。
例えば、クロック周波数要求は、そのクロックドメインで動作している構成要素の関数および／または計算タスクを実行するために各クロックドメインが必要とする、最小周波数を表すことができる。このようにして、ＤＰＣは、システムの電圧要求を特定するために、最大最小周波数値と呼ぶ、最大値を選択することができる。
【００３８】
プロセッサのクロック周波数要求から電圧要求を特定する他の方法は、当業者であれば思いつくであろうが、それは特定のプロセッサ実装のクロッキング方式に依存する。例えば、ＤＰＣは、電圧要求を特定するときに、新しいクロック周波数要求の下で、どのクロックツリーを動作不能にすることができるかを、考慮することができる。ＤＰＣはまた、電圧を特定するときに、クロック周波数要求の最大最小値以上のことを考慮することもできる。所与のクロック周波数要求から電圧要求を特定するための様々な方法が、本発明の範囲に含まれると考えられる。
ステップ２３０において、クロック周波数要求を支援するのに十分な電圧レベルが特定される。ステップ２４０において、プロセッサに供給されている現行電圧レベルが、ステップ２４０において特定される電圧レベルと比較されて、電圧要求を提供するのに必要な、要求電圧変化、またはデルタが特定される。
【００３９】
電圧変化の符号が正である（すなわち、電圧要求が現行電圧レベルよりも大きい）場合には、ステップ２５０ａおよび２６０ａで示す、高電力状態に遷移するための一連の事象が続く。すなわち、電圧要求によって示される電圧レベルが、最初に遷移させられる。例えば、ＤＰＣは、プロセッサの電圧要求に合致するように供給電圧を増加させるように電力管理に要求することができる。新電圧レベルに完全に遷移した（すなわち、新供給電圧が安定した）後に、クロック周波数要求によって示される新しい周波数分配が、プロセッサの様々なサブシステムに適用される。例えば、ＤＰＣは、クロック周波数要求に応じたクロック信号をプロセッサに分配するようにクロック制御に指令することができる。
【００４０】
電圧変化の符号が負である（すなわち、電圧要求が電圧レベルよりも低い）場合には、ステップ２５０ｂおよび２６０ｂで示す、低電力状態へ遷移するための一連の事象が続く。すなわち、クロック周波数要求によって示される周波数分配は、最初に、プロセッサのサブシステムおよび構成要素に供給される。プロセッサが、新クロック周波数要求に応じて動作しているときに、プロセッサに供給される電圧は、ステップ２３０で特定される電圧要求によって示される電圧レベルに低減される。
【００４１】
電圧遷移および周波数遷移は、プロセッサの誤動作を回避するために、上記のような順序に並べることができる。例えば、メモリにアクセスするための、クロック周波数要求を考えてみる。一定電圧に対して周波数が増大すると、メモリアクセスに障害が発生する点がある場合がある。したがって、電力状態遷移中の、そのような潜在的な問題を回避するために、高電力状態に移行するときには、クロック周波数を増加させる前に、電圧を増大させることができる。低電力状態に移行するときには、プロセッサに供給される電圧を低減する前に、周波数を最初に低下させることができる。
【００４２】
図５と関連して記述した方法は、多くの方法で、また様々な設計および実装によって実現することができる。図６は、本発明によるＤＰＣの一実施例を示す。この略図は、動的電力制御に対する１つのハードウエア解決策を示す。ＤＰＣ１００’には、レジスタのバンク６１０、コンパレータ６２０、ランダムアクセスメモリ（ＲＡＭ）６３０、電源シーケンス制御有限状態機械（ＦＳＭ）６４０、およびリセットレジスタ６５０が含まれる。ＤＳＰ１００’は、プロセッサ２０”のサブシステムを制御している状態で示してあり、このプロセッサには、わかりやすくするために、先述のサブシステム、構成要素、クロッキング方式を含めてある。電力は、電力管理４０によってプロセッサに供給される。
レジスタ６１０は、プロセッサ２０”のクロック周波数要求を示す情報を記憶する。例えば、レジスタ６１０は、各クロックドメインに対して必要な周波数値を記憶してもよい。さらに、あるクロックドメイン内で動作する各サブシステムと関連するレジスタを設けて、クロックドメインのそれぞれから、各サブシステムによって要求されるクロック周波数を示してもよい。レジスタの特定の数、配設および関連は、設計選択の問題であり、プロセッサ周波数要求を適切に示す変更はすべて、本発明の範囲内であると考えられる。
【００４３】
コンパレータ６２０は、レジスタバンクに示されるクロック周波数の分配を支援するために必要な電圧を特定するために、レジスタ６１０内のレジスタに記憶された周波数値を比較する。電圧要求を特定する一方法は、レジスタバンクから最大の周波数を選択する（すなわち、コンパレータは、プロセッサのクロック周波数要求から最大最小値を選択する）ことによって、電圧要求を特定する方法である。例えば、この周波数値は、システムＰＬＬ逓倍器によって提供されるクロック信号が要求する周波数を指示してもよい。次いで、システムＰＬＬ逓倍器の信号生成器（例えば、電圧制御発振器）が指示された周波数を生成するのに必要とする電圧レベルを、少なくとも部分的に、電圧要求の基本とすることができる。
【００４４】
例えば、ＲＡＭ６３０には、プロセッサの様々なクロック周波数要求を支援するのに必要な電圧値を含む、ルックアップテーブルを記憶してもよい。そうすれば、コンパレータ６２０は、ＲＡＭ６３０内の場所に、選択された周波数値をマッピングするか、またはレジスタ６１０に示される周波数要求をマッピングすることができる。ＲＡＭ６３０から取得される電圧レベルは、プロセッサ周波数要求に関連する電圧要求に一致する。
ここで理解すべきことは、当業者であれば、ある特定のクロック周波数要求で動作しているプロセッサを支援する、電圧レベルを特定するために、クロック周波数要求を符号化する様々な方法を思いつくことである。プロセッサの設計、クロッキング方式、およびその他のプロセッサ要件および検討によって、クロック周波数要求から電圧要求への具体的なマッピング方式を導くことができる。しかしながら、これらの変更形態は、本発明の範囲から逸脱するものではない。
【００４５】
ＲＡＭ６３０から得られる電圧値は、次いで、電源シーケンス制御有限状態機械（ＦＳＭ）に供給される。次いで、この電源シーケンス制御ＦＳＭは、クロック周波数および電圧要求によって示される電力状態に、プロセッサを遷移させる。例えば、電源シーケンス制御ＦＳＭは、プロセッサの電圧要求（例えば、ＲＡＭ６３０から得られる電圧レベル）に合致させるのに必要な電圧変更の符号を判定するために、レジスタ１８０内に記憶された電圧値を読み取ることによって、プロセッサに供給されている現行電圧レベルを検査することができる。
【００４６】
電圧変化の符号が正の場合には、電源シーケンス制御ＦＳＭは、最初に電力管理４０に指令して、所望の電圧レベルを供給させる（すなわち、ＤＰＣ１００’が、レジスタ１８０に所望電圧レベルを書き込ませる）ことができる。電力管理４０が、電圧レベルが遷移して、安定であることを示した（すなわち、電力管理４０がライン１８４を介して電圧が安定であることを示した）後に、次いで、電源シーケンスＦＳＭは、プロセッサのクロック周波数要求に合致させるために、様々なクロックドメインの周波数を増大させるように、クロック制御１１０に指令することができる。
例えば、電源シーケンスＦＳＭは、クロック制御１１０に指令して、システムＰＬＬ逓倍器からのクロック信号出力の周波数を増大させることができる。代替手法としては、システムＰＬＬ逓倍器に対してどのクロック周波数を出力すべきかを示すレジスタに、電源シーケンス制御ＦＳＭをアクセスさせることができる。
【００４７】
電圧変化の符号が負の場合には、電源シーケンス制御ＦＳＭは、最初にクロック制御１１０に指令して、様々なクロックドメインのクロック周波数を低減して、プロセッサの周波数要求を反映させることができる。一旦、周波数が低減されると、電源シーケンス制御ＦＳＭは、電力管理に指令して、ＲＡＭから得られる電圧レベルに応じてプロセッサに供給される電圧を修正させることができる。このようにして、電力シーケンスＦＳＭは、プロセッサの潜在的な誤動作を回避する順序に電力状態遷移が並べられることを保証する。
リセットレジスタ６５０は、スタートアップ／リセット中に、電力シーケンスＦＳＭ６４０に、適正な電圧を供給する。ＲＡＭ６３０内に記憶される情報は、スタートアップ／リセットの間は信頼できない場合があるので、リセットレジスタ６５０は、リセット／スタートアップ、様々なブーツ事象、その他に関係するタスクを支援するために十分な電圧が、プロセッサに供給されることを保証する。このようにして、リセットレジスタ６５０に記憶される値（単数または複数）は、スタートアップ／リセット中にのみ選択できるようになる。
【００４８】
レジスタバンク内の値の１つが変化するために、新しいクロック周波数要求を収容するために、電圧レベルを変更できるか、または変更すべきかを判定するために、コンパレータは、プロセッサのクロック周波数要求を再評価してもよい（例えば、コンパレータ６２０が、プロセッサが新しい電力状態に遷移できるかどうかを判定する）。レジスタ６１０のバンクには、例えば、プロセッサ（例えば、ＤＳＰまたはＭＣＵ）上で実行されるソフトウエアによって書き込んでもよい。例として、プロセッサ２０”を参照して、ＤＳＰが、３００ＭＨｚ周波数クロックを必要とする高優先順位タスクを処理している動作モードを考える。ＭＣＵは、６０ＭＨｚ周波数クロックを必要とするタスクを同時に処理している。
【００４９】
このような場合に、ＤＳＰおよび／またはＭＣＵ上で実行中のソフトウエアによって、様々なクロックドメインが必要とする周波数を、レジスタバンク６１０内の関連するレジスタ中に書き込んでもよい（例えば、クロックドメイン４１０に関連するレジスタが、周波数値３００ＭＨｚを記憶し、クロックドメイン３２０に関連するレジスタが、周波数値６０ＭＨｚを記憶してもよい）。
コンパレータ６２０は、最大最小選択法を実現することができる。したがって、コンパレータは、３００ＭＨｚ周波数値を、プロセッサの電圧要求を特定するための基本として選択することになる。ＲＡＭ６３０に入れる指標を、最大最小値から取り出し、例えば３００ＭＨｚの値を１．５ボルトの電圧値を記憶するメモリの場所にマッピングすることができる。このようにして、電力管理は、プロセッサの現行クロック周波数要求を支援するために、プロセッサに１．５ボルトを供給するようにすることができる。
【００５０】
ある時点において、プロセッサは、高優先順位のタスクを完了して、プロセッサの計算需要が低下することがある。例えば、現行計算の処理要求を満たすのに、ＤＳＰが、わずかに１８０ＭＨｚを必要とするだけになる場合がある。例えば、ＤＳＰ上で実行中のソフトウエアによって、このように低下したＤＳＰのクロック周波数要求を特定して、適当なレジスタに新しい周波数値を書き込むことができる。次いで、ＤＣＰ１００”が、レジスタバンクに記憶された値の１つにおける変化を検出する。このようにして、コンパレータ６２０が、プロセッサのクロック周波数要求を再評価して、新規の最大最小周波数値が１８０ＭＨｚであることを特定することができる。この新しい値が、例えば、ＲＡＭ６３０の１．２ボルトの値にマッピングされる。
【００５１】
電源シーケンス制御ＦＳＭは、この新電圧値を受け取り、プロセッサの新クロック周波数要求を支援するのに必要な電圧要求を反映するには、負の電圧遷移が必要であると判定する。このようにして、電源シーケンス制御ＦＳＭは、逓倍器に、１８０ＭＨｚクロック信号を供給するために、システムＰＬＬ逓倍器の逓倍器選択値を低減するように指令することができる。ＰＬＬによって低減された周波数が供給された後に、電源シーケンス制御ＦＳＭは、１．２ボルトの値をレジスタ１８０中に書き込むことができる。次いで、電力管理４０が、この値を読み取り、新規な低減された電圧レベルをプロセッサに供給する。このようにして、プロセッサは、プロセッサのクロック周波数要求を反映して低減された電力状態で、動作することになる。
【００５２】
コンパレータは、最大最小値に基づいて、ルックアップテーブル中の指標を特定する必要はない。例えば、コンパレータは、様々な方法で、レジスタバンク内に記憶された様々なクロック周波数を考慮することができる。例えば、クロックドメイン３１０の１８０ＭＨｚクロック周波数は、低電圧、例えば０．０９ボルトで支援することができる。しかしながら、他のクロックドメインからの要求による理由から（例えば、クロックドメイン３２０に対して７５ＭＨｚ、および２６ＭＨｚシステムクロック分配）、０．９ボルトは、プロセッサのクロック周波数要求を満たすのに十分ではない場合もある。コンパレータを、クロック周波数要求が、０．９ボルトで支援できないことを認識するように構成し、そのような場合には、最大最小値自体は低電圧によって支援できるとしても、上記のクロック周波数要求を１．２ボルトの電圧要求にマッピングするようにしてもよい。
【００５３】
将来の時点において、ＭＣＵはそのタスクを終了して、現行処理状態の計算要求に合致するために４５ＭＨｚクロックを必要とするだけとなることがある。例えば、ＭＣＵ上で実行中のソフトウエアによって、新規の処理状態を特定して、新規の周波数値を適当なレジスタに書き込むことができる。
レジスタ値の変化に応答して、コンパレータは、最大最小値が同一（例えば、１８０ＭＨｚ）のままではあるが、プロセッサのクロック周波数要求が修正されたことを判定することができる。例えば、新規のクロック周波数要求は、０．９ボルトの電圧レベルにマッピングすることができる。次いで、電源シーケンス制御ＦＳＭは、上記の順序に従って、低電力状態に遷移することができる。しかしながら、ＭＣＵが必要とする周波数（例えば、４５ＭＨｚ）の変化は、適当なクロックドメインの分割器係数を調整することによって生成することができる。その場合には、ＰＬＬの逓倍器選択値は、ある電力状態遷移においては、低減することはできない。
【００５４】
将来のある時点において、ＤＳＰは、別の高優先順位タスクを処理する必要があるかもしれない。そのような場合には、ソフトウエアによって、ＤＳＰの新しいクロック周波数要求、例えば２４０ＭＨｚを特定し、この値を適当なレジスタに書き込むことができる。次いで、コンパレータが、プロセッサのクロック周波数要求を再評価し、プロセッサの現行クロック周波数を支援するために、新規の電圧要求が必要であると判定する。次いで、コンパレータが、メモリ中に索引をつけて、対応する電圧値、例えば１．５ボルトが、電源シーケンス制御ＦＳＭに送出される。電源シーケンス制御ＦＳＭは、新規の電圧要求を満足させるためには、電圧レベルの正の変化が必要なことを判定する。
【００５５】
したがって、ＦＳＭは、プロセッサに供給される電圧を遷移させるために、最初に、レジスタ１８０に新規の電圧値を書き込むことができる。電力管理４０がその値を読み取り、電圧が遷移して、安定化したことを示した後に、ＦＳＭは、高クロック周波数要求を提供するために、シーケンスクロック制御を開始する（例えば、電源シーケンス制御ＦＳＭは、システムＰＬＬ逓倍器によって生成されるクロック信号の周波数を増大させるように、逓倍器選択値を修正するか、またはクロック制御に指令してそれを修正させることができる）。
その他の因子および／または処理条件も、特定のクロック周波数要求を支援するために必要な電圧レベルに影響を与えることがある。例えば、全体に動作不能にすることのできるクロックツリーの数は、電圧要求に影響を与える可能性がある。そのような場合には、ＤＰＣ１００”は、周波数値以上のものを考慮することができる。例えば、ＤＰＣは、クロックドメイン内で、どのクロックドメインまたはどのクロックツリーが、所与の動作モード中に動作不能にできるかを考慮することができる。
【００５６】
図７は、本発明による別の実施例を示す。レジスタ６１０’は、プロセッサの周波数要求を示す情報を記憶する。レジスタ６１０’には、例えば、プロセッサの主サブシステムの各々に対するレジスタを含めてもよい。各レジスタは、関連するサブシステムが、特定のクロック信号を必要とするか、または特定のクロックドメインのクロック信号を必要とするかについての、２値表示を記憶することができる。したがって、レジスタ６１０’の幅Ｗは、プロセッサに供給、かつ分配されるクロック信号の数に関係する。
【００５７】
例えば、レジスタ６１０’は、ＤＳＰサブシステムの周波数要求に対応すると仮定する。サブシステムの計算需要に応じて、ＤＳＰは、現行処理需要に合致するためには、どのクロック信号を必要とするかを示すことができる。例えば、ＤＳＰは、アイドル状態への遷移の前に、レジスタ６１０’の各ビットにゼロを書き込むことによって、そのようなクロック周波数要求を示すことができる。代替手法として、例えば、ＤＳＰがアイドル状態においても、なおシステムクロック信号を必要とする場合には、ＤＳＰは、システムクロックに対応するビットにおいて１を示すことができる。プロセッサの他方のサブシステムは、同様に、特定の動作モードの関数および／または計算タスクを実行するために、どのクロック信号が必要であるかを示すことになる。
【００５８】
そのような場合に、コンパレータ６２０’は、レジスタ６１０’内に記憶される周波数要求によって示されるクロック信号構成を支援する電圧レベルを記憶するメモリ内の場所に、２値クロック指示をマッピングすることができる。一実施例においては、各クロックドメインは、サブシステムが、それが必要であることを示すときに、そのクロックドメインが動作する関連する周波数を有してもよい。例えば、最大クロック速度は、ＤＳＰサブシステムが、例えば、図３に示すクロックドメイン３１０において、クロック信号を必要とすることを示すときに、最大クロック速度を考慮することができる。
【００５９】
この実施態様の一態様においては、コンパレータ６２０’は、レジスタ６１０’によって示されるクロック信号構成を考慮し、必要なクロック周波数を特定する、ソフトウエアを含む。例えば、ＭＣＵサブシステムおよびＤＳＰサブシステムの両方が、ドメイン３１０におけるクロック信号を必要する場合に、ソフトウエアは、周波数要求はＤＳＰによって誘導されることを認識することができる。ＭＣＵが、クロックドメイン３１０内のクロック信号が必要なことを示すが、ＤＳＰは、それが必要でないことを示す場合には、ソフトウエアは、ＭＣＵがその要求を誘導することから、クロック信号の周波数を低減することができることを判定することができる。次いで、ソフトウエアによって判定される周波数要求を、クロック周波数要求を支援することのできる電圧レベルを記憶するメモリ内の場所にマッピングすることができる。
【００６０】
代替手法として、レジスタ６１０’に、各サブシステムに対して一対のレジスタを含めてもよい。第１のレジスタには、プロセッサ内の各クロック信号に対して、サブシステムが能動状態にあるときにクロック信号を必要とするかどうかを示す、ビットを含めてもよい。第２のレジスタには、プロセッサ内のクロック信号に対して、サブシステムがアイドル状態にあるときにクロック信号を必要とするかどうかを示す、ビットを含めてもよい。実施例によっては、ＲＡＭ６３０は、プログラマブルロジックアレイで置き換えることができる。例えば、コンパレータは、プロセッサのクロック周波数要求に関して提供される情報を、符号化入力に（例えば、レジスタバンク、メモリなどに記憶された状態で）マッピングすることができる。プログラマブルロジックアレイを、クロック周波数要求を支援するのに必要な電圧レベルを示す、符号化入力からの出力を供給するようにプログラムすることができる。クロック周波数要求からＰＬＡへの入力への符号化は、前述のように、プロセッサの様々な設計上の考察に依存する。
【００６１】
電力制御における高い細分性のレベルを達成する一方法は、特定のタスク、プロセス、および／またはタスクのプロファイルにおける関係するタスクの組のクロック周波数要求を含めることに関係する。例えば、特定のタスクまたはジョブを処理しょうとするとき、プロセススケジューラは、例えば、タスクプロファイルから周波数要求を抽出し、ＤＰＣのレジスタを更新してもよい。この更新によって、プロセッサの電力遷移を引き起こすことができる。そのようにして、プロセッサは、タスクまたはプロセスレベルでの、プロセッサの需要を反映する電力状態で動作することができる。
【００６２】
当業者であれば、プロセッサに電力制御を提供して、プロセッサが過剰な電力を用いて動作する時間を低減することにおける、その他の修正形態、変更形態および改善形態を思いつくであろうが、これらは本発明の範囲に含まれると考えられる。
本発明のいくつかの実施態様を詳細に記述したが、当業者であれば、様々な修正形態および改善形態を思いつくであろう。このような修正形態および改善形態は、本発明の範囲に含まれることを意図するものである。したがって、以上の記述は、例示のためだけのものであり、限定することを意図するものではない。本発明は、添付の特許請求の範囲およびその等価物による定義によってのみ限定されるものである。
【図面の簡単な説明】
【００６３】
【図１】例示的なプロセッサの、様々なサブシステムを示すブロック図である。
【図２】図１に示したプロセッサの様々な構成要素に、クロック信号を生成して分配するクロッキング方式と制御を示す図である。
【図３】異なる動作モードにおける、プロセッサの例示的なクロック信号の、時間の関数としての変化を示す図である。
【図４】本発明の一実施態様による、動的電力制御機能を有するプロセッサを示す図である。
【図５】本発明の一実施態様による、プロセッサに動的電力制御を提供する方法を示す。
【図６】本発明による、動的電力コントローラの一実施態様を示す図である。
【図７】本発明による、動的電力コントローラの別の実施態様を示す図である。
【図１】
2005502114.tif 000003
【図２】
2005502114.tif 000004
【図３】
2005502114.tif 000005
【図４】
2005502114.tif 000006
【図５】
2005502114.tif 000007
【図６】
2005502114.tif 000008
【図７】
2005502114.tif 000009
【国際公開パンフレット】
2005502114.tif 000010
2005502114.tif 000011
2005502114.tif 000012
2005502114.tif 000013
2005502114.tif 000014
2005502114.tif 000015
2005502114.tif 000016
2005502114.tif 000017
2005502114.tif 000018
2005502114.tif 000019
2005502114.tif 000020
2005502114.tif 000021
2005502114.tif 000022
2005502114.tif 000023
2005502114.tif 000024
2005502114.tif 000025
2005502114.tif 000026
2005502114.tif 000027
2005502114.tif 000028
2005502114.tif 000029
2005502114.tif 000030
2005502114.tif 000031
2005502114.tif 000032
2005502114.tif 000033
2005502114.tif 000034
2005502114.tif 000035
2005502114.tif 000036
2005502114.tif 000037
2005502114.tif 000038
2005502114.tif 000039
2005502114.tif 000040
2005502114.tif 000041
2005502114.tif 000042
2005502114.tif 000043
2005502114.tif 000044
2005502114.tif 000045
2005502114.tif 000046
【国際公開パンフレット（コレクトバージョン）】
2005502114.tif 000047
2005502114.tif 000048
【手続補正書】
【提出日】平成15年9月23日(2003.9.23)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
（補正後）  複数の周波数で動作可能な少なくとも１つのクロック信号を有する、少なくとも１つのプロセッサを含むシステムにおいて、
前記少なくとも１つのプロセッサのクロック周波数要求を特定するステップと、
前記クロック周波数要求を支援するための電圧要求を特定するステップと、
前記クロック周波数要求に応じて、前記少なくとも１つのクロック信号を動作させるステップと、
前記電圧要求に応じて、前記少なくとも１つのプロセッサに供給する電圧を提供するステップとを含む、動的電力制御方法であって、
前記少なくとも１つのプロセッサが、複数のクロックドメインを有し、各クロックドメインは前記プロセッサの複数の構成要素にクロック信号を提供し、各クロック信号は少なくとも１つの関連する周波数を有し、かつ
前記クロック周波数要求を特定するステップが、前記複数のクロックドメインのそれぞれを動作可能にする必要があるかどうかを判定するステップを含む、前記方法。
【請求項２】
電圧要求を特定するステップが、クロック周波数要求の最大の最小クロック周波数を特定するステップを含む、請求項１に記載の方法。
【請求項３】
少なくとも１つのプロセッサに供給される現行電圧と、電圧要求に応じた電圧との間の電圧差の符号を特定するステップをさらに含む、請求項１に記載の方法。
【請求項４】
電圧差の符号が正の場合に、電圧要求に応じて少なくとも１つのプロセッサに供給する電圧を提供するステップを、クロック周波数要求に応じて少なくとも１つのクロック信号を動作させるステップの前に遂行する、請求項３に記載の方法。
【請求項５】
電圧差の符号が負の場合に、クロック周波数要求に応じて少なくとも１つのクロック信号を動作させるステップを、電圧要求に応じて少なくとも１つのプロセッサに供給する電圧を提供するステップの前に遂行する、請求項３に記載の方法。
【請求項６】
少なくとも１つのプロセッサが、複数のクロックドメインを有し、各クロックドメインが、前記少なくとも１つのプロセッサの、複数の構成要素に、複数の周波数でクロック信号を提供し、かつ
クロック周波数要求を特定するステップが、前記複数のクロックドメインのそれぞれにおいて必要とされる最小クロック周波数を特定することを含む、請求項１に記載の方法。
【請求項７】
複数のクロックドメインのそれぞれにおいて必要とされる、最小クロック周波数を比較するステップをさらに含む、請求項６に記載の方法。
【請求項８】
比較をするステップが、複数のクロックドメインのそれぞれにおいて必要とされる最小クロック周波数を比較して、前記複数のクロックドメインが必要とする最大の最小クロック周波数を特定することを含む、請求項７に記載の方法。
【請求項９】
電圧要求を特定するステップが、最大最小クロック周波数から前記電圧要求を特定することを含む、請求項８に記載の方法。
【請求項１０】
（削除）
【請求項１１】
（補正後）  電圧要求を特定するステップが、動作可能にする必要のあるクロックドメインの、少なくとも１つの関連する周波数に基づいて、前記電圧要求を特定するステップを含む、請求項１に記載の方法。
【請求項１２】
（補正後）  複数の周波数で作動する少なくとも１つのクロック信号を含むプロセッサであって、
前記少なくとも１つのクロック信号を受け取る１つまたは複数の構成要素と、
前記プロセッサのクロック周波数要求を同定する少なくとも１つの構成要素に結合されたコントローラであって、前記プロセッサのクロック周波数要求に基づいて電圧要求を特定するとともに、前記クロック周波数要求および前記電圧要求によって定義される電力状態への遷移を順序づける、前記コントローラとを含み、
前記コントローラは、複数のレジスタによって少なくとも１つの構成要素に結合されており、前記複数のレジスタは、前記プロセッサのクロック周波数要求を示す情報を記憶する、前記プロセッサ。
【請求項１３】
（削除）
【請求項１４】
（補正後）  コントローラが、複数のレジスタに結合されたコンパレータを含み、該コンパーレータが、前記複数のレジスタ内に格納された情報に基づいて電圧要求を特定するように構成されている、請求項１２に記載のプロセッサ。
【請求項１５】
プロセッサが、１つまたは複数のクロック動作構成要素に提供されて、複数の周波数で動作する複数のクロック信号を含む、請求項１４に記載のプロセッサ。
【請求項１６】
複数のレジスタが、複数のクロック信号の、それぞれのクロック周波数要求に対応する値を記憶する、請求項１５に記載のプロセッサ。
【請求項１７】
コンパレータが、複数のレジスタ内に記憶された最大値を特定し、その結果としてクロック周波数要求を特定する、請求項１６に記載のプロセッサ。
【請求項１８】
コントローラが、複数の電圧値を記憶するメモリをさらに含む、請求項１４に記載のプロセッサ。
【請求項１９】
コンパレータが、複数のレジスタ内に記憶された情報を、プロセッサのクロック周波数要求を支援するのに十分な電圧値を記憶する、メモリ内の場所にマッピングする、請求項１８に記載のプロセッサ。
【請求項２０】
コントローラが、クロック周波数要求および電圧要求によって定義される電力状態への遷移を順序づける有限状態機械を含む、請求項１９に記載のプロセッサ。
【請求項２１】
有限状態機械が、メモリから得られた電圧値を受け取り、プロセッサに供給されている現行電圧レベルと前記得られた電圧値との差の符号を特定する、請求項２０に記載のプロセッサ。
【請求項２２】
差の符号が正のときには、有限状態機械は、得られた電圧値で動作するようにプロセッサを遷移させ、次いでクロック周波数要求で動作するようにプロセッサを遷移させる、請求項２１に記載のプロセッサ。
【請求項２３】
差の符号が負のときには、有限状態機械は、クロック周波数要求で動作するようにプロセッサを遷移させ、次いで得られた電圧値で動作するようにプロセッサを遷移させる、請求項２１に記載のプロセッサ。
【請求項２４】
（補正後）  少なくとも１つのクロック信号が複数のクロック信号を含み、１つまたは複数のクロック動作構成要素が複数のクロック動作構成要素を含む、請求項１２に記載のプロセッサ。
【請求項２５】
複数のレジスタが、複数のクロック動作構成要素のそれぞれが必要とする、複数のクロック信号のそれぞれに対する周波数値を記憶する、請求項２４に記載のプロセッサ。
【請求項２６】
複数のレジスタが、複数のクロック動作構成要素のそれぞれが複数のクロック信号のそれぞれを必要とするかどうかを示す、２進値を記憶する、請求項２４に記載のプロセッサ。
【請求項２７】
複数のクロック信号を有するプロセッサへの電力を動的に制御するコントローラであって、
前記プロセッサのクロック周波数要求を示す情報を記憶する複数のレジスタと、
該複数のレジスタに結合されたコンパレータであって、前記複数のレジスタに記憶された前記情報に基づいて電圧要求を特定するように構成された、前記コンパレータと、
前記コンパレータに結合されて、前記プロセッサを、前記クロック周波数要求および前記電圧要求によって定義される電力状態に遷移させるように構成されたシーケンサとを含む、前記コントローラ。
【請求項２８】
複数のレジスタが、プロセッサの複数の構成要素が必要とする複数の周波数値を記憶する、請求項２７に記載のコントローラ。
【請求項２９】
複数のレジスタのそれぞれが、プロセッサに供給される複数のクロック信号のそれぞれに対するビットを含み、該ビットが、それに対応するクロック信号を動作可能にする必要があるかどうかを示す、請求項２７に記載のコントローラ。
【請求項３０】
コンパレータが、複数の電圧値を記憶するメモリを含み、前記コンパレータは複数のレジスタに記憶された複数の周波数値を、前記複数の周波数値によって示されるクロック周波数要求を支援するのに十分な電圧値を記憶するメモリの場所にマッピングする、請求項２８に記載のコントローラ。
【請求項３１】
コンパレータがプログラマブル論理配列を含み、前記コンパレータは複数のレジスタに記憶された複数の周波数値をプログラマブル論理配列への入力にマッピングするように適合されており、前記プログラマブル論理配列は、クロック周波数要求を支援するのに必要な電圧値を示す、シーケンサへの出力を提供するようにプログラムされている、請求項２８に記載のコントローラ。
【請求項３２】
シーケンサが有限状態機械である、請求項２７に記載のコントローラ。
【請求項３３】
複数の構成要素をさらに含むプロセッサと組み合わせた、請求項２７に記載のコントローラ。
【請求項３４】
複数の構成要素のそれぞれが、複数のレジスタのそれぞれ１つを介して、前記構成要素のクロック周波数要求を示す、請求項３３に記載の組合せ。
【請求項３５】
複数のレジスタが、複数のクロック信号のそれぞれに対応するビットを含む、請求項２７に記載の組合せ。
【請求項３６】
複数の構成要素のそれぞれが、複数のレジスタの少なくとも１つと関連し、かつ前記複数の構成要素のそれぞれは、複数のクロック信号のそれぞれに対応するビットを介して、それぞれのクロック信号が必要かどうかを示す、請求項３５に記載の組合せ。
【請求項３７】
複数のクロック信号で動作する複数の構成要素を有する少なくとも１つのプロセッサと、
該少なくとも１つのプロセッサに、変更可能なレベルの電圧を供給するように適合された電源と、
前記複数のクロック信号の周波数を制御するように適合されたクロックコントローラと、
前記電源および前記クロックコントローラに接続されて、前記少なくとも１つのプロセッサを監視して前記少なくとも１つのプロセッサのクロック周波数要求を特定するとともに前記クロック周波数要求に基づいて電圧要求を特定し、かつ前記電源および前記クロックコントローラを、前記クロック周波数要求および前記電圧要求によって定義される電力状態に遷移させる、動的電力コントローラとを含む、デバイス。
【請求項３８】
複数のクロック信号が、システムクロック信号を含む、請求項３７に記載の低電力デバイス。
【請求項３９】
クロックコントローラが、位相同期ループ（ＰＬＬ）周波数逓倍器を含み、システムクロック信号と同期した高周波クロック信号を提供する、請求項３８に記載の低電力デバイス。
【請求項４０】
複数のクロック信号が、システムクロック信号および高周波クロック信号から導かれる、請求項３９に記載の低電力デバイス。
【国際調査報告】
2005502114.tif 000049
2005502114.tif 000050
2005502114.tif 000051