説明

設計支援装置、設計支援方法および設計支援プログラム

【課題】プログラムの消費電力に関する情報を迅速に取得すること。
【解決手段】計算部1aは、所定のプログラムに記載された関数に統計解析を実行してプログラムに記載された関数それぞれを単独で実行した場合に比べ、所定の組み合わせで関数を実行した場合に消費電力量が改善する可能性があることを示す指標を計算し、指標を関数の組み合わせと関連づけたテーブル1b1を作成する。記憶部1bは、テーブル1b1を記憶する。検索部1cは、設計対象のプログラム3に含まれるソースコードのうち、記憶部1bに記憶されているテーブル1b1が備える関数の組み合わせを含むソースコードを検索する。表示部1dは、検索部1cの検索により得られたソースコード3a、3bを他のソースコードと区別し得る態様で表示する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は設計支援装置、設計支援方法および設計支援プログラムに関する。
【背景技術】
【0002】
無線通信端末装置等のハードウェアに搭載されるアプリケーションプログラムの開発時に、アプリケーションプログラムの実行に伴う消費電力を推定し、評価する技術が知られている。
【0003】
例えば、CPU(Central Processing Unit)の負荷率等をパラメータとして重回帰分析を行うことにより消費電力を評価する線型近似式を作成し、アプリケーションプログラムの消費電力を推定する方法が知られている。
【0004】
また、他の方法として、開発中のアプリケーションの処理単位毎の消費電力を測定し、処理単位毎の消費電力を収集して、アプリケーションプログラムの消費電力を推定する方法が知られている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2010−225133号公報
【特許文献2】特開2003−345472号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
アプリケーションプログラムの消費電力は、アプリケーションの実行負荷に応じて変化する。このため、線型近似式を作成してアプリケーションプログラムの消費電力を推定する方法では、負荷を変えたアプリケーションプログラムを何度か実行し、その結果に基づき線型近似式の生成に用いるパラメータを決定する。このため、パラメータの決定に時間がかかり、その結果、消費電力に関する情報の取得に時間がかかるという問題がある。
【0007】
1つの側面では、本発明は、プログラムの消費電力に関する情報を迅速に取得することを目的とする。
【課題を解決するための手段】
【0008】
上記目的を達成するために、開示の設計支援装置が提供される。この設計支援装置は、計算部と、記憶部と、検索部と、表示部とを有している。
計算部は、所定のプログラムに記載された関数に統計解析を実行してプログラムに記載された関数それぞれを単独で実行した場合に比べ、所定の組み合わせで関数を実行した場合に消費電力量が改善する可能性があることを示す指標を計算し、指標を関数の組み合わせと関連づけた解析情報を作成する。
【0009】
記憶部は、解析情報を記憶する。
検索部は、設計対象のプログラムに含まれるソースコードのうち、記憶部に記憶されている解析情報が備える関数の組み合わせを含むソースコードを検索する。
【0010】
表示部は、検索部の検索により得られたソースコードを他のソースコードと区別し得る態様で表示する。
【発明の効果】
【0011】
一態様では、プログラムの消費電力に関する情報を迅速に取得することができる。
【図面の簡単な説明】
【0012】
【図1】第1の実施の形態の設計支援装置を示す図である。
【図2】第2の実施の形態の設計支援装置のハードウェア構成を示す図である。
【図3】第2の実施の形態の設計支援装置の機能を示すブロック図である。
【図4】実機トレースログの一例を示す図である。
【図5】実機電流ログの一例を示す図である。
【図6】マトリックス生成部が生成するマトリックスの一例を示す図である。
【図7】ソースコード・メソッド対応情報の一例を示す図である。
【図8】アソシエーション解析の解析結果の一例を示す図である。
【図9】アソシエーション解析の解析結果をまとめた例を示す図である。
【図10】アソシエーション解析情報の一例を示す図である。
【図11】電力傾向情報の一例を示す図である。
【図12】ソフトウェア改善情報の一例を示す図である。
【図13】第2の実施の形態のアプリケーション開発部が表示する画面の一例を示す図である。
【図14】第2の実施の形態のアプリケーション開発部が表示する画面の一例を示す図である。
【図15】設計支援装置の全体処理を示すフローチャートである。
【図16】設計支援装置の全体処理を示すフローチャートである。
【図17】電力傾向テーブル生成処理を示すフローチャートである。
【図18】ソースコード書き換え処理を示すフローチャートである。
【図19】第3の実施の形態の設計支援装置を示す機能ブロック図である。
【図20】ソースコード電力相関情報の一例を示す図である。
【図21】第3の実施の形態のアプリケーション開発部が表示する画面の一例を示す図である。
【図22】コード電力相関テーブル生成処理を示すフローチャートである。
【図23】コード電力相関テーブル生成処理の具体例を説明する図である。
【図24】コード電力相関テーブルの更新処理を示すフローチャートである。
【図25】最適ソースコード選定処理を示すフローチャートである。
【図26】最適ソースコード選定処理を示すフローチャートである。
【発明を実施するための形態】
【0013】
以下、実施の形態の設計支援装置を、図面を参照して詳細に説明する。
<第1の実施の形態>
図1は、第1の実施の形態の設計支援装置を示す図である。
【0014】
第1の実施の形態の設計支援装置(コンピュータ)1は、計算部1aと記憶部1bと検索部1cと表示部1dとを有している。なお、計算部1a、検索部1c、および表示部1dは、設計支援装置1が有するCPUが備える機能により実現することができる。また、記憶部1bは、設計支援装置1が有するRAM(Random Access Memory)やハードディスクドライブ(HDD:Hard Disk Drive)等が備えるデータ記憶領域により実現することができる。
【0015】
計算部1aは、統計解析を実行する対象である解析対象プログラムの実行ログ2を用いて解析対象プログラムに記載された関数それぞれを単独で実行した場合に消費する電力量を計算する。解析対象プログラムとしては、例えば、設計対象のアプリケーションプログラム等、任意のプログラムを用いることができる。また、解析対象プログラムの言語は、本実施の形態では、Java(登録商標)を一例に説明する。実行ログ2には、時刻(例えば1msec)毎に実行されたJavaのメソッド(method)に関するアクション(Action)が記載されている。メソッドは、プログラムに記載された関数の一例である。アクションがstartである場合には、1msec毎に消費するメソッドの電流値が記載されている。
【0016】
例えば、解析対象プログラムを実行した実機の電源電圧が3.7[V]である場合、計算部1aは、例えば、実行ログ2を参照し、実行ログ2に記載されたメソッドAについての電力量を120[mA]×3.7[V]×1[msec]=444[μWs]と計算する。
【0017】
計算部1aは、計算した電力量を用いて解析対象プログラムの各メソッドにアソシエーション解析を実行する。アソシエーション解析は、統計解析の一例である。アソシエーション解析を実行することにより、解析対象プログラムに記載されたメソッドそれぞれを単独で実行した場合に比べ、所定の組み合わせでメソッドを実行した場合に消費電力量が改善する可能性があることを示す指標を計算することができる。例えば、計算した電力量が962[μWs]である場合、メソッドA、B単独の記述に伴い実機が動作した場合に比べ、メソッドA、Bがシーケンシャルに動作した場合に962[μWs]を超える確率(confidence)が55%であり、改善率(lift)が1.2であることをアソシエーション解析により求めることができる。求めた確率および改善率は、指標の一例である。
【0018】
計算部1aは、求めた確率および改善率を、解析対象プログラムの各メソッドの組み合わせと関連づけたテーブル1b1を作成する。そして、作成したテーブル1b1を記憶部1bに記憶する。なお、図1では、電力量が962[μWs]に関するテーブル1b1を示しているが、設計者は、任意の電力量を指定し、指定した電力量に関するテーブル1b1を設計支援装置1に作成させることができる。
【0019】
検索部1cは、設計対象のアプリケーションのプログラム3および設計者がポップアップの表示を希望する電力量962[μWs]の指定を受け付けると、プログラム3に記述されているソースコードのうち、テーブル1b1に記載されているメソッドの組み合わせを含み、かつ、確率の欄が50%以上のソースコードを検索する。なお、電力量962[μWs]および確率50%は一例である。以下、1行目のレコードおよび4行目のレコードのメソッドを含むソースコードが検索により得られたものとする。
【0020】
表示部1dは、検索部1cの検索により得られた、1行目のレコードおよび4行目のレコードのメソッドの組み合わせを含むプログラム3のソースコード3a、3bに、ポップアップ「高」を表示する。このポップアップ「高」は、当該メソッドの組み合わせが、電力量962[μWs]を超える確率が一定値以上であることを示している。
【0021】
これにより、設計者は、ポップアップ「高」が表示されたソースコード3a、3bが、電力量962[μWs]を超える確率が高いメソッドを含んでいることを容易に把握することができる。なお、ポップアップは、設計者への報知方法の一例であり、他の方法を用いることができる。設計者が、ポップアップ「高」が表示されたソースコード3a、3bを書き換えることにより、計算部1aは、再度アソシエーション解析を実行し、書き換えたソースコードに含まれるメソッドの組み合わせに対するテーブル1b1を作成することができる。また、表示部1dは、テーブル1b1を参照し、設計者が書き換えたソースコードに含まれるメソッドの組み合わせの改善率の値が1より大きい場合には、書き換えたソースコードが、消費電力の低減に効果がある旨を表示装置4の表示画面上に表示することができる。例えば、表示部1dは、書き換えたソースコードに含まれるメソッドの組み合わせによる改善率を表示画面上に表示する。
【0022】
この設計支援装置1によれば、計算部1aが、各メソッドに対して、統計的手法を用いて電力量の増加に関する確率および改善率を計算した。これにより、設計段階で、電力量に関する情報をソースコード単位で取得することができる。また、例えば、重回帰分析等により電力量の増加に関する近似式を生成する場合等に比べ、ソースコード単位での電力量の増減を迅速に把握することができる。
【0023】
なお、本実施の形態では、統計解析の手法としてアソシエーション解析を用いたが、相関ルール抽出、クラスタ分析等の他の統計解析手法を用いることができる。
以下、第2の実施の形態において、開示の設計支援装置をより具体的に説明する。
【0024】
<第2の実施の形態>
図2は、第2の実施の形態の設計支援装置のハードウェア構成を示す図である。
設計支援装置10は、CPU101によって装置全体が制御されている。CPU101には、バス108を介してRAM102と複数の周辺機器が接続されている。
【0025】
RAM102は、設計支援装置10の主記憶装置として使用される。RAM102には、CPU101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、CPU101による処理に使用する各種データが格納される。
【0026】
バス108には、ハードディスクドライブ103、グラフィック処理装置104、入力インタフェース105、ドライブ装置106、および通信インタフェース107が接続されている。
【0027】
ハードディスクドライブ103は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ハードディスクドライブ103は、設計支援装置10の二次記憶装置として使用される。ハードディスクドライブ103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリ等の半導体記憶装置を使用することもできる。
【0028】
グラフィック処理装置104には、モニタ104aが接続されている。グラフィック処理装置104は、CPU101からの命令に従って、画像をモニタ104aの画面に表示させる。モニタ104aとしては、CRT(Cathode Ray Tube)を用いた表示装置や、液晶表示装置等が挙げられる。
【0029】
入力インタフェース105には、キーボード105aとマウス105bとが接続されている。入力インタフェース105は、キーボード105aやマウス105bから送られてくる信号をCPU101に送信する。なお、マウス105bは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、例えばタッチパネル、ペンタブレット、タッチパッド、トラックボール等が挙げられる。
【0030】
ドライブ装置106は、例えば、光の反射によって読み取り可能なようにデータが記録された光ディスクや、USB(Universal Serial Bus)メモリ等の持ち運び可能な記録媒体に記録されたデータの読み取りを行う。例えば、ドライブ装置106が光学ドライブ装置である場合、レーザ光等を利用して、光ディスク200に記録されたデータの読み取りを行う。光ディスク200には、Blu−ray(登録商標)、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)等が挙げられる。
【0031】
通信インタフェース107は、ネットワーク50に接続されている。通信インタフェース107は、ネットワーク50を介して、他のコンピュータまたは通信機器との間でデータを送受信する。
【0032】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
図2に示すようなハードウェア構成の設計支援装置10内には、以下のような機能が設けられる。
【0033】
図3は、第2の実施の形態の設計支援装置の機能を示すブロック図である。
設計支援装置10は、解析部11と、電力傾向情報生成部12と、電力傾向情報記憶部13と、ソフトウェア改善情報生成部14と、ソフトウェア改善情報記憶部15と、アプリケーション開発部16とを有している。解析部11と電力傾向情報生成部12は、計算部の一例である。アプリケーション開発部16は、検索部および表示部の一例である。
【0034】
解析部11は、マトリックス(Matrix)生成部111と、マトリックス記憶部112と、ソースコード・メソッド対応情報生成部113と、ソースコード・メソッド対応情報記憶部114と、アソシエーション解析部115と、アソシエーション解析情報記憶部116とを有している。
【0035】
マトリックス生成部111は、実機にてアプリケーションを実行した結果得られる電力波形およびトレースログに記憶されている情報を用いてアソシエーション解析の入力に用いるマトリックスを生成する。以下、本実施の形態では、開発言語としてJavaを用いた場合を一例に説明する。実機にて実行するアプリケーションは、例えばgraphicsやview等、Javaの標準ライブラリの特徴的なものを選ぶことができる。
【0036】
マトリックス生成部111は、生成したマトリックスをマトリックス記憶部112に記憶する。
図4は、実機トレースログの一例を示す図である。
【0037】
実機トレースログ201には、時刻、アクション、およびメソッドの欄が設けられている。横方向に並べられた情報同士が互いに関連づけられている。
時刻の欄には、プログラムを開始してから経過した時刻(msec)が記憶されている。
【0038】
アクションの欄には、メソッドの開始(start)および終了(end)を識別する情報が記憶されている。
メソッドの欄には、実行されたメソッドを識別する情報が記憶されている。
【0039】
図5は、実機電流ログの一例を示す図である。
実機電流ログ202には、プログラムを開始してから経過した時刻(秒)に対応する電流値が記憶されている。
【0040】
図6は、マトリックス生成部が生成するマトリックスの一例を示す図である。
マトリックス112aは、CSV形式のデータである。マトリックス112aの各列は、time(時刻)、Pt(電力量)、メソッドの列挙の順にデータが並んでいる。1列分のデータは、各時刻に呼ばれているメソッドおよびそのメソッドの実行に伴う電力量を示している。
【0041】
ここで、Ptの値は、電力量を超えたか否かを閾値で判定した値である。図6では、Ptの値を枠で囲って示している。例えば、設計者が閾値を888[μWs]に設定し、閾値を超えると「1」に設定される。
【0042】
なお、電力量は、実機トレースログ201および実機電流ログ202から演算することができる。例えば図4に示す実機トレースログ201を見ると、10[msec]目にメソッドAが開始し、11[msec]目にメソッドAが終了していることが分かる。仮に電源電圧を3.7[V]とすると、1[msec]の電流値が120[mA]であるため、図6におけるメソッドAのPtの値は、120[mA]×3.7[V]×1[msec]=444[μWs]となる。また、他の例として、図6におけるメソッドBのPtの値は、130[mA]×3.7[V]×3[msec]=1443[μWs]となる。
【0043】
ソースコード・メソッド対応情報生成部113は、マトリックス112aを用いてソースコードとメソッドとの対応関係を示すソースコード・メソッド対応情報を生成する。ソースコード・メソッド対応情報生成部113は、生成したソースコード・メソッド対応情報をソースコード・メソッド対応情報記憶部114に記憶する。
【0044】
図7は、ソースコード・メソッド対応情報の一例を示す図である。
ソースコード・メソッド対応テーブル114aは、1つのソースコードに対し1つまたは複数のメソッドが記憶されている。
【0045】
アソシエーション解析部115は、設計者が設定した電力量についてマトリックス112aを用いてアソシエーション解析を実行し、メソッド単体またはメソッドの組み合わせに対して電流との相関を抽出したアソシエーション解析情報を生成する。なお、アソシエーション解析は、従来公知の方法で実現することができるため、詳細な説明を省略する。
【0046】
図8は、アソシエーション解析の解析結果の一例を示す図である。
アソシエーション解析結果115aは、lhs、rhs、support、confidence、liftの項目が設定されている。
【0047】
lhsは相関ルールの条件部である。rhsは相関ルールの結論部である。supportは相関ルールが出現する確率である。confidenceはルールが出現した場合に成立する確率である。liftはもともとの確率からの改善率である。この改善率は、電力量の増加に関係するファクターとなる。
【0048】
次に、解析結果の評価方法の一例を、図9を用いて説明する。
図9は、アソシエーション解析の解析結果をまとめた例を示す図である。
テーブルT1は、ある時間内に動作が記録されたメソッド(以下、メソッド[A]→[B]とする)の組み合わせに対し、電力量値を超えるケースを取得した場合の例を示している。ここでメソッド[A]→[B]は、メソッドAの実行と、メソッドBの実行との間にアソシエーションルールがあることを示している。
【0049】
例えば、テーブルT1の1行目のレコードは、アソシエーション解析を実行した際、メソッド[A]→[B]の組み合わせに対し、電力量1036[μWs]を超える確率が40%であり、メソッドA、Bをそれぞれ単独で実行した場合に比べ、改善率が1.1になったことを示している。メソッドA、Bをそれぞれ単独で実行した場合の改善率は1.0であり、改善率が1.0より高ければ、省電力に効果があるメソッドの組み合わせであることを示している。
【0050】
図10は、アソシエーション解析情報の一例を示す図である。
アソシエーション解析情報は、ターゲットとする電力量毎に改善率が高いメソッドの組み合わせを順に並べた情報である。ターゲットとする電力量は、設計者が任意に決定することができる。
【0051】
アソシエーション解析情報115bは、電力量888[μWs]についての情報であり、アソシエーション解析情報115cは、電力量962[μWs]についての情報であり、アソシエーション解析情報115dは、電力量1036[μWs]についての情報である。例えば、アソシエーション解析情報115bは、メソッド[android.graphics.CanvassetDensity..I.V]→[android.graphics.CanvasisOpaque...Z]の組み合わせは、それぞれのメソッドを単独で実行した場合に比べ、改善率が1.4であることを示している。
【0052】
アソシエーション解析部115は、アソシエーション解析情報を例えば数万〜数十万通り作成する。
電力傾向情報生成部12は、アソシエーション解析情報記憶部116に記憶されている各電力量のアソシエーション解析情報を用いて各電力量について改善率が最も高いレコードを抽出した電力傾向情報を生成する。電力傾向情報生成部12は、生成した電力傾向情報を電力傾向情報記憶部13に記憶する。なお、電力傾向情報は、解析情報の一例である。
【0053】
図11は、電力傾向情報の一例を示す図である。
電力傾向テーブル13aには、インデックス、メソッドパターン、電力量、電力傾向および改善率の欄が設けられている。横方向に並べられた情報同士が互いに関連づけられている。
【0054】
インデックスの欄には、当該電力傾向テーブル内でのレコードを識別する番号が設定されている。
メソッドパターン、電力傾向、および改善率の欄の内容は、アソシエーション解析情報と同じ内容である。
【0055】
電力量の欄には、当該レコードの抽出元の電力量が記憶される。
再び図3に戻って説明する。
ソフトウェア改善情報生成部14は、設計者によるソースコードの書き換え(変更)箇所について、改善率が上がったソースコードを集めたソフトウェア改善情報を生成する。ソースコードの書き換えによって改善率が上がる場合には、そのソースコードは省電力に有効であることを意味する。このソフトウェア改善情報を設計者に提示することで、設計者は、ソフトウェアを改善するヒントとすることができる。
【0056】
ソフトウェア改善情報生成部14は、生成したソフトウェア改善情報をソフトウェア改善情報記憶部15に記憶する。
図12は、ソフトウェア改善情報の一例を示す図である。
【0057】
ソフトウェア改善テーブル15aは、ソースコード、メソッド、改善率の欄が設けられている。横方向に並べられた情報同士が互いに関連づけられている。ソースコードおよびメソッドの欄は、ソースコード・メソッド対応テーブル114aの内容と同じである。
【0058】
改善率の欄には、メソッドの電力傾向テーブル13aから取得した、メソッドの欄に設定されているメソッドを実行したときの改善率が記憶されている。
アプリケーション開発部16は、設計者が例えばAndroid(登録商標)向けアプリケーション等の設計ツールのアプリケーションを起動することで実現される機能である。
【0059】
アプリケーション開発部16は、設計中のプログラムの開発環境画面をモニタ104aに表示する。表示の際、設計者が指定した電力量(以下、「ターゲット電力量」という)の入力を受け付けると、アプリケーション開発部16は、電力傾向テーブル13aの電力傾向の欄を参照し、受け付けたターゲット電力量に一致する電力量を特定する。そして、アプリケーション開発部16は、特定した電力量に関連づけられた電力傾向の欄を参照する。そして、電力傾向が一定以上の大きさ(例えば0.8以上)のレコードのメソッドが、設計中のプログラムに含まれているか否かを判断する。そして、アプリケーション開発部16は、設計中のプログラムに含まれるターゲット電力量を超える電力量となる確率が高いメソッドの組み合わせを含むプログラムのソースコードを、他のソースコードと区別して表示する。また、アプリケーション開発部16は、区別して表示するソースコードに、ポップアップを付加する。
【0060】
また、アプリケーション開発部16は、電力傾向テーブル13aを参照し、ソースコードに対応したメソッド毎に電力傾向を表示するようにしてもよい。
図13は、第2の実施の形態のアプリケーション開発部が表示する画面の一例を示す図である。
【0061】
モニタ104aに表示された開発環境画面161は、設計中の開発環境の一例を示している。アプリケーション開発部16は、ターゲット電力量を超える電力量となる確率が高いメソッドを含む部位162を他のソースコードと区別して表示する。図13では、一例として、部位162を点線で囲み、ポップアップ「高」が付加されている。
【0062】
ポップアップを目安に設計者がソースコードを書き換えると、解析部11は、書き換えたソースコードに対するメソッドにアソシエーション解析を再度行う。電力傾向情報生成部12は、再度実行されたアソシエーション解析の結果を電力傾向テーブル13aに反映する。また、ソフトウェア改善情報生成部14は、再度実行されたアソシエーション解析の結果をソフトウェア改善テーブル15aに反映する。そして、アプリケーション開発部16は、上書きされたソフトウェア改善テーブル15aを用いて書き換えたコードの改善率を識別する情報を開発環境画面161に表示する。
【0063】
図14は、第2の実施の形態のアプリケーション開発部が表示する画面の一例を示す図である。
図14中点線で示す部位162上にマウスカーソル163が位置すると、アプリケーション開発部16は、ソフトウェア改善テーブル15aに記憶されている改善率1.2をポップアップとしてソースコードに付加する。これにより、設計者は、書き換えたソースコードにより、電力量が小さくなる可能性があることを認識することができる。なお、ポップアップの内容は図示のものに限定されず、例えば、書き換え前と書き換え後の改善率の差分をポップアップするようにしてもよいし、改善率の増減を示す他の指標をポップアップとして付加するようにしてもよい。
【0064】
また、設計者は、ソフトウェア改善テーブル15aに記載されたメソッドの組み合わせを見てソースコードを改善する際のヒントとして用いることにより、書き換えたソースコードにより、電力量が小さくなる可能性を高めることができる。
【0065】
設計者は、ソースコードを1回または複数回書き換えた後に、できあがったアプリケーションのソフトウェアを実際の製品に搭載し、製品上でアプリケーションを動作させることによって実機トレースログ201および実機電流ログ202を取得することができる。設計者は、取得した実機トレースログ201および実機電流ログ202を設計支援装置10に読み込み、解析部11および電力傾向情報生成部12に処理を実行させることにより、電力傾向テーブル13aを更新することができる。設計者は、ソースコードの書き換えとアソシエーション解析を繰り返し実行することにより、アプリケーションに特化した電力傾向テーブル13aを作成することができる。
【0066】
次に、設計支援装置10の全体処理を説明する。
図15および図16は、設計支援装置の全体処理を示すフローチャートである。
[ステップS1] マトリックス生成部111は、設計者が選択したアプリケーションを実行した結果得られる実機トレースログ201および実機電流ログ202を取得する。その後、ステップS2に遷移する。
【0067】
[ステップS2] マトリックス生成部111は、マトリックス112aを生成する。その後、ステップS3に遷移する。
[ステップS3] ソースコード・メソッド対応情報生成部113は、ソースコード・メソッド対応テーブル114aがソースコード・メソッド対応情報記憶部114に存在するか否かを判断する。ソースコード・メソッド対応テーブル114aがソースコード・メソッド対応情報記憶部114に存在する場合(ステップS3のYes)、ステップS5に遷移する。ソースコード・メソッド対応テーブル114aがソースコード・メソッド対応情報記憶部114に存在する場合(ステップS3のNo)、ステップS4に遷移する。
【0068】
[ステップS4] ソースコード・メソッド対応情報生成部113は、ステップS1にて取得した実機トレースログ201に記載されたソースコードとメソッドの組み合わせを記載したソースコード・メソッド対応テーブル114aを生成する。そして、ソースコード・メソッド対応情報記憶部114に記憶する。その後、図16のステップS6に遷移する。
【0069】
[ステップS5] ソースコード・メソッド対応情報生成部113は、ステップS3にて取得した実機トレースログ201に記載されたソースコードとメソッドの組み合わせを、ソースコード・メソッド対応テーブル114aに追記する。その後、図16のステップS6に遷移する。
【0070】
[ステップS6] 解析部11は、アソシエーション解析を実行する電力量の個数を示すN(N≧0)を設定する。例えば、電力量888[μWs]、962[μWs]、1036[μWs]についてアソシエーション解析を実行する場合は、N=3に設定する。そして、ステップS7に遷移する。
【0071】
[ステップS7] 解析部11は、Nが0以下か否かを判断する。Nが0以下である場合(ステップS7のYes)、ステップS13に遷移する。Nが0より大きい場合(ステップS7のNo)、ステップS8に遷移する。
【0072】
[ステップS8] アソシエーション解析部115は、アソシエーション解析を実行する電力量に調査対象の電力量の1つ(図16中、Power[N]と表記)を設定する。その後、ステップS9に遷移する。
【0073】
[ステップS9] アソシエーション解析部115は、ステップS8にて設定された調査対象の電力量についてアソシエーション解析を実行し、アソシエーション解析情報を生成する。アソシエーション解析部115は、生成したアソシエーション解析情報をアソシエーション解析情報記憶部116に記憶する。その後、ステップS10に遷移する。
【0074】
[ステップS10] 電力傾向情報生成部12は、アソシエーション解析情報記憶部116に記憶されているアソシエーション解析情報を用いて電力傾向テーブル13aを生成する。そして、電力傾向情報生成部12は、生成した電力傾向テーブル13aを電力傾向情報記憶部13に記憶する。その後、ステップS11に遷移する。なお、当該ステップS10の処理は後に詳述する。
【0075】
[ステップS11] ソフトウェア改善情報生成部14は、電力傾向情報記憶部13に記憶されている電力傾向テーブル13aを用いてソフトウェア改善テーブル15aを生成する。具体的には、ソフトウェア改善情報生成部14は、電力傾向テーブル13aの1つのレコードを取得する。そして、ソフトウェア改善情報生成部14は、取得したレコードのメソッドに対応するソースコードをソースコード・メソッド対応テーブル114aから取得する。そして、取得したソースコードと、取得したレコードのメソッドおよび改善率とを関連づけることによりソフトウェア改善テーブル15aの1つのレコードを生成する。ソフトウェア改善情報生成部14は、電力傾向テーブル13aのレコード数だけソフトウェア改善テーブル15aのレコードの生成を繰り返し行うことにより、ソフトウェア改善テーブル15aを生成する。その後、ステップS12に遷移する。
【0076】
[ステップS12] 解析部11は、Nを1デクリメントする。その後、ステップS7に遷移する。
[ステップS13] アプリケーション開発部16は、電力傾向テーブル13aの電力傾向の欄を参照し、受け付けたターゲット電力量に一致する電力量を特定する。そして、アプリケーション開発部16は、特定した電力量に関連づけられた電力傾向の欄を参照する。そして、電力傾向が一定以上の大きさ(例えば0.8以上)のレコードのメソッドが、設計中のプログラムに含まれているか否かを判断する。そして、アプリケーション開発部16は、設計中のプログラムに含まれるターゲット電力量を超える電力量となる確率が高いメソッドの組み合わせを含むプログラムのソースコードを、他のソースコードと区別して表示する。また、アプリケーション開発部16は、区別して表示するソースコードに、ポップアップを付加する。その後、全体処理を終了する。
【0077】
次に、図16のステップS10の電力傾向テーブル13aを生成する処理(電力傾向テーブル生成処理)を説明する。
図17は、電力傾向テーブル生成処理を示すフローチャートである。
【0078】
[ステップS21] 電力傾向情報生成部12は、ステップS9にて生成したアソシエーション解析情報の中から処理対象のアソシエーション解析情報を識別するPOWER_NUMを0に設定する。その後、ステップS22に遷移する。
【0079】
[ステップS22] 電力傾向情報生成部12は、POWER_NUMが、処理対象電力量の数N以上か否かを判断する。POWER_NUMがN以上である場合(ステップS22のYes)、図17の処理を終了する。POWER_NUMがN未満である場合(ステップS22のNo)、ステップS23に遷移する。
【0080】
[ステップS23] 電力傾向情報生成部12は、POWER_NUMの電力量値を備えるアソシエーション解析情報を指定する。その後、ステップS24に遷移する。
[ステップS24] 電力傾向情報生成部12は、ステップS23にて指定したアソシエーション解析情報のインデックスを指定するパラメータIndexを0に設定する。その後、ステップS25に遷移する。
【0081】
[ステップS25] 電力傾向情報生成部12は、パラメータIndexの値が、ステップS23にて指定したアソシエーション解析情報のインデックスの最大値INDEX_MAXよりも大きいか否かを判断する。パラメータIndexの値が最大値INDEX_MAXよりも大きい場合(ステップS25のYes)、ステップS28に遷移する。パラメータIndexの値が最大値INDEX_MAX以下である場合(ステップS25のNo)、ステップS26に遷移する。
【0082】
[ステップS26] 電力傾向情報生成部12は、現在の電力傾向テーブル13aに記憶されている改善率と、パラメータIndexの値に該当するindexの改善率を比較する。そして、パラメータIndexの値に該当するindexの改善率の方が高ければ、パラメータIndexの値に該当するindexのレコードに記載された情報を電力傾向テーブル13aに上書きする。その後、ステップS27に遷移する。
【0083】
[ステップS27] 電力傾向情報生成部12は、パラメータIndexをインクリメントする。その後、ステップS25に遷移し、ステップS25以降の処理を引き続き実行する。
【0084】
[ステップS28] 電力傾向情報生成部12は、POWER_NUMをインクリメントする。その後、ステップS22に遷移し、ステップS22以降の処理を引き続き実行する。以上で電力傾向テーブル生成処理の説明を終了する。
【0085】
次に、設計者によりソースコードが書き換えられたときの処理(ソースコード書き換え処理)を説明する。
図18は、ソースコード書き換え処理を示すフローチャートである。
【0086】
[ステップS31] ソフトウェア改善情報生成部14は、設計者が書き換えたソースコードの入力を受け付ける。その後、ステップS32に遷移する。
[ステップS32] ソフトウェア改善情報生成部14は、ソースコード・メソッド対応テーブル114aを参照し、ステップS31にて受け付けたソースコードに関連づけられているメソッドを抽出する。その後、ステップS33に遷移する。
【0087】
[ステップS33] ソフトウェア改善情報生成部14は、ステップS32にて抽出したメソッドに対するアソシエーション解析の再実行をアソシエーション解析部115に依頼する。また、アソシエーション解析の再実行に基づいた電力傾向テーブル13aの生成を電力傾向情報生成部12に依頼する。その後、ステップS34に遷移する。
【0088】
[ステップS34] ソフトウェア改善情報生成部14は、電力傾向テーブル13aに追加されたメソッドパターンの欄のメソッドの組み合わせがソフトウェア改善テーブル15aに記憶されているか否かを判断する。電力傾向テーブル13aに追加されたメソッドパターンの欄のメソッドの組み合わせがソフトウェア改善テーブル15aに記憶されている場合(ステップS34のYes)、ステップS35に遷移する。電力傾向テーブル13aに追加されたメソッドパターンの欄のメソッドの組み合わせがソフトウェア改善テーブル15aに記憶されていない場合(ステップS34のNo)、ステップS37に遷移する。
【0089】
[ステップS35] ソフトウェア改善情報生成部14は、電力傾向テーブル13aに追加されたメソッドパターンの欄のメソッドの組み合わせの改善率と、電力傾向テーブル13aに追加されたメソッドの組み合わせに対応するソフトウェア改善テーブル15aのメソッドの改善率とを比較する。そして、電力傾向テーブル13aに追加されたメソッドの改善率が、ソフトウェア改善テーブル15aに記憶されているメソッドの改善率よりも高いか否かを判断する。電力傾向テーブル13aに追加されたメソッドの改善率が、ソフトウェア改善テーブル15aに記憶されているメソッドの改善率よりも高い場合(ステップS35のYes)、ステップS36に遷移する。電力傾向テーブル13aに追加されたメソッドの改善率が、ソフトウェア改善テーブル15aに記憶されているメソッドの改善率以下である場合(ステップS35のNo)、図18の処理を終了する。
【0090】
[ステップS36] ソフトウェア改善情報生成部14は、電力傾向テーブル13aに追加されたメソッドの組み合わせに対応するソフトウェア改善テーブル15aのメソッドの改善率を、電力傾向テーブル13aに追加されたメソッドの組み合わせの改善率で上書きする。その後、ステップS39に遷移する。
【0091】
[ステップS37] ソフトウェア改善情報生成部14は、電力傾向テーブル13aに追加されたメソッドの組み合わせおよび改善率と、ステップS31にて受け付けたソースコードとを関連づけてソフトウェア改善テーブル15aに記憶する。
【0092】
[ステップS38] ソフトウェア改善情報生成部14は、ステップS37にて追加したレコードの改善率と、ステップS37にて追加したレコードのソースコードと同じソースコードを持つソフトウェア改善テーブル15aのメソッドの改善率とを比較する。そして、電力傾向テーブル13aに追加されたメソッドの改善率が、ソフトウェア改善テーブル15aに記憶されているメソッドの改善率よりも高いか否かを判断する。電力傾向テーブル13aに追加されたメソッドの改善率が、ソフトウェア改善テーブル15aに記憶されているメソッドの改善率よりも高い場合(ステップS38のYes)、ステップS39に遷移する。電力傾向テーブル13aに追加されたメソッドの改善率が、ソフトウェア改善テーブル15aに記憶されているメソッドの改善率以下である場合(ステップS38のNo)、図18の処理を終了する。
【0093】
[ステップS39] アプリケーション開発部16は、ソースコードの書き換え部分の処理結果を示すポップアップを書き換え部分に付加する。その後、ソースコード書き換え処理を終了する。
【0094】
以上述べたように、設計支援装置10によれば、メソッドの組み合わせにアソシエーション解析を行ってメソッド毎の電力量増加への寄与を確率で計算し、電力傾向テーブル13aを生成した。これにより、線型近似を行って電力モデルを作成する場合等に比べ、複数のアプリケーションを何度も実行しなくてよいので、アプリケーションを実装した部分について迅速に電力量を見積もることができる。このため、設計者はソースコードを書き換えながらリアルタイムに消費電力に関連する改善率を確認することができる。設計者は改善率を確認することで、メソッドの組み合わせによる電力量増加の影響を判断することができる。
【0095】
また、設計支援装置10によれば、実機トレースログ201および実機電流ログ202を用いて電力傾向テーブル13aを生成するので、プログラムの処理単位毎の消費電力を測定する場合等に比べ、簡易に電力量を見積もることができる。
【0096】
ところで、設計者は、どのようなソースコードを書くとアプリケーションの消費電力量を下げることができるのかを判断することが難しい場合がある。以下、第3の実施の形態にて、アプリケーションの消費電力量を下げる手助けとなるソースコードの組み合わせを検索することができる設計支援装置の一例を説明する。
【0097】
<第3の実施の形態>
次に、第3の実施の形態の設計支援装置について説明する。
以下、第3の実施の形態の設計支援装置について、前述した第2の実施の形態との相違点を中心に説明し、同様の事項については、その説明を省略する。
【0098】
図19は、第3の実施の形態の設計支援装置を示す機能ブロック図である。
図19に示す第3の実施の形態の設計支援装置10aは、組み合わせ選択部17およびコード電力相関情報記憶部18をさらに有する。
【0099】
組み合わせ選択部17は、ソフトウェア改善テーブル15aを用いて、アプリケーションの消費電力量を下げる手助けとなるソースコードの組み合わせを検索する。具体的には、組み合わせ選択部17は、消費電力とソフトウェア改善テーブル15aを関連づけ、ソースコードと電力量と改善率とをまとめたコード電力相関情報を生成する。組み合わせ選択部17は、生成したコード電力関連情報をコード電力相関情報記憶部18に記憶する。
【0100】
図20は、コード電力相関情報の一例を示す図である。
図20に示すコード電力相関テーブル18aには、設計者により書き換えられたソースコードに対応するメソッド(図20中、「書き換えコード対応メソッド」と表記)と電力量と改善率とが関連づけられている。例えば、コード電力相関テーブル18aの1行目および2行目のレコードは、電力量888[μWs]のソフトウェア改善テーブル15aを用いて作成されたレコードであり、4行目のレコードは、電力量962[μWs]のソフトウェア改善テーブル15aを用いて作成されたレコードである。5行目のレコードは、3行目のレコードに記憶されたソースコードの書き換えと4行目のレコードに記憶されたレコードの書き換えを行った場合の電力量および改善率を示している。
【0101】
組み合わせ選択部17は、各行のレコードの内容を比較する。例えば、3、4行目のレコードと5行目のレコードとを比較する。組み合わせ選択部17は、比較により、5行目のレコードの書き換えコード対応メソッドを含むプログラムを設計者が作成することにより、3行目のレコードだけを用いたプログラムに比べ改善率は下がる(1.8→1.5)が、電力量は低くなる(962→888)ので、消費電力の観点から有効であると判断する。
【0102】
アプリケーション開発部16aは、検索したソースコードの組み合わせをモニタ104aに表示する。
図21は、第3の実施の形態のアプリケーション開発部が表示する画面の一例を示す図である。モニタ104aに表示された開発環境画面164は、設計中の開発環境の一例を示している。アプリケーション開発部16aは、ターゲット電力量を超える電力量となる確率が高いメソッドを含む部位165をポップアップする。図21では、一例として、部位165を点線で囲み、「高」がポップアップされている。また、部位165に含まれるメソッド165aを拡大して示している。
【0103】
組み合わせ選択部17は、設計者が部位165のソースコードを書き換えると、書き換えたソースコードの電力量の再計算をアソシエーション解析部115および電力傾向情報生成部12に依頼する。組み合わせ選択部17は、依頼によって得られた電力量を用いてコード電力相関テーブル18aを更新する。
【0104】
そして、組み合わせ選択部17は、設計者による部位165のソースコードの書き換えに対し、コード電力相関テーブル18aを用いて電力量が小さくなる可能性の高いソースコードに対応するメソッドの候補を選択する。アプリケーション開発部16aは、組み合わせ選択部17により選択されたメソッドの候補を示す吹き出し166を、部位165と関連づけてモニタ104aに表示する。これにより、設計者は、電力量が小さくなる可能性の高いソースコードに対応するメソッドの候補を把握することができる。
【0105】
次に、組み合わせ選択部17の処理を、フローチャートを用いて説明する。まず、組み合わせ選択部17がコード電力相関テーブル18aを生成する処理(コード電力相関テーブル生成処理)を説明する。
【0106】
図22は、コード電力相関テーブル生成処理を示すフローチャートである。
[ステップS41] 組み合わせ選択部17は、設計者が書き換えたソースコードを電力抽出対象のソースコードに設定する。その後、ステップS42に遷移する。
【0107】
[ステップS42] 組み合わせ選択部17は、ソフトウェア改善テーブル15aを参照し、ステップS41にて選択した電力抽出対象のソースコードに対応するメソッドの組み合わせを特定する。その後、ステップS43に遷移する。
【0108】
[ステップS43] 組み合わせ選択部17は、電力傾向テーブル13aのメソッドパターンの欄を参照し、ステップS42にて特定したメソッドの組み合わせに一致する組み合わせが電力傾向テーブル13aに存在するか否かを判断する。ステップS42にて特定したメソッドの組み合わせに一致する組み合わせが電力傾向テーブル13aに存在する場合(ステップS43のYes)、ステップS49に遷移する。ステップS42にて特定したメソッドの組み合わせに一致する組み合わせが電力傾向テーブル13aに存在しない場合(ステップS43のNo)、ステップS44に遷移する。
【0109】
[ステップS44] 組み合わせ選択部17は、ステップS42にて特定したメソッドの組み合わせのうち1つのメソッドを選択し、選択したメソッドを電力傾向テーブル13aから検索する。その後、ステップS45に遷移する。
【0110】
[ステップS45] 組み合わせ選択部17は、ステップS44にて選択したメソッドに一致するメソッドが、電力傾向テーブル13aに記憶されているか否かを判断する。ステップS44にて選択したメソッドに一致するメソッドが、電力傾向テーブル13aに記憶されている場合(ステップS45のYes)、ステップS46に遷移する。ステップS44にて選択したメソッドに一致するメソッドが、電力傾向テーブル13aに記憶されていない場合(ステップS45のNo)、コード電力相関テーブル生成処理を終了する。
【0111】
[ステップS46] 組み合わせ選択部17は、一致したメソッドの電力量PNを電力傾向テーブル13aから取得する。その後、ステップS47に遷移する。
[ステップS47] 組み合わせ選択部17は、取得した電力量PNを電力量Pに加算した電力量を新たな電力量Pとする。その後、ステップS48に遷移する。
【0112】
[ステップS48] 組み合わせ選択部17は、未処理の(ステップS45〜S47の処理を行っていない)メソッドが電力傾向テーブル13aに存在するか否かを判断する。未処理のメソッドが電力傾向テーブル13aに存在する場合(ステップS48のYes)、ステップS45に遷移し、ステップS45以降の処理を引き続き実行する。未処理のメソッドが電力傾向テーブル13aに存在しない場合(ステップS48のNo)、コード電力相関テーブル生成処理を終了する。
【0113】
[ステップS49] 組み合わせ選択部17は、一致したメソッドパターンに対応する電力量Pを取得する。その後、コード電力相関テーブル生成処理を終了する。
図22にて説明したように、電力傾向テーブル13aは、アソシエーション解析の結果生成されるテーブルであるため、メソッドの組み合わせまたはメソッド単体での電流値が得られる。
【0114】
また、ソフトウェア改善テーブル15aのメソッドは、ソースコードに対応している。このため、メソッドの組み合わせが電力傾向テーブル13aのメソッドパターンに一致した場合、電力傾向テーブル13aに記憶されている電力量を取り出す。また、メソッドの組み合わせが電力傾向テーブル13aのメソッドパターンに一致しない場合は、単体のメソッド毎に電力量を取得して加算する。
【0115】
図23は、コード電力相関テーブル生成処理の具体例を説明する図である。
図23に示すソフトウェア改善テーブル15aの1行目のレコードに記憶されているメソッドの組み合わせが、図23に示す電力傾向テーブル13aの1行目のレコードのメソッドパターンに一致する。この場合、組み合わせ選択部17は、電力傾向テーブル13aの1行目のレコードの電力量962[μWs]を、コード電力相関テーブル18aの電力量の欄に設定する。
【0116】
また、ソフトウェア改善テーブル15aの3行目のレコードに記憶されているメソッドの組み合わせは、電力傾向テーブル13aのメソッドパターンに一致するものが存在しない。このため、電力傾向テーブル13aの2行目のメソッドの電力量50[μWs]および4行目のメソッドそれぞれの電力量80[μWs]を加算することで、コード電力相関テーブル18aの電力量を取得する。
【0117】
次に、設計者がソースコードを書き換えたときの組み合わせ選択部17が実行するコード電力相関テーブル18aの更新処理を説明する。
図24は、コード電力相関テーブルの更新処理を示すフローチャートである。
【0118】
[ステップS51] 組み合わせ選択部17は、設計者により書き換えられたソースコードの入力を受け付ける。その後、ステップS52に遷移する。
[ステップS52] 組み合わせ選択部17は、ステップS51にて受け付けたソースコードを使用コードテーブル18bに記憶する。その後、ステップS53に遷移する。
【0119】
[ステップS53] 組み合わせ選択部17は、ステップS51にて受け付けたソースコードのアソシエーション解析の実行をアソシエーション解析部115に依頼する。アソシエーション解析部115から解析結果を受け取ると、ステップS54に遷移する。
【0120】
[ステップS54] 組み合わせ選択部17は、アソシエーション解析部115により解析された電力量を、ステップS51にて受け付けたソースコードと関連づけてコード電力相関テーブル18aに追加する。その後、図24に示す処理を終了する。
【0121】
次に、組み合わせ選択部17が、電力量が小さくなる可能性の高いソースコードの候補を生成する処理(最適ソースコード選定処理)を説明する。
図25、および図26は、最適ソースコード選定処理を示すフローチャートである。
【0122】
[ステップS61] 組み合わせ選択部17は、使用コードテーブル18bに記憶されている全てのソースコードを取得する。その後、ステップS62に遷移する。
[ステップS62] 組み合わせ選択部17は、コード電力相関テーブル18aを参照し、1つの書き換えコードの電力量Pを取得する。その後、ステップS63に遷移する。
【0123】
[ステップS63] 組み合わせ選択部17は、ステップS62にて取得した電力量Pを、使用コードテーブル18bに記憶されているソースコードの電力量の累計を示すパラメータP_baseに追加する。その後、ステップS64に遷移する。
【0124】
[ステップS64] 組み合わせ選択部17は、パラメータP_baseに電力量Pを追加していない(未処理の)ソースコードが存在するか否かを判断する。未処理のソースコードが存在する場合(ステップS64のYes)、ステップS62に遷移し、ステップS62以降の処理を引き続き実行する。未処理のソースコードが存在しない場合(ステップS64のNo)、ステップS65に遷移する。
【0125】
[ステップS65] 組み合わせ選択部17は、コード電力相関テーブル18aを参照し、ソースコードの組み合わせを作成する。その後、ステップS66に遷移する。
[ステップS66] 組み合わせ選択部17は、ステップS65にて作成したソースコードの組み合わせの電力量を加算した電力量P_combを計算する。その後、ステップS67に遷移する。
【0126】
[ステップS67] 組み合わせ選択部17は、ステップS66にて計算した電力量P_combがステップS63にて求めたパラメータP_baseより小さいか否かを判断する。電力量P_combがパラメータP_baseより小さい場合(ステップS67のYes)、ステップS68に遷移する。電力量P_combがパラメータP_base以上である場合(ステップS67のNo)、ステップS66に遷移する。
【0127】
[ステップS68] 組み合わせ選択部17は、パラメータP_baseの値を電力量P_combの値に設定する。その後、ステップS69に遷移する。
[ステップS69] 組み合わせ選択部17は、電力量P_combを作成していない(未処理の)ソースコードの組み合わせがコード電力相関テーブル18aに存在するか否かを判断する。未処理のソースコードの組み合わせがコード電力相関テーブル18aに存在する場合(ステップS69のYes)、ステップS66に遷移し、ステップS66以降の処理を引き続き実行する。未処理のソースコードの組み合わせがコード電力相関テーブル18aに存在しない場合(ステップS69のNo)、図26のステップS70に遷移する。
【0128】
[ステップS70] 組み合わせ選択部17は、コード電力相関テーブル18aの電力量の欄を参照し、同じ電力量を備える複数のソースコードの組み合わせが存在するか否かを判断する。同じ電力量を備える複数のソースコードの組み合わせが存在する場合(ステップS70のYes)、ステップS71に遷移する。同じ電力量を備える複数のソースコードの組み合わせが存在しない場合(ステップS70のNo)、最適ソースコード選定処理を終了する。
【0129】
[ステップS71] 組み合わせ選択部17は、コード電力相関テーブル18aの書き換えコードの欄を参照し、パラメータP_baseに該当するソースコードの組み合わせを1つ選択する。その後、ステップS72に遷移する。
【0130】
[ステップS72] 組み合わせ選択部17は、ステップS71にて選択したソースコードのメソッド数cnumを取得する。その後、ステップS73に遷移する。
[ステップS73] 組み合わせ選択部17は、最小メソッド数を算出するために用意したパラメータcode_numがメソッド数cnum以下であるか否かを判断する。パラメータcode_numがメソッド数cnum以下である場合(ステップS73のYes)、ステップS74に遷移する。パラメータcode_numがメソッド数cnumより大きい場合(ステップS74のNo)、ステップS72に遷移し、次のメソッド数cnumを取得する。
【0131】
[ステップS74] 組み合わせ選択部17は、メソッド数cnumをパラメータcode_numとする。その後、ステップS75に遷移する。
[ステップS75] 組み合わせ選択部17は、パラメータcode_numに対応するメソッドの組み合わせを選択する。その後、ステップS76に遷移する。
【0132】
[ステップS76] 組み合わせ選択部17は、未処理の(ステップS71〜S75の処理を行っていない)パラメータの組み合わせが、コード電力相関テーブル18aに存在するか否かを判断する。未処理のパラメータの組み合わせが、コード電力相関テーブル18aに存在する場合(ステップS76のYes)、ステップS71に遷移し、ステップS71以降の処理を引き続き実行する。未処理のパラメータの組み合わせが、コード電力相関テーブル18aに存在しない場合(ステップS76のNo)、最適ソースコード選定処理を終了する。
【0133】
最終的に得られるパラメータP_baseを満たすステップS75にて選択したソースコードの組み合わせが、最小の電力量のソースコードとなる。アプリケーション開発部16aは、最小の電力量のソースコードをモニタ104aに表示する。
【0134】
最適ソースコード選定処理では、書き換えられたソースコードだけの電力量を計算し、書き換え前のソースコードの電力量と比較することで、電力量を計算する手間を削減することができる。また、書き換え前のソースコードの電力量と書き換えられたソースコードの電力量とを比較するため、設計者は、目標電力の設定を省略することができる。
【0135】
第3の実施の形態の設計支援装置10aによれば、第2の実施の形態の設計支援装置と同様の効果が得られる。
そして、第3の実施の形態の設計支援装置10aによれば、設計者がソースコードを複数回書き換えた場合の履歴を記憶するコード電力相関テーブル18aを設けるようにした。そして、組み合わせ選択部17が最適コード選定処理を実行することにより、最小の電力量のソースコードを取得した。アプリケーション開発部16aが、取得された最小の電力量のソースコードに対するメソッドの候補を示す吹き出し166をモニタ104aに表示するようにした。設計者は、モニタ104aに表示された吹き出し166に記述されたメソッドを用いてプログラムを書き換えることで、プログラム全体を考慮した電力量の低減を図ることができる。
【0136】
また、組み合わせ選択部17が使用コードテーブル18bを生成し、最適コード選定処理にて用いるようにした。これにより、設計者は、ソースコードを複数回書き換えた場合においても、どのソースコードを書き換えることにより、現在の改善率や電力量が、目標としている改善率や電力量に近づくかを評価することができる。
【0137】
なお、設計支援装置10、10aが行った処理が、複数の装置によって分散処理されるようにしてもよい。例えば、1つの装置が、アソシエーション解析処理までを行ってアソシエーション解析情報115b〜115dを生成しておき、他の装置が、そのアソシエーション解析情報115b〜115dを用いて電力傾向テーブル13aを生成するようにしてもよい。
【0138】
以上、本発明の設計支援装置、設計支援方法および設計支援プログラムを、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
【0139】
また、本発明は、前述した各実施の形態のうちの、任意の2以上の構成(特徴)を組み合わせたものであってもよい。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、設計支援装置1、10、10aが有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記憶装置には、ハードディスクドライブ、フレキシブルディスク(FD)、磁気テープ等が挙げられる。光ディスクには、DVD、DVD−RAM、CD−ROM/RW等が挙げられる。光磁気記録媒体には、MO(Magneto-Optical disk)等が挙げられる。
【0140】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROM等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0141】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【0142】
また、上記の処理機能の少なくとも一部を、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)等の電子回路で実現することもできる。
【0143】
以上の第1〜第3の実施の形態に関し、さらに以下の付記を開示する。
(付記1) 所定のプログラムに記載された関数に統計解析を実行して前記プログラムに記載された関数それぞれを単独で実行した場合に比べ、所定の組み合わせで関数を実行した場合に消費電力量が改善する可能性があることを示す指標を計算し、前記指標を前記関数の組み合わせと関連づけた解析情報を作成する計算部と、
前記解析情報を記憶する記憶部と、
設計対象のプログラムに含まれるソースコードのうち、前記記憶部に記憶されている前記解析情報が備える関数の組み合わせを含むソースコードを検索する検索部と、
前記検索部の検索により得られたソースコードを他のソースコードと区別し得る態様で表示する表示部と、
を有することを特徴とする設計支援装置。
【0144】
(付記2) 前記計算部は、前記設計対象のプログラムのソースコードの変更に応じて、変更されたソースコードに対応する関数の組み合わせを前記記憶部に記憶されている解析情報から抽出し、抽出した関数の組み合わせについて再度統計解析を実行し、前記表示部は、変更されたソースコードに対応する関数の組み合わせで関数を実行した場合に消費する電力量の増減を示す値を表示することを特徴とする付記1記載の設計支援装置。
【0145】
(付記3) 前記指標は、前記関数の組み合わせを実行することにより前記プログラムに記載された関数それぞれを単独で実行した場合に消費する電力量を超える確率の大きさを識別する情報であり、前記検索部は、前記確率が一定以上の関数の組み合わせを含むソースコードを検索することを特徴とする付記1または2に記載の設計支援装置。
【0146】
(付記4) 前記計算部は、複数の電力量について前記解析情報を作成し、
前記検索部は、電力量の入力を受け付けると、受け付けた電力量の前記解析情報を用いてソースコードを検索することを特徴とする付記1ないし3のいずれかに記載の設計支援装置。
【0147】
(付記5) 前記計算部は、複数の電力量が設定された場合、設定された電力量毎に、少なくとも最も電力量が減少する関数の組み合わせを抽出した解析情報を作成することを特徴とする付記1ないし4のいずれかに記載の設計支援装置。
【0148】
(付記6) ソースコードが変更される度に変更されたソースコードと、変更されたソースコードに対応する関数の組み合わせの指標と、前記関数の組み合わせを実行した場合に消費する電力量とを関連づけて記憶した相関情報を作成する相関情報作成部と、
前記相関情報を記憶する記憶部と、
その後に変更されたソースコードの電力量を、記憶されている前記相関情報を用いて取得し、最も電力量が小さくなる関数の組み合わせを選択する選択部をさらに有し、
前記表示部は、前記選択部の選択により得られた関数の組み合わせを表示することを特徴とする付記1ないし5のいずれかに記載の設計支援装置。
【0149】
(付記7) ソースコードの変更に伴い電力量の低下を示す指標を、変更されたソースコードに含まれる関数の組み合わせと関連づけたコード改善情報を生成する生成部をさらに有し、
前記コード改善情報と前記解析情報とを用いて前記相関情報を作成することを特徴とする付記6記載の設計支援装置。
【0150】
(付記8) 前記選択部は、同じ電力量の関数の組み合わせが複数存在する場合、最も組み合わせの数が少ない関数の組み合わせを検索することを特徴とする付記6記載の設計支援装置。
【0151】
(付記9) ソースコードの変更に伴い電力量の低下を示す指標を、変更されたソースコードに含まれる関数の組み合わせと関連づけたコード改善情報を生成する生成部をさらに有することを特徴とする付記1記載の設計支援装置。
【0152】
(付記10) 前記統計解析はアソシエーション解析であることを特徴とする付記1ないし9のいずれかに記載の設計支援装置。
(付記11) 前記計算部は、プログラムの実行ログを用いて前記所定のプログラムに記載された関数それぞれを実行した場合に消費する電力量を計算することを特徴とする付記1ないし10のいずれかに記載の設計支援装置。
【0153】
(付記12) コンピュータが、
所定のプログラムに記載された関数に統計解析を実行して前記プログラムに記載された関数それぞれを単独で実行した場合に比べ、所定の組み合わせで関数を実行した場合に消費電力量が改善する可能性があることを示す指標を計算し、
計算した前記指標を前記関数の組み合わせと関連づけた解析情報を作成し、
設計対象のプログラムに含まれるソースコードのうち、記憶部に記憶された前記解析情報が備える関数の組み合わせを含むソースコードを検索し、
検索により得られたソースコードを他のソースコードと区別し得る態様で表示する、
ことを特徴とする設計支援方法。
【0154】
(付記13) コンピュータに、
所定のプログラムに記載された関数に統計解析を実行して前記プログラムに記載された関数それぞれを単独で実行した場合に比べ、所定の組み合わせで関数を実行した場合に消費電力量が改善する可能性があることを示す指標を計算し、
計算した前記指標を前記関数の組み合わせと関連づけた解析情報を作成し、
設計対象のプログラムに含まれるソースコードのうち、記憶部に記憶された前記解析情報が備える関数の組み合わせを含むソースコードを検索し、
検索により得られたソースコードを他のソースコードと区別し得る態様で表示する、
処理を実行させることを特徴とする設計支援プログラム。
【符号の説明】
【0155】
1、10、10a 設計支援装置
1a 計算部
1b 記憶部
1c 検索部
1b1 テーブル
1d 表示部
2 実行ログ
3 プログラム
3a、3b ソースコード
4 表示装置
11 解析部
111 マトリックス生成部
112 マトリックス記憶部
112a マトリックス
113 ソースコード・メソッド対応情報生成部
114 ソースコード・メソッド対応情報記憶部
114a ソースコード・メソッド対応テーブル
115 アソシエーション解析部
115a アソシエーション解析結果
115b〜115d アソシエーション解析情報
116 アソシエーション解析情報記憶部
12 電力傾向情報生成部
13 電力傾向情報記憶部
13a 電力傾向テーブル
14 ソフトウェア改善情報生成部
15 ソフトウェア改善情報記憶部
15a ソフトウェア改善テーブル
16、16a アプリケーション開発部
17 組み合わせ選択部
18 コード電力相関情報記憶部
18a コード電力相関テーブル
18b 使用コードテーブル
201 実機トレースログ
202 実機電流ログ
T1 テーブル

