データ処理装置を使用して、データを処理するステップと、前記データ処理装置または前記処理の少なくとも1つの特徴を示すトレースパケットを生成するステップと、所定の事象predeterminedeventの発生時において、タイムスタンプリクエストが保留pendingになっていることを示すために、タイムスタンプリクエストフラグを設定するステップと、後続のトレースパケットの生成時において、前記タイムスタンプリクエストフラグが、タイムスタンプリクエストが保留になっていることを示すかどうかをチェックするステップと、前記タイムスタンプリクエストフラグが、タイムスタンプリクエストが保留になっていることを示す場合、前記後続のトレースパケットに対応するタイムスタンプを生成し、かつ、いかなるタイムスタンプリクエストも保留になっていないことを示すように、前記タイムスタンプリクエストフラグを設定するステップと、を含む、データ処理方法。前記処理は、前記データ処理装置の複数のプロセッサを使用して実行された複数のスレッドを含み、前記所定の事象は、前記複数のプロセッサのうちの1つから、前記複数のプロセッサのうちの別の1つへの、前記複数のスレッドのうちの1つの実行の伝送を含む、請求項1に記載のデータ処理方法。前記所定の事象は、例外の事象exceptioneventを含む、請求項1に記載のデータ処理方法。前記所定の事象は、例外の取り扱いスレッドexceptionhandlingthreadの実行の開始を含む、請求項1に記載のデータ処理方法。前記所定の事象は、例外の取り扱いスレッドの実行後の、前記処理への復帰を含む、請求項1に記載のデータ処理方法。前記所定の事象は、コンテクスト切り替えcontextswitchを含む、請求項1に記載のデータ処理方法。前記所定の事象は、コンテクスト同期事象contextsynchronizationeventを含む、請求項1に記載のデータ処理方法。前記トレースパケットの生成を選択的に有効または無効にするステップをさらに含み、前記少なくとも1つの所定の事象の前記発生時において、前記トレースパケットの前記生成が有効なっているか、または無効になっているかに関係なく、タイムスタンプリクエストが保留になっていることを示すように、前記タイムスタンプリクエストフラグが設定され、前記トレースパケットの生成を再び有効にした後の、前記後続のトレースパケットの生成時において、かつ、前記タイムスタンプリクエストフラグが、タイムスタンプリクエストが保留になっていることを示す場合、前記タイムスタンプは、前記後続のトレースパケットに対応して生成され、いかなるタイムスタンプリクエストも保留になっていないことを示すように、前記タイムスタンプリクエストフラグが設定される、請求項1に記載のデータ処理方法。前記データ処理装置によって実行されるソフトウェアが、タイムスタンプリクエストが保留になっていることを示すように、前記タイムスタンプリクエストフラグを設定するように、前記所定の事象の発生時において、前記データ処理装置を制御する、請求項1に記載のデータ処理方法。前記タイムスタンプリクエストフラグは、前記トレースパケットを生成するための、トレースモジュールのプログラム可能なレジスタprogrammableregisterである、請求項1に記載のデータ処理方法。前記所定の事象の発生時において、前記プログラム可能なレジスタに書き込む前記データ処理装置によって、タイムスタンプリクエストが保留になっていることを示すように、前記タイムスタンプリクエストフラグが設定される、請求項10に記載のデータ処理方法。前記後続のトレースパケットに対応する前記タイムスタンプは、第1のタイミングスキームのタイムスタンプ値を、第2のタイミングスキームのタイムスタンプ値に相関付けるための、タイムスタンプ相関トレースパケットに適用され、前記相関トレースパケットは、前記後続のトレースパケットの生成時において、トレースストリームに挿入される、請求項1に記載のデータ処理方法。前記タイムスタンプは、前記後続のトレースパケットに付加される時間値である、請求項1に記載のデータ処理方法。前記データ処理装置または前記処理の前記少なくとも1つの特徴は、前記処理中に処理されたデータと、前記処理中に生成されたデータと、前記処理中に実行された命令と、前記処理中にアクセスされたメモリアドレスと、前記データ処理装置のレジスタに格納された値と、ハードウェア事象の発生、のうちの少なくとも1つの特徴を含む、請求項1に記載のデータ処理方法。前記後続のトレースパケットは、前記所定の事象の発生後に生成された次のトレースパケットである、請求項1に記載のデータ処理方法。前記後続のトレースパケットは、前記所定の事象の発生後に生成された次のトレースパケット、および前記次のトレースパケットの後に生成された後のトレースパケットのうちの1つである、請求項1に記載のデータ処理方法。データ処理装置であって、データを処理するための処理回路と、前記データ処理装置、または前記処理回路によって実行された前記処理のうちの少なくとも1つの特徴を示すトレースパケットを生成するためのトレーシング回路と、を備え、前記処理回路および前記トレーシング回路のうちの少なくとも1つは、タイムスタンプリクエストが保留になっていることを示すように、タイムスタンプリクエストフラグを設定するために、所定の事象の発生に応答し、前記トレーシング回路による後続の前記トレースパケットの生成時において、前記トレーシング回路は、前記タイムスタンプリクエストフラグが、タイムスタンプリクエストが保留になっていることを示すかどうかをチェックし、かつ、前記タイムスタンプリクエストフラグが、タイムスタンプリクエストが保留になっていることを示す場合、前記後続のトレースパケットに対応するタイムスタンプを生成し、いかなるタイムスタンプリクエストも保留になっていないことを示すように、前記タイムスタンプリクエストフラグを設定するように、構成されている、データ処理装置。前記処理は、複数のスレッドを備え、前記処理回路は、前記複数のスレッドを実行するための複数のプロセッサを備え、前記所定の事象は、前記複数のプロセッサのうちの1つから、前記複数のプロセッサのうちの別の1つへの、前記複数のスレッドのうちの1つの実行の伝送を含む、請求項17に記載のデータ処理装置。前記所定の事象は、例外の事象を含む、請求項17に記載のデータ処理装置。前記所定の事象は、例外の取り扱いスレッドの実行の開始を含む、請求項17に記載のデータ処理装置。前記所定の事象は、例外の取り扱いスレッドの実行後に、前記データ処理の実行への復帰を含む、請求項17に記載のデータ処理装置。前記所定の事象は、コンテクスト切り替えを含む、請求項17に記載のデータ処理装置。前記所定の事象は、コンテクスト同期事象を含む、請求項17に記載のデータ処理装置。前記トレーシング回路は、前記トレースパケットの生成を選択的に有効または無効にするための論理を有し、前記少なくとも1つの所定の事象の前記発生時において、前記処理回路および前記トレーシング回路のうちの前記少なくとも1つは、前記トレースパケットの前記生成が有効なっているか、または無効になっているかに関係なく、タイムスタンプリクエストが保留になっていることを示すように、前記タイムスタンプリクエストフラグを設定するように構成され、前記トレースパケットの生成を再び有効にした後の、後続の前記トレースパケットの生成時において、かつ、前記タイムスタンプリクエストフラグが、タイムスタンプリクエストが保留になっていることを示す場合、前記トレーシング回路は、前記後続のトレースパケットに対応する前記タイムスタンプを生成し、いかなる前記タイムスタンプリクエストも保留になっていないことを示すように、前記タイムスタンプリクエストフラグを設定するように構成される、請求項17に記載のデータ処理装置。前記処理回路によって実行されたソフトウェアが、タイムスタンプリクエストが保留になっていることを示すように、前記タイムスタンプリクエストフラグを設定するために、前記所定の事象の発生時において、前記処理回路を制御するように構成される、請求項17に記載のデータ処理装置。前記トレーシング回路は、前記タイムスタンプリクエストフラグを格納するためにプログラム可能なレジスタを有する、請求項17に記載のデータ処理装置。前記処理回路は、前記所定の事象の前記発生時において、前記プログラム可能なレジスタに書き込むことにより、前記タイムスタンプリクエストが保留になっていることを示すように、前記タイムスタンプリクエストフラグを設定するために構成される、請求項26に記載のデータ処理装置。前記後続のトレースパケットに対応する前記タイムスタンプは、第1のタイミングスキームのタイムスタンプ値を、第2のタイミングスキームのタイムスタンプ値に相関付けるための、タイムスタンプ相関トレースパケットに適用され、前記トレーシング回路は、前記タイムスタンプ相関トレースパケットを、前記後続のトレースパケットと共に、トレースストリームに挿入するように構成される、請求項17に記載のデータ処理装置。前記タイムスタンプは、前記後続のトレースパケットに付加された時間値である、請求項17に記載のデータ処理装置。前記データ処理装置または前記処理の前記少なくとも1つの特徴は、前記処理中に処理されたデータと、前記処理中に生成されたデータと、前記処理中に実行された命令と、前記処理中にアクセスされたメモリアドレスと、前記データ処理装置のレジスタに格納された値と、ハードウェア事象の発生と、のうちの少なくとも1つの特徴を含む、請求項17に記載のデータ処理装置。前記後続のトレースパケットは、前記所定の事象の前記発生後に、前記トレーシング回路によって生成された次のトレースパケットである、請求項17に記載のデータ処理装置。前記後続のトレースパケットは、前記所定の事象の前記発生後に、前記トレーシング回路によって生成された前記次のトレースパケット、および前記次のトレースパケットの後で、前記トレーシング回路によって生成された後のトレースパケットのうちの1つである、請求項17に記載のデータ処理装置。データ処理装置においてトレーシング動作を実行するための、トレースモジュールであって、前記データ処理装置または前記データ処理装置によって実行された処理の少なくとも1つの特徴を示すトレースパケットを生成するためのトレーシング回路と、タイムスタンプリクエストが保留になっているかどうかを示すためのタイムスタンプリクエストフラグと、を備え、前記トレーシング回路による後続の前記トレースパケットの生成時において、前記トレーシング回路は、前記タイムスタンプリクエストフラグが、タイムスタンプリクエストが保留になっていることを示すかどうかをチェックし、かつ、前記タイムスタンプリクエストフラグが、タイムスタンプリクエストが保留になっていることを示す場合、前記後続のトレースパケットに対応するタイムスタンプを生成し、いかなる前記タイムスタンプリクエストも保留になっていないことを示すように、前記タイムスタンプリクエストフラグを設定するために、構成されているトレースモジュール。本発明は、トレースストリームの間の相関関係を確立することを可能にしながら、トレースモジュールによって生成されるトレースパケットの数を低減するために、効率的にタイムスタンプを生成することを目的とする。本技術は、データ処理装置を使用して、データを処理するステップと、前記データ処理装置または前記処理のうちの少なくとも1つの特徴を示すトレースパケットを生成するステップと、所定の事象の発生時において、タイムスタンプリクエストが保留になっていることを示すために、タイムスタンプリクエストフラグを設定するステップと、後続のトレースパケットの生成時において、タイムスタンプリクエストフラグが、タイムスタンプリクエストが保留になっていることを示すかどうかをチェックするステップと、タイムスタンプリクエストフラグが、タイムスタンプリクエストが保留になっていることを示す場合、前記後続のトレースパケットに対応するタイムスタンプを生成し、かつ、いかなるタイムスタンプリクエストも保留になっていないことを示すように、タイムスタンプリクエストフラグを設定するステップと、を備えるデータ処理方法を提供する。本技術において、データ処理装置または該装置によって実行されるデータ処理の少なくとも1つの特性を示すトレースパケットが生成される。所定の事象が発生する場合、タイムスタンプを生成する手順がトリガされる。しかしながら、本技術は、所定の事象の発生の際に、直ちにタイムスタンプを生成させることは望ましくないことを認識している。所定の事象が発生する場合、代わりに、タイムスタンプリクエストフラグが設定され、タイムスタンプリクエストが保留になっていることを示す。こうして、後続のトレースパケットの生成時において、タイムスタンプリクエストが保留になっているかどうかを確認するために、タイムスタンプリクエストフラグがチェックされ、タイムスタンプリクエストフラグが、タイムスタンプリクエストが保留になっていることを示す場合、後続のトレースパケットに対応するタイムスタンプが生成され、次いでいかなるタイムスタンプリクエストも保留になっていないことを示すように、タイムスタンプリクエストフラグが設定される。この技術は、新しいトレースパケットが生成されるポイントでも、タイムスタンプを生成させる。これは、生成された後続のトレースパケットと共に、タイムスタンプを出力できることを意味し、このため、いかなるトレースデータも生成されていない場合に、タイムスタンプパケットがトレースストリームに挿入されないようにする。タイムスタンプのみを含み、いかなるトレースデータも含まないパケットを生成しないようにすることにより、トレースストリームは、より少ないトレースパケットを含み、このため、例えばトレースバッファまたはトレース出力ポートのトレース帯域幅が、より効率的に使用される。さらに、本技術は、特定のトレースストリームに対してこれ以上トレースパケットが出力されない場合例えば、監視されている処理が完了した場合に、その時間中にいかなるタイムスタンプもストリームに挿入されないため、トレースリソースが節約されることを意味する。タイムスタンプリクエストが保留になっていることを示すための、タイムスタンプリクエストフラグの設定をトリガする所定の事象として、多くの種類の事象を使用してもよい。所定の事象は、データ処理の間に発生する事象、または、データ処理には関係なく発生する外部事象であってもよい。例えば、複数のスレッドを実行するための複数のプロセッサを含むシステムでは、所定の事象は、複数のプロセッサのうちの1つから複数のプロセッサの別の1つへの、複数のスレッドのうちの1つの実行の伝送を含んでもよい。かかるシステムにおいて、各プロセッサに対して個別のトレースストリームが生成されてもよい。対称的なマルチプロセッサシステムにおいて、スレッドが、異なるプロセッサ間を移動するように、特定のスレッドを、1つより多いプロセッサを使用して実行してもよい。かかるスレッドがトレースされる場合、各トレースストリームが、異なるスレッドに対応するトレースデータの断片を含むようにこれらのプロセッサに対応するトレースストリームが分離するという問題が生じる可能性がある。本技術を使用しなければ、異なるトレースストリーム内でトレースパケットが生成された時間を、互いに相関付けることはできない。この問題は、プロセッサの間でのスレッドの各伝送後に、タイムスタンプを発行させることで、解決される。次いで、各トレースパケットの生成時間に上限および下限を設定でき、特定のスレッドのトレースパケットが生成された順序を、生成されたタイムスタンプを使用して再構成することができる。所定の事象は、さらに、例外の事象を含んでもよい。例外の事象は、データ処理への割り込みをトリガする事象である。従って、例外の事象が発生するインスタンスは、隣接するトレースパケットが、時間の非連続的なポイントで生成されたトレースストリーム内のポイントを示すことができる。例外の事象の発生時に、タイムスタンプリクエストをトリガすることで、後続のトレースパケットは、タイムスタンプと共に生成されるため、トレースストリーム内において例外のポイントを識別できる。所定の事象は、さらに、例外の取り扱いスレッドの実行の開始を含んでもよく、かつ/または、例外の取り扱いスレッドの実行の後、前記処理への戻りを含んでもよい。これは、トレースモジュールが、プロセッサコア内の例外の事象をトリガする信号の可視性visibilityを有しないが、プロセッサによって実行される動作の可視性を有する場合に有用である可能性がある。例外の事象を監視するのではなく、例外例えば、例外または割り込み取り扱いルーチンの第1の動作の後、または通常の処理が戻った後に実行される動作は、割り込みを識別するように使用できる。これらのポイントにおけるタイムスタンプの生成をトリガすることは、トレースデータの相関付けに役立つ。別の種類の所定の事象を、プロセッサが、命令を処理するための異なる状態に設定される場合に生じる、コンテクスト切り替えswitchにすることができる。例えば、プロセッサは、各スレッドは、所与の状態で実行される動作のシーケンスで構成され、そうでない場合には、コンテクストと称される、実行するいくつかのスレッドを有してもよい。かかるコンテクスト切り替えのために、実行されるデータ処理に割り込みが生じる場合があり、このため、コンテクスト切り替えは、トレースストリーム内にタイムスタンプを記録するための有用なポイントとなり得る。所定の事象は、さらに、コンテクスト同期事象を含んでもよい。コンテクスト切り替えが発生する場合、処理パイプラインは、コンテクスト切り替え後に、パイプラインにフェッチされる命令が、新しいコンテクストを使用して処理されるように、命令をフラッシュする必要がある場合がある。これにより、異なる動作が、コンテクスト切り替えの前に処理するのではなく、コンテクスト切り替えの後で処理される場合がある。従って、コンテクスト同期事象を、処理の割り込みの指標にすることができるため、このポイントでタイムスタンプをリクエストすることが有用である。いくつかの種類のトレースモジュールでは、コンテクスト切り替えは、トレースモジュールに対しては可視的でない場合のあるコンテクストレジスタ値を監視することにより識別できる可能性があるが、コンテクスト同期事象は、命令によってトリガできるため、コンテクスト同期事象は、コンテクスト切り替え自体よりも容易に識別できる。例外の取り扱いスレッドの開始、および例外の取り扱い後の前記処理への復帰も、コンテクスト同期事象であってもよい。所定の事象の上記の例は、1つ以上の異なる種類の所定の事象のいずれかが発生する場合に、タイムスタンプリクエストフラグが設定されるように、タイムスタンプフラグを個別に、または組み合わせてトリガするために使用できる可能性があることが理解されよう。本技術は、前記トレースパケットの生成を選択的に有効または無効にするステップをさらに含んでもよく、前記少なくとも1つの所定の事象の前記発生時において、前記トレースパケットの前記生成が有効または無効になっているかどうかに関係なく、タイムスタンプリクエストが保留になっていることを示すように、前記タイムスタンプリクエストフラグが設定され、前記トレースパケットの前記生成を再び有効にした後の、後続のトレースパケットの生成時において、かつ、前記タイムスタンプリクエストフラグが、タイムスタンプリクエストが保留になっていることを示す場合、前記タイムスタンプは、後続のトレースパケットに対応して生成され、いかなるタイムスタンプリクエストも保留になっていないことを示すように、前記タイムスタンプリクエストフラグが設定される。プロセッサの動作を示すトレース情報を生成するためのトレースモジュールは、常に有効になっていなくてもよい。例えば、その動作が公知であるデータ処理が実行される場合、または、トレース帯域幅において節約することが望ましい場合、トレースモジュールは、トレースリソースを節約するために無効にすることができる。従って、トレースモジュールは、トレースパケットの生成を有効または無効にするための論理を有してもよい。本技術は、トレースパケットの生成が無効になっており、後で、データ処理中に再び有効になる場合に、トレースストリームが、トレースパケットの生成が無効になる前ではなく、トレースパケットの生成の再有効化の後で、異なるプロセスを監視してもよいことが可能であることを、認識する。この場合、トレースパケットの生成の再有効化の後で、タイムスタンプを含むことが有用である。従って、トレースパケットの生成が無効になっているが、本技術は、少なくとも1つの所定の事象が生じたかどうかの監視を継続し、かかる事象が生じている場合には、トレースパケットの生成が有効になっているかまたは無効になっているかに関係なく、保留のタイムスタンプリクエストを示すために、タイムスタンプリクエストフラグが設定される。トレースパケットの生成を再び有効にした後で、後続のトレースパケットが生成される場合、タイムスタンプリクエストフラグが、タイムスタンプリクエストが保留になっていることを示す場合に、タイムスタンプが生成される。これにより、トレースパケットの生成の無効化の前後で生成されたトレースパケットの生成の順番の再構成が可能になる。本技術では、データ処理装置によって実行されるソフトウェアは、タイムスタンプリクエストが保留になっていることを示すように、タイムスタンプリクエストフラグを設定するために、所定の事象の発生時において、データ処理装置を制御してもよい。本技術は、全てのトレースモジュールが、データ処理装置によって実行される動作の可視性を有するわけではないことを理解しており、そのため、トレースモジュールは、データ処理装置が所定の事象に遭遇するインスタンスを認識していない可能性がある。例えば、メモリマップされた計装トレースマクロセルITMは、処理装置によるデータ出力のいくらかの可視性を有するが、処理装置によって実行された処理の可視性は有しない。かかるトレースモジュールにおいて、タイムスタンプリクエストが保留になっていることを示すタイムスタンプリクエストフラグを設定することにより、所定の事象の発生に応答するために、処理装置を制御するように、ソフトウェアを構成することは有用である。ソフトウェアは、例えば、所定の事象の発生時において、フラグを設定できる処理装置のオペレーティングシステムのカーネルであってもよい。タイムスタンプリクエストフラグは、トレースパケットを生成するために使用されるトレースモジュールのプログラム可能なレジスタであってもよい。処理装置は、いかなる所定の重要な事象が発生する場合にも、トレースモジュールのプログラム可能なレジスタに信号を提供し、これによって、タイムスタンプの生成がリクエストされたことをトレースモジュールに通知してもよい。トレースモジュールは、次に、後続のトレースパケットの生成時において、タイムスタンプを生成する。本技術のさらなる特徴において、タイムスタンプリクエストフラグは、タイムスタンプリクエストが、所定の事象の発生時に、プログラム可能なレジスタに書き込むデータ処理装置によって、保留になっていることを示すように、設定されてもよい。このため、処理装置は、タイムスタンプの生成がリクエストされたことをトレースモジュールに通知できる。処理装置は、一片のデータにタイムスタンプを付けたことによるリクエストというレジスタの後で、トレースモジュールのプログラム可能なレジスタを取り扱う。トレース機能を有するいくつかのシステムは、1つより多いタイミングスキームで動作してもよい。例えば、単一のプロセッサクラスタ内に提供される、埋め込みトレースマクロセルETMまたは計装トレースマクロセルITM等のローカルトレースソースは、ローカル時間生成器に従って動作してもよく、一方で、外部タイミングスキームも使用してもよい。かかる場合において、2つ以上の異なるタイミングスキームの間の相関関係を提供することが有用である。本技術は、生成されたタイムスタンプを、第1のタイミングスキームのタイムスタンプの値を第2のタイミングスキームのタイムスタンプの値に相関付けるための、タイムスタンプ相関トレースパケットに適用することにより、かかるシステムに適用できる。このため、後続のトレースパケットが生成された時に、タイムスタンプリクエストフラグが設定される場合、相関トレースパケットは、後続のトレースパケットと共に、トレースストリームに挿入される。次いで、相関トレースパケットを、異なるタイミングスキームの間の相関を提供するために、分析することができる。後続のトレースパケットが決して生成されないつまり、トレースパケット生成が停止した場合に、相関パケットは出力されず、このため、トレース帯域幅が節約されることを意味するため、後続のトレースパケットが生成されるまで、相関パケットの生成を遅延する本技術は、有用である。代替的に、または相関トレースパケットの使用と共に、タイムスタンプを、後続のトレースパケットに付加された時間値にしてもよい。例えば、時間値は、後続のトレースパケットのヘッダに付加してもよい。この形式のタイムスタンプは、タイムスタンプの記録に特化したさらなるトレースパケットの生成を行わないため、結果としてより少ないトレースパケットが生成される。生成されたトレースパケットは、データ処理装置またはデータ処理装置によって実行されたデータ処理の多くの種類の特徴を示す場合がある。例えば、トレースパケットは、前記処理中に処理されたデータと、前記処理中に生成されたデータと、前記処理中に実行された命令と、前記処理中にアクセスされたメモリアドレスと、前記データ処理装置のレジスタに格納された値と、ハードウェア事象の発生と、のうちの少なくとも1つの特徴を示す場合がある。ハードウェア事象は、例えば、ハードウェアアクセラレータ、コプロセッサ、またはデータ処理装置の他の処理回路を使用した処理の開始、または外部信号の受信を含んでもよい。一実施形態において、後続のトレースパケットは、所定の事象の発生後に生成された次のトレースパケットであってもよい。これは、生成されたトレースストリームにおいて、タイムスタンプが付けられたトレースパケットは、所定の事象が、タイムスタンプが付けられたトレースパケットの直前のトレースパケットの生成と、タイムスタンプが付けられたトレースパケットの生成との間のどこかの時間に生じることを示すことを意味する。別の実施形態において、後続のトレースパケットは、次のトレースパケット、および次のトレースパケットの生成後に生成された後のトレースパケットのうちの1つであってもよい。2つ以上の後続のトレースパケットが生成されるまで、タイムスタンプの生成を延期することが、ある場合において、望ましいことがある。例えば、ある状況においては、単一の動作に関して、トレースパケットのグループを生成してもよい。時に、所定の事象が発生する場合、トレースパケットのかかるグループが、前の動作に関連して生成されてもよく、事象の後で発生する第1の動作に関するトレースパケットは、前の動作に関するトレースパケットのグループよりも、より関心がある場合がある。従って、前の動作に関するトレースパケットのグループの一部ではない、第1のトレースパケットで、タイムスタンプを生成できる。例えば、第1の動作が、第1のトレースパケットのグループ例えば1p、1q、1rおよび1sに対応し、第2の動作が、第2のトレースパケットのグループ例えば2p、2q、2rおよび2sに関する場合、第1の動作中に生じる事象に対応するタイムスタンプの生成は、第1の動作が完了した後で、第1のトレースパケット2pが生成されるまで、遅延できる可能性がある。いくつかの種類のパケット例えば、q、rまたはsのパケットの生成時間が対象となる時間ではない場合、そのタイミングが対象となるタイミングである次のトレースパケット例えば次のpパケットが生成されるまで、タイムスタンプの生成を延期することにより、トレース帯域幅を節約するおよびトレースリソースのオーバーフローのリスクを避けることが有用である可能性がある。ある状況において、いくつかの種類のトレースパケットが存在してもよく、事象後に生成された第1のトレースパケットは、対象となる生成時間の種類ではない。第1の例において、トレースパケットの種類には、制御トレースパケットおよびデータトレースパケットを含んでもよい。時に、事象の後の第1のトレースパケットは、その生成時間は、データトレースパケットほど対象にならない、制御トレースパケットであってもよい。従って、タイムスタンプの生成は、事象の後の第1のデータトレースパケットまで、延期できる可能性がある。第2の例において、トレースパケットの種類は、マーカトレースパケットおよびデータトレースパケットを含んでもよい。時に、事象後の第1のトレースパケットは、その生成時間は、マーカトレースパケットよりも対象にならない、データトレースパケットであってもよい。従って、タイムスタンプの生成は、事象後の第1のマーカトレースパケットまで、延期することができる。第3の例において、トレースパケットの種類は、マークされたトレースパケットおよびマークされていないトレースパケットを含んでもよい。トレースパケットを生成する動作は、トレースパケットが、対象になる生成時間の種類であるかどうかを示すためのマークを使用してもよい。タイムスタンプリクエストフラグが設定された後、後続のマークされたトレースパケットが生成された場合にタイムスタンプを生成できる可能性があるが、後続のマークされていないトレースパケットが生成された場合には生成できない。あるいは、ある状況において、いくつかの種類のトレースパケットが存在してもよく、トレースプロトコルの設計方法のために、事象後に生成された第1のトレースパケットは、それに関連付けられたタイムスタンプを有することができない種類になっている。例えば、トレースパケットの種類にはフレームパケットを含んでもよく、トレースプロトコルは、フレームパケットがこれに関連付けられたタイムスタンプを有することができないように設計されてもよい。時に、事象後の第1のトレースパケットはフレームパケットであってもよく、従って、タイムスタンプの生成は、事象の後の第1のトレースパケットがフレームパケットでなくなるまで、延期される可能性がある。あるいは、ある状況において、トレースパケットのいくつかのソースが存在してもよく、事象の後で生成された第1のトレースパケットは、その生成時間が対象になる、ソースのからのものではない。例えば、制御スレッドソースおよびアプリケーションスレッドソースが存在してもよい。時に、制御スレッドによって、その生成時間は、アプリケーションスレッドによって生成されたトレースパケットのものよりも対象にならない、事象の後の第1のトレースパケットが生成されてもよい。従って、タイムスタンプの生成は、第1のトレースパケットが事象の後でアプリケーションスレッドによって生成されるまで、延期できる可能性がある。あるいは、一時的にタイムスタンプが付けられたトレースパケットを処理するために十分なトレース帯域幅がない場合、十分な帯域幅が利用できるまで、タイムスタンプの生成を延期できる可能性がある。この場合、後続のトレースパケットは、所定の事象の発生後、いくつかのトレースパケットを生じさせることができる。別の態様から見ると、本技術は、データを処理するための処理回路と、前記データ処理装置、または前記処理回路によって実行された前記処理のうちの少なくとも1つの特徴を示すトレースパケットを生成するためのトレーシング回路と、を備え、前記処理回路および前記トレーシング回路のうちの少なくとも1つは、タイムスタンプリクエストが保留になっていることを示すように、タイムスタンプリクエストフラグを設定するために、所定の事象の発生に応答し、前記トレーシング回路による後続のトレースパケットの生成時において、前記トレーシング回路は、前記タイムスタンプリクエストフラグが、タイムスタンプリクエストが保留になっていることを示すかどうかをチェックするために、また、前記タイムスタンプリクエストフラグが、前記タイムスタンプリクエストが保留になっていることを示す場合、前記後続のトレースパケットに対応するタイムスタンプを生成し、かつ、いかなる前記タイムスタンプリクエストも保留になっていないことを示すように、前記タイムスタンプリクエストフラグを設定するために、構成されている、データ処理装置を提供する。さらに別の態様から見ると、本技術は、データ処理装置においてトレーシング動作を実行するための、トレースモジュールを提供し、前記トレースモジュールは、前記データ処理装置または前記データ処理装置によって実行された処理の少なくとも1つの特徴を示すトレースパケットを生成するためのトレーシング回路と、タイムスタンプリクエストが保留になっているかどうかを示すためのタイムスタンプリクエストフラグと、を備え、前記トレーシング回路による後続のトレースパケットの生成時において、前記トレーシング回路は、前記タイムスタンプリクエストフラグが、タイムスタンプリクエストが保留になっていることを示すかどうかをチェックするために、また、前記タイムスタンプリクエストフラグが、前記タイムスタンプリクエストが保留になっていることを示す場合、前記後続のトレースパケットに対応するタイムスタンプを生成し、かつ、いかなる前記タイムスタンプリクエストも保留になっていないことを示すように、前記タイムスタンプリクエストフラグを設定するために、構成されている。本発明の上記および他の目的、特徴および利点は、添付の図面に関連して読まれるべき、例示的な実施形態の以下の詳細な説明から、明らかであろう。図1は、データ処理装置1を概略的に示す。データ処理装置1は、少なくとも1つのプロセッサ4を含む、処理回路を含む。図1の例において、第1のプロセッサ4-1、および第2のプロセッサ4-2の2つのプロセッサが存在する。後続の記載において、プロセッサが概して参照され、どの特定のプロセッサが参照されるかは重要ではなく、参照番号4は、プロセッサを表すために使用される。処理回路は、例えば、ハードウェアアクセラレータ、コプロセッサまたは画像処理装置等の他の処理コンポーネントをさらに含んでもよいと考えられる。データ処理装置1は、さらに、処理中に使用される値を格納するためのレジスタバンク6、およびプロセッサ4によって使用するためにデータおよび命令を格納するためのメモリ8を含む。プロセッサ4、レジスタバンク6およびメモリ8は、バス10を介して接続される。処理装置1は、さらに、処理装置1および装置1によって実行されるデータ処理の特徴を示すトレースデータを生成するための、少なくとも1つのトレースモジュール12も含む。図1において、2つのトレースモジュール12-1、12-2が存在するが、概して、特定のトレースモジュールを参照せずに、トレースモジュールが参照される例が示され、参照番号12が使用される。図1のトレースモジュール12が、データ処理装置1内に示され、トレースモジュールは、さらに、データ処理装置1のハウジングの外に配置される外部トレースモジュールであってもよい。トレースモジュール12は、トレースデータを生成し、トレースデータをトレースバッファ14に出力し、ここで、データはオンチップで格納されてもよく、またはオフチップに出力されてもよい。トレースデータは、装置1についての診断またはデバッグ情報を提供するために分析されてもよく、また、プロセッサ4によって実行された処理についての診断およびデバッグ情報を含んでもよい。1つより多いトレースモジュール12が提供される場合、各トレースモジュールは、異なる機能を有してもよい。例えば、図1に示される構成において、トレースモジュール12-1は、プロセッサ4-1によって実行されるスレッドを監視してもよく、一方で、トレースモジュール12-2は、プロセッサ4-2によって実行されるスレッドを監視する。あるいは、トレースモジュール12-1、12-2の両方は、単一のプロセッサ4を監視することができるが、異なるトレーシング機能を提供することもできる。例えば、トレースモジュール12-1は、プロセッサ4によって処理される命令を監視するプログラムフロートレースを提供できる可能性があり、一方で、トレースモジュール12-2は、実行される命令の可視性を有しないが、代わりに、バス10上で入力および出力されるデータを監視できる計装トレースを提供できる。このため、トレースモジュール12によって、少なくとも1つのトレースストリームを生成できる。トレースストリームは、少なくとも1つのトレースパケットを含み、各トレースパケットは、装置1の1つ以上の特徴を示すか、またはプロセッサ4によって実行されるデータ処理を示す。図6を参照して後で記載されるように、多くの種類の特徴を、トレースモジュール12によって監視してもよい。トレースストリームのパケットから診断またはデバッグ情報を得るために、トレースストリームを分析する際に、トレースパケットの生成の時間および/または順序を推論することが有用である可能性がある。これは、特に、異なるトレースストリームのトレースパケットが生成された時間を相関づけるタスクが自明ではないnottrivial、2つ以上のトレースストリームが生成される場合に有用である可能性がある。従って、トレースモジュール12は、異なるストリームの相関付けを可能にするための、参照ポイントを提供するために、トレースストリームに挿入されるタイムスタンプを生成する場合がある。本技術では、トレースパケットが生成されたときのポイントで、タイムスタンプの生成が生じるようにされている。これは、各トレースモジュール12に、タイムスタンプリクエストフラグまたはstickyフラグ18を提供することで行われる。所定の重要な事象の発生時において、タイムスタンプリクエストが保留になっていることを示すように、フラグ18が設定される。次いで、トレースモジュールがトレースストリームの後続のトレースパケットを生成する場合、トレースモジュールは、保留のタイムスタンプリクエストを示すかどうかを確認するために、タイムスタンプリクエストフラグ18をチェックする。リクエストが保留になっている場合、トレースモジュール12は、後続のトレースパケットと共にタイムスタンプを生成する。後続のトレースパケットと共に、タイムスタンプを生成させることで、タイムスタンプのみを含み、いかなるトレースデータも含まない、トレースパケットの生成は行われない。さらに、重要な事象の発生後すぐにタイムスタンプが発行される場合に生じる、2つのトレースパケット間のいずれかに配置されるのではなく、装置1によって実行されるデータ処理の特定のポイントを表すトレースデータの特定の部分に固定されるため、生成されたタイムスタンプは、より有用となる可能性がある。これは、より多くのトレースパケットの生成の時間を、正確に判定し得ることを意味する。以下に記載される実施形態において、後続のトレースパケットは、所定の事象の発生後に生成された次のトレースパケットである。図2は、タイムスタンプおよびトレースパケットを生成するための方法を図示する。ステップ20において、データ処理が開始する。次いで、ステップ22において、トレースモジュール12が、処理装置1またはデータ処理の特徴のトレーシングを開始する。この文脈においてトレースという言葉は、装置1の動作の監視を意味するように使用され、トレースデータのトレースパケットを、トレースモジュール12によって生成する図8の記載において後述されるように、プロセッサ4の動作の追跡を継続しながら、トレースパケットの生成を無効にできることは必ずしも必要ではない。トレーシング中に、ステップ24において、トレースモジュール12は、所定の事象が発生したかどうかを判定する。所定の事象は、その発生がタイムスタンプの生成のためのリクエストをトリガする、1つ以上の事象の種類のうちのいずれかである。種々の種類の所定の事象について、以下に記載する。トレースモジュール12は、所定の事象が種々の異なる方法で発生するかどうかを判定してもよい。トレースモジュール12が、プロセッサ4によって処理される命令の可視性を有する場合、トレースモジュール12自体は、実行された命令を監視することによって、所定の事象が発生するポイントを判定できる。例えば、プログラムフロートレースモジュールは、かかる機能を有する。あるいは、プロセッサ4または装置1の他のコンポーネントは、所定の事象が発生したことを示す、トレースモジュール12への信号を提供できる。これは、トレースモジュール12が、プロセッサ4によって処理される命令フローの可視性を有しないが、プロセッサ4によって入力および出力されるデータを監視するにすぎない場合に、より有用となりうる。例えば、計装トレースモジュールは、所定の事象が起こったことを示すために、プロセッサ4からの信号を使用できる。トレースモジュール12が、所定の事象が起こったことを判定する場合、方法は、ステップ26に進み、タイムスタンプリクエストが保留になっていることを示すように、タイムスタンプリクエストフラグ18が設定される。一方で、所定の事象が生じない場合、フラグ18は保留のタイムスタンプリクエストを示すように、設定されない。所定の事象が起こったかどうかに関係なく、ステップ30において、トレースストリーム内の次のトレースパケットを生成するべきかどうかが判定される。トレースパケットを生成するべきでない場合に、フローは、ステップ40に進み、ここで再び、処理が完了したかどうかが判定される。処理が完了した場合には、方法は終了し、一方で、まだ処理を実行する必要がある場合には、方法は、所定の事象を再びチェックするために、ステップ24に戻る。ステップ30において、次のトレースパケットを生成するべきであると判定された場合、方法は、ステップ32に進み、トレースモジュールは、保留のタイムスタンプリクエストを示すように、タイムスタンプリクエストフラグ18が設定されたかどうかを判定する。タイムスタンプリクエストフラグが、保留のタイムスタンプリクエストを示す場合、ステップ34において、タイムスタンプが生成される。図6および図7を参照して後述されるように、タイムスタンプは、種々のフォーマットを有する場合がある。タイムスタンプは、例えば、トレースストリームの次のトレースパケットの前に来るパケットとして出力することができ、トレースストリームの次のトレースパケットの後で来るパケットとして出力することができ、次のトレースパケットを、タイムスタンプを有していない場合のある種類から、タイムスタンプを有する種類に、変換することで生成することができ、または、他の形式に生成することができる。タイムスタンプが生成された後、タイムスタンプリクエストフラグ18は、これ以上保留のタイムスタンプリクエストを示さないように、ステップ36においてクリアにされる。これは、別の所定の事象が発生するまで、タイムスタンプが生成されない、または、通常のトレーシングの一部として、タイムスタンプがリクエストされることを意味する。ステップ34および36は、タイムスタンプリクエストフラグが設定されていない場合には、実行されない。タイムスタンプが生成されていてもいなくても、ステップ38において、トレースモジュール12により、次のトレースパケットが生成される。生成されたトレースパケットは、トレースバッファ14に出力することができ、これが分析されるように、任意選択的に、データ処理装置1から出力することができる。次いで、ステップ40において、方法は、プロセッサ4によって実行された処理が完了したかどうかをチェックするために進む。処理が完了した場合、方法は終了し、一方で、処理が継続する場合、方法はステップ24に戻り、ここで、別の所定の事象が起こったかどうかが判定される。図2からわかるように、タイムスタンプの生成は、所定の事象の発生直後には生じない。代わりに、フラグ18の設定により、トレースストリーム内の次のトレースパケットの生成の際に、タイムスタンプを発行させる。これにより、トレースデータが生成されていない場合にタイムスタンプパケットを生成させないようにし、このため、不必要に多数のトレースパケットが生成されないようにし、タイムスタンプのみを含む長期のトレース出力が行われないようにする。さらに、対象となる事象が生じるポイントでこれが発行されるため、タイムスタンプは、プログラムの重要なポイントと連携する。これは、タイムスタンプが、一時的な相関関係が有用であるポイントに設定される可能性が高いため、トレースストリームの他のポイントに設定されるタイムスタンプよりも、良い診断情報を提供できることを意味する。本技術によって、トレースデータが生成されるたびに、タイムスタンプが発行される場合に生じるトレースバッファ14のオーバーフローが起こらないようにしながら、トレースデータの生成の相対的なタイミングをより正確に再構成できる。図3Aは、プロセッサ4-1、4-2上で実行されるスレッドが、トレースモジュール12-1、12-2によって監視される例を示す。対照的なマルチプロセッサSMPシステムにおいて、スレッドは、マルチプロセッサシステムのスレッドのスループットを改善するために、プロセッサ間を移動できる。これを管理するために、システムは、共有メモリ8に格納されたデータ構造の各スレッドの状態を維持する。単純なシステムにおいて、各スレッドは、実行中としても公知のアクティブ、待機中としても公知の準備完了、またはブロック図3Bを参照の3つの状態のうちの1つであってもよい。例えば、トレースされているスレッドを実行している場合、これはアクティブの状態である。しかしながら、1つのプロセッサが、トレースされているスレッドの代わりに、例外の取り扱いスレッドを実行することが必要な場合、トレースされているスレッドは準備完了の状態に設定される図3Bにおける移行A。例外の取り扱いルーチンによって中断されたスレッドを、完了させることがまだ可能となるようにスレッドをアクティブな状態に戻すことにより-図3Bの移行B、他のプロセッサを、中断されたプロセッサによって以前に処理されるスレッド等の、準備完了の状態のスレッドの実行を引き継ぐために、制御してもよい。これにより、スレッドの実行における前方への進展forwardprogressを改善する。アクティブなスレッドが、まだ利用可能でない一片のデータを必要とする場合、スレッドの実行は中断され、スレッドはブロック状態に設定される図3Bにおける移行C。データが利用可能になると、スレッドは、準備完了の状態に設定され図3B内の移動D、プロセッサが利用可能になるとスレッドの処理が準備完了になる。しかしながら、異なるトレースストリームが生成され、かつ公知のタイムスタンプ技術を使用して、トレースストリームにタイムスタンプが付けられた場合に、問題が生じる。これは、図3Aに図示される。図3Aは、プロセッサ4-1および4-2によって実行される、2つのスレッドT1およびT2を示す。スレッドT1は、プロセッサ4-1における実行を開始する。しかしながら、T1の実行中に生じる例外の事象により、プロセッサ4-1は、トレースモジュール12-1によって監視されていない他のスレッドの処理に占有されるようにされる。従って、プロセッサ4-1は、スレッドT1を準備完了の状態にし、これは、プロセッサ4-2が、スレッドT1のセクションを処理可能であることを意味する。スレッドT1およびT2の実行中、トレースモジュール12-1および12-2は、図3Aに図示されるように、トレースパケットを出力してもよい。以前のタイムスタンプ技術では、スレッドT1およびT2の第1のパケットに共にタイムスタンプが付けられるが、いかなる他のトレースパケットにもタイムスタンプを付けられない、図3Aに図示されるように、特定のスレッドの開始のみに、タイムスタンプが付けられる場合がある。この技術の問題は、各トレースストリームが、いくつかの異なるスレッドに対応するトレースパケットを含むように、スレッドが1つのプロセッサから別のプロセッサへ伝送される際に、生じる。トレースパケットは相互に混合され、後のトレースパケットにはいずれもタイムスタンプが付けられていないため、特定のトレースストリームのトレースパケットが生成された順序を判定することは不可能である。このため、T1およびT2のトレースパケットの断片を再び正しい順序に接続し直すことは不可能である。図4は、図3Aと同じスレッドが実行される場合に生成されるが、本技術のタイムスタンプが適用される、トレースパケットの例を示す。本技術において、所定の事象の発生時に、タイムスタンプリクエストフラグ18が設定される。これは、次のトレースパケットが生成された場合に、タイムスタンプも生成する必要があることを示す。図4の例において、所定の事象は、コンテクスト同期事象である。図4において、プロセッサ4-1は、処理スレッドT1を開始し、トレースモジュール12-1は、0および300の時間において、2つのトレースパケットを生成する。時間400において、スレッドT1は中断され、プロセッサ4-1は、コンテクスト切り替えを実行する。コンテクスト切り替えの一部として、スレッドT1は、準備完了の状態に設定され、プロセッサ4-1は、コンテクスト同期事象に遭遇する。コンテクスト同期事象は、タイムスタンプリクエストフラグ18-1を設定させる。同様に、時間650において、プロセッサ4-2上で実行されていたスレッドT2が中断され、プロセッサ4-2はコンテクスト切り替えを実行する。このコンテクスト切り替えの一部として、スレッドT1は、準備完了の状態からアクティブの状態に設定され、つまり、プロセッサ4-2上での実行を開始し、プロセッサ4-2は、まず、コンテクスト同期事象を実行する。コンテクスト同期事象によって、タイムスタンプリクエストフラグ18-2が設定される。このため、時間700において、プロセッサ4-2上で実行するスレッドT1が、トレースモジュール12-2によってトレースパケットを生成する場合、トレースパケットは、時間値700を含む付加されたタイムスタンプを有する。タイムスタンプリクエストフラグ、18-2が、引き続き、リセットされる。同様に、プロセッサ4-1またはプロセッサ4-2においてコンテクスト切り替えが発生するたびに、コンテクスト同期事象に遭遇し、対応するタイムスタンプリクエストフラグ18-1または18-2が設定され、次に生成されたトレースパケットが、トレースパケットが生成された時間を示すタイムスタンプと共に生成される。タイムスタンプが生成されるたびに、フラグは、タイムスタンプリクエストをクリアにするためにリセットされる。1400-1600の時間において、コンテクストトスイッチの間で出力されるいかなるトレースパケットもなしで、3つのコンテクスト切り替えが行われる。各コンテクスト切り替え時すぐにタイムスタンプが生成された場合、本技術において、タイムスタンプのみを含み、トレースデータを含まない、複数のトレースパケットが生成されるため、トレース帯域幅は使われず、時間1400における第1のコンテクスト切り替え後に、タイムスタンプリクエストが設定され、次いで、単一のタイムスタンプが生成されるポイントである、時間2100において次のトレースパケットが生成されるまで、維持される。こうして、トレース帯域幅が節約される。図3Aに示されるタイムスタンプとは異なり、図4に示されるタイムスタンプは、トレースストリームの順番を再構成することができる。これは、図5Aおよび図5Bに示されるように、2つのステップで行われる。まず、タイムスタンプが付けられていない任意のトレースパケットの生成の時間が推定される。これは、これらのパケットの考えられる生成時間に限界値を設定することで行われる。スタンプを付けられていないパケットは、同じトレース出力ストリームの最も最近のタイムスタンプ時またはその後に来る必要がある。従って、最も最近のタイムスタンプは、スタンプが付いていないパケットに関連付けられた時間の下限を示す。さらに、かかる事象は、プロセッサにコンテクスト同期事象を生じさせるものであり、これによって、今度はタイムスタンプリクエストフラグ18が設定されるため、介在するコンテクスト切り替えが、最も最近のタイムスタンプの生成およびスタンプが付いていないトレースパケットの生成の間で生じている可能性はない。従って、スタンプが付いていないトレースパケットは、同じトレースストリーム内の次のタイムスタンプ値の前に生成されたものである。従って次のタイムスタンプ値は、スタンプが付いていないパケットに関連付けられた時間の上限を示す。しかしながら、スレッド移動のプロセスをさらに理解することで、より改善された上限を設定できる。プロセッサ間のスレッドの移動のプロセスには、第1のプロセッサの第1のコンテクスト切り替えおよび第2のプロセッサの第2のコンテクスト切り替えを含む。第1のコンテクスト切り替えは、スレッドをアクティブな状態の中から取り、これを準備完了の状態にし、第2のコンテクスト切り替えは、準備完了の状態のスレッドを選択するのみであるため、第2のコンテクスト切り替えは、第1のコンテクスト切り替えの後で生じる必要がある。スレッドの状態へのアクセスは、確実に正しい順序となるよう、ソフトウェアによって同期化される。従って、次に最も高いタイムスタンプ値が存在するということは、前記スレッドを選択する次のコンテクスト切り替えが、スタンプが付いていないパケットが生成された後で生じることを示すため、スタンプが付いていないトレースパケットと同じスレッドに関連付けられた、トレースストリームのいずれかにおける、次に最も高いタイムスタンプ値の前に、スタンプが付いていないトレースパケットが生成されているはずである。図5Aは、全てのスタンプが付いていないパケットの生成時間に限界を設定する、このステップを示す。例えば、第1のプロセッサ4-1を監視するトレースモジュール12-1のトレース出力内の第2のパケットは、タイムスタンプを有しない。従って、これは、時間0における第1のトレースパケットの生成および第2のトレースパケットの生成の間の割り込みなしに、生成されたはずである。これは、第2のトレースパケットの生成の時間の下限が0となるはずであることを意味する。さらに、任意のトレースストリームにおけるスレッドT1に関連付けられた次に最も高いタイムスタンプは、プロセッサ4-2の出力の第3のトレースパケットの時間700におけるものである。従って、第2のパケットの生成の時間の上限は、700になるはずである。同様に、図5Aに示されるように、他の全てのスタンプが付いていないパケットの生成時間に、限界を設定できる。全てのパケットに限界を設定したため、トレースパケットは、各個別のスレッドのタイムスタンプの順番に、抽出および構成できる図5Bを参照。生成時間の同じ限界を有する1つより多いトレースパケットが存在する場合にこれは、これらのパケットが同じトレースストリームにある場合に生じるはずである、元の出力トレースストリームで表示される順番に、トレースパケットを配置する。このため、トレースパケットの生成の正しい順番を判定することができ、異なる生成されたトレースストリームの間に分布されるトレースパケットの断片を結合することができる。従って、図3Aに示される例とは異なり、トレースストリームを、正しく分析できる。図3Aおよび4は、異なるトレースストリームが、異なるプロセッサ4で実行されるスレッドを監視する異なるトレースモジュール12によって出力される例を示す。しかしながら、タイムスタンプ技術は、同じプロセッサで実行されるスレッドが、異なるトレースモジュール12例えば、1つのトレースモジュールがプログラムフロートレースを実行する一方、もう1つのトレースモジュールが計装トレースを実行するによって、2つ以上の異なる方法で監視される場合にも、有用となる場合がある。さらに、図1は、別個のトレースモジュール12を示すが、単一のトレースモジュールは、1つより多いトレースストリームを生成できることが可能である。図4は、所定の事象が、例外の事象の発生である、本技術の例を示す。プロセッサコアの可視性を有するトレースモジュール12は、例外の事象をトリガするために使用される信号を検出することにより、かかる事象を検出してもよい。あるいは、プロセッサ4からのデータ入力および出力の可視性のみを有するトレースモジュール12は、メモリ8の割り込みされたスレッドに関連付けられた状態データをセーブすることを検出することにより、かかる事象を検出してもよい。種々の他の種類の所定の事象は、さらに、タイムスタンプの生成をトリガするためにも使用できる。例えば、タイムスタンプリクエストフラグ18を設定するために、トリガとして例外の事象の発生を用いるのではなく、所定の事象は、例外の取り扱いルーチンへのエントリ、または例外の取り扱いルーチンの実行後に監視されるスレッドの処理への復帰とできる可能性がある。さらに、いくつかの命令の実行は、プロセッサ4の現在の状態に依存してもよい現在の状態は、多くの場合、コンテクストとして称される。パイプライン接続されたプロセッサにおいて、コンテクストは、命令をパイプラインにフェッチする際に判定できる。これは、命令が既にパイプラインにフェッチされた後で、コンテクスト切り替えが発生する場合に、これらの命令の実行が、コンテクスト切り替え後に正しく実行しない場合があることを意味する。この理由のため、コンテクスト同期動作は、コンテクスト切り替えが望ましい場合に実行してもよい。同期バリア命令等の命令を使用して実行され得る、コンテクスト同期動作は、新しいコンテクストに従って、命令のパイプラインをフラッシュし、かつ該命令を再びフェッチするように、プロセッサを制御する。これは、コンテクスト切り替えの後に、命令が正しく実行できることを意味する。図3Aおよび4について記載されるものと同じ理由で、所定の事象のうちの1つとして、コンテクスト切り替えおよびコンテクスト同期動作の実行のうちの1つまたは両方を取り扱うことが有用である。このように、コンテクスト切り替え、またはコンテクスト同期は、タイムスタンプリクエストフラグを設定するために、トレースモジュール12を制御し、タイムスタンプを、次のトレースパケットの生成時に生成させて、トレースストリームの相関を可能にする。別の種類の所定の事象は、1つのプロセッサから別のプロセッサへのスレッドの実行の伝送であってもよい。さらに、スレッドのいかなる割り込みも、タイムスタンプリクエストフラグの設定を制御する所定の事象として、取り扱われてもよい。所定の事象の上記の例のいずれかは、1つより多い種類の所定の事象が、フラグ18の設定をトリガするように、別々に、または任意の組み合わせで使用されてもよい。例えば、計装トレースについて、プロセッサ4は、トレースモジュール12に、コンテクスト同期動作、例外のエントリまたは例外の復帰のうちのいずれかの発生を通知することができる。図6は、生成されたトレースパケットの例示的なフォーマットを示す。トレースパケットは、装置1または実行されるデータ処理の種々の特徴についてのデータを含んでもよい。例えば、トレースパケットは、データ処理の実行中にプロセッサ4によって処理されたデータ、データ処理の結果として生成されたデータ、データ処理中に実行された命令、データ処理の実行中にアクセスされたメモリアドレス、プロセッサ4によってアクセスされたレジスタバンク6のレジスタおよびこれらのレジスタに格納された値、ならびにハードウェア事象の発生、のうちの1つ以上を示す、そのペイロード情報に含むことができる。ハードウェア事象は、例えば、キャッシュミスの発生、ダイレクトメモリアクセスDMAエンジンの開始、ハードウェアアクセラレータによる処理の開始、またはシステムハードウェアによって信号を送られた任意の他の事象である可能性がある。ハードウェア事象は、例えば、特定の種類の事象を示す数によって、トレースパケットペイロードにおいて識別することができる。トレースモジュール12によって追跡される特徴は、プロセッサ4によって実行されるデータ処理から結果的に生じる特徴でもよく、または、装置1の特徴、もしくは実行されるデータ処理に関係なく生じる重要な事象でもよい。生成されたトレースパケットに対応して生成されたタイムスタンプは、いくつかの形式を有してもよい。例えば、図6に示されるように、タイムスタンプは、タイムスタンプが生成された時間を示す単純な数値にできる可能性があり、図6に示されるように、トレースパケットのペイロード内またはパケットヘッダの一部として、トレースパケットに挿入できる可能性がある。他の形式のタイムスタンプも、可能である。あるいは、システムが、2つ以上の別個のタイミングスキームを使用して動作する場合、これらのタイミングスキームのうちの2つ以上を相関付けるための情報を提供することが有用である場合がある。例えば、単一のプロセッサクラスタ内の1つ以上のトレースモジュールは、ローカルクロックによって生成されたローカルタイミングスキームを使用してもよいが、外部タイミングスキームも、グローバルカウンタまたはタイマおよび/または他のプロセッサクラスタから使用可能な場合がある。異なる時間値の相関を可能にするために、グローバルタイマモジュールは、グローバル時間値を、各タイマ事象時にトレースモジュール12に渡すことができ、トレースモジュール12は、ローカルタイムスタンプ値によって、グローバル時間値をタイムスタンプすることができる。このため、トレースパケットに対応して生成されたタイムスタンプは、図7に示されるように、例えば、ローカルタイムスタンプは相関トレースパケットのヘッダに適用されるが、グローバル時間値はパケットペイロードの一部であるまたはその逆である、相関パケットにできる可能性がある。ここでも、かかる相関パケットを、次のトレースパケットの生成時、およびタイムスタンプリクエストフラグの設定に結果として、トレースストリームのみに挿入する。相関パケットは、トレースストリーム内のさらなるパケットを示すが、次のトレースパケットが生成されるまでの、相関パケットの発行の遅延は、トレースデータがこれ以上生成されない場合に、1つ以上の不要な相関パケットの挿入が回避されることを意味するため、まだ有用である。これにより、トレースバッファ14のオーバーフローの可能性が低減する。上記のように、トレースモジュール12は、プロセッサ4の動作のトレーシングの結果として、トレースパケットが生成されるかどうかを選択する機能を有してもよい。トレースパケットの生成が無効になっている場合でも、トレースモジュール12は、装置4の動作を監視してもよい。本技術では、トレース生成が無効になっている間に、所定の事象が発生する場合、タイムスタンプは生成されない。しかしながら、タイムスタンプを生成できる場合、トレースが次に有効になるまで、システムによって、タイムスタンプリクエストフラグを設定および保持してもよい。トレース生成を無効にするために、トレースモジュール12が完全に無効になっているシステムにおいて、プロセッサ4は、所定の事象の発生を記録することができ、トレース生成の再有効化時において、トレースモジュール12へ信号を提供できる。図8は、トレースパケット生成が有効になっているかどうかに関わらず、所定の事象が発生する場合に、タイムスタンプリクエストフラグが設定される方法を示す。トレースパケット生成が再有効化される場合、次のトレースパケットが生成され、かつそのポイントにおいてタイムスタンプリクエストフラグが設定される際に、タイムスタンプが生成される。トレースパケットの生成が無効になっている間であっても、所定の事象の発生を記録することで、これは、マルチプロセッサクラスタを動き回って、プログラムの追跡を、より信頼性高くつなぎ合わせて戻すことができるようにする。このため、トレース分析の精度をより高くすることができる。図8において、ステップ20~26および30~40は、図2の対応するステップと類似している。図8は、ステップ30において次のトレースパケットが生成されるかどうかをチェックする前に、トレースパケットの生成が有効になっているかどうかをチェックするためにステップ28が実行される点が、図2と異なる。トレースパケットの生成が有効になっている場合、フローは、次のトレースパケットが生成されるかどうかが判定されるステップ30に進む。所定の事象が発生した場合にタイムスタンプリクエストフラグを設定するステップ26は、トレース生成が無効になっているかどうかに関係なく、実行される。一方で、ステップ28において、トレースパケットの生成が有効になっていない場合、フローは、処理が完了したかどうかが判定される、ステップ40に進む。処理が完了していない場合、方法は、所定の事象が発生したかどうかが再び判定される、ステップ24に戻る。図9は、本技術を実施するための適したトレースモジュールを示す。トレースモジュール12は、トレース回路50、タイムスタンプリクエストフラグ18を格納するためのプログラム可能なレジスタ54、および任意選択的に、トレースバッファ14を備える。トレース回路50は、トレースターゲットポート58において、トレースターゲットから受信される情報を監視し、トレースバッファ14へ出力されるトレースデータを生成する。トレースバッファ14は、図1に示されるように、トレースモジュールの外部、または図9に示されるように、トレースモジュール12の内部にあってもよい。トレースモジュールは、トレース分析器またはトレースデータを処理するための他の装置へ、トレースデータを出力するための、トレース出力ポート62を有する。プログラム可能なレジスタ54は、トレースモジュール12自体、または例えば、プロセッサ4のデータ処理装置の一部のいずれかによって書き込まれてもよい。フラグを設定するためにプログラム可能なレジスタ54に書き込むデータ処理装置の一部は、必ずしも、トレースモジュール12によって監視される一部と同じにしなくてもよい。プログラム可能なレジスタ54は、異なる回路によって、監視されているターゲットに書き込まれてもよく、または、トレースターゲット自体によって書き込むことができる。プログラム可能なレジスタ54は、保留のタイムスタンプリクエストを示すように、フラグ18を設定するために、レジスタ書き込みライン60を介して書き込まれる。トレース回路50は、次いで、フラグ18が保留のタイムスタンプフラグを示す場合に、次のトレースパケットの生成の際に、タイムスタンプを生成するために、プログラム可能なレジスタ54内に格納されるフラグ18に応答する。あらゆる生成されたタイムスタンプは、トレースストリームに挿入される。タイムスタンプの生成後、トレース回路50は、いかなるリクエストも保留になっていないことを示すために、値を、プログラム可能なレジスタ54に書き込むことにより、フラグ18を消去する。上記の実施形態では、タイムスタンプは、所定の事象の発生の後で生成された次のトレースパケットと共に、生成される。他の実施形態では、タイムスタンプの生成は、必要な場合、いくつかのトレースパケットが、所定の事象の後で生成されるまで、延期されてもよい。かかる実施形態において、タイムスタンプに関連付けられる後続のトレースパケットは、次のトレースパケット、および次のトレースパケット以外の後のトレースパケットのうちの1つにしてもよい。例えば、トレースパケットのグループが、既に生じている1つの動作/事象に関連付けられる場合、第1の動作/事象の後で生じる、別の動作/事象に対応するトレースパケットに、タイムスタンプを付けることが適切な場合がある。この場合、タイムスタンプリクエストフラグは、タイムスタンプリクエストをトリガした動作/事象に、異なる動作/事象を示す第1のトレースパケットの生成まで、設定をそのままにする。異なる動作/事象を示す第1のトレースパケットが生成される場合、およびタイムスタンプリクエストフラグが設定される場合、タイムスタンプが生成され、タイムスタンプリクエストフラグが消去される。あるいは、タイムスタンプを受け入れるためのトレース帯域幅が一時的に存在しない場合、タイムスタンプの生成は、十分な帯域幅が利用可能になるまで遅延できる。この場合、タイムスタンプリクエストフラグは、タイムスタンプが生成されるまで、設定されたそのままとなる。このため、監視されている現在のトレース帯域幅または特定の動作に応じて、次のトレースパケットまたは後のトレースパケットに、タイムスタンプが生成する場合がある。所定の事象の発生時においてタイムスタンプを生成する本技術は、それ自体で、または他のタイムスタンプ技術と関連して、使用されてもよい。例えば、プロセッサ4は、タイムスタンプの挿入をリクエストできてもよく、または、プロセッサのオペレーティングシステムが、この機能を有してもよい。トレースモジュールは、各リクエストソースにつき1つの、複数のタイムスタンプリクエストレジスタ54を有することができる可能性があり、タイムスタンプリクエストタイムスタンプリクエストフラグ18を含むの種々のソースの任意の1つが保留のリクエストを発行する場合、後続のトレースパケットが生成される際に、タイムスタンプが生成されるように、OR演算を使用して、異なるタイムスタンプスキームを組み合わせることができる可能性がある。本技術は、以前のタイムスタンプ技術ではタイムスタンプが付けられない、いくつかのトレースパケットへ、タイムスタンプを加えるものである。これは、トレースされているスレッドについての情報を推論するために、タイムスタンプの有無を使用する、いくつかの既存のトレース分析器が、正しく動作していない場合があることを意味する。この問題は、タイムスタンプの有無によって以前に伝達された情報を示す、トレースパケットに追加の部分を加えることによって解決することができる。本発明の例示的な実施形態について、添付の図面を参照しながら本明細書に詳細に説明してきたが、本発明はこれらの正確な実施形態には制限されず、添付の特許請求の範囲に記載される本発明の範囲および精神から逸脱せずに、当業者により、本発明において種々の変更および修正を実施可能であることを理解されたい。