(57)【要約】【課題】プログラムトレース情報の圧縮効率の高いプロセッサ及び開発支援装置を実現する。【解決手段】ＣＰＵ１００の直接分岐命令の実行時には、分岐フラグ用シフトレジスタ８００に、分岐の条件成立／不成立のフラグをシフトインして蓄積し、分岐成立時にはさらに、分岐takenカウンタ９００をインクリメントし、過去の分岐情報を蓄積する。蓄積された分岐情報は、現状の分岐フラグ数８２１と分岐takenカウンタ値９０１を使い、分岐フラグと分岐takenカウンタ値のどちらが短いか判断してトレース情報を出力する。【選択図】図１１
2005196437.tif 000002
【特許請求の範囲】
【請求項１】
CPUと、前記CPUから得られる、分岐命令の実行信号と条件付分岐命令の条件成立信号を受け、条件成立した分岐命令実行の時には成立ビットを、条件成立していない分岐命令実行の時には不成立ビットを、シフトレジスタにシフトインし、前記シフトレジスタに蓄積した全ビットと有効ビット数情報をまとめた分岐状態メッセージを出力するトレース制御回路から構成されたことを特徴としたプロセッサ。
【請求項２】
CPUと、前記CPUから得られる、分岐命令の実行信号と条件付分岐命令の条件成立信号を受け、条件成立した分岐命令実行の時にはインクリメントし、条件成立していない分岐命令実行の時にはクリアする分岐takenカウンタを有し、分岐takenカウント値を含む分岐takenカウントメッセージを出力するトレース制御回路から構成されたことを特徴としたプロセッサ。
【請求項３】
CPUと、前記CPUから得られる、分岐命令の実行信号と条件付分岐命令の条件成立信号を受け、条件成立した分岐命令実行の時には成立ビットを、条件成立していない分岐命令実行の時には不成立ビットを、シフトレジスタにシフトインし、前記シフトレジスタに蓄積した全ビットと有効ビット数情報をまとめた分岐状態メッセージを生成し、
条件成立した分岐命令実行の時にはインクリメントし、条件成立していない分岐命令実行の時にはクリアする分岐takenカウンタを有し、分岐takenカウント値を含む分岐takenカウントメッセージを生成し、前記分岐状態メッセージよりも、前記分岐takenカウントメッセージの方が短い符号となる場合には、前記分岐takenカウントメッセージを出力することを選択し、そうでない場合には、分岐状態メッセージを出力することを選択するトレース制御回路から構成されたことを特徴としたプロセッサ。
【請求項４】
請求項１記載の分岐状態メッセージを入力し、トレース情報を蓄えるトレースメモリと、前記トレースメモリの内容を読み取り、CPUが実行したソースプログラムを用いて、実行履歴を復元する実行履歴復元プログラムを備えたコンピュータから構成された開発支援装置において、前記実行履歴復元プログラムは、前記トレースメモリ上のトレース情報を前記ソースプログラムの命令に順番に対応させつつ復元し、前記トレースメモリ上の分岐状態メッセージに遭遇した時には、分岐命令を分岐成立／不成立ビットに対応させ、成立ビットの場合には、分岐命令の分岐先に履歴復元ポイントを更新し、不成立ビットの場合には、分岐命令の次の命令に履歴復元ポイントを更新することを特徴とした開発支援装置。
【請求項５】
請求項２記載の分岐takenカウントメッセージを入力し、トレース情報を蓄えるトレースメモリと、前記トレースメモリの内容を読み取り、CPUが実行したソースプログラムを用いて、実行履歴を復元する実行履歴復元プログラムを備えたコンピュータから構成された開発支援装置において、前記実行履歴復元プログラムは、前記トレースメモリ上のトレース情報を前記ソースプログラムの命令に順番に対応させつつ復元し、前記トレースメモリ上の分岐takenカウントメッセージに遭遇した時には、分岐takenの繰り返し数を分岐成立ビットの列に翻訳し、分岐命令を分岐成立ビットに対応させ、成立ビットの場合には、分岐命令の分岐先に履歴復元ポイントを更新することを特徴とした開発支援装置。
【請求項６】
請求項３記載の分岐状態メッセージまたは分岐takenカウントメッセージを入力し、トレース情報を蓄えるトレースメモリと、前記トレースメモリの内容を読み取り、CPUが実行したソースプログラムを用いて、実行履歴を復元する実行履歴復元プログラムを備えたコンピュータから構成された開発支援装置において、前記実行履歴復元プログラムは、前記トレースメモリ上のトレース情報を前記ソースプログラムの命令に順番に対応させつつ復元し、前記トレースメモリ上の分岐状態メッセージに遭遇した時には、分岐命令を分岐成立／不成立ビットに対応させ、前記トレースメモリ上の分岐takenカウントメッセージに遭遇した時には、分岐takenの繰り返し数を分岐成立ビットの列に翻訳し、分岐命令を分岐成立ビットに対応させ、成立ビットの場合には、分岐命令の分岐先に履歴復元ポイントを更新し、不成立ビットの場合には、分岐命令の次の命令に履歴復元ポイントを更新することを特徴とした開発支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム実行状態を外部で観測可能な情報処理装置（プロセッサ）及びそのプロセッサを用いた開発支援装置に関する。
【背景技術】
【０００２】
「トレース情報出力機能」は、プロセッサのプログラム実行状態を、外部のホストコンピュータ上で動作しているデバッガに出力する機能である。システムが何らかの異常動作を検出した場合に、蓄積されたトレース情報を用いることによって、その時点から遡った実行履歴をシステム開発者が確認し、その原因を特定できるようにする。
ところが、開発支援装置においては、プロセッサにトレース情報の出力を行なうためのピンを追加しなければならず、その本数や動作周波数(トレース情報出力のバンド幅)が制限される。また、トレース情報を蓄積するメモリ容量にも限界がある。そのため、限られたトレース出力バンド幅やトレースメモリ容量を用いて、最大限にその効果を発揮するためには、トレース情報の圧縮が必要となる。
【０００３】
従来のトレース情報の圧縮手法の一例として、いわゆる「分岐トレース」と呼ばれるトレース情報取得方法がある（たとえば非特許文献１）。分岐トレースでは、下記(1),(2)のルールに基づき、分岐発生毎に分岐に関する情報をチップ外部に出力する。その出力されたトレース情報を元に、外部のデバッガにおいて、ソースプログラムと照らし合わせながら解析することにより、全ての分岐先アドレスの情報がなくても、実行履歴が復元できる。
(1)  ソースプログラムに明示的に分岐先アドレスが記述されている直接分岐の時には、分岐が実行されたことだけを示すメッセージ(Direct Branch Message)を出力
(2)  ソースプログラムに分岐先アドレスが明示的に記述されておらず、実行時にそれが決定する間接分岐の時には、分岐先アドレスを含む分岐メッセージ(Indirect Branch Message)を出力
以上の原理に基づくプロセッサと実行履歴復元ソフトウェアを従来技術として挙げ、以下に図を参照しながら説明する。
【０００４】
図２０は、従来のトレース情報を出力するプロセッサの構成を示している。
【０００５】
ＣＰＵ１００は、直接分岐命令実行時の条件成立時には、直接分岐命令実行信号１０２と分岐命令実行時の条件成立信号１０４を同時に”1”にする。直接分岐命令実行時の条件不成立時には、直接分岐命令実行信号１０２が”1”であり、かつ、分岐命令実行時の条件成立信号１０４は”0”である。間接分岐命令実行時の条件成立時には、間接分岐命令実行信号１０３と分岐命令実行時の条件成立信号１０４を同時に”1”にする。間接分岐命令実行時の条件不成立時には、間接分岐命令実行信号１０３が”1”であり、かつ、分岐命令実行時の条件成立信号１０４は”0”である。割込みや例外を受理した時には、割込み実行信号１０５が”1”となり、直接分岐命令実行信号１０２、間接分岐命令実行信号１０３、分岐命令実行時の条件成立信号１０４の値は無視してもよい。
【０００６】
トレースメッセージ／パケット制御ステートマシン(Type0)２００は、ＣＰＵ１００からの直接分岐命令実行信号１０２、間接分岐命令実行信号１０３、条件分岐命令実行時の条件成立信号１０４、割込み実行信号１０５を受け取り、図２１のトレースメッセージ／パケット制御ステートマシンのステート表に示すように、入力信号と内部状態からシーケンスを作り出し、MSEO[1:0]出力(Type0)２０１と、MDO[7:0]出力選択信号(Type0)２０２を生成する。MSEO[1:0]出力(Type0)２０１は、そのままトレース状態出力端子(MSEO[1:0])１０１０に出力される。
【０００７】
分岐taken＋例外検出回路３２０は、ＣＰＵ１００からの直接分岐命令実行信号１０２、間接分岐命令実行信号１０３、条件分岐命令の条件成立信号１０４、割込み実行信号１０５を入力とし、直接分岐命令実行信号１０２と条件分岐命令の条件成立信号１０４の論理積、間接分岐命令実行信号１０３と条件分岐命令の条件成立信号１０４の論理積、並びに割込み実行信号１０５の３項の論理和をとったものであり、分岐が実行されることを意味する分岐taken＋例外信号３２１を出力する。
分岐先アドレス更新検出回路３１０は、ＣＰＵ１００からの間接分岐命令実行信号１０３、条件分岐命令の条件成立信号１０４、割込み実行信号１０５を入力とし、間接分岐命令実行信号１０３と条件分岐命令の条件成立信号１０４の論理積、並びに割込み実行信号１０５の３項の論理和をとったものであり、アドレス出力が必要な分岐が実行されたことを意味する分岐先アドレス更新信号３１１を出力する。
【０００８】
シーケンシャル命令実行カウンタ(Type0)５００は、ＣＰＵ１００からの命令完了信号１０１をカウントイネーブルに入力し、前記分岐taken＋例外信号３２１によって同期クリアされる。シーケンシャル命令実行カウンタ(Type0)５００のカウント値は、前記分岐taken＋例外信号３２１によって、シーケンシャル命令実行カウンタ値保持手段(Type0)５１０にロードされ、トレース情報の出力に備えられる。
【０００９】
分岐先アドレス保持手段６００は、前記分岐先アドレス更新信号３１１がアサートされたとき、ＣＰＵ１００からの分岐先アドレス１１０を入力し保持する。
【００１０】
MDO[7:0]出力マルチプレクサ(Type0)７００は、ヘッダー用固定値”0x03”出力回路４１０の出力と、ヘッダー用固定値”0x04”出力回路４２０の出力と、シーケンシャル命令実行カウンタ値保持手段(Type0)５１０の出力と、分岐先アドレス保持手段６００の出力を8ビット単位に分割した信号とを、７グループの選択される信号として入力し、MDO[7:0]出力選択信号(Type0)２０２によって７グループの内の１つを選択して、MDO[7:0]出力信号(Type0)７０１として出力する。MD0[7:0]出力信号(Type0)７０１は、そのままトレースデータ出力端子(MDO[7:0])に出力される。
【００１１】
図２２には、図２０のシステムが出力するトレースメッセージのＩＤであるＴＣＯＤＥの割り当てを示している。図２３には、Program Trace, Direct Branch Messageのメッセージフォーマットを、図２４には、Program Trace, Indirect Branch Messageのメッセージフォーマットを示している。それぞれ、ここでは説明していないトレース出力の基準クロックに同期してMDO[7:0]出力とMSEO[1:0]出力を変化させる。とりわけMSEO[1:0]は、メッセージ及びパケットの開始・終了を意味するので重要である。
【００１２】
図２１のトレースメッセージ／パケット制御ステートマシンのステート表に示すように、直接分岐の条件成立(直接分岐命令実行信号１０２と分岐命令実行時の条件成立信号１０４を同時に”1”)時にはIDLE状態→DIR_HEAD状態→DIR_ICNT状態→IDLE状態へと遷移し、MDO出力選択信号出力及びMSEO出力信号によって、図２３のProgram Trace, Direct Branch Messageのメッセージフォーマットに示すようなシーケンス出力が得られる。間接分岐命令の条件成立(間接分岐命令実行信号１０３と分岐命令実行時の条件成立信号１０４を同時に”1”)時、または、割込み発生(割込み実行信号１０５が”1”)時には、IDLE状態→IND_HEAD状態→IND_ICNT状態→IND_UADR0状態→IND_UADR1状態→IND_UADR2状態→IND_UADR3状態→IDLE状態と遷移し、図２４のProgram Trace, Indirect Branch Messageのメッセージフォーマットに示すようなトレース出力が得られる。本来であれば、それぞれのシーケンスの間にも次の分岐命令が実行される可能性があり、それらを受け付けるように作られている必要があるが、説明を簡単にするために省略している。また、U-ADDRの長さは、上位アドレスが変化ない場合には、上位ビットを出力しなくてもよいプロトコルとなっているが、これも単純化のため、固定長32ビット出力する制御で説明している点に注意頂きたい。
図１９に、このプロセッサを用いた開発支援装置の全体の構成図を示す。
【００１３】
プロセッサ１からのトレース状態信号１０１１、トレースデータ信号１０２１をトレース情報蓄積装置２が受け、トレースメモリ制御１２１０がトレースメモリ制御信号１２１１、トレースメモリ書込みデータ１２１２を制御することによって、トレースメモリ１２３０に対するメモリアクセスを制御し、トレース情報としてトレースメモリ１２３０に蓄積する。ホストコンピュータ３は、トレース情報蓄積装置２にトレースメモリ読み出し要求１３０１を出力し、トレースメモリ制御１２１０を介してトレースメモリにアクセスし、トレースメモリ出力１２３１を取得する。
【００１４】
次に、このように構成されたプロセッサ１からトレースデータを取得し、実行履歴を復元する様子を図２６のプログラムを例にとりながら説明する。図２６の0x50000000番地から実行した場合、(3)の直接分岐では、それまでにシーケンシャル命令実行数が２であるから、”PTDB I-CNT=2”が出力される。(6),(9)の直接分岐では、それ以前のシーケンシャル命令実行数はどちらも２であるが、まとめられて”PTDB I-CNT=2,I-CNT=2”が出力される。次の(12)では、not-takenであったため、(17)の間接分岐の出現まで、シーケンシャル命令実行数が持ち越され、I-CNT=7になり、また間接分岐がtakenであったため、”PTIB  I-CNT=7,U-ADDR=0x50000300”が出力される。同様に(20)の”ret”命令は間接分岐のtakenとみなされるので、”PTIB  I-CNT=2,U-ADDR=0x50000034”が出力される。このようにして取得されたトレース情報は図２７のようになる。
【００１５】
次に、図２６のソースプログラムと図２７のトレース情報が与えられた時にホストコンピュータ３が、図２５に示したアルゴリズムに従って実行履歴を復元する手順を説明する。
【００１６】
ステップ2001で、IPは0x50000000番地、TPは0番地、ETPは4番地に設定される。
【００１７】
TP≠ETPなので2002はスキップし、TP=0のトレースメッセージは”PTDB I-CNT=2”であるので、ステップ2003、ステップ2004と進み、IP=0x50000000番地の命令"命令１",IP=0x50000004番地の命令”命令２”を表示し、ステップ2005でIP=0x50000008番地の命令”bra loop_A”を表示し、直接分岐先アドレスの0x50000014(loop_A)をIPに設定する。ステップ2006では、このメッセージのI-CNTパケットを終了したのでステップ2050に進み、TPをインクリメントする。
【００１８】
次のTP=1では、”TPDB I-CNT=2,I-CNT=2”を処理するが、TP≠ETPなので2002はスキップし、ステップ2003、ステップ2004へと進み、IP=0x50000014, IP=0x50000018の命令を表示し、ステップ2005で、”bne loop_A”を表示し、IPを再び0x50000014(loop_A)に設定する。I-CNTのパケットが２つあるので、もう一度同じループを繰り返し、ステップ2050でTPを2にインクリメントする。
【００１９】
次のTP=2では、”PTIB I-CNT=7,U-ADDR=0x50000300”を処理するが、これもTP≠ETPなので2002はスキップし、ステップ2003でNへ進み、ステップ2013でYに進む。ステップ2014で、IP=0x50000014の”loop_A:命令3”から、IP=0x50000018の”命令4”、IP=0x5000001cの”bne    loop_A”、IP=0x50000020の”命令5”、IP=0x50000024の”命令6”、IP=0x50000028の”命令7”、IP=0x5000002cの”mov    Sub_C,a0”まで、順次表示する。続いてステップ2015で、IP=0x50000030の間接分岐命令”call (a0)”を表示し、ステップ2016で、IPをU-ADDRに示されるアドレス0x50000300に設定する。ステップ2050でTPを3にインクリメントする。
【００２０】
次のTP=3では、”PTIB I-CNT=2,U-ADDR=0x5000034”を処理するが、これもTP≠ETPなので2002はスキップし、ステップ2003でNへ進み、ステップ2013でYに進む。ステップ2014で、IP=0x50000300の”Sub_C:  命令9”、IP=0x50000304の”命令10”まで、順次表示する。続いてステップ2015で、IP=0x50000308の間接分岐命令”ret” を表示し、ステップ2016で、IPをU-ADDRに示されるアドレス0x50000034に設定する。ステップ2050でTPを4にインクリメントする。
次のTP=4では、ステップ2002で、TP==ETPと判定されるので、実行履歴復元は終了する。このようにして得られた実行履歴を図２８に示す。
【非特許文献１】IEEE-ISTO 5001(TM)-1999,”The Nexus 5001 Forum(TM) Standard for a Global Embedded Processor Debug Interface”
【発明の開示】
【発明が解決しようとする課題】
【００２１】
しかしながら従来技術には、トレース情報の圧縮率が低いという問題点がある。すなわち、従来技術においては、条件分岐命令の条件不成立がシーケンシャル命令実行にカウントされ、分岐(直接分岐または間接分岐)の条件成立(分岐の実行)の度に、シーケンシャル命令実行回数を出力しなければならない。また、1回のシーケンシャル命令実行回数の出力にトレース出力クロックの少なくとも1クロックかかっており、ＣＰＵの動作周波数とトレースクロックの比（トレース出力クロックは、通常ＣＰＵクロックの1/2,1/4など分周した周波数で、チップ外部に伝送可能な動作周波数が選ばれる）を考慮すれば、分岐命令が連続する場合など、トレース情報の発生レートに比べ、トレース情報の出力レートが低く、適当な容量のバッファを用意していても、すぐにトレース出力が不可能になってしまう。言い換えれば、実際のＣＰＵの動作に比べ、トレース情報出力の圧縮率が低いということである。
【００２２】
このような問題点に鑑み、本願の発明は、高速なＣＰＵの動作を外部で確実に捕捉可能な程度にトレース情報を高度に圧縮する手段を提供することが目的である。
【課題を解決するための手段】
【００２３】
上記課題に対しては、本願の請求項１、４の発明によって、分岐命令の条件不成立をシーケンシャル命令実行条件に含めず、CPUの分岐命令の条件が成立した時には成立ビットを、分岐が不成立の時は不成立ビットをシフトレジスタにシフトインし、そのシフトレジスタに蓄積した全ビットと有効ビット数情報をまとめた分岐状態メッセージを出力することにより解決する。
【００２４】
さらに特定の条件におけるトレース情報圧縮率を上げるため、本願の請求項２、５の発明によって、CPUの分岐が連続して成立した時に、その成立回数を計数するカウンタの値を含む分岐takenカウントメッセージを出力することにより、課題解決を図る。
【００２５】
さらに、つねに最適な圧縮率のトレース情報を出力するため、本願の請求項３、６の発明によって、分岐状態メッセージと、分岐takenカウントメッセージのどちらが短いかを判断し、選択して出力することにより、課題解決を図る。
【発明の効果】
【００２６】
本発明の請求項１、４の発明に関わるプロセッサ及び開発支援装置によれば、分岐発生の度に旧来は１パケット要していたところが、パケットの中の1ビットで済むようになるため、その情報の圧縮率は約1/8と見積もれる。
【００２７】
さらに、本発明の請求項３、６の発明に関わるプロセッサ及び開発支援装置によれば、同じ分岐が連続するときには、さらに情報の圧縮率は1/32まで高めることができる。
【発明を実施するための最良の形態】
【００２８】
以下、本発明の実施例を、図面を参照しながら説明する。
【実施例１】
【００２９】
図１は、本発明の第１の実施例におけるプロセッサの構成を示すブロック図である。
ＣＰＵ１００は、直接分岐命令実行時の条件成立時には、直接分岐命令実行信号１０２と分岐命令実行時の条件成立信号１０４を同時に”1”にする。直接分岐命令実行時の条件不成立時には、直接分岐命令実行信号１０２が”1”であり、かつ、分岐命令実行時の条件成立信号１０４は”0”である。間接分岐命令実行時の条件成立時には、間接分岐命令実行信号１０３と分岐命令実行時の条件成立信号１０４を同時に”1”にする。間接分岐命令実行時の条件不成立時には、間接分岐命令実行信号１０３が”1”であり、かつ、分岐命令実行時の条件成立信号１０４は”0”である。割込みや例外を受理した時には、割込み実行信号１０５が”1”となり、直接分岐命令実行信号１０２、間接分岐命令実行信号１０３、分岐命令実行時の条件成立信号１０４の値は無視してもよい。
【００３０】
トレースメッセージ／パケット制御ステートマシン(Type2)２２０は、ＣＰＵ１００からの直接分岐命令実行信号１０２、間接分岐命令実行信号１０３、条件分岐命令実行時の条件成立信号１０４、割込み実行信号１０５、分岐フラグカウンタ８２０からの分岐フラグカウンタ値８２１を受け取り、図２のトレースメッセージ／パケット制御ステートマシンのステート表に示すように、入力信号と内部状態からシーケンスを作り出し、MSEO[1:0]出力(Type2)２２１と、MDO[7:0]出力選択信号(Type2)２２２を生成する。MSEO[1:0]出力(Type2)２２１は、そのままトレース状態出力端子(MSEO[1:0])１０１０に出力される。
【００３１】
分岐taken検出回路３５０は、ＣＰＵ１００からの直接分岐命令実行信号１０２、間接分岐命令実行信号１０３、条件分岐命令の条件成立信号１０４を入力とし、直接分岐命令実行信号１０２と条件分岐命令の条件成立信号１０４の論理積と、間接分岐命令実行信号１０３と条件分岐命令の条件成立信号１０４の論理積との２項の論理和をとったものであり、分岐が実行されることを意味する分岐taken信号３５１を出力する。
【００３２】
分岐先アドレス更新検出回路３１０は、ＣＰＵ１００からの間接分岐命令実行信号１０３、条件分岐命令の条件成立信１０４、割込み実行信号１０５を入力とし、間接分岐命令実行信号１０３と条件分岐命令の条件成立信号１０４の論理積、並びに割込み実行信号１０５の３項の論理和をとったものであり、アドレス出力が必要な分岐が実行されたことを意味する分岐先アドレス更新信号３１１を出力する。
【００３３】
分岐検出回路３４０は、ＣＰＵ１００からの直接分岐命令実行信号１０２、間接分岐命令実行信号１０３、割込み実行信１０５を入力とし、それらの論理和を、分岐実行信号３４１として出力する。
【００３４】
シーケンシャル命令実行カウンタ(Type2,3)５３０は、ＣＰＵ１００からの命令完了信号１０１をカウントイネーブルに入力し、前記分岐実行信号３４１によって同期クリアされる。シーケンシャル命令実行カウンタ(Type2,3)５３０のカウント値は、前記分岐実行信号３４１によって、シーケンシャル命令実行カウンタ値保持手段(Type2,3)５４０にロードされ、トレース情報の出力に備えられる。
【００３５】
分岐先アドレス保持手段６００は、前記分岐先アドレス更新信号３１１がアサートされたとき、ＣＰＵ１００からの分岐先アドレス１１０を入力し保持する。
【００３６】
分岐フラグカウンタ８２０は、前記分岐実行信号３４１をカウントイネーブルに入力し、前記分岐先アドレス更新信号３１１で同期クリアされるカウンタである。分岐フラグカウンタ値８２１は、ステートマシン２２０に供給され、またその下位３ビットは、前記分岐先アドレス更新信号３１１がアサートされるタイミングまたは、図示されていないが、ステートマシン２２０がBST_HEADステートに遷移するタイミングで、分岐フラグカウンタ値保持手段８３０にロードされる。
【００３７】
分岐フラグ用シフトレジスタ８００は、前記分岐実行信号３４１をシフトイネーブルの信号に使い、分岐taken信号３５１をシフトインする。前記分岐先アドレス更新信号３１１がアサートされる時、分岐フラグ用シフトレジスタ８００は同期クリアされるが、それ以前のフラグの値は、分岐フラグ保持手段８１０にロードされる。
【００３８】
MDO[7:0]出力マルチプレクサ(Type2)７２０は、ヘッダー用固定値”0x38”出力回路４３０の出力と、ヘッダー用固定値”0x3a”出力回路４５０の出力と、シーケンシャル命令実行カウンタ値保持手段(Type2,3)５４０の出力と、分岐先アドレス保持手段６００の出力を8ビット単位に分割した信号と、分岐フラグカウンタ値保持手段８３０の出力と分岐フラグ保持手段８１０の出力をマージして8ビット単位にアラインしなおした信号との、１３グループの選択される信号として入力し、MDO[7:0]出力選択信号(Type2)２２２によって１３グループの内の１つを選択して、MDO[7:0]出力信号(Type2)７２１として出力する。MD0[7:0]出力信号(Type2)７２１は、そのままトレースデータ出力端子(MDO[7:0])に出力される。
【００３９】
図３には、図１のシステムが出力するトレースメッセージのＩＤであるＴＣＯＤＥの割り当てを示している。図４には、Program Trace, Branch Status Messageのメッセージフォーマットを、図５には、Program Trace, Branch Destination Address Messageのメッセージフォーマットを、図６には、Program Trace, Exception Messageのメッセージフォーマットを示している。それぞれ、ここでは説明していないトレース出力の基準クロックに同期してMDO[7:0]出力とMSEO[1:0]出力を変化させる。
【００４０】
図２のトレースメッセージ／パケット制御ステートマシン(Type2)のステート表に示すように、直接分岐の条件成立(直接分岐命令実行信号１０２と分岐命令実行時の条件成立信号１０４を同時に”1”)時、かつ分岐フラグカウント値がフル(BFcount==31)の時には、IDLE状態→BST_HEAD状態→BST_NV状態→BST_BRF0→BST_BRF1→BST_BRF2→BST_BRF3→IDLE状態へと遷移し、MDO出力選択信号出力及びMSEO出力信号によって、図４のProgram Trace, Branch Status Messageのメッセージフォーマットに示すシーケンス出力が得られる。
【００４１】
間接分岐命令の条件成立(間接分岐命令実行信号１０３と分岐命令実行時の条件成立信号１０４を同時に”1”)時、かつ分岐フラグカウント値がゼロ(BFcount==0)の時には、IDLE状態→BDA_HEAD状態→IND_UADR0状態→IND_UADR1状態→IND_UADR2状態→IND_UADR3状態→IDLE状態と遷移し、図５のProgram Trace, Branch Destination Address Messageのメッセージフォーマットに示すようなトレース出力が得られる。
【００４２】
間接分岐命令の条件成立(間接分岐命令実行信号１０３と分岐命令実行時の条件成立信号１０４を同時に”1”)時、かつ分岐フラグカウント値がゼロでない(BFcount!=0)の時には、先にPTBSTメッセージを出力してから、PTBDAメッセージを出力するように制御される。
【００４３】
割込み発生(割込み実行信号１０５が”1”)時、かつ分岐フラグカウント値がゼロ(BFcount==0)の時には、IDLE状態→EXC_HEAD状態→EXC_ICNT状態→IND_UADR0状態→IND_UADR1状態→IND_UADR2状態→IND_UADR3状態→IDLE状態と遷移し、図６のProgram Trace, Exception Messageのメッセージフォーマットに示すようなトレース出力が得られる。
【００４４】
割込み発生(割込み実行信号１０５が”1”)時、かつ分岐フラグカウント値がゼロでない(BFcount!=0)の時には、先にPTBSTメッセージを出力してから、PTEXCメッセージを出力するように制御される。
【００４５】
本来であれば、それぞれのシーケンスの間にも次の分岐命令が実行される可能性があり、それらを受け付けるように作られている必要があるが、説明を簡単にするために省略している。また、U-ADDRの長さは、上位アドレスが変化ない場合には、上位ビットを出力しなくてもよいプロトコルとなっているが、これも単純化のため、固定長32ビット出力する制御で説明している点に注意頂きたい。
【００４６】
図１９に、このプロセッサを用いた開発支援装置の全体の構成図を示す。
【００４７】
プロセッサ１からのトレース状態信号１０１１、トレースデータ信号１０２１をトレース情報蓄積装置２が受け、トレースメモリ制御１２１０がトレースメモリ制御信号１２１１、トレースメモリ書込みデータ１２１２を制御することによって、トレースメモリ１２３０に対するメモリアクセスを制御し、トレース情報としてトレースメモリ１２３０に蓄積する。ホストコンピュータ３は、トレース情報蓄積装置２にトレースメモリ読み出し要求１３０１を出力し、トレースメモリ制御１２１０を介してトレースメモリにアクセスし、トレースメモリ出力１２３１を取得する。(これは従来例と全く同じである。)
次に、このように構成されたプロセッサ１からトレースデータを取得し、実行履歴を復元する様子を図８のプログラムを例にとりながら説明する。図８の0x50000000番地から実行した場合、(17)の間接分岐の出現までの分岐のtaken/not-takenがシフトレジスタに蓄積され、”PTBST NV=4,BR-FLAG=0b0111”が出力され、その後(17)の間接分岐がtakenであったため、”PTBDA U-ADDR=0x50000300”が出力される。同様に(20)の”ret”命令は間接分岐のtakenとみなされるので、”PTBDA U-ADDR=0x50000034”が出力される。このようにして取得されたトレース情報は図９のようになる。
【００４８】
次に、図８のソースプログラムと図９のトレース情報が与えられた時にホストコンピュータ３が、図７に示したアルゴリズムに  従って実行履歴を復元する手順を説明する。
【００４９】
まず、ステップ2001で、IPは0x50000000番地、TPは0番地、ETPは3番地に設定される。次にTP≠ETPなので2002はスキップし、TP=0のトレースメッセージは”PTBST BR-FLAG=0b0111”であるので、ステップ2100、ステップ2101へと進み、IP=0x50000000番地の命令"命令１",IP=0x50000004番地の命令”命令２”を表示し、ステップ2102でIP=0x50000008番地の命令”bra loop_A”を表示し、直接分岐先アドレスの0x50000014番地(loop_A)をIPに設定する。ステップ2103では、分岐フラグの有効フラグはまだ残っているので、再度ステップ2101へ戻る。今度は、IP=0x50000014番地の命令”loop_A: 命令3”、IP=0x50000018番地の “命令4”を表示し、ステップ2102で、IP=0x5000001c番地の”bne loop_A”を表示し、分岐フラグが１であったので、IPに直接分岐先アドレス0x50000014番地(loop_A)を設定する。同様にIP=0x50000014からIP=0x5000001cを2回繰り返す。最後のIP=0x5000001c番地の”bne loop_A”では、対応する分岐フラグが”0”であるので、次の命令のアドレス0x50000020をIPに設定し、ステップ2103で有効フラグ数が終了したので、ステップ2050へ進み、TPをインクリメントする。
次のTP=1では、”PTBDA U-ADDR=0x50000300”を処理するが、これもTP≠ETPなので2002はスキップし、ステップ2100、ステップ2200でNへ進み、ステップ2300でYに進む。ステップ2301で、IP=0x50000020の”命令5”から、IP=0x50000024の”命令6”、IP=0x50000028の”命令7”、IP=0x5000002cの”mov    Sub_C,a0”まで順次表示する。続いてステップ2302で、IP=0x50000030の間接分岐命令”call (a0)”を表示し、ステップ2303で、IPをU-ADDRに示されるアドレス0x50000300に設定する。ステップ2050でTPを2にインクリメントする。
【００５０】
次のTP=2では、”PTBDA U-ADDR=0x5000034”を処理するが、これもTP≠ETPなので2002はスキップし、ステップ2100、ステップ2200でNへ進み、ステップ2300でYに進む。ステップ2301で、IP=0x50000300の”Sub_C:  命令9”、IP=0x50000304の”命令10”まで、順次表示する。続いてステップ2302で、IP=0x50000308の間接分岐命令”ret” を表示し、ステップ2303で、IPをU-ADDRに示されるアドレス0x50000034に設定する。ステップ2050でTPを3にインクリメントする。
次のTP=3では、ステップ2002で、TP==ETPと判定されるので、実行履歴復元は終了する。このようにして得られた実行履歴を図１０に示す。
【００５１】
この例で示したように、直接分岐命令の結果が従来１パケット要していたものを本発明では、PTBSTメッセージのBR-FLAGの1ビットにまで圧縮可能である。
【実施例２】
【００５２】
図１１は、本発明の第２の実施例におけるプロセッサの構成を示すブロック図である。
【００５３】
ＣＰＵ１００は、直接分岐命令実行時の条件成立時には、直接分岐命令実行信号１０２と分岐命令実行時の条件成立信号１０４を同時に”1”にする。直接分岐命令実行時の条件不成立時には、直接分岐命令実行信号１０２が”1”であり、かつ、分岐命令実行時の条件成立信号１０４は”0”である。間接分岐命令実行時の条件成立時には、間接分岐命令実行信号１０３と分岐命令実行時の条件成立信号１０４を同時に”1”にする。間接分岐命令実行時の条件不成立時には、間接分岐命令実行信号１０３が”1”であり、かつ、分岐命令実行時の条件成立信号１０４は”0”である。割込みや例外を受理した時には、割込み実行信号１０５が”1”となり、直接分岐命令実行信号１０２、間接分岐命令実行信号１０３、分岐命令実行時の条件成立信号１０４の値は無視してもよい。
【００５４】
トレースメッセージ／パケット制御ステートマシン(Type3)２３０は、ＣＰＵ１００からの直接分岐命令実行信号１０２、間接分岐命令実行信号１０３、条件分岐命令実行時の条件成立信号１０４、割込み実行信号１０５、分岐フラグカウンタ８２０からの分岐フラグカウンタ値８２１、分岐takenカウンタ９００からの分岐takenカウンタ値９０１を受け取り、図１２のトレースメッセージ／パケット制御ステートマシン(Type3)のステート表に示すように、入力信号と内部状態からシーケンスを作り出し、MSEO[1:0]出力(Type3)２３１と、MDO[7:0]出力選択信号(Type3)２３２を生成する。MSEO[1:0]出力(Type3)２３１は、そのままトレース状態出力端子(MSEO[1:0])１０１０に出力される。
【００５５】
分岐taken検出回路３５０は、ＣＰＵ１００からの直接分岐命令実行信号１０２、間接分岐命令実行信号１０３、条件分岐命令の条件成立信号１０４を入力とし、直接分岐命令実行信号１０２と条件分岐命令の条件成立信号１０４の論理積と、間接分岐命令実行信号１０３と条件分岐命令の条件成立信号１０４の論理積との２項の論理和をとったものであり、分岐が実行されることを意味する分岐taken信号３５１を出力する。
【００５６】
分岐not-taken検出回路３３０は、ＣＰＵ１００からの直接分岐命令実行信号１０２、間接分岐命令実行信号１０３、条件分岐命令の条件成立信号１０４を入力とし、直接分岐命令実行信号１０２の否定と条件分岐命令の条件成立信号１０４の論理積と、間接分岐命令実行信号１０３の否定と条件分岐命令の条件成立信号１０４の論理積との２項の論理和をとったものであり、分岐が実行されないことを意味する分岐not-taken信号３３１を出力する。
【００５７】
分岐先アドレス更新検出回路３１０は、ＣＰＵ１００からの間接分岐命令実行信号１０３、条件分岐命令の条件成立信号１０４、割込み実行信号１０５を入力とし、間接分岐命令実行信号１０３と条件分岐命令の条件成立信号１０４の論理積、並びに割込み実行信号１０５の３項の論理和をとったものであり、アドレス出力が必要な分岐が実行されたことを意味する分岐先アドレス更新信号３１１を出力する。
【００５８】
分岐検出回路３４０は、ＣＰＵ１００からの直接分岐命令実行信号１０２、間接分岐命令実行信号１０３、割込み実行信号１０５を入力とし、それらの論理和を、分岐実行信号３４１として出力する。
【００５９】
シーケンシャル命令実行カウンタ(Type2,3)５３０は、ＣＰＵ１００からの命令完了信号１０１をカウントイネーブルに入力し、前記分岐実行信号３４１によって同期クリアされる。シーケンシャル命令実行カウンタ(Type2,3)５３０のカウント値は、前記分岐実行信号３４１によって、シーケンシャル命令実行カウンタ値保持手段(Type2,3)５４０にロードされ、トレース情報の出力に備えられる。
【００６０】
分岐先アドレス保持手段６００は、前記分岐先アドレス更新信号３１１がアサートされたとき、ＣＰＵ１００からの分岐先アドレス１１０を入力し保持する。
【００６１】
分岐フラグカウンタ８２０は、前記分岐実行信号３４１をカウントイネーブルに入力し、前記分岐先アドレス更新信号３１１で同期クリアされるカウンタである。分岐フラグカウンタ値８２１は、ステートマシン２３０に供給され、またその下位３ビットは、前記分岐先アドレス更新信号３１１がアサートされるタイミングまたは、図示されていないが、ステートマシン２３０がBST_HEADステートに遷移するタイミングで、分岐フラグカウンタ値保持手段８３０にロードされる。
【００６２】
分岐フラグ用シフトレジスタ８００は、前記分岐実行信号３４１をシフトイネーブルの信号に使い、分岐taken信号３５１をシフトインする。前記分岐先アドレス更新信号３１１がアサートされる時、分岐フラグ用シフトレジスタ８００は同期クリアされるが、それ以前のフラグの値は、分岐フラグ保持手段８１０にロードされる。
【００６３】
分岐takenカウンタ９００は、前記分岐taken信号３５１をカウントイネーブルに入力し、前記分岐not-taken信号３３１で同期クリアされるカウンタである。分岐takenカウンタ値９０１は、ステートマシン２３０に供給される共に、前記分岐not-taken信号３３１がアサートされるタイミングで（これと人為的にロードする場合もありうるのを後で追加）、分岐takenカウンタ値保持手段９１０にロードされる。
【００６４】
MDO[7:0]出力マルチプレクサ(Type3)７３０は、ヘッダー用固定値”0x38”出力回路４３０の出力と、ヘッダー用固定値”0x39”出力回路４４０の出力と、ヘッダー用固定値”0x3a”出力回路４５０の出力と、シーケンシャル命令実行カウンタ値保持手段(Type2,3)５４０の出力と、分岐先アドレス保持手段６００の出力を8ビット単位に分割した信号と、分岐フラグカウンタ値保持手段８３０の出力と分岐フラグ保持手段８１０の出力をマージして8ビット単位に整列しなおした信号と、分岐takenカウンタ値保持手段９１０の出力との、１５グループの選択される信号として入力し、MDO[7:0]出力選択信号(Type3)２３２によって１５グループの内の１つを選択して、MDO[7:0]出力信号(Type3)７３１として出力する。MD0[7:0]出力信号(Type3)７３１は、そのままトレースデータ出力端子(MDO[7:0])に出力される。
【００６５】
図１３には、図１１のシステムが出力するトレースメッセージのＩＤであるＴＣＯＤＥの割り当てを示している。図４には、Program Trace, Branch Status Messageのメッセージフォーマットを、図５には、Program Trace, Branch Destination Address Messageのメッセージフォーマットを、図６には、Program Trace, Exception Messageのメッセージフォーマットを、図１４には、Program Trace, Branch Taken Count Messageのメッセージフォーマットを示している。それぞれ、ここでは説明していないトレース出力の基準クロックに同期してMDO[7:0]出力とMSEO[1:0]出力を変化させる。
【００６６】
図１２のトレースメッセージ／パケット制御ステートマシン(Type3)のステート表に示すように、直接分岐の条件成立(直接分岐命令実行信号１０２と分岐命令実行時の条件成立信号１０４を同時に”1”)時、かつ分岐フラグカウント値がフル(BFcount==31)の時には、IDLE状態→BST_HEAD状態→BST_NV状態→BST_BRF0→BST_BRF1→BST_BRF2→BST_BRF3→IDLE状態へと遷移し、MDO出力選択信号出力及びMSEO出力信号によって、図４のProgram Trace, Branch Status Messageのメッセージフォーマットに示すシーケンス出力が得られる。
【００６７】
間接分岐命令の条件成立(間接分岐命令実行信号１０３と分岐命令実行時の条件成立信号１０４を同時に”1”)時、かつ分岐フラグカウント値がゼロ(BFcount==0)の時には、IDLE状態→BDA_HEAD状態→IND_UADR0状態→IND_UADR1状態→IND_UADR2状態→IND_UADR3状態→IDLE状態と遷移し、図５のProgram Trace, Branch Destination Address Messageのメッセージフォーマットに示すようなトレース出力が得られる。
【００６８】
間接分岐命令の条件成立(間接分岐命令実行信号１０３と分岐命令実行時の条件成立信号１０４を同時に”1”)時、かつ分岐フラグカウント値がゼロでない(BFcount!=0)の時には、先にPTBSTメッセージを出力してから、PTBDAメッセージを出力するように制御される。
【００６９】
割込み発生(割込み実行信号１０５が”1”)時、かつ分岐フラグカウント値がゼロ(BFcount==0)の時には、IDLE状態→EXC_HEAD状態→EXC_ICNT状態→IND_UADR0状態→IND_UADR1状態→IND_UADR2状態→IND_UADR3状態→IDLE状態と遷移し、図６のProgram Trace, Exception Messageのメッセージフォーマットに示すようなトレース出力が得られる。
【００７０】
割込み発生(割込み実行信号１０５が”1”)時、かつ分岐フラグカウント値がゼロでない(BFcount!=0)の時には、先にPTBSTメッセージを出力してから、PTEXCメッセージを出力するように制御される。
【００７１】
本来であれば、それぞれのシーケンスの間にも次の分岐命令が実行される可能性があり、それらを受け付けるように作られている必要があるが、説明を簡単にするために省略している。また、U-ADDRの長さは、上位アドレスが変化ない場合には、上位ビットを出力しなくてもよいプロトコルとなっているが、これも単純化のため、固定長32ビット出力する制御で説明している点に注意頂きたい。
【００７２】
図１９に、このプロセッサを用いた開発支援装置の全体の構成図を示す。
【００７３】
プロセッサ１からのトレース状態信号１０１１、トレースデータ信号１０２１をトレース情報蓄積装置２が受け、トレースメモリ制御１２１０がトレースメモリ制御信号１２１１、トレースメモリ書込みデータ１２１２を制御することによって、トレースメモリ１２３０に対するメモリアクセスを制御し、トレース情報としてトレースメモリ１２３０に蓄積する。ホストコンピュータ３は、トレース情報蓄積装置２にトレースメモリ読み出し要求１３０１を出力し、トレースメモリ制御１２１０を介してトレースメモリにアクセスし、トレースメモリ出力１２３１を取得する。(これは従来例と全く同じである。)
次に、このように構成されたプロセッサ１からトレースデータを取得し、実行履歴を復元する様子を図１６のプログラムを例にとりながら説明する。図１６の0x50000000番地から実行した場合、(69)の条件分岐命令がnot-takenになるまで、分岐taken/not-takenのフラグがシフトレジスタに蓄積されると同時に、分岐takenカウント値がインクリメントされるが、分岐takenカウントメッセージを出力した方が符号効率が高いため、”PTBTCBR-TAKEN=22”が出力される。その後(78)の間接分岐がtakenであったため、分岐フラグのシフトレジスタに残っていたno-takenフラグを含む”BTBST BR-FLAG=0b0”が出力され、続いて、”PTBDA U-ADDR=0x50000300”が出力される。同様に(77)の”ret”命令は間接分岐のtakenとみなされるので、”PTBDA U-ADDR=0x50000034”が出力される。このようにして取得されたトレース情報は図１７のようになる。
【００７４】
次に、図１６のソースプログラムと図１７のトレース情報が与えられた時にホストコンピュータ３が、図１５に示したアルゴリズムに従って実行履歴を復元する手順を説明する。
【００７５】
まず、ステップ2001で、IPは0x50000000番地、TPは0番地、ETPは4番地に設定される。次にTP≠ETPなので2002はスキップし、TP=0のトレースメッセージは”PTBTC BR-TAKEN=22”であるので、ステップ2400、ステップ2401へと進み、内部的には分岐フラグの集合0b11111111111111111111111に変換する。そしてステップ2101へ進み、IP=0x50000000番地の命令"命令１",IP=0x50000004番地の命令”命令２”を表示し、ステップ2102でIP=0x50000008番地の命令”bra loop_A”を表示し、直接分岐先アドレスの0x50000014番地(loop_A)をIPに設定する。ステップ2103では、分岐フラグの有効フラグはまだ残っているので、再度ステップ2101へ戻る。今度は、IP=0x50000014番地の命令”loop_A: 命令3”、IP=0x50000018番地の “命令4”を表示し、ステップ2102で、IP=0x5000001c番地の”bne loop_A”を表示し、分岐フラグが１であったので、IPに直接分岐先アドレス0x50000014番地(loop_A)を設定する。同様にIP=0x50000014からIP=0x5000001cを20回繰り返し、ステップ2103で有効フラグ数が終了したので、ステップ2050へ進み、TPをインクリメントする。
【００７６】
次のTP=1では、”PTBST BR-FLAG=0b0”を処理するが、これもTP≠ETPなので2002はスキップし、ステップ2400でNへ進み、ステップ2100でYへ進み、ステップ2101において、IP=0x50000014番地の”loop_A:命令3”、IP=0x500000018番地の”命令4”を表示し、ステップ2102において、IP=0x5000001c番地の”bne loop_A”を表示するが、分岐フラグが”0”なので、次の命令アドレス0x50000020をIPに設定し、ステップ2050へ進み、TPをインクリメントする。
【００７７】
次のTP=2では、”PTBDA U-ADDR=0x50000300”を処理するが、これもTP≠ETPなので2002はスキップし、ステップ2400、ステップ2100、ステップ2200でNへ進み、ステップ2300でYに進む。ステップ2301で、IP=0x50000020の”命令5”から、IP=0x50000024の”命令6”、IP=0x50000028の”命令7”、IP=0x5000002cの”mov    Sub_C,a0”まで順次表示する。続いてステップ2302で、IP=0x50000030の間接分岐命令”call (a0)”を表示し、ステップ2303で、IPをU-ADDRに示されるアドレス0x50000300に設定する。ステップ2050でTPを3にインクリメントする。
【００７８】
次のTP=3では、”PTBDA U-ADDR=0x5000034”を処理するが、これもTP≠ETPなので2002はスキップし、ステップ2400、ステップ2100、ステップ2200でNへ進み、ステップ2300でYに進む。ステップ2301で、IP=0x50000300の”Sub_C:  命令9”、IP=0x50000304の”命令10”まで、順次表示する。続いてステップ2302で、IP=0x50000308の間接分岐命令”ret” を表示し、ステップ2303で、IPをU-ADDRに示されるアドレス0x50000034に設定する。ステップ2050でTPを4にインクリメントする。
【００７９】
次のTP=4では、ステップ2002で、TP==ETPと判定されるので、実行履歴復元は終了する。このようにして得られた実行履歴を図１８に示す。
【００８０】
この例で示したように、直接分岐命令の結果が従来１パケット要していたものを本発明では、分岐takenが連続している場合で、かつ、PTBSTメッセージを出力するよりも短くなる場合にPTBTCメッセージを出力するように制御することで、どのような場合でも常に最高の圧縮効率を実現する。
【産業上の利用可能性】
【００８１】
本発明にかかるプロセッサおよび開発支援装置は、プロセッサの動作を外部から解析、評価する手段として有用である。
【図面の簡単な説明】
【００８２】
【図１】本発明の第１の実施例によるプロセッサの構成図
【図２】本発明の第１の実施例のトレースメッセージ／パケット制御ステートマシンのステート表を示す図
【図３】本発明の第1の実施例におけるトレースメッセージのTCODE定義を示す図
【図４】Program Trace, Branch Status Messageのメッセージフォーマットを示す図
【図５】Program Trace, Branch Destination Address Messageのメッセージフォーマットを示す図
【図６】Program Trace, Exception Messageのメッセージフォーマットを示す図
【図７】本発明の第１の実施例による実行履歴復元アルゴリズムを示す図
【図８】ソースプログラムの例と実行順番を示す図
【図９】図８のプログラムを実行した時に取得されるトレース情報を示す図
【図１０】図８のプログラムと図９のトレース情報から復元された実行履歴を示す図
【図１１】本発明の第２の実施例によるプロセッサの構成図
【図１２】本発明の第２の実施例のトレースメッセージ／パケット制御ステートマシンのステート表を示す図
【図１３】本発明の第２の実施例におけるトレースメッセージのTCODE定義を示す図
【図１４】Program Trace, Branch Taken Count Messageのメッセージフォーマットを示す図
【図１５】本発明の第１の実施例による実行履歴復元アルゴリズムを示す図
【図１６】ソースプログラムの例と実行順番を示す図
【図１７】図１６のプログラムを実行した時に取得されるトレース情報を示す図
【図１８】図１６のプログラムと図１７のトレース情報から復元された実行履歴を示す図
【図１９】開発支援装置の構成図
【図２０】従来のプロセッサの構成図
【図２１】従来のトレースメッセージ／パケット制御ステートマシンのステート表を示す図
【図２２】従来のトレースメッセージのTCODE定義を示す図
【図２３】Program Trace, Direct Branch Messageのメッセージフォーマットを示す図
【図２４】Program Trace, Indirect Branch Messageのメッセージフォーマットを示す図
【図２５】従来の開発支援装置における実行履歴復元アルゴリズムを示す図
【図２６】ソースプログラムの例と実行順番を示す図
【図２７】図２６のプログラムを実行した時に取得されるトレース情報を示す図
【図２８】図２６のプログラムと図２７のトレース情報から復元された実行履歴を示す図
【符号の説明】
【００８３】
１  プロセッサ
２  トレース情報蓄積装置
３  ホストコンピュータ
１００   ＣＰＵ
１０１  命令実行完了信号
１０２  直接分岐命令実行信号
１０３  間接分岐命令実行信号
１０４  条件分岐命令の条件成立信号
１０５  割込み実行信号
１１０  分岐先アドレス
２００  トレースメッセージ／パケット制御ステートマシン(Type0)
２０１  MSEO[1:0]出力信号(Type0)
２０２  MDO[7:0]出力選択信号(Type0)
２２０  トレースメッセージ／パケット制御ステートマシン(Type2)
２２１  MSEO[1:0]出力信号(Type2)
２２２  MDO[7:0]出力選択信号(Type2)
２３０  トレースメッセージ／パケット制御ステートマシン(Type3)
２３１  MSEO[1:0]出力信号(Type3)
２３２  MDO[7:0]出力選択信号(Type3)
３１０  分岐先アドレス更新検出回路
３１１  分岐先アドレス更新信号
３２０  分岐taken＋例外検出回路
３２１  分岐taken＋例外信号
３３０  分岐not-taken検出回路
３３１  分岐not-taken信号
３４０  分岐実行検出回路
３４１  分岐実行信号
３５０  分岐taken検出回路
３５１  分岐taken信号
４１０  ヘッダー用固定値”0x03”出力回路
４２０  ヘッダー用固定値”0x04”出力回路
４３０  ヘッダー用固定値”0x38”出力回路
４４０  ヘッダー用固定値”0x39”出力回路
４５０  ヘッダー用固定値”0x3a”出力回路
４６０  ヘッダー用固定値”0x3b”出力回路
５００  シーケンシャル命令実行カウンタ(Type0)
５１０  シーケンシャル命令実行カウンタ値保持手段(Type0)
５３０  シーケンシャル命令実行カウンタ(Type2,3)
５４０  シーケンシャル命令実行カウンタ(Type2,3)
６００  分岐先アドレス保持手段
７００  MDO[7:0]出力マルチプレクサ(Type0)
７０１  MDO[7:0]出力信号(Type0)
７２０  MDO[7:0]出力マルチプレクサ(Type2)
７２１  MDO[7:0]出力信号(Type2)
７３０  MDO[7:0]出力マルチプレクサ(Type3)
７３１  MDO[7:0]出力信号(Type3)
８００  分岐フラグ用シフトレジスタ
８１０  分岐フラグ保持手段
８２０  分岐フラグカウンタ
８２１  分岐フラグカウンタ値
８３０  分岐フラグカウンタ値保持手段
９００  分岐takenカウンタ
９０１  分岐takenカウンタ値
９１０  分岐takenカウンタ値保持手段
１０１０  トレース状態出力端子(MSEO[1:0])
１０２０  トレースデータ出力端子(MDO[7:0])
１０１１  トレース状態信号
１０２１  トレースデータ信号
１２１０  トレースメモリ制御手段
１２１１  トレースメモリ制御信号
１２１２  トレースメモリ書込みデータ
１２３０  トレースメモリ
１２３１  トレースメモリ読出しデータ
１３０１  トレースメモリ読出し要求
【図１】
2005196437.tif 000003
【図２】
2005196437.tif 000004
【図３】
2005196437.tif 000005
【図４】
2005196437.tif 000006
【図５】
2005196437.tif 000007
【図６】
2005196437.tif 000008
【図７】
2005196437.tif 000009
【図８】
2005196437.tif 000010
【図９】
2005196437.tif 000011
【図１０】
2005196437.tif 000012
【図１１】
2005196437.tif 000013
【図１２】
2005196437.tif 000014
【図１３】
2005196437.tif 000015
【図１４】
2005196437.tif 000016
【図１５】
2005196437.tif 000017
【図１６】
2005196437.tif 000018
【図１７】
2005196437.tif 000019
【図１８】
2005196437.tif 000020
【図１９】
2005196437.tif 000021
【図２０】
2005196437.tif 000022
【図２１】
2005196437.tif 000023
【図２２】
2005196437.tif 000024
【図２３】
2005196437.tif 000025
【図２４】
2005196437.tif 000026
【図２５】
2005196437.tif 000027
【図２６】
2005196437.tif 000028
【図２７】
2005196437.tif 000029
【図２８】
2005196437.tif 000030