(57)【要約】【課題】抽象度の異なる記述の混在したソースプログラムと抽象度の異なる入力データを用いてシミュレーションを行うことができる性能評価用シミュレーションシステムを提供する。【解決手段】抽象度の異なる記述の混在したソースプログラムを複数のモデル動作手段毎の記述に分離してオブジェクトコードを生成するコンパイラ手段と、入力イベントとオブジェクトコードを解釈して実行するモデル動作手段を複数持ち、それらが互いに協調しながら動作するシミュレーションモデルから構成されることを特徴とする性能評価用シミュレーションシステム。【選択図】　図３
2004021907.tif 000002
【特許請求の範囲】
【請求項１】
システムの構成要素の動作をモデル化してシミュレーションを行うシミュレーションモデルを用いる性能評価用シミュレーションシステムであって、
前記構成要素の動作をシミュレートする複数のモデル動作手段と、前記構成要素に接続される他の構成要素より送られる抽象度の異なるシミュレーションイベントを受け付けるイベント入力手段と、
前記複数のモデル動作手段で共有される情報を管理する共有情報管理手段を有し、
前記イベント入力手段は入力されたイベントに応じて前記モデル動作手段の１つを選択し、受け付けたシミュレーションイベントを前記選択したモデル動作手段に送り、
前記モデル動作手段は前記イベント入力手段より送られたシミュレーションイベントを入力として用い、前記共有情報管理手段と情報を授受して前記構成要素のシミュレーションを実行することを特徴とする性能評価用シミュレーションシステム。
【請求項２】
さらに、前記構成要素に接続される他の構成要素にイベントを出力するイベント出力手段を有し、前記モデル動作手段がシミュレーション実行中に外部に出力するイベントの発生を判断すると、発生したイベントを前記イベント出力手段に送り、前記イベント出力手段が受け取ったイベントを出力することを特徴とする請求項１に記載の性能評価用シミュレーションシステム。
【請求項３】
前記共有情報管理手段が、前記構成要素内部の１つまたは複数の資源を占有するタイミングを調停する競合解決手段であり、
前記モデル動作手段は、モデル内の資源を利用すると判断すると、前記競合解決手段に資源利用要求を送り、前記競合解決手段により資源利用要求が許可されるまで当該資源を利用する動作を停止し、資源利用要求が許可された後に動作を再開し、資源が不要になると前記競合解決手段に対し資源解放を通知し、
前記競合解決手段は、前記複数のモデル動作手段から受けた資源利用要求を調停し、前記モデル動作手段に資源利用を許可すると判断したとき前記モデル動作手段に対し資源利用の許可を通知することを特徴とする請求項１または請求項２に記載の性能評価用シミュレーションシステム。
【請求項４】
プロセッサの動作をモデル化してシミュレーションを行う性能評価用シミュレーションシステムであって、
オブジェクトコードを解釈してシミュレーションを実行する複数の動作手段を有し、前記複数の動作手段を切替えながらシミュレーションを実行するプロセッサモデルと、
前記プロセッサモデルの複数の動作手段用の記述が混在したソースプログラムを解析し、前記複数の動作手段が解釈可能な複数のオブジェクトコードを生成するコンパイラ手段とを含むことを特徴とする性能評価用シミュレーションシステム。
【請求項５】
前記複数の動作手段用の記述の少なくとも２つが、同一の構文規則を持つ高級言語で記述されていることを特徴とする請求項４に記載の性能評価用シミュレーションシステム。
【請求項６】
前記複数の動作手段の１つが、前記プロセッサ用の命令列を逐次解釈して動作する命令セットモデルであり、
前記ソースプログラムが、前記命令セットモデルで実行する部分であるクロスコード部の中に、他の動作手段で実行する動作コードが含まれた構造を有しており、
前記ソースプログラムを解析しオブジェクトコードを作成するコンパイラ手段が、前記ソースプログラム中の前記クロスコード部から前記動作コード部を分離し、前記クロスコード部を前記プロセッサ用のオブジェクトコードに変換し、前記動作コード部として分離したソースコードにラベルを付加し、前記ラベルを付加した前記動作コード部を前記動作コードを実行するモデル用のオブジェクトコードに変換し、前記動作コードを分離した前記クロスコード部のオブジェクトコード上でのアドレスと前記処理単位毎のラベルと使用する動作手段との対応表を作成し、
前記命令セットモデルが、前記クロスコード部のオブジェクトコードを解釈して実行し、前記動作コード部を削除したアドレスに到達すると前記対応表を参照し、前記命令セットモデルの実行アドレスに対応するラベルを見つけ、前記ラベルに対応する動作手段にラベルを通知して前記動作手段に制御を移し、
前記動作手段が、前記ラベルに対応する動作コード部のオブジェクトコードを解釈して実行し、実行が終了すると前記命令セットモデルに制御を移し、前記命令セットモデルが処理を再開することを特徴とする請求項４または請求項５に記載の性能評価用シミュレーションシステム。
【請求項７】
前記動作手段の１つが、シミュレーションを実行する汎用計算機用のオブジェクトコードを直接呼び出して実行するネイティブモデルであり、前記コンパイラ手段が、前記ネイティブモデルで実行する動作コード部をネイティブコード部として分離し、前記ネイティブコード部として分離したソースコードの処理単位毎に関数名を付加し、前記関数名を付加した前記ネイティブコード部をシミュレーションを実行する汎用計算機用のオブジェクトコードに変換することを特徴とする請求項６に記載の性能評価用シミュレーションシステム。
【請求項８】
前記複数の動作手段が、前記プロセッサ用の命令列を逐次解釈して動作する命令セットモデルと、シミュレーションを実行する汎用計算機用のオブジェクトコードを直接呼び出して実行するネイティブモデルとを含み、
前記ソースプログラムが、前記ネイティブモデルで実行するネイティブコード部の中に前記命令セットモデルで実行するクロスコード部が含まれた構造を有しており、
前記ソースプログラムを解析しオブジェクトコードを作成するコンパイラ手段が、前記ネイティブコード部から前記クロスコード部を分離し、前記クロスコード部として分離したソースコードに関数名を付加し、前記関数名を付加した前記クロスコード部を前記プロセッサ用のオブジェクトコードに変換し、前記クロスコード部を分離した前記ネイティブコード部に前記命令セットモデルに処理を移すための処理切替え関数を挿入し、前記ネイティブコード部を汎用計算機用オブジェクトコードに変換し、
前記プロセッサモデルが、処理開始時に前記命令セットモデルで初期化処理を実行後に前記ネイティブモデルに処理を移し、前記ネイティブモデル実行中に前記処理切替え関数が呼ばれると前記命令セットモデルに処理を移し、前記プロセッサモデルの関数呼び出し命令に相当する処理を行い、前記命令セットモデルが前記クロスコード部のオブジェクトコードを解釈して実行し、実行が終了するとネイティブモデルに処理を移し、前記ネイティブモデルが処理を再開することを特徴とする請求項４または請求項５に記載の性能評価用シミュレーションシステム。
【請求項９】
前記ソースプログラムが第１のクロスコード部の中に含まれるネイティブコード部内にさらに第２のクロスコードが含まれる入れ子構造を有するとき、前記コンパイラ手段が、前記第２のクロスコードを前記ネイティブコードから分離し、前記第２のクロスコードを前記第１のクロスコードの中の前記ネイティブコードを削除した位置に挿入し、前記ネイティブコードの前記第２のクロスコードを削除した位置に前記命令セットモデルに処理を移すための処理切替え関数を挿入し、
前記プロセッサモデルが、前記ネイティブモデルを実行中に前記処理切替え関数が呼ばれると前記命令セットモデルに処理を移し、前記第２のクロスコード部のオブジェクトコードを解釈して実行し、実行が終了するとネイティブモデルに処理を移し、前記ネイティブモデルの処理を再開し、前記ネイティブモデルの処理が終了すると前記命令セットモデルの処理を再開することを特徴とする請求項７または請求項８に記載の性能評価用シミュレーションシステム。
【請求項１０】
前記ソースプログラムが第１のネイティブコードの中に含まれるクロスコード内にさらに第２のネイティブコードが含まれる入れ子構造を有するとき、
前記コンパイラ手段が、前記第２のネイティブコードを前記クロスコードから分離し、前記第２のネイティブコードを前記第１のネイティブコードの中の前記クロスコードを削除した位置に挿入し、前記第２のネイティブコードの前に第１の処理切替え関数を挿入し、前記第２のネイティブコードの後に第２の処理切替え関数を挿入し、前記クロスコードの前記第２のネイティブコードを削除した位置のアドレスを抽出し、
前記プロセッサモデルが、第１の処理切替え関数に達すると前記命令セットモデルに処理を移し、前記命令セットモデルを実行中に前記アドレスに達すると、前記ネイティブモデルの第１の処理切替え関数の直後に処理を移し、前記第２の処理切替え関数に達すると前記命令セットモデルの処理を再開し、前記命令セットモデルの処理が終了すると、前記ネイティブモデルの処理を前記第２の処理切替え関数の直後から再開することを特徴とする請求項７または請求項８に記載の性能評価用シミュレーションシステム。
【請求項１１】
前記コンパイラ手段が、さらにクロスコード部内で宣言されている変数の中で１つの処理単位のネイティブコード部内でのみ使用されている第１の変数を抽出し、前記第１の変数の宣言を前記クロスコード部内から前記ネイティブコード部内に移し、前記ネイティブコード部内で宣言されている変数の中で前記クロスコード部内のみで使用されている第２の変数を抽出し、前記第２の変数の宣言を前記ネイティブコード部内から前記ネイティブコード部内に移すことを特徴とする請求項７または請求項８に記載の性能評価用シミュレーションシステム。
【請求項１２】
前記プロセッサモデルが、さらに前記命令セットモデルの持つ情報にアクセスするインタフェース手段を持ち、前記コンパイラ手段が、前記ネイティブコード部から前記クロスコード部で宣言されている変数にアクセスしている記述を抽出し、前記インタフェース手段にアクセスする処理に変換することを特徴とする請求項７または請求項９または請求項１０に記載の性能評価用シミュレーションシステム。
【請求項１３】
前記コンパイラ手段が、さらに、前記クロスコード部内で値が代入されているポインタ変数を用いてメモリにアクセスしている処理を前記ネイティブコード部内から抽出し、前記インタフェース手段にアクセスする処理に変換することを特徴とする請求項１２に記載の性能評価用シミュレーションシステム。
【請求項１４】
前記プロセッサモデルが、さらにネイティブモデル内の変数のアドレスを記憶するアドレス記憶手段と、前記記憶されたアドレスを用いて変数にアクセスを行う変数アクセス手段を有し、前記コンパイラ手段が、前記クロスコード部から前記ネイティブコード部で宣言されている変数にアクセスしている記述を抽出し、前記ネイティブコード部に前記アドレス記憶手段を用いて前記変数のアドレスを記憶する記述を追加し、前記クロスコード部で前記変数にアクセスしている記述を前記変数アクセス手段に置き換えることを特徴とする請求項８または請求項９または請求項１０に記載の性能評価用シミュレーションシステム。
【請求項１５】
前記コンパイラ手段が、さらに、前記ネイティブコード部内で値が代入されているポインタ変数を用いてメモリにアクセスしている処理を前記クロスコード部内から抽出し、前記変数アクセス手段に置き換えることを特徴とする請求項１４に記載の性能評価用シミュレーションシステム。
【請求項１６】
前記プロセッサモデルがさらに前記プロセッサに接続される他の構成要素より送られる抽象度の異なるシミュレーションイベントを受け付けるイベント入力手段を有し、前記イベント入力手段は入力されたイベントに応じて前記動作手段の１つを選択し、受け付けたシミュレーションイベントを選択した第１の動作手段に送り、前記第１の動作手段が実行中であれば前記シミュレーションイベントを入力として用いて処理を継続し、前記第１の動作手段が停止中であれば実行中の第２の動作手段に処理切替え要求を送り、前記第２の動作手段は処理の切替えが可能になった時点で動作を中止して前記第１の動作手段に処理を切替え、前記第１の動作手段が前記シミュレーションイベントを入力として用いて処理を実行し、前記第１の動作手段が前記シミュレーションイベントに対する処理を終了すると前記第２の動作手段に処理を切替えることを特徴とする請求項４に記載の性能評価用シミュレーションシステム。
【請求項１７】
前記プロセッサに請求項２または請求項３記載のシミュレーションモデルが接続されており、前記シミュレーションモデルの出力イベントを前記プロセッサモデルの入力イベントとして用い、前記プロセッサモデルの複数の動作手段が出力するイベントを前記シミュレーションモデルの入力イベントとして用いることを特徴とする請求項１６に記載の性能評価用シミュレーションシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、論理回路等から構成されるハードウェアを用いてシステムを設計するに当たり、シミュレータを用いて効率良くシステムの処理性能の評価を行う性能評価用シミュレーションシステムに関する。
【０００２】
【従来の技術】
論理回路等から構成されるハードウェアを用いるシステムの設計では、実際のハードウェアを作成する前に、シミュレーションを行ってシステムの評価を行うことにより、仕様の不具合や性能不足を回避したり、過剰な性能に伴うコストや消費電力の増大を抑えたりする。
【０００３】
シミュレーションによりシステムの評価を行う際には、システムを構成する要素毎に動作モデルを作成し、それらを統合し、システム全体の動作を模擬するモデルを作成する。このとき、各設計段階での評価目的に合わせて動作モデルが作成される。動作モデルとしては、クロック毎の信号レベルでの動作を記述したクロックモデル、複数の信号により表される１つの処理（トランザクション）毎に動作をまとめて記述したトランザクションモデル、入力データのまとまりに対する動作を記述したデータフローモデル、リソースの使用時間のみを記述した負荷モデル、時間概念がなく機能のみを記述した機能モデルなどが用いられる。
【０００４】
これらの複数のモデルは、それぞれの抽象度が以下のように互いに異なっている。
【０００５】
クロックモデルは、クロックレベルでハードウェアの動作と一致するため、主に詳細な動作検証を行うために用いられる。
【０００６】
トランザクションモデルは、システムとしての動作が実際のハードウェアと一致するため、システム全体としての動作の詳細な評価に用いられる。
【０００７】
データフローモデルは、制御プロトコルの影響などを考慮していないため、ある程度の誤差を含むが、高速にシミュレートでき、モデルやテストデータの作成が容易であるため、設計初期の段階での性能評価に用いられる。
【０００８】
負荷モデルは、特定の入力データに依らないシステムの統計的な性能を評価するために用いられ、機能モデルはシステムの機能のみを検証するために用いられる。
【０００９】
特に、プロセッサはソフトウェアによって動作が異なるため、ソフトウェアの動作を記述したソースプログラムを変換して作成したオブジェクトコードを解釈して実行するプロセッサモデルが使用される。このとき用いるプロセッサモデルとしては、実際のシステムで用いられるプロセッサ（ターゲットプロセッサ）用のプログラムを用いて正確にシミュレートする命令セットモデルや、シミュレーション実行環境である汎用計算機用のプログラムを用いて概略動作のみ記述し、直接実行するネイティブモデルや、バスアクセス頻度などの情報のパラメータを用いてバスアクセスなどのイベントを乱数を基に発生する乱数動作モデルなどがある。
【００１０】
このように、システムシミュレーションでは抽象度の異なる多様なモデルが用いられ、システムの開発が進むにつれてより詳細なモデルを用いたシミュレーションを行うようになる。ここで、抽象度の高いモデルほどシミュレーション速度が速く、また新規開発ブロックに関しては、抽象度の低い詳細なモデルは設計が進むまで得られず、また詳細なモデルを用いたシミュレーションでは、プロセッサで用いるプログラムや評価対象システムの外に接続される機器のモデルや入力データなどのテストベンチなどについても詳細なプログラムモデルデータが必要となり、多大な工数が必要となる。
【００１１】
そこで、システム全体の一部の機能のみを詳細に評価・検証したいときには、抽象度の異なるモデルを組み合わせてシミュレーションを行うことにより、より効果的に設計途中での目的に合わせた評価・検証を行うことができる。
【００１２】
このような方法として、１つには抽象度の異なるモデルを相互に接続するために、例えばトランザクションをクロックレベルの信号に変換するインタフェースモデルを作成する方法がある。
【００１３】
また、プロセッサモデルにおいて、ターゲットプロセッサ用のプログラム内で別途作成して登録された汎用計算機用のプログラムを呼び出して実行するための特定の関数を用い、命令セットモデルがその関数を実行するときに、別途作成して登録しておいた汎用計算機用のプログラムを呼び出して実行することにより、命令セットモデルとネイティブモデルを切替えながら動作する方法がある。この手法では、ネイティブモデル内で命令セットモデルやプロセッサモデルに接続されたハードウェアモデルに対してイベントを送る予め用意された関数を用いることでプロセッサの概略動作を記述することができる。
【００１４】
また、クロックレベルで実際のハードウェアと動作が一致するクロックレベルのプロセッサモデルとパイプライン動作などにある程度の誤差のある命令レベルのプロセッサモデルを実行途中に切替えながらシミュレートする方法や、バスアクセスを発生するクロックを除き、ハードウェアモデルとの同期を省くことにより命令セットモデルを動作モデルとして用いる方法などがある。
【００１５】
【発明が解決しようとする課題】
しかしながら、インタフェースモデルを用いる手法は、システムの構成要素毎にモデルが固定されているため、１つの構成要素が例えば音声処理と画像処理などのような複数の処理に共用されている場合に、一方の処理により用いられるときのみ詳細にシミュレーションを行うということはできない。また、インタフェースモデルにより変換できるモデルには制限がある。例えば、データフローモデルでバスのモデルに入力されるデータは転送方法などの情報を含み、バスモデル内で解釈され処理される。しかし、信号レベルのモデルでは、ＤＭＡコントローラへの割り込み要求信号の発生やバスに対するデータの供給だけでなく、プロセッサによるＤＭＡコントローラに対するレジスタの設定などが必要となり、データの変換だけでなくソフトウェアの生成などが必要となり、インタフェースモデルで単純に変換できるものではない。
【００１６】
また、プロセッサの動作をソースプログラムで記述するとき、詳細なプログラムを用いたい場所や、動作のみを記述したい場所や、乱数モデルを用いてイベント発生を行いたい場所などがある。このとき、汎用計算機用のプログラムを呼び出す命令セットモデルのように、ソースプログラム内に他のモデルへの切替えを指示する関数を用いる方法では、各動作モデルに対しプログラムを別途用意する必要があり、呼び出す側と呼び出される側で関数名を一致させる必要があるなど管理が複雑になるという問題がある。特に、ターゲットプロセッサ用プログラムと汎用計算機用のプログラムなど同じ高級言語で記述されたプログラムを用いるときでも、動作を切替える位置を変更するには双方のプログラムに対して変更が必要となり、またデータを共有する場合にはインタフェース手段を用意してプログラムの中で明示して用いる必要がある。
【００１７】
また、クロックレベルのプロセッサモデルと命令レベルのプロセッサモデルを用いる手法やハードウェアモデルとの同期を省く手法は、高速なシミュレーションのみを行うための手法であり、詳細なプログラムが必要であることに変わりはない。
【００１８】
本発明は、かかる点に鑑みてなされたものであり、その目的はハードウェアモデルへの入力データの抽象レベルを混在したり、プロセッサモデル用のソースプログラムに抽象度の異なる記述を混在したりしても、容易にシミュレーションを実行できる性能評価用シミュレーションシステムを提供することにある。
【００１９】
【課題を解決するための手段】
前記目的を達成するために、本発明は、システムの構成要素に対し抽象度の異なる複数のモデル動作手段を有し、適時にモデル動作手段を使い分けながらシミュレーションを実行するシミュレーションモデルを用いる。具体的には以下のとおりである。
【００２０】
第１の解決手段として、本発明による性能評価用シミュレーションシステム（請求項１相当）は、データを取り込みながら動作するシステム構成要素を対象とし、抽象度の異なる入力イベントに従い前記構成要素の動作をシミュレートする複数のモデル動作手段と、前記構成要素に接続される他の構成要素より送られる抽象度の異なるシミュレーションイベントを受け付けるイベント入力手段と、前記複数のモデル動作手段で共有される情報を管理する共有情報管理手段を有し、前記イベント入力手段は入力されたイベントに応じて前記モデル動作手段の１つを選択し、受け付けたシミュレーションイベントを前記選択したモデル動作手段に送り、前記モデル動作手段は前記イベント入力手段より送られたシミュレーションイベントを入力として用い、前記共有情報管理手段と情報を授受して前記構成要素のシミュレーションを実行するように構成したものである。この構成によれば、抽象度の異なる入力イベントに対してモデル動作手段を使い分けながらシミュレーションを行うことができる。
【００２１】
上記第１の解決手段において好ましい態様（請求項２相当）は、他の構成要素に対しデータを出力するシステム構成要素を対象とし、さらに前記構成要素に接続される他の構成要素にイベントを出力するイベント出力手段を有し、前記モデル動作手段がシミュレーション実行中に外部に出力するイベントの発生を判断すると、発生したイベントを前記イベント出力手段に送り、前記イベント出力手段が受け取ったイベントを出力するように構成してあることである。この構成によれば、接続される他の構成要素にも抽象度の異なるイベントを送ることができる。
【００２２】
また、上記第１の解決手段において好ましい態様（請求項３相当）は、前記共有情報管理手段を、前記構成要素内部の１つまたは複数の資源を占有するタイミングを調停する競合解決手段とすることである。この場合、前記モデル動作手段は、モデル内の資源を利用すると判断すると、前記競合解決手段に資源利用要求を送り、前記競合解決手段により資源利用要求が許可されるまで当該資源を利用する動作を停止し、資源利用要求が許可された後に動作を再開し、資源が不要になると前記競合解決手段に対し資源解放を通知するものとする。また、前記競合解決手段は、前記複数のモデル動作手段から受けた資源利用要求を調停し、前記モデル動作手段に資源利用を許可すると判断したとき前記モデル動作手段に対し資源利用の許可を通知するものとする。この構成によれば、抽象度の異なる入力に対しても資源の競合による性能低下の評価を行うことができる。
【００２３】
第２の解決手段として、本発明による性能評価用シミュレーションシステム（請求項４相当）は、オブジェクトコードを解釈してシミュレーションを実行する複数の動作手段を有し、前記複数の動作手段を切替えながらシミュレーションを実行するプロセッサモデルと、前記プロセッサモデルの複数の動作手段用の記述が混在したソースプログラムを解析し、前記複数の動作手段が解釈可能な複数のオブジェクトコードを生成するコンパイラ手段とを備えたものとして構成されている。この構成によれば、複数の動作モデル用の記述の混在したソースプログラムを用いてプロセッサの動作の評価を行うことができる。
【００２４】
上記第２の解決手段において好ましい態様（請求項５相当）は、前記複数の動作手段用の記述の少なくとも２つが、同一の構文規則を持つ高級言語で記述されていることである。この構成によれば、前記ソースプログラムを変更することなしに、前記複数の動作手段に割り当てる部分を変更することが可能である。
【００２５】
また、上記第２の解決手段において好ましい態様（請求項６相当）は、前記プロセッサ用の命令列を逐次解釈して動作する命令セットモデルであり、前記ソースプログラムが前記命令セットモデルで実行するクロスコード部の中に他の動作手段で実行する動作コードが含まれた構造を有している。この場合に、前記ソースプログラムを解析しオブジェクトコードを作成するコンパイラ手段が、前記ソースプログラム中の前記クロスコード部から前記動作コード部を分離し、前記クロスコード部を前記プロセッサ用のオブジェクトコードに変換し、前記動作コード部として分離したソースコードにラベルを付加し、前記ラベルを付加した前記動作コード部を前記動作コードを実行するモデル用のオブジェクトコードに変換し、前記動作コードを分離した前記クロスコード部のオブジェクトコード上でのアドレスと前記処理単位毎のラベルと使用する動作手段の対応表を作成する。また、前記命令セットモデルが、前記クロスコード部のオブジェクトコードを解釈して実行し、前記動作コード部を削除したアドレスに到達すると前記対応表を参照し、前記命令セットモデルの実行アドレスに対応するラベルを見つけ、前記ラベルに対応する動作手段にラベルを通知して前記動作手段に制御を移す。そして、前記動作手段が、前記ラベルに対応する動作コード部のオブジェクトコードを解釈して実行し、実行が終了すると前記命令セットモデルに制御を移し、前記命令セットモデルが処理を再開する。この構成によれば、プロセッサで実行されるソフトウェアの動作を、命令セットモデル用ソースコード内に他の動作モデル用のソースコードを混在して記述し、シミュレーションを実行することができる。
【００２６】
さらに、上記の態様（請求項６相当）において好ましい態様（請求項７相当）は、前記動作手段の１つが、シミュレーションを実行する汎用計算機用のオブジェクトコードを直接呼び出して実行するネイティブモデルであり、前記コンパイラ手段が、前記ネイティブモデルで実行する動作コード部をネイティブコード部として分離し、前記ネイティブコード部として分離したソースコードの処理単位毎に関数名を付加し、前記関数名を付加した前記ネイティブコード部をシミュレーションを実行する汎用計算機用のオブジェクトコードに変換するように構成されている。この構成によれば、命令セットモデル用ソースコード内に混在するソースコードとしてネイティブモデル用ソースコードを用いることができる。
【００２７】
第３の解決手段として、本発明による性能評価用シミュレーションシステム（請求項８相当）は、上記の態様（請求項４，請求項５相当）において、前記プロセッサ用の命令列を逐次解釈して動作する命令セットモデルと、シミュレーションを実行する汎用計算機用のオブジェクトコードを直接呼び出して実行するネイティブモデルとを含み、前記ソースプログラムが前記ネイティブモデルで実行するネイティブコード部の中に前記命令セットモデルで実行するクロスコード部が含まれた構造を有している。この場合に、前記ソースプログラムを解析しオブジェクトコードを作成するコンパイラ手段が、前記ネイティブコード部から前記クロスコード部を分離し、前記クロスコード部として分離したソースコードに関数名を付加し、前記関数名を付加した前記クロスコード部を前記プロセッサ用のオブジェクトコードに変換し、前記クロスコード部を分離した前記ネイティブコード部に前記命令セットモデルに処理を移すための処理切替え関数を挿入し、前記ネイティブコード部を汎用計算機用オブジェクトコードに変換する。また、前記プロセッサモデルが、処理開始時に前記命令セットモデルで初期化処理を実行後に前記ネイティブモデルに処理を移し、前記ネイティブモデル実行中に前記処理切替え関数が呼ばれると前記命令セットモデルに処理を移し、前記プロセッサモデルの関数呼び出し命令に相当する処理を行い、前記命令セットモデルが前記クロスコード部のオブジェクトコードを解釈して実行し、実行が終了するとネイティブモデルに処理を移し、前記ネイティブモデルが処理を再開する。この構成によれば、プロセッサで実行されるソフトウェアの動作を、ネイティブモデル用ソースコード内に命令セットモデル用ソースコードが含まれたソースコードにより記述し、シミュレーションを実行することができる。
【００２８】
さらに、上記の態様（請求項７，８相当）において好ましい態様（請求項９相当）は、前記ソースプログラムが第１のクロスコード部の中に含まれるネイティブコード部内にさらに第２のクロスコードが含まれる入れ子構造を有するときに、前記コンパイラ手段および前記プロセッサモデルがそれぞれ次のように構成されている。すなわち、前記コンパイラ手段が、前記第２のクロスコードを前記ネイティブコードから分離し、前記第２のクロスコードを前記第１のクロスコードの中の前記ネイティブコードを削除した位置に挿入し、前記ネイティブコードの前記第２のクロスコードを削除した位置に前記命令セットモデルに処理を移すための処理切替え関数を挿入する。また、前記プロセッサモデルが、前記ネイティブモデルを実行中に前記処理切替え関数が呼ばれると前記命令セットモデルに処理を移し、前記第２のクロスコード部のオブジェクトコードを解釈して実行し、実行が終了するとネイティブモデルに処理を移し、前記ネイティブモデルの処理を再開し、前記ネイティブモデルの処理が終了すると前記命令セットモデルの処理を再開する。この構成によれば、第１のクロスコード部と第２のクロスコードで同じ局所変数を用いることができる。
【００２９】
さらに、上記の態様（請求項７，８相当）において好ましい態様（請求項１０相当）は、前記ソースプログラムが第１のネイティブコードの中に含まれるクロスコード内にさらに第２のネイティブコードが含まれる入れ子構造を有するとき、前記コンパイラ手段が、前記第２のネイティブコードを前記クロスコードから分離し、前記第２のネイティブコードを前記第１のネイティブコードの中の前記クロスコードを削除した位置に挿入し、前記第２のネイティブコードの前に第１の処理切替え関数を挿入し、前記第２のネイティブコードの後に第２の処理切替え関数を挿入し、前記クロスコードの前記第２のネイティブコードを削除した位置のアドレスを抽出する。また、前記プロセッサモデルが第１の処理切替え関数に達すると前記命令セットモデルに処理を移し、前記命令セットモデルを実行中に前記アドレスに達すると、前記ネイティブモデルの第１の処理切替え関数の直後に処理を移し、前記第２の処理切替え関数に達すると前記命令セットモデルの処理を再開し、前記命令セットモデルの処理が終了すると、前記ネイティブモデルの処理を前記第２の処理切替え関数の直後から再開する。この構成によれば、第１のネイティブコード部と第２のネイティブコード部で、同じ局所変数を用いることができる。
【００３０】
さらに、上記の態様（請求項７，８相当）において好ましい態様（請求項１１相当）は、前記コンパイラ手段が、さらにクロスコード部内で宣言されている変数の中で１つの処理単位のネイティブコード部内でのみ使用されている第１の変数を抽出し、前記第１の変数の宣言を前記クロスコード部内から前記ネイティブコード部内に移し、ネイティブコード部内で宣言されている変数の中でクロスコード部内のみで使用されている第２の変数を抽出し、前記第２の変数の宣言を前記ネイティブコード部内から前記ネイティブコード部内に移すように構成されている。この構成によれば、アクセスを行う動作モデルと異なる動作モデルで変数の宣言を行うことができる。
【００３１】
第４の解決手段として、本発明による性能評価用シミュレーションシステム（請求項１２相当）は、上記態様（請求項７，９，１０相当）において、前記プロセッサモデルが、さらに前記命令セットモデルの持つ情報にアクセスするインタフェース手段を持ち、前記コンパイラ手段が、前記ネイティブコード部から前記クロスコード部で宣言されている変数にアクセスしている記述を抽出し、前記インタフェース手段にアクセスする処理に変換するように構成されている。この構成によれば、ネイティブコード部内でクロスコード部内の変数の値を用いることができる。
【００３２】
上記第４の解決手段において好ましい態様（請求項１３相当）は、上記態様（請求項１２相当）において、前記コンパイラ手段が、さらに、前記クロスコード部内で値が代入されているポインタ変数を用いてメモリにアクセスしている処理を前記ネイティブコード部内から抽出し、前記インタフェース手段にアクセスする処理に変換するように構成されている。この構成によれば、ネイティブコード部内でクロスコード部内で設定されたポインタ変数を用いてクロスコード部内のメモリ空間にアクセスすることができる。
【００３３】
上記第４の解決手段において好ましい態様（請求項１４相当）は、上記態様（請求項８，９，１０相当）において、前記プロセッサモデルが、さらにネイティブモデル内の変数のアドレスを記憶するアドレス記憶手段と、前記記憶されたアドレスを用いて変数にアクセスを行う変数アクセス手段を有し、前記コンパイラ手段が、前記クロスコード部から前記ネイティブコード部で宣言されている変数にアクセスしている記述を抽出し、前記ネイティブコード部に前記アドレス記憶手段を用いて前記変数のアドレスを記憶する記述を追加し、前記クロスコード部で前記変数にアクセスしている記述を前記変数アクセス手段に置き換えるように構成されている。この構成によれば、クロスコード部内でネイティブコード部内の変数の値を用いることができる。
【００３４】
上記第４の解決手段において好ましい態様（請求項１５相当）は、上記態様（請求項１４相当）において、さらに、前記ネイティブコード部内で値が代入されているポインタ変数を用いてメモリにアクセスしている処理を前記クロスコード部内から抽出し、前記変数アクセス手段に置き換えるように構成されている。この構成によれば、クロスコード部内でネイティブコード部内で設定されたポインタ変数を用いてネイティブコード部内のメモリ空間にアクセスすることができる。
【００３５】
上記第２の解決手段（請求項４相当）において好ましい態様（請求項１６相当）は、前記プロセッサモデルがさらに前記プロセッサに接続される他の構成要素より送られる抽象度の異なるシミュレーションイベントを受け付けるイベント入力手段を有し、前記イベント入力手段は入力されたイベントに応じて前記動作手段の１つを選択し、受け付けたシミュレーションイベントを選択した第１の動作手段に送り、前記第１の動作手段が実行中であれば前記シミュレーションイベントを入力として用いて処理を継続し、前記第１の動作手段が停止中であれば実行中の第２の動作手段に処理切替え要求を送り、前記第２の動作手段は処理の切替えが可能になった時点で動作を中止して前記第１の動作手段に処理を切替え、前記第１の動作手段が前記シミュレーションイベントを入力として用いて処理を実行し、前記第１の動作手段が前記シミュレーションイベントに対する処理を終了すると前記第２の動作手段に処理を切替えるように構成されている。この構成によれば、外部から入力される割り込みイベントの種類に応じて、割り込み処理を実行する動作モデルを切替えることができる。
【００３６】
上記の態様（請求項１５相当）において好ましい態様（請求項１７相当）は、さらに前記プロセッサに請求項２または請求項３相当のシミュレーションモデルが接続されており、前記シミュレーションモデルの出力イベントが前記プロセッサモデルの入力イベントとして用いられ、前記プロセッサモデルの複数の動作手段が出力するイベントが前記シミュレーションモデルの入力イベントとして用いるように構成されている。この構成によれば、多様な抽象度の記述が混在するソフトウェアと多様な抽象度のデータが混在する入力データを用いてシステムの評価を行うことができる。
【００３７】
【発明の実施の形態】
次に、本発明の実施の形態について図面を参照して説明する。
【００３８】
（第１の実施の形態）
図１は、本発明の第１の実施の形態における性能評価用シミュレーションシステムで用いるシミュレーションモデルの構成を表す図である。システム全体の性能評価シミュレーションでは、図１に示すシステムの１つの構成要素のシミュレーションモデルは、システムを構成する他の要素のシミュレーションモデル（図示せず）と接続され、他のモデルから入力イベントを受けて動作を行い、必要であれば他のシミュレーションモデル（図示せず）に対して出力イベントを送ることにより、システム全体のシミュレーションの中で１つの構成要素としての動作を行う。
【００３９】
図１において、イベント入力手段１０１は、システムを構成する他の構成要素のシミュレーションモデル（図示せず）から与えられるシミュレーションイベントを受け付け、イベントの内容を解析し、入力イベントの内容に従いモデル動作手段群１０２のうちの１つのモデル動作手段を選択し、選択したモデル動作手段に入力イベントを送る。一方、イベント出力手段１０４は、モデル動作手段群１０２により出力された出力イベントを他のシミュレーションモデル（図示せず）に対して出力する。また、共有情報管理手段の一例としての競合解決手段１０３は、モデル動作手段群１０２に含まれる各モデル動作手段からの資源利用要求と資源解放の通知に基づき、予め規定された規則に応じて調停を行い、要求された資源を利用可能であると判断したモデル動作手段に対して資源利用の許可を通知する。
【００４０】
次に、モデル動作手段群１０２に含まれるモデル動作手段の１つの動作を図２に示すフローチャートに従って説明する。モデル動作手段はまず初期化処理（ステップ２０１）により内部状態の初期化を行う。次に、入力イベント受信処理（ステップ２０２）により当該モデル動作手段に入力されたイベントを受信する。次に、利用資源判定処理（ステップ２０３）により内部状態と入力イベントにより決定されるモデル動作がバスや演算器や入出力ポートなど同時に使用できる数に制限がある資源を用いるか否かを判定する。上記の資源を利用すると判定したとき、資源利用要求発行処理（ステップ２０４）により競合解決手段１０３に対し、利用する資源に対する資源利用要求を発行し、使用していた資源が不要になるとき、資源解放を競合解決手段１０３に通知する。次に、同期処理（ステップ２０５）によりモデル動作手段群１０２に含まれる各モデル動作手段が競合解決手段１０３に資源の要求と解放を通知し、競合解決手段１０３により競合の判定が行われるまで待ち、資源利用許可受信処理（ステップ２０６）により資源利用要求を発行した処理に対する資源利用許可が得られたか否かを競合解決手段１０３から受信する。そして、単位時間動作処理（ステップ２０７）によりモデル動作手段の内部状態と入力イベントと資源利用の許可状況を参照して単位時間の動作を実行する。また、このとき出力イベントがあればイベント出力手段１０４に対して発生した出力イベントを通知する。このとき、資源利用許可が得られていなければ、その資源を用いる処理の実行は停止することになる。また、単位時間の動作により資源の利用が不要になれば競合解決手段１０３に対し資源解放を通知する。そして、入力イベント受信処理（ステップ２０２）に戻り、次の単位時間の動作の処理に移る。ここで、モデル動作手段群１０２に含まれる複数のモデル動作手段は互いに疑似的に並列に実行される。
【００４１】
次に、第１の実施の形態におけるシミュレーションモデルを、バスモデルを具体例として図３を用いて説明する。図３において、３０１は本発明におけるシミュレーションモデルであり、バスをモデル化している。３０２はプロセッサのシミュレーションモデルであり、バスモデル３０１に対しトランザクションレベルのイベントを出力する。３０３はデータ入力デバイスのシミュレーションモデルであり、バスモデル３０１に対しデータフローレベルのイベントを出力する。３０４はメモリモデルであり、バスモデル３０１からトランザクションレベルのイベントとデータフローレベルのイベントを受けて動作する。ここで、トランザクションレベルは、複数の信号により表される１つの処理（トランザクション）毎に動作をまとめて記述するものである。データフローレベルは、入力データのまとまりに対する動作を記述するものである。
【００４２】
バスモデル３０１は、イベント入力手段３０５、トランザクション動作手段３０６、データフロー動作手段３０７、バス競合解決手段３０８およびイベント出力手段３０９から構成されている。バスモデル３０１において、イベント入力手段３０５は他のシミュレーションモデルからのイベントを受け付け、トランザクション動作手段３０６はトランザクションレベルのイベントを入力とした動作を行い、データフロー動作手段３０７はデータフローレベルのイベントを入力とした動作を行い、バス競合解決手段３０８はトランザクション動作手段３０６とデータフロー動作手段３０７から発行されるバス利用要求とバス解放を受けてバスの利用許可を各モデル動作手段に与え、イベント出力手段３０９はトランザクション動作手段３０６とデータフロー動作手段３０７から出力されるイベントを他のシミュレーションモデルに送る。
【００４３】
次に、バスモデル３０１にプロセッサモデル３０２から図４に示すイベントが入力され、入力デバイスモデル３０３から図５に示すイベントが入力され、メモリモデル３０４に対し図６に示すイベント列が出力される動作を説明する。
【００４４】
図４はバスモデル３０１に接続されたプロセッサモデル３０２から入力されるイベント列を示しており、左端にイベントを送った時刻を示し、右端にイベントに対する返し値を示している。図４において、４０１はバス利用権の要求を送るイベントであり、トランザクション動作手段３０６はこのイベントを受けるとバス競合解決手段３０８に対してバス使用要求を送る。４０２と４０３はバス利用権の判定のイベントであり、トランザクション動作手段３０６はこのイベントを受けるとバス競合解決手段３０８から利用許可が与えられているか否かを判定し、結果を入力イベントに対する返し値とする。ここで、返し値が“ＴＲＵＥ”のときはバス利用権があることを示し、返し値が“ＦＡＬＳＥ”のときはバス利用権がないことを示している。４０４はデータ送出のイベントであり、送出先アドレス（００００）と送出データ（１０）をパラメータに持ち、トランザクション動作手段３０６がイベントを受けると送出先アドレスに従って送出先を選択しアドレスとデータをパラメータとしてデータ送出のイベント６０２を出力する。４０５はバス利用権の要求を解除するイベントであり、トランザクション動作手段３０６はこのイベントを受けるとバス競合解決手段３０８にバス解放を通知する。
【００４５】
図５はバスモデル３０１に接続された入力デバイスモデル３０３から入力されたイベントを示しており、左端にイベントを送った時刻を示している。５０１はバスに接続されたモデルへのデータ転送を指示するイベントであり、転送先アドレス（１０００）と転送モード（ＤＭＡ２）と転送サイズ（４）と転送データ（０１，０２，０３，０４）をパラメータに持っており、２ワード単位の間欠転送（２ワード転送毎にバス利用権を解放する）モードで合計４ワードの転送を行うことを示している。
【００４６】
データフロー動作手段３０７は、イベント５０１を受けると、バス競合解決手段３０８に対して利用要求を送り、利用許可が与えられてから、転送サイズ２ワードでアドレスと転送データの始めの２ワードをパラメータとする転送イベント６０１を出力する。次に、２ワード転送にかかる２単位時間後に一旦、バス競合解決手段３０８にバス解放を通知し、その後再びバス要求を行い、再びバス利用許可を受けると、次の２ワードの出力（転送イベント６０３の出力）を行い、最後に再びバス解放を通知する。
【００４７】
このとき、時刻０及び時刻３ではデータフロー動作手段３０７のみがバス利用要求を行っているため、バス競合解決手段３０８はデータフロー動作手段３０７にバス利用許可を与え、時刻１ではトランザクション動作手段３０６がバス利用要求を送っているが、既にデータフロー動作手段３０７にバス利用許可を通知済みであるため、トランザクション動作手段３０６に対してバス利用許可を与えない。
【００４８】
また、時刻２ではデータフロー動作手段３０７とトランザクション動作手段３０６の双方がバス利用要求を送っているが、バス利用要求の発生源を比較し、ここではプロセッサによる要求の方が優先順位が高いと判断してトランザクション動作手段３０６に対して利用許可を与えている。これにより、時刻１ではトランザクション動作手段３０６に１単位時間待ち時間が発生し、時刻２ではデータフロー動作手段３０７に１単位時間待ち時間が発生しており、プロセッサと入力デバイスがバスを共有することにより発生する待ち時間を再現することができ、システムの評価に用いることができる。
【００４９】
ここで、入力デバイスからのデータ転送をトランザクションレベルのシミュレーションで行うには、ソフトウェアによりＤＭＡ（ＤｉｒｅｃｔＭｅｍｏｒｙ　Ａｃｃｅｓｓ）コントローラを設定し、転送開始要求信号に応じてＤＭＡコントローラがバスモデルにトランザクションレベルのイベントを送ってバスモデルを動作させることにより処理されるが、データフローレベルのシミュレーションでは、図５のように制御情報を付加したデータを直接バスモデルに入力することにより処理される。これにより、ソフトウェアやトランザクションレベルのイベントを処理する入力デバイスのモデルが不要になるため詳細なモデルやソフトウェアを用いずに評価ができ、また処理されるイベント数も大幅に少なくなるためシミュレーション速度も高速になる。
【００５０】
なお、本実施の形態ではプロセッサモデルからはトランザクションレベルのイベントのみを入力し、入力デバイスモデルからはデータフローレベルのイベントのみを入力したが、それぞれのモデルからトランザクションレベルのイベントとデータフローレベルのイベントを混在して入力してもよいことはいうまでもない。
【００５１】
上記した本発明の第１の実施の形態には、次のような発明が含まれている。
【００５２】
すなわち、請求項１の発明に相当するものとして、抽象度の異なる入力イベントに従いシステム構成要素の動作をシミュレートする複数のモデル動作手段と、構成要素より送られる抽象度の異なるシミュレーションイベントを受け付けるイベント入力手段と、モデル動作手段で共有される情報を管理する共有情報管理手段（競合解決手段）を有するシミュレーションモデルを用い、入力されたイベントに応じてモデル動作手段の１つを選択し、受け付けたシミュレーションイベントを選択したモデル動作手段に送り、モデル動作手段が前記イベント入力手段より送られたシミュレーションイベントを入力として用い、共有情報管理手段と情報を授受して構成要素のシミュレーションを実行するように構成されている。これにより、抽象度の異なるイベントを出力するシミュレーションモデルを接続し、各抽象度に合わせたシミュレーションを行いながら、各イベント間の相互作用を含めた評価を行うことができる。
【００５３】
また、請求項２の発明に相当するものとして、さらに他の構成要素にイベントを出力するイベント出力手段を有するシミュレーションモデルを用い、モデル動作手段がシミュレーション実行中に外部に出力するイベントの発生を判断すると、発生したイベントをイベント出力手段に送り、イベント出力手段が受け取ったイベントを出力するように構成されている。これにより、接続されるシミュレーションモデルに対して抽象度の混在したイベントを送ることができ、送られたシミュレーションモデルでもイベントに応じた動作を行うことができる。
【００５４】
また、請求項３の発明に相当するものとして、特に共有情報管理手段について、資源を占有するタイミングを調停する競合解決手段とし、モデル動作手段が、モデル内の資源を利用すると判断すると、競合解決手段に資源利用要求を送り、競合解決手段により資源利用要求が許可されるまで当該資源を利用する動作を停止し、資源利用要求が許可された後に動作を再開し、資源が不要になると競合解決手段に対し資源解放を通知し、競合解決手段が複数のモデル動作手段から受けた資源利用要求を調停し、モデル動作手段に資源利用を許可すると判断したときモデル動作手段に対し資源利用の許可を通知するように構成されている。これにより、異なるモデル動作手段で処理されるイベントによる動作の間で調停が行われ、資源利用による競合の発生によるシステムの性能に対する影響を評価することができる。
【００５５】
なお、この例では複数のモデル動作手段の間でバスの使用に対する競合の判定のみを行ったが、演算器や入出力ポートなどを、競合を発生し得る資源として扱うことができることはいうまでもない。また、複数のモデル動作手段の間でのみ競合の調停を行ったが、１つのモデル動作手段が複数のイベントを同時に扱う場合、モデル動作手段の内部で調停を行った後、モデル動作手段の相互間の調停を行えば良いことはいうまでもない。また、モデル動作手段の相互間での共有情報として資源の競合のみを扱ったが、モデル動作手段による動作に影響を与えるレジスタの値などを共有することができることはいうまでもない。
【００５６】
（第２の実施の形態）
図７は、本発明の第２の実施の形態における評価システムの構成を表す図である。
【００５７】
図７において、７０１はプロセッサのシミュレーションモデルであり、モデル動作手段として命令列を逐次解釈して動作する命令セットモデル７０２と、シミュレーションを実行する汎用計算機用のオブジェクトコードを直接呼び出して実行するネイティブモデル７０３を含んでいる。また、７０４はソースプログラム７０５を解析し、命令セットモデル７０２用のオブジェクトコード７０６とネイティブモデル７０３用のオブジェクトコード７０７とを作成するコンパイラである。
【００５８】
図８は、本実施の形態で入力として与えられるソースプログラム７０５の一例であり、プログラムは命令セットモデル７０２で実行すべき部分とネイティブモデル７０３で実行すべき部分とが共にＣ言語で記述されており、コンパイラ指示子によりネイティブモデル７０３で実行すべき範囲を指示している。
【００５９】
次に、図７におけるコンパイラ７０４の処理をフローチャート図９を用いて具体的に説明する。コンパイラ７０４は、まず、分離処理（ステップ９０１）によりソースプログラム７０５を命令セットモデル７０２で実行すべきクロスコード部とネイティブモデル７０３で実行すべきネイティブコード部に分離する。図８に示すソースプログラム７０５を入力とする例では、コンパイラ指示子により挟まれた部分をネイティブコード部とし、外側の部分をクロスコード部とする。次に、クロスコード部コンパイル処理（ステップ９０２）により、分離したクロスコード部を命令セットモデル７０２用のオブジェクトコード７０６に変換する。次に、関数化処理（ステップ９０３）により、ネイティブコード部に関数名を付け、引数と返し値のない関数を作成する。このとき、ネイティブコード部が複数ある場合にはＩＤなどを付加して重複しない関数名を付ける。次に、ネイティブコード部コンパイル処理（ステップ９０４）により、ステップ９０３により作成した関数を汎用計算機用の動的リンク可能なオブジェクトコードに変換する。次に、対応表作成処理（ステップ９０５）により、ステップ９０２で作成したオブジェクトコード中のネイティブコード部を分離した位置に対応するアドレスと関数名との対応表７０８を作成する。
【００６０】
次に、図７におけるプロセッサモデル７０１の処理を図１０のフローチャートを用いて説明する。プロセッサモデル７０１は、まず初期化処理（ステップ１００１）により、命令セットモデル７０２とネイティブモデル７０３の初期化を行い、命令セットモデル７０２用のオブジェクトコード７０６と対応表７０８を読み込み、命令セットモデル７０２用の命令列を命令セットモデル７０２がアクセスする命令メモリに書き込む。次に、命令セットモデル動作１００２に移り、アドレス判定処理（ステップ１００４）により、現在のアドレスが対応表７０８に含まれているか否かを判定し、含まれているときにはネイティブモデル動作１００３に移り、含まれないとき命令実行処理（ステップ１００７）に進む。命令実行処理（ステップ１００７）では現在のアドレスに対応する命令を読み込み、読み込んだ命令に対応する処理を実行し、アドレスを更新し、アドレス判定処理（ステップ１００４）に戻る。また、ネイティブモデル動作１００３に進むと、関数名判定処理（ステップ１００５）により対応表７０８から現在のアドレスに対応する関数名を選択し、関数実行処理（ステップ１００６）により、ネイティブモデル７０３用のオブジェクトコード７０７から選択した関数名を持つ関数を選び出して実行する。そして、関数の実行が終了すると命令セットモデル動作１００２に戻り、命令実行処理（ステップ１００７）に進み動作を継続する。
【００６１】
なお、本実施の形態ではネイティブコードの範囲をソースコード内に埋め込んだコンパイラ指示子により指定しているが、画面上に表示したソースコード上でネイティブモデルで実行する範囲をマウスでドラッグして指示したり、別ファイルでソースコードのラインを指示するなどして、ソースコードを全く変更せずにネイティブモデルで実行する範囲を変更できることはいうまでもない。
【００６２】
上記した本発明の第２の実施の形態には、次のような発明が含まれている。
【００６３】
すなわち、請求項４の発明に相当するものとして、オブジェクトコードを解釈してシミュレーションを実行する複数の動作手段を有し、前記複数の動作手段を切替えながらシミュレーションを実行するプロセッサモデルと、前記プロセッサモデルの複数の動作手段用の記述が混在したソースプログラムを解析し、前記複数の動作手段が解釈可能な複数のオブジェクトコードを生成するコンパイラ手段とを含むものとして構成されている。これにより、プロセッサで実行されるソフトウェアの動作を、複数のモデル用の記述が含まれるソースコードにより記述し、シミュレーションを実行することができる。
【００６４】
また、請求項５の発明に相当するものとして、前記複数の動作手段用の記述の少なくとも２つが、同一の構文規則を持つ高級言語で記述されている。これにより、複数のモデル用の記述に同一の構文を用いることにより、ソースコードを変更せずに各動作モデルで実行する範囲を変更することができる。
【００６５】
さらに、請求項６の発明に相当するものとして、次の構成がある。プロセッサ用の命令列を逐次解釈して動作する命令セットモデルであり、ソースプログラムが前記命令セットモデルで実行するクロスコード部の中に他の動作手段で実行する動作コードが含まれた構造を有しており、前記ソースプログラムを解析しオブジェクトコードを作成するコンパイラ手段が、前記ソースプログラムを、前記クロスコード部から前記動作コード部を分離し、前記クロスコード部を前記プロセッサ用のオブジェクトコードに変換し、前記動作コード部として分離したソースコードにラベルを付加し、前記ラベルを付加した前記動作コード部を前記動作コードを実行するモデル用のオブジェクトコードに変換し、前記動作コードを分離した前記クロスコードのオブジェクトコード上でのアドレスと前記処理単位毎のラベルと使用する動作手段の対応表を作成し、前記命令セットモデルが、前記クロスコード部のオブジェクトコードを解釈して実行し、前記動作コード部を削除したアドレスに到達すると前記対応表を参照し、前記命令セットモデルの実行アドレスに対応するラベルを見つけ、前記ラベルに対応する動作手段にラベルを通知して前記動作手段に制御を移し、前記動作手段が、前記ラベルに対応する動作コード部のオブジェクトコードを解釈して実行し、実行が終了すると前記命令セットモデルに制御を移し、前記命令セットモデルが処理を再開する。これにより、プロセッサで実行されるソフトウェアの動作を、命令セットモデル用ソースコード内に他の動作モデル用のソースコードを混在して記述し、シミュレーションを実行することができる。
【００６６】
さらに、請求項７の発明に相当するものとして、前記動作手段の１つが、シミュレーションを実行する汎用計算機用のオブジェクトコードを直接呼び出して実行するネイティブモデルであり、前記ソースプログラムを解析しオブジェクトコードを作成するコンパイラ手段が、前記ネイティブモデルで実行する動作コード部をネイティブコード部として分離し、前記ネイティブコード部として分離したソースコードの処理単位毎に関数名を付加し、前記関数名を付加した前記ネイティブコード部をシミュレーションを実行する汎用計算機用のオブジェクトコードに変換するように構成されている。これにより、命令セットモデル用ソースコード内に混在するソースコードとしてネイティブモデル用ソースコードを用いることができる。
【００６７】
なお、本実施の形態では命令セットモデルで命令毎にアドレスの比較を行っているが、命令セットモデル用の命令列の中のネイティブモデルに動作を切替える位置に特定の命令を挿入することにより、命令実行時に特定コードを検出したときのみ対応表を参照して、ネイティブモデルの処理を行い、ネイティブモデルの実行が終ると特定コードの次の命令から命令セットモデルの実行を再開することにより、アドレス比較によるシミュレーション速度の低下を抑えることができる。
【００６８】
また、特定の命令を挿入するのではなく、動作を切替える位置の命令を特定の命令に置き換え、対応表に置換前の命令を追加しておき、命令実行時に特定コードを検出したときのみ対応表を参照し、ネイティブモデルの処理を行い、ネイティブモデルの実行が終ると特定コードを対応表に追加した命令に置き換えて解釈して命令セットモデルの実行を再開することにより、命令セットモデル用のオブジェクトコードの大きさやラベルのアドレスなどを変更することなくシミュレーション速度の低下を抑えることができる。
【００６９】
また、本実施の形態では命令セットモデルから切替えて動作するモデルとしてネイティブモデルを例に用いているが、命令セットモデル用コードから分離される部分の記述の構文規則を変更し、対応する動作モデルを変更することにより他の動作モデルを用いることもできることはいうまでもない。また、作成される対応表に使用する動作モデルの情報を付加することにより、複数の動作モデルを用いることができることもいうまでもない。
【００７０】
なお、ソースプログラム７０５の内部で関数を呼び出しているとき、その関数の呼び出している部分が命令セットモデルで実行する部分と判断されると、関数も命令セットモデル用のオブジェクトコードに変換し、関数の呼び出している部分がネイティブモデルで実行する部分と判断されると、関数もネイティブモデル用のオブジェクトコードに変換することにより、関数呼び出しを行うソースプログラムを用いることができることはいうまでもない。
【００７１】
なお、ネイティブモデルでは、外部バスアクセスを発生したり、動作を止めてクロックを進めたり、命令セットモデルがアクセスするメモリに直接アクセスしたりするなどプロセッサモデルの制御に影響を与えたり、プロセッサモデル外部にイベントを発生する関数を予め用意しておき、ネイティブモデル用プログラム内でこれらの関数を用いることにより、抽象度の高い動作を記述できることはいうまでもない。
【００７２】
（第３の実施の形態）
第３の実施の形態では、図７に示したシステムにおいて、ソースプログラム７０５の記述がネイティブモデル用ソースコード内に命令セットモデル用ソースコードが含まれている場合を扱う。
【００７３】
図１１は、本実施の形態で入力として与えられるソースプログラム７０５の一例であり、プログラムは命令セットモデル７０２で実行すべき部分とネイティブモデル７０３で実行すべき部分が共にＣ言語で記述されており、コンパイラ指示子により命令セットモデル７０２で実行すべき範囲を指示している。
【００７４】
次に、図７におけるコンパイラ７０４の処理を図１２に示すフローチャートを用いて具体的に説明する。コンパイラ７０４は、まず、分離処理（ステップ１２０１）によりソースプログラム７０５を命令セットモデル７０２で実行すべきクロスコード部とネイティブモデル７０３で実行すべきネイティブコード部に分離する。図１１のソースプログラム７０５を入力とする例では、コンパイラ指示子により挟まれた部分を命令セットモデル部とし、外側の部分をネイティブコード部とする。次に、関数化処理（ステップ１２０２）により、クロスコード部に関数名を付け、引数と返し値のない関数を作成する。このとき、クロスコード部が複数ある場合にはＩＤなどを付加して重複しない関数名を付ける。次に、クロスコード部コンパイル処理（ステップ１２０３）により、ステップ１２０２で作成した関数を命令セットモデル用のオブジェクトコードに変換する。次に、処理切替え関数挿入処理（ステップ１２０４）により、ネイティブコード部中のクロスコード部を分離した位置にステップ１２０２で作成した関数の命令セットモデル用オブジェクトコード内でのアドレスを引数とする処理切替え関数を挿入する。最後にネイティブコードコンパイル処理（ステップ１２０５）により、ステップ１２０４で処理切替え関数を挿入したネイティブコードをシミュレーションを実行する汎用計算機用オブジェクトコードに変換する。
【００７５】
次に、図７におけるプロセッサモデル７０１の処理を図１３のフローチャートを用いて説明する。プロセッサモデル７０１は、まず初期化処理（ステップ１３０１）により、命令セットモデル７０２とネイティブモデル７０３の初期化を行い、命令セットモデル７０２用のオブジェクトコード７０６を読み込み、命令セットモデル７０２用の命令列を命令セットモデル７０２がアクセスする命令メモリに書き込む。ただし、このとき、命令セットモデル７０２の初期化では関数が実行できるようにスタックの設定などのソフトウェアで記述される初期化処理に対応する設定も同時に行う。次に、ネイティブモデル動作１３０２に移り、関数実行処理（１３０４）によりネイティブモデル７０３用のオブジェクトコード７０７に含まれる関数を実行する。オブジェクトコード７０７の実行中に処理切替え関数が呼び出されると、動作切替え処理（ステップ１３０５）に移り、命令セットモデル動作１３０３に移る。命令セットモデル動作１３０３に移ると、関数呼び出し処理（ステップ１３０６）により、スタックの変更など命令セットモデル内部で関数呼び出しを行ったときに行われる処理に相当する処理を行い、プログラムカウンタを処理切替え関数の引数により指示されるアドレスに設定する。次に、関数復帰判定処理（ステップ１３０７）により関数復帰命令を判定し、関数復帰命令のとき関数終了処理（ステップ１３０９）に移り、それ以外のとき命令実行処理（ステップ１３０８）により１命令ずつ命令セットモデル動作１３０３を実行する。ただし、クロスコード内で関数呼び出しを用いているとき、クロスコード内で用いた関数呼び出し命令に対応する関数復帰命令では関数終了処理（ステップ１３０９）ではなく、命令実行処理（ステップ１３０８）に移り命令セットモデルで動作を行う。そして関数終了処理（ステップ１３０９）では関数復帰命令に対応する処理を実行した後、処理切替え関数を終了し、オブジェクトコード７０７に含まれる関数の実行を再開する。
【００７６】
上記した本発明の第３の実施の形態には、次のような発明が含まれている。
【００７７】
すなわち、請求項８の発明に相当するものとして、複数の動作手段が、プロセッサ用の命令列を逐次解釈して動作する命令セットモデルと、シミュレーションを実行する汎用計算機用のオブジェクトコードを直接呼び出して実行するネイティブモデルとを含み、ソースプログラムが前記ネイティブモデルで実行するネイティブコード部の中に前記命令セットモデルで実行するクロスコード部が含まれた構造を有している。この場合に、前記ソースプログラムを解析しオブジェクトコードを作成するコンパイラ手段が、前記ネイティブコード部から前記クロスコード部を分離し、前記クロスコード部として分離したソースコードに関数名を付加し、前記関数名を付加した前記クロスコード部を前記プロセッサ用のオブジェクトコードに変換し、前記クロスコード部を分離した前記ネイティブコード部に前記命令セットモデルに処理を移すための処理切替え関数を挿入し、前記ネイティブコード部を汎用計算機用オブジェクトコードに変換する。また、前記プロセッサモデルが、処理開始時に前記命令セットモデルで初期化処理を実行後に前記ネイティブモデルに処理を移し、前記ネイティブモデル実行中に前記処理切替え関数が呼ばれると前記命令セットモデルに処理を移し、前記プロセッサモデルの関数呼び出し命令に相当する処理を行い、前記命令セットモデルが前記クロスコード部のオブジェクトコードを解釈して実行し、実行が終了するとネイティブモデルに処理を移し、前記ネイティブモデルが処理を再開する。
【００７８】
この構成によれば、プロセッサで実行されるソフトウェアの動作を、ネイティブモデル用ソースコードに命令セットモデル用ソースコードが含まれたソースコードにより記述し、シミュレーションを実行することができる。
【００７９】
なお、本実施の形態では、処理切替え関数の引数をアドレスとしたが、処理切替え関数の引数を関数名とし、ソースレベルデバッガで用いるように関数とアドレスの対応をシミュレータに別途入力し、シミュレーション実行時に関数名から実行アドレスを決定することができることはいうまでもない。
【００８０】
なお、第２の実施の形態と第３の実施の形態を組み合わせることにより、ネイティブモデル用コードと命令セットモデル用のコードが多重に入れ子構造になっているときにも、ネイティブモデルと命令セットモデルを切替えながらシミュレートできることはいうまでもない。
【００８１】
また、命令セットモデル用のコードを呼び出すネイティブモデル用コードが命令セットモデル用のコード内に書かれている入れ子構造になっているとき、内部の命令セットモデル用のコードは関数化せずに外部の命令セットモデル用のコード内のネイティブコード部を削除した位置に挿入する。そして、ネイティブモデルで処理切替え関数を実行し命令セットモデル動作に移るとき、関数呼び出しの処理は行わずに命令セットモデルで命令実行を行い、内部の命令セットモデル用のコードの終了アドレスに達すると、ネイティブモデルに戻る。これにより、外部の命令セットモデル用のコードの実行と内部の命令セットモデル用コードが同じ局所変数を用いることができるようになる。
【００８２】
また、ネイティブモデル用コードを呼び出す命令セットモデル用のコードがネイティブコード用コード内に書かれている入れ子構造になっているとき、内部のネイティブモデル用コードは関数化せずに外部のネイティブモデル用コード内の命令セットモデル用コード部を削除した位置に挿入する。そして、挿入した内部のネイティブモデル用コードの最後に、命令セットモデルを呼び出してネイティブモデルに処理を切替えたアドレスから実行を再開する２つ目の処理切替え関数を挿入する。
【００８３】
なお、１つ目の処理切替え関数は第３の実施の形態のステップ１２０４により内部のネイティブモデル用コードの直前に挿入される。そして、命令セットモデルで内部のネイティブモデル用コードの処理に切替えるアドレスに到達すると命令セットモデルの処理を中断してネイティブモデル動作に戻り、１つ目の処理切替え関数の直後にある内部のネイティブモデル用コードの実行を行い、２つ目の処理切替え関数により命令セットモデルの処理を再開する。これにより、外部のネイティブモデル用のコードの実行と内部のネイティブモデル用コードが同じ局所変数を用いることができるようになる。
【００８４】
（第４の実施の形態）
第２の実施の形態および第３の実施の形態によると、ネイティブモデル用コードと命令セットモデル用コードは互いに異なる動作モデルで実行されるため、変数やメモリを共有することはできない。そこで、第４の実施の形態では、ネイティブモデル用コードと命令セットモデル用コードとで、変数やメモリを共有できるシステムを示す。
【００８５】
図１４は第４の実施の形態におけるプロセッサモデル１４０１の構成を表す図である。図１４において、１４０４はネイティブモデル実行中に呼び出され、命令セットモデル１４０２の内部の資源にアクセスを行うインタフェース手段、１４０５はネイティブモデル１４０３の内部の資源のアドレスを記憶するアドレス記憶手段、１４０６は命令セットモデル実行中に呼び出され、アドレス記憶手段１４０５に記憶されたアドレスを用いてネイティブモデル１４０２の内部の資源にアクセスを行う変数アクセス手段である。ネイティブモデル１４０３はネイティブモデル用オブジェクトコードの実行中にインタフェース手段１４０４を呼び出す命令セットモデルアクセス関数が実行されると、インタフェース手段を用いて命令セットモデル１４０２の内部の資源にアクセスする。また、アドレス保存関数が実行されるとアドレス記憶手段１４０５に変数のアドレスを記憶する。一方、命令セットモデル１４０２は変数アクセス手段１４０６を呼び出すネイティブモデルアクセス関数のアドレスに到達したとき、変数アクセス手段１４０６を用い、アドレス記憶手段１４０５にアドレスが記憶されているネイティブモデル内の資源にアクセスする。
【００８６】
次に、ネイティブモデル用オブジェクトコードおよび命令セットモデルオブジェクトコード内にそれぞれ命令セットモデルアクセス関数とネイティブモデルアクセス関数を挿入する方法について図１５のフローチャートに従って説明する。
【００８７】
図１７は、図１６に示すソースコードを図１５に示す方法に従って変換した結果である。まず、ステップ１５０１によりソースコード内で宣言されている変数のリストを作成する。次に、ステップ１５０２よりソースコード内で変数にアクセスしている処理の中でまだステップ１５０３で選択していない処理があるか判定し、全て選択し終っているときには終了する。次に、ステップ１５０３で新たな処理を選択し、ステップ１５０４で選択した処理でアクセスしている変数が同じ動作モデルで実行されるコード内で宣言されているか否か、また間接アクセスしている場合には使用しているポインタ変数への代入が同じ動作モデルで実行されるコード内で行われているか否かを判定し、同じ動作モデルコード内であるときはステップ１５０２に戻り、異なる動作モデルコード内であるときはステップ１５０５に進む。ステップ１５０５では選択された処理を他のモデルの資源をアクセスするための関数呼び出しに置き換える。
【００８８】
具体的に、図１６における６行のようにクロスコード内で宣言された変数にネイティブコード内でアクセスしているとき、図１７における６行のように命令セットモデルアクセス関数に変換して変数の値を取得する。
【００８９】
ここで、図１７における関数”ｒｅａｄ＿ｉｓｓ＿ｉｎｔ（”ｉ”）”は命令セットモデル内のｉというラベルのついたｉｎｔ型の変数を読み出す命令モデルアクセス関数である。
【００９０】
また、図１６における７行のようにクロスコード内で値が代入されているポインタ変数を用いてネイティブコード内で間接アクセスしているとき、図１７における７行のように命令セットモデルアクセス関数に変換し、命令セットモデル内のアドレスを用いてアクセスする。ここで、図１７における関数”ｗｒｉｔｅ＿ｉｓｓ＿ｃｈａｒ＿ｐｔｒ（）”は、命令セットモデル内の指定アドレスにｃｈａｒ型の値を書き込む命令セットモデルアクセス関数である。また、このときポインタ変数ｍｅｓｓａｇｅの値が必要になるので、命令セットモデルアクセス関数”ｒｅａｄ＿ｉｓｓ＿ｐｔｒ（）”を用いて取得している。
【００９１】
また、図１６における９行のようにネイティブコード内で宣言された変数にクロスコード内でアクセスしているとき、図１７における８行のようにネイティブコード内でアドレス保存関数を実行して、命令モデルからアクセスされる変数のアドレスをアドレス記憶手段１４０５に記憶しておき、さらに図１７における１０行のように変数アクセスをネイティブモデルアクセス関数に変換し、ネイティブモデル内の変数にアクセスする。ここで図１７における関数”ｅｘｐｏｒｔ（）”はアドレス保存関数であり、”ｒｅａｄ＿ｎａｔｉｖｅ＿ｉｎｔ（）”は、ネイティブモデル内のｉｎｔ型の変数を読み出すネイティブモデルアクセス関数である。なお、ネイティブモデルアクセス関数は命令モデル内では中身のない関数として作成し、ネイティブモデルアクセス関数内のアドレスに達するとインタフェース手段１４０４で処理を行い、命令モデル内のレジスタに返し値を設定する。
【００９２】
また、インタフェース手段１４０４はクロスコード用オブジェクト作成時に作られる変数の配置情報を用いて変数名からクロスコード内のアクセスするアドレスまたはレジスタを決定することができる。また、図１６では使用していないが、ネイティブコード内で宣言されたポインタ変数を用いてクロスコード内で間接アクセスしているとき、ネイティブモデルアクセス関数に変換し、ネイティブモデル内のアドレスを用いてアクセスする。
【００９３】
また、図１６の例にはないが、ポインタ変数Ａへ他のポインタ変数Ｂの値が代入されている場合において、ポインタ変数Ａを用いて間接アクセスするときは、ポインタ変数Ｂがどこで代入されているかによってアクセス関数に変換するか否かを判断する。
【００９４】
なお、一方の動作モデル用コード内だけでアクセスされるが、宣言だけは異なる動作モデル用コード内で行われている変数は、宣言部の記述を移動することにより、アクセス関数を用いずにシミュレーションを実行することはいうまでもない。
【００９５】
なお、同じポインタ変数に両方のコード内で代入が行われているときには本実施の形態では処理できないが、このとき一方の代入処理を他方に移すことによって対応することができる。
【００９６】
以上のように、第４の実施の形態（請求項１２〜１５相当）にかかる性能評価用シミュレーションシステムにより、ネイティブモデルで実行すべき部分と命令セットモデルで実行すべき部分が混在したソースプログラムを用いたシミュレーションにおいて、互いのプログラム内で宣言されている変数やメモリ空間を用いて動作を記述することができる。
【００９７】
（第５の実施の形態）
図１８は本発明の第５の実施の形態における性能評価用シミュレーションシステムの構成を表す図である。
【００９８】
図１８において、１８０１はプロセッサモデルであり、このプロセッサモデル１８０１は、命令セットモデル用オブジェクトコード１８０６を読み込み命令列を逐次解釈して動作する命令セットモデル１８０２と、シミュレーションを実行するネイティブモデル用オブジェクトコード１８０７を直接呼び出して実行するネイティブモデル１８０３と、命令セットモデル１８０２用の入力イベントとネイティブモデル１８０３用の入力イベントを受け付けるイベント入力手段１８０４と、命令セットモデル１８０２から出力される出力イベントとネイティブモデル１８０３から出力される出力イベントを受け付け、他のシミュレーションモデルに出力するイベント出力手段１８０５とを含んでいる。１８０８は割り込み入力手段であり、プロセッサモデル１８０１に対し割り込みイベントを入力する。１８０９は第１の実施の形態で示したバスモデルと同様のシミュレーションモデルであり、プロセッサモデルから送られる抽象度の異なるイベントを処理する。
【００９９】
命令セットモデル１８０２とネイティブモデル１８０３は第２の実施の形態で示したプロセッサモデルと同様にオブジェクトコードを解釈しながら処理を切替えて動作する。また、命令セットモデル１８０２は、シミュレーション実行中に外部バスアクセスが発生すると、トランザクションレベルのイベントを発生し、イベント出力手段１８０５を介してバスモデル１８０９にアクセスする。ネイティブモデル１８０３には外部バスアクセスを発生する関数が予め用意されており、ネイティブモデル１８０３がオブジェクトコード１８０７内の関数を実行中に外部バスアクセスを発生する関数が呼び出されると、データフローレベルのイベントを発生し、イベント出力手段１８０５を介してバスモデル１８０９にアクセスする。また、イベント入力手段１８０４は入力された割り込みイベントを解析し、命令セットモデル１８０２で処理すべき割り込みであれば、命令セットモデル１８０２にその割り込みを送り、ネイティブモデル１８０３で実行すべき割り込みであれば、ネイティブモデル１８０３にその割り込みを送る。
【０１００】
図１９は割り込み入力手段１８０８から入力される割り込みイベントの一例であり、１９０１はレベル３のレベル割り込みの発生を意味しており、命令セットモデル１８０２で処理すべき割り込みと判断される。一方、１９０２はオブジェクトコード内の関数ｆｕｎｃｔｉｏｎ１の実行を要求する割り込みであり、ネイティブモデル１８０３で処理すべき割り込みと判断される。命令セットモデル１８０２は、１９０１に示す割り込みが入力されると、命令セットモデルの動作中であれば命令セットモデル１８０２で割り込み処理を実行し、ネイティブモデルの実行中であれば、命令セットモデル１８０２に処理が移るのを待って割り込み処理を実行する。ネイティブモデル１８０３は、１９０２に示す割り込みが入力されると、ネイティブモデルの動作中であれば、現在実行中の関数の終了を待って割り込み処理を実行し、命令セットモデルの動作中であれば命令セットモデル１８０２に処理切替え要求を送り、処理が移るのを待って割り込み処理を実行し、実行が終了すると命令セットモデル１８０２に処理を戻す。命令セットモデル１８０２は、処理切替え要求を受けると、次に実行するべきアドレスを記憶し、ネイティブモデル１８０３に処理を移し、ネイティブモデル１８０３からの処理が戻ると、保存したアドレスから処理を再開する。
【０１０１】
以上のように第５の実施の形態によると、請求項１６相当の性能評価用シミュレーションシステムにより外部から入力される割り込みイベントの種類に応じて、割り込み処理を実行する動作モデルを切替えることができる。また、請求項１７相当の性能評価用シミュレーションシステムによると、抽象度の異なるイベントを入出力するシミュレーションモデルと複数の動作モデル用のソースコードを混在して記述したソースコードにより動作が記述されるプロセッサモデルを接続してシミュレーションを行うことができるため、多様な抽象度のソフトウェアと入力データが混在した状態でシステムの評価を行うことができる。
【０１０２】
【発明の効果】
以上説明したように、本発明によれば、抽象度の混在した入力に対するシステムの構成要素の動作を、各入力に応じた抽象度の異なる処理の相互作用を考慮しながらシミュレートすることができるため、評価目的に応じて必要なデータのみを詳細化して処理性能の評価を行うことができ、入力データを準備する工数を大幅に削減することができる。また、各構成要素について、詳細な動作が必要なときのみ高い精度のシミュレーションが実行されるため、システム全体としてのシミュレーション速度を高めることができ、効率的に評価を行える。
【０１０３】
さらに、プログラムにより動作が記述されるプロセッサモデルに対し、複数の動作モデル向けの記述を混在したソースプログラムにより動作を記述してシミュレートできるため、評価目的に応じてプログラム中の必要な部分のみを詳細化して評価を行うことができる。また、評価用プログラムの準備の工数を削減し、かつシミュレーション速度を高めることができ、効率的に評価を行える。
【０１０４】
特に、命令セットモデル用の動作とネイティブモデル用の動作記述を同じ構文規則を持つ言語で記述することにより、ソースプログラムを変更することなく動作を実行するモデルを変更することができる。また、双方の記述の中で互いの変数やメモリ領域にアクセスすることができるため、評価目的に応じてプログラム中の必要な部分のみを詳細にシミュレートすることができる。また、抽象度の異なる動作の間でのデータの依存を容易に記述できるため、評価用プログラムの準備の工数を削減し、かつシミュレーション速度を高めることができ、効率的に評価を行える。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態におけるシミュレーションモデルの構成を表す図である。
【図２】本発明の第１の実施の形態におけるモデル動作手段の動作を示すフローチャートである。
【図３】本発明の第１の実施の形態におけるシミュレーションモデルの具体的な構成を表す図である。
【図４】本発明の第１の実施の形態におけるプロセッサのモデルからの入力イベントの例である。
【図５】本発明の第１の実施の形態における入力デバイスのモデルからの入力イベントの例である。
【図６】本発明の第１の実施の形態におけるメモリのモデルへの出力イベントの例である。
【図７】本発明の第２および第３および第４の実施の形態におけるシステムの構成を表す図である。
【図８】本発明の第２の実施の形態におけるソースプログラムの例を表す図である。
【図９】本発明の第２の実施の形態におけるコンパイラの動作を示すフローチャートである。
【図１０】本発明の第２の実施の形態におけるプロセッサモデルの動作を示すフローチャートである。
【図１１】本発明の第３の実施の形態におけるソースプログラムの例を表す図である。
【図１２】本発明の第３の実施の形態におけるコンパイラの動作を示すフローチャートである。
【図１３】本発明の第３の実施の形態におけるプロセッサモデルの動作を示すフローチャートである。
【図１４】本発明の第４の実施の形態におけるプロセッサモデルの構成を表す図である。
【図１５】本発明の第４の実施の形態におけるコンパイラの動作の一部を示すフローチャートである。
【図１６】本発明の第４の実施の形態におけるソースプログラムの例を表す図である。
【図１７】本発明の第４の実施の形態におけるソースプログラムを変換して作成されるソースプログラムの例を表す図である。
【図１８】本発明の第５の実施の形態における評価システムの構成を表す図である。
【図１９】本発明の第５の実施の形態における割り込み入力手段からの入力イベントの例である。
【符号の説明】
１０１　イベント入力手段
１０２　モデル動作手段群
１０３　競合解決手段（共有情報管理手段）
１０４　イベント出力手段
３０１　バスモデル
３０２　プロセッサモデル
３０３　入力デバイスモデル
３０４　メモリモデル
３０５　イベント入力手段
３０６　トランザクション動作手段
３０７　データフロー動作手段
３０８　バス競合解決手段
３０９　イベント出力手段
７０１　プロセッサモデル
７０２　命令セットモデル
７０３　ネイティブモデル
７０４　コンパイラ
７０５　ソースプログラム
７０６　命令セットモデル用オブジェクトコード
７０７　ネイティブモデル用オブジェクトコード
７０８　対応表
１４０１　プロセッサモデル
１４０２　命令セットモデル
１４０３　ネイティブモデル
１４０４　インタフェース手段
１４０５　アドレス記憶手段
１４０６　変数アクセス手段
１８０１　プロセッサモデル
１８０２　命令セットモデル
１８０３　ネイティブモデル
１８０４　イベント入力手段
１８０５　イベント出力手段
１８０６　命令セットモデル用オブジェクトコード
１８０７　ネイティブモデル用オブジェクトコード
１８０８　割り込み入力手段
１８０９　バスモデル
【図１】
2004021907.tif 000003
【図２】
2004021907.tif 000004
【図３】
2004021907.tif 000005
【図４】
2004021907.tif 000006
【図５】
2004021907.tif 000007
【図６】
2004021907.tif 000008
【図７】
2004021907.tif 000009
【図８】
2004021907.tif 000010
【図９】
2004021907.tif 000011
【図１０】
2004021907.tif 000012
【図１１】
2004021907.tif 000013
【図１２】
2004021907.tif 000014
【図１３】
2004021907.tif 000015
【図１４】
2004021907.tif 000016
【図１５】
2004021907.tif 000017
【図１６】
2004021907.tif 000018
【図１７】
2004021907.tif 000019
【図１８】
2004021907.tif 000020
【図１９】
2004021907.tif 000021