(57)【要約】【課題】複数コア構成の集積回路のシミュレーションプログラム、方法、及び装置に関し、複数コア構成のＬＳＩのシミュレーションにかかる処理負荷及び速度を低減する。【解決手段】コア単体のシミュレータ６０２（＃０）は、例えばコア５０１（＃０）に関するシミュレーションを実行する。その結果得られる動作結果６０３（＃０）からコア５０１（＃０）に関するリソースアクセスの動作内容を含む動作ファイル６０４（＃０）が生成される。アドレス変換コピー生成部１１１２は、コア５０１（＃０）によってアクセスするリソースのアドレスと他の＃１〜＃３のコア５０１によってアクセスするリソースのアドレスとのアドレス差を動作ファイル６０４（＃０）に反映させることにより、＃１〜＃３のコア５０１（＃０）に関する動作ファイル９０２を生成する。このようにして生成された動作ファイル９０２を用いて、ＴＧ６０５が、リソース競合のシミュレーションを実行する。【選択図】図９
2019016167.tif 000002
【特許請求の範囲】
【請求項１】
複数のコアの夫々に関するリソースアクセスの動作内容に基づいて前記複数のコア間の動作のシミュレーションを実行するシミュレーションプログラムであって、
前記複数のコアのうちの少なくとも１つのコアに関するシミュレーションを実行して前記１つのコアに関するリソースアクセスの動作内容を抽出するステップと、
前記複数のコアに対する実行処理における互いの特定の関係の下で、前記１つのコアによってアクセスするリソースのアドレスと前記複数のコアのうちの前記１つのコア以外の他のコアによってアクセスするリソースのアドレスとのアドレス差を、前記１つのコアに関するリソースアクセスの動作内容に反映させることにより、前記他のコアに関するリソースアクセスの動作内容を生成するステップと、
をコンピュータに実行させるためのシミュレーションプログラム。
【請求項２】
前記１つのコアに関するリソースアクセスの動作内容を抽出するステップにおいて、前記複数のコアのうちの２種類以上のコアに関するシミュレーションを実行して前記２種類以上のコアに関する２種類以上のリソースアクセスの動作内容を抽出し、
前記他のコアに関するリソースアクセスの動作内容を生成するステップにおいて、前記２種類以上のコアに関するリソースアクセスの動作内容の何れかに基づいて、前記他のコアに関するリソースアクセスの動作内容を生成する、
ことを特徴とする請求項１に記載のシミュレーションプログラム。
【請求項３】
前記他のコアに関するリソースアクセスの動作内容を生成するステップにおいて、記憶装置に記憶された前記他のコアに関するリソースアクセスの動作内容の生成数と、プログラムアドレスのオフセット値と、前記コア毎のプログラムサイズの上限を示すプログラムサイズ値と、ロードストアアドレスのオフセット値と、前記コア毎に利用するメモリアドレスの上限値を含むパラメータ情報に基づいて前記アドレス差を算出する、ことを特徴とする請求項１又は２に記載のシミュレーションプログラム。
【請求項４】
前記リソースアクセスの動作内容は、バスに接続されたメモリに対するロード命令又はストア命令である、ことを特徴とする請求項１乃至３の何れかに記載のシミュレーションプログラム。
【請求項５】
前記コアによってアクセスするリソースのアドレスは、前記ロード命令又はストア命令のプログラムアドレス又はロードストアアドレスである、ことを特徴とする請求項４に記載のシミュレーションプログラム。
【請求項６】
前記複数のコアに対する実行処理における互いの特定の関係は、前記コアのそれぞれが、同一の一連の命令群からなる繰返し処理を、同一又は異なるプログラムアドレス又はロードストアアドレスに対して実行する関係である、ことを特徴とする請求項１乃至５の何れかに記載のシミュレーションプログラム。
【請求項７】
複数のコアの夫々に関するリソースアクセスの動作内容に基づいて前記複数のコア間のリソース競合のシミュレーションを実行するシミュレーション実行方法であって、
前記複数のコアのうちの少なくとも１つのコアに関するシミュレーションを実行して前記１つのコアに関するリソースアクセスの動作内容を抽出し、
前記複数のコアに対する実行処理における互いの特定の関係の下で、前記１つのコアによってアクセスするリソースのアドレスと前記複数のコアのうちの前記１つのコア以外の他のコアによってアクセスするリソースのアドレスとのアドレス差を、前記１つのコアに関するリソースアクセスの動作内容に反映させることにより、前記他のコアに関するリソースアクセスの動作内容を生成する、
ことを特徴とするシミュレーション実行方法。
【請求項８】
複数のコアの夫々に関するリソースアクセスの動作内容に基づいて前記複数のコア間のリソース競合のシミュレーションを実行するシミュレーション装置であって、
前記複数のコアのうちの少なくとも１つのコアに関するシミュレーションを実行するコアシミュレータ部と、
前記コアシミュレータ部における前記１つのコアに関する動作結果から前記１つのコアに関するリソースアクセスの動作内容を抽出する変換部と、
前記複数のコアに対する実行処理における互いの特定の関係の下で、前記１つのコアによってアクセスするリソースのアドレスと前記複数のコアのうちの前記１つのコア以外の他のコアによってアクセスするリソースのアドレスとのアドレス差を、前記１つのコアに関するリソースアクセスの動作内容に反映させることにより、前記他のコアに関するリソースアクセスの動作内容を生成するアドレス変換コピー生成部と、
前記変換部が抽出した前記１つのコアに関するリソースアクセスの動作内容と、前記アドレス変換コピー生成部が生成した前記他のコアに関するリソースアクセスの動作内容とに基づいて、前記複数のコア間のリソース競合のシミュレーションを実行するモデルシミュレート部と、
を備えることを特徴とするシミュレーション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
複数コア構成の集積回路のシミュレーションプログラム、方法、及び装置に関する。
【背景技術】
【０００２】
プロセス技術の進歩によりＬＳＩ（大規模集積回路：Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）の集積度が増大し、システムＬＳＩを１チップ上に搭載することが可能になってきている。例えば、ＣＰＵ（中央演算処理装置）のコアを複数個１チップ上に搭載するマルチコア（複数コア）システムが多く開発されており、１チップ内に実装されるコアの数が増大してきている。近年、性能要求を満たすために、より複雑なアーキテクチャを実現する必要があり、アーキテクチャに起因する問題が発生しやすくなっている。ここで、アーキテクチャとはＬＳＩのハードウェア構成をいい、例えばコアおよびメモリの数やサイズ、接続トポロジーを含む。
【０００３】
かかるＬＳＩの開発において、従来、ハードウェア記述によるモデルではなく、抽象化した性能モデルによる評価で決定したアーキテクチャに基づくハードウェア設計により、設計工数を削減できる技術が知られている。このとき、コア間のリソース競合のシミュレート時に、各コアのシミュレーションに基づく動作結果から、バスアクセスに関する情報が抽出され、これがコアによるリソースアクセスの動作内容として利用される（以上、例えば特許文献１、２）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−２１５７６８号公報
【特許文献２】特開２００４−０２１９０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、従来技術では、各コア個別のシミュレーションは必要であるため、コアの並列度が増えた場合に、シミュレーション時間が長くなってしまうという課題があった。
【０００６】
そこで、本発明の１つの側面では、複数コア構成のシミュレーションにかかる処理負荷及び速度を低減することを目的とする。
【課題を解決するための手段】
【０００７】
態様の一例では、複数のコアの夫々に関するリソースアクセスの動作内容に基づいて複数のコア間のリソース競合のシミュレーションを実行するシミュレーションプログラムであって、複数のコアのうちの少なくとも１つのコアに関するシミュレーションを実行して１つのコアに関するリソースアクセスの動作内容を抽出するステップと、複数のコアに対する実行処理における互いの特定の関係の下で、１つのコアによってアクセスするリソースのアドレスと複数のコアのうちの１つのコア以外の他のコアによってアクセスするリソースのアドレスとのアドレス差を、１つのコアに関するリソースアクセスの動作内容に反映させることにより、他のコアに関するリソースアクセスの動作内容を生成するステップと、をコンピュータに実行させる。
【発明の効果】
【０００８】
複数コア構成のシミュレーションにかかる処理負荷及び速度を低減することが可能となる。
【図面の簡単な説明】
【０００９】
【図１】マルチコアＬＳＩシステムの開発工程の説明図である。
【図２】アーキテクチャの性能見積り例を示す図である。
【図３】ＲＴＬによるマルチコアＬＳＩシステムのモデル記述の説明図である。
【図４】性能モデルによるマルチコアＬＳＩシステムのモデル記述の説明図である。
【図５】リソースの競合の説明図である。
【図６】シミュレーションの負荷を軽くしつつリソースの競合を再現できるモデル開発手法の説明図である。
【図７】複数コアによる並列処理の説明図である。
【図８】複数コアに対するＴＧシミュレーションの課題の説明図である。
【図９】第１の実施形態の説明図である。
【図１０】アドレス変換コピー生成部の動作説明図である。
【図１１】第１の実施形態のシミュレーション装置の構成例を示すブロック図である。
【図１２】第１の実施形態におけるパラメータの例を示すデータ構成図である。
【図１３】第１の実施形態におけるアドレス変換コピー生成部の動作例を示すフローチャートである。
【図１４】第１の実施形態におけるアドレス変換の説明図（その１）である。
【図１５】第１の実施形態におけるアドレス変換の説明図（その２）である。
【図１６】第２の実施形態の説明図である。
【図１７】第２の実施形態のシミュレーション装置の構成例を示すブロック図である。
【図１８】第２の実施形態におけるパラメータの例を示すデータ構成図である。
【図１９】第２の実施形態におけるアドレス変換コピー生成部の動作例を示すフローチャートである。
【図２０】第３の実施形態の説明図である。
【図２１】第３の実施形態のシミュレーション装置の構成例を示すブロック図である。
【図２２】各実施形態に対応するシミュレーション装置（コンピュータ）のハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１０】
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。図１は、本発明の実施形態を適用することができるマルチコアＬＳＩシステムの開発工程の説明図である。
【００１１】
まず、要求仕様の決定等の初期検討が行われた後（ステップＳ１０１）、ソフト開発が行われる（ステップＳ１０２）。ソフト開発では、ＬＳＩに搭載される機能に対応するアプリケーションソフトウェアが開発される。例えば、無線ＬＳＩに対しては、４Ｇ通信機能といった通信ソフトウェアが開発される。
【００１２】
その後の開発工程としては、モデル開発無しのケース１と、モデル開発ありのケース２が考えられる。
【００１３】
開発工程としてモデル開発無しのケース１が採用される場合、ステップＳ１０２でのソフトウェア開発によって開発されたソフトウェアの機能を実現できるハードウェアが、直接開発される（ステップＳ１１０）。この場合、経験に基づいてソフトウェアの機能を実現できるハードウェアのトポロジーが決定されて開発が行われる。その結果、そのハードウェアによって予定していた性能が出なければ、トポロジーの変更が必要となる。アーキテクチャが複雑になればなるほど、ハードウェア開発後に性能が未達となり、開発の出戻りが発生する（ステップＳ１１１）。
【００１４】
一方、開発工程としてモデル開発ありのケース２が採用される場合、ステップＳ１０２でのソフトウェア開発によってある程度アプリケーションが決まった状態で、ハードウェアを開発する前に、アーキテクチャの性能を見積もるためのモデル開発が行われる（ステップＳ１２０）。図２は、モデル開発におけるアーキテクチャの性能の見積り例を示す図である。まず、図１のステップＳ１０２のソフトウェア開発により、実施したいアプリケーション２０１が決定される。このアプリケーション２０１では、実行の開始（ｓｔａｒｔ）から終了（ｅｎｄ）までの間に、条件分岐に応じて、ｅｘｅ１、ｅｘｅ２、ｅｘｅ３、ｅｘｅ４、ｅｘｅ５として例示されるような様々な処理が実行される。次に、このようなアプリケーション２０１の構造に対応して、図２の（ａ）、（ｂ）、又は（ｃ）に示されるように、トポロジーやメモリ構成を変化させた異なるアーキテクチャ案のＬＳＩモデル２０２、２０３、２０４などが作成され、実行される。例えば、図２（ａ）のアーキテクチャ案１のＬＳＩモデル２０２では、それぞれが単独のプロセッサである＃０から＃３の各コアと、＃０から＃３のＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）が、バスを介して接続される（直列接続構成）。また、図２（ｂ）のアーキテクチャ案２のＬＳＩモデル２０３では、＃０及び＃１のコアと＃０及び＃１のＳＲＡＭとがバスで接続されたグループと、＃２及び＃３のコアと＃２及び＃３のＳＲＡＭとがバスで接続されたグループが構成され、それらのグループが更にバスで接続される（並列接続構成）。更に、図２（ｃ）のアーキテクチャ案３のＬＳＩモデル２０４では、図２（ａ）のアーキテクチャ案１のＬＳＩモデル２０２から＃２及び＃３のＳＲＡＭが削減され、＃０及び＃１のＳＲＡＭの各サイズが拡大される。このようにしていくつか開発されたＬＳＩモデルの中から、性能の高い（処理時間の短い）アーキテクチャのＬＳＩモデルが探索された後に、そのアーキテクチャに基づいてハードウェアが設計される（図１のステップＳ１２１）。
【００１５】
モデル開発において採用されるモデルの一例として、ＲＴＬ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ:レジスタ転送レベル）モデルが知られている。ＲＴＬでは、論理回路において、状態を持つラッチ回路など順序回路に相当する最小の部分が「レジスタ」として抽象化される。その上で、論理回路の動作が、レジスタからレジスタへの転送と、その転送中に組合せ論理回路を通すことで行われる論理演算の組み合わせとして記述される。図３は、ＲＴＬによるマルチコアＬＳＩシステムのモデル記述の説明図である。ＲＴＬによりマルチコアＬＳＩシステムがモデル化される場合、図３の３０１として示されるように、各コアの内部の論理回路を意識した記述がなされ、その論理回路によるロジックのスイッチングがシミュレートされる。
【００１６】
しかし、ＲＴＬはモデルの詳細化度合いが高いために、ＬＳＩシステムの複雑度が上がり、特にマルチコアで構成されるような場合には、ＲＴＬによる記述の難易度が上がり、作業工数の増加、シミュレーション時間の増大を招く。
【００１７】
そこで、モデル開発において採用される他のモデルの例として、性能モデルが知られている。図４は、性能モデルによるマルチコアＬＳＩシステムのモデル記述の説明図である。性能モデルでは例えば、Ｃ＋＋プログラミング言語のクラスライブラリとして提供されるＳｙｓｔｅｍＣと呼ばれるハードウェア記述言語を用いて、図４（ｂ）の４０１として示されるようなプログラミング言語形式で、図４（ａ）のハードウェア記述が代替される。このクラスライブラリでは、ハードウェア記述のための機能、並列実行の概念や時間概念を扱う各種関数が定義されている。プログラムはＣ＋＋コンパイラでコンパイルでき、それにより生成されたオブジェクトは、ハードウェアのシミュレータとして動作する。このような性能モデルは、ハードウェアのロジックを高い抽象度で記述することが可能である。そして、性能モデルを用いることにより、複雑な構成のＬＳＩシステムの開発が可能となる。
【００１８】
次に、複数コアで構成されるマルチコアＬＳＩシステムの開発工程について説明する。通常、コア単体のシミュレータは、コアに付随して存在する。そのためコア単体での性能見積りは、上述したＳｙｓｔｅｍＣ等の性能モデルによって可能である。ここで、マルチコアＬＳＩシステムでは、複数のコアによるリソースの競合が発生し得る。図５は、リソースの競合の説明図である。図５において、例えばコア５０１（＃０）とコア５０１（＃２）がバス５０３を介して同じＳＲＡＭ５０２（＃１）にアクセスするような場合に、リソースの競合が発生し得る。しかし、このようなリソースの競合は、上述のようなコア単体での性能見積りでは、シミュレートすることはできない。
【００１９】
図６は、シミュレーションの負荷を軽くしつつリソースの競合を再現できるモデル開発手法の説明図である。図６では、図５に示した＃０から＃３の４つのコア５０１と、＃０から＃３の４つのＳＲＡＭ５０２を含むマルチコアＬＳＩシステムの開発を例として説明する。以下の説明において、図５の各部を図５中の参照番号によって随時参照する。
【００２０】
まず、図１のステップＳ１０２によって開発されたコア５０１（＃０）のためのアプリケーションソフトウェア６０１（＃０）が、例えばコア５０１（＃０）をシミュレートするコア単体のシミュレータ６０２（＃０）で実行される。この結果、動作結果６０３（＃０）として、どの命令がどの時刻で実行されたかを示すログ情報が取得される。
【００２１】
次に、動作結果６０３（＃０）が、コア５０１（＃０）の中で処理される情報とコア５０１（＃０）の外にでる情報に分けられて、バス５０３のアクセスを伴う命令のログ情報を含む動作ファイル６０４（＃０）として抽出される。
【００２２】
図６の例の場合、Ａｄｄ（加算）、Ｓｕｂ（減算）といった命令は、コア５０１（＃０）の内部で閉じており外部へのアクセスがない。そのためＡｄｄ、Ｓｕｂは、それらを合わせて２命令分の待ち情報（外部アクセス無し）に置き換えられる。なお、命令毎に１命令ずつ分の待ち情報に置き換えられてもよいが、例えば１万行に達するような命令群の場合、複数の上記命令がまとめられて複数命令分の待ち情報に置き換えられることにより、情報数を１００分の１程度にすることができる。
【００２３】
また、図６の例において、Ｌｏａｄ（ロード）命令は、コア５０１（＃０）の外部の例えばＳＲＡＭ５０２（＃０）から読み取ってくる命令であるため、読み１回として動作ファイル６０４（＃０）に記録される。このとき、そのロード命令のプログラムカウンタアドレス（例えば「０ｘ０１００」）と、ロードアドレス（例えば「０ｘ８１００」）が、動作結果６０３（＃０）からコピーされる。Ｓｔｏｒｅ（ストア）命令も同様に、コア５０１（＃０）の外部の例えばＳＲＡＭ５０２（＃０）に書き込む命令であるため、書き１回として動作ファイル６０４（＃０）に記録される。このとき、そのストア命令のプログラムカウンタアドレス（例えば「０ｘ０１１０」）と、ロードアドレス（例えば「０ｘ８３００」）が、動作結果６０３（＃０）からコピーされる。
【００２４】
この場合の動作ファイル６０４（＃０）へのログ情報の記録方法としては、以下の２つの方法が考えられる。第１の方法は、ログ情報にはプログラムカウンタのアドレス（例えば「０ｘ０１００」）のみが記録される。そして、例えばＳＲＡＭ５０２（＃０）上の各プログラムアドレスから順次プログラムを取ってくると、そこには何をすればよいかが記述されていて、その記述の通りにバスアクセスが行われるものである。第２の方法は、ログ情報には命令に対応する動作（例えば「読み」又は「書き」）と、プログラムカウンタのアドレス（例えば「０ｘ０１００」）と、その命令がアクセスするデータのアドレス（ロードストアアドレス）（例えば「０ｘ８１００」）が記録されている。そして、その命令の実行シミュレート時には、その命令によるリード／ライトアクセスと、プログラムカウンタへのリードアクセスとが両方実行されるものである。以下の説明では、上記第２の方法を採用する。
【００２５】
続いて、図６において、＃０から＃３のコア５０１（図５参照）に対応させて、＃０から＃３のＴＧ（Ｔｒａｆｆｉｃ  Ｇｅｎｅｒａｔｏｒ：トラフィックジェネレータ）６０５と呼ばれるシミュレータが用意される。そして、例えばＴＧ６０５（＃０）は、前述のように生成された動作ファイル６０４（＃０）を読み込むことにより、図６のＳ１からＳ６として示される一連の処理を実行する。即ち、ＴＧ６０５（＃０）は、動作ファイル６０４（＃０）先頭から順に命令の動作を取得し（ステップＳ１）、その動作が「読み」又は「書き」であるか否かを判定する（ステップＳ２）。ＴＧ６０５（＃０）は、その動作が「読み」又は「書き」であれば、バス５０３を介して例えばＳＲＡＭ５０２（＃０から＃３の何れか）に対するアクセスを発生させ（ステップＳ３）、アクセス結果を取得する（ステップＳ４）。ＴＧ６０５（＃０）は、その動作が「読み」でも「書き」でもなければ、指定されている命令分のサイクルだけ待ち状態となる（ステップＳ５）。ＴＧ６０５（＃０）は、ステップＳ４又はＳ５の処理の後、ステップＳ１に戻って次の命令の動作を処理する。
【００２６】
＃１から＃３の各コア５０１（図５参照）に対しても、上記と同様のコア単体のシミュレータ６０２の処理に基づく、動作結果６０３の取得、及び動作ファイル６０４への変換の処理が実行される。これにより得られた＃１から＃３の動作ファイル６０４（図６では例として＃０と＃３のみ記載してある）は、それぞれ＃１から＃３のＴＧ６０５によってＳ１からＳ５で示されるシミュレーションの処理が実行される。
【００２７】
ＴＧ６０５は通常、ＳｙｓｔｅｍＣのような、時間概念があり、抽象度の高いモデルで記述される。また、＃０から＃３の各ＴＧ６０５におけるバス５０３に対するアクセス動作は、やはりＳｙｓｔｅｍＣで記述されている。そして、図６の＃０から＃３の各ＳＲＡＭ５０２に同時にアクセスが発生してリソースが競合した場合、どのような挙動をするかは、ＳｙｓｔｅｍＣで予め記述されているものとする。ＴＧ６０５による性能モデルの詳細については、例えば特許文献１又は２に記載の技術と同様とする。
【００２８】
以上のようにして、コア５０１をＴＧ６０５として抽象化して動作させることで、性能モデルの負荷を軽くしつつ、精度を下げることなく、所望の動作を実行させることができる。特に、ＴＧ６０５によって、ある時刻においてリソースの競合が発生した場合の挙動を表現できる。
【００２９】
次に、図７は複数コアによる並列処理の説明図、図８は複数コアに対するＴＧシミュレーションの課題の説明図である。例えば、図７のプログラムコード７０１として示されるように、４００回に及ぶループ内部で同様の関数処理（図中「ｆｕｎｃ」で示されるコード）を実行するプログラムがあったとする。これを、変数ｉで制御されるループ０〜９９まではコア５０１（＃０）、ループ１００〜１９９まではコア５０１（＃１）、ループ２００〜２９９まではコア５０１（＃２）、ループ３００〜３９９まではコア５０１（＃３）に並列に割り当てたいとする。この割当ては、人間によるソフト開発（図１のステップＳ１０２参照）の段階で決定される。
【００３０】
図７のケースは、動作シーケンス（プログラム）は同じだが、入力データが異なる処理を複数のコア５０１に並列に実行させたい場合である。図７に例示されるように、４コアであれば従来手法でもさしたる手間ではない。しかし、コア５０１の数が１００を超えるマルチコアＬＳＩシステムでループ数も１００００を超えるような場合には、図８のように、図６の動作ファイル６０４の生成のための処理と同様の一連処理８０１をＮ回（例えばＮ＝１００）繰返し実行する必要が生じる。即ち、コア単体のシミュレータ６０２の処理がＮ回繰り返されるということになる。ＬＳＩの大規模化に伴いコア５０１の数は増大しているため、コア数に比例してシミュレーション時間が増大しては開発のボトルネックとなってしまう。
【００３１】
図９は、上述の課題を解決するための、第１の実施形態の説明図である。第１の実施形態では、図６の場合と同様に、図１のステップＳ１０２で開発されたコア５０１（＃０）（図５参照）のアプリケーションソフトウェア６０１（＃０）が、コア５０１（＃０）をシミュレートするコア単体のシミュレータ６０２（＃０）で実行される。この結果、命令実行のログ情報を記録した動作結果６０３（＃０）が取得される。更に、動作結果６０３（＃０）から、バス５０３からＳＲＡＭ５０２へのアクセスを伴う命令のログ情報（リソースアクセスの動作内容）を含む動作ファイル６０４（＃０）が抽出される。
【００３２】
次に、複数（図９では＃０〜＃３）のコア５０１に対する実行処理における互いの特定の関係の下で、アドレス変換コピー生成部９０１が動作する。この特定の関係は例えば、＃０から＃３のコア５０１のそれぞれが、同一の一連の命令群からなる繰返し処理を、同一又は異なるプログラムアドレス又はロードストアアドレスに対して実行する関係である。
【００３３】
上記特定の関係の下で、アドレス変換コピー生成部９０１は、コア５０１（＃０）によってアクセスするリソースのアドレスと他の＃１から＃３のコア５０１によってアクセスするリソースのアドレスとのアドレス差を計算する。そして、アドレス変換コピー生成部９０１は、このアドレス差を、動作ファイル６０４（＃０）に反映させることにより、他の＃１から＃３のコア５０１に関する＃１から＃３の動作ファイル９０２を生成する。なお、アドレス変換コピー生成部９０１は、コア５０１（＃０）に関する動作ファイル６０４（＃０）は、そのまま動作ファイル９０２（＃０）として出力する。
【００３４】
より具体的には、アドレス変換コピー生成部９０１は、基準となるコア５０１（＃０）の動作ファイル６０４（＃０）と、他の＃１から＃３の各コア５０１に関するアドレスのオフセット及びサイズ情報を入力する。アドレス変換コピー生成部９０１は、基準となる動作ファイル６０４（＃０）を読み取り、下記（１）式に基づいて、１行毎に、アドレスを変換したコピーとして、＃１から＃３の動作ファイル９０２を生成する。
【００３５】
新アドレス＝入力アドレス＋オフセット＋サイズ情報×コア番号  ・・・（１）
【００３６】
アドレス変換コピー生成部９０１は、例えば１００個のコア５０１に対応する動作ファイル９０２を作成する場合には、上記（１）式に対応する演算を１００回実行することにより、１００種類の異なる動作ファイル９０２を得ることができる。
【００３７】
図６の場合と同様の＃０から＃３のＴＧ６０５は、アドレス変換コピー生成部９０１によって生成された＃０から＃３の動作ファイル９０２を読込ながら、図６と同様の図９のステップＳ１からＳ５の処理で例示されるシミュレーションを実行する。
【００３８】
図１０は、アドレス変換コピー生成部９０１の動作説明図である。図１０は、＃０から＃３の各コア５０１は、ＳＲＡＭ５０２上の同じロードストアアドレス領域（０ｘ８１００〜）にアクセスし、プログラムアドレスが、オフセット＝０ｘ００００、サイズ情報＝０ｘ１０００である場合の例を示している。なお、図１０中のアドレス表記で、「０ｘ」はそれに続く数値のアドレスが１６進数のアドレスであることを示している。以下同様である。
【００３９】
アドレス変換コピー生成部９０１は、まずコア５０１（＃０）に関して、動作ファイル６０４（＃０）をそのまま動作ファイル９０２（＃０）にコピーする。
【００４０】
次に、アドレス変換コピー生成部９０１は、コア５０１（＃１）に関して、動作ファイル６０４（＃０）から１行ずつログ情報を読込ながら、各ログ情報のプログラムアドレス０ｘ０１００、０ｘ０１０４、０ｘ０１１０等を、前述の（１）式に従って変換する。いま、オフセット＝０ｘ００００、サイズ情報＝０ｘ１０００、コア番号＝１であるため、下記アドレス変換の演算が実行される。
【００４１】
０ｘ０１００＋０ｘ００００＋０ｘ１０００×１＝０ｘ１１００
０ｘ０１０４＋０ｘ００００＋０ｘ１０００×１＝０ｘ１１０４
０ｘ０１１０＋０ｘ００００＋０ｘ１０００×１＝０ｘ１１１０
【００４２】
アドレス変換コピー生成部９０１は、コア５０１（＃１）に関して、上記変換後のプログラムアドレスと、動作ファイル６０４（＃０）中の各行の動作（「読み」又は「書き」）及びロードストアアドレスが記載された動作ファイル９０２（＃１）を出力する。なお、アドレス変換コピー生成部９０１は、動作ファイル６０４（＃０）中の「命令待ち」のログ情報については、そのまま動作ファイル９０２（＃１）に出力する。
【００４３】
続いて、アドレス変換コピー生成部９０１は、コア５０１（＃２）に関して、コア５０１（＃１）の場合と同様のアドレス変換動作と動作ファイル９０２（＃２）の生成動作を実行する。この場合、オフセット＝０ｘ００００、サイズ情報＝０ｘ１０００、コア番号＝２であるため、下記アドレス変換の演算が実行される。
【００４４】
０ｘ０１００＋０ｘ００００＋０ｘ１０００×２＝０ｘ２１００
０ｘ０１０４＋０ｘ００００＋０ｘ１０００×２＝０ｘ２１０４
０ｘ０１１０＋０ｘ００００＋０ｘ１０００×２＝０ｘ２１１０
【００４５】
アドレス変換コピー生成部９０１は、コア５０１（＃２）に関して、上記変換後のプログラムアドレスと、動作ファイル６０４（＃０）中の各行の動作（「読み」又は「書き」
）及びロードストアアドレスが記載された動作ファイル９０２（＃２）を出力する。
【００４６】
続いて、アドレス変換コピー生成部９０１は、コア５０１（＃３）に関しても同様に、アドレス変換動作と動作ファイル９０２（＃３）の生成動作を実行する。この場合、オフセット＝０ｘ００００、サイズ情報＝０ｘ１０００、コア番号＝３であるため、下記アドレス変換の演算が実行される。
【００４７】
０ｘ０１００＋０ｘ００００＋０ｘ１０００×３＝０ｘ３１００
０ｘ０１０４＋０ｘ００００＋０ｘ１０００×３＝０ｘ３１０４
０ｘ０１１０＋０ｘ００００＋０ｘ１０００×３＝０ｘ３１１０
【００４８】
アドレス変換コピー生成部９０１は、コア５０１（＃３）に関して、上記変換後のプログラムアドレスと、動作ファイル６０４（＃０）中の各行の動作（「読み」又は「書き」
）及びロードストアアドレスが記載された動作ファイル９０２（＃３）を出力する。
【００４９】
図９及び図１０の例では、コア５０１の数が＃０から＃３の４個の場合について説明したが、アドレス変換コピー生成部９０１が実行する前述の（１）式のアドレス変換演算は、演算量が少ない演算である。このため、各コア５０１に対応する動作ファイル９０２を生成する処理の負荷は、例えばコア５０１の数が１００個になったとしても、各コア５０１間で前述した特定の関係が成立する限り、ほとんど増加しない。
【００５０】
図９及び図１０で説明した第１の実施形態の動作により、マルチコアＬＳＩシステムのシミュレーションにかかる処理負荷を低減し速度アップを図ることが可能となる。特にコア数の多いマルチコアＬＳＩステムにおいて、コア単体シミュレーションにかかる時間を大幅に削減することが可能となる。
【００５１】
なお、前述した特定の関係は、設計対象となる複数のコア５０１の全部である必要はない。この場合、その特定の関係にあるコア５０１についてのみアドレス変換コピー生成部９０１が動作し、動作ファイル６０４（＃０）から動作ファイル９０２が生成される。
【００５２】
図１１は、図９及び図１０の動作を実現する第１の実施形態のシミュレーション装置の構成例を示すブロック図である。対象とするマルチコアＬＳＩシステムは、前述した図５と同様であり、以下の説明において図５の各部を図５中の参照番号によって随時参照する。また、図９及び図１０の各部も各図中の参照番号によって随時参照する。第１の実施形態のシミュレーション装置は、処理部１１０１と、記憶部１１０２とから構成される。
【００５３】
処理部１１０１は、コアシミュレータ部１１１０と、変換部１１１１と、アドレス変換コピー生成部１１１２、及びモデルシミュレート部１１１３を備える。
【００５４】
コアシミュレータ部１１１０は、図９のコア単体のシミュレータ６０２（＃０）に対応し、複数のコア５０１のうちの少なくとも１つのコア、例えばコア５０１（＃０）に関するシミュレーションを実行する。
【００５５】
変換部１１１１は、コアシミュレータ部１１１０における上記１つのコア５０１、例えばコア５０１（＃０）に関する動作結果６０３（＃０）（図９参照）からそのコア５０１に関する動作ファイル６０４（＃０）（リソースアクセスの動作内容）を抽出する。
【００５６】
アドレス変換コピー生成部１１１２は、図９、図１０のアドレス変換コピー生成部９０１と同様の動作を実行することにより、例えば＃０から＃３の各コア５０１に対応する＃０から＃３の動作ファイル９０２を生成する。
【００５７】
モデルシミュレート部１１１３は、図９のＴＧ６０５に対応し、アドレス変換コピー生成部１１１２が生成した例えば＃０から＃３のコア５０１に関する動作ファイル９０２に基づいて、＃０から＃３の複数のコア５０１間のリソース競合のシミュレーションを実行する。
【００５８】
記憶部１１０２は、アプリケーション１１２０、データ１１２１、パラメータ１１２２、動作結果６０３（＃０）、動作ファイル６０４（＃０）、９０２（＃０〜＃３）、シミュレーション結果１１２５、及びモデル１１２６を記憶する。
【００５９】
アプリケーション１１２０は、図９のアプリケーション６０１（＃０）に対応する。
データ１１２１は、アプリケーション１１２０で使用される各種データである。
【００６０】
パラメータ１１２２は、アドレス変換コピー生成部１１１２がアドレス変換を実行する際に参照する制御データである。
【００６１】
動作結果６０３（＃０）、動作ファイル６０４（＃０）、９０２（＃０〜＃３）は、図９及び図１０で説明した各データに対応する。
【００６２】
シミュレーション結果１１２５は、モデルシミュレート部１１１３がシミュレーションを実行した結果のデータである。
【００６３】
モデル１１２６は、モデルシミュレート部１１１３のシミュレータプログラムである。
図１２は、図１１の第１の実施形態のシミュレーション装置において、アドレス変換コピー生成部１１１２が参照するパラメータ１１２２（図１１参照））の例を示すデータ構成図である。
【００６４】
パラメータＩは、動作ファイル９０２のコピー作成数であり、例えば前述した特定の関係にあるコア５０１の数が１００コアならば、Ｉ＝１００である。
【００６５】
パラメータIIは、プログラムアドレスのオフセット値であり、設計対象のマルチコアＬＳＩシステムで一意に定義されるメモリアドレス空間の０ｘ００００番地（図１２中では「０ｘ０番地」と記載）からの差分値である。
【００６６】
パラメータIIIは、プログラムサイズ値であり、コア５０１毎のプログラムサイズの上限値である。
【００６７】
パラメータIVは、ロードストアアドレスのオフセット値であり、設計対象のマルチコアＬＳＩシステムで一意に定義されるメモリアドレス空間の０ｘ００００番地（図１２中では「０ｘ０番地」と記載）からの差分値である。
【００６８】
パラメータＶは、ロードストアサイズ値であり、コア５０１毎に利用するメモリアドレス領域の上限値である。
【００６９】
図１３は、図１１の第１の実施形態のシミュレーション装置において処理部１１０１内のアドレス変換コピー生成部１１１２が実行する処理の動作例を示すフローチャートである。以下、図１１の各部を図１１中の参照番号によって随時参照する。
【００７０】
まず、アドレス変換コピー生成部１１１２は、記憶部１１０２からパラメータ１１２２中の上記ＩからＶの各パラメータを取得する（ステップＳ１３０１）。
【００７１】
次に、アドレス変換コピー生成部１１１２は、変数ｉとｋをそれぞれ０に初期化する（ステップＳ１３０２）。変数ｉは、コア５０１の番号を示し、変数ｋは、動作ファイル６０４（＃０）中の行番号を示す。
【００７２】
続いて、アドレス変換コピー生成部１１１２は、ステップＳ１３０２で０に初期化された行番号を示す変数ｋの値を、ステップＳ１３０８で＋１ずつ加算しながら、ステップＳ１３０９で変数ｋの値が最後の行に対応する値を超えたと判定するまで、ステップＳ１３０３からＳ１３０８の一連の処理を、動作ファイル６０４（＃０）中の各行毎に繰り返し実行する。
【００７３】
まず、アドレス変換コピー生成部１１１２は、図１１の変換部１１１１が生成した動作ファイル６０４（＃０）の変数ｋが示すｋ行目の命令の動作を取得する（ステップＳ１３０３）。
【００７４】
アドレス変換コピー生成部１１１２は、ステップＳ１３０３で取得した命令の動作が「読み」又は「書き」であるか否かを判定する（ステップＳ１３０４）。
【００７５】
ステップＳ１３０４の判定がＹＥＳならば、アドレス変換コピー生成部１１１２は、前述した（１）式に対応する下記の（２）式の演算処理を実行することにより、プログラムアドレスを変換する（ステップＳ１３０５）。ここで、入力ＰＣは、ｋ行目の命令の動作に付加されているプログラムカウンタ値（プログラムアドレス）である。IIは、図１２で説明したパラメータII（プログラムアドレスオフセット）である。IIIは、図１２で説明したパラメータIII（プログラムサイズ）である。ｉは、変数ｉの現在値である。新ＰＣは、動作ファイル９０２（＃ｉ）に書き込まれるべき変換後のプログラムカウンタ値（プログラムアドレス）である。
【００７６】
新ＰＣ＝入力ＰＣ＋II×III×ｉ  ・・・（２）
【００７７】
次に、アドレス変換コピー生成部１１１２は、前述した（１）式に対応する下記の（３）式の演算処理を実行することにより、ロードストアアドレスを変換する（ステップＳ１３０６）。ここで、入力アドレスは、ｋ行目の命令の動作に付加されているロードストアアドレスである。IVは、図１２で説明したパラメータIV（ロードストアアドレスオフセット）である。Ｖは、図１２で説明したパラメータＶ（ロードストアサイズ）である。ｉは、変数ｉの現在値である。新アドレスは、動作ファイル９０２（＃ｉ）に書き込まれるべき変換後のロードストアアドレスである。
【００７８】
新アドレス＝入力アドレス＋IV×Ｖ×ｉ  ・・・（３）
【００７９】
アドレス変換コピー生成部１１１２は、ステップＳ１３０５で算出したプログラムアドレスと、ステップＳ１３０６で算出したロードストアアドレスを、動作ファイル６０４（＃０）のｋ行目に記録されている命令の動作と共に、動作ファイル９０２（＃ｉ）のｋ
行目に書き込む（ステップＳ１３０７）。
【００８０】
アドレス変換コピー生成部１１１２は、ステップＳ１３０３で取得した命令の動作が「読み」でも「書き」でもなく待ち命令（図９の動作ファイル６０４（＃０）を参照）である（ステップＳ１３０４の判定がＮＯである）場合には、以下の動作を実行する。アドレス変換コピー生成部１１１２は、上述のステップＳ１３０５及びＳ１３０６の処理はスキップして、ステップＳ１３０７で、動作ファイル６０４（＃０）中のｋ行目の命令の動作を、動作ファイル９０２（＃ｉ）中のｋ行目に書き込む。
【００８１】
以上の一連の処理が動作ファイル６０４（＃０）中の各行毎に繰り返された結果、変数ｋの値が動作ファイル６０４（＃０）中の最後の行を超える（ステップＳ１３０９の判定がＹＥＳになる）と、アドレス変換コピー生成部１１１２は、以下の処理を実行する。アドレス変換コピー生成部１１１２は、変数ｉの値を１加算する（ステップＳ１３１０）。そして、アドレス変換コピー生成部１１１２はｍ、変数ｉの値が生成すべき最後の動作ファイル９０２（＝最後のコア５０１）に対応する値を超えたか否かを判定する（ステップＳ１３１１）。そして、ステップＳ１３１１の判定がＮＯならば、アドレス変換コピー生成部１１１２は、変数ｋの値を０にリセットした後に、ステップＳ１３０３の処理に戻り、次の動作ファイル９０２（＃ｉ）の生成処理に移る。
【００８２】
以上の一連の処理が繰り返された結果、ステップＳ１３１１の判定がＹＥＳになると、アドレス変換コピー生成部１１１２は、全ての処理を完了して、図１３のフローチャートで例示される処理を終了し、処理部１１０１における制御が図１１のモデルシミュレート部１１１３に移る。
【００８３】
図１４及び図１５は、図１３のフローチャートの処理によるアドレス変換コピー生成部１１１２によるアドレス変換の説明図である。図１４は、＃０から＃３のコア５０１間で、プログラム領域及びデータ領域ともに重ならない場合のアドレス変換例である。一方、図１５は、＃０から＃３のコア５０１間で、プログラム領域は重ならず、データ領域は重なってもよい場合のアドレス変換例である。
【００８４】
まず、図１４においては、図１２で説明したパラメータIIのプログラムサイズが例えば０ｘ８００に設定される。この結果、動作ファイル６０４（＃０）中の各命令の動作のプログラムアドレスが、動作ファイル９０２（＃１）の生成時には、プログラム領域０ｘ００００〜０ｘ０５００中のアドレスからプログラム領域０ｘ０８００〜０ｘ０Ｄ００中のアドレスに変換される。同様に、動作ファイル９０２（＃２）の生成時には、プログラム領域０ｘ００００〜０ｘ０５００中のアドレスからプログラム領域０ｘ１０００〜０ｘ１５００中のアドレスに変換される。更に、動作ファイル９０２（＃３）の生成時には、プログラム領域０ｘ００００〜０ｘ０５００中のアドレスからプログラム領域０ｘ１８００〜０ｘ１Ｄ００中のアドレスに変換される。動作ファイル９０２（＃０）のプログラム領域は、動作ファイル６０４（＃０）中のプログラム領域０ｘ００００〜０ｘ０５００と同じである。
【００８５】
次に、図１４においては、図１２で説明したパラメータＶのロードストアサイズが例えば０ｘ８００に設定される。この結果、動作ファイル６０４（＃０）中の各命令の動作のロードストアアドレスが、動作ファイル９０２（＃１）の生成時には、データ領域０ｘ８０００〜０ｘ８６００中のアドレスから０ｘ８８００から始まるデータ領域中のアドレスに変換される。同様に、動作ファイル９０２（＃２）の生成時には、データ領域０ｘ８０００〜０ｘ８６００中のアドレスから０ｘ９０００から始まるデータ領域中のアドレスに変換される。更に、動作ファイル９０２（＃３）の生成時には、データ領域０ｘ８０００〜０ｘ８６００中のアドレスから０ｘ９８００から始まるデータ領域中のアドレスに変換される。動作ファイル９０２（＃０）のデータ領域は、動作ファイル６０４（＃０）中のデータ領域０ｘ８０００〜０ｘ８６００と同じである。
【００８６】
次に、図１５においては、プログラム領域については、図１２で説明したパラメータIIのプログラムサイズが例えば０ｘ８００に設定されることにより、図１４の場合と同様の変換処理が実行される。
【００８７】
一方、図１５において、データ領域については、図１２で説明したパラメータＶのロードストアサイズが０ｘ００００に設定されることにより、動作ファイル６０４（＃０）中の命令の動作のロードストアアドレスは、データ領域０ｘ８０００〜０ｘ８６００中のアドレスのままとなる。
【００８８】
このようにして、アドレス変換コピー生成部１１１２により、１つのコア５０１（＃０）の動作ファイル６０４（＃０）から、そのコア５０１（＃０）と特定の関係にある例えば＃１から＃３のコア５０１の＃１から＃３の動作ファイル９０２を生成できる。これにより、特にコア数の多いマルチコアＬＳＩステムにおいて、コア単体シミュレーションにかかる時間を大幅に削減することが可能となる。
【００８９】
図１６は、第２の実施形態の説明図である。図９及び図１０で説明した第１の実施形態では、アプリケーションのシーケンス（プログラム）が、コア５０１（＃０）に関するアプリケーション６０１（＃０）の１種類であったが、図１６の第２の実施形態では、アプリケーションのシーケンス（プログラム）が、例えば、コア５０１（＃０）に関するアプリケーション６０１（＃０）と、コア５０１（＃１）に関するアプリケーション６０１（＃１）の２種類になる。これに基づいて、コア単体のシミュレータ６０２の実行と、それに基づく動作結果６０３の出力及び動作ファイル６０４への変換も、コア５０１（＃０）とコア５０１（＃１）に関する２種類となる。
【００９０】
そして、アドレス変換コピー生成部１６０１は、動作ファイル９０２（＃ｉ）の生成において、アプリケーション番号として＃１が与えられた場合には動作ファイル６０４（＃０）から動作ファイル６０４（＃ｉ）を生成し、アプリケーション番号として＃２が与えられた場合には動作ファイル６０４（＃１）から動作ファイル６０４（＃ｉ）を生成するように動作する。
【００９１】
このようにして、第２の実施形態のシミュレーション装置では、異なるシーケンスに対応する複数種類のシーケンスの動作ファイル９０２を生成することが可能となる。図１６において、例えば動作ファイル９０２（＃０）と動作ファイル９０２（＃２）は、アプリケーション番号＃１に対応するシーケンスで動作し、動作ファイル９０２（＃１）と動作ファイル９０２（＃３）は、アプリケーション番号＃２に対応するシーケンスで動作するように制御することが可能となる。
【００９２】
図１７は、図１６の動作を実現する第２の実施形態のシミュレーション装置の構成例を示すブロック図である。図１１の第１の実施形態と異なる点は、アドレス変換コピー生成部１６０１（図１６と同様）が、記憶部１１０２内のアプリケーション番号１７０１に基づいて動作する点である。
【００９３】
アプリケーション番号１７０１は、＃０から＃３のコア５０１毎に、＃１又は＃２のアプリケーション番号を指定する情報である。
【００９４】
図１８は、図１７の第２の実施形態のシミュレーション装置において、アドレス変換コピー生成部１６０１が参照するパラメータ１１２２（図１１参照））の例を示すデータ構成図である。パラメータＩ〜Ｖは、図１２で説明したものと同様である。第２の実施形態では更に、パラメータＩ〜Ｖと同様の２組目のデータセットとして、パラメータVI〜IXが用意される。
【００９５】
図１９は、図１６の第２の実施形態のシミュレーション装置において処理部１１０１内のアドレス変換コピー生成部１６０１が実行する処理の動作例を示すフローチャートである。図１９のフローチャートにおいて、第１の実施形態に係る図１３のフローチャートと同じステップ番号を付したステップでは、図１３の場合と同じ処理が実行される。
【００９６】
図１９のフローチャートが図１３のフローチャートと異なる点として、まず、アドレス変換コピー生成部１６０１が、記憶部１１０２からパラメータ１１２２中の上記ＩからIXの各パラメータを取得する（ステップＳ１９０１）。
【００９７】
次に、アドレス変換コピー生成部１６０１は、動作ファイル９０２を生成すべきコア５０１の番号を示す変数ｉの値が変化する毎に、図１７の記憶部１１０２から変数ｉの値に対応するコア５０１に設定されているアプリケーション番号１７０１の値を取得する。そして、アドレス変換コピー生成部１６０１は、そのアプリケーション番号１７０１の値が＃１であるか＃２であるかを判定する（以上、ステップＳ１９０２）。
【００９８】
アドレス変換コピー生成部１６０１は、アプリケーション番号１７０１の値が＃１である場合には、読込み元の動作ファイル６０４の番号を示す変数ｍの値を＃０にセットする。また、アドレス変換コピー生成部１６０１は、プログラムアドレス変換のためのオフセット値を示す変数ｏｆｆｓｅｔ１とプログラムサイズを示す変数ｓｉｚｅ１にそれぞれ、ステップＳ１９０１で取得したパラメータIIとIII（図１８参照）の各値をセットする。更に、アドレス変換コピー生成部１６０１は、ロードストアアドレス変換のためのオフセット値を示す変数ｏｆｆｓｅｔ２とロードストアサイズを示す変数ｓｉｚｅ２にそれぞれ、ステップＳ１９０１で取得したパラメータIVとＶ（図１８参照）の各値をセットする（以上、ステップＳ１９０３）。
【００９９】
一方、アドレス変換コピー生成部１６０１は、アプリケーション番号１７０１の値が＃２である場合には、読込み元の動作ファイル６０４の番号を示す変数ｍの値を＃１にセットする。また、アドレス変換コピー生成部１６０１は、プログラムアドレス変換のためのオフセット値を示す変数ｏｆｆｓｅｔ１とプログラムサイズを示す変数ｓｉｚｅ１にそれぞれ、ステップＳ１９０１で取得したパラメータVIとVII（図１８参照）の各値をセットする。更に、アドレス変換コピー生成部１６０１は、ロードストアアドレス変換のためのオフセット値を示す変数ｏｆｆｓｅｔ２とロードストアサイズを示す変数ｓｉｚｅ２にそれぞれ、ステップＳ１９０１で取得したパラメータVIIIとIX（図１８参照）の各値をセットする（以上、ステップＳ１９０４）。
【０１００】
そして、アドレス変換コピー生成部１６０１は、図１３のステップＳ１３０３に対応する図１９のステップＳ１３０３′で、ステップＳ１９０３又はＳ１９０４でセットされた変数ｍが示す番号の動作ファイル６０４のｋ行目の命令を取得する。
【０１０１】
また、アドレス変換コピー生成部１６０１は、図１３のステップＳ１３０５に対応する図１９のステップＳ１３０５′で、ステップＳ１９０３又はＳ１９０４でセットされた変数ｏｆｆｓｅｔ１とｓｉｚｅ１を用いて、新プログラムアドレスを算出する。
【０１０２】
更に、アドレス変換コピー生成部１６０１は、図１３のステップＳ１３０６に対応する図１９のステップＳ１３０６′で、ステップＳ１９０３又はＳ１９０４でセットされた変数ｏｆｆｓｅｔ２とｓｉｚｅ２を用いて、新ロードストアアドレスを算出する。
【０１０３】
以上の第２の実施形態のアドレス変換コピー生成部１６０１の動作により、異なるシーケンスに対応する複数種類のシーケンスの動作ファイル９０２を生成することが可能となる。
【０１０４】
図２０は、第３の実施形態の説明図である。図９、図１０で説明した第１の実施形態では、アドレス変換コピー生成部９０１が１つの動作ファイル６０４（＃０）中の各命令のアドレスを変換することにより、＃１から＃３の動作ファイル９０２を生成した。これに対して、第３の実施形態では、＃０から＃３の動作ファイル９０２は、動作ファイル６０４（＃０）と同じものが使用される。そして、ＴＧ６０５が、図２０のステップＳ２で「読み」又は「書き」の命令を認識したときに、現在のコア５０１の番号を取得する（ステップＳ６）。次に、ＴＧ６０５が、その番号に対応する第１の実施形態等と同様のアドレス変換を実行して、新プログラムアドレスと新ロードストアアドレスを生成する（ステップＳ７）。ＴＧ６０５は、その生成したアドレスに基づいて、バスアクセスを実行する（ステップＳ３）。
【０１０５】
図２１は、第３の実施形態のシミュレーション装置の構成例を示すブロック図である。図１１で説明した第１の実施形態のシミュレーション装置の構成と比較すると、第１の実施形態におけるアドレス変換コピー生成部１１１２が省略されており、ＴＧ６０５であるモデルシミュレート部２１０１が、第１の実施形態におけるアドレス変換コピー生成部１１１２の機能を含んでいる。
【０１０６】
以上の第３の実施形態により、第１の実施形態等と同等の機能を実現することが可能となる。
【０１０７】
図２２は、上記第１乃至第３の実施形態に対応するシミュレーション装置（コンピュータ）のハードウェア構成の一例を示す図である。
【０１０８】
図２２に示されるコンピュータは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２２０１、メモリ２２０２、入力装置２２０３、出力装置２２０４、補助情報記憶装置２２０５、可搬型記録媒体２２０９が挿入される媒体駆動装置２２０６、及びネットワーク接続装置２２０７を有する。これらの構成要素は、バス２２０８により相互に接続されている。同図に示される構成は上記シミュレーション装置を実現できるコンピュータの一例であり、そのようなコンピュータはこの構成に限定されるものではない。
【０１０９】
メモリ２２０２は、例えば、Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ（ＲＯＭ）、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＲＡＭ）、フラッシュメモリ等の半導体メモリであり、処理に用いられるプログラム及びデータを格納する。
【０１１０】
ＣＰＵ（プロセッサ）２２０１は、例えば、メモリ２２０２を利用してプログラムを実行することにより、例えば図１１、図１７、又は図２１に示される処理部１１０１として動作する。
【０１１１】
入力装置２２０３は、例えば、キーボード、ポインティングデバイス等であり、オペレータ又はユーザからの指示又は情報の入力に用いられる。出力装置２２０４は、例えば、表示装置、プリンタ、スピーカ等であり、オペレータ又はユーザへの問合せ又は処理結果の出力に用いられる。
【０１１２】
補助情報記憶装置２２０５は、例えば、ハードディスク記憶装置、磁気ディスク記憶装置、光ディスク装置、光磁気ディスク装置、テープ装置、又は半導体記憶装置であり、例えば、図１１、図１７、又は図２１に示される記憶部１１０２として動作する。図１１、図１７、又は図２１のシミュレーション装置は、補助情報記憶装置２２０５にプログラム及びデータを格納しておき、それらをメモリ２２０２にロードして使用することができる。
【０１１３】
媒体駆動装置２２０６は、可搬型記録媒体２２０９を駆動し、その記録内容にアクセスする。可搬型記録媒体２２０９は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。可搬型記録媒体２２０９は、Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ（ＣＤ−ＲＯＭ）、Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ（ＤＶＤ）、Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ（ＵＳＢ）メモリ等であってもよい。オペレータ又はユーザは、この可搬型記録媒体２２０９にプログラム及びデータを格納しておき、メモリ２２０２にロードして使用することができる。
【０１１４】
このように、図１１、図１７、又は図２１のシミュレーション装置のシミュレーション処理に用いられるプログラム及びデータを格納するコンピュータ読取り可能な記録媒体は、メモリ２２０２、補助情報記憶装置２２０５、又は可搬型記録媒体２２０９のような、物理的な（非一時的な）記録媒体である。
【０１１５】
ネットワーク接続装置２２０７は、例えばＬｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＬＡＮ）等の通信ネットワークに接続され、通信に伴うデータ変換を行う通信インタフェースである。図１１、図１７、又は図２１のシミュレーション装置は、プログラム又はデータを外部の装置からネットワーク接続装置２２０７を介して受信し、それらをメモリ２２０２にロードして使用することができる。
【０１１６】
なお、図１１、図１７、又は図２１のシミュレーション装置が図２２の全ての構成要素を含む必要はなく、用途又は条件に応じて一部の構成要素を省略することも可能である。例えば、オペレータ又はユーザからの指示又は情報を入力する必要がない場合は、入力装置２２０３が省略されてもよい。可搬型記録媒体２２０９又は通信ネットワークを利用しない場合は、媒体駆動装置２２０６又はネットワーク接続装置２２０７が省略されてもよい。
【０１１７】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができる。
【０１１８】
以上の実施形態に関して、更に以下の付記を開示する。
（付記１）
複数のコアの夫々に関するリソースアクセスの動作内容に基づいて前記複数のコア間のリソース競合のシミュレーションを実行するシミュレーションプログラムであって、
前記複数のコアのうちの少なくとも１つのコアに関するシミュレーションを実行して前記１つのコアに関するリソースアクセスの動作内容を抽出するステップと、
前記複数のコアに対する実行処理における互いの特定の関係の下で、前記１つのコアによってアクセスするリソースのアドレスと前記複数のコアのうちの前記１つのコア以外の他のコアによってアクセスするリソースのアドレスとのアドレス差を、前記１つのコアに関するリソースアクセスの動作内容に反映させることにより、前記他のコアに関するリソースアクセスの動作内容を生成するステップと、
をコンピュータに実行させるためのシミュレーションプログラム。
（付記２）
前記１つのコアに関するリソースアクセスの動作内容を抽出するステップにおいて、前記複数のコアのうちの２種類以上のコアに関するシミュレーションを実行して前記２種類以上のコアに関する２種類以上のリソースアクセスの動作内容を抽出し、
前記他のコアに関するリソースアクセスの動作内容を生成するステップにおいて、前記２種類以上のコアに関するリソースアクセスの動作内容の何れかに基づいて、前記他のコアに関するリソースアクセスの動作内容を生成する、
ことを特徴とする付記１に記載のシミュレーションプログラム。
（付記３）
前記他のコアに関するリソースアクセスの動作内容を生成するステップにおいて、記憶装置に記憶された前記他のコアに関するリソースアクセスの動作内容の生成数と、プログラムアドレスのオフセット値と、前記コア毎のプログラムサイズの上限を示すプログラムサイズ値と、ロードストアアドレスのオフセット値と、前記コア毎に利用するメモリアドレスの上限値を含むパラメータ情報に基づいて前記アドレス差を算出する、ことを特徴とする付記１又は２に記載のシミュレーションプログラム。
（付記４）
前記リソースアクセスの動作内容は、バスに接続されたメモリに対するロード命令又はストア命令である、ことを特徴とする付記１乃至３の何れかに記載のシミュレーションプログラム。
（付記５）
前記コアによってアクセスするリソースのアドレスは、前記ロード命令又はストア命令のプログラムアドレス又はロードストアアドレスである、ことを特徴とする付記４に記載のシミュレーションプログラム。
（付記６）
前記複数のコアに対する実行処理における互いの特定の関係は、前記コアのそれぞれが、同一の一連の命令群からなる繰返し処理を、同一又は異なるプログラムアドレス又はロードストアアドレスに対して実行する関係である、ことを特徴とする付記１乃至５の何れかに記載のシミュレーションプログラム。
（付記７）
複数のコアの夫々に関するリソースアクセスの動作内容に基づいて前記複数のコア間のリソース競合のシミュレーションを実行するシミュレーション実行方法であって、
前記複数のコアのうちの少なくとも１つのコアに関するシミュレーションを実行して前記１つのコアに関するリソースアクセスの動作内容を抽出し、
前記複数のコアに対する実行処理における互いの特定の関係の下で、前記１つのコアによってアクセスするリソースのアドレスと前記複数のコアのうちの前記１つのコア以外の他のコアによってアクセスするリソースのアドレスとのアドレス差を、前記１つのコアに関するリソースアクセスの動作内容に反映させることにより、前記他のコアに関するリソースアクセスの動作内容を生成する、
ことを特徴とするシミュレーション実行方法。
（付記８）
複数のコアの夫々に関するリソースアクセスの動作内容に基づいて前記複数のコア間のリソース競合のシミュレーションを実行するシミュレーション装置であって、
前記複数のコアのうちの少なくとも１つのコアに関するシミュレーションを実行するコアシミュレータ部と、
前記コアシミュレータ部における前記１つのコアに関する動作結果から前記１つのコアに関するリソースアクセスの動作内容を抽出する変換部と、
前記複数のコアに対する実行処理における互いの特定の関係の下で、前記１つのコアによってアクセスするリソースのアドレスと前記複数のコアのうちの前記１つのコア以外の他のコアによってアクセスするリソースのアドレスとのアドレス差を、前記１つのコアに関するリソースアクセスの動作内容に反映させることにより、前記他のコアに関するリソースアクセスの動作内容を生成するアドレス変換コピー生成部と、
前記変換部が抽出した前記１つのコアに関するリソースアクセスの動作内容と、前記アドレス変換コピー生成部が生成した前記他のコアに関するリソースアクセスの動作内容とに基づいて、前記複数のコア間のリソース競合のシミュレーションを実行するモデルシミュレート部と、
を備えることを特徴とするシミュレーション装置。
（付記９）
複数のコアの夫々に関するリソースアクセスの動作内容に基づいて前記複数のコア間のリソース競合のシミュレーションを実行するシミュレーションプログラムであって、
前記複数のコアのうちの少なくとも１つのコアに関するシミュレーションを実行して前記１つのコアに関するリソースアクセスの動作内容を抽出するステップと、
前記複数のコアに対する実行処理における互いの特定の関係の下で、前記１つのコアによってアクセスするリソースのアドレスと前記複数のコアのうちの前記１つのコア以外の他のコアによってアクセスするリソースのアドレスとのアドレス差を、前記１つのコアに関するリソースアクセスの動作内容に反映させることにより前記他のコアに関するリソースアクセスの動作内容を生成しながら、前記複数のコア間のリソース競合のシミュレーションを実行するステップと、
をコンピュータに実行させるためのシミュレーションプログラム。
【符号の説明】
【０１１９】
５０１  コア
５０２  ＳＲＡＭ
５０３  バス
６０１  アプリケーション
６０２  コア単体のシミュレータ
６０３  動作結果
６０４、９０２  動作ファイル
６０５  ＴＧ
９０１、１１１２、１６０１  アドレス変換コピー生成部
１１０１  処理部
１１０２  記憶部
１１１０  コアシミュレータ部
１１１１  変換部
１１１３、２１０１  モデルシミュレート部
１１２０  アプリケーション
１１２２  パラメータ
１１２５  シミュレーション結果
１１２６  モデル
１７０１  アプリケーション番号
【図１】
2019016167.tif 000003
【図２】
2019016167.tif 000004
【図３】
2019016167.tif 000005
【図４】
2019016167.tif 000006
【図５】
2019016167.tif 000007
【図６】
2019016167.tif 000008
【図７】
2019016167.tif 000009
【図８】
2019016167.tif 000010
【図９】
2019016167.tif 000011
【図１０】
2019016167.tif 000012
【図１１】
2019016167.tif 000013
【図１２】
2019016167.tif 000014
【図１３】
2019016167.tif 000015
【図１４】
2019016167.tif 000016
【図１５】
2019016167.tif 000017
【図１６】
2019016167.tif 000018
【図１７】
2019016167.tif 000019
【図１８】
2019016167.tif 000020
【図１９】
2019016167.tif 000021
【図２０】
2019016167.tif 000022
【図２１】
2019016167.tif 000023
【図２２】
2019016167.tif 000024