JP2003085000A - トレース情報生成装置およびその方法 - Google Patents

トレース情報生成装置およびその方法

Info

Publication number
JP2003085000A
JP2003085000A JP2001273413A JP2001273413A JP2003085000A JP 2003085000 A JP2003085000 A JP 2003085000A JP 2001273413 A JP2001273413 A JP 2001273413A JP 2001273413 A JP2001273413 A JP 2001273413A JP 2003085000 A JP2003085000 A JP 2003085000A
Authority
JP
Grant status
Application
Patent type
Prior art keywords
branch
trace information
information
trace
data
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.)
Withdrawn
Application number
JP2001273413A
Other languages
English (en)
Inventor
Hisakazu Sato
尚和 佐藤
Original Assignee
Mitsubishi Electric Corp
三菱電機株式会社
Priority date (The priority date 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 date listed.)
Filing date
Publication date

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing

Abstract

(57)【要約】 【課題】 トレース情報のデータ量を削減することが可
能なトレース情報生成装置を提供すること。 【解決手段】 分岐トレース情報生成部2は、命令実行
部6の命令実行状況を示す命令実行情報に基づいて、対
象となる処理の分岐元情報および分岐先情報のうち少な
くとも一部を省略した分岐トレース情報を生成する。ト
レース情報出力部5は、分岐トレース情報生成部2によ
って生成された分岐トレース情報から、命令実行部6に
よって実行された命令を復元可能なトレース情報を生成
して出力する。したがって、トレース情報のデータ量を
削減することが可能となる。

Description

【発明の詳細な説明】 【0001】 【発明の属する技術分野】本発明は、CPU(Central
Processing Unit)が搭載されたハードウェアのデバッ
グやソフトウェアのデバッグに使用されるデバッグ情報
を生成する技術に関し、特に、実行した命令と順序を復
元するためにPC(Program Counter)値をトレース
し、注目するオペランドアクセスの実行状況を観測する
ためのトレース情報を生成して出力するトレース情報生
成装置およびその方法に関する。 【0002】 【従来の技術】近年、パーソナルコンピュータ等の情報
機器や、家電機器等においてCPUが広く使用されてい
る。CPU自体の開発や、そのCPUを搭載した情報機
器、家電機器等の開発において、ハードウェアやソフト
ウェアのデバッグにデバッグ装置が使用されている。 【0003】また、CPUの処理速度の高速化に対する
要望も高まっており、これに対応すべくCPUの動作周
波数がますます高くなる傾向にあり、CPU外部の回路
の動作周波数に比べて格段に高くなってきている。 【0004】 【発明が解決しようとする課題】しかし、従来のデバッ
グ装置は、CPUが実行した命令とその順序を復元する
ためのデータを出力する必要があるため、CPUの動作
周波数に比例してそのデータ量が膨大なものになってき
ている。このような膨大なデータを出力するためには多
くの出力ピンが必要となり、高コストになるといった問
題点があった。 【0005】また、詳細なデバッグを行なうためには、
オペランドアクセスの実行状況も同時に観測できること
が望ましい。これに対応するためには、上記問題点がま
すます深刻なものとなる。 【0006】本発明は、上記問題点を解決するためにな
されたものであり、第1の目的は、トレース情報のデー
タ量を削減することが可能なトレース情報生成装置を提
供することである。 【0007】第2の目的は、プロセッサによる命令実行
を正しく復元することが可能なトレース情報生成装置を
提供することである。 【0008】プログラム中のどの命令によって注目する
オペランドアクセスが実行されたかを特定することが可
能なトレース情報生成装置を提供することである。 【0009】 【課題を解決するための手段】請求項1に記載のトレー
ス情報生成装置は、プロセッサの命令実行状況を示す命
令実行情報に基づいて、対象となる処理の分岐元情報お
よび分岐先情報のうち少なくとも一部を省略した分岐ト
レース情報を生成する分岐トレース情報生成部と、分岐
トレース情報生成部によって生成された分岐トレース情
報から、プロセッサによって実行された命令を復元可能
なトレース情報を生成して出力するトレース情報出力部
とを含む。 【0010】分岐トレース情報生成部は、対象となる処
理の分岐元情報および分岐先情報のうち少なくとも一部
を省略した分岐トレース情報を生成するので、トレース
情報のデータ量を削減することが可能となる。 【0011】請求項2に記載のトレース情報生成装置
は、請求項1記載のトレース情報生成装置であって、分
岐トレース情報生成部は、対象となる処理が分岐先がプ
ログラムに明記される直接分岐の場合には、分岐先情報
を省略した分岐トレース情報を生成する。 【0012】したがって、トレース情報のデータ量をさ
らに削減することが可能となる。請求項3に記載のトレ
ース情報生成装置は、請求項1記載のトレース情報生成
装置であって、分岐トレース情報生成部は、対象となる
処理が分岐先がプログラムに明記される直接分岐であ
り、かつ無条件分岐の場合には、分岐トレース情報を生
成しない。 【0013】したがって、分岐先がプログラムに明記さ
れる直接分岐であり、かつ無条件分岐である処理に対し
ては、トレース情報が生成されて出力されることがない
ため、トレース情報のデータ量をさらに削減することが
可能となる。 【0014】請求項4に記載のトレース情報生成装置
は、請求項1記載のトレース情報生成装置であって、さ
らに分岐先情報を省略するか否かを指定するレジスタを
含み、分岐トレース情報生成部は、対象となる処理が分
岐先がプログラムに明記される直接分岐であり、かつレ
ジスタに分岐先を省略する指定がある場合には、分岐先
情報を省略した分岐トレース情報を生成し、対象となる
処理が分岐先がプログラムに明記される直接分岐であ
り、かつレジスタに分岐先を省略しない指定がある場合
には、分岐先情報を含んだ分岐トレース情報を生成す
る。 【0015】したがって、分岐先情報を含んだ分岐トレ
ース情報と、分岐先情報を含まない分岐トレース情報と
を選択して生成するといった、柔軟な設定が可能とな
る。 【0016】請求項5に記載のトレース情報生成装置
は、請求項1記載のトレース情報生成装置であって、さ
らに分岐先情報を省略するか否かをアドレス領域毎に指
定するレジスタを含み、分岐トレース情報生成部は、対
象となる処理が分岐先がプログラムに明記される直接分
岐であり、かつ分岐元のアドレスに対応するレジスタの
内容が、分岐先を省略する指定である場合には、分岐先
情報を省略した分岐トレース情報を生成し、対象となる
処理が分岐先がプログラムに明記される直接分岐であ
り、かつ分岐元のアドレスに対応するレジスタの内容
が、分岐先を省略しない指定である場合には、分岐先情
報を含んだ分岐トレース情報を生成する。 【0017】したがって、プログラムによって書換えら
れる可能性のあるアドレス領域を分岐元とする場合には
分岐先情報を含んだ分岐トレース情報を生成し、プログ
ラムによって書換えられる可能性のないアドレス領域を
分岐元とする場合には分岐先情報を含まない分岐トレー
ス情報を生成するといった、柔軟な設定が可能となる。 【0018】請求項6に記載のトレース情報生成装置
は、請求項2〜5のいずれかに記載のトレース情報生成
装置であって、分岐トレース情報生成部は、プログラム
カウント値を所定のレジスタに退避して分岐し、所定の
処理を行なった後、所定のレジスタに退避されたプログ
ラムカウント値の処理に復帰させる一連の処理が発生し
た場合には、プログラムカウント値を所定のレジスタに
退避してから所定のレジスタに退避されたプログラムカ
ウント値の処理に復帰させる命令が実行されるまでの間
に、所定のレジスタに別の書込みがなければ、所定のレ
ジスタに退避されたプログラムカウント値の処理に復帰
させる命令を直接分岐と見なして分岐トレース情報を生
成する。 【0019】したがって、割込み処理やサブルーチンの
リターン命令などの場合に、トレース情報のデータ量を
削減することが可能となる。 【0020】請求項7に記載のトレース情報生成装置
は、請求項1記載のトレース情報生成装置であって、分
岐トレース情報生成部は、先に生成した分岐トレース情
報に含まれる分岐先情報からの相対アドレスで分岐元情
報を生成し、分岐元情報を含んだ分岐トレース情報を生
成する。 【0021】分岐トレース情報生成部は、分岐元情報を
相対アドレスで生成するので、トレース情報のデータ量
をさらに削減することが可能となる。 【0022】請求項8に記載のトレース情報生成装置
は、請求項7記載のトレース情報生成装置であって、分
岐トレース情報生成部は、相対アドレスの分岐元情報を
含んだ分岐トレース情報を所定回生成する毎に、絶対ア
ドレスの分岐元情報を含んだ分岐トレース情報を生成す
る。 【0023】トレース情報の一部が失われた場合でも、
絶対アドレスの分岐元情報を含んだ分岐トレース情報に
基づいて、プロセッサによる命令実行を正しく復元する
ことが可能となる。 【0024】請求項9に記載のトレース情報生成装置
は、請求項1記載のトレース情報生成装置であって、分
岐トレース情報生成部は、対象となる処理の分岐トレー
ス情報が、先に生成した分岐トレース情報と同じ場合に
は、先に生成した分岐トレース情報を指し示す情報を含
み、分岐元情報および分岐先情報を省略した分岐トレー
ス情報を生成する。 【0025】分岐トレース情報に分岐元情報と分岐先情
報とが含まれないので、トレース情報のデータ量をさら
に削減することが可能となる。 【0026】請求項10に記載のトレース情報生成装置
は、請求項9記載のトレース情報生成装置であって、分
岐トレース情報生成部は、ユニークなレジスタ番号を有
し、生成した分岐トレース情報を保持する複数の履歴保
持レジスタを含み、対象となる処理の分岐トレース情報
が、複数の履歴保持レジスタに保持される分岐トレース
情報のいずれかと一致する場合には、当該履歴保持レジ
スタのレジスタ番号を含んだパケットを生成して分岐ト
レース情報として出力し、対象となる処理の分岐トレー
ス情報が、複数の履歴保持レジスタに保持される分岐ト
レース情報のいずれにも一致しない場合には、複数の履
歴保持レジスタのいずれかの内容を当該分岐トレース情
報で更新し、当該分岐トレース情報および当該履歴保持
レジスタのレジスタ番号を含んだパケットを生成して分
岐トレース情報として出力する。 【0027】したがって、外部のコンピュータ等が分岐
元情報および分岐先情報を含まない分岐トレース情報を
取得したときに、その分岐トレース情報が先に生成され
た分岐トレース情報のいずれと一致するかを容易に知る
ことができる。 【0028】請求項11に記載のトレース情報生成装置
は、請求項1〜10のいずれかに記載のトレース情報生
成装置であって、トレース情報生成装置はさらに、デー
タトレース条件を設定するデータトレース条件クラスタ
と、プロセッサのデータアクセス状況を示すデータアク
セス情報が、データトレース条件クラスタに設定された
データトレース条件と一致する場合には、プロセッサに
よって実行されたデータアクセスを示すデータトレース
情報を生成するデータトレース情報生成部とを含み、ト
レース情報出力部は、データトレース情報生成部によっ
て生成されたデータトレース情報から、トレース情報を
生成して出力する。 【0029】データトレース情報生成部は、データアク
セス情報がデータトレース条件クラスタに設定されたデ
ータトレース条件と一致する場合にデータトレース情報
を生成するので、外部のコンピュータ等は注目するオペ
ランドアクセスが実行されたことを認識することが可能
となる。 【0030】請求項12に記載のトレース情報生成装置
は、請求項11記載のトレース情報生成装置であって、
データトレース情報生成部は、データトレース条件クラ
スタに設定されたデータトレース条件と一致したオペラ
ンドアクセスを起動した命令のアドレスを含んだデータ
トレース情報を生成する。 【0031】したがって、外部のコンピュータ等は、プ
ログラム中のどの命令によって注目するオペランドアク
セスが実行されたかを特定することが可能となる。 【0032】請求項13に記載のトレース情報生成装置
は、請求項11または12記載のトレース情報生成装置
であって、トレース情報出力部は、データトレース情報
生成部によってデータトレース情報が生成された時点を
基準として、分岐トレース情報生成部によって生成され
た分岐トレース情報からトレース情報を選択的に生成し
て出力する。 【0033】したがって、データトレース情報にオペラ
ンドアクセスを起動した命令のアドレスを含めなくて
も、プログラム中のどの命令によって注目するオペラン
ドアクセスが実行されたかを特定することが可能とな
る。 【0034】請求項14に記載のトレース情報生成装置
は、請求項11または12記載のトレース情報生成装置
であって、トレース情報出力部は、データトレース情報
生成部によって生成されたデータトレース情報が予め指
定されたオペランドアクセスの場合に、当該データトレ
ース情報が生成された時点を基準として、分岐トレース
情報生成部によって生成された分岐トレース情報からト
レース情報を選択的に生成して出力する。 【0035】したがって、分岐トレース情報の生成を起
動するデータトレース情報を制限することができ、さら
に正確に注目するオペランドアクセスを抽出することが
可能となる。 【0036】請求項15に記載のトレース情報生成方法
は、プロセッサの命令実行状況を示す命令実行情報に基
づいて、対象となる処理の分岐元情報および分岐先情報
のうち少なくとも一部を省略した分岐トレース情報を生
成するステップと、生成された分岐トレース情報から、
プロセッサによって実行された命令を復元可能なトレー
ス情報を生成して出力するステップとを含む。 【0037】対象となる処理の分岐元情報および分岐先
情報のうち少なくとも一部を省略した分岐トレース情報
を生成するので、トレース情報のデータ量を削減するこ
とが可能となる。 【0038】請求項16に記載のトレース情報生成方法
は、請求項15記載のトレース情報生成方法であって、
さらにデータトレース条件を設定するステップと、プロ
セッサのデータアクセス状況を示すデータアクセス情報
が、設定されたデータトレース条件と一致する場合に
は、プロセッサによって実行されたデータアクセスを示
すデータトレース情報を生成するステップと、生成され
たデータトレース情報からトレース情報を生成して出力
するステップとを含む。 【0039】データアクセス情報が設定されたデータト
レース条件と一致する場合にデータトレース情報を生成
するので、外部のコンピュータ等は注目するオペランド
アクセスが実行されたことを認識することが可能とな
る。 【0040】 【発明の実施の形態】(実施の形態1)図1は、本発明
の実施の形態1におけるデバッグ装置の概略構成を示す
ブロック図である。このデバッグ装置は、デバッグに必
要となるトレース情報を生成するトレース情報生成装置
1と、命令を実行することによって後述する命令実行情
報およびデータアクセス情報を出力する命令実行部6
と、命令実行部6によって実行されるデバッグ対象のソ
フトウェア等が格納されるメモリ部7と、命令実行部6
および図示しないDMA(Direct Memory Access)コン
トローラからのアクセス要求を調停し、メモリ部7に対
するアクセスを実行するバスインタフェース部8とを含
む。 【0041】命令実行部6は、後述するように一般的な
CPUを含み、メモリ部7からフェッチした命令に従っ
て処理を実行し、必要に応じてメモリ部7に対するデー
タ読出しやデータ書込みを行なう。命令実行部6の命令
セットは、2バイトまたは4バイトの2種類のフォーマ
ットによって構成される。命令実行部6の基本データ長
は、32ビットである。アドレスも32ビットであるた
め、4Gバイトのアドレス空間を有する。また、後述す
るように命令実行部6内部にキャッシュメモリを有す
る。 【0042】メモリ部7は、SRAM(Static Random
Access Memory)、DRAM(Dynamic Random Access M
emory)、フラッシュメモリ等によって構成され、命令
実行部6が実行する命令や実行の際に使用されるデータ
が格納される。このメモリ部7には、A/D(Analog/D
igital)変換器、D/A(Digital/Analog)変換器など
の入出力装置が含まれる場合もある。 【0043】トレース情報生成装置1は、命令実行部6
から出力された命令実行情報およびデータアクセス情報
に基づいて、トレース情報を生成して出力する。このト
レース情報生成装置1は、分岐トレース情報生成部2
と、データトレース情報生成部3と、トレース情報出力
部5とを含む。 【0044】分岐トレース情報生成部2は、命令実行部
6から出力された命令実行情報に基づいて、命令実行部
6が実行した命令をトレースするための分岐トレース情
報を生成する。 【0045】データトレース情報生成部3は、命令実行
部6から出力されたデータアクセス情報に基づいて、命
令実行部6がメモリ部7に対して行なったデータアクセ
スをトレースするためのデータトレース情報を生成す
る。なお、データトレース情報生成部3は、命令実行部
6がメモリ部7に対して行なったデータアクセス以外
に、命令実行部6内部に設けられたキャッシュメモリに
対して行なったデータアクセスをトレースするためのデ
ータトレース情報も生成して出力する。 【0046】トレース情報出力部5は、分岐トレース情
報生成部2から出力された分岐トレース情報およびデー
タトレース情報生成部3から出力されたデータトレース
情報に基づいて、トレース情報を生成する。トレース情
報出力部5から出力されたトレース情報は、外部に設け
られた図示しないトレースメモリに格納され、図示しな
いICE(In-Circuit Emulator)等のコンピュータに
よってそのトレース情報が読取られて、命令実行部6の
実行状況が復元され解析される。 【0047】本実施の形態におけるトレース情報生成装
置1から出力されるトレース情報は、パケット形式で生
成される。以下、トレース情報のパケットを、トレース
情報パケットと呼ぶ。 【0048】図2は、トレース情報パケットのデータフ
ォーマットを説明するための図である。トレース情報パ
ケットは、大きく分岐パケットと、データパケットとに
分類される。分岐パケットには、図2(a)〜図2
(c)に示すショート分岐パケットと、ロング分岐パケ
ットと、リピート分岐パケットとが含まれる。また、デ
ータパケットには、図2(d)〜図2(f)に示すショ
ートデータパケットと、ロングデータパケットと、混在
データパケットとが含まれる。 【0049】全てのパケットフォーマットにおいて、b
it[0]には後述するオーバフローフラグが割当てら
れ、当該パケットの出力前に入力オーバフローによって
失われたトレース情報があったか否かを示している。ま
た、bit[1:3]には、何れのパケットフォーマッ
トであるかを示すパケット識別ビットが割当てられる。
なお、bit[1:3]は、bit[1]〜bit
[3]を表記するものとする。 【0050】図3は、パケット識別ビットの一例を示す
図である。パケット識別ビットbit[1:3]が“0
00”であれば、当該パケットがショート分岐パケット
であることを示している。bit[1:3]が“00
1”であれば、当該パケットがロング分岐パケットであ
ることを示している。bit[1:3]が“010”で
あれば、当該パケットがリピート分岐パケットであるこ
とを示している。 【0051】パケット識別ビットbit[1:3]が
“100”であれば、当該パケットがショートデータパ
ケットであることを示している。bit[1:3]が
“101”であれば、当該パケットがロングデータパケ
ットであることを示している。bit[1:3]が“1
11”であれば、当該パケットが混在データパケットで
あることを示している。なお、bit[1:3]が“0
11”または“110”の場合は未定義であるが、他の
データフォーマットのパケットが適宜割当てられても良
い。 【0052】再び、図2のパケットフォーマットの説明
に戻る。分岐パケットは、後述するように分岐トレース
情報生成部2から出力された分岐トレース情報に基づい
て生成され、命令実行部6において実行された命令をト
レースするためのパケットである。 【0053】命令実行部6は、ジャンプ命令の実行や割
込みの発生がない限り、連続した命令を順番に実行し続
ける。したがって、分岐命令の実行や割り込みの発生
(以下、シーケンス変更の発生と呼ぶ。)の直前に実行
した命令(以下、分岐元命令と呼ぶ。)と、シーケンス
変更の発生の直後に実行した命令(以下、分岐先命令と
呼ぶ。)とを特定できれば、実行された全ての命令を知
ることができる。シーケンス変更が発生してから、次の
シーケンス変更が発生するまでの間は、その間に連続し
て配置されている命令が実行されるからである。分岐パ
ケットは、シーケンス変更が発生する毎に出力され、分
岐元命令を特定するための分岐元情報と、分岐先命令を
特定するための分岐先情報とを含む。 【0054】図2(a)に示すショート分岐パケット
は、4ビットの分岐元情報のみを含んでいる。この4ビ
ットの分岐元情報は、直前に出力された分岐パケットに
よって指し示された分岐先命令からの相対アドレスによ
って、分岐元命令を指し示したものである。このショー
ト分岐パケットには、分岐先情報は含まれない。その理
由は、たとえば分岐先がプログラム中に明示されてお
り、かつプログラムがROMに格納されている場合に
は、命令トレースを行なう際に分岐先命令が一意に決定
されるため、情報量を減らすために分岐先情報を省略し
たことによるものである。 【0055】図2(b)に示すロング分岐パケットは、
8ビットまたは32ビットの分岐元情報と、0ビットま
たは32ビットの分岐先情報と、これら2つの情報が何
ビットであるかを示す4ビットの補助フォーマットコー
ド(以下、補助FMコードと呼ぶ。)とを含む。 【0056】分岐元情報が8ビットの場合、下位4ビッ
トにはショート分岐パケットと同様に分岐元命令を指し
示す相対アドレスが格納され、残りの4ビットはゼロ拡
張される。分岐元情報が32ビットの場合、分岐元命令
を指し示す32ビットの絶対アドレスが格納される。 【0057】分岐先情報が0ビットとは、ショート分岐
パケットと同様に分岐先命令が一意に決定されるとき
に、情報量を減らすために分岐先情報を省略した場合で
ある。分岐先情報が32ビットの場合、分岐先命令を指
し示す32ビットの絶対アドレスが格納される。 【0058】図4は、補助FMコードの一例を示す図で
ある。補助FMコードは、分岐元情報のビット数を示す
1ビットの分岐元情報サイズと、分岐先情報のビット数
を示す1ビットの分岐先情報サイズと、2ビットのリピ
ートレジスタ番号とを含む。 【0059】図4(a)に示すように、分岐元情報サイ
ズが“0”の場合には、分岐元情報が8ビットであり、
前回の分岐パケットによって指し示される分岐先命令と
の相対アドレスが分岐元情報に格納されることを示して
いる。分岐元情報サイズが“1”の場合には、分岐元情
報が32ビットであり、分岐元命令を指し示す32ビッ
トの絶対アドレスが分岐元情報に格納されることを示し
ている。 【0060】図4(b)に示すように、分岐先情報サイ
ズが“0”の場合には、分岐先情報が省略されているこ
とを示している。分岐先情報サイズが“1”の場合に
は、分岐先情報が32ビットであり、分岐先命令を指し
示す32ビットの絶対アドレスが分岐先情報に格納され
ることを示している。 【0061】再び、図2(b)のパケットフォーマット
の説明に戻る。補助FMコードに含まれるリピートレジ
スタ番号は、ロング分岐パケットに必ず与えられ、次に
説明するリピート分岐パケットによって参照される。な
お、このリピートレジスタ番号の生成については、後述
する。 【0062】図2(c)に示すリピート分岐パケット
は、2ビットの未使用ビットと、2ビットのリピートレ
ジスタ番号とを含む。このリピート分岐パケットは、同
じリピートレジスタ番号を有し、かつ最も新しく出力さ
れたロング分岐パケットと同じ内容のシーケンス変更が
再度発生したことを示している。したがって、分岐元情
報と分岐先情報とが省略される。 【0063】データパケットは、データトレース情報生
成部3から出力されたデータトレース情報に基づいて生
成され、命令実行部6がメモリ空間に対して行なうオペ
ランドアクセスが、予め設定された条件と一致する場合
に出力される。このオペランドアクセスには、入出力装
置へのアクセスやキャッシュメモリへのアクセスが含ま
れるが、命令のフェッチは含まれない。 【0064】図2(d)に示すショートデータパケット
は、4ビットのアクセス情報と、2ビットの条件クラス
タ番号(条件#)と、14ビットのアドレス情報(Ad
dr14)とを含む。アクセス情報は、予め設定された
条件と一致したオペランドアクセスがリードまたはライ
トの何れであったか、およびオペランドアクセスがライ
トの場合にどのバイトに書込みが行なわれたかを示して
いる。 【0065】図5は、アクセス情報の一例を示す図であ
る。アクセス情報[4:7]が“0000”の場合に
は、オペランドアクセスがリードアクセスであったこと
を示している。また、アクセス情報[4:7]の“00
01”〜“0111”は未使用である。 【0066】アクセス情報[4]が“1”の場合には、
オペランドアクセスがライトアクセスであったことを示
しており、アクセス情報[5:7]によってどのバイト
に書込みが行なわれたかを示している。たとえば、アク
セス情報[5:7]が“000”の場合には、4バイト
のうち最下位の1バイトのみにライトアクセスがあった
ことを示している。BC(バイトコントロール)は、ど
のバイトに書込みがあったかを示しており、“1”に対
応するバイトに書込みがあったことを示している。な
お、アクセス情報[4:7]の“1111”は未使用で
ある。 【0067】再び、図2(d)のパケットフォーマット
の説明に戻る。条件クラスタ番号は、このデータパケッ
トが、複数指定されている条件のどの条件と一致するか
を示している。アドレス情報は、条件に一致したオペラ
ンドアクセスのアドレスの下位14ビットを示してい
る。 【0068】図2(e)に示すロングデータパケット
は、4ビットのアクセス情報と、32ビットのアドレス
情報(Addr32)と、32ビットのデータ情報(D
ata32)とを含む。アクセス情報は、ショートデー
タパケットに含まれるものと同様である。32ビットの
アドレス情報は、条件に一致したオペランドアクセスの
アドレスを示している。32ビットのデータ情報は、条
件に一致したオペランドアクセスのデータを示してい
る。 【0069】図2(f)に示す混在データパケットは、
4ビットのアクセス情報と、32ビットのアドレス情報
(Addr32)と、32ビットのデータ情報(Dat
a32)と、32ビットの命令アドレス情報とを含む。
アクセス情報、アドレス情報およびデータ情報は、ロン
グデータパケットに含まれるものと同様である。命令ア
ドレス情報は、条件に一致したオペランドアクセスを実
行した命令の絶対アドレスを示している。 【0070】図6は、本発明の実施の形態1における命
令実行部6の概略構成を示すブロック図である。この命
令実行部6は、メモリ部7からフェッチした命令を実行
するCPU部61と、命令キャッシュ62と、データキ
ャッシュ63と、CPU部61からのアクセス要求に応
じてメモリ部7、命令キャッシュ62またはデータキャ
ッシュ63に対するアクセスを行なうCPUインタフェ
ース部64と、CPU部61の命令実行状況をモニタし
て命令実行情報を生成して出力する命令実行情報生成部
65と、CPU61のオペランドアクセス状況をモニタ
してデータアクセス情報を生成して出力するデータアク
セス情報生成部66とを含む。 【0071】CPU部61は、一般的なマイクロプロセ
ッサによって構成され、メモリ部7からフェッチした命
令に従って算術演算、論理演算、分岐などの処理を実行
する。また、CPU部61は、メモリ部7からデータを
読込むロード処理や、メモリ部7にデータを書込むスト
ア処理を実行する。これらロード処理やストア処理、お
よび命令フェッチは、CPUインタフェース部64を介
して行なわれる。一般に、メモリ部7に対するロード処
理やストア処理には多くのクロックサイクルを要するの
で、効率的な処理を行なうために命令実行部6内に命令
キャッシュ62およびデータキャッシュ63が設けられ
ている。なお、命令キャッシュ62およびデータキャッ
シュ63の動作は一般的なものであるので、詳細な説明
は行なわない。 【0072】CPU部61が実行する命令は、2バイト
または4バイトの2種類のフォーマットを有する。本実
施の形態においては、命令とデータとが同じアドレス空
間に配置されるユニファイドメモリタイプであり、32
ビットのアドレス空間を有するが、これに限られるもの
ではない。また、処理のスループットを向上させるため
に、命令の実行をパイプライン化するものとする。 【0073】図7は、本発明の実施の形態1におけるC
PU部61のパイプライン処理を説明するための図であ
る。まず、各パイプラインステージの機能の概略につい
て説明する。 【0074】命令フェッチ(I)ステージは、メモリ部
7または命令キャッシュ62から命令をフェッチするス
テージである。メモリ部7に格納されている命令をフェ
ッチする場合など、アクセス速度が低いメモリから命令
をフェッチする場合には、複数のサイクルを要すること
がある。 【0075】命令デコード(D)ステージは、Iステー
ジでフェッチされた命令をデコードし、命令の種類を判
別することによって、命令実行の準備を行なう。 【0076】命令実行(E)ステージは、Dステージに
おけるデコード結果に応じて、演算やデータ転送などの
処理を実行する。本実施の形態において命令の実行を開
始するという場合には、Eステージや次に説明するAス
テージの処理を開始することを示すものとする。 【0077】アドレス計算(A)ステージは、ロード命
令やストア命令などの場合に、Eステージに代わって実
行されるステージであり、ストアデータ、ロードデー
タ、アクセスアドレス、バイトコントロール信号および
アクセスモード信号を生成する。 【0078】メモリアクセス(M)ステージは、ロード
命令やストア命令でのみ実行されるステージであり、メ
モリ部7やデータキャッシュ63に対するオペランドア
クセスを行なう。メモリ部7にアクセスする場合など、
アクセス速度が低いメモリに対してアクセスする場合に
は、複数のサイクルを要することがある。 【0079】ライトバック(W)ステージは、演算結
果、転送結果またはロード命令によって読出されたデー
タを所定のレジスタに格納する。サブルーチンコールの
場合には、戻り先命令のアドレスをリンクレジスタに格
納する。 【0080】図7(a)は、ADD命令のパイプライン
処理を示しており、4つのパイプラインステージ(I,
D,E,W)を含んでいる。このADD命令は、レジス
タRdの値とレジスタRsの値とを符号付加算し、その
加算結果をレジスタRdに格納するものである。その他
の算術演算命令、論理演算命令およびレジスタ間転送命
令も同様のパイプラインによって実行される。 【0081】図7(b)は、BRA命令のパイプライン
処理を示しており、ADD命令と同様に、4つのパイプ
ラインステージ(I,D,E,W)を含んでいる。この
BRA命令は、Labelで示したアドレスの命令にプ
ログラムの実行を移す。BRA命令のWステージとオー
バラップして、Labelで示された命令のIステージ
が開始される。 【0082】図7(c)は、LD命令のパイプライン処
理を示しており、5つのパイプラインステージ(I,
D,A,M,W)を含んでいる。このLD命令は、レジ
スタRaの値をアドレスとしてメモリから32ビットデ
ータを読出し、このデータをレジスタRdに格納する。
この命令の他に、16ビットデータや8ビットデータを
ロードする命令(LDH,LDUH,LDB,LDU
B)も用意されており、同様のパイプラインによって実
行される。 【0083】図7(d)は、ST命令のパイプライン処
理を示しており、4つのパイプラインステージ(I,
D,A,M)を含んでいる。このST命令は、レジスタ
Raの値をアドレスとしてメモリに32ビットデータを
書込む。書込まれるデータは、レジスタRsに格納され
たものである。この命令の他に、16ビットデータや8
ビットデータを書込む命令(STH,STB)も用意さ
れており、同様のパイプラインによって実行される。 【0084】CPU部61は、上述したロード命令およ
びストア命令を実行する際に生成される信号として、ス
トアデータ、ロードデータ、アクセスアドレス、バイト
コントロールおよびアクセスモードを備えている。CP
Uインタフェース部64は、これらの信号を用いてメモ
リ部7またはデータキャッシュ63に対する制御信号を
生成し、データアクセスを実行する。 【0085】ストアデータは、メモリにストアするデー
タを出力する32ビットのデータバスである。書込むデ
ータが8ビットまたは16ビットの場合には、バイトコ
ントロール信号に対応したビット位置にのみ有効なデー
タが出力される。 【0086】ロードデータは、メモリから読出したデー
タを受取るための32ビットのデータバスである。 【0087】アクセスアドレスは、アクセス対象となる
32ビットデータを指し示すアドレスを出力するアドレ
スバスである。 【0088】バイトコントロール信号は、アクセスアド
レスによって指し示された32ビットのデータの中で、
アクセスの対象となるバイト位置を示す信号である。4
バイトアクセスの場合には4つのバイトが全てアクセス
対象となるように、2バイトアクセスの場合には2つの
バイトのみがアクセス対象となるように、1バイトアク
セスの場合には1つのバイトのみがアクセス対象となる
ようにバイトコントロール信号が出力される。 【0089】アクセスモード信号は、アクセスがリード
であるか、ライトであるかを示す信号である。 【0090】命令実行情報生成部65は、CPU部61
の命令実行状況をモニタし、分岐トレース情報生成部2
へ出力する命令実行情報を生成する。命令実行情報生成
部65が生成する命令実行情報には、命令実行開始信号
と、実行命令アドレスと、実行命令サイズ信号と、シー
ケンス変更信号と、直接分岐信号とが含まれる。 【0091】命令実行開始信号は、CPU部61が新し
い命令の実行を開始したことを示す信号であり、新しい
命令のEステージまたはAステージが処理を開始した次
のサイクルでアサートされる。命令実行情報生成部65
は、CPU部61のパイプライン制御信号を参照するこ
とによって、容易に命令実行開始信号を生成することが
可能である。 【0092】実行命令アドレスは、命令実行開始信号と
同時に生成され、CPU部61が実行を開始した命令の
アドレスを32ビットで示すものである。この実行命令
アドレスは、次の命令の実行を開始するまで、最後に実
行した命令のアドレス値を保持する。CPU部61は、
割込みからの戻り先命令や例外を引き起こした命令の特
定、またはPC相対ジャンプのアドレス計算などのため
に、EステージまたはAステージにおいて実行中の命令
を指し示す命令アドレス値を保持している。したがっ
て、命令実行情報生成部65は命令実行開始信号のアサ
ート時において、この実行命令アドレスを容易に出力す
ることができる。 【0093】実行命令サイズ信号は、命令実行開始信号
と同時に生成され、CPU部61が実行を開始した命令
のサイズを示す信号である。実行命令サイズ信号が
“0”の場合は、命令のサイズが2バイトであることを
示す。また、実行命令サイズ信号が“1”の場合は、命
令のサイズが4バイトであることを示す。CPU部61
は、命令をデコードする際にその命令が2バイトである
か4バイトであるかを示す信号を生成する。したがっ
て、命令実行情報生成部65は、この信号を保持して命
令実行開始信号の出力と同じタイミングで出力すること
により、実行命令サイズ信号を生成することができる。 【0094】シーケンス変更信号は、CPU部61が命
令シーケンスの変更を伴う処理を実行することを示す信
号である。CPU部61において、シーケンス変更が発
生する要因が2種類ある。その要因の1つは、ジャンプ
命令、サブルーチンコール命令、後述するEIT処理か
らのリターン命令などの実行のように、明示的にプログ
ラムの実行順序を変える場合である。これらの命令を総
称して、分岐命令と呼ぶことにする。シーケンス変更信
号は、実際に分岐処理が実行された場合にのみアサート
される。条件ジャンプ命令において条件が成立しなかっ
た場合には、シーケンス変更信号はアサートされない。 【0095】もう1つの要因は、例外や割込みの発生、
およびOS(Operating system)などで使用されるトラ
ップ命令の実行である。これらを総称して、EITと呼
ぶことにする。EITの受付は、検出、判定および実行
の3サイクルで行なわれる。検出サイクルにおいて、C
PU部61は受付可能なEIT要求があることを検出
し、この検出以降は新しい命令の実行を開始しない。判
定サイクルにおいては、複数のEIT要求が検出された
場合に、どの要求を受付けるべきかを優先度に応じて判
定する。実行サイクルにおいては、受付けたEITに対
応した命令アドレスへのジャンプを実行する。この実行
は、分岐命令のEステージで行なわれる処理に相当す
る。 【0096】CPU部61は、分岐命令の実行開始を示
す信号、分岐条件が成立したか否かを示す信号、および
EITの実行サイクルを示す信号を出力する。命令実行
情報生成部65は、これらの信号に基づいてシーケンス
変更信号を生成する。シーケンス変更信号の出力タイミ
ングは、分岐命令の場合にはWステージであり、EIT
の場合にはEIT実行サイクルの次のサイクルである。 【0097】直接分岐信号は、CPU部61において発
生したシーケンス変更が、プログラム中に即値で分岐先
が明記された分岐(以下、直接分岐と呼ぶ。)命令によ
って引き起こされたものであるか否かを示す信号であ
る。直接分岐が実行された場合には、シーケンス変更信
号と同時に直接分岐信号がアサートされる。分岐先がレ
ジスタ中に格納されている分岐(間接分岐)命令の実行
時や、EITの発生時においては、この直接分岐信号は
アサートされない。これらの場合には、プログラム作成
時に分岐先命令を特定できないためである。命令実行情
報生成部65は、CPU部61のデコード結果を参照す
ることによって、この直接分岐信号を生成することがで
きる。 【0098】データアクセス情報生成部66は、CPU
部61によるロード命令やストア命令の処理をモニタ
し、データアクセス情報を生成してデータトレース情報
生成部3へ出力する。データアクセス情報は、アクセス
アドレスと、アクセスデータと、アクセスモード信号
と、バイトコントロール信号と、対象命令アドレスとを
含む。これらの信号は、ロード命令やストア命令のMス
テージが完了した次のサイクル(たとえば、ロード命令
であればWステージ)において生成される。 【0099】アクセスアドレスは、ロード命令やストア
命令においてアクセス対象としたデータがどの32ビッ
トデータ境界に含まれているかを示すアドレスである。
データアクセス情報生成部66は、CPU部61がAス
テージで生成したアドレスを保持し、Mステージの次の
サイクル(Wステージ)で出力する。 【0100】アクセスデータは、ロード命令によって読
出された32ビットのデータ、またはストア命令によっ
て書込まれた32ビットのデータを示している。ストア
命令の場合、データアクセス情報生成部66は、CPU
部61がAステージで生成したストアデータを保持し、
Mステージの次のサイクル(Wステージ)で出力する。
ロード命令の場合、データアクセス情報生成部66は、
CPU部61がWステージでレジスタに書込もうとする
データをアクセスデータとして出力する。 【0101】アクセスモード信号は、ロード命令である
かストア命令であるかを示す信号である。データアクセ
ス情報生成部66は、CPU部61がAステージで生成
したアクセスモード信号を保持し、Mステージの次のサ
イクル(Wステージ)で出力する。 【0102】バイトコントロール信号は、読出し対象ま
たは書込み対象のデータのサイズとバイト位置とを示す
信号である。データアクセス情報生成部66は、CPU
部61がAステージで生成したバイトコントロール信号
を保持し、Mステージの次のサイクル(Wステージ)で
出力する。 【0103】対象命令アドレスは、メモリアクセスの原
因となったロード命令やストア命令の命令アドレスを示
している。データアクセス情報生成部66は、CPU部
61がAステージで保持していた命令アドレスを保持
し、Mステージの次のサイクル(Wステージ)で出力す
る。 【0104】図8は、分岐トレース情報生成部2の概略
構成を示すブロック図である。この分岐トレース情報生
成部2は、分岐トレース情報生成部2全体の制御を行な
う分岐トレース制御部21と、差分アドレス生成部22
と、命令アドレスレジスタ23と、シーケンス変更が発
生したときの分岐元情報を生成する分岐元情報生成部2
4と、シーケンス変更が発生したときの分岐先情報を生
成する分岐先情報生成部25と、分岐元情報および分岐
先情報から分岐トレース情報を生成して出力する分岐ト
レース情報出力部26とを含む。 【0105】分岐トレース制御部21は、図示しない制
御レジスタおよび命令実行情報の値に基づいて、分岐ト
レース情報生成部2全体の動作を制御する。制御レジス
タには、分岐トレースイネーブルレジスタと、分岐先情
報モードレジスタと、絶対情報モードレジスタとが含ま
れ、分岐トレース情報生成部2内に設けられたJTAG
を介して外部機器からこれらのレジスタに対するアクセ
スが可能である。 【0106】分岐トレースイネーブルレジスタは、分岐
トレース情報を生成するか否かを指定するためのレジス
タであり、分岐トレースイネーブル、補助トレースイネ
ーブルおよび分岐トレースディスエーブルの3つの状態
を指定可能である。分岐トレースディスエーブルが指定
されている場合には、分岐トレース情報生成部2は一切
の動作を行なわない。 【0107】分岐元命令が特定のアドレス範囲に含まれ
ている場合には、直接分岐時においても絶対アドレスで
分岐先情報を生成することが可能である。分岐先情報モ
ードレジスタは、このような機能を有効とするか無効と
するかを指定するフィールドと、この機能が有効な場合
に特定アドレス範囲の上限と下限とを指定するフィール
ドとを含んでいる。 【0108】絶対情報モードレジスタは、N回に1回は
分岐元情報と分岐先情報とを絶対アドレスで生成する機
能を有効とするか、無効とするかを指定するフィールド
と、この機能が有効な場合にNの値を指定するフィール
ドとを含んでいる。 【0109】差分アドレス生成部22は、実行命令カウ
ンタ221と、一時保持カウントレジスタ222と、差
分アドレスレジスタ223とを含み、あるシーケンス変
更から次のシーケンス変更までに実行された命令の総数
を示す差分アドレスを生成して分岐元情報生成部24へ
出力する。 【0110】実行命令カウンタ221は、シーケンス変
更信号がアサートされると初期化され、命令実行開始信
号がアサートされると、実行命令サイズ信号に応じて2
または4だけインクリメントされる。一時保持カウント
レジスタ222は、命令実行開始信号がアサートされる
と、インクリメントする前の実行命令カウンタ221の
値を格納する。 【0111】差分アドレスレジスタ223は、シーケン
ス変更信号がアサートされた直後にアサートされる命令
実行開始信号に応じて、一時保持カウントレジスタ22
2の値を取込み、差分アドレスとして分岐元情報生成部
24へ出力する。 【0112】命令アドレスレジスタ23は、アドレス一
時保持レジスタ231と、分岐元アドレスレジスタ23
2と、分岐先アドレスレジスタ233とを含み、シーケ
ンス変更が生じたときの分岐元アドレスと分岐先アドレ
スとを出力する。 【0113】アドレス一時保持レジスタ231は、シー
ケンス変更信号がアサートされると、命令実行部6から
出力される実行命令アドレスを格納する。分岐元アドレ
スレジスタ232は、シーケンス変更信号がアサートさ
れた直後にアサートされる命令実行開始信号に応じて、
アドレス一時保持レジスタ231の値を格納し、分岐元
アドレスとして分岐元情報生成部24へ出力する。ま
た、分岐先アドレスレジスタ233は、シーケンス変更
信号がアサートされた直後にアサートされる命令実行開
始信号に応じて、命令実行部6から出力される実行命令
アドレスを格納し、分岐先アドレスとして分岐先情報生
成部25へ出力する。 【0114】分岐元情報生成部24は、分岐元命令の絶
対アドレスを用いて分岐元情報を生成するか、既知の命
令からの相対アドレスを用いて分岐元情報を生成するか
を選択する。絶対アドレスが選択された場合には、分岐
元情報生成部24は、分岐元アドレスレジスタ232か
ら出力される32ビットの分岐元アドレスを用いて32
ビットフォーマットの分岐元情報を生成して分岐トレー
ス情報出力部26へ出力する。 【0115】相対アドレスが選択された場合には、分岐
元情報生成部24は、差分アドレスレジスタ223から
出力される差分アドレスを1ビット右シフトし、その下
位4ビットから4ビットフォーマットの分岐元情報を生
成して分岐トレース情報出力部26へ出力する。差分ア
ドレスを1ビット右シフトするのは、命令の最小単位が
2バイトであるため、不要な最下位ビットを除去するた
めである。基本的には、差分アドレスを1ビット右シフ
トした結果が16未満であれば、相対アドレスが選択さ
れる。 【0116】ただし、絶対情報モードレジスタの機能が
有効であり、かつ絶対アドレスによる分岐トレース情報
を生成する順番に当たっている場合(後述する絶対情報
フラグがセットされている場合)には、絶対アドレスが
選択される。 【0117】分岐先情報生成部25は、分岐先情報を3
2ビットの絶対アドレスで生成するか、または分岐先情
報を生成しないかを選択する。分岐先情報を32ビット
の絶対アドレスで生成する場合には、分岐先アドレスレ
ジスタ233に格納される分岐先アドレスが使用され
る。基本的には、直接分岐信号がアサートされている場
合には、分岐先情報は生成されない。 【0118】ただし、分岐先情報モードレジスタの機能
が有効であり、かつ分岐元命令が所定範囲内の場合、お
よび絶対情報モードレジスタの機能が有効であり、かつ
絶対アドレスによる分岐トレース情報を生成する順番に
当たっている場合には、分岐先情報が絶対アドレスで生
成される。 【0119】図9は、分岐トレース情報出力部26の概
略構成を示すブロック図である。この分岐トレース情報
出力部26は、4つのリピート情報レジスタ262a〜
262dと、分岐トレース情報生成器263と、分岐ト
レースカウンタ264とを含む。また、リピート情報レ
ジスタ262a〜262dのそれぞれは、レジスタ26
5と比較器266とを含む。 【0120】仮の分岐トレース情報は、分岐元情報生成
部24から出力される分岐元情報と、分岐先情報生成部
25から出力される分岐先情報とを併せて生成した情報
である。分岐元情報と分岐先情報との何れかに絶対アド
レスが含まれている場合、仮の分岐トレース情報が4つ
のリピート情報レジスタ262a〜262dに与えら
れ、仮の分岐トレース情報とリピート情報レジスタ26
2a〜262d内のレジスタ265に保持される情報と
が比較される。 【0121】4つの比較結果が全て不一致の場合には、
最も古いデータを保持しているリピート情報レジスタ内
のレジスタ265に、仮の分岐トレース情報を格納す
る。ただし、後述する入力オーバフローが生じた場合に
は、仮の分岐トレース情報の格納は行なわれない。 【0122】また、リピート情報レジスタ262a〜2
62dが保持しているデータの何れかが、仮の分岐トレ
ース情報と一致する場合には、一致したリピート情報レ
ジスタに仮の分岐トレース情報を格納する。同じデータ
が書き直されることになるが、4つの比較結果が全て不
一致の時に書換えるべきリピート情報レジスタの順序を
適切に制御するために、敢えて書込みを行なう。 【0123】分岐トレース情報生成器263は、以下に
示す〜の何れかの方法によって、分岐トレース情報
を生成してトレース情報出力部5へ出力する。 【0124】 分岐元情報が4ビットフォーマットで
あり、かつ分岐先情報が0ビットフォーマットの場合に
は、分岐トレース情報出力器263は分岐元情報生成部
24から出力された分岐元情報を、分岐トレース情報と
してトレース情報出力部5へ出力する。この場合は、ト
レース情報出力部5において、ショート分岐パケットが
生成される。 【0125】 分岐元情報と分岐先情報との何れかに
絶対アドレスが含まれており、かつ4つのリピート情報
レジスタ262a〜262dが保持するデータの何れか
が、仮の分岐トレース情報と一致する場合には、分岐ト
レース情報生成器263は一致したリピート情報レジス
タのレジスタ番号を分岐トレース情報としてトレース情
報出力部5へ出力する。この場合は、トレース情報出力
部5において、リピート分岐パケットが生成される。 【0126】 上記およびの何れでもない場合に
は、分岐トレース情報生成器263は、仮の分岐トレー
ス情報に、仮の分岐トレース情報を書込んだリピート情
報レジスタのレジスタ番号を付加し、これを分岐トレー
ス情報としてトレース情報出力部5へ出力する。この場
合は、トレース情報出力部5において、ロング分岐パケ
ットが生成される。 【0127】分岐トレースカウンタ264は、分岐トレ
ース情報を出力する毎にその値を更新する。分岐トレー
ス情報生成器263が、分岐元情報および分岐先情報が
共に絶対アドレスで示された分岐トレース情報を出力し
た場合には、分岐トレースカウンタ264が初期化され
る。それ以外の場合には、分岐トレースカウンタ264
はインクリメントされる。ただし、出力した分岐トレー
ス情報が、後述する入力オーバフローによって失われた
場合には、インクリメントおよび初期化が共に行なわれ
ない。 【0128】分岐トレース制御部21内の絶対情報モー
ドレジスタの機能が有効であれば、分岐トレースカウン
タ264の値が絶対情報モードレジスタに格納されてい
るトレース情報数“N”と比較される。これらが一致す
ると、図示しない絶対情報フラグがセットされ、次に出
力される分岐トレース情報として、絶対アドレスによる
分岐元情報と分岐先情報とが出力される。絶対アドレス
による分岐元情報と分岐先情報とが分岐トレース情報と
して出力されると、絶対情報フラグがクリアされる。 【0129】図10は、通常命令実行時(EITを受付
けていない状態での命令実行時)の分岐トレース情報生
成部2内部における各信号のタイミングチャートであ
る。このタイミングチャートは、3つのADD命令を実
行した後、ラベルMへ分岐して3つのADD命令を実行
するときのタイミングを示している。なお、ADD命令
は2バイト長、BRA命令は4バイト長としている。 【0130】サイクルT1において最初のADD命令が
フェッチされると、この命令のWステージで命令実行開
始信号がアサートされる(T4)。このとき、この命令
に対応する実行命令サイズと実行命令アドレス(N)と
が出力される。 【0131】サイクルT5において、2番目のADD命
令に対応して命令実行開始信号がアサートされる。この
とき、実行命令アドレスには、ADD命令のバイト長で
ある2が加算されてN+2が出力される。また、実行命
令カウンタ221の値は、ADD命令のバイト長である
2だけ加算されて、カウント値が2となる。 【0132】同様にして、サイクルT6において、3番
目のADD命令に対応して命令実行開始信号がアサート
される。このときの実行命令アドレスにはN+4が出力
され、実行命令カウンタ221のカウント値が4とな
る。 【0133】サイクルT6において、BRA命令が実行
されてシーケンス変更が発生すると、次のWステージで
シーケンス変更信号がアサートされる(T7)。BRA
命令が直接分岐であるので、同じサイクルT7で直接分
岐信号がアサートされる。このサイクルで、分岐先命令
であるADD命令のフェッチが行なわれる。 【0134】サイクルT8において、実行命令カウンタ
221が初期化される。このとき、一時保持カウントレ
ジスタ222には、サイクルT7における実行命令カウ
ンタ221の値である6が格納される。また、アドレス
一時保持レジスタ231には、実行命令アドレス値であ
るN+6が格納される。 【0135】分岐先命令であるADD命令のWステージ
で、再び命令実行開始信号がアサートされる(T1
0)。このとき、この分岐先命令に対応する実行命令サ
イズと実行命令アドレス(M)とが出力される。 【0136】サイクルT11において、分岐先命令の次
のADD命令に対応して命令実行開始信号がアサートさ
れると、差分アドレスレジスタ223は、一時保持カウ
ントレジスタ222の値6を取込み、差分アドレスとし
て出力する。このとき、分岐元アドレスレジスタ232
には、アドレス一時保持レジスタ231の値N+6が格
納される。分岐先アドレスレジスタ233には、実行命
令アドレス値Mが格納される。分岐トレース情報生成部
2は、分岐元アドレスレジスタ232に格納された分岐
元アドレスと、分岐先アドレスレジスタ233に格納さ
れた分岐先アドレスとから、分岐トレース情報を生成し
て出力する。 【0137】図11は、EIT受付時の分岐トレース情
報生成部2内部における各信号のタイミングチャートで
ある。このタイミングチャートは、2つのADD命令を
実行した後にEITが受付けられて、分岐先命令である
BRA命令を実行するときのタイミングを示している。
なお、ST命令で使用しているシンボルSP+は、スタ
ックポインタをアドレスとしてメモリへの書込みを行な
い、その後スタックポインタの値を4だけインクリメン
トすることを表している。 【0138】サイクルT3においてEITが検出される
と、2番目のADD命令以降の命令の実行は開始されな
い。サイクルT4においてEITの判定が行なわれ、ど
の要求を受付けるべきかが判定される。サイクルT5に
おいて、受付けたEITに対応した命令アドレス値Lへ
のジャンプが実行される。 【0139】サイクルT6において、シーケンス変更信
号がアサートされる。このサイクルで分岐先命令である
BRA命令のフェッチが行なわれる。なお、EITに対
応したジャンプは、直接分岐ではないため、直接分岐信
号はアサートされない。 【0140】サイクルT7において、実行命令カウンタ
221が初期化される。このとき、アドレス一時保持レ
ジスタ231には、実行命令アドレス値であるN+2が
格納される。 【0141】サイクルT8において、BRA命令が実行
されてシーケンス変更が発生すると、次のWステージで
シーケンス変更信号がアサートされる(T9)。BRA
命令が直接分岐であるので、同じサイクルT9で直接分
岐信号がアサートされる。このサイクルで、分岐先命令
であるST命令のフェッチが行なわれる。 【0142】BRA命令に対応して命令実行開始信号が
アサートされると、サイクルT10において、差分アド
レスレジスタ223は、一時保持カウントレジスタ22
2の値2を取込み、差分アドレスとして出力する。この
とき、分岐元アドレスレジスタ232には、アドレス一
時保持レジスタ231の値N+2が格納される。分岐先
アドレスレジスタ233には、実行命令アドレス値Lが
格納される。分岐トレース情報生成部2は、分岐元アド
レスレジスタ232に格納された分岐元アドレスと、分
岐先アドレスレジスタ233に格納された分岐先アドレ
スとから、分岐トレース情報を生成して出力する。 【0143】分岐先命令であるST命令のMステージ
で、再び命令実行開始信号がアサートされる(T1
2)。このとき、この分岐先命令に対応する実行命令サ
イズと実行命令アドレス(K)とが出力される。 【0144】サイクルT13において、分岐先命令の次
のST命令に対応して命令実行開始信号がアサートされ
ると、差分アドレスレジスタ223は、一時保持カウン
トレジスタ222の値0を取込み、差分アドレスとして
出力する。このとき、分岐元アドレスレジスタ232に
は、アドレス一時保持レジスタ231の値Lが格納され
る。分岐先アドレスレジスタ233には、実行命令アド
レス値Kが格納される。分岐トレース情報生成部2は、
分岐元アドレスレジスタ232に格納された分岐元アド
レスと、分岐先アドレスレジスタ233に格納された分
岐先アドレスとから、分岐トレース情報を生成して出力
する。 【0145】図12は、データトレース情報生成部3の
概略構成を示すブロック図である。このデータトレース
情報生成部3は、データトレース条件クラスタ31〜3
4と、データアクセス情報からデータトレース情報を生
成するデータトレース情報出力部35と、データトレー
ス情報生成部3全体の制御を行なうデータトレース制御
部36とを含む。 【0146】データトレース条件クラスタ31〜34
は、データトレース条件を指定するものであり、それぞ
れがコントロールレジスタ311と、比較アドレスレジ
スタ312と、アドレスマスクレジスタ313と、比較
データレジスタ314と、データマスクレジスタ315
と、アドレス比較器316と、データ比較器317とを
含んでいる。これらのレジスタは、JTAG(Joint Te
st Action Group)によって外部機器からアクセス可能
である。 【0147】データトレース条件は、データトレース条
件クラスタ31〜34に設定されるが、それぞれ独立に
データトレース条件を設定することが可能である。オペ
ランドアクセスが、1つ以上のデータトレース条件クラ
スタに設定された条件と一致する場合には、データトレ
ース条件を満たしたと判断する。 【0148】コントロールレジスタ311は、データト
レース条件を指定するか否かを示すイネーブルビットの
他に、対象とするアクセスモードおよびライトアクセス
の際に対象とするアクセスサイズを指定するフィールド
を有する。対象とするアクセスモードには、リードの
み、ライトのみ、またはリードおよびライトの両方が指
定される。アクセスサイズには、1バイトアクセスの
み、2バイトアクセスのみ、または4バイトアクセスの
みが指定される。 【0149】コントロールレジスタ311にはさらに、
オペランドアクセスが何れかのデータトレース条件クラ
スタに設定された条件と一致した場合に、ショートフォ
ーマットのパケットを生成するか、ロングフォーマット
のパケットを生成するか、または混在フォーマットのパ
ケットを生成するかを指定するフィールドを有する。 【0150】比較アドレスレジスタ312およびアドレ
スマスクレジスタ313には、対象とするオペランドア
ドレスが指定される。アドレス比較器316は、比較ア
ドレスレジスタ312の内容と、データアクセス情報に
含まれるオペランドアドレスとを比較する。その際、ア
ドレスマスクレジスタ313は、比較対象とするアドレ
スビットを指定する。 【0151】たとえば、全てのアドレスビットを比較対
象とすれば、完全にオペランドアドレスが一致する場合
のみトレース対象となる。全てのアドレスビットを比較
対象から外せば、オペランドアドレスはトレース対象と
はならない。また、最下位ビットから数ビットのみを比
較対象から外せば、特定のアドレス範囲のみがトレース
対象となる。 【0152】比較データレジスタ314およびデータマ
スクレジスタ315には、対象とするオペランドデータ
が指定される。データ比較器317は、比較データレジ
スタ314の内容と、データアクセス情報に含まれるオ
ペランドデータとを比較する。その際、データマスクレ
ジスタ315は、比較対象とするデータビットを指定す
る。 【0153】たとえば、全てのデータビットを比較対象
とすれば、完全にオペランドデータが一致する場合のみ
トレース対象となる。全てのデータビットを比較対象か
ら外せば、オペランドデータはトレース対象とはならな
い。また、特定のビットのみを比較対象に指定すること
で、目的に合致したトレース条件を設定することができ
る。 【0154】データトレース条件クラスタ31〜34
は、アドレス比較器316によってオペランドアドレス
が一致すると判定され、データ比較器317によってオ
ペランドデータが一致すると判定された場合にのみ、オ
ペランドアクセスがトレース条件に一致したと判定され
る。 【0155】データトレース情報出力部35は、トレー
ス条件に一致したと判定されたオペランドアクセスから
データトレース情報を生成してトレース情報出力部5へ
出力する。データトレース情報出力部35は、データア
クセス情報の所定ビットをエンコードすることによっ
て、アクセス条件に相当する部分を生成する。また、デ
ータトレース情報出力部35は、以下に示す〜の何
れかによって生成された情報をデータトレース情報に付
加して出力する。 【0156】 一致したトレース条件が格納されるデ
ータトレース条件クラスタの中に、混在フォーマットを
指定するものが含まれる場合には、データアクセス情報
から32ビットのアドレス情報、32ビットのデータ情
報および32ビットの命令アドレスフィールドを切出
す。 【0157】 上記以外であり、かつ一致したトレ
ース条件が格納されるデータトレース条件クラスタの中
に、ロングフォーマットを指定するものが含まれる場合
には、データアクセス情報から32ビットのアドレス情
報と32ビットのデータ情報とを切出す。 【0158】 上記および以外の場合、すなわち
一致したトレース条件が格納されるデータトレース条件
クラスタが全てショートフォーマットを指定するもので
あれば、一致したトレース条件のクラスタ番号から条件
クラスタ番号を生成し、データアクセス情報のアドレス
の下位14ビットからアドレス情報を生成する。複数の
データトレース条件クラスタに設定されたトレース条件
と一致する場合には、最も小さなクラスタ番号が選択さ
れる。なお、データトレース条件クラスタ31〜34の
それぞれのクラスタ番号を、#0〜#3とする。 【0159】図13は、トレース情報出力部5の概略構
成を示すブロック図である。このトレース情報出力部5
は、分岐FIFO51と、データFIFO52と、補助
バッファ53と、パケット生成部54と、出力FIFO
55とを含む。 【0160】分岐トレースイネーブルレジスタに補助ト
レースイネーブルが設定されている場合、分岐トレース
情報生成部2から出力された分岐トレース情報は補助バ
ッファ53に格納される。補助バッファ53に格納され
た分岐トレース情報は、データトレース情報がデータF
IFO52に転送されるときに、分岐FIFO51に転
送される。分岐FIFO51に転送されるのは、次の
またはの条件を満たす分岐トレース情報である。 【0161】 新しくデータトレース情報がデータF
IFO52に転送された時点で、補助バッファ53に格
納されていた分岐トレース情報。 【0162】 新しくデータトレース情報がデータF
IFO52に転送されるのと同時に補助バッファ53に
格納された分岐トレース情報、またはデータトレース情
報がデータFIFO52に転送された後に補助バッファ
53に格納された1個の分岐トレース情報。 【0163】このまたはの条件を満たす前に次の分
岐トレース情報が補助バッファ53に転送された場合、
補助バッファ53の内容は次の分岐トレース情報によっ
て上書きされる。結果として、データトレース情報の前
後1個ずつの分岐トレース情報だけが分岐FIFO51
に転送されることになる。 【0164】分岐トレースイネーブルレジスタに分岐イ
ネーブルが設定されている場合には、分岐トレース情報
は補助バッファ53を介さずに、直接分岐FIFO51
に格納される。なお、データトレース情報生成部3から
出力されたデータトレース情報は、必ずデータFIFO
52に格納される。 【0165】パケット生成部54は、分岐トレースFI
FO51に格納された分岐トレース情報およびデータF
IFO52に格納されたデータトレース情報から、図2
(a)〜図2(f)に示すトレースパケットを生成す
る。パケット生成部54によって生成されたトレース情
報は、一旦出力FIFO55に格納された後、トレース
情報の出力に使用されるピン数に応じたデータに分割さ
れ、トレース情報として出力される。本実施の形態にお
いては、トレース情報の出力に8本のピンが使用され
る。分岐FIFO51およびデータFIFO52の何れ
にもデータが存在する場合には、パケット生成部54は
何れかのFIFOから適当にデータを読込んで、トレー
ス情報を生成すればよい。なお、本実施の形態において
は、以下に示す優先順位を持ったラウンドロビン方式を
採用する。 【0166】分岐FIFO51>データFIFO52 分岐FIFO51またはデータFIFO52がフル状態
の時に、次の分岐トレース情報またはデータトレース情
報が転送された場合は、その転送された分岐トレース情
報またはデータトレース情報は失われる。これを入力オ
ーバフローと呼ぶことにする。入力オーバフローが発生
した場合には、分岐FIFO51またはデータFIFO
52は、入力オーバフロー後に格納された最初の分岐ト
レース情報またはデータトレース情報に入力オーバフロ
ーフラグをセットする。 【0167】パケット生成部54は、読込んだデータに
入力オーバフローフラグがセットされていると、生成し
たトレースパケットのオーバフローフラグをセットす
る。なお、出力FIFO55がフル状態の場合には、パ
ケット生成部54は分岐FIFO51およびデータFI
FO52からデータを読込まない。 【0168】本実施の形態においては、直接分岐の際に
分岐トレースパケットから分岐先情報を省略して、デー
タ量を削減するようにした。しかし、直接分岐であり、
かつ無条件分岐の場合には、分岐することが明らかであ
る。したがって、このような場合には、分岐トレース情
報生成部2が分岐トレース情報自体を生成しないようし
て分岐トレースパケットが生成されないようにすれば、
さらにデータ量を削減することが可能である。 【0169】また、補助バッファ53に分岐トレース情
報を格納することによって、データトレース情報の前後
に1個ずつの分岐パケットを生成するようにしたが、デ
ータトレース情報の前に1個だけ分岐パケットを生成す
るようにしても良いし、データトレース情報の後に1個
だけ分岐パケットを生成するようにしても良い。また、
N個のデータトレース情報を出力した後、M個の分岐ト
レース情報を出力するようにしても良い。これらの方法
は、トレース情報出力部5にデータトレース情報と分岐
トレース情報とをカウントするカウンタを設けることに
よって、容易に実現可能である。 【0170】また、分岐パケットを生成するトリガとし
て、全てのデータトレース情報が転送されるタイミング
を用いたが、たとえばデータトレース条件クラスタ31
〜34に補助トレースを起動するか否かを指定するレジ
スタを設け、その条件を満たすデータトレース情報が転
送された場合にのみ補助トレースを起動するようにすれ
ば、特定のデータトレース情報に対応した分岐トレース
情報のみを出力することが可能となる。 【0171】以上説明したように、本実施の形態におけ
るトレース情報生成装置によれば、プログラム中に分岐
先が明示されている直接分岐などの場合には、分岐パケ
ットから分岐先情報を省略するようにしたので、分岐ト
レース情報を圧縮することができ、データ量を削減する
ことが可能となった。 【0172】ただし、プログラム中の分岐先を示した領
域の内容が書換えられる可能性があるので、所定のアド
レス領域に対しては、直接分岐の場合であっても絶対ア
ドレスによる分岐先情報を分岐パケットに含めるように
した。これによって、プログラムが書換えられる可能性
のあるRAM領域を分岐元とする場合には直接分岐であ
っても分岐先情報を分岐パケットに含め、プログラムが
書換えられる可能性がないROM領域を分岐元とする場
合には分岐先情報を省略するといった柔軟な設定を可能
とした。 【0173】また、分岐トレース情報の分岐元情報を、
直前の分岐トレース情報によって指し示される分岐先命
令からの相対アドレスで表せるようにしたので、分岐ト
レース情報を圧縮することができ、データ量をさらに削
減することが可能となった。 【0174】また、所定回数の分岐トレース情報を出力
する毎に、必ず絶対アドレスによる分岐トレース情報を
出力するようにしたので、分岐トレース情報の容量がト
レースメモリの容量を越えてしまい、古い情報が失われ
た場合であっても、絶対アドレスによる分岐トレース情
報を元にして正しい命令実行を復元することが可能とな
った。 【0175】また、ループ処理のように同じ分岐処理を
繰返し、同じ分岐トレース情報が何度も出力されるよう
な場合には、分岐先情報および分岐元情報を省略したリ
ピート分岐パケットが出力されるようにしたので、分岐
トレース情報を圧縮することができ、データ量をさらに
削減することが可能となった。 【0176】また、データパケットにオペランドアクセ
スを起動した命令の命令アドレスを含めるようにしたの
で、プログラム中のどの命令によって注目するオペラン
ドアクセスが実行されたかを特定することが可能となっ
た。 【0177】さらには、注目するオペランドアクセスが
生じたことをトリガとして、所定回数の分岐トレース情
報を生成するようにしたので、データパケットに命令ア
ドレスを含めなくても、プログラム中のどの命令によっ
て注目するオペランドアクセスが実行されたかを特定す
ることが可能となった。 【0178】(実施の形態2)本発明の実施の形態2に
おけるデバッグ装置は、実施の形態1におけるデバッグ
装置と比較して、図6に示す命令実行情報生成部65の
機能が異なる点のみが異なる。したがって、重複する構
成および機能の詳細な説明は繰返さない。なお、本発明
の実施の形態2における命令実行情報生成部の参照符号
を65’として説明する。 【0179】実施の形態1における命令実行情報生成部
65は、分岐先がプログラム中に明示されている場合の
み直接分岐としたが、本実施の形態における命令実行情
報生成部65’は、以下のまたはの場合にも直接分
岐として扱うことによって、分岐パケットをさらにデー
タ圧縮したものである。 【0180】 サブルーチンコールから復帰するリタ
ーン命令において、サブルーチンコール命令の実行から
リターン命令の実行までの間に、戻り先番地を格納する
リンクレジスタに書込みが生じなかった場合、リターン
命令を直接分岐として扱う。 【0181】CPU部61は、サブルーチンコール命令
の実行を示す信号、リターン命令の実行を示す信号、お
よびリンクレジスタに値を書込む命令の実行を示す信号
を出力する。これらの信号は、命令のデコード結果から
容易に生成することが可能である。 【0182】命令実行情報生成部65’は、サブルーチ
ンコール命令が実行された場合にセットされ、リンクレ
ジスタに値を書込む命令が実行された場合にクリアされ
るフラグを備える。命令実行情報生成部65’は、リタ
ーン命令実行時においてこのフラグがセットされていれ
ば、リターン命令に対応するシーケンス変更信号の出力
と同時に、直接分岐信号を出力する。 【0183】 割込みから復帰するリターン割込み命
令において、割込みの発生からリターン割込み命令の実
行までの間に、戻り先番地を格納するバックアップPC
レジスタに書込みが生じなかった場合、リターン割込み
命令を直接分岐として扱う。 【0184】CPU部61は、割込みの発生を示す信
号、リターン割込み命令の実行を示す信号、およびバッ
クアップPCレジスタに値を書込む命令の実行を示す信
号を出力する。これらの信号は、命令のデコード結果か
ら容易に生成することが可能である。 【0185】命令実行情報生成部65’は、割込みが発
生した場合にセットされ、バックアップPCレジスタに
値を書込む命令が実行された場合にクリアされるフラグ
を備える。命令実行情報生成部65’は、リターン割込
み命令実行時においてこのフラグがセットされていれ
ば、リターン割込み命令に対応するシーケンス変更信号
の出力と同時に、直接分岐信号を出力する。 【0186】以上説明したように、本実施の形態におけ
るデバッグ装置によれば、所定の条件を満たす命令を直
接分岐として扱うことによって、分岐パケットをさらに
データ圧縮することができ、トレース情報のデータ量を
さらに削減することが可能となった。 【0187】今回開示された実施の形態は、すべての点
で例示であって制限的なものではないと考えられるべき
である。本発明の範囲は上記した説明ではなくて特許請
求の範囲によって示され、特許請求の範囲と均等の意味
および範囲内でのすべての変更が含まれることが意図さ
れる。 【0188】 【発明の効果】請求項1に記載のトレース情報生成装置
によれば、分岐トレース情報生成部が、対象となる処理
の分岐元情報および分岐先情報のうち少なくとも一部を
省略した分岐トレース情報を生成するので、トレース情
報のデータ量を削減することが可能となった。 【0189】請求項2に記載のトレース情報生成装置に
よれば、対象となる処理が分岐先がプログラムに明記さ
れる直接分岐の場合には、分岐トレース情報生成部が分
岐先情報を省略した分岐トレース情報を生成するので、
トレース情報のデータ量をさらに削減することが可能と
なった。 【0190】請求項3に記載のトレース情報生成装置に
よれば、対象となる処理が分岐先がプログラムに明記さ
れる直接分岐であり、かつ無条件分岐の場合には、分岐
トレース情報生成部が分岐トレース情報を生成しないの
で、トレース情報が生成されて出力されることがなくな
り、トレース情報のデータ量をさらに削減することが可
能となった。 【0191】請求項4に記載のトレース情報生成装置に
よれば、分岐先情報を含んだ分岐トレース情報と、分岐
先情報を含まない分岐トレース情報とを選択して生成す
るといった、柔軟な設定が可能となった。 【0192】請求項5に記載のトレース情報生成装置に
よれば、プログラムによって書換えられる可能性のある
アドレス領域を分岐元とする場合には分岐先情報を含ん
だ分岐トレース情報を生成し、プログラムによって書換
えられる可能性のないアドレス領域を分岐元とする場合
には分岐先情報を含まない分岐トレース情報を生成する
といった、柔軟な設定が可能となった。 【0193】請求項6に記載のトレース情報生成装置に
よれば、割込み処理やサブルーチンのリターン命令など
の場合に、トレース情報のデータ量を削減することが可
能となった。 【0194】請求項7に記載のトレース情報生成装置に
よれば、分岐トレース情報生成部が、分岐元情報を相対
アドレスで生成するので、トレース情報のデータ量をさ
らに削減することが可能となった。 【0195】請求項8に記載のトレース情報生成装置に
よれば、トレース情報の一部が失われた場合でも、絶対
アドレスの分岐元情報を含んだ分岐トレース情報に基づ
いて、プロセッサによる命令実行を正しく復元すること
が可能となった。 【0196】請求項9に記載のトレース情報生成装置に
よれば、分岐トレース情報生成部が、先に生成した分岐
トレース情報を指し示す情報を含み、分岐元情報および
分岐先情報を省略した分岐トレース情報を生成するの
で、分岐トレース情報に分岐元情報と分岐先情報とが含
まれなくなり、トレース情報のデータ量をさらに削減す
ることが可能となった。 【0197】請求項10に記載のトレース情報生成装置
によれば、対象となる処理の分岐トレース情報が、複数
の履歴保持レジスタに保持される分岐トレース情報のい
ずれかと一致する場合には、当該履歴保持レジスタのレ
ジスタ番号を含んだパケットを生成して分岐トレース情
報として出力するので、外部のコンピュータ等が分岐元
情報および分岐先情報を含まない分岐トレース情報を取
得したときに、その分岐トレース情報が先に生成された
分岐トレース情報のいずれと一致するかを容易に知るこ
とができる。 【0198】請求項10に記載のトレース情報生成装置
によれば、データアクセス情報がデータトレース条件ク
ラスタに設定されたデータトレース条件と一致する場合
に、データトレース情報生成部がデータトレース情報を
生成するので、外部のコンピュータ等は注目するオペラ
ンドアクセスが実行されたことを認識することが可能と
なった。 【0199】請求項11に記載のトレース情報生成装置
によれば、データトレース情報生成部が、データトレー
ス条件クラスタに設定されたデータトレース条件と一致
したオペランドアクセスを起動した命令のアドレスを含
んだデータトレース情報を生成するので、外部のコンピ
ュータ等は、プログラム中のどの命令によって注目する
オペランドアクセスが実行されたかを特定することが可
能となった。 【0200】請求項12に記載のトレース情報生成装置
によれば、データトレース情報にオペランドアクセスを
起動した命令のアドレスを含めなくても、プログラム中
のどの命令によって注目するオペランドアクセスが実行
されたかを特定することが可能となった。 【0201】請求項13に記載のトレース情報生成装置
によれば、分岐トレース情報の生成を起動するデータト
レース情報を制限することができ、さらに正確に注目す
るオペランドアクセスを抽出することが可能となった。 【0202】請求項14に記載のトレース情報生成方法
によれば、対象となる処理の分岐元情報および分岐先情
報のうち少なくとも一部を省略した分岐トレース情報を
生成するので、トレース情報のデータ量を削減すること
が可能となった。 【0203】請求項15に記載のトレース情報生成方法
によれば、データアクセス情報が設定されたデータトレ
ース条件と一致する場合にデータトレース情報を生成す
るので、外部のコンピュータ等は注目するオペランドア
クセスが実行されたことを認識することが可能となっ
た。

