(57)【要約】【課題】トレース信号を生成するためのデータ処理装置および方法を提供すること。【解決手段】データ処理装置は、その動作をトレースしようとする構成要素と、動作を示す構成要素からの入力信号を受信し、トレース受信装置への出力として高優先度および低優先度トレース信号を入力信号から生成するトレース生成ユニットとを含んでいる。トレース生成ユニットは、トレース受信装置からの抑制信号の発行に対して、低優先度トレース信号の発生を抑制し、トレース受信装置がオーバフローするのを防ぐ。さらに、複数のトレースモジュールがデータ処理装置内に設けられた場合には、本発明の実施例では、ファンネル論理によって、複数のトレースモジュールによって生成された個々のトレースストリームを集約した最大帯域幅よりも狭い帯域幅をもつ単一のトレースストリームと組み合わせて、複数のトレースモジュールによってトレース信号を生成できるように構成する。【選択図】　　　図２
2004013897.tif 000002
【特許請求の範囲】
【請求項１】
動作が追跡される構成要素と、
動作を示す構成要素から入力信号を受け取り、トレース受信装置に出力するための高優先度および低優先度トレース信号を前記入力信号から生成するトレース生成ユニットと
を含むデータ処理装置であって、
トレース生成ユニットは、トレース受信装置から発行される抑制信号に応答して低優先度トレース信号の生成を抑制することを特徴とするデータ処理装置。
【請求項２】
請求項１記載のデータ処理装置において、トレース受信装置は、データ処理装置の内部に設けられることを特徴とするデータ処理装置。
【請求項３】
請求項１記載のデータ処理装置において、トレース受信装置は、トレース生成ユニットにより出力されたトレース信号を格納するための、あらかじめ定められた大きさのバッファであることを特徴とするデータ処理装置。
【請求項４】
請求項３記載のデータ処理装置において、バッファ内に格納されているトレース信号の量が、あらかじめ定められた抑制レベルに達した時に、抑制信号を発行するようにバッファが構成されていることを特徴とするデータ処理装置。
【請求項５】
請求項３記載のデータ処理装置において、トレース受信装置は、第１の帯域幅を有する第１のバスを介してトレース生成ユニットに接続する入力ポートと、第２の帯域幅を有する第２のバスに接続する出力ポートを有する中間バッファであり、第１の帯域幅が第２の帯域幅よりも広くなっていてトレース信号がトレースバッファに出力されるようにしたことを特徴とするデータ処理装置。
【請求項６】
請求項１記載のデータ処理装置において、ある特定のトレース信号が高優先度トレース信号か低優先度トレース信号かを特定するための分類が、トレース生成ユニットの内部に保持されていることを特徴とするデータ処理装置。
【請求項７】
請求項６記載のデータ処理装置において、分類はプログラム可能であることを特徴とするデータ処理装置。
【請求項８】
請求項６記載のデータ処理装置において、分類はあらかじめ定められたものであることを特徴とするデータ処理装置。
【請求項９】
請求項８記載のデータ処理装置において、分類は、命令トレース信号が高優先度トレース信号であり、データトレース信号が低優先度トレース信号であると定義することを特徴とするデータ処理装置。
【請求項１０】
請求項１記載のデータ処理装置において、抑制信号が発行された際に、抑制された低優先度トレース信号に対して抑制が発生したことを示す位置情報をトレース受信装置に出力するように、トレース生成ユニットが構成されていることを特徴とするデータ処理装置。
【請求項１１】
請求項１０記載のデータ処理装置において、抑制された第１の低優先度トレース信号に関する位置情報のみを出力するように、トレース生成ユニットが構成されていることを特徴とするデータ処理装置。
【請求項１２】
請求項４記載のデータ処理装置において、バッファ内に格納されたトレース信号の量があらかじめ定められた再起動レベルにまで減少した際に、抑制信号の発行を止めるように、バッファが構成されていることを特徴とするデータ処理装置。
【請求項１３】
請求項１２記載のデータ処理装置において、あらかじめ定められた抑制レベルは、あらかじめ定められた再起動レベルよりも高いことを特徴とするデータ処理装置。
【請求項１４】
請求項１２記載のデータ処理装置において、抑制信号の発行の中止につながる第１の低優先度トレース信号に関して、第１の低優先度トレース信号が後で解析できるために必要とされる何らかの必要同期データとともに、第１の低優先度トレース信号を出力するように、トレース生成装置が構成されていることを特徴とするデータ処理装置。
【請求項１５】
請求項１記載のデータ処理装置であって、さらに、その動作をトレースする１つあるいはそれ以上の数の構成要素から入力信号を受信する複数のトレースモジュールを含み、各トレースモジュールは、対応するトレースバスを介して出力するトレース信号をそれぞれの入力信号から生成するように構成されており、前記トレースモジュールの少なくとも１つは、前記トレース生成ユニットとそれに対応したトレース受信装置とを含んでおり、対応するトレースバスはトレース受信装置の出力に接続されていることを特徴とし、
さらに、各トレースバス上に出力されたトレース信号を入力トレース信号として受信するように、トレースモジュールのトレースバスに接続され、入力トレース信号から得られたトレースストリームを出力ポートに生成するように構成されたファンネル論理を含み、出力ポートはファンネル論理に接続されたトレースバスの集約した最大帯域幅より狭い最大帯域幅を有し、
出力ポートの最大帯域幅を超えないように入力トレース信号が出力ポートから出力されることを保証するためにトレースモジュールによるトレース信号の発行を制御するようにファンネル論理が構成されていることを特徴とするデータ処理装置。
【請求項１６】
請求項１５記載のデータ処理装置において、任意の時点で、トレースストリームが任意の時点で１つのトレースモジュールからのトレース信号のみを含むように、どのトレースモジュールがファンネル論理にトレース信号を送るべきかをトレースモジュールに示すようにファンネル論理が構成されていることを特徴とするデータ処理装置。
【請求項１７】
請求項１５記載のデータ処理装置において、ファンネル論理は、それに対応したトレースバス上にトレース信号を出力しようとする各トレースモジュールからリクエスト信号を受信し、受信されたリクエスト信号からどのトレースモジュールがファンネル論理に対してトレース信号を送るべきかを決定するためにあらかじめ定められた基準を適用するためのリクエストハンドラを含むことを特徴とするデータ処理装置。
【請求項１８】
請求項１７記載のデータ処理装置において、あらかじめ定められた基準の適用時に、ファンネル論理にトレース信号を送るであろうトレースモジュールに許可信号を発行するようにリクエストハンドラが構成されていることを特徴とするデータ処理装置。
【請求項１９】
請求項１７記載のデータ処理装置において、あらかじめ定められた基準は、複数のトレースモジュール間の優先度を定義することを特徴とするデータ処理装置。
【請求項２０】
請求項１７記載のデータ処理装置において、あらかじめ定められた基準は、プログラム可能であることを特徴とするデータ処理装置。
【請求項２１】
請求項１７記載のデータ処理装置において、ファンネル論理は、さらに、その入力が前記トレースバスのそれぞれに接続されたマルチプレクサを含み、リクエストハンドラは、あらかじめ定められた基準の適用時に、発行して、ファンネル論理の出力ポートに送出するためのトレースストリームとしてマルチプレクサのどの入力をマルチプレクサから出力すべきかを制御するために、制御信号をマルチプレクサに発行することを特徴とするデータ処理装置。
【請求項２２】
請求項２１記載のデータ処理装置において、ファンネル論理は、さらに、どの構成要素にトレースストリームの特定の部分が対応するかを示す識別子をトレースストリームに導入するためのラッピング論理を含むことを特徴とするデータ処理装置。
【請求項２３】
請求項２２記載のデータ処理装置において、ラッピング論理は、マルチプレクサに対して発行された制御信号を受信するように構成され、識別子は制御信号から得られることを特徴とするデータ処理装置。
【請求項２４】
請求項１５記載のデータ処理装置において、トレースすべき各構成要素について１つのトレースモジュールを設けることを特徴とするデータ処理装置。
【請求項２５】
請求項１５記載のデータ処理装置において、ファンネル論理は、各トレースモジュールによるトレース信号の発行を制御可能であることを特徴とするデータ処理装置。
【請求項２６】
請求項１５記載のデータ処理装置において、トレースモジュールの少なくとも１つによるトレース信号の発行は、ファンネル論理によって制御不可能であり、さらに、トレースモジュールとファンネル論理との間に接続され、該トレースモジュールにより出力されたトレース信号を一時格納するために、このようなトレースモジュールの各々に対するストーリング・バッファを含むことを特徴とするデータ処理装置。
【請求項２７】
請求項１８記載のデータ処理装置において、トレースモジュールの少なくとも１つによるトレース信号の発行は、ファンネル論理によって制御不可能であり、さらに、トレースモジュールとファンネル論理との間に接続され、該トレースモジュールにより出力されたトレース信号を一時格納するために、このようなトレースモジュールの各々に対するストーリング・バッファを含み、ストーリング・バッファは、関連するトレースモジュールのためリクエスト信号を発行し、およびリクエストハンドラによって発行された任意の許可信号に応答して、一時格納されたトレース信号をファンネル論理に出力させるように構成されたことを特徴とするデータ処理装置。
【請求項２８】
請求項２７記載のデータ処理装置において、ストーリング・バッファ内に格納されているトレース信号の量が、あらかじめ定められたレベルに達した時に、リクエスト信号を発行するようにストーリング・バッファが構成されていることを特徴とするデータ処理装置。
【請求項２９】
請求項１５記載のデータ処理装置において、出力ポートはデータ処理装置のトレースバッファに接続されていることを特徴とするデータ処理装置。
【請求項３０】
請求項１５記載のデータ処理装置において、出力ポートは、トレースストリームがデータ処理装置から出力されるための複数のピンを含むことを特徴とするデータ処理装置。
【請求項３１】
その動作をトレースする１つあるいはそれ以上の数の構成要素から入力信号を受信する複数のトレースモジュールであって、各トレースモジュールは、対応するトレースバスを介して出力するトレース信号をそれぞれの入力信号から生成するように構成されていることを特徴とするトレースモジュールと、
さらに、各トレースバス上に出力されたトレース信号を入力トレース信号として受信するように、トレースモジュールのトレースバスに接続され、入力トレース信号から得られたトレースストリームを出力ポートに生成するように構成されたファンネル論理であって、出力ポートはファンネル論理に接続されたトレースバスの集約した最大帯域幅より狭い最大帯域幅を有する、ファンネル論理と
を含むデータ処理装置であって、
トレースモジュールによるトレース信号の発行を制御して、出力ポートの最大帯域幅を超えないように入力トレース信号が出力ポートから出力されることを保証するようにファンネル論理が構成されていることを特徴とするデータ処理装置。
【請求項３２】
請求項３１記載のデータ処理装置において、任意の時点で、どのトレースモジュールがファンネル論理にトレース信号を送るべきかをトレースモジュールに示すようにファンネル論理を構成することにより、トレースストリームが任意の時点で１つのトレースモジュールからのトレース信号のみを含むことを特徴とするデータ処理装置。
【請求項３３】
請求項３１記載のデータ処理装置において、ファンネル論理は、それに対応したトレースバス上にトレース信号を出力しようとする各トレースモジュールからリクエスト信号を受信し、受信されたリクエスト信号からどのトレースモジュールがファンネル論理に対してトレース信号を送るべきかを決定するためにあらかじめ定められた基準を適用するためのリクエストハンドラを含むことを特徴とするデータ処理装置。
【請求項３４】
請求項３３記載のデータ処理装置において、あらかじめ定められた基準の適用時に、ファンネル論理にトレース信号を送るであろうトレースモジュールに許可信号を発行するようにリクエストハンドラが構成されていることを特徴とするデータ処理装置。
【請求項３５】
請求項３３記載のデータ処理装置において、あらかじめ定められた基準は、複数のトレースモジュール間の優先度を定義することを特徴とするデータ処理装置。
【請求項３６】
請求項３３記載のデータ処理装置において、あらかじめ定められた基準は、プログラム可能であることを特徴とするデータ処理装置。
【請求項３７】
請求項３３記載のデータ処理装置において、ファンネル論理は、さらに、その入力が前記トレースバスの各々に接続されたマルチプレクサを含み、リクエストハンドラは、あらかじめ定められた基準の適用時に、ファンネル論理の出力ポートに送出するためのトレースストリームとしてマルチプレクサのどの入力をマルチプレクサから出力すべきかを制御するために制御信号をマルチプレクサに発行することを特徴とするデータ処理装置。
【請求項３８】
請求項３７記載のデータ処理装置において、ファンネル論理は、さらに、どの構成要素にトレースストリームの特定の部分が対応するかを示す識別子をトレースストリームに導入するためのラッピング論理を含むことを特徴とするデータ処理装置。
【請求項３９】
請求項３８記載のデータ処理装置において、ラッピング論理は、マルチプレクサに対して発行された制御信号を受信するように構成され、識別子は制御信号から得られることを特徴とするデータ処理装置。
【請求項４０】
請求項３１記載のデータ処理装置において、トレースすべき各構成要素について１つのトレースモジュールを設けることを特徴とするデータ処理装置。
【請求項４１】
請求項３１記載のデータ処理装置において、ファンネル論理は、各トレースモジュールによるトレース信号の発行を制御可能であることを特徴とするデータ処理装置。
【請求項４２】
請求項３１記載のデータ処理装置において、トレースモジュールの少なくとも１つによるトレース信号の発行は、ファンネル論理によって制御不可能であり、さらに、トレースモジュールとファンネル論理との間に接続され、該トレースモジュールにより出力されたトレース信号を一時格納するために、このようなトレースモジュールの各々に対するストーリング・バッファを含むことを特徴とするデータ処理装置。
【請求項４３】
請求項３４記載のデータ処理装置において、トレースモジュールの少なくとも１つによるトレース信号の発行は、ファンネル論理によって制御不可能であり、さらに、トレースモジュールとファンネル論理との間に接続され、該トレースモジュールにより出力されたトレース信号を一時格納するために、このようなトレースモジュールの各々に対するストーリング・バッファを含み、ストーリング・バッファは、関連するトレースモジュールのためリクエスト信号を発行し、およびリクエストハンドラによって発行された任意の許可信号に応答して、一時格納されたトレース信号をファンネル論理に出力させるように構成されたことを特徴とするデータ処理装置。
【請求項４４】
請求項４３記載のデータ処理装置において、ストーリング・バッファ内に格納されているトレース信号の量が、あらかじめ定められたレベルに達した時に、リクエスト信号を発行するようにストーリング・バッファが構成されていることを特徴とするデータ処理装置。
【請求項４５】
請求項３１記載のデータ処理装置において、出力ポートはデータ処理装置のトレースバッファに接続されていることを特徴とするデータ処理装置。
【請求項４６】
請求項３１記載のデータ処理装置において、出力ポートは、トレースストリームがデータ処理装置から出力されるための複数のピンを含むことを特徴とするデータ処理装置。
【請求項４７】
その動作をトレースする構成要素を有するデータ処理装置の中でトレース信号を発生する方法であって、
（ｉ）動作を示す構成要素からの入力信号を受信するステップと、
（ｉｉ）トレース受信装置に出力するための高優先度および低優先度のトレース信号を前記入力信号から生成するステップと、
（ｉｉｉ）前記ステップ（ｉｉ）の間に、トレース受信装置からの抑制信号の発行に応答して、低優先度のトレース信号を抑制するステップと
を含むステップをトレース生成ユニットを用いて実行することを特徴とする方法。
【請求項４８】
請求項４７記載の方法において、トレース受信装置は、データ処理装置の内部に設けられることを特徴とする方法。
【請求項４９】
請求項４７記載の方法において、トレース受信装置は、前記ステップ（ｉｉ）で生成されたトレース信号を格納するための、あらかじめ定められた大きさのバッファであることを特徴とする方法。
【請求項５０】
請求項４９記載の方法は、さらに、バッファ内に格納されているトレース信号の量が、あらかじめ定められた抑制レベルに達した時に、バッファに対して抑制信号を発行させるステップを含むことを特徴とする方法。
【請求項５１】
請求項４９記載の方法において、トレース受信装置は、第１の帯域幅を有する第１のバスを介してトレース生成ユニットに接続する入力ポートと、第２の帯域幅を有する第２のバスに接続する出力ポートを有する中間バッファであり、第１の帯域幅は第２の帯域幅よりも広くなっていてトレース信号がトレースバッファに出力されるようにしたことを特徴とする方法。
【請求項５２】
請求項４７記載の方法において、さらに、ある特定のトレース信号が高優先度トレース信号か低優先度トレース信号かを特定するための分類を、トレース生成ユニットの内部に保持するステップを含むことを特徴とする方法。
【請求項５３】
請求項５２記載の方法において、分類はプログラム可能であることを特徴とする方法。
【請求項５４】
請求項５２記載の方法において、分類はあらかじめ定められたものであることを特徴とする方法。
【請求項５５】
請求項５４記載の方法において、分類は、命令トレース信号が高優先度トレース信号であり、データトレース信号が低優先度トレース信号であると定義することを特徴とする方法。
【請求項５６】
請求項４７記載の方法において、前記ステップ（ｉｉ）の間は、抑制信号が発行された間は、抑制された低優先度トレース信号に対して抑制が発生したことを示す位置情報をトレース受信装置に出力するように、トレース生成ユニットが構成されていることを特徴とする方法。
【請求項５７】
請求項５６記載の方法において、抑制された第１の低優先度トレース信号に関する位置情報のみを出力するように、トレース生成ユニットが構成されていることを特徴とする方法。
【請求項５８】
請求項５０記載の方法は、さらに、バッファ内に格納されたトレース信号の量があらかじめ定められた再起動レベルにまで減少した際に、バッファに対して抑制信号の発行を止めさせるステップを含むことを特徴とする方法。
【請求項５９】
請求項５８記載の方法において、あらかじめ定められた抑制レベルは、あらかじめ定められた再起動レベルよりも高いことを特徴とする方法。
【請求項６０】
請求項５８記載の方法において、抑制信号の発行の中止につながる第１の低優先度トレース信号に関して、第１の低優先度トレース信号が後で解析できるために必要とされる何らかの必要同期データとともに、第１の低優先度トレース信号を出力するように、トレース生成装置が構成されていることを特徴とする方法。
【請求項６１】
請求項４７記載の方法において、データ処理装置は、その動作をトレースする１つあるいはそれ以上の数の構成要素からの入力信号を受信するための複数のトレースモジュールを含み、各トレースモジュールは、対応するトレースバスを介して出力されるトレース信号をそのトレースモジュールの各入力信号から生成するように構成され、前記トレースモジュールの少なくとも１つは、前記トレース生成ユニットとそれに対応したトレース受信装置とを含んでおり、対応するトレースバスはトレース受信装置の出力に接続されている装置であり、
該方法は、
（ａ）ファンネル論理において、各トレースバスへ出力されるトレース信号を入力トレース信号として受信するステップと、
（ｂ）ファンネル論理の出力ポートに、入力トレース信号から得られたトレースストリームを生成するステップであって、該出力ポートは、ファンネル論理に接続されたトレースバスの集約された最大帯域幅より狭い最大帯域幅を有することを特徴とするステップと、
（ｃ）トレースモジュールからのトレース信号の発行を制御して、出力ポートの最大帯域幅を超えないように、入力トレース信号が出力ポートから出力されることを保証するステップと、
を含むことを特徴とする方法。
【請求項６２】
請求項６１記載の方法において、任意の時点で、どのトレースモジュールがファンネル論理にトレース信号を送るべきかをトレースモジュールに示すことにより、トレースストリームが任意の時点で１つのトレースモジュールからのトレース信号のみを含むようにファンネル論理が構成されていることを特徴とする方法。
【請求項６３】
請求項６１記載の方法において、前記ステップ（ｃ）は、対応したトレースバス上に出力トレース信号を出力しようとする各トレースモジュールから、リクエスト信号を受信するステップと、
受信されたリクエスト信号からどのトレースモジュールがファンネル論理に対してトレース信号を送るべきかを決定するステップと
を含むことを特徴とする方法。
【請求項６４】
請求項６３記載の方法は、さらに、あらかじめ定められた基準の適用時に、ファンネル論理にトレース信号を送るであろうトレースモジュールに許可信号を発行するステップを含むことを特徴とする方法。
【請求項６５】
請求項６３記載の方法において、あらかじめ定められた基準は、複数のトレースモジュール間の優先度を定義することを特徴とする方法。
【請求項６６】
請求項６３記載の方法において、あらかじめ定められた基準は、プログラム可能であることを特徴とする方法。
【請求項６７】
請求項６３記載の方法において、ファンネル論理は、その入力が前記トレースバスの各々に接続されたマルチプレクサを含み、該方法は、さらに、あらかじめ定められた基準の適用時に、ファンネル論理の出力ポートに送出するためのトレースストリームとしてマルチプレクサのどの入力をマルチプレクサから出力すべきかを制御するために制御信号をマルチプレクサに発行するステップを含むことを特徴とする方法。
【請求項６８】
請求項６７記載の方法は、さらに、どの構成要素にトレースストリームの特定の部分が対応するかを示す識別子をトレースストリームに導入するステップを含むことを特徴とする方法。
【請求項６９】
請求項６８記載の方法において、識別子は、マルチプレクサに発行された制御信号から求めることを特徴とする方法。
【請求項７０】
請求項６１記載の方法において、トレースすべき各構成要素について１つのトレースモジュールを設けることを特徴とする方法。
【請求項７１】
請求項６１記載の方法において、ファンネル論理は、各トレースモジュールによるトレース信号の発行を制御可能であることを特徴とする方法。
【請求項７２】
請求項６１記載の方法において、トレースモジュールの少なくとも１つによるトレース信号の発行は、ファンネル論理によって制御不可能であり、さらに、トレースモジュールとファンネル論理との間に接続され、該トレースモジュールにより出力されたトレース信号を一時格納するために、このようなトレースモジュールの各々に対するストーリング・バッファを含むことを特徴とする方法。
【請求項７３】
請求項６４記載の方法において、トレースモジュールの少なくとも１つによるトレース信号の発行は、ファンネル論理によって制御不可能であり、さらに、トレースモジュールとファンネル論理との間に接続され、該トレースモジュールにより出力されたトレース信号を一時格納するために、このようなトレースモジュールの各々に対するストーリング・バッファを含み、ストーリング・バッファは、対応するトレースモジュールのためリクエスト信号を発行し、およびリクエストハンドラによって発行された任意の許可信号に応答して、一時格納されたトレース信号をファンネル論理に出力させるように構成されたことを特徴とする方法。
【請求項７４】
請求項７３記載の方法において、ストーリング・バッファ内に格納されているトレース信号の量が、あらかじめ定められたレベルに達した時に、リクエスト信号を発行するようにストーリング・バッファが構成されていることを特徴とする方法。
【請求項７５】
請求項６１記載の方法において、出力ポートはデータ処理装置のトレースバッファに接続されていることを特徴とする方法。
【請求項７６】
請求項６１記載の方法において、出力ポートは、トレースストリームがデータ処理装置から出力されるための複数のピンを含むことを特徴とする方法。
【請求項７７】
その動作をトレースする１つあるいはそれ以上の数の構成要素からの入力信号を受信するための複数のトレースモジュールを有し、各トレースモジュールは、対応するトレースバスを介して出力されるトレース信号をそのトレースモジュールの各入力信号から生成するように構成されたデータ処理装置の内部でトレース信号を生成する方法であって、
（ａ）ファンネル論理において、各トレースバスへ出力されるトレース信号を入力トレース信号として受信するステップと、
（ｂ）ファンネル論理の出力ポートに、入力トレース信号から得られたトレースストリームを生成するステップであって、該出力ポートは、ファンネル論理に接続されたトレースバスの集約された最大帯域幅より狭い最大帯域幅を有するステップと、
（ｃ）トレースモジュールからのトレース信号の発行を制御して、出力ポートの最大帯域幅を超えないように、入力トレース信号が出力ポートから出力されることを保証するステップと
を含むことを特徴とする方法。
【請求項７８】
請求項７７記載の方法において、任意の時点で、どのトレースモジュールがファンネル論理にトレース信号を送るべきかをトレースモジュールに示すことにより、トレースストリームが任意の時点で１つのトレースモジュールからのトレース信号のみを含むようにしたファンネル論理が構成されていることを特徴とする方法。
【請求項７９】
請求項７７記載の方法において、前記ステップ（ｃ）は、対応したトレースバス上に出力トレース信号を出力しようとする各トレースモジュールから、リクエスト信号を受信するステップと、
受信されたリクエスト信号からどのトレースモジュールがファンネル論理に対してトレース信号を送るべきかを決定するステップと
を含むことを特徴とする方法。
【請求項８０】
請求項７９記載の方法において、さらに、あらかじめ定められた基準の適用時に、ファンネル論理にトレース信号を送るであろうトレースモジュールに許可信号を発行するステップを含むことを特徴とする方法。
【請求項８１】
請求項７９記載の方法において、あらかじめ定められた基準は、複数のトレースモジュール間の優先度を定義することを特徴とする方法。
【請求項８２】
請求項７９記載の方法において、あらかじめ定められた基準は、プログラム可能であることを特徴とする方法。
【請求項８３】
請求項７９記載の方法において、ファンネル論理は、その入力が前記トレースバスの各々に接続されたマルチプレクサを含み、該方法は、さらに、あらかじめ定められた基準の適用時に、ファンネル論理の出力ポートに送出するためのトレースストリームとしてマルチプレクサのどの出力をマルチプレクサから出力すべきかを制御するために制御信号をマルチプレクサに発行するステップを含むことを特徴とする方法。
【請求項８４】
請求項８３記載の方法は、さらに、どの構成要素にトレースストリームの特定の部分が対応するかを示す識別子をトレースストリームに導入するステップを含むことを特徴とする方法。
【請求項８５】
請求項８４記載の方法において、識別子は、マルチプレクサに発行された制御信号から求めることを特徴とする方法。
【請求項８６】
請求項７７記載の方法において、トレースすべき各構成要素について１つのトレースモジュールを設けることを特徴とする方法。
【請求項８７】
請求項７７記載の方法において、ファンネル論理は、各トレースモジュールによるトレース信号の発行を制御可能であることを特徴とする方法。
【請求項８８】
請求項７７記載の方法において、トレースモジュールの少なくとも１つによるトレース信号の発行は、ファンネル論理によって制御不可能であり、さらに、トレースモジュールとファンネル論理との間に接続され、該トレースモジュールにより出力されたトレース信号を一時格納するために、このようなトレースモジュールの各々に対するストーリング・バッファを含むことを特徴とする方法。
【請求項８９】
請求項８０記載の方法において、トレースモジュールの少なくとも１つによるトレース信号の発行は、ファンネル論理によって制御不可能であり、さらに、トレースモジュールとファンネル論理との間に接続され、該トレースモジュールにより出力されたトレース信号を一時格納するために、このようなトレースモジュールの各々に対するストーリング・バッファを含み、ストーリング・バッファは、対応するトレースモジュールのためリクエスト信号を発行し、およびリクエストハンドラによって発行された任意の許可信号に応答して一時格納されたトレース信号をファンネル論理に出力させるように構成されたことを特徴とする方法。
【請求項９０】
請求項８９記載の方法において、ストーリング・バッファ内に格納されているトレース信号の量が、あらかじめ定められたレベルに達した時に、リクエスト信号を発行するようにストーリング・バッファが構成されていることを特徴とする方法。
【請求項９１】
請求項７７記載の方法において、出力ポートはデータ処理装置のトレースバッファに接続されていることを特徴とする方法。
【請求項９２】
請求項７７記載の方法において、出力ポートは、トレースストリームがデータ処理装置から出力されるための複数のピンを含むことを特徴とする方法。
【請求項９３】
請求項４７記載の方法に従って、装置を制御するためのコンピュータプログラムを実行するコンピュータプログラム製品。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
（発明の背景）
本発明は、その挙動を追跡する１つあるいはそれ以上の数の構成要素を有するデータ処理装置内でのトレース信号の生成に関するものである。
【０００２】
【従来の技術】
データ処理システムの動きを追跡し、それにより、システム中で段階ごとに進む動きを表すデータを含むトレースストリームを生成することは、システムを開発する上で、極めて有用なツールとなる。しかし、処理命令は、プロセッサコアに複雑に組み込まれる傾向にあるため、外部からアクセス可能な端子を介して、プロセッサコアの状態を追跡することは極めて困難となっている。従って、トレースデータを収集し解析するためのチップ外のトレース機構だけでなく、より多くのトレース機構がチップ内に設けられるようになっている。このようなチップ内のトレース機構の例としては、英国・ケンブリッジのＡＲＭ社が提供する、様々なＡＲＭプロセッサに対応した、組み込みトレース・マクロセル（ＥＴＭ）がある。
【０００３】
このようなトレース機構は、データ処理装置でその動きをトレースしようとするものを表すデータのトレースストリームをリアルタイムで生成する。その後、このトレースストリームは、データ処理装置によって実行される処理命令の列のデバッグを可能にするために用いられる。
【０００４】
特定のレジスタ、アドレスあるいはデータ値に対してアクセスがなされたことに起因してトレースを開始したり停止したりする、トレース操作の制御に供されるトリガポイントを組み込んだトレース機構が提供されていることは、よく知られるところである。このような機構は、システムの特定の部分や、ある種類の動きを診断する際に、非常に役立つものとなる。
【０００５】
【発明が解決しようとする課題】
しかし、データ処理システムは、その複雑度を増す一方であるため、トレースされるべき極めて大量な情報が潜在的に存在することは明白である。ＥＴＭによって生成されるトレースデータのストリームは、通常、後の処理のための出力に先立って一時的に格納されるが、そのため、トレースデータによってそのバッファにオーバフローを引き起こす可能性があり、結果的にトレースデータが欠損する恐れがある。例えば、典型的な実装例では、ＥＴＭで生成された全てのトレースデータは、内部の先入れ先出し（ＦＩＦＯ）バッファに直ちに書き込まれ、その後、比較的狭い帯域幅のトレースポートを介してトレースバッファに転送される。データ処理装置の広範囲にわたる動きをトレースしている際には、トレースデータが爆発的に発生することによってＦＩＦＯがオーバフローし、トレースデータの欠損につながる可能性がある。
【０００６】
この問題を解決しようとする既知の方法の１つとして、ＦＩＦＯの占有状態が所定のレベルに達した時に、動作が追跡される構成要素への信号を出力するよう、ＥＴＭを構成するというものがあり、オーバフローが起きる前に、ＦＩＦＯの内容を排除できるようにするために、この信号によって当該構成要素を停止させる。しかし、ＦＩＦＯのオーバフローを回避するためには、外部から（すなわち、追跡しようとする構成要素によって）ＥＴＭに対して探索動作を起こす必要があるため、実際にこの信号を用いることを実装することは困難であることが分かる。このような信号を生成するＥＴＭと、例えばプロセッサコアのようなトレースする対象となる構成要素によって生成される当該信号との間には、固有な遅れ時間があるため、この遅れ時間の間に、当該構成要素の他の動作を継続して追跡しようとすれば、いずれにせよＦＩＦＯにオーバフローを引き起こしてしまうということが分かる。
【０００７】
以上より、トレースデータの損失の可能性を減らすため、より改良された方法を提供することが望まれている。
【０００８】
【発明を解決するための手段】
（発明の概要）
第１の観点から言えば、本発明は、動作が追跡される構成要素と、その動作を示す要素からの入力信号を受け取り、前記入力信号から高優先度および低優先度トレース信号を生成しトレース受信装置に出力するためのトレース生成ユニットと、トレース受信装置からの抑制信号の発行に応じて動作し、低優先度トレース信号の生成を抑制するトレース生成ユニットとを含むデータ処理装置を提供するものである。
【０００９】
本発明によれば、トレース生成ユニットにより発生するトレース信号は、高優先度トレース信号あるいは低優先度トレース信号のいずれかになるものとして分類される。トレース生成ユニットにより発生するトレース信号は、トレース受信装置への出力となり、トレース生成ユニットは、トレース受信装置からの抑制信号を受けて、低優先度トレース信号の発生を抑制する。本発明は、他の信号よりも重要となるある種のトレース信号が通常存在するという認識に基づいてなされたものである。例えば、命令トレースを維持するために出力する必要のある、例えば、分岐アドレスに関するトレース信号のようなある種のトレース信号が存在するが、その一方で、データトレース信号のように、同期を失って損失してもよいような他のトレース信号も存在する。また、本発明の発明者たちは、多くの場合、後者の種類のトレース信号に比べて、前者の種類のトレース信号は、より狭い帯域幅を持っていることに着目した。
【００１０】
以上のことを念頭におき、本発明のデータ処理装置は、トレース受信装置が必要と判断した場合に、低優先度トレース信号の抑制を起こすように構成されており、これによって、トレース受信装置がオーバフローして、トレースデータの任意の量が損失するといった従来技術の上記問題を解決するものとなる。これに対し、本発明によれば、トレース受信装置が適切と判断した場合には、トレース生成ユニットに対して抑制信号を送り、高優先度トレース信号のみが出力されることを保証し、以って、トレース受信装置がオーバフローを起こす可能性を極力抑えるものとなる。
【００１１】
この抑制は、トレース生成ユニットとトレース受信装置との間で直接起きるため、動作が追跡される構成要素に信号を返送する際の待ち時間から生じる従来技術での上記問題が良好に解決され、これにより、本発明は、トレース受信装置のオーバフローを防ぐためのより信頼性の高い方法を提供するものとなり、同時に、トレース信号が損失するのは、低優先度トレース信号に対してのみであると考慮すればよいことになる。
【００１２】
トレース受信装置は、トレース生成ユニットの場所あるいは、トレース生成ユニットから離して設置することができる。一実施例では、データ処理創意の内部にトレース受信装置を設け、好ましくは、トレース生成ユニットと同一チップ上に実装することにより、トレース受信装置からトレース生成ユニットへの抑制信号の伝播を高速化するものとなり、以って、低優先度トレース信号を抑制する必要が生じた場合には、トレース生成ユニットが高速で応答できるようになっている。このため、抑制信号の発行によって、トレース受信装置のオーバフローを防ぐために、低優先度トレース信号を即座に抑制することができ、信頼性をさらに向上するものとなる。
【００１３】
トレース受信装置は、様々な形態をとることができる。しかし、本実施例では、トレース受信装置は、あらかじめ定められた容量のバッファ（例えば、ＦＩＦＯバッファ）である。
【００１４】
好適な実施例では、バッファに格納されたトレース信号の量が、あらかじめ定められた抑制レベルに達した時に、抑制信号を発行するように、バッファが構成されている。従って、これらの実施例では、バッファの所定の割合にまでトレース信号が達した場合に、抑制信号が発行されるものとなる。
【００１５】
データ処理装置により生成されるトレース信号を読み出し解析する装置は、トレース受信装置に直接接続されるものであってよい。しかし、実施例では、トレース受信装置は、第１の帯域幅を有する第１のバスを介してトレース生成ユニットに接続された入力ポートと、トレース信号がトレースバッファに出力されるようにした第２の帯域幅を有する第２のバスに接続された出力ポートとをもつ中間バッファであり、第１の帯域幅は、第２の帯域幅よりも広いものとなっている。これらの実施例では、データ処理装置により生成されるトレース信号を読み出し解析する装置は、通常、トレースバッファからトレース信号を読み出すように構成されている。
【００１６】
これらの実施例から分かるように、中間バッファの出力帯域幅はその入力帯域幅よりも狭いため、中間バッファが溢れてしまう恐れがある。しかし、本発明の抑制信号を用いることにより、低優先度トレース信号が余計に生成されないようにトレース生成ユニットが抑制信号に対して俊敏に応答できるため、このような事態が発生する可能性を抑えることができる。
【００１７】
上述したように、本発明では、トレース信号を高優先度トレース信号あるいは低優先度トレース信号のいずれかに分類することが必要となる。好適な実施例では、この分類は、トレース信号が高優先度トレース信号あるいは低優先度トレース信号のいずれであるかを特定するトレース生成ユニットの内部で保持されるものである。例えば、命令トレースに関するトレース信号は高優先度であり、一方、データトレースに関するトレース信号は低優先度であることを示すように、この分類はあらかじめ定義しておけるものであることは、当該技術分野に精通した者にとって認識されうるものである。さらに、この分類はプログラム可能である。
【００１８】
好適な実施例では、抑制信号が発行されている際には、抑制が行われていることを示すために、抑制された低優先度トレース信号の位置情報をトレース受信装置に出力するように、トレース生成ユニットは構成されている。これにより、後で用いられるツールによって、トレースデータを解析可能とし、低優先度トレース信号の抑制がいつ行われているかを決定することができる。
【００１９】
これらの位置情報は、トレースデータの各アイテムが抑制されるごとに発行されるが、好適な実施例では、最初に抑制された低優先度トレース信号に対する位置情報のみを出力するように、トレース生成ユニットが構成されている。従って、この位置情報は、抑制が最初に発生したことを示すものとなり、トレース解析ツールがデータの抑制が起きたことを決定するには十分なものであり、位置情報の発行自身がトレース受信装置のオーバフローを引き起こすという可能性は回避される。
【００２０】
好適な実施例では、トレース受信装置は、バッファ内に貯えられたトレース信号の量が、あらかじめ定められた再起動レベルまで下がったときに、抑制信号の発行を解除するように構成されている。あらかじめ定められた再起動レベルは、あらかじめ定められた抑制レベルと同じになるように決定してもよいが、このようにあらかじめ定められた再起動レベルを決定すると、ある状況では、抑制された状態と抑制されない状態との間である量の振動を引き起こす傾向がある。従って、好適な実施例では、あらかじめ定められた抑制レベルは、あらかじめ定められた再起動レベルよりも高く設定し、全トレースを再起動した際に、抑制信号を再発行する必要がないようにトレース受信装置の中に貯えられたトレース信号の量を増やせる容量を確保できるようにしている。
【００２１】
好適な実施例では、抑制信号の発行解除につながる最初の低優先度トレース信号については、その最初の低優先度トレース信号を後で解析できるように、任意の必要な同期データとともにその最初の低優先度トレース信号を出力するように、トレース生成ユニットが構成されている。これにより、抑制しようとするトレースストリームのある部分に対応して欠落する任意の同期情報をトレース信号のストリームの中に取り込むことになる。
【００２２】
データ処理システムは、例えば、組み込み型システムでの集積レベルが上がるなどの理由により、複雑さを増しているため、より多くの機能性が各々のデータ処理装置（例えば、チップ）に含まれるようになり、したがって、より多くのトレースブロックやモジュールをデータ処理装置の中に設ける必要が生じている。このような将来のシステムでは、その動作を追跡すべき複数の構成要素が含まれるため、このような単一のトレース生成ユニットを含む単一のトレースモジュールでは、もはや充分ではない状況にある。例えば、データ処理装置が複数のプロセッサコアを含んでいて、各々をトレースする必要があり、さらに、データ処理装置の中の様々なバスについてもトレースする必要が生じる。しかし、各トレースモジュールに対して、外部ピンやトレースバッファを設けるためのコストは極めて高くつくものとなることがわかる。しかし、データ処理装置の異なる部分の間で信号や情報の交換があり、これらをデバッグするためには、これらの部分の関係についても同時にトレースする必要があるため、複数のトレースモジュールの間で、ピンやトレースバッファを単純に共有するだけでは適切とは言えない。従って、解決すべき他の問題としては、データ処理装置の複数のトレースモジュールからの信号を効果的にトレースできるようにすることが課題となる。
【００２３】
従って、本発明の実施例では、データ処理装置は、さらに、トレースすべき１つあるいはそれ以上の数の構成要素から入力信号を受け取るための複数のトレースモジュールを含み、ここで、各トレースモジュールは、その入力信号からトレース信号を生成して対応するトレースバス上に出力し、少なくとも１つの前記トレースモジュールは、前記トレース生成ユニットとそれに対応したトレース受信装置を含み、対応するトレースバスは、トレース受信装置の出力に接続されていることを特徴とし、該データ処理装置は、さらにトレースモジュールのトレースバスに接続され、各トレースバスに出力されたトレース信号を入力トレース信号として受信し、入力トレース信号から得られたトレースストリームを出力ポートに生成するように構成されたファンネル論理を含み、ここで、出力ポートは、ファンネル論理に接続されたトレースバスの集約最大帯域幅より狭い最大の帯域幅を有し、ファンネル論理は、出力ポートの最大帯域幅を超えないように入力トレース信号が出力ポートから出力されることを保証するように、トレースモジュールによるトレース信号の発行を制御するように構成されていることを特徴としている。
【００２４】
従って、これらの実施例では、様々なトレースモジュールのトレースバスに接続され、様々な入力トレース信号から得られたトレースストリームを出力ポートに生成するように構成されたファンネル論理が設けられており、このトレースストリームは、例えば、信号をチップに送ることができるピンに送られたり、トレースバッファに送られるようになっている。また、ファンネル論理は、出力ポートの最大帯域幅を超えないように入力トレース信号が出力ポートから出力されることを保証するように、様々なトレースモジュールによるトレース信号の発行を制御するように構成されている。従って、これらの実施例のファンネル論理は、効果的に、複数のトレース源を入力として、単一のトレースストリームを出力として生成することができ、ここでは、出力ストリームは、想定される入力ストリームの総数を越えないようになっている。
【００２５】
本発明の第１の特徴によれば、このファンネル論理は、任意のトレースモジュールが低優先度トレース信号の生成を抑えることができるかどうかによらず、データ処理装置の内部に設けられている。したがって、本発明の第２の特徴によれば、本発明は、トレースすべき１つあるいはそれ以上の数の構成要素から入力信号を受け取るための複数のトレースモジュールを含み、ここで、各トレースモジュールは、その入力信号からトレース信号を生成して対応するトレースバス上に出力することを特徴とし、また、各トレースバスに出力されたトレース信号を入力トレース信号として受信するようにトレースモジュールのトレースバスに接続され、入力トレース信号から得られたトレースストリームを出力ポートに生成するように構成されたファンネル論理を含み、ここで、出力ポートは、ファンネル論理に接続されたトレースバスの集約最大帯域幅より狭い最大の帯域幅を有し、ファンネル論理は、出力ポートの最大帯域幅を超えないように入力トレース信号が出力ポートから出力されることを保証するように、トレースモジュールによるトレース信号の発行を制御するように構成されていることを特徴とした、データ処理装置を提供するものである。
【００２６】
好適な実施例では、どの時点でも、どのトレースモジュールがトレース信号をファンネル論理に送るべきかをトレースモジュールに示すように構成され、どの時点においても、１つのトレースモジュールからのトレース信号のみをトレースストリームが含むようになっている。
【００２７】
どの時点においても、どのトレースモジュールがファンネル論理にトレース信号を送るべきかを決定する動作は、様々な方法で実装することができる。しかし、好適な実施例では、ファンネル論理は、対応するトレースバス上にトレース信号を出力しようとしている各トレースモジュールからリクエスト信号を受信し、あらかじめ定められた基準を適用して受信されたリクエスト信号にもとづきどのトレースモジュールがトレース信号をファンネル論理に出力すべきかを決定するためのリクエストハンドラを含んでいる。従って、これらの実施例では、各トレースモジュールは、トレースモジュールがいつトレース信号を対応するトレースバスに出力しようとしているのかをファンネル論理に示すように構成されており、これによりファンネル論理は、受信された様々なリクエストの間を仲介することになる。
【００２８】
ここで、リクエストハンドラは、あらかじめ定められた基準の適用時に、トレース信号をファンネル論理に送ることになるトレースモジュールに対して、許可信号を送るように構成されることが好ましい。従って、これらの実施例では、トレースモジュールは、そのトレース信号をファンネル論理に送ることができることを示す許可信号を受信するまで、そのリクエスト信号を発行し続けるものとなる。
【００２９】
どのトレースモジュールが任意の時点でトレース信号をファンネル論理に発行するかを決定するために、ファンネル論理のリクエストハンドラによって適用されるあらかじめ定められた基準は、様々な形態をとることが可能である。しかし、好適な実施例では、あらかじめ定められた基準は、様々なトレースモジュールの優先順序を定義するものとする。
【００３０】
あらかじめ定められた基準は、あらかじめ定められたもの、あるいはプログラム可能なもののいずれかとすることができる。例えば、あらかじめ定められた基準は、例えば、その動作をトレースするようにそれに含まれるモジュールが構成された構成要素によって、様々なトレースモジュールに割り当てられた相対的な優先度を特定するために、特定の実装に対してプログラム可能なものとしてもよい。例えば、出力すべき最も重要なトレース信号が、メモリバスの動作に関するものであると判定された場合には、最高の優先度がこのメモリバスの動作を追跡するように構成されたトレースモジュールに割り当てられる。
【００３１】
好適な実施例では、ファンネル論理は、さらに、その出力が前記トレースバスの各々に接続されたマルチプレクサを含み、リクエストハンドラは、あらかじめ定められた基準の適用時に、制御信号をマルチプレクサに発行し、トレースストリームをファンネル論理の出力ポートに転送するためのマルチプレクサから出力するトレースストリームとして、マルチプレクサのどの入力を出力するべきかを制御するように構成されている。
【００３２】
ファンネル論理から出力されるトレースストリームを効果的に解析するためには、トレースストリームの特定の部分が、どの構成要素に対応しているのかを知るために、ツールを用いて解析することが必要となる。好適な実施例では、ファンネル論理は、このような識別子がトレースストリームに付加されることができるために必要となる論理を含んでいる。特に、好適な実施例では、ファンネル論理は、さらに、トレースストリームの特定の部分がどの構成要素に対応しているかを示す識別子をトレースストリームに導入するためのラッピング論理を含んでいる。この識別子は、様々な方法で実装することができる。しかし、ある実施例としては、マルチプレクサに発行される制御信号を受け取るようにラッピング論理を構成するものがあり、この識別子は、制御信号から得るものとしている。他の実施例としては、ラッピング論理に識別子を発行するように、各トレースモジュールを構成するものがある。
【００３３】
構成要素を対応するトレースモジュールに割り当てる方法には、様々なものがあることが分かる。例えば、ある実装形態では、１つ以上の構成要素をトレースするように、単一のトレースモジュールを実際に構成することが可能である。しかし、好適な実施例では、トレースすべき各構成要素に対して、１つのトレースモジュールを設けることがある。
【００３４】
ある実施例では、リクエスト信号をファンネル論理に発行するように各トレースモジュールを構成し、これにより、各々の状況において、ファンネル論理は、各トレースモジュールによるトレース信号の発行を制御できるようになる。
【００３５】
しかし、他の実施例では、例えば、トレースモジュールが過去のトレースモジュールの設計に依るものであり、そのトレースモジュールが適切と判定した時にそのトレースストリームを単に出力するように構成されている場合もあるため、このようなリクエスト信号を発行させたり、許可信号に応答するようには、１つあるいはそれ以上の数のトレースモジュールを構成しないというものもある。このような状況では、トレースモジュールの中の少なくとも１つによってトレース信号が発行されることは、ファンネル論理によって制御することができず、データ処理装置は、さらに、そのようなトレースモジュールとファンネル論理との間に接続され、そのトレースモジュールから出力されるトレース信号を一時的に格納するための、トレースモジュールの各々に対するストーリング・バッファを含むものとなる。
【００３６】
このような実施例では、ストーリング・バッファは、対応するトレースモジュールのためにリクエスト信号を発行し、リクエストハンドラにより発行される任意の許可信号に対して応答するように構成して、一時的に格納されたトレース信号がファンネル論理に出力されるようにすることが好ましい。従って、実際には、ストーリング・バッファは、このような過去の設計による各モジュールに対する“フロントエンド”となり、ファンネル論理と適切な方法でトレースモジュールを接続することができる。
【００３７】
好適な実施例では、ストーリング・バッファに格納されたトレース信号の量が、あらかじめ定められたレベルに到達した時に、リクエスト信号を発行するように、ストーリング・バッファが構成されている。ファンネル論理によって適用されるあらかじめ定められた基準を適切に選択することにより、特定の時点で、どのトレースモジュールがトレース信号をファンネル論理に提供するかを決定し、ファンネル論理と接続する構成要素の数と帯域幅を制限することにより、対応するトレースモジュールから出力されたトレースデータによってストーリング・バッファがオーバフローする前に、ストーリング・バッファが許可信号を受け取ることを保証することができる。
【００３８】
上述したように、ファンネル論理の出力ポートは、データ処理装置のトレースバッファに接続したものであってよい。それに代わり、出力ポートは、トレースストリームが、データ処理装置から外部に出力されるようにした複数のピンを含むものであってもよい。
【００３９】
本発明の第３の観点から言えば、本発明は、その動作をトレースする構成要素を有するデータ処理装置の中でトレース信号を発生する方法を提供するものであり、該方法は、（ｉ）動作を示す構成要素からの入力信号を受信するステップと、（ｉｉ）トレース受信装置に出力するための高優先度および低優先度のトレース信号を前記入力信号から生成するステップと、（ｉｉｉ）前記ステップ（ｉｉ）の間に、低優先度のトレース信号を抑制するために、トレース受信装置からの抑制信号の発行に応答するステップとを含むステップをトレース生成ユニットを用いて実行することを特徴としている。
【００４０】
本発明の第４の観点から言えば、本発明は、その動作をトレースする１つあるいはそれ以上の数の構成要素からの入力信号を受信するための複数のトレースモジュールを有するデータ処理装置の中でトレース信号を発生する方法を提供するものであり、各トレースモジュールは、対応するトレースバスを介して出力されるトレース信号をそのトレースモジュールの各入力信号から生成するように構成され、該方法は、（ａ）ファンネル論理において、各トレースバスへ出力されるトレース信号を入力トレース信号として受信するステップと、（ｂ）ファンネル論理の出力ポートに、入力トレース信号から得られたトレースストリームを生成するステップであって、該出力ポートは、ファンネル論理に接続されたトレースバスの集約された最大帯域幅より狭い最大帯域幅を有することを特徴とするステップと、（ｃ）出力ポートの最大帯域幅を超えないように、入力トレース信号が出力ポートから出力されることを保証するために、トレースモジュールからのトレース信号の発行を制御するステップとを含むことを特徴としている。
【００４１】
本発明の第５の観点から言えば、本発明は、本発明の第３あるいは第４の観点の方法にもとづき装置を制御するためのコンピュータプログラムを実行するコンピュータプログラムプロダクトを提供するものである。
【００４２】
【発明の実施の形態】
（好適な実施例の詳細な説明）
添付の図面に示されたような好適な実施例を参照しながら単なる例として、本発明を説明する。
【００４３】
図１は、オンチップのトレース機構を提供するデータ処理システム２の概略を示す図である。集積回路４は、マイクロプロセッサコア６、キャッシュメモリ８、オンチップトレースモジュール１０およびオンチップトレースバッファ１２を含んでいる。集積回路４は、キャッシュメモリ８でキャッシュミスが発生した時にアクセスされる外部メモリ１４に接続されている。汎用コンピュータ１６は、オンチップトレースモジュール１０とオンチップトレースバッファ１２に接続され、汎用コンピュータ１６で実行されるソフトを用いて、これらの構成要素からのトレースデータのストリームを取り出して解析する。
【００４４】
動作中は、プロセッサコア６は、外部メモリ１４のための実際のメモリ空間よりも多いデータ処理命令とデータにアクセスする必要がある場合が多い。例えば、外部メモリ１４は、１ＭＢの容量であるのに対し、プロセッサコア１６は、通常、３２ビットアドレスを指定することが可能となっており、これにより、４ＧＢの命令とデータを指定することができる。従って、プロセッサコア６によって要求される全ての命令とデータは、例えば、ハードディスクなどの外部記憶装置１８に格納され、プロセッサコア６が、特定の動作状態で動こうとする場合には、この動作の状態に対して適切な命令とデータが外部メモリ１４にロードされる。
【００４５】
図２は、図１のオンチップトレースモジュールの内部に設けられた構成要素をより詳細に示すブロック図である。オンチップトレースモジュール１０は、プロセッサコア６で実行される処理を表すデータを、経路１０５で受信するように構成されている。図１によれば、このデータ（例えば、コア６に与えられた命令および、あるいはデータ、およびコアによって生成されたデータ）は、バス２０を介してコア６から直接受信されるほかの制御型データ（例えば、インデックス化された命令アドレスを示すデータ、なんらかの理由である命令がその条件コードを実行失敗したことを示すデータなど）とともに、キャッシュ８およびオンチップトレースモジュール１０に接続したバス２０から受信する。ある実施例では、両方の種類のデータが、（２つのバス２０および２２を用いるのではなく）トレースモジュール１０とコア６間の単一のバスを介して、トレードモジュール１０に送られることは、当該技術分野に精通した者にとって認識されうるものである。
【００４６】
同期論理１００は、入力信号を、オンチップトレースモジュール内で用いるためにより適した、信号の内部モードに変換するように構成されている。これらの内部モードは、トリガ１１０とトレース生成ブロック１２０に送られるが、トリガ１１０とトレース生成ブロック１２０は、必ずしも同一の信号を受信するために必要となるものではないことが分かる。基本的には、トリガ１１０は、例えば、アドレス、データ値、レジスタアクセスなどのトリガ可能なイベントに関連したデータを受信するために必要なものである。トリガ生成ブロック１２０は、トリガ１１０によって発行されたイネーブル信号に応じてトレースされる必要のある任意のデータを受信するために必要なものである。オンチップトレースモジュール１０には、さらに、汎用コンピュータ１６から経路１２５を介して構成情報を受信するように構成されたレジスタバンク１８０が組み込まれており、その構成情報の内容は、必要に応じて、オンチップトレースモジュール１０の構成要素によって読み取られるようになっている。
【００４７】
トリガ１１０が、トレースストリームの生成を引き起こすイベントを検出する時はいつも、トリガは、経路１３５を介して、イネーブル信号をトレース生成論理１２０に送り、トレースをオン、オフする。これにより、トレース生成論理は、経路１４５および１５５を介して必要なトレースデータをＦＩＦＯ１３０に出力することにより応答する。様々なイネーブル信号が経路１３５を介して送られ、例えば、命令だけのトレース、命令とデータのトレースなど、トレースすべき信号の種類を特定する。
【００４８】
本発明の好適実施例によれば、トレース生成ユニットにより生成されるトレース信号は、高優先度トレース信号あるいは低優先度トレース信号のいずれかであるとして分類される。この分類は、トレース生成ブロック１２０の中に保持されることが好ましく、あらかじめ定義されたものであるか、ユーザによってプログラム可能となるものであってよい。図２に示した実施例では、高優先度トレース信号は、例えば、分岐アドレスに関するトレース信号などの命令トレースに関する信号を示すものであり、一方、低優先度トレース信号は、データトレースに関する信号を示すものであり、この低優先度トレース信号は、同期を失うことなく損失されうるものである。トレース生成論理１２０によってＦＩＦＯ１３０から受信される任意の信号がない場合には、経路１３５を介してトリガ１１０から受信したイネーブル信号に応じてＦＩＦＯ１３０に適切なトレースデータを出力するように、トレース生成論理が構成されている。この構成により、例えば、経路１４５を介して発行される命令トレース信号と、経路１５５を介して発行されるデータトレース信号の両方が発行されることになる。図２には２つの独立した経路が示されているが、命令トレース信号とデータトレース信号の両者は、通常、トレース生成論理１２０とＦＩＦＯ１３０の間の接続を共有するものであることは、当該技術分野に精通した者にとって認識されうるものである。
【００４９】
命令をトレースすることに加え、データをトレースする際には、経路１５５を介したデータトレース信号は、トレース生成信号１２０からＦＩＦＯ１３０へのトレースポートの帯域幅のほとんどを占有することが分かる。さらに、トレース信号は、狭帯域の出力トレースポートを介して、ＦＩＦＯ１３０からトレースバッファ１２へ経路１５０を通して排出される。通常、経路１５０を介してトレースバッファに発行される任意のトレース信号は、経路１４０上で出力トレースが有効であるか否かを示すトレース有効信号を伴うものである。トレース有効信号は、通常、対応するトレースモジュールがそのクロックサイクルの間に発行すべきトレースデータを持たない場合に無効と設定されるものである。
【００５０】
ＦＩＦＯ１３０からの出力帯域幅は、通常、その入力帯域幅よりも狭いため、例えば、トレース生成ブロック１２０によってトレースデータが突発的に発行されることが持続すると、ＦＩＦＯ１３０はオーバフローする可能性がある。例えば、入力トレースポートは、トレースバッファへの出力トレースポートよりも４倍から５倍の帯域幅となっている。
【００５１】
本発明に先立ち、この問題を解決する方法としては、ＦＩＦＯが満杯になったことを示す信号をオンチップトレースモジュール１０からコア６に送り、コア６を一時的に停止させ、ＦＩＦＯ内のデータの量を削減できるようにするものがあった。しかし、固有の遅れ時間や他の問題のために、ＦＩＦＯが満杯になったことを示す信号の発生時刻とプロセッサコアの停止時刻の間に、コア６が停止する前にそれが動作中であることを示すトレース信号が発行されてしまい、いずれにせよＦＩＦＯ１３０がオーバフローを引き起こしやすくなるため、この方法は信頼性に欠けるものであることが判明している。
【００５２】
本発明の一実施例によれば、ＦＩＦＯ１３０により発行され経路１６０を介して直接トレース生成ブロック１２０に送られる抑制信号（以下、ＤＳｕｐ信号と称す）を設けることにより、この問題が解決できる。本実施例では、ＦＩＦＯの内容が、あらかじめ定められた抑制レベルに達すると、ＦＩＦＯ１３０からトレース生成ブロック１２０に向けてＤＳｕｐ信号を発行するように、ＦＩＦＯ１３０が構成されており、これにより、トレース生成ブロックは、ＤＳｕｐ信号が発行されている間は、経路１５５を介した任意のデータトレース信号の発行は停止されることになる。これは、データトレース信号が失われることを意味しているが、これらの信号は低優先度トレース信号であると考えられ、同期情報を失うことなく損失してもよいものである。さらに、データトレースは、通常、高優先度の命令トレースに比べより広い帯域幅を用いるものであるため、データトレースを抑制することは、ＦＩＦＯ１３０が満杯にあることを防ぐ上で十分であることが分かっている。
【００５３】
ＦＩＦＯ１３０内のデータトレースの量が、あらかじめ定められた再起動レベルに実質的に落ち着くと、ＦＩＦＯ１３０は、ＤＳｕｐ信号の発行を止めるように構成されており、これによりトレース生成ブロック１２０は、経路１５５上にデータトレース信号を再び発行する。
【００５４】
あらかじめ定められた抑制レベルとあらかじめ定められた再起動レベルは、実装状態に従って選択される。しかし、例えば、６０バイトのＦＩＦＯでは、あらかじめ定められた抑制レベルは、４５バイト（すなわち、ＦＩＦＯの全容量の７５％を占有する状態）となるように設定されるのに対し、あらかじめ定められた再起動レベルは、通常、４５バイトを僅かに下回る値に設定され、抑制信号の発行が止められた後は、直後に抑制信号の再発行を必要とせずに、ＦＩＦＯ内に格納されたトレース信号の量を増加することができるような余裕をもたせることを保証する。
【００５５】
ＤＳｕｐ信号の発行によってデータトレース信号を単純に破棄する動作だけでは、全ての状況において、ＦＩＦＯ１３０のオーバフローを防ぐことはできないため、ＦＩＦＯ１３０は、それが満杯になった際には、経路１７０上にオーバフロー信号を発行できるようになっており、これにより、オーバフロー信号の発生が止むまでに、トレース生成ブロック１２０によって任意のトレース信号の発行を停止することができるようになっている。このような手順によって、高優先度トレース信号と低優先度トレース信号の両方が失われることになるが、ＤＳｕｐ信号を発生するためのあらかじめ定められた抑制レベルを適切に選ぶことにより、オーバフロー信号を発行する必要のある場面というのは極めて稀なことになる。
【００５６】
他の実施例では、ＤＳｕｐ信号をトレース生成ブロック１２０に発行することに加え、ＦＩＦＯ１３０が、ＤＳｕｐ信号が発行された後に、命令トレース信号のみを格納する内部ステップをとるものがある（これにより、ＤＳｕｐ信号の発行と、トレース生成ブロックによる当該ＤＳｕｐ信号への応答との間の遅れ時間を除去することができる）。
【００５７】
図３は、本実施例のトレース生成ブロック１２０によって実行される、経路１４５および１５５を経由してＦＩＦＯ１３０に出力されるトレース信号を決定するための処理ステップを示すフロー図である。ステップ３００では、生成すべきなんらかのトレースデータがあるかどうかを判定する。生成すべき新しいトレースデータがあると判定された場合には、ステップ３１０に進み、そこで、このトレースデータは、命令トレースデータであるか否かを判定する。もしそうならば、ステップ３８０に進み、そこで、データ同期情報を含まないトレースデータを経路１４５上に発行する。しかし、時として、命令トレースに関して、他の命令同期情報が必要になる場合もあることは、当該技術分野に精通した者にとって認識されうるものである。
【００５８】
ステップ３１０において、生成すべきトレースデータが命令データでないと判定された場合には、トレースデータはデータトレースとなり、処理ステップ３２０に進み、そこでＤＳｕｐ信号が発行されたかどうかを判定する。もしＤＳｕｐ信号が発行されたならば、ステップ３３０に進み、そこで、生成すべきデータトレースの項目が、ＤＳｕｐ信号の発行に続く第１の項目であるかどうかを判定する。もしそうでなければ、ステップ３４０に進み、データトレースの項目は出力されない。しかし、もしデータトレースの項目が、ＤＳｕｐ信号の発行に続く第１の項目である場合には、ステップ３５０に進み、全データトレース信号の代わりに、位置情報信号を経路１５５を介してＦＩＦＯに出力する。この位置情報信号は、一意の信号であり（例えば、データ抑制の開始位置を特定する１バイト信号）、後にトレースデータを解析する任意のツールによって識別可能なものであり、そのツールに対し、データ抑制が行われたことを示すために用いられる。位置情報は、抑制されたデータトレースの各項目について発行されるものであるが、本実施例では、抑制しようとするデータトレースの第１項目に関してのみ位置情報を発行し、位置情報の発行によってＦＩＦＯにオーバフローを引き起こす危険性を防ぐようにしている。さらに、通常、トレース解析ツールにとってより重要なことは、どれだけの数のデータトレース項目が抑制されたかを知ることよりも、抑制が起こったこと自体を知ることである。
【００５９】
ステップ３２０で、ＤＳｕｐ信号が発行されなかったと判定された場合には、次に、ステップ３６０に進み、ＤＳｕｐ信号の発行が停止されていることから、トレースしようとするデータトレース項目が第１のデータトレース項目であるか否かを判定する。もしそうならば、ステップ３７０に進み、データトレース信号を後で解析できるようにするのに必要となる任意のデータ同期情報とともに、データトレース信号を発行する。例えば、出力データトレース中のアドレスの圧縮が行われた場合には、データ同期情報には、圧縮されなかったアドレスの出力が含むものとなる。
【００６０】
しかし、ステップ３６０で、ＤＳｕｐ信号の発行が停止されていることから、発行するべきデータトレース項目が第１データトレース項目でないと判定されたと仮定すると、次にステップ３８０に進み、そこで、対応するデータ同期情報を伴わずに、そのデータトレース項目が出力される。
【００６１】
従って、本発明の位置実施例によれば、ここで用いられる方法によって、コア３６を停止させることなくＦＩＦＯのオーバフローを動的に回避することができる。したがって、ユーザが、このようなオーバフローを回避するためにトレースデータを絞り込もうとする時間をかける代わりに、本方法は、ＦＩＦＯがオーバフローしそうになるレベルに達した時に、低優先度のトレースデータだけが失われるようにして、できるだけ多くのトレースデータをトレースすることを保証するものである。
【００６２】
図４は、複数のオンチップトレースモジュール４００、４０５および４１０を設けたデータ処理システムのブロック図である。本例では、集積回路４は、２つのプロセッサコア４０２および４０７を有し、これらは、対応するキャッシュ４０４および４０９に接続されている。キャッシュ４０４および４０９は、両者とも、メモリバス４２０を介して、外部メモリ１４に接続されている。図４には明記されてはいないが、外部メモリ１４は、図１に示した外部記憶装置に接続されている。本例のシステムでは、プロセッサコア４０２および４０７とメモリバス４２０の両者の動作をトレースできるようにすることが望ましいと考えられる。従って、集積回路４のこれらの異なる構成要素をトレースするために、独立したオンチップトレースモジュール４００、４０５および４１０が各々設けられている。
【００６３】
しかし、各トレースモジュールに対応して外部ピンあるいは独立したトレースバッファを設けるコストは、通常、極めて高いものになる。従って、図４に示した例では、複数のトレースモジュール４００、４０５および４１０が出力するトレース信号を格納するために、単一のトレースバッファ１２を設ける。さらに、複数のオンチップトレースモジュールの間を仲介し、これらの複数のオンチップトレースモジュールからのトレース信号を単一のトレースストリームに変換し、経路４７０を介してトレースバッファ１２に出力するために、ファンネル論理４６０を設ける。このような仲介が必要になるのは、入力トレースの経路４４０、４４２および４４４上の帯域幅の総量は、通常、トレースバッファ１２への経路４７０上の帯域幅よりも広くなるからである。
【００６４】
本実施例では、オンチップモジュール４００、４０５および４１０の各々は、オンチップトレースモジュールが出力トレースデータを必要とした時に、経路４３０、４３２および４３４を介してファンネル論理に対してリクエスト信号を発行するように構成されている。実際には、このリクエスト信号は、図２に示したトレース有効信号によって与えられる。あらかじめ定められた基準に基づき、さらに、ファンネル論理４６０は、複数のリクエスト信号の間を仲介し、トレースバッファ１２への出力として、どのトレースモジュールがファンネル論理に対してトレースデータを発行するべきかを決定し、それに応じて、ファンネル論理は、許可信号４５２、４５４および４５０を発行する。任意の好適な仲介手順を使うことができるが、例えば、通常は、メモリバスで複数のプロセッサコアにより要求されるアクセス間を仲介するために用いられるのと同様の仲介手順を用いることが可能であることを理解されるであろう。特定のトレースモジュールが、発行された許可信号を受信した時に、トレースモジュールとファンネル論理４６０との間の各々のトレース経路４４０、４４２および４４４を介して、そのトレースデータを出力する。ファンネル論理４６０の動作の詳細については、後に図５を引用して詳細に説明する。
【００６５】
リクエストハンドラ５００は、経路４３０、４３２および４３４を介して、複数のリクエスト信号を受信するために、ファンネル論理４６０の内部に設けられる。さらに、リクエストハンドラ５００は、あらかじめ定められた優先度情報を格納した基準格納装置５１０に構成され、１つ以上のリクエスト信号が特定の時点で発行された際に、どのトレースモジュールに許可信号を発行すべきかを決定する。メモリ５１０内に格納された優先度情報は、あらかじめ定めておいたものでもよいし、ユーザによりプログラム可能なものであってもよい。図４に示した例では、メモリバス４２０の動作が、トレースすべき最も重要なものであり、その次にはコア１の動作、さらに次にはコア２の動作が重要であると想定している。従って、メモリバストレースモジュール４１０が、経路４３４の上にリクエストを発行した場合には、経路４３０および４３２上にリクエスト信号が存在することに関わりなく、許可信号が経路４５０上に発行される。同様に、オンチップトレースモジュール４００および４０５から、経路４３０および４３２上に同時にリクエスト信号を受信した場合には、トレースモジュール４０５に優先して、経路４５２上にトレースモジュール４００への許可信号が発行される。
【００６６】
マルチプレクサ５２０は、３つのトレースモジュールから経路４４０、４４２および４４４の上で受信される複数のトレース信号を受信するため、ファンネル論理４６０の内部に設けられる。リクエストハンドラ５５０が許可信号を発行すると、それは、同時に、識別信号を経路５２５上に発行しマルチプレクサ５２０に送り、マルチプレクサ５２０に対して、許可信号を与えられたトレースモジュールによって発行されるトレース信号を経路５３５上に発行させる。従って、一例として、もしメモリバストレースモジュール４１０に許可信号が発行された場合には、マルチプレクサ５２０は、入力経路４４４を介して受信される信号を経路５３５上に発行するように構成される。
【００６７】
さらに、単一のトレースストリームが、経路４７０を介してトレースバッファ１２に対して出力されるため、どのトレースモジュールがトレースストリームの特定の部分を生成するのに対応しているかの識別がトレースストリーム内に含まれていることが、コンピュータ１６（図１参照）で動作するトレースツールによって後で解析する際に用いる上で重要となる。従って、本実施例では、マルチプレクサ５２０から出力されるトレース信号を受信し、どの構成要素（あるいはトレースモジュール）にトレースストリームの特定の部分が対応しているのかを表すトレース識別子の中に挿入するために、ラッピングプロトコル論理５３０が設けられる。本実施例では、この識別子は、ラッピングプロトコル論理５３０によって、経路５２５を介して発行された識別信号から求められる。このようにして得られたトレースストリームが、経路４７０を介してトレースバッファ１２に出力される。
【００６８】
図５はファンネル論理４６０の動作の概要を示したものであり、ある実際の実装では、制御経路の中に多くのレジスタが必要となり、このような場合には、マルチプレクサ５２０に対して、なんらかの入力バッファを設けることが必要となることは、当該技術分野に精通した者にとって認識されうるものである。
【００６９】
図７は、適切な許可信号と識別子信号を発行するために、リクエストハンドラ５００の内部に設けられる論理を概略的に示した図である。上述したように、本実施例では、メモリバスの動作は、トレースすべき最も重要なものであると考えられるため、メモリバストレースモジュール４１０から経路４３４上に送られた設定リクエスト信号（すなわち、論理値１レベルである信号）を、経路４５０上の許可信号として出力する。このような状況では、ＡＮＤゲート７００および７１０は、経路４３０および４３２を介して受信されるリクエスト信号に関わりなく、他の２つの許可信号４５２および４５４は論理値０レベルであることを保証するものである。さらに、ＩＤ信号は“００”であることから、対応するトレース信号の発生元がメモリバストレースモジュール４１０であると特定される。
【００７０】
もし経路４３４上のリクエスト信号が、設定されていない（すなわち、論理値０レベルである）場合には、ＡＮＤゲート７００および７１０は、オンチップトレースモジュール１　４００からの設定リクエスト信号は、オンチップトレースモジュール２　４０５からの設定リクエスト信号よりも優先度が高いことを保証する。さらに、図７からは、もし許可信号が経路４５２上に発行された場合には、ＩＤ信号は“０１”となることから、対応するトレース信号の発生元はオンチップトレースモジュール１　４００であると特定される。同様に、許可信号が経路４５４上に発行された場合には、ＩＤ信号は“１０”となることから、対応するトレース信号の発生元はオンチップトレースモジュール２　４０５であると特定される。
【００７１】
一実施例によれば、各トレースモジュールは、リクエスト信号を発行するように構成され、対応する許可信号を受信した時にのみ、トレース信号をファンネル論理４６０に出力できる。しかし、本実施例では、各トレースモジュールは、リクエスト信号を発行し、もし許可信号の発行が止まった場合にはトレース信号の出力を中止するように構成されている。図４に示すような集積回路では、許可信号に応答するようには設計されていない、１つあるいはそれ以上の数の過去のトレースモジュールの設計が存在する場合もありうる。このような過去の設計に基づくトレースモジュールは、以下では、停止不能型装置と称する。
【００７２】
図６には、１つの停止可能型装置６００および２つの停止不能型装置６１０および６２０が、ファンネル論理４６０に接続されているものとして、その概略が示されている。各停止不能型装置とファンネル論理４６０の間には、対応するバッファ６３０および６４０が置かれており、以下では、停止可能バッファと称する。
【００７３】
図５を引用して先に述べたように、停止可能型装置がトレースデータを発行しようとする場合には、その装置は、最初に、経路６０４上にリクエスト信号を発行し、対応する許可信号が経路６０４上にファンネル論理４６０から受信された時には、さらに、その装置は、トレースデータを経路６０２上に発行する。本例では、トレースデータは３２ビットの帯域幅を有するものと仮定している。
【００７４】
しかし、これとは対照的に、各々の停止不能型装置６１０および６２０が、生成された時にデータトレース項目を発行し、これは、経路６１２および６２２を介して、対応する停止可能バッファ６３０および６４０に送られる。同時に、トレース有効信号が経路６１４および６２４上に発行され、これらは要求信号と同様に見なされうるものとなる。図示の都合上、図６では、停止不能型装置６１０は、帯域幅８ビットのトレースデータを発行し、一方、停止不能型装置６２０は、帯域幅１６ビットのトレースデータを発行するものとなっている。
【００７５】
停止可能バッファ６３０および６４０の各々は、発行すべき３２ビットのトレースデータを有するまで待機するように構成され、さらに、各々、経路６３４および６４４を介して、ファンネル論理４６０に対してリクエスト信号を発行するように構成されている。各バッファが許可信号を受信すると、各々、経路６３２および６４３を介して、対応するトレースデータを出力する。
【００７６】
停止可能バッファ６３０および６４０は、理想的には、比較的小さい容量であるため、バッファ６３０および６４０が許可信号を受信する前に長時間の待ちを必要としないように、停止不能型装置６１０および６２０には、ファンネル論理４６０のメモリ５１０中に格納された優先度情報の中から比較的高い優先度を割り当てることが好ましい。図６に示した例では、停止不能型装置には、停止可能装置６００よりも高い優先度を割り当てるものと仮定すれば、オーバフローしないことを保証するためには、各バッファ６３０および６４０は、６４ビットの容量とする必要があるだけである。
【００７７】
単一のサイクル時間内では、単一の装置だけが出力トレースを必要とするため、停止不能型装置の全帯域幅は、ファンネル論理からの出力ストリームの帯域幅を上回らないことが好ましい。図６に示した例では、停止不能型装置の全帯域幅は２４ビットであり、これに対し出力の帯域幅は、３２ビットである。
【００７８】
図５を引用して先に述べたように、ファンネル論理４６０によって適切な許可信号を発行することにより、トレースデータの単一のストリームが出力され、本例では、３２ビットの帯域幅をもつトレースストリームが出力されることが保証される。前記のように、このトレースストリームは、ラッピング論理５３０を経由し、そこで装置識別子が付加され、その後、修正されたトレースストリームは、トレースバッファ１２に出力される。図６に示した例では、３つの異なる装置があるため、情報の２ビットは、装置ＩＤの中で一意に装置を識別するために必要なものとなる。従って、３２ビットのトレースストリームは、ラッピング論理５３０によって装置ＩＤが付加されると、修正されて３４ビット幅のトレースストリームを生成するものとなる。
【００７９】
図６では、ラッピング論理５３０は、装置ＩＤを組み込んだ結果、トレースストリームの帯域幅がどの程度変わるかを明確に示すために、ファンネル論理４６０の外部にあるものとしてその概略が示されている。ラッピング論理は、希望に依って、ファンネル論理の外部に設けてもよいし、ファンネル論理の内部に設けてもよく、この結果は処理操作には影響を及ぼさないことが、当該技術分野に精通した者にとって認識されうるものである。
【００８０】
本発明の実施例について上述したように、データ処理装置の内部でトレース信号を発生させるための改良された方法について説明した。特に、オンチップのトレースモジュールの内部で抑制信号を用いることにより、抑制信号が発行された際には、低優先度トレースデータが抑制されてＦＩＦＯに入るトレースデータの量を減らすことができるため、抑制信号オンチップのトレースモジュールのＦＩＦＯがオーバフローしないことをより確実に保証することができる。さらに、複数のオンチップトレースモジュールを設けた際には、上述したファンネル論理によって、これらのトレースモジュールによって発行された複数のトレース信号が、単一のトレースストリームに集約され、トレースバッファに出力されるため、対応するピンあるいはトレースバッファを設けるコストに不必要な増加を招くことなく、複数のトレースモジュールを用いることが可能となる。
【００８１】
以上では、本発明の特定の実施例について説明してきたが、本発明はそれに限定されるものではなく、本発明の範囲内で多くの修正と追加が可能となることは明白である。例えば、本発明の範囲を逸脱することなく、独立クレームの特徴とあわせて、従属クレームの特徴の組み合わせを得ることが可能となる。
【図面の簡単な説明】
【図１】オンチップのトレース機構を設けたデータ処理システムの概略を示す図である。
【図２】本発明の一実施例において、図１のオンチップのトレースモジュールをより詳細に示すブロック図である。
【図３】本発明の一実施例において、図２のトレース生成ブロックが、どのトレース信号を発行するかを決定する方法を示すフロー図である。
【図４】本発明の一実施例において、データ処理装置の概略を示し、複数のオンチップのトレースモジュールが設けられている構成を示す図である。
【図５】本発明の一実施例において、図４のファンネル論理内に設けられた構成要素をより詳細に示すブロック図である。
【図６】本発明の一実施例において、安定した装置および不安定な装置の両者に接続するように、実施例のファンネル論理がどのように構成されているかを示す図である。
【図７】本発明の一実施例において、受信されたリクエスト信号から許可信号と識別子信号を生成するために、実施例のファンネル論理の内部で用いられる論理を示す図である。
【符号の説明】
２　データ処理システム
４　集積回路
６　マイクロプロセッサコア
８　キャッシュメモリ
１０　オンチップトレースモジュール
１２　オンチップトレースバッファ
１４　外部メモリ
１６　汎用コンピュータ
２０、２２　バス
【図１】
2004013897.tif 000003
【図２】
2004013897.tif 000004
【図３】
2004013897.tif 000005
【図４】
2004013897.tif 000006
【図５】
2004013897.tif 000007
【図６】
2004013897.tif 000008
【図７】
2004013897.tif 000009