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

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

Info

Publication number
JP2012123726A
JP2012123726A JP2010275797A JP2010275797A JP2012123726A JP 2012123726 A JP2012123726 A JP 2012123726A JP 2010275797 A JP2010275797 A JP 2010275797A JP 2010275797 A JP2010275797 A JP 2010275797A JP 2012123726 A JP2012123726 A JP 2012123726A
Authority
JP
Japan
Prior art keywords
time
simulation
event
unit
instruction
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.)
Granted
Application number
JP2010275797A
Other languages
English (en)
Other versions
JP5542643B2 (ja
Inventor
Masakatsu Toyama
正勝 外山
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
Priority to JP2010275797A priority Critical patent/JP5542643B2/ja
Publication of JP2012123726A publication Critical patent/JP2012123726A/ja
Application granted granted Critical
Publication of JP5542643B2 publication Critical patent/JP5542643B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】ターゲットとなるソフトウェアをシミュレーションするシミュレーション装置において、CPUアイドル処理となるシミュレーション時間を短縮する。
【解決手段】ターゲットシステムシミュレータ100は、ターゲットソフトウェア131の命令を実行する命令セットシミュレータ部110と、命令セットシミュレータ部110による命令の実行に応じて進行させる時刻であって、実時間の進行による現実の時刻とは異なるシミュレーション時刻を進行させるシミュレーション時刻管理部160と、命令セットシミュレータ部110の実行している命令がアイドル処理かどうかを判定するアイドル判定処理を実行するアイドル処理判定部170と、アイドル処理判定部170によって命令セットシミュレータ部110の実行中の命令がアイドル処理と判定されると、シミュレーション時刻管理部160の管理するシミュレーション時刻を進行させる時間補正部180とを備えた。
【選択図】図1

Description

この発明は、例えば組込み装置で実行されるプログラムをシミュレーションする、シミュレーション装置及びシミュレーションプログラムに関する。
組込み装置のアーキテクチャ設計、動作検証、性能解析、ソフトウェア開発などを目的とし、組込み装置のハードウェアの持つ機能をソフトウェアでモデル化し、その上でターゲットソフトウェア131を実行するための仮想環境を提供する手段として、シミュレータがある。シミュレータは、シミュレーションの対象範囲、目的、ハードウェア機能をモデル化するときの抽象度や精度によって、多様な形態が存在する。そのなかの1つの形態として、ターゲットとなる組込み装置で使われるCPU用にコンパイル、リンクされたオブジェクトコードを、ターゲットとは異なるCPUで動作するホストコンピュータにおいて解釈し、メモリやレジスタの内容の変化を擬似的に再現する、命令セットシミュレータがある。命令セットシミュレータは、ターゲットCPUの命令列をそのまま実行可能であるため、ターゲットソフトウェア131の構成や処理内容に関与しない。そのため、実行すべき処理が無くなりCPUが空き状態となっている、CPUアイドル処理であっても、実際のCPUと同様に命令列の解釈、実行を行う。
CPUアイドル処理は、ジャンプ命令を繰り返し実行する、単純なループ処理で実現されることが多い。これに対し、特許文献1では、実行した命令列の履歴からループ処理を検出し、ループを規定回数繰り返した後のメモリやレジスタの内容を予測し、結果を反映することで、ループ回数分の命令実行を短縮する手段が開示されている。
特開平8−69392号公報
コントローラのような入出力処理の完了が実時間で要求される組込み装置では、リアルタイムオペレーティングシステム(RTOS)が導入され、処理をタスクや割込みハンドラという単位で実行する。通常タスクや割込みハンドラは、ある決められた実時間制約(デッドライン)に確実に処理が完了するよう、最悪ケースでの実行時間で処理内容が設計される。そのため、通常ケースではマージン分はCPUアイドル処理となり、次の割込み事象を待つために時間を消費するための命令列を実行することになる。
CPUアイドル処理は、空き時間に実行される意味のない処理であるため、その命令列を忠実にシミュレーションしたとしても、意味のある演算結果は得られない。この意味のない命令実行に対しても、ホストコンピュータのCPUリソースが割り当てられ、一定の処理時間がかかる。従って、CPUアイドル処理のためにCPUリソースを使わないようにすれば、シミュレーション時間は短縮され、実行結果を早く得ることができる。
その1つの手段として、特許文献1では、ループに係る命令をスキップする方式が示されている。なお、CPUアイドル処理は、単純なループ処理で実現する他に、CPUコアを停止させて低消費電力状態に移行し待機する処理として実現する場合があり、その場合CPUの命令実行は停止してしまうため、特許文献1に記載のループを短縮する手法は使えない。
ここで、CPUアイドル処理が解除される条件に注目すると、CPUに対し割込みなどの外部事象を与える必要があることがわかる。従って、本発明では、現在シミュレーション実行している命令のCPUアイドル処理の部分であることを検出する手段により、ターゲットソフトウェアがCPUアイドル処理の実行に遷移したことを検出した際に、次の入出力イベントが発生する時刻までシミュレータ内部の時間を強制的に進める。その結果、ターゲットソフトウェアでは、CPUアイドル処理に入った瞬間に次の割込みが発生し、CPUアイドル処理はキャンセルされ、割込みハンドラやタスク処理が実行される。これにより、CPUアイドル処理に係るシミュレーション時間を短縮することを目的とする。
この発明のシミュレーション装置は、
ターゲットとなるソフトウェアをシミュレーションするシミュレーション装置において、
前記ソフトウェアの命令を実行する命令セットシミュレータ部と、
前記命令セットシミュレータ部による前記命令の実行に応じて進行させる時刻であって、実時間の進行による現実の時刻とは異なるシミュレーション時刻を進行させるシミュレーション時刻管理部と、
前記命令セットシミュレータ部の実行している前記命令がアイドル処理かどうかを判定するアイドル判定処理を実行するアイドル処理判定部と、
前記アイドル処理判定部によって、前記命令セットシミュレータ部の実行中の命令がアイドル処理と判定されると、前記シミュレーション時刻管理部の管理する前記シミュレーション時刻を前記アイドル処理の終了まで進行させる時間補正部と
を備えたことを特徴とする。
この発明により、ターゲットとなるソフトウェアをシミュレーションするシミュレーション装置において、CPUアイドル処理となるシミュレーション時間を短縮するシミュレーション装置を提供できる。
実施の形態1におけるターゲットシステムシミュレータ100のブロック図。 実施の形態1における命令セットシミュレータ部110のフローチャート。 実施の形態1におけるアイドル処理判定部170のフローチャート。 実施の形態1における時間補正部180のフローチャート。 図2、図3、図4を連結した図。 実施の形態1におけるI/Oシミュレータ部120によるイベント管理部150への登録処理を示すローチャート。 実施の形態1におけるイベント管理部150のもつイベントキューを示す図。 実施の形態1におけるイベント管理部150によるイベント処理動作を示すフローチャート。 実施の形態1におけるイベント管理部150のイベント処理動作を説明する図。 実施の形態1におけるイベント管理部150のイベント処理動作を説明する図。 実施の形態1における効果を示す図。 実施の形態2におけるターゲットシステムシミュレータ100−2のブロック図。 実施の形態2における実時間調整部190のフローチャート。 実施の形態3におけるターゲットシステムシミュレータを実行する計算機の外観。 実施の形態3におけるターゲットシステムシミュレータを実行する計算機のハードウェア構成。
実施の形態1.
図1は、実施の形態1におけるターゲットシステムシミュレータ100の構成を示している。ターゲットシステムシミュレータ100は、ターゲットである組込み装置をソフトウェアで模擬した装置である。ターゲットシステムシミュレータ100は、CPU命令をシミュレーションする命令セットシミュレータ部110と、周辺装置の割込みや入出力をシミュレーションするI/Oシミュレータ部120(イベントシミュレータ)と、ターゲットメモリ130と、ターゲットレジスタ140と、イベント管理部150、シミュレーション時刻管理部160、アイドル処理判定部170、時間補正部180を備える。
ターゲットメモリ130は、ターゲットのメモリ内容を再現し保持する。また、ターゲットレジスタ140は、ターゲットのレジスタ内容を再現し保持する。ターゲットシステムシミュレータ100で実行するターゲットソフトウェア131は、ターゲットメモリ130にロードされる。
命令セットシミュレータ部110は、ターゲットメモリ130からターゲットソフトウェア131の命令コードを取り出し、解釈、実行する。その際、ターゲットレジスタ140、ターゲットメモリ130およびI/Oシミュレータ部120に対し、その命令の演算結果を反映する。
I/Oシミュレータ部120は、CPU以外の周辺装置の機能をソフトウェアでモデル化したものである。I/Oシミュレータ部120は、命令セットシミュレータ部110からの入出力要求に対応してデータを供給する他に、仕様により規定されるタイミングで、命令セットシミュレータ部110に対し割込み要求を出す。
この割込みの発生や入出力の変化をイベントとして、イベント管理部150は、イベントの発生タイミングを管理する。イベント管理部150は、シミュレーション時刻管理部160が管理するシミュレーション時刻に従って、イベントの発生タイミングを把握する。
シミュレーション時刻管理部160が管理するのは、シミュレーション実行にかかっている実時間ではなく、シミュレーションのターゲットとなっているシステム内で進行し把握される時間である。例えば、実際の組込み装置上で10000命令実行するのに1ミリ秒かかっており、シミュレータで10000命令実行するのに10ミリ秒かかっていたとする。このとき、実時間では10ミリ秒の時間が経過していたとしても、ターゲットの内部状態は1ミリ秒相当分しか進行していないため、シミュレーション時刻は1ミリ秒となる。シミュレーション時刻は、命令セットシミュレータ部110が命令をシミュレーション実行した結果、その命令実行にかかるマシンサイクル数をシミュレーション時刻管理部160に通知し、シミュレーション時刻管理部160は通知されたマシンサイクルに相当する時間を進める。
アイドル処理判定部170は、実行中のターゲットソフトウェア131がアイドル状態に遷移しているかどうかを判定する手段である。アイドル処理判定部170は、アイドル状態を検出した場合は、時間補正部180に対し、シミュレーション時刻を進めるよう要求する。
時間補正部180は、イベント管理部150に対して次のイベントが発生するまでの時間を問い合わせ、その結果をもとにシミュレーション時刻管理部160に対し時間を強制的に進める要求を出す。
(動作の説明)
次に動作について説明する。
図2は、命令セットシミュレータ部110に追加する処理内容を示したフローチャートである。
図3は、アイドル処理判定部170の処理内容を示したフローチャートである。
図4は、時間補正部180のフローチャートを示す。
図5は、図2、図3、図4の関係を示した。
命令セットシミュレータ部110は、通常は、CPUの命令フェッチ、デコード、データフェッチ、命令実行、結果格納の、5つの実行ステージを機能単位とし、プログラムカウンタを進めながら1命令につき1ループ回してシミュレーション実行を進めていく。図2に示す追加処理は、結果格納ステージの後に追加する。S100では、命令セットシミュレータ部110は、今回の実行ループで実行した命令の種別を判定する。もしジャンプ命令を実行していた場合は、S101でアイドル処理判定部170を呼び出す。
図3に示すように、S200では、アイドル処理判定部170は、実行したジャンプ命令のジャンプ先のアドレスが、ターゲットソフトウェア131のCPUアイドル処理の命令コードが配置してあるアドレスの範囲内にあるかどうかを判定する。CPUアイドル処理のアドレスは、シンボル情報から取得することができる。もしジャンプ先がCPUアイドル処理であることを検出した場合は、アイドル処理判定部170は、S201で時間補正部180を呼び出す。
図4は、時間補正部180の処理を表すフローチャートを示している。
なお、イベント管理部150の管理するイベントキュー、イベント発生時刻については、図6〜図8の説明で後述する。
S500では、時間補正部180は、イベント管理部150が管理しているイベントキューを参照し、次のイベント発生時刻を取得する。イベントがなにも登録されていなければ0とする。次に、S501では、時間補正部180は、シミュレーション時刻管理部160に対し、S500で取得した次のイベント発生時刻をシミュレーション時刻に加算するよう要求する。この結果、次回のイベント管理部150の定期処理において、必ずイベントが発生することになる。これにより割込みが発生すれば、ターゲットソフトウェア131はCPUアイドル処理を即座に抜け出し、割込みハンドラ処理を実行する。
図6は、I/Oシミュレータ部120が、割込み等のCPUの命令実行に対して非同期に発生する入出力事象を実現するために、その事象に対応するイベント(イベント識別子)を発生タイミング(イベント発生時刻)と共に、イベント管理部150に登録する処理を示したフローチャートである。本処理は、I/Oシミュレータ部120内で行われる割込み処理等に対応するイベント識別子と、その発生時刻(追加イベント発生時刻)とをパラメータとして呼び出される。なお、イベント発生時刻(後述する図5に記載)は、実時間ではなくシミュレーション時刻を基準とし、現在からどれだけ時間が経過した後にイベントを通知するかを、相対時間で指定するものである。
図7は、イベント管理部150の有するイベントキューの構造を示す図である。図6の動作の主体は、I/Oシミュレータ部120である。最初にS300では、I/Oシミュレータ部120は、図7の構造のイベントキューを調べ、既にイベントが登録されているか確認する。イベントキューは、イベントを管理する個々の構造体要素をポインタで繋いだものである。イベント発生時刻は、ひとつ手前の構造体要素からの経過時間が格納される。最終要素のポインタはNULLとなっている。イベントが何も登録されていない場合は、イベントキュー自体がNULLになる。従って、I/Oシミュレータ部120はイベントキューがNULLであれば、S308でキューにイベント要素を追加する。それ以外はS301に進む。S301では、イベントキューの先頭要素を参照し、イベント識別子とイベント発生時刻(キューイベント発生時刻)を取得する。S302では、キューイベント発生時刻と追加イベント発生時刻の値を比較する。キューイベント発生時刻の方が大きければ、キューイベント発生時刻から追加イベント発生時刻を引き、S308でキューイベントの要素の手前に追加イベントの要素を挿入する。追加イベント発生時刻の方が大きければ、S303で追加イベント発生時刻からキューイベント発生時刻を引き、S304でキューイベントの次の要素を参照する。そして、S305でイベント要素が終端のNULLであるかチェックし、NULLであればS308でその手前(キューの最後)に追加イベントの要素を挿入する。次のイベント要素がある場合は、S302に戻り、同様の処理を繰り返すことにより、イベントが発生する順番にソートされ、さらに各イベント要素は手前のイベント発生時点からの経過時間で管理されるようになる。
図8は、イベント管理部150が、命令セットシミュレータ部110から定期的に呼ばれて、イベントの発生有無をチェックする処理を表すフローチャートである。図8の動作の主体は、イベント管理部150である。
また図9、図10は、図8を説明するための図である。図9、図10を参照しながら図8を説明する。
S400で、イベント管理部150は、図7のイベントキューの要素を調べ、NULLであれば、S410で、シミュレーション時刻管理部160によって管理している現在のシミュレーション時刻を参照し、イベント処理時刻として内部に保存した後、処理を終了する。
イベント要素が有れば、S401に進む。以下では説明のためにシミュレーション時刻を用いて説明するが説明の便宜のため、時間の単位は「秒」とした。
S401では、シミュレーション時刻管理部160によって管理している現在のシミュレーション時刻(20:19:23)を参照するとともに、
S410にて保存されている前回処理した時刻を示すイベント処理時刻(20:19:18)を取得し、その差分によって経過時間(23−18=5秒)を算出する。
S402でイベントキューの先頭要素を参照し、S403ではS401で求めた経過時間とキューイベント発生時刻を比較する。なお、前述のようにイベント発生時刻はひとつ手前の構造体要素(言い換えれば前回のイベント処理時刻(S410))からの経過時間であるので、経過時間とイベント発生時刻との比較が可能である。
(経過時間<イベント発生時刻の場合)
図9に示すように経過時間(5秒)のほうが小さければ(例えばイベント発生時刻が8秒とする)、S404でキューイベント発生時刻(8秒)から経過時間(5秒)を引いて3秒を算出し、取得したイベントキューのイベント発生時刻を算出した差分(3秒)に書き換える。その後、S410に進み、イベント処理時刻を取得した現在の時刻(20:19:23)に更新する。すなわち、取得した次回発生するべきイベントの発生時刻を差分(3秒)に書き換えることは、更新された現在の時刻(20:19:23)からのイベント発生時刻としたことを意味する。
(経過時間>イベント発生時刻の場合)
図10はキューイベント発生時刻の方が小さい場合を示す。図10に示すように、経過時間(5秒)よりも、キューイベント発生時刻(3秒とする)の方が小さいか同じであれば、イベント発生時刻が経過していることになる。このため、イベント管理部150は、S405以降のイベント通知処理に進む。
S405では、経過時間(5秒)からキューイベント発生時刻(3秒)を引いておく。そして、図10に示すように、得られた差分(2秒)だけ、次のイベント発生時刻からを差し引いておく。これは、この後にS410に進んだときに、イベント処理時刻を取得した現在の時刻(20:19:23)に更新するので、現在の時刻(20:19:23)を基準に次回のイベント(「T−2」秒後)を発生させるためである。
S406では、ポインタを操作することによって該当キューイベント要素(イベント発生時刻に到達した要素)をイベントキューの接続構造から削除し、
S407では、該当キューイベントのイベント識別子(実行要求通知の一例)をI/Oシミュレータ部120に送信することで、指定されたイベントの発生時刻となったことを知らせる。この処理に対応し、I/Oシミュレータ部120では、イベント識別子に対応するイベントのシミュレーションが行われ、その結果割込みの要求が発生した場合は、命令セットシミュレータ部110に対し割込み要求を出力することになる。
S408では、イベント管理部150は、キューイベントの次の要素を参照し、
S409で次のイベント要素がないと判断されれば(S409のNO)、S410(取得した現在のシミュレーション時刻に更新する処理)に進む。次のイベント要素があれば、S403に戻り、同様の処理を繰り返す。
本実施の形態1によれば、CPUアイドル処理から抜け出すきっかけとなる割込みの発生が早められる。このため、CPUアイドル処理として実行されるはずの命令列のシミュレーションがスキップされ、その結果、シミュレーションにかかる実時間が削減される。また、CPUアイドル処理の命令列を操作するものではないため、CPUアイドル処理が単純なビジーループ処理で実現されていても、または消費電力を低減するためにCPUスリープ命令でCPUの動作自体を停止する処理で実現されていても適用可能である。
図11の(a)はターゲットシステムシミュレータ100の方式を適用しない場合(実施前)を示し、(b)はターゲットシステムシミュレータ100の方式を適用する場合(実施後)を示す図である。図11に示すように、100ms間隔で発生するタイマ割込みに対応してハンドラが起動され、そこからタスク処理が行われた後、CPUアイドル状態に遷移する処理モデルとなっている。シミュレーション実行速度はターゲットの組込み装置の実行速度の1/10、つまりシミュレーション時間は10倍かかるものとする。本実施の形態1の方式を適用しない(a)の場合は、実時間1700msの時点からCPUアイドル処理となり、実時間2000msの時点で割込みが発生することでCPUアイドル処理を抜け出し、次の周期処理を行っている。一方、本実施の形態1を適用する(b)の場合は、CPUアイドル処理に入るはずの1700msの時点で、シミュレーション時刻を強制的に進めてしまうため、即座に割込みが発生し、次の周期処理が実行される。この例では、この周期処理を実行するためにかかるシミュレーションの実時間を300ms削減できている。
実施の形態2.
図12、図13を参照して実施の形態2を説明する。
図11は、実施の形態2におけるターゲットシステムシミュレータ100−2の機能構成を示している。図1との違いは、図12では実時間調整部190を有する点である。シミュレーション時刻管理部160がシミュレーション時刻を進める際に呼び出された場合に、実時間調整部190は、シミュレーション時刻が実時間よりも進んでいる場合にシミュレーション時刻を実時間に合わせるために、ターゲットシステムシミュレータ100−2が実行されているホストコンピュータのCPUリソースを解放する機能を持つ。
次に動作について説明する。
図13は、実施の形態2で追加された実時間調整部190の処理内容を示したフローチャートである。
最初にS600では、シミュレーション実行を開始してから経過した「実時間」を算出する。時間情報は、ホストコンピュータのタイマを、ホストコンピュータ上で動作しているOSのAPIによって参照して取得する。起点となる実時間は、シミュレーション実行開始時に内部情報として保持されている。
次にS601で、シミュレーション時刻管理部160で管理されているシミュレーション時刻と、S600で算出した実時間を比較する。高速なCPUを備えるホストコンピュータ上において低速なCPUを備えるターゲットの組込み装置をシミュレーションする場合、シミュレーション実行の速度が実際のターゲットの組込み装置の実行速度よりも早くなる場合がある。また、CPUアイドル処理に相当する時間をスキップしたことにより、シミュレーション時刻が実時間を追い越す場合がある。以上のような場合には、シミュレーション時刻の方が実時間よりも大きくなるため、そのときはS602以降の処理を実行する。
S602では、進んでいるシミュレーション時刻から実時間を引いて、相対的な差分時間を算出する。
そしてS603では、ホストコンピュータのOSのAPIによって「差分時間の分だけ」シミュレータのプロセス、あるいはスレッドを停止させる。これにより、ターゲットシステムシミュレータ100−2によるホストコンピュータのCPUリソースの使用を放棄する。すなわち、シミュレーション時刻と実時間が一致したとき、シミュレータの実行が再開される。
本実施の形態2によれば、ターゲットの組込み装置が待機状態の時などの処理負荷が低い状態をシミュレーションする場合に、CPUアイドル処理の命令実行をスキップするためにシミュレーション時刻を強制的に進めるとともに、実時間に比べて進みすぎた時間分だけホストコンピュータのCPUリソースを解放する。このため、シミュレーション実行時のホストコンピュータの処理負荷を下げられ、他のアプリケーション(例えばエディッタ)の実行により多くのCPUリソースを割り当てることが可能となる。シミュレーションの方法としては、できるだけ早く結果を得るためにホストコンピュータのCPUリソースを占有して処理を行う場合と、ターゲットの組込み装置と同じタイミングで動作を確認したい場合とがあり、本実施例は後者をより低負荷、より効率的に実現するものである。
実施の形態3.
図14、図15を参照して実施の形態3を説明する。実施の形態3は、コンピュータであるターゲットシステムシミュレータ100、100−2のハードウェア構成を説明する。
図14は、コンピュータであるターゲットシステムシミュレータの外観の一例を示す図である。
図15は、ターゲットシステムシミュレータのハードウェア資源の一例を示す図である。
外観を示す図14において、ターゲットシステムシミュレータは、システムユニット830、CRT(Cathode・Ray・Tube)やLCD(液晶)の表示画面を有する表示装置813、キーボード814(Key・Board:K/B)、マウス815、コンパクトディスク装置818(CDD:Compact Disk Drive)などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。システムユニット830はネットワークに接続している。
またハードウェア資源を示す図15において、ターゲットシステムシミュレータは、プログラムを実行するCPU810(Central Processing Unit)を備えている。CPU810は、バス825を介してROM(Read Only Memory)811、RAM(Random Access Memory)812、表示装置813、キーボード814、マウス815、通信ボード816、CDD818、磁気ディスク装置820と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置820の代わりに、光ディスク装置、フラッシュメモリなどの記憶装置でもよい。
RAM812は、揮発性メモリの一例である。ROM811、CDD818、磁気ディスク装置820等の記憶媒体は、不揮発性メモリの一例である。これらは、「記憶装置」あるいは記憶部、格納部、バッファの一例である。通信ボード816、キーボード814などは、入力部、入力装置の一例である。また、通信ボード816、表示装置813などは、出力部、出力装置の一例である。通信ボード816は、ネットワークに接続されている。
磁気ディスク装置820には、オペレーティングシステム821(OS)、ウィンドウシステム822、プログラム群823、ファイル群824が記憶されている。プログラム群823のプログラムは、CPU810、オペレーティングシステム821、ウィンドウシステム822により実行される。
上記プログラム群823には、以上の実施の形態の説明において「〜部」として説明した機能を実行するプログラムが記憶されている。プログラムは、CPU810により読み出され実行される。
ファイル群824には、以上の実施の形態の説明において、「〜の判定結果」、「〜の算出結果」、「〜の抽出結果」、「〜の生成結果」、「〜の処理結果」として説明した情報や、データや信号値や変数値やパラメータなどが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU810によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのCPUの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
また、以上に述べた実施の形態の説明において、データや信号値は、RAM812のメモリ、CDD818のコンパクトディスク、磁気ディスク装置820の磁気ディスク、その他光ディスク、ミニディスク、DVD(Digital・Versatile・Disk)等の記録媒体に記録される。また、データや信号は、バス825や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
また、以上の実施の形態の説明において、「〜部」として説明したものは、「〜手段」、であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明したものは、ソフトウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU810により読み出され、CPU810により実行される。すなわち、プログラムは、以上に述べた「〜部」としてコンピュータを機能させるものである。あるいは、以上に述べた「〜部」の手順や方法をコンピュータに実行させるものである。
以上の実施の形態では、シミュレーション装置としてのターゲットシステムシミュレータを説明したが、のターゲットシステムシミュレータはシミュレーションプログラムとしても把握できることは以上の説明から当然である。
以上の実施の形態では以下を特徴とするシミュレーション装置を説明した。
(1)ターゲットシステムシミュレータ100は、ターゲットの組込み装置のハードウェア構成をソフトウェアで実現したもので、ターゲットの組込み装置用にコンパイル、リンクされたターゲットソフトウェア131のCPU命令コードを解釈し実行する命令セットシミュレータ部110と、ターゲットの組込み装置のハードウェア仕様に従って命令セットシミュレータ部110に対して割込みや入出力を仮想的に発生させるI/Oシミュレータ部120との組み合わせによって成り立っている。
(2)命令セットシミュレータ部110がターゲットソフトウェア131のCPU命令コードに従い操作する対象となるターゲットメモリ130とターゲットレジスタ140を備え、ターゲットソフトウェア131はターゲットメモリ130内にロードされている。
(3)I/Oシミュレータ部120の割込みや入出力をイベントとして一元管理するイベント管理部150と、イベントの発生タイミングを把握するためのシミュレーション時刻管理部160を備える。
(4)命令セットシミュレータ部110が実行中の命令コードがCPUアイドル処理に含まれるものか判別するアイドル処理判定部170と、CPUアイドル処理を検出した場合にシミュレーション時刻を強制的に進める時間補正部180を備える。
(5)ホストコンピュータのアプリケーションとしてターゲットシミュレータは実行される。
以上の実施の形態では以下を特徴とするシミュレーション装置を説明した。
(1)命令セットシミュレータ部110がジャンプ命令を実行した際に、アイドル処理判定部170を呼び出す。
(2)命令セットシミュレータ部110で実行しているターゲットソフトウェア131のCPU命令コードがCPUアイドル処理に含まれることをアイドル処理判定部170が検出した場合、時間補正部180によってイベント管理部150に登録されているイベントで最も早いタイミングで発生するものの発生時刻まで、シミュレーション時刻管理部160で管理しているシミュレーション時刻を強制的に進める。
以上の実施の形態では以下を特徴とするシミュレーション装置を説明した。
(1)シミュレーション時刻と実時間を合わせるためにターゲットシステムシミュレータ100の動作/停止状態を制御する実時間調整部190を備える。
以上の実施の形態では以下を特徴とするシミュレーション装置を説明した。
シミュレーション時刻が実時間よりも進んでいる場合に、実時間調整部190によって進行している差分時間分だけターゲットシステムシミュレータ100の実行を停止させ、ホストコンピュータのCPUリソースを解放する。
100,100−2 ターゲットシステムシミュレータ、110 命令セットシミュレータ部、120 I/Oシミュレータ部、130 ターゲットメモリ、131 ターゲットソフトウェア、140 ターゲットレジスタ、150 イベント管理部、160 シミュレーション時刻管理部、170 アイドル処理判定部、180 時間補正部、190 時間調整部。

Claims (5)

  1. ターゲットとなるソフトウェアをシミュレーションするシミュレーション装置において、
    前記ソフトウェアの命令を実行する命令セットシミュレータ部と、
    前記命令セットシミュレータ部による前記命令の実行に応じて進行させる時刻であって、実時間の進行による現実の時刻とは異なるシミュレーション時刻を進行させるシミュレーション時刻管理部と、
    前記命令セットシミュレータ部の実行している前記命令がアイドル処理かどうかを判定するアイドル判定処理を実行するアイドル処理判定部と、
    前記アイドル処理判定部によって、前記命令セットシミュレータ部の実行中の命令がアイドル処理と判定されると、前記シミュレーション時刻管理部の管理する前記シミュレーション時刻を前記アイドル処理の終了まで進行させる時間補正部と
    を備えたことを特徴とするシミュレーション装置。
  2. 前記シミュレーション装置は、さらに、
    所定のイベントのシミュレーションの実行要求を通知する実行要求通知を受信すると、前記実行要求通知の通知する前記イベントのシミュレーションを実行し、前記イベントの前記シミュレーションの結果に応じて、前記命令セットシミュレータ部に割り込み要求を送信するイベントシミュレータ部と、
    前記イベントシミュレータ部のシミュレーションするべき少なくとも一つのイベントであって、前記シミュレーション時刻を基準とする発生時刻を示すイベント発生時刻を持つイベントを管理すると共に、前記シミュレーション時刻管理部の管理する前記シミュレーション時刻を参照することにより前記イベントが前記発生時刻に達していると判断した場合には、前記発生時刻に達している前記イベントに関する前記実行要求通知を前記イベントシミュレータ部に通知するイベント管理部と
    を備え、
    前記時間補正部は、
    前記アイドル処理判定部によって、前記命令セットシミュレータ部の実行中の命令がアイドル処理と判定されると、前記イベント管理部の管理する前記イベントのうち次に発生するべき前記イベントの前記発生時刻を参照し、次に発生するべき前記イベントの前記発生時刻まで前記シミュレーション時刻管理部の管理する前記シミュレーション時刻を進行させることを特徴とする請求項1記載のシミュレーション装置。
  3. 前記命令セットシミュレータ部は、
    ジャンプ命令を実行したときに、前記アイドル処理判定部を呼び出し、
    前記アイドル処理判定部は、
    前記命令セットシミュレータ部に呼び出されたときに、前記アイドル判定処理を実行することを特徴とする請求項1または2のいずれかに記載のシミュレーション装置。
  4. 前記シミュレーション装置は、さらに、
    実時間の進行による現実の時刻を管理すると共に、前記シミュレーション時刻管理部が進行させる前記シミュレーション時刻が前記現実の時刻よりも進んでいる場合には、前記命令セットシミュレータ部による前記ソフトウェアの命令の実行を一時停止させて、前記シミュレーション時刻管理部によって管理される前記シミュレーション時刻を前記現実の時刻に合わせる実時間調整部を備えたことを特徴とする請求項1〜3のいずれかに記載のシミュレーション装置。
  5. ターゲットとなるソフトウェアをシミュレーションするシミュレーションプログラムにおいて、
    (1)前記ソフトウェアの命令を実行する処理と、
    (2)前記命令の実行に応じて進行させる時刻であって、実時間の進行による現実の時刻とは異なるシミュレーション時刻を進行させる処理と、
    (3)実行している前記命令がアイドル処理かどうかを判定する処理と、
    (4)実行中の命令がアイドル処理と判定されると、前記シミュレーション時刻を前記アイドル処理の終了まで進行させる処理と、
    をコンピュータに実行させるためのシミュレーションプログラム。
JP2010275797A 2010-12-10 2010-12-10 シミュレーション装置及びシミュレーションプログラム Expired - Fee Related JP5542643B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010275797A JP5542643B2 (ja) 2010-12-10 2010-12-10 シミュレーション装置及びシミュレーションプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010275797A JP5542643B2 (ja) 2010-12-10 2010-12-10 シミュレーション装置及びシミュレーションプログラム

Publications (2)

Publication Number Publication Date
JP2012123726A true JP2012123726A (ja) 2012-06-28
JP5542643B2 JP5542643B2 (ja) 2014-07-09

Family

ID=46505076

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010275797A Expired - Fee Related JP5542643B2 (ja) 2010-12-10 2010-12-10 シミュレーション装置及びシミュレーションプログラム

Country Status (1)

Country Link
JP (1) JP5542643B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016224753A (ja) * 2015-06-01 2016-12-28 株式会社Ihi シミュレーション装置
CN115292102A (zh) * 2022-05-20 2022-11-04 芯华章科技股份有限公司 仿真方法、电子设备、可读存储介质

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6418696B2 (ja) * 2015-07-23 2018-11-07 国立大学法人東京工業大学 命令セットシミュレータおよびそのシミュレータ生成方法
US11977467B2 (en) * 2018-06-22 2024-05-07 Hitachi Astemo, Ltd. Simulation device

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07160537A (ja) * 1993-12-03 1995-06-23 Matsushita Electric Ind Co Ltd シミュレータ
JP2000010813A (ja) * 1998-06-25 2000-01-14 Hitachi Ltd シミュレーションテスト方式
JP2001154881A (ja) * 1999-12-01 2001-06-08 Yamatake Corp シミュレーション装置とその装置の実現に用いられるプログラム記録媒体
JP2003186936A (ja) * 2001-12-17 2003-07-04 Oki Data Corp 動作検証シミュレーションの実行方法及びシミュレーション実行装置並びにプログラム
JP2010113619A (ja) * 2008-11-07 2010-05-20 Internatl Business Mach Corp <Ibm> 処理制御システム、方法及びプログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07160537A (ja) * 1993-12-03 1995-06-23 Matsushita Electric Ind Co Ltd シミュレータ
JP2000010813A (ja) * 1998-06-25 2000-01-14 Hitachi Ltd シミュレーションテスト方式
JP2001154881A (ja) * 1999-12-01 2001-06-08 Yamatake Corp シミュレーション装置とその装置の実現に用いられるプログラム記録媒体
JP2003186936A (ja) * 2001-12-17 2003-07-04 Oki Data Corp 動作検証シミュレーションの実行方法及びシミュレーション実行装置並びにプログラム
JP2010113619A (ja) * 2008-11-07 2010-05-20 Internatl Business Mach Corp <Ibm> 処理制御システム、方法及びプログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016224753A (ja) * 2015-06-01 2016-12-28 株式会社Ihi シミュレーション装置
CN115292102A (zh) * 2022-05-20 2022-11-04 芯华章科技股份有限公司 仿真方法、电子设备、可读存储介质
CN115292102B (zh) * 2022-05-20 2024-05-28 芯华章科技股份有限公司 仿真方法、电子设备、可读存储介质

Also Published As

Publication number Publication date
JP5542643B2 (ja) 2014-07-09

Similar Documents

Publication Publication Date Title
US8484006B2 (en) Method for dynamically adjusting speed versus accuracy of computer platform simulation
US8793115B2 (en) Interface converter for unified view of multiple computer system simulations
US10318409B2 (en) Application development environment for portable electronic devices
JP4667206B2 (ja) マルチコアモデルシミュレーションプログラム、該プログラムを記録した記録媒体、マルチコアモデルシミュレータ、およびマルチコアモデルシミュレーション方法
JP5270330B2 (ja) マルチコアマイコンシステムのシミュレーション方法及びシミュレーション装置
US10552190B2 (en) Precise error injection for driver testing
JP5542643B2 (ja) シミュレーション装置及びシミュレーションプログラム
WO2018149495A1 (en) A method and system to fetch multicore instruction traces from a virtual platform emulator to a performance simulation model
US9317636B1 (en) System and method for stopping integrated circuit simulation
US9880931B2 (en) Safepoints for guest languages on a virtual machine
AU2017438670B2 (en) Simulation device, simulation method, and simulation program
JP5354102B2 (ja) マルチコアプロセッサシステム、通信制御方法、および通信制御プログラム
JP6584655B2 (ja) フリップキューの管理に基づくグラフィックスコンテキストのスケジューリング
JP5440083B2 (ja) シミュレーション装置、方法およびプログラム
US8914274B1 (en) Method and system for instruction set simulation with concurrent attachment of multiple debuggers
WO2006093762A1 (en) Computer platform simulation
JP5425445B2 (ja) 処理制御システム、方法及びプログラム
US11238772B2 (en) Methods and apparatus for compositor learning models
JPH0934918A (ja) デジタル回路をシミュレートする方法および装置
JP2002366378A (ja) プログラムのデバッグ装置及びデバッグ方法、並びに記憶媒体
JP2008112243A (ja) シミュレーションプログラム、並びに、それを生成する装置及び方法及びプログラム
JP2006178663A (ja) 情報処理装置、情報処理方法、検証装置、検証方法
JP2003256239A (ja) 動作検証シミュレーションの実行方法及びシミュレーション実行装置並びにプログラム
JP2001125805A (ja) ソフトウェアシミュレータ
JP2013206266A (ja) 情報処理装置および方法、並びにプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130905

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140326

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140507

R150 Certificate of patent or registration of utility model

Ref document number: 5542643

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees