(57)【要約】  電力制御装置（１）は、収集部（２）、決定部（３）、導出部（４）及び実行部（５）を備えている。収集部（２）は、処理部の動作及びバスの動作に関する情報を収集する。決定部（３）は、収集された各情報に基づいて処理部の動作周波数及び動作電圧を決定する。導出部（４）は、収集された各情報に基づいて、処理部が動作を停止するまでの時間及びバスが動作を停止するまでの時間を推定する。導出部（４）は、推定した時間に消費される電力を、決定された動作周波数及び動作電圧に基づいて処理部の動作を切り替えた場合に消費される電力に加えて合計消費電力を算出し、算出した合計消費電力と、切り替え前の消費電力との差分を求める判別式を導出する。実行部（５）は、判別式の値に基づいて処理部の動作周波数及び動作電圧の切り替えを実行する。
2013073013.tif 000002
【特許請求の範囲】
【請求項１】
データ処理を行う処理部の動作に関する情報、及びデータを伝送するバスの動作に関する情報を収集する収集部と、
前記処理部の動作に関する情報及び前記バスの動作に関する情報に基づいて前記処理部の動作周波数及び動作電圧を決定する決定部と、
前記処理部の動作に関する情報及び前記バスの動作に関する情報に基づいて前記処理部が動作を停止するまでの時間及び前記バスが動作を停止するまでの時間を推定して、該推定時間に消費される電力を、前記決定に基づいて前記処理部の動作を切り替えた場合に消費される電力に加えた合計消費電力と、切り替え前の消費電力との差分を求める判別式を導出する導出部と、
前記判別式の値に基づいて前記処理部の動作周波数及び動作電圧の切り替えを実行する実行部と、
を備えることを特徴とする電力制御装置。
【請求項２】
前記処理部の動作に関する情報は、前記処理部で実行中のタスクの負荷量の情報を含み、
前記導出部は、前記負荷量情報に基づいて前記処理部が動作を停止するまでの時間を推定することを特徴とする請求項１に記載の電力制御装置。
【請求項３】
前記バスの動作に関する情報は、前記バスがダイレクトメモリアクセスによって動作中であるか否かという情報、及び１回のダイレクトメモリアクセスによって転送されるデータ量の情報を含み、
前記導出部は、前記動作中情報及び前記データ量情報に基づいて前記バスが動作を停止するまでの時間を推定することを特徴とする請求項１または２に記載の電力制御装置。
【請求項４】
前記処理部の動作周波数及び動作電圧を変更する変更部、をさらに備え、
前記実行部は、前記判別式の値が０よりも小さい場合に前記切り替えを実行し、
前記変更部は、前記切り替えを実行する場合に、前記決定部により決定された動作周波数または動作電圧に変更することを特徴とする請求項１乃至請求項３の何れか一の請求項に記載の電力制御装置。
【請求項５】
前記収集部は、複数の前記処理部のそれぞれについて動作に関する情報を収集し、
前記決定部は、全ての前記処理部のそれぞれについて動作周波数及び動作電圧を決定し、
前記導出部は、全ての前記処理部のそれぞれについて動作停止までの時間を推定して、全ての前記処理部のそれぞれについて前記推定時間に消費される電力を求めて前記合計消費電力として足し合わせ、
前記実行部は、切り替え後の動作周波数及び動作電圧が切り替え前の動作周波数及び動作電圧よりも低くなる処理部があり、かつ残りの処理部について切り替え後の動作周波数及び動作電圧が切り替え前の動作周波数及び動作電圧に等しいかまたは低くなる場合に、前記切り替えを実行することを特徴とする請求項１乃至請求項４の何れか一の請求項に記載の電力制御装置。
【請求項６】
データ処理を行う処理部と、
データを伝送するバスと、
前記処理部の動作に関する情報及び前記バスの動作に関する情報を収集する収集部と、
前記処理部の動作に関する情報及び前記バスの動作に関する情報に基づいて前記処理部の動作周波数及び動作電圧を決定する決定部と、
前記処理部の動作に関する情報及び前記バスの動作に関する情報に基づいて前記処理部が動作を停止するまでの時間及び前記バスが動作を停止するまでの時間を推定して、該推定時間に消費される電力を、前記決定に基づいて前記処理部の動作を切り替えた場合に消費される電力に加えた合計消費電力と、切り替え前の消費電力との差分を求める判別式を導出する導出部と、
前記判別式の値に基づいて前記処理部の動作周波数及び動作電圧の切り替えを実行する実行部と、
を備えることを特徴とする電子計算機。
【請求項７】
前記処理部の動作に関する情報は、前記処理部で実行中のタスクの負荷量の情報を含み、
前記導出部は、前記負荷量情報に基づいて前記処理部が動作を停止するまでの時間を推定することを特徴とする請求項６に記載の電子計算機。
【請求項８】
前記バスの動作に関する情報は、前記バスがダイレクトメモリアクセスによって動作中であるか否かという情報、及び１回のダイレクトメモリアクセスによって転送されるデータ量の情報を含み、
前記導出部は、前記動作中情報及び前記データ量情報に基づいて前記バスが動作を停止するまでの時間を推定することを特徴とする請求項６または７に記載の電子計算機。
【請求項９】
前記処理部の動作周波数及び動作電圧を変更する変更部、をさらに備え、
前記実行部は、前記判別式の値が０よりも小さい場合に前記切り替えを実行し、
前記変更部は、前記切り替えを実行する場合に、前記決定部により決定された動作周波数または動作電圧に変更することを特徴とする請求項６乃至請求項８の何れか一の請求項に記載の電子計算機。
【請求項１０】
前記収集部は、複数の前記処理部のそれぞれについて動作に関する情報を収集し、
前記決定部は、全ての前記処理部のそれぞれについて動作周波数及び動作電圧を決定し、
前記導出部は、全ての前記処理部のそれぞれについて動作停止までの時間を推定して、全ての前記処理部のそれぞれについて前記推定時間に消費される電力を求めて前記合計消費電力として足し合わせ、
前記実行部は、切り替え後の動作周波数及び動作電圧が切り替え前の動作周波数及び動作電圧よりも低くなる処理部があり、かつ残りの処理部について切り替え後の動作周波数及び動作電圧が切り替え前の動作周波数及び動作電圧に等しいかまたは低くなる場合に、前記切り替えを実行することを特徴とする請求項６乃至請求項９の何れか一の請求項に記載の電子計算機。
【請求項１１】
データ処理を行う処理部の動作に関する情報、及びデータを伝送するバスの動作に関する情報を収集し、
前記処理部の動作に関する情報及び前記バスの動作に関する情報に基づいて前記処理部の動作周波数及び動作電圧を決定し、
前記処理部の動作に関する情報及び前記バスの動作に関する情報に基づいて前記処理部が動作を停止するまでの時間及び前記バスが動作を停止するまでの時間を推定して、該推定時間に消費される電力を、前記決定に基づいて前記処理部の動作を切り替えた場合に消費される電力に加えた合計消費電力と、切り替え前の消費電力との差分を求める判別式を導出し、
前記判別式の値に基づいて前記処理部の動作周波数及び動作電圧の切り替えを実行することを特徴とする電力制御方法。
【請求項１２】
前記処理部の動作に関する情報は、前記処理部で実行中のタスクの負荷量の情報を含み、
前記負荷量情報に基づいて前記処理部が動作を停止するまでの時間を推定することを特徴とする請求項１１に記載の電力制御方法。
【請求項１３】
前記バスの動作に関する情報は、前記バスがダイレクトメモリアクセスによって動作中であるか否かという情報、及び１回のダイレクトメモリアクセスによって転送されるデータ量の情報を含み、
前記動作中情報及び前記データ量情報に基づいて前記バスが動作を停止するまでの時間を推定することを特徴とする請求項１１または１２に記載の電力制御方法。
【請求項１４】
前記判別式の値が０よりも小さい場合に前記切り替えを実行し、
前記切り替えを実行する場合に、前記処理部の動作周波数または動作電圧を、前記決定された動作周波数または動作電圧に変更することを特徴とする請求項１１乃至請求項１３の何れか一の請求項に記載の電力制御方法。
【請求項１５】
複数の前記処理部のそれぞれについて動作に関する情報を収集し、
全ての前記処理部のそれぞれについて動作周波数及び動作電圧を決定し、
全ての前記処理部のそれぞれについて動作停止までの時間を推定して、全ての前記処理部のそれぞれについて前記推定時間に消費される電力を求めて前記合計消費電力として足し合わせ、
切り替え後の動作周波数及び動作電圧が切り替え前の動作周波数及び動作電圧よりも低くなる処理部があり、かつ残りの処理部について切り替え後の動作周波数及び動作電圧が切り替え前の動作周波数及び動作電圧に等しいかまたは低くなる場合に、前記切り替えを実行することを特徴とする請求項１１乃至請求項１４の何れか一の請求項に記載の電力制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、電力制御装置、電子計算機及び電力制御方法に関する。
【背景技術】
【０００２】
従来、複数のプロセッサを有するマルチプロセッサシステムにおいて、できるだけ低い周波数や低い電源電圧を用いてプログラムを実行することで、消費電力を削減する方法（ＤＶＦＳ：Ｄｙｎａｍｉｃ  Ｖｏｌｔａｇｅ  ａｎｄ  Ｆｒｅｑｕｅｎｃｙ  Ｓｃａｌｉｎｇ）がある。例えば、各プロセッサで実行される各プログラムの性能制約を満たす範囲で、複数のプロセッサの周波数と電源電圧とのうちの少なくとも一方を制御する方法がある（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２８７５９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来のＤＶＦＳでは、プロセッサの周波数や電源電圧を切り替える際、各プロセッサがデータ処理を停止するまでの時間やバスが停止するまでの時間に消費される電力を考慮していない。そのため、ＤＶＦＳによって低い周波数や低い電源電圧に切り替えたにもかかわらず、切り替え後の消費電力に、これらデータ処理の停止やバスの停止までの時間に消費される電力を加えると、切り替え前の消費電力よりも増えてしまうことがあるという問題点がある。【０００５】
消費電力を削減することができる電力制御装置、電子計算機及び電力制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するため、電力制御装置は、収集部、決定部、導出部及び実行部を備えている。収集部は、データ処理を行う処理部の動作に関する情報を収集する。収集部は、データを伝送するバスの動作に関する情報を収集する。決定部は、収集された処理部の動作に関する情報及びバスの動作に関する情報に基づいて処理部の動作周波数及び動作電圧を決定する。導出部は、収集された処理部の動作に関する情報に基づいて処理部が動作を停止するまでの時間を推定する。導出部は、収集されたバスの動作に関する情報に基づいてバスが動作を停止するまでの時間を推定する。導出部は、推定した時間に消費される電力を、決定された動作周波数及び動作電圧に基づいて処理部の動作を切り替えた場合に消費される電力に加えて合計消費電力を算出する。導出部は、算出した合計消費電力と、切り替え前の消費電力との差分を求める判別式を導出する。実行部は、判別式の値に基づいて処理部の動作周波数及び動作電圧の切り替えを実行する。
【発明の効果】
【０００７】
開示の電力制御装置、電子計算機及び電力制御方法によれば、消費電力を削減することができるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施例１にかかる電力制御装置の構成を示すブロック図である。
【図２】図２は、実施例１にかかる電力制御方法を示すフローチャートである。
【図３】図３は、実施例２にかかる電子計算機のハードウェア構成を示すブロック図である。
【図４】図４は、実施例２にかかる電子計算機の機能的構成を示すブロック図である。
【図５】図５は、実施例２にかかる電子計算機における全ＣＰＵのデータ処理停止までの動作を説明する模式図である。
【図６】図６は、実施例２にかかる電子計算機における一ＣＰＵの停止までの動作を説明する模式図である。
【図７】図７は、実施例２にかかる電子計算機におけるバスの停止までの動作を説明する模式図である。
【図８】図８は、実施例２にかかる電力制御方法を示すフローチャートである。
【図９】図９は、実施例３にかかる電子計算機のハードウェア構成を示すブロック図である。
【図１０】図１０は、実施例３にかかる電子計算機における全ＣＰＵのデータ処理停止までの動作を説明する模式図である。
【発明を実施するための形態】
【０００９】
以下に、この発明にかかる電力制御装置、電子計算機及び電力制御方法の実施例を図面に基づいて詳細に説明する。以下の各実施例の説明において、同様の構成には同一の符号を付して重複する説明を省略する。なお、この実施例によりこの発明が限定されるものではない。
【００１０】
（実施例１）
・電力制御装置の説明
図１は、実施例１にかかる電力制御装置の構成を示すブロック図である。図１に示すように、電力制御装置１は、収集部２、決定部３、導出部４及び実行部５を備えている。収集部２、決定部３、導出部４及び実行部５は、例えばプロセッサに、後述する電力制御方法を実現するプログラムを実行させることにより実現されてもよい。
【００１１】
収集部２は、データ処理を行う処理部（図示省略）の動作に関する情報を収集する。例えば、処理部の動作に関する情報は、処理部で実行中のタスクの負荷量の情報を含んでいてもよい。また、収集部２は、データを伝送するバス（図示省略）の動作に関する情報を収集する。例えば、バスの動作に関する情報は、バスがダイレクトメモリアクセスによって動作中であるか否かという情報、及び１回のダイレクトメモリアクセスによって転送されるデータ量の情報を含んでいてもよい。
【００１２】
決定部３は、収集部２により収集された処理部の動作に関する情報及びバスの動作に関する情報に基づいて、切り替え後の処理部の動作周波数及び動作電圧を決定する。
【００１３】
導出部４は、収集部２により収集された処理部の動作に関する情報に基づいて、処理部が動作を停止するまでの時間を推定する。導出部４は、収集部２により収集されたバスの動作に関する情報に基づいて、バスが動作を停止するまでの時間を推定する。導出部４は、決定部３により決定された動作周波数及び動作電圧に基づいて処理部の動作を切り替えた場合に消費される電力に、処理部及びバスの停止までの推定時間に消費される電力を加えて合計消費電力を算出する。導出部４は、算出した合計消費電力と、切り替え前の消費電力との差分を求める判別式を導出する。
【００１４】
実行部５は、判別式の値に基づいて処理部の動作周波数及び動作電圧の切り替えを実行する。例えば、実行部５は、処理部の動作を切り替えた場合に消費される電力に、処理部及びバスの停止までの推定時間に消費される電力を加えた合計消費電力から、切り替え前の消費電力を引いた値が０よりも小さい場合に、切り替えを実行してもよい。
【００１５】
・電力制御方法の説明
図２は、実施例１にかかる電力制御方法を示すフローチャートである。図２に示すように、電力制御装置１において電力制御方法が開始されると、収集部２は、処理部の動作に関する情報及びバスの動作に関する情報を収集する（ステップＳ１）。次いで、決定部３は、収集部２により収集された処理部の動作に関する情報及びバスの動作に関する情報に基づいて切り替え後の処理部の動作周波数及び動作電圧を決定する（ステップＳ２）。
【００１６】
次いで、導出部４は、処理部及びバスが動作を停止するまでの時間を推定する。導出部４は、処理部の動作を切り替えた場合に消費される電力に、その動作停止までの推定時間に消費される電力を加えた合計消費電力を求める。そして、導出部４は、その合計消費電力と切り替え前の消費電力との差分を求める判別式を導出する（ステップＳ３）。
【００１７】
次いで、実行部５は、判別式の値が切り替えの条件を満たす値である場合（ステップＳ４：Ｙｅｓ）、処理部の動作周波数及び動作電圧を、決定部３により決定された動作周波数及び動作電圧に切り替えることを実行する（ステップＳ５）。そして、一連の処理を終了する。一方、例えば判別式の値が切り替えの条件を満たさない値である場合（ステップＳ４：Ｎｏ）、実行部５は、動作周波数及び動作電圧の切り替えを実行しないで一連の処理を終了する。
【００１８】
実施例１によれば、切り替え後の消費電力に、処理部及びバスが停止するまでの推定時間に消費される電力を加えることによって、切り替えによって電力消費量が減るか否かを見積もることができる。従って、切り替え後の消費電力に、処理部及びバスが停止するまでの推定時間に消費される電力を加えた合計消費電力が切り替え前の消費電力よりも多くなる場合に切り替えを実行しないようにすることによって、切り替えによって消費電力が増えてしまうのを防ぐことができる。そして、合計消費電力が切り替え前の消費電力よりも少なくなる場合に切り替えを実行することによって、消費電力を削減することができる。
【００１９】
（実施例２）
実施例２は、実施例１にかかる電力制御装置を電子計算機のＤＶＦＳを制御する装置に適用した例である。電子計算機の一例として、例えばパーソナルコンピュータやワークステーションなどのコンピュータ、またはＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔｓ）などの携帯情報端末が挙げられる。また、一例として、携帯電話機、携帯電話機と携帯情報端末としての機能を併せ持ついわゆるスマートフォンと呼ばれる携帯端末、種々の測定器、または種々の電子装置の組み込みシステムなどが挙げられる。
【００２０】
・電子計算機のハードウェア構成の説明
図３は、実施例２にかかる電子計算機のハードウェア構成を示すブロック図である。図３に示すように、電子計算機１１は、コプロセッサ１２、及び処理部の一例として例えばＮ個のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置）（＃１、＃２、・・・、＃Ｎ）１３〜１５を備えている。Ｎは、２以上の整数である。図３には、３個以上のＣＰＵが示されているが、ＣＰＵの数は２個でもよい。
【００２１】
コプロセッサ１２は、ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５に対してＤＶＦＳを制御する。例えばコプロセッサ１２は、ＤＶＦＳによって各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５の動作周波数や動作電圧を切り替える際、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５に対してデータ処理の停止命令を発行する。また、例えばコプロセッサ１２は、ＤＶＦＳによって各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５の動作周波数や動作電圧を切り替える際、バス２０に対して動作の停止命令を発行する。
【００２２】
ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５は、それぞれに割り当てられたタスクを並列処理する。タスクの割り当ては、何れかのＣＰＵでＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ、オペレーティングシステム）が実行されることにより実現されるスケジューラによって行われてもよい。ここでは、ＣＰＵ＃１＿１３がＯＳを実行するとして説明する。ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５は、マルチプロセッサシステムの個々のマイクロプロセッサであってもよいし、マルチコアプロセッサの個々のコアであってもよい。
【００２３】
電子計算機１１は、分散メモリ型の計算機であり、例えばコプロセッサ１２、ＣＰＵ＃１＿１３、ＣＰＵ＃２＿１４、・・・及びＣＰＵ＃Ｎ＿１５のそれぞれに独立してメモリ１６〜１９が接続されていてもよい。メモリ１６〜１９は、それぞれコプロセッサ１２及びＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５により作業領域として使用される。メモリ１６〜１９の一例として、例えばＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ、ランダムアクセスメモリ）が挙げられる。
【００２４】
コプロセッサ１２、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５及び各メモリ１６〜１９は、バス２０に接続されている。バス２０には、バスアービタ２１、ペリフェラル（周辺装置）２２及びＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ、ダイレクトメモリアクセスコントローラ）２３が接続されている。バス２０は、バス２０に接続された各構成部１２〜１９，２１〜２３の間でデータを伝送する。
【００２５】
ペリフェラル２２は、例えばキーボードやキーパッドやタッチパネルやマウスやマイクなどの入力装置、及びディスプレイやプリンタやスピーカや振動用のモータなどの出力装置、種々のメモリカードなどの外部記憶装置であってもよい。ＤＭＡＣ２３は、メモリ１６〜１９とペリフェラル２２との間のダイレクトメモリアクセスを制御する。バスアービタ２１は、バスマスタである各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５とＤＭＡＣ２３との間でバス２０の使用権を調停する。
【００２６】
・電子計算機の機能的構成の説明
図４は、実施例２にかかる電子計算機の機能的構成を示すブロック図である。図４に示すように、電子計算機１１において、電力制御装置１は、ハードウェアであるコプロセッサ１２で、ソフトウェアである特権プログラム３１が実行されることにより実現される。特権プログラム３１の実行により、収集部２、決定部３、導出部４及び実行部５が実現される。
【００２７】
収集部２からの依頼により収集された情報は、直接、決定部３へ送られてもよいし、一旦収集部２へ送られ、収集部２から決定部３へ送られてもよい。ここでは、収集された情報が直接、決定部３へ送られるとして説明する。収集部２は、周波数電圧用収集部３２及び消費電力量用収集部３３を有する。
【００２８】
周波数電圧用収集部３２は、ＣＰＵ＃１＿１３で実行されているＯＳ３８に対して、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５の動作に関する情報を依頼する。ＯＳ３８は、周波数電圧用収集部３２からの依頼に応答して、決定部３に各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５の動作に関する情報を提供する。
【００２９】
各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５の動作に関する情報の一例として、例えば各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５においてタスクを完了させるために与えられた残り時間であるデッドライン時間や、実行されるタスクの最長実行時間の情報が挙げられる。タスクの最長実行時間は、タスクごとに例えばシミュレーションによって予め求められていてもよい。
【００３０】
消費電力量用収集部３３は、ＯＳ３８に対して、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５の動作に関する情報を依頼するとともに、バスアービタ２１及びＤＭＡＣ２３に対して、バス２０の動作に関する情報を依頼する。消費電力量用収集部３３からの依頼に応答して、ＯＳ３８は、決定部３に各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５の動作に関する情報を提供する。消費電力量用収集部３３からの依頼に応答して、バスアービタ２１及びＤＭＡＣ２３は、決定部３にバス２０の動作に関する情報を提供する。
【００３１】
各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５の動作に関する情報の一例として、例えば各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５において実行中のタスクが終了するまでの平均実行時間の情報や、実行中のタスクの負荷量の情報が挙げられる。バス２０の動作に関する情報の一例として、ダイレクトメモリアクセスの実行中であるか否かという情報や、１回あたりのダイレクトメモリアクセスでバス２０が占領される時間の情報が挙げられる。ダイレクトメモリアクセスの実行中であるか否かという情報は、例えばバスアービタ２１から得られる。バス２０の占領時間の情報は、例えばＤＭＡＣ２３から得られる。なお、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５やバス２０の動作に関する情報がＯＳ３８に記録されている場合には、周波数電圧用収集部３２及び消費電力量用収集部３３は、ＯＳ３８からそれらの情報を取得することができる。
【００３２】
決定部３は、例えば各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５のデッドライン時間やタスクの最長実行時間の情報に基づいて、ＤＶＦＳによって切り替えられた後の各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５の動作周波数及び動作電圧を決定する。決定部３によって、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５について、デッドライン時間を守る範囲で例えば低い動作周波数及び低い動作電圧が決定される。例えばＣＭＯＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ  Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）回路の場合、動作周波数に動作電圧の２乗を掛け合わせたものに消費電力が比例するので、動作周波数及び動作電圧が低くなれば消費電力が減る可能性がある。
【００３３】
導出部４は、全ＣＰＵ停止時間推定部３４、バス停止時間推定部３５及び判別式構成部３６を有する。
【００３４】
全ＣＰＵ停止時間推定部３４は、コプロセッサ１２がデータ処理の停止命令を発行してから、全てのＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５でデータ処理が停止するまでに、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５で生じる待機時間を推定する。各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５の待機時間の推定方法については後述する。
【００３５】
バス停止時間推定部３５は、コプロセッサ１２がバス２０の動作の停止命令を発行してから、バス２０が動作を停止するまでに要する時間を推定する。バス２０の動作停止時間の推定方法については後述する。
【００３６】
判別式構成部３６は、ＤＶＦＳを実行した場合の消費電力量の推定値と、ＤＶＦＳを実行しない場合の消費電力量の推定値とを求める。判別式構成部３６は、求めた消費電力量の推定値に基づいて、ＤＶＦＳを実行するか否かを判別する判別式を導出し、値を求める。判別式の導出方法については後述する。
【００３７】
実行部５は、判別式の値に基づいて、ＤＶＦＳを実行するか否かを決定する。例えば、実行部５は、ＤＶＦＳを実行した場合の消費電力量の推定値が、ＤＶＦＳを実行しない場合の消費電力量の推定値よりも小さい場合に、ＤＶＦＳを実行する。例えば、実行部５は、ＤＶＦＳを実行した場合の消費電力量の推定値が、ＤＶＦＳを実行しない場合の消費電力量の推定値よりも大きい場合には、ＤＶＦＳを実行しない。ＤＶＦＳを実行する場合、実行部５は、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５でのデータ処理を停止させるための停止命令及びバス２０の動作を停止させるための停止命令を発行する。
【００３８】
コプロセッサ１２は、変更部３７を備えている。変更部３７は、実行部５がＤＶＦＳを実行すると決めた場合に、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５の動作周波数及び動作電圧を、決定部３により決定された動作周波数及び動作電圧に変更する。図４には、変更部３７がＣＰＵ＃１＿１３の動作周波数及び動作電圧を変更するように示されているが、変更部３７は、図示省略した各ＣＰＵ（＃２、・・・、＃Ｎ）１４，１５の動作周波数及び動作電圧も変更する。
【００３９】
・全ＣＰＵのデータ処理が停止するまでの動作の説明
図５は、実施例２にかかる電子計算機における全ＣＰＵのデータ処理停止までの動作を説明する模式図である。図５に示すように、実施例２のアーキテクチャでは、コプロセッサ１２、ＣＰＵ＃１＿１３、ＣＰＵ＃２＿１４、・・・、及びＣＰＵ＃Ｎ＿１５間に親子関係があるとする。そして、親に当たるプロセッサと子に当たるプロセッサとの間でしかメッセージをやり取りすることができないとする。
【００４０】
図示例では、コプロセッサ１２は、ＣＰＵ＃１＿１３に対して親に当たり、ＣＰＵ＃１＿１３は、コプロセッサ１２に対して子に当たるとする。また、図示省略したＣＰＵ＃［Ｎ−１］は、ＣＰＵ＃Ｎ＿１５に対して親に当たり、ＣＰＵ＃Ｎ＿１５は、ＣＰＵ＃［Ｎ−１］に対して子に当たるとする。
【００４１】
コプロセッサ１２は、ＤＶＦＳを実行する際、まず、子に当たるＣＰＵ＃１＿１３に対してデータ処理の停止命令を発行し、データ処理を停止するように通知する（ステップＳ１１）。そして、コプロセッサ１２は、動作を停止する（ステップＳ１２）。動作を停止した後、全てのＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５のデータ処理が停止するまでの時間が、コプロセッサ１２の待機時間４１となる。
【００４２】
ＣＰＵ＃１＿１３は、コプロセッサ１２からデータ処理停止の通知を受け取ると、子に当たるＣＰＵ＃２＿１４に対してデータ処理を停止するように通知する（ステップＳ１３）。そして、ＣＰＵ＃１＿１３は、データ処理を停止する（ステップＳ１４）。データ処理を停止した後、残りのデータ処理中のＣＰＵ（＃２、・・・、＃Ｎ）１４，１５のデータ処理が停止するまでの時間が、ＣＰＵ＃１＿１３の待機時間４２となる。
【００４３】
ＣＰＵ＃２＿１４は、ＣＰＵ＃１＿１３からデータ処理停止の通知を受け取ると、子に当たる図示省略したＣＰＵ＃３に対してデータ処理を停止するように通知する（ステップＳ１５）。そして、ＣＰＵ＃２＿１４は、データ処理を停止する（ステップＳ１６）。データ処理を停止した後、残りのデータ処理中のＣＰＵ（＃３、・・・、＃Ｎ）１５のデータ処理が停止するまでの時間が、ＣＰＵ＃２＿１４の待機時間４３となる。
【００４４】
ＣＰＵ＃３以降のＣＰＵについても同様である。最後に残ったデータ処理中のＣＰＵ＃Ｎ＿１５がデータ処理を停止すると、全てのアプリケーションが停止したことになる（ステップＳ１７）。従って、ＣＰＵ＃Ｎ＿１５については、待機時間は発生しない。コプロセッサ１２及び各ＣＰＵ（＃１、＃２、・・・、＃［Ｎ−１］）１３，１４の待機時間４１〜４３において、無駄な電力が消費される。
【００４５】
・各ＣＰＵの待機時間の推定方法の説明
図６は、実施例２にかかる電子計算機における一ＣＰＵの停止までの動作を説明する模式図である。ＣＰＵがデータ処理を停止するまでの動作は、何れのＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５でも同じであるが、ここでは、ＣＰＵ＃１＿１３を例にして説明する。
【００４６】
図６に示すように、例えばＣＰＵ＃１＿１３がタスク＃１、タスク＃２及びタスク＃３をこの順番で繰り返し実行しているとする。例えば、ＣＰＵ＃１＿１３は、あるサイクルのタスク＃１＿５１の実行中にＣＰＵ停止の割り込みを受けると、割り込みを受けたときに実行中であるタスク＃１＿５１の終了時点で停止する。
【００４７】
タスク＃１＿５１の実行中、ＣＰＵ＃１＿１３にＣＰＵ停止の割り込みが入るタイミングは任意である。従って、ＣＰＵ＃１＿１３にＣＰＵ停止の割り込みが入ってから、ＣＰＵ＃１＿１３が停止するまでの平均時間は、ＯＳ３８がタスク＃１＿５１に割り当てた時間、すなわちタイムスライスの１／２の時間であるとみなしてもよい。
【００４８】
また、タスク＃１＿５１の負荷量をＳ(1)とすると、ＣＰＵ＃１＿１３にＣＰＵ停止の割り込みが入ってから、ＣＰＵ＃１＿１３が停止するまでの平均時間は、αＳ(1)と推定することができる。αは比例定数である。
【００４９】
ＣＰＵ＃１＿１３にＣＰＵ停止の割り込みが入るタイミングは任意であるので、ＣＰＵ＃１＿１３がタスク＃２またはタスク＃３の実行中にＣＰＵ停止の割り込みを受けた場合も、同様である。従って、ＣＰＵ＃１＿１３がＣＰＵ停止の割り込みを受けてから停止するまでの平均時間は、次の（１）式で表される。
【００５０】
【数１】
2013073013.tif 000003
【００５１】
ここで、ｋ番目のＣＰＵ＃ｋに割り当てられた＃１〜＃ｍの各タスクの負荷量をＳ(1)k、・・・、Ｓ(m)kとする。ｍは、２以上の整数であり、ｋの値によって異なっていてもよい。ｋは、１〜Ｎの整数である。ＣＰＵ＃ｋにＣＰＵ停止の割り込みが入ってからＣＰＵ＃ｋのデータ処理が停止するまでの時間Ｓkは、次の（２）式で表される。（２）式において、ｉ及びｊは、１〜ｍの整数である。
【００５２】
【数２】
2013073013.tif 000004
【００５３】
従って、ｋ番目のＣＰＵ＃ｋについて、データ処理を停止してから全てのアプリケーションが停止するまでの待機時間ＴCPU_kは、［ｋ＋１］番目からＮ番目までの各ＣＰＵがデータ処理を停止するまでの時間を足し合わせたものとなる。これを式で表すと、次の（３）式となる。ただし、便宜上、コプロセッサ１２を０番目のＣＰＵ、すなわちＣＰＵ＃０と表すと、（３）式は、コプロセッサ１２の待機時間も含めた式となる。つまり、（３）式では、ｋは０〜Ｎの整数である。
【００５４】
【数３】
2013073013.tif 000005
【００５５】
・バスの動作停止時間の推定方法の説明
図７は、実施例２にかかる電子計算機におけるバスの停止までの動作を説明する模式図である。図７に示すように、ＤＭＡ実行中５２にコプロセッサ１２がバス２０に対して動作の停止命令を発行すると、バス２０は、停止命令が発行されたときのダイレクトメモリアクセスの終了時点で停止する。
【００５６】
ＤＭＡ実行中５２にバス２０に対して停止命令が発行されるタイミングは任意である。従って、１回のダイレクトメモリアクセスでバス２０が占領される時間をＴDMAとすると、ＤＭＡ実行中５２にバス停止命令が発行されてからバス２０が停止するまでに要する時間の期待値は、［ＴDMA／２］である。ＤＭＡ実行中でないときにバス停止命令が発行されると、バス２０は直ちに停止する。バス２０に対して停止命令が発行されてからバス２０が停止するまでに要する時間をＴBUSとすると、ＴBUSは、次の（４）式で表される。
【００５７】
【数４】
2013073013.tif 000006
【００５８】
（４）式において、「その他」には、ＤＭＡ実行中でない場合が含まれている。ここで、ＴDMAは、１回のＤＭＡでのデータ転送量に比例する。１回のＤＭＡでのデータ転送量は、次の（５）式で表される。（５）式は、１回のＤＭＡで転送されるデータ転送量の上限とＣＰＵがＤＭＡＣに依頼したデータ転送量とで、何れか小さい方の値であることを表している。
【００５９】
【数５】
2013073013.tif 000007
【００６０】
・判別式の導出方法の説明
ＤＶＦＳ実行前のＣＰＵ＃０（コプロセッサ１２）、ＣＰＵ＃１＿１３、・・・、ＣＰＵ＃Ｎ＿１５の電力をそれぞれＰ0_high、Ｐ1_high、・・・、ＰN_highとする。ＤＶＦＳ実行後のＣＰＵ＃０（コプロセッサ１２）、ＣＰＵ＃１＿１３、・・・、ＣＰＵ＃Ｎ＿１５の電力をそれぞれＰ0_low、Ｐ1_low、・・・、ＰN_lowとする。
【００６１】
ただし、１以上の整数ｉに対して、［Ｐi_high≧Ｐi_low］を満たすとする。また、コプロセッサ１２の電力は一定であるとする。すなわち、ｉが０である場合、［Ｐ0_high＝Ｐ0_low］であるとする。
【００６２】
・１．ＤＶＦＳを実行しない場合の消費電力量
ＤＶＦＳ実行前の電力がＰi_highであるＣＰＵ＃ｉにおいて、Ｐi_highの電力のままで実行中のタスクが終了するまでの平均時間をＴi_highとする。この場合、ＣＰＵ＃ｉにおいてタスクが終了するまでに全ＣＰＵが消費する電力量の合計は、次の（６）式で表されるＰ1であると推定される。すなわち、ＤＶＦＳを実行しない場合の全ＣＰＵ（コプロセッサ１２を含む）の消費電力量は、Ｐ1であると推定される。
【００６３】
【数６】
2013073013.tif 000008
【００６４】
・２．ＤＶＦＳを実行する場合の消費電力量
ＣＰＵ＃ｉにおいて、電力をＰi_lowに下げてから、実行中のタスクが終了するまでの平均時間をＴi_lowとする。この場合、コプロセッサ１２がＣＰＵの停止命令を発行してからＣＰＵ＃ｉにおいてタスクが終了するまでに全ＣＰＵが消費する電力量の合計は、次の（７）式で表されるＰ2であると推定される。すなわち、ＤＶＦＳを実行する場合の全ＣＰＵ（コプロセッサ１２を含む）の消費電力量は、Ｐ2であると推定される。
【００６５】
【数７】
2013073013.tif 000009
【００６６】
上記（７）式の右辺において、第１項目は、全ＣＰＵでのタスクの実行に消費される電力量を表している。第２項目は、ＤＶＦＳを実行する際の準備において全ＣＰＵで消費される電力量を表している。第３項目の「Ｃｏｎｓｔ」は、ＤＶＦＳ自体の消費電力量を表している。第２項目と第３項目とを足した消費電力量は、ＤＶＦＳを実行する際のオーバーヘッドである。
【００６７】
ＴCPU_iは、コプロセッサ１２がＣＰＵの停止命令を発行してからＣＰＵ＃ｉが停止するまでの時間である。ＴBUS'は、全てのＣＰＵが停止してからバス２０が停止するまでの時間である。ＴBUS'は、次の（８）式で表される。すなわち、ＴBUS'は、ＴCPU_kのうち最も大きい値をＴBUSから引いた値と、０とで、何れか大きい方の値である。ＴBUS'の値が０となるのは、データ処理中のＣＰＵがある状態でバス２０が動作を停止した場合である。
【００６８】
【数８】
2013073013.tif 000010
【００６９】
・３．判別式の構成
判別式は、例えば上述したＤＶＦＳを実行する場合の消費電力量Ｐ2からＤＶＦＳを実行しない場合の消費電力量Ｐ2を引いた式であってもよい。この場合、判別式の値Ｄは、次の（９）式で表される。
【００７０】
【数９】
2013073013.tif 000011
【００７１】
・４．ＤＶＦＳを実行するか否かの判断
上述した判別式の値Ｄが０よりも小さい場合、ＤＶＦＳを実行した方が実行しない場合よりも消費電力が少なくなると推定されるので、ＤＶＦＳを実行してもよい。Ｄが０以上の場合には、ＤＶＦＳを実行しても消費電力が変わらないか、増えてしまう虞があるので、ＤＶＦＳを実行しなくてもよい。
【００７２】
・電力制御方法の説明
図８は、実施例２にかかる電力制御方法を示すフローチャートである。図８に示すように、電子計算機１１において電力制御方法が開始されると、収集部２は、例えば定期的に、ＯＳ３８やバスアービタ２１やＤＭＡＣ２３に対して、ＤＶＦＳを実行するか否かを判断する材料となる情報の提供を依頼する。それによって、決定部３に、例えば上述したタスク完了までのデッドライン時間、タスクの最長実行時間、タスク終了までの平均実行時間、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５の負荷量及びＤＭＡの実行中か否か、などの情報が収集される（ステップＳ２１）。
【００７３】
次いで、決定部３は、収集された各情報に基づいてＤＶＦＳを実行した場合の各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５の動作周波数及び動作電圧を決定する（ステップＳ２２）。全てのＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５について、決定した動作周波数及び動作電圧の値に変化がない場合、すなわち現在の値と同じである場合（ステップＳ２２：変化なし）、ステップＳ２１に戻る。
【００７４】
決定した動作周波数及び動作電圧の値が現在の値よりも小さいＣＰＵが存在し、かつ現在の値よりも大きいＣＰＵが存在しない場合（ステップＳ２２：小さいものあり、かつ大きいものなし）、導出部４は、判別式を導出してその値Ｄを算出する（ステップＳ２３）。判別式の値Ｄが０よりも大きい場合には（ステップＳ２３：Ｄ＞０）、ステップＳ２１に戻る。
【００７５】
判別式の値Ｄが０よりも小さい場合には（ステップＳ２３：Ｄ＜０）、実行部５は、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５でのデータ処理を停止させるための停止命令及びバス２０の動作を停止させるための停止命令を発行する（ステップＳ２４）。それによって、全てのＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５でのデータ処理が停止し、バス２０の動作が停止する。
【００７６】
その後、変更部３７は、全ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５及びバス２０の停止が完了した通知を受けると、ＤＶＦＳを実行する（ステップＳ２５）。それによって、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５の動作周波数及び動作電圧が、ステップＳ２２で決定された動作周波数及び動作電圧に切り替えられる。その後、実行部５は、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５に対して、アプリケーションを再開する命令を発行する（ステップＳ２６）。それによって、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５は、データ処理を再開する。そして、ステップＳ２１に戻り、一連の処理を繰り返す。
【００７７】
一方、決定部３が決定した動作周波数及び動作電圧の値が現在の値よりも大きいＣＰＵが存在する場合（ステップＳ２２：大きいものあり）、ステップＳ２３を省略してステップＳ２４へ進む。この場合には、動作周波数及び動作電圧の値が現在の値よりも大きくなってしまったＣＰＵについて、ＤＶＦＳによって動作周波数及び動作電圧の値が現在の値よりも大きくなるように切り替えられる。これは、現在の動作周波数及び動作電圧でデータ処理を続けたのでは、デッドライン時間を守ることができないため、現在よりも高速でデータ処理を行う必要があるからである。
【００７８】
・ＤＶＦＳを実行しない方が消費電力を削減できる例
次に、実施例２の効果の一例として、ＤＶＦＳを実行しない方が実行する場合よりも消費電力を削減することができる例を説明する。簡単のため、図３に示す構成において、電子計算機１１は、２個のＣＰＵ（＃１、＃２）１３，１４を有するとする。
【００７９】
例えば、ＣＰＵ＃１＿１３でタスク＃Ａ及びタスク＃Ｂを実行中であり、ＣＰＵ＃２＿１４でタスク＃Ｃ及びタスク＃Ｄを実行中であるとする。また、タスク＃Ａ及びタスク＃Ｂのタイムスライスを２ｍｓｅｃとし、タスク＃Ｃ及びタスク＃Ｄのタイムスライスを１ｍｓｅｃであるとする。コプロセッサ１２の消費電力を１０ｍＷとし、ＣＰＵ＃１＿１３の消費電力を１００ｍＷとし、ＣＰＵ＃２＿１４の消費電力を５０ｍＷとする。タスク＃Ａ及びタスク＃Ｂが終了するまでの時間を１０ｍｓｅｃとし、タスク＃Ｃ及びタスク＃Ｄが終了するまでの時間を５ｍｓｅｃとする。
【００８０】
上述した動作状態において、ＤＶＦＳを実行しない場合の全タスクが終了するまでの消費電力は、次の（１０）式で表される。（１０）式において、左辺の第１項目は、コプロセッサ１２の消費電力を表している。第２項目は、ＣＰＵ＃１＿１３の消費電力を表している。第３項目は、ＣＰＵ＃２＿１４の消費電力を表している。
【００８１】
【数１０】
2013073013.tif 000012
【００８２】
次に、決定部３がＣＰＵ＃２＿１４の周波数を半分にし、それに伴って電力を２０ｍＷに下げると決定したとする。この場合、ＣＰＵ＃２＿１４の周波数が半分になったので、タスク＃Ｃ及びタスク＃Ｄが終了するまでの時間は、上述した５ｍｓｅｃの２倍の１０ｍｓｅｃとなる。従って、ＤＶＦＳを実行した場合の全タスクが終了するまでの消費電力量は、次の（１１）式で表される。（１１）式において、左辺の第１項目は、コプロセッサ１２の消費電力を表している。第２項目は、ＣＰＵ＃１＿１３の消費電力を表している。第３項目は、ＣＰＵ＃２＿１４の消費電力を表している。
【００８３】
【数１１】
2013073013.tif 000013
【００８４】
（１０）式と（１１）式とを単純に比較すると、ＤＶＦＳを実行した方が実行しない場合よりも消費電力量が減っている。しかしながら、ＤＶＦＳを実行する際には、オーバーヘッドが生じるので、このオーバーヘッドの消費電力量も考慮するのが好ましい。
【００８５】
ＤＶＦＳを実行する際には、ＣＰＵ＃１＿１３とＣＰＵ＃２＿１４とが停止する。実行部５がＣＰＵの停止命令を発行してからＣＰＵ＃１＿１３が停止するまでにかかる平均時間は、ＯＳ３８が各タスクに割り当てたタイムスライスの１／２であると期待される。ＣＰＵ＃２＿１４についても同様である。従って、ＣＰＵの停止命令の発行からＣＰＵ＃１＿１３及びＣＰＵ＃２＿１４が停止するまでにかかる時間は、平均で次の（１２）式で表される。
【００８６】
【数１２】
2013073013.tif 000014
【００８７】
（１２）式より、ここでの例では、ＣＰＵの停止命令の発行からＣＰＵ＃１＿１３及びＣＰＵ＃２＿１４が停止するまでにかかる時間は、平均で１．５ｍｓｅｃである。つまり、コプロセッサ１２では、平均で１．５ｍｓｅｃの待機時間が発生し、ＣＰＵ＃１＿１３では、平均で０．５ｍｓｅｃの待機時間が発生することになる。これらの待機時間に消費される電力量は、次の（１３）式で表される。
【００８８】
【数１３】
2013073013.tif 000015
【００８９】
従って、ＤＶＦＳを実行する場合の消費電力量は、上記（１１）式の値と（１３）式の値とを足し合わせることとなり、次の（１４）式で表される。（１４）式より、ＤＶＦＳのオーバーヘッドを考慮してＤＶＦＳを実行すると、実行しない場合よりも消費電力量が増えてしまう結果となる。この場合には、ＤＶＦＳを実行しないのがよい。もちろん、ＤＶＦＳを実行するとした場合の消費電力量が、ＤＶＦＳを実行しない場合の消費電力量よりも少なくなれば、ＤＶＦＳを実行するのがよい。
【００９０】
【数１４】
2013073013.tif 000016
【００９１】
・判別式を用いて繰り返しＤＶＦＳの実行を判断することの効果
上述した判別式では、推定値（期待値）を用いているので、判別式の値が実際の消費電力量の増減を正確に反映しているとは限らない。つまり、判別式の値Ｄに基づいてＤＶＦＳを実行するか否かを判断しても消費電力量が増えてしまう虞がある。しかし、判別式の値Ｄに基づいてＤＶＦＳを実行するか否かを判断する回数が増えるほど、判別式の値Ｄに基づいてＤＶＦＳを実行するか否かを判断しない場合に比べて、消費電力量を減らすことができる。このことが正しいことを以下に説明する。
【００９２】
判別式の値Ｄに基づいてＤＶＦＳを実行するか否かを判断するケースをケース１とし、判別式の値Ｄに基づいてＤＶＦＳを実行するか否かを判断しないケースをケース２とする。ケース１及びケース２のそれぞれについてｎ回、実施したときの消費電力量を比較し、ｎが大きいときに、ケース１をｎ回、実施したときの合計消費電力量からケース２をｎ回、実施したときの合計消費電力量を引いた値が０よりも小さくなることを示す。ｎは、正の整数である。
【００９３】
ケース２の消費電力量からケース１の消費電力量を引いた値を確率変数Ｘiとする。ケース１をｎ回、実施したときの合計消費電力量からケース２をｎ回、実施したときの合計消費電力量を引いた値は、次の（１５）式で表される。従って、（１５）式の値が０よりも小さくなることを示せばよい。（１５）式〜（１８）式において、ｉは１〜ｎの整数である。
【００９４】
【数１５】
2013073013.tif 000017
【００９５】
Ｘの期待値をＥ［Ｘ］と表すと、次の（１６）式が成り立つ。Ｘの分散をＶ［Ｘ］と表し、Ｅ［Ｘi］をμiとおき、Ｖ［Ｘi］をσi2とおくと、μiは０以下である。ここで、ΣＸi／ｎ（Σにおいて、ｉが取り得る値は１〜ｎである）の平均及び分散を考えると、次の（１６）式及び（１７）式が成り立つ。
【００９６】
【数１６】
2013073013.tif 000018
【００９７】
【数１７】
2013073013.tif 000019
【００９８】
従って、ｎが大きいとき、次の（１８）式が成り立つ。
【００９９】
【数１８】
2013073013.tif 000020
【０１００】
（１８）式より、（１５）式の値が０よりも小さくなることが示された。０以上のある数ｙを設定して（１８）式を変形すると、（１９）式が得られる。（１９）式をさらに変形すると、（２０）式が得られるので、ｎが大きくなるほど、ケース１とケース２の差が広がっていくことが示された。
【０１０１】
【数１９】
2013073013.tif 000021
【０１０２】
【数２０】
2013073013.tif 000022
【０１０３】
実施例２によれば、コプロセッサ１２を含む全ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５間に親子関係がある例えば分散メモリ型の電子計算機１１において、実施例１と同様の効果が得られる。
【０１０４】
（実施例３）
・電力制御装置のハードウェアの説明
図９は、実施例３にかかる電子計算機のハードウェア構成を示すブロック図である。図９に示すように、実施例３にかかる電子計算機１１は、共有メモリ型の計算機であり、バス２０に接続された共有メモリ２４を有している。電子計算機１１のその他のハードウェア構成及び機能的構成は、実施例２と同様であるので、説明を省略する。
【０１０５】
図１０は、実施例３にかかる電子計算機における全ＣＰＵのデータ処理停止までの動作を説明する模式図である。図１０に示すように、実施例３のアーキテクチャでは、コプロセッサ１２、ＣＰＵ＃１＿１３、ＣＰＵ＃２＿１４、・・・、及びＣＰＵ＃Ｎ＿１５間に親子関係がない。コプロセッサ１２及び各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５は、共有メモリ２４を介して相互にメッセージのやりとりを行うことができる。
【０１０６】
コプロセッサ１２は、ＤＶＦＳを実行する際、全ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５に対してデータ処理の停止命令を発行し、データ処理を停止するように通知する（ステップＳ３１）。そして、コプロセッサ１２は、動作を停止する（ステップＳ３２）。
【０１０７】
各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５は、コプロセッサ１２からデータ処理停止の通知を受け取ると、それぞれデータ処理を停止する（ステップＳ３３〜ステップＳ３５）。各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５がデータ処理を停止した後、残りのデータ処理中のＣＰＵのデータ処理が停止するまでの時間が、コプロセッサ１２及び各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５の待機時間４１，４２，４４となる。
【０１０８】
最後に残ったデータ処理中のＣＰＵ、図示例ではＣＰＵ＃２＿１４がデータ処理を停止すると、全てのアプリケーションが停止したことになる（ステップＳ３６）。最後にデータ処理を停止した例えばＣＰＵ＃２＿１４については、待機時間は発生しない。コプロセッサ１２及び各ＣＰＵ（＃１、・・・、＃Ｎ）１３，１５の待機時間４１，４２，４４において、無駄な電力が消費される。
【０１０９】
なお、図１０に示す動作は、分散メモリ型の電子計算機において、コプロセッサ１２と全てのＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５との間に親子関係がなく、相互にメッセージのやりとりができる場合も同様である。従って、実施例３において以下の説明には、相互にメッセージのやりとりが可能な分散メモリ型の電子計算機の例も含む。
【０１１０】
・各ＣＰＵの待機時間の推定方法の説明
各ＣＰＵの待機時間は、各タスクに割り当てられるタイムスライスをどのように仮定するかによって、例えば次の３つの方法で推定することができる。
【０１１１】
・第１番目の推定方法
まず、全ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５において実行中のソフトウェアの負荷量が等しいと仮定し、そのため全てのタスクに割り当てられるタイムスライスが等しくＴであると仮定する。
【０１１２】
この場合、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５が停止するまでの時間Ｘkを確率変数とみなすと、Ｘkはそれぞれ独立に［０，Ｔ］の一様分布に従う。つまり、Ｘkは等しい確率で０〜Ｔの間の数値をとり、ＸiとＸj（ただし、ｉ≠ｊ）の間には依存関係がない。確率変数Ｘが定数ｘ以下となる確率をＰ（Ｘ＜ｘ）とすると、互いに独立であるＸ及びＹについて、定理より、次の（２１）式が成り立つ。
【０１１３】
【数２１】
2013073013.tif 000023
【０１１４】
最も遅いタイミングで停止するＣＰＵの停止までの時間Ｘkが定数ｘ以下となる確率は、ｘの範囲に応じて次の（２２）式〜（２４）式で表される。
【０１１５】
【数２２】
2013073013.tif 000024
【０１１６】
【数２３】
2013073013.tif 000025
【０１１７】
【数２４】
2013073013.tif 000026
【０１１８】
Ｘの確率分布はＰ（Ｘ＜ｘ）の微分で与えられるので、［ｍａｘ｛Ｘｉ｜ｉ＝１，２，．．．，Ｎ｝］の確率分布をｆ（ｘ)とすると、上記（２２）式〜（２４）式より、次の（２５）式が得られる。
【０１１９】
【数２５】
2013073013.tif 000027
【０１２０】
ここで、Ｘの期待値をＥ（Ｘ）と表すと、期待値の定義より、次の（２６）式が得られる。
【０１２１】
【数２６】
2013073013.tif 000028
【０１２２】
また、期待値の線形性により、次の（２７）式が成り立つので、ＴCPU_kは、次の（２８）式で表される。
【０１２３】
【数２７】
2013073013.tif 000029
【０１２４】
【数２８】
2013073013.tif 000030
【０１２５】
任意のｉ∈｛１，２，．．．，Ｎ｝について、［Ｅ（Ｘi）＝Ｔ／２］であり、［Ｅ（Ｘ0）＝０］である。従って、上記（２６）式及び（２８）式より、ＴCPU_kは、次の（２９）式で表される。ただし、コプロセッサ１２を０番目のＣＰＵとするので、ＴCPU_0は、コプロセッサ１２の待機時間である。
【０１２６】
【数２９】
2013073013.tif 000031
【０１２７】
・第２番目の推定方法
各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５において、実行中のアプリケーションの負荷量が等しいと仮定し、ＣＰＵ＃ｋで実行中のアプリケーションのタイムスライスが全てＴkであると仮定する。つまり、ＣＰＵ＃１＿１３で実行中のアプリケーションのタイムスライスは、全てＴ1であり、ＣＰＵ＃２＿１４で実行中のアプリケーションのタイムスライスは、全てＴ2であるとし、Ｔ1とＴ2は等しくなくてもよいとする。
【０１２８】
この場合、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５が停止するまでの時間Ｘkを確率変数とみなすと、Ｘkはそれぞれ独立に［０，Ｔk］の一様分布に従う。これは、Ｔ1＜Ｔ2＜・・・＜ＴNとしても一般性を失わない。
【０１２９】
最も遅いタイミングで停止するＣＰＵの停止までの時間Ｘkが定数ｘ以下となる確率は、Ｔ1及びＴ2に対するｘの範囲に応じて次の（３０）式〜（３２）式で表される。
【０１３０】
【数３０】
2013073013.tif 000032
【０１３１】
【数３１】
2013073013.tif 000033
【０１３２】
【数３２】
2013073013.tif 000034
【０１３３】
一般に、Ｘkが定数ｘ以下となる確率は、Ｔi及びＴi+1に対するｘの範囲に応じて次の（３３）式及び（３４）式で表される。
【０１３４】
【数３３】
2013073013.tif 000035
【０１３５】
【数３４】
2013073013.tif 000036
【０１３６】
［ｍａｘ｛Ｘｉ｜ｉ＝１，２，．．．，Ｎ｝］の確率分布をｆ（ｘ)とすると、上記（３０）式〜（３４）式より、次の（３５）式が得られる。
【０１３７】
【数３５】
2013073013.tif 000037
【０１３８】
ここで、Ｘの期待値をＥ（Ｘ）と表すと、次の（３６）式が得られる。
【０１３９】
【数３６】
2013073013.tif 000038
【０１４０】
任意のｉ∈｛１，２，．．．，Ｎ｝について、［Ｅ（Ｘi）＝Ｔi／２］であり、［Ｅ（Ｘ0）＝０］である。従って、上記（２８）式及び（３６）式より、ＴCPU_kは、次の（３７）式で表される。ただし、コプロセッサ１２を０番目のＣＰＵとするので、ＴCPU_0は、コプロセッサ１２の待機時間である。
【０１４１】
【数３７】
2013073013.tif 000039
【０１４２】
・第３番目の推定方法
ＣＰＵ＃ｋごとにタイムスライスが異なっていてもよく、さらに各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５においてタスクごとにタイムスライスが異なっていてもよいと仮定する。ＣＰＵ＃ｋで実行中のタスクのタイムスライスをＴ(1)k、・・・、Ｔ(m)kとする。ｍは、２以上の整数であり、ｋの値によって異なっていてもよい。ｋは、１〜Ｎの整数である。
【０１４３】
この場合、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５が停止するまでの時間Ｘkを確率変数とみなす。また、Ｙ(i)kが独立に［０，Ｔ(i)k］の一様分布に従うとすると、Ｘkは、次の（３８）式で表される。従って、期待値Ｅ［Ｘk］は、次の（３９）式で表される。
【０１４４】
【数３８】
2013073013.tif 000040
【０１４５】
【数３９】
2013073013.tif 000041
【０１４６】
Ｘkを一様分布で近似すると、Ｘkは［０，Ｔk］の一様分布に従う。ただし、ここでのＴkは、次の（４０）式で表される。これは、Ｔ1＜Ｔ2＜・・・＜ＴNとしても一般性を失わない。
【０１４７】
【数４０】
2013073013.tif 000042
【０１４８】
上述した第２番目の推定方法における式の導出過程と同様にしてＴCPU_kを求めると、上記（３７）式が得られる。ただし、（３７）式において、Ｔkは、上記（４０）式で与えられる。
【０１４９】
実施例３において、バスの動作停止時間の推定方法、判別式の導出方法、電力制御方法、及び判別式を用いて繰り返しＤＶＦＳの実行を判断することの効果については、実施例２と同様であるので、説明を省略する。
【０１５０】
実施例３によれば、共有メモリ型、またはコプロセッサ１２を含む全ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５間に親子関係のない例えば分散メモリ型の電子計算機１１において、実施例１と同様の効果が得られる。
【符号の説明】
【０１５１】
１  電力制御装置
２  収集部
３  決定部
４  導出部
５  実行部
１１  電子計算機
１３〜１５  処理部
２０  バス
３７  変更部
【図１】
2013073013.tif 000043
【図２】
2013073013.tif 000044
【図３】
2013073013.tif 000045
【図４】
2013073013.tif 000046
【図５】
2013073013.tif 000047
【図６】
2013073013.tif 000048
【図７】
2013073013.tif 000049
【図８】
2013073013.tif 000050
【図９】
2013073013.tif 000051
【図１０】
2013073013.tif 000052
【手続補正書】
【提出日】平成26年5月13日(2014.5.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データ処理を行う処理部の動作に関する情報、及びデータを伝送するバスの動作に関する情報を収集する収集部と、
前記処理部の動作に関する情報及び前記バスの動作に関する情報に基づいて前記処理部の動作周波数及び動作電圧を決定する決定部と、
前記処理部の動作に関する情報及び前記バスの動作に関する情報に基づいて前記処理部が動作を停止するまでの時間及び前記バスが動作を停止するまでの時間を推定して、該推定時間に消費される電力を、前記決定に基づいて前記処理部の動作を切り替えた場合に消費される電力に加えた合計消費電力と、切り替え前の消費電力との差分を求める判別式を導出する導出部と、
前記判別式の値に基づいて前記処理部の動作周波数及び動作電圧の切り替えを実行する実行部と、
を備えることを特徴とする電力制御装置。
【請求項２】
前記処理部の動作に関する情報は、前記処理部で実行中のタスクの負荷量の情報を含み、
前記導出部は、前記負荷量情報に基づいて前記処理部が動作を停止するまでの時間を推定することを特徴とする請求項１に記載の電力制御装置。
【請求項３】
前記バスの動作に関する情報は、前記バスがダイレクトメモリアクセスによって動作中であるか否かという情報、及び１回のダイレクトメモリアクセスによって転送されるデータ量の情報を含み、
前記導出部は、前記動作中情報及び前記データ量情報に基づいて前記バスが動作を停止するまでの時間を推定することを特徴とする請求項１または２に記載の電力制御装置。
【請求項４】
前記処理部の動作周波数及び動作電圧を変更する変更部、をさらに備え、
前記実行部は、前記判別式の値が０よりも小さい場合に前記切り替えを実行し、
前記変更部は、前記切り替えを実行する場合に、前記決定部により決定された動作周波数または動作電圧に変更することを特徴とする請求項１乃至請求項３の何れか一の請求項に記載の電力制御装置。
【請求項５】
前記収集部は、複数の前記処理部のそれぞれについて動作に関する情報を収集し、
前記決定部は、全ての前記処理部のそれぞれについて動作周波数及び動作電圧を決定し、
前記導出部は、全ての前記処理部のそれぞれについて動作停止までの時間を推定して、全ての前記処理部のそれぞれについて前記推定時間に消費される電力を求めて前記合計消費電力として足し合わせ、
前記実行部は、切り替え後の動作周波数及び動作電圧が切り替え前の動作周波数及び動作電圧よりも低くなる処理部があり、かつ残りの処理部について切り替え後の動作周波数及び動作電圧が切り替え前の動作周波数及び動作電圧に等しいかまたは低くなる場合に、前記切り替えを実行することを特徴とする請求項１乃至請求項４の何れか一の請求項に記載の電力制御装置。
【請求項６】
データ処理を行う処理部と、
データを伝送するバスと、
前記処理部の動作に関する情報及び前記バスの動作に関する情報を収集する収集部と、
前記処理部の動作に関する情報及び前記バスの動作に関する情報に基づいて前記処理部の動作周波数及び動作電圧を決定する決定部と、
前記処理部の動作に関する情報及び前記バスの動作に関する情報に基づいて前記処理部が動作を停止するまでの時間及び前記バスが動作を停止するまでの時間を推定して、該推定時間に消費される電力を、前記決定に基づいて前記処理部の動作を切り替えた場合に消費される電力に加えた合計消費電力と、切り替え前の消費電力との差分を求める判別式を導出する導出部と、
前記判別式の値に基づいて前記処理部の動作周波数及び動作電圧の切り替えを実行する実行部と、
を備えることを特徴とする電子計算機。
【請求項７】
データ処理を行う処理部の動作に関する情報、及びデータを伝送するバスの動作に関する情報を収集し、
前記処理部の動作に関する情報及び前記バスの動作に関する情報に基づいて前記処理部の動作周波数及び動作電圧を決定し、
前記処理部の動作に関する情報及び前記バスの動作に関する情報に基づいて前記処理部が動作を停止するまでの時間及び前記バスが動作を停止するまでの時間を推定して、該推定時間に消費される電力を、前記決定に基づいて前記処理部の動作を切り替えた場合に消費される電力に加えた合計消費電力と、切り替え前の消費電力との差分を求める判別式を導出し、
前記判別式の値に基づいて前記処理部の動作周波数及び動作電圧の切り替えを実行することを特徴とする電力制御方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、電力制御装置、電子計算機及び電力制御方法に関する。
【背景技術】
【０００２】
従来、複数のプロセッサを有するマルチプロセッサシステムにおいて、できるだけ低い周波数や低い電源電圧を用いてプログラムを実行することで、消費電力を削減する方法（ＤＶＦＳ：Ｄｙｎａｍｉｃ  Ｖｏｌｔａｇｅ  ａｎｄ  Ｆｒｅｑｕｅｎｃｙ  Ｓｃａｌｉｎｇ）がある。例えば、各プロセッサで実行される各プログラムの性能制約を満たす範囲で、複数のプロセッサの周波数と電源電圧とのうちの少なくとも一方を制御する方法がある（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２８７５９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来のＤＶＦＳでは、プロセッサの周波数や電源電圧を切り替える際、各プロセッサがデータ処理を停止するまでの時間やバスが停止するまでの時間に消費される電力を考慮していない。そのため、ＤＶＦＳによって低い周波数や低い電源電圧に切り替えたにもかかわらず、切り替え後の消費電力に、これらデータ処理の停止やバスの停止までの時間に消費される電力を加えると、切り替え前の消費電力よりも増えてしまうことがあるという問題点がある。
【０００５】
消費電力を削減することができる電力制御装置、電子計算機及び電力制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するため、電力制御装置は、収集部、決定部、導出部及び実行部を備えている。収集部は、データ処理を行う処理部の動作に関する情報を収集する。収集部は、データを伝送するバスの動作に関する情報を収集する。決定部は、収集された処理部の動作に関する情報及びバスの動作に関する情報に基づいて処理部の動作周波数及び動作電圧を決定する。導出部は、収集された処理部の動作に関する情報に基づいて処理部が動作を停止するまでの時間を推定する。導出部は、収集されたバスの動作に関する情報に基づいてバスが動作を停止するまでの時間を推定する。導出部は、推定した時間に消費される電力を、決定された動作周波数及び動作電圧に基づいて処理部の動作を切り替えた場合に消費される電力に加えて合計消費電力を算出する。導出部は、算出した合計消費電力と、切り替え前の消費電力との差分を求める判別式を導出する。実行部は、判別式の値に基づいて処理部の動作周波数及び動作電圧の切り替えを実行する。
【発明の効果】
【０００７】
開示の電力制御装置、電子計算機及び電力制御方法によれば、消費電力を削減することができるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施例１にかかる電力制御装置の構成を示すブロック図である。
【図２】図２は、実施例１にかかる電力制御方法を示すフローチャートである。
【図３】図３は、実施例２にかかる電子計算機のハードウェア構成を示すブロック図である。
【図４】図４は、実施例２にかかる電子計算機の機能的構成を示すブロック図である。
【図５】図５は、実施例２にかかる電子計算機における全ＣＰＵのデータ処理停止までの動作を説明する模式図である。
【図６】図６は、実施例２にかかる電子計算機における一ＣＰＵの停止までの動作を説明する模式図である。
【図７】図７は、実施例２にかかる電子計算機におけるバスの停止までの動作を説明する模式図である。
【図８】図８は、実施例２にかかる電力制御方法を示すフローチャートである。
【図９】図９は、実施例３にかかる電子計算機のハードウェア構成を示すブロック図である。
【図１０】図１０は、実施例３にかかる電子計算機における全ＣＰＵのデータ処理停止までの動作を説明する模式図である。
【発明を実施するための形態】
【０００９】
以下に、この発明にかかる電力制御装置、電子計算機及び電力制御方法の実施例を図面に基づいて詳細に説明する。以下の各実施例の説明において、同様の構成には同一の符号を付して重複する説明を省略する。なお、この実施例によりこの発明が限定されるものではない。
【００１０】
（実施例１）
・電力制御装置の説明
図１は、実施例１にかかる電力制御装置の構成を示すブロック図である。図１に示すように、電力制御装置１は、収集部２、決定部３、導出部４及び実行部５を備えている。収集部２、決定部３、導出部４及び実行部５は、例えばプロセッサに、後述する電力制御方法を実現するプログラムを実行させることにより実現されてもよい。
【００１１】
収集部２は、データ処理を行う処理部（図示省略）の動作に関する情報を収集する。例えば、処理部の動作に関する情報は、処理部で実行中のタスクの負荷量の情報を含んでいてもよい。また、収集部２は、データを伝送するバス（図示省略）の動作に関する情報を収集する。例えば、バスの動作に関する情報は、バスがダイレクトメモリアクセスによって動作中であるか否かという情報、及び１回のダイレクトメモリアクセスによって転送されるデータ量の情報を含んでいてもよい。
【００１２】
決定部３は、収集部２により収集された処理部の動作に関する情報及びバスの動作に関する情報に基づいて、切り替え後の処理部の動作周波数及び動作電圧を決定する。
【００１３】
導出部４は、収集部２により収集された処理部の動作に関する情報に基づいて、処理部が動作を停止するまでの時間を推定する。導出部４は、収集部２により収集されたバスの動作に関する情報に基づいて、バスが動作を停止するまでの時間を推定する。導出部４は、決定部３により決定された動作周波数及び動作電圧に基づいて処理部の動作を切り替えた場合に消費される電力に、処理部及びバスの停止までの推定時間に消費される電力を加えて合計消費電力を算出する。導出部４は、算出した合計消費電力と、切り替え前の消費電力との差分を求める判別式を導出する。
【００１４】
実行部５は、判別式の値に基づいて処理部の動作周波数及び動作電圧の切り替えを実行する。例えば、実行部５は、処理部の動作を切り替えた場合に消費される電力に、処理部及びバスの停止までの推定時間に消費される電力を加えた合計消費電力から、切り替え前の消費電力を引いた値が０よりも小さい場合に、切り替えを実行してもよい。
【００１５】
・電力制御方法の説明
図２は、実施例１にかかる電力制御方法を示すフローチャートである。図２に示すように、電力制御装置１において電力制御方法が開始されると、収集部２は、処理部の動作に関する情報及びバスの動作に関する情報を収集する（ステップＳ１）。次いで、決定部３は、収集部２により収集された処理部の動作に関する情報及びバスの動作に関する情報に基づいて切り替え後の処理部の動作周波数及び動作電圧を決定する（ステップＳ２）。
【００１６】
次いで、導出部４は、処理部及びバスが動作を停止するまでの時間を推定する。導出部４は、処理部の動作を切り替えた場合に消費される電力に、その動作停止までの推定時間に消費される電力を加えた合計消費電力を求める。そして、導出部４は、その合計消費電力と切り替え前の消費電力との差分を求める判別式を導出する（ステップＳ３）。
【００１７】
次いで、実行部５は、判別式の値が切り替えの条件を満たす値である場合（ステップＳ４：Ｙｅｓ）、処理部の動作周波数及び動作電圧を、決定部３により決定された動作周波数及び動作電圧に切り替えることを実行する（ステップＳ５）。そして、一連の処理を終了する。一方、例えば判別式の値が切り替えの条件を満たさない値である場合（ステップＳ４：Ｎｏ）、実行部５は、動作周波数及び動作電圧の切り替えを実行しないで一連の処理を終了する。
【００１８】
実施例１によれば、切り替え後の消費電力に、処理部及びバスが停止するまでの推定時間に消費される電力を加えることによって、切り替えによって電力消費量が減るか否かを見積もることができる。従って、切り替え後の消費電力に、処理部及びバスが停止するまでの推定時間に消費される電力を加えた合計消費電力が切り替え前の消費電力よりも多くなる場合に切り替えを実行しないようにすることによって、切り替えによって消費電力が増えてしまうのを防ぐことができる。そして、合計消費電力が切り替え前の消費電力よりも少なくなる場合に切り替えを実行することによって、消費電力を削減することができる。
【００１９】
（実施例２）
実施例２は、実施例１にかかる電力制御装置を電子計算機のＤＶＦＳを制御する装置に適用した例である。電子計算機の一例として、例えばパーソナルコンピュータやワークステーションなどのコンピュータ、またはＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔｓ）などの携帯情報端末が挙げられる。また、一例として、携帯電話機、携帯電話機と携帯情報端末としての機能を併せ持ついわゆるスマートフォンと呼ばれる携帯端末、種々の測定器、または種々の電子装置の組み込みシステムなどが挙げられる。
【００２０】
・電子計算機のハードウェア構成の説明
図３は、実施例２にかかる電子計算機のハードウェア構成を示すブロック図である。図３に示すように、電子計算機１１は、コプロセッサ１２、及び処理部の一例として例えばＮ個のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置）（＃１、＃２、・・・、＃Ｎ）１３〜１５を備えている。Ｎは、２以上の整数である。図３には、３個以上のＣＰＵが示されているが、ＣＰＵの数は２個でもよい。
【００２１】
コプロセッサ１２は、ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５に対してＤＶＦＳを制御する。例えばコプロセッサ１２は、ＤＶＦＳによって各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５の動作周波数や動作電圧を切り替える際、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５に対してデータ処理の停止命令を発行する。また、例えばコプロセッサ１２は、ＤＶＦＳによって各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５の動作周波数や動作電圧を切り替える際、バス２０に対して動作の停止命令を発行する。
【００２２】
ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５は、それぞれに割り当てられたタスクを並列処理する。タスクの割り当ては、何れかのＣＰＵでＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ、オペレーティングシステム）が実行されることにより実現されるスケジューラによって行われてもよい。ここでは、ＣＰＵ＃１＿１３がＯＳを実行するとして説明する。ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５は、マルチプロセッサシステムの個々のマイクロプロセッサであってもよいし、マルチコアプロセッサの個々のコアであってもよい。
【００２３】
電子計算機１１は、分散メモリ型の計算機であり、例えばコプロセッサ１２、ＣＰＵ＃１＿１３、ＣＰＵ＃２＿１４、・・・及びＣＰＵ＃Ｎ＿１５のそれぞれに独立してメモリ１６〜１９が接続されていてもよい。メモリ１６〜１９は、それぞれコプロセッサ１２及びＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５により作業領域として使用される。メモリ１６〜１９の一例として、例えばＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ、ランダムアクセスメモリ）が挙げられる。
【００２４】
コプロセッサ１２、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５及び各メモリ１６〜１９は、バス２０に接続されている。バス２０には、バスアービタ２１、ペリフェラル（周辺装置）２２及びＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ、ダイレクトメモリアクセスコントローラ）２３が接続されている。バス２０は、バス２０に接続された各構成部１２〜１９，２１〜２３の間でデータを伝送する。
【００２５】
ペリフェラル２２は、例えばキーボードやキーパッドやタッチパネルやマウスやマイクなどの入力装置、及びディスプレイやプリンタやスピーカや振動用のモータなどの出力装置、種々のメモリカードなどの外部記憶装置であってもよい。ＤＭＡＣ２３は、メモリ１６〜１９とペリフェラル２２との間のダイレクトメモリアクセスを制御する。バスアービタ２１は、バスマスタである各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５とＤＭＡＣ２３との間でバス２０の使用権を調停する。
【００２６】
・電子計算機の機能的構成の説明
図４は、実施例２にかかる電子計算機の機能的構成を示すブロック図である。図４に示すように、電子計算機１１において、電力制御装置１は、ハードウェアであるコプロセッサ１２で、ソフトウェアである特権プログラム３１が実行されることにより実現される。特権プログラム３１の実行により、収集部２、決定部３、導出部４及び実行部５が実現される。
【００２７】
収集部２からの依頼により収集された情報は、直接、決定部３へ送られてもよいし、一旦収集部２へ送られ、収集部２から決定部３へ送られてもよい。ここでは、収集された情報が直接、決定部３へ送られるとして説明する。収集部２は、周波数電圧用収集部３２及び消費電力量用収集部３３を有する。
【００２８】
周波数電圧用収集部３２は、ＣＰＵ＃１＿１３で実行されているＯＳ３８に対して、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５の動作に関する情報を依頼する。ＯＳ３８は、周波数電圧用収集部３２からの依頼に応答して、決定部３に各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５の動作に関する情報を提供する。
【００２９】
各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５の動作に関する情報の一例として、例えば各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５においてタスクを完了させるために与えられた残り時間であるデッドライン時間や、実行されるタスクの最長実行時間の情報が挙げられる。タスクの最長実行時間は、タスクごとに例えばシミュレーションによって予め求められていてもよい。
【００３０】
消費電力量用収集部３３は、ＯＳ３８に対して、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５の動作に関する情報を依頼するとともに、バスアービタ２１及びＤＭＡＣ２３に対して、バス２０の動作に関する情報を依頼する。消費電力量用収集部３３からの依頼に応答して、ＯＳ３８は、決定部３に各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５の動作に関する情報を提供する。消費電力量用収集部３３からの依頼に応答して、バスアービタ２１及びＤＭＡＣ２３は、決定部３にバス２０の動作に関する情報を提供する。
【００３１】
各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５の動作に関する情報の一例として、例えば各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５において実行中のタスクが終了するまでの平均実行時間の情報や、実行中のタスクの負荷量の情報が挙げられる。バス２０の動作に関する情報の一例として、ダイレクトメモリアクセスの実行中であるか否かという情報や、１回あたりのダイレクトメモリアクセスでバス２０が占領される時間の情報が挙げられる。ダイレクトメモリアクセスの実行中であるか否かという情報は、例えばバスアービタ２１から得られる。バス２０の占領時間の情報は、例えばＤＭＡＣ２３から得られる。なお、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５やバス２０の動作に関する情報がＯＳ３８に記録されている場合には、周波数電圧用収集部３２及び消費電力量用収集部３３は、ＯＳ３８からそれらの情報を取得することができる。
【００３２】
決定部３は、例えば各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５のデッドライン時間やタスクの最長実行時間の情報に基づいて、ＤＶＦＳによって切り替えられた後の各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５の動作周波数及び動作電圧を決定する。決定部３によって、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５について、デッドライン時間を守る範囲で例えば低い動作周波数及び低い動作電圧が決定される。例えばＣＭＯＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ  Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）回路の場合、動作周波数に動作電圧の２乗を掛け合わせたものに消費電力が比例するので、動作周波数及び動作電圧が低くなれば消費電力が減る可能性がある。
【００３３】
導出部４は、全ＣＰＵ停止時間推定部３４、バス停止時間推定部３５及び判別式構成部３６を有する。
【００３４】
全ＣＰＵ停止時間推定部３４は、コプロセッサ１２がデータ処理の停止命令を発行してから、全てのＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５でデータ処理が停止するまでに、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５で生じる待機時間を推定する。各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５の待機時間の推定方法については後述する。
【００３５】
バス停止時間推定部３５は、コプロセッサ１２がバス２０の動作の停止命令を発行してから、バス２０が動作を停止するまでに要する時間を推定する。バス２０の動作停止時間の推定方法については後述する。
【００３６】
判別式構成部３６は、ＤＶＦＳを実行した場合の消費電力量の推定値と、ＤＶＦＳを実行しない場合の消費電力量の推定値とを求める。判別式構成部３６は、求めた消費電力量の推定値に基づいて、ＤＶＦＳを実行するか否かを判別する判別式を導出し、値を求める。判別式の導出方法については後述する。
【００３７】
実行部５は、判別式の値に基づいて、ＤＶＦＳを実行するか否かを決定する。例えば、実行部５は、ＤＶＦＳを実行した場合の消費電力量の推定値が、ＤＶＦＳを実行しない場合の消費電力量の推定値よりも小さい場合に、ＤＶＦＳを実行する。例えば、実行部５は、ＤＶＦＳを実行した場合の消費電力量の推定値が、ＤＶＦＳを実行しない場合の消費電力量の推定値よりも大きい場合には、ＤＶＦＳを実行しない。ＤＶＦＳを実行する場合、実行部５は、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５でのデータ処理を停止させるための停止命令及びバス２０の動作を停止させるための停止命令を発行する。
【００３８】
コプロセッサ１２は、変更部３７を備えている。変更部３７は、実行部５がＤＶＦＳを実行すると決めた場合に、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５の動作周波数及び動作電圧を、決定部３により決定された動作周波数及び動作電圧に変更する。図４には、変更部３７がＣＰＵ＃１＿１３の動作周波数及び動作電圧を変更するように示されているが、変更部３７は、図示省略した各ＣＰＵ（＃２、・・・、＃Ｎ）１４，１５の動作周波数及び動作電圧も変更する。
【００３９】
・全ＣＰＵのデータ処理が停止するまでの動作の説明
図５は、実施例２にかかる電子計算機における全ＣＰＵのデータ処理停止までの動作を説明する模式図である。図５に示すように、実施例２のアーキテクチャでは、コプロセッサ１２、ＣＰＵ＃１＿１３、ＣＰＵ＃２＿１４、・・・、及びＣＰＵ＃Ｎ＿１５間に親子関係があるとする。そして、親に当たるプロセッサと子に当たるプロセッサとの間でしかメッセージをやり取りすることができないとする。
【００４０】
図示例では、コプロセッサ１２は、ＣＰＵ＃１＿１３に対して親に当たり、ＣＰＵ＃１＿１３は、コプロセッサ１２に対して子に当たるとする。また、図示省略したＣＰＵ＃［Ｎ−１］は、ＣＰＵ＃Ｎ＿１５に対して親に当たり、ＣＰＵ＃Ｎ＿１５は、ＣＰＵ＃［Ｎ−１］に対して子に当たるとする。
【００４１】
コプロセッサ１２は、ＤＶＦＳを実行する際、まず、子に当たるＣＰＵ＃１＿１３に対してデータ処理の停止命令を発行し、データ処理を停止するように通知する（ステップＳ１１）。そして、コプロセッサ１２は、動作を停止する（ステップＳ１２）。動作を停止した後、全てのＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５のデータ処理が停止するまでの時間が、コプロセッサ１２の待機時間４１となる。
【００４２】
ＣＰＵ＃１＿１３は、コプロセッサ１２からデータ処理停止の通知を受け取ると、子に当たるＣＰＵ＃２＿１４に対してデータ処理を停止するように通知する（ステップＳ１３）。そして、ＣＰＵ＃１＿１３は、データ処理を停止する（ステップＳ１４）。データ処理を停止した後、残りのデータ処理中のＣＰＵ（＃２、・・・、＃Ｎ）１４，１５のデータ処理が停止するまでの時間が、ＣＰＵ＃１＿１３の待機時間４２となる。
【００４３】
ＣＰＵ＃２＿１４は、ＣＰＵ＃１＿１３からデータ処理停止の通知を受け取ると、子に当たる図示省略したＣＰＵ＃３に対してデータ処理を停止するように通知する（ステップＳ１５）。そして、ＣＰＵ＃２＿１４は、データ処理を停止する（ステップＳ１６）。データ処理を停止した後、残りのデータ処理中のＣＰＵ（＃３、・・・、＃Ｎ）１５のデータ処理が停止するまでの時間が、ＣＰＵ＃２＿１４の待機時間４３となる。
【００４４】
ＣＰＵ＃３以降のＣＰＵについても同様である。最後に残ったデータ処理中のＣＰＵ＃Ｎ＿１５がデータ処理を停止すると、全てのアプリケーションが停止したことになる（ステップＳ１７）。従って、ＣＰＵ＃Ｎ＿１５については、待機時間は発生しない。コプロセッサ１２及び各ＣＰＵ（＃１、＃２、・・・、＃［Ｎ−１］）１３，１４の待機時間４１〜４３において、無駄な電力が消費される。
【００４５】
・各ＣＰＵの待機時間の推定方法の説明
図６は、実施例２にかかる電子計算機における一ＣＰＵの停止までの動作を説明する模式図である。ＣＰＵがデータ処理を停止するまでの動作は、何れのＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５でも同じであるが、ここでは、ＣＰＵ＃１＿１３を例にして説明する。
【００４６】
図６に示すように、例えばＣＰＵ＃１＿１３がタスク＃１、タスク＃２及びタスク＃３をこの順番で繰り返し実行しているとする。例えば、ＣＰＵ＃１＿１３は、あるサイクルのタスク＃１＿５１の実行中にＣＰＵ停止の割り込みを受けると、割り込みを受けたときに実行中であるタスク＃１＿５１の終了時点で停止する。
【００４７】
タスク＃１＿５１の実行中、ＣＰＵ＃１＿１３にＣＰＵ停止の割り込みが入るタイミングは任意である。従って、ＣＰＵ＃１＿１３にＣＰＵ停止の割り込みが入ってから、ＣＰＵ＃１＿１３が停止するまでの平均時間は、ＯＳ３８がタスク＃１＿５１に割り当てた時間、すなわちタイムスライスの１／２の時間であるとみなしてもよい。
【００４８】
また、タスク＃１＿５１の負荷量をＳ(1)とすると、ＣＰＵ＃１＿１３にＣＰＵ停止の割り込みが入ってから、ＣＰＵ＃１＿１３が停止するまでの平均時間は、αＳ(1)と推定することができる。αは比例定数である。
【００４９】
ＣＰＵ＃１＿１３にＣＰＵ停止の割り込みが入るタイミングは任意であるので、ＣＰＵ＃１＿１３がタスク＃２またはタスク＃３の実行中にＣＰＵ停止の割り込みを受けた場合も、同様である。従って、ＣＰＵ＃１＿１３がＣＰＵ停止の割り込みを受けてから停止するまでの平均時間は、次の（１）式で表される。
【００５０】
【数１】
2013073013.tif 000053
【００５１】
ここで、ｋ番目のＣＰＵ＃ｋに割り当てられた＃１〜＃ｍの各タスクの負荷量をＳ(1)k、・・・、Ｓ(m)kとする。ｍは、２以上の整数であり、ｋの値によって異なっていてもよい。ｋは、１〜Ｎの整数である。ＣＰＵ＃ｋにＣＰＵ停止の割り込みが入ってからＣＰＵ＃ｋのデータ処理が停止するまでの時間Ｓkは、次の（２）式で表される。（２）式において、ｉ及びｊは、１〜ｍの整数である。
【００５２】
【数２】
2013073013.tif 000054
【００５３】
従って、ｋ番目のＣＰＵ＃ｋについて、データ処理を停止してから全てのアプリケーションが停止するまでの待機時間ＴCPU_kは、［ｋ＋１］番目からＮ番目までの各ＣＰＵがデータ処理を停止するまでの時間を足し合わせたものとなる。これを式で表すと、次の（３）式となる。ただし、便宜上、コプロセッサ１２を０番目のＣＰＵ、すなわちＣＰＵ＃０と表すと、（３）式は、コプロセッサ１２の待機時間も含めた式となる。つまり、（３）式では、ｋは０〜Ｎの整数である。
【００５４】
【数３】
2013073013.tif 000055
【００５５】
・バスの動作停止時間の推定方法の説明
図７は、実施例２にかかる電子計算機におけるバスの停止までの動作を説明する模式図である。図７に示すように、ＤＭＡ実行中５２にコプロセッサ１２がバス２０に対して動作の停止命令を発行すると、バス２０は、停止命令が発行されたときのダイレクトメモリアクセスの終了時点で停止する。
【００５６】
ＤＭＡ実行中５２にバス２０に対して停止命令が発行されるタイミングは任意である。従って、１回のダイレクトメモリアクセスでバス２０が占領される時間をＴDMAとすると、ＤＭＡ実行中５２にバス停止命令が発行されてからバス２０が停止するまでに要する時間の期待値は、［ＴDMA／２］である。ＤＭＡ実行中でないときにバス停止命令が発行されると、バス２０は直ちに停止する。バス２０に対して停止命令が発行されてからバス２０が停止するまでに要する時間をＴBUSとすると、ＴBUSは、次の（４）式で表される。
【００５７】
【数４】
2013073013.tif 000056
【００５８】
（４）式において、「その他」には、ＤＭＡ実行中でない場合が含まれている。ここで、ＴDMAは、１回のＤＭＡでのデータ転送量に比例する。１回のＤＭＡでのデータ転送量は、次の（５）式で表される。（５）式は、１回のＤＭＡで転送されるデータ転送量の上限とＣＰＵがＤＭＡＣに依頼したデータ転送量とで、何れか小さい方の値であることを表している。
【００５９】
【数５】
2013073013.tif 000057
【００６０】
・判別式の導出方法の説明
ＤＶＦＳ実行前のＣＰＵ＃０（コプロセッサ１２）、ＣＰＵ＃１＿１３、・・・、ＣＰＵ＃Ｎ＿１５の電力をそれぞれＰ0_high、Ｐ1_high、・・・、ＰN_highとする。ＤＶＦＳ実行後のＣＰＵ＃０（コプロセッサ１２）、ＣＰＵ＃１＿１３、・・・、ＣＰＵ＃Ｎ＿１５の電力をそれぞれＰ0_low、Ｐ1_low、・・・、ＰN_lowとする。
【００６１】
ただし、１以上の整数ｉに対して、［Ｐi_high≧Ｐi_low］を満たすとする。また、コプロセッサ１２の電力は一定であるとする。すなわち、ｉが０である場合、［Ｐ0_high＝Ｐ0_low］であるとする。
【００６２】
・１．ＤＶＦＳを実行しない場合の消費電力量
ＤＶＦＳ実行前の電力がＰi_highであるＣＰＵ＃ｉにおいて、Ｐi_highの電力のままで実行中のタスクが終了するまでの平均時間をＴi_highとする。この場合、ＣＰＵ＃ｉにおいてタスクが終了するまでに全ＣＰＵが消費する電力量の合計は、次の（６）式で表されるＰ1であると推定される。すなわち、ＤＶＦＳを実行しない場合の全ＣＰＵ（コプロセッサ１２を含む）の消費電力量は、Ｐ1であると推定される。
【００６３】
【数６】
2013073013.tif 000058
【００６４】
・２．ＤＶＦＳを実行する場合の消費電力量
ＣＰＵ＃ｉにおいて、電力をＰi_lowに下げてから、実行中のタスクが終了するまでの平均時間をＴi_lowとする。この場合、コプロセッサ１２がＣＰＵの停止命令を発行してからＣＰＵ＃ｉにおいてタスクが終了するまでに全ＣＰＵが消費する電力量の合計は、次の（７）式で表されるＰ2であると推定される。すなわち、ＤＶＦＳを実行する場合の全ＣＰＵ（コプロセッサ１２を含む）の消費電力量は、Ｐ2であると推定される。
【００６５】
【数７】
2013073013.tif 000059
【００６６】
上記（７）式の右辺において、第１項目は、全ＣＰＵでのタスクの実行に消費される電力量を表している。第２項目は、ＤＶＦＳを実行する際の準備において全ＣＰＵで消費される電力量を表している。第３項目の「Ｃｏｎｓｔ」は、ＤＶＦＳ自体の消費電力量を表している。第２項目と第３項目とを足した消費電力量は、ＤＶＦＳを実行する際のオーバーヘッドである。
【００６７】
ＴCPU_iは、コプロセッサ１２がＣＰＵの停止命令を発行してからＣＰＵ＃ｉが停止するまでの時間である。ＴBUS'は、全てのＣＰＵが停止してからバス２０が停止するまでの時間である。ＴBUS'は、次の（８）式で表される。すなわち、ＴBUS'は、ＴCPU_kのうち最も大きい値をＴBUSから引いた値と、０とで、何れか大きい方の値である。ＴBUS'の値が０となるのは、データ処理中のＣＰＵがある状態でバス２０が動作を停止した場合である。
【００６８】
【数８】
2013073013.tif 000060
【００６９】
・３．判別式の構成
判別式は、例えば上述したＤＶＦＳを実行する場合の消費電力量Ｐ2からＤＶＦＳを実行しない場合の消費電力量Ｐ2を引いた式であってもよい。この場合、判別式の値Ｄは、次の（９）式で表される。
【００７０】
【数９】
2013073013.tif 000061
【００７１】
・４．ＤＶＦＳを実行するか否かの判断
上述した判別式の値Ｄが０よりも小さい場合、ＤＶＦＳを実行した方が実行しない場合よりも消費電力が少なくなると推定されるので、ＤＶＦＳを実行してもよい。Ｄが０以上の場合には、ＤＶＦＳを実行しても消費電力が変わらないか、増えてしまう虞があるので、ＤＶＦＳを実行しなくてもよい。
【００７２】
・電力制御方法の説明
図８は、実施例２にかかる電力制御方法を示すフローチャートである。図８に示すように、電子計算機１１において電力制御方法が開始されると、収集部２は、例えば定期的に、ＯＳ３８やバスアービタ２１やＤＭＡＣ２３に対して、ＤＶＦＳを実行するか否かを判断する材料となる情報の提供を依頼する。それによって、決定部３に、例えば上述したタスク完了までのデッドライン時間、タスクの最長実行時間、タスク終了までの平均実行時間、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５の負荷量及びＤＭＡの実行中か否か、などの情報が収集される（ステップＳ２１）。
【００７３】
次いで、決定部３は、収集された各情報に基づいてＤＶＦＳを実行した場合の各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５の動作周波数及び動作電圧を決定する（ステップＳ２２）。全てのＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５について、決定した動作周波数及び動作電圧の値に変化がない場合、すなわち現在の値と同じである場合（ステップＳ２２：変化なし）、ステップＳ２１に戻る。
【００７４】
決定した動作周波数及び動作電圧の値が現在の値よりも小さいＣＰＵが存在し、かつ現在の値よりも大きいＣＰＵが存在しない場合（ステップＳ２２：小さいものあり、かつ大きいものなし）、導出部４は、判別式を導出してその値Ｄを算出する（ステップＳ２３）。判別式の値Ｄが０よりも大きい場合には（ステップＳ２３：Ｄ＞０）、ステップＳ２１に戻る。
【００７５】
判別式の値Ｄが０よりも小さい場合には（ステップＳ２３：Ｄ＜０）、実行部５は、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５でのデータ処理を停止させるための停止命令及びバス２０の動作を停止させるための停止命令を発行する（ステップＳ２４）。それによって、全てのＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５でのデータ処理が停止し、バス２０の動作が停止する。
【００７６】
その後、変更部３７は、全ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５及びバス２０の停止が完了した通知を受けると、ＤＶＦＳを実行する（ステップＳ２５）。それによって、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５の動作周波数及び動作電圧が、ステップＳ２２で決定された動作周波数及び動作電圧に切り替えられる。その後、実行部５は、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５に対して、アプリケーションを再開する命令を発行する（ステップＳ２６）。それによって、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５は、データ処理を再開する。そして、ステップＳ２１に戻り、一連の処理を繰り返す。
【００７７】
一方、決定部３が決定した動作周波数及び動作電圧の値が現在の値よりも大きいＣＰＵが存在する場合（ステップＳ２２：大きいものあり）、ステップＳ２３を省略してステップＳ２４へ進む。この場合には、動作周波数及び動作電圧の値が現在の値よりも大きくなってしまったＣＰＵについて、ＤＶＦＳによって動作周波数及び動作電圧の値が現在の値よりも大きくなるように切り替えられる。これは、現在の動作周波数及び動作電圧でデータ処理を続けたのでは、デッドライン時間を守ることができないため、現在よりも高速でデータ処理を行う必要があるからである。
【００７８】
・ＤＶＦＳを実行しない方が消費電力を削減できる例
次に、実施例２の効果の一例として、ＤＶＦＳを実行しない方が実行する場合よりも消費電力を削減することができる例を説明する。簡単のため、図３に示す構成において、電子計算機１１は、２個のＣＰＵ（＃１、＃２）１３，１４を有するとする。
【００７９】
例えば、ＣＰＵ＃１＿１３でタスク＃Ａ及びタスク＃Ｂを実行中であり、ＣＰＵ＃２＿１４でタスク＃Ｃ及びタスク＃Ｄを実行中であるとする。また、タスク＃Ａ及びタスク＃Ｂのタイムスライスを２ｍｓｅｃとし、タスク＃Ｃ及びタスク＃Ｄのタイムスライスを１ｍｓｅｃであるとする。コプロセッサ１２の消費電力を１０ｍＷとし、ＣＰＵ＃１＿１３の消費電力を１００ｍＷとし、ＣＰＵ＃２＿１４の消費電力を５０ｍＷとする。タスク＃Ａ及びタスク＃Ｂが終了するまでの時間を１０ｍｓｅｃとし、タスク＃Ｃ及びタスク＃Ｄが終了するまでの時間を５ｍｓｅｃとする。
【００８０】
上述した動作状態において、ＤＶＦＳを実行しない場合の全タスクが終了するまでの消費電力は、次の（１０）式で表される。（１０）式において、左辺の第１項目は、コプロセッサ１２の消費電力を表している。第２項目は、ＣＰＵ＃１＿１３の消費電力を表している。第３項目は、ＣＰＵ＃２＿１４の消費電力を表している。
【００８１】
【数１０】
2013073013.tif 000062
【００８２】
次に、決定部３がＣＰＵ＃２＿１４の周波数を半分にし、それに伴って電力を２０ｍＷに下げると決定したとする。この場合、ＣＰＵ＃２＿１４の周波数が半分になったので、タスク＃Ｃ及びタスク＃Ｄが終了するまでの時間は、上述した５ｍｓｅｃの２倍の１０ｍｓｅｃとなる。従って、ＤＶＦＳを実行した場合の全タスクが終了するまでの消費電力量は、次の（１１）式で表される。（１１）式において、左辺の第１項目は、コプロセッサ１２の消費電力を表している。第２項目は、ＣＰＵ＃１＿１３の消費電力を表している。第３項目は、ＣＰＵ＃２＿１４の消費電力を表している。
【００８３】
【数１１】
2013073013.tif 000063
【００８４】
（１０）式と（１１）式とを単純に比較すると、ＤＶＦＳを実行した方が実行しない場合よりも消費電力量が減っている。しかしながら、ＤＶＦＳを実行する際には、オーバーヘッドが生じるので、このオーバーヘッドの消費電力量も考慮するのが好ましい。
【００８５】
ＤＶＦＳを実行する際には、ＣＰＵ＃１＿１３とＣＰＵ＃２＿１４とが停止する。実行部５がＣＰＵの停止命令を発行してからＣＰＵ＃１＿１３が停止するまでにかかる平均時間は、ＯＳ３８が各タスクに割り当てたタイムスライスの１／２であると期待される。ＣＰＵ＃２＿１４についても同様である。従って、ＣＰＵの停止命令の発行からＣＰＵ＃１＿１３及びＣＰＵ＃２＿１４が停止するまでにかかる時間は、平均で次の（１２）式で表される。
【００８６】
【数１２】
2013073013.tif 000064
【００８７】
（１２）式より、ここでの例では、ＣＰＵの停止命令の発行からＣＰＵ＃１＿１３及びＣＰＵ＃２＿１４が停止するまでにかかる時間は、平均で１．５ｍｓｅｃである。つまり、コプロセッサ１２では、平均で１．５ｍｓｅｃの待機時間が発生し、ＣＰＵ＃１＿１３では、平均で０．５ｍｓｅｃの待機時間が発生することになる。これらの待機時間に消費される電力量は、次の（１３）式で表される。
【００８８】
【数１３】
2013073013.tif 000065
【００８９】
従って、ＤＶＦＳを実行する場合の消費電力量は、上記（１１）式の値と（１３）式の値とを足し合わせることとなり、次の（１４）式で表される。（１４）式より、ＤＶＦＳのオーバーヘッドを考慮してＤＶＦＳを実行すると、実行しない場合よりも消費電力量が増えてしまう結果となる。この場合には、ＤＶＦＳを実行しないのがよい。もちろん、ＤＶＦＳを実行するとした場合の消費電力量が、ＤＶＦＳを実行しない場合の消費電力量よりも少なくなれば、ＤＶＦＳを実行するのがよい。
【００９０】
【数１４】
2013073013.tif 000066
【００９１】
・判別式を用いて繰り返しＤＶＦＳの実行を判断することの効果
上述した判別式では、推定値（期待値）を用いているので、判別式の値が実際の消費電力量の増減を正確に反映しているとは限らない。つまり、判別式の値Ｄに基づいてＤＶＦＳを実行するか否かを判断しても消費電力量が増えてしまう虞がある。しかし、判別式の値Ｄに基づいてＤＶＦＳを実行するか否かを判断する回数が増えるほど、判別式の値Ｄに基づいてＤＶＦＳを実行するか否かを判断しない場合に比べて、消費電力量を減らすことができる。このことが正しいことを以下に説明する。
【００９２】
判別式の値Ｄに基づいてＤＶＦＳを実行するか否かを判断するケースをケース１とし、判別式の値Ｄに基づいてＤＶＦＳを実行するか否かを判断しないケースをケース２とする。ケース１及びケース２のそれぞれについてｎ回、実施したときの消費電力量を比較し、ｎが大きいときに、ケース１をｎ回、実施したときの合計消費電力量からケース２をｎ回、実施したときの合計消費電力量を引いた値が０よりも小さくなることを示す。ｎは、正の整数である。
【００９３】
ケース２の消費電力量からケース１の消費電力量を引いた値を確率変数Ｘiとする。ケース１をｎ回、実施したときの合計消費電力量からケース２をｎ回、実施したときの合計消費電力量を引いた値は、次の（１５）式で表される。従って、（１５）式の値が０よりも小さくなることを示せばよい。（１５）式〜（１８）式において、ｉは１〜ｎの整数である。
【００９４】
【数１５】
2013073013.tif 000067
【００９５】
Ｘの期待値をＥ［Ｘ］と表すと、次の（１６）式が成り立つ。Ｘの分散をＶ［Ｘ］と表し、Ｅ［Ｘi］をμiとおき、Ｖ［Ｘi］をσi2とおくと、μiは０以下である。ここで、ΣＸi／ｎ（Σにおいて、ｉが取り得る値は１〜ｎである）の平均及び分散を考えると、次の（１６）式及び（１７）式が成り立つ。
【００９６】
【数１６】
2013073013.tif 000068
【００９７】
【数１７】
2013073013.tif 000069
【００９８】
従って、ｎが大きいとき、次の（１８）式が成り立つ。
【００９９】
【数１８】
2013073013.tif 000070
【０１００】
（１８）式より、（１５）式の値が０よりも小さくなることが示された。０以上のある数ｙを設定して（１８）式を変形すると、（１９）式が得られる。（１９）式をさらに変形すると、（２０）式が得られるので、ｎが大きくなるほど、ケース１とケース２の差が広がっていくことが示された。
【０１０１】
【数１９】
2013073013.tif 000071
【０１０２】
【数２０】
2013073013.tif 000072
【０１０３】
実施例２によれば、コプロセッサ１２を含む全ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５間に親子関係がある例えば分散メモリ型の電子計算機１１において、実施例１と同様の効果が得られる。
【０１０４】
（実施例３）
・電力制御装置のハードウェアの説明
図９は、実施例３にかかる電子計算機のハードウェア構成を示すブロック図である。図９に示すように、実施例３にかかる電子計算機１１は、共有メモリ型の計算機であり、バス２０に接続された共有メモリ２４を有している。電子計算機１１のその他のハードウェア構成及び機能的構成は、実施例２と同様であるので、説明を省略する。
【０１０５】
図１０は、実施例３にかかる電子計算機における全ＣＰＵのデータ処理停止までの動作を説明する模式図である。図１０に示すように、実施例３のアーキテクチャでは、コプロセッサ１２、ＣＰＵ＃１＿１３、ＣＰＵ＃２＿１４、・・・、及びＣＰＵ＃Ｎ＿１５間に親子関係がない。コプロセッサ１２及び各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５は、共有メモリ２４を介して相互にメッセージのやりとりを行うことができる。
【０１０６】
コプロセッサ１２は、ＤＶＦＳを実行する際、全ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５に対してデータ処理の停止命令を発行し、データ処理を停止するように通知する（ステップＳ３１）。そして、コプロセッサ１２は、動作を停止する（ステップＳ３２）。
【０１０７】
各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５は、コプロセッサ１２からデータ処理停止の通知を受け取ると、それぞれデータ処理を停止する（ステップＳ３３〜ステップＳ３５）。各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５がデータ処理を停止した後、残りのデータ処理中のＣＰＵのデータ処理が停止するまでの時間が、コプロセッサ１２及び各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５の待機時間４１，４２，４４となる。
【０１０８】
最後に残ったデータ処理中のＣＰＵ、図示例ではＣＰＵ＃２＿１４がデータ処理を停止すると、全てのアプリケーションが停止したことになる（ステップＳ３６）。最後にデータ処理を停止した例えばＣＰＵ＃２＿１４については、待機時間は発生しない。コプロセッサ１２及び各ＣＰＵ（＃１、・・・、＃Ｎ）１３，１５の待機時間４１，４２，４４において、無駄な電力が消費される。
【０１０９】
なお、図１０に示す動作は、分散メモリ型の電子計算機において、コプロセッサ１２と全てのＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５との間に親子関係がなく、相互にメッセージのやりとりができる場合も同様である。従って、実施例３において以下の説明には、相互にメッセージのやりとりが可能な分散メモリ型の電子計算機の例も含む。
【０１１０】
・各ＣＰＵの待機時間の推定方法の説明
各ＣＰＵの待機時間は、各タスクに割り当てられるタイムスライスをどのように仮定するかによって、例えば次の３つの方法で推定することができる。
【０１１１】
・第１番目の推定方法
まず、全ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５において実行中のソフトウェアの負荷量が等しいと仮定し、そのため全てのタスクに割り当てられるタイムスライスが等しくＴであると仮定する。
【０１１２】
この場合、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５が停止するまでの時間Ｘkを確率変数とみなすと、Ｘkはそれぞれ独立に［０，Ｔ］の一様分布に従う。つまり、Ｘkは等しい確率で０〜Ｔの間の数値をとり、ＸiとＸj（ただし、ｉ≠ｊ）の間には依存関係がない。確率変数Ｘが定数ｘ以下となる確率をＰ（Ｘ＜ｘ）とすると、互いに独立であるＸ及びＹについて、定理より、次の（２１）式が成り立つ。
【０１１３】
【数２１】
2013073013.tif 000073
【０１１４】
最も遅いタイミングで停止するＣＰＵの停止までの時間Ｘkが定数ｘ以下となる確率は、ｘの範囲に応じて次の（２２）式〜（２４）式で表される。
【０１１５】
【数２２】
2013073013.tif 000074
【０１１６】
【数２３】
2013073013.tif 000075
【０１１７】
【数２４】
2013073013.tif 000076
【０１１８】
Ｘの確率分布はＰ（Ｘ＜ｘ）の微分で与えられるので、［ｍａｘ｛Ｘｉ｜ｉ＝１，２，．．．，Ｎ｝］の確率分布をｆ（ｘ)とすると、上記（２２）式〜（２４）式より、次の（２５）式が得られる。
【０１１９】
【数２５】
2013073013.tif 000077
【０１２０】
ここで、Ｘの期待値をＥ（Ｘ）と表すと、期待値の定義より、次の（２６）式が得られる。
【０１２１】
【数２６】
2013073013.tif 000078
【０１２２】
また、期待値の線形性により、次の（２７）式が成り立つので、ＴCPU_kは、次の（２８）式で表される。
【０１２３】
【数２７】
2013073013.tif 000079
【０１２４】
【数２８】
2013073013.tif 000080
【０１２５】
任意のｉ∈｛１，２，．．．，Ｎ｝について、［Ｅ（Ｘi）＝Ｔ／２］であり、［Ｅ（Ｘ0）＝０］である。従って、上記（２６）式及び（２８）式より、ＴCPU_kは、次の（２９）式で表される。ただし、コプロセッサ１２を０番目のＣＰＵとするので、ＴCPU_0は、コプロセッサ１２の待機時間である。
【０１２６】
【数２９】
2013073013.tif 000081
【０１２７】
・第２番目の推定方法
各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５において、実行中のアプリケーションの負荷量が等しいと仮定し、ＣＰＵ＃ｋで実行中のアプリケーションのタイムスライスが全てＴkであると仮定する。つまり、ＣＰＵ＃１＿１３で実行中のアプリケーションのタイムスライスは、全てＴ1であり、ＣＰＵ＃２＿１４で実行中のアプリケーションのタイムスライスは、全てＴ2であるとし、Ｔ1とＴ2は等しくなくてもよいとする。
【０１２８】
この場合、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５が停止するまでの時間Ｘkを確率変数とみなすと、Ｘkはそれぞれ独立に［０，Ｔk］の一様分布に従う。これは、Ｔ1＜Ｔ2＜・・・＜ＴNとしても一般性を失わない。
【０１２９】
最も遅いタイミングで停止するＣＰＵの停止までの時間Ｘkが定数ｘ以下となる確率は、Ｔ1及びＴ2に対するｘの範囲に応じて次の（３０）式〜（３２）式で表される。
【０１３０】
【数３０】
2013073013.tif 000082
【０１３１】
【数３１】
2013073013.tif 000083
【０１３２】
【数３２】
2013073013.tif 000084
【０１３３】
一般に、Ｘkが定数ｘ以下となる確率は、Ｔi及びＴi+1に対するｘの範囲に応じて次の（３３）式及び（３４）式で表される。
【０１３４】
【数３３】
2013073013.tif 000085
【０１３５】
【数３４】
2013073013.tif 000086
【０１３６】
［ｍａｘ｛Ｘｉ｜ｉ＝１，２，．．．，Ｎ｝］の確率分布をｆ（ｘ)とすると、上記（３０）式〜（３４）式より、次の（３５）式が得られる。
【０１３７】
【数３５】
2013073013.tif 000087
【０１３８】
ここで、Ｘの期待値をＥ（Ｘ）と表すと、次の（３６）式が得られる。
【０１３９】
【数３６】
2013073013.tif 000088
【０１４０】
任意のｉ∈｛１，２，．．．，Ｎ｝について、［Ｅ（Ｘi）＝Ｔi／２］であり、［Ｅ（Ｘ0）＝０］である。従って、上記（２８）式及び（３６）式より、ＴCPU_kは、次の（３７）式で表される。ただし、コプロセッサ１２を０番目のＣＰＵとするので、ＴCPU_0は、コプロセッサ１２の待機時間である。
【０１４１】
【数３７】
2013073013.tif 000089
【０１４２】
・第３番目の推定方法
ＣＰＵ＃ｋごとにタイムスライスが異なっていてもよく、さらに各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５においてタスクごとにタイムスライスが異なっていてもよいと仮定する。ＣＰＵ＃ｋで実行中のタスクのタイムスライスをＴ(1)k、・・・、Ｔ(m)kとする。ｍは、２以上の整数であり、ｋの値によって異なっていてもよい。ｋは、１〜Ｎの整数である。
【０１４３】
この場合、各ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５が停止するまでの時間Ｘkを確率変数とみなす。また、Ｙ(i)kが独立に［０，Ｔ(i)k］の一様分布に従うとすると、Ｘkは、次の（３８）式で表される。従って、期待値Ｅ［Ｘk］は、次の（３９）式で表される。
【０１４４】
【数３８】
2013073013.tif 000090
【０１４５】
【数３９】
2013073013.tif 000091
【０１４６】
Ｘkを一様分布で近似すると、Ｘkは［０，Ｔk］の一様分布に従う。ただし、ここでのＴkは、次の（４０）式で表される。これは、Ｔ1＜Ｔ2＜・・・＜ＴNとしても一般性を失わない。
【０１４７】
【数４０】
2013073013.tif 000092
【０１４８】
上述した第２番目の推定方法における式の導出過程と同様にしてＴCPU_kを求めると、上記（３７）式が得られる。ただし、（３７）式において、Ｔkは、上記（４０）式で与えられる。
【０１４９】
実施例３において、バスの動作停止時間の推定方法、判別式の導出方法、電力制御方法、及び判別式を用いて繰り返しＤＶＦＳの実行を判断することの効果については、実施例２と同様であるので、説明を省略する。
【０１５０】
実施例３によれば、共有メモリ型、またはコプロセッサ１２を含む全ＣＰＵ（＃１、＃２、・・・、＃Ｎ）１３〜１５間に親子関係のない例えば分散メモリ型の電子計算機１１において、実施例１と同様の効果が得られる。
【０１５１】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１５２】
（付記１）データ処理を行う処理部の動作に関する情報、及びデータを伝送するバスの動作に関する情報を収集する収集部と、
前記処理部の動作に関する情報及び前記バスの動作に関する情報に基づいて前記処理部の動作周波数及び動作電圧を決定する決定部と、
前記処理部の動作に関する情報及び前記バスの動作に関する情報に基づいて前記処理部が動作を停止するまでの時間及び前記バスが動作を停止するまでの時間を推定して、該推定時間に消費される電力を、前記決定に基づいて前記処理部の動作を切り替えた場合に消費される電力に加えた合計消費電力と、切り替え前の消費電力との差分を求める判別式を導出する導出部と、
前記判別式の値に基づいて前記処理部の動作周波数及び動作電圧の切り替えを実行する実行部と、
を備えることを特徴とする電力制御装置。
【０１５３】
（付記２）前記処理部の動作に関する情報は、前記処理部で実行中のタスクの負荷量の情報を含み、
前記導出部は、前記負荷量情報に基づいて前記処理部が動作を停止するまでの時間を推定することを特徴とする付記１に記載の電力制御装置。
【０１５４】
（付記３）前記バスの動作に関する情報は、前記バスがダイレクトメモリアクセスによって動作中であるか否かという情報、及び１回のダイレクトメモリアクセスによって転送されるデータ量の情報を含み、
前記導出部は、前記動作中情報及び前記データ量情報に基づいて前記バスが動作を停止するまでの時間を推定することを特徴とする付記１または２に記載の電力制御装置。
【０１５５】
（付記４）前記処理部の動作周波数及び動作電圧を変更する変更部、をさらに備え、
前記実行部は、前記判別式の値が０よりも小さい場合に前記切り替えを実行し、
前記変更部は、前記切り替えを実行する場合に、前記決定部により決定された動作周波数または動作電圧に変更することを特徴とする付記１乃至付記３の何れか一の付記に記載の電力制御装置。
【０１５６】
（付記５）前記収集部は、複数の前記処理部のそれぞれについて動作に関する情報を収集し、
前記決定部は、全ての前記処理部のそれぞれについて動作周波数及び動作電圧を決定し、
前記導出部は、全ての前記処理部のそれぞれについて動作停止までの時間を推定して、全ての前記処理部のそれぞれについて前記推定時間に消費される電力を求めて前記合計消費電力として足し合わせ、
前記実行部は、切り替え後の動作周波数及び動作電圧が切り替え前の動作周波数及び動作電圧よりも低くなる処理部があり、かつ残りの処理部について切り替え後の動作周波数及び動作電圧が切り替え前の動作周波数及び動作電圧に等しいかまたは低くなる場合に、前記切り替えを実行することを特徴とする付記１乃至付記４の何れか一の付記に記載の電力制御装置。
【０１５７】
（付記６）データ処理を行う処理部と、
データを伝送するバスと、
前記処理部の動作に関する情報及び前記バスの動作に関する情報を収集する収集部と、
前記処理部の動作に関する情報及び前記バスの動作に関する情報に基づいて前記処理部の動作周波数及び動作電圧を決定する決定部と、
前記処理部の動作に関する情報及び前記バスの動作に関する情報に基づいて前記処理部が動作を停止するまでの時間及び前記バスが動作を停止するまでの時間を推定して、該推定時間に消費される電力を、前記決定に基づいて前記処理部の動作を切り替えた場合に消費される電力に加えた合計消費電力と、切り替え前の消費電力との差分を求める判別式を導出する導出部と、
前記判別式の値に基づいて前記処理部の動作周波数及び動作電圧の切り替えを実行する実行部と、
を備えることを特徴とする電子計算機。
【０１５８】
（付記７）前記処理部の動作に関する情報は、前記処理部で実行中のタスクの負荷量の情報を含み、
前記導出部は、前記負荷量情報に基づいて前記処理部が動作を停止するまでの時間を推定することを特徴とする付記６に記載の電子計算機。
【０１５９】
（付記８）前記バスの動作に関する情報は、前記バスがダイレクトメモリアクセスによって動作中であるか否かという情報、及び１回のダイレクトメモリアクセスによって転送されるデータ量の情報を含み、
前記導出部は、前記動作中情報及び前記データ量情報に基づいて前記バスが動作を停止するまでの時間を推定することを特徴とする付記６または７に記載の電子計算機。
【０１６０】
（付記９）前記処理部の動作周波数及び動作電圧を変更する変更部、をさらに備え、
前記実行部は、前記判別式の値が０よりも小さい場合に前記切り替えを実行し、
前記変更部は、前記切り替えを実行する場合に、前記決定部により決定された動作周波数または動作電圧に変更することを特徴とする付記６乃至付記８の何れか一の付記に記載の電子計算機。
【０１６１】
（付記１０）前記収集部は、複数の前記処理部のそれぞれについて動作に関する情報を収集し、
前記決定部は、全ての前記処理部のそれぞれについて動作周波数及び動作電圧を決定し、
前記導出部は、全ての前記処理部のそれぞれについて動作停止までの時間を推定して、全ての前記処理部のそれぞれについて前記推定時間に消費される電力を求めて前記合計消費電力として足し合わせ、
前記実行部は、切り替え後の動作周波数及び動作電圧が切り替え前の動作周波数及び動作電圧よりも低くなる処理部があり、かつ残りの処理部について切り替え後の動作周波数及び動作電圧が切り替え前の動作周波数及び動作電圧に等しいかまたは低くなる場合に、前記切り替えを実行することを特徴とする付記６乃至付記９の何れか一の付記に記載の電子計算機。
【０１６２】
（付記１１）データ処理を行う処理部の動作に関する情報、及びデータを伝送するバスの動作に関する情報を収集し、
前記処理部の動作に関する情報及び前記バスの動作に関する情報に基づいて前記処理部の動作周波数及び動作電圧を決定し、
前記処理部の動作に関する情報及び前記バスの動作に関する情報に基づいて前記処理部が動作を停止するまでの時間及び前記バスが動作を停止するまでの時間を推定して、該推定時間に消費される電力を、前記決定に基づいて前記処理部の動作を切り替えた場合に消費される電力に加えた合計消費電力と、切り替え前の消費電力との差分を求める判別式を導出し、
前記判別式の値に基づいて前記処理部の動作周波数及び動作電圧の切り替えを実行することを特徴とする電力制御方法。
【０１６３】
（付記１２）前記処理部の動作に関する情報は、前記処理部で実行中のタスクの負荷量の情報を含み、
前記負荷量情報に基づいて前記処理部が動作を停止するまでの時間を推定することを特徴とする付記１１に記載の電力制御方法。
【０１６４】
（付記１３）前記バスの動作に関する情報は、前記バスがダイレクトメモリアクセスによって動作中であるか否かという情報、及び１回のダイレクトメモリアクセスによって転送されるデータ量の情報を含み、
前記動作中情報及び前記データ量情報に基づいて前記バスが動作を停止するまでの時間を推定することを特徴とする付記１１または１２に記載の電力制御方法。
【０１６５】
（付記１４）前記判別式の値が０よりも小さい場合に前記切り替えを実行し、
前記切り替えを実行する場合に、前記処理部の動作周波数または動作電圧を、前記決定された動作周波数または動作電圧に変更することを特徴とする付記１１乃至付記１３の何れか一の付記に記載の電力制御方法。
【０１６６】
（付記１５）複数の前記処理部のそれぞれについて動作に関する情報を収集し、
全ての前記処理部のそれぞれについて動作周波数及び動作電圧を決定し、
全ての前記処理部のそれぞれについて動作停止までの時間を推定して、全ての前記処理部のそれぞれについて前記推定時間に消費される電力を求めて前記合計消費電力として足し合わせ、
切り替え後の動作周波数及び動作電圧が切り替え前の動作周波数及び動作電圧よりも低くなる処理部があり、かつ残りの処理部について切り替え後の動作周波数及び動作電圧が切り替え前の動作周波数及び動作電圧に等しいかまたは低くなる場合に、前記切り替えを実行することを特徴とする付記１１乃至付記１４の何れか一の付記に記載の電力制御方法。
【符号の説明】
【０１６７】
１  電力制御装置
２  収集部
３  決定部
４  導出部
５  実行部
１１  電子計算機
１３〜１５  処理部
２０  バス
３７  変更部
【国際調査報告】
2013073013.tif 000093
2013073013.tif 000094