【図面の簡単な説明】 【図1】 本発明の実施の形態1におけるデバッグ装置
の概略構成を示すブロック図である。 【図2】 トレース情報パケットのデータフォーマット
を説明するための図である。 【図3】 パケット識別ビットの一例を示す図である。 【図4】 補助FMコードの一例を示す図である。 【図5】 アクセス情報の一例を示す図である。 【図6】 本発明の実施の形態1における命令実行部6
の概略構成を示すブロック図である。 【図7】 本発明の実施の形態1におけるCPU部61
のパイプライン処理を説明するための図である。 【図8】 分岐トレース情報生成部2の概略構成を示す
ブロック図である。 【図9】 分岐トレース情報出力部26の概略構成を示
すブロック図である。 【図10】 通常命令実行時の分岐トレース情報生成部
2内部における各信号のタイミングチャートである。 【図11】 EIT受付時の分岐トレース情報生成部2
内部における各信号のタイミングチャートである。 【図12】 データトレース情報生成部3の概略構成を
示すブロック図である。 【図13】 トレース情報出力部5の概略構成を示すブ
ロック図である。 【符号の説明】 1 トレース情報生成装置、2 分岐トレース情報生成
部、3 データトレース情報生成部、5 トレース情報
出力部、6 命令実行部、7 メモリ部、8バスインタ
フェース部、21 分岐トレース制御部、22 差分ア
ドレス生成部、23 命令アドレスレジスタ、24 分
岐元情報生成部、25 分岐先情報生成部、26 分岐
トレース情報出力部、31〜34 データトレース条件
クラスタ、35 データトレース情報出力部、36 デ
ータトレース制御部、51 分岐FIFO、52 デー
タFIFO、53 補助バッファ、54 パケット生成
部、55 出力FIFO、61 CPU部、62 命令
キャッシュ、63 データキャッシュ、64 CPUイ
ンタフェース部、65 命令実行情報生成部、66 デ
ータアクセス情報生成部、211 実行命令カウンタ、
222 一時保持カウントレジスタ、223 差分アド
レスレジスタ、231 アドレス一時保持レジスタ、2
32 分岐元アドレスレジスタ、233 分岐先アドレ
スレジスタ、263 分岐トレース情報生成器、264
分岐トレースカウンタ、265レジスタ、266 比
較器、311 コントロールレジスタ、312 比較ア
ドレスレジスタ、313 アドレスマスクレジスタ、3
14 比較データレジスタ、315 データマスクレジ
スタ、316 アドレス比較器、317 データ比較
器。

