JP6544013B2 - 情報処理装置、消費電力計測プログラムおよび消費電力計測方法 - Google Patents

情報処理装置、消費電力計測プログラムおよび消費電力計測方法 Download PDF

Info

Publication number
JP6544013B2
JP6544013B2 JP2015084113A JP2015084113A JP6544013B2 JP 6544013 B2 JP6544013 B2 JP 6544013B2 JP 2015084113 A JP2015084113 A JP 2015084113A JP 2015084113 A JP2015084113 A JP 2015084113A JP 6544013 B2 JP6544013 B2 JP 6544013B2
Authority
JP
Japan
Prior art keywords
time
power consumption
execution
program
power
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015084113A
Other languages
English (en)
Other versions
JP2016206743A (ja
Inventor
郁夫 三吉
郁夫 三吉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015084113A priority Critical patent/JP6544013B2/ja
Priority to US15/091,605 priority patent/US10324510B2/en
Publication of JP2016206743A publication Critical patent/JP2016206743A/ja
Application granted granted Critical
Publication of JP6544013B2 publication Critical patent/JP6544013B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/28Supervision thereof, e.g. detecting power-supply failure by out of limits supervision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3058Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
    • G06F11/3062Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations where the monitored property is the power consumption

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Power Engineering (AREA)

Description

本発明は情報処理装置、消費電力計測プログラムおよび消費電力計測方法に関する。
現在、コンピュータでは種々のソフトウェアが利用されている。ソフトウェアのプログラムの実行時のコンピュータの動作を検証し、プログラムの改良を行うことで、省電力化や性能向上のためのチューニングを行うことがある。動作検証の方法として、例えば、情報収集対象プログラムの実行中に、CPU(Central Processing Unit)のプログラムカウンタから一定サイクルで実行中の命令を特定し、データ参照/格納先のメモリアドレスを取得してメモリアドレス毎のアクセス頻度を取得する提案がある。
特開2008−210011号公報
消費電力量を計測する計測装置を用いて、プログラム実行中のコンピュータによる消費電力量を計測することがある。実行命令を格納したメモリアドレスおよび計測装置で計測される累積の消費電力量を、所定周期でサンプリングすることで、プログラム中の実行箇所(例えば、サブルーチンやソースプログラムの行範囲など)毎の消費電力量を分析し得る。例えば、消費電力量の比較的大きな実行箇所はコードの記述に改善の余地がある。
しかし、計測装置による計測データの更新間隔が、検証したいプログラムの挙動変化の時間間隔よりも長いことがある。例えば、あるタイミングでコンピュータが実行した命令の格納メモリアドレスを採取し、計測装置の計測データを参照する。ところが、次のタイミングで命令アドレスを採取し、計測データを参照しても、計測装置の計測データが未だ更新されていないことがある。この場合、両タイミング間での消費電力量がゼロと観測され、実行箇所によっては消費電力量を適切に取得できないという問題がある。
1つの側面では、本発明は、プログラムの実行箇所毎の消費電力量を適切に取得できる情報処理装置、消費電力計測プログラムおよび消費電力計測方法を提供することを目的とする。
1つの態様では、情報処理装置が提供される。この情報処理装置は、記憶部と演算部とを有する。記憶部は、プログラムの実行中に消費した累積電力量の計測結果を参照した時刻と当該累積電力量と当該時刻に実行した命令の格納メモリアドレスとの対応を示す第1の情報と、プログラムの実行箇所と命令格納メモリアドレスの範囲との対応を示す第2の情報と、を記憶する。演算部は、累積電力量を計測する計測装置により所定の更新周期で更新される計測結果を、更新周期よりも短い参照周期で参照して、第1の情報に記録し、第1および第2の情報に基づいて、所定の実行箇所が実行された時刻を判定し、所定の実行箇所が実行された時刻において記録された累積電力量を線形補間により補正する。
また、1つの態様では、コンピュータによって実行される消費電力計測プログラムが提供される。この消費電力計測プログラムは、コンピュータに、プログラムの実行中に消費した累積電力量を計測する計測装置により所定の更新周期で更新される計測結果を更新周期よりも短い参照周期で参照し、参照した時刻と当該累積電力量と当該時刻に実行した命令の格納メモリアドレスとの対応を、記憶部に記憶された第1の情報に記録し、第1の情報と、プログラムの実行箇所と命令格納メモリアドレスの範囲との対応を示す第2の情報と、に基づいて、所定の実行箇所が実行された時刻を判定し、所定の実行箇所が実行された時刻において記録された累積電力量を線形補間により補正する、処理を実行させる。
また、1つの態様では、消費電力計測方法が提供される。この消費電力計測方法では、コンピュータが、プログラムの実行中に消費した累積電力量を計測する計測装置により所定の更新周期で更新される計測結果を更新周期よりも短い参照周期で参照し、参照した時刻と当該累積電力量と当該時刻に実行した命令の格納メモリアドレスとの対応を、記憶部に記憶された第1の情報に記録し、第1の情報と、プログラムの実行箇所と命令格納メモリアドレスの範囲との対応を示す第2の情報と、に基づいて、所定の実行箇所が実行された時刻を判定し、所定の実行箇所が実行された時刻において記録された累積電力量を線形補間により補正する。
1つの側面では、プログラムの実行箇所毎の消費電力量を適切に取得できる。
第1の実施の形態の情報処理装置を示す図である。 第2の実施の形態の検証装置の例を示す図である。 検証装置のハードウェア例を示す図である。 検証装置の機能例を示す図である。 命令アドレス変換テーブルの例を示す図である。 電力量観測テーブルの例を示す図である。 補正後テーブルの例を示す図である。 電力統計テーブルの例を示す図である。 検証装置の処理例を示すフローチャートである。 データ収集処理の例を示すフローチャートである。 累積電力量の補正処理の例を示すフローチャートである。 線形補間の具体例を示す図である。 実質最大消費電力の計算処理の例を示すフローチャートである。 実質消費電力の算出例(その1)を示す図である。 実質消費電力の算出例(その2)を示す図である。 出力処理の例を示すフローチャートである。 グラフの表示例(その1)を示す図である。 グラフの表示例(その2)を示す図である。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の情報処理装置を示す図である。情報処理装置1は、プログラムの動作検証に用いられる。情報処理装置1は、検証対象のプログラムを実行し、プログラムの実行箇所(サブルーチンやプログラムの所定の行番号の範囲)毎の消費電力量を取得する。情報処理装置1は、実行箇所毎の消費電力量の情報を、情報処理装置1に接続されたディスプレイに表示させることで、ユーザに提示する。例えば、ユーザは、消費電力量の比較的大きな実行箇所について、コーディングの改善を図れる。
情報処理装置1は、情報処理装置1に外付け、または、内蔵された計測装置(図示を省略)から、プログラム実行時の情報処理装置1の累積の消費電力量(累積電力量)を取得可能である。情報処理装置1は、所定の周期で、計測装置による計測結果を参照することで、前回参照時点から今回参照時点までの間の時間帯における消費電力量を得ることができる。
ここで、計測装置による計測データの更新間隔が、検証したいプログラムの挙動変化の時間間隔よりも長いと、前回参照時点から今回参照時点までの消費電力量がゼロと観測されてしまい、消費電力量を適切に取得できないことがある。そこで、情報処理装置1は、次のように消費電力量を取得する。
情報処理装置1は、記憶部1aおよび演算部1bを有する。記憶部1aは、RAM(Random Access Memory)などの揮発性記憶装置でもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性記憶装置でもよい。演算部1bは、CPU、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。演算部1bはプログラムを実行するプロセッサであってもよい。ここでいう「プロセッサ」には、複数のプロセッサの集合(マルチプロセッサ)も含まれ得る。
記憶部1aは、検証対象のプログラムの実行中に消費された累積電力量の計測結果を参照した時刻と、当該累積電力量と、当該時刻に実行された当該装置の命令の格納メモリアドレスとの対応を示す第1の情報を記憶する。演算部1bが、検証対象のプログラムの実行中に第1の情報を取得し、記憶部1aに格納してもよい。記憶部1aは、検証対象のプログラムの実行箇所と命令格納メモリアドレスの範囲との対応を示す第2の情報を記憶する。
演算部1bは、記憶部1aに記憶された第1および第2の情報に基づいて、所定の実行箇所が実行された時刻を判定する。例えば、第2の情報には、プログラムの実行箇所と当該実行箇所の実行時に使用される演算処理命令の格納メモリアドレスの範囲とが対応付けて登録されている。このため、演算部1bは、第1の情報に含まれる各アドレスの履歴から、何れの実行箇所が何れの時刻に実行されたかを判定できる。
演算部1bは、所定の実行箇所が実行された時刻における情報処理装置1の累積電力量を線形補間により算出する。ここで、以下の説明において、iは、プログラム実行中に使用された演算処理命令の格納メモリアドレスをサンプリングした回数を表す整数である。jは、累積電力量の計測結果の更新回数を表す整数である。参照時刻(サンプリング時刻)Tp(i)は、プログラム実行中に使用された演算処理命令の格納メモリアドレスをサンプリングしたi番目の時刻である。更新時刻Te(j)は、累積電力量の計測結果が更新されたj番目の時刻である。
例えば、第1の情報は、次のレコードを含む。第1のレコードは、参照時刻Tp(i),累積電力量E1,アドレスX1を記録したレコードである。第2のレコードは、参照時刻Tp(i+1),累積電力量E1,アドレスX2を記録したレコードである。第3のレコードは、参照時刻Tp(i+2),累積電力量E2,アドレスX3を記録したレコードである。この場合、参照時刻Tp(i),Tp(i+1)ではプログラム実行中の異なるタイミングで電力量の計測結果を参照しているにも関わらず、同じ累積電力量E1が取得されている。すなわち、参照時刻Tp(i),Tp(i+1)における累積電力量の差がゼロであり、参照時刻Tp(i),Tp(i+1)の両時刻の間の消費電力量がゼロと誤観測されたことになる。
そこで、演算部1bは、線形補間により参照時刻Tp(i+1)(アドレスX2に対応する実行箇所が実行されていた時刻)における累積電力量を算出する。1つの方法として、演算部1bは、参照時刻Tp(i)における累積電力量E1および参照時刻Tp(i+2)における累積電力量E2を結ぶ時刻と累積電力量との関係を示す1次式を求め、参照時刻Tp(i+1)における累積電力量を当該1次式により算出することが考えられる。
一方、この場合の誤観測は、計測装置による累積電力量の計測結果の更新周期Ieが、プログラムによる実行命令アドレスのサンプリング周期Ipよりも長い(Ie>Ipである)ことが原因である。すなわち、参照時刻Tp(i)では、計測装置により更新時刻Te(j)で更新された累積電力量を取得している。参照時刻Tp(i+1)では、次の更新時刻Te(j+1)に達する前にサンプリングを行ったために、計測結果が未だ更新されておらず、参照時刻Tp(i)と同じ累積電力量E1が取得されている。そこで、演算部1bは、次のようにして線形補間を用いて精度良く累積電力量を求めることができる。
プログラムの実行命令アドレスの参照時刻Tp(i)は式(1)で表される。Tp0は、サンプリングを開始した基準時刻である。
Figure 0006544013
累積電力量の計測結果の更新時刻Te(j)は式(2)で表される。Te0は、計測結果の更新を開始した基準時刻である。
Figure 0006544013
ここで、実行命令アドレスのサンプリングと計測結果の更新とは、ほぼ同時に開始される。計測装置での計測データの更新に伴う若干の遅延を考慮すると、Tp0≦Te0<Tp0+Ipの関係が成り立つ。サンプリング基準時刻Tp0と計測結果更新基準時刻Te0との差をDeとすると、式(3)が成り立つ。ただし、0≦De<Ipである。
Figure 0006544013
計測結果を参照して、連続する2回目の累積電力量が変化していない場合、以下の関係式(4)が成り立つ。
Figure 0006544013
更新時刻Te(j)、参照時刻Tp(i+1)および更新時刻Te(j+1)は、それぞれ式(5)、(6)、(7)で表される。
Figure 0006544013
Figure 0006544013
Figure 0006544013
式(5)、(6)、(7)を用いて式(4)を変形することで、式(8)を得る。
Figure 0006544013
十分長い時間で計測を行うとき、式(8)によって差Deの上下限を決めるiおよびjの組(ik,jk)を複数得る。ここで、kは、i,jの組を識別するための整数である。更に、IpがIp<IeかつIp≒Ieであるとき、式(9)により差Deを比較的高い精度で算出できる。
Figure 0006544013
ここで、max演算は、kに対する複数の値のうちの最大値を取得する演算である。min演算は、kに対する複数の値のうちの最小値を取得する演算である。すなわち、式(9)は、右辺第1項が最大、かつ、右辺第2項が最小となるkを用いて差Deを算出することを意味する。演算部1bは、式(9)を用いて差Deを算出する。
演算部1bは、差Deを用いて、{Tp(i)−Te(j)}対{Te(j+1)−Tp(i)}の比率を求めることができる。ここで、Tp(i)−Te(j)は、両時刻の時間差を取得する演算を示す。Te(j+1)−Tp(i)などの演算も同様である。更新時刻Te(j+1)における累積電力量の計測結果は、参照時刻Tp(i+2)で取得された累積電力量E2に等しい。よって、演算部1bは、求めた比率を用いて、更新時刻Te(j)およびTe(j+1)の累積電力量E1およびE2を内分することで、参照時刻Tp(i)の累積電力量Eaおよび参照時刻Tp(i+1)の累積電力量Ebを算出する。
演算部1bは、{時刻,累積電力量}={Te(j),E1}、{Te(j+1),E2}の2点を通る一次式を求めてもよい。そして、参照時刻Tp(i),Tp(i+1)における累積電力量を求めた一次式を用いて算出する。例えば、演算部1bは、時刻Tp(i)の累積電力量Ea、時刻Tp(i+1)の累積電力量Ebを算出する。
このようにして、情報処理装置1は、参照時刻Tp(i+1)における累積電力量Ebを適切に取得できる。また、参照時刻Tp(i)における累積電力量E1を補正し、累積電力量Eaを適切に取得できる。更に、情報処理装置1は、上記の方法により全ての参照時刻Tp(i)の計測結果を補正できる。例えば、参照時刻Tp(i+2)において取得されている累積電力量E2も更新時刻Te(j+1)における累積電力量E2および更新時刻Te(j+2)における累積電力量を用いて同様に補正することも可能である。補正の結果、情報処理装置1は、時間と累積電力量との関係を示す補正前の系列K1に対し、補正後の系列K2を得る。情報処理装置1は、各時刻で実行された命令の格納アドレス(プログラムの実行箇所を示す)と累積電力量との対応から、検証対象のプログラムの実行箇所毎の消費電力量を適切に取得できる。
なお、第1の実施の形態の例では、計測装置を用いて累積電力量を計測するものとしたが、当該計測機能をもつモジュールを情報処理装置1に内蔵して累積電力量を計測してもよい。この場合にも、第1の実施の形態の方法により、プログラムの実行箇所毎の消費電力量を適切に取得できる。
[第2の実施の形態]
図2は、第2の実施の形態の検証装置の例を示す図である。検証装置100は、アプリケーションプログラムの動作検証を行うコンピュータである。以下の説明では、検証対象のアプリケーションプログラムを検証対象プログラムと称することがある。
検証装置100は電源ケーブル11を有する。検証装置100は、電源ケーブル11を介して計測装置200と接続されている。計測装置200は、検証装置100により消費された累積電力量を計測する装置である。計測装置200は、電源プラグを有する。計測装置200の電源プラグは、ソケット20に挿入されている。ソケット20は、電子機器に電力を供給するためのプラグ受けである。計測装置200は、ソケット20から供給される電力を検証装置100に供給し、検証装置100により消費される電力量を計測する。検証装置100および計測装置200は、更に、通信ケーブル12を介して接続されている。
検証装置100は、検証対象プログラムを実行しながら、検証対象プログラムの各実行箇所(例えば、サブルーチンやソースプログラムの行範囲など)における消費電力量を取得する。検証対象プログラムの実行時の省電力化に役立てるためである。
ここで、検証装置100は、次のように検証を行う。検証装置100は、検証対象プログラムを実行しながら、所定のサンプリング周期(サンプリングを行う時間間隔)で、実行されている命令の格納メモリアドレスを取得する。検証装置100は、当該サンプリングのタイミングで、計測装置200により計測される消費電力量の計測結果を参照する。計測装置200により計測される電力量は、検証装置100により消費された累積の電力量(累積電力量と称することがある)である。検証装置100は、検証対象プログラムのコンパイル時などに、検証対象プログラムの実行箇所と当該実行箇所に記述された命令が格納されているメモリアドレスとの対応関係の情報を予め取得する。検証装置100は、当該対応関係と検証対象プログラム実行時のサンプリングの結果に基づいて、各サンプリング時刻において実行された実行箇所と累積電力量とを取得する。検証装置100は、第1の実施の形態の情報処理装置1の一例である。
図3は、検証装置のハードウェア例を示す図である。検証装置100は、プロセッサ101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、読み取り装置106および通信インタフェース107,108を有する。各ユニットは検証装置100のバスに接続されている。
プロセッサ101は、検証装置100の情報処理を制御する。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU、DSP、ASICまたはFPGAなどである。プロセッサ101は、CPU、DSP、ASIC、FPGAなどのうちの2以上の要素の組み合わせであってもよい。プロセッサ101は、プログラムカウンタを有する。プログラムカウンタは、実行対象の命令のRAM102上のアドレスを示すレジスタである。
RAM102は、検証装置100の主記憶装置である。RAM102は、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM102は、プロセッサ101による処理に用いる各種データを記憶する。
HDD103は、検証装置100の補助記憶装置である。HDD103は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103は、OSのプログラム、アプリケーションプログラム、および各種データを記憶する。検証装置100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
画像信号処理部104は、プロセッサ101からの命令に従って、検証装置100に接続されたディスプレイ13に画像を出力する。ディスプレイ13としては、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイなどを用いることができる。
入力信号処理部105は、検証装置100に接続された入力デバイス14から入力信号を取得し、プロセッサ101に出力する。入力デバイス14としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
読み取り装置106は、記録媒体15に記録されたプログラムやデータを読み取る装置である。記録媒体15として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)を使用できる。また、記録媒体15として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。読み取り装置106は、例えば、プロセッサ101からの命令に従って、記録媒体15から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
通信インタフェース107は、ネットワーク10を介して他の装置と通信を行う。通信インタフェース107は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。通信インタフェース108は、通信ケーブル12を介して計測装置200と通信する。
なお、検証装置100は、前述のように、電源ケーブル11を介して計測装置200と接続される。電源ケーブル11は、検証装置100の電源部(図示を省略)に接続されている。電源部は、電源ケーブル11を介して供給される電力により、検証装置100の各ユニットを駆動させる。また、計測装置200も、プロセッサ、RAMやフラッシュメモリなどの記憶装置および通信インタフェースを有している。
図4は、検証装置の機能例を示す図である。検証装置100は、記憶部110、収集部120、補正部130、集計部140および表示制御部150を有する。記憶部110は、RAM102やHDD103に確保された記憶領域として実現される。収集部120、補正部130、集計部140および表示制御部150は、RAM102に記憶されたプログラムをプロセッサ101が実行することで実現される。
記憶部110は、命令アドレス変換テーブル、電力量観測テーブル、補正後テーブルおよび電力統計テーブルを有する。命令アドレス変換テーブルは、検証対象プログラムの実行箇所と、当該実行箇所に対応する命令が格納されたRAM102のアドレス範囲との対応関係を示す情報である。命令アドレス変換テーブルは、検証対象プログラムのコンパイル時にコンパイラが生成するデバッガ用情報を基に事前に作成され、記憶部110に格納される。
電力量観測テーブルは、検証対象プログラムの実行中に使用された命令の格納アドレスと累積電力量とのサンプリング結果の情報である。補正後テーブルは、電力量観測テーブルの登録値を補正した結果の情報である。電力統計テーブルは、補正後テーブルに基づく実行箇所毎の消費電力量などを集計した情報である。なお、記憶部110は、検証対象プログラムも記憶する。
収集部120は、検証対象プログラムの実行中に、プロセッサ101のプログラムカウンタのアドレス値および計測装置200による計測データ(累積電力量)をサンプリングする。収集部120は、アドレス値および計測データを、サンプリングした時刻(サンプリング時刻)に対応付けて、記憶部110に記憶された電力量観測テーブルに記録する。収集部120によるサンプリング周期Ipは、例えば、数ミリ秒(5ミリ秒〜10ミリ秒)程度である。
補正部130は、電力量観測テーブルに記録された累積電力量の値を補正し、補正後テーブルを生成する。補正部130は、アドレスのサンプリング周期Ipと計測装置200による計測データの更新周期Ieとが異なることで生じた累積電力量の誤検知を補正し、補正後テーブルを生成する。
集計部140は、補正後テーブルに基づいて、実行箇所毎の累積電力量を集計し、電力統計テーブルを生成する。集計部140は、実行箇所毎の消費電力の最大値や平均値などを求め、電力統計テーブルに登録する。
表示制御部150は、命令アドレス変換テーブル、補正後テーブルおよび電力統計テーブルに基づいて、検証対象プログラムの実行箇所毎の消費電力の取得結果を、ディスプレイ13に出力する。例えば、表示制御部150は、時刻と実行箇所と消費電力との対応関係を示す3次元グラフを、ディスプレイ13に表示させる。ユーザ(例えば、プログラムの開発者)は、3次元グラフを閲覧することで、実行箇所毎の消費電力を把握できる。すると、ユーザは、プログラムの改善箇所を容易に認識可能となる。例えば、ユーザは、消費電力が相対的に大きな実行箇所について、コーディングの見直しを行うと決定できる。
計測装置200は、記憶部210、計測部220および送信部230を有する。記憶部210は、計測装置200が有するRAMやフラッシュメモリなどの記憶装置に確保された記憶領域として実現される。計測部220および送信部230は、計測装置200の記憶装置に格納されたプログラムを計測装置200のプロセッサが実行することで実現される。ただし、計測部220や送信部230は、ASICやFPGAなどの特定用途の電子回路により実現されてもよい。
記憶部210は、計測部220による検証装置100の累積電力量の計測結果(計測データ)を記憶する。
計測部220は、検証装置100により消費される電力量の累積(累積電力量)を計測し、記憶部210に記憶された計測データを更新する。計測部220は、所定の周期で計測データを更新する。計測部220による計測データの更新周期Ieは、検証装置100によるサンプリング周期Ipよりも長く(Ie>Ip)、かつ、Ie≒Ipとする。
送信部230は、検証装置100の要求に応じて、記憶部210に記憶された計測データを検証装置100に送信する。
図5は、命令アドレス変換テーブルの例を示す図である。命令アドレス変換テーブル111は、記憶部110に格納される。命令アドレス変換テーブル111は、実行箇所、開始アドレスおよび終了アドレスの項目を含む。
実行箇所の項目には、実行箇所の名称(サブルーチン名、ループの行番号範囲、ソースプログラムの行番号または関数名など)が登録される。開始アドレスの項目には、実行箇所に対応する命令が格納されたアドレス範囲のうちの先頭のアドレスが登録される。終了アドレスの項目には、実行箇所に対応する命令が格納されたアドレス範囲のうちの終端のアドレスが登録される。
例えば、命令アドレス変換テーブル111には、実行箇所が“x_solve”、開始アドレスが“0x409d20”、終了アドレスが“0x40e00b”という情報が登録される。これは、“x_solve”の関数名で識別される実行箇所に対応する命令を格納したRAM102上のアドレス範囲が“0x409d20”から“0x40e00b”までであることを示す。すなわち、当該アドレス範囲が参照されているとき、実行箇所“x_solve”が実行されていることになる。
図6は、電力量観測テーブルの例を示す図である。電力量観測テーブル112は、記憶部110に格納される。電力量観測テーブル112は、時刻、命令アドレスおよび累積電力量の項目を含む。
時刻の項目には、命令アドレスおよび累積電力量のサンプリング時刻が登録される。命令アドレスの項目には、プログラムカウンタから取得された実行中命令の格納メモリアドレスが登録される。累積電力量の項目には、計測装置200から取得された累積電力量が登録される。
例えば、電力量観測テーブル112は、時刻が“T1”、命令アドレスが“0x5156431”、累積電力量が“864654541”という情報が登録される。これは、時刻“T1”において実行された命令の格納メモリアドレスが“0x5156431”であり、計測装置200から取得された累積電力量が“864654541”であったことを示す。ここで、“T1”などの時刻情報は、例えば特定の時点からの経過秒数などである。検証装置100は、時刻情報を年月日時分秒などの情報に変換することもできる。
電力量観測テーブル112によれば、時刻“T2”と時刻“T3”とで累積電力量の値が何れも“1982315963”であり、同じである。2つの時刻で同じ累積電力量がサンプリングされる理由は、計測装置200による計測データの更新周期Ieが、検証装置100によるサンプリング周期Ipよりも長いためである。
図7は、補正後テーブルの例を示す図である。補正後テーブル113は、記憶部110に格納される。補正後テーブルは、時刻、命令アドレスおよび累積電力量の項目を含む。
時刻の項目には、命令アドレスおよび累積電力量のサンプリングを行った時刻が登録される。命令アドレスの項目には、当該時刻においてプログラムカウンタから取得された命令アドレスが登録される。累積電力量の項目は、当該時刻における補正後の累積電力量が登録される。
例えば、補正後テーブル113には、時刻が“T3”、命令アドレスが“0x422427”、累積電力量が“1872085321”という情報が登録される。この情報は、電力量観測テーブル112の時刻“T3”に対応する累積電力量“1982315963”が補正された結果である。
図8は、電力統計テーブルの例を示す図である。電力統計テーブル114は、記憶部110に格納される。電力統計テーブル114は、実行箇所、観測回数、消費電力量、最大消費電力および平均消費電力の項目を含む。
実行箇所の項目には、実行箇所の名称が登録される。観測回数の項目には、当該実行箇所についてサンプリングした回数が登録される。消費電力量の項目には、当該実行箇所の実行に伴う累積の消費電力量が登録される。最大消費電力の項目には、最大消費電力(取得された消費電力の最大値)が登録される。平均消費電力の項目には、平均消費電力(取得された消費電力の平均値)が登録される。
ここで、最大消費電力は、該当の実行箇所について、サンプリング周期単位の時間間隔で消費された最大のエネルギーと考えてもよい。平均消費電力は、該当の実行箇所について、サンプリング周期単位の時間間隔で消費された平均のエネルギーと考えてもよい。累積電力量は、該当の実行箇所について、各サンプリング周期の時間間隔で消費されたエネルギーの累積と考えてもよい。
電力統計テーブル114には、実行箇所が“x_solve”、観測回数が“3291”、消費電力量が“386855”、最大消費電力が“134.9”、平均消費電力が“117.5”という情報が登録される。これは、実行箇所“x_solve”に関する観測回数が3291回であり、当該実行箇所に対して観測された消費電力量の合計が“386855”、最大消費電力が“134.9”、平均消費電力が“117.5”であったことを示す。
次に、検証装置100による検証対象プログラムの検証手順を例示する。前述のように、検証装置100は、検証対象プログラムのコンパイル時に、命令アドレス変換テーブル111を予め作成し、記憶部110に格納している。
図9は、検証装置の処理例を示すフローチャートである。以下、図9に示す処理をステップ番号に沿って説明する。
(S1)収集部120は、検証対象プログラムの実行を開始し、アドレスおよび累積電力量のサンプリングを開始する。収集部120は、プロセッサ101のプログラムカウンタに格納された値から、収集部120は、計測装置200に計測データの送信要求を送信する。計測装置200は、要求に応じて、累積電力量の計測データを検証装置100に送信する。収集部120は、計測装置200から計測データを受信する。収集部120は、取得したアドレスおよび累積電力量の情報を、サンプリング時刻に対応付けて電力量観測テーブル112に登録する。詳細は後述する。
(S2)補正部130は、収集部120により作成された電力量観測テーブル112の累積電力量を補正し、補正後テーブル113を作成する。詳細は後述する。
(S3)集計部140は、補正部130により作成された補正後テーブル113に基づいて、電力統計テーブル114を作成する。詳細は後述する。
(S4)表示制御部150は集計部140により作成された電力統計テーブル114に基づいて、検証対象プログラムの実行箇所毎の消費電力を可視化(例えば、グラフ化など)してディスプレイ13に表示させる。詳細は後述する。
図10は、データ収集処理の例を示すフローチャートである。以下、図10に示す処理をステップ番号に沿って説明する。以下の手順は図9のステップS1に相当する。
(S11)収集部120は、命令アドレスのサンプリング周期Ipを設定する。例えば、収集部120は、検証対象プログラムの実行中にサンプリング周期Ipで累積電力量採取の割り込みを発生させて、情報収集を行えるようにする。なお、サンプリング周期Ipおよび計測装置200による計測データの更新周期Ie(Ie>IpかつIe≒Ipである)は、記憶部110に予め格納されている。
(S12)収集部120は、検証対象プログラムの実行を開始する。
(S13)収集部120は、検証対象プログラムの実行が終了したか否かを判定する。検証対象プログラムの実行が終了した場合、処理をステップS16に進める。検証対象プログラムの実行が終了していない場合、処理をステップS14に進める。
(S14)収集部120は、サンプリング時間に達したことを検出する(例えば、割り込み発生により検出する)。
(S15)収集部120は、累積電力量の計測データを計測装置200から読み取る。収集部120は、検証対象プログラムにより実行中の命令アドレスをプログラムカウンタから取得し、サンプリング時刻に対応付けてRAM102上のバッファなどに格納する。そして、処理をステップS13に進める。
(S16)収集部120は、ステップS15で取得した累積電力量および命令アドレスの情報をサンプリング時刻に対応付けて、電力量観測テーブル112に記録する。
図11は、累積電力量の補正処理の例を示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。以下の手順は図9のステップS2に相当する。
(S21)補正部130は、記憶部110に記憶された電力量観測テーブル112を参照して、各時刻Tp(i)における累積電力量Ep(i)を取得する。
(S22)補正部130は、Ep(i)=Ep(i+1)であるiの値を全て特定する。
(S23)補正部130は、特定した各iの値について、式(8)により差Deの上下限を決めるiおよびjの組(ik,jk)を複数求め、式(9)により基準時刻の差Deを算出する。補正部130は、差Deを用いて、式(2)、(3)より、各jに対し計測装置200による計測データの更新時刻Te(j)を求める。
(S24)補正部130は、更新時刻Te(j)における累積電力量Ee(j)を算出する。具体的には、補正部130は、Tp(i−1)<Te(j)≦Tp(i)であるTe(j)に対し、Ee(j)=Ep(i)とする。
(S25)補正部130は、求めたEe(j)を用いて、時刻Tp(i)に対応する補正後の累積電力量Epm(i)を線形補間により算出する。
図12は、線形補間の具体例を示す図である。図12では、時間と消費された電力量との関係を示す4種類のグラフ(系列K11,K12,K21,K22)を例示している。横軸は時間である。縦軸は電力量である。
系列K11は、補正前の累積電力量の時系列を示す。例えば、系列K11は、電力量観測テーブル112をグラフ化したものである。系列K12は、時刻Tp(i−1)の累積電力量Ep(i−1)と時刻Tp(i)の累積電力量Ep(i)との差分の電力量(差分電力量)P(i)=Ep(i)−Ep(i−1)の時系列を示す。系列K12は、時刻Tp(i−1)から時刻Tp(i)までの期間で消費した電力量P(i)を示すともいえる。Ep(i)=Ep(i+1)のとき、P(i)=0であり、時刻Tp(i)から時刻Tp(i+1)までの期間における消費電力量が0と誤観測されることになる。
そこで、補正部130は、系列K11を補正することで、系列K21を得る。具体的には、式(9)により差Deを算出し、各jについて時刻Te(j)を求める。補正部130は、Tp(i−1)<Te(j)≦Tp(i)であるTe(j)に対し、累積電力量Ee(j)=Ep(i)とする。すると、式(10)により、時刻Tp(i+1)における補正後の累積電力量Epm(i+1)を計算できる。
Figure 0006544013
同様に、式(11)により、時刻Tp(i)における補正後の累積電力量Epm(i)も計算できる。
Figure 0006544013
更に、Te(j+1)<Tp(i+2)<Te(j+2)である時刻Tp(i+2)に対し、式(12)により補正後の累積電力量Epm(i+2)を計算することもできる。
Figure 0006544013
補正部130は、各時刻Tp(i)における補正後の累積電力量を補正後テーブル113に登録する。系列K21は、補正後の累積電力量を示す。例えば、系列K21は、補正後テーブル113をグラフ化したものである。系列K22は、時刻Tp(i−1)の補正後の累積電力量Epm(i−1)と時刻Tp(i)の補正後の累積電力量Epm(i)との差分電力量Q(i)=Epm(i)−Epm(i−1)を示す。系列K22は、時刻Tp(i−1)から時刻Tp(i)までの期間で消費した差分電力量Q(i)を示すともいえる。
系列K12と系列K22とを比較すると、例えば、ある時刻Tp(i+1)において、P(i+1)=0であるのに対し、Q(i+1)≠0である。すなわち、時刻Tp(i)から時刻Tp(i+1)までの期間における消費電力量を適切に取得できたことになる。
このように、検証装置100は、計測装置200から取得した累積電力量の情報を線形補間により補正することで、各時刻における累積電力量を適切に取得できる。検証装置100は、各時刻において参照された命令アドレスもサンプリングしているので、各命令アドレスに対応する実行箇所の消費電力量を適切に取得できる。
図13は、実質最大消費電力の計算処理の例を示すフローチャートである。以下、図13に示す処理をステップ番号に沿って説明する。以下の手順は図9のステップS3に相当する。
(S31)集計部140は、補正後テーブル113に基づいて、差分電力量Q(i)=Epm(i)−Epm(i−1)を算出する。
(S32)集計部140は、ステップS33〜S35を、実行箇所毎に繰り返し実行する。i=2からi=Nまでiを1ずつインクリメントして繰り返し実行する。ここで、Nは、サンプリングの最終回目の回数である。
(S33)集計部140は、Q(i)>max{Q(i−1),Q(i+1)}であるか否かを判定する。すなわち、集計部140は、Q(i−1)またはQ(i+1)の何れか大きい方の値よりも、Q(i)の値の方が大きいか否かを判定する。Q(i)の値の方が大きい場合、処理をステップS34に進める。Q(i)の方が大きくない(Q(i)が、Q(i−1)またはQ(i+1)の何れか大きい方の値以下である)場合、処理をステップS35に進める。
(S34)集計部140は、時刻Tp(i)における実質消費電力G(i)=max{Q(i−1),Q(i+1)}とする。すなわち、集計部140は、Q(i−1)またはQ(i+1)の何れか大きい方の値を時刻Tp(i)における実質消費電力G(i)とする。そして、処理をステップS36に進める。
(S35)集計部140は、時刻Tp(i)における実質消費電力G(i)=Q(i)とする。ここで、集計部140は、ステップS34,S35で求めた実質消費電力G(i)を時刻Tp(i)に対応付けて、RAM102に保持する。
(S36)集計部140は、ステップS33〜S35の処理をi=Nに達するまで繰り返し実行すると、繰り返しを終了する。
(S37)集計部140は、命令アドレス変換テーブル111および補正後テーブル113に基づいて、各時刻Tp(i)で参照された命令アドレスから各時刻Tp(i)での実行箇所を特定する。例えば、ある時刻において、実行箇所“x_solve”に対応するアドレス範囲に属するアドレスの命令が実行されていれば、集計部140は、当該時刻における実行箇所を“x_solve”と特定する。
(S38)集計部140は、ステップS32〜S36で求めた各時刻Tp(i)における実質消費電力G(i)に基づいて、実行箇所毎の最大消費電力(実質最大消費電力)を取得する。集計部140は、取得した最大消費電力を実行箇所に対応付けて電力統計テーブル114に登録する。
(S39)集計部140は、命令アドレス変換テーブル111および補正後テーブル113に基づいて、実行箇所毎の消費電力量の合計を計算し、電力統計テーブル114の消費電力量の項目に登録する。集計部140は、命令アドレス変換テーブル111および補正後テーブル113に基づいて、実行箇所毎の平均消費電力を計算し、電力統計テーブル114の平均消費電力の項目に登録する。補正後テーブル113の命令アドレスの登録値から検証対象プログラムの実行箇所を特定する方法は、ステップS37で例示した方法と同様である。
なお、ステップS32〜S36の処理を、差分電力量Q(i)の最大値Q(t)を含む所定数のデータ(例えば、Q(t−W),Q(t−W+1),・・・,Q(t),・・・,Q(t+W))に限定して実行してもよい。最大値Q(t)前後のデータに限定して実行することで、繰り返し数を低減し、演算コストを軽減できるからである。
図14は、実質消費電力の算出例(その1)を示す図である。図14では、時間と消費電力の関係を示す2種類のグラフ(系列K31,K32)を例示している。横軸は時間である。縦軸は消費電力である。系列K31は、時刻Tp(i)に対して差分電力量Q(i)をプロットしたものである。なお、図14に示す部分において、系列K31,K32の時刻Tp(t)以外の箇所は重なっている。
系列K31では、時刻Tp(t)において、差分電力量Q(t)で極大になっている。系列K31の例では、max{Q(t−1),Q(t+1)}=Q(t+1)であり、Q(t)>Q(t+1)である。すなわち、Q(t)>max{Q(t−1),Q(t+1)}を満たす。よって、集計部140は、実質消費電力G(t)=Q(t+1)とする。集計部140は、系列K31において、時刻Tp(t)の値を実質消費電力G(t)に置き換える。図14に示す他の時刻では、実質消費電力G(i)=Q(i)となる。すると、集計部140は、補正後の系列K32を得る。集計部140は、系列K32に基づいて、実行箇所毎の最大消費電力を取得する。
このようにして最大消費電力を取得することで、最大消費電力を適切に取得可能となる。理由は次の通りである。検証対象プログラムが使用し得る最大電力を知るために、最大消費電力を求めることがある。このとき、採取した累積電力量のデータを検証対象プログラムの電力プロファイルとしてユーザに示すにあたり、最大消費電力のような瞬間値は補正されることが好ましい。消費電力が瞬間的に最大値となった後すぐに低下するケースでは、検証装置100内の電子回路におけるコンデンサや検証装置100に接続される無停電電源装置での蓄電の効果や、プロセッサ101の動作周波数等に関する電力自動制御のフィードバック遅延の影響を考慮する余地があるからである。すなわち、消費電力量が瞬間的に極大となっているケースでは、コンデンサの効果や電力自動制御のフィードバックの遅延の影響を考慮すべき可能性が高い。この場合、この種のケースを除去して、実質的な最大消費電力(実質最大消費電力)を求めることが好ましい。
そこで、集計部140は、上記のようにして、コンデンサや電力自動制御のフィードバックの効果分を除去して、時刻Tp(i)における実質消費電力G(i)を適切に求めることができる。特に、図13,図14で例示した方法は、コンデンサ等の容量が比較的少ない場合や、プロセッサ101による電力自動制御のフィードバックが比較的早い場合に有用である。そして、集計部140は、実質消費電力G(i)の最大値を取得することで、実質最大消費電力を適切に取得できる。
図15は、実質消費電力の算出例(その2)を示す図である。集計部140は、例えば、電力自動制御のフィードバックが比較的遅い場合などは、次のように実質消費電力G(i)を算出し、実質最大消費電力を求めてもよい。ここで、以下の説明において、Dはフィードバック遅延を表す定数パラメータ(1以上の整数)であり、Mはコンデンサの容量に応じた定数パラメータ(蓄積可能な電力量を表す)である。
(1)集計部140は、時刻Tp(i),Tp(i+1),・・・,Tp(i+D)における検証対象プログラムの実行箇所が同じ、かつ、差分電力量Q(i)≦min{Q(i+1),・・・,Q(i+D)}+Mの場合、実質消費電力G(i)=Q(i)とする。
(2)集計部140は、時刻Tp(i),Tp(i+1),・・・,Tp(i+D)における検証対象プログラムの実行箇所が同じ、かつ、差分電力量Q(i)>min{Q(i+1),・・・,Q(i+D)}+Mの場合、実質消費電力G(i)=max{Q(i+m)}とする。ただし、mは、1≦m≦Dの整数、かつ、Q(i+m)<Q(i)−Mを満たすとする(mに関するこの条件を条件Lとする)。max演算は、Q(i+m)の複数の値から最大値を取得する演算である。
(3)上記(1),(2)の何れにも該当しない場合、実質消費電力G(i)=差分電力量Q(i)とする。
このようにして求めた実質消費電力G(i)の最大値を実質最大消費電力として取得してもよい。
図15では、時間と消費電力の関係を示す2種類のグラフ(系列K41,K42)を例示している。横軸は時間である。縦軸は消費電力(サンプリング周期毎の期間に消費された電力量)である。系列K41は、時刻Tp(i)に対して差分電力量Q(i)をプロットしたものである。なお、図15に示す部分において、系列K41,K42の時刻Tp(t),Tp(t+1)以外の箇所は重なっている。
系列K41では、時刻Tp(t)において、差分電力量Q(t)で極大になっている。ここで、D=2とする。また、図15の例では、時刻Tp(t),Tp(t+1),Tp(t+2),Tp(t+3)での検証対象プログラムの実行箇所は同一であり、その他の時刻では実行箇所は異なる。
このとき、min{Q(t+1),Q(t+2)}=Q(t+2)であり、Q(t)>Q(t+2)+Mを満たすとする。すなわち、Q(t)>min{Q(t+1),Q(t+2)}+Mを満たす。
このとき、Q(t+1)>Q(t)−Mであるため、m=1は条件Lを満たさない。Q(t+2)<Q(t)−Mであるため、m=2は条件Lを満たす。したがって、Q(t)に対して条件Lを満たすmは、m=2である。また、max{Q(t+2)}=Q(t+2)である。よって、集計部140は、実質消費電力G(t)=max{Q(t+2)}=Q(t+2)とする。
集計部140は、時刻Tp(t+1)に対しても同様に実質消費電力G(t+1)を求めることができる。具体的には、min{Q(t+2),Q(t+3)}=Q(t+2)であり、Q(t+1)>Q(t+2)+Mを満たすとする。すなわち、Q(t+1)>min{Q(t+2),Q(t+3)}+Mを満たす。
このとき、Q(t+2)<Q(t+1)−Mであるため、m=1は条件Lを満たす。また、Q(t+3)<Q(t+1)−Mであるため、m=2は条件Lを満たす。したがって、Q(t+1)に対して条件Lを満たすmは、m=1,2である。また、max{Q(t+2),Q(t+3)}=Q(t+3)である。よって、集計部140は、実質消費電力G(t+1)=max{Q(t+2),Q(t+3)}=Q(t+3)とする。
図15に示す他の時刻では、実質消費電力G(i)=Q(i)となる。すると、集計部140は、補正後の系列K42を得る。集計部140は、系列K42に基づいて、実行箇所毎の最大消費電力を取得する。こうして、集計部140は、電力自動制御のフィードバックが比較的遅い場合にも、電力自動制御やコンデンサの効果分を除去して、実質最大消費電力を適切に取得できる。
なお、集計部140は、実質消費電力G(i)を、実質最大消費電力の算出にのみ使用し、検証対象プログラムの実行箇所毎の消費電力量や平均消費電力の算出には用いない。そのため、実行箇所毎の消費電力量や平均消費電力を比較する際に、実質消費電力G(i)を求めるために行った補正の影響が及ぶことはない。
図16は、出力処理の例を示すフローチャートである。以下、図16に示す処理をステップ番号に沿って説明する。
(S41)表示制御部150は、記憶部110に記憶された命令アドレス変換テーブル111および補正後テーブル113に基づいて、各時刻Tp(i)における実行箇所毎の消費電力R(i)を計算する。具体的には、表示制御部150は、R(i)=Epm(i)−Epm(i−1)とする。なお、図13のステップS31において、集計部140が、各時刻Tp(i)における実行箇所毎の消費電力R(i)(=Q(i))の計算結果を記憶部110に格納しておいてもよい。
(S42)表示制御部150は、ステップS41の計算結果に基づいて、第1の軸を時刻、第2の軸を消費電力、第3の軸を検証対象プログラムの実行箇所に対応付けた3次元折れ線グラフを描画し、ディスプレイ13に表示させる。表示制御部150は、ユーザによる入力に応じて、3次元折れ線グラフの視点を移動させるよう描画内容を変更してもよい。表示制御部150は、記憶部110に記憶された電力統計テーブル114に基づいて、第3の軸における実行箇所の並び順をソートする。例えば、表示制御部150は、ユーザの指示入力に応じて、サンプリング回数の多い順、総消費電力量の大きい順、最大消費電力の大きい順または平均消費電力の大きい順などでソートする。
図17は、グラフの表示例(その1)を示す図である。表示制御部150は、検証対象プログラムの実行中における消費電力を図17に示すように3次元グラフにより可視化する。このとき、例えば、第1の軸(横方向)を時間、第2の軸(縦方向)を消費電力(例えば、平均消費電力)、第3の軸(奥行き方向)をプログラムの実行箇所に対応付ける。
第3の軸に対応する実行箇所は、サブルーチン、ループ、ソースプログラムの行番号など、調査の状況に応じて複数の粒度から選択可能である。例えば、命令アドレス変換テーブル111を粒度に応じて複数用意しておけば、実行箇所の複数の粒度に応じた消費電力を把握可能である。プログラムの実行中に取得された消費電力のデータは、何れかの粒度でグルーピングされる。表示制御部150は、同一のサブルーチンや同一のループ、同一の行番号に対するデータを1つの系列とし、3次元グラフとして可視化する。
ここで、第3の軸の並び順が重要となる。例えば、表示制御部150は、(a)実行頻度(すなわち、サンプリング回数)の高い順、(b)総消費電力量の大きい順、(c)最大消費電力の大きい順、(d)平均消費電力の大きい順などでソートし得る。
実行頻度の大きい順にソートしてグラフを描画することで、プログラムの実行時間を抑制しながら省電力化を図るために見直すべき実行箇所のユーザによる判断を支援できる。例えば、ユーザは、実行時間の長期化を防止する観点では、実行頻度が上位(例えば、1位や2位)の実行箇所を避けて消費電力を削減することが有効と判断できる。
また、総消費電力量の大きい順にソートしてグラフを描画することで、総消費電力量を削減するために見直すべき実行箇所のユーザによる判断を支援できる。例えば、ユーザは、上位の実行箇所から順に消費電力を削減することが有効と判断できる。
また、消費電力の最大値は、使用するコンピュータの運用条件によっては、プログラムを実行できる期間を制約してしまう場合もある(例えば、夜間のみ等、実行機会が制限され得る)。このため、消費電力の最大値を一定の値以下に抑えることが要件となり得る。そこで、最大消費電力の大きい順でソートしてグラフを描画することで、プログラムの実行機会を確保する観点での改善箇所のユーザによる判断を支援できる。例えば、ユーザは、最大消費電力が上位の実行箇所から順に最大消費電力を削減することが有効と判断できる。
更に、平均消費電力の大きい順にソートしてグラフを描画することで、実行時間を抑制しつつ消費電力量を削減可能な箇所や使用するハードウェア資源を一時的に追加して高速化できる箇所の特定を支援できる。
図18は、グラフの表示例(その2)を示す図である。表示制御部150は、検証結果を2次元のグラフでも描画し得る。図18では、横軸を実行箇所、縦軸を消費電力(例えば、平均消費電力)としたグラフを描画する例を示している。前述のように、表示制御部150は、電力統計テーブル114に基づいて、横軸の実行箇所を、実行頻度、総消費電力量、最大消費電力または平均消費電力などの任意の順序でソート可能である。表示制御部150は、ユーザの指示入力に応じて、ユーザにとってより見易い方法でグラフを描画することで、ユーザによる改善箇所の効率的な検討を支援できる。
特に、第2の実施の形態の検証装置100は、サンプリングした累積電力量を線形補間により補正することで、実行箇所毎の消費電力を適切に取得できる。このため、ユーザに対して、実行箇所毎の適正な消費電力を提示することが可能である。すなわち、検証装置100は、プログラムの改善箇所のユーザによる検討を適切に支援できる。ユーザは、検証装置100による消費電力の取得結果を閲覧することで、プログラムの改善箇所をより正しく判断できるようになる。
なお、第1の実施の形態の情報処理は、演算部1bにプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、プロセッサ101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体15に記録できる。
例えば、プログラムを記録した記録媒体15を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体15に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
以上の第1,第2の実施の形態を含む実施形態に関し、更に以下の付記を開示する。
(付記1) プログラムの実行中に消費した累積電力量の計測結果を参照した時刻と当該累積電力量と当該時刻に実行した命令の格納メモリアドレスとの対応を示す第1の情報と、前記プログラムの実行箇所と命令格納メモリアドレスの範囲との対応を示す第2の情報と、を記憶する記憶部と、
前記第1および前記第2の情報に基づいて、所定の実行箇所が実行された時刻を判定し、当該時刻における前記累積電力量を線形補間により算出する演算部と、
を有する情報処理装置。
(付記2) 前記演算部は、前記第1の情報と前記計測結果が更新される周期と前記計測結果を参照する周期とに基づいて、前記計測結果の各更新時刻における前記累積電力量を算出し、算出した各更新時刻における前記累積電力量を用いて前記線形補間を行う、付記1記載の情報処理装置。
(付記3) 前記演算部は、第1の更新時刻における第1の累積電力量と前記第1の更新時刻の次の第2の更新時刻における第2の累積電力量とを用いて、前記第1および前記第2の更新時刻の間の前記実行箇所の実行時刻における前記累積電力量を前記線形補間により算出する、付記2記載の情報処理装置。
(付記4) 前記演算部は、前記第1および前記第2の累積電力量の差を前記第1および前記第2の更新時刻の差で割った商に、前記第1の更新時刻と前記実行時刻との差を乗じた値と、前記第1の累積電力量との和を、前記実行時刻における前記累積電力量とする、付記3記載の情報処理装置。
(付記5) 前記演算部は、各時刻での前記累積電力量の算出結果から各時刻での前記実行箇所の実行による消費電力を算出し、第1の時刻における消費電力を、第2の時刻における消費電力との比較に応じて補正する、付記1乃至4の何れか1つに記載の情報処理装置。
(付記6) 前記演算部は、前記第1の時刻における消費電力が、前記第1の時刻の1つ前の時刻における消費電力および前記第1の時刻の1つ後の時刻における消費電力よりも大きいとき、前記第1の時刻の消費電力を、前記1つ前の時刻または前記1つ後の時刻における消費電力のうち、大きい方の消費電力に補正する、付記5記載の情報処理装置。
(付記7) 前記演算部は、前記第1の時刻における消費電力と、前記第1の時刻の次の時刻以降の複数の時刻における消費電力との比較に応じて補正する、付記5記載の情報処理装置。
(付記8) 前記演算部は、各時刻の補正後の消費電力に基づいて、前記実行箇所毎の最大消費電力を取得する、付記5乃至7の何れか1つに記載の情報処理装置。
(付記9) 前記演算部は、各時刻での前記累積電力量の算出結果から各時刻での前記実行箇所の実行による消費電力を算出し、時刻と消費電力と前記実行箇所との対応関係を示す3次元グラフの情報を出力する、付記1乃至8の何れか1つに記載の情報処理装置。
(付記10) プログラムの実行中に消費した累積電力量の計測結果を参照した時刻と当該累積電力量と当該時刻に実行した命令の格納メモリアドレスとの対応を示す第1の情報と、前記プログラムの実行箇所と命令格納メモリアドレスの範囲との対応を示す第2の情報と、に基づいて、所定の実行箇所が実行された時刻を判定し、当該時刻における前記累積電力量を線形補間により算出する、
処理をコンピュータに実行させる消費電力計測プログラム。
(付記11) コンピュータが、
プログラムの実行中に消費した累積電力量の計測結果を参照した時刻と当該累積電力量と当該時刻に実行した命令の格納メモリアドレスとの対応を示す第1の情報と、前記プログラムの実行箇所と命令格納メモリアドレスの範囲との対応を示す第2の情報と、に基づいて、所定の実行箇所が実行された時刻を判定し、当該時刻における前記累積電力量を線形補間により算出する、
消費電力計測方法。
1 情報処理装置
1a 記憶部
1b 演算部
K1,K2 系列

