(57)【要約】【課題】トレース情報を効率的に圧縮して記録し、トレースメモリの情報量を増加させる。【解決手段】プロセッサ１０のプログラム実行状態を示すトレース情報を格納するトレースメモリ３２と、トレース情報をあらかじめ定めたトレースフォーマットに圧縮して、トレースメモリ３２に循環的に順次格納するトレース情報圧縮ユニット２４と、トレースメモリ３２に最終的に格納したアドレスを保持するアドレスレジスタ２８とを備え、トレースメモリ３２の内容をプログラムの実行された順と逆順に解析し、トレースフォーマットの切れ目を探索し、切れ目からプログラムの実行順にトレース解析を行うトレース装置２０であり、トレース情報圧縮ユニットは、更にトレース情報の圧縮を停止する圧縮停止部２６を備え、トレース開始およびトレース終了時に特定の形式のトレース情報をトレースメモリに格納する。トレース装置２０はプロセッサ１０に内蔵可能である。【選択図】図１  
2006012064.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサのプログラム実行状態を示すトレース情報を格納するトレースメモリと、
前記トレース情報をあらかじめ定めたトレースフォーマットに圧縮して、前記トレースメモリに循環的に順次格納するトレース情報圧縮ユニットと、
前記トレースメモリに最終的に格納したアドレスを保持するアドレスレジスタ
とを備え、前記トレースメモリの内容をプログラムの実行された順と逆順に解析し、前記トレースフォーマットの切れ目を探索し、切れ目から前記プログラムの実行順にトレース解析を行うことを特徴とするトレース装置。
【請求項２】
前記トレース情報圧縮ユニットは、トレース開始およびトレース終了時、またはトレース開始時に特定の形式のトレース情報を前記トレースメモリに格納することを特徴とする請求項１記載のトレース装置。
【請求項３】
前記トレース情報圧縮ユニットは、更にトレース情報の圧縮を停止する圧縮停止部を備え、分岐命令に係わる前記トレース情報は、トレース開始後、または分岐先アドレス情報が圧縮された形式のトレース情報での格納が一定の容量を超えた後は、分岐先アドレス情報が圧縮されない形式のトレース情報を格納するようにしたことを特徴とする請求項１乃至請求項２の内、いずれか1項に記載のトレース装置。
【請求項４】
前記トレース情報は、前記プロセッサが実行した命令毎のトレース情報に限定したことを特徴とする請求項１乃至請求項３の内、いずれか１項に記載のトレース装置。
【請求項５】
前記トレース情報のうち、前記プロセッサが実行した分岐命令に関するトレース情報に限定したことを特徴とする請求項４項に記載のトレース装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサのプログラムの実行状況を示すトレース情報を生成し記録する技術に関し、特にトレース情報を効率的に圧縮し、記録するトレース装置に関する。
【背景技術】
【０００２】
近年のマイクロプロセッサは、動作周波数を高めて高性能化するだけでなく、プロセッサが搭載されたシステムの開発期間を短くすることを支援する機能も求められている。プロセッサ及びプロセッサを搭載したシステムの開発では、プロセッサが実行したプログラムの流れやデータ更新の情報（トレース情報）を解析できることは、開発期間の短縮に有効である。このため、プロセッサに、プロセッサのトレース情報を外部に出力する機能を設けて、取り出されたトレース情報からプログラムの流れやデータの更新の状況を解析するインサーキットエミュレータ（ＩＣＥ：In Circuit Emulator）などの技術開発が行われ提供されている。
【０００３】
一方、プロセッサの高速化により、解析のために信号を取り出すことが困難になってきている。このため、プロセッサのトレース情報を圧縮して、リアルタイムで出力する信号の数を減らす技術開発や、プロセッサ内部にメモリを設けてリアルタイムなトレース情報をメモリに蓄積記録するようにした技術開発も進められている。プロセッサ内部などに設けたメモリにトレース情報を格納する場合、使用するメモリに対して出来るだけトレース情報を多く蓄えるために、可変長のトレース格納フォーマットを用いる方法が知られている（例えば、非特許文献１参照）。
【０００４】
しかしながら、この可変長のトレース格納フォーマットを用いてメモリ（トレースメモリ）にトレース情報を格納する場合、可変長のデータを隙間なく格納することができず、無駄なデータが詰められるという不都合が存在する。
【０００５】
即ち、通常、可変長のトレース格納フォーマットを用いる場合、格納したトレース情報の解析が行えるようにするために、トレースメモリの１ワード（６４ビット）毎に、そのワードに格納されたトレース情報の先頭アドレスを求めるための４ビット長の情報を下位側［３：０］に格納している。このため、トレースメモリの１／１６の容量がトレース情報を格納する目的に使用できず、また、その情報が示すトレース情報の先頭アドレスが４ビット毎になるため、その直前のトレース情報の最終アドレスが４の倍数−１でない時は、無駄なデータが詰められることになり、使用するメモリに対して出来るだけトレース情報を多く蓄えることの実現を妨げる問題があった。
【非特許文献１】ミップス・テクノロジーズ著、“ＥＪＴＡＧ  トレースコントロールブロック仕様”, ドキュメント番号：ＭＤ００１４８，改訂版１．０４，  ２００２年３月２１日、（“EJTAG Trace Control Block Specification”，MIPS Technologies Inc. 2001-2002, http://www.mips.jp/04doc/MIPSDoc/ejtag.html, P.3-6）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、トレース情報を効率的に圧縮して記録し、トレースメモリの情報量を増加させ、性能向上を図る。
【課題を解決するための手段】
【０００７】
本発明の実施の形態の特徴は、（イ）プロセッサのプログラム実行状態を示すトレース情報を格納するトレースメモリと、（ロ）トレース情報をあらかじめ定めたトレースフォーマットに圧縮して、トレースメモリに循環的に順次格納するトレース情報圧縮ユニットと、（ハ）トレースメモリに最終的に格納したアドレスを保持するアドレスレジスタとを備え、（ニ）トレースメモリの内容をプログラムの実行された順と逆順に解析し、トレースフォーマットの切れ目を探索し、切れ目からプログラムの実行順にトレース解析を行うトレース装置であることを要旨とする。
【発明の効果】
【０００８】
本発明のトレース装置によれば、トレースメモリにトレース情報の格納アドレス情報を格納しなくても個々のトレース情報を切り出すことができて、トレースメモリに格納するトレース情報を増加させることができる。
【発明を実施するための最良の形態】
【０００９】
次に、図面を参照して、本発明の実施の形態を説明する。以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付している。ただし、図面は模式的なものであり、各ブロックの平面寸法、各データフォーマットの厚み等は現実のものとは異なることに留意すべきである。又、図面相互間においても互いの寸法の関係や比率が異なる部分が含まれていることはもちろんである。
【００１０】
また、以下に示す実施の形態は、この発明の技術的思想を具体化するための装置や方法を例示するものであって、この発明の技術的思想は、各ブロックの構成部品の配置等を下記のものに特定するものでない。この発明の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
【００１１】
[第１の実施の形態]
本発明の実施の形態に係るトレース装置２０は、図１に示すように、プロセッサ１０のプログラム実行状態を示すトレース情報を格納するトレースメモリ３２と、トレース情報をあらかじめ定めたトレースフォーマットに圧縮して、トレースメモリ３２に循環的に順次格納するトレース情報圧縮ユニット２４と、トレースメモリ３２に最終的に格納したアドレスを保持するアドレスレジスタ２８とを備え、トレースメモリ３２の内容をプログラムの実行された順と逆順に解析し、トレースフォーマットの切れ目を探索し、切れ目からプログラムの実行順にトレース解析を行う。
【００１２】
更に又、トレース情報圧縮ユニット２４は、トレース開始およびトレース終了時、またはトレース開始時に特定の形式のトレース情報をトレースメモリ３２に格納する構成を備えていても良い。
【００１３】
又、本発明の実施の形態に係るトレース装置２０は、トレース対象であるプロセッサ１０に内蔵されていても良いことは勿論である。
【００１４】
本発明の実施の形態に係るトレース装置２０を内蔵するプロセッサ１０は、図１に示すように、トレース情報出力ユニット１８を備えるプロセッサコアモジュール１４と、トレース装置２０，ＪＴＡＧデバッグインタフェース２２を備えるデバッグモジュール１６と、プロセッサコアモジュール１４，デバッグモジュール１６間をバス３６，３８を介して接続するメインバス３４とから構成される。
【００１５】
プロセッサコアモジュール１４は、プロセッサ命令を読み込み実行する。デバッグモジュール１６は、ＪＴＡＧデバッグインタフェース２２においてＪＴＡＧデバッグ出力バス６４を介して外部のＪＴＡＧデバッグ装置１２に接続されており、デバッグ時に、外部のＪＴＡＧデバッグ装置１２によって制御可能である。
【００１６】
プロセッサコアモジュール１４内に設けられたトレース情報出力ユニット１８は、トレース情報出力データバス５０を介してトレース装置２０に接続されており、プロセッサコアモジュール１４の命令実行状態を示す情報を入力して、デバッグモジュール１６内のトレース装置２０にトレース情報を出力する。
【００１７】
本発明の実施の形態に係るトレース装置２０は、図１に示すように、圧縮停止部２６を備えるトレース情報圧縮ユニット２４と、アドレスレジスタ２８及びバッファレジスタ３０と、トレースメモリ３２とを備える。
【００１８】
プロセッサコアモジュール１４で実行されたプログラムを解析するＪＴＡＧデバッグ装置１２は、図２に示すように、トレースメモリ読み出しデータバス５２及び最終格納アドレス読み出しデータバス５４に接続され，トレ―ス情報を入力するホストコンピュータ４０と、実行中のプログラムのオブジェクト／ソースリスト４４をバス５８を介して入力するトレース解析プログラム格納部４２とを備える。
【００１９】
トレース動作時には、プログラムを実行したプロセッサコアモジュール１４内のトレース情報出力ユニット１８から、命令の種類，アドレス情報，データ情報，及びトレース情報出力ユニット１８の動作状況などからなるトレース情報を出力させて、トレース装置２０に入力する。トレース装置２０では、トレース情報圧縮ユニット２４に入力されたトレース情報を図３に示す形式に圧縮して、トレースメモリ３２に順次格納させる。
【００２０】
トレース動作終了後、ＪＴＡＧデバッグ装置１２は、トレースメモリ３２の内容とアドレスレジスタ２８に記憶された最終格納アドレスをトレース装置２０から読み出し、プロセッサコアモジュール１４上で実行中のプログラムのオブジェクト／ソースリスト４４を、バス５８を介して、トレース解析プログラム格納部４２に入力し、トレース解析プログラムを用いてトレースメモリ３２の内容を解析し、トレース中のプロセッサコアモジュール１４のプログラム実行状況を出力する。
【００２１】
圧縮したトレース情報は、図３に示すように、１２種類のフォーマットでトレースメモリ３２に格納される。全てのフォーマットは、下位側より読み出すことで、そのフォーマット全体の長さが判断できるように、構成されている。
【００２２】
プロセッサコアモジュール１４が、次に示す命令列を実行する時を例に、トレース情報が格納される様子を図４に示す。
【００２３】
以下の表記において、例えば左端の０ｘ０１００は、プログラムメモリのアドレス１００番地を１６進表示したものである。
【００２４】
０Ｘ０１００  ａｄｄ  ＄２，４
０Ｘ０１０２  ｓｗ    ＄３,(＄２)
０Ｘ０１０４  ｊｍｐ  ＄５      ;この時点のＲｅｇｉｓｔｅｒ５の内容が０Ｘ１０００であるとする。
【００２５】
：        ：
：        ：
０Ｘ１０００  ａｄｄ  ＄３，１００
：        ：
プロセッサコアモジュール１４が、１００番地のａｄｄ命令を実行すると、トレース情報としてＤＰＦ２が生成され、図４（ａ）に示すように格納される。次にプロセッサコアモジュール１４が、１０２番地のｓｗ命令を実行すると、トレース情報としてＤＰＦ２が生成されて、図４（ｂ）のように格納される。次に、１０４番地のｊｍｐ命令を実行すると、トレース情報としてＤＰＦ５が生成されて、図４（ｃ）のように格納される。このように、トレース情報は、トレースメモリ３２のワードの上位より下位方向に隙間無く順次格納される。また、格納するトレース情報がワードの境界を越える時は、境界位置で分割して複数の連続するワードに格納される。そしてトレースメモリ３２の最終ワードに続くワードは、トレースメモリ３２の先頭ワードであるように制御して循環的にトレース情報を格納する。
【００２６】
プロセッサコアモジュール１４で実行されたプログラムを解析するＪＴＡＧデバッグ装置１２は、図２に示すように、トレースメモリ読み出しデータバス５２及び最終格納アドレス読み出しデータバス５４に接続され，トレ―ス情報を入力するホストコンピュータ４０と、実行中のプログラムのオブジェクト／ソースリスト４４をバス５８を介して入力するトレース解析プログラム格納部４２とを備える。
【００２７】
本発明の実施の形態に係るトレース装置２０では、プロセッサコアモジュール１４が実行したプログラムの流れやデータ更新の情報であるトレース情報を、トレース情報出力ユニット１８から入力し、可変長のトレース格納フォーマットに圧縮変換し、トレースメモリ３２に格納する順序をトレースメモリ３２のワードの上位より下位方向に行うようにするとともに循環的に格納することが可能である。
【００２８】
格納フォーマットは下位ビットより解釈すればフォーマットの種類とフォーマット長が一意的に定まるようにする。
【００２９】
トレース終了後、最終格納アドレス情報を用いて、トレースメモリ３２に格納された可変長のトレース情報をトレース終了時点から時間軸の逆方向へ正確に切り出すことができるので、トレースメモリ３２にトレース情報の格納場所を示すデータを格納することが不要となり、トレース装置２０に格納できるトレースの情報量を増加させることができ、トレース装置２０の性能が向上する。
【００３０】
（トレース動作）
図５に示すトレースメモリ３２に格納されたトレース情報の内容を例に、トレース装置２０の動作を説明する。
【００３１】
（ａ）トレース動作が開始されると、トレース装置２０はＤＰＦ６を生成し、アドレスレジスタ２８を０で初期化し、バッファレジスタ３０を０で初期化後、バッファレジスタ３０の最左端部分にＤＰＦ６を格納して、アドレスレジスタ２８の値をＤＰＦ６のフォーマット長である５増加させる（図３のＤＰＦ６を参照）。
【００３２】
（ｂ）６４ビット長のバッファレジスタ３０のビットアドレスは、最右端が０で最左端が６３になるが、アドレスレジスタ２８がバッファレジスタ３０やトレースメモリ３２のビットアドレスを指す時は、アドレスレジスタ２８の下位６ビットを反転して用いている。以下の説明において、この出力を反転してアドレス指定しているとの記述は省略する。即ち、下位６ビットが０の時は最左端の６３ビット目を意味し、逆に下位６ビットが６３の時は最右端の０ビット目を示す。
【００３３】
（ｃ）次いでプロセッサコアモジュール１４からストールなどで命令を実行していないことを示すトレース情報が出力され、トレース装置２０に入力されたので、トレース情報圧縮ユニット２４で、ＤＰＦ１を生成して、アドレスレジスタ２８の指すバッファレジスタ３０のアドレスに格納し、アドレスレジスタ２８の値を１増加させる（図３のＤＰＦ１を参照）。
【００３４】
（ｄ）次のサイクルも同様のトレース情報が出力されたので、同様にＤＰＦ１を格納する動作を行う。
【００３５】
（ｅ）次のサイクルで、プロセッサコアモジュール１４から分岐命令であることを示すトレース情報が出力されたので、トレース情報圧縮ユニット２４は、圧縮停止部２６を動作させてＤＰＦ４またはＤＰＦ５を生成するが、命令の実行アドレスと比較した時、分岐先アドレスの上位１６ビットが異なるので、ＤＰＦ５のフォーマットでトレース情報を生成して、アドレスレジスタ２８の指すバッファレジスタ３０のアドレスに格納し、アドレスレジスタ２８の値を３９増加させる（図３のＤＰＦ５を参照）。
【００３６】
（ｆ）以下８サイクルは、プロセッサコアモジュール１４のトレース情報出力ユニット１８からの出力に従い、トレース情報を圧縮生成して、アドレスレジスタ２８の指すバッファレジスタ３０のアドレスに格納し、アドレスレジスタ２８の値を更新させることを繰り返す。
【００３７】
（ｇ）続くサイクルで、プロセッサコアモジュール１４のトレース情報出力ユニット１８から、プログラムのオブジェクトコードから静的に分岐先アドレスが定まる分岐命令であることが出力されたので、トレース情報圧縮ユニット２４は、アドレス情報を圧縮してＤＰＦ３を生成して、アドレスレジスタ２８の指すバッファレジスタ３０のアドレスに格納し、アドレスレジスタ２８の値を５増加させる（図３のＤＰＦ３を参照）。
【００３８】
（ｈ）以下２サイクルは、プロセッサコアモジュール１４が命令を実行していないので、ＤＰＦ１が格納されるが２サイクル目のＤＰＦ１を格納して、アドレスレジスタ２８の値を更新すると下位６ビットを除いたアドレスレジスタ２８の値が増加し、下位６ビットが０となるので、バッファレジスタ３０の内容をトレースメモリ３２の先頭ワードに格納するとともに、バッファレジスタ３０を初期化する。
【００３９】
（ｉ）次のサイクルでは、プロセッサコアモジュール１４のトレース情報出力ユニット１８から、次のプログラム実行アドレスが連続するような命令を実行したことを示すトレース情報が出力されたので、トレース情報圧縮ユニット２４はＤＰＦ２を生成し、アドレスレジスタ２８の下位６ビットが指すバッファレジスタ３０のアドレスに格納し、アドレスレジスタ２８の値を２増加させる（図３のＤＰＦ２を参照）。
【００４０】
（ｊ）以下５サイクルは、同様にプロセッサコアモジュール１４のトレース情報出力ユニット１８からの出力に従い、トレース情報を圧縮生成して、アドレスレジスタ２８の下位６ビットが指すバッファレジスタ３０のアドレスに格納し、アドレスレジスタ２８の値を更新させることを繰り返す。
【００４１】
（ｋ）５サイクル目の命令が、Ｌｏａｄ命令であらかじめトレース情報出力ユニット１８に設定したアドレスからのデータ読み出しを行ったため、トレース情報圧縮ユニット２４は１６ビット長のデータ情報を含むＤＤＦ４を連続して生成し、アドレスレジスタ２８の下位６ビットが指すバッファレジスタ３０のアドレスに格納し、アドレスレジスタ２８の値を２５増加させる（図３のＤＤＦ４を参照）。
【００４２】
（ｌ）以下１０サイクルは、プロセッサコアモジュール１４内のトレース情報出力ユニット１８からの出力に従い、トレース情報を圧縮生成して、アドレスレジスタ２８の下位６ビットが指すバッファレジスタ３０のアドレスに格納し、アドレスレジスタ２８の値を更新させることを繰り返す。
【００４３】
（ｍ）次のサイクルで、プロセッサコアモジュール１４から分岐命令であることを示すトレース情報が出力され、命令の実行アドレスと比較した時、分岐先アドレスの上位１６ビットが異なるので、トレース情報圧縮ユニット２４は、ＤＰＦ５のフォーマットでトレース情報を生成して、アドレスレジスタ２８の下位６ビットが指すバッファレジスタ３０のアドレスに格納し、アドレスレジスタ２８の値を３９増加させる（図３のＤＰＦ５を参照）。増加時、アドレスレジスタ２８の下位６ビットを除いたアドレスレジスタ２８の値が増加し下位６ビットが０でないので、ＤＰＦ５の上位側がバッファレジスタ３０に格納できるビット位置でＤＰＦ５を分割して、分割した上位側のトレース情報をバッファレジスタ３０に格納し、トレースメモリ３２の先頭から第２番目のワードに格納するとともに、バッファレジスタ３０を初期化する。バッファレジスタ３０に、分割したＤＰＦ５の下位側を格納する。
【００４４】
（ｎ）以下２３サイクルは、プロセッサコアモジュール１４内のトレース情報出力ユニット１８からの出力に従い、トレース情報を圧縮生成して、アドレスレジスタ２８の下位６ビットが指すバッファレジスタ３０のアドレスに格納し、アドレスレジスタ２８の値を更新させることを繰り返して、アドレスレジスタ２８の下位６ビットを除くアドレスレジスタ２８の値が増加し、下位６ビットが０となるので、バッファレジスタ３０をトレースメモリ３２の先頭から第３番目のワードに格納するとともに、バッファレジスタ３０を初期化する。
【００４５】
（ｏ）続くサイクルは、プロセッサコアモジュール１４が命令を実行していないので、ＤＰＦ１をバッファレジスタ３０に格納し、アドレスレジスタ２８の値を１増加させる（図３のＤＰＦ１を参照）。
【００４６】
（ｐ）ここで、トレース動作の終了を検出すると、トレース装置２０は、ＤＰＦ６を生成し、アドレスレジスタ２８の指すバッファレジスタ３０のアドレスに格納しアドレスレジスタ２８の値を５増加させ、バッファレジスタ３０を、トレースメモリ３２の先頭から第４番目のワードに格納する（図３のＤＰＦ６を参照）。
【００４７】
このトレースメモリ３２に格納されたトレース情報は可変長であるが、図６に示すように、最終格納アドレスから、トレースメモリ３２を上位方向に順次読み出すことで、トレース情報の下位部分に示されるそれぞれのトレース情報フォーマットの全体の長さの情報を用いて、次の（前の実行サイクル）のトレース情報の格納アドレスを得ることができ、各サイクルのトレース情報を切り出すことができる。
【００４８】
このように、トレースメモリ３２からトレース情報を切り出して行く時、ＤＰＦ６のトレース情報を得た時は、トレース動作の開始時点に達したことを知ることができる。もしも、トレースメモリ３２の先頭ワードのトレース情報の切り出しを行ってもＤＰＦ６が得られない時は、トレースメモリ３２が循環的に使用されていることを知ることができ、トレースメモリ３２の最終ワードからのトレース情報の切り出しを行うことができる。
【００４９】
本発明の実施の形態に係るトレース装置２０は、圧縮した可変長のトレース情報のみをトレースメモリ３２に格納しても、最終格納アドレス情報から、正確にトレース情報を切り出すことができるので、トレースメモリ３２にトレース情報の格納位置を示す情報を格納する必要がなく、トレースメモリ３２に格納できるトレース情報量を増加させることができ、搭載プロセッサシステムの開発期間を短くする機能の高いプロセッサ１０を提供できる。
【００５０】
以上のように、本発明の実施の形態に係るトレース装置によれば、トレースメモリ３２にトレース情報の格納場所を示すデータを格納することが不要となり、トレース装置２０に格納できるトレースの情報量を増加させることができてトレース装置２０の性能が向上する。
【００５１】
又、本発明の実施の形態に係るトレース装置２０を用いれば、トレースメモリ３２にトレース情報の格納アドレス情報を格納しなくても個々のトレース情報を切り出すことができ、トレースメモリ３２に格納するトレース情報を増加させることができる。
【００５２】
更に又、本発明の実施の形態に係るトレース装置２０を用いれば、プロセッサ１０に内蔵することで、高速動作するプロセッサ１０のトレース情報を得ることができる。
【００５３】
（変形例１）
本発明の実施の形態の変形例に係るトレース装置においては、トレース情報圧縮ユニット２４は、トレース情報の圧縮を停止する圧縮停止部２６を備え、分岐命令に係わるトレース情報は、トレース開始後、または分岐先アドレス情報が圧縮された形式のトレース情報での格納が一定の容量を超えた後は、分岐先アドレス情報が圧縮されない形式のトレース情報を格納するようにしても良い。例えば、ＤＰＦ３やＤＰＦ４（命令実行アドレスと分岐先アドレスの上位１６ビットが同じ時に下位１５ビット［１５：１］の差異をアドレス情報として用いることで圧縮する）を用いて、分岐命令のアドレス情報を圧縮して格納する時、格納したトレース情報の合計容量が一定の値を超えても、ＤＰＦ５による分岐命令のトレース情報が格納されない時は、ＤＰＦ３やＤＰＦ４に圧縮できる条件が整っていても、ＤＰＦ５によって分岐命令のトレース情報を格納する。
【００５４】
このように制御することで、格納できるトレース情報量は減少するが、トレースメモリ３２の内容にＤＰＦ５が発生しないようなプログラムの解析でも、妥当な量のトレース情報を保存することができ、搭載プロセッサシステムの開発期間を短くする機能の高いプロセッサ１０を提供できる。
【００５５】
本発明の実施の形態の変形例１に係るトレース装置２０を用いれば、プログラムの分岐アドレス情報を圧縮して、トレース情報を格納した時に、プログラムの実行状況の復元の精度を向上させることができる。  
（変形例２）
本発明の実施の形態の変形例２に係るトレース装置においては、トレース情報は、プロセッサ１０が実行した命令毎のトレース情報に限定しても良い。例えば、プロセッサコアモジュール１４がストールなどで命令を実行していない時は、トレース情報を格納しないようにすることで、プロセッサコアモジュール１４の実行サイクル数の情報は失われるが、プログラムで実行した命令のトレース情報を、トレースメモリ３２に、より多く格納することができ、搭載プロセッサシステムの開発期間を短くする機能の高いプロセッサ１０を提供できる。
【００５６】
又、本発明の実施の形態の変形例２に係るトレース装置においては、トレース情報は、トレース情報の内、プロセッサ１０が実行した分岐命令に関するトレース情報に限定しても良い。
【００５７】
本発明の実施の形態の変形例２に係るトレース装置２０を用いれば、プロセッサコアモジュール１４が実行した命令に関するトレース情報に、限定することで、トレースメモリ３２に格納できるトレース情報を増加させることができる。
【００５８】
[その他の実施の形態]
上記のように、本発明の実施の形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施の形態及び運用技術が明らかとなろう。
【００５９】
このように、本発明はここでは記載していない様々な実施の形態等を含むことは勿論である。したがって、本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【図面の簡単な説明】
【００６０】
【図１】本発明の実施の形態に係るトレース装置を内蔵するプロセッサの模式的ブロック構成図。
【図２】本発明の実施の形態に係るトレース装置におけるプログラム解析のデータの流れを説明する模式的ブロック構成図。
【図３】トレースフォーマットの一覧を示す図。
【図４】トレース情報が格納される様子を示す図。
【図５】トレース情報が格納されたトレースメモリの内容を示す図。
【図６】トレースメモリと、格納されたトレース情報をサイクル毎に切り出した時の状況を示す図。
【符号の説明】
【００６１】
１０…プロセッサ
１２…ＪＴＡＧデバッグ装置
１４…プロセッサコアモジュール
１６…デバッグモジュール
１８…トレース情報出力ユニット
２０…トレース装置
２２…ＪＴＡＧデバッグインタフェース
２４…トレース情報圧縮ユニット
２６…圧縮停止部
２８…アドレスレジスタ
３０…バッファレジスタ
３２…トレースメモリ
３４…メインバス
３６，３８，５８…バス
４０…ホストコンピュータ
４２…トレース解析プログラム格納部
４４…オブジェクト／ソースリスト
５０…トレース情報出力データバス
５２…トレースメモリ読み出しデータバス
５４…最終格納アドレス読み出しデータバス
５６…出力データバス
６４…ＪＴＡＧデバッグ出力バス
【図１】
2006012064.tif 000003
【図２】
2006012064.tif 000004
【図３】
2006012064.tif 000005
【図４】
2006012064.tif 000006
【図５】
2006012064.tif 000007
【図６】
2006012064.tif 000008