Claims (1)

  1. 【特許請求の範囲】 【請求項1】 プロセッサの命令実行状況を示す命令実
    行情報に基づいて、対象となる処理の分岐元情報および
    分岐先情報のうち少なくとも一部を省略した分岐トレー
    ス情報を生成する分岐トレース情報生成部と、 前記分岐トレース情報生成部によって生成された分岐ト
    レース情報から、前記プロセッサによって実行された命
    令を復元可能なトレース情報を生成して出力するトレー
    ス情報出力部とを含むトレース情報生成装置。 【請求項2】 前記分岐トレース情報生成部は、前記対
    象となる処理が分岐先がプログラムに明記される直接分
    岐の場合には、分岐先情報を省略した分岐トレース情報
    を生成する、請求項1記載のトレース情報生成装置。 【請求項3】 前記分岐トレース情報生成部は、前記対
    象となる処理が分岐先がプログラムに明記される直接分
    岐であり、かつ無条件分岐の場合には、分岐トレース情
    報を生成しない、請求項1記載のトレース情報生成装
    置。 【請求項4】 前記トレース情報生成装置はさらに、分
    岐先情報を省略するか否かを指定するレジスタを含み、 前記分岐トレース情報生成部は、前記対象となる処理が
    分岐先がプログラムに明記される直接分岐であり、かつ
    前記レジスタに分岐先を省略する指定がある場合には、
    分岐先情報を省略した分岐トレース情報を生成し、 前記対象となる処理が分岐先がプログラムに明記される
    直接分岐であり、かつ前記レジスタに分岐先を省略しな
    い指定がある場合には、分岐先情報を含んだ分岐トレー
    ス情報を生成する、請求項1記載のトレース情報生成装
    置。 【請求項5】 前記トレース情報生成装置はさらに、分
    岐先情報を省略するか否かをアドレス領域毎に指定する
    レジスタを含み、 前記分岐トレース情報生成部は、前記対象となる処理が
    分岐先がプログラムに明記される直接分岐であり、かつ
    分岐元のアドレスに対応する前記レジスタの内容が、分
    岐先を省略する指定である場合には、分岐先情報を省略
    した分岐トレース情報を生成し、 前記対象となる処理が分岐先がプログラムに明記される
    直接分岐であり、かつ分岐元のアドレスに対応する前記
    レジスタの内容が、分岐先を省略しない指定である場合
    には、分岐先情報を含んだ分岐トレース情報を生成す
    る、請求項1記載のトレース情報生成装置。 【請求項6】 前記分岐トレース情報生成部は、プログ
    ラムカウント値を所定のレジスタに退避して分岐し、所
    定の処理を行なった後、前記所定のレジスタに退避され
    たプログラムカウント値の処理に復帰させる一連の処理
    が発生した場合には、前記プログラムカウント値を前記
    所定のレジスタに退避してから前記所定のレジスタに退
    避されたプログラムカウント値の処理に復帰させる命令
    が実行されるまでの間に、前記所定のレジスタに別の書
    込みがなければ、前記所定のレジスタに退避されたプロ
    グラムカウント値の処理に復帰させる命令を直接分岐と
    見なして分岐トレース情報を生成する、請求項2〜5の
    いずれかに記載のトレース情報生成装置。 【請求項7】 前記分岐トレース情報生成部は、先に生
    成した分岐トレース情報に含まれる分岐先情報からの相
    対アドレスで分岐元情報を生成し、該分岐元情報を含ん
    だ分岐トレース情報を生成する、請求項1記載のトレー
    ス情報生成装置。 【請求項8】 前記分岐トレース情報生成部は、相対ア
    ドレスの分岐元情報を含んだ分岐トレース情報を所定回
    生成する毎に、絶対アドレスの分岐元情報を含んだ分岐
    トレース情報を生成する、請求項7記載のトレース情報
    生成装置。 【請求項9】 前記分岐トレース情報生成部は、前記対
    象となる処理の分岐トレース情報が、先に生成した分岐
    トレース情報と同じ場合には、前記先に生成した分岐ト
    レース情報を指し示す情報を含み、分岐元情報および分
    岐先情報を省略した分岐トレース情報を生成する、請求
    項1記載のトレース情報生成装置。 【請求項10】 前記分岐トレース情報生成部は、ユニ
    ークなレジスタ番号を有し、生成した分岐トレース情報
    を保持する複数の履歴保持レジスタを含み、 前記対象となる処理の分岐トレース情報が、前記複数の
    履歴保持レジスタに保持される分岐トレース情報のいず
    れかと一致する場合には、当該履歴保持レジスタのレジ
    スタ番号を含んだパケットを生成して分岐トレース情報
    として出力し、 前記対象となる処理の分岐トレース情報が、前記複数の
    履歴保持レジスタに保持される分岐トレース情報のいず
    れにも一致しない場合には、前記複数の履歴保持レジス
    タのいずれかの内容を当該分岐トレース情報で更新し、
    当該分岐トレース情報および当該履歴保持レジスタのレ
    ジスタ番号を含んだパケットを生成して分岐トレース情
    報として出力する、請求項9記載のトレース情報生成装
    置。 【請求項11】 前記トレース情報生成装置はさらに、
    データトレース条件を設定するデータトレース条件クラ
    スタと、 前記プロセッサのデータアクセス状況を示すデータアク
    セス情報が、前記データトレース条件クラスタに設定さ
    れたデータトレース条件と一致する場合には、前記プロ
    セッサによって実行されたデータアクセスを示すデータ
    トレース情報を生成するデータトレース情報生成部とを
    含み、 前記トレース情報出力部は、前記データトレース情報生
    成部によって生成されたデータトレース情報から、トレ
    ース情報を生成して出力する、請求項1〜10のいずれ
    かに記載のトレース情報生成装置。 【請求項12】 前記データトレース情報生成部は、前
    記データトレース条件クラスタに設定されたデータトレ
    ース条件と一致したオペランドアクセスを起動した命令
    のアドレスを含んだデータトレース情報を生成する、請
    求項11記載のトレース情報生成装置。 【請求項13】 前記トレース情報出力部は、前記デー
    タトレース情報生成部によってデータトレース情報が生
    成された時点を基準として、前記分岐トレース情報生成
    部によって生成された分岐トレース情報からトレース情
    報を選択的に生成して出力する、請求項11または12
    記載のトレース情報生成装置。 【請求項14】 前記トレース情報出力部は、前記デー
    タトレース情報生成部によって生成されたデータトレー
    ス情報が予め指定されたオペランドアクセスの場合に、
    当該データトレース情報が生成された時点を基準とし
    て、前記分岐トレース情報生成部によって生成された分
    岐トレース情報からトレース情報を選択的に生成して出
    力する、請求項11または12記載のトレース情報生成
    装置。 【請求項15】 プロセッサの命令実行状況を示す命令
    実行情報に基づいて、対象となる処理の分岐元情報およ
    び分岐先情報のうち少なくとも一部を省略した分岐トレ
    ース情報を生成するステップと、 前記生成された分岐トレース情報から、前記プロセッサ
    によって実行された命令を復元可能なトレース情報を生
    成して出力するステップとを含むトレース情報生成方
    法。 【請求項16】 前記トレース情報生成方法はさらに、
    データトレース条件を設定するステップと、 前記プロセッサのデータアクセス状況を示すデータアク
    セス情報が、前記設定されたデータトレース条件と一致
    する場合には、前記プロセッサによって実行されたデー
    タアクセスを示すデータトレース情報を生成するステッ
    プと、 前記生成されたデータトレース情報からトレース情報を
    生成して出力するステップとを含む、請求項15記載の
    トレース情報生成方法。
