(57)【特許請求の範囲】
【請求項１】
ソフトウェア及びハードウェアによって実現されるシステムにかかる性能評価のためのシミュレーションを、ハードウェアモデルを用いて実行するシミュレーション装置であって、
既存の仮ソフトウェアを実行することにより第１実行ログを取得する第１取得部と、
前記第１実行ログを複数の基本処理単位に分割する分割部と、
前記複数の基本処理単位のうちの一部の基本処理単位を変更することにより前記シミュレーションに用いる基本処理実行ログを生成する基本処理実行ログ生成部と、
前記基本処理実行ログを、前記ハードウェアモデルに入力することにより、前記シミュレーションを実行して前記性能評価に要する情報を取得するシミュレーション実行部とを備えたことを特徴とする、シミュレーション装置。
【請求項２】
前記基本処理実行ログ生成部が、
前記複数の基本処理単位のうちの変更対象基本処理単位を抽出し、抽出した前記変更対象基本処理単位に基づいて簡易ソフトウェアモデルを生成する簡易ソフトウェアモデル生成部と、
前記簡易ソフトウェアモデルに基づいて仮実行ログを取得する第２取得部と、
前記複数の基本処理単位のうちの前記変更対象基本処理単位以外の基本処理単位と、前記仮実行ログとを合成して前記基本処理実行ログを生成する合成部とを備えたことを特徴とする、請求項１記載のシミュレーション装置。
【請求項３】
前記仮ソフトウェアにおけるソースコードの分岐行もしくはオブジェクトを呼び出す関数行を示すフラグを前記仮ソフトウェアに埋め込むフラグ処理部を備え、
前記第１取得部は、前記フラグを埋め込まれた前記仮ソフトウェアを実行して前記第１実行ログを取得するように構成されるとともに、
前記簡易ソフトウェアモデル生成部が、前記変更対象基本処理単位における前記フラグに対応するフラグ情報に基づいて、前記変更対象基本処理単位内のオブジェクトシーケンスを生成し、前記ソースコードを抽出して前記簡易ソフトウェアモデルを生成することを特徴とする、請求項２記載のシミュレーション装置。
【請求項４】
前記基本処理実行ログ生成部が、前記複数の基本処理単位のうちの一部の基本処理単位を、他の基本処理単位に置換することにより前記基本処理実行ログを生成することを特徴とする、請求項１記載のシミュレーション装置。
【請求項５】
ソフトウェア及びハードウェアによって実現されるシステムにかかる性能評価のためのシミュレーションを、ハードウェアモデルを用いて実行するシミュレーション方法であって、
既存の仮ソフトウェアを実行することにより第１実行ログを取得する第１取得ステップと、
前記第１実行ログを複数の基本処理単位に分割する分割ステップと、
前記複数の基本処理単位のうちの一部の基本処理単位を変更することにより前記シミュレーションに用いる基本処理実行ログを生成する基本処理実行ログ生成ステップと、
前記基本処理実行ログを、前記ハードウェアモデルに入力することにより、前記シミュレーションを実行して前記性能評価に要する情報を取得するシミュレーション実行ステップとを含んでいることを特徴とする、シミュレーション方法。
【請求項６】
前記基本処理実行ログ生成ステップが、
前記複数の基本処理単位のうちの変更対象基本処理単位を抽出し、抽出した前記変更対象基本処理単位に基づいて簡易ソフトウェアモデルを生成する簡易ソフトウェアモデル生成ステップと、
前記簡易ソフトウェアモデルに基づいて仮実行ログを取得する第２取得ステップと、
前記複数の基本処理単位のうちの前記変更対象基本処理単位以外の基本処理単位と、前記仮実行ログとを合成して前記基本処理実行ログを生成する合成ステップとを含んでいることを特徴とする、請求項５記載のシミュレーション方法。
【請求項７】
前記仮ソフトウェアにおけるソースコードの分岐行もしくはオブジェクトを呼び出す関数行を示すフラグを前記仮ソフトウェアに埋め込むフラグ処理ステップをさらに含み、
前記第１取得ステップにおいて、前記フラグを埋め込まれた前記仮ソフトウェアを実行して前記第１実行ログが取得されるとともに、
前記簡易ソフトウェアモデル生成ステップにおいて、前記変更対象基本処理単位における前記フラグに対応するフラグ情報に基づいて、前記変更対象基本処理単位内のオブジェクトシーケンスが生成され、前記ソースコードを抽出して前記簡易ソフトウェアモデルが生成されることを特徴とする、請求項６記載のシミュレーション方法。
【請求項８】
前記基本処理実行ログ生成ステップにおいて、前記複数の基本処理単位のうちの一部の基本処理単位を、他の基本処理単位に置換することにより前記基本処理実行ログが生成されることを特徴とする、請求項５記載のシミュレーション方法。
【請求項９】
ソフトウェア及びハードウェアによって実現されるシステムにかかる性能評価のためのシミュレーションを、ハードウェアモデルを用いて実行する機能をコンピュータに実現させるためのシミュレーションプログラムであって、
既存の仮ソフトウェアを実行することにより第１実行ログを取得する第１取得部、
前記第１実行ログを複数の基本処理単位に分割する分割部、
前記複数の基本処理単位のうちの一部の基本処理単位を変更することにより前記シミュレーションに用いる基本処理実行ログを生成する基本処理実行ログ生成部、及び、
前記基本処理実行ログを、前記ハードウェアモデルに入力することにより、前記シミュレーションを実行して前記性能評価に要する情報を取得するシミュレーション実行部として、前記コンピュータを機能させることを特徴とする、シミュレーションプログラム。
【請求項１０】
ソフトウェア及びハードウェアによって実現されるシステムにかかる性能評価のためのシミュレーションを、ハードウェアモデルを用いて実行する機能をコンピュータに実現させるためのシミュレーションプログラムを記録したコンピュータ読取可能な記録媒体であって、
前記シミュレーションプログラムが、
既存の仮ソフトウェアを実行することにより第１実行ログを取得する第１取得部、
前記第１実行ログを複数の基本処理単位に分割する分割部、
前記複数の基本処理単位のうちの一部の基本処理単位を変更することにより前記シミュレーションに用いる基本処理実行ログを生成する基本処理実行ログ生成部、及び、
前記基本処理実行ログを、前記ハードウェアモデルに入力することにより、前記シミュレーションを実行して前記性能評価に要する情報を取得するシミュレーション実行部として、前記コンピュータを機能させることを特徴とする、シミュレーションプログラムを記録したコンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア及びハードウェアによって実現されるシステムにかかる性能評価シミュレーションを実行するための技術に関する。
【背景技術】
【０００２】
近年、電子機器に用いられる半導体装置、例えばLarge Scale Integration（ＬＳＩ）は大規模集積化し、従来は個別部品であったプロセッサ，バス，メモリ等を１チップ上に搭載することが可能となった。
１チップ化する目的は一般的に、小型化、低コスト化、低消費電力化である。このような半導体装置を、システムＬＳＩ、あるいは、System on Chip（ＳｏＣ）などと呼んでいる。
【０００３】
しかしながら、そのような半導体装置（以下、ＬＳＩ、あるいは、システムＬＳＩともいう）に搭載される機能増加は、設計の難しさを増大させるというデメリットもある。この難しさの多くは、一度決めたハードウエア・アーキテクチャが、１チップ化されることにより、後で容易に変更できなくなるということに起因する。
特に、小型化・低コスト化を推し進めるためには、システムＬＳＩの処理負荷の軽減と、設計上のマージンを低減することが必要であり、その問題解決のためには、設計初期の段階での性能検証技術が重要となってきている。
【０００４】
システムＬＳＩ等の性能検証は、システムが持つ機能を、ハードウェアとソフトウェアとのどちらで実現するかを仮決定した後に行う。
一般に、ソフトウェアは、Ｃ言語、あるいは、アセンブリ言語等で記述し、ターゲットプロセッサを含む実機モデル、またはターゲットプロセッサ向けのInstruction Set Simulator（ＩＳＳ；命令セットシミュレータ）上で実行することにより、その動作をシミュレーションすることができる。
【０００５】
また、ハードウェアの動作については、Register Transfer Level（ＲＴＬ）、または、Transaction Level Model（ＴＬＭ）、あるいは、両者を混在させたもので記述することによりシミュレーションが可能になる。なお、前者で代表的なものは、Ｖｅｒｉｌｏｇ−ＨＤＬ、後者はＳｙｓｔｅｍＣである。
このように、ソフトウェアとハードウェアとを合わせたシステム全体をシミュレートすることにより、プロセッサ負荷率等の性能の評価ができることになる。
【０００６】
なお、従来からソフトウェア（アプリケーション）を作成するためにシミュレーションを実行する技術もある（例えば、下記特許文献１，２参照）。
図１４に従来の半導体装置の性能評価シミュレーション装置の例を示す。従来のシミュレーション装置１００において、Central Processing Unit（ＣＰＵ）１０１，I-cache（命令キャッシュ）１０２，D-Cache（データキャッシュ）１０３，バス１０４，外部ＲＡＭ（Random Access Memory）１０５，及び周辺ＨＷ（HardWare）１０６は、ハードウェアモデルにより実現される。
【０００７】
なお、ＣＰＵ１０１は、ソフトウェアを実行するＩＳＳ１１０，外部アクセスを実行するアクセス処理部１１１，及びシミュレーション結果としての統計情報１２０を集計するデータ集計部１１２を備えている。
しかしながら、従来のシミュレーション装置１００では、前述のとおり仕様１２１に基づく、実際にプロセッサに実装するソフトウェア１２２をＩＳＳ１１０上で実行する。そのため、高精度な検証を行うためにはソフトウェア１２２の完成度が十分であることが必要になり、設計の早期に最適化の検討、即ち、性能評価シミュレーションを行うことができない。
【０００８】
また、そのシミュレーションを実行する場合には、シミュレーションのほとんどをＩＳＳ１１０が占めてしまい、実行時間が非常に長くなるという問題がある。
そこで、従来から、プロセッサ上で実行するソフトウェアを、ＵＭＬ分析を用いてモデル化することでソフトウェアを作成し、設計早期の検証を可能とする技術や、要求仕様から概念モデルから機能モデルとソフトウェアを作成する技術がある（例えば下記特許文献３，４参照）。
【特許文献１】特開２００２−２１５４２３号公報
【特許文献２】特開２００６−５９１０８号公報
【特許文献３】特開２００１−３１８８１２号公報
【特許文献４】特開２００７−３１０４４９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、上記特許文献３，４のような技術では、要求仕様のドキュメントからアプリケーションプログラムをモデリングするため、ソフトウェアを作成するまでに相当の工数が必要となり、多くの時間が掛かってしまう。
また、上記特許文献３，４のような技術では、実際に実装するソフトウェアとの乖離、即ち性能検証環境の精度が不明であるので、作成されたソフトウェアが信頼できるものであるのかが分からない。
【００１０】
本発明は、このような課題に鑑み創案されたもので、ソフトウェア及びハードウェアによって実現されるシステムにかかる性能評価シミュレーションをより少ない工数で高精度に実現できるようにすることを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するために、このシミュレーション装置及びシミュレーション方法は、第１取得部が既存の仮ソフトウェアを実行することにより取得した第１実行ログを、分割部が複数の基本処理単位に分割する。次いで、基本処理実行ログ生成部が複数の基本処理単位のうちの一部の基本処理単位を変更することによりシミュレーションに用いる基本処理実行ログを生成する。そして、シミュレーション実行部が、基本処理実行ログを、ハードウェアモデルに入力することにより、シミュレーションを実行して性能評価に要する情報を取得する。
【００１２】
また、上記目的を達成するため、このシミュレーションプログラムは、上述した第１取得部，分割部，基本処理実行ログ生成部，及びシミュレーション実行部としてコンピュータを機能させる。
さらに、上記目的を達成するため、このコンピュータ読取可能な記録媒体は、上述したシミュレーションプログラムを記録している。
【発明の効果】
【００１３】
このように、上述したシミュレーション装置，シミュレーション方法，シミュレーションプログラム及び同プログラムを記録したコンピュータ読取可能な記録媒体によれば、実装する実際の実ソフトウェアが完成していない早い段階から、既存の仮ソフトウェアを利用することで、性能評価対象のハードウェアのシミュレーションを高精度に実行できる。しかも、既存の仮ソフトウェアを用いるので、従来技術のように、要求仕様のドキュメントからアプリケーションプログラムをモデリングする必要がなく、仮ソフトウェアを作成するまでの工数も削減できる。
【００１４】
さらに、従来技術のように、シミュレーションの際にソフトウェアをＩＳＳによって実行することなく、シミュレーション実行部は、基本処理実行ログを用いてシミュレーションを実行する。したがって、シミュレーションに係る工数を低減でき、シミュレーションに要する時間を短縮できる。
【発明を実施するための最良の形態】
【００１５】
以下、図面を参照しながら本発明の実施の形態について説明する。
〔１〕本発明の一実施形態について
まず、図１に示すブロック図を参照しながら、本発明の一実施形態としての性能評価シミュレーション装置（以下、本シミュレーション装置という）１の構成について説明する。
【００１６】
本シミュレーション装置１は、半導体装置、例えばＬＳＩに搭載されるハードウェア（例えばＣＰＵ）の性能を評価するものである。本シミュレーション装置１によるシミュレーションは、ＩＳＳを用いずに、ソフトウェアを実行して得られる実行履歴である実行ログに基づいてシミュレーションが実行される。
つまり、本シミュレーション装置１は、ハードウェアの性能を評価するための、ソフトウェアとハードウェアのモデル化に関し、キャッシュ解析可能な抽象度で、ＩＳＳを必要とせずに、過去のソフトウェア設計資産を活用してターゲットＣＰＵのアーキテクチャ検討可能な、ソフトウェアのモデル化を提供する。
【００１７】
ここで、実行ログ（実行時命令列）とは、ソフトウェアをターゲットＣＰＵ用のＩＳＳ等で実行させた時に実際に実行された命令の履歴のことである。
本シミュレーション装置１は、ＳＷ（SoftWare）／ＨＷ（HardWare）分割部２，フラグ処理部３，第１取得部４，分割部５，機能モジュール作成部６，基本処理実行ログ生成部１０及びシミュレーション実行部２０を備えている。
【００１８】
ＳＷ／ＨＷ分割部２は、シミュレーション対象のシステムの仕様に基づいて、その仕様によって決定する処理、または、その仕様を、ソフトウェアの処理とハードウェアの処理とに分割するものである。
フラグ処理部３は、基本処理実行ログ生成部１０が後述する基本処理実行ログを生成するために用いる、予め作成された既存の仮ソフトウェアに対して、その仮ソフトウェアにおけるソースコードの分岐行、及び／または、オブジェクトを呼び出す関数行を示すフラグを、その行の直前あるいは直後にフラグを埋め込むものである。
【００１９】
例えば、図２に示すように、仮ソフトウェアが構成されていた場合、フラグ処理部３は、ソースコードの分岐行である“ｉｆ”文及び“ｅｌｓｅ”文の直後に所定のアドレスに対してリードアクセスを行うフラグを埋め込む。ここでは、フラグ処理部３は、“addr1+offset”をリードする“DT_READ(addr1,offset,data)”と、“addr2+offset”をリードする“DT_READ(addr2,offset,data)”と、“addr4+offset”をリードする“DT_READ(addr4,offset,data)”とをそれぞれフラグとして挿入する。
【００２０】
また、フラグ処理部３は、“ex_test0(num);”のようにオブジェクトをコールする関数行の直前に、ここでは“addr3+offset”をリードする“DT_READ(addr3,offset,data)”をフラグとして挿入する。
このように、フラグ処理部３がフラグを挿入することによって、仮ソフトウェアを実機あるいはＩＳＳによって実行した結果得られる実行ログにおいて、指定したアドレスへのリードアクセスをフラグ情報として取得することができるようになる。そして、そのフラグ情報を元に、後述する図６に示すオブジェクト遷移グラフ（オブジェクトシーケンス図）や各オブジェクトのフラグ間のソースコードの自動抽出が可能となる。その結果、後述する簡易ソフトウェアモデル生成部１１が、簡易ソフトウェアを作成することができる。
【００２１】
なお、フラグ処理部３は、仮ソフトウェアにおける、例えば“ｉｆ”や“ｅｌｓｅ”に基づいて分岐行を自動的に特定して、自動的にフラグを埋め込む。また、フラグ処理部３は、仮ソフトウェアにおいて、オブジェクトを呼び出す関数に法則性がある場合にはその法則性（例えば、関数の命名の仕方）、図２の例では“ｅｘ”に基づいて、所定関数を自動的に特定する。そして、フラグ処理部３はその特定した関数の直前あるいは直後にフラグを自動的に埋め込む。
【００２２】
第１取得部４は、予め作成された流用のための仮ソフトウェアを、実機上あるいはＩＳＳによって実行することにより、仮ソフトウェアの実行ログ（第１実行ログ）を取得するものである。
ここで、図３に第１取得部４によって取得される実行ログの一例を示す。
図３の実行ログの情報は、主として処理毎に、実行時間情報としてのタイムスタンプ（図中“time”），命令／データアクセスの指定（図中“type”）、データアクセスの場合はリード／ライトの指定、命令の場合のオブジェクト（図中“Object(\#line)”；オブジェクトファイル）、及びアドレスを含んでいる。なお、このオブジェクトを参照することにより、処理がどのソースファイルを実行しているのかが分かる。
【００２３】
第１取得部４は、その他、後述する簡易ソフトウェアモデル生成のために、各処理の実オブジェクト間の呼び出し関数の実行情報（ソースコードの実行行数）も取得する。そして、第１取得部４が取得した情報は、一般的なエミュレータ及びＩＳＳを含む統合開発ツールにはデバッグ機能として持っている。
なお、仮ソフトウェアが通信処理ソフトウェアの場合、実行ログの処理量である命令アドレス列およびデータアクセス列の数は、転送レートを変えることでも変化するため、ターゲットプロセッサ上でのシミュレーション条件に留意する必要がある。
【００２４】
分割部５は、第１取得部４が取得した実行ログを、複数の基本処理単位に分割するものである。なお、基本処理単位とは、ソフトウェアモデルで実行される処理の実行単位をいう。具体的には、後述する図６に示す。
分割部５は、例えばマルチメディア処理や通信処理のアプリケーションの場合、同じ処理の繰り返しがほとんどであるため、周期処理のパターンからＯＳのタスク起動点を見つけ、これを足がかりにタスク単位で分割する。あるいは、分割部５は命令アドレス列からオブジェクトファイル間の処理の流れを追い、タスクの区切りを見つけて分割する。
【００２５】
ここでは、分割部５は、図４に示すごとくオブジェクトシーケンスを作成して周期処理のパターンを抜き出すことにより、実行ログを複数の基本処理単位に分割する。
図５は図４のオブジェクトシーケンス表を図化したものである。図５において“xxx.o”，“yyy.o”，“zzz.o”は、オブジェクトを示している。
図５に示すように、各基本処理単位Ｆｎ［１］は、オブジェクトファイル間のアクセスの始点から終点までを一つの区切りとすることで抜き出されたものである。
【００２６】
機能モジュール作成部６は、分割部５によって分割された基本処理単位に応じて、シミュレーション実行部２０によって実行されるシミュレーションに用いる機能モジュールを作成する。機能モジュールの詳細については、後述する図７を参照しながら詳細に説明する。
基本処理実行ログ生成部１０は、複数の基本処理単位のうちの一部の基本処理単位を変更することによりシミュレーションに用いる基本処理実行ログを生成する。
【００２７】
具体的には、基本処理実行ログ生成部１０は、簡易ソフトウェアモデル生成部１１，第２取得部１２及び合成部１３を備えている。
簡易ソフトウェアモデル生成部１１は、分割部５によって分割された複数の基本処理単位のうちの変更対象である基本処理単位（変更対象基本処理単位）をオペレータの指示に基づいて抽出し、抽出した変更対象基本処理単位に基づいて簡易ソフトウェアモデルを生成するものである。
【００２８】
つまり、簡易ソフトウェアモデル生成部１１は、仮ソフトウェアに対して、変更する処理に該当する基本処理単位（変更対象基本処理単位）を抽出し、それに対して変更を加えることによって、ターゲットＣＰＵに適用される新たなソフトウェアに対応する基本処理単位を生成する。
図６に簡易ソフトウェア（簡易ソフトウェアモデル）１１ａの構成を示す。簡易ソフトウェアモデル１１ａの構成は、大別してユーザモデル１１ｂとリアルタイムＯＳ（ＲＴＯＳ）１１ｃとから成る。ユーザモデル１１ｂは更に、イベントフラグで開始され、ＲＡＭへのデータアクセスを含むデータ構造の連続・反復・選択処理を行うデータ処理部１１ｄと、初期化シーケンスや、データ処理中にシステムコールで呼び出される処理シーケンスのような制御部１１ｅで構成される。
【００２９】
簡易ソフトウェアモデル生成部１１は、ユーザモデル１１ｂに該当する部分を、変更対象として抽出して変更を加える。
なお、簡易ソフトウェアモデル生成部１１のより詳細な動作内容については、後述する図１０のフローチャートを参照しながら説明する。
第２取得部１２は、簡易ソフトウェアモデル生成部１１によって生成された簡易ソフトウェアモデル１１ａを、実機あるいはＩＳＳによって実行することにより、その実行履歴である実行ログ（仮実行ログ）を取得するものである。
【００３０】
合成部１３は、分割部５によって分割された複数の基本処理単位のうちの変更対象基本処理単位以外の基本処理単位と、仮実行ログとを合成して基本処理実行ログを生成するものである。
シミュレーション実行部２０は、基本処理実行ログ生成部１０によって生成された基本処理実行ログを用いてシミュレーションを行い、ターゲットＣＰＵの性能評価のための統計情報を取得するものである。
【００３１】
具体的には、シミュレーション実行部２０は、基本処理実行ログをハードウェアモデルに入力することにより、シミュレーションを実行して性能評価に要する情報（統計情報）を取得する。
図７にシミュレーション部２０によって実現される性能評価シミュレーションの対象（ハードウェアモデル）について説明する。
【００３２】
つまり、ＣＰＵ２１，I-cache（命令キャッシュ）３０，D-cache（データキャッシュ）３１，バス３２，外部RAM３３，及び周辺ハードウェア（Hardware；図中“周辺HW”と表記）３４は、全体が性能評価シミュレーションの対象である。
ＣＰＵ２１は、性能評価の対象であるターゲットプロセッサである。このＣＰＵ２１上でソフトウェアを実行したときのハードウェア性能を調査することで、ＣＰＵ２１の性能検証を行うことができる。
【００３３】
ＣＰＵ２１は、基本処理単位で構成された機能モジュール２２−１〜２２−ｎ（ここではｎは３以上の整数），スケジューラ部２３，及びアクセス処理部２４から成る。
機能モジュール２２−１〜２２−ｎ（以下、これら機能モジュール２２−１〜２２−ｎを区別しない場合には機能モジュール２２という）は、実行ログから抽出された基本処理単位のログ解析ファイルである基本処理実行ログ２５を入力としている。
【００３４】
機能モジュール２２は、ＣＰＵ２１において、アクセス処理部２４により実行ログに基づいて分割されたソフトウェアモデルで実行される処理の実行単位である基本処理単位として機能する。
つまり、入力される基本処理実行ログはいずれかの機能モジュール２２に属し、同じ機能ブロックに複数所属している場合は、実行時に選択される。
【００３５】
スケジューラ部２３は、イベント制御情報２６を読み込んで、そのイベント制御情報をトリガとして、対応する機能モジュール２２にプロセス処理を依頼する。
イベント制御情報２６は、第１取得部４によって取得された実行ログから得られるもので、この時間にこのイベントが発生するというパラメータファイルからなる。
そして、スケジューラ部２３はそのイベント制御情報２６に基づいて基本処理実行ログを対応する機能モジュール２２に投入する。
【００３６】
つまり、シミュレーション実行部２０は、実行ログにおけるイベント制御情報に基づいて基本処理実行ログを、ハードウェアモデルに入力するようになっている。
そして、スケジューラ部２３は、アクセス処理部２４により実行されたシミュレーション処理から性能評価に用いる統計情報２７を作成する。
例えば、スケジューラ部２３は、基本処理単位毎、即ち、機能モジュール２２毎に、命令実行時間（ｎｓ），命令フェッチ時間（ｎｓ），データアクセス時間（ｎｓ），及びＣＰＵ負荷率（％）を、統計情報２７として取得し作成する。つまり、実行ログは命令アドレス列と、データアクセスのアドレス列を持っているため、シミュレーション実行部２０は、それぞれ命令キャッシュ、データキャッシュを経由してバスアクセスを実行させることができ、その結果、命令実行時間、命令フェッチ時間、データアクセス時間等をモニタし、ＣＰＵ負荷率等統計データを作成できる。
【００３７】
アクセス処理部２４は、機能モジュール２２から命令フェッチまたはデータアクセス処理を受けてI-cache３０またはD-cache３１へのアクセスを実行する。
ここで、I-cache３０とは、外部RAM３３上に存在する命令の取得時間を短くするための、命令キャッシュである。D-cache３１もI-cache３０と同じく、こちらはデータアクセスの時間を短くするための、データキャッシュである。I-cache３０と異なるのは、読み出しだけではなく、書き込みにも対応している点である。
【００３８】
I-cache３０及び D-cache３１は、バス３２に接続される。バス３２に接続されているものは、この例では他に外部ＲＡＭ３３と周辺ＨＷ３４がある。なお、外部ＲＡＭ３３は、ＣＰＵ２１の外部にバス３２を介して接続されるＲＡＭを意味する。周辺ＨＷ３４とは、外部Ｉ／Ｆ、あるいは、特定用途向け専用ハードウェアなどを意味している。
シミュレーション実行部２０は、基本処理実行ログの入力を除く部分は、例えば、ＳｙｓｔｅｍＣ言語などを用いたトランザクションレベルで構築する。
【００３９】
ここで、図８にシミュレーション実行部２０によるシミュレーションにおいて、ＣＰＵ２１（ＣＰＵモデル）が、周期的にイベントを行う様子を示す。
各イベントのプロセス処理は、複数の基本処理で構成される。例えば、パラメータとして与えておいた頻度に従い周期イベントＡが発生すると、これをトリガとしてＣＰＵ２１内部のスケジューラ部２３は機能モジュール２２−１に続いて機能モジュール２２−２を呼び出す。
【００４０】
呼び出された機能モジュール２２−１，２２−２はそれぞれ対応する基本処理の実行ログを実行する。イベントや基本処理には要求仕様等によって優先順位を予め与えておき、イベントや基本処理同士が時間的に衝突することを避けるようにする。図８の例では、スケジューラ部２３は、イベントＡと後続のイベントＢとが衝突しないように制御する。
なお、機能モジュール２２では、性能評価に必要な命令フェッチ、メモリアクセス、命令時間消費など統計情報データを収集するための共通処理の他に、ハードウェアの完成度に応じて各モジュール固有の機能を記述する。
【００４１】
次に、図９のフローチャート（ステップＳ１〜Ｓ１７，Ｓ８´，Ｓ１０´）を参照しながら、本シミュレーション装置１の動作手順の概略、即ち、本発明の一実施形態としてのシミュレーション方法を示す。
まず、本シミュレーション装置１は、性能評価対象のハードウェア（以下、ターゲットＣＰＵという）と、そのターゲットＣＰＵに搭載するソフトウェアとに係るシステムの要求仕様を入力される（ステップＳ１）。なお、機能を検証するための機能モデルを作成することもあるが、ここでは省略している。
【００４２】
次に、ＳＷ／ＨＷ分割部２が、要求仕様に基づいて発生する処理を、ソフトウェアの処理とハードウェアの処理と（ソフトウェアモデルとハードウェアモデルと）に分割する（ステップＳ２）。
ここで、シミュレーション実行部２０は、ハードウェアに係る動作モデルを作成する（ステップＳ３）。なお、動作モデルは、ＲＴＬまたは抽象度の高いＴＬＭ、あるいはその両方の混在した記述で作成される。
【００４３】
一方、ソフトウェアは、性能を評価するのに十分な負荷を作り出すことのできる仮ソフトウェアとして過去に作成した既存のソフトウェア（過去のソフトウェア）を用いる（ステップＳ４）。つまり、流用設計元となるとなる既存モデルのソースコードを利用する。ここでは、リアルタイムＯＳ（ＲＴＯＳ）を利用する場合を記述している。
次に、フラグ処理部３が、図２を参照しながら説明したように仮ソフトウェアにフラグを埋め込む（ステップＳ５；フラグ処理ステップ）。
【００４４】
そして、第１取得部４が、仮ソフトウェアをターゲットプロセッサ向けにコンパイルし、実行バイナリを作成する。ソフトウェア実行環境として、エミュレータを介した実機または計算機上のＩＳＳと、ＯＳを含む命令の実行履歴（実行ログ）を取得する計算機を用いて、実際にソフトウェアを実行することで実行ログを取得する（ステップＳ６，Ｓ７；第１取得ステップ）。
【００４５】
続いて、分割部４が、取得した実行ログを基本処理単位に分割する（ステップ８；分割ステップ）。
なお、この基本処理単位の抜き出しに併せて、ハードウェアの方では機能モジュール作成部６が、対応する機能モジュールを作成する（ステップＳ８´）。
次に、基本処理実行ログ生成部１０の簡易ソフトウェアモデル生成部１１が、基本処理単位に分割した実行ログについて、仮ソフトウェアの既存機能からの変更となる処理部分を選別し（ステップＳ９）、変更部分については（ステップＳ９のＹｅｓルート）簡易ソフトウェアモデル１１ａを作成する（ステップＳ１０）。
【００４６】
ここで、簡易ソフトウェアモデル１１ａとは、要求仕様に記載される機能をそのまま実装した場合の抽象度を記述したモデルであり、具体的には異常検出の分岐処理や内部状態遷移、内部変数保持などの処理を省いたモデルとなる。
実行ログから簡易ソフトウェアモデル１１ａを作成する詳細手順については、後述する図１０を参照しながら説明する。
【００４７】
なお、このとき、機能モジュール作成部６が、簡易ソフトウェアモデル生成部１１が作成した簡易ソフトウェアモデルに合わせ、必要に応じてハードウェアの機能モジュールの修正を行う（ステップＳ１０´）。
続いて、第２取得部１２は、作成された簡易ソフトウェアモデルをターゲットプロセッサ向けにコンパイルし（ステップＳ１１）、実行バイナリを作成する（ステップＳ１２）。その後、第２取得部１２は、この実行バイナリをターゲットプロセッサ用のＩＳＳ上で実行し（ステップＳ１３）、実際に実行された命令の実行履歴（仮実行ログ）を取得する（ステップＳ１４）。
【００４８】
そして、合成部１３が、上記ステップＳ９で変更部分に選択しなかった既存部分の基本処理単位の実行ログと、仮実行ログとを合成し（ステップＳ１５）、基本処理実行ログを生成する（ステップＳ１６）。
最後に、シミュレーション実行部２０が、その基本処理実行ログと、動作モデルとを用いてターゲットＣＰＵ２１の性能評価シミュレーションを実行し（ステップＳ１７；シミュレーション実行ステップ）、処理を終了する。ここで、シミュレーション実行部２０は、基本処理単位の実行ログを、頻度などのパラメータ設定とともに動作モデルに入力として与えることで、性能評価シミュレーションを実行している。
【００４９】
次に、図１０に示すフローチャート（ステップＳ２０〜Ｓ３３）を参照しながら、簡易ソフトウェアモデル生成部１１のより詳細な動作手順（簡易ソフトウェアモデルのフロー）を示す。
簡易ソフトウェアモデル生成部１１は、分割部５が仮ソフトウェアの実行ログを図３〜図５に示す手順で基本処理単位に分割した中から、新規に変更する処理部分を抜き出して取得する（ステップＳ２０）。
【００５０】
次に、簡易ソフトウェアモデル生成部１１は、当該実行ログからデータアクセスを除いた命令処理行のみを抽出したデータを作成し（ステップＳ２１）、更に予め付加しておいたオブジェクト情報を基に、図４のオブジェクトシーケンス表を作成する（ステップＳ２２）。
あるいは、簡易ソフトウェアモデル生成部１１は、命令アドレス列からオブジェクト情報を付加することでもオブジェクトシーケンスを作成可能である。
【００５１】
そして、簡易ソフトウェアモデル生成部１１は、オブジェクトシーケンスとタイムスタンプ（図４中“time”）から各オブジェクトの処理時間中に実行される呼び出し関数を実行ログから抽出する（ステップＳ２３）。
次に、簡易ソフトウェアモデル生成部１１は、抽出した関数がユーザモデル１１ｂに係るものか、ＲＴＯＳ１１ｃに係るものかを、各関数がアクセスするオブジェクトに応じて分別する（ステップＳ２４）。つまり、簡易ソフトウェアモデル生成部１１は、呼び出し関数がアクセスするオブジェクトを参照することによって、その関数がユーザモデル１１ｂに関するものか、ＲＴＯＳ１１ｃに関するものかを判断する。
【００５２】
ＲＴＯＳ１１ｃに関するものについては、簡易ソフトウェアモデル生成部１１は、その呼び出し関数処理前後のオブジェクトを抽出し（ステップＳ２５）、抽出したオブジェクトのパターン発生率を算出する（ステップＳ２６）。
これらの処理はユーザモデル１１ｂと同様に実行ログ内に含まれているため、既存部分を参考にして類似箇所のログを繋ぎ合わせる。具体的には、簡易ソフトウェアモデル生成部１１は、当該基本処理の実行処理のタイムスタンプを基に前後のＲＴＯＳオブジェクトを抽出し、オブジェクトパターンの発生頻度を第１取得部４が取得した実行ログから求めて、各オブジェクトの発生率を決定する係数を与えることで、パターン発生率を作成する
。
【００５３】
なお、パターン発生率は、イベント制御情報２６の一部としてスケジュール部２３の制御に用いられる。
一方、ユーザモデル１１ｂに対しては、簡易ソフトウェアモデル生成部１１は、上記図４のオブジェクトシーケンスと呼び出し関数の実行情報の相関に基づき、ユーザモデル１１ｂのデータ処理部１１ｄおよび制御部１１ｅについて、流用元である既存の仮ソフトウェアのソースコードから必要な記述を抜粋することで機能レベルの抽象化モデルを作成する（ステップＳ２７，Ｓ２８）。
【００５４】
ここで、必要な記述とは、呼び出し関数及び呼び出し関数を読み出している行の前後の処理、分岐の流れを補完することであり（ステップＳ２７）、異常検出のif文や、内部状態遷移処理は省略する。
例えば、簡易ソフトウェアモデル生成部１１は、図４に示すオブジェクトシーケンス表において、タイムスタンプ“30530”の関数“#100”の直後と、タイムスタンプ“30539”の関数“#398”の直前とに対して上記補完を行う。また、簡易ソフトウェアモデル生成部１１は、タイムスタンプ“30557”の関数“#406”の直後と、タイムスタンプ“30572”の関数“#174”の直前とに対して上記補完を行う。
【００５５】
また、簡易ソフトウェアモデル生成部１１は、上記手順で作成した抽象化モデルのソースコードに、切り出した当該基本処理の開始と終了を制御するmain関数を追加する（ステップＳ２８）。例えば、簡易ソフトウェアモデル生成部１１は、図１１（ａ）に示す基本処理１，２に対して、図１１（ｂ）に示すように、関数“f1.o”と“f2.o”との間にmain関数“main.o”を追加する。これによって、当該基本処理は周辺処理とのレイヤ間でデータ連携せず、独立で動く抽象化モデル１１ｆとなる。
【００５６】
このように、簡易ソフトウェアモデル生成部１１は、実行ログのオブジェクトシーケンスから簡易ソフトウェアモデル１１ａのデータ処理部１１ｄを作成する。
なお、簡易ソフトウェアモデル生成部１１は、main関数内では、前述の当該基本処理の呼び出しの他、オブジェクト内で呼び出されるRAMアクセスのアドレスやデータ、当該基本処理以外のオブジェクトに実装される変数を初期値として設定する。こうしておくことで、第２取得部１２が、当該基本処理をコンパイル後、ターゲットプロセッサ上で実行して取り出す実行ログからオブジェクトmain.oの処理を取り除けば当該基本処理部の正確な命令数、データアクセス数を把握することができる。
【００５７】
なお、簡易ソフトウェアモデル生成部１１は、RAMアクセスのアドレスについては、流用元である既存の仮ソフトウェアのメモリマップを元にRAM領域内の適当なアドレスを割り振る。また、簡易ソフトウェアモデル生成部１１は、当該基本処理以外の変数についても同様に適当な値を割り振るものとする。
このように、基本処理実行ログ生成部１０は、仮ソフトウェアに基づいて、仮ソフトウェアにより得られた基本処理単位に変更を加えることで、ターゲットＣＰＵに搭載する新たなソフトウェアに対応する実行ログを取得する。
そして、第２取得部１２が、コンパイル処理（ステップＳ２９），実行（ステップＳ３０）を行うことにより、仮実行ログを取得する（ステップＳ３１）。
【００５８】
次に、基本処理実行ログ生成部１０は、その仮実行ログのうち、データ処理部１１ｄに係るものと制御部１１ｅに係るものとを分別する（ステップＳ３２）。
ここで、基本処理実行ログ生成部１０は、仮実行ログのタイムスタンプに基づいて、周期的なものはデータ処理部１１ｄに係るものと判断し、非周期的なものを制御部１１ｅに係るものと判断する。
【００５９】
そして、基本処理実行ログ生成部１０は、制御部１１ｅに係るものについては、上述したＲＴＯＳ１１ｃと同様にパターン発生率を算出して出力する（ステップＳ２６）。
つまり、制御部１１ｅの場合、システムコールで呼び出されて実行される。この処理タイミングはソフトウェア要求仕様によって確定するため、開発初期のアーキ検討時には未定の場合も考えられる。そこで既存の実行ログからオブジェクトパターンの発生頻度、即ち全命令数に対する当該オブジェクトの命令数の割合及び当該オブジェクトの実行周期を求めて、各オブジェクトの発生率を決定する係数を与えることで、基本処理実行ログ生成部１０は各制御部１１ｅのパターン発生率を作成する。
【００６０】
そして、上記ステップＳ３１で取得された仮実行ログは合成部１３に出力される。つまり、基本処理実行ログ生成部１０はデータ処理部１１ｄと制御部１１ｅとをまとめて仮実行ログとして出力し（ステップＳ３３）、上記図９のステップＳ１５の処理に移行する。
このように、本発明の一実施形態としてのシミュレーション装置１及びシミュレーション方法によれば、第１取得部４が予め作成された仮ソフトウェアを実行することによって取得した第１実行ログを、分割部５が複数の基本処理単位に分割する。次に、基本処理実行ログ生成部１０が、一部の基本処理単位を変更することにより、シミュレーションに用いる基本処理実行ログを生成する。そして、シミュレーション実行部２０は、その基本処理実行ログを、ハードウェアモデルに入力することにより、シミュレーションを実行して性能評価に要する情報を取得する。
【００６１】
したがって、ターゲットＣＰＵに実際に実装する実ソフトウェアが完成していない早い段階から、仮ソフトウェアを利用することで、ターゲットＣＰＵの性能評価を高精度に実行できる。つまり、基本処理実行ログ生成部１０は、仮ソフトウェアの実行ログに変更を加えて、実ソフトウェアに対応する実行ログを生成する。そのため、ターゲットＣＰＵに実際に搭載する新たなソフトウェアが完成していなくても、過去のソフトウェア設計資産を活用することで設計初期の段階から高精度のシミュレーションを実行でき、ターゲットＣＰＵのアーキテクチャ検討が可能になる。しかも、既存の仮ソフトウェアを用いるので、要求仕様のドキュメントからアプリケーションプログラムをモデリングする必要がなく、仮ソフトウェアを作成するまでの工数も削減できる。
【００６２】
また、ソフトウェアを基本機能毎に分割してハードウェアモデルに負荷を与える構成とすることで、ソフトウェアの設計進捗度に応じて各機能の抽象度を変更していくことができ、更なる性能評価の精度向上が可能となる。
さらに、従来技術のように、シミュレーションの際にソフトウェアをＩＳＳによって実行することなく、シミュレーション実行部２０は、基本処理実行ログを用いてシミュレーションを実行する。したがって、シミュレーションに係る工数を低減でき、シミュレーションに要する時間を短縮できる。
【００６３】
このように、本シミュレーション装置１によれば、システムＬＳＩ（ターゲットＣＰＵ）のアーキテクチャを開発早期に高精度で検討でき、処理負荷と設計マージンを抑えて低コスト化と小型化とを達成することに大きく寄与できる。
また、基本処理実行ログ生成部１０は、具体的には、簡易ソフトウェアモデル生成部１１が簡易ソフトウェアモデルを生成し、第２取得部１２がその仮実行ログを取得する。そして合成部１３が未変更部分と仮実行ログとを合成することで、既存の仮ソフトウェアから、実ソフトウェアに対応する実行ログを確実に、且つ、少ない工数で生成することができる。
【００６４】
さらに、フラグ処理部２は自動的に仮ソフトウェアにフラグを埋め込み、その実行ログにおけるフラグ情報に基づいて、簡易ソフトウェアモデル生成部１１が簡易ソフトウェアモデルを生成する。そのため、簡易ソフトウェアモデル生成部１１は、オブジェクトシーケンスの生成、及び、ソースコードの抽出を高速且つ確実に行うことができる。
さらに、シミュレーション実行部２０は、第１取得部４によって取得された実行ログにおけるイベント制御情報に基づいて基本処理実行ログを、ハードウェアモデルに入力するので、基本処理実行ログを用いたシミュレーションを既存の資源を用いて確実に実行できる。
【００６５】
〔２〕本発明の変形例について
なお、本発明は上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
例えば、上述した実施形態では、基本処理実行ログ生成部１０が、分割部５によって分割された基本処理単位の内容を変更することにより、仮ソフトウェアに基づいて実装ソフトウェアに対応する実行ログを取得するように構成した。しかし、本発明はこれに限定されるものではなく、基本処理実行ログ生成部１０は、分割部５によって分割された基本処理単位を、別途用意した他の基本処理単位に置換することによって、実装ソフトウェアに対応する実行ログを取得するように構成してもよい。
【００６６】
ここで、上記他の基本処理単位としては、新たに作成したソフトウェアに基づく場合（後述する図１２の場合）や、別の仮ソフトウェアに基づいて取得した場合（後述する図１３の場合）が考えられる。
例えば、図１２のフローチャート（ステップＳ１〜Ｓ４，Ｓ６〜Ｓ９，Ｓ８´，Ｓ１５〜Ｓ１７，Ｓ４０〜Ｓ４６，Ｓ４６´）を参照しながら、新たに作成したソフトウェアに基づく基本処理単位を置換する場合について説明する。なお、図１２において既述の符号と同一の符号は、同一の処理もしくは略同一の処理を示しているので、ここではその詳細な説明は省略する。また、図１２及び後述する図１３において、説明の簡略化のためにフラグの埋め込み処理（図９のステップＳ５の処理）は省略している。
【００６７】
つまり、図１２に示す本発明の第１変形例は、基本処理実行ログ生成部１０が変更対象として変更部分の基本処理を抜き出す（ステップＳ４０）。そして、基本処理実行ログ生成部１０は抜き出した基本処理を削除するか、あるいは、後述するステップＳ３６において、その部分に他の基本処理を上書きする。
つまり、基本処理実行ログ生成部１０は、仮ソフトウェアとは別に、今回の変更部分に係る新たなソフトウェア設計を取得し（ステップＳ４１）、それを第２取得部１２がターゲットＣＰＵ向けにコンパイルし（ステップＳ４２）、実行バイナリを取得する（ステップＳ４３）。次いで、第２取得部１２は、その実行バイナリを、ＩＳＳを用いてターゲットＣＰＵ上で実行し、変更部分に係る仮実行ログ（第２実行ログ）を取得する（ステップＳ４４）。
【００６８】
そして、基本処理実行ログ生成部１０は、上記ステップＳ４０で抽出した変更対象の基本処理単位を、上記ステップＳ４５で取得した仮実行ログに置換する（ステップＳ４６）。つまり、基本処理実行ログ生成部１０は、抽出した部分に仮実行ログを挿入する。このとき、機能モジュール作成部６は、挿入された仮実行ログに対応する機能モジュールを作成する（ステップＳ４６´）。
【００６９】
その後、合成部１３が未変更部分と仮実行ログとを合成して（ステップＳ１５）、基本処理実行ログ生成部１０は、基本処理実行ログを生成する（ステップＳ１６）。
このように、本発明の第１変形例としてのシミュレーション装置１の基本処理実行ログ生成部１０は、オペレータが別途用意した新規ソフトウェアの仮実行ログを、仮ソフトウェアの実行ログの一部と置き換えることにより、基本処理実行ログ（ソフトウェアモデル）を生成する。これによっても上述した実施形態と同様の作用効果を得ることができる。
【００７０】
次に、図１３のフローチャート（ステップＳ４−１、Ｓ４−２，Ｓ６−１〜Ｓ８−１，Ｓ６−２〜Ｓ８−２，Ｓ１５，Ｓ１６，Ｓ５０〜Ｓ５３，Ｓ６０）を参照しながら、上記ステップＳ４で流用する仮ソフトウェアとは異なる他の仮ソフトウェアに基づいて基本処理単位を置換する場合について説明する。なお、図１３において既述の符号と同一の符号は、同一の処理もしくは略同一の処理を示しているので、ここではその詳細な説明は省略する。
【００７１】
つまり、図１３に示す本発明の第２変形例は、第１取得部４が、２つの既存の仮ソフトウェアＸ１，Ｙ１を取得し（ステップＳ４−１，４−２）、それぞれに対して、実機上で実行して（ステップＳ６−１，６−２）、実行ログＸ２，Ｙ２（第１実行ログ及び第２実行ログ）を取得する（ステップＳ７−１，７−２）。
そして、分割部５がそれぞれの実行ログＸ２，Ｙ２に対して基本処理単位への分割を行なう（ステップＳ８−１，８−２）。
【００７２】
次に、基本処理実行ログ生成部１０は、２つの仮ソフトウェアＸ１，Ｙ１のうち、ベースとなる仮ソフトウェアＸ１の基本処理単位における差し換え部分を選択し（ステップＳ５０）、差し換え部分の基本処理を抜き出す（ステップＳ５１）。
一方、基本処理実行ログ生成部１０は、他方の仮ソフトウェアＹ１の基本処理単位から、流用部分の基本処理単位を抜き出す（ステップＳ５２）。
【００７３】
そして、基本処理実行ログ生成部１０は、抜き出した基本処理単位と、流用部分の基本処理単位とを差し替える（ステップＳ５３）。
これにより、基本処理実行ログ生成部１０は、複数の既存の仮ソフトウェアＸ１，Ｙ１から、実装ソフトウェアに対応する基本処理実行ログを生成する。
なお、流用部分の機能に改変や追加が必要な場合は、図１３において二点鎖線で示す簡易ソフトウェアモデル化処理Ｓ６０（ステップＳ１０〜Ｓ１４）を実施し、その流用部分を抽象化して簡易ソフトウェアモデル化し、ターゲットプロセッサ上で実行して仮実行ログを作成する。
【００７４】
また、ＲＴＯＳ部は、流用元のソフトウェア実行ログからそれぞれの当該基本処理の実行時間を元に前後のＲＴＯＳオブジェクトの実行ログを抽出する。上記手順にて作成した各基本処理実行ログおよびＲＴＯＳ部の実行ログに発生頻度と順番のパラメータを与えてソフトウェア負荷を作り出すことで、過去のソフトウェアの一部機能移植や、異なる機能を持つ２つ以上のソフトウェアを１本化する際に、開発早期に簡易的にモデル化することが可能になる。
【００７５】
このように、本発明の第２変形例としてのシミュレーション装置１の基本処理実行ログ生成部１０は、複数の既存の仮ソフトウェアＸ１，Ｙ１を用いて、これらを組み合わせることにより、基本処理実行ログ（ソフトウェアモデル）を生成する。これによっても上述した実施形態と同様の作用効果を得ることができる。
また、上述した実施形態では、機能モジュール作成部６と基本処理実行ログ生成部１０とを別に構成した。しかし、本発明はこれに限定されるものではなく、機能モジュール作成部６は基本処理実行ログ生成部１０の機能の一部として実現されてもよい。
【００７６】
なお、上述したＳＷ／ＨＷ分割部２，フラグ処理部３，第１取得部４，分割部５，機能モジュール作成部６，基本処理実行ログ生成部１０，簡易ソフトウェアモデル生成部１１，第２取得部１２，合成部１３，及びシミュレーション実行部２０としての機能は、コンピュータ（ＣＰＵ，情報処理装置，各種端末を含む）が所定のアプリケーションプログラム（シミュレーションプログラム）を実行することによって実現されてもよい。
【００７７】
そのプログラムは、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷなど），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋Ｒ，ＤＶＤ＋ＲＷなど）等のコンピュータ読取可能な記録媒体に記録された形態で提供される。この場合、コンピュータはその記録媒体からシミュレーションプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。また、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信回線を介してコンピュータに提供するようにしてもよい。
【００７８】
ここで、コンピュータとは、ハードウェアとＯＳ（オペレーティングシステム）とを含む概念であり、ＯＳの制御の下で動作するハードウェアを意味している。また、ＯＳが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウェアは、少なくとも、ＣＰＵ等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取るための手段とをそなえている。
【００７９】
上記シミュレーションプログラムとしてのアプリケーションプログラムは、上述のようなコンピュータに、ＳＷ／ＨＷ分割部２，フラグ処理部３，第１取得部４，分割部５，機能モジュール作成部６，基本処理実行ログ生成部１０，簡易ソフトウェアモデル生成部１１，第２取得部１２，合成部１３，及びシミュレーション実行部２０としての機能を実現させるプログラムコードを含んでいる。また、その機能の一部は、アプリケーションプログラムではなくＯＳによって実現されてもよい。
【００８０】
なお、本実施形態としての記録媒体としては、上述したフレキシブルディスク，ＣＤ，ＤＶＤ，磁気ディスク，光ディスク，光磁気ディスクのほか、ＩＣカード，ＲＯＭカートリッジ，磁気テープ，パンチカード，コンピュータの内部記憶装置（ＲＡＭやＲＯＭなどのメモリ），外部記憶装置等や、バーコードなどの符号が印刷された印刷物等の、コンピュータ読取可能な種々の媒体を利用することもできる。
【００８１】
〔３〕付記
（付記１）
ソフトウェア及びハードウェアによって実現されるシステムにかかる性能評価のためのシミュレーションを、ハードウェアモデルを用いて実行するシミュレーション装置であって、
既存の仮ソフトウェアを実行することにより第１実行ログを取得する第１取得部と、
前記第１実行ログを複数の基本処理単位に分割する分割部と、
前記複数の基本処理単位のうちの一部の基本処理単位を変更することにより前記シミュレーションに用いる基本処理実行ログを生成する基本処理実行ログ生成部と、
前記基本処理実行ログを、前記ハードウェアモデルに入力することにより、前記シミュレーションを実行して前記性能評価に要する情報を取得するシミュレーション実行部とを備えたことを特徴とする、シミュレーション装置。
【００８２】
（付記２）
前記基本処理実行ログ生成部が、
前記複数の基本処理単位のうちの変更対象基本処理単位を抽出し、抽出した前記変更対象基本処理単位に基づいて簡易ソフトウェアモデルを生成する簡易ソフトウェアモデル生成部と、
前記簡易ソフトウェアモデルに基づいて仮実行ログを取得する第２取得部と、
前記複数の基本処理単位のうちの前記変更対象基本処理単位以外の基本処理単位と、前記仮実行ログとを合成して前記基本処理実行ログを生成する合成部とを備えたことを特徴とする、付記１記載のシミュレーション装置。
【００８３】
（付記３）
前記仮ソフトウェアにおけるソースコードの分岐行もしくはオブジェクトを呼び出す関数行を示すフラグを前記仮ソフトウェアに埋め込むフラグ処理部を備え、
前記第１取得部は、前記フラグを埋め込まれた前記仮ソフトウェアを実行して前記第１実行ログを取得するように構成されるとともに、
前記簡易ソフトウェアモデル生成部が、前記変更対象基本処理単位における前記フラグに対応するフラグ情報に基づいて、前記変更対象基本処理単位内のオブジェクトシーケンスを生成し、前記ソースコードを抽出して前記簡易ソフトウェアモデルを生成することを特徴とする、付記２記載のシミュレーション装置。
【００８４】
（付記４）
前記基本処理実行ログ生成部が、前記複数の基本処理単位のうちの一部の基本処理単位を、他の基本処理単位に置換することにより前記基本処理実行ログを生成することを特徴とする、付記１記載のシミュレーション装置。
（付記５）
前記基本処理実行ログ生成部が、前記仮ソフトウェアとは異なる他の仮ソフトウェアを実行して第２実行ログを取得し、その第２実行ログに基づいて前記他の基本処理単位を取得することを特徴とする、付記４記載のシミュレーション装置。
【００８５】
（付記６）
前記シミュレーション実行部は、前記第１実行ログにおけるイベント制御情報に基づいて前記基本処理実行ログを、前記ハードウェアモデルに入力することを特徴とする、付記１〜５のいずれか１項に記載のシミュレーション装置。
（付記７）
ソフトウェア及びハードウェアによって実現されるシステムにかかる性能評価のためのシミュレーションを、ハードウェアモデルを用いて実行するシミュレーション方法であって、
既存の仮ソフトウェアを実行することにより第１実行ログを取得する第１取得ステップと、
前記第１実行ログを複数の基本処理単位に分割する分割ステップと、
前記複数の基本処理単位のうちの一部の基本処理単位を変更することにより前記シミュレーションに用いる基本処理実行ログを生成する基本処理実行ログ生成ステップと、
前記基本処理実行ログを、前記ハードウェアモデルに入力することにより、前記シミュレーションを実行して前記性能評価に要する情報を取得するシミュレーション実行ステップとを含んでいることを特徴とする、シミュレーション方法。
【００８６】
（付記８）
前記基本処理実行ログ生成ステップが、
前記複数の基本処理単位のうちの変更対象基本処理単位を抽出し、抽出した前記変更対象基本処理単位に基づいて簡易ソフトウェアモデルを生成する簡易ソフトウェアモデル生成ステップと、
前記簡易ソフトウェアモデルに基づいて仮実行ログを取得する第２取得ステップと、
前記複数の基本処理単位のうちの前記変更対象基本処理単位以外の基本処理単位と、前記仮実行ログとを合成して前記基本処理実行ログを生成する合成ステップとを含んでいることを特徴とする、付記７記載のシミュレーション方法。
【００８７】
（付記９）
前記仮ソフトウェアにおけるソースコードの分岐行もしくはオブジェクトを呼び出す関数行を示すフラグを前記仮ソフトウェアに埋め込むフラグ処理ステップをさらに含み、
前記第１取得ステップにおいて、前記フラグを埋め込まれた前記仮ソフトウェアを実行して前記第１実行ログが取得されるとともに、
前記簡易ソフトウェアモデル生成ステップにおいて、前記変更対象基本処理単位における前記フラグに対応するフラグ情報に基づいて、前記変更対象基本処理単位内のオブジェクトシーケンスが生成され、前記ソースコードを抽出して前記簡易ソフトウェアモデルが生成されることを特徴とする、付記８記載のシミュレーション方法。
【００８８】
（付記１０）
前記基本処理実行ログ生成ステップにおいて、前記複数の基本処理単位のうちの一部の基本処理単位を、他の基本処理単位に置換することにより前記基本処理実行ログが生成されることを特徴とする、付記７記載のシミュレーション方法。
（付記１１）
前記基本処理実行ログ生成ステップにおいて、前記仮ソフトウェアとは異なる他の仮ソフトウェアを実行して第２実行ログを取得し、その第２実行ログに基づいて前記他の基本処理単位を取得することを特徴とする、付記１０記載のシミュレーション方法。
【００８９】
（付記１２）
前記シミュレーション実行ステップにおいて、前記第１実行ログにおけるイベント制御情報に基づいて前記基本処理実行ログを、前記ハードウェアモデルに入力することを特徴とする、付記７〜１１のいずれか１項に記載のシミュレーション方法。
（付記１３）
ソフトウェア及びハードウェアによって実現されるシステムにかかる性能評価のためのシミュレーションを、ハードウェアモデルを用いて実行する機能をコンピュータに実現させるためのシミュレーションプログラムであって、
既存の仮ソフトウェアを実行することにより第１実行ログを取得する第１取得部、
前記第１実行ログを複数の基本処理単位に分割する分割部、
前記複数の基本処理単位のうちの一部の基本処理単位を変更することにより前記シミュレーションに用いる基本処理実行ログを生成する基本処理実行ログ生成部、及び、
前記基本処理実行ログを、前記ハードウェアモデルに入力することにより、前記シミュレーションを実行して前記性能評価に要する情報を取得するシミュレーション実行部として、前記コンピュータを機能させることを特徴とする、シミュレーションプログラム。
【００９０】
（付記１４）
前記基本処理実行ログ生成部として前記コンピュータを機能させる際、
前記複数の基本処理単位のうちの変更対象基本処理単位を抽出し、抽出した前記変更対象基本処理単位に基づいて簡易ソフトウェアモデルを生成する簡易ソフトウェアモデル生成部、
前記簡易ソフトウェアモデルに基づいて仮実行ログを取得する第２取得部、及び、
前記複数の基本処理単位のうちの前記変更対象基本処理単位以外の基本処理単位と、前記仮実行ログとを合成して前記基本処理実行ログを生成する合成部として、前記コンピュータを機能させることを特徴とする、付記１３記載のシミュレーションプログラム。
【００９１】
（付記１５）
前記仮ソフトウェアにおけるソースコードの分岐行もしくはオブジェクトを呼び出す関数行を示すフラグを前記仮ソフトウェアに埋め込むフラグ処理部として、前記コンピュータを機能させ、
前記第１取得部が、前記フラグを埋め込まれた前記仮ソフトウェアを実行して前記第１実行ログを取得するとともに、
前記簡易ソフトウェアモデル生成部が、前記変更対象基本処理単位における前記フラグに対応するフラグ情報に基づいて、前記変更対象基本処理単位内のオブジェクトシーケンスを生成し、前記ソースコードを抽出して前記簡易ソフトウェアモデルを生成するように、前記コンピュータを機能させることを特徴とする、付記１４記載のシミュレーションプログラム。
【００９２】
（付記１６）
前記基本処理実行ログ生成部が、前記複数の基本処理単位のうちの一部の基本処理単位を、他の基本処理単位に置換することにより前記基本処理実行ログを生成するように、前記コンピュータを機能させることを特徴とする、付記１３記載のシミュレーションプログラム。
【００９３】
（付記１７）
前記基本処理実行ログ生成部が、前記仮ソフトウェアとは異なる他の仮ソフトウェアを実行して第２実行ログを取得し、その第２実行ログに基づいて前記他の基本処理単位を取得するように、前記コンピュータを機能させることを特徴とする、付記１６記載のシミュレーションプログラム。
【００９４】
（付記１８）
前記シミュレーション実行部は、前記第１実行ログにおけるイベント制御情報に基づいて前記基本処理実行ログを、前記ハードウェアモデルに入力するように、前記コンピュータを機能させることを特徴とする、付記１３〜１７のいずれか１項に記載のシミュレーションプログラム。
【００９５】
（付記１９）
ソフトウェア及びハードウェアによって実現されるシステムにかかる性能評価のためのシミュレーションを、ハードウェアモデルを用いて実行する機能をコンピュータに実現させるためのシミュレーションプログラムを記録したコンピュータ読取可能な記録媒体であって、
前記シミュレーションプログラムが、
既存の仮ソフトウェアを実行することにより第１実行ログを取得する第１取得部、
前記第１実行ログを複数の基本処理単位に分割する分割部、
前記複数の基本処理単位のうちの一部の基本処理単位を変更することにより前記シミュレーションに用いる基本処理実行ログを生成する基本処理実行ログ生成部、及び、
前記基本処理実行ログを、前記ハードウェアモデルに入力することにより、前記シミュレーションを実行して前記性能評価に要する情報を取得するシミュレーション実行部として、前記コンピュータを機能させることを特徴とする、シミュレーションプログラムを記録したコンピュータ読取可能な記録媒体。
【００９６】
（付記２０）
前記シミュレーションプログラムは、前記基本処理実行ログ生成部として前記コンピュータを機能させる際、
前記複数の基本処理単位のうちの変更対象基本処理単位を抽出し、抽出した前記変更対象基本処理単位に基づいて簡易ソフトウェアモデルを生成する簡易ソフトウェアモデル生成部、
前記簡易ソフトウェアモデルに基づいて仮実行ログを取得する第２取得部、及び、
前記複数の基本処理単位のうちの前記変更対象基本処理単位以外の基本処理単位と、前記仮実行ログとを合成して前記基本処理実行ログを生成する合成部として、前記コンピュータを機能させることを特徴とする、付記１９記載のシミュレーションプログラムを記録したコンピュータ読取可能な記録媒体。
【図面の簡単な説明】
【００９７】
【図１】本発明の一実施形態としてのシミュレーション装置の要部構成を示すブロック図である。
【図２】本発明の一実施形態としてのシミュレーション装置のフラグ処理部による処理を説明するための図である。
【図３】本発明の一実施形態としてのシミュレーション装置の第１取得部によって取得される実行ログの一例を示す図である。
【図４】本発明の一実施形態としてのシミュレーション装置の基本処理実行ログ生成部の簡易ソフトウェアモデル生成部が生成するオブジェクトシーケンスの一例を示す図である。
【図５】図４に示すオブジェクトシーケンスの一部に対応する簡易シーケンス図の一例を示す図である。
【図６】本発明の一実施形態としてのシミュレーション装置の基本処理実行ログ生成部の簡易ソフトウェアモデル生成部が生成する簡易ソフトウェアモデルを説明するための図である。
【図７】本発明の一実施形態としてのシミュレーション装置のシミュレーション実行部によって実現されるシミュレーション対象の構成例を示す図である。
【図８】本発明の一実施形態としてのシミュレーション装置のシミュレーション実行部によるシミュレーションにおける周期的なイベントの実行例を示す図である。
【図９】本発明の一実施形態としてのシミュレーション方法の処理手順を示すフローチャートである。
【図１０】本発明の一実施形態としてのシミュレーション装置の基本処理実行ログ生成部の簡易ソフトウェアモデル生成部の動作手順の一例を示すフローチャートである。
【図１１】本発明の一実施形態としてのシミュレーション装置の基本処理実行ログ生成部の簡易ソフトウェアモデル生成部の処理の一例を説明するための図であり、（ａ）が簡易ソフトウェアモデル生成部が処理を施す前の基本処理を示し、（ｂ）は（ａ）に対して抽象化モデルを生成するための処理を施した基本処理を示している。
【図１２】本発明の第１変形例としてのシミュレーション方法の処理手順を示すフローチャートである。
【図１３】本発明の第２変形例としてのシミュレーション方法の処理手順を示すフローチャートである。
【図１４】従来の半導体装置の性能評価シミュレーション装置の構成例を示すブロック図である。
【符号の説明】
【００９８】
１  シミュレーション装置
２  ＳＷ／ＨＷ（SoftWare/HardWare）分割部
３  フラグ処理部
４  第１取得部
５  分割部
６  機能モジュール作成部
１０  基本処理実行ログ生成部
１１  簡易ソフトウェアモデル生成部
１１ａ  簡易ソフトウェアモデル
１１ｂ  ユーザモデル
１１ｃ  ＲＴＯＳ（Real Time Operating System）
１１ｄ  データ処理部
１１ｅ  制御部
１２  第２取得部
１３  合成部
２０  シミュレーション実行部
２１  ＣＰＵ（Central Processing Unit；ターゲットＣＰＵ）
２２，２２−１〜２２−ｎ  機能モジュール
２３  スケジューラ部
２４  アクセス処理部
２５  基本処理実行ログ
２６  イベント制御情報
２７  統計情報
３０，１０２  Ｉ−ｃａｃｈｅ
３１，１０３  Ｄ−ｃａｃｈｅ
３２，１０４  バス
３３，１０５  外部ＲＡＭ（Random Access Memory）
３４，１０６  周辺ＨＷ（HardWare）
１００  シミュレーション装置
１０１  ＣＰＵ
１１０  ＩＳＳ（Instruction Set Simulator）
１２０  統計情報
１２１  仕様
１２２  ソフトウェア
【図１】
0005200675.tif 000002
【図２】
0005200675.tif 000003
【図３】
0005200675.tif 000004
【図４】
0005200675.tif 000005
【図５】
0005200675.tif 000006
【図６】
0005200675.tif 000007
【図７】
0005200675.tif 000008
【図８】
0005200675.tif 000009
【図９】
0005200675.tif 000010
【図１０】
0005200675.tif 000011
【図１１】
0005200675.tif 000012
【図１２】
0005200675.tif 000013
【図１３】
0005200675.tif 000014
【図１４】
0005200675.tif 000015