Claims (6)

  1. プログラムの実行中に消費した累積電力量の計測結果を参照した時刻と当該累積電力量と当該時刻に実行した命令の格納メモリアドレスとの対応を示す第1の情報と、前記プログラムの実行箇所と命令格納メモリアドレスの範囲との対応を示す第2の情報と、を記憶する記憶部と、
    前記累積電力量を計測する計測装置により所定の更新周期で更新される前記計測結果を、前記更新周期よりも短い参照周期で参照して、前記第1の情報に記録し、前記第1および前記第2の情報に基づいて、所定の実行箇所が実行された時刻を判定し、前記所定の実行箇所が実行された時刻において記録された前記累積電力量を線形補間により補正する演算部と、
    を有する情報処理装置。
  2. 前記演算部は、前記第1の情報と前記更新周期と前記参照周期とに基づいて、前記計測結果の各更新時刻における前記累積電力量を算出し、算出した各更新時刻における前記累積電力量を用いて前記線形補間を行う、請求項1記載の情報処理装置。
  3. 前記演算部は、各時刻での前記累積電力量の算出結果から各時刻での前記実行箇所の実行による消費電力を算出し、第1の時刻における消費電力を、第2の時刻における消費電力との比較に応じて補正する、請求項1または2記載の情報処理装置。
  4. 前記演算部は、各時刻での前記累積電力量の算出結果から各時刻での前記実行箇所の実行による消費電力を算出し、時刻と消費電力と前記実行箇所との対応関係を示す3次元グラフの情報を出力する、請求項1乃至3の何れか1項に記載の情報処理装置。
  5. プログラムの実行中に消費した累積電力量を計測する計測装置により所定の更新周期で更新される計測結果を前記更新周期よりも短い参照周期で参照し、参照した時刻と当該累積電力量と当該時刻に実行した命令の格納メモリアドレスとの対応を、記憶部に記憶された第1の情報に記録し、
    前記第1の情報と、前記プログラムの実行箇所と命令格納メモリアドレスの範囲との対応を示す第2の情報と、に基づいて、所定の実行箇所が実行された時刻を判定し、前記所定の実行箇所が実行された時刻において記録された前記累積電力量を線形補間により補正する、
    処理をコンピュータに実行させる消費電力計測プログラム。
  6. コンピュータが、
    プログラムの実行中に消費した累積電力量を計測する計測装置により所定の更新周期で更新される計測結果を前記更新周期よりも短い参照周期で参照し、参照した時刻と当該累積電力量と当該時刻に実行した命令の格納メモリアドレスとの対応を、記憶部に記憶された第1の情報に記録し、
    前記第1の情報と、前記プログラムの実行箇所と命令格納メモリアドレスの範囲との対応を示す第2の情報と、に基づいて、所定の実行箇所が実行された時刻を判定し、前記所定の実行箇所が実行された時刻において記録された前記累積電力量を線形補間により補正する、
    消費電力計測方法。
