(57)【特許請求の範囲】
【請求項１】
ＣＰＵと、
前記ＣＰＵから得られる内部クロックを計数することにより一定周期の一定ステップ信号を出力するカウンタと、
前記ＣＰＵから得られる条件分岐の条件判別信号、前記ＣＰＵから得られる割り込み・間接分岐タイミング信号、及び前記カウンタから得られる一定ステップ信号からトレースメモリ書込み制御信号を出力するトレースメモリ書込み制御回路と、
前記ＣＰＵから得られる条件分岐の条件判別信号、前記ＣＰＵから得られる割り込み・間接分岐タイミング信号、及び前記カウンタから得られる一定ステップ信号から符号・タイミング信号を出力する符号生成回路と、
前記符号生成回路から得られる符号・タイミング信号及びＣＰＵから得られる実行アドレスからトレースデータを出力するトレースデータ生成回路と、
前記トレースメモリ書込み制御回路から得られるトレースメモリ書込み制御信号に基づいて前記トレースデータ生成回路から得られるトレースデータを格納するトレースメモリと、を備え、
前記トレースデータは、条件分岐命令の分岐結果を示す符号、前記符号生成回路より一定ステップ信号生成時に前記ＣＰＵより得られる実行アドレス信号と一定ステップ信号を示す符号、及び割込み・間接分岐命令の分岐元アドレス、分岐先アドレスと間接割込み分岐命令を示す符号であることを特徴とするインサーキットエミュレータ。
【請求項２】
前記ＣＰＵから得られるループ・リピートタイミング信号からスタート・ストップ制御信号を出力するスタート・ストップ制御回路と、
前記ＣＰＵから得られる内部クロックと前記スタート・ストップ制御回路と、を更に備えたことを特徴とする請求項１記載のインサーキットエミュレータ。
【請求項３】
前記ＣＰＵから得られる割り込み・間接分岐タイミング信号が入力されたときに前記カウンタにクリア制御信号を出力し、前記カウンタの計数をクリアするクリア制御回路を更に備えたことを特徴とする請求項１記載のインサーキットエミュレータ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロプロセッサ等に使用され、トレースメモリを持つインサーキットエミュレータに関するものである。
【０００２】
【従来の技術】
インサーキットエミュレータは、マイクロプロセッサ等のプログラムをデバッグするための装置として用いられている。インサーキットエミュレータが持つ機能の中で、トレース機能は、プログラムの何番地をどのような順序で実行したかの実行履歴をトレースメモリに残すことができ、デバッグを行う上で有用な機能である。
【０００３】
従来のインサーキットエミュレータでは、トレース機能において、トレースメモリに格納するトレースデータ容量を大きく圧縮する方法として、分岐命令以外では、実行アドレスが１ずつ増加することを利用し、分岐命令前後のアドレスのみをトレースメモリへ格納することで、プログラムの実行履歴を再現していた。
【０００４】
図４は、従来のインサーキットエミュレータの構成を示すブロック図を示す。本図においてＣＰＵ１１は、プログラムが実行したアドレスを実行アドレス１０１として出力する。分岐命令でない時は、実行アドレス１０１は、１ずつ増加する。又、ＣＰＵ１１は、実行したアドレスが分岐命令だった時、その命令と分岐先命令が実行されるタイミングに、分岐タイミング信号４０１にアクティブ信号を出力する。実行アドレス１０１と分岐タイミング信号４０１は、トレースデータ生成回路１４に入力される。トレースデータ生成回路１４は、分岐タイミング信号４０１にアクティブ信号が出力された場合のみ、実行アドレス１０１をトレースデータ１０７としてトレースメモリ１２に出力する。又、分岐タイミング信号４０１は、トレースメモリ書込み制御回路１６に入力されている。トレースメモリ書込み制御回路１６は、分岐タイミング信号４０１にアクティブ信号が出力された場合のみ、トレースメモリ１２に順次トレースデータ１０７が書き込まれるように制御する。結果的にトレースメモリ１２には、プログラムが実行された以降に実行された分岐命令の、分岐元アドレスと分岐先アドレスが格納される。
【０００５】
マイクロプロセッサ等の分岐命令は、
（１）無条件分岐命令
（２）条件分岐命令
（３）割込み・間接分岐命令
に大別される。従来のインサーキットエミュレータでは、分岐命令の種類にかかわらず、トレースデータとして、分岐元アドレスと分岐先アドレスをトレースメモリに格納している。
【０００６】
図８（ａ）はプログラムの実行において無条件分岐命令７０１、条件分岐命令７０２、条件分岐命令７０３、無条件分岐命令７０４、条件分岐命令７０５、割込み・間接分岐命令７０６の順に分岐命令が実行されたことを示している。図８（ｂ）はインサーキットエミュレータのトレースメモリに格納されるトレースデータで、ＣＰＵの命令メモリアドレスのビット幅が１６ビット（２バイト）の場合のトレースメモリ１２の格納データを示す。
【０００７】
まず無条件分岐命令７０１が実行された時に、トレースメモリ１２には、分岐元アドレス７０１１と分岐先アドレス７０１２それぞれ２バイトが格納される。次に条件分岐命令７０２が実行された時に、トレースメモリ１２には、分岐元アドレス７０２１と分岐先アドレス７０２２それぞれ２バイトが格納される。以降、トレースメモリ１２には、分岐元アドレス７０３１と分岐先アドレス７０３２、分岐元アドレス７０４１と分岐先アドレス７０４２、分岐元アドレス７０５１と分岐先アドレス７０５２、分岐元アドレス７０６１と分岐先アドレス７０６２それぞれ２バイトが格納される。よって、合計２４バイトのトレースデータが、トレースメモリ１２に格納されることとなる。
【０００８】
【発明が解決しようとする課題】
従来のインサーキットエミュレータ４では、トレースメモリ１２には、分岐命令が実行される毎に分岐元アドレスと分岐先アドレスを格納する必要があり、トレースメモリの容量としては、ＣＰＵの命令メモリアドレスのビット幅×２×分岐命令実行回数が必要となっていた。
【０００９】
本発明は、かかる課題に鑑み、トレースメモリに分岐命令の実行結果と分岐命令の種類を示す２ビットの符号を分岐命令の実行回数分格納することで、トレースメモリの容量を圧縮することを目的とする。
【００１０】
【課題を解決するための手段】
本願の請求項１の発明は、ＣＰＵと、前記ＣＰＵから得られる内部クロックを計数することにより一定周期の一定ステップ信号を出力するカウンタと、前記ＣＰＵから得られる条件分岐の条件判別信号、前記ＣＰＵから得られる割り込み・間接分岐タイミング信号、及び前記カウンタから得られる一定ステップ信号からトレースメモリ書込み制御信号を出力するトレースメモリ書込み制御回路と、前記ＣＰＵから得られる条件分岐の条件判別信号、前記ＣＰＵから得られる割り込み・間接分岐タイミング信号、及び前記カウンタから得られる一定ステップ信号から符号・タイミング信号を出力する符号生成回路と、
前記符号生成回路から得られる符号・タイミング信号及びＣＰＵから得られる実行アドレスからトレースデータを出力するトレースデータ生成回路と、前記トレースメモリ書込み制御回路から得られるトレースメモリ書込み制御信号に基づいて前記トレースデータ生成回路から得られるトレースデータを格納するトレースメモリと、を備え、前記トレースデータは、条件分岐命令の分岐結果を示す符号、前記符号生成回路より一定ステップ信号生成時に前記ＣＰＵより得られる実行アドレス信号と一定ステップ信号を示す符号、及び割込み・間接分岐命令の分岐元アドレス、分岐先アドレスと間接割込み分岐命令を示す符号であることを特徴とするものである。
【００１１】
本願の請求項２の発明は、請求項１のインサーキットエミュレータにおいて、前記ＣＰＵから得られるループ・リピートタイミング信号からスタート・ストップ制御信号を出力するスタート・ストップ制御回路と、前記ＣＰＵから得られる内部クロックと前記スタート・ストップ制御回路と、を更に備えたことを特徴とするものである。
【００１２】
本願の請求項３の発明は、請求項１のインサーキットエミュレータにおいて、前記ＣＰＵから得られる割り込み・間接分岐タイミング信号が入力されたときに前記カウンタにクリア制御信号を出力し、前記カウンタの計数をクリアするクリア制御回路を更に備えたことを特徴とするものである。
【００１４】
【発明の実施の形態】
以下、本発明の実施の形態について説明する。図１は、本発明の第１の実施の形態におけるインサーキットエミュレータの構成を示すブロック図である。図１において、ＣＰＵ１１は、プログラムが実行したアドレスを実行アドレス１０１として出力すると共に、条件分岐命令において分岐条件が成立したかどうかを示す分岐条件判別信号１０２を出力するものである。又ＣＰＵ１１は、割込みが発生した場合もしくは間接分岐命令が実行された場合は、割込み・間接分岐タイミング信号１０３を出力する。又ＣＰＵ１１は、内部クロック１０４を出力する。
【００１５】
カウンタ１３は、内部クロック１０４をカウントしてある値以上になった時に、一定ステップ信号１０５を出力するものである。トレースメモリ書込み制御回路１６は、分岐条件判別信号１０２と割り込み・間接分岐タイミング信号１０３と一定ステップ信号１０５から、トレースメモリ書込み制御信号１０８を出力する。
【００１６】
符号生成回路１５は、分岐条件判別信号１０２と割り込み・間接分岐タイミング信号１０３と一定ステップ信号１０５から、後述する４ビットの符号・タイミング信号１０６を出力する。トレースデータ生成回路１４は、実行アドレス１０１と、符号・タイミング信号１０６から、トレースデータ１０７を出力する。トレースメモリ１２には、トレースメモリ書込み制御回路１６から出力されたトレースメモリ書込み制御信号１０８に従って、トレースデータ生成回路１４から出力されたトレースデータ１０７が順次書き込まれる。
【００１７】
図５（ａ）は、本発明の第１の実施の形態における分岐命令の実行履歴を示し、図５（ｂ）はインサーキットエミュレータのトレースメモリ１２に格納されるトレースデータで、命令メモリアドレスのビット幅が１６ビット（２バイト）、符号のビット幅が４ビットの場合の例を示す。
マイクロプロセッサ等の分岐命令は、
（１）無条件分岐命令
（２）条件分岐命令
（３）割込み・間接分岐命令
に大別される。本発明の第１の実施の形態におけるインサーキットエミュレータにおいては、無条件分岐命令についてのトレースデータは不要である。又、本発明の第１の実施の形態におけるインサーキットエミュレータにおいては、一定ステップ信号１０５が出力された場合に、その時の実行プログラムのアドレスをトレースデータとしてトレースメモリに格納する。
【００１８】
符号・タイミング信号１０６は、４ビットのデータで、条件分岐命令において、
分岐条件が成立し、分岐が行われた場合は、００００、
分岐条件が成立しなくて、分岐が行われなかった場合は、０００１、
割込み・間接分岐命令が実行された場合は、００１０、
一定ステップ信号１０５が出力された場合は、００１１
を出力する。
【００１９】
トレースデータ生成回路１４はこれらの出力を夫々トレースデータとしてトレースメモリ１２に順次格納する。又、符号・タイミング信号１０６に加えて、割込み・間接分岐命令の場合は、分岐元アドレスと分岐先アドレス夫々２バイトを、一定ステップ信号の場合は、一定ステップ信号が発生した時の実行アドレス２バイトを、夫々トレースメモリ１２に格納する。
【００２０】
図５（ａ）はプログラムの実行の例を示しており、この例において無条件分岐命令５０１、条件分岐命令５０２、条件分岐命令５０３、無条件分岐命令５０４、条件分岐命令５０５、割込み・間接分岐命令５０６の順に分岐命令が実行され、無条件分岐命令５０４と条件分岐命令５０５の間に一定ステップ信号５０７が発生したものとする。図５（ｂ）はこの場合のトレースメモリ１２の格納データを示す。
【００２１】
まず無条件分岐命令５０１が実行された時には、トレースメモリ１２には、トレースデータは格納されない。次に条件分岐命令５０２が実行された時に、トレースメモリの最初の４ビット、即ち符号５０２１には、
分岐条件が成立し、分岐が行われた場合は、００００、
分岐条件が成立しなくて、分岐が行われなかった場合は、０００１
が格納される。次に条件分岐命令５０３が実行された時には、トレースメモリの次の４ビットに、符号５０３１として００００もしくは０００１が格納される。無条件分岐命令５０４が実行された時には、トレースメモリ１２には、トレースデータは格納されない。次に一定ステップ信号５０７が発生すると、トレースメモリ１２には、その時のプログラムの実行アドレス５０７１として２バイトが格納され、次の４ビットに、符号５０７２として００１１が格納される。条件分岐命令５０５が実行された時には、トレースメモリ１２の次の４ビットに、符号５０５１として００００もしくは０００１が格納される。更に割込み・間接分岐命令５０６が実行された時には、トレースメモリ１２には、分岐元アドレス５０６１と分岐先アドレス５０６２それぞれ２バイトが格納され、次の４ビットに、符号５０６３として００１０が格納される。
【００２２】
図６，図７は、本発明の第１の実施の形態におけるインサーキットエミュレータのトレースデータからプログラムの実行履歴を復元する際のフローチャートを示す。ここでＩＰは、プログラムの実行履歴復元の開始アドレスである。ＴＰは、４ビット単位でのトレースメモリの参照位置を示す。又ＴＰ' は、４ビット単位でのトレースメモリの参照位置を示し、トレースデータからプログラムの実行履歴を復元する際に、トレースデータが格納されている最終アドレスを保存する際に用いられる。図５の場合は、トレースデータが格納されている最終アドレスは、アドレス８の下位４ビットである。まずステップ６０１で、ＴＰ' に現在のＴＰの値、即ち、トレースデータが格納されているトレースメモリ内の最終アドレスを保存する。
【００２３】
次にステップ６０２で、ＴＰで指し示されたトレースデータの符号が一定ステップ信号を示す００１１でなければ、トレースメモリをさかのぼって、次に符号を見に行く。ステップ６０３でＴＰが０でなかったら、まだトレースメモリの先頭アドレスまで解析を終了していないことがわかるため、ステップ６０４でＴＰを次の符号データが格納されているアドレスにすると共に、どの参照位置ＴＰに符号データが格納されているかを記録してステップ６０２に戻る。そしてステップ６０３で、ＴＰであれば、トレースメモリの先頭アドレスまで解析を終了したことがわかるため、ステップ６０５で、ＩＰをプログラムの開始アドレスにして、ステップ６１４に進む。
【００２４】
一方ステップ６０２で、ＴＰで指し示されたトレースデータの符号が一定ステップ信号を示す００１１であれば、ステップ６０６に進んでＩＰを一定ステップ信号の実行アドレスとし、後述するようにこの実行アドレスから実行履歴を復元する。次にステップ６０７でＴＰ＝ＴＰ’、即ちトレースメモリの最終アドレスに一定ステップ信号を示す「００１１」が格納されていたかどうかをチェックし、ＴＰがＴＰ’であればステップ６１４に進む。ステップ６０７において、ＴＰ＝ＴＰ’でなければステップ６０８に進み、ステップ６０４の記録を元にＴＰを次の符号データが格納されているアドレスとする。
【００２５】
このようにしてＩＰ、即ちプログラムの実行履歴復元の開始アドレスが確定したら、トレースメモリの符号を今までとは逆の方向にたどりながら実行履歴を復元していく。即ち、ステップ６０９は、ＴＰで指し示されたトレースデータの符号が条件分岐命令で分岐が行われたことを示す００００だった場合は、６１０で、ソースプログラムを解析しながら一定ステップ信号のアドレスから最初の条件分岐命令までアドレスＩＰをインクリメントする。条件分岐命令の次のプログラム実行アドレスは、ソースプログラムに記載された条件分岐命令の飛び先アドレスである。ステップ６０９で、ＴＰで指し示されたトレースデータの符号が、条件分岐命令で分岐が行われなかったことを示す０００１だった場合は、ステップ６１１で、ソースプログラムを解析しながら最初の条件分岐命令までＩＰをインクリメントする。この場合、分岐が行われなかったということで、条件分岐命令の次に実行されたアドレスは、条件分岐命令の次のアドレスということになる。又、ステップ６０９で、ＴＰで指し示されたトレースデータの符号が割込み・間接分岐命令だったことを示す００１０だった場合は、ステップ６１２で、ＩＰを割込み・間接分岐命令の分岐元アドレスと等しくなるまでインクリメントさせる。割込み・間接分岐命令の分岐元アドレスの次のプログラム実行アドレスは、トレースメモリ１２に保持されている割込み・間接分岐命令の分岐先アドレスとなる。
【００２６】
そしてステップ６１３でステップ６０４の記録を元にトレースメモリの参照位置ＴＰを次の符号データが格納されているアドレスにすると共に、アドレスＩＰをインクリメントさせる。そしてステップ６１４でＴＰ＝ＴＰ’、即ちトレースメモリの最終アドレスまで実行履歴を復元したかどうかをチェックし、又最終アドレスまで復元していなければ続きを復元するため、ステップ６０９に戻る。ＴＰ＝ＴＰ’であれば、ステップ６１５に進んでステップＩＰをインクリメントさせてＩＰ’まで復元する。これで一定ステップ期間以下の復元が終了するが、ステップ６１６で更に古い実行履歴を復元するかどうかを判別する。更に古い実行履歴を復元する場合はステップ６１６からステップ６１７に進んで、ステップ６０２で符号００１１を検出したＴＰより１つ古い符号が格納されているアドレスをＴＰ’に代入すると共に、前回のステップ６０６で代入されたＩＰをディクリメントしてＩＰ’に代入し、ステップ６０２に戻る。以後同様の処理を繰り返すことによって、一定ステップ信号毎に順次古い実行履歴を復元することができる。
【００２７】
ここで、図５を用いて、アドレスの復元について説明する。実行終了時のトレースメモリの最終位置ＴＰ’は８バイト目の下位ビット（以下、８Ｌという）なので、まずステップ６０１でＴＰ’に８Ｌを代入する。次いでステップ６０２で符号５０６３をチェックする。符号５０６３の値は００１１ではないのでステップ６０３，６０４に進み、次の符号データが格納されているアドレスとして３バイト目の上位ビット（３Ｈ）を代入して、ステップ６０２に戻る。ステップ６０２では符号５０５１の値をチェックするが、この値も００１１ではないため、ステップ６０４でＴＰに３バイト目の下位ビット（３Ｌ）が代入される。符号５０７２の値は００１１なので、ステップ６０６に進んでＩＰに実行アドレス５０７１が代入される。そしてステップ６０７，６０８を介してステップ６０９に進み、ＴＰの示す符号によりステップ６１０又は６１１を実行して実行アドレス５０７１から実行停止時のＩＰまでを復元する。更に古い実行履歴を復元する場合には、ステップ６１７でＴＰ’に０バイト目の上位ビット（０Ｈ）を代入すると共に、ＩＰ’に実行アドレス５０７１−１を代入する。そしてステップ６０２に戻って同様の処理を繰り返す。一定ステップ信号はここではもうトレースメモリ１２に格納されていないので、ステップ６０４でＴＰに０バイト目の下位ビット（０Ｌ）を代入し、ステップ６０５で実行開始時のアドレスをＩＰに代入する。そしてステップ６０９から６１５のフローにより実行開始時のアドレスから実行アドレス５０７１−１を復元する。
【００２８】
以上のように本発明の第１の実施の形態によれば、従来、（１）無条件分岐命令では、４バイト必要だったトレースデータが０に、（２）条件分岐命令では４バイト必要だったトレースデータが４ビットに圧縮できる。反面、（３）割込み・間接分岐命令では、必要なトレースデータが４ビット増えている。加えて、本発明の第１の実施の形態によれば、（４）一定ステップ信号が発生した時に実行アドレスの格納が必要となる。しかし、（３）割込み・間接分岐命令の実行や（４）一定ステップ信号の発生よりも、（１）無条件分岐命令の実行や、（２）条件分岐命令の実行の方がはるかに頻度が高いため、全体としてトレースメモリの使用量を大幅に圧縮することが可能となる。
【００２９】
図２は、本発明の第２の実施の形態におけるインサーキットエミュレータの構成を示すブロック図である。図２において、本発明の第１の実施の形態と同じ構成要素は同じ符号を付して説明を省略し、異なる点を中心に説明する。
【００３０】
ＣＰＵ１１はループ命令やリピート命令の実行において２回目以降の繰り返し処理であるループ動作期間、リピート動作期間を示すタイミング信号をループ・リピートタイミング信号２０１に出力する。スタート・ストップ制御回路２１はループ・リピートタイミング信号２０１からカウンタ１３に対し、カウントのスタート及びストップを制御するスタート・ストップ制御信号２０２を出力する。スタート・ストップ制御信号２０２によりカウンタ１３はループ命令やリピート命令の実行において２回目以降の繰り返し期間中カウントをストップさせ、繰り返し期間が終了するとカウントを再スタートする。
【００３１】
以上のように本発明の第２の実施の形態によれば、ループ命令やリピート命令等の繰り返し実行される命令の場合、プログラムの内容により何回繰り返されたかは分かるので、復元されるプログラムの実行履歴としては１回の実行分の復元で十分である。そこでループ命令やリピート命令等の繰り返し期間中に一定ステップ数のカウントをストップさせている。こうすることにより、第１の実施の形態による効果に加えて、一定ステップ信号の発生によって生じるトレースデータを削減することができる。
【００３２】
図３は、本発明の第３の実施の形態におけるインサーキットエミュレータの構成を示すブロック図を示す。図３において、本発明の第１の実施の形態と同じ構成要素は同じ符号を付して説明を省略し、異なる点を中心に説明する。
【００３３】
クリア制御回路３１はＣＰＵ１１が出力する割込み・間接分岐タイミング信号１０３が入力されたときにカウンタ１３に対し、カウントをクリアするクリア制御信号３０１を出力するものである。クリア制御信号３０１によりカウンタ１３は割込み・間接分岐命令の実行期間、一定ステップのカウントを一旦クリアし、次の命令実行よりカウントを再スタートする。
【００３４】
以上のように本発明の第３の実施の形態によれば、第１の実施の形態による効果の他に、割込み・間接分岐命令が一定ステップ数より少ない間隔で実行された場合、割込み・間接分岐命令の実行により一定ステップのカウントが０からカウントし直されるため、一定ステップ信号の発生によるトレースデータを削減することができる。
【００３５】
尚、実行させたプログラムの内容、量、及びトレースメモリ容量によってはトレースメモリがオーバーフローし、実行履歴の復元が不可能になることも有り得る。そのため一定ステップ数をトレースメモリの容量以下に設定すると共に、トレースメモリ書き込み制御回路１６にオーバーフローを検出し、検出時に実行を停止する機能を付加すれば、トレースメモリがオーバーフローした際、実行履歴の復元が不可能になることを回避することができる。この時の実行履歴の復元方法としては本発明の第１の実施の形態に従い、トレースデータが格納されているトレースメモリの最終アドレスからトレースメモリの物理的な先頭アドレスである０番地までのトレースデータ内容を解析し、実行履歴を復元した後、トレースメモリの物理的な末尾アドレス（例えば３２Ｋバイトのトレースメモリの場合、７FFF （16進）番地がこの末尾アドレスになる）からトレースデータが格納されているトレースメモリの最終アドレス＋１までのトレースデータ内容を解析し、実行履歴を復元する。この場合、トレースメモリに残っているトレースデータの内、最初に格納された割込み・間接分岐命令に対するトレースデータ、又は一定ステップ信号発生に対するトレースデータが示すアドレスより実行が停止されたアドレスまでの実行履歴が復元されることになる。更に、完全に実行開始から実行停止までの実行履歴を復元したい場合はオーバーフロー検出時にＣＰＵ１１の実行を停止させれば良い。
【００３６】
又以上の本発明の実施の形態では、トレースデータを８ビット単位でトレースメモリへ出力する構成を示したが、トレースデータ量が大幅に圧縮され、トレースメモリへのデータ転送が低ビットレートで可能になるため、シリアル転送によるトレースデータ出力であっても良い。
【００３７】
【発明の効果】
以上のように本願の請求項１〜３の発明に係るインサーキットエミュレータによれば、無条件分岐命令の実行や、条件分岐命令の実行に対するトレースデータ量を大幅に削減できる。割込み・間接分岐命令の実行や一定ステップ信号の発生時にはトレースデータ量が増えることになるが、割込み・間接分岐命令の実行や一定ステップ信号の発生よりも、無条件分岐命令の実行や、条件分岐命令の実行の方がはるかに頻度が高いため、全体としてトレースメモリの使用量を、大幅に圧縮することが可能となる。
【００３８】
又請求項２の発明によれば、上記効果に加え、ループ命令やリピート命令等の繰り返し実行される命令の場合、ループ命令やリピート命令等の繰り返し期間中に一定ステップ数のカウントをストップさせることにより、一定ステップ信号発生によるトレースデータを削減することができる。
【００３９】
更に本願の請求項３の発明によれば、上記効果に加え、割込み・間接分岐命令が一定ステップ数より少ない間隔で実行された場合、一定ステップのカウントが０からカウントし直されるため、一定ステップ信号発生によるトレースデータを削減することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態におけるインサーキットエミュレータの構成を示すブロック図である。
【図２】本発明の第２の実施の形態におけるインサーキットエミュレータの構成を示すブロック図である。
【図３】本発明の第３の実施の形態におけるインサーキットエミュレータの構成を示すブロック図である。
【図４】従来のインサーキットエミュレータの構成を示すブロック図である。
【図５】本発明の第１の実施の形態におけるインサーキットエミュレータにおけるトレースメモリ内に格納されたトレースデータを示す図である。
【図６】本発明の第１の実施の形態におけるトレースデータからプログラムの実行履歴復元方法を示すフローチャート（その１）である。
【図７】本発明の第１の実施の形態におけるトレースデータからプログラムの実行履歴復元方法を示すフローチャート（その２）である。
【図８】従来のインサーキットエミュレータにおけるトレースメモリ内に格納されたトレースデータを示す図である。
【符号の説明】
１  インサーキットエミュレータ
２  インサーキットエミュレータ
３  インサーキットエミュレータ
４  インサーキットエミュレータ
１１  ＣＰＵ
１２  トレースメモリ
１３  カウンタ
１４  トレースデータ生成回路
１５  符号生成回路
１６  トレースメモリ書込み制御回路
２１  スタート・ストップ制御回路
３１  クリア制御回路
１０１  実行アドレス
１０２  分岐条件判別信号
１０３  割り込み・間接分岐タイミング信号
１０４  内部クロック
１０５  一定ステップ信号
１０６  符号・タイミング信号
１０７  トレースデータ
１０８  トレースメモリ書込み制御信号
２０１  ループ・リピートタイミング信号
２０２  スタート・ストップ制御信号
３０１  クリア制御信号
４０１  分岐タイミング信号
５０１  無条件分岐命令
５０２  条件分岐命令
５０３  条件分岐命令
５０４  無条件分岐命令
５０５  条件分岐命令
５０６  割込み・間接分岐命令
５０７  一定ステップ信号
７０１  無条件分岐命令
７０２  条件分岐命令
７０３  条件分岐命令
７０４  無条件分岐命令
７０５  条件分岐命令
７０６  割込み・間接分岐命令
５０２１  条件分岐命令５０２の符号
５０３１  条件分岐命令５０３の符号
５０７１  一定ステップ信号５０７の実行アドレス
５０７２  一定ステップ信号５０７の符号
５０５１  条件分岐命令５０５の符号
５０６１  割込み・間接分岐命令５０６の分岐元アドレス
５０６２  割込み・間接分岐命令５０６の分岐先アドレス
５０６３  割込み・間接分岐命令５０６の符号
７０１１  無条件分岐命令７０１の分岐元アドレス
７０１２  無条件分岐命令７０１の分岐先アドレス
７０２１  無条件分岐命令７０２の分岐元アドレス
７０２２  無条件分岐命令７０２の分岐先アドレス
７０３１  無条件分岐命令７０３の分岐元アドレス
７０３２  無条件分岐命令７０３の分岐先アドレス
７０４１  無条件分岐命令７０４の分岐元アドレス
７０４２  無条件分岐命令７０４の分岐先アドレス
７０５１  無条件分岐命令７０５の分岐元アドレス
７０５２  無条件分岐命令７０５の分岐先アドレス
７０６１  無条件分岐命令７０６の分岐元アドレス
７０６２  無条件分岐命令７０６の分岐先アドレス
【図１】
0004406119.tif 000002
【図２】
0004406119.tif 000003
【図３】
0004406119.tif 000004
【図４】
0004406119.tif 000005
【図５】
0004406119.tif 000006
【図６】
0004406119.tif 000007
【図７】
0004406119.tif 000008
【図８】
0004406119.tif 000009