(57)【要約】【課題】プログラムによる消費電力に対する効率を評価するプログラムの評価プログラム、プログラムの評価装置、プログラムの評価方法を提供する。【解決手段】評価対象プログラムの評価をコンピュータに実行させる、プログラムの評価プログラムであって、評価対象プログラムの実行ログに基づいて、評価対象プログラム内のモジュールである対象モジュールが該対象モジュールの外部へ及ぼす影響の大きさを示す値である第１パラメータを計算する第１計算ステップと、実行ログに基づいて、対象モジュールの実行による消費電力に関する値である第２パラメータを計算する第２計算ステップと、第１パラメータ及び第２パラメータに基づいて、対象モジュールの評価を行い、該評価結果を出力する評価ステップとをコンピュータに実行させる。【選択図】図１
2008186163.tif 000002
【特許請求の範囲】
【請求項１】
評価対象プログラムの評価をコンピュータに実行させる、プログラムの評価プログラムであって、
前記評価対象プログラムの実行ログに基づいて、前記評価対象プログラム内のモジュールである対象モジュールが該対象モジュールの外部へ及ぼす影響の大きさを示す値である第１パラメータを計算する第１計算ステップと、
前記実行ログに基づいて、前記対象モジュールの実行による消費電力に関する値である第２パラメータを計算する第２計算ステップと、
前記第１パラメータ及び前記第２パラメータに基づいて、前記対象モジュールの評価を行い、該評価結果を出力する評価ステップと、
をコンピュータに実行させるプログラムの評価プログラム。
【請求項２】
請求項１に記載のプログラムの評価プログラムにおいて、
前記対象モジュールの外部で用いられる変数を外部変数とし、
前記第１計算ステップは、前記対象モジュールにおける前記外部変数の書き込みまたは読み出しの命令毎に所定の加算値を累積し、該累積の結果を前記対象モジュールの前記第１パラメータとすることを特徴とするプログラムの評価プログラム。
【請求項３】
請求項２に記載のプログラムの評価プログラムにおいて、
更に、前記第１計算ステップの前に、前記評価対象プログラムの構文解析により前記外部変数を抽出する抽出ステップをコンピュータに実行させることを特徴とするプログラムの評価プログラム。
【請求項４】
請求項１乃至請求項３のいずれかに記載のプログラムの評価プログラムにおいて、
更に、前記第１計算ステップの前に、前記評価対象プログラムの実行を行うことにより、実行ログを生成する実行ステップをコンピュータに実行させることを特徴とするプログラムの評価プログラム。
【請求項５】
請求項１乃至請求項４のいずれかに記載のプログラムの評価プログラムにおいて、
前記第２計算ステップは、前記対象モジュールにおいて命令毎に設定された消費電力を累積し、該累積の結果を前記対象モジュールの前記第２パラメータとすることを特徴とするプログラムの評価プログラム。
【請求項６】
評価対象プログラムの評価を行う、プログラムの評価装置であって、
前記評価対象プログラムの実行ログに基づいて、前記評価対象プログラム内のモジュールである対象モジュールが該対象モジュールの外部へ及ぼす影響の大きさを示す値である第１パラメータを計算する第１計算部と、
前記実行ログに基づいて、前記対象モジュールの実行による消費電力に関する値である第２パラメータを計算する第２計算部と、
前記第１パラメータ及び前記第２パラメータに基づいて、前記対象モジュールの評価を行い、該評価結果を出力する評価部と、
を備えるプログラムの評価装置。
【請求項７】
評価対象プログラムの評価を行う、プログラムの評価方法であって、
前記評価対象プログラムの実行ログに基づいて、前記評価対象プログラム内のモジュールである対象モジュールが該対象モジュールの外部へ及ぼす影響の大きさを示す値である第１パラメータを計算する第１計算ステップと、
前記実行ログに基づいて、前記対象モジュールの実行による消費電力に関する値である第２パラメータを計算する第２計算ステップと、
前記第１パラメータ及び前記第２パラメータに基づいて、前記対象モジュールの評価を行い、該評価結果を出力する評価ステップと、
を実行するプログラムの評価方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの評価を行うプログラムの評価プログラム、プログラムの評価装置、プログラムの評価方法に関するものである。
【背景技術】
【０００２】
組み込みシステムにおいては、低消費電力のニーズが高まっている。電池駆動の携帯端末等の場合、そのニーズはより高まる。一方、組み込みシステムにおけるソフトウェア開発の比重が高まっている。
【０００３】
ソフトウェア開発において、デバッガやシミュレーションが、ＣＰＵ（Central Processing Unit）の命令毎の発行頻度を測定する技術がある。これにより、命令レベルで、モジュール毎の消費電力の見積もりが可能となる。
【０００４】
なお、本発明の関連ある従来技術として、プロセッサ上で実行された命令と、その命令の実行中に消費された電力の関連付けを生成する技術がある（例えば、特許文献１参照）。また、コンピュータデバイスの電力管理状態に基づいて、ユーザが選択可能な複数の機能の中からソフトウェアアプリケーションが選択する技術がある（例えば、特許文献２参照）。
【特許文献１】特開２００５−２５７５４号公報
【特許文献２】特開２００４−５３０９７６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した消費電力の見積もりを行う場合、必要な電力と無駄な電力とを区別できない。ここで、必要な電力とは、画像の圧縮処理や伸張処理等により消費される電力であり、無駄な電力とは、ビジーウェイトやスピンロック等により消費される電力である。ソフトウェアの開発者は、どの部分を修正すれば良いかが分からない。
【０００６】
特許文献１の技術は、ハードウェアによりソフトウェアを実行させ、実際の消費電力をリアルタイムで測定するものであるが、必要な電力と無駄な電力とを区別する機能はない。また、特許文献２の技術は、選択可能な複数の機能に対する重要度が必要であり、重要度を算出する機能は無く、予め重要度を設定する必要がある。
【０００７】
このように現状では、ソフトウェアによる消費電力を評価する有効な指標が存在しない。
【０００８】
本発明は上述した問題点を解決するためになされたものであり、プログラムによる消費電力に対する効率を評価するプログラムの評価プログラム、プログラムの評価装置、プログラムの評価方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決するため、本発明は、評価対象プログラムの評価をコンピュータに実行させる、プログラムの評価プログラムであって、前記評価対象プログラムの実行ログに基づいて、前記評価対象プログラム内のモジュールである対象モジュールが該対象モジュールの外部へ及ぼす影響の大きさを示す値である第１パラメータを計算する第１計算ステップと、前記実行ログに基づいて、前記対象モジュールの実行による消費電力に関する値である第２パラメータを計算する第２計算ステップと、前記第１パラメータ及び前記第２パラメータに基づいて、前記対象モジュールの評価を行い、該評価結果を出力する評価ステップとをコンピュータに実行させる。
【００１０】
また、本発明は、評価対象プログラムの評価を行う、プログラムの評価装置であって、前記評価対象プログラムの実行ログに基づいて、前記評価対象プログラム内のモジュールである対象モジュールが該対象モジュールの外部へ及ぼす影響の大きさを示す値である第１パラメータを計算する第１計算部と、前記実行ログに基づいて、前記対象モジュールの実行による消費電力に関する値である第２パラメータを計算する第２計算部と、前記第１パラメータ及び前記第２パラメータに基づいて、前記対象モジュールの評価を行い、該評価結果を出力する評価部とを備える。
【００１１】
また、本発明は、評価対象プログラムの評価を行う、プログラムの評価方法であって、前記評価対象プログラムの実行ログに基づいて、前記評価対象プログラム内のモジュールである対象モジュールが該対象モジュールの外部へ及ぼす影響の大きさを示す値である第１パラメータを計算する第１計算ステップと、前記実行ログに基づいて、前記対象モジュールの実行による消費電力に関する値である第２パラメータを計算する第２計算ステップと、前記第１パラメータ及び前記第２パラメータに基づいて、前記対象モジュールの評価を行い、該評価結果を出力する評価ステップとを実行する。
【発明の効果】
【００１２】
本発明によれば、プログラムによる消費電力に対する効率を評価することができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施の形態について図面を参照しつつ説明する。
【００１４】
実施の形態１．
本実施の形態においては、評価の対象となるプログラムである評価対象プログラム内のモジュール毎に電力効率を算出する、プログラム評価装置（プログラムの評価装置）について説明する。
【００１５】
まず、本実施の形態に係るプログラム評価装置の構成について説明する。
【００１６】
図１は、本実施の形態に係るプログラム評価装置の構成の一例を示すブロック図である。このプログラム評価装置は、情報処理装置で実現される。また、このプログラム評価装置は、情報処理装置の制御部で実現される外部影響力計算部１３、電力計算部１４、電力効率計算部１５と、情報処理装置の記憶部で実現される外部変数情報記憶部２１、実行ログ記憶部２２、外部影響力記憶部２３、電力情報記憶部２４、電力プロファイル記憶部２５を備える。
【００１７】
次に、本実施の形態に係るプログラム評価装置の動作の概要について説明する。
【００１８】
評価対象プログラムのうち評価対象とするモジュールを対象モジュールとする。次に、外部影響力計算部１３は、外部変数情報記憶部２１に保存された対象モジュールの外部変数情報テーブルと、実行ログ記憶部２２に保存された対象モジュールの実行ログとに基づいて対象モジュールの外部影響力（第１パラメータ）を計算し、外部影響力情報として外部影響力情報記憶部２３に保存する外部影響力計算処理を行う（Ｓ１３）。次に、電力計算部１４は、予め設定された命令の種類毎の消費電力と実行ログ記憶部２２に保存された実行ログとに基づいて対象モジュールの消費電力（第２パラメータ）を計算し、電力情報として電力情報記憶部２４に保存する電力計算処理を行う（Ｓ１４）。次に、電力効率計算部１５は、外部影響力情報保存部２３に保存された外部影響力情報と電力情報記憶部２４に保存された電力情報とに基づいて対象モジュールの電力効率（評価結果）を計算し、電力プロファイルとして電力プロファイル記憶部２５に保存する電力効率計算処理を行い（Ｓ１５）、このフローは終了する。
【００１９】
次に、外部影響力計算処理について説明する。
【００２０】
対象モジュールの外部変数情報テーブルは、変数が外部変数であるか否かを判定するための情報であり、評価対象プログラムの仕様等に基づいて、予め設定される。ここで、対象とするモジュールの内部でのみ用いられる変数を内部変数とし、内部変数以外の変数（対象とするモジュールの外部で用いられる変数）を外部変数とする。図２は、本実施の形態に係る外部変数情報テーブルの一例を示す表である。１つのモジュールの外部変数情報テーブルには、モジュール名が記録され、そのモジュール内の変数毎に、変数名、変数の種類、アドレス範囲が記録される。変数の種類は、外部変数または内部変数である。この例は、モジュールｆｕｎｃ１の外部変数情報テーブルである。この外部変数情報テーブルによれば、変数ａは、参照先（ターゲットアドレス）がアドレス範囲であれば外部変数と判定され、変数ｂは、内部変数と判定され、返り値は、外部変数と判定される。
【００２１】
評価対象プログラムの実行ログは、予め外部のデバッガにより生成され、実行ログ記憶部２２に保存される。図３は、本実施の形態に係る実行ログの一例を示す図である。この実行ログは、サイクルの番号と実行命令を記録する。なお、プログラム評価装置がデバッガを備え、そのデバッガが評価対象プログラムの実行ログを作成し、実行ログ記憶部２２に保存しても良い。
【００２２】
外部影響力は、モジュール毎に計算される。外部変数のｌｏａｄ命令やｓｔｏｒｅ命令など、モジュール外部の読み出しや書き込みに対して所定の外部影響力が付与される。本実施の形態においては、モジュール外部への書き込みのみに対して外部影響力が付与される。また、外部影響力はモジュール毎に合計される。外部影響力計算部１３は、外部影響力計算処理前に、モジュール毎の外部影響力を０に初期化する。また、図４は、本実施の形態に係る外部影響力計算処理の動作の一例を示すＰＡＤである。ＰＡＤ（Problem Analysis Diagram）は、フローチャートと同様、プログラムの流れを表す図である。処理Ｓ４１のシンボルは、反復を表し、所定の条件まで右側のシンボルの処理を繰り返す。処理Ｓ４２のシンボルは、選択を表し、一致した条件の右側のシンボルの処理へ進む。処理Ｓ４３のシンボルは、通常の処理を表し、実行した後、下側のシンボルの処理へ進む。下側にシンボルが無い場合、反復の処理を繰り返す。
【００２３】
（Ｓ４１）外部影響力計算部１３は、実行ログから１サイクルずつの実行命令を読み出して処理Ｓ４２を行い、実行ログを読み終えるまで処理Ｓ４２を繰り返す。
【００２４】
（Ｓ４２）外部影響力計算部１３は、読み出した実行命令の判定を行う。
【００２５】
（Ｓ４３）実行命令がｃａｌｌ命令である場合（Ｓ４２，ｃａｌｌ命令）、外部影響力計算部１３は、対象モジュールを呼び出し先モジュールに切り替え、参照する外部変数情報テーブルを対象モジュールのものに切り替える。
【００２６】
（Ｓ４４）実行命令がｓｔｏｒｅ命令である場合（Ｓ４２，ｓｔｏｒｅ命令）、外部影響力計算部１３は、外部変数情報テーブルに基づいてｓｔｏｒｅ命令の変数が外部変数であるか否かの判断を行う。
【００２７】
（Ｓ４５）ｓｔｏｒｅ命令の変数が外部変数である場合（Ｓ４４，ｙｅｓ）、外部影響力計算部１３は、対象モジュールの外部影響力に１を加算する。
【００２８】
（Ｓ４６）実行命令が返り値レジスタ書き込みである場合（Ｓ４２，返り値レジスタ書き込み）、外部影響力計算部１３は、対象モジュールの外部影響力に１を加算する。
【００２９】
（Ｓ４７）実行命令がｒｅｔｕｒｎ命令である場合（Ｓ４２，ｒｅｔｕｒｎ命令）、外部影響力計算部１３は、対象モジュールを呼び出し元モジュールに切り替え、参照する外部変数情報テーブルを対象モジュールのものに切り替える。
【００３０】
図５は、本実施の形態に係る外部影響力計算処理の動作の一例を示す概念図である。図中の実行ログは、図３と同一であり、モジュールｆｕｎｃ１の実行を表す。まず、モジュールｆｕｎｃ１の外部影響力は、０に初期化される。サイクル１００１は、モジュールｆｕｎｃ１の呼び出しであるため（ｃａｌｌ命令）、対象モジュールがモジュールｆｕｎｃ１になる。サイクル１００２は、外部変数への書き込みであるため（ｓｔｏｒｅ命令）、モジュールｆｕｎｃ１の外部影響力に１が加算される。サイクル１００３は、内部変数への書き込みであるため（ｓｔｏｒｅ命令）、モジュールｆｕｎｃ１の外部影響力は変わらない。サイクル１００４は、返り値レジスタ書き込みであるため、モジュールｆｕｎｃ１の外部影響力に１が加算される。サイクル１００５は、ｒｅｔｕｒｎ命令であるため、対象モジュールが呼び出し元モジュールになる。この結果、モジュールｆｕｎｃ１の外部影響力は、２となる。
【００３１】
なお、本実施の形態においては、モジュール外部への書き込みのみに対して外部影響力が付与されるとしたが、モジュールへの入力が重要である場合等、モジュールの機能によっては、モジュール外部からの読み出しに対して外部影響力を付与しても良い。
【００３２】
上述した外部影響力計算処理によれば、評価対象プログラム内の各モジュールの外部影響力を算出することにより、評価対象プログラムに機能に必要な命令の処理量を取得することができる。
【００３３】
次に、電力計算処理について説明する。
【００３４】
電力計算部１４は、予め設定された命令の種類毎の消費電力と実行ログとに基づいて、モジュール毎の消費電力を算出する。本実施の形態において、電力計算部１４は、実行ログにおける演算命令１ステップの消費電力を１とし、モジュール内の消費電力を合計する。
【００３５】
上述した電力計算処理によれば、評価対象プログラム内の各モジュールの消費電力を取得することができる。
【００３６】
次に、電力効率計算処理について説明する。
【００３７】
電力効率計算部１５は、モジュール毎の外部影響力と消費電力から、モジュール毎の電力効率を算出し、モジュール毎の電力効率をまとめて電力プロファイルとする。ここでは、対象モジュールの電力効率を次のように定義する。
【００３８】
対象モジュールの電力効率
＝（対象モジュールの外部影響力）÷（対象モジュールの消費電力）
【００３９】
ここで、電力効率計算処理結果の具体例について説明する。ここでの評価対象プログラムは、マルチスレッド実行環境下で、ロック＊ｌｏｃｋを獲得後に＊ｃｏｕｎｔをインクリメントする機能を持つモジュールである。また、ここでは、同じ機能を持つ２種類の評価対象プログラムとしてモジュールＡとモジュールＢを用意する。
【００４０】
図６は、本実施の形態に係るモジュールＡの電力効率計算処理結果の一例を示す図である。この図は、モジュールＡのソースを１行ずつ表し、行毎の外部影響力と消費電力を表す。モジュールＡは、上述した機能をポーリング方式により実現したモジュールである。ここで、モジュールＡは、ロック獲得を試み続け、１０回目で獲得したとする。
【００４１】
図７は、本実施の形態に係るモジュールＢの電力効率計算処理結果の一例を示す図である。この図は、モジュールＢのソースを１行ずつ表し、行毎の外部影響力と消費電力を表す。モジュールＢは、上述した機能を割り込み方式により実現したモジュールである。ここで、モジュールＢは、ロック獲得に失敗後、ｗａｉｔ＿ｆｏｒ＿ｉｎｔｅｒｒｕｐｔ（）でスリープし、ロック解除を通知する割り込みで起床し、ロックを獲得する。
【００４２】
モジュールＡ及びモジュールＢにおいて、外部影響力は、外部変数＊ｃｏｕｎｔへの書き込みのみであり、外部影響力計算部１３は、＊ｃｏｕｎｔへの書き込みの回数を数えることにより外部影響力を算出する。ローカル変数ｖａｌとロック変数＊ｌｏｃｋは、内部変数であり、外部影響力に関係しない。また、電力計算部１４は、演算命令１ステップの消費電力を１とする。
【００４３】
外部影響力計算処理により、モジュールＡ及びモジュールＢの外部影響力は１となる。電力計算処理により、モジュールＡの消費電力は４１となり、モジュールＢの消費電力は８となる。電力効率計算処理により、モジュールＡの電力効率は１／４１＝２．４［％］となり、モジュールＢの電力効率は１／８＝１２．５［％］となる。従って、モジュールＡの電力効率よりモジュールＢの電力効率の方が大きいと判断できる。
【００４４】
なお、電力効率計算部１５は、上述したように複数のモジュールの外部影響力、消費電力、電力効率について比較を行い、比較結果を出力しても良い。
【００４５】
図８は、本実施の形態に係る電力プロファイルの一例を示す図である。この図は、上述したモジュールＢの電力プロファイルを示す。電力プロファイルには
モジュール名、外部影響力、消費電力、電力効率の値が記録される。なお、電力プロファイルにおいて、外部影響力、消費電力が記録されなくても良い。
【００４６】
上述した外部影響力計算処理によれば、単位消費電力あたりの外部影響力の大きさを電力効率として算出することができ、電力効率により評価対象プログラムの評価や比較を行うことができる。電力効率によれば、消費電力が外部に対して有効に利用されているか否かを判断することができる。
【００４７】
実施の形態２．
本実施の形態においては、評価対象プログラムから外部変数を抽出するプログラム評価装置について説明する。
【００４８】
まず、本実施の形態に係るプログラム評価装置の構成について説明する。
【００４９】
図９は、本実施の形態に係るプログラム評価装置の構成の一例を示すブロック図である。この図において、図１と同一符号は図１に示された対象と同一又は相当物を示しており、ここでの説明を省略する。この図は、図１と比較すると、新たに情報処理装置の制御部で実現される外部変数抽出部３１、情報処理装置の記憶部で実現されるプログラム記憶部４０を備え、外部影響力計算部１３の代わりに外部影響力計算部３３を備え、外部変数情報記憶部２１の代わりに外部変数情報記憶部４１を備える。
【００５０】
次に、本実施の形態に係るプログラム評価装置の動作の概要について説明する。
【００５１】
まず、外部変数抽出部３１は、プログラム記憶部４０に保存された評価対象プログラムのソースから外部変数を抽出し、外部変数情報テーブルとして外部変数情報記憶部４１に保存する外部変数抽出処理を行う（Ｓ１１）。次に、外部影響力計算部３３は、外部変数情報記憶部４１に保存された外部変数情報テーブルと、実行ログ記憶部２２に保存された評価対象プログラムの実行ログとに基づいて外部影響力を計算し、外部影響力情報として外部影響力情報記憶部２３に保存する外部影響力計算処理を行う（Ｓ１３）。処理Ｓ１４以降は、実施の形態１と同様である。
【００５２】
次に、外部変数抽出処理について説明する。
【００５３】
外部変数抽出処理は、コンパイラのソース解析技術を用いて実現される。また、外部変数抽出処理は、評価対象プログラム中のモジュール毎に行われる。内部変数とは、モジュールの内部だけで用いられる変数であり、外部変数とは、モジュールの外部で用いられる変数である。本実施の形態において、評価対象プログラムは、Ｃプログラムソースである。
【００５４】
図１０は、本実施の形態に係る外部変数抽出処理の動作の一例を示すＰＡＤである。
【００５５】
（Ｓ２１）外部変数抽出部３１は、Ｃプログラムソースを部分毎に読み出して処理Ｓ２２を行い、Ｃプログラムソースを読み終えるまで処理Ｓ２２を繰り返す。
【００５６】
（Ｓ２２）外部変数抽出部３１は、Ｃプログラムソースの構文解析を行い、変数を抽出して対象変数とし、処理Ｓ２３へ移行する。
【００５７】
（Ｓ２３）外部変数抽出部３１は、対象変数の判定を行う。
【００５８】
（Ｓ３１）対象変数が、グローバル変数かｓｔａｔｉｃ変数である場合（Ｓ２３，グローバル変数かｓｔａｔｉｃ変数）、外部変数抽出部３１は、対象変数が他モジュールから参照可能であるか否かの判断を行う。
【００５９】
（Ｓ３２）対象変数が他モジュールから参照可能である場合（Ｓ３１，ｙｅｓ）、外部変数抽出部３１は、対象変数が同期のための変数（ロック、シグナル）であるか否かの判断を行う。
【００６０】
（Ｓ３３）対象変数が同期のための変数である場合（Ｓ３２，ｙｅｓ）、外部変数抽出部３１は、対象変数の外部変数登録処理を行う。
【００６１】
（Ｓ３４）対象変数がヒープ領域の変数である場合（Ｓ２３，ヒープ領域の変数）、外部変数抽出部３１は、対象変数が関数リターン後に存続するか否かの判断を行う。
【００６２】
（Ｓ３５）対象変数が関数リターン後に存続する場合（Ｓ３４，ｙｅｓ）、外部変数抽出部３１は、対象変数の外部変数登録処理を行う。
【００６３】
（Ｓ３６）対象変数のアドレスの参照先がローカル変数でない場合（Ｓ２３，アドレスの参照先がローカル変数でない）、外部変数抽出部３１は、対象変数の外部変数登録処理を行う。
【００６４】
（Ｓ３７）対象変数が関数の戻り値である場合（Ｓ２３，関数の戻り値）、外部変数抽出部３１は、対象変数の外部変数登録処理を行う。
【００６５】
次に、外部変数登録処理について説明する。図１１は、本実施の形態に係る外部変数登録処理の動作の一例を示すＰＡＤである。
【００６６】
（Ｓ３８）外部変数抽出部３１は、対象変数のアドレス範囲を計算する。ここで、スタック上の変数は、スタックレジスタやフレームポインタからのオフセットアドレスとして表現される。
【００６７】
（Ｓ３９）対象変数の変数名とアドレスをモジュール毎に外部変数情報テーブルとして出力する。
【００６８】
上述した外部変数抽出処理によれば、各モジュールにおいて外部に影響を与える変数を自動的に抽出することができる。
【００６９】
実施の形態３．
本実施の形態においては、変数毎の重み付けに基づいて外部影響力を計算するプログラム評価装置について説明する。
【００７０】
本実施の形態に係るプログラム評価装置の構成、及び動作の概要は、実施の形態１と同様であるが、外部影響力計算処理が異なる。
【００７１】
次に、外部影響力計算処理について説明する。
【００７２】
外部変数情報記憶部２１に保存された外部変数に対して、予め外部影響力の重み付けが設定され、外部影響力テーブルとして外部変数情報記憶部２１に保存される。図１２は、本実施の形態に係る外部影響度テーブルの一例を示す表である。この例は、モジュールｆｕｎｃ１の外部影響度テーブルであり、変数ａ、変数ｅｒｒｏｒ、返り値の外部影響力が設定されている。変数ａは、他から２回参照されるため、外部影響力は２と設定される。変数ｅｒｒｏｒは、エラー通知のため、外部影響力は１０と設定される。返り値の外部影響力は１と設定される。なお、参照される回数、エラー通知、戻り値など、変数の種類が設定され、外部影響度テーブルとして変数の種類毎に外部影響度が設定されても良い。
【００７３】
図１３は、本実施の形態に係る外部影響力計算処理の動作の一例を示すＰＡＤである。この図において、図４と同一符号は図４に示された対象と同一又は相当処理を示しており、ここでの説明を省略する。この図は、図４と比較すると、処理Ｓ４５の代わりに処理Ｓ５１が実行され、処理Ｓ４６の代わりに処理Ｓ５４が実行される。
【００７４】
（Ｓ５１）処理Ｓ４４においてｓｔｏｒｅ命令の変数が外部変数である場合（Ｓ４４，ｙｅｓ）、外部影響力計算部１３は、その外部変数を対象変数とし、対象変数が他から参照されるか否かの判断を行う。
【００７５】
（Ｓ５２）対象変数が他から参照される場合（Ｓ５１，ｙｅｓ）、外部影響力計算部１３は、対象変数が参照される前に書き換えられないかどうかの判断を行う。
【００７６】
（Ｓ５３）対象変数が参照される前に書き換えられない場合（Ｓ５２，ｙｅｓ）、外部影響力計算部１３は、外部影響力テーブルを参照し、対象変数に対応する外部影響力を対象モジュールの外部影響力に加算する。
【００７７】
（Ｓ５４）処理Ｓ４２において実行命令が返り値レジスタ書き込みである場合（Ｓ４２，返り値レジスタ書き込み）、外部影響力計算部１３は、その外部変数を対象変数とし、対象変数が他から参照されるか否かの判断を行う。
【００７８】
（Ｓ５５）対象変数が他から参照される場合（Ｓ５４，ｙｅｓ）、外部影響力計算部１３は、外部影響力テーブルを参照し、対象変数に対応する外部影響力を対象モジュールの外部影響力に加算する。
【００７９】
この外部影響力計算処理によれば、予め設定された変数毎の重み付けに従って外部影響力を与えることにより、実際の外部への影響をより良く表すことができる。
【００８０】
実施の形態４．
本実施の形態においては、モジュール間の呼び出し関係を用いるプログラム評価装置について説明する。
【００８１】
本実施の形態に係るプログラム評価装置の構成、及び動作の概要は、実施の形態１と同様であるが、外部影響力計算処理、電力計算処理、電力効率計算処理が異なる。
【００８２】
次に、外部影響力計算処理について説明する。
【００８３】
図１４は、本実施の形態に係る外部影響力計算処理の動作の一例を示すＰＡＤである。この図において、図４と同一符号は図４に示された対象と同一又は相当処理を示しており、ここでの説明を省略する。この図は、図４と比較すると、処理Ｓ４３の代わりに処理Ｓ６１が実行され、処理Ｓ４４の代わりに処理Ｓ６２が実行され、処理Ｓ４７の代わりに処理Ｓ６５が実行される。外部影響力計算部１３は、外部影響力計算処理前に、モジュール毎の外部影響力を０に初期化し、外部変数情報テーブルリストを初期化する。
【００８４】
（Ｓ６１）処理Ｓ４２において実効命令がｃａｌｌ命令である場合（Ｓ４２，ｃａｌｌ命令）、外部影響力計算部１３は、対象モジュール用の外部変数情報テーブルを外部変数情報テーブルリストに追加する。
【００８５】
（Ｓ６２）処理Ｓ４２において実効命令がｓｔｏｒｅ命令である場合（Ｓ４２，ｓｔｏｒｅ命令）、外部影響力計算部１３は、外部変数情報テーブルリストから１つずつ外部変数情報テーブルを選択し、選択した外部変数情報テーブルのモジュールを関連モジュールとし、処理Ｓ６３を行う。以後、外部影響力計算部１３は、外部変数情報テーブルリストにおける全ての外部変数情報テーブルについて繰り返す。ここで、関連モジュールは、対象モジュールと、呼び出し関係において対象モジュールの上位のモジュールを含む。
【００８６】
（Ｓ６３）外部影響力計算部１３は、ｓｔｏｒｅ命令の変数が関連モジュールの外部変数であるか否かの判断を行う。
【００８７】
（Ｓ６４）ｓｔｏｒｅ命令の変数が関連モジュールの外部変数である場合（Ｓ６３，ｙｅｓ）、外部影響力計算部１３は、関連モジュールの外部影響力に１を加算する。
【００８８】
（Ｓ６５）処理Ｓ４２において実効命令がｒｅｔｕｒｎ命令である場合（Ｓ４２，ｒｅｔｕｒｎ命令）、外部影響力計算部１３は、対象モジュール用の外部変数情報テーブルを外部変数情報テーブルリストから削除する。
【００８９】
この外部影響力計算処理によれば、外部影響力計算部１３は、対象モジュールとそれに呼び出される下位階層モジュール（サブモジュール）の外部変数情報テーブルをリストとして保持する。これにより、外部影響力計算部１３は、実施の形態１と同様にして対象モジュールとそれが呼び出す下位階層モジュールとを含む全体の外部影響力を算出すると共に、対象モジュールだけの外部影響力、下位階層モジュールだけの外部影響力を算出する。
【００９０】
次に、電力計算処理について説明する。
【００９１】
電力計算部１４は、外部影響力計算処理と同様、実施の形態１と同様にして対象モジュールとそれに呼び出される下位階層モジュールとを含む対象モジュール全体の消費電力を算出すると共に、対象モジュールだけの消費電力、下位階層モジュールだけの消費電力を算出する。
【００９２】
次に、電力効率計算処理について説明する。
【００９３】
電力効率計算部１５は、外部影響力計算処理及び電力計算処理の結果から、実施の形態１と同様にして対象モジュールとそれに呼び出される下位階層モジュールとを含む対象モジュール全体の電力効率を算出すると共に、対象モジュールだけの電力効率、下位階層モジュールだけの電力効率を算出する。
【００９４】
図１５は、本実施の形態に係るモジュールＢの電力効率計算処理結果の一例を示す図である。この電力効率計算結果は、外部影響力、消費電力、電力効率を示す。これらの値は、対象モジュール全体（Ｔｏｔａｌ）、対象モジュールだけ（Ｓｅｌｆ）、下位階層モジュールだけ（Ｃｈｉｌｄ）についてそれぞれ算出される。
【００９５】
この電力効率計算処理によれば、サブモジュール間の通信ばかりに電力を使って、実質的な仕事をしていないケースを検出することができる。
【００９６】
実施の形態５．
本実施の形態においては、デバッガ１２が外部変数の判定を行うプログラム評価装置について説明する。
【００９７】
まず、本実施の形態に係るプログラム評価装置の構成について説明する。
【００９８】
図１６は、本実施の形態に係るプログラム評価装置の構成の一例を示すブロック図である。この図において、図９と同一符号は図９に示された対象と同一又は相当物を示しており、ここでの説明を省略する。この図は、図９と比較すると、新たに情報処理装置の制御部で実現されるデバッガ５２を備え、外部影響力計算部３３の代わりに外部影響力計算部５３を備え、実行ログ記憶部２２の代わりに実行ログ記憶部６２を備える。
【００９９】
次に、本実施の形態に係るプログラム評価装置の動作の概要について説明する。
【０１００】
まず、実施の形態２と同様の処理Ｓ１１が行われる。次に、デバッガ５２は、プログラム記憶部４０に保存された評価対象プログラムの実行を行うことにより実行ログを生成し、実行ログ記憶部６２に保存する実行ログ生成処理を行う（Ｓ１２）。次に、外部影響力計算部５３は、実行ログ記憶部６２に保存された実行ログに基づいて外部影響力を計算し、外部影響力情報として外部影響力情報記憶部２３に保存する外部影響力計算処理を行う（Ｓ１３）。処理Ｓ１４以降は、実施の形態１と同様である。
【０１０１】
次に、実行ログ生成処理について説明する。
【０１０２】
従来のデバッガを本発明に適用する場合、メモリへの書き込み毎のターゲットアドレスを実行ログに出力することが必要となる。図１７は、従来のデバッガにより出力される実行ログの一例を示す図である。この実行ログは、サイクルの番号、命令アドレス、実行命令、ターゲットアドレスが、サイクル毎に記録される。しかしながら、全てのターゲットアドレスを実行ログに出力すると、実行ログのサイズが大きくなり処理時間が掛かるという問題がある。
【０１０３】
これに対して、デバッガ５２は、従来のデバッガと同様に取得した実行命令、ターゲットアドレス、外部変数情報記憶部４１の外部変数情報テーブルに基づいて、実行命令が外部変数の読み出しまたは書き込みであると判定した場合にカウントし、実行ログに記録する。本実施の形態におけるデバッガ５２は、外部変数の書き込みのみをカウントする。図１８は、本実施の形態に係るデバッガにより出力される実行ログの一例を示す図である。この実行ログは、上述した従来の実行ログと比較すると、ターゲットアドレスの代わりにモジュール外部への書き込み回数を記録する。このデバッガ５２によれば、実行ログのサイズを抑えることができる。
【０１０４】
次に、外部影響力計算処理について説明する。
【０１０５】
外部影響力計算部５３は、実施の形態１と同様の外部影響力計算処理を行うが、実行ログに外部への書き込み回数を記録しているため、外部変数情報テーブルを用いて外部変数であるか否かの判断を行う必要がない。
【０１０６】
この実行ログ生成処理及び外部影響力計算処理によれば、モジュール外部への影響を及ぼす部分をデバッガが検出することにより、外部影響力計算処理の負荷を低減し、プログラム評価装置全体の効率を向上させることができる。
【０１０７】
なお、第１計算ステップは、実施の形態における外部影響力計算処理に対応する。また、第２計算ステップは、実施の形態における電力計算処理に対応する。また、評価ステップは、実施の形態における電力効率計算処理に対応する。また、抽出ステップは、実施の形態における外部変数抽出処理に対応する。また、実行ステップは、実施の形態における実行ログ生成処理に対応する。
【０１０８】
また、第１計算部は、実施の形態における外部影響力計算部に対応する。また、第２計算部は、実施の形態における電力計算部に対応する。また、評価部は、実施の形態における電力効率計算部に対応する。また、抽出部は、実施の形態における外部変数抽出部に対応する。また、実行ステップは、実施の形態におけるデバッガに対応する。
【０１０９】
また、本実施の形態に係るプログラムの評価装置は、情報処理装置に容易に適用することができ、情報処理装置の性能をより高めることができる。ここで、情報処理装置には、例えばＰＣ（Personal Computer）、サーバ、ワークステーション等が含まれ得る。
【０１１０】
更に、プログラムの評価装置を構成するコンピュータにおいて上述した各ステップを実行させるプログラムを、プログラムの評価プログラムとして提供することができる。上述したプログラムは、コンピュータにより読取り可能な記録媒体に記憶させることによって、プログラムの評価装置を構成するコンピュータに実行させることが可能となる。ここで、上記コンピュータにより読取り可能な記録媒体としては、ＲＯＭやＲＡＭ等のコンピュータに内部実装される内部記憶装置、ＣＤ−ＲＯＭやフレキシブルディスク、ＤＶＤディスク、光磁気ディスク、ＩＣカード等の可搬型記憶媒体や、コンピュータプログラムを保持するデータベース、或いは、他のコンピュータ並びにそのデータベースや、更に回線上の伝送媒体をも含むものである。
【０１１１】
（付記１）  評価対象プログラムの評価をコンピュータに実行させる、プログラムの評価プログラムであって、
前記評価対象プログラムの実行ログに基づいて、前記評価対象プログラム内のモジュールである対象モジュールが該対象モジュールの外部へ及ぼす影響の大きさを示す値である第１パラメータを計算する第１計算ステップと、
前記実行ログに基づいて、前記対象モジュールの実行による消費電力に関する値である第２パラメータを計算する第２計算ステップと、
前記第１パラメータ及び前記第２パラメータに基づいて、前記対象モジュールの評価を行い、該評価結果を出力する評価ステップと、
をコンピュータに実行させるプログラムの評価プログラム。
（付記２）  付記１に記載のプログラムの評価プログラムにおいて、
前記対象モジュールの外部で用いられる変数を外部変数とし、
前記第１計算ステップは、前記対象モジュールにおける前記外部変数の書き込みまたは読み出しの命令毎に所定の加算値を累積し、該累積の結果を前記対象モジュールの前記第１パラメータとすることを特徴とするプログラムの評価プログラム。
（付記３）  付記２に記載のプログラムの評価プログラムにおいて、
前記加算値は、変数の種類毎に設定されることを特徴とするプログラムの評価プログラム。
（付記４）  付記２または付記３に記載のプログラムの評価プログラムにおいて、
前記第１計算ステップは、設定された外部変数の条件と前記実行ログとに基づいて、前記外部変数を検出することを特徴とするプログラムの評価プログラム。
（付記５）  付記２乃至付記４のいずれかに記載のプログラムの評価プログラムにおいて、
更に、前記第１計算ステップの前に、前記評価対象プログラムの構文解析により前記外部変数を抽出する抽出ステップをコンピュータに実行させることを特徴とするプログラムの評価プログラム。
（付記６）  付記５に記載のプログラムの評価プログラムにおいて、
前記抽出ステップは、前記対象モジュールの変数について、該変数の定義、該変数のアドレスの参照先、該変数が関数の戻り値であること、の少なくともいずれかに基づいて、前記外部変数であるか否かの判定を行うことを特徴とするプログラムの評価プログラム。
（付記７）  付記２乃至付記６のいずれかに記載のプログラムの評価プログラムにおいて、
更に、前記第１計算ステップの前に、前記評価対象プログラムの実行を行うことにより、実行ログを生成する実行ステップをコンピュータに実行させることを特徴とするプログラムの評価プログラム。
（付記８）  付記７に記載のプログラムの評価プログラムにおいて、
前記実行ステップは、前記実行により命令毎のターゲットアドレスを取得し、該命令と該命令のターゲットアドレスと設定された外部変数の条件とに基づいて前記外部変数の書き込みまたは読み出しの命令の検出を行い、該検出結果を実行ログに記録することを特徴とするプログラムの評価プログラム。
（付記９）  付記４または付記８に記載のプログラムの評価プログラムにおいて、
前記外部変数の条件は、アドレスの範囲であることを特徴とするプログラムの評価プログラム。
（付記１０）  付記１乃至付記９のいずれかに記載のプログラムの評価プログラムにおいて、
前記第２計算ステップは、前記対象モジュールにおいて命令毎に設定された消費電力を累積し、該累積の結果を前記対象モジュールの前記第２パラメータとすることを特徴とするプログラムの評価プログラム。
（付記１１）  付記１乃至付記１０のいずれかに記載のプログラムの評価プログラムにおいて、
前記評価ステップは、前記対象モジュールの前記第１パラメータを前記対象モジュールの前記第２パラメータで除算し、該除算の結果を前記対象モジュールの評価結果として出力することを特徴とするプログラムの評価プログラム。
（付記１２）  付記１乃至付記１１のいずれかに記載のプログラムの評価プログラムにおいて、
前記評価ステップは、前記第１パラメータ、前記第２パラメータ、前記評価結果の少なくともいずれかを用いて、複数の対象モジュールの比較を行うことを特徴とするプログラムの評価プログラム。
（付記１３）  付記１乃至付記１２のいずれかに記載のプログラムの評価プログラムにおいて、
前記第１計算ステップは、前記対象モジュールの第１パラメータと、該対象モジュールに呼び出されるモジュールの第１パラメータとを計算し、
前記第２計算ステップは、前記対象モジュールの第２パラメータと、該対象モジュールに呼び出されるモジュールの第２パラメータとを計算し、
前記第３計算ステップは、前記対象モジュールの評価結果と、該対象モジュールに呼び出されるモジュールの評価結果とを出力することを特徴とするプログラムの評価プログラム。
（付記１４）  評価対象プログラムの評価を行う、プログラムの評価装置であって、
前記評価対象プログラムの実行ログに基づいて、前記評価対象プログラム内のモジュールである対象モジュールが該対象モジュールの外部へ及ぼす影響の大きさを示す値である第１パラメータを計算する第１計算部と、
前記実行ログに基づいて、前記対象モジュールの実行による消費電力に関する値である第２パラメータを計算する第２計算部と、
前記第１パラメータ及び前記第２パラメータに基づいて、前記対象モジュールの評価を行い、該評価結果を出力する評価部と、
を備えるプログラムの評価装置。
（付記１５）  付記１４に記載のプログラムの評価装置において、
前記対象モジュールの外部で用いられる変数を外部変数とし、
前記第１計算部は、前記対象モジュールにおける前記外部変数の書き込みまたは読み出しの命令毎に所定の加算値を累積し、該累積の結果を前記対象モジュールの前記第１パラメータとすることを特徴とするプログラムの評価装置。
（付記１６）  付記１５に記載のプログラムの評価装置において、
更に、前記評価対象プログラムの構文解析により前記外部変数を抽出する抽出部を備えることを特徴とするプログラムの評価装置。
（付記１７）  付記１４乃至付記１６のいずれかに記載のプログラムの評価装置において、
更に、前記評価対象プログラムの実行を行うことにより、実行ログを生成する実行部を備えることを特徴とするプログラムの評価装置。
（付記１８）  付記１４乃至付記１７のいずれかに記載のプログラムの評価装置において、
前記第２計算部は、前記対象モジュールにおいて命令毎に設定された消費電力を累積し、該累積の結果を前記対象モジュールの前記第２パラメータとすることを特徴とするプログラムの評価装置。
（付記１９）  付記１４乃至付記１８のいずれかに記載のプログラムの評価装置において、
前記評価部は、前記対象モジュールの前記第１パラメータを前記対象モジュールの前記第２パラメータで除算し、該除算の結果を前記対象モジュールの評価結果として出力することを特徴とするプログラムの評価装置。
（付記２０）  評価対象プログラムの評価を行う、プログラムの評価方法であって、
前記評価対象プログラムの実行ログに基づいて、前記評価対象プログラム内のモジュールである対象モジュールが該対象モジュールの外部へ及ぼす影響の大きさを示す値である第１パラメータを計算する第１計算ステップと、
前記実行ログに基づいて、前記対象モジュールの実行による消費電力に関する値である第２パラメータを計算する第２計算ステップと、
前記第１パラメータ及び前記第２パラメータに基づいて、前記対象モジュールの評価を行い、該評価結果を出力する評価ステップと、
を実行するプログラムの評価方法。
【図面の簡単な説明】
【０１１２】
【図１】実施の形態１に係るプログラム評価装置の構成の一例を示すブロック図である。
【図２】実施の形態１に係る外部変数情報テーブルの一例を示す表である。
【図３】実施の形態１に係る実行ログの一例を示す図である。
【図４】実施の形態１に係る外部影響力計算処理の動作の一例を示すＰＡＤである。
【図５】実施の形態１に係る外部影響力計算処理の動作の一例を示す概念図である。
【図６】実施の形態１に係るモジュールＡの電力効率計算処理結果の一例を示す図である。
【図７】実施の形態１に係るモジュールＢの電力効率計算処理結果の一例を示す図である。
【図８】実施の形態１に係る電力プロファイルの一例を示す図である。
【図９】実施の形態２に係るプログラム評価装置の構成の一例を示すブロック図である。
【図１０】実施の形態２に係る外部変数抽出処理の動作の一例を示すＰＡＤである。
【図１１】実施の形態２に係る外部変数登録処理の動作の一例を示すＰＡＤである。
【図１２】実施の形態３に係る外部影響度テーブルの一例を示す表である。
【図１３】実施の形態３に係る外部影響力計算処理の動作の一例を示すＰＡＤである。
【図１４】実施の形態４に係る外部影響力計算処理の動作の一例を示すＰＡＤである。
【図１５】実施の形態４に係るモジュールＢの電力効率計算処理結果の一例を示す図である。
【図１６】実施の形態５に係るプログラム評価装置の構成の一例を示すブロック図である。
【図１７】従来のデバッガにより出力される実行ログの一例を示す図である。
【図１８】実施の形態５に係るデバッガにより出力される実行ログの一例を示す図である。
【符号の説明】
【０１１３】
１３，３３，５３  外部影響力計算部、１４  電力計算部、１５  電力効率計算部、２１，４１  外部変数情報記憶部、２２，６２  実行ログ記憶部、２３  外部影響力記憶部、２４  電力情報記憶部、２５  電力プロファイル記憶部、３１  外部変数抽出部、４０  プログラム記憶部、５２  デバッガ。
【図１】
2008186163.tif 000003
【図２】
2008186163.tif 000004
【図３】
2008186163.tif 000005
【図４】
2008186163.tif 000006
【図５】
2008186163.tif 000007
【図６】
2008186163.tif 000008
【図７】
2008186163.tif 000009
【図８】
2008186163.tif 000010
【図９】
2008186163.tif 000011
【図１０】
2008186163.tif 000012
【図１１】
2008186163.tif 000013
【図１２】
2008186163.tif 000014
【図１３】
2008186163.tif 000015
【図１４】
2008186163.tif 000016
【図１５】
2008186163.tif 000017
【図１６】
2008186163.tif 000018
【図１７】
2008186163.tif 000019
【図１８】
2008186163.tif 000020