(57)【特許請求の範囲】
【請求項１】
プロセッサ（１００）を有するシステム内の電力を管理する装置であって、
前記プロセッサに電源電圧を与える電圧変換器（１０３）であって、前記プロセッサは種々の電力モード間を移行することができ、前記電圧変換器は、前記電力モードのうちの少なくとも２つに対して前記電源電圧の異なる電圧レベルを指定する指示を受信する、電圧変換器と、
前記プロセッサによって前記電源電圧から引き出される電流が所定のしきい値未満であるか否かを判断する回路と、
コントローラ（１０４）であって、
前記指示に基づいて、前記プロセッサが前記電力モードのうちの低い方の電力モードに移行することを検出すると共に、
前記プロセッサが前記電力モードのうちの前記低い方の電力モードに移行することの検出、及び前記電源電圧から前記プロセッサによって引き出される電流が前記所定のしきい値よりも低いという第２の指示を前記回路から受信することの双方に応答して、前記電圧変換器の少なくとも一部をディセーブルにする、コントローラと、
を備えている、装置。
【請求項２】
前記電力モードが、スリープ状態と、少なくとも１つのパフォーマンス状態とを含み、前記電力モードのうちの前記低い方の電力モードは前記スリープ状態を含み、前記電圧変換器の前記少なくとも一部は、前記プロセッサの前記スリープ状態への移行の検出に応答してディセーブルにされる、請求項１に記載の装置。
【請求項３】
前記電圧変換器は、前記指示に応答して、前記プロセッサへの前記電源電圧を、前記スリープ状態の場合に第１の電圧レベルに設定し、前記少なくとも１つのパフォーマンス状態の場合に第２の電圧レベルに設定するように制御可能であり、前記第２の電圧レベルは前記第１の電圧レベルよりも高い、請求項２に記載の装置。
【請求項４】
前記指示が前記プロセッサからの電圧制御信号を含む、請求項３に記載の装置。
【請求項５】
前記電圧制御信号を異なる値に設定して前記電圧変換器が前記プロセッサへの前記電源電圧を前記第１の電圧レベル及び前記第２の電圧レベルに設定するように、前記プロセッサ上で実行可能なファームウエアをさらに備えている、請求項４に記載の装置。
【請求項６】
前記電圧変換器は多相変換器であり、前記電圧変換器の前記ディセーブルにされる少なくとも１つの部分は、前記電圧変換器のディセーブルにされる少なくとも１つの相を含む、請求項１に記載の装置。
【請求項７】
前記電圧変換器の前記ディセーブルにされる少なくとも１つの相は、前記電圧変換器内のディセーブルにされる少なくとも１つのＤＣ−ＤＣ変換器を含む、請求項６に記載の装置。
【請求項８】
少なくとも１つのパフォーマンス状態及びスリープ状態を有するプロセッサ（１００）の電力管理の方法であって、
前記プロセッサへの電源電圧の電圧レベルが第１のレベルに下げられつつあるという指示を検出することによって、前記プロセッサが前記スリープ状態に入ったことを検出するステップであって、前記プロセッサの前記パフォーマンス状態は、前記第１のレベルとは異なる第２のレベルにある、前記プロセッサへの前記電源電圧に関連付けられる、検出するステップと、
前記プロセッサによって引き出される電流の指示を受信するステップと、
前記プロセッサが前記スリープ状態に入ったこと、及び前記プロセッサによって引き出される電流が所定のしきい値未満であることの検出に応答して、前記プロセッサに前記電源電圧を供給する多相変換器の少なくとも１つの相をディセーブルにするステップと、
を含む、方法。
【請求項９】
前記少なくとも１つのパフォーマンス状態及び前記スリープ状態のために前記電源電圧の異なる電圧レベルを規定するように前記プロセッサをプログラムするステップをさらに含む、請求項８に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピュータ、又は任意の他のタイプの電子デバイスのようなシステムは通常、電力を消費する種々の構成要素を有する。相対的に大量の電力を消費するシステム構成要素のうちの１つが、マイクロプロセッサ、マイクロコントローラ、又はシステムの主要なタスクを実行するために用いられる任意の他の制御デバイス等のプロセッサである。
【０００２】
システム内のプロセッサが動作していないとき、そのプロセッサを、より低い電力モードに入れて、より低い消費電力を実現することが望ましい。たとえば、プロセッサを、複数のパフォーマンス状態（プロセッサがコードを実行しているが、異なるレベルの消費電力に関連付けられる状態）及びスリープ又は停止状態（プロセッサがもはやコードを実行していない状態）を含む、種々の電力モードに関連付けることができる。その活動レベルに応じてプロセッサを種々の電力モードに移行することによって省電力を実現することができるが、通例、従来のシステムにおいて利用されていない他の省電力の機会が存在する。
【０００３】
種々の管轄の政府規制当局が、システムがアイドル状態にある（言い換えると、システムがタスクをアクティブに実行していない）ときの消費電力レベルに関して要件を設定している。従来の省電力技法によれば、省電力要件が益々厳重になってきている管轄において特に、多くのシステムが、いくつかの政府規制当局によって設定される省電力要件を満たすことができない場合がある。
【０００４】
本発明のいくつかの実施形態を、添付の図面に関して説明する。
【図面の簡単な説明】
【０００５】
【図１】本発明の一実施形態を組み込む例示的なシステムのブロック図である。
【図２】一実施形態による電力管理過程の流れ図である。
【発明を実施するための形態】
【０００６】
図１は１つの例示的なシステムを示しており、そのシステムは、プロセッサ１００と、電源１０２と、電源１０２の出力電圧ＶＰＳを、プロセッサ１００の電源電圧入力に与えられる電源電圧（「ＶＣＣ＿ＣＰＵ」と呼ばれる）に変換する電源電圧変換器１０３とを備える。電源電圧ＶＣＣ＿ＣＰＵは、プロセッサ１００がシステム内でタスクを実行できるようにするために用いられる動作電圧（又は動作電圧のうちの１つ）である。
【０００７】
いくつかの実施形態において、プロセッサ１００は、複数のパフォーマンス状態、及びスリープ状態（停止状態とも呼ばれる）を含む、複数の電力モードに関連付けられる。プロセッサの「電力モード」は、そのプロセッサの消費電力レベルを指している。すなわち、異なる電力モードは異なる消費電力レベルに対応する。プロセッサ１００のパフォーマンス状態は、プロセッサ１００がコード（ソフトウエア命令）を実行することができるアクティブ状態を指している。プロセッサ１００の複数のパフォーマンス状態は、異なる消費電力量に関連付けられる。「高い」パフォーマンス状態ほど、「低い」パフォーマンス状態よりも高い消費電力に関連付けられるアクティブ状態を指している。パフォーマンス状態は、「最低」パフォーマンス状態（コードをアクティブに実行しているプロセッサの最低の消費電力量に関連付けられる）と、それよりも高い１つ又は複数のパフォーマンス状態（それよりも高い消費電力レベルに関連付けられる）とを含む。最低パフォーマンス状態は、スリープ状態よりも（消費電力に関して）直ぐ上のパフォーマンス状態である。
【０００８】
いくつかの実施態様では、プロセッサ１００のパフォーマンス状態は、電力制御インターフェース規格（ＡＣＰＩ：Advanced Configuration and Power Interface Specification）によって規定されるようなパフォーマンス状態とすることができる。他の実施態様では、用語「パフォーマンス状態」は、プロセッサがコードをアクティブに実行している、プロセッサ１００の任意の状態を指すことができる。
【０００９】
パフォーマンス状態に加えて、プロセッサ１００の電力モードは、プロセッサがコードを実行していないスリープ状態（停止状態と呼ばれる場合もある）も含む。スリープ状態は、パフォーマンス状態のうちの最低パフォーマンス状態よりも低い消費電力量に関連付けられる。
【００１０】
プロセッサがスリープ状態に入ったこと、かつプロセッサによって引き出される電流が所定のしきい値未満であることをシステムが検出すると、そのシステムは、変換器１０３の一部をディセーブルにして、単にプロセッサ１００をスリープ状態に入れることによって成し遂げることができる省電力よりも大きな省電力を達成することができる。いくつかの実施形態によれば、プロセッサが異なる電力モード間を移行している（たとえば、スリープ状態に入るか、又はスリープ状態から出る）ことをシステムが正しく検出できるようにするため、プロセッサ１００に供給される電源電圧（ＶＣＣ＿ＣＰＵ）に対して、異なる電力モードに関連付けられる異なる電圧レベルが規定される。プロセッサ１００が異なる電力モード間（たとえば、最低パフォーマンス状態とスリープ状態との間）を移行するときにＶＣＣ＿ＣＰＵの電圧レベルが変化するように、変換器１０３に指示が与えられる。
【００１１】
さらに、いくつかの実施形態によれば、プロセッサがスリープ状態から出たことをシステムが検出すると（ＶＣＣ＿ＣＰＵの電圧レベルがスリープ状態電圧レベルから最低パフォーマンス状態電圧レベルに移行することを指定する指示を検出することに基づく）、システムは、プロセッサがスリープ状態に入ることに起因して以前にディセーブルにされた変換器１０３の一部分を起動することができる。スリープ状態から出る際に変換器１０３の（以前にディセーブルにされた）部分を起動することによって、プロセッサが後に、より高いパフォーマンス状態（複数可）に移行するときに、予想される電力が引き出されるのに合わせて、変換器１０３を完全に起動することができる。
【００１２】
図１にさらに示されるように、変換器１０３はコントローラ１０４と、電圧回路１０６、１０８及び１１０とを備える。各電圧回路１０６、１０８及び１１０は基本的に、ＶＰＳをＶＣＣ＿ＣＰＵに変換するＤＣ−ＤＣ電圧変換器である。フィードバック回路１１１が、コントローラ１０４にＶＣＣ＿ＣＰＵの電圧フィードバックを与え、ＶＣＣ＿ＣＰＵを所望のレベルに調整できるようにする。
【００１３】
いくつかの実施形態において、変換器１０３は多相変換器である（図１には３相変換器が示されるが、他の変換器は、２相又は４相以上のような異なる数の相を用いることができる）。多相変換器１０３の３つの相は、３つの電圧回路１０６、１０８及び１１０によって与えられる。図１に示される多相変換器１０３によれば、異なる時点において、異なる電圧回路１０６、１０８及び１１０がオンにされる。これは、個々の電圧回路１０６、１０８及び１１０からの出力電流を低減する。
【００１４】
図１に示されるように、電圧回路１０６は「相１」電圧回路と呼ばれ、電圧回路１０８は「相２」電圧回路と呼ばれ、電圧回路１１０は「相３」電圧回路と呼ばれる。電圧回路１０６、１０８及び１１０の出力は互いに接続され、ＶＣＣ＿ＣＰＵを与える。電圧回路１０６、１０８及び１１０の入力は電源電圧ＶＰＳを受信し、コントローラ１０４からそれぞれの制御信号も受信する。コントローラ１０４からの制御信号は、相１電圧回路１０６を制御する相１制御信号（複数可）、相２電圧回路１０８を制御する相２制御信号（複数可）及び相３電圧回路１１０を制御する相３制御信号（複数可）を含む。
【００１５】
対応する相ｘ電圧回路（１０６、１０８又は１１０）に与えられる相ｘ（ｘ＝１、２、又は３）制御信号（複数可）は、アクティブ（相ｘ電圧回路をオンにする）、又は非アクティブ（相ｘ電圧回路をディセーブルにする）とすることができる。相１、相２及び相３制御信号のタイミングは、相１、相２及び相３電圧回路１０６、１０８及び１１０のうちの１つ又は複数がいつでもオンであるように制御される。
【００１６】
任意の相ｘ電圧回路をディセーブルにするために、その電圧回路への相ｘ制御信号（複数可）を非アクティブにしておくことができる。後にさらに説明されるように、いくつかの実施形態によれば、プロセッサ１００が低電力モード（たとえば、スリープ状態）に入ったことが検出されると、かつプロセッサ１００によって引き出される電流が所定のしきい値未満であることが検出されると、相ｘ電圧回路のうちの１つ又は複数をディセーブルにして、さらなる省電力を達成することができる。相ｘ電圧回路の１つ又は複数の相をディセーブルにすることは、多相変換器１０３の該相をディセーブルにする、又は該相を削減するとも言われる。
【００１７】
上記で言及されたように、いくつかの実施形態によれば、少なくとも最低パフォーマンス状態及びスリープ状態には、異なるＶＣＣ＿ＣＰＵ電圧レベルが関連付けられる。言い換えると、最低パフォーマンス状態には第１のＶＣＣ＿ＣＰＵ電圧レベルが関連付けられ、一方、スリープ状態には、それよりも低い第２のＶＣＣ＿ＣＰＵ電圧レベルが関連付けられる。これにより、コントローラ１０４は、プロセッサ１００の最低パフォーマンス状態とスリープ状態とを区別できるようになる。
【００１８】
一実施態様では、スリープ状態に対して規定されるＶＣＣ＿ＣＰＵの電圧レベルは、プロセッサ１００の最低電圧レベルとすることができる。プロセッサ１００への電源電圧のための最低電圧レベルは、プロセッサ１００がプロセッサ１００のコンテキスト（たとえば、レジスタに格納されるデータ等）を保持することができる最低レベルである。
【００１９】
プロセッサ１００の他のパフォーマンス状態（複数可）（最低パフォーマンス状態以外）は、１つ又は複数の他のＶＣＣ＿ＣＰＵ電圧レベルに関連付けることができ、これらの他の電圧レベル（複数可）は、最低パフォーマンス状態のためのＶＣＣ＿ＣＰＵ電圧レベルよりも高い。代替的には、他のパフォーマンス状態（複数可）は、最低パフォーマンス状態と同じＶＣＣ＿ＣＰＵ電圧レベルに関連付けることができる。
【００２０】
一実施形態によれば、プロセッサの異なる電力モードに対して異なるＶＣＣ＿ＣＰＵ電圧レベルを設定するために、プロセッサ１００はファームウエア（たとえば、基本入力／出力システム又はＢＩＯＳファームウエア）等を用いてプログラムされる。プロセッサ１００は、ＶＩＤ制御信号ＶＩＤ０、ＶＩＤ１及びＶＩＤｎ（ただし、ｎ≧２）を出力することによって、ＶＣＣ＿ＣＰＵの電圧レベルを制御することができる。ＶＩＤ制御信号をコントローラ１０４に入力して、出力電圧回路１０６、１０８及び１１０によって供給される出力電圧ＶＣＣ＿ＣＰＵの電圧レベルを制御する。したがって、実効的には、ＶＩＤ制御信号は、電力モードのうちの少なくとも２つ（たとえば、スリープ状態及び最低パフォーマンス状態）に関するＶＣＣ＿ＣＰＵの異なる電圧レベルの指示の一例となる。ＶＣＣ＿ＣＰＵの電圧レベルは、相１、相２及び相３制御信号のデューティサイクルを調整すること等によって、コントローラ１０４によって出力される相１、相２及び相３制御信号を調整することによって変更される。
【００２１】
こうして、コントローラ１０４によってＶＩＤ制御信号の値を用いて、プロセッサがスリープ状態に入るか、又はスリープ状態から出るかを判断することができる。或るパフォーマンス状態に関連付けられるＶＣＣ＿ＣＰＵレベルからスリープ状態ＶＣＣ＿ＣＰＵレベルへの移行を指示するＶＩＤ制御信号の値の変化は、プロセッサ１００が、或るパフォーマンス状態からスリープ状態に移行したことを指示する。代替的には、スリープ状態ＶＣＣ＿ＣＰＵレベルから或るパフォーマンス状態に関連付けられるＶＣＣ＿ＣＰＵレベルへの移行を指示するＶＩＤ制御信号の値の変化は、プロセッサ１００がスリープ状態から出つつあることを指示する。
【００２２】
いくつかの実施形態によれば、ＶＣＣ＿ＣＰＵから（より具体的には、ＶＣＣ＿ＣＰＵを駆動する電圧回路１０６、１０８及び１１０から）プロセッサ１００によって引き出される電流の量が所定のしきい値を超えているか否かを判断するために比較器１１２が設けられる。ＶＣＣ＿ＣＰＵからプロセッサ１００によって引き出される電流は、コントローラ１０４内で検出される。ＶＣＣ＿ＣＰＵからプロセッサ１００によって引き出される電流の出力指示は、コントローラ１０４によって、電流レベル（ＣＵＲＲＥＮＴ  ＬＥＶＥＬ）として与えられる。比較器１１２は、コントローラ１０４の外部にある回路とすることができるか、又は代替的には、比較器１１２はコントローラ１０４の一部とすることができる。
【００２３】
引き出される電流（ＣＵＲＲＥＮＴ  ＬＥＶＥＬ）が所定のしきい値未満であることに応答して、比較器１１２は第１の指示（たとえば、アクティブ状態を有する信号）を出力する。引き出される電流が所定のしきい値を超えていることに応答して、比較器１１２は第２の指示（たとえば、非アクティブ状態を有する信号）を出力する。コントローラ１０４は、第１又は第２の指示を受信する機能イネーブル（ＦＥＡＴＵＲＥ  ＥＮＡＢＬＥ）入力を有する。機能イネーブル（ＦＥＡＴＵＲＥ  ＥＮＡＢＬＥ）入力が第１の指示を受信する場合には、変換器相ディセーブル機能がイネーブルにされる。ここで、変換器相ディセーブル機能は、プロセッサ１００がスリープ状態に移行したことを検出するのに応答して、コントローラ１０４が変換器１０３の相（複数可）をディセーブルにすることができることを指している。しかしながら、機能イネーブル（ＦＥＡＴＵＲＥ  ＥＮＡＢＬＥ）入力が第２の指示を受信する場合には、プロセッサ１００がスリープ状態に入っている場合であっても、コントローラ１０４は、変換器１０３の相（複数可）をディセーブルにすることはできない。
【００２４】
いくつかの実施形態による、コントローラ１０４によって電力管理を実行するための過程が図２との関連で説明される。図２のタスクは、コントローラ１０４において実行可能なファームウエア又はソフトウエアの制御下で、コントローラ１０４によって実行することができる。
【００２５】
コントローラ１０４は、ＶＣＣ＿ＣＰＵのための電圧レベル変化の指示を受信する（２０２）。そのような指示は、ＶＩＤ制御信号（ＶＩＤ０、ＶＩＤ１、．．．、ＶＩＤｎ）によって与えられる。電圧レベル変化の指示に基づいて、コントローラ１０４は、プロセッサ１０４がスリープ状態から出つつあるか、又はスリープ状態に入りつつあるかを判断する（２０４）。プロセッサがスリープ状態から出入りしていない場合には、その手順はタスク２０２に戻る。
【００２６】
また、コントローラ１０４は、比較器１１２によって設定されるような、機能イネーブル（ＦＥＡＴＵＲＥ  ＥＮＡＢＬＥ）入力の状態も検出する（２０４）。次に、コントローラ１０４は、多相変換器１０３の相（複数可）の起動又はディセーブルに関連する事象が生じたか否かを判断する（２０６）。プロセッサ１００がスリープ状態に入っていることを電圧レベル変化の指示が示しており、かつ機能イネーブル（ＦＥＡＴＵＲＥ  ＥＮＡＢＬＥ）入力がアクティブ状態にあり、ＶＣＣ＿ＣＰＵから引き出される電流が所定のしきい値未満であることを指示する場合には、変換器１０３の相（複数可）をディセーブルにする事象が特定される。プロセッサ１００がスリープ状態から出ていることを電圧レベル変化の指示が示す場合、又はＶＣＣ＿ＣＰＵから引き出される電流が所定のしきい値を超えている場合には（それは、非アクティブ状態に設定される機能イネーブル（ＦＥＡＴＵＲＥ  ＥＮＡＢＬＥ）入力によって指示される）、変換器１０３の相（複数可）を起動する事象が特定される。
【００２７】
変換器１０３の相（複数可）をディセーブルにする事象を検出するのに応答して、コントローラ１０４は、対応する相制御信号を非アクティブにし、変換器１０３の１つ又は複数のそれぞれの相をディセーブルにすることに進む（２０８）。変換器の相（複数可）をディセーブルにすることは、プロセッサ１００をスリープ状態に入れることだけによって達成される省電力に加えて、さらなる省電力を達成する。代替の実施形態では、省電力を達成するために、多相変換器の相をディセーブルにする代わりに、変換器の他の部分をディセーブルにすることができる。
【００２８】
２０６において相（複数可）を起動する事象を検出することに応答して、コントローラは、それぞれの相制御信号を起動して、以前にディセーブルにされた変換器１０３の１つ又は複数の相を起動する（２１０）。変換器の相（複数可）を起動する事象（たとえば、スリープ状態から出るプロセッサ、又はＶＣＣ＿ＣＰＵから所定の電流よりも大きな電流を引き出すプロセッサ）を検出できることによって、予想される増加した電力／電流がプロセッサ１００によって引き出されるのに合わせて、以前にディセーブルにされた相（複数可）をオンにすることができる。
【００２９】
上記で言及されたように、コントローラ１０４において、いくつかの実施形態による種々のタスクを実行するためのファームウエア又はソフトウエアが実行可能である。コントローラ１０４はマイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルゲートアレイ（ＰＧＡ）、マイクロプロセッサ等を用いて実現することができる。「コントローラ」は、単一の構成要素又は複数の構成要素を指すことができる。
【００３０】
ファームウエア又はソフトウエアの命令は記憶デバイスに格納することができ、記憶デバイスは１つ又は複数のコンピュータ可読記憶媒体又はコンピュータ使用可能記憶媒体として実現することができる（それはコントローラ１０４の一部とすることができる）。
【００３１】
これまでの説明において、本発明を理解してもらうために、数多くの細部が述べられてきた。しかしながら、これらの細部を用いることなく本発明が実施される場合があることは当業者には理解されよう。本発明は限られた数の実施形態に関して開示されてきたが、それらの実施形態からの数多くの変更及び変形を当業者は理解されよう。添付の特許請求の範囲は、本発明の真の精神及び範囲内に入る変更及び変形を包含することを意図している。
【図１】
0005289575.tif 000002
【図２】
0005289575.tif 000003