JP3629181B2 - プログラム開発支援装置 - Google Patents
プログラム開発支援装置 Download PDFInfo
- Publication number
- JP3629181B2 JP3629181B2 JP2000089636A JP2000089636A JP3629181B2 JP 3629181 B2 JP3629181 B2 JP 3629181B2 JP 2000089636 A JP2000089636 A JP 2000089636A JP 2000089636 A JP2000089636 A JP 2000089636A JP 3629181 B2 JP3629181 B2 JP 3629181B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- data
- trace
- address
- instruction 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/362—Debugging of software
- G06F11/3636—Debugging of software by tracing the execution of the program
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Description
【発明の属する技術分野】
本発明はプログラム開発支援装置に関し、特に、コンピュータプログラムのデバッグを支援するプログラム開発支援装置に関する。
【0002】
【従来の技術】
本発明が関するプログラム開発支援装置は、特にコンピュータ装置を動作させるためのプログラムの開発、デバッグに用いられている。特に、トレース機能を持つプログラム開発支援装置は、一般的にプログラム実行によって刻々変化するCPUの命令アドレスや命令コード等をトレースメモリと呼ばれるメモリに蓄積し、プログラムの実行結果として解析するのに使用される。
【0003】
ところが、近年コンピュータ装置に内蔵するプログラムが複雑化、大規模化、するに従い、トレースメモリにはより多くの実行結果を蓄積するために大容量のメモリが要求されている。また、これとは別にCPUの動作速度が高速化することで、より高速なメモリが必要にもなってきている。トレース機能を有するプログラム開発支援装置では、一般的にCPUの動作周波数と同じスピードで動作させることが必要だが、大容量かつ高速なメモリはきわめて高価であるため、トレースメモリに格納するトレースデータの削減が要請されている。
【0004】
この要請に応える技術として、直前のプログラムカウンタの値と現在のプログラムカウンタの値との差分値をトレースメモリに記録し、分岐命令の時だけプログラムカウンタの値そのものを記録することによりトレースデータを圧縮する技術が特開平11−259335号公報に開示されている。以下、これを従来例として説明する。図12は、従来のプログラム開発支援装置のブロック図である。
【0005】
プログラム開発支援装置はプログラム開発用につくられたエバチップ301と命令のトレース結果を蓄積するトレーサ302とを備えている。エバチップ301内のCPU303から出力される命令アドレス・命令コードデータをクロック信号CLKに同期して命令アドレス・命令コード取り込み回路321に取込み、命令が分岐命令であるか否かを分岐命令判定回路323で判定する。命令が分岐命令でないときには命令アドレスデータ圧縮回路322により直前のプログラムカウンタの値と現在のプログラムカウンタの値との差分値を生成することにより命令アドレスの圧縮を行い、トレース制御回路324でトレースメモリ306のビット幅に合わせて複数の命令アドレスの圧縮データをトレースデータに合成し、トレースデータはトレースメモリ306に書き込まれる。命令が分岐命令のときには、命令アドレスは圧縮されずにそのままトレースメモリ306に書き込まれる。
【0006】
この従来例では、分岐命令の命令アドレス以外の命令アドレスは、圧縮されてトレースメモリに格納されるので、トレースメモリの容量を削減できる。また、分岐命令の命令アドレスの非圧縮データを起点として、圧縮された差分値を加算していくことにより、命令アドレスを復元することができる。
【0007】
【発明が解決しようとする課題】
しかしながら、図12の従来例では、分岐命令のみを検出しているだけであるので、例えばセクショントレースのようにプログラムのある範囲のみを繰り返しトレースしたい場合には、圧縮されたデータから本来のアドレスを復元することができないという改良すべき問題が残っていた。セクショントレース開始の命令アドレスが分岐命令ではないので他の命令のアドレスと同様に圧縮されてしまうからである。
【0008】
本発明は、従来例のもつ命令アドレス圧縮・復元機能に加えて、セクショントレースのように分岐命令以外の特定の特定の命令コードまたは特定のアドレスを起点として特定範囲のトレースを実行する場合にも命令アドレスの圧縮・復元が可能で、限られたメモリ容量においても大量のトレースデータを蓄積可能なプログラム開発支援装置を提供することにある。
【0009】
【課題を解決するための手段】
本発明のプログラム開発支援装置は、ターゲットプログラムを実行するCPUと、前記CPUから入力する命令アドレス・命令コードデータが予めイベント条件として設定された所定の命令アドレスまたは所定の命令コードと一致することを検出したときにはセクショントレース開始信号をアクティブにして出力するイベント検出部と、前記命令アドレス・命令コードデータおよび前記セクショントレース開始信号を入力し前記命令アドレス・命令コードデータの命令コードが分岐命令であるかまたはセクショントレース開始信号がアクティブであるときには命令アドレスを非圧縮のままトレースデータとして出力し、前記命令アドレス・命令コードデータの命令コードが分岐命令でなく且つ前記セクショントレース開始信号がアクティブでないときには前記命令アドレス・命令コードデータの命令アドレスを圧縮して圧縮命令アドレスを生成し複数個の前記圧縮命令アドレスを合成してトレースデータとして出力するトレースデータ作成部と、前記トレースデータを蓄積するトレースメモリとを備えている。
【0010】
【発明の実施の形態】
本発明のプログラム開発支援装置は、予め外部から設定された所定の命令アドレスまたは所定の命令コードを検出するイベント検出部を設け、イベントが検出されたときには検出された命令アドレスまたは検出された命令コードを格納する命令アドレスを非圧縮のままトレースメモリに格納する機構を備えたものである。
【0011】
次に本発明について詳細に説明する。図1は、本発明の一実施の形態のブロック図である。
【0012】
プログラム開発支援装置は、ターゲットプログラムを実行するエバチップ1と、実行した結果を蓄積するトレーサ2と備えている。
【0013】
エバチップ1は実際にターゲットプログラムを実行するCPU3と、イベント検出部4とを有している。イベント検出部4は、CPU3から命令アドレス・命令コードデータ14を入力し、予め命令コードまたは命令アドレスがイベント条件として設定されていてこれと一致することを検出したときには、セクショントレース開始信号16とをアクティブにするとともにセクショントレース期間データ取り込み信号15をアクティブに保つ。
【0014】
トレーサ2は、トレースデータ作成部5と、トレースデータを蓄積するトレースメモリ6とを有している。トレースデータ作成部5は、命令アドレス・命令コードデータ14およびセクショントレース開始信号16を入力し、命令アドレス・命令コードデータ14の命令コードが分岐命令であるかまたはセクショントレース開始信号16がアクティブであるときには、命令アドレス27を非圧縮のままトレースメモリ6へ書き込み、命令アドレス・命令コードデータ14の命令コード28が分岐命令でなく且つセクショントレース開始信号16がアクティブでないときには、現在の命令アドレス・命令コードデータ14の命令アドレス27から前の命令アドレス・命令コードデータの命令アドレスを減じた差分値の圧縮命令アドレス31を生成し、連続する複数の命令アドレス・命令コードデータ14に対応する複数の圧縮命令アドレス31をトレースメモリ6のビット幅に合わせて合成して、トレースデータ32としてトレースメモリ6へ書き込む。
【0015】
また、イベント検出部4は、予めイベント条件として外部から命令アドレスまたは命令コードが設定されているときにはデータ取り込み信号15のアクティブ期間をも保持するイベント設定回路11と、イベント設定回路11からイベント設定データ信号17により転送された命令アドレスまたは命令コードの設定値とCPU3が出力する命令アドレスまたは命令コードが一致することを検出したときにセクショントレース開始信号16をアクティブにするとともにイベント設定回路11に設定された期間データ取り込み信号15をアクティブレベルとするイベント検出回路12とを有している。イベント条件が設定されていないときには、データ取り込み信号15はアクティブレベルを継続出力する。
【0016】
また、トレースデータ作成部5は、命令アドレス・命令コード取り込み回路21と、命令アドレスデータ圧縮回路22と、分岐命令判定回路23と、トレース制御回路24と、2入力OR回路25とを有している。
【0017】
命令アドレス・命令コード取り込み回路21は、エバチップ1のCPU3から出力された命令アドレス・命令コードデータ14をデータ取り込み信号15に基づきクロック信号13に同期して読み込んで、命令アドレス27と命令コード28を出力する。
【0018】
命令アドレスデータ圧縮回路22は、命令アドレス27と非圧縮データ選択信号30を入力し、非圧縮データ選択信号30がアクティブのときには命令アドレス27をそのまま圧縮命令アドレス31として出力し、非圧縮データ選択信号30がアクティブでないときには現在の命令アドレスからひとつ前の命令アドレスを減じた差分データを圧縮命令アドレス31として出力する。
【0019】
分岐命令判定回路23は、命令コード28を入力し、その命令コードが分岐命令であるか否かを判定し、分岐命令であると判定したときには分岐命令検出信号29をアクティブ(ハイレベル)として出力する。
【0020】
トレース制御回路24は、圧縮命令アドレス31と非圧縮データ選択信号30を入力し、非圧縮データ選択信号30がアクティブのときには圧縮命令アドレス31をそのままトレースデータ32として出力し、非圧縮データ選択信号30がアクティブでないときには連続して入力した複数の圧縮命令アドレス31をトレースメモリ6のビット幅に合わせて合成してトレースデータ32として出力するとともに、トレースデータの書込みを指示するトレースデータ書込み信号34および格納アドレスを指定するトレースメモリアドレス33をトレースメモリ6に出力する。
【0021】
2入力OR回路25は、分岐命令検出信号29またはイベント検出部4からのセクショントレース開始信号16の少なくとも一方がアクティブ(ハイレベル)のときに非圧縮データ選択信号30をアクティブとして出力する。
【0022】
次に各回路の詳細構成について説明する。図2は、命令アドレス・命令コード取り込み回路21の回路図であり、図3は、命令アドレスデータ圧縮回路22の回路図であり、図4は、トレース制御回路24の回路図である。
【0023】
図2を参照すると、命令アドレス・命令コード取り込み回路21は、命令アドレス・命令コードデータ14をデータラッチ211で保持し、命令アドレス27および命令コード28としてそれぞれ取り出す。
【0024】
命令アドレス・命令コードデータ14をデータラッチ211でラッチするタイミングは、基本的にはCPU3から出力されるクロック信号13によって命令アドレス・命令コードデータ14と同期して行われるが、イベント検出回路12から出力されるデータ取り込み信号15でAND回路212によってマスク制御することにより、選択的にラッチされるように構成されている。データ取り込み信号15はセクショントレースのときにはセクショントレースの開始から終了までの間のみアクティブレベルであるが、通常のトレース状態では常にアクティブレベルを継続する。
【0025】
次に、図3を参照して命令アドレスデータ圧縮回路22の詳細について説明する。命令アドレスの圧縮方法は、非圧縮時には命令アドレス値(例えば32ビット長)をベースアドレスとして記録し、圧縮時にはひとつ前の命令アドレス値と現在の命令アドレス値との差分値(例えば8ビット長)を圧縮命令アドレスのデータとして記録する方法をとっている。命令アドレスデータ圧縮回路22は、圧縮命令アドレスのデータとして前の命令アドレス値との差分データを生成するための前命令アドレスラッチ221と、前命令アドレスラッチ221の出力と現在の命令アドレスとの差分を演算して圧縮データを生成する減算器222と、減算器222からの圧縮データと非圧縮データの命令アドレスデータ27とを切り換える圧縮/非圧縮切り換え回路223を備えている。非圧縮データ選択信号30がアクティブになると、非圧縮のままの命令アドレス27が圧縮/非圧縮切り換え器223から圧縮命令アドレス31として出力される。
【0026】
次に、図4を参照してトレース制御回路24の詳細について説明する。トレース制御回路24は、トレースメモリ6に書き込むためのトレースメモリアドレス33の生成と、書込み動作を許可するトレース書込み信号34の生成を行い、最終的にトレースメモリ6にデータを書き込むためのタイミング信号の生成を行う。また、同時に、命令アドレスデータ圧縮回路22にて生成された圧縮命令アドレス信号31の、トレースメモリ6のビット幅への合わせ込みを行う。トレースアドレスカウンタ244はトレース書込み信号34がアクティブのときにクロック信号13の立ち上がりに同期して+1インクリメントする。トレースアドレスカウンタ244の出力のトレースメモリアドレス33は、トレースメモリ6のフレームに順番にトレースデータ32を記録するためのアドレスを示す。トレースメモリアドレス33は、トレースメモリ6への書込みタイミングに同期して変化し、通常はトレースメモリ6への書込みが完了した直後にインクリメントされる。書込みのタイミングについては後述する。
【0027】
次に、圧縮データのトレースメモリ6のビット幅への合わせ込み動作について説明する。ベースアドレスよりもビット幅の少ない圧縮データを、トレースメモリ6のビット幅へ合わせ込むために、圧縮データシフトレジスタ241が使用される。圧縮データシフトレジスタ241は、圧縮命令アドレス31のデータが圧縮データである場合にはトレースメモリのビット幅一杯になるまで順次シフト動作を行いながらデータを蓄積する。図4では、(非圧縮データ)対(圧縮データ)のデータ幅の比を4対1としているため、圧縮データシフトレジスタ241は最大4命令分の命令アドレスの圧縮データを順次蓄積する。また4個目の圧縮データが圧縮データシフトレジスタ241に書き込まれると、アライメント完了信号246がアクティブとなり、2入力OR回路245を経てトレースメモリ6に1フレーム分のデータとして記録される。同時に圧縮データシフトレジスタ241の内容がクリアされて次の圧縮データの蓄積に備える。
【0028】
非圧縮データである命令アドレス27をトレースデータ32として出力するか、圧縮データシフトレジスタ241でビット幅に合わせ込んだアライメント済圧縮データ247をトレースデータ32として出力するかは、非圧縮データ選択信号30を非圧縮データラッチ242で一旦ラッチしてタイミング調整した信号にしたがってトレースデータ切替回路243で選択される。
【0029】
次に、図1の実施例の動作について、先ず、図12の従来例と同様の分岐命令と通常命令に対するデータ圧縮/非圧縮の動作について説明した後に、本発明に特有のセクショントレースにおける動作について説明する。
【0030】
図5は、トレース動作を説明するためのサンプルプログラムリスト図である。このサンプルプログラムは大規模なプログラムの一部を抜き出したものであり、命令1〜命令27のうち、命令3〜命令26は一重のループを構成しており、命令26の条件分岐命令にて任意の回数、命令3への分岐を繰り返す構成となっている。命令アドレス空間は32ビットで、命令コード長は4バイトまたは2バイトであるものとし、また、トレースメモリには(00000)から(000FF)までのアドレスを持つリングバッファが使用されているとする。
【0031】
図6は、分岐命令判定時の動作タイミング図である。図6では、セクショントレースを用いない場合であるので、基本的には図12の従来例と同様に動作する。
【0032】
イベント設定回路11にイベント条件が設定されておらず、セクショントレースを用いない場合には、データ取り込み信号15は常にアクティブとなり、命令アドレス・命令コード取り込み回路21はクロック信号13毎に図5の命令1から順次に命令アドレス・命令コードデータ14をラッチして命令アドレス27に出力する。
【0033】
命令26まで進むと、命令26が分岐命令であるので、CPU3から出力される命令アドレス・命令コードデータ14は命令3に変化する。このとき、分岐命令判定回路23は直前に分岐命令が実行されたことを判別し、分岐命令検出信号29をアクティブにする。
【0034】
これに伴い、命令アドレスデータ圧縮回路22は、直前まで出力していたアドレス値の差分すなわち圧縮データから、命令3の命令アドレスの非圧縮データに切り換えて圧縮命令アドレス31に出力する。
【0035】
トレース制御回路24は、分岐命令検出信号29がアクティブになると2クロック期間の間トレースデータ書込み信号34をアクティブにしてトレースメモリ6に出力し、トレースメモリアドレス33はクロック信号13の第1番目の立ち上がりに同期してインクリメントして(00000)となり、これに対応するトレースメモリ6のフレームアドレスに、命令3の命令アドレスが非圧縮データの状態で書き込まれる。フレームの書込みが終了した時点で、トレースメモリアドレス33は次のフレームに書込みが行われるようにするために、トレースデータ書込み信号34がアクティブの期間内のクロック信号13の第2番目の立ち上がりに同期して+1インクリメントされ、(00001)となる。
【0036】
その後、命令4に対しては命令アドレスデータ圧縮回路22で、((命令4の命令アドレス)−(命令3の命令アドレス))を計算して結果を下位の1バイトのデータに圧縮し、同様にして命令5,命令6,命令7と圧縮データを生成してトレース制御回路24の圧縮データシフトレジスタ241に順次圧縮データを送り込むので、命令7の圧縮データを入力したときに圧縮データシフトレジスタ241が一杯になりアライメント完了信号246を出力する。トレース制御回路24はアライメント完了信号246に合わせてトレースデータ書込み信号34を発生して命令4〜命令7の4命令の圧縮データを合成したトレースデータ32をトレースメモリ6に書き込んだ後に、クロック信号13の立ち上がりに同期してトレースメモリアドレス33を+1インクリメントし(00002)となる。以降は、次に分岐命令を検出するまで同様に動作を継続する。
【0037】
図7は、分岐命令判定後のトレースメモリのデータ図であり、以上の動作によってトレースメモリ6に記録されたサンプルプログラムの実行結果である。
【0038】
トレースメモリに格納されたトレースデータでは、命令3に相当するデータは圧縮フラグが0となっており、命令アドレスが非圧縮の状態で読み出せることを示している。それ以外の命令については、それぞれ直前の命令アドレスからの増分(命令コードのバイト数に一致)が蓄積されているので、読み出した後に前の命令アドレスに加算することによる復元アドレスを得る。
【0039】
図8は、トレースデータの読み出し手順のフローチャート図である。以下、トレースデータの読み出しについて具体的に説明する。
【0040】
S1〜S3は、読み出し動作の初期化に相当する。
【0041】
ステップS3で圧縮フラグが0のときはステップS4に進み、圧縮フラグが1のときにはステップS5に進む。
【0042】
ステップS4では、トレースメモリ6の先頭フレームからトレースデータを読み込み、圧縮されていないフレームの命令アドレスをベースアドレスとして設定してステップS6に進む。
【0043】
ステップS6では、ベースアドレスから、当該アドレスの命令コードを読み取り命令を表示する。
【0044】
ステップS7では、読み出しポインタをインクリメントし、次のトレースフレームを読み出す。
【0045】
ステップS3で圧縮フラグが1ならば、そのフレームデータは圧縮データなので、ステップS5でベースアドレスにオフセット分を加算し、新しいベースアドレスとして設定してステップS6に進む。ステップS6以降は同様である。
【0046】
以上の手順で命令アドレスを復元して図7の復元アドレスを得る。
【0047】
次にセクショントレースを用いた場合について動作を説明する。図9は、セクショントレース動作時のタイミング図である。
【0048】
セクショントレースでは、プログラムの特定の範囲についてのみ着目してトレースを行う。具体的な例として、図5のサンプルプログラムリストにおいて、データの書込みを行っている命令4〜命令7の4ステップの範囲だけに着目してトレースを行うときの動作について説明する。
【0049】
CPU3から出力される命令アドレス・命令コードデータ14はイベント設定回路11に設定されているデータ取り込み信号15のアクティブ期間に基づいて命令4から命令7が実行されている間だけトレースデータ取り込み部7のデータラッチ211にサンプリングされる。このため図9に示すように、命令アドレス27としては、命令4〜命令7の命令アドレスだけが命令アドレス・命令コード取り込み回路21から命令アドレスデータ圧縮回路22へ出力される。
【0050】
また、セクショントレースの開始位置を示すセクショントレース開始信号16が命令4の実行開始から2クロック期間アクティブになる。セクショントレース開始信号16は、分岐命令検出信号29とともに2入力OR回路25の入力であるので、2入力OR回路25の出力の非圧縮データ選択信号30は、命令が分岐命令であるか否かには無関係にセクショントレース信号がアクティブ(ハイレベル)になったことを受けて非圧縮データ選択信号30はアクティブとなる。その結果、命令4の命令アドレスは非圧縮データのままクロック信号13のローレベル期間に出力される。
【0051】
命令5〜命令7についての圧縮データの生成およびトレースデータへの合成については、図6と同様であるので説明を省略する。
【0052】
図10は、セクショントレース後のトレースメモリのデータ図であり、以上の動作によって、トレースメモリ6に記録されたサンプルプログラムのセクショントレースの実行結果である。トレースデータとして命令4に相当するデータは圧縮フラグが0となっており、命令アドレスが非圧縮の状態であることを示している。セクショントレースの場合のトレースデータの読出しも図8と同様である。
【0053】
図11は、本発明の第2の実施例のブロック図である。図11のプログラム開発支援装置は、その基本的構成は図1の第1の実施例と同様であるが、フレームアドレス比較回路26が追加され、また2入力OR回路25に変えて3入力OR回路25aとしている点のみが異なっている。
【0054】
フレームアドレス比較回路26は、イベント設定データ信号17とトレースメモリアドレス33とを入力し、両者の所定部分が一致したときにフレーム一致信号35をアクティブにして出力する。
【0055】
3入力OR回路25aは、分岐命令検出信号29およびセクショントレース開始信号16に加えてフレーム一致信号36をも入力し、これらのうちの少なくともひとつの信号がアクティブであるときには非圧縮データ選択信号30をアクティブとして出力する。
【0056】
ここで、イベント設定回路11に設定されるイベント条件を、例えば一定のフレーム間隔でトレースメモリアドレス33と一致するような値とすることにより、任意のフレームに非圧縮のトレースデータを埋め込む事ができる。このように、本実施例では、セクショントレースの範囲がトレースメモリの最大フレーム数(説明に用いた例ではトレースメモリのフレームは00000〜000FF)を越えるような場合でも非圧縮データをトレースデータ中に埋め込むことができるので、このような場合にも非圧縮データをベースの命令アドレスとして圧縮済のトレースデータから本来の命令アドレスを復元することができるという効果が得られる。
【0057】
【発明の効果】
以上のように、本発明によれば、圧縮されたトレースデータの復元の際にベースアドレスとするために非圧縮とする命令アドレスを外部からイベント検出部に設定できるので、セクショントレースのようにトレースデータ中に分岐命令が含まれない状態においても復元の基となるベースアドレスをトレースデータ中に残すことが可能となり、正しく命令アドレスを復元することができるという効果が生じる。
【0058】
本発明では、セクショントレースのみにとどまらず、イベント設定器に例えばCPUのDMAや割り込みのトレースなどにおいて、分岐命令を含まないがプログラムの実行順が変化したりCPUの動作とは異なるバスアクセスを行う命令のアドレス情報を設定することにより、非圧縮のままトレースメモリに格納して命令アドレス復元のときにベースアドレスとすることができるので、そのような場合にも正しく復元することができる。
【図面の簡単な説明】
【図1】本発明の第1の実施例のブロック図である。
【図2】命令アドレス・命令コード取り込み回路の回路図である。
【図3】命令アドレスデータ圧縮回路の回路図である。
【図4】トレース制御回路の回路図である。
【図5】サンプルプログラムリスト図である。
【図6】分岐命令判定時の動作タイミング図である。
【図7】分岐命令判定後のトレースメモリのデータ図である。
【図8】トレースデータの読み出し手順のフローチャート図である。
【図9】セクショントレース動作時のタイミング図である。
【図10】セクショントレース後のトレースメモリのデータ図である。
【図11】本発明の第2の実施例のブロック図である。
【図12】従来のプログラム開発支援装置のブロック図である。
【符号の説明】
1,301 エバチップ
2,302 トレーサ
3,303 CPU
4 イベント検出部
5 トレースデータ作成部
6,306 トレースメモリ
11 イベント設定回路
12 イベント検出回路
13 クロック信号
14 命令アドレス・命令コードデータ
15 データ取り込み信号
16 セクショントレース開始信号
17 イベント設定データ信号
21,321 命令アドレス・命令コード取り込み回路
22,322 命令アドレスデータ圧縮回路
23,323 分岐命令判定回路
24,324 トレース制御回路
25,245 2入力OR回路
25a 3入力OR回路
26 フレームアドレス比較回路
27 命令アドレス
28 命令コード
29 分岐命令検出信号
30 非圧縮データ選択信号
31 圧縮命令アドレス
32 トレースデータ
33 トレースメモリアドレス
34 トレースデータ書込み信号
35 フレーム一致信号
211 データラッチ
212 AND回路
221 前命令アドレスラッチ
222 減算器
223 圧縮/非圧縮切替回路
241 圧縮データシフトレジスタ
242 非圧縮データラッチ
243 トレースデータ切替回路
244 トレースアドレスカウンタ
246 アライメント完了信号
247 アライメント済圧縮データ
Claims (5)
- ターゲットプログラムを実行するCPUと、
前記CPUから入力する命令アドレス・命令コードデータが予めイベント条件として設定された所定の命令アドレスまたは所定の命令コードと一致することを検出したときにプログラムのある範囲のみを繰り返しトレースするセクショントレースのセクショントレース開始信号をアクティブにして出力するイベント検出部と、
前記命令アドレス・命令コードデータおよび前記セクショントレース開始信号を入力し前記命令アドレス・命令コードデータの命令コードが分岐命令であるかまたはセクショントレース開始信号がアクティブであるときには命令アドレスを非圧縮のままトレースデータとして出力し、前記命令アドレス・命令コードデータの命令コードが分岐命令でなく且つ前記セクショントレース開始信号がアクティブでないときには前記命令アドレス・命令コードデータの命令アドレスを圧縮して圧縮命令アドレスを生成し複数個の前記圧縮命令アドレスを合成してトレースデータとして出力するトレースデータ作成部と、
前記トレースデータを蓄積するトレースメモリとを備えることを特徴とするプログラム開発支援装置。 - ターゲットプログラムを実行するCPUと、
前記CPUから入力する命令アドレス・命令コードデータが予めイベント条件として設定された所定の命令アドレスまたは所定の命令コードと一致することを検出したときにプログラムのある範囲のみを繰り返しトレースするセクショントレースのセクショントレース開始信号をアクティブにして出力するとともにデータ取り込み信号を所定の期間アクティブに維持するイベント検出部と、
データ取り込み信号がアクティブのときには前記命令アドレス・命令コードデータを取り込み、前記命令アドレス・命令コードデータの命令コードが分岐命令であるかまたは前記セクショントレース開始信号がアクティブであるときには命令アドレスを非圧縮のままトレースデータとして出力し、前記命令アドレス・命令コードデータの命令コードが分岐命令でなく且つ前記セクショントレース開始信号がアクティブでないときには現在の命令アドレス・命令コードデータの命令アドレスの値からひとつ前の命令アドレス・命令コードデータの命令アドレスの値を減じた差分値の圧縮命令アドレスを生成し連続する複数の前記命令アドレス・命令コードデータに対応する複数の前記圧縮命令アドレスを合成してトレースデータとして出力するトレースデータ作成部と、
前記トレースデータを蓄積するトレースメモリとを備えることを特徴とするプログラム開発支援装置。 - 前記イベント検出部が、
予めイベント条件として外部から所定の命令アドレスまたは所定の命令コードが設定されているときには前記所定の命令アドレスまたは所定の命令コードとともにデータ取り込み信号のアクティブ期間をも保持するイベント設定回路と、
前記イベント設定回路から転送された前記所定の命令アドレスまたは前記所定の命令コードとCPUから入力する命令アドレス・命令コードデータの命令アドレスまたは命令コードが一致することを検出したときにセクショントレース開始信号をアクティブにして出力するとともに前記イベント設定回路に設定された前記アクティブ期間の間前記データ取り込み信号をアクティブにして出力するイベント検出回路とを有する請求項2記載のプログラム開発支援装置。 - 前記トレースデータ作成部が、
CPUから出力された命令アドレス・命令コードデータをデータ取り込み信号がアクティブの期間に読み込んで、命令アドレスと命令コードとを出力する命令アドレス・命令コード取り込み回路と、
前記命令アドレスと非圧縮データ選択信号とを入力し前記非圧縮データ選択信号がアクティブのときには前記命令アドレスをそのまま圧縮命令アドレスとして出力し前記非圧縮データ選択信号がアクティブでないときには現在の命令アドレスからひとつ前の命令アドレスを減じた差分データを前記圧縮命令アドレスとして出力する命令アドレスデータ圧縮回路と、
前記命令コードを入力し該命令コードが分岐命令であるか否かを判定し分岐命令であると判定したときには分岐命令検出信号をアクティブにして出力する分岐命令判定回路と、
前記圧縮命令アドレスと前記非圧縮データ選択信号を入力し前記非圧縮データ選択信号がアクティブのときには前記圧縮命令アドレスをそのままトレースデータとして出力し、前記非圧縮データ選択信号がアクティブでないときには連続して入力した複数の前記圧縮命令アドレスをトレースメモリのビット幅に合わせて合成して前記トレースデータとして出力するとともに前記トレースデータの書込みを前記トレースメモリに指示するトレースデータ書込み信号および前記トレースメモリでの格納アドレスを指定するトレースメモリアドレスを出力するトレース制御回路と、
前記分岐命令検出信号またはセクショントレース開始信号の少なくとも一方がアクティブのときに前記非圧縮データ選択信号をアクティブにして出力する2入力OR回路とを有する請求項2記載のプログラム開発支援装置。 - ターゲットプログラムを実行するCPUと、
予めイベント条件として外部から所定の命令アドレスまたは所定の命令コードが設定されているときには前記所定の命令アドレスまたは所定の命令コードとともにデータ取り込み信号のアクティブ期間をも保持するイベント設定回路と、前記イベント設定回路から入力したイベント設定データ信号に含まれた前記所定の命令アドレスまたは前記所定の命令コードと前記CPUから入力する命令アドレス・命令コードデータの命令アドレスまたは命令コードとが一致することを検出したときにプログラムのある範囲のみを繰り返しトレースするセクショントレースのセクショントレース開始信号をアクティブにして出力するとともに前記イベント設定回路に設定された前記アクティブ期間の間前記データ取り込み信号をアクティブにして出力するイベント検出回路とを有する前記イベント検出部と、実行した命令順に命令アドレスを示すデータをトレースデータとして蓄積するトレースメモリと、
前記CPUから出力された前記命令アドレス・命令コードデータを前記データ取り込み信号がアクティブの期間に読み込んで、前記命令アドレスと前記命令コードとを出力する命令アドレス・命令コード取り込み回路と、前記命令アドレスと非圧縮データ選択信号とを入力し前記非圧縮データ選択信号がアクティブのときには前記命令アドレスをそのまま圧縮命令アドレスとして出力し前記非圧縮データ選択信号がアクティブでないときには現在の命令アドレスからひとつ前の命令アドレスを減じた差分データを前記圧縮命令アドレスとして出力する命令アドレスデータ圧縮回路と、前記命令コードを入力し該命令コードが分岐命令であるか否かを判定し分岐命令であると判定したときには分岐命令検出信号をアクティブにして出力する分岐命令判定回路と、前記圧縮命令アドレスと前記非圧縮データ選択信号を入力し前記非圧縮データ選択信号がアクティブのときには前記圧縮命令アドレスをそのまま前記トレースデータとして出力し、前記非圧縮データ選択信号がアクティブでないときには連続して入力した複数の前記圧縮命令アドレスを前記トレースメモリのビット幅に合わせて合成して前記トレースデータとして出力するとともに前記トレースデータの書込みを前記トレースメモリに指示するトレースデータ書込み信号および前記トレースメモリでの格納アドレスを指定するトレースメモリアドレスを出力するトレース制御回路と、前記イベント設定データ信号と前記トレースメモリアドレスとを入力し、両者の所定部分が一致したときにフレーム一致信号をアクティブにするフレームアドレス比較回路と、前記分岐命令検出信号、前記セクショントレース開始信号および前記フレーム一致信号を入力しこれらのうちの少なくともひとつの信号がアクティブであるときには前記非圧縮データ選択信号をアクティブにして出力する3入力OR回路とを有するトレースデータ作成部とを備えることを特徴とするプログラム開発支援装置。
Priority Applications (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2000089636A JP3629181B2 (ja) | 2000-03-28 | 2000-03-28 | プログラム開発支援装置 |
| EP01107450A EP1187003B1 (en) | 2000-03-28 | 2001-03-27 | Program development support apparatus |
| DE60130178T DE60130178T2 (de) | 2000-03-28 | 2001-03-27 | Programmentwicklungsunterstützungsapparat |
| US09/819,351 US7065749B2 (en) | 2000-03-28 | 2001-03-28 | Program development compressed trace support apparatus |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2000089636A JP3629181B2 (ja) | 2000-03-28 | 2000-03-28 | プログラム開発支援装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2001282575A JP2001282575A (ja) | 2001-10-12 |
| JP3629181B2 true JP3629181B2 (ja) | 2005-03-16 |
Family
ID=18605367
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2000089636A Expired - Fee Related JP3629181B2 (ja) | 2000-03-28 | 2000-03-28 | プログラム開発支援装置 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US7065749B2 (ja) |
| EP (1) | EP1187003B1 (ja) |
| JP (1) | JP3629181B2 (ja) |
| DE (1) | DE60130178T2 (ja) |
Families Citing this family (36)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7287147B1 (en) | 2000-12-29 | 2007-10-23 | Mips Technologies, Inc. | Configurable co-processor interface |
| US7237090B1 (en) | 2000-12-29 | 2007-06-26 | Mips Technologies, Inc. | Configurable out-of-order data transfer in a coprocessor interface |
| US7069544B1 (en) * | 2001-04-30 | 2006-06-27 | Mips Technologies, Inc. | Dynamic selection of a compression algorithm for trace data |
| US7134116B1 (en) | 2001-04-30 | 2006-11-07 | Mips Technologies, Inc. | External trace synchronization via periodic sampling |
| US7124072B1 (en) | 2001-04-30 | 2006-10-17 | Mips Technologies, Inc. | Program counter and data tracing from a multi-issue processor |
| US7178133B1 (en) | 2001-04-30 | 2007-02-13 | Mips Technologies, Inc. | Trace control based on a characteristic of a processor's operating state |
| US7168066B1 (en) | 2001-04-30 | 2007-01-23 | Mips Technologies, Inc. | Tracing out-of order load data |
| US7181728B1 (en) | 2001-04-30 | 2007-02-20 | Mips Technologies, Inc. | User controlled trace records |
| US7185234B1 (en) * | 2001-04-30 | 2007-02-27 | Mips Technologies, Inc. | Trace control from hardware and software |
| US7065675B1 (en) | 2001-05-08 | 2006-06-20 | Mips Technologies, Inc. | System and method for speeding up EJTAG block data transfers |
| US7043668B1 (en) | 2001-06-29 | 2006-05-09 | Mips Technologies, Inc. | Optimized external trace formats |
| US7231551B1 (en) | 2001-06-29 | 2007-06-12 | Mips Technologies, Inc. | Distributed tap controller |
| JP2003085000A (ja) * | 2001-09-10 | 2003-03-20 | Mitsubishi Electric Corp | トレース情報生成装置およびその方法 |
| US7865879B1 (en) * | 2003-04-29 | 2011-01-04 | Globalfoundries Inc. | Efficient branch trace messaging with hardware debug features |
| US7159101B1 (en) | 2003-05-28 | 2007-01-02 | Mips Technologies, Inc. | System and method to trace high performance multi-issue processors |
| US7308681B2 (en) * | 2003-10-28 | 2007-12-11 | International Business Machines Corporation | Control flow based compression of execution traces |
| US7533251B2 (en) * | 2003-12-24 | 2009-05-12 | Panasonic Corporation | Semiconductor integrated circuit, development support system and execution history tracing method |
| US20050146449A1 (en) * | 2003-12-30 | 2005-07-07 | Ali-Reza Adl-Tabatabai | Mechanism to improve performance monitoring overhead |
| US8271955B1 (en) | 2004-07-23 | 2012-09-18 | Green Hille Software, Inc. | Forward post-execution software debugger |
| US8136096B1 (en) * | 2004-07-23 | 2012-03-13 | Green Hills Software, Inc. | Backward post-execution software debugger |
| US8132159B1 (en) | 2004-07-23 | 2012-03-06 | Green Hills Software, Inc. | Post-execution software debugger with event display |
| US20060101415A1 (en) * | 2004-11-01 | 2006-05-11 | Evans Mark S | Service logic program tracing |
| US7640539B2 (en) * | 2005-04-12 | 2009-12-29 | International Business Machines Corporation | Instruction profiling using multiple metrics |
| US7657875B2 (en) * | 2005-04-12 | 2010-02-02 | International Business Machines Corporation | System and method for collecting a plurality of metrics in a single profiling run of computer code |
| JP2007058588A (ja) * | 2005-08-24 | 2007-03-08 | Toshiba Corp | プログラム保護機能を持つプロセッサ |
| WO2007096372A1 (en) * | 2006-02-21 | 2007-08-30 | Mentor Graphics Corporation | Memory tracing in an emulation environment |
| US7861070B2 (en) * | 2008-06-12 | 2010-12-28 | National Tsing Hua University | Trace compression method for debug and trace interface wherein differences of register contents between logically adjacent registers are packed and increases of program counter addresses are categorized |
| US8561033B2 (en) * | 2010-07-30 | 2013-10-15 | International Business Machines Corporation | Selective branch-triggered trace generation apparatus and method |
| GB2483509B (en) * | 2010-09-13 | 2017-08-02 | Advanced Risc Mach Ltd | Data processing apparatus, trace unit and diagnostic apparatus |
| KR101738640B1 (ko) * | 2011-01-18 | 2017-05-24 | 삼성전자주식회사 | 트레이스 데이터 압축 장치 및 방법 |
| JP6041749B2 (ja) * | 2013-04-19 | 2016-12-14 | 三菱電機株式会社 | トレース収集回路及びトレース収集方法 |
| JP6478562B2 (ja) | 2013-11-07 | 2019-03-06 | 株式会社半導体エネルギー研究所 | 半導体装置 |
| JP6393590B2 (ja) * | 2013-11-22 | 2018-09-19 | 株式会社半導体エネルギー研究所 | 半導体装置 |
| GB2553582B (en) | 2016-09-13 | 2020-07-08 | Advanced Risc Mach Ltd | An apparatus and method for generating and processing a trace stream indicative of instruction execution by processing circuitry |
| US10506079B2 (en) * | 2017-09-14 | 2019-12-10 | Arm Limited | Packet compression |
| US11573883B1 (en) * | 2018-12-13 | 2023-02-07 | Cadence Design Systems, Inc. | Systems and methods for enhanced compression of trace data in an emulation system |
Family Cites Families (22)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| GB1264066A (ja) * | 1970-06-24 | 1972-02-16 | ||
| JPS5341A (en) | 1976-06-24 | 1978-01-05 | Fujitsu Ltd | Order address collection controll system |
| JPS59161746A (ja) * | 1983-03-04 | 1984-09-12 | Omron Tateisi Electronics Co | プログラムアナライザ |
| US4641348A (en) * | 1983-11-09 | 1987-02-03 | Hewlett-Packard Company | Timing or logic state analyzer with automatic qualified inferential marking and post processing of captured trace data |
| US5535331A (en) * | 1987-09-04 | 1996-07-09 | Texas Instruments Incorporated | Processor condition sensing circuits, systems and methods |
| JPH0261731A (ja) | 1988-08-29 | 1990-03-01 | Matsushita Electric Ind Co Ltd | マイクロプロセッサ |
| JPH04237340A (ja) | 1991-01-22 | 1992-08-25 | Nec Eng Ltd | プログラム評価支援装置 |
| US5491793A (en) * | 1992-07-31 | 1996-02-13 | Fujitsu Limited | Debug support in a processor chip |
| JPH06348490A (ja) * | 1993-06-08 | 1994-12-22 | Hitachi Ltd | 演算処理方法、及びマイクロコンピュータ |
| GB9406666D0 (en) * | 1994-04-05 | 1994-05-25 | Communicate Ltd | Computer system |
| JPH08161196A (ja) | 1994-12-09 | 1996-06-21 | Nec Corp | 命令トレース装置 |
| US5764885A (en) * | 1994-12-19 | 1998-06-09 | Digital Equipment Corporation | Apparatus and method for tracing data flows in high-speed computer systems |
| US5621886A (en) * | 1995-06-19 | 1997-04-15 | Intel Corporation | Method and apparatus for providing efficient software debugging |
| US5740413A (en) * | 1995-06-19 | 1998-04-14 | Intel Corporation | Method and apparatus for providing address breakpoints, branch breakpoints, and single stepping |
| EP0762280B1 (en) * | 1995-08-30 | 2001-11-14 | Motorola, Inc. | Data processor with built-in emulation circuit |
| US6216213B1 (en) * | 1996-06-07 | 2001-04-10 | Motorola, Inc. | Method and apparatus for compression, decompression, and execution of program code |
| US5764994A (en) * | 1996-09-16 | 1998-06-09 | International Business Machines Corporation | Method and system for compressing compiled microcode to be executed within a data processing system |
| JP3019922B2 (ja) | 1997-06-30 | 2000-03-15 | 日本電気株式会社 | トレースデータ削減方式 |
| JP2878264B1 (ja) * | 1998-03-11 | 1999-04-05 | 甲府日本電気株式会社 | トレーサ装置、トレースデータ圧縮方法および圧縮トレースデータ読み出し方法 |
| JPH11353205A (ja) * | 1998-06-04 | 1999-12-24 | Ricoh Co Ltd | トレースメモリ内蔵のプロセッサ |
| JP4406119B2 (ja) * | 1999-08-24 | 2010-01-27 | パナソニック株式会社 | インサーキットエミュレータ |
| US6732307B1 (en) * | 1999-10-01 | 2004-05-04 | Hitachi, Ltd. | Apparatus and method for storing trace information |
-
2000
- 2000-03-28 JP JP2000089636A patent/JP3629181B2/ja not_active Expired - Fee Related
-
2001
- 2001-03-27 EP EP01107450A patent/EP1187003B1/en not_active Expired - Lifetime
- 2001-03-27 DE DE60130178T patent/DE60130178T2/de not_active Expired - Lifetime
- 2001-03-28 US US09/819,351 patent/US7065749B2/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| EP1187003B1 (en) | 2007-08-29 |
| JP2001282575A (ja) | 2001-10-12 |
| US7065749B2 (en) | 2006-06-20 |
| DE60130178T2 (de) | 2008-05-21 |
| EP1187003A2 (en) | 2002-03-13 |
| EP1187003A3 (en) | 2004-12-01 |
| DE60130178D1 (de) | 2007-10-11 |
| US20010054175A1 (en) | 2001-12-20 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3629181B2 (ja) | プログラム開発支援装置 | |
| JP2002323995A (ja) | トレース回路 | |
| JP2006012064A (ja) | トレース装置 | |
| KR100956960B1 (ko) | 데이터 전개 디바이스 및 데이터 전개 방법 | |
| JP2002163127A (ja) | トレース制御回路 | |
| JP2878264B1 (ja) | トレーサ装置、トレースデータ圧縮方法および圧縮トレースデータ読み出し方法 | |
| US5386521A (en) | Instruction prefetching circuit with a next physical address precalculating circuit | |
| JP3019922B2 (ja) | トレースデータ削減方式 | |
| JP4109367B2 (ja) | ノンリニアビデオ編集装置およびその方法 | |
| JP2003014784A (ja) | デジタルデータ処理方法、処理装置および処理プログラム | |
| JPH11298337A (ja) | 集積化されたビタビデコ―ダ回路 | |
| JP2504974B2 (ja) | シ−ケンサの高速演算処理方式 | |
| JP3087488B2 (ja) | データ復元回路 | |
| JP3235316B2 (ja) | Icテスタのパターン制御方法 | |
| JP3595890B2 (ja) | 情報記録装置の制御回路 | |
| JP2804934B2 (ja) | システム開発装置 | |
| JPH11275510A (ja) | デジタルカメラ | |
| JP3052952B2 (ja) | デ―タ検索装置 | |
| JP2005209172A (ja) | 半導体集積回路、開発支援装置及び実行履歴復元方法 | |
| JP2002108641A (ja) | トレース回路、メモリ試験方法及び記録媒体 | |
| JPH05173846A (ja) | 障害解析情報トレース方法 | |
| JPH10214209A (ja) | デバッギング機能を有するデータ処理装置 | |
| JPH04194688A (ja) | 採取データの逐次記憶および再編集機能付ロジックアナライザ | |
| JPH07121200A (ja) | 情報記録再生装置 | |
| JPH10209878A (ja) | データ展開装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20040727 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040927 |
|
| A911 | Transfer of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20041001 |
|
| 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: 20041116 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041210 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071217 Year of fee payment: 3 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081217 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091217 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091217 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101217 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101217 Year of fee payment: 6 |
|
| S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101217 Year of fee payment: 6 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111217 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111217 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121217 Year of fee payment: 8 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121217 Year of fee payment: 8 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131217 Year of fee payment: 9 |
|
| LAPS | Cancellation because of no payment of annual fees |