JP2021517298A - 分岐命令のトレース - Google Patents

分岐命令のトレース Download PDF

Info

Publication number
JP2021517298A
JP2021517298A JP2020546453A JP2020546453A JP2021517298A JP 2021517298 A JP2021517298 A JP 2021517298A JP 2020546453 A JP2020546453 A JP 2020546453A JP 2020546453 A JP2020546453 A JP 2020546453A JP 2021517298 A JP2021517298 A JP 2021517298A
Authority
JP
Japan
Prior art keywords
trace
branch
instruction
unsuccessful
data processing
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.)
Granted
Application number
JP2020546453A
Other languages
English (en)
Other versions
JP7361040B2 (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 JP2021517298A publication Critical patent/JP2021517298A/ja
Application granted granted Critical
Publication of JP7361040B2 publication Critical patent/JP7361040B2/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/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/348Circuit details, i.e. tracer hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting

Landscapes

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

Abstract

装置は、命令シーケンスに応答してデータ処理動作を実行するためのデータ処理回路を備え、命令シーケンスは分岐命令を含む。トレース生成回路は、データ処理動作を示すトレース項目のトレース・ストリームを生成する。トレース生成回路は、命令シーケンス中の1つ又は複数の不成立分岐命令、及び後続の成立分岐命令に応答して、装置の現在のステータス条件が満たされるとき、1つ又は複数の不成立分岐命令に対応する少なくとも1つの不成立トレース項目、及び後続の成立トレース項目をトレース・ストリーム中に含めることと、装置の現在のステータス条件が満たされないとき、成立分岐命令に関連付けられたソース・アドレスをトレース・ストリーム中に含めることとを行う。したがって、不成立分岐命令をトレースすることと、成立分岐命令に関連付けられたソース・アドレスをトレースすることとのハイブリッド手法が与えられる。

Description

本開示はデータ処理に関する。より詳細には、本開示は、分岐命令のトレースに関する。
データ処理システムは、システムのデータ・プロセッサによって実行される動作をトレースするための機能を与えられ得る。これは、一般に、それらのデータ処理動作を示すトレース項目のトレース・ストリームの生成を含む。このトレース・ストリームは、データ処理システムの動作が監視され得るように、データ処理システム内で(たとえば、システムオンチップ内で)生成され、システムからエクスポートされる必要がある。しかしながら、この目的に(たとえば専用のトレース出力ピンを介して)予約され得る帯域幅は、通常、極めて制約されており、したがって、トレース・ストリームに追加されるべきトレース項目の厳密な選択と、それらの選択されたトレース項目の効率的な表現とが必要である。データ・プロセッサがしばしば命令シーケンスを実行する場合、そのシーケンス中の第1の命令が実行されるとき、連続的に続く命令も実行されることが推論され得るので、データ・プロセッサによって実行される動作の多くは明示的にトレースされる必要はない。しかしながら、分岐が成立するか否かは、一般に、ランタイム条件に依存し、したがって、プロセッサが行ったことを再構成することを可能にするために、分岐が成立したか否か、したがって、分岐命令の後にどの命令が実行されたかの知識が必要とされるので、分岐命令はより明示的なトレーシングを必要とする。
少なくとも1つの例示的な実施例では、
命令シーケンスに応答してデータ処理動作を実行するためのデータ処理回路であって、命令シーケンスが分岐命令を含む、データ処理回路と、
データ処理動作を示すトレース項目のトレース・ストリームを生成するためのトレース生成回路とを備え、
トレース生成回路が、命令シーケンス中の1つ又は複数の不成立(not-taken)分岐命令、及び後続の成立(taken)分岐命令に応答して、
装置の現在のステータス条件が満たされるとき、1つ又は複数の不成立分岐命令に対応する少なくとも1つの不成立トレース項目、及び後続の成立トレース項目をトレース・ストリーム中に含めることと、
装置の現在のステータス条件が満たされないとき、成立分岐命令に関連付けられたソース・アドレスをトレース・ストリーム中に含めることと
を行う、装置がある。
少なくとも1つの例示的な実施例では、装置を動作させる方法であって、
命令シーケンスに応答してデータ処理動作を実行することであって、命令シーケンスが分岐命令を含む、データ処理動作を実行することと、
データ処理動作を示すトレース項目のトレース・ストリームを生成することとを含み、
1つ又は複数の不成立分岐命令が命令シーケンス中の成立分岐命令の前に来るとき、データ処理動作を示すトレース項目のトレース・ストリームを生成することが、
装置の現在のステータス条件が満たされるとき、1つ又は複数の不成立分岐命令に対応する少なくとも1つの不成立トレース項目、及び後続の成立トレース項目をトレース・ストリーム中に含めることと、
装置の現在のステータス条件、装置の現在のステータス条件が満たされないとき、成立分岐命令に関連付けられたソース・アドレスをトレース・ストリーム中に含めることと
を含む、方法がある。
少なくとも1つの例示的な実施例では、
命令シーケンスに応答してデータ処理動作を実行するための手段であって、命令シーケンスが分岐命令を含む、データ処理動作を実行するための手段と、
データ処理動作を示すトレース項目のトレース・ストリームを生成するための手段とを備え、
1つ又は複数の不成立分岐命令が命令シーケンス中の成立分岐命令の前に来るとき、生成するための手段が、
装置の現在のステータス条件が満たされるとき、1つ又は複数の不成立分岐命令に対応する少なくとも1つの不成立トレース項目、及び後続の成立トレース項目をトレース・ストリーム中に含めるための手段と、
装置の現在のステータス条件が満たされないとき、成立分岐命令に関連付けられたソース・アドレスをトレース・ストリーム中に含めるための手段と
をアクティブ化する、装置がある。
添付の図面に示されているように、本技法の実施例を参照しながら、単に例として、本技法についてさらに説明する。
例示的な一実施例における装置を概略的に示す図である。 例示的な一実施例におけるシステムオンチップ装置を概略的に示す図である。 例示的な一実施例における装置を概略的に示す図である。 例示的な一実施例における装置のいくつかの構成要素を概略的に示す図である。 例示的な一実施例における装置のいくつかの構成要素を概略的に示す図である。 例示的な一実施例における、分岐命令と、対応する得られたトレース・ストリームとを含む例示的な命令シーケンスを示す図である。 例示的な一実施例における、分岐命令と、対応する得られたトレース・ストリームとを含む例示的な命令シーケンスを示す図である。 例示的な一実施例における、分岐命令と、対応する得られたトレース・ストリームとを含む例示的な命令シーケンスを示す図である。 例示的な一実施例において取られるステップのシーケンスを示す流れ図である。 図6Aの変形を示す図である。 例示的な一実施例における、例外を処理するために取られるステップのシーケンスを示す流れ図である。 例示的な一実施例における、例外を処理するために取られるステップのシーケンスを示す流れ図である。
少なくともいくつかの実施例は、
命令シーケンスに応答してデータ処理動作を実行するためのデータ処理回路であって、命令シーケンスが分岐命令を含む、データ処理回路と、
データ処理動作を示すトレース項目のトレース・ストリームを生成するためのトレース生成回路とを備え、
トレース生成回路が、命令シーケンス中の1つ又は複数の不成立分岐命令、及び後続の成立分岐命令に応答して、
装置の現在のステータス条件が満たされるとき、1つ又は複数の不成立分岐命令に対応する少なくとも1つの不成立トレース項目、及び後続の成立トレース項目をトレース・ストリーム中に含めることと、
装置の現在のステータス条件が満たされないとき、成立分岐命令に関連付けられたソース・アドレスをトレース・ストリーム中に含めることと
を行う、装置を提供する。
分岐命令のトレーシングに対する1つの手法は、分岐ごとにインジケータ(すなわちトレース項目)を出力することであろう。たとえば、そのようなインジケータは、分岐が成立したか又は不成立であったかのいずれかを示すように符号化され得る。そのような成立/不成立インジケータの任意のシーケンスが符号化され得る効率により、この点について同様に効率的であるトレース・ストリームが可能になる。しかしながら、この手法は、すべての分岐、すなわち、成立した分岐と不成立であった分岐の両方の知識を必要とする。その上、現代のプロセッサ・アーキテクチャでは、そのような「不成立」実行は最適化により消去されており、トレース目的のために「不成立」実行を単に保存することはよりコストがかかるようになりつつある。分岐命令のトレーシングに対する別の手法は、成立分岐に関するインジケータ(すなわちトレース項目)のみを出力することであろうが、プログラム・フローを再構成するために、この手法は、どの特定の分岐が成立したかの知識を必要とする。この知識を与えるために、成立分岐のソース・アドレスが出力され得るが、そのようなソース・アドレスを出力することは、成立/不成立インジケータの上述の符号化された任意のシーケンスよりも(符号化効率に関して)著しく効率的でない。
この文脈において、本技法はハイブリッド手法を提案し、その手法に従って、トレース生成回路は、トレース生成回路が1つ又は複数の不成立分岐命令、及び後続の成立分岐命令にどのように応答するかを決定するために、装置の現在のステータス条件を監視する。現在のステータス条件が満たされるとき、トレース生成回路は、1つ又は複数の不成立分岐命令に対応する少なくとも1つの不成立トレース項目、及び後続の成立トレース項目をトレース・ストリーム中に含める。反対に、装置の現在のステータス条件が満たされないとき、トレース生成回路は、成立分岐命令に関連付けられたソース・アドレスをトレース・ストリーム中に含める。言い換えれば、トレース生成回路は、分岐のトレーシングに対する2つの上記で説明した手法、すなわち、いくつかの状況の下で、少なくともいくつかの不成立トレース項目を生成することと、他の状況の下で、成立分岐命令に関連付けられたソース・アドレスを含む明示的な成立トレース項目を生成することとを切り替えることができる。その上、装置は、トレース生成回路が、現在のステータス条件の定義に応じて、これらの2つの手法をいつ切り替えるかを制御するための構成可能性を与えられる。
現在のステータス条件は様々な形式を取り得、任意の関連がある1つ又は複数の基準に従って定義され得る。しかしながら、実施例では、現在のステータス条件は1つ又は複数の不成立分岐命令の多重度(multiplicity)を含む。言い換えれば、現在のステータス条件は、命令シーケンス中の成立分岐命令の前にいくつの不成立分岐命令が来るかに依存することができる。つまり、シーケンス中で遭遇した不成立分岐命令が多いほど、それらの不成立分岐命令が明示的にトレースされているとき、それらの不成立分岐命令を表すために必要とされる1つ又は複数のトレース項目のサイズが大きくなる。その上、成立分岐命令のためのソース・アドレスをトレースすることは、そのソース・アドレスを表すために比較的大きなトレース項目を必要とするが、本技法は、この負担が相対的であり、代替として明示的にトレースされる不成立分岐命令が多いほど、成立分岐命令ソース・アドレスのこのトレーシングは負担が少なくなることを認識する。
したがって、いくつかの実施例では、装置の現在のステータス条件は、多重度がしきい値よりも小さいことである。したがって、しきい値を設定することによって、不成立分岐命令の多重度(数)がしきい値未満であるとき、現在のステータス条件が満たされ、不成立分岐命令がトレースされるように、2つの手法間の遷移が制御され得る。反対に、不成立分岐命令の多重度(数)がしきい値以上であるとき、現在のステータス条件は満たされず、代わりに、成立分岐命令に関連付けられたソース・アドレスがトレース・ストリーム中に含められる。しきい値の設定は、実装依存であり、装置の特定の要件と装置が動作しているコンテキストに依存する。実際、このしきい値を自由に設定する能力が本技法の特徴である。
不成立分岐命令の数を監視することは、任意の技術的に実現可能な機構によって実装され得るが、実施例では、装置は、不成立分岐命令に応答して増分する不成立カウンタをさらに備える。次いで、現在のステータス条件が満たされるかどうか、すなわち、値がしきい値未満であるか、又はしきい値以上であるかを決定するために、このカウンタによって現在示されている値が参照され得る。
不成立カウンタは様々な形式を取り得るが、実施例では、不成立カウンタは、しきい値において飽和するように構成された飽和カウンタである。現在のステータス条件を決定するためにカウンタが使用される場合、かつ多重度がしきい値よりも小さいときに装置の現在のステータス条件が満たされていると決定される場合、多重度がしきい値に到達すると、現在のステータス条件はカウンタのさらなる増分によって影響を受けなくなり、したがって、飽和カウンタはこのことを反映する。
不成立カウンタの容量も実装依存であり、いくつかの実施例では、不成立カウンタは1ビット記憶要素を備える。他の実施例では、不成立カウンタは複数ビット記憶要素を備える。
いくつかの実施例では、トレースするトレース生成回路は、命令シーケンス中の成立分岐命令に応答して、装置の現在のステータス条件が満たされるとき、不成立カウンタが示す数と同数の不成立トレース項目をトレース・ストリーム中に含める。
トレースするトレース生成回路は、データ処理回路における例外の発生に応答して、例外が発生した、命令シーケンス中のポイントを示す例外トレース項目をトレース・ストリーム中に含め、不成立カウンタをリセットし得る。
トレースするトレース生成回路は、データ処理回路における例外の発生に応答して、不成立カウンタが示す数と同数の不成立トレース項目をトレース・ストリーム中に含め得る。
しきい値はまた、システム要件に応じて様々に構成され得る。いくつかの実施例では、しきい値は装置のための所定の静的な値である。他の実施例では、しきい値は可変値である。
しきい値を変動させる能力は、ある範囲の状況において利用可能性を見出し得る。たとえば、いくつかの実施例では、トレース生成回路は、装置のための現在のリソース使用指示に応答して、しきい値を動的に設定する。そのような現在のリソース使用指示は、様々な形式を取り得、特に、しきい値がより高い値に設定されるときに装置によって負われなければならない追加の負担に対して、トレード・オフを図られる必要があり得る、装置のリソースの使用を反映し得る。たとえば、実施例では、装置のための現在のリソース使用指示は装置における記憶要素の現在の占有率を示す。装置内の記憶能力が相対的に不足しているリソースであり得る場合、記憶要素の使用量が現在大きいときには、しきい値を低減する(したがって、遭遇した不成立分岐命令の数を記録するために必要とされる容量を低減する)ことが有益であり得る。
生成される成立トレース項目は様々な形式を取り得る。いくつかの実施例では、成立トレース項目は、成立分岐命令のための分岐が成立したという指示である。この指示は、たとえば、「Eアトム」(「実行された(executed)」アトム)と呼ばれることがある、簡単な「成立」指示であり得る。いくつかの実施例では、成立トレース項目は、分岐命令に関連付けられたソース・アドレスである。言い換えれば、ソース・アドレス自体は、分岐が成立したという指示として使用され得る。いくつかの実施例では、成立トレース項目は、分岐命令に関連付けられたソース・アドレスの後に、成立分岐命令のための分岐が成立したという指示である。言い換えれば、ソース・アドレスと、たとえば、上述の簡単な「成立」指示(「Eアトム」)の両方が使用され得る。
分岐命令は直接的であるか、又は間接的であり得る。いくつかの実施例では、成立トレース項目は、分岐が間接分岐であるとき、分岐のためのターゲット・アドレスの指示をさらに含む。
現代のものは、(最近の経験に基づいて)めったに実行されない実行シーケンスから命令を削除することによってパフォーマンスを改善するためのステップを取り得る。たとえば、少なくともいくつかの「不成立」分岐はこのようにして処理され得る。この文脈において、本技法は、そのような「最適化」ステップが、成立分岐命令に関連付けられたソース・アドレスをトレース・ストリーム中に含めるための、すなわち、「最適化」ステップに応答して、装置の現在のステータス条件が満たされないことを決定するためのトリガであり得ることを提案する。したがって、いくつかの実施例では、トレース生成回路は、データ処理回路がパフォーマンス改善プロシージャにおいて命令シーケンスから少なくとも1つの分岐命令を削除したという指示に応答して、装置の現在のステータス条件が満たされないことを決定する。
少なくともいくつかの実施例は、装置を動作させる方法であって、
命令シーケンスに応答してデータ処理動作を実行することであって、命令シーケンスが分岐命令を含む、データ処理動作を実行することと、
データ処理動作を示すトレース項目のトレース・ストリームを生成することとを含み、
1つ又は複数の不成立分岐命令が命令シーケンス中の成立分岐命令の前に来るとき、データ処理動作を示すトレース項目のトレース・ストリームを生成することが、
装置の現在のステータス条件が満たされるとき、1つ又は複数の不成立分岐命令に対応する少なくとも1つの不成立トレース項目、及び後続の成立トレース項目をトレース・ストリーム中に含めることと、
装置の現在のステータス条件、装置の現在のステータス条件が満たされないとき、成立分岐命令に関連付けられたソース・アドレスをトレース・ストリーム中に含めることと
を含む、方法を提供する。
少なくともいくつかの実施例は、
命令シーケンスに応答してデータ処理動作を実行するための手段であって、命令シーケンスが分岐命令を含む、データ処理動作を実行するための手段と、
データ処理動作を示すトレース項目のトレース・ストリームを生成するための手段を備え、
1つ又は複数の不成立分岐命令が命令シーケンス中の成立分岐命令の前に来るとき、生成するための手段が、
装置の現在のステータス条件が満たされるとき、1つ又は複数の不成立分岐命令に対応する少なくとも1つの不成立トレース項目、及び後続の成立トレース項目をトレース・ストリーム中に含めるための手段と、
装置の現在のステータス条件が満たされないとき、成立分岐命令に関連付けられたソース・アドレスをトレース・ストリーム中に含めるための手段と
をアクティブ化する、装置を提供する。
次に、図を参照しながら、いくつかの特定の実施例について説明する。
図1は、例示的な一実施例における装置10を概略的に示す。装置は、データ処理回路12と、トレース生成回路14とを備える。データ処理回路12は、分岐命令を含む命令シーケンスに応答してデータ処理動作を実行する。トレース生成回路14は、データ処理回路12が実行したデータ処理動作を示すデータ処理情報を受信し、そのデータ処理情報に基づいて、トレース生成回路14は、トレース・ストリームを形成するトレース項目(要素)を生成し、そのトレース項目(要素)から装置のアクティビティが再構成され得る。特に、命令シーケンスに応答してデータ処理回路12によって実行されたデータ処理動作が再構成され得る。以下の図を参照しながら以下でより詳細に説明するように、トレース生成回路14がトレース・ストリームを生成する様式は装置12の現在のステータス条件16に依存する。この現在のステータス条件16は、特に、以下の図を参照しながら説明する、いくつかの形式を取り得る。その上、トレース生成回路が、命令シーケンス中の分岐命令を示すトレース項目を生成する様式(及びデータ処理回路12がそれらの分岐命令にどのように応答したか)は、現在のステータス条件に依存する。現在のステータス条件が満たされるとき、トレース生成回路14は、(それぞれ不成立分岐と成立分岐とを示す)不成立トレース項目と成立トレース項目とをトレース・ストリーム中に含め得るが、現在のステータス条件が満たされないとき、トレース生成回路14は、その分岐が成立したときの分岐命令のソース・アドレスを含め得る。分岐が間接分岐であった場合、成立トレース項目は分岐のためのターゲット・アドレスの指示をさらに含む。
図2は、例示的な一実施例における装置20を概略的に示す。装置20は、システムオンチップ(SoC)デバイスとして実施され、データ処理回路22と、トレース生成回路24とを備える。データ処理回路22は、分岐命令を含む命令シーケンスに応答してデータ処理動作を実行する。トレース生成回路24は、データ処理回路22が実行したデータ処理動作を示すデータ処理情報を受信し、そのデータ処理情報に基づいて、トレース生成回路24は、トレース・ストリームを形成するトレース項目(要素)を生成し、そのトレース項目(要素)から装置のアクティビティが再構成され得る。図1の装置10について説明したように、トレース生成回路24がトレース・ストリームを生成する様式は装置20の現在のステータス条件に依存する。図2では、その現在のステータス条件の重要な構成要素が不成立カウンタ26によって表されている。この不成立カウンタ26は、データ処理回路22が命令シーケンス中の分岐命令に遭遇し、分岐が成立しなかったとき、増分される。したがって、トレース生成回路24が命令シーケンス中の分岐命令を示すトレース項目を生成する様式(及びデータ処理回路22がそれらの分岐命令にどのように応答したか)は、不成立カウンタ26の現在の値に依存する。したがって、不成立カウンタ26のいくつかの値について、現在のステータス条件が満たされることが決定され、トレース生成回路24は、(それぞれ不成立分岐と成立分岐とを示す)不成立トレース項目と成立トレース項目とをトレース・ストリーム中に含め得るが、不成立カウンタ26の他の値については、現在のステータス条件が満たされないことが決定され、トレース生成回路24は、その分岐が成立したときの分岐命令のソース・アドレスを含め得る。
図3は、例示的な一実施例における装置30を概略的に示す。装置は、データ処理回路32と、トレース生成回路34とを備える。データ処理回路32は、分岐命令を含む命令シーケンスに応答してデータ処理動作を実行する。トレース生成回路34は、データ処理回路32が実行したデータ処理動作を示すデータ処理情報を受信し、そのデータ処理情報に基づいて、トレース生成回路34は、トレース・ストリームを形成するトレース項目(要素)を生成し、そのトレース項目(要素)から装置のアクティビティが再構成され得る。装置32はまた、不成立カウンタ36と、しきい値ストレージ37と、比較回路38とを備える。図2の不成立カウンタ26と同様に、不成立カウンタ36は、データ処理回路32が命令シーケンス中の分岐命令に遭遇し、分岐が成立しなかったとき、増分される。しきい値ストレージ37及び比較回路38の提供は、現在のステータス条件が満たされるか否かの決定を行うことを可能にする。特に、不成立カウンタ36の値がしきい値37未満であるとき、現在のステータス条件が満たされることが決定され、不成立カウンタ36の値がしきい値37以上であるとき、現在のステータス条件が満たされないことが決定される。これに基づいて、トレース生成回路34は、(それぞれ不成立分岐と成立分岐とを示す)不成立トレース項目と成立トレース項目とをトレース・ストリーム中に含め得るか、又はその分岐が成立したときの分岐命令のソース・アドレスを含め得る。
図1〜図3の実施例は、いかなる意味でも、相互排他的である別個の実施例として見られるべきでなく、むしろ、本技法の異なる態様とそれらの実施についての異なる可能性とを強調するために図中に単に提示されていることに留意されたい。たとえば、現在のステータス条件16は、データ処理回路12の一部を形成するものとして図1に示されているが、不成立カウンタ26は、トレース生成回路24の一部を形成するものとして図2に示され、図3における不成立カウンタ36、しきい値ストレージ37及び比較回路38はデータ処理回路32及びトレース生成回路34の外側に示されている。このことは、したがって、本技法が実施され得る方法の範囲があること、特に、現在のステータス条件、不成立カウンタ、しきい値、又は比較回路などの項目が、データ処理回路又はトレース生成回路の一方若しくは他方の(又はさらに両方の)一部を形成する必要がないことを強調している。この見方はまた、以下の図4A及び図4Bに、互いに関して並びに図1〜図3に関して、自由に当てはまる。要素は、適切に各々から自由に組み合わせられ得る。
図4Aは、飽和不成立カウンタ40と、しきい値ストレージ42と、比較回路44とを概略的に示す。図2の不成立カウンタ26及び図3の不成立カウンタ36と同様に、不成立カウンタ40は、(図4Aに示されていない)監視されるデータ処理回路が命令シーケンス中の分岐命令に遭遇し、分岐が成立しなかったとき、増分される。不成立カウンタ40は、さらなる不成立分岐に遭遇した場合でも、飽和値において飽和する(すなわち、飽和値よりもさらに増分しない)ように構成された飽和カウンタである。この飽和値は、それ自体が構成可能であり得るしきい値42(入力「しきい値を設定する」を参照されたい)によって定義される。比較回路44は、現在のステータス条件が満たされるか否かを決定するために、不成立カウンタ40の現在の値としきい値42とを比較する。特に、飽和不成立カウンタ40の値がしきい値42未満である(すなわち、カウンタ40がまだ飽和していない)とき、現在のステータス条件が満たされることが決定され、不成立カウンタ40の値がしきい値42以上である(すなわち、カウンタ40が飽和している)とき、現在のステータス条件が満たされないことが決定される。現在のステータス条件は、「トレーシング・モード」、すなわち、トレース生成回路(図4Aに示されていない)が、(それぞれ不成立分岐と成立分岐とを示す)不成立トレース項目と成立トレース項目とをトレース・ストリーム中に含めるか、又は分岐が成立したときの分岐命令のソース・アドレスを含めるかを決定する。
図4Bは、記憶要素52を備えることが示されている、データ処理回路50のさらなる実例を示す。この記憶要素は、記憶要素の特定の形式が本明細書では重要でないので、レジスタによって、又はキャッシュ・データ・ストアによってなど、様々に実施され得る。しかしながら、記憶要素が、不成立(not-taken)(NT)カウンタ54を維持するために少なくとも部分的に使用されることに留意されたい。上記の実例におけるように、不成立(NT)カウンタ54は、データ処理回路50が命令シーケンス中の分岐命令に遭遇し、分岐が成立しなかったとき、増分される。装置はまた、しきい値ストレージ58と、比較回路60とを備える。上記で説明したように、比較回路60によるNTカウンタ54の値としきい値58との比較が「トレーシング・モード」を決定する。しかしながら、制御回路56も存在することに留意されたい。この制御回路56は、記憶要素52から使用指示を受信し、この使用指示に基づいてしきい値58の設定を制御する。たとえば、この使用指示は記憶要素52の現在の占有率であり得る。この機能は、(他のシステム要件による)記憶要素52の容量に対する需要がより大きいとき、しきい値が下げられ得るように与えられ、NTカウンタ54を与えるために必要とされる記憶要素52がより小さいことを意味する。他のシステム要件による記憶要素52の容量に対する需要がより小さいとき、しきい値が上げられ、より多くの記憶要素52がNTカウンタ54として使用されることが可能になり得る。しきい値58は、このようにして自由に設定され得、さらには0に低減され得る。異なって設定されたしきい値に応答した異なる挙動について、以下でより詳細に説明する。
図5Aは、分岐命令のみを含む命令シーケンスを左側に示す。非分岐命令は、図示されている分岐命令の間にインターリーブされ得る(おそらくされるであろう)が、本説明にとって重要でなく、したがって、単に説明の明快のために省略されている。分岐命令の3つの例示的なタイプ、すなわち、B(分岐(branch))と、BNE(等しくなければ分岐(branch-not-equal))と、BEQ(等しければ分岐((branch-equal))とが示されている。いくつかの分岐命令は(この例示的な実行シーケンスにおいて)成立していると標示されている。残りの分岐命令は不成立である。図の右側に、得られたトレース・ストリームがある。この実例では、3のしきい値が不成立カウンタのために設定されている。結果として、第1の成立分岐は「E」(実行された)アトムを出力させる。次の2つの不成立分岐は、それぞれ「N」(実行されなかった(not-executed))アトムを出力させる。次の成立分岐はまた、「E」アトムを出力させる。しかしながら、4つの不成立分岐の以下のシーケンスは、不成立カウンタのために設定された3のしきい値を超えており、結果として、「N」アトムは全く出力されず、むしろ、次の成立分岐は、対応する分岐命令のためのソース・アドレスを明示的にトレース(出力)させる。
図5Bは、典型的なコーディング・ループを形成する4つの命令のさらなる例示的な命令シーケンスを示す。さらに、この実例では、ループは、プログラム・フローがループから出る前に何回も反復され、BNE命令#2及びBNE命令#3は繰り返し成立しておらず、BEQ命令#4は繰り返し成立している。現代の(投機的な)プロセッサは、したがって、一般的に、この特定のコード・シーケンスの実行を最適化し、この特定のコード・シーケンスを、図5Bの下側部分に示されている切り詰められたコード・シーケンス、すなわち比較CMP#1及びBEQ#4のみに効果的に変換する。この種類の「最適化」(BNEを削除すること)を実行するように構成された装置について、このアクションはまた、トレーシング・モードを変更するための、すなわち、2つのNアトムの回数が、現在定義されている(たとえば、3の)しきい値未満であっても、ソース・アドレスの出力を強制するためのトリガとして使用され得る。
図5Cは、最後のBEQ#5のトレーシングのための2つの可能性を示す、別の例示的なコード・シーケンスを示し、これらの可能性は、BEQ#5のソース・アドレスのみをトレースすること(BEQ#5が「成立」したことが暗示的である)であるか、又は最初にソース・アドレスをトレースし、その後明示的な「E」アトムをトレースすることのいずれかである。言い換えれば、「A」の実例では、トレース・ストリーム中のソース・アドレスの存在は、最後の分岐が成立したことを暗示し、「B」の実例では、トレース・ストリーム中のソース・アドレスの存在は最後の分岐について何も暗示せず、Eアトムは、分岐が成立したことを明示的に示す。
図6Aは、例示的な一方法において取られるステップのシーケンスを示す流れ図である。フローはステップ100において始まると考えられ得、そこで、データ処理回路が遭遇する各命令について、その命令が分岐命令であることが決定される。フローは、他のタイプの命令について、ステップ100において自らループする。しかしながら、ステップ102において分岐命令に遭遇したとき、分岐が成立したか、又は不成立であったかが決定される。不成立分岐について、ステップ104において、不成立カウンタが増分され(不成立カウンタは、そのように実施された場合、飽和し得ることに留意されたい)、フローはステップ100に戻る。成立分岐について、フローはステップ106に進み、そこで、不成立カウンタが、定義されたしきい値以上である(たとえば飽和している)かどうかが決定される。この条件が真である場合、フローはステップ108に進み、そこで、成立分岐のソース・アドレスが出力される。次いで、ステップ110において、不成立カウンタがリセットされる。しかしながら、ステップ106において、条件が真でない場合、フローはステップ112に進み、トレーシング回路は、不成立カウンタが現在示す数と同数のNアトム(不成立トレース項目)を出力する。この数は、したがって、0、1、又は不成立カウンタが示すことができる、その不成立カウンタのしきい値未満の数と同数であり得る。次いで、ステップ114において、Eアトム(成立トレース項目)が出力され、ステップ110において、不成立カウンタがリセットされる。ステップ110から、フローはステップ100に戻る。
図6Aにおけるステップ112に関する最後のポイントとして、また本技法は、しきい値が可変であり得ることを提案することを想起して、このことは、したがって、しきい値の設定によって構成され得る挙動の3つのカテゴリーがあることを意味することに留意されたい。第1に、しきい値が0に設定された場合、すべての成立分岐は、トレースされる対応するソース・アドレスを生じる。第2に、しきい値が1に設定された場合、a)(最後の成立分岐以後に)不成立分岐に全く遭遇しなかった場合、成立分岐は、トレースされるEアトムを生じるか、又はb)(最後の成立分岐以後に)不成立分岐に遭遇した場合、成立分岐は、トレースされる対応するソース・アドレスを生じる。第3に、しきい値が2以上(本明細書でその数を「x」と呼ぶ)に設定された場合、a)(最後の成立分岐以後に)「x」よりも少ない数(本明細書でその数を「y」と呼ぶ)の不成立分岐に遭遇した場合、成立分岐は、出力される「y」個のNアトム、及び後続の1個のEアトムを生じるか、又はb)(最後の成立分岐以後に)少なくとも「x」個の不成立分岐に遭遇した場合、成立分岐は、トレースされる対応するソース・アドレスを生じる。
図6Bは、図6Aの流れ図の変形を示し、その変形は、ステップ106とステップ112との間の決定ステップ107の追加のみを伴う、図6Aのフローと同一のフローである。したがって、ステップ106から、条件が真でない場合、(現在の命令シーケンス中の)分岐命令が(これらの分岐が(現在)めったに成立しないと決定されたとき)「最適化」(パフォーマンス改善)プロシージャにおいて削除されたという指示が受信されたかどうかをテストするために、ステップ107において追加の決定が行われる。この決定が真でない場合、次いで、フローはステップ112に進み、トレーシング回路は、不成立カウンタが現在示す数と同数のNアトム(不成立トレース項目)を出力する。しかしながら、この決定が真である場合、フローはステップ108に進み、そこで、成立分岐のソース・アドレスが出力される。
図7及び図8は、例外の処理に関する2つの例示的な方法において取られるステップのシーケンスを示す流れ図である。図7及び図8は、したがって、たとえば、図6A(及び6B)に示された方法ステップと並行してそれぞれ動作し得るプロセスであると理解されるべきであることに留意することが重要である。言い換えれば、図6A(及び6B)は、分岐命令が本技法によってどのようにトレースされ得るかの実例を示し、これと並行して、図7と図8の各々は、本技法を実装するときに、例外がどのように処理され得るかの実例を示す。その上、これらの例外処理技法は、図1〜図4に示された例示的な装置実施例のいずれかにおいて実装され得、単に例として、データ処理回路32からトレース生成回路34に通る例外信号が図3に示されている。
図7では、フローはステップ120において開始すると考えられ得、そこで、例外が発生したかどうかが決定される。例外が発生しなかった場合、フローは自らループして戻り、このステップにおいて待機する。(ある他のコードへの分岐を引き起こすのに有効な)例外が発生すると、フローはステップ122に進み、そこで、不成立カウンタが、定義されたしきい値以上である(たとえば飽和している)かどうかが決定される。この決定が真でない場合、トレース生成器は、不成立カウンタが現在示す数と同数のNアトム(不成立トレース項目)を出力する(すなわちCOUNTER*N−atomsを出力する)。次いで、ステップ126において、例外がどこから成立したかを示す例外パケットが出力される(例外が分岐命令上で発生しなかったかもしれないので、その出力は行われなければならない)。しかしながら、ステップ122において、不成立カウンタが、定義されたしきい値以上である(たとえば飽和している)ことがわかった場合、フローはステップ126に直接進み、例外がどこから成立したかを示す例外パケットだけが出力される。このことは、図6A及び6Bの実例におけるソース・アドレス・トレース項目と全く同様に、分岐命令が不成立であったことを暗示する。最後に、ステップ128において、不成立カウンタがリセットされ、フローはステップ120に戻る。
図8は、図7に示された手法に対する、例外処理に対する代替の手法を示す。ここでは、すべての状況において、例外がどこから成立したかを示す例外パケットのみが出力される。本明細書で説明する「現在のステータス条件」の使用に関して、例外は、現在のステータス条件が満たされないようにする。図8では、フローはステップ140において開始すると考えられ得、そこで、例外が発生したかどうかが決定される。例外が発生しなかった場合、フローは自らループして戻り、このステップにおいて待機する。(ある他のコードへの分岐を引き起こすのに有効な)例外が発生すると、フローはステップ142に進み、そこで、例外がどこから成立したかを示す例外パケットが出力される(例外が分岐命令上で発生しなかったかもしれないので、その出力は行われなければならない)。最後に、ステップ144において、不成立カウンタがリセットされ、フローはステップ144に戻る。
手短に全体を要約すれば、装置は、命令シーケンスに応答してデータ処理動作を実行するデータ処理回路を備え、命令シーケンスは分岐命令を含む。トレース生成回路は、データ処理動作を示すトレース項目のトレース・ストリームを生成する。トレース生成回路は、命令シーケンス中の1つ又は複数の不成立分岐命令、及び後続の成立分岐命令に応答して、装置の現在のステータス条件が満たされるとき、1つ又は複数の不成立分岐命令に対応する少なくとも1つの不成立トレース項目、及び後続の成立トレース項目をトレース・ストリーム中に含めることと、装置の現在のステータス条件が満たされないとき、成立分岐命令に関連付けられたソース・アドレスをトレース・ストリーム中に含めることとを行う。したがって、不成立分岐命令をトレースすることと、成立分岐命令に関連付けられたソース・アドレスをトレースすることとのハイブリッド手法が、与えられる。
本出願において、「…ように構成された」という文言は、装置の要素が、定義された動作を実行することが可能な構成を有することを意味するために使用される。この文脈では、「構成」は、ハードウェア又はソフトウェアの相互接続の配置又は様式を意味する。たとえば、装置が、定義された動作を与える専用のハードウェアを有し得るか、又はプロセッサ若しくは他の処理デバイスが、機能を実行するようにプログラムされ得る。「ように構成された」は、装置要素が、定義された動作を与えるために、いかなる意味でも変更される必要があることを暗示しない。
本明細書では、添付の図面を参照しながら、例示的な実施例について詳細に説明したが、本発明は、それらの正確な実施例に限定されないこと、及び添付の特許請求の範囲によって定義される本発明の範囲から逸脱することなく、様々な変更、追加、及び修正が当業者によってその中で実施され得ることを理解されたい。たとえば、本発明の範囲から逸脱することなく、従属請求項の特徴の様々な組合せが、独立請求項の特徴と共に行われ得る。

Claims (22)

  1. 装置であって、
    命令シーケンスに応答してデータ処理動作を実行するためのデータ処理回路であって、前記命令シーケンスが分岐命令を含む、データ処理回路と、
    前記データ処理動作を示すトレース項目のトレース・ストリームを生成するためのトレース生成回路とを備え、
    前記トレース生成回路が、前記命令シーケンス中の1つ又は複数の不成立分岐命令、及び後続の成立分岐命令に応答して、
    前記装置の現在のステータス条件が満たされるとき、前記1つ又は複数の不成立分岐命令に対応する少なくとも1つの不成立トレース項目、及び後続の成立トレース項目を前記トレース・ストリーム中に含めることと、
    前記装置の前記現在のステータス条件が満たされないとき、前記成立分岐命令に関連付けられたソース・アドレスを前記トレース・ストリーム中に含めることと
    を行う、装置。
  2. 前記現在のステータス条件が前記1つ又は複数の不成立分岐命令の多重度を含む、請求項1に記載の装置。
  3. 前記装置の前記現在のステータス条件は、前記多重度がしきい値よりも小さいことである、請求項2に記載の装置。
  4. 不成立分岐命令に応答して増分する不成立カウンタをさらに備える、請求項3に記載の装置。
  5. 前記不成立カウンタが、前記しきい値において飽和するように構成された飽和カウンタである、請求項4に記載の装置。
  6. 前記不成立カウンタが1ビット記憶要素を備える、請求項4又は請求項5に記載の装置。
  7. 前記不成立カウンタが複数ビット記憶要素を備える、請求項4又は請求項5に記載の装置。
  8. 前記トレースするトレース生成回路は、前記命令シーケンス中の前記成立分岐命令に応答して、前記装置の前記現在のステータス条件が満たされるとき、前記不成立カウンタが示す数と同数の不成立トレース項目を前記トレース・ストリーム中に含める、請求項4から7までのいずれか一項に記載の装置。
  9. 前記トレースするトレース生成回路は、前記データ処理回路における例外の発生に応答して、前記例外が発生した、前記命令シーケンス中のポイントを示す例外トレース項目を前記トレース・ストリーム中に含め、前記不成立カウンタをリセットする、請求項4から8までのいずれか一項に記載の装置。
  10. 前記トレースするトレース生成回路は、前記データ処理回路における例外の発生に応答して、前記不成立カウンタが示す数と同数の不成立トレース項目を前記トレース・ストリーム中に含める、請求項9に記載の装置。
  11. 前記しきい値が、前記装置のための所定の静的な値である、請求項3から10までのいずれか一項に記載の装置。
  12. 前記しきい値が可変値である、請求項3から10までのいずれか一項に記載の装置。
  13. 前記トレース生成回路が、前記装置のための現在のリソース使用指示に応答して、前記しきい値を動的に設定する、請求項12に記載の装置。
  14. 前記装置のための前記現在のリソース使用指示が前記装置における記憶要素の現在の占有率を示す、請求項13に記載の装置。
  15. 前記装置の前記現在のステータス条件が前記装置における記憶要素の現在の占有率を含む、請求項1から14までのいずれか一項に記載の装置。
  16. 前記成立トレース項目は、前記成立分岐命令のための分岐が成立したという指示である、請求項1から15までのいずれか一項に記載の装置。
  17. 前記成立トレース項目が、前記分岐命令に関連付けられた前記ソース・アドレスである、請求項1から15までのいずれか一項に記載の装置。
  18. 前記成立トレース項目は、前記分岐命令に関連付けられた前記ソース・アドレスの後に、前記成立分岐命令のための分岐が成立したという指示である、請求項1から15までのいずれか一項に記載の装置。
  19. 前記成立トレース項目は、前記分岐が間接分岐であるときに、前記分岐のためのターゲット・アドレスの指示をさらに含む、請求項1から18までのいずれか一項に記載の装置。
  20. 前記トレース生成回路は、前記データ処理回路がパフォーマンス改善プロシージャにおいて前記命令シーケンスから少なくとも1つの分岐命令を削除したという指示に応答して、前記装置の前記現在のステータス条件が満たされないことを決定する、請求項1から19までのいずれか一項に記載の装置。
  21. 装置を動作させる方法であって、
    命令シーケンスに応答してデータ処理動作を実行することであって、前記命令シーケンスが分岐命令を含む、データ処理動作を実行することと、
    前記データ処理動作を示すトレース項目のトレース・ストリームを生成することとを含み、
    1つ又は複数の不成立分岐命令が前記命令シーケンス中の成立分岐命令の前に来るとき、前記データ処理動作を示す前記トレース項目のトレース・ストリームを生成することが、
    前記装置の現在のステータス条件が満たされるとき、前記1つ又は複数の不成立分岐命令に対応する少なくとも1つの不成立トレース項目、及び後続の成立トレース項目を前記トレース・ストリーム中に含めることと、
    前記装置の現在のステータス条件、前記装置の前記現在のステータス条件が満たされないとき、前記成立分岐命令に関連付けられたソース・アドレスを前記トレース・ストリーム中に含めることと
    を含む、方法。
  22. 命令シーケンスに応答してデータ処理動作を実行するための手段であって、前記命令シーケンスが分岐命令を含む、データ処理動作を実行するための手段と、
    前記データ処理動作を示すトレース項目のトレース・ストリームを生成するための手段とを備え、
    1つ又は複数の不成立分岐命令が前記命令シーケンス中の成立分岐命令の前に来るとき、前記生成するための手段が、
    前記装置の現在のステータス条件が満たされるとき、前記1つ又は複数の不成立分岐命令に対応する少なくとも1つの不成立トレース項目、及び後続の成立トレース項目を前記トレース・ストリーム中に含めるための手段と、
    前記装置の前記現在のステータス条件が満たされないとき、前記成立分岐命令に関連付けられたソース・アドレスを前記トレース・ストリーム中に含めるための手段と
    をアクティブ化する、装置。