JP2015084113A 2015-04-16 2015-04-16 情報処理装置、消費電力計測プログラムおよび消費電力計測方法 Active JP6544013B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015084113A JP6544013B2 (ja) 2015-04-16 2015-04-16 情報処理装置、消費電力計測プログラムおよび消費電力計測方法
US15/091,605 US10324510B2 (en) 2015-04-16 2016-04-06 Information processing apparatus and method for measuring energy consumption

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015084113A JP6544013B2 (ja) 2015-04-16 2015-04-16 情報処理装置、消費電力計測プログラムおよび消費電力計測方法

Publications (2)

Publication Number Publication Date
JP2016206743A JP2016206743A (ja) 2016-12-08
JP6544013B2 true JP6544013B2 (ja) 2019-07-17

Family

ID=57128333

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015084113A Active JP6544013B2 (ja) 2015-04-16 2015-04-16 情報処理装置、消費電力計測プログラムおよび消費電力計測方法

Country Status (2)

Country Link
US (1) US10324510B2 (ja)
JP (1) JP6544013B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200015185A (ko) * 2018-08-03 2020-02-12 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10322905A (ja) * 1997-05-22 1998-12-04 Mitsubishi Electric Corp 電鉄変電所用契約電力超過防止装置
JP3392343B2 (ja) * 1998-03-12 2003-03-31 日本電信電話株式会社 トラヒックデータ補正方法及びトラヒック測定システム並びにコンピュータネットワーク
US20040268159A1 (en) * 2003-06-30 2004-12-30 Microsoft Corporation Power profiling
US20070198864A1 (en) * 2006-02-21 2007-08-23 Toshiba America Electronic Components Systems and methods for determining and using power profiles for software programs executing on data processors
JP4940996B2 (ja) 2007-02-23 2012-05-30 富士通セミコンダクター株式会社 プロファイリング装置およびプロファイリングプログラム
JP5299161B2 (ja) * 2008-08-22 2013-09-25 富士通株式会社 計算機装置および消費電力のサンプリング方法
JP5601236B2 (ja) * 2011-02-10 2014-10-08 富士通株式会社 情報抽出プログラム、情報抽出方法、および情報抽出装置
GB2491109B (en) * 2011-05-18 2014-02-26 Onzo Ltd Identification of a utility consumption event
JP5790431B2 (ja) 2011-11-18 2015-10-07 富士通株式会社 設計支援装置、設計支援方法および設計支援プログラム
JP5948973B2 (ja) 2012-03-05 2016-07-06 株式会社リコー 情報処理装置、情報処理システム、及びプログラム

