(57)【要約】ソフトウェアの実行時間を統計的に推定する推定方法は、ベンチマークプログラムのセットに基づいて、ターゲットプロセッサのモデルを準備するステップと、推定されるソフトウェアとベンチマークプログラムとを相関させるステップと、相関されたソフトウェアをモデルに適用し、ソフトウェアの実行時間の推定値を判定するステップとを有する。このモデルは、ベンチマークプログラムの実際の実行時間を判定し、ベンチマークプログラム内の仮想命令の数を判定し、仮想命令と実際の実行時間とを相関させる予測式（）を決定する（図４ステップ４２０）ことにより開発される。予測式は、仮想命令の相関分析を行い、高度に相関する命令を除外し（図４ステップ４１０）、逐次線形重回帰分析と線形重回帰分析とを組み合わせて実行する（図４ステップ４２２）ことによって決定される。２標本ｔ検定は、ベンチマークプログラムから開発されたモデルの評価によって、ソフトウェアの能力を評価する。
2004530193.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアの実行時間を推定する推定方法において、
ベンチマークプログラムのセットに基づいて、ターゲットプロセッサのモデルを準備するステップと、
推定されるソフトウェアと上記ベンチマークプログラムとを相関させるステップと、
上記相関されたソフトウェアを上記モデルに適用し、該ソフトウェアの実行時間の推定値を判定するステップとを有する推定方法。
【請求項２】
上記モデルは、命令と実行時間とを相関させる線型モデルを含むことを特徴とする請求項１記載の推定方法。
【請求項３】
上記モデルを準備するステップは、
上記推定されるソフトウェアと同じ領域からベンチマークプログラムのセットを選択するステップと、
上記ベンチマークプログラムのセットにおける仮想命令のセットを判定するステップと、
上記ベンチマークプログラムのセットの実際の実行時間を測定するステップと、
上記仮想命令と実際の実行時間とを相関させることにより、予測式を決定するステップとを有することを特徴とする請求項１記載の推定方法。
【請求項４】
上記予測式を決定するステップは、
上記ベンチマークプログラムのセットに含まれる仮想命令間の相関分析を行って、どの仮想命令が他の仮想命令と高度に相関しているかを調べるステップと、
上記高度に相関している仮想命令のセットの内の１以上の要素を除外し、該高度に相関している仮想命令の１つを残し、削減された仮想命令のセットを生成するステップと、
上記削減された仮想命令のセットに対して線形回帰分析を実行し、予測変数のセットを有する予測式を導出するステップと、
上記予測変数のセット内の予測変数の数を所定の閾値まで削減するステップと、
上記予測変数が削減された予測式をベンチマークプログラムの第２のセットに適用し、該予測変数が削減された予測式における誤差の量を測定するステップとを有することを特徴とする請求項３記載の推定方法。
【請求項５】
上記実際の実行時間を測定するステップは、
各ベンチマークプログラムの総サイクル数を判定するステップを有し、
上記線形回帰分析を実行するステップは、
上記削減された仮想命令のセットと上記総サイクル数とに逐次線形重回帰分析を適用し、統計的に重要な予測変数のセットを判定するステップと、
上記予測式のセットに線形重回帰分析を適用し、予測式を決定するステップとを有することを特徴とする請求項４記載の推定方法。
【請求項６】
上記予測変数の数を削減するステップは、
上記ベンチマークプログラムに対する予測値の質が、所定の閾値に達するまで上記予測変数の数を削減するステップを有することを特徴とする請求項４記載の推定方法。
【請求項７】
上記予測値の質は、分散の量を測定するＲ二乗関数によって測定され、サイクル数は、回帰される予測変数の分散によって説明されることを特徴とする請求項６記載の推定方法。
【請求項８】
上記閾値は、上記Ｒ二乗関数の結果が約０．３５となる値であることを特徴とする請求項７記載の推定方法。
【請求項９】
上記推定されるソフトウェアと上記ベンチマークプログラムとを相関させるステップは、
該推定されるソフトウェアと上記ベンチマークプログラムとの間に２標本ｔ検定を適用するステップを有することを特徴とする請求項１記載の推定方法。
【請求項１０】
当該推定方法は、コンピュータにより読取可能な媒体に格納されたコンピュータ命令のセットとして実現され、該コンピュータ命令は、コンピュータにロードされて、該コンピュータに当該推定方法のステップを実行されることを特徴とする請求項１記載の推定方法。
【請求項１１】
当該推定方法は、コンピュータにより読取可能な媒体に格納されたコンピュータ命令のセットとして実現され、該コンピュータ命令は、コンピュータにロードされて、該コンピュータに当該推定方法のステップを実行されることを特徴とする請求項５記載の推定方法。
【請求項１２】
上記コンピュータ命令はコンパイルされ、上記コンピュータにより読取可能な媒体に実行可能なプログラムとして格納されたコンピュータ命令であることを特徴とする請求項９記載の推定方法。
【請求項１３】
当該推定方法は、電気信号で表された、コンピュータにより読取可能な命令として実現されていることを特徴とする請求項１記載の推定方法。
【請求項１４】
ソフトウェアの実行時間を推定する推定装置において、
ターゲットプロセッサをモデリングするモデリング手段と、
推定されるソフトウェアと、上記モデリング手段がターゲットプロセッサをモデリングするために用いたベンチマークプログラムとを相関させる相関手段と、
上記相関されたソフトウェアを上記モデリング手段に適用し、該ソフトウェアの推定された実行時間を判定する評価手段とを備える推定装置。
【請求項１５】
上記モデリング手段は、
上記ベンチマークプログラムにおける仮想命令の出現度数を判定する度数判定手段と、
上記ベンチマークプログラムの実際の実行時間を判定する実行時間判定手段と、
予測式、予測の誤差及びベンチマークプログラムの仮想命令毎の繰返し回数のうちの少なくとも１つを判定する判定手段とを備えることを特徴とする請求項１４記載の推定装置。
【請求項１６】
上記判定手段は、
仮想命令に対して相関分析を行う相関分析手段と、
高度に相関する命令を除外する除外手段と、
高度に相関していない仮想命令及びベンチマークプログラムの実際の実行時間に基づいて、予測式を導出する予測式導出手段と、
上記導出された予測式における変数の数を所定の閾値に削減する削減手段とを備えることを特徴とする請求項１５記載の推定装置。
【請求項１７】
上記判定手段は、更に、
上記導出された予測式をベンチマークプログラムの第２のセットに適用し、該予測式の評価能力の質を測定する測定手段を備えることを特徴とする請求項１６記載の推定装置。
【請求項１８】
上記予測式導出手段は、上記仮想命令に適用される線形回帰ツールを備えることを特徴とする請求項１６記載の推定装置。
【請求項１９】
上記予測式導出手段は、
逐次線形回帰分析を実行して、予測変数を判定する予測変数判定手段と、
上記予測変数に対して線形回帰分析を実行して、上記予測式を導出する線形回帰分析手段とを備えることを特徴とする請求項１６記載の推定装置。
【請求項２０】
上記閾値は、分散の量を測定するＲ二乗関数を含み、サイクル数は、回帰される予測変数の分散によって説明されることを特徴とする請求項１６記載の推定装置。
【請求項２１】
上記閾値は、約０．３５であることを特徴とする請求項２０記載の推定装置。
【請求項２２】
ソフトウェアの実行時間を推定する推定装置において、
少なくとも１つのベンチマークプログラムのセットの実行時間に基づく、ターゲットプロセッサのモデルと、
推定されるソフトウェアと、上記少なくとも１つのベンチマークプログラムのセットとを相関させる相関手段と、
上記相関されたソフトウェアを上記モデルに適用し、該ソフトウェアの推定された実行時間を推定する推定手段とを備える推定装置。
【請求項２３】
上記ターゲットプロセッサのモデルは、上記ベンチマークプログラムの高度に相関していない仮想命令及び該ベンチマークプログラムの実際の実行時間に対する線形回帰によって構築された予測式であることを特徴とする請求項２２記載の推定装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この特許出願書類の開示の一部には、著作権の保護対象となる資料が含まれている。著作権者は、何人も特許商標局の特許ファイル又は記録に示された形で特許出願書類又は特許開示をファクシミリ複写することについては異議はないが、その他の点については全著作権を保有する。
【０００２】
本発明は、概してソフトウェアの設計に関し、特に、ソフトウェアの実行時間の推定に関する。詳しくは、本発明は、マイクロプロセッサベースの（組込形）ソフトウェアの実行時間の推定に関する。
【背景技術】
【０００３】
組込みシステム（embedded system）の設計者は、ソフトウェアと電子回路（electronics）の設計にかかるターンアランドタイム（design turnaround time）を短縮するように要求されるとともに、多くの場合、設計仕様が度々変更されることにも対応するよう求められる。設計検証（validation）における主要な課題の１つは、様々なハードウェアとソフトウェアに分割（HW/SW partition）された設計の評価（evaluation）である。
【０００４】
今日の評価は、多くの場合、協調検証レベル（co-verification level）で実行され、検証するシステムの仮想のプロトタイプが造られる。例えば、図１は、物理的プロトタイプによって分割された後のハードウェアとソフトウェアを協調検証するためのアーキテクチャの具体例を示している。このアーキテクチャは、ハードウェアのシミュレーションとソフトウェア開発支援ツールをサポートしている。
【０００５】
今日の評価法では、組込形ソフトウェアはコンパイルされ、命令セットシミュレータ（Instruction Set Simulator：以下、ＩＳＳという）上で実行され、ハードウェア部分は、実際のＶＨＤＬを動作させ、又はロジックシミュレータ上でVerilogを実行することによってシミュレートされ、２つの部分（partition）間の通信は、バストランザクションレベルでシミュレートされる。この手法は、シミュレーション結果の精度が高いという明らかな利点を有する。しかしながら、この手法は、シミュレーション速度に問題があり、完全なシステムのシミュレーションには、設計空間を効率的に調べるために余りにも時間がかかりすぎるという問題がある。したがって、ターンアランドタイムを短縮するためには、抽象化のレベルを高める必要がある。
【０００６】
このような目的を達成するためには、アーキテクチャから動き（behavior）を切り離すことが重要なパラダイム（key paradigm）である。この方法においては、動作とアーキテクチャを共に発展させる（co-evolve）ことができる。すなわち、アーキテクチャの要求（例えばコスト）によって動作が変更され、動作における新たな制約により、アーキテクチャの変更が必要となることがある。優れたシステム設計の実践では、仕様を抽象的に（abstract specification）維持したまま、動作をアーキテクチャ上に個々にマッピングすることができる。この点が機能／アーキテクチャ協調設計（function/architecture co-design）と呼ばれ、仮想コンポーネント協調設計法（virtual component codesign methodology：以下、ＶＣＣという）の基本となる本質である。
【０００７】
ＶＣＣは、仮想コンポーネント協調設計のためにケイデンスデザインシステムズ社によって開発された設計ツールである。ＶＣＣ環境は、知的財産と仮想コンポーネントベースの設計フローとの両方をサポートしており、ここで、アーキテクチャ的知的財産（ＩＰ）は、それらの性能モデル（performance model）によって表されるとともに、タイミング情報（timing information）による設計の動作記述をバックアノテート（back-annotate）するために用いられる。ハードウェアとソフトウェア間のトレードオフを正確に調べるために、ソフトウェアの実行にマッピングされる動作の実行時間の正確な推定量を規定することが重要である。
【０００８】
ＶＣＣソフトウェア評価のフレームワークは、ターゲットシステム（ＣＰＵ命令セット、ターゲットコンパイラ等）とソフトウェアプログラムの構造との両方を抽象的レベルでモデル化し、これにより精度を大きく犠牲にすることなく、評価にかかる時間を適正な長さにする。しかしながら、上述のように、設計者は、更に設計時間の短縮を迫られており、また、精度を高めることは、ターンアランドタイムと製品品質にとって有益である。
【発明の開示】
【課題を解決するための手段】
【０００９】
本発明者は、現在のソフトウェア推定技術の結果を統計的手法によって向上させることができることを見出した。これは、２つの段階によって達成される。第１の段階では、既存のビルディングブロック（building blocks）を、次のような独特の方法に組み込むことによって、ターゲットプロセッサのモデルを仮想プロセッサ命令セットの観点から導出する。
１．フロントエンドのコンパイラ最適化プログラム（front-end compiler optimizer）を用い、推定するコード内の不要コード、恒常的なループ割当て（constant-loop assignment）等の不正確なソースコードを除去する。
２．領域（無線、マルチメディア、自動車）固有のベンチマークプログラムを選択する。
３．ＶＣＣ仮想コンパイラ及び推定値を用いて、ベンチマークプログラムのために実行された仮想命令の数を決定する。
４．ターゲット環境用の命令セットシミュレータ（Instruction Set Simulator：以下、ＩＳＳという）を用いて、ベンチマークプログラムの実際の実行時間を測定する。
５．線形重回帰（Multiple linear regression）を実行し、推定誤差における信頼度の程度とともに推定された時間に対する予測式（predictor equation）、推定の誤差、推定されるソフトウェアの推定誤差対制御／演算の比（error of the estimation vs the control/computation ratio）、及び次のステップで用いられる仮想プロセッサモデルを構成する各仮想機械語命令（Virtual Machine instruction）のサイクル数（number of cycles）を決定する。
【００１０】
第２の段階において、プロセッサモデルを導き出すために用いられた既存のベンチマークのセットに対する、推定される実際のアプリケーションコードの類似性を、２標本ｔ検定（2-sample t-test）によって決定する。類似性が認められた場合、アプリケーションコードを、全く同じフロントエンドの最適化プログラムによって最適化し、ＶＣＣコンパイルコードジェネレータ／アノテータ（VCC compile-code generator/annotator）によって、実行時間注釈付きのシミュレーションモデルを生成する。
【００１１】
本発明は、ソフトウェアの実行時間を推定する推定装置であって、少なくとも１つのベンチマークプログラムのセットの実行時間に基づく、ターゲットプロセッサのモデルと、推定されるソフトウェアと、少なくとも１つのベンチマークプログラムのセットとを相関させる相関手段と、相関されたソフトウェアをモデルに適用し、ソフトウェアの推定された実行時間を判定する判定手段とを備える推定装置として実現される。更に、本発明は、ソフトウェアの実行時間を推定する推定装置であって、ターゲットプロセッサをモデリングするモデリング手段と、推定されるソフトウェアと、モデリング手段がターゲットプロセッサをモデリングするために用いたベンチマークプログラムとを相関させる相関手段と、相関されたソフトウェアをモデリング手段に適用し、ソフトウェアの推定された実行時間を判定する評価手段とを備える推定装置を提供する。
【００１２】
また、本発明は、ソフトウェアの実行時間を推定する推定方法であって、ベンチマークプログラムのセットに基づいて、ターゲットプロセッサのモデルを準備するステップと、推定されるソフトウェアとベンチマークプログラムとを相関させるステップと、相関されたソフトウェアをモデルに適用し、ソフトウェアの実行時間の推定値を判定するステップとを有する推定方法を提供する。
【００１３】
これらの装置及び方法の少なくとも一部は、汎用コンピュータ又はネットワーク化されたコンピュータによって好適に実現でき、評価の結果は、汎用コンピュータ又はネットワーク化されたコンピュータに接続された出力装置に表示してもよく、遠隔の出力装置又は表示装置に転送してもよい。更に、本発明の少なくとも一部は、実行可能な、解釈可能な、又はコンパイル可能な命令のセットとして実現してもよく、これらをコンピュータにより読取可能な媒体に格納してもよく、任意の媒体（例えば、ネットワークパケット、無線伝送等）によって搬送される電気信号として表してもよい。
【発明を実施するための最良の形態】
【００１４】
本発明の詳細な解析を続ける前に、本願発明者が検討し、本発明が開発される背景となった環境を構築する現在の手法について説明する。現在、ソフトウェア（ＳＷ）の性能評価は、その実際の用途を制限する危険性（caveat）と欠点drawback）を有している。当分野において開発された技術は、以下のような特徴により記述することができる。
・抽象化のレベル：  ソースコードベースのレベル、オブジェクトコードベースのレベル、ＩＳＳベースのレベル等
・性能評価を行うことになるＳＷの種類上の制約：  制御主体のＳＷ対計算主体のＳＷ、ポインタ対静的データ構造等
・解析の種類：  静的（シミュレーションを必要としない）対動的
・実際の方法：  推定対モデリング、統計的等
・モデラのコスト：  高、中、低
・シミュレーション速度：  遅い、速い、比較的速い、比較的遅い
・解析の精密度
・結果の精度
ソフトウェアの性能評価は、一般的に、ソースベースの手法（source based approache）とオブジェクトベースの手法（object based approache）といった２つの異なる手法に分類される。ソースベースの手法は、仮想命令セット上でコンパイラを用い、ターゲットプロセッサ用のコンパイラを必要とすることなく、素早く評価を得ることができる。オブジェクトベースの手法は、ターゲットのコンパイラによって生成されるアセンブラを、アセンブルレベルの機能的に等価なＣ言語に翻訳する。いずれの場合も、コードには、タイミング及び実行に関する他の情報（例えば、推定されるメモリアクセス）の注釈が付けられ（annotated）、正確且つ高速なソフトウェアシミュレーションモデルとして用いられる。
【００１５】
構造が制限されているソフトウェアの幾つかの結果は、オブジェクトコードレベル（抽象化が比較的低いレベル）で得られ、動的データ構造、再帰的プロシージャ（recursive procedures）、無限のループ（unbounded looping）等の構造を用いたプログラムは、静的に評価することが困難である。あるソフトウェア合成システム（software synthesis system）では、プログラムを構成する全ての原始関数（primitive）は、確定した命令のシーケンスとして定義される。これらの命令の実行時間及びコードサイズは予め算出されており、したがって、これらを用いて性能の予測を正確に出すことができる。
【００１６】
任意のコードの静的な解析には、更なる問題がある。あるシステムでは、１組の一次方程式を用いて、実行可能なプログラムパスを暗黙的に（implicitly）記述する。この手法は、プログラムのシミュレーションを必要とせず、したがって、伝統的なワーストケース実行時間情報を規定することができる。しかしながら、この解析は、単一のプログラムをターゲットとするものであり、その実際の使用を制限するものである。一方、組込みシステムは、共有のリソースにアクセスする複数のタスクから構成され、それらの動的な起動は、互いの実行パス又はタイミング動作を（例えば、キャッシュの状態を変えることにより）大きく変更することがある。
【００１７】
ソフトウェアの性能評価は、リアルタイム組込みシステムの合成及び検証のための新たな手法が開発されるにつれて、より重要となってきている。このような状況において、複数の手法が提案されている。例えば、予測法（prediction method）では、実行時間は、実行される命令の数とターゲットシステムのＭＩＰＳレート（MIPS rating）との積（product）に比例する。幾つかの場合、ターゲットＣＰＵの性能をモデル化する統計的手法（statistical method）が提案されており、これにより、幾つかのＣＰＵをそのＣＰＵ上で実行されるコードに関して評価することができる。あるモデルでは、プログラム内の各命令に必要とされる実行サイクル数と、メモリの読出／書込回数と、メモリアクセス毎のサイクル数とによってソフトウェア性能を評価する。他のシステムでは、所定のソフトウェアプログラムを合成されたＲＴレベルのターゲットシステム上で走らせて、シミュレーション結果からＳＷタイミング特性を抽出する。
【００１８】
図１に示すアーキテクチャのようなシステムにおいては、フィルタリングされた情報は、サイクルが正確なＩＳＳ（cycle-accurate ISS）とハードウェアシミュレータとの間で渡される（例えば、ハードウェアシミュレータにおける命令とデータフェッチに関する動作（data fetch-related activity）とを抑制する（suppressing）ことにより）。この手法は、正確であるが、時間がかかり、ハードウェア及びソフトウェアの詳細なモデルを必要とする。性能解析は、設計が完了した後でしか行うことができず、その時には、選択したアーキテクチャを変更することは難しい。別のシステムでは、コンパイルされたソフトウェア記述の制御フローグラフ（control flow graph：ＣＦＧ）に、サイクルが正確な性能モデル（例えば、パイプライン及びキャッシュを考慮したモデル）を導出するために有用な情報を注釈として付ける。解析は、各基本ブロックに対して生成されたコード上で実行され、実際のコンパイル処理によって実行される最適化に関する情報が組み込まれる。この解析は、レジスタの割当て、命令の選択及びスケジューリング等とみなされる。オブジェクトコードベースの手法も、この方式を用いる。
【００１９】
入力を限定する代わりに、幾つかのサンプルデータに対するプログラムの実行をトレースすることにより、解析結果を得ることができる。この手法は、プロファイリングと呼ばれ、既存のソフトウェアシステムに頻繁に適用されている。統計的に算出された負荷を用い、レジスタ転送（Register-Transfer：ＲＴ）レベルでのトレースによる方式も提案されている。変更されていない形式では、これらの方式は、設計されているシステムに類似したシステムの非常に詳細なモデル又はインスタンスを必要とする。ここで、推定値は、このような詳細な情報が得られる前に、使用可能であることになっている。この要求を回避するために、トレースによる手法を用いることができる。時間軸を独立変数（Independent variable）として扱い、プログラムの実行をサンプリングする純粋なプロファイリング法に代えて、機能モデル（functional model）の実行を独立変数とし、実行の遅延を、機能モデルのシミュレーション（simulated future）の前に、予測する。性能解析は、システムのレベルにおいて行うことができ、そこでは、統計的に関連するベンチマークのセットが適用される。この手法が余りにもコスト（expensive）がかかりすぎる場合、個々のパスにおける遅延を決定するために必要な詳細及びコストを抑えて、制御フローパスのセットのレベルで解析を行う手法も提案されている。
【００２０】
計算主体のコード領域（computational-dominated code domain）においては、ＤＳＰ上で実行されるＳＷの実行時間を推定する手法が提案されている。この技術は、例えばプロファイリングによって、実行時間の特性が予め示されているカーネル機能のセットを定義することに基づいている。そして、評価されるアルゴリズムは、ＤＳＰアプリケーション（同期データフロー）用のカーネルの静的合成から作られる。また、ＰＯＬＩＳソフトウェア評価法、すなわち、コンパイラによる最適化を推定するタイミング推定値の注釈を元のＣコードに付す方法を用いてもよい。このソースベースの手法は、性能モデルが比較的単純（各高級言語の文（statement）に対して選択されたプロセッサ上で推定される実行時間）であるので、選択されたプロセッサに対する完全な設計環境を要求しないという利点を有する。この手法は、制御主体のコードをターゲットとするものであり、コンパイラ及び複雑なアーキテクチャの機能（例えばデータ依存性のためのパイプラインのストール）を考慮することができない。
【００２１】
本発明に係る方法
本発明に係る方法は、ソースベースの手法に分類することができ、ＳＷ（あらゆる任意のＣコード）上の制約がなく、モデラのコストが比較的安く、シミュレーション速度が比較的速く、動的（シミュレーションが必要）であり、及び静的解析をベースとした手法である。本発明は、上述した手法の幾つかにおいて失われていた推定値の信頼性をある程度向上させるものである。また、本発明は、予測式（predictor equation）によって、性能モデルを見つけてカーネル機能に割り当てる半自動的な方法を提供し、すなわち、実効可能なプログラムパスを記述した線形方程式のセットを用いた方法を向上させる。また、新たなベンチマークプログラムの既存のセットに対する類似性を推測することができ、ＳＷの推定誤差対制御／計算の比が推定される。
【００２２】
本発明は、オブジェクトベース又はＩＳＳベースの手法における精度を必ずしも向上させるものではない。しかしながら、本発明は、ある程度の統計的信頼性を有する推定値において誤差を規定し、したがって、設計者は、推定値を用いてトレードオフの判断を行うことができるか、又はオブジェクトベース又はＩＳＳベースのより高価な手法を用いるべきかを判断することができる。
【００２３】
信頼性が高い実行時間の推定
ソースベースの動的ＳＷ評価法は、ターゲットプロセッサ上で動作するＳＷタスクによって実行される実際の機械語命令を仮想命令のセットに抽象化するという思想に基づいている。仮想命令は、マイクロプロセッサ命令の汎用ファミリ（例えばＩＦ文、ＧＯＴＯ文、メモリからのロード（ＬＤ）、メモリにストア（ＳＴＯ）、ＯＰｉ（整数に対する３２ビットのオペレータ）、ＭＵＬｉ（整数の積）等）に分類される。マイクロプロセッサ命令の汎用ファミリに分類される命令の幾つかは、機械語命令に直接マッピングされ、多くの場合、特定の汎用ファミリメンバをマッピングすることができる実際の機械語命令は複数あるが（例えば、異なる種類のＩＦ文は、異なる機械語命令にマッピングされる）、命令のファミリ全体は、単一の種類の仮想命令によって表現される（すなわち、ＩＦ文の異なる変形は全て、単一のＩＦ仮想命令によって表現され、ＧＯＴＯ文の異なる変形は全て、単一のＧＯＴＯ仮想命令によって表現される等）。ＳＷタスク内の各基本ブロックは、基本ブロックの実行を担当する仮想命令の総数にコンパイルされる。すなわち、ＳＷタスクは、ホストワークステーション上では最適化されて実行されるが、シミュレーションにおいては、実際のターゲットプロセッサ上で実行される仮想命令の数が累算される。
【００２４】
この抽象化のレベルにおけるＣＰＵとコンパイラの組合せのモデリングは、非常に困難なタスクであるということが判明した。実際に、異なるコンパイラは、生成され、したがって実行されるアセンブラ命令に関し、全く同じコードに対して異なる結果を生成することがある。また、同じコンパイラは、最適化フラグによって、異なるコードを生成することができる。したがって、いかなるソースベースの手法もプッシュボタン的な解決法（push button solution）ではないと考えられる。本発明の主要な思想は、ＶＣＣコンパイラ／推定量が、ＣＰＵ／コンパイラの対をどれ程正しくモデリングしているかに基づいて、仮想機械語命令の正しい解釈（interpretation）を提供することである。ここで、以下のような２つの異なる解釈が利用できる。
１）厳密な解釈（rigid）：  ＶＣＣコンパイラは、ターゲット環境を適切にモデリングする。したがって、各仮想命令は、対応するアセンブラ命令のクラスを正確に表現する。そして、データブック（data book）に規定されているサイクルを実際のサイクルの良好な近似値とみなし、これらのサイクルを仮想命令に割り当てることを意味している。
２）緩和された解釈（relaxed）：  ＶＣＣコンパイラは、ターゲット環境を良好にはモデリングしておらず、したがって、仮想命令は、予測式内の係数（factor）である。
【００２５】
緩和された解釈は、予測においてある程度の信頼度を有する統計的手法を導く。厳密な解釈と緩和された解釈との間のいかなる中間的解釈も状況に応じて評価されなければならない。
【００２６】
現在、ＶＣＣにおいて、仮想命令は、ＬＤ（メモリからのロード）、ＬＩ（即座にロード）、ＳＴ（ストア）、ＯＰ（ｉ，ｃ，ｓ，ｌ，ｆ，ｄ）（整数（integer）、文字（char）、ショート（short）、ロング（long）、浮動小数点（float）、倍精度（double）用の基本的なＡＬＵオペレータ）等を含むＲＩＳＣ命令セットの簡略化された見方（simplified view）である。
【００２７】
ターゲットプロセッサ上の各仮想命令は、多くの方法により、仮想命令によって賄われる実際のターゲットプロセッサのサイクル数として特徴付けられる。これにより、以下のような予測式が導き出される。
【００２８】
【数１】
2004530193.tif 000003
【００２９】
ここで、Ｎｉはタイプｉの仮想命令の数に等しく、Ｐｉは仮想命令をサイクル数（cycle count）に変換したパラメータに等しい。Ｎｉは、ＶＣＣにおけるＳＷタスクをコンパイルし、及びホストベースの実行（host-based execution）における仮想命令の各出現回数を累積したタスクの注釈が付いたバージョンを生成することによって算出される。
【００３０】
Ｐｉは、次のように幾つかの方法によって決定することができる。
１）ターゲットプロセッサのデータシートから決定する（厳密な解釈）
２）較正スイート（calibration suite）に対して最良適合最小二乗法（best fit least squares approach）を用いる。
３）類似領域から抽出されたタスクのセットにおいて逐次線形重回帰法（stepwise multiple linear regression approach）を用いる（緩和された解釈）。なお、この手法は、上述の方法から導出された解から開始し、結果を調整するために用いることもできる。
【００３１】
後者の場合、仮想命令はターゲットプロセッサのアセンブラ命令に対する意味的な対応関係を有していないため、線形方程式のセットにおける制約を緩和する必要がある。表１は、仮想命令の異なる解釈に関するトレードオフを示している。更に、表１は、ＩＳＳベースの技術と共に、オブジェクトベースに関する技術の位置付けを示している。
【００３２】
【表１】
2004530193.tif 000004
【００３３】
以下、例示的にプロセッサＡを用いて、これらの技術を説明するとともに、これらの技術の長所及び短所について検討する。これらの検討で用いたサンプルセットは、３５個の制御指向（判断主体）のＳＷタスクからなり、１タスクは、約２００サイクルで実行される。これらは自動車の制御分野から抽出したものである。
【００３４】
具体的な基準算定
ソフトウェア評価のための基準は、様々な方法で決定することができる。成功の度合いを変えることによって適用される２つの顕著な具体例として、データシート法と較正法がある。
【００３５】
データシート法は、プロセッサＡの公表されているデータシートを検討することによって、実際の機械語命令セットと仮想命令セット間の類似性からパラメータＰｉを導き出す。データシート法は、以下のような２つの主な問題を有する。
１）命令毎に報告されるサイクルは、幾つかの解釈、すなわちパイプライン（pipelining）等のインパクトがある影響を解釈する必要がある。
２）プロセッサの状態によってサイクル数が変わる命令に対しては、ワーストケース、ベストケース又は幾つか標準的なケース（nominal case）を用いたかを判断しなければならない。
【００３６】
例えば、プロセッサＡにおいて、ＬＤ及びＳＴの命令（メモリに対するロード及びストア）は、公称３サイクルを必要とする。しかしながら、プロセッサＡは、３段パイプラインを有し、コンパイラの性能及びタスクに依存するが、プロセッサＡは、メモリを待っている間に他の命令を実行し、その機能を停止させないようにすることができる。実際、優秀なコンパイラでは、多くの場合、ＬＤ及びＳＴの実際のサイクル数（cycle count）は１又は１に非常に近い値に短縮される。元のサイクル数である３を用いると、推定値は悲観的になる。
【００３７】
ＳＵＢ及びＲＥＴ（サブルーチン呼出及びリターン）についても、同様の問題が生じる。プロセッサＡは、サブルーチン呼出時に実際に使用している一部のレジスタ、すなわち０個〜１５個の範囲で変化するレジスタのみをメモリに格納する。同様に、リターン時には、メモリから必要な数のレジスタのみが復元される。ＳＵＢ及びＲＥＴのワーストケースを用いて、１５個のユーザレジスタ全てを格納しなければならないと仮定すると、ＳＵＢ及びＲＥＴのためのパラメータは１９〜２１サイクルとなり、これは、多くの場合、非常に悲観的又は保守的である。一方、一般的に用いられるレジスタの実際の数は、タスク毎に動的に変化し、したがって、ある種の統計的な検討を行わなければ、標準的な又は典型的な値を出すことはできない。
【００３８】
本発明者は、３５個のベンチマークのセットに対するサイクル数のデータシート解析から導き出した２個のパラメータファイル（以下、基準ファイル（basis file）という。）を使用した。第１のファイルでは、全ての仮想命令を最も保守的な基準に基づいて推定し、第２のファイルでは、ロード及びストアを３サイクルから１サイクルに短縮した。第１の推定量を用いた場合、誤差率（予測値を実際のサイクル数と比較して）は、−８．５％〜４４％の範囲となり、ここで、正の誤差は悲観的な推定量を示す。多くの場合、推定量は保守的となり、誤差範囲は５０％以上に広がった。ロード及びストアのより現実的なサイクル数を有する第２の基準ファイルを用いた場合、誤差範囲は−２８％〜１８％となり、明らかに悲観性が減少し（事実上、若干楽観的になり）、全体の誤差範囲も４６％に縮小された。
【００３９】
ここで、本発明は、予想される誤差範囲の縮小を含む技術の向上を目的としている。データシート法は、動的には不十分であり、特定のＳＷタスク領域に対して調整することができず、したがって、特定の種類のタスクに対して非常に良好な推定値を与えることを期待することができない。ロード／ストアのサイクル数を調整することができるが、サブルーチン呼出及びリターンのオーバヘッドを容易に調整することはできず、したがって、多くの階層的機能呼出構造を有する大きなタスクに対しては、多くの場合、この手法は非常に保守的であることになる。実際、このことは、本発明者によるＶＣＣでの経験でも確認されている。
【００４０】
較正法は、プロセッサベースのファイルを導き出す異なる手法であり、それぞれ仮想命令の一部を強調しようとするプログラムの特別な較正スイートを生成し、そして、タスクのセットの実際のサイクル数の最小二乗を、各タスク内の仮想命令の出現度数に適合（fit）させる。この較正法は、各仮想命令のパラメータが較正スイートからの経験的なデータに基づいた基準ファイルを導き出すために用いられた。
【００４１】
この基準ファイルにおいて、例えばロード及びストアのパラメータは０．１サイクルであり、乗算のパラメータは２．６〜１４９．３サイクル（オペランドの種類に依存する）であり、ＩＦのパラメータは１．６サイクル等であった。これを本発明者による３５個のベンチマークに適用すると、誤差範囲は５５〜１５％（全ての推定値は楽観的であり、サイクル数を過小評価するもの）であり、全体の誤差範囲（total error range）は４０％であった。
【００４２】
較正法には、次のような幾つかの問題がある。
１）較正テストスイートの選択：  本発明者による実験は、幾つかの標準的プログラム（例えば８クイーン、ソート、ＦＦＴ及び特定の仮想命令を強調するするために生成された高度の合成プログラムのセット等のＳＰＥＣタイププログラム）を用いて行われた。この種類のスイートと、任意の特定の組込みＳＷ領域との間の特性に関する関係は、良くても限界（marginal）である。特に、この手法は、（多くの合成プログラムは、ＭＵＬ及びＤＩＶの偏差値（variation）を算出しようとするため）、良好な制御指向予測を犠牲にして、数値演算を過度に強調する。
２）過剰決定解析（Over-determined analysis）：  ２５個の仮想命令と２０〜３０個のプログラムの較正スイートとを用いた過剰決定系（over-determined system）であり、最小二乗を適合（least squares fit）することによって、較正スイートの完全性又は準完全性（near-perfection）が達成されるが、他のプログラムに適応できる演繹的な根拠（a priori basis）は殆どない。
３）頑健性（robustness）の欠如の可能性：  較正スイート及び過剰決定解析は、異なる領域からのプログラムに対して、較正スイートベースのファイルが非常に不正確な結果を導き出す可能性がある。実際、このことは、本発明者による３５個の制御プログラムにおいて確認され、較正スイートと過剰決定解析の両方は、全体的に非常に楽観的であり、それらの組合せ（aggregate）は、データブック法に比してより悪い結果を導き出した。
【００４３】
４）仮想命令間の高い相関：  これらの命令は、全て統計的に無相関であり、すなわちサイクル数のみを従属変数（Dependent variable）とする独立変数であると仮定する。しかしながら、実際のプログラムでは、１つの仮想命令の相対出現度数（relative frequency）は、多くの場合、他の仮想命令と非常に高い相関関係（correlation）を有する（例えば基本的なＡＬＵオペレータによるロード、又はＩＦによるロード）。これは、独立変数の数を最小に減らす、より単純でより頑健な推定量（robust estimator）が可能であることを意味している。
５）ユーザ解釈の困難性：  ユーザは、較正法が意味があるパラメータを導出することを期待している。すなわち、全ての仮想命令パラメータは、１サイクル以上でなくてはならず（実行サイクル（a cycle to execute）より短い実際の命令タスクは存在しないため）、また、整数であることが好ましく、論理的にスケーリング（scaling）できなければならない。しかしながら、最良適合法（best fit approach）は、予測式内のパラメータを検索するのみである。この手法を採用すると、パラメータは、仮想命令のサイクル数に対して実際の関係を有さなくなる。パラメータは、曲線近似（curve fitting）から得られる乗数（Multiplicative Factor）に過ぎず、予測式内で用いられるだけである。これが、この種の手法に不慣れなユーザにとっては困難な点である。なお、較正法は、以下のような３つの前提に基づき、より確かな根拠を有する統計的手法への手掛かりを示す。
１）特定の分野から導出される実際のＳＷプログラムに基づく解析：  自動車、通信、制御指向、数学主体（mathematically-dominated）。
２）予測値（predictor）に用いられる仮想命令の数を、独立変数の最小数に低減し、したがって、より頑健で有意義な推定量（estimator）を得るように試みる。
３）様々な仮想命令とサイクル数間の正及び負の相関を明らかにすることにより、パラメータ又は因子がサイクル数の意味を有するという考えから脱却する。
【００４４】
本発明に基づく統計的推定法
本発明では、全てのＳＷタスクに対して単一の予測値を生成するという従来の考え方を捨てる。これに代えて、本発明は、統計的技術を用いて、特定のＳＷタスク領域のための予測値を導出し、この予測値の他の領域への適応性を検討する。本発明で用いられる手法は、逐次線形重回帰法（stepwise multiple linear regression approach）であり、基本的な線形重回帰（basic multiple linear regression）とともに、相関分析（correlation analysis）を用いる。ＳＷタスク領域は、上述した３５個の制御指向自動車ベンチマークのセットである。
【００４５】
本発明者は、制御セットとして、プログラミング言語エステレル（Esterel）によって書かれた６個の制御ソフトウェアタスクを用いた。そして、３５個のタスクから導かれた推定値を制御セットに適用して、誤差を決定した。しかしながら、３５個のタスクからは、６個の制御セットに対して良好な結果は得られなかった。次に、本発明者は、２セットのベンチマークに対して単純な２標本ｔ検定を行い、制御サンプル（control sample）は、ベンチマークのサンプルと同じ母集団からは導き出されないとの結論の根拠（basis）を得た。
【００４６】
３５個のサンプルセットにおけるＶＣＣ注釈（VCC annotator）によって実際に生成される仮想命令は、ＬＤ、ＬＩ、ＳＴ、ＯＰｉ、ＭＵＬｉ、ＤＩＭ、ＩＦ、ＧＯＴＯ、ＳＵＢ、ＲＥＴの１０個である。本発明者は、これらは全て独立変数であり、タスク（cycle）の総サイクル数を従属変数とする仮定から開始した。
【００４７】
実行時のタスクのインタラクションを集めるために、シミュレーション環境において評価を動的に行った。更に、最高の実行（best implementation）を求める際に、幾つかのアーキテクチャのマッピングを探索（exploration）できるように、十分に高速である必要があった。本発明者は、Ｃ言語が組込みシステムのプログラミングにおいて最も多く用いられている高級言語であるので、主にＣ言語で書かれたソフトウェアに集中した。なお、本発明は、他の言語にも同様に適用することができる。更に、本発明に基づく手法は、（何らかの制約はあるが）計算主体のコードのソフトウェアの推定にも用いることができる。
【００４８】
逐次線形重回帰法を適用することにより、幾つかの興味深い結果が得られた。
１）ベンチマークのセットのＭＵＬｉ及びＤＩＭの数は一定であり、したがって除外するべきである（分散がないとみなされる独立変数は、サイクル数の従属変数に対しては無相関になる）。
２）１個のみの独立変数ＬＤを、予測式に加えると、Ｒ２＝０．３６３である以下のような予測式が得られる。
【００４９】
Ｃｙｃｌｅｓ＝１４５＋４＊ＬＤ  （１）
Ｒ２測定値（measure）は、回帰における重要な値（key one）である。基本的に、この値は、従属変数（この具体例ではサイクル数）における全分散のどれ程が、回帰される独立変数の分散によって説明することができるかを示している。そして、サイクル数の分散の３６％が、仮想命令ＬＤの分散によって説明される。
【００５０】
更に、回帰は、多くの場合、切片（すなわち、定数項）を有する予測式を与える。これらは、幾つかの方法で解くことができ、そのうちの１つは、ソフトウェアタスクを実行及び停止するために必要なセットアップ（setup）の量である。なお、別の観点からは、切片は、回帰をより良好に適合させる単なる定数とみなすこともできる。回帰パラメータが相関以外の何かを評価すると仮定することは誤った結果を招く可能性がある。したがって、ＬＤパラメータに対する４サイクルは、各ＬＤが平均的にＬＤ自体を含む４サイクルの様々な命令を必要とすると解釈することができる。あるいは、これは、本質的に意味がなく、サイクルを予測するために使用され、固有の意味を有さない統計的事象と解釈することもできる。
【００５１】
この予測式を３５個のサンプルに逆に適用する（back-apply）と、誤差範囲は、−１３〜１７％となり、誤差の全範囲は３０％となる。このように、誤差範囲は、データブック法又は較正法に比して、より集中するとともに、狭くなっている。この予測式の他のサンプルへの適応可能性については、後に説明する。
【００５２】
ここで、ＭＵＬｉ及びＤＩＶｉ以外の全ての変数を用いて、通常の線形重回帰分析を実行すると、更なる幾つかの結果が得られる。
１）ＲＥＴは、サンプルにおいてＳＵＢに直接関係している（したがって、この２つは１００％相関している）ため、０として除外される（zeroed out）。
２）Ｒ２＝０．４９６５である以下のような予測式が得られる
Ｃｙｃｌｅｓ＝３５４＋１．５＊ＬＤ＋３１．９＊ＬＩ−３０．４＊ＳＴ
−７．１＊Ｏｐｉ＋１３．６＊ＩＦ−５．１＊ＧＯＴＯ
−５１．５＊ＳＵＢ  （２）
この予測式は、サイクル数の４９．６５％の変動（variability）を説明している。予測式を逆に適用すると、１０．３〜＋１９．４％の誤差範囲が得られる。なお、以下の点に留意する必要がある。
１）殆どのサンプルセットのサイクル数（２００〜２５０）よりも多い切片（３５４）がある。
２）負の係数又はパラメータがある。
３）それらの多くは、（ＬＩに対する３１．９）、（ＳＵＢに対する５１．５）よりも大きい。
４）このパッケージにおいて、多重共線性（multicollinearity）が深刻な問題となる（すなわち、仮定された独立変数であるＬＤ、ＬＩ、ＳＴ、ＯＰｉ、ＩＦ、ＧＯＴＯ、ＳＵＢのうちの幾つかは、実際に高い相関関係を有している）。これは、逐次回帰の結果から明らかである。
【００５３】
換言すれば、この予測式は、命令毎のサイクルに関する有効な意味（operative meaning）を有するパラメータに何ら関係がない入力変数に、サイクル数を単に統計的に適合させるものである。
【００５４】
多重共線性問題を低減するために、本発明者は、独立変数に対する相関マトリクスを作成し、ＬＤ−ＯＰｉに対して０．９２、ＯＰｉ−ＩＦに対して０．９９、ＬＤ−ＩＦに対して０．８８の相関を得た。この事実は、これらの３つの変数が互いに高い相関関係を有しているため、これらの３つの変数のうち２つの変数を除外できることを意味している。そこで、５つの変数ＬＤ、ＬＩ、ＳＴ、ＧＯＴＯ、ＳＵＢを用いて回帰分析を再度実行すると、Ｒ２＝０．４７であり、誤差範囲が１０〜＋２２．５％である以下のような式が得られる。
【００５５】
Ｃｙｃｌｅｓ＝２７３−０．９＊ＬＤ＋２３．３＊ＬＩ−１８．９＊ＳＴ
＋０．０６＊ＧＯＴＯ−３８．７＊ＳＵＢ  （３）
【００５６】
なお、上述のように、切片及び係数は、有効な又は暗示的意味を有していない。このパッケージは、多重共線性が深刻な問題ではないことを示している（最終的には、他の変数も除外する（throw out）ことができ、結局、予測式においてＬＤのみを用いた逐次回帰によって報告された結果に戻る）。
【００５７】
結果
本発明者は、上述した回帰式（１）、（３）を幾つかのエステレルのベンチマークからの６セットのサンプルセットに適用した。この結果は優れず、サイクル数は、回帰式（１）に対しては２３％〜６０％、回帰式（３）に対しては８７％〜１８４％と過大評価された。このサンプルセットにおいて、また、仮想命令ＯＰｃが出現し、適用可能な場合（予測式（３）において）ＯＮのパラメータを用いた。
【００５８】
結果が優れない理由は、サンプルＡに基づいて統計的に導出された予測値の新たなサンプルＢへの適用可能性が、サンプルＢがサンプルＡに類似する特性を有するという類似性の推論に頼る必要があるためである。他の観点においては、サンプルＡとサンプルＢは、同じ基底にある母集団から導出された可能性があると考えることができる。この仮定を検証する一手法は、２標本ｔ検定である。これは、これらの２つのサンプルが同じ平均値と分散を有する同じ基底にある正規分布から導き出されたとの仮定を検証するものである。
【００５９】
ここで、比較すべきＳＷタスクの幾つかの特性（characteristic）と、例えばサイクル数等の独立した特性とが必要である。１つの考えとして、総サイクル数に対する仮想命令ＩＦの数の比が、制御主体のＳＷタスクの測定値であり、すなわち、制御主体のタスクは、アルゴリズム又は数学主体のタスクよりも高い比を有する。これは、漠然とした議論であるが、タスクの制御主体性を明確に測定することは困難である。
【００６０】
この比を用いて、以下のような統計値が得られた。
【００６１】
３５サンプルの自動車制御バッチ（batch）
平均比＝０．１７７、標準偏差（std. deviation）＝０．０１６
６個のエステレルバッチ
平均比＝０．３００、標準偏差＝０．０１６８
【００６２】
２標本ｔ検定は、これらの２つのサンプルが同じ基底にある正規分布から導出されたかもしれないという仮定を否定した。実際、第２のサンプルについては、正規性自体が否定された。この２標本ｔ検定を用いるという考えにより、この種の識別機能（discriminating function）を新たなタスクのバッチに適用し、他のサンプルから導出された予測式を新たなサンプルに適用することが合理的であるか否かを判定することができる。したがって、これにより、予測値を適用することができる領域を区別することができる。これを更に検証するために、第１のバッチである３５個の自動車制御バッチから無作為に１８個を選択し、５つの変数ＬＤ、ＬＩ、ＳＴ、ＧＯＴＯ、ＳＵＢについて、回帰分析を再実行した。これにより、Ｒ２＝０．５６８である以下のような回帰式が得られた。
【００６３】
Ｃｙｃｌｅｓ＝２１９＋１．３＊ＬＤ＋１０．９＊ＬＩ−１０．２＊ＳＴ
−５．２＊ＧＯＴＯ−２１．３＊ＳＵＢ  （４）
この回帰式を第１のバッチの残り半分（１７個のサンプル）に適用すると、予測の誤差範囲は１２％〜＋５％となった。総サイクルに対するＩＦの比の特性を用いて、２標本ｔ検定をこれらの１８個のバッチ及び１７個のタスクに適用することにより、帰無仮説（null hypothesis）が認められた。すなわち、２つのサンプルが同じ母集団（２つのサンプルが存在する）から選ばれた可能性が高い。
【００６４】
これは、特定の領域のサンプルから導出された予測値がその領域からの更なるサンプルに公平に適用することができ、単純な弁別器を用いて、ＳＷタスクのサンプルが実際に同じ母集団から選択されたものであること（したがって、弁別器の適用可能性）を確かめることを示している。
【００６５】
この手法を更に調べるために、本発明者は、１組の仮想命令と１８個のＦＦＴタスクのサイクル数を用いた。ここで、上述した予測式（４）を用いると、誤差が１００％を超える非常に悪い結果となった。そこで、ＦＦＴの回帰分析を用いて予測値を生成し、Ｃｙｃｌｅｓ＝２８６，３８７＋２１５３＊ＭＵＬｄを得た（ＭＵＬｄ＝倍精度の乗算（double precision multiply））。実際、２８６，３８７の切片は除外することができ、Ｃｙｃｌｅｓ＝２１５３＊ＭＵＬｄを用いることができる。これは、これらのベンチマークは、膨大な数のサイクル数（例えば、５６４，０３８，７６７サイクル又は他の例では１０億以上のサイクル）に対して実行され、したがって、２８６，０００程度の切片は、比較の上では無視することができる。これらのベンチマークにおいて、この予測値を用いた場合の誤差は±１％である。本発明者は、何が実際にカーネル機能（kernel function）、すなわち外部のカーネル機能ではなく、内部のカーネル機能であるかを見出した。カーネル機能は、かなり数学的なＳＷタスクの予測値であり、ここでは、サイクル数は、動的制御が主体の分岐ではなく、静的に予測可能な数値演算によって支配される。計算の静的性質（例えば、ループは、動的繰返し回数又は収束検定に基づくことなく、演繹的に既知の繰返しサイズを有する）により、カーネル機能は、非常に低い誤差で高度に予測することができる。ＦＦＴの具体例は、この現象を明瞭に示している。この場合、カーネル機能は、外的特性（サンプルのサイズ等）ではなく、内的特性（ＭＵＬｄの数は、２倍の乗数に等しい）の観点から表現される。いずれの種類のカーネル機能も可能である。
【００６６】
本発明を適用した母集団の分析を補強し、したがって、ある領域のあるサンプルセットから導出された予測式の他のサンプルセットへの適用可能性を確かめるために、４５個の制御サンプル及び１８個のＦＦＴサンプルに対する更なる２標本ｔ検定を行った。ここでも、全サイクルに対する仮想ＩＦの比を弁別器として用いた。１８個のＦＦＴサンプルの場合、平均比は約０．０００３５であり、標準偏差は非常に低い（すなわち、４５サンプルの平均値の約１０％に対して、０．３５％）。２標本ｔ検定は、これらの２つのサンプルが同じ母集団から導出されたという仮説を確実に否定した。すなわち、この結果が示しているように、１つのバッチから導出された予測値は、他に用いても殆ど関連性を有さない。
【００６７】
本発明は、回帰分析を用いて、特定の領域からのタスクサンプルに基づき、ＳＷ評価のための統計に基づく予測式を導き出す方法を提供する。上述したベンチマークは、自動車のエンジン制御から導出されたが、以下に限定されるものではないが、工業用制御、無線及び有線通信、マルチメディア等を含む他の領域からのベンチマークを用いてもよい。用途の範囲をより特定及び限定すれば、より高い精度を実現することができる。
【００６８】
ここで、再び図面を参照する。添付の図面では、同様の又は対応する部分には同一の符号が付されている。図２は、本発明に基づく処理全体を示すフローチャートである。ステップ２００において、ターゲットプロセッサのモデルを準備する。図３は、ターゲットプロセッサのモデルの準備を説明する例示的な処理を示している。
【００６９】
図３に示すステップ３００において、ベンチマークプログラムのセットを決定する。上述したように、ベンチマークプログラムは、好ましくは単一の領域から導出され、広範囲に亘るプログラムフロー、命令及びプログラム全体の構造を表している。次に、各ベンチマークプログラム内の仮想命令の数を判定し（ステップ３１０）、続いてベンチマークプログラムの実際の実行時間を判定する（ステップ３２０）。
【００７０】
次に、ステップ３３０において、予測式のセット及び他のデータ（推定値の誤差、仮想命令毎のサイクル数等）を準備する。ステップ３３０は、線形回帰によって実行してもよい。図４は、本発明に基づく線形回帰を実行する具体的な処理を示すフローチャートである。
【００７１】
図４に示すステップ４００において、ベンチマークプログラムの仮想命令に対する相関分析を行う。そして、相関が高い命令を除外する（ステップ４１０）。相関が高い命令とは、第１の命令と第２の命令の出現度数間に高度に予測可能な又は演繹的な関係を有する命令である。
【００７２】
ステップ４２０において、線形回帰分析を行い、予測式を決定し、これにより、各種類の命令の出現度数（ファミリタイプの命令の出現度数）に基づいて、コンピュータ上で実行されるサイクル数を予測することができる。ステップ４２０に、例えば、予測変数を決定するための逐次線形回帰分析の実行をステップ４２２として、予測式を導き出すための予測変数に対する線形重回帰分析の実行をステップ４２４として組み込んでもよい。
【００７３】
ステップ４３０において、ステップ４２０の線形回帰分析によって決定された予測変数のセットを所定の閾値に削減する。予測変数は独立変数（例えばＮｉ）であり、予測変数を減らすと、予測の精度も低下する。したがって、予測変数の削減は、計算の複雑さ（予測変数が多いと、複雑さが増す）と、予測の精度とのトレードオフに帰着する。閾値、すなわち、例えばＲ２の値を用いて、本発明者は、独立変数を減らすことにより、Ｒ２の値がどのように低下するかを観察し、Ｒ２の閾値が０．３５のときに良好な結果が得られることを見出した。
【００７４】
ステップ４４０において、予測式は、ベンチマークプログラムの第２のセットに適用され、誤差の量を判定することにより質を測定する。ベンチマークプログラムについては、情報の完全なセットを入手することができるため、予測式をベンチマークプログラムの第２のセットに適用した結果によって、ベンチマークプログラムの第２のセットの実行時間を推定する。実際の実行時間と推定された実行時間の差から、予測式の質を測定できる。
【００７５】
図２に示す処理において、ターゲットプロセッサのモデルを準備した後、推定される実際のソフトウェアを評価し、そのソフトウェアが、ステップ２００においてターゲットプロセッサのモデルを開発するために用いられたベンチマークプログラムを用いて準備されたモデルに適用でき、これに基づいて評価することができるかを判断する。この判断は、推定されるソフトウェアと、ベンチマークプログラムとの間の相関の度合いを測定するいかなる手法を用いて行ってもよい。好ましくは、この判断は、２標本ｔ検定を用いて行う。２標本ｔ検定によって、推定されるソフトウェアと、ベンチマークプログラムとを区別することができるときは、このベンチマークプログラムを用いて生成されたモデルは、不正確な結果を導き出す可能性が高い。一方、検定により、うまく区別できないときは、モデルは、良好な推定結果を導き出すと期待される。具体例として、各ベンチマークプログラムが３０個〜９０個のＩＦ文を有しているとすると、総サイクル数は、１０００００〜２０００００サイクルとなる。また、推定されるＳＷ内のＩＦ文が約１５００個であり、総サイクル数が９０００である場合、ベンチマークと推計すべきＳＷとは、同じ又は類似の母集団に由来するのもではないため、２標本ｔ検定は、ベンチマークと推定されるＳＷとを区別することができる。一方、評価すべきＳＷ内のＩＦ文の数が６０であり、総サイクル数が１２５０００である場合、ベンチマークと推定されるＳＷとは、類似する母集団に由来するため、２標本ｔ検定は、ベンチマークと推定されるＳＷとを明瞭に区別することができない。
【００７６】
ステップ２２０において、ソフトウェアの実際の実行時間を推定する。推定されるソフトウェアは、例えば、ＶＣＣにおいて実行され、仮想命令の度数が判定され、この度数は、モデル又は予測式（ステップ２００から）に適用され、これにより実行時間が推計される。得られる推定実行時間は、最も正確且つ最も安い現在利用可能な推定ソフトウェア実行時間を示している。
【００７７】
概括すると、本発明は、次のようなステップを含む処理又は方法として実施される。
１）基準ファイルを適用可能なアプリケーション又は設計領域を判定する。基準ファイルは、領域を数学的に記述する係数のセットである。
２）その領域（設計領域）に代表的なベンチマークプログラムのセットを作成又は入手する。
３）ベンチマークプログラムをＶＣＣ（又は、他のＥＤＡ型ツール）上で実行し、仮想命令の総数を得る。これらの総数は、上述したように、様々な仮想命令の出現度数を含んでいる（例えばＧＯＴ、ＭＵＬ、ＩＦ仮想命令の数）。
４）サイクルが正確な、サイクル命令セットシミュレータ（ＩＳＳ）又は実際のハードウェアのベンチマークを実行し、正確なサイクル数を得る。
５）ベンチマークの結果を用いて、全ての仮想命令の相関分析を行う。
６）相関が高い命令をサンプルから除外する。
７）相関が高い命令が除外された仮想命令サンプルのセットに逐次線形重回帰分析を適用し、サイクル数を合計し、統計的に重要な予測変数のセットを決定する。
８）予測変数（仮想命令）のセットに線形重回帰分析を適用して、予測式を導く。
９）サンプルセットに対する予測値の質（Ｒの二乗によって測定される）が所定の閾値に達するまで、予測変数を削減する。
１０）同じ領域からのベンチマークソフトウェアタスクの第２のセットに予測式を適用し、予測誤差に関する結果の質を測定する。
１１）予測式を生成するために用いたベンチマークサンプルと、独立した質測定用のサンプル（independent quality metric sample）とに対して２標本ｔ検定を行い、両サンプルが同じ母集団から導出されたものであることを確かめる。これに用いることができる測定基準の１つは、ソフトウェアタスクの相対的な「制御主体性」であり、各タスク内の仮想命令「ＩＦ」と総サイクル数との比を弁別器として用いることができる。
１２）予測されていないタスクの新たなセットが元のベンチマークのセットと同じ母集団から導出されたものであるという合理的な統計的可能性の有無を判定するために、予測式を導き出すために使用したベンチマークのセットと同じ領域から明示的に導出された新たなソフトウェアタスクに対して、制御主体の弁別器を用いる。これは、２標本ｔ検定によって行われる。
【００７８】
本発明は、当業者に明らかなように、ここに示した本発明の説明に基づいてプログラミングされた、従来の汎用又は専用のデジタルコンピュータ又はマイクロプロセッサを用いて良好に実現することができる。
【００７９】
また、ソフトウェア分野の知識を有する者には明らかであるが、ここに示した本発明の説明に基づいて、プログラマは適切なソフトウェアコーディングを容易に準備することができる。更に、当業者に明らかなように、本発明は、特定用途向け集積回路、又は従来の電気部品を適切に配線した回路によっても実現することができる。
【００８０】
本発明は、コンピュータを制御して本発明の処理を行わせるのに使用される命令を記録した記録媒体（媒体）であるコンピュータプログラム製品を含む。記録媒体は、任意の種類のフロッピィディスク、ミニディスク（ＭＤ）、光ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、マイクロドライブ、光磁気ディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＤＲＡＭ、ＶＲＡＭ、フラッシュメモリ（フラッシュカードを含む）、磁気又は光カード、ナノシステム（分子メモリＩＣを含む）、ＲＡＩＤデバイス、遠隔データ記憶装置／アーカイブ／ウェアハウス、あるいは命令及び／又はデータを記憶する任意の種類の適当な媒体又は装置を含む。なお、記録媒体は、これらに限定されるのではない。
【００８１】
本発明は、コンピュータにより読み取り可能な、任意の媒体に記憶され、汎用／専用コンピュータのハードウェア又はマイクロプロセッサを制御し、コンピュータ又はマイクロプロセッサを人であるユーザとインタラクトさせ、あるいは他のメカニズムにより本発明の成果を利用する、ソフトウェアを含む。この種のソフトウェアは、デバイスドライバ、オペレーティングシステム、及びユーザアプリケーションを含む。なお、ソフトウェアは、これらに限定されるのではない。更に、この種のコンピュータにより読み取り可能な媒体は上述したように、本発明を実施するソフトウェアを含む。
【００８２】
汎用／専用コンピュータ又はマイクロプロセッサ上で動作するプログラム（ソフトウェア）は、上述した本発明の処理を実現するソフトウェアモジュールであり、以下に限定されるものではないが、本発明に基づいて、処理装置のモデルを準備し、ベンチマークプログラムを選択し、仮想命令を判定し、実際の実行時間を測定し、推定されるソフトウェアとベンチマークプログラムの相関を調べ、相関が高い命令を除外し、線形回帰分析を実行し、予測式を導き出し、予測式をベンチマークの第２のセットに適用して質を測定し、本発明に基づく処理を表示し、格納し、結果を通信するためのソフトウェアモジュールを含む。
【００８３】
上述の説明に基づいて、本発明の様々な変更例及び変形例を想到できることは明らかである。したがって、添付の特許請求の範囲から逸脱することなく、上述した特定の具体例を様々に変更して本発明を実現できることは明らかである。
【図面の簡単な説明】
【００８４】
【図１】物理的プロトタイプによって分割された後のハードウェアとソフトウェアを協調検証するためのアーキテクチャの具体例を示すブロック図である。
【図２】本発明に基づく処理の全体を示すフローチャートである。
【図３】本発明に基づく、ターゲットプロセッサのモデルを準備する処理を示すフローチャートである。
【図４】本発明の具体例における線形回帰分析のフローチャートである。
【図１】
2004530193.tif 000005
【図２】
2004530193.tif 000006
【図３】
2004530193.tif 000007
【図４】
2004530193.tif 000008
【国際公開パンフレット】
2004530193.tif 000009
2004530193.tif 000010
2004530193.tif 000011
2004530193.tif 000012
2004530193.tif 000013
2004530193.tif 000014
2004530193.tif 000015
2004530193.tif 000016
2004530193.tif 000017
2004530193.tif 000018
2004530193.tif 000019
2004530193.tif 000020
2004530193.tif 000021
2004530193.tif 000022
2004530193.tif 000023
2004530193.tif 000024
2004530193.tif 000025
2004530193.tif 000026
2004530193.tif 000027
2004530193.tif 000028
2004530193.tif 000029
2004530193.tif 000030
2004530193.tif 000031
2004530193.tif 000032
2004530193.tif 000033
2004530193.tif 000034
2004530193.tif 000035
2004530193.tif 000036
2004530193.tif 000037
2004530193.tif 000038
【国際調査報告】
2004530193.tif 000039
2004530193.tif 000040