(57)【要約】【課題】ステータスによってトレースメモリに書き込むデータ長が異なる場合、トレースデータをトレースメモリ上に未使用領域が無いように詰めて配置することを可能とし、トレースメモリを有効に活用することができるトレースデータ記録方法・装置等を提供する。【解決手段】エバリュエーションチップで、ＣＰＵ動作時のステータス、アドレスバス、データバス等の動作状態を、最大トレースデータ幅以上のメモリ幅を持つトレースメモリに対して、書き込むトレースデータの幅がメモリ幅より小さい場合に、次のサイクルのトレースデータをサイズに応じて同じアドレスに、あるいは次のアドレスの先頭から配置し、トレースバスサイクル内で配置を行いながら書き込む。【選択図】図３
2006228108.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵがプログラムフェッチおよびデータの読み書きを行う際のステータス、アドレスバス、データバス等の動作状態をトレースデータとしてトレースメモリに書き込み、かつトレースメモリに書き込むデータをステータスに応じて変えるエバリュエーションチップにおけるトレースデータ記録方法であって、
前記トレースメモリが、最大トレースデータ幅以上のメモリ幅を持ち、このトレースメモリの特定アドレスに書き込むトレースデータの幅がメモリ幅より小さい場合で、次のサイクルのトレースデータを追加しても追加したトレースデータの末尾がメモリ幅を越えない場合には当該特定アドレスに次のサイクルのトレースデータを配置するが、追加したトレースデータの末尾がメモリ幅を越える場合には、越える部分を次のアドレスの先頭から配置するようにし、トレースバスサイクル内で前記配置を行いながらトレースメモリ幅単位でトレースメモリに書き込むことを特徴とするトレースデータ記録方法。
【請求項２】
請求項１に記載のトレースデータ記録方法を用いたトレースデータ記録装置。
【請求項３】
ＣＰＵがプログラムフェッチおよびデータの読み書きを行う際のステータス、アドレスバス、データバス等の動作状態をトレースデータとしてトレースメモリに書き込み、かつトレースメモリに書き込むデータをステータスに応じて変えるエバリュエーションチップにおけるトレースデータ記録装置であって、
前記トレースメモリが、最大トレースデータ幅以上のメモリ幅を持ち、このトレースメモリの特定アドレスに書き込むトレースデータの幅がメモリ幅より小さい場合で、次のサイクルのトレースデータを追加しても追加したトレースデータの末尾がメモリ幅を越えない場合には当該特定アドレスに次のサイクルのトレースデータを配置するが、次のサイクルのトレースデータを追加すると追加したトレースデータの末尾がメモリ幅を越える場合には、越える部分を次のアドレスの先頭から配置するようにし、トレースバスサイクル内で前記配置を行いながらトレースメモリ幅単位でトレースメモリに書き込むためのトレースデータパック手段を備えたことを特徴とするトレースデータ記録装置。
【請求項４】
前記トレースデータパック手段は、それぞれがシフト演算器で構成された一対のトレースデータシフト手段と、該トレースデータシフト手段へのデータ書き込みサイズと書き込み済みデータ量と両トレースデータシフト手段のうちのどちらからのデータを書き込むかを管理する書き込みサイズ判定手段と、各トレースデータシフト手段からの出力データを交互にトレースメモリに書き込むパックデータ書き込み手段とを備え、可変幅のトレースデータを固定幅に変換してトレースメモリに書き込むことを特徴とする請求項３に記載のトレースデータ記録装置。
【請求項５】
全トレース情報のうち一部のデータをトレースメモリに保存しない場合には、保存しないデータを削除して連続するデータに変換して前記トレースデータパック手段に渡すパックデータ前処理手段を付加したことを特徴とする請求項３または請求項４に記載のトレースデータ記録装置。
【請求項６】
請求項３〜５のいずれか１項に記載のトレースデータ記録装置を備えたことを特徴とするプログラムデバッグシステム。
【請求項７】
エバリュエーションチップ内のトレースメモリに書き込まれたトレースデータをホストコンピュータに読み出し、ホストコンピュータの画面上に表示および／またはファイルに出力するプログラムデバッグシステムにおいて、
請求項１記載のトレースデータ記録方法により、あるいは請求項２〜５のいずれかに記載のトレースデータ記録装置で書き込まれたトレースデータを、トレースメモリの先頭アドレスから順次読み出し、ステータスに対応するデータサイズ毎にサイクルの境界を判定しては、サイクル毎のトレースデータを表示および／またはファイルに出力することを特徴とするトレースデータ再生方式。
【請求項８】
請求項１に記載のトレースデータ記録方式と請求項７のトレースデータ再生方式とを用いたことを特徴とするプログラムデバッグシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの開発およびデバッグに使用するインサーキットエミュレータおよびデバッグシステムに係り、トレースデータ記録方法及び再生方法並びにトレースデータ記録装置に関するもので、応用分野としては、開発支援ツールが挙げられる。
【背景技術】
【０００２】
組み込み型プログラムの開発においては、プロセッサの動作状況をトレースメモリに取り込み、トレースメモリの内容を解析してデバッグを行うという手法が取られている。近年プロセッサの動作速度が高速化したため、プロセッサ内部のトレースバスを外部に引き出しても追従できなくなっており、リアルタイムトレースを行う場合はプロセッサ内部にトレースメモリを搭載する必要がある。この場合、トレースメモリのサイズはコストに大きく影響するためメモリサイズには制約があり、トレースメモリを有効に活用することが大きな課題となっている。
【０００３】
トレースメモリへの書込みデータ量を少なくする方法として幾つかの既知の方法がある。例えば、圧縮によりビット数を少なくする手法（例えば、〔特許文献１〕参照）があるが、データ量の大幅な削減はできない。この他、〔特許文献２〕に開示の技術は、全トレースデータをトレースメモリに書き込まず、データを圧縮して一旦バッファに蓄え、特定量を超えるとトレースメモリに書き込むようになっている。命令をバイト単位でフェッチするシステムのトレース圧縮方式で、非分岐命令の場合は命令アドレスと命令語長を書き込むことでトレースデータを圧縮し、圧縮したと言う情報をバッファに蓄え、特定量を超えるとトレースメモリに書き込む。また、例えば、〔特許文献３〕に記載のトレース情報出力方法では、トレース情報を可変長のパケットにしている。
【０００４】
また、プログラムフェッチサイクルのデータバスはプログラムがバスに乗っているのでフェッチサイクルのデータバスをトレースメモリに書き込むと言う方法もあるが、アドレスのバス幅とデータのバス幅とメモリのデータ幅が同じで、メモリのアドレス毎にステータス、アドレス、データと分けて書き込める場合や、ステータスとアドレスバスを同じアドレスに、データバスを次のアドレスに書き込む等、データ幅に関する制約があった。
【０００５】
その他、〔特許文献４〕、〔特許文献５〕、〔特許文献６〕、〔特許文献７〕にもトレースメモリを節約するための技術が開示されている。
【０００６】
【特許文献１】特開平１１−３５３２０５号公報
【特許文献２】特許第２８７８２６４号公報
【特許文献３】特開平１０−２７５０９２号公報
【特許文献４】特開２００３−８５０００号公報
【特許文献５】特開２００１−１５４８７３号公報
【特許文献６】特開２００１−６０１６２号公報
【特許文献７】特許第３２７７９００号公報
【０００７】
充分なサイズのメモリを内蔵できない場合にはメモリが一杯になると一時的にプロセッサの動作を停めてトレースメモリのデータを外部に吸い出すという手法が採られていたり、メモリを内蔵せずにサイクル毎にプロセッサを停めてトレースデータを送信する手法が採られるが、リアルタイム性が犠牲になっている。特にトレースデータのビット幅が大きな場合には外部への送信量が大きくなるが、ピン数もパッケージサイズに大きく影響するため送信データバス幅は抑えなければならず、リアルタイムでのトレースデータ送信はできない。
【０００８】
プログラムフェッチ時のデータバスにはプログラムが乗っており、トレース情報としてフェッチを表すステータスとアドレスの情報があれば、ホストコンピュータでプログラムコードを付加して表示が可能であるためにプログラムフェッチのサイクルのデータバス情報はトレースメモリに書き込まれている必要は無い。
【０００９】
リアルタイムトレースを行うには通常同一サイクルのステータス、アドレスバス、データバスをトレースメモリの同一アドレスに1サイクルで書き込みを行うが、プログラムフェッチ時のデータバス情報をカットしてトレースメモリに書き込み可能とし、メモリに未使用領域が無いようにトレースメモリに書き込むためには、ステータスとアドレスバスを同一アドレスに書き込み、データバスを次のアドレスに書き込むようにしなければならないため、1サイクルのトレースデータを2サイクルに分けてトレースメモリに書き込む必要があり、トレースメモリへの書込みのためにプロセッサを毎サイクル停めたり、トレースメモリの書込みをシステムクロックの数倍の速度で行わなければならないという問題があった。また、トレースメモリのデータ幅をステータス＋アドレスバスかデータバスのデータ幅の大きな方に合わせなければならず、プロセッサによってはトレースメモリ上に未使用領域が残ることになり、メモリを有効に活用することができないと言う問題があった。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
したがって、本発明はステータスによってトレースメモリに書き込むデータ長が異なる場合、トレースデータをトレースメモリ上に未使用領域が無いように詰めて配置することを可能とし、トレースメモリを有効に活用することができるトレースデータ記録方法・装置を提供し、併せてトレースデータ再生方式やデバッグシステムを提供することを目的とするものである。
【課題を解決するための手段】
【００１１】
本発明のトレースデータ記録方法は、ＣＰＵがプログラムフェッチおよびデータの読み書きを行う際のステータス、アドレスバス、データバス等の動作状態をトレースデータとしてトレースメモリに書き込み、かつトレースメモリに書き込むデータをステータスに応じて変えるエバリュエーションチップにおけるトレースデータ記録方法であって、前記トレースメモリが、最大トレースデータ幅以上のメモリ幅を持ち、このトレースメモリの特定アドレスに書き込むトレースデータの幅がメモリ幅より小さい場合で、次のサイクルのトレースデータを追加しても追加したトレースデータの末尾がメモリ幅を越えない場合には当該特定アドレスに次のサイクルのトレースデータを配置するが、追加したトレースデータの末尾がメモリ幅を越える場合には、越える部分を次のアドレスの先頭から配置するようにし、トレースバスサイクル内で前記配置を行いながらトレースメモリ幅単位でトレースメモリに書き込むことを特徴とする。また、本発明のトレースデータ記録装置では、上記のトレースデータ記録方法を用いる。
【００１２】
本発明の他のトレースデータ記録装置は、ＣＰＵがプログラムフェッチおよびデータの読み書きを行う際のステータス、アドレスバス、データバス等の動作状態をトレースデータとしてトレースメモリに書き込み、かつトレースメモリに書き込むデータをステータスに応じて変えるエバリュエーションチップにおけるトレースデータ記録装置であって、トレースメモリが、最大トレースデータ幅以上のメモリ幅を持ち、このトレースメモリの特定アドレスに書き込むトレースデータの幅がメモリ幅より小さい場合で、次のサイクルのトレースデータを追加しても追加したトレースデータの末尾がメモリ幅を越えない場合には当該特定アドレスに次のサイクルのトレースデータを配置するが、次のサイクルのトレースデータを追加すると追加したトレースデータの末尾がメモリ幅を越える場合には、越える部分を次のアドレスの先頭から配置するようにし、トレースバスサイクル内で前記配置を行いながらトレースメモリ幅単位でトレースメモリに書き込むためのトレースデータパック手段を備えたことを特徴とする。
【００１３】
このようなトレースデータ記録方法・装置によれば、記録するトレースデータがステータスによって可変となる場合でも、固定幅のトレースメモリに対して空き領域が無いようにトレースメモリに書き込みを行うことで、トレースメモリをさらに有効に活用することが可能となる。
【００１４】
上記構成において、トレースデータパック手段は、それぞれがシフト演算器で構成された一対のトレースデータシフト手段と、該トレースデータシフト手段へのデータ書き込みサイズと書き込み済みデータ量と両トレースデータシフト手段のうちのどちらからのデータを書き込むかを管理する書込みサイズ判定手段と、各トレースデータシフト手段からの出力データを交互にトレースメモリに書き込むパックデータ書込み手段とを備え、可変幅のトレースデータを固定幅に変換してトレースメモリに書き込むように構成しても良い。
【００１５】
このトレースデータパック手段によれば、システムクロックで（毎クロックごとに）可変長のトレースデータをトレースメモリ幅にパックしてトレースメモリに書き込むことで、リアルタイムでのトレース情報の記録を可能とし、かつトレースメモリを有効に活用することが可能となる。
【００１６】
更には、全トレース情報のうち一部のデータをトレースメモリに保存しない場合には、保存しないデータを削除して連続するデータに変換して前記トレースデータパック手段に渡すパックデータ前処理手段を付加するようにしても良い。
【００１７】
このパックデータ前処理手段を用いることにより、トレース情報を部分的にトレースメモリに記録する必要が無い場合でも、上述トレースデータ記録方式を用いてトレースメモリへの記録が可能となる。
【００１８】
本発明の、トレースデータ再生方式では、エバリュエーションチップ内のトレースメモリに書き込まれたトレースデータをホストコンピュータに読み出し、ホストコンピュータの画面上に表示および／またはファイルに出力するプログラムデバッグシステムにおいて、上記のトレースデータ記録方法により、あるいは上記のいずれかのトレースデータ記録装置で書き込まれたトレースデータを、トレースメモリの先頭アドレスから順次読み出し、ステータスに対応するデータサイズ毎にサイクルの境界を判定しては、サイクル毎のトレースデータを表示および／またはファイルに出力するようにする。このトレースデータ再生方式によれば、上述のトレースデータ記録方式で記録されたトレースデータからトレース情報を復元し、ホストコンピュータの画面上への表示もしくはファイルへの出力が可能となる。
【００１９】
また、上記のトレースデータ記録装置を用いてプログラムデバッグシステムを構成する。あるいは、上記のトレースデータ記録方式あるいはトレースデータ記録装置とトレースデータ再生方式とを用いて、プログラムデバッグシステムを構成することができる。
【発明の効果】
【００２０】
このトレースデータ記録方式によれば、記録するトレースデータがステータスによって可変となる場合でも、固定幅のトレースメモリに対して空き領域が無いようにトレースメモリに書き込みを行うことで、トレースメモリをさらに有効に活用することが可能となり、トレースデータ記録装置として活用できる。トレースデータ再生方式と組み合わせる等して好適なプログラムデバッグシステムを実現できる。
【発明を実施するための最良の形態】
【００２１】
〔第１実施形態〕
以下、本発明の実施の形態について、図面に従って説明する。図１は本発明に係るデバッグシステムの構成図、図２はトレースデータの書込処理説明図である。その構成を動作と併せて説明する。
【００２２】
図において、エバリュエーションチップ１のＣＰＵ１Ａはシステムクロックによって動作し、ＲＯＭ１Ｂ、ＲＡＭ１Ｃ、Ｉ／Ｏ１Ｄに対して読み書きを行ったり、エバリュエーションチップ１内の回路からフラグ等の情報を取得してプログラムを実行する。通常のデバッグにおいてはデバッグ制御手段５からＣＰＵ１Ａのプログラムの実行・停止を制御し、ＣＰＵ２がアクセスするアドレスバスおよびデータバスの情報を、トレースデータパック手段（トレースデータ入力手段）８を介してトレースメモリ６に書き込む。プログラム実行時のステータス、アドレスバス、データバスの状態はトレースデータパック手段８に供給される。
【００２３】
ＣＰＵ１Ａの動作状態例として、分岐命令フェッチ、非分岐命令フェッチ、メモリ・Ｉ／Ｏのリードライト動作を挙げると、プログラムの情報はホストコンピュータ３で管理しているので、アドレスが分かればプログラムコードはトレース情報として復元可能であるため省略可能で、分岐ステータスとアドレスをトレースメモリに保存する必要がある。
【００２４】
非分岐命令をフェッチする場合には、アドレスはインクリメントされるので非分岐命令のステータスのみとレースメモリに保存する必要がある。メモリ・Ｉ／Ｏのリードライト動作はパイプライン処理等を行う場合には命令フェッチサイクルと命令実行サイクルがずれることもあり、リードライトステータスとアドレス、データの全てをトレースメモリに保存する必要がある。このように、トレースメモリに保存する情報はステータスによって異なる。
【００２５】
本実施形態では、ステータスのみ、ステータス＋アドレス、ステータス＋アドレス＋データの３通りのトレースデータ保存形式がある。また、データに関してもバイトアクセス、ワードアクセス、ロングアクセスのステータスを区別すれば保存するデータバスのサイズが変わる。
【００２６】
本実施形態におけるトレースデータパック手段８は、ステータスに応じてトレースメモリに保存するデータサイズを判定し、保存するデータのみを連続したデータとして一時的に記憶し、内部に記憶しているデータサイズがトレースメモリの幅を越えると先頭からトレースメモリ幅を単位としてトレースメモリに出力する。トレースデータパック手段８は未出力のデータを維持し、継続して入力されるデータを追加してはトレースメモリ幅を越えるとトレースメモリに出力する動作を繰り返す。この結果、サイクル毎にデータ長が異なるトレースデータが連続して図２の説明図に示すようにトレースメモリ６に書き込まれる。
【００２７】
最大幅のトレースデータが連続する場合にはトレースメモリのデータ幅はトレースデータの最大幅と同じ、もしくはそれ以上の幅がなければ動作に破綻をきたすため、トレースメモリのデータ幅はトレースデータの最大幅以上という制限が付くが、整数倍の幅でなければならないといった類の制約はないので、使用するメモリの選択は容易である。
【００２８】
図３〜７は、トレースデータパック手段８の具体的構成の一例を示すブロック図及び動作説明図である。特に、このトレースデータパック手段では、ステータスによってデータ長が異なるトレースデータをシステムのバスサイクルで取り込んで一時的に記憶し、取り込んだデータの累積がトレースメモリのデータ幅を越えるとトレースメモリのデータ幅で書込みを行い、トレースデータをトレースメモリのデータ幅にパックし、かつパックを行うサイクルを別途必要としないトレースデータ記録方式となっている。
【００２９】
図３において、トレースデータパック手段８は、シフト演算器で構成された一対のトレースデータシフト手段１０Ａ、１０Ｂと、トレースデータシフト手段１０Ａ、１０Ｂの一方にトレースメモリ書き込み用データを生成させ、他方にはパックを継続させるための未出力データを保持させ、トレースメモリにパック後のデータを書き込む度に役割の入れ替えを指示する書込みサイズ判定手段９と、各トレースデータシフト手段１０Ａ、１０Ｂからの出力データを交互にトレースメモリに書き込むパックデータ書込み手段１１とを備えている。この構成では、可変幅のトレースデータを固定幅に変換してトレースメモリ６に書き込む。
【００３０】
ＣＰＵ１Ａの動作状態を示すトレースデータは、システムクロックによってトレースデータシフト手段１０Ａ、１０Ｂの両方に書き込まれる。これと同時に書込みサイズ判定手段９に対してはステータスが渡され、書込みサイズ判定手段９はトレースデータシフト手段１０Ａ、１０Ｂに対してシフト量およびトレースメモリへの書き込み許可を指示する。トレースデータシフト手段１０Ａ、１０Ｂはトレースデータが書き込まれた次の半サイクルで指定されたシフトを行う。書込みサイズ判定手段９が、トレースデータシフト手段１０Ａ、１０Ｂの内部に記憶できるサイズを管理しており、記憶させるデータの累計が記憶できるサイズを越えない範囲でデータの書き込みとシフトを繰り返す。
【００３１】
図４（ａ）は書き込みサイズ判定手段９の簡単な構成図で、トレースデータシフト手段１０Ａ、１０Ｂのどちらに書き込みデータ生成を行わせるかを管理する出力側管理手段と、トレースデータシフト手段に書き込み可能なデータ量を管理する空きサイズ管理手段と、トレースデータシフト手段の空きサイズとトレースデータサイズを比較してトレースデータシフト手段に実行させるシフト量を求めるシフト量管理手段から構成される。
【００３２】
図４（ｂ）はトレースデータシフト手段１０Ａの簡単な構成図で、トレースデータの２倍のデータ幅を持つシフトレジスタと、シフト量を設定するシフト量記憶手段と、トレースデータシフト手段が書き込みデータの準備ができたことを通知する書き込み要求フラグを持つ。トレースデータパック手段８に渡されたトレースデータは、シフトレジスタの下位半分に書き込まれ、パック後のデータはシフトレジスタの上位半分からパックデータ書き込み手段１１に渡される。
【００３３】
書込みサイズ判定手段９およびトレースデータシフト手段１０Ａ、１０Ｂの動作を図５のフローチャート及び図６、図７の説明図に示す。トレースデータは図６（ａ）に示すように、トレースデータシフト手段のシフトレジスタの下位半分に対し、左詰めで書き込まれる。一方、トレースデータシフト手段の上位半分がトレースメモリに書き込まれる、パック後のデータとなる。トレースデータシフト手段は図６（ｂ）に示す、書き込みサイズ分のシフトを行うシフト動作１と、図６（ｃ）に示す、空きサイズ分のシフトを行うシフト動作２が可能である。
【００３４】
書込みサイズ判定手段９は、２組のトレースデータシフト手段１０Ａ、１０Ｂにトレースデータが書き込まれると、図２中の表にあるステータスとデータサイズの関係からトレースデータの有効サイズをトレースデータシフト手段のシフト量とする。また、書き込みサイズ判定手段９は、シフトレジスタの上位半分の空きサイズを記憶しており、シフト量が空きサイズより小さい場合には空きサイズからシフト量を減じた値をシフト後の空きサイズとして記憶する。空きサイズがシフト量よりも大きい間は、この動作を繰り返す。（図５；ステップＳ５２）この時の空きサイズは、
空きサイズ＝空きサイズ−書込みサイズ
となる。
【００３５】
シフトと空きサイズの計算を繰り返し、空きサイズがシフト量よりも小さくなった場合、書込みサイズ判定手段９は、出力側指定のトレースデータシフト手段に対して、図６（ｃ）のシフト動作２による空きサイズ分のシフトを指示しデータの出力許可を行い、出力側指定をしていないトレースデータシフト手段に対して図６（ｂ）のシフト動作１による書き込みサイズ分のシフトを指示する。また、シフト後の空きサイズは、
空きサイズ＝トレースメモリ幅−（書込みサイズ−空きサイズ）
となる（図５；ステップＳ５６、ステップＳ５７）。
【００３６】
このように、書込みサイズ判定手段１１は、データ出力側となるトレースデータシフト手段を管理して、ステータスからトレースデータシフト手段内部に書き込むデータサイズを判定してトレースメモリ幅以上になる場合には、内部に記憶しているデータの先頭が出力側のトレースデータシフト手段の左端に来るようにシフト量を設定し（図５；ステップＳ５２）、かつシフトが完了するとパックデータ書込み手段１１に対して書込み要求を行うように出力側のトレースデータシフト手段に対して出力許可を行う。出力側とするトレースデータシフト手段を切り替えて、上記動作を繰り返す。
【００３７】
これにより、書込みデータ量がトレースメモリ６の幅に達すると２組のトレースデータシフト手段から交互にデータがトレースメモリ６に書き込まれる。本実施例ではトレースデータ６のシフトをバイト単位としているが、トレースデータシフト手段の単位シフト量を変更することで、シフト量を1ビット単位、4ビット単位、16ビット単位などに対応させることが可能である。なお、このようにしてトレースメモリに記録されたデータを読み出し復元する処理（トレースデータ再生方法）については、後で別途説明する。
【００３８】
〔第２実施形態〕
上記実施形態のトレースデータ記録手段は、トレースデータがステータス、アドレスバス、データバスの順に並んでいる場合のデータバスをトレースメモリに記録するかしないかを制御するように、トレースデータの並びは固定で、入力されるデータが連続していなければならない。しかし、システムによってはステータス、アドレスバス、データバスの状態以外にも時間計測手段１５が提供するタイムスタンプと呼ばれる時間情報や外部端子の状態（外部端子信号）もトレースメモリに記録するものがあり（図８参照）、データバスの情報を保存しない場合にはトレースデータの中間部分をカットすることになるので、上述したトレースデータ記録手段では対応できない。
【００３９】
このため、トレースメモリに記録しないデータを抜いて連続したデータに変換するパックデータ前処理手段１２を付加することで、トレースデータの中間部分をカットしてトレースメモリに保存する場合でも既述したトレースデータパック手段が処理できるようにした第２の実施の形態のトレースデータ記録方式について、図８〜９を用いて以下に説明する。
【００４０】
図８は第２実施形態のエバリュエーションチップ１´およびデバッグシステムの構成図、図９は動作説明図である。図８の構成は、図１の構成と類似していて、パックデータ前処理手段１２が付加されている点のみ異なっている。なお、図８中で、図１と同一部分には同一符号を付して説明を省略する。パックデータ前処理手段（パックデータ選択手段）１２は、ステータスを判断し、ＣＰＵ１側のトレースデータのうちステータスに応じて省略可能なデータを除去（カット）して記録するデータのみを左詰めにして、トレースデータパック手段８に渡す（図９参照）。ステータスに応じて(a) Dataのみがカットされたり、(b) Add,Dataがカットされる。また、オペレータの設定により、Timがカットされる。トレースデータパック手段８は、パックデータ前処理手段１２から受けたデータを既に説明したと同様の手順でトレースメモリ６に順次書込みを行う。
【００４１】
〔第３実施形態〕
続いて、プログラムデバッグシステムにおける、トレースデータ再生方式について説明する。例として、図８に示すプログラムデバッグシステムにおけるトレースデータ再生処理を図１０の説明図に沿って説明する。既に説明した記録手順によってトレースメモリ６に記録されているトレースデータは、ホストコンピュータ３からデバッガ４を操作することにより、通信手段２、デバッグ制御手段５、トレースデータ読み出し手段７を経由してアドレス毎にトレースメモリ６から読み出され、ホストコンピュータ３のメモリ上に一時的に記憶される。
【００４２】
デバッガ４上のトレースデータ復元手段１３は、このホストコンピュータ３のメモリ上に記憶されたトレースデータからステータスによる各サイクルのデータサイズを判定し、サイクル毎のトレース情報を判定したデータサイズで切り出す。続いてデバッガ４は、トレース情報に無いアドレス情報やプログラムコードを、ホストコンピュータ上にあるプログラム情報１４から復元して、画面上に表示したりファイルに出力したりする。この手順をステータス毎に繰り返すことでトレースデータが再生される。
【００４３】
例えば、図１０に示すように、トレースメモリ６の先頭のアドレス１に、ＳＴ１（ステータス１；分岐直後フェッチ）が格納されていれば、このステータスに対応するデータサイズは、付表から判るように３byteであるから、続くアドレスデータAdd1_H, Add1_Lまでが、サイクル１の（仮）データとして切り出される。同様にＳＴ２に対応してサイクル２が、ＳＴ３に対応してサイクル３が切り出され、以下順次切出しが繰り返される。
【００４４】
切り出されたサイクル１のトレース情報には、プログラム情報から不足情報が補われる。すなわち、サイクル１の分岐直後フェッチに対応してData1-1〜Data1-4のDataが追加されてサイクル１のトレース情報が復元される。以下順次、ステータスの種別に応じて所定の追加データ（付表参照）が追加されて、各サイクルが復元される。
【００４５】
以上、実施の形態を挙げて本発明について説明した。既述したように本発明によれば、トレースデータ記録処理において、記録するトレースデータがステータスによって可変となる場合でも、固定幅のトレースメモリに対して空き領域が無いようにトレースメモリに書き込みを行うことでトレースメモリをさらに有効に活用することが可能となる。
【００４６】
また、本発明に係るトレースデータパック手段により、システムクロックで可変長のトレースデータをトレースメモリ幅にパックしてトレースメモリに書き込むことで、リアルタイムでのトレース情報の記録を可能とし、かつトレースメモリを有効に活用することが可能となる。
【００４７】
また、本発明に係るパックデータ前処理手段を付加することにより、トレース情報を部分的にトレースメモリに記録する必要が無い場合でも、同様にトレースメモリへの記録が可能となる。
【００４８】
実施形態で説明した如くの本発明のトレースデータ再生方式により、本発明のトレースデータ記録方式で記録されたトレースデータからトレース情報を復元し、ホストコンピュータの画面上への表示もしくはファイルへの出力が可能となる。
【００４９】
トレースデータ記録方法・装置を主体に本発明を説明したが、既述したようなトレースデータ記録方式と適宜のトレースデータ再生方式を用いて、プログラムデバッグシステムを構成することができる。
【図面の簡単な説明】
【００５０】
【図１】本発明の実施形態のデバッグシステムの構成図である。
【図２】本発明に係るトレースデータの書込処理説明図である。
【図３】本発明に係るトレースデータパック手段の構成図と書込処理説明図である。
【図４】本発明に係る書込みサイズ判定手段の説明図である。
【図５】本発明に係る書込みサイズ判定手段の動作を示すフローチャートである。
【図６】本発明に係る書込みサイズ判定手段の動作説明図である。
【図７】本発明に係る書込みサイズ判定手段の動作説明図である。
【図８】本発明の第２実施形態のデバッグシステムの構成図である。
【図９】第２実施形態でのトレースデータの書込処理説明図である。
【図１０】第２実施形態でのトレースデータの再生処理説明図である。
【符号の説明】
【００５１】
１，１´…エバリュエーションチップ
１Ａ…ＣＰＵ
１Ｂ…ＲＯＭ
１Ｃ…ＲＡＭ
１Ｄ…Ｉ／Ｏ
２…通信手段
３…ホストコンピュータ
４…デバッガ
５…デバッグ制御手段
６…トレースメモリ
７…トレースデータ読み出し手段
８…トレースデータパック手段
９…書込みサイズ判定手段
１０Ａ、１０Ｂ…トレースデータシフト手段（シフト演算器）
１１…パックデータ書き込み手段
１２…パックデータ前処理手段（パックデータ選択手段）
１３…トレースデータ復元手段
１４…プログラム情報
１５…時間計測手段
【図１】
2006228108.tif 000003
【図２】
2006228108.tif 000004
【図３】
2006228108.tif 000005
【図４】
2006228108.tif 000006
【図５】
2006228108.tif 000007
【図６】
2006228108.tif 000008
【図７】
2006228108.tif 000009
【図８】
2006228108.tif 000010
【図９】
2006228108.tif 000011
【図１０】
2006228108.tif 000012