JP2004021907A - 性能評価用シミュレーションシステム - Google Patents

性能評価用シミュレーションシステム Download PDF

Info

Publication number
JP2004021907A
JP2004021907A JP2002179762A JP2002179762A JP2004021907A JP 2004021907 A JP2004021907 A JP 2004021907A JP 2002179762 A JP2002179762 A JP 2002179762A JP 2002179762 A JP2002179762 A JP 2002179762A JP 2004021907 A JP2004021907 A JP 2004021907A
Authority
JP
Japan
Prior art keywords
model
code
native
processing
simulation
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
Application number
JP2002179762A
Other languages
English (en)
Inventor
Isao Kawamoto
河本 功
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2002179762A priority Critical patent/JP2004021907A/ja
Publication of JP2004021907A publication Critical patent/JP2004021907A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】抽象度の異なる記述の混在したソースプログラムと抽象度の異なる入力データを用いてシミュレーションを行うことができる性能評価用シミュレーションシステムを提供する。
【解決手段】抽象度の異なる記述の混在したソースプログラムを複数のモデル動作手段毎の記述に分離してオブジェクトコードを生成するコンパイラ手段と、入力イベントとオブジェクトコードを解釈して実行するモデル動作手段を複数持ち、それらが互いに協調しながら動作するシミュレーションモデルから構成されることを特徴とする性能評価用シミュレーションシステム。
【選択図】 図3

Description

