JP5151722B2 - データ処理装置およびその方法、並びにプログラム - Google Patents

データ処理装置およびその方法、並びにプログラム Download PDF

Info

Publication number
JP5151722B2
JP5151722B2 JP2008161516A JP2008161516A JP5151722B2 JP 5151722 B2 JP5151722 B2 JP 5151722B2 JP 2008161516 A JP2008161516 A JP 2008161516A JP 2008161516 A JP2008161516 A JP 2008161516A JP 5151722 B2 JP5151722 B2 JP 5151722B2
Authority
JP
Japan
Prior art keywords
assembler
file
basic block
instruction
software
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.)
Expired - Fee Related
Application number
JP2008161516A
Other languages
English (en)
Other versions
JP2010003123A (ja
Inventor
エムデー アシュファクッザマン カン
安志 福田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2008161516A priority Critical patent/JP5151722B2/ja
Priority to EP09251597A priority patent/EP2136293A1/en
Priority to US12/487,799 priority patent/US8370797B2/en
Publication of JP2010003123A publication Critical patent/JP2010003123A/ja
Application granted granted Critical
Publication of JP5151722B2 publication Critical patent/JP5151722B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、半導体装置に搭載されるハードウェア(HW)およびソフトウェア(SW)を協調検証等に適用可能なデータ処理装置およびその方法、並びにプログラムに関するものである。
ホストCPUを使用して、一つのターゲットCPUおよび一つのオペレーティングシステム(OS)が搭載された半導体装置のハードウェアおよびソフトウェアを協調検証する方法が提案されている(たとえば特許文献1参照)。
この方法は、たとえば次の第1〜第5のステップを含む。
第1のステップでは、検証モデル(ソフトウェアモデル)としてのCベース言語記述のTimedソフトウェア部品を入力してコンパイルし、このコンパイルされたTimedソフトウェア部品およびコンパイルされたハードウェア部品をリンクする。
第2のステップでは、テストベンチを入力してコンパイルする。
第3のステップでは、第1のステップにより処理された検証モデルと第2のステップにより処理されたテストベンチとをリンクする。
第4のステップでは、第3のステップで生成された実行プログラムに基づいてシミュレーションを実行する。
第5のステップでは、第4のステップによるシミュレーションの結果を出力する。
また、第1のステップとしては、以下の2通りの処理が採用可能である。
第1は、検証モデルとしてのホストCPU用バイナリコードのTimedソフトウェア部品を入力し、検証モデルとしてのCベース言語記述のハードウェア部品を入力してコンパイルし、この入力されたTimedソフトウェア部品およびコンパイルされたハードウェア部品をリンクする、第1のステップとしての処理である。
第2は、検証モデルとしてのCベース言語記述のTimedソフトウェア部品を入力してコンパイルし、検証モデルとしてのホストCPU用バイナリコードのTimedソフトウェア部品を入力し、検証モデルとしてのCベース言語記述のハードウェア部品を入力してコンパイルし、このコンパイルされまたは入力されたTimedソフトウェア部品およびコンパイルされたハードウェア部品をリンクする、第1のステップとしての処理である。
そして、特許文献1に開示された方法において、Un−Timedソフトウェア(元のソースコード)からTimedソフトウェア(シミュレーション用のソースコード)を生成するとき、ANSI−Cベースのソースコード、もしくはホストCPU用のバイナリコードを基準にベイシックブロック(Basic Block)を認識している。
たとえばUn−Timedソフトウェアとしては元のソースコード、Timedソフトウェアとしてはシミュレーション用のソースコードが例示される。
特開2004−234528号公報
上述した方法おいては、Un-TimedソフトウェアからTimedソフトウェアを生成するとき、ANSI−CベースのソースコードもしくはホストCPU用のバイナリコードの制御点(Basic Blockの開始(Start)と終了(End))に時間情報をシミュレーションするためのコードが付加される。それ以外、基本的に元のコードの構成は変わらない。
このように、Timedソフトウェアおよびハードウェアモデルを使ったシミュレーションにおけるUn−Timedソフトウェア(元のソースコード)からTimedソフトウェアの生成方法に関して、既存の技術では元のソースコードに変更を加えることがない。
シミュレーション用に元のソースコードにサイクル数情報などが追加されるのみである。
しかし、上述したソースコードに変更を加えない方法であると、コードの書き方によってターゲット(Target)CPUのサイクル数を正確に表現できないケースがある。たとえば、if文の判定条件が2つ以上などのケースである。
また、コンパイラのさまざまな最適化、具体的には、関数のinline展開、Loop Unroll、実行順番の変化に関しても正確に表現することができない。
その結果、シミュレーションの精度が落ち、ソフトやハードの評価に誤差が生じ、また、ブランチ(Branch)ヒット・ミス等、評価できない項目も出てくるという不利益がある。
本発明は、コンパイラの最適化に対応でき、情報収集用のコードの追加も可能となり、シミュレーション精度の向上を図ることができるデータ処理装置およびその方法、並びにプログラムを提供することにある。
本発明の第1の観点のデータ処理装置は、ターゲット処理装置およびオペレーティングシステム(OS)が搭載された半導体装置のハードウェアおよびソフトウェアを、生成したTimedソフトウェアにより協調検証可能なホスト処理装置を有し、上記ホスト処理装置は、上記ターゲット処理装置のアセンブラを解析して時間に関する情報を計算する基本単位であるBasic Blockを認識し、当該Basic Blockを基準に上記協調検証用のTimedソフトウェアを生成する生成機能を含み、上記生成機能は、アセンブラを解析し、サイクル数情報が反映されるように変更を加えたソースコードを生成する機能と、アセンブラからサイクル数情報が正確に使用可能となるように上位レベルのソースコードを生成する機能と、を含み、上記上位レベルはC言語であり、アセンブラファイルを読み込み、時間情報を更新し、関数終了命令を認識すると、Cファイルに時間情報を挿入し、アセンブラ命令をC関数終了に変換してCファイルに出力し、直前のBasic Blockの処理を終了し、新規のBasic Blockから処理を開始し、上記関数終了命令を認識できない場合には、アセンブラ命令をC言語に変換し、上記アセンブラファイルの読み込み処理から繰り返す
本発明の第2の観点のデータ処理方法は、ホスト処理装置が、ターゲット処理装置およびオペレーティングシステム(OS)が搭載された半導体装置のハードウェアおよびソフトウェアの協調検証に使用するTimedソフトを生成するに際し、上記ホスト処理装置は、上記ターゲット処理装置のアセンブラを解析して時間に関する情報を計算する基本単位であるBasic Blockを認識し、当該Basic Blockを基準に上記協調検証用のTimedソフトウェアを生成する生成ステップを含み、上記生成ステップにおいては、アセンブラを解析し、サイクル数情報が反映されるように変更を加えたソースコードを生成するステップと、アセンブラからサイクル数情報が正確に使用可能となるように上位レベルのソースコードを生成するステップと、を含み、上記上位レベルはC言語であり、上記ホスト処理装置は、アセンブラファイルを読み込み、時間情報を更新し、関数終了命令を認識すると、Cファイルに時間情報を挿入し、アセンブラ命令をC関数終了に変換してCファイルに出力し、直前のBasic Blockの処理を終了し、新規のBasic Blockから処理を開始し、上記関数終了命令を認識できない場合には、アセンブラ命令をC言語に変換し、上記アセンブラファイルの読み込み処理から繰り返す
本発明の第3の観点は、ターゲット処理装置およびオペレーティングシステム(OS)が搭載された半導体装置のハードウェアおよびソフトウェアの協調検証に使用するTimedソフトを生成するに際し、上記ターゲット処理装置のアセンブラを解析して時間に関する情報を計算する基本単位であるBasic Blockを認識し、当該Basic Blockを基準に上記協調検証用のTimedソフトウェアを生成する生成処理を含み、上記生成処理においては、アセンブラを解析し、サイクル数情報が反映されるように変更を加えたソースコードを生成する処理と、アセンブラからサイクル数情報が正確に使用可能となるように上位レベルのソースコードを生成する処理と、を含み、上記上位レベルはC言語であり、アセンブラファイルを読み込み、時間情報を更新し、関数終了命令を認識すると、Cファイルに時間情報を挿入し、アセンブラ命令をC関数終了に変換してCファイルに出力し、直前のBasic Blockの処理を終了し、新規のBasic Blockから処理を開始し、上記関数終了命令を認識できない場合には、アセンブラ命令をC言語に変換し、上記アセンブラファイルの読み込み処理から繰り返すデータ処理をコンピュータに実行させるプログラムである。
本発明によれば、ホスト処理装置が、ターゲット処理装置のアセンブラを解析して時間に関する情報を計算する基本単位であるBasic Block(制御点)を認識する。
そして、ホスト処理装置が、Basic Blockを基準に協調検証用のTimedソフトウェアを生成する。
本発明によれば、コンパイラの最適化に対応でき、情報収集用のコードの追加も可能となり、シミュレーション精度の向上を図ることができる。
以下、本発明の実施形態を図面に関連付けて説明する。
図1は、本発明の実施形態に係るデータ処理装置を採用したコンピュータシステムの構成例を示すブロック図である。
図2は、図1のコンピュータシステムの基本的な動作概要を示すフローチャートである。
コンピュータシステム1は、コンピュータ本体10を有する。
コンピュータ本体10は、図2のフローチャートの実装であるプログラムを実行できるホスト処理装置としての中央処理装置(CPU)11とそのプログラムやそのプログラムの一部がロードされている主記憶装置(RAMやROM)12とを含むEDA(Electronic Design Automation)装置として構成される。
なお、コンピュータ本体10は、必要に応じてハードディスク装置等からなる外部記憶装置(HD)13、ディスプレー等表示装置(DP)14、マウス(M)15aやキーボード(K)15b等のユーザインタフェース15を有するように構成することも可能である。
基本的に、CPU11はホストCPUとして機能する。
CPU11は、検証対象のSoC(System on Chip)の半導体装置20に搭載されているターゲット処理装置であるターゲットCPU30用のアセンブラやバイナリからBasic Blockを認識し、制御点を挿入する(図2のステップST1)。
このように、CPU11は、ターゲットCPU30用のアセンブラやバイナリ、必要に応じて元のソースコードからBasic Blockを認識する。
すなわち、CPU11は、アセンブラをベースにしてBasic Blockを認識し、必要に応じてソースコードの構成を変えたり、新たなソースコードを生成したりしてTimed ソフトウェアを生成する機能を有している。
本実施形態においては、CPU11は、時間情報だけではなく、シミュレーション用のコードのどこにその情報を挿入するかもアセンブラをベースに決める機能を有している。
「Basic Block」とは、時間に関する情報を計算する基本単位のことを示す。本実施形態に係る方法を使用すると、既存の技術よりも正確なシミュレーションが可能となる。また、既存の技術で正確に求めることのできない項目もきちんとできるようになる。
CPU11は、時間情報、キャッシュ(Cache)情報等、シミュレーションに必要なターゲットCPUに関する情報を収集する(図2のステップST2)。
CPU11は、Basic Blockと制御点を基準にシミュレーション用のTimedソフトウェアの生成を行う。具体的には、CPU11は、アセンブラの元のソースコードやバイナリの構成を必要に応じて修正する、もしくは、新たなコードを生成させる(図2のステップST3)。
このように、本実施形態に係るコンピュータ本体10は、“アセンブラを解析し、サイクル数情報などが正確に反映されるように変更を加えたソースコードを生成する(吐き出す)”もしくは、“アセンブラから、サイクル数情報等が正確に使えるように上位レベル(C言語等)のソースコードを生成する(吐き出す)”。
このことによって、Un−Timedソフトウェア(元のソースコード)からTimedソフトウェアを生成させる。
つまり、ソースコードだけでBasic Blockを決め、そこにサイクル情報を加える既存の方法ではなく、アセンブラ解析によってBasic Blockを決め、それに合わせたソースコードを生成する。
すなわち、本実施形態においては、アセンブラ等の比較的下位の言語によるモデルによる高精度性と、C言語等の上位言語によるモデルによる高速性とを、兼ね備えたシミュレーション(検証)モデル(ソフトウェアモデル)の作成を行う。
そして、コンピュータ本体10は、生成したTimedソフトウェアに基づいた所定のシミュレーション処理を行う。
本実施形態では、アセンブラを基準にUn−TimedソフトウェアからTimedソフトウェアを生成させる技術に特徴を有していることから、ここではこのシミュレーション処理についての具体的な説明は省略する。
EDA装置としての本コンピュータシステム1を使用することにより、ソフトウェア(SW)/ハードウェア(HW)協調設計検証において、if文条件分岐などが正確に表現できるようになり、既存の手法よりシミュレーション精度が向上する。
それだけではなく、ブランチ(Branch)ヒット・ミス等、既存の手法で測定できない項目も測定可能になる。コンパイラの最適化にも対応できる。
また、実際ターゲットCPU用のソフトウェアとハードウェアのモデルがあれば、テストベンチがなくてもシミュレーションが可能である。
以下に、本発明の特徴であるアセンブラ記述から時間精度付Cソースを生成するための具体的な処理について、図3に関連付けて説明する。
図3は、アセンブラ記述から時間精度付Cソースを生成するための処理手順を示すフローチャートである。
図3においては、以下のような表記を行っている。
「asmFile」はアセンブラが記述されているファイルを示す。
「cFile」は時間精度付Cソースを示す。
アセンブラ命令(asm命令)を次の3種類に分類している。
1.関数開始/終了定義する命令、
2.関数定義関連以外の分岐命令(BE, BNEなど)、
3.上記以外の一般の命令(ADD、SUBなど)。
また、サイクル数計算(CycleNum)にターゲットアーキテクチャ情報を使用する。
asmからCへの変換用のテーブル等は別途用意する(goto記述を使用する)。
「BB」はBasic Blockを意味する。
<ステップST11>
ステップST11においては、CPU11は、入力用asmFileと出力用cFileを開く。
そして、サイクル数計算の値を0とする。すなわち、CycleNum = 0とする。
<ステップST12>
ステップST12において、CPU11は、アセンブラファイルasmFileの一行を読み込む。
<ステップST13>
ステップST13において、CPU11は、アセンブラファイルasmFileが終了であるか否かを判定する。
ステップST13において、アセンブラファイルasmFileが終了していないと判定すると、ステップST14の処理に移行する。
<ステップST14>
ステップST14において、CPU11は、そのアセンブラファイルの情報がC変換やサイクル数計算に必要な情報である否かを判定する。
CPU11は、ステップST14において、ラベル等のC変換やサイクル数計算に必要な情報ではないと判定すると、ステップST12の処理に戻る。
CPU11は、ステップST14において、C変換やサイクル数計算に必要な情報である判定すると、次のステップST15の処理に移行する。
<ステップST15>
ステップST15において、CPU11は、関数開始命令であるか否かを判定する。
ステップST15において、関数開始命令ではないと判定すると、ステップST16の処理に移行する。
一方、ステップST15において、関数開始命令であると判定すると、ステップST17の処理に移行する。
<ステップST16>
ステップST16において、CPU11は、引数等関数定義に必要な情報を一時保存する。そして、CycleNumを更新し、ステップST12の処理に戻る。
<ステップST17>
ステップST17において、CPU11は、アセンブル命令(asm命令)をC関数の定義に変換しCファイルcFileに出力する。
さらに、CPU11は、CファイルcFileに時間情報Wait(CycleNum)を挿入する。そして、CPU11は、サイクル数計算の値を0とする。すなわち、CycleNum = 0としてサイクル数計算の値をクリアし、新規のBasic Block(BB)から開始する。
<ステップST18>
ステップST18において、CPU11は、アセンブラファイルasmFileの一行を読み込む。
<ステップST19>
ステップST19において、CPU11は、そのアセンブラファイルの情報がC変換やサイクル数計算に必要な情報である否かを判定する。
CPU11は、ステップST19において、ラベル等のC変換やサイクル数計算に必要な情報でないと判定すると、ステップST18の処理に戻る。
CPU11は、ステップST19において、C変換やサイクル数計算に必要な情報である判定すると、次のステップST20の処理に移行する。
<ステップST20>
ステップST20において、サイクル数計算の値(CycleNum)を更新する。
<ステップST21>
ステップST21において、CPU11は、分岐開始/終了命令であるか否かを判定する。
CPU11は、ステップST21において、分岐開始/終了命令であると判定すると、ステップST22の処理に移行する。
CPU11は、ステップST21において、分岐開始/終了命令ではないと判定すると、ステップST23の処理に移行する。
<ステップST22>
ステップST22において、CPU11は、CファイルcFileに時間情報Wait(CycleNum)を挿入する。
CPU11は、アセンブル命令(asm命令)をC言語に変換しCファイルcFileに出力する。
そして、CPU11は、サイクル数計算の値を0とする。すなわち、CycleNum = 0としてサイクル数計算の値をクリアし、直前のBasic Block(BB)を終了し、新規のBasic Block(BB)から開始する。
<ステップST23>
ステップST23において、CPU11は、関数終了命令であるか否かを判定する。
CPU11は、ステップST23において、関数終了命令でないと判定すると、ステップST24の処理に移行する。
CPU11は、ステップST23において、関数終了命令であると判定すると、ステップST25の処理に移行する。
<ステップST24>
ステップST24において、CPU11は、アセンブル命令(asm命令)をC言語に変換しCファイルcFileに出力し、ステップST18の処理に戻る。
<ステップST25>
ステップST25において、CPU11は、CファイルcFileに時間情報Wait(CycleNum)を挿入する。
CPU11は、アセンブル命令(asm命令)をC関数終了に変換しCファイルcFileに出力する。
そして、CPU11は、サイクル数計算の値を0とする。すなわち、CycleNum = 0としてサイクル数計算の値をクリアし、直前のBasic Block(BB)を終了し、ステップST12の処理に戻る。
<ステップST26>
なお、ステップST13において、アセンブラファイルasmFileが終了であると判定すると、ステップST26の処理に移行する。
そして、ステップST26において、CPU11は、アセンブラファイルasmFileとCファイルcFileを閉じる。
このようにして生成される検証モデル(ソフトウェアモデル)を用いて、ホストCPU11は、ターゲットCPUおよび一つのオペレーティングシステム(OS)が搭載された半導体装置のハードウェアおよびソフトウェアを協調検証することが可能となる。
この協調検証においては、たとえば次の第1〜第5のステップの処理を含む。
第1のステップでは、検証モデル(ソフトウェアモデル)としてのCベース言語記述のTimedソフトウェア部品を入力してコンパイルし、このコンパイルされたTimuedソフトウェア部品およびコンパイルされたハードウェア部品をリンクする。
第2のステップでは、テストベンチを入力してコンパイルする。
第3のステップでは、第1のステップにより処理された検証モデルと第2のステップにより処理されたテストベンチとをリンクする。
第4のステップでは、第3のステップで生成された実行プログラムに基づいてシミュレーションを実行する。
第5のステップでは、第4のステップによるシミュレーションの結果を出力する。
なお、前述したように、実際ターゲットCPU用のソフトウェアとハードウェアのモデルがあれば、テストベンチがなくてもシミュレーションが可能である。
以上説明したように、本実施形態によれば、CPU11は、“アセンブラを解析し、サイクル数情報などが正確に反映されるように変更を加えたソースコードを生成する”もしくは、“アセンブラから、サイクル数情報等が正確に使えるように上位レベル(C言語等)のソースコードを生成する”。
このことによって、CPU11は、Un−Timedソフトウェア(元のソースコード)からTimedソフトウェアを生成させる。
つまり、CPU11は、ソースコードだけでBasic Blockを決め、そこにサイクル情報を加える既存の方法ではなく、アセンブラ解析によってBasic Blockを決め、それに合わせたソースコードを生成し出力することから以下に示し、かつ、図4に既存方法と比較して示す効果を得ることができる。
図4(A)〜(F)は、本実施形態に係る方法の効果を、既存方法と比較して示す図である。
図4(A)は、元のソースコードを示す、この例では、if文等条件分岐において2つ以上の判定条件があるソースコードを示している。
図4(B)は、アセンブラによる記述を示している。
図4(C)は、サイクル数情報を示している。
図4(D)は、既存方法を示している。
図4(E)は、本実施形態の係り第1の方法による記述を示している。この第1の方法では、条件によって2つに分岐するif〜elseのステートメントを含む。
図4(F)は、本実施形態の係り第2の方法による記述を示している。この第2の方法では、goto識別子を用いた例を示している。
(1)既存の技術では、図4(A)に示すように、If文等条件分岐において2つ以上の判定条件がある場合、正確なサイクル情報を得ることができない。たとえば図4(D)に示すように、ti(i=1,2、・・・5)の値をどんなに変えても実際のサイクル数を求めることができない。
これに対して、本実施形態によれば、正確なサイクル情報を得ることができる。
(2)既存技術では、関数のinline展開、Loop Unroll 、実行順番の変更等、コンパイラの最適化に対応できないが、本実施形態によれば、コンパイラの最適化に対応できる。
(3)ソースコードに変更を加える、もしくは、新しいソースコードを吐き出すことから、Branchヒット・ミス等、チューニングに必要な情報収集用のコードの追加も可能となる。
(4)しかも、上位言語(C言語Based等)からのNativeシミュレーションになるので、シミュレーション速度は低下しない。
なお、以上詳細に説明した方法は、上記手順に応じたプログラムとして形成し、CPU等のコンピュータで実行するように構成することも可能である。
また、このようなプログラムは、半導体メモリ、磁気ディスク、光ディスク、フロッピー(登録商標)ディスク等の記録媒体、この記録媒体をセットしたコンピュータによりアクセスし上記プログラムを実行するように構成可能である。
本発明の実施形態に係るデータ処理装置を採用したコンピュータシステムの構成例を示すブロック図である。 図1のコンピュータシステムの基本的な動作概要を示すフローチャートである。 アセンブラ記述から時間精度付Cソースを生成するための処理手順を示すフローチャートである。 本実施形態に係る方法の効果を、既存方法と比較して示す図である。
符号の説明
1・・・コンピュータシステム、10・・・コンピュータ本体、11・・・中央処理装置(CPU)、12・・・主記憶装置、13・・・外部記憶装置(HD)、14・・・表示装置(DP)、15・・・ユーザインタフェース、15a・・・マウス(M)、15b・・・キーボード(K)、20・・・半導体装置、30・・・ターゲットCPU。

Claims (3)

  1. ターゲット処理装置およびオペレーティングシステム(OS)が搭載された半導体装置のハードウェアおよびソフトウェアを、生成したTimedソフトウェアにより協調検証可能なホスト処理装置を有し、
    上記ホスト処理装置は、
    上記ターゲット処理装置のアセンブラを解析して時間に関する情報を計算する基本単位であるBasic Blockを認識し、当該Basic Blockを基準に上記協調検証用のTimedソフトウェアを生成する生成機能を含み、
    上記生成機能は、
    アセンブラを解析し、サイクル数情報が反映されるように変更を加えたソースコードを生成する機能と、
    アセンブラからサイクル数情報が正確に使用可能となるように上位レベルのソースコードを生成する機能と、を含み、
    上記上位レベルはC言語であり、
    アセンブラファイルを読み込み、時間情報を更新し、関数終了命令を認識すると、Cファイルに時間情報を挿入し、アセンブラ命令をC関数終了に変換してCファイルに出力し、直前のBasic Blockの処理を終了し、新規のBasic Blockから処理を開始し、
    上記関数終了命令を認識できない場合には、アセンブラ命令をC言語に変換し、上記アセンブラファイルの読み込み処理から繰り返す
    データ処理装置。
  2. ホスト処理装置が、ターゲット処理装置およびオペレーティングシステム(OS)が搭載された半導体装置のハードウェアおよびソフトウェアの協調検証に使用するTimedソフトを生成するに際し、
    上記ホスト処理装置は、
    上記ターゲット処理装置のアセンブラを解析して時間に関する情報を計算する基本単位であるBasic Blockを認識し、当該Basic Blockを基準に上記協調検証用のTimedソフトウェアを生成する生成ステップを含み、
    上記生成ステップにおいては、
    アセンブラを解析し、サイクル数情報が反映されるように変更を加えたソースコードを生成するステップと、
    アセンブラからサイクル数情報が正確に使用可能となるように上位レベルのソースコードを生成するステップと、を含み、
    上記上位レベルはC言語であり、
    上記ホスト処理装置は、
    アセンブラファイルを読み込み、時間情報を更新し、関数終了命令を認識すると、Cファイルに時間情報を挿入し、アセンブラ命令をC関数終了に変換してCファイルに出力し、直前のBasic Blockの処理を終了し、新規のBasic Blockから処理を開始し、
    上記関数終了命令を認識できない場合には、アセンブラ命令をC言語に変換し、上記アセンブラファイルの読み込み処理から繰り返す
    データ処理方法。
  3. ターゲット処理装置およびオペレーティングシステム(OS)が搭載された半導体装置のハードウェアおよびソフトウェアの協調検証に使用するTimedソフトを生成するに際し、
    上記ターゲット処理装置のアセンブラを解析して時間に関する情報を計算する基本単位であるBasic Blockを認識し、当該Basic Blockを基準に上記協調検証用のTimedソフトウェアを生成する生成処理を含み、
    上記生成処理においては、
    アセンブラを解析し、サイクル数情報が反映されるように変更を加えたソースコードを生成する処理と、
    アセンブラからサイクル数情報が正確に使用可能となるように上位レベルのソースコードを生成する処理と、を含み、
    上記上位レベルはC言語であり、
    アセンブラファイルを読み込み、時間情報を更新し、関数終了命令を認識すると、Cファイルに時間情報を挿入し、アセンブラ命令をC関数終了に変換してCファイルに出力し、直前のBasic Blockの処理を終了し、新規のBasic Blockから処理を開始し、
    上記関数終了命令を認識できない場合には、アセンブラ命令をC言語に変換し、上記アセンブラファイルの読み込み処理から繰り返す
    データ処理をコンピュータに実行させるプログラム。
JP2008161516A 2008-06-20 2008-06-20 データ処理装置およびその方法、並びにプログラム Expired - Fee Related JP5151722B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2008161516A JP5151722B2 (ja) 2008-06-20 2008-06-20 データ処理装置およびその方法、並びにプログラム
EP09251597A EP2136293A1 (en) 2008-06-20 2009-06-18 Data processing apparatus, method therefor, and computer
US12/487,799 US8370797B2 (en) 2008-06-20 2009-06-19 Data processing apparatus, method therefor, and computer program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008161516A JP5151722B2 (ja) 2008-06-20 2008-06-20 データ処理装置およびその方法、並びにプログラム

Publications (2)

Publication Number Publication Date
JP2010003123A JP2010003123A (ja) 2010-01-07
JP5151722B2 true JP5151722B2 (ja) 2013-02-27

Family

ID=41128267

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008161516A Expired - Fee Related JP5151722B2 (ja) 2008-06-20 2008-06-20 データ処理装置およびその方法、並びにプログラム

Country Status (3)

Country Link
US (1) US8370797B2 (ja)
EP (1) EP2136293A1 (ja)
JP (1) JP5151722B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130088285A (ko) * 2012-01-31 2013-08-08 삼성전자주식회사 데이터 처리 시스템 및 그 시스템에서 데이터 시뮬레이션 방법
JP6474055B2 (ja) * 2014-08-29 2019-02-27 キヤノン株式会社 情報処理装置及びその制御方法
US11960858B2 (en) * 2019-08-29 2024-04-16 Siemens Aktiengesellschaft Performance based system configuration as preprocessing for system peformance simulation

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4536840A (en) * 1982-09-30 1985-08-20 Ronald Borta Autogrammer
US5287511A (en) * 1988-07-11 1994-02-15 Star Semiconductor Corporation Architectures and methods for dividing processing tasks into tasks for a programmable real time signal processor and tasks for a decision making microprocessor interfacing therewith
US5842033A (en) * 1992-06-30 1998-11-24 Discovision Associates Padding apparatus for passing an arbitrary number of bits through a buffer in a pipeline system
US6091897A (en) * 1996-01-29 2000-07-18 Digital Equipment Corporation Fast translation and execution of a computer program on a non-native architecture by use of background translator
US5854924A (en) * 1996-08-08 1998-12-29 Globetrotter Software, Inc. Static debugging tool and method
JPH10229427A (ja) * 1997-02-14 1998-08-25 Canon Inc 情報処理装置及び方法
US6606588B1 (en) * 1997-03-14 2003-08-12 Interuniversitair Micro-Elecktronica Centrum (Imec Vzw) Design apparatus and a method for generating an implementable description of a digital system
US7430670B1 (en) * 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
US6263302B1 (en) * 1999-10-29 2001-07-17 Vast Systems Technology Corporation Hardware and software co-simulation including simulating the cache of a target processor
US7356786B2 (en) * 1999-11-30 2008-04-08 Synplicity, Inc. Method and user interface for debugging an electronic system
US7613599B2 (en) * 2000-06-02 2009-11-03 Synopsys, Inc. Method and system for virtual prototyping
US20020108094A1 (en) * 2001-02-06 2002-08-08 Michael Scurry System and method for designing integrated circuits
US6990534B2 (en) * 2001-07-20 2006-01-24 Flowfinity Wireless, Inc. Method for a proactive browser system for implementing background frame maintenance and asynchronous frame submissions
US7107580B2 (en) * 2003-01-07 2006-09-12 Intel Corporation Binary translation of self-modifying code
JP3951925B2 (ja) 2003-01-31 2007-08-01 セイコーエプソン株式会社 ハードウェア/ソフトウェア協調検証方法
JP4271072B2 (ja) 2004-03-31 2009-06-03 Okiセミコンダクタ株式会社 ソフトウェア検証モデル生成方法
JP4342392B2 (ja) * 2004-07-06 2009-10-14 Okiセミコンダクタ株式会社 ソフトウェア検証モデル生成方法
US7721260B2 (en) * 2004-09-08 2010-05-18 Kozio, Inc. Embedded Test I/O Engine
US7774746B2 (en) * 2006-04-19 2010-08-10 Apple, Inc. Generating a format translator
US7568189B2 (en) * 2006-05-03 2009-07-28 Sony Computer Entertainment Inc. Code translation and pipeline optimization
US8146066B2 (en) * 2006-06-20 2012-03-27 Google Inc. Systems and methods for caching compute kernels for an application running on a parallel-processing computer system
US8584109B2 (en) * 2006-10-27 2013-11-12 Microsoft Corporation Virtualization for diversified tamper resistance
JP5040308B2 (ja) 2006-12-28 2012-10-03 株式会社三洋物産 遊技機
US8494832B2 (en) * 2007-06-20 2013-07-23 Sanjeev Krishnan Method and apparatus for software simulation
US7987457B2 (en) * 2007-06-25 2011-07-26 Microsoft Corporation Targeted patching for native generation images
US7873945B2 (en) * 2007-06-29 2011-01-18 Microsoft Corporation Automatically generating test cases for binary code

Also Published As

Publication number Publication date
US8370797B2 (en) 2013-02-05
US20090319986A1 (en) 2009-12-24
JP2010003123A (ja) 2010-01-07
EP2136293A1 (en) 2009-12-23

Similar Documents

Publication Publication Date Title
US7340692B2 (en) System LSI development apparatus and the method thereof for developing a system optimal to an application
JP2003323463A (ja) システムlsi開発環境生成方法及びそのプログラム
US6772106B1 (en) Retargetable computer design system
Pimentel et al. Calibration of abstract performance models for system-level design space exploration
Bouchhima et al. Automatic instrumentation of embedded software for high level hardware/software co-simulation
JP2006350686A (ja) 命令セット・シミュレータ生成装置及びシミュレータ生成方法
JP4492803B2 (ja) 動作合成装置及びプログラム
Wang et al. Accurate source-level simulation of embedded software with respect to compiler optimizations
KR101076348B1 (ko) 시뮬레이션 장치, 시뮬레이션 방법, 및 시뮬레이션 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체
JP5151722B2 (ja) データ処理装置およびその方法、並びにプログラム
CN110210046B (zh) 应用程序及专用指令集处理器一体化敏捷设计方法
US20040083088A1 (en) Analysis of the performance of a portion of a data processing system
Gao et al. TotalProf: a fast and accurate retargetable source code profiler
Halambi et al. Automatic software toolkit generation for embedded systems-on-chip
Lim et al. A worst case timing analysis technique for optimized programs
US7971167B2 (en) Semiconductor design support device, semiconductor design support method, and manufacturing method for semiconductor integrated circuit
CN114721718A (zh) 一种实现基于时钟精准模拟器的risc-v向量拓展指令集的方法
JP4152659B2 (ja) データ処理システムおよび設計システム
Rashid An efficient cycle accurate performance estimation model for hardware software co-design
JPH10320212A (ja) キャッシュ向け最適化方法
Weber et al. Fast cycle-accurate simulation and instruction set generation for constraint-based descriptions of programmable architectures
Himmelbauer et al. The Vienna Architecture Description Language
Gruin et al. Validation of Processor Timing Models Using Cycle-Accurate Timing Simulators
Mishra et al. Processor modeling and design tools
Posadas et al. Accelerating host-compiled simulation by modifying ir code: Industrial application in the spatial domain

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110428

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120814

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120821

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121015

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121106

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121119

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151214

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151214

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees