JP3685288B2 - マイクロプロセッサのエミュレーション方法およびエミュレータ装置 - Google Patents
マイクロプロセッサのエミュレーション方法およびエミュレータ装置 Download PDFInfo
- Publication number
- JP3685288B2 JP3685288B2 JP15127897A JP15127897A JP3685288B2 JP 3685288 B2 JP3685288 B2 JP 3685288B2 JP 15127897 A JP15127897 A JP 15127897A JP 15127897 A JP15127897 A JP 15127897A JP 3685288 B2 JP3685288 B2 JP 3685288B2
- Authority
- JP
- Japan
- Prior art keywords
- emulation
- simulator
- value
- simulation
- microprocessor
- 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
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Description
【発明の属する技術分野】
この発明は、マイクロプロセッサのプログラム開発の際プログラムの検証やデバッグをするために使用するマイクロプロセッサのエミュレーション方法およびエミュレータ装置に関するものである。
【0002】
【従来の技術】
図7はマイクロプロセッサのプログラムが割り込み処理を含む場合の、従来のマイクロプロセッサのエミュレーション方法およびエミュレータ装置によるエミュレーション実行の流れと、従来のシミュレータによるシミュレーション実行の流れを示す説明図である。
【0003】
従来のマイクロプロセッサのプログラム開発においては、プログラムの検証やデバッグ作業の際、このようなエミュレータ装置やシミュレータを必要に応じて使い分けている。従来のエミュレータ装置は、ターゲットシステムに実チップを組み込んだ状態で動作させてエミュレーションを実行し、その動作状態を再現しながらプログラムの検証やデバッグ作業を進めることができるのに対して、従来のシミュレータは、ホスト計算機上などでターゲットであるマイクロプロセッサの動作をソフトウェア(ターゲットプログラム)で模擬して、そのターゲットプログラムの評価を行うように構成されている。すなわち、シミュレータでは、チップの動作およびその周辺の状態をターゲットプログラムでシミュレーションすることによって擬似的に実現しているため、実際のターゲットシステム上で発生する割り込み処理によって生じるターゲットシステムの状態の変化がターゲットプログラムに何らかの変化を与えることはなかった。つまり、従来のエミュレータ装置がターゲットシステムと物理的に接点を有しているのに対し、従来のシミュレータはターゲットシステムとは物理的な接点を有してはいなかった。
【0004】
従って、図7に示すように、シミュレータでのプログラム実行では、実際のターゲットシステムで発生する割り込み処理を経由した状態を忠実にシミュレーションによって作り出すのは困難であり、プログラムの割り込み処理の発生しないケースの検証やデバッグ作業しかできず、従来、割り込み処理を含めた状態での検証やデバッグ作業はエミュレータ装置を用いて実行していた。
【0005】
図8はシングルチップマイクロプロセッサのための従来のエミュレータ装置の一例の構成を示すブロック図である。図において、1はターゲットマイクロプロセッサの機能を代行するかまたはターゲットマイクロプロセッサであるエミュレーション用のエミュレーションCPU、2はエミュレーションCPU1で実行されデバッグすべきプログラムが格納されるエミュレーションメモリ、3はエミュレーションメモリ2をエミュレーションCPUバス4側に接続するかまたはコントロールCPUバス5側に接続するバス切り替え回路、6はエミュレーションを実行するとともに各種デバッグ機能を備えたエミュレーションコントローラ、7はエミュレーションコントローラ6をコントロールCPUバス5に接続し、エミュレーションコントローラ6と他のユニットとの間の通信を司るエミュレーションコントローラ通信回路、8はバス切り替え回路3等のユニットを制御するためのコントロールCPUである。
【0006】
次に動作について説明する。
図8に示したように、エミュレーションCPUバス4とコントロールCPUバス5との間にはバス切り替え回路3を経由してエミュレーションメモリ2が接続されている。エミュレーションを実行する際に、まず、コントロールCPU8がバス切り替え回路3を制御しエミュレーションメモリ2をコントロールCPUバス5側に接続を切り替える。そして、エミュレーションコントローラ6がデバッグするプログラムをコントロールCPUバス5を介してエミュレーションメモリ2に転送する。その後、コントロールCPU8はエミュレーションメモリ2をエミュレーションCPUバス4側に接続すべくバス切り替え回路3を制御する。さらに、エミュレーションコントローラ6はエミュレーションCPU1を動作させ、ターゲットマイクロプロセッサの機能をエミュレートする。
【0007】
ところで、マイクロプロセッサの中には、チップ面積の制限や実行速度確保のために動作チェック処理用の回路を持っておらず、チップ動作仕様にあえて不定動作を含めるものがある。このような不定動作に陥る処理をプログラム中に含めてしまっていた場合、これをエミュレータ装置で実行するとエミュレータ装置でも当然に不定動作となり、中には実行不能に陥りデバッグ作業が続行できなくなる場合がある。他方、実チップを使用して動作を実現しているのではないシミュレータでは、このようなプログラムを実行する場合、チップの持つ不定動作に対してのエラーチェック機能を付加しておくことも可能であるので、もしメインプログラム中に不定動作を起こす不具合があるならば、シミュレータ上でプログラム実行を行うことにより不定動作に陥る処理の検出やデバッグを行うことは可能である。
【0008】
【発明が解決しようとする課題】
従来のマイクロプロセッサのエミュレーション方法およびエミュレータ装置は以上のように構成されているので、マイクロプロセッサの割り込み処理を含むプログラムをエミュレーションすることは可能ではあるが、不定動作に陥る処理をプログラム中に含めてしまっていた場合、実行不能に陥りデバッグ作業が続行できなくなるという課題があった。
【0009】
一方、従来のシミュレータを用いれば、メインプログラム中の不定動作に陥る処理の検出やデバッグを行うことは可能であったが、割り込み処理を含むプログラムをそのままシミュレーションすることは不可能であり、その割り込み処理がマイクロプロセッサの不定動作を誘発する原因となる不具合を含むような場合、問題箇所の特定ができないという課題があった。
【0010】
さらに、従来のマイクロプロセッサのエミュレーション方法およびエミュレータ装置では、マイクロプロセッサのプログラムに問題がなくマイクロプロセッサの命令自体に不具合があるような場合、その不具合の原因の特定が困難であるという課題があった。
【0011】
この発明は上記のような課題を解決するためになされたもので、マイクロプロセッサの不定動作を誘発するような割り込み処理を含むプログラムをエミュレーションでき問題箇所の特定を行うことが可能なデバッグ環境を提供し得るマイクロプロセッサのエミュレーション方法およびエミュレータ装置を得ることを目的とする。
【0012】
また、この発明は、マイクロプロセッサの命令自体に不具合がある場合その不具合を検出できるデバッグ環境を提供し得るマイクロプロセッサのエミュレーション方法およびエミュレータ装置を得ることを目的とする。
【0013】
【課題を解決するための手段】
請求項1記載の発明に係るマイクロプロセッサのエミュレーション方法は、割り込みが発生した場合その割り込みに関する処理を実行した後にエミュレーションを中断し、後続処理のエミュレーションを実行する以前に先行して処理を予測するために、エミュレーションを中断した時点のレジスタの値、プログラムカウンタ(PC)の値およびメモリデータをシミュレータに転送してシミュレーションを行うものである。
【0014】
請求項2記載の発明に係るマイクロプロセッサのエミュレーション方法は、エミュレーションを中断した後のシミュレーション実行時のプログラムカウンタ(PC)の値の遷移履歴を記憶し、シミュレーションが終了した後にエミュレーションを中断した時点から再開し、記憶済みのPCの値とエミュレーション実行時のPCの値とを順次比較し、それらのPCの値が不一致であるならばその旨を通知するものである。
【0015】
請求項3記載の発明に係るマイクロプロセッサのエミュレーション方法は、シミュレータが不定動作の発生を検知したならばその旨を通知して後続処理のエミュレーションを中止し、他方、シミュレータが不定動作の発生を検知しなかったならば、シミュレータのシミュレーションの後に後続処理のエミュレーションを割り込み発生による中断が生じるまで継続して実行するものである。
【0016】
請求項4記載の発明に係るエミュレータ装置は、割り込みが発生した際にその割り込みに関する処理を実行した後にエミュレーションを中断し、後続処理のエミュレーションを実行する以前に先行して処理を予測するためにシミュレータを起動するシミュレータ起動手段と、エミュレーションを中断した時点のレジスタの値、プログラムカウンタ(PC)の値およびメモリデータをシミュレータに転送する転送手段とを備えたものである。
【0017】
請求項5記載の発明に係るエミュレータ装置は、シミュレータにおけるシミュレーション実行時のプログラムカウンタ(PC)の値の遷移履歴を記憶するための記憶手段と、シミュレーションが終了した後に再開された後続処理のエミュレーションを実行する時のPCの値と記憶手段に記憶されたPCの値とを順次比較し、それらのPCの値が不一致であるならばその旨を通知するPC値比較手段とを備えたものである。
【0018】
【発明の実施の形態】
以下、この発明の実施の一形態を説明する。
実施の形態1.
図1はこの発明の実施の形態1によるマイクロプロセッサのエミュレーション方法を実現するエミュレータ装置の構成を示すブロック図である。図において、1はターゲットマイクロプロセッサの機能を代行するかまたはターゲットマイクロプロセッサ自身であるエミュレーション用のエミュレーションCPU(マイクロプロセッサ)、2はエミュレーションCPU1で実行されデバッグすべきプログラムが格納されるエミュレーションメモリ、3はエミュレーションメモリ2をエミュレーションCPUバス4側に接続するかまたはコントロールCPUバス5側に接続するバス切り替え回路、10はエミュレーションCPU1の所定の処理のエミュレーションに先行して処理を予測するべくその所定の処理をシミュレーションするためのシミュレータ、6はエミュレーションを実行するとともに各種デバッグ機能を備え、エミュレーションCPU1が割り込みプログラムを実行した際にその実行の終了を検知してエミュレーションを中断し、後続処理のエミュレーションを実行する以前に先行して処理を予測するためにシミュレータ10を起動し、さらに、エミュレーションを中断した時点のエミュレーションCPU1のレジスタの値、プログラムカウンタ(PC)の値およびメモリデータをシミュレータ10に転送し、シミュレータ10を用いて先行して処理を予測するためにシミュレーションを行うエミュレーションコントローラ(シミュレータ起動手段,転送手段)である。
【0019】
さらに、7はエミュレーションコントローラ6をコントロールCPUバス5に接続し、エミュレーションコントローラ6と他のユニットとの間の通信を司るエミュレーションコントローラ通信回路、8はコントロールCPUバス5を介してバス切り替え回路3等の他のユニットを制御するコントロールCPUである。なお、好ましくは、エミュレーションコントローラ6をホスト計算機として実現し、シミュレータ10はホスト計算機上のソフトウェアにより実現することができる。また、シミュレータ起動手段および転送手段はエミュレーションコントローラ6により実現される。
【0020】
次に動作について説明する。
図2はこの実施の形態1によるマイクロプロセッサのエミュレーション方法を実現するエミュレータ装置によるエミュレーションに先行して処理を予測する先行処理予測の流れを示すフローチャートである。また、図3は0除算を実行する可能性を有するメインプログラムと、メインプログラムの処理3で0除算を引き起こす原因を作り出す割り込み処理を実行する割り込みプログラムとを含むプログラムの実行の流れを概略的に示す説明図である。以下、0除算の実行動作を不定動作としているマイクロプロセッサにおいて図3に示すようなプログラムを実行した場合の先行処理予測の実施手順について図2および図3を参照しながら説明する。
【0021】
図3に示すプログラムを作成したプログラマは、メインプログラム中の0除算を実行する可能性を持った処理に関してその存在すら気づいておらず、従って、メインプログラム中に0除算に関するエラーチェック機能を設けていないと仮定する。
【0022】
メインプログラムが実行され、処理3の実行以前に割り込みが発生し、図3に示すような割り込みプログラムにて、S_DATAに0がセットされると、従来のようにこのままエミュレーションを継続して実行した場合、エミュレーションCPU1は処理3にて0除算を実行してしまい、エミュレータ装置は不定動作に陥ってしまう。
【0023】
これに対して、この実施の形態1によるエミュレータ装置では、図2の手順によってデバッグを行う。まず、エミュレーションコントローラ6は、ステップST1において、エミュレーションが終了したか否かを判定し、エミュレーションが終了していないならば、ステップST2において、エミュレーションが中断したか否かを判定する。上記したように、エミュレーションコントローラ6は、割り込みプログラムの実行終了を検知してエミュレーションを中断する機能を備えており、エミュレーションを一時中断すると、ステップST2からステップST3に移行して、シミュレータ10を起動してエミュレーション実行からシミュレーション実行に切り替えるか否かを判定する。この場合、割り込みプログラム実行によるエミュレーション中断であるので、シミュレータ10を起動してエミュレーション実行からシミュレーション実行に切り替える。
【0024】
シミュレーション実行に切り替わるまでは、エミュレータ装置は図3に示すような割り込みプログラムを実行しており、エミュレーションCPU1は実際のターゲットシステムの状態をふまえた実行経過状態となっており、この実施の形態1によるエミュレータ装置は、シミュレータ10のみでは実現しえない状態を容易に作りだしている。
【0025】
次に、エミュレーションコントローラ6は、ステップST4において、エミュレータ装置のエミュレーションCPU1のPCの値、レジスタの値およびメモリデータをシミュレータ10に転送する。その後、シミュレータ10は、上記の割り込みプログラムを経過しその影響も加えられた状態から後続処理を図3に示す処理4を実行するまで継続してシミュレーションする(ステップST5)。この結果、シミュレータ10は、後続の処理3の時点で0除算を検出することができる。
【0026】
もし、問題となる割り込みプログラム以外の割り込みでエミュレーションを中断した場合、シミュレータ10はエミュレーション中断以降に行うシミュレーションで0除算を検出することはないので、その割り込みが問題の割り込みプログラムを起動する割り込みではないことを容易に認識することができる。このような場合、ステップST5においてシミュレーションが終了した時に、一時停止状態にあるエミュレーション実行を再開し、問題となる割り込みプログラム実行後にエミュレーションを中断し、上記シミュレーションを繰り返すことにより問題の0除算を検出することが可能である。
【0027】
以上のように、この実施の形態1によれば、マイクロプロセッサの不定動作を誘発する割り込みプログラムを含むプログラムをエミュレーションし、さらに、シミュレータを用いて、従来エミュレーションのみでは不可能であった不定動作となる処理を先行して実行し問題箇所の特定を行うことが可能なデバッグ環境を提供することができる。このように、この実施の形態1によれば、本来エミュレータ装置とシミュレータがそれぞれ持っていた制限事項を克服し、論理シミュレーションとターゲットシステムとを結合させて実行してプログラムのデバッグを効率よく行うことができるので、プログラムの開発手順を削減し、開発効率を向上させることができる効果がある。
【0028】
実施の形態2.
図4はこの発明の実施の形態2によるマイクロプロセッサのエミュレーション方法を実現するエミュレータ装置の構成を示すブロック図である。図において、上記実施の形態1によるエミュレータ装置と同一の構成要素には図1と同一の符号を付してその説明を省略する。また、図4において、11はシミュレータ10がシミュレーションを実行している際にPCの値の遷移履歴が記憶される記憶手段としてのPC値履歴格納用FIFOバッファ、12はエミュレーション時のPCの値と比較するためにPC値履歴格納用FIFOバッファ11から既に記憶済みのシミュレーション時に実行したPCの値を順次読み出すFIFOバッファ読み出し回路、13はエミュレーション時に実行するPCの値とPC値履歴格納用FIFOバッファ11から読み出したシミュレーション時に実行したPCの値とを順次比較し不一致の場合にコントロールCPU8にその旨を示す情報を送出するPC値比較手段としてのPC値比較回路である。
【0029】
この発明の実施の形態2によるマイクロプロセッサのエミュレーション方法は、割り込みプログラム実行後に、上記実施の形態1と同様に、エミュレーションを一時中断しシミュレータ10を起動してシミュレーションを実行し、このシミュレーション実行中に変化するPCの値を順次PC値履歴格納用FIFOバッファ11に記憶し(すなわち、PCの値の遷移履歴を記憶する)、その後、再開したエミュレーション時に実行するPCの値とPC値履歴格納用FIFOバッファ11に記憶されたPCの値とを順次比較し、これらのPCの値の不一致を検出することによりマイクロプロセッサの命令の不具合を検知するものである。すなわち、この実施の形態2は、プログラムには問題がないがマイクロプロセッサの命令に不具合があるために、従来不具合を特定できなかった場合に適用され、その不具合を特定することが可能なマイクロプロセッサのエミュレーション方法を提供するものである。
【0030】
次に動作について説明する。
図5はこの実施の形態2によるマイクロプロセッサのエミュレーション方法を実現するエミュレータ装置によるエミュレーションに先行して処理を予測する先行処理予測とその後のエミュレーション時に実行するPCの値と先行処理予測した際に既に実行したPCの値とを順次比較する比較処理の流れを示すフローチャートである。また、図6はマイクロプロセッサがフラグが正しく変化しない不具合のある命令を有しており、その命令を実行するメインプログラムと、その命令のオペランドS_DATAの値を設定する割り込み処理を実行する割り込みプログラムとを含むプログラムの実行の流れを概略的に示す説明図である。以下、フラグが正しく変化しない不具合のある命令を有しているマイクロプロセッサにおいて図6に示すようなプログラムを実行した場合の先行処理予測および比較処理の実施手順について図5および図6を参照しながら説明する。
【0031】
図6に示すメインプログラムの処理2におけるCMP1命令は、S_DATAの値に応じてフラグZFLAGをONまたはOFFに設定するものである。以下では、割り込みプログラムの実行によりS_DATAに1がセットされることによって、後続の処理3の条件分岐の結果、処理4を実行するはずであったが、CMP1命令がフラグZFLAGを変化させない不具合を持っていたために、処理4が実行されずに処理5が実行されたとする。また、図6に示すプログラムを作成したプログラマは、CMP1命令の不具合を認識しておらず、どの時点で期待通りの処理から外れ、実行結果が期待通りにならなかったのか全く分かっていないものと仮定する。さらに、メインプログラムでは、実行結果が処理4を通過してきたのか処理5を通過してきたのかが全く分からないものと仮定する。
【0032】
まず、ステップST11において、エミュレーションコントローラ6は、PC値履歴格納用FIFOバッファ11が空か否かを判定し、空ならばステップST12に移行する。そして、エミュレーションコントローラ6は、ステップST12において、エミュレーションが終了したか否かを判定し、エミュレーションが終了していないならば、ステップST13において、エミュレーションが中断したか否かを判定する。上記したように、エミュレーションコントローラ6は、割り込みプログラムの実行終了を検知してエミュレーションを一時中断する機能を備えており、エミュレーションを一時中断すると、ステップST13からステップST14に移行して、シミュレータ10を起動してエミュレーション実行からシミュレーション実行に切り替える。シミュレーション実行に切り替わるまでは、エミュレータ装置は図6に示すような割り込みプログラムを実行しており、エミュレーションCPU1は実際のターゲットシステムの状態をふまえた実行経過状態となっており、この実施の形態2によるエミュレータ装置は、上記実施の形態1と同様に、シミュレータ10のみでは実現しえない状態を容易に作りだしている。
【0033】
次に、エミュレーションコントローラ6は、ステップST15において、エミュレータ装置のエミュレーションCPU1のPCの値、レジスタの値およびメモリデータをシミュレータ10に転送する。その後、シミュレータ10は、上記の割り込みプログラムによる処理を経過しその影響も加えられた状態から後続処理を処理4または処理5を実行するまで継続してシミュレーションする(ステップST16,ST17)。この際、シミュレータ10は、変化するPCの値を順次メモリ(図示せず)に蓄積し、シミュレーション中に実行したPCの値の遷移履歴を格納する。次に、エミュレーションコントローラ6は、ステップST18において、シミュレータ10によるシミュレーション実行を終了して、エミュレーション実行に切り替える際にエミュレータ装置のシミュレーション実行時のPCの値の遷移履歴を格納するためのPC値履歴格納用FIFOバッファ11に上記のように蓄積したPCの値の遷移履歴データを転送して、ステップST11に戻る。
【0034】
その後、エミュレーションコントローラ6はエミュレーション実行を再開し、さらに、PC値履歴格納用FIFOバッファ11は空ではないのでステップST19に移行し、FIFOバッファ読み出し回路12を用いてPC値履歴格納用FIFOバッファ11からシミュレータ10によるシミュレーション実行時のPCの値を順次読み出して、そのPCの値をPC値比較回路13に転送する。そして、PC値比較回路13は、ステップST20において、読み出したPCの値と現在エミュレーション実行しようとするPCの値とを比較し、同一か否かを判定する。もし、読み出したPCの値と現在エミュレーション実行しようとするPCの値とが不一致であるならば、PC値比較回路13は、ステップST21において、コントロールCPU8に割り込み信号を送り、読み出したPCの値と現在エミュレーション実行しようとするPCの値とが相違することをコントロールCPU8に通知する。
【0035】
もし、上記したようにCMP1命令がフラグZFLAGを変化させない不具合を有しているならば、不一致が起こった時点のPCの値は図6に示す処理3実行後の時点のものであり、処理3がフラグZFLAGの状態による条件分岐であることから、問題の要因となる部分に見当をつけることが可能となる。さらに、その時点でシミュレータ10は、最後の割り込みプログラム実行後のシミュレーション開始時のPCの値、レジスタの値およびメモリデータを保持しているので、最後の割り込みプログラム実行後の状態からのデバッグをシミュレーションにより継続することも可能である。
【0036】
以上のように、この実施の形態2によれば、マイクロプロセッサの命令に不具合がある場合その不具合を検出可能なデバッグ環境を提供することができる。これにより、本来エミュレータ装置とシミュレータがそれぞれ持っていた制限事項を克服し、論理シミュレーションとターゲットシステムとを結合させて実行してプログラムのデバッグを効率よく行うことができるので、プログラムの開発手順を削減し、開発効率を向上させることができる効果がある。
【0037】
【発明の効果】
以上のように、請求項1記載の発明によれば、マイクロプロセッサのエミュレーション方法を、割り込みが発生した場合その割り込みに関する処理を実行した後にエミュレーションを中断し、後続処理のエミュレーションを実行する以前に先行して処理を予測するために、エミュレーションを中断した時点のレジスタの値、プログラムカウンタ(PC)の値およびメモリデータをシミュレータに転送してシミュレーションを行うように構成したので、本来エミュレータ装置とシミュレータがそれぞれ持っていた制限事項を克服し、論理シミュレーションとターゲットシステムとを結合させて実行してプログラムのデバッグを効率よく行うことができるので、プログラムの開発手順を削減し、開発効率を向上させることができる効果がある。
【0038】
請求項2記載の発明によれば、マイクロプロセッサのエミュレーション方法を、エミュレーションを中断した後のシミュレーション実行時のプログラムカウンタ(PC)の値の遷移履歴を記憶し、シミュレーションが終了した後にエミュレーションを中断した時点から再開し、記憶済みのPCの値とエミュレーション実行時のPCの値とを順次比較し、それらの値が不一致であるならばその旨を通知するように構成したので、マイクロプロセッサの命令に不具合がある場合その不具合を検出可能なデバッグ環境を提供することができる効果がある。これにより、本来エミュレータ装置とシミュレータがそれぞれ持っていた制限事項を克服し、論理シミュレーションとターゲットシステムとを結合させて実行してプログラムのデバッグを効率よく行うことができるので、プログラムの開発手順を削減し、開発効率を向上させることができる効果がある。
【0039】
請求項3記載の発明によれば、マイクロプロセッサのエミュレーション方法を、シミュレータが不定動作の発生を検知したならばその旨を通知して後続処理のエミュレーションを中止し、他方、シミュレータが不定動作の発生を検知しなかったならば、シミュレータのシミュレーションの後に後続処理のエミュレーションを割り込み発生による中断が生じるまで継続して実行するように構成したので、マイクロプロセッサの不定動作を誘発する割り込みプログラムを含むプログラムをエミュレーションし、さらに、シミュレータを用いて、従来エミュレーションのみでは不可能であった不定動作となる処理を先行して実行し問題箇所の特定を行うことが可能なデバッグ環境を提供することができる効果がある。
【0040】
請求項4記載の発明によれば、エミュレータ装置を、割り込みが発生した際にその割り込みに関する処理を実行した後にエミュレーションを中断し、後続処理のエミュレーションを実行する以前に先行して処理を予測するためにシミュレータを起動するシミュレータ起動手段と、エミュレーションを中断した時点のレジスタの値、PCの値およびメモリデータをシミュレータに転送する転送手段とを備えるように構成したので、本来エミュレータ装置とシミュレータがそれぞれ持っていた制限事項を克服し、論理シミュレーションとターゲットシステムとを結合させて実行してプログラムのデバッグを効率よく行うことができるので、プログラムの開発手順を削減し、開発効率を向上させることができる効果がある。
【0041】
請求項5記載の発明によれば、エミュレータ装置を、シミュレータにおけるシミュレーション実行時のプログラムカウンタ(PC)の値の遷移履歴を記憶するための記憶手段と、シミュレーションが終了した後に再開された後続処理のエミュレーションを実行する時のPCの値と記憶手段に記憶されたPCの値とを順次比較し、それらのPCの値が不一致であるならばその旨を通知するPC値比較手段とを備えるように構成したので、マイクロプロセッサの命令に不具合がある場合その不具合を検出可能なデバッグ環境を提供することができる効果がある。これにより、本来エミュレータ装置とシミュレータがそれぞれ持っていた制限事項を克服し、論理シミュレーションとターゲットシステムとを結合させて実行してプログラムのデバッグを効率よく行うことができるので、プログラムの開発手順を削減し、開発効率を向上させることができる効果がある。
【図面の簡単な説明】
【図1】 この発明の実施の形態1によるマイクロプロセッサのエミュレーション方法を実現するエミュレータ装置の構成を示すブロック図である。
【図2】 この発明の実施の形態1によるマイクロプロセッサのエミュレーション方法を実現するエミュレータ装置によるエミュレーションに先行して処理を予測する先行処理予測の流れを示すフローチャートである。
【図3】 この発明の実施の形態1によるマイクロプロセッサのエミュレーション方法の対象となるプログラム例であり、0除算を実行する可能性を有するメインプログラムと、メインプログラムの処理3で0除算を引き起こす原因を作り出す割り込み処理プログラムとを含むプログラムの実行の流れを示す説明図である。
【図4】 この発明の実施の形態2によるマイクロプロセッサのエミュレーション方法を実現するエミュレータ装置の構成を示すブロック図である。
【図5】 この発明の実施の形態2によるマイクロプロセッサのエミュレーション方法を実現するエミュレータ装置によるエミュレーションに先行して処理を予測する先行処理予測とその後のエミュレーション時にPCの値と先行処理予測したPCの値と順次比較する比較処理の流れを示すフローチャートである。
【図6】 この発明の実施の形態2によるマイクロプロセッサのエミュレーション方法の対象となるプログラム例であり、フラグが正しく変化しない不具合のある命令を実行するメインプログラムと、その命令のオペランドの値を設定する割り込み処理プログラムとを含むプログラムの実行の流れを示す説明図である。
【図7】 従来のマイクロプロセッサのエミュレーション方法でのエミュレーション実行と従来のシミュレータでのシミュレーション実行との相違を示す説明図である。
【図8】 従来のマイクロプロセッサのエミュレーション方法を実現するエミュレータ装置の一例の構成を示すブロック図である。
【符号の説明】
1 エミュレーションCPU(マイクロプロセッサ)、6 エミュレーションコントローラ(シミュレータ起動手段、転送手段)、10 シミュレータ、11PC値履歴格納用FIFOバッファ(記憶手段)、13 PC値比較回路(PC値比較手段)。
Claims (5)
- マイクロプロセッサのエミュレーションの実行の途中で割り込みが発生した場合該割り込みに関する処理を実行した後にエミュレーションを中断し、後続処理のエミュレーションを実行する以前に先行して処理を予測するために、前記エミュレーションを中断した時点のレジスタの値、プログラムカウンタ(PC)の値およびメモリデータをシミュレータに転送し、前記シミュレータを用いて先行して処理を予測するためにシミュレーションを行うマイクロプロセッサのエミュレーション方法。
- エミュレーションを中断した後のシミュレーション実行時のプログラムカウンタ(PC)の値の遷移履歴を記憶し、前記シミュレーションが終了した後に前記エミュレーションを中断した時点から再開し、記憶済みの前記PCの値とエミュレーション実行時のPCの値とを順次比較し、それらのPCの値が不一致であるならばその旨を通知することを特徴とする請求項1記載のマイクロプロセッサのエミュレーション方法。
- シミュレータが不定動作の発生を検知したならばその旨を通知して後続処理のエミュレーションを中止し、他方、前記シミュレータが不定動作の発生を検知しなかったならば、前記シミュレータのシミュレーションの後に後続処理のエミュレーションを割り込み発生による中断が生じるまで継続して実行することを特徴とする請求項1または請求項2記載のマイクロプロセッサのエミュレーション方法。
- マイクロプロセッサの所定の処理のエミュレーションに先行して処理を予測するべく前記所定の処理をシミュレートするためのシミュレータと、エミュレーションの実行の途中で割り込みが発生した際に該割り込みに関する処理を実行した後にエミュレーションを中断し、後続処理のエミュレーションを実行する以前に先行して処理を予測するために前記シミュレータを起動するシミュレータ起動手段と、前記エミュレーションを中断した時点のレジスタの値、プログラムカウンタ(PC)の値およびメモリデータを前記シミュレータに転送する転送手段とを備えたエミュレータ装置。
- シミュレータにおけるシミュレーション実行時のプログラムカウンタ(PC)の値の遷移履歴を記憶するための記憶手段と、前記シミュレーションが終了した後に再開された後続処理のエミュレーションを実行する時のPCの値と前記記憶手段に記憶されたPCの値とを順次比較し、それらのPCの値が不一致であるならばその旨を通知するPC値比較手段とを備えたことを特徴とする請求項4記載のエミュレータ装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP15127897A JP3685288B2 (ja) | 1997-06-09 | 1997-06-09 | マイクロプロセッサのエミュレーション方法およびエミュレータ装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP15127897A JP3685288B2 (ja) | 1997-06-09 | 1997-06-09 | マイクロプロセッサのエミュレーション方法およびエミュレータ装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10340205A JPH10340205A (ja) | 1998-12-22 |
JP3685288B2 true JP3685288B2 (ja) | 2005-08-17 |
Family
ID=15515193
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP15127897A Expired - Fee Related JP3685288B2 (ja) | 1997-06-09 | 1997-06-09 | マイクロプロセッサのエミュレーション方法およびエミュレータ装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3685288B2 (ja) |
-
1997
- 1997-06-09 JP JP15127897A patent/JP3685288B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH10340205A (ja) | 1998-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7409330B2 (en) | Method and system for software debugging using a simulator | |
US5978584A (en) | Debugging apparatus for debugging a program by changing hardware environments without changing program operation state | |
US4633417A (en) | Emulator for non-fixed instruction set VLSI devices | |
JP5443172B2 (ja) | 処理環境での命令実行の制御 | |
US4933941A (en) | Apparatus and method for testing the operation of a central processing unit of a data processing system | |
JP2000020349A (ja) | プログラム開発支援装置、プログラム開発支援方法及びプログラム開発支援用プログラムを記録した媒体 | |
US5003468A (en) | Guest machine execution control system for virutal machine system | |
US6106565A (en) | System and method for hardware emulation of a digital circuit | |
JP2007058813A (ja) | 検証装置及び検証方法 | |
JP3685288B2 (ja) | マイクロプロセッサのエミュレーション方法およびエミュレータ装置 | |
JP2001209556A (ja) | 検証支援システム | |
JPH10254738A (ja) | エミュレータ装置及びエミュレーション方法 | |
JP2005353020A (ja) | コンピュータプログラムのシミュレーション方式 | |
JPH07253909A (ja) | マイクロプログラム検証方法 | |
JP2004054825A (ja) | 半導体集積回路装置及びそのデバッガ装置 | |
JP2001209555A (ja) | 入出力エミュレーション装置、入出力装置のエミュレーション方法および入出力装置エミュレーションプログラムを記録した記録媒体 | |
KR100658485B1 (ko) | 마이크로프로세서 개발시스템 | |
JP3449812B2 (ja) | 制御用電子装置 | |
JP2632891B2 (ja) | システム開発装置 | |
JP2002366378A (ja) | プログラムのデバッグ装置及びデバッグ方法、並びに記憶媒体 | |
JP2978841B2 (ja) | インサーキットエミュレータにおけるエミュレーション方法 | |
JPS62194549A (ja) | Cpu―io並列動作シミュレーション方法 | |
JPH053033B2 (ja) | ||
JPH04314139A (ja) | デバッグ装置 | |
JPH06175874A (ja) | インサーキットエミュレータ装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050421 |
|
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: 20050426 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050525 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080610 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090610 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |