JP2012123726A - シミュレーション装置及びシミュレーションプログラム - Google Patents
シミュレーション装置及びシミュレーションプログラム Download PDFInfo
- 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
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
【解決手段】ターゲットシステムシミュレータ100は、ターゲットソフトウェア131の命令を実行する命令セットシミュレータ部110と、命令セットシミュレータ部110による命令の実行に応じて進行させる時刻であって、実時間の進行による現実の時刻とは異なるシミュレーション時刻を進行させるシミュレーション時刻管理部160と、命令セットシミュレータ部110の実行している命令がアイドル処理かどうかを判定するアイドル判定処理を実行するアイドル処理判定部170と、アイドル処理判定部170によって命令セットシミュレータ部110の実行中の命令がアイドル処理と判定されると、シミュレーション時刻管理部160の管理するシミュレーション時刻を進行させる時間補正部180とを備えた。
【選択図】図1
Description
CPUアイドル処理は、ジャンプ命令を繰り返し実行する、単純なループ処理で実現されることが多い。これに対し、特許文献1では、実行した命令列の履歴からループ処理を検出し、ループを規定回数繰り返した後のメモリやレジスタの内容を予測し、結果を反映することで、ループ回数分の命令実行を短縮する手段が開示されている。
その1つの手段として、特許文献1では、ループに係る命令をスキップする方式が示されている。なお、CPUアイドル処理は、単純なループ処理で実現する他に、CPUコアを停止させて低消費電力状態に移行し待機する処理として実現する場合があり、その場合CPUの命令実行は停止してしまうため、特許文献1に記載のループを短縮する手法は使えない。
ターゲットとなるソフトウェアをシミュレーションするシミュレーション装置において、
前記ソフトウェアの命令を実行する命令セットシミュレータ部と、
前記命令セットシミュレータ部による前記命令の実行に応じて進行させる時刻であって、実時間の進行による現実の時刻とは異なるシミュレーション時刻を進行させるシミュレーション時刻管理部と、
前記命令セットシミュレータ部の実行している前記命令がアイドル処理かどうかを判定するアイドル判定処理を実行するアイドル処理判定部と、
前記アイドル処理判定部によって、前記命令セットシミュレータ部の実行中の命令がアイドル処理と判定されると、前記シミュレーション時刻管理部の管理する前記シミュレーション時刻を前記アイドル処理の終了まで進行させる時間補正部と
を備えたことを特徴とする。
図1は、実施の形態1におけるターゲットシステムシミュレータ100の構成を示している。ターゲットシステムシミュレータ100は、ターゲットである組込み装置をソフトウェアで模擬した装置である。ターゲットシステムシミュレータ100は、CPU命令をシミュレーションする命令セットシミュレータ部110と、周辺装置の割込みや入出力をシミュレーションするI/Oシミュレータ部120(イベントシミュレータ)と、ターゲットメモリ130と、ターゲットレジスタ140と、イベント管理部150、シミュレーション時刻管理部160、アイドル処理判定部170、時間補正部180を備える。
次に動作について説明する。
図2は、命令セットシミュレータ部110に追加する処理内容を示したフローチャートである。
図3は、アイドル処理判定部170の処理内容を示したフローチャートである。
図4は、時間補正部180のフローチャートを示す。
図5は、図2、図3、図4の関係を示した。
なお、イベント管理部150の管理するイベントキュー、イベント発生時刻については、図6〜図8の説明で後述する。
S500では、時間補正部180は、イベント管理部150が管理しているイベントキューを参照し、次のイベント発生時刻を取得する。イベントがなにも登録されていなければ0とする。次に、S501では、時間補正部180は、シミュレーション時刻管理部160に対し、S500で取得した次のイベント発生時刻をシミュレーション時刻に加算するよう要求する。この結果、次回のイベント管理部150の定期処理において、必ずイベントが発生することになる。これにより割込みが発生すれば、ターゲットソフトウェア131はCPUアイドル処理を即座に抜け出し、割込みハンドラ処理を実行する。
また図9、図10は、図8を説明するための図である。図9、図10を参照しながら図8を説明する。
イベント要素が有れば、S401に進む。以下では説明のためにシミュレーション時刻を用いて説明するが説明の便宜のため、時間の単位は「秒」とした。
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に戻り、同様の処理を繰り返す。
図11の(a)はターゲットシステムシミュレータ100の方式を適用しない場合(実施前)を示し、(b)はターゲットシステムシミュレータ100の方式を適用する場合(実施後)を示す図である。図11に示すように、100ms間隔で発生するタイマ割込みに対応してハンドラが起動され、そこからタスク処理が行われた後、CPUアイドル状態に遷移する処理モデルとなっている。シミュレーション実行速度はターゲットの組込み装置の実行速度の1/10、つまりシミュレーション時間は10倍かかるものとする。本実施の形態1の方式を適用しない(a)の場合は、実時間1700msの時点からCPUアイドル処理となり、実時間2000msの時点で割込みが発生することでCPUアイドル処理を抜け出し、次の周期処理を行っている。一方、本実施の形態1を適用する(b)の場合は、CPUアイドル処理に入るはずの1700msの時点で、シミュレーション時刻を強制的に進めてしまうため、即座に割込みが発生し、次の周期処理が実行される。この例では、この周期処理を実行するためにかかるシミュレーションの実時間を300ms削減できている。
図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リソースの使用を放棄する。すなわち、シミュレーション時刻と実時間が一致したとき、シミュレータの実行が再開される。
図14、図15を参照して実施の形態3を説明する。実施の形態3は、コンピュータであるターゲットシステムシミュレータ100、100−2のハードウェア構成を説明する。
図14は、コンピュータであるターゲットシステムシミュレータの外観の一例を示す図である。
図15は、ターゲットシステムシミュレータのハードウェア資源の一例を示す図である。
(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リソースを解放する。
Claims (5)
- ターゲットとなるソフトウェアをシミュレーションするシミュレーション装置において、
前記ソフトウェアの命令を実行する命令セットシミュレータ部と、
前記命令セットシミュレータ部による前記命令の実行に応じて進行させる時刻であって、実時間の進行による現実の時刻とは異なるシミュレーション時刻を進行させるシミュレーション時刻管理部と、
前記命令セットシミュレータ部の実行している前記命令がアイドル処理かどうかを判定するアイドル判定処理を実行するアイドル処理判定部と、
前記アイドル処理判定部によって、前記命令セットシミュレータ部の実行中の命令がアイドル処理と判定されると、前記シミュレーション時刻管理部の管理する前記シミュレーション時刻を前記アイドル処理の終了まで進行させる時間補正部と
を備えたことを特徴とするシミュレーション装置。 - 前記シミュレーション装置は、さらに、
所定のイベントのシミュレーションの実行要求を通知する実行要求通知を受信すると、前記実行要求通知の通知する前記イベントのシミュレーションを実行し、前記イベントの前記シミュレーションの結果に応じて、前記命令セットシミュレータ部に割り込み要求を送信するイベントシミュレータ部と、
前記イベントシミュレータ部のシミュレーションするべき少なくとも一つのイベントであって、前記シミュレーション時刻を基準とする発生時刻を示すイベント発生時刻を持つイベントを管理すると共に、前記シミュレーション時刻管理部の管理する前記シミュレーション時刻を参照することにより前記イベントが前記発生時刻に達していると判断した場合には、前記発生時刻に達している前記イベントに関する前記実行要求通知を前記イベントシミュレータ部に通知するイベント管理部と
を備え、
前記時間補正部は、
前記アイドル処理判定部によって、前記命令セットシミュレータ部の実行中の命令がアイドル処理と判定されると、前記イベント管理部の管理する前記イベントのうち次に発生するべき前記イベントの前記発生時刻を参照し、次に発生するべき前記イベントの前記発生時刻まで前記シミュレーション時刻管理部の管理する前記シミュレーション時刻を進行させることを特徴とする請求項1記載のシミュレーション装置。 - 前記命令セットシミュレータ部は、
ジャンプ命令を実行したときに、前記アイドル処理判定部を呼び出し、
前記アイドル処理判定部は、
前記命令セットシミュレータ部に呼び出されたときに、前記アイドル判定処理を実行することを特徴とする請求項1または2のいずれかに記載のシミュレーション装置。 - 前記シミュレーション装置は、さらに、
実時間の進行による現実の時刻を管理すると共に、前記シミュレーション時刻管理部が進行させる前記シミュレーション時刻が前記現実の時刻よりも進んでいる場合には、前記命令セットシミュレータ部による前記ソフトウェアの命令の実行を一時停止させて、前記シミュレーション時刻管理部によって管理される前記シミュレーション時刻を前記現実の時刻に合わせる実時間調整部を備えたことを特徴とする請求項1〜3のいずれかに記載のシミュレーション装置。 - ターゲットとなるソフトウェアをシミュレーションするシミュレーションプログラムにおいて、
(1)前記ソフトウェアの命令を実行する処理と、
(2)前記命令の実行に応じて進行させる時刻であって、実時間の進行による現実の時刻とは異なるシミュレーション時刻を進行させる処理と、
(3)実行している前記命令がアイドル処理かどうかを判定する処理と、
(4)実行中の命令がアイドル処理と判定されると、前記シミュレーション時刻を前記アイドル処理の終了まで進行させる処理と、
をコンピュータに実行させるためのシミュレーションプログラム。
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)
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)
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)
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> | 処理制御システム、方法及びプログラム |
-
2010
- 2010-12-10 JP JP2010275797A patent/JP5542643B2/ja not_active Expired - Fee Related
Patent Citations (5)
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)
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 |