説明

データ処理装置及びデータ処理システム

【課題】DVFS制御を行うデータ処理装置において、更なる低消費電力化を図る。
【解決手段】データ処理装置(1)は、クロック信号(CLK)に同期してデータ処理を実行するデータ処理制御部(10)において所定期間で消費される実電力量(Pr_0〜Pr_3)と、仮定した周波数(f1〜f3)での前記データ処理制御部による前記所定期間における動作を想定したときの想定電力量(Pf1_0〜Pf1_3、Pf2_0〜Pf2_3、Pf3_0〜Pf3_3)とを演算する。データ処理装置(1)は、演算した実電力量と想定電力量のうち低消費電力となる周波数を考慮して、データ処理に係る負荷の状態に対応するクロック信号の周波数を選択制御する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理装置及びデータ処理システムの消費電力を低減させるための技術に関し、特にクロック信号の周波数や電源電圧を動的に制御する機能を備えるデータ処理装置に適用して有効な技術に関する。
【背景技術】
【0002】
近年、マイクロプロセッサによるプログラム処理によって制御される組み込み機器の高性能化が進んでいる。これに伴い、マイクロプロセッサの消費電力が増加する傾向にある。このような状況において、マイクロプロセッサの消費電力を低減するための技術の1つである、DVFS(Dynamic Voltage and Frequency Scaling)制御を適用したマイクロプロセッサが増加しつつある。DVFS制御は、CPU等のプロセッサコアの負荷状態に基づいて、プロセッサコアに供給されるクロック信号の周波数と電源電圧とを動的に制御するパワーマネジメント技術である。
【0003】
従来のDVFS制御技術として特許文献1乃至4に、CPUで実行されるタスクやプロセス毎にCPUの負荷を算出して動作周波数と動作電圧を制御する方法が開示されている。また、上記DVFS制御とは異なるが、特許文献5には、CPUリソースが割り当てられて仮想的に生成される仮想サーバを有する物理サーバにおいて、前記仮想サーバの負荷の合計量と前記物理サーバ内のCPUリソースの総量とに基づいてCPUの駆動周波数を制御する技術が開示されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2008−107944号公報
【特許文献2】特開2008−59556号公報
【特許文献3】特開2004−152068号公報
【特許文献4】特表2001−517332号公報
【特許文献5】特開2009−175788号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1乃至5に示されるように、DVFS制御ではCPU等の負荷に基づいて動作周波数や動作電圧を設定するが、その設定によるCPU等の電力状態までは監視しない。そのため、DVFS制御によりCPU等の負荷状態に基づいて動作周波数や動作電圧を設定したとしても、必ずしも電力的に最適な設定(例えば消費電力が最小となる設定)にならない可能性があると、本願発明者は考えた。具体的には、CPUに対するクロック信号の供給を停止するスリープモードや、クロック信号のみならず電源の供給も停止するスタンバイモード等の動作モードを備えるマイクロプロセッサでは、CPUの負荷状態に基づいて動作周波数や動作電圧を設定するだけでは、必ずしも電力的に最適な状態にならない場合がある。例えば、マイクロプロセッサが、1つのデータ処理を完了してから次のデータ処理を開始するまでの待機時間が長いときはスタンバイモードに移行し、短いときはスリープモードに移行する制御を行うものとし、スリープモードよりもスタンバイモードの方がCPUの消費電力が小さいものと仮定した場合を考える。このようなマイクロプロセッサにおけるDVFS制御では、例えばCPUが動作周波数を下げてデータ処理を実行する低速設定と、動作周波数を上げてデータ処理を実行する高速設定の2つの設定状態が考えられる。前記低速設定の場合、データ処理を実行している間は動作周波数を上げて処理する場合に比べて消費電力は小さくなるが、動作周波数を下げている分データ処理に要する時間が長くなる。これにより、1つのデータ処理が完了してから次のデータ処理を開始するまでの待機時間が短くなるため、その後はスタンバイモードに移行できずにスリープモードに移行する可能性があり、その場合スタンバイモードに比べて待機時の消費電力が大きくなる。一方、前記高速設定の場合、データ処理を実行している間は動作周波数を下げて処理する場合に比べて消費電力は大きくなるが、動作周波数が高い分データ処理に要する時間が短くなる。これにより、データ処理が完了してから次のデータ処理を開始するまでの待機時間が長くなるため、スリープモードではなくスタンバイモードに移行できる可能性があり、その場合、より低消費電力となる可能性がある。
【0006】
このように、データ処理時の消費電力だけでなく、データ処理後の待機時間まで含めた期間の消費電力を考慮すると、動作周波数を上げてデータ処理を行った方が動作周波数を下げてデータ処理を実行するよりも、前記期間では低消費電力になる可能性がある。したがって、待機時間の長さに応じてスリープモードとスタンバイモードが選択制御され、且つDVFS制御が行われるマイクロプロセッサでは、CPUの負荷状態だけを判断基準として動作周波数を調整しても、データ処理時間や待機時間の長さによっては必ずしも電力的に最適な状態にならない場合があると、本願発明者は考えた。
【0007】
本発明の目的は、DVFS制御を行うデータ処理装置において、更なる低消費電力化を図ることにある。
【0008】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【0009】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【0010】
すなわち、本データ処理装置は、クロック信号に同期してデータ処理を実行するデータ処理制御部において所定期間で消費される実電力量と、仮定した周波数での前記データ処理制御部による前記所定期間における動作を想定したときの想定電力量とを演算し、前記実電力量と前記想定電力量のうち低消費電力となる周波数を考慮して、前記データ処理に係る負荷の状態に対応する前記クロック信号の周波数を選択制御する。
【発明の効果】
【0011】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【0012】
すなわち、本データ処理装置によれば、更なる低消費電力化を図ることができる。
【図面の簡単な説明】
【0013】
【図1】図1は、本実施の形態に係るデータ処理装置を含むデータ処理システムを例示するブロック図である。
【図2】図2は、単位電力量テーブル3044の一例を示す説明図である。
【図3】図3は、処理時間比テーブル3045の一例を示す説明図である。
【図4】図4は、CPU10の実動作時と想定動作時との対応関係を表す説明図である。
【図5】図5は、CPU10の実動作時と想定動作時との対応関係を表す別の説明図である。
【図6】図6は、DVFS管理モジュール30による実電力量と想定電力量の算出処理の流れの一例を示すフロー図である。
【図7】図7は、換算時間の算出処理の流れの一例を示すフロー図である。
【図8】図8は、データ処理装置1の動作タイミングの一例を示す説明図である。
【図9】図9は、比較例に係るデータ処理装置の動作タイミングの一例を示す。
【図10】図10は、データ処理装置1と比較例に係るデータ処理装置の電力特性を示す説明図である。
【発明を実施するための形態】
【0014】
1.実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【0015】
〔1〕(実動作時の電力量と仮定した周波数設定毎の想定電力量を算出してCPUにフィードバックする)
本発明の代表的な実施の形態に係るデータ処理装置(1)は、クロック信号(CLK)に同期してデータ処理を実行するとともに、前記データ処理に係る負荷の状態に基づいて前記クロック信号の周波数を選択制御するデータ処理制御部(10)と、前記データ処理制御部の実動作時に前記データ処理制御部で消費される所定期間(測定回数情報3042)の実電力量(Pr_0〜Pr3)を演算するとともに、仮定した周波数(f1〜f3)での前記データ処理制御部による動作を想定した想定動作時の前記所定期間における想定電力量(Pf1_0〜Pf1_3、Pf2_0〜Pf2_3、Pf3_0〜Pf3_3)を演算する電力算出部(30)と、を有する。前記データ処理制御部は、前記実電力量と前記想定電力量のうち低消費電力となる周波数を考慮して、前記負荷の状態に対応するクロック信号の周波数を選択制御する。
【0016】
項1のデータ処理装置では、前記所定期間の前記実電力量と前記仮定した周波数での前記想定電力のうち低消費電力となる周波数を判別するから、現状のデータ処理制御部の動作周波数が、前記データ処理制御部にとって電力的に最適な動作周波数であるか否かを判別することができる。これにより、現状のデータ処理制御部の動作周波数が電力的に最適でない場合には、前記データ処理制御部の消費電力をより低減させることができる動作周波数に変更することが可能となる。
【0017】
〔2〕(CPUの動作状態毎に継続時間を把握して、動作状態毎に電力算出)
項1のデータ処理装置において、前記データ処理制御部の動作状態は、データ処理が実行可能なアクティブ状態と、データ処理が実行不能な非アクティブ状態とを含み、前記非アクティブ状態は、前記データ処理制御部に対するクロック信号の供給が停止している第1低消費電力状態(スリープ状態)と、前記データ処理制御部に対する前記クロック信号及び電源電圧の供給が停止している第2低消費電力状態(スタンバイ状態)とを含む。前記電力算出部は、前記実動作時と前記想定動作時における前記アクティブ状態の継続時間と、前記第1低消費電力状態の継続時間と、前記第2低消費電力状態の継続時間とを把握し、夫々の前記継続時間と夫々の前記動作状態における単位時間当たりの消費電力量とに基づいて、前記実電力量と前記想定電力量とを算出する。
【0018】
項2のデータ処理装置では、前記所定期間の上記3つの動作状態を区別し、夫々の動作状態の前記継続時間を考慮して電力量の算出を行うから、前記所定期間の前記実電力量と前記想定電力量を、より精度良く算出することができる。
【0019】
〔3〕(演算完了毎に通知)
項1又は2のデータ処理装置において、前記電力算出部は、前記所定期間の前記実電力量及び前記想定電力量の演算が完了する毎に、前記演算が完了したことを前記データ処理制御部に対して通知する。
【0020】
これによれば、現状の前記データ処理制御部の動作周波数が電力的に最適な周波数であるか否かを、前記所定期間毎に判別することができる。
【0021】
〔4〕(一定期間毎又はCPUの動作状態の変化毎に電力量を算出)
項2又は3のデータ処理装置において、前記電力算出部は、一定期間(測定時間情報3041に設定されたタイマの上限値)毎又は前記データ処理制御部の前記動作状態の変化毎に前記データ処理制御部で消費される実電力量を算出し、算出した前記実電力量を所定回数分だけ累積することで前記所定期間での前記実電力量を算出する。また、前記電力算出部は、前記実電力量に係る演算毎に前記想定電力量を算出し、算出した前記想定電力量を前記所定回数分だけ累積することで前記所定期間での前記仮想電力量を算出する。
【0022】
これによれば、前記所定期間における前記動作状態を考慮した電力量の算出を容易に行うことができる。また、前記データ処理制御部の前記動作状態が変化しない場合であっても、前記一定期間毎に電力量の算出を行うことができるから、電力量の算出回数が前記所定回数に到達しないことで前記所定期間における電力量の算出が行われなくなることを防止することができる。
【0023】
〔5〕(1回分の実測電力量の算出方法)
項4のデータ処理装置において、前記所定回数のうち1回分の実電力量は、前記データ処理制御部の前記動作状態における単位時間あたりの消費電力量(PA1〜PA3、PS1〜PS3、PB1〜PB3)と、その1回分における前記実動作時の前記動作状態の継続時間を示す第1継続時間(Tc)と、を乗算することで算出される。
【0024】
これによれば、前記データ処理制御部の前記実動作時における前記動作状態毎の前記実電力量を容易に算出することができる。
【0025】
〔6〕(1回分の想定電力量の算出方法)
項5のデータ処理装置において、前記所定回数のうち1回分の想定電力量は、前記仮定した周波数での前記データ処理制御部の前記動作状態における単位時間あたりの消費電力量(PA1〜PA3、PS1〜PS3、PB1〜PB3)と、その1回分における前記想定動作時の前記動作状態の継続時間を示す第2継続時間(Tv)と、を乗算することで算出される。
【0026】
これによれば、前記データ処理制御部の前記想定動作時における動作状態毎の前記想定電力量を容易に算出することができる。
【0027】
〔7〕(換算時間Tvの算出(アクティブ時))
項6のデータ処理装置において、前記電力算出部は、前記想定動作時の動作状態が前記アクティブ状態である場合には、対応する前記実動作時の前記第1継続時間を、前記想定動作時の周波数での前記データ処理制御部のデータ処理能力(r11〜r13、r21〜r23、r31〜r33)に応じて換算し、換算した時間を前記第2継続時間とする。
【0028】
前述したように、クロック信号の周波数を高くしてデータ処理を実行すればデータ処理に要する時間は短くなるが、逆に周波数を低くしてデータ処理を実行すればデータ処理に要する時間は長くなる。すなわち、周波数が高ければデータ処理能力が高く、周波数が低ければデータ処理能力が低いともいえる。そこで、項7のデータ処理装置では、現状のデータ処理制御部でのアクティブ状態の継続時間を基準とし、その継続時間を前記仮定した周波数での前記データ処理制御部のデータ処理能力に応じて換算することで、前記第2継続時間を算出する。これによれば、前記仮定した周波数に応じたデータ処理時間を容易に算出することができる。
【0029】
〔8〕(換算時間Tvの算出(非アクティブ時))
項7のデータ処理装置において、前記電力換算部は、前記想定動作時の前記データ処理制御部の動作状態が前記アクティブ状態である場合には、算出した前記第2継続時間に対する前記第1継続時間の差分を示す差時間(ΔT)を算出して累積し(T0)、前記想定動作時の前記データ処理制御部の動作状態が前記非アクティブ状態である場合には、前記第1継続時間と前記累積した差時間とを加算して算出した時間に基づいて前記第2継続時間を決定する。
【0030】
前述したように、前記データ処理制御部の動作状態がアクティブ状態から非アクティブ状態に移行する場合、アクティブ状態での継続時間の長さによって、その後の非アクティブ状態での継続時間が変化する。そこで、項8のデータ処理装置によれば、前記データ処理制御部の動作状態がアクティブ状態である場合には前記差時間を累積しておき、その後、前記データ処理制御部の動作状態が非アクティブ状態となったら、累積した前記差時間を用いて非アクティブ状態での前記第2継続時間を決定する。これにより、前記想定動作時における非アクティブ状態の継続時間を、より精度良く算出することができる。
【0031】
〔9〕(換算時間Tvに応じたスリープ状態とスタンバイ状態との切り替え)
項8のデータ処理装置における前記電力算出部は、前記想定動作時の前記データ処理制御部の動作状態が前記非アクティブ状態である場合において、前記第2継続時間が所定の閾値(Tth)より大きいときは、前記想定動作時の前記データ処理制御部の動作状態が前記第2低消費電力状態であると仮定し、前記所定の閾値より小さいときは、前記想定動作時の前記データ処理制御部の動作状態が前記第1低消費電力状態であると仮定して、前記想定電力を算出する。
【0032】
これによれば、前記想定動作時における前記第1低消費電力状態と前記第2低消費電力状態とを自ら判別するから、前記想定動作時における非アクティブ状態での前記想定電力量をより精度良く算出することができる。
【0033】
〔10〕(算出した電力量を格納する記憶領域)
項4乃至9のいずれかのデータ処理装置において、前記電力算出部は、前記算出した前記所定期間毎の前記実電力量に基づく第1電力情報(3065)と、前記算出した前記所定期間毎の前記想定電力量に基づく第2電力情報(3066〜3068)と、を格納するための記憶領域(3062)を有する。前記記憶領域は、前記データ処理制御部によってアクセス可能とされる。
【0034】
〔11〕(累積差分電力量の情報を格納)
項10のデータ処理装置において、前記電力算出部は、前記実電力量と前記想定電力量のうち最も小さい電力量を選択し、選択した電力量と前記実電力量との差分を示す電力量を前記所定回数だけ累積加算した情報を前記第1電力情報として前記記憶領域に格納するとともに、前記選択した電力量と前記想定電力量との差分を示す電力量を前記所定回数だけ累積加算して前記第2電力情報として前記記憶領域に格納する。
【0035】
これによれば、例えば算出した前記所定期間毎の前記実電力量と前記想定電力量を前記記憶領域に格納する場合に比べて、格納するデータ量を小さくすることができる。これにより、前記記憶領域の容量を小さくすることができるから、例えば半導体基板上に前記データ処理装置を形成する場合には、前記半導体基板の小面積化に資する。
【0036】
〔12〕(累積差分電力量の差分の情報を格納)
項10のデータ処理装置において、前記電力算出部は、前記一定期間毎又は前記データ処理制御部の前記動作状態の変化毎に、前記実電力量と前記想定電力量のうち最も小さい電力量を選択し、選択した電力量と前記実電力量との差分を示す第1差分電力量(3053)を算出するとともに、前記選択した電力量と前記想定電力量との差分を示す第2差分電力量(3054〜3056)とを算出する。また、前記電力算出部は、前回算出した前記第1差分電力量と今回算出した前記第1差分電力量とを加算して、前記実電力量に係る累積差分電力量を算出するとともに、前回に算出した前記第2差分電力量と今回算出した第2差分電力量を加算して、前記想定電力量に係る累積差分電力量を算出する。更に前記電力算出部は、前記実電力量に係る累積差分電力量と前記想定電力量に係る累積差分電力量のうち最も小さい電力量を選択し、当該選択した電力量と前記実電力量に係る累積差分電力量との差分を示す電力量を前記第1電力情報(3065)として前記記憶領域に格納し、当該選択した電力量と前記想定電力量に係る累積差分電力量との差分を示す電力量を前記第2電力情報(3066〜3068)として前記記憶領域に格納する。
【0037】
これによれば、前記第1電力情報及び前記第2電力情報を、前記累積加算した差分の電力量に対して更に差分をとった電力量の情報とすることで、更にデータ量を小さくすることができる。これにより、前記記憶領域の容量を更に小さくすることができる。
【0038】
〔13〕(テーブルを用いて電力算出)
項9乃至12のいずれかのデータ処理装置において、前記電力算出部は、前記データ処理制御部の前記動作状態に応じた単位時間あたりの電力量(PA1〜PA3、PS1〜PS3、PB1〜PB3)が前記仮定することが可能な周波数毎に対応されて格納される第1テーブル(3044)と、前記実電力量に係る周波数での前記データ処理制御部によるデータ処理能力と、前記仮定した周波数での前記データ処理制御部によるデータ処理能力との比を示す情報(r11〜r13、r21〜r23、r31〜r33)が前記仮定した周波数毎に格納される第2テーブル(3045)と、を更に有する。前記電力算出部は、前記第1テーブルと前記第2テーブルの値に基づいて、前記実電力量と前記想定電力量の算出を行う。
【0039】
これによれば、例えば前記データ処理制御部に流れる電流や供給される電圧等を実際に測定することなく、容易に前記実電力量を算出することができる。
【0040】
〔14〕(システム)
本発明の代表的な実施の形態に係るデータ処理システム(100)は、外部からの指示に応じて電源電圧を出力する第1半導体装置(2)と、前記第1半導体装置からの給電により動作する第2半導体装置(1)と、を有するデータ処理システムである。前記データ処理システムにおいて、前記第2半導体装置は、クロック信号(CLK)に同期してデータ処理を実行するとともに前記データ処理に係る負荷の状態に基づいて前記クロック信号の周波数と電源電圧とを選択制御するデータ処理制御部(10)と、前記データ処理制御部による制御に基づいて前記クロック信号を生成して出力するクロック生成部(20)と、前記データ処理制御部の実動作時に前記データ処理制御部で消費される所定期間の実電力量(Pr_0〜Pr_3)を演算するとともに、仮定した周波数での前記データ処理制御部による動作を想定した想定動作時の前記所定期間における想定電力量(Pf1_0〜Pf1_3、Pf2_0〜Pf2_3、Pf3_0〜Pf3_3)を演算する電力算出部(60)と、を有する。前記データ処理制御部は、前記実電力量と前記想定電力量のうち低消費電力となる周波数を考慮して、前記負荷の状態に対応するクロック信号の周波数を選択制御するとともに、前記選択した周波数に応じた電源電圧の供給を前記第1半導体装置に対して指示する。
【0041】
前記データ処理システムによれば、項1と同様に、前記データ処理制御部における現状の動作周波数が、前記データ処理制御部にとって電力的に最適な動作周波数であるか否かを判別することができる。これにより、前記データ処理制御部における動作周波数が最適でない場合には、前記データ処理制御部の消費電力をより低減させることができる動作周波数に変更することが可能となる。
【0042】
2.実施の形態の詳細
実施の形態について更に詳述する。
【0043】
≪データ処理システムの構成≫
図1に本実施の形態に係るデータ処理装置を含むデータ処理システムを例示する。同図に示されるデータ処理システム100において、データ処理装置1は、特に制限されないが、公知のCMOS集積回路の製造技術によってCPUや周辺回路モジュール等の複数の回路モジュールを1個の単結晶シリコンのような半導体基板に形成したシステムLSI(SOC:System on Chip)である。
【0044】
データ処理装置1は、外部電源端子を介して電源IC2から電源電圧VDDの供給を受ける。電源IC2は、例えば入力された電圧VINに基づいて電源電圧を生成し、生成した電源電圧をデータ処理装置1、外部メモリ(MRY)3、及び水晶発振器(TCXO)4に供給する電源生成回路である。データ処理装置1は、制御信号11により所望の電源電圧VDDの供給を電源IC2に対して指示し、電源IC2はその指示に応じて電圧を生成して出力する。これにより、データ処理装置1から指示された電圧値の電源電圧VDDがデータ処理装置1に供給される。外部メモリ3は、例えばSDRAM等の揮発性の記憶領域を有する外部記憶装置やフラッシュメモリ等の不揮発性の記憶領域を有する外部記憶装置である。
【0045】
データ処理装置1は、特に制限されないが、中央処理装置(CPU)10、クロック信号生成部(CPG)20、DVFS管理モジュール30、及び図示されないその他の周辺回路モジュール等から構成される。
【0046】
クロック信号生成部20は、水晶発振器4から出力される基準クロック信号に基づいてクロック信号を生成し、生成したクロック信号をCPU10やその他の周辺回路モジュールに供給する。クロック信号生成部20は、例えばPLL(Phase Locked Loop)回路や分周器等から構成され、複数種類の周波数のクロック信号が生成可能とされる。図1には、生成したクロック信号のうちクロック信号CLKをCPU10に供給する場合が代表的に例示されている。クロック信号生成部20は、CPU10からの制御信号12により、所望の周波数のクロック信号CLKの供給が指示されると、その指示に応じた周波数のクロック信号CLKを生成してCPU10に対して出力する。また、クロック信号生成部20は、CPU10に供給しているクロック信号CLKの周波数を示すクロック状態信号VscをDVFS管理モジュール30に対して出力する。
【0047】
CPU10は、図示されないROM(Read Only Memory)や外部メモリ3等の記憶装置に格納されたソフトウェアに基づいて、プログラム処理を実行することで各種のデータ処理を行う。
【0048】
CPU10の動作状態としては、例えば、アクティブ状態と非アクティブ状態とが有り、前記非アクティブ状態にはスリープ状態とスタンバイ状態が含まれる。前記アクティブ状態は、データ処理が実行可能な状態であり、例えば、CPU10に対してクロック信号CLKと電源電圧VDDが共に供給されている状態である。一方、非アクティブ状態は、データ処理が実行不能な状態である。また、スリープ状態は、例えばCPU10に対するクロック信号CLKの供給が停止している状態であり、スタンバイ状態は、例えばCPU10に対するクロック信号CLK及び電源電圧VDDの供給が停止している状態である。例えば、電源電圧VDDの供給が停止しているとは、電源IC2からの電源電圧VDDの供給が停止される場合や、図示されない電源スイッチによって、チップ内部で電源電圧VDDの供給が停止される場合などである。前記スタンバイ状態は、上記のようにクロック信号CLKのみならず電源電圧VDDの供給も停止されるため、前記スリープ状態よりも低消費電力となるが、前記スリープ状態に比べてCPU10の復帰に時間を要する。
【0049】
CPU10のアクティブ状態から非アクティブ状態(スリープ状態又はスタンバイ状態)へ移行は以下の制御によって実現される。例えば、CPU10は、1つのデータ処理が完了してから次のデータ処理を開始するまでの待機時間を算出し、前記待機時間が長いときはアクティブ状態からスタンバイ状態に移行する。逆に前記待機時間が短いときはアクティブ状態からスリープ状態に移行する。スタンバイ状態に移行するかスリープ状態に移行するかは、例えば、算出した待機時間を所定の閾値Tthと比較することによって判断される。例えば、算出した待機時間が閾値Tth以上のときは、CPU10はスタンバイ状態に移行し、閾値Tthよりも小さいときは、CPU10はスリープ状態に移行する。CPU10の動作状態は、CPU10から出力されるスタンバイ状態信号Vsb及びスリープ状態信号Vspによって、DVFS管理モジュール30等の周辺回路モジュールに通知される。例えば、CPU10がスタンバイ状態である場合にはスタンバイ状態信号Vsbがアサートされ、CPU10がスリープ状態である場合にはスリープ状態信号Vspがアサートされる。スタンバイ状態信号Vsb及びスリープ状態信号Vspが共にネゲートされているときは、CPU10はアクティブ状態である。
【0050】
CPU10は、前記待機時間に応じて動作状態を切り替える制御に加え、実行するデータ処理に係る負荷の状態を監視し、負荷状態に応じてCPU10の動作電圧と動作周波数を調整するDVFS制御を行う。具体的には、CPU10は、実行するタスクやプロセス等の待ち行列等からデータ処理に係る負荷の状態を把握する。前記負荷の状態が、例えば低負荷状態から高負荷状態に変化した場合には、クロック信号生成部20に対してクロック信号の周波数を上げるように指示するとともに、電源IC2に対して変更後の周波数に応じた電源電圧(より高い電源電圧)を供給するように指示する。一方、例えば負荷状態が高負荷状態から低負荷状態に変化した場合には、CPU10は、クロック信号生成部20に対してクロック信号の周波数を下げるように指示するとともに、電源IC2に対して変更後の周波数に応じた電源電圧(より低い電源電圧)を供給するように指示する。
【0051】
前述したようにCPU10の負荷状態だけを判断基準として動作周波数を調整しても、データ処理時間や待機時間の長さによっては、必ずしも電力的に最適な状態にならない可能性がある。そこで、本実施の形態に係るデータ処理装置1では、DVFS管理モジュール30がCPU10の実動作時の実電力量と、仮定した動作周波数でのCPU10の動作を想定した想定動作時の想定電力量とを算出し、算出した実電力量と想定電力量とに基づいて、現状のCPU10の動作周波数の設定が電力的に最適であるか否かを判断する。例えば、CPU10は、現状の周波数設定よりも他の周波数設定の方がより低消費電力になると判断したら、データ処理に係る負荷状態を考慮して、動作周波数の設定を変更する。
【0052】
≪DVFS管理モジュールの概要≫
DVFS管理モジュール30は、CPU10の実動作時にCPU10で消費される所定期間の実電力量を算出するとともに、仮定した動作周波数でのCPU10による動作を想定した想定動作時の前記所定期間における想定電力量を算出する。DVFS管理モジュール30は、例えば、検出部301、モニタ部302、演算部303、基礎データ部304、電力差分生成部305、及び累計部306を備える。
【0053】
検出部301は、スリープ状態信号Vsp、スタンバイ状態信号Vsb、及びクロック状態信号Vscに基づいてCPU10の動作状態(アクティブ状態、スリープ状態、及びスタンバイ状態)と動作周波数を検出し、検出結果を出力する。例えば、検出部301は、スリープ状態変化検出部3011と、スタンバイ状態変化検出部3012と、クロック信号変化検出部3013とを備える。クロック信号変化検出部3013は、クロック状態信号Vscを監視し、クロック信号CLKの周波数の設定を示す信号を出力する。スリープ状態変化検出部3011は、スリープ状態信号Vspを監視し、CPU10がスリープ状態であるか否かを示す信号を出力するとともに、スリープ状態信号Vspの変化に応じた信号を出力する。スタンバイ状態変化検出部3012は、スタンバイ状態信号Vsbを監視し、CPU10がスタンバイ状態であるか否かを示す信号を出力するとともに、スタンバイ状態信号Vsbの変化に応じた信号を出力する。以下、前記スリープ状態信号Vspの変化に応じた信号とスタンバイ状態信号Vsbの変化に応じた信号とを総称して変化検出信号13とも称する。変化検出信号13は、例えばスリープ状態信号Vsp及びスタンバイ状態信号Vsbが変化する毎に信号レベルがハイレベルとローレベルの間で切り替わる信号である。
【0054】
モニタ部302は、検出部301から出力された信号に基づいて、現在のCPU10の状態を示すデータ(以下、「要素プロファイル」とも称する。)を生成し、変化検出信号13が変化する毎(CPU10の動作状態が変化する毎)又は所定期間が経過する毎に、生成した要素プロファイルを演算部303に出力する。
【0055】
前記要素プロファイルは、例えば、CPUステータス情報3021と、DVFSステータス情報3022と、継続時間情報3023とを含む。
【0056】
CPUステータス情報3021は、CPU10の動作状態を示す情報であり、例えば前記アクティブ状態、前記スリープ状態、及び前記スタンバイ状態のいずれかを示す情報である。
【0057】
DVFSステータス情報3022は、CPU10の周波数設定を示す情報である。例えばDVFS制御によって設定可能なCPU10の動作周波数として、第1周波数(f1)、第2周波数(f2)、及び第3周波数(f3)の3つの周波数設定がある場合、3つのうち何れかの周波数設定を示す情報である。
【0058】
継続時間情報3023は、変化検出信号13が変化してから次に変化するまでの時間、又は前記所定期間を示す時間(以下、継続時間Tc、と称する)を示す情報である。具体的には、前記継続時間3023は、前記モニタ部302が内部に設けられたタイマを用いて前記変化検出信号13の変化をトリガとして計時を行うことにより計測される時間である。例えば、モニタ部302は、変化検出信号13が変化してから次に変化するまでの時間を前記タイマでカウントさせ、計測したカウント値を継続時間Tcとする。また、前記モニタ部302は、前記タイマにカウントを開始させてから次の前記変化検出信号13の変化が起こる前に前記所定期間が経過した場合には、その所定期間を示すカウント値を継続時間Tcとする。前記所定期間は、例えば、後述する基礎データ部304の測定時間情報3041に設定されたタイマの上限値である。前記タイマは、前記モニタ部302が前記要素プロファイル(CPUステータス情報3021、DVFSステータス情報3022、継続時間情報3023)を出力する毎にカウント値がリセットされる。これにより、前記タイマは、変化検出信号13が変化する毎又は前記所定期間が経過する毎に、計時を繰り返す。
【0059】
モニタ部302の具体的な動作について説明する。例えば、CPU10の動作周波数が第1周波数(f1)であるとき、CPU10の動作状態がアクティブ状態からスタンバイ状態に切り替わると、CPUステータス情報3021にはスタンバイ状態を示す情報が書き込まれ、DVFSステータス情報3022には第1周波数(f1)を示す情報が書き込まれる。また、前記動作状態の切り替わりをトリガとして、前記タイマが計時を開始する。その後、CPU10の動作状態がアクティブ状態に切り替わると、モニタ部303はそのときの前記タイマのカウント値を継続時間Tcとして継続時間情報3023に書き込むとともに、CPUステータス情報3021、DVFSステータス情報3022、及び継続時間情報3023を含む要素プロファイルを演算部303に出力する。その後、モニタ部303は、前記タイマをリセットするとともに計時を再開させ、CPUステータス情報3021にはアクティブ状態を示す情報を書き込む。また、前記タイマが計時を開始した後CPU10の動作状態が変化する前に前記所定時間が経過したら、モニタ部303は前記タイマのカウント値(又は、測定時間情報3041に設定されたタイマの上限値)を継続時間Tcとして継続時間情報3023に書き込むとともに、CPUステータス情報3021、DVFSステータス情報3022、及び継続時間情報3023を含む要素プロファイルを演算部303に出力する。その後、モニタ部303は、前記タイマをリセットするとともに計時を再開させる。以上の処理により、CPU10の動作状態が変化する毎又は所定期間が経過する毎に前記要素プロファイルが生成され、演算部303に出力される。
【0060】
演算部303は、CPU10で消費される実電力量と、前記想定動作時の想定電力量とを算出するための演算を行う。前記演算は、例えばDSP(Digital Signal Processor)等によるプログラム処理によって実現される。演算部303は、モニタ部302から前記要素プロファイルが与えられる毎に前記実電力量と前記想定電力量とを算出する。具体的には、演算部303は、前記要素プロファイルが与えられると、前記要素プロファイルに応じた動作状態及び周波数設定でのCPU10の消費電力を実電力量3031として算出するとともに、設定可能なクロック信号CLKの周波数(動作周波数)毎に想定電力量を算出し、電力差分生成部305に出力する。例えば、CPU10の動作周波数の設定として、第1周波数(f1)、第2周波数(f2)、及び第3周波数(f3)の3つの周波数設定が可能な場合には、第1周波数設定時の想定電力量3032、第2周波数設定時の想定電力量3033、第3周波数設定時の想定電力量3034を夫々算出する。前記実電力量及び前記想定電力量の詳細な算出方法については後述する。
【0061】
基礎データ部304には、DVFS管理モジュール30による電力量の算出を行う上で基準となる初期設定データが格納される。例えば、前記初期設定データは製造時等にデータ処理装置1内のROMに格納される。例えば、データ処理装置1に電源が投入され、リセット状態が解除されると、CPU10が前記ROMから前記初期設定データを読み出し、基礎データ部304に設定する。基礎データ部304は、例えば複数のレジスタから構成されるレジスタ群である。基礎データ部304には、初期設定データとして、例えば、測定時間情報3041、閾値情報3043、測定回数情報3042、単位電力量テーブル3044、及び処理時間比テーブル3045が格納される。
【0062】
測定時間情報3041は、前述したように、前記モニタ部303の前記タイマの上限値を定める情報である。閾値情報3043は、前述した閾値Tthの値を示す情報である。
【0063】
測定回数情報3042は、DVFS管理モジュール30がDVFS制御によるCPU10の電力状態をCPU10にフィードバックする頻度を決定する情報である。具体的には、DVFS管理モジュール30は、測定回数情報3042に設定された測定回数分の電力量の算出と累計が完了したら、CPU10に対して電力算出の完了を通知する。したがって、測定回数情報3042に設定される測定回数の値が小さいほどCPU10にフィードバックする頻度が上がる。
【0064】
単位電力量テーブル3044は、DVFS制御によるCPU10の周波数設定毎の単位時間あたりの消費電力量がCPU10の動作状態毎に格納されたルックアップテーブルである。当該デーブルの詳細は後述する。
【0065】
処理時間比テーブル3045は、実動作時の動作周波数でのCPU10のデータ処理能力と、想定動作時の動作周波数でのCPU10のデータ処理能力との比に応じた処理時間比の値が格納されるルックアップテーブルである。当該テーブルの詳細は後述する。
【0066】
電力差分生成部305は、与えられた複数の電力量のデータのうち最も小さい電力量を検出し、検出した電力量と前記複数の電力量との差分を表す差分電力量を、実動作時及び想定動作時の周波数設定毎に生成し、累計部306に出力する。具体的には、電力差分生成部305は、比較部3051と差分算出部3052とを有する。例えば、比較部3051は、演算部303から与えられた実電力量3031及び想定電力量3032〜3034のうち最も小さい電力量(最小電力量)を検出する。差分算出部3052は、前記最小電力量と実電力量3031との差分を表す実動作時の差分電力量3053と、前記最小電力量と想定電力量3032との差分を表す想定動作時(f1)の差分電力量3054と、前記最小電力量と想定電力量3033との差分を表す想定動作時(f2)の差分電力量3055と、前記最小電力量と想定電力量3034との差分を表す想定動作時(f3)の差分電力量3056と、を生成する。差分電力量3053〜3056を生成する処理は、演算部303から実電力量及び想定電力量が出力される毎(CPU10の動作状態が変化する毎又は所定期間が経過する毎)に行われる。
【0067】
更に、前記電力差分生成部305は、CPU10の動作状態が変化する毎又は所定期間が経過する毎に生成された差分電力量3053〜3056を累積加算することにより、実動作時の累積差分電力量の差分の情報3065と、想定動作時の累積差分電力量の差分の情報3066〜3068を生成し、累計部306に出力する。なお、累積差分電力量の差分の情報3065〜3068の詳細な生成方法については後述する。
【0068】
累計部306は、累計電力格納部3062、通知部3063、及びカウンタ3064を有する。累計電力格納部3062は、累積差分電力量の差分の情報3065〜3068を実動作時及び想定動作時の周波数設定毎に格納するための記憶領域を有する。
【0069】
カウンタ3064は、差分電力量3053〜3056を累積加算した回数をカウントし、カウント値を通知部3063に与える。前記通知部3063は、カウンタ3064のカウント値が基礎データ部304に測定回数情報3042として設定された回数の値と一致したら、CPU10に対して電力量の算出が完了したことを通知する。通知を受けたCPU10は、累計電力格納部3062にアクセスして算出された実電力量と想定電力量とを参照し、より低消費電力となる周波数設定を判別することで、現状のCPU10の動作周波数の設定が電力的に最適であるか否かを判断する。
【0070】
≪電力量の算出≫
前記実電力量と前記想定電力量の算出方法について詳細に説明する。
【0071】
(1)実電力量の算出方法
前記実電力量は、CPU10の実動作時の動作状態における単位時間あたりの消費電力量と、その動作状態の継続時間Tcとを乗算することにより算出される。演算部303は、先ず、モニタ部302から前記要素プロファイルを受け取ると、基礎データ部304にアクセスし、単位電力量テーブル3044を参照してCPUステータス情報3021及びDVFSステータス情報3022に対応する単位時間あたりの消費電力量を読み出す。
【0072】
図2は、単位電力量テーブル3044の一例を示す説明図である。同図に示されるように、単位電力量テーブル3044は、DVFS制御によって設定可能なCPU10の周波数毎の単位時間あたりの消費電力量がCPU10の動作状態毎に格納される。同図には、一例として、3つの周波数設定(f1〜f3)における3つの動作状態(アクティブ状態、スリープ状態、及びスタンバイ状態)毎の単位時間あたりの消費電力が示されている。例えば、図2に示されるように、実動作時のCPU10の動作状態がアクティブ状態であり、且つ動作周波数が第1周波数である場合には、演算部303はパラメータPA1を読み出す。また、実動作時のCPU10の動作状態がスリープ状態であり、且つ動作周波数が第2周波数である場合には、演算部303はパラメータPS2を読み出す。
【0073】
演算部303は、読み出した消費電力量のパラメータと継続時間情報3023に含まれる継続時間Tcとを乗算することで実電力量を算出する。すなわち、実電力量Prは、式(Pr=Pn × Tc)で表される。なお、Pnは単位時間あたりの電力量(例えば、1mW/s等)であり、図2に示されるPA1〜PA3、PS1〜PS3、及びPB1〜PB3のパラメータのうちいずれかである。継続時間Tcは、前述したように、変化検出信号13が変化してから次に変化するまでの時間、又は前記所定期間を示す時間の情報であり、前記要素プロファイルの継続時間情報3023に含まれる。例えば、実動作時のCPU10の動作状態が期間4Tのスタンバイ状態であり、且つ動作周波数が第3周波数である場合には、実電力量Pr=Pn × Tc=PB3 × 4Tとなる。
【0074】
(2)想定電力量の算出方法
前記想定電力量は、CPU10の想定動作時の動作状態における単位時間あたりの消費電力量と、その動作状態での換算時間Tvとを乗算することにより算出される。
【0075】
(i)アクティブ状態での想定電力量
はじめにCPUステータス情報3021がアクティブ状態である場合について説明する。
【0076】
モニタ部302から受け取ったCPUステータス情報3021がアクティブ状態を示す情報である場合、演算部303は、処理時間比テーブル3045を基に換算時間Tvを算出するとともに、差時間ΔTを算出する。
【0077】
図3に処理時間比テーブルの一例を示す。同図に示されるように、処理時間比テーブル3045には、CPU10の実動作時の動作周波数でのデータ処理能力に対する想定動作時の動作周波数でのデータ処理能力を表す処理時間比が周波数設定毎に格納される。例えば、第1周波数f1=f、第2周波数f2=2f、第3周波数f3=4fとし、実動作時にCPU10が第1周波数f1で所定のデータ量のデータ処理を実行したときの処理時間を“1”とする。この場合、図3に示されるように、想定動作時の周波数が第1周波数f1であれば、実動作時と同じデータ処理を実行したときの処理時間比は“r11(=1)”となる。一方、想定動作時の周波数が第2周波数f2であれば、実動作時と同じデータ処理を実行したときの処理時間比は“r12(=0.5)”となり、想定動作時の周波数が第3周波数f3であれば、実動作時と同じデータ処理を実行したときの処理時間比は“r13(=0.25)”となる。したがって、想定動作時のアクティブ状態での換算時間Tvは、式(Tv=Tc × rn)で表される。ここで、rnはr11〜r13、r21〜r23、及びr31〜r33のうちいずれかのパラメータである。例えば、実動作時のCPU10の状態が第1周波数設定(f1)、且つ期間4Tのアクティブ状態であり、想定動作時の周波数設定が第3周波数設定(f3)である場合、換算時間Tvは、Tv=Tc × r13=4T × 0.25=1Tとなる。
【0078】
演算部303は、単位電力量テーブル3044を参照して、想定した周波数設定と動作状態に対応する単位時間あたりの消費電力量のパラメータを読み出し、読み出したパラメータと算出した換算時間Tvとを乗算することで、想定電力量を算出する。すなわち、アクティブ状態での想定電力量Pfnは、式(Pfn=Pn × Tv)で表される。例えば、実動作時のCPU10の状態が第1周波数設定(f1)、且つ期間4Tのアクティブ状態であり、想定動作時の周波数設定が第3周波数設定(f3)である場合、想定電力量Pfn=PA3 × 1Tとなる。
【0079】
上述したように、想定動作時におけるアクティブ状態での処理時間(換算時間Tv)は周波数設定によって変動するため、その変動分は次の動作状態の継続時間に影響を与える。そこで、演算部303は、実動作時のアクティブ状態の継続時間Tcと、対応する想定動作時の動作状態の換算時間Tvとの差分を表す差時間ΔTを算出する。
【0080】
CPUステータス情報3021がアクティブ状態である場合、差時間ΔTは、例えば、実動作時のアクティブ状態の継続時間Tcと対応する想定動作時のアクティブ状態の換算時間Tvとを減算した値に、その時点で累積されている差時間(以下、累積差時間、とも称する。)T0を加算することで算出される。すなわち、アクティブ状態での差時間ΔTは、式(ΔT=T0+Tc−Tv)で表される。例えば、実動作時のCPU10の状態が第1周波数設定、且つ期間4Tのアクティブ状態であり、想定動作時の周波数設定が第3周波数設定、且つ累積差時間T0=2Tである場合、差時間ΔTは、ΔT=2T+4T−1T=5Tとなる。
【0081】
なお、前記差時間ΔTを算出する際、継続時間Tcから換算時間Tvを減算する方法に限らず、換算時間Tvから継続時間Tcを減算する方法でもよい。
【0082】
(ii)非アクティブ状態での想定電力量
次に、CPUステータス情報3021が非アクティブ状態(スリープ状態又はスタンバイ状態)である場合について説明する。CPUステータス情報3021が非アクティブ状態である場合、演算部303は、累積差時間T0と、実動作時の継続時間Tcに基づいて換算時間Tvを算出する。
【0083】
例えば、累積差時間T0と実動作時の継続時間Tcとを加算した値が“0”より小さいとき、演算部303は、換算時間Tv=0とし、差時間ΔTを式(ΔT=T0+Tc)で表す。一方、累積差時間T0と実動作時の継続時間Tcとを加算した値が“0”以上であるとき、演算部303は、換算時間Tvを式(Tv=T0+Tc)で表し、差時間ΔT=0とする。
【0084】
演算部303は、単位電力量テーブル3044を参照して、想定した周波数設定と動作状態に対応する単位時間あたりの消費電力量のパラメータを読み出し、読み出したパラメータと算出した換算時間Tvとを乗算することで非アクティブ状態での想定電力量を算出する。すなわち、非アクティブ状態での想定電力量Pfnは、式(Pfn=Pn × Tv)で算出される。
【0085】
次に、図4及び5を用いて前記実電力量と想定電力量の具体的な算出方法について説明する。
【0086】
(3)実電力量と想定電力量の具体例(図4)
図4は、CPU10の実動作時と想定動作時との対応関係を表す説明図である。同図の(A)には、CPU10の実動作時の動作状態の変化と各動作状態における継続時間Tcが示される。同図の(B)には、CPU10の動作周波数を第1周波数(f1)とした想定動作時の動作状態の変化と各動作状態の換算時間Tvが示される。同図の(C)には、CPU10の動作周波数を第2周波数(f2)とした想定動作時の動作状態の変化と各動作状態の換算時間Tvが示される。同図の(D)には、CPU10の動作周波数を第3周波数(f3)とした想定動作時の動作状態の変化と各動作状態の換算時間Tvが示される。なお、同図を含めた以下の説明では、f1=f、f2=2f、f3=4fと仮定し、スタンバイ状態となる待機時間の閾値Tthを5Tとする。
【0087】
(i)実電力量
同図(A)に示されるように、実動作時のCPU10の動作状態が、スタンバイ状態400、アクティブ状態401、スリープ状態402、アクティブ状態403の順に変化し、夫々の継続時間Tcが5T、4T、4T、4Tであるとする。また、スタンバイ状態400におけるCPU10の動作周波数が第3周波数(f3)であり、それ以外の動作状態401〜403におけるCPU10の動作周波数が第1周波数(f1)であるとする。このとき、スタンバイ状態400の実電力量Pr_0=PB3 × 5T、アクティブ状態401の実電力量Pr_1=PA1 × 4T、スリープ状態402の実電力量Pr_2=PS1 × 4T、アクティブ状態403の実電力量Pr_3=PA1 × 4T、となる。
【0088】
想定動作時(図4の(B)〜(D))の動作状態は実動作時の動作状態と同様に変化するが、想定動作時の夫々の動作状態が継続する時間は、想定した動作周波数によって異なる。同図(B)〜(D)の夫々における想定電力量は以下となる。
【0089】
(ii)周波数設定f1の想定電力量
図4(B)に示されるように、スタンバイ状態400に対応する期間410は、CPU10がデータ処理を実行しないスタンバイ状態の期間である。そのため、累積差時間T0=0であるとすると、累積差時間T0と実動作時のスタンバイ状態400の継続時間Tc(=5T)とを加算した値が5Tとなり、0以上であるため、換算時間Tv=T0+Tc=5Tとなる。このとき、差時間ΔTは0となり、想定電力量Pf1_0=PB1 × 5Tとなる。
【0090】
次にアクティブ状態401に対応する期間411は、CPU10がデータ処理を実行可能なアクティブ状態の期間であり、周波数設定は実動作時の周波数設定(f1)と一致している。そのため、換算時間Tv=Tc × r11=4T × 1=4Tとなる。このとき、差時間ΔT=0となり、想定電力量Pf1_1=PA1 × 4Tとなる。
【0091】
以下、期間412、413の換算時間Tvも同様に算出することができ、期間412の想定電力量Pf1_2=PS1 × 4T、期間413の想定電力量Pf1_3=PA1 × 4T、となり、差時間ΔTはいずれも0となる。
【0092】
(iii)周波数設定f2の想定電力量
図4(C)に示されるように、スタンバイ状態400に対応する期間420は、CPU10がデータ処理を実行しないスタンバイ状態の期間である。そのため、累積差時間T0が0であるとすると、累積差時間T0と実動作時のスタンバイ状態400の継続時間Tc(=5T)とを加算した値が5Tとなり、0以上であるため、換算時間Tv=T0+Tc=5Tとなる。このとき差時間ΔTは0となり、想定電力量Pf2_0=PB2 × 5Tとなる。
【0093】
アクティブ状態401に対応する期間421は、CPU10がデータ処理を実行可能なアクティブ状態の期間であり、周波数設定は周波数f2である。したがって、図3の処理時間比テーブル3045より、換算時間Tv=Tc × r12=4T × 0.5=2Tとなる。このとき、差時間ΔT=T0+Tc−Tv=0+4T−2T=2Tとなり、想定電力量Pf2_1=PA2 × 2Tとなる。
【0094】
スリープ状態402に対応する期間422は、CPU10がデータ処理を実行しない非アクティブ状態での期間である。ここで、スリープ状態402の継続時間Tcは4Tであるが、その前の期間421が実動作時よりも短縮されているため、短縮された分の時間を非アクティブ状態の期間として割り当てることが可能となる。すなわち、累積差時間T0と実動作時のスリープ状態402の継続時間Tc(=4T)とを加算した値が6Tとなり、0以上であるため、換算時間Tv=T0+Tc=6Tとなる。この場合、非アクティブ状態の換算時間Tv(=6T)が前記閾値Tth(=5T)以上の値であるため、期間422はスタンバイ状態の期間となる。すなわち、演算部303は、前記期間422をスタンバイ状態が6T続く期間として想定電力量を算出する。したがって、想定電力量Pf2_2=PB2 × 6Tとなる。また、このときの差時間ΔTは0となる。
【0095】
期間423の想定電力量も前記期間421と同様に算出することができ、期間423の想定電力量Pf2_3=PA2 × 2Tとなる。
【0096】
(iv)周波数設定f3の想定電力量
図4(D)に示されるように、先ず、スタンバイ状態400に対応する期間430は、CPU10がデータ処理を実行しないスタンバイ状態の期間である。そのため、累積差時間T0=0であるとすると、累積差時間T0と実動作時のスタンバイ状態400の継続時間Tc(=5T)とを加算した値が5Tとなり、0以上であるため、換算時間Tv=T0+Tc=5Tとなる。このときの差時間ΔTは0となり、想定電力量Pf3_0=PB3 × 5Tとなる。
【0097】
アクティブ状態401に対応する期間431は、CPU10がデータ処理を実行可能なアクティブ状態の期間であり、周波数設定は周波数f3である。そのため、処理時間比テーブル3045に従い、換算時間Tv=Tc × r13=4T × 0.25=1Tとなる。このとき、差時間ΔT=T0+Tc−Tv=0+4T−1T=3Tとなり、想定電力量Pf2_1=PA2 × 1Tとなる。
【0098】
スリープ状態402に対応する期間432は、CPU10がデータ処理を実行しない非アクティブ状態での期間である。ここで、スリープ状態402の継続時間Tcは4Tであるが、その前の期間431が実動作時よりも短縮されているため、短縮された分の時間を非アクティブ状態の期間として割り当てることが可能となる。すなわち、累積差時間T0(=3T)と実動作時のスリープ状態402の継続時間Tc(=4T)とを加算した値が7Tとなり、0以上であるため、換算時間Tv=T0+Tc=7Tとなる。この場合、非アクティブ状態の換算時間Tv(=7T)が前記閾値Tth(=5T)以上の値であるため、期間432はスタンバイ状態の期間となる。すなわち、演算部303は、前記期間432をスタンバイ状態が7T続く期間として想定電力量を算出する。したがって、想定電力量Pf3_2=PB3 × 7Tとなる。また、このときの差時間ΔTは0となる。
【0099】
期間433の想定電力量も前記期間431と同様に算出することができ、期間433の想定電力量Pf3_3=PA3 × 1Tとなる。
【0100】
(4)実電力量と想定電力量の具体例(図5)
図5は、CPU10の実動作時と想定動作時との対応関係を表す別の説明図である。同図の(A)には、CPU10の実動作時の動作状態の変化と各動作状態の換算時間Tcが示される。同図の(B)には、CPU10の動作周波数を第1周波数(f1)とした想定動作時の動作状態の変化と各動作状態の換算時間Tvが示される。同図の(C)には、CPU10の動作周波数を第2周波数(f2)とした想定動作時の動作状態の変化と各動作状態の換算時間Tvが示される。同図の(D)には、CPU10の動作周波数を第3周波数(f3)とした想定動作時の動作状態の変化と各動作状態における継続時間Tvが示される。
【0101】
(i)実電力量
先ず、図5(A)に示されるように、実動作時のCPU10の動作状態が、スリープ状態500、アクティブ状態501、スタインバイ状態502、アクティブ状態503の順に変化し、夫々の継続時間が4T、2T、6T、2Tであるとする。また、スリープ状態500におけるCPU10の動作周波数は第1周波数(f1)であり、それ以外の動作状態501〜503におけるCPU10の動作周波数は第3周波数(f3)であるとする。このとき、スタンバイ状態500の実電力量Pr_0=PB1 × 4T、アクティブ状態501の実電力量Pr_1=PA3 × 2T、スリープ状態502の実電力量Pr_2=PS3 × 6T、アクティブ状態503の実電力量Pr_3=PA3 × 2T、となる。
【0102】
同図(B)〜(D)の夫々における想定電力量は以下となる。
【0103】
(ii)周波数設定f1の想定電力量
図5(B)に示されるように、実動作時のスリープ状態500に対応する期間510は、CPU10がデータ処理を実行しないスリープ状態の期間である。したがって、累積差時間T0が0であるとすると、累積差時間T0と実動作時のスリープ状態500の継続時間Tc(=4T)とを加算した値が4Tとなり、0以上であるため、換算時間Tv=T0+Tc=4Tとなる。このときの差時間ΔTは0となり、想定電力量Pf1_0=PS1 × 4Tとなる。
【0104】
アクティブ状態501に対応する期間511は、CPU10がデータ処理を実行可能なアクティブ状態の期間であり、周波数設定は周波数f1である。したがって、図3の処理時間比テーブル3045より、換算時間Tv=Tc × r31=2T × 4=8Tとなる。このとき、差時間ΔT=T0+Tc−Tv=0+2T−8T=−6Tとなり、想定電力量Pf1_1=PA1 × 8Tとなる。
【0105】
スタンバイ状態502に対応する想定動作時の期間512は、CPU10がデータ処理を実行しない非アクティブ状態での期間である。このとき、スタンバイ状態502の継続時間Tcは6Tであるが、その前の期間511が実動作時よりも延長されるため、延長した分の時間と継続時間Tcが相殺され、非アクティブ状態の期間は割り当てられない。すなわち、累積差時間T0(=−6T)と実動作時のスリープ状態502の継続時間Tc(=6T)とを加算した値が0となるため、換算時間Tv=T0+Tc=0となる。その結果、アクティブ状態の期間511とその後のアクティブ状態の期間513が連続することになる。演算部303は、前記期間512をスタンバイ状態が0T続く期間として想定電力量を算出する。すなわち、想定電力量Pf1_2=0となる。また、このときの差時間ΔTは0となる。
【0106】
期間513の想定電力量も前記期間511と同様に算出することができ、期間513の想定電力量Pf1_3=PA1 × 8Tとなる。
【0107】
(iii)周波数設定f2の想定電力量
図5(C)に示されるように、スタンバイ状態500に対応する期間520は、CPU10がデータ処理を実行しないスリープ状態の期間である。したがって、累積差時間T0=0であるとすると、累積差時間T0と実動作時のスリープ状態500の継続時間Tc(=4T)とを加算した値が4Tとなり、0以上であるため、換算時間Tv=T0+Tc=4Tとなる。このときの差時間ΔTは0となり、想定電力量Pf2_0=PS2 × 4Tとなる。
【0108】
アクティブ状態501に対応する期間521は、CPU10がデータ処理を実行可能なアクティブ状態の期間であり、周波数設定は周波数f2である。したがって、図3の処理時間比テーブル3045により、換算時間Tv=Tc × r32=2T × 2=4Tとなる。このとき、差時間ΔT=T0+Tc−Tv=0+2T−4T=−2Tとなり、想定電力量Pf2_1=PA2 × 4Tとなる。
【0109】
スタンバイ状態502に対応する期間522は、CPU10がデータ処理を実行しない非アクティブ状態での期間である。このとき、スタンバイ状態502の継続時間Tcは6Tであるが、その前の期間511が実動作時よりも延長されるため、延長した分だけ期間522の継続時間が短縮される。すなわち、累積差時間T0(=−2T)と実動作時のスリープ状態502の継続時間Tc(=6T)とを加算した値が4Tとなり、0以上であるため、換算時間Tv=T0+Tc=4Tとなる。この場合、非アクティブ状態の換算時間Tv(=4T)が前記閾値Tth(=5T)よりも小さい値であるため、期間522はスリープ状態の期間となる。すなわち、演算部303は、前記期間522をスリープ状態が4T続く期間として想定電力量を算出する。したがって、想定電力量Pf2_2=PS2 × 4Tとなる。また、このときの差時間ΔTは0となる。
【0110】
期間523の想定電力量も前記期間521と同様に算出することができ、期間523の想定電力量Pf2_3=PA2 × 4Tとなる。
【0111】
(iv)周波数設定f3の想定電力量
図5(D)に示されるように、スタンバイ状態500に対応する期間530は、CPU10がデータ処理を実行しないスタンバイ状態の期間である。したがって、累積差時間T0=0であるとすると、累積差時間T0と実動作時のスタンバイ状態500の継続時間Tc(=5T)とを加算した値が5Tとなり、0以上であるため、換算時間Tv=T0+Tc=5Tとなる。このとき差時間ΔTは0となり、想定電力量Pf3_0=PB3 × 5Tとなる。
【0112】
次にアクティブ状態501に対応する期間531は、CPU10がデータ処理を実行可能なアクティブ状態の期間であり、周波数設定は実動作時の周波数設定(f3)と一致している。したがって、図3の処理時間比テーブル3045より、換算時間Tv=Tc × r33=2T × 1=2Tとなる。このとき、差時間ΔT=2T−2T=0となり、想定電力量Pf3_1=PA3 × 2Tとなる。
【0113】
以下、期間532、533の換算時間Tvも同様に算出することができ、期間532の想定電力量Pf3_2=PS3 × 6T、期間533の想定電力量Pf3_3=PA3 × 2T、となり、差時間ΔTはいずれも0となる。
【0114】
上記のように算出された実電力量と仮想電力量は、CPU10の動作状態が変化する毎又は所定期間が経過する毎(要素プロファイルが生成される毎)に算出され、電力差分生成部305に与えられる。例えば、図4の場合、先ず、スタンバイ状態400に対応する要素プロファイルが演算部303に与えられると、実電力量Pr_0、想定電力量Pf1_0、Pf2_0、及びPf3_0の第1のデータ群が生成され、前記第1のデータ群が電力差分生成部305に出力される。その後、アクティブ状態401に対応する要素プロファイルが演算部303に与えられると、実電力量Pr_1、想定電力量Pf1_1、Pf2_1、及びPf3_1の第2のデータ群が生成され、前記第2のデータ群が電力差分生成部305に与えられる。このように、要素プロファイル毎に電力量のデータ群が生成され、順次、電力差分生成部305に出力される。
【0115】
≪累積差分電力量の生成方法≫
累積差分電力量の生成方法について説明する。
【0116】
ここでは、一例として、前述の図4で生成された各電力量が電力差分生成部305に入力される場合を考える。なお、累計電力格納部3062の初期値は零であるとする。
【0117】
先ず、1回目の電力量のデータ群として、実電力量Pr_0、想定電力量Pf1_0、Pf2_0、及びPf3_0が電力差分生成部305に与えられると、比較部3051が、実電力量Pr_0、想定電力量Pf1_0、Pf2_0、及びPf3_0のうち、最も小さい電力量を検出する。差分算出部3052は、前記検出された最も小さい電力量と、実電力量Pr_0、想定電力量Pf1_0、Pf2_0、及びPf3_0の4つの電力量とに基づいて、差分電力量を生成する。例えば、想定電力量Pf1_0が最も小さい電力量である場合には、ΔPr_0(=Pr_0−Pf1_0)、ΔPf1_0(=Pf1_0−Pf1_0)、ΔPf2_0(=Pf2_0−Pf1_0)、及びΔPf3_0(=Pf3_0−Pf1_0)の4つの差分電力量を算出する。算出された差分電力量ΔPr_0、ΔPf1_0、ΔPf2_0、ΔPf3_0は、累計部306に与えられ、累計電力格納部3062に格納される。
【0118】
次に、2回目の電力量のデータ群として、実電力量Pr_1、想定電力量Pf1_1、Pf2_1、及びPf3_1が電力差分生成部305に与えられると、前述と同様に、比較部3051は最も小さい電力量を検出し、差分算出部3052が差分電力量を生成する。例えば、想定電力量Pr_1が最も小さい電力量である場合には、ΔPr_1(=Pr_1−Pr_1)、ΔPf1_1(=Pf1_1−Pr_1)、ΔPf2_1(=Pf2_1−Pr_1)、及びΔPf3_1(=Pf3_1−Pr_1)の4つの差分電力量を算出する。そして、電力差分生成部305は、既に累計電力格納部3062に格納されている差分電力量(ΔPr_0、ΔPf1_0、ΔPf2_0、及びΔPf3_0)と今回算出された差分電力量(ΔPr_1、ΔPf1_1、ΔPf2_1、及びΔPf3_1)とを実動作時及び想定動作時の周波数設定毎に加算し、累計電力格納部3062に格納する。例えば、差分算出部3052は、(ΔPr_0+ΔPr_1)と、(ΔPf1_0+Pf1_1)と、(ΔPf2_0−ΔPf2_1)と、(ΔPf3_0−ΔPf3_1)とを算出し、累計電力格納部3062の累積差分電力量の値を更新する。更新された累積差分電力量は、再度、比較部3051に与えられ、差分算出部3052が累積差分電力量の差分を生成する。例えば、4つの累積差分電力量のうち(ΔPf1_0+Pf1_1)が最も小さい電力量である場合には、差分生成部3052は、{(ΔPr_0+ΔPr_1)―(ΔPf1_0+Pf1_1)}、{(ΔPf1_0+ΔPf1_1)―(ΔPf1_0+Pf1_1)}、{(ΔPf2_0+ΔPf2_1)―(ΔPf1_0+Pf1_1)}、及び{(ΔPf3_0+ΔPf3_1)―(ΔPf1_0+Pf1_1)}の4つの累積差分電力量の差分を算出する。ここで、実動作時の累積差分電力量の差分3065は{(ΔPr_0+ΔPr_1)―(ΔPf1_0+Pf1_1)}であり、想定動作時(f1)の累積差分電力量の差分3066は、{(ΔPf1_0+ΔPf1_1)―(ΔPf1_0+Pf1_1)}であり、想定動作時(f2)の累積差分電力量の差分3067は{(ΔPf2_0+ΔPf2_1)―(ΔPf1_0+Pf1_1)}であり、想定動作時(f3)の累積差分電力量の差分3067は{(ΔPf3_0+ΔPf3_1)―(ΔPf1_0+Pf1_1)}である。これらの累積差分電力量の差分の情報は累計電力格納部3062に格納される。
【0119】
以上のように、電力差分生成部305が差分電力の生成と累計を繰り返し実行することで、累計電力格納部3062には、CPU10の動作状態が変化する毎又は所定期間が経過する毎に、実動作時及び想定動作時の周波数毎の累積差分電力量の差分の情報3065〜3068が格納される。格納される累積差分電力量の差分の情報は、上記のように最も小さい電力量に対する電力量の差分を累積し、更にその差分をとった情報であるため、単に電力量を測定回数分だけ累積する場合に比べてデータ量を小さくすることができる。これにより、累計電力格納部3062の記憶領域の容量を小さくすることができるから、データ処理装置1のチップ面積の低減に資する。
【0120】
≪実電力量と想定電力量の算出に係る処理フロー≫
図6は、DVFS管理モジュール30による実電力量と想定電力量の算出処理の流れの一例を示すフロー図である。
【0121】
データ処理装置1に電源が投入され、リセットが解除されると、実電力量と想定電力量の算出に係る処理が開始される。先ず、CPU10は、例えばROM等に格納された各種初期設定データを基礎データ部304に設定する(S101)。DVFS管理モジュール30は、CPU10のスリープ状態信号Vspやスタンバイ状態信号Vsb等を監視し、CPU10の動作状態の変化、又は所定期間が経過するまで待機する(S102)。DVFS管理モジュール30のモニタ部302は、CPU10の動作状態の変化又は所定期間の経過を検知すると、要素プロファイルを生成し、演算部303に出力する(S103)。その後、モニタ部302は、内部のタイマをリセットし、CPU10の動作状態の変化又は所定期間の経過を監視する(S104)。
【0122】
前記要素プロファイルを受けった演算部303は、実電力量の算出を開始する(S105)。演算部303は、単位電力量テーブル3044を参照し、受け取った前記要素プロファイルのCPUステータス情報3021及びDVFSステータス情報3022に対応する単位電力量のパラメータを取得する(S106)。そして、演算部303は、受け取った前記要素プロファイルの継続時間情報3023の継続時間Tcと、単位電力量のパラメータに基づいて実電力量を算出する(S107)。
【0123】
次に、演算部303は、DVFS制御において設定可能な周波数f1、f2、・・・fn−1、fn(nは自然数)のうち、何れか1つの周波数設定での想定電力量の算出を開始する(S108)。演算部303は先ず、想定した周波数設定(例えばf1)での換算時間Tvを算出する(S109)。換算時間Tvの算出に係る処理フローについては、後で詳述する。次に演算部303は、想定した周波数設定(f1)での想定電力量を算出する(S110)。その後、ステップ108〜ステップ110までの処理を、想定した周波数設定f1〜fn毎に繰り返して実行し、各想定動作時の想定電力量を算出する。なお、実電力量と想定電力量の算出手順は特に制限されず、例えば、各想定動作時の想定電力量を算出するステップ108〜ステップ110を実行してから、実電力量を算出するステップ105〜ステップ107を実行する手順としてもよい。
【0124】
実電力量と想定電力量が算出されると、電力差分生成部305は、算出した実電力量と想定電力量のうち、最も小さい電力量を検出する(S111)。電力差分生成部305と累計部306は、前述した方法により、実動作時と想定動作時の周波数設定毎に累積差分電力量の差分の情報を生成し、累計電力格納部3062に格納する(S112)。その後、累積部306は、カウンタ3064をインクリメントする(S113)。通知部3063は、カウンタ3064のカウンタ値と測定回数情報3042の設定値とを比較する(S114)。比較の結果、カウンタ値が設定値よりも小さい場合には、ステップ102に移行し、次のCPU10の動作状態の変化、又は所定期間が経過を待って、実電力量及び想定電力量の算出を再度行う(S102〜S113)。一方、カウンタ値が設定値以上である場合には、通知部3063が、実電力量と想定電力量の算出が完了したことをCPU10に対して通知する(S115)。通知を受けたCPU10は、累計電力格納部3062にアクセスして算出された実電力量と想定電力量の情報とを参照し、より低消費電力となる周波数設定を判別し、必要に応じて周波数設定を変更する。
【0125】
次に、前述のステップ109の換算時間の算出処理について、図7を用いて詳細に説明する。
【0126】
図7は、換算時間の算出処理の流れの一例を示す説明図である。
【0127】
先ず、図6のステップ109において換算時間Tvの算出が開始されると、演算部303は、取得した要素プロファイルのCPUステータス情報3021を参照し、実動作時のCPU10の動作状態がアクティブ状態であるか否かを判別する(S201)。動作状態がアクティブ状態である場合、演算部303は、処理時間比テーブル3045を参照し、実動作時の周波数設定と想定している周波数設定とに対応する処理時間比のパラメータを取得する(S202)。演算部303は、式(Tv=Tc × rn)により、換算時間Tvを算出する(S203)。続いて、演算部303は、式(ΔT=T0 + Tc − Tv)により、差時間ΔTを算出する(S204)。
【0128】
ステップ201において、動作状態がアクティブ状態でない場合、演算部303は、実動作時の継続時間Tcと累積差時間T0とを加算した値が0以上であるか否かを判別する(S205)。前記加算した値が0より小さい場合には、演算部303は、式(ΔT=T0 + Tc)により、差時間ΔTを算出する(S206)。続いて、演算部303は、換算時間Tv=0とする(S207)。すなわち、想定動作時の非アクティブ状態の期間が消滅したものとする。
【0129】
一方、ステップ205において、前記加算した値が0以上である場合には、演算部303は、式(Tv=Tc × rn)により、換算時間Tvを算出する(S208)。続いて演算部303は、差時間ΔT=0とする(S209)。次に、演算部303は、基礎データ部304から閾値情報3043(前記閾値Tth)を読み出す(S210)。演算部303は、読み出した閾値Tthとステップ208で算出した換算時間Tvを比較する(S211)。比較の結果、換算時間Tvが閾値Tth以上である場合には、演算部303は、想定動作時のCPU10の動作状態をスタンバイ状態と決定する(S212)。そうでない場合には、演算部303は、想定動作時のCPU10の動作状態をスリープ状態と決定する(S213)。
【0130】
以上のステップ204、ステップ212、及びステップ213が完了すると、演算部303は、単位電力量テーブル3044を参照し、想定した周波数設定と想定した動作状態とに対応する単位電力量のパラメータを取得する(S212)。その後は、前述したステップ110に移行し、想定動作時の想定電力量の算出が行われる。
【0131】
≪CPU10に対する実電力量と想定電力量のフィードバックの効果≫
前述したように、実電力量と想定電力量の算出完了の通知を受けたCPU10は、累計電力格納部3062にアクセスして算出された実電力量と想定電力量とを参照し、より低消費電力となる周波数設定を判別することで、必要に応じてCPU10の動作周波数の設定を変更する。
【0132】
図8は、本実施の形態に係るデータ処理装置1の動作タイミングの一例を示す説明図である。同図には、一例として、DVFS制御により周波数の設定が低速設定(低周波数設定)と高速設定(高周波数設定)との間で切り替え可能であるとし、DVFS管理モジュール30による実電力量と想定電力量の測定回数(累積回数)が4回である場合が示されている。また、同図の動作状態を示す波形において、ハイレベルである期間はCPU10がデータ処理を実行している期間を示し、ローレベルの期間はCPU10がデータ処理を行っていない期間を示す。
【0133】
図8に示されるように、データ処理装置1は、スタンバイ状態信号Vsb及びスリープ状態信号Vspが変化する毎に実電力量と想定電力量を算出し、当該電力量の算出が4回完了する毎にCPU10に電力量の算出の完了を通知することで電力量のフィードバックを行う。以下、電力量の完了を通知するタイミングをフィードバックタイミングと称する。先ず、タイミングt0において、CPU10のデータ処理に係る負荷の状態が高負荷状態から低負荷状態に変化すると、CPU10はタイミングt1においてクロック信号の周波数を高速設定から低速設定に切り替えてデータ処理を行う。その後、フィードバックタイミングtf2において、DVFS管理モジュール30から4回分の電力量の算出が完了したことの通知を受けたCPU10は、累計電力格納部3062にアクセスして最も低消費電力となる周波数設定を判別し、その後の負荷状態を考慮した上で周波数設定を変更するか否か判断する。同図では、CPU10が現状の低速設定よりも高速設定の方が低消費電力となると判断し、タイミングt2において周波数設定を高速設定に変更する場合が一例として示されている。この場合、データ処理が低速設定の場合よりも短い時間で完了するため、1つのデータ処理から次のデータ処理までの待機時間が長くなり、スタンバイ状態に移行することが可能となる。同図では、タイミングt3において、CPU10はスタンバイ状態に移行し、スタンバイ状態信号Vsbがアサートされる場合が示されている。
【0134】
その後、フィードバックタイミングtf3において、DVFS管理モジュール30から通知を受けたCPU10は、再度、累計電力格納部3062にアクセスして最も低消費電力となる周波数設定を判別し、周波数設定を変更するか否か判断する。同図では、CPU10が現状の高速設定の方が低消費電力となると判断し、引き続き高速設定でCPU10が動作する場合が一例として示されている。その後、負荷状態が高負荷状態に変化してタイミングt4でデータ処理が開始されると、タイミングt5でそのデータ処理が完了し、スタンバイ状態に移行する。
【0135】
ここで、本実施の形態に係るデータ処理装置1の比較例として、実電力量と想定電力量のフィードバックを行わずにDVFS制御を行うデータ処理装置の動作タイミングの一例を図9に示す。
【0136】
同図に示されるように、タイミングt0においてCPUのデータ処理に係る負荷の状態が高負荷状態から低負荷状態に変化すると、CPUはタイミングt1において、クロック信号の周波数を高速設定から低速設定に切り替えてデータ処理を行う。比較例に係るデータ処理装置のCPUは、実電力量と想定電力量に基づくフィードバック制御を行わないため、負荷状態が変化するまで周波数設定を変更しない。その結果、次に負荷状態が変化するタイミングt4まで、CPUは低速設定で動作する。この場合、データ処理に要する時間が高速設定の場合よりも長くなるため、1つのデータ処理と次のデータ処理との間の待機時間が短くなり、CPUはスタンバイ状態に移行することができない。そのため、CPUではアクティブ状態とスリープ状態との間で動作状態が交互に切り替わることになる。その後、タイミングt4でデータ処理に係る負荷が低負荷状態から高負荷状態に変化するが、CPUはすぐに高速設定に切り替わることができず、低速設定のままデータ処理を行う。そして、データ処理が完了する直前のタイミングt6で高速設定に切り替わり、そのデータ処理が完了すると、CPUはスリープ状態に移行する。
【0137】
図10は、データ処理装置1と比較例に係るデータ処理装置の電力特性を示す説明図である。同図において、実線で示される特性501は図8に示した本実施の形態に係るデータ処理装置1の消費電力量を示し、破線で示される特性502は図9に示した比較例のデータ処理装置1の消費電力量を示す。同図に示されるタイミングt0〜t5は、図8及び図9のタイミングt0〜t5に対応される。
【0138】
同図に示されるように、タイミングt2までは、どちらのデータ処理装置も同様にDVFS制御が行われるため、同一の消費電力となる。比較例に係るデータ処理装置は、その後も低速設定で動作し、スリープ状態とアクティブ状態を繰り返すため消費電力は緩やかに増加する。それに対し、本実施の形態に係るデータ処理装置1は、タイミングt2において高速設定に切り替わる。これにより、1つのデータ処理と次のデータ処理との間の待機時間が長くなるため、タイミングt3においてCPU10はスタンバイ状態に移行でき、消費電力が抑えられる。その後、タイミングt4において、データ処理に係る負荷の状態が低負荷状態から高負荷状態に変化すると、データ処理装置1に係るCPU10は高速設定であるためタイミングt5においてデータ処理が完了し、その後は再びスタンバイ状態となる。この結果、消費電力の増加が抑えられる。一方、比較例に係るデータ処理装置では、タイミングt4でCPUの負荷状態が低負荷状態から高負荷状態に変化した後も、すぐには高速設定には切り替わることができず、CPUは低速設定のままタイミングt6までデータ処理を行う。その間、消費電力は抑えられるがデータ処理に要する時間が長くなる。その後、データ処理が完了する直前のタイミングt6で高速設定に切り替わり、消費電力が増加する。データ処理完了後も、CPUはスタンバイ状態ではなくスリープ状態に移行するため、消費電力が緩やかに増加する。
【0139】
以上のように、高速設定でデータ処理を短時間で終了し、その後スタンバイ状態で待機したデータ処理装置1の方が、比較例に係るデータ処理装置よりも低消費電力になる場合がある。
【0140】
以上、本実施の形態に係るデータ処理装置1によれば、CPU10のデータ処理に係る負荷の状態だけでなく、前記実電力量と前記想定電力量も演算するから、現状のCPU10の動作周波数の設定が電力的に最適であるか否かを判別することができる。これにより、データ処理装置1は、より低消費電力となる周波数設定に変更することが可能となり、従来のDVFS制御のみを行うデータ処理装置に比べて、消費電力の更なる低減を図ることができる。
【0141】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【0142】
例えば、演算部303がDSPによって構成される場合を示したが、実電力量と想定電力量を算出することができれば、専用のロジック回路で構成することも可能である。また、図8及び図10説明では、測定回数を4回とし、4回の電力量の算出が完了する毎にCPU10に通知する場合を一例として示したが、これに限られず、必要に応じて測定回数を増やしてもよいし、減らしてもよい。また、CPU10のデータ処理の状態に応じて測定回数を変更してもよい。例えば、CPU10によるデータ処理が一定間隔で継続的に行われるような状況では周波数設定を変更する必要性が低いので、測定回数を増やすことで電力量のフィードバックの頻度を低くし、DVFS制御によるCPU10の負荷を低減させる。その後、上記の状況から脱したら、測定回数を減らすことで電力量のフィードバックの頻度を高くし、CPU10の電力状態に応じた周波数設定の変更をし易くする。
【0143】
また、累計電力格納部3062に格納される情報は、CPU10が低消費電力となる周波数設定を判別することができる情報であればよく、前記累積差分電力量の差分の情報に限られない。例えば、累計電力格納部3062の記憶領域の容量の増大が許容できるのであれば、差分算出部3052によって差分を算出せずに、実電力量3031及び想定電力量3032〜3034を測定回数分だけ累積加算した情報を、実動作時及び想定動作時の周波数設定毎に格納してもよい。また、例えば、差分算出部3052によって算出された差分電力量3053〜3056を、実動作時及び想定動作時の周波数設定毎に測定回数分だけ累積加算し、累積加算した実動作時の差分電力量と、想定動作時の周波数設定毎の累積加算した差分電力量とを累計電力格納部3062に格納する。これによれば、実電力量3031及び想定電力量3032〜3034を単に累積加算して格納する場合に比べてデータ量を小さくすることができるから、累計電力格納部3062の記憶領域の容量を小さくすることができる。また、前述の累積差分電力量の差分を算出する方法に比べて処理が容易となる。
【符号の説明】
【0144】
100 データ処理システム
1 データ処理装置
2 電源IC
3 外部メモリ
4 水晶発振器
10 CPU
20 クロック信号生成部(CPG)
11、12 制御信号
VDD 電源電圧
CLK クロック信号
30 DVFS管理モジュール
301 検出部
3011 スリープ状態変化検出部
3012 スタンバイ状態変化検出部
3013 クロック信号変化検出部
Vsp スリープ状態信号
Vsb スタンバイ状態信号
Vsc クロック状態信号
13 変化検出信号
302 モニタ部
3021 CPUステータス情報
3022 DVFSステータス情報
3023 継続時間情報
303 演算部
3031 実電力量
3032〜3034 想定電力量
3035〜3037 差時間
304 基礎データ部
3041 測定時間情報
3042 測定回数情報
3043 閾値情報
3044 単位電力量テーブル
3045 処理時間比テーブル
305 電力差分生成部
3051 比較部
3052 差分算出部
3053〜3056 差分電力量
306 累計部
3062 累計電力格納部
3063 通知部
3064 カウンタ
3065〜3068 累積差分電力量の差分
400〜403、500〜503 実動作時の動作状態の期間
410〜413、510〜513 想定動作時(周波数f1)の動作状態の期間
420〜423、520〜523 想定動作時(周波数f2)の動作状態の期間
430〜433、530〜533 想定動作時(周波数f3)の動作状態の期間
t0〜t5 タイミング
tf1〜tf3 フィードバックタイミング
501 データ処理装置1の電力特性
502 比較例に係るデータ処理装置の電力特性