JP2020546453A 2018-03-13 2019-03-05 分岐命令のトレース Active JP7361040B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1803991.7A GB2571947B (en) 2018-03-13 2018-03-13 Tracing branch instructions
GB1803991.7 2018-03-13
PCT/GB2019/050606 WO2019175540A1 (en) 2018-03-13 2019-03-05 Tracing branch instructions

Publications (2)

Publication Number Publication Date
JP2021517298A true JP2021517298A (ja) 2021-07-15
JP7361040B2 JP7361040B2 (ja) 2023-10-13

Family

ID=61972700

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020546453A Active JP7361040B2 (ja) 2018-03-13 2019-03-05 分岐命令のトレース

Country Status (7)

Country Link
US (1) US11275670B2 (ja)
EP (1) EP3765963B8 (ja)
JP (1) JP7361040B2 (ja)
KR (1) KR20200128702A (ja)
CN (1) CN111819551A (ja)
GB (1) GB2571947B (ja)
WO (1) WO2019175540A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11822468B2 (en) 2019-05-24 2023-11-21 Microsoft Technology Licensing, Llc Executable code branch annotations for objective branch verification
US20220308878A1 (en) * 2021-03-29 2022-09-29 SiFive, Inc. Branch-History Mode Trace Encoder
US11803440B2 (en) * 2021-09-30 2023-10-31 Vmware, Inc. Automated methods and systems for troubleshooting and optimizing performance of applications running in a distributed computing system

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5622151A (en) * 1979-07-31 1981-03-02 Fujitsu Ltd Branch address recording system
JP2007323636A (ja) * 2006-05-30 2007-12-13 Arm Ltd 命令の追跡中に作られるデータ・ストリームの大きさの削減
US20120005463A1 (en) * 2010-06-30 2012-01-05 International Business Machines Corporation Branch trace history compression
JP2015064865A (ja) * 2013-08-29 2015-04-09 株式会社デンソー マイクロコンピュータ

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7062684B2 (en) * 2002-12-19 2006-06-13 International Business Machines Corporation Enabling tracing of a repeat instruction
US7984337B2 (en) * 2009-02-19 2011-07-19 Freescale Semiconductor, Inc. Address translation trace message generation for debug
US8484517B2 (en) * 2009-12-03 2013-07-09 Infineon Technologies Ag High compression program flow trace
US9753832B2 (en) * 2013-06-28 2017-09-05 Intel Corporation Minimizing bandwith to compress output stream in instruction tracing systems
US20160378636A1 (en) * 2015-06-26 2016-12-29 Intel Corporation Software-Initiated Trace Integrated with Hardware Trace
CN107045474B (zh) * 2016-02-05 2020-12-04 阿里巴巴集团控股有限公司 一种Fuzz测试中的程序流跟踪方法及装置
GB2551574B (en) * 2016-06-24 2019-11-27 Advanced Risc Mach Ltd An apparatus and method for generating and processing a trace stream indicative of instruction execution by processing circuitry

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5622151A (en) * 1979-07-31 1981-03-02 Fujitsu Ltd Branch address recording system
JP2007323636A (ja) * 2006-05-30 2007-12-13 Arm Ltd 命令の追跡中に作られるデータ・ストリームの大きさの削減
US20070294592A1 (en) * 2006-05-30 2007-12-20 Arm Limited Reducing the size of a data stream produced during instruction tracing
US20120005463A1 (en) * 2010-06-30 2012-01-05 International Business Machines Corporation Branch trace history compression
JP2015064865A (ja) * 2013-08-29 2015-04-09 株式会社デンソー マイクロコンピュータ

Also Published As

Publication number Publication date
US20200371891A1 (en) 2020-11-26
CN111819551A (zh) 2020-10-23
GB2571947B (en) 2020-09-16
WO2019175540A1 (en) 2019-09-19
GB2571947A (en) 2019-09-18
EP3765963B8 (en) 2022-06-15
EP3765963A1 (en) 2021-01-20
KR20200128702A (ko) 2020-11-16
EP3765963B1 (en) 2022-05-04
US11275670B2 (en) 2022-03-15
GB201803991D0 (en) 2018-04-25
JP7361040B2 (ja) 2023-10-13

Similar Documents

Publication Publication Date Title
JP2021517298A (ja) 分岐命令のトレース
US9639361B2 (en) Tracing speculatively executed instructions
JP6017260B2 (ja) マルチスレッドプロセッサ
US8799719B2 (en) On demand tracing of application code execution
US9396096B2 (en) Android automated cross-application testing device and method
US9098350B2 (en) Adaptive auto-pipelining for stream processing applications
JP2011086298A (ja) プログラム・フロー制御
KR20180034508A (ko) 데이터 처리
CN106095606B (zh) 一种服务器的软件故障处理方法和装置
US11847207B2 (en) Security-adaptive code execution
US10599554B2 (en) Dynamic instrumentation based on detected errors
CN110968404B (zh) 一种设备数据处理方法及装置
CN111045730A (zh) 一种用于risc-v架构的硬件快速中断处理系统及其方法
JP2018163656A (ja) 追跡データ表現
US7318222B2 (en) Methods for execution control acquistion of a program and for executing an optimized version of a program
US20190012174A1 (en) Branch instruction
JP5686259B2 (ja) 再構成可能デバイスの高信頼化装置、高信頼化方法及び高信頼化プログラム
JP2008171119A (ja) 端末機器の不具合検出システム、その方法およびプログラム
CN112416665A (zh) 检测处理器运行状态的装置和方法
JP4747028B2 (ja) マイクロプロセッサ及びこれを用いた情報処理方法並びにプログラム
CN116893955A (zh) 用于测试分布到多个程序上的数据处理的方法、数据处理组件、计算机程序和介质
KR20190125774A (ko) 프로그램 버그 발생 인자 결정 장치 및 그 방법
JP2002304303A (ja) 例外処理方法
JPS6381534A (ja) プログラム変換方式
JP2009070152A (ja) 情報保存装置、情報保存方法、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220225

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230310

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230609

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231002

R150 Certificate of patent or registration of utility model

Ref document number: 7361040

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150