説明

プロセッサの電圧制御の方法

【課題】プロセッサのパワー・ステートを効率よく遷移させる電力制御システムを提供する。
【解決手段】プロセッサは負荷が軽いときに、命令を実行しないスリーピング・ステートCnに移行し、アクティブなC0ステートとCnステートとの間を所定の遷移周波数で遷移する。プロセッサ10にはCnステートのときは、C0ステートのときよりも小さな電圧が印加されるため消費電力が少ない。しかし、C0ステートとCnステートとの間を遷移するときに、電源装置100の出力電圧がパワー・ステートの遷移に応じて変化するために平滑コンデンサに充電損失が発生する。演算回路は、充電損失、プロセッサのC0ステートおよびCnステートでの消費電力を計算して、低下するプロセッサの消費電力よりも充電損失が大きい場合はプロセッサの動作をC0ステートに維持するための遷移停止信号を出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、平滑コンデンサを備える電源装置がプロセッサに供給する電圧を制御して消費電力を低減する技術に関し、さらに詳細にはアクティブ・ステートとスリーピング・ステートの間を遷移するプロセッサに供給する電圧を制御して消費電力を低減する技術に関する。
【背景技術】
【0002】
ACPI(Advanced Configuration and Power Interface)は、コンピュータ・システムについて、G0ステートからG2ステートまでの動作状態としてグローバル・ステートを定義する。G0ステートはワーキング・ステートといわれユーザ・モードのコードが実行される。G1ステートはスリーピング・ステートといわれ、コンピュータはG0ステートよりも少ない消費電力で動作し、ユーザ・モードのコードは実行せずユーザからはコンピュータが動作を停止しているようにみえる。G2ステートはソフトオフ・ステートといわれ、コンピュータは最小の消費電力で動作しユーザ・モードおよびシステム・モードのコードは実行されない。
【0003】
さらにACPIは、G0ステートにおけるシステム・プロセッサのパワー・ステートとして、アクティブ・ステートとスリーピング・ステートを定義する。アクティブ・ステートはプロセッサが命令を実行することができるパワー・ステートでC0ステートと表示する。スリーピング・ステートは、プロセッサが命令を実行せず、コアの電圧および消費電力はC0ステートより小さくなるパワー・ステートでC1ステートからCnステートまでのいずれかとして表示する。各スリーピング・ステートでは、消費電力が小さくなるほどC0ステートへの復帰時間は長くなる。
【0004】
特許文献1は、プロセッサに電力を供給するDC/DC変換部に設けたコンデンサから発生する騒音を防止するために、プロセッサのパワー・ステートの切り替え方式を変更することが記載されている。同文献には、プロセッサがC4ステートとC0ステートとの間を周期的に遷移している場合のパワー・ステートの切替周期が設定しておいた設定周期よりも短い場合に、C3ステートとC0ステートとの間で遷移するように変更させることが記載されている。特許文献2は、プロセッサのパワー・ステートを遷移させる方法を開示する。
【0005】
非特許文献1には、インテル社で提供するC6パワー・ステートまで遷移するプロセッサを開示する。同文献には、プロセッサがC0ステートとC6ステートの間を頻繁に遷移する場合には、SRAMへプロセッサステートを退避したり復帰したりするために平均消費電力が上昇することが記載されている。そして3〜4ミリ秒以下の頻度でC6ステートに遷移するような場合は、C4ステートを維持させてC6ステートに遷移しないようにするAuto-Demoteという機能をプロセッサに実装していることが記載されている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2004−259368号公報
【特許文献2】米国特許第7363523号公報
【非特許文献】
【0007】
【非特許文献1】後藤弘茂、”後藤弘茂のWeekly海外ニュース、平均消費電力を大きく低減するPenrynらのC6ステイと”、[online]、[平成19年12月30日検索]、インターネット、〈URL:http://pc.watch.impress.co.jp/docs/2007/1214/kaigai407.htm〉
【発明の概要】
【発明が解決しようとする課題】
【0008】
ACPIに対応したオペレーティング・システム(OS)が処理すべき命令がないと判断してプロセッサにHALT命令を実行させると、プロセッサはC1ステートに遷移する。C1ステートに遷移してもさらにプロセッサに処理すべき命令がないと判断した場合は、OSは順次C2ステート、C3ステート、C4ステートとスリーピング・ステートの深度を深めていく。アプリケーション・プログラム(以下、アプリケーションという。)は、プロセッサがスリーピング・ステートに移行する際に、処理すべきスレッドの有無にかかわらずプロセッサを定期的にC0ステートにレジュームさせるようにOSに要求する。定期的にレジュームさせる周波数はアプリケーションにより異なる。
【0009】
プロセッサはDC/DCコンバータから各スリーピング・ステートに適した電圧の供給を受けるために、DC/DCコンバータに電圧識別データを送る。DC/DCコンバータは、プロセッサのスリーピング・ステートの深度が深まるに従って出力電圧を下げていく。よって、OSとアプリケーションによりプロセッサが所定の周期でC0ステートとCnステートの間を遷移するときは、DC/DCコンバータは電圧識別データに応じてパワー・ステートの遷移に同期して出力電圧を変化させる。
【0010】
このとき、プロセッサにはC0ステートで最も高い電圧が印加されスリーピング・ステートではそれよりも低い電圧が周期的に印加されることになる。DC/DCコンバータの出力回路には、電圧の脈動を低減する平滑コンデンサが接続されている。そして、高い出力電圧から低い出力電圧に切り替わるときには平滑コンデンサに蓄積された電荷を放電し、低い出力電圧から高い出力電圧に切り替わるときには放電された電荷を充電する必要があるため充電損失が発生する。出力電圧の切り替えにより平滑コンデンサに発生する充電損失は、パワー・ステートの切替周期に比例して増大する。
【0011】
スリーピング・ステートでのプロセッサの消費電力はC0ステートでの消費電力よりも低いため、プロセッサの消費電力はC0ステートを維持させるよりもC0ステートとCnステートとの間を遷移させたほうが小さくなる。しかし、切替周期が短くなるとコンデンサの充電損失が増大するのでコンピュータの消費電力を低減するためには、プロセッサの消費電力と平滑コンデンサの充電損失を総合した判断が必用になる。
【0012】
そこで本発明の目的は、電力効率の優れたパワー・ステートでプロセッサを動作させる電源装置を提供することにある。さらに本発明の目的は、プロセッサと電源装置の消費電力の合計が少ないパワー・ステートでプロセッサを動作させる電源装置を提供することにある。さらに本発明の目的は、そのような電源装置を搭載したコンピュータおよび電力の供給方法を提供することにある。
【課題を解決するための手段】
【0013】
本発明においては、平滑コンデンサを含む電源装置が所定の出力電圧をプロセッサに供給する。あるアプリケーションが実行されるときプロセッサのパワー・ステートは、アクティブ・ステート(C0ステート)と所定のスリーピング・ステート(Cnステート)との間を所定の遷移周波数でパワー・ステートが遷移するCn遷移ステートで動作する。電源装置の出力電圧はパワー・ステートの変化に同期して変化する。電源装置の出力電圧が変化すると、平滑コンデンサを充放電する際に充電損失が発生する。プロセッサがC0ステートを維持する場合には充電損失は発生しないが、Cn遷移ステートで動作する場合は遷移周波数が高いほど大きな充電損失が発生し、かつそのときのプロセッサの消費電力はCnステートの深度が深くなるほど小さくなる。
【0014】
本発明では、プロセッサが動作している間に、プロセッサの消費電力とCn遷移ステートで動作させたときに平滑コンデンサに発生する充電損失とに基づいて遷移停止条件を計算する。C0ステートのプロセッサの消費電力よりもCn遷移ステートのプロセッサの消費電力と充電損失の合計が大きい場合は遷移停止条件が成立したと判断する。遷移停止条件が成立したときは、Cn遷移ステートでの動作を停止したほうが有利であるためプロセッサのパワー・ステートをC0ステートに維持する遷移停止信号を出力する。
【0015】
充電損失はC0ステートに対応した出力電圧とCnステートに対応した出力電圧と平滑コンデンサの静電容量に基づいて計算することができる。遷移停止信号は、Cn遷移ステートでのプロセッサの消費電力と電源装置の電力損失の合計と、C0ステートを維持したプロセッサの消費電力と電源装置の電力損失の合計を比較し有利なパワー・ステートを選択して出力することができる。プロセッサのCnステートにおける消費電力には個体差があったり、C0ステートにおける消費電力は他の制御技術で制御されたりするので、遷移停止条件の計算に使用するプロセッサの消費電力は実測することが望ましい。
【0016】
また遷移周波数は実行するアプリケーションにより変化し、C0ステートのプロセッサの消費電力は他の制御技術により変化するので、所定時間ごとに遷移停止信号の出力を停止してプロセッサをCn遷移ステートで動作させ、遷移停止条件の成否を時間軸上で定期的に判断することが望ましい。さらに本発明の他の態様においては、Cn遷移ステートで動作している間に遷移停止条件が成立したときには、深度が1段浅いスリーピング・ステートとアクティブ・ステートとの間を遷移する遷移ステートに変更することができる。そして、遷移ステートを変更してから所定の時間遷移停止条件が成立しない場合は、深度が1段深いスリーピング・ステートとアクティブ・ステートとの間を遷移するように遷移ステートを変更することができる。
【発明の効果】
【0017】
本発明により、電力効率の優れたパワー・ステートでプロセッサを動作させる電源装置を提供することができた。さらに本発明により、プロセッサと電源装置の消費電力の合計が少ないパワー・ステートでプロセッサを動作させる電源装置を提供することができた。さらに本発明により、そのような電源装置を搭載したコンピュータおよび電力の供給方法を提供することができた。
【図面の簡単な説明】
【0018】
【図1】DC/DCコンバータに充電損失が発生する原理を説明する図である。
【図2】プロセッサに電力を供給する電力制御システムの構成を説明する機能ブロック図である。
【図3】プロセッサのパワー・ステートを制御する手順を示すフローチャートである。
【図4】DC/DCコンバータの出力電圧の波形を示す図である
【図5】アプリケーションが要求する遷移周波数の一例を示す図である。
【図6】プロセッサのパワー・ステートを制御する他の手順を示すフローチャートである。
【発明を実施するための形態】
【0019】
[プロセッサのパワー・ステート]
本実施の形態で説明するプロセッサ10(図2参照)は、ACPIのC0ステート、C1ステート、C2ステート、C3ステート、C4ステート、およびC6ステートのいずれかのパワー・ステートで動作することが可能である。C0ステートはアクティブ・ステートといわれ、プロセッサはいずれのスリーピング・ステートよりも大きな動作電圧で動作して命令を実行することができる。C0ステートからC1ステートへの遷移はOSがHALT命令を実行することで発生する。
【0020】
OSがHALT命令を実行するとプロセッサはC1ステートに遷移し、実際の命令を実行しないアイドル・プロセスがスケジューリングされる。C1ステートで動作するプロセッサは、実行すべきプロセスが発生したり割り込みがあったりすると、ただちにC0ステートに遷移して命令を実行することができる。C0ステートからC1ステートより深度が深いスリーピング・ステートへの遷移は、入出力制御用のチップセット(ICH)などのハードウエアが、それぞれのパワー・ステートに割り当てられたプロセッサのピンに信号を送ることで発生する。なお、本明細書においては、特定のスリーピング・ステートをCnステートということにする。
【0021】
C2ステートではコアのクロックが停止する。C3ステートでは、L1キャッシュの内容がL2キャッシュにフラッシュされてパワー・オフになり、クロック・ジェネレータが停止する。C4ステートでは、L2キャッシュの内容が順番にメイン・メモリにフラッシュされていく。そしてフラッシュされたライン単位でキャッシュ・アレイのパワーがオフになっていく。すべてのラインがフラッシュされるとL2キャッシュのパワーがオフになる。C6ステートでは、L1キャッシュとL2キャッシュがパワー・オフになりプロセッサの動作状態が専用のSRAMに保存される。
【0022】
複数のスリーピング・ステートで動作するプロセッサは、スリーピング・ステートがC1ステートからC6ステートまで深く遷移するにしたがってコアの電圧を低下させてリーク電流を小さくしたり、クロックを停止したり、またはキャッシュをパワー・オフにしたりして消費電力をより低減することができる。インテル社のプロセッサの一例では、C0ステートのときにプロセッサに供給する電圧は1Vで、C6ステートのときには0.35Vである。また、ある深度のCnステートからC0ステートに遷移するときのウエイクアップ時間は、それより深い深度のCnステートから遷移するときのウエイクアップ時間よりも短くなる。
【0023】
ここで説明した各パワー・ステートにおけるプロセッサの状態やクロック・ジェネレータの状態は一例であり、本発明では他のパワー・ステートの状態が定義されたプロセッサを採用することもできる。また、プロセッサはシングル・コアでもマルチ・コアでも負荷に応じてパワー・ステートを遷移させることができるものであれば本発明に適用することができる。本発明でプロセッサのパワー・ステートに関して重要なことは、パワー・ステートが変化することでプロセッサに供給する電圧および消費電力が変化することだけである。
【0024】
[充電損失]
図1は、DC/DCコンバータに充電損失が発生する原理を説明する図である。DC/DCコンバータは、直流電源から供給される直流電圧を各パワー・ステートに適した一定の直流電圧に変換してプロセッサに供給する。プロセッサは図1(B)に示すように、実行しているアプリケーションに依存した周期Tで、C0ステートとCnステートの間を遷移している。C0ステートのときにプロセッサに印加する電圧Voは各パワー・ステートの中で最も高い。また、Cnステートのときにプロセッサに印加する電圧VnはVoよりも小さい。
【0025】
図1(A)において、DC/DCコンバータは、ハイサイド・トランジスタH−FET、ローサイド・トランジスタL−FET、インダクタL、平滑コンデンサCout、およびレギュレータICなどで構成される。インダクタLと平滑コンデンサCoutは、DC/DCコンバータからプロセッサに流れる電圧および電流の脈動を低減する平滑回路を形成する。DC/DCコンバータは同期整流方式を採用しており、レギュレータICはH−FETおよびL−FETを所定の周期で交互にオン状態になるようにPWM(Pulse Width Modulation)方式で駆動する。レギュレータICはH−FETがオンになっているオン期間中はL−FETをオフにし、H−FETがオフになっているオフ期間中はL−FETをオンにする。
【0026】
レギュレータICは、図には示していない電圧検出回路で検出した出力電圧に基づいてオン期間を調整して、出力電圧を他のデバイスにより設定された一定の値に維持するようにPWM制御する。一定の出力電圧で動作するDC/DCコンバータではオン期間に直流電源から経路1でプロセッサに電流が流れると同時に経路2で平滑コンデンサCoutを充電する。オフ期間は経路3でインダクタLに蓄積された電磁エネルギーがプロセッサに電流として流れ、平滑コンデンサCoutからも経路4でプロセッサに電流が流れる。出力電圧が一定になるように動作するときは、平滑コンデンサCの抵抗分を無視すればオン期間中に平滑コンデンサCを充電した電力はオフ期間中にプロセッサに供給されるため充電電力の損失はない。
【0027】
つぎにプロセッサのパワー・ステートの遷移に同期してDC/DCコンバータの出力電圧がVoとVnの間で変化するときの平滑コンデンサCに発生する充電電力の損失を検討する。出力電圧がVoで動作しているときは、平滑コンデンサCoutの平均電圧はVoになっている。そして、出力電圧をVnにするためにオン期間が短くなりオフ期間が長くなるようにレギュレータICがH―FETとL−FETの動作を制御すると、出力電圧がVnに低下するために平滑コンデンサCoutから経路5と経路6で電流が流れる。経路6で流れる電流は、直流電源に戻るが経路5で流れる電流は平滑コンデンサCoutおよびインダクタLからなる循環回路を流れて電力が消費される。
【0028】
出力電圧がVnになると平滑コンデンサCoutの平均電圧もVnになる。その後、出力電圧がVnからVoに変化するときは、平滑コンデンサCoutの平均電圧をVnからVoまで上昇させるために経路2で平滑コンデンサに充電電力が供給される。この充電電力は、経路5で消費された電力に相当するため、出力電圧を変化させたことによる充電電力の損失(以下、充電損失という。)が発生する。アプリケーションは、プロセッサがCnステートに遷移する際に各アプリケーションが保有する独自の周期でプロセッサがC0ステートに遷移することを要求する。
【0029】
Cnステートで動作するプロセッサは、C0ステートで動作するときよりも消費電力が小さくなるが、プロセッサがC0ステートとCnステートとの間を周期的に遷移するときは、遷移する周波数(以下、遷移周波数という。)が高くなるほど充電損失が大きくなる。ここにプロセッサをC0ステートに留めておくか、Cnステートに遷移させアプリケーションの要求に基づいてC0ステートとCnステートの間を所定の遷移周波数で遷移させるかは、プロセッサの消費電力とDC/DCコンバータの電力損失を総合して判断する必要がある。なお、プロセッサがC0ステートとCnステートの間を遷移している状態と、Cnステートを維持している状態とを区別するために、C0ステートとCnステートの間を遷移している状態をCn遷移ステートということにする。
【0030】
[遷移ステートの決定方法]
DC/DCコンバータがC0ステートで動作するときの出力電圧をVo、スイッチング損失をLo、プロセッサの電流をIoとし、Cnステートで動作するときの出力電圧をVn、スイッチング損失をLn、プロセッサの電流をInとする。また、遷移周波数をfとし平滑コンデンサCoutの静電容量をCとする。Coステートで連続して動作するプロセッサが消費する電力Poは、
Po=Vo×Io
Cn遷移ステートで動作するプロセッサが消費する電力Pnは、図1(B)に示すように1周期においてCoステートで動作する割合をαとすれば、
Pn=Vo×Io×α+Vn×In×(1−α)
となる。
【0031】
プロセッサが遷移周波数fのCn遷移ステートで動作するときに平滑コンデンサCoutに発生する充電損失Pcは、DC/DCコンバータの効率と経路6で回収できる電力の割合を考慮した回路定数をβとして、
Pc=0.5×C×(VoーVn)×β×f
となる。ここで、プロセッサがC0ステートを維持して動作するときのプロセッサの消費電力Poおよび直流電源装置に発生する電力損失Loの合計と、Cn遷移ステートで動作するときのプロセッサの消費電力Pn、直流電源装置に発生する電力損失Ln、および充電損失Pcの合計を比較したときに、Coステートを維持するほうが有利になる条件である遷移停止条件は以下のようになる。
Po+Lo<Pn+Ln+Pc
【0032】
この式を変形すると、
Po−Pn<Ln−Lo+Pc
となる。ここで、Cn遷移ステートで動作するDC/DCコンバータの電力損失とC0ステートを維持するDC/DCコンバータの電力損失の差であるLn−Loは全体の中で無視できるほど小さいので、結局遷移停止条件は、
Vo×Io−(Vo×Io×α+Vn×In×(1−α))<Pc
となる。ここにα≪1であるため、遷移停止条件は、
Vo×Io−Vn×In<Pc…(式1)
となる。
【0033】
式1は、Vo、Io、Vn、In、C、f、βを取得することができれば、計算することができる。式1によれば、遷移停止条件は、プロセッサのC0ステートを維持するときの消費電力とCn遷移ステートで動作するときの消費電力の差が充電損失よりも小さい場合に成立する。また、遷移停止条件は、プロセッサのC0ステートを維持するときの消費電力が、Cn遷移ステートで動作するときの消費電力と充電損失の合計よりも小さい場合に成立するといえる。
【0034】
[プロセッサの電力制御システム]
図2は、プロセッサに電力を供給する電力制御システムの構成を説明する機能ブロック図である。電力制御システムは、デスクトップ・コンピュータ、携帯式コンピュータ、サーバ、またはPDAなどのコンピュータ・システムに搭載することができる。直流電源23は、DC/DCコンバータ100に直流電圧を供給する、ACアダプタ、上位のDC/DCコンバータ、または蓄電池とすることができる。DC/DCコンバータ100は、プロセッサ10にそのパワー・ステートに適合した直流電圧を供給する。
【0035】
プロセッサ10は、電圧識別ピン(SVID)を備えており、ライン129を通じて現在のパワー・ステートにおいて要求する動作電圧および遷移周波数を示す識別データをDC/DCコンバータ100に送る。プロセッサ10は、たとえば、C6ステートとC0ステートを100Hzの遷移周波数で遷移するときには、C0ステートの電圧が1VでC6ステートの電圧が0.35Vで遷移周波数が100Hzであることを示す識別データをDC/DCコンバータ100に送る。
【0036】
プロセッサ10は、C2ステートより深度の深いパワー・ステートに遷移するための複数の制御ピン(CONT)を備えている。各制御ピンは制御ライン51でチップ・セット13に接続されている。プロセッサは、C0ステートで動作するときに、使用率に応じて動作電圧と動作周波数をセットにして低下させるインテル社のSpeedStep(登録商標)またはAMD社のPowerNowといった技術、あるいはスロットリングという技術で消費電力を低下させることができる。チップ・セット13は制御ライン51に信号を送ることで、プロセッサ10のパワー・ステートを変更することができる。プロセッサ10にはクロック・ジェネレータ11が接続され、クロック・ジェネレータ11にはチップ・セット13が接続されている。クロック・ジェネレータ11は、プロセッサ10および図示しないバス、メモリ・コントローラ用のチップ・セット(MCH)、およびメイン・メモリなどにクロックを供給する。
【0037】
チップ・セット13は、入出力制御用のチップ・セット(ICH)またはその他のデバイスとすることができる。OS15は、チップ・セット13の内部レジスタを設定することで、クロック・ジェネレータ11の動作およびプロセッサ10のパワー・ステートを制御する。OS15は、プロセッサ10の使用率やタイムスライスの状態などに基づいてプロセッサの負荷の大きさを判断して、現在のパワー・ステートを変更するためのデータをチップ・セット13のレジスタに書き込む。OS15は、C2ステートより深度の深いパワー・ステートへの遷移を指示するときは、定期的にC0ステートに復帰して実行すべき命令や割り込みがないかどうかを確認するための時間または周波数を設定する復帰タイマ16を備えている。
【0038】
たとえば、OS15は、復帰タイマを所定時間に設定して現在の負荷の状況に基づいてプロセッサ10をC6ステートに遷移させると、プロセッサ10は、C6ステートで所定の時間だけ動作するとC0ステートに復帰し、短時間だけC0ステートで動作してC6ステートに戻る。そして所定時間後にC0ステートに復帰するといった動作を繰り返す。OS15およびアプリケーション17は、プロセッサ10の負荷となるプログラムである。コンピュータ・システムには、複数のアプリケーション17が実装されており、各アプリケーションは動作するときにそれぞれ復帰タイマ16に復帰時間を設定する。すなわち、コンピュータ・システムにおける遷移周波数は実行されているアプリケーションにより決まることになる。図6にアプリケーションが要求する遷移周波数の一例を示す。
【0039】
BIOS19は、ACPIに適合しフラッシュROMに格納されている。BIOS19にはプロセッサ10がサポートする有効なスリーピング・ステートがシステムまたはユーザにより設定される。BIOS19はメイン・メモリにロードされたときにプロセッサ10の現在のCnステートへの遷移を停止するためのDEフラグ20を有する。OS15は、プロセッサの負荷状況を観測し、BIOS19に設定された有効なスリーピング・ステートとDEフラグ20に基づいていずれの遷移ステートで動作させるかを決定する。
【0040】
エンベデッド・コントローラ(EC)21は、コンピュータの電源および温度などを管理するためのマイクロ・コンピュータで、PWMコントローラ102に接続される。EC21は、PWMコントローラ102の動作を制御する。EC21はさらにDC/DCコンバータ100のANDゲート115にライン53で接続されている。EC21はANDゲート115からCnステートへの遷移を停止するためのディスエーブル(DE)信号を受け取ったときにDEフラグ20を設定する。
【0041】
たとえば、プロセッサ10がC6遷移ステートで動作しているときに、EC21によりDEフラグ20が設定されるとOS15はプロセッサ10がC6ステートへの遷移を停止してC0ステートに留まるようにチップ・セット13のレジスタを設定する。そして、DEフラグ20の設定が解除されたときにプロセッサ10がC6遷移ステートで動作するようにチップ・セット13のレジスタを設定する。
【0042】
あるいは、OS15または他のプログラムは、DEフラグ20が設定されたときに、プロセッサ10が現在のスリーピング・ステートよりも深度が1段浅いスリーピング・ステートとC0ステートの間を遷移するようにチップ・セット13のレジスタを設定してもよい。たとえばOS15は、プロセッサ10がC6遷移ステートで動作しているときにDEフラグ20が設定されたときにはC4遷移ステートで動作させる。そして、さらにDEフラグ20が設定されたときにはC3遷移ステートで動作させたり、DEフラグ20の設定が解除されたときにはC6遷移ステートで動作させたりしてもよい。なお、復帰タイマ16および遷移ステートの変更はOS15とは異なるプログラムが実行するようにしてもよい。
【0043】
DC/DCコンバータ100は、MOS型のトランジスタであるハイサイドFET117およびローサイドFET119、インダクタ121、および平滑コンデンサ123を含む。これらは図1で説明した要素と同様に動作し、かつ、平滑コンデンサ123は出力電圧が遷移周波数で変化するときに充電損失を発生する。レギュレータIC101は、PWMコントローラ102、遷移周波数入力回路103、動作電圧入力回路105、静電容量入力回路107、演算増幅器109、演算回路111、タイマ113、およびANDゲート115を含む。ハイサイドFET117のドレインは直流電源23に接続されソースはローサイドFET119のドレインに接続される。ローサイドFET119のソースはグランドに接続される。
【0044】
ハイサイドFET117とローサイドFET119のゲートは、PWMコントローラ102に接続される。インダクタ121は一方の端子がハイサイドFET117のソースおよびローサイドFET119のドレインに接続され、他方の端子がセンス抵抗125の一方の端子および平滑コンデンサ123の一方の端子に接続される。センス抵抗125の他方の端子はプロセッサ10に接続される。平滑コンデンサ123の他方の端子はグランドに接続される。センス抵抗125の両端はそれぞれ、演算増幅器109の入力端子に接続される。演算増幅器109は出力が演算回路111に接続され、DC/DCコンバータ100の出力電流Ioに相当するセンス抵抗125の両端の電圧を増幅して演算回路111に出力する。
【0045】
遷移周波数入力回路103および動作電圧入力回路105はそれぞれ入力端子がライン129に接続され、出力端子が演算回路111に接続される。遷移周波数入力回路103は、プロセッサ10から受け取った識別データで示される動作電圧の変化をカウントする周波数カウンタで構成され、その結果をアナログ信号の遷移周波数fとして演算回路111に送る。あるいは、遷移周波数入力回路103は、プロセッサ10から受け取った遷移周波数fを示す識別データをアナログ信号に変換して演算回路111に送るようにすることもできる。動作電圧入力回路105は、プロセッサから受け取った動作電圧に関する識別データをアナログ信号に変換して演算回路に送る。PWMコントローラ102は、ライン129を通じてプロセッサ10に接続され、プロセッサ10から受け取った識別データに基づいて設定された電圧をプロセッサ10のパワー・ステートに同期した遷移周波数で出力するようにハイサイドFET117とローサイドFET119を同期整流方式でスイッチング制御する。PWMコントローラ102には、一定の電圧を出力するために図示しない分圧抵抗から出力電圧がフードバックされる。
【0046】
静電容量入力回路107は、入力端子が識別抵抗127の一方の端子に接続され出力端子が演算回路111に接続される。識別抵抗127は、平滑コンデンサ123の静電容量に対応する抵抗値を備え他方の端子がグランドに接続されている。静電容量入力回路107は識別抵抗127の抵抗値をアナログ信号に変換して演算回路111に送る。演算回路111の出力はANDゲート115の一方の端子に接続される。タイマ113はANDゲート115の他方の端子に接続される。
【0047】
演算回路111は、式1の遷移停止条件をワイヤード・ロジック方式で計算するためのハードウエアで構成された演算回路で演算増幅器や論理素子で構成されている。ただし、演算回路111は、マイクロプロセッサで構成することもできる。演算回路111には、遷移停止条件を計算するための回路定数βの値が組み込まれており、平滑コンデンサ123の静電容量は抵抗127を通じて取得することができる。演算回路111は、出力電圧Vo、Vn、および遷移周波数fをプロセッサ10からライン129に接続された動作電圧入力回路105および遷移周波数入力回路103を通じて取得し、出力電流Io、Inはセンス抵抗125に接続された演算増幅器109から取得することができるので、プロセッサ10がCn遷移ステートで動作するときはダイナミックに遷移停止条件を計算することができる。
【0048】
演算回路111は、プロセッサ10がCn遷移ステートで動作しているときにだけ遷移停止条件を計算し、C0ステートを維持しているときは遷移停止条件を計算しない。演算回路111は、遷移停止条件が成立したと判断したときにANDゲート115の一方の入力端子に遷移停止信号を出力する。タイマ113は演算回路111とANDゲート115の他方の入力端子に接続されている。タイマ113は、オンになる一定のオン時間とオフになる一定のオフ時間からなる一定の周期のタイマ信号を出力する。たとえばオン時間は1000ミリ秒とし、オフ時間は10ミリ秒とすることができる。演算回路111から遷移停止信号が出力されているときに、タイマ信号がオンになるとDE信号がオンになる。タイマ信号がオフになると、それに応答して演算回路111はリセットしてそれまで出力していた遷移停止信号をオフにする。また、タイマ信号がオフになることでDE信号もオフになる。
【0049】
[パワー・ステートの制御方法]
つぎに図2に示した電力制御システムによる電力の供給方法を説明する。図3は、プロセッサ10のパワー・ステートを制御する手順を示すフローチャートで、図4はDC/DCコンバータ100の出力電圧の波形を示す図である。図4で、ライン301は、本実施の形態によるパワー・ステートの制御を行わない場合に、プロセッサ10をスリーピング・ステートに移行させるOS15のアルゴリズムで決定されたスリーピング・ステートの深度とアプリケーション17が設定した復帰時間Tにより決定された遷移周波数fにより、プロセッサが連続的にCn遷移ステートで動作しているときのDC/DCコンバータ100の出力電圧を示す。
【0050】
またライン303はタイマ113が出力するタイマ信号を示し、ライン305は演算回路111が出力する遷移停止信号を示し、ライン307はANDゲート115が出力するDE信号を示す。ライン309はライン301に対して本実施の形態によるパワー・ステートの制御を行った場合のDC/DCコンバータ100の出力電圧を示している。タイマ113は、オン時間T1とオフ時間T2からなる一定周期のタイマ信号を遷移周波数や遷移停止信号とは無関係に独自に出力している。
【0051】
ブロック201では、DC/DCコンバータ100から電力の供給を受けてプロセッサ10がC0ステートで動作している。OS15は、負荷状態に応じて所定のアルゴリズムでC0ステートのプロセッサ10の動作電圧および動作周波数をセットで変更してもよい。復帰タイマ16には現在プロセッサ10で実行されているアプリケーション101により所定の復帰時間Tが設定されている。そしてOS15は、BIOS19に設定された有効なパワー・ステートおよびDEフラグ20を参照し、DEフラグ20が設定されていない場合にはプロセッサ10の負荷に応じてプロセッサ10をC1ステートから順番に深度の深いスリーピング・ステートに遷移させていく。ブロック203では、OS15がプロセッサ10をCn遷移ステートで動作させるものとする。OS15がチップ・セット13のレジスタに、Cnステートへ遷移させるためのデータと復帰時間Tを示すデータを書き込むと、プロセッサ10はCn遷移ステートで動作してCnステートとC0ステートとの間を復帰時間Tで決まる遷移周波数fで遷移する。
【0052】
プロセッサ10は、ライン129を通じてPWMコントローラ102に、Cnステートのときは電圧Vnを出力し、C0ステートのときは電圧Voを出力するように識別データを送る。遷移周波数入力回路103は、プロセッサ10から受け取った識別データで示される動作電圧の変化から遷移周波数fを計算して演算回路111に送る。DC/DCコンバータ100は、プロセッサ10のパワー・ステートの遷移に同期して遷移周波数fで出力電圧をVnとVoの間で変化させる。このときの様子は図4のライン301の時刻t2までの状態として示されている。DC/DCコンバータ100は周期的に電圧を変更することで平滑コンデンサ123に充電損失が発生する。
【0053】
演算回路111は、プロセッサがCn遷移ステートで動作するときは、遷移停止条件を計算する。ブロック205で演算回路111は、C0ステートに対応した出力電圧VoおよびCnステートに対応した出力電圧Vnを動作電圧入力回路105から取得し、遷移周波数fを遷移周波数入力回路103から取得し、さらに平滑コンデンサ123の静電容量を識別抵抗127から取得して遷移停止条件を計算する。演算回路111は時刻t1で遷移停止条件が成立したと判断するとブロック207で遷移停止信号を出力してブロック209に移行する。ブロック207で遷移停止条件が成立しない限りプロセッサ10はブロック203に戻ってCn遷移ステートで動作する。
【0054】
ブロック209でタイマ信号と遷移停止信号が時刻t2でともにオンになるとANDゲート115はEC21にDE信号を出力する。DE信号を受け取ったEC21はBIOS19のDEフラグ20を設定する。BIOS19からDEフラグ20が設定されたことの通知を受け取ったOS15は、現在のスリーピング・ステートがディスエーブルに設定されたことを認識してプロセッサ10がC0ステートを維持するようにチップ・セット13のレジスタを設定する。ライン309に示すように遷移停止信号がオンである限りタイマ信号がオン時間T1の間はDE信号がオンになるため、DC/DCコンバータ100の出力電圧はVoを維持する(ブロック211)。したがって、平滑コンデンサに充電損失が発生しなくなり充電損失とプロセッサ10の消費電力を合計した電力損失はCn遷移ステートで動作する場合よりも少なくなる。ブロック213では、遷移停止信号がオフにならない限りオン時間T1が経過するまでプロセッサ10はC0ステートを維持する。
【0055】
ブロック213では、時刻t3でタイマ信号のオン時間T1が経過するとタイマ信号がオフになりそれに応答して演算回路111は遷移停止信号の出力を停止しDE信号はオフになる。DE信号がオフになったことを認識したEC21によりDEフラグ20の設定が解除されると、OS15はブロック203に戻って、前に説明したのと同様の手順で時刻t3から時刻t5までのオフ時間T2の間プロセッサ10をCn遷移ステートで動作させる。オフ時間T2は、プロセッサ10がC0ステートを維持して動作している間にDC/DCコンバータ100の出力電流および遷移周波数またはいずれか一方が変化して遷移停止条件が不成立の方向に変化していないかどうかを演算回路111が再計算するための時間である。
【0056】
ブロック205においてプロセッサ10がCn遷移ステートで動作していることを認識した演算回路111は、ブロック207で再度遷移停止条件の計算を行い時刻t4で遷移停止条件が成立していると判断して遷移停止信号を出力する。ただし、オフ時間T2の間はタイマ信号がオフのためANDゲート115はDE信号を出力しない。プロセッサ10は時刻t2まではCn遷移ステートで動作する。ブロック209でタイマ信号のオフ時間T2が経過すると時刻t5でブロック211に移行してDE信号がオンになると、Cnステートへの遷移が停止されプロセッサは再びC0ステートを維持する。
【0057】
ブロック213でオン時間T1が終了して時刻t6でタイマ信号がオフになって遷移停止信号とDE信号がオフになると、プロセッサ10はCn遷移ステートで動作する(ブロック203)。ブロック205では演算回路111が遷移停止条件の計算を開始したとき今度は遷移停止条件が不成立であると判断して、時刻t6以降はブロック207からブロック203に戻り遷移停止信号を出力しない。その結果時刻t6以降は、プロセッサ10がCn遷移ステートで動作する。一例では、プロセッサがC6遷移ステートで動作しているときには遷移周波数が1KHzを越えると遷移停止条件が成立する。したがって、IKHzを越えるような復帰時間Tを設定するアプリケーションを実行するときには、演算回路111の判断によりプロセッサ10がC0ステートを維持して動作することで消費電力を低減することができる。
【0058】
[パワー・ステートの他の制御方法]
図3、図4では、Cnステートへの遷移をディスエーブルにしてCn遷移ステートでの動作を停止する場合にC0ステートを維持する例を説明したが、本発明は現在のCn遷移ステートで遷移停止条件が成立する場合にそれより深度が一段浅いパワー・ステートでの遷移ステートで動作させることもできる。図6は、プロセッサ10のパワー・ステートを制御する他の手順を示すフローチャートである。ブロック401では、プロセッサ10がサポートするすべてのスリーピング・ステートがBIOS19に設定されており、OS15は負荷状態に応じてプロセッサ10を順次深度の深いスリーピング・ステートに遷移させる。
【0059】
ブロック403では、プロセッサ10がC6遷移ステートで動作している。ブロック405では、演算回路111が遷移停止条件を計算する。遷移停止条件が成立しない限り、プロセッサはC6遷移ステートで動作する。OS15は、負荷状態に応じて所定のアルゴリズムでC0ステートのプロセッサ10の動作電圧および動作周波数をセットで変更してもよい。この制御方法ではタイマ113およびANDゲート115を設ける必要はなく、遷移停止条件が成立したときに演算回路111が出力する遷移停止信号はDE信号としてEC21に送られる。
【0060】
ブロック405で遷移停止条件が成立すると、ブロック407でEC21は、BIOSに設定されているC6ステートをディスエーブルに設定する。その結果、OS15は最も深度の深いスリーピング・ステートがC4ステートであると判断して、負荷状態に応じてブロック409でプロセッサ10をC4ステートとC0ステートを遷移するC4遷移ステートで動作させる。ブロック411では、演算回路111がC4遷移ステートについて遷移停止条件を計算する。遷移停止条件が成立しない場合はブロック413に移行する。式1の遷移停止条件は、Cnステートにおいては出力電圧Vnの2乗で充電損失が変化し、出力電圧Vnと出力電流Inの積でプロセッサ10の消費電力が変化する。
【0061】
したがって遷移周波数に変化がない場合において、C6遷移ステートでは遷移停止条件が成立しても、C4遷移ステートでは遷移停止条件が成立しないこともある。その場合は、プロセッサ10がC0ステートを維持して動作するよりもC4遷移ステートで動作するほうが充電損失とプロセッサ10の消費電力の合計は少なくなる。ブロック413では、EC21のタイマが、C6ステートがディスエーブルになってからまたはC4遷移ステートに移行してからの動作時間が所定時間を越えた場合にはブロック415に移行する。ブロック415では、現在のシステムの状態が遷移周波数およびC0ステートでのプロセッサの消費電力またはいずれか一方が変化して、より消費電力の低減が可能なC6遷移ステートでの遷移停止条件が成立していることも考えられるのでEC21はBIOS19のC6ステートをイネーブルに設定する。
【0062】
BIOS19のC6ステートがイネーブルに設定されると、ブロック403に移行してプロセッサ10は負荷状態に応じてC6遷移ステートで動作するようになる。そして、ブロック405で遷移停止条件が成立していない場合はC6遷移ステートでの動作を継続する。ブロック413で所定時間が経過していない場合は、ブロック409に戻ってプロセッサ10は、C4遷移ステートでの動作を継続する。ブロック411で遷移停止条件が成立する場合はブロック417でEC21は、BIOS19に有効なスリーピング・ステートとして設定されているC4ステートをディスエーブルに設定する。その結果、OS15は最も深度の深いパワー・ステートがC3ステートであると判断して、ブロック419で負荷状態に応じてプロセッサ10をC3遷移ステートで動作させる。ブロック421では、演算回路111がC3遷移ステートについて遷移停止条件を計算する。
【0063】
ブロック421で遷移停止条件が成立する場合は、ブロック427でEC21がBIOS19に有効なスリーピング・ステートとして設定されているC3ステートをディスエーブルにしてからブロック429に移行し、遷移停止条件が成立しない場合はブロック423に移行する。ブロック423ではC4ステートがディスエーブルになってからまたはC3遷移ステートに移行してからの動作時間が所定時間を越えたときに、ブロック425に移行してEC21がBIOS19のC4ステートをイネーブルに戻してからブロック409に移行する。ブロック429では、プロセッサ10が負荷状態に応じてC2遷移ステートで動作する。ブロック431では、C3ステートがディスエーブルになってからまたはC2遷移ステートに移行してからの動作時間が所定時間を越えた場合はブロック425に移行してEC21がBIOS19のC3ステートをイネーブルに戻してからブロック419に戻る。ブロック431でC3ステートがディスエーブルになってから所定時間が経過するまでは、プロセッサ10はC2遷移ステートで動作する。
【0064】
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。
【符号の説明】
【0065】
100…DC/DCコンバータ
101…レギュレータIC
301…電力制御しない場合のDC/DCコンバータ100の出力電圧
303…タイマ113が出力するタイマ信号
305…演算回路111が出力する遷移停止信号
307…ANDゲート115が出力するDE信号
301…電力制御した場合のDC/DCコンバータ100の出力電圧

