"データ処理装置の処理活動を表すトレースデータの項目を生成するように構成されたトレースユニットであって、前記データ処理装置から、条件命令の実行を示す少なくとも1つの命令観察インジケータ、および少なくとも1つの前記条件命令を実行した結果の前記データ処理装置による出力を示す少なくとも1つの結果出力インジケータを受け取るためのトレース入力インタフェースと、少なくとも1つの前記命令観察インジケータおよび少なくとも1つの前記結果出力インジケータを処理するトレース回路であって、少なくとも1つの前記命令観察インジケータおよび少なくとも1つの前記結果出力インジケータから、対応する条件命令トレースデータ項目および条件結果トレースデータ項目を生成し、前記条件命令トレースデータ項目および条件結果トレースデータ項目を独立に出力して、診断装置による条件命令および対応する条件結果の別個のトレース分析を可能にするように構成されたトレース回路とを備える、トレースユニット。前記命令観察インジケータは、第一の処理サイクルにおいて前記トレース入力インタフェースで受け取られ、前記結果出力インジケータは、第二の処理サイクルにおいて前記トレース入力インタフェースで受け取られ、前記第二の処理サイクルは前記第一の処理サイクルと異なる、請求項1に記載のトレースユニット。前記トレースユニットは、前記データ処理装置から受け取った結果出力インジケータの複数のセットを格納するための結果出力インジケータバッファを備え、前記トレースユニットは、処理のために前記トレース回路に出力する対象として、かつ前記バッファが有効な値を現在格納している結果出力インジケータのセットを参照する条件命令を示す前記命令観察インジケータの中の1つに応答して、格納された結果のセットを定期的に選択するように構成され、前記トレースユニットは、結果出力インジケータの新しいセットを格納できるようにするために、現在格納されている結果出力インジケータの有効なセットを出力対象として選択するように構成される、請求項1または請求項2に記載のトレースユニット。前記データ処理装置は、条件命令がどのように処理されるかを示す条件コードフラグ値の個別セットを格納するように構成された複数のカレントプログラムステータスレジスタを備え、前記バッファは、複数の前記カレントプログラムステータスレジスタの各々に対応する結果出力インジケータの1つのセットを格納するための記憶場所を含み、前記結果出力インジケータのセットの各々は、前記条件コードフラグ値の少なくともいくつかを含む、請求項3に記載のトレースユニット。前記データ処理装置は、条件命令を前記トレースデータの項目として出力すべきか判断するためにテストされる条件コードフラグマークの個別セットを格納するように構成された少なくとも1つのカレントプログラムステータスレジスタを備え、前記トレースユニットは、カレントプログラムステータスレジスタテーブルを格納するためのデータストアを備えており、前記カレントプログラムステータスレジスタテーブルには、少なくとも1つの前記カレントプログラムステータスレジスタと関連付けられた状態とともに、前記条件コードフラグマークの個別セットの少なくともサブセットがリストされる、請求項1から請求項4のいずれか1項に記載のトレースユニット。前記カレントプログラムステータスレジスタテーブルは、前記条件コードフラグのサブセットの各々に関する3種類の状態を格納するように構成される、請求項5に記載のトレースユニット。前記3種類の状態は、トレース済み、トレース予定、および未トレースを含む、請求項6に記載のトレースユニット。前記3種類の状態は、インフライトテーブルおよび現CPSRテーブルを維持することによって追跡され、前記インフライトテーブルは、前記データ処理装置による出力時にどのフラグをトレースすべきかを示すものとして、各CPSRの各フラグに関する2つの状態を有し、前記現CPSRテーブルは、条件命令を条件命令トレースデータ項目としてトレースすべきかどうかを示すものとして、現CPSRの各フラグに関する2つの状態を格納する、請求項5に記載のトレースユニット。前記トレース回路は、前記カレントプログラムステータスレジスタテーブルを使用して、前記条件結果トレースデータ項目がいつ必要とされるか、および前記条件コードフラグのどのセットをトレースすべきかを判定する、請求項5から請求項8のいずれか1項に記載のトレースユニット。前記トレース入力インタフェースは、前記データ処理装置から、前記命令観察インジケータに対応する命令タグ、および前記結果出力インジケータに対応する結果タグを受け取る、請求項2から請求項9のいずれか1項に記載のトレースユニット。前記命令タグおよび前記結果タグは、前記トレース回路によって出力される、請求項10に記載のトレースユニット。前記トレース回路は、タグ-キー変換動作を実行するように構成され、前記キー変換動作において、前記命令観察インジケータと関連付けられた前記命令タグが前記条件命令トレースデータ項目に対応する命令キーに変換され、前記結果出力インジケータと関連付けられた前記結果タグが前記条件結果トレースデータ項目に対応する結果キーに変換され、前記キー変換動作は、前記カレントプログラムステータスレジスタテーブルに格納された前記状態に応じて実行される、請求項10に記載のトレースユニット。前記トレース回路は、受け取った命令観察インジケータに対応する前記条件命令トレースデータ項目の少なくとも1つの出力をバッファするように構成されたトレース圧縮回路を含み、その発生は、前記トレースユニットによる前記条件結果トレースデータ項目の中の対応する1つの出力から、前記診断装置によって推測することが可能である、請求項12に記載のトレースユニット。前記トレース回路は、バッファされた前記条件命令トレースデータ項目に関する前記結果キーの中の1つを生成して出力するように構成され、出力された前記結果キーは、前記診断回路により、バッファされた前記条件命令トレースデータ項目の出力を推測するために使用される、請求項13に記載のトレースユニット。前記トレース回路は、前記トレース回路によってバッファされた対応する条件命令トレースデータ項目の出力を有していたのが受け取った前記命令観察インジケータのいずれであるかを示すバッファリング記録を監視および維持するように構成される、請求項13または請求項14に記載のトレースユニット。前記バッファリング記録は、直近に生成された条件命令トレースデータ項目および直近に出力された条件命令トレースデータ項目の記録を含む、請求項14に記載のトレースユニット。キー比較の実行時に条件命令トレースデータ項目がすでにバッファされていることが確認され、前記キー比較は、前記条件命令トレースデータ項目に対応するキーが直近に出力された前記条件命令トレースデータ項目に対応するキーより大きいか、また、直近に生成された前記条件命令トレースデータ項目に対応するキーより小さいもしくは等しいかを判定するものである、請求項16に記載のトレースユニット。最大値に達した時点で前記キーの値がラップアラウンドし、前記キー比較はモジュロ演算に従う、請求項16に記載のトレースユニット。前記タグ-キー変換動作の結果、前記トレースユニットが前記命令観察インジケータの中の1つを受け取る時点で、前記命令タグを使用して前記カレントプログラムステータスレジスタテーブルをルックアップすることにより、条件コードマークの関連サブセットを格納する前記カレントプログラムステータスレジスタの中の適切な1つが特定される、請求項12に記載のトレースユニット。前記トレース回路は、前記カレントプログラムステータスレジスタテーブルに格納された前記条件コードマークの関連サブセットがいずれもトレース予定であることを示していない場合、新たに生成された条件命令トレースデータ項目に新しいキー値を割り当て、前記カレントプログラムステータスレジスタテーブルに格納された1つ以上の前記条件コードマークのサブセットがトレース予定であることを示している場合、直近に割り当てられたキー値を繰り返す反復キー値を新たに生成された条件命令トレースデータ項目に割り当てることにより、前記タグ-キー変換動作を実行する、請求項19に記載のトレースユニット。前記トレース回路は、新しい前記キー値を有する前記条件命令トレースデータ項目の少なくとも1つの出力をバッファするように構成されたトレース圧縮回路を含み、その発生は、前記トレースユニットによる対応する1つ以上の前記条件結果トレースデータ項目の出力から、前記診断装置によって推測することが可能であり、前記反復キー値に対応する条件命令トレースデータ項目はバッファされない、請求項20に記載のトレースユニット。前記トレース回路は、前記条件結果トレースデータ項目を、対応する1つ以上の前記条件命令トレースデータ項目を前記診断ツールによって推測することの可否のインジケーションとともに、前記診断ツールに供給するように構成される、請求項21に記載のトレースユニット。前記診断ツールに供給された対応する条件結果トレースデータ項目から1つ以上の前記条件命令トレースデータ項目が推測される場合、1つ以上の前記条件命令トレースデータ項目は前記トレース圧縮回路の前記バッファから除去され、前記トレース回路によって出力されない、請求項22に記載のトレースユニット。対応する条件結果キーが前記トレース圧縮回路の前記バッファによって現在バッファされている条件命令キーと同じである場合、1つ以上の前記条件命令トレースデータ項目を推測することが許される、請求項21に記載のトレースユニット。前記トレース回路によって生成された前記条件結果トレースデータ項目を受け取り、前記条件結果トレースデータ項目の少なくともいくつかの圧縮表現を生成して前記圧縮表現を格納し、前記圧縮表現の少なくともいくつかを組み合わせて、トレースデータ項目の複数の圧縮表現が連結トレースデータ項目として出力されるようにするためのトレース結果連結回路をさらに備える、請求項1から請求項24のいずれか1項に記載のトレースユニット。前記トレース結果連結回路は、前記圧縮表現を生成および格納し、前記トレース結果連結回路によって圧縮できない条件結果トレースデータ項目を受け取った時は、トレースデータ項目の格納された前記圧縮表現を連結トレースデータ項目として出力した後、圧縮できない前記条件結果トレースデータ項目を出力するように構成される、請求項25に記載のトレースユニット。前記トレース回路は、前記トレース入力インタフェースから条件分岐または非条件分岐命令およびロード/ストア命令に関係したトレースデータを受け取るように構成され、かつ前記トレース回路は、対応する命令が成立の条件分岐もしくは非条件分岐またはロード/ストア命令のいずれかに対応することを示す第一の種類のウェイポイントインジケータを生成するとともに、対応する命令が不成立の条件分岐に対応することを示す第二の種類のウェイポイントインジケータを生成するように構成される、請求項1から請求項26のいずれか1項に記載のトレースユニット。前記トレース回路は、前記トレース入力インタフェースから条件分岐または非条件分岐命令およびロード/ストア命令に関係したトレースデータを受け取るように構成され、かつ前記トレース回路は、対応する命令が成立を予測される条件分岐、成立を予測される非条件分岐、またはロード/ストア命令のいずれかに対応することを示す第一の種類のウェイポイントインジケータを生成するとともに、対応する命令が不成立の条件分岐になることが予測されることを示す第二の種類のウェイポイントインジケータを生成するように構成される、請求項1から請求項27のいずれか1項に記載のトレースユニット。前記命令観察インジケータは、条件分岐命令以外の条件命令の実行を示すために前記データ処理装置によって使用され、前記トレース回路は、前記命令観察インジケータに対応する条件命令トレースデータ項目および第一の種類の前記ウェイポイントインジケータと第二の種類の前記ウェイポイントインジケータの少なくとも一方を同じトレースデータストリーム内に出力するように構成される、請求項27または請求項28に記載のトレースユニット。前記結果出力インジケータは、条件分岐命令以外の条件命令の実行を示すために前記データ処理装置によって使用され、前記トレース回路は、前記結果出力インジケータに対応する条件結果トレースデータ項目および第一の種類の前記ウェイポイントインジケータと第二の種類の前記ウェイポイントインジケータの少なくとも一方を同じトレースデータストリーム内に出力するように構成される、請求項27または請求項28に記載のトレースユニット。前記命令観察インジケータは、条件分岐命令の実行を示すために前記データ処理装置によって使用され、前記結果出力インジケータは、条件分岐命令以外の条件命令の実行を示すために前記データ処理装置によって使用され、前記トレース回路は、前記命令観察インジケータに対応する条件命令トレースデータ項目、前記結果出力インジケータに対応する条件結果トレースデータ項目、および第一の種類の前記ウェイポイントインジケータと第二の種類の前記ウェイポイントインジケータの少なくとも一方を同じトレースデータストリーム内に出力するように構成される、請求項27または請求項28に記載のトレースユニット。前記トレース回路は、対応する命令キーが前記反復キー値である場合、条件分岐以外の条件命令に対応する第一の種類の条件命令トレースデータ項目を出力し、対応する命令キーが前記新しいキー値である場合、条件分岐以外の条件命令に対応する第二の種類の条件命令トレースデータを出力するように構成される、請求項14に従属する場合の請求項29に記載のトレースユニット。前記トレース回路は、対応する命令キーが前記反復キー値である場合、条件分岐に対応する第一の種類の条件命令トレースデータ項目を出力し、対応する命令キーが新しい前記キー値である場合、条件分岐に対応する第二の種類の条件命令トレースデータを出力するように構成される、請求項14に従属する場合の請求項30に記載のトレースユニット。前記トレース回路は、複数のウェイポイントインジケータを連結して、前記診断装置に出力するための連結ウェイポイントインジケータを形成するように構成され、前記連結ウェイポイントインジケータは、複数の第一の種類の前記ウェイポイントインジケータ、複数の第二の種類の前記ウェイポイントインジケータ、あるいは第一の種類の前記ウェイポイントインジケータの少なくとも1つおよび第二の種類の前記ウェイポイントインジケータの少なくとも1つを含む異なる種類のウェイポイントインジケータの組み合わせのいずれか1つを含む、請求項27から請求項33のいずれか1項に記載のトレースユニット。前記トレース回路は、複数の前記条件命令トレースデータ項目を連結して連結条件命令トレースデータ項目を形成し、複数の前記条件命令トレースデータ項目を出力する代わりに前記連結条件命令トレースデータ項目を前記診断装置に出力するように構成される、先行請求項のいずれか1項に記載のトレースユニット。前記連結条件命令トレースデータ項目は、複数の前記条件命令トレースデータ項目と比較して低減されたトレース帯域幅を有する、請求項35に記載のトレースユニット。前記トレース回路は、前記連結条件命令トレースデータ項目の少なくとも1つおよび前記連結ウェイポイントインジケータの少なくとも1つを同じトレースデータストリーム内に出力するように構成される、請求項36に記載のトレースユニット。前記トレース回路は、再アライメントトレースデータを出力するように構成される、請求項1から請求項37のいずれか1項に記載のトレースユニット。前記再アライメントトレースデータ項目は、前記データ処理装置からの分岐誤予測インジケータへの受け取りに応答して出力される、請求項38に記載のトレースユニット。前記再アライメントトレースデータ項目は、前記データ処理装置からアボートインジケータへの受け取りに応答して出力される、請求項38に記載のトレースユニット。前記再アライメントトレースデータ項目は、前記データ処理装置から例外インジケータへの受け取りに応答して出力される、請求項38に記載のトレースユニット。前記再アライメントトレースデータ項目は、前記データ処理装置からの受け取りに応答してキャンセルインジケータに出力される、請求項38に記載のトレースユニット。前記トレース回路は、投機的に実行されてトレースされた1つ以上の命令が取り消されたことを示すキャンセルインジケーションを前記データ処理装置から受け取るように構成され、かつ前記トレース回路は、前記キャンセルインジケーションに応答して再アライメントトレース項目を生成するように構成され、前記再アライメントトレース項目は、少なくとも1つの以前に受け取った条件命令トレース項目を破棄すべきであることを前記診断ツールに通知するために前記トレース回路によって出力される、請求項1から請求項42のいずれか1項に記載のトレースユニット。前記トレース回路は、すでに受け取られているが前記再アライメントトレースデータ項目の出力以前にまだ出力されていない条件命令トレースデータ項目があればそれを出力するように構成される、請求項38から請求項43のいずれか1項に記載のトレースユニット。前記トレース回路は、すでに受け取られているが前記再アライメントトレースデータ項目の出力以前にまだ出力されていないウェイポイントトレースデータ項目があればそれを出力するように構成される、請求項38から請求項43のいずれか1項に記載のトレースユニット。前記トレース回路は、条件分岐命令およびロード/ストア命令に関係したトレースデータを前記トレース入力インタフェースから受け取るように構成され、前記トレース回路は、対応する命令が条件分岐またはロード/ストア命令のいずれかに該当することを示すウェイポイントインジケータを生成するように構成され、前記命令観察インジケータは、条件分岐命令以外の条件命令の実行を示すために前記データ処理装置によって使用され、前記トレース回路は、前記命令観察インジケータと関連付けられた前記条件命令トレースデータ項目を出力するとともに、前記ウェイポイントインジケータを同じトレースデータストリーム内に出力するように構成され、前記トレース回路は、前記分岐誤予測インジケータに応答して前記再アライメントトレースデータ項目を出力することにより、前記分岐誤予測インジケータの受け取り後であるが、その後に発生する条件命令トレースデータ項目またはウェイポイントインジケータの出力以前に前記再アライメントトレースデータ項目が出力されるように構成される、請求項38から請求項42のいずれか1項に記載のトレースユニット。前記トレース回路は、条件分岐命令およびロード/ストア命令に関係したトレースデータを前記トレース入力インタフェースから受け取るように構成され、前記トレース回路は、対応する命令が条件分岐またはロード/ストア命令のいずれかに該当することを示すウェイポイントインジケータを生成するように構成され、前記命令観察インジケータは、条件分岐命令以外の条件命令の実行を示すために前記データ処理装置によって使用され、前記トレース回路は、前記命令観察インジケータと関連付けられた条件命令トレースデータ項目および前記ウェイポイントインジケータを同じトレースデータストリーム内に出力するように構成され、前記トレース回路は、前記例外インジケータに応答して前記再アライメントトレースデータ項目を出力することにより、前記再アライメントトレースデータ項目が前記例外インジケータの受け取り後であるが、その後に発生する条件命令トレースデータ項目またはウェイポイントインジケータの出力以前に出力されるように構成される、請求項38から請求項42のいずれか1項に記載のトレースユニット。前記条件命令トレースデータ項目は、前記カレントプログラムステータスレジスタテーブルの内容に応じ、少なくとも1つの前記命令観察インジケータのサブセットに対して生成される、請求項5に記載のトレースユニット。データ処理装置であって、プログラム命令の実行に応答してデータ処理動作を実行するデータ処理回路と、条件命令の実行を示す命令観察インジケータおよび前記データ処理回路による結果の出力を示す結果出力インジケータを、前記条件命令の実行に応答してトレースユニットに独立に出力するように構成されたトレース出力インタフェースとを備える、データ処理装置。前記データ処理回路は、一連のプログラム命令の投機的実行とアウトオブオーダー実行の少なくとも一方を実行するように構成される、請求項49に記載のデータ処理装置。条件命令トレースデータ項目および条件結果トレースデータ項目を含むトレースデータストリームを受け取るように構成された診断装置であって、前記条件結果トレースデータ項目は、受け取った前記トレースデータストリーム内で前記条件命令トレースデータ項目とは別個であり、前記診断装置は、前記トレースデータストリームを生成するために、前記データ処理装置によって実行されるプログラム命令のイメージを参照して、前記条件命令トレースデータ項目および前記条件結果トレースデータ項目を処理するように構成された診断回路を備え、前記診断回路は、前記プログラム命令のイメージ、条件命令トレースデータ項目、および前記条件結果トレースデータ項目を使用して、前記データ処理装置によって実行されたプログラム命令を確定するように構成される、診断装置。分岐命令、ロード命令およびストア命令の中の1つが前記データ処理装置によって実行されたことを各々が示すウェイポイントトレース項目をトレースデータストリーム内でトレースユニットから受け取るように構成され、前記トレースデータストリームは、前記条件命令トレース項目および前記条件結果トレース項目をさらに含み、前記ウェイポイントトレース項目および条件命令トレースデータ項目の受け取り順序は、対応するウェイポイント命令および条件命令の実行順序と異なる、請求項51に記載の診断装置。前記診断装置は、受け取った前記ウェイポイントトレース項目をバッファするためのウェイポイントバッファと、受け取った前記条件命令トレース項目をバッファするための条件命令バッファとを備える、請求項52に記載の診断装置。前記診断回路は、前記プログラム命令イメージを参照して前記ウェイポイントバッファ内のエントリおよび前記条件命令バッファ内のエントリを独立に分析することにより、前記受け取り順序を並べ替えて前記実行順序を得るように構成される、請求項53に記載の診断装置。前記診断回路は、前記プログラムイメージに条件命令が現れ、しかしその時点で前記条件命令バッファ内に条件命令トレース項目が存在しない場合について、前記条件トレース項目が前記条件命令バッファに現れるまでの間、前記プログラムイメージの対応する実行スレッドのさらなる処理を遅延させるように構成される、請求項53または請求項54に記載の診断装置。データ処理装置から受け取った情報に基づき、前記データ処理装置の処理活動を表すトレースデータの項目を生成する方法であって、条件命令の実行を示す少なくとも1つの命令観察インジケータおよび少なくとも1つの前記条件命令の実行結果の前記データ処理装置による出力を示す少なくとも1つの結果出力インジケータを前記データ処理装置から受け取ることと、少なくとも1つの前記命令観察インジケータおよび少なくとも1つの前記結果出力インジケータを処理することとを含み、かつ、少なくとも1つの前記命令観察インジケータおよび少なくとも1つの前記結果出力インジケータから、対応する条件命令トレースデータ項目および条件結果トレースデータ項目を生成して、前記条件命令トレースデータ項目および前記条件結果トレースデータ項目を独立に出力し、診断装置による条件命令および対応する条件結果の別個のトレース分析を可能にするように構成される、方法。前記命令観察インジケータは第一の処理サイクルで受け取られ、前記結果出力インジケータは第二の処理サイクルで受け取られ、前記第二の処理サイクルは前記第一の処理サイクルと異なる、請求項56に記載の方法。データ処理装置の内部で、データ処理装置の処理活動を表すトレースデータの項目を生成する方法であって、プログラム命令の実行に応答してデータ処理動作を実行することと、条件命令の実行を示す命令観察インジケータおよび前記データ処理回路による結果の出力を示す結果出力インジケータを、前記条件命令の実行に応答してトレースユニットに独立に出力することとを含む、方法。前記命令観察インジケータは、前記データ処理装置によって第一の処理サイクルで出力され、前記結果出力インジケータは、前記データ処理装置によって前記第一の処理サイクルと異なる第二の処理サイクルで出力される、請求項58に記載の方法。データ処理装置によって生成されたトレースデータを処理する診断方法であって、条件命令トレースデータ項目および条件結果トレースデータ項目を含むトレースデータストリームを受け取ることであって、受け取った前記トレースデータストリーム内で前記条件結果トレースデータ項目は前記条件命令トレースデータ項目とは別個であることと、前記トレースデータストリームを生成するために、前記データ処理装置によって実行されるプログラム命令のイメージを参照して前記条件命令トレースデータ項目および前記条件結果トレースデータ項目を処理することと、前記プログラム命令のイメージを使用して前記条件命令トレースデータ項目と前記条件結果トレースデータ項目の関連付けを実行することにより、前記データ処理装置によって実行された処理ステップを確定することとを含む、診断方法。データ処理装置の処理活動を表すトレースデータの項目を生成するように構成されたトレースユニットであって、条件命令の実行を示す少なくとも1つの命令観察インジケータおよび少なくとも1つの前記条件命令の実行結果の前記データ処理装置による出力を示す少なくとも1つの結果出力インジケータを前記データ処理装置から受け取る手段と、少なくとも1つの前記命令観察インジケータおよび少なくとも1つの前記結果出力インジケータを処理する手段であって、少なくとも1つの前記命令観察インジケータおよび少なくとも1つの前記結果出力インジケータから、対応する条件命令トレースデータ項目および条件結果トレースデータ項目を生成して、前記条件命令トレースデータ項目および前記条件結果トレースデータ項目を独立に出力し、診断装置による条件命令および対応する条件結果の別個のトレース分析を可能にするように構成された手段とを備える、トレースユニット。データ処理装置であって、プログラム命令の実行に応答してデータ処理動作を実行する手段と、条件命令の実行を示す命令観察インジケータおよび前記データ処理回路による結果の出力を示す結果出力インジケータを、前記条件命令の実行に応答してトレースユニットに独立に出力するように構成された手段とを備える、データ処理装置。条件命令トレースデータ項目および条件結果トレースデータ項目を含むトレースデータストリームを受け取るように構成された診断装置であって、前記条件結果トレースデータ項目は、受け取った前記トレースデータストリーム内で前記条件命令トレースデータ項目とは別個のものであり、前記トレースデータストリームを生成するために、前記データ処理装置によって実行されるプログラム命令のイメージを参照して前記条件命令トレースデータ項目および前記条件結果トレースデータ項目を処理する手段であって、前記プログラム命令のイメージ、条件命令トレースデータ項目および前記条件結果トレースデータ項目を使用して、前記データ処理装置によって実行されたプログラム命令を確定するように構成された手段を備える、診断装置。第一の態様によれば、本発明は、データ処理装置の処理活動を表すトレースデータの項目を生成するように構成されたトレースユニットを提供する。このトレースユニットは、条件命令の観察を示す少なくとも1つの命令観察インジケータinstructionobservedindicatorおよびその少なくとも1つの条件命令を実行した結果の前記データ処理装置による出力を示す少なくとも1つの結果出力インジケータresultoutputindicatorを前記データ処理装置から受け取るトレース入力インタフェース、ならびに、その少なくとも1つの命令観察インジケータおよび少なくとも1つの結果出力インジケータを処理するトレース回路を備える。このトレース回路は、上記の少なくとも1つの命令観察インジケータおよび少なくとも1つの結果出力インジケータから、対応する条件命令トレースデータ項目および条件結果トレースデータ項目を生成するとともに、その条件命令トレースデータ項目および条件結果トレースデータ項目を独立に出力して、診断装置による条件命令および対応する条件結果の別個のトレース分析を可能にするように構成される。本発明が認識する利点として、条件命令トレースデータ項目および条件結果トレースデータ項目を独立に出力できるトレース回路を提供することによって相当な柔軟性が与えられる。また、条件命令のトレースは、条件付きで実行された命令に関連する条件が完全に解決されるまでトレースデータをバッファする既知の手法に伴う問題を改善する。当然のことながら、データ処理装置により、命令観察インジケータおよび対応する結果出力インジケータを同一の処理サイクル内で出力することは可能である。しかし、いくつかの実施形態では、命令観察インジケータが第一の処理サイクルでデータ処理装置によって出力され、トレース回路のトレース入力インタフェースで受け取られる一方、データ処理装置は、同じ条件命令に対応する結果出力インジケータを第二の異なる処理サイクルで出力できるように構成される。すなわち、トレース入力インタフェースにおいて命令観察インジケータおよび対応する結果出力インジケータを異なる処理サイクルで受け取るようにするということである。これにより、条件命令の実行と、その後に生成された対応する条件結果の別個のトレースが容易になる。データ処理コアによっては、処理パイプライン内の同じ位置で条件命令のすべての詳細をトレースできないことがあるため、条件命令とそれに対応する条件結果を独立にトレースできることは有用である。さらに、条件命令をアウトオブオーダーで処理できるデータプロセッサもある。本手法に従って条件命令のトレースを2つの部分に分割することは、この問題の直接的な解決策である。これにより、とくに投機的および/またはアウトオブオーダー実行が可能なデータ処理装置において、条件命令のトレースがより効率的になる。条件命令の実行と条件結果の出力に関するトレースの時間的分離は、たとえば、アウトオブオーダープロセッサにおいて、特定のデータ処理装置のタイミングおよび機能に応じ、所与の実行シーケンスを異なる方法でトレースできるということを意味する。具体的には、条件命令のデコードを起点として条件結果が与えられるまでの時間は、プロセッサの能力によって大きく変化する可能性があるが、命令観察インジケータおよび結果出力インジケータを異なる処理サイクルで出力するデータ処理装置により、この問題は容易に解決される。いくつかの実施形態において、前記トレースユニットは、前記データ処理装置から受け取った結果出力インジケータの複数のセットを格納するための結果出力インジケータバッファを備える。前記トレースユニットは、処理のために前記トレース回路に出力する対象として、かつ前記命令観察インジケータの中の1つに応答して、格納された結果のセットを定期的に選択するように構成される。この命令観察インジケータは、現在前記バッファが有効な値を格納している結果出力インジケータのセットを参照する条件命令を示したものである。また、前記トレースユニットは、現在格納されている結果出力インジケータの有効なセットを出力対象として選択するように構成される。これにより、結果出力インジケータの新しいセットを格納できることになる。トレースユニットが単一サイクルで多くの結果出力インジケータを受け入れることができても、多数の条件結果トレースデータ項目を生成する機能を有するトレース回路を設ければ、コストが高くなる。したがって、これらの結果をバッファして、徐々に出力するという方法が有利になりえる。この方法により、結果出力インジケータを受け取るピークを平坦化することができる。したがって、現在の結果出力インジケータを追い出すことが条件命令の実行に必要とされる場合、または項目が受け取られていないため、1つ以上の項目を出力対象として選択できる場合のいずれにおいても、出力インジケータが出力される。本システムは、結果出力インジケータよりも前に命令観察インジケータを受け取るように設計されている。したがって、現在使用中の結果を記憶場所に格納する必要がある命令を実行すべきか判断することができるとともに、このデータをその場所から出力できるため、結果を受け取った時にその記憶場所が空いていることになる。いくつかの実施形態において、前記データ処理装置は、条件命令がどのように処理されるかを示す条件コードフラグ値の個別セットを格納するように構成された複数のカレントプログラムステータスレジスタを備える。前記バッファは、この複数のカレントプログラムステータスレジスタの各々に対応する結果出力インジケータの1つのセットを格納するための記憶場所を備え、その結果出力インジケータのセットの各々は、前記条件コードフラグ値の少なくともいくつかを含む。結果出力インジケータは、たとえば、CPSRレジスタから受け取った少なくともいくつかの条件コードフラグ値を含むことができる。その場合には、各CPSRレジスタの記憶場所が存在し、それらがすべて1サイクルで更新される可能性があるため、トレースユニットはそれだけの数の入力を受け入れることができなければならない。さらに、条件命令の実行時に、有効な値がすでにバッファに格納されているステータスレジスタについて、そのステータスレジスタに対応する条件命令が存在するか判定することができる。その場合には、上記の値を出力することができ、その記憶場所が新しい値を格納するために使用できるようになる。以前のサイクルで命令観察インジケータが出力されることにより、新しい値が到着する前にバッファをクリアすることができる。さらに、バッファを有することによって、これらの入力値を格納することができ、そのすべてを同時に処理する必要がなくなる。留意すべき点として、単一サイクルでM個の条件命令インジケータを受け取ることができる場合、トレースユニットは、必要に応じて記憶場所を解放するために、単一サイクルでM個の条件結果インジケータを追い出して出力できなければならない。前述のように、N個のステータスレジスタがある場合、いくつかの実施形態において、トレースユニットは結果出力インジケータのN個のセットを単一サイクルで受け取ることが求められる。M個は、典型的にはN個よりもはるかに小さく、したがって、トレース生成ロジックによる処理のために単一サイクルで出力される結果出力インジケータの数は比較的小さい。ただし、条件命令の実行に関連した条件を追跡する方法にはさまざまな種類がある。いくつかの実施形態において、データ処理装置は、条件命令をトレースデータの項目として出力すべきか判断するためにテストされる条件コードフラグマークの個別セットを格納するように構成された少なくとも1つのカレントプログラムステータスレジスタを備え、トレースユニットは、カレントプログラムステータスレジスタテーブルを格納するためのデータストアを備える。このカレントプログラムステータスレジスタテーブルには、前記の少なくとも1つのカレントプログラムステータスレジスタと関連付けられた状態とともに、条件コードフラグマークの個別セットの少なくともサブセットがリストされる。これにより、トレースユニットが所与の条件命令に関する所与の条件コードがすでに解決されたか、またはトレース中であるかを追跡するための便利な機構が提供される。また、条件付きで実行される複数の命令の現ステータスに関する効率的な追跡が可能になる。いくつかの実施形態において、トレースユニットのカレントプログラムステータスレジスタテーブルは、条件コードフラグの各サブセットに関する3種類の状態を格納するように構成される。しかし、代替的な実施形態において、トレース実行に関する特定の要件に応じ、各条件コードフラグの異なる数の状態を格納することも可能である。各条件コードフラグに関する3種類の状態が格納される実施形態において、その3種類の状態は、トレース済みtraced、トレース予定tobetraced、および未トレースnottracedを含む。これら3種類の状態は、条件非分岐命令のトレースに有用である。いくつかの実施形態において、上記の3種類の状態を追跡するためにインフライトテーブルおよび現CPSRテーブルが維持される。インフライトテーブルは、前記データ処理装置による出力時にどのフラグをトレースすべきかを示すものとして、各CPSRの各フラグに関する2つの状態を有し、現CPSRテーブルは、条件命令を条件命令トレースデータ項目としてトレースすべきかどうかを示すものとして、現CPSRの各フラグに関する2つの状態を格納する。当然のことながら、トレース回路は、特定の条件命令に関連した条件コードフラグを多数の異なる方法で追跡できるが、いくつかの実施形態において、トレース回路は、トレースユニット内部のカレントプログラムステータスレジスタテーブルを使用して、いつ条件結果トレースデータ項目が必要とされ/予期されるかを判断するとともに、どの条件コードフラグのセットをトレースすべきか追跡する。当然のことながら、データ処理装置によって生成され、トレース回路が受け取った命令観察インジケータと結果出力インジケータについて、評価済みの条件結果を対応する条件命令にリンクする多数の異なる方法のいずれかにより、その2つを関連付けることが可能である。しかし、いくつかの実施形態において、トレース入力インタフェースは、命令観察インジケータに対応する命令タグおよび結果出力インジケータに対応する結果タグをデータ処理装置から受け取る。いくつかの実施形態において、トレースユニットがデータ処理装置から受け取った命令タグおよび結果タグは、トレースユニットによって診断装置に出力される。しかし、他の実施形態において、トレース回路は、タグ-キー変換動作を実行するように構成される。これは、データ処理装置が出力した命令観察インジケータと関連付けられた命令タグを、命令観察インジケータに基づき、トレース回路が出力した条件命令トレースデータ項目に対応する命令キーに変換するものである。同様に、データ処理装置が生成し、結果出力インジケータと関連付けられた結果タグが、トレースユニットから診断装置に出力された条件結果トレースデータ項目に対応する結果キーに変換される。このタグ-キー変換動作は、トレース回路内部のカレントプログラムステータスレジスタテーブルに格納された状態に応じて実行される。このタグ-キー変換を使用して、既知の順序を有するキー、たとえば順次キーを生成することができ、これにより、圧縮の改善またはトレースの低減が可能になり、したがってトレース帯域幅が減少する。当然のことながら、トレース回路は、データ処理装置から受け取った命令観察インジケータと診断回路から出力された条件命令トレースデータ項目の間に1対1の対応関係が存在するように条件命令トレースデータ項目を出力することができうる。同様に、データ処理装置によって出力された結果出力インジケータとトレース回路によって出力された条件結果トレースデータ項目の間にも1対1の対応関係が存在しえる。しかし、いくつかの実施形態において、トレース回路は、受け取った命令観察インジケータに対応する条件命令トレースデータ項目の中の少なくとも1つの出力をバッファするように構成されたトレース圧縮回路を含む。このような構成が有用となる可能性が高いのは、診断装置がデータ処理装置によって実行されるプログラム命令のプログラムイメージを参照して、条件結果トレースデータ項目の中の対応する1つのトレースユニットによる出力から、条件命令の実行の発生すなわち、バッファされた条件命令およびトレースデータ項目の存在を推測できる場合である。これにより、トレース回路によって出力されて診断装置が受け取るトレースデータの量を減少させるための便利な機構が提供されるが、それによってトレース情報が失われることはない。診断装置は、トレースデータ項目がバッファされた条件命令実行の発生を容易に再構成する実行プログラム命令のイメージによることができるためである。当然ながら、トレース回路は、バッファされた条件命令トレースデータ項目に対応する結果キーの出力をバッファすることができうるが、いくつかの実施形態において、トレース回路は、バッファされた条件命令トレースデータ項目に関する結果キーの少なくとも1つを出力するように構成される。診断回路は、その出力された結果キーを使用して、バッファされた条件命令トレースデータ項目の出力を推測する。これにより、診断装置が維持するプログラムイメージと受け取った条件結果トレースデータ項目との関連付けを使用するとともに、バッファされた条件命令トレースデータ項目の存在を推測するための便利で信頼性の高い機構が提供される。対応する条件命令トレースデータ項目をすべての条件命令が有するわけではない。いくつかの条件命令トレースデータ項目は、直接出力されず、その代わりに条件結果トレースデータ項目によって推測される。このトレースプロトコル機能により、条件結果トレースデータ項目に対応するパケットの一部として、条件命令トレースデータ項目が効果的に出力される。当然ながら、トレース回路は、診断回路への出力以前にバッファされた関連トレースデータを有していたのがどの条件命令実行であるかを多数の異なる方法で追跡することができうる。しかし、いくつかの実施形態において、トレース回路は、受け取った命令観察インジケータについて、対応する条件命令トレースデータ項目のトレース回路による出力がバッファされたのはどれかを示すバッファリング記録を監視および維持するように構成される。いくつかの条件実行命令については、他の種類の条件実行命令と比較して、条件命令トレースデータ項目の出力のバッファリングがより適切な方法になりえる。どの命令観察インジケータについて対応する条件命令トレースデータ項目の出力がバッファされたかを示すバッファリング記録が維持されることにより、トレース回路にとって、条件命令トレースデータ項目のバッファリングが採用された場合の状況を管理しやすくなる。当然のことながら、バッファリング記録には、条件トレースデータ項目のバッファリングに関するさまざまな種類の情報を含めることができうる。しかし、いくつかの実施形態において、バッファリング記録は、直近に生成された条件命令トレースデータ項目および直近に出力された条件命令トレースデータ項目の記録を含む。これにより、トレース回路は、各条件結果トレースデータ項目について、対応する条件結果トレースデータ項目から黙示されimpliedうる条件命令トレースデータ項目がある場合にそれがどの条件命令トレースデータ項目かを判断することができる。バッファリング記録を有するいくつかの実施形態において、キー比較の実行時に条件命令トレースデータ項目がすでにバッファされていることが確認される。このキー比較は、当該の条件命令トレースデータ項目に対応するキーが前記の直近に出力された条件命令トレースデータ項目に対応するキーより大きいか、また、前記の直近に生成された条件命令トレースデータ項目に対応するキーより小さいもしくは等しいかを判定するものである。そのようないくつかの実施形態において、最大値に達した時点でキーの値がラップアラウンドし、キー比較はモジュロ演算に従う。タグ-キー変換動作が採用されるいくつかの実施形態において、この機能は、トレース回路またはトレースユニットがデータ処理装置から命令観察インジケータの中の1つを受け取る時点で、命令タグを使用してトレース回路内部のカレントプログラムステータスレジスタテーブルをルックアップすることにより、条件コードフラグの関連サブセットを格納するカレントプログラムステータスレジスタの中の適切な1つが特定されるようにするものである。これにより、特定の条件命令が実際に実行されるかどうかの判断に関係するのがどの条件コードフラグのセットかという追跡に関するカレントプログラムステータスレジスタと所与の条件命令の間の単純なマッピングが与えられる。命令タグを使用してカレントプログラムステータスレジスタテーブルをルックアップするそのような実施形態において、トレース回路は、カレントプログラムステータスレジスタテーブルに格納された条件コードマークの関連サブセットの中にトレース予定であることを示すものがない場合、任意の新たに生成された条件命令トレースデータ項目に新しいキー値を割り当てることにより、タグ-キー変換動作を実行する。他方、カレントプログラムステータスレジスタテーブルに現在格納されている1つ以上のサブセットの条件コードマークすなわち状態エントリがトレース予定であることを示している場合、新たに生成された条件命令トレースデータ項目に対し、直近に割り当てられたキー値を繰り返す反復キー値が割り当てられる。これにより、条件トレースデータ項目を対応する結果トレースデータ項目とマッチングする便利で効率的な方法が提供される。命令タグを使用してカレントプログラムステータスレジスタテーブルをルックアップするそのような実施形態において、トレース回路は、新しいキー値を有する条件命令トレースデータ項目の中の少なくとも1つの出力をバッファするように構成されたトレース圧縮回路を含む。その条件命令トレースデータ項目の発生は、トレースユニットからの条件結果トレースデータ項目の中の対応する1つの出力に基づき、診断装置によって推測可能である。一方、1つ以上の反復キー値に対応する条件命令トレースデータ項目はバッファされない。これにより、条件命令と関連の条件結果との間の関連付けを行うためのキーの使用について、継続的な信頼性が保証される。キー値と特定の圧縮された条件命令トレースデータ項目の間に一意の対応関係が存在する場合にのみ、条件命令トレースデータ項目の出力のバッファリングを使用するようにすれば、受け取った条件結果と推測された条件命令の間の誤った関連付けが防止される。そのようないくつかの実施形態において、上記トレース回路は、1つ以上の対応する条件命令トレースデータ項目の診断ツールによる推測が許されるかどうかというインジケーションとともに条件結果トレースデータ項目を診断ツールに供給するように構成される。診断ツールにとって、これは1つ以上の条件命令の存在を推測することが許される場合についての明確な指針となる。それらのバッファされた条件命令トレースデータ項目に対応する関連の結果キーをまだ出力していない条件命令トレースデータ項目をバッファするように構成されたいくつかの実施形態では、トレースユニットが分岐誤予測のインジケーションを受け取った場合、トレース回路によって実行されるタグ-キー変換動作に変更が加えられる。これにより、システムは、独立に生成された条件命令トレースデータ項目と条件結果トレースデータ項目の間で行われる関連付けの正確さを損なうことなく、分岐誤予測イベントに対処することができる。いくつかの実施形態では、対応する条件結果キーがトレース圧縮回路のバッファによって現在バッファされている条件命令キーと同じならば、1つ以上の条件命令トレースデータ項目を推測することが許される。当然のことながら、独立に出力された条件命令トレースデータ項目および条件結果トレースデータ項目を使用することにより、条件非分岐命令と同じ方法で条件分岐命令をトレースすることができうる。しかし、いくつかの実施形態において、トレース回路は、条件分岐または非条件分岐命令およびロード/ストア命令に関係したトレースユニットトレースデータのトレース入力インタフェースを受け取るように構成され、また、トレース回路は、対応する命令が成立の条件/非条件分岐またはロード/ストア命令のいずれかに該当することを示す第一の種類のウェイポイントインジケータを生成するとともに、対応する命令が不成立の条件分岐に該当することを示す第二の種類のウェイポイントインジケータを生成するように構成される。ウェイポイントを使用し、かつ条件非分岐命令のトレースとは異なる方法で条件分岐およびロード/ストア命令を独立にトレースできることにより、トレース機構の付加的な柔軟性が与えられる。いくつかの実施形態において、前記トレースユニットはトレース結果連結回路をさらに備える。これは、前記トレース回路によって生成された条件結果トレースデータ項目を受け取り、その条件結果トレースデータ項目の少なくともいくつかの圧縮表現を生成してその圧縮表現を格納し、その圧縮表現の少なくともいくつかを組み合わせて、トレースデータ項目の複数の圧縮表現が連結トレースデータ項目として出力されるようにする回路である。もっとも出現頻度の高い項目がより短いトークンによって表現されるように条件結果トレースデータ項目を圧縮表現またはトークンによって表現することは有利でありえる。この方法により、しばしば発生する項目がある場合、それらの項目を短いトークンで表現することができる。また、トレースデータ項目は特定のサイズを有するため、複数のトークンを組み合わせて1個の連結トレースデータ項目として出力されるようにすることができ、その結果、出力されるトレースデータは低減されるが、送信される情報が減少することはない。いくつかの実施形態において、前記トレース結果連結回路は、前記圧縮表現を生成および格納し、前記トレース結果連結回路によって圧縮できない条件結果トレースデータ項目を受け取った時はトレースデータ項目の格納済み圧縮表現を連結トレースデータ項目として出力した後、その圧縮できない条件結果トレースデータ項目を出力するように構成される。連結トレースデータ項目内部で圧縮表現を効果的に組み合わせることができるようにするためには、その中のいくつかが出力される前に格納されていれば好都合である。これにより、どのトークンを組み合わせるかというより広範な選択と、より効率的な組み合わせが可能になる。しかし、トークンによって表現できない項目を受け取り、続いて格納済み項目を出力することが必要とされる時には出力の順序を維持する必要があり、同様にバッファが一杯になった場合には、格納データを出力してバッファをクリアすることが必要とされる。いくつかの実施形態において、トレース回路は、条件分岐または非条件分岐命令およびロード/ストア命令に関係したトレースデータをトレース入力インタフェースから受け取るように構成され、また、トレース回路は、対応する命令が成立を予測される条件分岐、成立を予測される非条件分岐、またはロード/ストア命令のいずれかに該当することを示す第一の種類のウェイポイントインジケータを生成するとともに、対応する命令が不成立の条件分岐になることが予測されることを示す第二の種類のウェイポイントインジケータを生成するように構成される。条件分岐命令およびロード/ストア命令に関係したトレースデータを指示するためにウェイポイントインジケータを使用するそのような実施形態において、条件分岐命令以外の条件命令の実行を示すために命令観察インジケータがデータ処理装置によって使用される。また、トレース回路は、条件命令トレースデータ項目とともに、第一の種類のウェイポイントインジケータと第二の種類のウェイポイントインジケータの少なくとも一方の命令観察インジケータを同じトレースデータストリームに出力するように構成される。同じトレースデータストリームに条件命令トレースデータ項目とウェイポイントインジケータの両方を出力することにより、条件非分岐命令とその他の条件命令を区別するための便利な機構が提供される。さらに、条件分岐命令は典型的には条件非分岐命令よりもトレースが容易であるため、条件分岐命令のトレース専用の機構を備え、条件非分岐命令のトレース用に別のより適切な機構を備えることは合理的である。いくつかの実施形態において、条件分岐命令以外の条件命令の実行を示すために結果出力インジケータがデータ処理装置によって使用され、トレース回路は、結果出力インジケータに対応する条件結果トレースデータ項目および第一の種類のウェイポイントインジケータと第二の種類のウェイポイントインジケータの少なくとも一方を同じトレースデータストリームに出力するように構成される。いくつかの実施形態において、条件分岐命令の実行を示すために命令観察インジケータが前記データ処理装置によって使用され、条件分岐命令以外の条件命令の実行を示すために結果出力インジケータがデータ処理装置によって使用される。このとき、トレース回路は、命令観察インジケータに対応する条件命令トレースデータ項目、結果出力インジケータに対応する条件結果トレースデータ項目、および第一の種類のウェイポイントインジケータと第二の種類のウェイポイントインジケータの少なくとも一方を同じトレースデータストリームに出力するように構成される。そのようないくつかの実施形態において、トレース回路は、対応する命令キーが反復キー値である場合には条件分岐以外の条件命令に対応する第一の種類の条件命令トレースデータ項目を出力し、対応する命令キーが新しいキー値である場合には条件分岐以外の条件命令に対応する第二の種類の条件命令トレースデータ項目を出力するように構成される。いくつかの実施形態において、トレース回路は、対応する命令キーが反復キー値である場合には条件分岐に対応する第一の種類の条件命令トレースデータ項目を出力し、対応する命令キーが新しいキー値である場合には条件分岐に対応する第二の種類の条件命令トレースデータを出力するように構成される。当然のことながら、2つが個別に生成される場合と同じ方法で第一の種類のウェイポイントインジケータと第二の種類のウェイポイントインジケータをトレース回路によって独立に出力することができえ、あるいは、任意の種類のウェイポイントインジケータ同一または異なるものを任意の順序で連結してパケットを形成することができる。しかし、いくつかの実施形態において、トレース回路は、前記診断装置に出力するために複数のウェイポイントインジケータを連結して連結ウェイポイントインジケータを形成するように構成される。この連結ウェイポイントインジケータは、複数の第一の種類のウェイポイントインジケータ、複数の第二の種類のウェイポイントインジケータ、および異なる種類のウェイポイントインジケータの組み合わせの中の1つを含み、そのウェイポイントインジケータは、第一の種類のウェイポイントインジケータの少なくとも1つおよび[発明者Paul注記-1種類のみのウェイポイントインジケータの連結は先行する複数の第一/第二の種類に含まれるため、およびをまたはに変更しなかった]第二の種類のウェイポイントインジケータの少なくとも1つを含む。これにより、ウェイポイントインジケータに関連したトレース帯域幅を減少させることができ、それに伴ってトレースデータストリームの情報内容が損なわれることはない。同様に、いくつかの実施形態において、トレース回路は、複数の条件命令トレースデータ項目を連結して連結条件命令トレースデータ項目を形成し、複数の条件命令トレースデータ項目を出力する代わりにその連結条件命令トレースデータ項目を診断装置に出力するように構成される。先と同様、これにより、条件命令のトレースに関連したトレース回路によって出力されるトレースデータ量の低減が実現される一方、トレースデータストリームの全体的な情報内容が不当に損なわれることはない。そのようないくつかの実施形態において、連結条件命令トレースデータ項目は、連結されない場合に出力される複数の条件命令トレースデータ項目と比較して、トレース帯域幅が減少する。当然ながら、トレース回路は、連結ウェイポイントインジケータとはまったく別のトレースデータストリームに連結条件命令トレースデータ項目を出力することができうる。しかし、いくつかの実施形態において、トレース回路は、少なくとも1つの連結条件命令トレースデータ項目と少なくとも1つの連結ウェイポイントインジケータを同じトレースデータストリームに出力するように構成される。当然ながら、トレース回路は、各種命令に関連したトレースデータ出力の管理において、命令実行のキャンセル、または投機的に実行された、もしくは誤予測された命令の未完了について、多数の異なる方法で対処することができうる。しかし、いくつかの実施形態において、トレース回路は、再アライメントトレースデータ項目を出力するように構成される。そのようないくつかの実施形態において、再アライメントトレースデータ項目は、データ処理装置からの分岐誤予測インジケータの受け取りに応答して出力される。他の実施形態では、再アライメントトレースデータ項目は、データ処理装置からのアボートインジケータの受け取りに応答して出力される。他の実施形態において、再アライメントトレースデータ項目は、データ処理装置からの例外インジケータの受け取りに応答して出力される。他の実施形態では、再アライメントトレースデータ項目は、データ処理装置からのキャンセルインジケータの受け取りに応答して出力される。このように再アライメントトレースデータ項目を使用することにより、投機的実行および/または分岐誤予測を考慮し、かつ/あるいはアウトオブオーダー実行を考慮して診断装置が入力トレースデータのフィルタリングをいつ実行すべきか追跡できる便利で迅速な機構が提供される。条件命令観察インジケータの受け取りとは異なる可能性がある処理サイクルでデータ処理装置からの条件結果出力インジケータを受け取り、それに応答して条件命令トレースデータ項目および条件結果トレースデータ項目を独立に出力する本手法は、当然ながら、投機的またはアウトオブオーダー実行が可能であるか否かにかかわらず、任意のデータ処理装置に適用することができうる。しかし、いくつかの実施形態において、トレース回路は、1つ以上の投機的に実行されてトレースされた命令が取り消されたことを示すキャンセルインジケータをデータ処理装置から受け取るように構成され、また、トレース回路は、キャンセルインジケータに応答して再アライメントトレース項目を生成するように構成される。トレース回路によって出力される再アライメントトレース項目は、診断ツールに対し、取り消された命令に対応するのがどの条件命令トレースデータ項目であるかを通知して、それらの項目を破棄すべきであることを知らせる。トレースユニットが再アライメントトレースデータ項目を出力するように構成されるこのような実施形態において、トレース回路は、すでに受け取っているが再アライメントトレースデータ項目の出力以前にまだ出力されていない条件命令トレースデータ項目があれば、それらの項目を出力するように構成される。これにより、特定の条件命令トレースデータ項目のバッファリングを原因とするエラー、または異なる時点に生成された条件命令トレースデータ項目に起因するエラーが回避される。後者のエラーは、生成時点が再アライメントトレースデータ項目の出力時にまで及ぶ場合にそれらの項目が誤って連結されることによって生じるものである。いくつかの実施形態において、トレース回路は、すでに受け取っているが再アライメントトレースデータ項目の出力以前にまだ出力されていないウェイポイントトレースデータ項目があれば、それらの項目を出力するように構成される。トレース回路が前記トレース入力インタフェースから条件分岐命令およびロード/ストア命令に関係したトレースデータを受け取るように構成され、かつ対応する命令が条件分岐またはロード/ストア命令のいずれかに該当することを示すウェイポイントインジケータを生成するように構成されており、条件分岐命令以外の条件命令の実行を示すために命令観察インジケータがデータ処理装置によって使用され、前記トレース回路はまた、その命令観察インジケータと関連付けられた条件命令トレースデータ項目を出力するとともに、同じトレースデータストリームにウェイポイントインジケータを出力するように構成される、いくつかの実施形態において、このトレース回路は、前記分岐誤予測インジケータに応答して再アライメントトレースデータ項目を出力するように構成される。その再アライメントトレースデータ項目は、分岐誤予測インジケータを受け取った後であるが、その後に発生する条件命令トレースデータ項目またはウェイポイントインジケータの出力よりも前に出力されるものとする。しかし、分岐誤予測インジケータよりも前に再アライメントトレースデータ項目を出力することは有効な代替方式である。トレース回路がトレース入力インタフェースから条件分岐命令およびロード/ストア命令に関係したトレースデータを受け取るように構成され、かつ対応する命令が条件分岐またはロード/ストア命令のいずれかに該当することを示すウェイポイントインジケータを生成するように構成されており、条件分岐命令以外の条件命令の実行を示すために前記命令観察インジケータがデータ処理装置によって使用され、前記トレース回路はまた、その命令観察インジケータと関連付けられた条件命令トレースデータ項目およびウェイポイントインジケータを同じトレースデータストリームに出力するように構成される、他の実施形態において、このトレース回路は、前記例外インジケータに応答して再アライメントトレースデータ項目を出力するように構成される。その再アライメントトレースデータ項目は、例外インジケータを受け取った後であるが、その後に発生する条件命令トレースデータ項目またはウェイポイントインジケータの出力よりも前に出力されるものとする。いくつかの実施形態において、カレントプログラムステータスレジスタテーブルの内容に応じ、前記の少なくとも1つの命令観察インジケータのサブセットに対して条件命令トレースデータ項目が生成される。第二の態様によれば、本発明は、データ処理装置を提供し、データ処理装置は、プログラム命令の実行に応答してデータ処理動作を行うデータ処理回路、ならびに条件命令の実行を示す命令観察インジケータおよび前記データ処理回路による結果の出力を示す結果出力インジケータを前記条件命令の実行に応答してトレースユニットに独立に出力するように構成されたトレース出力インタフェースを備える。条件命令と関連付けられた命令観察インジケータを出力し、対応する結果出力インジケータを独立に出力できるデータ処理回路を提供することにより、条件命令の実行および対応する条件結果の出力の個別トレースが容易になる。これにより、条件非分岐命令などの条件命令の実行をトレースするための便利な機構が提供され、また条件命令の実行および対応する条件結果の独立したトレースが可能になることによってバッファリングの要求条件が低減される。データ処理装置のいくつかの実施形態において、命令観察インジケータは第一の処理サイクルに前記データ処理装置によって出力され、結果出力インジケータは第一の処理サイクルとは異なる第二の処理サイクルに前記データ処理装置によって出力される。そのようないくつかの実施形態において、データ処理回路は、一連のプログラム命令の投機的実行とアウトオブオーダー実行の少なくとも一方を実行するように構成される。条件命令の実行と条件結果の出力を個別にトレースすることは、そのようなシステムでは条件命令とそれに対応する条件結果の関連付けが複雑になることに起因した、投機的実行およびアウトオブオーダー実行の可能性がある場合にとくに有用である。第三の態様によれば、本発明は、条件命令トレースデータ項目および条件結果トレースデータ項目を含むトレースデータストリームを受け取るように構成された診断装置を提供する。受け取ったトレースデータストリームにおいて、その条件結果トレースデータ項目は条件命令トレースデータ項目とは別個のものである。前記診断装置は、このトレースデータストリームを生成するために、前記データ処理装置によって実行されるプログラム命令のイメージを参照して前記条件命令トレースデータ項目および条件結果トレースデータ項目を処理するように構成された診断回路を備える。この診断回路は、前記プログラム命令のイメージを使用して、前記データ処理装置によって実行されたプログラム命令を確定するように構成される。受け取ったトレースデータストリーム内で条件命令トレースデータ項目と別個の条件結果トレースデータ項目を受け取ることができる診断装置を備えることにより、条件命令のより効率的なトレースが可能になる。さらに、データ処理装置によって実行されるプログラム命令のイメージを使用して、診断回路がデータ処理装置によって実行されたプログラム命令を確定できる機能は、条件命令トレースデータ項目と条件結果トレースデータ項目の間に1対1の対応関係が存在しない場合でさえも有効である。その結果、プログラム命令のイメージを参照した条件結果トレースデータ項目の分析を通じて条件命令トレースデータ項目の存在を推断できる機能が診断装置に与えられることにより、圧縮トレースデータストリームを処理する診断装置の能力が向上する。本発明による診断装置のいくつかの実施形態において、診断装置は、トレースユニットから、各々がデータ処理装置によって分岐命令、ロード命令、ストア命令の中の1つが実行されたことを示すウェイポイントトレース項目をトレースデータストリームで受け取るように構成される。この診断装置が受け取るトレースデータストリームは、上記に加えて、条件命令トレースデータ項目および条件結果トレースデータ項目を含み、そのウェイポイントトレース項目および条件命令トレースデータ項目の受け取り順序は、対応するウェイポイント命令および条件命令の実行順序とは異なる。そのようないくつかの実施形態において、診断装置は、受け取ったウェイポイントトレース項目をバッファするためのウェイポイントバッファおよび受け取った条件命令トレース項目をバッファするための条件命令バッファを備える。これにより、診断装置がウェイポイントトレース項目および条件命令トレースデータ項目の適切な順序付けを解決し、受け取り順序と診断回路が分析するプログラム命令のイメージによって黙示される順序を一致させるための処理がより単純化される。そのようないくつかの実施形態において、診断回路は、プログラム命令イメージを参照してウェイポイントバッファ内のエントリと条件命令バッファ内のエントリを独立に分析することにより、受け取り順序を並べ替えて実行順序を得るように構成される。本手法による診断装置のいくつかの実施形態において、診断回路は、プログラムイメージに条件命令が現れ、しかしその時点で条件命令バッファ内に条件命令トレース項目が存在しない場合について、その条件トレース項目が条件命令バッファに現れるまでの間、プログラムイメージの対応する実行スレッドのさらなる処理を遅延させるように構成される。これにより、プログラムイメージ内の命令の順序と診断回路が受け取った情報の効率的な関連付けが保証される。また、プログラムイメージを参照して一部のトレース情報を再構成しなければならない圧縮トレースデータストリームについて、その受け取りおよび分析を適切に行うための柔軟性が診断回路に与えられる。第四の態様によれば、本発明は、データ処理装置から受け取った情報に基づいて、データ処理装置の処理活動を表すトレースデータの項目を生成する方法を提供する。この方法は、条件命令の実行を示す少なくとも1つの命令観察インジケータおよびその少なくとも1つの条件命令を実行した結果のデータ処理装置による出力を示す少なくとも1つの結果出力インジケータをデータ処理装置から受け取ることを含み、その少なくとも1つの命令観察インジケータおよび少なくとも1つの結果出力インジケータを処理することを含むとともに、その少なくとも1つの命令観察インジケータおよび少なくとも1つの結果出力インジケータから、対応する条件命令トレースデータ項目および条件結果トレースデータ項目を生成し、その条件命令トレースデータ項目および条件結果トレースデータ項目を独立に出力するように構成され、診断装置による条件命令および対応する条件結果の個別トレース分析を可能にするものである。第五の態様によれば、本発明は、データ処理装置の処理活動を表すトレースデータの項目をデータ処理装置内部で生成する方法を提供し、その方法は、プログラム命令の実行に応答してデータ処理動作を実行することと、条件命令の実行を示す命令観察インジケータおよびデータ処理回路による結果の出力を示す結果出力インジケータを、その条件命令の実行に応答してトレースユニットに独立に出力することを含む。第六の態様によれば、本発明は、データ処理装置によって生成されたトレースデータを処理するための診断方法を提供する。この方法は、条件命令トレースデータ項目および条件結果トレースデータ項目が含まれるトレースデータストリームを受け取ることを含み、受け取ったトレースデータストリーム内で、その条件結果トレースデータ項目は条件命令トレースデータ項目とは別個のものであり。この方法はまた、前記トレースデータストリームを生成するため、データ処理装置によって実行されるプログラム命令のイメージを参照して、前記条件命令トレースデータ項目および条件結果トレースデータ項目を処理することと、前記プログラム命令のイメージを使用して条件命令トレースデータ項目と条件結果トレースデータ項目の関連付けを行い、データ処理装置によって実行された処理ステップを確定することを含む。少なくとも本発明の実施形態のさらなる態様および特徴が添付の請求項に明示されている。従属請求項の特徴を独立請求項の特徴と適宜組み合わせることができ、また、請求項に明示的に記載された以外の組み合わせも可能である。以下、例示のみを目的として、添付図面に示す好適な実施形態を参照し、本発明をより詳しく説明する。図1は、本発明の1つの実施形態によるデータ処理システムを模式的に示したものである。このデータ処理システムは、命令メモリ90、中央処理ユニットCPU100、トレース回路内蔵の組み込みトレースマクロセルETM180、および組み込みトレースマクロセル180の出力を分析する診断回路196を備える。中央処理ユニット100は、命令フェッチユニット110、デコード段122を含むパイプライン120、レジスタセット130、算術論理ユニットALU140、カレントプログラムステータスレジスタCPSR150のセット、メモリインタフェース160、命令出力インタフェース172、および結果出力インタフェース174を備える。命令フェッチユニット110は、命令メモリ90に格納されたコンピュータプログラム92から命令をフェッチし、それらのフェッチされた命令をパイプライン120のデコード段122に供給する。図1に示したCPU中央処理ユニット100は、ARMパイプライン化データプロセッサである。パイプライン120により、プログラム命令の実行に関連した複数の演算を逐次的ではなく実質的に同時に処理することが可能になるため、命令のスループットが向上する。命令フェッチユニット110によって実行される命令フェッチ段は、パイプライン120の不可欠の一部とみなすことができる。パイプライン120のデコード段122は、直近にフェッチされた特定の命令の実行に使用されるべきレジスタバンク130内のレジスタをデコードするものである。CPU100は、プログラム命令の投機的実行およびアウトオブオーダー実行を処理するように構成される。デコード段に続いて、命令はパイプラインの実行段図示せずに進み、そこでレジスタバンク130のレジスタが読み出され、算術論理ユニット140を使用して命令が実行される。パイプライン120の最終段は、命令実行の結果をレジスタバンクに書き戻すものである。CPU100は、各々が固定長を有する複数のレジスタからなるレジスタバンク130を備える。レジスタバンク130は、プログラム命令の実行に使用するための汎用レジスタのセットを内蔵する。算術演算、比較、論理演算、データ移動などのARMデータ処理命令は、レジス上でのみ機能し、メモリ内では機能しないことに留意されたい。これは、ARMアーキテクチャがロード/ストアアーキテクチャであることによる。レジスタバンク130には、現在フェッチ中のプログラム命令をインデックスする専用プログラムカウンタ図示せずも内蔵されている。CPUに搭載されたその他のレジスタとして、専用カレントプログラムステータスレジスタCPSR150のセットおよび専用保存プログラムステータスレジスタSPSRのセット図示せずがある。図1の実施形態において、レジスタバンク130のレジスタR14はリンクレジスタであり、レジスタR1はプログラムカウンタである。特定の命令はカレントプログラムステータスレジスタCPSR150にアクセスすることができる。カレントプログラムステータスレジスタ150は、それぞれが4個の条件コードフラグZ、V、C、Mのセットを備える。これについては、次の図2を参照してより詳しく説明する。4個の条件コードフラグに加えて、CPSR150は、現プロセッサモードを定義するモードビットおよび割り込み無効化ビットをさらに備える。レジスタバンク130のリンクレジスタR14は、いわゆるリンク付き分岐BranchwithLinkプログラム命令を実行するためのリターンアドレスを格納する。このリターンアドレスは、R15内のプログラムカウンタから計算される。プログラムの実行フローのリンク付き分岐からのリターンを可能にするため、リンクレジスタR14の内容がプログラムカウンタレジスタR15にコピーされる。CPSRに格納されたフラグZ、V、CおよびMの現在値は、条件実行命令を実行すべきか決定するために使用される特定の条件に対応する。大部分の命令セットでは分岐命令のみを条件付きで実行することができるが、ARMアーキテクチャでは、多くのARM命令にCPU100がその命令を実行するかどうかを決定する条件フィールドが含まれているため、多くの命令を条件付きで実行することができる。CPSR150の内容は、命令の条件フィールドによって指定された条件が満たされたか評価するために使用される。任意の種類の命令を条件付きで実行できることにより、分岐なしの非常に高密度のインラインコードが可能になる。通常、分岐はパイプライン120を単純にストールさせるため、プログラムコードに多数の分岐命令を含める必要がなくなることにより、命令実行がより効率化される。いくつかの条件命令を実行しない指定された条件が満たされない場合ことの時間ペナルティは、典型的には、他の方式では必須とされる分岐命令またはサブルーチンコールのオーバーヘッドよりも小さい。命令を条件付きで実行する場合、その命令は、適切な条件とともに単純に後置ポストフィックスされる。たとえば、ARM命令セットにおいて、非条件付きADD命令はADDr0,rl,r2という形を取るが、ゼロフラグZのセット状態を条件としてこれを条件付きで実行する場合、この命令をADDEQr0,rl,r2に変更することができる。メモリインタフェース160は、メモリに対するデータのロードおよびストアに使用される。図1に示すように、パイプライン120のデコード段122からCPU100の命令出力インタフェース172まで、さらにETM180の命令入力インタフェース182までの間に第一の経路123が設けられる。典型的には、条件命令はプロセッサのデコード段122からトレースされ、対応する条件結果がALU140からトレースされる。第二の経路152は、CPU100のCPSR150をCPU100の結果出力インタフェース174に接続し、次いでETM180の結果入力インタフェース184に接続する。CPSR150をパイプライン120に接続する経路も存在する。すなわち、CPU100は条件命令のために1つの出力インタフェース172を有し、対応する条件結果174のために別の出力インタフェース174を有する。当然ながら、すべての命令が条件命令になるわけではないが、図1の実施形態は、とくに条件命令の実行およびトレースを中心として例示したものである。組み込みトレースマクロセル180は、CPU100に関するリアルタイムの命令トレースおよびデータトレースを提供するトレースユニットである。ETM180は、命令メモリ90に格納されたコンピュータプログラム92の全部または一部の実行を再構成するために診断回路196によって使用されるトレース情報を生成する。ETM180は、CPU100から条件命令観察インジケータを受け取るための命令インタフェース182と、CPU100から対応する条件結果インジケータを受け取るための結果インタフェース184の両方を備える。命令のインジケーションは、一般に、その命令が確実に実行されることを示すものではない。その情報はパイプラインの初期ステージに基づくものであり、当該命令が完全に実行されるかどうかは後続の多くの処理サイクルが完了するまで分からないためである。CPU100は、命令インタフェース172を介して条件命令観察インジケータを、トレース結果インタフェース174を介して条件結果出力インジケータを、それぞれ独立に出力する。所与の条件命令観察インジケータはCPU100の第一の処理サイクルで出力され、対応する条件結果出力インジケータはCPUの第二の異なる処理サイクルで出力される。したがって、トレース回路180の命令インタフェース182で条件命令観察インジケータを受け取るタイミングは、対応する条件結果出力インジケータを結果インタフェース184で受け取るタイミングとは異なる。CPU100は、条件命令観察インジケータと条件結果出力インジケータの両方を、当該の条件命令と関連付けられたCPSR150内の特定レジスタを識別する関連タグとともに出力する。各条件命令について、対応する条件結果出力インジケータには、診断回路196が条件命令の成功/失敗ステータスを判定するためのペイロードが入る。このペイロードは、次のいずれかである1.成功/失敗の結果2.部分的CPSR値3.完全CPSR値ただし、部分的CPSR値を出力しない実装もある4.その他の出力すべての条件命令が対応トレース出力を有するわけではなく、条件命令のサブセットのみが対応トレース出力条件結果出力インジケータを有することに留意されたい。所与の条件命令に対応して命令観察インジケータがCPU命令インタフェース172によって出力される場合には、ETM180がその条件命令に関係したいわゆるcアトムを生成する。このcアトムは、当該条件命令のトレース出力CPU100によって出力される命令観察インジケータに対応するものである。対応する条件結果出力インジケータがCPUの結果出力インタフェース174を介して結果インタフェース184に出力された時点で、これがcリザルトになる。したがって、ETM命令インタフェース182は、条件命令観察インジケータおよびそれに対応するタグ常時ではないが、典型的には関連のCPSR150レジスタを識別するを受け取り、ETM結果インタフェース184は、条件結果出力インジケータおよびそれに対応するタグを受け取る。ETM180は命令キー変換回路186を備える。この命令キー変換回路186は、ETM命令インタフェース182から入力を受け取り、条件命令観察インジケータおよび対応タグをcアトムに変換するように構成される。同様にETM180は結果キー変換回路188を備え、この結果キー変換回路188は、ETM結果インタフェース184に接続されており、結果インタフェース184から受け取った条件結果出力インジケータおよび対応タグをcリザルトおよび対応キーに変換するように構成される。ETM命令インタフェース182が受け取る条件命令観察インジケータは、CPUの関連CPSRレジスタを表すタグと、EQ相等、MIマイナスまたはLTより小などの条件種別の両方を含む。ETM結果インタフェース184を介して受け取られる条件結果出力インジケータは、関連タグ先と同様、通常はCPU100の関連CPSRレジスタを表すおよび結果ペイロードを含む。どの命令観察インジケータcアトムがどの結果出力インジケータcリザルトに対応するかを追跡するために、タグシステムがCPU100によって使用される。命令キー変換回路186および結果キー変換回路188は、コアタグによってインデックスされたトレースキーのテーブルを使用することにより、コアタグを既定の順序に従ったトレースキーに変換する。後で条件結果出力インジケータが評価される時点でトレースキーの衝突の可能性があるため、この問題を解決するために特殊キーが使用される。キーの名前を順次的になるように変更すると、次の順次キーが以前の、結果出力インジケータcリザルトがまだ出力されていない命令実行インジケータcアトムと同じ値になる可能性がある。この場合、順次キーを使用することにより、異なる命令実行インジケータに対して同じキーを有する2つの結果出力インジケータが生成されることになるため、順次キーは使用されない。その代わりに、順次キーとして使用されることが絶対にない値を有する特殊キーが使用される。特殊キーとタグの間には1:1の対応関係がある。たとえば、8個のタグがある場合、16個の順次キーおよび8個の特殊キーが存在しえる。命令キー変換回路186の出力は、第一のトレース生成回路190に供給され、そこで入力cアトムおよび対応キーが命令トレースデータのパケットに変換される。同様に、結果キー変換回路188は、cリザルトおよび対応キーをトレース生成回路192の第二のセットに供給し、そこで条件結果トレースパケットが出力として生成される。条件命令トレースパケットパケット化されたcアトムおよび関連キーを含むと条件結果トレースパケットパケット化されたcリザルトおよび対応キーを含むの両方がFIFO194に出力されて格納される。FIFO194に格納されたデータは、診断回路196に供給される。2つのキー変換回路186、188により、一種のリネーム処理でコアタグ条件命令および結果のための関連CPSRレジスタを識別するがトレース回路キーに効果的に変換される。これについては、いくつかの具体例とともに、あとでより詳しく説明する。診断回路196は、受け取ったトレースデータを使用してCPU100内の実行イベントを再構成する。それを行うために、診断回路196はコンピュータプログラムイメージ199にアクセスすることができる。これはCPU100が命令を実行するコンピュータプログラム92の複製に相当するものである。このプログラムイメージ199を使用することにより、診断回路は、プログラムコードを分析して、たとえば、命令実行のシーケンス内のどこで分岐命令が発生するかを判断することができる。診断回路196は、トレースデータを受け取ると、条件命令トレースデータCPU100によって出力される命令観察インジケータに対応するをcアトムFIFO197に格納し、とくに条件分岐命令に関係したトレースデータおよび条件ロード/ストア命令をウェイポイントFIFO198に格納する。後述のように、cアトムは条件分岐を除くすべての条件命令をトレースするために使用され、ウェイポイントは条件分岐または無条件ロード/ストア命令をトレースするために使用される。しかし、場合によっては、たとえば条件ロード/ストアに関して、1個の命令がウェイポイントとcアトムの両方になる。図1に示すように、ETM180は対応するCPSRテーブル193を備え、診断回路196もCPSRテーブル200を備える。これら2つのCPSRテーブル193、200は、命令がアウトオブオーダーで実行された時にどのCPSR結果をトレースすべきか追跡するために使用される。状況によっては、1個のフラグ設定命令を追跡するために複数のCPSR値がトレースされる。例示CPSRテーブル193の詳細を図2に示す。CPSRテーブル193図2参照には、プロセッサによって使用される条件コードフラグではなく、CPSR状態エントリすなわちCPSRフラグマークが入ることに留意されたい。図2に示すように、CPSRテーブル193は、各CPSR条件コードフラグに関係した2ビット3ステート値を格納するように構成される。4個のCPSR条件フラグは、Zフラグ、Vフラグ、CフラグおよびNフラグである。ZフラグはALUフラグからのゼロ結果を示し、Vフラグは命令実行中にALU演算オーバーフローが発生したことを示し、CフラグはALU演算によってキャリーが生じ、たとえばその結果がレジスタ幅を超えるビット数になったことを示し、NフラグはALUフラグからの負の結果マイナス符号を示す。図2のCPSRテーブル193には、以下に示す3種類の状態に対応するマーカーがある。1.ビット値00-トレースおよびマーキングを未実行2.ビット値01-トレースおよびマーキングを実行予定3.ビット値11-トレースおよびマーキングを実行済みETMのCPSRテーブル193に格納された状態は、命令キー変換回路186および結果キー変換回路188により、シーケンス内の次のトレースキーをいつ生成してタグ-キー変換プロセスに適用すべきか判断するために使用される。前述のように、条件命令と条件結果の両方を伴って出力されるコアタグは、典型的には、特定の命令によって使用される特定のCPSRを識別する。この例では、CPSRA、CPSRB、CPSRC、CPSRD、CPSRE、CPSRFという6種類のCPSRレジスタがある。さらに、これら6個のCPSRレジスタの各々に対して4種類のフラグ状態Z、V、CまたはNがあり、その中の1つが指定される。CPSRテーブルには、命令トレースデータの生成時に使用されるキー値も格納される。結果トレースデータが生成される時点で、当該キーを使用すべきか判断するためにテーブルがルックアップされる。図3Aは、ADDEQ、ADDNE、ADDVSという3種類の条件加算命令を含む4個のプログラム命令のシーケンスのインオーダー実行を模式的に示した表である。図3A~図3Dの例は、CPSRテーブル内で2種類のCPSR条件コードフラグすなわちフラグマークがトレースされ、CPSRテーブルには各CPSR値に関係した1個の状態のみが格納されることを示す。図3Aの表において、実行される第一の命令は比較命令CMPであり、その結果、すべてのマーカービットがゼロにクリアされる。これは、後続の条件命令がその比較演算の結果に依存するためである。すなわち、後続の3個の条件命令が実行されるかどうかはCMPの実行結果に依存する。1番目の条件命令はADDEQ命令であり、これは上記の比較結果が完全な相等になるか否かに依存する加算演算である。この条件命令はCPSRのZフラグを使用するため、加算ADDEQ命令の実行時にCPSRテーブル内のZマーカーが1にセットされる。したがって、Zフラグを含むCPSRがトレースされる。次にADDNE命令が実行される。ADDNE命令は、上記比較の結果が不等である場合にのみ実行される加算演算であるため、同じくZフラグを使用する。したがって、CPU100によるADDNE命令の実行時に図1参照マーカービットは変更されない。最後にADDVS命令が実行される。ADDVS命令はオーバーフローに対応するCPSRのVフラグを使用し、この命令の実行時にVマーカーが1にセットされ、Zマーカーはセット状態のままになる。したがって、図3Aの4個の命令の実行終了時に、VフラグとZフラグの両方を含む状態でCPSR150がトレースされる。図3B、図3Cおよび図3Dは、4個の命令が図3Aの表とまったく同じシーケンスで実行され、ただしインオーダーではなくアウトオブオーダーで実行された場合に、どのCPSR値がトレースされ、どのcリザルトキーが生成されるかを示した表である。この場合、実行するCPU100のタイミングおよび機能に応じて、3種類の結果がありえる。図3Bの表では、条件結果がすぐに与えられるため、2番目のcアトムに対して異なるトレースキーが使用される。図3Bの場合、各命令が条件付きで実行されるかどうかは、すべて同じ比較命令CMP4個のシーケンスの中の最初の命令の結果に依存するため、3種類の加算条件命令はいずれも同じ条件命令タグを有する。1番目の条件加算命令ADDEQが現れると、これはZフラグに依存するため、その時点でcアトムキー0が生成される。後続のADDNE命令については、先行する命令と同じZフラグに依存するため、新しいcアトムキーが生成されることはない。しかし、異なるCPSRフラグ、すなわちVフラグに依存するADDVS命令には、2番目のcアトムキー1が割り当てられる。1番目の条件命令ADDEQ命令に関する条件結果は、図3Bの表に示すようにADDEQのデコード直後のサイクルで利用可能になり、その条件結果タグAはcリザルトキー0に変換されており、そのペイロードはZフラグである。ADDVS命令の条件結果は、その命令のデコード直後のサイクルで利用可能になり、値1を有する2番目のcリザルトキーおよびVフラグのペイロードが生成されている。図3Cは、条件結果の評価に図3Bの場合よりも長い時間を要するCPU100の能力によるアウトオブオーダープロセッサでの図3Aと同じ4個の命令の実行を示す。この場合、1番目の条件結果タグが出力されるのは、ADDVS命令4個のシーケンス内の4番目の命令のデコード後のサイクルになる。したがって、この場合、ADDEQ命令Zフラグを使用に対応するcアトムとADDVS命令Vフラグを使用に対応するcアトムの両方について、同じcリザルトキー0が使用される。その2つがZフラグとVフラグの両方のペイロードを有する1個のcリザルトキー0を共有するためである。図3Dの表は、図3Aの命令シーケンスに関するアウトオブオーダー実行結果の最後の例である。この場合、4個CMP、ADDEQ、ADDNE、ADDVSのシーケンスから外れた後続の2つの命令CMPおよびSUBEQがCPU100によって完全に解決された後に、アウトオブオーダープロセッサにおいて条件結果が利用可能になる。SUBEQ命令の条件命令タグがBであるのに対し、先行する3個の条件命令ADDEQ、ADDNE、ADDVSの条件命令タグはAである。これは、それら3個の命令の依存する条件が1番目のCMPであるのに対し、SUBEQの依存する条件が2番目のCMPであることによる。図から理解されるように、条件結果タグBは条件結果タグAに先行し、したがって、条件命令タグAを有する3個の先行する条件命令の解決よりも前に、条件命令SUBEQが完全に解決される。注意すべきは、CMP命令がデコードされるこの命令に他の条件命令が依存するたびにCPSRに変化が生じるため、それに対応する変化が条件命令タグに生じることである。したがって、図3Dの表において、条件命令タグAの結果は、条件命令タグBの条件結果よりも後にすなわち後続の処理サイクルで到着する。条件結果BのペイロードはZフラグであるのに対し、条件結果タグAのペイロードはZフラグとVフラグの両方である。本発明の実施形態による条件命令と条件結果の分離トレースによってトレース結果のスループット向上が可能になる。これは図3Dから明らかであり、その理由として、これまで知られているシステムでは、Aでタグ付けされた条件結果の出力が準備できるまでの間、図3Dの表における5個の条件命令のすべてに関連したトレースデータ項目をバッファしておかなければならない。それに対し、本発明の実施形態によれば、cアトムと対応キーを異なる処理サイクルで出力できるため、4個の命令すべてに対応するcアトムおよびキーがその生成時に出力可能となる。また、ETMのCPSRテーブル193を使用して、cリザルトが必要とされる時点受け取ったcアトムに対応するおよびトレースすべきCPSRフラグが確定される。CPU100が部分的CPSR値を計算することができ、たとえCPSRフラグのすべてが知られていない場合でも条件命令を解決できるように構成されている時、上記の手法はトレースされるフラグ値の数を減少させるのに役立つ。部分的CPSR結果は、CPSR内のすべてのフラグが知られていない場合に該当する。たとえば、ADDEQ命令を解決するために必要とされるのはZフラグだけであるため、その条件命令の結果を解決するには、Zフラグが入っている部分的CPSR結果で十分である。図3B、図3Cおよび図3Dの例におけるcリザルトキー列およびcアトムキー列から理解されるように、場合によってはシーケンス内の次のトレースキー値が使用され、他の場合には複数の異なる条件命令に対応して同じトレースキー値が使用される。シーケンス内の次のトレースキーをいつ使用すべきか判断するために、CPSRテーブルに格納された状態が使用される。ある命令に対応してcアトムが生成されるとCPU100による命令実行が開始されたことを示す、条件命令タグをインデックスとしてCPSRのフラグ状態がルックアップされる。これは、当該の条件命令に関連した特定のCPSRがそのタグによって識別されるためである。図22および図25を参照して後述するように、CPSRのマークされたビットがルックアップされて使用される。各CPSRについて異なるビットセットがある。ここで図3B、図3Cおよび図3Dの第一の実施形態に戻ると、ETMのCPSRテーブル193は、1未トレース、2トレース予定、3トレース済み、という3つの状態を格納する。この実施形態において、シーケンス内の次のトレースキーcアトムキーをいつ使用すべきか判断するために、CPSRテーブル193に格納された状態が使用され、また、ETM命令キー変換回路186によるcアトムの生成時に、対応する条件命令タグCPUによって生成されたものをインデックスとしてフラグ状態がルックアップされる。トレースキーの割り当て方法を下表に要約する。この表に示すように、ETMのCPSRテーブル193内でトレース予定とされているフラグ状態値が1つもなければ、シーケンス内の次のトレースキー値cアトムキーが割り当てられる。それに対し、cアトムタグに対応する特定CPSRの1つ以上のフラグ状態がトレース予定になっていれば、直近のcアトムの場合と同じトレースキー値cアトムキーが使用される。図4は、図1のCPSR150に関する3ステートCPSR条件フラグを模式的に示したステートマシンである。最初にシステムがリセットされ、次いでステージ410において所与のCPSR条件フラグが未トレース状態に設定される。所与のCPSRに対応し、かつ関連CPSR条件フラグを必要とする条件アトムがトレースされる場合には、CPSR条件フラグが未トレース状態410からトレース予定状態420に変化する。CPSR条件フラグは、所与のCPSRに対応し、かつ関連フラグを含む条件結果がトレースされるまでの間、この状態を継続して、その終了時に所与のCPSR条件フラグがトレース済み状態430に変化する。CPSR条件フラグは、所与のCPSRに対応するフラグ設定命令が観察されるまでの間、このトレース済み状態430を継続して、その終了時にトレース済み状態430から未トレース状態410に遷移する。図5の表に上記図3Cの例を再掲する。すなわち、3個の条件命令ADDEQ、ADDNE、ADDVSが実行され、3番目の条件命令のデコード後に条件結果が評価される場合である。図5は図4の3ステートシステムの例であり、条件命令タグ、cアトムキーおよび条件結果タグ図3Cにも含まれるに加えて、条件結果ペイロード右から2番目の列、各命令デコード段に対応するCPSRテーブルアクション右端の列が含まれる。図5の表の項目に示すように、CMP命令その実行結果によって後続の3個の条件命令に付随する条件が満たされたか判定されるのデコード時に、タグAのすべての状態が未トレースに設定される。次に、ADDEQ命令のデコード時に、条件命令タグAが出力されるとともにcアトムキー0が出力され、続いてETMのCPSRテーブル193においてCPSRAがルックアップされる図2参照。また、表に示すように、4個のフラグはいずれもトレース予定ではないため、新しいグループが開始される。cアトムが必要とされるのは、タグAに関するフラグZの状態CPSRAが未トレースに設定されていたためである。次に、条件命令ADDEQがデコードされることにより、タグAに関するフラグZの状態がトレース予定として設定される。ADDNE命令のデコードADDEQのデコードに続くに対し、この命令は、ADDEQ命令に付随する条件相等と反対の条件不等に基づいて条件付きで実行されるため、条件コードフラグZにも依存することになる。条件コードフラグZは、先行するデコード段ですでにタグ付けされている。したがって、タグAに関するフラグZの状態はすでにトレース予定に設定されており、新しいcアトムは必要ない。前述のように、新しいトレースキー値が使用されるのは、関連CPSRのフラグがいずれもトレース予定に設定されていない場合に限られる。ADDVS命令がデコード段にある時、Zフラグはすでにトレース予定に設定されており、新しいグループはまだ開始されていないため、追加的なcアトムキー0が出力される。しかし、この場合にADDNE命令の場合と異なりcアトムが必要とされるのは、タグ付けされたCPSRAに関するフラグVの状態がそれ以前にトレース予定に設定されていないためである。したがって、CPSRAに関するフラグVの状態図2参照がトレース予定に設定される。次に、フラグZは有効であるがフラグVは有効でないということがCPU100によって示される。しかし、CPSRテーブル193を見れば、先行する3個の条件命令ADDEQ、ADDNE、ADDVSを解決するにはZフラグとVフラグの両方が必要であることが確認される。したがって、その時点ではまだ条件結果を完全にトレースすることはできない。条件結果タグAの出力によって示されるものとして、ZフラグとVフラグの両方の条件結果ペイロードを有する条件結果が利用可能になると、ZフラグとVフラグの両方が有効であることがCPU100によって示される。ETMのCPSRテーブル193から、これら2つのフラグが条件結果のトレースに必要なすべてであることが確認される。したがって、タグACPSRAに関するZフラグおよびVフラグがトレース済み状態に設定される。条件結果をトレースするためにはZフラグとVフラグの両方が有効であることが必要であることに留意されたい。CPU100によってキャンセル命令が発行された後にcアトムとcリザルトの正しい関連付けが達成されるようにするためには、ETMのCPSRテーブル193のルックアップが必要である。図6Aおよび図6Bは、図4の3ステートCPSRフラグシステムに関して新しいグループすなわち新しいcアトムキーを開始すべきかどうかの例を与える表である。図6Aの表は、条件命令タグBの更新が生じても、命令キャンセルイベントの直後のADDNE命令に対して新しいcアトムキーが生成されてはならない場合を模式的に示したものである。図6Aの表において、ADDEQ命令がデコード段にある時、タグAに関するZビットフラグCPSRAはトレース予定に設定される。分岐命令に続く2番目のCMP命令図6Aの表の3番目の命令により、異なるCPSRすなわちCPSRBが得られるため、次の条件命令SUBEQに対して条件命令タグBが割り当てられる。さらに、CPSRBに対応するフラグ状態の中で現在トレース予定に設定されているものはないため、SUBEQに対して異なるcアトムキーが生成される。SUBEQ命令のデコードの後続サイクルで条件命令タグBに関する条件結果タグが出力されるため、SUBEQのcアトムキー1と一致するcリザルトキー1が出力される。次に図6Aにおいて、関連のcリザルトキーおよびcアトムキー1がまだトレースストリーム内に存在しているにもかかわらず、命令CMPおよびSUBEQが両方取り消される。しかし、ADDNE命令がデコードされると、条件命令タグが値A前にADDEQによって使用されていたに戻り、cアトムキー0新規キーではないが必要とされる。条件命令タグAに対応する直近の比較演算CMPは取り消されておらず、上記ADDNE命令がその比較演算CMPとまだ関連付けられているためである。図6Bは、図6Aの状況とは対照的に、条件命令のキャンセル後に同じcアトムキーを使用することがつねに正しいとは限らないことを示す代替例である。図6Bの例において、ADDNE命令誤予測分岐のキャンセル後にデコードされるが新しいキーを開始しなかった場合、その結果条件結果タグBに対応するがADDNE命令とADDEQ命令の両方に適用されることになる。2つは異なるCMP命令と関連付けられているため、これは誤りである。図6Bの表と図6Aの表の違いは、図6Bの表の場合、2番目のCMPが取り消されていないことである分岐命令およびキャンセル要求を受け取る前の分岐後の命令のみが取り消される。したがって、この場合には、新しい条件命令タグおよび新しいcアトムキーが必要とされる。図6Bでは、分岐命令の後に非条件命令SUBがある。図3A~図3Dを参照して説明した手法に対する代替的手法を図6C、図6Dおよび図6Eで説明する。この代替的手法では2ステートCPSRテーブルが維持され、その代替的実施形態によれば、現CPSRがテーブル内の他のCPSRとは異なる方法で扱われる。図2で説明したように、各々が4種類の条件フラグ状態の関連セットを有する6個の異なるCPSR合計24個の異なるテーブルエントリが存在する。図6C~図6Eの代替的実施形態において、現CPSRは、そのCPSRに関する各フラグについて2つの状態のみを必要とするように扱われる。しかし、これら2つの状態が意味する内容は異なる。図6Cおよび図6Dは、2ステートCPSRテーブル現CPSRに関する各フラグについて1ビットのみおよびインフライトビット全CPSRの各フラグについて1ビットが図4の状態図の3つの状態とどのように対応するかを示す。図6Eは、インフライトビットの使用例である。CPU100が部分的CPSR結果を提示できず、完全CPSR結果しか提示できない場合、各フラグの状態をCPSRテーブルに格納する必要はない。その代わりに、各CPSRについて1ビットを格納することができる。これは、いずれかのCPSRがトレース予定すなわち結果がCPUパイプライン120内でインフライト状態であるかを示す。図6C~図6Eの実施形態CPSRテーブルの図2の実施形態とは異なるにおいて、各CPSRタグは、その後のcリザルトが予期されるかどうかを示す単一ビットインフライトビットと呼ぶを有する。インフライト値とともに各CPSRフラグについて2つの状態を有する現CPSRのCPSRテーブルは、図4の状態図の3つの状態に対応する。図6Cの表は、これらのインフライトビットがどのように使用および維持されるかを説明したものである。ETM命令キー変換回路186によって出力されるcアトムに応答して、条件命令タグ図6CのRHタグに対応するインフライトビットがセットされる。第二のトレース生成回路192がETM結果キー変換回路188から条件結果を受け取った場合、条件結果タグ図6CのLHタグに対応するインフライトビットがセットされていれば、FIFO194を介してトレースデータストリームにcリザルトが出力され、続いてビットがクリアされる。インフライトビットは、タグが同じであるすなわち同じCPSRに対応する以前のcアトムについて以前のcリザルトをいつ受け取ったかを判断するために使用される。ある命令に対応してcアトムが生成されると、関連の条件命令トレースデータ項目タグCPU100によって出力されたものをインデックスとしてインフライトビットがルックアップされる。図6Dの表は、この実施形態においてETM命令キー変換回路186図1参照がどのようにトレースキーを生成するかを示す。具体的には、インフライトビット値が値0結果がインフライトでないことを意味するを有する場合、次のトレースキー値が使用される。他方、インフライトビット値が値1条件結果がインフライトであることを示すを有する場合は、直近のcアトムに関して使用されたものと同じトレースキー値が使用される。したがって、図4の状態図の3つの状態が次の2つのデータストアを介して追跡される。1全CPSRの全フラグについて1ビット2ステートを有する図6Dのインフライトテーブル。これらは、データ処理装置による出力時にフラグをトレースする必要があるか対応する以前の条件命令の結果を再構成するために当該結果のどのビットが必要かを示す。2条件命令がcアトムとしてトレースされるかどうかを示すものとして、1つのCPSR現CPSRの各フラグについて2つの状態マークを有する現CPSRのCPSRテーブル。図6Eの表は、図3Aの例を再掲し、図6Cおよび図6Dのルールを実装した場合にインフライトタグがどのように設定されるかを示したものである。図6Eの例において、3個の条件命令ADDEQ、ADDNEおよびADDVSに対応する条件結果は、命令ADDVSがデコードされた後に利用可能になる図3Cの場合と同様。命令ADDEQのデコードと同じ行に対応する最初のcアトムがトレース中に出力されると図6Eの表、タグAのインフライトビットがルックアップされ、結果が0インフライトではないであることが確認される。これにより、新しいトレースキー値とともに新しいグループが開始され、cアトムキー=0になる。デコード中の命令ADDVSと同じステージで次のcアトムが生成されると、命令ADDEQおよびADDVSが同じ条件命令タグを共有しているため、条件命令タグAのインフライトビットが再びルックアップされる。この場合、結果は1になりインフライトを示す、新しいグループは開始されず、直近のcアトムの場合と同じトレースキー値が使用される。したがって、命令ADDVSのcアトムキーも0になる。ADDVSのデコード後のステージで条件結果タグAが出力されると、タグAのインフライトビットがクリアされる。このビットクリアは、条件命令タグAに対応する結果が解決され、もはやコアパイプライン内でインフライトではないことを示す。図7~図11は、条件分岐命令が同じトレースストリーム内の他の条件命令から分離され、若干異なる形で扱われる仕組みを模式的に示したものである。具体的には、条件分岐命令および無条件ロード/ストア命令はいわゆるウェイポイントを使用してトレースされる一方、他のすべての条件命令は上述のようなcアトムを使用してトレースされる。条件分岐をトレースし、どの分岐が成立/不成立かを示すためにウェイポイントを使用することが知られている。これについては、ARMLimited社に対して付与された米国特許第7,707,394号に詳しく説明されている。条件分岐命令だけでなく、ロード/ストア命令もウェイポイントを使用して表すことができる。米国特許第7,707,394号には、ウェイポイントのシーケンスを検出してトレースデータストリームにまとめて出力することにより、1個のトレースデータ項目で複数のウェイポイントを表す方法が説明されている。本発明の実施形態により、上述のCPU100によってタグがcアトム条件命令観察インジケータと関連付けられる方法と同様の方法でコアタグをウェイポイントと関連付けることができる。これらのコアタグは、ETMによって名前が変更され、所定の順序に従うトレースキーを形成する。トレースキーが所定の順序に従うため、キーをウェイポイントとともに出力するための厳しい要件は存在しない。実際、トレースデータストリームに出力されるウェイポイントは、図7Aの表に示すように2つの値のいずれかでラベル付けされる。この表に示すように、ラベルEのウェイポイントは、a当該プログラム命令が観察された時に分岐が実際に成立した条件分岐命令、またはbロード/ストア命令のいずれかに対応する。これらのEウェイポイントに対して、トレースキーは1だけインクリメントされる。しかし、プログラムの観察時に実際に成立しなかった条件分岐命令については、トレースキーが1だけインクリメントされるとともに、これらのウェイポイントがNでラベル付けされる。図1~図6に関する上記の説明では、すべての条件命令についてcアトムの出力が説明されている。しかし、いくつかの実施形態では、すべての条件命令に対してcアトムを出力するのではなく、条件分岐命令だけについて異なる扱いがなされる。具体的には、cアトムを出力して条件分岐命令の実行をフラグ表示する代わりに、図7Aの表に示すようなEまたはNの関連ステータスとともにウェイポイントがトレースデータストリームに出力される。上述のように、複数のウェイポイントを圧縮すなわち連結して、1個のトレースデータ出力項目を形成することができ、また、同様の方法で、複数のcアトムを圧縮することができる。上述のように、cアトムもETM180におけるシーケンス検出およびタグ-キー変換の対象となる。しかし、cアトムは、重要な点でウェイポイントとは異なる。具体的には、ウェイポイントのシーケンスは、キーがつねに1だけインクリメントされるが、cアトムの場合、cアトムキーは時々インクリメントされるだけであり、それ以外はまったくインクリメントされない。具体的には、特定のタグ付きCPSR図2のA、B、C、D、EまたはFの1つ以上のCPSRフラグ状態がトレース予定のときには、シーケンス内の直近のcアトムと同じトレースキー値が使用され、その場合、cアトムキーはインクリメントされない。図7Bの表に示すように、2種類のcアトムを使用して、これをエンコードすることができる。図7Bの表に示すように、条件命令条件分岐を除くは、その特徴によって2種類に分けられる。すなわち、前のcアトムと後のcアトムの間でトレースキーcリザルトキーが変化しない条件命令条件分岐以外はP0と表示され、トレースキーcリザルトキーが1だけインクリメントされる条件命令条件分岐以外はP1と表示される。したがって、たとえば、cアトムのシーケンスであるcリザルトキーが、0、1、2、2、3、4、5、5、6であると仮定すれば、これをP1、P1、P1、P0、P1、P1、P1、P0、P1のようにエンコードすることができる。明らかなこととして、cアトムキーがインクリメントされないすなわち2個の連続する2および2個の連続する5があるシーケンス内の位置では、同じトレースキーの2番目の反復の時点でP0が出力され、それ以外はP1が出力される。これらのP1およびP0トレース要素をウェイポイントに関するE要素およびN要素と同様の方法で圧縮すなわち連結することができる。EおよびNウェイポイントの圧縮は以前に知られており、米国特許第7,707,394号に詳しく説明されている。本発明の実施形態によれば、トレース回路が、cアトム、条件命令に関するcリザルト、およびウェイポイントを異なる処理サイクルで出力することができるということは、cアトムを独立して出力し、その後にキーシステムを使用して対応cリザルトと関連付けできるということを意味する。これにより、cアトムをcリザルトおよびウェイポイントから独立して圧縮しながら、同じトレースデータストリーム内で共に出力することが可能になる。その結果、ウェイポイント、cアトム、およびcリザルトの独立した圧縮を可能にすることによって効率改善が実現される。図7Cの表は、CPU100内の実行イベントに基づき、ETM180のトレース回路によって生成されるウェイポイントイベントおよびcアトムを示す。表中の連続する線は、連続的かつ順次的な処理サイクルを表す。図7Cの表の右端の列は、対応するトレースデータ出力を示す。トレースデータ出力項目の生成順序は、表の連続行によって示される。1番目のトレース出力は、圧縮されたウェイポイントトレース出力EEENになる。注目すべきは、これが3個のEの最後とNの間のcアトムP1が生成された後に出力されることである。次のトレースデータ出力は、圧縮されたcアトムP111に対応し、先と同様、これらは、出力シーケンス内で3個のP1が2個のNウェイポイントを挟んで発生しているにもかかわらず、3個の連続するcアトムとして出力される。3番目のトレース出力はP110に対応し、これと関連付けられるのは生成されるcアトム列の連続するP1、P1、P0出力である。これら3個のcアトムP1、P1、P0の出力より前に、2個のNウェイポイントが出力されているが、これらのウェイポイントはトレース出力にまだ現れていない。最後のトレース出力はNNNEに対応する。これは、P1、P1、P0よりも前の残りのウェイポイント出力およびシーケンスの終わりに生成された最後のウェイポイントEを反映したものである。図1に示すように、診断回路は、トレースデータ出力を受け取り、圧縮cアトムを分離してcアトムFIFO197に入れ、圧縮ウェイポイントをトレースしてウェイポイントFIFO198に入れる。図7Cの表に示すトレース出力の圧縮の結果としての順序付けの変更に伴い、図1の診断ツール196によるETM180からのトレース出力のデコード時に、実行順序と異なる順序付けが効果的に与えられる。図7Cの特定の例において、トレース出力の順序付けは、E、E、E、N、P1、P1、P1、P1、P1、P1、P0、N、N、N、Eになる。診断回路196は、プログラムイメージ199を利用して、これらの圧縮ウェイポイントおよび圧縮cアトムの順序を変更し、正しい実行順序に復元する。診断ツール196は、その処理のためにプログラムイメージを参照し、すべての分岐を特定する。各分岐はEまたはNウェイポイントと関連付けられている。これらは本質的に分岐成立または分岐不成立情報を与えるものであり、それにより診断ツール196は、その時点のCPU100内で規定されていた条件に基づき、プログラムイメージ内のどの命令が成立したか、どの条件分岐命令が不成立になったかを正確に判定することができる。ウェイポイントに対応するこのスレッドを辿り、診断回路196がプログラムを詳しく調べる過程で、プログラムイメージ199を参照することによって条件非分岐命令も見出される。これらの条件非分岐命令の各々は、受け取ったトレースデータストリーム内のcアトムと順に関連付けられている。ただし、多くの条件命令の結果としてcアトムが生成されるとはいえ、たとえば図3BのADDNEのように、cアトムを生成しない条件命令のサブセットも存在する。図7Dの表は、診断回路196がETM180から受け取ったウェイポイントおよびcアトムを処理し、別々のcアトムFIFO197とウェイポイントFIFO198に格納する仕組みを説明したものである。この表は、プログラムイメージ199を介して実行スレッドを辿る過程で見出される各命令種別について、特定種別の命令が現れた時に診断回路が実行するアクションを示す。分岐命令が現れると、ウェイポイントFIFO198からEまたはNが取り出される。ロード/ストア命令が現れると、同じくウェイポイントFIFO198からEまたはNが取り出される。条件分岐命令が現れた場合、これは、ウェイポイントcアトムではなくが適用される特別な場合であるため、対応するcアトムが生成されることはない。したがって、ウェイポイントFIFO198からEまたはNが取り出される。条件ロード/ストア命令はウェイポイントでありロード/ストアであるため、かつcアトムでもありえるが条件付きであるため、非条件ロード/ストアについては、対応するcアトムは存在しない。この場合、ロード/ストアがNウェイポイント分岐不成立に対応することは絶対にないということが分かっているため、ウェイポイントキューからEが取り出される。しかし、条件ロード/ストアの場合には、cアトムFIFO197からP0またはP1が取り出される。他の条件命令条件分岐および条件ロード/ストア以外はすべて、cアトム生成の該当カテゴリーに含まれ、この場合は、ウェイポイントFIFOからP0またはP1が取り出される。生成されたcアトムおよび生成されたウェイポイントはcアトムFIFO197およびウェイポイントFIFO198に順番に格納されるため、これらのFIFOから当該エンティティが取り出される順序は、プログラム実行順序を反映する。図8は、条件アトムパケットとウェイポイントパケットの両方が入っているトレースデータストリームを受け取った時点で診断回路196が実行するアクションを模式的に示したフローチャートである。このプロセスはステージ810で開始され、診断回路196が新たなトレースデータ項目を受け取る。その後、ステージ820において、診断回路196は、次のトレースデータ項目を受け取り、ステージ830に進む。ここで、トレース項目が条件アトムcアトムパケットであるか判定される。そのトレース項目が実際にcアトムパケットならば、プロセスはステージ832に進み、そこでパケットがデコードされ、P0および/またはP1のcアトムが適宜cアトムFIFO197に追加される。続いてプロセスはステージ860に進み、そこで終了する。他方、ステージ830において特定のトレースデータ項目がcアトムパケットでないと判定された場合には、プロセスはステージ840に進み、そこで当該トレース項目がウェイポイントパケットであるか判定される。そのトレース項目が実際にウェイポイントパケットならば、プロセスはステージ842に進み、そこでパケットがデコードされるとともに、Eおよび/またはNウェイポイントが適宜ウェイポイントFIFO198に追加される。続いてプロセスは最終ステージ860に進む。しかし、ステージ840において、当該トレースデータ項目がウェイポイントパケットではないと判定された場合はそのトレース項目がcアトムパケットとウェイポイントパケットのいずれでもないことを意味する、プロセスはステージ850に進み、他のパケット種別が従来の方法で適宜処理され、プロセスはステージ860で終了する。図9A、図9Bおよび図9Cは、分岐誤予測があった時、またはアボートが発生して1つ以上のウェイポイントが取り消された時に、投機的アウトオブオーダー処理が可能なCPU100内で圧縮ウェイポイントおよび圧縮cアトムを含むトレース出力に何が起きるかを模式的に示したものである。少なくとも1つのウェイポイントが取り消された場合、診断ツール196は、その状況で当該キャンセルイベント以前にいくつの条件命令が実行されたか認識していないため、ウェイポイントおよびcアトムの圧縮が原因で問題が発生しえる。図9Aの表は、その仕組みを模式的に示したものである。図9Aの表のほぼ中央に1個のウェイポイントすなわち先行するNが取り消されるイベントがあり、トレース出力は、その1個のウェイポイントが取り消されたことを示しているが、圧縮cアトムに関していかなる情報も与えていない。注意すべきは、このトレース出力において、生成された最初の2個のcアトムP1、P1はまだトレースストリームに出力されていないが、圧縮cアトムのトレース出力P111がキャンセル後に出力されていることである。このP111出力は、3個のcアトムP1、P1、P1が生成されたことを意味する。この場合におけるただし必然的ではないウェイポイントNの取り消しは、直後のcアトムP1の取り消しを引き起こすため、診断回路196は、キャンセル1の後に圧縮cアトム出力P111を受け取った時点で、圧縮P111トレース出力に対応するP1トレース出力の中の1つが実際には取り消されていることを認識できない。したがって、診断ツールは、どのウェイポイントが取り消されたか確認できても、それに伴ってどのcアトムが取り消されたかを確認することはできない。言い換えれば、圧縮によってcアトムおよびキャンセルイベントの順序が失われ、診断回路196は、2番目のP1がキャンセル前だったのかその場合、アーキテクチャ的に実行されなかったことになる、あるいはキャンセル後なのかその場合、アーキテクチャ的に実行されたことになる確認できない。同様に、誤予測が生じ、条件命令がアーキテクチャ的に実行されなかったはずであるにもかかわらず、トレース内に取り消されたウェイポイントがなかったという場合、診断回路196は、条件命令が実行されなかったことを認識できない。この問題に対処するとともに、ウェイポイントおよびcアトムの圧縮によって診断回路196が命令の誤予測またはキャンセル発生時に誤った仮定を行うのを防ぐ目的で、次の3つのルールが実装される。1.分岐誤予測、アボートまたは例外、その他任意のキャンセル命令の発生時に、キャンセルトレースインジケーションとともに再アライメントトレース項目を出力するただし、例外の場合は、キャンセル、例外、再アライメントの順序でなければならない。2.すでに生成されたすべてのcアトムを再アライメントトレース項目よりも前に出力する。3.すでに生成されたすべてのウェイポイントを再アライメントトレース項目よりも前に出力する。再アライメントトレース項目は、診断回路196に対し、取り消された命令に対応するものとしてcアトムFIFO197内のいかなるcアトムも破棄すべきであることを指示する。図9Bの表は、取り消されたトレースデータ項目とともに再アライメントトレースデータ項目が使用される一例を示す。この例では、図9Aの表に示した例と同様にNウェイポイントが取り消される。異なるのは、キャンセルインジケーションがトレースデータストリームに出力された時、そのキャンセル以前にすでに生成されていたすべてのcアトムのインジケーションがトレース出力に示されることである。これがP11トレース出力に対応する。続いてトレース内にキャンセルインジケーションキャンセル1が出力され、さらに再アライメントインジケーションが出力される。この場合、cアトムとキャンセルの順序付けは維持される。バッファ内にcアトムがあれば再アライメントによってすべてフラッシュされ、再アライメントはつねにキャンセルとともにその前または後に出力されるためである。ETMは、何個のcアトムが取り消されたかもしあればについては、判定するのに十分な状態を格納していないため、それを追跡することはない。しかし、診断ツールは、どのcアトムが取り消されたかを確認することができる。図9Cは、図9Bの表に示すトレース出力を受け取った診断回路196がそれに応答して実行するアクションを模式的に示したものである。1番目の列は、診断回路196が受け取ったすべてのトレースデータ項目を示す。これをさらに分割したのがウェイポイントキュー2番目の列および条件キューすなわちcアトムキュー3番目の列である。トレース出力に応答した診断回路196のアクションを表の右端の列に示す。最初の診断回路アクションとして、Eまでの実行を推測する。これは、すべてのウェイポイント間に実行される命令ウェイポイントおよびcアトム以外が診断回路196によって推測されるためである。診断回路196はウェイポイントNまで推測することはできない。まだcアトムを受け取っていないためであり、この時点でcアトムは、プログラムイメージ199の分析から診断回路196によって予期される。圧縮トレース要素P11を受け取った後にトレースデータストリーム内でキャンセル1インジケーションが与えられる。そのため、診断回路は、最後のウェイポイントすなわちNウェイポイントまでを含むすべてを取り消す。再アライメントトレース項目を受け取った後、cアトムFIFO197がフラッシュされてキャンセル以前に発行されたP11およびP1が除去され、キャンセル1を受け取ると同時にP1が条件キューに追加される。再アライメントに続いて、圧縮cアトムP1110トレースを受け取るが、診断回路は、プログラムイメージ199の分析からウェイポイントを受け取ることを予期しており、すでに受け取ったウェイポイントはないため、診断回路によってcアトムが処理されることはない。診断回路によるその後のアクションでは、cアトムが必要か不必要かに応じてウェイポイント間の命令が推測される。このようにして、CPU100による実際の実行シーケンスが診断回路196によって再構成される。ロード/ストア命令は条件付きまたは非条件付きでありえることに留意されたい。非条件ロード/ストア命令はEアトムとして扱われるため、ウェイポイントキューからEアトムが取り出される。ロード/ストア命令が条件付きの場合は、やはりウェイポイントキューからEアトムが取り出されるが、それに加えてcアトムキューからP0またはP1が取り出される。図10は、トレースデータ出力を分析するために診断回路196が実行するアクションを模式的に示したフローチャートである。具体的には、図10のフローチャートは、実行ストリームの分析において診断回路がcアトムFIFO196およびウェイポイントFIFO198からどのようにcアトムおよびウェイポイントを除去するかを説明している。プロセスはステージ1000で開始され、直接ステージ1010に進み、そこでトレースデータ出力を受け取り、プログラムイメージ199を使用して次の実行命令を判定する。続いてプロセスはステージ1012に進み、次の命令が非条件分岐であるか判定する。次の命令が実際に非条件分岐ならば、プロセスはステージ1014に進み、ウェイポイントFIFO198からEまたはNが取り出される。続いてプロセスはステージ1060に進み、利用可能な情報から現命令の詳細を確認し、その後、終了ステージ1070に進んで、次のトレースデータ項目が出力されるのを待つ。他方、図10のステージ1012で次の命令が非条件分岐命令ではないと判定された場合、プロセスはステージ1020に進み、次の命令が非条件ロード/ストア命令無条件であるか判定する。その命令が実際に非条件ロード/ストア命令ならば、プロセスはステージ1014に進み、そこでウェイポイントFIFO198からEまたはNが取り出される。続いてプロセスはステージ1060と、その後終了ステージ1070へと進む。ステージ1020で次の命令が非条件ロード/ストア命令ではないと判定された場合、プロセスはステージ1030に進み、その命令が条件分岐であるか判定する。その命令が実際に条件分岐ならば、プロセスはステージ1014に進み、ウェイポイントFIFO198からEまたはNが取り出され、プロセスはステージ1060と1070へと進んで、プロセスが終了する。他方、ステージ1030で次の命令が条件分岐ではないと判定された場合には、プロセスはステージ1040に進み、次の命令が条件ロード/ストアであるか判定する。その命令が実際に条件ロード/ストアならば、プロセスはステージ1042に進み、ウェイポイントFIFO198からEまたはNが取り出され、さらにステージ1044に進んで、cアトムFIFO197からP0またはP1が取り出される。したがって、条件ロード/ストア命令の場合は、ウェイポイントキューとcアトムキューの各々から項目が取り出される。続いてプロセスはステージ1060と1070へと進む。ステージ1040において、当該命令が条件ロード/ストアではないことが確認された場合には、プロセスはステージ1050に進み、その命令が条件命令であるか判定する。その命令が条件命令ならば、cアトムキュー197からP0またはP1が取り出され、プロセスはステージ1060に進み、現命令の詳細を確認した後、ステージ1070で終了する。しかし、次の命令が条件命令でなければ、プロセスはステージ1050から直接ステージ1060に進み、利用可能な情報を用いて現命令の詳細を確認する。しかし、この場合、現命令は、非条件分岐命令、非条件ロード/ストア命令、条件分岐命令、条件ロード/ストア命令または条件命令のいずれでもない。図11A、図11Bおよび図11Cは、キャンセルトレースインジケーション、誤予測トレースインジケーション、例外トレースインジケーション、および再アライメントトレースインジケーションがトレースデータストリームに出力される相対的順序の例である。図11Aの例の場合、最初のウェイポイントEは分岐誤予測に対応し、再アライメントトレース項目はその誤予測の後ろに置かれるが、ウェイポイントまたはcアトムよりも前になる。図11Bの場合、2番目のウェイポイント、すなわち2番目のEは誤予測の分岐に対応する。再アライメントトレース項目は誤予測の後ろに置かれるが、次のウェイポイントまたはcアトムの前この特定の例では、次のウェイポイントEの前になる。図11Cの例では、1番目と2番目のウェイポイントEシーケンス内の1番目と2番目のトレース項目の間にアボートが発生する。この場合、例外が投げられ、再アライメントトレース項目がその例外の後ろに置かれるが、次のウェイポイントまたはcアトムよりも前になる。この場合、アボートの前後の2つのウェイポイントEの間にcアトムP1シーケンス内の2番目のトレース項目が生成されるが、再アライメント項目は、やはり例外の後ろに置かれる。図12~図14は、条件結果によって黙示されうる条件アトムを除去することによってcアトムを含むトレースデータストリームを圧縮できる仕組みを模式的に示したものである。このようにしてトレースデータストリームからcアトムのサブセットを除去することにより、トレースプロセスの効率を改善させることができる。すべての条件命令に対してcアトムが生成されるわけではないが、しばしばcアトムとcリザルトの間に1対1の対応関係が存在し、すべてのcリザルトは少なくとも1つの対応するcアトムを有していなければならない。これは、トレースデータストリームに実際に含まれていなければならないcアトムがないまま後続のcリザルトが現れた時、多くの場合、診断回路196がcアトムの存在を黙示できるということを意味する。すなわち、診断回路196は、まだ受け取っていないcアトムすなわちcアトムキーに対応するcリザルトキーを有するcリザルトを受け取った場合、そのcアトムの存在を推定することができる。cリザルトが順序どおりでなければ、診断回路196は、cアトムの順序を維持するために他のcアトムの存在を推定することができる。診断回路196はcアトムを本来現れるはずの時点よりも後に推定することが可能であり、そのためにcアトムとウェイポイントの順序が変化することがある。しかし、これが問題になることはない。前述のように、cアトムFIFO197およびウェイポイントFIFO198に格納されたcアトムおよびウェイポイントは、いずれの場合でも、プログラムイメージ199内のプログラム命令シーケンスに基づき、診断回路196によって正しい順序に配置されるからである。図12Aは、図1の結果キー変換回路188によるcリザルトキー出力に基づいて一連のcアトムすなわち命令実行に対応するトレースデータ項目が黙示されるトレースデータストリームの例を模式的に示した表である。この例では、ETM180によって5個のcアトムP1が続けて生成されるが出力されていない。同様に、表中でRHキーと表記されているcアトムキーもETMによって生成されるが出力されていない。これは、cアトムのバッファリングとみなすことができる。cリザルトが出力される時、黙示ビットimplybitがそれらのバッファされたcアトムを表す。しかし、対応する条件結果キーは、結果キー変換回路188によって実際に出力される。キー値が明示的に与えられないが、トレース結果から、どのcアトムがcリザルトと関連付けられているか明確になる。完全なcアトム情報は出力されないが、cリザルトパケットにはcリザルトに関する情報が有効に含まれている。cアトムは高度に圧縮される1ビットまで。図12Aの表の4番目の列は、受け取ったcリザルトキーに基づき、どのcアトムキーが診断回路196によって黙示されるかを模式的に示したものである。この場合、対応関係は単純であり、cリザルト0、1および2がcリザルトキーに対応して直接的に黙示される。しかし、cリザルトキー4はcリザルトキー3よりも前に出力されるため、診断回路196は、cリザルトキー4を受け取った時、対応する結果はまだ出力されていないが、すでにcアトムキー3も生成されていると推定する。実際、図12Aの表の出力されたcリザルトLHキー列から、cリザルトキー4の直後にcリザルトキー3が生成されることが分かる。したがって、2つのcアトムキー3および4の黙示は実際に正しかったことになる。注目すべきは、図12Aの表の例において、生成されるcアトムはP1アトムのみを含み、P0アトムは含まれないということである。前述のように、cアトムP1に関してトレースキーはつねに1だけインクリメントされるのに対し、P0アトムに関してトレースキーが変化することはない。したがって、cリザルトの存在によってcアトムP1は黙示されうるが、そのことはP0アトムには当てはまらない。実際、cリザルトの存在によってcアトムP0を推定することはできず、そのためすべてのcアトムP0をトレースに出力することが必要であり、それらをバッファすることはできない。ETM180によるcアトム出力のバッファリングおよび診断回路196によるcリザルトからの対応cアトムの黙示に依存することが不適切であるような別の2つの特別な状況が存在する。そのような状況の1つは再アライメントトレース項目の場合であり、ETM180は、原理的には後続のcリザルトによって黙示されるはずであるにもかかわらず、再アライメントよりも前に知られているすべてのcアトムを出力しなければならない。これは、診断回路196によるウェイポイントおよびcアトムの正しい相対的順序付けが推定されるようにするためである。cアトムの出力をバッファし、受け取ったcリザルトキーからcアトムの存在を黙示することが不適切であるようなもう1つの状況は、命令キー変換回路186によってcアトムそれ自体にcアトムキーが割り当てられており、それが厳密に順次的でなく、たとえば特殊キーが使用されているような場合である。ETM180によって出力され、診断回路196が受け取ったcリザルトを用いて追加的なcアトムを黙示することが許されない特定の場合も存在する。以下の3つの状況は、そのような場合の例であり、診断回路はそれらを区別することができない。1.同じcリザルトキーが2回使用される。2.N個のcアトムがバッファされるN=順次トレースキーの数実際、ETM180によって出力されるcリザルトは、対応cリザルトからcアトムが黙示されるべきか診断回路196に通知する情報を含むことが必要とされる。図1の実施形態において、所与のcリザルトについてcアトムが黙示されるべきか否かに関するこの情報は単純なyes/no条件であり、黙示されるcアトムの正確な数は診断回路196に対して明示的に指定されない。図12Bは、いくつかのcアトムキーが対応cリザルトから黙示され、また4個の異なるcアトムトレースキーが使用されるトレースデータストリームの例を模式的に示した表である。4個のcアトムトレースキーしか使用できないため、すべてのキーを使い切った後にキーのラップアラウンドが行われる。具体的には、cアトムキーシーケンスは0、1、2、3と進んだ後、0に戻る。これは、生成されながら出力されない5番目のcアトムP1に対応する。さらに、図12Bの例において、生成されながら出力されない5番目、6番目および7番目のcアトムP1は誤予測に対応するため、これら3個のcアトムは、実際には実行されず、したがって、対応するcリザルトおよびcリザルトキーが出力されることは決してない。cリザルトには、次に示す少なくとも3種類の情報が含まれる。1.明示的に、または直近のcリザルトに対して、条件結果と関連付けられたキー。2.診断回路196が条件命令の成功/失敗ステータスを判定するすなわち、条件命令が実際に実行されたかどうか判定するためのペイロード。3.そのcリザルトに基づいて対応cアトムが黙示されうるか黙示のyes/noという単純な2ビットインジケータ。この黙示yes/no情報を適用する目的で、ETM180は、命令キー変換回路186によって生成されながら、診断回路196に対するその出力はバッファされていないcアトムを追跡するように構成される。ETM180は、各cリザルトが何であるか確認するとともに、そのcリザルトによって黙示されうるのはもしあればどのcアトムであるか判定する。cリザルトによって黙示されるcアトムがない場合、そのcリザルトはETM180によって黙示noとマークされ、他の場合には黙示yesとマークされる。これは2個のレジスタを使用して達成される。last-c-atom-generated-keyレジスタには、直近に生成されながら出力されていないcアトムのキーが入る。これの例外は、直近に生成されながら出力されていないcアトムが特殊キーを有する場合である。別個のlast-c-atom-output-keyレジスタには、1明示的に出力されたcアトム、2cリザルトによって黙示されるcアトムのどちらかもっとも新しい方のトレースキーが記録される。cリザルトが生成されると、対応cリザルトキーがテストされ、それがlast-c-atom-output-key<cリザルトLHキー≦last-c-atom-generated-keyの範囲内であるか確認される。このテストを適用する際にモジュラス計算を使用しなければならず、モジュラス計算の扱いは当業者にとって周知である。cリザルトキーが実際にこの定義範囲内ならば、ETM180によるcリザルトの一部として黙示yesが出力される。図13は、図12Bのシーケンスと同様のトレースデータシーケンスを模式的に示した表である。ただし、last-c-atom-generated-keyレジスタおよびlast-c-atom-output-keyレジスタに格納される値をそれぞれ右から2番目と3番目の列に示してある。図13の表の右端の列は、上記の等式によって定義されるテストすなわち黙示yesが充足されたかというインジケーションを与える。4個のトレースキーのみを使用し、キーのラップアラウンドが行われるため、キー3がキー0よりも小さいとみなされることがありえる。たとえば、0、1、2、3、0、1、2、3という反復キーシーケンスにおいて、1番目の3は2番目の0よりも前に位置する。図13の表の黙示されるcアトムRHキー列に3とマークされた黙示cアトムキーは、再アライメント項目の出力直後に黙示されており、この場合、キー0、1、2を有するcアトムは黙示されない。その前に誤予測が生じ、cアトムキー0、1、2に対応する3個のcアトムP1が実行されなかったことにより、それらが明示的に出力されているためである。図13の最後の行から2番目で出力されるcリザルトキー2について、cリザルトキー2に対応するキー2を有するcアトムは、それ以前のcリザルトによってすでに黙示されているため、黙示されない。したがって、図13の右端の列に示されるテスト結果がnoになる。図13の表の最後の行に出力されるcリザルトキーについて、キー1を有する対応cアトムは、すでに明示的に出力されたcアトムキー列に明示的に出力されているため、黙示されない。図13に示すように、誤予測の結果としてcアトムキー0、1、2が明示的に出力され、トレースデータストリーム内のcアトムP0の出現表の左端の列における最後に生成されたcアトムから3番目によってcアトムキー0、1が明示的に出力される。これに対して、対応cリザルトからのcアトムの黙示は許されない。cアトムが明示的に出力されるのは次の理由による。再アライメントトレース項目がたとえば誤予測または例外によって出力される前。cアトム種別P0が使用された場合定義により、トレースキーがインクリメントされない。キーの通常の順次的な順序に従わない特殊キーが使用され、また非常に遅い時点のcリザルトに対して使用された場合。cアトムが明示的に出力された時、last-c-atom-output-keyレジスタを使用して、どのcアトムを出力すべきか判断することができる。たとえば、再アライメントトレース項目の場合、明示的に出力される最初のcアトムはlast-c-atom-output-key1という値であり、出力される最後は、last-c-atom-generated-keyの値である。キー値がそれら2つの間であるcアトムも出力すべき対象となる。図14Aは、対応cリザルトからcアトムを黙示する診断回路196の機能に依拠したものとして、特定のcアトムが生成されながら出力されないすなわちバッファされない場合にトレースストリームを出力し、トレース圧縮スキームを実施する際のETM180のアクションを模式的に示したフローチャートである。言い換えれば、図14aのフローチャートは、トレースデータストリームからcアトムのサブセットを除去することによって出力トレースデータストリームを圧縮するためにETM180がどのように動作するかを模式的に示したもである。プロセスはステージ2000で開始され、ステージ2001に進み、そこで再アライメントトレースデータ項目が必要かどうかを判定する。再アライメントトレース項目が必要ならば、プロセスはステージ2110に進み、生成されながら出力されていないすべてのcアトムをETM180が明示的に出力する。次にプロセスはステージ2120に進み、last-c-atom-output-keyが更新される。続いてステージ2130に進み、再アライメントトレースデータ項目がトレースデータストリーム内に実際に出力されたあと、プロセスは縦の流れに戻って、ステージ2200に進む。他方、ステージ2100において再アライメントトレースデータ項目が必要ないと判定された場合には、プロセスは、横に分岐する圧縮ステージ2110、2120、2130に沿って進むことなく、直接ステージ2200に進む。ステージ2200では、cリザルトが現在生成中か判定する。生成中のcリザルトがなければ、プロセスは直接ステージ2300に進む。他方、cリザルトが実際に生成中であるとステージ2200で判定された場合には、プロセスはステージ2210に進み、現cリザルトに対応するcアトムが現在バッファされているか判定する。そのようなテストの一例は、生成中のcリザルトに対応するキーがlast-c-atom-output-key<cリザルトLHキー≦last-c-atom-generated-keyというテストを充足するかという判定である。言い換えれば、現在生成中の条件命令トレースデータ項目に対応するキーが前記の直近に出力された条件命令トレースデータ項目に対応するキーより大きく、かつ前記の直近に生成された条件命令トレースデータ項目に対応するキーに等しいか、より小さい場合である。最大値に達した時点でキーの値がラップアラウンドするため、テストが正しく機能するように、キー比較はモジュロ演算に従う。ステージ2210において、cリザルトに対応するcアトムが現在バッファ中でないと判定された場合には、プロセスはステージ2230に進み、生成直後のcリザルトが出力される。黙示ビットはクリアされ、この特定のcリザルトに基づいて診断回路196によって黙示されるべきcアトムがないことを示す。他方、ステージ2210において、現cリザルトに対応するcアトムが現在バッファ中であることが確認された場合には、プロセスはステージ2222に進み、黙示ビットをセットしてcリザルトが出力される。これは、診断回路196がcリザルトから対応cアトムを黙示すべきであることを示す。黙示ビットをセットしてcリザルトを出力した後、プロセスはステージ2224に進み、該当レジスタでlast-c-atom-output-keyの値が更新され、続いてプロセスはステージ2300に進む。ステージ2300では、cアトムが生成中か判定する。cアトムが生成中でなければ、プロセスはステージ2400で終了する。他方、cアトムが生成中ならば、プロセスはステージ2310に進み、そのcアトムの種別がP1ではなくP0であるか、あるいは特殊キーに相当するものか判定する。そのcアトムがこれらの例外種別の中の1つでなければ、プロセスはステージ2320に進み、last-c-atom-generated-keyが更新され、プロセスはステージ2400で終了する。しかし、そのcアトムが特殊キーに相当するか、または種別P0である場合には、プロセスはステージ2312に進み、すでに生成されているが出力されていない他のすべてのcアトムとともに、生成中のcアトムが明示的に出力される。次にプロセスはステージ2314に進み、last-c-atom-output-keyが更新される。続いてプロセスはステージ2320に進み、last-c-atom-generated-keyが更新され、ステージ2400で終了する。図14bは、本発明の1つの実施形態によるトレースユニット180を示す。これは図1に示したトレースユニットと同様であり、該当するものについて同一の参照番号を使用している。トレースユニット180は、追加の条件コードまたはCPSR値格納バッファ185、トークンバッファ187、および関連の圧縮/連結回路を備える。結果インタフェース184から送られるデータは、更新された各CPSRレジスタからのCPSR値および付加的データを含む。この実施形態において、CPU100には8個のCPSRレジスタがあるため、単一サイクルで受け取る可能性があるセットが8種類ある。これらを単一サイクルですべてトレース生成回路192に入力すれば、トレース生成回路192がそれらを処理しなければならず、高コストになるため、その代わりにCPSR値格納バッファ185にバッファする。これにより、それらの値を徐々に出力することができる。この実施形態では、各クロックサイクルで2セットのCPSR値が出力される。それらをランダムに選択してもよいが、当該CPSRに関するCPSR値の更新済みセットを入力で受け取る場合は、特定セットのCPSR値が出力される必要がある。これは、トレースストリーム内の条件アトムトレースデータ項目および条件結果トレースデータ項目が正しく順序付けされるようにするためである。この点に関し、命令インタフェース182において処理装置のデコードから条件命令観察インジケータを受け取り、その関連タグが命令によって更新されるべき特定のCPSRレジスタを識別している場合、これにより、どのCPSRレジスタを更新すべきかという事前インジケーションが与えられる。受け取られるCPSR値に関する有効な値が現在バッファ185に格納されている場合には、それらの有効な値が出力のために選択される。それが出力されることによって記憶場所が解放され、その後に受け取る新しいデータを格納できるようになる。出力された値は、トレースデータ項目を生成するトレース生成回路192によって処理される。この実施形態では、任意の1サイクルで2個の条件命令観察インジケータを受け取ることができるため、最大で2セットのCPSR値を追い出す必要があり、したがって、バッファ185に格納された正しい値を維持するには1サイクル当たり2セットのCPSR値の出力で十分である。したがって、トレース生成回路195は、1サイクル当たり2セットの値を処理するのに十分な処理能力を備えるだけでよい。この実施形態には、トレース生成回路192によって生成されたトレースデータ項目を受け取るための追加回路187が存在する。この回路は、頻出トレースデータ項目を圧縮してトークンを形成する。トークンは、それらのトレースデータ項目の圧縮表現であり、トークンバッファに格納される。あとでそれらのトレース項目を組み合わせることができ、また、いくつかを単一トレース項目として出力することができる。典型的には最小トレースパケットは8ビット長であり、多くの場合、パケットは8ビットの倍数になるが、トークンは、典型的には、それよりもはるかに小さく、出力のためにいくつかを組み合わせて1パケットにすることができる。トークンによって表現できる一般的な条件結果トレースデータ項目の例を次に示す。より出現頻度が高いCPSR値の中の1つを含む条件結果トレースデータ項目。いくつかのCPSR値は、他と比べて頻出し、たとえば、Nクリア、Zクリア、Cセット、Vクリアの各値は出現頻度が非常に高い。中に入っているキーがその前の当該キーに1を加えた値であるような条件結果トレースデータ項目。それらができるだけ長い間バッファに格納されていれば、異なる複数のトークンを組み合わせて単一パケットにできる機会が増加するため、好都合である。しかし、バッファサイズは有限であり、したがって、バッファが一杯になった時点、または対応する利用可能なトークンがない項目おそらくは頻出しないために圧縮が効率的でない項目を受け取った時点で、それらを出力しなければならない。後者の場合、順序を維持するために、値をすべて出力することによってバッファがクリアされた後、受け取った非圧縮項目が出力される。典型的には、単一トレース項目内で複数の異なるトークンが組み合わされる可能性が増大するように、これらのトークンは可能な限り長くバッファ内に保持される。図15~図27の説明は、JohnMichaelHorley、SimonJohnCraske、MichaelJohnGibbs、およびPaulAnthonyGilkersonを発明者とする同時係属中の英国特許出願第1100505.5号処理装置、トレースユニットおよび診断装置の一部であり、同特許出願からの優先権を主張している。したがって、以下の図15~図27は、例示説明を目的とするとともに、条件結果トレースデータ項目cアトムのバッファリングについて、また、すべての条件命令が対応するcアトムを有するわけではないということについて、より詳しく説明するためのものである。これらの図には、図3A~図3Dに説明したCPSRマークビットの使用方法を具体的に示すという役割もある。図22および図25は、とくにその目的に関連したものである。図15は、プログラム命令に応答して処理機能を実行する処理回路3004を備える処理装置3002を示す。処理装置3002にはメモリシステム3008が提供され、メモリシステム3008は、処理回路3004によって実行されるプログラム命令および/または処理回路3004によって処理されるデータを格納するための1つ以上のキャッシュユニットまたはメモリユニットを備える。処理装置3002は、処理回路3004によって実行される処理動作を監視するトレース回路3006を含む。トレース回路3006は、処理回路3004によって実行される処理動作の特徴を示すトレースデータ要素を生成する。トレース回路3006は、生成されたトレースデータ要素を出力ポート3010経由で出力する。トレース回路3006を処理回路3004と同じ集積回路上に実装する必要はなく、いくつかの実施形態では、別個のトレースユニットとして設けられる。トレース回路3006によって生成されたトレースデータ要素を分析するために診断装置3012が設けられる。診断装置3012は、入力ポート3014を介してトレースデータ要素を受け取る。診断装置3012は、処理回路3004によって実行されたプログラム命令のインジケーションも受け取る。このインジケーションは、トレース回路3006によって与えられ、トレースストリーム内でどの命令が実行されたかを示す。代替的に、処理回路3004によって実行された最初のプログラム命令のメモリシステム3008内の場所を示すアドレスを診断装置3012に与えてもよい。処理回路3004によって実行されたプログラムの対応コピーを格納するためのメモリ図15に図示せずを診断装置3012に提供することもできる。診断装置3012は、処理回路3004によって実行された命令をステップごとに分析し、トレースデータ要素のストリーム内に含まれる情報に基づいて命令の処理結果を判定する。トレース回路3006から診断装置3012にトレースデータ要素を直接出力する必要はなく、たとえば、メモリまたはその他の記憶装置に格納し、その後、必要な時点で診断装置3012によって記憶装置から取り出すことができる。診断装置3012は、たとえば、トレース分析方法を実行するようにプログラムされた汎用コンピュータであってよい。処理装置3002は、記憶場所、たとえば処理装置3002の個々の条件を示す1つ以上の条件フラグ3022を格納するための条件ステータスレジスタCPSR3020を有する。ARMLimited社英国ケンブリッジが設計したプロセッサでは、条件フラグ3022は、処理結果がネガティブ、ゼロ、キャリー発生、またはオーバーフロー発生のいずれであったかを示すNZCVネガティブ、ゼロ、キャリー、オーバーフローフラグを含んでもよい。図17は、条件ステータスレジスタ3020内の条件フラグ3022の異なる組み合わせによって示される各種の条件ステータスの一覧である。当然のことながら、条件フラグ3022を格納する記憶場所が条件ステータスレジスタ3020である必要はなく、メモリシステム3008内部の記憶場所、または他の任意の種類の記憶場所であってもよい。処理回路3004は、条件ステータスレジスタ3020内の1つ以上の条件フラグ3022を更新する少なくとも1つの条件更新命令に応答することができる。たとえば、比較命令は、2つのデータ値を比較し、その比較結果に応じてフラグを更新する。これにより、たとえば、2つの値が等しいか、あるいは一方の値が他方の値より小さいか、またはより大きいかということが示される。結果的に条件フラグ3022が更新される命令はすべて条件更新命令とみなすことができる。たとえば、ARM命令セットアーキテクチャでは、TST、TEQ、CMPおよびCMN命令が条件更新命令の例である。処理回路3004は、所与の条件に関連した少なくとも1つの条件命令にも応答することができる。条件命令が実行されると、条件フラグ3022の値が所与の条件と比較される。条件フラグ3022がその条件を満たしていれば、関連の処理動作が実行される。その条件が満たされなければ、関連の処理動作は実行されない条件命令の種類によっては、条件が満たされない場合に関連の処理動作とは別の処理動作が実行されることもある。たとえば、条件加算命令ADDEQはEQ条件と関連付けられる。図16は、ZフラグがセットされていればEQ条件が満たされることを示す。条件加算命令ADDEQが実行されたとき、もしZフラグがセットされていれば関連の加算演算が実行され、もしZフラグがセットされていなければ加算演算は実行されない。条件命令の処理結果を命令ストリームのみで判定することはできない。命令ストリームには、条件が満たされたか判断するための情報が含まれないためである。したがって、トレース回路3006は、選択された少なくとも1つの命令に応答して、条件フラグ3022の値を示すトレース条件値tracedconditionvalueが含まれるトレースデータ要素を生成する。診断装置3012は、そのトレースデータ要素に含まれるトレース条件値から当該条件が満たされたか判断することができ、したがって対応する条件命令の処理結果を判定することができる。トレース回路3006は、条件フラグ3022の値がトレースされているか監視するために1つ以上の制御フラグ3026を維持する。トレース回路3006は、1つ以上の制御フラグ3026の現在値に基づき、所与の命令の実行時に条件フラグ値をトレースするかどうかを選択することができる。一実施形態において、トレース回路3006は1個の制御フラグ3026を備え後述の図22~図24の実施形態を参照、別の実施形態において、トレース回路3006は各々が条件フラグ3022の中の1つに対応する複数の制御フラグ3026を備える図25~図27に関する後述の実施形態を参照。診断回路3016は、対応する制御フラグ3028のセットを維持し、トレース回路3006の制御フラグ3026に対応する方法でこれらを使用することにより、所与のプログラム命令に対してトレース条件値を含むトレースデータ要素がトレースストリームで与えられることが予期されるかどうか判定する。トレースデータ要素内のトレース条件値は、複数の異なる方法で示される。1つの例において、トレース回路3006は、トレースデータ要素内に条件フラグ3022の少なくともサブセットについて、その実際の値を含むことができる。条件命令が条件フラグ3022のサブセットにのみ依存する場合、トレース回路3006は、条件フラグ値の関連サブセットのみを含めばよく、あるいは条件フラグ3022のすべてを含むこともできる。代替的に、トレース回路3006は、条件フラグ3022の値の特定の組み合わせを示す識別コードをトレースデータ要素内に含むことができる。これにより、条件値の特定の組み合わせが他のものより頻出する場合に効率的なエンコードが可能になる。たとえば、図17は、3種類の条件状態たとえばCフラグがセットされた状態、Nフラグがセットされた状態、ZおよびCフラグがセットされた状態に対して2ビット識別子が使用される例を示す。異なる条件状態が4種類以上の場合は4ビット識別子が使用される。条件フラグ値の他の組み合わせの中の1つが必要とされる場合は、図17とは異なるエンコード方式により、現条件フラグ値の別個のインジケーションをトレースデータ要素に含めることができる。当然ながら、このような識別子のエンコードは、特定の識別子によってどの条件状態が表されるかという選択とともに、一例にすぎない。しかし、この例は、最小ビット数の識別子をもっとも出現頻度が高い条件状態に割り当てることによってトレースデータの合計量を減少させられるということを実証するものである。たとえば、処理装置3002が時間全体の70は2ビット識別子を有する3つの条件状態のいずれかであり、29は4ビット識別子を有する3つの状態のいずれかであり、1はその他の状態のいずれか当該のその他の状態はたとえば8ビット識別子によって表されるである場合、現在の条件状態を識別するために使用される平均ビット数は、20.740.2980.01=2.64アスタリスクは乗算記号を表すになる。したがって、現在の条件状態を示すためにトレースストリームに含まれる平均ビット数は、単純に条件フラグの現在値がトレースデータ要素に入る場合の4ビットよりも小さくなる。トレース回路3006は、処理回路3004による実行プログラムの異なる命令の位置で条件フラグ3022の値をトレースすることができる。トレース回路3006は、値を示す条件フラグが入ったトレースデータ要素の生成をトリガーする1つ以上の選択済みの命令を選択することができる。その選択済みの命令は、たとえば条件命令でありえるが、別の命令であってもよい。たとえば、図18~図20は、トレース条件値を含むトレースデータ要素が条件更新命令の実行時に生成される例を示す。図18は、処理回路3004の動作に応答してトレースデータを生成する方法を示す。ステップ3040において、処理回路3004は、実行中のプログラムの次の命令を処理し、トレース回路3006は、処理回路3004によるその命令の処理を監視する。ステップ3042において、トレース回路3006は、処理回路3004によって実行中の命令が条件更新命令であるか判定する。その命令が条件更新命令であれば、ステップ3044において、トレース回路3006は、その条件更新命令の実行によって生じた条件フラグ3022の更新値を示すトレース条件値が入ったトレースデータ要素を生成および出力する。他方、その命令が条件更新命令でなければ、ステップ3044は省略される。ステップ3046では、処理回路3004によって処理される別の命令があるか判定される。別の命令があれば、プロセスはステップ3040に戻り、残っている命令がなければ、プロセスはステップ3048で終了する。図19は、トレース回路3006が図18の方法で作成したトレースストリームを分析するための対応する診断方法を示す。診断装置3012は、処理回路3004によってどの命令が実行されたかというインジケーションを受け取る。ステップ3050において、診断回路3016は、処理回路3004による実行中と示された次の命令を分析する。ステップ3052では、診断回路3016は、次の命令が条件命令であるか判定する。その命令が条件命令であれば、ステップ3054において、診断回路3016は、プログラム命令のインジケーションに示された直近の条件更新命令の関連トレースデータ要素をトレースデータストリーム内で発見する。ステップ3056において、診断回路3016は、発見されたトレースデータ要素に含まれるトレース条件値に基づいて、条件命令の処理結果を判定する。たとえば、診断回路3016は、トレース条件値を使用して、当該の条件命令と関連付けられた条件が満たされたか、また、それに従って関連の処理が実行されたか判定することができる。ステップ3052で次の命令が条件命令でないと判定された場合、ステップ3054および3056は省略される。ステップ3058では、分析すべき別の命令があるか判定される。別の命令があれば、プロセスはステップ3050に戻り、残っている命令がなければ、プロセスはステップ3060で終了する。図20は、図18の方法によるトレースストリームの生成および図19の方法によるトレースストリームの分析例を示す。これはプログラム処理回路3004によって実行された1組の命令を示したものである。分岐命令が実行されると、その分岐が成立したかどうかを示すトレースデータ要素が生成される。条件更新命令例:CMPが現れると、図18のステップ3044により、トレース条件値CPSRを含むトレースデータ要素が生成される。トレースストリームの分析時に、診断装置は、トレース条件値を使用して、後続の条件命令たとえば図20に示すMOVNE、MOVEQ、およびADDHI命令の処理結果を判定することができる。いくつかの命令は、条件更新命令と条件命令の両方でありえる。たとえば、図20のメモリロケーション2100に位置するプログラム命令は、処理回路3004を制御して条件フラグ3022の現在値が不等NE条件図16参照を満たしているか判定する条件比較命令CCMPNEである。その不等条件が満たされていれば、処理回路3004は比較演算を実行し、その比較結果に基づいて条件フラグ3022を更新する。CCMPNE命令は条件命令であるため、診断回路3016は、条件フラグのもっとも最近の更新時にトレースストリームに入っていたトレース条件値すなわちメモリロケーション2000の比較命令CMPに関して出力されたCPSR値に基づいて、CCMPNE命令の処理結果を判定する。CCMPNE命令の実行時にNE条件が満たされていれば、CCMPNE命令は条件更新命令でもあるため、トレース回路3006は、条件フラグ3022の更新値を示すトレース条件値が入ったCCMPNE命令に関するトレースデータ要素を生成する。このトレースデータ要素を使用して、後続の条件命令の結果を判定することができる。あるいは、いくつかの例において、CCMPNE命令は、NE条件が満たされたか否かに関係なく条件更新命令とみなされうる。そのため、条件フラグ値を示すトレースデータ要素がCCMPNE命令に関してつねに生成されるようにすることが考えられる。トレースの時点でNE条件がまだ計算されていない場合、これが役立ちうる。単一の条件更新命令のあとに一連の条件命令が続き、そのすべてが同じ条件値のセットに依存する場合は、複数の後続命令の結果を判定するのに少量のトレースデータで十分であるため、図18~図20に示す手法が有用になりえる。しかし、状況によっては、条件フラグの更新値を使用する条件命令が途中に入ることなく多数の条件更新命令が連続することがある。たとえば、図21では、一連のプログラム命令の中に多数の比較命令CMPおよびビットテスト命令TSTが含まれ、それらの命令によって条件フラグの更新が発生するが、最初の4個の命令によるフラグの更新に対し、それらの更新値を条件命令が使用することはない。そのような状況において、条件命令の実行時にトレース条件値を含むトレースデータ要素を生成することはその例を図22~図24および図25~図27を参照して後述する、より効率的な方法になりえる。図21に示す例では、個々の条件更新時ではなく条件命令MOVNEが実行された時点でトレースデータ要素を生成すればよい。当然ながら、これらの手法を混合することが可能であり、トレースユニットによっては、条件更新命令の実行時と条件命令の実行時の両方にトレース条件値を生成することができる。図22は、条件命令の実行時に条件フラグ3022がトレースされる、トレース方法を示す。この実施形態において、トレース回路3006は、条件フラグ3022の値をトレースすべきか判断するための制御フラグ3026を維持する。制御フラグ3026はクリア状態とセット状態を有するたとえばクリア状態を制御フラグ3026の値0、セット状態を制御フラグ3026の値1とするか、その逆でもよい。図22のステップ3070において、トレース回路3006は、次の命令を実行する処理回路3004を監視する。ステップ3072において、トレース回路3006は、その命令が条件命令であるか判定する。その命令が条件命令であれば、ステップ3074において、トレース回路3006は、制御フラグがクリアされているか判定する。制御フラグがクリアされていれば、ステップ3076において、トレース回路3006は、条件ステータスレジスタ3020の現在の状態を示すトレース条件値を含むトレースデータ要素を生成および出力する。続いて、ステップ3078で制御フラグがセットされる。他方、ステップ3074で制御フラグがセットされていれば、ステップ3076および3078は省略される。ステップ3072において、当該命令が条件命令でないと判定された場合は、ステップ3074~3078が省略される。続いて、ステップ3080では、次の命令が条件更新命令であるか判定される。いくつかの命令は条件命令と条件更新命令の両方でありえることに注意されたい。その命令が条件更新命令であれば、ステップ3082で制御フラグがクリアされる。他の場合には、ステップ3082が省略される。続いてステップ3084では、処理回路3004によって処理される別の命令があるか判定される。もし別の命令があれば、プロセスはステップ3070に戻る。残っている命令がなければ、プロセスはステップ3086で終了する。図22の方法を実装するためのいくつかの疑似コードを次に示す用語markerは制御フラグ3026を示す。OnaninstructionIfinstructionisconditionalIfmarkerisclearTracetheCPSRSetmarkerIfinstructionupdatestheCPSRClearmarkerトレース回路3006は、条件更新命令に続く最初の条件命令の時点でトレース条件値を含むトレースデータ要素を生成するので、図22の方法はトレースデータの量を減少させるのに役立つ。後続の条件命令については、条件値をトレースする必要がない。前の条件命令がすでに関連のトレースデータ要素を有し、その中に条件フラグ3022の状態を示す情報が含まれているためである。図23は、図22の方法で作成されるトレースストリームを分析するための対応する診断方法を示す。診断装置3012は制御フラグ3028を有し、そのクリア状態とセット状態はトレース回路3006の制御フラグ3026の状態に対応する。ステップ3100において、診断回路3016は、処理回路3004によって処理されるプログラム命令のインジケーションに示された次の命令を分析する。ステップ3102では、条件命令のインジケーションがあるか判定される。当該命令が条件命令ならば、ステップ3104において、診断制御フラグ3028がクリア状態かどうか判定される。診断制御フラグがクリア状態ならば、診断回路3016は、ステップ3106で、その条件命令の関連トレースデータ要素を発見し、ステップ3108で、その関連トレースデータ要素に含まれるトレース条件値に基づいて、条件命令の処理結果を判定する。ステップ3110において、診断制御フラグはセット状態に設定される。他方、ステップ3104で診断制御フラグがクリア状態でなかった場合は、プロセスはステップ3112に進み、診断回路3016によって追加的なトレースデータ要素が発見される。その追加的なトレースデータ要素は、以前に分析した条件命令と関連付けられたデータ要素である。ステップ3114において、診断回路3016は、以前に分析した条件命令に関して生成された追加的なトレースデータ要素内のトレース条件値に基づき、その分析対象とされた条件命令の処理結果を判定する。ステップ3102において、当該命令が条件命令でないと判定された場合は、ステップ3104~3114が省略される。続いて、ステップ3116では、分析中の命令が条件更新命令であるかどうかが判定される。その命令は、条件命令と条件更新命令の両方でありえる。その命令が条件更新命令であれば、ステップ3118で診断制御フラグ3028がクリアされ、その命令が条件更新命令でなければ、ステップ3118は省略される。ステップ3120では、分析すべき別の命令があるか判定される。別の命令があれば、プロセスはステップ3100に戻り、命令がなければ、プロセスはステップ3122で終了する。このように、診断回路は、トレース回路3006の制御フラグ3026に対応する診断制御フラグ3028を使用して、所与の条件命令についてトレースストリーム内に関連トレースデータ要素が予期されるか判定する。そのような関連トレースデータ要素があれば、そのトレースデータ要素に含まれるトレース条件値に基づいて、条件命令の処理結果を判定することができる。関連トレースデータ要素がない場合には、以前の条件命令と関連付けられたトレースデータ要素が得られ、その中に入っているトレース条件値によって、現在の条件命令の処理結果を判定することができる。条件更新命令が現れた時点で、診断制御フラグ3028がクリアされる。これは、次の条件命令が関連トレースデータ要素を有することが予期されることを示す。図24は、図20に示したプログラム命令のストリームに図22および図9の方法を適用する例を示す。先と同様、メモリロケーション1600の分岐命令による分岐成立の結果がトレースされる。トレース回路3006は、メモリロケーション2000に格納された条件更新命令CMPの実行に応答し、図22のステップ3082に従って自らの制御フラグ3026をクリアする。同様の方法により、診断回路3016は、命令を分析する際、図23のステップ3118に従って診断制御フラグ3028をクリアすることにより、条件更新命令CMPのインジケーションに応答する。トレース回路3006は、メモリロケーション2004に格納された条件命令MOVNEが現れると、その時点で制御フラグ3026がクリア状態であることを確認し、図22のステップ3076に従ってトレース条件値CPSRを含むトレースデータ要素が生成される。次に図22のステップ3078に従って制御フラグがセットされる。対応する方法により、診断回路3016は、命令の分析時に、メモリロケーション2004に位置する条件命令MOVNEのインジケーションを検出する。続いてクリア状態の診断制御フラグ3028に対する応答として、トレースストリーム内の関連トレースデータ要素を発見するとともに、そのトレースデータ要素に含まれるトレース条件値に基づいてMOVNE命令の処理結果を判定する。次に診断回路3016は、図23のステップ3110で診断制御フラグ3028をセットする。さらに、トレース回路3006は、メモリロケーション2008および200Cの後続の条件命令について、制御フラグ3026がセット状態であることを検出する。したがって、対応するトレースデータ要素は生成されない。対応する方法により、診断回路3016は、診断制御フラグ3028がセット状態にあることを検出し、図23のステップ3112および3114に従って、メモリロケーション2004に格納された以前の条件命令の関連トレースデータ要素を発見する。診断回路3016は、メモリロケーション2004の命令に関する以前のトレースデータ要素に基づき、メモリロケーション2008および200Cの命令の処理結果を判定する。このようにしてトレースストリームが生成されえ、そのストリーム内で条件フラグ3022の更新後に実行される最近の条件命令がトリガーとなって、トレース条件値を含むトレースデータ要素が生成される。図25~27は、トレース回路3006が、どの条件フラグ3022がすでにトレースされているか監視し、条件命令に関するトレースデータ要素の生成時に、まだトレースされていないその条件命令が必要とする追加的な条件フラグをトレースする実施形態を示す。この方法は、各々が条件フラグ3022の中のそれぞれ1つに対応する複数の制御フラグ3026を利用するものであり、各制御フラグ3026にはクリア状態とセット状態かある。診断回路3016は、対応する診断制御フラグ3028のグループを有し、これにもクリア状態とセット状態がある。図25は、処理回路3004の動作をトレースする方法を示す。ステップ3140において、処理回路3004は次の命令を実行し、この命令の実行がトレース回路3006によって監視される。ステップ3142では、その命令が条件命令であるか判定される。その命令が条件命令であれば、ステップ3144において、トレース回路3006は、その条件命令の結果を判定するために必要とされる条件フラグ3022のサブセットを確定する。たとえば、図16に示す各条件について、この表に示した対応するフラグが条件フラグの所要サブセットである。たとえば、HI条件はCフラグおよびZフラグを必要とする。ステップ3146において、トレース回路3006は、条件フラグ3022の所要サブセットに対応する制御フラグ3026のいずれかがクリアされているか判定する。条件フラグの所要サブセットに対応する制御フラグがいずれもクリア状態でなければ、プロセスはステップ3152に進む。条件フラグの所要サブセットに対応する制御フラグのいずれか1つまたは複数がクリア状態ならば、ステップ3148において、トレース回路3006は、トレース条件値を含むトレースデータ要素を生成および出力する。対応する制御フラグ3026がクリア状態である所要サブセットの条件フラグ3022が少なくともこのトレース条件値によって示される。任意的に、このトレース条件値は、他の条件フラグを示すこともでき、あるいはすべての条件フラグ3022を示すこともできる。続いて、ステップ3150では、トレース回路3006は、トレース条件値に示された条件フラグに対応する制御フラグをセットする。ステップ3142において、当該命令が条件命令でないと判定された場合、ステップ3144~3150は省略される。ステップ3152において、トレース回路3006は、処理回路3004によって実行中の命令が条件更新命令であるか判定する。その命令が条件更新命令であれば、ステップ3154において、その条件更新命令の結果として更新される条件フラグ3022に対応した制御フラグ3026が少なくともクリアされる。任意的に、ステップ3154において、トレース回路3006は、他の制御フラグ3026をクリアすることもでき、あるいはすべての制御フラグ3026をクリアすることもできる。当該命令が条件更新命令でなければ、ステップ3154は省略される。ステップ3156では、処理回路3004によって処理される別の命令があるか判定される。そのような命令があれば、プロセスはステップ3140に戻る。他の場合には、プロセスはステップ3158で終了する。図25の方法を実装するための疑似コードを次に示す用語markerは制御フラグ3026を示す。OnaninstructionIfinstructionisconditionalIfanymarkersforflagsrequiredbythisinstructionareclearTraceatleasttheflagsrequiredSetmarkersfortherequiredflagsIfinstructionupdatestheCPSRClearatleastthemarkersforupdatedflags代替的に、図25の方法を実装するために次の疑似コードを使用することもできる。OnaninstructionIfinstructionisconditionalIfanymarkersforflagsrequiredbythisinstructionareclearTraceatleasttheflagsrequiredSetmarkersforthetracedflagsIfinstructionupdatestheCPSRClearatleastthemarkersforupdatedflags図26は、図25の方法によって生成されたトレースストリームを分析する方法を示す。ステップ3160において、診断回路3016は、処理回路3004によって実行された命令のインジケーションが示す次の命令を分析する。ステップ3162で次の命令が条件命令であると判定された場合、ステップ3164において、診断回路3016は、その命令に関する条件フラグの所要サブセットを確定し、その条件フラグの所要サブセットに対応する診断制御フラグ3028がクリア状態またはセット状態のいずれであるか判定する。ステップ3166では、ステップ3164において条件フラグの所要サブセットに対応する診断制御フラグ3028のいずれかがクリア状態と判定された場合、診断回路3016は、最初のトレース条件値を含む関連トレースデータ要素をトレースストリーム内で発見する。クリア状態の診断制御フラグ3028に対応する条件フラグの所要サブセットの値が少なくともその最初のトレース条件値によって示される。次に診断回路3016は、クリア状態であり、かつ所望のサブセットの条件フラグ3022に対応する診断制御フラグ3028をセットする。ステップ3168では、ステップ3164において条件フラグの所要サブセットに対応する診断制御フラグ3028のいずれかがセット状態と判定された場合、診断回路3016は、少なくとも1つの以前の条件命令に関する少なくとも1つの追加的なトレースデータ要素を発見する。その追加的なトレースデータ要素には、セット状態の診断制御フラグに対応する条件フラグ値を示す少なくとも1つの追加的なトレース条件値が含まれる。次にステップ3170において、診断回路3016は、最初のトレース条件値および/または少なくとも1つの追加的なトレース条件値ステップ3166および3168でどのトレース条件値がアクセスされたかによるを分析し、それらのトレース条件値に基づいて現在の条件命令の処理結果を判定する。ステップ3162で当該命令が条件命令でないと判定された場合、ステップ3164~3170は省略される。ステップ3172において、診断回路3016は、指示された次の命令が条件更新命令であるか判定する。その命令が条件更新命令であれば、ステップ3174において、条件更新命令の実行の結果として更新された条件フラグ3022どの条件フラグ3022が更新されたかを診断回路3016は条件更新命令の処理結果の推定に基づいて判定できるに対応する診断制御フラグ3028が少なくともクリアされる。任意的に、ステップ3174において、診断回路3016は、他の診断制御フラグ3028をクリアすることもでき、あるいはすべての診断制御フラグ3028をクリアすることもできる。ステップ3172で次の命令が条件更新命令でない場合、ステップ3174は省略される。ステップ3176では、分析すべき別の命令があるか判定される。別の命令があれば、プロセスはステップ3160に戻り、他の場合にはプロセスはステップ3178で終了する。図27は、先に示したプログラム命令のストリームに図25および図26の方法を適用する例を示す。この例では、条件更新命令に応答してすべての制御フラグ3026および診断制御フラグ3028がクリアされると仮定しているが、前述のように、すでに更新されている条件フラグ3022に対応する制御フラグ3026、3028のみをトレース回路3006および診断回路3016がクリアするような実施形態を提供することも可能である。図27では、分岐命令に関して生成されたトレースデータ要素内に分岐成立という結果が示されている。診断回路3016は、この分岐成立の結果から、処理回路3004によってどの命令が実行されたかを判定することができる。メモリロケーション2000に条件更新命令CMPが現れた時点で、トレース回路3006はすべての制御フラグ3026をクリアする。同様に、条件更新命令CMPが現れた時点で、診断回路3016は自らの診断制御フラグ3028をすべてクリアする。メモリロケーション2004に位置する条件命令MOVNEの実行時に、トレース回路3006は、不等条件NEについて、条件フラグの所要サブセットがZフラグであると判断する図16参照。図25のステップ3146において、トレース回路3006は、Z条件フラグに対応する制御フラグ3026がクリア状態であることを確認し、ステップ3148において、少なくともZフラグの値を示すトレース条件値が入ったトレースデータ要素を生成する。次に図25のステップ3150において、Zフラグに対応する制御フラグがセットされる。対応する方法により、トレースストリームの分析時にメモリロケーション2004の条件命令MOVNEが現れると、診断回路3016は、条件フラグの所要サブセットがZフラグであると判断する。この時点で、Z条件フラグに対応する診断制御フラグ3028はクリアされており、診断回路3016は、そのMOVNE命令に対応する関連トレースデータ要素があると判断する。診断回路3016は、その関連トレースデータ要素を発見し、このトレースデータ要素には、Zフラグの値を示すトレース条件値が入っている。診断回路3016は、メモリロケーション2004に格納されたMOVNE命令に関するトレース条件値に基づいて処理結果を判定する。続いて診断回路3016は、Zフラグに対応する診断制御フラグ3028をセットする。メモリロケーション2008の条件命令MOVEQが現れると、トレース回路3006は、相等条件EQが満たされているか判定するためのフラグの所要サブセットが同じくZフラグであると判断する図16参照。図25のステップ3146において、トレース回路3006は、Zフラグに対応する制御フラグがセット状態であることを確認する。図25のステップ3148および3150は省略され、トレース条件値を含むトレースデータ要素は生成されない。トレースストリームの分析時に、診断回路3016は、Zフラグに対応する診断制御フラグ3028がセット状態であることを同様に検出することができる。したがって、診断回路3016は、図26のステップ3168において、メモリロケーション2004に格納された以前の条件命令MOVNEに関するトレースデータ要素を発見し、そのMOVNE命令に関するトレースデータ要素に含まれるトレース条件値に基づいて、そのMOVEQ命令の結果を判定する。メモリロケーション200Cには、HI条件に依存する条件加算命令ADDHIがある。この命令が実行されると、トレース回路3006は、条件フラグの所要サブセットがCフラグおよびZフラグであると判断する図16参照。トレース回路3006は、CフラグおよびZフラグに対応する当該制御フラグ3026のステータスを判定し、Z条件フラグに対応する制御フラグ3026はセット状態であるが、C条件フラグに対応する制御フラグ3026はクリア状態のままであることを確認する。したがって、図25のステップ3148において、トレース回路3006は、少なくともCフラグを示す値を含むトレースデータ要素を生成する。続いて、C条件フラグに対応する制御フラグ3026がセットされる。トレースストリームの分析時に、診断装置3012は、メモリロケーション200CのADDHI命令に関する条件フラグの所要サブセットがCフラグおよびZフラグであることを検出する。Cフラグに対応する診断制御フラグ3028はクリア状態であるため、ステップ3166において、診断回路3016は、Cフラグ値を示すADDHI命令の関連トレースデータ要素をトレースストリーム内で発見する。図26のステップ3168では、ステップ3164でZ条件フラグに対する診断制御フラグ3028がセット状態だったことにより、診断回路3016は追加的なトレースデータ要素も発見する。この例では、それに該当するトレースデータ要素はメモリロケーション2004のMOVNE命令に関して生成されたトレースデータ要素である。図26のステップ3170において、診断回路3016は、メモリロケーション2004のMOVNE命令に関するトレースデータ要素に含まれるトレース条件値とメモリロケーション200CのADDHI命令に関するトレースデータ要素に含まれるトレース条件値の両方に基づいて、ADDHI命令の処理結果を判定する。同様の方法により、図27に示す後続の命令について、トレース回路6はトレースデータを生成し、診断回路16はトレースデータを分析する。上記の実施形態では、条件フラグ3022の更新時に制御フラグ3026および診断制御フラグ3028がクリアされるように説明しているが、他のイベントも制御フラグ3026または診断制御フラグ3028がクリアされるトリガーになりえる。たとえば、例外イベントによって制御フラグがクリアされることがある。例外イベントによってトリガーされた例外ハンドラをトレース回路3006がトレース中ならば、例外イベント発生時に制御フラグ3026をクリアすることにより、例外ハンドラの開始時に条件フラグ3022が必ずトレースされることになる。あるいは、例外ハンドラをトレース中でなければ、例外イベント発生時に制御フラグ3026をクリアすることにより、例外処理からの復帰後に条件フラグ3022が必ずトレースされることになる。また、トレース回路3006は、制御フラグを定期的にクリアしてもよい。これにより、定期的にトレース条件値がトレースストリームに入れられ、それが診断装置3012のための参照点になる。診断回路3016は、参照点で与えられるトレース条件値によって、以前のトレースデータ要素からの情報なしで条件フラグの状態が判定可能になるため、その参照点でトレースデータの分析を開始することができる。これが有用であるのは、診断回路3016が目的のトレースストリームの領域に直接ジャンプでき、トレースストリーム全体を調べる必要がないためである。また、処理性能を向上させる目的で、一部のプロセッサは、命令を実際に実行すべきか確認される前に命令の投機的実行を行うことができる。しかし、1つ以上の投機的に実行された命令が実際には実行すべきではなかったということも起こりえる。誤投機を検出した場合、プロセッサは、誤って実行された命令があれば、その結果を無効にし、その誤って実行された命令の実行前のプロセッサ状態を回復させることができる。誤って実行された命令の数については、トレース回路3006が確認できないこともある。誤投機の訂正によって得られた条件フラグ値をトレースストリームから判定できるようにするため、トレース回路3006は、誤投機の検出時に制御フラグ3026をクリアすることができる。これらのいずれのイベントに対しても、トレース回路3006は、制御フラグ3026がクリアされていることを示す情報をトレースストリームに入れることができる。診断回路3016は、診断制御フラグ3028をクリアすることにより、この情報に応答することができる。図22~図27に示したのは、条件フラグ3022の値を示すトレース条件値がトレースストリームに含まれることにより、診断装置3012による条件命令の結果の判定が可能とされる実施形態である。しかし、これらの手法は、値を示す別の種類の結果たとえば、成功/失敗という結果がトレースストリームに含まれ、それにより条件命令の結果が判定可能とされるような実施形態にも適用することができる。以上、添付の図面を参照して本発明の具体的な実施例を詳しく説明したが、当然理解されるように、本発明はそれらの厳密な実施形態に限定されず、当業者であれば、添付の請求項によって確定される本発明の範囲および趣旨から逸脱することなく、そこにさまざまな変更および改変を加えることができる。"