米国特許情報 | 欧州特許情報 | 国際公開(PCT)情報 | Google の米国特許検索
 
     特許分類
A 農業
B 衣類
C 家具
D 医学
E スポ−ツ;娯楽
F 加工処理操作
G 机上付属具
H 装飾
I 車両
J 包装;運搬
L 化学;冶金
M 繊維;紙;印刷
N 固定構造物
O 機械工学
P 武器
Q 照明
R 測定; 光学
S 写真;映画
T 計算機;電気通信
U 核技術
V 電気素子
W 発電
X 楽器;音響


  ホーム -> 計算機;電気通信 -> 松下電器産業株式会社

発明の名称 シミュレータ
発行国 日本国特許庁(JP)
公報種別 公開特許公報(A)
公開番号 特開平7−160537
公開日 平成7年(1995)6月23日
出願番号 特願平5−304136
出願日 平成5年(1993)12月3日
代理人 【弁理士】
【氏名又は名称】中島 司朗
発明者 伊藤 謙次 / 田中 裕彦 / 中埜 善夫
要約 目的
CPUシミュレーション部と周辺機能シミュレーション部が、並列にシミュレーションを実行するシミュレータにおいて必要な時だけ同期を実現することができ、処理速度が高速なシミュレータを提供することを目的とする。