【0001】
【発明の属する技術分野】
本発明は、論理回路等から構成されるハードウェアを用いてシステムを設計するに当たり、シミュレータを用いて効率良くシステムの処理性能の評価を行う性能評価用シミュレーションシステムに関する。
【0002】
【従来の技術】
論理回路等から構成されるハードウェアを用いるシステムの設計では、実際のハードウェアを作成する前に、シミュレーションを行ってシステムの評価を行うことにより、仕様の不具合や性能不足を回避したり、過剰な性能に伴うコストや消費電力の増大を抑えたりする。
【0003】
シミュレーションによりシステムの評価を行う際には、システムを構成する要素毎に動作モデルを作成し、それらを統合し、システム全体の動作を模擬するモデルを作成する。このとき、各設計段階での評価目的に合わせて動作モデルが作成される。動作モデルとしては、クロック毎の信号レベルでの動作を記述したクロックモデル、複数の信号により表される1つの処理(トランザクション)毎に動作をまとめて記述したトランザクションモデル、入力データのまとまりに対する動作を記述したデータフローモデル、リソースの使用時間のみを記述した負荷モデル、時間概念がなく機能のみを記述した機能モデルなどが用いられる。
【0004】
これらの複数のモデルは、それぞれの抽象度が以下のように互いに異なっている。
【0005】
クロックモデルは、クロックレベルでハードウェアの動作と一致するため、主に詳細な動作検証を行うために用いられる。
【0006】
トランザクションモデルは、システムとしての動作が実際のハードウェアと一致するため、システム全体としての動作の詳細な評価に用いられる。
【0007】
データフローモデルは、制御プロトコルの影響などを考慮していないため、ある程度の誤差を含むが、高速にシミュレートでき、モデルやテストデータの作成が容易であるため、設計初期の段階での性能評価に用いられる。
【0008】
負荷モデルは、特定の入力データに依らないシステムの統計的な性能を評価するために用いられ、機能モデルはシステムの機能のみを検証するために用いられる。
【0009】
特に、プロセッサはソフトウェアによって動作が異なるため、ソフトウェアの動作を記述したソースプログラムを変換して作成したオブジェクトコードを解釈して実行するプロセッサモデルが使用される。このとき用いるプロセッサモデルとしては、実際のシステムで用いられるプロセッサ(ターゲットプロセッサ)用のプログラムを用いて正確にシミュレートする命令セットモデルや、シミュレーション実行環境である汎用計算機用のプログラムを用いて概略動作のみ記述し、直接実行するネイティブモデルや、バスアクセス頻度などの情報のパラメータを用いてバスアクセスなどのイベントを乱数を基に発生する乱数動作モデルなどがある。
【0010】
このように、システムシミュレーションでは抽象度の異なる多様なモデルが用いられ、システムの開発が進むにつれてより詳細なモデルを用いたシミュレーションを行うようになる。ここで、抽象度の高いモデルほどシミュレーション速度が速く、また新規開発ブロックに関しては、抽象度の低い詳細なモデルは設計が進むまで得られず、また詳細なモデルを用いたシミュレーションでは、プロセッサで用いるプログラムや評価対象システムの外に接続される機器のモデルや入力データなどのテストベンチなどについても詳細なプログラムモデルデータが必要となり、多大な工数が必要となる。
【0011】
そこで、システム全体の一部の機能のみを詳細に評価・検証したいときには、抽象度の異なるモデルを組み合わせてシミュレーションを行うことにより、より効果的に設計途中での目的に合わせた評価・検証を行うことができる。
【0012】
このような方法として、1つには抽象度の異なるモデルを相互に接続するために、例えばトランザクションをクロックレベルの信号に変換するインタフェースモデルを作成する方法がある。
【0013】
また、プロセッサモデルにおいて、ターゲットプロセッサ用のプログラム内で別途作成して登録された汎用計算機用のプログラムを呼び出して実行するための特定の関数を用い、命令セットモデルがその関数を実行するときに、別途作成して登録しておいた汎用計算機用のプログラムを呼び出して実行することにより、命令セットモデルとネイティブモデルを切替えながら動作する方法がある。この手法では、ネイティブモデル内で命令セットモデルやプロセッサモデルに接続されたハードウェアモデルに対してイベントを送る予め用意された関数を用いることでプロセッサの概略動作を記述することができる。
【0014】
また、クロックレベルで実際のハードウェアと動作が一致するクロックレベルのプロセッサモデルとパイプライン動作などにある程度の誤差のある命令レベルのプロセッサモデルを実行途中に切替えながらシミュレートする方法や、バスアクセスを発生するクロックを除き、ハードウェアモデルとの同期を省くことにより命令セットモデルを動作モデルとして用いる方法などがある。
【0015】
【発明が解決しようとする課題】
しかしながら、インタフェースモデルを用いる手法は、システムの構成要素毎にモデルが固定されているため、1つの構成要素が例えば音声処理と画像処理などのような複数の処理に共用されている場合に、一方の処理により用いられるときのみ詳細にシミュレーションを行うということはできない。また、インタフェースモデルにより変換できるモデルには制限がある。例えば、データフローモデルでバスのモデルに入力されるデータは転送方法などの情報を含み、バスモデル内で解釈され処理される。しかし、信号レベルのモデルでは、DMAコントローラへの割り込み要求信号の発生やバスに対するデータの供給だけでなく、プロセッサによるDMAコントローラに対するレジスタの設定などが必要となり、データの変換だけでなくソフトウェアの生成などが必要となり、インタフェースモデルで単純に変換できるものではない。
【0016】
また、プロセッサの動作をソースプログラムで記述するとき、詳細なプログラムを用いたい場所や、動作のみを記述したい場所や、乱数モデルを用いてイベント発生を行いたい場所などがある。このとき、汎用計算機用のプログラムを呼び出す命令セットモデルのように、ソースプログラム内に他のモデルへの切替えを指示する関数を用いる方法では、各動作モデルに対しプログラムを別途用意する必要があり、呼び出す側と呼び出される側で関数名を一致させる必要があるなど管理が複雑になるという問題がある。特に、ターゲットプロセッサ用プログラムと汎用計算機用のプログラムなど同じ高級言語で記述されたプログラムを用いるときでも、動作を切替える位置を変更するには双方のプログラムに対して変更が必要となり、またデータを共有する場合にはインタフェース手段を用意してプログラムの中で明示して用いる必要がある。
【0017】
また、クロックレベルのプロセッサモデルと命令レベルのプロセッサモデルを用いる手法やハードウェアモデルとの同期を省く手法は、高速なシミュレーションのみを行うための手法であり、詳細なプログラムが必要であることに変わりはない。
【0018】
本発明は、かかる点に鑑みてなされたものであり、その目的はハードウェアモデルへの入力データの抽象レベルを混在したり、プロセッサモデル用のソースプログラムに抽象度の異なる記述を混在したりしても、容易にシミュレーションを実行できる性能評価用シミュレーションシステムを提供することにある。
【0019】
【課題を解決するための手段】
前記目的を達成するために、本発明は、システムの構成要素に対し抽象度の異なる複数のモデル動作手段を有し、適時にモデル動作手段を使い分けながらシミュレーションを実行するシミュレーションモデルを用いる。具体的には以下のとおりである。
【0020】
第1の解決手段として、本発明による性能評価用シミュレーションシステム(請求項1相当)は、データを取り込みながら動作するシステム構成要素を対象とし、抽象度の異なる入力イベントに従い前記構成要素の動作をシミュレートする複数のモデル動作手段と、前記構成要素に接続される他の構成要素より送られる抽象度の異なるシミュレーションイベントを受け付けるイベント入力手段と、前記複数のモデル動作手段で共有される情報を管理する共有情報管理手段を有し、前記イベント入力手段は入力されたイベントに応じて前記モデル動作手段の1つを選択し、受け付けたシミュレーションイベントを前記選択したモデル動作手段に送り、前記モデル動作手段は前記イベント入力手段より送られたシミュレーションイベントを入力として用い、前記共有情報管理手段と情報を授受して前記構成要素のシミュレーションを実行するように構成したものである。この構成によれば、抽象度の異なる入力イベントに対してモデル動作手段を使い分けながらシミュレーションを行うことができる。
【0021】
上記第1の解決手段において好ましい態様(請求項2相当)は、他の構成要素に対しデータを出力するシステム構成要素を対象とし、さらに前記構成要素に接続される他の構成要素にイベントを出力するイベント出力手段を有し、前記モデル動作手段がシミュレーション実行中に外部に出力するイベントの発生を判断すると、発生したイベントを前記イベント出力手段に送り、前記イベント出力手段が受け取ったイベントを出力するように構成してあることである。この構成によれば、接続される他の構成要素にも抽象度の異なるイベントを送ることができる。
【0022】
また、上記第1の解決手段において好ましい態様(請求項3相当)は、前記共有情報管理手段を、前記構成要素内部の1つまたは複数の資源を占有するタイミングを調停する競合解決手段とすることである。この場合、前記モデル動作手段は、モデル内の資源を利用すると判断すると、前記競合解決手段に資源利用要求を送り、前記競合解決手段により資源利用要求が許可されるまで当該資源を利用する動作を停止し、資源利用要求が許可された後に動作を再開し、資源が不要になると前記競合解決手段に対し資源解放を通知するものとする。また、前記競合解決手段は、前記複数のモデル動作手段から受けた資源利用要求を調停し、前記モデル動作手段に資源利用を許可すると判断したとき前記モデル動作手段に対し資源利用の許可を通知するものとする。この構成によれば、抽象度の異なる入力に対しても資源の競合による性能低下の評価を行うことができる。
【0023】
第2の解決手段として、本発明による性能評価用シミュレーションシステム(請求項4相当)は、オブジェクトコードを解釈してシミュレーションを実行する複数の動作手段を有し、前記複数の動作手段を切替えながらシミュレーションを実行するプロセッサモデルと、前記プロセッサモデルの複数の動作手段用の記述が混在したソースプログラムを解析し、前記複数の動作手段が解釈可能な複数のオブジェクトコードを生成するコンパイラ手段とを備えたものとして構成されている。この構成によれば、複数の動作モデル用の記述の混在したソースプログラムを用いてプロセッサの動作の評価を行うことができる。
【0024】
上記第2の解決手段において好ましい態様(請求項5相当)は、前記複数の動作手段用の記述の少なくとも2つが、同一の構文規則を持つ高級言語で記述されていることである。この構成によれば、前記ソースプログラムを変更することなしに、前記複数の動作手段に割り当てる部分を変更することが可能である。
【0025】
また、上記第2の解決手段において好ましい態様(請求項6相当)は、前記プロセッサ用の命令列を逐次解釈して動作する命令セットモデルであり、前記ソースプログラムが前記命令セットモデルで実行するクロスコード部の中に他の動作手段で実行する動作コードが含まれた構造を有している。この場合に、前記ソースプログラムを解析しオブジェクトコードを作成するコンパイラ手段が、前記ソースプログラム中の前記クロスコード部から前記動作コード部を分離し、前記クロスコード部を前記プロセッサ用のオブジェクトコードに変換し、前記動作コード部として分離したソースコードにラベルを付加し、前記ラベルを付加した前記動作コード部を前記動作コードを実行するモデル用のオブジェクトコードに変換し、前記動作コードを分離した前記クロスコード部のオブジェクトコード上でのアドレスと前記処理単位毎のラベルと使用する動作手段の対応表を作成する。また、前記命令セットモデルが、前記クロスコード部のオブジェクトコードを解釈して実行し、前記動作コード部を削除したアドレスに到達すると前記対応表を参照し、前記命令セットモデルの実行アドレスに対応するラベルを見つけ、前記ラベルに対応する動作手段にラベルを通知して前記動作手段に制御を移す。そして、前記動作手段が、前記ラベルに対応する動作コード部のオブジェクトコードを解釈して実行し、実行が終了すると前記命令セットモデルに制御を移し、前記命令セットモデルが処理を再開する。この構成によれば、プロセッサで実行されるソフトウェアの動作を、命令セットモデル用ソースコード内に他の動作モデル用のソースコードを混在して記述し、シミュレーションを実行することができる。
【0026】
さらに、上記の態様(請求項6相当)において好ましい態様(請求項7相当)は、前記動作手段の1つが、シミュレーションを実行する汎用計算機用のオブジェクトコードを直接呼び出して実行するネイティブモデルであり、前記コンパイラ手段が、前記ネイティブモデルで実行する動作コード部をネイティブコード部として分離し、前記ネイティブコード部として分離したソースコードの処理単位毎に関数名を付加し、前記関数名を付加した前記ネイティブコード部をシミュレーションを実行する汎用計算機用のオブジェクトコードに変換するように構成されている。この構成によれば、命令セットモデル用ソースコード内に混在するソースコードとしてネイティブモデル用ソースコードを用いることができる。
【0027】
第3の解決手段として、本発明による性能評価用シミュレーションシステム(請求項8相当)は、上記の態様(請求項4,請求項5相当)において、前記プロセッサ用の命令列を逐次解釈して動作する命令セットモデルと、シミュレーションを実行する汎用計算機用のオブジェクトコードを直接呼び出して実行するネイティブモデルとを含み、前記ソースプログラムが前記ネイティブモデルで実行するネイティブコード部の中に前記命令セットモデルで実行するクロスコード部が含まれた構造を有している。この場合に、前記ソースプログラムを解析しオブジェクトコードを作成するコンパイラ手段が、前記ネイティブコード部から前記クロスコード部を分離し、前記クロスコード部として分離したソースコードに関数名を付加し、前記関数名を付加した前記クロスコード部を前記プロセッサ用のオブジェクトコードに変換し、前記クロスコード部を分離した前記ネイティブコード部に前記命令セットモデルに処理を移すための処理切替え関数を挿入し、前記ネイティブコード部を汎用計算機用オブジェクトコードに変換する。また、前記プロセッサモデルが、処理開始時に前記命令セットモデルで初期化処理を実行後に前記ネイティブモデルに処理を移し、前記ネイティブモデル実行中に前記処理切替え関数が呼ばれると前記命令セットモデルに処理を移し、前記プロセッサモデルの関数呼び出し命令に相当する処理を行い、前記命令セットモデルが前記クロスコード部のオブジェクトコードを解釈して実行し、実行が終了するとネイティブモデルに処理を移し、前記ネイティブモデルが処理を再開する。この構成によれば、プロセッサで実行されるソフトウェアの動作を、ネイティブモデル用ソースコード内に命令セットモデル用ソースコードが含まれたソースコードにより記述し、シミュレーションを実行することができる。
【0028】
さらに、上記の態様(請求項7,8相当)において好ましい態様(請求項9相当)は、前記ソースプログラムが第1のクロスコード部の中に含まれるネイティブコード部内にさらに第2のクロスコードが含まれる入れ子構造を有するときに、前記コンパイラ手段および前記プロセッサモデルがそれぞれ次のように構成されている。すなわち、前記コンパイラ手段が、前記第2のクロスコードを前記ネイティブコードから分離し、前記第2のクロスコードを前記第1のクロスコードの中の前記ネイティブコードを削除した位置に挿入し、前記ネイティブコードの前記第2のクロスコードを削除した位置に前記命令セットモデルに処理を移すための処理切替え関数を挿入する。また、前記プロセッサモデルが、前記ネイティブモデルを実行中に前記処理切替え関数が呼ばれると前記命令セットモデルに処理を移し、前記第2のクロスコード部のオブジェクトコードを解釈して実行し、実行が終了するとネイティブモデルに処理を移し、前記ネイティブモデルの処理を再開し、前記ネイティブモデルの処理が終了すると前記命令セットモデルの処理を再開する。この構成によれば、第1のクロスコード部と第2のクロスコードで同じ局所変数を用いることができる。
【0029】
さらに、上記の態様(請求項7,8相当)において好ましい態様(請求項10相当)は、前記ソースプログラムが第1のネイティブコードの中に含まれるクロスコード内にさらに第2のネイティブコードが含まれる入れ子構造を有するとき、前記コンパイラ手段が、前記第2のネイティブコードを前記クロスコードから分離し、前記第2のネイティブコードを前記第1のネイティブコードの中の前記クロスコードを削除した位置に挿入し、前記第2のネイティブコードの前に第1の処理切替え関数を挿入し、前記第2のネイティブコードの後に第2の処理切替え関数を挿入し、前記クロスコードの前記第2のネイティブコードを削除した位置のアドレスを抽出する。また、前記プロセッサモデルが第1の処理切替え関数に達すると前記命令セットモデルに処理を移し、前記命令セットモデルを実行中に前記アドレスに達すると、前記ネイティブモデルの第1の処理切替え関数の直後に処理を移し、前記第2の処理切替え関数に達すると前記命令セットモデルの処理を再開し、前記命令セットモデルの処理が終了すると、前記ネイティブモデルの処理を前記第2の処理切替え関数の直後から再開する。この構成によれば、第1のネイティブコード部と第2のネイティブコード部で、同じ局所変数を用いることができる。
【0030】
さらに、上記の態様(請求項7,8相当)において好ましい態様(請求項11相当)は、前記コンパイラ手段が、さらにクロスコード部内で宣言されている変数の中で1つの処理単位のネイティブコード部内でのみ使用されている第1の変数を抽出し、前記第1の変数の宣言を前記クロスコード部内から前記ネイティブコード部内に移し、ネイティブコード部内で宣言されている変数の中でクロスコード部内のみで使用されている第2の変数を抽出し、前記第2の変数の宣言を前記ネイティブコード部内から前記ネイティブコード部内に移すように構成されている。この構成によれば、アクセスを行う動作モデルと異なる動作モデルで変数の宣言を行うことができる。
【0031】
第4の解決手段として、本発明による性能評価用シミュレーションシステム(請求項12相当)は、上記態様(請求項7,9,10相当)において、前記プロセッサモデルが、さらに前記命令セットモデルの持つ情報にアクセスするインタフェース手段を持ち、前記コンパイラ手段が、前記ネイティブコード部から前記クロスコード部で宣言されている変数にアクセスしている記述を抽出し、前記インタフェース手段にアクセスする処理に変換するように構成されている。この構成によれば、ネイティブコード部内でクロスコード部内の変数の値を用いることができる。
【0032】
上記第4の解決手段において好ましい態様(請求項13相当)は、上記態様(請求項12相当)において、前記コンパイラ手段が、さらに、前記クロスコード部内で値が代入されているポインタ変数を用いてメモリにアクセスしている処理を前記ネイティブコード部内から抽出し、前記インタフェース手段にアクセスする処理に変換するように構成されている。この構成によれば、ネイティブコード部内でクロスコード部内で設定されたポインタ変数を用いてクロスコード部内のメモリ空間にアクセスすることができる。
【0033】
上記第4の解決手段において好ましい態様(請求項14相当)は、上記態様(請求項8,9,10相当)において、前記プロセッサモデルが、さらにネイティブモデル内の変数のアドレスを記憶するアドレス記憶手段と、前記記憶されたアドレスを用いて変数にアクセスを行う変数アクセス手段を有し、前記コンパイラ手段が、前記クロスコード部から前記ネイティブコード部で宣言されている変数にアクセスしている記述を抽出し、前記ネイティブコード部に前記アドレス記憶手段を用いて前記変数のアドレスを記憶する記述を追加し、前記クロスコード部で前記変数にアクセスしている記述を前記変数アクセス手段に置き換えるように構成されている。この構成によれば、クロスコード部内でネイティブコード部内の変数の値を用いることができる。
【0034】
上記第4の解決手段において好ましい態様(請求項15相当)は、上記態様(請求項14相当)において、さらに、前記ネイティブコード部内で値が代入されているポインタ変数を用いてメモリにアクセスしている処理を前記クロスコード部内から抽出し、前記変数アクセス手段に置き換えるように構成されている。この構成によれば、クロスコード部内でネイティブコード部内で設定されたポインタ変数を用いてネイティブコード部内のメモリ空間にアクセスすることができる。
【0035】
上記第2の解決手段(請求項4相当)において好ましい態様(請求項16相当)は、前記プロセッサモデルがさらに前記プロセッサに接続される他の構成要素より送られる抽象度の異なるシミュレーションイベントを受け付けるイベント入力手段を有し、前記イベント入力手段は入力されたイベントに応じて前記動作手段の1つを選択し、受け付けたシミュレーションイベントを選択した第1の動作手段に送り、前記第1の動作手段が実行中であれば前記シミュレーションイベントを入力として用いて処理を継続し、前記第1の動作手段が停止中であれば実行中の第2の動作手段に処理切替え要求を送り、前記第2の動作手段は処理の切替えが可能になった時点で動作を中止して前記第1の動作手段に処理を切替え、前記第1の動作手段が前記シミュレーションイベントを入力として用いて処理を実行し、前記第1の動作手段が前記シミュレーションイベントに対する処理を終了すると前記第2の動作手段に処理を切替えるように構成されている。この構成によれば、外部から入力される割り込みイベントの種類に応じて、割り込み処理を実行する動作モデルを切替えることができる。
【0036】
上記の態様(請求項15相当)において好ましい態様(請求項17相当)は、さらに前記プロセッサに請求項2または請求項3相当のシミュレーションモデルが接続されており、前記シミュレーションモデルの出力イベントが前記プロセッサモデルの入力イベントとして用いられ、前記プロセッサモデルの複数の動作手段が出力するイベントが前記シミュレーションモデルの入力イベントとして用いるように構成されている。この構成によれば、多様な抽象度の記述が混在するソフトウェアと多様な抽象度のデータが混在する入力データを用いてシステムの評価を行うことができる。
【0037】
【発明の実施の形態】
次に、本発明の実施の形態について図面を参照して説明する。
【0038】
(第1の実施の形態)
図1は、本発明の第1の実施の形態における性能評価用シミュレーションシステムで用いるシミュレーションモデルの構成を表す図である。システム全体の性能評価シミュレーションでは、図1に示すシステムの1つの構成要素のシミュレーションモデルは、システムを構成する他の要素のシミュレーションモデル(図示せず)と接続され、他のモデルから入力イベントを受けて動作を行い、必要であれば他のシミュレーションモデル(図示せず)に対して出力イベントを送ることにより、システム全体のシミュレーションの中で1つの構成要素としての動作を行う。
【0039】
図1において、イベント入力手段101は、システムを構成する他の構成要素のシミュレーションモデル(図示せず)から与えられるシミュレーションイベントを受け付け、イベントの内容を解析し、入力イベントの内容に従いモデル動作手段群102のうちの1つのモデル動作手段を選択し、選択したモデル動作手段に入力イベントを送る。一方、イベント出力手段104は、モデル動作手段群102により出力された出力イベントを他のシミュレーションモデル(図示せず)に対して出力する。また、共有情報管理手段の一例としての競合解決手段103は、モデル動作手段群102に含まれる各モデル動作手段からの資源利用要求と資源解放の通知に基づき、予め規定された規則に応じて調停を行い、要求された資源を利用可能であると判断したモデル動作手段に対して資源利用の許可を通知する。
【0040】
次に、モデル動作手段群102に含まれるモデル動作手段の1つの動作を図2に示すフローチャートに従って説明する。モデル動作手段はまず初期化処理(ステップ201)により内部状態の初期化を行う。次に、入力イベント受信処理(ステップ202)により当該モデル動作手段に入力されたイベントを受信する。次に、利用資源判定処理(ステップ203)により内部状態と入力イベントにより決定されるモデル動作がバスや演算器や入出力ポートなど同時に使用できる数に制限がある資源を用いるか否かを判定する。上記の資源を利用すると判定したとき、資源利用要求発行処理(ステップ204)により競合解決手段103に対し、利用する資源に対する資源利用要求を発行し、使用していた資源が不要になるとき、資源解放を競合解決手段103に通知する。次に、同期処理(ステップ205)によりモデル動作手段群102に含まれる各モデル動作手段が競合解決手段103に資源の要求と解放を通知し、競合解決手段103により競合の判定が行われるまで待ち、資源利用許可受信処理(ステップ206)により資源利用要求を発行した処理に対する資源利用許可が得られたか否かを競合解決手段103から受信する。そして、単位時間動作処理(ステップ207)によりモデル動作手段の内部状態と入力イベントと資源利用の許可状況を参照して単位時間の動作を実行する。また、このとき出力イベントがあればイベント出力手段104に対して発生した出力イベントを通知する。このとき、資源利用許可が得られていなければ、その資源を用いる処理の実行は停止することになる。また、単位時間の動作により資源の利用が不要になれば競合解決手段103に対し資源解放を通知する。そして、入力イベント受信処理(ステップ202)に戻り、次の単位時間の動作の処理に移る。ここで、モデル動作手段群102に含まれる複数のモデル動作手段は互いに疑似的に並列に実行される。
【0041】
次に、第1の実施の形態におけるシミュレーションモデルを、バスモデルを具体例として図3を用いて説明する。図3において、301は本発明におけるシミュレーションモデルであり、バスをモデル化している。302はプロセッサのシミュレーションモデルであり、バスモデル301に対しトランザクションレベルのイベントを出力する。303はデータ入力デバイスのシミュレーションモデルであり、バスモデル301に対しデータフローレベルのイベントを出力する。304はメモリモデルであり、バスモデル301からトランザクションレベルのイベントとデータフローレベルのイベントを受けて動作する。ここで、トランザクションレベルは、複数の信号により表される1つの処理(トランザクション)毎に動作をまとめて記述するものである。データフローレベルは、入力データのまとまりに対する動作を記述するものである。
【0042】
バスモデル301は、イベント入力手段305、トランザクション動作手段306、データフロー動作手段307、バス競合解決手段308およびイベント出力手段309から構成されている。バスモデル301において、イベント入力手段305は他のシミュレーションモデルからのイベントを受け付け、トランザクション動作手段306はトランザクションレベルのイベントを入力とした動作を行い、データフロー動作手段307はデータフローレベルのイベントを入力とした動作を行い、バス競合解決手段308はトランザクション動作手段306とデータフロー動作手段307から発行されるバス利用要求とバス解放を受けてバスの利用許可を各モデル動作手段に与え、イベント出力手段309はトランザクション動作手段306とデータフロー動作手段307から出力されるイベントを他のシミュレーションモデルに送る。
【0043】
次に、バスモデル301にプロセッサモデル302から図4に示すイベントが入力され、入力デバイスモデル303から図5に示すイベントが入力され、メモリモデル304に対し図6に示すイベント列が出力される動作を説明する。
【0044】
図4はバスモデル301に接続されたプロセッサモデル302から入力されるイベント列を示しており、左端にイベントを送った時刻を示し、右端にイベントに対する返し値を示している。図4において、401はバス利用権の要求を送るイベントであり、トランザクション動作手段306はこのイベントを受けるとバス競合解決手段308に対してバス使用要求を送る。402と403はバス利用権の判定のイベントであり、トランザクション動作手段306はこのイベントを受けるとバス競合解決手段308から利用許可が与えられているか否かを判定し、結果を入力イベントに対する返し値とする。ここで、返し値が“TRUE”のときはバス利用権があることを示し、返し値が“FALSE”のときはバス利用権がないことを示している。404はデータ送出のイベントであり、送出先アドレス(0000)と送出データ(10)をパラメータに持ち、トランザクション動作手段306がイベントを受けると送出先アドレスに従って送出先を選択しアドレスとデータをパラメータとしてデータ送出のイベント602を出力する。405はバス利用権の要求を解除するイベントであり、トランザクション動作手段306はこのイベントを受けるとバス競合解決手段308にバス解放を通知する。
【0045】
図5はバスモデル301に接続された入力デバイスモデル303から入力されたイベントを示しており、左端にイベントを送った時刻を示している。501はバスに接続されたモデルへのデータ転送を指示するイベントであり、転送先アドレス(1000)と転送モード(DMA2)と転送サイズ(4)と転送データ(01,02,03,04)をパラメータに持っており、2ワード単位の間欠転送(2ワード転送毎にバス利用権を解放する)モードで合計4ワードの転送を行うことを示している。
【0046】
データフロー動作手段307は、イベント501を受けると、バス競合解決手段308に対して利用要求を送り、利用許可が与えられてから、転送サイズ2ワードでアドレスと転送データの始めの2ワードをパラメータとする転送イベント601を出力する。次に、2ワード転送にかかる2単位時間後に一旦、バス競合解決手段308にバス解放を通知し、その後再びバス要求を行い、再びバス利用許可を受けると、次の2ワードの出力(転送イベント603の出力)を行い、最後に再びバス解放を通知する。
【0047】
このとき、時刻0及び時刻3ではデータフロー動作手段307のみがバス利用要求を行っているため、バス競合解決手段308はデータフロー動作手段307にバス利用許可を与え、時刻1ではトランザクション動作手段306がバス利用要求を送っているが、既にデータフロー動作手段307にバス利用許可を通知済みであるため、トランザクション動作手段306に対してバス利用許可を与えない。
【0048】
また、時刻2ではデータフロー動作手段307とトランザクション動作手段306の双方がバス利用要求を送っているが、バス利用要求の発生源を比較し、ここではプロセッサによる要求の方が優先順位が高いと判断してトランザクション動作手段306に対して利用許可を与えている。これにより、時刻1ではトランザクション動作手段306に1単位時間待ち時間が発生し、時刻2ではデータフロー動作手段307に1単位時間待ち時間が発生しており、プロセッサと入力デバイスがバスを共有することにより発生する待ち時間を再現することができ、システムの評価に用いることができる。
【0049】
ここで、入力デバイスからのデータ転送をトランザクションレベルのシミュレーションで行うには、ソフトウェアによりDMA(DirectMemory Access)コントローラを設定し、転送開始要求信号に応じてDMAコントローラがバスモデルにトランザクションレベルのイベントを送ってバスモデルを動作させることにより処理されるが、データフローレベルのシミュレーションでは、図5のように制御情報を付加したデータを直接バスモデルに入力することにより処理される。これにより、ソフトウェアやトランザクションレベルのイベントを処理する入力デバイスのモデルが不要になるため詳細なモデルやソフトウェアを用いずに評価ができ、また処理されるイベント数も大幅に少なくなるためシミュレーション速度も高速になる。
【0050】
なお、本実施の形態ではプロセッサモデルからはトランザクションレベルのイベントのみを入力し、入力デバイスモデルからはデータフローレベルのイベントのみを入力したが、それぞれのモデルからトランザクションレベルのイベントとデータフローレベルのイベントを混在して入力してもよいことはいうまでもない。
【0051】
上記した本発明の第1の実施の形態には、次のような発明が含まれている。
【0052】
すなわち、請求項1の発明に相当するものとして、抽象度の異なる入力イベントに従いシステム構成要素の動作をシミュレートする複数のモデル動作手段と、構成要素より送られる抽象度の異なるシミュレーションイベントを受け付けるイベント入力手段と、モデル動作手段で共有される情報を管理する共有情報管理手段(競合解決手段)を有するシミュレーションモデルを用い、入力されたイベントに応じてモデル動作手段の1つを選択し、受け付けたシミュレーションイベントを選択したモデル動作手段に送り、モデル動作手段が前記イベント入力手段より送られたシミュレーションイベントを入力として用い、共有情報管理手段と情報を授受して構成要素のシミュレーションを実行するように構成されている。これにより、抽象度の異なるイベントを出力するシミュレーションモデルを接続し、各抽象度に合わせたシミュレーションを行いながら、各イベント間の相互作用を含めた評価を行うことができる。
【0053】
また、請求項2の発明に相当するものとして、さらに他の構成要素にイベントを出力するイベント出力手段を有するシミュレーションモデルを用い、モデル動作手段がシミュレーション実行中に外部に出力するイベントの発生を判断すると、発生したイベントをイベント出力手段に送り、イベント出力手段が受け取ったイベントを出力するように構成されている。これにより、接続されるシミュレーションモデルに対して抽象度の混在したイベントを送ることができ、送られたシミュレーションモデルでもイベントに応じた動作を行うことができる。
【0054】
また、請求項3の発明に相当するものとして、特に共有情報管理手段について、資源を占有するタイミングを調停する競合解決手段とし、モデル動作手段が、モデル内の資源を利用すると判断すると、競合解決手段に資源利用要求を送り、競合解決手段により資源利用要求が許可されるまで当該資源を利用する動作を停止し、資源利用要求が許可された後に動作を再開し、資源が不要になると競合解決手段に対し資源解放を通知し、競合解決手段が複数のモデル動作手段から受けた資源利用要求を調停し、モデル動作手段に資源利用を許可すると判断したときモデル動作手段に対し資源利用の許可を通知するように構成されている。これにより、異なるモデル動作手段で処理されるイベントによる動作の間で調停が行われ、資源利用による競合の発生によるシステムの性能に対する影響を評価することができる。
【0055】
なお、この例では複数のモデル動作手段の間でバスの使用に対する競合の判定のみを行ったが、演算器や入出力ポートなどを、競合を発生し得る資源として扱うことができることはいうまでもない。また、複数のモデル動作手段の間でのみ競合の調停を行ったが、1つのモデル動作手段が複数のイベントを同時に扱う場合、モデル動作手段の内部で調停を行った後、モデル動作手段の相互間の調停を行えば良いことはいうまでもない。また、モデル動作手段の相互間での共有情報として資源の競合のみを扱ったが、モデル動作手段による動作に影響を与えるレジスタの値などを共有することができることはいうまでもない。
【0056】
(第2の実施の形態)
図7は、本発明の第2の実施の形態における評価システムの構成を表す図である。
【0057】
図7において、701はプロセッサのシミュレーションモデルであり、モデル動作手段として命令列を逐次解釈して動作する命令セットモデル702と、シミュレーションを実行する汎用計算機用のオブジェクトコードを直接呼び出して実行するネイティブモデル703を含んでいる。また、704はソースプログラム705を解析し、命令セットモデル702用のオブジェクトコード706とネイティブモデル703用のオブジェクトコード707とを作成するコンパイラである。
【0058】
図8は、本実施の形態で入力として与えられるソースプログラム705の一例であり、プログラムは命令セットモデル702で実行すべき部分とネイティブモデル703で実行すべき部分とが共にC言語で記述されており、コンパイラ指示子によりネイティブモデル703で実行すべき範囲を指示している。
【0059】
次に、図7におけるコンパイラ704の処理をフローチャート図9を用いて具体的に説明する。コンパイラ704は、まず、分離処理(ステップ901)によりソースプログラム705を命令セットモデル702で実行すべきクロスコード部とネイティブモデル703で実行すべきネイティブコード部に分離する。図8に示すソースプログラム705を入力とする例では、コンパイラ指示子により挟まれた部分をネイティブコード部とし、外側の部分をクロスコード部とする。次に、クロスコード部コンパイル処理(ステップ902)により、分離したクロスコード部を命令セットモデル702用のオブジェクトコード706に変換する。次に、関数化処理(ステップ903)により、ネイティブコード部に関数名を付け、引数と返し値のない関数を作成する。このとき、ネイティブコード部が複数ある場合にはIDなどを付加して重複しない関数名を付ける。次に、ネイティブコード部コンパイル処理(ステップ904)により、ステップ903により作成した関数を汎用計算機用の動的リンク可能なオブジェクトコードに変換する。次に、対応表作成処理(ステップ905)により、ステップ902で作成したオブジェクトコード中のネイティブコード部を分離した位置に対応するアドレスと関数名との対応表708を作成する。
【0060】
次に、図7におけるプロセッサモデル701の処理を図10のフローチャートを用いて説明する。プロセッサモデル701は、まず初期化処理(ステップ1001)により、命令セットモデル702とネイティブモデル703の初期化を行い、命令セットモデル702用のオブジェクトコード706と対応表708を読み込み、命令セットモデル702用の命令列を命令セットモデル702がアクセスする命令メモリに書き込む。次に、命令セットモデル動作1002に移り、アドレス判定処理(ステップ1004)により、現在のアドレスが対応表708に含まれているか否かを判定し、含まれているときにはネイティブモデル動作1003に移り、含まれないとき命令実行処理(ステップ1007)に進む。命令実行処理(ステップ1007)では現在のアドレスに対応する命令を読み込み、読み込んだ命令に対応する処理を実行し、アドレスを更新し、アドレス判定処理(ステップ1004)に戻る。また、ネイティブモデル動作1003に進むと、関数名判定処理(ステップ1005)により対応表708から現在のアドレスに対応する関数名を選択し、関数実行処理(ステップ1006)により、ネイティブモデル703用のオブジェクトコード707から選択した関数名を持つ関数を選び出して実行する。そして、関数の実行が終了すると命令セットモデル動作1002に戻り、命令実行処理(ステップ1007)に進み動作を継続する。
【0061】
なお、本実施の形態ではネイティブコードの範囲をソースコード内に埋め込んだコンパイラ指示子により指定しているが、画面上に表示したソースコード上でネイティブモデルで実行する範囲をマウスでドラッグして指示したり、別ファイルでソースコードのラインを指示するなどして、ソースコードを全く変更せずにネイティブモデルで実行する範囲を変更できることはいうまでもない。
【0062】
上記した本発明の第2の実施の形態には、次のような発明が含まれている。
【0063】
すなわち、請求項4の発明に相当するものとして、オブジェクトコードを解釈してシミュレーションを実行する複数の動作手段を有し、前記複数の動作手段を切替えながらシミュレーションを実行するプロセッサモデルと、前記プロセッサモデルの複数の動作手段用の記述が混在したソースプログラムを解析し、前記複数の動作手段が解釈可能な複数のオブジェクトコードを生成するコンパイラ手段とを含むものとして構成されている。これにより、プロセッサで実行されるソフトウェアの動作を、複数のモデル用の記述が含まれるソースコードにより記述し、シミュレーションを実行することができる。
【0064】
また、請求項5の発明に相当するものとして、前記複数の動作手段用の記述の少なくとも2つが、同一の構文規則を持つ高級言語で記述されている。これにより、複数のモデル用の記述に同一の構文を用いることにより、ソースコードを変更せずに各動作モデルで実行する範囲を変更することができる。
【0065】
さらに、請求項6の発明に相当するものとして、次の構成がある。プロセッサ用の命令列を逐次解釈して動作する命令セットモデルであり、ソースプログラムが前記命令セットモデルで実行するクロスコード部の中に他の動作手段で実行する動作コードが含まれた構造を有しており、前記ソースプログラムを解析しオブジェクトコードを作成するコンパイラ手段が、前記ソースプログラムを、前記クロスコード部から前記動作コード部を分離し、前記クロスコード部を前記プロセッサ用のオブジェクトコードに変換し、前記動作コード部として分離したソースコードにラベルを付加し、前記ラベルを付加した前記動作コード部を前記動作コードを実行するモデル用のオブジェクトコードに変換し、前記動作コードを分離した前記クロスコードのオブジェクトコード上でのアドレスと前記処理単位毎のラベルと使用する動作手段の対応表を作成し、前記命令セットモデルが、前記クロスコード部のオブジェクトコードを解釈して実行し、前記動作コード部を削除したアドレスに到達すると前記対応表を参照し、前記命令セットモデルの実行アドレスに対応するラベルを見つけ、前記ラベルに対応する動作手段にラベルを通知して前記動作手段に制御を移し、前記動作手段が、前記ラベルに対応する動作コード部のオブジェクトコードを解釈して実行し、実行が終了すると前記命令セットモデルに制御を移し、前記命令セットモデルが処理を再開する。これにより、プロセッサで実行されるソフトウェアの動作を、命令セットモデル用ソースコード内に他の動作モデル用のソースコードを混在して記述し、シミュレーションを実行することができる。
【0066】
さらに、請求項7の発明に相当するものとして、前記動作手段の1つが、シミュレーションを実行する汎用計算機用のオブジェクトコードを直接呼び出して実行するネイティブモデルであり、前記ソースプログラムを解析しオブジェクトコードを作成するコンパイラ手段が、前記ネイティブモデルで実行する動作コード部をネイティブコード部として分離し、前記ネイティブコード部として分離したソースコードの処理単位毎に関数名を付加し、前記関数名を付加した前記ネイティブコード部をシミュレーションを実行する汎用計算機用のオブジェクトコードに変換するように構成されている。これにより、命令セットモデル用ソースコード内に混在するソースコードとしてネイティブモデル用ソースコードを用いることができる。
【0067】
なお、本実施の形態では命令セットモデルで命令毎にアドレスの比較を行っているが、命令セットモデル用の命令列の中のネイティブモデルに動作を切替える位置に特定の命令を挿入することにより、命令実行時に特定コードを検出したときのみ対応表を参照して、ネイティブモデルの処理を行い、ネイティブモデルの実行が終ると特定コードの次の命令から命令セットモデルの実行を再開することにより、アドレス比較によるシミュレーション速度の低下を抑えることができる。
【0068】
また、特定の命令を挿入するのではなく、動作を切替える位置の命令を特定の命令に置き換え、対応表に置換前の命令を追加しておき、命令実行時に特定コードを検出したときのみ対応表を参照し、ネイティブモデルの処理を行い、ネイティブモデルの実行が終ると特定コードを対応表に追加した命令に置き換えて解釈して命令セットモデルの実行を再開することにより、命令セットモデル用のオブジェクトコードの大きさやラベルのアドレスなどを変更することなくシミュレーション速度の低下を抑えることができる。
【0069】
また、本実施の形態では命令セットモデルから切替えて動作するモデルとしてネイティブモデルを例に用いているが、命令セットモデル用コードから分離される部分の記述の構文規則を変更し、対応する動作モデルを変更することにより他の動作モデルを用いることもできることはいうまでもない。また、作成される対応表に使用する動作モデルの情報を付加することにより、複数の動作モデルを用いることができることもいうまでもない。
【0070】
なお、ソースプログラム705の内部で関数を呼び出しているとき、その関数の呼び出している部分が命令セットモデルで実行する部分と判断されると、関数も命令セットモデル用のオブジェクトコードに変換し、関数の呼び出している部分がネイティブモデルで実行する部分と判断されると、関数もネイティブモデル用のオブジェクトコードに変換することにより、関数呼び出しを行うソースプログラムを用いることができることはいうまでもない。
【0071】
なお、ネイティブモデルでは、外部バスアクセスを発生したり、動作を止めてクロックを進めたり、命令セットモデルがアクセスするメモリに直接アクセスしたりするなどプロセッサモデルの制御に影響を与えたり、プロセッサモデル外部にイベントを発生する関数を予め用意しておき、ネイティブモデル用プログラム内でこれらの関数を用いることにより、抽象度の高い動作を記述できることはいうまでもない。
【0072】
(第3の実施の形態)
第3の実施の形態では、図7に示したシステムにおいて、ソースプログラム705の記述がネイティブモデル用ソースコード内に命令セットモデル用ソースコードが含まれている場合を扱う。
【0073】
図11は、本実施の形態で入力として与えられるソースプログラム705の一例であり、プログラムは命令セットモデル702で実行すべき部分とネイティブモデル703で実行すべき部分が共にC言語で記述されており、コンパイラ指示子により命令セットモデル702で実行すべき範囲を指示している。
【0074】
次に、図7におけるコンパイラ704の処理を図12に示すフローチャートを用いて具体的に説明する。コンパイラ704は、まず、分離処理(ステップ1201)によりソースプログラム705を命令セットモデル702で実行すべきクロスコード部とネイティブモデル703で実行すべきネイティブコード部に分離する。図11のソースプログラム705を入力とする例では、コンパイラ指示子により挟まれた部分を命令セットモデル部とし、外側の部分をネイティブコード部とする。次に、関数化処理(ステップ1202)により、クロスコード部に関数名を付け、引数と返し値のない関数を作成する。このとき、クロスコード部が複数ある場合にはIDなどを付加して重複しない関数名を付ける。次に、クロスコード部コンパイル処理(ステップ1203)により、ステップ1202で作成した関数を命令セットモデル用のオブジェクトコードに変換する。次に、処理切替え関数挿入処理(ステップ1204)により、ネイティブコード部中のクロスコード部を分離した位置にステップ1202で作成した関数の命令セットモデル用オブジェクトコード内でのアドレスを引数とする処理切替え関数を挿入する。最後にネイティブコードコンパイル処理(ステップ1205)により、ステップ1204で処理切替え関数を挿入したネイティブコードをシミュレーションを実行する汎用計算機用オブジェクトコードに変換する。
【0075】
次に、図7におけるプロセッサモデル701の処理を図13のフローチャートを用いて説明する。プロセッサモデル701は、まず初期化処理(ステップ1301)により、命令セットモデル702とネイティブモデル703の初期化を行い、命令セットモデル702用のオブジェクトコード706を読み込み、命令セットモデル702用の命令列を命令セットモデル702がアクセスする命令メモリに書き込む。ただし、このとき、命令セットモデル702の初期化では関数が実行できるようにスタックの設定などのソフトウェアで記述される初期化処理に対応する設定も同時に行う。次に、ネイティブモデル動作1302に移り、関数実行処理(1304)によりネイティブモデル703用のオブジェクトコード707に含まれる関数を実行する。オブジェクトコード707の実行中に処理切替え関数が呼び出されると、動作切替え処理(ステップ1305)に移り、命令セットモデル動作1303に移る。命令セットモデル動作1303に移ると、関数呼び出し処理(ステップ1306)により、スタックの変更など命令セットモデル内部で関数呼び出しを行ったときに行われる処理に相当する処理を行い、プログラムカウンタを処理切替え関数の引数により指示されるアドレスに設定する。次に、関数復帰判定処理(ステップ1307)により関数復帰命令を判定し、関数復帰命令のとき関数終了処理(ステップ1309)に移り、それ以外のとき命令実行処理(ステップ1308)により1命令ずつ命令セットモデル動作1303を実行する。ただし、クロスコード内で関数呼び出しを用いているとき、クロスコード内で用いた関数呼び出し命令に対応する関数復帰命令では関数終了処理(ステップ1309)ではなく、命令実行処理(ステップ1308)に移り命令セットモデルで動作を行う。そして関数終了処理(ステップ1309)では関数復帰命令に対応する処理を実行した後、処理切替え関数を終了し、オブジェクトコード707に含まれる関数の実行を再開する。
【0076】
上記した本発明の第3の実施の形態には、次のような発明が含まれている。
【0077】
すなわち、請求項8の発明に相当するものとして、複数の動作手段が、プロセッサ用の命令列を逐次解釈して動作する命令セットモデルと、シミュレーションを実行する汎用計算機用のオブジェクトコードを直接呼び出して実行するネイティブモデルとを含み、ソースプログラムが前記ネイティブモデルで実行するネイティブコード部の中に前記命令セットモデルで実行するクロスコード部が含まれた構造を有している。この場合に、前記ソースプログラムを解析しオブジェクトコードを作成するコンパイラ手段が、前記ネイティブコード部から前記クロスコード部を分離し、前記クロスコード部として分離したソースコードに関数名を付加し、前記関数名を付加した前記クロスコード部を前記プロセッサ用のオブジェクトコードに変換し、前記クロスコード部を分離した前記ネイティブコード部に前記命令セットモデルに処理を移すための処理切替え関数を挿入し、前記ネイティブコード部を汎用計算機用オブジェクトコードに変換する。また、前記プロセッサモデルが、処理開始時に前記命令セットモデルで初期化処理を実行後に前記ネイティブモデルに処理を移し、前記ネイティブモデル実行中に前記処理切替え関数が呼ばれると前記命令セットモデルに処理を移し、前記プロセッサモデルの関数呼び出し命令に相当する処理を行い、前記命令セットモデルが前記クロスコード部のオブジェクトコードを解釈して実行し、実行が終了するとネイティブモデルに処理を移し、前記ネイティブモデルが処理を再開する。
【0078】
この構成によれば、プロセッサで実行されるソフトウェアの動作を、ネイティブモデル用ソースコードに命令セットモデル用ソースコードが含まれたソースコードにより記述し、シミュレーションを実行することができる。
【0079】
なお、本実施の形態では、処理切替え関数の引数をアドレスとしたが、処理切替え関数の引数を関数名とし、ソースレベルデバッガで用いるように関数とアドレスの対応をシミュレータに別途入力し、シミュレーション実行時に関数名から実行アドレスを決定することができることはいうまでもない。
【0080】
なお、第2の実施の形態と第3の実施の形態を組み合わせることにより、ネイティブモデル用コードと命令セットモデル用のコードが多重に入れ子構造になっているときにも、ネイティブモデルと命令セットモデルを切替えながらシミュレートできることはいうまでもない。
【0081】
また、命令セットモデル用のコードを呼び出すネイティブモデル用コードが命令セットモデル用のコード内に書かれている入れ子構造になっているとき、内部の命令セットモデル用のコードは関数化せずに外部の命令セットモデル用のコード内のネイティブコード部を削除した位置に挿入する。そして、ネイティブモデルで処理切替え関数を実行し命令セットモデル動作に移るとき、関数呼び出しの処理は行わずに命令セットモデルで命令実行を行い、内部の命令セットモデル用のコードの終了アドレスに達すると、ネイティブモデルに戻る。これにより、外部の命令セットモデル用のコードの実行と内部の命令セットモデル用コードが同じ局所変数を用いることができるようになる。
【0082】
また、ネイティブモデル用コードを呼び出す命令セットモデル用のコードがネイティブコード用コード内に書かれている入れ子構造になっているとき、内部のネイティブモデル用コードは関数化せずに外部のネイティブモデル用コード内の命令セットモデル用コード部を削除した位置に挿入する。そして、挿入した内部のネイティブモデル用コードの最後に、命令セットモデルを呼び出してネイティブモデルに処理を切替えたアドレスから実行を再開する2つ目の処理切替え関数を挿入する。
【0083】
なお、1つ目の処理切替え関数は第3の実施の形態のステップ1204により内部のネイティブモデル用コードの直前に挿入される。そして、命令セットモデルで内部のネイティブモデル用コードの処理に切替えるアドレスに到達すると命令セットモデルの処理を中断してネイティブモデル動作に戻り、1つ目の処理切替え関数の直後にある内部のネイティブモデル用コードの実行を行い、2つ目の処理切替え関数により命令セットモデルの処理を再開する。これにより、外部のネイティブモデル用のコードの実行と内部のネイティブモデル用コードが同じ局所変数を用いることができるようになる。
【0084】
(第4の実施の形態)
第2の実施の形態および第3の実施の形態によると、ネイティブモデル用コードと命令セットモデル用コードは互いに異なる動作モデルで実行されるため、変数やメモリを共有することはできない。そこで、第4の実施の形態では、ネイティブモデル用コードと命令セットモデル用コードとで、変数やメモリを共有できるシステムを示す。
【0085】
図14は第4の実施の形態におけるプロセッサモデル1401の構成を表す図である。図14において、1404はネイティブモデル実行中に呼び出され、命令セットモデル1402の内部の資源にアクセスを行うインタフェース手段、1405はネイティブモデル1403の内部の資源のアドレスを記憶するアドレス記憶手段、1406は命令セットモデル実行中に呼び出され、アドレス記憶手段1405に記憶されたアドレスを用いてネイティブモデル1402の内部の資源にアクセスを行う変数アクセス手段である。ネイティブモデル1403はネイティブモデル用オブジェクトコードの実行中にインタフェース手段1404を呼び出す命令セットモデルアクセス関数が実行されると、インタフェース手段を用いて命令セットモデル1402の内部の資源にアクセスする。また、アドレス保存関数が実行されるとアドレス記憶手段1405に変数のアドレスを記憶する。一方、命令セットモデル1402は変数アクセス手段1406を呼び出すネイティブモデルアクセス関数のアドレスに到達したとき、変数アクセス手段1406を用い、アドレス記憶手段1405にアドレスが記憶されているネイティブモデル内の資源にアクセスする。
【0086】
次に、ネイティブモデル用オブジェクトコードおよび命令セットモデルオブジェクトコード内にそれぞれ命令セットモデルアクセス関数とネイティブモデルアクセス関数を挿入する方法について図15のフローチャートに従って説明する。
【0087】
図17は、図16に示すソースコードを図15に示す方法に従って変換した結果である。まず、ステップ1501によりソースコード内で宣言されている変数のリストを作成する。次に、ステップ1502よりソースコード内で変数にアクセスしている処理の中でまだステップ1503で選択していない処理があるか判定し、全て選択し終っているときには終了する。次に、ステップ1503で新たな処理を選択し、ステップ1504で選択した処理でアクセスしている変数が同じ動作モデルで実行されるコード内で宣言されているか否か、また間接アクセスしている場合には使用しているポインタ変数への代入が同じ動作モデルで実行されるコード内で行われているか否かを判定し、同じ動作モデルコード内であるときはステップ1502に戻り、異なる動作モデルコード内であるときはステップ1505に進む。ステップ1505では選択された処理を他のモデルの資源をアクセスするための関数呼び出しに置き換える。
【0088】
具体的に、図16における6行のようにクロスコード内で宣言された変数にネイティブコード内でアクセスしているとき、図17における6行のように命令セットモデルアクセス関数に変換して変数の値を取得する。
【0089】
ここで、図17における関数”read_iss_int(”i”)”は命令セットモデル内のiというラベルのついたint型の変数を読み出す命令モデルアクセス関数である。
【0090】
また、図16における7行のようにクロスコード内で値が代入されているポインタ変数を用いてネイティブコード内で間接アクセスしているとき、図17における7行のように命令セットモデルアクセス関数に変換し、命令セットモデル内のアドレスを用いてアクセスする。ここで、図17における関数”write_iss_char_ptr()”は、命令セットモデル内の指定アドレスにchar型の値を書き込む命令セットモデルアクセス関数である。また、このときポインタ変数messageの値が必要になるので、命令セットモデルアクセス関数”read_iss_ptr()”を用いて取得している。
【0091】
また、図16における9行のようにネイティブコード内で宣言された変数にクロスコード内でアクセスしているとき、図17における8行のようにネイティブコード内でアドレス保存関数を実行して、命令モデルからアクセスされる変数のアドレスをアドレス記憶手段1405に記憶しておき、さらに図17における10行のように変数アクセスをネイティブモデルアクセス関数に変換し、ネイティブモデル内の変数にアクセスする。ここで図17における関数”export()”はアドレス保存関数であり、”read_native_int()”は、ネイティブモデル内のint型の変数を読み出すネイティブモデルアクセス関数である。なお、ネイティブモデルアクセス関数は命令モデル内では中身のない関数として作成し、ネイティブモデルアクセス関数内のアドレスに達するとインタフェース手段1404で処理を行い、命令モデル内のレジスタに返し値を設定する。
【0092】
また、インタフェース手段1404はクロスコード用オブジェクト作成時に作られる変数の配置情報を用いて変数名からクロスコード内のアクセスするアドレスまたはレジスタを決定することができる。また、図16では使用していないが、ネイティブコード内で宣言されたポインタ変数を用いてクロスコード内で間接アクセスしているとき、ネイティブモデルアクセス関数に変換し、ネイティブモデル内のアドレスを用いてアクセスする。
【0093】
また、図16の例にはないが、ポインタ変数Aへ他のポインタ変数Bの値が代入されている場合において、ポインタ変数Aを用いて間接アクセスするときは、ポインタ変数Bがどこで代入されているかによってアクセス関数に変換するか否かを判断する。
【0094】
なお、一方の動作モデル用コード内だけでアクセスされるが、宣言だけは異なる動作モデル用コード内で行われている変数は、宣言部の記述を移動することにより、アクセス関数を用いずにシミュレーションを実行することはいうまでもない。
【0095】
なお、同じポインタ変数に両方のコード内で代入が行われているときには本実施の形態では処理できないが、このとき一方の代入処理を他方に移すことによって対応することができる。
【0096】
以上のように、第4の実施の形態(請求項12〜15相当)にかかる性能評価用シミュレーションシステムにより、ネイティブモデルで実行すべき部分と命令セットモデルで実行すべき部分が混在したソースプログラムを用いたシミュレーションにおいて、互いのプログラム内で宣言されている変数やメモリ空間を用いて動作を記述することができる。
【0097】
(第5の実施の形態)
図18は本発明の第5の実施の形態における性能評価用シミュレーションシステムの構成を表す図である。
【0098】
図18において、1801はプロセッサモデルであり、このプロセッサモデル1801は、命令セットモデル用オブジェクトコード1806を読み込み命令列を逐次解釈して動作する命令セットモデル1802と、シミュレーションを実行するネイティブモデル用オブジェクトコード1807を直接呼び出して実行するネイティブモデル1803と、命令セットモデル1802用の入力イベントとネイティブモデル1803用の入力イベントを受け付けるイベント入力手段1804と、命令セットモデル1802から出力される出力イベントとネイティブモデル1803から出力される出力イベントを受け付け、他のシミュレーションモデルに出力するイベント出力手段1805とを含んでいる。1808は割り込み入力手段であり、プロセッサモデル1801に対し割り込みイベントを入力する。1809は第1の実施の形態で示したバスモデルと同様のシミュレーションモデルであり、プロセッサモデルから送られる抽象度の異なるイベントを処理する。
【0099】
命令セットモデル1802とネイティブモデル1803は第2の実施の形態で示したプロセッサモデルと同様にオブジェクトコードを解釈しながら処理を切替えて動作する。また、命令セットモデル1802は、シミュレーション実行中に外部バスアクセスが発生すると、トランザクションレベルのイベントを発生し、イベント出力手段1805を介してバスモデル1809にアクセスする。ネイティブモデル1803には外部バスアクセスを発生する関数が予め用意されており、ネイティブモデル1803がオブジェクトコード1807内の関数を実行中に外部バスアクセスを発生する関数が呼び出されると、データフローレベルのイベントを発生し、イベント出力手段1805を介してバスモデル1809にアクセスする。また、イベント入力手段1804は入力された割り込みイベントを解析し、命令セットモデル1802で処理すべき割り込みであれば、命令セットモデル1802にその割り込みを送り、ネイティブモデル1803で実行すべき割り込みであれば、ネイティブモデル1803にその割り込みを送る。
【0100】
図19は割り込み入力手段1808から入力される割り込みイベントの一例であり、1901はレベル3のレベル割り込みの発生を意味しており、命令セットモデル1802で処理すべき割り込みと判断される。一方、1902はオブジェクトコード内の関数function1の実行を要求する割り込みであり、ネイティブモデル1803で処理すべき割り込みと判断される。命令セットモデル1802は、1901に示す割り込みが入力されると、命令セットモデルの動作中であれば命令セットモデル1802で割り込み処理を実行し、ネイティブモデルの実行中であれば、命令セットモデル1802に処理が移るのを待って割り込み処理を実行する。ネイティブモデル1803は、1902に示す割り込みが入力されると、ネイティブモデルの動作中であれば、現在実行中の関数の終了を待って割り込み処理を実行し、命令セットモデルの動作中であれば命令セットモデル1802に処理切替え要求を送り、処理が移るのを待って割り込み処理を実行し、実行が終了すると命令セットモデル1802に処理を戻す。命令セットモデル1802は、処理切替え要求を受けると、次に実行するべきアドレスを記憶し、ネイティブモデル1803に処理を移し、ネイティブモデル1803からの処理が戻ると、保存したアドレスから処理を再開する。
【0101】
以上のように第5の実施の形態によると、請求項16相当の性能評価用シミュレーションシステムにより外部から入力される割り込みイベントの種類に応じて、割り込み処理を実行する動作モデルを切替えることができる。また、請求項17相当の性能評価用シミュレーションシステムによると、抽象度の異なるイベントを入出力するシミュレーションモデルと複数の動作モデル用のソースコードを混在して記述したソースコードにより動作が記述されるプロセッサモデルを接続してシミュレーションを行うことができるため、多様な抽象度のソフトウェアと入力データが混在した状態でシステムの評価を行うことができる。
【0102】
【発明の効果】
以上説明したように、本発明によれば、抽象度の混在した入力に対するシステムの構成要素の動作を、各入力に応じた抽象度の異なる処理の相互作用を考慮しながらシミュレートすることができるため、評価目的に応じて必要なデータのみを詳細化して処理性能の評価を行うことができ、入力データを準備する工数を大幅に削減することができる。また、各構成要素について、詳細な動作が必要なときのみ高い精度のシミュレーションが実行されるため、システム全体としてのシミュレーション速度を高めることができ、効率的に評価を行える。
【0103】
さらに、プログラムにより動作が記述されるプロセッサモデルに対し、複数の動作モデル向けの記述を混在したソースプログラムにより動作を記述してシミュレートできるため、評価目的に応じてプログラム中の必要な部分のみを詳細化して評価を行うことができる。また、評価用プログラムの準備の工数を削減し、かつシミュレーション速度を高めることができ、効率的に評価を行える。
【0104】
特に、命令セットモデル用の動作とネイティブモデル用の動作記述を同じ構文規則を持つ言語で記述することにより、ソースプログラムを変更することなく動作を実行するモデルを変更することができる。また、双方の記述の中で互いの変数やメモリ領域にアクセスすることができるため、評価目的に応じてプログラム中の必要な部分のみを詳細にシミュレートすることができる。また、抽象度の異なる動作の間でのデータの依存を容易に記述できるため、評価用プログラムの準備の工数を削減し、かつシミュレーション速度を高めることができ、効率的に評価を行える。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態におけるシミュレーションモデルの構成を表す図である。
【図2】本発明の第1の実施の形態におけるモデル動作手段の動作を示すフローチャートである。
【図3】本発明の第1の実施の形態におけるシミュレーションモデルの具体的な構成を表す図である。
【図4】本発明の第1の実施の形態におけるプロセッサのモデルからの入力イベントの例である。
【図5】本発明の第1の実施の形態における入力デバイスのモデルからの入力イベントの例である。
【図6】本発明の第1の実施の形態におけるメモリのモデルへの出力イベントの例である。
【図7】本発明の第2および第3および第4の実施の形態におけるシステムの構成を表す図である。
【図8】本発明の第2の実施の形態におけるソースプログラムの例を表す図である。
【図9】本発明の第2の実施の形態におけるコンパイラの動作を示すフローチャートである。
【図10】本発明の第2の実施の形態におけるプロセッサモデルの動作を示すフローチャートである。
【図11】本発明の第3の実施の形態におけるソースプログラムの例を表す図である。
【図12】本発明の第3の実施の形態におけるコンパイラの動作を示すフローチャートである。
【図13】本発明の第3の実施の形態におけるプロセッサモデルの動作を示すフローチャートである。
【図14】本発明の第4の実施の形態におけるプロセッサモデルの構成を表す図である。
【図15】本発明の第4の実施の形態におけるコンパイラの動作の一部を示すフローチャートである。
【図16】本発明の第4の実施の形態におけるソースプログラムの例を表す図である。
【図17】本発明の第4の実施の形態におけるソースプログラムを変換して作成されるソースプログラムの例を表す図である。
【図18】本発明の第5の実施の形態における評価システムの構成を表す図である。
【図19】本発明の第5の実施の形態における割り込み入力手段からの入力イベントの例である。
【符号の説明】
101 イベント入力手段
102 モデル動作手段群
103 競合解決手段(共有情報管理手段)
104 イベント出力手段
301 バスモデル
302 プロセッサモデル
303 入力デバイスモデル
304 メモリモデル
305 イベント入力手段
306 トランザクション動作手段
307 データフロー動作手段
308 バス競合解決手段
309 イベント出力手段
701 プロセッサモデル
702 命令セットモデル
703 ネイティブモデル
704 コンパイラ
705 ソースプログラム
706 命令セットモデル用オブジェクトコード
707 ネイティブモデル用オブジェクトコード
708 対応表
1401 プロセッサモデル
1402 命令セットモデル
1403 ネイティブモデル
1404 インタフェース手段
1405 アドレス記憶手段
1406 変数アクセス手段
1801 プロセッサモデル
1802 命令セットモデル
1803 ネイティブモデル
1804 イベント入力手段
1805 イベント出力手段
1806 命令セットモデル用オブジェクトコード
1807 ネイティブモデル用オブジェクトコード
1808 割り込み入力手段
1809 バスモデル

