(57)【特許請求の範囲】
【請求項１】
データプロセッサにより実行される命令をスケジューリングするための命令スケジューラ（７）と、
前記命令スケジューラに結合され、スケジュールされた命令に関するトレースデータを受信するトレースユニットと、
を備え、
前記トレースユニットは、外部装置と接続するためのトレース出力と、該トレース出力に接続され、前記トレース出力に渡す前にトレースデータを格納するためのトレース出力バッファ（２１）とを有し、前記トレース出力バッファ（２１）及び前記スケジューラ（７）にトレースインパクトカウンタ（２０）が接続されており、
使用中、前記トレース出力バッファ（２１）は、バッファ占有率データを前記スケジューラ（７）に送信し、該スケジューラは、前記バッファ占有率データに基づいて命令のスケジューリングを一時停止し、前記スケジューリングの一時停止の表示を前記トレースインパクトカウンタ（２０）に送信し、該トレースインパクトカウンタ（２０）は、前記命令のスケジューリングが一時停止されたサイクル数を、前記トレース出力バッファ（２１）に送信されるトレースデータに加える、
ことを特徴とするデータプロセッサ。
【請求項２】
前記バッファ占有率データは、前記トレース出力バッファが一杯であることの表示であることを特徴とする請求項１に記載のデータプロセッサ。
【請求項３】
データプロセッサからのトレースデータを与える方法であって、
前記データプロセッサは、
該データプロセッサにより実行される命令をスケジューリングするためのスケジューラと、
前記トレースデータを外部装置に出力する前に該トレースデータを格納するためのトレース出力バッファを含むトレースユニットと、
前記トレース出力バッファと前記スケジューラに接続され、前記命令のスケジューリングが一時停止されたサイクル数を計数するトレースインパクトカウンタを含み、
前記方法は、
前記トレース出力バッファ内の使用可能な空間の表示を前記スケジューラに送信するステップと、
前記スケジューラが、前記使用可能な空間の表示に基づいて、前記命令のスケジューリングを一時停止し、前記スケジューリングの一時停止の表示を前記トレースインパクトカウンタに送信するステップと、
前記トレースインパクトカウンタが、前記命令のスケジューリングが一時停止されたサイクル数を、前記トレース出力バッファに送信されるトレースデータに加えるステップを含む、
ことを特徴とする方法。
【請求項４】
前記トレース出力バッファ内の使用可能な空間の表示は、該トレース出力バッファが一杯であることの表示であることを特徴とする請求項３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パイプライン型アーキテクチャを有するデータプロセッサ、及び、そのようなデータプロセッサ内のトレースデータを与える方法及びシステムに関する。
【背景技術】
【０００２】
初期のマイクロプロセッサは、一度に１つの命令のみで動作したため、命令はメモリからフェッチされ、デコードされ、論理演算装置により実行され、その結果は、次いで別の命令のためにプロセス全体が繰り返される前に、レジスタ又はメモリに戻って格納される。
【０００３】
プロセッサのクロック速度の増加を可能にするために、現代のマイクロプロセッサは、パイプラインと呼ばれる特徴的構造を用い、フェッチ、デコード、実行、書き込みの種々のステージを通して同時に進行する多数の命令を有する。これは、各ステージがより単純な（したがって、より高速の）論理を含むことを可能にし、より長い動作を含む幾つかのステージに対しては、複数の組の論理を含んで、このステージに複数の命令を同時に存在させることを可能にする。現代のプロセッサが、１０又はそれ以上の深いステージのパイプラインを有することは珍しくない。
【０００４】
現代のマイクロプロセッサの別の特徴的構造は、トレースユニットである。トレースユニットは、命令のストリームを通してのマイクロプロセッサの進行を報告し、データをメモリに書き込む、及び／又は、これをプロセッサ上の適切な周辺インターフェースを介して外部装置にエクスポートする。幾つかの場合においては、トレースユニットにより報告される情報は、すぐにエクスポートされ、幾つかの場合においては、マイクロプロセッサ内の内部バッファリングによる遅延又はマイクロプロセッサの外部メモリにおける遅延を伴ってエクスポートされる。
【０００５】
深いマルチステージのパインプラインは、次々に命令のストリームがあり、プログラムの論理内に分岐又はループがない場合、動作上の利点をもたらす。しかしながら、分岐がある場合には、確実にパイプラインが有用に占有されたままにすることは非常に困難になり、パイプライン内の進行中の大量の作業を廃棄しなければならない場合がある。
【０００６】
この問題に対して、複雑な分岐予測論理、分岐後の両方ともに可能なパスに沿った命令ストリームの推論的処理、及び、多数の他のものを含む多数の解決法が過去に適用されており、多くの場合、複数の手法が同じマイクロプロセッサ内で用いられている。
【０００７】
例えば、命令の短いストリング（１つの命令のみの場合を含む）が、マイクロプロセッサ内の何らかの予め存在する状態に応じて実行又はスキップされる場合に対する１つの簡単な解決法は、条件付き命令の使用である。これらの命令は、それらが実行されるべき条件又は実行されるべきではない条件を示す付加的なフィールドを有する。しかしながら、この条件又は複数の条件は、命令がマイクロプロセッサのパイプラインに入る時点では、最終の条件試験結果に設定されていないことがある。したがって、、条件付き命令は、通常のように、実行ステージを含むパイプラインを下降して進むことが可能であるが、命令の結果（あらゆる新規の内部マイクロプロセッサ状態を含む）が格納される直前に、命令が実行されるべき条件又は複数の条件に対するチェックが行われ、これらの条件が満たされた場合にのみ、結果が最終宛先に書き込まれる。この結果の最終的な格納は、多くの場合「完了」と呼ばれ、このステージを通って進行した命令は、「完了した」又は「完了された」と言われる。完了しない命令のストリングがパイプラインの深さより短い場合には、プロセッサの処理量全体が増加することになる。
【０００８】
条件付き命令が、深いパイプライン及びトレースユニットと同時に用いられるときは、命令を報告する２つの標準的な代替的手法があるが、いずれも完全に満足のいくものではない。条件付き命令は常に報告され得るため、データの精度を低下させ、潜在的にユーザを混乱させる。代替的に、命令が完了しない場合には、命令の報告は全く行われないことがある。どちらの手法が用いられるかは、多くの場合、トレースユニットがパイプライン内のどこに接続されているかによって決まる。パイプライン内の初めに接続されている場合には、命令が完了したか又は完了していないかに関わらず、全ての命令が報告される。最後の完了ステージに接続されている場合には、完了した命令のみを報告することは容易であるが、命令に関する多くの情報は、このステージでは廃棄されている場合もあり、このことは、トレースユニットにより報告される情報の有用性を低くする。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】英国特許第２，３１１，８８２号
【発明の概要】
【発明が解決しようとする課題】
【００１０】
同様に、プログラムが中断されたとき、又は、分岐命令が推論的にフェッチされたが実行されなかったときに、トレースデータを分析するのに困難が生じる。したがって、分析するのが簡単であり、状況における要求に応じて、トレースデータの部分を含めるか又は廃棄する融通性を有するトレースデータを提供できるようにする必要性がある。
【課題を解決するための手段】
【００１１】
本発明はその種々の態様において、ここで参照すべき独立請求項において定義される。有利な特徴は、従属請求項において説明される。
【００１２】
第１の態様において、本発明は、条件付き命令を含むプログラム命令をフェッチするための命令フェッチユニットと、複数の実行ステージを有する実行パイプラインと、命令フェッチユニットと実行パイプラインとの間に接続され、命令を実行パイプラインに渡すスケジューリングを行うための命令スケジューラと、実行パイプラインと並列にスケジューラに接続され、複数のステージを有し、実行パイプライン内の命令に対応するトレースデータを伝えるトレースパイプラインと、トレースパイプラインの出力に結合されたトレース出力と、実行パイプライン内の条件付き命令が完了されるべきかどうか判断し、判断結果をトレースパイプライン内の対応するトレースデータに加えるための手段と、を備えるデータプロセッサを提供する。
【００１３】
第２の態様において、本発明は、実行パイプラインに接続され、命令を実行パイプラインに渡すスケジューリングを行う命令スケジューラと、実行パイプラインと並列にスケジューラに接続され、複数のステージを有するトレースパイプラインと、該トレースパイプラインの出力に結合されたトレース出力と、を備えたパイプライン型データプロセッサからのトレースデータを与える方法を提供し、本方法は、条件付き命令を含む命令をスケジューラから実行パイプラインに渡し、命令に対応するトレースデータをトレースパイプラインに渡し、条件付き命令が実行パイプライン内で完了されるべきかどうか判断し、判断結果をトレースパイプライン内の対応するトレースデータに加えるステップを含む。
【００１４】
本発明の第１及び第２の態様によると、データプロセッサにより処理される全ての条件付き命令に対応するトレースデータは、完了してもしなくても、トレースユニットにより報告される可能がある。命令が完了したかどうかを示す付加的な情報もまた、トレース出力に含めることができる。この手法は、正確にどの命令が完了しなかったかをユーザに明らかにすることを確実にし、必要に応じて、外部装置により、ユーザに表示される情報からこれらの命令に対する参照を除去することも可能である。付加的な利点は、ユーザが直接又はコンピュータを使用してデータを分析し、条件付き命令のストリングが、期待される動作上の利点を示したかどうかを調べることができることである。
【００１５】
第３の態様によると、本発明は、実行される命令をスケジューリングするスケジューラと、スケジューラに接続された、複数の実行ステージを有する実行パイプラインと、実行パイプラインと並列にスケジューラに接続された、複数のステージを有するトレースパイプラインと、トレースパイプラインの最終ステージに接続されたトレース出力と、実行パイプラインの最終ステージに接続された入力及びトレース出力に接続された出力を有する、トレースパイプラインからのデータにデータを加えるための手段とを備えるデータプロセッサであって、使用中、データを加えるための手段は、実行パイプラインにより完了した命令に関する情報を、トレースパイプラインから出力される対応するデータと同期して、トレース出力に選択的に出力する、データプロセッサを提供する。
【００１６】
第４の態様によると、本発明は、複数のステージを有する実行パイプラインと、実行パイプラインに接続され、命令を実行パイプラインに渡すスケジューリングを行う命令スケジューラと、複数のステージを有し、実行パイプラインと並列にスケジューラに接続されたトレースパイプラインと、該トレースパイプラインの出力に接続されたトレース出力と、を備えたパイプライン型データプロセッサからのトレースデータを供給する方法を提供し、本方法は、実行パイプラインにより完了した命令に関する情報を、トレースパイプラインから出力された対応するデータに加えるステップを含む。
【００１７】
第５の態様によると、本発明は、データプロセッサ内でのプログラムの実行に関する動作情報を報告する方法を提供し、本方法は、プログラム内で一次タスクを実行する既存の命令を、同じ一次タスクを実行するが、プログラムの実行に関する動作情報をトレース出力に報告する付加的な作用を有する代わりの命令と置き換えるステップを含む。
【００１８】
プログラム命令を置き換えるステップは、コンパイラにより自動的に実行されることが好ましい。代わりの命令は、さらに、命令により作動する、データをトレース出力に報告する作用を有することが好ましい。
【００１９】
第６の態様によれば、本発明は、プログラム命令を処理するための複数の機能ユニットと、プログラム命令をメモリからフェッチする命令フェッチユニットと、命令フェッチユニットと複数の機能ユニットとに接続され、フェッチされた命令がいつ機能ユニットに発行されるか判断する命令スケジューラと、該スケジューラに接続され、プロセッサの動作に関するトレースデータを出力するトレースデータ出力とを備えるデータプロセッサであって、命令フェッチユニットは、分岐命令のフェッチ後に、どの命令がメモリからフェッチされるか判断するのに用いられる分岐予測論理を含み、該命令フェッチユニットは、フェッチされた命令に関連する分岐予測情報をスケジューラに出力し、プロセッサは、分岐命令に関連する条件（又は複数の条件）が満たされたかどうかチェックすることにより、分岐予測情報が正しいかどうか判断し、判断結果をトレースデータに加える、データプロセッサを提供する。
【００２０】
第７の態様によると、本発明は、プロセッサにより実行される命令をメモリからフェッチし、フェッチされた分岐命令に続いて、次にどの命令をメモリからフェッチするか予測し、プロセッサ内で、分岐命令に関連する条件（又は複数の条件）が満たされたかどうかチェックすることにより、予測が正しいかどうか判断し、判断するステップの結果をトレースデータに加える、ステップを含む、プロセッサのトレースデータ内の分岐予測情報を与える方法を提供する。
【００２１】
第８の態様によると、本発明は、プログラム命令をフェッチするための命令フェッチユニットと、複数の機能ユニットを備えた実行パイプラインと、命令フェッチユニットと実行パイプラインとの間に接続され、命令を実行パイプラインに渡すスケジューリングを行うための命令スケジューラと、スケジューラに結合され、該スケジューラがスケジュールされた命令に関するトレースデータを渡すトレース出力と、プロセッサに関連する割り込み又は例外ステータス情報をスケジューラに渡すための手段とを備え、該スケジューラは、トレースデータ内の割り込み又は例外ステータス情報の表示を含む、データプロセッサを提供する。
【００２２】
第９の態様によると、本発明は、実行パイプラインに接続され、命令を実行パイプラインに渡すスケジューリングを行う命令スケジューラと、該スケジューラに接続されたトレース出力と、を含むパイプライン型データプロセッサからのトレースデータを与える方法を提供し、本方法は、プロセッサの割り込み又は例外データをスケジューラに入力し、プロセッサの割り込み又は例外データを、スケジュールされた命令に関する関連のトレースデータと共にトレース出力に渡す、ステップを含む。
【００２３】
第１０の態様によると、本発明は、データプロセッサにより実行される命令をスケジューリングする命令スケジューラと、該スケジューラに接続されてスケジュールされた命令に関するトレースデータを受け取るトレースユニットとを備えるデータプロセッサであって、該トレースユニットは、外部装置と接続するためのトレース出力と、該トレース出力に接続され、該トレース出力に渡す前にトレースデータを格納するためのトレース出力バッファと、トレース出力バッファ及びスケジューラに接続されたトレースインパクトカウンタとを有するデータプロセッサであって、使用中、トレース出力バッファは、バッファ占有率データをスケジューラに送信し、該スケジューラは、該バッファ占有率データに基づいて、命令のスケジューリングを修正し、スケジューリングが修正されたことの表示をトレースインパクトカウンタに送信し、該トレースインパクトカウンタは、スケジューリングが修正されたことの表示を、トレース出力バッファに送信されるトレースデータに加える、データプロセッサを提供する。
【００２４】
第１１の態様によると、本発明は、データプロセッサにより実行される命令をスケジューリングするスケジューラと、トレースデータを外部装置に出力する前に該トレースデータを格納するためのトレース出力バッファを含むトレースユニットと、を備えるデータプロセッサからのトレースデータを与える方法を提供し、本方法は、トレース出力バッファ内の使用可能な空間の表示をスケジューラに送信し、使用可能な空間の表示に基づいて、命令のスケジューリングを修正し、スケジューラの修正の表示をトレースデータに含める、ステップを含む。
【００２５】
本発明の態様の各々は、データ処理装置において、単独で、又は、本発明の他の態様の１つ又はそれ以上と組み合わせて提供することができる。
これから添付の図面を参照して、本発明の種々の態様を具体化する例を詳細に説明する。
【図面の簡単な説明】
【００２６】
【図１】本発明によるトレース機構を含む例示的なプロセッサのアーキテクチャを示す。
【図２】図１のトレースパイプライン及び実行パイプラインに接続された条件パイプラインを示す。
【図３】分岐予測情報をトレースデータに含めるための機構を示す。
【図４】図１のトレース出力におけるトレースデータの例を示す。
【発明を実施するための形態】
【００２７】
図１は、本発明の一実施例によるデータプロセッサの機構の概略図である。図１は、１つのスレッドに対する処理装置のみを示す。しかしながら、同じ機能性アーキテクチャをマルチスレッドプロセッサに適用することができる。
【００２８】
ここで図１に示すユニットの各々を説明する。
キャッシュ又はメモリ１は、プロセッサにより実行される命令のソースである。命令は、内部又は外部のアドレス指定可能メモリ内に、又は、命令キャッシュ内に保持されるこのメモリのコピー内に保持することができる。
【００２９】
命令フェッチユニット２は、キャッシュ１に接続される。このユニットは、キャッシュ又はメモリから命令をプリフェッチする。このプロセスの一部として、ユニットは条件付き分岐が利用されるかどうか予測することを試みて正しい命令をプリフェッチしようとし、これを確実にする。このことは、図３を参照してより詳細に説明する。
【００３０】
フェッチユニット２は、プリフェッチされた命令、及び、分岐が利用されるかどうか予測されたことを含む、命令フェッチユニットの状態及び動作に関する側波帯データの両方を出力する。これら両方の出力は、先入れ先出しバッファ（ＦＩＦＯ）を有し、データを後のステージに送る前にバッファする。これらのＦＩＦＯは同じ長さであり、データはこれらから同時に引き出され、命令及び関連する側波帯情報が同期して確実に側波帯レジスタ及び命令レジスタに送られるようにする。
【００３１】
プリデコードユニット３は、実行される命令を命令フェッチユニット２から取り出し、それらから命令が実行されるときに必要になるリソースを指定する付加的なデータを生成する。このデータは、どの機能ユニットが必要であり、どのソース及び／又は宛先レジスタが用いられ、どんなメモリＩ／Ｏが必要になるか等を含む。
【００３２】
側波帯レジスタ４は、命令フェッチユニットからの側波帯データを格納する。このレジスタ内のデータは、発行されるのを待っている命令に関連する。
【００３３】
命令レジスタ５は、プリデコードユニット３からの命令データを格納する。このレジスタ内のデータは、発行されるのを待っている命令に関連する。
【００３４】
ポストデコードユニット６は、命令レジスタ５及び側波帯レジスタ４からデータを取り出し、命令の実行を可能にする付加的なデコードを行う。スケジューラ７に送信される主出力は、命令実行の後のステージ全体を制御するのに用いられる制御信号の複合セットである。さらに、やはりスケジューラ７に送信される別の出力があり、これは、命令フェッチからの側波帯データと、プロセッサの割り込み処理状態に関する付加的な情報とで構成される。
【００３５】
ほとんどのプロセッサは、代わりの命令ストリームが実行される間、主プログラム内の命令実行の通常のフローを短時間停止させる、割り込み及び例外と呼ばれる機構を含む。これは、特に、割り込み又は例外が入れ子にされ、主プログラムにおいて実行が再開される前に、別の代わりの命令ストリームが実行し始める場合には、トレースデータを分析してプログラムの実行パス及びタイミングを理解することを困難にし、潜在的に間違えを起こし易くする。
【００３６】
割り込みステータス情報は、割り込み信号又は例外イベントについて、プロセッサの入力ポート及び内部状態を監視するトリガユニットから受信することができる。トリガユニットは、この情報を、側波帯データを含むポストデコードユニット６に供給する。代替的に、割り込みステータス情報は、スケジューラにより生成することができ、又は、内部及び外部両方の多数のソースから受信することができる。上述のように、割り込み信号の生成は、データプロセッサにおいて周知のことである。
【００３７】
トレースデータに加えられた割り込み／例外データは、割り込み又は例外の結果として、プロセッサがいつ代わりの命令ストリームを処理し始めるか、及び、この代わりのストリームの実行がいつ終わるかを示す。トレースデータは、割り込みステータスに基づいて、必要であればトレースイベントフィルタ内でフィルタ処理することができる。例えば、代わりの命令ストリームが実行される間、通常のトレースデータの幾つか又は全てを抑制することができる。代替的に、割り込み処理が始まり又は終わり、これらのイベントを検出することが可能になるとき、付加的なトレースデータをトレースデータに含めることができる。割り込み／例外データは、所与の命令に関するトレースデータに対して、該命令が発行された時点で加えられ、その後、トレースパイプラインに渡される。これにより、関連する割り込み／例外データが、トレース出力において、確実にトレースデータに結合される。
【００３８】
命令スケジューラ７は、命令レジスタから命令ストリームを取り出し、その他のプロセッサの現在の活動に関する情報、並びに、ポストデコードユニット６からの情報を用いて、いつ命令を機能ユニット８、９、１０に発行するかを審査する。命令が機能ユニットに発行されると、対応するトレースデータ及びプログラムカウンタデータが、トレースパイプライン１１に送信される。
【００３９】
機能ユニット８、９、１０は、実行パイプラインを形成する。このパイプラインは、命令スケジューラから命令を受信し、多数のステージでこれらを実行する。本実施例において、ステージは、ソースからのオペランドフェッチ、論理演算装置による処理、次いで、宛先への結果の条件付き書き込みである。このライトバックは「完了」と呼ばれ、この条件付きプロセスを受けた命令は「完了した」命令と呼ばれる。
【００４０】
実行パイプラインと並列して、トレースパイプライン１１がある。このユニットは、機能ユニットに供給されるのと同じデータの多く、さらにトレースタグデータ及びプログラムカウンタデータを受信する。トレースタグデータは、側波帯データ及び割り込みステータスデータを含む。このデータは、実行パイプラインと同じ数のステージを有するパイプラインを通して供給されるため、データは遅延し、機能ユニットが条件付きで対応する命令を完了させるのと同時に、トレースパイプラインの終端に達する。
【００４１】
本実施例において、条件パイプライン２３は、いずれかの条件付き命令が完了されるべきかどうか判断する。命令が実行パイプラインに渡される前にこの判断をすることはできない。したがって、条件パイプラインは、後のサイクルの間に判断（本明細書においては条件試験と呼ぶ）を行い、この条件試験の結果を実行パイプライン内の適切な機能ユニット及びトレースパイプラインの両方に提示する。図示した実施例においては、条件試験結果は、命令発行後３サイクルまで機能ユニット及びトレースパイプラインに渡されないため、データは、実際には、実行パイプライン８及びトレースパイプライン１１の最終ステージに供給される。このことは、図２を参照して、より詳細に説明する。
【００４２】
図２は、トレースパイプライン１１及び実行パイプラインと並列に動作する条件パイプライン２３を示す。明確にするために、１つの実行パイプライン２２だけを示す。命令が発行されると、スケジューラ７は、関連する実行パイプラインに命令して関連するデータをフェッチさせ、その機能を実行させる。同時に、命令に関するトレースデータがトレースパイプライン１１に渡され、命令が完了されるべき条件に関する条件データが条件パイプライン２３に送られる。完了直前のステージ（又は、条件が満たされなければならない、いずれかのステージの前）において、条件パイプラインが条件試験（又は、複数の条件試験）を行い、命令の完了に対する条件が満たされたかどうかをチェックする。条件パイプラインは、プログラム内の特定の条件に関する条件フラグを、制御レジスタからフェッチし、条件試験を行う。次に、試験結果が完了フラグの形態で実行パイプラインに送られ、トレースパイプライン内のデータに加えられる。実行パイプライン内の論理２４は、完了フラグを受信し、これを用いて、命令を次のステージに渡すかどうか、すなわち、完了するどうかを判断する。
【００４３】
したがって、このシステムにおいては、条件付き命令に関するトレースデータは、命令が完了してもしてなくても、トレースパイプラインを通して供給される。完了状態の表示は、トレースパイプラインの最終ステージにおいて、トレースデータに加えられる。トレースデータは、完了状態に基づいてフィルタ処理できるため、完了した命令に関するトレースデータのみが、トレース出力データに含められる。
【００４４】
完了フラグは、実行パイプラインを介して又はスケジューラを介して、トレースパイプラインに渡されることが可能である。また、スケジューラが、専用の条件パイプラインの代わりに、条件試験を実行することも可能である。
【００４５】
再び図１を参照すると、全ての機能ユニットは、その計算結果を、それ自体のレジスタファイル又はいずれかの他の機能ユニットのレジスタファイルに随意的に書き込むことができる。幾つかのこうした書き込みは、同時に起こり得る。このことは、全ての機能ユニットの出力をレジスタファイルの複数の書き込み入力の１つと相互接続するライトバックバス１２を介して行われる。さらに、全ての機能ユニットの出力は、書き込みセレクタに接続される。
【００４６】
レジスタファイル１３、１４、１５は、全てのプロセッサレジスタを保持し、各機能ユニットに対して、このようなレジスタの１つのバンクが存在する。レジスタファイルは、複数の書き込みポートを有し、したがって、１サイクル当たり複数の書き込みを受け入れることができる。
【００４７】
機能ユニットからの計算結果をもトレース機構を介して与えることができるように、書き込みセレクタ１６は、ライトバックバス１２に接続され、関連する機能ユニットからのデータを取り出し、このデータをトレースパイプラインから来るデータと組み合わせる。
【００４８】
書き込みセレクタ１６は、トレースパイプライン１１からの制御信号に基づいて、トレースパイプラインからのトレースデータにデータを加える。制御信号は、トレースイベントの種類、並びに、データのソースユニット及びソースレジスタを示す。この情報は、スケジューラ７からのトレースデータの一部であり、図１においては、トレースパイプラインの最終ステージから書き込みセレクタに渡されるように示される。この制御情報から、書き込みセレクタは、データが加えられる必要があるかどうか判断することができ、そうである場合には、ライトバックバスのどのアームからデータを取り出すべきか判断することができる。このことは、図４を参照してさらに説明する。書き込みセレクタ１６がデータを加える条件は、ユーザが望む通りに選択することができる。
【００４９】
特別に適合されたプログラムコードを用いることにより、トレース出力に含まれるさらに別の動作データを得ることも可能である。付加的な動作データを生成する方法は多数あり、１つの一般的な方法は、コンパイラ及び／又はライブラリ関数内において、手動で又は自動的に、「計測」コードをプログラム内に配置することである。この計測コードは、プログラムの動作を分析するのに有用な情報を報告する付加的なコードである。報告された動作情報は、マイクロプロセッサシステム内に格納されるか、又は、このシステムの外に移され、両方の場合において、即時に又は後で、照合して分析することができる。しかしながら、計測コードは、プログラムのサイズ及びその実行のタイミングの両方を変更し、このことが動作情報の精度、したがって、その有用性を制限する。
【００５０】
本発明の態様によると、実行されるプログラム内の既存の命令は手動で又は自動的にトレース副次的作用命令で置き換えられ、これは同じ一次タスクを実行するが、従来の計測コードにより生成されるものと概ね同様の動作情報を生成する付加的な作用又は副次的作用を有する。これらのトレース副次的作用命令の使用は、プログラムのサイズ、一次的機能、又は実行のタイミングに影響しないことになるので、動作情報をはるかに正確で有用なものにする。
【００５１】
これらのトレース副次的作用命令は、プログラム内のどこに配置してもよいが、プログラム内の機能及び副機能のプリアンブル及びポストアンブル内で用いられることが好ましい。プリアンブル及びポストアンブルは、コンパイラにより生成される機能コードの一部であり、重要なレジスタを保存／復元し、スタックフレームを生成して、機能に渡されるパラメータが正しい場所、及び、重要であるがプログラムの作成者の直接の制御の外にある多数の他のタスクに配置されることを保証する。好ましい実施例においては、置き換えられた命令は、機能のフレームポインタを構築及び破壊するために用いられる。プログラムのソースコードを機械実行可能形態に変換するコンパイラは、プリアンブル及びポストアンブルにおける幾つかの命令が自動的にトレース副次的作用形態で置き換えられ、これによって動作情報を報告することを可能にするモードを有することができる。
【００５２】
命令の位置、命令の一次機能により操作されるデータ値、プロセッサシステム内からのタイミング情報、プロセッサシステム内のイベントカウンタ値、及びプロセッサシステムの内部状態及び状態を含むがこれらに限定されない多数の種類の情報をトレース副次的作用命令により報告することができる。
【００５３】
トレース副次的作用命令の１つの実施はまた、命令の命令コード部分、及び／又は、命令の一次タスクにより操作されるデータ値、及び／又は、命令により報告される他の動作データのいずれかを検査し、これを用いて、動作データを完全に又は部分的に報告するべきか、又は全く報告しなくてよいかを判断するためのシステムを提供する。
【００５４】
トレース副次的作用命令機構の別の実施は、トレース副次的作用命令のメモリ内の位置に基づいて、動作データを完全に又は部分的に報告するべきか、又は全く報告しなくてよいかについての制御を可能にする。
【００５５】
トレース副次的作用命令の例を以下に与える。トレース副次的作用命令は、通常のＭＯＶ命令を、正確に同じことを行うが、さらにトレースデータを生成する変形体で置き換える。この命令は、ＴＴＭＯＶと呼ばれる。
【００５６】
ユニット間のＴＴＭＯＶ伝送命令の１つの一般的な使用は、例えば、コールエントリ及びエグジットポイントを識別してコールグラフ関連のトレースデータの収集を可能にする。コンパイラのフラグは、以下に示す２つの特定の場所においては、ＭＯＶよりむしろＴＴＭＯＶを用いるようコンパイラに伝える。
ARoutine: TTMOV D0FrT,A0FrP; Trace push of frame pointer
ADD   A0FrP,A0Stp,#9
SETL  [A0StP++],D0FrT,D1RtP
…Body of routine
GETL   D0FrT,D1RtP,[--A0StP] 
TTMOV A0FrP,D0FrT; Trace pop of frame pointer
MOV   PC, D1RtP
【００５７】
トレース作用は、ユニット間移動命令の副次的作用であるため、命令は、通常、トレース記録が実行時に無効になったとき、プログラムのエントリ及びエグジットシーケンスの一部として機能する。
【００５８】
再び図１を参照すると、トレースパイプライン１１及び書き込みセレクタ１６からのデータは、フィルタ処理することができる。カウンタイベントフィルタ１７は、完了する命令の種類、並びに、ソースユニット及びソースレジスタに関する情報を用いて動作カウンタ１９に対して、それらのデータをトレース出力バッファ２１に出力するように命令するかどうか判断する。データをトレース出力バッファ２１へ出力する命令は、カウンタダンプ信号である。このトレースイベントフィルタは、どのレジスタからのどのトレースイベントが、カウンタダンプ信号を生成するか／しないかに関連して構成することが可能なレジスタを有する。
【００５９】
トレースイベントフィルタ１８は、どのトレースイベントがトレース出力バッファに渡されるか／渡されないかに関連して構成することが可能なレジスタを有する。さらに、トレース出力バッファに渡される情報の種類／量に対する制御があり、イベントの種類、対応するプログラムカウンタ、ソースレジスタ／ユニット、及び機能ユニットからの計算結果だけをオプションとして含む。このことは、幾つかの例示的なトレースデータの構造を示す図４を参照して説明する。
【００６０】
動作カウンタユニット１９は、種々のイベントがプロセッサ内で生じたときに増分する多数のカウンタを含む。カウンタダンプ信号を受信すると、これらのカウンタに蓄積されたカウンタデータは、トレース出力バッファ２１に書き込まれ、全てのカウンタはゼロにリセットされる。
【００６１】
トレース出力バッファ２１は、トレースイベントデータ及びカウンタデータの両方を取り出し、バッファに格納し、次いでこのデータをトレース出力に供給するマルチステージバッファである。
【００６２】
プロセッサの命令実行速度は、通常、トレースデータのエクスポートに用いられるインターフェースの速度を超え、外部バスの幅は内部バスと同じではない可能性があるので、幾つかのトレースデータを省かなければならないか、又は、プロセッサを短時間停止させて、トレースデータのエクスポートが追いつくようにしなければならない状況になることが多い。プロセッサを一時停止させることを選択した場合には、プログラムの実行のタイミングは、トレースデータがエクスポートされなかった場合に生じる実行のタイミングとは異なるものとなる。
【００６３】
トレース出力バッファ２１は、データ転送速度における短時間のピークに対処することが要求される。本発明の態様によると、これらのピークが、最も単純な実施形態において、トレース出力バッファが一杯である場合には、トレース出力バッファは、バッファフル・フラグをアサートする。このフラグは、命令スケジューラ７に、命令を機能ユニットに送信することを中止させ、データソースが一時停止している間に、データをトレース出力に送信し続けることにより、トレース出力バッファ２１が付加的なデータのための場所を空けることができるようにする。
【００６４】
トレースインパクトカウンタ２０は、動作カウンタユニット１９内のカウンタの１つである。これはスケジューラに接続され、トレース出力バッファが、バッファフル・フラグをアサートするか又は容量が一杯に近いことを示すことによって、スケジューラが命令を発行しない間のサイクルを計数する。トレースインパクトカウンタのデータは、動作カウンタユニットがそのコンテンツをトレース出力に送るとき、トレースデータに含められる。トレースインパクトカウンタは、スケジューラ７から信号を受信する代わりに、トレース出力バッファ２１から直接バッファフル・フラグを受信することが可能である。
【００６５】
トレース出力バッファ２１がバッファフル・フラグをアサート停止するのをスケジューラが待っている状態における全てのサイクルで、トレースインパクトカウンタ２０が増分される。代替的なスキームは、命令スケジューラ７が、トレースデータを生成しない命令を発行し続けることであるが、これは、これらがトレース出力バッファ内の場所を必要としないためである。
【００６６】
別の可能性のある実施形態は、バッファフル・グラグを、バッファ２１内の使用可能な場所を示す信号で置き換え、命令スケジューラ７が、使用可能なトレース出力バッファ容量に基づいて、どの命令を発行できるか／できないかに関する複雑な決定をするものである。
【００６７】
図３は、図１に示すトレースデータ内に分岐予測情報を含める機構をより詳細に示す。命令フェッチユニット２は、メモリ１から命令をフェッチし、プログラム命令内の特定の分岐が分岐命令に従って選ばれるかどうかを予測する。これは良く理解されているプロセスであり、多数の使用可能なプロセッサは、ある種の分岐予測論理を含む。典型的かつ単純な予測システムは、プログラム内の全ての逆方向分岐（すなわち、ループ）を取り入れ、プログラム内の全ての前方向分岐（すなわち、ジャンプ）は取り入れないものであるが、予測アルゴリズムは、これよりかなり複雑なものにすることができる。フェッチされた命令は、命令レジスタ５に送信される。分岐予測情報は、側波帯レジスタ４に送信される。命令は、分岐命令に関連する発行条件が、スケジューラ７によりチェックされ、満たされるまで、発行及びスケジュールされない。条件が満たされず、予測が不適切であることがわかった場合には、スケジューラは、フェッチユニットに対して、正しい命令をフェッチするよう命令する。このことは、図３において、矢印３１により示される。条件が満たされると、命令が発行される。通常、分岐予測システムは、単に、予測情報により作動し、その後これを廃棄する。しかしながら、本発明の態様においては、図１及び図３に示すように、予測情報は、プロセッサ（この例においては、トレースパイプライン１１）を通してトレース出力に渡される。予測情報を用いて、分岐予測ハードウェアを評価及び改善することができ、及び／又は、コンパイラコードをどのように書いて、予測精度を向上させることができるかについての情報をもたらすことができる。予測情報は、対応する命令が発行されたときにトレースデータに加えられ、その命令に関するトレースデータの残りの部分と同期して維持されるため、出力トレースデータの分析は容易になる。
【００６８】
トレースパイプラインを実行パイプラインと並列にすることは、多数の利点を有することがわかる。これは、命令の処理の異なるステージに関するトレースデータが、トレースデータ内で一緒に維持されることを可能にする。全て同じ命令に関連する、分岐予測に関する側波帯データ、並びに、条件付き命令の割り込みステータス及び完了ステータス、完了した命令の結果からのトレースデータ、及びスケジューリングデータは、１つのトレースデータユニットとして、トレース出力に渡される。本発明のシステム及び方法は、所望により、複数の異なる基準に基づいてユニットを選択的にフィルタ処理することを可能にする。
【００６９】
図４は、トレース出力に送信される２つの異なるイベント、ＴＴＭＯＶ及びＭＯＶ  ＴＴＭＡＲＫに対するトレースデータの例を示す。トレースイベントは、イベントを識別するのに用いられる１６ビットのフィールドと、随意的な後続データの４つの３２ビットのフィールド、ａ、ｂ、ｃ、ｄとで構成される。
【００７０】
図４を参照すると、イベントの種類は、ビット１５：１２内の４ビットコードにより特定される。イベントの種類はまた、後続データの量を示し、後続データの解釈を導く。ビット１１：４は、イベントが「ＴＴＭＯＶ」である場合、ソースユニット（Ｕｓ）及びソースレジスタ（Ｓｒｅｇ）を示す。ビット１１：４は、イベントが「ＭＯＶ  ＴＴＭＡＲＫ」である場合には、即値データを示す。ビット３：２は、マルチスレッドアーキテクチャにおいて、イベントがどのスレッドに関連するかを示す。ビット１（Ｐ）は、プログラムカウンタ（ＰＣ）データが後続のデータ内にあることを示すフラグである。ビット０（Ｔ）は、タグデータが後続のデータ内にあることを示すフラグである。
【００７１】
トレースイベントフィルタ１８及びカウンタイベントフィルタ１７は、１６ビットのフィールドを検査し、イベントを通すかどうか、及び（トレースイベントフィルタの場合）無関係のデータを除去するかどうかを決定する。例えば、トレースイベントフィルタ１８は、選択されたイベントコードを有するトレースデータはトレース出力に渡すが、後続のトレース副次的作用データの幾つかを取り除くように構成することができる。
【００７２】
後続のデータは、４つの３２ビットのブロック、ａ、ｂ、ｃ及びｄに分けられる。ａは、プログラムカウンタ（ＰＣ）データを保持する随意的な後続データである。ｂは、タグデータを保持する随意的な後続データである。ブロックｂ内のタブデータは、分岐予測情報、割り込みステータス情報、及び完了フラグ情報を含む。ｃは、トレース副次的作用命令及び幾つかの他のトレース命令により出力されたデータの下位の３２ビットを保持する随意的な後続データである。ｄは、トレース副次的作用命令及び幾つかの他のトレース命令により出力されたデータの上位の３２ビットを保持する随意的な後続データである。
【００７３】
書き込みセレクタ１６の動作は、このトレースデータを参照することによって、よりよく理解することができる。書き込みセレクタ１６は、トレースイベント、ソースユニット及びソースレジスタのフィールドに対応するトレースパイプライン１１から制御情報を受信する。この制御情報に基づいて、書き込みセレクタは、付加的なデータをトレースイベントに加えるかどうか、及び、どの実行パイプライン８から（したがって、ライトバックバス１２のどのアームから）来るべきかを判断する。書き込みセレクタ１６は、次に、トレース副次的作用命令からの付加的なデータ、及び／又は、完了した命令に関する他のデータをブロックｃ及びｄにおいてトレースデータに加える。
【００７４】
本明細書における図及び説明は、単一スレッドプロセッサに対して実施される本発明を説明するが、本発明は、マルチスレッドプロセッサにも等しく適用することができる。マルチスレッドプロセッサにおいては、プロセッサの各々の実行スレッドは、別個の条件パイプラインを必要とし、機能ユニットは、それらがどのスレッドのレジスタに対して動作しているかについて通知される必要があり、対応するレジスタファイルは、１スレッド当たり１バンクで、複数のレジスタのバンクを含む必要がある。このことは次に、機能ユニットが、それらが命令を実行しているスレッドのレジスタを読み出し及び書き込むことを可能にし、さらに、機能ユニットが、命令を完了するかどうかを知るために、どの条件パイプラインを調べるかを判断することを可能にする。マルチスレッドプロセッサは、特許文献１において、より完全に説明されている。
【００７５】
本発明の好ましい態様
本発明の１つの態様において、条件付き命令を含むプログラム命令をフェッチするための命令フェッチユニットと、複数の実行ステージを有する実行パイプラインと、命令フェッチユニットと実行パイプラインとの間に接続され、命令を実行パイプラインに渡すスケジューリングをする命令スケジューラと、実行パイプラインと並列にスケジューラに接続され、複数のステージを有し、実行パイプライン内の命令に対応するトレースデータを伝えるトレースパイプラインと、トレースパイプラインの出力に結合されたトレース出力と、実行パイプライン内の条件付き命令が完了されるべきかどうか判断し、判断結果を、トレースパイプライン内の対応するトレースデータに加えるための手段と、を備えるデータプロセッサが提供される。
【００７６】
判断を行うための手段は、トレースパイプライン及び実行パイプラインと並列にスケジューラに接続された入力と、実行パイプライン及びトレースパイプラインに接続された出力とを有する条件パイプラインであることが好ましい。
条件パイプラインの出力は、トレースパイプラインの最終ステージに接続されることが好ましい。
審査結果は、実行パイプラインを介してトレースデータに渡されることが好ましい。
トレースパイプラインは、実行パイプラインと同じ数のステージを有することが好ましい。
データプロセッサは、トレースパイプラインの出力とトレース出力との間に接続され、選択されたトレースデータのみをトレース出力に渡すトレースデータフィルタをさらに備えることが好ましい。
【００７７】
データプロセッサは、データをトレースデータに加えるための、実行パイプラインの最終ステージに接続された入力及びトレース出力に接続された出力を有する付加手段であって、使用中、実行パイプラインにより完了した命令に関する情報を、トレースパイプラインから出力される対応するデータと同期して、トレースデータに選択的に加える付加手段をさらに備えることが好ましい。
付加手段は、命令の動作に関する情報及び／又は命令の結果に関する情報を出力することが好ましい。
データプロセッサは、複数の実行パイプラインの出力を付加手段に接続するライトバックバスをさらに含むことが好ましい。
【００７８】
付加手段は、トレースデータが関連する命令の種類に基づいて、データをトレースデータに加えるように構成されることが好ましい。
付加手段は、トレースデータが関連する命令の種類を示す制御信号を、トレースパイプラインから受信することが好ましい。
命令フェッチユニットは、分岐命令のフェッチに続いて、どのプログラム命令をフェッチするべきかを予測するための分岐予測論理を含み、該命令フェッチユニットは、フェッチした命令に関連する分岐予測情報をスケジューラに渡し、該スケジューラは、分岐命令に関連する条件が満たされたかどうかをチェックすることにより、分岐予測情報が正しいかどうか判断し、判断結果をトレースデータに加えることが好ましい。
分岐予測情報は、命令フェッチユニットから、対応するフェッチされた命令と並列に、且つ同期して、スケジューラに送信されることが好ましい。
【００７９】
スケジューラは、プロセッサが異なる動作モードに入ることを示す割り込み又は例外ステータス情報を受信又は判断し、該スケジューラは、割り込み又は例外ステータス情報の表示をトレースデータに含めることが好ましい。
データプロセッサは、トレースパイプラインの出力とトレース出力との間に接続されてトレースデータをトレース出力に渡す前にトレースデータを格納するためのトレース出力バッファと、トレース出力バッファとスケジューラとに接続されたトレースインパクトカウンタと、をさらに備え、使用中、トレース出力バッファは、バッファ占有率データをスケジューラに送信し、スケジューラは、バッファ占有率データに基づいて命令のスケジューリングを修正してスケジューリングの修正の表示をトレースインパクトカウンタに送信し、該トレースインパクトカウンタは、スケジューリングの修正の表示を、トレース出力バッファに送信されるトレースデータに加えることが好ましい。
スケジューラは、トレース出力バッファ占有率データに基づいて、命令のスケジューリングを一時停止することが好ましい。
バッファ占有率データは、トレース出力バッファが一杯であることの表示であることが好ましい。
【００８０】
本発明の別の態様において、複数のステージを有する実行パイプラインと、実行パイプラインに接続され、命令を実行パイプラインに渡すスケジューリングを行う命令スケジューラと、実行パイプラインと並列に命令スケジューラに接続され、複数のステージを有するトレースパイプラインと、該トレースパイプラインの出力に接続されたトレース出力と、を備えるパイプライン型データプロセッサからのトレースデータを与える方法が提供され、本方法は、条件付き命令を含む命令をスケジューラから実行パイプラインに渡し、命令に対応するトレースデータをトレースパイプラインに渡し、条件付き命令が実行パイプラインにより完了するべきかどうかの判断を行い、判断結果をトレースパイプライン内の対応するトレースデータに加える、ステップを含む。
【００８１】
本方法は、トレースパイプラインの出力からのトレースデータをフィルタ処理するステップをさらに含むことが好ましい。
条件試験の結果を対応するトレースデータに加えるステップは、条件試験の結果をトレースパイプラインの最終ステージにおけるトレースデータに加えることを含むことが好ましい。
データプロセッサは、実行パイプラインにより完了した命令に関する情報を、トレースパイプラインから出力される対応するデータと同期して、トレースデータに加えるステップをさらに含むことが好ましい。
完了した命令に関する情報は、命令の動作に関する情報及び／又は命令の結果に関する情報であることが好ましい。
データプロセッサは、プロセッサにより実行されるプログラム内の一次タスクを実行する既存の命令を、同じ一次タスクを実行するが、命令の実行に関する動作情報及び／又は命令の結果に関する情報をトレース出力に報告する副次的作用を有する代わりの命令で置き換えることをさらに含むことが好ましい。
【００８２】
データプロセッサは、実行中のプログラム内のどの命令のセットが、分岐命令のフェッチに続いてメモリからフェッチされるかを予測し、フェッチされた命令に関連する分岐予測情報をスケジューラに渡し、分岐命令に関連する条件が満たされたかどうかチェックすることにより、分岐予測情報が正しいかどうか判断し、判断の結果をトレースデータに加える、ステップをさらに含むことが好ましい。
データプロセッサは、プロセッサの割り込み又は例外データをスケジューラに与え、プロセッサの割り込み又は例外データを対応するトレースデータに加える、ステップをさらに含むことが好ましい。
【００８３】
プロセッサは、トレースデータを外部装置又はメモリに出力する前にトレースデータを格納するためのトレース出力バッファをさらに備え、トレース出力バッファ内の使用可能な空間の表示をスケジューラに送信し、使用可能な空間の表示に基づいて命令のスケジューリングを修正し、スケジューリングの修正の表示をトレースデータに含める、ステップをさらに含むことが好ましい。
命令のスケジューリングを修正するステップは、命令のスケジューリングを一時停止することであることが好ましい。
トレース出力バッファ内の使用可能な空間の表示は、トレース出力バッファが一杯であることの表示であることが好ましい。
【００８４】
本発明のさらに別の態様において、処理される命令をスケジューリングするスケジューラと、該スケジューラに接続され、複数の実行ステージを有する実行パイプラインと、複数のステージを有し、実行パイプラインと並列にスケジューラに接続され、実行パイプライン内の命令に対応するトレースデータを伝えるトレースパイプラインと、該トレースパイプラインの最終ステージに接続されたトレース出力と、実行パイプラインの最終ステージに接続された入力及びトレース出力に接続された出力を有し、トレースデータにデータを加えるための付加手段と、を備えるデータプロセッサであって、使用中、付加手段は、実行パイプラインにより完了した命令に関する情報を、トレースパイプラインから出力される対応するデータと同期して、トレースデータに選択的に加える、データプロセッサが提供される。
【００８５】
トレースパイプラインは、実行パイプラインと同じ数のステージを有することが好ましい。
データプロセッサは、トレースパイプラインの出力とトレース出力との間に接続され、選択されたトレースデータのみをトレース出力に渡すトレースデータフィルタをさらに備えることが好ましい。
付加手段は、命令の動作に関する情報及び／又は命令の結果に関する情報を出力することが好ましい。
データプロセッサは、複数の実行パイプラインの出力を付加手段に接続するライトバックバスをさらに備えることが好ましい。
付加手段は、トレースデータが関連する命令の種類に基づいて、データをトレースデータに加えるように構成されることが好ましい。
付加手段は、トレースデータが関連する命令の種類を示す制御信号を、トレースパイプラインから受信することが好ましい。
【００８６】
データプロセッサは、プログラム命令をフェッチするための命令フェッチユニットをさらに備え、該命令フェッチユニットは、分岐命令のフェッチに続いて、どのプログラム命令がフェッチされるべきかを予測するための分岐予測論理を含み、命令フェッチユニットは、フェッチされた命令に関連する分岐予測情報をスケジューラに渡し、該スケジューラは、分岐命令に関連する条件が満たされたかどうかチェックすることにより、分岐予測情報が正しいかどうかを判断し、判断の結果をトレースデータに加えることが好ましい。
分岐予測情報は、命令フェッチユニットから、対応するフェッチされた命令と並列に且つ同期して、スケジューラに送信されることが好ましい。
スケジューラは、プロセッサが異なる動作モードに入ることを示す割り込み又は例外ステータス情報を受信又は判断し、該スケジューラは、割り込み又は例外ステータス情報の表示をトレースデータに含めることが好ましい。
【００８７】
データプロセッサは、トレースパイプラインの出力とトレース出力との間に接続されてトレースデータをトレース出力に渡す前に格納するためのトレース出力バッファと、トレース出力バッファ及びスケジューラに接続されたトレースインパクトカウンタとをさらに備え、使用中、トレース出力バッファは、バッファ占有率データをスケジューラに送信し、該スケジューラはバッファ占有率データに基づいて命令のスケジューリングを修正し、スケジューリングの修正の表示をトレースインパクトカウンタに送信し、該トレースインパクトカウンタは、スケジューリングの修正の表示を、トレース出力バッファに送信されるトレースデータに加えることが好ましい。
スケジューラは、バッファ占有率データに基づいて、命令のスケジューリングを一時停止することが好ましい。
バッファ占有率データは、トレース出力バッファが一杯であることの表示であることが好ましい。
【００８８】
本発明のさらに別の態様において、複数のステージを有する実行パイプラインと、実行パイプラインに接続され、命令を実行パイプラインに渡すスケジューリングを行う命令スケジューラと、実行パイプラインと並列にスケジューラに接続され、複数のステージを有するトレースパイプラインと、トレースパイプラインの出力に接続されたトレース出力とを備えるパイプライン型データプロセッサからのトレースデータを与える方法が提供され、本方法は、実行パイプラインにより完了した命令に関する情報を、トレースパイプラインから出力された対応するデータに加えるステップを含む。
完了した命令に関する情報は、命令の動作に関する情報及び／又は命令の結果に関する情報であることが好ましい。
【符号の説明】
【００８９】
１：キャッシュ又はメモリ
２：命令フェッチユニット
３：プリデコードユニット
４：側波帯レジスタ
５：命令レジスタ
６：ポストデコードユニット
７：命令スケジューラ
８、９、１０：機能ユニット
１１：トレースパイプライン
１２：ライトバックバス
１３、１４、１５：レジスタファイル
１６：書き込みセレクタ
１７：カウンタイベントフィルタ
１８：トレースイベントフィルタ
１９：動作カウンタユニット
２０：トレースインパクトカウンタ
２１：トレース出力バッファ
２２：実行パイプライン
２３：条件パイプライン
２４：論理
３１：矢印
【図１】
0005485982.tif 000002
【図２】
0005485982.tif 000003
【図３】
0005485982.tif 000004
【図４】
0005485982.tif 000005