(57)【特許請求の範囲】
【請求項１】
コンピュータを、
消費電力の見積もり対象となるプロセッサを構成するモジュールの性能を表わすアーキテクチャ情報、および任意のアプリケーションの動作時に実行される各命令の実行順序を表わす実行命令情報を取得する取得手段、
前記取得手段によって取得された前記アーキテクチャ情報に含まれる前記プロセッサが並列実行可能な命令の数と、前記プロセッサが並列実行可能な命令の種別の組み合わせとに基づいて、前記実行命令情報から特定される第１実行順序を、前記モジュールの性能に応じて各サイクルでの各モジュールが実行する命令を特定した第２実行順序に変更する変更手段、
前記変更手段によって変更された前記第２実行順序に基づいて、変更後の各命令の実行時に消費される前記モジュールごとの電力値を算出する算出手段、
前記算出手段によって算出された算出結果を出力する出力手段、
として機能をさせることを特徴とする消費電力見積プログラム。
【請求項２】
前記コンピュータを、
前記変更手段によって変更された前記第２実行順序に基づいて、変更後の各命令の実行時に消費される前記モジュールごとの電力値を、消費電力値を各命令とモジュールの性能と関連付けて保持する消費電力ライブラリから抽出する抽出手段として機能させ、
前記算出手段は、
前記抽出手段によって抽出されたモジュールごとの電力値を積算することにより、変更後の各命令の実行時に消費される電力値を算出することを特徴とする請求項１に記載の消費電力見積プログラム。
【請求項３】
前記算出手段は、
さらに、変更後の各命令の実行時に消費される電力値を積算することにより、前記アプリケーションの動作時に消費される前記プロセッサの電力値を算出することを特徴とする請求項２に記載の消費電力見積プログラム。
【請求項４】
前記コンピュータを、
前記実行命令情報に基づいて、前記プロセッサ内のキャッシュメモリにアクセスする命令の実行時における前記キャッシュメモリのミス／ヒットを判断する判断手段として機能させ、
前記抽出手段は、
前記判断手段によって判断された判断結果および変更後の前記第２実行順序に基づいて、前記キャッシュメモリにアクセスする命令の実行時に消費されるモジュールごとの電力値を前記消費電力ライブラリから抽出することを特徴とする請求項２または３に記載の消費電力見積プログラム。
【請求項５】
前記実行命令情報は、
前記見積もり対象となるプロセッサの命令レベルシミュレータを利用して前記アプリケーションを動作させたときに実行される各命令の実行順序を表わす情報であり、
前記算出手段は、
前記実行命令情報から特定される前記第１実行順序に基づいて、前記アプリケーションの動作時に実行される各命令の実行時に消費される電力値を算出することを特徴とする請求項１〜４のいずれか一つに記載の消費電力見積プログラム。
【請求項６】
前記アーキテクチャ情報は、前記プロセッサの動作環境下における当該プロセッサの温度を表わす情報を含んでおり、
前記消費電力ライブラリは、複数通りの温度における消費電力値を各命令とモジュールの性能と関連付けて保持しており、
前記抽出手段は、
前記アーキテクチャ情報に含まれる前記プロセッサの温度における変更後の各命令の実行時に消費される前記モジュールごとの電力値を、前記消費電力ライブラリから抽出することを特徴とする請求項２〜５のいずれか一つに記載の消費電力見積プログラム。
【請求項７】
請求項１〜６のいずれか一つに記載の消費電力見積プログラムを記録したコンピュータに読み取り可能な記録媒体。
【請求項８】
消費電力の見積もり対象となるプロセッサを構成するモジュールの性能を表わすアーキテクチャ情報、および任意のアプリケーションの動作時に実行される各命令の実行順序を表わす実行命令情報を取得する取得手段と、
前記取得手段によって取得された前記アーキテクチャ情報に含まれる前記プロセッサが並列実行可能な命令の数と、前記プロセッサが並列実行可能な命令の種別の組み合わせとに基づいて、前記実行命令情報から特定される第１実行順序を、前記モジュールの性能に応じて各サイクルでの各モジュールが実行する命令を特定した第２実行順序に変更する変更手段と、
前記変更手段によって変更された前記第２実行順序に基づいて、変更後の各命令の実行時に消費される前記モジュールごとの電力値を算出する算出手段と、
前記算出手段によって算出された算出結果を出力する出力手段と、
を備えることを特徴とする消費電力見積装置。
【請求項９】
制御手段および記憶手段を備えるコンピュータが、
前記制御手段により、消費電力の見積もり対象となるプロセッサを構成するモジュールの性能を表わすアーキテクチャ情報、および任意のアプリケーションの動作時に実行される各命令の実行順序を表わす実行命令情報を取得する取得工程と、
前記制御手段により、前記取得工程によって取得された前記アーキテクチャ情報に含まれる前記プロセッサが並列実行可能な命令の数と、前記プロセッサが並列実行可能な命令の種別の組み合わせとに基づいて、前記実行命令情報から特定される第１実行順序を、前記モジュールの性能に応じて各サイクルでの各モジュールが実行する命令を特定した第２実行順序に変更する変更工程と、
前記制御手段により、前記変更工程によって変更された前記第２実行順序に基づいて、変更後の各命令の実行時に消費される前記モジュールごとの電力値を算出する算出工程と、
前記制御手段により、前記算出工程によって算出された算出結果を出力する出力工程と、
を実行することを特徴とする消費電力見積方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プロセッサの消費電力を見積もる消費電力見積プログラム、該プログラムを記録したコンピュータに読み取り可能な記録媒体、消費電力見積装置、および消費電力見積方法に関する。
【背景技術】
【０００２】
近年、組み込み向けプロセッサでは、対象となるアプリケーションに応じて、適切なアーキテクチャのプロセッサをカスタマイズして利用することが多くなっている。一方で、組み込み向けプロセッサでは、消費電力に対する制約が厳しいため、実際にＬＳＩを製造する前段階において消費電力を見積もりたいという要求が高くなっている。
【０００３】
従来より、プロセッサの消費電力を見積もる手法として、命令レベルシミュレータ（ＩＳＳ：Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｓｉｍｕｌａｔｏｒ）を利用して見積もる手法が知られている（たとえば、下記特許文献１〜３参照。）。命令レベルシミュレータは、命令単位でのシミュレーションを実行し、プロセッサで動作するアプリケーションの動きを模擬するシミュレータである。
【０００４】
具体的には、まず、命令レベルシミュレータを利用してアプリケーションを動作させ、各命令の実行順序を表わす実行ログを得る。このあと、この実行ログに含まれる各命令の実行時に消費される電力を測定する。そして、測定された命令ごとの消費電力を積算することによってプロセッサの消費電力を見積もることができる。
【０００５】
【特許文献１】特開平８−２３５２２８号公報
【特許文献２】特開平１１−１６１６９２号公報
【特許文献３】特開２０００−２９３５５７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した従来技術によれば、見積もり対象となるプロセッサのアーキテクチャが変更されると、その都度、命令レベルシミュレータを新たに開発して、各命令の実行時に消費される電力を測定する必要がある。これら命令レベルシミュレータの開発作業および消費電力の測定作業には、非常に大きな工数がかかってしまう。
【０００７】
このため、多くの種類のアーキテクチャのプロセッサの消費電力を見積もることが難しくなり、プロセッサをカスタマイズする際における消費電力に対する制約を満たすアーキテクチャの選択を困難なものにさせていた。この結果、制約違反にともなう設計作業の手戻りが多発してしまい、作業負担の増大化および設計期間の長期化を招くという問題があった。
【０００８】
この消費電力見積プログラム、該プログラムを記録したコンピュータに読み取り可能な記録媒体、消費電力見積装置、および消費電力見積方法は、上述した従来技術による問題点を解消するため、プロセッサの消費電力を高速でかつ高精度に見積もることを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するため、消費電力見積プログラム、該プログラムを記録したコンピュータに読み取り可能な記録媒体、消費電力見積装置、および消費電力見積方法は、消費電力の見積もり対象となるプロセッサを構成するモジュールの性能を表わすアーキテクチャ情報、および任意のアプリケーションの動作時に実行される各命令の実行順序を表わす実行命令情報を取得し、取得された前記アーキテクチャ情報に基づいて、前記実行命令情報から特定される第１実行順序を、前記モジュールの性能に応じた第２実行順序に変更し、変更された前記第２実行順序に基づいて、変更後の各命令の実行時に消費される前記モジュールごとの電力値を算出し、算出された算出結果を出力することを要件とする。
【００１０】
この消費電力見積プログラム、該プログラムを記録したコンピュータに読み取り可能な記録媒体、消費電力見積装置、および消費電力見積方法によれば、任意のアプリケーションを動作させる命令シーケンスを、見積もり対象となるプロセッサのアーキテクチャに応じて変更し、変更後の命令シーケンスの各実行サイクルでの消費電力をモジュールごとに見積もることができる。
【００１１】
また、消費電力見積プログラム、該プログラムを記録したコンピュータに読み取り可能な記録媒体、消費電力見積装置、および消費電力見積方法において、変更された前記第２実行順序に基づいて、変更後の各命令の実行時に消費される前記モジュールごとの電力値を、消費電力値を各命令とモジュールの性能と関連付けて保持する消費電力ライブラリから抽出し、抽出されたモジュールごとの電力値を積算することにより、変更後の各命令の実行時に消費される電力値を算出することとしてもよい。
【００１２】
この消費電力見積プログラム、該プログラムを記録したコンピュータに読み取り可能な記録媒体、消費電力見積装置、および消費電力見積方法によれば、見積もり対象となるプロセッサを構成するモジュールの性能と関連付けて保持されている電力値を用いて、変更後の各命令の実行時に消費される消費電力を見積もることができる。
【００１３】
また、消費電力見積プログラム、該プログラムを記録したコンピュータに読み取り可能な記録媒体、消費電力見積装置、および消費電力見積方法において、さらに、変更後の各命令の実行時に消費される電力値を積算することにより、前記アプリケーションの動作時に消費される前記プロセッサの電力値を算出することとしてもよい。
【００１４】
この消費電力見積プログラム、該プログラムを記録したコンピュータに読み取り可能な記録媒体、消費電力見積装置、および消費電力見積方法によれば、アプリケーションの動作させたときに消費されるプロセッサ全体の消費電力を見積もることができる。
【００１５】
また、消費電力見積プログラム、該プログラムを記録したコンピュータに読み取り可能な記録媒体、消費電力見積装置、および消費電力見積方法において、前記実行命令情報に基づいて、前記プロセッサ内のキャッシュメモリにアクセスする命令の実行時における前記キャッシュメモリのミス／ヒットを判断し、判断された判断結果および変更後の実行順序に基づいて、前記キャッシュメモリにアクセスする命令の実行時に消費されるモジュールごとの電力値を前記消費電力ライブラリから抽出することとしてもよい。
【００１６】
この消費電力見積プログラム、該プログラムを記録したコンピュータに読み取り可能な記録媒体、消費電力見積装置、および消費電力見積方法によれば、キャッシュメモリのミス／ヒットに応じた電力値を用いて、キャッシュメモリにアクセスする命令の実行時に消費される消費電力を見積もることができる。
【００１７】
また、消費電力見積プログラム、該プログラムを記録したコンピュータに読み取り可能な記録媒体、消費電力見積装置、および消費電力見積方法において、前記実行命令情報は、前記見積もり対象となるプロセッサの命令レベルシミュレータを利用して前記アプリケーションを動作させたときに実行される各命令の実行順序を表わす情報であり、前記実行命令情報から特定される前記第１実行順序に基づいて、前記アプリケーションの動作時に実行される各命令の実行時に消費される電力値を算出することとしてもよい。
【００１８】
この消費電力見積プログラム、該プログラムを記録したコンピュータに読み取り可能な記録媒体、消費電力見積装置、および消費電力見積方法によれば、消費電力の見積もり精度を向上させることができる。
【発明の効果】
【００１９】
本発明にかかる消費電力見積プログラム、該プログラムを記録したコンピュータに読み取り可能な記録媒体、消費電力見積装置、および消費電力見積方法によれば、プロセッサの消費電力を高速でかつ高精度に見積もることができるという効果を奏する。
【発明を実施するための最良の形態】
【００２０】
以下に添付図面を参照して、この発明にかかる消費電力見積プログラム、該プログラムを記録したコンピュータに読み取り可能な記録媒体、消費電力見積装置、および消費電力見積方法の好適な実施の形態を詳細に説明する。
【００２１】
（実施の形態１）
（消費電力見積装置のハードウェア構成）
まず、実施の形態１にかかる消費電力見積装置のハードウェア構成について説明する。図１は、実施の形態１にかかる消費電力見積装置のハードウェア構成を示すブロック図である。
【００２２】
図１において、消費電力見積装置１００は、ＣＰＵ１０１と、ＲＯＭ１０２と、ＲＡＭ１０３と、ＨＤＤ（ハードディスクドライブ）１０４と、ＨＤ（ハードディスク）１０５と、ＦＤＤ（フレキシブルディスクドライブ）１０６と、着脱可能な記録媒体の一例としてのＦＤ（フレキシブルディスク）１０７と、ディスプレイ１０８と、Ｉ／Ｆ（インターフェース）１０９と、キーボード１１０と、マウス１１１と、スキャナ１１２と、プリンタ１１３とを備えている。また、各構成部は、バス１２０によってそれぞれ接続されている。
【００２３】
ここで、ＣＰＵ１０１は、消費電力見積装置１００の全体の制御を司る。ＲＯＭ１０２は、ブートプログラムなどのプログラムを記録している。ＲＡＭ１０３は、ＣＰＵ１０１のワークエリアとして使用される。ＨＤＤ１０４は、ＣＰＵ１０１の制御にしたがってＨＤ１０５に対するデータのリード／ライトを制御する。ＨＤ１０５は、ＨＤＤ１０４の制御で書き込まれたデータを記憶する。
【００２４】
ＦＤＤ１０６は、ＣＰＵ１０１の制御にしたがってＦＤ１０７に対するデータのリード／ライトを制御する。ＦＤ１０７は、ＦＤＤ１０６の制御で書き込まれたデータを記憶したり、ＦＤ１０７に記憶されたデータを消費電力見積装置１００に読み取らせたりする。
【００２５】
また、着脱可能な記録媒体として、ＦＤ１０７のほか、ＣＤ−ＲＯＭ（ＣＤ−Ｒ、ＣＤ−ＲＷ）、ＭＯ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、メモリカードなどであってもよい。ディスプレイ１０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ１０８には、たとえば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００２６】
Ｉ／Ｆ１０９は、通信回線を通じてインターネットなどのネットワーク１１４に接続され、このネットワーク１１４を介して他の装置に接続される。そして、Ｉ／Ｆ１０９は、ネットワーク１１４と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ１０９には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００２７】
キーボード１１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス１１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様の機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００２８】
スキャナ１１２は、画像を光学的に読み取り、装置内に画像データを読み込む。なお、スキャナ１１２は、ＯＣＲ機能を持たせてもよい。また、プリンタ１１３は、画像データや文書データを印刷する。プリンタ１１３には、たとえば、レーザプリンタやインクジェットプリンタなどを採用することができる。
【００２９】
（実施の形態１の概要）
つぎに、実施の形態１の概要について説明する。図２は、実施の形態１の概要を示す説明図である。実施の形態１では、ある特定のアプリケーションを動作させたときに消費されるプロセッサの電力値を見積もる。図２において、まず、仮想的なプロセッサを定義して、その仮想プロセッサ向けの命令レベルシミュレータ（ＩＳＳ）を開発する（１）。
【００３０】
仮想プロセッサは、特定のアプリケーションを動作させたときに実行される各命令の実行順序を検出するためのプロセッサである。この仮想プロセッサは、上記アプリケーションを正常に動作させる機能を備えていればよく、ユーザによって任意に選択されたものであってもよい。
【００３１】
このあと、仮想プロセッサの命令レベルシミュレータを利用して、上記アプリケーションを動作させ、実行される各命令の実行順序を表わす命令シーケンスＳ１を取得する（２）。つぎに、この命令シーケンスＳ１に基づいて、消費電力ライブラリ２１０を作成する（３）。なお、消費電力ライブラリ２１０を作成する具体的な処理内容は後述する。
【００３２】
上記（１）〜（３）の作業を、見積もり対象となるプロセッサ（以下、「ターゲットプロセッサ」という）の消費電力を見積もる前に予めおこなう。このあと、ターゲットプロセッサのアーキテクチャ情報Ａを取得すると（４）、そのアーキテクチャ情報Ａに基づいて、仮想プロセッサの命令シーケンスＳ１をターゲットプロセッサの命令シーケンスＳ２に変更する（５）。
【００３３】
そして、ターゲットプロセッサの命令シーケンスＳ２に基づいて、変更後の各命令の実行時に消費されるモジュールごとの電力値を消費電力ライブラリ２１０から抽出する（６）。最後に、抽出された電力値を積算することにより、上記アプリケーションを動作させたときのターゲットプロセッサの消費電力を見積もる（７）。
【００３４】
これにより、非常に工数のかかるターゲットプロセッサ向けの命令レベルシミュレータの開発作業および各命令の実行時に消費される電力値の測定作業が不要となる。すなわち、ターゲットプロセッサのアーキテクチャの変更にともなって、新たに上記（１）〜（３）に相当する作業をおこなう必要がなくなるため、消費電力の見積もり作業の高速化を図ることができる。
【００３５】
何らかの命令を実行したときに、プロセッサを構成するモジュールで消費される消費電力は、個々のモジュールの性能に依存している。つまり、互いに異なるプロセッサのモジュールであっても、それらの性能が同じであれば、消費電力も同様の値となる。ここでは、プロセッサを特徴的な機能を実現するモジュールによって区分けして、モジュールごとの消費電力に着目し、ターゲットプロセッサの消費電力を見積もる。
【００３６】
また、仮想プロセッサとしてターゲットプロセッサ、またはターゲットプロセッサと同種類のアーキテクチャのプロセッサを定義することにより、消費電力の見積もり精度を向上させることができる。この場合、上記（５）の作業が不要となり、ターゲットプロセッサの命令シーケンスＳ１を用いて消費電力を見積もることとなる。
【００３７】
（消費電力ライブラリの記憶内容）
つぎに、消費電力ライブラリ２１０について説明する。図３は、消費電力ライブラリの記憶内容を示す説明図（その１）である。図３において、消費電力ライブラリ２１０は、命令ごとに、その命令の実行時に消費される電力値を示す消費電力情報３００−１〜３００−ｎを格納している。消費電力情報３００−１〜３００−ｎは、消費電力値を命令とモジュールの性能と関連付けて保持している。
【００３８】
モジュールとは、プロセッサの機能を実現するためのものであり、Ｉ（インストラクション）キャッシュモジュール、Ｄ（データ）キャッシュモジュール、フェッチモジュールおよび演算器（ユニット）モジュールである。また、演算器としては、たとえば、加算器、乗算器、ロードユニットおよびストアユニットなどがある。
【００３９】
ここで、消費電力情報３００−１を例に挙げると、加算命令「ＡＤＤ」の実行時に消費される電力値が、各モジュールの性能ごとに示されている。たとえば、「ＡＤＤ」が実行されると、容量が６４［ＫＢ］のＩキャッシュモジュールでは４［ｍＷ］の電力が消費され、また、加算器１の演算器モジュールでは３［ｍＷ］の電力が消費される。
【００４０】
（消費電力見積装置１００の機能的構成）
つぎに、実施の形態１にかかる消費電力見積装置１００の機能的構成について説明する。図４は、実施の形態１にかかる消費電力見積装置の機能的構成を示すブロック図である。図４において、消費電力見積装置１００は、取得部４０１と、変更部４０２と、算出部４０３と、抽出部４０４と、判断部４０５と、出力部４０６と、を含む構成である。
【００４１】
この制御部となる機能（取得部４０１〜出力部４０６）は、具体的には、たとえば、図１に示したＲＯＭ１０２、ＲＡＭ１０３、ＨＤ１０５、ＦＤ１０７などの記憶領域に記憶されたプログラムをＣＰＵ１０１に実行させることにより、または、Ｉ／Ｆ１０９により、その機能を実現する。また、図４中矢印で示した接続先の機能は、接続元の機能からの出力データを記憶領域から読み込んで、当該機能に関するプログラムをＣＰＵ１０１に実行させるものとする。
【００４２】
まず、取得部４０１は、消費電力の見積もり対象となるプロセッサを構成するモジュールの性能を表わすアーキテクチャ情報、および任意のアプリケーションの動作時に実行される各命令の実行順序を表わす実行命令情報を取得する機能を有する。ここで、アーキテクチャ情報は、プロセッサを構成する各機能部の機能を実現するモジュールの性能を表わす情報である。
【００４３】
モジュールは、たとえば、Ｉキャッシュモジュール、Ｄキャッシュモジュール、フェッチモジュール、コントロールモジュール、レジスタモジュールおよび演算器モジュールなどである。モジュールの性能は、たとえば、ＩキャッシュおよびＤキャッシュの容量やデータ幅、フェッチの命令発行幅、コントロールモジュールの実行並列数、演算器モジュールの演算器数、演算種類、パイプライン段数などによって表現される。
【００４４】
また、実行命令情報は、任意のプロセッサ（図２に示した仮想プロセッサ）の命令レベルシミュレータ（ＩＳＳ）を利用して、任意のアプリケーション（以下、「対象アプリ」という）を動作させたときに得られるシミュレーション結果である。この実行命令情報には、対象アプリの動作時に実行される各命令の実行順序を表わす命令シーケンスが含まれている。なお、アーキテクチャ情報、実行命令情報は、不図示の外部装置から取得することとしてもよく、また、ユーザの操作入力、不図示のデータベースやライブラリからの抽出によって取得することとしてもよい。
【００４５】
ここで、プロセッサを構成する各機能部について説明する。図５は、プロセッサのアーキテクチャ構成の一例を示す説明図である。図５において、プロセッサモデル５００は、命令取出部５０１と、命令解釈部５０２と、実行制御部５０３と、メモリアクセス部５０４と、演算部５０５と、から構成されている。
【００４６】
命令取出部５０１は、実行対象となる命令のソースコード（命令コード）をキャッシュから取り出す。具体的には、たとえば、Ｉ（インストラクション）キャッシュモジュールＭ１によって、その機能を実現する。命令解釈部５０２は、命令取出部５０１によって取り出された命令コードを解釈する。具体的には、たとえば、フェッチモジュールＭ２によって、その機能を実現する。
【００４７】
実行制御部５０３は、プロセッサの全体を制御する。具体的には、たとえば、不図示のコントロールモジュールによって、その機能を実現する。メモリアクセス部５０４は、キャッシュメモリにアクセスする。具体的には、たとえば、Ｄ（データ）キャッシュモジュールＭ３によって、その機能を実現する。演算部５０５は、命令解釈部５０２によって解釈された命令に従って演算をおこなう。具体的には、たとえば、演算器モジュールＭ４によって、その機能を実現する。
【００４８】
上記各モジュールＭ１〜Ｍ４の性能は、各プロセッサのアーキテクチャ情報から特定することができる。図６は、アーキテクチャ情報の具体例を示す説明図（その１）である。図６において、アーキテクチャ情報Ａ１は、見積もり対象となるプロセッサ（ターゲットプロセッサ）を構成するモジュールＭ１〜Ｍ４の性能を表わす電子データである。
【００４９】
このアーキテクチャ情報Ａから、各モジュールＭ１〜Ｍ４の性能を特定することができる。具体的には、ＩキャッシュモジュールＭ１の容量が１６［ＫＢ］、ＤキャッシュモジュールＭ３の容量が１６［ＫＢ］である。また、フェッチモジュールＭ２の並列数が２並列である。また、演算器モジュールＭ４として、加算器（ＡＤＤ）を１個、乗算器（ＭＵＬ）を１個、ロードユニットを１個、ストアユニットを１個、有している。
【００５０】
このため、ターゲットプロセッサでは、１並列で「ＡＤＤ」、「ＭＵＬ」、「ＬＤ」および「ＳＴ」の実行が可能となり、さらに、２並列で「ＡＤＤ−ＭＵＬ」、「ＡＤＤ−ＬＤ」、「ＡＤＤ−ＳＴ」、「ＭＵＬ−ＬＤ」および「ＭＵＬ−ＳＴ」の同時実行が可能となる。ただし、「ＡＤＤ」は加算命令、「ＭＵＬ」は乗算命令、「ＬＤ」はロード命令および「ＳＴ」はストア命令を示している。なお、各演算器は１つずつしか有していないため、同種類の命令（たとえば、「ＡＤＤ−ＡＤＤ」）の同時実行は不可能である。
【００５１】
図４の説明に戻り、変更部４０２は、取得部４０１によって取得されたアーキテクチャ情報に基づいて、実行命令情報から特定される実行順序を、モジュールの性能に応じた実行順序に変更する機能を有する。具体的には、たとえば、アーキテクチャ情報Ａから特定されるモジュールＭ１〜Ｍ４の性能に応じて、実行命令情報から特定される実行順序を変更する。
【００５２】
ここで、各命令の実行順序を表わす命令シーケンスについて説明する。図７は、命令シーケンスの具体例を示す説明図である。図７において、命令シーケンスＳ１は、仮想プロセッサの命令レベルシミュレータを利用して対象アプリを動作させたときの各命令の実行順序を表わしている。命令シーケンスＳ１によれば、「ＡＤＤ」→「ＡＤＤ」→「ＭＵＬ」→「ＬＤ」→・・・→「ＡＤＤ」の順に各命令が実行される。
【００５３】
ここで、変更部４０２による変更処理の具体例を説明する。変更部４０２は、ターゲットプロセッサを構成するモジュールＭ１〜Ｍ４の性能に応じて、対象アプリを動作させるときに実行される各命令のスケジューリングをおこなう。具体的には、たとえば、フェッチモジュールＭ２の並列数から複数命令の同時実行の可否を判断する。
【００５４】
ここで、複数命令の同時実行が可能であると判断された場合、演算器モジュールＭ４の性能、すなわち、演算種類、演算器数を判断して、同時実行可能な命令の組み合わせを判断する。ここでは、２並列で「ＡＤＤ−ＭＵＬ」、「ＡＤＤ−ＬＤ」、「ＡＤＤ−ＳＴ」、「ＭＵＬ−ＬＤ」および「ＭＵＬ−ＳＴ」の同時実行が可能であると判断する。
【００５５】
そして、同時実行可能な命令の組み合わせに基づいて、対象アプリを動作させたときに実行される各命令の最適な実行順序をスケジューリングする。たとえば、市販のスケジューラーソフトを利用して、並列性の向上および実行時間の短縮化などを考慮したスケジューリングをおこなう。なお、命令の実行順序を最適化するスケジューリングについては、公知技術のため詳細な説明を省略する。
【００５６】
図８は、変更後の命令シーケンスを示す説明図である。図８において、命令シーケンスＳ２は、ターゲットプロセッサを構成するモジュールＭ１〜Ｍ４の性能に応じて変更された各命令の実行順序を示すシーケンスである。命令シーケンスＳ２によれば、「ＡＤＤ」→「ＡＤＤ−ＭＵＬ」→「ＬＤ」→「ＡＤＤ−ＳＴ」→・・・→「ＡＤＤ」の順に各命令が実行される。
【００５７】
算出部４０３は、変更部４０２によって変更された実行順序に基づいて、変更後の各命令の実行時に消費されるモジュールごとの電力値を算出する機能を有する。具体的には、たとえば、命令シーケンスＳ２の各命令を実行したときに消費されるモジュールＭ１〜Ｍ４ごとの電力値を算出する。
【００５８】
各モジュールＭ１〜Ｍ４は、様々な電気的な特性を有している。ＩキャッシュモジュールＭ１およびフェッチモジュールＭ２の消費電力は、ターゲットプロセッサで実行される命令数に依存する。このため、モジュールＭ１およびＭ２の消費電力は、たとえば、実行サイクルごとの命令数で決まる値と、ターゲットプロセッサのアーキテクチャで決まる値との足し算によって、それぞれ算出することができる。
【００５９】
また、ＤキャッシュモジュールＭ３の消費電力は、キャッシュメモリに対するアクセス数に依存する。このため、モジュールＭ３の消費電力は、たとえば、実行サイクルごとのアクセス数で決まる値と、ターゲットプロセッサのアーキテクチャで決まる値との足し算によって算出することができる。
【００６０】
また、演算器モジュールＭ４の消費電力は、ターゲットプロセッサで実行される命令の種類に依存する。このため、モジュールＭ４の消費電力は、たとえば、実行サイクルごとの命令の種類で決まる値と、ターゲットプロセッサのアーキテクチャで決まる値との足し算によって算出することができる。上記の各値は、たとえば、消費電力ライブラリ２１０に保持されている。
【００６１】
抽出部４０４は、変更部４０２によって変更された実行順序に基づいて、変更後の各命令の実行時に消費されるモジュールごとの電力値を、消費電力値を各命令とモジュールの性能と関連付けて保持する消費電力ライブラリから抽出する機能を有する。具体的には、たとえば、命令シーケンスＳ２の各実行サイクルで消費されるモジュールＭ１〜Ｍ４ごとの電力値を消費電力ライブラリ２１０から抽出する。
【００６２】
ここで、命令シーケンスＳ２の１サイクル目を例に挙げると、「ＡＤＤ」が実行される。このため、消費電力ライブラリ２１０から消費電力情報３００−１を抽出し、その消費電力情報３００−１から各モジュールＭ１〜Ｍ４の性能に応じた電力値を抽出することとなる。
【００６３】
ここでは、ＩキャッシュモジュールＭ１の電力値：２［ｍＷ］、フェッチモジュールＭ２の電力値：１［ｍＷ］、ＤキャッシュモジュールＭ３の電力値：２［ｍＷ］を抽出する。また、演算器モジュールＭ４の電力値として、加算器１の電力値：３［ｍＷ］、乗算器の電力値：１［ｍＷ］、ロードユニットの電力値：１［ｍＷ］、ストアユニットの電力値：１［ｍＷ］を抽出する。
【００６４】
また、命令シーケンスＳ２の２サイクル目を例に挙げると、「ＡＤＤ−ＭＵＬ」が実行される。このため、消費電力ライブラリ２１０から消費電力情報３００−８を抽出し、その消費電力情報３００−８から各モジュールＭ１〜Ｍ４の性能に応じた電力値を抽出することとなる。
【００６５】
ここでは、ＩキャッシュモジュールＭ１の電力値：２［ｍＷ］、フェッチモジュールＭ２の電力値：２［ｍＷ］、ＤキャッシュモジュールＭ３の電力値：２［ｍＷ］を抽出する。また、演算器モジュールＭ４の電力値として、加算器１の電力値：３［ｍＷ］、乗算器の電力値：３［ｍＷ］、ロードユニットの電力値：１［ｍＷ］、ストアユニットの電力値：１［ｍＷ］を抽出する。
【００６６】
また、算出部４０３は、抽出部４０４によって抽出されたモジュールごとの電力値を積算することにより、変更後の各命令の実行時に消費される電力値を算出する機能を有する。具体的には、命令シーケンスＳ２の１サイクル目を例に挙げると、抽出部４０４によって抽出されたモジュールＭ１〜Ｍ４ごとの電力値：２［ｍＷ］，１［ｍＷ］，２［ｍＷ］，３［ｍＷ］，１［ｍＷ］，１［ｍＷ］，１［ｍＷ］を積算する。この結果、変更後の「ＡＤＤ」の実行時（１サイクル目）に消費される電力値は『２＋１＋２＋３＋１＋１＋１＝１１［ｍＷ］』となる。
【００６７】
また、キャッシュメモリに対するアクセス時のミス／ヒットを考慮して電力値を算出することとしてもよい。判断部４０５は、取得部４０１によって取得された実行命令情報に基づいて、プロセッサ内のキャッシュメモリにアクセスする命令の実行時におけるキャッシュメモリのミス／ヒットを判断する機能を有する。具体的には、たとえば、キャッシュメモリに保持される命令の実行に必要となるデータの存否から、キャッシュメモリのミス／ヒットを判断する。
【００６８】
また、抽出部４０４は、判断部４０５によって判断された判断結果および変更部４０２による変更後の実行順序に基づいて、キャッシュメモリにアクセスする命令の実行時に消費されるモジュールごとの電力値を消費電力ライブラリから抽出する機能を有する。
【００６９】
具体的には、たとえば、ターゲットプロセッサのキャッシュモデルに基づいて、命令シーケンスＳ１を、キャッシュメモリのミス／ヒットを表わすアクセスシーケンスに変更する。このあと、このアクセスシーケンスおよび命令シーケンスＳ２に基づいて、「ＬＤ」または「ＳＴ」の実行時に消費されるモジュールごとの電力値を消費電力ライブラリ２１０から抽出する。
【００７０】
図９は、アクセスシーケンスの具体例を示す説明図である。図９において、アクセスシーケンスＳ３は、キャッシュメモリにアクセスする命令の実行時におけるキャッシュメモリのミス／ヒットを表わしている。具体的には、命令シーケンスＳ１の３サイクル目の「ＬＤ」の実行時にはヒット（ｈｉｔ）となっており、４サイクル目の「ＡＤＤ−ＳＴ」の実行時にはミス（ｍｉｓｓ）となっている。
【００７１】
この場合、抽出部４０４は、命令シーケンスＳ２およびアクセスシーケンスＳ３を統合した命令シーケンスＳ４に基づいて、「ＬＤ」または「ＳＴ」の実行時に消費されるモジュールごとの電力値を消費電力ライブラリ２１０から抽出することとなる。ここで、３サイクル目を例に挙げると、「ＬＤ」の実行時にキャッシュメモリがヒットとなっているため、消費電力ライブラリ２１０から消費電力情報３００−３を抽出し、各モジュールＭ１〜Ｍ４の性能に応じた電力値を抽出することとなる。
【００７２】
また、算出部４０３は、変更後の各命令の実行時に消費される電力値を積算することにより、任意のアプリケーションの動作時に消費される見積もり対象となるプロセッサの電力値を算出する機能を有する。具体的には、たとえば、命令シーケンスＳ４に基づく実行サイクルごとの消費電力値を積算することにより、対象アプリの動作時に消費されるターゲットプロセッサの電力値を算出する。
【００７３】
図１０は、算出結果の具体例を示す説明図である。図１０において、１０１０には、命令シーケンスＳ４に基づく実行サイクルごとに、各モジュールＭ１〜Ｍ４で消費される電力値が示されている。また、１０２０には、各モジュールＭ１〜Ｍ４の電力値が積算された、実行サイクルごとの消費電力値が示されている。
【００７４】
たとえば、命令シーケンスＳ４の１サイクル目に消費される電力値は１１［ｍＷ］であり、また、２サイクル目に消費される電力値は１６［ｍＷ］である。なお、実行サイクルごとの消費電力値（１０２０）を積算することにより、ターゲットプロセッサ全体での消費電力を見積もることができる。
【００７５】
出力部４０６は、算出部４０３によって算出された算出結果を出力する機能を有する。具体的には、たとえば、変更後の各命令の実行時に消費されるモジュールＭ１〜Ｍ４ごとの消費電力値を出力してもよく、また、対象アプリの動作が完了（全実行サイクル終了）したときのモジュールＭ１〜Ｍ４ごとの消費電力値を出力してもよい。
【００７６】
さらに、各モジュールＭ１〜Ｍ４の消費電力値を積算することにより、各命令の実行時（１サイクル）に消費される消費電力値を出力してもよく、また、各命令の実行時に消費される消費電力値を積算することにより、プロセッサ全体の消費電力値を出力してもよい。なお、出力部４０６による出力形式は、ディスプレイ１０８での画面表示、プリンタ１１３での印刷出力、メモリへのデータ出力（保存）、外部のコンピュータ装置への送信のいずれであってもよい。
【００７７】
図１１は、出力結果の具体例を示す説明図である。図１１において、出力結果１１００には、命令シーケンスＳ４に基づく実行サイクルごとの消費電力値が示されている。具体的には、実行時間［ｔ］の経過とともに、実行サイクルごとの消費電力値『１１［ｍＷ］，１６［ｍＷ］，１３［ｍＷ］，１８［ｍＷ］，１８［ｍＷ］，…』が示されている。
【００７８】
（消費電力ライブラリの作成処理）
ここで、消費電力ライブラリ２１０の作成処理の具体例を説明する。まず、既存のプロセッサを用いて、命令シーケンスＳ１に含まれる各命令の実行時に消費される電力値を測定する。具体的には、たとえば、一般的な電力見積もりツールを用いて、プロセッサＡ，Ｂのトランジスタレベルのシミュレーションをおこなう。
【００７９】
これにより、各命令の実行時におけるモジュールＭ１〜Ｍ４ごとの消費電力値を測定することができる。このあと、その測定結果を、各モジュールＭ１〜Ｍ４の性能と関連付けて消費電力ライブラリ２１０に格納する。以下、既存のプロセッサＡ，Ｂを例に挙げて、消費電力ライブラリ２１０の作成処理の具体例を説明する。
【００８０】
図１２は、既存のプロセッサのアーキテクチャ情報を示す説明図である。図１２おいて、アーキテクチャ情報１２１０は、既存のプロセッサＡを構成するモジュールＭ１〜Ｍ４の性能を表わしている。また、アーキテクチャ情報１２２０は、既存のプロセッサＢを構成するモジュールＭ１〜Ｍ４の性能を表わしている。
【００８１】
これらアーキテクチャ情報１２１０，１２２０から特定される既存のプロセッサＡ，Ｂを用いて、命令シーケンスＳ１に含まれる各命令の実行時に消費される電力値を測定する。そして、その測定結果を、プロセッサＡ，Ｂの各モジュールＭ１〜Ｍ４の性能と関連付けて消費電力ライブラリ２１０に格納する。
【００８２】
図１３および図１４は、既存のプロセッサの測定結果を示す説明図である。図１３において、測定結果１３００には、命令ごとに、その命令の実行時に消費されるプロセッサＡの各モジュールＭ１〜Ｍ４の電力値が示されている。また、図１４において、測定結果１４００には、命令ごとに、その命令の実行時に消費されるプロセッサＢの各モジュールＭ１〜Ｍ４の電力値が示されている。
【００８３】
このようにして得られた測定結果１３００，１４００を、ライブラリに保持していくことにより、消費電力ライブラリ２１０を作成することができる。このとき、様々なアプリケーションを動作させることを考慮して、様々な種類の命令セットおよびアーキテクチャのプロセッサを用いて測定することが望ましい。
【００８４】
なお、上述した取得部４０１、変更部４０２、算出部４０３、抽出部４０４、判断部４０５、および出力部４０６は、具体的には、たとえば、図１に示したＲＯＭ１０２、ＲＡＭ１０３、ＨＤ１０５などの記録媒体に記録されたプログラムを、ＣＰＵ１０１が実行することによって、またはＩ／Ｆ１０９によって、その機能を実現する。
【００８５】
（消費電力見積装置の消費電力見積処理手順）
つぎに、実施の形態１にかかる消費電力見積装置１００の消費電力見積処理手順について説明する。図１５は、実施の形態１にかかる消費電力見積装置の消費電力見積処理手順を示すフローチャートである。
【００８６】
図１５のフローチャートにおいて、まず、取得部４０１により、消費電力の見積もり対象となるプロセッサを構成するモジュールの性能を表わすアーキテクチャ情報、および任意のアプリケーションの動作時に実行される各命令の実行順序を表わす実行命令情報を取得したか否かを判断する（ステップＳ１５０１）。
【００８７】
ここで、アーキテクチャ情報および実行命令情報を取得するのを待って（ステップＳ１５０１：Ｎｏ）、取得した場合（ステップＳ１５０１：Ｙｅｓ）、変更部４０２により、取得部４０１によって取得されたアーキテクチャ情報に基づいて、実行命令情報から特定される実行順序を、モジュールの性能に応じた実行順序に変更する（ステップＳ１５０２）。
【００８８】
このあと、判断部４０５により、実行命令情報に基づいて、プロセッサ内のキャッシュメモリにアクセスする命令の実行時におけるキャッシュメモリのミス／ヒットを判断する（ステップＳ１５０３）。そして、抽出部４０４により、変更部４０２によって変更された実行順序および判断部４０５によって判断された判断結果に基づいて、変更後の各命令の実行時に消費されるモジュールごとの消費電力値を消費電力ライブラリ２１０から抽出する（ステップＳ１５０４）。
【００８９】
このあと、算出部４０３により、抽出部４０４によって抽出されたモジュールごとの消費電力値を積算することにより、変更後の各命令の実行時に消費される電力値、すなわち実行サイクルごとの消費電力値を算出する（ステップＳ１５０５）。さらに、算出部４０３により、変更後の各命令の実行時に消費される電力値を積算することにより、アプリケーションの動作時に消費されるプロセッサの消費電力値を算出する（ステップＳ１５０６）。
【００９０】
最後に、出力部４０６により、算出部４０３によって算出された算出結果を出力して（ステップＳ１５０７）、本フローチャートによる一連の処理を終了する。このとき出力される出力結果は、ステップＳ１５０５またはステップＳ１５０６において算出される算出結果のいずれであってもよい。
【００９１】
以上説明した実施の形態１によれば、対象アプリを動作させる命令シーケンスを、見積もり対象となるプロセッサのアーキテクチャに応じて変更し、変更後の命令シーケンスの各実行サイクルでの消費電力をモジュールごとに見積もることができる。これにより、見積もり対象となるプロセッサ向けの命令レベルシミュレータが未開発であっても、命令シーケンスの変更をおこなうだけで、そのプロセッサの消費電力を見積もることができる。
【００９２】
このため、見積もり対象となるプロセッサのアーキテクチャが変更された場合であっても、その都度、命令レベルシミュレータの開発作業および消費電力の測定作業をおこなう必要がなくなり、消費電力の見積もり作業の高速化を実現することができる。
【００９３】
これにより、多くの種類のアーキテクチャのプロセッサの消費電力を見積もることができるようになり、プロセッサをカスタマイズする際における消費電力に対する制約を満たすアーキテクチャの選択を容易にさせる。この結果、ＬＳＩ設計にかかる作業負担を削減し、設計期間の短縮化を図ることができる。
【００９４】
また、仮想プロセッサとして見積もり対象となるプロセッサ、またはそのプロセッサと同種類のアーキテクチャのプロセッサを定義することにより、消費電力の見積もり精度をさらに向上させることができる。
【００９５】
（実施の形態２）
つぎに、実施の形態２について説明する。実施の形態１では、消費電力の見積もり対象となるプロセッサの動作環境下での温度条件を考慮することなく消費電力を見積もる手法について説明したが、実施の形態２では、プロセッサの動作環境下における温度条件を考慮した消費電力の見積もり手法について説明する。
【００９６】
一般に、プロセッサを流れる電流は、温度に依存して変化することが知られている。このため、プロセッサの動作環境下での温度条件が変化するとプロセッサを流れる電流が変化し、プロセッサの消費電力が変化する。そこで、実施の形態２では、この温度条件を考慮した消費電力を見積もることで、より精度の高い消費電力見積もりを実現する。
【００９７】
（消費電力ライブラリの記憶内容）
まず、実施の形態２にかかる消費電力ライブラリ１６００について説明する。図１６は、消費電力ライブラリの記憶内容を示す説明図（その２）である。図１６において、消費電力ライブラリ１６００は、温度ｔ１〜ｔｍごとに、各命令の実行時に消費されるモジュールＭ１〜Ｍ５ごとの電力値を示す消費電力情報リスト１６００−１〜１６００−ｍを格納している。
【００９８】
ここで、消費電力情報リスト１６００−２を例に挙げると、温度ｔ２における各命令の実行時に消費されるモジュールＭ１〜Ｍ５ごとの消費電力値が記憶されている。このように、消費電力ライブラリ１６００には、実施の形態１で説明した消費電力情報３００−１〜３００−ｎ（図３参照）に相当する情報が、温度ｔ１〜ｔｍごとに保持されている。
【００９９】
なお、モジュールＭ１〜Ｍ５は、たとえば、各種容量（１６［ＫＢ］、６４［ＫＢ］など）のＩキャッシュモジュール、Ｄキャッシュモジュールやフェッチモジュール、演算器モジュールなどである。また、図１６では、簡単化のため各モジュールＭ１〜Ｍ５の性能を不図示としている。
【０１００】
（アーキテクチャ情報）
ここで、プロセッサの温度特定に用いるアーキテクチャ情報について説明する。図１７は、アーキテクチャ情報の具体例を示す説明図（その２）である。図１７において、アーキテクチャ情報Ａ２には、見積もり対象となるプロセッサ（ターゲットプロセッサ）を構成するモジュールＭ１〜Ｍ５の性能を表わす情報とともに、ターゲットプロセッサの温度が示されている。このアーキテクチャ情報Ａ２によれば、モジュールＭ１〜Ｍ５の性能１〜５とともに、ターゲットプロセッサの温度ｔ２［℃］を特定することができる。
【０１０１】
（消費電力見積装置１８００の機能的構成）
つぎに、実施の形態２にかかる消費電力見積装置１８００の機能的構成について説明する。なお、実施の形態１において説明した箇所と同一箇所については、同一符号を付して説明を省略する。図１８は、実施の形態２にかかる消費電力見積装置の機能的構成を示すブロック図である。図１８において、消費電力見積装置１８００は、取得部４０１と、変更部４０２と、算出部４０３と、抽出部４０４と、判断部４０５と、出力部４０６と、電力補正部１８０１と、を含む構成である。
【０１０２】
この制御部となる機能（取得部４０１〜出力部４０６、電力補正部１８０１）は、具体的には、たとえば、図１に示したＲＯＭ１０２、ＲＡＭ１０３、ＨＤ１０５、ＦＤ１０７などの記憶領域に記憶されたプログラムをＣＰＵ１０１に実行させることにより、または、Ｉ／Ｆ１０９により、その機能を実現する。また、図１８中矢印で示した接続先の機能は、接続元の機能からの出力データを記憶領域から読み込んで、当該機能に関するプログラムをＣＰＵ１０１に実行させるものとする。
【０１０３】
抽出部４０４は、取得部４０１によって取得されたアーキテクチャ情報に含まれるプロセッサの温度下での変更部４０２による変更後の各命令の実行時に消費されるモジュールごとの電力値を、複数通りの温度下での消費電力値を各命令とモジュールの性能と関連付けて保持する消費電力ライブラリ（たとえば、消費電力ライブラリ１６００）から抽出する機能を有する。
【０１０４】
ここで、プロセッサの温度は、プロセッサの動作環境下での予測温度であり、具体的には、たとえば、プロセッサを搭載するＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）の密度や集積度などから決まるプロセッサ全体またはプロセッサ表面の平均温度であってもよく、また、プロセッサの局所的な温度であってもよい。
【０１０５】
図１７に示したアーキテクチャ情報Ａ２を例に挙げると、抽出部４０４は、アーキテクチャ情報Ａ２からターゲットプロセッサの温度ｔ２を特定し、その温度ｔ２における、変更後の各命令の実行時に消費されるモジュールＭ１〜Ｍ５ごとの電力値を消費電力ライブラリ１６００（消費電力情報リスト１６００−２）から抽出する。
【０１０６】
また、算出部４０３は、抽出部４０４によって抽出されたモジュールごとの電力値を積算することにより、変更後の各命令の実行時に消費される電力値を算出する。上述の例では、モジュールＭ１〜Ｍ５ごとの電力値を積算することにより、ターゲットプロセッサの温度ｔ２における変更後の各命令の実行時に消費される電力値を算出することとなる。
【０１０７】
このように、アーキテクチャ情報から特定されるターゲットプロセッサの温度下での各モジュールの電力値を抽出して積算することにより、ターゲットプロセッサの動作環境下における温度条件を考慮した消費電力を見積もることが可能となり、見積もり精度を向上させることができる。
【０１０８】
また、プロセッサの温度条件に適合するモジュールの電力値が消費電力ライブラリに保持されていない場合には、消費電力ライブラリに保持されている任意の第１および第２の温度下でのモジュールの電力値から、プロセッサの温度下でのモジュールの電力値を補間することとしてもよい。
【０１０９】
このとき、プロセッサの温度に近似する第１および第２の温度におけるモジュールの電力値を用いて補間することとしてもよい。具体的には、抽出部４０４は、複数通りの温度下での消費電力値を各命令とモジュールの性能と関連付けて保持する消費電力ライブラリから、プロセッサの温度に近似する第１および第２の温度下でのモジュールごとの電力値を抽出する。
【０１１０】
そして、電力補正部１８０１は、抽出部４０４によって抽出された第１および第２の温度下でのモジュールごとの電力値を用いて、プロセッサの温度下でのモジュールごとの電力値を補正する。具体的には、たとえば、第１および第２の温度下でのモジュールごとの電力値を線形補間することにより、プロセッサの温度下でのモジュールごとの電力値を算出することができる。
【０１１１】
より詳細に説明すると、第１の温度をｘ、第２の温度をｙ、プロセッサの温度をｚとする（ただし、ｘ＜ｚ＜ｙ）。さらに、温度ｘ、ｙ、ｚにおけるモジュールＭの電力値をそれぞれＥＰ（ｘ）、ＥＰ（ｙ）、ＥＰ（ｚ）とする。この場合、プロセッサの温度ｚにおけるモジュールＭの電力値ＥＰ（ｚ）は『ＥＰ（ｚ）＝ＥＰ（ｘ）＋｛ＥＰ（ｙ）−ＥＰ（ｘ）｝×（ｚ−ｘ）／（ｙ−ｘ）』となる。
【０１１２】
このように、ターゲットプロセッサの温度下での各モジュールの電力値が消費電力ライブラリに保持されていない場合には、任意の第１および第２の温度におけるモジュールごとの電力値を用いて、ターゲットプロセッサの温度におけるモジュールの電力値を求めることができる。
【０１１３】
以上説明した実施の形態２によれば、ターゲットプロセッサの動作環境下における温度条件を考慮して、各命令の実行時に消費されるターゲットプロセッサの消費電力を見積もることが可能となり、見積もり精度を向上させることができる。
【０１１４】
（実施の形態３）
つぎに、実施の形態３について説明する。実施の形態２では、消費電力ライブラリ１６００に複数通りの温度｛ｔ１，ｔ２，…，ｔｍ｝でのモジュールＭ１〜Ｍ５ごとの電力値を保持することとしたが、実施の形態３では、特定温度下での電力値のみが保持されている場合に、プロセッサの動作環境下における温度条件を考慮した消費電力を見積もる手法を提案する。なお、実施の形態１，２において説明した箇所と同一箇所については、同一符号を付して説明を省略する。
【０１１５】
具体的には、消費電力値と温度との関係を表現する関数モデルを用いて、特定温度下での各モジュールの電力値を、プロセッサの温度下での各モジュールの電力値に補正する。これにより、プロセッサの動作環境下における温度条件を考慮した消費電力見積もりを実現するとともに、各命令の実行時に消費されるモジュールごとの電力値を保持する消費電力ライブラリの記憶容量を低減させる。
【０１１６】
（消費電力ライブラリの記憶内容）
まず、実施の形態３にかかる消費電力ライブラリ１９００について説明する。図１９は、消費電力ライブラリの記憶内容を示す説明図（その３）である。図１９において、消費電力ライブラリ１９００には、命令ごとに、温度ｔ１における各命令の実行時に消費されるモジュールＭ１〜Ｍ５ごとの電力値を示す消費電力情報１９００−１〜１９００−ｎが保持されている。
【０１１７】
このように、消費電力ライブラリ１９００には、実施の形態２で説明した消費電力ライブラリ１６００のように複数通りの温度｛ｔ１，ｔ２，…，ｔｍ｝でのモジュールＭ１〜Ｍ５ごとの電力値が保持されているのではなく、特定の温度下（ここでは、温度ｔ１）でのモジュールＭ１〜Ｍ５ごとの電力値のみが保持されている。
【０１１８】
（電力補正部１８０１の具体的処理内容）
つぎに、電力補正部１８０１による具体的な処理内容について説明する。まず、抽出部４０４は、変更部４０２による変更後の各命令の実行時に消費される特定の温度下でのモジュールごとの電力値を消費電力ライブラリ（たとえば、消費電力ライブラリ１９００）から抽出する。
【０１１９】
電力補正部１８０１は、消費電力と温度との関係を表現するプロセッサ固有の関数モデルに、抽出部４０４によって抽出された特定の温度下でのモジュールごとの電力値とプロセッサの温度とを与えることにより、プロセッサの温度下でのモジュールごとの電力値を補正する。なお、プロセッサの温度は、アーキテクチャ情報（たとえば、アーキテクチャ情報Ａ２）から特定される温度である。
【０１２０】
具体的には、たとえば、消費電力と温度との関係を表現する下記式（１）を用いて、特定の温度下でのモジュールの電力値を、プロセッサの温度下でのモジュールの電力値に補正することができる。ただし、特定の温度をｔ、プロセッサの温度をＴとする。また、ＥＰ（ｔ），ＥＰ（Ｔ）は温度ｔ，Ｔにおけるモジュールの電力値であり、Ｐ（ｔ），Ｐ（Ｔ）は温度ｔ，Ｔにおける電力指標である。
【０１２１】
ＥＰ（Ｔ）＝ＥＰ（ｔ）×Ｐ（Ｔ）／Ｐ（ｔ）          ・・・（１）
【０１２２】
また、上記式（１）の電力指標Ｐ（ｔ），Ｐ（Ｔ）は、たとえば、下記式（２）を用いて求めることができる。ただし、ａ，ｂは係数であり、Ｘは温度（ｔまたはＴ）である。
【０１２３】
Ｐ（Ｘ）＝ａ＋ｂ×Ｘ                                ・・・（２）
【０１２４】
上記式（２）を用いると、電力指標Ｐ（ｔ）は『Ｐ（ｔ）＝ａ＋ｂ×ｔ』、電力指標Ｐ（Ｔ）は『Ｐ（Ｔ）＝ａ＋ｂ×Ｔ』となる。上記式（１）および（２）は、たとえば、単一命令を連続実行したときのプロセッサの平均消費電力、または、割込み待ち状態のときのプロセッサの平均消費電力から定めることができる。
【０１２５】
「単一命令を連続実行したときの平均消費電力」または「割込み待ち状態のときの平均消費電力」のいずれを採用するのかは、プロセッサが搭載される電子機器の使用形態に応じて選択することとしてもよい。たとえば、携帯電話機にプロセッサが搭載される場合、割込み待ち状態が多くなることが想定されるため、「割込み待ち状態のときの平均消費電力」から上記式（１）および（２）を定めることとしてもよい。
【０１２６】
なお、上記式（１）、（２）および係数ａ，ｂは、たとえば、ＲＡＭ１０３、ＨＤ１０５、ＦＤ１０７などの記憶領域に予め記憶されているものを読み出すこととしてもよく、また、図１に示したキーボード１１０やマウス１１１をユーザが操作することで入力することとしてもよい。
【０１２７】
また、上述した例では、電力指標Ｐ（ｔ），Ｐ（Ｔ）は上記式（２）を用いて求めることとしたが、温度ごとの電力指標を記憶する電力指標テーブルから抽出することとしてもよい。ここで、電力指標テーブルの具体例について説明する。図２０は、電力指標テーブルの記憶内容を示す説明図（その１）である。
【０１２８】
図２０において、電力指標テーブル２０００には、温度ｔ１〜ｔｍごとの電力指標Ｐ1〜Ｐmが記憶されている。この電力指標テーブル２０００を参照することで、各温度ｔ１〜ｔｍでの電力指標Ｐ（ｔ１）〜Ｐ（ｔｍ）を認識することができる。これにより、電力補正時に、その都度、上記式（２）を用いて電力指標Ｐ（ｔ），Ｐ（Ｔ）を求める必要がなくなる。
【０１２９】
なお、電力指標テーブル２０００は、たとえば、図１に示したキーボード１１０やマウス１１１をユーザが操作することで入力することとしてもよく、また、データベースやライブラリからの抽出により取得することとしてもよい。
【０１３０】
ここで、特定の温度ｔをｔ１、プロセッサの温度Ｔをｔ２とし、電力補正部１８０１により「ＡＤＤ」の実行時に消費されるモジュールＭ１の電力値を補正する場合を例に挙げて説明する。この場合、電力補正部１８０１は、まず、上記式（１）に特定の温度ｔ１におけるモジュールＭ１の電力値ＥＰ（ｔ１）（＝２．０［ｍＷ］）とプロセッサの温度ｔ２とを与えることで下記式（３）を得る。
【０１３１】
ＥＰ（ｔ２）＝２．０［ｍＷ］×Ｐ（ｔ２）／Ｐ（ｔ１）    ・・・（３）
【０１３２】
このあと、電力指標テーブル２０００から温度ｔ１，ｔ２での電力指標Ｐ1，Ｐ2を抽出し、それら電力指標Ｐ1，Ｐ2を上記式（３）に与えることで下記式（４）を得る。
【０１３３】
ＥＰ（ｔ２）＝２．０［ｍＷ］×Ｐ2／Ｐ1                  ・・・（４）
【０１３４】
これにより、「ＡＤＤ」の実行時における特定の温度ｔ１におけるモジュールＭ１の電力値ＥＰ（ｔ１）を、上記式（４）に示すプロセッサの温度ｔ２における電力値ＥＰ（ｔ２）に補正することができる。
【０１３５】
また、算出部４０３は、電力補正部１８０１によって補正された補正後のモジュールごとの電力値を積算することにより、変更後の各命令の実行時に消費される電力値を算出することとなる。
【０１３６】
このように、消費電力値と温度との関係を表現する上記式（１）および（２）を用いて、特定の温度下での各モジュールの電力値を、プロセッサの温度下での各モジュールの電力値に補正することができる。この結果、ターゲットプロセッサの動作環境下における温度条件を考慮した消費電力を見積もることが可能となり、見積もり精度を向上させることができる。
【０１３７】
なお、図１９に示した消費電力ライブラリ１９００では、各命令の実行時に消費されるモジュールＭ１〜Ｍ５ごとの電力値の計測時における温度はすべて共通の温度ｔ１としたが、これに限らない。たとえば、命令ごとに計測時の温度がそれぞれ異なる場合には、各命令の計測時の温度を特定の温度ｔとして、各命令の実行時に消費されるモジュールＭ１〜Ｍ５ごとの電力値を補正することができる。
【０１３８】
また、上述した例では、プロセッサ固有の関数モデル（上記式（１）および（２））を用いて、各モジュールの電力値を補正することとしたが、「モジュール固有の関数モデル」または「モジュール種別固有の関数モデル」を用いて、各モジュールの電力値を補正することとしてもよい。
【０１３９】
ここで、モジュール固有の関数モデルについて説明する。モジュール固有の関数モデルとは、たとえば、Ｉキャッシュモジュール、Ｄキャッシュモジュール、フェッチモジュールおよび演算器モジュールにそれぞれ固有の関数モデルである。具体的には、たとえば、上記式（２）にモジュールごとの係数ａ，ｂを与えることで、モジュール固有の関数モデルを実現することとしてもよい。
【０１４０】
ここで、係数ａ，ｂをモジュールごとに記憶する係数テーブルの具体例について説明する。図２１は、係数テーブルの具体例を示す説明図（その１）である。図２１において、係数テーブル２１００には、モジュールＭ１〜Ｍ５ごとの係数ａ１〜ａ５，ｂ１〜ｂ５が記憶されている。この係数テーブル２１００を参照することで、各モジュールＭ１〜Ｍ５の係数ａ，ｂを認識することができる。
【０１４１】
たとえば、特定の温度ｔにおけるモジュールＭ１の電力値をプロセッサの温度Ｔにおける電力値に補正する場合、電力補正部１８０１は、係数テーブル２１００の中からモジュールＭ１の係数ａ１，ｂ２を抽出し、それら係数ａ１，ｂ２を上記式（２）に与えることで、モジュールＭ１固有の関数モデルを実現することができる。
【０１４２】
また、モジュールごとに各温度における電力指標を記憶する電力指標テーブルを与えることで、モジュール固有の関数モデルを実現することとしてもよい。ここで、電力指標テーブルの具体例について説明する。図２２は、電力指標テーブルの記憶内容を示す説明図（その２）である。
【０１４３】
図２２において、電力指標テーブル２２００には、モジュールＭ１〜Ｍ５ごとに、各温度ｔ１〜ｔｍにおける電力指標Ｐ11〜Ｐ1m，・・・，Ｐ51〜Ｐ5mが記憶されている。この電力指標テーブル２２００を参照することで、モジュールＭ１〜Ｍ５ごとの各温度ｔ１〜ｔｍでの電力指標Ｐ（ｔ１）〜Ｐ（ｔｍ）を認識することができる。
【０１４４】
たとえば、特定の温度ｔ１におけるモジュールＭ１の電力値をプロセッサの温度ｔ２における電力値に補正する場合、電力補正部１８０１は、電力指標テーブル２２００の中からモジュールＭ１の温度ｔ１，ｔ２での電力指標Ｐ11，Ｐ12を抽出し、それら電力指標Ｐ11，Ｐ12を上記式（１）に与えることで、モジュールＭ１固有の関数モデルを実現することができる。
【０１４５】
上述した係数テーブル２１００および電力指標テーブル２２００の記憶内容は、単一命令を連続実行したときの各モジュールの平均消費電力、または、割込み待ち状態のときの各モジュールの平均消費電力から定めることとなる。このため、モジュールの種別、性能が反映された関数モデルを用いて電力値を補正することが可能となり、プロセッサ固有の関数モデルを用いる場合に比べて見積もり精度を向上させることができる。
【０１４６】
なお、係数テーブル２１００または電力指標テーブル２２００は、たとえば、図１に示したキーボード１１０やマウス１１１をユーザが操作することで入力することとしてもよく、また、データベースやライブラリからの抽出により取得することとしてもよい。
【０１４７】
つぎに、モジュール種別固有の関数モデルについて説明する。モジュール種別とは、機能や回路構成などによってモジュールを分類する種別である。具体的には、たとえば、複数のモジュールをロジック回路とメモリ回路とに分類することができる。この場合、Ｉキャッシュモジュール、Ｄキャッシュモジュールおよびフェッチモジュールは、メモリ回路に分類され、演算器モジュールはロジック回路に分類される。
【０１４８】
ここで、モジュールとモジュール種別とを対応付ける対応テーブルの具体例について説明する。図２３は、対応テーブルの具体例を示す説明図である。図２３において、対応テーブル２３００には、モジュールＭ１〜Ｍ５とモジュール種別Ｃ１，Ｃ２とがそれぞれ対応付けて示されている。この対応テーブル２３００を参照することで、各モジュールＭ１〜Ｍ５のモジュール種別Ｃ１，Ｃ２を認識することができる。
【０１４９】
モジュール種別固有の関数モデルは、たとえば、上述したモジュール固有の関数モデルと同様に、上記式（２）にモジュール種別ごとの係数ａ，ｂを与えることで実現することとしてもよい。
【０１５０】
ここで、係数ａ，ｂをモジュール種別ごとに記憶する係数テーブルの具体例について説明する。図２４は、係数テーブルの具体例を示す説明図（その２）である。図２４において、係数テーブル２４００には、モジュール種別Ｃ１，Ｃ２ごとの係数ａC１，ａC２，ｂC１，ｂC２が記憶されている。この係数テーブル２４００を参照することで、各モジュール種別Ｃ１，Ｃ２の係数ａ，ｂを認識することができる。
【０１５１】
たとえば、特定の温度ｔにおけるモジュールＭ１の電力値をプロセッサの温度Ｔにおける電力値に補正する場合、電力補正部１８０１は、まず、対応テーブル２３００を参照してモジュールＭ１のモジュール種別Ｃ１を特定する。そして、係数テーブル２４００の中からモジュール種別Ｃ１の係数ａC１，ｂC１を抽出し、それら係数ａC１，ｂC１を上記式（２）に与えることで、モジュール種別Ｃ１固有の関数モデルを実現することができる。
【０１５２】
また、モジュール種別ごとに各温度における電力指標を記憶する電力指標テーブルを与えることで、モジュール種別固有の関数モデルを実現することとしてもよい。ここで、電力指標テーブルの具体例について説明する。図２５は、電力指標テーブルの記憶内容を示す説明図（その３）である。
【０１５３】
図２５において、電力指標テーブル２５００には、モジュール種別Ｃ１，Ｃ２ごとに、各温度ｔ１〜ｔｍにおける電力指標ＰＣ11〜ＰＣ1m，ＰＣ21〜ＰＣ2mが記憶されている。この電力指標テーブル２５００を参照することで、モジュール種別Ｃ１，Ｃ２ごとの各温度ｔ１〜ｔｍでの電力指標Ｐ（ｔ１）〜Ｐ（ｔｍ）を認識することができる。
【０１５４】
たとえば、特定の温度ｔ１におけるモジュールＭ１の電力値をプロセッサの温度ｔ２における電力値に補正する場合、電力補正部１８０１は、まず、対応テーブル２３００を参照してモジュールＭ１のモジュール種別Ｃ１を特定する。そして、電力指標テーブル２５００の中からモジュール種別Ｃ１の温度ｔ１，ｔ２での電力指標ＰＣ11，ＰＣ12を抽出し、それら電力指標ＰＣ11，ＰＣ12を上記式（１）に与えることで、モジュール種別Ｃ１固有の関数モデルを実現することができる。
【０１５５】
上述した係数テーブル２４００および電力指標テーブル２５００の記憶内容は、モジュール種別ごとに、単一命令を連続実行したときのモジュールの平均消費電力、または、割込み待ち状態のときのモジュールの平均消費電力から定めることとなる。このため、モジュールの種別が反映された関数モデルを用いて電力値を補正することが可能となり、プロセッサ固有の関数モデルを用いる場合に比べて見積もり精度を向上させることができる。
【０１５６】
なお、対応テーブル２３００、係数テーブル２４００または電力指標テーブル２５００は、たとえば、図１に示したキーボード１１０やマウス１１１をユーザが操作することで入力することとしてもよく、また、データベースやライブラリからの抽出により取得することとしてもよい。
【０１５７】
さらに、プロセッサの動作環境下での温度条件を考慮して消費電力を見積もる手法として、算出部４０３により各命令の実行時に消費されるプロセッサの電力値を算出したあとに、電力補正部１８０１により各命令の実行時に消費されるプロセッサの電力値を補正することとしてもよい。
【０１５８】
具体的には、たとえば、電力補正部１８０１は、消費電力ライブラリ１９００から抽出される各モジュールの電力値の替わりに、算出部４０３によって算出された各命令の実行時に消費されるプロセッサの電力値をプロセッサ固有の関数モデルに与えることにより、各命令の実行時に消費されるプロセッサの電力値を補正することができる。これによれば、電力補正部１８０１による電力補正処理をモジュールごとに実行する必要がないため、電力補正処理にかかる処理負荷を低減させることができる。
【０１５９】
（消費電力見積装置の消費電力見積処理手順）
つぎに、実施の形態３にかかる消費電力見積装置１８００の消費電力見積処理手順について説明する。図２６は、実施の形態３にかかる消費電力見積装置の消費電力見積処理手順を示すフローチャートである。
【０１６０】
図２６のフローチャートにおいて、まず、取得部４０１により、消費電力の見積もり対象となるプロセッサを構成するモジュールの性能とプロセッサの温度とを表わすアーキテクチャ情報、および任意のアプリケーションの動作時に実行される各命令の実行順序を表わす実行命令情報を取得したか否かを判断する（ステップＳ２６０１）。
【０１６１】
ここで、アーキテクチャ情報および実行命令情報を取得するのを待って（ステップＳ２６０１：Ｎｏ）、取得した場合（ステップＳ２６０１：Ｙｅｓ）、変更部４０２により、取得部４０１によって取得されたアーキテクチャ情報に基づいて、実行命令情報から特定される実行順序を、モジュールの性能に応じた実行順序に変更する（ステップＳ２６０２）。
【０１６２】
このあと、判断部４０５により、実行命令情報に基づいて、プロセッサ内のキャッシュメモリにアクセスする命令の実行時におけるキャッシュメモリのミス／ヒットを判断する（ステップＳ２６０３）。そして、抽出部４０４により、変更部４０２によって変更された実行順序および判断部４０５によって判断された判断結果に基づいて、変更後の各命令の実行時に消費されるモジュールごとの消費電力値を消費電力ライブラリ１９００から抽出する（ステップＳ２６０４）。
【０１６３】
このあと、電力補正部１８０１により、消費電力値と温度との関係を表現する関数モデルに、抽出部４０４によって抽出された特定の温度におけるモジュールごとの電力値とアーキテクチャ情報に含まれるプロセッサの温度とを与えることにより、プロセッサの温度におけるモジュールごとの消費電力値を補正する（ステップＳ２６０５）。
【０１６４】
そして、算出部４０３により、電力補正部１８０１によって補正された補正後のモジュールごとの消費電力値を積算することにより、変更後の各命令の実行時に消費される電力値、すなわち実行サイクルごとの消費電力値を算出する（ステップＳ２６０６）。さらに、算出部４０３により、変更後の各命令の実行時に消費される電力値を積算することにより、アプリケーションの動作時に消費されるプロセッサの消費電力値を算出する（ステップＳ２６０７）。
【０１６５】
最後に、出力部４０６により、算出部４０３によって算出された算出結果を出力して（ステップＳ２６０８）、本フローチャートによる一連の処理を終了する。このとき出力される出力結果は、ステップＳ２６０６またはステップＳ２６０７において算出される算出結果のいずれであってもよい。
【０１６６】
以上説明した実施の形態３によれば、消費電力と温度との関係を表現する関数モデルを用いて、特定の温度下での各モジュールの電力値を、プロセッサの温度下での各モジュールの電力値に補正することができる。この結果、ターゲットプロセッサの動作環境下における温度条件を考慮した消費電力を見積もることが可能となり、見積もり精度を向上させることができる。また、複数通りの温度下でのモジュールごとの電力値を予め保持しておく必要がないため消費電力ライブラリの記憶容量を低減させることができる。
【０１６７】
以上説明したように、消費電力見積プログラム、該プログラムを記録したコンピュータに読み取り可能な記録媒体、消費電力見積装置、および消費電力見積方法によれば、プロセッサの消費電力を高速でかつ高精度に見積もることができる。
【０１６８】
なお、本実施の形態で説明した消費電力見積方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネットなどのネットワークを介して配布することが可能な伝送媒体であってもよい。
【０１６９】
また、本実施の形態で説明した消費電力見積装置１００，１８００は、スタンダードセルやストラクチャードＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などの特定用途向けＩＣ（以下、単に「ＡＳＩＣ」と称す。）やＦＰＧＡなどのＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）によっても実現することができる。具体的には、たとえば、上述した消費電力見積装置１００の機能的構成４０１〜４０６をＨＤＬ記述によって機能定義し、そのＨＤＬ記述を論理合成してＡＳＩＣやＰＬＤに与えることにより、消費電力見積装置１００を製造することができる。
【０１７０】
以上の実施形態に関し、さらに以下の付記を開示する。
【０１７１】
（付記１）コンピュータを、
消費電力の見積もり対象となるプロセッサを構成するモジュールの性能を表わすアーキテクチャ情報、および任意のアプリケーションの動作時に実行される各命令の実行順序を表わす実行命令情報を取得する取得手段、
前記取得手段によって取得された前記アーキテクチャ情報に基づいて、前記実行命令情報から特定される第１実行順序を、前記モジュールの性能に応じた第２実行順序に変更する変更手段、
前記変更手段によって変更された前記第２実行順序に基づいて、変更後の各命令の実行時に消費される前記モジュールごとの電力値を算出する算出手段、
前記算出手段によって算出された算出結果を出力する出力手段、
として機能をさせることを特徴とする消費電力見積プログラム。
【０１７２】
（付記２）前記コンピュータを、
前記変更手段によって変更された前記第２実行順序に基づいて、変更後の各命令の実行時に消費される前記モジュールごとの電力値を、消費電力値を各命令とモジュールの性能と関連付けて保持する消費電力ライブラリから抽出する抽出手段として機能させ、
前記算出手段は、
前記抽出手段によって抽出されたモジュールごとの電力値を積算することにより、変更後の各命令の実行時に消費される電力値を算出することを特徴とする付記１に記載の消費電力見積プログラム。
【０１７３】
（付記３）前記算出手段は、
さらに、変更後の各命令の実行時に消費される電力値を積算することにより、前記アプリケーションの動作時に消費される前記プロセッサの電力値を算出することを特徴とする付記２に記載の消費電力見積プログラム。
【０１７４】
（付記４）前記コンピュータを、
前記実行命令情報に基づいて、前記プロセッサ内のキャッシュメモリにアクセスする命令の実行時における前記キャッシュメモリのミス／ヒットを判断する判断手段として機能させ、
前記抽出手段は、
前記判断手段によって判断された判断結果および変更後の前記第２実行順序に基づいて、前記キャッシュメモリにアクセスする命令の実行時に消費されるモジュールごとの電力値を前記消費電力ライブラリから抽出することを特徴とする付記２または３に記載の消費電力見積プログラム。
【０１７５】
（付記５）前記変更手段は、
前記アーキテクチャ情報に基づいて、前記実行命令情報から特定される前記第１実行順序を、並列に実行可能な並列数に応じた前記第２実行順序に変更することを特徴とする付記１〜４のいずれか一つに記載の消費電力見積プログラム。
【０１７６】
（付記６）前記算出手段は、
変更後の各命令の実行命令数に基づいて、当該各命令の実行時に消費される前記モジュールごとの電力値を算出することを特徴とする付記１に記載の消費電力見積プログラム。
【０１７７】
（付記７）前記算出手段は、
変更後の各命令の演算種類に基づいて、当該各命令の実行時に消費される前記モジュールごとの電力値を算出することを特徴とする付記１に記載の消費電力見積プログラム。
【０１７８】
（付記８）前記実行命令情報は、前記見積もり対象となるプロセッサの命令レベルシミュレータを利用して前記アプリケーションを動作させたときに実行される各命令の実行順序を表わす情報であり、
前記算出手段は、
前記実行命令情報から特定される前記第１実行順序に基づいて、前記アプリケーションの動作時に実行される各命令の実行時に消費される電力値を算出することを特徴とする付記１〜７のいずれか一つに記載の消費電力見積プログラム。
【０１７９】
（付記９）前記アーキテクチャ情報は、前記プロセッサの動作環境下における当該プロセッサの温度を表わす情報を含んでおり、
前記消費電力ライブラリは、複数通りの温度における消費電力値を各命令とモジュールの性能と関連付けて保持しており、
前記抽出手段は、
前記アーキテクチャ情報に含まれる前記プロセッサの温度における変更後の各命令の実行時に消費される前記モジュールごとの電力値を、前記消費電力ライブラリから抽出することを特徴とする付記１〜８のいずれか一つに記載の消費電力見積プログラム。
【０１８０】
（付記１０）前記コンピュータを、
前記モジュールごとの電力値を補正する電力補正手段として機能させ、
前記抽出手段は、
前記プロセッサの温度に近似する第１および第２の温度における前記モジュールごとの電力値を前記消費電力ライブラリから抽出し、
前記電力補正手段は、
前記抽出手段によって抽出された第１および第２の温度における前記モジュールごとの電力値を用いて、前記プロセッサの温度における前記モジュールごとの電力値を補正し、
前記算出手段は、
前記電力補正手段によって補正された補正後のモジュールごとの電力値を積算することにより、変更後の各命令の実行時に消費される電力値を算出することを特徴とする付記９に記載の消費電力見積プログラム。
【０１８１】
（付記１１）前記アーキテクチャ情報は、前記プロセッサの動作環境下における前記プロセッサの温度を表わす情報を含んでおり、
前記消費電力ライブラリは、特定の温度における消費電力値を各命令とモジュールの性能と関連付けて保持しており、
前記コンピュータを、
前記モジュールごとの電力値を補正する電力補正手段として機能させ、
前記抽出手段は、
前記変更手段による変更後の各命令の実行時に消費される前記モジュールごとの電力値を、前記消費電力ライブラリから抽出し、
前記電力補正手段は、
消費電力値と温度との関係を表現する前記プロセッサ固有の関数モデルに、前記抽出手段によって抽出された特定の温度におけるモジュールごとの電力値と前記アーキテクチャ情報に含まれる前記プロセッサの温度とを与えることにより、前記プロセッサの温度における前記モジュールごとの電力値を補正し、
前記算出手段は、
前記電力補正手段によって補正された補正後のモジュールごとの電力値を積算することにより、変更後の各命令の実行時に消費される電力値を算出することを特徴とする付記１〜８のいずれか一つに記載の消費電力見積プログラム。
【０１８２】
（付記１２）前記電力補正手段は、
前記特定の温度における各モジュールの電力値と前記プロセッサの温度とを、消費電力値と温度との関係を表現する前記モジュール固有の関数モデルにそれぞれ与えることにより、前記プロセッサの温度における前記モジュールごとの電力値を補正することを特徴とする付記１１に記載の消費電力見積プログラム。
【０１８３】
（付記１３）前記電力補正手段は、
前記特定の温度における各モジュールの電力値と前記プロセッサの温度とを、消費電力値と温度との関係を表現する前記モジュールを分類するモジュール種別固有の関数モデルにそれぞれ与えることにより、前記プロセッサの温度における前記モジュールごとの電力値を補正することを特徴とする付記１１に記載の消費電力見積プログラム。
【０１８４】
（付記１４）前記算出手段は、
前記抽出手段によって抽出されたモジュールごとの電力値を積算することにより、変更後の各命令の実行時に消費される電力値を算出し、
前記電力補正手段は、
前記算出手段によって算出された各命令の実行時に消費される電力値と前記プロセッサの温度とを前記プロセッサ固有の関数モデルに与えることにより、前記プロセッサの温度における各命令の実行時に消費される電力値を補正し、
前記出力手段は、
前記電力補正手段によって補正された補正後の各命令の実行時に消費される電力値を出力することを特徴とする付記１１に記載の消費電力見積プログラム。
【０１８５】
（付記１５）付記１〜１４のいずれか一つに記載の消費電力見積プログラムを記録したコンピュータに読み取り可能な記録媒体。
【０１８６】
（付記１６）消費電力の見積もり対象となるプロセッサを構成するモジュールの性能を表わすアーキテクチャ情報、および任意のアプリケーションの動作時に実行される各命令の実行順序を表わす実行命令情報を取得する取得手段と、
前記取得手段によって取得された前記アーキテクチャ情報に基づいて、前記実行命令情報から特定される第１実行順序を、前記モジュールの性能に応じた第２実行順序に変更する変更手段と、
前記変更手段によって変更された前記第２実行順序に基づいて、変更後の各命令の実行時に消費される前記モジュールごとの電力値を算出する算出手段と、
前記算出手段によって算出された算出結果を出力する出力手段と、
を備えることを特徴とする消費電力見積装置。
【０１８７】
（付記１７）制御手段および記憶手段を備えるコンピュータが、
前記制御手段により、消費電力の見積もり対象となるプロセッサを構成するモジュールの性能を表わすアーキテクチャ情報、および任意のアプリケーションの動作時に実行される各命令の実行順序を表わす実行命令情報を取得する取得工程と、
前記制御手段により、前記取得工程によって取得された前記アーキテクチャ情報に基づいて、前記実行命令情報から特定される第１実行順序を、前記モジュールの性能に応じた第２実行順序に変更する変更工程と、
前記制御手段により、前記変更工程によって変更された前記第２実行順序に基づいて、変更後の各命令の実行時に消費される前記モジュールごとの電力値を算出する算出工程と、
前記制御手段により、前記算出工程によって算出された算出結果を出力する出力工程と、
を実行することを特徴とする消費電力見積方法。
【図面の簡単な説明】
【０１８８】
【図１】実施の形態１にかかる消費電力見積装置のハードウェア構成を示すブロック図である。
【図２】実施の形態１の概要を示す説明図である。
【図３】消費電力ライブラリの記憶内容を示す説明図（その１）である。
【図４】実施の形態１にかかる消費電力見積装置の機能的構成を示すブロック図である。
【図５】プロセッサのアーキテクチャ構成の一例を示す説明図である。
【図６】アーキテクチャ情報の具体例を示す説明図（その１）である。
【図７】命令シーケンスの具体例を示す説明図である。
【図８】変更後の命令シーケンスを示す説明図である。
【図９】アクセスシーケンスの具体例を示す説明図である。
【図１０】算出結果の具体例を示す説明図である。
【図１１】出力結果の具体例を示す説明図である。
【図１２】既存のプロセッサのアーキテクチャ情報を示す説明図である。
【図１３】既存のプロセッサの測定結果を示す説明図（その１）である。
【図１４】既存のプロセッサの測定結果を示す説明図（その２）である。
【図１５】実施の形態１にかかる消費電力見積装置の消費電力見積処理手順を示すフローチャートである。
【図１６】消費電力ライブラリの記憶内容を示す説明図（その２）である。
【図１７】アーキテクチャ情報の具体例を示す説明図（その２）である。
【図１８】実施の形態２にかかる消費電力見積装置の機能的構成を示すブロック図である。
【図１９】消費電力ライブラリの記憶内容を示す説明図（その３）である。
【図２０】電力指標テーブルの記憶内容を示す説明図（その１）である。
【図２１】係数テーブルの具体例を示す説明図（その１）である。
【図２２】電力指標テーブルの記憶内容を示す説明図（その２）である。
【図２３】対応テーブルの具体例を示す説明図である。
【図２４】係数テーブルの具体例を示す説明図（その２）である。
【図２５】電力指標テーブルの記憶内容を示す説明図（その３）である。
【図２６】実施の形態３にかかる消費電力見積装置の消費電力見積処理手順を示すフローチャートである。
【符号の説明】
【０１８９】
１００，１８００  消費電力見積装置
２１０  消費電力ライブラリ
３００−１〜３００−ｎ  消費電力情報
４０１  取得部
４０２  変更部
４０３  算出部
４０４  抽出部
４０５  判断部
４０６  出力部
５０１  命令取出部
５０２  命令解釈部
５０３  実行制御部
５０４  メモリアクセス部
５０５  演算部
１１００  出力結果
１２１０，１２２０，Ａ  アーキテクチャ情報
１３００，１４００  測定結果
１８０１  電力補正部
Ｍ１  Ｉキャッシュモジュール
Ｍ２  フェッチモジュール
Ｍ３  Ｄキャッシュモジュール
Ｍ４  演算器モジュール
Ｓ１，Ｓ２，Ｓ４  命令シーケンス
Ｓ３  アクセスシーケンス
【図１】
0005277781.tif 000002
【図２】
0005277781.tif 000003
【図３】
0005277781.tif 000004
【図４】
0005277781.tif 000005
【図５】
0005277781.tif 000006
【図６】
0005277781.tif 000007
【図７】
0005277781.tif 000008
【図８】
0005277781.tif 000009
【図９】
0005277781.tif 000010
【図１０】
0005277781.tif 000011
【図１１】
0005277781.tif 000012
【図１２】
0005277781.tif 000013
【図１３】
0005277781.tif 000014
【図１４】
0005277781.tif 000015
【図１５】
0005277781.tif 000016
【図１６】
0005277781.tif 000017
【図１７】
0005277781.tif 000018
【図１８】
0005277781.tif 000019
【図１９】
0005277781.tif 000020
【図２０】
0005277781.tif 000021
【図２１】
0005277781.tif 000022
【図２２】
0005277781.tif 000023
【図２３】
0005277781.tif 000024
【図２４】
0005277781.tif 000025
【図２５】
0005277781.tif 000026
【図２６】
0005277781.tif 000027