Claims (17)

  1. システムの構成要素の動作をモデル化してシミュレーションを行うシミュレーションモデルを用いる性能評価用シミュレーションシステムであって、
    前記構成要素の動作をシミュレートする複数のモデル動作手段と、前記構成要素に接続される他の構成要素より送られる抽象度の異なるシミュレーションイベントを受け付けるイベント入力手段と、
    前記複数のモデル動作手段で共有される情報を管理する共有情報管理手段を有し、
    前記イベント入力手段は入力されたイベントに応じて前記モデル動作手段の1つを選択し、受け付けたシミュレーションイベントを前記選択したモデル動作手段に送り、
    前記モデル動作手段は前記イベント入力手段より送られたシミュレーションイベントを入力として用い、前記共有情報管理手段と情報を授受して前記構成要素のシミュレーションを実行することを特徴とする性能評価用シミュレーションシステム。
  2. さらに、前記構成要素に接続される他の構成要素にイベントを出力するイベント出力手段を有し、前記モデル動作手段がシミュレーション実行中に外部に出力するイベントの発生を判断すると、発生したイベントを前記イベント出力手段に送り、前記イベント出力手段が受け取ったイベントを出力することを特徴とする請求項1に記載の性能評価用シミュレーションシステム。
  3. 前記共有情報管理手段が、前記構成要素内部の1つまたは複数の資源を占有するタイミングを調停する競合解決手段であり、
    前記モデル動作手段は、モデル内の資源を利用すると判断すると、前記競合解決手段に資源利用要求を送り、前記競合解決手段により資源利用要求が許可されるまで当該資源を利用する動作を停止し、資源利用要求が許可された後に動作を再開し、資源が不要になると前記競合解決手段に対し資源解放を通知し、
    前記競合解決手段は、前記複数のモデル動作手段から受けた資源利用要求を調停し、前記モデル動作手段に資源利用を許可すると判断したとき前記モデル動作手段に対し資源利用の許可を通知することを特徴とする請求項1または請求項2に記載の性能評価用シミュレーションシステム。
  4. プロセッサの動作をモデル化してシミュレーションを行う性能評価用シミュレーションシステムであって、
    オブジェクトコードを解釈してシミュレーションを実行する複数の動作手段を有し、前記複数の動作手段を切替えながらシミュレーションを実行するプロセッサモデルと、
    前記プロセッサモデルの複数の動作手段用の記述が混在したソースプログラムを解析し、前記複数の動作手段が解釈可能な複数のオブジェクトコードを生成するコンパイラ手段とを含むことを特徴とする性能評価用シミュレーションシステム。
  5. 前記複数の動作手段用の記述の少なくとも2つが、同一の構文規則を持つ高級言語で記述されていることを特徴とする請求項4に記載の性能評価用シミュレーションシステム。
  6. 前記複数の動作手段の1つが、前記プロセッサ用の命令列を逐次解釈して動作する命令セットモデルであり、
    前記ソースプログラムが、前記命令セットモデルで実行する部分であるクロスコード部の中に、他の動作手段で実行する動作コードが含まれた構造を有しており、
    前記ソースプログラムを解析しオブジェクトコードを作成するコンパイラ手段が、前記ソースプログラム中の前記クロスコード部から前記動作コード部を分離し、前記クロスコード部を前記プロセッサ用のオブジェクトコードに変換し、前記動作コード部として分離したソースコードにラベルを付加し、前記ラベルを付加した前記動作コード部を前記動作コードを実行するモデル用のオブジェクトコードに変換し、前記動作コードを分離した前記クロスコード部のオブジェクトコード上でのアドレスと前記処理単位毎のラベルと使用する動作手段との対応表を作成し、
    前記命令セットモデルが、前記クロスコード部のオブジェクトコードを解釈して実行し、前記動作コード部を削除したアドレスに到達すると前記対応表を参照し、前記命令セットモデルの実行アドレスに対応するラベルを見つけ、前記ラベルに対応する動作手段にラベルを通知して前記動作手段に制御を移し、
    前記動作手段が、前記ラベルに対応する動作コード部のオブジェクトコードを解釈して実行し、実行が終了すると前記命令セットモデルに制御を移し、前記命令セットモデルが処理を再開することを特徴とする請求項4または請求項5に記載の性能評価用シミュレーションシステム。
  7. 前記動作手段の1つが、シミュレーションを実行する汎用計算機用のオブジェクトコードを直接呼び出して実行するネイティブモデルであり、前記コンパイラ手段が、前記ネイティブモデルで実行する動作コード部をネイティブコード部として分離し、前記ネイティブコード部として分離したソースコードの処理単位毎に関数名を付加し、前記関数名を付加した前記ネイティブコード部をシミュレーションを実行する汎用計算機用のオブジェクトコードに変換することを特徴とする請求項6に記載の性能評価用シミュレーションシステム。
  8. 前記複数の動作手段が、前記プロセッサ用の命令列を逐次解釈して動作する命令セットモデルと、シミュレーションを実行する汎用計算機用のオブジェクトコードを直接呼び出して実行するネイティブモデルとを含み、
    前記ソースプログラムが、前記ネイティブモデルで実行するネイティブコード部の中に前記命令セットモデルで実行するクロスコード部が含まれた構造を有しており、
    前記ソースプログラムを解析しオブジェクトコードを作成するコンパイラ手段が、前記ネイティブコード部から前記クロスコード部を分離し、前記クロスコード部として分離したソースコードに関数名を付加し、前記関数名を付加した前記クロスコード部を前記プロセッサ用のオブジェクトコードに変換し、前記クロスコード部を分離した前記ネイティブコード部に前記命令セットモデルに処理を移すための処理切替え関数を挿入し、前記ネイティブコード部を汎用計算機用オブジェクトコードに変換し、
    前記プロセッサモデルが、処理開始時に前記命令セットモデルで初期化処理を実行後に前記ネイティブモデルに処理を移し、前記ネイティブモデル実行中に前記処理切替え関数が呼ばれると前記命令セットモデルに処理を移し、前記プロセッサモデルの関数呼び出し命令に相当する処理を行い、前記命令セットモデルが前記クロスコード部のオブジェクトコードを解釈して実行し、実行が終了するとネイティブモデルに処理を移し、前記ネイティブモデルが処理を再開することを特徴とする請求項4または請求項5に記載の性能評価用シミュレーションシステム。
  9. 前記ソースプログラムが第1のクロスコード部の中に含まれるネイティブコード部内にさらに第2のクロスコードが含まれる入れ子構造を有するとき、前記コンパイラ手段が、前記第2のクロスコードを前記ネイティブコードから分離し、前記第2のクロスコードを前記第1のクロスコードの中の前記ネイティブコードを削除した位置に挿入し、前記ネイティブコードの前記第2のクロスコードを削除した位置に前記命令セットモデルに処理を移すための処理切替え関数を挿入し、
    前記プロセッサモデルが、前記ネイティブモデルを実行中に前記処理切替え関数が呼ばれると前記命令セットモデルに処理を移し、前記第2のクロスコード部のオブジェクトコードを解釈して実行し、実行が終了するとネイティブモデルに処理を移し、前記ネイティブモデルの処理を再開し、前記ネイティブモデルの処理が終了すると前記命令セットモデルの処理を再開することを特徴とする請求項7または請求項8に記載の性能評価用シミュレーションシステム。
  10. 前記ソースプログラムが第1のネイティブコードの中に含まれるクロスコード内にさらに第2のネイティブコードが含まれる入れ子構造を有するとき、
    前記コンパイラ手段が、前記第2のネイティブコードを前記クロスコードから分離し、前記第2のネイティブコードを前記第1のネイティブコードの中の前記クロスコードを削除した位置に挿入し、前記第2のネイティブコードの前に第1の処理切替え関数を挿入し、前記第2のネイティブコードの後に第2の処理切替え関数を挿入し、前記クロスコードの前記第2のネイティブコードを削除した位置のアドレスを抽出し、
    前記プロセッサモデルが、第1の処理切替え関数に達すると前記命令セットモデルに処理を移し、前記命令セットモデルを実行中に前記アドレスに達すると、前記ネイティブモデルの第1の処理切替え関数の直後に処理を移し、前記第2の処理切替え関数に達すると前記命令セットモデルの処理を再開し、前記命令セットモデルの処理が終了すると、前記ネイティブモデルの処理を前記第2の処理切替え関数の直後から再開することを特徴とする請求項7または請求項8に記載の性能評価用シミュレーションシステム。
  11. 前記コンパイラ手段が、さらにクロスコード部内で宣言されている変数の中で1つの処理単位のネイティブコード部内でのみ使用されている第1の変数を抽出し、前記第1の変数の宣言を前記クロスコード部内から前記ネイティブコード部内に移し、前記ネイティブコード部内で宣言されている変数の中で前記クロスコード部内のみで使用されている第2の変数を抽出し、前記第2の変数の宣言を前記ネイティブコード部内から前記ネイティブコード部内に移すことを特徴とする請求項7または請求項8に記載の性能評価用シミュレーションシステム。
  12. 前記プロセッサモデルが、さらに前記命令セットモデルの持つ情報にアクセスするインタフェース手段を持ち、前記コンパイラ手段が、前記ネイティブコード部から前記クロスコード部で宣言されている変数にアクセスしている記述を抽出し、前記インタフェース手段にアクセスする処理に変換することを特徴とする請求項7または請求項9または請求項10に記載の性能評価用シミュレーションシステム。
  13. 前記コンパイラ手段が、さらに、前記クロスコード部内で値が代入されているポインタ変数を用いてメモリにアクセスしている処理を前記ネイティブコード部内から抽出し、前記インタフェース手段にアクセスする処理に変換することを特徴とする請求項12に記載の性能評価用シミュレーションシステム。
  14. 前記プロセッサモデルが、さらにネイティブモデル内の変数のアドレスを記憶するアドレス記憶手段と、前記記憶されたアドレスを用いて変数にアクセスを行う変数アクセス手段を有し、前記コンパイラ手段が、前記クロスコード部から前記ネイティブコード部で宣言されている変数にアクセスしている記述を抽出し、前記ネイティブコード部に前記アドレス記憶手段を用いて前記変数のアドレスを記憶する記述を追加し、前記クロスコード部で前記変数にアクセスしている記述を前記変数アクセス手段に置き換えることを特徴とする請求項8または請求項9または請求項10に記載の性能評価用シミュレーションシステム。
  15. 前記コンパイラ手段が、さらに、前記ネイティブコード部内で値が代入されているポインタ変数を用いてメモリにアクセスしている処理を前記クロスコード部内から抽出し、前記変数アクセス手段に置き換えることを特徴とする請求項14に記載の性能評価用シミュレーションシステム。
  16. 前記プロセッサモデルがさらに前記プロセッサに接続される他の構成要素より送られる抽象度の異なるシミュレーションイベントを受け付けるイベント入力手段を有し、前記イベント入力手段は入力されたイベントに応じて前記動作手段の1つを選択し、受け付けたシミュレーションイベントを選択した第1の動作手段に送り、前記第1の動作手段が実行中であれば前記シミュレーションイベントを入力として用いて処理を継続し、前記第1の動作手段が停止中であれば実行中の第2の動作手段に処理切替え要求を送り、前記第2の動作手段は処理の切替えが可能になった時点で動作を中止して前記第1の動作手段に処理を切替え、前記第1の動作手段が前記シミュレーションイベントを入力として用いて処理を実行し、前記第1の動作手段が前記シミュレーションイベントに対する処理を終了すると前記第2の動作手段に処理を切替えることを特徴とする請求項4に記載の性能評価用シミュレーションシステム。
  17. 前記プロセッサに請求項2または請求項3記載のシミュレーションモデルが接続されており、前記シミュレーションモデルの出力イベントを前記プロセッサモデルの入力イベントとして用い、前記プロセッサモデルの複数の動作手段が出力するイベントを前記シミュレーションモデルの入力イベントとして用いることを特徴とする請求項16に記載の性能評価用シミュレーションシステム。