JP2001273413A 2001-09-10 2001-09-10 トレース情報生成装置およびその方法 Withdrawn JP2003085000A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001273413A JP2003085000A (ja) 2001-09-10 2001-09-10 トレース情報生成装置およびその方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2001273413A JP2003085000A (ja) 2001-09-10 2001-09-10 トレース情報生成装置およびその方法
US10214231 US20030051122A1 (en) 2001-09-10 2002-08-08 Trace information generation apparatus for generating branch trace information omitting at least part of branch source information and branch destination information on target processing

Publications (1)

Publication Number Publication Date
JP2003085000A true true JP2003085000A (ja) 2003-03-20

Family

ID=19098634

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001273413A Withdrawn JP2003085000A (ja) 2001-09-10 2001-09-10 トレース情報生成装置およびその方法

Country Status (2)

Country Link
US (1) US20030051122A1 (ja)
JP (1) JP2003085000A (ja)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006018477A (ja) * 2004-06-30 2006-01-19 Canon Software Inc シーケンス情報生成装置およびシーケンス情報生成方法およびプログラムおよび記録媒体
JP2007052676A (ja) * 2005-08-18 2007-03-01 Nec Corp データトレース方法およびトレースモジュール
JP2007054128A (ja) * 2005-08-22 2007-03-08 Daito Giken:Kk 遊技台
JP2009042815A (ja) * 2007-08-06 2009-02-26 Renesas Technology Corp 半導体集積回路及びデバッグシステム
WO2009031210A1 (ja) * 2007-09-05 2009-03-12 Fujitsu Limited 情報処理装置、情報処理装置の制御方法および制御プログラム
JP2010218139A (ja) * 2009-03-16 2010-09-30 Fujitsu Semiconductor Ltd 実行履歴トレース方法
JP2011227608A (ja) * 2010-04-16 2011-11-10 Mitsubishi Electric Corp 電子部品及びデバッグ方法
JP2012160200A (ja) * 2006-05-30 2012-08-23 Arm Ltd 命令の追跡中に作られるデータ・ストリームの大きさの削減
JP2015064865A (ja) * 2013-08-29 2015-04-09 株式会社デンソー マイクロコンピュータ
JP2018028888A (ja) * 2016-08-19 2018-02-22 晶心科技股▲ふん▼有限公司Andes Technology Corporation 追跡情報符号化装置、その符号化方法、および読み取り可能なコンピュータ媒体

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6738929B2 (en) * 2000-03-02 2004-05-18 Texas Instruments Incorporated Dynamically configurable debug port for concurrent support of debug functions from multiple data processing cores
JP2002163127A (ja) * 2000-11-27 2002-06-07 Mitsubishi Electric Corp トレース制御回路
US6547125B2 (en) * 2001-09-10 2003-04-15 John D. Correll Material-saving food carton
US7197671B2 (en) * 2002-06-07 2007-03-27 Arm Limited Generation of trace elements within a data processing apparatus
EP1531395A1 (en) * 2003-11-17 2005-05-18 Infineon Technologies AG Method of determining information about the processes which run in a program-controlled unit during the execution of a program
US8266595B2 (en) 2004-02-12 2012-09-11 International Business Machines Corporation Removal of asynchronous events in complex application performance analysis
US7496900B2 (en) * 2004-02-12 2009-02-24 International Business Machines Corporation Method for automatic detection of build regressions
US7519961B2 (en) * 2004-02-12 2009-04-14 International Business Machines Corporation Method and apparatus for averaging out variations in run-to-run path data of a computer program
US7225305B2 (en) * 2004-04-08 2007-05-29 International Business Machines Corporation System, method and storage medium for controlling asynchronous updates to a register
FR2882832A1 (fr) * 2005-03-04 2006-09-08 St Microelectronics Sa Dispositif de generation de suivi de branchement pour microprocesseur et microprocesseur dote d'un tel dispositif
GB0505721D0 (en) * 2005-03-22 2005-04-27 Agilent Technologies Inc Packet trace diagnostic system
US20060294343A1 (en) * 2005-06-27 2006-12-28 Broadcom Corporation Realtime compression of microprocessor execution history
US7606999B2 (en) * 2006-05-16 2009-10-20 Texas Instruments Incorporated Merging branch information with sync points
US7574586B2 (en) * 2006-05-16 2009-08-11 Texas Instruments Incorporated Efficient transfer of branch information
US7752425B2 (en) * 2006-05-30 2010-07-06 Arm Limited Data processing apparatus having trace and prediction logic
US8677104B2 (en) * 2006-05-30 2014-03-18 Arm Limited System for efficiently tracing data in a data processing system
US7743279B2 (en) * 2007-04-06 2010-06-22 Apple Inc. Program counter (PC) trace
US8489866B2 (en) * 2010-06-30 2013-07-16 International Business Machines Corporation Branch trace history compression
GB2483509B (en) * 2010-09-13 2017-08-02 Advanced Risc Mach Ltd Data processing apparatus, trace unit and diagnostic apparatus
GB201100505D0 (en) 2011-01-13 2011-02-23 Advanced Risc Mach Ltd Processing apparatus, trace unit and diagnstic apparatus
US8984344B2 (en) * 2012-02-09 2015-03-17 Freescale Semiconductor, Inc. Stack-based trace message generation for debug and device thereof
CN103984614B (zh) * 2014-05-06 2017-07-21 华为技术有限公司 一种监控方法及监控装置、电子设备
US9645911B2 (en) * 2014-10-17 2017-05-09 Insyde Software Corporation System and method for debugging firmware/software by generating trace data
US20160378636A1 (en) * 2015-06-26 2016-12-29 Intel Corporation Software-Initiated Trace Integrated with Hardware Trace

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5802272A (en) * 1994-12-19 1998-09-01 Digital Equipment Corporation Method and apparatus for tracing unpredictable execution flows in a trace buffer of a high-speed computer system
JP3583937B2 (ja) * 1998-12-28 2004-11-04 富士通株式会社 情報処理装置
JP3629181B2 (ja) * 2000-03-28 2005-03-16 Necマイクロシステム株式会社 プログラム開発支援装置
US6658557B1 (en) * 2000-05-25 2003-12-02 Advanced Micro Devices, Inc. Synthesizing the instruction stream executed by a microprocessor from its branch trace data
US7197671B2 (en) * 2002-06-07 2007-03-27 Arm Limited Generation of trace elements within a data processing apparatus

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006018477A (ja) * 2004-06-30 2006-01-19 Canon Software Inc シーケンス情報生成装置およびシーケンス情報生成方法およびプログラムおよび記録媒体
JP2007052676A (ja) * 2005-08-18 2007-03-01 Nec Corp データトレース方法およびトレースモジュール
JP2007054128A (ja) * 2005-08-22 2007-03-08 Daito Giken:Kk 遊技台
JP2014220003A (ja) * 2006-05-30 2014-11-20 エイアールエム リミテッド 命令の追跡中に作られるデータ・ストリームの大きさの削減
JP2012160200A (ja) * 2006-05-30 2012-08-23 Arm Ltd 命令の追跡中に作られるデータ・ストリームの大きさの削減
JP2009042815A (ja) * 2007-08-06 2009-02-26 Renesas Technology Corp 半導体集積回路及びデバッグシステム
US8060790B2 (en) 2007-08-06 2011-11-15 Renesas Electronics Corporation Semiconductor integrated circuit and debugging system
WO2009031210A1 (ja) * 2007-09-05 2009-03-12 Fujitsu Limited 情報処理装置、情報処理装置の制御方法および制御プログラム
JP2010218139A (ja) * 2009-03-16 2010-09-30 Fujitsu Semiconductor Ltd 実行履歴トレース方法
US8578216B2 (en) 2009-03-16 2013-11-05 Spansion Llc Execution history tracing method
US9507688B2 (en) 2009-03-16 2016-11-29 Cypress Semiconductor Corporation Execution history tracing method
JP2011227608A (ja) * 2010-04-16 2011-11-10 Mitsubishi Electric Corp 電子部品及びデバッグ方法
JP2015064865A (ja) * 2013-08-29 2015-04-09 株式会社デンソー マイクロコンピュータ
JP2018028888A (ja) * 2016-08-19 2018-02-22 晶心科技股▲ふん▼有限公司Andes Technology Corporation 追跡情報符号化装置、その符号化方法、および読み取り可能なコンピュータ媒体

