(57)【特許請求の範囲】
【請求項１】
プログラム命令に応答して、処理操作を実行するように構成された処理回路と、
前記処理回路の条件を示す、少なくとも１つの条件フラグを格納するように構成された、条件ステータス格納場所と、
前記プログラム命令に応答して、前記処理回路によって実行された前記処理操作を示すトレースデータ要素を生成するように構成されたトレース回路と、を備え、
前記処理回路は、少なくとも１つの条件付き命令に応答して、前記少なくとも１つの条件フラグのサブセットの現在の値に基づいて条件付き操作を実行し、
前記トレース回路は、前記処理回路が少なくとも１つの条件付き命令を処理することに応答して、前記少なくとも１つの条件フラグのうち、前記サブセットを少なくとも含む条件フラグを示す、トレースされた条件値を含む、トレースデータ要素を生成するように構成され、前記トレースされた条件値が、前記少なくとも１つの条件付き命令の処理結果を判定するための情報を提供し、
前記トレース回路は制御フラグを格納するように構成され、前記トレース回路は、前記制御フラグに応答して、前記トレースされた条件値を含む前記トレースデータ要素を、条件付き命令について、生成するか否かを選択し、
前記制御フラグは、第１の状態および第２の状態を有し、
前記トレース回路は、前記少なくとも１つの条件フラグの更新に応答して、前記制御フラグを前記第１の状態にし、
前記トレース回路は、前記処理回路が条件付き命令を処理することに応答して、
（ａ）前記制御フラグが前記第１の状態にあるかどうかを判定し、かつ
（ｂ）前記制御フラグが前記第１の状態にある場合、前記トレースされた条件値を含むトレースデータ要素を生成して、前記制御フラグを前記第２の状態にする、処理装置。
【請求項２】
前記トレースされた条件値は、前記少なくとも１つの条件フラグのうち、前記サブセットを少なくとも含む条件フラグの値を識別する識別子を含む、請求項１に記載の処理装置。
【請求項３】
前記トレースされた条件値は、前記少なくとも１つの条件フラグのうち、前記サブセットを少なくとも含む条件フラグの値を含む、請求項１に記載の処理装置。
【請求項４】
前記処理回路はさらに、少なくとも１つの条件更新命令に応答して、関連付けられた処理操作を実行し、かつ前記関連付けられた処理操作の処理結果に基づいて前記少なくとも１つの条件フラグを更新する、
請求項１〜３のいずれか一項に記載の処理装置。
【請求項５】
前記トレース回路は、前記処理回路が前記少なくとも１つの条件付き命令のうちの前記少なくとも１つを処理することに応答して、前記少なくとも１つの条件付き命令のうちの前記少なくとも１つを処理するときに、前記少なくとも１つの条件フラグの少なくとも前記サブセットの前記現在の値を示す前記トレースされた条件値を有する前記トレースデータ要素を生成するように構成される、請求項１〜４のいずれか一項に記載の処理装置。
【請求項６】
前記少なくとも１つの条件付き命令は、前記少なくとも１つの条件フラグの更新後に処理される、第１の条件付き命令を含む、請求項１〜５のいずれか一項に記載の処理装置。
【請求項７】
前記トレース回路は、前記トレースされた条件値を含む前記トレースデータ要素の生成をトリガするために、前記プログラム命令のうちの前記少なくとも１つの条件付き命令に含まれている命令を選択するように構成される、請求項１〜６のいずれか一項に記載の処理装置。
【請求項８】
前記少なくとも１つの条件付き命令の前記条件付き操作は、非分岐操作である、請求項１〜７のいずれか一項に記載の処理装置。
【請求項９】
プログラム命令に応答して処理操作を実行するための処理手段と、
前記処理手段の条件を示す、少なくとも１つの条件フラグを格納するための条件ステータス格納手段と、
前記プログラム命令に応答して前記処理手段によって実行された前記処理操作を示す、トレースデータ要素を生成するためのトレース手段と、を含み、
前記処理手段は、少なくとも１つの条件付き命令に応答して、前記少なくとも１つの条件フラグのサブセットの現在の値に基づいて条件付き操作を実行し、
前記トレース手段は、前記処理手段が少なくとも１つの条件付き命令を処理することに応答して、前記少なくとも１つの条件フラグのうち、前記サブセットを少なくとも含む条件フラグを示す、トレースされた条件値を含むトレースデータ要素を生成するように構成され、前記トレースされた条件値が、前記少なくとも１つの条件付き命令の処理結果を判定するための情報を提供し、
前記トレース手段は制御フラグを格納するように構成され、前記トレース手段は、前記制御フラグに応答して、前記トレースされた条件値を含む前記トレースデータ要素を、条件付き命令について、生成するか否かを選択し、
前記制御フラグは、第１の状態および第２の状態を有し、
前記トレース手段は、前記少なくとも１つの条件フラグの更新に応答して、前記制御フラグを前記第１の状態にし、
前記トレース手段は、前記処理手段が条件付き命令を処理することに応答して、
（ａ）前記制御フラグが前記第１の状態にあるかどうかを判定し、かつ
（ｂ）前記制御フラグが前記第１の状態にある場合、前記トレースされた条件値を含むトレースデータ要素を生成して、前記制御フラグを前記第２の状態にする、処理装置。
【請求項１０】
プログラム命令に応答して、処理装置によって実行された処理操作を監視するためのトレースユニットであって、前記処理装置は、前記処理装置の条件を示す、少なくとも１つの条件フラグを格納するように構成された条件ステータス格納場所を備え、前記処理装置は、少なくとも１つの条件付き命令に応答して、前記少なくとも１つの条件フラグのサブセットの現在の値に基づいて条件付き操作を実行し、前記トレースユニットは、
前記プログラム命令に応答して、前記処理装置によって実行された前記処理操作を示すトレースデータ要素を生成するように構成されたトレース回路を備え、
前記トレース回路は、前記処理装置が少なくとも１つの条件付き命令を処理することに応答して、前記少なくとも１つの条件フラグのうち、前記サブセットを少なくとも含む条件フラグを示す、トレースされた条件値を含むトレースデータ要素を生成するように構成され、前記トレースされた条件値が、前記少なくとも１つの条件付き命令の処理結果を判定するための情報を提供し、
前記トレース回路は制御フラグを格納するように構成され、前記トレース回路は、前記制御フラグに応答して、前記トレースされた条件値を含む前記トレースデータ要素を、条件付き命令について、生成するか否かを選択し、
前記制御フラグは、第１の状態および第２の状態を有し、
前記トレース回路は、前記少なくとも１つの条件フラグの更新に応答して、前記制御フラグを前記第１の状態にし、
前記トレース回路は、前記処理装置が条件付き命令を処理することに応答して、
（ａ）前記制御フラグが前記第１の状態にあるかどうかを判定し、かつ
（ｂ）前記制御フラグが前記第１の状態にある場合、前記トレースされた条件値を含むトレースデータ要素を生成して、前記制御フラグを前記第２の状態にする、トレースユニット。
【請求項１１】
プログラム命令に応答して、処理装置によって実行された処理操作を監視するためのトレースユニットであって、前記処理装置は、前記処理装置の条件を示す、少なくとも１つの条件フラグを格納するための条件ステータス格納手段を含み、前記処理装置は、少なくとも１つの条件付き命令に応答して、前記少なくとも１つの条件フラグのサブセットの現在の値に基づいて条件付き操作を実行し、前記トレースユニットは、
前記プログラム命令に応答して、前記処理装置によって実行された前記処理操作を示すトレースデータ要素を生成するためのトレース手段を含み、
前記トレース手段は、前記処理装置が少なくとも１つの条件付き命令を処理することに応答して、前記少なくとも１つの条件フラグのうち、前記サブセットを少なくとも含む条件フラグを示す、トレースされた条件値を含むトレースデータ要素を生成するように構成され、前記トレースされた条件値が、前記少なくとも１つの条件付き命令の処理結果を判定するための情報を提供し、
前記トレース手段は制御フラグを格納するように構成され、前記トレース手段は、前記制御フラグに応答して、前記トレースされた条件値を含む前記トレースデータ要素を、条件付き命令について、生成するか否かを選択し、
前記制御フラグは、第１の状態および第２の状態を有し、
前記トレース手段は、前記少なくとも１つの条件フラグの更新に応答して、前記制御フラグを前記第１の状態にし、
前記トレース手段は、前記処理装置が条件付き命令を処理することに応答して、
（ａ）前記制御フラグが前記第１の状態にあるかどうかを判定し、かつ
（ｂ）前記制御フラグが前記第１の状態にある場合、前記トレースされた条件値を含むトレースデータ要素を生成して、前記制御フラグを前記第２の状態にする、トレースユニット。
【請求項１２】
プログラム命令に応答して、処理装置によって実行された処理操作を示すトレースデータを分析するための診断装置であって、前記処理装置は、前記処理装置の条件を示す、少なくとも１つの条件フラグを格納するように構成された条件ステータス格納場所を備え、前記処理装置は、少なくとも１つの条件付き命令に応答して、前記少なくとも１つの条件フラグのサブセットの現在の値に基づいて条件付き操作を実行し、前記診断装置は、
前記処理装置が少なくとも１つの条件付き命令を処理することに応答して生成された少なくとも１つのトレースデータ要素を含むトレースデータを受信するように構成されたトレース入力部であって、前記少なくとも１つのトレースデータ要素が、前記少なくとも１つの条件フラグのうち、前記サブセットを少なくとも含む条件フラグを示す、トレースされた条件値を含む、トレース入力部と、
前記少なくとも１つのトレースデータ要素に含まれている、前記トレースされた条件値に基づいて、前記少なくとも１つの条件付き命令の処理結果を判定するように構成された診断回路と、を備え、
前記診断回路は、第１の状態および第２の状態を有する診断制御フラグを格納するように構成され、
前記トレース入力部は、前記処理装置によって処理された前記プログラム命令の指示を受信し、
前記診断回路は、前記処理装置が前記少なくとも１つの条件フラグを更新する指示に応答して、前記診断制御フラグを前記第１の状態にし、
前記診断回路は、前記処理装置が条件付き命令を処理する指示に応答して、
（ａ）前記診断制御フラグが前記第１の状態にあるかどうかを判定し、
（ｂ）ステップ（ａ）において前記診断制御フラグが前記第１の状態にある場合、前記条件付き命令について関連付けられたトレースデータ要素を前記トレースデータ内から探し出し、前記関連付けられたトレースデータ要素に含まれている前記トレースされた条件値に基づいて、前記条件付き命令の前記処理結果を判定し、前記診断制御フラグを前記第２の状態にし、かつ
（ｃ）ステップ（ａ）において前記診断制御フラグが前記第２の状態にある場合、以前の条件付き命令に関連付けられた、さらなるトレースデータ要素を前記トレースデータ内から探し出し、前記さらなるトレースデータ要素に含まれている前記トレースされた条件値に基づいて、前記条件付き命令の前記処理結果を判定する、診断装置。
【請求項１３】
前記処理装置はさらに、少なくとも１つの条件更新命令に応答して、関連付けられた処理操作を実行し、前記関連付けられた処理操作の処理結果に基づいて、前記少なくとも１つの条件フラグを更新する、請求項１２に記載の診断装置。
【請求項１４】
プログラム命令に応答して、処理装置によって実行された処理操作を示すトレースデータ要素を分析するための診断装置であって、前記処理装置は、前記処理装置の条件を示す、少なくとも１つの条件フラグを格納するための条件ステータス格納手段を含み、前記処理装置は、少なくとも１つの条件付き命令に応答して、前記少なくとも１つの条件フラグのサブセットの現在の値に基づいて条件付き操作を実行し、前記診断装置は、
前記処理装置が少なくとも１つの条件付き命令を処理することに応答して生成されたトレースデータ要素を含むトレースデータを受信するための入力手段であって、前記トレースデータ要素が、前記少なくとも１つの条件フラグのうち、前記サブセットを少なくとも含む条件フラグを示す、トレースされた条件値を含む、入力手段と、
前記少なくとも１つの条件付き命令について前記トレースデータ要素に含まれている前記トレースされた条件値に基づいて、前記少なくとも１つの条件付き命令の処理結果を判定するための診断手段と、を含み、
前記診断手段は、第１の状態および第２の状態を有する診断制御フラグを格納するように構成され、
前記入力手段は、前記処理装置によって処理された前記プログラム命令の指示を受信し、
前記診断手段は、前記処理装置が前記少なくとも１つの条件フラグを更新する指示に応答して、前記診断制御フラグを前記第１の状態にし、
前記診断手段は、前記処理装置が条件付き命令を処理する指示に応答して、
（ａ）前記診断制御フラグが前記第１の状態にあるかどうかを判定し、
（ｂ）ステップ（ａ）において前記診断制御フラグが前記第１の状態にある場合、前記条件付き命令について関連付けられたトレースデータ要素を前記トレースデータ内から探し出し、前記関連付けられたトレースデータ要素に含まれている前記トレースされた条件値に基づいて、前記条件付き命令の前記処理結果を判定し、前記診断制御フラグを前記第２の状態にし、かつ
（ｃ）ステップ（ａ）において前記診断制御フラグが前記第２の状態にある場合、以前の条件付き命令に関連付けられた、さらなるトレースデータ要素を前記トレースデータ内から探し出し、前記さらなるトレースデータ要素に含まれている前記トレースされた条件値に基づいて、前記条件付き命令の前記処理結果を判定する、診断装置。
【請求項１５】
データ処理のための方法であって、
プログラム命令に応答して、処理装置を使用して処理操作を実行するステップと、
前記処理装置の条件を示す、少なくとも１つの条件フラグを格納するステップと、
前記処理操作を示すトレースデータ要素を生成するステップと、を含み、
処理操作を実行する前記ステップは、少なくとも１つの条件付き命令に応答して、前記少なくとも１つの条件フラグのサブセットの現在の値に基づいて、条件付き操作を実行することを含み、
トレースデータ要素を生成する前記ステップは、少なくとも１つの条件付き命令に応答して、前記少なくとも１つの条件フラグのうち、前記サブセットを少なくとも含む条件フラグを示す、トレースされた条件値を含むトレースデータ要素を生成することを含み、前記トレースされた条件値が、前記少なくとも１つの条件付き命令の処理結果を判定するための情報を提供し、
前記方法は、制御フラグを格納するステップを含み、生成する前記ステップは、前記制御フラグに応答して、前記トレースされた条件値を含む前記トレースデータ要素を、条件付き命令について、生成するか否かを選択し、
前記制御フラグは、第１の状態および第２の状態を有し、
前記少なくとも１つの条件フラグの更新に応答して、前記制御フラグは前記第１の状態にされ、
前記処理操作を実行するステップにより、条件付き命令を処理することに応答して、生成する前記ステップは、
（ａ）前記制御フラグが前記第１の状態にあるかどうかを判定するステップと、
（ｂ）前記制御フラグが前記第１の状態にある場合、前記トレースされた条件値を含むトレースデータ要素を生成して、前記制御フラグを前記第２の状態にするステップと
を含む、データ処理のための方法。
【請求項１６】
プログラム命令に応答して、処理装置によって実行された処理操作を示すトレースデータ要素を分析するための方法であって、前記処理装置は、前記処理装置の条件を示す、少なくとも１つの条件フラグを格納するように構成された条件ステータス格納場所を備え、前記処理装置は、少なくとも１つの条件付き命令に応答して、前記条件フラグのサブセットの現在の値に基づいて条件付き操作を実行し、前記方法は、
前記処理装置が少なくとも１つの条件付き命令を処理することに応答して生成されたトレースデータ要素を含むトレースデータを受信するステップであって、前記トレースデータ要素は、前記少なくとも１つの条件フラグのうち、前記サブセットを少なくとも含む条件フラグを示すトレースされた条件値を含む、ステップと、
前記少なくとも１つの条件付き命令について前記トレースデータ要素に含まれている前記トレースされた条件値に基づいて、前記少なくとも１つの条件付き命令の処理結果を判定するステップと、を含み、
前記方法は、診断制御フラグを格納するステップを含み、前記診断制御フラグは、第１の状態および第２の状態を有し、
受信する前記ステップは、前記処理装置によって処理された前記プログラム命令の指示を受信するステップを含み、
前記方法は、前記処理装置が前記少なくとも１つの条件フラグを更新する指示を受信することに応答して、前記診断制御フラグを前記第１の状態にするステップを含み、
前記処理装置が条件付き命令を処理する指示に応答して、判定する前記ステップは、
（ａ）前記診断制御フラグが前記第１の状態にあるかどうかを判定するステップと、
（ｂ）ステップ（ａ）において前記診断制御フラグが前記第１の状態にある場合、前記条件付き命令について関連付けられたトレースデータ要素を前記トレースデータ内から探し出し、前記関連付けられたトレースデータ要素に含まれている前記トレースされた条件値に基づいて、前記条件付き命令の前記処理結果を判定し、前記診断制御フラグを前記第２の状態にするステップと、
（ｃ）ステップ（ａ）において前記診断制御フラグが前記第２の状態にある場合、以前の条件付き命令に関連付けられた、さらなるトレースデータ要素を前記トレースデータ内から探し出し、前記さらなるトレースデータ要素に含まれている前記トレースされた条件値に基づいて、前記条件付き命令の前記処理結果を判定するステップと
を含む、方法。
【請求項１７】
請求項１６の方法を実行するようにコンピュータを制御するためのコンピュータプログラムを格納する、非一時的な記憶媒体。
【請求項１８】
プログラム命令に応答して、処理操作を実行するように構成された処理回路と、
前記プログラム命令に応答して、前記処理回路によって実行された前記処理操作を示す、トレースデータ要素を生成するように構成されたトレース回路と、を備え、
前記処理回路は、少なくとも１つの条件付き命令に応答して、前記処理回路の条件に基づいて少なくとも１つの条件付き操作を実行し、
前記トレース回路は、第１の状態および第２の状態を有する制御フラグを格納するように構成され、
前記トレース回路は、前記処理回路の前記条件の更新に応答して、前記制御フラグを前記第１の状態にし、
前記トレース回路は、前記処理回路が前記少なくとも１つの条件付き命令のうちの１つを処理することに応答して、
（ａ）前記制御フラグが前記第１の状態にあるかどうかを判定し、かつ
（ｂ）前記制御フラグが前記第１の状態にある場合、前記少なくとも１つの条件付き命令の処理結果についての情報を提供するための値を示す結果を含む、トレースデータ要素を生成し、前記制御フラグを前記第２の状態にする、処理装置。
【請求項１９】
プログラム命令に応答して、処理操作を実行するための処理手段と、
前記プログラム命令に応答して、前記処理手段によって実行された前記処理操作を示す、トレースデータ要素を生成するためのトレース手段と、を備え、
前記処理手段は、少なくとも１つの条件付き命令に応答して、前記処理手段の条件に基づいて条件付き操作を実行し、
前記トレース手段は、第１の状態および第２の状態を有する制御フラグを格納するように構成され、
前記トレース手段は、前記処理手段の前記条件の更新に応答して、前記制御フラグを前記第１の状態にし、
前記トレース手段は、前記処理手段が前記少なくとも１つの条件付き命令のうちの１つを処理することに応答して、
（ａ）前記制御フラグが前記第１の状態にあるかどうかを判定し、かつ
（ｂ）前記制御フラグが前記第１の状態にある場合、前記少なくとも１つの条件付き命令の処理結果についての情報を提供するための値を示す結果を含む、トレースデータ要素を生成し、前記制御フラグを前記第２の状態にする、処理装置。
【請求項２０】
プログラム命令に応答して、処理装置を使用して処理操作を実行するステップであって、処理操作を実行する前記ステップは、少なくとも１つの条件付き命令に応答して、処理回路の条件に基づいて条件付き操作を実行することを含む、ステップと、
前記処理操作を示すトレースデータ要素を生成するステップであって、前記トレースデータ要素は、第１の状態および第２の状態を有する制御フラグに基づいて生成される、ステップとを含み、トレースデータ要素を生成する前記ステップは、
前記処理回路の前記条件の更新に応答して、前記制御フラグを前記第１の状態にすることと、
前記少なくとも１つの条件付き命令のうちの１つを処理することに応答して、（ａ）前記制御フラグが前記第１の状態にあるかどうかを判定し、かつ（ｂ）前記制御フラグが前記第１の状態にある場合、前記少なくとも１つの条件付き命令の処理結果についての情報を提供するための値を示す結果を含む、トレースデータ要素を生成し、前記制御フラグを前記第２の状態にすることと、を含む、データ処理のための方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理の分野に関する。より詳細には、本発明は、処理装置によって実行された処理操作のトレース、およびトレース中に生成されたトレースデータの分析に関する。
【背景技術】
【０００２】
処理装置において、トレース回路は、処理回路によって実行された処理操作を監視するために、および実行された処理操作を示すトレースデータを生成するために提供され得る。診断装置は、処理操作の処理結果を推測するために、トレースデータを分析することができる。処理結果は、処理装置が正しく動作しているかどうかを検証するために、期待された結果に照合され得る。
【０００３】
処理装置は、関連付けられた条件を特定する、条件付き命令を実行し得る。条件付き命令の処理結果は、条件付き命令の実行時に、関連付けられた条件が満たされたかどうかによって決まる。条件付き命令の実行がトレース回路によってトレースされると、次にトレース回路は、条件が成立または不成立かどうかの指示を含むトレースデータを生成することができる。トレースデータを分析するときに、その成立／不成立の指示は、条件付き命令の結果を判定するために使用することができる。
【０００４】
しかしながら、いくつかの先進のプロセッサをトレースする場合、条件的な結果の成立／不成立は、得るのが困難であり得る。いくつかのプロセッサは、互いに対して並行である、複数の実行ステージを有する処理パイプラインを含むことができる。いくつかのプロセッサは、パフォーマンスを向上するために、命令の適切ではない実行を行う場合がある。したがって、いつ、およびパイプラインにおけるどの時点で、成立／不成立の結果が利用可能になるかを、事前に予測することは困難となり得る。本技術は、条件付き命令のトレースを簡略化することを追求する。
【発明の概要】
【課題を解決するための手段】
【０００５】
一態様から見ると、本発明は、プログラム命令に応答して、処理操作を実行するように構成された処理回路と、前記処理回路の条件を示す、少なくとも１つの条件フラグを格納するように構成された、条件ステータス格納場所と、前記プログラム命令に応答して、前記処理回路によって実行された前記処理操作を示すトレースデータ要素を生成するように構成されたトレース回路とを備える、処理装置を提供し、前記処理回路は、少なくとも１つの条件付き命令に応答して、前記少なくとも１つの条件フラグのサブセットの現在の値に基づいて条件付き操作を実行し、前記トレース回路は、前記処理回路が少なくとも１つの選択された命令を処理することに応答して、前記少なくとも１つの条件フラグの少なくとも前記サブセットを示す、トレースされた条件値を含む、トレースデータ要素を生成するように構成され、前記トレースされた条件値が、前記少なくとも１つの条件付き命令の処理結果を判定するための情報を提供する。
【０００６】
処理装置は、処理回路の条件を示す、少なくとも１つの条件フラグを格納するための、条件ステータス格納場所（例えば、レジスタ等）を有してもよい。処理回路は、少なくとも１つの条件フラグの少なくともサブセットの現在の値に基づいて、条件付き命令を実行することができる。例えば、条件付き命令が実行されると、条件フラグのサブセットの現在の値が所与の条件を満たす場合、それに関連付けられた条件付き操作が実行され得るが、その条件が満たされない場合は、操作は実行されない。トレース回路は、処理回路が少なくとも１つの選択された命令を処理することに応答して、少なくとも１つの条件フラグの少なくともサブセットを示すトレースされた条件値を含む、トレースデータ要素を生成するように構成されてもよく、条件付き命令は、この少なくとも１つの条件フラグに基づく。トレースされた条件値は、少なくとも１つの条件付き命令の処理結果を判定するための情報を提供する。
【０００７】
本技術は、条件フラグの値が、条件付き命令の成立／不成立の結果よりも、一般により容易に利用可能であることを認識している。例えば、条件フラグは、しばしば、処理装置のアーキテクチャの状態の一部であるため、条件フラグは、いつ、および処理パイプラインのどの段階において命令の実行結果が利用可能になるかを監視する必要なく、処理パイプラインの早い段階において読み取られ得る。したがって、成立／不成立の結果よりも、条件フラグをトレースすることによって、トレース回路の構成は簡略化される。
【０００８】
トレースされた条件値は、異なる形式を有してもよい。一例において、トレースされた条件値は、少なくとも１つの条件フラグの少なくともサブセットの現在の値を含み得る。そのため、トレースデータ要素は、条件フラグの値を直接識別する。
【０００９】
あるいは、トレースされた条件値は、少なくとも１つの条件フラグの少なくともサブセットの値を識別する識別子を含んでもよい。これは、いくつかの場合において、条件フラグの実際の値をトレースするよりも効果的であり得る。例えば、条件フラグの値の、特定のパターンが他のパターンよりも多く見られる場合、最もよく見られるパターンには、条件フラグの実際の値よりも少ないビットを有する特定の識別子を割り当てることができる。これにより、トレース回路によって生成されるトレースデータの量が低減する傾向になるため、トレース帯域幅についての制約が軽減される。
【００１０】
条件フラグがトレースされる、命令ストリームの時点は、異なってもよく、必ずしも、その結果がトレースされた条件値を使用して判定される条件付き命令である必要はない。トレースされた条件値は、任意の選択された命令によって出力され得る。
【００１１】
一例において、処理回路は、少なくとも１つの条件更新命令に応答して、関連付けられた処理操作を実行し、その関連付けられた処理操作の処理結果に基づいて、少なくとも１つの条件フラグを更新する。この場合、条件フラグのトレースをトリガする、少なくとも１つの選択された命令は、少なくとも１つの条件更新命令を含んでもよい。例えば、条件更新命令は、比較命令を含んでもよく、この比較命令は、２つのデータの値を比較して、比較の結果に基づいて、少なくとも１つの条件フラグを更新し、この少なくとも１つの条件フラグは、比較命令の実行時にトレースされ得る。少なくとも１つの条件フラグが更新されるときに、トレースストリームに含まれるトレースされた条件値は、任意の後続の条件付き命令が、それに関連付けられた条件が成立したか、または不成立であったかを判定するための情報を提供する。
【００１２】
少なくとも１つの条件更新命令が実行されたことによって、トレースされた条件値が出力されると、トレースされた条件値は、少なくとも１つの条件更新命令を処理することによってもたらされる、条件フラグの更新された値を示し得る。そのため、この更新された値は、条件フラグの次の更新の前に発生する、任意の後続の条件付き命令の結果を判定するために使用することができる。
【００１３】
少なくとも１つの条件更新命令は、処理回路によって実行された全ての条件更新命令を含む必要はない。何らかの状況において、介在する条件付き命令なしに、いくつかの条件更新命令が連続して発生する場合があり、この場合には、最後の条件更新命令からもたらされた条件フラグの値が、条件付き命令によって使用される。そのため、全ての条件更新命令についてトレースされた条件値を生成する必要はない。
【００１４】
少なくとも１つの条件更新命令の代替として、またはそれに加えて、少なくとも１つの選択された命令が、少なくとも１つの条件付き命令のうちの少なくとも１つを含んでもよい。何らかの状況において、条件更新命令が実行されるときに、任意の後続の条件命令が、その条件更新命令によって生成された、更新された条件フラグの値を実際に使用するかどうかを判定することが困難である場合がある。そのため、代わりに、条件付き命令が、その条件付き命令によって使用される、少なくとも１つの条件フラグの少なくともサブセットをトレースする前に、少なくとも１つの条件フラグを使用するのを待つことがより効果的であり得る。
【００１５】
条件付き命令が実行されたことによって、トレースされた条件値が出力されると、トレースされた条件値は、条件付き命令を処理したときの、少なくとも１つの条件フラグの少なくとも関連したサブセットの現在の値を示し得る。
【００１６】
同様に、必ずしも、全ての条件付き命令の実行の度にトレースされた条件値を出力する必要はない。プログラムには、相互排他条件に関連付けられた、補助的な一組の条件付き命令が含まれてもよい。例えば、「等しい」という結果を生成する以前の処理操作によって決まる第１の条件付き命令には、「等しくない」という結果を生成する以前の処理操作によって決まる第２の条件付き命令が続いてもよい。この場合、第２の条件付き命令についての条件フラグの値をトレースする必要はなく、これは、その処理結果は第１の条件付き命令について生成されるトレースされた条件値から判定することができるためである。そのため、何らかの状況においては、選択された命令が、少なくとも１つの条件フラグの更新後に処理された第１の条件付き命令を含むことが好ましい場合がある。
【００１７】
全てのタイプの条件付き命令または条件更新命令がトレースユニットによってトレースされる必要はない。いくつかの例において、命令のタイプのサブセットのみが対象となり得る。この場合、条件付き命令または条件付き更新命令の関連するサブセットのみが、トレースされた条件値を含むトレースデータ要素の出力をトリガする。トレース回路は、トレースされた条件値を含むトレースデータ要素の生成をトリガするために、プログラム命令のうちの少なくとも１つの選択された命令に含まれる命令を選択するように構成されてもよい。例えば、トレース回路は、例えば、条件付き格納命令等のような、特定の条件付き命令のみというように、条件フラグがトレースされるべきである命令を示す制御信号に応答してもよい。
【００１８】
いくつかの種類の命令は、条件付き命令と条件更新命令の両方であり得ることに留意されたい。例えば、条件付き比較命令は、関連付けられた条件を有することができ、関連付けられた条件が満たされた場合に比較が行われることを指定することができる。条件付き比較命令の実行時、関連付けられた条件が、少なくとも１つの条件フラグの現在の値によって満たされた場合に比較は行われ、少なくとも１つの条件フラグは、比較の結果に基づいて更新される。したがって、条件付き比較命令は、トレース回路の構成に依存して、条件付き命令として、もしくは条件更新命令としてのいずれか、または両方にトレースされ得る。
【００１９】
トレース回路は、制御フラグを格納するように構成されてもよく、トレース回路は、特定のプログラム命令が、トレースされた条件値を含むトレースデータ要素の生成をトリガするかを選択するために、制御フラグに対する責任を負う。例えば、トレース回路は、制御フラグを使用して、少なくとも１つの条件フラグの現在の状態がすでにトレースされたかどうかの経過を追い、次いで制御フラグを使用して、少なくとも１つの条件フラグが後続の命令によってトレースされるべきか否かを判定する。
【００２０】
一例において、制御フラグは第１の状態および第２の状態を有する。例えば、制御フラグは、第１および第２の状態のうちの１つを示す「０」の値と、第１および第２の状態のうちのもう一方を示す「１」の値とを有するビットを含んでもよい。トレース回路は、少なくとも１つの条件フラグの更新に応答して、制御フラグを第１の状態にすることができ、処理回路が条件付き命令を処理することに応答して、（ａ）前記制御フラグが前記第１の状態にあるかどうかを判定し、かつ（ｂ）前記制御フラグが前記第１の状態にある場合、前記トレースされた条件値を含むトレースデータ要素を生成して、前記制御フラグを前記第２の状態にすることができる。
【００２１】
そのため、制御フラグの第１の状態は、少なくとも１つの条件フラグは更新されたが、少なくとも１つの条件フラグの更新値は、まだトレースされていないことを示す。トレースされるべき条件付き命令が実行されたときに、制御フラグが第１の状態にある場合、条件付き命令の処理結果が、トレースデータから判定することができるように、トレースデータ要素がトレースされた条件値を含んで生成される。トレースされた条件値を含むトレースデータ要素の生成に続いて、少なくとも１つの条件フラグの現在の状態はすでにトレースされたため、後続の条件付き命令の実行によって少なくとも１つの条件フラグが再びトレースされる必要がないことを示すために、制御フラグは第２の状態にされる。制御フラグは、少なくとも１つの条件フラグがもう一度更新されると、第１の状態に戻される。この技術は、対応する命令の処理結果が、以前に生成されたトレースデータ要素に含まれた、トレースされた条件値からすでに判定され得る場合は、トレースされた条件値を含むトレースデータ要素は生成されないため、トレースデータの量を低減するのに役立つ。
【００２２】
いくつかの実施形態において、条件ステータス格納場所は、処理回路の個々の条件に対応する、複数の条件フラグを格納するように構成され得る。例えば、英国ケンブリッジ所在のＡＲＭ  Ｌｉｍｉｔｅｄ社によって設計されたプロセッサにおいて、条件フラグには、以前の処理の結果が負の値だったか否かを示すＮフラグ、以前の処理の結果がゼロだったか否かを示すＺフラグ、以前の処理操作がキャリー演算の結果をもたらしたか否かを示すＣフラグ、および以前の処理操作がオーバーフローの結果をもたらしたか否かを示すＶフラグが、一般に含まれる。他のタイプの条件フラグもまた可能である。
【００２３】
複数の条件フラグが存在する場合、特定の条件付き命令は全ての条件フラグに基づく必要はないが、それらの条件フラグの任意のサブセットに基づき得る。条件フラグの現在の値をトレースする場合、複数の条件フラグの関連するサブセットを示す、トレースされた条件値を有するトレースデータ要素を生成することによって、トレースデータの量は低減され得る。サブセットの一部ではない条件フラグは、トレースデータ要素に含まれることから省略され得る。
【００２４】
その一方で、トレース回路はまた、条件フラグのどのサブセットが条件付き命令によって実際に使用されているかに関わらず、複数の条件フラグのうちの全てを示しているトレースされた条件値を有するトレースデータ要素を生成するように構成され得る。これにより、何らかの状況において、条件ステータス格納場所の個々のフラグにアクセスするための回路を設ける必要がなくなる以降は、条件フラグの値にアクセスするために備えられるハードウェアの複雑性が低減され得る。
【００２５】
一実施形態において、トレース回路は、複数の条件フラグに対応する複数の制御フラグを格納するように構成され得る。トレース回路は、それぞれの制御フラグに応答して、対応する条件フラグを示す、トレースされた条件値を含むトレースデータ要素を、所与のプログラム命令について生成するか否かを選択することができる。それぞれの制御フラグは、例えば、対応する条件フラグが、そのフラグの直近の更新後からすでにトレースされたか否かの経過を追うために使用されてもよく、したがって、その条件フラグが、後のプログラム命令の実行によってトレースされる必要があるか否かを判定するために使用されてもよい。
【００２６】
一例において、複数の制御フラグはそれぞれ、第１の状態および第２の状態を有し、前記トレース回路は、前記複数の条件フラグのうちのいずれかの更新に応答して、少なくとも、更新された条件フラグに対応する制御フラグを前記第１の状態にし、前記トレース回路は、前記処理回路が、必要な条件フラグのサブセットに基づく、前記少なくとも１つの条件付き命令のうちの１つを処理することに応答して、（ａ）前記必要な条件フラグのサブセットに対応する、対応する制御フラグのいずれかが、前記第１の状態にあるかどうかを判定し、かつ（ｂ）前記対応する制御フラグのいずれかが前記第１の状態にある場合、対応する制御フラグが前記第１の状態にある前記必要なサブセットの、少なくとも条件フラグを示す、トレースされた条件値を含むトレースデータ要素を生成して、前記対応する制御フラグを前記第２の状態にする。
【００２７】
したがって、条件フラグのいずれかが更新された場合、少なくとも、更新された条件フラグに対応する制御フラグは、第１の状態にされ、対応する条件フラグはまだ、それらの更新された形態にトレースされていないことを示す。必要な条件フラグのサブセットに基づく条件付き命令を検出した場合、そのサブセットに対応する、対応する制御フラグのうちのいずれかが第１の状態にあるか否かが判定される。これらの対応する制御フラグのうちのいずれかが第１の状態にある場合、これは、対応する条件フラグはまだトレースされていないことを示すため、対応する制御フラグが第１の状態にある、少なくとも、必要なサブセットの条件フラグを示す、トレースされた条件値を含んで、トレースデータ要素が生成される。特定の条件フラグがトレースされる場合、その対応する制御フラグは、第２の状態にされる。条件付き命令を検出し、必要な条件フラグのサブセットのうちの１つが、第２の状態にある対応する制御フラグを有する場合、これは、条件フラグがすでにトレースされており、再度トレースされる必要がないことを示す。この技術は、条件フラグの現在の形態にまだトレースされておらず、特定の条件付き命令の処理結果を判定するために必要である条件フラグをトレースすることによって、トレースデータの量を低減するのに役立つ。
【００２８】
一実施形態において、複数の制御フラグのうちの全てが、条件フラグのサブセットのみが更新される場合であっても、条件の更新において第１の状態にされ得る。これにより、条件更新命令の結果としてどのフラグが実際に更新されたかを確認する必要がなくなる以降は、本技術を実装するためのハードウェアは簡素化され得る。
【００２９】
複数の制御フラグが提供される実施形態において、その制御フラグが第１の状態にある、必要なサブセットの条件フラグのみをトレースすることによって、トレースデータの量における最も大きな低減が達成され得る。それでもなお、必要な条件フラグのサブセットに対応する、対応する制御フラグのうちのいずれかが、条件付き命令の実行時に第１の状態にある場合、全ての条件フラグの値をトレースすることもまた可能である。これにより、条件フラグの状態を読み取るためのハードウェアが簡素化され得る。
【００３０】
１つ以上の制御フラグが、条件フラグの更新が発生するときに、第１の状態にされるものとして、上記に説明されてきた。しかし、これは、制御フラグが第１の状態にリセットされるときだけである必要はない。種々の他の事象によってもまた、制御フラグが第１の状態にされ得る。
【００３１】
上述のように、本技術は、全てのタイプの条件付き命令に適用される必要はない。本技術は、例えば、条件付き命令のサブセットだけのために使用されてもよい。一例において、少なくとも１つの条件付き命令の条件付き操作は、非分岐操作であり得る。いくつかのトレース回路は、例えば分岐予測のスキームを使用して、条件付き分岐命令の結果を判定するための、個別の機構を有し得る。したがって、いくつかの実施形態において、本技術は、条件付き非分岐命令のみに適用され、条件付き分岐命令のトレースはトレース回路によって別個に対処され得る。
【００３２】
別の態様から見ると、本発明は、プログラム命令に応答して処理操作を実行するための処理手段と、前記処理手段の条件を示す、少なくとも１つの条件フラグを格納するための、条件ステータス格納手段と、前記プログラム命令に応答して、前記処理手段によって実行された前記処理操作を示すトレースデータ要素を生成するためのトレース手段とを含む、処理装置を提供し、前記処理手段は、少なくとも１つの条件付き命令に応答して、前記少なくとも１つの条件フラグのサブセットの現在の値に基づいて、条件付き操作を実行し、前記トレース手段は、前記処理手段が少なくとも１つの選択された命令を処理することに応答して、前記少なくとも１つの条件フラグの少なくとも前記サブセットを示す、トレースされた条件値を含む、トレースデータ要素を生成するように構成され、前記トレースされた条件値が、前記少なくとも１つの条件付き命令の処理結果を判定するための情報を提供する。
【００３３】
さらなる態様から見ると、本発明は、プログラム命令に応答して、処理装置によって実行された処理操作を監視するためのトレースユニットを提供し、前記処理装置は、前記処理装置の条件を示す少なくとも１つの条件フラグを格納するように構成された、条件ステータス格納場所を備え、前記処理装置は、少なくとも１つの条件付き命令に応答して、前記少なくとも１つの条件フラグのサブセットの現在の値に基づいて、条件付き操作を実行し、前記トレースユニットは、前記プログラム命令に応答して、前記処理装置によって実行された前記処理操作を示す、トレースデータ要素を生成するように構成されたトレース回路を備え、前記トレース回路は、前記処理装置が少なくとも１つの選択された命令を処理することに応答して、前記少なくとも１つの条件フラグの少なくとも前記サブセットを示す、トレースされた条件値を含む、トレースデータ要素を生成するように構成され、前記トレースされた条件値が、前記少なくとも１つの条件付き命令の処理結果を判定するための情報を提供する。
【００３４】
さらなる態様から見ると、本発明は、プログラム命令に応答して、処理装置によって実行された処理操作を監視するためのトレースユニットを提供し、前記処理装置は、前記処理装置の条件を示す少なくとも１つの条件フラグを格納するための、条件ステータス格納手段を含み、前記処理装置は、少なくとも１つの条件付き命令に応答して、前記少なくとも１つの条件フラグのサブセットの現在の値に基づいて、条件付き操作を実行し、前記トレースユニットは、前記プログラム命令に応答して、前記処理装置によって実行された前記処理操作を示す、トレースデータ要素を生成するためのトレース手段を含み、前記トレース手段は、前記処理装置が少なくとも１つの選択された命令によって処理することに応答して、前記少なくとも１つの条件フラグの少なくとも前記サブセットを示す、トレースされた条件値を含む、トレースデータ要素を生成し、前記トレースされた条件値が、前記少なくとも１つの条件付き命令の処理結果を判定するための情報を提供する。
【００３５】
さらなる別の態様から見ると、本発明は、プログラム命令に応答して、処理装置によって実行された処理操作を示す、トレースデータを分析するための診断装置を提供し、前記処理装置は、前記処理装置の条件を示す少なくとも１つの条件フラグを格納するように構成された条件ステータス格納場所を備え、前記処理装置は、少なくとも１つの条件付き命令に応答して、前記少なくとも１つの条件フラグのサブセットの現在の値に基づいて、条件付き操作を実行し、前記診断装置は、前記処理装置が少なくとも１つの選択された命令を処理することに応答して生成された、少なくとも１つのトレースデータ要素を含むトレースデータを受信するように構成されたトレース入力部であって、前記少なくとも１つのトレースデータ要素が前記少なくとも１つの条件フラグの少なくとも前記サブセットを示す、トレースされた条件値を含む、トレース入力部と、前記少なくとも１つのトレースデータ要素に含まれた、前記トレースされた条件値に基づいて、前記少なくとも１つの条件付き命令の処理結果を判定するように構成された、診断回路とを備える。
【００３６】
診断装置は、対応するトレースユニットによって生成されたトレースデータを受信する。診断装置は、トレースデータを分析するための診断回路を有する。トレースデータ要素内に示された、トレースされた条件値を使用して、診断回路は、少なくとも１つの条件付き命令の処理結果を判定することができる。
【００３７】
診断装置は、どの命令が、トレースされながら処理装置によって実行されたかの指示を受信することができる。この指示は、いくつかの形態を有し得る。どの命令が処理装置によって実行されたかを示すために、トレースストリーム内に情報を提供することが可能である。しかし、診断装置が、実行されたプログラム命令を格納しているメモリに対するアクセスを有するようにすること（例えば、診断装置に、そこからプログラムの実行が始まる、命令のアドレスを提供することによって）、または、診断装置に、処理装置によって実行された、対応するプログラムコピーを格納するための、対応するメモリを設けることのいずれかによって、より効果的な実装が提供され得る。診断装置は、どの命令が処理装置によって実行されたかというこの指示を使用して、いつ、トレースされた条件値を含むトレースデータ要素を予期するかを判定することができる。一例において、少なくとも１つの選択された命令の指示に応答して、診断装置は、対応するデータ要素がトレースストリーム内に含まれていることを推測することができ、このデータ要素を探し出すことによって、診断回路は、少なくとも１つの条件付き命令の処理結果を判定することができる。選択された命令は、少なくとも１つの条件更新命令、または少なくとも１つの条件付き命令のうちの少なくとも１つであってもよい。
【００３８】
診断回路は、第１の状態および第２の状態を有する診断制御フラグを格納するように構成され得、前記トレース入力部は、前記処理装置によって処理された前記プログラム命令の指示を受信することができ、前記診断回路は、前記処理装置が前記少なくとも１つの条件フラグを更新したことの指示に応答して、前記診断制御フラグを、前記第１の状態にし、前記診断回路は、前記処理装置が条件付き命令を処理したことの指示に応答して、（ａ）前記制御フラグが前記第１の状態にあるかどうかを判定することができ、（ｂ）前記診断制御フラグが、前記第１の状態にある場合、前記条件付き命令について、関連付けられたトレースデータ要素を、前記トレースデータ内から探し出し、前記関連付けられたトレースデータ要素内に含まれている前記トレースされた条件値に基づいて、前記条件付き命令の前記処理結果を判定し、前記診断制御フラグを、前記第２の状態にすることができ、かつ（ｃ）前記診断制御フラグが前記第２の状態にある場合、以前の条件付き命令に関連付けられた、さらなるトレースデータ要素を、前記トレースデータ内から探し出し、前記さらなるトレースデータ要素内に含まれている前記トレースされた条件値に基づいて、前記条件付き命令の前記処理結果を判定することができる。
【００３９】
このようにして、診断回路は、トレースストリームを生成するときに、トレースユニットによって使用される制御フラグに対応する診断制御フラグを維持することができる。診断回路が、処理回路によって実行されたプログラム命令の指示を受信すると、これは、少なくとも１つの条件フラグの更新による結果であるが（この指示は、例えば、トレースストリーム内の条件更新の明確な指示、または診断回路が、トレースストリームを処理中に条件更新命令を検出したときに発生する黙示的な指示であってもよい）、診断装置は、自身の診断制御フラグを、条件付き命令の指示が次に見つかった際には、診断回路は、トレースストリームが、トレースされた条件値を含む関連付けられたトレースデータ要素を含むことを予期するべきであることを示す状態にする。
【００４０】
診断回路が、処理装置が条件付き命令を処理することの指示を受信すると、診断装置は、診断制御フラグが第１の状態にあるか否かを判定し、制御フラグが第１の状態にある場合、診断装置は、その条件付き命令について関連付けられたトレースデータ要素を探し出し、関連付けられたトレースデータ要素に含まれているトレースされた条件値に基づいて、条件付き命令の処理結果を判定する。診断装置は次いで、診断制御フラグを第２の状態にし、任意の後続の条件付き命令の結果は、関連付けられたトレースデータ要素に含まれている、トレースされた条件値から推測し得ることを示す。次いで、診断制御フラグが第２の状態にあるときに、条件付き命令の指示が検知された場合、診断装置は、以前の条件付き命令に関連付けられたトレースデータ要素に戻ることができ、先行のトレースデータ要素に含まれていた、トレースされた条件値に基づいて、最新の条件付き命令の処理結果を判定することができる。この技術によって、診断装置は、トレース回路によって実行される技術に対応する方法で、処理操作の結果を判定することが可能となる。
【００４１】
処理装置の条件ステータス格納場所が、前記処理装置の個々の条件に対応する複数の条件フラグを格納する場合、診断回路は、前記複数の条件フラグに対応する、複数の診断制御フラグを格納するように構成され得、前記複数の診断制御フラグのそれぞれは、第１の状態および第２の状態を有し、前記トレース入力部は、前記処理装置によって処理された前記プログラム命令の指示を受信することができ、前記診断回路は、前記処理装置が前記複数の条件フラグのうちのいずれかを更新することの指示に応答して、少なくとも、更新された条件フラグに対応する制御フラグを前記第１の状態にすることができ、前記診断回路は、前記処理装置が、必要な条件フラグのサブセットに基づく条件命令を処理することの指示に応答して、（ａ）前記必要な条件フラグのサブセットに対応する、対応する診断制御フラグのうちのいずれかが前記第１の状態にあるかどうかを判定することができ、（ｂ）ステップ（ａ）において、前記対応する診断制御フラグのうちのいずれかが前記第１の状態にある場合、前記条件付き命令について関連付けられたトレースデータ要素を、前記トレースデータ内から探し出すことができ、前記関連付けられたトレースデータ要素が、少なくとも、対応する診断制御フラグが前記第１の状態にある条件フラグを示す、第１のトレースされた条件値を含み、前記対応する診断制御フラグを前記第２の状態にすることができ、（ｃ）ステップ（ａ）において、前記対応する診断制御フラグのうちのいずれかが前記第２の状態にある場合、少なくとも１つの以前の条件付き命令について、少なくとも１つのさらなるトレースデータ要素を、前記トレースデータ内に置くことができ、前記少なくとも１つのさらなるトレースデータ要素は、少なくとも、対応する診断制御フラグが前記第２の状態にある条件フラグを示す、少なくとも１つのさらなるトレースされた条件値を含み、かつ（ｄ）前記第１のトレースされた条件値および前記少なくとも１つのさらなるトレースされた条件値のうちの少なくとも１つに基づいて、前記条件付き命令の前記処理結果を判定することができる。
【００４２】
このアルゴリズムは、個々の条件フラグに応じて、個別の条件制御フラグが提供されるトレースユニットのアルゴリズムに対応する。診断回路は、トレースストリームが、条件フラグの関連サブセットの値を示す、所与の条件付き命令について、トレース要素を含むか否かを、または、先行の条件付き命令について、１つ以上のさらなるトレースデータ要素に戻って、必要な条件フラグの値を判定する必要があるかどうかを、診断制御フラグから判定することができる。現在の条件付き命令の処理結果は、現在の条件付き命令についてトレースデータ要素に含まれているトレースされた条件値、および先行の条件付き命令について少なくとも１つの先行のトレースデータ要素に含まれているトレースされた条件値のうちの１つまたは両方に基づいて判定することができる。
【００４３】
別の態様から見ると、本発明は、プログラム命令に応答して、処理装置によって実行された処理操作を示すトレースデータ要素を分析するための診断装置を提供し、前記処理装置は、前記処理装置の条件を示す、少なくとも１つの条件フラグを格納するための、条件ステータス格納手段を含み、前記処理装置は、少なくとも１つの条件付き命令に応答して、前記少なくとも１つの条件フラグのサブセットの現在の値に基づいて、条件付き操作を実行し、前記診断装置は、前記処理装置が少なくとも１つの選択された命令を処理することに応答して生成されたトレースデータ要素を受信するための入力手段であって、前記トレースデータ要素が、前記少なくとも１つの条件フラグの少なくとも前記サブセットを示す、トレースされた条件値を含む、入力手段と、前記少なくとも１つの選択された命令について、前記トレースデータ要素に含まれている前記トレースされた条件値に基づいて、前記少なくとも１つの条件付き命令の処理結果を判定するための、診断手段とを備える。
【００４４】
さらなる態様から見ると、本発明は、プログラム命令に応答して、処理装置を使用して処理操作を実行するステップと、前記処理装置の条件を示す、少なくとも１つの条件フラグを格納するステップと、前記処理操作を示すトレースデータ要素を生成するステップとを含む、データ処理の方法を提供し、処理操作を実行する前記ステップは、少なくとも１つの条件付き命令に応答して、前記少なくとも１つの条件フラグのサブセットの現在の値に基づいて、条件付き操作を実行することを含み、トレースデータ要素を生成する前記ステップは、少なくとも１つの選択された命令に応答して、前記少なくとも１つの条件フラグの少なくとも前記サブセットを示す、トレースされた条件値を含むトレースデータ要素を生成することを含み、トレースされた条件値が、前記少なくとも１つの条件付き命令の処理結果を判定するための情報を提供する。
【００４５】
さらなる別の態様から見ると、本発明は、プログラム命令に応答して、処理装置によって実行された処理操作を示すトレースデータ要素を分析するための方法を提供し、前記処理装置は、前記処理装置の条件を示す、少なくとも１つの条件フラグを格納するように構成された条件ステータス格納場所を備え、前記処理装置は、少なくとも１つの条件付き命令に応答して、前記少なくとも１つの条件フラグのサブセットの現在の値に基づいて、条件付き操作を実行し、前記方法は、前記処理装置が少なくとも１つの選択された命令を処理することに応答して生成されたトレースデータ要素を受信するステップであって、前記トレースデータ要素が、前記少なくとも１つの条件フラグの少なくとも前記サブセットを示すトレースされた条件値を含む、ステップと、前記少なくとも１つの選択された命令について、前記トレースデータ要素に含まれている前記トレースされた条件値に基づいて、前記少なくとも１つの条件付き命令の処理結果を判定するステップとを含む。
【００４６】
コンピュータプログラムは、コンピュータを制御して、上記に説明されたトレースデータ要素を分析するための方法を実行するために提供され得る。コンピュータプログラムは、非一時的な記憶媒体上に提供されてもよい。
【００４７】
さらなる態様から見ると、本発明は、プログラム命令に応答して、処理操作を実行するように構成された処理回路と、前記プログラム命令に応答して、前記処理回路によって実行された前記処理操作を示すトレースデータ要素を生成するように構成された、トレース回路とを備える、処理装置を提供し、前記処理回路は、少なくとも１つの条件付き命令に応答して、前記処理回路の条件に基づいて、条件付き操作を実行し、前記トレース回路は、第１の状態および第２の状態を有する制御フラグを格納するように構成され、前記トレース回路は、前記処理回路の前記条件の更新に応答して、前記制御フラグを前記第１の状態にし、前記トレース回路は、前記処理回路が、前記少なくとも１つの条件付き命令のうちの１つを処理することに応答して、（ａ）前記制御フラグが前記第１の状態にあるかどうかを判定し、かつ（ｂ）前記制御フラグが前記第１の状態にある場合、前記少なくとも１つの条件付き命令の処理結果についての情報を提供するための値を示す結果を含むトレースデータ要素を生成し、前記制御フラグを前記第２の状態にする。
【００４８】
所与の条件付き命令について、条件フラグの値をトレースするか否かを判定するための、上記に説明された制御アルゴリズムは、拡張されて、条件付き命令の処理結果を判定するための情報を提供する値を示す、任意の結果をトレースするために適用され得る。例えば、値を示す結果には、上記に説明されたように、トレースされた条件値が含まれ得るが、条件付き命令の成立／不成立の結果等のような値を示す、他の種類の結果もまた含まれてもよい。このアルゴリズムを使用することによって、値を示す結果は、処理回路の条件の更新に続いて、第１の条件付き命令について含まれるが、以前の命令について生成されたトレースデータを使用して処理結果が判定され得る、後続の命令については含まれないため、トレースデータの量は低減される。
【００４９】
別の態様から見ると、本発明は、プログラム命令に応答して、処理操作を実行するための処理手段と、前記プログラム命令に応答して、前記処理手段によって実行された前記処理操作を示すトレースデータ要素を生成するための、トレース手段とを備える、処理装置を提供し、前記処理手段は、少なくとも１つの条件付き命令に応答して、前記処理手段の条件に基づいて、条件付き操作を実行し、前記トレース手段は、第１の状態および第２の状態を有する制御フラグを格納するように構成され、前記トレース手段は、前記処理手段の前記条件の更新に応答して、前記制御フラグを前記第１の状態にし、前記トレース手段は、前記処理手段が、前記少なくとも１つの条件付き命令のうちの１つを処理することに応答して、（ａ）前記制御フラグが前記第１の状態にあるかどうかを判定し、かつ（ｂ）前記制御フラグが前記第１の状態にある場合、前記少なくとも１つの条件付き命令の処理結果についての情報を提供するための値を示す結果を含む、トレースデータ要素を生成し、前記制御フラグを前記第２の状態にする。
【００５０】
別の態様から見ると、本発明は、プログラム命令に応答して、処理装置を使用して処理操作を実行するステップであって、前記処理操作を実行することは、少なくとも１つの条件付き命令に応答して、前記処理回路の条件に基づいて、条件付き操作を実行することを含む、ステップと、前記処理操作を示すトレースデータ要素を生成するステップであって、前記トレースデータ要素は、第１の状態および第２の状態を有する制御フラグに基づいて生成される、ステップとを含む、データ処理の方法を提供し、トレースデータ要素を生成する前記ステップは、前記処理回路の条件の更新に応答して、前記制御フラグを前記第１の状態にすることと、前記少なくとも１つの条件付き命令のうちの１つを処理することに応答して、（ａ）前記制御フラグが前記第１の状態にあるかどうかを判定すること、および（ｂ）前記制御フラグが前記第１の状態にある場合、前記少なくとも１つの条件付き命令の処理結果についての情報を提供するための値を示す結果を含むトレースデータ要素を生成し、前記制御フラグを前記第２の状態にすることと、を含む。
【００５１】
本技術の、さらなる態様、実施形態、および特徴は、以下の説明および添付の図面から明らかとなるであろう。
【図面の簡単な説明】
【００５２】
【図１】処理装置、トレース回路および診断装置を概略的に示す図である。
【図２】英国ケンブリッジ所在のＡＲＭ  Ｌｉｍｉｔｅｄ社によって設計されたプロセッサにおいて使用される、条件フラグおよび条件の状態の例を示す図である。
【図３】条件フラグの特定の値の組を識別するための、識別子の例を示す図である。
【図４】条件更新命令の実行時に、条件フラグの値をトレースする方法を示す図である。
【図５】図４の方法で生成されるトレースデータを分析する、対応する方法を示す図である。
【図６】図４の方法で生成されるトレースストリームの例、および図５の方法による、トレースストリームの分析の例を示す図である。
【図７】複数の条件更新命令が、介在する条件付き命令なしに連続して発生する、プログラム命令のシーケンスの例を示す図である。
【図８】条件付き命令の実行時に、条件フラグの値をトレースする方法を示す図である。
【図９】図８の方法で作られたトレースデータを分析する対応する方法を示す図である。
【図１０】図８の方法で生成されるトレースストリームの例、および図９の方法による、トレースストリームの分析の例を示す図である。
【図１１】条件付き命令の実行時に、条件フラグの少なくとも必要なサブセットの値をトレースする方法を示す図である。
【図１２】図１１の方法で生成されるトレースデータを分析する、対応する方法を示す図である。
【図１３】図１１の方法を使用してトレースストリームを生成する例、および図１２の方法を使用してトレースストリームを分析する例を示す図である。
【発明を実施するための形態】
【００５３】
図１は、プログラム命令に応答して、処理操作を実行するための処理回路４を備える処理装置２を示している。処理装置２は、処理回路４によって実行されるプログラム命令、および／または処理回路４によって処理されるデータを格納するための、１つ以上のキャッシュユニットまたはメモリユニットを備えるメモリシステム８を備える。
【００５４】
処理装置２は、処理回路４によって実行される処理操作を監視するためのトレース回路６を含む。トレース回路６は、処理回路４によって実行される処理操作の特徴を示すトレースデータ要素を生成する。トレース回路６は、生成されたトレースデータ要素を、出力ポート１０を介して出力する。トレース回路６は、処理回路４と同じ集積回路上に実装される必要はなく、いくつかの実施形態では、別個のトレースユニットとして設けられ得る。
【００５５】
診断装置１２は、トレース回路６によって生成されたトレースデータ要素を分析するために設けられる。診断装置１２は、トレースデータ要素を、入力ポート１４を介して受信する。診断装置１２はまた、処理回路４によってどのプログラム命令が実行されたかの指示も受信する。この指示は、どの命令が実行されたかをトレースストリームで示すトレース回路６によって提供されてもよい。あるいは、診断装置１２は、処理回路４によって実行された第１のプログラム命令の場所を示すアドレスを有するメモリシステム８を備えてもよい。診断装置１２はまた、処理回路４によって実行されたプログラムの対応するコピーを格納するためのメモリ（図１には図示せず）を備えてもよい。診断装置１２は、処理回路４によって実行された命令を段階的に分析し、トレースデータ要素のストリームに含まれている情報に基づいて、命令の処理結果を判定する。
【００５６】
トレースデータ要素は、トレース回路６から診断装置１２に直接出力される必要はないが、例えば、メモリまたは他の格納デバイスに格納されて、望ましいときに診断装置１２によって格納デバイスから取り出されてもよい。診断装置１２は、例えば、トレース分析法を実行するようにプログラムされた汎用コンピュータであってもよい。
【００５７】
処理装置２は、処理装置２の個々の条件を示す、１つ以上の条件フラグ２２を格納するための格納場所、例えば、条件ステータスレジスタ（ＣＰＳＲ）２０を有する。英国ケンブリッジ所在のＡＲＭ  Ｌｉｍｉｔｅｄ社によって設計されたプロセッサにおいて、条件フラグ２２には、処理結果が負であるか、ゼロであるか、キャリーを必要とするか、またはオーバーフローをもたらしたかを示す、ＮＺＣＶ（負、ゼロ、キャリー、オーバーフロー）フラグが含まれ得る。図２は、条件ステータスレジスタ２０における条件フラグ２２の、異なる組み合わせによって示され得る種々の条件の状態を示している。
【００５８】
条件フラグ２２を格納するための格納場所は、条件ステータスレジスタ２０である必要はなく、メモリシステム８内の格納場所、または任意の他の種類の格納場所であってもよいことを理解されたい。
【００５９】
処理回路４は、少なくとも１つの条件更新命令に応答して、条件ステータスレジスタ２０における１つ以上の条件フラグ２２を更新することができる。例えば、比較命令は、２つのデータ値を比較し、比較に基づいて、例えば、値が等しかったか、または一方の値が他方の値よりも小さかったもしくは大きかったかを示すために、フラグを更新することができる。それによって条件フラグ２２が更新されるあらゆる命令が、条件更新命令と見なされ得る。例えば、ＡＲＭ社の命令の組のアーキテクチャでは、ＴＳＴ、ＴＥＱ、ＣＭＰ、およびＣＭＮ命令が、条件更新命令の例である。
【００６０】
処理回路４はまた、所与の条件に関連付けられた、少なくとも１つの条件付き命令にも応答することができる。条件付き命令が実行されると、条件フラグ２２の値は所与の条件と比較される。条件フラグ２２が条件を満たす場合、関連付けられた処理操作が実行される。条件が満たされない場合、関連付けられた処理操作は実行されない（あるいは、なんらかの種類の条件付き命令については、条件が満たされない場合に、関連付けられた処理操作に対する異なる処理操作が実行されてもよい）。
【００６１】
例えば、条件付き追加命令ＡＤＤＥＱは、ＥＱ条件に関連付けられる。図２は、ＥＱ条件は、Ｚフラグがセットされると満たされることを示している。条件付き追加命令ＡＤＤＥＱが実行されるとき、Ｚフラグがセットされる場合、関連付けられた追加操作が実行され、Ｚフラグがセットされない場合、追加操作は実行されない。
【００６２】
条件付き命令の処理結果は、命令ストリーム単独からは判定され得ず、これは、命令ストリームは、条件が満たされたかどうかを判定するための情報を含まないためである。したがって、トレース回路６は、少なくとも１つの選択された命令に応答して、条件フラグ２２の値を示す、トレースされた条件値を含むトレースデータ要素を生成する。診断装置１２は、トレースデータ要素に含まれているトレースされた条件値を使用して、条件が満たされたかどうかを判定することができ、したがって、対応する条件付き命令の処理結果を判定することができる。
【００６３】
トレース回路６は、条件フラグ２２の値がトレースされたか否かを監視するために、１つ以上の制御フラグ２６を維持する。トレース回路６は、１つ以上の制御フラグ２６の現在の値に基づいて、所与の命令の実行時に、条件フラグの値をトレースするか否かを選択することができる。一実施形態では、トレース回路６は、単一の制御フラグ２６を含み（後段で説明される、図８〜１０の実施形態を参照）、別の実施形態では、トレース回路６は、それぞれが条件フラグ２２のうちの１つに対応する、複数の制御フラグ２６を含む（図１１〜１３に関して後段に説明される実施形態を参照）。
【００６４】
診断回路１６は、対応する制御フラグ２８の組を維持し、これは、トレースされた条件値を含むトレースデータ要素が、所与のプログラム命令について、トレースストリームに提供されることが期待されるか否かを判定するために、トレース回路６の制御フラグ２６に対応する形で使用される。
【００６５】
トレースデータ要素内のトレースされた条件値は、異なる方法で示され得る。一例において、トレース回路６は、トレースデータ要素に、条件フラグ２２の少なくともサブセットの実際の値を含み得る。条件付き命令が、条件フラグ２２のサブセットのみに基づく場合、トレース回路６は、単に条件フラグの関連するサブセットの値を含み得る、または条件フラグ２２のうちの全てを含み得る。
【００６６】
あるいは、トレース回路６は、トレースデータ要素に、条件フラグ２２の値の特定の組み合わせを示す識別コードを含んでもよい。これにより、条件値の何らかの組み合わせが他のものに比べて、より多く見られる場合に、効率的な符号化がもたらされ得る。例えば、図３は、３つの条件の状態ついて、２ビットの識別子が使用される例を示している（例えば、Ｃフラグがセットされる状態、Ｎフラグがセットされる状態、ならびにＺおよびＣフラグがセットされる状態）。次いで、４ビットの識別子が、さらなる３つの異なる条件の状態について使用される。条件フラグの値の、他の組み合わせのうちの１つが必要とされる場合、現在の条件フラグの値の別個の指示が、図３に示されているスキームに対する異なる符号化を使用して、トレースデータ要素に提供され得る。
【００６７】
識別子の符号化、およびどの条件の状態が特定の識別子によって表されるかの選択は、例示に過ぎないことを理解されたい。それでもなお、この例は、トレースデータの総量が、最も頻繁に出現する条件の状態に対して最も少ないビットを有する識別子を割り当てることによって、低減されることを示している。例えば、処理装置２が、７０％の確率で、２ビットの識別子を有する３つの条件の状態のうちの１つにある、２９％の確率で、４ビットの識別子を有する３つの条件の状態のうちの１つにある、および１％の確率で、他の状態のうちの１つにある（これらの他の状態は、例えば８ビットの識別子によって表される）場合、現在の条件の状態を識別するために使用される平均ビット数は、２＊０．７＋４＊０．２９＋８＊０．０１＝２．６４（アスタリスク＊は、乗号を示す）となる。したがって、現在の条件の状態を示すためにトレースストリームに含まれる平均ビット数は、トレースデータ要素が、条件フラグの現在の値を単に含めた場合に使用される、４ビット未満となる。
【００６８】
トレース回路６は、処理回路４によって実行されているプログラムの異なる命令によって、条件フラグ２２の値をトレースすることができる。トレース回路６は、値を示す条件フラグを含むトレースデータ要素の生成をトリガするために、１つ以上の選択された命令を選択することができる。選択された命令は、条件付き命令であってもよいが、別の命令であってもよい。
【００６９】
例えば、図４〜６は、トレースされた条件付き値を含むトレースデータ要素が、条件更新命令の実行時に生成される例を示している。図４は、処理回路４の操作に応答してトレースデータを生成する方法を示している。ステップ４０において、処理回路４は、実行されているプログラムの次の命令を処理し、トレース回路６が、処理回路４によるその命令の処理を監視する。ステップ４２において、トレース回路６は、処理回路４によって実行されている命令が条件更新命令であるか否かを判定する。命令が条件更新命令である場合、次いでステップ４４においてトレース回路６は、条件更新命令の実行によってもたらされた、条件フラグ２２の更新された値を示すトレースされた条件値を含むトレースデータ要素を生成して出力する。一方、命令が条件更新命令ではない場合、ステップ４４は省略される。ステップ４６において、処理回路４によって処理される、別の命令が存在するか否かが判定される。別の命令が存在する場合、方法はステップ４０に戻り、そうではなく命令が残っていない場合、方法はステップ４８で終了する。
【００７０】
図５は、図４の方法を使用して、トレース回路６によって作られたトレースストリームを分析するための、対応する診断方法を示している。診断装置１２は、どの命令が処理回路４によって実行されたかの指示を受信する。ステップ５０において、診断回路１６は、処理回路４によって実行されているとして示される次の命令を分析する。ステップ５２において、診断回路１６は、次の命令が条件付き命令であるか否かを判定する。命令が条件付き命令である場合、次いでステップ５４において診断回路１６は、プログラム命令の指示において示された直近の条件更新命令に関連付けられたトレースデータ要素を、トレースデータストリーム内から探し出す。ステップ５６において、診断回路１６は、条件付き命令の処理結果を、探し出されたトレースデータ要素に含まれた、トレースされた条件値に基づいて判定する。例えば、診断回路１６は、トレースされた条件値を使用して、条件付き命令に関連付けられた条件が満たされたか否かを判定することができ、したがって、関連付けられた操作が実行されたか否かを判定することができる。ステップ５２において次の命令が条件付き命令ではないと判定された場合、ステップ５４および５６は省略される。ステップ５８において、分析される別の命令が存在するか否かが判定される。別の命令が存在する場合、方法はステップ５０に戻り、命令がそれ以上ない場合、方法はステップ６０で終了する。
【００７１】
図６は、図４の方法による、トレースストリームの生成の例、および図５の方法による、トレースストリームの分析の例を示している。図６は、処理回路４によって実行されたプログラム命令の組を示している。分岐命令が実行されると、トレースデータ要素が生成され、分岐が行われたか否かを示す。条件更新命令（例えばＣＭＰ）を検出すると、図４のステップ４４に従って、トレースデータ要素は、トレースされた条件値のＣＰＳＲを含んで生成される。トレースストリームを分析するとき、診断装置はトレースされた条件値を使用して、任意の後続の条件付き命令（例えば、図６に示されている、命令ＭＯＶＮＥ、ＭＯＶＥＱ、およびＡＤＤＨＩ）の処理結果を判定することができる。
【００７２】
いくつかの命令は、条件更新命令および条件付き命令の両方であり得る。例えば、図６内の、記憶場所２１００におけるプログラム命令は、条件フラグ２２の現在の値が、等しくない（ＮＥ）条件（図２を参照）を満たすか否かを判定するように、処理回路４を制御するための、条件付き比較命令ＣＣＭＰＮＥである。等しくない条件が満たされる場合、処理回路４は、比較操作を行なって、比較結果に基づいて条件フラグ２２を更新する。ＣＣＭＰＮＥ命令が条件付き命令であるため、診断回路１６は、ＣＣＭＰＮＥ命令の処理結果を、条件フラグの直近の更新におけるトレースストリームに含まれている、トレースされた条件値（すなわち、記憶場所２０００における比較命令ＣＭＰについて含まれたＣＰＳＲ値）に基づいて判定する。ＮＥ条件が、ＣＣＭＰＮＥ命令の実行時に満たされる場合、ＣＣＭＰＮＥ命令は条件更新命令でもあり、そのためトレース回路６は、条件フラグ２２の更新された値を示す、トレースされた条件値を含んで、命令ＣＣＭＰＮＥについてトレースデータ要素を生成する。このトレースデータ要素は次いで、任意の後続の条件付き命令の結果を判定するために使用することができる。
【００７３】
あるいは、いくつかの例において、ＣＣＭＰＮＥ命令は、ＮＥ条件が満たされるかどうかに関わらず条件更新命令と見なされ得るため、条件フラグの値を示すトレースデータ要素は、常にＣＣＭＰＮＥ命令について生成される。これは、ＮＥ条件が、トレース時にまだ計算されていない場合に有用となり得る。
【００７４】
図４〜６に示されている技術は、全てが同じ条件値の組に基づく一連の条件付き命令が、単一の条件更新命令に続く場合に有用であり得、これは、この場合、いくつかの後続の命令の結果を判定するために、少量のトレースデータで十分であるからである。
【００７５】
しかしながら、何らかの状況において、条件フラグの更新された値を使用する、多くの条件更新命令が、条件付き命令の介在なしに連続して発生する場合がある。例えば、図７において、プログラム命令のシーケンスは、条件フラグの更新によってもたらされる、多くの比較ＣＭＰおよびビットテストＴＳＴ命令を含むが、これらの命令のうちの最初の４つは、更新された値が条件付き命令によって全く使用されることなく、フラグを更新する。そのような状況において、トレースされた条件値を含むトレースデータ要素を、条件付き命令の実行時に生成すると（例えば、図８〜１０および１１〜１３を参照して後段で説明されるように）、より効果的となり得る。図７に示されている例において、その後に、トレースデータ要素は、それぞれの条件の更新時にではなく、条件付き命令ＭＯＶＮＥが実行されるときに生成され得る。
【００７６】
これらの技術の混合形態が可能であり得、そのためいくつかのトレースユニットは、条件更新命令の実行時および条件付き命令の実行時の両方でトレースされた条件値を生成し得ることを理解されたい。
【００７７】
図８は、条件フラグ２２が条件付き命令の実行時にトレースされる、トレース方法を示している。この実施形態において、トレース回路６は、条件フラグ２２の値をトレースするか否かを判定するために、制御フラグ２６を維持する。制御フラグ２６は、「クリア」状態および「セット」状態を有する（例えば、「クリア」状態は、制御フラグ２６が０の値を有する状態であり、「セット」状態は、制御フラグ２６が１の値を有する状態、またはその逆である）。
【００７８】
図８のステップ７０において、トレース回路６は、次の命令を実行する処理回路４を監視する。ステップ７２において、トレース回路６は、その命令が条件付き命令か否かを判定する。命令が条件付き命令である場合、次いでステップ７４において、トレース回路６は、制御フラグがクリアか否かを判定する。制御フラグがクリアである場合、次いでステップ７６において、トレース回路６は、条件ステータスレジスタ２０の現在の状態を示す、トレースされた条件値を含むトレースデータ要素を生成して出力する。次いで、ステップ７８において、制御フラグがセットされる。一方、ステップ７４において制御フラグがセットされていた場合、ステップ７６および７８は省略される。ステップ７２において、命令が条件付き命令ではないと判定された場合、ステップ７４から７８は省略される。
【００７９】
次いで、ステップ８０において、次の命令が条件更新命令か否かが判定される。いくつかの命令は、条件付き命令および条件更新命令の両方であり得ることに留意されたい。命令が条件更新命令である場合、次いでステップ８２において、制御フラグがクリアされる。そうでなければ、ステップ８２は省略される。次いでステップ８４において、処理回路４によって処理される、別の命令が存在するか否かが判定される。別の命令が存在する場合、方法はステップ７０に戻る。それ以上に命令がない場合、方法はステップ８６で終了する。
【００８０】
図８の方法を実施するための、いくつかの擬似コードを以下に示す（「標識」という語は制御フラグ２６を示す）。
命令時：
命令が条件付きである場合：
標識がクリアである場合：
ＣＰＳＲをトレース
標識を設定
命令がＣＰＳＲを更新する場合：
標識をクリア
【００８１】
図８の方法は、トレース回路６が、条件更新命令に続いて発生する第１の条件付き命令について、トレースされた条件値を含むトレースデータ要素を生成するため、トレースデータの量を低減するのに役立つ。後続の条件付き命令については、条件値をトレースする必要がなく、これは、以前の条件付き命令が、条件フラグ２２の状態を示す情報を含む、関連付けられたトレースデータ要素をすでに有しているからである。
【００８２】
図９は、図８の方法において作られたトレースストリームを分析するための、対応する診断方法を示している。診断装置１２は、トレース回路６の制御フラグ２６の状態に対応する、「クリア」および「セット」状態を有する制御フラグ２８を有する。ステップ１００において、診断回路１６は、処理回路４によって処理されたプログラム命令の指示に含まれる、次の命令を分析する。ステップ１０２において、条件付き命令の指示があるか否かが判定される。命令が条件付き命令である場合、次いでステップ１０４において、診断制御フラグ２８がクリアであるか否かが判定される。診断制御フラグがクリアである場合、次いでステップ１０６において、診断回路１６は、その条件付き命令について関連付けられたトレースデータ要素を探し出し、ステップ１０８において、条件付き命令の処理結果を、関連付けられたトレースデータ要素に含まれている、トレースされた条件値に基づいて判定する。ステップ１１０において、診断制御フラグは、「セット」状態にされる。
【００８３】
一方、ステップ１０４において、診断制御フラグがクリアではなかった場合、次いで方法はステップ１１２に進み、ここでは、さらなるトレースデータ要素が診断回路１６によって探し出される。さらなるトレースデータ要素は、以前に分析された条件付き命令に関連付けられたデータ要素である。ステップ１１４において、診断回路１６は、現在分析されている条件付き命令の処理結果を、以前に分析された条件付き命令について生成された、さらなるトレースデータ要素に含まれている、トレースされた条件値に基づいて判定する。ステップ１０２において、命令が条件付き命令ではないと判定される場合、ステップ１０４から１１４は省略される。
【００８４】
次いで、ステップ１１６において、分析されている命令が条件更新命令であるか否かが判定される。命令は、条件付き命令および条件更新命令の両方であり得る。命令が条件更新命令である場合、次いでステップ１１８において、診断制御フラグ２８はクリアされ、命令が条件更新命令ではない場合は、ステップ１１８は省略される。ステップ１２０において、分析される別の命令が存在するか否かが判定される。別の命令が存在する場合、方法はステップ１００に戻り、そうでなければ、方法はステップ１２２で終了する。
【００８５】
このようにして、診断回路は、トレース回路６の制御フラグ２６に対応する診断制御フラグ２８を使用して、関連付けられたトレースデータ要素が、所与の条件付き命令について、トレースストリームに含まれることが期待されるか否かを判定する。そのような関連付けられたトレースデータ要素が存在する場合、条件付き命令の処理結果は、関連付けられたトレースデータ要素に含まれている、トレースされた条件値に基づいて判定され得る。関連付けられたトレースデータ要素が存在しない場合、トレースされた条件値を含むこととなる、以前の条件付き命令に関連付けられたトレースデータ要素が、現在の条件付き命令の処理結果が判定されることを可能にする。条件更新命令を検出すると、診断制御フラグ２８はクリアされて、次の条件付き命令が、関連付けられたトレースデータ要素を有することが期待されることを示す。
【００８６】
図１０は、図６に示されている一連のプログラム命令に対する、図８および９の方法の適用例を示している。同様に、記憶場所１６００における分岐命令の、分岐が行われた結果がトレースされる。記憶場所２０００に格納された条件更新命令ＣＭＰの実行に応答して、トレース回路６は、図８のステップ８２に従って、自身の制御フラグ２６をクリアする。同様の方法で、診断回路１６が命令を分析するとき、図９のステップ１１８に従って、自身の診断制御フラグ２８をクリアすることによって、条件更新命令ＣＭＰの指示に応答する。
【００８７】
トレース回路６が、記憶場所２００４に格納された条件付き命令ＭＯＶＮＥを検出すると、トレース回路６は、制御フラグ２６が現在クリア状態にあることを判定し、したがって、図８のステップ７６において、トレースデータ要素は、トレースされた条件値のＣＰＳＲを含んで生成される。次いで、図８のステップ７８に従って、制御フラグがセットされる。これに対応して、命令を分析するとき、診断回路１６は、記憶場所２００４における条件付き命令ＭＯＶＮＥの指示を検知して、トレースストリーム内から、関連付けられたトレースデータ要素を探し出すことによってクリアされる診断制御フラグ２８に応答し、ＭＯＶＮＥ命令の処理結果を、トレースデータ要素に含まれているトレースされた条件値に基づいて判定する。次に診断回路１６は、図９のステップ１１０において、診断制御フラグ２８をセットする。
【００８８】
次いで、記憶場所２００８および２００Ｃにおける後続の条件付き命令について、トレース回路６は、制御フラグ２６がセットの状態にあることを検知し、したがって対応するトレースデータ要素を生成しない。これに対応して、診断回路１６は、診断制御フラグ２８がセットの状態にあることを検知し、したがって、図９の後続のステップ１１２および１１４は、記憶場所２００４に格納された、以前の条件付き命令に関連付けられたトレースデータ要素を探し出す。診断回路１６は、記憶場所２００８および２００Ｃにおける命令の処理結果を、記憶場所２００４における命令ついての以前のトレースデータ要素に基づいて判定する。
【００８９】
この方法で、トレースストリームは生成され、ここで、条件フラグ２２の更新が、トレースされた条件値を含むトレースデータ要素の生成をトリガすることに続いて、第１の条件付き命令が実行される。
【００９０】
図１１〜１３は、トレース回路６が、どの条件フラグ２２がすでにトレースされたかを監視し、かつ条件付き命令についてトレースデータ要素を生成するときに、すでにトレースされていない、その条件付き命令によって必要とされる、追加の条件フラグをトレースする実施形態を示している。この方法は、それぞれが条件フラグ２２の各々に対応する、複数の制御フラグ２６を利用する。それぞれの制御フラグ２６は、「クリア」状態および「セット」状態を有する。診断回路１６は、やはり「クリア」状態および「セット」状態を有する、診断制御フラグ２８の対応する群を有する。
【００９１】
図１１は、処理回路４の操作をトレースする方法を示している。ステップ１４０において、処理回路４は、次の命令を実行し、この命令の実行は、トレース回路６によって監視される。ステップ１４２において、命令が条件付き命令であるか否かが判定される。命令が条件付き命令である場合、次いでステップ１４４において、トレース回路６は、条件付き命令の結果を判定するために必要な、条件フラグ２２のサブセットを判定する。例えば、図２に示されているそれぞれの条件について、表に示されている対応するフラグは、必要な条件フラグのサブセットである。例えば、ＨＩ条件は、ＣおよびＺフラグを必要とする。
【００９２】
ステップ１４６において、トレース回路６は、必要な条件フラグ２２のサブセットに対応する制御フラグ２６のうちのいずれかがクリアされたかどうかを判定する。必要な条件フラグのサブセットに対応する、どの制御フラグもクリアでない場合、方法はステップ１５２に進む。必要な条件フラグのサブセットに対応する制御フラグのうちのいずれか１つまたは複数がクリアである場合、次いでステップ１４８において、トレース回路６は、対応する制御フラグ２６がクリアである、必要なサブセットの少なくとも条件フラグ２２を示す、トレースされた条件値を含むトレースデータ要素を生成して出力する。任意選択で、トレース条件値は、他の条件フラグも示してもよく、または条件フラグ２２の全てを示してもよい。次いでステップ１５０において、トレース回路６は、トレースされた条件値において示された条件フラグに対応する制御フラグの組をセットする。ステップ１４２において、命令が、条件付き命令ではないと判定された場合、ステップ１４４から１５０は省略される。
【００９３】
ステップ１５２において、トレース回路６は、処理回路４によって実行されている命令が、条件更新命令であるか否かを判定する。命令が条件更新命令である場合、次いでステップ１５４において、トレース回路６は、少なくとも、条件更新命令の結果として更新された条件フラグ２２に対応する制御フラグ２６をクリアする。任意選択で、ステップ１５４において、トレース回路６は、他の制御フラグ２６もクリアしてもよく、または、制御フラグ２６の全てをクリアしてもよい。命令が条件更新命令ではない場合、ステップ１５４は省略される。ステップ１５６において、処理回路４によって処理される別の命令が存在するか否かが判定される。そのような命令が存在する場合、方法はステップ１４０に戻る。そうでなければ、方法はステップ１５８で終了する。
【００９４】
図１１の方法を実施するための擬似コードを、以下に示す（「標識」という語は制御フラグ２６を示す）。
命令時：
命令が条件付きである場合：
この命令によって必要とされるフラグについての任意の標識がクリアである場合：
少なくとも必要とされるフラグをトレース
必要なフラグについての標識を設定
命令がＣＰＳＲを更新する場合：
少なくとも、更新されたフラグについての標識をクリア
【００９５】
あるいは、以下の擬似コードを使用して、図１１の方法を実施することができる。
命令時：
命令が条件付きである場合：
この命令によって必要とされるフラグについての任意の標識がクリアである場合：
少なくとも必要とされるフラグをトレース
トレースされたフラグについての標識を設定
命令がＣＰＳＲを更新する場合：
少なくとも、更新されたフラグについての標識をクリア
【００９６】
図１２は、図１１の方法によって生成されるトレースストリームを分析する方法を示している。ステップ１６０において、診断回路１６は、処理回路４によって実行された命令の指示に示されている、次の命令を分析する。ステップ１６２において、次の命令が条件付き命令であると判定される場合、次いでステップ１６４において、診断回路１６は、その命令について必要な条件フラグのサブセットを判定し、必要な条件フラグのサブセットに対応する診断制御フラグ２８がクリアであるか、またはセットであるかを判定する。ステップ１６６において、ステップ１６４が、必要な条件フラグのサブセットに対応する診断制御フラグ２８のうちのいずれかがクリアであると判定した場合、次に診断回路１６は、第１のトレースされた条件値を含む、関連付けられたトレースデータ要素をトレースストリーム内から探し出す。第１のトレースされた条件値は、少なくとも、クリアの診断制御フラグ２８に対応する、必要な条件フラグのサブセットの値を示す。次に診断回路１６は、クリアであり、かつ所望のサブセットの条件フラグ２２に対応する診断制御フラグ２８をセットする。
【００９７】
ステップ１６８において、ステップ１６４が、必要な条件フラグのサブセットに対応する、任意の診断制御フラグ２８がセットされたと判定した場合、次いで診断回路１６は、少なくとも１つの以前の条件付き命令について、少なくとも１つのさらなるトレースデータ要素を探し出す。さらなるトレースデータ要素には、セットされた診断制御フラグに対応する条件フラグの値を示す、少なくとも１つのさらなるトレースされた条件値が含まれる。次いで、ステップ１７０において、診断回路１６は、（ステップ１６６および１６８において、どのトレースされた条件値がアクセスされたかに依存して）第１のトレースされた条件値および／または少なくとも１つのさらなるトレースされた条件値を分析し、次いで、それらのトレースされた条件値に基づいて、現在の条件付き命令の処理結果を判定する。ステップ１６２において、命令が条件付き命令ではないと判定された場合、ステップ１６４から１７０は省略される。
【００９８】
ステップ１７２において、診断回路１６は、次に示されている命令が条件更新命令であるか否かを判定する。次の命令が条件更新命令である場合、次いでステップ１７４において、診断回路１６は、少なくとも、条件更新命令の実行の結果として更新された条件フラグ２２に対応する診断制御フラグ２８をクリアする（診断回路１６は、条件更新命令の推測される処理結果に基づいて、どの条件フラグ２２が更新されたかを判定することができる）。任意選択で、ステップ１７４において、診断回路１６は、他の診断制御フラグ２８もクリアしてもよく、全ての制御フラグ２８をクリアしてもよい。ステップ１７２において、次の命令が条件更新命令ではない場合、ステップ１７４は省略される。ステップ１７６において、分析される別の命令が存在するか否かが判定される。別の命令が存在する場合、方法はステップ１６０に戻り、そうでなければ、方法はステップ１７８で終了する。
【００９９】
図１３は、これまでに示されてきた一連のプログラム命令に対する、図１１および図１２の方法の適用例を示している。この例において、全ての制御フラグ２６および診断制御フラグ２８は、条件更新命令に応答してクリアされることを前提としているが、上述のように、トレース回路６および診断回路１６が、更新された条件フラグ２２に対応する制御フラグ２６、２８のみをクリアする実施形態を提供することもまた可能である。
【０１００】
図１３において、分岐が行われた結果は、分岐命令について生成されたトレースデータ要素内に示されている。分岐が行われた結果は、どの命令が処理回路４によって実行されたかを判定するために、診断回路１６によって使用され得る。
【０１０１】
記憶場所２０００における条件更新命令ＣＭＰを検出すると、トレース回路６は、全ての制御フラグ２６をクリアする。同様に、診断回路１６が条件更新命令ＣＭＰを検出すると、全てのその診断制御フラグ２８をクリアする。
【０１０２】
記憶場所２００４における条件付き命令ＭＯＶＮＥが実行されると、トレース回路６は、「等しくない」条件ＮＥについて、必要な条件フラグのサブセットはＺフラグである（図２を参照）と判定する。図１１のステップ１４６において、トレース回路６は、Ｚ条件フラグに対応する制御フラグ２６はクリアであると判定し、したがってステップ１４８において、少なくともＺフラグの値を示す、トレースされた条件値を含むトレースデータ要素を生成する。Ｚフラグに対応する制御フラグは、次いで図１１のステップ１５０においてセットされる。
【０１０３】
これに対応して、トレースストリームを分析するとき、診断回路１６は、記憶場所２００４において条件付き命令ＭＯＶＮＥを検出し、必要な条件フラグのサブセットは、Ｚフラグであると判定する。この時点で、Ｚ条件フラグに対応する診断制御フラグ２８はクリアであるため、診断回路１６は、ＭＯＶＮＥ命令に対応する、関連付けられたトレースデータ要素が存在すると判定する。診断回路１６は、Ｚフラグの値を示す、トレースされた条件値を含む、関連付けられたトレースデータ要素を探し出す。診断回路１６は、記憶場所２００４に格納されたＭＯＶＮＥ命令について、トレースされた条件値に基づいて、処理結果を判定する。次に診断回路１６は、Ｚフラグに対応する診断制御フラグ２８をセットする。
【０１０４】
トレース回路６が、記憶場所２００８に格納された条件付き命令ＭＯＶＥＱを検出すると、トレース回路６は、「等しい」条件ＥＱが満たされるかどうかを判定するための、必要なフラグのサブセットが、やはりＺフラグである（図２を参照）ことを判定する。図１１のステップ１４６において、トレース回路６は、Ｚフラグに対応する制御フラグがセットされていることを判定し、したがって図１１のステップ１４８および１５０を省略し、トレースされた条件値を含むトレースデータ要素を生成しない。トレースストリームを分析するとき、診断回路１６は、Ｚフラグに対応する診断制御フラグ２８がセットされていることを同様に検知することができる。したがって、診断回路１６は、図１２のステップ１６８において、記憶場所２００４に格納された、以前の条件付き命令ＭＯＶＮＥについて、トレースデータ要素を探し出し、ＭＯＶＥＱ命令の処理結果を、ＭＯＶＮＥ命令についてトレースデータ要素に含まれた、トレースされた条件値に基づいて判定する。
【０１０５】
記憶場所２００Ｃには、ＨＩ条件に基づく、条件付き追加命令ＡＤＤＨＩがある。この命令が実行されると、トレース回路６は、必要な条件フラグのサブセットは、ＣフラグおよびＺフラグである（図２を参照）ことを判定する。トレース回路６は、ＣおよびＺフラグに対応する、対応する制御フラグ２６の状態を判定し、Ｚ条件フラグに対応する制御フラグ２６はセットされているが、Ｃ条件フラグに対応する制御フラグ２６は、依然としてクリアであると判定する。したがって、図１１のステップ１４８において、トレース回路６は、少なくともＣフラグを示す値を含むトレースデータ要素を生成する。次いで、Ｃ条件フラグに対応する制御フラグ２６がセットされる。
【０１０６】
トレースストリームを分析するとき、診断装置１２は、記憶場所２００ＣにおけるＡＤＤＨＩ命令について、必要な条件フラグのサブセットは、ＣおよびＺフラグであると検知する。Ｃフラグに対応する診断制御フラグ２８がクリアであるため、ステップ１６６において診断回路１６は、Ｃフラグの値を示す、ＡＤＤＨＩ命令に関連付けられたトレースデータ要素を、トレースストリーム内から探し出す。図１２のステップ１６８において、診断回路１６はまた、さらなるトレースデータ要素も探し出すこととなり、これは、ステップ１６４において、Ｚ条件フラグについての診断制御フラグ２８がセットされていたからである。この例では、さらなるトレースデータ要素は、記憶場所２００４におけるＭＯＶＮＥ命令について生成されたトレースデータ要素である。図１２のステップ１７０において、診断回路１６は、ＡＤＤＨＩ命令の処理結果を、記憶場所２００４におけるＭＯＶＮＥ命令についてトレースデータ要素に含まれている、トレースされた条件値と、記憶場所２００ＣにおけるＡＤＤＨＩ命令についてトレースデータ要素に含まれている、トレース条件値との両方に基づいて判定する。
【０１０７】
同様の方法で、図１３に示されている後続の命令について、トレース回路６は、トレースデータを生成し、診断回路１６は、そのトレースデータを分析する。
【０１０８】
上記の実施形態は、条件フラグ２２が更新されると、制御フラグ２６および診断制御フラグ２８がクリアされることが説明されてきたが、他の事象もまた、制御フラグ２６または診断制御フラグ２８がクリアされることをトリガし得る。例えば、例外事象によって、制御フラグがクリアされてもよい。例外事象によってトリガされた例外ハンドラが、トレース回路６によってトレースされる場合、例外事象の発生時に制御フラグ２６をクリアすることは、条件フラグ２２が、例外ハンドラの開始時にトレースされることを確実にする。あるいは、例外ハンドラがトレースされていない場合、例外事象の発生時に制御フラグ２６をクリアすることは、条件フラグ２２が、例外ハンドリングから戻ることに続いてトレースされることを確実にし得る。
【０１０９】
また、トレースされた条件値がトレースストリーム内に定期的に含まれ、診断装置１２のために参照ポイントを提供するように、トレース回路６は、制御フラグを定期的にクリアしてもよい。診断回路１６は、参照ポイントでトレースデータの分析を開始することができ、これは、参照ポイントに含まれた、トレースされた条件値によって、条件フラグの状態が、以前のトレースデータ要素からの情報を必要とすることなく判定されることが可能であるからである。これは、診断回路１６は、対象の領域に達するためにトレースストリーム全体を対処しなければならないわけではなく、対象のトレースストリームの領域に直接飛ぶことができるため有用である。
【０１１０】
また、処理の性能を向上するために、いくつかのプロセッサは、命令が実際に実行されるべきであるか否かを知る前に、その命令の推測的実行を行うことができる。１つ以上の推測的に実行された命令は、実際には実行されるべきではなかったという場合もある。誤った推測を検知すると、プロセッサは、任意の不適切に実行された命令の結果を覆して、生じているプロセッサの状態を、不適切に実行された命令の実行前に、回復することができる。トレース回路６は、命令がいくつ不適切に実行されたかを知ることができない可能性がある。それを確実にするために、誤った推測の訂正によってもたらされる条件フラグの値は、トレースストリームから判定することができ、トレース回路６は、誤った推測の検知時に、制御フラグ２６をクリアすることができる。
【０１１１】
これらの事象のいずれかのために、トレース回路６は、制御フラグ２６がクリアされたことを示す情報を、トレースストリームに含むことができる。診断回路１６は、診断制御フラグ２８をクリアすることによって、この情報に応答することができる。
【０１１２】
図８〜１３は、条件付き命令の結果が診断装置１２によって判定されることを可能にするために、条件フラグ２２の値を示す、トレースされた条件値がトレースストリームに含まれる実施形態を示している。しかし、これらの技術はまた、条件付き命令の結果が判定されるように、値を示す別の種類の結果（例えば、成立／不成立の結果）がトレースストリームに含まれる実施形態に適用されてもよい。
【０１１３】
本発明の例示的な実施形態について、添付の図面を参照しながら本明細書に詳細に説明してきたが、本発明はこれらの正確な実施形態には制限されず、添付の特許請求の範囲に記載される本発明の範囲から逸脱せずに、当業者により、種々の変更および修正がなされ得ることを理解されたい。
【符号の説明】
【０１１４】
２…  処理装置
４…  処理回路
６…  トレース回路
８…  メモリシステム
１０…  出力ポート
１２…  診断装置
１４…  入力ポート
１６…  診断回路
２０…  条件ステータスレジスタ
２２…  条件フラグ
２６…  制御フラグ
２８…  診断制御フラグ
【図１】
0005914521.tif 000002
【図２】
0005914521.tif 000003
【図３】
0005914521.tif 000004
【図４】
0005914521.tif 000005
【図５】
0005914521.tif 000006
【図６】
0005914521.tif 000007
【図７】
0005914521.tif 000008
【図８】
0005914521.tif 000009
【図９】
0005914521.tif 000010
【図１０】
0005914521.tif 000011
【図１１】
0005914521.tif 000012
【図１２】
0005914521.tif 000013
【図１３】
0005914521.tif 000014