【特許請求の範囲】
【請求項1】
クロック信号に同期してデータ処理を実行するとともに、前記データ処理に係る負荷の状態に基づいて前記クロック信号の周波数を選択制御するデータ処理制御部と、
前記データ処理制御部の実動作時に前記データ処理制御部で消費される所定期間の実電力量を演算するとともに、仮定した周波数での前記データ処理制御部による動作を想定した想定動作時の前記所定期間における想定電力量を演算する電力算出部と、を有し、
前記データ処理制御部は、前記実電力量と前記想定電力量のうち低消費電力となる周波数を考慮して、前記負荷の状態に対応するクロック信号の周波数を選択制御する、データ処理装置。
【請求項2】
前記データ処理制御部の動作状態は、データ処理が実行可能なアクティブ状態と、データ処理が実行不能な非アクティブ状態とを含み、
前記非アクティブ状態は、前記データ処理制御部に対するクロック信号の供給が停止している第1低消費電力状態と、前記データ処理制御部に対する前記クロック信号及び電源電圧の供給が停止している第2低消費電力状態とを含み、
前記電力算出部は、前記実動作時と前記想定動作時における前記アクティブ状態の継続時間と、前記第1低消費電力状態の継続時間と、前記第2低消費電力状態の継続時間とを把握し、夫々の前記継続時間と夫々の前記動作状態における単位時間当たりの消費電力量とに基づいて、前記実電力量と前記想定電力量とを算出する、請求項1記載のデータ処理装置。
【請求項3】
前記電力算出部は、前記所定期間の前記実電力量及び前記想定電力量の演算が完了する毎に、前記演算が完了したことを前記データ処理制御部に対して通知する、請求項1記載のデータ処理装置。
【請求項4】
前記電力算出部は、一定期間毎又は前記データ処理制御部の前記動作状態の変化毎に前記データ処理制御部で消費される実電力量を算出し、算出した前記実電力量を所定回数分だけ累積することで前記所定期間での前記実電力量を算出するとともに、
前記実電力量に係る演算毎に前記想定電力量を算出し、算出した前記想定電力量を前記所定回数分だけ累積することで前記所定期間での前記仮想電力量を算出する、請求項2記載のデータ処理装置。
【請求項5】
前記所定回数のうち1回分の実電力量は、前記データ処理制御部の前記動作状態における単位時間あたりの消費電力量と、その1回分における前記データ処理制御部の動作状態の継続時間を示す第1継続時間と、を乗算することで算出される、請求項4記載のデータ処理装置。
【請求項6】
前記所定回数のうち1回分の想定電力量は、前記仮定した周波数での前記データ処理制御部の前記動作状態における単位時間あたりの消費電力量と、その1回分における前記想定動作時の前記動作状態の継続時間を示す第2継続時間と、を乗算することで算出される、請求項5記載のデータ処理装置。
【請求項7】
前記電力算出部は、前記想定動作時の動作状態が前記アクティブ状態である場合には、対応する前記実動作時の前記第1継続時間を、前記想定動作時の周波数での前記データ処理制御部のデータ処理能力に応じて換算し、換算した時間を前記第2継続時間とする、請求項6記載のデータ処理装置。
【請求項8】
前記電力換算部は、前記想定動作時の前記データ処理制御部の動作状態が前記アクティブ状態である場合には、算出した前記第2継続時間に対する前記第1継続時間の差分を示す差時間を算出して累積し、前記想定動作時の前記データ処理制御部の動作状態が前記非アクティブ状態である場合には、前記第1継続時間と前記累積した差時間とを加算して算出した時間に基づいて前記第2継続時間を決定する、請求項7記載のデータ処理装置。
【請求項9】
前記電力算出部は、前記想定動作時の前記データ処理制御部の動作状態が前記非アクティブ状態である場合において、前記第2継続時間が所定の閾値より大きいときは、前記想定動作時の前記データ処理制御部の動作状態が前記第2低消費電力状態であると仮定し、前記所定の閾値より小さいときは、前記想定動作時の前記データ処理制御部の動作状態が前記第1低消費電力状態であると仮定して、前記想定電力を算出する、請求項8記載のデータ処理装置。
【請求項10】
前記電力算出部は、前記算出した前記所定期間毎の前記実電力量に基づく第1電力情報と、前記算出した前記所定期間毎の前記想定電力量に基づく第2電力情報と、を格納するための記憶領域を有し、
前記記憶領域は、前記データ処理制御部によってアクセス可能とされる、請求項9記載のデータ処理装置。
【請求項11】
前記電力算出部は、前記実電力量と前記想定電力量のうち最も小さい電力量を選択し、選択した電力量と前記実電力量との差分を示す電力量を前記所定回数だけ累積加算して前記第1電力情報として前記記憶領域に格納するとともに、前記選択した電力量と前記想定電力量との差分を示す電力量を前記所定回数だけ累積加算して前記第2電力情報として前記記憶領域に格納する、請求項10記載のデータ処理装置。
【請求項12】
前記電力算出部は、前記一定期間毎又は前記データ処理制御部の前記動作状態の変化毎に、前記実電力量と前記想定電力量のうち最も小さい電力量を選択し、選択した電力量と前記実電力量との差分を示す第1差分電力量を算出するとともに、前記選択した電力量と前記想定電力量との差分を示す第2差分電力量とを算出し、
前回算出した前記第1差分電力量と今回算出した前記第1差分電力量とを加算して、前記実電力量に係る累積差分電力量を算出するとともに、前回に算出した前記第2差分電力量と今回算出した第2差分電力量を加算して、前記想定電力量に係る累積差分電力量を算出し、
更に前記電力算出部は、前記実電力量に係る累積差分電力量と前記想定電力量に係る累積差分電力量のうち最も小さい電力量を選択し、当該選択した電力量と前記実電力量に係る累積差分電力量との差分を示す電力量を前記第1電力情報として前記記憶領域に格納し、当該選択した電力量と前記想定電力量に係る累積差分電力量との差分を示す電力量を前記第2電力情報として前記記憶領域に格納する、請求項10記載のデータ処理装置。
【請求項13】
前記電力算出部は、前記データ処理制御部の前記動作状態に応じた単位時間あたりの電力量が前記仮定することが可能な周波数毎に対応されて格納される第1テーブルと、
前記実電力量に係る周波数での前記データ処理制御部によるデータ処理能力と、前記仮定した周波数での前記データ処理制御部によるデータ処理能力との比を示す情報が前記仮定した周波数毎に格納される第2テーブルと、を更に有し、
前記電力算出部は、前記第1テーブルと前記第2テーブルの値に基づいて、前記実電力量と前記想定電力量の算出を行う、請求項9記載のデータ処理装置。
【請求項14】
外部からの指示に応じて電源電圧を出力する第1半導体装置と、
前記第1半導体装置からの給電により動作する第2半導体装置と、を有するデータ処理システムであって、
前記第2半導体装置は、クロック信号に同期してデータ処理を実行するとともに前記データ処理に係る負荷の状態に基づいて前記クロック信号の周波数と電源電圧とを選択制御するデータ処理制御部と、
前記データ処理制御部による制御に基づいて前記クロック信号を生成して出力するクロック生成部と、
前記データ処理制御部の実動作時に前記データ処理制御部で消費される所定期間の実電力量を演算するとともに、仮定した周波数での前記データ処理制御部による動作を想定した想定動作時の前記所定期間における想定電力量を演算する電力算出部と、を有し、
前記データ処理制御部は、前記実電力量と前記想定電力量のうち低消費電力となる周波数を考慮して、前記負荷の状態に対応するクロック信号の周波数を選択制御するとともに、前記選択した周波数に応じた電源電圧の供給を前記第1半導体装置に対して指示する、データ処理システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate