(57)【特許請求の範囲】
【請求項１】
データ要素を産出するように動作可能なロジックと；
前記データ要素の少なくともいくつかを表すトレース要素のストリームを産出するように動作可能なトレース・ロジックであって、前記ストリームに含まれるトレース要素を生成するように動作可能なトレース生成ロジックを含み、該トレース生成ロジックが更に前記ストリームに含まれるトレース・タイミング標識を生成するように動作可能であり、各々のトレース・タイミング標識が１つまたは複数の予め定められたタイミング項目を含み、各タイミング項目が１つの処理タイミング間隔の経過を表わし、前記処理タイミング間隔は複数のクロック・サイクルである、前記トレース・ロジックと、
を含み、
各タイミング項目によって示されるクロック・サイクルの数は現在の処理タイミング間隔に依存し、前記トレース・タイミング標識によって表現されるクロックサイクル精度の解像度は前記処理タイミング間隔を変更することにより可変になるように、前記処理タイミング間隔は構成可能であり
データ処理装置が更に現在の処理タイミング間隔を保持するための記憶装置を含み、トレース生成ロジックが、何時各トレース・タイミング標識を生成するか決定するために前記記憶装置を参照するように動作可能である、
データ処理装置。
【請求項２】
請求項１記載のデータ処理装置において、トレース生成ロジックが１つまたは複数の予め定められた事象の発生に応答して、前記処理タイミング間隔を変更するように動作可能である、前記データ処理装置。
【請求項３】
請求項２記載のデータ処理装置において、ロジックにより産出されたデータ要素がそのロジックにより実行されるプログラム・コードの表示であり、トレース生成ロジックが異なるコード部分に関して生成されたトレース要素で使用される異なる処理タイミング間隔を識別するようにプログラムされた１つまたは複数の制御レジスタを有し、またトレース生成ロジックがどのコード部分に対してトレース要素が生成されているかに応じて、前記処理タイミング間隔を変更するように動作可能である、前記データ処理装置。
【請求項４】
請求項２記載のデータ処理装置において、トレース生成ロジックに１つまたは複数の関心ある事象を識別する制御情報を具備し、前記処理タイミング間隔を前記関心ある事象の発生頻度の分析に基づいて変更するように動作可能な、前記データ処理装置。
【請求項５】
請求項１記載のデータ処理装置において、処理タイミング間隔が変更された際に、トレース生成ロジックがストリーム内にその変更を表示するタイミング変更標識を含めるように動作可能な、前記データ処理装置。
【請求項６】
請求項１記載のデータ処理装置において、各トレース・タイミング標識は１つのタイミング項目から成り１つの処理タイミング間隔の経過を表し、前記トレース生成ロジックが前記トレース・タイミング標識を前記トレース・ストリーム内に、各処理タイミング間隔後に出力するように動作可能な、前記データ処理装置。
【請求項７】
請求項１記載のデータ処理装置において、トレース生成ロジックに１つまたは複数の関心ある事象を識別する制御情報が具備されており、その処理タイミング間隔の間に関心ある事象が発生しなかった際に、トレース・タイミング標識の出力を抑制するように動作可能な、前記データ処理装置。
【請求項８】
請求項７記載のデータ処理装置において、前記トレース生成ロジックが、１つの関心ある事象が発生した際に、前回にトレース・タイミング標識が出力されてから経過した処理タイミング間隔の数を表示するトレース・タイミング標識を出力するように動作可能な、前記データ処理装置。
【請求項９】
請求項７記載のデータ処理装置において、トレース生成ロジックがトレース・タイミング標識の出力を、関心ある事象がある回数発生するまで抑制し、前回にトレース・タイミング標識が出力されてから経過した処理タイミング間隔の数を表すトレース・タイミング標識を出力するように動作可能な、前記データ処理装置。
【請求項１０】
請求項１記載のデータ処理装置において、トレース生成ロジックに１つまたは複数の関心ある事象を識別する制御情報が具備され、更に前記関心ある事象の１つが発生すると、前回のトレース・タイミング標識から経過したクロック・サイクルの数を表示する追加のトレース・タイミング標識を出力するように動作可能な、前記データ処理装置。
【請求項１１】
請求項１記載のデータ処理装置において、前記トレース生成ロジックが、該トレース生成ロジックで利用可能な帯域幅を前記トレース・ストリームが超えることを防止するために、前記処理タイミング間隔を変更するように動作可能な、前記データ処理装置。
【請求項１２】
請求項１記載のデータ処理装置において、前記トレース生成ロジックが、処理タイミング間隔内のある数のクロック・サイクルの経過が前記処理タイミング間隔中に前記ストリーム内に出力された前記トレース要素から導出できる時に、前記処理タイミング間隔を前記クロック・サイクルの数だけ拡張し、後にトレース・タイミング標識がストリームに含まれた際に、前回のトレース・タイミング標識が出力されてから経過したクロック・サイクルの総数がトレース・タイミング標識で示された処理タイミング間隔の数と、前記トレース要素から導出された前記クロック・サイクルの数とを組み合わせて導出される、前記データ処理装置。
【請求項１３】
請求項１２記載のデータ処理装置において、トレース生成ロジックが１つまたは複数の型式のトレース要素の各々に対して、そのトレース要素の型式により推定されるクロック・サイクルの数を識別するようにプログラムされた１つまたは複数の制御レジスタを有し、前記トレース生成ロジックが、前記処理タイミング間隔を拡張するための前記クロック・サイクル数を決定する際に前記１つまたは複数の制御レジスタを参照するように動作可能な、前記データ処理装置。
【請求項１４】
データ処理装置のロジックによって産出された少なくともいくつかのデータ要素を表すデータ要素のストリームを生成するためのトレース・ロジックであって：
前記ストリームに含むためのトレース要素を生成するように動作可能なトレース要素生成ロジックと；
前記ストリームに含むためのトレース・タイミング標識を生成するように動作可能であり、各々のトレース・タイミング標識が１つまたは複数の予め定められたタイミング項目を含み、各タイミング項目は複数のクロック・サイクルである１つの処理タイミング間隔の経過を表示する、タイミング表示ロジックを含み、
各タイミング項目によって示されるクロック・サイクルの数は現在の処理タイミング間隔に依存し、前記トレース・タイミング標識によって表現されるクロックサイクル精度の解像度は前記処理タイミング間隔を変更することにより可変になるように、前記処理タイミング間隔は構成可能であり、
トレース・ロジックが、何時各トレース・タイミング標識を生成するか決定するために現在の処理タイミング間隔を保持するデータ処理装置の記憶装置を参照するように動作可能である、前記トレース・ロジック。
【請求項１５】
データ処理システムの運転方法であって：
データ要素を産出し；
前記データ要素の表示を受け取り、前記データ要素の少なくともいくつかを表すトレース要素のストリームを産出するためにトレース・ロジックを用い；
前記ストリーム内に含めるために、トレース・タイミング標識を生成するステップであって、トレース・タイミング標識は１つまたは複数の予め定められたタイミング項目を含み、各タイミング項目は予め定められた複数のクロック・サイクルである１つの処理タイミング間隔の経過を表わすステップとを含み、
各タイミング項目によって示されるクロック・サイクルの数は現在の処理タイミング間隔に依存し、前記トレース・タイミング標識によって表現されるクロックサイクル精度の解像度は前記処理タイミング間隔を変更することにより可変になるように、前記処理タイミング間隔は構成可能であり、
トレース・ロジックが、何時各トレース・タイミング標識を生成するか決定するために現在の処理タイミング間隔を保持するデータ処理システムの記憶装置を参照するように動作可能である、
前記方法。
【請求項１６】
請求項１記載のデータ処理装置において、各タイミング項目が１つのタイミングアトムからなる、前記データ処理装置。
【請求項１７】
請求項１記載のデータ処理装置において、各タイミング項目が単一ビットである、前記データ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理装置の特定ロジックの活動を示すトレース要素を含む、データ処理装置用トレース・ストリームの生成技術に関する。
【背景技術】
【０００２】
システム内のステップ毎の動きを表すデータを含むトレース要素のストリームが生成されるデータ処理装置の動きをトレースすることはシステム開発に於いて高度に有用なツールである。しかしながら、プロセッサ・コアの中に更に深く組み込まれていく一般的な傾向に伴い、プロセッサ・コアまたはその他のオンチップ素子の動きを、外部接続可能ピンを介して追跡することは更に難しくなっている。従って、トレース・データを捕捉し分析するためのチップ外トレース機構と同様、より多くのトレース機能がオンチップ上に配置されるようになっている。その様なオンチップトレース機構の一例は、ＡＲＭ株式会社、ケンブリッジ、英国（ＡＲＭ  Ｌｉｍｉｔｅｄ，Ｃａｍｂｒｉｄｇｅ，Ｅｎｇｌａｎｄ）から、種々のＡＲＭプロセッサと関連して提供される、組み込み型トレース・マクロセル（ＥＴＭ  ：  Ｅｍｂｅｄｄｅｄ  Ｔｒａｃｅ  Ｍａｃｒｏｃｅｌｌ）である。
【０００３】
この様なトレース機構は、トレースされることを所望されるデータ処理装置の動きを表すトレース要素のストリームを実時間で産出する。このトレース・ストリームは従って後で種々の目的に対して分析することが可能であり、例えばデータ処理装置で実行される処理命令のシーケンスのデバッグを容易にするためであったり、データ処理装置上で実行される特定プログラム・コードの性能を判定するための解明操作を実行するためなどである。
【０００４】
典型的に、トレース機構で生成されたトレース要素のストリームは事後分析用に出力される前にバッファリングされる。その様なトレース・バッファは有限量の情報を格納することが可能であり、それを介してバッファリングされる要素を受け取ることが可能な、有限帯域幅を有する専用データ・バスを必要とする。このトレース・バッファは一般的にラップアラウンド方式で情報を格納するように構成されており、すなわち一度バッファが一杯になると、新たなデータは通常、その中に格納されている最も古いデータに上書きするように構成されている。専用データ・バスの帯域幅が、情報がトレース・バッフア内に格納される速度を制限することが分かっている。
【０００５】
典型的にトレース分析ツールが具備されており、これは所望の時点で、例えば一度トレースが完了すると、トレース・バッフアからトレース要素を受け取る。トレース分析ツールはその受け取ったトレース要素に基づいてトレース対象装置の動きを再構築するために使用できる。プロセッサ・コアの様な装置の性能及び複雑さが増大するに伴い、その様な装置の動作を追跡するために必要な情報量が増加するであろう事は明白であり、従ってトレースされる必要のあるトレース要素が潜在的に非常に膨大な量になるはずである。
【０００６】
しかしながら、有限バス帯域幅の問題があってその上をトレース要素がトレース・ロジックから出力されており、またその様なトレース要素をバッファリングするために使用される全てのトレース・バッファは有限の大きさを持つ。従って、生成可能なトレース要素の量は制限される。
【０００７】
トレースされる必要のある装置の動きには、これに限定されるわけではないが、プロセッサ・コアで実行される命令（命令トレースと呼ばれる）、それらの命令により行われるメモリ・アクセス（データ・トレースと呼ばれる）が含まれる。これらの動きは個別にトレースされるかまたは一緒にトレースされ、データ・トレースを命令トレースと相関を取ることができる。データ・トレース自身は２つの部分、メモリ・アドレスとデータ値とからなり、（それぞれ）データ・アドレスおよびデータ値トレースと呼ばれる。この場合も、既存のトレースＥＴＭプロトコルはデータ・アドレスおよびデータ値トレースを独立にまたは同時に行うことを許している。
【０００８】
経験的に既存のプロセッサ・コアおよびＥＴＭに対して、１命令当たり２ビット未満のビット・レートが命令トレースのみに関して実現されている。しかしながら、上記の問題を明らかにするためには、１命令当たりおよそ１０から１６ビットのビット・レートが命令およびデータ・アドレス・トレース用に実施されている。従って、サイクル当たり１命令の実行に約１ＧＨｚの実行速度を有するプロセッサは、約１０から１６Ｇビット／秒のトレース・データを生成し、その全てがオフチップで採集されて固定サイズのバッファにキャプチャされなければならない。命令とデータ・アクセスのトレースに加えて、特定クラスの問題はデータ値トレースを実行することを要求するので、これは１命令当たり２０ビットを超えるトレース・データの生成を必要とし、トレース・データの量を更に増加させる。トータルで、データ・トレースの２つの要素、すなわちデータ・アドレス・トレースとデータ値トレースは生成されるトレース要素の全量のほとんどの部分に寄与する。
【０００９】
現行のＥＴＭロジックはまた、動作の１サイクル精密モードを提供するように構成することも可能であり、その中では各クロック・サイクルを示すための更なる情報がトレース・ストリーム内に含まれていて、例えばそのトレース・ストリーム内のトレース要素を次に分析する際に、そのトレース対象機器内で、その関連する動作が生じるクロック・サイクルの表示を決定することが可能である。その様な動作のサイクル精密モードは多くの場面で有用で有ろうが、これは生成するトレース・データ量を膨大に増大させ、命令トレース、データ・トレースまたはその両者の組み合わせに関わりなく実行される。生成されるトレース・データの量が既に非常に大きな状況では、サイクル精密トレースを実行する結果による余分な量の増加は、その上にトレース要素がトレース・ロジックから出力されるバスの帯域幅が有限であること、およびその様なトレース要素をバッファリングするために使用されるトレース・バッファのサイズが有限であることを考慮すると、重大な問題を生じ得る。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
従って、その上をトレース要素が出力される有限バス帯域幅、その中にトレース要素がバッファされる全てのトレース・バッファの有限サイズの更に効率的な使用を可能とするような、トレース要素を生成するための改善された技術を提供することが望ましい。
【課題を解決するための手段】
【００１１】
第１の特徴として、本発明はデータ処理装置を提供しており、これは：データ要素を生成するように動作可能なロジック；前記データ要素の少なくともいくつかを表すトレース要素の１つのストリームを生成するように動作可能で、前記ストリームに含まれるトレース要素を生成するように動作可能なトレース生成ロジックを有し、該トレース生成ロジックが更に前記ストリーム内に含まれるトレース・タイミング標識を生成するように動作可能であり、各トレース・タイミング標識が１つまたは複数の処理タイミング間隔の経過を表示し、前記処理タイミング間隔が予め定められた複数のクロック・サイクルである、トレース・ロジックを含む。
【００１２】
本発明によれば、トレース生成ロジックはストリームに含まれるトレース・タイミング標識を生成するように構成され、各トレース・タイミング標識は１つまたは複数の処理タイミング間隔の経過を表示し、この処理タイミング間隔はクロック・サイクルによって予め決定されている。従来、サイクル精密トレースは全てのクロック・サイクルを識別する事に関係し、従って生成されたトレース・ストリーム内で単一サイクル・レベルの情報を含んでいる。しかしながら本発明の発明者は、その動作がトレース対象となるロジックが更に複雑になるに伴い、各々時間経過したクロック・サイクルを表すトレース・ストリーム内に含まれる情報が、期待されるほどには正確で無くなり、誤った判断に導く状況が起こり得ることを認識している。一例としてその動作がトレースされるロジックがプロセッサ・コアの場合を考えると、最新のプロセッサ・コアは更に複雑になって来ており、例えば命令およびデータ転送の実行を順不同にサポートしている。その様なプロセッサ・コアに対して、トレース・ロジック内でのバッファリングは、しばしば命令およびデータ転送データをその情報が有効な形で出力される時点まで保持している必要がある。特に、全ての命令を並べ替えることはしばしば有効であり、それは例えば順序に従った命令の圧縮は順不同の場合より更に効果的で容易だからである。その様な状況では、バッファリングはそれらの命令の詳細な実行に関連する全てのサイクル情報を保持するのではなく、従って単一サイクルの精度は命令の実行を正確に示すものではない。
【００１３】
この実現形態に基づき、本発明の発明者はトレース・データ量のかなりな削減が、処理タイミング間隔を予め定められた複数のクロック・サイクルとして設定し、次にトレース・タイミング標識をトレース・ストリーム内に、１つまたは複数のこれらの処理タイミング間隔の経過を表すように含めることで実現できると判断した。その結果として、これはトレースされるのに必要な情報量を減らすが、その動作がトレースされるロジックの複雑な性質に関して十分なサイクル精度のレベルを提供することが分かった。
【００１４】
トレース・ストリーム内に含まれる個々のトレース要素が、そのストリームが生成される前に１つまたは複数の圧縮技術の対象となる場合がしばしば有る。処理タイミング間隔が予め定められた複数のクロック・サイクルであるような、１つまたは複数の処理タイミング間隔の経過を表示するようにトレース・タイミング標識が生成される技術を採用する場合、これはトレースされる情報の量を削減するのみならず、或る状況ではまた圧縮の改善にもなり、従ってトレース要素のストリームを生成する際に消費される帯域幅を更に削減する。
【００１５】
トレース・ロジックで受け取られるデータ要素は、そこから生成されるトレース要素の所望のストリームに対して十分な情報を与えるのであれば、種々の形式を取りうる。更に、データ要素はロジック（此処ではまた、トレース対象機器と呼ぶ）からトレース・ロジックへ伝送されるか、またはそれに代わって、トレース・ロジックによりトレース対象機器から受け取られる。一例として、データ要素は命令アドレス値、データ・アドレス値、またはデータ値を含む。トレース生成ロジックで生成されたトレース要素は従って、典型的にこれらのデータ要素が後ほどそのトレース・ストリームを分析するトレース分析ロジックにより判定されるのに十分な情報を含むように構成される。
【００１６】
一つの実施例において、トレース生成ロジックには所定の１つまたは複数の事象を識別する制御情報が具備されている。関心ある事象は種々の形式を取りうる。例えば、その様な事象はトレースされるロジックで実行されるコードに含まれる特定の命令、例えば分岐命令に関連する。その様な状況では、そのロジックから受け取られたデータ要素が分岐命令の実行を示す場合、これは関心ある事象と特定される。典型的に、その様な状況では１つのトレース要素がその関心ある事象を表すストリーム内に含まれるはずである。しかしながら、全ての関心ある事象がトレース・ストリーム内にトレース要素を存在させるようにする必要が有るわけで無いことは注意されたい。例えば、関心ある事象がトレース・ロジック内で内部的に生じる特定事象であるかも知れないし、または実際トレース・ロジックに通知される外部事象の場合もあり、これはそれ自身トレース要素の生成を必要とはしない。いくつかの例は、関心ある事象が他の関心ある事象の発生を伴わない特定回数のクロック・サイクルの経過、プロセッサのクロック速度の変更、または別のプロセッサが状態を変化させたか、または特定の命令を実行したことの表示などが考えられる。
【００１７】
トレース生成ロジックは種々の方法で関心ある事象を検知するように構成することが可能である。例えば、１つの実施例において、その様な事象を事実上トレース生成ロジックの中にハード結線して、その関心ある事象が予め決定されるようにすることが可能である。しかしながら、これに代わって、その様な関心ある事象を外部ソースからプログラムし、従って例えばトレース・ロジックの１つまたは複数の制御レジスタの中に適切なソースから、例えばトレース・ロジックにより生成されたトレース要素のストリームを後ほど分析するはずのトレース分析ツールから、プログラムする場合もある。
【００１８】
処理タイミング間隔を構成する予め定められた複数のクロック・サイクルを固定することは可能であるが、その処理タイミング間隔を構成可能のように構成する場合、更に大きな利益が生じる。その様な実施例において、データ処理装置は更に現在の処理タイミング間隔を保持するための記憶装置を含み、トレース生成ロジックは何時各々のトレース・タイミング標識を生成するかを決定するために、その記憶装置を参照するように動作可能である。１つの実施例において、その記憶装置はトレース・ロジック自身の内部に具備されており、その中に記憶されている現在の処理タイミング間隔は種々の方法で設定される。例えば、１つの実施例において、その記憶装置はトレース・ロジック内部の多数の制御レジスタの１つとして具備されており、現在の処理タイミング間隔を構成するために外部ソースから設定される。例えば、トレース分析ツールは典型的にトレース・ロジックで生成されたトレース要素のストリームを分析するように構成されている。その様な実施例において、トレース分析ツールは使用される現在の処理タイミング間隔を構築するように構成されており、この間隔はそのトレース分析ツールの使用者によって適切と認められた際に、トレース分析ツールによって再プログラムされる。
【００１９】
別の実施例において、トレース生成ロジックは１つまたは複数の予め定められた事象の発生に応答して、処理タイミング間隔を変更するように動作可能である。
【００２０】
トレース生成ロジックに処理タイミング間隔を変更させる予め定められた事象とは、種々の形式を取りうる。しかしながら１つの実施例において、ロジックにより生成されたデータ要素はそのロジックで実行されるプログラム・コードを示し、トレース生成ロジックは異なるコード部分に関して生成されたトレース要素に対して使用される異なる処理タイミング間隔を特定するようにプログラムされた１つまたは複数の制御レジスタを有し、このトレース生成ロジックは前記処理タイミング間隔を、どのコード部分のトレース要素に関して生成されたかに応じて変更するように動作可能である。従ってその様なやり方は、処理タイミング間隔をトレース・ストリームの生成中にトレース対象の動作に応じてダイナミックに変更することを可能とする。ひとつの例として、アプリケーション・コードに対しては高レベルのタイミング精度が必要であるが、ライブラリ・コードに関してはおよその経過時間のみが必要であると判断できる。従って制御レジスタ内の情報を、アプリケーション・コードがトレースされているのかまたはライブラリ・コードがトレースされているのかに依存して整合するように、異なるアドレス比較器となるように再プログラムすることが可能である。アプリケーション・コードがトレースされる際には常に、より短い処理タイミング間隔が使用され、ライブラリ・コードがトレースされる際には常に、より長い処理タイミング間隔が使用される。
【００２１】
処理タイミング間隔はまた外部事象、例えば割り込み、によっても変更される場合がある。例えば、通常アプリケーション・コードを分析する際、必要とされるのは低レベルのタイミング精度であろうが、割り込み処理ルーチンを分析する際には、高度なタイミング精度が要求されるのがより典型的である。従って、割り込みの発生は処理タイミング間隔をより高い精度を与えるように変更するようにうながし、割り込み処理が完了すると処理タイミング間隔は低精度を与えるように元に戻るべきである。
【００２２】
１つまたは複数の予め定められた事象の発生に応答して、トレース生成ロジックが処理タイミング間隔をどのように変更するかを示す別の例は、トレース生成ロジックに１つまたは複数の関心ある事象を識別する制御情報が具備されている場合、前記関心ある事象の発生頻度の分析に基づいて前記処理タイミング間隔を変更する。従って、その様な実施例において、予め定められた事象はそのトレース生成ロジックで実行される分析であり、これは現在の処理タイミング間隔を調整するように働く。例えば、トレース・ストリームの以前に生成された部分に基づき、トレース生成ロジックがその関心ある事象が２０クロック・サイクル毎にのみ発生すると判定し、一方現在の処理タイミング間隔が４サイクルに設定されている場合、現在の処理タイミング間隔を、例えば１６クロック・サイクルに増やすことが適切であると判断される。
【００２３】
１つの実施例において、処理タイミング間隔が変更された場合、トレース生成ロジックはストリーム内にその変更を示すタイミング変更標識を含むように動作可能である。従って、その様なやり方において、後ほどトレース・ストリームを分析するトレース分析ツールは処理タイミング間隔の変更を識別することが出来る。いくつかの実施例において、特にトレース分析ツールが処理タイミング間隔を変更するたった１つのエンティティー（ｅｎｔｉｔｙ）のみである場合、その様なタイミング変更標識をトレース・ストリームの中に挿入する必要は無い。
【００２４】
多くの方法で、トレース生成ロジックがトレース・タイミング標識を出力するように構成出来る。１つの実施例において、トレース生成ロジックは前記トレース・タイミング標識を前記トレース・ストリーム内に各処理タイミング間隔の後に出力するように動作可能である。従って、その様な実施例において、全ての個々の処理タイミング間隔内でトレースされている動作に関係なく、トレース・タイミング標識は常に各々のその様な処理タイミング間隔の後で生成され、従ってトレース・ストリーム生成中に一定の間隔で繰り返される。
【００２５】
トレース・タイミング標識は種々の形式を取りうる。例えば、１つの実施例において、最新のトレース・タイミング標識が生成されてから経過した、１つまたは複数の処理タイミング間隔を識別するように構成できる。先に述べた、トレース・タイミング標識が各処理タイミング間隔の後に出力される実施例において、その様な実施例ではトレース・タイミング標識が単に単一ビット値を取り、１つの処理タイミング間隔が、最新のトレース・タイミング標識の出力から経過したことを識別できることが理解されよう。その様なトレース・タイミング標識の形式により、そのトレース・ストリームを後で分析するトレース分析器は、そのトレース・タイミング標識が生成された時点で適用可能であった処理タイミング間隔を知る必要があることが理解されよう。
【００２６】
別の実施例において、トレース・タイミング標識は予め定められた複数のクロック・サイクルの数を表示する。従って、その様な実施例において、処理タイミング間隔が現在４クロック・サイクルに設定されていて、トレース・タイミング標識が各処理タイミング間隔の後に生成される場合、各トレース・タイミング標識は４番を識別する。これは余り効率的ではない符号化であるが、任意の時点で使用されている処理タイミング間隔を、トレース分析ツールが知る必要を無くす。
【００２７】
１つの実施例において、トレース生成ロジックは１つまたは複数の関心ある事象を識別する制御情報を具備し、その処理タイミング間隔の間に関心ある事象が発生しなかった場合には、トレース・タイミング標識の出力を抑制するように動作可能である。従って、その様な実施例において、トレース・ストリーム内で「静かな期間」中はトレース・タイミング標識の個々の発生を抑制することにより、更なる効率が実現できる。
【００２８】
その様な１つの実施例において、トレース生成ロジックは関心ある事象が発生した際の前回のトレース・タイミング標識の出力からの経過した、処理タイミング間隔の数を示すトレース・タイミング標識を出力するように動作可能である。従って、その様な実施例において、特定の処理タイミング間隔中に関心ある事象が発生しない場合、個々のトレース・タイミング標識は抑制されるが、後で関心ある事象が発生した際にはトレース・タイミング標識は先のトレース・タイミング標識の出力から経過した処理タイミング間隔の個数を示す出力である。従って、一例として現在の処理タイミング間隔が４サイクルに設定されており、そして前トレース・タイミング標識が生成されてから、最後のトレース・タイミング標識に続いて関心ある事象が最初に発生するまでの間に１０サイクル経過した場合、トレース・タイミング標識はその関心ある事象が発生した時点で、２処理タイミング間隔（すなわち８サイクル）が前トレース・タイミング標識の出力から経過したことを示しながら生成される。これは関心ある事象の正確なタイミングは与えないが、指定された４サイクルレベルでは正確なタイミングを提供し、また全ての不要なトレース・タイミング標識の生成を回避することで非常に効率的なやり方でタイミング標識を生成する。
【００２９】
別の実施例において、トレース生成ロジックは多数の関心ある事象が発生するまでトレース・タイミング標識の出力を抑制し、前トレース・タイミング標識の出力から経過した処理タイミング間隔の数を示すトレース・タイミング標識を出力するように動作可能である。これは更にトレース・タイミング標識がトレース・ストリーム内に生成される必要のある頻度を削減することが出来る。
【００３０】
トレース・タイミング標識間の関心ある事象の数は、１つの実施例の中では予め定められている。しかしながら、別の実施例において、関心ある事象の数はトレース・ロジック内の圧縮ロジックによりダイナミックに決定される。一例として、トレース・プロトコルは関心ある事象の複数の標識を単一トレース・パケットの中に圧縮し、１トレース・タイミング標識のみを出力する。使用される圧縮アルゴリズムに基づき、これは可変個数の関心ある事象が単一トレース・パックの中に挿入されることを意味する。
【００３１】
１つの実施例において、トレース生成ロジックは１つまたは複数の関心ある事象を識別する制御情報を具備し、更に前記関心ある事象の１つが発生すると、前トレース・タイミング標識から経過したクロック・サイクルの数を示す、追加のトレース・タイミング標識を出力するように動作可能である。従って、その様な実施例において、関心ある事象が発生した時点でトレース・タイミング標識が生成されたか否かには関わらず、前トレース・タイミング標識から経過したサイクル数を示す現在クロック計数を示す、追加のトレース・タイミング標識が出力可能である。関心ある事象が最後のトレース・タイミング標識の１０サイクル後で発生する先の例を考慮すると、その様な実施例は関心ある事象が発生すると、２処理タイミング間隔（すなわち８サイクル）を示すトレース・タイミング標識と、２サイクルを示す追加のトレース・タイミング標識を出力するように構成されており、これによって特定の関心ある事象に関して単一サイクル精度を提供する。
【００３２】
１つの実施例において、トレース生成ロジックはトレース・ストリームがそのトレース生成ユニットが利用可能な帯域幅を超えることを防止するように、処理タイミング間隔を変更するように動作可能である。従って、その様な実施例において、トレース・ロジックは利用可能帯域幅を考慮して、処理タイミング間隔をダイナミックに変更できる。これは時間間隔に対して与えられるサイクル精度を大きく低下させることを求めるが、これは一度利用可能帯域幅を超過すると、一部のトレース・データが失われる状況にある典型的な従来技術システムよりも一般的に更に有益である。
【００３３】
１つの実施例において、特定のトレース要素が特定数のクロック・サイクルを含むように構成できる。例えば、１命令の実行を識別するトレース要素は１クロック・サイクルを含む。１つのその様な実施例において、トレース生成ロジックは、処理タイミング間隔内のクロック・サイクルの数の経過が、前記処理タイミング間隔中に前記ストリーム内に出力された前記トレース要素から導出される際に、前記処理タイミング間隔を前記クロック・サイクルの数だけ延長し、トレース・タイミング標識が後でストリーム内に含まれる際に、前トレース・タイミング標識が出力されてから経過したクロック・サイクルの総数が、トレース・タイミング標識で示される処理タイミング間隔の数から、前記トレース要素から導出可能なクロック・サイクルの前記数と組み合わせて導出出来るように動作可能である。これは更にトレース・ストリーム内で生成される必要のあるタイミング情報の量を削減することにより、システムの効率を改善する。
【００３４】
１つの実施例において、１つの特定トレース要素で推測されるクロック・サイクルの数は予め定められている場合がある。しかしながら、これに代わる実施例において、トレース生成ロジックは１つまたは複数の型式のトレース要素に対して、その型式のトレース要素で推測されるクロック・サイクルの数を識別するようにプログラムされた１つまたは複数の制御レジスタを有し、このトレース生成ロジックは、前記処理タイミング間隔を延長するための前記クロック・サイクル数を決定する際に、前記１つまたは複数の制御レジスタを参照するように動作可能である。その様な制御レジスタは例えば、特定トレース要素を受け取った時点で推定するクロック・サイクルの数を識別するために、トレース分析ツールでプログラムされる。
【００３５】
第２の特徴から見ると、本発明はデータ処理装置のロジックで作られた少なくともいくつかのデータ要素を表す、トレース要素のストリームを生成するためのトレース・ロジックを提供しており、該トレース・ロジックは：前記ストリームに含まれるトレース要素を生成するように動作可能なトレース要素生成ロジックと；前記ストリームに含まれ、各々が予め定められた複数のクロック・サイクルである、１つまたは複数の処理タイミング間隔の経過を表示する、トレース・タイミング標識を生成するように動作可能なタイミング表示ロジックを含む。
【００３６】
第３の特徴から見ると、本発明は本発明の第１の特徴に基づくデータ処理装置で生成されたトレース要素のストリームを分析するためのトレース分析装置を提供しており、これは：現在の処理タイミング間隔を記憶するための記憶装置；前記ストリーム内に挿入されるクロック・サイクル計数値を決定するために、前記現在の処理タイミング間隔を参照するように前記ストリーム内のトレース・タイミング標識を受け取ると動作可能なトレース拡張ロジックとを含む。
【００３７】
第４の特徴から見ると、本発明はデータ処理システムの動作方法を提供しており、これは：データ要素を産出し；該データ要素の表示を受け取り、前記データ要素の少なくともいくつかを表すトレース要素のストリームを産出するトレース・ロジックを採用し；前記ストリームに含まれ、各々が予め定められた複数のクロック・サイクルである、１つまたは複数の処理タイミング間隔の経過を表示する、トレース・タイミング標識を生成する、以上のステップを含む。
【００３８】
第５の特徴から見ると、本発明は本発明の第４の方法で生成されたトレース要素のストリームをコンピュータに分析させるコンピュータ・プログラムを含むコンピュータ・プログラム製品を提供し、これは：現在の処理タイミング間隔を記憶し；前記ストリーム内のトレース・タイミング標識を受け取ると、前記ストリーム内に挿入されるクロック・サイクル値を決定するために前記現在の処理タイミング間隔を参照するステップを実行する。
【００３９】
本発明を添付図に図示された、いくつかの実施例を例としてのみ参照して更に説明する。
【実施例】
【００４０】
図１はロジック１０、トレース・モジュール２０、トレース・バッファ３０およびトレース分析器４０を提供するデータ処理装置システムを図式的に示す。図１はトレース・バッファ３０を提供するデータ処理システムを図示しているが、別の実施例において、トレース・モジュール２０はその出力をトレース分析器４０に直接、トレース・バッファを介さずに送る場合がある。
【００４１】
トレース・モジュール２０で受け取られるデータ要素のストリームを産出するロジック１０は種々の形式を取ることが可能であり、例えばプロセッサ・コア、直接メモリ・アクセス（ＤＭＡ）エンジン、データ・エンジン／アクセラレータ等である。これに代わって、ロジック１０はバスで接続された複数の装置で構成されることが可能であり、データ要素はそれらがバスの上を通る際にトレース・モジュール２０でモニタされる。
【００４２】
１つの実施例において、適切なソフトウェアを走らせる汎用コンピュータで形成されている、トレース分析器４０がトレース・モジュール２０とトレース・バッファ３０に接続されている。典型的にオンチップで実現されているトレース・モジュール２０は、データ要素をロジック１０から受け取り、それに基づいてトレース要素のストリームを産出し、トレース・バッファ３０（これはオンチップまたはオフチップで提供さける）に格納される。典型的にオフチップで実施されているトレース分析器４０が次にトレース要素のストリームを分析するために使用されて、トレース対象ロジック１０の動作を表す情報が導出される。特に、トレース要素のストリームの分析を通して、ロジック１０の詳細動作が判定される。
【００４３】
トレース分析器４０はトレース・モジュール２０に接続されており、トレース・モジュールの或る種の機能がトレース分析器の使用者によって制御出来るようにしている。加えて、いくつかの実施例において、トレース・モジュール２０で産出されたトレース要素のストリームはトレース・バッファ３０内にバッファリングされる代わりにトレース分析器４０に直接提供される。
【００４４】
図２は図１のロジック１０の１例のブロック図である。この例において、ロジック１０はバス１５で接続された２つの装置（１１，１２）を含む。バスはトレース・モジュール２０に接続１０５経由で接続されており、その上をロジックで産出されたデータ要素が通過する。
【００４５】
図３は１つの実施例に基づくトレース・モジュール２０のブロック図である。トレース・モジュール２０は、トレース対象ロジックの状態または動作を表すデータ要素を経路１０５上で受け取るように構成されている。同期化（ｓｙｎｃ）ロジック１００は、入力信号をトレース・モジュール２０で使用するのに更に適切な内部バージョンの信号に変換するように構成されている。これらの内部バージョンは次に制御ロジック１１０およびトレース生成ロジック１２０に送られる、もっとも理解されるであろうが制御ロジック１１０とトレース生成ロジック１２０は同一信号を受け取る必要は無い。基本的に制御ロジック１１０はトリガ可能事象、例えば命令アドレス、データ値、レジスタ・アクセスなどに関するデータを受け取る必要があり、これによりトレースを始動させるか否か、またどの型式のデータ要素をトレースすべきかを決定できる。これは次に適切な制御信号をトレース生成ロジック１２０に対して発して、必要なトレース要素がトレース生成ロジック１２０で生成されるようにする。トレース生成ロジック１２０は同期ロジック１００経由でトレースに必要な全てのデータを、制御ロジック１１０で発せられた制御信号に基づいて受け取る。
【００４６】
本発明のいくつかの実施例によれば、制御レジスタ１４０が具備されておりこれらは制御ロジック１１０の動作を構成するために使用され、これらの制御レジスタ１４０はトレース分析器４０から設定可能である。多数の制御レジスタを具備することが可能であり、これは基本的にトレース生成ロジック動作の２つの要素を指向しており、「何時」これらのトレース要素を生成するか、すなわち何時特定範囲のアドレスがアクセスされたか、また「何を」それらのトレース要素が生成するか、すなわちデータ・アドレスそして／または個々の伝送のデータ値、また典型的に伝送に関する補助情報、例えばそれが読み取りまたは書き込み操作であるか、それがロックされているか否か、安全確保（ｓｅｃｕｒｉｔｙ）情報かなどである。
【００４７】
制御ロジック１１０で発せられた制御信号で始動されて「何時（ｗｈｅｎ）」条件が合致すると、トレース生成ロジック１２０は同期ロジック１００から受け取られたデータ要素を表す要求されたトレース要素を、これもまた制御ロジックから受け取った「何（ｗｈａｔ）」信号に関連して生成する。これらの生成されたトレース要素はＦＩＦＯ１３０に出力される。此処からトレース・ストリームが次にトレース・バッファ３０に出力されるか、またはそれに代わる実施例として直接トレース分析器４０に出力される。
【００４８】
本発明のいくつかの実施例によれば、通常のトレース要素に加えてトレース生成ロジック１２０がトレース・タイミング標識を産出するように構成されており、これはそれからトレース・ストリームの中に含まれ、各トレース・タイミング標識は１つまたは複数の処理タイミング間隔の経過を表示し、ここで処理タイミング間隔は予め定められた複数のクロック・サイクルに設定される。処理タイミング間隔を任意の特定施工に固定しても良い。本発明の１つの実施例ではこれを構成可能であり、トレース生成ロジック１２０が各トレース・タイミング標識を生成する際に現処理タイミング間隔を参照して保持する。処理タイミング間隔を構成可能とするには多くの方法がある。１つの実施例において、これは静的に構成可能であり、例えばトレース分析器４０が現処理タイミング間隔を１つの制御レジスタ１４０の中に設定可能にして、その値がトレース生成ロジック１２０で読み取られる。これに代わる実施例において、処理タイミング間隔がトレース・ストリームの生成途中にトレース生成器１２０によりダイナミックに構成化可能であり、１つまたは複数の予め定められた事象の発生を考慮に入れられるようにしている。例えば、ロジック１０で実行される、異なるコード部分内で生成されたトレース要素用に使用される異なる処理タイミング間隔を特定制御レジスタ１４０内に識別するように構成される。トレース生成器１２０は次に、特定コード部分に対してトレース要素を生成する際に、現在トレースされているコード部分に関する適切な処理タイミング間隔を決定するために、制御レジスタ内の情報を参照するように構成されており、続いてその処理タイミング間隔に関連しているトレース・タイミング標識を生成する。
【００４９】
特定のトレース対象動作が発生する際にしばしば生じることであるが、トレース分析器の使用者が特にその存在を観察したいと注目する関心ある事象が多数存在する。トレース生成器１２０にはその様な関心ある事象を識別する制御情報が具備されており、その様な情報は固定されているかまたはそれに代わって、例えばトレース分析器がその様な関心ある事象を１つまたは複数の制御レジスタ１４０を適切に設定することにより識別可能とすることでプログラム可能である。処理タイミング間隔のダイナミック構成化の別の例として、関心ある事象が識別されるその様な実施例において、トレース生成器１２０はその関心ある事象がトレース・ストリーム内で発生する頻度を識別するように、周期的に何らかの自己分析を実施するように構成されている。その様な関心ある事象が処理タイミング間隔が経過する周期よりも更に低い頻度で発生する場合、その様な実施例ではトレース生成器１２０は、それに従って処理タイミング間隔を増やすように構成されている。
【００５０】
１つの実施例において、トレース生成器１２０が処理タイミング間隔をダイナミックに変更する際には常に、その変更を示すタイミング変更標識をストリーム内に含むように構成されていて、そのトレース・ストリームが後ほどトレース分析器４０で分析される際に、その処理タイミング間隔の変更、各トレース・タイミング標識を解釈するときに考慮できるようにしている。
【００５１】
トレース生成ロジックで産出されたトレース・タイミング標識および実際全てのタイミング変更標識は、トレース・ストリーム内に含まれる追加のトレース要素と考えられることは理解されよう。特に、サイクル精度が要求される場合、トレース生成器１２０はこれらの追加標識を通常のトレース要素に追加して産出するように構成されている。しかしながら、本発明の実施例では、処理タイミング間隔が複数のクロック・サイクルとして設定されているという事実があるため、ストリーム内に出力するためにトレース生成器で生成される情報は、単一サイクル精度を採用している従来技術システムを使用する場合より遙かに少なく、従ってトレース・ロジック２０から出力可能な縮小されたトレース・ストリームを産出させることになる。更に、処理タイミング間隔が構成化可能であるという性質により、これは全てのトレース状況のなかで、命令トレース、データ・トレース、またはそれら両者の組み合わせの実行にかかわらず、精度と帯域幅のトレードオフを可能とする。
【００５２】
トレース対象装置が複雑になるに伴って、単一サイクルレベルで実行するサイクル精度（従来技術システムで実行されているようなもの）が、全ての事象において命令の実行を正確に示すものでは無いという状況が見られるようになって来ている。例えば、先に述べたように、処理装置は今日しばしば順不同（ｏｕｔ−ｏｆ−ｏｒｄｅｒ）命令実行を実現できるようになっており、命令ストリームのバッファリングがトレースに先立って行われ、情報のより良い圧縮を容易とするために再順序化出来るようにしている。その様な状況では、バッファリングはしばしばそのトレースのサイクル精度の性質が、使用者が期待している精度ではないことを意味する。本発明の実施例の中で実施されている構成化可能処理タイミング間隔を使用することにより、トレースのサイクル精度を適切と思われるまで、例えばトレース分析器の使用者によって構成することが可能であり、これによりサイクル情報のリーズナブルなレベルを保ちながらトレース帯域幅を節約する。
【００５３】
更に、将来システムはマルチ・プロセッサに準拠すると思われ、此処ではそれらのプロセッサ間の相互作用をトレースする必要がある。本発明の実施例の技術を使用することにより、装置毎に必要とされるトレース・データの量を著しく削減することが可能であり、これは更に多数の装置をトレースする必要がある場合には重要である。
【００５４】
多くの実施例において、トレース生成器１２０は要求されたトレース要素を出力する前に、ＦＩＦＯ１３０から出力される圧縮済みトレース・ストリームを産出するために、圧縮技術を実行するように構成されている。先に述べたように、本発明のいくつかの実施例によれば、サイクル精度を達成する際にトレースされる必要のある情報の量が著しく削減できる。更に、多くの状況の中で更に効率的な圧縮が可能なことが分かっており、これによりトレース帯域幅の更なる節約を提供する。
【００５５】
図４は本発明の実施例に基づくトレース分析器４０の動作を図示するブロック図である。分析ツール２００は標準の分析ツールを表し、これは本発明の実施例の技術を使用するシステムの前に生成されたトレース・ストリームを分析するために使用されるものである。トレース拡張ロジック２１０は、先に説明したトレース・タイミング標識を使用した結果、縮小されたトレース・ストリームを拡張するために、分析ツールに組み込まれた追加ロジックを識別する。トレース・ロジック２０から出力された縮退されたトレース・ストリームはトレース拡張ロジック２１０で受け取られ、これは現在の処理タイミング間隔のコピーをレジスタ２２０の中に保持する。従って、縮小されたトレース・ストリームの中にトレース・タイミング標識が観測された際には常に、トレース拡張ロジック２１０はそのトレース・タイミング標識を、レジスタ２２０の中に保持されたタイミング間隔情報を参照して決定されたクロック・サイクル計数値で置き換えることが出来る。これは拡張されたトレース・ストリームを生じ、これは続いて分析ツール２００で分析出来る。
【００５６】
分析ツール２００が要求された分析をトレース・ストリームに対して実施する前に、トレース拡張ロジック２１０が先に説明した機能を実行する要求が無いことは理解されるであろうが、それは実施される分析の多くは拡張されたタイミング情報を必要としないからである。更に１つの実施例において、トレース拡張ロジック２１０と分析ツール２００の両者はロジックの単一相補部品（ｃｏｈｅｓｉｖｅ  ｐｉｅｃｅ）として形成される。１つの実施例において、トレース拡張ロジック２１０と分析ツール２００の両者はトレース分析器４０上で実行される適切なソフトウェアで形成される。
【００５７】
先に述べたように、いくつかの実施例において、トレース生成器１２０は処理タイミング間隔をダイナミックに構成することが可能であり、処理タイミング間隔がその様な方法で変更された際には常に、トレース生成器１２０は１つの実施例の中で、タイミング変更標識をトレース・ストリームの中に出力するように構成されている。その様なタイミング変更標識がトレース拡張ロジック２１０で観測されると常に、それに従ってレジスタ２２０内のタイミング間隔のコピーを更新し、トレース・ストリーム内で受け取られた全ての後続のトレース・タイミング標識がトレース拡張ロジック２１０で正しく解釈されるようにしている。
【００５８】
トレース・タイミング標識をトレース・ストリーム内に含むには多くの方法がある。図５はトレース生成器１２０で実行されるステップの１つのシーケンスを図示する流れ図であり、この中でトレース・タイミング標識は各処理タイミング間隔の後で出力され、タイミング標識が事実上トレース・ストリーム内で心拍のような形式を取るようにしている。図５に示されるように、ステップ３００において、トレースが現在実施中であり、全ての必要な初期タイミング標識がトレース・ストリームの中に具備されていると想定されている。当業者には理解されるであろうが、トレースが最初に開始される際に、いくつかの初期情報がトレース・ストリームの開始時点で含まれていて、トレース分析器がトレースの開始点を正しく決定出来るようにしなければならず、この情報は例えば現在実行されている命令のフルアドレスと、いくつかの初期タイミング情報を含む。
【００５９】
その後、この処理工程はステップ３０５に進み、此処で新たなクロック・サイクルが生じたか否かが決定される。一旦新たなクロック・サイクルが発生すると、次にステップ３１０で関心ある事象がこのサイクルの中で生じたか否かが判断される。発生しない場合、処理工程は直接ステップ３２０に進み、一方このサイクルで関心ある事象が発生した場合は、ステップ３１５で現在のサイクル計数の表示がトレース・ストリームの中に出力される。
【００６０】
図５において、タイミング情報を出力するために必要なステップのみが示されており、関心ある事象が発生すると、必須ではないが対応するトレース要素もまたトレース・ストリームの中に含めるために産出されても良い。実際、トレース要素はそれが関心ある事象に関係していなくてもしばしばトレース・ストリーム内に含めるために産出される。１例として、命令トレースが始動されると、典型的に全ての命令実行毎にトレース要素が産出される。しかしながら、全ての命令が関心ある事象に対応するわけでは無く、ある種の命令、例えば分岐命令のみが関心ある事象と考えられる。その他の関心ある事象は実行される命令自身に関係しないが、トレース・ロジックの内部で生じるか、またはトレース・ロジックの外部で生じる他の事象に関係しても良い。
【００６１】
ステップ３１５で現在のサイクル計数の表示を出力することにより、これは関心ある事象のタイミングに関連するトレース・ストリーム内の高いレベルの精度を提供する。
【００６２】
処理工程がステップ３２０に進むと、現在のサイクル計数がタイミング間隔以上であるか否か判断される。否の場合、処理工程はステップ３２５に進み、此処でサイクル計数が増更新され、その後処理工程はステップ３０５に戻る。しかしながら、サイクル計数がタイミング間隔以上の場合、処理工程はステップ３３０に進み、此処でタイミング標識がトレース・ストリーム内に出力される。このタイミング標識は例えば現在の処理タイミング間隔の経過を識別する単一ビット値であるか、またはこれに代わって処理タイミング間隔を形成するクロック・サイクル数を直接示す値であっても良い。タイミング標識を発した後、処理工程はステップ３３５に進み、此処でサイクル計数はリセットされ、その後処理工程はステップ３０５に戻る。
【００６３】
図５の点線で示されるように、これに代わる実施例において、関心ある事象がステップ３１０で生じ、従って現サイクル計数がステップ３１５でトレース・ストリーム内に表示されたと想定すると、この処理工程はステップ３２０とその後に必要とされる全てのステップに進むのではなく、ステップ３１５からステップ３３５へ直接進む。従って、この代替実施例によれば、タイミング標識はその間に発生する事象に関係なく全てのタイミング間隔を単に出力するのではなく、それに代わって関心ある事象の発生時に、現サイクル計数が出力されそのサイクル計数がリセットされる。従って、別のタイミング標識は、現サイクル計数がステップ３１５で出力された時点（勿論中間時点で別の関心ある事象は生じていないと仮定する）に続いて、処理タイミング間隔が経過するまで産出されない。
【００６４】
図５は１つの実施例を図示するが、種々の修正変更が可能なことは理解されよう。例えば、いくつかの実施例において、ステップ３１０とステップ３１５は不要であり、処理タイミング間隔が経過する毎にタイミング標識を単に出力するだけで十分であると判断することも出来よう。
【００６５】
図６は別の実施例を図示し、此処ではタイミング標識を処理タイミング間隔が経過する時点毎に出力する必要が無く、代わりに特定処理タイミング間隔の間に関心ある事象が生じない場合には、トレース・タイミング標識の出力は抑制できる。図６を図５と比較することにより、ステップ４００，４０５および４１０は図５のステップ３００，３０５および３１０と類似していることが理解されよう。関心ある事象が発生したとステップ４１０で判定された場合、次に処理工程はステップ４１５に進み、此処でタイミング標識がトレース・ストリームに含まれるように出力され、このタイミング標識は間隔計数を与える。従って、計数の１は処理タイミング間隔の１つが経過したことを示し、計数の２は処理タイミング間隔の２つが経過したことを示す、等でありこの間隔計数はトレース・ストリームの中のタイミング標識が出力された最後の時刻に対するものである。その後、ステップ４２０において、処理工程はオプションとして現在のサイクル計数の表示を、図５のステップ３１５を参照して説明したものと類似の方法により追加出力するように構成されている。従って、例としてあげると、ステップ４１０で検出された関心ある事象が最後のタイミング標識が産出されて２０サイクル後に発生し、現在の処理タイミング間隔が８サイクルと仮定する場合、ステップ４１５と４２０を組み合わせた結果、トレース・タイミング標識がステップ４１５で出力され、２の処理タイミング間隔の経過を示し、次にステップ４２０でサイクル計数の４が出力される。
【００６６】
ステップ４２０に続いて、またはステップ４２０のオプションが削除される場合にはステップ４１５に続いて直接、間隔計数はステップ４２５でリセットされ、その後処理工程はステップ４３０に進み、此処でサイクル計数がタイミング間隔以上であるか否かが判定される。ステップ４３０，４３５，４４０および４４５は図５のステップ３２０，３２５，３３０および３３５に類似しており、ただステップ４４０でタイミング標識が生成されるのではなく、代わりに間隔計数が増更新される点が異なる。従って、サイクル計数がタイミング間隔以上であると直ちにタイミング標識が出力される図５の方法との比較において、図６の技術によれば、サイクル計数がタイミング間隔以上の場合、間隔計数が単に増更新されタイミング標識が実際に出力されるのは関心ある事象が発生する場合のみである。
【００６７】
図６の点線矢印で示されるように、別の実施例によればステップ４２５に続いて、処理工程はステップ４３０に進む代わりに、ステップ４４５に直接進みサイクル計数をリセットする。この様なやり方により、ステップ４１５でタイミング標識を出力したことに続き、またオプションとしてサイクル計数をステップ４２０で含めて、このサイクル計数はステップ４４５でリセットされる。その結果として、間隔計数の次の増更新はステップ４１５および４２０が実行された時点に続いて、現在の処理タイミング間隔が経過するまで発生しない。
【００６８】
図７は図５または図６の点Ａ，ＢおよびＣの間に挿入されるいくつかの代替ステップを図示する流れ図であり、図７の処理工程は図５のステップ３２０または図６のステップ４３０のいずれかと実質的に置き換えられる。図７に図示されている実施例に基づけば、トレース・ストリーム内の特定トレース要素出力は、それらに関連する内包クロック・サイクル計数を有すると想定されている。この内包クロック・サイクル計数は予め定められているか、またはこれに代わっていくつかの実施例では、例えばトレース分析器４０によってプログラム可能である。この様なプログラム可能実施例において、トレース分析器４０は１つまたは複数の制御レジスタ１４０内の特定トレース要素用の内包クロック・サイクル計数に関する情報を記憶して、その内包クロック・サイクル値がトレース生成器１２０で参照出来るように構成されている。１つの実施例において、内包クロック・サイクル計数は自然数であるが、これは本質的ではなく、従って１例として特定トレース要素型式は１．５として含まれるサイクル計数を有する。１つの特定実施例において、トレース生成器は命令が実行される時点毎にトレース要素を生成するように構成され、その様なトレース要素はそれに関連する特定の内包クロック・サイクル計数、例えば単一クロック・サイクルを有する。
【００６９】
ステップ５００において、トレース生成器１２０は内包クロック・サイクル計数を有するトレース要素がその現在クロック・サイクル内で生成されたか否かを決定する。これは関心ある事象に属するトレース要素であるか、またはこれに代わってそのトレース・ストリーム内に含まれる別のトレース要素である。その様なトレース要素が生成されなかった場合、処理工程はステップ５２０に直接進み、此処でサイクル計数がタイミング間隔以上であるか否か判定される。しかしながら、ステップ５００において、その様なトレース要素が産出されたと判定されると、ステップ５１０において、サイクル計数がステップ５２０に進む前に内包クロック・サイクル計数の量だけ減更新される。
【００７０】
従って、図示の目的で図５を参照すると、１サイクル・ステップ３２５の中でサイクル計数が８になるように増更新させ、またこれがたまたま現在の処理タイミング間隔に対応する場合、次のクロック・サイクルの間に、ステップ３２０を実行することにより、処理工程はステップ３３０に進み、此処でタイミング標識が生成された。しかしながら、この別の実施例によれば、ステップ５００において、１サイクルの内包クロック・サイクル計数を有するトレース要素が生成されると判定される場合、次にステップ５１０はサイクル計数が７に減更新させて、ステップ５２０が実行された時に、このサイクル計数がタイミング間隔以上とならないようにして、代わりに処理工程はステップ３２５に分岐して、サイクル計数がタイミング標識を産出することなく増更新されるようにしている。
【００７１】
従って、その様な方法により、タイミング標識が産出される間隔は、内包タイミングを有するトレース要素が中間で出力される場合、更に拡張することが可能であり、これによってトレースされる必要のある情報の量の更なる削減に導く。
【００７２】
図８は図５または図６の点ＸおよびＹの間に挿入可能なステップのオプション・シーケンスを図示する。特に、図８に図示されるステップのシーケンスを実施例の中に含むことが可能であり、此処でトレース生成器１２０はそのタイミング間隔をダイナミックに変更することが許されている。図５および６に示されるように、この処理工程はタイミング標識を出力した後に実施することが可能であり、これはその様な変更が著しい複雑さをもたらすことなく実施できる時点を表しているからである。ステップ６００において、タイミング間隔に変更の必要が有るか否か判定される。先に説明されたように、これはトレース生成ロジックが１つまたは複数の予め定められた事象を検出した結果として典型的に生じ、例えばトレースされるコード部分内の変更、またはトレース・ストリーム内の関心ある事象の頻度が、現在のタイミング間隔の経過周期より著しく少ないとトレース生成ロジックが観測した結果として生じる。
【００７３】
ステップ６００において、タイミング間隔に変更が必要であると判定された場合、処理工程はステップ６１０に進み、此処で新たなタイミング間隔がトレース生成器１２０で決定されと将来参照するために格納される（例えば１つの制御レジスタ１４０の中に）。その後、ステップ６２０において、新たなタイミング間隔がトレース・ストリーム内に出力されて、トレース分析器４０に変更が勧告される。ステップ６００において、タイミング間隔に変更の必要が無いと判断される場合、処理工程は単に点Ｙに直接進み、此処で図５または図６に図示されるプロセスが継続される。
【００７４】
トレース・ストリーム内に含まれるために生成されるトレース・タイミング標識は種々の形式を取りうる。先に述べたように、現在のＥＴＭプロトコルはサイクル精度をサポートしており、此処では全ての単一クロック・サイクルが捕捉されトレース・ストリーム内に含まれる。特に、現在のＥＴＭプロトコルは全てのプロセッサ・サイクルでＷアトム（ａｔｏｍ）を出力する。これらのＷアトムが、実行状態（実行のＥ、非実行のＮ）を表示する他のアトムと一緒に、プロセッサで実行される各々の命令に対して出力される。下記の表１は長期に渡って実行されるＡＲＭ命令のシーケンス例を示す。列Ｄは既存のＥＴＭプロトコルがこのストリームを符号化する様子を示し、全実行を示すために５４個のアトムを用いている。１つのＷアトムは経過する各々のサイクルで必要とされる。本発明の実施例の構成化可能処理タイミング間隔によれば、サイクル精度の解像度は複数のクロック・サイクルを表す種々の値の間で変更可能であり、従って例えば２クロック・サイクル、４クロック・サイクルまたは８クロック・サイクルの値を取りうる。その様な実施例において、トレース・タイミング標識はＷアトムの形式を取るが、Ｗアトムは次に現在の処理タイミング間隔に基づいてトレース分析器によって解釈される。従って、列Ｅ，ＦおよびＧはそれぞれサイクル精度解像度が２、４および８サイクルに変更された場合のその様な方法に基づいて符号化されたアトムを示す。
【表１】
0005325436.tif 000002
【００７５】
表１から分かるように、２サイクルのサイクル精度解像度で、命令のシーケンスは３８個のアトムを用いて符号化することが可能であり、４サイクルのサイクル精度で、同一命令が３０個のアトムを用いて符号化可能で、８サイクルのサイクル精度で、同じ命令が２６個のアトムを用いて符号化可能である。
【００７６】
先に述べたように、一旦基本トレース要素がトレース・ストリーム内に含むために産出されると、それらは典型的にストリーム内に出力される必要のあるデータの量に削減するために圧縮技術の対象となる。既存のＥＴＭプロトコルはアトムのシーケンスをランレングス符号化法を用いて符号化して、出力されるトレース・データの量を圧縮する。特に、その様なトレース・データはＰヘッダとして知られるバイト・クウォンティティーで出力され、各バイトによってＷ，ＥまたはＮアトムの特定シーケンスが示される。下記の表２はこれらの符号化を示し、これは表１に示されるシーケンスに対して結果として生成されたトレースの１７バイトである。
【表２】
0005325436.tif 000003
【００７７】
現在のＥＴＭプロトコルは１または複数のＷアトムを各々のバイト（フォーマット４を除いて）に含むことに大きく依存しており、現在のシステムで要求されるように、サイクル精度が１サイクルの解像度の時には効率的であると分かっている。本発明の上記の実施例を使用する際、Ｗアトムの重みを削減するために、これらのパケットのフォーマットの再構築を考慮するのが適切であるが、これらは典型的にまれにしか出力されないからである。多くの異なる符号化技術で産出出来ることは理解されるであろうが、使用できる簡潔なフォーマットが以下の表３に示されている。
【表３】
0005325436.tif 000004
【００７８】
表１の例を考えると、その様な符号化技術は結果として８サイクルのサイクル精度では６バイトが生成され、４サイクルのサイクル精度では１０バイトが生成され、そして２サイクルのサイクル精度では１８バイトが生成される。２サイクルのサイクル精度では、生成されるバイト数は実際既存のＥＴＭプロトコルよりも大きく、そのような解像度に対しては異なる符号化を考慮した方が適切であることに注意されたい。また更に効率的なパケット技法が可能であり、また最適技法を決定するためにベンチマーク試験が使用できることは理解されよう。
【００７９】
先に述べたように、レジスタを用いて現在の処理タイミング間隔を記憶することが可能である。いくつかの実施例において、ごく僅かの値のみが特定の実現形として許されることが考えられる、例えば特定の実現形では値の８または１６のみをサポートしている。
【００８０】
選定された処理タイミング間隔に依っては、パケットの価値を、最適解を提供するものに変更することも可能である。例えば、表３に記述されている新たなフォーマットは解像度が８または１６の場合に使用されるが、より低い解像度に対しては異なるパック技法を選択できる。
【００８１】
本発明の実施例の技術はトレース応用分野において、一般的な適用性を有するが、これらは複雑なトレース対象装置、例えば順不同命令実行を実施する複雑なプロセッサに関連して使用される場合、またはデータ・アドレスおよび値が命令ストリームとの関係において完全な順番になっていない場合、に特に有用となる。これらの状況において、命令ストリームは情報を再順序化出来るようにバッファリングされる（順に並んだ命令は順不同命令よりも更に効率的かつ容易に圧縮できるからである）。これらの状況下において、バッファリングは命令の詳細な実行に関するサイクル情報の全てを保持するのでは無いので、従って単一サイクル精度は命令の実行を詳細に示すものではない。しかしながら、本発明の実施例の上記の技術を使用することにより、トレースの分析解明能力を維持しながら、大きなオーバーヘッドおよび単一サイクル精度で得られる情報を誤る可能性を伴うことなく、サイクル精度を制御することが可能である。
【００８２】
本発明の技術はまた、多重のトレース・ストリームの相関を取る必要のあるシステムに関連して有効に適用することができる。多重トレース・ストリームはトレース対象である異なる処理装置に関係するか、またはそれに対して個別のストリームが産出されるトレース、例えば命令トレースおよびデータ・トレース、の異なる部分に関係する。共通に譲渡されている米国特許第７，０６９，１７６号に記載されているような、チップワイド（ｃｈｉｐ−ｗｉｄｅ）タイムスタンプ機構を、これらの多重トレース・ストリームの相関をとる、例えば多重クロック領域内の多重プロセッサからの多重トレース・ストリームの相関をとるために使用することが可能である。しかしながら、この相関はこの情報を出力することのオーバーヘッド負担があるため、１０００サイクルまたはそれ以上の頻度でのみ生じると思われる。しかしながら、その様な技術が本発明の実施例の上記の技術と組み合わされるとき、トレース分析ツールは１０００サイクルのウィンドウを分割して、プロセッサ間の相関のより細かいレベルを得ることが出来る。これは種々の状況において非常に重要である。例えば、共有メモリシステム内の２つのプロセッサが同時にメモリ集中タスクを実施する場合の、性能モニタリングを実施する際に、その様な相関はこの問題の可視化を可能とし、プログラマがバス衝突を回避するようにコードの修正をできるようにする。別の例として、共有メモリのデバッグを行うとき、分析ツールの使用者は共有メモリシステムがどのようにアクセスされるかを見ることが可能であり、特に本発明の実施例の技術でサポートされた相関のより細かなレベルは、読み取り／書き込み障害およびメモリ・コラプション（ｃｏｒｒｕｐｔｉｏｎ）のデバッグを可能とする。
【００８３】
先の説明から明らかなように、多くの異なる方法でトレース・ストリームに含まれるトレース・タイミング標識を生成することができる。以下の本文は使用できる一連の実現例を提供している。以下の例において、選択された処理タイミング間隔を構成する予め定められた複数のクロック・サイクルは８クロック・サイクルであり（例外は例５番であり、此処ではタイミング間隔は途中で変更されている）、従ってトレース内の各Ｗアトムは８サイクル（１トレース・タイミング間隔）が経過したことを示している。
【００８４】
例１ａ
表４はこの例を図示する。この例において、事象ＡおよびＢは関心ある事象であり、サイクル計数は関心ある事象の時点でリセットされる。
【表４】
0005325436.tif 000005
【００８５】
事象ＡとＢとの間に１６から２４のサイクルが経過している。
【００８６】
例１ｂ：
以下の表５はこの例を図示する。この例において、サイクル計数は関心ある事象ではリセットされない。
【表５】
0005325436.tif 000006
【００８７】
事象ＡとＢとの間に１６から３２のサイクルが経過している。これは例１ａよりも各関心ある事象において大きな誤差を有するが、しかしこれは真の拍動である。
【００８８】
例２：
以下の表６はこの例を図示する。各々の関心ある事象は最後の標識からのサイクル数を参照するサイクル計数を含む。サイクル計数ＩＳは関心ある事象でリセットされる（これは図５上のオプション経路である）。
【表６】
0005325436.tif 000007
【００８９】
事象Ａはサイクル０の後４サイクルで生じている。事象Ｂは事象Ａの後２２サイクル（（２＊８）＋６）で生じる。
【００９０】
例３：
下記の表７はこの例を図示する。間隔計数は関心ある事象でグループ化される。サイクル計数は各々の関心ある事象でリセットされる。
【表７】
0005325436.tif 000008
【００９１】
事象ＡとＢの間には１６から２４のサイクルが存在する。
【００９２】
例４：
下記の表８はこの例を図示する。間隔計数は関心ある事象でグループ化され、サイクル計数は最後の標識からのサイクル数を表示しながら出力される。
【表８】
0005325436.tif 000009
【００９３】
事象Ａにおいて、標識をサイクル０に置き換えた最後の標識から４サイクル経過している。サイクル計数器はサイクル４でリセットされている。事象Ｂにおいて、２２サイクル（（２＊８）＋６）が経過しており、従って事象Ｂはサイクル２６で生じる。
【００９４】
例５：
下記の表９はこの例を図示する。間隔計数は関心ある事象でグループ化されている。最後の標識から経過したサイクルを表示する、追加計数が関心ある事象において出力される。サイクル計数は各々の関心ある事象においてリセットされる。
【表９】
0005325436.tif 000010
【００９５】
事象Ａにおいて、標識をサイクル０に置き換えた最後の標識から４サイクル経過している。サイクル計数器はサイクル４でリセットされている。事象Ｂにおいて、２２サイクル（（２＊８）＋６）が経過しており、従って事象Ｂはサイクル２６で生じる。事象Ｂはタイミング間隔のサイズを８から３２サイクルに変更させ、これはトレース・ストリームの中に表示されている。事象Ｃは事象Ｂの後１２４サイクル（（３＊３２）＋２８）である。
【００９６】
例６：
下記の表１０はこの例を図示する。間隔計数は関心ある事象においてグループ化される。このグループ化は関心ある事象の２つ目毎でのみ行われ、これは関心ある事象を１つ置きにのみ効果的にクラス分けすると見なせる。最後の標識から経過したサイクルを表示する、追加計数が関心ある事象において出力される。サイクル計数は各々の関心ある事象においてリセットされる。
【表１０】
0005325436.tif 000011
【００９７】
事象Ａにおいて、標識をサイクル０に置き換えた最後の標識から４サイクル経過している。サイクル計数器はサイクル４でリセットされている。事象Ｂにおいて、事象Ｂのみがトレースされる。事象Ｃは事象Ａの後１４６サイクル（（１８＊８）＋２）である。
【００９８】
例７：
下記の表１１はこの例を図示する。間隔計数は関心ある事象でグループ化され、最後の標識からのサイクル数を表示するサイクル計数が出力される。サイクル計数は各関心ある事象でリセットされる。事象間の命令は命令毎１サイクルを含む。
【表１１】
0005325436.tif 000012
【００９９】
事象Ｂは事象Ａの後２２サイクル（１１＋８＋３）で生じる。
【０１００】
先の説明から、本発明の実施例はサイクル精度でのトレースで必要とされるトレース・データの量を減らし、加えて使用者にトレース・データ効率に対するトレードオフとして、サイクル精度の粒度（ｇｒａｎｕｌａｒｉｔｙ）を決定する能力を与えることが理解されよう。本発明の実施例の技術はまた、低レベルのサイクル精度で良いとされる場合には、トレース・ストリームを更に効率的に圧縮可能とする一方で、使用者に対してトレース・データ帯域幅を犠牲として所望の粒度を増やすことを可能とする。最終的に必要なトレース・データ帯域幅を低くすることにより、これは素子上で必要とされるピンの数を少なくできる。本発明の実施例の構造化可能性は、サイクル精度粒度に対する制御を提供し、通常のトレース・ストリームを出力できるようにするためにバッファリングを必要とし、単一サイクル精度がプロセッサ動作を完全には表していない、更に高度なプロセッサに対して更に適切なサイクル精度機構の選択を可能とする。本発明の実施例の技術はまた、多重トレース・ソース間での効果的な相関を、単一サイクル精度で必要とされる大きな帯域幅を伴わずに可能とする。
【０１０１】
此処に特定の実施例を説明してきたが、本発明はこれに限定されるものではなく、多くの修正変更およびそれに対する追加が本発明の範囲内で可能なことは理解されよう。例えば、添付の特許請求項の特徴を種々に組み合わせて、本発明の範囲から逸脱することなく独立した特許請求項の機能を作ることが出来るであろう。
【図面の簡単な説明】
【０１０２】
【図１】図１は本発明の１つの実施例に基づくデータ処理システムのブロック図。
【図２】図２は１つの実施例に基づく図１のブロック図の１例を図示するブロック図。
【図３】図３は１つの実施例に基づく図１のオンチップ・トレース・モジュールを更に詳細に図示するブロック図。
【図４】図４は１つの実施例に基づく図１のトレース分析器を更に詳細に図示するブロック図。
【図５】図５は１つの実施例に基づく図１のオンチップ・トレース・モジュール内で、トレース・ストリームに含まれるタイミング標識を産出するために実行されるステップのシーケンスを図示する流れ図。
【図６】図６は別の実施例に基づく図１のオンチップ・トレース・モジュール内で、トレース・ストリームに含まれるタイミング標識を産出するために実行されるステップのシーケンスを図示する流れ図。
【図７】図７は別の実施例に基づく図５または図６のプロセス内に組み込むことの出来るステップの特定シーケンスを示す流れ図。
【図８】図８は本発明の１つの実施例に基づく、図５または図６のプロセス内に含まれるステップの１つのシーケンスを示す流れ図。
【符号の説明】
【０１０３】
１０  ロジック
１５  バス
２０  トレース・ロジック
３０  トレース・バッファ
４０  トレース分析器
１００  同期ロジック
１０５  接続
１１０  制御ロジック
１２０  トレース生成器
１３０  ＦＩＦＯ
１４０  制御レジスタ
２００  分析ツール
２１０  トレース拡張ロジック
２２０  レジスタ
【図１】
0005325436.tif 000013
【図２】
0005325436.tif 000014
【図３】
0005325436.tif 000015
【図４】
0005325436.tif 000016
【図５】
0005325436.tif 000017
【図６】
0005325436.tif 000018
【図７】
0005325436.tif 000019
【図８】
0005325436.tif 000020