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

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

Info

Publication number
JP6239212B1
JP6239212B1 JP2017546753A JP2017546753A JP6239212B1 JP 6239212 B1 JP6239212 B1 JP 6239212B1 JP 2017546753 A JP2017546753 A JP 2017546753A JP 2017546753 A JP2017546753 A JP 2017546753A JP 6239212 B1 JP6239212 B1 JP 6239212B1
Authority
JP
Japan
Prior art keywords
simulation
instruction
execution
unit
elements
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
JP2017546753A
Other languages
English (en)
Other versions
JPWO2017158786A1 (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
Application granted granted Critical
Publication of JP6239212B1 publication Critical patent/JP6239212B1/ja
Publication of JPWO2017158786A1 publication Critical patent/JPWO2017158786A1/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

シミュレーション装置(100)において、模擬部(101)は、複数のコアの中からコアを1つずつ繰り返し選択し、選択したコアにおける命令の実行を模擬する。管理部(103)は、模擬部(101)により模擬された命令の実行に合わせて、模擬部(101)により選択されたコアにおける時間の進行を模擬し、模擬の結果に応じて、模擬部(101)により選択されたコアの時間情報を更新する。中断部(202)は、模擬部(101)により共有リソースへのアクセスを伴う命令の実行の模擬が開始された場合、時間情報が示す複数のコアにおける時間の進行度が同じになるまで、模擬部(101)により選択されたコアにおける命令の実行の模擬を中断して別のコアにおける命令の実行を模擬するよう模擬部(101)を制御する。

Description

本発明は、シミュレーション装置、シミュレーション方法及びシミュレーションプログラムに関するものである。
近年では、ISS(Instruction Set Simulator)を用いることで実際のハードウェアの作成前にソフトウェアのデバッグが可能となっている。ISSは、ターゲットプロセッサの命令セットをホストプロセッサの命令セットに変換し、変換後の命令セットを実行するシミュレータである。ターゲットプロセッサとは、シミュレーションの対象となるターゲットマシンのプロセッサのことである。ホストプロセッサとは、シミュレーションを実行するホストマシンのプロセッサのことである。
マルチコアプロセッサシステム及びマルチプロセッサシステムのシミュレーションも可能になってきている。マルチコアプロセッサシステムとは、1つのプロセッサの中に複数のコアが実装されているシステムのことである。マルチプロセッサシステムとは、複数のプロセッサを持つシステムのことである。
特許文献1に記載の技術では、マルチプロセッサシステムの各プロセッサのシミュレーションを独立の性能シミュレータが担当する。性能シミュレータは、担当のプロセッサのシミュレーションを規定時間ごとに交互に実行し、かつ、共有リソースの占有状況データを互いにやり取りすることで、共有リソースの占有の衝突を回避する。
特開平11−296409号公報
特許文献1に記載の技術では、複数のプロセッサのシミュレーションを規定時間ごとに交互に実行するため、複数のプロセッサが実際のハードウェアと同じ順序で共有リソースにアクセスするようにシミュレーションを行うことが困難である。複数のプロセッサを複数のコアに置き換えた場合も同じである。以下に具体例を示す。
図7は、2コアのマルチコアプロセッサである実際のハードウェアの命令実行を表したタイミングチャートである。この例では、先にコアXが共有リソースにアクセスし、その後にコアYが共有リソースにアクセスしている。
図8は、複数のコアのシミュレーションを交互に実行する方式を用いた、図7と同じマルチコアプロセッサの命令実行のシミュレーションを表したタイミングチャートである。この例では、規定時間、規定命令数、又は、規定命令の出現によって区切られた命令列をコアX及びコアYが交互に実行するようにシミュレーションが行われている。図8では、図7の順序とは異なり、先にコアYが共有リソースにアクセスし、その後にコアXが共有リソースにアクセスしている。
このように、複数のプロセッサ又はコアのシミュレーションを交互に実行する方式では、共有リソースへのアクセスの順序が実際のハードウェアと同じ順序にならないことがある。
本発明は、シミュレーションにおいて、共有リソースへのアクセスを実際のハードウェアと同じ順序で発生させることを目的とする。
本発明の一態様に係るシミュレーション装置は、
プログラムの命令を個別に実行する複数の要素と前記複数の要素からアクセスされる共有リソースとを有するシステムの並列処理の動作を模擬する。
前記シミュレーション装置は、
前記複数の要素の中から要素を1つずつ繰り返し選択し、選択した要素における命令の実行を模擬する模擬部と、
前記模擬部により模擬された命令の実行に合わせて、前記模擬部により選択された要素における時間の進行を模擬し、模擬の結果に応じて、メモリに格納され前記複数の要素における時間の進行度を示す時間情報を更新する管理部と、
前記模擬部により前記共有リソースへのアクセスを伴う命令の実行の模擬が開始された場合、前記メモリに格納された時間情報が示す前記複数の要素における時間の進行度が同じになるまで、前記模擬部により選択された要素における命令の実行の模擬を中断して別の要素における命令の実行を模擬するよう前記模擬部を制御する中断部とを備える。
本発明では、複数のコア、複数のプロセッサといった複数の要素と、共有リソースとを有するシステムの並列処理の動作が模擬される。1つの要素における、共有リソースへのアクセスを伴う命令の実行の模擬が開始された場合、複数の要素における時間の進行度が同じになるまで、当該1つの要素における命令の実行の模擬が中断され、別の要素における命令の実行が模擬される。このため、シミュレーションにおいて、共有リソースへのアクセスを実際のハードウェアと同じ順序で発生させることができる。
実施の形態1に係るシミュレーション装置の構成を示すブロック図。 実施の形態1に係るシミュレーション装置の中断部の構成を示すブロック図。 実施の形態1に係るシミュレーション装置の検出部の構成を示すブロック図。 実施の形態1に係るシミュレーション装置による命令実行の例を示す図。 実施の形態1に係るシミュレーション装置による命令実行の例を示す図。 実施の形態1に係るシミュレーション装置の動作を示すフローチャート。 2コアのマルチコアプロセッサである実際のハードウェアの命令実行を表したタイミングチャート。 複数のコアのシミュレーションを交互に実行する方式を用いた、図7と同じマルチコアプロセッサの命令実行のシミュレーションを表したタイミングチャート。
以下、本発明の実施の形態について、図を用いて説明する。なお、各図中、同一又は相当する部分には、同一符号を付している。実施の形態の説明において、同一又は相当する部分については、その説明を適宜省略又は簡略化する。
実施の形態1.
***構成の説明***
図1、図2及び図3を参照して、本実施の形態に係るシミュレーション装置100の構成を説明する。
シミュレーション装置100は、コンピュータである。シミュレーション装置100は、プロセッサ301、メモリ302といったハードウェアを備える。プロセッサ301は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
シミュレーション装置100は、プログラムの命令を個別に実行する複数の要素と複数の要素からアクセスされる共有リソースとを有するシステムの並列処理の動作を模擬する装置である。本実施の形態において、「複数の要素」は、マルチコアプロセッサシステムに備えられたプロセッサの複数のコアである。すなわち、本実施の形態では、シミュレーション装置100がホストマシンであり、シミュレーション装置100のプロセッサ301がホストプロセッサであり、マルチコアプロセッサシステムがターゲットマシンであり、マルチコアプロセッサシステムのプロセッサがターゲットプロセッサである。「要素」の数は、2つ以上であればよいが、本実施の形態ではコアX及びコアYの2つである。なお、「複数の要素」は、マルチプロセッサシステムの複数のプロセッサであってもよい。
シミュレーション装置100は、機能要素として、模擬部101と、管理部103と、デコード処理部110と、変換処理部111と、実行処理部112と、情報選択部131と、検出部201と、中断部202とを備える。模擬部101は、コア選択部102を有する。中断部202は、直前状態保持部220と、直前状態復元部221とを有する。検出部201は、共有リソースデータ復元部222と、オペランドアドレス監視部223とを有する。模擬部101、管理部103、デコード処理部110、変換処理部111、実行処理部112、情報選択部131、検出部201、中断部202といった「部」の機能は、ソフトウェアにより実現される。
プロセッサ301は、プロセッシングを行うIC(Integrated Circuit)である。プロセッサ301は、具体的には、CPU(Central Processing Unit)である。
メモリ302には、ターゲット命令コード121と、ホスト命令コード122と、コンテキスト情報X132と、コンテキスト情報Y133と、共有リソース情報203とが格納される。メモリ302は、具体的には、フラッシュメモリ、又は、RAM(Random Access Memory)である。
シミュレーション装置100は、入力装置、ディスプレイ、通信装置といった追加のハードウェアを備えていてもよい。
入力装置は、具体的には、マウス、キーボード、又は、タッチパネルである。
ディスプレイは、具体的には、LCD(Liquid Crystal Display)である。
通信装置は、データを受信するレシーバ及びデータを送信するトランスミッタを含む。通信装置は、具体的には、通信チップ又はNIC(Network Interface Card)である。
メモリ302には、「部」の機能を実現するプログラムが記憶されている。このプログラムは、プロセッサ301に読み込まれ、プロセッサ301によって実行される。メモリ302には、OS(Operating System)も記憶されている。プロセッサ301はOSを実行しながら、「部」の機能を実現するプログラムを実行する。
「部」の機能を実現するプログラムの全体又は一部がOSに組み込まれていてもよい。
「部」の機能を実現するプログラム及びOSは、補助記憶装置に記憶されていてもよい。補助記憶装置は、具体的には、フラッシュメモリ、又は、HDD(Hard Disk Drive)である。補助記憶装置に記憶されているプログラム及びOSは、メモリ302にロードされ、プロセッサ301によって実行される。
シミュレーション装置100は、1つのプロセッサ301のみを備えていてもよいし、複数のプロセッサ301を備えていてもよい。複数のプロセッサ301が「部」の機能を実現するプログラムを連携して実行してもよい。
「部」の処理の結果を示す情報、データ、信号値、及び、変数値は、メモリ302、補助記憶装置、又は、プロセッサ301内のレジスタ又はキャッシュメモリに記憶される。
「部」の機能を実現するプログラムは、磁気ディスク、光ディスクといった可搬記録媒体に記憶されてもよい。
***動作の説明***
図1から図6を参照して、本実施の形態に係るシミュレーション装置100の動作を説明する。シミュレーション装置100の動作は、本実施の形態に係るシミュレーション方法に相当する。シミュレーション装置100の動作は、本実施の形態に係るシミュレーションプログラムの処理手順に相当する。
まず、図1に示したシミュレーション装置100の各部の動作を説明する。
模擬部101は、ISSに相当する機能を有する。模擬部101は、ターゲットプロセッサが実行可能な命令コードであるターゲット命令コード121を、ホストプロセッサが実行可能な命令コードであるホスト命令コード122に変換して実行する処理を管理する。
デコード処理部110は、命令デコード処理を行う。具体的には、デコード処理部110は、模擬部101の指示により、命令実行アドレスで示される命令実行箇所に関して、変換されたホスト命令コード122がメモリ302上に存在するかを確認する。デコード処理部110は、そのようなホスト命令コード122が存在しない場合は、該当箇所のターゲット命令コード121に含まれる命令の種類と、ソース及びデスティネーションのレジスタ又はメモリアドレスとを解釈する。
変換処理部111は、命令変換処理を行う。具体的には、変換処理部111は、デコード処理部110が解釈したターゲット命令コード121を1つ又は複数のホスト命令コード122に変換する。変換処理部111は、変換後のホスト命令コード122をメモリ302に格納する。
実行処理部112は、ホスト命令コード実行処理を行う。具体的には、実行処理部112は、変換処理部111がメモリ302に格納した変換後のホスト命令コード122のうち、実行すべきターゲット命令コード121に対応したホスト命令コード122を実行することにより、シミュレーションを行う。
一度変換及び実行されたターゲット命令コード121のシミュレーションが再度実行されるときは、デコード処理部110がメモリ302内を検索する。対応するホスト命令コード122が格納されていれば、模擬部101は、デコード処理部110への命令デコード処理指示と、変換処理部111への命令変換処理指示とを出さずに、実行処理部112にホスト命令コード実行処理指示を出す。このように、命令デコード処理及び命令変換処理を省略し、ホスト命令コード実行処理のみを行うことで、シミュレーションを高速化することができる。
コンテキスト情報X132及びコンテキスト情報Y133は、コアX及びコアYという2つのコアを持つマルチコアプロセッサシステムのシミュレーションを実行するためのコンテキスト情報である。コンテキスト情報をコア数分用意することで、任意の数のコアに対応することができる。
コア選択部102は、次に実行すべきターゲット命令コード121がコアXの命令コードとコアYの命令コードのいずれであるかを判断する。コア選択部102は、判断結果に応じて、選択すべきコンテキスト情報を情報選択部131に伝達する。コンテキスト情報X132及びコンテキスト情報Y133は、それぞれターゲットプロセッサのコアX及びコアYがターゲット命令コード121を実行する際に必要な情報である。コンテキスト情報X132及びコンテキスト情報Y133は、それぞれターゲットプロセッサの内部レジスタの情報、各コアで保持する命令実行アドレスの情報、時刻に関する情報、割り込みの情報、及び、リソースに関するその他の情報を含む。シミュレーション実行時にコアを切り替える場合は、コンテキスト情報も切り替えることで、共通のデコード処理部110、変換処理部111及び実行処理部112を利用することができる。
情報選択部131は、次に実行すべきターゲット命令コード121がコアXの命令コードである場合は、コンテキスト情報X132を読み出し、次に実行すべきターゲット命令コード121がコアYの命令コードである場合は、コンテキスト情報Y133を読み出す。情報選択部131は、読み出したコンテキスト情報を、実行処理部112のホスト命令コード実行処理で用いられるリソース情報として提供する。
管理部103は、ターゲットプロセッサの時間進行をホスト命令コード122の実行に合わせて模擬する。管理部103は、1つのホスト命令コード122が実行される度に、命令の実行にかかる時間と、メモリアクセス、I/Oアクセス等にかかる時間とを算出し、算出結果を、コアごとに用意されたコンテキスト情報X132及びコンテキスト情報Y133に反映する。各コアの時間情報は、一定間隔で同期化される。各コアの時間情報は、命令実行状況と合わせて性能情報として利用することが可能である。
従来のシミュレーション方式では、複数コア間の共有リソースへのアクセスの順序を制御できないため、実際のハードウェアの動作を正確に再現することができない。性能の分析を考慮せず、ソフトウェアの機能を模擬することだけが目的の場合は、共有リソースへのアクセスの順序を正確に模擬しなくても、ソフトウェアに共有リソースへのアクセスのための排他制御機能があればよい。しかし、性能を分析するための性能シミュレーションを行う場合は、共有リソースへのアクセスの順序まで正確に模擬する必要がある。
本実施の形態では、シミュレーション装置100が、共有リソースへのアクセスが発生した場合に命令実行を中断する中断部202を備える。そのため、共有リソースへのアクセスの発生時点で複数コア間の同期が可能となり、複数コア間の共有リソースへのアクセスの順序を制御することが可能となる。
本実施の形態では、シミュレーション装置100が、さらに、ホスト命令コード122が実行されているときにシミュレーション上で共有リソースへのアクセスが発生したことを検出する検出部201を備える。メモリ302には、共有リソースの領域のアドレス範囲を示す共有リソース情報203が格納される。検出部201は、共有リソース情報203と実行処理部112が実行している命令のオペランドアドレスとを基に、共有リソースへのアクセスの発生を検出する。中断部202は、検出部201から共有リソースへのアクセスの発生を検出したことの通知を受けて命令実行を中断する。
次に、図2に示した中断部202の各部の動作を説明する。
直前状態保持部220は、模擬部101より命令実行時のコンテキスト情報を受信する。直前状態保持部220は、受信したコンテキスト情報を、次の命令実行後まで保持する。直前状態保持部220は、保持したコンテキスト情報を、さらに次の命令が実行されるときはその前の命令実行時のコンテキスト情報に置き換える。
直前状態復元部221は、検出部201から共有リソースへのアクセスの発生を検出したことの通知を受信すると、模擬部101に対して命令実行の中断を指示し、模擬部101のコンテキスト情報を直前状態保持部220が保持しているコンテキスト情報に戻す。これにより、模擬部101の状態を共有リソースへのアクセスが発生する直前の状態に戻すことができる。
次に、図3に示した検出部201の各部の動作を説明する。
オペランドアドレス監視部223は、実行処理部112より実行中の命令のオペランドアドレスの情報を受信し、そのアドレスの領域が共有リソースの領域であった場合、すなわち、そのアドレスが共有リソース情報203で示されたアドレス範囲内であった場合に、中断部202に通知を送る。
共有リソースデータ復元部222は、実行処理部112で実行されている命令が共有リソースへのアクセスを伴う命令であった場合、その命令で発生するデータ転送の前の状態を復元する。
ここで、図4及び図5の例を用いて、具体的な動作を説明する。
図4及び図5は、ターゲットプロセッサの命令コード列を実行順に示すとともに、各命令の実行時の直前状態保持部220の保持内容を各命令に対応して示している。シミュレーション時は、ターゲットプロセッサの命令列はホストプロセッサの命令列に変換されているが、簡単のためターゲットプロセッサの命令列で動作を説明する。
図4の例では、命令a1から順に実行され、Load/Store命令a10で命令列が区切られている。すなわち、命令a1で始まり、Load/Store命令a10で終わる命令列が構成されている。Load/Store命令a10の次は命令a11から命令a16までが次の区切りの命令列になっている。すなわち、命令a11で始まり、命令a16で終わる命令列が次に構成されている。これらの命令列は、ホストプロセッサの命令コードに変換されて、それぞれホスト命令コード122のブロックとしてメモリ302に保存されている。
また、図4の例では、命令a3実行時の直前状態保持部220の保持内容は、命令a2実行後の状態である。Load/Store命令a10実行時の直前状態保持部220の保持内容は、直前の命令a5実行後の状態である。このLoad/Store命令a10が共有リソースへのアクセスが発生する命令でない場合は、そのまま次の命令a11からの命令列が実行される。Load/Store命令a10が共有リソースへのアクセスだった場合は、図5の例のように、命令実行が中断され、コア間の同期化が行われる。
図5の例では、Load/Store命令a10が共有リソースへのアクセスが発生する命令であるため、命令実行が中断されて直前の命令a5実行後の状態が直前状態復元部221により復元される。次に、コア間で同期がとられ、命令実行が中断されたコアが他のコアよりも命令実行が遅れている場合に命令実行が再開される。他のコアで命令実行が遅れているコアがある場合は、その遅れているコアの命令が実行される。コア間の同期化によって、共有リソースへのアクセスが発生する命令を実行するコアが最も遅れた状態になってから命令実行が再開され、共有リソースへのアクセスが発生することにより、共有リソースへのアクセスの順序が保障されることになる。
図6は、シミュレーション装置100の動作のフローを示している。
ステップS11において、模擬部101の構成要素であるコア選択部102は、次に命令を実行するコアを選択する。コア間の命令実行状況に差がない場合、すなわち、コア間の時間進行が同等の場合、次に命令を実行するコアは任意でよい。コア間の命令実行状況に差がある場合、すなわち、いずれかのコアの時間が先行している場合は、時間が遅れている方のコアが選択される。
ステップS12において、情報選択部131は、ステップS11で選択されたコアのコンテキスト情報を命令実行時の参照情報として選択する。ステップS11で選択されたコアが次に実行すべきターゲット命令コード121を示す命令実行アドレスは、コンテキスト情報X132又はコンテキスト情報Y133に保持されている。命令実行アドレスのターゲット命令コード121がホスト命令コード122に変換済であれば、ステップS17の処理が行われる。一方、命令実行アドレスのターゲット命令コード121がホスト命令コード122に変換されていなければ、ステップS13の処理が行われる。
ステップS13において、デコード処理部110は、命令実行アドレスのターゲット命令コード121を読み込む。
ステップS14において、デコード処理部110は、ステップS14で読み込んだターゲット命令コード121をデコードする。
ステップS15において、変換処理部111は、ステップS15でデコードされた情報に従ってターゲット命令コード121をホスト命令コード122に変換する。このホスト命令コード122は、1つ以上の命令を含む命令列となっている。変換処理部111は、ステップS12で選択されたコンテキスト情報を参照して、レジスタ等の内部リソースに関する情報をホスト命令コード122に埋め込む。
ステップS16において、変換処理部111は、ステップS15で得られたホスト命令コード122を1つのブロックとしてメモリ302に格納する。
次に、コア間の同期化が必要か判断される。ステップS16で格納されたホスト命令コード122が同期化命令、分岐命令、及び、共有リソースへのアクセスが発生する可能性がある命令のいずれかに当てはまれば、同期化が必要であり、いずれでもなければ、同期化は不要である。同期化が不要であれば、ステップS13からステップS16の処理が繰り返されてターゲット命令コード121の変換が実施される。同期化が必要であれば、ターゲット命令コード121の変換が中断され、その時点でのホスト命令コード122のブロックの格納が完了する。そして、ステップS17の処理が行われる。
ステップS17において、中断部202の構成要素である直前状態保持部220は、直前の命令実行後の状態として、ステップS12で選択されたコンテキスト情報を保存する。
ステップS18において、実行処理部112は、1つのターゲット命令コード121に相当するホスト命令コード122を実行する。検出部201の構成要素であるオペランドアドレス監視部223は、そのホスト命令コード122が共有リソースへのアクセスが発生する命令であるか否かを判断する。共有リソースへのアクセスが発生する命令であれば、ステップS19の処理が行われる。
ステップS19において、中断部202の構成要素である直前状態復元部221は、ステップS17で保存された直前の命令実行後の状態を復元する。
次に、ホスト命令コード122の1つのブロックの実行が完了しているか判断される。ステップS18でホスト命令コード122が共有リソースへのアクセスが発生する命令でなかった場合も、ホスト命令コード122の1つのブロックの実行が完了しているか判断される。完了していなければ、ステップS17以降の処理が繰り返されてホスト命令コード122の実行が継続される。完了していれば、ステップS20の処理が行われる。
ステップS20において、コア間の同期化が行われる。すなわち、コア間の命令実行状況に差がない場合、ステップS11の処理が再び行われて、任意のコアが選択される。コア間の命令実行状況に差がある場合は、ステップS11で時間が遅れている方のコアが選択される。
共有リソースアクセスが発生する命令は、同期化が必要なため、ホスト命令コード122の1つのブロックの最後に格納されている。よって、ステップS18で共有リソースアクセスが発生する命令が実行され、ステップS19で直前の命令実行後の状態が復元された後は、1つのブロックの実行が完了していると判断され、ステップS20において、コア間の同期化が行われる。
上記のように、本実施の形態において、模擬部101は、複数のコアの中からコアを1つずつ繰り返し選択し、選択したコアにおける命令の実行を模擬する。管理部103は、模擬部101により模擬された命令の実行に合わせて、模擬部101により選択されたコアにおける時間の進行を模擬する。管理部103は、模擬の結果に応じて、模擬部101により選択されたコアの時間情報を更新する。時間情報は、複数のコアにおける時間の進行度を示す情報である。時間情報は、コアごとに個別に作成される。図示していないが、時間情報は、コンテキスト情報の一部としてメモリ302に格納されている。中断部202は、模擬部101により共有リソースへのアクセスを伴う命令の実行の模擬が開始された場合、メモリ302に格納された時間情報が示す複数のコアにおける時間の進行度が同じになるまで、模擬部101により選択されたコアにおける命令の実行の模擬を中断して別のコアにおける命令の実行を模擬するよう模擬部101を制御する。
また、本実施の形態において、検出部201は、模擬部101により転送先のアドレスを指定してデータを転送する命令の実行の模擬が開始された場合、共有リソース情報203を参照し、指定されたアドレスと、参照した共有リソース情報203が示すアドレスとを比較する。検出部201は、比較の結果に応じて、模擬部101により共有リソースへのアクセスを伴う命令の実行の模擬が開始されたことを検出し、中断部202に通知を送る。中断部202は、この通知を受けることで、模擬部101により共有リソースへのアクセスを伴う命令の実行の模擬が開始されたことを認識できる。
また、本実施の形態において、模擬部101は、選択したコアにおける命令の実行を模擬する度に、模擬の結果に応じて、選択したコアのコンテキスト情報を更新する。コンテキスト情報は、複数のコアにおける命令の実行状況を示す情報である。コンテキスト情報は、コアごとに個別に作成される。中断部202は、模擬部101により1つの命令の実行が模擬される度に、模擬部101により次の命令の実行の模擬が開始される前のコンテキスト情報を直前のコンテキスト情報としてメモリ302から取得する。中断部202は、模擬部101により当該次の命令として共有リソースへのアクセスを伴う命令の実行の模擬が開始された場合、当該次の命令の実行の模擬を模擬部101に中断させるとともに、メモリ302に格納されているコンテキスト情報を直前のコンテキスト情報に置換する。
このように、本実施の形態では、共有リソースへのアクセスが発生する命令の実行時にコア間の同期をとることにより、複数コア間の共有リソースへのアクセスの順序を正確に模擬することができる。
***実施の形態の効果の説明***
本実施の形態では、複数のコアと共有リソースとを有するシステムの並列処理の動作が模擬される。1つのコアにおける、共有リソースへのアクセスを伴う命令の実行の模擬が開始された場合、複数のコアにおける時間の進行度が同じになるまで、当該1つのコアにおける命令の実行の模擬が中断され、別のコアにおける命令の実行が模擬される。このため、シミュレーションにおいて、共有リソースへのアクセスを実際のハードウェアと同じ順序で発生させることができる。複数のコアを複数のプロセッサに置き換えた場合も、同等の効果を得ることができる。
***他の構成***
本実施の形態では、「部」の機能がソフトウェアにより実現されるが、変形例として、「部」の機能がソフトウェアとハードウェアとの組み合わせにより実現されてもよい。具体例として、1つ又はいくつかの「部」の機能が処理回路により実現され、残りの機能がソフトウェアにより実現されてもよい。
処理回路は、具体的には、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA(Gate Array)、又は、FPGA(Field−Programmable Gate Array)である。或いは、処理回路は、具体的には、ASIC(Application Specific Integrated Circuit)である。
プロセッサ301、メモリ302、及び、処理回路を、総称して「プロセッシングサーキットリ」という。つまり、「部」の機能は、ソフトウェアにより実現されるか、ソフトウェアとハードウェアとの組み合わせにより実現されるかに関わらず、プロセッシングサーキットリにより実現される。
「部」を「工程」、「手順」又は「処理」に読み替えてもよい。
以上、本発明の実施の形態について説明したが、この実施の形態を部分的に実施しても構わない。具体的には、この実施の形態に係るシミュレーション装置100の機能要素のうち、一部の機能要素のみを採用してもよい。なお、本発明は、この実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
100 シミュレーション装置、101 模擬部、102 コア選択部、103 管理部、110 デコード処理部、111 変換処理部、112 実行処理部、121 ターゲット命令コード、122 ホスト命令コード、131 情報選択部、132 コンテキスト情報X、133 コンテキスト情報Y、201 検出部、202 中断部、203 共有リソース情報、220 直前状態保持部、221 直前状態復元部、222 共有リソースデータ復元部、223 オペランドアドレス監視部、301 プロセッサ、302 メモリ。

Claims (7)

  1. プログラムの命令を個別に実行する複数の要素と前記複数の要素からアクセスされる共有リソースとを有するシステムの並列処理の動作を模擬するシミュレーション装置であって、
    前記複数の要素の中から要素を1つずつ繰り返し選択し、選択した要素における命令の実行を模擬する模擬部と、
    前記模擬部により模擬された命令の実行に合わせて、前記模擬部により選択された要素における時間の進行を模擬し、模擬の結果に応じて、メモリに格納され前記複数の要素における時間の進行度を示す時間情報を更新する管理部と、
    前記模擬部により前記共有リソースへのアクセスを伴う命令の実行の模擬が開始された場合、前記メモリに格納された時間情報が示す前記複数の要素における時間の進行度が同じになるまで、前記模擬部により選択された要素における命令の実行の模擬を中断して別の要素における命令の実行を模擬するよう前記模擬部を制御する中断部と
    を備えるシミュレーション装置。
  2. 前記模擬部により転送先のアドレスを指定してデータを転送する命令の実行の模擬が開始された場合、前記メモリに格納され前記共有リソースのアドレスを示す共有リソース情報を参照し、指定されたアドレスと、参照した共有リソース情報が示すアドレスとを比較し、比較の結果に応じて、前記模擬部により前記共有リソースへのアクセスを伴う命令の実行の模擬が開始されたことを検出し、前記中断部に通知を送る検出部
    をさらに備える請求項1に記載のシミュレーション装置。
  3. 前記模擬部は、選択した要素における命令の実行を模擬する度に、模擬の結果に応じて、前記メモリに格納され前記複数の要素における命令の実行状況を示すコンテキスト情報を更新し、
    前記中断部は、前記模擬部により1つの命令の実行が模擬される度に、前記模擬部により次の命令の実行の模擬が開始される前のコンテキスト情報を直前のコンテキスト情報として前記メモリから取得し、前記模擬部により当該次の命令として前記共有リソースへのアクセスを伴う命令の実行の模擬が開始された場合、当該次の命令の実行の模擬を前記模擬部に中断させるとともに、前記メモリに格納されているコンテキスト情報を前記直前のコンテキスト情報に置換する請求項1又は2に記載のシミュレーション装置。
  4. 前記複数の要素は、プロセッサの複数のコアである請求項1から3のいずれか1項に記載のシミュレーション装置。
  5. 前記複数の要素は、複数のプロセッサである請求項1から3のいずれか1項に記載のシミュレーション装置。
  6. プログラムの命令を個別に実行する複数の要素と前記複数の要素からアクセスされる共有リソースとを有するシステムの並列処理の動作を模擬するシミュレーション方法であって、
    模擬部が、前記複数の要素の中から要素を1つずつ繰り返し選択し、選択した要素における命令の実行を模擬し、
    管理部が、前記模擬部により模擬された命令の実行に合わせて、前記模擬部により選択された要素における時間の進行を模擬し、模擬の結果に応じて、メモリに格納され前記複数の要素における時間の進行度を示す時間情報を更新し、
    中断部が、前記模擬部により前記共有リソースへのアクセスを伴う命令の実行の模擬が開始された場合、前記メモリに格納された時間情報が示す前記複数の要素における時間の進行度が同じになるまで、前記模擬部により選択された要素における命令の実行の模擬を中断して別の要素における命令の実行を模擬するよう前記模擬部を制御するシミュレーション方法。
  7. プログラムの命令を個別に実行する複数の要素と前記複数の要素からアクセスされる共有リソースとを有するシステムの並列処理の動作を模擬するシミュレーションプログラムであって、
    コンピュータに、
    前記複数の要素の中から要素を1つずつ繰り返し選択し、選択した要素における命令の実行を模擬する処理と、
    模擬された命令の実行に合わせて、選択された要素における時間の進行を模擬し、模擬の結果に応じて、メモリに格納され前記複数の要素における時間の進行度を示す時間情報を更新する処理と、
    前記共有リソースへのアクセスを伴う命令の実行の模擬が開始された場合、前記メモリに格納された時間情報が示す前記複数の要素における時間の進行度が同じになるまで、選択された要素における命令の実行の模擬を中断して別の要素における命令の実行を模擬する処理と
    を実行させるシミュレーションプログラム。
JP2017546753A 2016-03-17 2016-03-17 シミュレーション装置、シミュレーション方法及びシミュレーションプログラム Expired - Fee Related JP6239212B1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/058471 WO2017158786A1 (ja) 2016-03-17 2016-03-17 シミュレーション装置、シミュレーション方法及びシミュレーションプログラム

Publications (2)

Publication Number Publication Date
JP6239212B1 true JP6239212B1 (ja) 2017-11-29
JPWO2017158786A1 JPWO2017158786A1 (ja) 2018-03-22

Family

ID=59850626

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017546753A Expired - Fee Related JP6239212B1 (ja) 2016-03-17 2016-03-17 シミュレーション装置、シミュレーション方法及びシミュレーションプログラム

Country Status (2)

Country Link
JP (1) JP6239212B1 (ja)
WO (1) WO2017158786A1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007207158A (ja) * 2006-02-06 2007-08-16 Fujitsu Ltd サイクルシミュレーション方法、サイクルシミュレーションプログラム、該プログラムを記録した記録媒体、およびサイクルシミュレータ
JP2008210107A (ja) * 2007-02-26 2008-09-11 Fujitsu Ltd シミュレーション方法及びシミュレーション装置
JP2011203803A (ja) * 2010-03-24 2011-10-13 Toshiba Corp デバッグ支援装置及びデバッグ支援用プログラム
US20120191441A1 (en) * 2011-01-24 2012-07-26 National Tsing Hua University High-Parallelism Synchronization Approach for Multi-Core Instruction-Set Simulation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007207158A (ja) * 2006-02-06 2007-08-16 Fujitsu Ltd サイクルシミュレーション方法、サイクルシミュレーションプログラム、該プログラムを記録した記録媒体、およびサイクルシミュレータ
JP2008210107A (ja) * 2007-02-26 2008-09-11 Fujitsu Ltd シミュレーション方法及びシミュレーション装置
JP2011203803A (ja) * 2010-03-24 2011-10-13 Toshiba Corp デバッグ支援装置及びデバッグ支援用プログラム
US20120191441A1 (en) * 2011-01-24 2012-07-26 National Tsing Hua University High-Parallelism Synchronization Approach for Multi-Core Instruction-Set Simulation

Also Published As

Publication number Publication date
WO2017158786A1 (ja) 2017-09-21
JPWO2017158786A1 (ja) 2018-03-22

Similar Documents

Publication Publication Date Title
TWI410864B (zh) 在一處理環境中控制指令執行
EP2840495B1 (en) Container-based processing method and apparatus
JP6583838B2 (ja) アプリケーションのシミュレーション
JP7118984B2 (ja) ロード命令のメモリ・アクセスを回避するためのコンピュータ実装方法、システム、およびコンピュータ・プログラム
US10102373B2 (en) Method and apparatus for capturing operation in a container-based virtualization system
TW201602806A (zh) 架構模式組態
US7895376B2 (en) Hardware configuration information system, method, and computer program product
US8732427B2 (en) Systems and methods for collapsing a derivative version of a primary storage volume
KR20140018353A (ko) 결합 퍼실리티에서 운영자 메시지 버퍼 관리
US10025608B2 (en) Quiesce handling in multithreaded environments
KR20140004786A (ko) 결합 퍼실리티를 테스트하기 위한 운영자 메시지 커맨드
US10318343B2 (en) Migration methods and apparatuses for migrating virtual machine including locally stored and shared data
KR20140004788A (ko) 운영자 메시지 시작 커맨드 실행
US9665424B2 (en) Recovery improvement for quiesced systems
WO2015039582A1 (zh) 一种虚拟资源分配方法及装置
EP3872630A2 (en) Request processing method and apparatus, electronic device, and computer storage medium
KR20140003634A (ko) 운영자 메시지 커맨드 처리
JP6717008B2 (ja) 情報生成プログラム、情報生成方法及び情報生成装置
JP6239212B1 (ja) シミュレーション装置、シミュレーション方法及びシミュレーションプログラム
US11106478B2 (en) Simulation device, simulation method, and computer readable medium
TWI417786B (zh) 幫助一處理環境中之指令執行的方法、系統及程式產品
JP6223637B2 (ja) シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム
CN114237705A (zh) 验证方法、装置、电子设备和计算机可读存储介质
WO2014141476A1 (ja) プログラマブル表示器、そのプログラム
CN112445587A (zh) 一种任务处理的方法以及任务处理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170904

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20170904

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20170919

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: 20171003

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171031

R150 Certificate of patent or registration of utility model

Ref document number: 6239212

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees