(57)【要約】【課題】コンパイラの最適化に対応でき、情報収集用のコードの追加も可能となり、シミュレーション精度の向上を図ることができるデータ処理装置およびその方法、並びにプログラムを提供する。【解決手段】ＣＰＵ１１は、“アセンブラを解析し、サイクル数情報などが正確に反映されるように変更を加えたソースコードを生成する”もしくは、“アセンブラから、サイクル数情報等が正確に使えるように上位レベル（Ｃ言語等）のソースコードを生成する”。  このことによって、ＣＰＵ１１は、Ｕｎ−Ｔｉｍｅｄソフトウェア（元のソースコード）からＴｉｍｅｄソフトウェアを生成させる。つまり、ＣＰＵ１１は、ソースコードだけでBasic Blockを決め、そこにサイクル情報を加える既存の方法ではなく、アセンブラ解析によってBasic Blockを決め、それに合わせたソースコードを生成し出力する。【選択図】図１
2010003123.tif 000002
【特許請求の範囲】
【請求項１】
ターゲット処理装置およびオペレーティングシステム（ＯＳ）が搭載された半導体装置のハードウェアおよびソフトウェアを、生成したＴｉｍｅｄソフトウェアにより協調検証可能なホスト処理装置を有し、
上記ホスト処理装置は、
上記ターゲット処理装置のアセンブラを解析して時間に関する情報を計算する基本単位であるBasic Blockを認識し、当該Basic Blockを基準に上記協調検証用のＴｉｍｅｄソフトウェアを生成する
データ処理装置。
【請求項２】
上記ホスト処理装置は、
アセンブラを解析し、サイクル数情報が反映されるように変更を加えたソースコードを生成する
請求項１記載のデータ処理装置。
【請求項３】
上記ホスト処理装置は、
アセンブラからサイクル数情報が正確に使用可能となるように上位レベルのソースコードを生成する
請求項１記載のデータ処理装置。
【請求項４】
上記上位レベルはＣ言語であり、
上記データ処理装置は、
アセンブラファイルを読み込み、関数開始命令を認識すると、アセンブラ命令をＣ関数の定義に変換してＣファイルに出力し、Ｃファイルに時間情報を挿入し、新規のBasic Blockから処理を開始する
請求項３記載のデータ処理装置。
【請求項５】
上記データ処理装置は、
アセンブラファイルを読み込み、時間情報を更新し、分岐開始／終了命令を認識すると、Ｃファイルに時間情報を挿入し、アセンブラ命令をＣ言語に変換してＣファイルに出力し、直前のBasic Blockの処理を終了し、新規のBasic Blockから処理を開始する
請求項４記載のデータ処理装置。
【請求項６】
上記データ処理装置は、
アセンブラファイルを読み込み、時間情報を更新し、関数終了命令を認識すると、Ｃファイルに時間情報を挿入し、アセンブラ命令をＣ関数終了に変換してＣファイルに出力し、直前のBasic Blockの処理を終了する
請求項４または５記載のデータ処理装置。
【請求項７】
上記データ処理装置は、
上記分岐開始／終了命令および上記関数終了命令を認識できない場合には、アセンブラ命令をＣ言語に変換し、上記アセンブラファイルの読み込み処理から繰り返す
請求項６記載のデータ処理装置。
【請求項８】
ターゲット処理装置およびオペレーティングシステム（ＯＳ）が搭載された半導体装置のハードウェアおよびソフトウェアの協調検証に使用するＴｉｍｅｄソフトを生成するに際し、
上記ターゲット処理装置のアセンブラを解析して時間に関する情報を計算する基本単位であるBasic Blockを認識し、
当該Basic Blockを基準に上記協調検証用のＴｉｍｅｄソフトウェアを生成する
データ処理方法。
【請求項９】
ターゲット処理装置およびオペレーティングシステム（ＯＳ）が搭載された半導体装置のハードウェアおよびソフトウェアの協調検証に使用するＴｉｍｅｄソフトを生成するに際し、
上記ターゲット処理装置のアセンブラを解析して時間に関する情報を計算する基本単位であるBasic Blockを認識する処理と、
当該Basic Blockを基準に上記協調検証用のＴｉｍｅｄソフトウェアを生成する処理と
を含むデータ処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置に搭載されるハードウェア（ＨＷ）およびソフトウェア（ＳＷ）を協調検証等に適用可能なデータ処理装置およびその方法、並びにプログラムに関するものである。
【背景技術】
【０００２】
ホストＣＰＵを使用して、一つのターゲットＣＰＵおよび一つのオペレーティングシステム（ＯＳ）が搭載された半導体装置のハードウェアおよびソフトウェアを協調検証する方法が提案されている（たとえば特許文献１参照）。
【０００３】
この方法は、たとえば次の第１〜第５のステップを含む。
第１のステップでは、検証モデル（ソフトウェアモデル）としてのＣベース言語記述のＴｉｍｅｄソフトウェア部品を入力してコンパイルし、このコンパイルされたＴｉｍｅｄソフトウェア部品およびコンパイルされたハードウェア部品をリンクする。
第２のステップでは、テストベンチを入力してコンパイルする。
第３のステップでは、第１のステップにより処理された検証モデルと第２のステップにより処理されたテストベンチとをリンクする。
第４のステップでは、第３のステップで生成された実行プログラムに基づいてシミュレーションを実行する。
第５のステップでは、第４のステップによるシミュレーションの結果を出力する。
【０００４】
また、第１のステップとしては、以下の２通りの処理が採用可能である。
第１は、検証モデルとしてのホストＣＰＵ用バイナリコードのＴｉｍｅｄソフトウェア部品を入力し、検証モデルとしてのＣベース言語記述のハードウェア部品を入力してコンパイルし、この入力されたＴｉｍｅｄソフトウェア部品およびコンパイルされたハードウェア部品をリンクする、第１のステップとしての処理である。
第２は、検証モデルとしてのＣベース言語記述のＴｉｍｅｄソフトウェア部品を入力してコンパイルし、検証モデルとしてのホストＣＰＵ用バイナリコードのＴｉｍｅｄソフトウェア部品を入力し、検証モデルとしてのＣベース言語記述のハードウェア部品を入力してコンパイルし、このコンパイルされまたは入力されたＴｉｍｅｄソフトウェア部品およびコンパイルされたハードウェア部品をリンクする、第１のステップとしての処理である。
【０００５】
そして、特許文献１に開示された方法において、Ｕｎ−Ｔｉｍｅｄソフトウェア（元のソースコード）からＴｉｍｅｄソフトウェア（シミュレーション用のソースコード）を生成するとき、ＡＮＳＩ−Ｃベースのソースコード、もしくはホストＣＰＵ用のバイナリコードを基準にベイシックブロック（Basic Block）を認識している。
たとえばＵｎ−Ｔｉｍｅｄソフトウェアとしては元のソースコード、Ｔｉｍｅｄソフトウェアとしてはシミュレーション用のソースコードが例示される。
【０００６】
【特許文献１】特開２００４−２３４５２８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上述した方法おいては、Ｕｎ-ＴｉｍｅｄソフトウェアからＴｉｍｅｄソフトウェアを生成するとき、ＡＮＳＩ−ＣベースのソースコードもしくはホストＣＰＵ用のバイナリコードの制御点（Basic Blockの開始（Start）と終了（End））に時間情報をシミュレーションするためのコードが付加される。それ以外、基本的に元のコードの構成は変わらない。
【０００８】
このように、Ｔｉｍｅｄソフトウェアおよびハードウェアモデルを使ったシミュレーションにおけるＵｎ−Ｔｉｍｅｄソフトウェア（元のソースコード）からＴｉｍｅｄソフトウェアの生成方法に関して、既存の技術では元のソースコードに変更を加えることがない。
シミュレーション用に元のソースコードにサイクル数情報などが追加されるのみである。
【０００９】
しかし、上述したソースコードに変更を加えない方法であると、コードの書き方によってターゲット（Target）ＣＰＵのサイクル数を正確に表現できないケースがある。たとえば、ｉｆ文の判定条件が２つ以上などのケースである。
また、コンパイラのさまざまな最適化、具体的には、関数のinline展開、Loop Unroll、実行順番の変化に関しても正確に表現することができない。
その結果、シミュレーションの精度が落ち、ソフトやハードの評価に誤差が生じ、また、ブランチ（Branch）ヒット・ミス等、評価できない項目も出てくるという不利益がある。
【００１０】
本発明は、コンパイラの最適化に対応でき、情報収集用のコードの追加も可能となり、シミュレーション精度の向上を図ることができるデータ処理装置およびその方法、並びにプログラムを提供することにある。
【課題を解決するための手段】
【００１１】
本発明の第１の観点のデータ処理装置は、ターゲット処理装置およびオペレーティングシステム（ＯＳ）が搭載された半導体装置のハードウェアおよびソフトウェアを、生成したＴｉｍｅｄソフトウェアにより協調検証可能なホスト処理装置を有し、上記ホスト処理装置は、上記ターゲット処理装置のアセンブラを解析して時間に関する情報を計算する基本単位であるBasic Blockを認識し、当該Basic Blockを基準に上記協調検証用のＴｉｍｅｄソフトウェアを生成する。
【００１２】
好適には、上記ホスト処理装置は、アセンブラを解析し、サイクル数情報が反映されるように変更を加えたソースコードを生成する。
【００１３】
好適には、上記ホスト処理装置は、アセンブラからサイクル数情報が正確に使用可能となるように上位レベルのソースコードを生成する。
【００１４】
好適には、上記上位レベルはＣ言語であり、上記データ処理装置は、アセンブラファイルを読み込み、関数開始命令を認識すると、アセンブラ命令をＣ関数の定義に変換してＣファイルに出力し、Ｃファイルに時間情報を挿入し、新規のBasic Blockから処理を開始する。
【００１５】
好適には、上記データ処理装置は、アセンブラファイルを読み込み、時間情報を更新し、分岐開始／終了命令を認識すると、Ｃファイルに時間情報を挿入し、アセンブラ命令をＣ言語に変換してＣファイルに出力し、直前のBasic Blockの処理を終了し、新規のBasic Blockから処理を開始する。
【００１６】
好適には、上記データ処理装置は、アセンブラファイルを読み込み、時間情報を更新し、関数終了命令を認識すると、Ｃファイルに時間情報を挿入し、アセンブラ命令をＣ関数終了に変換してＣファイルに出力し、直前のBasic Blockの処理を終了する。
【００１７】
好適には、上記データ処理装置は、上記分岐開始／終了命令および上記関数終了命令を認識できない場合には、アセンブラ命令をＣ言語に変換し、上記アセンブラファイルの読み込み処理から繰り返す。
【００１８】
本発明の第２の観点のデータ処理方法は、ターゲット処理装置およびオペレーティングシステム（ＯＳ）が搭載された半導体装置のハードウェアおよびソフトウェアの協調検証に使用するＴｉｍｅｄソフトを生成するに際し、上記ターゲット処理装置のアセンブラを解析して時間に関する情報を計算する基本単位であるBasic Blockを認識し、当該Basic Blockを基準に上記協調検証用のＴｉｍｅｄソフトウェアを生成する。
【００１９】
本発明の第３の観点は、ターゲット処理装置およびオペレーティングシステム（ＯＳ）が搭載された半導体装置のハードウェアおよびソフトウェアの協調検証に使用するＴｉｍｅｄソフトを生成するに際し、上記ターゲット処理装置のアセンブラを解析して時間に関する情報を計算する基本単位であるBasic Blockを認識する処理と、当該Basic Blockを基準に上記協調検証用のＴｉｍｅｄソフトウェアを生成する処理とを含むデータ処理をコンピュータに実行させるプログラムである。
【００２０】
本発明によれば、ホスト処理装置が、ターゲット処理装置のアセンブラを解析して時間に関する情報を計算する基本単位であるBasic Block（制御点）を認識する。
そして、ホスト処理装置が、Basic Blockを基準に協調検証用のＴｉｍｅｄソフトウェアを生成する。
【発明の効果】
【００２１】
本発明によれば、コンパイラの最適化に対応でき、情報収集用のコードの追加も可能となり、シミュレーション精度の向上を図ることができる。
【発明を実施するための最良の形態】
【００２２】
以下、本発明の実施形態を図面に関連付けて説明する。
【００２３】
図１は、本発明の実施形態に係るデータ処理装置を採用したコンピュータシステムの構成例を示すブロック図である。
図２は、図１のコンピュータシステムの基本的な動作概要を示すフローチャートである。
【００２４】
コンピュータシステム１は、コンピュータ本体１０を有する。
コンピュータ本体１０は、図２のフローチャートの実装であるプログラムを実行できるホスト処理装置としての中央処理装置（ＣＰＵ）１１とそのプログラムやそのプログラムの一部がロードされている主記憶装置（ＲＡＭやＲＯＭ）１２とを含むＥＤＡ(Electronic Design Automation)装置として構成される。
【００２５】
なお、コンピュータ本体１０は、必要に応じてハードディスク装置等からなる外部記憶装置（ＨＤ）１３、ディスプレー等表示装置（ＤＰ）１４、マウス（Ｍ）１５ａやキーボード（Ｋ）１５ｂ等のユーザインタフェース１５を有するように構成することも可能である。
【００２６】
基本的に、ＣＰＵ１１はホストＣＰＵとして機能する。
ＣＰＵ１１は、検証対象のＳｏＣ(System on Chip)の半導体装置２０に搭載されているターゲット処理装置であるターゲットＣＰＵ３０用のアセンブラやバイナリからBasic Blockを認識し、制御点を挿入する(図２のステップＳＴ１)。
このように、ＣＰＵ１１は、ターゲットＣＰＵ３０用のアセンブラやバイナリ、必要に応じて元のソースコードからBasic Blockを認識する。
すなわち、ＣＰＵ１１は、アセンブラをベースにしてBasic Blockを認識し、必要に応じてソースコードの構成を変えたり、新たなソースコードを生成したりしてＴｉｍｅｄ ソフトウェアを生成する機能を有している。
本実施形態においては、ＣＰＵ１１は、時間情報だけではなく、シミュレーション用のコードのどこにその情報を挿入するかもアセンブラをベースに決める機能を有している。
【００２７】
「Basic Block」とは、時間に関する情報を計算する基本単位のことを示す。本実施形態に係る方法を使用すると、既存の技術よりも正確なシミュレーションが可能となる。また、既存の技術で正確に求めることのできない項目もきちんとできるようになる。
【００２８】
ＣＰＵ１１は、時間情報、キャッシュ（Cache）情報等、シミュレーションに必要なターゲットＣＰＵに関する情報を収集する（図２のステップＳＴ２）。
【００２９】
ＣＰＵ１１は、Basic Blockと制御点を基準にシミュレーション用のＴｉｍｅｄソフトウェアの生成を行う。具体的には、ＣＰＵ１１は、アセンブラの元のソースコードやバイナリの構成を必要に応じて修正する、もしくは、新たなコードを生成させる（図２のステップＳＴ３）。
【００３０】
このように、本実施形態に係るコンピュータ本体１０は、“アセンブラを解析し、サイクル数情報などが正確に反映されるように変更を加えたソースコードを生成する（吐き出す）”もしくは、“アセンブラから、サイクル数情報等が正確に使えるように上位レベル（Ｃ言語等）のソースコードを生成する（吐き出す）”。
このことによって、Ｕｎ−Ｔｉｍｅｄソフトウェア（元のソースコード）からＴｉｍｅｄソフトウェアを生成させる。
つまり、ソースコードだけでBasic Blockを決め、そこにサイクル情報を加える既存の方法ではなく、アセンブラ解析によってBasic Blockを決め、それに合わせたソースコードを生成する。
すなわち、本実施形態においては、アセンブラ等の比較的下位の言語によるモデルによる高精度性と、Ｃ言語等の上位言語によるモデルによる高速性とを、兼ね備えたシミュレーション（検証）モデル（ソフトウェアモデル）の作成を行う。
そして、コンピュータ本体１０は、生成したＴｉｍｅｄソフトウェアに基づいた所定のシミュレーション処理を行う。
【００３１】
本実施形態では、アセンブラを基準にＵｎ−ＴｉｍｅｄソフトウェアからＴｉｍｅｄソフトウェアを生成させる技術に特徴を有していることから、ここではこのシミュレーション処理についての具体的な説明は省略する。
ＥＤＡ装置としての本コンピュータシステム１を使用することにより、ソフトウェア（ＳＷ）／ハードウェア（ＨＷ）協調設計検証において、ｉｆ文条件分岐などが正確に表現できるようになり、既存の手法よりシミュレーション精度が向上する。
それだけではなく、ブランチ（Branch）ヒット・ミス等、既存の手法で測定できない項目も測定可能になる。コンパイラの最適化にも対応できる。
また、実際ターゲットＣＰＵ用のソフトウェアとハードウェアのモデルがあれば、テストベンチがなくてもシミュレーションが可能である。
【００３２】
以下に、本発明の特徴であるアセンブラ記述から時間精度付Ｃソースを生成するための具体的な処理について、図３に関連付けて説明する。
【００３３】
図３は、アセンブラ記述から時間精度付Ｃソースを生成するための処理手順を示すフローチャートである。
【００３４】
図３においては、以下のような表記を行っている。
「asmFile」はアセンブラが記述されているファイルを示す。
「ｃFile」は時間精度付Ｃソースを示す。
【００３５】
アセンブラ命令（asm命令）を次の３種類に分類している。
１．関数開始/終了定義する命令、
２．関数定義関連以外の分岐命令（BE, BNEなど）、
３．上記以外の一般の命令（ADD、SUBなど）。
【００３６】
また、サイクル数計算（CycleNum）にターゲットアーキテクチャ情報を使用する。
asmからCへの変換用のテーブル等は別途用意する（goto記述を使用する）。
「ＢＢ」はBasic Blockを意味する。
【００３７】
＜ステップＳＴ１１＞
ステップＳＴ１１においては、ＣＰＵ１１は、入力用asmFileと出力用cFileを開く。
そして、サイクル数計算の値を０とする。すなわち、CycleNum = ０とする。
【００３８】
＜ステップＳＴ１２＞
ステップＳＴ１２において、ＣＰＵ１１は、アセンブラファイルasmFileの一行を読み込む。
【００３９】
＜ステップＳＴ１３＞
ステップＳＴ１３において、ＣＰＵ１１は、アセンブラファイルasmFileが終了であるか否かを判定する。
ステップＳＴ１３において、アセンブラファイルasmFileが終了していないと判定すると、ステップＳＴ１４の処理に移行する。
【００４０】
＜ステップＳＴ１４＞
ステップＳＴ１４において、ＣＰＵ１１は、そのアセンブラファイルの情報がＣ変換やサイクル数計算に必要な情報である否かを判定する。
ＣＰＵ１１は、ステップＳＴ１４において、ラベル等のＣ変換やサイクル数計算に必要な情報ではないと判定すると、ステップＳＴ１２の処理に戻る。
ＣＰＵ１１は、ステップＳＴ１４において、Ｃ変換やサイクル数計算に必要な情報である判定すると、次のステップＳＴ１５の処理に移行する。
【００４１】
＜ステップＳＴ１５＞
ステップＳＴ１５において、ＣＰＵ１１は、関数開始命令であるか否かを判定する。
ステップＳＴ１５において、関数開始命令ではないと判定すると、ステップＳＴ１６の処理に移行する。
一方、ステップＳＴ１５において、関数開始命令であると判定すると、ステップＳＴ１７の処理に移行する。
【００４２】
＜ステップＳＴ１６＞
ステップＳＴ１６において、ＣＰＵ１１は、引数等関数定義に必要な情報を一時保存する。そして、CycleNumを更新し、ステップＳＴ１２の処理に戻る。
【００４３】
＜ステップＳＴ１７＞
ステップＳＴ１７において、ＣＰＵ１１は、アセンブル命令（asm命令）をＣ関数の定義に変換しＣファイルcFileに出力する。
さらに、ＣＰＵ１１は、ＣファイルcFileに時間情報Wait（CycleNum）を挿入する。そして、ＣＰＵ１１は、サイクル数計算の値を０とする。すなわち、CycleNum = ０としてサイクル数計算の値をクリアし、新規のBasic Block（BB）から開始する。
【００４４】
＜ステップＳＴ１８＞
ステップＳＴ１８において、ＣＰＵ１１は、アセンブラファイルasmFileの一行を読み込む。
【００４５】
＜ステップＳＴ１９＞
ステップＳＴ１９において、ＣＰＵ１１は、そのアセンブラファイルの情報がＣ変換やサイクル数計算に必要な情報である否かを判定する。
ＣＰＵ１１は、ステップＳＴ１９において、ラベル等のＣ変換やサイクル数計算に必要な情報でないと判定すると、ステップＳＴ１８の処理に戻る。
ＣＰＵ１１は、ステップＳＴ１９において、Ｃ変換やサイクル数計算に必要な情報である判定すると、次のステップＳＴ２０の処理に移行する。
【００４６】
＜ステップＳＴ２０＞
ステップＳＴ２０において、サイクル数計算の値（CycleNum）を更新する。
【００４７】
＜ステップＳＴ２１＞
ステップＳＴ２１において、ＣＰＵ１１は、分岐開始/終了命令であるか否かを判定する。
ＣＰＵ１１は、ステップＳＴ２１において、分岐開始/終了命令であると判定すると、ステップＳＴ２２の処理に移行する。
ＣＰＵ１１は、ステップＳＴ２１において、分岐開始/終了命令ではないと判定すると、ステップＳＴ２３の処理に移行する。
【００４８】
＜ステップＳＴ２２＞
ステップＳＴ２２において、ＣＰＵ１１は、ＣファイルcFileに時間情報Wait（CycleNum）を挿入する。
ＣＰＵ１１は、アセンブル命令（asm命令）をＣ言語に変換しＣファイルcFileに出力する。
そして、ＣＰＵ１１は、サイクル数計算の値を０とする。すなわち、CycleNum = ０としてサイクル数計算の値をクリアし、直前のBasic Block（BB）を終了し、新規のBasic Block（BB）から開始する。
【００４９】
＜ステップＳＴ２３＞
ステップＳＴ２３において、ＣＰＵ１１は、関数終了命令であるか否かを判定する。
ＣＰＵ１１は、ステップＳＴ２３において、関数終了命令でないと判定すると、ステップＳＴ２４の処理に移行する。
ＣＰＵ１１は、ステップＳＴ２３において、関数終了命令であると判定すると、ステップＳＴ２５の処理に移行する。
【００５０】
＜ステップＳＴ２４＞
ステップＳＴ２４において、ＣＰＵ１１は、アセンブル命令（asm命令）をＣ言語に変換しＣファイルcFileに出力し、ステップＳＴ１８の処理に戻る。
【００５１】
＜ステップＳＴ２５＞
ステップＳＴ２５において、ＣＰＵ１１は、ＣファイルcFileに時間情報Wait（CycleNum）を挿入する。
ＣＰＵ１１は、アセンブル命令（asm命令）をＣ関数終了に変換しＣファイルcFileに出力する。
そして、ＣＰＵ１１は、サイクル数計算の値を０とする。すなわち、CycleNum = ０としてサイクル数計算の値をクリアし、直前のBasic Block（BB）を終了し、ステップＳＴ１２の処理に戻る。
【００５２】
＜ステップＳＴ２６＞
なお、ステップＳＴ１３において、アセンブラファイルasmFileが終了であると判定すると、ステップＳＴ２６の処理に移行する。
そして、ステップＳＴ２６において、ＣＰＵ１１は、アセンブラファイルasmFileとＣファイルcFileを閉じる。
【００５３】
このようにして生成される検証モデル（ソフトウェアモデル）を用いて、ホストＣＰＵ１１は、ターゲットＣＰＵおよび一つのオペレーティングシステム（ＯＳ）が搭載された半導体装置のハードウェアおよびソフトウェアを協調検証することが可能となる。
【００５４】
この協調検証においては、たとえば次の第１〜第５のステップの処理を含む。
第１のステップでは、検証モデル（ソフトウェアモデル）としてのＣベース言語記述のＴｉｍｅｄソフトウェア部品を入力してコンパイルし、このコンパイルされたＴｉｍｕｅｄソフトウェア部品およびコンパイルされたハードウェア部品をリンクする。
第２のステップでは、テストベンチを入力してコンパイルする。
第３のステップでは、第１のステップにより処理された検証モデルと第２のステップにより処理されたテストベンチとをリンクする。
第４のステップでは、第３のステップで生成された実行プログラムに基づいてシミュレーションを実行する。
第５のステップでは、第４のステップによるシミュレーションの結果を出力する。
なお、前述したように、実際ターゲットＣＰＵ用のソフトウェアとハードウェアのモデルがあれば、テストベンチがなくてもシミュレーションが可能である。
【００５５】
以上説明したように、本実施形態によれば、ＣＰＵ１１は、“アセンブラを解析し、サイクル数情報などが正確に反映されるように変更を加えたソースコードを生成する”もしくは、“アセンブラから、サイクル数情報等が正確に使えるように上位レベル（Ｃ言語等）のソースコードを生成する”。
このことによって、ＣＰＵ１１は、Ｕｎ−Ｔｉｍｅｄソフトウェア（元のソースコード）からＴｉｍｅｄソフトウェアを生成させる。
つまり、ＣＰＵ１１は、ソースコードだけでBasic Blockを決め、そこにサイクル情報を加える既存の方法ではなく、アセンブラ解析によってBasic Blockを決め、それに合わせたソースコードを生成し出力することから以下に示し、かつ、図４に既存方法と比較して示す効果を得ることができる。
【００５６】
図４（Ａ）〜（Ｆ）は、本実施形態に係る方法の効果を、既存方法と比較して示す図である。
【００５７】
図４（Ａ）は、元のソースコードを示す、この例では、ｉf文等条件分岐において２つ以上の判定条件があるソースコードを示している。
図４（Ｂ）は、アセンブラによる記述を示している。
図４（Ｃ）は、サイクル数情報を示している。
図４（Ｄ）は、既存方法を示している。
図４（Ｅ）は、本実施形態の係り第１の方法による記述を示している。この第１の方法では、条件によって２つに分岐するｉｆ〜ｅｌｓｅのステートメントを含む。
図４（Ｆ）は、本実施形態の係り第２の方法による記述を示している。この第２の方法では、ｇｏｔｏ識別子を用いた例を示している。
【００５８】
（１）既存の技術では、図４（Ａ）に示すように、Ｉf文等条件分岐において２つ以上の判定条件がある場合、正確なサイクル情報を得ることができない。たとえば図４（Ｄ）に示すように、ｔｉ（ｉ＝１，２、・・・５）の値をどんなに変えても実際のサイクル数を求めることができない。
これに対して、本実施形態によれば、正確なサイクル情報を得ることができる。
（２）既存技術では、関数のinline展開、Loop Unroll 、実行順番の変更等、コンパイラの最適化に対応できないが、本実施形態によれば、コンパイラの最適化に対応できる。
（３）ソースコードに変更を加える、もしくは、新しいソースコードを吐き出すことから、Branchヒット・ミス等、チューニングに必要な情報収集用のコードの追加も可能となる。
（４）しかも、上位言語（C言語Based等）からのNativeシミュレーションになるので、シミュレーション速度は低下しない。
【００５９】
なお、以上詳細に説明した方法は、上記手順に応じたプログラムとして形成し、ＣＰＵ等のコンピュータで実行するように構成することも可能である。
また、このようなプログラムは、半導体メモリ、磁気ディスク、光ディスク、フロッピー（登録商標）ディスク等の記録媒体、この記録媒体をセットしたコンピュータによりアクセスし上記プログラムを実行するように構成可能である。
【図面の簡単な説明】
【００６０】
【図１】本発明の実施形態に係るデータ処理装置を採用したコンピュータシステムの構成例を示すブロック図である。
【図２】図１のコンピュータシステムの基本的な動作概要を示すフローチャートである。
【図３】アセンブラ記述から時間精度付Ｃソースを生成するための処理手順を示すフローチャートである。
【図４】本実施形態に係る方法の効果を、既存方法と比較して示す図である。
【符号の説明】
【００６１】
１・・・コンピュータシステム、１０・・・コンピュータ本体、１１・・・中央処理装置（ＣＰＵ）、１２・・・主記憶装置、１３・・・外部記憶装置（ＨＤ）、１４・・・表示装置（ＤＰ）、１５・・・ユーザインタフェース、１５ａ・・・マウス（Ｍ）、１５ｂ・・・キーボード（Ｋ）、２０・・・半導体装置、３０・・・ターゲットＣＰＵ。
【図１】
2010003123.tif 000003
【図２】
2010003123.tif 000004
【図３】
2010003123.tif 000005
【図４】
2010003123.tif 000006