説明

データ処理装置用トレース・ストリームの生成技術

【課題】有限な帯域幅、トレース要素がバッファされる全てのトレース・バッファの有限サイズの更に効率的な使用を可能とするデータ処理装置の特定ロジックの活動を示すトレース要素を含むデータ処理装置用トレース・ストリーム生成技術を提供する。
【解決手段】データ要素を産出するロジックと、少なくともいくつかのデータ要素を表すトレース要素のストリームを産出するためのトレース・ロジックとを含み、トレース・ロジックはトレース・タイミング標識をストリーム内に含めるように構成されていて、各々のトレース・タイミング標識が予め定められた複数のクロック・サイクルである1つまたは複数の処理タイミング間隔を表示することで、単一サイクル精度レベルの分析をより少ない数のトレース要素で実現する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はデータ処理装置の特定ロジックの活動を示すトレース要素を含む、データ処理装置用トレース・ストリームの生成技術に関する。
【背景技術】
【0002】
システム内のステップ毎の動きを表すデータを含むトレース要素のストリームが生成されるデータ処理装置の動きをトレースすることはシステム開発に於いて高度に有用なツールである。しかしながら、プロセッサ・コアの中に更に深く組み込まれていく一般的な傾向に伴い、プロセッサ・コアまたはその他のオンチップ素子の動きを、外部接続可能ピンを介して追跡することは更に難しくなっている。従って、トレース・データを捕捉し分析するためのチップ外トレース機構と同様、より多くのトレース機能がオンチップ上に配置されるようになっている。その様なオンチップトレース機構の一例は、ARM株式会社、ケンブリッジ、英国(ARM Limited,Cambridge,England)から、種々のARMプロセッサと関連して提供される、組み込み型トレース・マクロセル(ETM : Embedded Trace Macrocell)である。
【0003】
この様なトレース機構は、トレースされることを所望されるデータ処理装置の動きを表すトレース要素のストリームを実時間で産出する。このトレース・ストリームは従って後で種々の目的に対して分析することが可能であり、例えばデータ処理装置で実行される処理命令のシーケンスのデバッグを容易にするためであったり、データ処理装置上で実行される特定プログラム・コードの性能を判定するための解明操作を実行するためなどである。
【0004】
典型的に、トレース機構で生成されたトレース要素のストリームは事後分析用に出力される前にバッファリングされる。その様なトレース・バッファは有限量の情報を格納することが可能であり、それを介してバッファリングされる要素を受け取ることが可能な、有限帯域幅を有する専用データ・バスを必要とする。このトレース・バッファは一般的にラップアラウンド方式で情報を格納するように構成されており、すなわち一度バッファが一杯になると、新たなデータは通常、その中に格納されている最も古いデータに上書きするように構成されている。専用データ・バスの帯域幅が、情報がトレース・バッフア内に格納される速度を制限することが分かっている。
【0005】
典型的にトレース分析ツールが具備されており、これは所望の時点で、例えば一度トレースが完了すると、トレース・バッフアからトレース要素を受け取る。トレース分析ツールはその受け取ったトレース要素に基づいてトレース対象装置の動きを再構築するために使用できる。プロセッサ・コアの様な装置の性能及び複雑さが増大するに伴い、その様な装置の動作を追跡するために必要な情報量が増加するであろう事は明白であり、従ってトレースされる必要のあるトレース要素が潜在的に非常に膨大な量になるはずである。
【0006】
しかしながら、有限バス帯域幅の問題があってその上をトレース要素がトレース・ロジックから出力されており、またその様なトレース要素をバッファリングするために使用される全てのトレース・バッファは有限の大きさを持つ。従って、生成可能なトレース要素の量は制限される。
【0007】
トレースされる必要のある装置の動きには、これに限定されるわけではないが、プロセッサ・コアで実行される命令(命令トレースと呼ばれる)、それらの命令により行われるメモリ・アクセス(データ・トレースと呼ばれる)が含まれる。これらの動きは個別にトレースされるかまたは一緒にトレースされ、データ・トレースを命令トレースと相関を取ることができる。データ・トレース自身は2つの部分、メモリ・アドレスとデータ値とからなり、(それぞれ)データ・アドレスおよびデータ値トレースと呼ばれる。この場合も、既存のトレースETMプロトコルはデータ・アドレスおよびデータ値トレースを独立にまたは同時に行うことを許している。
【0008】
経験的に既存のプロセッサ・コアおよびETMに対して、1命令当たり2ビット未満のビット・レートが命令トレースのみに関して実現されている。しかしながら、上記の問題を明らかにするためには、1命令当たりおよそ10から16ビットのビット・レートが命令およびデータ・アドレス・トレース用に実施されている。従って、サイクル当たり1命令の実行に約1GHzの実行速度を有するプロセッサは、約10から16Gビット/秒のトレース・データを生成し、その全てがオフチップで採集されて固定サイズのバッファにキャプチャされなければならない。命令とデータ・アクセスのトレースに加えて、特定クラスの問題はデータ値トレースを実行することを要求するので、これは1命令当たり20ビットを超えるトレース・データの生成を必要とし、トレース・データの量を更に増加させる。トータルで、データ・トレースの2つの要素、すなわちデータ・アドレス・トレースとデータ値トレースは生成されるトレース要素の全量のほとんどの部分に寄与する。
【0009】
現行のETMロジックはまた、動作の1サイクル精密モードを提供するように構成することも可能であり、その中では各クロック・サイクルを示すための更なる情報がトレース・ストリーム内に含まれていて、例えばそのトレース・ストリーム内のトレース要素を次に分析する際に、そのトレース対象機器内で、その関連する動作が生じるクロック・サイクルの表示を決定することが可能である。その様な動作のサイクル精密モードは多くの場面で有用で有ろうが、これは生成するトレース・データ量を膨大に増大させ、命令トレース、データ・トレースまたはその両者の組み合わせに関わりなく実行される。生成されるトレース・データの量が既に非常に大きな状況では、サイクル精密トレースを実行する結果による余分な量の増加は、その上にトレース要素がトレース・ロジックから出力されるバスの帯域幅が有限であること、およびその様なトレース要素をバッファリングするために使用されるトレース・バッファのサイズが有限であることを考慮すると、重大な問題を生じ得る。
【発明の概要】
【発明が解決しようとする課題】
【0010】
従って、その上をトレース要素が出力される有限バス帯域幅、その中にトレース要素がバッファされる全てのトレース・バッファの有限サイズの更に効率的な使用を可能とするような、トレース要素を生成するための改善された技術を提供することが望ましい。
【課題を解決するための手段】
【0011】
第1の特徴として、本発明はデータ処理装置を提供しており、これは:データ要素を生成するように動作可能なロジック;前記データ要素の少なくともいくつかを表すトレース要素の1つのストリームを生成するように動作可能で、前記ストリームに含まれるトレース要素を生成するように動作可能なトレース生成ロジックを有し、該トレース生成ロジックが更に前記ストリーム内に含まれるトレース・タイミング標識を生成するように動作可能であり、各トレース・タイミング標識が1つまたは複数の処理タイミング間隔の経過を表示し、前記処理タイミング間隔が予め定められた複数のクロック・サイクルである、トレース・ロジックを含む。
【0012】
本発明によれば、トレース生成ロジックはストリームに含まれるトレース・タイミング標識を生成するように構成され、各トレース・タイミング標識は1つまたは複数の処理タイミング間隔の経過を表示し、この処理タイミング間隔はクロック・サイクルによって予め決定されている。従来、サイクル精密トレースは全てのクロック・サイクルを識別する事に関係し、従って生成されたトレース・ストリーム内で単一サイクル・レベルの情報を含んでいる。しかしながら本発明の発明者は、その動作がトレース対象となるロジックが更に複雑になるに伴い、各々時間経過したクロック・サイクルを表すトレース・ストリーム内に含まれる情報が、期待されるほどには正確で無くなり、誤った判断に導く状況が起こり得ることを認識している。一例としてその動作がトレースされるロジックがプロセッサ・コアの場合を考えると、最新のプロセッサ・コアは更に複雑になって来ており、例えば命令およびデータ転送の実行を順不同にサポートしている。その様なプロセッサ・コアに対して、トレース・ロジック内でのバッファリングは、しばしば命令およびデータ転送データをその情報が有効な形で出力される時点まで保持している必要がある。特に、全ての命令を並べ替えることはしばしば有効であり、それは例えば順序に従った命令の圧縮は順不同の場合より更に効果的で容易だからである。その様な状況では、バッファリングはそれらの命令の詳細な実行に関連する全てのサイクル情報を保持するのではなく、従って単一サイクルの精度は命令の実行を正確に示すものではない。
【0013】
この実現形態に基づき、本発明の発明者はトレース・データ量のかなりな削減が、処理タイミング間隔を予め定められた複数のクロック・サイクルとして設定し、次にトレース・タイミング標識をトレース・ストリーム内に、1つまたは複数のこれらの処理タイミング間隔の経過を表すように含めることで実現できると判断した。その結果として、これはトレースされるのに必要な情報量を減らすが、その動作がトレースされるロジックの複雑な性質に関して十分なサイクル精度のレベルを提供することが分かった。
【0014】
トレース・ストリーム内に含まれる個々のトレース要素が、そのストリームが生成される前に1つまたは複数の圧縮技術の対象となる場合がしばしば有る。処理タイミング間隔が予め定められた複数のクロック・サイクルであるような、1つまたは複数の処理タイミング間隔の経過を表示するようにトレース・タイミング標識が生成される技術を採用する場合、これはトレースされる情報の量を削減するのみならず、或る状況ではまた圧縮の改善にもなり、従ってトレース要素のストリームを生成する際に消費される帯域幅を更に削減する。
【0015】
トレース・ロジックで受け取られるデータ要素は、そこから生成されるトレース要素の所望のストリームに対して十分な情報を与えるのであれば、種々の形式を取りうる。更に、データ要素はロジック(此処ではまた、トレース対象機器と呼ぶ)からトレース・ロジックへ伝送されるか、またはそれに代わって、トレース・ロジックによりトレース対象機器から受け取られる。一例として、データ要素は命令アドレス値、データ・アドレス値、またはデータ値を含む。トレース生成ロジックで生成されたトレース要素は従って、典型的にこれらのデータ要素が後ほどそのトレース・ストリームを分析するトレース分析ロジックにより判定されるのに十分な情報を含むように構成される。
【0016】
一つの実施例において、トレース生成ロジックには所定の1つまたは複数の事象を識別する制御情報が具備されている。関心ある事象は種々の形式を取りうる。例えば、その様な事象はトレースされるロジックで実行されるコードに含まれる特定の命令、例えば分岐命令に関連する。その様な状況では、そのロジックから受け取られたデータ要素が分岐命令の実行を示す場合、これは関心ある事象と特定される。典型的に、その様な状況では1つのトレース要素がその関心ある事象を表すストリーム内に含まれるはずである。しかしながら、全ての関心ある事象がトレース・ストリーム内にトレース要素を存在させるようにする必要が有るわけで無いことは注意されたい。例えば、関心ある事象がトレース・ロジック内で内部的に生じる特定事象であるかも知れないし、または実際トレース・ロジックに通知される外部事象の場合もあり、これはそれ自身トレース要素の生成を必要とはしない。いくつかの例は、関心ある事象が他の関心ある事象の発生を伴わない特定回数のクロック・サイクルの経過、プロセッサのクロック速度の変更、または別のプロセッサが状態を変化させたか、または特定の命令を実行したことの表示などが考えられる。
【0017】
トレース生成ロジックは種々の方法で関心ある事象を検知するように構成することが可能である。例えば、1つの実施例において、その様な事象を事実上トレース生成ロジックの中にハード結線して、その関心ある事象が予め決定されるようにすることが可能である。しかしながら、これに代わって、その様な関心ある事象を外部ソースからプログラムし、従って例えばトレース・ロジックの1つまたは複数の制御レジスタの中に適切なソースから、例えばトレース・ロジックにより生成されたトレース要素のストリームを後ほど分析するはずのトレース分析ツールから、プログラムする場合もある。
【0018】
処理タイミング間隔を構成する予め定められた複数のクロック・サイクルを固定することは可能であるが、その処理タイミング間隔を構成可能のように構成する場合、更に大きな利益が生じる。その様な実施例において、データ処理装置は更に現在の処理タイミング間隔を保持するための記憶装置を含み、トレース生成ロジックは何時各々のトレース・タイミング標識を生成するかを決定するために、その記憶装置を参照するように動作可能である。1つの実施例において、その記憶装置はトレース・ロジック自身の内部に具備されており、その中に記憶されている現在の処理タイミング間隔は種々の方法で設定される。例えば、1つの実施例において、その記憶装置はトレース・ロジック内部の多数の制御レジスタの1つとして具備されており、現在の処理タイミング間隔を構成するために外部ソースから設定される。例えば、トレース分析ツールは典型的にトレース・ロジックで生成されたトレース要素のストリームを分析するように構成されている。その様な実施例において、トレース分析ツールは使用される現在の処理タイミング間隔を構築するように構成されており、この間隔はそのトレース分析ツールの使用者によって適切と認められた際に、トレース分析ツールによって再プログラムされる。
【0019】
別の実施例において、トレース生成ロジックは1つまたは複数の予め定められた事象の発生に応答して、処理タイミング間隔を変更するように動作可能である。
【0020】
トレース生成ロジックに処理タイミング間隔を変更させる予め定められた事象とは、種々の形式を取りうる。しかしながら1つの実施例において、ロジックにより生成されたデータ要素はそのロジックで実行されるプログラム・コードを示し、トレース生成ロジックは異なるコード部分に関して生成されたトレース要素に対して使用される異なる処理タイミング間隔を特定するようにプログラムされた1つまたは複数の制御レジスタを有し、このトレース生成ロジックは前記処理タイミング間隔を、どのコード部分のトレース要素に関して生成されたかに応じて変更するように動作可能である。従ってその様なやり方は、処理タイミング間隔をトレース・ストリームの生成中にトレース対象の動作に応じてダイナミックに変更することを可能とする。ひとつの例として、アプリケーション・コードに対しては高レベルのタイミング精度が必要であるが、ライブラリ・コードに関してはおよその経過時間のみが必要であると判断できる。従って制御レジスタ内の情報を、アプリケーション・コードがトレースされているのかまたはライブラリ・コードがトレースされているのかに依存して整合するように、異なるアドレス比較器となるように再プログラムすることが可能である。アプリケーション・コードがトレースされる際には常に、より短い処理タイミング間隔が使用され、ライブラリ・コードがトレースされる際には常に、より長い処理タイミング間隔が使用される。
【0021】
処理タイミング間隔はまた外部事象、例えば割り込み、によっても変更される場合がある。例えば、通常アプリケーション・コードを分析する際、必要とされるのは低レベルのタイミング精度であろうが、割り込み処理ルーチンを分析する際には、高度なタイミング精度が要求されるのがより典型的である。従って、割り込みの発生は処理タイミング間隔をより高い精度を与えるように変更するようにうながし、割り込み処理が完了すると処理タイミング間隔は低精度を与えるように元に戻るべきである。
【0022】
1つまたは複数の予め定められた事象の発生に応答して、トレース生成ロジックが処理タイミング間隔をどのように変更するかを示す別の例は、トレース生成ロジックに1つまたは複数の関心ある事象を識別する制御情報が具備されている場合、前記関心ある事象の発生頻度の分析に基づいて前記処理タイミング間隔を変更する。従って、その様な実施例において、予め定められた事象はそのトレース生成ロジックで実行される分析であり、これは現在の処理タイミング間隔を調整するように働く。例えば、トレース・ストリームの以前に生成された部分に基づき、トレース生成ロジックがその関心ある事象が20クロック・サイクル毎にのみ発生すると判定し、一方現在の処理タイミング間隔が4サイクルに設定されている場合、現在の処理タイミング間隔を、例えば16クロック・サイクルに増やすことが適切であると判断される。
【0023】
1つの実施例において、処理タイミング間隔が変更された場合、トレース生成ロジックはストリーム内にその変更を示すタイミング変更標識を含むように動作可能である。従って、その様なやり方において、後ほどトレース・ストリームを分析するトレース分析ツールは処理タイミング間隔の変更を識別することが出来る。いくつかの実施例において、特にトレース分析ツールが処理タイミング間隔を変更するたった1つのエンティティー(entity)のみである場合、その様なタイミング変更標識をトレース・ストリームの中に挿入する必要は無い。
【0024】
多くの方法で、トレース生成ロジックがトレース・タイミング標識を出力するように構成出来る。1つの実施例において、トレース生成ロジックは前記トレース・タイミング標識を前記トレース・ストリーム内に各処理タイミング間隔の後に出力するように動作可能である。従って、その様な実施例において、全ての個々の処理タイミング間隔内でトレースされている動作に関係なく、トレース・タイミング標識は常に各々のその様な処理タイミング間隔の後で生成され、従ってトレース・ストリーム生成中に一定の間隔で繰り返される。
【0025】
トレース・タイミング標識は種々の形式を取りうる。例えば、1つの実施例において、最新のトレース・タイミング標識が生成されてから経過した、1つまたは複数の処理タイミング間隔を識別するように構成できる。先に述べた、トレース・タイミング標識が各処理タイミング間隔の後に出力される実施例において、その様な実施例ではトレース・タイミング標識が単に単一ビット値を取り、1つの処理タイミング間隔が、最新のトレース・タイミング標識の出力から経過したことを識別できることが理解されよう。その様なトレース・タイミング標識の形式により、そのトレース・ストリームを後で分析するトレース分析器は、そのトレース・タイミング標識が生成された時点で適用可能であった処理タイミング間隔を知る必要があることが理解されよう。
【0026】
別の実施例において、トレース・タイミング標識は予め定められた複数のクロック・サイクルの数を表示する。従って、その様な実施例において、処理タイミング間隔が現在4クロック・サイクルに設定されていて、トレース・タイミング標識が各処理タイミング間隔の後に生成される場合、各トレース・タイミング標識は4番を識別する。これは余り効率的ではない符号化であるが、任意の時点で使用されている処理タイミング間隔を、トレース分析ツールが知る必要を無くす。
【0027】
1つの実施例において、トレース生成ロジックは1つまたは複数の関心ある事象を識別する制御情報を具備し、その処理タイミング間隔の間に関心ある事象が発生しなかった場合には、トレース・タイミング標識の出力を抑制するように動作可能である。従って、その様な実施例において、トレース・ストリーム内で「静かな期間」中はトレース・タイミング標識の個々の発生を抑制することにより、更なる効率が実現できる。
【0028】
その様な1つの実施例において、トレース生成ロジックは関心ある事象が発生した際の前回のトレース・タイミング標識の出力からの経過した、処理タイミング間隔の数を示すトレース・タイミング標識を出力するように動作可能である。従って、その様な実施例において、特定の処理タイミング間隔中に関心ある事象が発生しない場合、個々のトレース・タイミング標識は抑制されるが、後で関心ある事象が発生した際にはトレース・タイミング標識は先のトレース・タイミング標識の出力から経過した処理タイミング間隔の個数を示す出力である。従って、一例として現在の処理タイミング間隔が4サイクルに設定されており、そして前トレース・タイミング標識が生成されてから、最後のトレース・タイミング標識に続いて関心ある事象が最初に発生するまでの間に10サイクル経過した場合、トレース・タイミング標識はその関心ある事象が発生した時点で、2処理タイミング間隔(すなわち8サイクル)が前トレース・タイミング標識の出力から経過したことを示しながら生成される。これは関心ある事象の正確なタイミングは与えないが、指定された4サイクルレベルでは正確なタイミングを提供し、また全ての不要なトレース・タイミング標識の生成を回避することで非常に効率的なやり方でタイミング標識を生成する。
【0029】
別の実施例において、トレース生成ロジックは多数の関心ある事象が発生するまでトレース・タイミング標識の出力を抑制し、前トレース・タイミング標識の出力から経過した処理タイミング間隔の数を示すトレース・タイミング標識を出力するように動作可能である。これは更にトレース・タイミング標識がトレース・ストリーム内に生成される必要のある頻度を削減することが出来る。
【0030】
トレース・タイミング標識間の関心ある事象の数は、1つの実施例の中では予め定められている。しかしながら、別の実施例において、関心ある事象の数はトレース・ロジック内の圧縮ロジックによりダイナミックに決定される。一例として、トレース・プロトコルは関心ある事象の複数の標識を単一トレース・パケットの中に圧縮し、1トレース・タイミング標識のみを出力する。使用される圧縮アルゴリズムに基づき、これは可変個数の関心ある事象が単一トレース・パックの中に挿入されることを意味する。
【0031】
1つの実施例において、トレース生成ロジックは1つまたは複数の関心ある事象を識別する制御情報を具備し、更に前記関心ある事象の1つが発生すると、前トレース・タイミング標識から経過したクロック・サイクルの数を示す、追加のトレース・タイミング標識を出力するように動作可能である。従って、その様な実施例において、関心ある事象が発生した時点でトレース・タイミング標識が生成されたか否かには関わらず、前トレース・タイミング標識から経過したサイクル数を示す現在クロック計数を示す、追加のトレース・タイミング標識が出力可能である。関心ある事象が最後のトレース・タイミング標識の10サイクル後で発生する先の例を考慮すると、その様な実施例は関心ある事象が発生すると、2処理タイミング間隔(すなわち8サイクル)を示すトレース・タイミング標識と、2サイクルを示す追加のトレース・タイミング標識を出力するように構成されており、これによって特定の関心ある事象に関して単一サイクル精度を提供する。
【0032】
1つの実施例において、トレース生成ロジックはトレース・ストリームがそのトレース生成ユニットが利用可能な帯域幅を超えることを防止するように、処理タイミング間隔を変更するように動作可能である。従って、その様な実施例において、トレース・ロジックは利用可能帯域幅を考慮して、処理タイミング間隔をダイナミックに変更できる。これは時間間隔に対して与えられるサイクル精度を大きく低下させることを求めるが、これは一度利用可能帯域幅を超過すると、一部のトレース・データが失われる状況にある典型的な従来技術システムよりも一般的に更に有益である。
【0033】
1つの実施例において、特定のトレース要素が特定数のクロック・サイクルを含むように構成できる。例えば、1命令の実行を識別するトレース要素は1クロック・サイクルを含む。1つのその様な実施例において、トレース生成ロジックは、処理タイミング間隔内のクロック・サイクルの数の経過が、前記処理タイミング間隔中に前記ストリーム内に出力された前記トレース要素から導出される際に、前記処理タイミング間隔を前記クロック・サイクルの数だけ延長し、トレース・タイミング標識が後でストリーム内に含まれる際に、前トレース・タイミング標識が出力されてから経過したクロック・サイクルの総数が、トレース・タイミング標識で示される処理タイミング間隔の数から、前記トレース要素から導出可能なクロック・サイクルの前記数と組み合わせて導出出来るように動作可能である。これは更にトレース・ストリーム内で生成される必要のあるタイミング情報の量を削減することにより、システムの効率を改善する。
【0034】
1つの実施例において、1つの特定トレース要素で推測されるクロック・サイクルの数は予め定められている場合がある。しかしながら、これに代わる実施例において、トレース生成ロジックは1つまたは複数の型式のトレース要素に対して、その型式のトレース要素で推測されるクロック・サイクルの数を識別するようにプログラムされた1つまたは複数の制御レジスタを有し、このトレース生成ロジックは、前記処理タイミング間隔を延長するための前記クロック・サイクル数を決定する際に、前記1つまたは複数の制御レジスタを参照するように動作可能である。その様な制御レジスタは例えば、特定トレース要素を受け取った時点で推定するクロック・サイクルの数を識別するために、トレース分析ツールでプログラムされる。
【0035】
第2の特徴から見ると、本発明はデータ処理装置のロジックで作られた少なくともいくつかのデータ要素を表す、トレース要素のストリームを生成するためのトレース・ロジックを提供しており、該トレース・ロジックは:前記ストリームに含まれるトレース要素を生成するように動作可能なトレース要素生成ロジックと;前記ストリームに含まれ、各々が予め定められた複数のクロック・サイクルである、1つまたは複数の処理タイミング間隔の経過を表示する、トレース・タイミング標識を生成するように動作可能なタイミング表示ロジックを含む。
【0036】
第3の特徴から見ると、本発明は本発明の第1の特徴に基づくデータ処理装置で生成されたトレース要素のストリームを分析するためのトレース分析装置を提供しており、これは:現在の処理タイミング間隔を記憶するための記憶装置;前記ストリーム内に挿入されるクロック・サイクル計数値を決定するために、前記現在の処理タイミング間隔を参照するように前記ストリーム内のトレース・タイミング標識を受け取ると動作可能なトレース拡張ロジックとを含む。
【0037】
第4の特徴から見ると、本発明はデータ処理システムの動作方法を提供しており、これは:データ要素を産出し;該データ要素の表示を受け取り、前記データ要素の少なくともいくつかを表すトレース要素のストリームを産出するトレース・ロジックを採用し;前記ストリームに含まれ、各々が予め定められた複数のクロック・サイクルである、1つまたは複数の処理タイミング間隔の経過を表示する、トレース・タイミング標識を生成する、以上のステップを含む。
【0038】
第5の特徴から見ると、本発明は本発明の第4の方法で生成されたトレース要素のストリームをコンピュータに分析させるコンピュータ・プログラムを含むコンピュータ・プログラム製品を提供し、これは:現在の処理タイミング間隔を記憶し;前記ストリーム内のトレース・タイミング標識を受け取ると、前記ストリーム内に挿入されるクロック・サイクル値を決定するために前記現在の処理タイミング間隔を参照するステップを実行する。
本発明を添付図に図示された、いくつかの実施例を例としてのみ参照して更に説明する。
【図面の簡単な説明】
【0039】
【図1】図1は本発明の1つの実施例に基づくデータ処理システムのブロック図。
【図2】図2は1つの実施例に基づく図1のブロック図の1例を図示するブロック図。
【図3】図3は1つの実施例に基づく図1のオンチップ・トレース・モジュールを更に詳細に図示するブロック図。
【図4】図4は1つの実施例に基づく図1のトレース分析器を更に詳細に図示するブロック図。
【図5】図5は1つの実施例に基づく図1のオンチップ・トレース・モジュール内で、トレース・ストリームに含まれるタイミング標識を産出するために実行されるステップのシーケンスを図示する流れ図。
【図6】図6は別の実施例に基づく図1のオンチップ・トレース・モジュール内で、トレース・ストリームに含まれるタイミング標識を産出するために実行されるステップのシーケンスを図示する流れ図。
【図7】図7は別の実施例に基づく図5または図6のプロセス内に組み込むことの出来るステップの特定シーケンスを示す流れ図。
【図8】図8は本発明の1つの実施例に基づく、図5または図6のプロセス内に含まれるステップの1つのシーケンスを示す流れ図。
【発明を実施するための形態】
【実施例】
【0040】
図1はロジック10、トレース・モジュール20、トレース・バッファ30およびトレース分析器40を提供するデータ処理装置システムを図式的に示す。図1はトレース・バッファ30を提供するデータ処理システムを図示しているが、別の実施例において、トレース・モジュール20はその出力をトレース分析器40に直接、トレース・バッファを介さずに送る場合がある。
【0041】
トレース・モジュール20で受け取られるデータ要素のストリームを産出するロジック10は種々の形式を取ることが可能であり、例えばプロセッサ・コア、直接メモリ・アクセス(DMA)エンジン、データ・エンジン/アクセラレータ等である。これに代わって、ロジック10はバスで接続された複数の装置で構成されることが可能であり、データ要素はそれらがバスの上を通る際にトレース・モジュール20でモニタされる。
【0042】
1つの実施例において、適切なソフトウェアを走らせる汎用コンピュータで形成されている、トレース分析器40がトレース・モジュール20とトレース・バッファ30に接続されている。典型的にオンチップで実現されているトレース・モジュール20は、データ要素をロジック10から受け取り、それに基づいてトレース要素のストリームを産出し、トレース・バッファ30(これはオンチップまたはオフチップで提供さける)に格納される。典型的にオフチップで実施されているトレース分析器40が次にトレース要素のストリームを分析するために使用されて、トレース対象ロジック10の動作を表す情報が導出される。特に、トレース要素のストリームの分析を通して、ロジック10の詳細動作が判定される。
【0043】
トレース分析器40はトレース・モジュール20に接続されており、トレース・モジュールの或る種の機能がトレース分析器の使用者によって制御出来るようにしている。加えて、いくつかの実施例において、トレース・モジュール20で産出されたトレース要素のストリームはトレース・バッファ30内にバッファリングされる代わりにトレース分析器40に直接提供される。
【0044】
図2は図1のロジック10の1例のブロック図である。この例において、ロジック10はバス15で接続された2つの装置(11,12)を含む。バスはトレース・モジュール20に接続105経由で接続されており、その上をロジックで産出されたデータ要素が通過する。
【0045】
図3は1つの実施例に基づくトレース・モジュール20のブロック図である。トレース・モジュール20は、トレース対象ロジックの状態または動作を表すデータ要素を経路105上で受け取るように構成されている。同期化(sync)ロジック100は、入力信号をトレース・モジュール20で使用するのに更に適切な内部バージョンの信号に変換するように構成されている。これらの内部バージョンは次に制御ロジック110およびトレース生成ロジック120に送られる、もっとも理解されるであろうが制御ロジック110とトレース生成ロジック120は同一信号を受け取る必要は無い。基本的に制御ロジック110はトリガ可能事象、例えば命令アドレス、データ値、レジスタ・アクセスなどに関するデータを受け取る必要があり、これによりトレースを始動させるか否か、またどの型式のデータ要素をトレースすべきかを決定できる。これは次に適切な制御信号をトレース生成ロジック120に対して発して、必要なトレース要素がトレース生成ロジック120で生成されるようにする。トレース生成ロジック120は同期ロジック100経由でトレースに必要な全てのデータを、制御ロジック110で発せられた制御信号に基づいて受け取る。
【0046】
本発明のいくつかの実施例によれば、制御レジスタ140が具備されておりこれらは制御ロジック110の動作を構成するために使用され、これらの制御レジスタ140はトレース分析器40から設定可能である。多数の制御レジスタを具備することが可能であり、これは基本的にトレース生成ロジック動作の2つの要素を指向しており、「何時」これらのトレース要素を生成するか、すなわち何時特定範囲のアドレスがアクセスされたか、また「何を」それらのトレース要素が生成するか、すなわちデータ・アドレスそして/または個々の伝送のデータ値、また典型的に伝送に関する補助情報、例えばそれが読み取りまたは書き込み操作であるか、それがロックされているか否か、安全確保(security)情報かなどである。
【0047】
制御ロジック110で発せられた制御信号で始動されて「何時(when)」条件が合致すると、トレース生成ロジック120は同期ロジック100から受け取られたデータ要素を表す要求されたトレース要素を、これもまた制御ロジックから受け取った「何(what)」信号に関連して生成する。これらの生成されたトレース要素はFIFO130に出力される。此処からトレース・ストリームが次にトレース・バッファ30に出力されるか、またはそれに代わる実施例として直接トレース分析器40に出力される。
【0048】
本発明のいくつかの実施例によれば、通常のトレース要素に加えてトレース生成ロジック120がトレース・タイミング標識を産出するように構成されており、これはそれからトレース・ストリームの中に含まれ、各トレース・タイミング標識は1つまたは複数の処理タイミング間隔の経過を表示し、ここで処理タイミング間隔は予め定められた複数のクロック・サイクルに設定される。処理タイミング間隔を任意の特定施工に固定しても良い。本発明の1つの実施例ではこれを構成可能であり、トレース生成ロジック120が各トレース・タイミング標識を生成する際に現処理タイミング間隔を参照して保持する。処理タイミング間隔を構成可能とするには多くの方法がある。1つの実施例において、これは静的に構成可能であり、例えばトレース分析器40が現処理タイミング間隔を1つの制御レジスタ140の中に設定可能にして、その値がトレース生成ロジック120で読み取られる。これに代わる実施例において、処理タイミング間隔がトレース・ストリームの生成途中にトレース生成器120によりダイナミックに構成化可能であり、1つまたは複数の予め定められた事象の発生を考慮に入れられるようにしている。例えば、ロジック10で実行される、異なるコード部分内で生成されたトレース要素用に使用される異なる処理タイミング間隔を特定制御レジスタ140内に識別するように構成される。トレース生成器120は次に、特定コード部分に対してトレース要素を生成する際に、現在トレースされているコード部分に関する適切な処理タイミング間隔を決定するために、制御レジスタ内の情報を参照するように構成されており、続いてその処理タイミング間隔に関連しているトレース・タイミング標識を生成する。
【0049】
特定のトレース対象動作が発生する際にしばしば生じることであるが、トレース分析器の使用者が特にその存在を観察したいと注目する関心ある事象が多数存在する。トレース生成器120にはその様な関心ある事象を識別する制御情報が具備されており、その様な情報は固定されているかまたはそれに代わって、例えばトレース分析器がその様な関心ある事象を1つまたは複数の制御レジスタ140を適切に設定することにより識別可能とすることでプログラム可能である。処理タイミング間隔のダイナミック構成化の別の例として、関心ある事象が識別されるその様な実施例において、トレース生成器120はその関心ある事象がトレース・ストリーム内で発生する頻度を識別するように、周期的に何らかの自己分析を実施するように構成されている。その様な関心ある事象が処理タイミング間隔が経過する周期よりも更に低い頻度で発生する場合、その様な実施例ではトレース生成器120は、それに従って処理タイミング間隔を増やすように構成されている。
【0050】
1つの実施例において、トレース生成器120が処理タイミング間隔をダイナミックに変更する際には常に、その変更を示すタイミング変更標識をストリーム内に含むように構成されていて、そのトレース・ストリームが後ほどトレース分析器40で分析される際に、その処理タイミング間隔の変更、各トレース・タイミング標識を解釈するときに考慮できるようにしている。
【0051】
トレース生成ロジックで産出されたトレース・タイミング標識および実際全てのタイミング変更標識は、トレース・ストリーム内に含まれる追加のトレース要素と考えられることは理解されよう。特に、サイクル精度が要求される場合、トレース生成器120はこれらの追加標識を通常のトレース要素に追加して産出するように構成されている。しかしながら、本発明の実施例では、処理タイミング間隔が複数のクロック・サイクルとして設定されているという事実があるため、ストリーム内に出力するためにトレース生成器で生成される情報は、単一サイクル精度を採用している従来技術システムを使用する場合より遙かに少なく、従ってトレース・ロジック20から出力可能な縮小されたトレース・ストリームを産出させることになる。更に、処理タイミング間隔が構成化可能であるという性質により、これは全てのトレース状況のなかで、命令トレース、データ・トレース、またはそれら両者の組み合わせの実行にかかわらず、精度と帯域幅のトレードオフを可能とする。
【0052】
トレース対象装置が複雑になるに伴って、単一サイクルレベルで実行するサイクル精度(従来技術システムで実行されているようなもの)が、全ての事象において命令の実行を正確に示すものでは無いという状況が見られるようになって来ている。例えば、先に述べたように、処理装置は今日しばしば順不同(out−of−order)命令実行を実現できるようになっており、命令ストリームのバッファリングがトレースに先立って行われ、情報のより良い圧縮を容易とするために再順序化出来るようにしている。その様な状況では、バッファリングはしばしばそのトレースのサイクル精度の性質が、使用者が期待している精度ではないことを意味する。本発明の実施例の中で実施されている構成化可能処理タイミング間隔を使用することにより、トレースのサイクル精度を適切と思われるまで、例えばトレース分析器の使用者によって構成することが可能であり、これによりサイクル情報のリーズナブルなレベルを保ちながらトレース帯域幅を節約する。
【0053】
更に、将来システムはマルチ・プロセッサに準拠すると思われ、此処ではそれらのプロセッサ間の相互作用をトレースする必要がある。本発明の実施例の技術を使用することにより、装置毎に必要とされるトレース・データの量を著しく削減することが可能であり、これは更に多数の装置をトレースする必要がある場合には重要である。
【0054】
多くの実施例において、トレース生成器120は要求されたトレース要素を出力する前に、FIFO130から出力される圧縮済みトレース・ストリームを産出するために、圧縮技術を実行するように構成されている。先に述べたように、本発明のいくつかの実施例によれば、サイクル精度を達成する際にトレースされる必要のある情報の量が著しく削減できる。更に、多くの状況の中で更に効率的な圧縮が可能なことが分かっており、これによりトレース帯域幅の更なる節約を提供する。
【0055】
図4は本発明の実施例に基づくトレース分析器40の動作を図示するブロック図である。分析ツール200は標準の分析ツールを表し、これは本発明の実施例の技術を使用するシステムの前に生成されたトレース・ストリームを分析するために使用されるものである。トレース拡張ロジック210は、先に説明したトレース・タイミング標識を使用した結果、縮小されたトレース・ストリームを拡張するために、分析ツールに組み込まれた追加ロジックを識別する。トレース・ロジック20から出力された縮退されたトレース・ストリームはトレース拡張ロジック210で受け取られ、これは現在の処理タイミング間隔のコピーをレジスタ220の中に保持する。従って、縮小されたトレース・ストリームの中にトレース・タイミング標識が観測された際には常に、トレース拡張ロジック210はそのトレース・タイミング標識を、レジスタ220の中に保持されたタイミング間隔情報を参照して決定されたクロック・サイクル計数値で置き換えることが出来る。これは拡張されたトレース・ストリームを生じ、これは続いて分析ツール200で分析出来る。
【0056】
分析ツール200が要求された分析をトレース・ストリームに対して実施する前に、トレース拡張ロジック210が先に説明した機能を実行する要求が無いことは理解されるであろうが、それは実施される分析の多くは拡張されたタイミング情報を必要としないからである。更に1つの実施例において、トレース拡張ロジック210と分析ツール200の両者はロジックの単一相補部品(cohesive piece)として形成される。1つの実施例において、トレース拡張ロジック210と分析ツール200の両者はトレース分析器40上で実行される適切なソフトウェアで形成される。
【0057】
先に述べたように、いくつかの実施例において、トレース生成器120は処理タイミング間隔をダイナミックに構成することが可能であり、処理タイミング間隔がその様な方法で変更された際には常に、トレース生成器120は1つの実施例の中で、タイミング変更標識をトレース・ストリームの中に出力するように構成されている。その様なタイミング変更標識がトレース拡張ロジック210で観測されると常に、それに従ってレジスタ220内のタイミング間隔のコピーを更新し、トレース・ストリーム内で受け取られた全ての後続のトレース・タイミング標識がトレース拡張ロジック210で正しく解釈されるようにしている。
【0058】
トレース・タイミング標識をトレース・ストリーム内に含むには多くの方法がある。図5はトレース生成器120で実行されるステップの1つのシーケンスを図示する流れ図であり、この中でトレース・タイミング標識は各処理タイミング間隔の後で出力され、タイミング標識が事実上トレース・ストリーム内で心拍のような形式を取るようにしている。図5に示されるように、ステップ300において、トレースが現在実施中であり、全ての必要な初期タイミング標識がトレース・ストリームの中に具備されていると想定されている。当業者には理解されるであろうが、トレースが最初に開始される際に、いくつかの初期情報がトレース・ストリームの開始時点で含まれていて、トレース分析器がトレースの開始点を正しく決定出来るようにしなければならず、この情報は例えば現在実行されている命令のフルアドレスと、いくつかの初期タイミング情報を含む。
【0059】
その後、この処理工程はステップ305に進み、此処で新たなクロック・サイクルが生じたか否かが決定される。一旦新たなクロック・サイクルが発生すると、次にステップ310で関心ある事象がこのサイクルの中で生じたか否かが判断される。発生しない場合、処理工程は直接ステップ320に進み、一方このサイクルで関心ある事象が発生した場合は、ステップ315で現在のサイクル計数の表示がトレース・ストリームの中に出力される。
【0060】
図5において、タイミング情報を出力するために必要なステップのみが示されており、関心ある事象が発生すると、必須ではないが対応するトレース要素もまたトレース・ストリームの中に含めるために産出されても良い。実際、トレース要素はそれが関心ある事象に関係していなくてもしばしばトレース・ストリーム内に含めるために産出される。1例として、命令トレースが始動されると、典型的に全ての命令実行毎にトレース要素が産出される。しかしながら、全ての命令が関心ある事象に対応するわけでは無く、ある種の命令、例えば分岐命令のみが関心ある事象と考えられる。その他の関心ある事象は実行される命令自身に関係しないが、トレース・ロジックの内部で生じるか、またはトレース・ロジックの外部で生じる他の事象に関係しても良い。
【0061】
ステップ315で現在のサイクル計数の表示を出力することにより、これは関心ある事象のタイミングに関連するトレース・ストリーム内の高いレベルの精度を提供する。
【0062】
処理工程がステップ320に進むと、現在のサイクル計数がタイミング間隔以上であるか否か判断される。否の場合、処理工程はステップ325に進み、此処でサイクル計数が増更新され、その後処理工程はステップ305に戻る。しかしながら、サイクル計数がタイミング間隔以上の場合、処理工程はステップ330に進み、此処でタイミング標識がトレース・ストリーム内に出力される。このタイミング標識は例えば現在の処理タイミング間隔の経過を識別する単一ビット値であるか、またはこれに代わって処理タイミング間隔を形成するクロック・サイクル数を直接示す値であっても良い。タイミング標識を発した後、処理工程はステップ335に進み、此処でサイクル計数はリセットされ、その後処理工程はステップ305に戻る。
【0063】
図5の点線で示されるように、これに代わる実施例において、関心ある事象がステップ310で生じ、従って現サイクル計数がステップ315でトレース・ストリーム内に表示されたと想定すると、この処理工程はステップ320とその後に必要とされる全てのステップに進むのではなく、ステップ315からステップ335へ直接進む。従って、この代替実施例によれば、タイミング標識はその間に発生する事象に関係なく全てのタイミング間隔を単に出力するのではなく、それに代わって関心ある事象の発生時に、現サイクル計数が出力されそのサイクル計数がリセットされる。従って、別のタイミング標識は、現サイクル計数がステップ315で出力された時点(勿論中間時点で別の関心ある事象は生じていないと仮定する)に続いて、処理タイミング間隔が経過するまで産出されない。
【0064】
図5は1つの実施例を図示するが、種々の修正変更が可能なことは理解されよう。例えば、いくつかの実施例において、ステップ310とステップ315は不要であり、処理タイミング間隔が経過する毎にタイミング標識を単に出力するだけで十分であると判断することも出来よう。
【0065】
図6は別の実施例を図示し、此処ではタイミング標識を処理タイミング間隔が経過する時点毎に出力する必要が無く、代わりに特定処理タイミング間隔の間に関心ある事象が生じない場合には、トレース・タイミング標識の出力は抑制できる。図6を図5と比較することにより、ステップ400,405および410は図5のステップ300,305および310と類似していることが理解されよう。関心ある事象が発生したとステップ410で判定された場合、次に処理工程はステップ415に進み、此処でタイミング標識がトレース・ストリームに含まれるように出力され、このタイミング標識は間隔計数を与える。従って、計数の1は処理タイミング間隔の1つが経過したことを示し、計数の2は処理タイミング間隔の2つが経過したことを示す、等でありこの間隔計数はトレース・ストリームの中のタイミング標識が出力された最後の時刻に対するものである。その後、ステップ420において、処理工程はオプションとして現在のサイクル計数の表示を、図5のステップ315を参照して説明したものと類似の方法により追加出力するように構成されている。従って、例としてあげると、ステップ410で検出された関心ある事象が最後のタイミング標識が産出されて20サイクル後に発生し、現在の処理タイミング間隔が8サイクルと仮定する場合、ステップ415と420を組み合わせた結果、トレース・タイミング標識がステップ415で出力され、2の処理タイミング間隔の経過を示し、次にステップ420でサイクル計数の4が出力される。
【0066】
ステップ420に続いて、またはステップ420のオプションが削除される場合にはステップ415に続いて直接、間隔計数はステップ425でリセットされ、その後処理工程はステップ430に進み、此処でサイクル計数がタイミング間隔以上であるか否かが判定される。ステップ430,435,440および445は図5のステップ320,325,330および335に類似しており、ただステップ440でタイミング標識が生成されるのではなく、代わりに間隔計数が増更新される点が異なる。従って、サイクル計数がタイミング間隔以上であると直ちにタイミング標識が出力される図5の方法との比較において、図6の技術によれば、サイクル計数がタイミング間隔以上の場合、間隔計数が単に増更新されタイミング標識が実際に出力されるのは関心ある事象が発生する場合のみである。
【0067】
図6の点線矢印で示されるように、別の実施例によればステップ425に続いて、処理工程はステップ430に進む代わりに、ステップ445に直接進みサイクル計数をリセットする。この様なやり方により、ステップ415でタイミング標識を出力したことに続き、またオプションとしてサイクル計数をステップ420で含めて、このサイクル計数はステップ445でリセットされる。その結果として、間隔計数の次の増更新はステップ415および420が実行された時点に続いて、現在の処理タイミング間隔が経過するまで発生しない。
【0068】
図7は図5または図6の点A,BおよびCの間に挿入されるいくつかの代替ステップを図示する流れ図であり、図7の処理工程は図5のステップ320または図6のステップ430のいずれかと実質的に置き換えられる。図7に図示されている実施例に基づけば、トレース・ストリーム内の特定トレース要素出力は、それらに関連する内包クロック・サイクル計数を有すると想定されている。この内包クロック・サイクル計数は予め定められているか、またはこれに代わっていくつかの実施例では、例えばトレース分析器40によってプログラム可能である。この様なプログラム可能実施例において、トレース分析器40は1つまたは複数の制御レジスタ140内の特定トレース要素用の内包クロック・サイクル計数に関する情報を記憶して、その内包クロック・サイクル値がトレース生成器120で参照出来るように構成されている。1つの実施例において、内包クロック・サイクル計数は自然数であるが、これは本質的ではなく、従って1例として特定トレース要素型式は1.5として含まれるサイクル計数を有する。1つの特定実施例において、トレース生成器は命令が実行される時点毎にトレース要素を生成するように構成され、その様なトレース要素はそれに関連する特定の内包クロック・サイクル計数、例えば単一クロック・サイクルを有する。
【0069】
ステップ500において、トレース生成器120は内包クロック・サイクル計数を有するトレース要素がその現在クロック・サイクル内で生成されたか否かを決定する。これは関心ある事象に属するトレース要素であるか、またはこれに代わってそのトレース・ストリーム内に含まれる別のトレース要素である。その様なトレース要素が生成されなかった場合、処理工程はステップ520に直接進み、此処でサイクル計数がタイミング間隔以上であるか否か判定される。しかしながら、ステップ500において、その様なトレース要素が産出されたと判定されると、ステップ510において、サイクル計数がステップ520に進む前に内包クロック・サイクル計数の量だけ減更新される。
【0070】
従って、図示の目的で図5を参照すると、1サイクル・ステップ325の中でサイクル計数が8になるように増更新させ、またこれがたまたま現在の処理タイミング間隔に対応する場合、次のクロック・サイクルの間に、ステップ320を実行することにより、処理工程はステップ330に進み、此処でタイミング標識が生成された。しかしながら、この別の実施例によれば、ステップ500において、1サイクルの内包クロック・サイクル計数を有するトレース要素が生成されると判定される場合、次にステップ510はサイクル計数が7に減更新させて、ステップ520が実行された時に、このサイクル計数がタイミング間隔以上とならないようにして、代わりに処理工程はステップ325に分岐して、サイクル計数がタイミング標識を産出することなく増更新されるようにしている。
【0071】
従って、その様な方法により、タイミング標識が産出される間隔は、内包タイミングを有するトレース要素が中間で出力される場合、更に拡張することが可能であり、これによってトレースされる必要のある情報の量の更なる削減に導く。
【0072】
図8は図5または図6の点XおよびYの間に挿入可能なステップのオプション・シーケンスを図示する。特に、図8に図示されるステップのシーケンスを実施例の中に含むことが可能であり、此処でトレース生成器120はそのタイミング間隔をダイナミックに変更することが許されている。図5および6に示されるように、この処理工程はタイミング標識を出力した後に実施することが可能であり、これはその様な変更が著しい複雑さをもたらすことなく実施できる時点を表しているからである。ステップ600において、タイミング間隔に変更の必要が有るか否か判定される。先に説明されたように、これはトレース生成ロジックが1つまたは複数の予め定められた事象を検出した結果として典型的に生じ、例えばトレースされるコード部分内の変更、またはトレース・ストリーム内の関心ある事象の頻度が、現在のタイミング間隔の経過周期より著しく少ないとトレース生成ロジックが観測した結果として生じる。
【0073】
ステップ600において、タイミング間隔に変更が必要であると判定された場合、処理工程はステップ610に進み、此処で新たなタイミング間隔がトレース生成器120で決定されと将来参照するために格納される(例えば1つの制御レジスタ140の中に)。その後、ステップ620において、新たなタイミング間隔がトレース・ストリーム内に出力されて、トレース分析器40に変更が勧告される。ステップ600において、タイミング間隔に変更の必要が無いと判断される場合、処理工程は単に点Yに直接進み、此処で図5または図6に図示されるプロセスが継続される。
【0074】
トレース・ストリーム内に含まれるために生成されるトレース・タイミング標識は種々の形式を取りうる。先に述べたように、現在のETMプロトコルはサイクル精度をサポートしており、此処では全ての単一クロック・サイクルが捕捉されトレース・ストリーム内に含まれる。特に、現在のETMプロトコルは全てのプロセッサ・サイクルでWアトム(atom)を出力する。これらのWアトムが、実行状態(実行のE、非実行のN)を表示する他のアトムと一緒に、プロセッサで実行される各々の命令に対して出力される。下記の表1は長期に渡って実行されるARM命令のシーケンス例を示す。列Dは既存のETMプロトコルがこのストリームを符号化する様子を示し、全実行を示すために54個のアトムを用いている。1つのWアトムは経過する各々のサイクルで必要とされる。本発明の実施例の構成化可能処理タイミング間隔によれば、サイクル精度の解像度は複数のクロック・サイクルを表す種々の値の間で変更可能であり、従って例えば2クロック・サイクル、4クロック・サイクルまたは8クロック・サイクルの値を取りうる。その様な実施例において、トレース・タイミング標識はWアトムの形式を取るが、Wアトムは次に現在の処理タイミング間隔に基づいてトレース分析器によって解釈される。従って、列E,FおよびGはそれぞれサイクル精度解像度が2、4および8サイクルに変更された場合のその様な方法に基づいて符号化されたアトムを示す。
【表1】

【0075】
表1から分かるように、2サイクルのサイクル精度解像度で、命令のシーケンスは38個のアトムを用いて符号化することが可能であり、4サイクルのサイクル精度で、同一命令が30個のアトムを用いて符号化可能で、8サイクルのサイクル精度で、同じ命令が26個のアトムを用いて符号化可能である。
【0076】
先に述べたように、一旦基本トレース要素がトレース・ストリーム内に含むために産出されると、それらは典型的にストリーム内に出力される必要のあるデータの量に削減するために圧縮技術の対象となる。既存のETMプロトコルはアトムのシーケンスをランレングス符号化法を用いて符号化して、出力されるトレース・データの量を圧縮する。特に、その様なトレース・データはPヘッダとして知られるバイト・クウォンティティーで出力され、各バイトによってW,EまたはNアトムの特定シーケンスが示される。下記の表2はこれらの符号化を示し、これは表1に示されるシーケンスに対して結果として生成されたトレースの17バイトである。
【表2】

【0077】
現在のETMプロトコルは1または複数のWアトムを各々のバイト(フォーマット4を除いて)に含むことに大きく依存しており、現在のシステムで要求されるように、サイクル精度が1サイクルの解像度の時には効率的であると分かっている。本発明の上記の実施例を使用する際、Wアトムの重みを削減するために、これらのパケットのフォーマットの再構築を考慮するのが適切であるが、これらは典型的にまれにしか出力されないからである。多くの異なる符号化技術で産出出来ることは理解されるであろうが、使用できる簡潔なフォーマットが以下の表3に示されている。
【表3】

【0078】
表1の例を考えると、その様な符号化技術は結果として8サイクルのサイクル精度では6バイトが生成され、4サイクルのサイクル精度では10バイトが生成され、そして2サイクルのサイクル精度では18バイトが生成される。2サイクルのサイクル精度では、生成されるバイト数は実際既存のETMプロトコルよりも大きく、そのような解像度に対しては異なる符号化を考慮した方が適切であることに注意されたい。また更に効率的なパケット技法が可能であり、また最適技法を決定するためにベンチマーク試験が使用できることは理解されよう。
【0079】
先に述べたように、レジスタを用いて現在の処理タイミング間隔を記憶することが可能である。いくつかの実施例において、ごく僅かの値のみが特定の実現形として許されることが考えられる、例えば特定の実現形では値の8または16のみをサポートしている。
【0080】
選定された処理タイミング間隔に依っては、パケットの価値を、最適解を提供するものに変更することも可能である。例えば、表3に記述されている新たなフォーマットは解像度が8または16の場合に使用されるが、より低い解像度に対しては異なるパック技法を選択できる。
【0081】
本発明の実施例の技術はトレース応用分野において、一般的な適用性を有するが、これらは複雑なトレース対象装置、例えば順不同命令実行を実施する複雑なプロセッサに関連して使用される場合、またはデータ・アドレスおよび値が命令ストリームとの関係において完全な順番になっていない場合、に特に有用となる。これらの状況において、命令ストリームは情報を再順序化出来るようにバッファリングされる(順に並んだ命令は順不同命令よりも更に効率的かつ容易に圧縮できるからである)。これらの状況下において、バッファリングは命令の詳細な実行に関するサイクル情報の全てを保持するのでは無いので、従って単一サイクル精度は命令の実行を詳細に示すものではない。しかしながら、本発明の実施例の上記の技術を使用することにより、トレースの分析解明能力を維持しながら、大きなオーバーヘッドおよび単一サイクル精度で得られる情報を誤る可能性を伴うことなく、サイクル精度を制御することが可能である。
【0082】
本発明の技術はまた、多重のトレース・ストリームの相関を取る必要のあるシステムに関連して有効に適用することができる。多重トレース・ストリームはトレース対象である異なる処理装置に関係するか、またはそれに対して個別のストリームが産出されるトレース、例えば命令トレースおよびデータ・トレース、の異なる部分に関係する。共通に譲渡されている米国特許第7,069,176号に記載されているような、チップワイド(chip−wide)タイムスタンプ機構を、これらの多重トレース・ストリームの相関をとる、例えば多重クロック領域内の多重プロセッサからの多重トレース・ストリームの相関をとるために使用することが可能である。しかしながら、この相関はこの情報を出力することのオーバーヘッド負担があるため、1000サイクルまたはそれ以上の頻度でのみ生じると思われる。しかしながら、その様な技術が本発明の実施例の上記の技術と組み合わされるとき、トレース分析ツールは1000サイクルのウィンドウを分割して、プロセッサ間の相関のより細かいレベルを得ることが出来る。これは種々の状況において非常に重要である。例えば、共有メモリシステム内の2つのプロセッサが同時にメモリ集中タスクを実施する場合の、性能モニタリングを実施する際に、その様な相関はこの問題の可視化を可能とし、プログラマがバス衝突を回避するようにコードの修正をできるようにする。別の例として、共有メモリのデバッグを行うとき、分析ツールの使用者は共有メモリシステムがどのようにアクセスされるかを見ることが可能であり、特に本発明の実施例の技術でサポートされた相関のより細かなレベルは、読み取り/書き込み障害およびメモリ・コラプション(corruption)のデバッグを可能とする。
【0083】
先の説明から明らかなように、多くの異なる方法でトレース・ストリームに含まれるトレース・タイミング標識を生成することができる。以下の本文は使用できる一連の実現例を提供している。以下の例において、選択された処理タイミング間隔を構成する予め定められた複数のクロック・サイクルは8クロック・サイクルであり(例外は例5番であり、此処ではタイミング間隔は途中で変更されている)、従ってトレース内の各Wアトムは8サイクル(1トレース・タイミング間隔)が経過したことを示している。
【0084】
例1a
表4はこの例を図示する。この例において、事象AおよびBは関心ある事象であり、サイクル計数は関心ある事象の時点でリセットされる。
【表4】

【0085】
事象AとBとの間に16から24のサイクルが経過している。
【0086】
例1b:
以下の表5はこの例を図示する。この例において、サイクル計数は関心ある事象ではリセットされない。
【表5】

【0087】
事象AとBとの間に16から32のサイクルが経過している。これは例1aよりも各関心ある事象において大きな誤差を有するが、しかしこれは真の拍動である。
【0088】
例2:
以下の表6はこの例を図示する。各々の関心ある事象は最後の標識からのサイクル数を参照するサイクル計数を含む。サイクル計数ISは関心ある事象でリセットされる(これは図5上のオプション経路である)。
【表6】

【0089】
事象Aはサイクル0の後4サイクルで生じている。事象Bは事象Aの後22サイクル((2*8)+6)で生じる。
【0090】
例3:
下記の表7はこの例を図示する。間隔計数は関心ある事象でグループ化される。サイクル計数は各々の関心ある事象でリセットされる。
【表7】

【0091】
事象AとBの間には16から24のサイクルが存在する。
【0092】
例4:
下記の表8はこの例を図示する。間隔計数は関心ある事象でグループ化され、サイクル計数は最後の標識からのサイクル数を表示しながら出力される。
【表8】

【0093】
事象Aにおいて、標識をサイクル0に置き換えた最後の標識から4サイクル経過している。サイクル計数器はサイクル4でリセットされている。事象Bにおいて、22サイクル((2*8)+6)が経過しており、従って事象Bはサイクル26で生じる。
【0094】
例5:
下記の表9はこの例を図示する。間隔計数は関心ある事象でグループ化されている。最後の標識から経過したサイクルを表示する、追加計数が関心ある事象において出力される。サイクル計数は各々の関心ある事象においてリセットされる。
【表9】

【0095】
事象Aにおいて、標識をサイクル0に置き換えた最後の標識から4サイクル経過している。サイクル計数器はサイクル4でリセットされている。事象Bにおいて、22サイクル((2*8)+6)が経過しており、従って事象Bはサイクル26で生じる。事象Bはタイミング間隔のサイズを8から32サイクルに変更させ、これはトレース・ストリームの中に表示されている。事象Cは事象Bの後124サイクル((3*32)+28)である。
【0096】
例6:
下記の表10はこの例を図示する。間隔計数は関心ある事象においてグループ化される。このグループ化は関心ある事象の2つ目毎でのみ行われ、これは関心ある事象を1つ置きにのみ効果的にクラス分けすると見なせる。最後の標識から経過したサイクルを表示する、追加計数が関心ある事象において出力される。サイクル計数は各々の関心ある事象においてリセットされる。
【表10】

【0097】
事象Aにおいて、標識をサイクル0に置き換えた最後の標識から4サイクル経過している。サイクル計数器はサイクル4でリセットされている。事象Bにおいて、事象Bのみがトレースされる。事象Cは事象Aの後146サイクル((18*8)+2)である。
【0098】
例7:
下記の表11はこの例を図示する。間隔計数は関心ある事象でグループ化され、最後の標識からのサイクル数を表示するサイクル計数が出力される。サイクル計数は各関心ある事象でリセットされる。事象間の命令は命令毎1サイクルを含む。
【表11】

【0099】
事象Bは事象Aの後22サイクル(11+8+3)で生じる。
【0100】
先の説明から、本発明の実施例はサイクル精度でのトレースで必要とされるトレース・データの量を減らし、加えて使用者にトレース・データ効率に対するトレードオフとして、サイクル精度の粒度(granularity)を決定する能力を与えることが理解されよう。本発明の実施例の技術はまた、低レベルのサイクル精度で良いとされる場合には、トレース・ストリームを更に効率的に圧縮可能とする一方で、使用者に対してトレース・データ帯域幅を犠牲として所望の粒度を増やすことを可能とする。最終的に必要なトレース・データ帯域幅を低くすることにより、これは素子上で必要とされるピンの数を少なくできる。本発明の実施例の構造化可能性は、サイクル精度粒度に対する制御を提供し、通常のトレース・ストリームを出力できるようにするためにバッファリングを必要とし、単一サイクル精度がプロセッサ動作を完全には表していない、更に高度なプロセッサに対して更に適切なサイクル精度機構の選択を可能とする。本発明の実施例の技術はまた、多重トレース・ソース間での効果的な相関を、単一サイクル精度で必要とされる大きな帯域幅を伴わずに可能とする。
【0101】
此処に特定の実施例を説明してきたが、本発明はこれに限定されるものではなく、多くの修正変更およびそれに対する追加が本発明の範囲内で可能なことは理解されよう。例えば、添付の特許請求項の特徴を種々に組み合わせて、本発明の範囲から逸脱することなく独立した特許請求項の機能を作ることが出来るであろう。
【0102】
データ処理装置、トレース・ロジック、データ処理システムの運転方法の例として、いかの項目を開示する。
1. データ要素を産出するように動作可能なロジックと;
前記データ要素の少なくともいくつかを表すトレース要素のストリームを産出するように動作可能なトレース・ロジックであって、前記ストリームに含まれるトレース要素を生成するように動作可能なトレース生成ロジックを含み、該トレース生成ロジックが更に前記ストリームに含まれるトレース・タイミング標識を生成するように動作可能であり、各々のトレース・タイミング標識が1つまたは複数の予め定められたタイミング項目から成り、各タイミング項目が1つの処理タイミング間隔の経過を表わし、前記処理タイミング間隔は複数のクロック・サイクルである、前記トレース・ロジックと、
を含み、
各タイミング項目によって示されるクロック・サイクルの数は現在の処理タイミング間隔に依存し、前記トレース・タイミング標識によって表現されるクロックサイクル精度の解像度が前記処理タイミング間隔を変更することにより可変になるように、前記処理タイミング間隔は構成可能であり、
データ処理装置が更に現在の処理タイミング間隔を保持するための記憶装置を含み、トレース生成ロジックが、何時各トレース・タイミング標識を生成するか決定するために前記記憶装置を参照するように動作可能である、
データ処理装置。
【0103】
2. 項1記載のデータ処理装置において、トレース生成ロジックが1つまたは複数の予め定められた事象の発生に応答して、前記処理タイミング間隔を変更するように動作可能である、前記データ処理装置。
【0104】
3. 項2記載のデータ処理装置において、ロジックにより産出されたデータ要素がそのロジックにより実行されるプログラム・コードの表示であり、トレース生成ロジックが異なるコード部分に関して生成されたトレース要素で使用される異なる処理タイミング間隔を識別するようにプログラムされた1つまたは複数の制御レジスタを有し、またトレース生成ロジックがどのコード部分に対してトレース要素が生成されているかに応じて、前記処理タイミング間隔を変更するように動作可能である、前記データ処理装置。
【0105】
4. 項2記載のデータ処理装置において、トレース生成ロジックに1つまたは複数の関心ある事象を識別する制御情報を具備し、前記処理タイミング間隔を前記関心ある事象の発生頻度の分析に基づいて変更するように動作可能な、前記データ処理装置。
【0106】
5. 項1記載のデータ処理装置において、処理タイミング間隔が変更された際に、トレース生成ロジックがストリーム内にその変更を表示するタイミング変更標識を含めるように動作可能な、前記データ処理装置。
【0107】
6. 項1記載のデータ処理装置において、前記トレース生成ロジックが前記トレース・タイミング標識を前記トレース・ストリーム内に、各処理タイミング間隔の後に出力するように動作可能な、前記データ処理装置。
【0108】
7. 項1記載のデータ処理装置において、トレース生成ロジックに1つまたは複数の関心ある事象を識別する制御情報が具備されており、その処理タイミング間隔の間に関心ある事象が発生しなかった際に、トレース・タイミング標識の出力を抑制するように動作可能な、前記データ処理装置。
【0109】
8. 項7記載のデータ処理装置において、前記トレース生成ロジックが、1つの関心ある事象が発生した際に、前回にトレース・タイミング標識が出力されてから経過した処理タイミング間隔の数を表示するトレース・タイミング標識を出力するように動作可能な、前記データ処理装置。
【0110】
9. 項7記載のデータ処理装置において、トレース生成ロジックがトレース・タイミング標識の出力を、関心ある事象が多数発生するまで抑制し、前回にトレース・タイミング標識が出力されてから経過した処理タイミング間隔の数を表すトレース・タイミング標識を出力するように動作可能な、前記データ処理装置。
【0111】
10. 項1記載のデータ処理装置において、トレース生成ロジックに1つまたは複数の関心ある事象を識別する制御情報が具備され、更に前記関心ある事象の1つが発生すると、前回のトレース・タイミング標識から経過したクロック・サイクルの数を表示する追加のトレース・タイミング標識を出力するように動作可能な、前記データ処理装置。
【0112】
11. 項1記載のデータ処理装置において、前記トレース生成ロジックが、該トレース生成ロジックで利用可能な帯域幅を前記トレース・ストリームが超えることを防止するために、前記処理タイミング間隔を変更するように動作可能な、前記データ処理装置。
【0113】
12. 項1記載のデータ処理装置において、前記トレース生成ロジックが、処理タイミング間隔内の多数のクロック・サイクルの経過が前記処理タイミング間隔中に前記ストリーム内に出力された前記トレース要素から導出できる時に、前記処理タイミング間隔を前記クロック・サイクルの数で拡張し、トレース・タイミング標識が後でストリームに含まれた際に、前回にトレース・タイミング標識が出力されてから経過したクロック・サイクルの総数がトレース・タイミング標識で示された処理タイミング間隔の数から、前記トレース要素から導出された前記クロック・サイクルの数と組み合わせて導出される、前記データ処理装置。
【0114】
13. 項12記載のデータ処理装置において、トレース生成ロジックが1つまたは複数の型式のトレース要素の各々に対して、そのトレース要素の型式により推定されるクロック・サイクルの数を識別するようにプログラムされた1つまたは複数の制御レジスタを有し、前記トレース生成ロジックが、前記処理タイミング間隔を拡張するための前記クロック・サイクル数を決定する際に前記1つまたは複数の制御レジスタを参照するように動作可能な、前記データ処理装置。
【0115】
14. データ処理装置のロジックによって産出された少なくともいくつかのデータ要素を表すデータ要素のストリームを生成するためのトレース・ロジックであって:
前記ストリームに含むためのトレース要素を生成するように動作可能なトレース要素生成ロジックと;
前記ストリームに含むためのトレース・タイミング標識を生成するように動作可能であり、各々のトレース・タイミング標識が1つまたは複数の予め定められたタイミング項目から成り、各タイミング項目は複数のクロック・サイクルである1つの処理タイミング間隔の経過を表示する、タイミング表示ロジックを含み、
各タイミング項目によって示されるクロック・サイクルの数は現在の処理タイミング間隔に依存し、前記トレース・タイミング標識によって表現されるクロックサイクル精度の解像度が前記処理タイミング間隔を変更することにより可変になるように、前記処理タイミング間隔は構成可能であり、
トレース・ロジックが、何時各トレース・タイミング標識を生成するか決定するために現在の処理タイミング間隔を保持するデータ処理装置の記憶装置を参照するように動作可能である、前記トレース・ロジック。
【0116】
15. データ処理システムの運転方法であって:
データ要素を産出し;
前記データ要素の表示を受け取り、前記データ要素の少なくともいくつかを表すトレース要素のストリームを産出するためにトレース・ロジックを用い;
前記ストリーム内に含めるために、トレース・タイミング標識を生成するステップであって、トレース・タイミング標識は1つまたは複数の予め定められたタイミング項目から成り、各タイミング項目は予め定められた複数のクロック・サイクルである1つの処理タイミング間隔の経過を表わすステップとを含み、
各タイミング項目によって示されるクロック・サイクルの数は現在の処理タイミング間隔に依存し、前記トレース・タイミング標識によって表現されるクロックサイクル精度の解像度が前記処理タイミング間隔を変更することにより可変になるように、前記処理タイミング間隔は構成可能であり、
トレース・ロジックが、何時各トレース・タイミング標識を生成するか決定するために現在の処理タイミング間隔を保持するデータ処理システムの記憶装置を参照するように動作可能である、
前記方法。
【0117】
16. 項1記載のデータ処理装置において、各タイミング項目がタイミングアトムである、前記データ処理装置。
【0118】
17. 項1記載のデータ処理装置において、各タイミング項目が単一ビットである、前記データ処理装置。
【符号の説明】
【0119】
10 ロジック
15 バス
20 トレース・ロジック
30 トレース・バッファ
40 トレース分析器
100 同期ロジック
105 接続
110 制御ロジック
120 トレース生成器
130 FIFO
140 制御レジスタ
200 分析ツール
210 トレース拡張ロジック
220 レジスタ

【特許請求の範囲】
【請求項1】
データ要素を産出するように動作可能なロジックと;
前記データ要素の少なくともいくつかを表すトレース要素のストリームを産出するように動作可能なトレース・ロジックであって、前記ストリームに含まれるトレース要素を生成するように動作可能なトレース生成ロジックを含み、該トレース生成ロジックが更に前記ストリームに含まれるトレース・タイミング標識を生成するように動作可能であり、各々のトレース・タイミング標識が1つまたは複数の予め定められたタイミング項目から成り、各タイミング項目が1つの処理タイミング間隔の経過を表わし、前記処理タイミング間隔は複数のクロック・サイクルである、前記トレース・ロジックと、
を含み、
各タイミング項目によって示されるクロック・サイクルの数は現在の処理タイミング間隔に依存し、前記トレース・タイミング標識によって表現されるクロックサイクル精度の解像度が前記処理タイミング間隔を変更することにより可変になるように、前記処理タイミング間隔は構成可能であり、
データ処理装置が更に現在の処理タイミング間隔を保持するための記憶装置を含み、トレース生成ロジックが、何時各トレース・タイミング標識を生成するか決定するために前記記憶装置を参照するように動作可能である、
データ処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2013−58249(P2013−58249A)
【公開日】平成25年3月28日(2013.3.28)
【国際特許分類】
【出願番号】特願2012−253502(P2012−253502)
【出願日】平成24年11月19日(2012.11.19)
【分割の表示】特願2008−71114(P2008−71114)の分割
【原出願日】平成20年3月19日(2008.3.19)
【出願人】(594154428)エイアールエム リミテッド (85)
【Fターム(参考)】