(57)【要約】【課題】  プログラムトレース情報の圧縮効率の高いプロセッサおよび開発支援装置を実現する。【解決手段】  命令発行信号１０１、命令実行条件成立信号１０２、実行することが予め確定している命令を示す静的スケジューリングによる実行確定信号１０３を受けて静的スケジューリング済み命令を除去する静的スケジューリング済み命令除去手段１１０と、静的除去手段１１０から得られる静的スケジューリング済み命令を除いた命令実行条件成立信号１１２および静的スケジューリング済み命令を除いた命令発行信号１１１を受けて静的スケジューリング済み命令を除く命令の実行履歴を符号化する符号化手段１２０と、符号化手段１２０から得られる符号化されたデータ１２２を受けてトレースパケット１３２を生成するデータパケット生成手段１３０とをプロセッサに備える。また、このトレース情報を開発支援装置で処理する。【選択図】  図１
2006120071.tif 000002
【特許請求の範囲】
【請求項１】
命令発行信号、命令実行条件成立信号および静的スケジューリングによる実行確定信号を受けて静的スケジューリング済み命令を除去する静的スケジューリング済み命令除去手段と、前記スケジューリング済み命令除去手段から得られるスケジューリング済み命令を除いた命令実行条件成立信号およびスケジューリング済み命令を除いた命令発行信号を受けてスケジューリング済み命令を除く命令の実行履歴を符号化する符号化手段と、前記符号化手段から得られる符号化されたデータを受けて実行フラグトレースパケットを生成するパケット生成手段とを具備することを特徴とするプロセッサ。
【請求項２】
命令発行信号、命令実行条件成立信号、オペランド検出信号およびオペランドデータを受けて命令の実行履歴を符号化する符号化手段と、前記符号化手段から得られる符号化されたデータを受けて実行フラグトレースパケットとオペランドデータトレースパケットを生成するパケット生成手段と、オペランド検出信号の発生時に、オペランドデータパケットを即座に出力し、請求項１に記載の実行フラグパケットの出力を抑止する制御手段とを具備することを特徴とするプロセッサ。
【請求項３】
命令発行信号、命令実行条件成立信号、オペランド検出信号およびオペランドデータを受けて命令の実行履歴を符号化する符号化手段と、前記ソースプログラム中のオペランド位置を検出する手段と、前記符号化手段から得られる符号化されたデータおよび前記オペランド位置の情報を受けて前記オペランド位置の情報を含むトレースパケットを生成するパケット生成手段とを具備することを特徴とするプロセッサ。
【請求項４】
請求項１記載のプロセッサが生成したトレースパケットとプロセッサが実行したソースプログラムを用いて前記プロセッサの実行履歴を復元して表示する実行履歴復元プログラムを実行するコンピュータを備える開発支援装置であって、前記ソースプログラム中で静的スケジューリングにより実行確定している命令は無条件に表示させ、前記ソースプログラム中で静的スケジューリングにより実行確定していない命令は前記トレースパケットの情報に順に対応させ、前記トレースパケットの情報が実行条件成立を示している場合は当該命令を表示させ、前記トレースパケットの情報が実行条件不成立を示している場合は当該命令を表示させないように制御する手段を備えることを特徴とする開発支援装置。
【請求項５】
請求項３または４記載のプロセッサが生成したトレースパケットとプロセッサが実行したソースプログラムを用いて前記プロセッサの実行履歴を復元して表示する実行履歴復元プログラムを実行するコンピュータを備える開発支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム実行状態を外部から観測可能な情報処理装置（プロセッサ）およびそのプロセッサを用いた開発支援装置に関する。
【背景技術】
【０００２】
トレース情報出力機能は、プロセッサのプログラム実行状態を外部のホストコンピュータ上で動作しているデバッガに出力する機能である。プロセッサを用いたシステムが何らかの異常動作を検出した場合に、蓄積されたトレース情報を調べることにより、その時点から遡った実行履歴をシステム開発者が確認し、その原因を特定できるようにする。
【０００３】
ところが、開発支援装置においては、プロセッサにトレース情報の出力を行うために追加しなければならないピン数が制約されるため、トレース情報出力のバンド幅が制限される。また、トレース情報を蓄積するメモリ容量にも限界がある。そのため、限られたトレース出力バンド幅やトレースメモリ容量を用いて最大限にその効果を発揮するためには、トレース情報の圧縮が必要となる。
【０００４】
また一方、ＣＰＵの高速化に伴い、パイプラインの実行を乱すことを避けるために、条件付実行命令を実行する際に、命令発行（ｉｓｓｕｅ）はするが、レジスタの更新を伴う実行（ｃｏｍｍｉｔｍｅｎｔ）は付加された条件の成立によって確定する方式が採用されることが多い。
【０００５】
このようなＣＰＵのトレース情報の出力方法の従来例として、実行条件フラグを用いてトレース情報を取得する実行フラグトレース手法がある（例えば、非特許文献１参照）。  実行フラグトレースでは、命令実行毎に実行条件に関する情報をチップ外部に出力する。その出力されたトレース情報を元に、外部のデバッガにおいて、ソースプログラムと照らし合わせながら解析することにより実行履歴が復元できる。
【０００６】
以上の原理に基づくプロセッサと実行履歴復元ソフトウェアについて図を参照しながら説明する。図２９はトレース情報を出力する従来のプロセッサの構成を示すブロック図である。図２９において、プロセッサはＣＰＵ３００、符号化回路３１０、パケット生成回路３２０で構成されている。
【０００７】
ＣＰＵ３００は、命令発行信号３０１、命令実行条件成立信号３０２、オペランド検出信号３０３を符号化回路３１０へ出力する。また、オペランドデータ３０４をパケット生成回路３２０に出力する。命令実行条件成立時には命令発行信号３０１および命令実行条件成立信号３０２は“１”となり、命令実行条件不成立時には命令発行信号３０１は“１”、命令実行条件成立信号３０２は“０”となる。オペランド情報発生時にはオペランド検出信号３０３が“１”となる。
【０００８】
符号化回路３１０は、命令発行信号３０１、命令実行条件成立信号３０２、オペランド検出信号３０３を入力し、符号化データ出力選択信号３１１、符号化データ３１２、符号化データ３１２のビットカウント値３１３をパケット生成回路３２０へ出力する。符号化回路３１０の詳細は後述する。
【０００９】
パケット生成回路３２０は、符号化データ出力選択信号３１１、符号化データ３１２、符号化データカウント値３１３、オペランド検出信号３０３、オペランドデータ３０４を入力し、トレースパケット出力状態信号１３１をトレース状態出力端子１５０に、トレースパケット１３２をトレースデータ出力端子１５１にそれぞれ出力する。パケット生成回路３２０の詳細は後述する。
【００１０】
図３０は符号化回路３１０の内部構成を示すブロック図である。図３０において、符号化回路３１０は、カウンタ３１４、シフトレジスタ３１５、比較器３１６、３１７で構成されている。
【００１１】
シフトレジスタ３１５は、命令発行信号３０１をシフトイネーブルとして、命令実行条件成立信号３０２をシフトインし、命令実行状態を示すフラグ列の意味を持つ符号化データ３１２を生成する。カウンタ３１４は、命令発行信号３０１をカウントイネーブルとして、符号化データ３１２のビット数のカウント値３１３を生成する。
【００１２】
比較器３１６はカウント値３１３を比較器に設定した値と比較し、一致したときにカウント一致信号３１８を“１”にする。比較器３１７は、カウント値３１３を“０”と比較し、カウント値３１３が“０”でないときにカウント一致信号３１９を“１”にする。このカウント一致信号３１８と命令発行信号３０１の論理積と、カウント一致信号３１９とオペランド検出信号３０３の論理積との論理和により、符号化データ出力選択信号３１１が生成される。
【００１３】
図３１はパケット生成回路３２０の内部構成を示すブロック図である。図３１において、パケット生成回路３２０は、有効ビット数／バイト数生成回路３２３、パケットＩＤ格納手段３２６、トレースデータ組み立て回路３２８、ＦＩＦＯ書き込み制御回路３２９、ＦＩＦＯ３３３で構成されている。
【００１４】
有効ビット数／バイト数生成回路３２３は、カウント値３１３の下位３ビットから有効ビット数３２４を生成し、カウント値３１３の４ビット目以上の値から有効バイト数３２５を生成する。パケットＩＤ格納手段３２６は定数であるパケットＩＤ３２７を保持する。
【００１５】
トレースデータ組み立て回路３２８は、パケットＩＤ３２７、符号化データ３１２、有効ビット数３２４、符号化データ出力選択信号３１１、オペランド検出信号３０３、オペランドデータ３０４を入力し、符号化データ出力選択信号３１１が“１”のときに、パケットＩＤ３２７と有効ビット数３２４と符号化データ３１２を並べたデータ列を生成し、これを１バイトずつ区切ったものをトレースデータ３３１として出力する。
【００１６】
また、オペランド検出信号３０３が“１”のときには、パケットＩＤ３２７とオペランドデータ３０４を並べたデータ列を生成し、これを１バイトずつ区切ったものをトレースデータ３３１として出力する。
【００１７】
また、これらトレースデータ３３１として出力される有効データのうち、先頭のデータ出力と同時にトレースデータ出力状態信号３３０として“１”を出力する。２番目以降のトレースデータ出力時には、トレースデータ出力状態信号３３０は“０”となる。
【００１８】
ＦＩＦＯ書き込み制御回路３２９は、有効バイト数３２５、符号化データ出力選択信号３１１、オペランド検出信号３０３を入力し、トレースデータ出力状態信号３３０およびトレースデータ３３１のＦＩＦＯ３３３に対するライトイネーブル信号３３２を生成する。
【００１９】
ＦＩＦＯ３３３は、トレースデータ出力状態信号３３０、トレースデータ３３１、ライトイネーブル信号３３２を入力し、トレース出力の基準クロックに同期して入力したデータをシフトさせ、トレースパケット出力状態信号１３１およびトレースパケット１３２を入力された順に出力する。
【００２０】
図５はパケットＩＤ格納手段３２６に格納してあるパケットＩＤを示す図である。図５においては、それぞれのパケットＩＤについて、“Ｐａｃｋｅｔ  ＩＤ”と“Ｍｅｓｓａｇｅ  Ｎａｍｅ”および“Ｎｍｅｍｏｎｉｃ”が示されている。
【００２１】
“Ｐａｃｋｅｔ  ＩＤ”が“０ｂ００”であれば、“Ｍｅｓｓａｇｅ  Ｎａｍｅ”は“Ｉｄｌｅ”で“Ｎｍｅｍｏｎｉｃ”は“ＩＤＬＥ”となる。また、“Ｐａｃｋｅｔ  ＩＤ”が“０ｂ０１”であれば、“Ｍｅｓｓａｇｅ  Ｎａｍｅ”は“Ｔａｋｅｎ  Ｆｌａｇ”で“Ｎｍｅｍｏｎｉｃ”は“ＴＦ”となる。“Ｐａｃｋｅｔ  ＩＤ”が“０ｂ１０”であれば、“Ｍｅｓｓａｇｅ  Ｎａｍｅ”は“Ｔａｋｅｎ  Ｃｏｕｎｔ”で“Ｎｍｅｍｏｎｉｃ”は“ＴＣ”となる。“Ｐａｃｋｅｔ  ＩＤ”が“０ｂ１１”であれば、“Ｍｅｓｓａｇｅ  Ｎａｍｅ”は“Ｏｐｅｒａｎｄ  Ｄａｔａ”で“Ｎｍｅｍｏｎｉｃ”は“ＯＤ”となる。
【００２２】
ここで、“Ｍｅｓｓａｇｅ  Ｎａｍｅ”項目の“Ｔａｋｅｎ  Ｆｌａｇ”および“Ｔａｋｅｎ  Ｃｏｕｎｔ”について説明する。“Ｔａｋｅｎ  Ｆｌａｇ”は、符号化する手段が命令発行信号３０１と命令実行条件成立信号３０２を受けて、命令実行状態のフラグ列（命令発行時に命令実行条件成立であれば“１”、命令実行条件不成立であれば“０”を示すビット列）を符号化データとして出力したものである。
【００２３】
“Ｔａｋｅｎ  Ｃｏｕｎｔ”は、符号化する手段が命令発行信号３０１と命令実行条件成立信号３０２を受けて、命令実行条件成立の回数（命令発行時に命令実行条件成立信号３０２＝“１”が連続した回数）を符号化データとして出力したものである。
【００２４】
以降、"Ｔａｋｅｎ  Ｆｌａｇ"を符号化する場合を、例として説明する。図６は、符号化データ３１２をトレースデータとして出力する際に、ＦＩＦＯ３３３から出力されるトレースパケットのフォーマットを示す図である。
【００２５】
図６において、ｃｌｏｃｋはトレース出力の基準クロックを示す。ＴＲＣＤＡＴ［７：０］はトレースデータ出力端子１５１に出力されるトレースパケット１３２のフォーマットを示し、符号化データ３１２の値を示すＴａｋｅｎ  Ｆｌａｇ［３１：０］、符号化データの有効ビット数３２４の値を示すＮＶ［２：０］、パケットＩＤの値を示すＴＦで構成される。ＴＲＣＳＹＮＣはトレース状態出力端子１５０に出力されるトレースパケット出力状態信号１３１の値を示す。ｃｏｍｍｅｎｔｓはパケット転送状態を示す。
【００２６】
図６に示すように、“ｃｌｏｃｋ”に同期して、ＴＦ、ＮＶ［２：０］、Ｔａｋｅｎ  Ｆｌａｇ［３１：０］がトレースデータとして順に１バイトずつ出力される。
【００２７】
図７は、オペランドデータ３０４をトレースデータとして出力する際のＦＩＦＯ３３３から出力されるトレースパケットのフォーマットを示す図である。
【００２８】
図７において、ｃｌｏｃｋはトレース出力の基準クロックを示す。ＴＲＣＤＡＴ［７：０］はトレースデータ出力端子１５１に出力されるトレースパケット１３２のフォーマットを示し、オペランドデータの値を示すＯｐｅｒａｎｄ  Ｄａｔａ［３１：０］とパケットＩＤの値を示すＯＤで構成される。
【００２９】
図８は開発支援装置の構成を示すブロック図である。図８において、開発支援装置はプロセッサ１、トレース情報蓄積装置２、ホストコンピュータ３で構成されている。
【００３０】
プロセッサ１はトレースパケット出力状態信号１３１、トレースパケット１３２をトレース情報蓄積装置２に出力する。トレース情報蓄積装置２はトレースパケット出力状態信号１３１、トレースパケット１３２を入力し、トレースメモリ制御手段１６０においてトレースメモリ制御信号１６３およびトレースメモリ書込みデータ１６４を制御し、トレース情報としてトレースメモリ１６５に蓄積する。
【００３１】
また、トレース情報蓄積装置２はホストコンピュータ３からのトレースメモリ読み出し要求信号１６１を入力し、トレースメモリ制御手段１６０を介してトレースメモリ１６５にアクセスし、トレースメモリ出力データ１６２をホストコンピュータに出力する。
【００３２】
次に、このように構成されたプロセッサ１からホストコンピュータ３がトレースデータを取得して実行履歴を復元する様子を、図３２から図３６を用いて説明する。ここでは、図３０の比較器３１６の比較値は“１６”とする。
【００３３】
図３２はサンプルプログラムの命令例を示す図であり、“命令アドレス”、“アセンブラプログラム”、“実行順番”が示されている。“実行順番”の“（１）”の“命令１”から“（１４）”の“命令１６”までを順に実行する。この例では、“命令８”と“命令１０”が実行されなかった命令であると仮定している。
【００３４】
図３２において、０ｘ５０００００００番地から順に実行した場合、命令発行信号３０１は、ＣＰＵの命令発行のたびにアサートされ、命令発行信号３０１が出力されるのと同時に命令実行条件成立信号３０２は“１”または“０” の条件成立／不成立ビットを出力し、たとえば、16個の命令発行の結果は、 “１１１１１１１０１０１１１１１１” と出力される。
【００３５】
これを受けて、符号化回路３１０のシフトレジスタ３１５から出力される符号化データ３１２は“１１１１１１１０１０１１１１１１”と変化する。また、カウンタ３１４のカウント値３１３は、命令発行信号３０１の値をカウントイネーブルとして“０ｘ１０”までカウントアップされ、カウント値が“０ｘ１０”になったときにカウント一致信号３１８が“１”になり、符号化データ出力選択信号３１１が“１”になる。
【００３６】
そして、パケット生成回路３２０の有効ビット数／バイト数生成回路３２３において、（カウント値“０ｘ１０”＋ＮＶのビット数“０ｘ３”＋パケットＩＤのビット数“０ｘ２”）の下位３ビットから有効ビット数３２４として“０ｂ１０１”が出力され、４ビット目以上の値から有効バイト数３２５として“０ｂ１０”が出力される。
【００３７】
これを受けて、パケット生成回路３２０のトレースデータ組み立て回路３２８では、パケットＩＤ＝ＴＦの値“０ｂ０１”、ＮＶ＝有効ビット数３２４の値“０ｂ１０１”、ＴａｋｅｎＦｌａｇ＝“０ｂ１１１１１１１０１０１１１１１１”が下位ビットから順に並べられる。
【００３８】
ＦＩＦＯ書き込み制御回路３２９では、符号化データ出力選択信号３１１の値が“１”になってから、トレース出力の基準クロックに同期して、有効バイト数３２５の値＋１＝３回だけＦＩＦＯへのライトイネーブル信号３３２を“１”にする。
【００３９】
このライトイネーブル信号３３２＝“１”を受け、トレースデータ組み立て回路３２８で生成されたデータが１バイトずつ３回に分けてＦＩＦＯ３３３に出力される。また、このデータ出力の先頭の１バイトの出力と同時に、トレースデータ出力状態信号３３０として“１”が出力される。
【００４０】
これをＦＩＦＯ３３３が受け、トレースパケット１３２およびトレースパケット出力状態信号１３１として出力する。図３３は、図３２のサンプルプログラムを実行した場合のトレースパケットを示す図である。
【００４１】
ホストコンピュータ３は図３３に示すパケットを受け取り、ＴＲＣＤＡＴ［１：０］からパケットＩＤ＝ＴＦ、ＴＲＣＤＡＴ［４：２］からＮＶ＝５という情報を得る。そしてＮＶ＝５であることから、符号化データＦＬＡＧ＝０ｂ１１１１１１１０１０１１１１１１という情報を得る。図３４は、このようにしてホストコンピュータ３がプロセッサ１から取得したトレース情報を示す図である。
【００４２】
次に、図３２のサンプルプログラムと図３４のトレース情報が与えられたときに、ホストコンピュータ３が実行履歴を復元する手順を説明する。図３５は、ホストコンピュータ３が実行履歴を復元する処理のアルゴリズムを示すフローチャートである。
【００４３】
図３５において、ステップ４０００でＩＰは０ｘ５０００００００番地、ＴＰは０ｘ０番地、ＥＴＰは０ｘ１番地に設定される。次にＴＰ≠ＥＴＰであるのでステップ４００１はスキップしてステップ４００２に進み、トレースメッセージがＴＦであることよりステップ４００４、ステップ４００５と進む。そしてフラグの値が“１”であるので０ｘ５０００００００番地に命令１を表示し、ＩＰを０ｘ５００００００４番地にインクリメントする。
【００４４】
有効フラグが残っているので、次に０ｘ５００００００４番地に命令２を表示し、ＩＰを０ｘ５００００００８番地にインクリメントする。同様に０ｘ５００００００８番地に命令３、０ｘ５００００００ｃ番地に命令４、０ｘ５０００００１０番地に命令５、０ｘ５０００００１４番地に命令６、０ｘ５０００００１８番地に命令７を表示し、次の命令８に相当するフラグの値が“０”であるので、その次の命令９のアドレス０ｘ５０００００２０番地をＩＰに設定し、次のフラグの値が“１”であるので０ｘ５０００００２０番地に命令９を表示し、ＩＰを０ｘ５０００００２４にインクリメントする。
【００４５】
さらに、次の命令１０に相当するフラグの値が“０”であるので、その次の命令１１のアドレス０ｘ５０００００２８をＩＰに設定し、次のフラグの値が“１”であるので０ｘ５０００００２８番地に命令１１を表示する。同様に、０ｘ５０００００２ｃ番地に命令１２、０ｘ５０００００３０番地に命令１３、０ｘ５０００００３４番地に命令１４、０ｘ５０００００３８番地に命令１５を表示し、有効フラグが終了したのでＴＰを０ｘ１番地に設定し、ステップ４００１に戻る。そしてＴＰ＝ＥＴＰと判定されるので実行履歴復元を終了する。
【００４６】
図３６は、このようにして得られた実行履歴を示す図である。図３６には“トレースメモリアドレス”、“トレースメッセージ”、“トレースパケット”、“アドレス”、“復元された実行履歴”が図示されており、図３２に示すサンプルプログラムが復元できたことが確認できる。
【非特許文献１】ARM Limited, "ARM IHI 00141, Embedded Trace Macrocell Architecture Specification"
【発明の開示】
【発明が解決しようとする課題】
【００４７】
しかしながら、上述した従来技術にはトレース情報の圧縮率が低いという問題がある。  すなわち、従来技術においては、条件付実行命令の条件成立／不成立ビットを命令実行毎に出力しなければならず、符号化などの手段が得られたとしても元になる情報が１命令あたり常に１ビット発生することになる。さらに、高性能なＣＰＵにおいては１サイクルに発行される命令数も３から４命令と多くなってきており、トレース情報出力を困難にしている。
【００４８】
また、実行回数の出力にトレース出力クロックの少なくとも１クロックかかっており、通常はトレース出力クロックとしてＣＰＵクロックの１／２や１／４などの分周した周波数でチップ外部に伝送可能な動作周波数が選ばれるため、ＣＰＵの動作周波数とトレースクロックの比を考慮すれば、トレース情報の発生レートに比べてトレース情報の出力レートは低く、適当な容量のバッファを用意していてもトレース出力がすぐに不可能になってしまうという問題がある。言い換えれば、実際のＣＰＵの動作に比べてトレース情報出力の圧縮率が低いということである。
【００４９】
また、条件付実行命令の条件成立／不成立などの命令実行状態に関連する情報以外の情報、例えばオペランド情報をトレースする場合は、オペランド情報が発生した時点で、それまで符号化していたデータをトレース情報として出力しなければならない。トレース情報にはパケットＩＤや有効ビット数などの情報がオーバヘッドとして含まれているため、トレース情報を出力する回数が増すほどトレース情報出力パケットが増加してしまうという問題がある。
【００５０】
このような問題点に鑑み、本発明の目的は、プロセッサに内蔵された高速なＣＰＵの動作を外部で確実に捕捉可能な程度にトレース情報を高度に圧縮する手段を提供することである。また、そのプロセッサを用いた開発支援装置を提供することも目的とする。
【課題を解決するための手段】
【００５１】
上記課題を解決するために、本発明の請求項１に係るプロセッサは、命令発行信号、命令実行条件成立信号および静的スケジューリングによる実行確定信号を受けて静的スケジューリング済み命令を除去する静的スケジューリング済み命令除去手段と、前記静的スケジューリング済み命令除去手段から得られる静的スケジューリング済み命令を除いた命令実行条件成立信号および静的スケジューリング済み命令を除いた命令発行信号を受けて静的スケジューリング済み命令を除く命令の実行履歴を符号化する符号化手段と、前記符号化手段から得られる符号化されたデータを受けてトレースパケットを生成するデータパケット生成手段とを具備するものである。
【００５２】
上記構成によれば、コンパイラなどで実行することがあらかじめ決まっている命令に対しては静的スケジューリングによる実行確定信号により条件実行フラグの生成を抑制することができるため、トレース情報を大幅に圧縮することができる。
【００５３】
本発明の請求項２に係るプロセッサは、命令発行信号、命令実行条件成立信号、オペランド検出信号およびオペランドデータを受けて命令の実行履歴を符号化する符号化手段と、前記符号化手段から得られる符号化されたデータを受けてトレースパケットを生成するデータパケット生成手段とオペランド検出信号の発生時に、オペランドデータパケットを即座に出力し、請求項１に記載の実行フラグパケットの出力を抑止する制御手段とを具備するものである。
【００５４】
上記構成によれば、オペランド検出信号の発生時に、実行フラグトレースパケットをトレースデータとして直ちには出力せず、出力を遅延させるように制御することができるため、トレース情報を出力する回数を減らすことができ、トレース情報を大幅に圧縮することができる。
【００５５】
本発明の請求項３に係るプロセッサは、命令発行信号、命令実行条件成立信号、オペランド検出信号およびオペランドデータを受けて命令の実行履歴を符号化する符号化手段と、前記ソースプログラム中のオペランド位置を検出する手段と、前記符号化手段から得られる符号化されたデータおよび前記オペランド位置の情報を受けて前記オペランド位置の情報を含むトレースパケットを生成するデータパケット生成手段とを具備するものである。
【００５６】
上記構成によれば、オペランド位置の情報をトレースパケットに含めてトレース情報として出力することにより、オペランドデータの復元を一括して処理することができるため、トレース情報を用いて実行履歴を復元する手順が簡略になり、実行履歴復元プログラムの処理効率が向上する。
【００５７】
また、請求項２記載のプロセッサの構成においてはトレース情報にオペランド位置の情報が含まれないため、オペランド情報の一部だけをトレースする場合にはオペランド情報の発生時期が特定できなくなる場合があるが、上記構成によれば、オペランド位置の情報がトレース情報から得られるため、この問題が解決される。
【００５８】
本発明の請求項４に係る開発支援装置は、請求項１記載のプロセッサが生成したトレースパケットとプロセッサが実行したソースプログラムを用いて前記プロセッサの実行履歴を復元して表示する実行履歴復元プログラムを実行するコンピュータを備えた開発支援装置であって、前記ソースプログラム中で静的スケジューリングにより実行確定している命令は無条件に表示させ、前記ソースプログラム中で静的スケジューリングにより実行確定していない命令は前記トレースパケットの情報に順に対応させ、前記トレースパケットの情報が実行条件成立を示している場合は当該命令を表示させ、前記トレースパケットの情報が実行条件不成立を示している場合は当該命令を表示させない手段を備えるものである。
【００５９】
本発明の請求項５に係る開発支援装置は、請求項３または４記載のプロセッサが生成したトレースパケットとプロセッサが実行したソースプログラムを用いて前記プロセッサの実行履歴を復元して表示する実行履歴復元プログラムを実行するコンピュータを備えたものである。
【発明の効果】
【００６０】
以上説明したように、本発明によれば、すべての条件付実行命令のうちで静的にスケジューリングされていない条件付実行命令の発現頻度は１／８から１／１６であることから、分岐フラグパケットの情報の圧縮率は約１／８から１／１６と見積もることができ、トレース情報を大幅に圧縮することができる。
【００６１】
さらに本発明によれば、オペランド情報が発生した場合においても、符号化データをトレース情報として直ちに出力せず、出力を遅延させるように制御することができるため、トレース情報の出力回数を減少させることができる。
【００６２】
さらに本発明によれば、オペランド位置の情報をトレースパケットに含めてトレース情報として出力することにより、オペランドデータの復元を一括して処理することで実行履歴を復元する手順が簡略になり、実行履歴復元プログラムの処理効率が向上する。
【発明を実施するための最良の形態】
【００６３】
以下、本発明の実施の形態を図面を参照しながら説明する。以下の実施の形態において、図８に示した開発支援装置の構成は共通であり、プロセッサ１の構成についてそれぞれの実施形態を説明する。
【００６４】
（実施の形態１）
図１は本発明の第１の実施形態におけるプロセッサの構成を示すブロック図である。図１において、プロセッサ１はＣＰＵ１００、静的スケジューリング済み命令除去回路１１０、符号化回路１２０、パケット生成回路１３０、トレース状態出力端子１５０、トレースデータ出力端子１５１で構成されている。
【００６５】
ＣＰＵ１００は、命令発行信号１０１、命令実行条件成立信号１０２、静的スケジューリングによる実行確定信号１０３を静的スケジューリング済み命令除去回路１１０へ出力する。また、オペランド検出信号１０４を符号化回路１２０とパケット生成回路１３０へ出力し、オペランドデータ１０５を、パケット生成回路１３０へ出力する。
【００６６】
命令実行条件成立時には命令発行信号１０１および命令実行条件成立信号１０２は“１”となり、命令実行条件不成立時には命令発行信号１０１は“１”、命令実行条件成立信号１０２は“０”となる。また、静的スケジューリングにより実行が確定している命令の実行時には、静的スケジューリングによる実行確定信号１０３として“１”を静的スケジューリング済み命令除去回路１１０へ出力する。また、オペランド情報発生時にはオペランド検出信号１０４は“１”になる。
【００６７】
静的スケジューリング済み命令除去回路１１０は、命令発行信号１０１と命令実行条件成立信号１０２と静的スケジューリングによる実行確定信号１０３を入力し、静的スケジューリング済み命令を除いた命令発行信号１１１と、静的スケジューリング済み命令を除いた命令実行条件成立信号１１２を符号化回路１２０へ出力する。静的スケジューリング済み命令除去回路１１０の詳細は後述する。
【００６８】
符号化回路１２０は、静的スケジューリング済み命令を除いた命令発行信号１１１、静的スケジューリング済み命令を除いた命令実行条件成立信号１１２、オペランド検出信号１０４を入力し、符号化データ出力選択信号１２１、符号化データ１２２、符号化データ１２２のビットカウント値１２３をパケット生成回路１３０へ出力する。符号化回路１２０の詳細は後述する。
【００６９】
パケット生成回路１３０は、符号化データ出力選択信号１２１、符号化データ１２２、符号化データカウント値１２３、オペランド検出信号１０４、オペランドデータ１０５を入力し、トレースパケット出力状態信号１３１をトレース状態出力端子１５０に、トレースパケット１３２をトレースデータ出力端子１５１にそれぞれ出力する。パケット生成回路１３０の詳細は後述する。
【００７０】
図２は静的スケジューリング済み命令除去回路１１０の内部構成を示す回路図である。  図２において、静的スケジューリング済み命令除去回路１１０はマスク回路１１３、１１４で構成されている。
【００７１】
マスク回路１１３は、命令発行信号１０１と静的スケジューリングによる実行確定信号１０３の反転信号との論理積により、静的スケジューリング済み命令を除いた命令発行信号１１１を生成する。マスク回路１１４は、命令実行条件成立信号１０２と静的スケジューリングによる実行確定信号１０３の反転信号との論理積により、静的スケジューリング済み命令を除いた命令実行条件成立信号１１２を生成する。
【００７２】
図３は符号化回路１２０の内部構成を示すブロック図である。図３において、符号化回路１２０はカウンタ１２４とシフトレジスタ１２５と比較器１２６、１２７で構成されている。
【００７３】
シフトレジスタ１２５は、静的スケジューリング済み命令を除いた命令発行信号１１１をシフトイネーブルとして、静的スケジューリング済み命令を除いた命令実行条件成立信号１１２をシフトインし、静的スケジューリング済み命令を除いた命令の実行状態を示すフラグ列の意味を持つ符号化データ１２２を生成する。カウンタ１２４は、静的スケジューリング済み命令を除いた命令発行信号１１１をカウントイネーブルとして、符号化データ１２２のビット数のカウント値１２３を生成する。
【００７４】
比較器１２６はカウント値１２３を比較器に設定した値と比較し、一致したときにカウント一致信号１２８を“１”にする。比較器１２７はカウント値１２３を“０”と比較し、カウント値１２３が“０”でないときにカウント一致信号１２９を“１”にする。このカウント一致信号１２８と静的スケジューリング済み命令を除いた命令発行信号１１１の論理積と、カウント一致信号１２９とオペランド検出信号１０４の論理積との論理和により、符号化データ出力選択信号１２１が生成される。
【００７５】
図４はパケット生成回路１３０の内部構成を示すブロック図である。図４において、パケット生成回路１３０は、有効ビット数／バイト数生成回路１３３、パケットＩＤ格納手段１３６、トレースデータ組み立て回路１３８、ＦＩＦＯ書き込み制御回路１３９、ＦＩＦＯ１４３で構成されている。
【００７６】
有効ビット数／バイト数生成回路１３３は、カウント値１２３の下位３ビットから有効ビット数１３４を生成し、カウント値１２３の４ビット目以上の値から有効バイト数１３５を生成する。パケットＩＤ格納手段１３６は定数であるパケットＩＤ１３７を格納する。
【００７７】
トレースデータ組み立て回路１３８は、パケットＩＤ１３７、符号化データ１２２、有効ビット数１３４、符号化データ出力選択信号１２１、オペランド検出信号１０４、オペランドデータ１０５を入力し、符号化データ出力選択信号１２１が“１”のときに、パケットＩＤ１３７と有効ビット数１３４と符号化データ１２２を並べたデータ列を生成し、これを１バイトずつ区切ったものをトレースデータ１４１として出力する。
【００７８】
また、オペランド検出信号１０４が“１”のときには、パケットＩＤ１３７とオペランドデータ１０５を並べたデータ列を生成し、これを１バイトずつ区切ったものをトレースデータ１４１として出力する。
【００７９】
また、これらトレースデータ１４１として出力される有効データのうち、先頭のデータ出力と同時にトレースデータ出力状態信号１４０として“１”を出力する。２番目以降のトレースデータ出力時にはトレースデータ出力状態信号１４０は“０”となる。
【００８０】
ＦＩＦＯ書き込み制御回路１３９は、有効バイト数１３５、符号化データ出力選択信号１２１、オペランド検出信号１０４を入力し、トレースデータ出力状態信号１４０およびトレースデータ１４１のＦＩＦＯ１４３に対するライトイネーブル信号１４２を生成する。
【００８１】
ＦＩＦＯ１４３は、トレースデータ出力状態信号１４０、トレースデータ１４１、ライトイネーブル信号１４２を入力し、トレース出力の基準クロックに同期して入力したデータをシフトさせ、トレースパケット出力状態信号１３１およびトレースパケット１３２を入力された順に出力する。
【００８２】
パケットＩＤ格納手段１３６に格納してあるパケットＩＤは図５に示すとおりで、その内容は従来技術の説明で前述したとおりである。
【００８３】
ここで、本実施形態における“Ｍｅｓｓａｇｅ  Ｎａｍｅ”項目の“Ｔａｋｅｎ  Ｆｌａｇ”および“Ｔａｋｅｎ  Ｃｏｕｎｔ”について説明する。“Ｔａｋｅｎ  Ｆｌａｇ”は、静的スケジューリング済み命令を除いた命令発行信号１１１と静的スケジューリング済み命令を除いた命令実行条件成立信号１１２を受けて、命令実行状態のフラグ列（命令発行時に静的スケジューリング済み命令を除いた命令実行条件成立であれば“１”、命令実行条件不成立であれば“０”を示すビット列）を符号化データとして出力したものである。
【００８４】
“Ｔａｋｅｎ  Ｃｏｕｎｔ”は、静的スケジューリング済み命令を除いた命令発行信号１１１と静的スケジューリング済み命令を除いた命令実行条件成立信号１１２を受けて、命令実行条件成立の回数（命令発行時に静的スケジューリング済み命令を除いた命令実行条件成立信号１１２＝“１”が連続した回数）を符号化データとして出力したものである。
【００８５】
以降、"Ｔａｋｅｎ  Ｆｌａｇ"を符号化する場合を、例として説明する。符号化データ１２２をトレースデータとして出力する際に、ＦＩＦＯ１４３から出力されるトレースパケットのフォーマットは図６に示すとおりで、その内容は従来技術の説明で前述したとおりである。
【００８６】
すなわち、ｃｌｏｃｋはトレース出力の基準クロックであり、ＴＲＣＤＡＴ［７：０］はトレースデータ出力端子１５１に出力されるトレースパケット１３２のフォーマットを示し、符号化データ１２２の値を示すＴａｋｅｎ  Ｆｌａｇ［３１：０］、符号化データの有効ビット数１３４の値を示すＮＶ［２：０］、パケットＩＤの値を示すＴＦで構成される。ＴＲＣＳＹＮＣはトレース状態出力端子１５０に出力されるトレースパケット出力状態信号１３１の値を示し、ｃｏｍｍｅｎｔｓはパケット転送状態を示す。
【００８７】
このように、“ｃｌｏｃｋ”に同期して、ＴＦ、ＮＶ［２：０］、Ｔａｋｅｎ  Ｆｌａｇ［３１：０］がトレースデータとして順に１バイトずつ出力される。
【００８８】
オペランドデータ１０５をトレースデータとして出力する際に、ＦＩＦＯ１４３から出力されるトレースパケットのフォーマットは図７に示すとおりで、その内容は従来技術の説明で前述したとおりである。
【００８９】
すなわち、ｃｌｏｃｋはトレース出力の基準クロックであり、ＴＲＣＤＡＴ［７：０］はトレースデータ出力端子１５１に出力されるトレースパケット１３２のフォーマットを示し、オペランドデータの値を示すＯｐｅｒａｎｄ  Ｄａｔａ［３１：０］とパケットＩＤの値を示すＯＤで構成される。
【００９０】
次に、このように構成されたプロセッサ１からホストコンピュータ３がトレースデータを取得して実行履歴を復元する様子を、図９から図１３を用いて説明する。ここでは、図３の比較器１２６の比較値は“６”とする。
【００９１】
図９はサンプルプログラムの命令例を示す図であり、“命令アドレス”、“アセンブラプログラム”、“実行順番”が示されている。プログラムの実行では、“実行順番”の“（１）”の“命令１”から“（１４）”の“命令１６”までを順に実行する。
【００９２】
また、“（ＡＬＷＡＹＳ‐ＴＡＫＥＮ）”と図示された命令は必ずＣＰＵが実行する命令であり、“（ＡＬＷＡＹＳ‐ＴＡＫＥＮ）”が図示されていない命令はＣＰＵが実行しないと“Ｔａｋｅｎ”か、あるいは“Ｎｏｔ  Ｔａkｅｎ”かの判断ができない命令である。
【００９３】
この例では、“命令８”と“命令１０”が実行されなかった命令であり、実行された命令のうち、“命令１〜命令３”、“命令６〜命令７”、“命令１２〜命令１６”が、いずれもＣＰＵが必ず実行する命令であると仮定している。
【００９４】
図９において、０ｘ５０００００００番地から順に実行した場合、命令発行信号１０１は、ＣＰＵの動作周波数に同期して、順に“１１１１１１１１１１１１１１１１”と変化し、同時に命令実行条件成立信号１０２は“１１１１１１１０１０１１１１１１”と変化し、静的スケジューリングによる実行確定信号１０３は“１１１００１１００００１１１１１”と変化する。
【００９５】
これを受けて、静的スケジューリング済み命令除去回路１１０から出力される静的スケジューリング済み命令を除いた命令発行信号１１１は“０００１１００１１１１０００００”と変化し、静的スケジューリング済み命令を除いた命令実行条件成立信号１１２は“０００１１０００１０１０００００”と変化する。
【００９６】
これを受けて、符号化回路１２０のシフトレジスタ１２５から出力される符号化データ１２２は“１１０１０１”と変化する。また、カウンタ１２４のカウント値１２３は、静的スケジューリング済み命令を除いた命令発行信号１１１の値をカウントイネーブルとして“０ｘ６”までカウントアップされ、カウント値が“０ｘ６”になったときにカウント一致信号１２８が“１”になり、符号化データ出力選択信号１２１が“１”になる。
【００９７】
そして、パケット生成回路１３０の有効ビット数／バイト数生成回路１３３において、（カウント値“０ｘ６”＋ＮＶのビット数“０ｘ３”＋パケットＩＤのビット数“０ｘ２”）の下位３ビットから有効ビット数１３４として“０ｂ０１１”が出力され、４ビット目以上の値から有効バイト数１３５として“０ｂ１”が出力される。
【００９８】
これを受けて、パケット生成回路１３０のトレースデータ組み立て回路１３８では、パケットＩＤ＝ＴＦの値“０ｂ０１”、ＮＶ＝有効ビット数１３４の値“０ｂ０１１”、Ｔａｋｅｎ  Ｆｌａｇ＝“０ｂ１１０１０１”が下位ビットから順に並べられる。
【００９９】
ＦＩＦＯ書き込み制御回路１３９では、符号化データ出力選択信号１２１の値が“１”になってから、トレース出力の基準クロックに同期して、有効バイト数１３５の値＋１＝２回だけＦＩＦＯへのライトイネーブル信号１４２を“１”にする。
【０１００】
このライトイネーブル信号１４２を受け、トレースデータ組み立て回路１３８で生成されたデータが１バイトずつ２回に分けてＦＩＦＯ１４３に出力される。また、このデータ出力の先頭の１バイトの出力と同時に、トレースデータ出力状態信号１４０として“１”が出力される。
【０１０１】
これをＦＩＦＯ１４３が受け、トレースパケット１３２およびトレースパケット出力状態信号１３１として出力する。図１０は、図９のサンプルプログラムを実行した場合のトレースパケットを示す図である。
【０１０２】
ホストコンピュータ３は図１０に示すパケットを受け取り、ＴＲＣＤＡＴ［１：０］からパケットＩＤ＝ＴＦ、ＴＲＣＤＡＴ［４：２］からＮＶ＝３という情報を得る。そしてＮＶ＝３であることから、符号化データＦＬＡＧ＝０ｂ１１０１０１という情報を得る。  図１１は、このようにしてホストコンピュータ３がプロセッサ１から取得したトレース情報を示す図である。
【０１０３】
次に、図９のサンプルプログラムと図１１のトレース情報が与えられたときに、ホストコンピュータ３が実行履歴を復元する手順を説明する。図１２は、ホストコンピュータ３が実行履歴を復元する処理のアルゴリズムを示すフローチャートである。
【０１０４】
図１２において、ステップ１０００でＩＰは０ｘ５０００００００番地、ＴＰは０ｘ０番地、ＥＴＰは０ｘ１番地に設定される。次にＴＰ≠ＥＴＰであるのでステップ１００１はスキップしてステップ１００２に進み、トレースメッセージがＴＦであることよりステップ１００４、ステップ１００５と進む。
【０１０５】
そしてＡＬＷＡＹＳ−ＴＡＫＥＮでない命令が出現するまで、０ｘ５０００００００番地の命令１、０ｘ５００００００４番地の命令２、０ｘ５００００００８番地の命令３を表示し、ＡＬＷＡＹＳ−ＴＡＫＥＮでない命令４が出現するのでステップ１００６に進む。そしてフラグの値が“１”であるので命令４を表示し、ＩＰを０ｘ５０００００１０番地にインクリメントする。
【０１０６】
有効フラグが残っているのでステップ１００５に進み、ＡＬＷＡＹＳ−ＴＡＫＥＮでない命令５が出現するのでステップ１００６に進み、フラグの値が“１”であることより命令５を表示し、ＩＰを０ｘ５０００００１４番地にインクリメントする。
【０１０７】
有効フラグがまだ残っているので再びステップ１００５に進み、０ｘ５０００００１４番地の命令６、０ｘ５０００００１８番地の命令７を表示し、ＡＬＷＡＹＳ−ＴＡＫＥＮでない命令８が出現するのでステップ１００６に進み、フラグの値が“０”であることにより、その次の命令９のアドレス０ｘ５００００００２０番地をＩＰに設定する。
【０１０８】
有効フラグがまだ残っているのでステップ１００５に進み、ＡＬＷＡＹＳ−ＴＡＫＥＮでない命令９が出現するので、ステップ１００６に進む。フラグの値が“１”であるので、０ｘ５０００００２０番地に命令９を表示し、ＩＰを０ｘ５０００００２４番地にインクリメントする。
【０１０９】
有効フラグがまだ残っているので、ステップ１００５に進み、ＡＬＷＡＹＳ−ＴＡＫＥＮでない命令１０が出現するのでステップ１００６に進み、フラグの値が“０”であることより、その次の命令１１のアドレス０ｘ５０００００２８番地をＩＰに設定する。
【０１１０】
有効フラグがまだ残っているので、ステップ１００５に進み、ＡＬＷＡＹＳ−ＴＡＫＥＮでない命令１１が出現するのでステップ１００６に進む。フラグの値が“１”であるので０ｘ５０００００２８番地に命令１１を表示する。
【０１１１】
有効フラグが終了したので、０ｘ５０００００２ｃ番地の命令１２、０ｘ５０００００３０番地の命令１３、０ｘ５０００００３４番地の命令１４、０ｘ５０００００３８番地の命令１５、０ｘ５０００００３ｃ番地の命令１６を表示し、ＴＰを０ｘ１番地に設定し、ステップ１００１に戻る。そしてＴＰ＝ＥＴＰと判定されるので実行履歴復元を終了する。
【０１１２】
図１３は、このようにして得られた実行履歴を示す図である。図１３には“トレースメモリアドレス”、“トレースメッセージ”、“トレースパケット”、“アドレス”、“復元された実行履歴”が図示されており、図９に示すサンプルプログラムが復元できたことが確認できる。
【０１１３】
このように、従来ではＡＬＷＡＹＳ−ＴＡＫＥＮである命令も含めてＴａｋｅｎ  Ｆｌａｇをトレースパケットとして出力していたのが、ＡＬＷＡＹＳ−ＴＡＫＥＮでない命令のみを符号化することで、トレースデータのＴａｋｅｎ  Ｆｌａｇビット数をＡＬＷＡＹＳ−ＴＡＫＥＮである命令の分だけ圧縮することができる。
【０１１４】
（実施の形態２）
図１４は本発明の第２の実施形態におけるプロセッサの構成を示すブロック図である。  図１４において、プロセッサ１はＣＰＵ２００、符号化回路２１０、パケット生成回路２３０、トレース状態出力端子１５０、トレースデータ端子１５１で構成されている。
【０１１５】
ＣＰＵ２００は、命令発行信号２０１、命令実行条件成立信号２０２、オペランド検出信号２０３、符号化データ出力モード信号２０４を符号化回路２１０へ出力する。また、オペランドデータ２０５をパケット生成回路２３０へ出力する。
【０１１６】
命令実行条件成立時には命令発行信号２０１と命令実行条件成立信号２０２は“１”となり、命令実行条件不成立時には命令発行信号２０１は“１”、命令実行条件成立信号２０２は“０”となる。また、オペランド情報発生時にはオペランド検出信号２０３は“１”となる。
【０１１７】
符号化データ出力モード信号２０４は、符号化データ出力選択信号２１１を生成する条件にオペランド検出信号２０３を含めるか否かを設定するモード信号である。符号化データ出力モード信号２０４が“１”のときは、符号化データ出力選択信号２１１を生成する条件にオペランド検出信号２０３を含めないように制御する。
【０１１８】
符号化回路２１０は、命令発行信号２０１、命令実行条件成立信号２０２、オペランド検出信号２０３、符号化データ出力モード信号２０４を入力し、符号化データ出力選択信号２１１、符号化データ２１２、符号化データビットカウント値２１３をパケット生成回路２３０へ出力する。符号化回路２１０の詳細は後述する。
【０１１９】
パケット生成回路２３０は、符号化データ出力選択信号２１１、符号化データ２１２、符号化データカウント値２１３、オペランド検出信号２０３、オペランドデータ２０５を入力し、トレースパケット出力状態信号１３１をトレース状態出力端子１５０に、トレースパケット１３２をトレースデータ出力端子１５１にそれぞれ出力する。パケット生成回路２３０の詳細は後述する。
【０１２０】
図１５は符号化回路２１０の内部構成を示すブロック図である。図１５において、符号化回路２１０は、マスク回路２１４、カウンタ２１５、シフトレジスタ２１６、比較器２１８、２１９で構成されている。
【０１２１】
マスク回路２１４は、オペランド検出信号２０３と符号化データ出力モード信号２０４の反転との論理積により、オペランド検出による符号化データ出力選択信号２１７を生成する。
【０１２２】
シフトレジスタ２１６は、命令発行信号２０１をシフトイネーブルとして、命令実行条件成立信号２０２をシフトインし、命令の実行状態を示すフラグ列の意味を持つ符号化データ２１２を生成する。カウンタ２１５は、命令発行信号２０１をカウントイネーブルとして、符号化データ２１２のビット数のカウント値２１３を生成する。
【０１２３】
比較器２１８はカウント値２１３を比較器に設定した値と比較し、一致したときにカウント一致信号２２０を“１”にする。比較器２１９はカウント値２１３を“０”と比較し、カウント値２１３が“０”でないときにカウント一致信号２２１を“１”にする。このカウント一致信号２２０と命令発行信号２０１の論理積と、カウント一致信号２２１とオペランド検出による符号化データ出力選択信号２１７の論理積との論理和により、符号化データ出力選択信号２１１を生成する。
【０１２４】
図１６はパケット生成回路２３０の内部構成を示すブロック図である。図１６において、パケット生成回路２３０は、有効ビット数／バイト数生成回路２３３、パケットＩＤ格納手段２３６、トレースデータ組み立て回路２３８、ＦＩＦＯ書き込み制御回路２３９、ＦＩＦＯ２４３で構成されている。
【０１２５】
有効ビット数／バイト数生成回路２３３は、カウント値２１３の下位３ビットから有効ビット数２３４を生成し、カウント値２１３の４ビット目以上の値から有効バイト数２３５を生成する。パケットＩＤ格納手段２３６は定数であるパケットＩＤ２３７を格納する。
【０１２６】
トレースデータ組み立て回路２３８は、パケットＩＤ２３７、オペランドデータ２０５、符号化データ２１２、有効ビット数２３４、オペランド検出信号２０３、符号化データ出力選択信号２１１を入力し、符号化データ出力選択信号２１１が“１”のときに、パケットＩＤ２３７と有効ビット数２３４と符号化データ２１２を並べたデータ列を生成し、これを１バイトずつ区切ったものをトレースデータ２４１として出力する。
【０１２７】
また、オペランド検出信号２０３が“１”のときには、パケットＩＤ２３７とオペランドデータ２０５を並べたデータ列を生成し、これを１バイトずつ区切ったものをトレースデータ２４１として出力する。
【０１２８】
また、これらトレースデータ２４１として出力される有効データのうち、先頭のデータ出力と同時にトレースデータ出力状態信号２４０として“１”を出力する。２番目以降のトレースデータ出力時にはトレースデータ出力状態信号２４０は“０”となる。
【０１２９】
ＦＩＦＯ書き込み制御回路２３９は、有効バイト数２３５、符号化データ出力選択信号２１１、オペランド検出信号２０３を入力し、トレースデータ出力状態信号２４０およびトレースデータ２４１のＦＩＦＯ２４３に対するライトイネーブル信号２４２を生成する。
【０１３０】
ＦＩＦＯ２４３は、トレースデータ出力状態信号２４０、トレースデータ２４１、ライトイネーブル信号２４２を入力し、トレース出力の基準クロックに同期して入力したデータをシフトさせ、トレースパケット出力状態信号１３１およびトレースパケット１３２を入力された順に出力する。
【０１３１】
パケットＩＤ格納手段２３６に格納してあるパケットＩＤは図５に、符号化データ２１２をトレースデータとして出力する際にＦＩＦＯ２４３から出力されるトレースパケットのフォーマットは図６に、オペランドデータ２０５をトレースデータとして出力する際にＦＩＦＯ２４３から出力されるトレースパケットのフォーマットは図７に、それぞれ示され、それらの内容は従来技術および第１の実施形態で説明したとおりである。
【０１３２】
すなわち、図７において、ｃｌｏｃｋはトレース出力の基準クロックであり、ＴＲＣＤＡＴ［７：０］はトレースデータ出力端子１５１に出力されるトレースパケット２３２のフォーマットを示し、オペランドデータ２０５の値を示すＯｐｅｒａｎｄ  Ｄａｔａ［３１：０］とパケットＩＤの値を示すＯＤで構成される。
【０１３３】
次に、このように構成されたプロセッサ１からホストコンピュータ３がトレースデータを取得して実行履歴を復元する様子を、図１７から図２１を用いて説明する。ここでは、図１５の比較器２１８の比較値は“１０”とする。
【０１３４】
図１７はサンプルプログラムの命令例を示す図であり、“命令アドレス”、“アセンブラプログラム”、“実行順番”が示されている。プログラムの実行では、“実行順番”の“（１）”の“命令１”から“（７）”の“命令９”までを順に実行する。
【０１３５】
この例では、“命令４”と“命令８”と“命令１０“が実行されなかった命令であり、命令７はオペランドデータＯＤ＝０ｘＡＡＡＡＡＡＡＡを発生させる命令であると仮定している。
【０１３６】
図１７において、０ｘ５０００００００番地から順に実行した場合、命令発行信号２０１は、ＣＰＵの動作周波数に同期して、順に“１１１１１１１１１１”と変化し、同時に命令実行条件成立信号２０２は“１１１０１１１０１０”と変化する。
【０１３７】
また、０ｘ５０００００１８番地の命令７を実行したときに、オペランド検出信号２０３を“１”にし、オペランドデータ２０５として“０ｘＡＡＡＡＡＡＡＡ”を出力する。ここで、符号化データ出力モード信号２０４の設定値は“１”とする。
【０１３８】
命令発行信号２０１および命令実行条件成立信号２０２を受けて、符号化回路２１０のシフトレジスタ２１６から出力される符号化データ２１２は“１１１０１１１０１０”と変化する。また、カウンタ２１５のカウント値２１３は命令発行信号２０１の値をカウントイネーブルとして“０ｘａ”までカウントアップされる。カウント値が“０ｘ７”になったとき、命令７が実行されることによりオペランド検出信号２０３が“１”になる。
【０１３９】
このとき、従来例の図３０の符号化回路３１０のように、仮に符号化回路２１０にマスク回路２１４を持たないとすると、符号化データ出力選択信号２１１が“１”になり、符号化データ２１２はその時点でトレースデータとして出力される。
【０１４０】
しかし本実施形態では、オペランド検出信号２０３＝“１”を符号化データ出力モード信号２０４の反転＝“０”によりマスクし、オペランド検出による符号化データ出力選択信号２１７を“０”にするため、この時点では符号化データ出力選択信号２１１は“０”となる。そして、カウンタ２１５のカウント値２１３が“０ｘａ”までカウントアップされたときカウント一致信号２２０が“１”になり、符号化データ出力選択信号２１１が“１”になる。
【０１４１】
オペランド検出信号２０３が“１”になると、（オペランドデータのビット数“０ｘ２０”＋パケットＩＤのビット数“０ｘ２”）の４ビット目以上の値から有効バイト数２３５として“０ｂ１００”が出力される。
【０１４２】
これを受けて、パケット生成回路２３０のトレースデータ組み立て回路２３８では、パケットＩＤ＝ＯＤの値“０ｂ１１”、Ｏｐｅｒａｎｄ  Ｄａｔａ＝“０ｘＡＡＡＡＡＡＡＡ”が下位ビットから順に並べられる。
【０１４３】
ＦＩＦＯ書き込み制御回路２３９では、オペランド検出信号２０３の値が“１”になってから、トレース出力の基準クロックに同期して、有効バイト数２３５の値＋１＝５回だけＦＩＦＯへのライトイネーブル信号２４２を“１”にする。
【０１４４】
このライトイネーブル信号２４２を受け、トレースデータ組み立て回路２３８で生成されたデータが１バイトずつ５回に分けてＦＩＦＯ２４３に出力される。また、このデータ出力の先頭の１バイトの出力と同時に、トレースデータ出力状態信号２４０として“１”が出力される。
【０１４５】
次に、符号化データ出力選択信号２１１が“１”になると、（カウント値“０ｘａ”＋ＮＶのビット数“０ｘ３”＋パケットＩＤのビット数“０ｘ２”）の下位３ビットから有効ビット数２３４として“０ｂ１１１”が出力され、４ビット目以上の値から有効バイト数２３５として“０ｂ１”が出力される。
【０１４６】
これを受けて、パケット生成回路２３０のトレースデータ組み立て回路２３８では、パケットＩＤ＝ＴＦの値“０ｂ０１”、ＮＶ＝有効ビット数２３４の値“０ｂ１１１”、Ｔａｋｅｎ  Ｆｌａｇ＝“０ｂ１１１０１１１０１０”が下位ビットから順に並べられる。
【０１４７】
ＦＩＦＯ書き込み制御回路２３９では、符号化データ出力選択信号２１１の値が“１”になってから、トレース出力の基準クロックに同期して、有効バイト数２３５の値＋１＝２回だけＦＩＦＯへのライトイネーブル信号２４２を“１”にする。
【０１４８】
このライトイネーブル信号２４２を受けて、トレースデータ組み立て回路２３８で生成されたデータが１バイトずつ２回に分けてＦＩＦＯ２４３に出力される。また、このデータ出力の先頭の１バイトの出力と同時に、トレースデータ出力状態信号２４０として“１”が出力される。
【０１４９】
これをＦＩＦＯ２４３が受け、トレースパケット１３２およびトレースパケット出力状態信号１３１として出力する。図１８は、図１７のサンプルプログラムを実行した場合のトレースパケットを示す図である。
【０１５０】
ホストコンピュータ３は図１８に示すパケットを受け取り、まず、ＴＲＣＤＡＴ［１：０］からパケットＩＤ＝ＯＤという情報を得る。そしてオペランドデータＤＡＴＡ＝０ｘＡＡＡＡＡＡＡＡという情報を得る。
【０１５１】
次に、ＴＲＣＤＡＴ［１：０］からパケットＩＤ＝ＴＦ、ＴＲＣＤＡＴ［４：２］からＮＶ＝７という情報を得る。そしてＮＶ＝７であることから、符号化データＦＬＡＧ＝０ｂ１１１０１１１０１０という情報を得る。図１９は、このようにしてホストコンピュータ３がプロセッサ１から取得したトレース情報を示す図である。
【０１５２】
次に、図１７のサンプルプログラムと図１９のトレース情報が与えられたときに、ホストコンピュータ３が実行履歴を復元する手順を説明する。図２０は、ホストコンピュータ３が実行履歴を復元する処理のアルゴリズムを示すフローチャートである。
【０１５３】
図２０において、ステップ２０００で、ＩＰは０ｘ５０００００００番地、ＴＰは０ｘ０番地、ＥＴＰは０ｘ２番地に設定される。次に、ＴＰ≠ＥＴＰであるのでステップ２００１はスキップしてステップ２００２に進み、トレースメッセージがＯＤであることよりステップ２００８、ステップ２００９へと進む。そしてＯＤ＝０ｘＡＡＡＡＡＡＡＡという情報をホストコンピュータ上のメモリに保存し、ＴＰを０ｘ１番地に設定し、ステップ２００１に戻る。
【０１５４】
ここで、ＴＰ≠ＥＴＰであるのでステップ２００２に進み、トレースメッセージがＴＦであることよりステップ２００４、ステップ２００５と進む。そしてフラグの値が“１”であるので０ｘ５０００００００番地に命令１を表示して、ＩＰを０ｘ５００００００４番地にインクリメントする。
【０１５５】
有効フラグが残っていて、かつ次のフラグの値が“１”であるので、０ｘ５００００００４番地に命令２を表示し、ＩＰを０ｘ５００００００８番地にインクリメントする。同様に０ｘ５００００００８番地に命令３を表示し、まだ有効フラグが残っていて、かつ次のフラグの値が“０”であるので、その次の命令５のアドレス０ｘ５０００００１０番地をＩＰに設定する。
【０１５６】
まだ有効フラグが残っていて、かつ次のフラグの値が“１”であるので、０ｘ５０００００１０番地に命令５を表示し、ＩＰを０ｘ５０００００１４にインクリメントする。同様に０ｘ５０００００１４番地に命令６、０ｘ５０００００１８番地に命令７を表示する。
【０１５７】
ここで、命令７がオペランドデータを発生する命令であるので、ホストコンピュータ上のメモリに保存してある最も古い（この例では１つしかない）オペランドデータＯＤ＝０ｘＡＡＡＡＡＡＡＡを表示し、このオペランドデータをメモリから消去する。
【０１５８】
まだ有効フラグが残っていて、かつ次のフラグの値が“０”であるので、その次の命令９のアドレス０ｘ５００００２０番地をＩＰに設定する。さらにまだ有効フラグが残っていて、かつ次のフラグの値が“１”であるので、０ｘ５０００００２０番地に命令９を表示し、次のフラグの値が“０”であるので、命令を表示せずにＩＰをインクリメントする。
【０１５９】
ここで有効フラグ数が終了したので、ＴＰを０ｘ２番地に設定し、ステップ２００１に戻る。そしてＴＰ＝ＥＴＰと判定されるので実行履歴復元を終了する。
【０１６０】
図２１は、このようにして得られた実行履歴を示す図である。図２１には“トレースメモリアドレス”、“トレースメッセージ”、“トレースパケット”、“アドレス”、“復元された実行履歴”が図示されており、図１７に示すサンプルプログラムが復元できたことが確認できる。
【０１６１】
このように、符号化データ出力モード信号２０４によりオペランド検出信号２０３をマスクすることで、オペランド情報発生時に符号化データをトレースデータとして出力させないように制御することが可能となり、これによりオペランド情報発生によるトレースデータの増加を抑制することができる。
【０１６２】
（実施の形態３）
図２２は本発明の第３の実施形態におけるプロセッサの構成を示すブロック図である。  図２２において、プロセッサ１は、ＣＰＵ２００、符号化回路２１０、パケット生成回路２６０、トレース状態出力端子１５０、トレースデータ端子１５１で構成されている。
【０１６３】
ＣＰＵ２００は、命令発行信号２０１、命令実行条件成立信号２０２、オペランド検出信号２０３、符号化データ出力モード信号２０４を符号化回路２１０へ出力する。また、オペランドデータ２０５をパケット生成回路２６０へ出力する。
【０１６４】
命令実行条件成立時には命令発行信号２０１および命令実行条件成立信号２０２は“１”となり、命令実行条件不成立時には命令発行信号２０１は“１”、命令実行条件成立信号２０２は“０”となる。オペランド情報発生時にはオペランド検出信号２０３は“１”になる。
【０１６５】
また、符号化データ出力モード信号２０４は、符号化データ出力選択信号２１１を生成する条件にオペランド検出信号２０３を含めるか否かを設定するモード信号である。符号化データ出力モード信号２０４が“１”のときは、符号化データ出力選択信号２１１を生成する条件にオペランド検出信号２０３を含めないように制御する。
【０１６６】
符号化回路２１０は、命令発行信号２０１、命令実行条件成立信号２０２、オペランド検出信号２０３、符号化データ出力モード信号２０４を入力し、符号化データ出力選択信号２１１、符号化データ２１２、符号化データビットカウント値２１３をパケット生成回路２６０へ出力する。符号化回路２１０の詳細は実施の形態２で先述したとおりである。
【０１６７】
パケット生成回路２６０は、符号化データ出力選択信号２１１、符号化データ２１２、符号化データカウント値２１３、オペランド検出信号２０３、オペランドデータ２０５を入力し、トレースパケット出力状態信号１３１をトレース状態出力端子１５０に、トレースパケット１３２をトレースデータ出力端子１５１にそれぞれ出力する。
【０１６８】
図２３はパケット生成回路２６０の内部構成を示すブロック図である。図２３において、パケット生成回路２６０は、有効ビット数／バイト数生成回路２６３、パケットＩＤ格納手段２６６、トレースデータ組み立て回路２６８、ＦＩＦＯ書き込み制御回路２６９、ＦＩＦＯ２７３で構成されている。
【０１６９】
有効ビット数／バイト数生成回路２６３は、カウント値２１３の下位３ビットから有効ビット数２６４を生成し、カウント値２１３の４ビット目以上の値から有効バイト数２６５を生成する。パケットＩＤ格納手段２６６は定数であるパケットＩＤ２６７を格納する。
【０１７０】
トレースデータ組み立て回路２６８は、パケットＩＤ２６７、オペランドデータ２０５、符号化データ２１２、有効ビット数２６４、オペランド検出信号２０３、符号化データ出力選択信号２１１、カウント値２１３を入力し、符号化データ出力選択信号２１１が“１”のときに、パケットＩＤ２６７と有効ビット数２６４と符号化データ２１２を並べたデータ列を生成し、これを１バイトずつ区切ったものをトレースデータ２７１として出力する。
【０１７１】
また、オペランド検出信号２０３が“１”のときには、パケットＩＤ２６７とオペランドデータ２０５とカウントデータ２１３を並べたデータ列を生成し、これを１バイトずつ区切ったものをトレースデータ２７１として出力する。
【０１７２】
また、トレースデータ２７１として出力される有効データのうち、先頭のデータ出力と同時にトレースデータ出力状態信号２７０として“１”を出力する。２番目以降のトレースデータ出力時にはトレースデータ出力状態信号２７０は“０”となる。
【０１７３】
ＦＩＦＯ書き込み制御回路２６９は、有効バイト数２６５、符号化データ出力選択信号２１１、オペランド検出信号２０３を入力し、トレースデータ出力状態信号２７０およびトレースデータ２７１のＦＩＦＯ２７３に対するライトイネーブル信号２７２を生成する。
【０１７４】
ＦＩＦＯ２７３は、トレースデータ出力状態信号２７０、トレースデータ２７１、ライトイネーブル信号２７２を入力し、トレース出力の基準クロックに同期して入力したデータをシフトさせ、トレースパケット出力状態信号１３１およびトレースパケット１３２を入力された順に出力する。
【０１７５】
パケットＩＤ格納手段２６６に格納してあるパケットＩＤは図５に、符号化データ２１２をトレースデータとして出力する際にＦＩＦＯ２７３から出力されるトレースパケットのフォーマットは図６にそれぞれ示され、それらの内容は従来技術、第１および第２の実施形態で説明したとおりである。
【０１７６】
図２４は、オペランドデータ２０５をトレースデータとして出力する際のＦＩＦＯ２７３から出力されるトレースパケットのフォーマットを示す図である。
【０１７７】
図２４において、ｃｌｏｃｋはトレース出力の基準クロックを示す。ＴＲＣＤＡＴ［７：０］はトレースデータ出力端子１５１に出力されるトレースパケット１３２のフォーマットを示し、オペランドデータ２０５の値を示すＯｐｅｒａｎｄ  Ｄａｔａ［３１：０］とパケットＩＤの値を示すＯＤとオペランド発生位置を示すＯｐｅｒａｎｄ発生位置で構成される。
【０１７８】
図２４に示すように、“ｃｌｏｃｋ” に同期して、ＯＤ、Ｏｐｅｒａｎｄ Ｄａｔａ［３１：０］、Ｏｐｅｒａｎｄ発生位置がトレースデータとして順に１バイトずつ出力される。
【０１７９】
次に、このように構成されたプロセッサ１からホストコンピュータ３がトレースデータを取得して実行履歴を復元する様子を図２５から図２８を用いて説明する。サンプルプログラムとしては、実施の形態２と同じ、図１７のサンプルプログラムの命令を用い、図１５の比較器２１８の比較値は“１０”とする。
【０１８０】
図１７において、０ｘ５０００００００番地から順に実行した場合、命令発行信号２０１は、ＣＰＵの動作周波数に同期して、順に“１１１１１１１１１１”と変化し、同時に命令実行条件成立信号２０２は“１１１０１１１０１０”と変化する。
【０１８１】
また、０ｘ５０００００１８番地の命令７を実行したときに、オペランド検出信号２０３を“１”にし、オペランドデータ２０５として“０ｘＡＡＡＡＡＡＡＡ”を出力する。ここで、符号化データ出力モード信号２０４の設定値は“１”とする。
【０１８２】
これを受けて、符号化回路２１０のシフトレジスタ２１６から出力される符号化データ２１２は“１１１０１１１０１０”と変化する。また、カウンタ２１５のカウント値２１３は命令発行信号２０１の値をカウントイネーブルとして“０ｘａ”までカウントアップされる。カウント値が“０ｘ７”になったとき、命令７が実行されることによりオペランド検出信号２０３が“１”になる。
【０１８３】
本実施形態では、オペランド検出信号２０３＝“１”を符号化データ出力モード信号２０４の反転＝“０”によりマスクし、オペランド検出による符号化データ出力選択信号２１７を“０”にするため、この時点では符号化データ出力選択信号２１１は“０”となる。そして、カウンタ２１５のカウント値２１３が“０ｘａ”までカウントアップされたときカウント一致信号２２０が“１”になり、符号化データ出力選択信号２１１が“１”になる。
【０１８４】
オペランド検出信号２０３が“１”になると、（オペランドデータのビット数“０ｘ２０”＋パケットＩＤのビット数“０ｘ２”＋オペランド発生位置のビット数“０ｘ５”）の４ビット目以上の値から有効バイト数２６５として“０ｂ１００”が出力される。
【０１８５】
これを受けて、パケット生成回路２６０のトレースデータ組み立て回路２６８では、パケットＩＤ＝ＯＤの値“０ｂ１１”、Ｏｐｅｒａｎｄ Ｄａｔａ＝“０ｘＡＡＡＡＡＡＡＡ”、Ｏｐｅｒａｎｄ発生位置＝“０ｂ００１１１”（オペランド検出信号２０３が“１”のときのカウント値２１３の値）が下位ビットから順に並べられる。
【０１８６】
ＦＩＦＯ書き込み制御回路２６９では、オペランド検出信号２０３の値が“１”になってから、トレース出力の基準クロックに同期して、有効バイト数２６５の値＋１＝５回だけＦＩＦＯへのライトイネーブル信号２７２を“１”にする。
【０１８７】
このライトイネーブル信号２７２を受け、トレースデータ組み立て回路２６８で生成されたデータが１バイトずつ５回に分けてＦＩＦＯ２７３に出力される。また、このデータ出力の先頭の１バイトの出力と同時に、トレースデータ出力状態信号２７０として“１”が出力される。
【０１８８】
次に、符号化データ出力選択信号２１１が“１”になると、（カウント値“０ｘａ”＋ＮＶのビット数“０ｘ３”＋パケットＩＤのビット数“０ｘ２”）の下位３ビットから有効ビット数２６４として“０ｂ１１１”が出力され、４ビット目以上の値から有効バイト数２６５として“０ｂ１”が出力される。
【０１８９】
これを受けて、パケット生成回路２６０のトレースデータ組み立て回路２６８では、パケットＩＤ＝ＴＦの値“０ｂ０１”、ＮＶ＝有効ビット数２３４の値“０ｂ１１１”、ＴａｋｅｎＦｌａｇ＝“０ｂ１１１０１１１０１０”が下位ビットから順に並べられる。
【０１９０】
ＦＩＦＯ書き込み制御回路２６９では、符号化データ出力選択信号２１１の値が“１”になってから、トレース出力の基準クロックに同期して、有効バイト数２６５の値＋１＝２回だけＦＩＦＯへのライトイネーブル信号２７２を“１”にする。
【０１９１】
このライトイネーブル信号２７２を受けて、トレースデータ組み立て回路２６８で生成されたデータが１バイトずつ２回に分けてＦＩＦＯ２７３に出力される。また、このデータ出力の先頭の１バイトの出力と同時に、トレースデータ出力状態信号２７０として“１”が出力される。
【０１９２】
これらをＦＩＦＯ２７３が受け、トレースパケット１３２およびトレースパケット出力状態信号１３１として出力する。図２５は、図１７のサンプルプログラムを実行した場合のトレースパケットを示す図である。
【０１９３】
ホストコンピュータ３は図２５に示すパケットを受け取り、まず、ＴＲＣＤＡＴ［１：０］からパケットＩＤ＝ＯＤという情報を得る。そしてオペランドデータＤＡＴＡ＝０ｘＡＡＡＡＡＡＡＡという情報と、オペランド発生位置ＰＯＳＩＴＩＯＮ＝７という情報を得る。
【０１９４】
次に、ＴＲＣＤＡＴ［１：０］からパケットＩＤ＝ＴＦ、ＴＲＣＤＡＴ［４：２］からＮＶ＝７という情報を得る。そしてＮＶ＝７であることから、符号化データＦＬＡＧ＝０ｂ１１１０１１１０１０という情報を得る。図２６は、このようにしてホストコンピュータ３がプロセッサ１から取得したトレース情報を示す図である。
【０１９５】
次に、図１７のサンプルプログラムと図２６のトレース情報が与えられたときに、ホストコンピュータ３が実行履歴を復元する手順を説明する。図２７は、ホストコンピュータ３が実行履歴を復元する処理のアルゴリズムを示すフローチャートである。
【０１９６】
図２７において、ステップ３０００で、ＩＰは０ｘ５０００００００番地、ＴＰは０ｘ０番地、ＥＴＰは０ｘ２番地に設定される。次に、ＴＰ≠ＥＴＰであるのでステップ３００１はスキップしてステップ３００２に進み、トレースメッセージがＯＤであることよりステップ３００８、ステップ３００９へと進む。そしてＯＤ＝０ｘＡＡＡＡＡＡＡＡという情報とＰＯＳＩＴＩＯＮ＝７という情報をホストコンピュータ上のメモリに保存し、ＴＰを０ｘ１番地に設定し、ステップ３００１に戻る。
【０１９７】
ここで、ＴＰ≠ＥＴＰであるのでステップ３００２に進み、トレースメッセージがＴＦであることよりステップ３００４、ステップ３００５と進む。そしてフラグの値が“１”であるので０ｘ５０００００００番地に命令１を表示して、ＩＰを０ｘ５００００００４番地にインクリメントする。
【０１９８】
有効フラグが残っていて、かつ次のフラグの値が“１”であるので、０ｘ５００００００４番地に命令２を表示し、ＩＰを０ｘ５００００００８番地にインクリメントする。同様に０ｘ５００００００８番地に命令３を表示し、まだ有効フラグが残っていて、かつ次のフラグの値が“０”であるので、その次の命令５のアドレス０ｘ５０００００１０番地をＩＰに設定する。
【０１９９】
まだ有効フラグが残っていて、かつ次のフラグの値が“１”であるので、０ｘ５０００００１０番地に命令５を表示し、ＩＰを０ｘ５０００００１４にインクリメントする。同様に０ｘ５０００００１４番地に命令６、０ｘ５０００００１８番地に命令７を表示する。
【０２００】
まだ有効フラグが残っていて、かつ次のフラグの値が“０”であるので、その次の命令９のアドレス０ｘ５００００２０番地をＩＰに設定する。さらにまだ有効フラグが残っていて、かつ次のフラグの値が“１”であるので、０ｘ５０００００２０番地に命令９を表示し、次のフラグの値が“０”であるので、命令を表示せずにＩＰをインクリメントする。
【０２０１】
ここで有効フラグ数が終了したので、ホストコンピュータ上のメモリに保存してあるオペランドデータＯＤ＝０ｘＡＡＡＡＡＡＡＡをオペランド発生位置ＰＯＳＩＴＩＯＮ＝７に相当する命令７に対応させて表示し、メモリからこのオペランド情報を消去する。次に、ＴＰを０ｘ２番地に設定し、ステップ２００１に戻る。そしてＴＰ＝ＥＴＰと判定されるので実行履歴復元を終了する。
【０２０２】
図２８は、このようにして得られた実行履歴を示す図である。図２８は“トレースメモリアドレス”、“トレースメッセージ”、“トレースパケット”、“アドレス”、“復元された実行履歴”が図示されており、図１７に示すサンプルプログラムが復元できたことが確認できる。
【０２０３】
このように、オペランド情報発生時に符号化フラグのカウント値をオペランドデータのトレースパケットに含めて出力することで、オペランド情報発生時に符号化回路２１０で符号化データをトレースデータとして出力しない場合においても、どの命令でオペランド情報が発生したかの情報をトレースすることが可能になる。
【産業上の利用可能性】
【０２０４】
本発明にかかるプロセッサおよび開発支援装置は、プロセッサの動作を外部から解析、評価する手段として有用である。
【図面の簡単な説明】
【０２０５】
【図１】本発明の第１の実施形態におけるプロセッサの構成を示すブロック図。
【図２】本発明の第１の実施形態における静的スケジューリング済み命令除去回路の内部構成を示す回路図。
【図３】本発明の第１の実施形態における符号化回路の内部構成を示すブロック図。
【図４】本発明の第１の実施形態におけるパケット生成回路の内部構成を示すブロック図。
【図５】パケットＩＤ格納手段に格納されるパケットＩＤを示す図。
【図６】符号化データのトレースパケットのフォーマットを示す図。
【図７】オペランドデータのトレースパケットのフォーマットを示す図。
【図８】開発支援装置の構成を示すブロック図。
【図９】サンプルプログラムの命令例を示す図。
【図１０】サンプルプログラム実行結果のトレースパケットを示す図。
【図１１】ホストコンピュータがプロセッサから取得したトレース情報を示す図。
【図１２】本発明の第１の実施形態におけるホストコンピュータの実行履歴復元処理を示すフローチャート。
【図１３】トレース情報を用いて復元された実行履歴を示す図。
【図１４】本発明の第２の実施形態におけるプロセッサの構成を示すブロック図。
【図１５】本発明の第２の実施形態における符号化回路の内部構成を示すブロック図。
【図１６】本発明の第２の実施形態におけるパケット生成回路の内部構成を示すブロック図。
【図１７】サンプルプログラムの命令例を示す図。
【図１８】サンプルプログラム実行結果のトレースパケットを示す図。
【図１９】ホストコンピュータがプロセッサから取得したトレース情報を示す図。
【図２０】本発明の第２の実施形態におけるホストコンピュータの実行履歴復元処理を示すフローチャート。
【図２１】トレース情報を用いて復元された実行履歴を示す図。
【図２２】本発明の第３の実施形態におけるプロセッサの構成を示すブロック図。
【図２３】本発明の第３の実施形態におけるパケット生成回路の内部構成を示すブロック図。
【図２４】オペランドデータのトレースパケットのフォーマットを示す図。
【図２５】サンプルプログラム実行結果のトレースパケットを示す図。
【図２６】ホストコンピュータがプロセッサから取得したトレース情報を示す図。
【図２７】本発明の第３の実施形態におけるホストコンピュータの実行履歴復元処理を示すフローチャート。
【図２８】トレース情報を用いて復元された実行履歴を示す図。
【図２９】従来のプロセッサの構成を示すブロック図。
【図３０】従来のプロセッサにおける符号化回路の内部構成を示すブロック図。
【図３１】従来のプロセッサにおけるパケット生成回路の内部構成を示すブロック図。
【図３２】サンプルプログラムの命令例を示す図。
【図３３】サンプルプログラム実行結果のトレースパケットを示す図。
【図３４】ホストコンピュータがプロセッサから取得したトレース情報を示す図。
【図３５】従来の形態におけるホストコンピュータの実行履歴復元処理を示すフローチャート。
【図３６】トレース情報を用いて復元された実行履歴を示す図。
【符号の説明】
【０２０６】
１  プロセッサ
２  トレース情報蓄積装置
３  ホストコンピュータ
１００、２００、３００  ＣＰＵ
１０１、２０１、３０１  命令発行信号
１０２、２０２、３０２  命令実行条件成立信号
１０３  静的スケジューリングによる実行確定信号
１０４、２０３、３０３  オペランド検出信号
１０５、２０５、３０４  オペランドデータ
１１０  静的スケジューリング済み命令除去回路
１１１  静的スケジューリング済み命令を除いた命令発行信号
１１２  静的スケジューリング済み命令を除いた命令実行条件成立信号
１１３、１１４、２１４  マスク回路
１２０、２１０、３１０  符号化回路
１２１、２１１、３１１  符号化データ出力選択信号
１２２、２１２、３１２  符号化データ
１２３、２１３、３１３  カウント値
１２４、２１５、３１４  カウンタ
１２５、２１６、３１５  シフトレジスタ
１２６、１２７、２１８、２１９、３１６、３１７  比較器
１２８、１２９、２２０、２２１、３１８、３１９  カウント一致信号
１３０、２３０、２６０、３２０  パケット生成回路
１３１  トレースパケット出力状態信号
１３２  トレースパケット
１３３、２３３、２６３、３２３  有効ビット数／バイト数生成回路
１３４、２３４、２６４、３２４  有効ビット数
１３５、２３５、２６５、３２５  有効バイト数
１３６、２３６、２６６、３２６  パケットＩＤ格納手段
１３７、２３７、２６７、３２７  パケットＩＤ
１３８、２３８、２６８、３２８  トレースデータ組み立て回路
１３９、２３９、２６９、３２９  ＦＩＦＯ書き込み制御回路
１４０、２４０、２７０、３３０  トレースデータ出力状態信号
１４１、２４１、２７１、３３１  トレースデータ
１４２、２４２、２７２、３３２  ライトイネーブル信号
１４３、２４３、２７３、３３３  ＦＩＦＯ
１５０  トレース状態出力端子
１５１  トレースデータ出力端子
１６０  トレースメモリ制御手段
１６１  トレースメモリ読み出し要求信号
１６２  トレースメモリ出力データ
１６３  トレースメモリ制御信号
１６４  トレースメモリ書込みデータ
１６５  トレースメモリ
２０４  符号化データ出力モード信号
２１７  オペランド検出による符号化データ出力選択信号
【図１】
2006120071.tif 000003
【図２】
2006120071.tif 000004
【図３】
2006120071.tif 000005
【図４】
2006120071.tif 000006
【図５】
2006120071.tif 000007
【図６】
2006120071.tif 000008
【図７】
2006120071.tif 000009
【図８】
2006120071.tif 000010
【図９】
2006120071.tif 000011
【図１０】
2006120071.tif 000012
【図１１】
2006120071.tif 000013
【図１２】
2006120071.tif 000014
【図１３】
2006120071.tif 000015
【図１４】
2006120071.tif 000016
【図１５】
2006120071.tif 000017
【図１６】
2006120071.tif 000018
【図１７】
2006120071.tif 000019
【図１８】
2006120071.tif 000020
【図１９】
2006120071.tif 000021
【図２０】
2006120071.tif 000022
【図２１】
2006120071.tif 000023
【図２２】
2006120071.tif 000024
【図２３】
2006120071.tif 000025
【図２４】
2006120071.tif 000026
【図２５】
2006120071.tif 000027
【図２６】
2006120071.tif 000028
【図２７】
2006120071.tif 000029
【図２８】
2006120071.tif 000030
【図２９】
2006120071.tif 000031
【図３０】
2006120071.tif 000032
【図３１】
2006120071.tif 000033
【図３２】
2006120071.tif 000034
【図３３】
2006120071.tif 000035
【図３４】
2006120071.tif 000036
【図３５】
2006120071.tif 000037
【図３６】
2006120071.tif 000038