(57)【要約】  処理回路素子に対するトリガ信号のアサーションを制御するための装置及び方法が提供される。本装置は、処理回路素子によって実行されるプログラム命令を示すプログラム命令実行情報を受信するための評価回路素子を有し、評価回路素子は、プログラム命令実行情報がトリガ条件の存在を示すかどうかを評価情報を参照して判定するために評価動作を実行するように配置される。トリガ信号生成回路素子が、トリガ条件が存在すると判定されたかどうかに応じて処理回路素子に対するトリガ信号をアサートするために使用される。さらに、フィルタ回路素子が、処理回路素子内で発生する少なくとも１つのイベントを示すイベント情報を受信するように配置され、資格条件が存在するかどうかをフィルタ制御情報及びそのイベント情報を参照して判定するように配置される。フィルタ回路素子は、資格条件が存在しないと判定すると、トリガ条件の存在がトリガ信号生成回路素子に通知されることを防ぐように配置される。これは、追加で資格認定イベントが存在すると判定された場合にのみ処理回路素子が通知を受けるように、資格認定される特定のプログラム命令実行挙動の監視を可能にする。
2019531542.tif 000002
【特許請求の範囲】
【請求項１】
処理回路素子によって実行されるプログラム命令を示すプログラム命令実行情報を受信し、前記プログラム命令実行情報がトリガ条件の存在を示すかどうかを評価情報を参照して判定するために評価動作を実行するための評価回路素子と、
前記トリガ条件が存在すると判定されたかどうかに応じて前記処理回路素子に対するトリガ信号をアサートするためのトリガ信号生成回路素子と、
前記処理回路素子内で発生する少なくとも１つのイベントを示すイベント情報を受信し、資格条件が存在するかどうかをフィルタ制御情報及び前記イベント情報を参照して判定するためのフィルタ回路素子と、
を備えた装置であって、前記フィルタ回路素子が、前記資格条件がないと判定した場合、前記トリガ条件の前記存在が前記トリガ信号生成回路素子に通知されることを防ぐように配置された、装置。
【請求項２】
前記評価回路素子が、前記トリガ条件の存在が判定されたかどうかを示す出力信号を発行するように配置され、
前記フィルタ回路素子が、前記出力信号を受信し、置換出力信号を生成するように配置され、前記資格条件が存在する場合、前記フィルタ回路素子が、前記置換出力信号を前記出力信号とマッチさせ、前記資格条件がない場合、前記フィルタ回路素子が前記置換出力信号に、前記トリガ条件がないことを示させる、請求項１に記載の装置。
【請求項３】
前記フィルタ回路素子が、前記資格条件が存在するときにアサートされ前記資格条件がないときにデアサートされる前記評価回路素子の有効化信号を生成するように配置され、
前記評価回路素子が、前記有効化信号がアサートされるとき、前記評価動作を実行し、前記トリガ条件の存在が判定されたかどうかを示す出力信号を発行するように配置され、
前記評価回路素子は、前記有効化信号がデアサートされるとき、前記出力信号が前記トリガ条件がないことを示すように配置される、請求項１に記載の装置。
【請求項４】
前記フィルタ回路素子は、前記資格条件がない場合に、前記評価回路素子が前記トリガ条件の存在を判定することを防ぐように、前記プログラム命令実行情報及び前記評価情報のうちの１つを修正するように配置される、請求項１に記載の装置。
【請求項５】
前記フィルタ回路素子が、前記処理回路素子による出力として前記プログラム命令実行情報を受信し、前記評価回路素子に対する入力用に置換プログラム命令実行情報を生成するように配置され、
前記資格条件が存在する場合、前記フィルタ回路素子が、前記置換プログラム命令実行情報を前記処理回路素子による出力としての前記プログラム命令実行情報とマッチさせ、前記資格条件がない場合、前記フィルタ回路素子が、前記置換プログラム命令実行情報に、前記評価回路素子が前記トリガ条件の存在を判定することを防ぐ形をとらせる、請求項４に記載の装置。
【請求項６】
前記評価情報及び前記フィルタ制御情報を記憶するように構成されたストレージ
をさらに備える、請求項１から５までのいずれかに記載の装置。
【請求項７】
少なくとも１つのさらなる評価回路素子をさらに備え、各さらなる評価回路素子が、前記プログラム命令実行情報を受信し、前記プログラム命令実行情報がさらなるトリガ条件の存在を示すかどうかを関連の評価情報を参照して判定するために評価動作を実行するように配置され、
前記トリガ信号生成回路素子が、前記トリガ条件及び各前記さらなるトリガ条件のうちの少なくとも１つが存在すると判定されたかどうかに応じて前記処理回路素子に対するトリガ信号をアサートするように配置される、請求項１から６までのいずれかに記載の装置。
【請求項８】
少なくとも１つのさらなるフィルタリング回路素子をさらに備え、各さらなるフィルタ回路素子がさらなる評価回路素子と関連付けられ、
各さらなるフィルタ回路素子が、前記イベント情報を受信し、さらなる資格条件が存在するかどうかを関連のフィルタ制御情報及び前記イベント情報を参照して判定し、さらなる資格条件がないと判定すると、前記関連のさらなる評価回路素子によって判定された前記さらなるトリガ条件の前記存在が前記トリガ信号生成回路素子に通知されることを防ぐように配置される、請求項７に記載の装置。
【請求項９】
前記評価回路素子によって発行された出力信号から導出された第１の入力信号、及びさらなる評価回路素子によって発行された出力信号から導出されたさらなる入力信号を受信し、前記トリガ信号生成回路素子に提供される結合された出力信号を生成するために前記第１の入力信号及び前記さらなる入力信号に論理演算を実行するように配置された結合回路素子をさらに備える、請求項７又は請求項８に記載の装置。
【請求項１０】
前記プログラム命令実行情報が、
前記処理回路素子によって実行される前記プログラム命令の命令アドレスと、
前記プログラム命令を実行するときにアクセスされるデータ値のアドレスと、
前記プログラム命令を実行するときにアクセスされるデータ値と
のうちの少なくとも１つを提供する、請求項１から９までのいずれかに記載の装置。
【請求項１１】
前記イベント情報によって示される前記少なくとも１つのイベントが、前記プログラム命令の実行によって直接定義されたイベントを除外する、請求項１から１０までのいずれかに記載の装置。
【請求項１２】
前記処理回路素子が、プログラム命令のシーケンスを実行するように配置され、前記シーケンスが、前記シーケンス内の識別されたプログラム命令を示す分岐挙動設定プログラム命令を含み、前記分岐挙動設定プログラム命令の実行が、前記識別されたプログラム命令に前記シーケンス内で遭遇したときに前記分岐挙動設定プログラム命令によって識別された目標アドレスに前記処理回路素子を分岐させる前記識別されたプログラム命令と分岐挙動が関連付けられることを可能にし、
前記イベント情報によって示されるイベントが、前記分岐挙動設定プログラム命令の以前の実行により前記識別されたプログラム命令に遭遇したときに前記処理回路素子によって分岐がいつ行われたかを識別する、請求項１１に記載の装置。
【請求項１３】
前記イベント情報によって示される前記少なくとも１つのイベントが、少なくとも１つのパフォーマンス関連イベントを含む、請求項１１又は請求項１２に記載の装置。
【請求項１４】
前記少なくとも１つのパフォーマンス関連イベントが、少なくともキャッシュ・ミスイベントを含む、請求項１３に記載の装置。
【請求項１５】
前記評価回路素子が比較回路素子を備え、前記評価情報がマッチ値を含み、前記比較回路素子が、前記トリガ条件が存在するかどうかを判定するために、前記プログラム命令実行情報の選択された部分を前記マッチ値と比較するように配置される、請求項１から１４までのいずれかに記載の装置。
【請求項１６】
前記フィルタ制御情報が、前記資格条件の存在を判定するために少なくとも１つのイベントの発生が必要とされるかどうかを識別する、請求項１から１５までのいずれかに記載の装置。
【請求項１７】
前記トリガ信号が、アサートされると少なくとも１つのウォッチポイント条件の存在を前記処理回路素子に示すウォッチポイント信号である、請求項１から１６までのいずれかに記載の装置。
【請求項１８】
処理回路素子に対するトリガ信号のアサーションを制御するための装置を動作させる方法であって、
前記処理回路素子によって実行されるプログラム命令を示すプログラム命令実行情報を受信し、前記プログラム命令実行情報がトリガ条件の存在を示すかどうかを評価情報を参照して判定するために評価動作を実行することと、
前記トリガ条件が存在すると判定されたかどうかに応じて前記処理回路素子に対するトリガ信号をアサートすることと、
前記処理回路素子内で発生する少なくとも１つのイベントを示すイベント情報を受信し、資格条件が存在するかどうかをフィルタ制御情報及び前記イベント情報を参照して判定することと、
前記資格条件がないと判定すると、前記トリガ信号をアサートするかどうかを決定するときに前記トリガ条件の前記存在が考慮されることを防ぐことと、
を含む、方法。
【請求項１９】
処理回路素子によって実行されるプログラム命令を示すプログラム命令実行情報を受信し、前記プログラム命令実行情報がトリガ条件の存在を示すかどうかを評価情報を参照して判定するために評価動作を実行するための評価手段と、
前記トリガ条件が存在すると判定されたかどうかに応じて前記処理回路素子に対するトリガ信号をアサートするためのトリガ信号生成手段と、
前記処理回路素子内で発生する少なくとも１つのイベントを示すイベント情報を受信し、資格条件が存在するかどうかをフィルタ制御情報及び前記イベント情報を参照して判定するためのフィルタ手段と、
を備えた装置であって、前記フィルタ手段がさらに、前記資格条件がないと判定すると、前記トリガ条件の前記存在が前記トリガ信号生成手段に通知されることを防ぐ、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、処理回路素子に対するトリガ信号のアサーションを制御する装置及び方法に関する。
【背景技術】
【０００２】
処理回路素子からプログラム命令実行情報を受信するように配置することができる関連の監視回路素子を処理回路素子に設けることが知られている。監視回路素子は、監視されるべき特定の情報値を用いてプログラムすることができ、それらのプログラムされた情報値に関して処理回路素子から受信されたプログラム命令実行情報を分析することによって、処理回路素子に戻すトリガ信号をいつアサートするかを決定することができる。
【０００３】
一例として、監視回路素子は、１つ又は複数のプログラムされたウォッチポイント値を有するウォッチポイント回路素子の形をとってもよく、受信されたプログラム命令実行情報を監視することによって、監視回路素子は、それらのウォッチポイント値がいつ検出されるかを判定し、処理回路素子に戻すウォッチポイント信号をアサートすることができる。次いで、処理回路素子は、ウォッチポイント信号に応答して、たとえば適切な例外ルーチンを実行するための割り込みをとることによって、所定のアクションを行うことができる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
処理回路が複雑さを増し、それらがサポートする機能が増えるにつれて、処理回路素子のさらに複雑な挙動の監視を可能にするために、そのような監視回路の機能の改善が望まれることになる。
【課題を解決するための手段】
【０００５】
１つの例示的構成では、処理回路素子によって実行されるプログラム命令を示すプログラム命令実行情報を受信し、プログラム命令実行情報がトリガ条件の存在を示すかどうかを評価情報を参照して判定するために評価動作を実行するための評価回路素子と、前記トリガ条件が存在すると判定されたかどうかに応じて処理回路素子に対するトリガ信号をアサートするためのトリガ信号生成回路素子と、処理回路素子内で発生する少なくとも１つのイベントを示すイベント情報を受信し、資格条件が存在するかどうかをフィルタ制御情報及び前記イベント情報を参照して判定するためのフィルタ回路素子とを備えた装置が提供され、フィルタ回路素子は、資格条件がないと判定すると、トリガ条件の存在がトリガ信号生成回路素子に通知されることを防ぐように配置される。
【０００６】
もう１つの例示的構成では、処理回路素子に対するトリガ信号のアサーションを制御するための装置を動作させる方法が提供され、この方法は、処理回路素子によって実行されるプログラム命令を示すプログラム命令実行情報を受信し、プログラム命令実行情報がトリガ条件の存在を示すかどうかを評価情報を参照して判定するために評価動作を実行することと、前記トリガ条件が存在すると判定されたかどうかに応じて処理回路素子に対するトリガ信号をアサートすることと、処理回路素子内で発生する少なくとも１つのイベントを示すイベント情報を受信し、資格条件が存在するかどうかをフィルタ制御情報及び前記イベント情報を参照して判定することと、資格条件がないと判定した場合、トリガ信号をアサートするかどうかを決定する際にトリガ条件の存在が考慮されることを防ぐことを含む。
【０００７】
さらなる例示的構成では、処理回路素子によって実行されるプログラム命令を示すプログラム命令実行情報を受信し、プログラム命令実行情報がトリガ条件の存在を示すかどうかを評価情報を参照して判定するために評価動作を実行する評価手段と、前記トリガ条件が存在すると判定されたかどうかに応じて処理回路素子に対するトリガ信号をアサートするためのトリガ信号生成手段と、処理回路素子内で発生する少なくとも１つのイベントを示すイベント情報を受信し、資格条件が存在するかどうかをフィルタ制御情報及び前記イベント情報を参照して判定するためのフィルタ手段とを備えた装置が提供され、フィルタ手段は、資格条件がないと判定した場合、トリガ条件の存在がトリガ信号生成手段に通知されることを防ぐ。
【０００８】
本技術が、以下の添付の図面に示すようなその実施例を参照して、単に実例として、さらに説明される。
【図面の簡単な説明】
【０００９】
【図１】一実施例による監視回路素子を含むシステムのブロック図である。
【図２】一実施例による監視回路素子内で提供される構成要素を示すブロック図である。
【図３】一実施例による監視回路素子の各比較／フィルタ・ブロック内で提供される構成要素をより詳細に示す図である。
【図４】一実施例による各比較／フィルタ・ブロックの動作を示すフロー図である。
【図５】一代替実施例による監視回路素子の配置を示す図である。
【図６】一実施例による図５の監視回路素子を使用するときの各比較／フィルタ・ブロックの動作を示すフロー図である。
【図７】さらに追加の代替実施例による監視回路素子の配置を示す図である。
【図８】一実施例による図７の監視回路素子を使用するときの各比較／フィルタ・ブロックの動作を示すフロー図である。
【発明を実施するための形態】
【００１０】
添付の図面を参照して実施例を論じる前に、以下に実施例の説明を行う。
【００１１】
１つの実施例では、プログラム命令実行情報が処理回路素子によって実行されるプログラム命令を示す、関連処理回路素子からプログラム命令実行情報を受信するために評価回路素子を備えた装置が提供される。評価回路素子は、次いで、プログラム命令実行情報がトリガ条件の存在を示すかどうかを評価情報を参照して判定するために評価動作を実行するように配置される。１つの実施例では、評価情報は、プログラム命令実行情報のどのような値又はプログラム命令実行情報のどのような値の範囲がトリガ条件の存在を示すものとして判定されることになるかを識別するために、評価回路素子内に予めプログラムすることができる。
【００１２】
本装置はまた、トリガ条件が存在すると判定されたかどうかに応じて処理回路素子に対するトリガ信号をアサートするために、トリガ信号生成回路素子を含む。１つの実施例では、評価回路素子の複数のインスタンスが存在することがあり、トリガ信号生成回路素子は、トリガ信号をアサートするかどうかを決定するときにそれらの評価回路の各々から受信される信号を考慮することができる。
【００１３】
１つの実施例の装置はさらに、処理回路素子内で発生する少なくとも１つのイベントを示すイベント情報を受信するためにフィルタ回路素子を含み、フィルタ制御情報及びそのイベント情報を参照して資格条件が存在するかどうかを判定するように配置される。評価情報と同様に、１つの実施例において、フィルタ制御情報は、予めプログラムすることができ、資格条件が存在すると判定するために存在する必要がある任意のイベントを識別するために使用される。
【００１４】
フィルタ回路素子は、次いで、資格条件がないと判定した場合、トリガ条件の存在がトリガ信号生成回路素子に通知されることを防ぐように配置される。結果として、フィルタ回路素子は、フィルタ回路素子によって課された任意のイベント制約もまた満たされているかどうかに応じてトリガ信号生成回路素子にトリガ条件の通知を行うことによって、評価回路素子によるトリガ条件の存在の検出のどのインスタンスが実際にトリガ信号生成回路素子に通知されるかをフィルタするように動作することができる。
【００１５】
これにより、関連処理回路素子内で複雑な組合せの挙動を監視して、それに応じてトリガ信号を発行する、非常に強力な機構を提供する。具体的には、プログラム命令実行情報は、通常は、プログラム命令の実行の直接的結果である情報を提供することになる。１つの実例では、プログラム命令実行情報は、以下のうちの少なくとも１つを提供する：処理回路素子によって実行されるプログラム命令の命令アドレスと、プログラム命令を実行するときにアクセスされるデータ値のアドレスと、プログラム命令を実行するときにアクセスされるデータ値。
【００１６】
一方、イベント情報は、多種多様な異なる形をとることができ、評価回路素子によって評価されているプログラム命令の実行によって直接定義されないイベントに関連し得る。したがって、イベント情報は、たとえば、受信されたプログラム命令実行情報が評価回路素子にトリガ条件の存在を判定させることになるとき、フィルタ制御情報内にエンコードされた少なくとも１つのアーキテクチャ又はマイクロアーキテクチャイベントもまた存在する場合にのみ、これが実際にトリガ信号生成回路素子に通知されるように、フィルタ制御情報が設定可能な、任意の所望の数のアーキテクチャ又はマイクロアーキテクチャイベントに関する情報を含み得る。
【００１７】
このような手法が大きな利益を与えうる多数の実例が存在する。たとえば、１つの実施例では、処理回路素子は、プログラム命令のシーケンスを実行するように配置することができ、前記シーケンスは、前記シーケンス内の識別されたプログラム命令を示す分岐挙動設定プログラム命令を含み、分岐挙動設定プログラム命令の実行は、識別されたプログラム命令に前記シーケンス内で遭遇したときに分岐挙動設定プログラム命令によって識別された目標アドレスに処理回路素子を分岐させる前記識別されたプログラム命令に分岐挙動が関連付けられることを可能にする。このような実施例では、イベント情報によって示されるイベントは、分岐挙動設定プログラム命令の以前の実行により前記識別されたプログラム命令に遭遇したときに処理回路素子によって分岐がいつ行われたかを識別することができる。
【００１８】
具体的実例として、このような実施例では、評価回路素子が、プログラム命令実行情報を監視して、プログラム・シーケンスにおいてその識別されたプログラム命令にいつ遭遇するかを判定するように、評価回路素子及びフィルタ回路素子が配置され得るが、フィルタ回路素子がまた、分岐挙動設定プログラム命令の以前の実行によりその識別されたプログラム命令に遭遇したときに処理回路素子によって分岐が行われたとさらに判定した場合にのみ、トリガ信号生成回路素子は、そのトリガ条件を通知されることになる、ことが理解されよう。これは、処理回路素子の非常に具体的な挙動が監視されることを可能にする。
【００１９】
しかしながら、フィルタ回路素子によって監視されるイベントは、そのような分岐挙動設定プログラム命令の使用に関連している必要はなく、そうではなくて、フィルタ回路素子内のフィルタ制御情報は、任意の所望のイベント、たとえばキャッシュ・ミス、又は、リソース・コンフリクト、ストールなどの他のパフォーマンス関連イベント、を監視するようにプログラムすることができる。資格条件が存在するか否かをフィルタ回路素子が判定することができるように、そのようなイベントの発生は、次いで、受信されたイベント情報を介してフィルタ回路素子に報告されることになる。
【００２０】
フィルタ回路素子は、資格条件が満たされていないときにトリガ条件がトリガ信号生成回路素子に通知されることを防ぐような様々な異なる方法で構成することができる。１つの実施例では、評価回路素子は、トリガ条件の存在が判定されたどうかを示す出力信号を発行するように配置され、フィルタ回路素子は、前記出力信号を受信し、置換出力信号を生成するように配置される。前記資格条件が存在する場合、フィルタ回路素子は、前記置換出力信号を前記出力信号とマッチさせ、前記資格条件がない場合、フィルタ回路素子は、前記置換出力信号にトリガ条件はないことを示させる。したがって、このような実施例では、フィルタ回路素子は、資格条件が満たされているか否かに応じて評価回路素子からの出力信号を選択的に修正する。具体的には、資格条件がない場合、フィルタ回路素子は、トリガ条件が評価回路素子によって検出されたか否かにかかわらず、置換出力信号がトリガ条件はないことを示すように、評価回路素子からの出力信号をオーバーライドすることになる。
【００２１】
一代替実施例において、フィルタ回路素子は、評価回路素子によって使用される有効化信号を制御するように配置され得る。具体的には、１つの実施例において、フィルタ回路素子は、資格条件が存在するときにアサートされ資格条件がないときにデアサートされる評価回路素子の有効化信号を生成するように配置される。評価回路素子は、有効化信号がアサートされるとき、評価動作を実行し、前記トリガ条件の存在が判定されたかどうかを示す出力信号を発行するように配置されるが、有効化信号がデアサートされるときには、出力信号がトリガ条件はないことを示すように配置される。したがって、有効化信号がフィルタ回路素子によってデアサートされるときには、評価回路素子出力信号は、トリガ条件がないことを示すことになり、そのような状況では、評価動作は評価回路素子によって実行されない。
【００２２】
さらなる代替物として、評価回路素子がトリガ条件の存在を判定することを防ぐように、フィルタ回路素子は、前記資格条件がない場合、プログラム命令実行情報及び評価情報のうちの１つを修正するように配置され得る。
【００２３】
１つの実施例では、資格条件が存在しないことを検出したとき、フィルタ回路素子は、プログラム命令実行情報がどのような有効値をとっても、評価回路素子によってトリガ条件を検出させない形をとるように評価情報を修正することができ、代替実施例では、フィルタ回路素子は、プログラム命令実行情報が評価回路素子によって考慮される前に、プログラム命令実行情報を修正する。
【００２４】
具体的には、フィルタ回路素子は、評価回路素子によって評価されるプログラム命令実行情報を選択的に修正するように配置され得る。１つの実施例では、フィルタ回路素子は、処理回路素子による出力としてプログラム命令実行情報を受信し、評価回路素子に対する入力用の置換プログラム命令実行情報を生成するように配置される。前記資格条件が存在する場合、フィルタ回路素子は、前記置換プログラム命令実行情報を処理回路素子による出力としてのプログラム命令実行情報とマッチさせ、前記資格条件がない場合、フィルタ回路素子は、前記置換プログラム命令実行情報に、評価回路素子がトリガ条件の存在を判定することを防ぐ形をとらせる。したがって、このような実施例では、資格条件がないとき、フィルタ回路素子は、評価回路素子がその評価動作を実行するときに評価回路素子によってマッチが検出されることをその場合に可能にしないことが知られている形をプログラム命令実行情報がとるように、プログラム命令実行情報を修正するように配置され得る。たとえば、受信されたプログラム命令実行情報は、評価回路素子がその評価動作を実行するときに評価回路素子によってトリガ条件が検出される結果をもたらさないことがその場合に知られている不正な値をとるように修正され得る。
【００２５】
評価情報及びフィルタ制御情報がそれぞれ評価回路素子及びフィルタ回路素子によって使用するために提供され得る、いくつかの方法が存在する。１つの実施例では、本装置はさらに、評価情報及びフィルタ制御情報を記憶するように構成されたストレージを備える。１つの実施例では、ストレージの内容は、たとえば、処理回路素子によって実行されるプログラム命令のシーケンス上でデバッグ動作を実行しようとするデバッガ・アプリケーションのユーザによって、プログラム可能である。評価情報及びフィルタ制御情報の両方の使用を介して、非常に対象を絞った挙動が、監視可能であり、特定の命令実行挙動のみならず、処理回路素子内で起こる１つ又は複数の他のイベントと一致するその命令実行挙動の特定のインスタンスが監視されることを可能にする。
【００２６】
１つの実施例では、本装置はさらに、少なくとも１つのさらなる評価回路素子を備え、各さらなる評価回路素子は、前記プログラム命令実行情報を受信し、プログラム命令実行情報がさらなるトリガ条件の存在を示すかどうかを関連の評価情報を参照して判定するように配置される。トリガ信号生成回路素子は、次いで、前記トリガ条件及び各前記さらなるトリガ条件のうちの少なくとも１つが存在すると判定されたかどうかに応じて処理回路素子に対するトリガ信号をアサートするように配置される。したがって、トリガ信号生成回路素子にトリガ信号をアサートすることが適切かどうかを判定するときに、複数の評価回路からのトリガ条件を考慮することができる。
【００２７】
１つの実施例では、本装置は、少なくとも１つのさらなるフィルタリング回路素子をさらに備え、各さらなるフィルタ回路素子は、さらなる評価回路素子と関連付けられ、前記イベント情報を受信し、さらなる資格条件が存在するかどうかを関連のフィルタ制御情報及び前記イベント情報を参照して判定するように配置される。さらなる資格条件がないと判定すると、さらなるフィルタ回路素子は、関連するさらなる評価回路素子によって判定されたさらなるトリガ条件の存在がトリガ信号生成回路素子に通知されるのを防ぐ。
【００２８】
１つの実施例では、本装置は、評価回路素子によって発行された出力信号から導出された第１の入力信号及びさらなる評価回路素子によって発行された出力信号から導出されたさらなる入力信号を受信し、前記トリガ信号生成回路素子に提供される結合された出力信号を生成するために前記第１の及びさらなる入力信号で論理演算を実行するように配置された結合回路素子をさらに備える。
【００２９】
したがって、複数の評価回路からのトリガ条件は、トリガ信号生成回路素子にトリガ信号をアサートすることが適切かどうかを判定するときに、論理的に結合され得る。このような手法は、たとえば、トリガ条件が命令アドレス、データ・アドレス又はデータ値の範囲について検出されることを可能にする。しかしながら、フィルタ回路素子によって監視される少なくとも１つのイベントの存在に応じてトリガ信号のアサーションが行われるように、再び、フィルタ回路素子が、任意のこのようなトリガ条件を制限するために使用され得る。複数の評価回路が、次いで、関連フィルタ回路素子の動作によって制限されたそれらのトリガ条件を有することができるように、さらなる評価回路のうちの１つ又は複数がまた、関連フィルタリング回路を提供され得る。
【００３０】
結合回路素子によって受信された入力信号は、関連評価回路によって発行された出力信号と直接対応し得るが、これは、どのようにフィルタ回路素子が評価回路素子の挙動を修正するように構成されるかに依存することになる。たとえば、１つの実施例では、フィルタ回路素子が関連評価回路からの出力信号を選択的に修正する場合、結合回路素子によって受信された入力信号は関連フィルタリング回路によって実装されるフィルタリング機能により、関連評価回路によって発行された出力信号と直接対応しないことがあることが理解されよう。
【００３１】
評価回路素子は、様々な形をとることができるが、１つの実施例では、比較回路素子を備え、前記評価情報はマッチ値を含み、比較回路素子は、トリガ条件が存在するかどうかを判定するために、プログラム命令実行情報の選択された部分（たとえば、命令アドレス、データ・アドレス、又はデータ値）をマッチ値と比較するように配置される。
【００３２】
１つの実施例では、フィルタ制御情報は、少なくとも１つのイベントの発生が資格条件の存在を判定するために必要とされるかどうかを識別する。フィルタ制御情報は、１つ又は複数の特定のイベントが存在することを必要とするように資格条件を制約することができるが、１つの実施例では、フィルタリング動作を効果的に回避する利用可能なフィルタ制御情報の設定もまた存在し、関連評価回路素子によるトリガ条件の任意の発生がトリガ信号生成回路素子に向けて伝播されることを可能にする。
【００３３】
トリガ信号は、様々な形をとることができるが、１つの実施例では、アサートされると少なくとも１つのウォッチポイント条件の存在を処理回路素子に指示する、ウォッチポイント信号である。
【００３４】
ここで、図を参照して、特定の実施例を説明する。
【００３５】
図１は、１つの実施例によるシステムを示す図である。プログラム命令のシーケンスを実行するように配置された処理要素１０が提供され、プログラム命令実行情報はそれらの命令の実行中に監視回路素子２０に出力される。プログラム命令実行情報は、プログラム命令の実行の直接的結果である情報を提供する。たとえば、プログラム命令実行情報は、処理回路素子によって実行されるプログラム命令の命令アドレス、そのプログラム命令を実行するときにアクセスされるデータ値のアドレス、及び／又はそのプログラム命令を実行するときにアクセスされるデータ値を識別することができる。さらなる一実施例において、サイクルカウント値もまた、たとえばＮビットカウンタ値を維持するラッピング・カウンタによって生成されるものとしての、プログラム命令実行情報内に含まれ得る。
【００３６】
監視回路素子２０は、特定の値が観測されたときにトリガ信号が発行されてパス３０を介して処理要素１０に返されることを可能にするように、それらの値がそのプログラム命令実行情報内でいつ観測されるかを判定するためにプログラム命令実行情報を監視するように配置される。これは、様々な状況において、たとえば処理要素１０によって処理されているプログラム・シーケンスをデバッグしようとするときに、有用に成り得る。
【００３７】
処理要素１０は、様々な形をとることができるが、１つの実施例では、プログラム命令のシーケンスを実行するように配置されたプロセッサ・コアであり、プログラム命令実行情報２５の分析から推定されたものとしてある種のプログラム実行挙動が発生するときに処理要素に対してトリガ信号を発行するためにプロセッサ・コアと共同して監視回路素子が提供される。１つの実施例では、監視回路素子は、ある種のウォッチポイント値でプログラムされ得る、及びプログラム命令実行情報内のそれらのウォッチポイント値の存在をその場合に監視することができる、デバッグ、ウォッチポイント及びトレース（ＤＷＴ：ｄｅｂｕｇ，  ｗａｔｃｈｐｏｉｎｔ  ａｎｄ  ｔｒａｃｅ）回路素子の形をとる。トリガ信号は、その場合、様々なウォッチポイント値によってエンコードされたものとしてのウォッチポイント条件が検出されたときにアサートされるウォッチポイント信号の形をとることができる。監視回路素子２０はまた、特定のブレイクポイント条件をエンコードするように配置することができ、本明細書において、ウォッチポイントという用語は、概してウォッチポイントとブレイクポイントとの両方を参照ために使用されることになる。
【００３８】
図１の説明を簡単にするために、監視回路素子２０は、処理要素１０とは別個なものとして示されている。しかしながら、いくつかの実施例では、監視回路素子２０が処理要素１０に対して物理的に別個の品目である必要はなく、実際に、いくつかのプロセッサ・コアでは、監視回路素子２０は、たとえばプロセッサ・コアの実行パイプラインの端部に向けて位置付けられて、プロセッサ・コア内で提供され得る。
【００３９】
本明細書に記載の実施例によれば、プログラム命令実行情報の分析から検出され得るある特定のトリガ条件は、それらがイベント情報によって示されている１つ又は複数の所定のイベントと一致しない場合には、除去され得るように、処理要素１０はさらに、監視回路素子２０に対してパス３５を介してイベント情報を発行するように配置される。
【００４０】
イベント情報は、関連プログラム命令実行情報が関連するプログラム命令の実行によって直接的に定義されないイベントに関連して、様々な異なる形をとることができる。様々なアーキテクチャ及びマイクロアーキテクチャイベントは、イベント情報内でエンコードすることができ、監視回路素子内に提供されたフィルタリング回路素子はプログラム命令実行情報の分析から検出されたトリガ条件の選択可能なフィルタリングを適用する。したがって、これは、単にプログラム命令実行情報の分析に依存するのではなくて関連処理要素１０内の挙動の複雑な組合せとトリガ信号のアサーションが関連付けられることを可能にする。
【００４１】
したがって、パス３５を介して監視回路素子２０に経路指定されたイベント指示は、たとえば、関連プログラム命令実行情報がパス２５を介して提供されている特定のプログラム命令の実行によって意図されていない、又はそのような実行と直接的に関連付けられていないイベントを示し得る。これらは、たとえば、実行パイプライン内のある種の命令の実行中に起こり得る、或いは、キャッシュ・ミス、たとえば命令キャッシュから命令をプリフェッチするときに発生し得た、又は特定の命令の実行によって指定されたデータにアクセスしようとするときに発生し得たキャッシュ・ミス、などの他のパフォーマンスに影響を与えるイベントであることもある、リソース・コンフリクト、機能停止などのパフォーマンス関連イベントでもよい。パス３５を介して経路指定されたイベント指示に基づいて、記載の実施例によって提供される監視回路素子のフィルタリング機能の使用を介して、これは、特定のアドレスにおける命令が実行されること、特定のアドレスにおけるデータ値がアクセスされること、又は特定のデータ値がアクセスされることなど、特定の命令実行挙動を見て観測することだけでなく、その挙動が特定のイベントと一致するときにのみトリガ信号をアサートするようにそのような命令実行挙動の発生を適格とすることもまた監視回路素子が行えるようにする。したがって、これは、たとえば、特定の命令の実行が特定のパフォーマンスに影響を及ぼすイベントを引き起こすときにトリガ信号がアサートされることを可能にすることになる。
【００４２】
もう１つの実例として、プログラム命令のシーケンスが処理要素１０によって実行されることは、分岐挙動設定プログラム命令の１つ又は複数の発生を含み得る。そのような分岐挙動設定プログラム命令の実行は、その分岐挙動設定プログラム命令によって識別される別のプログラム命令と分岐挙動が関連付けられることを可能にすることができ、その他のプログラム命令は、本明細書において、「識別されたプログラム命令」と称される。その識別されたプログラム命令の通常の実行挙動に加えて、又はその代替えとして、分岐挙動がその識別されたプログラム命令と関連付けられた場合、これは、その識別されたプログラム命令にプログラム・シーケンスにおいて遭遇したとき、分岐挙動設定プログラム命令によって識別された目標アドレスに処理回路素子を分岐させることになる。したがって、これは、分岐挙動設定プログラム命令によって識別された任意のプログラム命令と分岐挙動が関連付けられることを可能にすることができ、ある種のシナリオにおいてパフォーマンス利益を生じさせることができる。
【００４３】
分岐挙動設定プログラム命令は、様々な形をとることができる。１つの実施例では、それは、分岐挙動が関連付けられることが望まれる、プログラム・シーケンスにおいて後に出現する任意の命令を識別することができる分岐−未来命令でもよい。分岐挙動設定命令の実行が、前述の分岐挙動を識別されたプログラム命令と関連付けさせるとき、次いで、その識別されたプログラム命令に後に遭遇したときに、識別されたプログラム命令の通常の実行挙動の代わりに、又はそれに加えて分岐挙動が呼び出され得る。分岐挙動設定プログラム命令のもう１つの実例は、ゼロ・オーバーヘッド・ループ内で提供することができる最終命令である。この場合、識別されるプログラム命令は、ループ内の直ちに進行するプログラム命令にすることができ、目標アドレスは、ループの開始を指すことができる。最後から２番目の命令の通常の命令実行挙動を実行することに加えて、代わりにループ内のその最後から２番目の命令に遭遇したときに分岐挙動が直接トリガされるので、最終反復以外のループのすべての後続の反復において、ループ内の最終命令を再実行する必要がないように、ループ内の最後から２番目の命令と分岐挙動を関連付けるために、第１の反復の間に、ループの最後の分岐挙動設定プログラム命令が実行される。これは、重大なパフォーマンス利益を与えることができる。
【００４４】
このような分岐挙動設定プログラム命令の使用中に、識別されたプログラム命令と関連付けられる分岐挙動は、識別されたプログラム命令自体に確定的に関連付けられた挙動ではないが、そうではなくて、別のプログラム命令、すなわち分岐挙動設定プログラム命令、によってその識別されたプログラム命令と関連付けられた挙動であることが理解されよう。しかしながら、パス２５を介するプログラム命令実行情報の監視と、パス３５を介するイベント指示の監視との組合せを使用することによって、監視回路素子は、分岐挙動設定プログラム命令によって関連付けられたものとして分岐挙動が観測されることもまた生じさせる、識別されたプログラム命令の任意のインスタンスのトリガ信号をアサートするようにセットアップすることができる。したがって、これは、そのような分岐挙動設定プログラム命令を組み込むプログラム・シーケンスをデバッグしようとするときに非常に有用なツールを提供することができる。
【００４５】
図２は、１つの実施例における図１の監視回路素子２０内で提供される要素をより詳細に示すブロック図である。複数の比較／フィルタ・ブロック１００、１０５、１１０が提供され、各比較／フィルタ・ブロックは、比較回路素子１１５、１２５、１３５及びフィルタ回路素子１２０、１３０、１４０を含む。図２に示す実施例では、プログラム命令実行情報が様々な比較回路１１５、１２５、１３５に直接供給され、イベント指示がフィルタ回路１２０、１３０、１４０への入力として提供される。各比較回路素子は、プログラム命令実行情報の特定の項目を監視し、その項目の値が比較回路と関連して予め記憶されたマッチ値と一致したときに検出するように構成することができる。その値がマッチ値と一致したとき、これは、比較回路素子によってトリガ条件を検出させ、信号が、比較回路素子から出力され、そのトリガ条件の存在を示すことになる。
【００４６】
しかしながら、図２に示す監視回路素子のダウンストリーム構成要素１５０、１５５、１６０、１７０、１７５にトリガ条件出力信号が直接転送されるのではなくて、その信号は、先ず、フィルタ回路素子１２０、１３０、１４０によって処理される。具体的には、フィルタ回路素子が、任意の関連イベント制約が満たされているかどうかに応じて関連比較回路素子からトリガ条件信号の前方伝播を適格とするように配置され得る。具体的には、パス３５を介して渡される様々なイベント指示は、各フィルタ回路に経路指定することができ、フィルタ回路は、受信されたイベント指示情報から予め指定されたイベントが存在すると判定された場合に資格条件は存在すると判定するように構成することができる。資格条件が存在するとき、比較回路素子からの出力は、監視回路素子内の残りの構成要素に単に伝播される。しかしながら、資格条件が存在しない場合、トリガ条件は伝播されず、代わりに、フィルタ回路素子からの出力は、トリガ条件は識別されなかったことを示す。
【００４７】
１つの実施例では、様々なフィルタ回路からの出力は、フィルタ回路からの受信された出力に応じてトリガ信号をアサートするように次いで配置することができるトリガ信号生成回路素子１７５への入力として直接経路指定することができる。１つの実施例では、トリガ信号生成回路素子は単純に、フィルタ回路からの出力のいずれかがアサートされる（すなわち、トリガ条件の検出を示す）場合にトリガ信号がアサートされるように、ＯＲ関数を実装することができる。
【００４８】
しかしながら、１つの実施例では、リンク制御ブロック１５０、１５５、１６０は、１ペアの比較器からの出力がリンクされることを可能にするために提供され得る。具体的には、リンク制御要素１５０、１５５は、フィルタ回路１２０、１３０からの出力を、トリガ信号生成回路素子に直接経路指定するのではなくて、結合回路素子１７０に経路指定するように配置され得る。リンク制御要素１６０は、さらなる比較／フィルタ・ブロックに関連付けられた別のリンク制御要素と、別の結合回路素子（図示せず）との組合せで同様に構成され得る。トリガ信号生成回路素子は、次いで、結合回路素子１７０から出力を受信する。結合回路素子は、それがリンク制御ブロック１５０、１５５から受信した１ペアの入力に論理組合せ動作を実行することができ、１つの実施例では、それらの２つの入力に「ＡＮＤ」関数を実行するように配置され得る。これは、プログラム命令実行情報の所定の項目の受信された値が範囲内にいつあるかを検出するように１ペアの比較回路が配置されることを可能にする。したがって、たとえば、比較回路素子１１５は、受信した値がある特定の指定されたマッチ値より大きいときにトリガ信号を発行することができ、一方、比較回路素子１２５は、受信した値が別の指定されたマッチ値未満であるときにトリガ信号を発行することができ、それにより、結合回路素子１７０は、両方の条件が満たされているときにはいつでも、すなわち、２つのマッチ値によって適格とされた指定された範囲内に受信した値がある場合には、トリガ信号をアサートすることになる。
【００４９】
記載されている実施例によれば、少なくとも１つのイベントも存在すると判定されたかどうかに応じて、比較回路によってエンコードされた範囲内で値が検出されることによりトリガ信号のアサーションが行われ得るように、フィルタ回路１２０、１３０のうちの１つ又は両方がまた、関連する比較回路からの出力にフィルタリング条件を適用するように配置され得る。
【００５０】
処理要素１０は、関連プログラム命令実行情報がパス２５を介して提供されることと、パス３５を介するイベント指示の伝播を同期させるように何らかの必要とされる同期化動作を実行するように配置され得る。いくつかの実施例では正確な同期化は必要とされないことがあることにさらに留意されたい。実際、多数のＤＷＴウォッチポイント機構は、不正確な性質を既に有し、記載の実施例のイベント指示を付加的に使用するときにこのようなＤＷＴウォッチポイント機構の不正確な性質による何らかのずれは、問題にはならず、既存の挙動と実際に一致していることになろう。
【００５１】
トリガ信号が、トリガ信号生成回路素子１７５からアサートされるとき、処理要素１０は、様々な方法で反応することができる。１つの実施例では、処理要素１０は、プログラム・コードをさらに分析するために適切な例外処理ルーチンを実行させるように割り込みをとるように配置され得る。
【００５２】
図３は、何らかの関連リンク制御ブロック又は結合回路内に提供され得る構成要素とともに、各比較／フィルタ・ブロック内に提供された構成要素をさらに詳細に示すブロック図である。図３を目的として、図２の比較回路素子１１５及びフィルタ回路素子１２０が考慮されているが、１つの実施例では、その他の比較回路１２５、１３５及びフィルタ回路１３０、１４０の各々が、同じ方法で構築される。比較回路素子１１５は、マルチプレクサ２１０からの出力及びマッチ値レジスタ２０５からの出力を受信する比較器２００を含む。制御レジスタ２１５は、制御情報を記憶するためのいくつかのフィールドを与えられている。フィールド２２０では、プログラム命令実行情報の所望の項目を比較器２００に経路指定するように、マルチプレクサ２１０を制御するために使用される比較制御情報が与えられている。たとえば、１つの実施例では、それは、比較器が特定の命令がいつ実行されるかを判定しようとしている場合に比較器に命令アドレス情報を転送するように配置され得る。マッチ値レジスタ２０５は、次いで、前述の実例を考えると特定の命令アドレスでもよい、比較器によって比較されることになるマッチ値でプログラムされることになる。マルチプレクサ２１０からの出力がレジスタ２０５内のマッチ値とマッチしたとき、トリガ条件信号が、比較器２００の出力においてアサートされる。
【００５３】
上記で論じた実例では比較器は入力において同等を探しているが、比較器はまた、他のタイプの比較、たとえばマルチプレクサ２１０からの入力がいつレジスタ２０５内の値より大きいか又はレジスタ２０５内の値より小さいかを判定すること、を実行するように配置することができる。
【００５４】
フィルタ回路素子１２０は、比較器回路素子２００からの出力信号を受信するように、パス３５を介して受信したイベント指示に応じてリンク制御ブロック１５０へのその信号の前方伝播を適格とするように配置される。１つの実施例では、フィルタ回路素子は、比較器２００から出力信号を１つの入力として受信する、及びマルチプレクサ２４５からの出力信号を別の入力として受信する、ＡＮＤゲート２４０を含む。マルチプレクサ２４５は、様々なイベント指示信号を受信するように配置され、１つの実施例では、論理１値にセットされたさらなる入力も有する。制御レジスタ２１５のフィールド２２５内のフィルタ制御情報は、次いで、ＡＮＤゲート２４０に出力するための入力のうちの１つを選択するようにマルチプレクサ２４５を制御するために使用することができる。フィルタリングが必要とされないとき、トリガ条件が比較器の出力において論理１値でアサートされるときに、これがリンク制御ブロック１５０に直接経路指定されるように、フィルタ制御情報は、マルチプレクサ２４５へのハードワイヤード論理１入力をＡＮＤゲート２４０へ出力させることができる。しかしながら、別法として、フィルタ制御情報は特定のイベントを識別することができ、そのイベントが存在し、ゆえに、論理１値が関連イベント指示ラインでアサートされるときだけに、ＡＮＤゲート２４０が比較器からのアサートされたトリガ条件がリンク制御ブロック１５０へと伝播されることを可能にする。
【００５５】
リンク制御ブロック１５０は、次いで、制御レジスタ２１５のフィールド２３０内のリンクされた比較器制御値によって制御することができる。具体的には、比較回路素子１１５が、その隣接する比較回路素子とリンクされていない場合、次いで、制御フィールド２３０内の値は、パス２５２を介してリンク制御デマルチプレクサ２５０にその入力を出力させることになる。反対に、比較回路素子１１５がそれの隣接する比較回路素子１２５とリンクされている場合、フィールド２３０内の値は、デマルチプレクサ２５０に、それの入力として受信された信号をパス２５４を介して結合回路素子１７０へ経路指定させることになる。前述のように、１つの実施例では、アサートされたトリガ条件もまた隣接する比較／フィルタ・ブロック１０５から受信される場合にトリガ条件が単にトリガ信号生成回路素子にアサートされるように、結合回路素子は単に、ＡＮＤゲート２６０の形をとることができる。
【００５６】
必要に応じて、制御レジスタ２１５はまた、図３ではフィールド２３５によってまとめて示されている、さらなる制御情報を任意選択的に含むことができる。この制御情報は、様々な形をとることができ、たとえば、関連比較回路素子がどのように使用され得るかに関するいくらかの情報、受信されたプログラム命令実行情報の項目に関連するデータ・サイズなど、を提供する。
【００５７】
図３では、アサートされた信号は論理１値を有し、デアサートされた信号は論理０値を有する、と仮定されている。しかしながら、必要に応じて、論理１及び０値の意味は入れ替えることができ、論理ゲートはそれに応じて変更されることが、理解されよう。
【００５８】
図４は、１つの実施例による図３の回路素子の動作を示すフロー図である。ステップ３００において、プログラム命令実行情報の受信が待たれ、受信すると、プログラム命令実行情報の関連項目がステップ３０５で選択され（比較制御情報２２０によって制御されるものとしてのマルチプレクサ２１０によって）、その選択された項目は、次いで、レジスタ２０５内のマッチ値と比較器２００によって比較される。比較器２００によって探されている比較条件が存在すると判定された場合、図４ではマッチが検出されることと呼ばれる（ステップ３１０を参照）、次いで、工程はステップ３２０に進み、そこでは、次いで、資格条件が満たされているかどうかが判定される。これは、マルチプレクサ２４５の出力によってＡＮＤゲート２４０の制御を介して評価される。資格条件が満たされている場合、次いで、アクティブ・トリガ信号がステップ３２５において伝播され、図３の実施例では、このアクティブ・トリガ信号は、次いで、リンク制御ブロック１５０によって受信されることになる。
【００５９】
しかしながら、マッチがステップ３１０で検出されない場合、又は、マッチは検出されたが、視覚情報は満たされていないと判定された場合、工程はステップ３１５に進み、そこでは、非アクティブ・トリガ信号が伝播される。
【００６０】
図２の前述の説明から明らかなように、必要に応じて、ステップ３２５、３１５で特定の比較／フィルタ・ブロックによって発行された任意のアクティブ又は非アクティブ・トリガ信号が、トリガ信号がトリガ信号生成回路素子１７５によって処理要素１０へアサートして返されるべきかどうかを判定するために、他の比較／フィルタ・ブロックからの出力と論理的に結合され得る。
【００６１】
図５は、使用することができる監視回路素子の代替配置を示す。前述で論じた図２と図５の比較から、構造は非常に類似しているが、この実施例では、フィルタ回路は、比較回路からの出力にフィルタリング動作を実行するのではなくて、比較回路への有効化入力を適格とすることが理解されよう。したがって、この実施例では、各比較／フィルタ・ブロック３５０、３５５、３６０はフィルタ回路素子３６５、３７０、３７５を含み、各フィルタ回路素子は、様々なイベント指示を受信し、次いで、関連比較回路１１５、１２５、１３５の有効化信号を生成する。ここで、図６のフロー図を参照して、各比較／フィルタ・ブロックの動作について論じる。
【００６２】
ステップ４００において、プログラム命令実行情報が待たれ、受信すると、フィルタ回路素子は、次いで、様々なイベント指示の評価を介して、資格条件が満たされているかどうかをステップ４０５において判定する。資格条件が満たされていない場合、次いで、比較回路素子に対する有効化信号はアサートされず、それにより、そうでない場合には比較回路素子によって実行されたであろうステップ４２５における比較動作を無効化する。結果として、比較回路素子からの出力信号は、アサートされていない状態に維持され、ステップ４３０において非アクティブ・トリガ信号を伝播させる。
【００６３】
ステップ４０５において資格条件が満たされていると判定された場合、次いで、ステップ４１０において比較回路素子がプログラム命令実行情報の関連項目を選択し、それをマッチ値と比較し、その後、ステップ４１５において、マッチが検出されたかどうかが判定される。検出されなかった場合、次いで、非アクティブ・トリガ信号がステップ４３０で伝播されるが、マッチ条件が存在すれば、アクティブ・トリガ信号がステップ４２０で伝播される。
【００６４】
図７は、受信されたプログラム命令実行情報が関連比較回路素子による比較動作を受ける前に、この受信されたプログラム命令実行情報に作用するためにフィルタ回路素子が使用される、さらなる代替実施例を示す。したがって、各比較／フィルタ・ブロック５００、５０５、５１０は、プログラム命令実行情報を受信するフィルタ回路素子５１５、５２０、５２５を含み、その情報を関連比較回路素子１１５、１２５、１３５に提供する前に選択的に修正する。このような実施例における各比較／フィルタ・ブロックの動作について、図８を参照してここで論じる。
【００６５】
ステップ６００において、プログラム命令実行情報が待たれ、受信したとき、フィルタ回路素子は、次いで、受信されたイベント指示の分析によって資格条件が満たされているかどうかをステップ６０５で判定する。満たされている場合、次いで、ステップ６１０で、プログラム命令実行情報が、比較回路素子に変更なく転送され、比較回路素子は、次いで、プログラム命令実行情報の関連する項目を選択し、それをマッチ値と比較する。マッチが、次いで、ステップ６１５で検出された場合、アクティブ・トリガ信号がステップ６２０で伝播されるが、そうでない場合、非アクティブ・トリガ信号がステップ６３５で伝播される。
【００６６】
ステップ６０５でフィルタ回路素子が資格条件が満たされていないと判定した場合、次いで、ステップ６２５で、フィルタ回路素子は、受信された命令実行情報を何らかの所定の方式で修正する。具体的には、目的は、関連比較回路素子によってマッチが検出される結果をもたらし得ない形をプログラム命令実行情報がその場合にとるように、フィルタ回路素子がプログラム命令実行情報を修正することである。たとえば、プログラム命令実行情報のある特定の不正な値が存在することがあり、フィルタ回路素子は、ステップ６２５でプログラム命令実行情報をそれらの不正な値にセットし得る。
【００６７】
ステップ６３０で、比較回路素子が、次いで、修正された命令実行情報を受信するとき、比較回路素子は、プログラム命令情報の関連項目を選択し、それを通常の方法でマッチ値と比較するが、命令実行情報に実行された修正により、マッチは検出されないことになる。結果として、工程は、ステップ６３５に進むことになり、そこで、非アクティブ・トリガ信号が伝播される。
【００６８】
前述の実施例から、記載された実施例のフィルタ回路素子の使用を介して、関連比較回路の動作が適格とされ得ることが分かる。したがって、比較器が、その通常の動作の間にマッチする（たとえば、プログラム・カウンタ値、データ・アドレス値又はデータ値のマッチに基づいて）場合、比較器は、関連イベントフィルタ条件もまた存在すると判定された場合に、アサートされたトリガ条件のみを発行することになる。イベントフィルタ条件が存在しない場合、次いで、関連比較器からのアサートされたトリガ条件は、抑制される。１つの実施例では、必要に応じてフィルタ機能をオフにできるようにするために、フィルタ制御情報は、比較回路からの出力のフィルタリングなしを効果的に適用するように設定することができる。
【００６９】
前述したように、リンクされた比較器とフィルタリング機能を結合させることが可能である。たとえば、リンクされたペア内の比較器のうちの１つがイベントでフィルタされる場合、全ウォッチポイント・トリガは、そのイベントを条件とされる。これにより、たとえば、アドレス範囲内で発生する何らかの指定されたイベントのウォッチポイントをトリガすることを可能にすることになる。
【００７０】
比較器条件及び両方のイベントがマッチした場合に対応するウォッチポイントのみがトリガされるように、リンクされたペア内の両方の比較器にフィルタリング条件を追加することもまた可能である。選ばれたイベントが異なる場合、それらのイベントのすべてが同時にアクティブであるときにのみウォッチポイントはトリガすることになる。これにより、たとえば、アドレス範囲内で２つのイベントが同時に起こるときにはいつでも、たとえば命令アドレスの特定の範囲内でキャッシュ・ミスイベントと同時に黙示的分岐が生じた場合に、ウォッチポイントをトリガすることを可能にすることになる。これは、低コストで非常に高機能の条件フィルタリングを可能にする。
【００７１】
特定の例示的使用事例として、以下のコードのセグメントを考える：
０ｘ１０００  ＢＦＸ  Ｒｎ  ＠  ０ｘ１００Ｃ  −＞  ？？？
０ｘ１００４．．．
０ｘ１００８．．．［分岐未来トリガ分岐がここで並行して生じる］
０ｘ１００Ｃ．．．
．．．
０ｘ１０５４  ＢＸ  Ｒｎ
【００７２】
この実例では、分岐−未来の実行（ＢＦＸ：ｅｘｅｃｕｔｉｏｎ  ｏｆ  ｔｈｅ  ｂｒａｎｃｈ−ｆｕｔｕｒｅ）命令により、命令アドレス０ｘ１００Ｃに関連付けられた未来分岐をセットアップし、この分岐は、レジスタＲｎ内に含まれる知られていないロケーションに対してである。対応する分岐は、行われるならば、０ｘ１００８における命令の実行と並行して生じる（すなわち、この実施例では、プログラム・カウンタが０ｘ１００Ｃに更新されるときに、但しそのアドレスにおける命令の実行の前に、生じる）。分岐が行われない場合（本実装は、この分岐を行うか否かを自由に選択する）、対応する分岐命令で終了することもしないこともある潜在的に多数の命令を含むフォールバック・パスが辿られる。
【００７３】
このコードが望ましくない形で機能しているときにプログラマがこのコードをデバッグしたいと考えたと仮定する。これは、アドレス０ｘ１００８及び０ｘ１０５４においてブレイクポイントを設定して必要な洞察を得ることを必要とすることになる。しかしながら、０ｘ１００８におけるブレイクポイントは、分岐−未来命令によってセットアップされた分岐が行われる場合にのみ必要である。
【００７４】
本明細書に記載されている提案されるＤＷＴ拡張は、これが、アドレス０ｘ１０５４上の通常のブレイクポイントと、ＢＦＸ命令によって確立された分岐挙動もまたそのロケーションで生じる場合にのみトリガすることになるアドレス０ｘ１００８上のブレイクポイントとを設定することによって行われることを可能にする。別法として、分岐−未来トリガ分岐細粒問題（たとえば、無効なプログラムの結果として、不良分岐−未来トリガ分岐が、予期されていないロケーションにおいて生じる）をプログラマが識別することを可能にし得る、アドレス範囲０ｘ１０００−０ｘ１０５４内の任意のこのような分岐−未来トリガ分岐を分割するために、１ペアの比較器を使用することができる。
【００７５】
前述の実施例から、フィルタリング機能が非常に低コストで監視回路素子内に組み込まれ得ることが理解されよう。たとえば、監視回路素子はコアパイプラインの端部に置かれたＤＷＴ回路素子である状況を考えると、これは、アドレス及びデータ値をマッチさせる能力を既に有することになる。図３の再考察から、追加のフィルタ回路素子を組み込むためには、制御レジスタ２１５内のいくつかの追加のビット２２５によって制御される関連マルチプレクサ２４５を有するＡＮＤゲート２４０など、単純な論理関数を追加することのみが必要であることが、理解されよう。フィールド２２５内で必要とされるビットの数は、監視されているイベント指示の数に依存するが、１つの実施例では、制御レジスタ２１５内に２つの追加のビットのみを必要とし得る。そのとき、イベント指示を提供するＤＷＴへのコアからの追加の信号を、それらの信号が既に存在しない場合に、提供することが単に必要とされる。これは、たとえば、イベントごとに単一のビット・ワイヤを含み得る。前述のように、遅延機構もまた、監視回路素子２０によって受信されるときに関連プログラム命令情報とイベント情報を一致させるために、処理要素１０内に実装され得る。
【００７６】
前述のように、このようなフィルタリング機能を比較機能と組み合わせることによって、これは、挙動の複雑な組合せが処理要素１０内で監視されることを可能にし、これにより、プログラム開発者及び彼らが使用するツールに彼らのプログラム内の問題を診断する能力の改善をもたらす。
【００７７】
本願において、「構成される」という用語は、装置の要素は定義された動作を実行することができる構成を有することを意味するために使用される。これに関連して、「構成」は、ハードウェア又はソフトウェアの相互接続の配置又は方式を意味する。たとえば、装置は、定義された動作を提供する専用ハードウェアを有し得、或いはプロセッサ又は他の処理デバイスが、その機能を実行するようにプログラムされ得る。「ように構成される」は、装置要素が、定義された動作を提供するために任意の方法で変更される必要があることを暗示しない。
【００７８】
本発明の説明の実施例は、添付の図面を参照して詳細に本明細書で記述されているが、それらの正確な実施例に本発明は制限されないことと、様々な変更、追加、及び修正が、添付の特許請求の範囲によって定義されるものとしての本発明の範囲及び趣旨を逸脱することなく、その中で当業者によってもたらされ得ることと、を理解されたい。たとえば、従属請求の特徴の様々な組合せが、本発明の範囲を逸脱することなく、独立請求の特徴で行われ得る。
【図１】
2019531542.tif 000003
【図２】
2019531542.tif 000004
【図３】
2019531542.tif 000005
【図４】
2019531542.tif 000006
【図５】
2019531542.tif 000007
【図６】
2019531542.tif 000008
【図７】
2019531542.tif 000009
【図８】
2019531542.tif 000010
【国際調査報告】
2019531542.tif 000011
2019531542.tif 000012
2019531542.tif 000013