【特許請求の範囲】
【請求項1】
アクティブ・ステートと所定のスリーピング・ステートとの間を所定の遷移周波数でパワー・ステートが遷移する遷移ステートで動作するプロセッサに電力を供給する電源装置であって、
平滑コンデンサと、
前記プロセッサが前記遷移ステートで動作するときに、各パワー・ステートに応じて出力電圧を制御するコントローラと、
前記プロセッサの消費電力と前記パワー・ステートを遷移させたときに前記平滑コンデンサに発生する充電損失に基づいて遷移停止条件を計算して前記所定のスリーピング・ステートへの遷移を停止するための遷移停止信号を出力する演算回路と
を有する電源装置。
【請求項2】
前記演算回路は、前記充電損失を前記アクティブ・ステートに対応した出力電圧と前記所定のスリーピング・ステートに対応した出力電圧と前記平滑コンデンサの静電容量に基づいて計算する請求項1に記載の方法。
【請求項3】
前記演算回路は、前記遷移ステートで動作する前記プロセッサの消費電力と前記電源装置の電力損失の合計と、前記アクティブ・ステートを維持して動作する前記プロセッサの消費電力と前記電源装置の電力損失の合計を比較して前記遷移停止条件を計算する請求項1または請求項2に記載の電源装置。
【請求項4】
前記演算回路は、実測した前記プロセッサの消費電力と前記プロセッサからそれぞれ取得した出力電圧および前記遷移周波数に基づいて前記遷移停止条件を計算する請求項1から請求項3のいずれかに記載の電源装置。
【請求項5】
前記演算回路が前記遷移停止条件を計算するために、前記遷移停止信号の出力を停止して前記アクティブ・ステートを維持して動作しているプロセッサを所定時間ごとに前記遷移ステートで動作させるためのタイマ回路を有する請求項1から請求項4のいずれかに記載の電源装置。
【請求項6】
前記コントローラと前記演算回路が同一の半導体チップに形成されている請求項1から請求項5のいずれかに記載の電源装置。
【請求項7】
前記演算回路は、前記平滑コンデンサの静電容量に対応する抵抗値の抵抗素子から前記平滑コンデンサの静電容量を取得する請求項6に記載の電源装置。
【請求項8】
前記所定のスリーピング・ステートが前記プロセッサのキャッシュがパワー・オフになって専用のSRAMにプロセッサの動作状態が保存されるACPIのC6ステートである請求項1から請求項7のいずれかに記載の電源装置。
【請求項9】
アクティブ・ステートと所定のスリーピング・ステートとの間を所定の遷移周波数でパワー・ステートが遷移する遷移ステートで動作するプロセッサと、
前記遷移停止信号に応答して前記プロセッサの前記遷移ステートでの動作を停止させるチップ・セットと、
前記プロセッサに電力を供給する請求項1から請求項8のいずれかに記載の電源装置と
を有するコンピュータ。
【請求項10】
アクティブ・ステートと所定のスリーピング・ステートとの間を所定の遷移周波数でパワー・ステートが遷移する遷移ステートで動作するプロセッサと、
平滑コンデンサと、前記遷移ステートで動作するときに各パワー・ステートに応じて出力電圧を制御するコントローラと、前記プロセッサの消費電力と前記遷移ステートで動作する前記平滑コンデンサに発生する充電損失に基づいて遷移停止条件を計算して前記所定のスリーピング・ステートへの遷移を停止するための遷移停止信号を出力する演算回路とを含む電源装置と、
前記遷移停止信号に応答して前記プロセッサが前記所定のパワー・ステートよりも深度が1段浅いスリーピング・ステートと前記アクティブ・ステートとの間を遷移する遷移ステートで動作するように前記プロセッサの設定を変更するデバイスと
を有するコンピュータ。
【請求項11】
アクティブ・ステートと所定のスリーピング・ステートとの間を所定の遷移周波数でパワー・ステートが遷移する遷移ステートで動作するプロセッサに平滑コンデンサを含む電源装置が電力を供給する方法であって、
前記プロセッサが前記遷移ステートで動作するステップと、
各パワー・ステートの遷移に応じて前記電源装置が出力電圧を変更するステップと、
前記コンピュータが、前記プロセッサの消費電力と前記電源装置の電力損失を前記アクティブ・ステートと前記所定のスリーピング・ステートのそれぞれについて計算して前記所定のスリーピング・ステートへの遷移を停止させる遷移停止条件の成否を判断するステップと、
前記遷移停止条件が成立したときに前記コンピュータが前記プロセッサのパワー・ステートを前記アクティブ・ステートに維持するステップと
を有する方法。
【請求項12】
前記判断するステップが、前記電源装置の前記アクティブ・ステートに対応する出力電圧と前記スリーピング・ステートに対応する出力電圧の差に基づいて前記平滑コンデンサに発生する充電損失を計算するステップを含む請求項11に記載の方法。
【請求項13】
前記遷移停止条件が成立している間に、前記コンピュータが前記プロセッサを所定時間ごとに前記アクティブ・ステートから前記遷移ステートに移行させるステップを有する請求項11または請求項12に記載の方法。
【請求項14】
複数のスリーピング・ステートを備えるプロセッサに平滑コンデンサを含む電源装置が電力を供給する方法であって、
前記プロセッサがアクティブ・ステートと所定のスリーピング・ステートとの間をパワー・ステートが所定の遷移周波数で遷移する遷移ステートで動作するステップと、
各パワー・ステートの遷移に応じて前記電源装置が出力電圧を変更するステップと、
前記コンピュータが、前記プロセッサの消費電力と前記平滑コンデンサの充電損失を計算して前記所定のスリーピング・ステートへの遷移を停止させる遷移停止条件の成否を判断するステップと、
前記遷移停止条件が成立したときに前記コンピュータが前記アクティブ・ステートと前記所定のパワー・ステートよりも深度が1段浅いスリーピング・ステートとの間を遷移する新たな遷移ステートで前記プロセッサを動作させるステップと
を有する方法。
【請求項15】
前記新たな遷移ステートで動作してから所定の時間前記遷移停止条件が成立しない場合に、前記コンピュータは前記アクティブ・ステートと前記所定のスリーピング・ステートとの間を遷移するもとの遷移ステートで前記プロセッサを動作させるステップを有する請求項14に記載の方法。
【請求項16】
スイッチング素子と平滑コンデンサを含む出力回路に接続され、前記スイッチング素子を制御してアクティブ・ステートと所定のスリーピング・ステートとの間を所定の遷移周波数でパワー・ステートが遷移する遷移ステートで動作するプロセッサに所定の電圧を供給する半導体装置であって、
各パワー・ステートに応じて出力電圧を制御するコントローラと、
前記遷移周波数、前記パワー・ステートに対応する出力電圧、前記平滑コンデンサの静電容量、および前記プロセッサに流れる電流の値を取得する入力回路と、
前記入力回路に接続され前記プロセッサの消費電力と前記遷移ステートで動作させたときに前記平滑コンデンサに発生する充電損失を計算して前記所定のスリーピング・ステートへの遷移を停止するための遷移停止信号を出力する演算回路と
を有する半導体装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2011−145959(P2011−145959A)
【公開日】平成23年7月28日(2011.7.28)
【国際特許分類】
【出願番号】特願2010−7616(P2010−7616)
【出願日】平成22年1月17日(2010.1.17)
【出願人】(505205731)レノボ・シンガポール・プライベート・リミテッド (292)
【復代理人】
【識別番号】100106699
【弁理士】
【氏名又は名称】渡部 弘道
【復代理人】
【識別番号】100077584
【弁理士】
【氏名又は名称】守谷 一雄
【Fターム(参考)】