JP2009075965A - ソフトウェア開発方法及びソフトウェア開発装置 - Google Patents
ソフトウェア開発方法及びソフトウェア開発装置 Download PDFInfo
- Publication number
- JP2009075965A JP2009075965A JP2007245946A JP2007245946A JP2009075965A JP 2009075965 A JP2009075965 A JP 2009075965A JP 2007245946 A JP2007245946 A JP 2007245946A JP 2007245946 A JP2007245946 A JP 2007245946A JP 2009075965 A JP2009075965 A JP 2009075965A
- Authority
- JP
- Japan
- Prior art keywords
- power consumption
- power
- unit
- function
- software development
- 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.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Power Sources (AREA)
- Debugging And Monitoring (AREA)
Abstract
【課題】省電力化が可能なソフトウェアを開発するソフトウェア開発方法を提供する。
【解決手段】シミュレーション部11が、ソフトウェアのシミュレーション時に、関数またはタスクからハードウェアリソースへのアクセスを検知すると、予め測定された各ハードウェアリソースの単位消費電力量を格納した消費電力情報テーブルT1を参照して、ハードウェアリソースの単位消費電力量をもとに消費電力を計算し、電力情報作成部12が、消費電力の計算結果をもとに関数またはタスクごとの消費電力を求め、関数またはタスクごとの消費電力をもとにした電力情報を作成し、表示処理部13が、電力情報を表示装置13aに表示させる。
【選択図】図1
【解決手段】シミュレーション部11が、ソフトウェアのシミュレーション時に、関数またはタスクからハードウェアリソースへのアクセスを検知すると、予め測定された各ハードウェアリソースの単位消費電力量を格納した消費電力情報テーブルT1を参照して、ハードウェアリソースの単位消費電力量をもとに消費電力を計算し、電力情報作成部12が、消費電力の計算結果をもとに関数またはタスクごとの消費電力を求め、関数またはタスクごとの消費電力をもとにした電力情報を作成し、表示処理部13が、電力情報を表示装置13aに表示させる。
【選択図】図1
Description
本発明はソフトウェア開発方法及びソフトウェア開発装置に関し、特に省電力化が可能なソフトウェアを開発するソフトウェア開発方法及びソフトウェア開発装置に関する。
組み込みシステムなど、ソフトウェアとハードウェアが協調するシステムにおいて、省電力化が必要とされている。その背景として、携帯端末などの電池寿命や待機時間の延長などがある。
従来、ハードウェア設計時において、電圧や周波数、寄生容量やリーク電流などを考慮した省電力設計が試みられている。
たとえば、特許文献1,2には、ハードウェア設計時に手早く消費電力を見積もり、電力設計を行うシミュレーション手法が開示されている。
たとえば、特許文献1,2には、ハードウェア設計時に手早く消費電力を見積もり、電力設計を行うシミュレーション手法が開示されている。
また、特許文献3には、ソフトウェアとハードウェアが協調するシステムの設計時に、消費電力を見積もり、消費電力を目安にソフトウェアとハードウェアの機能分割を行う手法が開示されている。
特開2000−293557号公報
特開2002−334128号公報
特開2001−142927号公報
しかし、従来では、省電力化設計はハードウェアに対して行われており、ハードウェアの駆動や制御を行うソフトウェアに対しては行われておらず、省電力化が十分ではなかった。
特に、既製の汎用のマイクロコントローラ(以下マイコンと略す)ではハードウェア性能をいかにソフトウェア側で効率よく実行できるかが省電力化の課題であるが、従来ではその手段がなかった。
本発明はこのような点に鑑みてなされたものであり、省電力化が可能なソフトウェアを開発するソフトウェア開発方法及びソフトウェア開発装置を提供することを目的とする。
本発明者は、シミュレーション部が、ソフトウェアのシミュレーション時に、関数またはタスクからハードウェアリソースへのアクセスを検知すると、予め測定された各ハードウェアリソースの単位消費電力量を格納した消費電力情報テーブルを参照して、前記ハードウェアリソースの前記単位消費電力量をもとに消費電力を計算し、電力情報作成部が、前記消費電力の計算結果をもとに前記関数または前記タスクごとの消費電力を求め、前記関数または前記タスクごとの消費電力をもとにした電力情報を作成し、表示処理部が、前記電力情報を表示装置に表示させることを特徴とするソフトウェア開発方法を提案する。
上記の方法によれば、ソフトウェアの関数またはタスクごとの消費電力が求まり、その消費電力をもとにした電力情報が表示装置に表示されるので、ユーザは、ソフトウェアのどの関数またはタスクが消費電力に影響を与えているのか認識可能になる。
本発明によれば、ソフトウェアのシミュレーション時に、ソフトウェアの関数またはタスクごとの消費電力を求め、その消費電力をもとにした電力情報を表示装置に表示するので、ユーザは、ソフトウェアのどの関数またはタスクが消費電力に影響を与えているのか簡単に認識可能になる。そして、この情報を参照することで、省電力化のためのソフトウェア開発を容易に行うことができる。
以下、本発明の実施の形態を図面を参照して詳細に説明する。
図1は、本実施の形態のソフトウェア開発装置の概略を示す図である。
ソフトウェア開発装置10は、シミュレーション部11、電力情報作成部12、表示処理部13、記憶部14を有している。
図1は、本実施の形態のソフトウェア開発装置の概略を示す図である。
ソフトウェア開発装置10は、シミュレーション部11、電力情報作成部12、表示処理部13、記憶部14を有している。
シミュレーション部11は、ソフトウェア開発の際のシミュレーションを行う。本実施の形態のシミュレーション部11は、さらに、関数またはタスクからハードウェアリソースへのアクセスを検知すると、記憶部14に記憶された、各ハードウェアリソースの単位消費電力量を格納した消費電力情報テーブルT1を参照する。そして、アクセスされたハードウェアリソースの単位消費電力量をもとに消費電力を計算する。
電力情報作成部12は、シミュレーション部11で計算された消費電力の計算結果をもとにソフトウェアの関数またはタスクごとの消費電力を求め、その消費電力をもとにした電力情報を作成する。また、電力情報作成部12は、シミュレーション部11で計算された消費電力の計算結果をもとに、使用されたハードウェアリソースごとの消費電力を求めるようにしてもよい。
表示処理部13は、電力情報作成部12で作成された電力情報を表示装置13aに表示させる。
以下、本実施の形態のソフトウェア開発装置10の概略の動作を説明する。
以下、本実施の形態のソフトウェア開発装置10の概略の動作を説明する。
図2は、消費電力情報テーブルの例を示す図である。
図のように消費電力情報テーブルT1には、各種ハードウェアリソース名と、そのハードウェアリソースの場所を特定するトリガ(レジスタやメモリのアドレスで示される)、単位消費電力量(たとえば1アクセスまたは1サイクルあたりの消費電力量)などが格納されている。
図のように消費電力情報テーブルT1には、各種ハードウェアリソース名と、そのハードウェアリソースの場所を特定するトリガ(レジスタやメモリのアドレスで示される)、単位消費電力量(たとえば1アクセスまたは1サイクルあたりの消費電力量)などが格納されている。
たとえば、ハードウェアリソース名が“MPEG(Motion Picture Expert Group) Decode”のハードウェアリソースについては、“reg H’A000”がトリガとなり、単位消費電力量は、0.8μWであることが示されている。
このような消費電力情報テーブルT1は、ハードウェア設計時に、公知のハードウェア設計ツールや電力測定ツールにより作成されたものである。このようなツールでは、たとえば、RTL(Register Transfer Level)やC言語で記述されたハードウェアモデルに、1サイクルまたは1アクセスあたりの電力計算式を埋め込むことで単位消費電力量を計算する。
シミュレーション部11は、上記のようなハードウェアリソースを用いるソフトウェアを開発する際にシミュレーションを行い、関数またはタスクが、図2のようなトリガを参照した場合には、そのトリガで指定されるハードウェアリソースの単位消費電力量を抽出する。これによって、シミュレーション対象のソフトウェアを用いた場合の消費電力を計算する。
次に、電力情報作成部12は、消費電力の計算結果をもとに、関数またはタスクごとの消費電力を求め、求めた消費電力をもとにした電力情報を作成し、表示処理部13は、作成した電力情報を表示装置13aに表示する。
図3は、表示装置に表示される電力情報の一例を示す図である。
電力情報は、たとえば、関数と、その関数による消費電力、その関数で使用したハードウェアリソースと、そのハードウェアリソースのトリガにアクセスしたアクセス数(サイクル数)などがあり、これらが表示装置13aに表示される。
電力情報は、たとえば、関数と、その関数による消費電力、その関数で使用したハードウェアリソースと、そのハードウェアリソースのトリガにアクセスしたアクセス数(サイクル数)などがあり、これらが表示装置13aに表示される。
ここでは、関数func1,func2,func3ごとの消費電力などを表示した例を示しているが、タスク単位で表示するようにしてもよい。また、電力情報作成部12で、ハードウェアリソースごとの消費電力を求め、それを表示装置13aに表示してもよい。
このように、本実施の形態のソフトウェア開発装置10によれば、ソフトウェアの関数またはタスクごとの消費電力が求まり、その消費電力をもとにした電力情報が表示装置13aに表示されるので、ユーザは、ソフトウェアのどの関数またはタスクが消費電力に影響を与えているのかが簡単に認識可能になる。そして、この情報をもとに、消費電力が高くなるような関数やタスクに、省電力化を促す命令(たとえば、周波数を下げる命令や、キャッシュ制御命令)などを自動的に、またはユーザが挿入する。それにより、省電力化のためのソフトウェア開発が可能になる。
以下、本実施のソフトウェア開発装置及びソフトウェア開発方法の詳細を説明する。
図4は、本実施の形態のソフトウェア開発装置の具体的なハードウェア構成例である。
ソフトウェア開発装置100は、CPU(Central Processing Unit)101、ROM(Read Only Memory)102、RAM(Random Access Memory)103、HDD(Hard Disk Drive)104、グラフィック処理部105、入力I/F(Interface)106などによって構成され、これらはバス107を介して相互に接続されている。
図4は、本実施の形態のソフトウェア開発装置の具体的なハードウェア構成例である。
ソフトウェア開発装置100は、CPU(Central Processing Unit)101、ROM(Read Only Memory)102、RAM(Random Access Memory)103、HDD(Hard Disk Drive)104、グラフィック処理部105、入力I/F(Interface)106などによって構成され、これらはバス107を介して相互に接続されている。
ここで、CPU101は、ROM102や、HDD104に格納されているプログラムや、各種データに応じて、グラフィック処理部105など、各部を制御し、図1に示したシミュレーション部11、電力情報作成部12、表示処理部13の機能などを実現する。
ROM102は、CPU101が実行する基本的なプログラムやデータを格納している。
RAM103は、CPU101が実行途中のプログラムや、演算途中のデータを格納している。
RAM103は、CPU101が実行途中のプログラムや、演算途中のデータを格納している。
HDD104は、CPU101が実行するOS(Operation System)や、ソフトウェアシミュレータなどソフトウェア開発に必要なプログラムなどの各種アプリケーションプログラムや、各種データを格納する。
グラフィック処理部105には、表示装置として、ディスプレイ105aが接続されており、CPU101からの描画命令に従って、ディスプレイ105a上に、ソフトウェア開発環境の画面や、図3に示したような電力情報などを表示する。
入力I/F106には、マウス106aやキーボード106bなどの入力装置が接続されており、ソフトウェア開発者などのユーザにより入力された情報を受信し、バス107を介してCPU101に伝送する。
上記のようなハードウェアを用いて実行されるソフトウェア開発において、必要な各機能ブロックの例を以下に示す。
図5は、ソフトウェア開発時に必要な機能の一例を示す機能ブロック図である。
図5は、ソフトウェア開発時に必要な機能の一例を示す機能ブロック図である。
ソフトウェア開発環境は、たとえば、マネージャ部210、デバッガ制御部220、エディタ部230、エミュレータ240、シミュレータ250、モニタデバッガ260及びチューニング制御部270を有している。これらは、たとえば、DLL(Dynamic Link Library)などで表現され、CPU101の制御のもと実行されるソフトウェア開発プログラム本体が、必要に応じてライブラリとして呼び出すことによって各機能ブロックの処理が実行される。また、全ての機能ブロックを1つのプログラムとして、CPU101の制御のもと実行するようにしてもよい。
マネージャ部210は、ソフトウェア開発時の情報を管理するプロジェクトファイルと、ソースプログラムとの対応付けや、ビルド時にリンクオプションやコンパイラなどの翻訳ツールを制御する。
デバッガ制御部220は、エミュレータ240、シミュレータ250、モニタデバッガ260などのデバッガを管理するとともに、デバッガの実行やブレーク(停止)を制御する。また、デバッガ制御部220は、電力情報制御部221を有しており、前述した関数またはタスクごとの消費電力を求め、電力情報を作成する。また、ハードウェアリソースごとの消費電力を求め、電力情報に含めてもよい。
エディタ部230は、図4で示したマウス106aやキーボード106bからの入力信号に応じて、ソースプログラムなどの編集を行う。
エミュレータ240、シミュレータ250、モニタデバッガ260は、デバッガ制御部220の制御のもと何れかが選択され、ビルドされたターゲットプログラムを取り込んでデバッグ処理を行う。
エミュレータ240、シミュレータ250、モニタデバッガ260は、デバッガ制御部220の制御のもと何れかが選択され、ビルドされたターゲットプログラムを取り込んでデバッグ処理を行う。
本実施の形態において、シミュレータ250は、たとえば、ISS(Instruction Set Simulator)であり、1命令ごとに命令を実行する。また、電力計算部251を有し、前述した図1のシミュレーション部11の機能を有している。すなわち、電力計算部251は、ソフトウェアを開発する際にシミュレーションを行い、関数またはタスクが、図2のようなトリガを参照した場合には、そのトリガで指定されるハードウェアリソースの単位消費電力量を抽出する。これによって、シミュレーション対象のソフトウェアを用いた場合の消費電力を計算する。
チューニング制御部270は、電力情報表示制御部271を有し、デバッガ制御部220で作成された電力情報の表示を制御する。
なお、上記のような機能構成は、あくまで一例であり、電力計算部251、電力情報制御部221、電力情報表示制御部271は、1つのDLLに纏めるようにしてもよい。
なお、上記のような機能構成は、あくまで一例であり、電力計算部251、電力情報制御部221、電力情報表示制御部271は、1つのDLLに纏めるようにしてもよい。
以下本実施の形態のソフトウェア開発装置100の動作を説明する。
図6は、ソフトウェア開発の概略の流れを示すフローチャートである。
ソフトウェア開発において、まずプロジェクトや、そのプロジェクトのソースプログラムを、マウス106aやキーボード106bにより入力された情報をもとに作成する(ステップS1)。次に、ビルドしてターゲットファイルを作成する(ステップS2)。その後、デバッガを選択し(ステップS3)、ターゲットファイルを選択されたデバッガに取り込み(ステップS4)、消費電力測定などを実行する(ステップS5)。そして、測定結果をディスプレイ105aに表示し(ステップS6)、測定結果をもとに、チューニングを行う(ステップS7)。チューニングでは、手動または自動でソースプログラムを編集して消費電力が少なくなるような修正を行ったり、ビルドオプションの見直しを行ったり、デバッガ実行条件の見直しなどを行う。
図6は、ソフトウェア開発の概略の流れを示すフローチャートである。
ソフトウェア開発において、まずプロジェクトや、そのプロジェクトのソースプログラムを、マウス106aやキーボード106bにより入力された情報をもとに作成する(ステップS1)。次に、ビルドしてターゲットファイルを作成する(ステップS2)。その後、デバッガを選択し(ステップS3)、ターゲットファイルを選択されたデバッガに取り込み(ステップS4)、消費電力測定などを実行する(ステップS5)。そして、測定結果をディスプレイ105aに表示し(ステップS6)、測定結果をもとに、チューニングを行う(ステップS7)。チューニングでは、手動または自動でソースプログラムを編集して消費電力が少なくなるような修正を行ったり、ビルドオプションの見直しを行ったり、デバッガ実行条件の見直しなどを行う。
次に、ステップS3の処理で、図5のように電力計算機能を有したシミュレータ250が選択された場合のソフトウェア開発装置100の動作を説明する。なお、以下では、ソフトウェア開発装置100の動作として3つの例を挙げ、第1乃至第3の実施の形態のソフトウェア開発方法として順番に説明する。
図7は、第1の実施の形態のソフトウェア開発方法の流れを示すフローチャートである。
まず、CPU101は、電力測定を実行するか否かの入力を受け付ける(ステップS10)。たとえば、ユーザによるマウス106aやキーボード106bの操作で、電力測定を実行しない旨の信号が入力された場合には、シミュレータ250の電力計算機能を無効にし(ステップS11)、電力測定を実行する旨の信号が入力された場合には、シミュレータ250の電力計算機能を有効にする(ステップS12)。
まず、CPU101は、電力測定を実行するか否かの入力を受け付ける(ステップS10)。たとえば、ユーザによるマウス106aやキーボード106bの操作で、電力測定を実行しない旨の信号が入力された場合には、シミュレータ250の電力計算機能を無効にし(ステップS11)、電力測定を実行する旨の信号が入力された場合には、シミュレータ250の電力計算機能を有効にする(ステップS12)。
次に、たとえば、ユーザのマウス106aやキーボード106bによる操作で、ブレークポイントの挿入などを行うことで、シミュレータ250の測定範囲を決定し(ステップS13)、1命令ごとにシミュレーションを実行する(ステップS14)。シミュレータ250は、電力計算機能が有効になっているか否かを判断して(ステップS15)、無効になっている場合は、電力計算を行わず、測定範囲のシミュレーションが終了したか否かを判断したのち(ステップS16)、測定範囲が終了していればシミュレーションを終了し、終了していなければ、ステップS14の処理に戻り、次の命令を実行する。
ステップS15の処理で、電力計算機能が有効になっていると判定された場合には、シミュレータ250は、トリガを検出したか否かの判定を行う(ステップS17)。トリガを検出しない場合には、ステップS16の処理に移る。
図8は、ハードウェアリソースの例を示す図である。
また、図9は、ハードウェアリソースの消費電力情報テーブルの例を示す図である。
たとえば、図8のように、ハードウェアリソースとして、SDRAM(Synchronous Dynamic Random Access Memory)、FRAM(Ferroelectric Random Access Memory)などのメモリを用いた場合、そのアドレスによって、トリガが指定されており、図9のような消費電力情報テーブルT2に格納されている。
また、図9は、ハードウェアリソースの消費電力情報テーブルの例を示す図である。
たとえば、図8のように、ハードウェアリソースとして、SDRAM(Synchronous Dynamic Random Access Memory)、FRAM(Ferroelectric Random Access Memory)などのメモリを用いた場合、そのアドレスによって、トリガが指定されており、図9のような消費電力情報テーブルT2に格納されている。
シミュレータ250は、実行した命令に、消費電力情報テーブルT2に記載されているアドレスを参照する変数がある場合に、トリガとして検出する。
次に、シミュレータ250は、トリガを検出した場合、図9のような消費電力情報テーブルT2を参照して、消費電力を計算する(ステップS18)。
次に、シミュレータ250は、トリガを検出した場合、図9のような消費電力情報テーブルT2を参照して、消費電力を計算する(ステップS18)。
図10は、シミュレータが実行するターゲットファイルの例である。
ここでは、アセンブラ表記で示している。変数sda,sdb,sdcがSDRAMのアドレスを参照し、変数fa,fbがFRAMのアドレスを参照する変数の場合、シミュレータ250は、それぞれの変数が出現するたびに、消費電力情報テーブルT2を参照して、そのトリガで示されるハードウェアリソースの単位消費電力量を積算して消費電力を計算していく。
ここでは、アセンブラ表記で示している。変数sda,sdb,sdcがSDRAMのアドレスを参照し、変数fa,fbがFRAMのアドレスを参照する変数の場合、シミュレータ250は、それぞれの変数が出現するたびに、消費電力情報テーブルT2を参照して、そのトリガで示されるハードウェアリソースの単位消費電力量を積算して消費電力を計算していく。
次に、デバッガ制御部220は、電力情報制御部221の機能により、関数またはタスクごとの消費電力や、ハードウェアリソースごとの消費電力を求め、電力情報を作成する(ステップS19)。
図11は、作成された電力情報の一例を示す図である。
ここでは、図10の関数func1,func2を1回ずつ実行した場合に作成される電力情報の例を示している。
ここでは、図10の関数func1,func2を1回ずつ実行した場合に作成される電力情報の例を示している。
関数func1では、変数sda,sdb,sdcがそれぞれ1回出現し、合計3回、SDRAMにアクセスするので、図9の消費電力情報テーブルT2より、消費電力は0.3μW×3=0.9μWとなる。関数func2では、変数faが2回、変数fbが1回出現し、合計3回、FRAMにアクセスするので、消費電力情報テーブルT2より、消費電力は0.5μW×3=1.5μWとなる。
そして、チューニング制御部270の電力情報表示制御部271は、グラフィック処理部105を制御して、図11のような電力情報を、ディスプレイ105aに表示する(ステップS20)。その後、ステップS16の処理に移行し、測定範囲が終了するまで、上記の処理を繰り返す。
このように、第1の実施の形態のソフトウェア開発方法によれば、ユーザは、ソフトウェアのどの関数またはタスクが消費電力に影響を与えているのかが簡単に認識可能になる。そして、この情報をもとに、ステップS7のチューニング処理により、消費電力が高くなるような関数やタスクに、省電力化を促す命令(たとえば、周波数を下げる命令や、キャッシュ制御命令)などを自動的に、またはユーザが挿入する。それにより、省電力化のためのソフトウェア開発が可能になる。
また、高価なハードウェア設計ツールやハードウェアシミュレータ、CPUモデルや周辺IO(Input Output)のリソースモデルを用いず、安価で手軽なソフトウェアのシミュレータ250を用いるので、少ないコストで、省電力化のためのソフトウェア開発が可能になる。
次に、第2の実施の形態のソフトウェア開発方法を説明する。
図12は、第2の実施の形態のソフトウェア開発方法の流れを示すフローチャートである。
図12は、第2の実施の形態のソフトウェア開発方法の流れを示すフローチャートである。
ステップS10〜S17の処理は、第1の実施の形態のソフトウェア開発方法の処理と同じであるので説明を省略する。
シミュレータ250は、ステップS17の処理でトリガを検出した場合、トリガ数(アクセス数)をカウントする(ステップS21)。たとえば、図10の関数func1,func2を1回ずつ実行した場合、変数sda,sdb,sdc,fbについては、トリガ数は1回、変数faについては、トリガ数は2回である。このようなトリガ数は、たとえば、シミュレータ250内で保持しておく。
シミュレータ250は、ステップS17の処理でトリガを検出した場合、トリガ数(アクセス数)をカウントする(ステップS21)。たとえば、図10の関数func1,func2を1回ずつ実行した場合、変数sda,sdb,sdc,fbについては、トリガ数は1回、変数faについては、トリガ数は2回である。このようなトリガ数は、たとえば、シミュレータ250内で保持しておく。
次に、シミュレータ250は、以下のような消費電力情報テーブルT3を参照する。
図13は、複数品種の製品のハードウェアリソースの単位消費電力量を管理する消費電力情報テーブルの例を示す図である。
図13は、複数品種の製品のハードウェアリソースの単位消費電力量を管理する消費電力情報テーブルの例を示す図である。
消費電力情報テーブルT3は、複数品種の製品のハードウェアリソースと、そのトリガと、単位消費電力量を格納している。すなわち、現在の評価対象の製品以外の単位消費電力量も格納している。
シミュレータ250は、第1の実施の形態のソフトウェア開発方法と同様に、今回評価対象としている製品の消費電力を、消費電力情報テーブルT3を参照して計算するとともに、保持されたトリガ数をもとに、他の製品(品種)における消費電力を予測する(ステップS22)。
たとえば、今回、図13の品種Aの製品に対して消費電力を計算している場合、SDRAMにアクセスする変数sda,sdb,sdcについては、単位消費電力量は0.3μWとなるが、品種Bの製品では、0.4μWとなる。また、品種Aの製品では、FRAMにアクセスする変数fa,fbについては、単位消費電力量は0.5μWとなるが、品種Bの製品では、0.6μWとなる。シミュレータ250は、保持していた各変数のトリガ数に応じてこれらの値を積算していき、他の製品における消費電力を予測する。
次に、デバッガ制御部220は、電力情報制御部221の機能により、今回対象としている製品の関数またはタスクごとの消費電力や、ハードウェアリソースごとの消費電力を求めるとともに、ステップS22で求められた、他の製品の消費電力の予測結果に応じて電力情報を作成する(ステップS23)。
たとえば、図10のような関数func1,func2を1回ずつ実行した場合の、図13の品種AのSDRAMの消費電力は、0.3×3=0.9μW、FRAMの消費電力は0.5×3=1.5μWであるが、品種BのSDRAMの消費電力は、0.4×3=1.2μW、FRAMの消費電力は0.6×3=1.8μWと予測される。
また、上記の例の場合、関数func1,func2ごとの消費電力も同じ値となる。
そして、チューニング制御部270の電力情報表示制御部271は、グラフィック処理部105を制御して、ステップS23の処理で作成した電力情報を、ディスプレイ105aに表示する(ステップS24)。
そして、チューニング制御部270の電力情報表示制御部271は、グラフィック処理部105を制御して、ステップS23の処理で作成した電力情報を、ディスプレイ105aに表示する(ステップS24)。
図14は、他製品の消費電力予測結果を含む電力情報表示例を示す図である。
ここでは、図13で示した品種Aと品種Bの製品に対して、図10の関数func1,func2を1回ずつ実行した場合に表示される電力情報の例を示している。
ここでは、図13で示した品種Aと品種Bの製品に対して、図10の関数func1,func2を1回ずつ実行した場合に表示される電力情報の例を示している。
なお、タスクごとの消費電力やハードウェアリソースごとの消費電力を表示するようにしてもよい。
その後、ステップS16の処理に移行し、測定範囲が終了するまで、上記の処理を繰り返す。
その後、ステップS16の処理に移行し、測定範囲が終了するまで、上記の処理を繰り返す。
このように、第2の実施の形態のソフトウェア開発方法によれば、ある品種の製品に対してはシミュレーションの実行中にダイナミックに消費電力を計算するが、他の品種の製品に対しては、再実行せずとも、トリガ数をもとに、図13のような消費電力情報テーブルT3を参照することで関数やタスクごと、またはハードウェアリソースごとの消費電力を予測することが可能になる。
次に、第3の実施の形態のソフトウェア開発方法を説明する。
図15は、第3の実施の形態のソフトウェア開発方法の流れを示すフローチャートである。
図15は、第3の実施の形態のソフトウェア開発方法の流れを示すフローチャートである。
ステップS10〜S19の処理は、第1及び第2の実施の形態のソフトウェア開発方法の処理と同じであるので説明を省略する。
第3の実施の形態のソフトウェア開発方法では、チューニング制御部270は、ステップS19で作成した電力情報をもとに、ユーザに対して、省電力化のためのソフトウェアのチューニングアドバイスを選択して、電力情報表示制御部271により、グラフィック処理部105を制御して、ディスプレイ105aに表示する(ステップS31)。
第3の実施の形態のソフトウェア開発方法では、チューニング制御部270は、ステップS19で作成した電力情報をもとに、ユーザに対して、省電力化のためのソフトウェアのチューニングアドバイスを選択して、電力情報表示制御部271により、グラフィック処理部105を制御して、ディスプレイ105aに表示する(ステップS31)。
図16は、チューニングアドバイスの表示例を示す図である。
図16(A)は、FRAMへのアクセスが特定の関数に集中しているので、プログラム全体に分散することで、省電力化が可能になることを示唆するチューニングアドバイスを示している。
図16(A)は、FRAMへのアクセスが特定の関数に集中しているので、プログラム全体に分散することで、省電力化が可能になることを示唆するチューニングアドバイスを示している。
また、図16(B)は、SRAMアクセスが分散しているが、省電力化につながるバースト転送モードがあるので、局所的なSDRAMアクセスを奨めるチューニングアドバイスを示している。
このようなチューニングアドバイスは、予め品種ごとに用意された閾値などをチューニング制御部270が参照して、電力情報(消費電力やトリガ数)に応じて選択して出力する。
図17は、チューニングアドバイスを表示するためのプログラム例を示す図である。
品種Aの製品に対して、FRAMアクセスが、全FRAMアクセスの90%以上となる関数がある場合に、図16(A)のようなチューニングアドバイスを表示するプログラムである。チューニング制御部270は、このようなプログラムにより、チューニングアドバイスを表示させる。
品種Aの製品に対して、FRAMアクセスが、全FRAMアクセスの90%以上となる関数がある場合に、図16(A)のようなチューニングアドバイスを表示するプログラムである。チューニング制御部270は、このようなプログラムにより、チューニングアドバイスを表示させる。
このように、第3の実施の形態のソフトウェア開発方法では、作成した電力情報にもとづき、チューニングアドバイスを表示するので、ユーザが、ソフトウェアをどのように直せば省電力化が可能かひと目で認識することができ、消費電力の少ないソフトウェアを簡単に開発することが可能になる。
なお、第1の実施の形態のソフトウェア開発方法のように、関数やタスクごとの消費電力を含む電力情報を表示するようにしてもよい。
図18は、関数ごとの電力情報の表示例を示す図である。
図18は、関数ごとの電力情報の表示例を示す図である。
関数func1,func2,func3と、その関数が参照するハードウェアリソースと消費電力、アクセス回数などの電力情報が表示される。さらに、アイコン300に対して、マウス106aによるクリックやキーボード106bによる選択がなされたときに、図17のようなプログラムを実行して、図16のようなチューニングアドバイスをディスプレイ105a上に表示するようにしてもよい。
なお、第2の実施の形態のソフトウェア開発方法においても、予測した品種の製品に対して、上記のようなチューニングアドバイスを選択して表示するようにしてもよい。
また、上記の第1乃至第3の実施の形態のソフトウェア開発方法の説明では、トリガを検出するたびに、消費電力を計算し、電力情報を更新して、電力情報の表示を更新することで、リアルタイムに電力情報の変化をユーザが認識できるようにしたが、測定範囲を終了したのちに、電力情報を作成して、関数またはタスクごとの消費電力を表示したり、チューニングアドバイスを表示するようにしてもよい。
また、上記の第1乃至第3の実施の形態のソフトウェア開発方法の説明では、トリガを検出するたびに、消費電力を計算し、電力情報を更新して、電力情報の表示を更新することで、リアルタイムに電力情報の変化をユーザが認識できるようにしたが、測定範囲を終了したのちに、電力情報を作成して、関数またはタスクごとの消費電力を表示したり、チューニングアドバイスを表示するようにしてもよい。
(付記1) シミュレーション部が、ソフトウェアのシミュレーション時に、関数またはタスクからハードウェアリソースへのアクセスを検知すると、予め測定された各ハードウェアリソースの単位消費電力量を格納した消費電力情報テーブルを参照して、前記ハードウェアリソースの前記単位消費電力量をもとに消費電力を計算し、
電力情報作成部が、前記消費電力の計算結果をもとに前記関数または前記タスクごとの消費電力を求め、前記関数または前記タスクごとの消費電力をもとにした電力情報を作成し、
表示処理部が、前記電力情報を表示装置に表示させることを特徴とするソフトウェア開発方法。
電力情報作成部が、前記消費電力の計算結果をもとに前記関数または前記タスクごとの消費電力を求め、前記関数または前記タスクごとの消費電力をもとにした電力情報を作成し、
表示処理部が、前記電力情報を表示装置に表示させることを特徴とするソフトウェア開発方法。
(付記2) 前記シミュレーション部は、シミュレーション時に、前記ハードウェアリソースのアドレスを参照する変数を認識した場合には、前記アクセスとして検知することを特徴とする付記1記載のソフトウェア開発方法。
(付記3) 前記消費電力情報テーブルは、複数の品種の製品の、前記ハードウェアリソースの前記単位消費電力量を格納していることを特徴とする付記1または2記載のソフトウェア開発方法。
(付記4) 前記シミュレーション部は、特定の品種の製品の前記消費電力を計算する際に、関数またはタスクからの前記ハードウェアリソースへのアクセス数を保持し、前記アクセス数をもとに、他の品種の製品における前記ハードウェアリソースの前記単位消費電力量を前記消費電力テーブルから参照して、前記他の品種の製品における前記消費電力を予測することを特徴とする付記1乃至3の何れか一項に記載のソフトウェア開発方法。
(付記5) 前記電力情報をもとに、省電力化のための前記ソフトウェアのチューニングアドバイスを作成し、前記表示装置に表示させることを特徴とする付記1乃至4記載のソフトウェア開発方法。
(付記6) 前記電力情報作成部が、前記シミュレーション部による前記消費電力の計算結果をもとに、前記ハードウェアリソースごとの消費電力を求めることを特徴とする付記1乃至5記載のソフトウェア開発方法。
(付記7) 前記シミュレーション部は、前記ハードウェアリソースへのアクセスを検知するたびに、アクセスされた前記ハードウェアリソースの前記単位消費電力量を積算することで前記消費電力を計算し、前記電力情報作成部は、前記電力情報を更新し、前記表示処理部は、前記電力情報の表示を更新することを特徴とする付記1乃至6記載のソフトウェア開発方法。
(付記8) ソフトウェアのシミュレーション時に、関数またはタスクからハードウェアリソースへのアクセスを検知すると、予め測定された各ハードウェアリソースの単位消費電力量を格納した消費電力情報テーブルを参照して、前記ハードウェアリソースの前記単位消費電力量をもとに消費電力を計算するシミュレーション部と、
前記消費電力の計算結果をもとに前記関数または前記タスクごとの消費電力を求め、前記関数または前記タスクごとの消費電力をもとにした電力情報を作成する電力情報作成部と、
前記電力情報を表示装置に表示させる表示処理部と、
を有することを特徴とするソフトウェア開発装置。
前記消費電力の計算結果をもとに前記関数または前記タスクごとの消費電力を求め、前記関数または前記タスクごとの消費電力をもとにした電力情報を作成する電力情報作成部と、
前記電力情報を表示装置に表示させる表示処理部と、
を有することを特徴とするソフトウェア開発装置。
10 ソフトウェア開発装置
11 シミュレーション部
12 電力情報作成部
13 表示処理部
13a 表示装置
14 記憶部
T1 消費電力情報テーブル
11 シミュレーション部
12 電力情報作成部
13 表示処理部
13a 表示装置
14 記憶部
T1 消費電力情報テーブル
Claims (4)
- シミュレーション部が、ソフトウェアのシミュレーション時に、関数またはタスクからハードウェアリソースへのアクセスを検知すると、予め測定された各ハードウェアリソースの単位消費電力量を格納した消費電力情報テーブルを参照して、前記ハードウェアリソースの前記単位消費電力量をもとに消費電力を計算し、
電力情報作成部が、前記消費電力の計算結果をもとに前記関数または前記タスクごとの消費電力を求め、前記関数または前記タスクごとの消費電力をもとにした電力情報を作成し、
表示処理部が、前記電力情報を表示装置に表示させることを特徴とするソフトウェア開発方法。 - 前記シミュレーション部は、シミュレーション時に、前記ハードウェアリソースのアドレスを参照する変数を認識した場合には、前記アクセスとして検知することを特徴とする請求項1記載のソフトウェア開発方法。
- 前記消費電力情報テーブルは、複数の品種の製品の、前記ハードウェアリソースの前記単位消費電力量を格納していることを特徴とする請求項1または2記載のソフトウェア開発方法。
- ソフトウェアのシミュレーション時に、関数またはタスクからハードウェアリソースへのアクセスを検知すると、予め測定された各ハードウェアリソースの単位消費電力量を格納した消費電力情報テーブルを参照して、前記ハードウェアリソースの前記単位消費電力量をもとに消費電力を計算するシミュレーション部と、
前記消費電力の計算結果をもとに前記関数または前記タスクごとの消費電力を求め、前記関数または前記タスクごとの消費電力をもとにした電力情報を作成する電力情報作成部と、
前記電力情報を表示装置に表示させる表示処理部と、
を有することを特徴とするソフトウェア開発装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007245946A JP2009075965A (ja) | 2007-09-21 | 2007-09-21 | ソフトウェア開発方法及びソフトウェア開発装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007245946A JP2009075965A (ja) | 2007-09-21 | 2007-09-21 | ソフトウェア開発方法及びソフトウェア開発装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009075965A true JP2009075965A (ja) | 2009-04-09 |
Family
ID=40610853
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007245946A Pending JP2009075965A (ja) | 2007-09-21 | 2007-09-21 | ソフトウェア開発方法及びソフトウェア開発装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009075965A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011096117A (ja) * | 2009-10-30 | 2011-05-12 | Fujitsu Ltd | 集積回路装置 |
JP2012529234A (ja) * | 2009-06-03 | 2012-11-15 | マイクロソフト コーポレーション | サーバの利用状況の判定 |
WO2015033759A1 (ja) | 2013-09-04 | 2015-03-12 | 株式会社Nttドコモ | デバッグ装置、デバッグ方法及びデバッグプログラム |
JP2015207128A (ja) * | 2014-04-18 | 2015-11-19 | 富士通株式会社 | 装置 |
KR101833839B1 (ko) * | 2016-10-14 | 2018-03-05 | 주식회사 샵캐스트 | 모바일 디바이스 기반의 저작권 기술에 대한 운영 전력 감소 개발 장치 및 방법 |
-
2007
- 2007-09-21 JP JP2007245946A patent/JP2009075965A/ja active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012529234A (ja) * | 2009-06-03 | 2012-11-15 | マイクロソフト コーポレーション | サーバの利用状況の判定 |
JP2011096117A (ja) * | 2009-10-30 | 2011-05-12 | Fujitsu Ltd | 集積回路装置 |
WO2015033759A1 (ja) | 2013-09-04 | 2015-03-12 | 株式会社Nttドコモ | デバッグ装置、デバッグ方法及びデバッグプログラム |
JP2015049840A (ja) * | 2013-09-04 | 2015-03-16 | 株式会社Nttドコモ | デバッグ装置、デバッグ方法及びデバッグプログラム |
US10073762B2 (en) | 2013-09-04 | 2018-09-11 | Ntt Docomo, Inc. | Debug device, debug method, and debug program |
JP2015207128A (ja) * | 2014-04-18 | 2015-11-19 | 富士通株式会社 | 装置 |
KR101833839B1 (ko) * | 2016-10-14 | 2018-03-05 | 주식회사 샵캐스트 | 모바일 디바이스 기반의 저작권 기술에 대한 운영 전력 감소 개발 장치 및 방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8789024B2 (en) | Integration of visualization with source code in the Eclipse development environment | |
US8725485B2 (en) | Simulation method and simulation apparatus | |
US7237234B2 (en) | Method for selective solicitation of user assistance in the performance tuning process | |
US20110214108A1 (en) | Architecture, system and method for generating visualizations from running executable code | |
US7945900B2 (en) | Debugging tool for debugging multi-threaded programs | |
JP2003050715A (ja) | コンパイラおよびデバッグ装置 | |
JP2007286671A (ja) | ソフトウェア/ハードウェア分割プログラム、および分割方法。 | |
US8561032B2 (en) | Visualizing thread life time in eclipse | |
CN105793825A (zh) | 可从过多的近似计算误差中恢复的处理器 | |
US20220100512A1 (en) | Deterministic replay of a multi-threaded trace on a multi-threaded processor | |
JP2009075965A (ja) | ソフトウェア開発方法及びソフトウェア開発装置 | |
US8539467B2 (en) | Method and data processing system for solving resource conflicts in assembler programs | |
US10380313B1 (en) | Implementation and evaluation of designs for heterogeneous computing platforms with hardware acceleration | |
JP5444724B2 (ja) | 検証支援プログラム、情報処理装置および検証支援方法 | |
CN105308555A (zh) | 具有近似计算功能单元的处理器 | |
CN112685040B (zh) | 安卓系统中界面文件的生成方法、装置、设备及存储介质 | |
TW201324347A (zh) | 功能模組命令管理系統及方法 | |
JP2007213556A (ja) | 回路解析装置 | |
US20030070117A1 (en) | Simulation apparatus and simulation method | |
Wang et al. | Hycos: hybrid compiled simulation of embedded software with target dependent code | |
US7945901B2 (en) | System and method for facilitating software profiling procedures | |
JP4870956B2 (ja) | 組み込み用プログラム生成方法、組み込み用プログラム開発システム、及び情報テーブル部 | |
JP2010003171A (ja) | デバッグ支援装置 | |
Ashraf et al. | Memory and communication profiling for accelerator-based platforms | |
KR101225577B1 (ko) | 어셈블리 언어 코드의 분석 장치 및 방법 |