Also Published As

Publication number Publication date
US10324510B2 (en) 2019-06-18
US20160305993A1 (en) 2016-10-20
JP2016206743A (ja) 2016-12-08

Similar Documents

Publication Publication Date Title
US8689172B2 (en) Mining sequential patterns in weighted directed graphs
US7315795B2 (en) Performance analyzing method using hardware
JP5961971B2 (ja) シミュレーション装置,方法,およびプログラム
JP2006260542A (ja) コード部分実行時のプロセッサ消費実時間量の決定
Horký et al. Utilizing performance unit tests to increase performance awareness
US20090235056A1 (en) Recording medium storing performance monitoring program, performance monitoring method, and performance monitoring device
JP2007249974A (ja) プロセッサ設計を特徴付けるための方法、装置、論理プログラム及びシステム
CN102681947A (zh) 用于跨距剖析软件应用的方法和设备
US8006041B2 (en) Prefetch processing apparatus, prefetch processing method, storage medium storing prefetch processing program
JP6683920B2 (ja) 並列処理装置、電力係数算出プログラムおよび電力係数算出方法
US20090083716A1 (en) Profiling method and program
US8359291B2 (en) Architecture-aware field affinity estimation
US20130152042A1 (en) Automated and heuristically managed solution to quantify cpu and path length cost of instructions added, changed or removed by a service team
JP6691295B2 (ja) 情報処理装置、プログラム実行状態表示方法およびプログラム実行状態表示プログラム
JP6544013B2 (ja) 情報処理装置、消費電力計測プログラムおよび消費電力計測方法
CN103198002A (zh) 程序运行时间的测量方法及仿真器
US20110252408A1 (en) Performance optimization based on data accesses during critical sections
US20150154103A1 (en) Method and apparatus for measuring software performance
Van Biesbrouck et al. Efficient sampling startup for sampled processor simulation
US10114725B2 (en) Information processing apparatus, method, and computer readable medium
US8756580B2 (en) Instance-based field affinity optimization
JP6471615B2 (ja) 性能情報生成プログラム、性能情報生成方法及び情報処理装置
US20150160944A1 (en) System wide performance extrapolation using individual line item prototype results
US7707560B2 (en) Analyzing software performance without requiring hardware
US20120226477A1 (en) Reducing Overhead and Increasing Precision with Code Instrumentation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180928

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181228

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190521

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190603

R150 Certificate of patent or registration of utility model

Ref document number: 6544013

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150