(57)【特許請求の範囲】
【請求項１】
プログラムの実行中に消費した累積電力量の計測結果を参照した時刻と当該累積電力量と当該時刻に実行した命令の格納メモリアドレスとの対応を示す第１の情報と、前記プログラムの実行箇所と命令格納メモリアドレスの範囲との対応を示す第２の情報と、を記憶する記憶部と、
前記累積電力量を計測する計測装置により所定の更新周期で更新される前記計測結果を、前記更新周期よりも短い参照周期で参照して、前記第１の情報に記録し、前記第１および前記第２の情報に基づいて、所定の実行箇所が実行された時刻を判定し、前記所定の実行箇所が実行された時刻において記録された前記累積電力量を線形補間により補正する演算部と、
を有する情報処理装置。
【請求項２】
前記演算部は、前記第１の情報と前記更新周期と前記参照周期とに基づいて、前記計測結果の各更新時刻における前記累積電力量を算出し、算出した各更新時刻における前記累積電力量を用いて前記線形補間を行う、請求項１記載の情報処理装置。
【請求項３】
前記演算部は、各時刻での前記累積電力量の算出結果から各時刻での前記実行箇所の実行による消費電力を算出し、第１の時刻における消費電力を、第２の時刻における消費電力との比較に応じて補正する、請求項１または２記載の情報処理装置。
【請求項４】
前記演算部は、各時刻での前記累積電力量の算出結果から各時刻での前記実行箇所の実行による消費電力を算出し、時刻と消費電力と前記実行箇所との対応関係を示す３次元グラフの情報を出力する、請求項１乃至３の何れか１項に記載の情報処理装置。
【請求項５】
プログラムの実行中に消費した累積電力量を計測する計測装置により所定の更新周期で更新される計測結果を前記更新周期よりも短い参照周期で参照し、参照した時刻と当該累積電力量と当該時刻に実行した命令の格納メモリアドレスとの対応を、記憶部に記憶された第１の情報に記録し、
前記第１の情報と、前記プログラムの実行箇所と命令格納メモリアドレスの範囲との対応を示す第２の情報と、に基づいて、所定の実行箇所が実行された時刻を判定し、前記所定の実行箇所が実行された時刻において記録された前記累積電力量を線形補間により補正する、
処理をコンピュータに実行させる消費電力計測プログラム。
【請求項６】
コンピュータが、
プログラムの実行中に消費した累積電力量を計測する計測装置により所定の更新周期で更新される計測結果を前記更新周期よりも短い参照周期で参照し、参照した時刻と当該累積電力量と当該時刻に実行した命令の格納メモリアドレスとの対応を、記憶部に記憶された第１の情報に記録し、
前記第１の情報と、前記プログラムの実行箇所と命令格納メモリアドレスの範囲との対応を示す第２の情報と、に基づいて、所定の実行箇所が実行された時刻を判定し、前記所定の実行箇所が実行された時刻において記録された前記累積電力量を線形補間により補正する、
消費電力計測方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置、消費電力計測プログラムおよび消費電力計測方法に関する。
【背景技術】
【０００２】
現在、コンピュータでは種々のソフトウェアが利用されている。ソフトウェアのプログラムの実行時のコンピュータの動作を検証し、プログラムの改良を行うことで、省電力化や性能向上のためのチューニングを行うことがある。動作検証の方法として、例えば、情報収集対象プログラムの実行中に、ＣＰＵ（Central Processing Unit）のプログラムカウンタから一定サイクルで実行中の命令を特定し、データ参照／格納先のメモリアドレスを取得してメモリアドレス毎のアクセス頻度を取得する提案がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２１００１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
消費電力量を計測する計測装置を用いて、プログラム実行中のコンピュータによる消費電力量を計測することがある。実行命令を格納したメモリアドレスおよび計測装置で計測される累積の消費電力量を、所定周期でサンプリングすることで、プログラム中の実行箇所（例えば、サブルーチンやソースプログラムの行範囲など）毎の消費電力量を分析し得る。例えば、消費電力量の比較的大きな実行箇所はコードの記述に改善の余地がある。
【０００５】
しかし、計測装置による計測データの更新間隔が、検証したいプログラムの挙動変化の時間間隔よりも長いことがある。例えば、あるタイミングでコンピュータが実行した命令の格納メモリアドレスを採取し、計測装置の計測データを参照する。ところが、次のタイミングで命令アドレスを採取し、計測データを参照しても、計測装置の計測データが未だ更新されていないことがある。この場合、両タイミング間での消費電力量がゼロと観測され、実行箇所によっては消費電力量を適切に取得できないという問題がある。
【０００６】
１つの側面では、本発明は、プログラムの実行箇所毎の消費電力量を適切に取得できる情報処理装置、消費電力計測プログラムおよび消費電力計測方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
１つの態様では、情報処理装置が提供される。この情報処理装置は、記憶部と演算部とを有する。記憶部は、プログラムの実行中に消費した累積電力量の計測結果を参照した時刻と当該累積電力量と当該時刻に実行した命令の格納メモリアドレスとの対応を示す第１の情報と、プログラムの実行箇所と命令格納メモリアドレスの範囲との対応を示す第２の情報と、を記憶する。演算部は、累積電力量を計測する計測装置により所定の更新周期で更新される計測結果を、更新周期よりも短い参照周期で参照して、第１の情報に記録し、第１および第２の情報に基づいて、所定の実行箇所が実行された時刻を判定し、所定の実行箇所が実行された時刻において記録された累積電力量を線形補間により補正する。
【０００８】
また、１つの態様では、コンピュータによって実行される消費電力計測プログラムが提供される。この消費電力計測プログラムは、コンピュータに、プログラムの実行中に消費した累積電力量を計測する計測装置により所定の更新周期で更新される計測結果を更新周期よりも短い参照周期で参照し、参照した時刻と当該累積電力量と当該時刻に実行した命令の格納メモリアドレスとの対応を、記憶部に記憶された第１の情報に記録し、第１の情報と、プログラムの実行箇所と命令格納メモリアドレスの範囲との対応を示す第２の情報と、に基づいて、所定の実行箇所が実行された時刻を判定し、所定の実行箇所が実行された時刻において記録された累積電力量を線形補間により補正する、処理を実行させる。
【０００９】
また、１つの態様では、消費電力計測方法が提供される。この消費電力計測方法では、コンピュータが、プログラムの実行中に消費した累積電力量を計測する計測装置により所定の更新周期で更新される計測結果を更新周期よりも短い参照周期で参照し、参照した時刻と当該累積電力量と当該時刻に実行した命令の格納メモリアドレスとの対応を、記憶部に記憶された第１の情報に記録し、第１の情報と、プログラムの実行箇所と命令格納メモリアドレスの範囲との対応を示す第２の情報と、に基づいて、所定の実行箇所が実行された時刻を判定し、所定の実行箇所が実行された時刻において記録された累積電力量を線形補間により補正する。
【発明の効果】
【００１０】
１つの側面では、プログラムの実行箇所毎の消費電力量を適切に取得できる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態の情報処理装置を示す図である。
【図２】第２の実施の形態の検証装置の例を示す図である。
【図３】検証装置のハードウェア例を示す図である。
【図４】検証装置の機能例を示す図である。
【図５】命令アドレス変換テーブルの例を示す図である。
【図６】電力量観測テーブルの例を示す図である。
【図７】補正後テーブルの例を示す図である。
【図８】電力統計テーブルの例を示す図である。
【図９】検証装置の処理例を示すフローチャートである。
【図１０】データ収集処理の例を示すフローチャートである。
【図１１】累積電力量の補正処理の例を示すフローチャートである。
【図１２】線形補間の具体例を示す図である。
【図１３】実質最大消費電力の計算処理の例を示すフローチャートである。
【図１４】実質消費電力の算出例（その１）を示す図である。
【図１５】実質消費電力の算出例（その２）を示す図である。
【図１６】出力処理の例を示すフローチャートである。
【図１７】グラフの表示例（その１）を示す図である。
【図１８】グラフの表示例（その２）を示す図である。
【発明を実施するための形態】
【００１２】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の情報処理装置を示す図である。情報処理装置１は、プログラムの動作検証に用いられる。情報処理装置１は、検証対象のプログラムを実行し、プログラムの実行箇所（サブルーチンやプログラムの所定の行番号の範囲）毎の消費電力量を取得する。情報処理装置１は、実行箇所毎の消費電力量の情報を、情報処理装置１に接続されたディスプレイに表示させることで、ユーザに提示する。例えば、ユーザは、消費電力量の比較的大きな実行箇所について、コーディングの改善を図れる。
【００１３】
情報処理装置１は、情報処理装置１に外付け、または、内蔵された計測装置（図示を省略）から、プログラム実行時の情報処理装置１の累積の消費電力量（累積電力量）を取得可能である。情報処理装置１は、所定の周期で、計測装置による計測結果を参照することで、前回参照時点から今回参照時点までの間の時間帯における消費電力量を得ることができる。
【００１４】
ここで、計測装置による計測データの更新間隔が、検証したいプログラムの挙動変化の時間間隔よりも長いと、前回参照時点から今回参照時点までの消費電力量がゼロと観測されてしまい、消費電力量を適切に取得できないことがある。そこで、情報処理装置１は、次のように消費電力量を取得する。
【００１５】
情報処理装置１は、記憶部１ａおよび演算部１ｂを有する。記憶部１ａは、ＲＡＭ（Random Access Memory）などの揮発性記憶装置でもよいし、ＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの不揮発性記憶装置でもよい。演算部１ｂは、ＣＰＵ、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）などを含み得る。演算部１ｂはプログラムを実行するプロセッサであってもよい。ここでいう「プロセッサ」には、複数のプロセッサの集合（マルチプロセッサ）も含まれ得る。
【００１６】
記憶部１ａは、検証対象のプログラムの実行中に消費された累積電力量の計測結果を参照した時刻と、当該累積電力量と、当該時刻に実行された当該装置の命令の格納メモリアドレスとの対応を示す第１の情報を記憶する。演算部１ｂが、検証対象のプログラムの実行中に第１の情報を取得し、記憶部１ａに格納してもよい。記憶部１ａは、検証対象のプログラムの実行箇所と命令格納メモリアドレスの範囲との対応を示す第２の情報を記憶する。
【００１７】
演算部１ｂは、記憶部１ａに記憶された第１および第２の情報に基づいて、所定の実行箇所が実行された時刻を判定する。例えば、第２の情報には、プログラムの実行箇所と当該実行箇所の実行時に使用される演算処理命令の格納メモリアドレスの範囲とが対応付けて登録されている。このため、演算部１ｂは、第１の情報に含まれる各アドレスの履歴から、何れの実行箇所が何れの時刻に実行されたかを判定できる。
【００１８】
演算部１ｂは、所定の実行箇所が実行された時刻における情報処理装置１の累積電力量を線形補間により算出する。ここで、以下の説明において、ｉは、プログラム実行中に使用された演算処理命令の格納メモリアドレスをサンプリングした回数を表す整数である。ｊは、累積電力量の計測結果の更新回数を表す整数である。参照時刻（サンプリング時刻）Ｔｐ（ｉ）は、プログラム実行中に使用された演算処理命令の格納メモリアドレスをサンプリングしたｉ番目の時刻である。更新時刻Ｔｅ（ｊ）は、累積電力量の計測結果が更新されたｊ番目の時刻である。
【００１９】
例えば、第１の情報は、次のレコードを含む。第１のレコードは、参照時刻Ｔｐ（ｉ），累積電力量Ｅ１，アドレスＸ１を記録したレコードである。第２のレコードは、参照時刻Ｔｐ（ｉ＋１），累積電力量Ｅ１，アドレスＸ２を記録したレコードである。第３のレコードは、参照時刻Ｔｐ（ｉ＋２），累積電力量Ｅ２，アドレスＸ３を記録したレコードである。この場合、参照時刻Ｔｐ（ｉ），Ｔｐ（ｉ＋１）ではプログラム実行中の異なるタイミングで電力量の計測結果を参照しているにも関わらず、同じ累積電力量Ｅ１が取得されている。すなわち、参照時刻Ｔｐ（ｉ），Ｔｐ（ｉ＋１）における累積電力量の差がゼロであり、参照時刻Ｔｐ（ｉ），Ｔｐ（ｉ＋１）の両時刻の間の消費電力量がゼロと誤観測されたことになる。
【００２０】
そこで、演算部１ｂは、線形補間により参照時刻Ｔｐ（ｉ＋１）（アドレスＸ２に対応する実行箇所が実行されていた時刻）における累積電力量を算出する。１つの方法として、演算部１ｂは、参照時刻Ｔｐ（ｉ）における累積電力量Ｅ１および参照時刻Ｔｐ（ｉ＋２）における累積電力量Ｅ２を結ぶ時刻と累積電力量との関係を示す１次式を求め、参照時刻Ｔｐ（ｉ＋１）における累積電力量を当該１次式により算出することが考えられる。
【００２１】
一方、この場合の誤観測は、計測装置による累積電力量の計測結果の更新周期Ｉｅが、プログラムによる実行命令アドレスのサンプリング周期Ｉｐよりも長い（Ｉｅ＞Ｉｐである）ことが原因である。すなわち、参照時刻Ｔｐ（ｉ）では、計測装置により更新時刻Ｔｅ（ｊ）で更新された累積電力量を取得している。参照時刻Ｔｐ（ｉ＋１）では、次の更新時刻Ｔｅ（ｊ＋１）に達する前にサンプリングを行ったために、計測結果が未だ更新されておらず、参照時刻Ｔｐ（ｉ）と同じ累積電力量Ｅ１が取得されている。そこで、演算部１ｂは、次のようにして線形補間を用いて精度良く累積電力量を求めることができる。
【００２２】
プログラムの実行命令アドレスの参照時刻Ｔｐ（ｉ）は式（１）で表される。Ｔｐ０は、サンプリングを開始した基準時刻である。
【００２３】
【数１】
0006544013.tif 000002
【００２４】
累積電力量の計測結果の更新時刻Ｔｅ（ｊ）は式（２）で表される。Ｔｅ０は、計測結果の更新を開始した基準時刻である。
【００２５】
【数２】
0006544013.tif 000003
【００２６】
ここで、実行命令アドレスのサンプリングと計測結果の更新とは、ほぼ同時に開始される。計測装置での計測データの更新に伴う若干の遅延を考慮すると、Ｔｐ０≦Ｔｅ０＜Ｔｐ０＋Ｉｐの関係が成り立つ。サンプリング基準時刻Ｔｐ０と計測結果更新基準時刻Ｔｅ０との差をＤｅとすると、式（３）が成り立つ。ただし、０≦Ｄｅ＜Ｉｐである。
【００２７】
【数３】
0006544013.tif 000004
【００２８】
計測結果を参照して、連続する２回目の累積電力量が変化していない場合、以下の関係式（４）が成り立つ。
【００２９】
【数４】
0006544013.tif 000005
【００３０】
更新時刻Ｔｅ（ｊ）、参照時刻Ｔｐ（ｉ＋１）および更新時刻Ｔｅ（ｊ＋１）は、それぞれ式（５）、（６）、（７）で表される。
【００３１】
【数５】
0006544013.tif 000006
【００３２】
【数６】
0006544013.tif 000007
【００３３】
【数７】
0006544013.tif 000008
【００３４】
式（５）、（６）、（７）を用いて式（４）を変形することで、式（８）を得る。
【００３５】
【数８】
0006544013.tif 000009
【００３６】
十分長い時間で計測を行うとき、式（８）によって差Ｄｅの上下限を決めるｉおよびｊの組（ｉk，ｊk）を複数得る。ここで、ｋは、ｉ，ｊの組を識別するための整数である。更に、ＩｐがＩｐ＜ＩｅかつＩｐ≒Ｉｅであるとき、式（９）により差Ｄｅを比較的高い精度で算出できる。
【００３７】
【数９】
0006544013.tif 000010
【００３８】
ここで、ｍａｘ演算は、ｋに対する複数の値のうちの最大値を取得する演算である。ｍｉｎ演算は、ｋに対する複数の値のうちの最小値を取得する演算である。すなわち、式（９）は、右辺第１項が最大、かつ、右辺第２項が最小となるｋを用いて差Ｄｅを算出することを意味する。演算部１ｂは、式（９）を用いて差Ｄｅを算出する。
【００３９】
演算部１ｂは、差Ｄｅを用いて、｛Ｔｐ（ｉ）−Ｔｅ（ｊ）｝対｛Ｔｅ（ｊ＋１）−Ｔｐ（ｉ）｝の比率を求めることができる。ここで、Ｔｐ（ｉ）−Ｔｅ（ｊ）は、両時刻の時間差を取得する演算を示す。Ｔｅ（ｊ＋１）−Ｔｐ（ｉ）などの演算も同様である。更新時刻Ｔｅ（ｊ＋１）における累積電力量の計測結果は、参照時刻Ｔｐ（ｉ＋２）で取得された累積電力量Ｅ２に等しい。よって、演算部１ｂは、求めた比率を用いて、更新時刻Ｔｅ（ｊ）およびＴｅ（ｊ＋１）の累積電力量Ｅ１およびＥ２を内分することで、参照時刻Ｔｐ（ｉ）の累積電力量Ｅａおよび参照時刻Ｔｐ（ｉ＋１）の累積電力量Ｅｂを算出する。
【００４０】
演算部１ｂは、｛時刻，累積電力量｝＝｛Ｔｅ（ｊ），Ｅ１｝、｛Ｔｅ（ｊ＋１），Ｅ２｝の２点を通る一次式を求めてもよい。そして、参照時刻Ｔｐ（ｉ），Ｔｐ（ｉ＋１）における累積電力量を求めた一次式を用いて算出する。例えば、演算部１ｂは、時刻Ｔｐ（ｉ）の累積電力量Ｅａ、時刻Ｔｐ（ｉ＋１）の累積電力量Ｅｂを算出する。
【００４１】
このようにして、情報処理装置１は、参照時刻Ｔｐ（ｉ＋１）における累積電力量Ｅｂを適切に取得できる。また、参照時刻Ｔｐ（ｉ）における累積電力量Ｅ１を補正し、累積電力量Ｅａを適切に取得できる。更に、情報処理装置１は、上記の方法により全ての参照時刻Ｔｐ（ｉ）の計測結果を補正できる。例えば、参照時刻Ｔｐ（ｉ＋２）において取得されている累積電力量Ｅ２も更新時刻Ｔｅ（ｊ＋１）における累積電力量Ｅ２および更新時刻Ｔｅ（ｊ＋２）における累積電力量を用いて同様に補正することも可能である。補正の結果、情報処理装置１は、時間と累積電力量との関係を示す補正前の系列Ｋ１に対し、補正後の系列Ｋ２を得る。情報処理装置１は、各時刻で実行された命令の格納アドレス（プログラムの実行箇所を示す）と累積電力量との対応から、検証対象のプログラムの実行箇所毎の消費電力量を適切に取得できる。
【００４２】
なお、第１の実施の形態の例では、計測装置を用いて累積電力量を計測するものとしたが、当該計測機能をもつモジュールを情報処理装置１に内蔵して累積電力量を計測してもよい。この場合にも、第１の実施の形態の方法により、プログラムの実行箇所毎の消費電力量を適切に取得できる。
【００４３】
［第２の実施の形態］
図２は、第２の実施の形態の検証装置の例を示す図である。検証装置１００は、アプリケーションプログラムの動作検証を行うコンピュータである。以下の説明では、検証対象のアプリケーションプログラムを検証対象プログラムと称することがある。
【００４４】
検証装置１００は電源ケーブル１１を有する。検証装置１００は、電源ケーブル１１を介して計測装置２００と接続されている。計測装置２００は、検証装置１００により消費された累積電力量を計測する装置である。計測装置２００は、電源プラグを有する。計測装置２００の電源プラグは、ソケット２０に挿入されている。ソケット２０は、電子機器に電力を供給するためのプラグ受けである。計測装置２００は、ソケット２０から供給される電力を検証装置１００に供給し、検証装置１００により消費される電力量を計測する。検証装置１００および計測装置２００は、更に、通信ケーブル１２を介して接続されている。
【００４５】
検証装置１００は、検証対象プログラムを実行しながら、検証対象プログラムの各実行箇所（例えば、サブルーチンやソースプログラムの行範囲など）における消費電力量を取得する。検証対象プログラムの実行時の省電力化に役立てるためである。
【００４６】
ここで、検証装置１００は、次のように検証を行う。検証装置１００は、検証対象プログラムを実行しながら、所定のサンプリング周期（サンプリングを行う時間間隔）で、実行されている命令の格納メモリアドレスを取得する。検証装置１００は、当該サンプリングのタイミングで、計測装置２００により計測される消費電力量の計測結果を参照する。計測装置２００により計測される電力量は、検証装置１００により消費された累積の電力量（累積電力量と称することがある）である。検証装置１００は、検証対象プログラムのコンパイル時などに、検証対象プログラムの実行箇所と当該実行箇所に記述された命令が格納されているメモリアドレスとの対応関係の情報を予め取得する。検証装置１００は、当該対応関係と検証対象プログラム実行時のサンプリングの結果に基づいて、各サンプリング時刻において実行された実行箇所と累積電力量とを取得する。検証装置１００は、第１の実施の形態の情報処理装置１の一例である。
【００４７】
図３は、検証装置のハードウェア例を示す図である。検証装置１００は、プロセッサ１０１、ＲＡＭ１０２、ＨＤＤ１０３、画像信号処理部１０４、入力信号処理部１０５、読み取り装置１０６および通信インタフェース１０７，１０８を有する。各ユニットは検証装置１００のバスに接続されている。
【００４８】
プロセッサ１０１は、検証装置１００の情報処理を制御する。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ、ＤＳＰ、ＡＳＩＣまたはＦＰＧＡなどである。プロセッサ１０１は、ＣＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡなどのうちの２以上の要素の組み合わせであってもよい。プロセッサ１０１は、プログラムカウンタを有する。プログラムカウンタは、実行対象の命令のＲＡＭ１０２上のアドレスを示すレジスタである。
【００４９】
ＲＡＭ１０２は、検証装置１００の主記憶装置である。ＲＡＭ１０２は、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ１０２は、プロセッサ１０１による処理に用いる各種データを記憶する。
【００５０】
ＨＤＤ１０３は、検証装置１００の補助記憶装置である。ＨＤＤ１０３は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、ＯＳのプログラム、アプリケーションプログラム、および各種データを記憶する。検証装置１００は、フラッシュメモリやＳＳＤ（Solid State Drive）などの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
【００５１】
画像信号処理部１０４は、プロセッサ１０１からの命令に従って、検証装置１００に接続されたディスプレイ１３に画像を出力する。ディスプレイ１３としては、ＣＲＴ（Cathode Ray Tube）ディスプレイや液晶ディスプレイなどを用いることができる。
【００５２】
入力信号処理部１０５は、検証装置１００に接続された入力デバイス１４から入力信号を取得し、プロセッサ１０１に出力する。入力デバイス１４としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
【００５３】
読み取り装置１０６は、記録媒体１５に記録されたプログラムやデータを読み取る装置である。記録媒体１５として、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）を使用できる。また、記録媒体１５として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。読み取り装置１０６は、例えば、プロセッサ１０１からの命令に従って、記録媒体１５から読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０３に格納する。
【００５４】
通信インタフェース１０７は、ネットワーク１０を介して他の装置と通信を行う。通信インタフェース１０７は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。通信インタフェース１０８は、通信ケーブル１２を介して計測装置２００と通信する。
【００５５】
なお、検証装置１００は、前述のように、電源ケーブル１１を介して計測装置２００と接続される。電源ケーブル１１は、検証装置１００の電源部（図示を省略）に接続されている。電源部は、電源ケーブル１１を介して供給される電力により、検証装置１００の各ユニットを駆動させる。また、計測装置２００も、プロセッサ、ＲＡＭやフラッシュメモリなどの記憶装置および通信インタフェースを有している。
【００５６】
図４は、検証装置の機能例を示す図である。検証装置１００は、記憶部１１０、収集部１２０、補正部１３０、集計部１４０および表示制御部１５０を有する。記憶部１１０は、ＲＡＭ１０２やＨＤＤ１０３に確保された記憶領域として実現される。収集部１２０、補正部１３０、集計部１４０および表示制御部１５０は、ＲＡＭ１０２に記憶されたプログラムをプロセッサ１０１が実行することで実現される。
【００５７】
記憶部１１０は、命令アドレス変換テーブル、電力量観測テーブル、補正後テーブルおよび電力統計テーブルを有する。命令アドレス変換テーブルは、検証対象プログラムの実行箇所と、当該実行箇所に対応する命令が格納されたＲＡＭ１０２のアドレス範囲との対応関係を示す情報である。命令アドレス変換テーブルは、検証対象プログラムのコンパイル時にコンパイラが生成するデバッガ用情報を基に事前に作成され、記憶部１１０に格納される。
【００５８】
電力量観測テーブルは、検証対象プログラムの実行中に使用された命令の格納アドレスと累積電力量とのサンプリング結果の情報である。補正後テーブルは、電力量観測テーブルの登録値を補正した結果の情報である。電力統計テーブルは、補正後テーブルに基づく実行箇所毎の消費電力量などを集計した情報である。なお、記憶部１１０は、検証対象プログラムも記憶する。
【００５９】
収集部１２０は、検証対象プログラムの実行中に、プロセッサ１０１のプログラムカウンタのアドレス値および計測装置２００による計測データ（累積電力量）をサンプリングする。収集部１２０は、アドレス値および計測データを、サンプリングした時刻（サンプリング時刻）に対応付けて、記憶部１１０に記憶された電力量観測テーブルに記録する。収集部１２０によるサンプリング周期Ｉｐは、例えば、数ミリ秒（５ミリ秒〜１０ミリ秒）程度である。
【００６０】
補正部１３０は、電力量観測テーブルに記録された累積電力量の値を補正し、補正後テーブルを生成する。補正部１３０は、アドレスのサンプリング周期Ｉｐと計測装置２００による計測データの更新周期Ｉｅとが異なることで生じた累積電力量の誤検知を補正し、補正後テーブルを生成する。
【００６１】
集計部１４０は、補正後テーブルに基づいて、実行箇所毎の累積電力量を集計し、電力統計テーブルを生成する。集計部１４０は、実行箇所毎の消費電力の最大値や平均値などを求め、電力統計テーブルに登録する。
【００６２】
表示制御部１５０は、命令アドレス変換テーブル、補正後テーブルおよび電力統計テーブルに基づいて、検証対象プログラムの実行箇所毎の消費電力の取得結果を、ディスプレイ１３に出力する。例えば、表示制御部１５０は、時刻と実行箇所と消費電力との対応関係を示す３次元グラフを、ディスプレイ１３に表示させる。ユーザ（例えば、プログラムの開発者）は、３次元グラフを閲覧することで、実行箇所毎の消費電力を把握できる。すると、ユーザは、プログラムの改善箇所を容易に認識可能となる。例えば、ユーザは、消費電力が相対的に大きな実行箇所について、コーディングの見直しを行うと決定できる。
【００６３】
計測装置２００は、記憶部２１０、計測部２２０および送信部２３０を有する。記憶部２１０は、計測装置２００が有するＲＡＭやフラッシュメモリなどの記憶装置に確保された記憶領域として実現される。計測部２２０および送信部２３０は、計測装置２００の記憶装置に格納されたプログラムを計測装置２００のプロセッサが実行することで実現される。ただし、計測部２２０や送信部２３０は、ＡＳＩＣやＦＰＧＡなどの特定用途の電子回路により実現されてもよい。
【００６４】
記憶部２１０は、計測部２２０による検証装置１００の累積電力量の計測結果（計測データ）を記憶する。
計測部２２０は、検証装置１００により消費される電力量の累積（累積電力量）を計測し、記憶部２１０に記憶された計測データを更新する。計測部２２０は、所定の周期で計測データを更新する。計測部２２０による計測データの更新周期Ｉｅは、検証装置１００によるサンプリング周期Ｉｐよりも長く（Ｉｅ＞Ｉｐ）、かつ、Ｉｅ≒Ｉｐとする。
【００６５】
送信部２３０は、検証装置１００の要求に応じて、記憶部２１０に記憶された計測データを検証装置１００に送信する。
図５は、命令アドレス変換テーブルの例を示す図である。命令アドレス変換テーブル１１１は、記憶部１１０に格納される。命令アドレス変換テーブル１１１は、実行箇所、開始アドレスおよび終了アドレスの項目を含む。
【００６６】
実行箇所の項目には、実行箇所の名称（サブルーチン名、ループの行番号範囲、ソースプログラムの行番号または関数名など）が登録される。開始アドレスの項目には、実行箇所に対応する命令が格納されたアドレス範囲のうちの先頭のアドレスが登録される。終了アドレスの項目には、実行箇所に対応する命令が格納されたアドレス範囲のうちの終端のアドレスが登録される。
【００６７】
例えば、命令アドレス変換テーブル１１１には、実行箇所が“ｘ＿ｓｏｌｖｅ”、開始アドレスが“０ｘ４０９ｄ２０”、終了アドレスが“０ｘ４０ｅ００ｂ”という情報が登録される。これは、“ｘ＿ｓｏｌｖｅ”の関数名で識別される実行箇所に対応する命令を格納したＲＡＭ１０２上のアドレス範囲が“０ｘ４０９ｄ２０”から“０ｘ４０ｅ００ｂ”までであることを示す。すなわち、当該アドレス範囲が参照されているとき、実行箇所“ｘ＿ｓｏｌｖｅ”が実行されていることになる。
【００６８】
図６は、電力量観測テーブルの例を示す図である。電力量観測テーブル１１２は、記憶部１１０に格納される。電力量観測テーブル１１２は、時刻、命令アドレスおよび累積電力量の項目を含む。
【００６９】
時刻の項目には、命令アドレスおよび累積電力量のサンプリング時刻が登録される。命令アドレスの項目には、プログラムカウンタから取得された実行中命令の格納メモリアドレスが登録される。累積電力量の項目には、計測装置２００から取得された累積電力量が登録される。
【００７０】
例えば、電力量観測テーブル１１２は、時刻が“Ｔ１”、命令アドレスが“０ｘ５１５６４３１”、累積電力量が“８６４６５４５４１”という情報が登録される。これは、時刻“Ｔ１”において実行された命令の格納メモリアドレスが“０ｘ５１５６４３１”であり、計測装置２００から取得された累積電力量が“８６４６５４５４１”であったことを示す。ここで、“Ｔ１”などの時刻情報は、例えば特定の時点からの経過秒数などである。検証装置１００は、時刻情報を年月日時分秒などの情報に変換することもできる。
【００７１】
電力量観測テーブル１１２によれば、時刻“Ｔ２”と時刻“Ｔ３”とで累積電力量の値が何れも“１９８２３１５９６３”であり、同じである。２つの時刻で同じ累積電力量がサンプリングされる理由は、計測装置２００による計測データの更新周期Ｉｅが、検証装置１００によるサンプリング周期Ｉｐよりも長いためである。
【００７２】
図７は、補正後テーブルの例を示す図である。補正後テーブル１１３は、記憶部１１０に格納される。補正後テーブルは、時刻、命令アドレスおよび累積電力量の項目を含む。
時刻の項目には、命令アドレスおよび累積電力量のサンプリングを行った時刻が登録される。命令アドレスの項目には、当該時刻においてプログラムカウンタから取得された命令アドレスが登録される。累積電力量の項目は、当該時刻における補正後の累積電力量が登録される。
【００７３】
例えば、補正後テーブル１１３には、時刻が“Ｔ３”、命令アドレスが“０ｘ４２２４２７”、累積電力量が“１８７２０８５３２１”という情報が登録される。この情報は、電力量観測テーブル１１２の時刻“Ｔ３”に対応する累積電力量“１９８２３１５９６３”が補正された結果である。
【００７４】
図８は、電力統計テーブルの例を示す図である。電力統計テーブル１１４は、記憶部１１０に格納される。電力統計テーブル１１４は、実行箇所、観測回数、消費電力量、最大消費電力および平均消費電力の項目を含む。
【００７５】
実行箇所の項目には、実行箇所の名称が登録される。観測回数の項目には、当該実行箇所についてサンプリングした回数が登録される。消費電力量の項目には、当該実行箇所の実行に伴う累積の消費電力量が登録される。最大消費電力の項目には、最大消費電力（取得された消費電力の最大値）が登録される。平均消費電力の項目には、平均消費電力（取得された消費電力の平均値）が登録される。
【００７６】
ここで、最大消費電力は、該当の実行箇所について、サンプリング周期単位の時間間隔で消費された最大のエネルギーと考えてもよい。平均消費電力は、該当の実行箇所について、サンプリング周期単位の時間間隔で消費された平均のエネルギーと考えてもよい。累積電力量は、該当の実行箇所について、各サンプリング周期の時間間隔で消費されたエネルギーの累積と考えてもよい。
【００７７】
電力統計テーブル１１４には、実行箇所が“ｘ＿ｓｏｌｖｅ”、観測回数が“３２９１”、消費電力量が“３８６８５５”、最大消費電力が“１３４．９”、平均消費電力が“１１７．５”という情報が登録される。これは、実行箇所“ｘ＿ｓｏｌｖｅ”に関する観測回数が３２９１回であり、当該実行箇所に対して観測された消費電力量の合計が“３８６８５５”、最大消費電力が“１３４．９”、平均消費電力が“１１７．５”であったことを示す。
【００７８】
次に、検証装置１００による検証対象プログラムの検証手順を例示する。前述のように、検証装置１００は、検証対象プログラムのコンパイル時に、命令アドレス変換テーブル１１１を予め作成し、記憶部１１０に格納している。
【００７９】
図９は、検証装置の処理例を示すフローチャートである。以下、図９に示す処理をステップ番号に沿って説明する。
（Ｓ１）収集部１２０は、検証対象プログラムの実行を開始し、アドレスおよび累積電力量のサンプリングを開始する。収集部１２０は、プロセッサ１０１のプログラムカウンタに格納された値から、収集部１２０は、計測装置２００に計測データの送信要求を送信する。計測装置２００は、要求に応じて、累積電力量の計測データを検証装置１００に送信する。収集部１２０は、計測装置２００から計測データを受信する。収集部１２０は、取得したアドレスおよび累積電力量の情報を、サンプリング時刻に対応付けて電力量観測テーブル１１２に登録する。詳細は後述する。
【００８０】
（Ｓ２）補正部１３０は、収集部１２０により作成された電力量観測テーブル１１２の累積電力量を補正し、補正後テーブル１１３を作成する。詳細は後述する。
（Ｓ３）集計部１４０は、補正部１３０により作成された補正後テーブル１１３に基づいて、電力統計テーブル１１４を作成する。詳細は後述する。
【００８１】
（Ｓ４）表示制御部１５０は集計部１４０により作成された電力統計テーブル１１４に基づいて、検証対象プログラムの実行箇所毎の消費電力を可視化（例えば、グラフ化など）してディスプレイ１３に表示させる。詳細は後述する。
【００８２】
図１０は、データ収集処理の例を示すフローチャートである。以下、図１０に示す処理をステップ番号に沿って説明する。以下の手順は図９のステップＳ１に相当する。
（Ｓ１１）収集部１２０は、命令アドレスのサンプリング周期Ｉｐを設定する。例えば、収集部１２０は、検証対象プログラムの実行中にサンプリング周期Ｉｐで累積電力量採取の割り込みを発生させて、情報収集を行えるようにする。なお、サンプリング周期Ｉｐおよび計測装置２００による計測データの更新周期Ｉｅ（Ｉｅ＞ＩｐかつＩｅ≒Ｉｐである）は、記憶部１１０に予め格納されている。
【００８３】
（Ｓ１２）収集部１２０は、検証対象プログラムの実行を開始する。
（Ｓ１３）収集部１２０は、検証対象プログラムの実行が終了したか否かを判定する。検証対象プログラムの実行が終了した場合、処理をステップＳ１６に進める。検証対象プログラムの実行が終了していない場合、処理をステップＳ１４に進める。
【００８４】
（Ｓ１４）収集部１２０は、サンプリング時間に達したことを検出する（例えば、割り込み発生により検出する）。
（Ｓ１５）収集部１２０は、累積電力量の計測データを計測装置２００から読み取る。収集部１２０は、検証対象プログラムにより実行中の命令アドレスをプログラムカウンタから取得し、サンプリング時刻に対応付けてＲＡＭ１０２上のバッファなどに格納する。そして、処理をステップＳ１３に進める。
【００８５】
（Ｓ１６）収集部１２０は、ステップＳ１５で取得した累積電力量および命令アドレスの情報をサンプリング時刻に対応付けて、電力量観測テーブル１１２に記録する。
図１１は、累積電力量の補正処理の例を示すフローチャートである。以下、図１１に示す処理をステップ番号に沿って説明する。以下の手順は図９のステップＳ２に相当する。
【００８６】
（Ｓ２１）補正部１３０は、記憶部１１０に記憶された電力量観測テーブル１１２を参照して、各時刻Ｔｐ（ｉ）における累積電力量Ｅｐ（ｉ）を取得する。
（Ｓ２２）補正部１３０は、Ｅｐ（ｉ）＝Ｅｐ（ｉ＋１）であるｉの値を全て特定する。
【００８７】
（Ｓ２３）補正部１３０は、特定した各ｉの値について、式（８）により差Ｄｅの上下限を決めるｉおよびｊの組（ｉk，ｊk）を複数求め、式（９）により基準時刻の差Ｄｅを算出する。補正部１３０は、差Ｄｅを用いて、式（２）、（３）より、各ｊに対し計測装置２００による計測データの更新時刻Ｔｅ（ｊ）を求める。
【００８８】
（Ｓ２４）補正部１３０は、更新時刻Ｔｅ（ｊ）における累積電力量Ｅｅ（ｊ）を算出する。具体的には、補正部１３０は、Ｔｐ（ｉ−１）＜Ｔｅ（ｊ）≦Ｔｐ（ｉ）であるＴｅ（ｊ）に対し、Ｅｅ（ｊ）＝Ｅｐ（ｉ）とする。
【００８９】
（Ｓ２５）補正部１３０は、求めたＥｅ（ｊ）を用いて、時刻Ｔｐ（ｉ）に対応する補正後の累積電力量Ｅｐｍ（ｉ）を線形補間により算出する。
図１２は、線形補間の具体例を示す図である。図１２では、時間と消費された電力量との関係を示す４種類のグラフ（系列Ｋ１１，Ｋ１２，Ｋ２１，Ｋ２２）を例示している。横軸は時間である。縦軸は電力量である。
【００９０】
系列Ｋ１１は、補正前の累積電力量の時系列を示す。例えば、系列Ｋ１１は、電力量観測テーブル１１２をグラフ化したものである。系列Ｋ１２は、時刻Ｔｐ（ｉ−１）の累積電力量Ｅｐ（ｉ−１）と時刻Ｔｐ（ｉ）の累積電力量Ｅｐ（ｉ）との差分の電力量（差分電力量）Ｐ（ｉ）＝Ｅｐ（ｉ）−Ｅｐ（ｉ−１）の時系列を示す。系列Ｋ１２は、時刻Ｔｐ（ｉ−１）から時刻Ｔｐ（ｉ）までの期間で消費した電力量Ｐ（ｉ）を示すともいえる。Ｅｐ（ｉ）＝Ｅｐ（ｉ＋１）のとき、Ｐ（ｉ）＝０であり、時刻Ｔｐ（ｉ）から時刻Ｔｐ（ｉ＋１）までの期間における消費電力量が０と誤観測されることになる。
【００９１】
そこで、補正部１３０は、系列Ｋ１１を補正することで、系列Ｋ２１を得る。具体的には、式（９）により差Ｄｅを算出し、各ｊについて時刻Ｔｅ（ｊ）を求める。補正部１３０は、Ｔｐ（ｉ−１）＜Ｔｅ（ｊ）≦Ｔｐ（ｉ）であるＴｅ（ｊ）に対し、累積電力量Ｅｅ（ｊ）＝Ｅｐ（ｉ）とする。すると、式（１０）により、時刻Ｔｐ（ｉ＋１）における補正後の累積電力量Ｅｐｍ（ｉ＋１）を計算できる。
【００９２】
【数１０】
0006544013.tif 000011
【００９３】
同様に、式（１１）により、時刻Ｔｐ（ｉ）における補正後の累積電力量Ｅｐｍ（ｉ）も計算できる。
【００９４】
【数１１】
0006544013.tif 000012
【００９５】
更に、Ｔｅ（ｊ＋１）＜Ｔｐ（ｉ＋２）＜Ｔｅ（ｊ＋２）である時刻Ｔｐ（ｉ＋２）に対し、式（１２）により補正後の累積電力量Ｅｐｍ（ｉ＋２）を計算することもできる。
【００９６】
【数１２】
0006544013.tif 000013
【００９７】
補正部１３０は、各時刻Ｔｐ（ｉ）における補正後の累積電力量を補正後テーブル１１３に登録する。系列Ｋ２１は、補正後の累積電力量を示す。例えば、系列Ｋ２１は、補正後テーブル１１３をグラフ化したものである。系列Ｋ２２は、時刻Ｔｐ（ｉ−１）の補正後の累積電力量Ｅｐｍ（ｉ−１）と時刻Ｔｐ（ｉ）の補正後の累積電力量Ｅｐｍ（ｉ）との差分電力量Ｑ（ｉ）＝Ｅｐｍ（ｉ）−Ｅｐｍ（ｉ−１）を示す。系列Ｋ２２は、時刻Ｔｐ（ｉ−１）から時刻Ｔｐ（ｉ）までの期間で消費した差分電力量Ｑ（ｉ）を示すともいえる。
【００９８】
系列Ｋ１２と系列Ｋ２２とを比較すると、例えば、ある時刻Ｔｐ（ｉ＋１）において、Ｐ（ｉ＋１）＝０であるのに対し、Ｑ（ｉ＋１）≠０である。すなわち、時刻Ｔｐ（ｉ）から時刻Ｔｐ（ｉ＋１）までの期間における消費電力量を適切に取得できたことになる。
【００９９】
このように、検証装置１００は、計測装置２００から取得した累積電力量の情報を線形補間により補正することで、各時刻における累積電力量を適切に取得できる。検証装置１００は、各時刻において参照された命令アドレスもサンプリングしているので、各命令アドレスに対応する実行箇所の消費電力量を適切に取得できる。
【０１００】
図１３は、実質最大消費電力の計算処理の例を示すフローチャートである。以下、図１３に示す処理をステップ番号に沿って説明する。以下の手順は図９のステップＳ３に相当する。
【０１０１】
（Ｓ３１）集計部１４０は、補正後テーブル１１３に基づいて、差分電力量Ｑ（ｉ）＝Ｅｐｍ（ｉ）−Ｅｐｍ（ｉ−１）を算出する。
（Ｓ３２）集計部１４０は、ステップＳ３３〜Ｓ３５を、実行箇所毎に繰り返し実行する。ｉ＝２からｉ＝Ｎまでｉを１ずつインクリメントして繰り返し実行する。ここで、Ｎは、サンプリングの最終回目の回数である。
【０１０２】
（Ｓ３３）集計部１４０は、Ｑ（ｉ）＞ｍａｘ｛Ｑ（ｉ−１），Ｑ（ｉ＋１）｝であるか否かを判定する。すなわち、集計部１４０は、Ｑ（ｉ−１）またはＱ（ｉ＋１）の何れか大きい方の値よりも、Ｑ（ｉ）の値の方が大きいか否かを判定する。Ｑ（ｉ）の値の方が大きい場合、処理をステップＳ３４に進める。Ｑ（ｉ）の方が大きくない（Ｑ（ｉ）が、Ｑ（ｉ−１）またはＱ（ｉ＋１）の何れか大きい方の値以下である）場合、処理をステップＳ３５に進める。
【０１０３】
（Ｓ３４）集計部１４０は、時刻Ｔｐ（ｉ）における実質消費電力Ｇ（ｉ）＝ｍａｘ｛Ｑ（ｉ−１），Ｑ（ｉ＋１）｝とする。すなわち、集計部１４０は、Ｑ（ｉ−１）またはＱ（ｉ＋１）の何れか大きい方の値を時刻Ｔｐ（ｉ）における実質消費電力Ｇ（ｉ）とする。そして、処理をステップＳ３６に進める。
【０１０４】
（Ｓ３５）集計部１４０は、時刻Ｔｐ（ｉ）における実質消費電力Ｇ（ｉ）＝Ｑ（ｉ）とする。ここで、集計部１４０は、ステップＳ３４，Ｓ３５で求めた実質消費電力Ｇ（ｉ）を時刻Ｔｐ（ｉ）に対応付けて、ＲＡＭ１０２に保持する。
【０１０５】
（Ｓ３６）集計部１４０は、ステップＳ３３〜Ｓ３５の処理をｉ＝Ｎに達するまで繰り返し実行すると、繰り返しを終了する。
（Ｓ３７）集計部１４０は、命令アドレス変換テーブル１１１および補正後テーブル１１３に基づいて、各時刻Ｔｐ（ｉ）で参照された命令アドレスから各時刻Ｔｐ（ｉ）での実行箇所を特定する。例えば、ある時刻において、実行箇所“ｘ＿ｓｏｌｖｅ”に対応するアドレス範囲に属するアドレスの命令が実行されていれば、集計部１４０は、当該時刻における実行箇所を“ｘ＿ｓｏｌｖｅ”と特定する。
【０１０６】
（Ｓ３８）集計部１４０は、ステップＳ３２〜Ｓ３６で求めた各時刻Ｔｐ（ｉ）における実質消費電力Ｇ（ｉ）に基づいて、実行箇所毎の最大消費電力（実質最大消費電力）を取得する。集計部１４０は、取得した最大消費電力を実行箇所に対応付けて電力統計テーブル１１４に登録する。
【０１０７】
（Ｓ３９）集計部１４０は、命令アドレス変換テーブル１１１および補正後テーブル１１３に基づいて、実行箇所毎の消費電力量の合計を計算し、電力統計テーブル１１４の消費電力量の項目に登録する。集計部１４０は、命令アドレス変換テーブル１１１および補正後テーブル１１３に基づいて、実行箇所毎の平均消費電力を計算し、電力統計テーブル１１４の平均消費電力の項目に登録する。補正後テーブル１１３の命令アドレスの登録値から検証対象プログラムの実行箇所を特定する方法は、ステップＳ３７で例示した方法と同様である。
【０１０８】
なお、ステップＳ３２〜Ｓ３６の処理を、差分電力量Ｑ（ｉ）の最大値Ｑ（ｔ）を含む所定数のデータ（例えば、Ｑ（ｔ−Ｗ），Ｑ（ｔ−Ｗ＋１），・・・，Ｑ（ｔ），・・・，Ｑ（ｔ＋Ｗ））に限定して実行してもよい。最大値Ｑ（ｔ）前後のデータに限定して実行することで、繰り返し数を低減し、演算コストを軽減できるからである。
【０１０９】
図１４は、実質消費電力の算出例（その１）を示す図である。図１４では、時間と消費電力の関係を示す２種類のグラフ（系列Ｋ３１，Ｋ３２）を例示している。横軸は時間である。縦軸は消費電力である。系列Ｋ３１は、時刻Ｔｐ（ｉ）に対して差分電力量Ｑ（ｉ）をプロットしたものである。なお、図１４に示す部分において、系列Ｋ３１，Ｋ３２の時刻Ｔｐ（ｔ）以外の箇所は重なっている。
【０１１０】
系列Ｋ３１では、時刻Ｔｐ（ｔ）において、差分電力量Ｑ（ｔ）で極大になっている。系列Ｋ３１の例では、ｍａｘ｛Ｑ（ｔ−１），Ｑ（ｔ＋１）｝＝Ｑ（ｔ＋１）であり、Ｑ（ｔ）＞Ｑ（ｔ＋１）である。すなわち、Ｑ（ｔ）＞ｍａｘ｛Ｑ（ｔ−１），Ｑ（ｔ＋１）｝を満たす。よって、集計部１４０は、実質消費電力Ｇ（ｔ）＝Ｑ（ｔ＋１）とする。集計部１４０は、系列Ｋ３１において、時刻Ｔｐ（ｔ）の値を実質消費電力Ｇ（ｔ）に置き換える。図１４に示す他の時刻では、実質消費電力Ｇ（ｉ）＝Ｑ（ｉ）となる。すると、集計部１４０は、補正後の系列Ｋ３２を得る。集計部１４０は、系列Ｋ３２に基づいて、実行箇所毎の最大消費電力を取得する。
【０１１１】
このようにして最大消費電力を取得することで、最大消費電力を適切に取得可能となる。理由は次の通りである。検証対象プログラムが使用し得る最大電力を知るために、最大消費電力を求めることがある。このとき、採取した累積電力量のデータを検証対象プログラムの電力プロファイルとしてユーザに示すにあたり、最大消費電力のような瞬間値は補正されることが好ましい。消費電力が瞬間的に最大値となった後すぐに低下するケースでは、検証装置１００内の電子回路におけるコンデンサや検証装置１００に接続される無停電電源装置での蓄電の効果や、プロセッサ１０１の動作周波数等に関する電力自動制御のフィードバック遅延の影響を考慮する余地があるからである。すなわち、消費電力量が瞬間的に極大となっているケースでは、コンデンサの効果や電力自動制御のフィードバックの遅延の影響を考慮すべき可能性が高い。この場合、この種のケースを除去して、実質的な最大消費電力（実質最大消費電力）を求めることが好ましい。
【０１１２】
そこで、集計部１４０は、上記のようにして、コンデンサや電力自動制御のフィードバックの効果分を除去して、時刻Ｔｐ（ｉ）における実質消費電力Ｇ（ｉ）を適切に求めることができる。特に、図１３，図１４で例示した方法は、コンデンサ等の容量が比較的少ない場合や、プロセッサ１０１による電力自動制御のフィードバックが比較的早い場合に有用である。そして、集計部１４０は、実質消費電力Ｇ（ｉ）の最大値を取得することで、実質最大消費電力を適切に取得できる。
【０１１３】
図１５は、実質消費電力の算出例（その２）を示す図である。集計部１４０は、例えば、電力自動制御のフィードバックが比較的遅い場合などは、次のように実質消費電力Ｇ（ｉ）を算出し、実質最大消費電力を求めてもよい。ここで、以下の説明において、Ｄはフィードバック遅延を表す定数パラメータ（１以上の整数）であり、Ｍはコンデンサの容量に応じた定数パラメータ（蓄積可能な電力量を表す）である。
【０１１４】
（１）集計部１４０は、時刻Ｔｐ（ｉ），Ｔｐ（ｉ＋１），・・・，Ｔｐ（ｉ＋Ｄ）における検証対象プログラムの実行箇所が同じ、かつ、差分電力量Ｑ（ｉ）≦ｍｉｎ｛Ｑ（ｉ＋１），・・・，Ｑ（ｉ＋Ｄ）｝＋Ｍの場合、実質消費電力Ｇ（ｉ）＝Ｑ（ｉ）とする。
【０１１５】
（２）集計部１４０は、時刻Ｔｐ（ｉ），Ｔｐ（ｉ＋１），・・・，Ｔｐ（ｉ＋Ｄ）における検証対象プログラムの実行箇所が同じ、かつ、差分電力量Ｑ（ｉ）＞ｍｉｎ｛Ｑ（ｉ＋１），・・・，Ｑ（ｉ＋Ｄ）｝＋Ｍの場合、実質消費電力Ｇ（ｉ）＝ｍａｘ｛Ｑ（ｉ＋ｍ）｝とする。ただし、ｍは、１≦ｍ≦Ｄの整数、かつ、Ｑ（ｉ＋ｍ）＜Ｑ（ｉ）−Ｍを満たすとする（ｍに関するこの条件を条件Ｌとする）。ｍａｘ演算は、Ｑ（ｉ＋ｍ）の複数の値から最大値を取得する演算である。
【０１１６】
（３）上記（１），（２）の何れにも該当しない場合、実質消費電力Ｇ（ｉ）＝差分電力量Ｑ（ｉ）とする。
このようにして求めた実質消費電力Ｇ（ｉ）の最大値を実質最大消費電力として取得してもよい。
【０１１７】
図１５では、時間と消費電力の関係を示す２種類のグラフ（系列Ｋ４１，Ｋ４２）を例示している。横軸は時間である。縦軸は消費電力（サンプリング周期毎の期間に消費された電力量）である。系列Ｋ４１は、時刻Ｔｐ（ｉ）に対して差分電力量Ｑ（ｉ）をプロットしたものである。なお、図１５に示す部分において、系列Ｋ４１，Ｋ４２の時刻Ｔｐ（ｔ），Ｔｐ（ｔ＋１）以外の箇所は重なっている。
【０１１８】
系列Ｋ４１では、時刻Ｔｐ（ｔ）において、差分電力量Ｑ（ｔ）で極大になっている。ここで、Ｄ＝２とする。また、図１５の例では、時刻Ｔｐ（ｔ），Ｔｐ（ｔ＋１），Ｔｐ（ｔ＋２），Ｔｐ（ｔ＋３）での検証対象プログラムの実行箇所は同一であり、その他の時刻では実行箇所は異なる。
【０１１９】
このとき、ｍｉｎ｛Ｑ（ｔ＋１），Ｑ（ｔ＋２）｝＝Ｑ（ｔ＋２）であり、Ｑ（ｔ）＞Ｑ（ｔ＋２）＋Ｍを満たすとする。すなわち、Ｑ（ｔ）＞ｍｉｎ｛Ｑ（ｔ＋１），Ｑ（ｔ＋２）｝＋Ｍを満たす。
【０１２０】
このとき、Ｑ（ｔ＋１）＞Ｑ（ｔ）−Ｍであるため、ｍ＝１は条件Ｌを満たさない。Ｑ（ｔ＋２）＜Ｑ（ｔ）−Ｍであるため、ｍ＝２は条件Ｌを満たす。したがって、Ｑ（ｔ）に対して条件Ｌを満たすｍは、ｍ＝２である。また、ｍａｘ｛Ｑ（ｔ＋２）｝＝Ｑ（ｔ＋２）である。よって、集計部１４０は、実質消費電力Ｇ（ｔ）＝ｍａｘ｛Ｑ（ｔ＋２）｝＝Ｑ（ｔ＋２）とする。
【０１２１】
集計部１４０は、時刻Ｔｐ（ｔ＋１）に対しても同様に実質消費電力Ｇ（ｔ＋１）を求めることができる。具体的には、ｍｉｎ｛Ｑ（ｔ＋２），Ｑ（ｔ＋３）｝＝Ｑ（ｔ＋２）であり、Ｑ（ｔ＋１）＞Ｑ（ｔ＋２）＋Ｍを満たすとする。すなわち、Ｑ（ｔ＋１）＞ｍｉｎ｛Ｑ（ｔ＋２），Ｑ（ｔ＋３）｝＋Ｍを満たす。
【０１２２】
このとき、Ｑ（ｔ＋２）＜Ｑ（ｔ＋１）−Ｍであるため、ｍ＝１は条件Ｌを満たす。また、Ｑ（ｔ＋３）＜Ｑ（ｔ＋１）−Ｍであるため、ｍ＝２は条件Ｌを満たす。したがって、Ｑ（ｔ＋１）に対して条件Ｌを満たすｍは、ｍ＝１，２である。また、ｍａｘ｛Ｑ（ｔ＋２），Ｑ（ｔ＋３）｝＝Ｑ（ｔ＋３）である。よって、集計部１４０は、実質消費電力Ｇ（ｔ＋１）＝ｍａｘ｛Ｑ（ｔ＋２），Ｑ（ｔ＋３）｝＝Ｑ（ｔ＋３）とする。
【０１２３】
図１５に示す他の時刻では、実質消費電力Ｇ（ｉ）＝Ｑ（ｉ）となる。すると、集計部１４０は、補正後の系列Ｋ４２を得る。集計部１４０は、系列Ｋ４２に基づいて、実行箇所毎の最大消費電力を取得する。こうして、集計部１４０は、電力自動制御のフィードバックが比較的遅い場合にも、電力自動制御やコンデンサの効果分を除去して、実質最大消費電力を適切に取得できる。
【０１２４】
なお、集計部１４０は、実質消費電力Ｇ（ｉ）を、実質最大消費電力の算出にのみ使用し、検証対象プログラムの実行箇所毎の消費電力量や平均消費電力の算出には用いない。そのため、実行箇所毎の消費電力量や平均消費電力を比較する際に、実質消費電力Ｇ（ｉ）を求めるために行った補正の影響が及ぶことはない。
【０１２５】
図１６は、出力処理の例を示すフローチャートである。以下、図１６に示す処理をステップ番号に沿って説明する。
（Ｓ４１）表示制御部１５０は、記憶部１１０に記憶された命令アドレス変換テーブル１１１および補正後テーブル１１３に基づいて、各時刻Ｔｐ（ｉ）における実行箇所毎の消費電力Ｒ（ｉ）を計算する。具体的には、表示制御部１５０は、Ｒ（ｉ）＝Ｅｐｍ（ｉ）−Ｅｐｍ（ｉ−１）とする。なお、図１３のステップＳ３１において、集計部１４０が、各時刻Ｔｐ（ｉ）における実行箇所毎の消費電力Ｒ（ｉ）（＝Ｑ（ｉ））の計算結果を記憶部１１０に格納しておいてもよい。
【０１２６】
（Ｓ４２）表示制御部１５０は、ステップＳ４１の計算結果に基づいて、第１の軸を時刻、第２の軸を消費電力、第３の軸を検証対象プログラムの実行箇所に対応付けた３次元折れ線グラフを描画し、ディスプレイ１３に表示させる。表示制御部１５０は、ユーザによる入力に応じて、３次元折れ線グラフの視点を移動させるよう描画内容を変更してもよい。表示制御部１５０は、記憶部１１０に記憶された電力統計テーブル１１４に基づいて、第３の軸における実行箇所の並び順をソートする。例えば、表示制御部１５０は、ユーザの指示入力に応じて、サンプリング回数の多い順、総消費電力量の大きい順、最大消費電力の大きい順または平均消費電力の大きい順などでソートする。
【０１２７】
図１７は、グラフの表示例（その１）を示す図である。表示制御部１５０は、検証対象プログラムの実行中における消費電力を図１７に示すように３次元グラフにより可視化する。このとき、例えば、第１の軸（横方向）を時間、第２の軸（縦方向）を消費電力（例えば、平均消費電力）、第３の軸（奥行き方向）をプログラムの実行箇所に対応付ける。
【０１２８】
第３の軸に対応する実行箇所は、サブルーチン、ループ、ソースプログラムの行番号など、調査の状況に応じて複数の粒度から選択可能である。例えば、命令アドレス変換テーブル１１１を粒度に応じて複数用意しておけば、実行箇所の複数の粒度に応じた消費電力を把握可能である。プログラムの実行中に取得された消費電力のデータは、何れかの粒度でグルーピングされる。表示制御部１５０は、同一のサブルーチンや同一のループ、同一の行番号に対するデータを１つの系列とし、３次元グラフとして可視化する。
【０１２９】
ここで、第３の軸の並び順が重要となる。例えば、表示制御部１５０は、（ａ）実行頻度（すなわち、サンプリング回数）の高い順、（ｂ）総消費電力量の大きい順、（ｃ）最大消費電力の大きい順、（ｄ）平均消費電力の大きい順などでソートし得る。
【０１３０】
実行頻度の大きい順にソートしてグラフを描画することで、プログラムの実行時間を抑制しながら省電力化を図るために見直すべき実行箇所のユーザによる判断を支援できる。例えば、ユーザは、実行時間の長期化を防止する観点では、実行頻度が上位（例えば、１位や２位）の実行箇所を避けて消費電力を削減することが有効と判断できる。
【０１３１】
また、総消費電力量の大きい順にソートしてグラフを描画することで、総消費電力量を削減するために見直すべき実行箇所のユーザによる判断を支援できる。例えば、ユーザは、上位の実行箇所から順に消費電力を削減することが有効と判断できる。
【０１３２】
また、消費電力の最大値は、使用するコンピュータの運用条件によっては、プログラムを実行できる期間を制約してしまう場合もある（例えば、夜間のみ等、実行機会が制限され得る）。このため、消費電力の最大値を一定の値以下に抑えることが要件となり得る。そこで、最大消費電力の大きい順でソートしてグラフを描画することで、プログラムの実行機会を確保する観点での改善箇所のユーザによる判断を支援できる。例えば、ユーザは、最大消費電力が上位の実行箇所から順に最大消費電力を削減することが有効と判断できる。
【０１３３】
更に、平均消費電力の大きい順にソートしてグラフを描画することで、実行時間を抑制しつつ消費電力量を削減可能な箇所や使用するハードウェア資源を一時的に追加して高速化できる箇所の特定を支援できる。
【０１３４】
図１８は、グラフの表示例（その２）を示す図である。表示制御部１５０は、検証結果を２次元のグラフでも描画し得る。図１８では、横軸を実行箇所、縦軸を消費電力（例えば、平均消費電力）としたグラフを描画する例を示している。前述のように、表示制御部１５０は、電力統計テーブル１１４に基づいて、横軸の実行箇所を、実行頻度、総消費電力量、最大消費電力または平均消費電力などの任意の順序でソート可能である。表示制御部１５０は、ユーザの指示入力に応じて、ユーザにとってより見易い方法でグラフを描画することで、ユーザによる改善箇所の効率的な検討を支援できる。
【０１３５】
特に、第２の実施の形態の検証装置１００は、サンプリングした累積電力量を線形補間により補正することで、実行箇所毎の消費電力を適切に取得できる。このため、ユーザに対して、実行箇所毎の適正な消費電力を提示することが可能である。すなわち、検証装置１００は、プログラムの改善箇所のユーザによる検討を適切に支援できる。ユーザは、検証装置１００による消費電力の取得結果を閲覧することで、プログラムの改善箇所をより正しく判断できるようになる。
【０１３６】
なお、第１の実施の形態の情報処理は、演算部１ｂにプログラムを実行させることで実現できる。また、第２の実施の形態の情報処理は、プロセッサ１０１にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体１５に記録できる。
【０１３７】
例えば、プログラムを記録した記録媒体１５を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体１５に記録されたプログラムまたは他のコンピュータから受信したプログラムを、ＲＡＭ１０２やＨＤＤ１０３などの記憶装置に格納し（インストールし）、当該記憶装置からプログラムを読み込んで実行してもよい。
【０１３８】
以上の第１，第２の実施の形態を含む実施形態に関し、更に以下の付記を開示する。
（付記１）  プログラムの実行中に消費した累積電力量の計測結果を参照した時刻と当該累積電力量と当該時刻に実行した命令の格納メモリアドレスとの対応を示す第１の情報と、前記プログラムの実行箇所と命令格納メモリアドレスの範囲との対応を示す第２の情報と、を記憶する記憶部と、
前記第１および前記第２の情報に基づいて、所定の実行箇所が実行された時刻を判定し、当該時刻における前記累積電力量を線形補間により算出する演算部と、
を有する情報処理装置。
【０１３９】
（付記２）  前記演算部は、前記第１の情報と前記計測結果が更新される周期と前記計測結果を参照する周期とに基づいて、前記計測結果の各更新時刻における前記累積電力量を算出し、算出した各更新時刻における前記累積電力量を用いて前記線形補間を行う、付記１記載の情報処理装置。
【０１４０】
（付記３）  前記演算部は、第１の更新時刻における第１の累積電力量と前記第１の更新時刻の次の第２の更新時刻における第２の累積電力量とを用いて、前記第１および前記第２の更新時刻の間の前記実行箇所の実行時刻における前記累積電力量を前記線形補間により算出する、付記２記載の情報処理装置。
【０１４１】
（付記４）  前記演算部は、前記第１および前記第２の累積電力量の差を前記第１および前記第２の更新時刻の差で割った商に、前記第１の更新時刻と前記実行時刻との差を乗じた値と、前記第１の累積電力量との和を、前記実行時刻における前記累積電力量とする、付記３記載の情報処理装置。
【０１４２】
（付記５）  前記演算部は、各時刻での前記累積電力量の算出結果から各時刻での前記実行箇所の実行による消費電力を算出し、第１の時刻における消費電力を、第２の時刻における消費電力との比較に応じて補正する、付記１乃至４の何れか１つに記載の情報処理装置。
【０１４３】
（付記６）  前記演算部は、前記第１の時刻における消費電力が、前記第１の時刻の１つ前の時刻における消費電力および前記第１の時刻の１つ後の時刻における消費電力よりも大きいとき、前記第１の時刻の消費電力を、前記１つ前の時刻または前記１つ後の時刻における消費電力のうち、大きい方の消費電力に補正する、付記５記載の情報処理装置。
【０１４４】
（付記７）  前記演算部は、前記第１の時刻における消費電力と、前記第１の時刻の次の時刻以降の複数の時刻における消費電力との比較に応じて補正する、付記５記載の情報処理装置。
【０１４５】
（付記８）  前記演算部は、各時刻の補正後の消費電力に基づいて、前記実行箇所毎の最大消費電力を取得する、付記５乃至７の何れか１つに記載の情報処理装置。
（付記９）  前記演算部は、各時刻での前記累積電力量の算出結果から各時刻での前記実行箇所の実行による消費電力を算出し、時刻と消費電力と前記実行箇所との対応関係を示す３次元グラフの情報を出力する、付記１乃至８の何れか１つに記載の情報処理装置。
【０１４６】
（付記１０）  プログラムの実行中に消費した累積電力量の計測結果を参照した時刻と当該累積電力量と当該時刻に実行した命令の格納メモリアドレスとの対応を示す第１の情報と、前記プログラムの実行箇所と命令格納メモリアドレスの範囲との対応を示す第２の情報と、に基づいて、所定の実行箇所が実行された時刻を判定し、当該時刻における前記累積電力量を線形補間により算出する、
処理をコンピュータに実行させる消費電力計測プログラム。
【０１４７】
（付記１１）  コンピュータが、
プログラムの実行中に消費した累積電力量の計測結果を参照した時刻と当該累積電力量と当該時刻に実行した命令の格納メモリアドレスとの対応を示す第１の情報と、前記プログラムの実行箇所と命令格納メモリアドレスの範囲との対応を示す第２の情報と、に基づいて、所定の実行箇所が実行された時刻を判定し、当該時刻における前記累積電力量を線形補間により算出する、
消費電力計測方法。
【符号の説明】
【０１４８】
１  情報処理装置
１ａ  記憶部
１ｂ  演算部
Ｋ１，Ｋ２  系列
【図１】
0006544013.tif 000014
【図２】
0006544013.tif 000015
【図３】
0006544013.tif 000016
【図４】
0006544013.tif 000017
【図５】
0006544013.tif 000018
【図６】
0006544013.tif 000019
【図７】
0006544013.tif 000020
【図８】
0006544013.tif 000021
【図９】
0006544013.tif 000022
【図１０】
0006544013.tif 000023
【図１１】
0006544013.tif 000024
【図１２】
0006544013.tif 000025
【図１３】
0006544013.tif 000026
【図１４】
0006544013.tif 000027
【図１５】
0006544013.tif 000028
【図１６】
0006544013.tif 000029
【図１７】
0006544013.tif 000030
【図１８】
0006544013.tif 000031