Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP3362972B2 - ソフトウェアシミュレータ - Google Patents
[go: Go Back, main page]

JP3362972B2 - ソフトウェアシミュレータ - Google Patents

ソフトウェアシミュレータ

Info

Publication number
JP3362972B2
JP3362972B2 JP20558894A JP20558894A JP3362972B2 JP 3362972 B2 JP3362972 B2 JP 3362972B2 JP 20558894 A JP20558894 A JP 20558894A JP 20558894 A JP20558894 A JP 20558894A JP 3362972 B2 JP3362972 B2 JP 3362972B2
Authority
JP
Japan
Prior art keywords
instruction
loop
executed
execution
address
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
JP20558894A
Other languages
English (en)
Other versions
JPH0869392A (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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP20558894A priority Critical patent/JP3362972B2/ja
Publication of JPH0869392A publication Critical patent/JPH0869392A/ja
Application granted granted Critical
Publication of JP3362972B2 publication Critical patent/JP3362972B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、ターゲットのマイクロ
コンピュータ上で動作すべきアプリケーションソフトの
シミュレーションをすることができるソフトウェアシミ
ュレータに関する。
【0002】
【従来の技術】従来、家電製品などに組み込むべきター
ゲットとするマイクロコンピュータが完成していない状
態で、そのマイクロコンピュータ上で動作するアプリケ
ーションソフトの開発や動作検証を行う場合は、ICE
またはソフトウェアシミュレータを用いて行われてい
る。ここで、ICEとは、インサーキットエミュレータ
の略であり、マイクロプロセッサに特有のデバックツー
ルである。ここでソフトウェアシミュレータとは一般
に、他計算機にターゲットとするアプリケーションソフ
トのオブジェクトプログラムを与え、そのアプリケーシ
ョンソフトを実行すべきターゲットととする機種の計算
機の演算と同様の状態を他計算機内に作り出し、模擬的
にこれを実行させるためのものである。
【0003】
【発明が解決しようとする課題】しかしながら、ICE
を用いたアプリケーションソフトの動作検証では、ター
ゲットのマイクロコンピュータの動作と機能的に差があ
るために、動作確認が不十分となる。したがって、最終
的なアプリケーションソフトの動作確認は、ターゲット
のマイクロコンピュータの完成まで待たなければならな
い。
【0004】そこで、ICEの代わりに、ソフトウェア
シミュレータが有効な手段となる。ソフトウェアシミュ
レータは、マイクロコンピュータの命令列、入出力等の
動作をターゲットのマイクロコンピュータの仕様書どお
りに作成するので、ICEよりも安定して、アプリケー
ションソフトの開発と動作検証を行なうことができる。
【0005】しかしながら、現状のソフトウェアシミュ
レータでは、その命令を忠実にシミュレーションするた
めに、シミュレーション時間は、ターゲットとするマイ
クロコンピュータでの処理時間よりもかなり遅くなると
いう問題点を有していた。例えば、ターゲットのマイク
ロコンピュータまたはICE上では1秒で処理が終了す
るものが、数分から数十分位かかっていた。
【0006】本発明は上記問題点に鑑み、ソフトウェア
シミュレータ上でのアプリケーションソフトの実行時間
の短縮を図ることができるソフトウェアシミュレータを
提供することを目的とする。
【0007】
【課題を解決するための手段】上記目的を達成するた
め、発明では、シミュレーションすべきアプリケーシ
ョンソフトを記憶しているアプリケーションソフト記憶
手段と、ターゲットのマイクロコンピュータのメモリ内
容を保持すべき領域を有しているメモリ内容保持手段
と、ターゲットのマイクロコンピュータのレジスタ内容
を保持すべき領域を有しているレジスタ内容保持手段
と、アプリケーションソフト記憶手段に記憶されている
アプリケーションソフトにおける次にシミュレーション
実行すべき一命令をメモリ内容やレジスタ内容に基づい
て決定する実行命令決定手段と、シミュレーション実行
すべき命令をメモリ内容やレジスタ内容に基づいてシミ
ュレーション実行し、変更されたメモリ内容やレジスタ
内容をメモリ内容保持手段やレジスタ内容保持手段に保
持させるシミュレーション実行手段と、前記シミュレー
ション実行手段で実行した命令がループを構成するする
か否かを検出するループ検出手段と、前記ループ検出手
段でループが検出されたとき、そのループが短縮実行で
きるループか否かを判定する短縮実行判定手段と、短縮
実行できるループがループ回数分実行されたと仮定した
ときのメモリ及びレジスタの内容を予測しその結果をメ
モリ内容保持手段及びレジスタ内容保持手段に反映する
メモリ・レジスタ内容変更手段とから構成されることを
特徴とする。
【0008】また、本発明では、さらにループになる可
能性のある命令を保持しているループ命令テーブルと、
ループを短縮して実行することができない命令を保持し
ているループ短縮不能命令テーブルとを備え、前記ルー
プ検出手段は、前記シミュレーション実行手段で実行し
た命令がループ命令テーブルに存在し、かつその命令の
次に実行される命令のアドレスがその命令のアドレスよ
り小さく、更に次に実行される命令のアドレスは既に実
行されたアドレスであることによりループとなるべき命
令列を検出し、前記短縮実行判定手段は、前記ループ検
出手段で検出されたループとなるべき命令列中に、ルー
プ短縮不能命令テーブルに格納されている命令であるル
ープ短縮実行不能命令が存在するか否かを判定するルー
プ命令調査部と、存在しない場合は、そのループを短縮
実行できるループと判断する短縮実行判断部とから構成
されたことを特徴とする。
【0009】また、本発明では、さらにターゲットのマ
イクロコンピュータのメモリ内容及びレジスタ内容の変
更履歴とメモリのアクセスした履歴であるメモリアクセ
ス履歴とを保持すべき領域である履歴保持部を備え、前
記短縮実行判断部は、前記ループ検出手段で検出された
ループとなるべき命令列を一命令毎に実行する命令列実
行部と、前記命令列実行部が命令を実行する毎に実行し
た命令順に命令列を保存する命令列保存部と、前記命令
列実行部が命令を実行した際、その実行した命令により
メモリ内容保持手段やレジスタ内容保持手段にアクセス
しその内容を変更する場合は、その変更履歴やメモリア
クセス履歴を履歴保持部に保持するループメモリアクセ
ス保持部と、命令列保存部に保存されている命令列を再
度実行し、このとき実行されていない命令を実行した場
合と、メモリ内容保持手段やレジスタ内容保持手段にア
クセスした場合でその内容の変化が予測できない場合
と、更に命令列中に一度も実行されなかった命令であっ
てメモリ内容やレジスタ内容を変更する可能性のある命
令が存在する場合と以外の場合は、ループが短縮実行で
きる場合と判断するループ短縮実行可能判定部とからこ
う構成されたことを特徴とする。
【0010】また、本発明では前記メモリ・レジスタ内
容変更手段は、ループが短縮実行できる場合と判断され
た場合は、ループを抜ける命令を検出し、その命令とメ
モリの変更履歴とレジスタの変更履歴とメモリのアクセ
ス履歴とに基づいてそのループが終了するまでのループ
回数を短縮実行できるループ回数として算出するループ
実行回数算出部と、メモリ内容保持手段とレジスタ内容
保持手段と履歴保持部とに保持されている内容と算出さ
れた短縮実行できるループ回数とに基づいて、ループ回
数分実行されたと仮定したときのメモリ及びレジスタの
内容を予測しその結果をメモリ内容保持手段及びレジス
タ内容保持手段に反映する変更部とを備えたことを特徴
とする。
【0011】また、本発明では、さらにループとなるべ
き命令列の先頭アドレスと終了アドレスと、ループ回数
を算出するために必要な情報を引き出すためのアドレス
であるループ回数算出情報アドレスとを、前記変更部が
メモリ内容保持手段及びレジスタ内容保持手段に反映し
たとき保存するループ情報保存手段と、前記ループ算出
手段がループとなるべき命令列を検出したとき、当該命
令列の先頭アドレスと終了アドレスとがループ情報保存
手段に保存されていることによりループが再実行されて
いると判断するループ再実行判断手段とを備え、前記ル
ープ実行回数算出部は、更にループが再実行されている
と判断されたときは、ループ回数算出情報アドレスを用
いてループ回数の算出に必要な情報を引き出し短縮実行
できるループ回数を算出し、前記変更部は、更にループ
が再実行されていると判断されたときは、ループ回数算
出情報アドレスを用いて引き出した情報と短縮実行でき
るループ回数とに基づいて、ループ回数分実行されたと
仮定したときのメモリ及びレジスタに内容を予測しその
結果をメモリ内容保持手段及びレジスタ内容保持手段に
反映することを特徴とする。
【0012】また、本発明では、さらに割り込み動作を
シミュレートする割り込み処理手段と、割り込み動作を
シミュレートする時間である割り込み発生時間を管理し
ていて、割り込み発生時間になると前記割り込み処理手
段に割り込み動作をシミュレートさせる割り込み時間管
理手段と、割り込み時間管理手段に管理されている割り
込み発生時間に基づいて割り込みが発生するまでのルー
プ回数である割り込み発生ループ回数を算出する割り込
み発生回数算出手段と、前記ループ実行回数算出部が算
出したループ回数と、割り込み発生ループ回数とを比較
し、少ない方のループ回数を新たに短縮実行できるルー
プ回数と決定する割り込みループ回数決定手段とを備え
たことを特徴とする。
【0013】また、本発明では、さらにI/Oイベント
をシミュレートするI/Oイベント処理手段と、I/O
イベントが発生する時間であるI/Oイベント発生時間
を管理していて、I/Oイベント発生時間になると前記
I/Oイベント処理手段にI/Oイベントをシミュレー
トさせるI/Oイベント時間管理手段と、I/Oイベン
ト時間管理手段に管理されているI/Oイベント発生時
間に基づいてI/Oイベントが発生するまでのループ回
数であるI/Oイベントループ回数を算出するI/Oイ
ベント発生回数算出手段と、前記ループ実行回数算出部
が算出したループ回数と、I/Oイベントループ回数と
を比較し、少ない方のループ回数を新たに短縮実行でき
るループ回数と決定するI/Oループ回数決定手段とを
備えたことを特徴とする。
【0014】
【作用】上記構成によれば、アプリケーションソフト記
憶手段に記憶されているアプリケーションソフトにおけ
る次にシミュレーション実行すべき一命令が、メモリ内
容やレジスタ内容に基づいて実行命令決定手段によって
決定され、シミュレーション実行手段によりシミュレー
ション実行される。シミュレーション実行された命令が
ループを構成するか否かがループ検出手段により検出さ
れ、検出されたループが短縮実行できるループか否かが
短縮実行判定手段により判定される。短縮実行できるル
ープと判定された場合において、ループがループ回数分
実行されたと仮定したときのメモリ及びレジスタ内容
が、メモリ・レジスタ内容変更手段により予測され、そ
の予測結果がメモリ内容保持手段及びレジスタ内容保持
手段にメモリ・レジスタ内容変更手段により反映される
ので、ループを抜け出た後のシミュレーション実行すべ
き一命令が、実行命令決定手段により決定され、結果と
して、ループが短縮実行される。
【0015】また上記構成によれば、ループ命令テーブ
ルを備えているので、ループ命令テーブルを用いてルー
プとなるべき命令列が検出される。ループ短縮不能命令
テーブルを備えているので、ループ短縮不能命令テーブ
ルを用いてループとなるべき命令列におけるループが、
短縮実行できるループであるか否かが短縮実行判定手段
により判定される。
【0016】また上記構成によれば、前記ループ検出手
段で検出されたループとなるべき命令列が一命令毎に命
令列実行部によって実行されたときに、実行された命令
順に命令列が命令列保存部に保存され、メモリ内容の変
更履歴とメモリアクセス履歴とレジスタの変更履歴がル
ープメモリアクセス保存部により保存されるので、それ
らを用いてループが短縮実行できるループか否かがルー
プ短縮実行可能判定部によって判断される。
【0017】また上記構成によれば、ループが短縮でき
る場合は、ループを抜ける命令を検出し、その命令とメ
モリの変更履歴とレジスタの変更履歴とメモリのアクセ
ス履歴とに基づいてそのループが終了するまでのループ
回数がループ実行回数算出部によって算出される。算出
されたループ回数と、メモリの変更履歴とレジスタの変
更履歴とに基づいて、ループ回数分実行されたと仮定し
たときのメモリ及びレジスタの内容が、変更部によって
予測され、その結果が反映されることにより、ループが
短縮実行された状態となる。
【0018】また上記構成によれば、ループとなるべき
命令列の先頭アドレスと終了アドレスとループ回数算出
情報アドレスとがループ情報保存手段に保存されるの
で、前記ループ検出手段がループとなるべき命令列を検
出したとき、当該命令列の先頭アドレスと終了アドレス
とが情報保存手段に保存されていることにより、そのル
ープが再実行されていることがループ再実行判断手段に
より判断される。ループが再実行されていると判断され
たときは、ループ回数算出情報アドレスを用いてループ
回数が算出され、そのループ回数とループ回数算出情報
アドレスとを用いてループ回数分実行されたと仮定した
ときのメモリ及びレジスタが、変更部によって予測さ
れ、その結果が反映される。
【0019】また上記構成によれば、割り込み発生時間
が割り込み時間管理手段に管理されていて、その割り込
み発生時間に基づいて割り込み発生ループ回数が割り込
み発生回数算出手段により算出される。この割り込み発
生ループ回数と、前記ループ実行回数算出部が算出した
ループ回数とが割り込みループ回数決定手段によって比
較され、少ない方のループ回数が新たに短縮実行できる
ループ回数と決定される。
【0020】また上記構成によれば、I/Oイベント発
生時間がI/Oイベント発生時間管理手段に管理されて
いて、そのI/Oイベント発生時間に基づいてI/Oイ
ベントループ回数がI/Oイベント発生回数算出手段に
より算出される。このI/Oイベントループ回数と、前
記ループ実行回数算出部が算出したループ回数とがI/
Oループ回数決定手段によって比較され、少ない方のル
ープ回数が新たに短縮実行できるループ回数と決定され
る。
【0021】
【実施例】以下本発明の第1の実施例のソフトウェアシ
ミュレータについて、図面を参照しながら説明する。図
1は本発明の実施例におけるソフトウェアシミュレータ
及びソフトウェアシミュレータを取り巻く環境を示す図
である。本図は、コンピュータ本体110とディスク装
置120とキーボード130とディスプレイ140とか
ら構成されている。
【0022】コンピュータ本体110は、内部にソフト
ウェアシミュレータ100を有し、ディスク装置120
とキーボード130とディスプレイ140とに接続され
る。ソフトウェアシミュレータ100は、メモリ領域1
01とレジスタ領域102と命令実行部103と命令列
保存部104とループ命令テーブル105とループ短縮
不能命令テーブル106とから構成されている。
【0023】メモリ領域101は、ターゲットとするマ
イクロコンピュータのメモリ内容を保持する領域であ
る。シュミレーション実行時には、シミュレートするタ
ーゲットのアプリケーションソフトも格納される。シュ
ミレーション実行時に格納されるアプリケーションソフ
トの例としては、図9、図10、図11、図12、図1
3に示される。そしてこのアプリケーションソフトで使
用されている命令の定義は図14に示され、そのそれぞ
れの命令の意味が図15、図16、図17に示される。
【0024】レジスタ領域102は、シミュレートする
ターゲットのマイクロコンピュータのレジスタ内容を保
持する領域である。命令列保存部104は、ループとな
るべき命令列とその命令列における命令を実行した順番
である実行番号とを保存する領域である。ループ命令テ
ーブル105は、図2に示されるようなテーブルで、ル
ープを構成する可能性のある命令が保持されている。
【0025】ループ短縮不能命令テーブル106は、図
3に示されるようなテーブルで、ループを短縮して実行
することができなくなる命令を保持している。履歴保持
部107は、メモリの変更した履歴であるメモリ変更履
歴とレジスタの変更した履歴であるレジスタ変更履歴と
メモリのアクセスした履歴であるメモリアクセス履歴が
保持される領域である。
【0026】命令実行部103は、ターゲットのアプリ
ケーションソフトの命令列を実行及び短縮実行する部分
であり、具体的には図4、図5の制御フロー図に示す。
まず、シミュレートすべきターゲットのアプリケーショ
ンソフトをディスク装置120からロードしメモリ領域
101に配置する(ステップS500)。レジスタ領域
102中のプログラムカウンタ(不図示)を用い、プロ
グラムカウンタが指し示す位置の命令を、順次、実行す
るとともに、ループを検出する(ステップS501〜ス
テップS506)。ループの検出は、実行した命令がル
ープ命令テーブル105に存在し、かつその命令の次に
実行される命令のアドレスがその命令のアドレスより小
さく、更に次に実行される命令のアドレスは以前に実行
されたアドレスであることにより行う。ここで、ループ
の検出は、現在実行している命令のアドレスをループ終
了アドレス、次に実行される命令のアドレスをループ先
頭アドレスとみなすことによりおこなう。
【0027】次に、検出されたループを構成する命令列
のなかに、短縮して実行することができない命令が存在
するか否かを、ループ短縮不能命令テーブル106と比
較することにより判断する(ステップS507、ステッ
プS508)。短縮して実行することができない命令が
存在しなければ、さらに、その命令列の命令を順次実行
し、かつ図6に示すような形式で実行した順にその命令
を命令列保存部104に保存し、かつ実行した順番であ
る実行番号も命令に付加して保存する(ステップS50
9〜ステップS513)。次に実行した命令が、メモリ
領域101やレジスタ領域102の内容を変更したかど
うかを判断し、変更している場合は、そのメモリ及びレ
ジスタの変更履歴として図7、図8のような形式で履歴
保持部107に保存する(ステップS514〜ステップ
S517)。次に、全ての命令列の命令を実行し終わっ
たら(ステップS511)、その命令列で構成されるル
ープが短縮実行可能か判断する(ステップS518、ス
テップS519)。ここで、ループが短縮実行可能かど
うかは、以下のようにして判断する。まず、ループの命
令列を再度実行する。このとき、前回実行されていない
命令を今回実行する場合は、ループの短縮実行不能と判
定する。また、メモリ又はレジスタにアクセスしてその
内容を更新する場合であって、前回実行したときのメモ
リ及びレジスタの内容の変化の割合である変化率と今回
実行したときの変化率が異なるときもループの短縮実行
不能と判定する。さらに、ループの命令列を順次先頭か
ら検査し、前回、今回の実行のどちらでも実行されなか
った命令であって、メモリ及びレジスタの内容を変更す
る可能性のある命令(MOV命令、ADD命令、SUB
命令、MUL命令など)が存在することを検出した場合
もループの短縮実行不能と判定する。
【0028】短縮実行不可能であれば、ステップS50
5に進み、短縮実行可能であればさらに、ループする回
数を算出する(ステップS520)。ループする回数
は、以下のように算出される。まず、ループを抜けるジ
ャンプ命令を検出する(ここで、ジャンプ命令は、図1
4に示されるように条件分岐命令と無条件分岐命令の2
種類存在する)。検出されたジャンプ命令が無条件分岐
命令であるときは、その無条件分岐命令に分岐する分岐
元の命令である条件分岐命令を検出する。そして、その
条件分岐命令がその無条件分岐命令に分岐する条件を算
出する。その条件とメモリ及びレジスタの変更履歴とメ
モリのアクセス履歴とに基づいてループ回数を算出す
る。一方、検出されたジャンプ命令が条件分岐命令であ
るときは、この命令によってループを抜ける条件を算出
し、その条件とメモリ及びレジスタの変更履歴とメモリ
のアクセス履歴とに基づいてループ回数を算出する。と
ころでループ回数が無限であると判定したときは、ある
予め決められた回数をループ回数とする。
【0029】次にループ回数とメモリ及びレジスタの変
化率から、ループ回数分実行されたと仮定したときのメ
モリとレジスタの内容を予測し、その予測内容を現在の
メモリ及びレジスタに反映させ、ループを短縮実行する
(ステップS521)。その後、レジスタ領域102の
プログラムカウンタの値をループ先頭アドレスに設定
し、通常のシミュレーションに戻る。
【0030】ディスク装置120は、ターゲットのマイ
クロコンピュータで動作すべきアプリケーションプログ
ラムを保持する。キーボード130は、ソフトウェアシ
ミュレータの操作指示を受け付ける。ディスプレイ14
0は、シミュレートされた結果等を表示する。次に、図
9に示される具体的なアプリケーションソフトの例を用
いたシミュレーション動作を説明するため、簡単に図9
のアプリケーションソフトの構造を説明し、その後にシ
ミュレーション動作について説明する。
【0031】図9は、本発明で実施されるべきアプリケ
ーションソフトの例である。これは、アセンブリ言語で
書かれているプログラムである。プログラムで使用され
ている命令は、図14に定義され、図15、図16、図
17にその意味が記載されている。92に示される部分
は、命令部である。91に示される部分は、このプログ
ラム内における命令行の相対的なアドレスを示すアドレ
ス部である。93に示される部分は、ループとなるべき
命令列が保存されるときに添付される命令列の実行番号
である。
【0032】次に、図9に示される具体的なアプリケー
ションソフトの例を用いた、ループを短縮実行できる場
合のシミュレーション動作を説明する。ここで、以下の
説明文の先頭には、1〜10などの番号がつけられてい
る。この番号は、処理のまとまり毎につけられている番
号であり、後に図10、図11・・・のアプリケーショ
ンソフトを用いてシミュレーション動作を説明する時に
使用するためのものである。
【0033】1、先頭の命令から順次通常のシミュレー
ション動作及びループの検索動作(ステップS501〜
ステップS506)を※2に示す行まで繰り返す。 2、ループ命令テーブル105には、「JMP」と「B
LT」が保持されているとすると、※2の行での命令
は、ループ命令テーブル105に存在する命令「BL
T」であるが、飛び先のアドレスが現在のアドレスより
大きいので、ループを構成しないと判断される(ステッ
プS503、ステップS504)。よってここでは通常
のシミュレーションを行う。
【0034】3、※3での行の命令も、2の場合と同様
に、ループを構成しないと判断される(ステップS50
3、ステップS504)。よってここでは通常のシミュ
レーションを行う。 4、以下※1に達するまで、通常のシミュレーション動
作及びループの検索動作を行う(ステップS501〜ス
テップS506)。
【0035】5、※1の行での命令「JMP」は、ルー
プ命令テーブル105に存在する命令であり、飛び先の
アドレスが現在のアドレスよりも小さいので、ループを
構成すると判断される(ステップS503、ステップS
504)。このとき、ループの先頭アドレスは、add
r3となり、ループの終了アドレスは、※1となる。 6、ループ短縮不能命令テーブル106には、「MU
L」が保持されているとする。ループが構成されると判
断された場合は、そのループ内の命令なかに、ループ短
縮不能命令テーブル106の保持している命令「MU
L」が存在しないかどうか判断する(ステップS50
7、ステップS508)。判断した結果、命令「MU
L」は存在しないので、次のステップに進む。
【0036】7、さらに、ループの先頭から順次命令を
実行するとともにその命令と、実行番号と、実行した命
令によりメモリ及びレジスタが変更された場合のメモリ
及びレジスタの変更履歴とが、図18、図19に示され
るように各命令行の実行毎に記録される(ステップS5
09、ステップS517)。図18(a)における図
は、実行番号1に示される命令の実行の後に、保存され
た命令とメモリ及びレジスタの変更履歴を示す。181
に示される部分は、実行番号1で保存した命令及び実行
番号である。この内181aは、保存した命令であり、
181bは、実行番号である。182で示される部分
は、メモリの変更履歴が保存されるべき部分である。1
83に示される部分は、保存したレジスタの変更履歴で
ある。この内183aは、実行番号1でアクセスしたレ
ジスタ名であり、183bは、レジスタに前回アクセス
したときレジスタの内容であり、183cは、今回レジ
スタにアクセスしたときのレジスタの内容であり、18
4dは、実行番号である。図18(b)における図は、
実行番号2に示される命令の実行の後に、保存された命
令とメモリ及びレジスタの変更履歴を示す。そして18
5などに示される「→」は、ポインタを表してる。以下
同様に図18(c)(d)・・・図19(g)における
図は、実行番号3、4・・・7に示される命令の実行の
後に、保存された命令とメモリ及びレジスタの変更履歴
を示す。メモリの変更履歴は、図19(f)に示される
ように保存される。182aは、実行番号6でアクセス
したメモリ名であり、182bは、メモリに前回アクセ
スしたときメモリの内容であり、182cは、今回メモ
リにアクセスしたときのメモリの内容であり、184d
は、実行番号である。
【0037】8、ループを再度実行し、ループが短縮実
行可能かどうかを調べる(ステップS518、ステップ
S519)。本例では、短縮実行可能と判断される。 9、短縮実行できるループ回数を算出する(ステップS
520)。本例では、ループを抜ける命令は、※3のJ
MP命令である。そしてこのJMP命令の前の命令が条
件分岐命令であるので、※3のJMP命令が実行される
ためには、BLT命令の条件が成立しなければ良い。B
LT命令の条件が成立しないのは、フラグが負でなけれ
ば良い、つまりCMP命令において、Reg1≧100
であれば良い。従って、実行番号7でのReg1の内容
は3であるので、97回ループを短縮することができ
る。
【0038】10、ループを短縮実行する(ステップS
521)。具体的には、求められたループの回数分実行
されたと仮定したときのメモリとレジスタの内容を予測
し、その予測内容を現在のメモリ及びレジスタに反映さ
せ、ループを短縮実行する。その後通常のシミュレーシ
ョンに戻る。次に、図10に示される具体的なアプリケ
ーションソフトの例を用いた、ループを短縮実行できな
い場合のシミュレーション動作を説明する。
【0039】図4、図5の動作フロー図においてステッ
プS501〜ステップS504の動作は、図9を用いて
説明したシミュレーション動作の説明1〜5と同様の手
順で行う。 6、ループ短縮不能命令テーブル106には、「MU
L」が保持されているとする。ループ内の命令のなか
に、ループ短縮不能命令テーブル106の保持している
命令「MUL」が存在するかどうかを判断する(ステッ
プS507、ステップS508)。判断した結果、命令
「MUL」が11に示す部分に存在するので、ステップ
S505に戻り、ループと判断されていたループの先頭
であるAddr3の命令から通常のシミュレーションを
行う。
【0040】次に、図11に示される具体的なアプリケ
ーションソフトの例を用いた、ループを短縮実行できな
い場合のシミュレーション動作を説明する。図4、図5
の動作フロー図においてステップS501〜ステップS
517の動作は、図9を用いて説明したシミュレーショ
ン動作の説明1〜7と同様の手順で行う。7の終了後
は、実行した命令と、実行番号と、実行した命令により
変更されたメモリ及びレジスタの変更履歴とメモリのア
クセス履歴とが、図20に示されるように記録されてい
る。
【0041】8、ループを再度実行し、ループが短縮実
行可能かどうかを調べる(ステップS518、ステップ
S519)。本例の場合では、図20のメモリの変更履
歴に示すように前回の実行でのMem1の変化率は、変
更前が1であり変更後が3であることより2であるのに
対して、再度実行したときは、Mem1の変化率が3と
なるので、短縮実行不可能と判断される。
【0042】以上のようにして、ループ命令を検出し、
そのループを実際の回数分実行することなく、実際にシ
ミュレーションした場合と同じ状態にすることで、その
ループの実際の処理時間を短縮することができる。例え
ば、タイマを使用したアプリケーションソフトの検証で
は、タイムアップ時刻まで、ループ処理で待っている場
合が多い。したがって、タイマのタイムアップ時刻まで
のループを短縮実行することにより、実際のタイムアッ
プ時刻まで待つことなしに、動作確認することができ
る。すなわち、本発明のソフトウェアシミュレータで
は、ターゲット上で数分または数十分タイマで待つよう
なアプリケーションソフトの動作検証をわずか数秒で動
作検証することができる。
【0043】以下本発明の第2の実施例のソフトウェア
シミュレータについて、図面を参照しながら説明する。
図21は本発明の実施例におけるソフトウェアシミュレ
ータの構成を取り巻く環境を示すものである。本図は、
コンピュータ本体110とディスク装置120とキーボ
ード130とディスプレイ140とから構成されてい
る。これらは、第1の実施例と同様であるので説明を省
略し、コンピュータ本体110に有されるソフトウェア
シミュレータ200について説明する。
【0044】ソフトウェアシミュレータ200の構成
は、第1の実施例の命令実行部103の代わりに命令実
行部203が設けられ、そしてループ短縮命令情報保存
部210が新たに設けられた以外は第1の実施例と同じ
である。以下異なった構成のみ説明する。ループ短縮命
令情報保存部210は、図22に示されるように、ルー
プの先頭アドレスとループの終了アドレスとループ回数
算出情報アドレスと次の要素へのポインタを保存してい
る。ここで、ループ回数算出情報アドレスは、ループ回
数を算出する際に必要とされる情報のアドレスのことで
あり、具体的には、当該ループのメモリ変更履歴とメモ
リアクセス履歴とが保持されている履歴保持部107に
おけるアドレスと、当該ループのレジスタの変更履歴が
保持されているレジスタ領域102におけるアドレス
と、当該ループを構成する命令列が保存されている命令
列保存部104におけるアドレスとである。
【0045】命令実行部203は、ターゲットのアプリ
ケーションソフトの命令列を実行及び短縮実行する部分
であり、具体的には、図23、図24の制御フロー図に
示す。この制御フロー図は、第一の実施例に制御フロー
図である図4、図5とほぼ同様であるので、異なってい
る所のみ説明する。異なっている点は二点ある。まず第
一点目として第一の実施例の図4におけるステップS5
04の下に、ループが以前に実行されたかの判断ステッ
プS523が追加された点である。二点目としてステッ
プS521の下にステップS522が追加された点であ
る。以下これらのステップについて説明する。
【0046】まずステップS522では、ステップS5
21で短縮実行したループについて、図22に示すよう
にループの先頭アドレスとループの終了アドレスとルー
プ回数算出情報アドレスとをリスト構造にてループ短縮
命令情報保存部210に保存する。ステップS523で
は、ステップS504にて検出されたループが以前に実
行されたかどうかを判断する。その判断は以下のように
して実行される。まずステップS504にて検出された
ループの先頭アドレスと終了アドレスとをループ短縮命
令情報保存部210の保存している先頭アドレスと終了
アドレスとそれぞれ比較する。一致しなければ、以下ス
テップS507に進む。一致すれば、同じループが以前
に実行したと判断する。以前に実行されたと判断された
ときはステップS507からステップS519までの処
理がスキップされ、ステップS520に進む。また、ス
テップS507からステップS519までの処理がスキ
ップされたときのステップS520でのループ回数の算
出は、ループ短縮命令情報保存部210の保存している
ループ回数算出情報アドレスを用い、ループ回数の算出
に必要な情報を引き出し、実施例1と同様の手法でルー
プ回数を算出する。同様に、ステップS521でのルー
プの短縮実行は、算出されたループ回数とループ回数算
出情報アドレスより引き出されるメモリ及びレジスタの
変化率とを用いて、ループ回数分実行されたと仮定した
ときのメモリとレジスタの内容を予測し、その予測結果
を現在のメモリ及びレジスタに反映させることにより行
う。
【0047】以上のようにして、一度短縮実行されたル
ープが再度実行されるとき、短縮実行の処理を一部省略
することにより実行時間をより短縮することが可能とな
る。以下本発明の第3の実施例のソフトウェアシミュレ
ータについて、図面を参照しながら説明する。図25は
本発明の実施例におけるソフトウェアシミュレータの構
成を取り巻く環境を示すものである。本図は、コンピュ
ータ本体110とディスク装置120とキーボード13
0とディスプレイ140とから構成されている。これら
は、第1の実施例と同様であるので説明を省略し、コン
ピュータ本体110に有されるソフトウェアシミュレー
タ300について説明する。
【0048】ソフトウェアシミュレータ300の構成
は、第1の実施例の命令実行部103の代わりに命令実
行部303が設けられ、そして割り込み処理部307と
時間管理部306が新たに設けられた以外は第1の実施
と同じである。以下異なっている構成要素のみ説明す
る。割り込み処理部307は、シミュレータ上で割り込
み動作をシミュレートする。
【0049】時間管理部308は、割り込み動作をシミ
ュレートする時の割り込み発生時間を管理していて、割
り込み発生時間になると割り込み処理部307を起動す
る。命令実行部303は、ターゲットのアプリケーショ
ンソフトの命令列を実行及び短縮実行する部分であり、
具体的には、図26、図27の制御フロー図に示す。こ
の制御フロー図は、第一の実施例の制御フロー図である
図4、図5とほぼ同様であるので、異なっている所のみ
説明する。図5の制御フロー図におけるステップS52
0とステップS521の間に、ステップS1301〜ス
テップS1305の処理ステップが追加されている点が
異なる。以下これらの処理ステップについて説明する。
まず第一の実施例におけるステップS520と同様の方
法で算出したループ終了条件が満たされるまでのループ
回数を算出する(ステップS520)。そして割り込み
処理が存在するがどうかを時間管理部308を参照する
ことにより判断する(ステップS1301)。ここで、
割り込み処理が存在しないときは、ループ終了条件が満
たされるまでのループ回数を短縮実行できるループ回数
としステップS521に進む(ステップS1305)。
割り込み処理が存在するときは、割り込み発生までのル
ープ回数を算出し(ステップS1302)、ループ終了
条件が満たされるまでのループ回数と比較する(ステッ
プS1303)。ここでステップS1302における割
り込み発生までのループ回数は、時間管理部308で管
理されている割り込み発生時間と1回ループするのに必
要な時間とに基づいて求められる。もし、割り込み発生
までのループの回数の方が、ループ終了条件が満たされ
るまでのループ回数よりも少ないときは、割り込み発生
までのループの回数を短縮実行できるループ回数として
ステップS521を実行する(ステップS1304)。
そうでないとき、つまりループ終了条件が満たされるま
でのループ回数の方が少ないときは、この回数を短縮実
行できるループ回数としてステップS521に進む(ス
テップS1305)。
【0050】次に、図12に示される具体的なアプリケ
ーションソフトの例を用いた、ループを短縮実行できる
場合のシミュレーション動作を説明する。図26、図2
7の動作フロー図においてステップS501〜ステップ
S519の動作は、図9を用いて説明したシミュレーシ
ョン動作の説明1〜8と同様の手順で行う。また、実行
した命令と、実行番号と、実行した命令によりメモリ及
びレジスタが変更された場合のメモリ及びレジスタの変
更履歴とメモリのアクセス履歴とが、図28に示される
ように記録される。
【0051】9、短縮実行できるループ回数を算出する
(ステップS520〜ステップS1305)。具体的に
は、まずループ終了条件が満たされるまでのループ回数
を算出する(ステップS520)。この場合、無限ルー
プとなるので、適当な値500回をループ終了条件が満
たされるまでのループ回数とみなす。次に、時間管理部
308が管理している割り込み発生までの時間が100
0サイクルであり、そして1回ループするのに必要な時
間が5サイクルであれば割り込み発生までのループ回数
は、200回と算出される(ステップS1301、ステ
ップS1302)。次に、ループ終了条件が満たされる
までのループ回数と割り込み発生までのループ回数とを
比較すると割り込み発生までの回数の方が回数が少ない
ので、割り込みが先に発生すると判断し、割り込み発生
までのループの回数を短縮実行できるループ回数とする
(ステップS1303、ステップS1304)。このと
き、割り込み発生までのループ回数は、200回である
が、短縮実行できる回数は、199回に設定される。そ
の理由は、200回に設定すると、ループ短縮実行した
時と同時に割り込みが発生するので、それを防ぐためで
ある。
【0052】10、ループを短縮実行する(ステップS
521)。具体的には、求められたループの回数分実行
されたと仮定したときのメモリとレジスタの内容を予測
し、その予測内容を現在のメモリ及びレジスタに反映さ
せ、ループを短縮実行する。その後通常のシミュレーシ
ョンに戻る。 以上のようにして、ループしている最中に割り込みが発
生するときでも、割り込み発生までループを短縮実行
し、割り込み発生時には通常のシミュレーション処理に
戻すことで、割り込みが発生する時でも、正しく割り込
み処理をシミュレーションしかつループを短縮実行する
ことができる。
【0053】以下本発明の第4の実施例のソフトウェア
シミュレータについて、図面を参照しながら説明する。
図29は本発明の実施例におけるソフトウェアシミュレ
ータの構成を取り巻く環境を示すものである。本図は、
コンピュータ本体110とディスク装置120とキーボ
ード130とディスプレイ140とから構成されてい
る。これらは、第1の実施例と同様であるので説明を省
略し、コンピュータ本体110に有されるソフトウェア
シミュレータ400について説明する。
【0054】ソフトウェアシミュレータ400の構成
は、第1の実施例の命令実行部103の代わりに命令実
行部403が設けられ、そしてI/O処理部407と時
間管理部408が新たに設けられた以外は第1の実施と
同じである。以下異なっている構成要素のみ説明する。
I/O処理部407は、シミュレータ上でI/Oイベン
トをシミュレートする。
【0055】時間管理部408は、I/Oイベントが発
生するまでの時間を管理していて、I/Oイベントが発
生する時間になるとI/O処理部407を起動する。命
令実行部403は、ターゲットのアプリケーションソフ
トの命令列を実行及び短縮実行する部分であり、具体的
には、図30、図31の制御フロー図に示す。この制御
フロー図は、第一の実施例に制御フロー図である図4、
図5とほぼ同様であるので、異なっている所のみ説明す
る。図5の制御フロー図におけるステップS520とス
テップS521の間に、ステップS1501〜ステップ
S1505の処理ステップが追加されている点が異な
る。以下これらの処理ステップについて説明する。まず
第一の実施例におけるステップS520と同様の方法で
算出したループ終了条件が満たされるまでのループ回数
を算出する(ステップS520)。そしてI/Oイベン
トが存在するがどうかを時間管理部408を参照するこ
とにより判断する(ステップS1501)。ここで、I
/Oイベントが存在しないときは、ループ終了条件が満
たされるまでのループ回数を短縮実行できるループ回数
としステップS521を実行する(ステップS150
5)。I/Oイベントが存在するときは、I/Oイベン
ト発生までのループ回数を算出し(ステップS150
2)、ループ終了条件が満たされるまでのループ回数と
比較する(ステップS1503)。ここでステップS1
502におけるI/Oイベント発生までのループ回数
は、時間管理部408で管理されているI/Oイベント
が発生するまでの時間と1回ループするのに必要な時間
とに基づいて求められる。もし、I/Oイベント発生ま
でのループの回数の方が、ループ終了条件が満たされる
までのループの回数よりも少ないときは、I/Oイベン
ト発生までのループ回数を短縮実行できるループ回数と
してステップS521を実行する(ステップS130
4)。そうでない時、つまり終了条件が満たされるまで
のループ回数の方が少ない時は、この回数を短縮実行で
きるループ回数としてステップS521に進む(ステッ
プS1305)。
【0056】次に、図13に示される具体的なアプリケ
ーションソフトの例を用いた、ループを短縮実行できる
場合のシミュレーション動作を説明する。図30、図3
1の動作フロー図においてステップS501〜ステップ
S519の動作は、図9を用いて説明したシミュレーシ
ョン動作の説明1〜8と同様の手順で行う。また、実行
した命令と、実行番号と、実行した命令によりメモリ及
びレジスタが変更された場合のメモリ及びレジスタの変
更履歴とメモリのアクセス情報とが、図32に示される
ように記録される。
【0057】9、短縮実行できるループ回数を算出する
(ステップS520〜ステップS1505)。具体的に
は、まずループ終了条件が満たされるまでのループ回数
を算出する(ステップS520)。この場合、無限ルー
プとなるので、ループ回数を計測できず、適当な値50
0回をループ終了条件が満たされるまでのループ回数と
みなす。次に、時間管理部408が管理しているI/O
イベント発生までの時間が1000サイクルであり、そ
してループの命令列を1回ループさせるのに必要な時間
が10サイクルであれば割り込み発生までのループ回数
は、100回と算出される(ステップS1501、ステ
ップS1502)。次に、ループ終了条件が満たされる
までのループ回数とI/Oイベント発生までのループ回
数とを比較するとI/Oイベント発生までの回数の方が
回数が少ないので、I/Oイベントが先に発生すると判
断し、I/Oイベント発生までのループの回数を短縮実
行できるループ回数とする(ステップS1503、ステ
ップS1504)。このとき、I/Oイベント発生まで
のループ回数は、100回であるが、短縮実行できる回
数は、99回に設定される。その理由は、100回に設
定すると、ループ短縮実行した時と同時にI/Oイベン
トが発生するのを防ぐためである。
【0058】以上のようにして、ループ中にI/Oイベ
ントが発生するときでも、I/Oイベント発生時までル
ープを短縮実行し、I/Oイベント発生時には通常のシ
ミュレーション処理に戻すことで、正しくシミュレーシ
ョン実行しかつループを短縮することができる。なお、
使用されている命令は、代表的なもののみを使用してい
るため、これら以外の命令を使用することも当然考えら
れる。
【0059】また、ループ命令テーブルやループ短縮不
能命令テーブルに格納されている命令は、例示した命令
には限らない。また、アセンブリ言語を使用してシミュ
レートしているが、他の言語を使用することも考えられ
る。
【0060】以上のように、発明では、ループ検出手
段によりループが検出され、そのループが短縮実行でき
るか否かが短縮実行判定手段により判定され、メモリ・
レジスタ内容変更手段によってループが短縮実行された
と同じ状態となるので、ソフトウェアシミュレータ上で
のアプリケーションソフトの実行時間を短縮することが
できる。
【0061】また、本発明では、短縮実行可能なループ
が、ループ命令テーブルとループ短縮不能命令テーブル
とを用いて検出されるので、短縮実行可能なループの検
出が迅速に行われ、ソフトウェアシミュレータ上でのア
プリケーションソフトの実行時間を短縮することができ
る。また、本発明では、再度実行した命令列が保存され
ている命令列保存部とメモリ内容保持手段とレジスタ内
容保持手段と履歴保持部とを用いてループが短縮実行で
きるか否かがループ短縮実行可能判定部によって判断さ
れるので、より正確にループが短縮実行でき、ソフトウ
ェアシミュレータ上でのアプリケーションソフトの実行
時間を短縮することができる。
【0062】また、本発明では、実行回数算出部がルー
プの回数を算出し、その回数に基づいて変更部が、ルー
プ回数実行されたと仮定したときのメモリ及びレジスタ
の内容を予測しその結果がメモリ内容保持手段及びレジ
スタ内容保持手段に反映されるので、ループ回数分実行
された状態と同じ状態となり、より正確にループが短縮
実行されソフトウェアシミュレータ上でのアプリケーシ
ョンソフトの実行時間を短縮することができる。
【0063】また、本発明では、ループが短縮実行され
たとき、命令列の先頭アドレスと終了アドレスとループ
回数算出情報アドレスとがループ情報保持手段によって
保存され、ループが検出されたときにループ回数算出情
報アドレスを用いてそのループが再実行されたか否かが
判断でき、ループが再実行されている場合は、ループの
検出以降の処理であって、ループ回数の算出以前の処理
を省略することができるので、ループの短縮実行に要す
る処理を簡略化することが出来ることにより、アプリケ
ーションソフトの実行時間をさらに短縮することができ
る。
【0064】また、本発明では、割り込み時間管理手段
に管理されている割り込み発生時間に基づいて、短縮実
行できるループ回数が割り込みループ回数決定手段によ
って決定され、決定されたループ回数に基づいてループ
が短縮実行することができるので、割り込み動作がシミ
ュレートされる場合であっても、ソフトウェアシミュレ
ータ上でのアプリケーションソフトの実行時間を短縮す
ることができる。
【0065】また、本発明では、I/Oイベント時間管
理手段に管理されているI/Oイベント発生時間に基づ
いて、短縮実行できるループ回数がI/Oイベントルー
プ回数決定手段によって決定され、決定されたループ回
数に基づいてループが短縮実行することができるので、
I/Oイベントがシミュレートされる場合であっても、
ソフトウェアシミュレータ上でのアプリケーションソフ
トの実行時間を短縮することができる。
【図面の簡単な説明】
【図1】第1の実施例におけるソフトウェアシミュレー
タ及びソフトウェアシミュレータを取り巻く環境を示す
図である。
【図2】ループ命令テーブル105を示す図である。
【図3】ループ短縮不能命令テーブル106を示す図で
ある。
【図4】命令実行部103の制御フローを示す図であ
る。
【図5】図4の続きの図である。
【図6】命令列保存部104に格納形式を示す図であ
る。
【図7】履歴保持部107におけるメモリ変更履歴を示
す図である。
【図8】履歴保持部107におけるレジスタ変更履歴を
示す図である。
【図9】シミュレートするターゲットのアプリケーショ
ンソフトの例である。
【図10】シミュレートするターゲットのアプリケーシ
ョンソフトの例である。
【図11】シミュレートするターゲットのアプリケーシ
ョンソフトの例である。
【図12】シミュレートするターゲットのアプリケーシ
ョンソフトの例である。
【図13】シミュレートするターゲットのアプリケーシ
ョンソフトの例である。
【図14】アプリケーションソフトで使用されている命
令の定義を示す表である。
【図15】転送命令を説明するための図である。
【図16】算術演算命令を説明するための図である。
【図17】比較・ジャンプ命令を説明するための図であ
る。
【図18】メモリ及びレジスタの変更履歴を示す図であ
る。
【図19】図18の続きの図である。
【図20】メモリ及びレジスタの変更履歴とメモリのア
クセス履歴とを示す図である。
【図21】第2の実施例におけるソフトウェアシミュレ
ータ及びソフトウェアシミュレータを取り巻く環境を示
す図である。
【図22】ループ短縮命令情報保存部210が保存して
いる内容を示す図である。
【図23】命令実行部203の制御フローを示す図であ
る。
【図24】図23の続きの図である。
【図25】第3の実施例におけるソフトウェアシミュレ
ータ及びソフトウェアシミュレータを取り巻く環境を示
す図である。
【図26】命令実行部303の制御フローを示す図であ
る。
【図27】図26の続きの図である。
【図28】メモリ及びレジスタの変更履歴とメモリのア
クセス履歴とを示す図である。
【図29】第4の実施例におけるソフトウェアシミュレ
ータ及びソフトウェアシミュレータを取り巻く環境を示
す図である。
【図30】命令実行部403の制御フローを示す図であ
る。
【図31】図30の続きの図である。
【図32】メモリ及びレジスタの変更履歴とメモリのア
クセス履歴とを示す図である。
【符号の説明】
110 コンピュータ本体 100 ソフトウェアシミュレータ 101 メモリ領域 102 レジスタ領域 103 命令実行部 104 命令列保存部 105 ループ命令テーブル 106 ループ短縮不能命令テーブル 120 ディスク装置 130 キーボード 140 ディスプレイ 200 ソフトウェアシミュレータ 203 命令実行部 210 ループ短縮命令情報保存部 300 ソフトウェアシミュレータ 307 割り込み処理部 308 時間管理部 400 ソフトウェアシミュレータ 403 命令実行部 407 I/O処理部 408 時間管理部
フロントページの続き (56)参考文献 特開 昭62−194549(JP,A) 特開 昭63−58550(JP,A) 特開 平1−159743(JP,A) 特開 平7−295832(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 11/28 G06F 9/44 G06F 9/455

Claims (20)

    (57)【特許請求の範囲】
  1. 【請求項1】 ーゲットとするアプリケーションソフ
    トを擬似的に実行するソフトウェアシミュレーション装
    置であって、 次に実行される命令のアドレスが以前に実行されたアド
    レスであることにより、当該次に実行される命令のアド
    レスを先頭アドレスとし、現在のアドレスを終了アドレ
    スとする命令列を、前記アプリケーションソフトから検
    出する検出手段と、 前記検出手段により検出された命令列を、忠実にシミュ
    レーションすることなく短縮して実行することができる
    か否かを判定する短縮実行判定手段と、 前記短縮実行判定手段により短縮して実行することがで
    きると判定された命令列を短縮して実行することによ
    り、忠実にシミュレーションするよりも処理時間を短縮
    する短縮実行手段とを備えることを特徴とするソフトウ
    ェアシミュレーション装置。
  2. 【請求項2】 前記ソフトウェアシミュレーション装置
    は、さらに、前記命令列を構成する 可能性がある命令を保持してい
    令テーブルを備え、 前記検出手段は、現在のアドレスの 命令が命令テーブルに存在し、かつ、
    当該命令の次に実行される命令のアドレスが当該命令の
    アドレスよりも小さく、更に次に実行される命令のアド
    レスは以前に実行されたアドレスであることにより、
    命令列を検出することを特徴とする請求項1記載の
    ソフトウェアシミュレーション装置
  3. 【請求項3】 ーゲットとするアプリケーションソフ
    トを擬似的に実行するソフトウェアシミュレーション装
    置であって、 命令列のなかに存在すると、当該命令列を、忠実にシミ
    ュレーションすることなく短縮して実行することができ
    なくなる命令を保持している短縮不能命令テーブルと、 判定対象となる命令列を検出する検出手段と、 前記検出手段により検出された命令列のなかに、短縮不
    能命令テーブルに保持されている命令が存在するか否か
    を判定し、存在しない場合は、当該命令列を、忠実にシ
    ミュレーションすることなく短縮して実行することがで
    きると判断する短縮実行判定手段と、 前記短縮実行判定手段により短縮して実行することがで
    きると判定された命令列を短縮して実行することによ
    り、忠実にシミュレーションするよりも処理時間を短縮
    する短縮実行手段とを備えることを特徴とするソフトウ
    ェアシミュレーション装置。
  4. 【請求項4】 ーゲットとするアプリケーションソフ
    トを擬似的に実行するソフトウェアシミュレーション装
    置であって、 命令列のなかに存在すると、当該命令列を、忠実にシミ
    ュレーションすることなく短縮して実行することができ
    なくなる命令を保持している短縮不能命令テーブルと、 判定対象となる命令列を検出する検出手段と、 前記検出手段により検出された命令列のなかに、短縮不
    能命令テーブルに保持されている命令が存在する場合
    と、前記検出手段により検出された命令列が再度実行さ
    れる際に、前回実行されていない命令を今回実行する場
    合と、メモリ又はレジスタの内容が更新される場合であ
    って、前回実行されたときのメモリ及びレジスタの内容
    の変化と、今回実行されたときの内容の変化とに基づい
    て、メモリ及びレジスタの内容の変化が予測できない場
    合と、前回、及び、今回のどちらでも実行されていない
    命令であって、メモリ又はレジスタの内容を変更する可
    能性のある命令が存在する場合とにおいては、当該命令
    列を、忠実にシミュレーションすることなく短縮して実
    行することができないと判断する短縮実行判定手段と、 前記検出手段により検出され、かつ、前記短縮実行判定
    手段により短縮して実行できないと判定されなかった命
    令列を、短縮して実行することにより、忠実にシミュレ
    ーションするよりも処理時間を短縮する短縮実行手段と
    を備えることを特徴とするソフトウェアシミュレーショ
    ン装置。
  5. 【請求項5】 ーゲットとするアプリケーションソフ
    トを擬似的に実行するソフトウェアシミュレーション装
    置であって、 メモリの変更された履歴であるメモリ変更履歴と、レジ
    スタの変更された履歴であるレジスタ変更履歴と、メモ
    リのアクセスされた履歴であるメモリアクセス履歴とを
    保持する履歴保持手段と、 前記アプリケーションソフトの中から、短縮して実行す
    ることができるループを検出するループ検出手段と、 メモリ又はレジスタの内容が更新される場合に、メモリ
    及びレジスタの内容の変化の割合である変化率を算出す
    る変化率算出手段と、 前記ループ検出手段により検出された短縮して実行する
    ことができるループを抜ける条件を算出し、算出した条
    件と、前記履歴保持手段に保持されたメモリ変更履歴と
    レジスタ変更履歴とメモリアクセス履歴とに基づいて、
    当該ループが終了するまでのループ回数を算出するルー
    プ実行回数算出手段と、 前記変化率算出手段により算出された変化率と前記ルー
    プ実行回数算出手段により算出されたループ回数とに基
    づいて、当該ループがループ回数分実行されたと仮定し
    たときのメモリ及びレジスタの内容を予測し、その結果
    をメモリ内容保持手段及びレジスタ内容保持手段の内容
    に反映させる事により、前記ループ検出手段により検出
    されたループを、短縮して実行することにより、忠実に
    シミュレーションするよりも処理時間を短縮する短縮実
    行手段とを備えることを特徴とするソフトウェアシミュ
    レーション装置。
  6. 【請求項6】 前記ソフトウェアシミュレーション装置
    は、さら 一度短縮して実行されたループを構成する命令列の、
    頭アドレスと終了アドレスと、ループ回数を算出するた
    めに必要な情報であるループ回数算出情報とを保存する
    ループ情報保存手段と、 前記ループ検出手段によりループ検出されたとき、
    出されたループの先頭アドレスと終了アドレスとを、
    ープ情報保存手段に保存されている先頭アドレスと終了
    アドレスとそれぞれ比較し、一致すれば、同じループを
    以前に実行したと判断するループ再実行判断手段とを備
    え、 前記ループ実行回数算出手段は、ループ再実行判断手段により同じ ループを以前に実行し
    と判断された場合には、ループ回数算出情報を用い
    短縮できるループ回数を算出することを特徴とする請求
    5に記載のソフトウェアシミュレーション装置
  7. 【請求項7】 前記ソフトウェアシミュレーション装置
    は、さら 割り込み動作をシミュレートする割り込み処理手段と、 割り込み動作をシミュレートする時割り込み発生時間
    を管理していて、割り込み発生時間になると前記割り込
    み処理手段に割り込み動作をシミュレートさせる割り込
    み時間管理手段と 割り込み時間管理手段により管理される割り込み発生時
    と、1回ループするのに必要な時間とに基づいて
    り込みが発生するまでのループ回数を算出する割り込み
    発生回数算出手段と、 前記ループ実行回数算出手段により算出されたループ回
    数と、前記割り込み発生回数算出手段により算出された
    ループ回数とを比較し、少ない方のループ回数を
    きるループ回数とする割り込みループ回数決定手段と
    を備えことを特徴とする請求項5及び請求項6の何れ
    か1項に記載のソフトウェアシミュレーション装置
  8. 【請求項8】 前記ソフトウェアシミュレーション装置
    は、さら I/OイベントをシミュレートするI/Oイベント処理
    手段と、 I/Oイベントが発生するまでの間を管理していて、
    I/Oイベント発生する時間になると前記I/Oイベ
    ント処理手段にI/OイベントをシミュレートさせるI
    /Oイベント時間管理手段と I/Oイベント時間管理手段により管理されるI/Oイ
    ベント発生するまでの時間と、1回ループするのに必
    要な時間とに基づいてI/Oイベントが発生するまで
    のループ回数を算出するI/Oイベント発生回数算出手
    段と、 前記ループ実行回数算出手段により算出されたループ回
    数と、前記I/Oイベント発生回数算出手段により算出
    されたループ回数とを比較し、少ない方のループ回数
    縮できるループ回数とするI/Oループ回数決定
    手段とを備えことを特徴とする請求項5及び請求項
    の何れか1項に記載のソフトウェアシミュレーション装
  9. 【請求項9】 プログラムで使用されている命令を実行
    する命令実行装置であって、 前記プログラムを記憶しているプログラム記憶手段と、 前記プログラム記憶手段に記憶されているプログラム内
    における所定の命令列を実行し、当該所定の命令列を前
    回実行したときの実行結果の内容の変化の割合である変
    化率に基づいて、当該所定の命令列の実行結果の内容を
    予測する実行手段とを備えることを特徴とする命令実行
    装置。
  10. 【請求項10】 前記実行手段は、 前記変化率に加え前記所定の命令列の実行回数に基づい
    て、前記所定の命令列が当該回数分実行されたと仮定し
    たときの実行結果の内容を予測する予測手段と、 前記予測手段により予測された内容を実行結果とする短
    縮実行手段とを含むことを特徴とする請求項9に記載の
    命令実行装置。
  11. 【請求項11】 前記実行手段は、 前記所定の命令列を再度実行し、前回実行したときの変
    化率と今回実行したときの変化率とが異なるか否かを判
    定し、変化率が異なるときには短縮実行不可能と判定す
    る短縮実行判定手段を含むことを特徴とする請求項9及
    び10の何れか1項に記載の命令実行装置。
  12. 【請求項12】 前記短縮実行判定手段は、さらに、 前回実行されていない命令を今回実行する場合、及び、
    前回、今回のどちらでも実行されなかった命令であっ
    て、実行結果の内容を変更する可能性のある命令が存在
    する場合には短縮実行不可能と判定することを特徴とす
    る請求項11に記載の命令実行装置。
  13. 【請求項13】 前記命令実行装置は、さらに、 前記所定の命令列を構成する可能性のある命令を保持し
    ている命令テーブルを備え、 前記実行手段は、さらに、 実行した命令が前記命令テーブルに存在し、かつその命
    令の次に実行される命令のアドレスが、前記実行した命
    令のアドレスよりも小さく、更に前記次に実行される命
    令のアドレスは以前に実行されたアドレスである場合
    に、前記次に実行 される命令のアドレスを先頭アドレス
    とし、前記実行した命令のアドレスを最終アドレスとす
    る命令列を前記所定の命令列として検出する検出手段を
    含むことを特徴とする請求項9〜12の何れか1項に記
    載の命令実行装置。
  14. 【請求項14】 前記実行手段は、さらに、 ループを構成する命令列を前記所定の命令列として検出
    する検出手段を含むことを特徴とする請求項9〜12の
    何れか1項に記載の命令実行装置。
  15. 【請求項15】 記憶されているプログラムに使用され
    ている命令を実行する命令実行方法であって、 前記記憶されているプログラム内における所定の命令列
    を実行し、当該所定の命令列を前回実行したときの実行
    結果の内容の変化の割合である変化率に基づいて、当該
    所定の命令列の実行結果の内容を予測する実行ステップ
    を備えることを特徴とする命令実行方法。
  16. 【請求項16】 前記実行ステップは、 前記変化率に加え前記所定の命令列の実行回数に基づい
    て、前記所定の命令列が当該回数分実行されたと仮定し
    たときの実行結果の内容を予測する予測サブステップ
    と、 前記予測サブステップにより予測された内容を実行結果
    とする短縮実行サブステップとを含むことを特徴とする
    請求項15に記載の命令実行方法。
  17. 【請求項17】 前記実行ステップは、 前記所定の命令列を再度実行し、前回実行したときの変
    化率と今回実行したときの変化率とが異なるか否かを判
    定し、変化率が異なるときには短縮実行不可能と判定す
    る短縮実行判定サブステップを含むことを特徴とする請
    求項15及び16の何れか1項に記載の命令実行方法。
  18. 【請求項18】 前記短縮実行判定サブステップは、さ
    らに、 前回実行されていない命令を今回実行する場合、及び、
    前回、今回のどちらでも実行されなかった命令であっ
    て、実行結果の内容を変更する可能性のある命令が存在
    する場合には短縮実行不可能と判定すること を特徴とす
    る請求項17に記載の命令実行方法。
  19. 【請求項19】 前記実行ステップは、さらに、 実行した命令が、前記所定の命令列を構成する可能性の
    ある命令を保持している命令テーブルに存在し、かつそ
    の命令の次に実行される命令のアドレスが、前記実行し
    た命令のアドレスよりも小さく、更に前記次に実行され
    る命令のアドレスは以前に実行されたアドレスである場
    合に、前記次に実行される命令のアドレスを先頭アドレ
    スとし、前記実行した命令のアドレスを最終アドレスと
    する命令列を前記所定の命令列として検出する検出サブ
    ステップを含むことを特徴とする請求項15〜18の何
    れか1項に記載の命令実行方法。
  20. 【請求項20】 前記実行ステップは、さらに、 ループを構成する命令列を前記所定の命令列として検出
    する検出サブステップを含むことを特徴とする請求項1
    5〜18の何れか1項に記載の命令実行方法。
JP20558894A 1994-08-30 1994-08-30 ソフトウェアシミュレータ Expired - Fee Related JP3362972B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP20558894A JP3362972B2 (ja) 1994-08-30 1994-08-30 ソフトウェアシミュレータ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP20558894A JP3362972B2 (ja) 1994-08-30 1994-08-30 ソフトウェアシミュレータ

Publications (2)

Publication Number Publication Date
JPH0869392A JPH0869392A (ja) 1996-03-12
JP3362972B2 true JP3362972B2 (ja) 2003-01-07

Family

ID=16509373

Family Applications (1)

Application Number Title Priority Date Filing Date
JP20558894A Expired - Fee Related JP3362972B2 (ja) 1994-08-30 1994-08-30 ソフトウェアシミュレータ

Country Status (1)

Country Link
JP (1) JP3362972B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4243463B2 (ja) 2002-08-19 2009-03-25 株式会社半導体理工学研究センター 命令スケジューリングのシミュレーション方法とシミュレーションシステム
JP5412900B2 (ja) * 2009-03-16 2014-02-12 株式会社リコー 組み込み用プログラムのシミュレータ及びシミュレーション方法
JP5602599B2 (ja) * 2010-11-30 2014-10-08 インターナショナル・ビジネス・マシーンズ・コーポレーション ループ検知装置、ループ検知方法及びループ検知プログラム

Also Published As

Publication number Publication date
JPH0869392A (ja) 1996-03-12

Similar Documents

Publication Publication Date Title
US5729554A (en) Speculative execution of test patterns in a random test generator
US6052524A (en) System and method for simulation of integrated hardware and software components
US7139936B2 (en) Method and apparatus for verifying the correctness of a processor behavioral model
US6983234B1 (en) System and method for validating processor performance and functionality
US6212493B1 (en) Profile directed simulation used to target time-critical crossproducts during random vector testing
JPH1196130A (ja) マルチプロセッシングシステムの性能評価方法および装置並びにマルチプロセッシングシステムの性能評価プログラムを格納した記憶媒体
JP3373607B2 (ja) プロセッサの制御機構検証用命令列の自動生成方法及び装置
EP2335170A1 (en) Simulated processor execution using branch override
CN106933727B (zh) 处理器中断机制的验证方法及验证装置
US20240061984A1 (en) A method for an automatic design and verification of a processor's programming and verification tools
JP3362972B2 (ja) ソフトウェアシミュレータ
JP2001209411A (ja) Plcシミュレータ
US20030070117A1 (en) Simulation apparatus and simulation method
CN119201695B (zh) 一种指令验证方法、装置、电子设备及存储介质
CN103678114A (zh) 产生断言的设备和方法以及验证处理器的设备和方法
US20020078422A1 (en) VLSI layout design jobs scheduling method
JP3147851B2 (ja) シミュレーション方法、シミュレーション装置及びシミュレーションプログラムを記憶した記憶媒体
JPS6022772B2 (ja) 擬似障害発生制御方式
Große et al. Simulation-based equivalence checking between SystemC models at different levels of abstraction
Bose Performance test case generation for microprocessors
CN109753308A (zh) 指令通路验证系统及指令通路监测方法
JPH07253909A (ja) マイクロプログラム検証方法
US20250284604A1 (en) Technique for generating tests for a processing device
EP4575876A1 (en) A method for an automatic design and verification of a processor's programming and simulation tools
JP3396365B2 (ja) シミュレーションベース論理検証用入力列の自動生成方法及び装置、その論理検証用入力列を生成するための状態集合時系列の出力方法及び装置

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees