(57)【特許請求の範囲】
【請求項１】
データを処理するためのデータ処理装置において、
（ｉ）命令コードを実行する中央処理装置コアであって、各命令コードがメモリ内にアドレスを有し、前記データ処理装置コアとメモリとの間にアドレス・バスが伸延している前記中央処理装置コアと、
（ｉｉ）前記中央処理装置コアに命令コードを供給する命令パイプラインであって、前記命令コードが前記メモリから前記命令パイプラインへフェッチされ、次いで前記命令パイプラインを介して前記中央処理装置コアに転送して実行される前記命令パイプラインと、
（ｉｉｉ）トレース・バス上にトレース・データ信号を発生するトレース手段とを備え、
前記トレース手段は、
（ａ）前に実行した命令コードのアドレスに逐次的に連続するアドレスを有した命令コードを実行するときに、前記トレース・バス上にトレース・アドレス増加信号を発生するトレース・アドレス増加信号発生手段と、
（ｂ）前記フェッチされたコード・アドレスが前にフェッチした命令コードのアドレスに逐次的に連続しないときは、前記パイプラインにフェッチされた命令コードのフェッチされたコード・アドレスを表示するトレース・アドレスの複数部分を前記トレース・バス上に時分割多重化するトレース・アドレス発生手段とを備え、前記時分割多重化は、前記フェッチされたコード・アドレスを有する前記命令コードが前記命令パイプラインを介して転送され、前記中央処理装置コアに到達して実行される間に、行なわれることを特徴とするデータ処理装置。
【請求項２】
前記パイプラインに対する逐次的でないフェッチが発生するときは、パイプライン・パージ手段が、前記パイプラインから前記パイプラインへ既にフェッチされた保留中の命令コードを実行することなく消去することを特徴とする請求項１記載のデータ処理装置。
【請求項３】
前記トレース・アドレスは前記フェッチされたコード・アドレスであることを特徴とする請求項１記載のデータ処理装置。
【請求項４】
前記トレース・アドレスの前記複数部分は前記フェッチされたコード・アドレスの連続的な多数ビットのセグメントであることを特徴とする請求項３記載のデータ処理装置。
【請求項５】
前記トレース・アドレス発生手段は前記トレース・アドレスの前記複数部分を前記トレース・バスへ多重レベル・ビットの符号化をすることを特徴とする請求項１記載のデータ処理装置。
【請求項６】
（ｉ）前にアクセスしたデータ・ワードに逐次的に連続するアドレスを有したデータ・ワードに対してデータ・アクセスが発生するときは、前記トレース・バス上にデータ・アクセス・アドレス増加信号を発生するデータ・アクセス・アドレス増加信号発生手段と、
（ｉｉ）前のデータ・アクセス・オペレーションのアドレスに逐次的に連続していないデータ・アクセス・アドレスに対するデータ・アクセス・オペレーションに応答して、前記トレース・バス上に前記データ・アクセス・アドレスを表示するデータ・アドレスの複数部分的を時分割多重化するデータ・アクセス発生手段とを備えていることを特徴とする請求項１記載のデータ処理装置。
【請求項７】
前記データ・アドレスは前記データ・アクセス・アドレスであることを特徴とする請求項６記載のデータ処理装置。
【請求項８】
前記データ・アドレスの前記複数部分は前記データ・アクセス・アドレスの連続的な多数ビットのセグメントであることを特徴とする請求項７記載のデータ処理装置。
【請求項９】
前記データ・アクセス・アドレス発生手段は前記データ・アドレスの前記複数部分を前記トレース・バスへ多レベル・ビットの符号化をすることを特徴とする請求項６記載のデータ処理装置。
【請求項１０】
前記データ・アクセス・アドレス発生手段は、データ・アクセス・オペレーションを含む前記命令コードの実行を越えるオーバーラン期間中に、前記データ・アドレスの複数部分を前記トレース・バスへ時分割多重化することを特徴とする請求項６記載のデータ処理装置。
【請求項１１】
前記トレース・アドレス発生手段は、前記オーバーラン期間を開始遅延内に調整できるように、前記フェッチしたコード・アドレスから前記命令コードのフェッチを開始した命令コードの実行を完結させる遅延の後に、前記トレース・アドレスの複数部分を前記トレース・バスへ時分割多重化し始めることを特徴とする請求項１０記載のデータ処理装置。
【請求項１２】
前記トレース・バス上の信号を識別する部分を発生する手段を備え、前記信号を識別する部分は前記トレース・アドレスの複数部分又は前記データ・アドレスの前記複数部分のいずれが前記トレース・バス上に存在するのかを表示することを特徴とする請求項６記載のデータ処理装置。
【請求項１３】
前記トレース・アドレス発生手段は、前記アドレス・バスから前記フェッチされたコード・アドレスを捕捉し、かつ記憶する前記フェッチコード・アドレス補足手段と、前記トレース・アドレスの前記複数部分として前記フェッチコード・アドレス捕捉手段から前記フェッチされたコード・アドレスの異なる複数部分を連続的に選択するマルチプレクサとを備えていることを特徴とする請求項１記載のデータ処理装置。
【請求項１４】
前記中央処理装置コアから複数のステータス・フラグを受け取り、かつ命令コードの逐次的なフェッチが前記アドレス・バスの監視から独立して行われているか否かを推測する推測ロジックを備えていることを特徴とする請求項１記載のデータ処理装置。
【請求項１５】
前記中央処理装置コアから複数のステータス・フラグを受け取り、かつ命令コードの逐次的なフェッチが前記アドレス・バスから独立して行われているか否かを推測する推測ロジックを備え、 かつデータ・アクセス・アドレスが命令コード・ アドレスとともにインターリーブされていることをを特徴とする請求項６記載のデータ処理装置。
【請求項１６】
トレース・バスからトレース・データを受け取る装置において、
（ｉ）前記中央処理装置コアにより現在実行されている命令コードの陰の命令コード・アドレスを記憶する陰のプログラム・カウンタ・レジスタと、
（ｉｉ）前記トレース・バスから受け取ったトレース・アドレス増加信号に応答して前記陰の命令コード・アドレスを増加するインクリメンタと、
（ｉｉｉ）前記トレース・バスから受け取ったトレース・アドレスの複数部分を時分割デマルチプレックスして新しい影の命令コード・アドレスを得て、前記陰のプログラム・カウンタ・レジスタにロードさせる手段と
を備えている装置。
【請求項１７】
前記中央処理装置コアによりアクセスされる最新のデータ・ワードの陰のデータ・アクセス・アドレスを記憶する陰のデータ・アクセス・アドレス・レジスタと、
前記トレース・バスから受け取ったデータ・アクセス・アドレス増加信号に応答して前記影のデータ・アクセス・アドレスを増加させるインクリメンタと、
前記トレース・バスから受け取ったデータ・アドレスの複数部分を時分割デマルチプレックスして新しい影のデータ・アクセス・アドレスを得て、前記陰のデータ・アクセス・アドレス・レジスタにロードさせる手段と
を備えていることを特徴とする請求項１６記載の装置。
【請求項１８】
データを処理する方法において、
（ｉ）メモリから命令パイプラインへ命令コードをフェッチし、次いで前記命令コードを前記命令パイプラインを介して中央処理装置コアへ転送して実行させると共に、各命令コードが前記メモリ内にアドレスを有するステップと、
（ｉｉ）前に実行した命令コードのアドレスに逐次的に連続するアドレスを有した命令コードを実行するときは、トレース・バス上にトレース・アドレス増加信号を発生するステップと、
（ｉｉｉ）前記フェッチしたコード・アドレスが前にフェッチした命令コードのアドレスに逐次的に連続していないときは、前記パイプラインへフェッチした命令コードのフェッチされたコード・アドレスを表示するトレース・アドレスの複数部分をトレース・バス上に時分割多重化し、前記時分割多重化は、前記フェッチされたコード・アドレスを有する前記命令コードが前記命令パイプラインを介して転送され、前記中央処理装置コアに到達して実行される間に行われるステップ、
とを含む方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明はデータ処理の分野におけるデータ処理装置及びデータ処理方法に関する。特に、本発明は、データ処理装置において例えばソフトウェア及びハードウエアの開発のデバッグ中に用いられるトレース・オペレーションを行うデータ処理装置及びデータ処理方法に関する。
【０００２】
【従来の技術】
トレース・オペレーションを行う際に重要な機能は、データ処理システムが現在実行している命令のアドレスを与えるトレース・データを提供することである。このトレース情報をリアル・タイムで供給しようとするときは、このトレース・アドレス情報を外部解析装置に提供するために専用のバスが用いられる。
【０００３】
【発明が解決しようとする課題】
前述の解決法による問題は、データ処理システム内で用いるアドレスのビット長が増大することにより発生する。即ち、３２ビット・アドレスを使用することがますます一般化しており、これがリアル・タイムによりトレース・アドレスを搬送するためには少なくとも３２ビットのトレース・バスを必要とすることになる。このような大きなトレース・バスを設けなければならないということは重大な欠点となることは理解されるであろう。このトレース・バスを実施するために必要とされる集積回路の外部接続ピンの数は、接続ピンの総数に対してかなりの比率のものとなり、集積回路のコストを増加させ、かつ/ 又は他の目的に提供し得る接続ピンを制限する結果となる。
【０００４】
【課題を解決するための手段】
本発明の目的は、不都合に広いトレース・バスを必要とすることなく、リアル・タイムのトレース情報を提供することである。
【０００５】
本発明は、一つの特徴から見ると、データを処理する装置を提供するものであって、前記装置は、
（ｉ）命令コードを実行する中央処理装置コアであって、各命令コードがメモリ内にアドレスを有し、前記データ処理装置コアとメモリとの間にアドレス・バスが伸延している前記中央処理装置コアと、
（ｉｉ）前記中央処理装置コアに命令コードを供給する命令パイプラインであって、前記命令コードが前記メモリから前記命令パイプラインへフェッチされ、次いで前記命令パイプラインを介して前記中央処理装置コアに転送して実行される前記命令パイプラインと、
（ｉｉｉ）トレース・バス上にトレース・データ信号を発生するトレース手段とを備え、
前記トレース手段は、
（ａ）前に実行した命令コードのアドレスに逐次的に連続するアドレスを有した命令コードを実行するときに、前記トレース・バス上にトレース・アドレス増加信号を発生するトレース・アドレス増加信号発生手段と、
（ｂ）前記フェッチされたコード・アドレスが前にフェッチした命令コードのアドレスに逐次的に連続しないときは、前記パイプラインにフェッチされた命令コードのフェッチされたコード・アドレスを表示するトレース・アドレスの複数部分を前記トレース・バス上に時分割多重化するトレース・アドレス発生手段とを備え、前記時分割多重化は、前記フェッチされたコード・アドレスを有する前記命令コードが前記命令パイプラインを介して転送され、前記中央処理装置コアに到達して実行される間に、実行されるものである。
【０００６】
本発明は、命令パイプラインを使ったデータ処理システムにおいて（例えば、分岐（Ｂｒａｎｃｈ）又はジャンプ命令を実行した結果として）逐次的でない命令フェッチが開始されたときに、逐次的でない命令コードが中央処理装置コアにより実行される前に、命令コードがパイプラインを進行する期間が存在する事を認める。この期間はトレース・バスへ逐次的でないアドレスの時分割多重化部分に利用することができる。トレース・バスは１回にアドレスの一部分を搬送するときに必要となるだけなので、そうしないのであれば、これまで可能としていたものより狭くすることができる。
【０００７】
より狭いトレース・バスを使用可能にさせる本発明の装置の他の特徴は、トレース・アドレス増加信号を利用することである。このような信号は単一ビットであってもよく、必要なことは逐次的な命令を実行する大多数の命令サイクルで出力されることだけである。トレース・データを解析している装置は、現在実行しているアドレスのレコードを記憶し、かつトレース・アドレス増加信号に応答してアドレスを単純に増加させて現在実行している命令のリアル・タイム表示を提供する。
【０００８】
逐次的でない命令がまず命令パイプラインにロードされると、逐次的でない命令がパイプラインの終端に到達し、中央処理装置コアにより実行される時までに、外部装置がそのアドレスを受け取っていないことは、理解されるであろう。しかし、実際に実行する際には、時分割多重化を完了させ、逐次的でない命令のフル・アドレスをシステムに利用できるようにさせてトレース・データを解析可能にさせる。
【０００９】
前述のように、パイプラインに対して逐次的でないフェッチに帰結する命令を実行させると、逐次的でないフェッチを発生させた命令に逐次的に続く多数の命令が既にパイプラインにロードされているが、実行はもはや必要ではない。この状況に対処するために、前記パイプラインに対して逐次的でないフェッチが発生したときは、パイプライン・パージ手段が前記パイプラインへ既にフェッチされた保留中の命令コードを実行せずに前記パイプラインから消去する。
【００１０】
システムから出力されるトレース・アドレスは逐次的でない命令のフェッチ・コード・アドレスと同一である必要はないこと、即ちトレース・アドレスは前記フェッチされたコード・アドレスを符号化したものであってもよいことは、理解されるであろう。しかし、好ましい実施例では、前記トレース・アドレスが前記フェッチされたコード・アドレスであれば、簡単となる。
【００１１】
同様にして、トレース・アドレスの種々の部分を多数の方法により取り出すことができる。しかし、本発明を実施するために必要なハードウエアは、前記トレース・アドレスの前記複数部分が前記フェッチされたコード・アドレスの連続的な多数ビットのセグメントであるときは、簡単となる。
【００１２】
前記トレース・アドレス発生手段が前記トレース・アドレスの前記複数部分を前記トレース・バス上で多重レベル・ビットの符号化をするときは、更に、トレース・バスに必要とするビット・ライン数を減少させることが可能である。
【００１３】
前述のシステムは実行すべきアドレス位置記憶命令コードを表わすトレース・アドレスの出力を取り扱う。高度に有用な他のクラスのトレース・データは、解析によりシステムのオペレーション中にアクセスされるアドレス記憶データを知ることである。本発明の好ましい実施例は、トレース・バスの幅を過度に増加させることなく、この要求に対処するために、
（ｉ）前にアクセスしたデータ・ワードに逐次的に続くアドレスを有したデータ・ワードに対してデータ・アクセスが発生するときは、前記トレース・バス上にデータ・アクセス・アドレス増加信号を発生するデータ・アクセス・アドレス増加信号発生手段と、
（ｉｉ）前のデータ・アクセス・オペレーションのアドレスに逐次的に続いていないデータ・アクセス・アドレスに対するデータ・アクセス・オペレーションに応答して、前記トレース・バス上に前記データ・アクセス・アドレスを表わすデータ・アドレスの複数部分を時分割多重化するデータ・アクセス発生手段と
を備える。
【００１４】
データ・アクセス・アドレスをトレースする前述の構成は、データ・アクセスのかなりの部分が逐次的であり、かつデータ・アクセス・アドレス増加信号の使用により単純にトレースすることができることが認識されると共に、残りのデータ・アクセス・アドレスは逐次的ではなく、かつ他の出力手段を必要とする。
【００１５】
フェッチ・コード・アドレス及びトレース・アドレスに関して、データ・アドレスはデータ・アクセス・アドレスと同一であり、データ・アドレス部分はデータ・アクセス・アドレスが連続する多重ビットのセグメントであり、かつデータ・アクセス・アドレスを多レベル・ビットの符号化により、更なるビット幅における減少を達成することができることが好ましい。
【００１６】
データ・アドレスをトレース・バス上へ時分割多重化するためには、１サイクル以上必要なことが理解されるであろう。従って、トレース・バスを残りのデータ処理装置と同一速度で駆動しようとするときは、前記データ・アクセス・アドレス発生手段がデータ・アクセス・オペレーションを含む前記命令コードの実行を越えるオーバーラン期間中に前記データ・アドレスの複数部分を前記トレース・バス上へ時分割多重化することが必要である。
【００１７】
そのデータ・アクセスを発生させた命令の実行が続くデータ・アドレスの出力のオーバーランの観点では、逐次的でないデータ・アクセスに逐次的でない命令コード・フェッチが続く問題が潜在的に存在する。これに対処するために、本発明の好ましい実施例は、前記トレース・アドレス発生手段が、前記オーバーラン期間を開始遅延内に調整できるように、前記フェッチしたコード・アドレスから前記命令コードのフェッチを開始した命令コードの実行を完結させる遅延の後に、前記トレース・バスへ前記トレース・アドレスの複数部分を時分割多重化し始めるというものである。
【００１８】
与えられた時間にトレース・バス上に出力することが可能な異なる複数の型式及び部分に対処するために、本発明の好ましい実施例は、前記トレース・バス上に部分識別信号を発生する手段を備え、前記部分識別信号は、前記トレース・アドレスの複数部分又は前記データ・アドレスの前記複数部分のいずれが前記トレース・バス上に存在するのかを示す。
【００１９】
時分割多重化を可能にする好ましい実施例において、前記トレース・アドレス発生手段は、前記アドレス・バスから前記フェッチされたコード・アドレスを補足し、かつ記憶するフェッチされたコード・アドレス補足手段と、前記トレース・アドレスの前記複数部分として前記フェッチされたコード・アドレス補足手段から前記フェッチされたコード・アドレスの異なる複数部分を連続的に選択するマルチプレクサとを備えるものである。
【００２０】
本発明の好ましい実施例は、メモリに共通のアドレス・バスを用いて命令フェッチ及びデータ・アクセス要求のインターリーブを処理するために、前記中央処理装置コアから複数のステータス・フラグを受け取り、かつ命令コードの逐次的なフェッチが前記アドレス・バスの監視から独立して行われているか否かを推測する推測ロジックを備える。
【００２１】
前記アドレス・バスから独立して動作する前記推測ロジックは、アドレス・バス上に現れる実際のアドレスが逐次的でないように、逐次的な命令フェッチがデータ・アクセスと混合されていても、逐次的な命令フェッチを調べることができる。
【００２２】
本発明の相補的な特徴において、トレース・バスからトレース・データを受け取る装置を提供するものであって、前記装置は、
（ｉ）前記中央処理装置コアにより現在実行されている命令コードの陰の命令コード・アドレスを記憶する陰のプログラム・カウンタ・レジスタと、
（ｉｉ）前記トレース・バスから受け取ったトレース・アドレス増加信号に応答して前記陰の命令コード・アドレスを増加するインクリメンタと、
（ｉｉｉ）前記トレース・バスから受け取ったトレース・アドレスの複数部分を時分割デマルチプレックスして新しい影の命令コード・アドレスを駆動し、前記陰のプログラム・カウンタ・レジスタにロードさせる手段と
を備える。
【００２３】
このトレース・データ・レシーバは、時分割多重化されたトレース・アドレスに応答し、かつこれらアドレスを前記フェッチされたコード・アドレスに再アッセンブリすることができると共に、逐次的な命令コードを実行するときはトレース・アドレス増加信号に応答する。
【００２４】
更にデータ・アクセス・アドレス・トレーシングも処理することができるトレース・データ・レシーバの好ましい実施例は、
最終的なデータ・ワードの陰のデータ・アクセス・アドレスを記憶して前記中央処理装置コアによりアクセスされる陰のデータ・アクセス・アドレス・レジスタと、
前記トレース・バスから受け取ったデータ・アクセス・アドレス増加信号に応答して前記影のデータ・アクセス・アドレスを増加させるインクリメンタと、
前記トレース・バスから受け取ったデータ・アドレスの複数部分を時分割デマルチプレックスして前記陰のデータ・アクセス・アドレス・レジスタにロードされる新しい影のデータ・アクセス・アドレスを得る手段と
を備えている。
【００２５】
他の特徴から見て、本発明は、データを処理する方法であって、前記方法は、（ｉ）メモリから命令パイプラインへ命令コードをフェッチし、次いで前記命令コードを前記命令パイプラインを介して中央処理装置コアへ転送して実行させ、各命令コードが前記メモリ内のアドレスを有するステップと、
（ｉｉ）前に実行した命令コードのアドレスに逐次的に続くアドレスを有した命令コードを実行するときは、トレース・バス上にトレース・アドレス増加信号を発生するステップと、
（ｉｉｉ）前記フェッチしたコード・アドレスが前にフェッチした命令コードのアドレスに逐次的に続いていないときは、前記パイプラインへフェッチした命令コードのフェッチされたコード・アドレスを表わすトレース・アドレスの複数部分をトレース・バス上に時分割多重化するステップと
を備え、前記時分割多重化は、前記フェッチされたコード・アドレスを有する前記命令コードが前記命令パイプラインを介して転送され、前記中央処理装置コアに到達して実行される間に、行われる。
【００２６】
以上、及び本発明の他の目的、特徴及び効果は、添付図面に関連して読むべき実施例の下記詳細な説明から明らかである。
【００２７】
【実施例】
図１はアドレス・バス４と、オン・チップ・メモリ８への命令／データ・バス６とを有する中央処理装置集積回路２を示す。中央処理装置集積回路２はトレース・バス１２を介してトレース・データ・レシーバ１０に接続される。
【００２８】
中央処理装置集積回路２内には、中央処理装置コア１４が存在し、中央処理装置コア１４は命令パイプライン１６を介して供給された命令コードを実行する。命令コードはオン・チップ・メモリ８から命令／データ・バス６を介してフェッチされて、命令パイプライン１６のフェッチ段内に記憶される。このフェッチ段からは命令コードがデコード段へ転送され、次いで中央処理装置コア１４へ転送されて実行される。
【００２９】
更に、中央処理装置コア１４によりオン・チップ・メモリ８から読み出された、又はこれに記憶されたデータ・ワードは、命令／データ・バス６を介して転送され、かつ異なるパスを介して中央処理装置コア１４に入力される。
【００３０】
アドレス・バス４は中央処理装置コア１４とオン・チップ・メモリ８との間に設けられている。中央処理装置コア１４は、アドレス・バス４上にアドレスを主張して、オン・チップ・メモリ８内のどのメモリ位置をアクセスすべきか、及びその値を命令／データ・バス６を介して返送した又は書き込んだことをオン・チップ・メモリ８に対して示す。
【００３１】
更に、中央処理装置集積回路２はトレース・データ発生器１８も備えている。トレース・データ発生器１８はアドレス・バス４から信号を受け取って、信号をトレース・バス１２を介してトレース・データ・レシーバ１０へ出力する。トレース・バス１２は、中央処理装置集積回路２の外部のアイテムと通信をするために、中央処理装置集積回路２のパッケージ上に外部ピンを必要としている。広幅のアドレス及びデータ・バス（例えば、３２ビット・アーキテクチャ及び６４ビット・アーキテクチャ）を使用する傾向により、使用可能な外部ピン数への要求が増大している。従って、全幅のトレース・バスを設けてアドレスを出力させると、かなりのオーバヘッドとなる。
【００３２】
図２はトレース・データ発生器１８を更に詳細に示す。トレース・データ発生器１８は図２の左側で３９入力を受け取っている。トレース・データ発生器１８は図２の右側で２２出力信号を発生している。
【００３３】
低速オフ・チップ・クロック信号ＭＣｌｋは、システムがＮＡＮＤゲ−ト２０に対して待機状態ＮＷａｉｔにあるか否かを示す信号と共に入力されてトレース・クロック信号ＴＡＣｌｋを発生させる。
【００３４】
シーケンス推測ロジック及びステート・マシン・ブロック２２は中央処理装置コア１４から多数のステータス信号を受け取っている。これら信号には、メモリ要求否定信号ＮＭＲｅｑ、シーケンシャル・メモリ・アクセス信号Ｓｅｑ、実行否定信号ＮＥｘｅｃ、読み出し又は書き込み否定信号ＮＲＷ、及びオペレーション・コード否定信号ＮＯｐｃが含まれている。読み出し又は書き込み否定信号ＮＲＷ及びオペレーション・コード否定信号ＮＯｐｃは、第１ラッチ２４によりラッチされる。前述のステータス信号特性の説明は、アドバンスドＲＩＳＣマシンズ（株）（Ａｄｖａｎｃｅｄ  ＲＩＳＣ  Ｍａｃｈｉｎｅｓ  Ｌｉｍｉｔｅｄ）により製造されたＡＲＭ６マイクロプロセッサのデータ・シートに見いだすことができる。
【００３５】
ロジック・ブロック２２はこれらのステータス・フラグを組合わせて複数の出力信号を発生する。トレース・アドレス増加信号ＴＰＣＩｎｃは、命令パイプライン１６を進行させて命令コードを中央処理装置コア１４に転送させ、これを中央処理装置コア１４に供給した前の命令コードに逐次的に続くアドレスとして実行させたか否かを示す。データ・アクセス・アドレス増加信号ＴＤＣＩｎｃは、メモリ８に対する前のデータ・アクセスに逐次的に続くアドレスでメモリ８に対してデータ・アクセス（読み出しか、又は書き込みアクセス）を行っていることを示す。トレース実行信号ＴＡＥｘｅｃは、（例えば、条件実行フラグの結果として）中央処理装置コアに転送されている命令コードが実行されていないかどうかを示す。最後に、トレース・バス多重化信号ＴＡＭｕｘ［１：０］は、これが発生したときに、命令コード又はデータ・アクセス・ワードのアドレスのどの部分がトレース・バス１２上に出力されているのかを示す。
【００３６】
アドレス・バス４は３２ビット・バス搬送３２ビット・アドレスである。これらのアドレスは、トレース・データ発生器１８の制御によりトレース・バス１２上に時分割多重化される１６ビット部分に分割される。３２ビット・アドレスＡ［３１：０］は第２のラッチ２６に入力されてラッチされる。このアドレスがデータ・アクセス・アドレスであれば、その上位部分ＤＡ［３１：１６」を選択してＴＡＭｕｘ［１：０］信号によりスイッチングされているマルチプレクサ２８によってトレース・バス１２に出力される。一方、このようなデータ・アクセス・アドレスの最下位部分は第１レジスタ３０に記憶され、次のサイクルでレジスタ３０からＤＡ［１５：０］としてマルチプレクサ２８を介して出力される。
【００３７】
アドレスＡ［３１：０］が逐次的でないフェッチされた命令の命令コード・アドレスである場合は、そのフル・アドレスが第２レジスタ３２に記憶される。アドレスＰＣ［３１：１６］の最上位部分は後続のサイクルでマルチプレクサ２８を介して出力され、また第３レジスタ３４に記憶されている最下位部分ＰＣ［１５：０］は次のサイクルで出力される。第２レジスタ３２及び第３レジスタ３４の機能は、命令パイプライン１６の複数段の動作を反映するように使用される。即ち、命令コードが命令パイプライン１６内のデコード段にあるとときは、逐次的でなくフェッチされた命令コード・アドレスの最上位部分が出力され、また命令コードが中央処理装置コア１４内で実行されているときは、その最下位部分が出力される。
【００３８】
トレース・データ発生器１８の動作は、逐次的な命令コードのフェッチが実行されたときに、フル命令コード・アドレスを出力することを必要とせずに、トレース・アドレス増加信号を主張するというものである。しかし、逐次的でない命令コード・フェッチを行ったときは、マルチプレクサ２８、第２ラッチ２６、第２レジスタ３２及び第３レジスタ３４を用い、トレース・バス１２を介してトレース・データ発生器１８からフル・アドレスが時分割多重化される。
【００３９】
同様の形式により、逐次的なデータ・アクセスを行うときは、データ・アクセス・アドレス増加信号ＴＤＩｎｃのみを主張する必要がある。逐次的でないデータ・アクセスを行うときは、第２ラッチ２６及び第１レジスタ３０を用い、フル・データ・アクセス・アドレスがマルチプレクサ２８を介して出力される。
【００４０】
図３はトレース・データ・レシーバ１０を更に詳細に示す。トレース・データ・レシーバ１０はトレース・バス１２を入力しており、これに転送されたアドレスをデマルチプレックスして記憶し、かつ必要によりこれらのアドレスを増加させる。トレース・データ・レシーバ１０は、現在実行している命令コードのアドレスの低位部分及び高位部分をそれぞれ記憶する２つのカウンタ３６、３８を含む。更なる２つのカウンタ４０、４２はデータ・アクセスを行った最後のアドレスの低位部分及び高位部分をそれぞれ記憶する。
【００４１】
逐次的な命令コード・フェッチを行うと、これがＴＰＣＩｎｃ信号により示され、ＴＰＣＩｎｃ信号はカウンタ３６、３８に現在記憶している値を４又は他のいくつかの値づつ増加させる。（単一の命令コードはメモリ８内で現在４バイトを占めている）。同様の形式により、逐次的なデータ・アクセスを行うと、カウンタ４０、４２に記憶されているアドレスを４増加させる。
【００４２】
逐次的でない命令コード・フェッチ又はデータ・アクセスが発生する場合に、フル・アドレスはトレース・データ発生器１８からトレース・バス１２上に時分割多重化される。アドレスの１６ビット部分は信号ラインＴＡ［１５：０］上で受信され、各カウンタ３６、３８、４０、４２へ並列に転送される。ロード・コントローラ４４は、ＴＡＭｕｘ［１：０］に応答して、カウンタ３６、３８、４０、４２のうちの適当な一つを現在ＴＡ［１５：０］上に出力しているフル・アドレス部分を記憶する状態にさせる。
【００４３】
フル３２ビット・アドレスＴＰＣ及びＴＤＡは、必要なときはいつでも更なるトレース解析ハードウエアによりそれぞれの対のカウンタ３６、３８、４０、４２から読み出すことができる。
【００４４】
【表１】
0003708176.tif 000002
【００４５】
表１は逐次的でない命令フェッチに帰結するＢｒａｎｃｈ命令を実行するときのトレーシング・システムのオペレーションを示す。プログラム・カウンタ値ＰＣは、命令があるのであれば、現在のサイクルにおいて命令をフェッチしようとするメモリ８内のアドレスを示す。説明の場合では、最初のサイクル中にアドレス＆Ｎ（“＆”は後続の変数がアドレス値であることを表示する。）からＢｒａｎｃｈ命令をフェッチする。この時に、中央処理装置コア１４により現在実行されている命令コードは、アドレスアドレス＆Ｎ−８から逐次的な命令コードＳｅｑ１である。Ｂｒａｎｃｈ命令は、アドレス・バス４上で主張されているアドレス＆Ｎに応答して、命令／データ・バス６を介してメモリからフェッチされる。
【００４６】
このＢｒａｎｃｈ命令は、実行段に到達するまで、命令パイプライン１６に沿って進行すると共に、逐次的なアドレス間の命令パイプライン１６の各進行にはトレース・データ・レシーバ１０内のトレース・アドレスＴＰＣの増加をトリガするＴＰＣＩｎｃの発生が伴っている。トレース・データ・レシーバ１０は中央処理装置コア１４により現在実行されている命令コードのアドレスを保持する。
【００４７】
Ｂｒａｎｃｈ命令を実行すると、フェッチ・アドレス＆Ｘから逐次的でない命令コード・フェッチが行われる。この時に、前のサイクルから逐次的な増加を行ったので、ＴＰＣＩｎｃ信号が依然として主張されるが、しかし逐次的でないジャンプが発生したので、後続のサイクルにおいて主張されることはない。アドレス＆Ｘから逐次的でない命令ＮｏｎＳｅｑは、次のサイクル上のフェッチ段にロードされ、かつ命令パイプライン１６内に保留された命令コードはそれらの条件実行フラグ（“＊”により示されている）を用いて、実行すべきでないとしてマークされる。Ｂｒａｎｃｈ命令そのものの実行中は、Ｂｒａｎｃｈ命令そのものの条件コードはまだ評価されていず、かつＢｒａｎｃｈ命令が実行され得ないので、逐次的な命令フェッチが発生して命令Ｓｅｑ４を命令パイプライン１６に転送させる。
【００４８】
Ｂｒａｎｃｈ命令の実行に続く第２のサイクルでは、逐次的でない命令Ｘ［３１：１６］のアドレスの最上位１６ビットをトレース・バス１２を介して出力し、かつＳｅｑ５の逐次的な命令フェッチを逐次的でない命令ＮｏｎＳｅｑのものに続く位置から行う。次のサイクルでは、最下位１６ビットＸ［１５：０］を出力し、逐次的でない命令ＮｏｎＳｅｑがパイプラインの実行段に到達する。これが発生した時には、この逐次的でない命令ＮｏｎＳｅｑのフル・アドレス＆Ｘは、中央処理装置集積回路２により既に時分割多重化され出力されており、リアル・タイムでトレース用に利用可能である。逐次的な命令Ｓｅｑ５の実行には、トレース・データ・レシーバ１０内のトレース・プログラム・カウンタを増加させるＴＰＣＩｎｃ信号の主張が伴う。
【００４９】
表１に示すオペレーションは、Ｂｒａｎｃｈ命令が命令パイプライン１６を介して伝搬する際に掛かる時間を利用してＢｒａｎｃｈ命令のフル・アドレスをトレース・バス１２上へ時分割多重化させることが示されている。
【００５０】
【表２】
0003708176.tif 000003
【００５１】
表２はレジスタに単一のデータ・ワードを記憶する形式による逐次的でないデータ・アクセスを示す。一連の逐次的な命令Ｓｅｑ１、Ｓｅｑ２は、逐次的でないデータ・アクセス命令ＳＴＲが実行段に到達するまで、中央処理装置コア１４により実行される。データ・アクセス命令ＳＴＲは中央処理装置コア内のレジスタ値をメモリ位置＆Ｚに記憶させる動作をする。データ・アクセス命令ＳＴＲの実行の最初のサイクルでは、逐次的な命令コード・フェッチを実行し、命令Ｓｅｑ４を命令／データ・バス６を介してフェッチ段に持ってくる。次のサイクルでは、（命令により指定された）レジスタの内容を値Ｄａｔａ＆Ｚとして命令／データ・バス６を介してアドレス＆Ｚに記憶するという結果により、アドレス＆Ｚはアドレス・バス４上に主張するべく準備完了状態（ｒｅａｄｙ）となる。このサイクルでは、アドレス＆Ｚの最上位部分が信号Ｚ［３１：１６］としてトレース・バス１２を介して出力される。
【００５２】
次のサイクルでは、逐次的な命令Ｓｅｑ３が実行される。このサイクルでは、アドレス＆Ｚの第２の部分がトレース・バス１２上に信号Ｚ［１５：０］として出力される。従って、トレース・バス１２上の当該データ・アクセス・アドレスの出力は、データ・アドレスをトリガしたものを越えて命令サイクルと重なる。
【００５３】
【表３】
0003708176.tif 000004
【００５４】
表３はメモリ８内の逐次的なアドレスに対して多重データ・アクセスをする結果となる命令ＳＴＭの実行を示す。このオペレーションは、ＳＴＭ命令の第２実行サイクルの終結まで、表２に示すように進行する。この場合に、ＳＴＭ命令は、アドレス＆Ｚから開始してアドレス＆Ｚ＋１２に及ぶメモリ位置に連続する４データ・ワードを記憶させるものである。このデータ・ワードは連続するサイクルにより命令／データ・バス６を介してメモリ８に記憶される。これらのサイクルのうちの始めの２つのサイクルでは、アドレス＆Ｚの上位部分、 次いで下位部分がデータ・アクセス・アドレス増加信号ＴＤＩｎｃと共に、トレース・バス１２により出力される。続く２サイクルでは、データ・アクセス・アドレス増加信号ＴＤＩｎｃが主張されてデータ・アクセス・アドレスを増加すべきこと（アドレスのフル出力は必要ではない。）を表示する。その後の１サイクル遅れのトレース・データのレシーバ遅延内で保持されたアクセス・アドレスの値は、その時に中央処理装置コア１４により実際に有効とされる。更に、トレース・データ・レシーバ１０により保持されたアクセス・アドレスにおける１サイクルの遅れは、単一のアクセスが表２に示した場合と同様に実行されるときも存在する。
【００５５】
【表４】
0003708176.tif 000005
【００５６】
表４は逐次的でない命令コード・フェッチが直ぐ後に続く逐次的でないデータ・アクセスを示す。この場合に、ＳＴＲ命令は表２に示すと同一形式によりパイプラインに沿って進行する。ＳＴＲ命令は、パイプラインに逐次的でないＢｒａｎｃｈ命令が直ぐ後に続く。Ｂｒａｎｃｈ命令が実行段に到達すると、まだデータ・アクセス・アドレスＺ［１５：０］の最下位部分がトレース・バス１２上に出力されている。しかし、（表１に示すように）後のサイクルまで命令コード・フェッチ・アドレスＸ［１３：１６］の最上位部分の出力は開始しないので、この重なりは問題ではない。Ｂｒａｎｃｈ命令の実行の後、逐次的でない命令ＮｏｎＳｅｑがフェッチされ、パイプラインの実行段まで進行すると、実行される。介入している命令は、２つのパイプライン・サイクル後に命令パイプラインからこれらの命令を効果的に消去する形式で、これらの条件フラグを用いて、実行されないようにマークが付けられる。
【００５７】
本発明の実施例をここでは添付図面を参照して詳細に説明したが、本発明はこれら厳密な実施例に限定されないことを理解すべきであり、かつ請求の範囲により定義される本発明の範囲及び精神から逸脱することなく、当該技術分野に習熟する者により、種々の変更及び変形が実施可能であることを理解すべきである。
【図面の簡単な説明】
【図１】トレース機能に関連するデータ処理装置を概要的に示す図。
【図２】トレース・データ発生器を示す図。
【図３】トレース・データ・レシーバを示す図。
【符号の説明】
２  中央処理装置集積回路
４  アドレス・バス
６  命令／データ・バス
８  オン・チップ・メモリ
１０  トレース・データ・レシーバ
１２  トレース・バス
１４  中央処理装置コア
１６  命令パイプライン
１８  トレース・データ発生器
２２  シーケンス推測ロジック及びステート・マシン・ブロック
２８  マルチプレクサ
４４  ロード・コントローラ
【図１】
0003708176.tif 000006
【図２】
0003708176.tif 000007
【図３】
0003708176.tif 000008