JP6223637B2 - シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム - Google Patents

シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム Download PDF

Info

Publication number
JP6223637B2
JP6223637B2 JP2017521640A JP2017521640A JP6223637B2 JP 6223637 B2 JP6223637 B2 JP 6223637B2 JP 2017521640 A JP2017521640 A JP 2017521640A JP 2017521640 A JP2017521640 A JP 2017521640A JP 6223637 B2 JP6223637 B2 JP 6223637B2
Authority
JP
Japan
Prior art keywords
instruction
context information
simulation
information corresponding
instructions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2017521640A
Other languages
English (en)
Other versions
JPWO2016194028A1 (ja
Inventor
哲也 武尾
哲也 武尾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Publication of JPWO2016194028A1 publication Critical patent/JPWO2016194028A1/ja
Application granted granted Critical
Publication of JP6223637B2 publication Critical patent/JP6223637B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、シミュレーション装置及びシミュレーション方法及びシミュレーションプログラムに関するものである。
近年では、ISS(Instruction・Set・Simulator)を用いることで実際のハードウェアの作成前にソフトウェアのデバッグが可能となっている。ISSは、ターゲットCPU(Central・Processing・Unit)の命令セットをホストCPUの命令セットに変換し、変換後の命令セットを実行するシミュレータである。ターゲットCPUとは、シミュレーションの対象となるターゲットマシンのプロセッサのことである。ホストCPUとは、シミュレーションを実行するホストマシンのプロセッサのことである。
従来、異なる動作周波数を持つプロセッサコアをそれぞれに含む複数のシステムの同時動作をシミュレーションする方法がある(例えば、特許文献1参照)。この方法のように、マルチコアCPUシステム及びマルチCPUシステムのシミュレーションも可能になっている。マルチコアCPUシステムとは、1つのプロセッサの中に複数のコアが実装されているシステムのことである。マルチCPUシステムとは、複数のプロセッサを持つシステムのことである。
特開2004−21904号公報
従来の方法では、基準のクロックサイクル時間を決めて、1クロックサイクル時間ごとに複数のシステムのシミュレーションを切り替えて実行する。この方法では、それぞれのシステムについて毎クロックサイクル時間に同期化処理が実行されるため、シミュレーションに時間がかかる。
本発明は、シミュレーションを高速化することを目的とする。
本発明の1つの態様に係るシミュレーション装置は、
プログラムの命令を個別に実行する複数の要素を有するシステムの並列処理の動作を模擬するシミュレーション装置であって、
前記複数の要素のそれぞれに対して個別に作成され、対応する要素で実行される命令を示すコンテキスト情報を繰り返し選択する選択部と、
前記選択部により1つの要素に対応するコンテキスト情報が選択されてから前記選択部により別の要素に対応するコンテキスト情報が選択されるまでの期間に、当該1つの要素に対応するコンテキスト情報で示された命令の実行を模擬する模擬部と、
前記複数の要素で実行される命令のうち少なくとも一部の命令に対して前記期間の長さを個別に定義する定義情報を記憶する記憶媒体と、
前記模擬部により実行が模擬される命令が前記少なくとも一部の命令である場合、前記選択部により前記少なくとも一部の命令を実行する要素に対応するコンテキスト情報が選択されてから、前記記憶媒体に記憶された定義情報に従って、前記選択部に別の要素に対応するコンテキスト情報を選択させるタイミングを調整する調整部とを備える。
本発明では、どの命令の実行が模擬されるかによって、複数の要素のシミュレーションを切り替えるタイミングが調整される。このため、本発明によれば、シミュレーションを高速化することが可能となる。
本発明の実施の形態において動作が模擬されるシステムのハードウェア構成例を示す図。 実施の形態1に係るシミュレーション装置の構成を示すブロック図。 実施の形態1に係るシミュレーション装置の定義テーブルの例を示す図。 実施の形態1に係るシミュレーション装置の動作を示すフローチャート。 実施の形態1に係るシミュレーション装置の同期化処理の例を示す図。 実施の形態1に係るシミュレーション装置の同期化処理の例を示す図。 実施の形態2に係るシミュレーション装置の構成を示すブロック図。 実施の形態2に係るシミュレーション装置の定義テーブルの例を示す図。 本発明の実施の形態に係るシミュレーション装置のハードウェア構成例を示す図。
図1を参照して、本発明の実施の形態において動作が模擬されるシステム500のハードウェア構成例を説明する。
システム500は、マルチコアCPU510と、メモリ520と、複数のI/O530(Input/Output)とを有する。
マルチコアCPU510は、コアX511と、コアY512と、コアX511に接続されたL1キャッシュ513と、コアY512に接続されたL1キャッシュ514と、L1キャッシュ513,514に接続されたL2キャッシュ515とを有する。マルチコアCPU510は、ターゲットCPUに相当する。
I/O530は、周辺機器とのインタフェース、又は、DMA(Direct・Memory・Access)コントローラ等である。
本発明の実施の形態では、マルチコアCPU510を持つシステム500におけるプログラムの実行がシミュレートされる。マルチコアCPU510は、図1に示したように、複数のコアを持つプロセッサである。「複数のコア」は、プログラムの命令を個別に実行する複数の要素の例である。図1の例のような2つのコアに限らず、3つ以上のコアが「複数の要素」として扱われてもよい。また、複数のプロセッサが「複数の要素」として扱われてもよい。即ち、本発明の実施の形態は、マルチCPUのシステムにおけるプログラムの実行がシミュレートされるように変更されてもよい。
マルチコア又はマルチCPUによるソフトウェアの処理では、同期化が必要なタイミングが限られている。よって、そのタイミングだけ同期化を行えば、問題なくシミュレーションを実行することができる。本発明の実施の形態では、常に1クロックサイクル時間ごとに同期化が実行されるのではなく、基本的には複数クロックサイクル時間ごとに同期化が実行され、適宜同期化のタイミングが調整される。これにより、シミュレーションを高速化することができる。
以下、本発明の実施の形態について、図を用いて説明する。なお、各図中、同一又は相当する部分には、同一符号を付している。実施の形態の説明において、同一又は相当する部分については、その説明を適宜省略又は簡略化する。
実施の形態1.
本実施の形態に係る装置の構成、本実施の形態に係る装置の動作、本実施の形態の効果を順番に説明する。
***構成の説明***
図2を参照して、本実施の形態に係る装置であるシミュレーション装置100の構成を説明する。
シミュレーション装置100は、「複数のコア」としてコアX511及びコアY512を有するシステム500の並列処理の動作を模擬する装置である。
シミュレーション装置100は、記憶媒体200を備える。
記憶媒体200は、コアX511のコンテキスト情報であるコンテキスト情報X201と、コアY512のコンテキスト情報であるコンテキスト情報Y202とを記憶する。また、記憶媒体200は、定義情報251を記憶する。
シミュレーション装置100は、さらに、選択部101と、模擬部102と、調整部103とを備える。
選択部101は、記憶媒体200に記憶されたコンテキスト情報を繰り返し選択する。コンテキスト情報は、コアX511及びコアY512のそれぞれに対して個別に作成され、対応するコアで実行される命令を示す情報である。即ち、コンテキスト情報X201は、コアX511で実行される命令を示す情報である。コンテキスト情報Y202は、コアY512で実行される命令を示す情報である。本実施の形態では、2つのコアを持つマルチコアシステムのシミュレーションが実行されるが、コンテキスト情報をコア数分用意することで3つ以上のコアに対応することができる。また、コンテキスト情報をプロセッサ別に用意することで2つ以上のプロセッサにも対応することができる。なお、コンテキスト情報は、記憶媒体200から取得される代わりに、シミュレーション装置100の外部から取得されてもよい。
模擬部102は、選択部101により1つのコアに対応するコンテキスト情報が選択されてから選択部101により別のコアに対応するコンテキスト情報が選択されるまでの期間に、当該1つのコアに対応するコンテキスト情報で示された命令の実行を模擬する。即ち、模擬部102は、選択部101によりコンテキスト情報X201が選択された場合、選択部101によりコンテキスト情報Y202が選択されるまでの期間に、コンテキスト情報X201で示された命令の実行を模擬する。模擬部102は、選択部101によりコンテキスト情報Y202が選択された場合、選択部101によりコンテキスト情報X201が選択されるまでの期間に、コンテキスト情報Y202で示された命令の実行を模擬する。「期間」の長さがどのように決められるかについては後述する。
調整部103は、記憶媒体200に記憶された定義情報251を参照する。定義情報251は、コアX511及びコアY512で実行される命令のうち少なくとも一部の命令に対して「期間」の長さを個別に定義する情報である。調整部103は、模擬部102により実行が模擬される命令が当該少なくとも一部の命令である場合、選択部101により当該少なくとも一部の命令を実行するコアに対応するコンテキスト情報が選択されてから、参照した定義情報251に従って、選択部101に別のコアに対応するコンテキスト情報を選択させるタイミングを調整する。即ち、調整部103は、コンテキスト情報X201で示され、かつ、定義情報251で個別の期間が定義されている命令の実行が模擬部102により模擬される場合、定義された個別の期間が経過したときに選択部101によりコンテキスト情報Y202が選択されるように選択部101を制御する。調整部103は、コンテキスト情報Y202で示され、かつ、定義情報251で個別の期間が定義されている命令の実行が模擬部102により模擬される場合、定義された個別の期間が経過したときに選択部101によりコンテキスト情報X201が選択されるように選択部101を制御する。
本実施の形態において、定義情報251は、模擬部102により実行が連続で模擬される命令の数を指定することで「期間」の長さを定義する情報である。即ち、定義情報251は、個別の期間として個別の命令数を指定する情報である。調整部103は、模擬部102により実行が模擬される命令が定義情報251で個別の命令数が指定されている命令である場合、選択部101により当該命令を実行するコアに対応するコンテキスト情報が選択されてから、模擬部102により定義情報251で指定された数の命令の実行が模擬されたときに、選択部101に別のコアに対応するコンテキスト情報を選択させる。即ち、調整部103は、コンテキスト情報X201で示され、かつ、定義情報251で個別の命令数が指定されている命令の実行が模擬部102により模擬される場合、その命令を最初の命令として、模擬部102により実行が模擬された命令の数が、指定された命令数に達した時点で、選択部101にコンテキスト情報Y202を選択させる。調整部103は、コンテキスト情報Y202で示され、かつ、定義情報251で個別の命令数が指定されている命令の実行が模擬部102により模擬される場合、その命令を最初の命令として、模擬部102により実行が模擬された命令の数が、指定された命令数に達した時点で、選択部101にコンテキスト情報X201を選択させる。なお、定義情報251は、模擬部102により命令の実行が模擬される時間を指定することで「期間」の長さを定義する情報であってもよい。
定義情報251は、コアX511及びコアY512で実行される命令の全てに対して「期間」の長さを定義する情報であってもよいが、本実施の形態では、コアX511及びコアY512で実行される命令のうち一部の命令に対して「期間」の長さを定義する情報である。調整部103は、模擬部102により実行が模擬される命令が当該一部の命令とは別の命令である場合、選択部101により当該別の命令を実行するコアに対応するコンテキスト情報が選択されてから、模擬部102により固定数の命令の実行が模擬されたときに、選択部101に別のコアに対応するコンテキスト情報を選択させる。ただし、本実施の形態において、調整部103は、模擬部102により分岐又は同期の命令の実行が模擬されたときには、模擬部102により固定数の命令の実行が模擬される前であっても、選択部101に別のコアに対応するコンテキスト情報を選択させる。即ち、調整部103は、コンテキスト情報X201で示され、かつ、定義情報251で個別の命令数が指定されていない命令の実行が模擬部102により模擬される場合、その命令を最初の命令として、模擬部102により実行が模擬された命令の数が、予め決められた固定数に達するか、或いは、模擬部102により分岐又は同期の命令の実行が模擬された時点で、選択部101にコンテキスト情報Y202を選択させる。調整部103は、コンテキスト情報Y202で示され、かつ、定義情報251で個別の命令数が指定されていない命令の実行が模擬部102により模擬される場合、その命令を最初の命令として、模擬部102により実行が模擬された命令の数が、予め決められた固定数に達するか、或いは、模擬部102により分岐又は同期の命令の実行が模擬された時点で、選択部101にコンテキスト情報X201を選択させる。
本実施の形態において、模擬部102は、ターゲットCPUの命令コードであるターゲット命令コード301を、ホストCPUの命令コードであるホスト命令コード302に変換し、ホスト命令コード302を実行する。調整部103は、模擬部102の処理を管理する。
模擬部102は、デコード処理部121と、変換処理部122と、実行処理部123とを有する。
デコード処理部121は、命令デコード処理を行う。具体的には、デコード処理部121は、調整部103の指示により、ターゲットCPUが実行可能であるターゲット命令コード301のアドレスに関して、ホスト命令コード302が記憶媒体200に格納されているかを確認する。デコード処理部121は、そのホスト命令コード302が記憶媒体200に格納されていない場合は、ターゲット命令コード301に含まれる命令の種類、ソース及びデスティネーションとなるレジスタ又はメモリアドレスを解釈する。
変換処理部122は、命令変換処理を行う。具体的には、変換処理部122は、デコード処理部121が解釈したターゲット命令コード301を、ホストCPUが実行可能である1つ又は複数のホスト命令コード302に変換する。変換処理部122は、そのホスト命令コード302を記憶媒体200に格納する。
実行処理部123は、命令実行処理を行う。具体的には、実行処理部123は、変換処理部122が記憶媒体200に格納した、実行すべきターゲット命令コード301に対応するホスト命令コード302を実行することにより、シミュレーションを行う。
一度実行されたターゲット命令コード301のシミュレーションが再度実行されるときは、デコード処理部121が記憶媒体200を検索する。対応するホスト命令コード302が格納されていれば、調整部103がデコード処理部121への命令デコード処理指示と、変換処理部122への命令変換処理指示とを出さずに、実行処理部123に命令実行処理指示を出す。命令デコード処理と命令変換処理とを省略し、命令実行処理のみを行うことでシミュレーションを高速化することができる。
調整部103は、コア決定部131と、タイミング管理部132とを有する。
コア決定部131は、次に実行すべきターゲット命令コード301がコアX511の命令コードとコアY512の命令コードとのいずれであるかを判断する。コア決定部131は、判断結果に応じて、選択すべきコンテキスト情報を選択部101に伝達する。コンテキスト情報X201とコンテキスト情報Y202は、それぞれターゲットCPUのコアX511及びコアY512がターゲット命令コード301を実行する際に必要なターゲットCPUの内部レジスタの情報、各コアで保持するアドレスの情報、時刻、割り込みといったリソースに関する情報を含む。シミュレーション実行時にコアを切り替える場合は、コンテキスト情報も切り替えることで、共通のデコード処理部121、変換処理部122、実行処理部123を利用することができる。
選択部101は、次に実行すべきターゲット命令コード301がコアX511の命令コードである場合は、コンテキスト情報X201を読み出し、次に実行すべきターゲット命令コード301がコアY512の命令コードである場合は、コンテキスト情報Y202を読み出す。選択部101は、読み出したコンテキスト情報を、実行処理部123の命令実行処理で用いられるリソース情報として提供する。
シミュレーション装置100は、さらに、時間管理部104を備える。
時間管理部104は、ターゲットCPUの時間進行をホスト命令コード302の実行に合わせてシミュレートする。時間管理部104は、1つのホスト命令コード302が実行される度に、実行にかかる時間、メモリアクセス、I/Oアクセス等にかかる時間を算出し、算出結果を、コアごとに用意されたコンテキスト情報X201及びコンテキスト情報Y202に反映する。各コアの時間情報は、基本的には、一定のタイミングごとに同期化される。各コアの時間情報は、命令実行状況と合わせて性能情報として利用することが可能である。
同期化のタイミングが固定されている場合、1命令ごとといった短い間隔で各コアの時間を同期化することで、時間精度の良いシミュレーションが可能となるが、シミュレーション時間が長くなってしまう。シミュレーション時間が長いと、大きなプログラムのシミュレーションを行う場合、或いは、繰り返しシミュレーションを実行する場合に効率が悪い。各コアの時間を同期化する間隔をある程度長くすることで、シミュレーション時間を短縮できるが、時間精度が悪くなってしまい、性能の分析に使用するデータの採取ができなくなる。また、各コアの時間を同期化する間隔が長すぎると、ソフトウェア動作に問題が生じる。具体的には、後で訂正することができないか、或いは、後で訂正することが許されない計算の誤り、間違ったデータの使用等が発生する。
性能の分析では、プログラム全体の動作を把握したい場合とプログラムの一部の処理状況を分析したい場合とがある。プログラム開発時、ハードウェア開発時、出荷後の性能問題によるトラブル発生時は、特定のタスク又はプロセスの動作状況を詳細に分析したい場合が多い。そこで、本実施の形態では、特定のタスク又はプロセスを実行するターゲット命令コード301のアドレスの範囲、求められる精度、同期化の間隔が定義テーブル250で予め定義される。同期化の間隔は、前述したように、命令数によって定義される。タイミング管理部132は、シミュレーションが実行されるターゲット命令コード301のアドレスが定義テーブル250で定義された範囲に含まれる場合、各コアの時間を同期化する間隔を定義テーブル250で定義された間隔に調整する。タイミング管理部132は、シミュレーションが実行されるターゲット命令コード301のアドレスが定義テーブル250で定義された範囲に含まれない場合、各コアの時間を同期化する間隔をソフトウェア動作に問題ないレベルで長くとることができる。
定義情報251は、定義テーブル250に格納される。上記のように、本実施の形態では、定義情報251が、システム500が有するメモリ520で命令が格納されるアドレスの範囲ごとに「期間」の長さを定義する情報になっている。
図3は、定義テーブル250の例を示している。この例において、定義テーブル250は、詳細に分析すべき命令が配置される開始アドレス及び終了アドレスと、同期化の間隔の命令数とを示している。なお、開始アドレスと終了アドレスは、開始アドレスと命令のサイズとに置き換えられてもよい。同期化の間隔の命令数は、同期化の間隔の時間に置き換えられてもよい。
本実施の形態では、動的にコア間の時間を同期化するタイミングを調整することで、シミュレーションの対象となるプログラムの命令のうち、性能分析に必要なアドレス領域内に配置された命令については時間精度の良いシミュレーションを行い、性能分析に必要なアドレス領域外に配置された命令については高速なシミュレーションを行うことができる。
なお、本実施の形態において、「複数の要素」は、プロセッサの複数のコアであるが、前述したように、「複数の要素」は、複数のプロセッサであってもよい。即ち、本実施の形態では、マルチコアシステムのシミュレーションが行われるが、同様の方式でマルチCPUシステムのシミュレーションを行ってもよい。
***動作の説明***
図4を参照して、シミュレーション装置100の動作を説明する。シミュレーション装置100の動作は、本実施の形態に係るシミュレーション方法に相当する。シミュレーション装置100の動作は、本実施の形態に係るシミュレーションプログラムの処理手順に相当する。
ステップS11において、調整部103の構成要素であるコア決定部131は、次に命令を実行するコアを決める。コア間の命令実行状況に差がない場合、つまり各コアの時間進行が同等の場合、コア決定部131は、任意のコアを選択する。コア間の命令実行状況に差がある場合、つまりいずれかのコアの時間が先行している場合、時間が遅れている方のコアを選択する。
ステップS12において、選択部101は、ステップS11で選択されたコアのコンテキスト情報を命令実行時の参照情報として選択する。
ステップS11で選択されたコアが次に実行すべき命令のアドレスである実行命令アドレスは、そのコアのコンテキスト情報で定義されている。ステップS13において、実行命令アドレスの命令がホスト命令コード302に変換されていないターゲット命令コード301であれば、フローはステップS14に進む。実行命令アドレスの命令がホスト命令コード302に変換済のターゲット命令コード301であれば、フローはステップS19に進む。
ステップS14において、模擬部102の構成要素であるデコード処理部121は、実行命令アドレスのターゲット命令コード301を読み込む。
ステップS15において、デコード処理部121は、ステップS14で読み込んだターゲット命令コード301をデコードする。
ステップS16において、模擬部102の構成要素である変換処理部122は、ステップS15でデコードされたターゲット命令コード301をホスト命令コード302に変換する。このホスト命令コード302は、1つ以上の命令を含む命令列となっている。変換処理部122は、ステップS12で選択されたコンテキスト情報を参照して、レジスタ等の内部リソース情報をホスト命令コード302に埋め込む。
ステップS17において、変換処理部122は、ステップS16で得られたホスト命令コード302を1つのブロックとして記憶媒体200に格納する。
ステップS18において、調整部103の構成要素であるタイミング管理部132は、定義テーブル250を参照し、ステップS16で変換された命令の実行命令アドレスが定義テーブル250で定義された範囲内にあるかどうかを判断する。タイミング管理部132は、実行命令アドレスが定義テーブル250で定義された範囲内にある場合、直前のステップS12以降にステップS15で変換された命令の数が定義テーブル250で定義された同期化の間隔の命令数未満かどうかを判断する。変換された命令の数が同期化の間隔の命令数未満の場合、フローはステップS13に戻る。変換された命令の数が同期化の間隔の命令数以上の場合、フローはステップS19に進む。タイミング管理部132は、実行命令アドレスが定義テーブル250で定義された範囲外にある場合、変換された命令の数が一定の命令数未満かどうかを判断する。変換された命令の数が一定の命令数未満の場合、フローはステップS13に戻る。変換された命令の数が一定の命令数以上の場合、フローはステップS19に進む。
フローがステップS18からステップS13に戻ってステップS14からステップS17の処理が行われる場合、即ち、命令デコード処理及び命令変換処理が継続して行われる場合、ステップS16で得られたホスト命令コード302は、同一のブロックとして記憶媒体200に格納される。フローがステップS19に進む時点、即ち、命令デコード処理及び命令変換処理が終了した時点で、そのブロックの登録が完了する。
ステップS19において、模擬部102の構成要素である実行処理部123は、ステップS17で得られたホスト命令コード302を実行する。ホスト命令コード302は、ブロックごとに実行される。1つのブロックの実行が完了すると、コア間の時間進行が同期化される。即ち、ステップS19の後、フローはステップS11に戻り、コアX511及びコアY512のうち時間進行が遅れている方のコアが、次に命令を実行すべきコアとして選択される。
本実施の形態において、定義テーブル250で定義される同期化の間隔は、ステップS14からステップS17の処理で1つのブロックに変換される命令の数である。1つのブロックの実行が終わる度にコア間の同期化が行われるため、ターゲット命令コード301のアドレスの範囲によって1つのブロックに変換される命令の数を変えることで、同期化が必要なタイミングで同期化を行うことが可能となる。アドレスが定義テーブル250で定義されている範囲に含まれないターゲット命令コード301については、予め定義された一定の数の命令が同一のブロックに変換される。そのため、同期化の間隔は長くなるが、同期化の回数が大幅に削減される。よって、高速にホスト命令コード302を実行することができる。「予め定義された一定の数」は、数十命令程度である。前述したように、分岐命令又は同期命令でブロックを閉じる方式も併用される。
図5は、シミュレーション装置100の同期化処理の例を示している。この例において、コアX511の命令0〜2のアドレスと、コアY512の命令0〜2のアドレスは、いずれも定義テーブル250で定義された範囲内にあるものとする。それらの範囲について定義テーブル250で定義された同期化の間隔の命令数は、1つであるとする。
最初にコアX511が選択され、コアX511の命令0の実行が模擬されたとする。コアX511の命令0については、同期化の間隔の命令数が1つであるから、コアX511の命令0の実行が模擬された時点で、1つのブロックの実行が完了する。コアX511の方が命令1つ分だけ時間が進んでいるという状況が生じているため、次にコアY512が選択され、コアY512の命令0の実行が模擬される。これにより、コアX511及びコアY512の時間が同期化される。なお、最初にコアY512が選択され、コアY512の命令0の実行が模擬されてもよい。
コアY512の命令0についても、同期化の間隔の命令数が1つであるから、コアY512の命令0の実行が模擬された時点で、1つのブロックの実行が完了する。コアX511及びコアY512の時間が同期化された直後であるため、次にコアX511が選択されてもよいし、コアY512が選択されてもよい。ここでは、コアX511が選択され、コアX511の命令1の実行が模擬されたとする。コアX511の命令1についても、同期化の間隔の命令数が1つであるから、コアX511の命令1の実行が模擬された時点で、1つのブロックの実行が完了する。コアX511の方が命令1つ分だけ時間が進んでいるという状況が再び生じているため、次にコアY512が選択され、コアY512の命令1の実行が模擬される。これにより、コアX511及びコアY512の時間が同期化される。以降、同じように、コアY512の命令2とコアY512の命令2とが順番に実行される。なお、命令ごとの時間進行が異なる場合は、コアの選択時に時刻が比較される。即ち、時刻が先行しているコアが選択される。
図6は、シミュレーション装置100の同期化処理の別の例を示している。この例において、コアX511の命令0〜9のアドレスと、コアY512の命令0〜9のアドレスは、いずれも定義テーブル250で定義された範囲内にあるものとする。それらの範囲について定義テーブル250で定義された同期化の間隔の命令数は、5つであるとする。なお、コアX511の命令0〜9のアドレスと、コアY512の命令0〜9のアドレスが、定義テーブル250で定義された範囲外にあっても、「予め定義された一定の数」が5つであれば、処理は図6に示したものと同じになる。
最初にコアX511が選択され、コアX511の命令0の実行が模擬されたとする。コアX511の命令0〜4については、同期化の間隔の命令数が5つであるから、コアX511の命令0の実行が模擬された時点では、1つのブロックの実行が完了していない。よって、続けてコアX511の命令1〜4の実行が模擬される。コアX511の命令4の実行が模擬された時点で、1つのブロックの実行が完了する。コアX511の方が命令5つ分だけ時間が進んでいるという状況が生じているため、次にコアY512が選択され、コアY512の命令0の実行が模擬される。コアY512の命令0〜4についても、同期化の間隔の命令数がつであるから、コアY512の命令0の実行が模擬された時点では、1つのブロックの実行が完了していない。よって、続けてコアY512の命令1〜4の実行が模擬される。これにより、コアX511及びコアY512の時間が同期化される。なお、最初にコアY512が選択され、コアY512の命令0の実行が模擬されてもよい。
コアY512の命令4の実行が模擬された時点で、1つのブロックの実行が完了する。コアX511及びコアY512の時間が同期化された直後であるため、次にコアX511が選択されてもよいし、コアY512が選択されてもよい。ここでは、コアX511が選択され、コアX511の命令5の実行が模擬されたとする。コアX511の命令5〜9についても、同期化の間隔の命令数が5つであるから、コアX511の命令5の実行が模擬された時点では、1つのブロックの実行が完了していない。よって、続けてコアX511の命令6〜9の実行が模擬される。コアX511の命令9の実行が模擬された時点で、1つのブロックの実行が完了する。コアX511の方が命令5つ分だけ時間が進んでいるという状況が再び生じているため、次にコアY512が選択され、コアY512の命令5の実行が模擬される。コアY512の命令5〜9についても、同期化の間隔の命令数が5つであるから、コアY512の命令5の実行が模擬された時点では、1つのブロックの実行が完了していない。よって、続けてコアY512の命令6〜9の実行が模擬される。これにより、コアX511及びコアY512の時間が同期化される。
***効果の説明***
本実施の形態では、どの命令の実行が模擬されるかによって、コアX511及びコアY512のシミュレーションを切り替えるタイミングが調整される。このため、本実施の形態によれば、シミュレーションを高速化することが可能となる。
実施の形態2.
本実施の形態について、主に実施の形態1との差異を説明する。
図7を参照して、本実施の形態に係るシミュレーション装置100の構成を説明する。
実施の形態1と同じように、定義情報251は、定義テーブル250に格納される。実施の形態1では、定義情報251が、システム500が有するメモリ520で命令が格納されるアドレスの範囲ごとに「期間」の長さを定義する情報になっている。一方、本実施の形態では、定義情報251が、システム500により実行されるプログラムに含まれる関数のうち少なくとも一部の命令に対応する関数を識別するID(識別子)ごとに「期間」の長さを定義する情報になっている。
図8は、定義テーブル250の例を示している。この例において、定義テーブル250は、詳細に分析すべき命令を実行する関数のIDと、同期化の間隔の命令数とを示している。なお、同期化の間隔の命令数は、同期化の間隔の時間に置き換えられてもよい。
図7に示したように、本実施の形態では、記憶媒体200に関数配置マップ260が記憶される。関数配置マップ260は、シミュレートされるプログラムをコンパイル及びリンクしたときに生成される関数のアドレスマップ情報を含む。
シミュレーション装置100の動作は、ステップS18を除いて、図4に示した実施の形態1のものと同じである。
ステップS18において、調整部103の構成要素であるタイミング管理部132は、関数配置マップ260の情報から、ステップS16で変換された命令を実行する関数である実行タスクを判別する。タイミング管理部132は、定義テーブル250を参照し、判別した実行タスクが定義テーブル250で定義されているかどうかを判断する。タイミング管理部132は、実行タスクが定義テーブル250で定義されている場合、直前のステップS12以降にステップS15で変換された命令の数が定義テーブル250で定義された同期化の間隔の命令数未満かどうかを判断する。変換された命令の数が同期化の間隔の命令数未満の場合、フローはステップS13に戻る。変換された命令の数が同期化の間隔の命令数以上の場合、フローはステップS19に進む。タイミング管理部132は、実タスクが定義テーブル250で定義されていない場合、変換された命令の数が一定の命令数未満かどうかを判断する。変換された命令の数が一定の命令数未満の場合、フローはステップS13に戻る。変換された命令の数が一定の命令数以上の場合、フローはステップS19に進む。
本実施の形態において、定義テーブル250で定義される同期化の間隔は、実施の形態1と同じように、ステップS14からステップS17の処理で1つのブロックに変換される命令の数である。1つのブロックの実行が終わる度にコア間の同期化が行われるため、ターゲット命令コード301の関数によって1つのブロックに変換される命令の数を変えることで、同期化が必要なタイミングで同期化を行うことが可能となる。関数が定義テーブル250で定義されていないターゲット命令コード301については、予め定義された一定の数の命令が同一のブロックに変換される。そのため、同期化の間隔は長くなるが、同期化の回数が大幅に削減される。よって、高速にホスト命令コード302を実行することができる。本実施の形態においても、分岐命令又は同期命令でブロックを閉じる方式が併用される。
以下では、図9を参照して、本発明の実施の形態に係るシミュレーション装置100のハードウェア構成例を説明する。
シミュレーション装置100は、コンピュータである。シミュレーション装置100は、プロセッサ901、補助記憶装置902、メモリ903、通信装置904、入力インタフェース905、ディスプレイインタフェース906といったハードウェアを備える。プロセッサ901は、信号線910を介して他のハードウェアと接続され、これら他のハードウェアを制御する。入力インタフェース905は、入力装置907に接続されている。ディスプレイインタフェース906は、ディスプレイ908に接続されている。
プロセッサ901は、プロセッシングを行うIC(Integrated・Circuit)である。プロセッサ901は、ホストCPUに相当する。
補助記憶装置902は、例えば、ROM(Read・Only・Memory)、フラッシュメモリ、又は、HDD(Hard・Disk・Drive)である。補助記憶装置902は、記憶媒体200に相当する。
メモリ903は、例えば、RAM(Random・Access・Memory)である。メモリ903は、記憶媒体200に相当する。
通信装置904は、データを受信するレシーバ921及びデータを送信するトランスミッタ922を含む。通信装置904は、例えば、通信チップ又はNIC(Network・Interface・Card)である。
入力インタフェース905は、入力装置907のケーブル911が接続されるポートである。入力インタフェース905は、例えば、USB(Universal・Serial・Bus)端子である。
ディスプレイインタフェース906は、ディスプレイ908のケーブル912が接続されるポートである。ディスプレイインタフェース906は、例えば、USB端子又はHDMI(登録商標)(High・Definition・Multimedia・Interface)端子である。
入力装置907は、例えば、マウス、タッチペン、キーボード、又は、タッチパネルである。
ディスプレイ908は、例えば、LCD(Liquid・Crystal・Display)である。
補助記憶装置902には、選択部101、模擬部102、調整部103といった「部」の機能を実現するプログラムが記憶されている。このプログラムは、メモリ903にロードされ、プロセッサ901に読み込まれ、プロセッサ901によって実行される。補助記憶装置902には、OS(Operating・System)も記憶されている。OSの少なくとも一部がメモリ903にロードされ、プロセッサ901はOSを実行しながら、「部」の機能を実現するプログラムを実行する。
図9では、1つのプロセッサ901が示されているが、シミュレーション装置100が複数のプロセッサ901を備えていてもよい。そして、複数のプロセッサ901が「部」の機能を実現するプログラムを連携して実行してもよい。
「部」の処理の結果を示す情報やデータや信号値や変数値は、補助記憶装置902、メモリ903、又は、プロセッサ901内のレジスタ又はキャッシュメモリに記憶される。
「部」を「サーキットリ」で提供してもよい。また、「部」を「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。「回路」及び「サーキットリ」は、プロセッサ901だけでなく、ロジックIC、GA(Gate・Array)、ASIC(Application・Specific・Integrated・Circuit)、FPGA(Field−Programmable・Gate・Array)といった他の種類の処理回路をも包含する概念である。
以上、本発明の実施の形態について説明したが、これらの実施の形態のうち、いくつかを組み合わせて実施しても構わない。或いは、これらの実施の形態のうち、いずれか1つ又はいくつかを部分的に実施しても構わない。例えば、これらの実施の形態の説明において「部」として説明するもののうち、いずれか1つのみを採用してもよいし、いくつかの任意の組み合わせを採用してもよい。なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
100 シミュレーション装置、101 選択部、102 模擬部、103 調整部、104 時間管理部、121 デコード処理部、122 変換処理部、123 実行処理部、131 コア決定部、132 タイミング管理部、200 記憶媒体、201 コンテキスト情報X、202 コンテキスト情報Y、250 定義テーブル、251 定義情報、260 関数配置マップ、301 ターゲット命令コード、302 ホスト命令コード、500 システム、510 マルチコアCPU、511 コアX、512 コアY、513 L1キャッシュ、514 L1キャッシュ、515 L2キャッシュ、520 メモリ、530 I/O、901 プロセッサ、902 補助記憶装置、903 メモリ、904 通信装置、905 入力インタフェース、906 ディスプレイインタフェース、907 入力装置、908 ディスプレイ、910 信号線、911 ケーブル、912 ケーブル、921 レシーバ、922 トランスミッタ。

Claims (12)

  1. プログラムの命令を個別に実行する複数の要素を有するシステムの並列処理の動作を模擬するシミュレーション装置であって、
    前記複数の要素のそれぞれに対して個別に作成され、対応する要素で実行される命令を示すコンテキスト情報を繰り返し選択する選択部と、
    前記選択部により1つの要素に対応するコンテキスト情報が選択されてから前記選択部により別の要素に対応するコンテキスト情報が選択されるまでの期間に、当該1つの要素に対応するコンテキスト情報で示された命令の実行を模擬する模擬部と、
    前記複数の要素で実行される命令のうち一部の命令に対して前記模擬部により実行が連続で模擬される命令の数を指定することで前記期間の長さを個別に定義する定義情報を記憶する記憶媒体と、
    前記模擬部により実行が模擬される命令が前記一部の命令である場合、前記選択部により前記一部の命令を実行する要素に対応するコンテキスト情報が選択されてから、前記模擬部により前記記憶媒体に記憶された定義情報で指定された数の命令の実行が模擬されたときに、前記選択部に別の要素に対応するコンテキスト情報を選択させ、前記模擬部により実行が模擬される命令が前記一部の命令とは別の命令である場合、前記選択部により前記別の命令を実行する要素に対応するコンテキスト情報が選択されてから、前記模擬部により固定数の命令の実行が模擬されたときに、前記選択部に別の要素に対応するコンテキスト情報を選択させる調整部と
    を備えるシミュレーション装置。
  2. 前記調整部は、前記模擬部により実行が模擬される命令が前記別の命令である場合、前記選択部により前記別の命令を実行する要素に対応するコンテキスト情報が選択されてから、前記模擬部により固定数の命令の実行が模擬される前であっても、前記模擬部により分岐又は同期の命令の実行が模擬されたときに、前記選択部に別の要素に対応するコンテキスト情報を選択させる請求項に記載のシミュレーション装置。
  3. プログラムの命令を個別に実行する複数の要素を有するシステムの並列処理の動作を模擬するシミュレーション装置であって、
    前記複数の要素のそれぞれに対して個別に作成され、対応する要素で実行される命令を示すコンテキスト情報を繰り返し選択する選択部と、
    前記選択部により1つの要素に対応するコンテキスト情報が選択されてから前記選択部により別の要素に対応するコンテキスト情報が選択されるまでの期間に、当該1つの要素に対応するコンテキスト情報で示された命令の実行を模擬する模擬部と、
    前記複数の要素で実行される命令のうち少なくとも一部の命令に対して前記期間の長さを個別に定義する定義情報を記憶する記憶媒体と、
    前記模擬部により実行が模擬される命令が前記少なくとも一部の命令である場合、前記選択部により前記少なくとも一部の命令を実行する要素に対応するコンテキスト情報が選択されてから、前記記憶媒体に記憶された定義情報に従って、前記選択部に別の要素に対応するコンテキスト情報を選択させるタイミングを調整する調整部と
    を備え
    前記定義情報は、前記システムが有するメモリで前記少なくとも一部の命令が格納されるアドレスの範囲ごとに前記期間の長さを定義する情報であるシミュレーション装置。
  4. プログラムの命令を個別に実行する複数の要素を有するシステムの並列処理の動作を模擬するシミュレーション装置であって、
    前記複数の要素のそれぞれに対して個別に作成され、対応する要素で実行される命令を示すコンテキスト情報を繰り返し選択する選択部と、
    前記選択部により1つの要素に対応するコンテキスト情報が選択されてから前記選択部により別の要素に対応するコンテキスト情報が選択されるまでの期間に、当該1つの要素に対応するコンテキスト情報で示された命令の実行を模擬する模擬部と、
    前記複数の要素で実行される命令のうち少なくとも一部の命令に対して前記期間の長さを個別に定義する定義情報を記憶する記憶媒体と、
    前記模擬部により実行が模擬される命令が前記少なくとも一部の命令である場合、前記選択部により前記少なくとも一部の命令を実行する要素に対応するコンテキスト情報が選択されてから、前記記憶媒体に記憶された定義情報に従って、前記選択部に別の要素に対応するコンテキスト情報を選択させるタイミングを調整する調整部と
    を備え
    前記定義情報は、前記プログラムに含まれる関数のうち前記少なくとも一部の命令に対応する関数を識別する識別子ごとに前記期間の長さを定義する情報であるシミュレーション装置。
  5. 前記複数の要素は、プロセッサの複数のコアである請求項1からのいずれか1項に記載のシミュレーション装置。
  6. 前記複数の要素は、複数のプロセッサである請求項1からのいずれか1項に記載のシミュレーション装置。
  7. プログラムの命令を個別に実行する複数の要素を有するシステムの並列処理の動作を模擬するシミュレーション方法であって、
    記憶媒体を備えるコンピュータが、前記複数の要素のそれぞれに対して個別に作成され、対応する要素で実行される命令を示すコンテキスト情報を繰り返し選択し、
    前記コンピュータが、1つの要素に対応するコンテキスト情報を選択してから別の要素に対応するコンテキスト情報を選択するまでの期間に、当該1つの要素に対応するコンテキスト情報で示された命令の実行を模擬し、
    前記複数の要素で実行される命令のうち一部の命令に対して前記コンピュータにより実行が連続で模擬される命令の数を指定することで前記期間の長さを個別に定義する定義情報が、前記記憶媒体に記憶され、
    前記コンピュータが、実行を模擬する命令が前記一部の命令である場合、前記一部の命令を実行する要素に対応するコンテキスト情報を選択してから、前記記憶媒体に記憶された定義情報で指定された数の命令の実行を模擬したときに、別の要素に対応するコンテキスト情報を選択し、実行を模擬する命令が前記一部の命令とは別の命令である場合、前記別の命令を実行する要素に対応するコンテキスト情報を選択してから、固定数の命令の実行を模擬したときに、別の要素に対応するコンテキスト情報を選択するシミュレーション方法。
  8. プログラムの命令を個別に実行する複数の要素を有するシステムの並列処理の動作を模擬するシミュレーション方法であって、
    記憶媒体を備えるコンピュータが、前記複数の要素のそれぞれに対して個別に作成され、対応する要素で実行される命令を示すコンテキスト情報を繰り返し選択し、
    前記コンピュータが、1つの要素に対応するコンテキスト情報を選択してから別の要素に対応するコンテキスト情報を選択するまでの期間に、当該1つの要素に対応するコンテキスト情報で示された命令の実行を模擬し、
    前記複数の要素で実行される命令のうち少なくとも一部の命令に対して前記期間の長さを個別に定義する定義情報が、前記記憶媒体に記憶され、
    前記コンピュータが、実行を模擬する命令が前記少なくとも一部の命令である場合、前記少なくとも一部の命令を実行する要素に対応するコンテキスト情報を選択してから、前記記憶媒体に記憶された定義情報に従って、別の要素に対応するコンテキスト情報を選択するタイミングを調整し、
    前記定義情報は、前記システムが有するメモリで前記少なくとも一部の命令が格納されるアドレスの範囲ごとに前記期間の長さを定義する情報であるシミュレーション方法。
  9. プログラムの命令を個別に実行する複数の要素を有するシステムの並列処理の動作を模擬するシミュレーション方法であって、
    記憶媒体を備えるコンピュータが、前記複数の要素のそれぞれに対して個別に作成され、対応する要素で実行される命令を示すコンテキスト情報を繰り返し選択し、
    前記コンピュータが、1つの要素に対応するコンテキスト情報を選択してから別の要素に対応するコンテキスト情報を選択するまでの期間に、当該1つの要素に対応するコンテキスト情報で示された命令の実行を模擬し、
    前記複数の要素で実行される命令のうち少なくとも一部の命令に対して前記期間の長さを個別に定義する定義情報が、前記記憶媒体に記憶され、
    前記コンピュータが、実行を模擬する命令が前記少なくとも一部の命令である場合、前記少なくとも一部の命令を実行する要素に対応するコンテキスト情報を選択してから、前記記憶媒体に記憶された定義情報に従って、別の要素に対応するコンテキスト情報を選択するタイミングを調整し、
    前記定義情報は、前記プログラムに含まれる関数のうち前記少なくとも一部の命令に対応する関数を識別する識別子ごとに前記期間の長さを定義する情報であるシミュレーション方法。
  10. プログラムの命令を個別に実行する複数の要素を有するシステムの並列処理の動作を模擬するシミュレーションプログラムであって、
    記憶媒体を備えるコンピュータに、
    前記複数の要素のそれぞれに対して個別に作成され、対応する要素で実行される命令を示すコンテキスト情報を繰り返し選択する選択処理と、
    前記選択処理により1つの要素に対応するコンテキスト情報が選択されてから前記選択処理により別の要素に対応するコンテキスト情報が選択されるまでの期間に、当該1つの要素に対応するコンテキスト情報で示された命令の実行を模擬する模擬処理と
    を実行させ、
    前記複数の要素で実行される命令のうち一部の命令に対して前記模擬処理により実行が連続で模擬される命令の数を指定することで前記期間の長さを個別に定義する定義情報が、前記記憶媒体に記憶され、
    前記コンピュータに、
    前記模擬処理により実行が模擬される命令が前記一部の命令である場合、前記選択処理により前記一部の命令を実行する要素に対応するコンテキスト情報が選択されてから、前記模擬処理により前記記憶媒体に記憶された定義情報で指定された数の命令の実行が模擬されたときに、前記選択処理に別の要素に対応するコンテキスト情報を選択させ、前記模擬処理により実行が模擬される命令が前記一部の命令とは別の命令である場合、前記選択処理により前記別の命令を実行する要素に対応するコンテキスト情報が選択されてから、前記模擬処理により固定数の命令の実行が模擬されたときに、前記選択処理に別の要素に対応するコンテキスト情報を選択させる調整処理
    を実行させるシミュレーションプログラム。
  11. プログラムの命令を個別に実行する複数の要素を有するシステムの並列処理の動作を模擬するシミュレーションプログラムであって、
    記憶媒体を備えるコンピュータに、
    前記複数の要素のそれぞれに対して個別に作成され、対応する要素で実行される命令を示すコンテキスト情報を繰り返し選択する選択処理と、
    前記選択処理により1つの要素に対応するコンテキスト情報が選択されてから前記選択処理により別の要素に対応するコンテキスト情報が選択されるまでの期間に、当該1つの要素に対応するコンテキスト情報で示された命令の実行を模擬する模擬処理と
    を実行させ、
    前記複数の要素で実行される命令のうち少なくとも一部の命令に対して前記期間の長さを個別に定義する定義情報が、前記記憶媒体に記憶され、
    前記コンピュータに、
    前記模擬処理により実行が模擬される命令が前記少なくとも一部の命令である場合、前記選択処理により前記少なくとも一部の命令を実行する要素に対応するコンテキスト情報が選択されてから、前記記憶媒体に記憶された定義情報に従って、前記選択処理に別の要素に対応するコンテキスト情報を選択させるタイミングを調整する調整処理
    を実行させ
    前記定義情報は、前記システムが有するメモリで前記少なくとも一部の命令が格納されるアドレスの範囲ごとに前記期間の長さを定義する情報であるシミュレーションプログラム。
  12. プログラムの命令を個別に実行する複数の要素を有するシステムの並列処理の動作を模擬するシミュレーションプログラムであって、
    記憶媒体を備えるコンピュータに、
    前記複数の要素のそれぞれに対して個別に作成され、対応する要素で実行される命令を示すコンテキスト情報を繰り返し選択する選択処理と、
    前記選択処理により1つの要素に対応するコンテキスト情報が選択されてから前記選択処理により別の要素に対応するコンテキスト情報が選択されるまでの期間に、当該1つの要素に対応するコンテキスト情報で示された命令の実行を模擬する模擬処理と
    を実行させ、
    前記複数の要素で実行される命令のうち少なくとも一部の命令に対して前記期間の長さを個別に定義する定義情報が、前記記憶媒体に記憶され、
    前記コンピュータに、
    前記模擬処理により実行が模擬される命令が前記少なくとも一部の命令である場合、前記選択処理により前記少なくとも一部の命令を実行する要素に対応するコンテキスト情報が選択されてから、前記記憶媒体に記憶された定義情報に従って、前記選択処理に別の要素に対応するコンテキスト情報を選択させるタイミングを調整する調整処理
    を実行させ
    前記定義情報は、前記プログラムに含まれる関数のうち前記少なくとも一部の命令に対応する関数を識別する識別子ごとに前記期間の長さを定義する情報であるシミュレーションプログラム。
JP2017521640A 2015-05-29 2015-05-29 シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム Expired - Fee Related JP6223637B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/065501 WO2016194028A1 (ja) 2015-05-29 2015-05-29 シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム

Publications (2)

Publication Number Publication Date
JPWO2016194028A1 JPWO2016194028A1 (ja) 2017-07-27
JP6223637B2 true JP6223637B2 (ja) 2017-11-01

Family

ID=57440212

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017521640A Expired - Fee Related JP6223637B2 (ja) 2015-05-29 2015-05-29 シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム

Country Status (3)

Country Link
US (1) US10776139B2 (ja)
JP (1) JP6223637B2 (ja)
WO (1) WO2016194028A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2563384B (en) 2017-06-07 2019-12-25 Advanced Risc Mach Ltd Programmable instruction buffering

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4625081A (en) * 1982-11-30 1986-11-25 Lotito Lawrence A Automated telephone voice service system
US4713748A (en) * 1985-02-12 1987-12-15 Texas Instruments Incorporated Microprocessor with block move instruction
US4713749A (en) * 1985-02-12 1987-12-15 Texas Instruments Incorporated Microprocessor with repeat instruction
JP3366475B2 (ja) * 1994-04-12 2003-01-14 三菱電機株式会社 データ処理速度の評価方法
JP2000020348A (ja) 1998-07-03 2000-01-21 Toshiba Corp シミュレーション装置及びシミュレーションプログラムを記録したコンピュータ読み取り可能な記録媒体
JP3960866B2 (ja) 2002-06-20 2007-08-15 Necエレクトロニクス株式会社 複数プロセッサの同時シミュレーション装置および同時シミュレーション方法
JP3853752B2 (ja) * 2003-04-22 2006-12-06 三菱電機株式会社 シミュレーション装置
JP4717492B2 (ja) * 2005-04-12 2011-07-06 富士通株式会社 マルチコアモデルシミュレータ
JP4667206B2 (ja) * 2005-10-31 2011-04-06 富士通セミコンダクター株式会社 マルチコアモデルシミュレーションプログラム、該プログラムを記録した記録媒体、マルチコアモデルシミュレータ、およびマルチコアモデルシミュレーション方法
EP2076874A4 (en) * 2006-05-13 2011-03-09 Sap Ag DERIVED CONSISTENT SET OF INTERFACES DERIVED FROM A BUSINESS OBJECT MODEL
JP5595633B2 (ja) * 2007-02-26 2014-09-24 スパンション エルエルシー シミュレーション方法及びシミュレーション装置
JP5173385B2 (ja) 2007-12-07 2013-04-03 三菱電機株式会社 統合シミュレーションシステム
TWI378356B (en) * 2009-04-21 2012-12-01 Nat Univ Tsing Hua Method and device for multi-core instruction-set simulation
WO2011046089A1 (ja) 2009-10-16 2011-04-21 インターナショナル・ビジネス・マシーンズ・コーポレーション シミュレーション方法、システム及びプログラム
US9081501B2 (en) * 2010-01-08 2015-07-14 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
JP5459021B2 (ja) * 2010-03-31 2014-04-02 富士通株式会社 シミュレーション装置
KR101132560B1 (ko) * 2010-06-09 2012-04-03 강원대학교산학협력단 로봇 소프트웨어 컴포넌트를 위한 시뮬레이션 기반 인터페이스 테스팅 자동화 시스템 및 그 방법
JP5528294B2 (ja) * 2010-10-20 2014-06-25 インターナショナル・ビジネス・マシーンズ・コーポレーション シミュレーション制御方法、システム及びプログラム
JP6120657B2 (ja) 2013-04-19 2017-04-26 キヤノン株式会社 統合シミュレータ装置、シミュレーション方法、及びプログラム
JP6394341B2 (ja) * 2014-07-23 2018-09-26 富士通株式会社 計算装置、計算方法、および計算プログラム
CA3039198A1 (en) * 2016-10-11 2018-04-19 Green Hills Software, Llc Systems, methods, and devices for vertically integrated instrumentation and trace reconstruction

Also Published As

Publication number Publication date
WO2016194028A1 (ja) 2016-12-08
JPWO2016194028A1 (ja) 2017-07-27
US10776139B2 (en) 2020-09-15
US20180136955A1 (en) 2018-05-17

Similar Documents

Publication Publication Date Title
US20130231912A1 (en) Method, system, and scheduler for simulating multiple processors in parallel
US9645802B2 (en) Technique for grouping instructions into independent strands
JP4599266B2 (ja) シミュレーション装置及びシミュレーション方法
US9946823B2 (en) Dynamic control of design clock generation in emulation
WO2006123547A1 (ja) 情報処理装置、システム、方法およびプロセッサ
US9218273B2 (en) Automatic generation of a resource reconfiguring test
EP2672388B1 (en) Multi-processor parallel simulation method, system and scheduler
JP6223637B2 (ja) シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム
US8886512B2 (en) Simulation apparatus, computer-readable recording medium, and method
JP2005084957A (ja) 回路動作検証装置および方法
US11106478B2 (en) Simulation device, simulation method, and computer readable medium
CN103077069B (zh) 指令解析的方法及装置
JP6239212B1 (ja) シミュレーション装置、シミュレーション方法及びシミュレーションプログラム
JP5874433B2 (ja) トレース結合装置及びプログラム
JP6020775B1 (ja) シミュレーション装置
JP6473023B2 (ja) 性能評価モジュール及びこれを組み込んだ半導体集積回路
JP4205525B2 (ja) 並列シミュレーション装置および並列シミュレーション方法
JP6664158B2 (ja) シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム
JP2014194746A (ja) シミュレーション装置及びシミュレーション方法及びプログラム
CN110879744B (zh) 利用多线程执行计算图的方法和系统
Papadaki et al. Syntix: A Profiling Based Resource Estimator for CUDA Kernels
KR101721341B1 (ko) 이종 멀티코어 환경에서 사용되는 수행장치 결정 모듈 및 이를 이용한 수행장치 결정방법
WO2023183139A1 (en) Schedule instructions of a program of data flows for execution in tiles of a coarse grained reconfigurable array
JP2014016966A (ja) 情報処理装置、実行プログラムおよび実行方法
KR20210011451A (ko) 하드웨어 가속을 위한 하드웨어 리소스들의 임베디드 스케줄링

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170327

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170327

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170905

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171003

R150 Certificate of patent or registration of utility model

Ref document number: 6223637

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees