JP2009076073A - 組込形ソフトウェアの実行時間の統計的評価のための方法及び装置 - Google Patents
組込形ソフトウェアの実行時間の統計的評価のための方法及び装置 Download PDFInfo
- Publication number
- JP2009076073A JP2009076073A JP2008239668A JP2008239668A JP2009076073A JP 2009076073 A JP2009076073 A JP 2009076073A JP 2008239668 A JP2008239668 A JP 2008239668A JP 2008239668 A JP2008239668 A JP 2008239668A JP 2009076073 A JP2009076073 A JP 2009076073A
- Authority
- JP
- Japan
- Prior art keywords
- software
- execution time
- instructions
- benchmark
- virtual
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3447—Performance evaluation by modeling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3457—Performance evaluation by simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3428—Benchmarking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/815—Virtual
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
Abstract
【課題】ソフトウェアの実行時間を推定する推定装置を提供する。
【解決手段】ソフトウェアの実行時間を統計的に推定する推定方法は、ベンチマークプログラムのセットに基づいて、ターゲットプロセッサのモデルを準備するステップと、推定されるソフトウェアとベンチマークプログラムとを相関させるステップと、相関されたソフトウェアをモデルに適用し、ソフトウェアの実行時間の推定値を判定するステップとを有する。このモデルは、ベンチマークプログラムの実際の実行時間を判定し、ベンチマークプログラム内の仮想命令の数を判定し、仮想命令と実際の実行時間とを相関させる予測式を決定することにより開発される。予測式は、仮想命令の相関分析を行い、高度に相関する命令を除外し、逐次線形重回帰分析と線形重回帰分析とを組み合わせて実行することによって決定される。
【選択図】図2
【解決手段】ソフトウェアの実行時間を統計的に推定する推定方法は、ベンチマークプログラムのセットに基づいて、ターゲットプロセッサのモデルを準備するステップと、推定されるソフトウェアとベンチマークプログラムとを相関させるステップと、相関されたソフトウェアをモデルに適用し、ソフトウェアの実行時間の推定値を判定するステップとを有する。このモデルは、ベンチマークプログラムの実際の実行時間を判定し、ベンチマークプログラム内の仮想命令の数を判定し、仮想命令と実際の実行時間とを相関させる予測式を決定することにより開発される。予測式は、仮想命令の相関分析を行い、高度に相関する命令を除外し、逐次線形重回帰分析と線形重回帰分析とを組み合わせて実行することによって決定される。
【選択図】図2
Description
この特許出願書類の開示の一部には、著作権の保護対象となる資料が含まれている。著作権者は、何人も特許商標局の特許ファイル又は記録に示された形で特許出願書類又は特許開示をファクシミリ複写することについては異議はないが、その他の点については全著作権を保有する。
本発明は、概してソフトウェアの設計に関し、特に、ソフトウェアの実行時間の推定に関する。詳しくは、本発明は、マイクロプロセッサベースの(組込形)ソフトウェアの実行時間の推定に関する。
組込みシステム(embedded system)の設計者は、ソフトウェアと電子回路(electronics)の設計にかかるターンアランドタイム(design turnaround time)を短縮するように要求されるとともに、多くの場合、設計仕様が度々変更されることにも対応するよう求められる。設計検証(validation)における主要な課題の1つは、様々なハードウェアとソフトウェアに分割(HW/SW partition)された設計の評価(evaluation)である。
今日の評価は、多くの場合、協調検証レベル(co-verification level)で実行され、検証するシステムの仮想のプロトタイプが造られる。例えば、図1は、物理的プロトタイプによって分割された後のハードウェアとソフトウェアを協調検証するためのアーキテクチャの具体例を示している。このアーキテクチャは、ハードウェアのシミュレーションとソフトウェア開発支援ツールをサポートしている。
今日の評価法では、組込形ソフトウェアはコンパイルされ、命令セットシミュレータ(Instruction Set Simulator:以下、ISSという)上で実行され、ハードウェア部分は、実際のVHDLを動作させ、又はロジックシミュレータ上でVerilogを実行することによってシミュレートされ、2つの部分(partition)間の通信は、バストランザクションレベルでシミュレートされる。この手法は、シミュレーション結果の精度が高いという明らかな利点を有する。しかしながら、この手法は、シミュレーション速度に問題があり、完全なシステムのシミュレーションには、設計空間を効率的に調べるために余りにも時間がかかりすぎるという問題がある。したがって、ターンアランドタイムを短縮するためには、抽象化のレベルを高める必要がある。
このような目的を達成するためには、アーキテクチャから動き(behavior)を切り離すことが重要なパラダイム(key paradigm)である。この方法においては、動作とアーキテクチャを共に発展させる(co-evolve)ことができる。すなわち、アーキテクチャの要求(例えばコスト)によって動作が変更され、動作における新たな制約により、アーキテクチャの変更が必要となることがある。優れたシステム設計の実践では、仕様を抽象的に(abstract specification)維持したまま、動作をアーキテクチャ上に個々にマッピングすることができる。この点が機能/アーキテクチャ協調設計(function/architecture co-design)と呼ばれ、仮想コンポーネント協調設計法(virtual component codesign methodology:以下、VCCという)の基本となる本質である。
VCCは、仮想コンポーネント協調設計のためにケイデンスデザインシステムズ社によって開発された設計ツールである。VCC環境は、知的財産と仮想コンポーネントベースの設計フローとの両方をサポートしており、ここで、アーキテクチャ的知的財産(IP)は、それらの性能モデル(performance model)によって表されるとともに、タイミング情報(timing information)による設計の動作記述をバックアノテート(back-annotate)するために用いられる。ハードウェアとソフトウェア間のトレードオフを正確に調べるために、ソフトウェアの実行にマッピングされる動作の実行時間の正確な推定量を規定することが重要である。
VCCソフトウェア評価のフレームワークは、ターゲットシステム(CPU命令セット、ターゲットコンパイラ等)とソフトウェアプログラムの構造との両方を抽象的レベルでモデル化し、これにより精度を大きく犠牲にすることなく、評価にかかる時間を適正な長さにする。しかしながら、上述のように、設計者は、更に設計時間の短縮を迫られており、また、精度を高めることは、ターンアランドタイムと製品品質にとって有益である。
本発明者は、現在のソフトウェア推定技術の結果を統計的手法によって向上させることができることを見出した。これは、2つの段階によって達成される。第1の段階では、既存のビルディングブロック(building blocks)を、次のような独特の方法に組み込むことによって、ターゲットプロセッサのモデルを仮想プロセッサ命令セットの観点から導出する。
1.フロントエンドのコンパイラ最適化プログラム(front-end compiler optimizer)を用い、推定するコード内の不要コード、恒常的なループ割当て(constant-loop assignment)等の不正確なソースコードを除去する。
2.領域(無線、マルチメディア、自動車)固有のベンチマークプログラムを選択する。
3.VCC仮想コンパイラ及び推定値を用いて、ベンチマークプログラムのために実行された仮想命令の数を決定する。
4.ターゲット環境用の命令セットシミュレータ(Instruction Set Simulator:以下、ISSという)を用いて、ベンチマークプログラムの実際の実行時間を測定する。
5.線形重回帰(Multiple linear regression)を実行し、推定誤差における信頼度の程度とともに推定された時間に対する予測式(predictor equation)、推定の誤差、推定されるソフトウェアの推定誤差対制御/演算の比(error of the estimation vs the control/computation ratio)、及び次のステップで用いられる仮想プロセッサモデルを構成する各仮想機械語命令(Virtual Machine instruction)のサイクル数(number of cycles)を決定する。
1.フロントエンドのコンパイラ最適化プログラム(front-end compiler optimizer)を用い、推定するコード内の不要コード、恒常的なループ割当て(constant-loop assignment)等の不正確なソースコードを除去する。
2.領域(無線、マルチメディア、自動車)固有のベンチマークプログラムを選択する。
3.VCC仮想コンパイラ及び推定値を用いて、ベンチマークプログラムのために実行された仮想命令の数を決定する。
4.ターゲット環境用の命令セットシミュレータ(Instruction Set Simulator:以下、ISSという)を用いて、ベンチマークプログラムの実際の実行時間を測定する。
5.線形重回帰(Multiple linear regression)を実行し、推定誤差における信頼度の程度とともに推定された時間に対する予測式(predictor equation)、推定の誤差、推定されるソフトウェアの推定誤差対制御/演算の比(error of the estimation vs the control/computation ratio)、及び次のステップで用いられる仮想プロセッサモデルを構成する各仮想機械語命令(Virtual Machine instruction)のサイクル数(number of cycles)を決定する。
第2の段階において、プロセッサモデルを導き出すために用いられた既存のベンチマークのセットに対する、推定される実際のアプリケーションコードの類似性を、2標本t検定(2-sample t-test)によって決定する。類似性が認められた場合、アプリケーションコードを、全く同じフロントエンドの最適化プログラムによって最適化し、VCCコンパイルコードジェネレータ/アノテータ(VCC compile-code generator/annotator)によって、実行時間注釈付きのシミュレーションモデルを生成する。
本発明は、ソフトウェアの実行時間を推定する推定装置であって、少なくとも1つのベンチマークプログラムのセットの実行時間に基づく、ターゲットプロセッサのモデルと、推定されるソフトウェアと、少なくとも1つのベンチマークプログラムのセットとを相関させる相関手段と、相関されたソフトウェアをモデルに適用し、ソフトウェアの推定された実行時間を判定する判定手段とを備える推定装置として実現される。更に、本発明は、ソフトウェアの実行時間を推定する推定装置であって、ターゲットプロセッサをモデリングするモデリング手段と、推定されるソフトウェアと、モデリング手段がターゲットプロセッサをモデリングするために用いたベンチマークプログラムとを相関させる相関手段と、相関されたソフトウェアをモデリング手段に適用し、ソフトウェアの推定された実行時間を判定する評価手段とを備える推定装置を提供する。
また、本発明は、ソフトウェアの実行時間を推定する推定方法であって、ベンチマークプログラムのセットに基づいて、ターゲットプロセッサのモデルを準備するステップと、推定されるソフトウェアとベンチマークプログラムとを相関させるステップと、相関されたソフトウェアをモデルに適用し、ソフトウェアの実行時間の推定値を判定するステップとを有する推定方法を提供する。
これらの装置及び方法の少なくとも一部は、汎用コンピュータ又はネットワーク化されたコンピュータによって好適に実現でき、評価の結果は、汎用コンピュータ又はネットワーク化されたコンピュータに接続された出力装置に表示してもよく、遠隔の出力装置又は表示装置に転送してもよい。更に、本発明の少なくとも一部は、実行可能な、解釈可能な、又はコンパイル可能な命令のセットとして実現してもよく、これらをコンピュータにより読取可能な媒体に格納してもよく、任意の媒体(例えば、ネットワークパケット、無線伝送等)によって搬送される電気信号として表してもよい。
本発明の詳細な解析を続ける前に、本願発明者が検討し、本発明が開発される背景となった環境を構築する現在の手法について説明する。現在、ソフトウェア(SW)の性能評価は、その実際の用途を制限する危険性(caveat)と欠点drawback)を有している。当分野において開発された技術は、以下のような特徴により記述することができる。
・抽象化のレベル: ソースコードベースのレベル、オブジェクトコードベースのレベル、ISSベースのレベル等
・性能評価を行うことになるSWの種類上の制約: 制御主体のSW対計算主体のSW、ポインタ対静的データ構造等
・解析の種類: 静的(シミュレーションを必要としない)対動的
・実際の方法: 推定対モデリング、統計的等
・モデラのコスト: 高、中、低
・シミュレーション速度: 遅い、速い、比較的速い、比較的遅い
・解析の精密度
・結果の精度
ソフトウェアの性能評価は、一般的に、ソースベースの手法(source based approache)とオブジェクトベースの手法(object based approache)といった2つの異なる手法に分類される。ソースベースの手法は、仮想命令セット上でコンパイラを用い、ターゲットプロセッサ用のコンパイラを必要とすることなく、素早く評価を得ることができる。オブジェクトベースの手法は、ターゲットのコンパイラによって生成されるアセンブラを、アセンブルレベルの機能的に等価なC言語に翻訳する。いずれの場合も、コードには、タイミング及び実行に関する他の情報(例えば、推定されるメモリアクセス)の注釈が付けられ(annotated)、正確且つ高速なソフトウェアシミュレーションモデルとして用いられる。
・抽象化のレベル: ソースコードベースのレベル、オブジェクトコードベースのレベル、ISSベースのレベル等
・性能評価を行うことになるSWの種類上の制約: 制御主体のSW対計算主体のSW、ポインタ対静的データ構造等
・解析の種類: 静的(シミュレーションを必要としない)対動的
・実際の方法: 推定対モデリング、統計的等
・モデラのコスト: 高、中、低
・シミュレーション速度: 遅い、速い、比較的速い、比較的遅い
・解析の精密度
・結果の精度
ソフトウェアの性能評価は、一般的に、ソースベースの手法(source based approache)とオブジェクトベースの手法(object based approache)といった2つの異なる手法に分類される。ソースベースの手法は、仮想命令セット上でコンパイラを用い、ターゲットプロセッサ用のコンパイラを必要とすることなく、素早く評価を得ることができる。オブジェクトベースの手法は、ターゲットのコンパイラによって生成されるアセンブラを、アセンブルレベルの機能的に等価なC言語に翻訳する。いずれの場合も、コードには、タイミング及び実行に関する他の情報(例えば、推定されるメモリアクセス)の注釈が付けられ(annotated)、正確且つ高速なソフトウェアシミュレーションモデルとして用いられる。
構造が制限されているソフトウェアの幾つかの結果は、オブジェクトコードレベル(抽象化が比較的低いレベル)で得られ、動的データ構造、再帰的プロシージャ(recursive procedures)、無限のループ(unbounded looping)等の構造を用いたプログラムは、静的に評価することが困難である。あるソフトウェア合成システム(software synthesis system)では、プログラムを構成する全ての原始関数(primitive)は、確定した命令のシーケンスとして定義される。これらの命令の実行時間及びコードサイズは予め算出されており、したがって、これらを用いて性能の予測を正確に出すことができる。
任意のコードの静的な解析には、更なる問題がある。あるシステムでは、1組の一次方程式を用いて、実行可能なプログラムパスを暗黙的に(implicitly)記述する。この手法は、プログラムのシミュレーションを必要とせず、したがって、伝統的なワーストケース実行時間情報を規定することができる。しかしながら、この解析は、単一のプログラムをターゲットとするものであり、その実際の使用を制限するものである。一方、組込みシステムは、共有のリソースにアクセスする複数のタスクから構成され、それらの動的な起動は、互いの実行パス又はタイミング動作を(例えば、キャッシュの状態を変えることにより)大きく変更することがある。
ソフトウェアの性能評価は、リアルタイム組込みシステムの合成及び検証のための新たな手法が開発されるにつれて、より重要となってきている。このような状況において、複数の手法が提案されている。例えば、予測法(prediction method)では、実行時間は、実行される命令の数とターゲットシステムのMIPSレート(MIPS rating)との積(product)に比例する。幾つかの場合、ターゲットCPUの性能をモデル化する統計的手法(statistical method)が提案されており、これにより、幾つかのCPUをそのCPU上で実行されるコードに関して評価することができる。あるモデルでは、プログラム内の各命令に必要とされる実行サイクル数と、メモリの読出/書込回数と、メモリアクセス毎のサイクル数とによってソフトウェア性能を評価する。他のシステムでは、所定のソフトウェアプログラムを合成されたRTレベルのターゲットシステム上で走らせて、シミュレーション結果からSWタイミング特性を抽出する。
図1に示すアーキテクチャのようなシステムにおいては、フィルタリングされた情報は、サイクルが正確なISS(cycle-accurate ISS)とハードウェアシミュレータとの間で渡される(例えば、ハードウェアシミュレータにおける命令とデータフェッチに関する動作(data fetch-related activity)とを抑制する(suppressing)ことにより)。この手法は、正確であるが、時間がかかり、ハードウェア及びソフトウェアの詳細なモデルを必要とする。性能解析は、設計が完了した後でしか行うことができず、その時には、選択したアーキテクチャを変更することは難しい。別のシステムでは、コンパイルされたソフトウェア記述の制御フローグラフ(control flow graph:CFG)に、サイクルが正確な性能モデル(例えば、パイプライン及びキャッシュを考慮したモデル)を導出するために有用な情報を注釈として付ける。解析は、各基本ブロックに対して生成されたコード上で実行され、実際のコンパイル処理によって実行される最適化に関する情報が組み込まれる。この解析は、レジスタの割当て、命令の選択及びスケジューリング等とみなされる。オブジェクトコードベースの手法も、この方式を用いる。
入力を限定する代わりに、幾つかのサンプルデータに対するプログラムの実行をトレースすることにより、解析結果を得ることができる。この手法は、プロファイリングと呼ばれ、既存のソフトウェアシステムに頻繁に適用されている。統計的に算出された負荷を用い、レジスタ転送(Register-Transfer:RT)レベルでのトレースによる方式も提案されている。変更されていない形式では、これらの方式は、設計されているシステムに類似したシステムの非常に詳細なモデル又はインスタンスを必要とする。ここで、推定値は、このような詳細な情報が得られる前に、使用可能であることになっている。この要求を回避するために、トレースによる手法を用いることができる。時間軸を独立変数(Independent variable)として扱い、プログラムの実行をサンプリングする純粋なプロファイリング法に代えて、機能モデル(functional model)の実行を独立変数とし、実行の遅延を、機能モデルのシミュレーション(simulated future)の前に、予測する。性能解析は、システムのレベルにおいて行うことができ、そこでは、統計的に関連するベンチマークのセットが適用される。この手法が余りにもコスト(expensive)がかかりすぎる場合、個々のパスにおける遅延を決定するために必要な詳細及びコストを抑えて、制御フローパスのセットのレベルで解析を行う手法も提案されている。
計算主体のコード領域(computational-dominated code domain)においては、DSP上で実行されるSWの実行時間を推定する手法が提案されている。この技術は、例えばプロファイリングによって、実行時間の特性が予め示されているカーネル機能のセットを定義することに基づいている。そして、評価されるアルゴリズムは、DSPアプリケーション(同期データフロー)用のカーネルの静的合成から作られる。また、POLISソフトウェア評価法、すなわち、コンパイラによる最適化を推定するタイミング推定値の注釈を元のCコードに付す方法を用いてもよい。このソースベースの手法は、性能モデルが比較的単純(各高級言語の文(statement)に対して選択されたプロセッサ上で推定される実行時間)であるので、選択されたプロセッサに対する完全な設計環境を要求しないという利点を有する。この手法は、制御主体のコードをターゲットとするものであり、コンパイラ及び複雑なアーキテクチャの機能(例えばデータ依存性のためのパイプラインのストール)を考慮することができない。
本発明に係る方法
本発明に係る方法は、ソースベースの手法に分類することができ、SW(あらゆる任意のCコード)上の制約がなく、モデラのコストが比較的安く、シミュレーション速度が比較的速く、動的(シミュレーションが必要)であり、及び静的解析をベースとした手法である。本発明は、上述した手法の幾つかにおいて失われていた推定値の信頼性をある程度向上させるものである。また、本発明は、予測式(predictor equation)によって、性能モデルを見つけてカーネル機能に割り当てる半自動的な方法を提供し、すなわち、実効可能なプログラムパスを記述した線形方程式のセットを用いた方法を向上させる。また、新たなベンチマークプログラムの既存のセットに対する類似性を推測することができ、SWの推定誤差対制御/計算の比が推定される。
本発明に係る方法は、ソースベースの手法に分類することができ、SW(あらゆる任意のCコード)上の制約がなく、モデラのコストが比較的安く、シミュレーション速度が比較的速く、動的(シミュレーションが必要)であり、及び静的解析をベースとした手法である。本発明は、上述した手法の幾つかにおいて失われていた推定値の信頼性をある程度向上させるものである。また、本発明は、予測式(predictor equation)によって、性能モデルを見つけてカーネル機能に割り当てる半自動的な方法を提供し、すなわち、実効可能なプログラムパスを記述した線形方程式のセットを用いた方法を向上させる。また、新たなベンチマークプログラムの既存のセットに対する類似性を推測することができ、SWの推定誤差対制御/計算の比が推定される。
本発明は、オブジェクトベース又はISSベースの手法における精度を必ずしも向上させるものではない。しかしながら、本発明は、ある程度の統計的信頼性を有する推定値において誤差を規定し、したがって、設計者は、推定値を用いてトレードオフの判断を行うことができるか、又はオブジェクトベース又はISSベースのより高価な手法を用いるべきかを判断することができる。
信頼性が高い実行時間の推定
ソースベースの動的SW評価法は、ターゲットプロセッサ上で動作するSWタスクによって実行される実際の機械語命令を仮想命令のセットに抽象化するという思想に基づいている。仮想命令は、マイクロプロセッサ命令の汎用ファミリ(例えばIF文、GOTO文、メモリからのロード(LD)、メモリにストア(STO)、OPi(整数に対する32ビットのオペレータ)、MULi(整数の積)等)に分類される。マイクロプロセッサ命令の汎用ファミリに分類される命令の幾つかは、機械語命令に直接マッピングされ、多くの場合、特定の汎用ファミリメンバをマッピングすることができる実際の機械語命令は複数あるが(例えば、異なる種類のIF文は、異なる機械語命令にマッピングされる)、命令のファミリ全体は、単一の種類の仮想命令によって表現される(すなわち、IF文の異なる変形は全て、単一のIF仮想命令によって表現され、GOTO文の異なる変形は全て、単一のGOTO仮想命令によって表現される等)。SWタスク内の各基本ブロックは、基本ブロックの実行を担当する仮想命令の総数にコンパイルされる。すなわち、SWタスクは、ホストワークステーション上では最適化されて実行されるが、シミュレーションにおいては、実際のターゲットプロセッサ上で実行される仮想命令の数が累算される。
ソースベースの動的SW評価法は、ターゲットプロセッサ上で動作するSWタスクによって実行される実際の機械語命令を仮想命令のセットに抽象化するという思想に基づいている。仮想命令は、マイクロプロセッサ命令の汎用ファミリ(例えばIF文、GOTO文、メモリからのロード(LD)、メモリにストア(STO)、OPi(整数に対する32ビットのオペレータ)、MULi(整数の積)等)に分類される。マイクロプロセッサ命令の汎用ファミリに分類される命令の幾つかは、機械語命令に直接マッピングされ、多くの場合、特定の汎用ファミリメンバをマッピングすることができる実際の機械語命令は複数あるが(例えば、異なる種類のIF文は、異なる機械語命令にマッピングされる)、命令のファミリ全体は、単一の種類の仮想命令によって表現される(すなわち、IF文の異なる変形は全て、単一のIF仮想命令によって表現され、GOTO文の異なる変形は全て、単一のGOTO仮想命令によって表現される等)。SWタスク内の各基本ブロックは、基本ブロックの実行を担当する仮想命令の総数にコンパイルされる。すなわち、SWタスクは、ホストワークステーション上では最適化されて実行されるが、シミュレーションにおいては、実際のターゲットプロセッサ上で実行される仮想命令の数が累算される。
この抽象化のレベルにおけるCPUとコンパイラの組合せのモデリングは、非常に困難なタスクであるということが判明した。実際に、異なるコンパイラは、生成され、したがって実行されるアセンブラ命令に関し、全く同じコードに対して異なる結果を生成することがある。また、同じコンパイラは、最適化フラグによって、異なるコードを生成することができる。したがって、いかなるソースベースの手法もプッシュボタン的な解決法(push button solution)ではないと考えられる。本発明の主要な思想は、VCCコンパイラ/推定量が、CPU/コンパイラの対をどれ程正しくモデリングしているかに基づいて、仮想機械語命令の正しい解釈(interpretation)を提供することである。ここで、以下のような2つの異なる解釈が利用できる。
1)厳密な解釈(rigid): VCCコンパイラは、ターゲット環境を適切にモデリングする。したがって、各仮想命令は、対応するアセンブラ命令のクラスを正確に表現する。そして、データブック(data book)に規定されているサイクルを実際のサイクルの良好な近似値とみなし、これらのサイクルを仮想命令に割り当てることを意味している。
2)緩和された解釈(relaxed): VCCコンパイラは、ターゲット環境を良好にはモデリングしておらず、したがって、仮想命令は、予測式内の係数(factor)である。
1)厳密な解釈(rigid): VCCコンパイラは、ターゲット環境を適切にモデリングする。したがって、各仮想命令は、対応するアセンブラ命令のクラスを正確に表現する。そして、データブック(data book)に規定されているサイクルを実際のサイクルの良好な近似値とみなし、これらのサイクルを仮想命令に割り当てることを意味している。
2)緩和された解釈(relaxed): VCCコンパイラは、ターゲット環境を良好にはモデリングしておらず、したがって、仮想命令は、予測式内の係数(factor)である。
緩和された解釈は、予測においてある程度の信頼度を有する統計的手法を導く。厳密な解釈と緩和された解釈との間のいかなる中間的解釈も状況に応じて評価されなければならない。
現在、VCCにおいて、仮想命令は、LD(メモリからのロード)、LI(即座にロード)、ST(ストア)、OP(i,c,s,l,f,d)(整数(integer)、文字(char)、ショート(short)、ロング(long)、浮動小数点(float)、倍精度(double)用の基本的なALUオペレータ)等を含むRISC命令セットの簡略化された見方(simplified view)である。
ターゲットプロセッサ上の各仮想命令は、多くの方法により、仮想命令によって賄われる実際のターゲットプロセッサのサイクル数として特徴付けられる。これにより、以下のような予測式が導き出される。
ここで、Niはタイプiの仮想命令の数に等しく、Piは仮想命令をサイクル数(cycle count)に変換したパラメータに等しい。Niは、VCCにおけるSWタスクをコンパイルし、及びホストベースの実行(host-based execution)における仮想命令の各出現回数を累積したタスクの注釈が付いたバージョンを生成することによって算出される。
Piは、次のように幾つかの方法によって決定することができる。
1)ターゲットプロセッサのデータシートから決定する(厳密な解釈)
2)較正スイート(calibration suite)に対して最良適合最小二乗法(best fit least squares approach)を用いる。
3)類似領域から抽出されたタスクのセットにおいて逐次線形重回帰法(stepwise multiple linear regression approach)を用いる(緩和された解釈)。なお、この手法は、上述の方法から導出された解から開始し、結果を調整するために用いることもできる。
1)ターゲットプロセッサのデータシートから決定する(厳密な解釈)
2)較正スイート(calibration suite)に対して最良適合最小二乗法(best fit least squares approach)を用いる。
3)類似領域から抽出されたタスクのセットにおいて逐次線形重回帰法(stepwise multiple linear regression approach)を用いる(緩和された解釈)。なお、この手法は、上述の方法から導出された解から開始し、結果を調整するために用いることもできる。
後者の場合、仮想命令はターゲットプロセッサのアセンブラ命令に対する意味的な対応関係を有していないため、線形方程式のセットにおける制約を緩和する必要がある。表1は、仮想命令の異なる解釈に関するトレードオフを示している。更に、表1は、ISSベースの技術と共に、オブジェクトベースに関する技術の位置付けを示している。
以下、例示的にプロセッサAを用いて、これらの技術を説明するとともに、これらの技術の長所及び短所について検討する。これらの検討で用いたサンプルセットは、35個の制御指向(判断主体)のSWタスクからなり、1タスクは、約200サイクルで実行される。これらは自動車の制御分野から抽出したものである。
具体的な基準算定
ソフトウェア評価のための基準は、様々な方法で決定することができる。成功の度合いを変えることによって適用される2つの顕著な具体例として、データシート法と較正法がある。
ソフトウェア評価のための基準は、様々な方法で決定することができる。成功の度合いを変えることによって適用される2つの顕著な具体例として、データシート法と較正法がある。
データシート法は、プロセッサAの公表されているデータシートを検討することによって、実際の機械語命令セットと仮想命令セット間の類似性からパラメータPiを導き出す。データシート法は、以下のような2つの主な問題を有する。
1)命令毎に報告されるサイクルは、幾つかの解釈、すなわちパイプライン(pipelining)等のインパクトがある影響を解釈する必要がある。
2)プロセッサの状態によってサイクル数が変わる命令に対しては、ワーストケース、ベストケース又は幾つか標準的なケース(nominal case)を用いたかを判断しなければならない。
1)命令毎に報告されるサイクルは、幾つかの解釈、すなわちパイプライン(pipelining)等のインパクトがある影響を解釈する必要がある。
2)プロセッサの状態によってサイクル数が変わる命令に対しては、ワーストケース、ベストケース又は幾つか標準的なケース(nominal case)を用いたかを判断しなければならない。
例えば、プロセッサAにおいて、LD及びSTの命令(メモリに対するロード及びストア)は、公称3サイクルを必要とする。しかしながら、プロセッサAは、3段パイプラインを有し、コンパイラの性能及びタスクに依存するが、プロセッサAは、メモリを待っている間に他の命令を実行し、その機能を停止させないようにすることができる。実際、優秀なコンパイラでは、多くの場合、LD及びSTの実際のサイクル数(cycle count)は1又は1に非常に近い値に短縮される。元のサイクル数である3を用いると、推定値は悲観的になる。
SUB及びRET(サブルーチン呼出及びリターン)についても、同様の問題が生じる。プロセッサAは、サブルーチン呼出時に実際に使用している一部のレジスタ、すなわち0個〜15個の範囲で変化するレジスタのみをメモリに格納する。同様に、リターン時には、メモリから必要な数のレジスタのみが復元される。SUB及びRETのワーストケースを用いて、15個のユーザレジスタ全てを格納しなければならないと仮定すると、SUB及びRETのためのパラメータは19〜21サイクルとなり、これは、多くの場合、非常に悲観的又は保守的である。一方、一般的に用いられるレジスタの実際の数は、タスク毎に動的に変化し、したがって、ある種の統計的な検討を行わなければ、標準的な又は典型的な値を出すことはできない。
本発明者は、35個のベンチマークのセットに対するサイクル数のデータシート解析から導き出した2個のパラメータファイル(以下、基準ファイル(basis file)という。)を使用した。第1のファイルでは、全ての仮想命令を最も保守的な基準に基づいて推定し、第2のファイルでは、ロード及びストアを3サイクルから1サイクルに短縮した。第1の推定量を用いた場合、誤差率(予測値を実際のサイクル数と比較して)は、−8.5%〜44%の範囲となり、ここで、正の誤差は悲観的な推定量を示す。多くの場合、推定量は保守的となり、誤差範囲は50%以上に広がった。ロード及びストアのより現実的なサイクル数を有する第2の基準ファイルを用いた場合、誤差範囲は−28%〜18%となり、明らかに悲観性が減少し(事実上、若干楽観的になり)、全体の誤差範囲も46%に縮小された。
ここで、本発明は、予想される誤差範囲の縮小を含む技術の向上を目的としている。データシート法は、動的には不十分であり、特定のSWタスク領域に対して調整することができず、したがって、特定の種類のタスクに対して非常に良好な推定値を与えることを期待することができない。ロード/ストアのサイクル数を調整することができるが、サブルーチン呼出及びリターンのオーバヘッドを容易に調整することはできず、したがって、多くの階層的機能呼出構造を有する大きなタスクに対しては、多くの場合、この手法は非常に保守的であることになる。実際、このことは、本発明者によるVCCでの経験でも確認されている。
較正法は、プロセッサベースのファイルを導き出す異なる手法であり、それぞれ仮想命令の一部を強調しようとするプログラムの特別な較正スイートを生成し、そして、タスクのセットの実際のサイクル数の最小二乗を、各タスク内の仮想命令の出現度数に適合(fit)させる。この較正法は、各仮想命令のパラメータが較正スイートからの経験的なデータに基づいた基準ファイルを導き出すために用いられた。
この基準ファイルにおいて、例えばロード及びストアのパラメータは0.1サイクルであり、乗算のパラメータは2.6〜149.3サイクル(オペランドの種類に依存する)であり、IFのパラメータは1.6サイクル等であった。これを本発明者による35個のベンチマークに適用すると、誤差範囲は55〜15%(全ての推定値は楽観的であり、サイクル数を過小評価するもの)であり、全体の誤差範囲(total error range)は40%であった。
較正法には、次のような幾つかの問題がある。
1)較正テストスイートの選択: 本発明者による実験は、幾つかの標準的プログラム(例えば8クイーン、ソート、FFT及び特定の仮想命令を強調するするために生成された高度の合成プログラムのセット等のSPECタイププログラム)を用いて行われた。この種類のスイートと、任意の特定の組込みSW領域との間の特性に関する関係は、良くても限界(marginal)である。特に、この手法は、(多くの合成プログラムは、MUL及びDIVの偏差値(variation)を算出しようとするため)、良好な制御指向予測を犠牲にして、数値演算を過度に強調する。
2)過剰決定解析(Over-determined analysis): 25個の仮想命令と20〜30個のプログラムの較正スイートとを用いた過剰決定系(over-determined system)であり、最小二乗を適合(least squares fit)することによって、較正スイートの完全性又は準完全性(near-perfection)が達成されるが、他のプログラムに適応できる演繹的な根拠(a priori basis)は殆どない。
3)頑健性(robustness)の欠如の可能性: 較正スイート及び過剰決定解析は、異なる領域からのプログラムに対して、較正スイートベースのファイルが非常に不正確な結果を導き出す可能性がある。実際、このことは、本発明者による35個の制御プログラムにおいて確認され、較正スイートと過剰決定解析の両方は、全体的に非常に楽観的であり、それらの組合せ(aggregate)は、データブック法に比してより悪い結果を導き出した。
1)較正テストスイートの選択: 本発明者による実験は、幾つかの標準的プログラム(例えば8クイーン、ソート、FFT及び特定の仮想命令を強調するするために生成された高度の合成プログラムのセット等のSPECタイププログラム)を用いて行われた。この種類のスイートと、任意の特定の組込みSW領域との間の特性に関する関係は、良くても限界(marginal)である。特に、この手法は、(多くの合成プログラムは、MUL及びDIVの偏差値(variation)を算出しようとするため)、良好な制御指向予測を犠牲にして、数値演算を過度に強調する。
2)過剰決定解析(Over-determined analysis): 25個の仮想命令と20〜30個のプログラムの較正スイートとを用いた過剰決定系(over-determined system)であり、最小二乗を適合(least squares fit)することによって、較正スイートの完全性又は準完全性(near-perfection)が達成されるが、他のプログラムに適応できる演繹的な根拠(a priori basis)は殆どない。
3)頑健性(robustness)の欠如の可能性: 較正スイート及び過剰決定解析は、異なる領域からのプログラムに対して、較正スイートベースのファイルが非常に不正確な結果を導き出す可能性がある。実際、このことは、本発明者による35個の制御プログラムにおいて確認され、較正スイートと過剰決定解析の両方は、全体的に非常に楽観的であり、それらの組合せ(aggregate)は、データブック法に比してより悪い結果を導き出した。
4)仮想命令間の高い相関: これらの命令は、全て統計的に無相関であり、すなわちサイクル数のみを従属変数(Dependent variable)とする独立変数であると仮定する。しかしながら、実際のプログラムでは、1つの仮想命令の相対出現度数(relative frequency)は、多くの場合、他の仮想命令と非常に高い相関関係(correlation)を有する(例えば基本的なALUオペレータによるロード、又はIFによるロード)。これは、独立変数の数を最小に減らす、より単純でより頑健な推定量(robust estimator)が可能であることを意味している。
5)ユーザ解釈の困難性: ユーザは、較正法が意味があるパラメータを導出することを期待している。すなわち、全ての仮想命令パラメータは、1サイクル以上でなくてはならず(実行サイクル(a cycle to execute)より短い実際の命令タスクは存在しないため)、また、整数であることが好ましく、論理的にスケーリング(scaling)できなければならない。しかしながら、最良適合法(best fit approach)は、予測式内のパラメータを検索するのみである。この手法を採用すると、パラメータは、仮想命令のサイクル数に対して実際の関係を有さなくなる。パラメータは、曲線近似(curve fitting)から得られる乗数(Multiplicative Factor)に過ぎず、予測式内で用いられるだけである。これが、この種の手法に不慣れなユーザにとっては困難な点である。なお、較正法は、以下のような3つの前提に基づき、より確かな根拠を有する統計的手法への手掛かりを示す。
1)特定の分野から導出される実際のSWプログラムに基づく解析: 自動車、通信、制御指向、数学主体(mathematically-dominated)。
2)予測値(predictor)に用いられる仮想命令の数を、独立変数の最小数に低減し、したがって、より頑健で有意義な推定量(estimator)を得るように試みる。
3)様々な仮想命令とサイクル数間の正及び負の相関を明らかにすることにより、パラメータ又は因子がサイクル数の意味を有するという考えから脱却する。
5)ユーザ解釈の困難性: ユーザは、較正法が意味があるパラメータを導出することを期待している。すなわち、全ての仮想命令パラメータは、1サイクル以上でなくてはならず(実行サイクル(a cycle to execute)より短い実際の命令タスクは存在しないため)、また、整数であることが好ましく、論理的にスケーリング(scaling)できなければならない。しかしながら、最良適合法(best fit approach)は、予測式内のパラメータを検索するのみである。この手法を採用すると、パラメータは、仮想命令のサイクル数に対して実際の関係を有さなくなる。パラメータは、曲線近似(curve fitting)から得られる乗数(Multiplicative Factor)に過ぎず、予測式内で用いられるだけである。これが、この種の手法に不慣れなユーザにとっては困難な点である。なお、較正法は、以下のような3つの前提に基づき、より確かな根拠を有する統計的手法への手掛かりを示す。
1)特定の分野から導出される実際のSWプログラムに基づく解析: 自動車、通信、制御指向、数学主体(mathematically-dominated)。
2)予測値(predictor)に用いられる仮想命令の数を、独立変数の最小数に低減し、したがって、より頑健で有意義な推定量(estimator)を得るように試みる。
3)様々な仮想命令とサイクル数間の正及び負の相関を明らかにすることにより、パラメータ又は因子がサイクル数の意味を有するという考えから脱却する。
本発明に基づく統計的推定法
本発明では、全てのSWタスクに対して単一の予測値を生成するという従来の考え方を捨てる。これに代えて、本発明は、統計的技術を用いて、特定のSWタスク領域のための予測値を導出し、この予測値の他の領域への適応性を検討する。本発明で用いられる手法は、逐次線形重回帰法(stepwise multiple linear regression approach)であり、基本的な線形重回帰(basic multiple linear regression)とともに、相関分析(correlation analysis)を用いる。SWタスク領域は、上述した35個の制御指向自動車ベンチマークのセットである。
本発明では、全てのSWタスクに対して単一の予測値を生成するという従来の考え方を捨てる。これに代えて、本発明は、統計的技術を用いて、特定のSWタスク領域のための予測値を導出し、この予測値の他の領域への適応性を検討する。本発明で用いられる手法は、逐次線形重回帰法(stepwise multiple linear regression approach)であり、基本的な線形重回帰(basic multiple linear regression)とともに、相関分析(correlation analysis)を用いる。SWタスク領域は、上述した35個の制御指向自動車ベンチマークのセットである。
本発明者は、制御セットとして、プログラミング言語エステレル(Esterel)によって書かれた6個の制御ソフトウェアタスクを用いた。そして、35個のタスクから導かれた推定値を制御セットに適用して、誤差を決定した。しかしながら、35個のタスクからは、6個の制御セットに対して良好な結果は得られなかった。次に、本発明者は、2セットのベンチマークに対して単純な2標本t検定を行い、制御サンプル(control sample)は、ベンチマークのサンプルと同じ母集団からは導き出されないとの結論の根拠(basis)を得た。
35個のサンプルセットにおけるVCC注釈(VCC annotator)によって実際に生成される仮想命令は、LD、LI、ST、OPi、MULi、DIM、IF、GOTO、SUB、RETの10個である。本発明者は、これらは全て独立変数であり、タスク(cycle)の総サイクル数を従属変数とする仮定から開始した。
実行時のタスクのインタラクションを集めるために、シミュレーション環境において評価を動的に行った。更に、最高の実行(best implementation)を求める際に、幾つかのアーキテクチャのマッピングを探索(exploration)できるように、十分に高速である必要があった。本発明者は、C言語が組込みシステムのプログラミングにおいて最も多く用いられている高級言語であるので、主にC言語で書かれたソフトウェアに集中した。なお、本発明は、他の言語にも同様に適用することができる。更に、本発明に基づく手法は、(何らかの制約はあるが)計算主体のコードのソフトウェアの推定にも用いることができる。
逐次線形重回帰法を適用することにより、幾つかの興味深い結果が得られた。
1)ベンチマークのセットのMULi及びDIMの数は一定であり、したがって除外するべきである(分散がないとみなされる独立変数は、サイクル数の従属変数に対しては無相関になる)。
2)1個のみの独立変数LDを、予測式に加えると、R2=0.363である以下のような予測式が得られる。
1)ベンチマークのセットのMULi及びDIMの数は一定であり、したがって除外するべきである(分散がないとみなされる独立変数は、サイクル数の従属変数に対しては無相関になる)。
2)1個のみの独立変数LDを、予測式に加えると、R2=0.363である以下のような予測式が得られる。
Cycles=145+4*LD (1)
R2測定値(measure)は、回帰における重要な値(key one)である。基本的に、この値は、従属変数(この具体例ではサイクル数)における全分散のどれ程が、回帰される独立変数の分散によって説明することができるかを示している。そして、サイクル数の分散の36%が、仮想命令LDの分散によって説明される。
R2測定値(measure)は、回帰における重要な値(key one)である。基本的に、この値は、従属変数(この具体例ではサイクル数)における全分散のどれ程が、回帰される独立変数の分散によって説明することができるかを示している。そして、サイクル数の分散の36%が、仮想命令LDの分散によって説明される。
更に、回帰は、多くの場合、切片(すなわち、定数項)を有する予測式を与える。これらは、幾つかの方法で解くことができ、そのうちの1つは、ソフトウェアタスクを実行及び停止するために必要なセットアップ(setup)の量である。なお、別の観点からは、切片は、回帰をより良好に適合させる単なる定数とみなすこともできる。回帰パラメータが相関以外の何かを評価すると仮定することは誤った結果を招く可能性がある。したがって、LDパラメータに対する4サイクルは、各LDが平均的にLD自体を含む4サイクルの様々な命令を必要とすると解釈することができる。あるいは、これは、本質的に意味がなく、サイクルを予測するために使用され、固有の意味を有さない統計的事象と解釈することもできる。
この予測式を35個のサンプルに逆に適用する(back-apply)と、誤差範囲は、−13〜17%となり、誤差の全範囲は30%となる。このように、誤差範囲は、データブック法又は較正法に比して、より集中するとともに、狭くなっている。この予測式の他のサンプルへの適応可能性については、後に説明する。
ここで、MULi及びDIVi以外の全ての変数を用いて、通常の線形重回帰分析を実行すると、更なる幾つかの結果が得られる。
1)RETは、サンプルにおいてSUBに直接関係している(したがって、この2つは100%相関している)ため、0として除外される(zeroed out)。
2)R2=0.4965である以下のような予測式が得られる
Cycles=354+1.5*LD+31.9*LI−30.4*ST
−7.1*Opi+13.6*IF−5.1*GOTO
−51.5*SUB (2)
この予測式は、サイクル数の49.65%の変動(variability)を説明している。予測式を逆に適用すると、10.3〜+19.4%の誤差範囲が得られる。なお、以下の点に留意する必要がある。
1)殆どのサンプルセットのサイクル数(200〜250)よりも多い切片(354)がある。
2)負の係数又はパラメータがある。
3)それらの多くは、(LIに対する31.9)、(SUBに対する51.5)よりも大きい。
4)このパッケージにおいて、多重共線性(multicollinearity)が深刻な問題となる(すなわち、仮定された独立変数であるLD、LI、ST、OPi、IF、GOTO、SUBのうちの幾つかは、実際に高い相関関係を有している)。これは、逐次回帰の結果から明らかである。
1)RETは、サンプルにおいてSUBに直接関係している(したがって、この2つは100%相関している)ため、0として除外される(zeroed out)。
2)R2=0.4965である以下のような予測式が得られる
Cycles=354+1.5*LD+31.9*LI−30.4*ST
−7.1*Opi+13.6*IF−5.1*GOTO
−51.5*SUB (2)
この予測式は、サイクル数の49.65%の変動(variability)を説明している。予測式を逆に適用すると、10.3〜+19.4%の誤差範囲が得られる。なお、以下の点に留意する必要がある。
1)殆どのサンプルセットのサイクル数(200〜250)よりも多い切片(354)がある。
2)負の係数又はパラメータがある。
3)それらの多くは、(LIに対する31.9)、(SUBに対する51.5)よりも大きい。
4)このパッケージにおいて、多重共線性(multicollinearity)が深刻な問題となる(すなわち、仮定された独立変数であるLD、LI、ST、OPi、IF、GOTO、SUBのうちの幾つかは、実際に高い相関関係を有している)。これは、逐次回帰の結果から明らかである。
換言すれば、この予測式は、命令毎のサイクルに関する有効な意味(operative meaning)を有するパラメータに何ら関係がない入力変数に、サイクル数を単に統計的に適合させるものである。
多重共線性問題を低減するために、本発明者は、独立変数に対する相関マトリクスを作成し、LD−OPiに対して0.92、OPi−IFに対して0.99、LD−IFに対して0.88の相関を得た。この事実は、これらの3つの変数が互いに高い相関関係を有しているため、これらの3つの変数のうち2つの変数を除外できることを意味している。そこで、5つの変数LD、LI、ST、GOTO、SUBを用いて回帰分析を再度実行すると、R2=0.47であり、誤差範囲が10〜+22.5%である以下のような式が得られる。
Cycles=273−0.9*LD+23.3*LI−18.9*ST
+0.06*GOTO−38.7*SUB (3)
+0.06*GOTO−38.7*SUB (3)
なお、上述のように、切片及び係数は、有効な又は暗示的意味を有していない。このパッケージは、多重共線性が深刻な問題ではないことを示している(最終的には、他の変数も除外する(throw out)ことができ、結局、予測式においてLDのみを用いた逐次回帰によって報告された結果に戻る)。
結果
本発明者は、上述した回帰式(1)、(3)を幾つかのエステレルのベンチマークからの6セットのサンプルセットに適用した。この結果は優れず、サイクル数は、回帰式(1)に対しては23%〜60%、回帰式(3)に対しては87%〜184%と過大評価された。このサンプルセットにおいて、また、仮想命令OPcが出現し、適用可能な場合(予測式(3)において)ONのパラメータを用いた。
本発明者は、上述した回帰式(1)、(3)を幾つかのエステレルのベンチマークからの6セットのサンプルセットに適用した。この結果は優れず、サイクル数は、回帰式(1)に対しては23%〜60%、回帰式(3)に対しては87%〜184%と過大評価された。このサンプルセットにおいて、また、仮想命令OPcが出現し、適用可能な場合(予測式(3)において)ONのパラメータを用いた。
結果が優れない理由は、サンプルAに基づいて統計的に導出された予測値の新たなサンプルBへの適用可能性が、サンプルBがサンプルAに類似する特性を有するという類似性の推論に頼る必要があるためである。他の観点においては、サンプルAとサンプルBは、同じ基底にある母集団から導出された可能性があると考えることができる。この仮定を検証する一手法は、2標本t検定である。これは、これらの2つのサンプルが同じ平均値と分散を有する同じ基底にある正規分布から導き出されたとの仮定を検証するものである。
ここで、比較すべきSWタスクの幾つかの特性(characteristic)と、例えばサイクル数等の独立した特性とが必要である。1つの考えとして、総サイクル数に対する仮想命令IFの数の比が、制御主体のSWタスクの測定値であり、すなわち、制御主体のタスクは、アルゴリズム又は数学主体のタスクよりも高い比を有する。これは、漠然とした議論であるが、タスクの制御主体性を明確に測定することは困難である。
この比を用いて、以下のような統計値が得られた。
35サンプルの自動車制御バッチ(batch)
平均比=0.177、標準偏差(std. deviation)=0.016
6個のエステレルバッチ
平均比=0.300、標準偏差=0.0168
平均比=0.177、標準偏差(std. deviation)=0.016
6個のエステレルバッチ
平均比=0.300、標準偏差=0.0168
2標本t検定は、これらの2つのサンプルが同じ基底にある正規分布から導出されたかもしれないという仮定を否定した。実際、第2のサンプルについては、正規性自体が否定された。この2標本t検定を用いるという考えにより、この種の識別機能(discriminating function)を新たなタスクのバッチに適用し、他のサンプルから導出された予測式を新たなサンプルに適用することが合理的であるか否かを判定することができる。したがって、これにより、予測値を適用することができる領域を区別することができる。これを更に検証するために、第1のバッチである35個の自動車制御バッチから無作為に18個を選択し、5つの変数LD、LI、ST、GOTO、SUBについて、回帰分析を再実行した。これにより、R2=0.568である以下のような回帰式が得られた。
Cycles=219+1.3*LD+10.9*LI−10.2*ST
−5.2*GOTO−21.3*SUB (4)
この回帰式を第1のバッチの残り半分(17個のサンプル)に適用すると、予測の誤差範囲は12%〜+5%となった。総サイクルに対するIFの比の特性を用いて、2標本t検定をこれらの18個のバッチ及び17個のタスクに適用することにより、帰無仮説(null hypothesis)が認められた。すなわち、2つのサンプルが同じ母集団(2つのサンプルが存在する)から選ばれた可能性が高い。
−5.2*GOTO−21.3*SUB (4)
この回帰式を第1のバッチの残り半分(17個のサンプル)に適用すると、予測の誤差範囲は12%〜+5%となった。総サイクルに対するIFの比の特性を用いて、2標本t検定をこれらの18個のバッチ及び17個のタスクに適用することにより、帰無仮説(null hypothesis)が認められた。すなわち、2つのサンプルが同じ母集団(2つのサンプルが存在する)から選ばれた可能性が高い。
これは、特定の領域のサンプルから導出された予測値がその領域からの更なるサンプルに公平に適用することができ、単純な弁別器を用いて、SWタスクのサンプルが実際に同じ母集団から選択されたものであること(したがって、弁別器の適用可能性)を確かめることを示している。
この手法を更に調べるために、本発明者は、1組の仮想命令と18個のFFTタスクのサイクル数を用いた。ここで、上述した予測式(4)を用いると、誤差が100%を超える非常に悪い結果となった。そこで、FFTの回帰分析を用いて予測値を生成し、Cycles=286,387+2153*MULdを得た(MULd=倍精度の乗算(double precision multiply))。実際、286,387の切片は除外することができ、Cycles=2153*MULdを用いることができる。これは、これらのベンチマークは、膨大な数のサイクル数(例えば、564,038,767サイクル又は他の例では10億以上のサイクル)に対して実行され、したがって、286,000程度の切片は、比較の上では無視することができる。これらのベンチマークにおいて、この予測値を用いた場合の誤差は±1%である。本発明者は、何が実際にカーネル機能(kernel function)、すなわち外部のカーネル機能ではなく、内部のカーネル機能であるかを見出した。カーネル機能は、かなり数学的なSWタスクの予測値であり、ここでは、サイクル数は、動的制御が主体の分岐ではなく、静的に予測可能な数値演算によって支配される。計算の静的性質(例えば、ループは、動的繰返し回数又は収束検定に基づくことなく、演繹的に既知の繰返しサイズを有する)により、カーネル機能は、非常に低い誤差で高度に予測することができる。FFTの具体例は、この現象を明瞭に示している。この場合、カーネル機能は、外的特性(サンプルのサイズ等)ではなく、内的特性(MULdの数は、2倍の乗数に等しい)の観点から表現される。いずれの種類のカーネル機能も可能である。
本発明を適用した母集団の分析を補強し、したがって、ある領域のあるサンプルセットから導出された予測式の他のサンプルセットへの適用可能性を確かめるために、45個の制御サンプル及び18個のFFTサンプルに対する更なる2標本t検定を行った。ここでも、全サイクルに対する仮想IFの比を弁別器として用いた。18個のFFTサンプルの場合、平均比は約0.00035であり、標準偏差は非常に低い(すなわち、45サンプルの平均値の約10%に対して、0.35%)。2標本t検定は、これらの2つのサンプルが同じ母集団から導出されたという仮説を確実に否定した。すなわち、この結果が示しているように、1つのバッチから導出された予測値は、他に用いても殆ど関連性を有さない。
本発明は、回帰分析を用いて、特定の領域からのタスクサンプルに基づき、SW評価のための統計に基づく予測式を導き出す方法を提供する。上述したベンチマークは、自動車のエンジン制御から導出されたが、以下に限定されるものではないが、工業用制御、無線及び有線通信、マルチメディア等を含む他の領域からのベンチマークを用いてもよい。用途の範囲をより特定及び限定すれば、より高い精度を実現することができる。
ここで、再び図面を参照する。添付の図面では、同様の又は対応する部分には同一の符号が付されている。図2は、本発明に基づく処理全体を示すフローチャートである。ステップ200において、ターゲットプロセッサのモデルを準備する。図3は、ターゲットプロセッサのモデルの準備を説明する例示的な処理を示している。
図3に示すステップ300において、ベンチマークプログラムのセットを決定する。上述したように、ベンチマークプログラムは、好ましくは単一の領域から導出され、広範囲に亘るプログラムフロー、命令及びプログラム全体の構造を表している。次に、各ベンチマークプログラム内の仮想命令の数を判定し(ステップ310)、続いてベンチマークプログラムの実際の実行時間を判定する(ステップ320)。
次に、ステップ330において、予測式のセット及び他のデータ(推定値の誤差、仮想命令毎のサイクル数等)を準備する。ステップ330は、線形回帰によって実行してもよい。図4は、本発明に基づく線形回帰を実行する具体的な処理を示すフローチャートである。
図4に示すステップ400において、ベンチマークプログラムの仮想命令に対する相関分析を行う。そして、相関が高い命令を除外する(ステップ410)。相関が高い命令とは、第1の命令と第2の命令の出現度数間に高度に予測可能な又は演繹的な関係を有する命令である。
ステップ420において、線形回帰分析を行い、予測式を決定し、これにより、各種類の命令の出現度数(ファミリタイプの命令の出現度数)に基づいて、コンピュータ上で実行されるサイクル数を予測することができる。ステップ420に、例えば、予測変数を決定するための逐次線形回帰分析の実行をステップ422として、予測式を導き出すための予測変数に対する線形重回帰分析の実行をステップ424として組み込んでもよい。
ステップ430において、ステップ420の線形回帰分析によって決定された予測変数のセットを所定の閾値に削減する。予測変数は独立変数(例えばNi)であり、予測変数を減らすと、予測の精度も低下する。したがって、予測変数の削減は、計算の複雑さ(予測変数が多いと、複雑さが増す)と、予測の精度とのトレードオフに帰着する。閾値、すなわち、例えばR2の値を用いて、本発明者は、独立変数を減らすことにより、R2の値がどのように低下するかを観察し、R2の閾値が0.35のときに良好な結果が得られることを見出した。
ステップ440において、予測式は、ベンチマークプログラムの第2のセットに適用され、誤差の量を判定することにより質を測定する。ベンチマークプログラムについては、情報の完全なセットを入手することができるため、予測式をベンチマークプログラムの第2のセットに適用した結果によって、ベンチマークプログラムの第2のセットの実行時間を推定する。実際の実行時間と推定された実行時間の差から、予測式の質を測定できる。
図2に示す処理において、ターゲットプロセッサのモデルを準備した後、推定される実際のソフトウェアを評価し、そのソフトウェアが、ステップ200においてターゲットプロセッサのモデルを開発するために用いられたベンチマークプログラムを用いて準備されたモデルに適用でき、これに基づいて評価することができるかを判断する。この判断は、推定されるソフトウェアと、ベンチマークプログラムとの間の相関の度合いを測定するいかなる手法を用いて行ってもよい。好ましくは、この判断は、2標本t検定を用いて行う。2標本t検定によって、推定されるソフトウェアと、ベンチマークプログラムとを区別することができるときは、このベンチマークプログラムを用いて生成されたモデルは、不正確な結果を導き出す可能性が高い。一方、検定により、うまく区別できないときは、モデルは、良好な推定結果を導き出すと期待される。具体例として、各ベンチマークプログラムが30個〜90個のIF文を有しているとすると、総サイクル数は、100000〜200000サイクルとなる。また、推定されるSW内のIF文が約1500個であり、総サイクル数が9000である場合、ベンチマークと推計すべきSWとは、同じ又は類似の母集団に由来するのもではないため、2標本t検定は、ベンチマークと推定されるSWとを区別することができる。一方、評価すべきSW内のIF文の数が60であり、総サイクル数が125000である場合、ベンチマークと推定されるSWとは、類似する母集団に由来するため、2標本t検定は、ベンチマークと推定されるSWとを明瞭に区別することができない。
ステップ220において、ソフトウェアの実際の実行時間を推定する。推定されるソフトウェアは、例えば、VCCにおいて実行され、仮想命令の度数が判定され、この度数は、モデル又は予測式(ステップ200から)に適用され、これにより実行時間が推計される。得られる推定実行時間は、最も正確且つ最も安い現在利用可能な推定ソフトウェア実行時間を示している。
概括すると、本発明は、次のようなステップを含む処理又は方法として実施される。
1)基準ファイルを適用可能なアプリケーション又は設計領域を判定する。基準ファイルは、領域を数学的に記述する係数のセットである。
2)その領域(設計領域)に代表的なベンチマークプログラムのセットを作成又は入手する。
3)ベンチマークプログラムをVCC(又は、他のEDA型ツール)上で実行し、仮想命令の総数を得る。これらの総数は、上述したように、様々な仮想命令の出現度数を含んでいる(例えばGOT、MUL、IF仮想命令の数)。
4)サイクルが正確な、サイクル命令セットシミュレータ(ISS)又は実際のハードウェアのベンチマークを実行し、正確なサイクル数を得る。
5)ベンチマークの結果を用いて、全ての仮想命令の相関分析を行う。
6)相関が高い命令をサンプルから除外する。
7)相関が高い命令が除外された仮想命令サンプルのセットに逐次線形重回帰分析を適用し、サイクル数を合計し、統計的に重要な予測変数のセットを決定する。
8)予測変数(仮想命令)のセットに線形重回帰分析を適用して、予測式を導く。
9)サンプルセットに対する予測値の質(Rの二乗によって測定される)が所定の閾値に達するまで、予測変数を削減する。
10)同じ領域からのベンチマークソフトウェアタスクの第2のセットに予測式を適用し、予測誤差に関する結果の質を測定する。
11)予測式を生成するために用いたベンチマークサンプルと、独立した質測定用のサンプル(independent quality metric sample)とに対して2標本t検定を行い、両サンプルが同じ母集団から導出されたものであることを確かめる。これに用いることができる測定基準の1つは、ソフトウェアタスクの相対的な「制御主体性」であり、各タスク内の仮想命令「IF」と総サイクル数との比を弁別器として用いることができる。
12)予測されていないタスクの新たなセットが元のベンチマークのセットと同じ母集団から導出されたものであるという合理的な統計的可能性の有無を判定するために、予測式を導き出すために使用したベンチマークのセットと同じ領域から明示的に導出された新たなソフトウェアタスクに対して、制御主体の弁別器を用いる。これは、2標本t検定によって行われる。
1)基準ファイルを適用可能なアプリケーション又は設計領域を判定する。基準ファイルは、領域を数学的に記述する係数のセットである。
2)その領域(設計領域)に代表的なベンチマークプログラムのセットを作成又は入手する。
3)ベンチマークプログラムをVCC(又は、他のEDA型ツール)上で実行し、仮想命令の総数を得る。これらの総数は、上述したように、様々な仮想命令の出現度数を含んでいる(例えばGOT、MUL、IF仮想命令の数)。
4)サイクルが正確な、サイクル命令セットシミュレータ(ISS)又は実際のハードウェアのベンチマークを実行し、正確なサイクル数を得る。
5)ベンチマークの結果を用いて、全ての仮想命令の相関分析を行う。
6)相関が高い命令をサンプルから除外する。
7)相関が高い命令が除外された仮想命令サンプルのセットに逐次線形重回帰分析を適用し、サイクル数を合計し、統計的に重要な予測変数のセットを決定する。
8)予測変数(仮想命令)のセットに線形重回帰分析を適用して、予測式を導く。
9)サンプルセットに対する予測値の質(Rの二乗によって測定される)が所定の閾値に達するまで、予測変数を削減する。
10)同じ領域からのベンチマークソフトウェアタスクの第2のセットに予測式を適用し、予測誤差に関する結果の質を測定する。
11)予測式を生成するために用いたベンチマークサンプルと、独立した質測定用のサンプル(independent quality metric sample)とに対して2標本t検定を行い、両サンプルが同じ母集団から導出されたものであることを確かめる。これに用いることができる測定基準の1つは、ソフトウェアタスクの相対的な「制御主体性」であり、各タスク内の仮想命令「IF」と総サイクル数との比を弁別器として用いることができる。
12)予測されていないタスクの新たなセットが元のベンチマークのセットと同じ母集団から導出されたものであるという合理的な統計的可能性の有無を判定するために、予測式を導き出すために使用したベンチマークのセットと同じ領域から明示的に導出された新たなソフトウェアタスクに対して、制御主体の弁別器を用いる。これは、2標本t検定によって行われる。
本発明は、当業者に明らかなように、ここに示した本発明の説明に基づいてプログラミングされた、従来の汎用又は専用のデジタルコンピュータ又はマイクロプロセッサを用いて良好に実現することができる。
また、ソフトウェア分野の知識を有する者には明らかであるが、ここに示した本発明の説明に基づいて、プログラマは適切なソフトウェアコーディングを容易に準備することができる。更に、当業者に明らかなように、本発明は、特定用途向け集積回路、又は従来の電気部品を適切に配線した回路によっても実現することができる。
本発明は、コンピュータを制御して本発明の処理を行わせるのに使用される命令を記録した記録媒体(媒体)であるコンピュータプログラム製品を含む。記録媒体は、任意の種類のフロッピィディスク、ミニディスク(MD)、光ディスク、DVD、CD−ROM、マイクロドライブ、光磁気ディスク、ROM、RAM、EPROM、DRAM、VRAM、フラッシュメモリ(フラッシュカードを含む)、磁気又は光カード、ナノシステム(分子メモリICを含む)、RAIDデバイス、遠隔データ記憶装置/アーカイブ/ウェアハウス、あるいは命令及び/又はデータを記憶する任意の種類の適当な媒体又は装置を含む。なお、記録媒体は、これらに限定されるのではない。
本発明は、コンピュータにより読み取り可能な、任意の媒体に記憶され、汎用/専用コンピュータのハードウェア又はマイクロプロセッサを制御し、コンピュータ又はマイクロプロセッサを人であるユーザとインタラクトさせ、あるいは他のメカニズムにより本発明の成果を利用する、ソフトウェアを含む。この種のソフトウェアは、デバイスドライバ、オペレーティングシステム、及びユーザアプリケーションを含む。なお、ソフトウェアは、これらに限定されるのではない。更に、この種のコンピュータにより読み取り可能な媒体は上述したように、本発明を実施するソフトウェアを含む。
汎用/専用コンピュータ又はマイクロプロセッサ上で動作するプログラム(ソフトウェア)は、上述した本発明の処理を実現するソフトウェアモジュールであり、以下に限定されるものではないが、本発明に基づいて、処理装置のモデルを準備し、ベンチマークプログラムを選択し、仮想命令を判定し、実際の実行時間を測定し、推定されるソフトウェアとベンチマークプログラムの相関を調べ、相関が高い命令を除外し、線形回帰分析を実行し、予測式を導き出し、予測式をベンチマークの第2のセットに適用して質を測定し、本発明に基づく処理を表示し、格納し、結果を通信するためのソフトウェアモジュールを含む。
上述の説明に基づいて、本発明の様々な変更例及び変形例を想到できることは明らかである。したがって、添付の特許請求の範囲から逸脱することなく、上述した特定の具体例を様々に変更して本発明を実現できることは明らかである。
Claims (23)
- ソフトウェアの実行時間を推定する推定方法において、
ベンチマークプログラムのセットに基づいて、ターゲットプロセッサのモデルを準備するステップと、
推定されるソフトウェアと上記ベンチマークプログラムとを相関させるステップと、
上記相関されたソフトウェアを上記モデルに適用し、該ソフトウェアの実行時間の推定値を判定するステップとを有する推定方法。 - 上記モデルは、命令と実行時間とを相関させる線型モデルを含むことを特徴とする請求項1記載の推定方法。
- 上記モデルを準備するステップは、
上記推定されるソフトウェアと同じ領域からベンチマークプログラムのセットを選択するステップと、
上記ベンチマークプログラムのセットにおける仮想命令のセットを判定するステップと、
上記ベンチマークプログラムのセットの実際の実行時間を測定するステップと、
上記仮想命令と実際の実行時間とを相関させることにより、予測式を決定するステップとを有することを特徴とする請求項1記載の推定方法。 - 上記予測式を決定するステップは、
上記ベンチマークプログラムのセットに含まれる仮想命令間の相関分析を行って、どの仮想命令が他の仮想命令と高度に相関しているかを調べるステップと、
上記高度に相関している仮想命令のセットの内の1以上の要素を除外し、該高度に相関している仮想命令の1つを残し、削減された仮想命令のセットを生成するステップと、
上記削減された仮想命令のセットに対して線形回帰分析を実行し、予測変数のセットを有する予測式を導出するステップと、
上記予測変数のセット内の予測変数の数を所定の閾値まで削減するステップと、
上記予測変数が削減された予測式をベンチマークプログラムの第2のセットに適用し、該予測変数が削減された予測式における誤差の量を測定するステップとを有することを特徴とする請求項3記載の推定方法。 - 上記実際の実行時間を測定するステップは、
各ベンチマークプログラムの総サイクル数を判定するステップを有し、
上記線形回帰分析を実行するステップは、
上記削減された仮想命令のセットと上記総サイクル数とに逐次線形重回帰分析を適用し、統計的に重要な予測変数のセットを判定するステップと、
上記予測式のセットに線形重回帰分析を適用し、予測式を決定するステップとを有することを特徴とする請求項4記載の推定方法。 - 上記予測変数の数を削減するステップは、
上記ベンチマークプログラムに対する予測値の質が、所定の閾値に達するまで上記予測変数の数を削減するステップを有することを特徴とする請求項4記載の推定方法。 - 上記予測値の質は、分散の量を測定するR二乗関数によって測定され、サイクル数は、回帰される予測変数の分散によって説明されることを特徴とする請求項6記載の推定方法。
- 上記閾値は、上記R二乗関数の結果が約0.35となる値であることを特徴とする請求項7記載の推定方法。
- 上記推定されるソフトウェアと上記ベンチマークプログラムとを相関させるステップは、
該推定されるソフトウェアと上記ベンチマークプログラムとの間に2標本t検定を適用するステップを有することを特徴とする請求項1記載の推定方法。 - 当該推定方法は、コンピュータにより読取可能な媒体に格納されたコンピュータ命令のセットとして実現され、該コンピュータ命令は、コンピュータにロードされて、該コンピュータに当該推定方法のステップを実行されることを特徴とする請求項1記載の推定方法。
- 当該推定方法は、コンピュータにより読取可能な媒体に格納されたコンピュータ命令のセットとして実現され、該コンピュータ命令は、コンピュータにロードされて、該コンピュータに当該推定方法のステップを実行されることを特徴とする請求項5記載の推定方法。
- 上記コンピュータ命令はコンパイルされ、上記コンピュータにより読取可能な媒体に実行可能なプログラムとして格納されたコンピュータ命令であることを特徴とする請求項9記載の推定方法。
- 当該推定方法は、電気信号で表された、コンピュータにより読取可能な命令として実現されていることを特徴とする請求項1記載の推定方法。
- ソフトウェアの実行時間を推定する推定装置において、
ターゲットプロセッサをモデリングするモデリング手段と、
推定されるソフトウェアと、上記モデリング手段がターゲットプロセッサをモデリングするために用いたベンチマークプログラムとを相関させる相関手段と、
上記相関されたソフトウェアを上記モデリング手段に適用し、該ソフトウェアの推定された実行時間を判定する評価手段とを備える推定装置。 - 上記モデリング手段は、
上記ベンチマークプログラムにおける仮想命令の出現度数を判定する度数判定手段と、 上記ベンチマークプログラムの実際の実行時間を判定する実行時間判定手段と、
予測式、予測の誤差及びベンチマークプログラムの仮想命令毎の繰返し回数のうちの少なくとも1つを判定する判定手段とを備えることを特徴とする請求項14記載の推定装置。 - 上記判定手段は、
仮想命令に対して相関分析を行う相関分析手段と、
高度に相関する命令を除外する除外手段と、
高度に相関していない仮想命令及びベンチマークプログラムの実際の実行時間に基づいて、予測式を導出する予測式導出手段と、
上記導出された予測式における変数の数を所定の閾値に削減する削減手段とを備えることを特徴とする請求項15記載の推定装置。 - 上記判定手段は、更に、
上記導出された予測式をベンチマークプログラムの第2のセットに適用し、該予測式の評価能力の質を測定する測定手段を備えることを特徴とする請求項16記載の推定装置。 - 上記予測式導出手段は、上記仮想命令に適用される線形回帰ツールを備えることを特徴とする請求項16記載の推定装置。
- 上記予測式導出手段は、
逐次線形回帰分析を実行して、予測変数を判定する予測変数判定手段と、
上記予測変数に対して線形回帰分析を実行して、上記予測式を導出する線形回帰分析手段とを備えることを特徴とする請求項16記載の推定装置。 - 上記閾値は、分散の量を測定するR二乗関数を含み、サイクル数は、回帰される予測変数の分散によって説明されることを特徴とする請求項16記載の推定装置。
- 上記閾値は、約0.35であることを特徴とする請求項20記載の推定装置。
- ソフトウェアの実行時間を推定する推定装置において、
少なくとも1つのベンチマークプログラムのセットの実行時間に基づく、ターゲットプロセッサのモデルと、
推定されるソフトウェアと、上記少なくとも1つのベンチマークプログラムのセットとを相関させる相関手段と、
上記相関されたソフトウェアを上記モデルに適用し、該ソフトウェアの推定された実行時間を推定する推定手段とを備える推定装置。 - 上記ターゲットプロセッサのモデルは、上記ベンチマークプログラムの高度に相関していない仮想命令及び該ベンチマークプログラムの実際の実行時間に対する線形回帰によって構築された予測式であることを特徴とする請求項22記載の推定装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/799,643 US7007270B2 (en) | 2001-03-05 | 2001-03-05 | Statistically based estimate of embedded software execution time |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002570070A Division JP2004530193A (ja) | 2001-03-05 | 2002-03-05 | 組込形ソフトウェアの実行時間の統計的評価のための方法及び装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009076073A true JP2009076073A (ja) | 2009-04-09 |
Family
ID=25176407
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002570070A Pending JP2004530193A (ja) | 2001-03-05 | 2002-03-05 | 組込形ソフトウェアの実行時間の統計的評価のための方法及び装置 |
JP2008239668A Pending JP2009076073A (ja) | 2001-03-05 | 2008-09-18 | 組込形ソフトウェアの実行時間の統計的評価のための方法及び装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002570070A Pending JP2004530193A (ja) | 2001-03-05 | 2002-03-05 | 組込形ソフトウェアの実行時間の統計的評価のための方法及び装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7007270B2 (ja) |
EP (1) | EP1366415B1 (ja) |
JP (2) | JP2004530193A (ja) |
KR (1) | KR100901663B1 (ja) |
AT (1) | ATE517385T1 (ja) |
WO (1) | WO2002071214A1 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011134329A (ja) * | 2009-12-23 | 2011-07-07 | Intel Corp | プロセッサ・アーキテクチャ・モデルを効率的に生成するための方法及び装置 |
JP4905597B1 (ja) * | 2011-03-15 | 2012-03-28 | オムロン株式会社 | コントローラサポート装置、その装置において実行されるためのコントローラサポートプログラム、およびそのプログラムを格納する記録媒体 |
JP2016151842A (ja) * | 2015-02-17 | 2016-08-22 | 富士通株式会社 | プログラム実行解析方法、情報処理装置及びプログラム実行解析プログラム |
Families Citing this family (83)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6986128B2 (en) * | 2000-01-07 | 2006-01-10 | Sony Computer Entertainment Inc. | Multiple stage program recompiler and method |
JP2003131902A (ja) * | 2001-10-24 | 2003-05-09 | Toshiba Corp | ソフトウェアデバッガ、システムレベルデバッガ、デバッグ方法、及びデバッグプログラム |
EP1331565B1 (en) * | 2002-01-29 | 2018-09-12 | Texas Instruments France | Application execution profiling in conjunction with a virtual machine |
JP2004021756A (ja) * | 2002-06-19 | 2004-01-22 | Hitachi Ltd | 情報システム性能の統計的予測方法 |
US7228531B1 (en) * | 2003-02-03 | 2007-06-05 | Altera Corporation | Methods and apparatus for optimizing a processor core on a programmable chip |
US20040199913A1 (en) * | 2003-04-07 | 2004-10-07 | Perrow Michael S. | Associative memory model for operating system management |
US7739661B2 (en) * | 2003-05-14 | 2010-06-15 | Microsoft Corporation | Methods and systems for planning and tracking software reliability and availability |
US7406686B2 (en) * | 2003-06-09 | 2008-07-29 | Sun Microsystems, Inc. | Systems and methods for software performance tuning |
US20040250235A1 (en) * | 2003-06-09 | 2004-12-09 | Sun Microsystems, Inc. | Methods and apparatus for enhanced statistical performance |
US20050021655A1 (en) * | 2003-06-09 | 2005-01-27 | Sun Microsystems, Inc. | System for efficiently acquiring and sharing runtime statistics |
US8239833B2 (en) * | 2003-06-26 | 2012-08-07 | Stmicroelectronics S.A. | Statistical control of the integrity of a program |
US7546598B2 (en) * | 2003-09-03 | 2009-06-09 | Sap Aktiengesellschaft | Measuring software system performance using benchmarks |
US8266595B2 (en) * | 2004-02-12 | 2012-09-11 | International Business Machines Corporation | Removal of asynchronous events in complex application performance analysis |
US7496900B2 (en) * | 2004-02-12 | 2009-02-24 | International Business Machines Corporation | Method for automatic detection of build regressions |
US7765539B1 (en) | 2004-05-19 | 2010-07-27 | Nintendo Co., Ltd. | System and method for trans-compiling video games |
US7614037B2 (en) * | 2004-05-21 | 2009-11-03 | Microsoft Corporation | Method and system for graph analysis and synchronization |
US7343592B2 (en) * | 2004-06-17 | 2008-03-11 | International Business Machines Corporation | Benchmark synthesis using workload statistics |
US7493596B2 (en) * | 2004-06-30 | 2009-02-17 | International Business Machines Corporation | Method, system and program product for determining java software code plagiarism and infringement |
US7647581B2 (en) * | 2004-06-30 | 2010-01-12 | International Business Machines Corporation | Evaluating java objects across different virtual machine vendors |
US7653899B1 (en) | 2004-07-23 | 2010-01-26 | Green Hills Software, Inc. | Post-execution software debugger with performance display |
US8015552B1 (en) | 2004-07-23 | 2011-09-06 | Green Hills Software, Inc. | Post-execution software debugger with coverage display |
US8132159B1 (en) | 2004-07-23 | 2012-03-06 | Green Hills Software, Inc. | Post-execution software debugger with event display |
US8271955B1 (en) | 2004-07-23 | 2012-09-18 | Green Hille Software, Inc. | Forward post-execution software debugger |
US8136096B1 (en) | 2004-07-23 | 2012-03-13 | Green Hills Software, Inc. | Backward post-execution software debugger |
US20060020413A1 (en) * | 2004-07-26 | 2006-01-26 | Septon Daven W | Methods and apparatus for providing automated test equipment with a means to jump and return in a test program |
US20060129990A1 (en) * | 2004-12-13 | 2006-06-15 | International Business Machines Corporation | System, method, and article of manufacture for determining execution counts associated with a software program of an embedded system |
US7475387B2 (en) * | 2005-01-04 | 2009-01-06 | International Business Machines Corporation | Problem determination using system run-time behavior analysis |
CN100590592C (zh) * | 2005-01-13 | 2010-02-17 | Nxp股份有限公司 | 处理器及其指令发布方法 |
US7490269B2 (en) * | 2005-08-24 | 2009-02-10 | Microsoft Corporation | Noise accommodation in hardware and software testing |
JP2007286671A (ja) * | 2006-04-12 | 2007-11-01 | Fujitsu Ltd | ソフトウェア/ハードウェア分割プログラム、および分割方法。 |
US8578347B1 (en) * | 2006-12-28 | 2013-11-05 | The Mathworks, Inc. | Determining stack usage of generated code from a model |
US20080235658A1 (en) * | 2007-03-21 | 2008-09-25 | Asaf Adi | Code generation for real-time event processing |
US8356286B2 (en) * | 2007-03-30 | 2013-01-15 | Sap Ag | Method and system for providing on-demand profiling infrastructure for profiling at virtual machines |
US8601469B2 (en) * | 2007-03-30 | 2013-12-03 | Sap Ag | Method and system for customizing allocation statistics |
US8336033B2 (en) * | 2007-03-30 | 2012-12-18 | Sap Ag | Method and system for generating a hierarchical tree representing stack traces |
US8667471B2 (en) * | 2007-03-30 | 2014-03-04 | Sap Ag | Method and system for customizing profiling sessions |
US8522209B2 (en) * | 2007-03-30 | 2013-08-27 | Sap Ag | Method and system for integrating profiling and debugging |
US8006223B2 (en) * | 2007-06-13 | 2011-08-23 | International Business Machines Corporation | Method and system for estimating project plans for packaged software applications |
US8055606B2 (en) * | 2007-06-13 | 2011-11-08 | International Business Machines Corporation | Method and system for self-calibrating project estimation models for packaged software applications |
US20080313008A1 (en) * | 2007-06-13 | 2008-12-18 | International Business Machines Corporation | Method and system for model-driven approaches to generic project estimation models for packaged software applications |
US8032404B2 (en) * | 2007-06-13 | 2011-10-04 | International Business Machines Corporation | Method and system for estimating financial benefits of packaged application service projects |
US7971180B2 (en) * | 2007-06-13 | 2011-06-28 | International Business Machines Corporation | Method and system for evaluating multi-dimensional project plans for implementing packaged software applications |
US20080312980A1 (en) * | 2007-06-13 | 2008-12-18 | International Business Machines Corporation | Method and system for staffing and cost estimation models aligned with multi-dimensional project plans for packaged software applications |
US8117598B2 (en) * | 2007-09-27 | 2012-02-14 | Oracle America, Inc. | Method and apparatus to automatically identify specific code changes to probabilistically exclude from regression |
US8020147B2 (en) * | 2007-10-12 | 2011-09-13 | Infosys Limited | Software package implementation sizing |
US8881112B2 (en) * | 2007-12-19 | 2014-11-04 | International Business Machines Corporation | Quality measure tool for a composite application |
WO2009089294A2 (en) * | 2008-01-08 | 2009-07-16 | Teamstudio, Inc. | Methods and systems for generating software quality index |
KR100943887B1 (ko) * | 2008-02-05 | 2010-02-24 | 재단법인서울대학교산학협력재단 | 핫스팟 메소드의 동적 컴파일을 위해 수행 시간을 추정하는방법 |
WO2010001766A1 (ja) * | 2008-07-02 | 2010-01-07 | 国立大学法人 東京工業大学 | 実行時間推定方法、実行時間推定プログラムおよび実行時間推定装置 |
JP5326442B2 (ja) * | 2008-09-04 | 2013-10-30 | 富士通株式会社 | 統計量推定装置、統計量推定プログラム、統計量推定方法 |
JP5532052B2 (ja) * | 2009-10-30 | 2014-06-25 | 日本電気株式会社 | 評価モデル分析システム、評価モデル分析方法およびプログラム |
JP2011100388A (ja) * | 2009-11-09 | 2011-05-19 | Fujitsu Ltd | トレース情報収集装置,トレース情報処理装置,およびトレース情報収集方法 |
US8402471B2 (en) * | 2009-12-21 | 2013-03-19 | At&T Intellectual Property I, L.P. | Methods and apparatus to benchmark a computer system based on executing instructions using different numbers of threads |
JP5412305B2 (ja) * | 2010-01-27 | 2014-02-12 | 株式会社日立アドバンストデジタル | モデルベースの性能予測システム |
EP2477085B1 (de) * | 2011-01-13 | 2013-07-17 | Siemens Aktiengesellschaft | Verfahren und System zur Analyse eines zeitlichen Ablaufverhaltens eines Steuerungsprogramms einer Industriesteuerung |
US20120185231A1 (en) * | 2011-01-19 | 2012-07-19 | National Tsing Hua University | Cycle-Count-Accurate (CCA) Processor Modeling for System-Level Simulation |
WO2012142069A2 (en) * | 2011-04-11 | 2012-10-18 | University Of Florida Research Foundation, Inc. | Elastic computing |
EP2610773A1 (de) * | 2011-12-28 | 2013-07-03 | Siemens Aktiengesellschaft | Verfahren zum Herstellen einer Hardwareeinrichtung und Hardwareeinrichtung |
US8881125B2 (en) * | 2012-06-11 | 2014-11-04 | International Business Machines Corporation | Indirect software performance analysis |
US9483308B2 (en) | 2012-06-29 | 2016-11-01 | Intel Corporation | Performance of predicted actions |
US8990143B2 (en) * | 2012-06-29 | 2015-03-24 | Intel Corporation | Application-provided context for potential action prediction |
US9063796B2 (en) | 2012-08-02 | 2015-06-23 | GM Global Technology Operations LLC | Method and apparatus for improving processing performance of a multi-core processor |
US9471347B2 (en) | 2013-01-31 | 2016-10-18 | International Business Machines Corporation | Optimization of virtual machine sizing and consolidation |
JP6163898B2 (ja) * | 2013-06-11 | 2017-07-19 | 富士通株式会社 | 計算装置、計算方法、および計算プログラム |
RU2013143925A (ru) * | 2013-09-30 | 2015-04-10 | ИЭмСи КОРПОРЕЙШН | Система и способ прогнозирования эффективности памяти |
US9262190B2 (en) * | 2013-11-19 | 2016-02-16 | Xerox Corporation | Method and system for managing virtual machines in distributed computing environment |
US10133775B1 (en) * | 2014-03-19 | 2018-11-20 | Amazon Technologies, Inc. | Run time prediction for data queries |
EP2927763B1 (en) * | 2014-04-04 | 2019-06-19 | Abb Ag | System and method for an optimized operation of real-time embedded solutions in industrial automation |
JP6333656B2 (ja) * | 2014-07-28 | 2018-05-30 | ファナック株式会社 | Ncプログラム修正後の加工時間を予測する加工時間予測装置 |
US9804849B2 (en) * | 2015-10-20 | 2017-10-31 | International Business Machines Corporation | Space reduction in processor stressmark generation |
US11023351B2 (en) | 2017-02-28 | 2021-06-01 | GM Global Technology Operations LLC | System and method of selecting a computational platform |
US10372585B2 (en) * | 2017-11-07 | 2019-08-06 | Facebook, Inc. | Incident tracker |
JP7091726B2 (ja) * | 2018-03-08 | 2022-06-28 | 富士通株式会社 | 情報処理装置,プログラム及び情報処理方法 |
CN112088383A (zh) * | 2018-05-10 | 2020-12-15 | 松下半导体解决方案株式会社 | 神经网络构筑装置、信息处理装置、神经网络构筑方法及程序 |
CN111324353B (zh) * | 2018-12-14 | 2022-09-13 | 中移(杭州)信息技术有限公司 | 一种持续集成任务的优化方法及装置 |
CN109933748B (zh) * | 2019-03-21 | 2023-05-12 | 武汉轻工大学 | 椭球面方程的模型识别方法、装置、终端设备及可读存储介质 |
KR102631545B1 (ko) * | 2019-05-17 | 2024-01-30 | 삼성에스디에스 주식회사 | 프로그램 분석 방법 및 그 시스템 |
CN110888813A (zh) * | 2019-11-27 | 2020-03-17 | 泰康保险集团股份有限公司 | 项目排期管理方法、装置、设备及存储介质 |
US11068592B1 (en) * | 2021-01-26 | 2021-07-20 | Malwarebytes Inc. | Lookahead signature-based malware detection |
KR102341827B1 (ko) * | 2021-08-06 | 2021-12-21 | 주식회사 에너자이(ENERZAi) | 테스트 벤치 생성 방법, 테스트 벤치 생성 장치, 및 테스트 벤치 생성 시스템 |
KR20230022387A (ko) * | 2021-08-06 | 2023-02-15 | 주식회사 에너자이(ENERZAi) | 테스트 벤치 생성 방법, 테스트 벤치 생성 장치, 및 테스트 벤치 생성 시스템 |
US20230070393A1 (en) * | 2021-09-02 | 2023-03-09 | Huawei Technologies Co., Ltd. | Methods and devices for assessing generalizability of benchmarks |
CN116483482B (zh) * | 2023-05-19 | 2024-03-01 | 北京百度网讯科技有限公司 | 深度学习任务处理方法、系统、装置、设备及介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07262055A (ja) * | 1994-03-17 | 1995-10-13 | Fujitsu Ltd | 計算機プログラムの処理時間予測方法およびその計算機 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CH680455A5 (ja) * | 1988-11-10 | 1992-08-31 | Benninger Ag Maschf | |
US5270935A (en) * | 1990-11-26 | 1993-12-14 | General Motors Corporation | Engine with prediction/estimation air flow determination |
US5590323A (en) * | 1994-05-13 | 1996-12-31 | Lucent Technologies Inc. | Optimal parallel processor architecture for real time multitasking |
US5696942A (en) | 1995-03-24 | 1997-12-09 | Sun Microsystems, Inc. | Cycle-based event-driven simulator for hardware designs |
US5696943A (en) * | 1995-07-27 | 1997-12-09 | Advanced Micro Devices, Inc. | Method and apparatus for quick and reliable design modification on silicon |
US5761477A (en) * | 1995-12-04 | 1998-06-02 | Microsoft Corporation | Methods for safe and efficient implementations of virtual machines |
US6151618A (en) * | 1995-12-04 | 2000-11-21 | Microsoft Corporation | Safe general purpose virtual machine computing system |
US5801975A (en) * | 1996-12-02 | 1998-09-01 | Compaq Computer Corporation And Advanced Micro Devices, Inc. | Computer modified to perform inverse discrete cosine transform operations on a one-dimensional matrix of numbers within a minimal number of instruction cycles |
US5790425A (en) * | 1997-02-19 | 1998-08-04 | Sun Microsystems, Inc. | Generic server benchmarking framework in a client-server environment |
US5966537A (en) * | 1997-05-28 | 1999-10-12 | Sun Microsystems, Inc. | Method and apparatus for dynamically optimizing an executable computer program using input data |
US6421653B1 (en) * | 1997-10-14 | 2002-07-16 | Blackbird Holdings, Inc. | Systems, methods and computer program products for electronic trading of financial instruments |
US6026237A (en) * | 1997-11-03 | 2000-02-15 | International Business Machines Corporation | System and method for dynamic modification of class files |
US6118940A (en) * | 1997-11-25 | 2000-09-12 | International Business Machines Corp. | Method and apparatus for benchmarking byte code sequences |
US5809450A (en) * | 1997-11-26 | 1998-09-15 | Digital Equipment Corporation | Method for estimating statistics of properties of instructions processed by a processor pipeline |
US6662358B1 (en) * | 1997-12-12 | 2003-12-09 | International Business Machines Corporation | Minimizing profiling-related perturbation using periodic contextual information |
US6732357B1 (en) * | 1997-12-12 | 2004-05-04 | International Business Machines Corporation | Determining and compensating for temporal overhead in trace record generation and processing |
US6286046B1 (en) * | 1997-12-22 | 2001-09-04 | International Business Machines Corporation | Method of recording and measuring e-business sessions on the world wide web |
US6189141B1 (en) * | 1998-05-04 | 2001-02-13 | Hewlett-Packard Company | Control path evaluating trace designator with dynamically adjustable thresholds for activation of tracing for high (hot) activity and low (cold) activity of flow control |
US6381558B1 (en) * | 1998-12-18 | 2002-04-30 | International Business Machines Corporation | Alternative profiling methodology and tool for analyzing competitive benchmarks |
US6507946B2 (en) * | 1999-06-11 | 2003-01-14 | International Business Machines Corporation | Process and system for Java virtual method invocation |
US6463457B1 (en) * | 1999-08-26 | 2002-10-08 | Parabon Computation, Inc. | System and method for the establishment and the utilization of networked idle computational processing power |
US6618737B2 (en) * | 2000-03-09 | 2003-09-09 | International Business Machines Corporation | Speculative caching of individual fields in a distributed object system |
US6457023B1 (en) * | 2000-12-28 | 2002-09-24 | International Business Machines Corporation | Estimation of object lifetime using static analysis |
US6609084B2 (en) * | 2001-08-10 | 2003-08-19 | Hewlett-Packard Development Company, Lp. | Data transfer performance measuring system and method |
-
2001
- 2001-03-05 US US09/799,643 patent/US7007270B2/en not_active Expired - Fee Related
-
2002
- 2002-03-05 JP JP2002570070A patent/JP2004530193A/ja active Pending
- 2002-03-05 EP EP02725074A patent/EP1366415B1/en not_active Expired - Lifetime
- 2002-03-05 WO PCT/US2002/006620 patent/WO2002071214A1/en active Application Filing
- 2002-03-05 AT AT02725074T patent/ATE517385T1/de not_active IP Right Cessation
- 2002-03-05 KR KR1020037011654A patent/KR100901663B1/ko not_active IP Right Cessation
-
2008
- 2008-09-18 JP JP2008239668A patent/JP2009076073A/ja active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07262055A (ja) * | 1994-03-17 | 1995-10-13 | Fujitsu Ltd | 計算機プログラムの処理時間予測方法およびその計算機 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011134329A (ja) * | 2009-12-23 | 2011-07-07 | Intel Corp | プロセッサ・アーキテクチャ・モデルを効率的に生成するための方法及び装置 |
JP4905597B1 (ja) * | 2011-03-15 | 2012-03-28 | オムロン株式会社 | コントローラサポート装置、その装置において実行されるためのコントローラサポートプログラム、およびそのプログラムを格納する記録媒体 |
WO2012124138A1 (ja) * | 2011-03-15 | 2012-09-20 | オムロン株式会社 | コントローラサポート装置、その装置において実行されるためのコントローラサポートプログラム、およびそのプログラムを格納する記録媒体 |
CN103477290A (zh) * | 2011-03-15 | 2013-12-25 | 欧姆龙株式会社 | 控制器辅助装置、用于在该装置中执行的控制器辅助程序以及存储有该程序的记录介质 |
CN103477290B (zh) * | 2011-03-15 | 2016-06-29 | 欧姆龙株式会社 | 控制器辅助装置 |
US10061281B2 (en) | 2011-03-15 | 2018-08-28 | Omron Corporation | Controller support device, method, and recording medium |
JP2016151842A (ja) * | 2015-02-17 | 2016-08-22 | 富士通株式会社 | プログラム実行解析方法、情報処理装置及びプログラム実行解析プログラム |
Also Published As
Publication number | Publication date |
---|---|
US7007270B2 (en) | 2006-02-28 |
US20020166112A1 (en) | 2002-11-07 |
EP1366415A1 (en) | 2003-12-03 |
KR100901663B1 (ko) | 2009-06-08 |
JP2004530193A (ja) | 2004-09-30 |
WO2002071214A1 (en) | 2002-09-12 |
EP1366415B1 (en) | 2011-07-20 |
EP1366415A4 (en) | 2008-07-09 |
KR20040004549A (ko) | 2004-01-13 |
ATE517385T1 (de) | 2011-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2009076073A (ja) | 組込形ソフトウェアの実行時間の統計的評価のための方法及び装置 | |
Giusto et al. | Reliable estimation of execution time of embedded software | |
Hertz et al. | Mining hardware assertions with guidance from static analysis | |
Lim et al. | An accurate worst case timing analysis for RISC processors | |
Balarin et al. | Synthesis of software programs for embedded control applications | |
US20090276738A1 (en) | Method and apparatus for executing a hardware simulation and verification solution | |
Posadas et al. | System-level performance analysis in SystemC | |
US8160861B2 (en) | System and method for modelling a hardware component of a data processing apparatus | |
Posadas et al. | RTOS modeling in SystemC for real-time embedded SW simulation: A POSIX model | |
Carreras et al. | A co-design methodology based on formal specification and high-level estimation | |
Schlickling et al. | Semi-automatic derivation of timing models for WCET analysis | |
Ahn et al. | SoCDAL: System-on-chip design AcceLerator | |
Oyamada et al. | Applying neural networks to performance estimation of embedded software | |
Wolf et al. | Execution cost interval refinement in static software analysis | |
Uddin et al. | Collecting signatures to model latency tolerance in high-level simulations of microthreaded cores | |
Hennessy et al. | Hardware/software codesign of processors: Concepts and examples | |
Clarke et al. | Verification of SpecC using predicate abstraction | |
Staschulat et al. | Context sensitive performance analysis of automotive applications | |
Ziegenbein et al. | Interval-based analysis of software processes | |
Bjuréus et al. | Performance analysis with confidence intervals for embedded software processes | |
Bose et al. | Architectural timing verification of CMOS RISC processors | |
Lajolo et al. | Scalable techniques for system-level cosimulation and coestimation | |
Choi | Performance Debugging Frameworks for FPGA High-Level Synthesis | |
Lavagno et al. | System-level design models and implementation techniques | |
Klein et al. | Migrating software to hardware on FPGAs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110822 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20120206 |