【特許請求の範囲】
【請求項1】
所定のプログラムに記載された関数に統計解析を実行して前記プログラムに記載された関数それぞれを単独で実行した場合に比べ、所定の組み合わせで関数を実行した場合に消費電力量が改善する可能性があることを示す指標を計算し、前記指標を前記関数の組み合わせと関連づけた解析情報を作成する計算部と、
前記解析情報を記憶する記憶部と、
設計対象のプログラムに含まれるソースコードのうち、前記記憶部に記憶されている前記解析情報が備える関数の組み合わせを含むソースコードを検索する検索部と、
前記検索部の検索により得られたソースコードを他のソースコードと区別し得る態様で表示する表示部と、
を有することを特徴とする設計支援装置。
【請求項2】
前記計算部は、前記設計対象のプログラムのソースコードの変更に応じて、変更されたソースコードに対応する関数の組み合わせを前記記憶部に記憶されている解析情報から抽出し、抽出した関数の組み合わせについて再度統計解析を実行し、前記表示部は、変更されたソースコードに対応する関数の組み合わせで関数を実行した場合に消費する電力量の増減を示す値を表示することを特徴とする請求項1記載の設計支援装置。
【請求項3】
前記指標は、前記関数の組み合わせを実行することにより前記プログラムに記載された関数それぞれを単独で実行した場合に消費する電力量を超える確率の大きさを識別する情報であり、前記検索部は、前記確率が一定以上の関数の組み合わせを含むソースコードを検索することを特徴とする請求項1または2に記載の設計支援装置。
【請求項4】
前記計算部は、複数の電力量について前記解析情報を作成し、
前記検索部は、電力量の入力を受け付けると、受け付けた電力量の前記解析情報を用いてソースコードを検索することを特徴とする請求項1ないし3のいずれかに記載の設計支援装置。
【請求項5】
前記計算部は、複数の電力量が設定された場合、設定された電力量毎に、少なくとも最も電力量が減少する関数の組み合わせを抽出した解析情報を作成することを特徴とする請求項1ないし4のいずれかに記載の設計支援装置。
【請求項6】
ソースコードが変更される度に変更されたソースコードと、変更されたソースコードに対応する関数の組み合わせの指標と、前記関数の組み合わせを実行した場合に消費する電力量とを関連づけて記憶した相関情報を作成する相関情報作成部と、
前記相関情報を記憶する記憶部と、
その後に変更されたソースコードの電力量を、記憶されている前記相関情報を用いて取得し、最も電力量が小さくなる関数の組み合わせを選択する選択部をさらに有し、
前記表示部は、前記選択部の選択により得られた関数の組み合わせを表示することを特徴とする請求項1ないし5のいずれかに記載の設計支援装置。
【請求項7】
ソースコードの変更に伴い電力量の低下を示す指標を、変更されたソースコードに含まれる関数の組み合わせと関連づけたコード改善情報を生成する生成部をさらに有し、
前記コード改善情報と前記解析情報とを用いて前記相関情報を作成することを特徴とする請求項6記載の設計支援装置。
【請求項8】
コンピュータが、
所定のプログラムに記載された関数に統計解析を実行して前記プログラムに記載された関数それぞれを単独で実行した場合に比べ、所定の組み合わせで関数を実行した場合に消費電力量が改善する可能性があることを示す指標を計算し、
計算した前記指標を前記関数の組み合わせと関連づけた解析情報を作成し、
設計対象のプログラムに含まれるソースコードのうち、記憶部に記憶された前記解析情報が備える関数の組み合わせを含むソースコードを検索し、
検索により得られたソースコードを他のソースコードと区別し得る態様で表示する、
ことを特徴とする設計支援方法。
【請求項9】
コンピュータに、
所定のプログラムに記載された関数に統計解析を実行して前記プログラムに記載された関数それぞれを単独で実行した場合に比べ、所定の組み合わせで関数を実行した場合に消費電力量が改善する可能性があることを示す指標を計算し、
計算した前記指標を前記関数の組み合わせと関連づけた解析情報を作成し、
設計対象のプログラムに含まれるソースコードのうち、記憶部に記憶された前記解析情報が備える関数の組み合わせを含むソースコードを検索し、
検索により得られたソースコードを他のソースコードと区別し得る態様で表示する、
処理を実行させることを特徴とする設計支援プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate


【公開番号】特開2013−109442(P2013−109442A)
【公開日】平成25年6月6日(2013.6.6)
【国際特許分類】
【出願番号】特願2011−252283(P2011−252283)
【出願日】平成23年11月18日(2011.11.18)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】