(57)【要約】【課題】アプリケーションのパフォーマンスを犠牲にすることなく、既存のコンピュータシステムの消費電力の制御を行うことができる消費電力の制御方法を提供する。【解決手段】ハードウェアカウンタは、プロセッサが動作する時の基本クロックのクロック数をカウントする第１のカウンタと、プロセッサ内で発生した各種のイベントの回数をカウントする第２のカウンタとを備える。電力制御部は、プロセッサのイベント発生率からシステムの消費電力を算出するための消費電力算出データを備え、プロセッサの動作中の所定の一定時間毎に、第１および第２のカウンタのカウント値を読み出し、読み出した第１および第２のカウンタのカウント値からプロセッサの単位時間当たりのイベント発生率を算出し、消費電力算出データに基づいて、算出したイベント発生率からシステムの消費電力を算出し、算出した消費電力からシステムの消費電力を制御する処理を行う。【選択図】図６
2009025964.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、ハードウェアカウンタと、電力制御部とが一体型に構成されたシステムの消費電力を制御する方法であって、
前記ハードウェアカウンタは、前記プロセッサが動作する時の基本クロックのクロック数をカウントする第１のカウンタと、前記プロセッサ内で発生した各種のイベントの回数をカウントする第２のカウンタとを備え、
前記電力制御部は、前記プロセッサのイベント発生率から前記システムの消費電力を算出するための消費電力算出データを備え、前記プロセッサの動作中の所定の一定時間毎に、前記ハードウェアカウンタを構成する第１および第２のカウンタのカウント値を読み出し、前記読み出した第１および第２のカウンタのカウント値から前記プロセッサの単位時間当たりのイベント発生率を算出し、前記消費電力算出データに基づいて、前記算出したプロセッサの単位時間当たりのイベント発生率から前記システムの消費電力を算出し、前記算出したシステムの消費電力から前記システムの消費電力を制御する処理を行うことを特徴とする消費電力の制御方法。
【請求項２】
前記プロセッサの単位時間当たりのイベント発生率を、前記第２のカウンタのカウント値／前記第１のカウンタのカウント値によって求めることを特徴とする請求項１に記載の消費電力の制御方法。
【請求項３】
前記消費電力算出データは、前記イベント発生率に対する前記システムの消費電力の変化量×前記プロセッサのイベント発生率によって表される前記システムの消費電力の算出式であることを特徴とする請求項２に記載の消費電力の制御方法。
【請求項４】
前記消費電力算出データは、前記プロセッサのイベント発生率と消費電力との関係が登録されたテーブル形式の消費電力データベースであることを特徴とする請求項２に記載の消費電力の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサを搭載するシステム（コンピュータシステム）における消費電力の制御方法に関するものである。
【背景技術】
【０００２】
従来は、コンピュータシステムの消費電力の制御方法の一例として、システムソフトウェア（ＯＳ）が、実行中のアプリケーションによる負荷が低い場合を判定し、その場合に消費電力の低減機構を動作させるものが知られている。
【０００３】
ところが、システムの消費電力は、その負荷だけによって決定できるものではない。そのため、システムの消費する電力の上限を設けたり、与えられた電力容量内で必要な時間コンピュータシステムを動作させたりするような細やかな制御ができなかった。
【０００４】
その改善策の１つとして、例えば、特許文献１に開示の消費電力参照機能を持つコンピュータシステムおよびその制御方法が提案されている。特許文献１には、コンピュータシステムが消費した電力を、システム上で動作するプログラムが知り、実際に消費した電力を元に以降のコンピュータシステムの動作を修正する手段を実現することにより、消費電力を制御する方法が示されている。
【０００５】
しかし、特許文献１に開示の方法では、電源部に、消費電力を測定する消費電力測定部を設ける必要がある。そのため、既存のコンピュータシステムに適用することが難しいという問題がある。また、消費電力測定部がプロセッサの外部に設けられているため、プロセッサから消費電力測定部へのアクセスが発生すると、他のアプリケーションのパフォーマンスが低下する可能性があるという問題もある。
【０００６】
【特許文献１】特開２００３−１４０７８２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、前記従来技術に基づく問題点を解消し、アプリケーションのパフォーマンスを犠牲にすることなく、既存のコンピュータシステムの消費電力の制御を行うことができる消費電力の制御方法を提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明は、プロセッサと、ハードウェアカウンタと、電力制御部とが一体型に構成されたシステムの消費電力を制御する方法であって、
前記ハードウェアカウンタは、前記プロセッサが動作する時の基本クロックのクロック数をカウントする第１のカウンタと、前記プロセッサ内で発生した各種のイベントの回数をカウントする第２のカウンタとを備え、
前記電力制御部は、前記プロセッサのイベント発生率から前記システムの消費電力を算出するための消費電力算出データを備え、前記プロセッサの動作中の所定の一定時間毎に、前記ハードウェアカウンタを構成する第１および第２のカウンタのカウント値を読み出し、前記読み出した第１および第２のカウンタのカウント値から前記プロセッサの単位時間当たりのイベント発生率を算出し、前記消費電力算出データに基づいて、前記算出したプロセッサの単位時間当たりのイベント発生率から前記システムの消費電力を算出し、前記算出したシステムの消費電力から前記システムの消費電力を制御する処理を行うことを特徴とする消費電力の制御方法を提供するものである。
【０００９】
ここで、前記プロセッサの単位時間当たりのイベント発生率を、前記第２のカウンタのカウント値／前記第１のカウンタのカウント値によって求めることが好ましい。
【００１０】
また、前記消費電力算出データは、前記イベント発生率に対する前記システムの消費電力の変化量×前記プロセッサのイベント発生率によって表される前記システムの消費電力の算出式であるか、もしくは、前記プロセッサのイベント発生率と消費電力との関係が登録されたテーブル形式の消費電力データベースであることが好ましい。
【発明の効果】
【００１１】
本発明によれば、電源内に消費電力測定部を取り付けることなく、既存のシステムの消費電力を算出することが可能となる。また、消費電力の測定は、システム内に設けられたハードウェアカウンタのカウント値を読み出し、消費電力算出式による演算もしくは短時間の消費電力データベースへのアクセスを行うだけでよいので、測定および処理によって占有されるプロセッサ時間は短くなる。その結果、アプリケーションのパフォーマンスを犠牲にすることなく、既存システムの消費電力の制御を行うことができる。
【発明を実施するための最良の形態】
【００１２】
以下に、添付の図面に示す好適実施形態に基づいて、本発明の消費電力の制御方法を詳細に説明する。
【００１３】
図１は、本発明の消費電力の制御方法を適用するプロセッサを含むシステムの構成を表す概念図である。同図に示すコンピュータシステム１０は、プロセッサ１２と、ハードウェアカウンタ１４と、電力制御部１６とによって構成されている。システム１０は、その外部に配置されたバッテリー１８と電源線２０によって接続されており、バッテリー１８から供給される電源で動作する。
【００１４】
システム１０において、プロセッサ１２、ハードウェアカウンタ１４、電力制御部１６は一体型に構成されている。すなわち、プロセッサ１２、ハードウェアカウンタ１４および電力制御部１６は、同一半導体チップ上に搭載されている。
【００１５】
プロセッサ１２は、通常、命令を実行する命令実行ユニット、命令を記憶する命令キャッシュやデータを記憶するデータキャッシュなどのキャッシュを搭載している（図示省略）。プロセッサ１２は、どのような構成のものでも利用可能である。
【００１６】
ハードウェアカウンタ１４は、第１のカウンタと、第２のカウンタとによって構成されている（図示省略）。第１のカウンタは、プロセッサ１２が動作する時の基本クロックのクロック数をカウントするカウンタである。第２のカウンタは、プロセッサ１２内で発生した各種のイベントの回数、例えば、キャッシュへのアクセスの回数や、命令の実行回数をカウントするカウンタである。
【００１７】
電力制御部１６は、プロセッサ１２のイベント発生率からシステム１０の消費電力を算出するための消費電力算出データを備えている。消費電力算出データは、例えば、システム１０の消費電力の算出式（後述する算出式（２））、もしくは、プロセッサ１２のイベント発生率と消費電力との関係（相関）が登録されたテーブル形式の消費電力データベース（後述する表１）等である。消費電力算出データは、電力制御部１６がシステム１０の消費電力を制御する処理を行う前にあらかじめ算出される。
【００１８】
電力制御部１６は、プロセッサ１２の動作中の所定の一定時間毎に、ハードウェアカウンタ１４を構成する第１および第２のカウンタのカウント値を読み出し、読み出した第１および第２のカウンタのカウント値からプロセッサ１２の単位時間当たりのイベント発生率を算出し、消費電力算出データに基づいて、算出したプロセッサ１２の単位時間当たりのイベント発生率からシステム１０の消費電力を算出する。そして、算出したシステムの消費電力からシステム１０の消費電力を制御する処理（消費電力の低減を優先する、もしくは、処理速度を優先する）を行う。
【００１９】
例えば、バッテリー１８から電源を供給されて動作するシステム１０の場合、その残りの駆動時間を算出し、目標とする駆動時間を達成できるかどうかを判断する。達成できると判断した場合にはシステム１０を通常動作モード（そのままの状態）とし、達成できないと判断した場合には低消費電力モードにして駆動時間を延長する。その他、クロックの周波数を変更（上昇、もしくは、低下）したり、回路の一部を停止ないし再開したりするなどの、システム１０の消費電力を制御する処理を行う。
【００２０】
次に、キャッシュ使用率と消費電力との関係を算出する手順を説明する。以下の説明は、プロセッサ１２のイベント発生率として、データキャッシュをアクセスする時のキャッシュ使用率を例に挙げて行う。
【００２１】
図２は、キャッシュ使用率と消費電力との関係を算出する時のシステムの接続状態を表す概念図である。同図に示すように、キャッシュ使用率と消費電力との関係を算出する場合、システム１０とバッテリー１８とを接続する電源線２０の途中に、所定の抵抗値Ｒを持つ抵抗素子２２を接続し、この抵抗素子２２の両端の間に電圧計２４を並列に接続する。抵抗素子２２の抵抗値Ｒは既知の固定値である。
【００２２】
以下、図５に示すフローチャートを参照して説明する。
【００２３】
キャッシュ使用率と消費電力との関係を算出する場合、まず、ハードウェアカウンタ１４に含まれる、クロックカウンタ（第１のカウンタ）およびキャッシュアクセスカウンタ（第２のカウンタ）を同時にリセットして、計測を開始する（Ｓ１１）。クロックカウンタは、クロックのサイクル数をカウントするカウンタであり、データキャッシュカウンタは、データキャッシュへのアクセス回数をカウントするカウンタである。
【００２４】
その後、所定の一定時間の間に、所定数のデータアクセス命令群を実行し、その時の電圧計２４の計測値からシステム１０の消費電力を算出する（Ｓ１２）。一定時間およびデータアクセス命令群の数は既知の固定値である。抵抗素子２２の抵抗値Ｒと電圧計２４で計測した電圧値Ｖとから、システム１０に流れる電流量Ｉ（Ｉ＝Ｖ／Ｒ）を算出し、電圧値Ｖと電流量Ｉとから、システム１０の消費電力Ｐ（Ｐ＝ＩＶ）を算出する。
【００２５】
ここで、データアクセス命令群の実行は、所定のメモリ空間のデータをあらかじめデータキャッシュに記憶しておき、前述の所定のメモリ空間にアクセスし、擬似的にデータキャッシュをアクセスすることによって行われる。
【００２６】
図３は、データアクセス命令群を実行する一例のプログラムリストを表す。同図に示すプログラムのルーチン名はLabel1である。LOAD from Memory (Cacheble)は、前述の所定のメモリアドレス、すなわち、擬似的にデータキャッシュからデータを読み出す命令である。NOPは、何もしない命令であり、クロックのサイクル数のみがカウントされる。ADD Counter+1は、プログラム内部のカウンタのカウント値を＋１する命令である。JUMP Label1 (LOOP)は、ルーチンLabel1の先頭に戻って、このルーチンを初めから再度実行するループ命令である。
【００２７】
なお、測定を正確に行うためには、データアクセス命令群は、図３に示す例のように、電圧計２４の電圧値Ｖがほぼ一定となるように、ループが十分短く、データアクセス命令以外の命令の影響が極力少ないことが望ましい。
【００２８】
図３に示すプログラムでは、データキャッシュからデータを読み出す命令を所定回数実行し、その後、何もせずにクロックを所定回数カウントすることを、前述の所定の一定時間の間繰り返し行う。所定の一定時間の間、クロックカウンタは、クロックのサイクル数をカウントし、データキャッシュカウンタは、データキャッシュへのアクセス回数をカウントする。
【００２９】
所定の一定時間の経過後に、クロックカウンタのカウント値およびデータアクセスカウンタのカウント値を読み出し（Ｓ１３）、これらのカウント値からキャッシュ使用率を算出する（Ｓ１４）。一定時間は変えずに、データアクセス命令群の数を所定数ずつ増やしながら（Ｓ１５）、上記動作を所定回数繰り返して、キャッシュ使用率と消費電力との関係を表す、図４のグラフ１ないしグラフ２を得る（Ｓ１６）。
【００３０】
グラフ１が得られた場合、消費電力は、データキャッシュへのアクセスの割合に比例して増加していることが分かる。従って、データキャッシュ使用率をＵ、その時のシステム１０の消費電力をＰ、クロックカウンタのカウント値をＣ、データアクセスカウンタのカウント値をＤ、データキャッシュの使用率Ｕに対するシステム１０の消費電力の変化量（図４に示すグラフ１の傾きに等しい）をＡとすれば、消費電力Ｐは、下記算出式（１）および（２）に示す一次式によって表される。
【００３１】
Ｕ＝Ｄ／Ｃ  …  （１）
Ｐ＝Ａ×Ｕ  …  （２）
【００３２】
一方、図４のグラフ２のように、１次式で表現することが難しい結果が得られた場合、表１に一例を示すように、データキャッシュの使用率Ｕを、所定の一定値毎に増加させた時の、システム１０の消費電力を算出し、テーブル形式でデータベース化しても良い。表１の例では、データキャッシュの使用率Ｕを０，２０，…，１００まで２０％毎に増加させた時の、システム１０の消費電力Ｐを算出している。
【００３３】
【表１】
2009025964.tif 000003
【００３４】
表１の例では、キャッシュ使用率とそれに対応する消費電力を、０％〜１００％の間で２０％刻みで登録しているが、これに限定されず、何％刻みでキャッシュ使用率と消費電力を登録しても良い。
【００３５】
次に、図６に示すフローチャートを参照して、システム１０の消費電力を制御する処理を行う時の手順を説明する。
【００３６】
システム１０の消費電力を制御する処理を行う場合、まず、クロックカウンタおよびキャッシュアクセスカウンタを同時にリセットして、計測を開始する（Ｓ２１）。計測の開始は、アプリケーション実行時の任意のタイミングで行うことができる。
【００３７】
続いて、所定の一定時間の間、任意のプログラムでシステム１０を動作させる（Ｓ２２）。所定の一定時間は任意の時間であるが、バッテリー１８が目標とする駆動時間を達成できるかどうかを判断するための性能測定時間となる。
【００３８】
その後、クロックカウンタのカウント値Ｃおよびデータキャッシュカウンタのカウント値Ｄを読み出す（Ｓ２３）。そして、前述の式（１）からキャッシュ使用率Ｕを算出し、算出したキャッシュ使用率Ｕに基づいて、式（２）からシステム１０の消費電力を算出する（Ｓ２４）、もしくは、表１に示すテーブル形式の消費電力データベースから、算出したキャッシュ使用率Ｕに対応するシステム１０の消費電力を求める（Ｓ２４）。
【００３９】
表１に示すテーブル形式の消費電力データベースからシステム１０の消費電力を算出する場合、登録されているキャッシュ使用率の中から、算出したキャッシュ使用率Ｕに最も近いキャッシュ使用率に対応する消費電力を選択する。
【００４０】
例えば、算出したキャッシュ使用率Ｕが５５％であれば、表１において最も近い６０％を選択し、これに対応する消費電力＝２１ｍＷを得る。この場合、隣接する２値のキャッシュ使用率の間の消費電力が単調に増加していると仮定すると、２値の消費電力の間の補間演算を行い、算出したキャッシュ使用率Ｕに対応する消費電力を算出することによって、さらに正確な値を得ることもできる。
【００４１】
続いて、システム１０の消費電力の算出結果に基づいて、バッテリー１８の残りの駆動時間を算出する（Ｓ２５）。これによって、システム１０の現在の動作状態で、目標とする駆動時間を達成できるかどうかを判断する（Ｓ２６）。その結果、電力制御部１６は、目標とする駆動時間を達成できると判断した場合（Ｓ２６でＹＥＳ）には変更なし（通常動作モード）とし（Ｓ２７）、達成できないと判断した場合（Ｓ２６でＮＯ）には、低消費電力モードに変更して駆動時間を引き延ばす処理を行う（Ｓ２８）。
【００４２】
本実施形態の消費電力の制御方法であれば、特許文献１のように、電源内に消費電力測定部を取り付けることなく、システム１０の消費電力を算出することが可能となる。また、消費電力の測定は、システム１０内に設けられたハードウェアカウンタのカウント値を読み出して、消費電力の算出式による演算、もしくは、短時間の消費電力データベースへのアクセスを行うだけでよいので、測定および処理によって占有されるプロセッサ時間は短くなる。その結果、アプリケーションのパフォーマンスを犠牲にすることなく、既存のコンピュータシステムの消費電力の制御を行うことができる。
【００４３】
なお、データキャッシュをアクセスする時のキャッシュ使用率だけを対象として説明したが、本発明はこれに限らず、これに加えて、プロセッサの命令キャッシュをアクセスする時のキャッシュ使用率や、命令実行ユニットを使用する時の使用率などを含む、プロセッサ内でのイベントの回数に応じてプロセッサの消費電力を算出し、その算出結果に応じてシステムの消費電力を制御する処理を行うことができる。
【００４４】
また、通常動作モードと低消費電力モードとを切り替える例を挙げて説明したが、これも限定されず、消費電力の異なる３以上の動作モードを設けておき、算出したプロセッサの消費電力に応じて、３以上の動作モードを適宜切り替えるようにしても良い。実施形態では、電圧計を使用しているが、電流計を使用して、プロセッサのイベントの発生率と消費電力との関係を測定することもできる。
【００４５】
本発明は、基本的に以上のようなものである。
以上、本発明の消費電力の制御方法について詳細に説明したが、本発明は上記実施形態に限定されず、本発明の主旨を逸脱しない範囲において、種々の改良や変更をしてもよいのはもちろんである。
【図面の簡単な説明】
【００４６】
【図１】本発明の消費電力の制御方法を適用するプロセッサを含むシステムの構成を表す概念図である。
【図２】キャッシュ使用率と消費電力との関係を算出する時のシステムの接続状態を表す概念図である。
【図３】データアクセス命令群を実行する一例のプログラムリストを表す概念図である。
【図４】キャッシュ使用率と消費電力との関係を表すグラフである。
【図５】キャッシュ使用率と消費電力との関係を算出する手順を表すフローチャートである。
【図６】システムの消費電力を制御する処理を行う時の手順を表すフローチャートである。
【符号の説明】
【００４７】
１０  コンピュータシステム
１２  プロセッサ
１４  ハードウェアカウンタ
１６  電力制御部
１８  バッテリー
２０  電源線
２２  抵抗素子
２４  電圧計
【図１】
2009025964.tif 000004
【図２】
2009025964.tif 000005
【図３】
2009025964.tif 000006
【図４】
2009025964.tif 000007
【図５】
2009025964.tif 000008
【図６】
2009025964.tif 000009