JP2002179762A 2002-06-20 2002-06-20 性能評価用シミュレーションシステム Pending JP2004021907A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002179762A JP2004021907A (ja) 2002-06-20 2002-06-20 性能評価用シミュレーションシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002179762A JP2004021907A (ja) 2002-06-20 2002-06-20 性能評価用シミュレーションシステム

Publications (1)

Publication Number Publication Date
JP2004021907A true JP2004021907A (ja) 2004-01-22

Family

ID=31177089

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002179762A Pending JP2004021907A (ja) 2002-06-20 2002-06-20 性能評価用シミュレーションシステム

Country Status (1)

Country Link
JP (1) JP2004021907A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010146292A (ja) * 2008-12-18 2010-07-01 Fujitsu Microelectronics Ltd 性能評価装置、性能評価方法及びシミュレーションプログラム
WO2011036768A1 (ja) * 2009-09-25 2011-03-31 株式会社 東芝 シミュレーション装置
WO2019148040A1 (en) * 2018-01-26 2019-08-01 Ge Inspection Technologies, Lp Autonomous hybrid analytics modeling platform
US10908934B2 (en) 2017-07-06 2021-02-02 Fujitsu Limited Simulation program, method, and device
JP2021043749A (ja) * 2019-09-12 2021-03-18 株式会社日立ソリューションズ シミュレーション方法およびシミュレーションプログラム
WO2023128357A1 (ko) * 2021-12-29 2023-07-06 한국과학기술원 소프트웨어 기반의 개별분리 아키텍처 시스템 시뮬레이터 및 그의 방법

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010146292A (ja) * 2008-12-18 2010-07-01 Fujitsu Microelectronics Ltd 性能評価装置、性能評価方法及びシミュレーションプログラム
US8688428B2 (en) 2008-12-18 2014-04-01 Fujitsu Semiconductor Limited Performance evaluation device, performance evaluation method and simulation program
WO2011036768A1 (ja) * 2009-09-25 2011-03-31 株式会社 東芝 シミュレーション装置
US10908934B2 (en) 2017-07-06 2021-02-02 Fujitsu Limited Simulation program, method, and device
WO2019148040A1 (en) * 2018-01-26 2019-08-01 Ge Inspection Technologies, Lp Autonomous hybrid analytics modeling platform
JP2021043749A (ja) * 2019-09-12 2021-03-18 株式会社日立ソリューションズ シミュレーション方法およびシミュレーションプログラム
WO2021049130A1 (ja) 2019-09-12 2021-03-18 株式会社日立ソリューションズ シミュレーション方法および記録媒体
US20220164166A1 (en) * 2019-09-12 2022-05-26 Hitachi Solutions, Ltd. Simulation method and recording medium
JP7225064B2 (ja) 2019-09-12 2023-02-20 株式会社日立ソリューションズ シミュレーション方法およびシミュレーションプログラム
US11989535B2 (en) 2019-09-12 2024-05-21 Hitachi Solutions, Ltd. Simulation method and recording medium
WO2023128357A1 (ko) * 2021-12-29 2023-07-06 한국과학기술원 소프트웨어 기반의 개별분리 아키텍처 시스템 시뮬레이터 및 그의 방법

Similar Documents

Publication Publication Date Title
US11748240B2 (en) Scheduling of scenario models for execution within different computer threads and scheduling of memory regions for use with the scenario models
US7246052B2 (en) Bus master and bus slave simulation using function manager and thread manager
US8644305B2 (en) Method and system for modeling a bus for a system design incorporating one or more programmable processors
US6993469B1 (en) Method and apparatus for unified simulation
US20120029900A1 (en) Simulation method and system for simulating a multi-core hardware platform
US11513818B1 (en) Method, product, and system for integrating a hardware accelerator with an extensible processor
CN103793208B (zh) 矢量dsp处理器和协处理器协同运作的数据处理系统
JP2007094591A (ja) シミュレーション装置及びシミュレーション方法
US7409670B1 (en) Scheduling logic on a programmable device implemented using a high-level language
Garavel et al. Verification of an industrial SystemC/TLM model using LOTOS and CADP
JP2009539186A (ja) ハードウエアエミュレーションシステムのプロセッサを同期化する方法及び装置
JP2007310565A (ja) システムlsi検証装置及びシステムlsi検証プログラム
JP2004021907A (ja) 性能評価用シミュレーションシステム
Pouillon et al. A generic instruction set simulator api for timed and untimed simulation and debug of mp2-socs
US7370311B1 (en) Generating components on a programmable device using a high-level language
US9876729B1 (en) Method and system for efficient data streaming in an emulation system
Lantreibecq et al. Model checking and co-simulation of a dynamic task dispatcher circuit using CADP
Lantreibecq et al. Formal analysis of a hardware dynamic task dispatcher with CADP
US20190012418A1 (en) Simulation program, method, and device
US9721048B1 (en) Multiprocessing subsystem with FIFO/buffer modes for flexible input/output processing in an emulation system
US20080270748A1 (en) Hardware simulation accelerator design and method that exploits a parallel structure of user models to support a larger user model size
Park et al. A mixed-level virtual prototyping environment for SystemC-based design methodology
US20160171138A1 (en) Method and computer system for simulating operation of a programmable integrated circuit
Jääskeläinen et al. D4. 6–Integrated System Software Stack
Wieferink et al. Processor Modeling