JP4225851B2 - データ処理装置用トレース要素生成システム - Google Patents

データ処理装置用トレース要素生成システム Download PDF

Info

Publication number
JP4225851B2
JP4225851B2 JP2003195368A JP2003195368A JP4225851B2 JP 4225851 B2 JP4225851 B2 JP 4225851B2 JP 2003195368 A JP2003195368 A JP 2003195368A JP 2003195368 A JP2003195368 A JP 2003195368A JP 4225851 B2 JP4225851 B2 JP 4225851B2
Authority
JP
Japan
Prior art keywords
trace
instruction
derived
new value
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2003195368A
Other languages
English (en)
Other versions
JP2004038981A (ja
Inventor
ブルックフィールド スウェイン アンドリュー
ジェイムズ ウィリアムソン デイヴィッド
Original Assignee
エイアールエム リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from GB0229009A external-priority patent/GB2389931B/en
Application filed by エイアールエム リミテッド filed Critical エイアールエム リミテッド
Publication of JP2004038981A publication Critical patent/JP2004038981A/ja
Application granted granted Critical
Publication of JP4225851B2 publication Critical patent/JP4225851B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/348Circuit details, i.e. tracer hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/25Testing of logic operation, e.g. by logic analysers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program

Description

【0001】
【発明の属する技術分野】
本発明は、その振る舞いをトレースしようとする1または複数の部品を含むデータ処理装置内でのトレース要素(trace element)生成に関する。
【0002】
【従来の技術】
データ処理システムの活動をトレースすることによって、そのシステム内でのステップ毎の活動を表すデータを含むトレース要素のストリームを生成することはシステム開発において非常に有用なツールである。しかし、プロセッサコアが益々埋め込み式に向かう一般的な傾向に伴って、外部からアクセスできるピンを通してプロセッサコアのアーキテクチャ・ステート(AS:Architectural State)(例えば、レジスタの内容、特定のメモリ場所に記憶された値、あるいは各種バス、パス、ライン、フラグ、あるいはプロセッサコア内またはプロセッサコアがつながれているモジュールの状態)をトレースすることは益々困難になっている。従って、トレースデータを捕らえて解析するためのオフチップでのトレース機構のほかに、多量のトレース機能がオンチップに配置されるようになっている。そのようなオンチップのトレース機構の一例は、英国、ケンブリッジのARMリミテッド社によって提供されるエンベッデド・トレース・マクロセル(ETM:Embedded Trace Macrocell)(R)および関連する各種ARM(R)プロセッサである。
【0003】
そのようなトレース機構は、トレースしようとするデータ処理システムの活動を表すトレース要素のストリームを実時間で生成する。このトレース・ストリームは、後でそのデータ処理システムによって実行される処理命令のシーケンスをデバッグするために使用することができる。
【0004】
特別なレジスタ、メモリアドレス、あるいはデータ値にアクセスした時点でトレースをスタートさせたり、あるいは停止させたりするなど、トレース動作を制御するために役立つトリガポイント設定機能を含むトレース機構を提供することについては既知である。そのような機構はシステムの特定部分を診断したり、振る舞いのタイプを診断したりするのに非常に有効である。
【0005】
典型的には、トレースが最初にトリガされたときに、再構成すべきアーキテクチャ・ステートのすべての項目に関する値が複数のトレース要素としてトレースされる。
【0006】
典型的には、ETM(R)によって生成されるトレース要素のストリームは、後での解析のために出力される前にバッファに収納される。そのようなトレースバッファは有限の情報記憶容量を持ち、バッファに入れる要素を受信するために有限の帯域幅を持つ専用のデータバスを必要とする。トレースバッファは一般にラップアラウンド式に情報を記憶するように構成される。すなわち、トレースバッファが満杯になると、新しいデータが、そこに記憶されている最も古いデータを上書きするように構成されるのが普通である。専用のデータバスの帯域幅がトレースバッファへ情報を記憶する速度を制限することが分かった。
【0007】
典型的には、トレース解析ツールが備えられ、それは必要に応じて、例えば、トレースが完了した時点でトレースバッファからトレース要素を受信する。それに従って、トレース解析ツールはトレースバッファに記憶されていたトレース要素のストリームを用いて、プロセッサコアのアーキテクチャ・ステートの重要部品を再構成することができる。従って、トレース解析ツールはトレース要素に基づいてプロセッサコアの振る舞いを再構築することができる。
【0008】
【発明の解決しようとする課題】
データ処理システムがパワーおよび複雑度を高めるにつれて、アーキテクチャ・ステートの量およびその変化速度も増大すると考えられる。従って、アーキテクチャ・ステートを信頼性高く再構築するために、トレースすべきトレース要素は非常に多量になるであろうことは理解されよう。
【0009】
しかし、バッファに入れるべきトレース要素を受信するバスは有限の帯域幅を持ち、またトレースバッファは有限の容量を持つという問題がある。すなわち、バッファに入れられるトレース要素の量、従って再構築できるアーキテクチャ・ステートの量は制限される。
【0010】
このことから、バッファに入れるトレース要素を受信するために有限の帯域幅が与えられ、有限の大きさのトレースバッファが与えられたときに、再構築できるアーキテクチャ・ステートの量を増やすことが望まれる。
【0011】
【課題を解決するための手段】
第1の態様から見ると、本発明はトレースモジュールを提供し、それはそのトレースモジュールがつながるデータ処理装置のアーキテクチャ・ステートのサブセットにおける変化をトレースするように動作し、そのトレースモジュールは:データ処理装置の1または複数の部品から、アーキテクチャ・ステートのサブセットにおける変化を示す入力信号を受信し、それら1または複数の入力信号から、その変化を示す複数のトレース要素を生成して、そのトレース要素の受け手(recipient)が後でアーキテクチャ・ステートのサブセットを再構築することを許可するように動作するトレース生成ユニット;およびトレース生成ユニットが管理するテーブルであって、先に生成されたトレース要素から導出されるアーキテクチャ・ステートを同定するテーブルを含み、トレース生成ユニットはこのテーブルを参照することによって、トレース生成時に生成すべきトレース要素を決定する。
【0012】
トレースが始まる時点でアーキテクチャ・ステートのすべての項目についてトレース要素を生成する必要がないように、また受け手によって導出できないアーキテクチャ・ステートの変化のみをトレースするようにすれば、任意の時点で生成すべきアーキテクチャ・ステートの量は従来のやり方と比べて大幅に削減される。
【0013】
先に生成されたトレース要素から導出できるアーキテクチャ・ステートを同定するテーブルを設けることによって、生成する必要のあるトレース要素の数は大幅に削減される。この削減は、受け手に対して既に提供されているアーキテクチャ・ステートの記録をテーブルが提供するために達成できる。受け手に対して既に提供されているアーキテクチャ・ステートを知ることによって、トレース生成ユニットはアーキテクチャ・ステートの変化が受け手によって導出あるいは推測できるかどうかを決定することができる。従って、トレース生成ユニットは、テーブルを参照し、受け手によって導出できないアーキテクチャ・ステートの変化に関連するトレース要素のみを生成すればよい。このことから、受け手がアーキテクチャ・ステートの変化を導出、推測、あるいは計算できるとトレース生成ユニットが判断したときは、それらの変化に関連するトレース要素は生成する必要がないようになる。
【0014】
生成する必要のあるトレース要素の数を削減することによって、トレース生成ユニットと、トレース要素を記憶するためのバッファとの間の帯域幅制限は緩和される。更に、トレース要素の数を削減できるため、トレースバッファの大きさの制限も緩和され、同じ帯域幅でトレースできるアーキテクチャ・ステートの量は増大する。トレースできるアーキテクチャ・ステートの量が増大すれば、より複雑なデータ処理システムの動作も同じ帯域幅を用いて信頼性高く再構築できるようになることは理解されよう。
【0015】
アーキテクチャ・ステートの変化に関連する情報をトレース生成ユニットに提供する入力信号は任意の適当な形で構わないことを理解されよう。更に、トレース要素は、受け手が後でその変化を再構築することのできるようにアーキテクチャ・ステートの変化を示す任意の適当な形を取ることができることも理解されよう。更に、テーブルは、トレース生成ユニットがトレース生成時にどのトレース要素を生成すべきかを決めることができる任意の構成で構わないことを理解されよう。
【0016】
好適な構成において、このテーブルはトレースの開始時にクリアされ、その後は定期的にクリアされる。このことは、トレースにおいて何らかの破壊が発生するか、あるいはトレースの最初の部分が、例えばその最初の部分を上書きするラップアラウンドがトレースバッファ中で発生することによって失われた場合に、トレースの一部分のみが失われるのであって、後続のトレースはトレース解析ツールによって導出できることを保証する。
【0017】
好ましくは、アーキテクチャ・ステートのサブセットにはアーキテクチャ・ステートの複数の項目が含まれ、またテーブルにはアーキテクチャ・ステートの各項目に関連する1または複数のエントリが含まれ、トレース生成ユニットはアーキテクチャ・ステートのその項目が受け手によって導出できるときに、各々のエントリ中に表示を行なうように動作する。
【0018】
各項目はアーキテクチャ・ステートのサブセットの一部に対応する。アーキテクチャ・ステートを項目化することによってテーブルの管理が容易になる。アーキテクチャ・ステートの各項目に対して複数のエントリを設けることができるが、各項目はそれに付随して1つのエントリのみを有するほうが好ましい。アーキテクチャ・ステートの項目が受け手によって導出できるときは、それらの項目に付随するエントリに対して表示がなされる。この表示は任意の適当な形のものでよく、例えば、単一ビット値によって、論理‘0’がその項目が受け手によって導出できないことを示し、論理‘1’がその項目が受け手によって導出できることを示すようにしてもよい。理解されるように、そのような表示を行なうことは、比較的直接的な処理であり、このような形のテーブルを管理するために要するオーバーヘッドは比較的小さい。
【0019】
好ましくは、1または複数の入力信号の受信に応答して、トレース生成ユニットは、アーキテクチャ・ステートの1つの項目に関連する各エントリにおいて表示が行われているかどうかを判断して、アーキテクチャ・ステートのその項目における変化が受け手によって導出できるかどうかを判断するように動作する。
【0020】
このことから、テーブルの簡単な検索によって、トレース生成ユニットはアーキテクチャ・ステートの変化が受け手によって導出できるかどうかを簡単に判断することが可能となる。
【0021】
好ましくは、1または複数の入力信号の受信に応答して、トレース生成ユニットは、アーキテクチャ・ステートの項目中に変化を引き起こすために用いられるアーキテクチャ・ステートの項目に関連する各エントリにおいて表示が行われているかどうかを判断して、アーキテクチャ・ステートのその項目における変化が受け手によって導出できるかどうかを判断するように動作する。
【0022】
従って、アーキテクチャ・ステートが受け手によって直接的に導出できない場合でも、トレース生成ユニットは、その変化を引き起こすために用いられたアーキテクチャ・ステートの項目がそれ自身、導出可能であるかどうかを判断することによって、その変化が導出できるかどうかを決定することができる。例えば、もしアーキテクチャ・ステートAがアーキテクチャ・ステートBおよびCに基づいて変化するとして、Aに関連するエントリ中に何も表示がなされなかったためAが導出できなくても、BおよびCに関連するエントリ中に表示がなされていれば、トレース生成ユニットはアーキテクチャ・ステートAの変化が受け手によって導出可能であると判断することができる。多くのデータ処理装置では、アーキテクチャ・ステート中の大多数の変化がアーキテクチャ・ステートのその他の項目に依存するため、この方法は生成すべきトレース要素の数を劇的に削減することができることを理解されよう。生成すべきトレース要素の数を更に削減できれば、トレース生成ユニットとバッファとの間の帯域幅制約は更に緩和される。アーキテクチャ・ステートの1つの項目が導出できるという表示を変化の発生前に与えることは、必ずしも変化が発生した後でアーキテクチャ・ステートのこの変化が導出できることを保証しないことは理解されよう。それは、アーキテクチャ・ステートの項目が導出できるかどうかの判断は、その変化に影響する項目が導出できるかどうかの確定に依存するからである。このことを説明するために、上述の例に戻って、Aが導出可能であるという表示がなされた場合、BおよびCについては表示がなされなければ、Aは導出可能ではなく、Aの変化についてトレース要素を生成する必要がある。これは、Aの過去の知識は関係なく、それはBおよびCに依存して不確定なやり方で変化するためである。
【0023】
好ましくは、トレース生成ユニットは、受け手によって導出できないアーキテクチャ・ステートの項目の変化を示す複数のトレース要素を生成するように、またアーキテクチャ・ステートのその項目に付随する各エントリに表示を行なうように動作する。
【0024】
このことから、受け手がアーキテクチャ・ステートの変化を導出できないだろうと判断された場合には、トレース生成ユニットはその変化を示す1または複数のトレース要素を生成する。理解されるように、トレース要素は受け手がその変化を決定できるような任意の適当な形を取ることができる。トレース生成ユニットはまた、変化を起こしたアーキテクチャ・ステートの項目に関するテーブルのエントリ中に、アーキテクチャ・ステートのその項目が今や受け手によって導出可能であることを示す表示を行なうことは理解されよう。
【0025】
更に、特定の状況では、アーキテクチャ・ステートの項目に変化を引き起こすために用いられたアーキテクチャ・ステートの項目に関連するエントリを導出可能としてマークすることが行なわれよう。例えば、もしアーキテクチャ・ステートDがEにコピーされ、Dが導出不可であれば、Eへの変化を示すトレース要素が生成されて、前と同じように、Eに関連するテーブルのエントリはEが導出可能であることを示すように更新される。しかし、そのときは、Dに関連するテーブル中のエントリもまた更新されて、EがDから推定されるのと同じように、DもEから影響されるので、Dが導出可能であると表示されることも理解されよう。
【0026】
好ましくは、アーキテクチャ・ステートの各項目はアーキテクチャ・ステート値を有し、トレース生成ユニットはアーキテクチャ・ステート値の変化を示す複数のトレース要素を生成する。
【0027】
好ましくは、アーキテクチャ・ステート値の変化はアーキテクチャ・ステートの項目に新しい値を持たせ、トレース生成ユニットは、その新しい値が受け手によって導出できない場合にはその新しい値を示す複数のトレース要素を生成し、またアーキテクチャ・ステートのその項目に付随する各エントリ中に表示を行なう。
【0028】
データ処理装置のアーキテクチャ・ステートは、例えば、レジスタ、メモリ、フリップフロップ、フラグ、バスおよび個別ラインの状態、あるいは装置内の個別ユニット、例えばプロセッサコア、バスインタフェースユニット、キャッシュ、デバッグ、解析あるいはプロファイルロジック等のモードあるいは状態の値を含んでいる。
【0029】
好適な実施の形態では、アーキテクチャ・ステートのサブセットは、複数のレジスタの内容を含み、またテーブルはその複数のレジスタの各々に付随するレジスタ・エントリを有する。
【0030】
従って、テーブルは、内容が受け手によって導出可能なレジスタを表示する。
【0031】
好ましくは、1つのレジスタの内容が新しい値に変化したことを示す入力信号に応答して、トレース生成ユニットは、その新しい値が受け手によって導出可能である場合には、そのレジスタに付随する各エントリ中に表示を行なうように動作する。
【0032】
そのレジスタ値の変化は、レジスタそれ自身の内容、1または複数のその他のレジスタの内容、あるいは1または複数のメモリ場所に記憶された内容に依存する。レジスタ値の変化が1または複数のメモリ場所の内容に依存する場合には、好適な実施の形態では、そのメモリ場所を示す1つのトレース要素が生成される。
【0033】
好ましくは、1つのレジスタの内容の新しい値への変化を示す入力信号に応答して、トレース生成ユニットは、その新しい値が受け手によって導出できない場合には、その新しい値を示す複数のトレース要素を生成し、またそのレジスタに付随する各エントリ中に表示を行なうように動作する。
【0034】
従って、受け手はレジスタの新しい値の表示を与えられ、テーブルはそのレジスタの値が今や受け手によって導出可能であることを示すように更新される。
【0035】
好ましくは、複数のレジスタは複数のソースレジスタ(Source Register)および複数のあて先レジスタ(Destination Register)を含み、1つのあて先レジスタの内容が1または複数のソースレジスタの内容に依存して新しい値に変化したことを示す入力信号に応答して、トレース生成ユニットは、その新しい値が受け手によって導出できない場合には、その新しい値を示す複数のトレース要素を生成し、またそのあて先レジスタに付随する各エントリ中に表示を行なうように動作する。
【0036】
従って、1つのレジスタのその内容が受け手によって直接的に導出できなくても、トレース生成ユニットは、それらレジスタの値あるいは変化を起こしたアーキテクチャ・ステートの値が導出可能であるかどうかを判断することによって、その新しい値が導出できるかどうかを判断することができる。例えば、R4←R2+R3(すなわち、レジスタR2に含まれる値をレジスタR3に含まれる値に加えて、その結果をレジスタR4に置く)という操作を考えよう。もしテーブルが、レジスタR2とR3の値がどちらも受け手によって導出できないことを示していれば、受け手に対してR4の結果の値を提供するトレース要素が生成され、またテーブルにはレジスタR4の値が受け手によって導出可能であると注釈が加えられる。更に、あて先レジスタの新しい値がその他のアーキテクチャ・ステートに依存する状況では、トレース生成ユニットは、そのアーキテクチャ・ステートに付随するテーブル・エントリ、例えば、1または複数のメモリアドレスやレジスタに付随するテーブル・エントリ中に表示がなされているかどうかを判断することによって、その他のアーキテクチャ・ステートの値が導出可能であるかどうかを判断し、その新しい値が導出できるかどうかを決めることができることを理解されよう。
【0037】
好ましくは、複数のレジスタは複数のソースレジスタおよび複数のあて先レジスタを含み、1つのあて先レジスタの内容が1または複数のソースレジスタの内容に依存して新しい値に変化したことを示す入力信号に応答して、トレース生成ユニットは、その新しい値が受け手によって導出可能な場合には、そのあて先レジスタに付随する各エントリ中に表示を行なうように動作する。
【0038】
従って、上と同じ例示的実施例を用いると、もしテーブルがレジスタR2およびR3の値がどちらも受け手によって導出可能であることを示していれば、トレース要素を生成する必要はなく、テーブルにはレジスタR4の値が受け手によって導出可能であると注釈が加えられる。同じように、そのあて先レジスタの新しい値がその他のアーキテクチャ・ステートに依存する状況では、もしテーブルがそのアーキテクチャ・ステートの値が受け手によって導出可能であることを示していれば、トレース要素を生成する必要はなく、テーブルにはそのあて先レジスタの値が受け手によって導出可能であると注釈が加えられる。
【0039】
好ましくは、複数のレジスタは複数のあて先レジスタを含み、アーキテクチャ・ステートが更に複数のメモリアドレスの内容を含んでおり、1つのあて先レジスタの内容が1または複数のメモリアドレスの内容に依存して新しい値に変化したことを示す入力信号に応答して、トレース生成ユニットは、その1または複数のメモリアドレスが受け手によって導出できない場合には、その1または複数のメモリアドレスを示す複数のトレース要素を生成し、またその1または複数のメモリアドレスに付随する各エントリ中に表示を行なうように動作する。
【0040】
従って、トレースされる新しい値に加えて、その新しい値を含むアドレスもまたトレースされ、そのアドレスの内容が今や導出可能であることを示す表示が行なわれる。
【0041】
別の例では、複数のレジスタは複数のあて先レジスタを含み、アーキテクチャ・ステートが更に複数のメモリアドレスの内容を含んでおり、1つのあて先レジスタの内容が1または複数のメモリアドレスの内容に依存して新しい値に変化したことを示す入力信号に応答して、トレース生成ユニットは、その新しい値が受け手によって導出可能な場合には、その1または複数のメモリアドレスに付随する各エントリ中に表示を行なうように動作する。
【0042】
好適な実施の形態では、アーキテクチャ・ステートのサブセットには複数のメモリアドレスの内容が含まれ、テーブルはその複数のメモリアドレスの各々に付随するアドレス・エントリを有する。
【0043】
従って、テーブルは、受け手によって導出可能な値を有するそれらのメモリアドレスの表示を与える。テーブルは、値が受け手によって導出可能なメモリアドレスのみを示すように構成できることを理解されよう。あるいは、テーブルは、値が受け手によって導出可能なメモリアドレスおよびレジスタ、あるいはその他のアーキテクチャ・ステートを示すように構成することができる。
【0044】
好ましくは、1つのメモリアドレスの内容が新しい値に変化したことを示す入力信号に応答して、トレース生成ユニットは、その新しい値が受け手によって導出可能である場合には、そのメモリアドレスに付随する各アドレス・エントリ中に表示を行なうように動作する。
【0045】
そのメモリのその値の変化はメモリアドレスそれ自身の内容、1または複数のその他のメモリアドレスの内容、あるいは1または複数のレジスタに記憶された内容に依存することを理解されよう。
【0046】
更に、1つのメモリアドレスの内容が新しい値に変化したことを示す入力信号に応答して、トレース生成ユニットは、その新しい値が受け手によって導出できない場合には、その新しい値を示す複数のトレース要素を生成し、またそのメモリアドレスに付随する各アドレス・エントリ中に表示を行なうように動作することが好ましい。
【0047】
従って、受け手にはそのメモリアドレスの新しい値が表示され、テーブルはそのアドレスの値が今や受け手によって導出可能であることを示すように更新される。
【0048】
好ましくは、1つのメモリアドレスの内容が1または複数のレジスタに依存して新しい値に変化したことを示す入力信号に応答して、トレース生成ユニットは、その新しい値が受け手によって導出可能である場合には、そのメモリアドレスに付随する各アドレス・エントリ中に表示を行なうように動作する。
【0049】
好ましくは、1つのメモリアドレスの内容が1または複数のレジスタの内容に依存して新しい値に変化したことを示す入力信号に応答して、トレース生成ユニットは、その新しい値が受け手によって導出できない場合には、その新しい値を示す複数のトレース要素を生成し、またそのメモリアドレスに付随する各アドレス・エントリ中に表示を行なうように動作する。
【0050】
好ましくは、1つのメモリアドレスの内容が新しい値に変化したことを示す入力信号に応答して、トレース生成ユニットは、そのメモリアドレスが受け手によって導出できない場合には、そのメモリアドレスを示す複数のトレース要素を生成し、またそのメモリアドレスを与える各レジスタ・エントリ中に表示を与えるように動作する。
【0051】
好適な実施の形態では、テーブルは1または複数のテーブルを含み、各テーブルはベースメモリアドレスに付随するベースアドレス・エントリと、ベースアドレスから論理的にオフセットされたメモリアドレスのレンジの各々に付随するアドレス・エントリとを有し、トレース生成ユニットは、メモリアドレスの内容が新しい値に変化したことを示す入力信号に応答して、そのメモリアドレスがレンジのうちの1つに含まれるかどうかを判断し、およびもしそうであれば、そのメモリアドレスに付随するアドレス・エントリ中に表示を行なうように動作する。
【0052】
ベースアドレスと、ベースアドレスからオフセットしたメモリアドレスレンジとが与えられると、論理メモリアドレスを指定するビット数を少なくすることができ、ひいてはテーブルの大きさを縮小することができて有利である。例えば、メモリが2n個のエントリあるいは論理アドレスを有すると仮定しよう。もしテーブルにそれらのエントリの各々が導出可能であるかどうかの表示が与えられるとすると、テーブルは更に2n個のエントリを必要とすることは明らかである。しかし、プロセッサ演算の与えられたシーケンスに起因するメモリアクセスの発生は、メモリの特定のサブセットあるいはレンジ内に限られる場合が多い。従って、テーブルは、メモリアドレスのレンジの各々に付随して1つのアドレス・エントリを提供するように構成される。メモリ全体のアドレスを指定できるようにするために、ベースアドレスも与えられて、レンジはこのベースアドレスからオフセットされている。上の例の戻ると、メモリが2n個のアドレスを有すると仮定して、テーブルには2n/4個のエントリを含む1つのレンジが与えられる。これらのエントリの各々はn/4ビットを用いて指定でき、メモリ全体でアドレスを指定するためには、3n/4ビットを有するベースアドレスを与える必要がある。テーブルおよびレンジの大きさは特定の実施用途に合わせて選択できることを理解されよう。
【0053】
好ましくは、トレース生成ユニットは、1つのメモリアドレスの内容が新しい値に変化したことを示す入力信号に応答して、そのメモリアドレスがレンジの1つに含まれるかどうかを判断し、もしそうでなければ、テーブルの1つの中のすべてのアドレス・エントリをクリアし、そのテーブルのベースアドレス・エントリを更新して、その新しい値を示す複数のトレース要素を生成し、またそのメモリアドレスに付随するアドレス・エントリ中に表示を行なうように動作する。
【0054】
従って、現時点でテーブルによってカバーされているレンジの外のメモリアドレスに記憶された値に変化が生じたときは、値が変化したメモリアドレスが、テーブルによって提供されるレンジに含まれるように新しいベースアドレスが選ばれる。更に、アドレスに付随するすべてのエントリはクリアされることが好ましい。これは、それらのエントリが今や、受け手が値を導出できないアドレスに関連しているためである。またトレース要素の生成に続いて、値が変化したメモリアドレスに付随するアドレス・エントリ中に、その値が受け手によって導出可能であるという表示が行なわれる。テーブルを1つだけ提供することもできるが、それ以外に複数のテーブルを設けても構わないことは理解されよう。それらの各テーブルは1つのベースアドレスを有し、メモリの異なる領域をカバーする。そのような構成は、トレースされる動作がメモリの異なる部分への分岐やそこからの戻りを含む場合に特に有用である。
【0055】
好ましくは、ベースアドレス・エントリは論理メモリアドレスの少なくとも一部を記憶するように構成される。
【0056】
従って、任意の論理メモリアドレスに対して、ベースアドレスビットが論理メモリアドレスの最上位ビット(MSB)を形成し、アドレス・エントリ・ビットが論理メモリアドレスの最下位ビット(LSB)を形成するように構成することができる。あるいは、ベースアドレスは、スタックポインタレジスタの内容によって参照される論理メモリアドレスのMSBを含むことができる。ある種のデータ処理装置では、スタックポインタレジスタの使用が、ベースアドレスのための効率のよい場所を表すよい手段となることを理解されよう。
【0057】
好適な実施の形態では、前記テーブル中のエントリは定期的にクリアされる。
【0058】
上で説明したように、このことはトレース中で発生する可能性のある破壊の影響を改善する助けとなる。
【0059】
好適な実施の形態では、トレース生成ユニットは、実行される命令を示す命令トレース要素を生成するように動作する。
【0060】
命令トレース要素は受け手に対してデータ処理装置によって実行される命令、例えば、分岐やデータ処理演算などに関する情報を提供する。受け手に対して命令トレースを提供することによって、任意の特定の時刻にどの命令が実行されるか、ひいては任意のトレース要素がどのアーキテクチャ・ステートに関連するかを受け手が決定する手助けとなり、アーキテクチャ・ステートの再構築が更に容易になる。
【0061】
好ましくは、アーキテクチャ・ステートのサブセットにおける変化はデータ処理装置に対してシーケンス外の命令を実行させ、トレース生成ユニットは、実行すべきシーケンス外命令を示すトレース要素を生成するように動作する。
【0062】
従って、例えば分岐を引き起こす命令を実行する場合、受け手には、受信されるトレース要素を解釈する手助けとするために、命令のシーケンス中のどの命令を次に実行すべきかの表示が与えられる。
【0063】
好適な実施の形態では、受け手はトレース解析ツールであり、テーブルはトレース解析ツールによって導出可能なアーキテクチャ・ステートのサブセットを同定する。
【0064】
好ましくは、トレース解析ツールにはデータ処理装置が実行すべきシーケンシャル命令が示される。
【0065】
トレース解析ツールに対して、データ処理装置が実行する命令、例えばオペコード(opcode)に関する情報を提供することによって、アーキテクチャ・ステートを再構築する場合に、トレース生成ユニットによって与えられるトレース要素の解釈が簡単になる。このように、トレース解析ツールはプロセッサコアの動作を効率的にモデル化することを理解されよう。従って、例えば、トレース解析ツールが1または複数のトレース要素を受信して、更にアーキテクチャ・ステートA、B、およびCを含み、アーキテクチャ・ステートDに変化をもたらす命令が実行されるという表示が与えられれば、トレース解析ツールはそれらのトレース要素がアーキテクチャ・ステートDの変化に関連することを導出することができる。
【0066】
好ましくは、各々のシーケンシャル命令はそれらに付随して1つのアドレスを有し、トレース生成ユニットは、データ処理装置にシーケンス外命令を実行させたアーキテクチャ・ステートのその項目に変化を引き起こすために用いられたアーキテクチャ・ステートの複数項目に付随する各エントリ中に表示がなされているかどうかを判断して、シーケンス外命令のアドレスがトレース解析ツールによって導出可能かどうかを判断するように動作する。
【0067】
このことから、もしトレース解析ツールがシーケンス外命令のアドレスを導出可能であれば、次に実行すべき命令のアドレスを示すトレース要素を生成する必要はない。
【0068】
好ましくは、テーブルはデータ処理装置によって実行すべきシーケンシャル命令の表示を同定する。
【0069】
上で述べたように、実行すべきシーケンシャル命令の表示を同定するテーブルは、別になった1または複数のテーブルで構わないことを理解されよう。更に、上で述べたように、テーブルはデータ処理装置によって実行すべきオペコードを含むことが好ましい。
【0070】
好ましくは、トレース生成ユニットは、実行される命令を示す入力信号に応答して、トレース解析ツールがテーブルを参照することによって実行すべき命令を決定できるかどうかを判断し、またその命令がトレース解析ツールによって導出できない場合には、その命令を示す複数のトレース要素を生成するように動作する。
【0071】
典型的には、間接的分岐(間接的分岐というのは、データ処理装置によって実行される命令シーケンス中の分岐であり、従来の分岐命令の発行によって発生するのではなく、例えば、ロード命令や移動命令によってプログラムカウンタを操作するときに発生する)の結果、次に実行すべき命令のアドレスを決めるためにデータ処理装置によって用いられるレジスタへの変化が発生するときは(例えば、いわゆるプログラムカウンタ)、データトレースが発行され、分岐トレースが発行されるであろうことは理解されよう。データトレースは、ロードや移動命令に付随するデータ(例えば、オペランドデータ、結果のデータ等)をトレースすることを望むために生成するのが普通である。分岐トレースもまた、命令の結果として分岐が発生すると決定されたために発生するのであって、次に実行すべき命令のアドレス(すなわち、新しいプログラムカウンタ値)を表示する。
【0072】
本発明の第2の態様に従えばトレースモジュールが提供される。このトレースモジュールは、それがつながれているデータ処理装置のプログラムカウンタ値における変化をトレースするように動作する。データ処理装置は命令のシーケンスを実行するように構成され、プログラムカウンタ値はデータ処理装置が実行すべき次の命令を示している。トレースモジュールは:データ処理装置の1または複数の部品から、実行される現在の命令を示す入力信号を受信し、その入力信号から、現在の命令に付随するデータを示すデータトレース要素およびプログラムカウンタ値の変化を示す分岐トレース要素を選択的に生成するトレース生成ユニットを含んでおり、また現在の命令がプログラムカウンタ値に非シーケンシャルな変化を引き起こす間接的分岐命令である場合には、前記トレース生成ユニットは、データトレース要素または分岐トレース要素のいずれかの生成を抑制するように動作し、プログラムカウンタ値の変化は、生成されたトレース要素から導出可能であり、それによって、プログラムカウンタ値の変化は、データ処理装置によって実行すべき次の命令を決めるために生成されたトレース要素から、トレース要素の受け手によって後で再構築できるようになっている。
【0073】
プログラムカウンタ値の変化がデータトレースあるいは分岐トレースのいずれかによって導出可能であることが分かれば、それらのトレースのうちの片方は抑制しても構わないので、生成されるトレースの量を削減することができる。特に、データトレース要素は結果のデータを同定するので、間接的分岐命令の場合は、これが新しいプログラムカウンタを同定することになり、データトレース要素はそれ自身で、新しいプログラムカウンタ値の導出を可能にする。
【0074】
プログラムカウンタに記憶されている値を知ることは、受け手がデータ処理装置が実行すべき次の命令を決めることを可能にすることは理解されよう。更に、いわゆるパイプライン式データ処理装置では、プログラムカウンタが、任意の特別なパイプラインステージへロードあるいは通過させる次の命令(例えば、フェッチ、デコード、実行、あるいはライトバックステージの任意のもの)を参照するか、あるいは例えばプリフェッチやその他のユニットによってフェッチすべき次の命令を参照することも理解されよう。
【0075】
好ましくは、トレース生成ユニットはデータトレース要素の生成を抑制することができ、プログラムカウンタ値の変化は受け手によって分岐トレース要素から導出できる。
【0076】
従って、データトレース要素を生成する必要はない。それはこの情報が、新しいプログラムカウンタ値(すなわち、間接的分岐命令の結果データ)の表示を与える分岐トレース要素によって複製されるためである。データトレース要素を抑制することによって、トレースすべきデータ量が削減されることは理解されよう。
【0077】
あるいは、トレース生成ユニットは分岐トレース要素の生成を抑制することができ、プログラムカウンタ値の変化は受け手によってデータトレース要素から導出できる。
【0078】
従って、分岐トレース要素を生成する必要はない。それはこの情報が、プログラムカウンタの値の変化を表示するデータトレース要素によって複製されるためである。分岐トレース要素を抑制することによって、トレースすべきデータ量が削減されることは理解されよう。
【0079】
好ましくは、トレース生成ユニットが管理するテーブルが設けられて、プログラムカウンタ値の変化が、先に生成されたトレース要素から導出可能かどうかを同定する。トレース生成ユニットはこのテーブルを参照しながら、トレース生成時に、生成すべきトレース要素を決定する。
【0080】
プログラムカウンタ値の変化が、先に生成されたトレース要素から導出できるかどうかを同定するテーブルを設けることによって、生成する必要のあるトレース要素の数を大幅に削減できる。この削減が達成されるのは、そのテーブルが、変更されたプログラムカウンタ値が既に受け手に提供されているかどうかの記録を提供するためである。プログラムカウンタ値が既に受け手に提供されているかどうかを知ることによって、トレース生成ユニットはプログラムカウンタ値の変化が受け手によって導出、推測できるかどうかを判断できる。従って、トレース生成ユニットはテーブルを参照することができて、受け手によって導出できないプログラムカウンタ値の変化に関連するトレース要素のみを生成する必要がある。このことから、もしトレース生成ユニットが、受け手がプログラムカウンタ値を導出、推測、あるいは計算できると判断したときは、それらの変化に関連するトレース要素は生成する必要がなく、トレース要素の複製は回避できる。
【0081】
好ましくは、トレース生成ユニットは、プログラムカウンタ値の変化が受け手によって導出可能であると判断されたときは、データトレース要素および分岐トレース要素の生成を抑制するように動作する。
【0082】
従って、プログラムカウンタの値の変化および、実行すべき次の命令のアドレスが導出できると判断されたときは、データトレース要素と分岐トレース要素の両方とも抑制される。これはこの情報を受け手が導出できるからである。データトレース要素および分岐トレース要素の両方の生成を抑制することによって、生成されるトレースの量を大幅に削減できることを理解されよう。
【0083】
好ましくは、トレース生成ユニットは抑制を指示するプレースホルダ(Placeholder)を生成するように動作する。
【0084】
プレースホルダを提供することによって、実行すべき次の命令のアドレスが導出できるため、抑制を行なったことを受け手に対して都合よく表示することができる。
【0085】
好ましくは、トレース生成ユニットは、命令がデータ処理装置によって実行されていることを示す入力信号の受信に応答して、命令トレースを生成する。
【0086】
命令が実行されていることを示すことによって、プログラムカウンタ値の変更が推測できる。これは、命令が実行されるたびに、通常はプログラムカウンタは予め定められた値、例えば、‘m’ビットだけ増分されて、プログラムカウンタはメモリ中の次のシーケンシャル命令のアドレスを指すようになるからである。プログラムカウンタが増分されたことを示すために必要なデータ量は、項目の値が変更されたとしてプログラムカウンタを同定し、次にその新しい値を同定するために要するデータよりも大幅に少ないことは理解されよう。
【0087】
本発明の第3の態様に従えば、本発明の第1および第2の態様に従うトレースモジュールを含むデータ処理装置が提供される。
【0088】
本発明の第4の態様に従えば、データ処理装置のアーキテクチャ・ステートのサブセットにおける変化をトレースする方法が提供される。本方法は:前記データ処理装置の1または複数の部品から、アーキテクチャ・ステートの前記サブセットにおける変化を示す入力信号を受信する工程;先に生成されたトレース要素から導出できるアーキテクチャ・ステートを同定するテーブルを参照することによって、生成すべきトレース要素を決定する工程;および前記変化を示す複数のトレース要素を生成して、前記トレース要素の受け手が後でアーキテクチャ・ステートの前記サブセットを再構築できるようにする工程を含む。
【0089】
本発明の第5の態様に従えば、データ処理装置のプログラムカウンタ値の変化をトレースする方法が提供される。データ処理装置は命令のシーケンスを実行するように構成されており、プログラムカウンタ値はデータ処理装置が実行すべき次の命令を示している。本方法は:前記データ処理装置の1または複数の部品から、実行されている現在の命令を示す入力信号を受信する工程;前記入力信号から、現在の命令に付随するデータを示すデータトレース要素およびプログラムカウンタ値の変化を示す分岐トレース要素を選択的に生成する工程;および現在の命令が、プログラムカウンタ値に非シーケンシャルな変化をもたらす間接的分岐命令である場合は、データトレース要素あるいは分岐トレース要素のいずれかの生成を抑制する工程を含み、プログラムカウンタ値の変化は生成されたトレース要素から導出できるようになっている。
【0090】
本発明の第6の態様に従えば、コンピュータの読出し可能なメディア上に記録されたコンピュータプログラム製品であって、コンピュータ上で実行されたときに、本発明の第4および第5の態様の工程を実行するコンピュータプログラム製品が提供される。
【0091】
【実施例】
図1はオンチップ型トレースモジュールを提供するデータ処理装置2を模式的に示す。集積回路4はマイクロプロセッサコア6、キャッシュメモリ8、オンチップ型トレースモジュール10、およびオンチップ型トレースバッファ12を含む。この例示的実施の形態はいずれもオンチップ型のトレースモジュール10とトレースバッファ12とを示しているが、トレースモジュールおよび/またはトレースバッファを別に設けて、集積回路4あるいはプロセッサコア6とつなぐようにもできることを理解されよう。
【0092】
データ処理装置2はそれに付随してアーキテクチャ・ステートを有する。典型的には、いくつかのアーキテクチャ・ステートはプロセッサコア6が実行する各命令に関連する。その他のアーキテクチャ・ステートはプロセッサコアあるいは、プロセッサコア6またはデータ処理装置2がつながれているその他のモジュールやユニットの全体としての動作あるいは状態に関連しよう。そのようなアーキテクチャ・ステートにはレジスタの内容、特別なメモリ場所に記憶された値、あるいは各種のバス、パス、ライン、フラグ、あるいはデータ処理装置2内のモジュールや、データ処理装置2がつながれているモジュールの状態が含まれる。
【0093】
汎用コンピュータ16がオンチップ型トレースモジュール10およびオンチップ型トレースバッファ12へつながれている。汎用コンピュータ16は、トレース解析ツールとして動作し、そこで実行されるソフトウエアの制御下で、複数のトレース要素を含むトレースデータのストリームを復元する。それらのトレース要素は次にトレース解析ツールによって解析される。トレース要素はデータ処理装置2のアーキテクチャ・ステートを再構築するために用いられる情報を提供する。データ処理装置2のアーキテクチャ・ステートを再構築することによって、データ処理装置2内のステップごとの活動が決定できて、それを活用して、データ処理装置2によって実行される処理命令のシーケンスをデバッグすることができる。トレース解析ツールには、データ処理装置2のアーキテクチャ・ステートを再構築するときに参照する、プロセッサコア6によって実行される命令シーケンスを予め提供しておくほうが好ましい。
【0094】
集積回路4は外部メモリ14へつながれ、後者はキャッシュメモリ8内でキャッシュミスが発生したときにアクセスされる。それは、プロセッサコア6が動作中に、外部メモリ14中に実際に存在するスペースよりも多くのデータ処理命令およびデータにアクセスする必要がある場合にしばしば発生する。例えば、外部メモリ14が1MBの容量を有するとしよう。このとき、プロセッサコア6が32ビットのメモリアドレスを指定することが可能であれば、4GBの命令およびデータを指定することが可能となる。従って、プロセッサコア6によって必要とされる命令およびデータのすべてが外部記憶18、例えばハードディスクに記憶される。次に、プロセッサコア6が特別な動作状態において動作するようになって、その動作状態のための関連する命令およびデータが外部メモリ14へロードされる。キャッシュメモリ8、外部メモリ14、および外部記憶18の内容および状態は、プロセッサコア6の動作を正確に再構築するためにしばしばトレースする必要のあるアーキテクチャ・ステートの項目である。
【0095】
プロセッサコア6内部には、一時的にデータを記憶するための複数のレジスタを含むレジスタバンク20が設けられる。算術および論理ユニット(ALU)22もまた、レジスタの内容に対して各種の算術および論理演算を実行するために設けられる。ALU22による演算の後で、演算結果はバス24を介してレジスタバンク20へ循環して戻されるか、あるいはバス26を通ってキャッシュ8へ記憶される。レジスタバンク20の内容および状態、あるいはALU22または内部あるいは外部バスの状態もまた、アーキテクチャ・ステートの項目であり、プロセッサコア6の動作を正確に再構築するためにトレースする必要がしばしばある。
【0096】
図2は図1のオンチップ型トレースモジュール10内に設けられた部品をより詳細に示すブロック図である。オンチップ型トレースモジュール10は、プロセッサコア6によって実行される処理を示すデータをパス105上で受信するように配置されている。図1を参照すると、これは、コアからバス28を通って直接受信される付加的な制御型のデータと一緒に(これらはまた、その命令アドレスがインデックスされているという表示とか、或る命令が何らかの理由でそれの条件コードで失敗したという表示など、データ処理装置2のアーキテクチャ・ステートの表示を与える)、プロセッサコア6、キャッシュ8、およびオンチップ型トレースモジュール10を接続しているバス24および26から受信されよう(そのようなデータは、例えば、プロセッサコア6に対して与えられる命令および/またはデータ、およびプロセッサコア6のALU22によって生成されるデータなどのように、データ処理装置2のアーキテクチャ・ステートを表示する)。当業者には理解されるように、いくつかの実施の形態では、両タイプのデータを、トレースモジュール10とプロセッサコア6との間の単一バス(多重バス24、26、28等の代わりの)を通ってトレースモジュール10へ送ることもできる。
【0097】
同期ロジック100は入力信号を、オンチップ型トレースモジュール10内で使用するのにより適した内部向けの信号へ変換するように構成されている。これらの内部向け信号は次にトリガ110およびトレース生成ロジック120へ送られる。しかし、理解されるように、トリガ110およびトレース生成ロジック120は同じ信号を受信する必要はない。基本的に、トリガ110は、例えば、命令アドレス、データ値、レジスタアクセス、あるいは何らかのその他アーキテクチャ・ステートの発生のようなトリガ可能な事象に関連するデータを受信する必要がある。トレース生成ロジック120は、トリガ110によって発行されるイネーブル信号に依存して、トレースする必要のある任意のデータを受信する必要がある。トレース生成ロジック120は更に、汎用コンピュータ16からパス125上にコンフィギュレーション情報を受信するように構成されており、後者の内容は必要に応じて、オンチップ型トレースモジュール10の部品によって読み出すことができる。
【0098】
トリガ110がトレース・ストリームを生成すべき事象を検出するときは常に、それはトレース生成ロジック120に対してパス125上へイネーブル信号を送信して、トレースのオンおよびオフを行なう。トレース生成ロジック120はそれに従って反応し、必要なトレース要素をFIFO130に対してパス145および155上へ出力する。パス135上へは、例えば命令のみのトレース、命令およびデータのトレース等、トレースすべき信号タイプを指定する多様なイネーブル信号が提供されるであろうことを理解されよう。
【0099】
典型的には、トレース生成ロジック120によって生成されるトレース信号あるいはトレース要素は、高優先度または低優先度のいずれかに分類される。この分類はトレース生成ブロック120内で管理されることが好ましく、予め定義したり、ユーザがプログラムしたりする。図2に示す好適な実施の形態では、高優先度のトレース要素は、例えば分岐アドレスに関連するトレース信号のように命令トレースに関するものであり、他方、低優先度のトレース要素は、データトレースに関連するものである。そのような低優先度のトレース要素は同期を外すことなしに失われてもよい。FIFO130からトレース生成ロジック120によって受信される信号が存在しないときは、トレース生成ロジックは、トリガ110からパス135上で受信されるイネーブル信号に依存して、FIFO130に対して適当なトレースデータを出力するように構成されよう。この結果、例えば、命令トレース要素がパス145上へ発行され、データトレース要素がパス155上へ発行される。当業者には明らかなように、図2には明確な2つのパスが示されているが、命令トレースおよびデータトレースの両信号は典型的にはトレース生成ロジック120とFIFO130との間で接続を共有することができる。
【0100】
命令のトレースに加えてデータをトレースするときには、パス155上へ発行されるデータトレース要素は、トレース生成ロジック120からFIFO130へのトレースポート帯域幅の大部分を使用することができることが分かった。次にトレース要素は狭い出力トレースポートを通って、FIFO130からトレースバッファ12へパス150を通って流れ出す。典型的には、トレースバッファへ向かってパス150上へ発行されるすべてのトレース要素には、その出力トレースが有効であるか否かを表示するトレース有効信号がパス140上に伴う。トレース有効信号は、関連するトレースモジュールがそのクロックサイクルにおいて発行すべきトレースデータを持たないときは、無効にセットされるのが一般的である。
【0101】
FIFO130からの出力帯域幅は典型的には入力帯域幅よりも小さいため、例えば、トレース生成ブロック120によって発行されるトレースデータが持続的バーストを起こすときなどにFIFO130がオーバフローする可能性がある。一例として、入力トレースポートはトレースバッファへの出力トレースポートよりも4−5倍広くできる。
【0102】
この問題点を緩和するために探求された1つの既知の方法は、逆にオンチップ型トレースモジュール10からプロセッサコア6へFIFOフル信号を発行することによって、一時的にプロセッサコア6を休止させて、FIFO130内のトレース要素のレベルが下がるのを待つものであった。しかし、固有の待ち時間やその他の問題から、この方法は信頼性に欠けることが判明した。その理由は、FIFOフル信号の発行と、プロセッサコア6の休止との期間に、コア6が休止するまで活動の結果として更に多くのトレース要素が発行されて、いずれにしてもFIFO130がオーバフローする傾向を示すことがしばしば見受けられたためである。
【0103】
この問題点を緩和する別の方法は、係属中の米国特許出願第10/206,829号(2002年7月29日付け出願、また2002年6月7日出願の英国特許出願第0213149.8号を優先権主張)に述べられているが、抑制信号が用いられており、それをFIFO130がパス160を通って直接トレース生成ロジック120へ発行するようになっている。好ましくは、FIFO130の満杯度が予め定められた抑制レベルに到達すると、FIFO130がトレース生成ロジック120に対して抑制信号を発行して、抑制信号がアサートされている間は、トレース生成ロジック120がパス155上へデータトレース要素の発行を停止するように構成される。これは、データトレース要素が失われることを意味するが、それらは低優先度のトレース要素と見られており、同期化情報を失うことなく失われてもよい。更に、データトレースは高優先度の命令トレースよりも広い帯域幅を使用するのが一般的であるため、データトレースの抑制は、FIFO130が満杯になるのを回避するのにしばしば十分であることが分かった。
【0104】
FIFO130内のトレース要素の量がその後予め定められたリスタートレベルまで低下すると、FIFO130は抑制信号のアサートを中止し、それによってトレース生成ブロック120がパス155上へデータトレース要素の発行を再開するように構成される。
【0105】
予め定められる抑制レベルおよび予め定められるリスタートレベルは実施の形態に依存して選ぶことができることを理解されよう。しかし、一例として、60バイトのFIFOでは、予め定められる抑制レベルは45バイトに設定できよう(すなわち、FIFOが75%満杯のとき)。また予め定められるリスタートレベルは、抑制信号のアサート停止された後で、直ちに抑制信号の再アサートを必要としないように、FIFO内に記憶されるトレース要素の量を増やす余裕がいくらか残っていることを保証するために、45バイトよりも少し低い値に設定されよう。
【0106】
抑制信号の発行時に単にデータトレース要素を破棄する動作のみで常にFIFO130のオーバフローを回避できるわけではないため、FIFO130はそれが満杯になったときに、パス170上へオーバフロー信号を発行できるようになっていて、それによってトレース生成ロジック120はそのオーバフロー信号がアサート停止されるまではすべてのトレース要素の発行を停止する。そのようなシナリオでは、高優先度と低優先度の両方のトレースデータが失われることが明らかなため、抑制信号を発行する予め定められた抑制レベルを適当に選ぶことによって、オーバフロー信号を発行する必要のある場合が非常に稀であるように配慮されている。
【0107】
あるいは、トレース生成ロジック120に対して抑制信号を発行することに加えて、FIFO130は抑制信号がアサートされた後で、命令トレース要素を記憶するだけの付加的な内部工程を取るようになっている(これによって、抑制信号発行とその抑制信号に対するトレース生成ロジック120の応答との間の待ち時間をなくする)。
【0108】
これらの方法はすべて、データの生成を抑制または停止させるか、あるいは或る要素は失うことを許しながらFIFO130中でのオーバフローの効果を最小に留めようとするものであることを理解されよう。更に、トレース要素を失うことは望ましくはないし、或る状況では、プロセッサを停止させることがその動作に悪影響を及ぼし、エラーや故障を覆い隠す可能性があることも理解されよう。
【0109】
しかし、本発明の実施の形態では更に、ともかく生成されるトレース要素の量が低下すれば、トレース生成ロジック120のオーバフロー流出の可能性は少なくなると見ている。従って、本発明の実施の形態は、トレース要素それ自体にある程度の冗長性があって、もしその冗長性を除去すれば生成するトレース要素の量を減らすことができると理解している。
【0110】
この冗長性は、例えば、先に生成したトレース要素を繰り返すことで発生する。そのような繰り返しは、例えば、アーキテクチャ・ステートを含むトレース要素が発行され、特にアーキテクチャ・ステートが変化していないのにそれに続いてトレース要素が発行されるような場合に発生する。アーキテクチャ・ステートが変化していなければ、本発明の実施の形態は、それが先に生成されたトレース要素から導出、推測、あるいは暗示されると理解している。このことから、アーキテクチャ・ステートを導出することによって、そのような先に生成されたトレース要素の繰り返しは解消でき、それによってトレース生成ロジック120が生成するトレース要素の量を削減できる。
【0111】
更に、冗長性は、例えば、変化に応答して生成されたトレース要素が決定できたはずのものであった場合に発生し得る。そのような決定は、例えば、アーキテクチャ・ステートの変化に関する情報を含むトレース要素を発行することになって、その変化を引き起こすために使用されたアーキテクチャ・ステートが先に生成されたトレース要素中に提供されている場合に可能である。アーキテクチャ・ステートが先に生成されたトレース要素に依存することが分かれば、それをそれら先に生成されたトレース要素から決定または計算することができるはずである。このことから、決定可能なトレース要素の生成は回避できて、それによってトレース生成ロジック120が生成するトレース要素量を更に削減できる。
【0112】
このように、トレース生成ロジック120が生成するトレース要素の量は、トレース解析ツールによって導出できないものに限ることができる。上述のように、アーキテクチャ・ステートは、それが先にトレース生成ロジック120によって発行されたトレース要素中に与えられているか、あるいはそれら先に生成されたトレース要素から導出できれば、トレース解析ツールによって導出できるであろうことを理解されよう。
【0113】
トレース生成ロジック120が、アーキテクチャ・ステートの変化がトレース解析ツールによって導出できるかどうかを判断できるようにするために、トレース生成ロジック120は、それに対してトレース要素が提供されたアーキテクチャ・ステートの記録を管理する。この例示的な実施の形態では、この記録は複数のテーブル180の形で提供される。テーブル180にはレジスタテーブル、メモリテーブル、および命令メモリテーブルが含まれる。更に、複数のレジスタテーブル、メモリテーブル、および命令メモリテーブルを設けることもできる。複数のメモリテーブルを設けることは、サブルーチンやその他の命令シーケンスを実行することによって、メモリの特別な領域への分岐が発生する場合や多重スタックが生成される場合に特に適している。しかし、この記録は任意の適当な形を取ることができ、1つのテーブルだけでもよいことは理解されよう。
【0114】
テーブルにはトレースすべきアーキテクチャ・ステートの各項目について1つのエントリが設けられる。以下でより詳細に説明するように、アーキテクチャ・ステートのその項目の値がトレース解析ツールによって導出可能であると判断されたときは、そのエントリに対して表示がなされる。従って、変化が発生すると、トレース生成ロジック120はそれらのエントリを参照して、アーキテクチャ・ステートのどの項目が導出できないので、それらの項目についてトレース要素を生成しなければならないかを決めることができる。
【0115】
図3A〜3Eは、トレース要素を生成する場合にオンチップ型トレースモジュール10によって実行される処理工程をテーブル180を使って示している。ここに述べる処理はトリガ可能な事象が発生したことを想定しており、トリガ110がトレース生成ロジック120を許可してトレース要素を生成させること、またトレース解析ツールに記憶された基準オペコード(reference opcode)中のその位置にある命令がプロセッサコア6によって実行される命令と同期していることを仮定している。この例示的実施の形態でトレースされるアーキテクチャ・ステートはレジスタおよびメモリアドレスだけを含むようになっているが、任意のアーキテクチャ・ステートをトレースできることを理解されよう。
【0116】
図3Aは全体構成を示しているが、トレース要素の生成時に、一旦許可されればトレース生成ロジック120が取る主要な工程を示している。プロセッサコア6によって実行される命令を示すデータの受信に応答して取られる主要な工程が示されており、それらには命令トレースの生成、およびそれに続く分岐命令のトレースおよびデータトレースを含む実行工程が含まれる。
【0117】
処理は工程S10から始まり、工程S20へ進む。
【0118】
工程S20では、トレース生成ロジック120はプロセッサコア6によって命令実行が表示されるのを待つ。
【0119】
一旦その表示が受信されると、処理は工程S22へ進み、テーブルの定期的なクリーニングを行なうオプションのルーチンが実行されよう。先に述べたように、このようなテーブルの定期的クリーニングは、もし何らかのトレース破壊が発生しても、トレースの一部だけの損失で済むことを保証する。もし破壊が発生すれば、トレース生成ロジック120は或るアーキテクチャ・ステートはトレース解析ツールによって導出できると仮定するが、トレース解析ツールがトレース要素を受信しないか、あるいはトレース要素が何らかの理由で破壊されているために、必ずしもそのようにならない。テーブルをクリアすることによってその処理が等価的にリセットされるため、トレース解析ツールが導出できるアーキテクチャ・ステートはないと考えられる。従って、後続の変化がトレースされ、テーブルはそれに従って更新される。もしテーブルの定期的なクリアを実行するのであれば、処理は工程S24へ進み、テーブル中のエントリがクリアされる。すべてのテーブルのすべてのエントリをクリアするか、あるいは異なる時点に異なるテーブル、あるいはテーブルの一部をクリアすることによって、生成する必要のあるトレース要素の数を減らすことができることは理解されよう。
【0120】
次に処理は工程S30へ進み、FIFO130に対して命令トレース要素が発行される。命令トレース要素は、プロセッサコア6によって処理されているオペコードと、トレース解析ツールに記憶されている基準オペコードとの間に同期が保たれていることを保証する。命令トレースは最も単純な形において、プロセッサコア6がその命令が何であるかについての情報を必ずしも提供することなく、次の命令へ移行したことを表示するだけである。
【0121】
その後、以下の図3Eを参照しながら説明するように、必要に応じてオペコードのトレースを含むオプションのシーケンスが実行されよう。
【0122】
工程S40では、実行されている命令がいわゆる間接的分岐に関連するかどうかが判断される。間接的分岐というのは、プロセッサコア6によって実行される命令シーケンス中の分岐であって、従来のように分岐命令の発行の結果として発生するのではなく、例えばプログラムカウンタの操作によって発生する分岐であることを理解されよう。
【0123】
分岐トレース
その命令が間接的分岐に関連するときは、間接的分岐に関連する一連の工程(S50,S60,S90,S80)が実行される。そうでなければ、処理は工程S70へ進む。間接的分岐はアーキテクチャ・ステートの何らかの他の部品を参照しながらプログラムカウンタ(pc)を修正し、オペコードから類推することが不可能な行き先を与える命令である。例えば、命令B#20(すなわち、プログラムカウンタの内容に対して即値“20”を加算する)は直接的分岐の例である。というのは、行き先がオペコードから直接導出できるからである。他方、命令ADD pc,pc,r1(すなわち、プログラムカウンタに対してレジスタr1の内容を加えて、結果をプログラムカウンタに記憶する)は間接的分岐の例である。というのは、行き先がオペコードから直接には導出できず、レジスタr1の内容に依存するからである。pcは単なる1つのアーキテクチャ・ステートの項目であり、それがトレース解析ツールによって導出可能ならその値はトレースする必要がないことを理解されよう。しかし、pcは正しい同期化を保証するためにはトレース解析ツールによって導出できる必要のあるアーキテクチャ・ステートの1項目であることも理解されよう。
【0124】
もしも命令が間接的分岐に関連していれば、工程S50において、その間接的分岐がpcへのロード(すなわち、値をプログラムカウンタにロードされたメモリからのアクセス)を含むかどうかが判断される。
【0125】
もし間接的分岐がpcへのロードを含めば、処理は工程S60へ進み、アクセスされるメモリ場所のアドレスに対するテーブル・エントリ中に、そのメモリ場所に記憶された値がトレース解析ツールによって導出できることを示す表示がなされているかどうかを判断する。アクセスされるメモリ場所は、間接的分岐が行なわれるべきアドレスを示す値を提供する。もしテーブル中に表示がなされていれば、トレース要素を生成する必要はなく、処理は工程S70へ進む。もしテーブル中に表示がなければ、工程S65において、データ転送に付随するデータが受信されるまで処理は停止し、その後、工程S80において、特別なアドレスへの分岐が発生したことを示す命令トレースが発行されて、処理は工程S70へ進む。
【0126】
その代わり、もし間接的分岐がpcへのロードを含まなければ(すなわち、命令がメモリからのアクセスを含まず、その代わりに1または複数のレジスタへのアクセスを含む場合)、処理は工程S90へ進み、アクセスされるソースレジスタ(単数または複数)に関するテーブル・エントリ中に、そのソースレジスタ(単数または複数)の値がトレース解析ツールによって導出可能であるという表示がなされているかどうかが判断される。ソースレジスタ(単数または複数)は分岐を行なうべき先のアドレスを指定する値を提供する。もしそのような表示がテーブル中になされていれば、トレース要素を生成する必要はなく、処理は工程S70へ進む。もしテーブル中に表示がなければ、工程S80において特別なアドレスへの間接的分岐が発生したことを示す命令トレースが発行され、処理は工程S70へ進む。
【0127】
上で述べたように、もし工程S40において命令が間接的分岐に関連しないことが判明すれば、処理は直接、工程S70へ進む。
【0128】
従って、直接的分岐に関しては工程S30のように命令トレースだけを生成すればよい。それは、トレース解析ツール中の基準オペコードがプロセッサコア6が実行すべき次の命令を指定し、それからプログラムカウンタの値を導出することができ、同期の維持が保証されるためである。
【0129】
更にデータをトレースするときは、ロード、ストア、あるいはデータ処理などの命令に付随する、データトレースに関連する一連の工程(S100,S110,および図3B,3C,および3D)が実行される。
【0130】
データトレース
工程S70においてトレースすべきデータがあるかどうかが判断される。これは、例えばデータ転送のように、命令がプログラムカウンタ以外のアーキテクチャ・ステート、あるいはプログラムカウンタも含むその他のアーキテクチャ・ステートを修飾あるいは変更するためである。それ以上にデータをトレースする必要がない場合には、処理は工程S20へ戻る。もしトレースすべき更なるデータがあれば、処理は工程S100へ進み、そこでそのデータ転送に付随するデータが受信されるまで処理は停止する。一旦そのデータが受信されれば、処理は工程S110へ進む。
【0131】
工程S110では、データ転送のタイプが判定される。
【0132】
工程S110において、もしそのデータ転送がロード命令(すなわち、レジスタ中へ記憶すべきメモリからのアクセス)に関連していると判断されれば、図3Bに示すように処理は工程S120へ進む。
【0133】
工程S110において、もしもそのデータ転送がデータ処理命令(すなわち、1または複数のソースレジスタに含まれる値に対する演算であり、その結果はあて先レジスタに記憶される)に関連していると判断されれば、図3Cに示すように処理は工程S230へ進む。
【0134】
工程S110において、もしもそのデータ転送がストア命令(すなわち、メモリに記憶すべきレジスタからのアクセス)に関連していると判断されれば、図3Dに示すように処理は工程S260へ進む。
【0135】
ロード命令
図3Bはロード命令をトレースするための処理工程を示している。
【0136】
工程S120において、アクセスすべきメモリ中のアドレスに対応する値を含むレジスタの内容を、そのレジスタに付随するレジスタテーブル・エントリ中に表示がなされているかどうかを判断することによって、トレース解析ツールが導出できるかどうかが判断される。ある種の複雑なアドレッシングモードでは、そこからメモリのアドレスを取り出すレジスタ(単数または複数)はトレース解析ツールによって導出可能でなければならないことを理解されよう。
【0137】
そのレジスタに付随するレジスタテーブル・エントリ中に表示がなされていないため、レジスタ内容が導出できないと判断されたときは、処理は工程S130へ進む。工程S130において、アドレストレースが発行され、処理は工程S140へ進む。工程S140では、アクセスすべきメモリ中のアドレスに対応する値を含むレジスタに付随するレジスタテーブル・エントリが更新されて、そのレジスタの内容がトレース解析ツールによって導出可能であると表示される。しかし上で述べたように、例えば、多重レジスタを使用するようなある種の複雑なアドレッシングモードでは、レジスタ(単数または複数)の内容を決定あるいは推測すらできない場合があり、そのときは付随するレジスタテーブル・エントリに対してそのような表示を行なうことはない。
【0138】
そのレジスタに付随するレジスタテーブル・エントリに表示がなされているため、そのレジスタの内容を導出できると判断された場合には、アドレストレースは不要であり、処理は工程S150へ進む。
【0139】
工程S150では、アクセスすべきメモリアドレスの内容を、そのメモリアドレスに付随するメモリテーブル・エントリ中に表示がなされているかどうかを判断することによって、トレース解析ツールが導出できるかどうかが判断される。
【0140】
アクセスすべきメモリアドレスの内容が、そのメモリアドレスに付随するメモリテーブル・エントリ中に表示がないため、導出できないと判断された場合は、処理は工程S160へ進む。
【0141】
工程S160では、ロード命令が、間接的分岐を生ずるプログラムカウンタへのロードであるかどうかが判断される。
【0142】
もしもそのロード命令が間接的分岐をもたらすと判断されれば、トレース要素を生成する必要はなく(トレース要素は既に工程S80で生成されているため)、処理は工程S170へ進む。
【0143】
もしロード命令が間接的分岐を引き起こさないと判断されれば、アクセスすべきメモリアドレスの内容を示すデータトレース要素が工程S180で発行されて、処理は工程S170へ進む。
【0144】
工程S170では、アクセスすべきメモリアドレスがメモリテーブルの現在のレンジに含まれるかどうかが判断される。
【0145】
もしアクセスすべきメモリアドレスがメモリテーブルの現在のレンジに含まれないと判断されれば、工程S190およびS200においてメモリテーブルのレンジが調整される。工程S190では、メモリテーブルのすべてのエントリがクリアされ、工程S200ではメモリテーブルのメモリベースアドレスが更新されて、処理は工程S210へ進む。メモリベースアドレスの更新例は以下の図4Aおよび図4Bを参照しながら、より詳細に説明する。
【0146】
アクセスすべきメモリアドレスがメモリテーブルの現在のレンジに含まれると判断された場合は、処理は工程S210へ進む。
【0147】
工程S210では、アクセスすべきメモリアドレスに付随するメモリテーブル中のエントリが更新され、このメモリアドレスの内容がトレース解析ツールによって導出可能であることが表示されて、処理は工程S220へ進む。
【0148】
しかし、もしも工程S150で、アクセスすべきメモリアドレスの内容が、そのメモリアドレスに付随するメモリテーブル・エントリに表示がなされているため、導出可能であると判断されれば、トレース要素を生成する必要はなく、処理は直接、工程S220へ進む。
【0149】
工程S220では、その中へデータをロードすべきレジスタに付随するレジスタテーブル中のエントリが更新され、このレジスタの内容がトレース解析ツールによって導出できることが表示されて、処理は工程S20へ戻る。
【0150】
データ処理命令
図3Cはデータ処理命令をトレースするための処理工程を示す。
【0151】
工程S230では、ソースレジスタ(単数または複数)の値(単数または複数)を、各々のソースレジスタに付随するレジスタテーブル・エントリ中に表示がなされているかどうかを判断することによって、トレース解析ツールが導出できるかどうかが判断される。
【0152】
もし、ソースレジスタ(単数または複数)の値が、それらのソースレジスタに付随するレジスタテーブル・エントリ中に表示がなされていないために導出できないと判断されれば、処理は工程S235へ進む。
【0153】
工程S235では、データ処理命令が、間接的分岐を引き起こすプログラムカウンタの操作を含むかどうかが判断される。
【0154】
もしデータ処理命令の結果、間接的分岐が発生すると判断されれば、トレース要素を生成する必要はなく(トレース要素は既に工程S80で生成されているはず)、処理は工程S250へ進む。
【0155】
もしもデータ処理命令が間接的分岐を引き起こさないと判断されれば、工程S240においてあて先レジスタの新しい値を指定するトレース要素(単数または複数)が生成され、処理は工程S250へ進む。
【0156】
しかし、もし工程S230でソースレジスタ(単数または複数)の値が、それらのソースレジスタに付随するレジスタテーブル・エントリ中に表示がなされているため、導出可能であると判断されれば、トレース要素を生成する必要はなく、処理は工程S250へ進む。
【0157】
工程S250では、あて先レジスタに付随するレジスタテーブル中のエントリが更新され、このレジスタの内容がトレース解析ツールによって導出できることが表示され、処理は工程S20へ戻る。
【0158】
ストア命令
図3Dはストア命令をトレースするための処理工程を示す。
【0159】
工程S260では、その中にデータを記憶しようとするメモリ中のアドレスに対応する値を含むレジスタの内容を、そのレジスタに付随するレジスタテーブル・エントリ中に表示がなされているかどうかを判断することによって、トレース解析ツールが導出できるかどうかが判断される。ある種の複雑なアドレッシングモードに関しては、そこからメモリ中のアドレスを取り出すレジスタ(単数または複数)はトレース解析ツールによって導出可能でなければならないことを理解されよう。
【0160】
そのレジスタの内容が、そのレジスタに付随するレジスタテーブル・エントリ中に表示がなされていないため、導出できないと判断された場合には、処理は工程S270へ進む。工程S270では、アドレストレースが発行されて、処理は工程S280へ進む。工程S280では、その中へデータを記憶しようとするメモリアドレスに対応する値を含むレジスタに付随するレジスタテーブル・エントリが更新され、そのレジスタの内容がトレース解析ツールによって導出できることが表示されて、処理は工程S290へ進む。しかし、上で述べたように、例えば、多重レジスタを採用するようなある種の複雑なアドレッシングモードでは、レジスタ(単数または複数)の内容を決定あるいは推測さえできない場合があり、その場合には付随するレジスタテーブル・エントリに対してそのような表示は行なわれない。
【0161】
レジスタの内容が、そのレジスタに付随するレジスタテーブル・エントリ中に表示がなされていることから、導出できると判断された場合は、アドレストレースは不要であり、処理は直接、工程S290へ進む。
【0162】
工程S290では、ソースレジスタの値を、そのレジスタに付随するレジスタテーブル・エントリ中に表示がなされているかどうかを判断することによって、トレース解析ツールが導出できるかどうかが判断される。
【0163】
もしソースレジスタの値が、そのソースレジスタに付随するレジスタテーブル・エントリ中に表示がなされていない理由で、導出できないと判断されれば、処理は工程S300へ進む。工程S300では、ソースレジスタの値を表示するトレース要素が生成されて、処理は工程S310へ進む。工程S310では、ソースレジスタに付随するレジスタテーブル中のエントリが更新され、このレジスタの内容がトレース解析ツールによって導出可能であることが示されて、処理は工程S320へ進む。
【0164】
しかしもしも工程S290において、ソースレジスタに付随するレジスタテーブル・エントリ中に表示がなされていることから、そのソースレジスタの値が導出できると判断されれば、トレース要素の生成は不要であり、処理は工程S320へ進む。
【0165】
工程S320では、その中にデータを記憶しようとするメモリアドレスが、メモリテーブルの現在のレンジに含まれるかどうかが判断される。
【0166】
もしそのメモリアドレスがメモリテーブルの現在のレンジに含まれないと判断されれば、工程S330およびS340においてメモリテーブルのレンジが調整される。工程S330では、そのメモリテーブル中のすべてのエントリがクリアされ、工程S340では、そのメモリテーブルのメモリベースアドレスが更新されて、処理は工程S350へ進む。
【0167】
しかしもし工程S320において、その中にデータを記憶しようとするメモリアドレスがメモリテーブルの現在のレンジに含まれると判断されれば、処理は直接、工程S350へ進む。
【0168】
工程S350では、その中にデータを記憶しようとするメモリアドレスに付随するメモリテーブル中のエントリが更新され、このメモリアドレスの内容がトレース解析ツールによって導出できることが表示されて、処理は工程S20へ戻る。
【0169】
オペコードトレース
図3Eはオペコードのトレースに関連するオプションの一連の工程を示す。上で述べたように、トレース解析ツールは基準オペコードを記憶するが、オペコードは、データ処理装置2のアーキテクチャ・ステートを再構築するためにトレース生成ロジックによって生成されるトレース要素を解読するために用いられる。トレース解析ツール内のオペコード中の場所は、プロセッサコア6によって実行される命令と同期する。プロセッサコア6によって実行される命令がトレース解析ツールの基準オペコード内に含まれていなければ、図3Eに示す工程はそのオペコードのトレースを許可するのが有利である。
【0170】
典型的には、トレース解析ツールに含まれる基準オペコードを表示するために別の命令メモリテーブルが用意される。これは、命令とデータとはメモリの異なる部分に常駐するのが普通だからである。しかし、特定のメモリアドレスがトレース解析ツールによって導出できるかどうかを表示するために用いられるのと同じテーブルを同様に利用できることも理解されよう。
【0171】
従って、工程S360では、プロセッサコア6によって処理されている命令を、その命令のメモリアドレスに付随する命令メモリテーブル・エントリ中に表示がなされているかどうかを判断することによって、トレース解析ツールが導出できるかどうかが判断される。
【0172】
もし工程S360において、その命令のメモリアドレスに付随する命令メモリテーブル・エントリ中に表示がなされていない理由で、その命令が導出できないと判断されれば、処理は工程S370へ進む。工程S370では、プロセッサコア6によって処理されている命令を示すトレース要素が生成され、処理は工程S380へ進む。
【0173】
工程S380では、その命令のメモリアドレスが、命令メモリテーブルの現在のレンジに含まれるかどうかが判断される。
【0174】
もしも工程S380で、その命令のメモリアドレスが命令メモリテーブルの現在のレンジに含まれないと判断されれば、工程S390およびS400において命令メモリテーブルのレンジが調整される。工程S390では、その命令メモリテーブルのすべてのエントリがクリアされ、工程S400ではその命令メモリテーブルのメモリベースアドレスが更新されて、処理は工程S410へ進む。
【0175】
もし工程S380で、その命令のメモリアドレスが命令メモリテーブルの現在のレンジに含まれると判断されれば、処理は工程S410へ進む。
【0176】
工程S410では、その命令のメモリアドレスに付随する命令メモリテーブル中のエントリが更新され、この命令がトレース解析ツールによって導出できることが示されて、処理は工程S40へ進む。
【0177】
しかし、工程S360でその命令のメモリアドレスに付随する命令メモリテーブル・エントリ中に表示がなされていることから、その命令が導出できると判断されたときは、処理は直接、工程S40へ進む。
【0178】
図4Aおよび4Bは、プロセッサコアによって実行される命令の例を、オンチップ型トレースモジュール10のトレース生成ロジック120によって生成される付随トレース要素およびテーブル・エントリと一緒に示している。
【0179】
次のように仮定する。すなわち、トリガ可能な事象が発生したこと、トリガ110によってトレース生成ロジック120がトレース要素の生成を許可されたこと、およびトレース解析ツールに記憶されている基準オペコード中のその場所にある命令は、プロセッサコア6によって実行されている命令と同期していること。更に、次のように仮定する。すべての命令はトレース解析ツールによって導出可能であり、オペコードのトレースは必要ない。更に、レジスタ、メモリ、およびオペコードの各テーブルが別々に設けられている。
【0180】
トレースが発行される場合は、それはそれのタイプ、位置、および任意の関連する値やパラメータが、既知のトレースプロトコルに類似した方法で同定できるように表現されることが仮定されている。そのようなプロトコルでは、トレースが関連するアーキテクチャ・ステート変化が導出できるためトレースが抑制された場所に、プレースホルダを挿入する必要がある。
【0181】
工程S20では、トレース生成ロジック120は命令が受信されるのを待つ。
【0182】
命令あるいはオペコードLDR r1,[r0](すなわち、r0の内容によって参照されるメモリアドレスに記憶されている値をr1にロードする)が受信される(図4Aに1aで示すように)。
【0183】
工程S22では、テーブルをクリアすべきかどうかが決められる。典型的には、クリアはトリガ可能な事象の後で行なわれ、それ以降は定期的にクリアが行なわれる。例えば、命令を‘n’回実行するごとに、クリアを行なうようにしてもよい。この場合には、レジスタテーブルおよびメモリテーブルをクリアすべきかどうか決定され、工程S24においてそれらのテーブルのエントリがクリアされる(しかし、必要に応じて、すべてのテーブルをクリアあるいはリセットすることもできることは理解されよう)。
【0184】
工程S30では、プロセッサコア6とトレース解析ツールとの間でオペコード同期を保つために、命令トレースが発行される(図4Aに1bで示すように)。例示の目的で、レジスタr0は値“00002000”を含み、メモリアドレス“00002000”には値“aa”が記憶されていると仮定している。
【0185】
工程S40では、命令が間接的分岐に関連しないと判断され、工程S70では命令がその代わりにデータ転送に関連していると判断され、また工程S100ではトレース生成ロジック120はメモリからアクセスされるデータの指示が受信されるのを待つ。
【0186】
工程S110では、命令がロード命令であると判断され、処理は工程S120へ進む。
【0187】
すべてのレジスタがクリアされたので、レジスタr0のレジスタ・エントリにはこのレジスタの内容がトレース解析ツールによって導出可能であるという表示は存在せず、r0の内容、すなわち値“00002000”が工程S130でトレースされる(図4Aに1cで示すように)。その後、r0に付随するレジスタテーブル中のエントリがセットされる(図4Aに1dで示すように)。これはこのレジスタの内容が今やトレース解析ツールによって導出できるからである。
【0188】
すべてのメモリテーブルがクリアされたため、メモリアドレス“00002000”に対するメモリ・エントリには、このアドレスの内容がトレース解析ツールによって導出可能であるという表示はない。次に、ロード命令は間接的分岐ではないため、メモリアドレス“00002000”の内容、すなわち、値“aa”が工程S180でトレースされる(図4Aに1eで示すように)。
【0189】
すべてのメモリテーブルがクリアされたため、工程S170では、メモリアドレス“00002000”はメモリテーブルのレンジに含まれないと判断されて、工程S200ではメモリベースアドレスが更新される(図4Aに1fで示すように)。メモリベースアドレスはこのアドレスの5個の最上位ビット(MSB)を記憶し、工程S210では、このメモリアドレスに付随するメモリテーブル中のエントリが更新され(図4Aに1gで示すように)、このメモリアドレスの内容がトレース解析ツールによって導出可能であることが表示される。
【0190】
工程S220では、レジスタr1の内容、すなわち値“aa”が今やトレース解析ツールによって導出できるため、r1に付随するエントリがレジスタテーブル中で更新され(図4Aに1hで示すように)、処理は工程S20へ戻って、次の命令を待つ。
【0191】
次に、命令あるいはオペコードADD r2,r1,#1(すなわち、ソースレジスタr1に記憶されている値に対して即値“1”を加えて、その結果をあて先レジスタr2に記憶する)が受信される(図4Aに2aで示すように)。工程S22では、レジスタテーブルおよびメモリテーブルをクリアしないことが決定され、工程S30ではプロセッサコア6とトレース解析ツールとの間でオペコード同期を保つために、命令トレースが発行される(図4Aに2bで示すように)。
【0192】
工程S40では、その命令が間接的分岐に関連しないと判断され、工程S70ではその命令が代わりにデータ転送に関連すると判断され、更に工程S100ではトレース生成ロジック120はメモリからアクセスされるデータの指示が受信されるのを待つ。
【0193】
工程S110では、この命令がデータ処理命令であると判断され、処理は工程S230へ進む。
【0194】
工程S230では、レジスタテーブルのr1に付随するエントリ中に表示がなされているため、ソースレジスタの内容がトレース解析ツールによって導出できると判断される。従って、r2の内容を示すトレース要素を生成する必要はない。その代わり、r2に付随するレジスタテーブル中のエントリが工程S250で単に更新される(図4Aに2cで示すように)。これはこのレジスタの内容がトレース解析ツールによって導出できるからである。処理は工程S20へ戻り、次の命令を待つ。
【0195】
次に、命令あるいはオペコードADD r4,r2,r3(すなわち、ソースレジスタr2に記憶されている値を、ソースレジスタr3に記憶されている値に加えて、その結果をあて先レジスタr4に記憶する)が受信される(図4Aに3aで示すように)。工程S22では、レジスタテーブルおよびメモリテーブルをクリアしないことが決められ、工程S30では、プロセッサコア6とトレース解析ツールとの間でオペコード同期を保つために命令トレースが発行される(図4Aに3bで示すように)。
【0196】
工程S40では、その命令が間接的分岐に関連しないと判断され、工程S70ではその命令が代わりにデータ転送に関連すると判断され、工程S100ではトレース生成ロジック120はメモリからアクセスされるデータの指示が受信されるのを待つ。
【0197】
工程S110では、その命令がデータ処理命令であると判断され、処理は工程S230へ進む。
【0198】
工程S230では、レジスタテーブルのr3に関連するエントリ中に表示がなされていないことから、両ソースレジスタの内容はトレース解析ツールによって導出できないと判断される。工程S235では、その命令がプログラムカウンタを含んでおらず、従って間接的分岐を含まないと判断される。従って、r4中に記憶すべき内容を示すトレース要素が工程S240で生成され(図4Aに3cで示すように)、r4に付随するレジスタテーブル中のエントリが工程S250で更新される(図4Aに3dで示すように)。これはこのレジスタの内容がトレース解析ツールによって導出できるためであり、処理は工程S20へ戻って、次の命令を待つ。
【0199】
次に、命令あるいはオペコードSTR r4,[r0+#4](すなわち、メモリアドレスr0に記憶されている値に対して即値“4”を加えることによって得られるメモリアドレスに、ソースレジスタr4の内容を記憶する)が受信される(図4Aに4aで示すように)。工程S22では、レジスタテーブルおよびメモリテーブルをクリアしないことが決められ、工程S30ではプロセッサコア6とトレース解析ツールとの間でオペコード同期を保つために、命令トレースが発行される(図4Aに4bで示すように)。
【0200】
工程S40では、その命令が間接的分岐に関連しないと判断され、工程S70ではその命令が代わりにデータ転送に関連すると判断され、更に工程S100では、メモリからアクセスされるデータの指示が受信されるのを待つ必要がないので、トレース生成ロジック120の処理は工程S110へ進む。
【0201】
工程S110では、その命令がストア命令であると判断され、処理は工程S260へ進む。
【0202】
工程S260では、レジスタの内容がメモリアドレス(r0)を含むと判断され、工程S290ではレジスタテーブルのr0およびr4に付随するエントリに表示がなされていることから、ソースレジスタ(r4)の内容が両方ともトレース解析ツールによって導出できると判断される。従って、メモリアドレス“00002000”に記憶すべき内容を示すトレース要素を生成する必要はない。
【0203】
更に、アドレス“00002004”がメモリテーブルのレンジに含まれると判断されるため、アドレス“00002004”に付随するメモリテーブル中のエントリが工程S350で単に更新される(図4Aに4cで示すように)。これはこのメモリアドレスの内容がトレース解析ツールによって導出できるからであり、処理は工程S20へ戻って、次の命令を待つ。
【0204】
次に、命令あるいはオペコードSTR r5,[r0](すなわち、メモリアドレスレジスタr0に記憶された値を有するメモリアドレス中へ、ソースレジスタr5の内容を記憶する)が受信される(図4Bに5aで示すように)。工程S22では、レジスタテーブルおよびメモリテーブルはクリアしないと決定され、工程S30ではプロセッサコア6とトレース解析ツールとの間でオペコード同期を保つために命令トレースが発行される(図4Bに5bで示すように)。
【0205】
工程S40ではその命令が間接的分岐に関連しないと判断され、工程S70ではその命令が代わりにデータ転送に関連すると判断され、工程S100ではメモリからアクセスされるデータの指示が受信されるのを待つ必要がないため、トレース生成ロジック120の処理は工程S110へ進む。
【0206】
工程S110ではその命令がストア命令であると判断され、処理は工程S260へ進む。
【0207】
工程S260では、メモリアドレス(r0)を含むレジスタの内容が、レジスタテーブルのr0に付随するエントリ中に表示がなされていることから、トレース解析ツールによって導出できると判断される。従って、r0の内容を示すトレース要素を生成する必要はない。
【0208】
工程S290では、ソースレジスタ(r5)の内容が、レジスタテーブルのr5に付随するエントリ中に表示がなされていないことから、トレース解析ツールによって導出できないと判断される。従って、工程S300では、r5の内容、すなわち、値“cc”を示すトレース要素が生成され(図4Bに5cで示すように)、r5に関連するレジスタテーブル中のエントリが工程S310で更新され、このレジスタの内容がトレース解析ツールによって導出可能であると表示される(図4Bに5dで示すように)。
【0209】
更に、工程S320ではアドレス“00002000”がメモリテーブルのレンジに含まれると判断されるため、そのアドレス“00002000”に付随するメモリテーブル中のエントリは、このメモリアドレスの内容がトレース解析ツールによって導出できるため、工程S350で単に更新されるだけであり(このメモリアドレスに対するエントリが既にセットされているため明らかな変化はないが)、処理は工程S20へ戻って、次の命令を待つ。
【0210】
次に、命令あるいはオペコードMOV pc,r6(すなわち、プログラムカウンタの値を、ソースレジスタr6に記憶されている値に変更する)が受信される(図4Bに6aで示すように)。工程S22では、レジスタテーブルおよびメモリテーブルをクリアすべきでないことが決定され、工程S30ではプロセッサコア6とトレース解析ツールとの間でオペコード同期を保つために命令トレースが発行される(図4Bに6bで示すように)。
【0211】
工程S40では、その命令が間接的分岐に関連すると判断され、工程S50ではその間接的分岐がメモリからプログラムカウンタへのロードを含まないことが判断され、工程S90では、ソースレジスタ(r6)の内容が、レジスタテーブルのr6に付随するエントリ中に表示がなされていないことから、トレース解析ツールによって導出できないと判断される。従って、工程S80で、r6の内容、すなわち値“dd”によって指定されるメモリアドレスへの分岐を示すトレース要素が生成される(図4Bに6cで示すように)。プログラムカウンタに記憶されている値の変化を指定する分岐命令トレースが生成されたので、レジスタr6の内容のデータトレースの実行を抑制することができ、処理は工程S70を経て工程S20へ戻り、次の命令を待つ。別の工程として、レジスタr6の内容を推定することが可能であり、レジスタテーブルのr6に付随するエントリを更新できることを理解されよう。
【0212】
次に、命令あるいはオペコードMOV pc,r1(すなわち、プログラムカウンタの値を、ソースレジスタr1に記憶されている値に変更する)が受信される(図4Bに7aで示すように)。工程S22では、レジスタテーブルおよびメモリテーブルをクリアすべきでないことが決定され、工程S30ではプロセッサコア6とトレース解析ツールとの間でオペコード同期を保つために命令トレースが発行される(図4Bに7bで示すように)。
【0213】
工程S40では、その命令が間接的分岐に関連すると判断され、工程S50ではその間接的分岐がメモリからプログラムカウンタへのロードを含まないと判断され、工程S90では、ソースレジスタ(r1)の内容が、レジスタテーブルのr1に付随するエントリ中に表示がなされていることから、トレース解析ツールによって導出できると判断される。従って、r1の内容によって指定されるメモリアドレスへの分岐を示すトレース要素は、プログラムカウンタ中の値の変化が推測できるため、生成する必要はない。従って、データトレースおよび分岐命令トレースは抑制され、処理は工程S70を経て工程S20へ戻り、次の命令を待つ。前に述べたように、抑制が発生したことをトレース解析ツールに対して示すためにプレースホルダを出力することも可能である。
【0214】
次に、命令あるいはオペコードLDR r2,[r0+#4](すなわち、r0の内容に対して即値“4”を加えることによって参照されるメモリアドレスに記憶されている値を、r2へロードする)が受信される(図4Bに8aで示すように)。工程S22では、レジスタテーブルおよびメモリテーブルをクリアすべきでないと決定され、工程S30ではプロセッサコア6とトレース解析ツールとの間でオペコード同期を保つために命令トレースが発行される(図4Bに8bで示すように)。
【0215】
工程S40ではその命令が間接的分岐に関連しないと判断され、工程S70ではその命令が代わりにデータ転送に関連すると判断され、工程S100ではトレース生成ロジック120はメモリからアクセスされるデータの指示が受信されるのを待つ。
【0216】
工程S110ではその命令がロード命令であると判断され、処理は工程S120へ進む。
【0217】
工程S120では、メモリアドレス(r0)を含むレジスタが、レジスタr0に関するレジスタ・エントリ中に表示がなされていることから、トレース解析ツールによって導出できると判断される。従って、r0の値はトレースする必要がなく、処理は直接、工程S150へ進む。
【0218】
工程S150では、ソースメモリアドレス(00002004)の内容が、メモリアドレス“00002004”に対するメモリ・エントリ中に表示がなされていることから、トレース解析ツールによって導出できると判断される。従って、メモリアドレス“00002004”の内容の値、すなわち“bb”はトレースする必要がなく、処理は直接、S220へ進む。
【0219】
工程S220では、アドレス“00002004”に付随するメモリテーブル中のエントリが更新され(このメモリアドレスに対するエントリは既にセットされているため変化は明らかではないが)、処理は工程S20へ戻って、次の命令を待つ。
【0220】
次に、命令あるいはオペコードLDR pc,[r0−#4](すなわち、r0の内容から即値“4”を差し引くことによって参照されるメモリアドレスに記憶されている値を、プログラムカウンタへロードする)が受信される(図4Bに9aで示すように)。工程S22では、レジスタテーブルおよびメモリテーブルをクリアすべきでないと決定され、工程S30ではプロセッサコア6とトレース解析ツールとの間でオペコード同期を保つために命令トレースが発行される(図4Bに9bで示すように)。
【0221】
工程S40ではその命令が間接的分岐に関連すると判断され、工程S50ではその命令がプログラムカウンタへのロードを含むと判断され、工程S60ではソースアドレス(00001ffc)がメモリテーブル中にないことが、そのアドレスに付随するエントリ中に表示がなされていないことから判断される。従って、工程S65では、処理はそのロードに付随するデータが受信されるまで休止し、工程S80ではアドレス“ee”への分岐を示すトレース要素(図4Bに9cで示すように)が発行されて、処理は工程S70へ進む。
【0222】
工程S70では、その命令がデータ転送に関連すると判断され、工程S100ではトレース生成ロジック120はメモリからアクセスされるデータの指示が受信されるのを待つ。
【0223】
工程S110ではその命令がロード命令であると判断され、処理は工程S120へ進む。
【0224】
工程S120では、メモリアドレス(r0)を含むレジスタが、レジスタr0に関するレジスタ・エントリ中に表示がなされていることから、トレース解析ツールによって導出できると判断される。従って、r0の値はトレースする必要がなく、処理は直接、工程S150へ進む。
【0225】
工程S150では、ソースメモリアドレス(00001ffc)の内容を、メモリアドレス“00001ffc”に対するメモリ・エントリ中に表示がなされていないことから、トレース解析ツールが導出できないと判断される。
【0226】
工程S160では、その命令がプログラムカウンタへのロードを含むことから、その命令が間接的分岐であると判断され、従って、ソースアドレス(00001ffc)の内容、すなわち値“ee”が既に工程S80においてトレースされていることから、データトレースは不要であると判断される。このことから、ソースアドレス(00001ffc)の内容のデータトレース実行が抑制できて、処理は工程S170進む。
【0227】
工程S170では、メモリアドレス“00001ffc”がメモリテーブルのレンジに含まれないと判断される。従って、工程S190で、メモリテーブルがクリアされ(図4Bに9dで示すように)、工程S200ではメモリベースアドレスが“00001xxx”へ更新され(図4Bに9eで示すように)、工程S210ではメモリアドレス(すなわち、“00001ffc”)に付随するメモリテーブル中のエントリが、このメモリアドレスの内容がトレース解析ツールによって導出できると表示されるように更新される(図4Bに9fで示すように)。あるいは、先に述べたように、別のテーブルを用意して、そのベースアドレスを“00001xxx”にセットするか、あるいは既存のメモリテーブルを、メモリテーブルのレンジ外のメモリアドレスへ複数回の引き続くアクセスが行なわれるときだけクリアするように構成することでテーブルの安定性を向上させることもできる。
【0228】
工程S220では、プログラムカウンタレジスタに付随するエントリがレジスタテーブル中で更新され(プログラムカウンタの値は命令トレースを用いて常に導出できるため、変化は気づかれないため示されていない)、処理は工程S20へ戻って、次の命令を待つ。
【0229】
例示の目的で、上にあげた例は、アーキテクチャ・ステートの1つの項目における変化をトレースするような単純な命令に関するものであったが、アーキテクチャ・ステートの複数の項目における変化をトレースする必要があるようなより複雑な命令のトレースであっても同様に実行できることを理解されよう。例えば、複雑な命令を単純な命令の集合と考えることができ、各々の単純な命令によって、トレースすべきアーキテクチャ・ステートの1つの項目中に変化が引き起こされる場合である。あるいは、トレースする必要のないアーキテクチャ・ステートの各項目の変化に対しては、プレースホルダを設けることができる。
【0230】
このことを示すために、命令あるいはオペコードLDM r0{r1−r4}(すなわち、r0の内容によって参照されるメモリアドレスに記憶されている値をr1へロードする、r0の内容に対して即値#4(あるいはその他の定数)を加えることによって参照されるメモリアドレスに記憶されている値をr2へロードする、r0の内容に対して即値#8を加えることによって参照されるメモリアドレスに記憶されている値をr3へロードする、r0の内容に対して即値#12を加えることによって参照されるメモリアドレスに記憶されている値をr4へロードする)の例について考えよう。
【0231】
ここで、例示の目的で次のように仮定する。レジスタr0の内容は導出可能であること、レジスタr0の内容によって参照されるメモリアドレスの内容は導出可能であること、レジスタr0の内容に対して即値#12を加えることによって参照されるメモリアドレスの内容は導出可能であること。しかしまた、次のようにも仮定する。レジスタr0の内容に対して即値#4を加えることによって参照されるメモリアドレスの内容は導出できないこと、レジスタr0の内容に対して即値#8を加えることによって参照されるメモリアドレスの内容は導出できないこと。
【0232】
この例で、命令が次のような簡単な一連の命令:LDR r1,[r0];LDR r2,[r0,#4];LDR r3,[r0,#8];およびLDR r4,[r0,#12]で表される場合には、次のようなトレース要素が生成される。
【0233】
LDR r1,[r0]については、命令トレースが発行され、データトレースは発行されない。それはレジスタr0の内容によって参照されるメモリアドレスの内容が導出可能だからである。
【0234】
LDR r2,[r0,#4]については、命令トレースが発行され、レジスタr0の内容に対して即値#4を加えることによって参照されるメモリアドレスの内容を示すデータトレースが発行される。それはこのメモリアドレスの内容が導出できないためである。
【0235】
LDR r3,[r0,#8]については、命令トレースが発行され、レジスタr0の内容に対して即値#8を加えることによって参照されるメモリアドレスの内容を示すデータトレースが発行される。それはこのメモリアドレスの内容が導出できないためである。
【0236】
LDR r4,[r0,#12]については、命令トレースが発行され、データトレースは発行されない。それはレジスタr0の内容に対して即値#8を加えることよって参照されるメモリアドレスの内容が導出可能だからである。
【0237】
プレースホルダを採用する別の例では、単一の命令トレースが発行されて、データトレースは、プレースホルダ、データトレース、データトレース、プレースホルダの形を取る。最初のプレースホルダの発行は、レジスタr0の内容によって参照されるメモリアドレスの内容が導出できることをトレース解析ツールに対して示す。最初のデータトレースはレジスタr0の内容に対して即値#4を加えることによって参照されるメモリアドレスの内容を示し、そのメモリアドレスの内容が導出できないため発行される。第2のデータトレースはレジスタr0の内容に対して即値#8を加えることによって参照されるメモリアドレスの内容を示し、そのメモリアドレスの内容が導出できないため発行される。2番目のプレースホルダの発行は、レジスタr0の内容に対して即値#12を加えることよって参照されるメモリアドレスの内容が導出できることをトレース解析ツールに対して示す。
【0238】
本発明の特定の実施の形態についてこれまで説明してきたが、本発明はそれらに限定されないこと、また本発明のスコープ内で多くの修正および追加を行い得ることを理解されよう。例えば、本発明のスコープから外れることなく、特許請求の範囲の独立項の特徴点を従属項の特徴点と多様に組み合わせることができる。
【図面の簡単な説明】
【図1】本発明の実施の形態に従うデータ処理装置。
【図2】図1のオンチップ型トレースモジュールの特徴的機能。
【図3A】オンチップ型トレースモジュールによって実行される処理工程。
【図3B】オンチップ型トレースモジュールによって実行される処理工程。
【図3C】オンチップ型トレースモジュールによって実行される処理工程。
【図3D】オンチップ型トレースモジュールによって実行される処理工程。
【図3E】オンチップ型トレースモジュールによって実行される処理工程。
【図4A】プロセッサコアによって実行される命令の例を、オンチップ型トレースモジュールによって生成される関連トレース要素およびテーブル・エントリと一緒に示す表。
【図4B】プロセッサコアによって実行される命令の例を、オンチップ型トレースモジュールによって生成される関連トレース要素およびテーブル・エントリと一緒に示す表。
【符号の説明】
2 データ処理装置
4 集積回路
6 マイクロプロセッサコア
8 キャッシュメモリ
10 オンチップ型トレースモジュール
12 オンチップ型トレースバッファ
14 外部メモリ
16 汎用コンピュータ(トレース解析ツール)
18 外部記憶
20 レジスタバンク
22 ALU
24,26,28 バス
100 同期ロジック
110 トリガ
120 トレース生成ユニット
125,135,140,145,150,155,160,170 パス
130 FIFO
180 テーブル

Claims (66)

  1. トレースモジュールであって、前記トレースモジュールがつながれているデータ処理装置のアーキテクチャ・ステートのサブセットにおける変化をトレースするように動作し:
    トレース生成ユニットであって、前記データ処理装置の1または複数の部品からアーキテクチャ・ステートの前記サブセットにおける変化を示す入力信号を受信し、1または複数の前記入力信号から、前記変化を示す複数のトレース要素を生成し、それによって前記トレース要素の受け手がアーキテクチャ・ステートの前記サブセットを後で再構築することを可能とするトレース生成ユニット;および
    先に生成されたトレース要素から導出できるアーキテクチャ・ステートを同定するための、前記トレース生成ユニットが管理するテーブルであって、前記トレース生成ユニットが前記テーブルを参照することによって前記トレース生成時にどのトレース要素を生成するかを決定するテーブル;
    含み、
    アーキテクチャ・ステートの前記サブセットにはアーキテクチャ・ステートの複数の項目が含まれており、前記テーブルはアーキテクチャ・ステートの各項目に付随して1または複数のエントリを有しており、前記トレース生成ユニットは、アーキテクチャ・ステートの前記項目が前記受け手によって導出可能なときは、各エントリ中に表示を行なうように動作し、
    1または複数の前記入力信号の受信に応答して、前記トレース生成ユニットが、アーキテクチャ・ステートの1つの項目に前記変化をもたらすために用いられる、アーキテクチャ・ステートの前記1つの項目とは異なるアーキテクチャ・ステートの複数項目に付随する前記テーブルの各エントリ中に表示がなされているかどうかを判断することによって、アーキテクチャ・ステートのその項目の前記変化を前記受け手が導出できるかどうかを判断するトレースモジュール。
  2. 請求項に記載のトレースモジュールであって、1または複数の前記入力信号の受信に応答して、前記トレース生成ユニットが、アーキテクチャ・ステートの1つの項目に付随する各エントリ中に表示がなされているかどうかを判断することによって、アーキテクチャ・ステートのその項目の前記変化を前記受け手が導出できるかどうかを判断するように動作するトレースモジュール。
  3. 請求項に記載のトレースモジュールであって、前記トレース生成ユニットが、前記受け手が導出できないアーキテクチャ・ステートの前記項目の前記変化を示す複数のトレース要素を生成し、またアーキテクチャ・ステートのその項目に付随する各エントリ中に表示を行なうように動作するトレースモジュール。
  4. 請求項1に記載のトレースモジュールであって、アーキテクチャ・ステートの各項目が1つのアーキテクチャ・ステート値を有しており、また前記トレース生成ユニットが前記アーキテクチャ・ステート値の前記変化を示す複数のトレース要素を生成するように動作するトレースモジュール。
  5. 請求項に記載のトレースモジュールであって、前記アーキテクチャ・ステート値の前記変化がアーキテクチャ・ステートの前記項目に新しい値を取らせ、前記トレース生成ユニットは、前記新しい値が前記受け手によって導出できないときには、前記新しい値を示す複数のトレース要素を生成し、またアーキテクチャ・ステートのその項目に付随する各エントリ中に表示を行なうように動作するトレースモジュール。
  6. 請求項1に記載のトレースモジュールであって、アーキテクチャ・ステートの前記サブセットが複数のレジスタの内容を含み、前記テーブルが前記複数のレジスタの各々に付随して1つのレジスタ・エントリを有しているトレースモジュール。
  7. 請求項に記載のトレースモジュールであって、1つのレジスタの内容が新しい値へ変化したことを示す入力信号に応答して、前記トレース生成ユニットが、前記新しい値が前記受け手によって導出できるときは、そのレジスタに付随する各エントリ中に表示を行なうように動作するトレースモジュール。
  8. 請求項に記載のトレースモジュールであって、1つのレジスタの内容が新しい値へ変化したことを示す入力信号に応答して、前記トレース生成ユニットが、前記新しい値が前記受け手によって導出できないときは、前記新しい値を示す複数のトレース要素を生成し、またそのレジスタに付随する各エントリ中に表示を行なうように動作するトレースモジュール。
  9. 請求項に記載のトレースモジュールであって、前記複数のレジスタが複数のソースレジスタおよび複数のあて先レジスタを含んでおり、1つのあて先レジスタの内容が1または複数の前記ソースレジスタの内容に依存して新しい値へ変化したことを示す入力信号に応答して、前記トレース生成ユニットが、前記新しい値が前記受け手によって導出できないときは、前記新しい値を示す複数のトレース要素を生成し、また前記あて先レジスタに付随する各エントリ中に表示を行なうように動作するトレースモジュール。
  10. 請求項に記載のトレースモジュールであって、前記複数のレジスタが複数のソースレジスタおよび複数のあて先レジスタを含んでおり、1つのあて先レジスタの内容が1または複数の前記ソースレジスタの内容に依存して新しい値へ変化したことを示す入力信号に応答して、前記トレース生成ユニットが、前記新しい値が前記受け手によって導出できるときは、前記あて先レジスタに付随する各エントリ中に表示を行なうように動作するトレースモジュール。
  11. 請求項に記載のトレースモジュールであって、前記複数のレジスタが複数のあて先レジスタを含んでおり、前記アーキテクチャ・ステートが更に複数のメモリアドレスの内容を含んでおり、1つのあて先レジスタの内容が1または複数の前記メモリアドレスの内容に依存して新しい値へ変化したことを示す入力信号に応答して、前記トレース生成ユニットが、前記1または複数のメモリアドレスが前記受け手によって導出できないときは、前記1または複数のメモリアドレスを示す複数のトレース要素を生成し、また前記1または複数のメモリアドレスに付随する各エントリ中に表示を行なうように動作するトレースモジュール。
  12. 請求項に記載のトレースモジュールであって、前記複数のレジスタが複数のあて先レジスタを含んでおり、前記アーキテクチャ・ステートが更に複数のメモリアドレスの内容を含んでおり、あて先レジスタの内容が1または複数の前記メモリアドレスの内容に依存して新しい値へ変化したことを示す入力信号に応答して、前記トレース生成ユニットが、前記新しい値が前記受け手によって導出できるときは、前記1または複数のメモリアドレスに付随する各エントリ中に表示を行なうように動作するトレースモジュール。
  13. トレースモジュールであって、前記トレースモジュールがつながれているデータ処理装置のアーキテクチャ・ステートのサブセットにおける変化をトレースするように動作し:
    トレース生成ユニットであって、前記データ処理装置の1または複数の部品からアーキテクチャ・ステートの前記サブセットにおける変化を示す入力信号を受信し、1または複数の前記入力信号から、前記変化を示す複数のトレース要素を生成し、それによって前記トレース要素の受け手がアーキテクチャ・ステートの前記サブセットを後で再構築することを可能とするトレース生成ユニット;および
    先に生成されたトレース要素から導出できるアーキテクチャ・ステートを同定するための、前記トレース生成ユニットが管理するテーブルであって、前記トレース生成ユニットが前記テーブルを参照することによって前記トレース生成時にどのトレース要素を生成するかを決定するテーブル;
    を含み、
    アーキテクチャ・ステートの前記サブセットには複数のメモリアドレスの内容が含まれており、前記テーブルが前記複数のメモリアドレスの各々に付随して1つのアドレス・エントリを有しているトレースモジュール。
  14. 請求項13に記載のトレースモジュールであって、1つのメモリアドレスの内容が新しい値へ変化したことを示す入力信号に応答して、前記トレース生成ユニットが、前記新しい値が前記受け手によって導出できるときは、そのメモリアドレスに付随する各アドレス・エントリ中に表示を行なうように動作するトレースモジュール。
  15. 請求項13に記載のトレースモジュールであって、1つのメモリアドレスの内容が新しい値に変化したことを示す入力信号に応答して、前記トレース生成ユニットが、前記新しい値が前記受け手によって導出できないときは、前記新しい値を示す複数のトレース要素を生成し、またそのメモリアドレスに付随する各アドレス・エントリ中に表示を行なうように動作するトレースモジュール。
  16. 請求項13に記載のトレースモジュールであって、1つのメモリアドレスの内容が1または複数のレジスタに依存して新しい値へ変化したことを示す入力信号に応答して、前記トレース生成ユニットが、前記新しい値が前記受け手によって導出できるときは、そのメモリアドレスに付随する各アドレス・エントリ中に表示を行なうように動作するトレースモジュール。
  17. 請求項13に記載のトレースモジュールであって、1つのメモリアドレスの内容が1または複数のレジスタに依存して新しい値へ変化したことを示す入力信号に応答して、前記トレース生成ユニットが、前記新しい値が前記受け手によって導出できないときは、前記新しい値を示す複数のトレース要素を生成し、またそのメモリアドレスに付随する各アドレス・エントリ中に表示を行なうように動作するトレースモジュール。
  18. 請求項17に記載のトレースモジュールであって、1つのメモリアドレスの内容が新しい値へ変化したことを示す入力信号に応答して、前記トレース生成ユニットが、前記メモリアドレスが前記受け手によって導出できないときは、前記メモリアドレスを示す複数のトレース要素を生成し、またそのメモリアドレスを与える各レジスタ・エントリ中に表示を行なうように動作するトレースモジュール。
  19. 請求項13に記載のトレースモジュールであって、前記テーブルが1または複数のテーブルを含んでおり、各テーブルがベースメモリアドレスに付随する1つのベースアドレス・エントリと、前記ベースアドレスから論理的にオフセットされたメモリアドレスのレンジの各々に付随する1つのアドレス・エントリとを含んでおり、前記トレース生成ユニットが、1つのメモリアドレスの内容が新しい値に変化したことを示す入力信号に応答して、前記メモリアドレスが前記レンジのうちの1つに含まれるかどうかを判断し、もしそうであれば、そのメモリアドレスに付随する前記アドレス・エントリ中に表示を行なうように動作するトレースモジュール。
  20. 請求項19に記載のトレースモジュールであって、前記トレース生成ユニットが、1つのメモリアドレスの内容が新しい値に変化したことを示す入力信号に応答して、前記メモリアドレスが前記レンジのうちの1つに含まれるかどうかを判断し、もしそうでなければ、前記テーブルの1つの中のすべてのエントリをクリアし、そのテーブルのベースアドレス・エントリを更新し、前記新しい値を示す複数のトレース要素を生成して、前記メモリアドレスに付随する前記アドレス・エントリ中に表示を行なうように動作するトレースモジュール。
  21. 請求項20に記載のトレースモジュールであって、前記ベースアドレス・エントリが論理メモリアドレスの少なくとも一部を記憶するように構成されているトレースモジュール。
  22. 請求項1に記載のトレースモジュールであって、前記テーブル中のエントリが定期的にクリアされるトレースモジュール。
  23. 請求項1に記載のトレースモジュールであって、前記トレース生成ユニットが、実行されている命令を示す命令トレース要素を生成するように動作するトレースモジュール。
  24. 請求項1に記載のトレースモジュールであって、アーキテクチャ・ステートの前記サブセットにおける前記変化が前記データ処理装置による1つのシーケンス外命令の実行を引き起こすようになっており、また前記トレース生成ユニットは実行すべき前記シーケンス外命令を示す分岐トレース要素を生成するように動作するトレースモジュール。
  25. 請求項1に記載のトレースモジュールであって、前記受け手がトレース解析ツールであり、前記テーブルが前記トレース解析ツールによって導出可能なアーキテクチャ・ステートの前記サブセットを指定するトレースモジュール。
  26. 請求項25に記載のトレースモジュールであって、前記トレース解析ツールに対して、前記データ処理装置によって実行すべきシーケンシャル命令の表示が与えられるトレースモジュール。
  27. 請求項26に記載のトレースモジュールであって、各々のシーケンシャル命令がそれに付随して1つのアドレスを有しており、前記トレース生成ユニットが、前記データ処理装置に前記シーケンス外命令を実行させるアーキテクチャ・ステートの前記項目における前記変化をもたらすために用いられたアーキテクチャ・ステートの複数項目に付随する各エントリ中に表示がなされているかどうかを判断することによって、前記シーケンス外命令のアドレスが前記トレース解析ツールによって導出できるかどうかを判断するように動作するトレースモジュール。
  28. 請求項26に記載のトレースモジュールであって、前記テーブルが、前記データ処理装置によって実行すべき前記シーケンシャル命令を指定するトレースモジュール。
  29. 請求項28に記載のトレースモジュールであって、前記トレース生成ユニットが、実行されている命令を示す前記入力信号に応答して、前記トレース解析ツールが前記テーブルを参照することによって実行される前記命令を決定できるかどうかを判断し、前記命令が前記トレース解析ツールによって導出できないときは、前記命令を示す複数のトレース要素を生成するように動作するトレースモジュール。
  30. トレースモジュールであって、前記トレースモジュールがつながれているデータ処理装置のプログラムカウンタ値の変化をトレースするように動作し、前記データ処理装置は命令のシーケンスを実行するように構成されており、前記プログラムカウンタ値は前記データ処理装置によって実行すべき次の命令を示しており、前記トレースモジュールは:
    トレース生成ユニットであって、前記データ処理装置の1または複数の部品から、実行されている現在の命令を示す入力信号を受信し、前記入力信号から、前記現在の命令に付随するデータを示すデータトレース要素およびプログラムカウンタ値の前記変化を示す分岐トレース要素を選択的に生成するように動作するトレース生成ユニットを含み、
    前記現在の命令が前記プログラムカウンタ値に非シーケンシャルな変化をもたらす間接的分岐命令である場合に、前記トレース生成ユニットは前記データトレース要素あるいは前記分岐トレース要素のいずれかの生成を抑制するように動作、プログラムカウンタ値の前記変化は生成されたトレース要素から導出可能であり、それによりプログラムカウンタ値の前記変化は、前記データ処理装置によって実行すべき前記次の命令を決定するために、生成されたトレース要素からトレース要素の受け手によって後で再構築することができるトレースモジュール。
  31. 請求項30に記載のトレースモジュールであって、前記トレース生成ユニットが前記データトレース要素の生成を抑制するように動作し、プログラムカウンタ値の前記変化が前記分岐トレース要素から前記受け手によって導出できるトレースモジュール。
  32. 請求項30に記載のトレースモジュールであって、前記トレース生成ユニットが前記分岐トレース要素の生成を抑制するように動作し、プログラムカウンタ値の前記変化が前記データトレース要素から前記受け手によって導出できるトレースモジュール。
  33. 請求項30に記載のトレースモジュールであって:
    プログラムカウンタ値の前記変化が先に生成されたトレース要素から導出できるかどうかを指定するために、前記トレース生成ユニットによって管理されるテーブルであって、前記トレース生成ユニットが前記テーブルを参照することによって、前記トレース生成時にどのトレース要素を生成すべきか決定するテーブル;
    を含むトレースモジュール。
  34. 請求項33に記載のトレースモジュールであって、前記トレース生成ユニットが、プログラムカウンタ値の前記変化が前記受け手によって導出できると判断されたときは、前記データトレース要素および前記分岐トレース要素の生成を抑制するように動作するトレースモジュール。
  35. 請求項30に記載のトレースモジュールであって、前記トレース生成ユニットが、前記抑制を表示するプレースホルダを生成するように動作するトレースモジュール。
  36. 請求項30に記載のトレースモジュールであって、前記トレース生成ユニットが、前記入力信号の受信に応答して、前記データ処理装置によって命令が実行されていることを示す命令トレースを生成するトレースモジュール。
  37. 請求項1に記載の前記トレースモジュールを含むデータ処理装置。
  38. データ処理装置のアーキテクチャ・ステートのサブセットにおける変化をトレースする方法であって:
    前記データ処理装置の1または複数の部品から、アーキテクチャ・ステートの前記サブセットにおける変化を示す入力信号を受信する工程;
    先に生成されたトレース要素から導出可能なアーキテクチャ・ステートを同定するテーブルを参照することによって、生成すべきトレース要素を決定する工程;および
    前記変化を示す複数のトレース要素を生成して、前記トレース要素の受け手が後でアーキテクチャ・ステートの前記サブセットを再構築できるようにする工程を含み、
    アーキテクチャ・ステートの前記サブセットがアーキテクチャ・ステートの複数の項目を含んでおり、前記テーブルがアーキテクチャ・ステートの各項目に付随して1または複数のエントリを有しており、前記方法が:
    アーキテクチャ・ステートの前記項目が前記受け手によって導出できるときは、各エントリ中に表示を行なう工程;および
    アーキテクチャ・ステートの前記項目に前記変化をもたらすために用いられる、アーキテクチャ・ステートの前記1つの項目とは異なるアーキテクチャ・ステートの複数項目に付随する前記テーブルの各エントリ中に表示がなされているかどうかを判断する工程を含んでいる方法。
  39. 請求項38に記載の方法であって、前記決定工程が:
    アーキテクチャ・ステートのその項目に付随する各エントリ中に表示がなされているかどうかを判断する工程;
    を含んでいる方法。
  40. 請求項38に記載の方法であって、前記生成工程が:
    アーキテクチャ・ステートの前記項目の前記変化が前記受け手によって導出できないことを示す複数のトレース要素を生成する工程を含んでおり、前記方法が:
    アーキテクチャ・ステートのその項目に付随する各エントリ中に表示を行なう工程;
    を含む方法。
  41. 請求項38に記載の方法であって、アーキテクチャ・ステートの各項目がアーキテクチャ・ステート値を含んでおり、前記生成工程が:
    前記アーキテクチャ・ステート値の前記変化を示す複数のトレース要素を生成する工程;
    を含んでいる方法。
  42. 請求項41に記載の方法であって、前記アーキテクチャ・ステート値の前記変化がアーキテクチャ・ステートの前記項目に新しい値をもたらし、前記生成工程が:
    前記新しい値が前記受け手によって導出できないときは、前記新しい値を示す複数のトレース要素を生成する工程を含んでおり、前記方法が:
    アーキテクチャ・ステートのその項目に付随する各エントリ中に表示を行なう工程;
    を含む方法。
  43. 請求項38に記載の方法であって、アーキテクチャ・ステートの前記サブセットが複数のレジスタの内容を含んでおり、前記テーブルが前記複数のレジスタの各々に付随して1つのレジスタ・エントリを有している方法。
  44. 請求項43に記載の方法であって、前記受信工程が:
    1つのレジスタの内容が新しい値に変化したことを示す入力信号を受信する工程を含んでおり、前記方法が:
    前記新しい値が前記受け手によって導出できるときは、そのレジスタに付随する各エントリ中に表示を行なう工程;
    を含む方法。
  45. 請求項43に記載の方法であって、前記受信工程が:
    1つのレジスタの内容が新しい値に変化したことを示す入力信号を受信する工程を含んでおり、前記生成工程が:
    前記新しい値が前記受け手によって導出できないときは、前記新しい値を示す複数のトレース要素を生成する工程を含んでおり、前記方法が:
    そのレジスタに付随する各エントリ中に表示を行なう工程;
    を含む方法。
  46. 請求項43に記載の方法であって、前記複数のレジスタが複数のソースレジスタおよび複数のあて先レジスタを含んでおり、前記受信工程が:
    1つのあて先レジスタの内容が1または複数の前記ソースレジスタの値に依存して新しい値に変化したことを示す入力信号を受信する工程を含んでおり、前記生成工程が:
    前記新しい値が前記受け手によって導出できないときは、前記新しい値を示す複数のトレース要素を生成する工程を含んでおり、前記方法が:
    前記あて先レジスタに付随する各エントリ中に表示を行なう工程;
    を含む方法。
  47. 請求項43に記載の方法であって、前記複数のレジスタが複数のソースレジスタおよび複数のあて先レジスタを含んでおり、前記受信工程が:
    1つのあて先レジスタの内容が1または複数の前記ソースレジスタの値に依存して新しい値に変化したことを示す入力信号を受信する工程を含んでおり、前記方法が:
    前記新しい値が前記受け手によって導出できるときは、前記あて先レジスタに付随する各エントリ中に表示を行なう工程;
    を含む方法。
  48. データ処理装置のアーキテクチャ・ステートのサブセットにおける変化をトレースする方法であって:
    前記データ処理装置の1または複数の部品から、アーキテクチャ・ステートの前記サブセットにおける変化を示す入力信号を受信する工程;
    先に生成されたトレース要素から導出可能なアーキテクチャ・ステートを同定するテーブルを参照することによって、生成すべきトレース要素を決定する工程;および
    前記変化を示す複数のトレース要素を生成して、前記トレース要素の受け手が後でアーキテクチャ・ステートの前記サブセットを再構築できるようにする工程を含み、
    アーキテクチャ・ステートの前記サブセットが複数のメモリアドレスの内容を含んでおり、前記テーブルが前記複数のメモリアドレスの各々に付随して1つのアドレス・エントリを有している方法。
  49. 請求項48に記載の方法であって、前記受信工程が:
    1つのメモリアドレスの内容が新しい値に変化したことを示す入力信号を受信する工程を含んでおり、前記方法が:
    前記新しい値が前記受け手によって導出できるときは、前記メモリアドレスに付随する各アドレス・エントリ中に表示を行なう工程;
    を含む方法。
  50. 請求項48に記載の方法であって、前記受信工程が:
    1つのメモリアドレスの内容が新しい値に変化したことを示す入力信号を受信する工程を含んでおり、前記生成工程が:
    前記新しい値が前記受け手によって導出できないときは、前記新しい値を示す複数のトレース要素を生成する工程を含んでおり、前記方法が:
    そのメモリアドレスに付随する各アドレス・エントリ中に表示を行なう工程;
    を含む方法。
  51. 請求項48に記載の方法であって、前記テーブルが1または複数のテーブルを含んでおり、各テーブルがベースメモリアドレスに付随するベースアドレス・エントリと、前記ベースアドレスから論理的にオフセットされたメモリアドレスレンジの各々に付随する1つのアドレス・エントリとを有しており、前記受信工程が:
    1つのメモリアドレスの内容が新しい値に変化したことを示す入力信号を受信する工程を含んでおり、前記決定工程が:
    前記メモリアドレスが前記レンジの1つに含まれるかどうかを判断する工程を含んでおり、もしそうであれば、前記方法が:
    そのメモリアドレスに付随する各アドレス・エントリ中に表示を行なう工程;
    を含む方法。
  52. 請求項51に記載の方法であって、前記受信工程が:
    1つのメモリアドレスの内容が新しい値に変化したことを示す入力信号を受信する工程を含んでおり、前記決定工程が:
    前記メモリアドレスが前記レンジの1つに含まれるかどうかを判断する工程を含んでおり、もしそうでなければ、前記方法が:
    前記複数テーブルのうちの1つのテーブルのすべてのアドレス・エントリをクリアする工程;および
    前記複数テーブルのうちの前記1つのテーブルの前記ベースアドレス・エントリを更新する工程を含んでおり、前記生成工程が:
    前記新しい値を示す複数のトレース要素を生成する工程を含んでおり、前記方法が:
    前記メモリアドレスに付随する各アドレス・エントリ中に表示を行なう工程;
    を含む方法。
  53. 請求項38に記載の方法であって、更に:
    実行されている命令を示す命令トレース要素を生成する工程;
    を含む方法。
  54. 請求項38に記載の方法であって、アーキテクチャ・ステートの前記サブセットにおける前記変化が前記データ処理装置によるシーケンス外命令の実行を引き起こすようになっており、前記方法が:
    実行すべき前記シーケンス外命令を示すトレース要素を生成する工程;
    を含む方法。
  55. 請求項38に記載の方法であって、前記受け手がトレース解析ツールであり、前記テーブルが前記トレース解析ツールによって導出できるアーキテクチャ・ステートの前記サブセットを同定する方法。
  56. 請求項55に記載の方法であって:
    前記トレース解析ツールに対して、前記データ処理装置が実行すべきシーケンシャル命令を示す工程;
    を含む方法。
  57. 請求項56に記載の方法であって、各々のシーケンシャル命令がそれに付随して1つのアドレスを有しており、前記決定工程が:
    前記シーケンス外命令のアドレスが、前記データ処理装置に前記シーケンス外命令を実行させる原因となったアーキテクチャ・ステートの前記項目の前記変化をもたらすために用いられたアーキテクチャ・ステートの複数項目に付随する各エントリ中に表示がなされているかどうかを判断することによって、前記トレース解析ツールによって導出できるかどうかを判断する工程;
    を含んでいる方法。
  58. 請求項56に記載の方法であって、前記テーブルは前記データ処理装置が実行すべきシーケンシャル命令の前記表示を同定するようになっており、前記方法が:
    実行されている命令を示す入力信号を受信する工程;
    実行されている命令を示す前記入力信号に応答して、前記トレース解析ツールが前記テーブルを参照することによって、実行されている前記命令を決定することができるかどうかを判断する工程を含み、もしそうでなければ:
    前記命令が前記トレース解析ツールによって導出できないときは、前記命令を示す複数のトレース要素を生成する工程;
    を含む方法。
  59. データ処理装置のプログラムカウンタ値の変化をトレースする方法であって、前記データ処理装置は命令のシーケンスを実行するように構成されており、前記プログラムカウンタ値は前記データ処理装置が実行すべき次の命令を示しており、前記方法が:
    前記データ処理装置の1または複数の部品から、実行されている現在の命令を示す入力信号を受信する工程;
    前記入力信号から、前記現在の命令に付随するデータを示すデータトレース要素と、プログラムカウンタ値の前記変化を示す分岐トレース要素とを選択的に生成する工程;および
    前記現在の命令が前記プログラムカウンタ値に非シーケンシャルな変化をもたらす間接的分岐命令である場合には、前記データトレース要素または前記分岐トレース要素のいずれかの生成を抑制する工程であって、プログラムカウンタ値の前記変化が、生成されたトレース要素から導出できる工程;
    を含む方法。
  60. 請求項59に記載の方法であって、前記抑制工程が:
    前記データトレース要素の生成を抑制する工程であって、プログラムカウンタ値の前記変化が、前記分岐トレース要素から受け手によって導出できる工程;
    を含んでいる方法。
  61. 請求項59に記載の方法であって、前記抑制工程が:
    前記分岐トレース要素の生成を抑制する工程であって、プログラムカウンタ値の前記変化が、前記データトレース要素から受け手によって導出できる工程;
    を含んでいる方法。
  62. 請求項59に記載の方法であって:
    プログラムカウンタ値の前記変化が、先に生成されたトレース要素から導出できるかどうかを示すテーブルを参照することによって、どのトレース要素を生成すべきかを決定する工程;
    を含む方法。
  63. 請求項62に記載の方法であって、前記抑制工程が:
    プログラムカウンタ値の前記変化が、前記受け手によって導出できると判断されたときは、前記データトレース要素および前記分岐トレース要素の生成を抑制する工程;
    を含んでいる方法。
  64. 請求項59に記載の方法であって:
    前記抑制を示すプレースホルダを生成する工程;
    を含む方法。
  65. 請求項59に記載の方法であって:
    前記入力信号の受信に応答して、前記データ処理装置によって命令が実行されていることを示す命令トレースを生成する工程;
    を含む方法。
  66. コンピュータが読み出し可能なメディア上に記録されたコンピュータプログラムであって、コンピュータ上で実行されるときに、請求項38に記載の方法の工程を実行するコンピュータプログラム
JP2003195368A 2002-06-07 2003-06-06 データ処理装置用トレース要素生成システム Expired - Lifetime JP4225851B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0213149A GB2389432B (en) 2002-06-07 2002-06-07 Instruction tracing in data processing systems
US10/206,829 US7003699B2 (en) 2002-06-07 2002-07-29 Generation of trace signals within a data processing apparatus
GB0229009A GB2389931B (en) 2002-06-07 2002-12-12 Generation of trace elements within a data processing apparatus

Publications (2)

Publication Number Publication Date
JP2004038981A JP2004038981A (ja) 2004-02-05
JP4225851B2 true JP4225851B2 (ja) 2009-02-18

Family

ID=9938186

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2003059371A Expired - Lifetime JP4233893B2 (ja) 2002-06-07 2003-03-06 データ処理システムにおける命令のトレーシング
JP2003195368A Expired - Lifetime JP4225851B2 (ja) 2002-06-07 2003-06-06 データ処理装置用トレース要素生成システム

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2003059371A Expired - Lifetime JP4233893B2 (ja) 2002-06-07 2003-03-06 データ処理システムにおける命令のトレーシング

Country Status (3)

Country Link
US (2) US7003699B2 (ja)
JP (2) JP4233893B2 (ja)
GB (2) GB2389432B (ja)

Families Citing this family (85)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030121027A1 (en) * 2000-06-23 2003-06-26 Hines Kenneth J. Behavioral abstractions for debugging coordination-centric software designs
GB2366879B (en) * 2000-09-16 2005-02-16 Ibm Tracing the execution path of a computer program
GB2389432B (en) * 2002-06-07 2005-09-07 Advanced Risc Mach Ltd Instruction tracing in data processing systems
US7133821B2 (en) * 2002-11-22 2006-11-07 Texas Instruments Incorporated Read FIFO scheduling for multiple streams while maintaining coherency
US7219333B2 (en) * 2002-11-22 2007-05-15 Texas Instruments Incorporated Maintaining coherent synchronization between data streams on detection of overflow
US7100151B2 (en) * 2002-11-22 2006-08-29 Texas Instruments Incorporated Recovery from corruption using event offset format in data trace
US7099817B2 (en) 2002-11-22 2006-08-29 Texas Instruments Incorporated Stalling CPU pipeline to prevent corruption in trace while maintaining coherency with asynchronous events
US7463653B2 (en) * 2002-12-17 2008-12-09 Texas Instruments Incorporated Apparatus and method for compression of the timing trace stream
US7210127B1 (en) * 2003-04-03 2007-04-24 Sun Microsystems Methods and apparatus for executing instructions in parallel
US7149933B2 (en) * 2003-08-07 2006-12-12 Arm Limited Data processing system trace bus
US20050066311A1 (en) * 2003-09-22 2005-03-24 International Business Machines Corporation Autonomic execution tracking and correction of functions
US7703101B2 (en) * 2004-02-13 2010-04-20 International Business Machines Corporation Autonomic workload classification using predictive assertion for wait queue and thread pool selection
DE102004007614A1 (de) * 2004-02-17 2005-09-01 Giesecke & Devrient Gmbh Datenträger mit Ablaufdiagnosespeicher
US7707554B1 (en) * 2004-04-21 2010-04-27 Oracle America, Inc. Associating data source information with runtime events
US7434108B2 (en) * 2004-04-30 2008-10-07 Freescale Semiconductor, Inc. Masking within a data processing system having applicability for a development interface
US7904488B2 (en) 2004-07-21 2011-03-08 Rockwell Automation Technologies, Inc. Time stamp methods for unified plant model
US8756521B1 (en) 2004-09-30 2014-06-17 Rockwell Automation Technologies, Inc. Systems and methods for automatic visualization configuration
US20060129999A1 (en) * 2004-11-16 2006-06-15 Sony Computer Entertainment Inc. Methods and apparatus for using bookmarks in a trace buffer
JP2006259869A (ja) * 2005-03-15 2006-09-28 Fujitsu Ltd マルチプロセッサシステム
US7475291B2 (en) * 2005-03-31 2009-01-06 International Business Machines Corporation Apparatus and method to generate and save run time data
US7809683B2 (en) * 2005-05-13 2010-10-05 Rockwell Automation Technologies, Inc. Library that includes modifiable industrial automation objects
US7676281B2 (en) 2005-05-13 2010-03-09 Rockwell Automation Technologies, Inc. Distributed database in an industrial automation environment
US7672737B2 (en) 2005-05-13 2010-03-02 Rockwell Automation Technologies, Inc. Hierarchically structured data model for utilization in industrial automation environments
US8799800B2 (en) * 2005-05-13 2014-08-05 Rockwell Automation Technologies, Inc. Automatic user interface generation
US7650405B2 (en) * 2005-05-13 2010-01-19 Rockwell Automation Technologies, Inc. Tracking and tracing across process boundaries in an industrial automation environment
US8627049B2 (en) * 2005-05-16 2014-01-07 Texas Instruments Incorporated Real-time prioritization of stall or event information
US20070011492A1 (en) * 2005-07-05 2007-01-11 Arm Limited Generation of trace data
US7496899B2 (en) * 2005-08-17 2009-02-24 Arm Limited Preventing loss of traced information in a data processing apparatus
US20070067458A1 (en) * 2005-09-20 2007-03-22 Rockwell Software, Inc. Proxy server for integration of industrial automation data over multiple networks
US7548789B2 (en) 2005-09-29 2009-06-16 Rockwell Automation Technologies, Inc. Editing lifecycle and deployment of objects in an industrial automation environment
US7881812B2 (en) * 2005-09-29 2011-02-01 Rockwell Automation Technologies, Inc. Editing and configuring device
US8484250B2 (en) * 2005-09-30 2013-07-09 Rockwell Automation Technologies, Inc. Data federation with industrial control systems
US7660638B2 (en) * 2005-09-30 2010-02-09 Rockwell Automation Technologies, Inc. Business process execution engine
US7734590B2 (en) 2005-09-30 2010-06-08 Rockwell Automation Technologies, Inc. Incremental association of metadata to production data
US7801628B2 (en) 2005-09-30 2010-09-21 Rockwell Automation Technologies, Inc. Industrial operator interfaces interacting with higher-level business workflow
US7526794B2 (en) * 2005-09-30 2009-04-28 Rockwell Automation Technologies, Inc. Data perspectives in controller system and production management systems
US8275680B2 (en) * 2005-09-30 2012-09-25 Rockwell Automation Technologies, Inc. Enabling transactional mechanisms in an automated controller system
US20070288906A1 (en) * 2006-05-16 2007-12-13 Texas Instruments Incorporated Efficient transfer of timing information
US7707394B2 (en) * 2006-05-30 2010-04-27 Arm Limited Reducing the size of a data stream produced during instruction tracing
US8086904B2 (en) * 2006-07-28 2011-12-27 Apple Inc. Event-based setting of process tracing scope
US8116179B2 (en) * 2006-07-28 2012-02-14 Apple Inc. Simultaneous viewing of multiple tool execution results
JP4846493B2 (ja) 2006-09-05 2011-12-28 富士通セミコンダクター株式会社 デバッグシステム及びデバッグ回路
US8291417B2 (en) * 2006-09-08 2012-10-16 Freescale Semiconductor, Inc. Trace buffer with a processor
US20080082801A1 (en) * 2006-09-29 2008-04-03 Mips Technologies, Inc. Apparatus and method for tracing instructions with simplified instruction state descriptors
US8533530B2 (en) * 2006-11-15 2013-09-10 Qualcomm Incorporated Method and system for trusted/untrusted digital signal processor debugging operations
US8380966B2 (en) * 2006-11-15 2013-02-19 Qualcomm Incorporated Method and system for instruction stuffing operations during non-intrusive digital signal processor debugging
US8370806B2 (en) * 2006-11-15 2013-02-05 Qualcomm Incorporated Non-intrusive, thread-selective, debugging method and system for a multi-thread digital signal processor
US8341604B2 (en) * 2006-11-15 2012-12-25 Qualcomm Incorporated Embedded trace macrocell for enhanced digital signal processor debugging operations
US7840781B1 (en) * 2007-04-04 2010-11-23 Xilinx, Inc. Circuit arrangement for profiling a programmable processor connected via a uni-directional bus
US8484516B2 (en) * 2007-04-11 2013-07-09 Qualcomm Incorporated Inter-thread trace alignment method and system for a multi-threaded processor
US7844954B2 (en) * 2007-11-06 2010-11-30 Vmware, Inc. Using branch instruction counts to facilitate replay of virtual machine instruction execution
US8055950B2 (en) * 2008-01-11 2011-11-08 Arm Limited Method and apparatus for improved timing for trace synchronization
US20090187747A1 (en) * 2008-01-18 2009-07-23 Infineon Technologies Ag System and method for tracing instruction pointers and data access
WO2009099045A1 (ja) 2008-02-04 2009-08-13 Nec Corporation トレース・障害観測システム、トレース・障害観測方法及びトレース・障害観測プログラム
US20090222797A1 (en) * 2008-02-29 2009-09-03 Infineon Technologies Ag Apparatus and method for providing a trigger
US8117602B2 (en) * 2008-04-01 2012-02-14 Kaspersky Lab, Zao Method and system for monitoring execution performance of software program product
GB2459652B (en) * 2008-04-28 2010-09-22 Imagination Tech Ltd Controlling instruction scheduling based on the space in a trace buffer
US9223677B2 (en) * 2008-06-11 2015-12-29 Arm Limited Generation of trace data in a multi-processor system
JP5167984B2 (ja) * 2008-06-26 2013-03-21 富士通株式会社 命令トレース生成プログラム、命令トレース生成装置および命令トレース生成方法
US20100083237A1 (en) * 2008-09-26 2010-04-01 Arm Limited Reducing trace overheads by modifying trace operations
JP5304239B2 (ja) * 2008-12-26 2013-10-02 富士通株式会社 プロセッサ試験装置、プロセッサ試験方法、プロセッサ試験プログラム
US8176366B2 (en) * 2009-04-03 2012-05-08 Arm Limited Trace synchronization
WO2011014623A1 (en) * 2009-07-29 2011-02-03 Reversinglabs Corporation Portable executable file analysis
US8234524B1 (en) * 2009-09-28 2012-07-31 Dale Trenton Smith Protocol analysis with event present flags
GB2477936B (en) * 2010-02-17 2016-02-10 Advanced Risc Mach Ltd Trace data priority selection
US8484401B2 (en) 2010-04-15 2013-07-09 Rockwell Automation Technologies, Inc. Systems and methods for conducting communications among components of multidomain industrial automation system
US8984533B2 (en) 2010-04-15 2015-03-17 Rockwell Automation Technologies, Inc. Systems and methods for conducting communications among components of multidomain industrial automation system
US9392072B2 (en) 2010-04-15 2016-07-12 Rockwell Automation Technologies, Inc. Systems and methods for conducting communications among components of multidomain industrial automation system
US20120042212A1 (en) 2010-08-10 2012-02-16 Gilbert Laurenti Mixed Mode Processor Tracing
US8719641B2 (en) * 2011-08-25 2014-05-06 International Business Machines Corporation Priority buffering for trace data in trace queue
GB2498571A (en) 2012-01-20 2013-07-24 Intellectual Ventures Holding 81 Llc Base station able to communicate with a second device type on a narrow subset frequency band contained within a first main band
US8612650B1 (en) 2012-03-13 2013-12-17 Western Digital Technologies, Inc. Virtual extension of buffer to reduce buffer overflow during tracing
CN103885845A (zh) * 2012-12-21 2014-06-25 祥硕科技股份有限公司 集成电路的除错系统及其除错方法
US9442729B2 (en) * 2013-05-09 2016-09-13 Intel Corporation Minimizing bandwidth to track return targets by an instruction tracing system
WO2014209312A1 (en) * 2013-06-27 2014-12-31 Intel Corporation Tracking mode of a processing device in instruction tracing systems
JP6127883B2 (ja) * 2013-10-02 2017-05-17 株式会社ソシオネクスト 半導体装置および半導体装置の動作制御方法
US20150278064A1 (en) * 2014-03-27 2015-10-01 Cigol Digital Systems Ltd. Signal export from on-chip circuit
GB2549509B (en) * 2016-04-20 2018-07-04 Advanced Risc Mach Ltd An apparatus and method for combining trace data from a plurality of trace sources
GB2551747B (en) * 2016-06-29 2019-04-10 Advanced Risc Mach Ltd Diagnostic data capture
DE102017200161A1 (de) * 2017-01-09 2018-07-12 Robert Bosch Gmbh Verfahren zum Erfassen von Signalen
US10331446B2 (en) * 2017-05-23 2019-06-25 International Business Machines Corporation Generating and verifying hardware instruction traces including memory data contents
CN109284223B (zh) * 2017-07-21 2023-10-20 超威半导体(上海)有限公司 可配置的调试方法和系统
US10747543B2 (en) 2018-12-28 2020-08-18 Marvell Asia Pte, Ltd. Managing trace information storage using pipeline instruction insertion and filtering
US10901871B2 (en) * 2019-03-05 2021-01-26 Intel Corporation System, apparatus and method for dynamic multi-source tracing in a system
US11914499B2 (en) * 2021-10-29 2024-02-27 Stmicroelectronics Application Gmbh Systems and methods for preparing trace data

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62224841A (ja) * 1986-03-26 1987-10-02 Nec Corp 動作履歴記憶方式
US5678028A (en) * 1994-10-25 1997-10-14 Mitsubishi Electric Information Technology Center America, Inc. Hardware-software debugger using simulation speed enhancing techniques including skipping unnecessary bus cycles, avoiding instruction fetch simulation, eliminating the need for explicit clock pulse generation and caching results of instruction decoding
US5764885A (en) 1994-12-19 1998-06-09 Digital Equipment Corporation Apparatus and method for tracing data flows in high-speed computer systems
US5802272A (en) * 1994-12-19 1998-09-01 Digital Equipment Corporation Method and apparatus for tracing unpredictable execution flows in a trace buffer of a high-speed computer system
JP2752592B2 (ja) * 1994-12-28 1998-05-18 日本ヒューレット・パッカード株式会社 マイクロプロセッサ、マイクロプロセッサ−デバッグツール間信号伝送方法及びトレース方法
US5724505A (en) * 1996-05-15 1998-03-03 Lucent Technologies Inc. Apparatus and method for real-time program monitoring via a serial interface
US5996092A (en) * 1996-12-05 1999-11-30 International Business Machines Corporation System and method for tracing program execution within a processor before and after a triggering event
GB9626367D0 (en) * 1996-12-19 1997-02-05 Sgs Thomson Microelectronics Providing an instruction trace
US6167536A (en) * 1997-04-08 2000-12-26 Advanced Micro Devices, Inc. Trace cache for a microprocessor-based device
US6148381A (en) * 1997-04-08 2000-11-14 Advanced Micro Devices, Inc. Single-port trace buffer architecture with overflow reduction
EP1184790B1 (en) * 1997-04-08 2009-11-25 Advanced Micro Devices, Inc. Trace cache for a microprocessor-based device
US6256775B1 (en) * 1997-12-11 2001-07-03 International Business Machines Corporation Facilities for detailed software performance analysis in a multithreaded processor
US6145123A (en) * 1998-07-01 2000-11-07 Advanced Micro Devices, Inc. Trace on/off with breakpoint register
US6954923B1 (en) * 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US7013456B1 (en) * 1999-01-28 2006-03-14 Ati International Srl Profiling execution of computer programs
US7275246B1 (en) * 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US6513134B1 (en) * 1999-09-15 2003-01-28 International Business Machines Corporation System and method for tracing program execution within a superscalar processor
US6615370B1 (en) 1999-10-01 2003-09-02 Hitachi, Ltd. Circuit for storing trace information
US7100152B1 (en) * 2000-01-31 2006-08-29 Freescale Semiconductor, Inc. Software analysis system having an apparatus for selectively collecting analysis data from a target system executing software instrumented with tag statements and method for use thereof
US7000225B2 (en) * 2000-12-07 2006-02-14 International Business Machines Corporation Method for inserting global breakpoints
US6694507B2 (en) * 2000-12-15 2004-02-17 International Business Machines Corporation Method and apparatus for analyzing performance of object oriented programming code
US7448025B2 (en) * 2000-12-29 2008-11-04 Intel Corporation Qualification of event detection by thread ID and thread privilege level
US6813731B2 (en) * 2001-02-26 2004-11-02 Emc Corporation Methods and apparatus for accessing trace data
US6802031B2 (en) * 2001-05-24 2004-10-05 International Business Machines Corporation Method and apparatus for increasing the effectiveness of system debug and analysis
GB2389432B (en) * 2002-06-07 2005-09-07 Advanced Risc Mach Ltd Instruction tracing in data processing systems
US6948155B2 (en) * 2002-11-22 2005-09-20 Texas Instruments Incorporated Little offset in multicycle event maintaining cycle accurate tracing of stop events

Also Published As

Publication number Publication date
GB0213149D0 (en) 2002-07-17
US7003699B2 (en) 2006-02-21
US7134117B2 (en) 2006-11-07
JP4233893B2 (ja) 2009-03-04
JP2004038981A (ja) 2004-02-05
GB2389432B (en) 2005-09-07
US20040024995A1 (en) 2004-02-05
GB2413418B (en) 2006-03-01
GB2413418A (en) 2005-10-26
US20030229823A1 (en) 2003-12-11
GB0514709D0 (en) 2005-08-24
JP2004013896A (ja) 2004-01-15
GB2389432A (en) 2003-12-10

Similar Documents

Publication Publication Date Title
JP4225851B2 (ja) データ処理装置用トレース要素生成システム
US7197671B2 (en) Generation of trace elements within a data processing apparatus
JP4038372B2 (ja) 順序外データのトレーシング
USRE49305E1 (en) Data processing system having cache memory debugging support and method therefor
KR100439781B1 (ko) 데이터프로세서와그동작방법,그디버깅동작실행방법및그중단점값수정방법
US7472218B2 (en) Assisted trace facility to improve CPU cache performance
US6223228B1 (en) Apparatus for synchronizing multiple processors in a data processing system
US8145874B2 (en) System and method of data forwarding within an execution unit
US8131951B2 (en) Utilization of a store buffer for error recovery on a store allocation cache miss
US5481734A (en) Data processor having 2n bits width data bus for context switching function
US8037363B2 (en) Generation of trace elements within a data processing apparatus
US20080201615A1 (en) Apparatus and computer program product for implementing atomic data tracing
JP2008510246A (ja) バーストリードライト動作による処理装置
US7607047B2 (en) Method and system of identifying overlays
JPH05204709A (ja) プロセッサ
US20080082801A1 (en) Apparatus and method for tracing instructions with simplified instruction state descriptors
JP2002163127A (ja) トレース制御回路
WO2004088461A2 (en) Local emulation of data ram utilizing write-through cache hardware within a cpu module
GB2389931A (en) Selective generation of trace elements
US20130159591A1 (en) Verifying data received out-of-order from a bus
US7634631B2 (en) Method and system for updating network flow statistics stored in an external memory
JP3349911B2 (ja) マイクロプロセッサ及びその開発支援装置
US20070005842A1 (en) Systems and methods for stall monitoring
JP2002334128A (ja) 半導体集積回路の消費電力シミュレーション方法
JP6049564B2 (ja) データトレース回路、集積回路およびデータトレース方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050704

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080627

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080929

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20081002

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081023

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20081118

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20081125

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111205

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4225851

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111205

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121205

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121205

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131205

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term