JP5680511B2 - データ処理装置、トレースユニット、および診断装置 - Google Patents

データ処理装置、トレースユニット、および診断装置 Download PDF

Info

Publication number
JP5680511B2
JP5680511B2 JP2011195900A JP2011195900A JP5680511B2 JP 5680511 B2 JP5680511 B2 JP 5680511B2 JP 2011195900 A JP2011195900 A JP 2011195900A JP 2011195900 A JP2011195900 A JP 2011195900A JP 5680511 B2 JP5680511 B2 JP 5680511B2
Authority
JP
Japan
Prior art keywords
reference address
address
register
trace
memory
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.)
Active
Application number
JP2011195900A
Other languages
English (en)
Other versions
JP2012113691A5 (ja
JP2012113691A (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
Application filed by アーム・リミテッド filed Critical アーム・リミテッド
Publication of JP2012113691A publication Critical patent/JP2012113691A/ja
Publication of JP2012113691A5 publication Critical patent/JP2012113691A5/ja
Application granted granted Critical
Publication of JP5680511B2 publication Critical patent/JP5680511B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/3471Address tracing
    • 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/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明はデータ処理の分野に関する。より詳細には、本発明は、処理装置によって実行された処理動作を示すトレースデータの生成および分析に関する。
データ処理システムにおいて、処理回路によって実行された処理動作を監視し、処理動作の特性を示すトレースデータを生成するために、トレース回路が提供される場合がある。次いで、生成されたトレースデータを診断装置によって分析し、処理動作の処理結果を決定することができる。トレースデータから導き出された情報は、例えば、診断またはデバッグ目的に有用であり得る。
時には、処理回路は、メモリアドレスに関連する処理動作を実行することができる。こうした場合、トレース回路は、トレースデータストリームに、メモリアドレスの指示を含むことが有用である可能性がある。例えば、命令アドレス、分岐ターゲットアドレス、またはロード/格納アドレスがトレースされてもよい。いくつかのトレース回路は、参照アドレスを格納するためのアドレスレジスタを維持する。アドレスがトレースストリーム内において出力されることが必要である場合、トレース回路は、アドレスレジスタ内に格納された参照アドレスの対応するビットと同じである場合、アドレスのより上位のビットを省略できる。対応する参照ビットと同じアドレスのビットを省略することにより、トレースデータの量は小さくなる。
別の種類のトレースユニットは、特定の種類の命令で使用されるアドレスレジスタ、例えば、現在実行されている命令の命令アドレスでのみ使用されるあるアドレスレジスタ、およびロード/格納命令によって使用されるロード/格納アドレスでのみ使用される別のアドレスレジスタを有してもよい。しかしながら、特定の種類の命令については、トレースユニットは、常に、同じアドレスレジスタを使用する。
本技術は、トレースデータストリーム内のアドレスのより大きな圧縮を提供できるトレースユニットを提供することを目的とする。
一態様から見ると、本発明は、データ処理装置であって、
対応するメモリアドレスによって識別された複数のメモリロケーションを含むメモリと、
命令に応答して、処理動作を実行するように構成された処理回路と、
前記処理回路によって実行された前記処理動作を示すトレースデータ要素のストリームを生成し、前記トレースデータ要素のストリームを出力するように構成されたトレース回路と、を備え、
前記トレース回路は、複数の参照アドレスを格納するように構成された複数の参照アドレスレジスタを含み、
前記トレース回路は、選択された参照アドレスレジスタとして前記複数の参照アドレスレジスタのうちの1つを選択し、
(i)前記複数の参照アドレスレジスタのうちのどれが前記選択された参照アドレスレジスタであるかを示す第1の情報と、
(ii)関連付けられたメモリアドレスと前記選択された参照アドレスレジスタに格納された選択された参照アドレスとの差を示す第2の情報と、を示すトレースデータ要素を生成および出力するために、関連付けられたメモリアドレスに関連付けられた処理動作を実行するための命令を処理する処理回路に応答する、データ処理装置を提供する。
本技術は、処理動作を実行するための処理回路を有するデータ処理装置と、処理回路によって実行された処理動作を示すトレースデータ要素のストリームを生成および出力するためのトレース回路とを提供する。トレース回路は、複数の参照アドレスを格納するように構成された複数の参照アドレスレジスタを有する。処理回路が関連付けられたメモリアドレスに関連付けられた処理動作を実行するための命令を処理する場合、トレース回路は、選択された参照アドレスレジスタとして複数の参照アドレスレジスタのうちの1つのいずれかを選択し、複数の参照アドレスレジスタのどれが選択されたアドレスレジスタであるかを示す第1の情報、および関連付けられたメモリアドレスと、選択された参照アドレスレジスタの選択された参照アドレスとの差を示す第2の情報を示すトレースデータ要素を生成および出力する。
関連付けられたメモリアドレスと選択された参照アドレスとの差が小さければ小さいほど、関連付けられたメモリアドレスを表すために必要なトレースデータの量は小さくなる。トレース回路が、所与の関連付けられたメモリアドレスについて、複数のアドレスレジスタのいずれかを選択できるようにし、また、選択された参照アドレスレジスタが識別され、選択された参照アドレスと関連付けられたメモリアドレスとの差が示されるトレースデータ要素を生成することにより、複数の参照アドレスレジスタ内の参照アドレスのうちの1つが、関連付けられたメモリアドレスと一致する、または、関連付けられたメモリアドレスとわずかに異なる可能性が高くなる。このため、トレースデータが大きく圧縮される可能性が高くなり、従って、トレースデータを格納するためのトレースバッファがオーバーフローする、または生成されたトレースデータが利用可能なトレース帯域幅を超える可能性が低下する。
関連付けられたメモリアドレスが、選択された参照アドレスと完全に一致する場合、第2の情報は、関連付けられたメモリアドレスと選択された参照アドレスとの間でゼロの差を示すことに留意されたい。
トレースデータ要素は、多くの方法で第1の情報および第2の情報を符号化し得る。どの参照アドレスレジスタが選択された参照アドレスレジスタであるか、および、関連付けられたメモリアドレスと選択された参照アドレスとの差の両方を識別する単一のデータ値を含むトレースデータ要素を提供することが可能である。
しかしながら、一実施形態において、トレースデータ要素は、選択された参照アドレスレジスタを示す第1の情報を示すヘッダ部分、および関連付けられたメモリアドレスと選択された参照アドレスとの間のアドレスの差を示す第2の情報を示すアドレス部分を含み得る。
関連付けられたメモリアドレスが、選択された参照アドレスと完全に一致するケースを、多くの方法でトレースデータ要素において正確に符号化し得る。例えば、トレースデータ要素のアドレス部分を、関連付けられたメモリアドレスおよび選択された参照アドレスの間のゼロの差を示すゼロの値に設定し得る。あるいは、所定の識別子を、関連付けられたメモリアドレスおよび選択された参照アドレスの間の完全な一致が存在することを表すトレースデータ要素に含むことができる。
しかしながら、一実施形態において、トレース回路は、関連付けられたアドレスと選択された参照アドレスとの間の差がゼロである場合に、トレースデータ要素からアドレス部分を省略し得る。この場合、ヘッダ部分のみを含み、アドレス部分を含まないトレースデータ要素は、選択された参照アドレスと関連付けられたメモリアドレスとの間の完全な一致が存在する(つまり、アドレス部分の欠如は、関連付けられたメモリアドレスと選択された参照アドレスとの差がないことを示す第2の情報を伝える)ことを示すことができる。関連付けられたメモリアドレスおよび選択された参照アドレスの間の完全な一致が存在する場合に、アドレス部分を省略することで、トレースデータの量を小さくすることができる。
トレース回路は、多くの方法で選択された参照アドレスレジスタを選択するように構成され得る。一実施形態において、トレース回路は、それぞれの複数の参照アドレスレジスタに対応する複数の候補の第2の情報の値を決定するように構成され得る。各候補の第2の情報の値は、関連付けられたメモリアドレスとその候補の第2の情報の値に対応する参照アドレスレジスタに格納された参照アドレスとの間の差を示す。トレース回路は、選択された参照アドレスレジスタとして、最も効率的な候補の第2の情報の値に対応する参照アドレスレジスタを選択し得る。最も効率的な候補の第2の情報の値は、典型的には、トレースデータ要素の最も効率的な符号化を生じさせる値となる。複数の候補の第2の情報の値が同等に効率的である場合、これらの値のいずれか1つを、最も効率的な候補の第2の情報の値として選択し得る。次いで、トレース回路は、最も効率的な候補の第2の情報の値に対応する第2の情報を示すトレースデータ要素を生成し得る。選択された参照アドレスレジスタとして、最も効率的な候補の値に対応する参照アドレスレジスタを選択することにより、トレースデータを、より効率的に符号化できる。
一実施形態において、最も効率的な候補の第2の情報の値は、対応する第2の情報を提供するために、トレースデータ要素に含まれる。しかしながら、他の実施形態において、最も効率的な候補の第2の情報の値は、トレースデータ要素に常に含まれる必要はなく、時には、対応する第2の情報を示すために別の種類の情報がトレースデータ要素に含まれてもよい。例えば、関連付けられたメモリアドレスおよび選択された参照アドレスの間に完全な一致が存在する場合、最も効率的な候補の第2の情報は、ゼロの差を示し、こうして、対応する第2の情報を、上記のように完全な一致を示すアドレス情報の欠如により、ゼロビットを用いてトレースデータ要素に表し得る。
一例において、最も効率的な候補の第2の情報の値は、対応する第2の情報を最小のビットを用いて表すことができる候補の第2の情報の値である。トレースデータ要素において、より少ないビットを用いて表すことができる第2の情報を含むことにより、トレースデータの量を少なくすることができる。
あるいは、最も効率的な候補の第2の情報の値を、トレースデータ要素のストリーム内のトレースデータ要素に含む場合、対応する第2の情報が、トレースデータ要素のストリーム内のトレースデータの全ての最小の量となる候補の第2の情報の値として選択し得る。このため、選択された参照アドレスレジスタとして参照アドレスレジスタのうちの適した1つを選択することにより、トレースデータの合計量を減らすことができる。
第2の情報は、関連付けられたメモリアドレスと選択された参照アドレスとの間の差を異なる方法で示し得る。一実施形態において、第2の情報は、選択された参照アドレスレジスタの選択された参照アドレスの対応する部分に対して異なるビット値を有する関連付けられたメモリアドレスの部分を示してもよい。選択された参照アドレスの対応するビットに対して異なるビットを有する部分を示す第2の情報を提供し、関連付けられたメモリアドレスおよび選択された参照アドレスにおいて同じである共通の部分を省略することにより、第2の情報を、関連付けられたメモリアドレスよりも少ないビットを用いて表すことができる。
あるいは、第2の情報は、関連付けられたメモリアドレスと選択されたメモリアドレスとの間の数値の差を示し得る。この場合、トレース回路は、数値の差を生成するために、選択された参照アドレスから関連付けられたメモリアドレスを、または関連付けられたメモリアドレスから選択された参照アドレスを差し引くことにより、第2の情報を生成し得る。
トレース動作中に変化しない固定の参照アドレスを格納する参照アドレスレジスタを提供することが可能である。しかしながら、一実施形態において、トレースデータ要素を生成後に、関連付けられたメモリアドレスに応じて、複数の参照アドレスレジスタのうちの少なくとも1つの参照アドレスを選択的に更新するための参照アドレス更新動作を実行するために、トレース回路を構成してもよい。
本技術は、ある処理動作のための関連付けられたメモリアドレスが、1つ以上の以下の処理動作のための関連付けられたメモリアドレスと類似している可能性が大きいことを認識している。例えば、プログラム命令のループは、同じ送信先アドレスへ何度も分岐してもよく、または、一連のロード/格納動作は、隣接するメモリアドレスのブロック上で実行されてもよい。このため、トレース回路に、関連付けられたメモリアドレスに応じて、参照アドレスレジスタのうちの少なくとも1つの参照アドレスを更新する能力を与えることにより、以下の処理動作のための関連付けられたメモリアドレスが参照アドレスのうちの1つと同一または類似であるの可能性が高くなり、そのため、トレースデータの合計量を小さくできる可能性がある。
一実施形態において、参照アドレス更新動作は、複数の参照アドレスレジスタから選択された犠牲参照アドレスレジスタへ関連付けられたアドレスを書き込むことを含む。関連付けられたメモリアドレスは、次いで、トレースデータ要素を生成するために、以下の動作で使用可能な参照アドレスのうちの1つになる。関連付けられたメモリアドレスを用いて参照アドレスのうちの1つを更新することにより、以下の処理動作のための関連付けられたメモリアドレスと、参照アドレスのうちの1つとの差は小さい可能性がより大きくなる。
トレース回路において、各処理動作後、または各トレースデータ要素生成後に、参照アドレスレジスタを更新することは不要である。時により、トレース回路は、いかなる参照アドレスも更新しない場合がある。例えば、一実施形態において、参照アドレス更新動作は、
(a)少なくとも1つの参照アドレスレジスタについて、対応する参照アドレスと前記関連付けられたメモリアドレスとの間のアドレスの差が、所定の閾値を上回るかどうかを決定することと、
(b)前記アドレスの差が前記少なくとも1つの参照アドレスレジスタのうちのそれぞれについて、前記所定の閾値を上回る場合に、前記少なくとも1つの参照アドレスレジスタから選択された犠牲参照アドレスレジスタへ、前記関連付けられたメモリアドレスを書き込むことと、を含む。
これによって、いずれかの所与の関連付けられたメモリアドレスが、参照アドレスのうちの1つとわずかに異なる可能性が高まるため、参照アドレスレジスタは、異なる範囲のメモリアドレススペースに、広く拡散された異なる参照アドレスを格納することが望ましい場合がある。同様の参照アドレス値が参照アドレスレジスタにあまりに多く格納されるのを防ぐために、トレース回路は、参照アドレスレジスタのうちの少なくとも1つについて、関連付けられたメモリアドレスと対応する参照アドレスとの間のアドレスの差が所定の閾値を上回るかどうかを決定し得る。次いで、トレース回路は、アドレスの差が所定の閾値を上回る場合に、関連付けられたメモリアドレスを犠牲参照アドレスレジスタに書き込み得る。アドレスの差が閾値を上回らない場合、これは、参照アドレスレジスタに既に格納された参照アドレスのうちの1つが、実質的に、参照アドレスレジスタへ格納された場合の関連付けられた参照アドレスがそうなるであろうと同程度、トレースデータの圧縮に有用であることを示すため、この場合、関連付けられたメモリアドレスによる参照アドレスレジスタの更新に関し、利点はほとんどない。そのため、この場合では、トレース回路は、関連付けられたメモリアドレスによって参照アドレスレジスタを更新しないように選択できる。
所与の関連付けられたメモリアドレスによって参照アドレスレジスタを更新するかどうかを決定するための閾値アドレスの差は、異なる方法で定義してもよい。例えば、所定の閾値は、参照アドレスの対応する部分とは異なる関連付けられたメモリアドレスの部分のための、閾値ビット数であってもよい。例えば、閾値ビット数が4ビットである場合、トレース回路は、関連付けられたメモリアドレスが4ビットよりも多く既存の参照アドレスのうちの1つと異なる場合に、関連付けられたメモリアドレスによって、参照アドレスのうちの1つを更新できる。あるいは、関連付けられたメモリアドレスと既存の参照アドレスとの間の数値の差が閾値よりも大きい場合に、関連付けられたメモリアドレスが参照アドレスレジスタのうちの1つに格納されるように、閾値アドレスの差を、数値の差として定義してもよい。
一実施形態において、所定の閾値は、第2の情報を示すためのアドレス部分の最小サイズに対応する。いくつかのトレース符号化スキームにおいて、第2の情報を示すためのアドレス部分は、最小サイズを有してもよい。関連付けられたメモリアドレスと既存の参照アドレスのうちの1つとの差が所定の閾値を上回らない(つまり、最小サイズのアドレス部分を用いて差を既に表すことができる)場合、参照アドレスとして関連付けられたメモリアドレスを使用することは、既存の参照アドレスを用いて既に達成できる以上に、トレースデータの量を低下させることはなく、そのため、関連付けられたメモリアドレスの参照アドレスレジスタへの書き込みにおいて、有利な点はほとんどない。所定の閾値が、関連付けられたメモリアドレスと参照アドレスとの間において変化する部分の閾値ビット数である場合、閾値は、アドレス部分の最小サイズのビット数に対応し得る。あるいは、所定の閾値が数値の差である場合、これは、アドレス部分の最小サイズを用いて表すことができる最大の正または負の値に対応する場合がある。例えば、最小サイズが6ビットである場合、およびアドレス部分が符号なしのバイナリ表現を用いる場合、閾値は、アドレス部分を用いて表すことが可能な最大の値である、63という数値の差に対応する場合がある。あるいは、例えば、6ビットのアドレス部分が−32〜31の範囲の値を表せるように、アドレス差を、符号付きのバイナリ表現を用いて表し得る。この場合、所定の閾値は、負のアドレス差で32、正のアドレス差で31にできる。負の差の値について、差は、閾値よりもさらに負の値が大きい場合に、閾値を「上回る」と考えられ得る(つまり、その絶対値は閾値の絶対値よりも大きい、例えば、−35という差は、−32という閾値を「上回る」と考えられる)ことに留意されたい。
トレース回路は、参照アドレスレジスタのどれが、関連付けられたメモリアドレスが参照アドレス更新中に書き込まれる犠牲参照アドレスレジスタであるかを選択するために、犠牲選択動作を実行するように構成され得る。いずれかの参照アドレスが既に犠牲アドレスレジスタに格納されている場合、これは、関連付けられたメモリアドレスによって上書きされる。トレース回路は、いずれかの種類の犠牲選択動作、例えば、ランダム、使用頻度が最も低い(LRU)またはラウンドロビンを使用し得る。例えば、レジスタは、最も最近に更新されたレジスタを示すポインタに関連付けられてもよく、ラウンドロビン犠牲選択スキームは、ポインタによって示されたレジスタの後続のレジスタの除去のために選択することにより、実装されてもよい。
一実施形態において、トレース回路は、参照アドレス更新動作による更新から少なくとも1つの参照アドレスレジスタを選択的に除外するために、ロックダウンシグナルに応答し得る。このため、ロックダウンシグナルは、これらのレジスタがそれらの現在の参照アドレスを格納し続けるように、所与のレジスタを動的に選択するように使用できる。例えば、特定のシーケンスのプログラム命令が、特定の関連付けられたメモリアドレスを何度も使用することである場合、および参照アドレスレジスタが、繰り返される関連付けられたメモリアドレスと類似の所与の参照アドレスを格納する場合、所与の参照アドレスが破棄または上書きされるべきではないことをトレース回路に通知するためにロックダウンシグナルを使用でき、これにより、トレースストリームを大幅に圧縮できる可能性が高まる。
参照アドレスレジスタの全てが更新可能である必要はない。一実施形態において、所定の参照アドレスを格納するための少なくとも1つの固定の参照アドレスレジスタが存在してもよい。次いで、固定の参照アドレスレジスタを、参照アドレス更新動作による更新から除外してもよい。例えば、プログラム命令に特定のメモリアドレスを頻繁に使用してもよいため、そのアドレスを格納する固定の参照アドレスレジスタを提供することが有益である可能性がある。
一実施形態において、参照アドレスレジスタのうちの少なくとも1つを、メモリアドレススペースの関連付けられた範囲のメモリアドレスに関連付けられた、範囲を限定された参照アドレスレジスタにしてもよい。トレース回路は、次いで、関連付けられたメモリアドレスがそのレジスタの関連付けられた範囲外である場合に、範囲が限定された参照アドレスレジスタを更新から除外してもよい。このため、範囲が限定された参照アドレスレジスタは、関連付けられた範囲内においてアドレスを格納するのみであってもよい。関連付けられた範囲は、連続するメモリ範囲である必要はないが、さらに、アドレスの複数の個別範囲を含んでもよい。一例において、異なる範囲が限定されたレジスタが異なるアドレス範囲にそれぞれ関連付けられて提供される場合に、関連付けられたメモリアドレスと参照アドレスのうちの1つとの間の小さな差が存在する可能性が高まるように、参照アドレスレジスタが、全メモリアドレススペース全体に分散される参照アドレスを格納することを確実にためにこれを使用できる。別の例において、参照アドレスレジスタは、関連付けられたメモリアドレスの少なくとも1つの範囲がいかなる参照アドレスレジスタへの書き込みから除外されるように、範囲を限定されてもよい。
一実施形態において、参照アドレスレジスタの少なくともサブセットは、参照アドレスパイプラインを形成するように結合されてもよく、参照アドレス更新動作は、関連付けられたメモリアドレスに応じて、パイプライン内のアドレスを更新することを含んでもよい。パイプラインは、より最近の関連付けられたアドレスの前に、より以前の関連付けられたアドレスが書き込まれるように、参照アドレスを更新するための便利なスキームを提供できる。パイプラインにおいて、参照アドレス更新動作は、パイプラインの参照アドレスレジスタの間で参照アドレスを選択的にシフトすることを含んでもよい。
一実施形態において、参照アドレスパイプラインは、N個の参照アドレスレジスタを含み、
前記参照アドレス更新動作は、前記参照アドレスパイプラインの1番目から(N−1)番目の参照アドレスレジスタ内の参照アドレスを、前記参照アドレスパイプラインの次の参照アドレスレジスタへシフトすること、および、前記関連付けられたメモリアドレスを、前記参照アドレスパイプラインの第1の参照アドレスレジスタへ書き込むことを含む。
この例では、パイプラインの第1の参照アドレスレジスタは、最も最近の関連付けられたメモリアドレスを含み、第2のアドレスレジスタは、第2の最も最近の関連付けられたメモリアドレス等を含む。パイプライン内のN番目のアドレスレジスタのコンテンツは、新しい関連付けられたメモリアドレスがパイプラインに追加されると失われる。(例えばプログラムループにおいて)命令ストリーム内で何度も同じ分岐送信先アドレスが生じる可能性があるため、この技術は命令アドレスにおいて得に有用であり、そのため、パイプラインがN個の最も最近の関連付けられたメモリアドレスに対応する参照アドレスを含むように構成することにより、関連付けられたメモリアドレスが、参照アドレスのうちの1つと完全に一致する可能性が高まる。
あるいは、参照アドレスパイプラインは、N個の参照アドレスレジスタを含んでもよく、選択された参照アドレスレジスタがパイプラインのM番目の参照アドレスレジスタである場合(1≦M≦Nである場合)、参照アドレス更新動作は、
M>1の場合に、前記参照アドレスパイプラインの1番目から(M−1)番目の参照アドレスレジスタ内の参照アドレスを、前記参照アドレスパイプラインの次の参照アドレスレジスタへシフトすることと、
前記参照アドレスパイプラインの第1の参照アドレスレジスタへ、前記関連付けられたメモリアドレスを書き込むことを含んでもよい。
この場合、パイプラインの参照アドレスレジスタのどれが更新されるかは、どの参照アドレスレジスタが、トレースデータ要素を生成するための選択された参照アドレスレジスタとして使用されたかによる。M>1の場合に、選択された参照アドレスレジスタに先行する参照アドレスレジスタ内の参照アドレスは、次のレジスタアドレスレジスタにシフトされ(このため選択された参照アドレスレジスタは、先行する参照アドレスレジスタの参照アドレス内で更新される)、次いで、関連付けられたメモリアドレスは、パイプラインの第1の参照アドレスレジスタに書き込まれる。この技術において、トレースデータ要素の生成に使用された参照アドレスが、パイプラインから除かれ、次いで、関連付けられたメモリアドレスと置換されるため、パイプライン内に複数の重複または類似のアドレスが存在する可能性が低下し、そのため、パイプライン内の参照アドレスがメモリスペース全体においてより均一に分散される。それにもかかわらず、関連付けられたメモリアドレスを第1の参照アドレスレジスタに追加することにより、より最近の関連付けられたメモリアドレスが、再び、パイプラインの最初となり、そのため、より以前の関連付けられたメモリアドレスよりも長期間、パイプラインに存在する。この技術は、特にデータアドレスについて有用であり得、この場合、参照アドレスの完全な一致の可能性は命令アドレスよりも低く、そのため、利用可能な参照アドレスの幅広い拡散を提供するために有用であり得る。
選択された参照アドレスレジスタがパイプラインの第1の参照アドレスレジスタ(つまりM=1)である場合、パイプライン動作は、さらに、
前記関連付けられたメモリアドレスと前記第1の参照アドレスレジスタの参照アドレスとの差が、所定の閾値を上回るかどうかを決定することと、
前記差が、前記所定の閾値を上回る場合、前記参照アドレスパイプラインの前記第1の参照アドレスレジスタへ前記関連付けられたメモリアドレスを書き込む前に、前記参照アドレスパイプラインの次の参照アドレスレジスタへ、前記参照アドレスパイプラインの1番目から(N−1)番目の参照アドレスレジスタ内の参照アドレスをシフトすることを含んでもよい。
この技術は、再び、パイプラインへ同様のアドレス値をあまりに多く書き込むことが望ましくないことを認識している。M=1であり、第1の参照アドレスと関連付けられたメモリアドレスとの差が所定の閾値を上回らない場合、パイプライン内の参照アドレスを全て上方にシフトし(shifting up)、第1の参照アドレスレジスタへ関連付けられたメモリアドレスを書き込むことにより、パイプラインの最初の2つのレジスタに、2つの類似したアドレス値が生じる。従って、代わりに、トレース回路は、単に、関連付けられたメモリアドレスで、第1の参照アドレスレジスタのアドレスを置換する。一方で、M=1であり、第1の参照アドレスと関連付けられたメモリアドレスとの差が所定の閾値を上回る場合、パイプライン内に両方のアドレスを提供することが有用であり、そのため、トレース回路は、パイプラインの一段上に参照アドレスをシフトし、次いで、関連付けられたメモリアドレスを第1の参照アドレスレジスタに書き込む。この技術により、アドレスレジスタ内の非常に類似のアドレス値を生じさせる、多すぎるパイプラインのシフトを生じさせずに、アドレスレジスタを投入する(populated)ことが可能になる。再び、所定の閾値が上記のように最小アドレス部分のサイズに対応してもよく、参照アドレスの対応する部分に対して異なる関連付けられたメモリアドレスの部分の、数値の差の閾値または閾値ビット数として示されてもよい。
上述のように、トレース回路は、アドレスレジスタのどれが最も効率的な候補の第2の情報の値に対応するかに応じて、選択された参照アドレスレジスタを選択し得る。パイプラインの実施形態において、対応する候補の第2の情報の値が同等に効率的である複数の参照アドレスレジスタが存在する場合、トレース回路は、選択された参照アドレスレジスタとして、参照アドレスパイプラインの最後に最も近い複数の参照アドレスレジスタのうちの1つを選択し得る。同等に効率的な参照アドレスのうちの最も古いもの(つまり、参照アドレスは、将来的なアドレストレースについて有用である可能性が最も低い)がパイプラインから除去され、トレースデータを生成するために使用された後で、関連付けられたアドレスによって置換されることを確実にするため、これは有用である。
あるいは、対応する候補の第2の情報の値が同等に効率的である複数の参照アドレスレジスタが存在する場合、トレース回路は、選択された参照アドレスレジスタとして、複数の参照アドレスレジスタのうちのいずれか1つを選択し得る。
一実施形態において、トレース回路は、複数の参照アドレスレジスタのそれぞれにデフォルトの参照アドレスを格納するために、初期化事象に応答し得る。例えば、デフォルトの参照アドレスは、そのビットが全てゼロ値を有するアドレスにしてもよい。デフォルトの参照アドレスは、アドレスレジスタのそれぞれと同じである必要はない。
一実施形態において、トレース回路がトレースストリームの生成を開始する場合に、参照アドレスレジスタが、全て、公知のデフォルトの参照アドレス値を格納するように、初期化事象は、トレース回路が起動することである。このため、トレースストリームを分析する診断ユニットは、参照アドレスレジスタのコンテンツがトレースストリームの最初にあることを知ることができる。
さらに、初期化事象は、トレース同期化データ要素を生成および出力するために、トレース回路をトリガするためのトレース同期化事象であってもよい。典型的には、トレースストリームのトレースデータ要素の分析が、ストリームの以前のトレースデータ要素の分析に基づく(例えば、診断ユニットが、以前のトレースデータ要素から推測された処理結果に基づいて、参照アドレスレジスタのコンテンツを決定してもよい)ため、これは有用である。トレース同期化データ要素を生成および出力するために、トレース回路をトリガするためのトレース同期化事象を提供し、トレース同期化事象の発生時における参照アドレスレジスタの再初期化を行うことで、診断ユニットに、以前のトレースデータの知識を必要とせずに、診断ユニットがトレースストリームの分析を開始できるトレースストリーム内の参照ポイントが提供される。これは、診断ユニットは、トレースストリームの開始時において開始しなければならないのではなく、トレース同期化データ要素によって示された参照ポイントからトレースデータの分析を開始できることを意味する。
本技術において、処理回路は、複数の異なる種類のデータ処理命令に応答してデータ処理動作を実行するように構成されてもよく、これらの複数の種類のそれぞれについて、トレース回路が異なる種類のデータ処理命令を示すトレースデータ要素を示すための同じ参照アドレスレジスタを使用するように、トレース回路は、参照アドレスレジスタのいずれかを選択するように構成されてもよい。このため、選択された参照アドレスレジスタの選択は、データ処理命令の種類に依存しない。各アドレスレジスタは、いずれかの種類の命令に関連付けられたアドレスを保持してもよい。いずれの命令について、トレース回路は、選択されたレジスタとして選択参照アドレスレジスタのいずれかを選択する自由を有し、そのため、関連付けられたメモリアドレスと参照アドレスのうちの1つとに小さな差が存在する可能性が大きくなる。従って、いずれかの特定の種類の命令について単一のアドレスレジスタのみを提供する先行技術と比較して、トレースストリームが大幅に圧縮される可能性がある。複数の種類のデータ処理命令は、例えば、分岐命令、例外事象が発生した場合に実行される命令、例外事象が発生後に実行が方向付けられる命令、処理回路によって現在実行される命令、ロード命令および格納命令のうちの少なくとも2つを含んでもよい。
別の態様から見ると、本発明は、
データを格納するためのメモリ手段であって、対応するメモリアドレスによって識別された複数のメモリロケーションを含む、メモリ手段と、
命令に応答して、処理動作を実行するための処理手段と、
前記処理手段によって実行された前記処理動作を示すトレースデータ要素のストリームを生成し、前記トレースデータ要素のストリームを出力するためのトレース手段と、を備え、
前記トレース手段は、複数の参照アドレスを格納するための複数の参照アドレスレジスタ手段を含み、
前記トレース手段は、選択された参照アドレスレジスタ手段として前記複数の参照アドレスレジスタ手段のうちの1つを選択し、
(i)前記複数の参照アドレスレジスタ手段のうちのどれが前記選択された参照アドレスレジスタ手段であるかを示す第1の情報と、
(ii)関連付けられたメモリアドレスと前記選択された参照アドレスレジスタ手段に格納された選択された参照アドレスとの差を示す第2の情報と、を示すトレースデータ要素を生成および出力するために、関連付けられたメモリアドレスに関連付けられた処理動作を実行するための命令を処理する前記処理手段に応答する、データ処理装置を提供する。
さらなる態様から見ると、本発明は、対応するメモリアドレスによって識別された複数のメモリロケーションを含むメモリを含むデータ処理装置のためのデータ処理方法であって、前記方法は、
命令に応答して、処理動作を実行するステップと、
複数の参照アドレスレジスタに複数の参照アドレスを格納するステップと、
前記処理回路によって実行された前記処理動作を示すトレースデータ要素のストリームを生成するステップと、
前記トレースデータ要素のストリームを出力するステップと、を含み、
トレースデータ要素のストリームを生成する前記ステップは、関連付けられたメモリアドレスに関連付けられた処理動作のパフォーマンスに応答して、選択された参照アドレスレジスタとして前記複数の参照アドレスレジスタのうちの1つを選択し、
(i)前記複数の参照アドレスレジスタのうちのどれが前記選択された参照アドレスレジスタであるかを示す第1の情報と、
(ii)前記関連付けられたメモリアドレスと前記選択された参照アドレスレジスタに格納された選択された参照アドレスとの差を示す第2の情報と、を示すトレースデータ要素を生成および出力することを含む、データ処理方法を提供する。
さらに別の態様から見ると、本発明は、命令に応答して、処理装置によって実行された処理動作を監視するためのトレースユニットであって、前記処理装置は、対応するメモリアドレスによって識別された複数のメモリロケーションを含むメモリを含み、前記トレースユニットは、
前記処理装置によって実行された前記処理動作を示すトレースデータ要素のストリームを生成し、前記トレースデータ要素のストリームを出力するように構成されたトレース回路を含み、
前記トレース回路は、複数の参照アドレスを格納するように構成された複数の参照アドレスレジスタを含み、
前記トレース回路は、選択された参照アドレスレジスタとして前記複数の参照アドレスレジスタのうちの1つを選択し、
(i)前記複数の参照アドレスレジスタのうちのどれが前記選択された参照アドレスレジスタであるかを示す第1の情報と、
(ii)前記関連付けられたメモリアドレスと前記選択された参照アドレスレジスタに格納された選択された参照アドレスとの差を示す第2の情報と、
を示すトレースデータ要素を生成および出力するために、関連付けられたメモリアドレスに関連付けられた処理動作を実行するための命令を処理する前記処理回路処理に応答する、トレースユニットを提供する。
さらなる態様から見ると、本発明は、命令に応答して、処理装置によって実行された処理動作を監視するためのトレースユニットであって、前記処理装置は、データを格納するためのメモリ手段を含み、前記メモリ手段は、対応するメモリアドレスによって識別された複数のメモリロケーションを含み、前記トレースユニットは、
前記処理装置によって実行された前記処理動作を示すトレースデータ要素のストリームを生成し、前記トレースデータ要素のストリームを出力するためのトレース手段を含み、
前記トレース手段は、複数の参照アドレスを格納するための複数の参照アドレスレジスタ手段を含み、
前記トレース手段は、選択された参照アドレスレジスタとして前記複数の参照アドレスレジスタのうちの1つを選択し、
(i)前記複数の参照アドレスレジスタ手段のうちのどれが前記選択された参照アドレスレジスタ手段であるかを示す第1の情報と、
(ii)前記関連付けられたメモリアドレスと前記選択された参照アドレスレジスタ手段に格納された選択された参照アドレスとの差を示す第2の情報と、を示すトレースデータ要素を生成および出力するために、関連付けられたメモリアドレスに関連付けられた処理動作を実行するための命令を処理する前記処理装置に応答する、トレースユニットを提供する。
別の態様から見ると、本発明は、命令に応答して、処理装置によって実行された処理動作を示すトレースデータ要素のストリームを分析するための診断装置であって、前記処理装置は、対応するメモリアドレスによって識別された複数のメモリロケーションを含むメモリを含み、前記診断装置は、
前記トレースデータ要素のストリームを受信するためのトレース入力と、
前記処理動作の処理結果を決定するために、前記トレースデータ要素のストリームを分析するように構成された診断回路と、を備え、
前記診断回路は、複数の参照アドレスを格納するように構成された複数の参照アドレスレジスタを含み、
前記診断回路は、
(a)(i)前記複数の参照アドレスレジスタのうちのいずれが選択された参照アドレスレジスタであるかを示す第1の情報と、(ii)前記関連付けられたメモリアドレスと前記選択された参照アドレスレジスタに格納された選択された参照アドレスとの差を示す第2の情報と、を示すトレースデータ要素を、前記トレースデータ要素のストリームに配置するために、および、
(b)前記第2の情報と前記選択された参照アドレスレジスタに格納された前記選択された参照アドレスとに応じて、前記関連付けられたメモリアドレスを決定するために、関連付けられたメモリアドレスに関連付けられた処理動作を実行するための命令を処理する前記処理装置の指示に応答する、診断装置を提供する。
生成されたトレースデータ要素を分析するための診断装置は、処理装置のトレースユニット内のものに対応する参照アドレスレジスタを含んでもよい。トレースデータ要素の分析時において、診断回路は、処理装置によって命令が実行される指示へのアクセスを有する。処理装置が関連付けられたメモリアドレスに関連付けられた処理動作を実行するための命令を処理する指示に、診断回路が遭遇する場合、診断回路は、トレースデータ要素のストリームにおいて、対応するトレースデータ要素を配置できる。対応するトレースデータ要素は、トレースデータ要素を生成する場合にトレースユニットによって選択された選択参照アドレスレジスタを示す第1の情報、関連付けられたメモリアドレスと選択された参照アドレスレジスタに格納された選択された参照アドレスとの差を示す第2の情報を示す。次いで、診断回路は、第1の情報によって示された参照アドレスレジスタにアクセスし、第2の情報および参照アドレスレジスタに格納された選択参照アドレスに応じて、関連付けられたメモリアドレスを決定できる。このため、診断回路は、関連付けられたメモリアドレスを識別するために、トレースストリームを解凍できる。
再び、トレースデータ要素の種々の符号化を使用してもよいが、一実施形態において、トレースデータ要素は、第1の情報を示すヘッダ部分および第2の情報を示すアドレス部分を含んでもよい。トレースデータ要素がアドレス部分を含まないことがわかっている場合に、診断回路は、関連付けられたメモリアドレスが選択された参照アドレスと同じであると決定してもよい。このため、アドレス部分の欠如は、関連付けられたメモリアドレスおよび選択された参照アドレスの間の完全な一致が存在することを示唆する。
選択アドレスの対応する部分に対して異なるビット値を有する関連付けられたメモリアドレスの一部として、第2の情報が示される場合、診断回路は、(i)前記選択された参照アドレスのビット値で開始し、(ii)前記第2の情報によって示された前記関連付けられたメモリアドレスの前記部分のビット値で、前記選択された参照アドレスの前記対応する部分のビット値を置換することによって、得られる値と等しいアドレス値を有するものとして、前記関連付けられたメモリアドレスを決定してもよい。診断回路は、実際にはステップ(i)および(ii)を実行する必要はないが、ステップ(i)および(ii)の実行によって得られた値に等しい値を有するアドレス値を生じさせる論理または演算動作のいずれかの組み合わせを実行してもよいことが理解されよう。
あるいは、第2の情報が、関連付けられたメモリアドレスと選択された参照アドレスとの間の数値の差を示す場合、診断回路は、選択された参照アドレスへその数値の差を加算することにより、関連付けられたメモリアドレスを決定してもよい。
診断回路は、関連付けられたメモリアドレスを決定した後に、トレースユニットに対応した方法で、参照アドレス更新動作を実行することにより、複数の参照アドレスレジスタのうちの1つの参照アドレスを選択的に更新してもよい。
参照アドレス更新動作は、前記関連付けられたメモリアドレスを、前記複数の参照アドレスレジスタの犠牲参照アドレスレジスタへ書き込むことを含んでもよい。
参照アドレス更新動作は、
(a)少なくとも1つの参照アドレスレジスタについて、前記対応する参照アドレスと前記関連付けられたメモリアドレスとの間のアドレスの差が、所定の閾値を上回るかどうかを決定することと、
(b)前記アドレスの差が、前記少なくとも1つの参照アドレスレジスタのそれぞれについて前記所定の閾値を上回る場合に、前記少なくとも1つの参照アドレスレジスタから選択された犠牲参照アドレスレジスタへ、前記関連付けられたメモリアドレスを書き込むことを含んでもよい。
トレースデータ要素は、前記第2の情報を示すアドレス部分を含んでもよく、所定の閾値は、前記アドレス部分の最小サイズに対応してもよい。
診断回路は、前記複数の参照アドレスレジスタのうちのどれが前記犠牲参照アドレスレジスタであるかを選択するために、犠牲選択動作を実行するように構成されてもよい。
診断回路は、参照アドレス更新動作による更新から、少なくとも1つの参照アドレスレジスタを選択的に除外するように、ロックダウンシグナルに応答してもよい。
複数の参照アドレスレジスタのうちの少なくとも1つは、事前定義された参照アドレスを格納するための固定の参照アドレスレジスタにしてもよく、診断回路は、前記参照アドレス更新動作による更新から固定の参照アドレスレジスタを除外してもよい。
前記複数の参照アドレスレジスタのうちの少なくとも1つは、関連付けられた範囲の前記メモリアドレスに関連付けられた範囲を限定された参照アドレスレジスタにしてもよく、診断回路は、関連付けられたメモリアドレスが前記メモリアドレスの関連付けられた範囲外である場合に、範囲を限定した参照アドレスレジスタを、参照アドレス更新動作による更新から除外してもよい。
複数の参照アドレスレジスタの少なくともサブセットは、参照アドレスパイプラインを形成するために結合されてもよく、参照アドレス更新動作は、関連付けられたメモリアドレスに応じて、参照アドレスパイプラインで参照アドレスを更新することを含んでもよい。
参照アドレスパイプラインは、N個の参照アドレスレジスタを含んでもよく、
前記参照アドレス更新動作は、前記参照アドレスパイプラインの1番目から(N−1)番目の参照アドレスレジスタ内の参照アドレスを、前記参照アドレスパイプラインの次の参照アドレスレジスタへシフトすることと、前記関連付けられたメモリアドレスを、前記参照アドレスパイプラインの第1の参照アドレスレジスタへ格納することを含んでもよい。
参照アドレスパイプラインは、N個の参照アドレスレジスタを含んでもよく、選択された参照アドレスレジスタは、1≦M≦Nである場合に、前記参照アドレスパイプラインのM番目の参照アドレスレジスタを含んでもよく、参照アドレス更新動作は、
M>1の場合に、前記参照アドレスパイプラインの1番目から(M−1)番目の参照アドレスレジスタ内の参照アドレスを、前記参照アドレスパイプラインの次の参照アドレスレジスタへシフトすることと、
前記参照アドレスパイプラインの第1の参照アドレスレジスタへ、前記関連付けられたメモリアドレスを格納することを含んでもよい。
M=1である場合に、参照アドレス更新動作は、さらに、
前記関連付けられたメモリアドレスと前記第1の参照アドレスレジスタの参照アドレスとの差が、所定の閾値を上回るかどうかを決定することと、
前記差が、前記所定の閾値を上回る場合、前記参照アドレスパイプラインの前記第1の参照アドレスレジスタへ前記関連付けられたメモリアドレスを書き込む前に、前記参照アドレスパイプラインの1番目から(N−1)番目の参照アドレスレジスタ内の参照アドレスを、前記参照アドレスパイプラインの次の参照アドレスレジスタへシフトすることを含んでもよい。
再び、所定の閾値は、アドレス部分の最小サイズに対応してもよい。所定の閾値は、第1の参照アドレスレジスタの参照アドレスの対応する部分に対して異なる関連付けられたメモリアドレスの部分についての閾値ビット数であってもよい、または、閾値の数値の差であってもよい。
診断回路は、トレースユニットに対応するように、参照アドレスレジスタのそれぞれへデフォルトの参照アドレスを格納することにより、初期化事象に応答してもよい。初期化事象は、デフォルトの参照アドレスがトレースストリームの分析の開始時に使用されるように、トレースストリームの分析を開始するように作動される診断回路にしてもよい。さらに、初期化事象は、トレースデータ要素のストリーム内のトレース同期化データ要素に応答する診断回路にしてもよい。参照アドレスレジスタはトレース同期化データ要素において再初期化されるため、トレース同期化データ要素は、以前のトレースデータ要素から導き出された情報を必要とせずに、トレースデータ分析を開始できる参照ポイントを提供する。
別の態様から見ると、本発明は、命令に応答して、処理装置によって実行された処理動作を示すトレースデータ要素のストリームを分析するための診断装置であって、前記処理装置は、データを格納するためのメモリ手段を含み、前記メモリ手段は、対応するメモリアドレスによって識別された複数のメモリロケーションを含み、前記診断装置は、
前記トレースデータ要素のストリームを受信するためのトレース入力手段と、
前記処理動作の処理結果を決定するために、前記トレースデータ要素のストリームを分析するための診断手段と、を備え、
前記診断手段は、複数の参照アドレスを格納するための複数の参照アドレスレジスタ手段を含み、
前記診断手段は、
(a)(i)前記複数の参照アドレスレジスタ手段のうちのどれが選択された参照アドレスレジスタ手段であるかを示す第1の情報と、(ii)前記関連付けられたメモリアドレスと前記選択された参照アドレスレジスタ手段に格納された選択された参照アドレスとの差を示す第2の情報と、を示すトレースデータ要素を、前記トレースデータ要素のストリームに配置するために、および、
(b)前記第2の情報と前記選択された参照アドレスレジスタ手段に格納された前記選択された参照アドレスとに応じて、前記関連付けられたメモリアドレスを決定するために、関連付けられたメモリアドレスに関連付けられた処理動作を実行するための命令を処理する前記処理装置の指示に応答する、診断装置を提供する。
さらなる態様から見ると、本発明は、命令に応答して、処理装置によって実行された処理動作を示すトレースデータ要素のストリームを分析するための方法であって、前記処理装置は、対応するメモリアドレスによって識別された複数のメモリロケーションを含むメモリを含み、前記方法は、
前記トレースデータ要素のストリームを受信するステップと、
複数の参照アドレスレジスタに複数の参照アドレスを格納するステップと、
前記処理動作の処理結果を決定するために、前記トレースデータ要素のストリームを分析するステップと、を含み、
前記分析手段は、関連付けられたメモリアドレスに関連付けられた処理動作を実行するための命令を処理する前記処理装置の指示に応答して、
(a)(i)前記複数の参照アドレスレジスタのうちのどれが選択された参照アドレスレジスタであるかを示す第1の情報と、(ii)前記関連付けられたメモリアドレスと前記選択された参照アドレスレジスタに格納された選択された参照アドレスとの差を示す第2の情報と、を示すトレースデータ要素を、前記トレースデータ要素のストリームに配置することと、
(b)前記第2の情報と前記選択された参照アドレスレジスタに格納された前記選択された参照アドレスとに応じて、前記関連付けられたメモリアドレスを決定することを含む、方法を提供する。
本発明の上記および他の目的、特徴および利点は、添付の図面に関連して読まれるべき、例示的な実施形態の以下の詳細な説明から、明らかであろう。
処理装置、トレース回路および診断装置を概略的に示す図である。 関連付けられたアドレスと選択された参照アドレスとの間の差が、選択された参照アドレスの対応する部分に対して異なるビット値を有する関連付けられたアドレスの部分として示される、トレースデータ要素の生成を示す図である。 関連付けられたアドレスと選択された参照アドレスとの間の差が、関連付けられたアドレスと選択された参照アドレスとの間の数値の差として示される、トレースデータ要素の生成を示す図である。 トレースデータ要素において、関連付けられたメモリアドレスおよび選択された参照アドレスの間の完全な一致が存在することを示す異なる方法を示す図である。 トレースデータ要素を生成する方法を概略的に示す図である。 トレースデータ要素のストリームを分析する対応する方法を概略的に示す図である。 多数の参照アドレスレジスタを含む参照アドレスパイプラインを概略的に示す図である。 参照アドレスパイプライン内に参照アドレスレジスタを更新するための参照アドレス更新動作を概略的に示す図である。 パイプライン内の参照アドレスレジスタを、どのように処理動作のシーケンスによって使用される関連付けられたメモリアドレスに応答して更新できるかの例を示す表である。 参照アドレスパイプラインの別の例を示す図である。 図10に図示される形式のパイプラインにおける参照アドレスの更新のための参照アドレス更新動作を示す図である。 図10および11の例を用いて、どのように参照アドレスを更新し得るかの例を示す表である。 参照アドレスレジスタ内の参照アドレスの更新の別の例を示す図である。 固定の参照アドレスレジスタの使用を示す図である。 範囲が限定された参照アドレスレジスタが、関連付けられたアドレス範囲にそれぞれ関連付けられる例を示す図である。 ロックダウンシグナルに応答して、特定のアドレスレジスタを動的にロックダウンする技術を示す図である。
図1は、処理回路4、メモリシステム6、およびトレース回路8を含む処理装置2を概略的に示す。メモリシステム6は、処理回路4に代わって、データおよび/または命令を格納するための1つ以上のキャッシュユニットまたはメモリユニットを含む。処理回路4は、命令に応答して、処理動作を実行する。トレース回路8は、処理回路4によって実行される処理動作を示すトレースデータ要素のストリームを生成し、トレース出力ポート10を介して、トレースデータ要素のストリームを出力する。
処理回路4、メモリシステム6およびトレース回路8は、必ずしも、同じ集積回路で提供される必要はない。例えば、トレース回路8は、いくつかの実施形態において、処理装置2の他の部分とは別々に提供される独立したトレースユニットとして提供され得る。
トレース回路8によって生成されたトレースデータ要素のストリームは、トレースストリームの分析のための診断装置20によって受信されてもよい。トレースデータ要素は、トレース入力ポート22において受信される。診断装置20は、処理回路4によって実行される処理動作の処理結果を決定するために、トレースデータ要素を分析するための診断回路24を有する。診断回路24は、トレースデータが生成された時点において、処理回路4によってどの命令が実行されたかの指示へのアクセスを有する。この指示は、例えば、処理回路によってプログラム実行が開始されたメモリシステム6内のメモリアドレスの指示として、提供されてもよい。あるいは、トレース回路8は、トレースストリームにおいて、どの命令が実行されたかの指示を含むことができる。さらに、診断装置20は、それ自体、処理回路4によって実行されたプログラムコピーを格納するためのメモリ(図1に図示せず)を含んでもよい。診断回路24は、どの命令が実行されたか、および処理回路4によって実行された処理動作の結果を推察するために、トレースデータ要素によって提供された追加の情報の指示を使用する。トレースデータ要素は、処理装置2から診断装置20へ直接出力される必要はないが、トレース回路8によってメモリデバイスに格納され、次いで、診断回路24によって、メモリデバイスからアクセスされてもよい。診断装置20は、例えば、トレースストリームを分析するようにプログラムされた汎用コンピュータにしてもよい。
トレース回路8は、2つ以上の参照アドレスを格納するための2つ以上の参照アドレスレジスタ30−1を含む。トレース回路8が、関連付けられたメモリアドレスに関連付けられた処理動作を実行する処理回路4に応じて、トレースデータ要素を生成する場合、トレース回路8は、参照アドレスレジスタ30−1のうちの1つを選択し、関連付けられたメモリアドレスと選択された参照アドレスレジスタの参照アドレスとの間の差を決定し、参照アドレスレジスタ30−1のうちのどれが選択された参照アドレスレジスタであったかを示す第1の情報と、関連付けられたメモリアドレスと選択された参照アドレスレジスタの参照アドレスとの間差を、ある場合は示す、第2の情報とを示すトレースデータ要素を生成する。
診断装置20は、参照アドレスレジスタ30−2の対応するセットを有する。トレースストリームを分析する場合、診断回路24は、トレースストリームが生成された時点でのトレース回路8の参照アドレスレジスタ30−1内にあった参照アドレスに対応する参照アドレスを含むために、参照アドレスレジスタ30−2を維持する。診断回路が、処理回路4が関連付けられたメモリアドレスに関連付けられた処理動作を実行したという指示に遭遇する場合、診断回路24は、トレースストリームにおいて、その動作に対応するトレースデータ要素を配置する。診断回路24は、参照アドレスレジスタ30−2の間から選択された参照アドレスレジスタを決定するために、トレースデータ要素によって示された第1の情報を使用する。次いで、診断回路24は、関連付けられたメモリアドレスと選択された参照アドレスレジスタの参照アドレスとの間の差がある場合にはそれを示す第2の情報に応じて、関連付けられたメモリアドレスの値を決定する。
トレース回路8内に2つ以上の参照アドレスレジスタ30−1と、診断回路24内に対応する参照アドレスレジスタ30−2を提供することにより、関連付けられたメモリアドレスが参照アドレスレジスタ30−1のうちの1つの参照アドレスと一致する、または参照アドレスのうちの1つと類似である可能性が高まるため、トレースデータを大幅に圧縮できる可能性が高まる。以下に、レジスタの両方のセットに共通する特徴を表すために、参照番号30が、トレース回路8および診断回路24の両方の参照アドレスレジスタを参照するために使用される。
概して、トレース回路8は、トレースデータ要素を生成するために用いられる場合に、選択された参照アドレスレジスタとして、トレースデータ要素の最も効率的な符号化を生じさせるレジスタ30−1を選択する。これを行う1つの方法は、各参照アドレスレジスタ30−1に対応する候補の値を決定することであり、各候補の値は、関連付けられたメモリアドレスとその参照アドレスレジスタ30−1の対応する参照アドレスとの間の差を示す。次いで、トレース回路8は、選択された参照アドレスレジスタとして、最も効率的な候補の値に対応する参照アドレスレジスタ30−1を選択できる。最も効率的な候補の値は、例えば、最小のビット数を用いて表すことができる値、またはトレースデータ要素に含まれる場合に、トレースストリーム内のトレースデータの最小の合計数を生じさせる値にしてもよい。トレースデータの最も効率的な符号化を生じさせる参照アドレスレジスタ30−1を選択することにより、トレースデータの量を低減できる。トレース回路8は、トレースストリームを分析する場合に、診断装置20がそのレジスタ30−2からの対応する選択を行うことができるように、レジスタ30−1が選択された診断装置20へのシグナルへのトレースデータ要素において第1の情報を含む。
関連付けられたメモリアドレスと選択された参照アドレスとの差は、異なる方法で示し得る。図2は、参照アドレスの対応する部分に対する異なるビット値を有する関連付けられたメモリアドレスの部分として、差が示される例を示す。例えば、トレースデータ要素は、参照アドレスの対応する最下位のビットに対して異なる関連付けられたメモリアドレスの最下位のビットを示してもよく、一方で、参照アドレスの対応するビットと同じ関連付けられたメモリのより上位のビットを省略し得る。例えば、図2において、関連付けられたメモリアドレス0x00004012は、参照アドレスレジスタ0内の参照アドレス0x00000000とは、0x4012の部分が異なる。
トレース回路8は、関連付けられたメモリアドレスを各参照アドレスレジスタ30−1の参照アドレスと比較し、各参照アドレスレジスタについて候補の差の値を決定する。図2の例において、各候補の差の値は、対応する参照アドレスの対応する部分に対して異なる関連付けられたアドレスの部分を表す。次いで、例えば、最も少ないビットを有する候補の値または最も少ない量のトレースデータを生じさせる候補の値として、最も効率的な候補の値が決定される。次いで、選択された参照アドレスレジスタとして、対応する参照アドレスレジスタが選択される(図2の例において、その対応する候補の値は、最も効率的なトレース符号化を提供するため、参照アドレスレジスタ1が選択される)。参照アドレスレジスタ30−1のどれが選択された参照アドレスレジスタであるかを示す第1の情報、および、最も効率的な候補の値に対応する第2の情報を含む、トレースデータ要素が生成される。
この例において、トレースデータ要素は、選択された参照アドレスレジスタを示すヘッダ部分40と、差の値を示すアドレス部分42とを含む。トレースデータ要素を分析する場合、診断装置20は、ヘッダ部分40によって識別される参照アドレスレジスタ30−2の参照アドレスを用いて関連付けられたメモリアドレス、およびアドレス部分42によって識別されるアドレスの差を決定できる。あるいは、選択されたアドレスレジスタおよび差の値がトレースデータ要素の共通部分において符号化される、トレース符号化を考案できた。
図3は、アドレス差が、関連付けられたメモリアドレスおよび参照アドレスの間の数値の差として示される別の実施形態を示す。この例において、トレース回路8は、参照アドレスレジスタ30のそれぞれについて、候補の差の値を決定し、各候補の値は、関連付けられたメモリアドレスおよび参照アドレスのうちの一方を、他方から減算することによって得られる。次いで、最も効率的な候補の値を、最も少ないビットを用いて表すことができる、またはトレースデータの最も少ない量を生じさせる値として選択できる。次いで、対応する参照アドレスレジスタが、トレースデータ要素の生成において使用するために選択された参照アドレスレジスタとして選択される。再び、トレースデータ要素は、ヘッダ部分40およびアドレス部分42を含んでもよい、または、選択された参照アドレスレジスタを識別できる符号化、および共通の値を用いて示される差の値を有してもよい。
図3に示されるトレースデータ要素を分析する場合、診断回路24は、トレースデータ要素のヘッダ部分によって識別される選択された参照アドレスレジスタ30−2に格納されたアドレスへ、トレースデータ要素に示される差の値を追加することにより、関連付けられたメモリアドレスを決定できる。
時により、関連付けられたメモリアドレスは、参照アドレスのうちの1つと完全に一致し得る。この場合、トレースデータは、図4に示される例等、多くの方法で符号化され得る。例Aにおいて、トレースデータ要素は、トレースデータ要素のアドレス部分をゼロの値に設定することにより、関連付けられたメモリアドレスおよび選択された参照アドレスレジスタの参照アドレスの間の完全な一致があることを示す。あるいは、例Bにおいて、アドレス部分は、完全な一致が存在することを示す識別コードに設定される。
図4の例Cに示されるように、完全な一致は、アドレス部分の欠如によって表すこともできる。この場合、ヘッダ部分のみを含むトレースデータ要素は、関連付けられたメモリアドレスが、ヘッダ部分において識別される参照アドレスレジスタの参照アドレスと同じであることを示すことができる。このため、例Cにおいて、第2の情報は、いずれかの特定のデータ値ではなく、アドレス部分の欠如によって伝達される。
図4の例Dに示されるように、選択された参照アドレスレジスタを識別するアドレスヘッダは、そのアドレスレジスタに格納されたアドレスとの完全な一致が存在することを示すように、修正することもできる。
このため、図4は、関連付けられたメモリアドレスと選択された参照アドレスとの間のゼロの差を多くの方法で示すことが可能であることを示す。各トレースデータ要素にとって、第1の情報および第2の情報を示すための別々の値を含むことは必要ではない。例えば、例CおよびDにおいて、単一のデータ値は、選択された参照アドレスレジスタを識別する第1の情報、およびゼロの差が存在することを識別する第2の情報の両方を提供する。
典型的には、トレース回路8は、処理回路4によって使用されているアドレスに応じて、参照アドレスレジスタ30−1に格納される参照アドレスを更新するように構成される。所与のプログラム命令シーケンスは、同じまたは類似のアドレスを何度も使用する可能性がある。例えば、命令のシーケンスは、同じ分岐送信先アドレスを繰り返し使用するように何度もループされてもよい、または、命令のシーケンスは、一連の隣接するメモリアドレスに関連付けられたロード/格納動作を生じさせてもよい。関連付けられたメモリアドレスに応じて参照アドレスレジスタ30−1を選択的に更新することにより、その関連付けられたメモリアドレスは、以下の処理動作のための参照アドレスとして使用でき、そのため、以下の動作に関連付けられたアドレスが、参照アドレスのうちの1つと類似である可能性が高くなる。対応するように、診断回路24は、トレースストリームから決定された関連付けられたメモリアドレスに基づいて、その参照アドレスレジスタ30−2の参照アドレスを更新できる。
トレース回路8および診断回路24は、各関連付けられたメモリアドレス30によって参照アドレスレジスタを更新する必要がない。トレースストリームを使用可能なメモリスペースの特定のメモリ範囲に圧縮するための能力に集中するため、多数の同様のアドレスを、参照アドレスレジスタに追加することは望ましくない場合がある。その代わりに、メモリアドレススペース全体に分散された多くの参照アドレスによって、関連付けられたメモリアドレスと参照アドレスのうちの1つとの間の比較的小さい差が存在する可能性が高められ得る。従って、トレースデータ要素を生成後、トレース回路8は、一実施形態において、関連付けられたメモリアドレスを、アドレスレジスタ30−1の既存の参照アドレスと比較するように構成されてもよく、次いで、関連付けられたメモリアドレスと既存の参照アドレスのうちの1つとの間の差が所定の閾値よりも大きくなる場合にのみ、参照アドレスレジスタ30−1のうちの1つを、関連付けられたメモリアドレスで更新してもよい。診断回路24は、さらに、同様の比較を実行してもよく、また、トレース回路8に対応するように、参照アドレスレジスタ30−2を更新してもよい。
参照アドレスレジスタ30のうちの1つを更新する価値があるかどうかを決定するための閾値を、多くの方法、例えば、参照アドレスの対応する部分に対して異なるビット値を有する関連付けられたメモリアドレスレジスタの部分についての閾値ビット数、または数値差の閾値として、決定してもよい。トレースデータ要素が、関連付けられたメモリアドレスと選択された参照アドレスとの差を示すためのアドレス部分42を含む場合、閾値は、アドレス部分42の最小サイズに対応してもよい。例えば、アドレス部分が、4ビットの最小サイズを有する場合、参照アドレスを、4ビット以下によって表すことができるアドレス差だけ、既存の参照アドレスのうちの1つとは異なる関連付けられたメモリアドレス(つまりアドレス差が、15以下の数値を有する場合)によって更新することを避けることが望ましい場合がある。
トレース回路8および診断回路24は、デフォルトの参照アドレス値を格納する参照アドレスレジスタ30で初期化してもよい。例えば、デフォルトの値は、ゼロのアドレス値にすることができる。さらに、周期的に、トレース回路8は、デフォルトの値に参照アドレスレジスタ30−1をリセットし、トレース同期化パケットを生成してもよい。次いで、診断装置20は、その参照アドレスレジスタ30−2をデフォルトの値にリセットすることにより、トレース同期化パケットに応答してもよい。同期化事象は、例えば、診断装置20が、トレースストリームの開始時において分析を開始する必要があるのではなく、トレース同期化パケットによって示される中間点において、トレースストリームの分析を開始することを可能にする、周期的事象にしてもよい。
図5は、トレースデータ要素のストリームの生成方法を示す。ステップ50において、処理装置2は、命令に応答して、処理動作の実行を開始する。トレース回路8は、どの命令が処理回路4によって実行中であるかを監視する。ステップ52において、トレース回路8は、処理回路4が、トレースされる関連付けられたメモリアドレスに関連付けられた処理動作を実行するための命令を実行しているかどうかを決定する(トレースユニットは、関連付けられたメモリアドレスのサブセットのみをトレースしてもよい)。
現在の命令が、トレースされる関連付けられたメモリアドレスに関連付けられる場合、ステップ54において、トレース回路8は、各参照アドレスレジスタ30−1についての候補の第2の情報を決定する。候補の第2の情報は、例えば、図2および図3の例で示される形式の異なる差の値にしてもよい。ステップ56において、トレース回路8は、候補の第2の情報の値の最も効率的なものを決定する。例えば、最も効率的な候補の第2の情報は、最小ビットを使用して表すことができる情報にしてもよい、または最小のトレースデータを生じさせる。次いで、ステップ58において、トレース回路8は、選択された参照アドレスレジスタとして、最も効率的な候補の第2の情報に対応する参照アドレスレジスタ30−1を選択する。ステップ60において、トレース回路8は、第1の情報および第2の情報を示すトレースデータ要素を生成する。第1の情報は、どのアドレスレジスタ30−1が選択された参照アドレスレジスタであるかを識別する。第2の情報は、最も効率的な候補の第2の情報に対応し、関連付けられたメモリアドレスと選択された参照アドレスレジスタに格納された参照アドレスとの間の差がある場合には示す。次いで、トレースデータ要素が、トレースストリームの一部として出力される。ステップ62において、トレース回路8は、次いで、関連付けられたメモリアドレスに応じて、少なくとも1つの参照アドレスレジスタ30−1を選択的に更新するための参照アドレス更新動作を実行する。参照アドレス更新動作は、以下に記載されるように、多くの形式にすることができる。
ステップ52において、現在の命令が関連付けられたメモリアドレスに関連付けられた命令でないことが決定される場合、ステップ54〜62が省略される。トレース回路8は、トレースされるメモリアドレスに関連付けられていない命令の他の種類のトレース動作を実行してもよい。
ステップ64において、トレース回路8は、処理回路4が別の命令を処理するかどうかを決定する。別の命令が存在する場合、方法はステップ52に戻り、さらなる命令が存在しない場合、方法は、ステップ66において終了する。
このため、図5の方法を実行することにより、トレース回路8は、処理回路4の動作を示すトレースデータ要素のストリームを出力できる。関連付けられたメモリアドレスがトレースされる場合、トレースデータ要素は、選択された参照アドレスレジスタのうちの1つ、および関連付けられたメモリアドレスと選択された参照アドレスレジスタのアドレスとの差を識別する。最も効率的な差の情報を提供できる参照アドレスレジスタを選択することにより、トレースデータの量を低減できる。
図6は、トレース回路8によって生成されたトレースデータ要素を分析するための対応する方法を示す。ステップ70において、診断装置20は、トレース回路8から直接、またはメモリあるいは分析されるまでトレースデータ要素を格納する他の格納デバイスから、トレースデータ要素のストリームを受信する。さらに、診断装置20は、トレースストリームが生成された場合に処理回路4によってどのプログラム命令が実行されたかの指示へのアクセスを有する。ステップ72において、診断回路24は、トレースされる関連付けられたメモリアドレスに関連付けられた処理動作を実行するための命令を、処理回路4が実行したかどうかを決定する。かかる命令が存在する場合、ステップ74において、診断回路24は、その命令に関連付けられたトレースデータ要素を、トレースストリームに配置する。トレースデータ要素は、トレース回路8によって選択された選択参照アドレスレジスタを識別する第1の情報、および、関連付けられたメモリアドレスと選択された参照アドレスレジスタの参照アドレスとの差を示す第2の情報を含む。診断回路24は、次いで、トレースデータ要素に示された第1の情報に対応するその参照アドレスレジスタ30−2のうちの1つを選択する。ステップ76において、診断回路24は、トレースデータ要素に含まれる第2の情報に基づく関連付けられたメモリアドレス、および選択された参照アドレスレジスタ30−2に格納された参照アドレスを決定する。このため、診断装置20は、トレースデータ要素に含まれる第1および第2の情報から、関連付けられたメモリアドレスを再構成できる。ステップ78において、診断装置20は、図5のステップ62に対応して、関連付けられたメモリアドレスに応じて、参照アドレスレジスタ30−2の参照アドレスを選択的に更新するための参照アドレス更新動作を実行する。異なる参照更新の形式を以下に示す。図10−12に関して以下に記載される一例において、診断装置20によって実行される参照アドレス更新動作は、どの参照アドレスレジスタ30−2が選択された参照アドレスレジスタであるかに依存し(診断装置20は、トレースデータ要素に示される第1の情報から、選択された参照アドレスレジスタを識別できる)、さらに、参照アドレスレジスタが更新される方法を制御する閾値の差の値に依存してもよい。
ステップ72において、指示は、トレースされる関連付けられたメモリアドレスに関連付けられていない命令のものであり、ステップ74〜78は、診断回路24によって省略される。診断回路24は、こうした命令の他の種類のトレース分析を実行してもよい。
ステップ80において、診断回路24は、処理回路4によって実行された別の命令の指示が存在するかどうかを決定する。これ以上の命令が実行されていない場合、方法はステップ82において終了し、一方で、そうではない場合には、新しい方法がステップ72に戻る。
図5および6のステップ62および78で実行される参照アドレス更新動作の種々の例について説明する。図7の例において、参照アドレスレジスタ30の少なくともいくつかが、参照アドレスパイプラインを形成するために構成される。パイプラインは、参照アドレスレジスタ30の全てを含む必要はなく、いくつかの例において、レジスタ30のサブセットのみを含んでもよい。トレースデータ要素を生成する場合、トレース回路8は、選択された参照アドレスレジスタとして、パイプラインにレジスタのいずれかを選択してもよい。参照アドレスのうちの1つを更新するために、関連付けられたメモリアドレスは、パイプライン内の第1の参照アドレスレジスタに書き込まれ、パイプライン内のアドレスは、パイプライン内の次のレジスタにシフトされる。パイプライン内のレジスタは、パイプラインからシフトされる。
図8は、図7のステップ62および78の参照アドレス更新動作を示す。パイプラインにはN個の参照アドレスレジスタが存在する。ステップ100において、1番目から(N−1)番目の参照アドレスレジスタの参照アドレスは、パイプラインの次の参照アドレスレジスタにシフトされる。次いで、ステップ102において、関連付けられたメモリアドレスは、パイプラインの第1の参照アドレスレジスタに書き込まれる。このように、最も最近に関連付けられたメモリアドレスが常にパイプラインの最初にあり、パイプライン内の連続レジスタは、より以前に関連付けられたメモリアドレスを段階的に含む。
図9は、2つのアドレスレジスタ、アドレスレジスタ0およびアドレスレジスタ1を含むパイプラインについて、この参照アドレス更新動作の一例を示す表を示す。図9は、一連の6つの関連付けられたメモリアドレスの6つのトレースデータ要素の生成を示す。
両方のアドレスレジスタは、最初に、デフォルトのアドレス0x00000000を格納する。関連付けられたアドレス0x00000001に応答して、これらのレジスタのうちの1つ(例:レジスタ0)が、選択された参照アドレスレジスタとして選択され、選択されたアドレスレジスタ、および選択されたアドレスレジスタのアドレスの対応する部分とは異なる関連付けられたメモリアドレスの部分を示す選択されたアドレス値0x01を示す、トレースデータ要素が生成される。次いで、関連付けられたメモリアドレスがアドレスレジスタ0に配置され、アドレスレジスタ0に格納される値がアドレスレジスタ1にシフトされる。
同様に、図9の各ステップにおいて、最も効率的なトレースデータ要素を生じさせるアドレスレジスタが選択され、トレースデータ要素が選択されたアドレスレジスタを用いて生成され、次いで、関連付けられたメモリアドレスがパイプラインにシフトされる。例えば、図9のステップ4および5において、関連付けられたメモリアドレスは、アドレスレジスタ0に格納されるアドレスよりもアドレスレジスタ1に格納されるアドレスにより類似しているため、この場合、選択された参照アドレスとしてアドレスレジスタ1が選択される。
診断回路24がトレースストリームを分析する場合、トレース回路8内のレジスタ30−1に対応するように診断回路24のアドレスレジスタ30−2にストアされた値が変化するように、トレース回路8と同様にアドレスレジスタ30−2を更新する。
図10〜12は、トレース回路8および診断回路24によって使用される参照アドレスパイプラインの別の例を示す。再び、パイプラインは、N個の参照アドレスレジスタ30を含む。この例において、パイプラインが更新される方法は、トレースデータ要素を生成するための選択された参照アドレスレジスタとしてどの参照アドレスレジスタが選択されたかに依存する。各参照アドレスレジスタ30は、参照アドレスレジスタ30が、パイプラインの先行するレジスタに格納されたアドレスによって更新されるかどうか(またはパイプラインの第1の参照アドレスレジスタの場合、関連付けられたメモリアドレスによって更新されるかどうか)を制御する対応するイネーブルシグナル105に関連付けられる。関連付けられたメモリアドレスがトレースされる場合、および選択された参照アドレスレジスタがパイプラインの第1の参照アドレスレジスタではない場合、選択された参照アドレスレジスタに対する第2の参照アドレスレジスタのためのイネーブルシグナルは、これらのレジスタがパイプラインの先行するレジスタに格納されたアドレスをキャプチャするように、「真」の値に設定される。選択された参照アドレスレジスタよりもパイプラインのさらに上である参照アドレスレジスタは、対応する参照アドレスが変化しないように、イネーブルシグナルを「偽」の値に設定する。第1の参照アドレスレジスタは、新しい関連付けられたメモリアドレスに選択的に更新される。
例えば、図10において、パイプライン内の4番目のアドレスレジスタは選択された参照アドレスレジスタである。この場合、パイプラインの2番目から4番目のレジスタ30のイネーブルシグナルは、2番目から4番目のレジスタ30が、1番目から3番目のレジスタ30に以前に格納されたアドレスをそれぞれキャプチャするように、「真」の値に設定される。さらに、第1の参照アドレスレジスタのためのイネーブルシグナルは、第1の参照アドレスレジスタが関連付けられたメモリアドレスをキャプチャするように、「真」の値に設定される。対照的に、パイプライン内の5番目から7番目の参照アドレスレジスタは、これらのレジスタに格納されるアドレスが変化しないように、イネーブルシグナルを「偽」の値に設定する。
図10の例において、同等に効率的なトレースデータを生成するために1つよりも多いアドレスレジスタを使用できる場合、トレース回路8は、選択されたアドレスレジスタとして、パイプラインの最後に最も近いレジスタ(つまり、最も長い期間、パイプラインに存在するアドレス)を選択する。このため、最後のアドレスレジスタが優先され、以降、最後から2番目のレジスタ、最後から3番目のレジスタ、のようになる。これらのアドレスが同等に効率的なトレースデータを生成する場合に、より新しい参照アドレスにより古い参照アドレスを優先的に選択することで、トレース回路8は、パイプライン内の最も有用な参照アドレスを維持する傾向がある。
パイプラインの第1の参照アドレスレジスタが、トレースデータ要素の生成に使用される選択された参照アドレスレジスタである場合、参照アドレスの更新のための特別のケースが存在し得る。この場合、トレース回路8または診断回路24は、関連付けられたメモリアドレスと第1の参照アドレスレジスタの参照アドレスとの間の差を決定できる。この差が所与の閾値を上回らない場合、第1の参照アドレスレジスタは、他のアドレスレジスタを変化させないように更新される。一方で、差が閾値を上回る場合、パイプラインの最後から2番目のアドレスレジスタは、パイプラインの先行するレジスタに格納されるアドレスを用いてそれぞれ更新され、関連付けられた参照アドレスは、第1のアドレスレジスタに書き込まれる。この機構は、パイプラインシフトが多くなりすぎることで、全アドレスレジスタの値が類似しないようにすることにより、メモリスペースのアドレス範囲全体におけるアドレスのよりよい拡散を実現する。
図11は、アドレスレジスタのサブセットが、図10に示されるように参照アドレスパイプラインを形成する場合に、図5および6のステップ62および78において実行され得る参照アドレス更新動作の一例を示す。ステップ110において、トレース回路8または診断回路24は、パイプライン内のN個のレジスタのどれが選択された参照アドレスレジスタであるかを決定する。選択されたアドレスレジスタは、パイプラインのM番目のレジスタである(1≦M≦N)。トレース回路8または診断回路24は、さらに、Mが1と等しいかどうかを決定する。
Mが1と同等にない場合、ステップ112において、1番目から(M−1)番目の参照アドレスレジスタの参照アドレスは、パイプラインの次のレジスタにシフトされる。次いで、方法はステップ114に進み、ここで、関連付けられたメモリアドレスは、パイプライン内の第1のレジスタに書き込まれる。
一方、M=1の場合、ステップ116において、関連付けられたメモリアドレスとパイプライン内の第1のレジスタの参照アドレスとの間の差が、所与の閾値よりも大きいかどうかを決定する。差が閾値以下である場合、方法はステップ114に進み、ここで、関連付けられたメモリアドレスは、パイプラインの他のアドレスレジスタ内のアドレスを修正せずに、第1のアドレスレジスタに書き込まれる。ステップ116において、関連付けられたメモリアドレスと第1の参照アドレスとの間の差が閾値よりも大きい場合、ステップ118において、ステップ114において関連付けられたメモリアドレスを第1のレジスタに書き込む前に、パイプラインの1番目から(N−1)番目のレジスタの参照アドレスがパイプラインの次のレジスタにシフトされる。
要するに、図11の参照アドレス更新動作は、第1の参照アドレスレジスタ以外の参照アドレスレジスタを選択された参照アドレスレジスタとして使用する場合に、使用された参照アドレスがパイプラインから除去され、パイプラインのいずれかの先行するアドレスが一段上にシフトされ、関連付けられたメモリアドレスがパイプラインの1番目の段に追加されることを確実にする。この技術により、使用された参照アドレスが、関連付けられたメモリアドレスによって置換され、このため、複数の同様のアドレスがパイプラインに存在することを回避するが、それにもかかわらず、最も最近に追加された参照アドレスがより以前の参照アドレスよりも長い間パイプラインに保持されるように、関連付けられたメモリアドレスがパイプラインの最初に追加されることを確実にする。第1の参照アドレスレジスタが選択された参照アドレスレジスタである場合、パイプライン内のアドレスは、第1の参照アドレス値が、所定の量よりも多く、関連付けられたメモリアドレスとは異なる場合にのみ、一段上にシフトされる。これは、さらに、参照アドレスレジスタがいくつかの類似の参照アドレス値を含まないようにすることを確実にするために役立つ。
図12は、図10および11の技術を、2つの参照アドレスレジスタを有するパイプラインに適用する例を示す表を示す。この例において、トレースデータ要素のアドレスの最小サイズが8ビットである(つまり2つの16進数の数字、例えば、0x01の値は、最小のアドレス部分サイズを有する)と想定される。従って、図11のステップ116に使用される所定の閾値は、8ビットの最小サイズに対応する。閾値は、8ビットの閾値部分サイズ、または、255の閾値の数値の差(8ビットを使用して表すことができる最大の値)として指定され得る。
図12の最初の2つのステップにおいて、パイプラインの第1の参照アドレスレジスタ(参照アドレスレジスタ0)は、選択された参照アドレスレジスタであり、関連付けられたメモリアドレスとパイプライン内の第1の参照アドレスレジスタの選択された参照アドレスとの差は、(ステップ1の差0x01およびステップ2の0x21は、最小部分サイズを用いて表すことができるため)所定の閾値以下である。従って、ステップ1および2において、パイプライン内のアドレスは、一段上にシフトされない。代わりに、アドレスレジスタ0の参照アドレスは、図11のステップ116および114の後に、関連付けられたメモリアドレスに上書きされる。
しかしながら、図12のステップ3において、参照アドレスレジスタ0は、選択された参照アドレスレジスタであり、関連付けられたメモリアドレスと参照アドレスレジスタ0の値との間の差0x30000000は、閾値よりも大きいため、この場合、パイプラインの値は、図11のステップ118に応じて一段上にシフトされ、関連付けられたメモリアドレスは、参照アドレスレジスタ0に書き込まれる。
次いで、図12のステップ4および5において、参照アドレスレジスタ1は、選択された参照アドレスレジスタである。この場合、参照アドレスレジスタ0に格納される値は、(図11のステップ112に従い)参照アドレスレジスタ1に格納されるようにシフトされ、関連付けられたメモリアドレスは、(図1のステップ114に従い)参照アドレスレジスタ0に書き込まれる。
図12のステップ6において、第1のアドレスレジスタのアドレス値の対応する部分に対して異なる関連付けられたメモリアドレスの部分が0x08であるため、再び、パイプラインにはシフトが存在せず、これは、再び、8ビットの閾値部分サイズを超えない。
図12に示される各ステップにおいて、選択されたアドレスレジスタおよび関連付けられたメモリアドレスと選択されたアドレスレジスタ内のアドレス値との差を識別するトレースデータ要素が生成される。トレースデータの分析時、診断回路24は、トレース回路8に対応するように、アドレスレジスタ内のアドレスを修正する。
図9および12の例は、関連付けられたアドレスと選択された参照アドレスとの間のアドレス差が、参照アドレスの対応する部分に対する異なるビット値を有する関連付けられたアドレスの部分によって示される場合を示すが、この技術は、トレースデータ要素が、関連付けられたアドレスおよび選択された参照アドレスのうちの一方を他方から減算することによって得られた数値の差の値として、アドレス差を示す場合にも適用できることが考えられよう。
図13は、参照アドレスレジスタ30内で参照アドレスを更新する別の例を示す。図7および10に示されるように、ある参照アドレスレジスタから別のものへとアドレスを物理的にシフトするのではなく、関連付けられたメモリアドレスを、他の参照アドレスレジスタを変化させずに、選択された犠牲参照アドレスレジスタへ書き込んでもよい。トレース回路8または診断回路24は、犠牲参照アドレスレジスタ、例えば、使用頻度が最も低い、ラウンドロビン、またはランダムの犠牲選択アルゴリズムを選択するために、異なる種類の犠牲選択アルゴリズムを実行できる。
例えば、アドレスレジスタ30は、表またはキャッシュのような構造を形成すると考えられ得る。最も最近に更新されたレジスタを示すために、トレース回路8または診断回路24によってポインタを維持できる。犠牲レジスタを選択する場合、トレース回路8または診断回路24は、ポインタと共に現在示されているレジスタの後のレジスタを選択できる(表の最後のレジスタが、現在、ポインタと共に示されている場合、トレース回路8または診断回路24は、表の第1のレジスタを選択できる)。トレース回路8または診断回路24は、次いで、関連付けられたメモリアドレスによって、選択された犠牲レジスタを更新でき、新たに選択された犠牲レジスタを示すために、ポインタを修正できる。関連付けられたメモリアドレスが参照アドレスレジスタ30へ書き込まれる毎に、この犠牲選択アルゴリズムを繰り返すことにより、トレース回路8または診断24は、最も以前に更新されたアドレスレジスタが次に犠牲として選択されるように、周期シーケンスにおいてレジスタを更新する。
関連付けられたメモリアドレスが、選択された犠牲参照アドレスレジスタに書き込まれる、図13の実施形態は、多くの参照アドレスレジスタが存在する場合において、パイプライン実施形態よりも効率的であってもよい。
図14は、多数の更新可能な参照アドレスレジスタ120(図7〜12に従うパイプラインの一部または図13に示されるようにキャッシュ状の構造であってもよい)と共に、更新ができない少なくとも1つの固定の参照アドレスレジスタ122も存在する、別の例を示す。固定の参照アドレスレジスタ122は、事前定義された参照アドレス値を格納する。例えば、固定の参照アドレスレジスタは、所与のプログラム内において頻繁に使用されることがわかっているアドレスを格納するように構成できる。
図15は、参照アドレスレジスタのいくつかが、そのアドレス範囲内の関連付けられたメモリアドレスによってのみ更新できるように、特定のアドレス範囲に関連付けられる、別の例を示す。トレースされている関連付けられたメモリアドレスが特定のレジスタについて指定されたアドレスの範囲外である場合、そのレジスタは、レジスタ更新プロセスから除外される。これは、例えば、メモリスペースの異なる範囲に関連付けられた参照アドレスを幅広く選択できることを確実にするために使用できる。
図16は、トレース回路8および診断回路24が更新されないように、特定のレジスタを動的にロックダウンするための外部ロックダウンシグナルに応答する、例を示す。例えば、ロックダウンされたレジスタは、図7〜12に示されるように、パイプラインから除外されてもよい、または、犠牲選択アルゴリズムから除外されてもよい。このため、特定の参照アドレスレジスタ30が、以下の命令セットのために有用であることが知られている参照アドレスを格納している場合、参照アドレスが参照アドレスレジスタ30から取り除かれないように、ロックダウンシグナルを提供できる。
診断回路24が、トレース回路8に対応するように、そのレジスタ30−2をロックできるようにするために、対応するロックダウンシグナルを、トレースデータ要素を分析する場合に、診断回路24に提供し得る。あるいは、トレース回路8は、診断回路24が、トレース回路のレジスタ30−1へ対応するようにそのレジスタ30−2をロックできるように、トレースストリームに、ロックダウンシグナルのどの値が使用されたかを示す情報を含み得る。
参照アドレスレジスタを更新するための図7〜16に示された種々の技術を、組み合わせて使用してもよい、例えば、固定の所定の値を格納するまたは特定の範囲のアドレスに関連付けられた少なくとも1つの他のレジスタがパイプライン内に提供された、レジスタのサブセットが存在し得ることが理解されよう。
本発明の例示的な実施形態について、添付の図面を参照しながら本明細書に詳細に説明してきたが、本発明はこれらの正確な実施形態には制限されず、添付の特許請求の範囲に記載される本発明の範囲から逸脱せずに、当業者により、種々の変更および修正がなされ得ることを理解されたい。
2 処理装置
4 処理回路
6 メモリシステム
8 トレース回路
10 トレース出力ポート
20 診断装置
22 トレース入力ポート
24 診断回路

Claims (46)

  1. データ処理装置であって、
    対応するメモリアドレスによって識別された複数のメモリロケーションを含むメモリと、
    命令に応答して、処理動作を実行するように構成された処理回路と、
    前記処理回路によって実行された前記処理動作を示すトレースデータ要素のストリームを生成し、前記トレースデータ要素のストリームを出力するように構成されたトレース回路と、を備え、
    前記トレース回路は、複数の参照アドレスを格納するように構成された複数の参照アドレスレジスタを含み、
    前記トレース回路は、前記メモリアドレスに関連付けられた処理動作を実行するための命令を処理する前記処理回路に応答して、選択された参照アドレスレジスタとして前記複数の参照アドレスレジスタのうちの1つを選択し、
    (i)前記複数の参照アドレスレジスタのうちのどれが前記選択された参照アドレスレジスタであるかを示す第1の情報と、
    (ii)トレースされるメモリアドレスと前記選択された参照アドレスレジスタに格納された選択された参照アドレスとの差を示す第2の情報と、を示すトレースデータ要素を生成および出力し、
    前記トレース回路は、前記トレースデータ要素を生成後、前記トレースされるメモリアドレスに応じて、前記複数の参照アドレスレジスタのうちの少なくとも1つの前記参照アドレスを選択的に更新するための参照アドレス更新動作を実行するように構成され、
    前記参照アドレス更新動作は、
    (a)少なくとも1つの参照アドレスレジスタについて、前記対応する参照アドレスと前記トレースされるメモリアドレスとの間のアドレスの差が、所定の閾値を上回るかどうかを決定することと、
    (b)前記アドレスの差が、前記少なくとも1つの参照アドレスレジスタのそれぞれについて前記所定の閾値を上回る場合に、前記少なくとも1つの参照アドレスレジスタから選択された犠牲参照アドレスレジスタへ、前記トレースされるメモリアドレスを書き込むことを含み、
    前記トレースデータ要素は、前記第2の情報を示すアドレス部分を含み、前記所定の閾値は、前記アドレス部分の最小サイズに対応する、データ処理装置。
  2. 前記トレースデータ要素は、前記第1の情報を示すヘッダ部分と、前記第2の情報を示すアドレス部分とを含む、請求項1に記載のデータ処理装置。
  3. 前記トレースされるメモリアドレスと、前記選択された参照アドレスとの間の前記差がゼロである場合、前記トレース回路は、前記アドレス部分を前記トレースデータ要素から省略する、請求項2に記載のデータ処理装置。
  4. 前記トレース回路は、前記複数の参照アドレスレジスタに対応する複数の候補の第2の情報の値を決定するように構成され、各候補の第2の情報の値は、前記トレースされるメモリアドレスと、前記対応する参照アドレスレジスタに格納された前記参照アドレスとの差を示し、
    前記トレース回路は、最も効率的な候補の第2の情報の値に対応する前記参照アドレスレジスタのうちの1つを、前記選択された参照アドレスレジスタとして選択し、かつ、前記最も効率的な候補の第2の情報の値に対応する前記第2の情報と共に、前記トレースデータ要素を生成するように構成される、請求項1に記載のデータ処理装置。
  5. 前記最も効率的な候補の第2の情報の値は、前記対応する第2の情報が最小のビット数を使用して表すことができる、候補の第2の情報の値である、請求項4に記載のデータ処理装置。
  6. 前記最も効率的な候補の第2の情報の値は、前記対応する第2の情報が、前記トレースデータ要素のストリーム内の前記トレースデータ要素に含まれる場合に、前記トレースデータ要素のストリーム内のトレースデータの合計が最小になる、候補の第2の情報の値である、請求項4に記載のデータ処理装置。
  7. 前記第2の情報は、前記選択された参照アドレスレジスタの前記選択された参照アドレスの対応する部分に対する異なるビット値を有する、前記トレースされるメモリアドレスの部分を示す、請求項1に記載のデータ処理装置。
  8. 前記第2の情報は、前記トレースされるメモリアドレスと前記選択された参照アドレスとの間の数値の差を示す、請求項1に記載のデータ処理装置。
  9. 前記参照アドレス更新動作は、前記トレースされるメモリアドレスを、前記複数の参照アドレスレジスタの犠牲参照アドレスレジスタへ書き込むことを含む、請求項に記載のデータ処理装置。
  10. 前記トレース回路は、前記複数の参照アドレスレジスタのうちのどれが前記犠牲参照アドレスレジスタであるかを選択するために、犠牲選択動作を実行するように構成される、請求項に記載のデータ処理装置。
  11. 前記トレース回路は、前記参照アドレス更新動作による更新から、少なくとも1つの参照アドレスレジスタを選択的に除外するように、ロックダウンシグナルに応答する、請求項に記載のデータ処理装置。
  12. 前記複数の参照アドレスレジスタのうちの少なくとも1つは、事前定義された参照アドレスを格納するための固定の参照アドレスレジスタであり、前記固定の参照アドレスレジスタは、前記参照アドレス更新動作による更新から除外される、請求項に記載のデータ処理装置。
  13. 前記複数の参照アドレスレジスタのうちの少なくとも1つは、前記メモリアドレスの関連付けられた範囲に関連付けられた範囲を限定した参照アドレスレジスタであり、前記範囲を限定した参照アドレスレジスタは、前記トレースされるメモリアドレスが前記メモリアドレスの前記関連付けられた範囲外である場合に、前記参照アドレス更新動作による更新から除外される、請求項に記載のデータ処理装置。
  14. 前記複数の参照アドレスレジスタの少なくともサブセットは、参照アドレスパイプラインを形成するために結合されており、前記参照アドレス更新動作は、前記トレースされるメモリアドレスに応じて、前記参照アドレスパイプラインで前記参照アドレスを更新することを含む、請求項に記載のデータ処理装置。
  15. 前記参照アドレスパイプラインは、N個の参照アドレスレジスタを含み、
    前記参照アドレス更新動作は、前記参照アドレスパイプラインの1番目から(N−1)番目の参照アドレスレジスタ内の参照アドレスを、前記参照アドレスパイプラインの次の参照アドレスレジスタへシフトすることと、前記トレースされるメモリアドレスを、前記参照アドレスパイプラインの第1の参照アドレスレジスタへ書き込むことと、を含む、請求項14に記載のデータ処理装置。
  16. 前記参照アドレスパイプラインは、N個の参照アドレスレジスタを含み、前記選択された参照アドレスレジスタは、1≦M≦Nである場合に、前記参照アドレスパイプラインのM番目の参照アドレスレジスタを含み、前記参照アドレス更新動作は、
    M>1の場合に、前記参照アドレスパイプラインの1番目から(M−1)番目の参照アドレスレジスタ内の参照アドレスを、前記参照アドレスパイプラインの次の参照アドレスレジスタへシフトすることと、
    前記参照アドレスパイプラインの第1の参照アドレスレジスタへ、前記トレースされるメモリアドレスを書き込むことを含む、請求項14に記載のデータ処理装置。
  17. M=1である場合に、前記参照アドレス更新動作は、さらに、
    前記トレースされるメモリアドレスと前記第1の参照アドレスレジスタの前記参照アドレスとの差が、所定の閾値を上回るかどうかを決定することと、
    前記差が、前記所定の閾値を上回る場合、前記参照アドレスパイプラインの前記第1の参照アドレスレジスタへ前記トレースされるメモリアドレスを書き込む前に、前記参照アドレスパイプラインの1番目から(N−1)番目の参照アドレスレジスタ内の参照アドレスを、前記参照アドレスパイプラインの次の参照アドレスレジスタへシフトすることと、を含む、請求項16に記載のデータ処理装置。
  18. 前記トレース回路は、前記N個の参照アドレスレジスタに対応するN個の候補の第2の情報の値を決定するように構成され、各候補の第2の情報の値は、前記トレースされるメモリアドレスと、前記対応する参照アドレスレジスタに格納された前記参照アドレスとの差を示し、
    前記トレース回路は、前記選択された参照アドレスレジスタとして、最も効率的な候補の第2の情報の値に対応する前記N個の参照アドレスレジスタのうちの1つを選択するように構成され、
    前記対応する候補の第2の情報の値が同等に効率的である複数の参照アドレスレジスタが存在する場合、前記トレース回路は、前記選択された参照アドレスレジスタとして、前記参照アドレスパイプラインの最後に最も近い前記複数の参照アドレスレジスタのうちの1つを選択する、請求項16に記載のデータ処理装置。
  19. 前記トレース回路は、前記複数の参照アドレスレジスタのそれぞれへのデフォルトの参照アドレスを格納するように、初期化事象に応答する、請求項1に記載のデータ処理装置。
  20. 前記初期化事象は、前記トレース回路が起動することである、請求項19に記載のデータ処理装置。
  21. 前記初期化事象は、トレース同期化データ要素を生成および出力するために、前記トレース回路をトリガするためのトレース同期化事象である、請求項19に記載のデータ処理装置。
  22. 前記処理回路は、複数の異なる種類のデータ処理命令に応答して、データ処理動作を実行するように構成され、
    前記複数の種類のデータ処理命令のそれぞれについて、前記トレース回路は、前記トレース回路が、異なる種類のデータ処理命令を示すトレースデータ要素を生成するための同じ参照アドレスレジスタを利用するように、前記選択されたアドレスレジスタとして、前記複数の参照アドレスレジスタのうちのいずれかを選択するように構成される、請求項1に記載のデータ処理装置。
  23. 前記複数の種類のデータ処理命令は、
    分岐命令と、
    例外事象が発生した場合に実行中の命令と、
    前記例外事象が発生した後に実行が方向付けられる命令と、
    現在、前記処理回路によって実行中の命令と、
    ロード命令と、
    格納命令と、のうちの少なくとも2つを含む、請求項22に記載のデータ処理装置。
  24. データ処理装置であって、
    データを格納するためのメモリ手段であって、対応するメモリアドレスによって識別された複数のメモリロケーションを含む、メモリ手段と、
    命令に応答して、処理動作を実行するための処理手段と、
    前記処理手段によって実行された前記処理動作を示すトレースデータ要素のストリームを生成し、前記トレースデータ要素のストリームを出力するためのトレース手段と、を備え、
    前記トレース手段は、複数の参照アドレスを格納するための複数の参照アドレスレジスタ手段を含み、
    前記トレース手段は、前記メモリアドレスに関連付けられた処理動作を実行するための命令を処理する前記処理手段に応答して、選択された参照アドレスレジスタ手段として前記複数の参照アドレスレジスタ手段のうちの1つを選択し、
    (i)前記複数の参照アドレスレジスタ手段のうちのどれが前記選択された参照アドレスレジスタ手段であるかを示す第1の情報と、
    (ii)トレースされるメモリアドレスと前記選択された参照アドレスレジスタ手段に格納された選択された参照アドレスとの差を示す第2の情報と、を示すトレースデータ要素を生成および出力し、
    前記トレース手段は、前記トレースデータ要素を生成後、前記トレースされるメモリアドレスに応じて、前記複数の参照アドレスレジスタのうちの少なくとも1つの前記参照アドレスを選択的に更新するための参照アドレス更新動作を実行するように構成され、
    前記参照アドレス更新動作は、
    (a)少なくとも1つの参照アドレスレジスタについて、前記対応する参照アドレスと前記トレースされるメモリアドレスとの間のアドレスの差が、所定の閾値を上回るかどうかを決定することと、
    (b)前記アドレスの差が、前記少なくとも1つの参照アドレスレジスタのそれぞれについて前記所定の閾値を上回る場合に、前記少なくとも1つの参照アドレスレジスタから選択された犠牲参照アドレスレジスタへ、前記トレースされるメモリアドレスを書き込むことを含み、
    前記トレースデータ要素は、前記第2の情報を示すアドレス部分を含み、前記所定の閾値は、前記アドレス部分の最小サイズに対応する、データ処理装置。
  25. 対応するメモリアドレスによって識別された複数のメモリロケーションを含むメモリを含むデータ処理装置のためのデータ処理方法であって、前記方法は、
    命令に応答して、処理動作を実行するステップと、
    複数の参照アドレスレジスタに複数の参照アドレスを格納するステップと、
    理回路によって実行された前記処理動作を示すトレースデータ要素のストリームを生成するステップと、
    前記トレースデータ要素のストリームを出力するステップと、を含み、
    トレースデータ要素のストリームを生成する前記ステップは、メモリアドレスに関連付けられた処理動作のパフォーマンスに応答して、選択された参照アドレスレジスタとして前記複数の参照アドレスレジスタのうちの1つを選択し、
    (i)前記複数の参照アドレスレジスタのうちのどれが前記選択された参照アドレスレジスタであるかを示す第1の情報と、
    (ii)トレースされるメモリアドレスと前記選択された参照アドレスレジスタに格納された選択された参照アドレスとの差を示す第2の情報と、を示すトレースデータ要素を生成および出力
    前記トレースデータ要素を生成後、前記トレースされるメモリアドレスに応じて、前記複数の参照アドレスレジスタのうちの少なくとも1つの前記参照アドレスを選択的に更新するための参照アドレス更新動作が実行され、
    前記参照アドレス更新動作は、
    (a)少なくとも1つの参照アドレスレジスタについて、前記対応する参照アドレスと前記トレースされるメモリアドレスとの間のアドレスの差が、所定の閾値を上回るかどうかを決定することと、
    (b)前記アドレスの差が、前記少なくとも1つの参照アドレスレジスタのそれぞれについて前記所定の閾値を上回る場合に、前記少なくとも1つの参照アドレスレジスタから選択された犠牲参照アドレスレジスタへ、前記トレースされるメモリアドレスを書き込むことを含み、
    前記トレースデータ要素は、前記第2の情報を示すアドレス部分を含み、前記所定の閾値は、前記アドレス部分の最小サイズに対応する、データ処理方法。
  26. 命令に応答して、処理装置によって実行された処理動作を監視するためのトレースユニットであって、前記処理装置は、対応するメモリアドレスによって識別された複数のメモリロケーションを含むメモリを含み、前記トレースユニットは、
    前記処理装置によって実行された前記処理動作を示すトレースデータ要素のストリームを生成し、前記トレースデータ要素のストリームを出力するように構成されたトレース回路を含み、
    前記トレース回路は、複数の参照アドレスを格納するように構成された複数の参照アドレスレジスタを含み、
    前記トレース回路は、メモリアドレスに関連付けられた処理動作を実行するための命令を処理する前記処理装置に応答して、選択された参照アドレスレジスタとして前記複数の参照アドレスレジスタのうちの1つを選択し、
    (i)前記複数の参照アドレスレジスタのうちのどれが前記選択された参照アドレスレジスタであるかを示す第1の情報と、
    (ii)前記トレースされるメモリアドレスと前記選択された参照アドレスレジスタに格納された選択された参照アドレスとの差を示す第2の情報と、を示すトレースデータ要素を生成および出力し、
    前記トレース回路は、前記トレースデータ要素を生成後、前記トレースされるメモリアドレスに応じて、前記複数の参照アドレスレジスタのうちの少なくとも1つの前記参照アドレスを選択的に更新するための参照アドレス更新動作を実行するように構成され、
    前記参照アドレス更新動作は、
    (a)少なくとも1つの参照アドレスレジスタについて、前記対応する参照アドレスと前記トレースされるメモリアドレスとの間のアドレスの差が、所定の閾値を上回るかどうかを決定することと、
    (b)前記アドレスの差が、前記少なくとも1つの参照アドレスレジスタのそれぞれについて前記所定の閾値を上回る場合に、前記少なくとも1つの参照アドレスレジスタから選択された犠牲参照アドレスレジスタへ、前記トレースされるメモリアドレスを書き込むことを含み、
    前記トレースデータ要素は、前記第2の情報を示すアドレス部分を含み、前記所定の閾値は、前記アドレス部分の最小サイズに対応する、トレースユニット。
  27. 命令に応答して、処理装置によって実行された処理動作を監視するためのトレースユニットであって、前記処理装置は、データを格納するためのメモリ手段を含み、前記メモリ手段は、対応するメモリアドレスによって識別された複数のメモリロケーションを含み、前記トレースユニットは、
    前記処理装置によって実行された前記処理動作を示すトレースデータ要素のストリームを生成し、前記トレースデータ要素のストリームを出力するためのトレース手段を含み、
    前記トレース手段は、複数の参照アドレスを格納するための複数の参照アドレスレジスタ手段を含み、
    前記トレース手段は、メモリアドレスに関連付けられた処理動作を実行するための命令を処理する前記処理装置に応答して、選択された参照アドレスレジスタとして前記複数の参照アドレスレジスタのうちの1つを選択し、
    (i)前記複数の参照アドレスレジスタ手段のうちのどれが前記選択された参照アドレスレジスタ手段であるかを示す第1の情報と、
    (ii)トレースされるメモリアドレスと前記選択された参照アドレスレジスタ手段に格納された選択された参照アドレスとの差を示す第2の情報と、を示すトレースデータ要素を生成および出力し、
    前記トレース手段は、前記トレースデータ要素を生成後、前記トレースされるメモリアドレスに応じて、前記複数の参照アドレスレジスタのうちの少なくとも1つの前記参照アドレスを選択的に更新するための参照アドレス更新動作を実行するように構成され、
    前記参照アドレス更新動作は、
    (a)少なくとも1つの参照アドレスレジスタについて、前記対応する参照アドレスと前記トレースされるメモリアドレスとの間のアドレスの差が、所定の閾値を上回るかどうかを決定することと、
    (b)前記アドレスの差が、前記少なくとも1つの参照アドレスレジスタのそれぞれについて前記所定の閾値を上回る場合に、前記少なくとも1つの参照アドレスレジスタから選択された犠牲参照アドレスレジスタへ、前記トレースされるメモリアドレスを書き込むことを含み、
    前記トレースデータ要素は、前記第2の情報を示すアドレス部分を含み、前記所定の閾値は、前記アドレス部分の最小サイズに対応する、トレースユニット。
  28. 命令に応答して、処理装置によって実行された処理動作を示すトレースデータ要素のストリームを分析するための診断装置であって、前記処理装置は、対応するメモリアドレスによって識別された複数のメモリロケーションを含むメモリを含み、前記診断装置は、
    前記トレースデータ要素のストリームを受信するためのトレース入力と、
    前記処理動作の処理結果を決定するために、前記トレースデータ要素のストリームを分析するように構成された診断回路と、を備え、
    前記診断回路は、複数の参照アドレスを格納するように構成された複数の参照アドレスレジスタを含み、
    前記診断回路は、前記メモリアドレスに関連付けられた処理動作を実行するための命令を処理する前記処理装置の指示に応答して、
    (a)(i)前記複数の参照アドレスレジスタのうちのいずれが選択された参照アドレスレジスタであるかを示す第1の情報と、(ii)前記トレースされるメモリアドレスと前記選択された参照アドレスレジスタに格納された選択された参照アドレスとの差を示す第2の情報と、を示すトレースデータ要素を、前記トレースデータ要素のストリームに配置するとともに
    (b)前記第2の情報と前記選択された参照アドレスレジスタに格納された前記選択された参照アドレスとに応じて、前記トレースされるメモリアドレスを決定
    前記診断回路は、前記トレースされるメモリアドレスを決定した後に、前記トレースされるメモリアドレスに応じて、前記複数の参照アドレスレジスタのうちの1つの前記参照アドレスを選択的に更新するための参照アドレス更新動作を実行するように構成され、
    前記参照アドレス更新動作は、
    (a)少なくとも1つの参照アドレスレジスタについて、前記対応する参照アドレスと前記トレースされるメモリアドレスとの間のアドレスの差が、所定の閾値を上回るかどうかを決定することと、
    (b)前記アドレスの差が、前記少なくとも1つの参照アドレスレジスタのそれぞれについて前記所定の閾値を上回る場合に、前記少なくとも1つの参照アドレスレジスタから選択された犠牲参照アドレスレジスタへ、前記トレースされるメモリアドレスを書き込むことを含み、
    前記トレースデータ要素は、前記第2の情報を示すアドレス部分を含み、前記所定の閾値は、前記アドレス部分の最小サイズに対応する、診断装置。
  29. 前記トレースデータ要素は、前記第1の情報を示すヘッダ部分と、前記第2の情報を示すアドレス部分とを含む、請求項28に記載の診断装置。
  30. 前記トレースデータ要素が前記アドレス部分を含まない場合、前記診断回路は、前記選択された参照アドレスと同じになるように前記トレースされるメモリアドレスを決定する、請求項29に記載の診断装置。
  31. 前記第2の情報は、前記選択された参照アドレスレジスタの前記選択された参照アドレスの対応する部分に対して異なるビット値を有する前記トレースされるメモリアドレスの部分を示し、
    前記診断回路は、(i)前記選択された参照アドレスのビット値で開始し、(ii)前記第2の情報によって示された前記トレースされるメモリアドレスの前記部分のビット値で、前記選択された参照アドレスの前記対応する部分のビット値を置換することによって、得られる値と等しいアドレス値を有するものとして、前記トレースされるメモリアドレスを決定するように構成される、請求項28に記載の診断装置。
  32. 前記第2の情報は、前記トレースされるメモリアドレスと前記選択された参照アドレスとの間の数値の差を示し、
    前記診断回路は、前記選択された参照アドレスに、前記第2の情報によって示された前記数値の差を追加することによって、前記トレースされるメモリアドレスを決定するように構成される、請求項28に記載の診断装置。
  33. 前記参照アドレス更新動作は、前記トレースされるメモリアドレスを、前記複数の参照アドレスレジスタの犠牲参照アドレスレジスタへ書き込むことを含む、請求項28に記載の診断装置。
  34. 前記診断回路は、前記複数の参照アドレスレジスタのうちのどれが前記犠牲参照アドレスレジスタであるかを選択するために、犠牲選択動作を実行するように構成される、請求項33に記載の診断装置。
  35. 前記診断回路は、前記参照アドレス更新動作による更新から、少なくとも1つの参照アドレスレジスタを選択的に除外するように、ロックダウンシグナルに応答する、請求項28に記載の診断装置。
  36. 前記複数の参照アドレスレジスタのうちの少なくとも1つは、事前定義された参照アドレスを格納するための固定の参照アドレスレジスタであり、前記固定の参照アドレスレジスタは、前記参照アドレス更新動作による更新から除外される、請求項28に記載の診断装置。
  37. 前記複数の参照アドレスレジスタのうちの少なくとも1つは、前記メモリアドレスの関連付けられた範囲に関連付けられた範囲を限定した参照アドレスレジスタであり、前記範囲を限定した参照アドレスレジスタは、前記トレースされるメモリアドレスが前記メモリアドレスの前記関連付けられた範囲外である場合に、前記参照アドレス更新動作による更新から除外される、請求項28に記載の診断装置。
  38. 前記複数の参照アドレスレジスタの少なくともサブセットは、参照アドレスパイプラインを形成するために結合されており、前記参照アドレス更新動作は、前記トレースされるメモリアドレスに応じて、前記参照アドレスパイプラインで前記参照アドレスを更新することを含む、請求項28に記載の診断装置。
  39. 前記参照アドレスパイプラインは、N個の参照アドレスレジスタを含み、
    前記参照アドレス更新動作は、前記参照アドレスパイプラインの1番目から(N−1)番目の参照アドレスレジスタ内の参照アドレスを、前記参照アドレスパイプラインの次の参照アドレスレジスタへシフトすることと、前記トレースされるメモリアドレスを、前記参照アドレスパイプラインの第1の参照アドレスレジスタへ格納することを含む、請求項38に記載の診断装置。
  40. 前記参照アドレスパイプラインは、N個の参照アドレスレジスタを含み、前記選択された参照アドレスレジスタは、1≦M≦Nである場合に、前記参照アドレスパイプラインのM番目の参照アドレスレジスタを含み、前記参照アドレス更新動作は、
    M>1の場合に、前記参照アドレスパイプラインの1番目から(M−1)番目の参照アドレスレジスタ内の参照アドレスを、前記参照アドレスパイプラインの次の参照アドレスレジスタへシフトすることと、
    前記参照アドレスパイプラインの第1の参照アドレスレジスタへ、前記トレースされるメモリアドレスを格納することを含む、請求項38に記載の診断装置。
  41. M=1である場合に、前記参照アドレス更新動作は、さらに、
    前記トレースされるメモリアドレスと前記第1の参照アドレスレジスタの前記参照アドレスとの差が、所定の閾値を上回るかどうかを決定することと、
    前記差が、前記所定の閾値を上回る場合、前記参照アドレスパイプラインの前記第1の参照アドレスレジスタへ前記トレースされるメモリアドレスを書き込む前に、前記参照アドレスパイプラインの1番目から(N−1)番目の参照アドレスレジスタ内の参照アドレスを、前記参照アドレスパイプラインの次の参照アドレスレジスタへシフトすることを含む、請求項40に記載の診断装置。
  42. 前記診断回路は、前記複数の参照アドレスレジスタのそれぞれへのデフォルトの参照アドレスを格納するように、初期化事象に応答する、請求項28に記載の診断装置。
  43. 前記初期化事象は、前記診断回路が起動することである、請求項42に記載の診断装置。
  44. 前記初期化事象は、前記トレースデータ要素のストリーム内のトレース同期化データ要素に応答する前記診断回路である、請求項42に記載の診断装置。
  45. 命令に応答して、処理装置によって実行された処理動作を示すトレースデータ要素のストリームを分析するための診断装置であって、前記処理装置は、データを格納するためのメモリ手段を含み、前記メモリ手段は、対応するメモリアドレスによって識別された複数のメモリロケーションを含み、前記診断装置は、
    前記トレースデータ要素のストリームを受信するためのトレース入力手段と、
    前記処理動作の処理結果を決定するために、前記トレースデータ要素のストリームを分析するための診断手段と、を備え、
    前記診断手段は、複数の参照アドレスを格納するための複数の参照アドレスレジスタ手段を含み、
    前記診断手段は、メモリアドレスに関連付けられた処理動作を実行するための命令を処理する前記処理装置の指示に応答して、
    (a)(i)前記複数の参照アドレスレジスタ手段のうちのどれが選択された参照アドレスレジスタ手段であるかを示す第1の情報と、(ii)前記トレースされるメモリアドレスと前記選択された参照アドレスレジスタ手段に格納された選択された参照アドレスとの差を示す第2の情報と、を示すトレースデータ要素を、前記トレースデータ要素のストリームに配置するとともに、
    (b)前記第2の情報と前記選択された参照アドレスレジスタ手段に格納された前記選択された参照アドレスとに応じて、前記トレースされるメモリアドレスを決定し、
    前記診断手段は、前記トレースされるメモリアドレスを決定した後に、前記トレースされるメモリアドレスに応じて、前記複数の参照アドレスレジスタのうちの1つの前記参照アドレスを選択的に更新するための参照アドレス更新動作を実行するように構成され、
    前記参照アドレス更新動作は、
    (a)少なくとも1つの参照アドレスレジスタについて、前記対応する参照アドレスと前記トレースされるメモリアドレスとの間のアドレスの差が、所定の閾値を上回るかどうかを決定することと、
    (b)前記アドレスの差が、前記少なくとも1つの参照アドレスレジスタのそれぞれについて前記所定の閾値を上回る場合に、前記少なくとも1つの参照アドレスレジスタから選択された犠牲参照アドレスレジスタへ、前記トレースされるメモリアドレスを書き込むことを含み、
    前記トレースデータ要素は、前記第2の情報を示すアドレス部分を含み、前記所定の閾値は、前記アドレス部分の最小サイズに対応する、診断装置。
  46. 命令に応答して、処理装置によって実行された処理動作を示すトレースデータ要素のストリームを分析するための方法であって、前記処理装置は、対応するメモリアドレスによって識別された複数のメモリロケーションを含むメモリを含み、前記方法は、
    前記トレースデータ要素のストリームを受信するステップと、
    複数の参照アドレスレジスタに複数の参照アドレスを格納するステップと、
    前記処理動作の処理結果を決定するために、前記トレースデータ要素のストリームを分析するステップと、を含み、
    するステップは、トレースされるメモリアドレスに関連付けられた処理動作を実行するための命令を処理する前記処理装置の指示に応答して、
    (a)(i)前記複数の参照アドレスレジスタのうちのどれが選択された参照アドレスレジスタであるかを示す第1の情報と、(ii)前記トレースされるメモリアドレスと前記選択された参照アドレスレジスタに格納された選択された参照アドレスとの差を示す第2の情報と、を示すトレースデータ要素を、前記トレースデータ要素のストリームに配置することと、
    (b)前記第2の情報と前記選択された参照アドレスレジスタに格納された前記選択された参照アドレスとに応じて、前記トレースされるメモリアドレスを決定することを含
    前記トレースされるメモリアドレスを決定した後に、前記トレースされるメモリアドレスに応じて、前記複数の参照アドレスレジスタのうちの1つの前記参照アドレスを選択的に更新するための参照アドレス更新動作が実行され、
    前記参照アドレス更新動作は、
    (a)少なくとも1つの参照アドレスレジスタについて、前記対応する参照アドレスと前記トレースされるメモリアドレスとの間のアドレスの差が、所定の閾値を上回るかどうかを決定することと、
    (b)前記アドレスの差が、前記少なくとも1つの参照アドレスレジスタのそれぞれについて前記所定の閾値を上回る場合に、前記少なくとも1つの参照アドレスレジスタから選択された犠牲参照アドレスレジスタへ、前記トレースされるメモリアドレスを書き込むことを含み、
    前記トレースデータ要素は、前記第2の情報を示すアドレス部分を含み、前記所定の閾値は、前記アドレス部分の最小サイズに対応する、方法。
JP2011195900A 2010-09-13 2011-09-08 データ処理装置、トレースユニット、および診断装置 Active JP5680511B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1015181.9A GB2483509B (en) 2010-09-13 2010-09-13 Data processing apparatus, trace unit and diagnostic apparatus
GB1015181.9 2010-09-13

Publications (3)

Publication Number Publication Date
JP2012113691A JP2012113691A (ja) 2012-06-14
JP2012113691A5 JP2012113691A5 (ja) 2014-09-11
JP5680511B2 true JP5680511B2 (ja) 2015-03-04

Family

ID=43065062

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011195900A Active JP5680511B2 (ja) 2010-09-13 2011-09-08 データ処理装置、トレースユニット、および診断装置

Country Status (4)

Country Link
US (1) US8788887B2 (ja)
JP (1) JP5680511B2 (ja)
CN (1) CN102402476B (ja)
GB (1) GB2483509B (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9164821B2 (en) 2012-12-14 2015-10-20 International Business Machines Corporation Performing diagnostic tracing of an executing application to identify suspicious pointer values
US10348626B1 (en) * 2013-06-18 2019-07-09 Marvell Israel (M.I.S.L) Ltd. Efficient processing of linked lists using delta encoding
CN103984614B (zh) * 2014-05-06 2017-07-21 华为技术有限公司 一种监控方法及监控装置、电子设备
US9524227B2 (en) 2014-07-09 2016-12-20 Intel Corporation Apparatuses and methods for generating a suppressed address trace
CN106919487B (zh) * 2015-12-25 2020-08-28 北京忆芯科技有限公司 NVMe门铃处理方法及其装置
US10216562B2 (en) 2016-02-23 2019-02-26 International Business Machines Corporation Generating diagnostic data
GB2551747B (en) * 2016-06-29 2019-04-10 Advanced Risc Mach Ltd Diagnostic data capture
KR102538258B1 (ko) * 2016-07-25 2023-05-31 삼성전자주식회사 데이터 저장 장치 및 이를 포함하는 데이터 처리 시스템
US10506079B2 (en) * 2017-09-14 2019-12-10 Arm Limited Packet compression

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3629181B2 (ja) 2000-03-28 2005-03-16 Necマイクロシステム株式会社 プログラム開発支援装置
JP2003085000A (ja) * 2001-09-10 2003-03-20 Mitsubishi Electric Corp トレース情報生成装置およびその方法
JP3609794B2 (ja) 2002-03-26 2005-01-12 株式会社東芝 トレースデータ圧縮装置、トレースデータ圧縮方法及びトレースデータ圧縮回路を内蔵したマイクロコンピュータ
US7162552B2 (en) * 2002-11-22 2007-01-09 Texas Instruments Incorporated Programmable extended compression mask for dynamic trace
JP2006268746A (ja) * 2005-03-25 2006-10-05 Toshiba Corp マイクロプロセッサおよびその制御方法
WO2008128476A1 (en) * 2007-04-18 2008-10-30 Mediatek Inc. Data access tracing
JP2009042815A (ja) 2007-08-06 2009-02-26 Renesas Technology Corp 半導体集積回路及びデバッグシステム

Also Published As

Publication number Publication date
CN102402476B (zh) 2016-02-10
JP2012113691A (ja) 2012-06-14
US20120066552A1 (en) 2012-03-15
US8788887B2 (en) 2014-07-22
GB201015181D0 (en) 2010-10-27
CN102402476A (zh) 2012-04-04
GB2483509A (en) 2012-03-14
GB2483509B (en) 2017-08-02

Similar Documents

Publication Publication Date Title
JP5680511B2 (ja) データ処理装置、トレースユニット、および診断装置
JP4225851B2 (ja) データ処理装置用トレース要素生成システム
US8417923B2 (en) Data processing apparatus having trace and prediction logic
TWI384397B (zh) 資料位址追蹤方法及資料位址追蹤裝置、資料追蹤方法及資料追蹤裝置
JP5865920B2 (ja) データ処理装置のトレース
US20160112062A1 (en) Parallel dictionary-based compression encoder
US7673187B2 (en) Data processing apparatus and method for reducing trace bandwidth
US7987322B2 (en) Snoop request management in a data processing system
US20210311744A1 (en) Microprocessor with Multistep-Ahead Branch Predictor
KR20110065452A (ko) 데이터 처리 시스템에서 단일화된 캐시에 대한 에러 검출 스킴들
US8046532B2 (en) Content-addressable memories and state machines for performing three-byte matches and secondary matches, and for providing error protection
US9419646B2 (en) Hardware compression to find backward references with multi-level hashes
US20040003219A1 (en) Loop control circuit and loop control method
US7689816B2 (en) Branch prediction with partially folded global history vector for reduced XOR operation time
TW419630B (en) Limited run branch prediction
US20130339667A1 (en) Special case register update without execution
CN107766199B (zh) 追踪信息编码装置及其编码方法与电脑可读取式媒体
US7428632B2 (en) Branch prediction mechanism using a branch cache memory and an extended pattern cache
US7376797B2 (en) Cache memory system and method using reference bits
US6922767B2 (en) System for allowing only a partial value prediction field/cache size
JP2006318092A (ja) 乱数生成エージェント
US10506079B2 (en) Packet compression
US11537522B2 (en) Determining a tag value for use in a tag-guarded memory
US9582619B1 (en) Simulation of a circuit design block using pattern matching
JPH0540691A (ja) キヤツシユメモリの故障検出装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130917

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140425

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140507

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20140730

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: 20141208

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150107

R150 Certificate of patent or registration of utility model

Ref document number: 5680511

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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