JP7026107B2 - 処理回路素子に対するトリガ信号のアサーションを制御する装置及び方法 - Google Patents

処理回路素子に対するトリガ信号のアサーションを制御する装置及び方法 Download PDF

Info

Publication number
JP7026107B2
JP7026107B2 JP2019510437A JP2019510437A JP7026107B2 JP 7026107 B2 JP7026107 B2 JP 7026107B2 JP 2019510437 A JP2019510437 A JP 2019510437A JP 2019510437 A JP2019510437 A JP 2019510437A JP 7026107 B2 JP7026107 B2 JP 7026107B2
Authority
JP
Japan
Prior art keywords
circuit element
program instruction
information
event
evaluation
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
JP2019510437A
Other languages
English (en)
Other versions
JP2019531542A (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 JP2019531542A publication Critical patent/JP2019531542A/ja
Application granted granted Critical
Publication of JP7026107B2 publication Critical patent/JP7026107B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • 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/348Circuit details, i.e. tracer hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
    • 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
    • G06F11/364Software debugging by tracing the execution of the program tracing values on a bus
    • 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
    • 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
    • G06F11/3656Software debugging using additional hardware using a specific debug interface
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • 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
    • 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Debugging And Monitoring (AREA)
  • Microcomputers (AREA)
  • Image Processing (AREA)

Description

本技術は、処理回路素子に対するトリガ信号のアサーションを制御する装置及び方法に関する。
処理回路素子からプログラム命令実行情報を受信するように配置することができる関連の監視回路素子を処理回路素子に設けることが知られている。監視回路素子は、監視されるべき特定の情報値を用いてプログラムすることができ、それらのプログラムされた情報値に関して処理回路素子から受信されたプログラム命令実行情報を分析することによって、処理回路素子に戻すトリガ信号をいつアサートするかを決定することができる。
一例として、監視回路素子は、1つ又は複数のプログラムされたウォッチポイント値を有するウォッチポイント回路素子の形をとってもよく、受信されたプログラム命令実行情報を監視することによって、監視回路素子は、それらのウォッチポイント値がいつ検出されるかを判定し、処理回路素子に戻すウォッチポイント信号をアサートすることができる。次いで、処理回路素子は、ウォッチポイント信号に応答して、たとえば適切な例外ルーチンを実行するための割り込みをとることによって、所定のアクションを行うことができる。
処理回路が複雑さを増し、それらがサポートする機能が増えるにつれて、処理回路素子のさらに複雑な挙動の監視を可能にするために、そのような監視回路の機能の改善が望まれることになる。
1つの例示的構成では、処理回路素子によって実行されるプログラム命令を示すプログラム命令実行情報を受信し、プログラム命令実行情報がトリガ条件の存在を示すかどうかを評価情報を参照して判定するために評価動作を実行するための評価回路素子と、前記トリガ条件が存在すると判定されたかどうかに応じて処理回路素子に対するトリガ信号をアサートするためのトリガ信号生成回路素子と、処理回路素子内で発生する少なくとも1つのイベントを示すイベント情報を受信し、資格条件が存在するかどうかをフィルタ制御情報及び前記イベント情報を参照して判定するためのフィルタ回路素子とを備えた装置が提供され、フィルタ回路素子は、資格条件がないと判定すると、トリガ条件の存在がトリガ信号生成回路素子に通知されることを防ぐように配置される。
もう1つの例示的構成では、処理回路素子に対するトリガ信号のアサーションを制御するための装置を動作させる方法が提供され、この方法は、処理回路素子によって実行されるプログラム命令を示すプログラム命令実行情報を受信し、プログラム命令実行情報がトリガ条件の存在を示すかどうかを評価情報を参照して判定するために評価動作を実行することと、前記トリガ条件が存在すると判定されたかどうかに応じて処理回路素子に対するトリガ信号をアサートすることと、処理回路素子内で発生する少なくとも1つのイベントを示すイベント情報を受信し、資格条件が存在するかどうかをフィルタ制御情報及び前記イベント情報を参照して判定することと、資格条件がないと判定した場合、トリガ信号をアサートするかどうかを決定する際にトリガ条件の存在が考慮されることを防ぐことを含む。
さらなる例示的構成では、処理回路素子によって実行されるプログラム命令を示すプログラム命令実行情報を受信し、プログラム命令実行情報がトリガ条件の存在を示すかどうかを評価情報を参照して判定するために評価動作を実行する評価手段と、前記トリガ条件が存在すると判定されたかどうかに応じて処理回路素子に対するトリガ信号をアサートするためのトリガ信号生成手段と、処理回路素子内で発生する少なくとも1つのイベントを示すイベント情報を受信し、資格条件が存在するかどうかをフィルタ制御情報及び前記イベント情報を参照して判定するためのフィルタ手段とを備えた装置が提供され、フィルタ手段は、資格条件がないと判定した場合、トリガ条件の存在がトリガ信号生成手段に通知されることを防ぐ。
本技術が、以下の添付の図面に示すようなその実施例を参照して、単に実例として、さらに説明される。
一実施例による監視回路素子を含むシステムのブロック図である。 一実施例による監視回路素子内で提供される構成要素を示すブロック図である。 一実施例による監視回路素子の各比較/フィルタ・ブロック内で提供される構成要素をより詳細に示す図である。 一実施例による各比較/フィルタ・ブロックの動作を示すフロー図である。 一代替実施例による監視回路素子の配置を示す図である。 一実施例による図5の監視回路素子を使用するときの各比較/フィルタ・ブロックの動作を示すフロー図である。 さらに追加の代替実施例による監視回路素子の配置を示す図である。 一実施例による図7の監視回路素子を使用するときの各比較/フィルタ・ブロックの動作を示すフロー図である。
添付の図面を参照して実施例を論じる前に、以下に実施例の説明を行う。
1つの実施例では、プログラム命令実行情報が処理回路素子によって実行されるプログラム命令を示す、関連処理回路素子からプログラム命令実行情報を受信するために評価回路素子を備えた装置が提供される。評価回路素子は、次いで、プログラム命令実行情報がトリガ条件の存在を示すかどうかを評価情報を参照して判定するために評価動作を実行するように配置される。1つの実施例では、評価情報は、プログラム命令実行情報のどのような値又はプログラム命令実行情報のどのような値の範囲がトリガ条件の存在を示すものとして判定されることになるかを識別するために、評価回路素子内に予めプログラムすることができる。
本装置はまた、トリガ条件が存在すると判定されたかどうかに応じて処理回路素子に対するトリガ信号をアサートするために、トリガ信号生成回路素子を含む。1つの実施例では、評価回路素子の複数のインスタンスが存在することがあり、トリガ信号生成回路素子は、トリガ信号をアサートするかどうかを決定するときにそれらの評価回路の各々から受信される信号を考慮することができる。
1つの実施例の装置はさらに、処理回路素子内で発生する少なくとも1つのイベントを示すイベント情報を受信するためにフィルタ回路素子を含み、フィルタ制御情報及びそのイベント情報を参照して資格条件が存在するかどうかを判定するように配置される。評価情報と同様に、1つの実施例において、フィルタ制御情報は、予めプログラムすることができ、資格条件が存在すると判定するために存在する必要がある任意のイベントを識別するために使用される。
フィルタ回路素子は、次いで、資格条件がないと判定した場合、トリガ条件の存在がトリガ信号生成回路素子に通知されることを防ぐように配置される。結果として、フィルタ回路素子は、フィルタ回路素子によって課された任意のイベント制約もまた満たされているかどうかに応じてトリガ信号生成回路素子にトリガ条件の通知を行うことによって、評価回路素子によるトリガ条件の存在の検出のどのインスタンスが実際にトリガ信号生成回路素子に通知されるかをフィルタするように動作することができる。
これにより、関連処理回路素子内で複雑な組合せの挙動を監視して、それに応じてトリガ信号を発行する、非常に強力な機構を提供する。具体的には、プログラム命令実行情報は、通常は、プログラム命令の実行の直接的結果である情報を提供することになる。1つの実例では、プログラム命令実行情報は、以下のうちの少なくとも1つを提供する:処理回路素子によって実行されるプログラム命令の命令アドレスと、プログラム命令を実行するときにアクセスされるデータ値のアドレスと、プログラム命令を実行するときにアクセスされるデータ値。
一方、イベント情報は、多種多様な異なる形をとることができ、評価回路素子によって評価されているプログラム命令の実行によって直接定義されないイベントに関連し得る。したがって、イベント情報は、たとえば、受信されたプログラム命令実行情報が評価回路素子にトリガ条件の存在を判定させることになるとき、フィルタ制御情報内にエンコードされた少なくとも1つのアーキテクチャ又はマイクロアーキテクチャイベントもまた存在する場合にのみ、これが実際にトリガ信号生成回路素子に通知されるように、フィルタ制御情報が設定可能な、任意の所望の数のアーキテクチャ又はマイクロアーキテクチャイベントに関する情報を含み得る。
このような手法が大きな利益を与えうる多数の実例が存在する。たとえば、1つの実施例では、処理回路素子は、プログラム命令のシーケンスを実行するように配置することができ、前記シーケンスは、前記シーケンス内の識別されたプログラム命令を示す分岐挙動設定プログラム命令を含み、分岐挙動設定プログラム命令の実行は、識別されたプログラム命令に前記シーケンス内で遭遇したときに分岐挙動設定プログラム命令によって識別された目標アドレスに処理回路素子を分岐させる前記識別されたプログラム命令に分岐挙動が関連付けられることを可能にする。このような実施例では、イベント情報によって示されるイベントは、分岐挙動設定プログラム命令の以前の実行により前記識別されたプログラム命令に遭遇したときに処理回路素子によって分岐がいつ行われたかを識別することができる。
具体的実例として、このような実施例では、評価回路素子が、プログラム命令実行情報を監視して、プログラム・シーケンスにおいてその識別されたプログラム命令にいつ遭遇するかを判定するように、評価回路素子及びフィルタ回路素子が配置され得るが、フィルタ回路素子がまた、分岐挙動設定プログラム命令の以前の実行によりその識別されたプログラム命令に遭遇したときに処理回路素子によって分岐が行われたとさらに判定した場合にのみ、トリガ信号生成回路素子は、そのトリガ条件を通知されることになる、ことが理解されよう。これは、処理回路素子の非常に具体的な挙動が監視されることを可能にする。
しかしながら、フィルタ回路素子によって監視されるイベントは、そのような分岐挙動設定プログラム命令の使用に関連している必要はなく、そうではなくて、フィルタ回路素子内のフィルタ制御情報は、任意の所望のイベント、たとえばキャッシュ・ミス、又は、リソース・コンフリクト、ストールなどの他のパフォーマンス関連イベント、を監視するようにプログラムすることができる。資格条件が存在するか否かをフィルタ回路素子が判定することができるように、そのようなイベントの発生は、次いで、受信されたイベント情報を介してフィルタ回路素子に報告されることになる。
フィルタ回路素子は、資格条件が満たされていないときにトリガ条件がトリガ信号生成回路素子に通知されることを防ぐような様々な異なる方法で構成することができる。1つの実施例では、評価回路素子は、トリガ条件の存在が判定されたどうかを示す出力信号を発行するように配置され、フィルタ回路素子は、前記出力信号を受信し、置換出力信号を生成するように配置される。前記資格条件が存在する場合、フィルタ回路素子は、前記置換出力信号を前記出力信号とマッチさせ、前記資格条件がない場合、フィルタ回路素子は、前記置換出力信号にトリガ条件はないことを示させる。したがって、このような実施例では、フィルタ回路素子は、資格条件が満たされているか否かに応じて評価回路素子からの出力信号を選択的に修正する。具体的には、資格条件がない場合、フィルタ回路素子は、トリガ条件が評価回路素子によって検出されたか否かにかかわらず、置換出力信号がトリガ条件はないことを示すように、評価回路素子からの出力信号をオーバーライドすることになる。
一代替実施例において、フィルタ回路素子は、評価回路素子によって使用される有効化信号を制御するように配置され得る。具体的には、1つの実施例において、フィルタ回路素子は、資格条件が存在するときにアサートされ資格条件がないときにデアサートされる評価回路素子の有効化信号を生成するように配置される。評価回路素子は、有効化信号がアサートされるとき、評価動作を実行し、前記トリガ条件の存在が判定されたかどうかを示す出力信号を発行するように配置されるが、有効化信号がデアサートされるときには、出力信号がトリガ条件はないことを示すように配置される。したがって、有効化信号がフィルタ回路素子によってデアサートされるときには、評価回路素子出力信号は、トリガ条件がないことを示すことになり、そのような状況では、評価動作は評価回路素子によって実行されない。
さらなる代替物として、評価回路素子がトリガ条件の存在を判定することを防ぐように、フィルタ回路素子は、前記資格条件がない場合、プログラム命令実行情報及び評価情報のうちの1つを修正するように配置され得る。
1つの実施例では、資格条件が存在しないことを検出したとき、フィルタ回路素子は、プログラム命令実行情報がどのような有効値をとっても、評価回路素子によってトリガ条件を検出させない形をとるように評価情報を修正することができ、代替実施例では、フィルタ回路素子は、プログラム命令実行情報が評価回路素子によって考慮される前に、プログラム命令実行情報を修正する。
具体的には、フィルタ回路素子は、評価回路素子によって評価されるプログラム命令実行情報を選択的に修正するように配置され得る。1つの実施例では、フィルタ回路素子は、処理回路素子による出力としてプログラム命令実行情報を受信し、評価回路素子に対する入力用の置換プログラム命令実行情報を生成するように配置される。前記資格条件が存在する場合、フィルタ回路素子は、前記置換プログラム命令実行情報を処理回路素子による出力としてのプログラム命令実行情報とマッチさせ、前記資格条件がない場合、フィルタ回路素子は、前記置換プログラム命令実行情報に、評価回路素子がトリガ条件の存在を判定することを防ぐ形をとらせる。したがって、このような実施例では、資格条件がないとき、フィルタ回路素子は、評価回路素子がその評価動作を実行するときに評価回路素子によってマッチが検出されることをその場合に可能にしないことが知られている形をプログラム命令実行情報がとるように、プログラム命令実行情報を修正するように配置され得る。たとえば、受信されたプログラム命令実行情報は、評価回路素子がその評価動作を実行するときに評価回路素子によってトリガ条件が検出される結果をもたらさないことがその場合に知られている不正な値をとるように修正され得る。
評価情報及びフィルタ制御情報がそれぞれ評価回路素子及びフィルタ回路素子によって使用するために提供され得る、いくつかの方法が存在する。1つの実施例では、本装置はさらに、評価情報及びフィルタ制御情報を記憶するように構成されたストレージを備える。1つの実施例では、ストレージの内容は、たとえば、処理回路素子によって実行されるプログラム命令のシーケンス上でデバッグ動作を実行しようとするデバッガ・アプリケーションのユーザによって、プログラム可能である。評価情報及びフィルタ制御情報の両方の使用を介して、非常に対象を絞った挙動が、監視可能であり、特定の命令実行挙動のみならず、処理回路素子内で起こる1つ又は複数の他のイベントと一致するその命令実行挙動の特定のインスタンスが監視されることを可能にする。
1つの実施例では、本装置はさらに、少なくとも1つのさらなる評価回路素子を備え、各さらなる評価回路素子は、前記プログラム命令実行情報を受信し、プログラム命令実行情報がさらなるトリガ条件の存在を示すかどうかを関連の評価情報を参照して判定するように配置される。トリガ信号生成回路素子は、次いで、前記トリガ条件及び各前記さらなるトリガ条件のうちの少なくとも1つが存在すると判定されたかどうかに応じて処理回路素子に対するトリガ信号をアサートするように配置される。したがって、トリガ信号生成回路素子にトリガ信号をアサートすることが適切かどうかを判定するときに、複数の評価回路からのトリガ条件を考慮することができる。
1つの実施例では、本装置は、少なくとも1つのさらなるフィルタリング回路素子をさらに備え、各さらなるフィルタ回路素子は、さらなる評価回路素子と関連付けられ、前記イベント情報を受信し、さらなる資格条件が存在するかどうかを関連のフィルタ制御情報及び前記イベント情報を参照して判定するように配置される。さらなる資格条件がないと判定すると、さらなるフィルタ回路素子は、関連するさらなる評価回路素子によって判定されたさらなるトリガ条件の存在がトリガ信号生成回路素子に通知されるのを防ぐ。
1つの実施例では、本装置は、評価回路素子によって発行された出力信号から導出された第1の入力信号及びさらなる評価回路素子によって発行された出力信号から導出されたさらなる入力信号を受信し、前記トリガ信号生成回路素子に提供される結合された出力信号を生成するために前記第1の及びさらなる入力信号で論理演算を実行するように配置された結合回路素子をさらに備える。
したがって、複数の評価回路からのトリガ条件は、トリガ信号生成回路素子にトリガ信号をアサートすることが適切かどうかを判定するときに、論理的に結合され得る。このような手法は、たとえば、トリガ条件が命令アドレス、データ・アドレス又はデータ値の範囲について検出されることを可能にする。しかしながら、フィルタ回路素子によって監視される少なくとも1つのイベントの存在に応じてトリガ信号のアサーションが行われるように、再び、フィルタ回路素子が、任意のこのようなトリガ条件を制限するために使用され得る。複数の評価回路が、次いで、関連フィルタ回路素子の動作によって制限されたそれらのトリガ条件を有することができるように、さらなる評価回路のうちの1つ又は複数がまた、関連フィルタリング回路を提供され得る。
結合回路素子によって受信された入力信号は、関連評価回路によって発行された出力信号と直接対応し得るが、これは、どのようにフィルタ回路素子が評価回路素子の挙動を修正するように構成されるかに依存することになる。たとえば、1つの実施例では、フィルタ回路素子が関連評価回路からの出力信号を選択的に修正する場合、結合回路素子によって受信された入力信号は関連フィルタリング回路によって実装されるフィルタリング機能により、関連評価回路によって発行された出力信号と直接対応しないことがあることが理解されよう。
評価回路素子は、様々な形をとることができるが、1つの実施例では、比較回路素子を備え、前記評価情報はマッチ値を含み、比較回路素子は、トリガ条件が存在するかどうかを判定するために、プログラム命令実行情報の選択された部分(たとえば、命令アドレス、データ・アドレス、又はデータ値)をマッチ値と比較するように配置される。
1つの実施例では、フィルタ制御情報は、少なくとも1つのイベントの発生が資格条件の存在を判定するために必要とされるかどうかを識別する。フィルタ制御情報は、1つ又は複数の特定のイベントが存在することを必要とするように資格条件を制約することができるが、1つの実施例では、フィルタリング動作を効果的に回避する利用可能なフィルタ制御情報の設定もまた存在し、関連評価回路素子によるトリガ条件の任意の発生がトリガ信号生成回路素子に向けて伝播されることを可能にする。
トリガ信号は、様々な形をとることができるが、1つの実施例では、アサートされると少なくとも1つのウォッチポイント条件の存在を処理回路素子に指示する、ウォッチポイント信号である。
ここで、図を参照して、特定の実施例を説明する。
図1は、1つの実施例によるシステムを示す図である。プログラム命令のシーケンスを実行するように配置された処理要素10が提供され、プログラム命令実行情報はそれらの命令の実行中に監視回路素子20に出力される。プログラム命令実行情報は、プログラム命令の実行の直接的結果である情報を提供する。たとえば、プログラム命令実行情報は、処理回路素子によって実行されるプログラム命令の命令アドレス、そのプログラム命令を実行するときにアクセスされるデータ値のアドレス、及び/又はそのプログラム命令を実行するときにアクセスされるデータ値を識別することができる。さらなる一実施例において、サイクルカウント値もまた、たとえばNビットカウンタ値を維持するラッピング・カウンタによって生成されるものとしての、プログラム命令実行情報内に含まれ得る。
監視回路素子20は、特定の値が観測されたときにトリガ信号が発行されてパス30を介して処理要素10に返されることを可能にするように、それらの値がそのプログラム命令実行情報内でいつ観測されるかを判定するためにプログラム命令実行情報を監視するように配置される。これは、様々な状況において、たとえば処理要素10によって処理されているプログラム・シーケンスをデバッグしようとするときに、有用に成り得る。
処理要素10は、様々な形をとることができるが、1つの実施例では、プログラム命令のシーケンスを実行するように配置されたプロセッサ・コアであり、プログラム命令実行情報25の分析から推定されたものとしてある種のプログラム実行挙動が発生するときに処理要素に対してトリガ信号を発行するためにプロセッサ・コアと共同して監視回路素子が提供される。1つの実施例では、監視回路素子は、ある種のウォッチポイント値でプログラムされ得る、及びプログラム命令実行情報内のそれらのウォッチポイント値の存在をその場合に監視することができる、デバッグ、ウォッチポイント及びトレース(DWT:debug, watchpoint and trace)回路素子の形をとる。トリガ信号は、その場合、様々なウォッチポイント値によってエンコードされたものとしてのウォッチポイント条件が検出されたときにアサートされるウォッチポイント信号の形をとることができる。監視回路素子20はまた、特定のブレイクポイント条件をエンコードするように配置することができ、本明細書において、ウォッチポイントという用語は、概してウォッチポイントとブレイクポイントとの両方を参照ために使用されることになる。
図1の説明を簡単にするために、監視回路素子20は、処理要素10とは別個なものとして示されている。しかしながら、いくつかの実施例では、監視回路素子20が処理要素10に対して物理的に別個の品目である必要はなく、実際に、いくつかのプロセッサ・コアでは、監視回路素子20は、たとえばプロセッサ・コアの実行パイプラインの端部に向けて位置付けられて、プロセッサ・コア内で提供され得る。
本明細書に記載の実施例によれば、プログラム命令実行情報の分析から検出され得るある特定のトリガ条件は、それらがイベント情報によって示されている1つ又は複数の所定のイベントと一致しない場合には、除去され得るように、処理要素10はさらに、監視回路素子20に対してパス35を介してイベント情報を発行するように配置される。
イベント情報は、関連プログラム命令実行情報が関連するプログラム命令の実行によって直接的に定義されないイベントに関連して、様々な異なる形をとることができる。様々なアーキテクチャ及びマイクロアーキテクチャイベントは、イベント情報内でエンコードすることができ、監視回路素子内に提供されたフィルタリング回路素子はプログラム命令実行情報の分析から検出されたトリガ条件の選択可能なフィルタリングを適用する。したがって、これは、単にプログラム命令実行情報の分析に依存するのではなくて関連処理要素10内の挙動の複雑な組合せとトリガ信号のアサーションが関連付けられることを可能にする。
したがって、パス35を介して監視回路素子20に経路指定されたイベント指示は、たとえば、関連プログラム命令実行情報がパス25を介して提供されている特定のプログラム命令の実行によって意図されていない、又はそのような実行と直接的に関連付けられていないイベントを示し得る。これらは、たとえば、実行パイプライン内のある種の命令の実行中に起こり得る、或いは、キャッシュ・ミス、たとえば命令キャッシュから命令をプリフェッチするときに発生し得た、又は特定の命令の実行によって指定されたデータにアクセスしようとするときに発生し得たキャッシュ・ミス、などの他のパフォーマンスに影響を与えるイベントであることもある、リソース・コンフリクト、機能停止などのパフォーマンス関連イベントでもよい。パス35を介して経路指定されたイベント指示に基づいて、記載の実施例によって提供される監視回路素子のフィルタリング機能の使用を介して、これは、特定のアドレスにおける命令が実行されること、特定のアドレスにおけるデータ値がアクセスされること、又は特定のデータ値がアクセスされることなど、特定の命令実行挙動を見て観測することだけでなく、その挙動が特定のイベントと一致するときにのみトリガ信号をアサートするようにそのような命令実行挙動の発生を適格とすることもまた監視回路素子が行えるようにする。したがって、これは、たとえば、特定の命令の実行が特定のパフォーマンスに影響を及ぼすイベントを引き起こすときにトリガ信号がアサートされることを可能にすることになる。
もう1つの実例として、プログラム命令のシーケンスが処理要素10によって実行されることは、分岐挙動設定プログラム命令の1つ又は複数の発生を含み得る。そのような分岐挙動設定プログラム命令の実行は、その分岐挙動設定プログラム命令によって識別される別のプログラム命令と分岐挙動が関連付けられることを可能にすることができ、その他のプログラム命令は、本明細書において、「識別されたプログラム命令」と称される。その識別されたプログラム命令の通常の実行挙動に加えて、又はその代替えとして、分岐挙動がその識別されたプログラム命令と関連付けられた場合、これは、その識別されたプログラム命令にプログラム・シーケンスにおいて遭遇したとき、分岐挙動設定プログラム命令によって識別された目標アドレスに処理回路素子を分岐させることになる。したがって、これは、分岐挙動設定プログラム命令によって識別された任意のプログラム命令と分岐挙動が関連付けられることを可能にすることができ、ある種のシナリオにおいてパフォーマンス利益を生じさせることができる。
分岐挙動設定プログラム命令は、様々な形をとることができる。1つの実施例では、それは、分岐挙動が関連付けられることが望まれる、プログラム・シーケンスにおいて後に出現する任意の命令を識別することができる分岐-未来命令でもよい。分岐挙動設定命令の実行が、前述の分岐挙動を識別されたプログラム命令と関連付けさせるとき、次いで、その識別されたプログラム命令に後に遭遇したときに、識別されたプログラム命令の通常の実行挙動の代わりに、又はそれに加えて分岐挙動が呼び出され得る。分岐挙動設定プログラム命令のもう1つの実例は、ゼロ・オーバーヘッド・ループ内で提供することができる最終命令である。この場合、識別されるプログラム命令は、ループ内の直ちに進行するプログラム命令にすることができ、目標アドレスは、ループの開始を指すことができる。最後から2番目の命令の通常の命令実行挙動を実行することに加えて、代わりにループ内のその最後から2番目の命令に遭遇したときに分岐挙動が直接トリガされるので、最終反復以外のループのすべての後続の反復において、ループ内の最終命令を再実行する必要がないように、ループ内の最後から2番目の命令と分岐挙動を関連付けるために、第1の反復の間に、ループの最後の分岐挙動設定プログラム命令が実行される。これは、重大なパフォーマンス利益を与えることができる。
このような分岐挙動設定プログラム命令の使用中に、識別されたプログラム命令と関連付けられる分岐挙動は、識別されたプログラム命令自体に確定的に関連付けられた挙動ではないが、そうではなくて、別のプログラム命令、すなわち分岐挙動設定プログラム命令、によってその識別されたプログラム命令と関連付けられた挙動であることが理解されよう。しかしながら、パス25を介するプログラム命令実行情報の監視と、パス35を介するイベント指示の監視との組合せを使用することによって、監視回路素子は、分岐挙動設定プログラム命令によって関連付けられたものとして分岐挙動が観測されることもまた生じさせる、識別されたプログラム命令の任意のインスタンスのトリガ信号をアサートするようにセットアップすることができる。したがって、これは、そのような分岐挙動設定プログラム命令を組み込むプログラム・シーケンスをデバッグしようとするときに非常に有用なツールを提供することができる。
図2は、1つの実施例における図1の監視回路素子20内で提供される要素をより詳細に示すブロック図である。複数の比較/フィルタ・ブロック100、105、110が提供され、各比較/フィルタ・ブロックは、比較回路素子115、125、135及びフィルタ回路素子120、130、140を含む。図2に示す実施例では、プログラム命令実行情報が様々な比較回路115、125、135に直接供給され、イベント指示がフィルタ回路120、130、140への入力として提供される。各比較回路素子は、プログラム命令実行情報の特定の項目を監視し、その項目の値が比較回路と関連して予め記憶されたマッチ値と一致したときに検出するように構成することができる。その値がマッチ値と一致したとき、これは、比較回路素子によってトリガ条件を検出させ、信号が、比較回路素子から出力され、そのトリガ条件の存在を示すことになる。
しかしながら、図2に示す監視回路素子のダウンストリーム構成要素150、155、160、170、175にトリガ条件出力信号が直接転送されるのではなくて、その信号は、先ず、フィルタ回路素子120、130、140によって処理される。具体的には、フィルタ回路素子が、任意の関連イベント制約が満たされているかどうかに応じて関連比較回路素子からトリガ条件信号の前方伝播を適格とするように配置され得る。具体的には、パス35を介して渡される様々なイベント指示は、各フィルタ回路に経路指定することができ、フィルタ回路は、受信されたイベント指示情報から予め指定されたイベントが存在すると判定された場合に資格条件は存在すると判定するように構成することができる。資格条件が存在するとき、比較回路素子からの出力は、監視回路素子内の残りの構成要素に単に伝播される。しかしながら、資格条件が存在しない場合、トリガ条件は伝播されず、代わりに、フィルタ回路素子からの出力は、トリガ条件は識別されなかったことを示す。
1つの実施例では、様々なフィルタ回路からの出力は、フィルタ回路からの受信された出力に応じてトリガ信号をアサートするように次いで配置することができるトリガ信号生成回路素子175への入力として直接経路指定することができる。1つの実施例では、トリガ信号生成回路素子は単純に、フィルタ回路からの出力のいずれかがアサートされる(すなわち、トリガ条件の検出を示す)場合にトリガ信号がアサートされるように、OR関数を実装することができる。
しかしながら、1つの実施例では、リンク制御ブロック150、155、160は、1ペアの比較器からの出力がリンクされることを可能にするために提供され得る。具体的には、リンク制御要素150、155は、フィルタ回路120、130からの出力を、トリガ信号生成回路素子に直接経路指定するのではなくて、結合回路素子170に経路指定するように配置され得る。リンク制御要素160は、さらなる比較/フィルタ・ブロックに関連付けられた別のリンク制御要素と、別の結合回路素子(図示せず)との組合せで同様に構成され得る。トリガ信号生成回路素子は、次いで、結合回路素子170から出力を受信する。結合回路素子は、それがリンク制御ブロック150、155から受信した1ペアの入力に論理組合せ動作を実行することができ、1つの実施例では、それらの2つの入力に「AND」関数を実行するように配置され得る。これは、プログラム命令実行情報の所定の項目の受信された値が範囲内にいつあるかを検出するように1ペアの比較回路が配置されることを可能にする。したがって、たとえば、比較回路素子115は、受信した値がある特定の指定されたマッチ値より大きいときにトリガ信号を発行することができ、一方、比較回路素子125は、受信した値が別の指定されたマッチ値未満であるときにトリガ信号を発行することができ、それにより、結合回路素子170は、両方の条件が満たされているときにはいつでも、すなわち、2つのマッチ値によって適格とされた指定された範囲内に受信した値がある場合には、トリガ信号をアサートすることになる。
記載されている実施例によれば、少なくとも1つのイベントも存在すると判定されたかどうかに応じて、比較回路によってエンコードされた範囲内で値が検出されることによりトリガ信号のアサーションが行われ得るように、フィルタ回路120、130のうちの1つ又は両方がまた、関連する比較回路からの出力にフィルタリング条件を適用するように配置され得る。
処理要素10は、関連プログラム命令実行情報がパス25を介して提供されることと、パス35を介するイベント指示の伝播を同期させるように何らかの必要とされる同期化動作を実行するように配置され得る。いくつかの実施例では正確な同期化は必要とされないことがあることにさらに留意されたい。実際、多数のDWTウォッチポイント機構は、不正確な性質を既に有し、記載の実施例のイベント指示を付加的に使用するときにこのようなDWTウォッチポイント機構の不正確な性質による何らかのずれは、問題にはならず、既存の挙動と実際に一致していることになろう。
トリガ信号が、トリガ信号生成回路素子175からアサートされるとき、処理要素10は、様々な方法で反応することができる。1つの実施例では、処理要素10は、プログラム・コードをさらに分析するために適切な例外処理ルーチンを実行させるように割り込みをとるように配置され得る。
図3は、何らかの関連リンク制御ブロック又は結合回路内に提供され得る構成要素とともに、各比較/フィルタ・ブロック内に提供された構成要素をさらに詳細に示すブロック図である。図3を目的として、図2の比較回路素子115及びフィルタ回路素子120が考慮されているが、1つの実施例では、その他の比較回路125、135及びフィルタ回路130、140の各々が、同じ方法で構築される。比較回路素子115は、マルチプレクサ210からの出力及びマッチ値レジスタ205からの出力を受信する比較器200を含む。制御レジスタ215は、制御情報を記憶するためのいくつかのフィールドを与えられている。フィールド220では、プログラム命令実行情報の所望の項目を比較器200に経路指定するように、マルチプレクサ210を制御するために使用される比較制御情報が与えられている。たとえば、1つの実施例では、それは、比較器が特定の命令がいつ実行されるかを判定しようとしている場合に比較器に命令アドレス情報を転送するように配置され得る。マッチ値レジスタ205は、次いで、前述の実例を考えると特定の命令アドレスでもよい、比較器によって比較されることになるマッチ値でプログラムされることになる。マルチプレクサ210からの出力がレジスタ205内のマッチ値とマッチしたとき、トリガ条件信号が、比較器200の出力においてアサートされる。
上記で論じた実例では比較器は入力において同等を探しているが、比較器はまた、他のタイプの比較、たとえばマルチプレクサ210からの入力がいつレジスタ205内の値より大きいか又はレジスタ205内の値より小さいかを判定すること、を実行するように配置することができる。
フィルタ回路素子120は、比較器回路素子200からの出力信号を受信するように、パス35を介して受信したイベント指示に応じてリンク制御ブロック150へのその信号の前方伝播を適格とするように配置される。1つの実施例では、フィルタ回路素子は、比較器200から出力信号を1つの入力として受信する、及びマルチプレクサ245からの出力信号を別の入力として受信する、ANDゲート240を含む。マルチプレクサ245は、様々なイベント指示信号を受信するように配置され、1つの実施例では、論理1値にセットされたさらなる入力も有する。制御レジスタ215のフィールド225内のフィルタ制御情報は、次いで、ANDゲート240に出力するための入力のうちの1つを選択するようにマルチプレクサ245を制御するために使用することができる。フィルタリングが必要とされないとき、トリガ条件が比較器の出力において論理1値でアサートされるときに、これがリンク制御ブロック150に直接経路指定されるように、フィルタ制御情報は、マルチプレクサ245へのハードワイヤード論理1入力をANDゲート240へ出力させることができる。しかしながら、別法として、フィルタ制御情報は特定のイベントを識別することができ、そのイベントが存在し、ゆえに、論理1値が関連イベント指示ラインでアサートされるときだけに、ANDゲート240が比較器からのアサートされたトリガ条件がリンク制御ブロック150へと伝播されることを可能にする。
リンク制御ブロック150は、次いで、制御レジスタ215のフィールド230内のリンクされた比較器制御値によって制御することができる。具体的には、比較回路素子115が、その隣接する比較回路素子とリンクされていない場合、次いで、制御フィールド230内の値は、パス252を介してリンク制御デマルチプレクサ250にその入力を出力させることになる。反対に、比較回路素子115がそれの隣接する比較回路素子125とリンクされている場合、フィールド230内の値は、デマルチプレクサ250に、それの入力として受信された信号をパス254を介して結合回路素子170へ経路指定させることになる。前述のように、1つの実施例では、アサートされたトリガ条件もまた隣接する比較/フィルタ・ブロック105から受信される場合にトリガ条件が単にトリガ信号生成回路素子にアサートされるように、結合回路素子は単に、ANDゲート260の形をとることができる。
必要に応じて、制御レジスタ215はまた、図3ではフィールド235によってまとめて示されている、さらなる制御情報を任意選択的に含むことができる。この制御情報は、様々な形をとることができ、たとえば、関連比較回路素子がどのように使用され得るかに関するいくらかの情報、受信されたプログラム命令実行情報の項目に関連するデータ・サイズなど、を提供する。
図3では、アサートされた信号は論理1値を有し、デアサートされた信号は論理0値を有する、と仮定されている。しかしながら、必要に応じて、論理1及び0値の意味は入れ替えることができ、論理ゲートはそれに応じて変更されることが、理解されよう。
図4は、1つの実施例による図3の回路素子の動作を示すフロー図である。ステップ300において、プログラム命令実行情報の受信が待たれ、受信すると、プログラム命令実行情報の関連項目がステップ305で選択され(比較制御情報220によって制御されるものとしてのマルチプレクサ210によって)、その選択された項目は、次いで、レジスタ205内のマッチ値と比較器200によって比較される。比較器200によって探されている比較条件が存在すると判定された場合、図4ではマッチが検出されることと呼ばれる(ステップ310を参照)、次いで、工程はステップ320に進み、そこでは、次いで、資格条件が満たされているかどうかが判定される。これは、マルチプレクサ245の出力によってANDゲート240の制御を介して評価される。資格条件が満たされている場合、次いで、アクティブ・トリガ信号がステップ325において伝播され、図3の実施例では、このアクティブ・トリガ信号は、次いで、リンク制御ブロック150によって受信されることになる。
しかしながら、マッチがステップ310で検出されない場合、又は、マッチは検出されたが、視覚情報は満たされていないと判定された場合、工程はステップ315に進み、そこでは、非アクティブ・トリガ信号が伝播される。
図2の前述の説明から明らかなように、必要に応じて、ステップ325、315で特定の比較/フィルタ・ブロックによって発行された任意のアクティブ又は非アクティブ・トリガ信号が、トリガ信号がトリガ信号生成回路素子175によって処理要素10へアサートして返されるべきかどうかを判定するために、他の比較/フィルタ・ブロックからの出力と論理的に結合され得る。
図5は、使用することができる監視回路素子の代替配置を示す。前述で論じた図2と図5の比較から、構造は非常に類似しているが、この実施例では、フィルタ回路は、比較回路からの出力にフィルタリング動作を実行するのではなくて、比較回路への有効化入力を適格とすることが理解されよう。したがって、この実施例では、各比較/フィルタ・ブロック350、355、360はフィルタ回路素子365、370、375を含み、各フィルタ回路素子は、様々なイベント指示を受信し、次いで、関連比較回路115、125、135の有効化信号を生成する。ここで、図6のフロー図を参照して、各比較/フィルタ・ブロックの動作について論じる。
ステップ400において、プログラム命令実行情報が待たれ、受信すると、フィルタ回路素子は、次いで、様々なイベント指示の評価を介して、資格条件が満たされているかどうかをステップ405において判定する。資格条件が満たされていない場合、次いで、比較回路素子に対する有効化信号はアサートされず、それにより、そうでない場合には比較回路素子によって実行されたであろうステップ425における比較動作を無効化する。結果として、比較回路素子からの出力信号は、アサートされていない状態に維持され、ステップ430において非アクティブ・トリガ信号を伝播させる。
ステップ405において資格条件が満たされていると判定された場合、次いで、ステップ410において比較回路素子がプログラム命令実行情報の関連項目を選択し、それをマッチ値と比較し、その後、ステップ415において、マッチが検出されたかどうかが判定される。検出されなかった場合、次いで、非アクティブ・トリガ信号がステップ430で伝播されるが、マッチ条件が存在すれば、アクティブ・トリガ信号がステップ420で伝播される。
図7は、受信されたプログラム命令実行情報が関連比較回路素子による比較動作を受ける前に、この受信されたプログラム命令実行情報に作用するためにフィルタ回路素子が使用される、さらなる代替実施例を示す。したがって、各比較/フィルタ・ブロック500、505、510は、プログラム命令実行情報を受信するフィルタ回路素子515、520、525を含み、その情報を関連比較回路素子115、125、135に提供する前に選択的に修正する。このような実施例における各比較/フィルタ・ブロックの動作について、図8を参照してここで論じる。
ステップ600において、プログラム命令実行情報が待たれ、受信したとき、フィルタ回路素子は、次いで、受信されたイベント指示の分析によって資格条件が満たされているかどうかをステップ605で判定する。満たされている場合、次いで、ステップ610で、プログラム命令実行情報が、比較回路素子に変更なく転送され、比較回路素子は、次いで、プログラム命令実行情報の関連する項目を選択し、それをマッチ値と比較する。マッチが、次いで、ステップ615で検出された場合、アクティブ・トリガ信号がステップ620で伝播されるが、そうでない場合、非アクティブ・トリガ信号がステップ635で伝播される。
ステップ605でフィルタ回路素子が資格条件が満たされていないと判定した場合、次いで、ステップ625で、フィルタ回路素子は、受信された命令実行情報を何らかの所定の方式で修正する。具体的には、目的は、関連比較回路素子によってマッチが検出される結果をもたらし得ない形をプログラム命令実行情報がその場合にとるように、フィルタ回路素子がプログラム命令実行情報を修正することである。たとえば、プログラム命令実行情報のある特定の不正な値が存在することがあり、フィルタ回路素子は、ステップ625でプログラム命令実行情報をそれらの不正な値にセットし得る。
ステップ630で、比較回路素子が、次いで、修正された命令実行情報を受信するとき、比較回路素子は、プログラム命令情報の関連項目を選択し、それを通常の方法でマッチ値と比較するが、命令実行情報に実行された修正により、マッチは検出されないことになる。結果として、工程は、ステップ635に進むことになり、そこで、非アクティブ・トリガ信号が伝播される。
前述の実施例から、記載された実施例のフィルタ回路素子の使用を介して、関連比較回路の動作が適格とされ得ることが分かる。したがって、比較器が、その通常の動作の間にマッチする(たとえば、プログラム・カウンタ値、データ・アドレス値又はデータ値のマッチに基づいて)場合、比較器は、関連イベントフィルタ条件もまた存在すると判定された場合に、アサートされたトリガ条件のみを発行することになる。イベントフィルタ条件が存在しない場合、次いで、関連比較器からのアサートされたトリガ条件は、抑制される。1つの実施例では、必要に応じてフィルタ機能をオフにできるようにするために、フィルタ制御情報は、比較回路からの出力のフィルタリングなしを効果的に適用するように設定することができる。
前述したように、リンクされた比較器とフィルタリング機能を結合させることが可能である。たとえば、リンクされたペア内の比較器のうちの1つがイベントでフィルタされる場合、全ウォッチポイント・トリガは、そのイベントを条件とされる。これにより、たとえば、アドレス範囲内で発生する何らかの指定されたイベントのウォッチポイントをトリガすることを可能にすることになる。
比較器条件及び両方のイベントがマッチした場合に対応するウォッチポイントのみがトリガされるように、リンクされたペア内の両方の比較器にフィルタリング条件を追加することもまた可能である。選ばれたイベントが異なる場合、それらのイベントのすべてが同時にアクティブであるときにのみウォッチポイントはトリガすることになる。これにより、たとえば、アドレス範囲内で2つのイベントが同時に起こるときにはいつでも、たとえば命令アドレスの特定の範囲内でキャッシュ・ミスイベントと同時に黙示的分岐が生じた場合に、ウォッチポイントをトリガすることを可能にすることになる。これは、低コストで非常に高機能の条件フィルタリングを可能にする。
特定の例示的使用事例として、以下のコードのセグメントを考える:
0x1000 BFX Rn @ 0x100C -> ???
0x1004...
0x1008...[分岐未来トリガ分岐がここで並行して生じる]
0x100C...
...
0x1054 BX Rn
この実例では、分岐-未来の実行(BFX:execution of the branch-future)命令により、命令アドレス0x100Cに関連付けられた未来分岐をセットアップし、この分岐は、レジスタRn内に含まれる知られていないロケーションに対してである。対応する分岐は、行われるならば、0x1008における命令の実行と並行して生じる(すなわち、この実施例では、プログラム・カウンタが0x100Cに更新されるときに、但しそのアドレスにおける命令の実行の前に、生じる)。分岐が行われない場合(本実装は、この分岐を行うか否かを自由に選択する)、対応する分岐命令で終了することもしないこともある潜在的に多数の命令を含むフォールバック・パスが辿られる。
このコードが望ましくない形で機能しているときにプログラマがこのコードをデバッグしたいと考えたと仮定する。これは、アドレス0x1008及び0x1054においてブレイクポイントを設定して必要な洞察を得ることを必要とすることになる。しかしながら、0x1008におけるブレイクポイントは、分岐-未来命令によってセットアップされた分岐が行われる場合にのみ必要である。
本明細書に記載されている提案されるDWT拡張は、これが、アドレス0x1054上の通常のブレイクポイントと、BFX命令によって確立された分岐挙動もまたそのロケーションで生じる場合にのみトリガすることになるアドレス0x1008上のブレイクポイントとを設定することによって行われることを可能にする。別法として、分岐-未来トリガ分岐細粒問題(たとえば、無効なプログラムの結果として、不良分岐-未来トリガ分岐が、予期されていないロケーションにおいて生じる)をプログラマが識別することを可能にし得る、アドレス範囲0x1000-0x1054内の任意のこのような分岐-未来トリガ分岐を分割するために、1ペアの比較器を使用することができる。
前述の実施例から、フィルタリング機能が非常に低コストで監視回路素子内に組み込まれ得ることが理解されよう。たとえば、監視回路素子はコアパイプラインの端部に置かれたDWT回路素子である状況を考えると、これは、アドレス及びデータ値をマッチさせる能力を既に有することになる。図3の再考察から、追加のフィルタ回路素子を組み込むためには、制御レジスタ215内のいくつかの追加のビット225によって制御される関連マルチプレクサ245を有するANDゲート240など、単純な論理関数を追加することのみが必要であることが、理解されよう。フィールド225内で必要とされるビットの数は、監視されているイベント指示の数に依存するが、1つの実施例では、制御レジスタ215内に2つの追加のビットのみを必要とし得る。そのとき、イベント指示を提供するDWTへのコアからの追加の信号を、それらの信号が既に存在しない場合に、提供することが単に必要とされる。これは、たとえば、イベントごとに単一のビット・ワイヤを含み得る。前述のように、遅延機構もまた、監視回路素子20によって受信されるときに関連プログラム命令情報とイベント情報を一致させるために、処理要素10内に実装され得る。
前述のように、このようなフィルタリング機能を比較機能と組み合わせることによって、これは、挙動の複雑な組合せが処理要素10内で監視されることを可能にし、これにより、プログラム開発者及び彼らが使用するツールに彼らのプログラム内の問題を診断する能力の改善をもたらす。
本願において、「構成される」という用語は、装置の要素は定義された動作を実行することができる構成を有することを意味するために使用される。これに関連して、「構成」は、ハードウェア又はソフトウェアの相互接続の配置又は方式を意味する。たとえば、装置は、定義された動作を提供する専用ハードウェアを有し得、或いはプロセッサ又は他の処理デバイスが、その機能を実行するようにプログラムされ得る。「ように構成される」は、装置要素が、定義された動作を提供するために任意の方法で変更される必要があることを暗示しない。
本発明の説明の実施例は、添付の図面を参照して詳細に本明細書で記述されているが、それらの正確な実施例に本発明は制限されないことと、様々な変更、追加、及び修正が、添付の特許請求の範囲によって定義されるものとしての本発明の範囲及び趣旨を逸脱することなく、その中で当業者によってもたらされ得ることと、を理解されたい。たとえば、従属請求の特徴の様々な組合せが、本発明の範囲を逸脱することなく、独立請求の特徴で行われ得る。

Claims (17)

  1. 処理回路素子によって実行されるプログラム命令を示すプログラム命令実行情報を受信し、前記プログラム命令実行情報がトリガ条件の存在を示すかどうかを評価情報を参照して判定するために評価動作を実行するための評価回路素子と、
    前記トリガ条件が存在すると判定されたかどうかに応じて前記処理回路素子に対するトリガ信号をアサートするためのトリガ信号生成回路素子と、
    前記処理回路素子内で発生する少なくとも1つのイベントを示すイベント情報を受信し、資格条件が存在するかどうかをフィルタ制御情報及び前記イベント情報を参照して判定するためのフィルタ回路素子と、
    を備えた装置であって、
    前記フィルタ回路素子が、前記資格条件がないと判定した場合、前記トリガ条件の前記存在が前記トリガ信号生成回路素子に通知されることを防ぐように配置され
    前記イベント情報によって示される前記少なくとも1つのイベントが、前記プログラム命令の実行によって直接定義されたイベントを除外し、
    前記処理回路素子が、プログラム命令のシーケンスを実行するように配置され、前記シーケンスが、前記シーケンス内の識別されたプログラム命令を示す分岐挙動設定プログラム命令を含み、前記分岐挙動設定プログラム命令の実行が、前記識別されたプログラム命令に前記シーケンス内で遭遇したときに前記分岐挙動設定プログラム命令によって識別された目標アドレスに前記処理回路素子を分岐させる前記識別されたプログラム命令と分岐挙動が関連付けられることを可能にし、
    前記イベント情報によって示されるイベントが、前記分岐挙動設定プログラム命令の以前の実行により前記識別されたプログラム命令に遭遇したときに前記処理回路素子によって分岐がいつ行われたかを識別する、装置。
  2. 前記評価回路素子が、前記トリガ条件の存在が判定されたかどうかを示す出力信号を発行するように配置され、
    前記フィルタ回路素子が、前記出力信号を受信し、置換出力信号を生成するように配置され、前記資格条件が存在する場合、前記フィルタ回路素子が、前記置換出力信号を前記出力信号とマッチさせ、前記資格条件がない場合、前記フィルタ回路素子が前記置換出力信号に、前記トリガ条件がないことを示させる、請求項1に記載の装置。
  3. 前記フィルタ回路素子が、前記資格条件が存在するときにアサートされ前記資格条件がないときにデアサートされる前記評価回路素子の有効化信号を生成するように配置され、
    前記評価回路素子が、前記有効化信号がアサートされるとき、前記評価動作を実行し、前記トリガ条件の存在が判定されたかどうかを示す出力信号を発行するように配置され、
    前記評価回路素子は、前記有効化信号がデアサートされるとき、前記出力信号が前記トリガ条件がないことを示すように配置される、請求項1に記載の装置。
  4. 前記フィルタ回路素子は、前記資格条件がない場合に、前記評価回路素子が前記トリガ条件の存在を判定することを防ぐように、前記プログラム命令実行情報及び前記評価情報のうちの1つを修正するように配置される、請求項1に記載の装置。
  5. 前記フィルタ回路素子が、前記処理回路素子による出力として前記プログラム命令実行情報を受信し、前記評価回路素子に対する入力用に置換プログラム命令実行情報を生成するように配置され、
    前記資格条件が存在する場合、前記フィルタ回路素子が、前記置換プログラム命令実行情報を前記処理回路素子による出力としての前記プログラム命令実行情報とマッチさせ、前記資格条件がない場合、前記フィルタ回路素子が、前記置換プログラム命令実行情報に、前記評価回路素子が前記トリガ条件の存在を判定することを防ぐ形をとらせる、請求項4に記載の装置。
  6. 前記評価情報及び前記フィルタ制御情報を記憶するように構成されたストレージ
    をさらに備える、請求項1から5までのいずれかに記載の装置。
  7. 少なくとも1つのさらなる評価回路素子をさらに備え、各さらなる評価回路素子が、前記プログラム命令実行情報を受信し、前記プログラム命令実行情報がさらなるトリガ条件の存在を示すかどうかを関連の評価情報を参照して判定するために評価動作を実行するように配置され、
    前記トリガ信号生成回路素子が、前記トリガ条件及び各前記さらなるトリガ条件のうちの少なくとも1つが存在すると判定されたかどうかに応じて前記処理回路素子に対するトリガ信号をアサートするように配置される、請求項1から6までのいずれかに記載の装置。
  8. 少なくとも1つのさらなるフィルタリング回路素子をさらに備え、各さらなるフィルタ回路素子がさらなる評価回路素子と関連付けられ、
    各さらなるフィルタ回路素子が、前記イベント情報を受信し、さらなる資格条件が存在するかどうかを関連のフィルタ制御情報及び前記イベント情報を参照して判定し、さらなる資格条件がないと判定すると、前記関連のさらなる評価回路素子によって判定された前記さらなるトリガ条件の前記存在が前記トリガ信号生成回路素子に通知されることを防ぐように配置される、請求項7に記載の装置。
  9. 前記評価回路素子によって発行された出力信号から導出された第1の入力信号、及びさらなる評価回路素子によって発行された出力信号から導出されたさらなる入力信号を受信し、前記トリガ信号生成回路素子に提供される結合された出力信号を生成するために前記第1の入力信号及び前記さらなる入力信号に論理演算を実行するように配置された結合回路素子をさらに備える、請求項7又は請求項8に記載の装置。
  10. 前記プログラム命令実行情報が、
    前記処理回路素子によって実行される前記プログラム命令の命令アドレスと、
    前記プログラム命令を実行するときにアクセスされるデータ値のアドレスと、
    前記プログラム命令を実行するときにアクセスされるデータ値と
    のうちの少なくとも1つを提供する、請求項1から9までのいずれかに記載の装置。
  11. 前記イベント情報によって示される前記少なくとも1つのイベントが、少なくとも1つのパフォーマンス関連イベントを含む、請求項に記載の装置。
  12. 前記少なくとも1つのパフォーマンス関連イベントが、少なくともキャッシュ・ミスイベントを含む、請求項11に記載の装置。
  13. 前記評価回路素子が比較回路素子を備え、前記評価情報がマッチ値を含み、前記比較回路素子が、前記トリガ条件が存在するかどうかを判定するために、前記プログラム命令実行情報の選択された部分を前記マッチ値と比較するように配置される、請求項1から12までのいずれかに記載の装置。
  14. 前記フィルタ制御情報が、前記資格条件の存在を判定するために少なくとも1つのイベントの発生が必要とされるかどうかを識別する、請求項1から13までのいずれかに記載の装置。
  15. 前記トリガ信号が、アサートされると少なくとも1つのウォッチポイント条件の存在を前記処理回路素子に示すウォッチポイント信号である、請求項1から14までのいずれかに記載の装置。
  16. 処理回路素子に対するトリガ信号のアサーションを制御するための装置を動作させる方法であって、
    前記処理回路素子によって実行されるプログラム命令を示すプログラム命令実行情報を受信し、前記プログラム命令実行情報がトリガ条件の存在を示すかどうかを評価情報を参照して判定するために評価動作を実行することと、
    前記トリガ条件が存在すると判定されたかどうかに応じて前記処理回路素子に対するトリガ信号をアサートすることと、
    前記処理回路素子内で発生する少なくとも1つのイベントを示すイベント情報を受信し、資格条件が存在するかどうかをフィルタ制御情報及び前記イベント情報を参照して判定することと、
    前記資格条件がないと判定すると、前記トリガ信号をアサートするかどうかを決定するときに前記トリガ条件の前記存在が考慮されることを防ぐことと、
    を含
    前記イベント情報によって示される前記少なくとも1つのイベントが、前記プログラム命令の実行によって直接定義されたイベントを除外し、
    前記処理回路素子が、プログラム命令のシーケンスを実行するように配置され、前記シーケンスが、前記シーケンス内の識別されたプログラム命令を示す分岐挙動設定プログラム命令を含み、前記分岐挙動設定プログラム命令の実行が、前記識別されたプログラム命令に前記シーケンス内で遭遇したときに前記分岐挙動設定プログラム命令によって識別された目標アドレスに前記処理回路素子を分岐させる前記識別されたプログラム命令と分岐挙動が関連付けられることを可能にし、
    前記イベント情報によって示されるイベントが、前記分岐挙動設定プログラム命令の以前の実行により前記識別されたプログラム命令に遭遇したときに前記処理回路素子によって分岐がいつ行われたかを識別する、方法。
  17. 処理回路素子によって実行されるプログラム命令を示すプログラム命令実行情報を受信し、前記プログラム命令実行情報がトリガ条件の存在を示すかどうかを評価情報を参照して判定するために評価動作を実行するための評価手段と、
    前記トリガ条件が存在すると判定されたかどうかに応じて前記処理回路素子に対するトリガ信号をアサートするためのトリガ信号生成手段と、
    前記処理回路素子内で発生する少なくとも1つのイベントを示すイベント情報を受信し、資格条件が存在するかどうかをフィルタ制御情報及び前記イベント情報を参照して判定するためのフィルタ手段と、
    を備えた装置であって、
    前記フィルタ手段がさらに、前記資格条件がないと判定すると、前記トリガ条件の前記存在が前記トリガ信号生成手段に通知されることを防
    前記イベント情報によって示される前記少なくとも1つのイベントが、前記プログラム命令の実行によって直接定義されたイベントを除外し、
    前記処理回路素子が、プログラム命令のシーケンスを実行するように配置され、前記シーケンスが、前記シーケンス内の識別されたプログラム命令を示す分岐挙動設定プログラム命令を含み、前記分岐挙動設定プログラム命令の実行が、前記識別されたプログラム命令に前記シーケンス内で遭遇したときに前記分岐挙動設定プログラム命令によって識別された目標アドレスに前記処理回路素子を分岐させる前記識別されたプログラム命令と分岐挙動が関連付けられることを可能にし、
    前記イベント情報によって示されるイベントが、前記分岐挙動設定プログラム命令の以前の実行により前記識別されたプログラム命令に遭遇したときに前記処理回路素子によって分岐がいつ行われたかを識別する、装置。
JP2019510437A 2016-08-31 2017-08-10 処理回路素子に対するトリガ信号のアサーションを制御する装置及び方法 Active JP7026107B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1614752.2 2016-08-31
GB1614752.2A GB2553311B (en) 2016-08-31 2016-08-31 An apparatus and method for controlling assertion of a trigger signal to processing circuitry
PCT/GB2017/052363 WO2018042149A1 (en) 2016-08-31 2017-08-10 An apparatus and method for controlling assertion of a trigger signal to processing circuitry

Publications (2)

Publication Number Publication Date
JP2019531542A JP2019531542A (ja) 2019-10-31
JP7026107B2 true JP7026107B2 (ja) 2022-02-25

Family

ID=57119763

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019510437A Active JP7026107B2 (ja) 2016-08-31 2017-08-10 処理回路素子に対するトリガ信号のアサーションを制御する装置及び方法

Country Status (8)

Country Link
US (1) US11294787B2 (ja)
EP (1) EP3507697B1 (ja)
JP (1) JP7026107B2 (ja)
KR (1) KR102358754B1 (ja)
CN (1) CN107797873B (ja)
GB (1) GB2553311B (ja)
TW (1) TWI751185B (ja)
WO (1) WO2018042149A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2574231B (en) 2018-05-31 2020-12-30 Advanced Risc Mach Ltd An apparatus and method for triggering action performance

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000181746A (ja) 1998-12-18 2000-06-30 Toshiba Corp デバッグサポート付プロセッサ、及びデバッグ機能実行制御方法
JP2004178590A (ja) 2002-11-22 2004-06-24 Texas Instruments Inc データ一致認定および完全または部分的重複によって、多数のサイズのメモリ・アクセスを検出するアドレス範囲比較器
JP2005317023A (ja) 2004-04-30 2005-11-10 Arm Ltd データ処理装置のブレークポイント論理ユニット、デバッグ論理、およびブレークポイントの方法
JP2007257441A (ja) 2006-03-24 2007-10-04 Fujitsu Ltd プロセッサおよびプロセッサ制御方法

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5949372B2 (ja) 1980-02-20 1984-12-03 松井 鈴干 河川の上流又は小河川等の砂防工法
JPH0795316B2 (ja) * 1989-03-17 1995-10-11 沖電気工業株式会社 共通バス制御方法
JPH0795316A (ja) 1993-09-24 1995-04-07 Dainippon Screen Mfg Co Ltd 画像伝送方法および装置
US5659679A (en) * 1995-05-30 1997-08-19 Intel Corporation Method and apparatus for providing breakpoints on taken jumps and for providing software profiling in a computer system
US5740413A (en) * 1995-06-19 1998-04-14 Intel Corporation Method and apparatus for providing address breakpoints, branch breakpoints, and single stepping
JP3088285B2 (ja) 1996-05-30 2000-09-18 日本電気アイシーマイコンシステム株式会社 インサーキットエミュレータ
JP3397230B2 (ja) * 1997-05-28 2003-04-14 松下電器産業株式会社 デバッグシステム
US6611910B2 (en) * 1998-10-12 2003-08-26 Idea Corporation Method for processing branch operations
US6463553B1 (en) * 1999-10-01 2002-10-08 Stmicroelectronics, Ltd. Microcomputer debug architecture and method
US6748558B1 (en) * 2000-05-10 2004-06-08 Motorola, Inc. Performance monitor system and method suitable for use in an integrated circuit
US6990569B2 (en) 2001-10-25 2006-01-24 Arm Limited Handling problematic events in a data processing apparatus
GB2393272A (en) 2002-09-19 2004-03-24 Advanced Risc Mach Ltd Controlling performance counters within a data processing system
WO2007099273A1 (en) 2006-03-03 2007-09-07 Arm Limited Monitoring values of signals within an integrated circuit
US20070226471A1 (en) * 2006-03-13 2007-09-27 Arm Limited Data processing apparatus
US7865704B2 (en) * 2006-03-29 2011-01-04 Freescale Semiconductor, Inc. Selective instruction breakpoint generation based on a count of instruction source events
US8042002B2 (en) * 2008-01-18 2011-10-18 Freescale Semiconductor, Inc. Method and apparatus for handling shared hardware and software debug resource events in a data processing system
BRPI0920541A2 (pt) 2008-11-24 2018-11-06 Intel Corp sistemas, métodos e aparelho para decompor um programa sequencial em multicadeias, executar as ditas cadeias, e reconstruir a execução sequencial
US9195466B2 (en) * 2012-05-16 2015-11-24 Qualcomm Incorporated Fusing conditional write instructions having opposite conditions in instruction processing circuits, and related processor systems, methods, and computer-readable media
JP5949372B2 (ja) 2012-09-19 2016-07-06 株式会社ナカヨ 情報入力装置および携帯端末
CN105308558A (zh) 2012-12-10 2016-02-03 维迪特克公司 基于规则的数据处理系统和方法
GB2522477B (en) * 2014-01-28 2020-06-17 Advanced Risc Mach Ltd Speculative interrupt signalling
GB2535212B (en) * 2015-02-13 2021-08-04 Advanced Risc Mach Ltd An apparatus and method for controlling debugging of program instructions including a transaction
GB2553582B (en) * 2016-09-13 2020-07-08 Advanced Risc Mach Ltd An apparatus and method for generating and processing a trace stream indicative of instruction execution by processing circuitry

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000181746A (ja) 1998-12-18 2000-06-30 Toshiba Corp デバッグサポート付プロセッサ、及びデバッグ機能実行制御方法
JP2004178590A (ja) 2002-11-22 2004-06-24 Texas Instruments Inc データ一致認定および完全または部分的重複によって、多数のサイズのメモリ・アクセスを検出するアドレス範囲比較器
JP2005317023A (ja) 2004-04-30 2005-11-10 Arm Ltd データ処理装置のブレークポイント論理ユニット、デバッグ論理、およびブレークポイントの方法
JP2007257441A (ja) 2006-03-24 2007-10-04 Fujitsu Ltd プロセッサおよびプロセッサ制御方法

Also Published As

Publication number Publication date
EP3507697A1 (en) 2019-07-10
CN107797873A (zh) 2018-03-13
GB201614752D0 (en) 2016-10-12
WO2018042149A1 (en) 2018-03-08
GB2553311B (en) 2020-05-20
CN107797873B (zh) 2023-01-06
EP3507697B1 (en) 2021-06-16
KR102358754B1 (ko) 2022-02-07
TW201812573A (zh) 2018-04-01
GB2553311A (en) 2018-03-07
US11294787B2 (en) 2022-04-05
KR20190040304A (ko) 2019-04-17
TWI751185B (zh) 2022-01-01
JP2019531542A (ja) 2019-10-31
US20190163601A1 (en) 2019-05-30

Similar Documents

Publication Publication Date Title
JP5419103B2 (ja) デバッグイベントを監視するためのシステム及び方法
US6754856B2 (en) Memory access debug facility
US8838939B2 (en) Debugging multithreaded code by generating exception upon target address CAM search for variable and checking race condition
EP2643751B1 (en) Processing apparatus, trace unit and diagnostic apparatus
US20060184769A1 (en) Localized generation of global flush requests while guaranteeing forward progress of a processor
JP2005317023A (ja) データ処理装置のブレークポイント論理ユニット、デバッグ論理、およびブレークポイントの方法
JP5905911B2 (ja) シングルステップ実行を用いる診断コード
JP2013058217A (ja) プロセッサ命令セット動作モードを比較するデバッグ回路
TW201737066A (zh) 程式迴圈控制
US10795685B2 (en) Operating a pipeline flattener in order to track instructions for complex
TW201737060A (zh) 程式迴圈控制
JPH02201651A (ja) データ処理装置
US7991985B2 (en) System and method for implementing and utilizing a zero overhead loop
US7987347B2 (en) System and method for implementing a zero overhead loop
US8108840B2 (en) Method for enhancing debugger performance of hardware assisted breakpoints
JP7026107B2 (ja) 処理回路素子に対するトリガ信号のアサーションを制御する装置及び方法
Bas et al. SafeDM: a hardware diversity monitor for redundant execution on non-lockstepped cores
JP7049275B2 (ja) 診断データキャプチャ
TWI736564B (zh) 用於診斷執行指令串流的處理器之方法、設備、及系統

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200803

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210830

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210907

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211125

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220214

R150 Certificate of patent or registration of utility model

Ref document number: 7026107

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150