構成
CPUシミュレーション部11、周辺機能シミュレーション部14と、CPUシミュレーション部11の内部状態が変化するごとに状態変化が始まる直前の時点のCPU経過時間と内部状態と対応づけて管理する履歴情報管理部13と、周辺機能シミュレーション部14から、CPUシミュレーション部11に割込み要求があった場合、割り込みを行う時点のCPU経過時間を算出し、状態復元部に出力する入出力管理部18と、割り込みを行なう時点のCPU経過時間Tが入力されると、これに基づいて履歴情報管理部13の格納内容を参照し、CPUシミュレーション部11を割り込みを行なうことのできる状態に戻す状態復元部16とを有する。
特許請求の範囲
【請求項1】CPUの命令実行をシミュレーションを行なうCPUシミュレーション部と、CPUの周辺装置のシミュレーションを行なう周辺機能シミュレーション部と、前記CPUシミュレーション部でシミュレーションした命令を実機上で処理した場合に要する時間の累計であるCPU経過時間を格納するCPU経過時間管理部と、前記CPUシミュレーション部の内部状態が変化するごとに状態変化が始まる直前の時点のCPU経過時間を、前記CPU経過時間管理部から取りだし、前記CPUシミュレーション部の内部状態と対応づけて履歴情報として管理する履歴情報管理部と、前記周辺機能シミュレーション部でシミュレーションした処理を実機上で処理した場合に要する時間の累計である周辺機能経過時間を格納する周辺機能経過時間管理部と、前記CPUシミュレーション部から、前記周辺機能シミュレーション部に対して処理要求があった場合、前記CPU経過時間管理部からCPU経過時間を取りだし、前記周辺機能経過時間管理部から周辺機能経過時間を取りだし、前記CPU経過時間と前記周辺機能経過時間を対応づけて後述する周辺処理情報格納部に出力し、前記周辺機能シミュレーション部から、前記CPUシミュレーション部に割込み要求があった場合、前記周辺機能経過時間管理部から割り込みが発生した時点の周辺機能経過時間を取り出し、この割り込みが発生する基となった処理要求が発生した時点のCPU経過時間と周辺機能経過時間とを取りだし、取り出されたそれぞれの経過時間を項とする演算により、CPUシミュレーション部がどの時点にもどって割り込みを行なうのか、割り込みを行う時点のCPU経過時間を算出し、前記状態復元部に対して算出された割り込みを行う時点のCPU経過時間出力する入出力管理部と、前記入出力管理部より出力された処理要求が発生した時点のCPU経過時間と周辺機能経過時間とを対応づけた周辺処理情報を格納する周辺処理情報格納部と、前記入出力管理部により出力された割り込みを行なう時点のCPU経過時間Tが入力されると、前記履歴情報管理部の格納内容を参照し、格納されている履歴情報のうちCPU経過時間が入力されたCPU経過時間Tに等しい、あるいは入力されたCPU経過時間Tより大きくかつ入力されたCPU経過時間Tに最も近いという条件をみたす履歴情報Hを前記履歴情報管理部から検索し、前記CPUシミュレーション部を前記履歴情報Hの内部状態と同じ状態にし、前記CPU経過時間管理部に格納されているCPU経過時間を入力されたCPU経過時間Tに更新する状態復元部と、を備えることを特徴とするシミュレータ。
【請求項2】上記周辺機能シミュレーション部が複数存在し、各周辺機能シミュレーション部はそれぞれ異なる識別子を有しており、各周辺機能シミュレーション部に対応して、上記周辺機能経過時間管理部が存在し、上記周辺処理情報格納部は、周辺処理情報として、さらに、周辺処理情報に関係する周辺機能シミュレーション部の識別子と、割り込み処理を行なう時点のCPU経過時間とを格納し、上記入出力制御部が、周辺処理情報出力の際に処理要求を受けた周辺機能シミュレーション部の識別子も出力し、さらに、算出された割り込みを行なう時点のCPU経過時間を、算出の際にとり出した周辺処理情報と対応付けて周辺処理情報格納部に出力し、さらに、上記シミュレータは、必要に応じて周辺処理情報の削除を行う周辺処理情報管理部と、CPUシミュレーション部のシミュレーションにおいて、正しい順序で、割り込み処理が行なわれるように、一度行なった割り込み処理をCPUシミュレーション部に再度行なわせる割り込み再要求制御部と、を有することを特徴とする請求項1記載のシミュレータ。
【請求項3】上記周辺処理情報管理部は、周辺機能シミュレーション部のシミュレーションが終了した際に、周辺処理情報格納部の格納内容を参照し、シミュレーションが終了した周辺機能シミュレーション部と同じ識別子が格納されている周辺処理情報を検索し、当該周辺処理情報に入出力管理部によって算出された割り込み処理を行なう時点のCPU経過時間が格納されていないとき当該周辺処理情報の削除を行い、また、入出力管理部によって割り込み要求を行なう時点のCPU経過時間が算出された際に、周辺処理情報格納部の格納内容を参照し、算出されたCPU経過時間より後にだされた処理要求に関する周辺処理情報がある場合は、この周辺処理情報を削除し、また、周辺処理情報格納部の格納内容を参照し、最も古い割り込み処理を行なう時点のCPU経過時間Tを検索し、当該CPU経過時間TがCPU経過時間管理部に管理されている最も新しいCPU経過時間よりも古く、かつ上記CPU経過時間Tが格納さえれている周辺処理情報以外の周辺処理情報を参照した場合、処理要求が行なわれた時点のCPU経過時間が前記CPU経過時間Tより古く、かつ、割り込みを処理を行なう時点のCPU経過時間の値が格納されていない周辺処理情報が存在しない場合、上記CPU経過時間Tを含む周辺処理情報を削除し、上記、割り込み再発生制御部は、周辺処理情報格納部の格納内容を参照し、割り込み処理を行なう時点のCPU経過時間が現在のCPU経過時間管理部に管理されているCPU経過時間と等しい周辺処理情報があるかどうか検索し、有る場合は、CPUシミュレーション部が再度割り込み処理を行なう、ことを特徴とする請求項2記載のシミュレータ。
【請求項4】履歴情報管理部は、前記CPUシミュレーション部から前記周辺機能シミュレーション部に対して処理要求が発生した直後から前記周辺機能シミュレーション部から前記CPUシミュレーション部に対して割込み要求が発生するまでの間だけ動作することを特徴とする請求項1記載のシミュレータ。
【請求項5】履歴情報管理部は前記周辺処理情報格納部に前記周辺処理情報が1個以上格納されている間だけ動作することを特徴とする請求項2記載のシミュレータ。
【請求項6】上記状態復元部が、前記CPUシミュレーション部に割込み要求があった場合、前記履歴情報管理部に格納されている履歴情報のうち内部状態が割込み許可状態であり、且つCPU経過時間が前記経過時間Tに等しいあるいは前記経過時間Tより大きくかつ前記経過時間Tに最も近いという条件をみたす履歴情報Hを前記履歴情報管理部から検索し前記CPUシミュレーション部を前記履歴情報Hの内部状態と同じ状態にし、前記CPU経過時間管理部に格納されているCPU経過時間を前記経過時間Tに更新することを特徴とする請求項1、請求項2記載のシミュレータ。
発明の詳細な説明
【0001】
【産業上の利用分野】本発明はCPUの命令実行シミュレーションと周辺装置の機能シミュレーションを同期を取りつつ並列処理するシミュレータに関するものである。
【0002】
【従来の技術】シミュレータは、開発されたプログラムの命令実行が、実際の計算機上でどのように処理されていくかを模擬的に実行するものである。シミュレータには、CPUの命令実行シミュレーションを行なうCPUシミュレーション部と周辺装置の機能シミュレーションのを行なう周辺機能シミュレーション部が同期を取りつつ実行するものがある。
【0003】具体的には、CPUシミュレーション部が1ステップだけ命令実行シミュレーションを実行して、1ステップだけ命令実行シミュレーションを終了した時点で中断し、CPUシミュレーション部が中断した状態で、周辺機能シミュレーション部がCPUシミュレーション部の1ステップに相当する時間の周辺機能シミュレーションを実行して、処理を中断する。周辺機能シミュレーション部が中断後、CPUシミュレーション部は1ステップだけ命令実行シミュレーションを実行して中断するという手順を繰り返すというものである。(特開昭64−76236)
また、他のシミュレータとして、CPUシミュレーション部と周辺機能シミュレーション部とが並列して処理を進行しつつ、同期を行なうものがある。
【0004】具体的には、シミュレーション上での経過時間が一定間隔となるようにステップを定め、ステップごとに各々のシミュレーション部が同時に処理を開始し、全てのシミュレーション部の処理が終了したら次のステップに進むというものである。(特開平3−157779)
【0005】
【発明が解決しようとする課題】ところが、上記した従来のシミュレータでは、以下のような問題が生じる。特開昭64−76236のシミュレータでは、CPUシミュレーション部もしくは周辺機能シミュレーション部のどちらか一方は常に中断状態であり全体の処理速度が遅いという問題があった。
【0006】特開平3−157779では、各シミュレーション部のシミュレーションにかかる時間はまちまちであり、先に処理が終了したシミュレーション部は、同期の必要の有無にかかわらず、全てのシミュレーション部の処理が終了するまでは、次のステップに進むことはできず待機していなければならなかった。たとえば、指定されたデータを画面上に出力し、もしT秒以内にボタンが押されたならば、CPUに対して割り込み信号を発生する周辺機能の動作をシミュレーションする場合を考える。
【0007】CPUシミュレーション部の方が周辺機能シミュレーション部より短時間でシミュレーションする場合、この方法ではCPUシミュレーション部は自分の処理の終了後は、周辺機能シミュレーション部の処理が終了するまで、待機しなければならない。しかし、周辺機能ユニットから割込み信号が発生した時だけ同期をとればよいはずなので、割込み信号が発生しなかった場合、CPUシミュレーション部は無駄に待機することになる。
【0008】このように、無駄な待機をすることにより、シミュレータ全体の処理速度が遅くなるという問題があった。本発明は上記の従来の問題点を解決し、CPUシミュレーション部と周辺機能シミュレーション部が、並列にシミュレーションを実行するシミュレータにおいて必要な時だけ同期を実現することができ、処理速度が高速なシミュレータを提供することを目的とする。
【0009】
【課題を解決するための手段】上記目的を達成するために、請求項1記載の発明は、CPUの命令実行をシミュレーションを行なうCPUシミュレーション部と、CPUの周辺装置のシミュレーションを行なう周辺機能シミュレーション部と、前記CPUシミュレーション部でシミュレーションした命令を実機上で処理した場合に要する時間の累計であるCPU経過時間を格納するCPU経過時間管理部と、前記CPUシミュレーション部の内部状態が変化するごとに状態変化が始まる直前の時点のCPU経過時間を、前記CPU経過時間管理部から取りだし、前記CPUシミュレーション部の内部状態と対応づけて履歴情報として管理する履歴情報管理部と、前記周辺機能シミュレーション部でシミュレーションした処理を実機上で処理した場合に要する時間の累計である周辺機能経過時間を格納する周辺機能経過時間管理部と、前記CPUシミュレーション部から、前記周辺機能シミュレーション部に対して処理要求があった場合、前記CPU経過時間管理部からCPU経過時間を取りだし、前記周辺機能経過時間管理部から周辺機能経過時間を取りだし、前記CPU経過時間と前記周辺機能経過時間を対応づけて後述する周辺処理情報格納部に出力し、前記周辺機能シミュレーション部から、前記CPUシミュレーション部に割込み要求があった場合、前記周辺機能経過時間管理部から割り込みが発生した時点の周辺機能経過時間を取り出し、この割り込みが発生する基となった処理要求が発生した時点のCPU経過時間と周辺機能経過時間とを取りだし、取り出されたそれぞれの経過時間を項とする演算により、CPUシミュレーション部がどの時点にもどって割り込みを行なうのか、割り込みを行う時点のCPU経過時間を算出し、前記状態復元部に対して算出された割り込みを行う時点のCPU経過時間出力する入出力管理部と、前記入出力管理部より出力された処理要求が発生した時点のCPU経過時間と周辺機能経過時間とを対応づけた周辺処理情報を格納する周辺処理情報格納部と、前記入出力管理部により出力された割り込みを行なう時点のCPU経過時間Tが入力されると、前記履歴情報管理部の格納内容を参照し、格納されている履歴情報のうちCPU経過時間が入力されたCPU経過時間Tに等しい、あるいは入力されたCPU経過時間Tより大きくかつ入力されたCPU経過時間Tに最も近いという条件をみたす履歴情報Hを前記履歴情報管理部から検索し、前記CPUシミュレーション部を前記履歴情報Hの内部状態と同じ状態にし、前記CPU経過時間管理部に格納されているCPU経過時間を入力されたCPU経過時間Tに更新する状態復元部と、を備えることを特徴とする。
【0010】請求項2記載の発明は、請求項1記載のシミュレータにおいて、上記周辺機能シミュレーション部が複数存在し、各周辺機能シミュレーション部はそれぞれ異なる識別子を有しており、各周辺機能シミュレーション部に対応して、上記周辺機能経過時間管理部が存在し、上記周辺処理情報格納部は、周辺処理情報として、さらに、周辺処理情報に関係する周辺機能シミュレーション部の識別子と、割り込み処理を行なう時点のCPU経過時間とを格納し、上記入出力制御部が、周辺処理情報出力の際に処理要求を受けた周辺機能シミュレーション部の識別子も出力し、さらに、算出された割り込みを行なう時点のCPU経過時間を、算出の際にとり出した周辺処理情報と対応付けて周辺処理情報格納部に出力し、さらに、必要に応じて周辺処理情報の削除を行う周辺処理情報管理部と、CPUシミュレーション部のシミュレーションにおいて、正しい順序で、割り込み処理が行なわれるように、一度行なった割り込み処理をCPUシミュレーション部に再度行なわせる割り込み再要求制御部と、を有することを特徴とする。
【0011】請求項3の発明は、請求項2記載の発明において、上記周辺処理情報管理部は、周辺機能シミュレーション部のシミュレーションが終了した際に、周辺処理情報格納部の格納内容を参照し、シミュレーションが終了した周辺機能シミュレーション部と同じ識別子が格納されている周辺処理情報を検索し、当該周辺処理情報に入出力管理部によって算出された割り込み処理を行なう時点のCPU経過時間が格納されていないとき当該周辺処理情報の削除を行い、また、入出力管理部によって割り込み要求を行なう時点のCPU経過時間が算出された際に、周辺処理情報格納部の格納内容を参照し、算出されたCPU経過時間より後にだされた処理要求に関する周辺処理情報がある場合は、この周辺処理情報を削除し、また、周辺処理情報格納部の格納内容を参照し、最も古い割り込み処理を行なう時点のCPU経過時間Tを検索し、当該CPU経過時間TがCPU経過時間管理部に管理されている最も新しいCPU経過時間よりも古く、かつ上記CPU経過時間Tが格納さえれている周辺処理情報以外の周辺処理情報を参照した場合、処理要求が行なわれた時点のCPU経過時間が前記CPU経過時間Tより古く、かつ、割り込みを処理を行なう時点のCPU経過時間の値が格納されていない周辺処理情報が存在しない場合、上記CPU経過時間Tを含む周辺処理情報を削除し、上記、割り込み再発生制御部は、周辺処理情報格納部の格納内容を参照し、割り込み処理を行なう時点のCPU経過時間が現在のCPU経過時間管理部に管理されているCPU経過時間と等しい周辺処理情報があるかどうか検索し、有る場合は、CPUシミュレーション部が再度割り込み処理を行なわせることを特徴とする。
【0012】請求項4の発明は、請求項1記載の発明において、履歴情報管理部は、前記CPUシミュレーション部から前記周辺機能シミュレーション部に対して処理要求が発生した直後から前記周辺機能シミュレーション部から前記CPUシミュレーション部に対して割込み要求が発生するまでの間だけ動作することを特徴とする。
【0013】請求項5の発明は、請求項2記載の発明において、履歴情報管理部は前記周辺処理情報格納部に前記周辺処理情報が1個以上格納されている間だけ動作することを特徴とする。請求項6の発明は、請求項1、2 記載の発明において、上記状態復元部が、前記CPUシミュレーション部に割込み要求があった場合、前記履歴情報管理部に格納されている履歴情報のうち内部状態が割込み許可状態であり、且つCPU経過時間が前記経過時間Tに等しいあるいは前記経過時間Tより大きくかつ前記経過時間Tに最も近いという条件をみたす履歴情報Hを前記履歴情報管理部から検索し前記CPUシミュレーション部を前記履歴情報Hの内部状態と同じ状態にし、前記CPU経過時間管理部に格納されているCPU経過時間を前記経過時間Tに更新することを特徴とする。
【0014】
【作用】上記構成のシミュレータは、以下のように作用する。請求項1の発明では、CPUシミュレーション部は、CPUの命令実行をシミュレーションを行なう。周辺機能シミュレーション部は、CPUの周辺装置のシミュレーションを行なう。
【0015】CPU経過時間管理部は、前記CPUシミュレーション部でシミュレーションした命令を実機上で処理した場合に要する時間の累計であるCPU経過時間を格納する。履歴情報管理部は、前記CPUシミュレーション部の内部状態が変化するごとに状態変化が始まる直前の時点のCPU経過時間を、前記CPU経過時間管理部から取りだし、前記CPUシミュレーション部の内部状態と対応づけて履歴情報として管理する周辺機能経過時間管理部は、前記周辺機能シミュレーション部でシミュレーションした処理を実機上で処理した場合に要する時間の累計である周辺機能経過時間を格納する。
【0016】入出力管理部は、前記CPUシミュレーション部から、前記周辺機能シミュレーション部に対して処理要求があった場合、前記CPU経過時間管理部からCPU経過時間を取りだし、前記周辺機能経過時間管理部から周辺機能経過時間を取りだし、前記CPU経過時間と前記周辺機能経過時間を対応づけて後述する周辺処理情報格納部に出力し、前記周辺機能シミュレーション部から、前記CPUシミュレーション部に割込み要求があった場合、前記周辺機能経過時間管理部から割り込みが発生した時点の周辺機能経過時間を取り出し、この割り込みが発生する基となった処理要求が発生した時点のCPU経過時間と周辺機能経過時間とを取りだし、取り出されたそれぞれの経過時間を項とする演算により、CPUシミュレーション部がどの時点にもどって割り込みを行なうのか、割り込みを行う時点のCPU経過時間を算出し、前記状態復元部に対して算出された割り込みを行う時点のCPU経過時間出力する。
【0017】周辺処理情報格納部は、前記入出力管理部より出力された処理要求が発生した時点のCPU経過時間と周辺機能経過時間とを対応づけた周辺処理情報を格納する。状態復元部は、前記入出力管理部により出力された割り込みを行なう時点のCPU経過時間Tが入力されると、前記履歴情報管理部の格納内容を参照し、格納されている履歴情報のうちCPU経過時間が入力されたCPU経過時間Tに等しい、あるいは入力されたCPU経過時間Tより大きくかつ入力されたCPU経過時間Tに最も近いという条件をみたす履歴情報Hを前記履歴情報管理部から検索し、前記CPUシミュレーション部を前記履歴情報Hの内部状態と同じ状態にし、前記CPU経過時間管理部に格納されているCPU経過時間を入力されたCPU経過時間Tに更新する。
【0018】請求項2の発明は、請求項1記載のシミュレータにおいて、上記周辺機能シミュレーション部が複数存在し、各周辺機能シミュレーション部はそれぞれ異なる識別子を有する。各周辺機能シミュレーション部に対応して、上記周辺機能経過時間管理部が存在する。
【0019】上記周辺処理情報格納部は、周辺処理情報として、さらに、周辺処理情報に関係する周辺機能シミュレーション部の識別子と、割り込み処理を行なう時点のCPU経過時間とを格納する。上記入出力制御部は、周辺処理情報出力の際に処理要求を受けた周辺機能シミュレーション部の識別子も出力し、さらに、算出された割り込みを行なう時点のCPU経過時間を、算出の際にとり出した周辺処理情報と対応付けて周辺処理情報格納部に出力する。
【0020】さらに、周辺処理情報管理部と割り込み再要求制御部とを有し、周辺処理情報管理部は、必要に応じて周辺処理情報の削除を行い、割り込み再要求制御部は、CPUシミュレーション部のシミュレーションにおいて、正しい順序で、割り込み処理が行なわれるように、一度行なった割り込み処理をCPUシミュレーション部に再度行なわせる。
【0021】請求項3の発明では、請求項2記載のシミュレータにおいて、上記周辺処理情報管理部が、周辺機能シミュレーション部のシミュレーションが終了した際に、周辺処理情報格納部の格納内容を参照し、シミュレーションが終了した周辺機能シミュレーション部と同じ識別子が格納されている周辺処理情報を検索し、当該周辺処理情報に入出力管理部によって算出された割り込み処理を行なう時点のCPU経過時間が格納されていないとき当該周辺処理情報の削除を行い、また、入出力管理部によって割り込み要求を行なう時点のCPU経過時間が算出された際に、周辺処理情報格納部の格納内容を参照し、算出されたCPU経過時間より後にだされた処理要求に関する周辺処理情報がある場合は、この周辺処理情報を削除し、また、周辺処理情報格納部の格納内容を参照し、最も古い割り込み処理を行なう時点のCPU経過時間Tを検索し、当該CPU経過時間TがCPU経過時間管理部に管理されている最も新しいCPU経過時間よりも古く、かつ上記CPU経過時間Tが格納さえれている周辺処理情報以外の周辺処理情報を参照した場合、処理要求が行なわれた時点のCPU経過時間が前記CPU経過時間Tより古く、かつ、割り込みを処理を行なう時点のCPU経過時間の値が格納されていない周辺処理情報が存在しない場合、上記CPU経過時間Tを含む周辺処理情報を削除する。
【0022】割り込み再発生制御部が、周辺処理情報格納部の格納内容を参照し、割り込み処理を行なう時点のCPU経過時間が現在のCPU経過時間管理部に管理されているCPU経過時間と等しい周辺処理情報があるかどうか検索し、有る場合は、CPUシミュレーション部が再度割り込み処理を行なわせる。請求項4の発明では、請求項1記載のシミュレータにおいて、履歴情報管理部が、前記CPUシミュレーション部から前記周辺機能シミュレーション部に対して処理要求が発生した直後から前記周辺機能シミュレーション部から前記CPUシミュレーション部に対して割込み要求が発生するまでの間だけ動作する。
【0023】請求項5の発明では、請求項2記載のシミュレータにおいて、履歴情報管理部が前記周辺処理情報格納部に前記周辺処理情報が1個以上格納されている間だけ動作する。請求項6の発明では、請求項1、2記載のシミュレータにおいて、状態復元部が、前記CPUシミュレーション部に割込み要求があった場合、前記履歴情報管理部に格納されている履歴情報のうち内部状態が割込み許可状態であり、且つCPU経過時間が前記経過時間Tに等しいあるいは前記経過時間Tより大きくかつ前記経過時間Tに最も近いという条件をみたす履歴情報Hを前記履歴情報管理部から検索し前記CPUシミュレーション部を前記履歴情報Hの内部状態と同じ状態にし、前記CPU経過時間管理部に格納されているCPU経過時間を前記経過時間Tに更新する。
【0024】
【実施例】以下、本発明の実施例を図面を用いて詳細に説明する。
(実施例1)図1は本発明の実施例1におけるシミュレータの構成図であり、11はCPUシミュレーション部であり、CPUの命令実行をシミュレーションするものであり、必要に応じてシミュレーション中に後述する周辺機能シミュレーション部14に対して処理要求をおこなったり、周辺機能シミュレーション部14からの割り込み要求に対応する処理を行なうものである。
【0025】12はCPU経過時間管理部であり、CPUシミュレーション部11でシミュレーションする命令を実機上で処理した場合、処理に要する時間の累計(以下CPU経過時間と称する)を計算し格納するものである。13は履歴情報管理部であり、CPUシミュレーション部11の内部状態が変化するごとに状態変化が始まる直前の時点のCPU経過時間をCPU経過時間管理部12から取りだし、このCPU経過時間と内部状態を対応づけて履歴情報として、管理するものである。尚、内部状態としては、レジスタ状態やRAM(ランダムアクセスメモリ)などが上げられるが、この2つの情報に限ったものではなく、シミュレーションする際に必要な状態ならばかまわない。例えば、命令よみとり時のパイプライン処理まで、シミュレーションする場合には、パイプライン処理状態も内部状態に含まれるし、RAMを使用しない場合は、RAM状態は内部状態に含めなくてもよい。
【0026】14は周辺機能シミュレーション部であり、CPUの周辺機能の処理動作をシミュレーションするものであり、CPUシミュレーション部11からの処理要求に応じて周辺機能の処理動作のシミュレーションを開始し、必要に応じて上記CPUシミュレーション部11に対して割り込み要求を行なうものである。15は周辺機能経過時間管理部であり、周辺機能シミュレーション部14でシミュレーションする処理を実際の機械で処理した場合、処理に要する時間の累計(以下周辺機能経過時間と称する)を計算し格納するものである。
【0027】18は入出力管理部であり、前記CPUシミュレーション部11から、周辺機能シミュレーション部14に対して処理要求があると、その処理要求が発生した時点でのCPU経過時間(処理要求時CPU経過時間)と、周辺機能経過時間とを、それぞれCPU経過時間管理部12、周辺機能経過時間管理部15から取り出し、後述する周辺処理情報格納部17に出力するものであり、さらに、周辺機能シミュレーション部14から、前記CPUシミュレーション部11に割込み要求があった場合は、周辺機能経過時間管理部15格納されているこの割り込み要求があった時点での周辺機能経過時間と、周辺処理情報管理部に格納されているこの割り込み要求が発生する基となった処理要求が発生した際の処理要求時CPU経過時間と周辺機能経過時間とから、CPUシミュレーション部11が、どの時点にもどって割り込みを行なうか、その割り込み処理を行なう時点のCPU経過時間(戻り先CPU経過時間)を算出し、さらに算出された結果を後述する状態復元部16に出力する。尚、具体的な戻り先CPU経過時間の算出方法についは、後述するシミュレータの処理動作の説明の際に詳しく行なう。
【0028】17は周辺処理情報格納部であり、前記CPUシミュレーション部11から周辺機器シミュレーション部に処理要求があった際に、入出力管理部18から出力された処理要求時CPU経過時間と周辺機能経過時間とを対応づけて周辺処理情報として格納するものである。16は状態復元部であり、周辺機能シミュレーション部からCPUシミュレーション部11に対して、割り込み要求があった際に、入出力管理部18によって算出された戻り先CPU経過時間TC1が入力されると、履歴情報管理部13の格納内容を参照し、履歴情報のCPU経過時間が、入力された戻り先CPU経過時間に等しい、あるいは入力された戻り先CPU経過時間に最も近いという、条件をみたす履歴情報Hを前記履歴情報管理部13から検索し、CPUシミュレーション部11の内部状態を、履歴情報Hの内部状態と同じ状態にし、CPU経過時間管理部12に格納されているCPU経過時間を、入力された戻り先CPU経過時間に更新し、CPUシミュレーション部11を割り込み処理を行う状態に戻すものである。
【0029】次に上記シミュレータの動作について図2〜5に示すフローチャートを参照しながら説明する。尚、図2はCPUシミュレーションン部11の処理動作、図3には周辺機能シミュレーション部14の処理動作、図4には、入出力管理部18の処理動作、図5には状態復元部16の処理動作のフローチャートが示されている。
【0030】先ず、CPUシミュレーション部11は周辺機能シミュレーション部14から割込み要求があるかどうか調べる(Sc1)。割込み要求がある場合は、状態復元部16によって割り込み要求の処理を行なう状態に戻されると、割込み処理をシミュレーションする(Sc2)。尚、この割り込み要求を行なう状態に戻す処理については後で、詳細に記載する。
【0031】Sc2における割り込み処理が終了するか、或いは、Sc1で割り込み要求がないと判断されると、CPUシミュレーション部11は、シミュレーション対象CPU上のプログラムを1命令読み込み、この命令を解釈を行なう(Sc3)。次に、その命令が周辺機能への処理要求であるか否か判断する(Sc4)。Sc4において命令が、周辺機能への処理要求でないと判断された場合は、命令の実行をシミュレーションする(Sc7)。このように、命令実行のシミュレーションが開始された場合は、履歴情報管理部13は、命令に対する実行のシミュレーション開始時点でのCPU経過時間をCPU経過時間管理部12から取りだし、CPUシミュレーション部11の内部状態と対応づけて履歴情報として格納するように履歴情報管理部13に指示し(Sc8)、CPU経過時間管理部12にCPU経過時間を格納するように指示し(Sc9)、Sc1の状態に戻る。上記Sc8の指示によって履歴情報管理部13は、履歴情報を格納し、Sc9の指示によってCPU経過時間管理部12はその命令実行後のCPU経過時間を格納する。
【0032】また、Sc4において命令が、周辺機能への処理要求であると判断されると、CPUシミュレーション部11は、周辺機能シミュレーション部14に処理要求を行い(Sc5)、続いて、入出力管理部18に対して、処理要求が発生したことを通知する(Sc6)。このように処理要求の通知が終了すると、CPU経過時間管理部12から、処理要求が発生した時点でのCPU経過時間を取り出し、CPUシミュレーション部11の内部状態と対応付けて履歴情報として格納するよう履歴情報格納部に指示する(Sc8)。また、CPU経過時間管理部12に処理要求発生時のCPU経過時間を格納するよう指示する(Sc9)。次に、CPUシミュレーション部11は、Sc1まで戻り、以上の処理を繰り返す。履歴情報管理部13及びCPU経過時間管理部12は指示に従いそれぞれ、履歴情報、或いはCPU経過時間の格納を行なう。
【0033】以上のような処理をCPUシミュレーション部11が行なっている間、周辺機能シミュレーション部14は並行して以下のように動作を行なっている。まずCPUシミュレーション部11から処理要求があるまで待機する(Ss1)。上記したように、Sc5においてCPUシミュレーション部11から処理要求があると、周辺機能シミュレーション部14は周辺機能のシミュレーションを開始する(Ss2)。
【0034】次にシミュレーション上にCPUシミュレーション部11に対して、割込み要求が発生するか否か判断する(Ss3)。割り込み処理が発生する場合は、入出力管理部18に割込み要求が発生したことを通知し(Ss4)、さらにCPUシミュレーション部11に割込み要求を行なう(Ss5)。次に、周辺機能経過時間管理部15に、割り込み要求が発生した時点の周辺機能経過時間を格納するように指示し(Ss6)、このとき周辺機能経過時間管理部15は周辺機能経過時間を格納する。次に周辺機能シミュレーションの処理が終了したか否か判断する(Ss7)。但し、割り込み要求が発生した場合は、その時点で処理終了とみなすので、Ss1に戻る。
【0035】Ss3において、割り込みが発生しないと判断された場合は、周辺機能の処理動作のシミュレーションが終了したかどうか判断し(Ss7)、終了していれば、Ss1に戻り、終了していない場合は、Ss2に戻りSs2〜Ss7の処理を繰り返し行なう。入出力管理部18は、CPUシミュレーション部11および周辺機能シミュレーション部14と並行して以下のように動作する。
【0036】先ず、入出力管理部18は、CPUシミュレーション部11からの周辺機能シュミュレーション部への処理要求の発生、及び、周辺機能シミュレーション部14からのCPUシミュレーション部11への割り込み要求が発生しているかどうかを監視している(Si1)。Sc6におけるCPUシミュレーション部11の処理要求発生の通知に基づき、処理要求が発生したと判断されると(Si1)、周辺機能シミュレーション部14への処理要求があった時点でのCPU経過時間である処理要求時CPU経過時間及び周辺機能経過時間を、CPU経過時間管理部12、周辺機能経過時間管理部15からそれぞれ取り出し、これらの時間を周辺処理情報格納部17に出力する。周辺処理情報格納部17は、出力されたそれぞれの経過時間を対応付けて格納する(Si2)。
【0037】また、Ss4において周辺機能シミュレーション部14から割込み要求が発生した場合は(Si3)、以下のようにしてCPUシミュレーション部11が、どの時点にもどって割り込みを行なうか、その割り込み処理を行なう時点のCPU経過時間である戻り先CPU経過時間を算出する(Si4)。先ず、周辺機能経過時間管理部15の格納内容を参照し、割り込み要求が発生した時点の周辺機能経過時間(TS1)を取りだす。次に、周辺処理情報管理部の格納内容を参照し、この割り込み要求が発生する基となった処理要求が発生した際の処理発生時CPU経過時間と周辺機能経過時間として、最も新しく格納された周辺処理情報の処理発生時CPU経過時間(TC0)と周辺機能経過時間(TS0)を取り出す。
【0038】このように取り出された周辺処理情報の周辺機能経過時間(TS0)を割り込み発生時の周辺機能経過時間(TS1)から引いた値を、処理発生時CPU経過時間(TC0)に加えることによって、戻り先CPU経過時間が算出される(Si4)。算出された戻り先CPU経過時間は、状態復元部16に出力される(Si5)。
【0039】戻り先CPU経過時間の出力がおこなわれた後は、処理要求が発生しているかどうか調べるステップ(Si1)まで戻り、以上の処理を繰り返す。状態復元部16は、入力間理部から戻り先CPU経過時間TC1が入力されるかどうかを監視している(Sr1)。入出力管理部18から戻り先CPU経過時間が入力されると(Sr1)、履歴情報管理部13の格納内容を参照し、格納されている履歴情報のうちCPU経過時間が入力された戻り先CPU経過時間に等しい、あるいは入力された戻り先CPU経過時間より大きく、且つ、最も近いという条件をみたす履歴情報Hを検索する(Sr2)。
【0040】さらに、CPUシミュレーション部11を履歴情報Hの内部状態と同じ状態にし、CPU経過時間管理部12のCPU経過時間をTC1に更新し(Sr3)、以上の処理を繰り返す。このように、状態復元部16によって、CPUシミュレーション部11の内部状態が割り込み処理を行なう状態に戻され、CPU経過時間格納部の格納内容が更新されると(Sc1)、CPUシミュレーション部11は割り込み処理を開始する(sc2)。
【0041】上記のようなシミュレータの処理動作を具体的な例を用いて説明する。CPUシミュレーション部11が実機CPUが1秒間で行なう処理を1秒間でシミュレーションし、周辺機能シミュレーション部14が実機周辺装置が1秒間で行なう処理をTP秒間(TPは1より大きい)でシミュレーショを行なうものとする。
【0042】上記のようなCPUシミュレーション部11と周辺機能シミュレーション部14を有するシミュレータを用い、CPU経過時間がT1秒のときCPUシミュレーション部11から周辺機能シミュレーション部14に処理要求があり、CPU経過時間がT2秒のときこの処理要求に対する周辺機能シミュレーション部14の処理が終了し、CPU経過時間がT3秒のとき再びCPUシミュレーション部11から周辺機能シミュレーション部14に処理要求があり、CPU経過時間がT4秒のとき周辺機能シミュレーション部14からCPUシミュレーション部11に割込み要求がある場合を例とする。
【0043】実際の処理経過時間がT1秒になるまでは、CPUシミュレーション部11は、割り込み要求はないので(Sc1)、命令実行シミュレーションを行う(Sc3〜Sc7)。この命令実行シミュレーションごとに(Sc7)、履歴情報管理部13に指示して、CPU経過時間管理部12からCPU経過時間を取りだし、CPUシミュレーション部11の内部状態と対応づけて格納させ(Sc8)、かつ、CPU経過時間管理部12に指示し、CPU経過時間を格納させる(Sc9)。処理経過時間がT1秒になるまでは、CPUシミュレーション部11では、このような処理が繰り返し行なわれる。
【0044】また、周辺機能シミュレーション部14は処理要求待ち状態であり(Ss1)、入出力管理部18は処理要求発生通知または割込み要求発生通知待ち状態である。また、状態復元部16は、戻り先CPU経過時間が入力されるのを待っている状態である(Sr1)。
【0045】実際の処理経過時間がT1秒のとき、CPUシミュレーション部11は周辺シミュレーション部に処理要求を行ない(Sc5)、入出力管理部18に処理要求発生を通知する(Sc6)。この後、履歴情報の格納の指示(Sc8)、CPU経過時間の格納の指示を(Sc9)行なう。Sc5における処理要求を受けた周辺機能シミュレーション部14は、周辺機能のシミュレーションを開始する(Ss1からSs2に進む)。
【0046】また、処理要求発生の通知を受けた入出力管理部18は、CPU経過時間管理部12から処理発生時CPU経過時間(T1)を取りだし、周辺機能経過時間管理部15からは周辺機能経過時間(T1/TP)を取りだし対応付けて、周辺処理情報として周辺処理情報格納部17に出力する(Si2)。周辺処理情報格納部17は出力された周辺処理情報格納する。
【0047】処理経過時間がT1秒からT2秒の間は、CPUシミュレーション部11と、CPU経過時間管理部12と、履歴情報管理部13と、入出力管理部18と、状態復元部16は、処理経過時間がT1秒までのときと同様に動作をする。また、周辺機能シミュレーション部14は、CPUシミュレーション部11において、T1の時点で発生した処理要求に対する処理が行なわれる(Ss2)。
【0048】実際の処理経過時間がT2秒のときは、周辺機能シミュレーション部14では、割り込み要求が発生することなく、周辺機能のシミュレーションが終了し、処理要求待ち状態に戻る(Ss6からSs1に戻る)。また、CPUシミュレーション部11とCPU経過時間管理部12と履歴情報管理部13と、入出力管理部18と、状態復元部16とは、処理経過時間がT1秒までのときと同じ動作をする。
【0049】処理経過時間がT2秒からT3秒の間は、CPUシミュレーション部11、CPU経過時間管理部12、履歴情報管理部13、周辺機能シミュレーション部14は、入出力管理部18と、状態復元部16とは、処理経過時間がT1秒までのときと同じである。処理経過時間がT3秒のとき、CPUシミュレーション部11は周辺シミュレーション部に処理要求を行ない(Sc5)、入出力管理部18に処理要求発生を通知する(Sc6)。
【0050】Sc5における処理要求を受けた周辺機能シミュレーション部14は、周辺機能のシミュレーションを開始する(Ss1からSs2に進む)。また、処理要求発生の通知を受けた入出力管理部18は(Si1)、CPU経過時間管理部12から処理要求時CPU経過時間(T3)を取りだしかつ周辺機能経過時間管理部15から周辺機能経過時間「T3/TP」を取りだし周辺処理情報格納部17に出力する(Si2)。周辺処理情報格納部17はこれらのこれらの時間を対応づけて格納する。
【0051】処理経過時間がT3秒からT4秒の間は、処理経過時間がT1秒からT2秒までのときと同じである。処理経過時間がT4秒のときは、周辺機能シミュレーション部14は、入出力管理部18に割込み要求発生を通知し(Ss4)、CPUシミュレーション部11に割込み要求を行なう(Ss5)。
【0052】割り込み要求発生の通知を受け取った入出力管理部18は(Si3)、周辺機能経過時間管理部15から、割り込み発生した時点の周辺機能経過時間T4/TPを取りだし、さらに周辺処理情報格納部17から処理発生時CPU経過時間T3と周辺機能経過時間T3/TPを取りだし、戻り先CPU経過時間を算出する(Si4)。更に、状態復元部16に算出された戻り先CPU経過時間を出力する(Si5)。
【0053】状態復元部16は戻り先CPU経過時間が入力されると(Sr1)、履歴情報管理部13の格納内容を参照し、格納されている履歴情報のCPU経過時間のうち入力された戻り先CPU経過時間と等しいか、あるいは入力された戻り先CPU経過時間より大きくかつ最も近いという条件をみたす履歴情報Hを検索し(Sr2)、CPUシミュレーション部11を履歴情報Hの内部状態と同じ状態にし、CPU経過時間管理部12のCPU経過時間T4を入力された戻り先CPU経過時間に更新する。
【0054】以上のようにしてシミュレータは、処理動作を行ない、割り込みが発生した際だけ、CPUシミュレータは、割り込みを行なう状態に戻って、割り込み処理を行なう。尚、本実施例では、履歴情報管理部13はCPUシミュレーション部11の内部状態が変化するごとに状態変化が始まる直前の時点のCPU経過時間をCPU経過時間管理部12から取りだし、内部状態を対応づけて履歴情報として管理しているが、履歴情報管理部13は、CPUシミュレーション部11の内部状態が変化するごとに状態変化が終った直後の時点のCPU経過時間をCPU経過時間管理部12から取りだし内部状態と対応づけて履歴情報として管理するように構成してもよい。
【0055】このように構成する場合、状態復元部16は、戻り先CPU経過時間TCIが格納された場合、履歴情報管理部13に格納されている履歴情報のうちCPU経過時間が、CPU経過時間Tに等しいあるいは、CPU経過時間Tより小さくかつCPU経過時間Tに最も近いという条件をみたす履歴情報Hを前記履歴情報管理部13から検索しCPUシミュレーション部11を履歴情報Hの内部状態と同じ状態にしCPU経過時間管理部12に格納されているCPU経過時間をCPU経過時間TC1に更新する。
【0056】また履歴情報間管理部13は、履歴情報Hの内部状態は状態変化ごとに状態変化前後の差分だけを管理する構成にしてもよい。さらに、履歴情報間管理部13は、CPUシミュレーション部から周辺機能シミュレーション部に対して処理要求が発生した直後から周辺機能シミュレーション部から前記CPUシミュレーション部に対して割込み要求が発生するまでの間だけ動作するように構成してもよい。
【0057】CPUシミュレーション部11の代わりに周辺シミュレーション部を用いることにより2つの周辺シミュレーション部で同期を実現したり、周辺シミュレーション部の代わりにCPUシミュレーション部11を用いて2つのCPUシミュレーション部で同期を実現しても良い。さらに、履歴情報管理部が内部状態として、CPUシミュレーション部が割り込み許可状態か割り込み禁止状態かを格納し、割り込み要求が起こった場合、内部状態が割り込み許可の場合、割り込み処理を行い、割り込み禁止場合は、割り込みが起こらないように構成してもよい。
【0058】(実施例2)図6は本発明の実施例2におけるシミュレータの構成図であり、図6において、241、242はそれぞれ周辺機能シミュレーション部であり、お互いを区別するため、それぞれが異なる識別子を有していることと、周辺機能のシュミュレーションが終了した際に後述する入出力順序制御部28にその旨を通知する以外は、上記実施例1の周辺機能シミュレーション部と同様の処理を行なうものである。
【0059】251は周辺機能経過時間管理部であり、周辺機能シミュレーション部241でシミュレーションした処理を、実機で処理した場合に要する時間の累計を計算し格納するものであり、他の周辺機能経過時間管理部と区別するために周辺機能シミュレータ241の識別子と同じ識別子を有している。252は周辺機能経過時間管理部であり、周辺機能シミュレーション部242でシミュレーションした処理を、実機で処理した場合に要する時間の累計を計算し格納するものであり、他の周辺機能経過時間管理部と区別するために周辺機能シミュレータ242の識別子と同じ識別子を有している。
【0060】28は入出力順序制御部であり、CPUシミュレーション部11から処理要求があった場合、CPU経過時間管理部12に格納されている処理要求があった時点のCPU経過時間(処理要求時CPU経過時間)を検出し、続いて、処理要求が行なわれている周辺機能シミュレーション部の識別子Iを確認し、同じ識別子を有する周辺機能経過時間管理部に格納されている周辺機能経過時間を検出し、検出した処理要求時CPU経過時間、周辺機能経過時間と、識別子Iと対応付けて周辺処理情報としてを後述する周辺処理情報格納部27に出力し、周辺機能シミュレーション部において割り込み要求が発生した場合は、CPUシミュレーション部11が、どの時点に戻って割り込み処理を行なうのか、その割り込みを行なう時点のCPU経過時間(戻り先CPU経過時間)を実施例1と同様に算出し、算出のために用いた周辺処理情報とともに、周辺処理情報管理部に格納させ、さらに算出した結果を状態復元部16に出力し、周辺処理情報管理部に格納されている周辺処理情報を参照し、CPUシミュレーション部11のシミュレーションに必要なくなった周辺処理情報を検索し、削除をおこない、CPUシミュレーション部11が正しい順序で割り込み処理のシミュレーションを行なうように、割り込み要求の発生を制御するものである。
【0061】27は周辺情報格納部であり、処理要求時CPU経過時間と周辺機能経過時間と戻り先CPU経過時間と、識別子とを対応づけて、周辺処理情報として格納するものである。尚、実施例1と同じ処理を行なうものについては、図6と同じ符号を付し、説明を省略する。次に上記シミュレータの動作について図7と図8に示すフローチャートを参照しながら説明する。図7は周辺機能シミュレーション部241、242の処理動作、図8には入出力順序制御部28の処理動作のフローチャートが示されている。
【0062】CPUシミュレーション部11は実施例1の場合と同様にして、CPUのシミュレーションを行なう。周辺機能シミュレーション部241および242は、CPUシミュレーション部11と並行して動作する。ステップSs1からSs7までは実施例1の周辺機能シミュレーション部14と同じ動作である。但し、Ss6において、周辺機能経過時間を格納する際には、同じ識別子を有した周辺機能経過時間管理部に格納し、更に、Ss8において、シミュレーションが終了した場合には、その旨を入出力順序制御部28に出力する。(但し、ここで言うシミュレーションの終了とは、CPUシミュレーション部11からの処理要求に対する処理が終わった場合は勿論のこと、周辺機能シミュレーション部からCPUシミュレーション部11に対して割り込み発生が起こった場合も、割り込みを発生したことでシミュレーション処理が終了したとして、終了の通知を行なう。)入出力順序制御部28は、CPUシミュレーション部11および周辺機能シミュレーション部241および242と並行して以下のように動作する。
【0063】まずCPUシミュレーション部11から処理要求が発生しているか否か判断する(Si11)。処理要求が発生している場合は、CPU経過時間管理部12から処理要求が起こった時点のCPU経過時間である処理要求時CPU経過時間を取り出す。次に、処理要求を受けた周辺シミュレーション部の識別子を確認し、その識別子と同じ識別子を有する周辺機能経過時間管理部から処理要求が発生した時点の周辺機能経過時間を取りだす。このように取り出された処理要求時CPU経過時間と、周辺機能経過時間と、さらに処理要求を受けた周辺処理シミュレータの識別子Iとを対応付けてこれを周辺処理情報として、周辺処理情報格納部27に出力する(Si12)。周辺処理情報格納部27はSi12において、入出力順序制御部28によって出力された周辺処理情報を格納する。
【0064】次に周辺機能シミュレーション部から割込み要求が発生しているか否か判断する(Si13)。割込み要求が発生しているならば、以下のようにしてCPUシミュレーション部11が、どの時点にもどって割り込みを行なうか、その割り込み処理を行なう時点のCPU経過時間である戻り先CPU経過時間を算出する(Si14)。
【0065】先ず、割り込み要求が発生している周辺機能シミュレーション部の識別子を確認し、同じ識別子を有する周辺機能経過時間管理部から割り込み要求が発生した時点の周辺機能経過時間を取りだす。続いて、周辺処理情報格納部27から識別子Iに等しい識別子が対応づけて格納されており、且つ、最も新しい周辺処理情報を検索し、処理要求時CPU経過時間と周辺機能経過時間を取りだす。
【0066】このように取り出された、それぞれの経過時間を基に、実施例1と同様に、戻り先CPU経過時間を算出する(Si14)。次に、周辺処理情報格納部27の格納内容を参照し、上記のように算出された戻り先CPU経過時間より新しい処理要求時CPU経過時間が格納されている周辺処理情報が有るかどうか検索する(Si15)、有る場合はこの周辺処理情報を削除する(Si16)。(このように、周辺処理情報が削除できるのは、例えば、図9に示すように、処理要求時CPU経過時間CT2が、戻り先CPU経過時間CT1より新ければ、CPUシミュレーション部11がCPU経過時間CT1の時点で割り込み処理を行なった後にシミュレーションを続行することにより、CPU経過時間がCT2の時点で周辺機能シミュレータ部Bへ同じ処理要求が発生するので、この周辺処理情報を残しておく必要がなくなるためである。)さらに、上記戻り先CPU経過時間算出の際に周辺処理情報格納部27から取り出された処理要求時CPU経過時間と周辺機能経過時間に、算出された戻り先CPU経過時間を対応付けて格納するように、周辺処理情報格納部27に指示する。周辺処理情報格納部27は、これらの情報を格納する。続いて、状態復元部16に算出した結果を出力する(Si17)。
【0067】状態復元部16は、入出力順序制御部28から戻り先CPU経過時間が入力されると(Sr1)、履歴情報管理部13の格納内容を検索し、CPU経過時間が上記戻り先CPU経過時間に等しい、あるいは戻り先CPU経過時間より大きくかつ戻り先CPU経過時間に最も近いという条件をみたす履歴情報Hを検索し(Sr2)、CPUシミュレーション部11を履歴情報Hの内部状態と同じ状態にしCPU経過時間管理部12のCPU経過時間をTC1に更新する(Sr3)。
【0068】このように、CPUシミュレーション部11の内部状態と、CPU経過時間が更新されると、CPUシミュレーション部11は割り込み処理を行なう(Sc2)。次に入出力順序制御部28は、周辺機能シミュレーション部からシミュレーションの処理終了が通知されたか否か判断し(Si18)、通知があった場合は、終了処理の通知を行なった周辺処理シミュレーション部の識別子Iを確認し、同じ識別子が対応付けて格納されている周辺処理情報を周辺処理情報格納部27の格納内容を参照して、戻り先CPU経過時間の値が格納されていないならば、この周辺処理情報を周辺処理情報格納部27から削除する(Si19)。
【0069】次にCPU経過時間管理部12からこの時点でのCPU経過時間を取りだし、周辺処理情報格納部27の格納内容を参照し、戻り先CPU経過時間が、取り出したのCPU経過時間と等しい周辺処理情報があるかどうか検索し、(Si20)、存在するならばその周辺処理情報に基づいて、CPUシミュレーション部11に対する割り込み要求の発生と、状態復元部16に戻り先CPU経過時間の出力を行なう(Si21)。この後、CPUシミュレーション部11では、割り込み処理が行なわれる。(このような処理を行なうのは、例えば、図10で示すように、CPUシミュレーション部がCPU経過時間がCT1の時点で周辺機能シミュレーション部Bからの割り込み処理を行ないこの後に、このCPU経過時間CT1よりさらにまえの時点(CPU経過時間CT2)に戻って周辺機能シミュレーション部Aからの割り込み処理を行なう状況が要求か起こった場合、実際のCPU上では、Aからの割り込みに対する処理のあとにBからの割り込み処理を行なうのが正しい順序となる。従って、CPUシミュレーション部が、正しい順序でシミュレーションを行なうためには、CPU経過時間CT2での割り込み処理の後に、一旦割り込み処理が終了した周辺機能シミュレーション部Bからの割り込み処理を再度行なわなければ成らない。このため、このようなステップが設けられている。)つづいて、周辺処理情報格納部27の格納内容を参照し、以下のような処理を行なって、削除できる周辺処理情報が有るかどうか検討を行なう。(Si22)先ず、最も古い戻り先CPU経過時間(A)を検出する(戻り先CPU経過時間が格納されているのが1つだけの場合は、これが最も古い戻り先CPU経過時間となる)。さらに、以下の2つの条件を満たすかどうか検討する。
■ 検出された最も古い戻り先CPU経過時間(A)が、CPU経過時間管理部12に管理されている最も新しいCPU経過時間よりも古い。
■ 検出された最も古い戻り先CPU経過時間(A)と対応付けて格納されている識別子とは異なる識別子と対応づけて格納されている周辺処理情報を検討した場合、周辺処理情報の処理要求時CPU経過時間が検出された最も古い戻り先CPU経過時間(A)より古く、且つ、戻り先経過時間が格納されていない周辺処理情報が存在しない。
【0070】この条件を満たしている場合、最も古い戻り先CPU経過時間(A)を含む周辺処理情報は削除してもよい周辺処理情報と見なし(Si22)、この周辺処理情報を削除する(Si23)。(このような処理を行なうのは、周辺処理情報のなかで、再度割り込み発生を起こす可能性があるものとそうでないものを判定し、再度割り込みを起こす可能性のないものについては削除し、再度発生する可能性があるものもののみ残すために行なわれている。)以上の処理が終了すると、入出力順序制御部28は、処理要求が発生しているか調べるステップまで戻り(Si11)以上の処理を繰り返す。
【0071】以上のような処理を行なうシミュレータについて、さらに具体的な場合を例に、その処理動作の説明を行なう。先ず、各シミュレーション部の処理時間は以下のようなものとする。CPUシミュレーション部11は、実機CPUが1秒間で行なう処理を1秒間でシミュレーションする。
【0072】周辺機能シミュレーション部241は識別子「I1 」で識別され、且つ、実機周辺装置が1秒間で行なう処理を3秒間でシミュレーションする。周辺機能シミュレーション部242は周辺識別子「I2 」で識別され、且つ、実機周辺装置が1秒間で行なう処理を1.5秒間でシミュレーションする。さらに、以下のような流れ出、処理が進む場合と例にとする。
【0073】CPU経過時間が10秒のとき、CPUシミュレーション部11から周辺機能シミュレーション部241に処理要求がある。CPU経過時間が20秒のとき、CPUシミュレーション部11から周辺機能シミュレーション部242に処理要求がある。CPU経過時間が30秒のとき、周辺機能シミュレーション部241からCPUシミュレーション部11に割込み要求がある。
【0074】CPU経過時間が40秒のとき、周辺機能シミュレーション部242からCPUシミュレーション部11に割込み要求がある。上記したように処理が進む際の、実際の処理時間の累計である処理経過時間とCPU経過時間との関係を図11に示す。先ず、実際の処理経過時間が10秒になるまでは、CPUシミュレーション部11は命令実行シミュレーションを繰り返し(Sc3〜Sc7)、履歴情報管理部13はCPUシミュレーション部11の命令実行シミュレーションごとに、CPU経過時間管理部12からCPU経過時間を取りだし、CPUシミュレーション部11の内部状態と対応づけて格納し、これと同時に、CPU経過時間管理部12はCPU経過時間のみを格納する。
【0075】周辺機能シミュレーション部241および242は、CPUシミュレーション部11からの処理要求待ち状態である(Ss1)。また、入出力順序制御部28は、CPUシミュレーション部11からの処理要求発生通知または周辺機能シミュレーション部からの割込み要求発生通知待ちまたは周辺機能終了通知待ち状態である。
【0076】状態復元部16は、戻り先CPU経過時間が入力されるのを待っている状態である(Sr1)。処理経過時間が10秒のとき、CPUシミュレーション部11は、周辺シミュレーション部241に処理要求を行ない(Sc5)、入出力順序制御部28に処理要求発生を通知する(Sc6)。通知を行なった後は、CPUは、Sc8以降の処理を行なう。
【0077】処理要求を受けた周辺機能シミュレーション部241は(Ss1)、周辺機能のシミュレーションを開始する(Ss2)。入出力順序制御部28は処理要求の発生通知を受けると(Si11)、CPU経過時間管理部12から処理要求時CPU経過時間「10秒」を取りだす。次に、処理要求を受けた周辺シミュレーション部241の識別子I1 を確認し、同じ識別子を有する周辺機能経過時間管理部251から周辺機能経過時間「0秒」を取りだす(ここでは、最初に処理要求が出された時点を0秒とすることにする。)さらに入力出力順序制御部28は、取り出されたCPU経過時間「10秒」と周辺機能経過時間「0秒」と、識別子I1 とを対応づけて周辺処理情報として周辺処理情報格納部27に出力する(Si12)。周辺処理情報格納部27は入出力順序制御手段から出力された周辺処理情報を格納する。
【0078】実際の処理経過時間が10秒から20秒の間のときは、CPUシミュレーション部11と、CPU経過時間管理部12と、履歴情報管理部13と、周辺機能シミュレーション部242と、状態復元部16とは、処理経過時間が10秒までのときと同じ動作をする。また、周辺機能シミュレーション部241は、CPUシミュレーション部11からの要求に対する周辺機能のシミュレーションを実行する(Ss2、Ss3、Ss6を繰り返す)。
【0079】また、入出力順序制御手段28はSi13以降の処理を行なうが、この時点ではどの周辺機能シミュレータの割り込みや処理終了は起こらないので、Si13、Si18、Si20、Si22は何れもNoとなる。実際の処理経過時間が20秒のとき、CPUシミュレーション部11は、周辺シミュレーション部242に処理要求を行ない(Sc5)、入出力順序制御部28に処理要求が発生したこと通知する(Sc6)。
【0080】CPUシミュレーション部11からの処理要求を受けると(Ss1)、周辺機能シミュレーション部242は、周辺機能のシミュレーションを開始する(Ss2)。また、入出力順序制御部28は処理経過時間が10秒のときと同様にして、識別子「I2 」と処理要求時CPU経過時間「20秒」と周辺機能経過時間「0秒」を対応づけて周辺処理情報格納部27に格納し(Si12)する。
【0081】実際の処理経過時間が20秒から50秒の間のときは、CPUシミュレーション部11とCPU経過時間管理部12と履歴情報管理部13と、状態復元部16とは、処理経過時間が10秒までのときと同じ動作をする。周辺機能シミュレーション部241および242は周辺機能のシミュレーションを実行する(Ss2、Ss3、Ss6を繰り返す)。
【0082】また、入出力順序制御手段28はSi13以降の処理を行なう。実際の処理経過時間が50秒のとき、周辺機能シミュレーション部242は、入出力順序制御部28に割込み要求発生を通知を行ない(Ss4)、CPUシミュレーション部11に割込み要求を行なう(Ss5)。入出力順序制御部28は割り込み処理要求発生の通知を受けると(Si13)、割り込み要求を発生した周辺機能シミュレーション部242の識別子を確認し、この識別子I2 と同じ識別しを有する周辺機能経過時間管理部252から割り込み要求が発生した時点の周辺機能経過時間を取りだす。この場合、周辺機能経過時間「20秒」が取り出される。 さらに、周辺処理情報格納部27から識別子I2 と対応付けて格納されている周辺処理情報のCPU経過時間「20秒」と周辺機能経過時間「0秒」を取りだし、実施例1の戻り先CPU経過時間を算出する際と同等に、20−0+20=40秒として戻り先CPU経過時間を算出する(Si14)。周辺処理情報格納部27の格納内容を参照し、このように算出された戻り先CPU経過時間より新しい処理要求時CPU経過時間が有るかどうか検索する(Si15)。この場合は、一番新しい処理要求時CPU経過時間が20秒であり、40秒より古いので、削除するものはないと判断する。
【0083】次に、算出した戻り先CPU経過時間を状態復元部に出力する(Si17)。状態復元部16は戻り先CPU経過時間が入力されると(Sr1)、履歴情報管理部13の格納内容を参照し、格納されている履歴情報のうちCPU経過時間が「40秒」に等しいあるいは「40秒」より大きくかつ「40秒」に最も近いという条件をみたす履歴情報Hを検索し(Sr2)、CPUシミュレーション部11を履歴情報Hの内部状態と同じ状態にしCPU経過時間管理部12のCPU経過時間を「40秒」に更新する(Sr3)。このように、内部状態が戻され、CPU経過時間が更新されると、割り込み処理を行なう(Sc2)。
【0084】実際の経過時間が50秒から70秒の間(この時CPUシミュレーション部11はは割り込み処理を行なうために引き戻されているので、CPU経過時間は30秒〜50秒の間となる)ときは、処理経過時間が10秒から20秒の間のときと同じである。実際の処理経過時間が70秒(CPU経過時間は50秒)のとき、周辺機能シミュレーション部241は入出力順序制御部28に割込み要求発生を通知し(Ss4)、CPUシミュレーション部11に割込み要求を行なう(Ss5)。
【0085】割り込み要求発生の通知を受けた入出力順序制御部28は(Si3)、周辺機能シミュレーション部241の識別子を確認し、この識別子I1 と同じ識別子を有する周辺機能経過時間管理部251から割り込み要求発生時点の周辺機能経過時間を取りだす。この場合、周辺機能経過時間「20秒」が取り出される。さらに、周辺処理情報格納部27から識別子I1 と対応付けて格納されている周辺処理情報のCPU経過時間「10秒」と周辺機能経過時間「0秒」を取りだし、上記と同様に20−0+10=30秒として戻り先CPU経過時間を算出する。Si15で削除する情報はないので、状態復元部16に戻り先CPU経過時間「30秒」を出力する(Si17)。
【0086】状態復元部16は実際の処理経過時間が50秒のときと同様の処理を行い、CPUシミュレーション部11の状態を復元し(Sr3)、CPU経過時間管理部12のCPU経過時間を「30秒」に更新する。CPUは、割り込み要求のあった処理を行なう。実際の処理経過時間が70秒より大きくなった時点で、入出力順序制御部が、Si22の処理情報の削除についての判断を行なった場合、先ず、一番古い戻り先CPU経過時間として、241の戻り先CPU経過時間30秒が検出される。現在のCPU経過時間は、30秒を経過しているので、上記した■の条件は満たしている。
【0087】さらに、本実施例では、周辺機能シミュレータが2つなので、241とは識別子の異なる周辺機能シミュレーション部の周辺処理情報として242の周辺処理情報のみを考えればよく、周辺機能シミュレーション部242についての処理要求時CPU経過時間は「20秒」なので、「30秒」より古く、且つ、周辺機能シミュレーション部242の戻り先CPU経過時間「40秒」は格納されているので、上記した■の条件も満たしている。
【0088】ここで、初めて■、■の条件が揃う場合が発生したので、周辺機能シミュレータ部241についての周辺処理情報は削除される(Si23)。処理経過時間が70秒から80秒の間のときは処理経過時間が10秒から20秒の間のときと同じである。実際の処理経過時間が80秒のとき、CPU経過時間は40秒であり、周辺処理情報格納部27に格納された情報を参照すると、戻り先CPU経過時間が40秒である処理情報(周辺シミュレーション部242からの処理要求)があるので、CPUシミュレーション部11に割込み要求、状態復元部16に戻り先CPU経過時間を出力する(Si21)。CPUシミュレーション部11は、再度周辺機能シミュレーション部242からの割り込み要求に対する処理を行なう。
【0089】処理経過時間が80秒より大きくなった時点で、入出力順序制御部28がSi22の判断を行なった場合、先ず、一番古い戻り先CPU経過時間として、242の割り込み時間である40秒が検出される。現在のCPU経過時間は、40秒を経過しているので、上記した■の条件は満たしている。さらに、本実施例では、周辺機能シミュレータが2つなので、241とは識別子の異なる周辺機能シミュレーション部の周辺処理情報として241の周辺処理情報のみを考えればよい。この場合、241の周辺処理情報は存在しないので、上記した■の条件も満たしている。従って、ステップSi22の削除条件を満たすので、入出力順序制御部28は241についての周辺処理情報を削除する(Si23)。
【0090】処理経過時間が80秒以降は、処理経過時間が10秒までのときと同じである。以上のようにしてシミュレーションは進行していく。上記実施例においては、周辺機能シミュレーション部は、2つしか設けていないが、3つ以上の場合も同様に行なうことができる。また、履歴情報管理部は前記周辺処理情報格納部に前記周辺処理情報が1個以上格納されている間だけ動作するように構成してもよい。
【0091】また、実施例1の場合と同様に、CPUシミュレーション部11の代わりに周辺シミュレーション部を用いたり、周辺シミュレーション部の代わりにCPUシミュレーション部11を用いたりしても良い。
【0092】
【発明の効果】このように本実施例によれば、CPUシミュレーション部と周辺機能シミュレーション部は、通常は並列にシミュレーションを実行し、周辺機能シミュレーション部からCPUシミュレーション部に割込み要求が発生した場合のみCPUシミュレーション部の内部状態を割込み要求発生時点に復元することで同期を実現するので、割込み要求が発生しない場合は周辺機能シミュレーション部の処理終了を待たずCPUシミュレーション部は処理を続けることができるため、シミュレータ全体の処理速度を向上することができるという効果を有する。
【0093】また、複数の周辺シミュレーション部を持つシミュレータにおいても、割込み要求が発生した場合のみ内部状態を割込み要求発生時点に復元することで同期を実現するので、割込み要求が発生しない場合は周辺機能シミュレーション部14の処理終了を待たずCPUシミュレーション部11は処理を続けることができ、さらに割り込みを行なう順序も実機上で行なう場合と同様に行なわれるという効果を奏する。




 

 


     NEWS
会社検索順位 特許の出願数の順位が発表

URL変更
平成6年
平成7年
平成8年
平成9年
平成10年
平成11年
平成12年
平成13年


 
   お問い合わせ info@patentjp.com patentjp.com   Copyright 2007-2013