(57)【特許請求の範囲】
【請求項１】
データを処理するための装置であって、
プログラム命令のストリームに応答して処理動作を実行するように構成された処理回路と、
前記処理回路に連結され、前記処理回路によって実行される前記処理動作を表すトレースデータを生成するように構成されたトレース回路と、
を備え、
前記トレースデータは、第１のトレースストリームと第２のトレースストリームとを含む複数の別個のトレースストリームを備え、
前記トレース回路が前記第２のトレースストリームに同期マーカーを挿入して、前記第１のトレースストリームにおける既知のポイントに一致する同期ポイントをマークするように構成されており、
前記トレース回路が、前記第１のトレースストリーム内の個々の命令要素と前記第２のトレースストリーム内の個々のデータ要素をそれぞれのキー値でマークするように構成されていることを特徴とする装置。
【請求項２】
前記第１のトレースストリームにおける前記既知のポイントは、同期マーカーでもあることを特徴とする請求項１に記載の装置。
【請求項３】
前記第１のトレースストリームが前記処理回路によって処理されたプログラム命令を表す命令トレースストリームであり、前記第２のトレースストリームが、前記処理回路とメモリとの間のデータ転送を表すデータトレースストリームであることを特徴とする請求項１に記載の装置。
【請求項４】
前記命令トレースストリームが一続きの命令要素を備え、前記データトレースストリームが、一続きのデータ要素を備えることを特徴とする請求項３に記載の装置。
【請求項５】
前記命令トレースストリームが一続きの命令要素を備え、
前記データトレースストリームが一続きのデータ要素を備え、
前記トレース回路が、前記一続きのデータ要素内の個々のデータ要素を、前記データ要素と関連付けられたそれぞれのプログラム命令に対応する前記命令トレースストリーム内の命令要素のキー値に一致するそれぞれのキー値でマークするように構成されていることを特徴とする請求項３に記載の装置。
【請求項６】
一致するキー値を有するデータ要素および命令要素が、前記データトレースストリーム内のそれらのそれぞれの位置と前記命令トレースストリームとの間に可変オフセットを有することを特徴とする請求項５に記載の装置。
【請求項７】
前記トレース回路が、前記命令トレースストリーム内の隣接する命令要素どうしの間で前記命令要素の前記キー値を増分するように構成されていることを特徴とする請求項５に記載の装置。
【請求項８】
前記命令要素の前記キー値が、前記命令トレースストリーム内で所定の順序を有することを特徴とする請求項５に記載の装置。
【請求項９】
前記データ要素の前記キー値が、前記データトレースストリーム内で可変順序を有することを特徴とする請求項８に記載の装置。
【請求項１０】
前記トレース回路が、所定のキー値の範囲内で前記キー値をラップするように構成されていることを特徴とする請求項７に記載の装置。
【請求項１１】
前記トレース回路が、前記命令トレースストリームの隣接する命令要素の検索スペース内でデータ要素と命令要素との間で一致するキー値を検出することにより、前記データ要素と前記命令要素とを一致させるように構成されていることを特徴とする請求項５に記載の装置。
【請求項１２】
前記検索スペースが、前記命令トレースストリーム内の最終一致命令要素に対して一定の位置を有するように前記命令トレースストリーム内に位置し、前記最終一致命令要素が、一致するデータ要素が前記データトレースストリーム内に置かれた前記命令トレースストリーム内で最後に現れる命令要素に対応することを特徴とする請求項１１に記載の装置。
【請求項１３】
前記トレース回路が、前記検索スペース内の最古の命令要素よりも古い命令トレースストリーム内の位置に対応するキー値を有する前記データトレースストリーム内でデータ要素を検出すると、前記命令トレースストリームと前記データトレースストリームとの両方で同期マーカーを挿入するように構成されていることを特徴とする請求項１１に記載の装置。
【請求項１４】
前記トレース回路が、前記検索スペース内の最古の命令要素よりも古い命令トレースストリーム内の位置に対応するキー値を有し、かつ最も最近生成されたキー値より新しい前記検索スペース内の位置に対応する命令要素を一致させるキー値を有する前記データトレースストリーム内でデータ要素を検出すると、前記命令トレースストリームと前記データトレースストリームとの両方で同期マーカーを挿入するように構成されていることを特徴とする請求項１１に記載の装置。
【請求項１５】
前記トレース回路が、前記検索スペース内の最新の命令要素よりも新しい命令トレースストリーム内の位置に対応するキー値を有する前記データトレースストリーム内でデータ要素を検出すると、前記命令トレースストリームと前記データトレースストリームとの両方で同期マーカーを挿入するように構成されていることを特徴とする請求項１１に記載の装置。
【請求項１６】
前記トレース回路が、前記検索スペース内の最新の命令要素よりも新しい命令トレースストリーム内の位置に対応するキー値を有し、かつ前記検索スペース内の最古の命令要素と前記最終一致命令要素との間に位置付けられた命令要素を一致させるキー値を有する前記データトレースストリーム内でデータ要素を検出すると、前記命令トレースストリームと前記データトレースストリームとの両方で同期マーカーを挿入するように構成されていることを特徴とする請求項１２に記載の装置。
【請求項１７】
前記命令トレースストリームを有する対応命令要素がキャンセルされるように、前記処理回路によって投機的に実行される１つ以上のプログラム命令がキャンセルされると、前記トレース回路が、前記命令トレースストリームと前記データトレースストリームとの両方で同期マーカーを挿入するように構成されていることを特徴とする請求項３に記載の装置。
【請求項１８】
データを処理するための装置であって、
プログラム命令のストリームに応答して処理動作を実行するための処理手段と、
前記処理手段によって実行される前記処理動作を表すトレースデータを生成するための前記処理手段に連結されたトレース手段と、
を備え、
前記トレースデータが、第１のトレースストリームと第２のトレースストリームとを含む複数の別個のトレースストリームを備え、
前記トレース手段が前記第２のトレースストリームに同期マーカーを挿入して、前記第１のトレースストリームにおける既知のポイントに一致する同期ポイントをマークするように構成されており、
前記同期マーカーに加え、前記トレース手段が、前記第１のトレースストリーム内の個々の命令要素と前記第２のトレースストリーム内の個々のデータ要素をそれぞれのキー値でマークするように構成されていることを特徴とする装置。
【請求項１９】
プログラム命令のストリームに応答して処理動作を実行するステップと、
前記実行される処理動作を表すトレースデータを生成するステップと、
を含むデータ処理方法であって、
前記トレースデータが、第１のトレースストリームと第２のトレースストリームとを含む複数の別個のトレースストリームを備え、
前記生成するステップが、前記第２のトレースストリームに同期マーカーを挿入して、前記第１のトレースストリームにおける既知のポイントに一致する同期ポイントをマークし、
前記同期マーカーに加え、前記第１のトレースストリーム内の個々の命令要素と前記第２のトレースストリーム内の個々のデータ要素をそれぞれのキー値でマークすることを特徴とする方法。
【請求項２０】
受信したトレースデータを処理するための装置であって、
プログラム命令のストリームに応答して処理動作を実行する処理装置からトレースデータを受信するように構成された受信回路と、
前記受信回路に連結され、前記トレースデータを分析するように構成された分析回路と、
を備え、
前記トレースデータは、第１のトレースストリームと第２のトレースストリームとを含む複数の別個のトレースストリームを備え、
前記分析回路が、前記第１のトレースストリームと前記第２のトレースストリーム内の同期マーカーと、前記第１のトレースストリーム内の既知のポイントと、を特定するように構成されており、
前記同期マーカーおよび前記既知のポイントが前記第１のトレースストリームおよび前記第２のトレースストリーム内のマッチング位置とのそれぞれの同期ポイントを特定し、
前記同期マーカーに加え、前記第１のトレースストリームと前記第２のトレースストリーム内の個々の要素はそれぞれのキー値でマークされることを特徴とする装置。
【請求項２１】
受信したトレースデータを処理するための装置であって、
プログラム命令のストリームに応答して、処理動作を実行する処理装置からトレースデータを受信するための受信手段と、
前記トレースデータを分析するための前記受信手段に連結された分析手段と、
を備え、
前記トレースデータは、第１のトレースストリームと第２のトレースストリームとを含む複数の別個のトレースストリームを備え、
前記分析手段が、前記第１のトレースストリームと前記第２のトレースストリーム内の同期マーカーと、前記第１のトレースストリーム内の既知のポイントと、を特定するように構成されており、
前記同期マーカーおよび前記既知のポイントが前記第１のトレースストリームおよび前記第２のトレースストリーム内のマッチング位置とのそれぞれの同期ポイントを特定し、
前記同期マーカーに加え、前記第１のトレースストリームと前記第２のトレースストリーム内の個々の要素はそれぞれのキー値でマークされることを特徴とする装置。
【請求項２２】
受信したトレースデータの処理方法であって、
プログラム命令のストリームに応答して、処理動作を実行する処理装置からトレースデータを受信するステップと、
前記トレースデータを分析するステップと、
を含み、
前記トレースデータは、第１のトレースストリームと第２のトレースストリームとを含む複数の別個のトレースストリームを備え、
前記分析するステップが、前記第１のトレースストリームと前記第２のトレースストリーム内の同期マーカーと、前記第１のトレースストリーム内の既知のポイントとを特定し、
前記同期マーカーおよび前記既知のポイントが、前記第１のトレースストリームおよび前記第２のトレースストリーム内のマッチング位置とのそれぞれの同期ポイントを特定し、
前記同期マーカーに加え、前記第１のトレースストリームと前記第２のトレースストリーム内の個々の要素はそれぞれのキー値でマークされることを特徴とする方法。
【請求項２３】
データを処理するための装置であって、
プログラム命令のストリームに応答して処理動作を実行するように構成された処理回路と、
前記処理回路に連結され、前記処理回路によって実行される前記処理動作を表すトレースデータを生成するように構成されたトレース回路と、
を備え、
前記トレースデータが、
（ｉ）前記処理回路によって処理されるプログラム命令を表す命令トレースストリームと、
（ｉｉ）前記命令トレースストリームとは別であり、前記処理回路とメモリとの間のデータ転送を表し、前記命令トレースストリームと正確に相関しているデータトレースストリームと、
を備え、
前記命令トレースストリームが一続きの命令要素を備え、前記データトレースストリームが、一続きのデータ要素を備え、
前記トレース回路が、前記一続きの命令要素内の個々の命令要素をそれぞれのキー値でマークするように構成されており、
前記トレース回路が、前記一続きのデータ要素内の個々のデータ要素を、前記データ要素と関連付けられたそれぞれのプログラム命令に対応する前記命令トレースストリーム内の命令要素のキー値に一致するそれぞれのキー値でマークするように構成されていることを特徴とする装置。
【請求項２４】
一致するキー値を有するデータ要素および命令要素が、前記データトレースストリーム内のそれらのそれぞれの位置と前記命令トレースストリームとの間に可変オフセットを有することを特徴とする請求項２３に記載の装置。
【請求項２５】
前記トレース回路が、前記命令トレースストリーム内の隣接する命令要素どうしの間で前記命令要素の前記キー値を増分するように構成されていることを特徴とする請求項２３に記載の装置。
【請求項２６】
前記命令要素の前記キー値が、前記命令トレースストリーム内で所定の順序を有することを特徴とする請求項２５に記載の装置。
【請求項２７】
前記データ要素の前記キー値が、前記データトレースストリーム内で可変順序を有することを特徴とする請求項２６に記載の装置。
【請求項２８】
前記トレース回路が、所定のキー値の範囲内で前記キー値をラップするように構成されていることを特徴とする請求項２５に記載の装置。
【請求項２９】
前記トレース回路が、前記命令トレースストリームの隣接する命令要素の検索スペース内でデータ要素と命令要素との間で一致するキー値を検出することにより、前記データ要素と前記命令要素とを一致させるように構成されていることを特徴とする請求項２３に記載の装置。
【請求項３０】
前記検索スペースが、前記命令トレースストリーム内の最終一致命令要素に対して一定の位置を有するように前記命令トレースストリーム内に位置し、前記最終一致命令要素が、一致するデータ要素が前記データトレースストリーム内に置かれた前記命令トレースストリーム内で最後に現れる命令要素に対応することを特徴とする請求項２９に記載の装置。
【請求項３１】
前記トレース回路が、前記命令トレースストリームおよび前記データトレースストリーム内のマッチング位置とのそれぞれの同期ポイントをマークするために、前記命令トレースストリームと前記データトレースストリームとの両方で同期マーカーを挿入するように構成されていることを特徴とする請求項２３に記載の装置。
【請求項３２】
前記トレース回路が、前記検索スペース内の最古の命令要素よりも古い命令トレースストリーム内の位置に対応するキー値を有する前記データトレースストリーム内でデータ要素を検出すると、前記命令トレースストリームと前記データトレースストリームとの両方で同期マーカーを挿入するように構成されていることを特徴とする請求項２９に記載の装置。
【請求項３３】
前記トレース回路が、前記検索スペース内の最古の命令要素よりも古い命令トレースストリーム内の位置に対応するキー値を有し、かつ最も最近生成されたキー値より後で前記検索スペース内の位置に対応する命令要素を一致させるキー値を有する前記データトレースストリーム内でデータ要素を検出すると、前記命令トレースストリームと前記データトレースストリームとの両方で同期マーカーを挿入するように構成されていることを特徴とする請求項３０に記載の装置。
【請求項３４】
前記トレース回路が、前記検索スペース内の最新の命令要素よりも新しい命令トレースストリーム内の位置に対応するキー値を有する前記データトレースストリーム内でデータ要素を検出すると、前記命令トレースストリームと前記データトレースストリームとの両方で同期マーカーを挿入するように構成されていることを特徴とする請求項２９に記載の装置。
【請求項３５】
前記トレース回路が、前記検索スペース内の最新の命令要素よりも新しい命令トレースストリーム内の位置に対応するキー値を有し、かつ前記検索スペース内の最古の命令要素と前記最終一致命令要素との間に位置付けられた命令要素を一致させるキー値を有する前記データトレースストリーム内でデータ要素を検出すると、前記命令トレースストリームと前記データトレースストリームとの両方で同期マーカーを挿入するように構成されていることを特徴とする請求項３０に記載の装置。
【請求項３６】
前記命令トレースストリームを有する対応命令要素がキャンセルされるように、前記処理回路によって投機的に実行される１つ以上のプログラム命令がキャンセルされると、前記トレース回路が、前記命令トレースストリームと前記データトレースストリームとの両方で同期マーカーを挿入するように構成されていることを特徴とする請求項３１に記載の装置。
【請求項３７】
データを処理するための装置であって、
プログラム命令のストリームに応答して処理動作を実行するための処理手段と、
前記処理手段によって実行される前記処理動作を表すトレースデータを生成するための前記処理手段に連結されたトレース手段と、
を備え、
前記トレースデータが、
（ｉ）前記処理手段によって処理されるプログラム命令を表す命令トレースストリームと、
（ｉｉ）前記命令トレースストリームとは別であり、前記処理手段とデータを格納するためのメモリ手段との間のデータ転送を表し、前記命令トレースストリームと正確に相関しているデータトレースストリームと、
を備え、
前記命令トレースストリームが一続きの命令要素を備え、前記データトレースストリームが、一続きのデータ要素を備え、
前記トレース手段が、前記一続きの命令要素内の個々の命令要素をそれぞれのキー値でマークするように構成されており、
前記トレース手段が、前記一続きのデータ要素内の個々のデータ要素を、前記データ要素と関連付けられたそれぞれのプログラム命令に対応する前記命令トレースストリーム内の命令要素のキー値に一致するそれぞれのキー値でマークするように構成されていることを特徴とする装置。
【請求項３８】
プログラム命令のストリームに応答して処理動作を実行するステップと、
前記実行される処理動作を表すトレースデータを生成するステップと、
を含むデータ処理方法であって、
前記トレースデータが、
（ｉ）処理されたプログラム命令を表す命令トレースストリームと、
（ｉｉ）前記命令トレースストリームとは別であり、前記プログラム命令に応答したデータ転送を表し、前記命令トレースストリームと正確に相関しているデータトレースストリームと、
を備え、
前記命令トレースストリームが一続きの命令要素を備え、前記データトレースストリームが、一続きのデータ要素を備え、
前記一続きの命令要素内の個々の命令要素をそれぞれのキー値でマークするステップと、
前記一続きのデータ要素内の個々のデータ要素を、前記データ要素と関連付けられたそれぞれのプログラム命令に対応する前記命令トレースストリーム内の命令要素のキー値に一致するそれぞれのキー値でマークするステップと、を具備することを特徴とする方法。
【請求項３９】
受信したトレースデータを処理するための装置であって、
プログラム命令のストリームに応答して処理動作を実行する処理装置からトレースデータを受信するように構成された受信回路と、
前記受信回路に連結され、前記トレースデータを分析するように構成された分析回路と、
を備え、
前記分析回路が前記トレースデータを、
（ｉ）前記処理装置によって処理されるプログラム命令を表す命令トレースストリームとして、および
（ｉｉ）前記命令トレースストリームとは別であり、前記処理装置とメモリとの間のデータ転送を示し、前記命令トレースストリームと正確に相関しているデータトレースストリームとして、
分析するように構成され、
前記命令トレースストリームが一続きの命令要素を備え、前記データトレースストリームが、一続きのデータ要素を備え、
前記一続きの命令要素内の個々の命令要素は、それぞれのキー値でマークされ、
前記一続きのデータ要素内の個々のデータ要素は、前記データ要素と関連付けられたそれぞれのプログラム命令に対応する前記命令トレースストリーム内の命令要素のキー値に一致するそれぞれのキー値でマークされることを特徴とする装置。
【請求項４０】
受信したトレースデータを処理するための装置であって、
プログラム命令のストリームに応答して、処理動作を実行する処理装置からトレースデータを受信するための受信手段と、
前記トレースデータを分析するための前記受信手段に連結された分析手段と、
を備え、
前記分析手段が前記トレースデータを、
（ｉ）前記処理装置によって処理されるプログラム命令を表す命令トレースストリームとして、および
（ｉｉ）前記命令トレースストリームとは別であり、前記処理装置とメモリとの間のデータ転送を表し、前記命令トレースストリームと正確に相関しているデータトレースストリームとして、
分析するように構成され、
前記命令トレースストリームが一続きの命令要素を備え、前記データトレースストリームが、一続きのデータ要素を備え、
前記一続きの命令要素内の個々の命令要素は、それぞれのキー値でマークされ、
前記一続きのデータ要素内の個々のデータ要素は、前記データ要素と関連付けられたそれぞれのプログラム命令に対応する前記命令トレースストリーム内の命令要素のキー値に一致するそれぞれのキー値でマークされていることを特徴とする装置。
【請求項４１】
受信したトレースデータの処理方法であって、
プログラム命令のストリームに応答して、処理動作を実行する処理装置からトレースデータを受信するステップと、
前記トレースデータを分析するステップと、
を含み、
前記分析するステップは、前記トレースデータを、
（ｉ）前記処理装置によって処理されるプログラム命令を表す命令トレースストリームとして、および
（ｉｉ）前記命令トレースストリームとは別であり、前記処理装置とメモリとの間のデータ転送を表し、前記命令トレースストリームと正確に相関しているデータトレースストリームとして、
分析するように構成され、
前記命令トレースストリームが一続きの命令要素を備え、前記データトレースストリームが、一続きのデータ要素を備え、
前記一続きの命令要素内の個々の命令要素をそれぞれのキー値でマークするステップと、
前記一続きのデータ要素内の個々のデータ要素を、前記データ要素と関連付けられたそれぞれのプログラム命令に対応する前記命令トレースストリーム内の命令要素のキー値に一致するそれぞれのキー値でマークするステップと、を具備することを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムの分野に関する。詳細には、本発明は、データ処理システムの挙動とデバッギングとの診断を支援する目的で生成および分析されるトレースストリームの分野に関する。
【背景技術】
【０００２】
処理回路に連結され、その処理回路によって実行される処理動作を表すトレースデータストリームを生成するように構成されたトレーシング回路を含むデータ処理システムを提供することは公知である。かかるシステムの一例が、イングランドのＡＲＭリミテッド・オブ・ケンブリッジ社による集積回路設計であり、この設計は、プロセッサコアと、トレースデータのストリームを生成するためにプロセッサコアに連結された組み込みトレースマクロセル（ＥＴＭ）とを含む。このトレースデータは、オフチップに送信されて分析を受ける前にオンチップでバッファリングされ得る。分析では、トレースデータストリームを読み込み、そのトレースデータストリームを解釈する汎用コンピュータを利用して、そのトレースデータストリームを生み出す処理動作を再構築し得る。
【０００３】
命令トレースストリームおよびデータトレースストリームなど複数のトレースストリーム（例えば、イングランドのＡＲＭ  Ｌｉｍｉｔｅｄ  ｏｆ  Ｃａｍｂｒｉｄｇｅ社によって設計されたＣｏｒｅＳｉｇｈｔファンネルメカニズム）を提供することは、いくつかの利点を有し得る。具体的には、命令とデータとの間で容易にフィルタリングできることを含む。このトレーシングメカニズムは、命令とデータとで異なる取り扱いをする場合も容易くセットアップされ得る。トレースストリームデコンプレッサは、命令ストリームを復号し、必要なときに限りそのデータストリームを復号するように構成され得る。専用の命令トレースストリームと専用のデータトレースストリームとを有することにより、各ストリーム内で必要とされるヘッダスペースの量が減るのが典型的であり、それによって帯域幅が改善される。このトレーシング回路は、別個の先入れ先出し方式メモリを用い得るとともに、極端に小さい入力段の使用を許可し得る。この別個の命令トレースストリームおよびデータトレースストリームは、命令トレースストリームを失わずにデータトレースストリームを消失させるなど、オーバーフロー挙動における柔軟性の高さを許容する。さらに、不要であればデータトレースストリームを無視できるため、データトレースの圧縮（すなわち、処理中のデータ値に関連するトレースデータの生成を停止するメカニズム）を明示的に提供する必要がない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一態様から見て、本発明は、データを処理するための装置であって、
プログラム命令のストリームに応答して処理動作を実行するように構成された処理回路と、
前記処理回路に連結され、前記処理回路によって実行される前記処理動作を表すトレースデータを生成するように構成されたトレーシング回路と、
を備え、前記トレースデータが、第１のトレースストリームと第２のトレースストリームとを含む複数の別個のトレースストリームを備え、前記トレース回路が前記第２のトレースストリームに同期マーカーを挿入して、前記第１のトレースストリームにおける既知のポイントに一致する同期ポイントをマークするように構成されている装置を提供する。
【課題を解決するための手段】
【０００５】
複数のトレースストリームが提供されたときに、それらのトレースストリームの適切な分析をサポートする上で困難が生じるということが認められる。特に、トレースストリーム内の要素間の相関をすべての状況で判断するのが困難であり得る。この点を支援するために、本技法は、第１のトレースストリームと第２のトレースストリームとの両方で同期マーカーを挿入するようにトレース回路が構成されており、第１のトレースストリームおよび第２のトレースストリーム内のマッチング位置とのそれぞれの同期ポイントをマークするものと定める。このようにして、トレースストリームが分析されるときに同期マーカーを検出することができ、トレースストリーム間で正確に相関させることができる。
【０００６】
第１のトレースストリーム内の既知のポイントは、それ自体も同期マーカーであり得る。
【０００７】
複数のトレースストリームがいくつかの理由でサポートされ得るものの、本技法は、第１のトレースストリームが処理回路によって処理されるプログラム命令を表す命令トレースストリームであり、かつ第２のトレースストリームが処理回路とメモリシステムとの間でのデータ転送を表すデータトレースストリームである場合に特に有用である。命令とデータとを別々にトレースすることは、上記の理由など、いくつかの理由で便利である。
【０００８】
一続きの命令要素内の要素がそれぞれのキー値でマークされている場合に、それらの要素の解釈が支援される。
【０００９】
それらのデータ要素を生み出す個々のデータ要素と命令要素との相関は、それらのデータ値を生み出したり、それらのデータ値と関連付けられたりしている対応命令要素のキー値に一致するキー値でそのデータ値をマークすることによって支援される。
【００１０】
一致するキー値を有するデータ要素および命令要素がデータトレースストリームおよび命令トレースストリーム内の自身のそれぞれの位置の間に可変オフセットを有することが許可されていると、命令要素およびデータ要素の生成および処理、さらには実行を開始する命令と利用可能になるその命令に関連するデータとの間で生じ得る遅延の性質に関する柔軟性が許容され得る。そのため、例えば、命令が実行を開始したときに命令トレースストリームで命令要素が生成され、置かれ得るとともに、後に可変遅延に従ってメモリシステムからデータ値が返されたときに、一致するキー値を有する対応データ要素がデータトレースストリームに挿入される。
【００１１】
トレース回路は、隣接する命令間で命令要素のキー値を増分的に変更するように配置され得る。かかる配置に伴い、命令要素のキー値は、命令トレースストリーム内で所定の順序を有するであろう。
【００１２】
命令トレースストリーム内の命令要素の所定順序および増分的に変化するそれらのキー値とは対照的に、データトレースストリーム内のデータ要素は、可変順序を有することができ、それらのデータ値と関連付けられている命令要素に関して順不同でシステムに返され得る。そのため、第１の命令が高レイテンシメモリにデータロードを発行し得る。第１の命令が先に実行を開始し、命令トレースストリーム内で先に現れる命令要素を有する場合であっても、第１の命令よりも後で実行された第２の命令が低レイテンシメモリにデータロードを発行し、第２の命令に対応するデータ値が、第１の命令と関連付けられたデータ値よりも先に返されることがあり得る。データ要素に提供されるキー値によって、かかる順不同のデータ要素を、対応命令要素と適切に一致させることができる。
【００１３】
命令トレースストリームおよびデータトレースストリーム内にビットスペースを維持するために、キー値は、所定のキー値の範囲内でラップするように配置されることがあり、それによって、キー値を格納する目的で割り当てられる必要があるビットスペースを制限する。キー値ラッピングを理由にキー値が曖昧な場合であっても、同期マーカーにより、それぞれのトレースストリーム内の同期ポイントを特定できるため、本技法に従って挿入される同期マーカーがキー値のラッピングを簡便化する。
【００１４】
キー値が、転送されたデータ値を表すデータ要素と関連付けられていると、データ要素とその対応命令要素との間のオフセットが大きすぎるために、同期マーカーを挿入して、システムがトレースデータストリームを復号し、データストリームと命令要素との間の関係におけるいかなる曖昧性も排除するのを支援する必要があるかどうかが判断される。この判断を支援するために、隣接する命令要素の検索スペースが命令トレースストリーム内で関連付けられている。
【００１５】
この検索スペースは、命令トレースストリーム内の最終一致命令要素に対して相対的に位置付けられており、その最終一致命令要素は、データトレースストリーム内で一致するデータ要素が形成された対象命令トレースストリーム内で最後に現れる命令要素に対応する。こうして検索スペースが移動ウィンドウを形成し、その中でキー値が明瞭に一致するのが通常であることから、それぞれのトレースストリームに同期マーカーを挿入するというオーバーヘッドを必要としない。
【００１６】
トレース回路は、さまざまな異なる検出環境に応答して同期マーカーを挿入するように構成され得る。トレース回路が、検索スペース内の最古の命令要素よりも古い命令トレースストリーム内の位置に対応するキー値を有するデータトレースストリーム内でデータ要素を検出するというのが１つの環境である。別の環境では、最も最近生成されたキー値よりも後の検索スペース内の位置に対応する命令要素にキー値が一致するという状況と上記の状況が組み合わさる。同期マーカーを挿入するためのこれらのトリガ状況は、データ要素が現れるのが対応命令要素と比較して遅すぎる事態への対応を支援して、一致しない対応命令要素がすでに検索スペースを離れたことによってキー値だけに依存するかどうかが曖昧になるようにする。
【００１７】
トレース回路が命令トレースストリームとデータトレースストリームとの両方で同期マーカーを挿入するように構成されている別の環境は、検索スペース内の最新の命令要素よりも新しい命令トレースストリーム内の位置に対応するキー値を有するデータトレースストリーム内でトレース回路がデータ要素を検出したときである。このトリガ状況は、検索スペース内の最古の命令要素と検索スペース内の最終一致命令要素との間に位置付けられた命令要素にキー値が一致する状況と結び付き得る。これらの状況は、データ要素とその対応命令要素との間の差が大きすぎる事態に対応することから、同期マーカーの挿入が適切であり、これにより、トレースデータストリームを解釈する必要のある回路が、効率的かつエラーなく解釈できるようになる。
【００１８】
トレース回路が同期マーカーを挿入するようにトリガされる別の環境は、命令トレースストリーム内の対応命令要素がキャンセルされるように、処理回路で投機的に実行されたもう１つのプログラム命令がキャンセルされたときである。この状況では、命令のキャンセルが命令トレースストリーム内でマークされる場合があり、キャンセルされた命令要素のキー値はその後再利用される。実行された命令要素とキャンセルされた命令要素との両方が命令トレースストリーム内に存在し得るため、データ要素を命令要素と一致させようとする際に、キャンセル動作と関連付けられた同期マーカーの挿入がいかなる潜在的な曖昧性も排除する。また、同じキーを有するデータ要素も存在する場合があり、そのいくつかはキャンセル前に対応し、いくつはキャンセル後に対応する。
【００１９】
別の態様から見て、本発明は、データを処理するための装置であって、
プログラム命令のストリームに応答して処理動作を実行するための処理手段と、
前記処理回路によって実行される前記処理動作を表すトレースデータを生成するための前記処理手段に連結されたトレース手段と、
を備え、前記トレースデータが、第１のトレースストリームと第２のトレースストリームとを含む複数の別個のトレースストリームを備え、前記トレース手段が前記第２のトレースストリームに同期マーカーを挿入して、前記第１のトレースストリームにおける既知のポイントに一致する同期ポイントをマークするように構成されている装置を提供する。
【００２０】
さらなる態様から見て、本発明は、
プログラム命令のストリームに応答して処理動作を実行するステップと、
前記実行される処理動作を表すトレースデータを生成するステップと、
を含むデータ処理方法であって、前記トレースデータが、第１のトレースストリームと第２のトレースストリームとを含む複数の別個のトレースストリームを備え、前記生成するステップが、前記第２のトレースストリームに同期マーカーを挿入して、前記第１のトレースストリームにおける既知のポイントに一致する同期ポイントをマークする装置を提供する。
【００２１】
本発明の補完的な態様は、上記の技法に従って受信したトレースデータを処理ための受信装置である。そのため、本発明のさらなる態様は、受信したトレースデータを処理するための装置であって、
プログラム命令のストリームに応答して処理動作を実行する処理装置からトレースデータを受信するように構成された受信回路と、
前記受信回路に連結され、前記トレースデータを分析するように構成された分析回路と、
を備え、前記トレースデータが第１のトレースストリームと第２のトレースストリームとを含む複数の別個のトレースストリームを備え、前記分析回路が、前記第１のトレースストリームと前記第２のトレースストリーム内の同期マーカーと、前記第１のデータストリーム内の既知のポイントとを特定するように構成されており、前記同期マーカーと前記既知のポイントが前記第１のトレースストリームおよび前記第２のトレースストリーム内のマッチング位置とのそれぞれの同期ポイントを特定する装置を提供する。
【００２２】
本発明のさらなる態様は、受信したトレースデータを処理するための装置であって、
プログラム命令のストリームに応答して、処理動作を実行する処理装置からトレースデータを受信するための受信手段と、
前記トレースデータを分析するための前記受信手段に連結された分析手段と、
を備え、前記トレースデータが第１のトレースストリームと第２のトレースストリームとを含む複数の別個のトレースストリームを備え、前記分析手段が、前記第２のトレースストリームにおける同期マーカーと、前記第１のトレースストリーム内の既知のポイントとを特定するように構成されており、前記同期マーカーおよび前記既知のポイントが前記第１のトレースストリームおよび前記第２のトレースストリーム内のマッチング位置とのそれぞれの同期ポイントを特定する装置を提供する。
【００２３】
本発明のさらなる態様は、受信したトレースデータの処理方法であって、
プログラム命令のストリームに応答して、処理動作を実行する処理装置からトレースデータを受信することと、
前記トレースデータを分析することと、
を含み、前記トレースデータが第１のトレースストリームと第２のトレースストリームとを含む複数の別個のトレースストリームを備え、前記分析するステップが、前記第２のトレースストリームにおける同期マーカーと、前記第１のデータストリーム内の既知のポイントとを特定し、前記同期マーカーおよび前記既知のポイントが、前記第１のトレースストリームおよび前記第２のトレースストリーム内のマッチング位置とのそれぞれの同期ポイントを特定する装置を提供する。
【００２４】
本技法は、同期マーカーが提供されていない実施形態でも使用され得る。これらの態様では、本発明が、データを処理するための装置であって、
プログラム命令のストリームに応答して処理動作を実行するように構成された処理回路と、
前記処理回路に連結され、前記処理回路によって実行される前記処理動作を表すトレースデータを生成するように構成されたトレーシング回路と、
を備え、前記トレースデータが、
（ｉ）前記処理回路によって処理されるプログラム命令を表す命令トレースストリームと、
（ｉｉ）前記命令トレースストリームとは別であり、前記処理回路とメモリとの間のデータ転送を表し、前記命令トレースストリームと正確に相関しているデータトレースストリームと、
を備える装置を提供する。
【００２５】
命令トレースストリームと正確に相関して（または関連付けられて）いる可能性のある命令トレースストリームとデータトレースストリームとを別個に提供することにより、前述の利点が同期マーカーの挿入から独立して提供される。
【００２６】
さらなる態様から見て、本発明は、データを処理するための装置であって、
プログラム命令のストリームに応答して処理動作を実行するための処理手段と、
前記処理回路によって実行される前記処理動作を表すトレースデータを生成するための前記処理手段に連結されたトレース手段と、
を備え、前記トレースデータが、
（ｉ）前記処理手段によって処理されるプログラム命令を表す命令トレースストリームと、
（ｉｉ）前記命令トレースストリームとは別であり、前記処理手段とデータを格納するためのメモリ手段との間のデータ転送を表し、前記命令トレースストリームと正確に相関しているデータトレースストリームと、
を備える装置を提供する。
【００２７】
さらなる態様から見て、本発明は、データ処理方法であって、
プログラム命令のストリームに応答して処理動作を実行するステップと、
前記実行される処理動作を表すトレースデータを生成するステップと、
を含み、前記トレースデータが、
（ｉ）処理されたプログラム命令を表す命令トレースストリームと、
（ｉｉ）前記命令トレースストリームとは別であり、前記プログラム命令に応答したデータ転送を表し、前記命令トレースストリームと正確に相関しているデータトレースストリームと、
を含む方法を提供する。
【００２８】
さらなる態様から見て、本発明は、受信したトレースデータを処理するための装置であって、
プログラム命令のストリームに応答して処理動作を実行する処理装置からトレースデータを受信するように構成された受信回路と、
前記受信回路に連結され、前記トレースデータを分析するように構成された分析回路と、
を備え、前記分析回路が前記トレースデータを、
（ｉ）前記処理回路によって処理されるプログラム命令を表す命令トレースストリームとして、および
（ｉｉ）前記命令トレースストリームとは別であり、前記処理回路とメモリとの間のデータ転送を表し、前記命令トレースストリームと正確に相関しているデータトレースストリームとして
分析するように構成されている装置を提供する。
【００２９】
さらなる態様から見て、本発明は、受信したトレースデータを処理するための装置であって、
プログラム命令のストリームに応答して、処理動作を実行する処理装置からトレースデータを受信するための受信手段と、
前記トレースデータを分析するための前記受信手段に連結された分析手段と、
を備え、前記分析手段が前記トレースデータを、
（ｉ）前記処理回路によって処理されるプログラム命令を表す命令トレースストリームとして、および
（ｉｉ）前記命令トレースストリームとは別であり、前記処理回路とメモリとの間のデータ転送を表し、前記命令トレースストリームと正確に相関しているデータトレースストリームとして
分析するように構成されている装置を提供する。
【００３０】
さらなる態様から見て、本発明は、受信したトレースデータの処理方法であって、
プログラム命令のストリームに応答して、処理動作を実行する処理装置からトレースデータを受信することと、
前記トレースデータを分析することと、
を含み、前記分析ステップが前記トレースデータを、
（ｉ）前記処理回路によって処理されるプログラム命令を表す命令トレースストリームとして、および
（ｉｉ）前記命令トレースストリームとは別であり、前記処理回路とメモリとの間のデータ転送を表し、前記命令トレースストリームと正確に相関しているデータトレースストリームとして
分析する装置を提供する。
【００３１】
本発明の上記および他の目的、特徴および利点は、添付の図面と併せて読まれるべき例示的実施形態に関する以下の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
【００３２】
【図１】処理回路、メモリおよびトレース回路を含むデータ処理装置を模式的に表している。
【図２】一致するキー値によってデータストリームと命令要素との間の関係が示されている命令トレースストリームとデータトレースストリームを模式的に表している。
【図３】どのキー値が、命令トレースストリーム内に挿入されている命令要素と関連付けられるかを判断するためのプロセスを模式的に表しているフロー図である。
【図４】データトレースストリーム内に挿入されるデータ要素にキー値がどのように割り当てられるかを模式的に表しているフロー図である。
【図５】データ要素がデータトレースストリーム内に挿入されるのが遅すぎて、同期マーカーの挿入がトリガされるようにその対応命令要素と容易に一致しない事態を模式的に表している。
【図６Ａ】データトレースストリーム内のデータ要素と命令トレースストリーム内の対応命令要素との間の差が大きすぎるために、同期マーカーの挿入がトリガされる事態を模式的に表している。
【図６Ｂ】システムの状態と、同期マーカーが挿入される時期との関係を模式的に表している状態ダイアグラムである。
【図７】同期マーカーの挿入がトリガされるように、命令がキャンセルされ、命令要素のキー値が再利用される事態を模式的に表している。
【図８】対応命令要素に対してデータ要素が現れるのが遅すぎる場合、またはデータ要素と対応命令要素との間の差が大きすぎる場合に同期マーカーを挿入するための制御を模式的に表しているフロー図である。
【図９】命令がキャンセルされたときに同期マーカーの挿入をトリガする際に実行される制御を模式的に表しているフロー図である。
【図１０Ａ】トレースデータのストリームからの診断情報の回復を模式的に表している。
【図１０Ｂ】トレースデータのストリームからの診断情報の回復を模式的に表している。
【図１０Ｃ】トレースデータのストリームからの診断情報の回復を模式的に表している。
【図１０Ｄ】トレースデータのストリームからの診断情報の回復を模式的に表している。
【発明を実施するための形態】
【００３３】
図１は、メモリ６に連結された処理回路４を含むデータ２を処理するための装置を模式的に表している。処理回路４は、受信したトレースデータ１４を処理するための装置に供給される命令トレースストリーム１０とデータトレースストリーム１２とを生成しているトレーシング回路８を含む。
【００３４】
処理回路４は、汎用レジスタ１６、乗算器１８、シフタ２０および加算器２２を含むデータパスを有するプロセッサコアを含む。プリフェッチ回路２４を介してメモリ６からフェッチされたプログラム命令が命令パイプライン２６に供給され、復号段階で、データパス１６、１８、２０、２２を制御して所望の処理動作を実行するための制御信号を生成する。本実施例において、これらの処理動作は、メモリ６と処理回路４との間でのデータ転送を含む。データ転送は、レジスタバンク１６内のレジスタの１つに対するデータ値のロード、またはメモリ６に対するレジスタバンク１６のレジスタ内の値の１つのストアという形態であり得る。
【００３５】
処理回路４は極めて簡略化された形態で示されており、実際にはさらなる回路要素を多数含み得ることを理解されたい。さらに、図１の実施形態例は、処理回路４とメモリ６とを別個のものとして表しているが、これらの要素はシステムオンチップの集積回路等で複合的に形成され得ることも理解されたい。
【００３６】
処理回路４は、処理回路４と関連付けられた組み込みトレースマクロセル（ＥＴＭ）の一部として、トレーシング回路８を含む。トレーシング回路８は、パイプライン２６から受信される信号２８に応答して、実行中の命令を表す命令要素を含む命令トレースストリームを生成する。トレース回路８は、処理回路４とメモリ６との間で行われているデータ転送を表す信号３０も受信する。これらの信号３０は、検出されたトレース中のデータ転送を表すデータ要素を含んでいるデータトレースストリームの生成を制御する目的でトレース回路８によって使用される。組み込みトレースマクロセルは、命令トレースストリームおよびデータトレースストリームがトレースデータ１４を受信するための装置に送信される前に格納されるトレースバッファ３２を含む。トレース回路８は、１つ以上の命令がキャンセルされたことを示すパイプライン２６からのキャンセル信号にも応答する。命令のキャンセルの発生は、以下でさらに述べるとおり、データトレースストリーム１２と命令トレースストリーム１０とに同期マーカーを挿入するための１つのトリガである。
【００３７】
この実施形態例におけるトレースデータ１４を受信するための装置は、データトレースストリーム１２と命令トレースストリーム１０とを受信するための受信回路３４、さらには汎用プロセッサ３６とプログラムメモリ３８とを含む汎用コンピュータを備える。プログラムメモリ３８内に格納され、汎用プロセッサ３６によって実行されるコンピュータプログラムは、受信したデータトレースストリーム１２と命令トレースストリーム１０とを分析して、実行された命令を所有するユーザと、転送されたデータ値を所有するユーザに明示する。これは、デバッギング、診断およびパフォーマンスの最適化など、さまざまな理由で有用である。分析には、命令トレースストリーム１０およびデータトレースストリーム１２内で同期マーカーが使用され、データ要素が命令要素と一致できるように、これらのトレースストリーム１０、１２内で一致（相関）する位置が特定される。
【００３８】
動作トレーシング回路８、特にＥＴＭ内のインデックス格納ユニット（別称「トラッキングテーブル」）２２０の動作について、表１を参照しながら以下説明する。表１は、プロセッサコアが命令Ａ、ＢおよびＣのグループを投機的に実行し、その後グループＢがキャンセルされ、グループＡが確定されるべきである事態で、カウンタ値、最古の未確定値およびトラッキングテーブルがどのようにＥＴＭで更新されるかを示す。
グループＡは、「対象」であり、現在トレース中であるロード（ＬＤＲ）命令で始まる。そのため、グループＡ（「Ａ．ｆｉｒｓｔ」）に対応する第１のインデックスユニット２３０のエントリは、現在のカウンタ値０を格納し、このカウンタは１に増分される。最後に、グループＡ（「Ａ．ｌａｓｔ」）に対応する最終インデックスユニット２４０のエントリが、現在のカウンタ値１を格納する。グループＡにおける次の命令は、「対象」でなく、トレースもされていない移動命令（ＭＯＶ）である。グループＡの最終命令は、「対象」であり、かつトレースされる「等しければ分岐」（ＢＥＱ）命令であることから、カウンタは２に増分される。グループＡ（「Ａ．ｌａｓｔ」）に対応する最終インデックスユニット２４０のエントリは、その後現在のカウンタ値２で以て更新される。実際、現在のグループに対応する最終インデックスユニット２４０のエントリが常に現在のカウンタ値で以て更新されるのが各命令の最終ステップであるという点に注意すべきである。当然のことながら、このステップは、その命令に対してカウンタが更新された場合に限り有効である。表１に示す残りの命令ついては、このようにして「最終」値を更新することが明示的に記載されていない。
【００３９】
グループＢは、「対象でなく」トレースもされてもいないＡＤＤ命令で始まるが、新しいグループにおける第１の命令により、現在のカウンタ値２に第１のインデックス値格納ユニットの対応エントリ（すなわちＢ．ｆｉｒｓｔ＝２）に格納される。グループＢにおける第２の命令は、同じく「対象でなく」、トレースもされてもおらず、いかなる値も更新しないＳＵＢ命令である。
【００４０】
グループＣは「対象であり」、トレースされるストア（ＳＴＲ）命令によって開始されるため、現在のカウンタ値は、第１のインデックス格納ユニットのＣ．ｆｉｒｓｔエントリに格納され、カウンタはその後３に増分される。グループＣにおける第２の命令は、「対象であり」、トレースもされる「等しくなければ分岐」（ＢＮＥ）命令であるので、カウンタは４に更新される。
【００４１】
次にプロセッサコアは、グループＢの投機的実行が間違っていたため、グループＢおよびＣがキャンセルされるべきであることを明示する。それに対し、ＥＴＭ（トレーシング回路８が制御）は、カウンタ２１０の現在のカウント値と、第１のインデックス格納ユニット２３０の対応エントリ（すなわちＢ．ｆｉｒｓｔ）に格納されている値（現在は２）とを参照する。したがってＥＴＭは、２つのトレースデータの項目（４−２）がキャンセルされるべきであると判断し、この事実を表すトレースデータの項目を生成する。その後カウンタ２１０は、（それまでが４であり、２つの項目がキャンセルされたため、）２にリセットされる。
【００４２】
次にプロセッサコアが、このグループの命令の投機的実行が正しかったと判断したため、命令グループＡが確定されるべきであることを明示する。それに対し、（トレーシング回路８の制御下にある）ＥＴＭは、最古の未確定格納ユニット２５０（現在は０）に格納されている値と、このグループに対応する最終インデックス格納ユニット２４０におけるエントリ（すなわちＡ．ｌａｓｔ）（現在は２）とを参照する。したがってＥＴＭは、２つのトレースデータの項目（２−０）が確定されるべきであると判断し、この事実を表すトレースデータの項目を生成する。最古の未確定格納ユニット２５０に格納された値はその後、このグループに関して読み込まれる「最終」値（本実施例では２）にリセットされる。
【００４３】
表１で参照されている実施形態では、確定とキャンセルがいくつかのイベントを参照して実行され、生成されたトレースデータの項目が、キャンセルまたは確定されるべきであるいくつかのイベントを明示するという点に注意されたい。代替実施形態では、トレースユニットが、イベント番号を参照してトレースのキャンセル／確定項目を生成することができる。この場合、トレースのキャンセル項目については、「第１の」値（すなわち第１のインデックス値格納ユニットの対応エントリ）からイベント番号が取得され、トレースの確定項目については、「最終」値（すなわち最終インデックス値格納ユニットにおける対応エントリ）からイベント番号が取得される。イベント番号による確定およびキャンセルは、（減算が不要のため）ハードウェアの必要性が低いように思われるかもしれないが、いくつかのイベントによるキャンセル／確定を明示する際、一般に先頭のゼロを有することから、圧縮されることが多いという点に注意する必要がある。「イベントの数」または「イベント番号」によるキャンセル／確定の選択は、システム要件、すなわちトレースユニットでハードウェアが少ないこと、またはトレースストリームで帯域幅が狭いことが重要とみなされるかどうかに応じて判断することができる。
【００４４】
【表１】
0005699042.tif 000002
【００４５】
図２は、複数のトレースストリーム１０、１２を模式的に表している。本実施形態例において、これらの複数のトレースストリームは、データトレースストリーム１２および命令トレースストリーム１０である。異なるトレースストリーム内で同期マーカーを挿入する本技法の一般的な態様は、それらのトレースストリームがデータトレースストリーム１２と命令トレースストリーム１０とを備える事態に限定される必要はないという点を理解されたい。
【００４６】
図２の実施例では、命令トレースストリーム１０が一続きの命令要素（「アトム」）を含み、各々が０から５の範囲内のキー値でマークされている。これらのキー値は、増分シーケンスで命令要素に適用される。このシーケンスは、キー値５の後にラップされ、キー値０に戻る。このキー値の範囲は一例に過ぎず、実際には、はるかに大きい範囲および／または任意の既定シーケンスが使用され得るという点を理解されたい。さらに、本実施例における増分は昇順であるものの、キー値の絶対値を減らしていくように適用され、その後キー値がゼロに達するとラップされることもあり得る。さらに、システム全体のコンテキストで適切であれば、キー値が１以外の値ごとに変化する可能性がある。これらすべての可能性が、本技法によって包含される。
【００４７】
命令トレースストリーム１０内に、一致した最新の命令要素に対応する最終一致命令要素（ＬＭＥ）４０、すなわち、以前に一致したすべての命令要素のうち最新のＬＭＥがある。図２に表す実施例では、データ要素４４が、処理回路４とメモリ６との間でのデータ転送の検出に続いてデータトレースストリーム１２内で挿入される。このデータ要素４４は、命令トレースストリーム１０内で命令要素４６と一致する。トレーシング回路８は、パイプライン２６からの信号２８と、データパスをスヌープすることによって派生した信号３０とを分析することにより、これが正しい一致であると判断する（例えばメモリアドレスが、データ転送を命令と一致させる目的で、トレース回路８によって使用され得る）。データ要素４４および命令要素４６は、データトレースストリーム１２および命令トレースストリーム１０内でともに一致させることができるように、一致するキー値でマークされており、本実施例ではキー値が３である。
【００４８】
データ要素４４がデータトレースストリーム１２で挿入される正確なタイミングは、データ転送の可変遅延への依存度によって変わるであろう。そのため、命令要素４６とその対応データ要素４４との間には可変オフセットがある。この可変オフセットの存在もあり、データトレースストリーム１２内のデータ要素が、命令トレースストリーム１０内の対応命令要素と必ずしも同じ順序に従うとは限らない。データトレースストリーム１２内のデータ要素がこのように順不同で挙動することは、キー値を使用することが、処理回路４とメモリ６との正確な挙動を理解するために、データトレースストリーム１２と命令トレースストリーム１０とを相関的な方法で分析できる上で重要である１つの理由である。
【００４９】
命令トレースストリーム１０内の最終一致命令要素（ＬＭＥ）４０の周りに位置するのが検索スペース４８である。この検索スペースは、以下に述べるとおり、同期マーカーがデータトレースストリーム１２と命令トレースストリーム１０とに挿入されるべき時期を定義および制御する際に使用される。検索スペース４８は、最終一致要素４０と一定の関係を有するように位置付けられているため、最終一致要素４０が命令トレースストリーム１０内で位置を移動するにつれて、検索スペース４８も命令トレースストリーム１０内で移動する。図２に示す実施例では、検索スペース４８が、キー値の１つの完全な数値範囲にわたるようなサイズ、すなわち、検索スペースが、０から５に及ぶ潜在的なキー値の全範囲を包含するようなサイズを有する。
【００５０】
図３は、命令トレースストリーム１０内に発行される命令要素と関連付けるキー値を判断する際にトレース回路８によって実行され得る処理を模式的に表すフロー図である。ステップ５０で、キー値ＫＶがゼロの値に初期化される。ステップ５２で、命令要素が命令トレースストリーム１０内に発行されるまで処理が待機するかかる命令要素が発行されると、処理はステップ５４に進み、キー値ＫＶの現在値が、命令トレースストリーム１０内に置かれている命令要素と関連付けられる（例えば、命令要素内の空フィールドが、キー値ＫＶの現在値を保持する目的で使用される）。
【００５１】
ステップ５６で、キー値ＫＶが増分される。ステップ５８で、キー値がラップされるべき状態に達したかどうかが判断される。図示された実施例では、キー値が「６」に達すると、ラップが実行されるべきであり、処理がステップ５０に戻ってキー値が再び「０」に初期化される。ラップがそのキー値で必要でない場合には、処理がステップ５２に戻り、発行される別の命令要素を待機する。
【００５２】
図４は、データトレースストリーム１２で挿入されるデータ要素とキー値ＫＶを関連付ける際にトレース回路８によって実行される処理を模式的に表すフロー図である。ステップ６０で、データトレースストリーム１２内に発行されることになっているデータ要素が検出されるまで処理が待機する。かかるデータ要素が検出されると、ステップ６２でキー値ＫＶがそのデータ要素に割り当てられ、命令トレースストリーム１０内にすでに発行され、関係のあるデータ要素に対応する命令要素のキー値ＫＶを一致させる。
【００５３】
こうしてロード命令が実行され得ると共に、その命令に対応している命令要素が命令トレースストリーム１０内に挿入され得る。そのロード命令（後で可変数の処理サイクルとなり得る）に応答してデータ値が返されると、対応データ要素がデータトレースストリーム１２内に挿入され、ロード命令の命令要素のキー値に一致するキー値でマークされる。トレース回路８は、データ要素でマークされるデータ転送を生み出すかかる「インフライト」命令をトラッキングするため、データ要素が到着すると、トレース回路８が、一致するキー値をそのデータ要素と関連付ける。
【００５４】
ステップ６２に続き、ステップ６４で、適切なキー値でマークされているデータ要素がデータトレースストリーム１２内に発行され、処理がステップ６０に戻る。
【００５５】
図５は、データトレースストリーム１２および命令トレースストリーム１０内への同期マーカー６６の挿入がトリガされる状況の一実施例を模式的に表している。図５の実施例は、対応命令要素７０が命令トレースストリーム１０内に発行された後、データ要素６８が挿入されるのが遅すぎる事態である。図５に示す実施例では、命令要素７２が命令トレースストリーム１０内に挿入される前にデータ要素６８が生じたことが確認されるであろう。対応する命令が実行される前にデータ転送が行われることはないため、このケースでは、データ要素６８がはるか以前の命令要素７０に対応する。
【００５６】
トレース回路８は、命令トレースストリーム１０内で最も最近生成された命令要素をトラッキングすることによって動作する。さらに、検索スペース４８の最新の終端は、最終一致要素ＬＭＥの位置から派生した一定の計算に基づいて判断され、この位置もトラッキングされる。挿入中のデータ要素６８のキーが、最も最近生成された命令要素７４のキーよりも新しいものの、検索スペース４８の最新の終端７６よりも前であるか等しい場合、データ要素６８はその検索スペースよりも前である命令要素７０に対応するため、同期マーカー６６（一意のビットパターンなど）は、データトレースストリーム１２と命令トレースストリーム１０との両方に挿入される。
【００５７】
図６Ａは、データ要素７８の挿入と先行データ要素との間の差が長すぎる事態を模式的に表している。この環境で同期マーカー８２を挿入するための要件は、データ要素７８のキー値が、最終一致要素ＬＭＥと検索スペース４８の最古の終端８６との間に存在するデータ要素８０のキー値に一致すれば、検索スペース４８の最新の終端８４より後の位置に対応するキー値を有するデータ要素７８によって特定される。
【００５８】
図６Ａの事態にかかる同期マーカー８２の生成は、３つの状態を有するステートマシンを使用して制御され得る。このステートマシンは、図６Ｂに表すとおり、アイドル状態と、「検索スペースより後」状態と、「最終一致要素より後」状態とを有することができる。ステートマシンは、検索スペースの終端を過ぎた命令要素が生成されるまで、アイドル状態を占有する。これにより、ステートマシンが「検索スペースより後」状態に移動する。この状態では、検索スペースが進んで命令要素が検索スペースの最新の終端より後に存在しなくなると、ステートマシンがアイドル状態に戻り得る。生成された命令のキーがＬＭＥキーに等しい場合には、ステートマシンが「検索スペースより後」状態から「最終一致要素より後」状態まで進み得る。同期マーカーが挿入される時期は、
「検索スペースの終端より後」状態にあり、データ要素キーが検索スペースの最古の終端とＬＭＥとの間にあるか、
「最終一致要素より後」状態にあり、何らかのデータ要素が生成されるときである。
【００５９】
図７は、命令要素９０に対応する命令を含む２つの命令がキャンセルされたときに、データトレースストリーム１２および命令トレースストリーム１０で同期マーカー８８が挿入される事態を表している。同期マーカーは、キャンセルされる命令より後の命令に対応する少なくとも第１のデータ要素を対象に挿入される。この挿入を制御するために、トレース回路８は、キャンセルされた最古の命令要素の明示を格納する。このキーは、キャンセル後の第１の命令要素用のキーとして機能する。例示された実施例では、キャンセル動作が、キー「４」と「５」とでマークされる命令要素をキャンセルする働きをする。したがって、キー「４」は、キャンセル動作に続いて再利用され、命令トレースストリーム１０内でキャンセルマーカー９４に続く第１の命令要素９２をマークする。データ要素８８に戻り、このデータ要素８８のキーが、キャンセルされた最古の命令要素と最も最近生成された命令要素（エンドポイント命令要素を含む）との間にある場合、このキーはキャンセル後の第１のデータ要素であり得るため、命令トレースストリーム１０とデータトレースストリーム１２との両方で同期マーカーが挿入される。これが検出される前に第２のキャンセルが発生すると、キャンセルされた最古の命令要素のキャンセル値が更新される。この場合、最も最近キャンセルされた命令要素より後の命令要素に対応する第１のデータ要素が検出されるまで、トレース回路８は、すべてのデータ要素を対象に同期マーカーを挿入する。キャンセルされた命令より後の命令要素に対応する第１のデータ要素が検出されると、キャンセルキーが無効とマークされ、そのキャンセルに続くさらなる同期マークは挿入不要となる。命令要素がキャンセル値に等しいキーで生成されると、そのキーはラップされる。この場合には、同期マーカーが次のデータ要素用に挿入される。キャンセル後に長期間にわたってデータ要素が存在しない場合を除き、この事象が発生する可能性は低い。
【００６０】
図８は、図５と図６とで表された事態にかかる、同期マーカーを挿入する際のトレース回路８の動作を表すフロー図である。ステップ９６で、データ要素が検出されるまで処理が待機する。ステップ１００で、データ要素のキー値が、最も最近生成された命令要素のキー値より新しい検索スペース４８内の命令要素に一致するかどうかが判断される。これは、検索スペース内の最古の命令要素より古いデータ要素のキー値に対応する。ここで一致すると判断されると、処理がステップ１０２に進み、命令トレースストリーム１０とデータトレースストリーム１２との両方に同期マーカーが挿入される。
【００６１】
ステップ１００での判断によって不一致とみなされた場合には、処理がステップ１０６に進む。ステップ１０６で、「検索スペースより後」状態にあるとき、または「最終一致要素より後」状態にあるときに、データ要素のキー値が、検索スペースの最古の終端と最終一致要素との間に位置付けられている検索スペース４８内の命令要素に一致するかどうかが判断され、データ要素が生成される。これは、検索スペース内の最新の命令要素より新しいデータ要素のキー値に対応する。ステップ１０６で一致すると判断されると、処理がステップ１０２に進み、同期マーカーが挿入される。ステップ１００での判断とステップ１０６での判断のどちらかでも一致とみなされないと、同期マーカーが挿入されない。
【００６２】
図９は、図７に表す事態にかかるトレース回路の動作を模式的に表すフロー図である。ステップ１０８で、トレースストリーム内の命令要素に対応する命令がキャンセルされるまで処理が待機する。ステップ１０９で、キャンセル後の命令に対応する第１のデータ要素を求めて処理が待機する。ステップ１１０で、キャンセルされる最古の命令のキー値が明示され、キャンセルされた最新の命令と最も最近生成された命令要素との間にあるキー値を有するデータ要素が現れると、命令トレースストリーム１０とデータトレースストリーム１２との両方で同期マーカーが挿入される。
【００６３】
本技法にかかるトレース分析ツールの動作について、図１０Ａから図１０Ｄを参照して説明する。
【００６４】
このツールは、命令とデータトレース要素とを別個のストリームで受信するため、データを命令と一致させるために何らかの作業を行う必要がある。ひいては、各データトレース要素を受信される順序で検討すべきである。このツールは、命令トレース要素（すなわちアトム）間の対応する一致を１つずつ試行し、見つける必要がある。そのために、次の２つの操作の１つを要する。
・現在検討されているデータトレース要素よりも同期マークの方が先であった場合には、対応する同期マークが命令トレース要素間で見つかる必要がある。そのために、同期マークが受信されたときにそれらを一致させる。両方のストリームに同じ数の同期マーク数があり、それらは両方のストリームで同じ順序なので、これは単純なタスクである。対応する同期マークが見つかると、このツールはその同期マークから後方に、正しいトレースキーを有する命令要素を見つけるまで検索する。
・対応する同期マークが見つからなければ、検索スペースコンセプトに従って検索する。命令トレースにはキャンセルが存在し得るため、この作業は検索スペースの検索よりも少し複雑である。その代わり、以下のステップが、一致命令要素が見つかるまで記載の順序で実行される。
１）  （ＬＭＥを含め）ＬＭＥから、次のどちらかが満たされるまで前方に検索する。
ａ．  キャンセルトレース要素が見つかる
ｂ．  検索スペースの最新の終端が見つかる
２）  検索スペースの最古の終端よりもさらに戻ることになっても、一致が見つかるまで、またはツールが実行する命令がなくなるまで、ＬＭＥから後方に検索する。
【００６５】
一対の同期マーカー（各ストリームから１つずつ）が見つかり、上記第１の規則を適用できてＬＭＥが設定されるまで、一致検索は始まらない。どちらの操作が使用されても、マッチングアトムが現在のＬＭＥより新しいと、ＬＭＥが更新される。
【００６６】
図１０Ａは、ツールが同期マークの後ろにデータアドレス要素「ＤＡ  １」を見つけ、その要素を対応するアトムと一致させる実施例を示す。この一致の後、ＬＭＥは「Ａ  １」と明示される。
【００６７】
図１０Ｂは、ツールが「ＤＡ  ３」を検討しており、検索スペースを使用して一致検索を行っている実施例を示す。キャンセルは存在しない。この一致の後、ＬＭＥは「Ａ  ３」へと前進する。
【００６８】
図１０Ｃは、キャンセルが存在する場合にツールが一致検索を行っている実施例を示す。この図は「ＤＡ  ３」を検討している。このツールは、ＬＭＥから前方に検索し、キャンセルの前に一致命令を見つける。この一致の後、ＬＭＥは「Ａ  ３」へと前進する。
【００６９】
図１０Ｄは、キャンセルが存在する場合にツールが一致検索を行っている実施例を示す。このツールは、ＬＭＥから前方に検索するが、キャンセルの前に一致に見つからないため、次に後方に検索して一致を見つける。マッチングアトムがＬＭＥより古いため、この一致の後にはＬＭＥが移動しない。
【００７０】
本発明の例示的実施形態について、添付の図面を参照して本明細書に記載してきたが、本発明はそれらの正確な実施形態に制限されず、添付の請求項によって定義される本発明の範囲と精神から逸脱しない限り、各種変更と改変が当業者によって本発明で遂行可能であることを理解すべきである。
【符号の説明】
【００７１】
２      データ
４      処理回路
６      メモリ
８      トレーシング回路
１０    命令トレースストリーム
１２    データトレースストリーム
１４    トレースデータ
１６    汎用レジスタ
１８    乗算器
２０    シフタ
２２    加算器
２４    プリフェッチ回路
２６    命令パイプライン
【図１】
0005699042.tif 000003
【図２】
0005699042.tif 000004
【図３】
0005699042.tif 000005
【図４】
0005699042.tif 000006
【図５】
0005699042.tif 000007
【図６Ａ】
0005699042.tif 000008
【図６Ｂ】
0005699042.tif 000009
【図７】
0005699042.tif 000010
【図８】
0005699042.tif 000011
【図９】
0005699042.tif 000012
【図１０Ａ】
0005699042.tif 000013
【図１０Ｂ】
0005699042.tif 000014
【図１０Ｃ】
0005699042.tif 000015
【図１０Ｄ】
0005699042.tif 000016