JP6076576B1 - シミュレーション装置およびシミュレーションプログラム - Google Patents

シミュレーション装置およびシミュレーションプログラム Download PDF

Info

Publication number
JP6076576B1
JP6076576B1 JP2016561863A JP2016561863A JP6076576B1 JP 6076576 B1 JP6076576 B1 JP 6076576B1 JP 2016561863 A JP2016561863 A JP 2016561863A JP 2016561863 A JP2016561863 A JP 2016561863A JP 6076576 B1 JP6076576 B1 JP 6076576B1
Authority
JP
Japan
Prior art keywords
execution
input
output
instruction
simulator
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
JP2016561863A
Other languages
English (en)
Other versions
JPWO2017212549A1 (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 JP6076576B1 publication Critical patent/JP6076576B1/ja
Publication of JPWO2017212549A1 publication Critical patent/JPWO2017212549A1/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/36Preventing errors by testing or debugging software

Abstract

実行模擬部(121)は、複数の実行命令を含んだプログラムであって入出力装置を有するターゲットシステムによって実行されるプログラムであるターゲットプログラムに基づいて、実行シミュレータとして機能する。実行シミュレータは、ターゲットシステムによるターゲットプログラムの実行を模擬する。入出力模擬部(131)は、複数の実行命令のうちの入出力命令の実行が模擬される場合に、入出力シミュレータとして機能する。入出力シミュレータは、入出力装置の動作を模擬する。実行模擬部は、実行ログファイルに基づいて、ターゲットプログラムにおける複数の実行命令の実行順とは逆順に、ターゲットプログラムに含まれる実行命令の実行を模擬する。

Description

本発明は、シミュレーションを行う技術に関するものである。
命令セットシミュレーションとIOシミュレーションとを連係して、ターゲットシステムの動作を模擬する技術がある。IOはInputおよびOutputの略称である。
命令セットシミュレーションは、ISS(Instruction Set Simulator)によって命令の実行とプログラムカウンタの操作とを模擬する技術である。
IOシミュレーションは、キーボード、ディスプレイおよび通信装置などの入出力装置の動作を模擬する技術である。
これらのシミュレーションが同一のスレッドで実行される場合、同一のスレッド内でシミュレーションが切り替えられる。これらのシミュレーションが別のスレッドで実行される場合、スレッド呼び出しによってスレッド同士が連携し、これらのシミュレーションが実行される。
シミュレーションの実行中にエラーが発生した場合、エラー要因を特定するには、シミュレーションを複数回再実行して、変数の値およびシステムの動作を確認する必要がある。そのため、エラー要因の特定に時間がかかってしまう。
特に、シミュレーションが開始されてからエラーが発生するまでの時間が長いほど、シミュレーションの再実行に要する時間および確認作業に要する時間が増大する。
さらに、エラー要因を絞り込むために、多くの経験および勘が必要である。そのため、初心者がエラー要因を特定することは困難である。
エラー要因はエラー発生時の命令の近くに存在する場合が多いため、命令を逆順に実行するシミュレーション逆実行を行うことができれば、エラー要因を特定し易くなると考えられる。
シミュレーション逆実行により、シミュレーションを最初から実行し直す必要がなくなるため、エラー要因を特定する際にシミュレーションの実行に要する時間を削減できる。さらに、経験および勘に頼ってエラー要因を絞り込む必要がなくなる。
特許文献1および特許文献2は、命令セットシミュレーションの逆実行に関する技術を開示している。
しかし、これらの特許文献には、命令セットシミュレーションとIOシミュレーションとを連携した場合のシミュレーション逆実行については、開示も示唆もされていない。
そのため、これらの特許文献に記載された技術を用いても、命令セットシミュレーションとIOシミュレーションとを連携した場合のシミュレーション逆実行を実現することはできない。
特開平4−352245号公報 特許第2533489号公報
本発明は、命令セットシミュレーションとIOシミュレーションとを連携してターゲットシステムのシミュレーションを行えるようにすることを目的とする。
本発明のシミュレーション装置は、
複数の実行命令を含んだプログラムであって入出力装置を有するターゲットシステムによって実行されるプログラムであるターゲットプログラムに基づいて、前記ターゲットシステムによる前記ターゲットプログラムの実行を模擬する実行シミュレータとして機能する実行模擬部と、
前記複数の実行命令のうちの入出力命令の実行が模擬される場合に、前記入出力装置の動作を模擬する入出力シミュレータとして機能する入出力模擬部とを備える。
本発明によれば、命令セットシミュレーションに相当する実行シミュレータとIOシミュレーションに相当する入出力シミュレータとを連携してターゲットシステムのシミュレーションを行うことが可能となる。
実施の形態1におけるシミュレーション装置100の構成図。 実施の形態1における記憶部191の構成図。 実施の形態1における実行ログファイル220の構成図。 実施の形態1におけるリソースログファイル230の構成図。 実施の形態1における入出力ログファイル250の構成図。 実施の形態1におけるシミュレーション方法のフローチャート。 実施の形態1における実行模擬処理[順実行]のフローチャート。 実施の形態1における実行ログ生成処理のフローチャート。 実施の形態1における入出力模擬処理[順実行]のフローチャート。 実施の形態1における入出力ログ生成処理のフローチャート。 実施の形態1におけるリソースログ生成処理のフローチャート。 実施の形態1における逆実行方法(S300)のフローチャート。 実施の形態1における逆実行方法(S300)のフローチャート。 実施の形態1における入出力復元処理のフローチャート。 実施の形態1における順実行方法(S200)の具体例を示す図。 実施の形態1における逆実行方法(S300)の具体例を示す図。 実施の形態1における逆実行方法(S300)の具体例を示す図。 実施の形態におけるシミュレーション装置100のハードウェア構成図。
実施の形態および図面において、同じ要素または互いに相当する要素には同じ符号を付している。同じ符号が付された要素の説明は適宜に省略または簡略する。
実施の形態1.
ターゲットシステムによるターゲットプログラムの実行を模擬するシミュレーション装置100について、図1から図17に基づいて説明する。
ターゲットシステムは、シミュレーションの対象となるシステムであり、入出力装置を有する。入出力装置は、キーボードまたはマウスなどの入力装置と、ディスプレイまたは通信装置などの出力装置との総称である。
ターゲットプログラムは、複数の命令を含んだプログラムであって、ターゲットシステムによって実行されるプログラムである。
実施の形態1では、ターゲットプログラムに含まれる命令を実行命令という。また、入出力を伴う実行命令を入出力命令という。
***構成の説明***
図1に基づいて、シミュレーション装置100の構成を説明する。
シミュレーション装置100は、プロセッサ901とメモリ902と補助記憶装置903と入力装置904とディスプレイ905といったハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
プロセッサ901は、プロセッシングを行うIC(Integrated Circuit)であり、他のハードウェアを制御する。具体的には、プロセッサ901は、CPU、DSPまたはGPUである。CPUはCentral Processing Unitの略称であり、DSPはDigital Signal Processorの略称であり、GPUはGraphics Processing Unitの略称である。
メモリ902は揮発性の記憶装置である。メモリ902は、主記憶装置またはメインメモリとも呼ばれる。具体的には、メモリ902はRAM(Random Access Memory)である。
補助記憶装置903は不揮発性の記憶装置である。具体的には、補助記憶装置903は、ROM、HDDまたはフラッシュメモリである。ROMはRead Only Memoryの略称であり、HDDはHard Disk Driveの略称である。
プロセッサ901とメモリ902と補助記憶装置903とをまとめたハードウェアを「プロセッシングサーキットリ」という。
入力装置904は、入力を受け付ける装置である。具体的には、入力装置904は、キーボード、マウス、テンキーまたはタッチパネルである。
ディスプレイ905は、画像等を表示する表示装置である。具体的には、ディスプレイ905は液晶ディスプレイである。ディスプレイ905はモニタともいう。
シミュレーション装置100は、制御部110と実行模擬部121と実行ログ生成部122とリソースログ生成部123と入出力模擬部131と入出力ログ生成部132と実行復元部141とリソース復元部142と入出力復元部143といった「部」を機能構成の要素として備える。「部」の機能はソフトウェアで実現される。「部」の機能については後述する。
補助記憶装置903には、「部」の機能を実現するプログラムが記憶されている。「部」の機能を実現するプログラムは、メモリ902にロードされて、プロセッサ901によって実行される。
さらに、補助記憶装置903にはOS(Operating System)が記憶されている。OSの少なくとも一部は、メモリ902にロードされて、プロセッサ901によって実行される。
つまり、プロセッサ901は、OSを実行しながら、「部」の機能を実現するプログラムを実行する。
「部」の機能を実現するプログラムを実行して得られるデータは、メモリ902、補助記憶装置903、プロセッサ901内のレジスタまたはプロセッサ901内のキャッシュメモリといった記憶装置に記憶される。
メモリ902は、シミュレーション装置100で使用、生成、入力、出力、送信または受信されるデータが記憶される記憶部191として機能する。但し、他の記憶装置が記憶部191として機能してもよい。
入力装置904は入力を受け付ける受付部192として機能する。
ディスプレイ905は画像等を表示する表示部193として機能する。
シミュレーション装置100は、プロセッサ901を代替する複数のプロセッサを備えてもよい。複数のプロセッサは、「部」の機能を実現するプログラムの実行を分担する。
「部」の機能を実現するプログラムは、磁気ディスク、光ディスクまたはフラッシュメモリ等の不揮発性の記憶媒体にコンピュータ読み取り可能に記憶することができる。不揮発性の記憶媒体は、一時的でない有形の媒体である。
「部」は「処理」または「工程」に読み替えてもよい。「部」の機能はファームウェアで実現してもよい。
図2に基づいて、記憶部191の構成を説明する。
記憶部191には、ターゲットプログラム200、実行シミュレータ210、リソースモデル211、実行ログファイル220、リソースログファイル230、入出力シミュレータ240および入出力ログファイル250などが記憶される。
ターゲットプログラム200は、複数の実行命令を含んだプログラムであってターゲットシステムによって実行されるプログラムである。
実行シミュレータ210は、ターゲットシステムによるターゲットプログラム200の実行を模擬するソフトウェアである。実行シミュレータ210には、実行シミュレータ210の状態情報が含まれる。具体的な状態情報は、実行シミュレータ210で用いられる変数である。具体的には、実行シミュレータ210は、命令セットシミュレータまたはCPU命令シミュレータと呼ばれるものである。
リソースモデル211は、ターゲットシステムのリソースを模した擬似的なリソースとして用いられるデータである。リソースモデル211には、擬似的なリソースの状態を示す状態情報が含まれる。具体的には、擬似的なリソースは、擬似レジスタおよび擬似メモリである。疑似レジスタは、ターゲットシステムに備わるレジスタを模した擬似的なレジスタである。疑似メモリは、ターゲットシステムに備わるメモリを模した擬似的なメモリである。
実行ログファイル220は、実行命令の実行が模擬される前の実行シミュレータ210の状態情報を含んだファイルである。
リソースログファイル230は、実行命令の実行が模擬される前のリソースモデル211の状態情報を含んだファイルである。
入出力シミュレータ240は、ターゲットシステムの入出力装置の動作を模擬するソフトウェアである。入出力シミュレータ240には、入出力シミュレータ240の状態情報が含まれる。具体的な状態情報は、入出力シミュレータ240で用いられる変数である。入出力シミュレータ240は、模擬の対象となる入出力装置毎に存在する。
入出力ログファイル250は、入出力命令の実行が模擬される前の入出力シミュレータ240の状態情報を含んだファイルである。入出力ログファイル250は、入出力シミュレータ240毎に存在する。
図3に基づいて、実行ログファイル220の構成を説明する。
実行ログファイル220は、カウンタログテーブル221と状態ログテーブル222と最終番号データ223と最終状態テーブル224とを含む。
カウンタログテーブル221は、ターゲットプログラム200における実行命令の実行順を示すテーブルである。
カウンタログテーブル221には、「実行番号」と「プログラムカウンタ」とが互いに対応付けられる。「実行番号」と「プログラムカウンタ」との組をカウンタログレコードという。
「実行番号」は、実行番号を示す欄である。実行番号は、ターゲットプログラム200における実行命令の実行順を示す番号である。
「プログラムカウンタ」は、プログラムカウンタを示す欄である。プログラムカウンタは、実行命令を識別する情報である。具体的には、プログラムカウンタは、ターゲットプログラム200がロードされた記憶領域の中で実行命令が位置する部分のアドレスである。実施の形態1の説明において、プログラムカウンタという用語は、ターゲットプログラム200用のプログラムカウンタを意味する。
状態ログテーブル222は、実行命令が実行される前の実行シミュレータ210の状態情報と実行命令が実行された後の実行シミュレータ210の状態情報とを示すテーブルである。
状態ログテーブル222には、「実行番号」と「変数」と「更新前」と「更新後」とが互いに対応付けられる。「実行番号」と「変数」と「更新前」と「更新後」との組を状態ログレコードという。
「実行番号」は、実行番号を示す欄である。実行番号は、ターゲットプログラム200における実行命令の実行順を示す番号である。
「変数」は、実行シミュレータ210で用いられる変数の変数名を示す欄である。変数名は、変数を識別する識別子である。
「更新前」は、更新前の変数の値を示す欄である。更新前とは、実行命令が実行される前である。
「更新後」は、更新後の変数の値を示す欄である。更新後とは、実行命令が実行された後である。
最終番号データ223は、最終番号を示すデータである。最終番号は、最終の実行命令の実行順を示す番号である。最終の実行命令は、ターゲットプログラム200において最後に実行される実行命令である。
最終状態テーブル224は、最終の実行命令が実行された後の実行シミュレータ210の状態情報の全体を示すテーブルである。
最終状態テーブル224には、「変数」と「値」とが互いに対応付けられる。「変数」と「値」との組を最終状態レコードという。
「変数」は、実行シミュレータ210で用いられる変数の変数名を示す欄である。
「値」は、実行シミュレータ210で用いられる変数の変数値を示す欄である。変数値は、変数に設定された値である。
図4に基づいて、リソースログファイル230の構成を説明する。
リソースログファイル230は、状態ログテーブル231と最終状態テーブル232とを含む。
状態ログテーブル231は、実行命令が実行される前のリソースモデル211の状態情報と実行命令が実行された後のリソースモデル211の状態情報とを示すテーブルである。
状態ログテーブル231には、「実行番号」と「アドレス」と「更新前」と「更新後」とが互いに対応付けられる。「実行番号」と「アドレス」と「更新前」と「更新後」との組を状態ログレコードという。
「実行番号」は、実行番号を示す欄である。
「アドレス」は、リソースモデル211の状態情報が記憶された記憶領域における更新部分のアドレスである。更新部分は更新された部分である。アドレスは記憶領域内の位置を識別する識別子である。
「更新前」は、更新前の更新部分の値を示す欄である。
「更新後」は、更新後の更新部分の値を示す欄である。
最終状態テーブル232は、最終の実行命令が実行された後のリソースモデル211の状態情報の全体を示すテーブルである。
最終状態テーブル232には、「アドレス」と「値」とが対応付けられる。「アドレス」と「値」との組を最終状態レコードという。
「アドレス」は、リソースモデル211の状態情報が記憶された記憶領域におけるアドレスを示す欄である。
「値」は、設定された値を示す欄である。
図5に基づいて、入出力ログファイル250の構成を説明する。
入出力ログファイル250は、入出力ログテーブル251と状態ログテーブル252と最終状態テーブル253とを含む。
入出力ログテーブル251は、入出力命令が実行される前の入出力シミュレータ240の状態情報と入出力命令が実行された後の入出力シミュレータ240の状態情報とを示すテーブルである。
入出力ログテーブル251には、「入出力番号」と「開始番号」と「終了番号」とが互いに対応付けられる。「入出力番号」と「開始番号」と「終了番号」との組を入出力ログレコードという。
「入出力番号」は、入出力番号を示す欄である。入出力番号は、入出力命令の実行順を示す番号である。
「開始番号」は、入出力命令である実行命令の実行番号である。
「終了番号」は、入出力命令が終了したときに実行されていた実行命令の実行番号である。
状態ログテーブル252は、入出力命令が実行される前の入出力シミュレータ240の状態情報と入出力命令が実行された後の入出力シミュレータ240の状態情報とを示すテーブルである。
状態ログテーブル252には、「入出力番号」と「変数」と「更新前」と「更新後」とが互いに対応付けられる。「入出力番号」と「変数」と「更新前」と「更新後」との組を状態ログレコードという。
「入出力番号」は、入出力番号を示す欄である。
「変数」は、入出力シミュレータ240で用いられる変数の変数名を示す欄である。
「更新前」は、更新前の変数の値を示す欄である。
「更新後」は、更新後の変数の値を示す欄である。
最終状態テーブル253は、最終の入出力命令が実行された後の入出力シミュレータ240の状態情報の全体を示すテーブルである。
最終状態テーブル253には、「変数」と「値」とが互いに対応付けられる。「変数」と「値」との組を最終状態レコードという。
「変数」は、入出力シミュレータ240で用いられる変数の変数名を示す欄である。
「値」は、入出力シミュレータ240で用いられる変数の変数値を示す欄である。
***動作の説明***
シミュレーション装置100の動作はシミュレーション方法に相当する。また、シミュレーション方法の手順はシミュレーションプログラムの手順に相当する。
図6に基づいて、シミュレーション方法を説明する。
ステップS101において、制御部110は、順実行と逆実行とのいずれの実行方法でシミュレーションを実行するか判定する。
順実行は、ターゲットプログラム200に含まれる複数の実行命令の実行順に、ターゲットプログラム200に含まれる実行命令の実行を模擬する実行方法である。
逆実行は、ターゲットプログラム200に含まれる複数の実行命令の実行順とは逆順に、ターゲットプログラム200に含まれる実行命令の実行を模擬する実行方法である。
具体的には、実行方法は以下のように判定される。
まず、利用者は、入力装置904を操作して、順実行または逆実行を実行方法としてシミュレーション装置100に入力する。但し、逆実行は、順実行が行われる前に指定することはできず、順実行が行われた後に指定することが可能となる。
次に、受付部192は、入力された実行方法を受け付ける。
そして、制御部110は、受け付けられた実行方法が順実行と逆実行とのいずれであるか判定する。
実行方法が順実行であると判定された場合、処理はステップS200に進む。
実行方法が逆実行であると判定された場合、処理はステップS300に進む。
ステップS200は順実行方法である。
ステップS200において、制御部110は、実行模擬部121と実行ログ生成部122とリソースログ生成部123と入出力模擬部131と入出力ログ生成部132とを起動する。起動された要素は、以下のように動作する。
実行模擬部121は、ターゲットプログラム200に基づいて、実行シミュレータ210として機能する。
具体的には、実行模擬部121は、ターゲットプログラム200における複数の実行命令の実行順に、ターゲットプログラム200に含まれる実行命令の実行を模擬する。
実行模擬部121の動作の詳細については後述する。
実行ログ生成部122は、実行ログファイル220を生成する。
具体的には、実行ログ生成部122は、ターゲットプログラム200に含まれる実行命令の実行が模擬される毎に、実行命令の実行が模擬される前の実行シミュレータ210の状態情報などを、実行ログファイル220に登録する。
実行ログ生成部122の動作の詳細については後述する。
リソースログ生成部123は、リソースログファイル230を生成する。
具体的には、リソースログ生成部123は、ターゲットプログラム200に含まれる実行命令の実行が模擬される毎に、実行命令の実行が模擬される前のリソースモデル211の状態情報などを、リソースログファイル230に登録する。
リソースログ生成部123の動作の詳細については後述する。
入出力模擬部131は、入出力命令の実行が模擬される場合に、入出力シミュレータ240として機能する。
入出力模擬部131の動作の詳細については後述する。
入出力ログ生成部132は、入出力ログファイル250を生成する。
具体的には、入出力ログ生成部132は、入出力命令の実行が模擬される場合に、入出力命令の実行が模擬される前の入出力シミュレータ240の状態情報を入出力ログファイル250に登録する。
入出力ログ生成部132の動作の詳細については後述する。
ステップS300は逆実行方法である。
ステップS300において、制御部110は、実行模擬部121と入出力模擬部131と実行復元部141とリソース復元部142と入出力復元部143とを起動する。起動された要素は、以下のように動作する。
実行模擬部121は、ターゲットプログラム200に基づいて、実行シミュレータ210として機能する。
具体的には、実行模擬部121は、実行ログファイル220に基づいて、ターゲットプログラム200における複数の実行命令の実行順とは逆順に、ターゲットプログラム200に含まれる実行命令の実行を模擬する。
実行命令の実行は、以下のように模擬される。
まず、実行復元部141は、実行ログファイル220を用いて、実行命令の実行が模擬される前の実行シミュレータ210の状態情報を復元する。
また、リソース復元部142は、リソースログファイル230を用いて、実行命令の実行が模擬される前のリソースモデル211の状態情報を復元する。
そして、実行模擬部121は、実行シミュレータ210の復元された状態情報とリソースモデル211の復元された状態情報とを用いて、実行命令の実行を模擬する。
実行復元部141とリソース復元部142と実行模擬部121とのそれぞれの動作の詳細については後述する。
入出力模擬部131は、入出力命令の実行が模擬される場合に、入出力シミュレータ240として機能する。そして、入出力模擬部131は、入出力装置の動作を模擬する。
具体的には、入出力装置の動作は、以下のように模擬される。
まず、入出力復元部143は、入出力シミュレータ240を用いて、入出力命令の実行が模擬される前の入出力シミュレータ240の状態情報を復元する。
そして、入出力模擬部131は、入出力シミュレータ240の復元された状態情報を用いて、入出力装置の動作を模擬する。
入出力復元部143と入出力模擬部131とのそれぞれの動作の詳細については後述する。
ステップS102において、制御部110は、実行方法の変更の要否を判定する。実行方法の変更は、順実行のシミュレーションが行われた後に逆実行のシミュレーションを行うこと、および、逆実行のシミュレーションが行われた後に順実行のシミュレーションを行うことを意味する。
具体的には、実行方法の変更の要否は以下のように判定される。
実行方法の変更を希望する利用者は、入力装置904を操作して、変更指示をシミュレーション装置100に入力する。実行方法の変更を希望しない利用者は、入力装置904を操作して、終了指示をシミュレーション装置100に入力する。
受付部192は、入力された変更指示または終了指示を受け付ける。
変更指示が受け付けられた場合、制御部110は、実行方法の変更が必要であると判定する。
終了指示が受け付けられた場合、制御部110は、実行方法の変更が不要であると判定する。
実行方法の変更が必要であると判定された場合、処理はステップ101に進む。順実行のシミュレーションの後であれば、ステップS101において、制御部110は、実行方法が逆実行であると判定する。逆実行のシミュレーションの後であれば、ステップS101において、制御部110は、実行方法が順実行であると判定する。
実行方法の変更が不要であると判定された場合、処理は終了する。
図7に基づいて、実行模擬処理[順実行]を説明する。
実行模擬処理[順実行]は、順実行方法(S200)において実行される。
実行模擬処理[順実行]において、実行模擬部121は、実行シミュレータ210として機能する。
ステップS201において、実行シミュレータ210は、プログラムカウンタを初期化する。
具体的には、実行シミュレータ210は、ターゲットプログラム200の先頭のアドレスをプログラムカウンタに設定する。
ステップS202において、実行シミュレータ210は、プログラムカウンタに対応する実行命令をターゲットプログラム200から読み出す。
プログラムカウンタに対応する実行命令とは、プログラムカウンタが示すアドレスで識別される記憶領域に書き込まれた実行命令である。
ステップS203において、実行シミュレータ210は、読み出された実行命令の実行を模擬する。そして、表示部193は、模擬結果を表示する。
実行命令の実行が模擬されることによって、実行命令に応じてリソースモデル211が更新され、模擬結果に応じて実行シミュレータ210の状態情報が更新される。
入出力命令の実行が模擬される場合、実行シミュレータ210は、リソースモデル211の中の入出力要求領域に要求情報を書き込む。入出力領域は、入出力の要求に用いられる記憶領域である。要求情報は、入出力の内容を示す情報である。
ステップS204において、実行シミュレータ210は、ステップS202で読み出した実行命令が最終の実行命令であるか判定する。
ステップS202で読み出した実行命令が最終の実行命令である場合、実行模擬部121は模擬終了を実行ログ生成部122に通知する。そして、処理は終了する。
ステップS202で読み出した実行命令が最終の実行命令でない場合、処理はステップS205に進む。
ステップS205において、実行シミュレータ210は、プログラムカウンタを次のアドレスに更新する。
ステップS205の後、処理はステップS202に進む。
図8に基づいて、実行ログ生成処理を説明する。
実行ログ生成処理は、順実行方法(S200)において実行される。
ステップS211は、実行ログ生成部122の起動時に実行される。
ステップS211において、実行ログ生成部122は、実行番号に1を設定する。
ステップS212は、プログラムカウンタの初期化時(図7のS201)および更新時(図7のS205)に実行される。具体的には、実行ログ生成部122は、プログラムカウンタを監視する。そして、実行ログ生成部122は、プログラムカウンタが更新されたときにステップS212を実行する。
ステップS212において、実行ログ生成部122は、カウンタログテーブル221を更新する。
具体的には、実行ログ生成部122は、カウンタログレコードを生成し、生成されたカウンタログレコードをカウンタログテーブル221に登録する。
ステップS213は、実行命令の実行が模擬されたとき(図7のS203)に実行される。
ステップS213において、実行ログ生成部122は、実行シミュレータ210の状態が変化したか判定する。
具体的には、実行ログ生成部122は、実行シミュレータ210の状態情報を監視し、実行シミュレータ210の状態情報の更新を検出する。実行シミュレータ210の状態情報の更新が検出された場合、実行ログ生成部122は、実行シミュレータ210の状態が変化したと判定する。
実行シミュレータ210の状態が変化したと判定された場合、処理はステップS214に進む。
実行シミュレータ210の状態が変化しなかったと判定された場合、処理はステップS215に進む。
ステップS214において、実行ログ生成部122は、状態ログテーブル222を更新する。
具体的には、実行ログ生成部122は、状態ログレコードを生成し、生成された状態ログレコードを状態ログテーブル222に登録する。
ステップS215において、実行ログ生成部122は、ターゲットプログラム200の模擬が終了したか判定する。ターゲットプログラム200の模擬とは、ターゲットシステムによるターゲットプログラム200の実行を模擬することである。
具体的には、制御部110から模擬終了が通知された場合に、実行ログ生成部122は、ターゲットプログラム200の模擬が終了したと判定する。
ターゲットプログラム200の模擬が終了したと判定された場合、処理はステップS217に進む。
ターゲットプログラム200の模擬が終了していないと判定された場合、処理はステップS216に進む。
ステップS216において、実行ログ生成部122は、実行番号の値を1増やす。
ステップS216の後、処理はステップS212に進む。
ステップS217において、実行ログ生成部122は、最終番号データ223と最終状態テーブル224とを更新する。
具体的には、実行ログ生成部122は、最終番号データ223に示される最終番号の値を実行番号の値に変更する。さらに、実行ログ生成部122は、実行シミュレータ210の状態情報毎に最終状態レコードを生成し、生成された最終状態レコードを最終状態テーブル224に登録する。
図9に基づいて、入出力模擬処理[順実行]を説明する。
入出力模擬処理[順実行]は、順実行方法(S200)において実行される。
入出力模擬処理[順実行]において、入出力模擬部131は、入出力シミュレータ240として機能する。
ステップS221からステップS223は、リソースモデル211の中の入出力要求領域に要求情報が書き込まれたとき(図7のS203)に実行される。
ステップS221において、入出力シミュレータ240は、入出力要求を監視し、入出力要求領域への要求情報の書込みを検出する。
ステップS222において、入出力シミュレータ240は、入出力要求領域に書き込まれた要求情報に基づいて、入出力装置の動作を模擬する。そして、表示部193は、模擬結果を表示する。
ステップS223において、入出力シミュレータ240は、リソースモデル211の中の入出力応答領域に応答情報を書き込む。入出力応答領域は、入出力の応答に用いられる記憶領域である。応答情報は、入出力の終了を通知する情報である。
図10に基づいて、入出力ログ生成処理を説明する。
入出力ログ生成処理は、順実行方法(S200)において実行される。
ステップS231は、入出力ログ生成部132の起動時に実行される。
ステップS231において、入出力ログ生成部132は、入出力番号に1を設定する。
ステップS232は、リソースモデル211の中の入出力要求領域への書込み時(図7のS203)に実行される。具体的には、入出力ログ生成部132は、入出力要求を監視する。そして、入出力ログ生成部132は、入出力要求への書込みを検出したときにステップS232を実行する。
ステップS232において、入出力ログ生成部132は、入出力ログテーブル251を更新する。
具体的には、入出力ログ生成部132は、入出力番号と開始番号とが設定された入出力ログレコードを生成し、生成された入出力ログレコードを入出力ログテーブル251に登録する。
ステップS233は、入出力装置の動作が模擬されたとき(図9のS222)に実行される。
ステップS233において、入出力ログ生成部132は、入出力シミュレータ240の状態が変化したか判定する。
具体的には、入出力ログ生成部132は、入出力シミュレータ240の状態情報を監視し、入出力シミュレータ240の状態情報の更新を検出する。入出力シミュレータ240の状態情報の更新が検出された場合、入出力ログ生成部132は、入出力シミュレータ240の状態が変化したと判定する。
入出力シミュレータ240の状態が変化したと判定された場合、処理はステップS234に進む。
入出力シミュレータ240の状態が変化しなかったと判定された場合、処理はステップS235に進む。
ステップS234において、入出力ログ生成部132は、状態ログテーブル252を更新する。
具体的には、入出力ログ生成部132は、状態ログレコードを生成し、生成された状態ログレコードを状態ログテーブル252に登録する。
ステップS235において、入出力ログ生成部132は、入出力ログテーブル251を更新する。
具体的には、入出力ログ生成部132は、ステップS232で入出力ログテーブル251に登録した入出力ログレコードに終了番号を設定する。
ステップS236において、入出力ログ生成部132は、ターゲットプログラム200の模擬が終了したか判定する。
具体的には、制御部110から模擬終了が通知された場合に、入出力ログ生成部132は、ターゲットプログラム200の模擬が終了したと判定する。
ターゲットプログラム200の模擬が終了したと判定された場合、処理はステップS238に進む。
ターゲットプログラム200の模擬が終了していないと判定された場合、処理はステップS237に進む。
ステップS237において、入出力ログ生成部132は、入出力番号の値を1増やす。
ステップS237の後、処理はステップS232に進む。
ステップS238において、入出力ログ生成部132は、最終状態テーブル253を更新する。
具体的には、入出力ログ生成部132は、入出力シミュレータ240の状態情報毎に最終状態レコードを生成し、生成された最終状態レコードを最終状態テーブル253に登録する。
図11に基づいて、リソースログ生成処理を説明する。
リソースログ生成処理は、順実行方法(S200)において実行される。
ステップS241において、リソースログ生成部123は、リソースモデル211の状態が変化したか判定する。
具体的には、リソースログ生成部123は、リソースモデル211の状態情報を監視し、リソースモデル211の状態情報の更新を検出する。リソースモデル211の状態情報の更新が検出された場合、リソースログ生成部123は、リソースモデル211の状態が変化したと判定する。
リソースモデル211の状態が変化したと判定された場合、処理はステップS242に進む。
リソースモデル211の状態が変化しなかったと判定された場合、処理はステップS243に進む。
ステップS242において、リソースログ生成部123は、状態ログテーブル231を更新する。
具体的には、リソースログ生成部123は、状態ログレコードを生成し、生成された状態ログレコードを状態ログテーブル231に登録する。
ステップS243において、リソースログ生成部123は、ターゲットプログラム200の模擬が終了したか判定する。
具体的には、制御部110から模擬終了が通知された場合に、リソースログ生成部123は、ターゲットプログラム200の模擬が終了したと判定する。
ターゲットプログラム200の模擬が終了したと判定された場合、処理はステップS244に進む。
ターゲットプログラム200の模擬が終了していないと判定された場合、処理はステップS241に進む。
ステップS244において、リソースログ生成部123は、最終状態テーブル232を更新する。
具体的には、リソースログ生成部123は、リソースモデル211の状態情報毎に最終状態レコードを生成し、生成された最終状態レコードを最終状態テーブル232に登録する。
図12および図13に基づいて、逆実行方法(S300)の手順を説明する。
逆実行方法(S300)において、実行復元部141による処理を実行復元処理といい、リソース復元部142による処理をリソース復元処理といい、入出力復元部143による処理を入出力復元処理という。また、実行模擬部121による処理を実行模擬処理[逆実行]といい、入出力模擬部131による処理を入出力模擬処理[逆実行]という。
図12のステップS301において、実行復元部141は、実行ログファイル220に基づいて、実行シミュレータ210の最終状態を復元する。
具体的には、実行復元部141は、最終状態テーブル224を用いて、実行シミュレータ210の状態情報を更新する。
さらに、リソース復元部142は、リソースログファイル230に基づいて、リソースモデル211の最終状態を復元する。
具体的には、リソース復元部142は、最終状態テーブル232を用いて、リソースモデル211の状態情報を更新する。
ステップS302において、制御部110は、実行番号に最終番号の値を設定する。
具体的には、実行復元部141は、最終番号データ223から最終番号を読み出し、実行番号の値を最終番号の値に更新する。
ステップS311において、実行復元部141は、実行ログファイル220に基づいて、実行シミュレータ210の前状態を復元する。前状態とは、実行番号に対応する実行命令の実行が模擬される前の状態である。
具体的には、実行復元部141は、状態ログテーブル222から、ステップS302またはステップS323で更新された実行番号と同じ実行番号を含んだ状態ログレコードを選択する。そして、実行復元部141は、選択された状態ログレコードに含まれる更新前の値を用いて、実行シミュレータ210の状態情報を更新する。更新される状態情報は、選択された状態ログレコードに含まれる変数名で識別される変数である。該当する状態ログレコードがない場合、実行復元部141は、実行シミュレータ210の状態情報を更新しない。
さらに、リソース復元部142は、リソースログファイル230に基づいて、リソースモデル211の前状態を復元する。
具体的には、リソース復元部142は、状態ログテーブル231から、ステップS302またはステップS323で更新された実行番号と同じ実行番号を含んだ状態ログレコードを選択する。そして、リソース復元部142は、選択された状態ログレコードに含まれる更新前の値を用いて、リソースモデル211の状態情報を更新する。更新される状態情報は、選択された状態ログレコードに含まれるアドレスに対応するデータである。アドレスに対応するデータとは、アドレスで識別される記憶領域に記憶されたデータである。該当する状態ログレコードがない場合、リソース復元部142は、リソースモデル211の状態情報を更新しない。
ステップS312において、制御部110は、入出力ログファイル250に基づいて、実行番号に対応する実行命令が入出力命令であるか判定する。
具体的には、制御部110は、入出力ログテーブル251から、実行番号と同じ値の開始番号を含んだ入出力ログレコードを検索する。該当する入出力ログレコードがある場合、制御部110は、実行番号に対応する実行命令が入出力命令であると判定する。
実行番号に対応する実行命令が入出力命令であると判定された場合、処理は図13のステップS331に進む。
実行番号に対応する実行命令が入出力命令でないと判定された場合、処理はステップS313に進む。
ステップS313において、実行模擬部121は実行シミュレータ210として機能し、実行シミュレータ210は実行番号に対応する実行命令を模擬する。
具体的には、実行番号に対応する実行命令は、以下のように模擬される。
まず、制御部110は、カウンタログテーブル221から、ステップS302またはステップS323で更新された実行番号と同じ実行番号を含んだカウンタログレコードを選択する。
次に、実行シミュレータ210は、ターゲットプログラム200用のプログラムカウンタの値を、選択されたカウンタログレコードに含まれるプログラムカウンタの値に更新する。
そして、実行シミュレータ210は、更新されたプログラムカウンタに対応する実行命令をターゲットプログラム200から読み出し、読み出された実行命令の実行を模擬する。また、表示部193は、模擬結果を表示する。
ステップS321において、実行復元部141は、実行ログファイル220に基づいて、実行シミュレータ210の前状態を復元する。
さらに、リソース復元部142は、リソースログファイル230に基づいて、リソースモデル211の前状態を復元する。
前状態を復元する方法は、ステップS311と同じである。
ステップS322において、制御部110は、実行番号に対応する実行命令が先頭命令であるか判定する。先頭命令は、ターゲットプログラム200における1番目の実行命令である。実行番号の値が1である場合、制御部110は、実行番号に対応する実行命令が先頭命令であると判定する。
実行番号に対応する実行命令が先頭命令であると判定された場合、処理は終了する。
実行番号に対応する実行命令が先頭番号でないと判定された場合、処理はステップS323に進む。
ステップS323において、制御部110は、実行番号の値を1減らす。
ステップS323の後、処理はステップS311に進む。
図13のステップS331において、制御部110は、入出力状態の復元を入出力復元部143に要求する。入出力状態の復元とは、入出力シミュレータ240の状態情報を復元することである。具体的には、制御部110は、入出力復元部143を呼び出す。
ステップS332において、制御部110は、復元の終了を確認する。
具体的には、制御部110は、入出力復元部143から終了通知を受ける。
ステップS333において、実行復元部141は実行シミュレータ210として機能し、実行シミュレータ210は入出力命令の実行を模擬する。そして、表示部193は、模擬結果を表示する。
さらに、入出力模擬部131は入出力シミュレータ240として機能し、入出力シミュレータ240は入出力装置の動作を模擬する。そして、表示部193は、模擬結果を表示する。
具体的には、実行シミュレータ210および入出力シミュレータ240は、以下のように動作する。
まず、実行シミュレータ210は、入出力命令の実行を模擬し、リソースモデル211の中の入出力要求領域に要求情報を書き込む。
次に、入出力シミュレータ240は、入出力要求領域への要求情報の書込みを検出し、要求情報に基づいて、入出力装置の動作を模擬する。
そして、入出力シミュレータ240は、リソースモデル211の中の入出力応答領域に応答情報を書き込む。
ステップS333の後、制御部110は模擬終了を入出力復元部143に通知し、処理は図12のステップS321に進む。
図14に基づいて、入出力復元処理を説明する。
入出力復元処理は、逆実行方法(S300)において実行される。
ステップS341は、入出力復元部143が起動されたときに実行される。
ステップS341において、入出力復元部143は、入出力ログファイル250に基づいて、入出力シミュレータ240の最終状態を復元する。
具体的には、入出力復元部143は、最終状態テーブル253を用いて、入出力シミュレータ240の状態情報を更新する。
ステップS342からステップS344は、入出力状態の復元が要求されたとき(図13のS331)に実行される。
ステップS342において、入出力復元部143は、復元要求を検出する。
具体的には、入出力復元部143は、制御部110から呼び出される。
ステップS343において、入出力復元部143は、入出力ログファイル250に基づいて、入出力シミュレータ240の前状態を復元する。
具体的には、入出力復元部143は、以下のように入出力シミュレータ240の前状態を復元する。
まず、入出力復元部143は、入出力ログテーブル251から、実行番号と同じ値の開始番号を含んだ入出力ログレコードを選択する。
次に、入出力復元部143は、選択された入出力ログレコードから、入出力番号を読み出す。
次に、入出力復元部143は、状態ログテーブル252から、読み出された入出力番号と同じ入出力番号を含んだ状態ログレコードを選択する。
そして、入出力復元部143は、選択された状態ログレコードに含まれる更新前の値を用いて、入出力シミュレータ240の状態情報を更新する。更新される状態情報は、選択された状態ログレコードに含まれる変数名で識別される変数である。該当する状態ログレコードがない場合、入出力復元部143は、入出力シミュレータ240の状態情報を更新しない。
ステップS344において、入出力復元部143は、復元の終了を制御部110に通知する。
ステップS345は、入出力命令の実行が模擬された後(図13のS333)に実行される。具体的には、入出力復元部143は、制御部110から模擬終了が通知されたときに、ステップS345を実行する。
ステップS345において、入出力復元部143は、入出力ログファイル250に基づいて、入出力シミュレータ240の前状態を復元する。前状態を復元する方法は、ステップS343と同じである。
ステップS346において、入出力復元部143は、ターゲットプログラム200の逆実行が終了したか判定する。ターゲットプログラム200の逆実行とは、ターゲットプログラム200に含まれる実行命令を逆順に模擬することである。
具体的には、制御部110から逆実行終了が通知された場合に、入出力復元部143は、ターゲットプログラム200の逆実行が終了したと判定する。
ターゲットプログラム200の逆実行が終了したと判定された場合、処理は終了する。
ターゲットプログラム200の逆実行が終了していないと判定された場合、処理はステップS342に戻る。
図15に基づいて、順実行方法(S200)の具体例を説明する。
実行シミュレータ210は、命令1から命令8まで順番に実行命令の実行を模擬する。
実行ログ生成部122は、命令1から命令8までの実行命令が模擬される間、実行ログを収集する。その結果、図3に示すような実行ログファイル220が得られる。
命令2、命令5および命令6は入出力命令である。
命令2、命令5または命令6の実行が模擬される場合、実行シミュレータ210は、リソースモデル211の中の入出力要求領域への書込みを行う。
入出力要求領域への書込みが行われた場合、入出力シミュレータ240は、入出力装置の動作を模擬する。IO1およびIO2は模擬される入出力である。
IO1またはIO2が終了した場合、入出力シミュレータ240は、リソースモデル211の中の入出力応答領域への書込みを行う。
入出力ログ生成部132は、IO1およびIO2が模擬されている間、入出力ログを収集する。その結果、図5に示すような入出力ログファイル250が得られる。
リソースログ生成部123は、命令2から命令8までの実行命令が模擬される間、リソースログを収集する。その結果、図4に示すようなリソースログファイル230が得られる。
図16および図17に基づいて、逆実行方法(S300)の具体例を説明する。
図16において、実行復元部141は、命令8の実行が模擬される前の実行シミュレータ210の状態情報を復元する。また、リソース復元部142は、命令8の実行が模擬される前のリソースモデル211の状態情報を復元する。
そして、実行シミュレータ210は、命令8の実行を模擬する。
次に、実行復元部141は、命令7の実行が模擬される前の実行シミュレータ210の状態情報を復元する。また、リソース復元部142は、命令7の実行が模擬される前のリソースモデル211の状態情報を復元する。
そして、実行シミュレータ210は、命令7の実行を模擬する。
図17において、実行復元部141は、命令6の実行が模擬される前の実行シミュレータ210の状態情報を復元する。また、リソース復元部142は、命令6の実行が模擬される前のリソースモデル211の状態情報を復元する。
そして、実行シミュレータ210は、命令6の実行を模擬する。
また、入出力復元部143は、命令6の実行が模擬される前の入出力シミュレータ240の状態情報を復元する。
そして、入出力シミュレータ240は、IO2を模擬する。
次に、実行復元部141は、命令6の実行が模擬される前の実行シミュレータ210の状態情報を復元する。また、リソース復元部142は、命令6の実行が模擬される前のリソースモデル211の状態情報を復元する。
そして、実行シミュレータ210は、命令6の実行を模擬する。
その後、同様にして、命令4から命令1まで逆順に実行命令の実行が模擬される。また、命令2が模擬されるときにIO1が模擬される。
***実施の形態1の効果***
命令セットシミュレーションとIOシミュレーションとを連携してターゲットシステムのシミュレーションを行うことが可能となる。
逆実行方法(S300)により、シミュレーションを最初から実行し直す必要がなくなるため、エラー要因を特定する際にシミュレーションの実行に要する時間を削減できる。さらに、経験および勘に頼ってエラー要因を絞りこむ必要がなくなる。したがって、デバッグの効率が向上する。
***他の構成***
実行シミュレータ210および入出力シミュレータ240は、ハードウェアで実現されたシミュレータであってもよい。
実行シミュレータ210と入出力シミュレータ240とは、別のスレッドで実行されてもよいし、同一のスレッドで実行されてもよい。
***実施の形態の補足***
実施の形態において、シミュレーション装置100の機能はハードウェアで実現してもよい。
図18に、シミュレーション装置100の機能がハードウェアで実現される場合の構成を示す。
シミュレーション装置100は処理回路990を備える。処理回路990はプロセッシングサーキットリともいう。
処理回路990は、制御部110と実行模擬部121と実行ログ生成部122とリソースログ生成部123と入出力模擬部131と入出力ログ生成部132と実行復元部141とリソース復元部142と入出力復元部143と記憶部191といった「部」の機能を実現する専用の電子回路である。
具体的には、処理回路990は、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA、ASIC、FPGAまたはこれらの組み合わせである。GAはGate Arrayの略称であり、ASICはApplication Specific Integrated Circuitの略称であり、FPGAはField Programmable Gate Arrayの略称である。
シミュレーション装置100は、処理回路990を代替する複数の処理回路を備えてもよい。複数の処理回路は、「部」の機能を分担する。
シミュレーション装置100の機能は、ソフトウェアとハードウェアとの組み合わせで実現してもよい。つまり、「部」の機能の一部をソフトウェアで実現し、「部」の機能の残りをハードウェアで実現してもよい。
実施の形態は、好ましい形態の例示であり、本発明の技術的範囲を制限することを意図するものではない。実施の形態は、部分的に実施してもよいし、他の形態と組み合わせて実施してもよい。フローチャート等を用いて説明した手順は、適宜に変更してもよい。
100 シミュレーション装置、110 制御部、121 実行模擬部、122 実行ログ生成部、123 リソースログ生成部、131 入出力模擬部、132 入出力ログ生成部、141 実行復元部、142 リソース復元部、143 入出力復元部、191 記憶部、192 受付部、193 表示部、200 ターゲットプログラム、210 実行シミュレータ、211 リソースモデル、220 実行ログファイル、221 カウンタログテーブル、222 状態ログテーブル、223 最終番号データ、224 最終状態テーブル、230 リソースログファイル、231 状態ログテーブル、232 最終状態テーブル、240 入出力シミュレータ、250 入出力ログファイル、251 入出力ログテーブル、252 状態ログテーブル、253 最終状態テーブル、901 プロセッサ、902 メモリ、903 補助記憶装置、904 入力装置、905 ディスプレイ、990 処理回路。

Claims (7)

  1. 複数の実行命令を含んだプログラムであって入出力装置を有するターゲットシステムによって実行されるプログラムであるターゲットプログラムに基づいて、前記ターゲットシステムによる前記ターゲットプログラムの実行を模擬する実行シミュレータとして機能する実行模擬部と、
    前記複数の実行命令のうちの入出力命令の実行が模擬される場合に、前記入出力装置の動作を模擬する入出力シミュレータとして機能する入出力模擬部と
    実行命令の実行が模擬される前の実行シミュレータの状態情報を含んだ実行ログファイルと、入出力命令の実行が模擬される前の入出力シミュレータの状態情報を含んだ入出力ログファイルとを記憶する記憶部と、
    入出力命令の実行が模擬される場合に、前記入出力ログファイルを用いて、入出力命令の実行が模擬される前の前記入出力シミュレータの状態情報を復元する入出力復元部と、
    前記ターゲットプログラムにおける前記複数の実行命令の実行順とは逆順に、次の実行命令が入出力命令であるか、前記入出力ログファイルに基づいて判定する制御部とを備え、
    前記入出力復元部は、逆順における前記次の実行命令が入出力命令であると判定された後に、前記入出力ログファイルを用いて、前記次の実行命令の実行が模擬される前の前記入出力シミュレータの状態情報を復元し、
    前記実行模擬部は、前記次の実行命令の実行が模擬される前の前記入出力シミュレータの状態情報が復元された後に、前記実行ログファイルに基づいて、前記次の実行命令である入出力命令の実行を模擬し、入出力要求領域に要求情報を書き込み、
    前記入出力模擬部は、前記入出力要求領域への前記要求情報の書込みを検出し、前記入出力シミュレータの復元された状態情報を用いて、前記要求情報に基づいて前記入出力装置の動作を模擬する
    シミュレーション装置。
  2. 前記シミュレーション装置は、前記入出力ログファイルを生成する入出力ログ生成部を備え、
    前記実行模擬部は、前記ターゲットプログラムにおける前記複数の実行命令の実行順に、前記ターゲットプログラムに含まれる実行命令の実行を模擬し、
    前記入出力ログ生成部は、入出力命令の実行が模擬される場合に、入出力命令の実行が模擬される前の前記入出力シミュレータの状態情報を前記入出力ログファイルに登録する
    請求項に記載のシミュレーション装置。
  3. 前記シミュレーション装置は、実行命令の実行が模擬される場合に、前記実行ログファイルを用いて、実行命令の実行が模擬される前の前記実行シミュレータの状態情報を復元する実行復元部を備え、
    前記実行模擬部は、前記実行シミュレータの復元された状態情報を用いて、実行命令の実行を模擬する
    請求項1または請求項に記載のシミュレーション装置。
  4. 前記シミュレーション装置は、前記実行ログファイルを生成する実行ログ生成部を備え、
    前記実行模擬部は、前記ターゲットプログラムにおける前記複数の実行命令の実行順に、前記ターゲットプログラムに含まれる実行命令の実行を模擬し、
    前記実行ログ生成部は、実行命令の実行が模擬される場合に、実行命令の実行が模擬される前の前記実行シミュレータの状態情報を前記実行ログファイルに登録する
    請求項に記載のシミュレーション装置。
  5. 前記記憶部は、前記ターゲットシステムにおけるリソースモデルと、実行命令の実行が模擬される前の前記リソースモデルの状態情報を含んだリソースログファイルとを記憶し、
    前記シミュレーション装置は、実行命令の実行が模擬される場合に、前記リソースログファイルを用いて、実行命令の実行が模擬される前の前記リソースモデルの状態情報を復元するリソース復元部を備え、
    前記実行模擬部は、前記実行シミュレータの復元された状態情報と前記リソースモデルの復元された状態情報とを用いて実行命令の実行を模擬する
    請求項または請求項に記載のシミュレーション装置。
  6. 前記シミュレーション装置は、前記リソースログファイルを生成するリソースログ生成部を備え、
    前記実行模擬部は、前記ターゲットプログラムにおける前記複数の実行命令の実行順に、前記ターゲットプログラムに含まれる実行命令の実行を模擬し、
    前記リソースログ生成部は、実行命令の実行が模擬される場合に、実行命令の実行が模擬される前の前記リソースモデルの状態情報を前記リソースログファイルに登録する
    請求項に記載のシミュレーション装置。
  7. 複数の実行命令を含んだプログラムであって入出力装置を有するターゲットシステムによって実行されるプログラムであるターゲットプログラムに基づいて、前記ターゲットシステムによる前記ターゲットプログラムの実行を模擬する実行シミュレータとして機能する実行模擬処理と、
    前記複数の実行命令のうちの入出力命令の実行が模擬される場合に、前記入出力装置の動作を模擬する入出力シミュレータとして機能する入出力模擬処理と
    入出力命令の実行が模擬される前の入出力シミュレータの状態情報を含んだ入出力ログファイルを用いて、入出力命令の実行が模擬される場合に入出力命令の実行が模擬される前の前記入出力シミュレータの状態情報を復元する入出力復元処理と、
    前記ターゲットプログラムにおける前記複数の実行命令の実行順とは逆順に、次の実行命令が入出力命令であるか、前記入出力ログファイルに基づいて判定する判定処理と
    をコンピュータに実行させるためのシミュレーションプログラムであって、
    前記入出力復元処理によって、逆順における前記次の実行命令が入出力命令であると判定された後に、前記入出力ログファイルを用いて、前記次の実行命令の実行が模擬される前の前記入出力シミュレータの状態情報を復元し、
    前記実行模擬処理によって、前記次の実行命令の実行が模擬される前の前記入出力シミュレータの状態情報が復元された後に、実行命令の実行が模擬される前の実行シミュレータの状態情報を含んだ実行ログファイルに基づいて、前記次の実行命令である入出力命令の実行を模擬し、入出力要求領域に要求情報を書き込み、
    前記入出力模擬処理によって、前記入出力要求領域への前記要求情報の書込みを検出し、前記入出力シミュレータの復元された状態情報を用いて、前記要求情報に基づいて前記入出力装置の動作を模擬する
    シミュレーションプログラム。
JP2016561863A 2016-06-07 2016-06-07 シミュレーション装置およびシミュレーションプログラム Expired - Fee Related JP6076576B1 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/066932 WO2017212549A1 (ja) 2016-06-07 2016-06-07 シミュレーション装置およびシミュレーションプログラム

Publications (2)

Publication Number Publication Date
JP6076576B1 true JP6076576B1 (ja) 2017-02-08
JPWO2017212549A1 JPWO2017212549A1 (ja) 2018-06-14

Family

ID=57981570

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016561863A Expired - Fee Related JP6076576B1 (ja) 2016-06-07 2016-06-07 シミュレーション装置およびシミュレーションプログラム

Country Status (3)

Country Link
JP (1) JP6076576B1 (ja)
TW (1) TW201743149A (ja)
WO (1) WO2017212549A1 (ja)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62194549A (ja) * 1986-02-21 1987-08-27 Hitachi Ltd Cpu―io並列動作シミュレーション方法
JPS62274436A (ja) * 1986-05-23 1987-11-28 Hitachi Ltd シミユレ−シヨン方式
JPH04352245A (ja) * 1991-05-30 1992-12-07 Fujitsu Ltd シュミレ−ション方式
JPH0581075A (ja) * 1991-09-19 1993-04-02 Mitsubishi Electric Corp ソフトウエア開発装置
JP2000020348A (ja) * 1998-07-03 2000-01-21 Toshiba Corp シミュレーション装置及びシミュレーションプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2000242524A (ja) * 1999-02-18 2000-09-08 Sanyo Electric Co Ltd プロセッサのソフトウエアシミュレータ
JP2007004400A (ja) * 2005-06-22 2007-01-11 Oki Data Corp プログラム・デバッグ方法
US7849450B1 (en) * 2005-01-28 2010-12-07 Intel Corporation Devices, methods and computer program products for reverse execution of a simulation
JP2012226445A (ja) * 2011-04-15 2012-11-15 Canon Inc 情報処理装置及びプログラム

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62194549A (ja) * 1986-02-21 1987-08-27 Hitachi Ltd Cpu―io並列動作シミュレーション方法
JPS62274436A (ja) * 1986-05-23 1987-11-28 Hitachi Ltd シミユレ−シヨン方式
JPH04352245A (ja) * 1991-05-30 1992-12-07 Fujitsu Ltd シュミレ−ション方式
JPH0581075A (ja) * 1991-09-19 1993-04-02 Mitsubishi Electric Corp ソフトウエア開発装置
JP2000020348A (ja) * 1998-07-03 2000-01-21 Toshiba Corp シミュレーション装置及びシミュレーションプログラムを記録したコンピュータ読み取り可能な記録媒体
JP2000242524A (ja) * 1999-02-18 2000-09-08 Sanyo Electric Co Ltd プロセッサのソフトウエアシミュレータ
US7849450B1 (en) * 2005-01-28 2010-12-07 Intel Corporation Devices, methods and computer program products for reverse execution of a simulation
JP2007004400A (ja) * 2005-06-22 2007-01-11 Oki Data Corp プログラム・デバッグ方法
JP2012226445A (ja) * 2011-04-15 2012-11-15 Canon Inc 情報処理装置及びプログラム

Also Published As

Publication number Publication date
JPWO2017212549A1 (ja) 2018-06-14
TW201743149A (zh) 2017-12-16
WO2017212549A1 (ja) 2017-12-14

Similar Documents

Publication Publication Date Title
US8732282B1 (en) Model framework to facilitate robust programming of distributed workflows
JP6119535B2 (ja) トレース方法、処理プログラム、および情報処理装置
JP6051546B2 (ja) 情報処理装置、シミュレーション方法、およびプログラム
WO2020151344A1 (zh) 针对迭代子版本的软件开发测试方法及相关装置
US9389978B2 (en) Automated operating system test framework
CN107278297B (zh) 用于软件测试的计算设备、方法以及介质
US8711160B1 (en) System and method for efficient resource management of a signal flow programmed digital signal processor code
US8589734B2 (en) Verifying correctness of processor transactions
JP2008282308A (ja) 協調検証装置、協調検証方法、協調検証プログラム
JP6076576B1 (ja) シミュレーション装置およびシミュレーションプログラム
US8938646B2 (en) Mutations on input for test generation
JP5826099B2 (ja) ソフトウェア評価支援装置及びプログラム
JP5319643B2 (ja) ソフトウェアプロダクトライン開発支援装置およびその方法
JPH04112344A (ja) データベースの疑似更新方式
JP6907771B2 (ja) データベース回復装置、データベース回復方法、及び、データベース回復プログラム
US8930759B2 (en) Stream generation
WO2019198235A1 (ja) シミュレーション装置およびシミュレーションプログラム
JP2006350646A (ja) シミュレーション装置及びシミュレーション方法
CN110674622A (zh) 可视化图表生成方法、系统、存储介质及电子设备
JP4421498B2 (ja) プログラム
JP2007328775A (ja) シミュレーション装置、シミュレーション方法及びシミュレーションプログラム
KR20190116628A (ko) 섬네일 이미지의 효율적 갱신 처리가 가능한 프레젠테이션 문서 편집 장치 및 그 동작 방법
JP2015148851A (ja) 画像処理装置
JP2017027341A (ja) 設計支援装置、設計支援ツール、プログラム、及び、電子装置
JP2008134847A (ja) 自然文作成装置、その制御方法及びコンピュータプログラム

Legal Events

Date Code Title Description
A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20161109

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170110

R150 Certificate of patent or registration of utility model

Ref document number: 6076576

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees