(57)【特許請求の範囲】
【請求項１】
ソフトウェアに従ってコアで実行される命令に係るシミュレーションを実行する第１のシミュレータ部と、
前記第１のシミュレータ部でのシミュレーションにより要求されたバスアクセスに係るシミュレーションを実行する第２のシミュレータ部とを有し、
前記第２のシミュレータ部は、
要求された前記バスアクセスを分類条件に従って各ポートに割り当てる分割処理部と、
前記分割処理部による割り当てに従って、前記バスアクセスを前記ポート毎に生成する生成処理部と、
前記生成処理部により生成された前記バスアクセスのシミュレーションを行う実行処理部とを有することを特徴とするシミュレーション装置。
【請求項２】
前記分割処理部は、前記バスアクセスを要求した命令のプログラムカウンタ値に応じて、前記バスアクセスを前記ポートに割り当てることを特徴とする請求項１記載のシミュレーション装置。
【請求項３】
前記第１のシミュレータ部でのシミュレーションにより要求されたバスアクセスに応じたメモリアクセスに係る論理的な動作を行うインターフェースを有することを特徴とする請求項１又は２記載のシミュレーション装置。
【請求項４】
命令に係るシミュレーションでの所定の時間経過及び所定の実行命令数超過の少なくとも１つをトリガとして、前記第１のシミュレータ部での命令に係るシミュレーションを停止し、前記第２のシミュレータ部でのバスアクセスに係るシミュレーションを開始することを特徴とする請求項１〜３の何れか１項に記載のシミュレーション装置。
【請求項５】
前記生成処理部による前記バスアクセスの生成は、前記ポート間で並列して行われることを特徴とする請求項１〜４の何れか１項に記載のシミュレーション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シミュレーション装置に関し、マルチコアの情報処理システムに係る性能評価技術に関する。
【背景技術】
【０００２】
マルチコアプロセッサは、複数のＣＰＵ（Central Processing Unit）やＤＳＰ（Digital Signal Processor）やハードウェアアクセラレータを有するプロセッサである。以下では、ＣＰＵやＤＳＰやハードウェアアクセラレータの各々の１個を単にコア（core）と称する。マルチコアプロセッサを有する情報処理システムは、複数のコアがメモリを共有するもの、各々のコアがローカルなメモリを持つもの、それらが混在するもの、またキャッシュメモリ等の階層構造が存在するものなどがある。
【０００３】
近年、情報処理システムは、高性能・高機能と低消費電力とを両立するために、複数のコアを備えるマルチコア化が進んでいる。マルチコア化された情報処理システムにおいて動作するソフトウェアは、マルチコア向けに並列化されたソフトウェアであることが望まれている。しかし、従来の逐次処理方式のソフトウェアを並列化するには多大な労力が必要であり、また適切に並列化しないと目標とする性能を達成できないおそれがある。
【０００４】
このような複数のコアを備える情報処理システムの設計においては、各コアにデータを供給したり処理結果をメモリ等に格納したりするバスアーキテクチャが重要である。それは、各コアがいかに高性能であっても処理すべきデータが供給されなければ処理を続けることができず、また処理結果をメモリ等に格納できなければ次の処理を行うことができないためである。
【０００５】
ここで、バスアーキテクチャとは、各コアとメモリやＩ／Ｏ等との接続方法や配置方法などである。バスアーキテクチャのパラメータには、例えばメモリのポート数やバスのデータ幅、複数のＣＰＵを複数のメモリやＩ／Ｏに接続する場合に、相互に接続するのか、１本の共有の配線で接続するのかといったバスのトポロジがある。また、バスアーキテクチャのパラメータには、ある配線やメモリポートに複数のＣＰＵがアクセスしようとした場合、すなわちアクセスが競合した場合の優先順位付け等もある。
【０００６】
バス構成を必要以上に贅沢にすると、回路面積や消費電力の点で過大な増大を招いてしまう。また、バス構成において一箇所でも性能が不足している部分があると、その部分がボトルネックとなって他の部分にいくら回路規模や電力を費やしても情報処理システム全体としては目標とする性能が達成できない。また、優先順位の高いバスアクセスが優先順位の低いバスアクセスを必要以上に阻害してしまい、情報処理システム全体として目標とする性能が達成できないというケースも起こりうる。
【０００７】
また、コア単体では性能を変えずにコアの数を増やすことでのアップグレードに関し、情報処理システム全体での性能がスケーラブルに向上してほしいという要求がある。マルチコアプロセッサを有する情報処理システムの開発における初期の段階においては、前述のような要求を満たしているか等を確認しながらバスアーキテクチャの設計を行わなければならない。
【０００８】
情報処理システムにおいてバスの挙動は動的であり、机上の計算だけで必要な性能を満たしているか否かを判断することは困難である。そこで、動的なバスの挙動を再現したシミュレーションモデルを構築し、その上でソフトウェアを動作させることで、情報処理システム全体としての性能評価を行うシミュレーション技術がある。例えば、図２０に示すように、評価対象のソフトウェアを並列化し、情報処理システムが有するコア数分の命令セットシミュレータを用いて並列化されたソフトウェアを動作させる。そして、命令セットシミュレータが生成させたバスアクセスを、情報処理システムのバスアーキテクチャを模倣した、チップ内インターコネクト、メモリコントローラ、及びメモリを有するシミュレータにより再現する。
【０００９】
また、マルチコア化されたシステムのシミュレーションを高速化しようとするシミュレーション技術が提案されている（例えば、特許文献１、２参照。）。また、修正対象のプログラムに対し、テストデータに対する処理を所定の分割単位でコンピュータに実行させ、実行手順を比較することで修正が必要な箇所を検出する技術が提案されている（例えば、特許文献３参照。）。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開平７−２４９０１２号公報
【特許文献２】特開２００６−２９３７５９号公報
【特許文献３】特開平１１−２８２７２２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、従来のシミュレーション技術では、シミュレーションを実行するのに先だって、マルチコアプロセッサを有する情報処理システムで動作する並列化されたソフトウェアを用意する必要がある。ソフトウェアを並列化する際、その方針はソフトウェアを動作させる情報処理システムのバスアーキテクチャによって左右されてしまうが、このバスアーキテクチャを決定するためには、まず並列化されたソフトウェアが必要であるという矛盾がある。そこで、従来は、机上の計算や熟練者の知見等に基づいて、まずソフトウェアを並列化してみるというステップが必要であった。
【００１２】
このように、マルチコアプロセッサを有する情報処理システム向けにソフトウェアを並列化する際に、適切に並列化できるよう情報処理システムのバスアーキテクチャを評価するために、その情報処理システム向けに並列化されたソフトウェアが必要であった。
【課題を解決するための手段】
【００１３】
本発明の一観点によれば、ソフトウェアに従ってコアで実行される命令に係るシミュレーションを行う第１のシミュレータ部と、当該シミュレーションにより要求されたバスアクセスに係るシミュレーションを行う第２のシミュレータ部とを有するシミュレーション装置が提供される。第２のシミュレータ部は、要求されたバスアクセスを分割条件に従って各ポートに割り当てる分割処理部と、その割り当てに従ってバスアクセスをポート毎に生成する生成処理部と、生成されたバスアクセスのシミュレーションを行う実行処理部とを有する。
【発明の効果】
【００１４】
開示のシミュレーション装置は、並列化されていないソフトウェアを用いて、当該ソフトウェアを並列化してマルチコアプロセッサを有する情報処理システムで動作させた場合に相当するバスアクセスを再現し、情報処理システムのバスアーキテクチャの評価を行うことができるという効果を奏する。
【図面の簡単な説明】
【００１５】
【図１】第１の実施形態によるシミュレーション装置の機能構成例を示す図である。
【図２】第１の実施形態によるシミュレーションの実行形態の例を示す図である。
【図３】第１の実施形態によるバスアクセス分割モデルを説明するための図である。
【図４】第１の実施形態によるトランザクション生成モデルを説明するための図である。
【図５Ａ】第１の実施形態によるシミュレーション装置の処理手順の一例を示すフローチャートである。
【図５Ｂ】第１の実施形態によるシミュレーション装置の処理手順の一例を示すフローチャートである。
【図６】第２の実施形態によるシミュレーション装置の機能構成例を示す図である。
【図７】第２の実施形態によるシミュレーションの実行形態の例を示す図である。
【図８】第２の実施形態によるトランザクション生成モデルを説明するための図である。
【図９Ａ】第２の実施形態によるシミュレーション装置の処理手順の一例を示すフローチャートである。
【図９Ｂ】第２の実施形態による命令セットシミュレーションスレッド処理の一例を示すフローチャートである。
【図９Ｃ】第２の実施形態によるバスシミュレーションスレッド処理の一例を示すフローチャートである。
【図１０】他の実施形態によるシミュレーション装置の機能構成例を示す図である。
【図１１】分割条件の一例を説明するための図である。
【図１２】分割条件の一例を説明するための図である。
【図１３】分割条件の一例を説明するための図である。
【図１４】分割条件の一例を説明するための図である。
【図１５】分割条件の一例を説明するための図である。
【図１６】図１４に示す分割条件を用いて好適な処理の一例を示す図である。
【図１７】本発明の実施形態によるシミュレーション装置を実現可能なコンピュータの構成例を示す図である。
【図１８】本発明の実施形態によるシミュレーション装置の適用例を示す図である。
【図１９】本発明の実施形態によるシミュレーション装置の適用例を示す図である。
【図２０】従来のシミュレーション装置の一例を示す図である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施形態を図面に基づいて説明する。
以下に説明する各実施形態によるシミュレーション装置は、マルチコアプロセッサを有する情報処理システムの評価を行うものであり、例えば情報処理システムのバスの性能評価等に用いられる。
【００１７】
（第１の実施形態）
本発明の第１の実施形態について説明する。
図１は、第１の実施形態によるシミュレーション装置の機能構成例を示すブロック図である。第１の実施形態によるシミュレーション装置は、制御部１０１、命令セットシミュレータ１０２、及びバスシミュレータ１０３を有する。
【００１８】
命令セットシミュレータ１０２は、マルチコア向けに並列化されていない並列化前のソフトウェア１０９の命令に係るシミュレーションを行う。命令セットシミュレータ１０２は、並列化前のソフトウェア１０９に従ってコア（プロセッサ等）が実行する命令を１命令ずつシミュレーションする。命令セットシミュレータ１０２は、シミュレーションにおいてバスアクセスを要求する場合、そのバスアクセスに係る情報をバスシミュレータ１０３に供給する。
【００１９】
バスシミュレータ１０３は、命令セットシミュレータ１０２でのシミュレーションにより要求されたバスアクセスに係るシミュレーションを行う。バスシミュレータ１０３は、命令セットシミュレータ１０２から供給されたバスアクセスに係る情報に基づいて、バスアクセスを生成してシミュレーションする。バスシミュレータ１０３は、バスアクセス分割モデル１０４、トランザクション生成モデル１０５、チップ内インターコネクト１０６、メモリコントローラ１０７、及びメモリ１０８を有する。
【００２０】
バスアクセス分割モデル１０４は、要求されるバスアクセスを分割条件（分類条件）１１０に従って各ポート（図１に示す例では、ポート＜＃０＞、＜＃１＞、＜＃２＞、＜＃３＞）に割り当てる。すなわち、命令セットシミュレータ１０２より要求されるバスアクセスは、バスアクセス分割モデル１０４で分割条件（分類条件）１１０に従って各ポートに分割される。また、バスアクセス分割モデル１０４は、メモリ１０８に接続するためのダイレクトメモリインターフェースを介して、要求されるバスアクセスに応じたメモリアクセスに係る論理的な動作が実行可能である。これにより、バスアクセスに係るシミュレーションモデルでは、論理的に正しいメモリアクセスの順序を知ることができ、命令セットシミュレータに対して割り込み等の適切なフィードバックをかけることができる。
【００２１】
トランザクション生成モデル１０５は、評価対象となるマルチコアプロセッサを有する情報処理システムに含まれるすべてのコアのバスとの入出力ポートの各々に対応して設けられている。トランザクション生成モデル１０５は、バスアクセス分割モデル１０４により割り当てられたバスアクセスの情報に基づき、チップ内インターコネクト１０６、メモリコントローラ１０７及びメモリ１０８により形成されるバスモデルに対するバスアクセスを生成する。トランザクション生成モデル１０５により生成されたバスアクセスに応じて、チップ内インターコネクト１０６及びメモリコントローラ１０７を介したメモリ１０８へのリードアクセス／ライトアクセスがシミュレーションされる。
【００２２】
制御部１０１は、本実施形態によるシミュレーション装置を統括的に制御するものである。制御部１０１は、例えば、分割終了条件（分類終了条件）１１１やバスシミュレータ１０３から受けた終了通知等に基づいて、命令セットシミュレータ１０２やバスシミュレータ１０３に係る起動制御を行う。
【００２３】
例えば分割終了条件（分類終了条件）１１１を満たしたときに、制御部１０１が、命令セットシミュレータ１０２の動作を停止させるとともにトランザクション生成モデル１０５を起動させる。また、トランザクション生成モデル１０５で生成したバスアクセスのシミュレーションが終了したときに、制御部１０１が、トランザクション生成モデル１０５の動作を停止させるとともに命令セットシミュレータ１０２を起動（動作を再開）させる。このように制御することで、本実施形態によるシミュレーション装置では、図２に示すようなタイミング（制御）で命令に係るシミュレーション及びバスアクセスに係るシミュレーションが実行される。つまり、本実施形態によるシミュレーション装置では、命令に係るシミュレーションとバスアクセスに係るシミュレーションとが交互に実行される。図２は、第１の実施形態によるシミュレーションの実行形態の例を示す図である。図２において、ＩＳＳ１、ＩＳＳ２、ＩＳＳ３、ＩＳＳ４は命令実行処理を示しており、バス１、バス２、バス３、バス４はバスアクセス処理を示している。
【００２４】
図３（Ａ）は、第１の実施形態によるバスアクセス分割モデル１０４の動作を説明するための図である。バスアクセス分割モデル１０４には、命令セットシミュレータ１０２より要求するバスアクセスに係る情報３０１が入力される。図３（Ａ）に示す例では、バスアクセスに係る情報３０１は、命令セットシミュレータ１０２において求められたシミュレーション内における概算時刻（Time）、命令のプログラムカウンタ値（PC）、アクセス先のアドレス（Address）、及びアクセスの種類（Operation）を含む。
【００２５】
また、バスアクセス分割モデル１０４には分割条件３０２が入力される。図３（Ａ）に示す例での分割条件３０２は、アクセス先のアドレスが“0x0001****”（*はDon't care、以下同様）、“0x0011****”、“0x0021****”であるバスアクセスはポート＜＃０＞に割り当て、アクセス先のアドレスが“0x0002****”、“0x0012****”、“0x0022****”であるバスアクセスはポート＜＃１＞に割り当てることを示している。
【００２６】
バスアクセス分割モデル１０４は、命令セットシミュレータ１０２より要求するバスアクセスに係る情報３０１が入力されると、分割条件３０２に従って、要求されたバスアクセスを生成させるポートを決定する（Ｐ１０１）。なお、バスアクセス分割モデル１０４には、予め設定されたデフォルト出力ポートを示す情報３０３が入力されている。バスアクセス分割モデル１０４は、要求するバスアクセスが分割条件３０２におけるいずれの条件にも合致しない場合には、そのバスアクセスを生成させるポートをデフォルト出力ポートに決定する。
【００２７】
バスアクセス分割モデル１０４は、要求されたバスアクセスを生成させるポートを決定すると、各ポート単位で次の処理を行う。
バスアクセス分割モデル１０４は、同じポートに対するバスアクセスが複数ある（連続する）場合には、図３（Ｂ）に示すようにバスアクセスのアクセス間隔を、バスアクセスに係る情報３０１のシミュレーション内における概算時刻から決定する。そして、決定したバスアクセスのアクセス間隔をバスアクセスの生成可能時刻として付加する（Ｐ１０２）。
【００２８】
また、バスアクセス分割モデル１０４は、要求されたバスアクセスに係る情報３０１からペイロードを抽出する（Ｐ１０３）。ここでペイロードは、例えばアクセス先のアドレスやアクセスの種類（リードアクセス／ライトアクセス、アクセスサイズなど）等の情報である。
【００２９】
このようにして、バスアクセス分割モデル１０４は、要求されたバスアクセスを分割条件に従って各ポートに割り当て、ポート毎にバスアクセスの生成可能時刻及びペイロードを含むアクセス情報を出力する。例えば、図３（Ａ）に示したバスアクセスに係る情報３０１及び分割条件３０２が入力された場合、バスアクセス分割モデル１０４は、ポート＜＃０＞について図３（Ｃ）に示すアクセス情報を出力する。なお、バスアクセス分割モデル１０４において処理Ｐ１０１〜Ｐ１０３を行う順序は、前述した順序に限定されるものではなく、ポート毎に割り当てられたバスアクセスのアクセス情報が最終的に出力されれば良く、処理を行う順序は任意である。
【００３０】
図４は、第１の実施形態によるトランザクション生成モデル１０５の説明図である。トランザクション生成モデル１０５は、トランザクションキュー４０１を有している。前述のようにしてバスアクセス分割モデル１０４から出力されたアクセス情報４０２は、アクセス先のポートに接続されるトランザクション生成モデル１０５のトランザクションキュー４０１に格納される。すなわち、トランザクション生成モデル１０５のトランザクションキュー４０１には、対応するポートに対するバスアクセスの生成可能時刻及びペイロードを含むアクセス情報が格納される。
【００３１】
トランザクション生成モデル１０５は、トランザクションキュー４０１にアクセス情報が格納されている場合、バスアクセスの発生可能時刻とバスモデル内の現在時刻とを比較する。ここで、バスアクセスの発生可能時刻は、前回バスアクセスを生成させたときのバスモデル内の時刻に、次に生成すべきバスアクセスの生成可能時刻を加算したものである。トランザクション生成モデル１０５は、バスアクセスの発生可能時刻がバスモデル内の現在時刻と同時又はバスモデル内の現在時刻以降である場合には、バスアクセスを生成可能であると判断する（Ｐ２０１）。
【００３２】
トランザクション生成モデル１０５は、バスアクセスが生成可能と判断すると、トランザクションキュー４０１に格納されている次に生成すべきバスアクセスのアクセス情報に基づいて、バスモデルに対するバスアクセスを生成する（Ｐ２０２）。そして、トランザクション生成モデル１０５は、生成させたバスアクセスをバスモデルに供給するとともに、生成させたバスアクセスのアクセス情報をトランザクションキュー４０１から取り除く（消去する）。
【００３３】
次に、第１の実施形態によるシミュレーション装置の動作について説明する。
図５Ａ及び図５Ｂは、第１の実施形態によるシミュレーション装置の処理手順の一例を示すフローチャートである。
【００３４】
動作を開始すると、命令セットシミュレータ１０２は、並列化前のソフトウェア１０９に従ってコアが実行する命令を命令単位で実行してシミュレーションを行う（Ｓ１０１）。命令セットシミュレータ１０２は、命令を実行するたびに、その処理時間を概算してシミュレーション内における時刻を進めていく。なお、本実施形態では、処理時間の概算方法については言及しないが、例えば命令の種類毎に処理時間のデータベースを用意しておき、命令を実行するたびに、実行した命令の処理時間をデータベースから取得して、シミュレーション内の時刻に累積加算していく。
【００３５】
次に、制御部１０１は、命令セットシミュレータ１０２でのシミュレーションの処理の結果、指定されている切替条件を満たしているか否かを判定する（Ｓ１０２）。判定の結果、指定されている切替条件を満たしていれば、デフォルト出力ポートの選択（Ｓ１０３）、及び切替条件や分割条件（分類条件）の変更（Ｓ１０４）が行われる。
【００３６】
次に、バスアクセス分割モデル１０４は、命令セットシミュレータ１０２でのシミュレーションによりバスアクセスの要求があったか否かを判定する（Ｓ１０５）。その結果、命令セットシミュレータ１０２がバスアクセスを要求していない場合には、ステップＳ１０１に戻る。
【００３７】
一方、判定の結果、命令セットシミュレータ１０２からバスアクセスが要求された場合には、バスアクセス分割モデル１０４は、ダイレクトメモリインターフェースを介して、メモリ１０８に対し直接にメモリアクセスに係る論理的な動作を実行する（Ｓ１０６）。このときに行われるのは論理的な動作だけで時間的な動作は行われない。つまり、バスモデルとしては論理的に正しい動作をするが、タイミングは考慮せず、バスモデル内部のシミュレーション時刻は変化しない。
【００３８】
次に、バスアクセス分割モデル１０４は、命令セットシミュレータ１０２から要求されたバスアクセスに係る情報を抽出し（Ｓ１０７）、要求されたバスアクセスに合う分割条件を探索する（Ｓ１０８）。続いて、バスアクセス分割モデル１０４は、要求されたバスアクセスに合う分割条件があったか否かを判定する（Ｓ１０９）。そして、要求されたバスアクセスに合う分割条件があった場合には、バスアクセス分割モデル１０４は、分割条件により指定されるポートを、バスアクセスを生成させるポートに決定する（Ｓ１１０）。一方、要求されたバスアクセスに合う分割条件がない場合には、バスアクセス分割モデル１０４は、ステップＳ１０３において選択したデフォルト出力ポートを、バスアクセスを生成させるポートに決定する（Ｓ１１１）。
【００３９】
続いて、バスアクセス分割モデル１０４は、ステップＳ１１０又はＳ１１１において決定したアクセス先のポートに接続されるトランザクション生成モデル１０５のトランザクションキュー４０１に、要求されたバスアクセスのアクセス情報を格納する（Ｓ１１２）。
【００４０】
次に、制御部１０１は、分割終了条件を満たすか否かを判定する（Ｓ１１３）。判定の結果、分割終了条件を満たさない場合には、ステップＳ１０１に戻る。すなわち、分割終了条件を満たすまで、前述のステップＳ１０１〜Ｓ１１２の一連の処理が繰り返して行われる。
【００４１】
一方、分割終了条件を満たす場合には、命令セットシミュレータ１０２による命令に係るシミュレーションを停止し、バスアクセスに係るシミュレーションを行う。バスアクセスに係るシミュレーションは、以下のようにトランザクション生成モデル１０５のトランザクションキュー４０１に格納されているアクセス情報に応じたバスアクセスをバスモデルに対して供給し、バスに係るシミュレーションを進めていく。
【００４２】
最初のポートが選択され（Ｓ１１４）、そのポートに対応するトランザクション生成モデル１０５が、トランザクションキュー４０１からキュー先頭のアクセス情報、すなわち次に生成させるバスアクセスのアクセス情報を抽出する（Ｓ１１５）。トランザクション生成モデル１０５は、抽出したアクセス情報に基づいて、そのバスアクセスの発生可能時刻を算出してバスモデル内部のシミュレーション時刻と比較し、バスアクセスが発行可能であるか否かを判定する（Ｓ１１６）。
【００４３】
トランザクション生成モデル１０５は、算出したバスアクセスの発生可能時刻が、バスモデル内部のシミュレーション時刻と同時もしくはそれ以降であれば、バスアクセスが発行可能であると判断する。すなわち、同じトランザクション生成モデル１０５からバスアクセスを前回生成させたときからの時間間隔が、次に生成させるバスアクセスのアクセス情報の生成可能時刻で与えられる時間間隔より長ければ、バスアクセスが発行可能であると判断する。
【００４４】
ステップＳ１１６での判定の結果、バスアクセスが発行可能と判定すると、トランザクション生成モデル１０５は、ステップＳ１１５において抽出したアクセス情報に基づいて、バスモデルに対するバスアクセスを生成させる。そして、トランザクション生成モデル１０５は、生成させたバスアクセスをバスモデルに供給するとともに、生成させたバスアクセスのアクセス情報をトランザクションキュー４０１から取り除く。バスアクセスの生成の仕組みは、例えばトランザクションレベルモデリング等の方法により、バスアクセスの情報をバスモデルに供給すればよい。
【００４５】
すべてのポートに対して前述したステップＳ１１５〜Ｓ１１７の処理が行われるまで（非選択のポートがなくなるまで）、未選択のポートのうちから次のポートを順次選択して、前述したステップＳ１１５〜Ｓ１１７の処理を繰り返し行う（Ｓ１１８、Ｓ１１９）。これにより、バスモデル内部の現在のシミュレーション時刻で発行可能なバスアクセスのすべてが生成されバスモデルに供給される。
【００４６】
すべてのポートに対するステップＳ１１５〜Ｓ１１７の処理が完了すると、チップ内インターコネクト１０６、メモリコントローラ１０７及びメモリ１０８を含むバスモデルでのバスのシミュレーションが行われる（Ｓ１２０）。バスのシミュレーションでは、供給されたバスアクセスが処理され、バスモデル内部のシミュレーション時刻が進められる。バスのシミュレーションでは、いずれかのポートが次のバスアクセスを受け付けられる状態になった場合に、制御部１０１に処理を返すようにすることが望ましい。
【００４７】
次に、制御部１０１は、すべてのトランザクション生成モデル１０５のトランザクションキュー４０１が空になったか否か、すなわち命令セットシミュレータ１０２から要求されたすべてのバスアクセスに係る動作が完了したか否かを判定する（Ｓ１２１）。判定の結果、命令セットシミュレータ１０２から要求されたバスアクセスに係る動作が完了しない場合には、ステップＳ１１４に戻る。一方、命令セットシミュレータ１０２から要求されたすべてのバスアクセスに係る動作が完了した場合には、バスのシミュレーションを終了し、命令セットシミュレータ１０２で次に実行すべき命令があるか否かの判定が行われる（Ｓ１２２）。
【００４８】
判定の結果、命令セットシミュレータ１０２が次に実行すべき命令がなければ、全体のシミュレーションが終わったとみなし、動作を終了する。なお、シミュレーション対象のコアが停止状態に陥っている場合など命令セットシミュレータ１０２が次の命令を実行できる状態でない場合にも、全体のシミュレーションが終わったとみなして動作を終了するようにしても良い。
【００４９】
ステップＳ１２２での判定の結果、命令セットシミュレータ１０２が次に実行すべき命令がある場合には、ステップＳ１０１に戻る。このとき、命令セットシミュレータ１０２内部のシミュレーション時刻に、バスモデル内部でのシミュレーション時刻が代入される。したがって、命令セットシミュレータ１０２内部のシミュレーション時刻は、進むこともあれば戻ることもある。また、このとき、バスのシミュレーション中に生成した割り込み等が命令セットシミュレータ１０２に通知される。そして、命令セットシミュレータ１０２は、前回停止した箇所の次の命令から命令に係るシミュレーションを再開する。
【００５０】
第１の実施形態によるシミュレーション装置は、並列化前のソフトウェア１０９を１つの命令セットシミュレータ１０２で動作させながら、命令セットシミュレータ１０２でのシミュレーションにより要求されたバスアクセスを分割条件に従って分割する。そして、バスシミュレータ１０３にて、バスの各ポートに対して分割されたバスアクセスについて、バスモデルに対するバスアクセスをシミュレーション内で並列に生成させバスモデルに供給する。これにより、ソフトウェアの並列化を行うことなく、マルチコアプロセッサを有する情報処理システムで並列化したソフトウェアを動作させたときのバスアクセスを模倣して再現でき、情報処理システムのバスアーキテクチャの評価を行うことができる。
【００５１】
なお、前述した説明ではシミュレーション装置が、図２に示したように命令に係るシミュレーションとバスアクセスに係るシミュレーションとを交互に実行する場合を示した。しかし、例えば命令セットシミュレータ１０２が次に実行すべき命令がないことを分割終了条件とすれば、命令に係るシミュレーションを最初から最後まで連続して実行し、それが完了した後に、バスに係るシミュレーションを実行するようにすることも可能である。
【００５２】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。
図６は、第２の実施形態によるシミュレーション装置の機能構成例を示すブロック図である。図６において、図１に示した構成要素と同一の機能を有する構成要素には同一の符号を付し、重複する説明は省略する。
【００５３】
第２の実施形態によるシミュレーション装置は、図７に示すように命令に係るシミュレーションとバスアクセスに係るシミュレーションとを同時に（並行して）実行するようにしたものである。第２の実施形態によるシミュレーション装置は、いわゆるマルチスレッド等の技術を適用して、命令に係るシミュレーション動作とバスアクセスに係るシミュレーション動作を同時に実行する。命令セットシミュレータ１０２とバスアクセス分割モデル１０４との処理部６０１により、命令シミュレーション及びバスアクセスの分割を行う命令セットシミュレーションスレッドが実行される。また、トランザクション生成モデル１０５、チップ内インターコネクト１０６、メモリコントローラ１０７、及びメモリ１０８の処理部６０２により、バスシミュレーションを行うバスシミュレーションスレッドが実行される。
【００５４】
図８は、第２の実施形態によるトランザクション生成モデル１０５の説明図である。トランザクション生成モデル１０５は、トランザクションキュー８０１を有している。バスアクセス分割モデル１０４から出力されたアクセス情報８０２は、アクセス先のポートに接続されるトランザクション生成モデル１０５のトランザクションキュー８０１に格納される。これにより、トランザクション生成モデル１０５のトランザクションキュー８０１には、対応するポートに対するバスアクセスの生成可能時刻及びペイロードを含むアクセス情報が格納される。なお、バスアクセス分割モデル１０４での、命令セットシミュレータ１０２より要求されたバスアクセスの分割動作及び各ポートへのバスアクセスのアクセス情報の出力動作は、第１の実施形態と同様である。
【００５５】
さらに、第２の実施形態におけるトランザクションキュー８０１には、アクセス情報毎に発行許可フラグが追加されている。この発行許可フラグは、命令に係るシミュレーション動作によって、ある時刻に生成可能なすべてのポートのバスアクセスが確定するまでバスアクセスに係るシミュレーション動作を遅延させるためのものである。
【００５６】
発行許可フラグは、バスアクセスのアクセス情報がトランザクションキュー８０１に格納された際にはＯＦＦとなっている。そして、処理部６０１での命令に係るシミュレーション動作によって、バスアクセスの発生可能時刻に他のポートで生成し得るバスアクセスがすべて確定したときにＯＮとなる。すなわち、バスアクセスのアクセス情報をトランザクションキュー８０１に格納した際に、新たに格納したアクセス情報でのバスアクセスの発生可能時刻と、各トランザクションキューに最後に格納したアクセス情報でのバスアクセスの発生可能時刻とを比較する。比較の結果、新たに格納したアクセス情報でのバスアクセスの発生可能時刻が最も小さい場合には、そのバスアクセスの発生可能時刻より前に発行可能なバスアクセスに係る発行許可フラグをＯＮにする。
【００５７】
トランザクション生成モデル１０５は、トランザクションキュー８０１にアクセス情報が格納され、さらに発行許可フラグがＯＮであるアクセス情報がある場合、バスアクセスの発生可能時刻とバスモデル内の現在時刻とを比較する。トランザクション生成モデル１０５は、バスアクセスの発生可能時刻がバスモデル内の現在時刻と同時又はバスモデル内の現在時刻以降である場合には、バスアクセスを生成可能であると判断する（Ｐ３０１）。
【００５８】
トランザクション生成モデル１０５は、バスアクセスが生成可能と判断すると、トランザクションキュー８０１に格納されている次に生成すべきバスアクセスのアクセス情報に基づき、バスモデルに対するバスアクセスを生成する（Ｐ３０２）。そして、トランザクション生成モデル１０５は、生成させたバスアクセスをバスモデルに供給するとともに、生成させたバスアクセスのアクセス情報をトランザクションキュー８０１から取り除く。
【００５９】
次に、第２の実施形態によるシミュレーション装置の動作について説明する。
図９Ａ、図９Ｂ、及び図９Ｃは、第２の実施形態によるシミュレーション装置の処理手順の一例を示すフローチャートである。
【００６０】
図９Ａに示すように、動作を開始すると、命令セットシミュレータ１０２とバスアクセス分割モデル１０４との処理部６０１が、図９Ｂに示す命令セットシミュレーションスレッドを開始する（Ｓ２０１）。また、トランザクション生成モデル１０５、チップ内インターコネクト１０６、メモリコントローラ１０７、及びメモリ１０８の処理部６０２が、図９Ｃに示すバスシミュレーションスレッドを開始する（Ｓ２０２）。その後、命令セットシミュレーションスレッド及びバスシミュレーションスレッドが並行して実行され、バスアクセスに係るシミュレーションが完了すると（Ｓ２０３）、動作を終了する。
【００６１】
図９Ｂに示すように、命令セットシミュレーションスレッドでは、命令セットシミュレータ１０２とバスアクセス分割モデル１０４との処理部６０１により、まずステップＳ３０１〜Ｓ３１２に示す処理が行われる。ここで、図９Ｂに示したステップＳ３０１〜Ｓ３１２での処理は、図５Ａに示したステップＳ１０１〜Ｓ１１２での処理と同様であるので、その説明は省略する。なお、ステップＳ３１２において、要求されたバスアクセスの情報を、割り当てられたポートに接続されるトランザクション生成モデル１０５のトランザクションキュー８０１に格納する際、そのアクセス情報に付加される発行許可フラグはＯＦＦである。
【００６２】
続いて、処理部６０１は、ステップＳ３１２において格納したアクセス情報でのバスアクセスの発生可能時刻が、他のポートのトランザクションキューに最後に格納したアクセス情報でのバスアクセスの発生可能時刻より小さいか否かを判定する（Ｓ３１３）。判定の結果、ステップＳ３１２において格納したアクセス情報でのバスアクセスの発生可能時刻が最も小さい場合には、そのバスアクセスの発生可能時刻より前に発行可能なバスアクセスに係る発行許可フラグをＯＦＦからＯＮにする（Ｓ３１４）。このステップＳ３１４での処理は、すべてのポートのトランザクションキューに格納されているバスアクセスのアクセス情報に対して行われる。
【００６３】
次に、命令セットシミュレータ１０２で次に実行すべき命令があるか否かの判定が行われる（Ｓ３１５）。判定の結果、命令セットシミュレータ１０２が次に実行すべき命令がなければ、命令に係るシミュレーションが終わったとみなし、すべてのポートのトランザクションキューに格納されているバスアクセスのアクセス情報の発行許可フラグをＯＮにする（Ｓ３１６）。そして、命令セットシミュレーションスレッドを終了する。一方、判定の結果、命令セットシミュレータ１０２が次に実行すべき命令がある場合には、ステップＳ３０１に戻る。
【００６４】
また、図９Ｃに示すように、バスシミュレーションスレッドでは、トランザクション生成モデル１０５は、発行許可フラグがＯＮであるバスアクセスのアクセス情報がトランザクションキューに格納されるまで待機する（Ｓ４０１）。いずれかのポートのトランザクションキューに発行許可フラグがＯＮのアクセス情報が格納されると、トランザクション生成モデル１０５は、ステップＳ４０２〜Ｓ４０８に示す処理を行う。ここで、図９Ｃに示したステップＳ４０２〜Ｓ４０３、Ｓ４０５〜Ｓ４０８での処理は、図５Ｂに示したステップＳ１１４〜Ｓ１１５、Ｓ１１６〜Ｓ１１９での処理と同様であるので、その説明は省略する。図９ＣのステップＳ４０４に示されるように、本実施形態では、ステップＳ４０３において抽出したアクセス情報のうち発行許可フラグがＯＮであるアクセス情報についてだけ、バスアクセスの発生可能時刻とバスモデル内部のシミュレーション時刻との比較が行われる。
【００６５】
このようにして、バスモデル内部の現在のシミュレーション時刻で発行可能なバスアクセスのすべてが生成されバスモデルに供給され、バスモデルでのバスのシミュレーションが行われる（Ｓ４０９）。バスのシミュレーションでは、供給されたバスアクセスが処理され、バスモデル内部のシミュレーション時刻が進められる。
【００６６】
次に、トランザクション生成モデル１０５のトランザクションキューに格納されているバスアクセスのアクセス情報で発行許可フラグがＯＮであるバスアクセスのすべてが完了したか否かが判定される（Ｓ４１０）。判定の結果、発行許可フラグがＯＮであるバスアクセスが完了していなければ、ステップＳ４０２に戻る。
【００６７】
一方、発行許可フラグがＯＮであるバスアクセスのすべてが完了したならば、命令セットシミュレーション動作が完了したか否かが判定される（Ｓ４１１）。判定の結果、命令セットシミュレーション動作が完了していなければ、ステップＳ４０１に戻り、そうでなければバスアクセスに係るシミュレーションが終わったとみなし、バスシミュレーションスレッドを終了する。
【００６８】
第２の実施形態によれば、第１の実施形態と同様に、ソフトウェアの並列化を行うことなく、マルチコアプロセッサを有する情報処理システムで並列化したソフトウェアを動作させたときのバスアクセスを模倣して再現でき、情報処理システムのバスアーキテクチャの評価を行うことができる。また、命令に係るシミュレーションとバスアクセスに係るシミュレーションとを同時に実行することで分割終了条件によって命令に係るシミュレーションを停止することによって生じる誤差を低減することができる。
【００６９】
なお、前述した第１及び第２の実施形態では、ダイレクトメモリインターフェースを介して、要求されるバスアクセスに応じたメモリアクセスに係る論理的な動作を実行している。しかし、ダイレクトメモリインターフェースを設けずに、図１０に示すように命令セットシミュレータ１０２側に命令セットシミュレーション用のメモリ１００１を設け、メモリアクセスの論理的な動作を行うようにしても良い。このようにすれば、命令セットシミュレータ側として既存のシミュレータを用いて構成することができる。なお、図１０において、図１に示した構成要素と同一の機能を有する構成要素には同一の符号を付している。
【００７０】
以下、分割条件、分割終了条件について説明する。
【００７１】
＜分割条件＞
分割条件としては、例えば次のようなものがある。
（１）バスアクセスを要求した命令のプログラムカウンタ値
（２）バスアクセスのアドレス範囲
（３）バスアクセスのアドレス範囲に対するアクセス回数
（４）バスアクセスの種類（リードアクセス、ライトアクセス、命令アクセス、データアクセス、アクセスサイズ等）
（５）命令に係るシミュレーションでの予め指定した時間経過をトリガとしてポートを切り替える
（６）命令に係るシミュレーションでの予め指定した実行命令数超過をトリガとしてポートを切り替える
（７）命令に係るシミュレーションでの予め指定した命令の実行をトリガとしてポートを切り替える
（８）命令に係るシミュレーションでの予め指定したアドレスへのアクセスをトリガとしてポートを切り替える
（９）命令に係るシミュレーションでの予め指定したアドレスへの特定データの読み出し・書き込みをトリガとしてポートを切り替える
なお、前述した各条件を単独で分割条件とするようにしても良いし、複数の条件を任意に組み合わせたものを分割条件とするようにしても良い。また、分割条件（５）〜（９）の切り替え動作に同期して分割条件を切り替えるようにしても良い。
【００７２】
図１１は、バスアクセスを要求した命令のプログラムカウンタ値を分割条件としてバスアクセスを分割する例を説明するための図である。命令のプログラムカウンタ値を分割条件としてバスアクセスを分割する好適な例としては、例えば関数毎に並列処理を行うような並列化を行う場合がある。図１１に示す例では、関数func1()の実行により要求されたバスアクセスはポート＜＃０＞に割り当て、関数func2()の実行により要求されたバスアクセスはポート＜＃１＞に割り当てる。同様に、関数func3()の実行により要求されたバスアクセスはポート＜＃２＞に割り当て、関数func4()の実行により要求されたバスアクセスはポート＜＃３＞に割り当てる。
【００７３】
図１２は、バスアクセスのアドレス範囲を分割条件としてバスアクセスを分割する例を説明するための図である。バスアクセスのアドレス範囲を分割条件としてバスアクセスを分割する好適な例としては、例えば画像処理などデータ方向に並列性がある処理がある。図１２に示す例では、アドレス範囲0x*1000〜へのバスアクセスはポート＜＃０＞に割り当て、アドレス範囲0x*2000〜へのバスアクセスはポート＜＃１＞に割り当てる。同様に、アドレス範囲0x*3000〜へのバスアクセスはポート＜＃２＞に割り当て、アドレス範囲0x*4000〜へのバスアクセスはポート＜＃３＞に割り当てる。例えば、図１６（Ａ）に示すように、入力画像における領域０、１、２、３をそれぞれコア０、１、２、３で画像処理して出力する場合であって、図１６（Ｂ）に示すようにメモリ空間に領域０、１、２、３の画像データが記憶され、画像処理後のデータを領域０、１、２、３毎にメモリ空間に保存されるような場合に用いて好適である。
【００７４】
図１３は、命令に係るシミュレーションでの予め指定した時間経過もしくは実行命令数超過をトリガとしてポートを切り替える例を説明するための図である。図１４は、命令に係るシミュレーションでの予め指定した命令の実行をトリガとしてポートを切り替える例を説明するための図である。命令に係るシミュレーションでの予め指定した命令の実行をトリガとしてポートを切り替える好適な例としては、例えば指定したポイントでの処理のソフトウェアパイプライン化がある。図１４に示す例では、ポイントｐｔ０、ｐｔ１、ｐｔ２、ｐｔ３でポートの切り替えを行う。
【００７５】
図１５は、命令に係るシミュレーションでの予め指定したアドレスへのアクセス、予め指定したアドレスへの特定データの読み出し・書き込みをトリガとしてポートを切り替える例を説明するための図である。図１５に示す例では、ポイントｐｔ０でポート＜＃０＞に切り替え、ｙという変数のアドレスにアクセスしたときにポート＜＃１＞に切り替える。また、ｘに値0x8000が入れられたときにポート＜＃２＞に切り替え、ポイントｐｔ１でポート＜＃３＞に切り替える。
【００７６】
また、分割終了条件としては、例えば次のようなものがある。
（１）命令に係るシミュレーションでの時間経過
（２）命令に係るシミュレーションでの実行命令数超過
（３）命令に係るシミュレーションでの特定の命令の実行
（４）命令に係るシミュレーションでの特定のアドレスへのアクセス
（５）命令に係るシミュレーションでの特定のアドレスへの特定データの読み出し・書き込み
（６）バスアクセス量の超過
なお、前述した各条件を単独で分割終了条件とするようにしても良いし、複数の条件を任意に組み合わせたものを分割終了条件とするようにしても良い。
【００７７】
前述した各実施形態によるシミュレーション装置は、例えばＣＰＵ又はＭＰＵ、ＲＡＭ、ＲＯＭ等を有するコンピュータが、ＲＯＭ等の記憶部に記憶されたプログラムを実行することで実現でき、前記プログラムは本発明の実施形態に含まれる。また、コンピュータが前記機能を果たすように動作させるプログラムを、例えばＣＤ−ＲＯＭのような記録媒体に記録し、コンピュータに読み込ませることによって実現できるものであり、前記プログラムを記録した記録媒体は本発明の実施形態に含まれる。前記プログラムを記録する記録媒体としては、ＣＤ−ＲＯＭ以外に、フレキシブルディスク、ハードディスク、磁気テープ、光磁気ディスク、不揮発性メモリカード等を用いることができる。
【００７８】
また、コンピュータがプログラムを実行し処理を行うことにより、前記実施形態の機能が実現されるプログラムプロダクトは、本発明の実施形態に含まれる。前記プログラムプロダクトとしては、前記実施形態の機能を実現するプログラム自体、前記プログラムが読み込まれたコンピュータがある。また、前記プログラムプロダクトとして、ネットワークを介して通信可能に接続されたコンピュータに前記プログラムを提供可能な送信装置、当該送信装置を備えるネットワークシステム等がある。
【００７９】
また、供給されたプログラムがコンピュータにおいて稼動しているＯＳ（オペレーティングシステム）又は他のアプリケーションソフト等と共同して前記実施形態の機能が実現される場合も、かかるプログラムは本発明の実施形態に含まれる。また、供給されたプログラムの処理のすべて又は一部がコンピュータの機能拡張ボードや機能拡張ユニットにより行われて前記実施形態の機能が実現される場合も、かかるプログラムは本発明の実施形態に含まれる。また、本発明をネットワーク環境で利用するべく、全部又は一部のプログラムが他のコンピュータで実行されるようになっていても良い。
【００８０】
例えば、前述した各実施形態によるシミュレーション装置は、図１７に示すようなコンピュータ機能１７００により実現でき、そのＣＰＵ１７０１により前記実施形態での動作が実施される。
コンピュータ機能１７００は、図１７に示すように、ＣＰＵ１７０１と、ＲＯＭ１７０２と、ＲＡＭ１７０３と、操作部（ＣＯＮＳ）１７０９のコントローラ（ＣＯＮＳＣ）１７０５と、表示部としてのディスプレイ（ＤＩＳＰ）１７１０のディスプレイコントローラ（ＤＩＳＰＣ）１７０６と、ハードディスク（ＨＤ）１７１１及びフレキシブルディスク等の記憶デバイス（ＳＴＤ）１７１２のコントローラ（ＤＣＯＮＴ）１７０７と、ネットワークインタフェースカード（ＮＩＣ）１７０８とが、システムバス１７０４を介して互いに通信可能に接続された構成としている。
【００８１】
ＣＰＵ１７０１は、ＲＯＭ１７０２又はＨＤ１７１１に記憶されたソフトウェア（プログラム）、又はＳＴＤ１７１２より供給されるソフトウェア（プログラム）を実行することで、システムバス１７０４に接続された各構成部を総括的に制御する。すなわち、ＣＰＵ１７０１は、前述したような機能を実現するための処理プログラムを、ＲＯＭ１７０２、ＨＤ１７１１、又はＳＴＤ１７１２から読み出して実行することで、前記実施形態での機能を実現するための制御を行う。ＲＡＭ１７０３は、ＣＰＵ１７０１の主メモリ又はワークエリア等として機能する。
【００８２】
ＣＯＮＳＣ１７０５は、ＣＯＮＳ１７０９や図示していないポインティングデバイス等からの指示入力を制御する。ＤＩＳＰＣ１７０６は、ＤＩＳＰ１７１０の表示を制御する。ＤＣＯＮＴ１７０７は、ブートプログラム、種々のアプリケーション、ユーザファイル、ネットワーク管理プログラム、及び前記実施形態による機能を実現するための処理プログラム等を記憶するＨＤ１７１１及びＳＴＤ１７１２とのアクセスを制御する。ＮＩＣ１７０８はネットワーク１７１３上の他の装置と双方向にデータをやりとりする。
【００８３】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
本発明の諸態様を付記として以下に示す。
【００８４】
（付記１）
ソフトウェアに従ってコアで実行される命令に係るシミュレーションを実行する第１のシミュレータ部と、
前記第１のシミュレータ部でのシミュレーションにより要求されたバスアクセスに係るシミュレーションを実行する第２のシミュレータ部とを有し、
前記第２のシミュレータ部は、
要求された前記バスアクセスを分類条件に従って各ポートに割り当てる分割処理部と、
前記分割処理部による割り当てに従って、前記バスアクセスを前記ポート毎に生成する生成処理部と、
前記生成処理部により生成された前記バスアクセスのシミュレーションを行う実行処理部とを有することを特徴とするシミュレーション装置。
（付記２）
前記分割処理部は、前記バスアクセスを要求した命令のプログラムカウンタ値に応じて、前記バスアクセスを前記ポートに割り当てることを特徴とする付記１記載のシミュレーション装置。
（付記３）
前記分割処理部は、前記バスアクセスのアドレス範囲、前記バスアクセスのアドレス範囲に対するアクセス回数、及び前記バスアクセスの種類の少なくとも１つに応じて、前記バスアクセスを前記ポートに割り当てることを特徴とする付記１又は２記載のシミュレーション装置。
（付記４）
前記分割処理部は、命令に係るシミュレーションでの所定の時間経過及び所定の実行命令数超過の少なくとも１つをトリガとして、要求された前記バスアクセスを割り当てるポートを切り替えることを特徴とする付記１〜３の何れか１項に記載のシミュレーション装置。
（付記５）
前記分割処理部は、命令に係るシミュレーションでの所定の命令の実行、所定のアドレスへのアクセス、及び所定のアドレスへの所定データアクセスの少なくとも１つをトリガとして、要求された前記バスアクセスを割り当てるポートを切り替えることを特徴とする付記１〜４の何れか１項に記載のシミュレーション装置。
（付記６）
前記第１のシミュレータ部でのシミュレーションにより要求されたバスアクセスに応じたメモリアクセスに係る論理的な動作を行うインターフェースを有することを特徴とする付記１〜５の何れか１項に記載のシミュレーション装置。
（付記７）
命令に係るシミュレーションでの所定の時間経過及び所定の実行命令数超過の少なくとも１つをトリガとして、前記第１のシミュレータ部での命令に係るシミュレーションを停止し、前記第２のシミュレータ部でのバスアクセスに係るシミュレーションを開始することを特徴とする付記１〜６の何れか１項に記載のシミュレーション装置。
（付記８）
命令に係るシミュレーションでの所定の命令の実行、所定のアドレスへのアクセス、及び所定のアドレスへの所定データアクセスの少なくとも１つをトリガとして、前記第１のシミュレータ部での命令に係るシミュレーションを停止し、前記第２のシミュレータ部でのバスアクセスに係るシミュレーションを開始することを特徴とする付記１〜７の何れか１項に記載のシミュレーション装置。
（付記９）
バスアクセス量の超過をトリガとして、前記第１のシミュレータ部での命令に係るシミュレーションを停止し、前記第２のシミュレータ部でのバスアクセスに係るシミュレーションを開始することを特徴とする付記１〜８の何れか１項に記載のシミュレーション装置。
（付記１０）
前記生成処理部による前記バスアクセスの生成は、前記ポート間で並列して行われることを特徴とする付記１〜９の何れか１項に記載のシミュレーション装置。
【産業上の利用可能性】
【００８５】
例えば図１８に示すように、バスアーキテクチャの部分１８０１（図示の例では１８０１Ａ〜１８０１Ｅ）を変更し、他の部分は変更せずにシミュレーションを行う。これにより、本発明の実施形態によるシミュレーション装置は、ハードウェア設計支援ツールとして用いることができ、並列化された評価対象のソフトウェアがない状態での様々なバス構成の評価が可能となる。
【００８６】
また、例えば図１９に示すように、分割条件１１０Ａを変更し、他の部分は変更せずにシミュレーションを行う。これにより、本発明の実施形態によるシミュレーション装置は、ソフトウェア設計支援ツールとして用いることができ、ソフトウェアを並列化するうえでの良好な性能が得られる適切な条件の探索が可能となる。
【００８７】
なお、図１８及び図１９において、図１に示した構成要素と同一の機能を有する構成要素には同一の符号を付している。また、図１８及び図１９において、１８０２はＬｅｖｅｌ２キャッシュである。
【符号の説明】
【００８８】
１０１  制御部
１０２  命令セットシミュレータ
１０３  バスシミュレータ
１０４  バスアクセス分割モデル
１０５  トランザクション生成モデル
１０６  チップ内インターコネクト
１０７  メモリコントローラ
１０８  メモリ
１０９  ソフトウェア（並列化前）
１１０  分割条件
１１１  分割終了条件
【図１】
0005459021.tif 000002
【図２】
0005459021.tif 000003
【図３】
0005459021.tif 000004
【図４】
0005459021.tif 000005
【図５Ａ】
0005459021.tif 000006
【図５Ｂ】
0005459021.tif 000007
【図６】
0005459021.tif 000008
【図７】
0005459021.tif 000009
【図８】
0005459021.tif 000010
【図９Ａ】
0005459021.tif 000011
【図９Ｂ】
0005459021.tif 000012
【図９Ｃ】
0005459021.tif 000013
【図１０】
0005459021.tif 000014
【図１１】
0005459021.tif 000015
【図１２】
0005459021.tif 000016
【図１３】
0005459021.tif 000017
【図１４】
0005459021.tif 000018
【図１５】
0005459021.tif 000019
【図１６】
0005459021.tif 000020
【図１７】
0005459021.tif 000021
【図１８】
0005459021.tif 000022
【図１９】
0005459021.tif 000023
【図２０】
0005459021.tif 000024