(57)【特許請求の範囲】
【請求項１】
プロセッサ設計を特徴付ける方法であって、
トレーニングプログラムを特定するステップと、
前記トレーニングプログラムを実行するプロセッサの実行サイクルが分割されて形成される複数のタイミングウインドウの各々について、前記プロセッサの低レベルシミュレーションから平均電力消費を判定するステップと、
１以上のパラメータを特定するステップと、
前記複数のタイミングウインドウの各々について、前記トレーニングプログラムの高レベルシミュレーションから各パラメータの値を判定するステップと、
タイミングウインドウの各々について、パラメータに関連する係数の乗算されたパラメータ各々の値の総和に等しい推定された電力消費を判定するステップと、
前記推定された電力消費が、タイミングウインドウの過半数の平均電力消費に近づくように前記係数を選択するステップと、
を有する方法。
【請求項２】
プロセッサ設計を特徴付ける装置であって、
トレーニングプログラムを特定するキャラクタリゼーションツールと、
前記トレーニングプログラムを実行するプロセッサの実行サイクルが分割されて形成される複数のタイミングウインドウの各々について、前記プロセッサの低レベルシミュレーションから平均電力消費を判定する電力計算器と、
１以上のパラメータを特定し、前記複数のタイミングウインドウの各々について、前記トレーニングプログラムの高レベルシミュレーションから各パラメータの値を判定するパラメータ抽出器と、
タイミングウインドウの各々について、パラメータに関連する係数の乗算されたパラメータ各々の値の総和に等しい推定された電力消費を判定するリニアプログラミングモジュールであって、前記推定された電力消費が、タイミングウインドウの過半数の平均電力消費に近づくように前記係数を選択するリニアプログラミングモジュールと、
を有する装置。
【請求項３】
前記トレーニングプログラムが第１トレーニングプログラムであり、
前記タイミングウインドウが第１の複数のタイミングウインドウであり、
前記キャラクタリゼーションツールは、第２トレーニングプログラムを特定し、
前記電力計算器は、第２の複数のタイミングウインドウの各々について、前記第２トレーニングプログラムを実行するプロセッサの低レベルシミュレーションから平均電力消費を判定し、
前記パラメータ抽出器は、前記第２の複数のタイミングウインドウの各々について、前記第２トレーニングプログラムの高レベルシミュレーションから各パラメータの値を判定し、
前記リニアプログラミングモジュールは、前記第２の複数のタイミングウインドウの各々について、パラメータに関連する係数の乗算されたパラメータ各々の値の総和に等しい推定された電力消費を判定し、前記リニアプログラミングモジュールは、前記推定された電力消費が、前記第１の複数のタイミングウインドウ及び前記第２の複数のタイミングウインドウ双方の過半数についての平均電力消費に近づくように前記係数を選択する請求項２記載の装置。
【請求項４】
前記推定された電力消費及び前記平均電力消費間の差分が或る定数より小さい場合に、前記推定された電力消費は前記平均電力消費に近い請求項２記載の装置。
【請求項５】
ソフトウエアプログラムを特定するホストプロセッサを更に有する請求項２記載の装置であって、
前記タイミングウインドウが第１の複数のタイミングウインドウであり、
前記パラメータ抽出器は、第２の複数のタイミングウインドウの各々について、前記ソフトウエアプログラムの高レベルシミュレーションから各パラメータの値を判定し、
前記ホストプロセッサは、前記第２の複数のタイミングウインドウの各々について、パラメータに関連する係数の掛かったパラメータ各々の値の総和から前記ソフトウエアプログラムの推定された電力消費を決定する請求項２記載の装置。
【請求項６】
前記トレーニングプログラムがアプリケーションドメインを表現する請求項２記載の装置。
【請求項７】
タイミングウインドウ各々について、前記推定された電力消費及び前記平均電力消費間の差分に電力推定誤差が等しく、
推定された電力消費は、誤差の値が最小の場合に前記平均電力消費に近く、前記誤差の値は：
全てのタイミングウインドウに対して最大の電力推定誤差に等しい最大電力推定誤差、
各タイミングウインドウについて前記電力推定誤差の平均に等しい平均電力推定誤差、及び
前記最大電力推定誤差及び前記平均電力推定誤差の重み付け加算値
の何れかから選択されたものに等しい請求項２記載の装置。
【請求項８】
前記低レベルシミュレーションがゲートレベルシミュレーションであり、前記高レベルシミュレーションが命令セットシミュレーションである請求項２記載の装置。
【請求項９】
プロセッサ設計を特徴付ける媒体中にエンコードされる論理プログラムであって、
トレーニングプログラムを特定するステップと、
前記トレーニングプログラムを実行するプロセッサの実行サイクルが分割されて形成される複数のタイミングウインドウの各々について、前記プロセッサの低レベルシミュレーションから平均電力消費を判定するステップと、
１以上のパラメータを特定するステップと、
前記複数のタイミングウインドウの各々について、前記トレーニングプログラムの高レベルシミュレーションから各パラメータの値を判定するステップと、
タイミングウインドウの各々について、パラメータに関連する係数の乗算されたパラメータ各々の値の総和に等しい推定された電力消費を判定するステップと、
前記推定された電力消費が、タイミングウインドウの過半数の平均電力消費に近づくように前記係数を選択するステップと、
をコンピュータに実行させる論理プログラム。
【請求項１０】
プロセッサ設計を特徴付けるシステムであって、
トレーニングプログラムを特定する手段と、
前記トレーニングプログラムを実行するプロセッサの実行サイクルが分割されて形成される複数のタイミングウインドウの各々について、前記プロセッサの低レベルシミュレーションから平均電力消費を判定する手段と、
１以上のパラメータを特定する手段と、
前記複数のタイミングウインドウの各々について、前記トレーニングプログラムの高レベルシミュレーションから各パラメータの値を判定する手段と、
タイミングウインドウの各々について、パラメータに関連する係数の乗算されたパラメータ各々の値の総和に等しい推定された電力消費を判定する手段と、
前記推定された電力消費が、タイミングウインドウの過半数の平均電力消費に近づくように前記係数を選択する手段と、
を有するシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に電力分析に関連し、特にソフトウエアプログラムがプロセッサで実行される際の電力消費を評価することに関連する。
【背景技術】
【０００２】
多くの電子システムでは、システムの動作時にどの程度多くの電力が消費されるかを知ることが望まれる。しばしば低電力消費であることは重要な設計基準になる。なぜなら電力消費はシステム温度及びバッテリ利用度に特に影響するからである。多くの場合、ソフトウエアの動作が電力消費に影響する。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
本発明の課題は、プロセッサで実行されるソフトウエアプログラムの電力消費を推定する技法を提供することである。
【課題を解決するための手段】
【０００４】
特定の実施例では、その技法は、プロセッサの電力モデルを作成することで特定のプロセッサで動作するソフトウエアプログラムの電力消費を推定する方法で説明される。プロセッサの電力モデルを求めた後に、そのプロセッサで走る様々なソフトウエアプログラムについて電力消費を推定することができる。
【０００５】
特定の実施例によれば、プロセッサ設計を特徴付ける方法は、トレーニングプログラムを特定することを含む。複数のタイミングウインドウの各々について、前記トレーニングプログラムを実行するプロセッサの低レベルシミュレーションから平均電力消費が判定される。１以上のパラメータが特定され、タイミングウインドウの各々について、前記トレーニングプログラムの高レベルシミュレーションから各パラメータの値が判定される。
【０００６】
タイミングウインドウの各々について、パラメータに関連する係数の乗算されたパラメータ各々の値の総和に等しい推定された電力消費が判定される。前記推定された電力消費が、タイミングウインドウの過半数の平均電力消費に近づくように前記係数が選択される。
【発明を実施するための最良の形態】
【０００７】
本発明による実施例は様々な技術的利点をもたらす。例えば、これらの技法は、プロセッサで動作するソフトウエアプログラムの電力消費を高速且つ正確に推定する方法をもたらす。ある実施例は、短い動作期間の間での個々のサブシステムの電力消費を推定する方法をもたらす。特定の実施例は、ゲートレベルのモデリングよりも高速であって命令レベルのモデリングよりも正確なソフトウエア電力消費推定方法をもたらす。ある実施例はプロセッサの電力消費特性の線形モデルと、その線形モデル用のパラメータ及び関連する係数を決定する方法を用意し、プロセッサの電力消費を正確に推定する。ある実施例では、ソフトウエアの電力消費を推定する方法は多くの様々な組み込みアプリケーションに適用可能である。
【０００８】
本発明の他の技術的利点は、以下の説明、図面及び特許請求の範囲から当業者にとって更に明白になるであろう。なお、具体的な利点が上記に列挙されたが、様々な実施例は列挙された利点の全部又は一部を含んでよいし、全く含まなくてもよい。
【０００９】
本発明及びその利点に関する更に完全な理解を期するため、添付図面に関連する以下の説明が参照される。
【実施例１】
【００１０】
図１はソフトウエア電力消費を推定するためのシステムを示し、全体的に１０で示されている。図示されているように、システム１０は高レベルシミュレータ１２、低レベルシミュレータ１４、キャラクタリゼーションツール１６、メモリ１８、ホストコンピュータ２０及びユーザインターフェース２２を含む。概してシステム１０内の要素は、ソフトウエア電力消費を推定するために相互運用する。総電力消費又は平均電力消費を推定することでしばしば十分であるが、場合によっては、設計モジュール各々が消費する電力量や、如何なるプログラム状態又は入力データの下にあるかを知る必要がある。この目的のために回路レベルの又はゲートレベルのシミュレータが使用されるかもしれないが、これらの手法はしばしば時間がかかりすぎる。
【００１１】
高レベルシミュレータ１２は、プログラムの動作特性を確認するためにプログラムの動作を模擬する。特定の実施例によれば、高レベルシミュレータ１２は、シミュレートされるプログラム及び関連するテストベクトルを入力として受信する。プログラムのシミュレーションに続いて、高レベルシミュレータ１２はそのプログラムの動作に関する特徴を用意する。例えば高レベルシミュレータ１２は命令セットシミュレータでもよく、その命令セットシミュレータは、適用される所与のテストベクトルについてそのプログラムの命令トレース（履歴）を用意する。
【００１２】
低レベルシミュレータ１４は、プログラムの動作特性を確認するために特定のプロセッサでのプログラムの動作を模擬する。低レベルシミュレータ１４は、シミュレートするのにより多くの時間を要するかもしれないが、プログラムの平均電力消費を判定するのに使用される場合にはより正確な結果をもたらすことができる点で主に高レベルシミュレータ１２と異なる。特定の実施例によれば、低レベルシミュレータ１４は、シミュレートされるプログラム、そのプログラム用のテストベクトル、及びそのプログラムが実行されるプロセッサに関する情報を入力として受信する。例えば低レベルシミュレータ１４は、シミュレーション中にゲートの出力変化を示すゲートレベルシミュレータでもよい。
【００１３】
キャラクタリゼーションツール１６は、テストプロセッサの電力モデルを作成する。テストプロセッサの電力モデルは、そのテストプロセッサに実装されるソフトウエアプログラムについて推定される消費電力を迅速且つ正確にシステム１０が決定することを可能にする。特定の実施例では、この電力モデルを作成するために、キャラクタリゼーションツール１６は：(i)テストベクトル及びトレーニングプログラムの高レベルシミュレーション結果及び(ii)そのテストプロセッサに関するテストベクトル及びトレーニングプログラムの低レベルシミュレーション結果を受信する。図示の例では、高レベルシミュレータ１２はハイレベルシミュレーション結果を用意し、低レベルシミュレータ１４はローレｖｅルシミュレーション結果を用意する。図示されるように、キャラクタリゼーションツール１６はタイミングディバイダ２４、電力計算器２６、パラメータ抽出器２８及び線形プログラミングモジュール３０を含む。
【００１４】
タイミングディバイダ２４は、高レベルシミュレーション及び低レベルシミュレーション双方を特定のプロセッササイクル数に対応するタイミングウインドウに分ける。タイミングウインドウは数千サイクル長にも及ぶ順序でもよい。しかしながらシステム１０は、プロセッサの動作部分を分けるために、固定長でも可変長でも適切などんな長さでもよいタイミングウインドウを有するタイミングディバイダ２４をも想定している。特定のタイミングウインドウでは、高レベルシミュレーション及び低レベルシミュレーションは、たとえ異なる方法であってもトレーニングプログラムについて実質的に同じ動作をシミュレートする。高レベルシミュレーション及び低レベルシミュレーションをタイミングウインドウに分割した後に、タイミングディバイダ２４は低レベルシミュレーション結果を電力計算器２６に伝送し、高レベルシミュレーション結果をパラメータ抽出器２８に伝送する。
【００１５】
電力計算器２６は低レベルシミュレーションを用いて各タイミングウインドウについてトレーニングプログラムの平均電力消費を判定する。各タイミングウインドウについて判定された平均電力消費は完璧に正確である必要はないことが理解される。電力計算器２６はその結果を線形プログラミングモジュール３０に送る。
【００１６】
パラメータ抽出器２８は各タイミングウインドウについて高レベルシミュレーションにおけるパラメータ(又は一群のパラメータ)の値を判定する。パラメータは、そのプログラムの高レベルシミュレーションから得られるプログラムに関する特徴又は特徴群を表現する。例としてパラメータは命令キャッシュアクセス数、行われる分岐として予想される分岐実行回数、同じキャッシュラインをアクセスする２つの連続的なロード命令対の数等を含んでもよい。タイミングウインドウ各々について、パラメータ抽出器２８は高レベルシミュレーションにおけるパラメータ(又はパラメータ群)の値を確認する。例えば、１つのタイミングウインドウに関する高レベルシミュレーションは、１０回の命令キャッシュアクセスがあることを示すかもしれない。命令キャッシュアクセス数がパラメータであったならば、パラメータ抽出器２８はそのパラメータの値が１０であることを確認する。パラメータ抽出器２８はその結果を線形プログラミングモジュール３０に送信する。ある実施例ではパラメータ抽出器２８はどのパラメータを評価するかを決定してもよい。評価されたパラメータは、テストプロセッサの電力モデルを作成するために線形プログラミングモジュール３０で使用可能である。
【００１７】
図示されているように、線形プログラミングモジュール３０は、電力計算器３６から得られた平均電力消費量及びパラメータ抽出器２８から得られたパラメータ及び値を利用して、テストプロセッサの電力モデルを作成する。各タイミングウインドウについて、関連する係数の掛かったパラメータは、そのタイミングウインドウについての平均的な電力消費を近似する。あるタイミングウインドウの平均電力消費と、パラメータ及び係数から算出された推定された電力消費との差分は、電力推定誤差になる。線形プログラミングモジュール３０はそのパラメータについての最適な係数（電力推定誤差を最少にする係数）を見出す。ある実施例では、線形プログラミングモジュール３０は電力推定誤差が特定の範囲内に収まるか否かを予測する。収まらなければ、線形プログラミングモジュールは、パラメータ抽出器２８から新たなデータを要求することで分析にパラメータを追加する。他の実施例では、線形プログラミングモジュール３０は、関連する係数の掛かったパラメータ値が或る数式の中で他の項に比較して非常に小さいか否かを確認する。その場合(小さい場合)、線形プログラミングモジュール３０は、電力評価に及ぼす影響が小さいことに起因してそのパラメータを使用しないように決定する。
【００１８】
キャラクタリゼーションツール１６は特定の構成及びモジュール配置を含む単一要素として描かれているが、それは論理的観点からの記述であり、キャラクタリゼーションツール１６の要素及び機能は１以上の物理的なロケーションに位置していてよいことに留意すべきである。また、キャラクタリゼーションツール１６の機能は要素の適切な如何なる集まり及び配置で用意されてもよい。プロセッサの電力モデルを用意するために、キャラクタリゼーションツール１６の様々な要素で実行される機能は、適切な移管ル装置及び論理モジュールで実現されてもよい。
【００１９】
図示の例では、システム１０はメモリ１８も含む。図示されるようにメモリ１８はトレーニングプログラム３２、ベクトル３４、テストプロセッサ情報３６、プロセッサキャラクタリゼーション３８、ソフトウエアプログラム４０及びソフトウエア４２を含む。メモリ１８内に示される情報は個別的なファイル、フォルダその他の格納要素として図示されているが、同様な情報は適切な如何なる手法で格納されてよいことが理解されるべきである。
【００２０】
トレーニングプログラム３２及びベクトル３４はテストプロセッサの電力モデルを作成するのに使用される。トレーニングプログラム３２及びベクトル３４は、関連するベクトル３４と共に動作するトレーニングプログラム３２各々について高レベルシミュレーション結果を得るために高レベルシミュレータ１２に送られる。トレーニングプログラム３２、ベクトル３４及びテストプロセッサ情報３６は、関連するベクトル３４と共にそのテストプロセッサで動作するトレーニングプログラム３２各々について低レベルシミュレーション結果を得るために低レベルシミュレータ１４に送られる。キャラクタリゼーションツール１６はそのテストプロセッサで動作するトレーニングプログラム３２の高レベル及び低レベルシミュレーション結果を利用して、テストプロセッサの電力モデルを作成する。一旦確認されると、電力モデルはプロセッサキャラクタリゼーション３８に格納される。プロセッサキャラクタリゼーション３８は、ソフトウエアプログラム４０のソフトウエア電力消費の評価に使用可能である。ある実施例では、メモリ１８は複数のソフトウエアプログラム４０を含み、システム１０の要素はソフトウエアプログラム４０各々についてのソフトウエア電力消費の推定値を判定するよう動作する。
【００２１】
ソフトウエア４２はプログラム、ソフトウエア、ハードウエア、論理装置又は回路の適切な何らかのものをも含み、実行時にはシステム１０内の様々な要素の動作を制御することができる。ソフトウエア４２はシステム１０内の他の部分(メモリ１８以外の部分)に含まれていてもよい。また、ソフトウエア４２はメモリ１８又はシステム１０内に含まれていてもいなくてもよい。
【００２２】
図示されるように、ホストプロセッサ２０はプロセッサキャラクタリゼーション３８を用いてソフトウエアプログラム４０のソフトウエア電力消費を推定する。ホストプロセッサ２０は、高レベルシミュレータ１２によるソフトウエアプログラム４０の高レベルシミュレーションを要求する。特定の実施例では、ソフトウエアプログラム４０は、ベクトル３４に格納されていてもいなくてもよいテストベクトルを伴う。高レベルシミュレーション結果を受けた後で、ホストプロセッサ２０は高レベルシミュレーションを複数の時間間隔に分割する。指定された各時間間隔はそのタイミングウインドウについて評価されたソフトウエア電力消費を与える。これらの時間間隔は、トレーニングプログラムの分析に使用されるタイミングウインドウと同じ長さでもよいし、異なる長さでもよい。ある実施例では高レベルシミュレーションは複数の時間間隔に分割されない。特定の実施例では、ホストプロセッサ２０はタイミングディバイダ２４により分けられた高レベルシミュレーションを得る。タイミングウインドウを用いることで、ホストプロセッサ２０は、特定の時間間隔にわたってソフトウエアプログラム４０の電力消費を決定することができる。
【００２３】
高レベルシミュレーションの各時間間隔について、ホストプロセッサ２０はプロセッサキャラクタリゼーション３８で指定された各パラメータの値を決定する。特定の実施例では、ホストプロセッサ２０はパラメータ抽出器２８からパラメータ値を取得する。プロセッサキャラクタリゼーション３８により指定された各パラメータの値を決定した後に、ホストプロセッサ２０は、決定されたパラメータ値を用いてプロセッサキャラクタリゼーション３８を評価することで、ソフトウエアプログラム４０の推定された電力消費量を計算する。このプロセスはソフトウエアプログラム４０用に特定された時間間隔各々について反復可能である。ホストプロセッサ２０は、１つのモジュールとして描かれているが、プログラム、ソフトウエア、ハードウエア、論理装置又は回路の適切な何らかのものを含んでよく、システム１０内の様々な要素の動作を制御してよい。
【００２４】
ユーザインターフェース２２は或るインターフェースであり、そのインターフェースを介してユーザはシステム１０と通信することができ且つシステム１０から情報を受けることができる。特定の実施例では、プロセッサキャラクタリゼーション３８を決定するためにキャラクタリゼーションツール１６でどのパラメータが使用されるべきかをユーザは選択することができる。ある実施例では、電力推定誤差が特定の限界に等しい又はそれより大きかった場合に、キャラクタリゼーションツール１６により使用されるべき追加的パラメータをユーザは特定することができる。ある実施例では、ユーザインターフェース２２は、プロセッサキャラクタリゼーション３８が得られた後に残っている電力推定誤差を表示することができる。ある実施例では、ユーザインターフェース２２はキャラクタリゼーションツール１６により決定された後にプロセッサキャラクタリゼーション３８を表示することができる。特定の実施例では、ユーザインターフェース２２はソフトウエアプログラム４０の推定されたソフトウエア電力消費を表示する。この表示は例えばテーブル形式で又は図形表示で行われてもよい。ユーザインターフェースはシステム１０に含まれても含まれなくてもよいし、要素の適切な何らかの集まり及び配置で用意されてもよい。
【００２５】
ソフトウエア電力消費を推定するシステムの特定の実施例が図示及び説明され、そこに全てが含まれることは意図されていない。システム１０内の要素は適切な何らかの技法又はプロトコルを用いて相互につながる。システム１０は要素の或る特定の構成及び配置を含むように描かれているが、それは論理的な記述に過ぎず、システム１０の要素及び機能は論理的に及び物理的に適切に合成され、分離され又は分散されてもよいことに留意すべきである。また、システム１０の機能は要素の適切な如何なる集まり及び配置で用意されてもよい。システム１０の様々な要素で実行される機能は、電力モデルを作成することでソフトウエア電力消費を推定する適切な何らかの装置又は論理で実現されてよい。
【００２６】
図２はソフトウエア電力消費推定用のモデルを決定するためにプロセッサをキャラクタライズする一般的な方法５０を示すフローチャートである。モデル５０に示されるように、プロセッサは線形近似モデルを用いて特徴付けられる。そのエネルギ消費は線形結合を用いてモデル化されてよい：
【００２７】
【数１】
0005298444.tif 000002
数式(1)ではPi,ci,Nはモデルのパラメータ、関連する係数及びパラメータ数をそれぞれ表す。パラメータ選択後に、対応する係数は、推定されるエネルギ消費Eestimate及び実際のエネルギ消費の間の差を小さくするように選択される。図示の例では、実際のエネルギ消費は、低レベルシミュレーションで推定されるエネルギ消費Elowに非常に近くなるよう仮定されている。パラメータを選択して係数を決定した後に、様々なプログラムについて推定されるエネルギ消費Eestimateが数式(1)を用いて算出可能になる。
【００２８】
ステップ５２では、プロセッサキャラクタリゼーション３８を作成するのにトレーニングプログラム３２及びベクトル３４のどれが使用されるかをキャラクタリゼーションツール１６が特定する。選択されたトレーニングプログラム３２及びベクトル３４は、ターゲットアプリケーション領域を表現し、或いは様々なアプリケーション領域の特徴を組み入れるように設計されてもよい。特定の実施例では、プロセッサキャラクタリゼーション３８を作成するためにトレーニングプログラム３２及びベクトル３４のどれが使用されるべきかをユーザが特定してよいように、ユーザインターフェース２２が組み入れられることが可能である。他の実施例では、メモリ１８に格納された関連するベクトル３４及びトレーニングプログラム３２の全てがプロセッサキャラクタリゼーション３８を作成するのに使用される。
【００２９】
次に、キャラクタリゼーションツール１６はステップ５４で各トレーニングプログラム３２の電力消費を確認する。ある実施例では、各トレーニングプログラム３２の電力消費は複数のタイミングウインドウの各々について決定される。ある実施例では、キャラクタリゼーションツール１６は、低レベルシミュレータ１４から得られたトレーニングプログラム３２各々の低レベルシミュレーションからエネルギ消費を決定する。電力計算器２６は、低レベルシミュレーションからエネルギ消費を決定し、そのエネルギ消費量を線形プログラミングモジュール３０に送信する。ステップ５４は時間がかかるかもしれないので、多くの場合には、特定のプロセッサについてプロセッサキャラクタリゼーション３８を作成するのに一度だけ必要とされる。
【００３０】
ステップ５６では、キャラクタリゼーションツール１６が各トレーニングプログラム３２について命令トレースを決める。或いは、キャラクタリゼーションツール１６はステップ５６で別の高レベルシミュレーションを使用してもよく、そのシミュレーションからパラメータ値が決定可能である。キャラクタリゼーションツール１６は、例えば各トレーニングプログラム３２について命令トレースのような高レベルシミュレーション結果を受けるために、トレーニングプログラム３２及び対応するベクトル３４を高レベルシミュレータ１２に送信する。
【００３１】
ステップ５８では、キャラクタリゼーションツール１６はテストプロセッサの電力モデルに使用されるパラメータPiを決定する。ある実施例では、ユーザインターフェース２２を介してプロセッサキャラクタリゼーション３８を決定するために使用するパラメータをユーザが選択する。他の実施例では、例えばパラメータ抽出器２８のようなシステム１０内の他の要素又はキャラクタリゼーションツール１６が、使用されるべきパラメータを決定する。Piは或るパラメータであり、そのパラメータの値は命令トレースから容易に抽出可能である。例えば、プログラムの以下の特徴がパラメータとして機能する。
【００３２】
PIM(PDM):  命令（データ）キャッシュミスの回数
PU0(PUI):  行われない(行われる)分岐として予測される行われない(行われる)分岐命令数
PT0(PTI):  行われない(行われる)分岐として予測される行われる(行われない)分岐命令数
PLR:  リンクレジスタを利用する分岐命令数
PJM:  絶対アドレスに常にジャンプする分岐命令数(例えば、CALL、JUMP)
PLI(PSI):  実行されるロード(記憶)命令数
PLM(PSM):  データキャッシュミスを引き起こすロード(記憶)命令数
PGS:  汎用レジスタ中のデータをチップ外メモリに移動する「MOVGS」命令の数
PSG:  チップ外メモリ中のデータを汎用レジスタに移動する「MOVSG」命令の数
PIA(PDA):  命令(データ)キャッシュアクセスの回数
PLU(PLT):  行われる分岐として予測される行われる(行われない)命令(キャッシュラインの最後に位置する)の数
PLLIM(PLLIH):  同じキャッシュラインにアクセスする２つの連続的なロード命令対の数(最初の命令はキャッシュミス(ヒット)になる)
PSS1(PSS2):   同じキャッシュラインにアクセスする(しない)２つの連続的な記憶命令対の数
PLL2:  同じキャッシュラインにアクセスしない２つの連続的な記憶命令対の数
PC2:  ターゲットがVLIWプロセッサである場合に、２ウェイVLIWのウェイ１及びウェイ２を用いる命令数
この特徴のリストは全てを包含するようには意図されていない。プロセッサキャラクタリゼーション３８を決定するのに使用されるパラメータは、列挙されている特徴の全部又は一部を含んでもよいし、列挙済みのいずれにも該当しないものを含んでいてもよい。更に、個々のパラメータはこれらの又は他の特徴の組み合わせを含んでもよい。
【００３３】
ステップ６０では、線形プログラミングモジュール３０は、パラメータ群Piに対応する係数群ciを計算する。あるパラメータ一式について、線形プログラミングモジュール３０はエネルギ推定誤差|Eestimate−Elow|を最小化する係数を発見する。ここでElow及びEestimateはステップ５４及び数式(1)を通じてそれぞれ得られたエネルギ消費量である。ある実施例では、線形プログラミングモジュール３０は、決定された係数と共にエネルギ推定誤差が特定の限界Econstより少ないか否かを評価する。エネルギ推定誤差が十分に小さければ、目下のパラメータ及び係数一式はプロセッサキャラクタリゼーション３８に組み入れられる。そうでなければ、線形プログラミングモジュール３０は新たなパラメータを追加し、係数及びエネルギ推定誤差を再計算する。特定の実施例では、線形プログラミングモジュール３０は、関連する係数が乗算されたパラメータの値が前記の数式の中で他の項と比較して小さいか否かを評価する。もしも小さかったならば、線形プログラミングモジュール３０はそのパラメータを破棄する。なぜならプロセッサキャラクタリゼーション３８及び電力推定に与える影響が小さいからである。ある実施例では、エネルギ推定誤差が特定の限界Econstより小さくなるまでステップ６０が反復される。
【００３４】
ステップ６２では、キャラクタリゼーションツール１６はプロセッサキャラクタリゼーション３８を生成し、それをメモリ１８に格納する。プロセッサキャラクタリゼーション３８は様々なソフトウエアプログラム(例えば、ソフトウエアプログラム４０)について電力消費を推定するのに使用可能である。
【００３５】
図２に関連して説明された方法は単なる例示に過ぎず、その動作を実行するように説明された装置及び動作手法は適切な如何なる方法で修正されてもよい。本方法は特定の順序で実行される特定のステップを説明しているが、これら上記のステップ又は追加的なステップの全部又は一部を適切な何らかの順序で実行する要素の適切な如何なる集まり及び配置をもシステム１０は包含してよいことが理解されるべきである。
【００３６】
図３はプロセッササイクルをタイミングウインドウに分割する例を示し、各タイミングウインドウは対応するエネルギ消費量を示す。全体的に７０で示されるグラフは、横軸に実行サイクル７２を及び縦軸にエネルギ消費量７４を示す。実行サイクル７２は複数のタイミングウインドウ(例えば、タイミングウインドウ７６)に分割される。タイミングウインドウ７６は、タイミングウインドウ７６内に該当する実行サイクル７２について特定のエネルギ消費７８を有する。エネルギ消費７８は電力計算器２６により決定され、電力計算器は１つのトレーニングプログラム３２の低レベルシミュレーションによるそのタイミングウインドウでのエネルギ消費を計算する。エネルギ消費７８は、ソフトウエアプログラム４０のタイミングウインドウについてエネルギ消費を決定する際に、電力計算器２６によって又はホストプロセッサ２０によって決定されてもよい。ある実施例では、ユーザインターフェース２２はグラフ７０及び他の同様なグラフを表示し、ソフトウエアプログラム４０、トレーニングプログラム３２又は適切な何らかの他のプログラム若しくはアプリケーションの推定された又は平均的なエネルギ消費量をユーザに通知する。
【００３７】
グラフ７０は特定の特性、特徴及び入力を有するように示されるが、同様な特徴又は特性が、（同様な入力を得ることのできる）如何なる数の及び如何なるタイプの要素及び／又は装置によって実行されてもよいことは理解されるであろう。更に、これらの要素及び／又は装置で実行される機能は適切な如何なる順序で実行されてもよく、及び／又は完全に省略されてもよい。グラフ７０は、或る１つの手法で示されているが、如何なる必要な要素又は機能をも含むように意図される。
【００３８】
図４は全体的に１００で示されたデータフローチャートを示し、データフローチャートはソフトウエア電力消費を推定するためのモデルを決定するようにテストプロセッサを特徴付ける。テストプロセッサ情報１０２及びトレーニングプログラム情報１０４は、ゲートレベルシミュレーション部１０６に入力される。テストプロセッサ情報１０２は、ゲートレベルシミュレーション部１０６に必要になるテストプロセッサについての如何なるタイプのデータをも含む。テストプロセッサ情報１０２はテストプロセッサ情報３６としてメモリ１８に格納されてもよい。ある実施例では、テストプロセッサ情報１０２はネットリスト又はセルライブラリを含む。トレーニングプログラム情報１０４はトレーニングプログラム及びそのベクトルを含み、それらはトレーニングプログラム３２の１つ及びベクトル３４の１つとしてメモリに格納されてもよい。トレーニングプログラム及びベクトルは、プロセッサを評価し、プロセッサ特徴を導出するために使用される。トレーニングプログラム情報１０４は、ターゲットアプリケーション領域を表現し、或いは様々なアプリケーション領域の特徴を組み入れるように設計されてもよい。ある実施例では、トレーニングプログラム情報１０４に含まれるベクトル及びトレーニングプログラムの選択は、その特徴付けに必要な計算時間及び電力推定精度に影響を及ぼす。特定の実施例では、トレーニングプログラム情報１０４は複数の別個のトレーニングプログラム３２及び各プログラムに対応するベクトル３４を含む。ある実施例では、トレーニングプログラム情報１０４は多くの様々なタイプのプログラムを含む。
【００３９】
ゲートレベルシミュレーション部１０６は、テストプロセッサ情報１０２で特定されるトレーニングプログラムの低レベルシミュレーションを実行する。図示されるように、ゲートレベルシミュレーション部１０６は、VCDゲート変化ファイルとして示されるようなゲート変化を示す変化量ダンプファイルを作成する。ある実施例では、トレーニングプログラムのゲートレベルシミュレーション部１０６は低レベルシミュレータ１４から得られる。図示されるように、VCDゲート変化ファイル１０８はタイムディバイダ１１４に通知される。
【００４０】
命令セットシミュレーション部１１０は、トレーニングプログラム情報１０４を受信し、トレーニングプログラム情報１０４で指定されるトレーニングプログラム(又は、ある実施例では複数のプログラム)の高レベルシミュレーションを実行する。命令セットシミュレーション部１１０は、タイムディバイダ１１４に伝送される命令トレース１１２を生成する。特定の実施例では、命令セットシミュレーション部１１０は高レベルシミュレータ１２によって実行される。ある実施例では、命令セットシミュレーション部１１０はゲートレベルシミュレーション部１０６と並行して動作する。他の実施例では、命令セットシミュレーション部１１０は、ゲートレベルシミュレーションと直列的に、先に実行された動作結果と共に動作する。
【００４１】
タイムディバイダ１１４は、VCDゲート変化ファイル１０８及び命令トレース１１２を受信し、各々をタイミングウインドウに分割する。各タイミングウインドウは、トレーニングプログラム情報１０４に従ってシミュレートされるテストプロセッサの特定のサイクル数を表現する。ある実施例はVCDゲート変化ファイル１０８及び命令トレース１１２をタイミングウインドウに分割しない。他の実施例はVCDゲート変化ファイル１０８及び命令トレース１１２を複数のタイミングウインドウに分割し、各ウインドウは多数のサイクルにわたるテストプロセッサの動作を表す。タイミングウインドウは固定長でもよいし又は可変長でもよい。
【００４２】
VCDゲート変化ファイル１０８をタイミングウインドウに分割することで、タイムディバイダ１１４及び電力計算器１１８は、各タイミングウインドウに対応するゲートの出力変化を特定できる。これらの変化は、ウインドウ１１６のゲート変化として表現され、電力計算器１１８に通知される。同様に、命令トレース１１２は小さなサブトレース(複数)に分割され、各サブトレースは或るタイミングウインドウに対応する。命令トレースが分割されるタイミングウインドウは、VCDゲート変化ファイル１０８が分割されるタイミングウインドウに相当する。一旦決定されると、サブトレース１２２はパラメータ抽出部１２４に通知される。特定の実施例では、命令トレース１１２をタイミングウインドウに分割するには、実行されるサイクル数を評価することを要する。例えば、命令セットシミュレーション部１１０は、サイクル不正確(cycle-inaccurate)命令セットシミュレータで実行可能である。サイクル不正確命令セットシミュレータは、パイプラインストールのペナルティサイクル、キャッシュミス、分岐予測ミス等の数を計算しないので、各パイプラインステージの動作をシミュレートしない。これらの実施例では、誤差が特定の限界未満になるまで、パラメータの追加又は削除及び誤差の評価を反復的に行うことで、実行サイクルが評価されてもよい。
【００４３】
電力計算器１１８はウインドウ１１６のゲート変化を利用して電力値１２０を決定する。電力値１２０は、テストプロセッサで動作するトレーニングプログラムの電力消費を表してもよい。各タイミングウインドウは対応する電力値１２０を有する。電力値１２０はリニアプログラマ１３０に通知される。図示の例では、電力値１２０はゲートレベルシミュレーション１０６で実行される低レベルシミュレーションに基づく。従って或る実施例では電力値１２０は、テストプロセッサで動作するトレーニングプログラムの正確な電力消費量ではない。しかしながら電力値１２０は十分に正確な電力消費推定値をもたらす。特定の実施例では、電力計算器２６は電力値１２０を決定する。
【００４４】
パラメータ抽出部１２４はサブトレース１２４を用いて、テストプロセッサの電力モデルで使用するパラメータ１２６を決定する。ある実施例では、パラメータ抽出部１２４はパラメータ抽出器２８により実行される。ある実施例では、ユーザはユーザインターフェース２２を介してパラメータ１２６の全部又は一部を選択することができる。他の実施例では、キャラクタリゼーションツール１６又はシステム１０内の他の要素(例えばパラメータ抽出器２８)は、どのパラメータが使用されるかを決定する。
【００４５】
パラメータ１２６は、高レベルシミュレーションから抽出可能な特徴(例えば、サブトレース１２２のような命令トレース)になる。パラメータ１２６は図２のステップ５８でリストされた如何なる特徴を含んでもよい。しかしながら、この特徴のリストは可能な全てを包含するよう意図されてはいないこと、パラメータ１２６はこれら列挙された特徴の全部又は一部を含んでよいこと(更には、全く含まなくてもよいこと)が理解されるであろう。パラメータ１２６はリニアプログラマ１３０に送られる。
【００４６】
リニアプログラマ１３０は、プロセッサキャラクタリゼーション１３４のパラメータ１２６に対応する一群の係数を計算する。リニアプログラミングモジュール３０で実行されてもよいリニアプログラマ１３０は、プロセッサキャラクタリゼーション５８に対応してよいプロセッサキャラクタリゼーションを作成する。プロセッサキャラクタリゼーション１３４は、線形近似モデルを用いて、テストプロセッサの電力消費を特徴付ける。線形プログラマ１３０は数式(1)の線形な関係式を用いて電力消費をモデル化する：
【００４７】
【数２】
0005298444.tif 000003
Pi,ci,Nはモデルのパラメータ、関連する係数及びパラメータ数をそれぞれ表す。始めに、モデルのパラメータはパラメータ１２６である。
【００４８】
一般に、プロセッサキャラクタリゼーション１３４を作成するために、リニアプログラマ１３０は、エネルギ推定誤差|Eestimate−Elow|を最小化する係数を発見する。ここでElowは電力値１２０で決定され、Eestimateは数式(1)で決定される。リニアプログラマモジュール１３０は、全てのタイミングウインドウについてエネルギ推定誤差を最小化する係数群を決定する。この問題は、「所与の一群のEi及びPijについて、トータルエラーYobjを最小化する一群の係数ciを見出すこと」のように形式化できる。変数は次のように決定される：
i:  タイミングウインドウインデックス
j:  パラメータインデックス
N:  パラメータ数
M:  タイミングウインドウ数
Ei:  ゲートレベルシミュレーションを用いて推定されたｉ番目のタイムウインドウについてのエネルギ値
E’i:  数式(1)を用いて得られたｉ番目のタイムウインドウについてのエネルギ値
Yi:  誤差の絶対値|E’i−Ei|
Pij:  命令トレースから抽出されたパラメータ
ci:  決定された係数
係数群を発見するため、次式を最小化する：
【００４９】
【数３】
0005298444.tif 000004
但し、以下の条件が課せられる：
【００５０】
【数４】
0005298444.tif 000005
xmax及びxaveについて選択された値に基づいて、以下の３つの異なる目的関数の１つが最小化される：(1)平均誤差
【００５１】
【数５】
0005298444.tif 000006
(2)最大誤差max(|E’−E|)又は(3)平均誤差及び最大誤差の和。特定の実施例では、xmax及びxaveの値は１又は０に限定されず、リニアプログラマ１３０が、平均誤差及び最大誤差の重み付け平均を最小化することを可能にする。ある実施例では、xmax及びxaveの値はユーザにより選択される。
【００５２】
パラメータ１２６に対応する係数を決定した後に、リニアプログラマ１３０はプロセッサキャラクタリゼーション１３４を作成する。一実施例では、モデルに固有のエネルギ推定誤差が大きすぎた場合に、リニアプログラマ１３０はパラメータ抽出部１２４に対して追加的なパラメータを要求する。この例は図５に関連して以下で説明される。プロセッサキャラクタリゼーション１３４の決定後に、様々なソフトウエアプログラムについて推定されたエネルギ消費Eestimateは、ソフトウエアプログラムのパラメータ１２６の値及びプロセッサキャラクタリゼーション１３４を用いて算出可能である。このプロセスは図６に関連して以下で説明される。
【００５３】
図４に関連して説明された方法は単なる例示に過ぎず、処理を行うように説明された装置及び処理方法は適切な如何なる手法で修正されてもよいことは理解されるであろう。本方法は特定の順序で実行される特定のステップを述べているが、理解されるべきことは、これらのステップ又は追加的なステップの全部又は一部を何らかの適用可能な順序で実行する要素の適切な如何なる集まり及び配置をもシステム１０は想定していることである。
【００５４】
図５はソフトウエア電力消費推定用のモデルを決定するためのリニアプログラマの動作を示すフローチャートであり、全体的に１５０で示される。
【００５５】
ステップ１５２では、リニアプログラマ１３０は電力計算１１８から得られた電力値１２０を受ける。ステップ１５４では、ステップ１５２と並行して、リニアプログラマ１３０はパラメータ抽出部１２４から得たパラメータ１２６を受信する。ステップ１５６では、リニアプログラマ１３０はパラメータ１２６について最適な係数を計算する。ある実施例では、これは図４に関連して説明されたようにして行われる。
【００５６】
ステップ１６０に関し、リニアプログラマ１３０は何らかのパラメータ１２６が不要であるか否かを確認する。特定の実施例では、関連する係数の掛かった何らかのパラメータ１２６の値が数式中の他の項に比較して小さいか否かをリニアプログラマ１３０が評価する。パラメータが不要であった場合、本方法はステップ１６２に進み、特定のパラメータがパラメータ１２６及び現在の電力モデルから削除される。その特定のパラメータは、電力推定及びテストプロセッサの電力モデルに与える影響が弱いことに起因して使用されなくてもよい。パラメータ１２６の全てが必要であると判定された場合には、本方法はステップ１６４に進む。
【００５７】
ステップ１６４では、リニアプログラマ１３０は現在の電力モデルの電力推定誤差を算出する。各タイミングウインドウについて、電力推定誤差は|Eestimate−Elow|で表現可能であり、ここで、Elowは電力値１２０に対応するものであり、Eestimateは現在の電力モデルで決定される。ある実施例では、全てのタイミングウインドウについて現在の電力モデルの電力推定誤差は、以下の３つの異なる目的関数の１つによって発見可能である：(1)平均誤差
【００５８】
【数６】
0005298444.tif 000007
(2)最大誤差max(|E’−E|)又は(3)平均誤差及び最大誤差の和。
【００５９】
ステップ１６６では、リニアプログラマ１３０は、ステップ１６４で決定された電力推定誤差が特定の限界値Econstより小さいか否かを評価する。電力推定誤差が十分に小さかったならば、本方法はステップ１６８に進み、電力モデルが完成し、プロセッサキャラクタリゼーション１３４になる。電力推定誤差が大きすぎた場合には、本方法はステップ１７０に進み、リニアプログラマ１３０は電力モデルで使用する追加的なパラメータを要求する。ある実施例では、リニアプログラマ１３０は追加的な１つ又は複数のパラメータの要求１３２をパラメータ抽出部１２４に送る。ある実施例では、パラメータ抽出器２８は追加的などのパラメータが使用されるべきかを確認する。他の実施例ではユーザはユーザインターフェース２２を介して追加的なパラメータを選択する。新たなパラメータがパラメータ１２６に付加された後で、本方法はステップ１５４に進み、受信されるパラメータは、オリジナルのパラメータ１２６及び追加されたパラメータ双方で構成される。そして本方法は最適な係数を計算し直し、現在の新たな電力モデルを決定する。ある実施例では、これらのステップは電力推定誤差が特定の限界Econstより小さくなるまで反復される。特定の実施例では、リニアプログラマ１３０は無限ループを回避するタイムアウト関数を導入する。
【００６０】
図５に関連して説明された方法は単なる例示に過ぎず、処理を行うように説明された装置及び処理方法は適切な如何なる手法で修正されてもよいことは理解されるであろう。本方法は特定の順序で実行される特定のステップを述べているが、理解されるべきことは、これらのステップ又は追加的なステップの全部又は一部を何らかの適用可能な順序で実行する要素の適切な如何なる集まり及び配置をもシステム１０は想定していることである。
【００６１】
図６はプロセッサキャラクタリゼーションを用いてターゲットプログラムの電力消費を推定する方法を示すフローチャートであり、全体的に２００で示される。ステップ２０２ではターゲットプログラムが特定される。ある実施例では、ターゲットプログラムはメモリ１８に格納されたソフトウエアプログラム４０である。次に、ホストプロセッサ２０はステップ２０４でターゲットプログラムの命令トレースを決める。ホストプロセッサ２０は命令トレースを得るためにターゲットプログラムを高レベルシミュレータ１２に与える。ある実施例では、ホストプロセッサ２０はターゲットプログラムの異なるシミュレーションを行い、そのシミュレーションから、プロセッサキャラクタリゼーション３８で指定されるパラメータの値が得られる。
【００６２】
本方法はステップ２０６に進み、ホストプロセッサはテストプロセッサについてのプロセッサキャラクタリゼーションを確認する。図示されるように、ターゲットプログラムの電力消費は、特定のテストプロセッサで実行されるターゲットプログラムについて推定される。特定の実施例では、ステップ２０６はプロセッサキャラクタリゼーション３８をロードすることを含む。ある実施例では、ステップ２０６はプロセッサキャラクタリゼーション３８を決定することを含む。
【００６３】
ステップ２０８では、複数の時間間隔について又はターゲットプログラム全体について電力消費が評価されるべきか否かをホストプロセッサ２０は決定する。電力消費が個々の時間間隔について評価されるべき場合には、本方法はステップ２１０に進み、ホストプロセッサ２０はその時間間隔を確認する。この時間間隔はプロセッサキャラクタリゼーション３８を得るのに使用されるタイミングウインドウと同様である。ある実施例では、ターゲットプログラムを分割するのに使用される時間間隔は不均一な長さでもよい。時間間隔は適切な如何なる長さにしてもよいことが理解されるであろう。ステップ２１２では、ステップ２０４で得られたターゲットプログラムの命令トレースは、各時間間隔に対応するサブトレースに分けられる。そしてステップ２１４ではホストプロセッサ２０は各サブトレースについてプロセッサキャラクタリゼーション３８で指定された各パラメータの値を決定する。ある実施例では、パラメータの値はターゲットプログラムのサブトレースから直接的に得られる。他の実施例でのパラメータの評価は、サブトレースの追加的な処理を必要とする。ステップ２１６では、パラメータの値が確認された後で、ホストプロセッサ２０は取得したパラメータ値を用いて各サブトレースについて電力消費を評価する。
【００６４】
ステップ２０８で電力消費量がターゲットプログラム全体について推定されるべきことをホストプロセッサ２０が判定した場合には、本方法はステップ２２０に進む。ステップ２２０ではホストプロセッサ２０はプロセッサキャラクタリゼーション３８で指定された各パラメータの値を決定する。ある実施例では、パラメータの値はターゲットプログラムの命令トレースから直接的に得られる。他の実施例でのパラメータの評価は、命令トレースの追加的な処理を必要とする。ステップ２２０では、パラメータの値が確認された後で、ホストプロセッサ２０はパラメータ値を用いてターゲットプログラムの電力消費を評価する。
【００６５】
ステップ２２０及びステップ２１６のどちらからでも本方法はステップ２２２に進み、ホストプロセッサ２０は計算結果が表示されるべきか否かを確認する。ある実施例では、ホストプロセッサ２０は、代替的に又は追加的に、計算結果が格納又は保存されるべきか否かを確認する。表示されるべき場合、ホストプロセッサ２０はステップ２２４で結果を表示する。ある実施例では、ホストプロセッサ２０はユーザインターフェース２２を用いて結果を表示する。結果が表示されるべきでない場合、ステップ２２４はスキップされる。本方法はステップ２２６に進み、ホストプロセッサ２０は、他のターゲットプログラムの電力消費が推定されるべきか否かを確認する。推定されるべき場合、本方法はステップ２０２に戻り、そうでない場合方法２００は終了する。
【００６６】
図６に関連して説明された方法は単なる例示に過ぎず、処理を行うように説明された装置及び処理方法は適切な如何なる手法で修正されてもよいことは理解されるであろう。ある実施例では、ホストプロセッサ２０以外のシステム１０の要素又はシステム１０外の要素が、プロセッサキャラクタリゼーション３８からターゲットプログラムの電力消費を推定する。本方法は特定の順序で実行される特定のステップを述べているが、理解されるべきことは、これらのステップ又は追加的なステップの全部又は一部を何らかの適用可能な順序で実行する要素の適切な如何なる集まり及び配置をもシステム１０は想定していることである。
【００６７】
以上本発明がいくつかの実施例で説明されてきたが、多数の変更及び修正が当業者に示唆されるであろうし、そのような変更及び修正を本発明は特許請求の範囲内に包含することが意図される。
【００６８】
以下、本発明により教示される手段が例示的に列挙される。
【００６９】
（付記１）
プロセッサ設計を特徴付ける方法であって、
トレーニングプログラムを特定するステップと、
複数のタイミングウインドウの各々について、前記トレーニングプログラムを実行するプロセッサの低レベルシミュレーションから平均電力消費を判定するステップと、
１以上のパラメータを特定するステップと、
タイミングウインドウの各々について、前記トレーニングプログラムの高レベルシミュレーションから各パラメータの値を判定するステップと、
タイミングウインドウの各々について、パラメータに関連する係数の乗算されたパラメータ各々の値の総和に等しい推定された電力消費を判定するステップと、
前記推定された電力消費が、タイミングウインドウの過半数の平均電力消費に近づくように前記係数を選択するステップと、
を有する方法。
【００７０】
（付記２）
前記トレーニングプログラムが第１トレーニングプログラムであり、
前記タイミングウインドウが第１の複数のタイミングウインドウであり、
当該方法は、
第２トレーニングプログラムを特定するステップと、
第２の複数のタイミングウインドウの各々について、前記第２トレーニングプログラムを実行するプロセッサの低レベルシミュレーションから平均電力消費を判定するステップと、
前記第２の複数のタイミングウインドウの各々について、前記第２トレーニングプログラムの高レベルシミュレーションから各パラメータの値を判定するステップと、
前記第２の複数のタイミングウインドウの各々について、パラメータに関連する係数の乗算されたパラメータ各々の値の総和に等しい推定された電力消費を判定するステップと、
前記推定された電力消費が、前記第１の複数のタイミングウインドウ及び前記第２の複数のタイミングウインドウ双方の過半数についての平均電力消費に近づくように前記係数を選択するステップと、
を更に有する付記１記載の方法。
【００７１】
（付記３）
前記推定された電力消費及び前記平均電力消費間の差分が或る定数より小さい場合に、前記推定された電力消費は前記平均電力消費に近い付記１記載の方法。
【００７２】
（付記４）
前記タイミングウインドウが第１の複数のタイミングウインドウであり、当該方法は、
ソフトウエアプログラムを特定するステップと、
第２の複数のタイミングウインドウの各々について、前記ソフトウエアプログラムの高レベルシミュレーションから各パラメータの値を判定するステップと、
前記第２の複数のタイミングウインドウの各々について、パラメータに関連する係数の掛かったパラメータ各々の値の総和から前記ソフトウエアプログラムの推定された電力消費を計算するステップと、
を更に有する付記１記載の方法。
【００７３】
（付記５）
前記トレーニングプログラムがアプリケーションドメインを表現する付記１記載の方法。
【００７４】
（付記６）
タイミングウインドウ各々について、前記推定された電力消費及び前記平均電力消費間の差分に電力推定誤差が等しく、
推定された電力消費は、誤差の値が最小の場合に前記平均電力消費に近く、前記誤差の値は：
全てのタイミングウインドウに対して最大の電力推定誤差に等しい最大電力推定誤差、
各タイミングウインドウについて前記電力推定誤差の平均に等しい平均電力推定誤差、及び
前記最大電力推定誤差及び前記平均電力推定誤差の重み付け加算値
の何れかから選択されたものに等しい付記１記載の方法。
【００７５】
（付記７）
前記低レベルシミュレーションがゲートレベルシミュレーションであり、前記高レベルシミュレーションが命令セットシミュレーションである付記１記載の方法。
【００７６】
（付記８）
命令キャッシュミスの回数、
データキャッシュミスの回数、
行われない分岐として予測され行われなかった分岐命令の数、
行われる分岐として予測され行われた分岐命令の数、
行われない分岐として予測され行われた分岐命令の数、
行われる分岐として予測され行われなかった分岐命令の数、
リンクレジスタを利用する分岐命令の数、
絶対アドレスに常にジャンプする分岐命令の数、
実行されるロード命令数、
実行される記憶命令数、
データキャッシュミスを引き起こすロード命令数、
データキャッシュミスを引き起こす記憶命令数、
汎用レジスタからチップ外メモリへデータを動かす命令の数、
チップ外メモリから汎用レジスタへデータを動かす命令の数、
命令キャッシュアクセスの回数、
データキャッシュアクセスの回数、
キャッシュラインの末尾に位置する、行われる分岐として予測され行われた分岐命令の数、
キャッシュラインの末技に位置する、行われる分岐として予測され行われなかった分岐命令の数、
同じキャッシュラインにアクセスする２つの連続的なロード命令ペアであって、最初の命令はキャッシュミスになるものの数、
同じキャッシュラインにアクセスする２つの連続的なロード命令ペアであって、最初の命令がキャッシュヒットになるものの数、
同じキャッシュラインにアクセスする２つの連続的な記憶命令ペアの数、
同じキャッシュラインにアクセスしない２つの連続的な記憶命令ペアの数、
同じキャッシュラインにアクセスしない２つの連続的な記憶命令ペアの数、及び
２ウェイVLIWプロセッサのウェイ１及びウェイ２を利用する命令数
から選択された少なくとも１つを前記パラメータが含む付記１記載の方法。
【００７７】
（付記９）
関連する係数の掛かったパラメータ各々の値の総和は、前記プロセッサをモデル化する線形関係式による付記１記載の方法。
【００７８】
（付記１０）
前記高レベルシミュレーションが、サイクル不正確シミュレータから得られ、
各タイミングウインドウが、前記プロセッサのサイクル数に対応し、
前記サイクル数が、線形関係式を用いて推定される付記１記載の方法。
【００７９】
（付記１１）
１以上のパラメータが、選択された係数の評価に基づいて削除される付記１記載の方法。
【００８０】
（付記１２）
前記推定された電力消費及び前記平均電力消費間の差分の評価に基づいて、前記パラメータに１以上の新たなパラメータが付加される付記１記載の方法。
【００８１】
（付記１３）
プロセッサ設計を特徴付ける装置であって、
トレーニングプログラムを特定するキャラクタリゼーションツールと、
複数のタイミングウインドウの各々について、前記トレーニングプログラムを実行するプロセッサの低レベルシミュレーションから平均電力消費を判定する電力計算器と、
１以上のパラメータを特定し、タイミングウインドウの各々について、前記トレーニングプログラムの高レベルシミュレーションから各パラメータの値を判定するパラメータ抽出器と、
タイミングウインドウの各々について、パラメータに関連する係数の乗算されたパラメータ各々の値の総和に等しい推定された電力消費を判定するリニアプログラミングモジュールであって、前記推定された電力消費が、タイミングウインドウの過半数の平均電力消費に近づくように前記係数を選択するリニアプログラミングモジュールと、
を有する装置。
【００８２】
（付記１４）
前記トレーニングプログラムが第１トレーニングプログラムであり、
前記タイミングウインドウが第１の複数のタイミングウインドウであり、
前記キャラクタリゼーションツールは、第２トレーニングプログラムを特定し、
前記電力計算器は、第２の複数のタイミングウインドウの各々について、前記第２トレーニングプログラムを実行するプロセッサの低レベルシミュレーションから平均電力消費を判定し、
前記パラメータ抽出器は、前記第２の複数のタイミングウインドウの各々について、前記第２トレーニングプログラムの高レベルシミュレーションから各パラメータの値を判定し、
前記リニアプログラミングモジュールは、前記第２の複数のタイミングウインドウの各々について、パラメータに関連する係数の乗算されたパラメータ各々の値の総和に等しい推定された電力消費を判定し、前記リニアプログラミングモジュールは、前記推定された電力消費が、前記第１の複数のタイミングウインドウ及び前記第２の複数のタイミングウインドウ双方の過半数についての平均電力消費に近づくように前記係数を選択する付記１３記載の装置。
【００８３】
（付記１５）
前記推定された電力消費及び前記平均電力消費間の差分が或る定数より小さい場合に、前記推定された電力消費は前記平均電力消費に近い付記１３記載の装置。
【００８４】
（付記１６）
ソフトウエアプログラムを特定するホストプロセッサを更に有する付記１３記載の装置であって、
前記タイミングウインドウが第１の複数のタイミングウインドウであり、
前記パラメータ抽出器は、第２の複数のタイミングウインドウの各々について、前記ソフトウエアプログラムの高レベルシミュレーションから各パラメータの値を判定し、
前記ホストプロセッサは、前記第２の複数のタイミングウインドウの各々について、パラメータに関連する係数の掛かったパラメータ各々の値の総和から前記ソフトウエアプログラムの推定された電力消費を決定する付記１３記載の装置。
【００８５】
（付記１７）
前記トレーニングプログラムがアプリケーションドメインを表現する付記１３記載の装置。
【００８６】
（付記１８）
タイミングウインドウ各々について、前記推定された電力消費及び前記平均電力消費間の差分に電力推定誤差が等しく、
推定された電力消費は、誤差の値が最小の場合に前記平均電力消費に近く、前記誤差の値は：
全てのタイミングウインドウに対して最大の電力推定誤差に等しい最大電力推定誤差、
各タイミングウインドウについて前記電力推定誤差の平均に等しい平均電力推定誤差、及び
前記最大電力推定誤差及び前記平均電力推定誤差の重み付け加算値
の何れかから選択されたものに等しい付記１３記載の装置。
【００８７】
（付記１９）
前記低レベルシミュレーションがゲートレベルシミュレーションであり、前記高レベルシミュレーションが命令セットシミュレーションである付記１３記載の装置。
【００８８】
（付記２０）
命令キャッシュミスの回数、
データキャッシュミスの回数、
行われない分岐として予測され行われなかった分岐命令の数、
行われる分岐として予測され行われた分岐命令の数、
行われない分岐として予測され行われた分岐命令の数、
行われる分岐として予測され行われなかった分岐命令の数、
リンクレジスタを利用する分岐命令の数、
絶対アドレスに常にジャンプする分岐命令の数、
実行されるロード命令数、
実行される記憶命令数、
データキャッシュミスを引き起こすロード命令数、
データキャッシュミスを引き起こす記憶命令数、
汎用レジスタからチップ外メモリへデータを動かす命令の数、
チップ外メモリから汎用レジスタへデータを動かす命令の数、
命令キャッシュアクセスの回数、
データキャッシュアクセスの回数、
キャッシュラインの末尾に位置する、行われる分岐として予測され行われた分岐命令の数、
キャッシュラインの末技に位置する、行われる分岐として予測され行われなかった分岐命令の数、
同じキャッシュラインにアクセスする２つの連続的なロード命令ペアであって、最初の命令はキャッシュミスになるものの数、
同じキャッシュラインにアクセスする２つの連続的なロード命令ペアであって、最初の命令がキャッシュヒットになるものの数、
同じキャッシュラインにアクセスする２つの連続的な記憶命令ペアの数、
同じキャッシュラインにアクセスしない２つの連続的な記憶命令ペアの数、
同じキャッシュラインにアクセスしない２つの連続的な記憶命令ペアの数、及び
２ウェイVLIWプロセッサのウェイ１及びウェイ２を利用する命令数
から選択された少なくとも１つを前記パラメータが含む付記１３記載の装置。
【００８９】
（付記２１）
プロセッサ設計を特徴付ける媒体中にエンコードされる論理プログラムであって、
トレーニングプログラムを特定するステップと、
複数のタイミングウインドウの各々について、前記トレーニングプログラムを実行するプロセッサの低レベルシミュレーションから平均電力消費を判定するステップと、
１以上のパラメータを特定するステップと、
タイミングウインドウの各々について、前記トレーニングプログラムの高レベルシミュレーションから各パラメータの値を判定するステップと、
タイミングウインドウの各々について、パラメータに関連する係数の乗算されたパラメータ各々の値の総和に等しい推定された電力消費を判定するステップと、
前記推定された電力消費が、タイミングウインドウの過半数の平均電力消費に近づくように前記係数を選択するステップと、
をコンピュータに実行させる論理プログラム。
【００９０】
（付記２２）
前記トレーニングプログラムが第１トレーニングプログラムであり、
前記タイミングウインドウが第１の複数のタイミングウインドウであり、
当該論理プログラムは、
第２トレーニングプログラムを特定するステップと、
第２の複数のタイミングウインドウの各々について、前記第２トレーニングプログラムを実行するプロセッサの低レベルシミュレーションから平均電力消費を判定するステップと、
前記第２の複数のタイミングウインドウの各々について、前記第２トレーニングプログラムの高レベルシミュレーションから各パラメータの値を判定するステップと、
前記第２の複数のタイミングウインドウの各々について、パラメータに関連する係数の乗算されたパラメータ各々の値の総和に等しい推定された電力消費を判定するステップと、
前記推定された電力消費が、前記第１の複数のタイミングウインドウ及び前記第２の複数のタイミングウインドウ双方の過半数についての平均電力消費に近づくように前記係数を選択するステップと、
をコンピュータに更に実行させる付記２１記載の論理プログラム。
【００９１】
（付記２３）
前記推定された電力消費及び前記平均電力消費間の差分が或る定数より小さい場合に、前記推定された電力消費は前記平均電力消費に近い付記２１記載の論理プログラム。
【００９２】
（付記２４）
前記タイミングウインドウが第１の複数のタイミングウインドウであり、当該論理プログラムは、
ソフトウエアプログラムを特定するステップと、
第２の複数のタイミングウインドウの各々について、前記ソフトウエアプログラムの高レベルシミュレーションから各パラメータの値を判定するステップと、
前記第２の複数のタイミングウインドウの各々について、パラメータに関連する係数の掛かったパラメータ各々の値の総和から前記ソフトウエアプログラムの推定された電力消費を計算するステップと、
をコンピュータに更に実行させる付記２１記載の論理プログラム。
【００９３】
（付記２５）
前記トレーニングプログラムがアプリケーションドメインを表現する付記２１記載の論理プログラム。
【００９４】
（付記２６）
タイミングウインドウ各々について、前記推定された電力消費及び前記平均電力消費間の差分に電力推定誤差が等しく、
推定された電力消費は、誤差の値が最小の場合に前記平均電力消費に近く、前記誤差の値は：
全てのタイミングウインドウに対して最大の電力推定誤差に等しい最大電力推定誤差、
各タイミングウインドウについて前記電力推定誤差の平均に等しい平均電力推定誤差、及び
前記最大電力推定誤差及び前記平均電力推定誤差の重み付け加算値
の何れかから選択されたものに等しい付記２１記載の論理プログラム。
【００９５】
（付記２７）
前記低レベルシミュレーションがゲートレベルシミュレーションであり、前記高レベルシミュレーションが命令セットシミュレーションである付記２１記載の論理プログラム。
【００９６】
（付記２８）
命令キャッシュミスの回数、
データキャッシュミスの回数、
行われない分岐として予測され行われなかった分岐命令の数、
行われる分岐として予測され行われた分岐命令の数、
行われない分岐として予測され行われた分岐命令の数、
行われる分岐として予測され行われなかった分岐命令の数、
リンクレジスタを利用する分岐命令の数、
絶対アドレスに常にジャンプする分岐命令の数、
実行されるロード命令数、
実行される記憶命令数、
データキャッシュミスを引き起こすロード命令数、
データキャッシュミスを引き起こす記憶命令数、
汎用レジスタからチップ外メモリへデータを動かす命令の数、
チップ外メモリから汎用レジスタへデータを動かす命令の数、
命令キャッシュアクセスの回数、
データキャッシュアクセスの回数、
キャッシュラインの末尾に位置する、行われる分岐として予測され行われた分岐命令の数、
キャッシュラインの末技に位置する、行われる分岐として予測され行われなかった分岐命令の数、
同じキャッシュラインにアクセスする２つの連続的なロード命令ペアであって、最初の命令はキャッシュミスになるものの数、
同じキャッシュラインにアクセスする２つの連続的なロード命令ペアであって、最初の命令がキャッシュヒットになるものの数、
同じキャッシュラインにアクセスする２つの連続的な記憶命令ペアの数、
同じキャッシュラインにアクセスしない２つの連続的な記憶命令ペアの数、
同じキャッシュラインにアクセスしない２つの連続的な記憶命令ペアの数、及び
２ウェイVLIWプロセッサのウェイ１及びウェイ２を利用する命令数
から選択された少なくとも１つを前記パラメータが含む付記２１記載の論理プログラム。
【００９７】
（付記２９）
プロセッサ設計を特徴付けるシステムであって、
トレーニングプログラムを特定する手段と、
複数のタイミングウインドウの各々について、前記トレーニングプログラムを実行するプロセッサの低レベルシミュレーションから平均電力消費を判定する手段と、
１以上のパラメータを特定する手段と、
タイミングウインドウの各々について、前記トレーニングプログラムの高レベルシミュレーションから各パラメータの値を判定する手段と、
タイミングウインドウの各々について、パラメータに関連する係数の乗算されたパラメータ各々の値の総和に等しい推定された電力消費を判定する手段と、
前記推定された電力消費が、タイミングウインドウの過半数の平均電力消費に近づくように前記係数を選択する手段と、
を有するシステム。
【図面の簡単な説明】
【００９８】
【図１】ソフトウエア電力消費を推定するシステムを示す図である。
【図２】ソフトウエア電力消費推定用のモデルを決定するためにプロセッサをキャラクタライズする一般的方法を示すフローチャートである。
【図３】プロセッササイクルを複数のタイミングウインドウ（各々は対応する電力消費量を示す）に分割する例を示す図である。
【図４】ソフトウエア電力消費推定モデルを決定するためにプロセッサをキャラクタライズするデータフローチャートを示す。
【図５】ソフトウエア電力消費推定モデルを決定するためのリニアプログラムの動作を示すフローチャートである。
【図６】ターゲットプログラムの電力消費を推定するためにプロセッサ評価を利用する方法を示すフローチャートである。
【符号の説明】
【００９９】
１０  システム
１２  高レベルシミュレータ
１４  低レベルシミュレータ
１６  キャラクタリゼーションツール
１８  メモリ
２０  ホストコンピュータ
２２  ユーザインターフェース
２４  タイミングディバイダ
２６  電力計算器
２８  パラメータ抽出器
３０  線形プログラミングモジュール
３２  トレーニングプログラム
３４  ベクトル
３６  テストプロセッサ情報
３８  プロセッサキャラクタリゼーション
４０  ソフトウエアプログラム
４２  ソフトウエア
【図１】
0005298444.tif 000008
【図２】
0005298444.tif 000009
【図３】
0005298444.tif 000010
【図４】
0005298444.tif 000011
【図５】
0005298444.tif 000012
【図６】
0005298444.tif 000013