Also Published As

Publication number Publication date Type
US20030051122A1 (en) 2003-03-13 application

Similar Documents

Publication Publication Date Title
US5764885A (en) Apparatus and method for tracing data flows in high-speed computer systems
US6085315A (en) Data processing device with loop pipeline
US5148528A (en) Method and apparatus for simultaneously decoding three operands in a variable length instruction when one of the operands is also of variable length
US6865666B2 (en) Data processing device
US4701844A (en) Dual cache for independent prefetch and execution units
US5745722A (en) Apparatus for decoding instruction immediate data to produce a string having a single bit different from other bit thereof
US5313644A (en) System having status update controller for determining which one of parallel operation results of execution units is allowed to set conditions of shared processor status word
US5249286A (en) Selectively locking memory locations within a microprocessor's on-chip cache
US4648034A (en) Busy signal interface between master and slave processors in a computer system
US5051885A (en) Data processing system for concurrent dispatch of instructions to multiple functional units
US6721866B2 (en) Unaligned memory operands
US6061783A (en) Method and apparatus for manipulation of bit fields directly in a memory source
US6167509A (en) Branch performance in high speed processor
US5454091A (en) Virtual to physical address translation scheme with granularity hint for identifying subsequent pages to be accessed
US5727227A (en) Interrupt coprocessor configured to process interrupts in a computer system
US5410682A (en) In-register data manipulation for unaligned byte write using data shift in reduced instruction set processor
US6408383B1 (en) Array access boundary check by executing BNDCHK instruction with comparison specifiers
US6076158A (en) Branch prediction in high-performance processor
US6230259B1 (en) Transparent extended state save
US5167026A (en) Simultaneously or sequentially decoding multiple specifiers of a variable length pipeline instruction based on detection of modified value of specifier registers
Venkataramani et al. Memtracker: Efficient and programmable support for memory access monitoring and debugging
US5263153A (en) Monitoring control flow in a microprocessor
US20010010072A1 (en) Instruction translator translating non-native instructions for a processor into native instructions therefor, instruction memory with such translator, and data processing apparatus using them
US5347636A (en) Data processor which efficiently accesses main memory and input/output devices
US5568624A (en) Byte-compare operation for high-performance processor

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20081202