(57)【要約】  非侵入的追跡を行う方法及び装置である。本方法は、選択されたイベントを複数のカウンタにより計数するステップと、事前定義されたトリガリング・イベントに応答して、複数のカウンタをサンプリングして複数のカウンタ値を検索するステップと、少なくとも１つのプログラム・カウンタ値を備える追加の追跡情報を受け取るステップと、複数のカウンタ値及び追加の追跡情報のうちの少なくとも１つを追跡情報として出力するステップとを含む。
2008513875.tif 000002
【特許請求の範囲】
【請求項１】
非侵入的追跡を行う装置であって、
複数の選択されたイベントを計数するよう動作可能である複数のカウンタと、
前記複数のカウンタに結合された複数のシャドウ・レジスタであって、トリガリング・イベントに応答して、前記複数のカウンタをシームレスの要領でサンプリングして複数のカウンタ値を与える複数のシャドウ・レジスタと、
前記複数のカウンタ及び前記複数のシャドウ・レジスタに結合されたカウンタ及びレジスタ論理であって、前記複数のカウンタ及び複数のシャドウ・レジスタの動作を制御するよう動作可能であるカウンタ及びレジスタ論理と、
前記複数のシャドウ・レジスタに結合された追跡論理であって、（ｉ）複数のカウンタ値を受け取り、及び少なくとも１つのプログラム・カウンタ値を備える追跡情報を受け取り、且つ（ｉｉ）前記複数のカウンタ値及び前記追加の追跡情報のうちの少なくとも１つを出力するよう適合された追跡論理と
を備える装置。
【請求項２】
仮想追跡バッファへの追跡情報の書き込みプロセスを制御するよう適合された追跡書き込み管理ユニットを更に備える請求項１記載の装置。
【請求項３】
追跡情報を受け取って、当該追跡情報を前記仮想追跡バッファに与える追跡書き込みバッファを更に備える請求項２記載の装置。
【請求項４】
追跡情報を圧縮するよう適合された圧縮器を更に備える請求項１記載の装置。
【請求項５】
前記圧縮器が、ループの発生を指示する追跡情報を取り除くことにより追跡情報を圧縮するよう適合されている請求項４記載の装置。
【請求項６】
前記圧縮器が更に、ループ・フラグ、ループ反復の回数を表す指示及びループ・アドレスを与えることによりループの発生の指示を与えるよう適合されている請求項５記載の装置。
【請求項７】
前記複数のカウンタは、カウンタ・セットに整列され、
前記カウンタ及びレジスタ論理が、１組のイベントを追跡するため１組のレジスタをプログラムするよう動作可能である
請求項１記載の装置。
【請求項８】
イベントに応答して割り込みを開始するよう更に適合されている請求項１記載の装置。
【請求項９】
追跡情報を高レベル追跡情報構成要素に与えるよう更に適合されている請求項１記載の装置。
【請求項１０】
少なくとも１つのトリガリング・イベントが、事前定義された追加の追跡情報の受け取りである請求項１記載の装置。
【請求項１１】
少なくとも１つのトリガリング・イベントが、フロー・イベントの変化である請求項１記載の装置。
【請求項１２】
少なくとも１つのトリガリング・イベントが、追跡されたプロセッサの特権レベルの変化である請求項１記載の装置。
【請求項１３】
非侵入的追跡を行う方法であって、
選択されたイベントを複数のカウンタにより計数するステップと、
事前定義されたトリガリング・イベントに応答して、前記複数のカウンタをサンプリングして複数のカウンタ値を検索するステップと、
少なくとも１つのプログラム・カウンタ値を備える追加の追跡情報を受け取るステップと、
前記複数のカウンタ値及び前記追加の追跡情報のうちの少なくとも１つを追跡情報として出力するステップと
を備える方法。
【請求項１４】
追跡情報を仮想追跡バッファに書き込むステップを更に備える請求項１３記載の方法。
【請求項１５】
前記追加の追跡情報を圧縮して、圧縮された追跡情報を与えるステップを更に備える請求項１３記載の方法。
【請求項１６】
前記の圧縮するステップが、ループの発生を指示する追跡情報を取り除くステップを備える請求項１５記載の方法。
【請求項１７】
前記の圧縮するステップが、ループ・フラグ、ループ反復の回数を表す指示、及びループ・アドレスを備えるループの発生の指示を生成する請求項１５記載の方法。
【請求項１８】
１組のカウンタを構成して、１組のイベントを計数する準備ステップを更に備える請求項１３記載の方法。
【請求項１９】
少なくとも１つのトリガリング・イベントが、事前定義された追加の追跡情報の受け取りである請求項１３記載の方法。
【請求項２０】
少なくとも１つのトリガリング・イベントが、フロー・イベントの変化である請求項１３記載の方法。
【請求項２１】
少なくとも１つのトリガリング・イベントが、追跡されたプロセッサの特権レベルの変化である請求項１３記載の方法。
【請求項２２】
前記追加の追跡情報が更に、プロセッサ特権レベル指示を備える請求項１記載の装置。
【請求項２３】
前記追加の追跡情報が更に、プロセッサ特権レベル指示を備える請求項１３記載の方法。
【請求項２４】
前記追跡データが、追跡フラグを備える請求項１３記載の方法。
【請求項２５】
前記追跡フラグが、タスク・フラグ、スーパーバイザ・タスク・フラグ、短ループ・フラグ、長ループ・フラグ、及びＶＴＢ充填フラグから成るグループから選択される請求項２４記載の方法。
【請求項２６】
前記出力追跡データが、追跡フラグを備える請求項１記載の装置。
【請求項２７】
前記追跡フラグが、タスク・フラグ、スーパーバイザ・タスク・フラグ、短ループ・フラグ、長ループ・フラグ、及びＶＴＢ充填フラグから成るグループから選択される請求項２７記載の装置。
【請求項２８】
非侵入的追跡を行う装置であって、
複数の選択されたイベントを計数するよう動作可能である複数のカウンタと、
前記複数のカウンタに結合された複数のシャドウ・レジスタであって、トリガリング・イベントに応答して、前記複数のカウンタをシームレスの要領でサンプリングして複数のカウンタ値を与える複数のシャドウ・レジスタと、
前記複数のカウンタ及び前記複数のシャドウ・レジスタに結合されたカウンタ及びレジスタ論理であって、前記複数のカウンタ及び複数のシャドウ・レジスタの動作を制御するよう動作可能であるカウンタ及びレジスタ論理と、
前記複数のシャドウ・レジスタに結合された追跡論理であって、前記複数のカウンタ値のうちの少なくとも１つを出力するよう適合された追跡論理と
を備える装置。
【請求項２９】
非侵入的追跡を行う方法であって、
選択されたイベントを複数のカウンタにより計数するステップと、
事前定義されたトリガリング・イベントに応答して、前記複数のカウンタをサンプリングして複数のカウンタ値を検索するステップと、
前記複数のカウンタ値を追跡情報として出力するステップと
を備える方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ・ベースのデバイスで生じるイベントを追跡する方法に関し、特に、非侵入的追跡を行う方法及び装置システムに関する。
【背景技術】
【０００２】
最新のマイクロプロセッサは、非常に複雑である。それらは、通常、複数のタスクを非常に高速で実行することが可能である複数の構成要素を含む。多くの最新のデバイスは、通常、１又はそれより多いプロセッサ、コントローラ、及び、キャッシュ・メモリを含む様々なメモリ・モジュールを含む。
【０００３】
コンピュータ化されたシステムが動作する仕方を表すことが出来る情報を抽出する様々なシステム及び方法が、知られている。これらの装置は、オンチップ・デバッガ、オンチップ・エミュレータ及び類似のものを含む。
【０００４】
ＩＥＥＥ−ＩＳＴＯ５００１（登録商標）標準は、ＮＥＸＵＳとして知られているが、これは、埋め込み型制御アプリケーションのための標準デバッグ・インターフェースを定義する。ＮＥＸＵＳは、比較的限定された量のデバッギング情報を与えるが、プロセッサを制御することが可能である。追跡された情報は、専用Ｉ／Ｏピンを介して又はＪＴＡＧインターフェースを介して送信されることができるが、しかしこれは、必ずしもそうであるわけではない。
【０００５】
以下の米国特許及び米国特許出願は、全て本明細書に援用されているが、デバッギング及びエミュレーション装置及び方法の最新の技術の例を与える。以下の米国特許及び米国特許出願とは、発明の名称が「各分岐命令後に又は各コード基本ブロックの終わりでプログラムされた追跡割り込みを利用してハードウエア・カウンタを追跡するシステム（Ｓｙｓｔｅｍ  ｆｏｒ  ｔｒａｃｉｎｇ  ｈａｒｄｗａｒｅ  ｃｏｕｎｔｅｒｓ  ｕｔｉｌｉｚｉｎｇ  ｐｒｏｇｒａｍｍｅｄ  ｔｒａｃｅ  ｉｎｔｅｒｒｕｐｔ  ａｆｔｅｒ  ｅａｃｈ  ｂｒａｎｃｈ  ｉｎｓｔｒｕｃｔｉｏｎ  ｏｒ  ａｔ  ｔｈｅ  ｅｎｄ  ｏｆ  ｅａｃｈ  ｃｏｄｅ  ｂａｓｉｃ  ｂｌｏｃｋ）」であるＳｍｏｌｄｅｒｓの米国特許Ｎｏ．６５３３３８、発明の名称が「データ処理システム内の診断プログラム・カウンタ値データへのアクセス（Ａｃｃｅｓｓｉｎｇ  ｄｉａｇｎｏｓｔｉｃ  ｐｒｏｇｒａｍ  ｃｏｕｎｔｅｒ  ｖａｌｕｅ  ｄａｔａ  ｗｉｔｈｉｎ  ｄａｔａ  ｐｒｏｃｅｓｓｉｎｇ  ｓｙｓｔｅｍ）」であるＷｉｌｌｉａｍｓ他の米国特許出願Ｎｏ．２００２／００４９８９３、発明の名称が「追跡情報を格納する回路（Ｃｉｒｃｕｉｔ  ｆｏｒ  ｓｔｏｒｉｎｇ  ｔｒａｃｅ  ｉｎｆｏｒｍａｔｉｏｎ）」であるＥｄｗａｒｄｓ他の米国特許Ｎｏ．６６１５３７０、及び発明の名称が「プログラマブル・ハードウエア・イベントのモニタリング方法（Ｐｒｏｇｒａｍｍａｂｌｅ  ｈａｒｄｗａｒｅ  ｅｖｅｎｔ  ｍｏｎｉｔｏｒｉｎｇ  ｍｅｔｈｏｄ）」であるＶａｎＨｕｂｅｎ他の米国特許Ｎｏ．６１３４６７６である。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
複雑なプロセッサ・ベースのシステムの挙動を表す大量の情報を与える、特に、互いに関連したイベントについての情報を与える必要性がある。
標準の追跡情報を標準化されたインターフェースを介して与えることを妨げること無しに、既知の標準により要求される情報に加えて、追跡情報を与える必要性がある。
【課題を解決するための手段】
【０００７】
本発明は、選択されたイベントを計数する複数のカウンタ値を表すことができる追跡情報を与えることを可能にする。追跡情報は、上記の値の代わりに、又は上記の値に加えて、追加の追跡情報を含むことができる。追加の追跡情報は、プログラム・カウンタ値、プロセッサの特権レベル、及びタスクＩＤのうちの少なくとも１つを含む。
【０００８】
本発明は、受け取られた追加の追跡情報に応答して、１又はそれより多いカウンタのコンテンツをサンプリングすることを可能にする。
本発明は、プロセッサと関連付けられるイベントに関連する情報、並びにプロセッサ以外の構成要素のイベントに関連する情報を与えることを可能にする。
【０００９】
本発明は、非侵入的追跡を行う装置であって、（ｉ）複数の選択されたイベントを計数するよう動作可能である複数のカウンタと、（ｉｉ）前記複数のカウンタに接続された複数のシャドウ・レジスタであって、トリガリング・イベントに応答して、前記複数のカウンタをシームレスの要領でサンプリングして、複数のカウンタ値を与える複数のシャドウ・レジスタと、（ｉｉｉ）前記複数のカウンタ及び前記複数のシャドウ・レジスタに接続されたカウンタ及びレジスタ論理であって、前記複数のカウンタ及び複数のシャドウ・レジスタの動作を制御するよう動作可能であるカウンタ及びレジスタ論理と、（ｉｖ）前記複数のシャドウ・レジスタに接続された追跡論理であって、［ｉ］複数のカウンタ値を受け取り、且つ少なくとも１つのプログラム・カウンタ値と、プロセッサ特権レベル指示及びタスクＩＤのうちの少なくとも１つとを含む追加の追跡情報を受け取り、且つ［ｉｉ］前記複数のカウンタ値及び前記追加の追跡情報のうちの少なくとも１つを出力するよう適合された追跡論理とを備える装置を提供する。
【００１０】
本発明は、非侵入的追跡を行う方法であって、（ｉ）選択されたイベントを複数のカウンタにより計数するステップと、（ｉｉ）事前定義されたトリガリング・イベントに応答して、前記複数のカウンタをサンプリングして、複数のカウンタ値を検索するステップと、（ｉｉｉ）少なくとも１つのプログラム・カウンタ値、プロセッサ特権レベル指示、及び／又はタスクＩＤを含む追加の追跡情報を受け取るステップと、（ｉｖ）前記複数のカウンタ値又は前記追加の追跡情報或いはこれら両方を追跡情報として出力するステップとを備える方法を提供する。
【００１１】
本発明は、添付図面と関係した以下の詳細な説明からより完全に理解され認められるであろう。
【発明を実施するための最良の形態】
【００１２】
図１は、本発明の一実施形態に従ったシステム１００を示す。システム１００は、デジタル信号プロセッサ（ＤＳＰ又はプロセッサと呼ばれる）１１０、データ・チャネル１３０、メモリ管理ユニット（ＭＭＵ）３００、命令チャネル３４０、レベル１ＲＡＭメモリ３７０、並びにインターフェース・ユニット３８０を含む。
【００１３】
プロセッサ１１０、命令チャネル３４０、共用メモリ３７０、及びＭＭＵ３００は、単一のプログラム・バス１２０に接続されている。命令チャネル３４０は、命令キャッシュ・モジュール３５０と、当該命令キャッシュ・モジュール３５０のため命令フェッチ及び事前フェッチを行うことを担う命令フェッチ・ユニット（ＩＦＵ）３６０とを含む。
【００１４】
ＤＳＰ１１０は、第１のデータ・ポート１１６及び第２のデータ・ポート１１８を有する。第１のデータ・ポート１１６は、第１のデータ・バス（ＸＡ）１２２を介して、データ・チャネル１３０の第１のポート１３２、ＭＭＵ３００、及びレベル１ＲＡＭメモリ３７０に接続される。第２のデータ・ポート１１８は、第２のデータ・バス（ＸＢ）１２４を介して、データ・チャネル１３０の第２のポート１３４、ＭＭＵ３００及びレベル１ＲＡＭメモリ３７０に接続される。説明を簡単にするため、データ・バス及びアドレス・バスのそれぞれと関連したアドレス・バスは、示されていない。
【００１５】
データ・チャネル１３０は、データ・フェッチ・バス１２６を介してインターフェース・ユニット３８０に接続され、次いで、当該インターフェース・ユニット３８０は、高レベル・メモリ５０のような１又はそれより多い追加のメモリに接続される。追加のメモリは、マルチレベル・キャッシュ・アーキテクチャの一部であることができるのに対して、データ・チャネル内のデータ・キャッシュ・モジュールは、第１レベル・キャッシュ・モジュールであり、そして他のメモリは、レベル２キャッシュ及び／又はメモリである。それらはまた、メイン・メモリと呼ばれる外部メモリの一部であることができる。
【００１６】
ＭＭＵ３００は、プログラム及びデータ・ハードウエア保護を提供するハードウエア保護ユニット３２０、及び仮想アドレスを物理アドレスに高速で変換する変換ユニット３１０を含む。ＭＭＵ３００はまた、様々なキャッシュ及びバス制御信号を与えることが可能である。仮想アドレスは、プロセッサ１１０により発生されるアドレスであり、そしてプロセッサ１１０によって実行されるコードにより見られるようにである。物理アドレスを用いて、様々なメモリ・バンクにアクセスする。データ・チャネル１３０は、追跡書き込みバッファ（ＴＷＢ）１６０と、キャッシュ・メモリ及び１又はそれより多い追加の書き込みバッファのような複数のメモリ・エンティティ（一括して１６２と示す。）と、ＴＷＢ１６０のバス要求と他のメモリ・エンティティ１６２のバス要求との間を調停するデータ制御ユニット（ＤＣＵ）１５０とを含む。ＤＣＵ１５０は、様々な周知の調停スキームを適用することができる。ＤＣＵ１５０が、事前定義された優先順位に従って様々なバス要求間を調停することが都合良い。ＴＷＢ１６０は、通常、低い優先順位のバス要求をＴＷＢ１６０から出すが、しかし幾つかの場合、高い優先順位のバス要求を同様に出すことができる。
【００１７】
図２は、本発明の一実施形態に従ったデバッギング及びプロファイリング・ユニット（ｄｅｂｕｇｇｉｎｇ  ａｎｄ  ｐｒｏｆｉｌｉｎｇ  ｕｎｉｔ）（ＤＰＵ）５００の概略図である。
【００１８】
ＤＰＵ５００は、各組が３つのカウンタからなるその２組に構成されているカウンタ６１１−６１６のような複数のカウンタ、複数のシャドウ・レジスタ６２１−６２６、カウンタ及びレジスタ論理６１０、ＩＤを比較する論理（以下「ＩＤ比較論理」と記す。）６４５、ＮＥＸＵＳインターフェース６７５、インターフェース６２９、追跡書き込み管理ユニット６４０のような複数の追跡論理ユニット、第１のスイッチ・ユニット６５０、圧縮器６５５、第２のスイッチ・ユニット６７０、及び追跡情報論理６５２を含む。ＤＰＵ５００は、オンチップ・エミュレータ・ユニット（これはまたＥＯｎＣＥと呼ばれる。）ユニット５０２、ＮＥＸＵＳブロック５０４のような高レベル追跡情報構成要素、及びＴＷＢ１６０に接続される。本発明の他の実施形態に従って、追跡論理は、ＩＤ比較論理６４５、ＮＥＸＵＳインターフェース６７５、インターフェース６２９、及び前に言及したユニットより多くの追加のユニット又はそれより少ないユニットのうちの少なくとも１つを含む。ＥＯｎＣＥユニット５０２のようなオンチップ・エミュレーション・ユニットは、当該技術で知られている。ＥＯｎＣＥユニット５０２は、ＳＣ１４０ｅ（登録商標）ＤＳＰコア参照マニュアル（ＳＣ１４０ｅＴＭ  Ｃｏｒｅ  Ｒｅｆｅｒｅｎｃｅ  Ｍａｎｕａｌ）の４章に説明されており、それは本明細書に援用されている。
【００１９】
ＥＯｎＣＥユニット５０２は、様々なレジスタ、プログラム・カウンタ（ＰＣ）及び類似のものへの或る一定量のアクセスを許可する。それは、ＪＴＡＧインターフェース・ユニットとインターフェースして、ＪＴＡＧ準拠信号（試験データ入力ＴＤＩ、試験データ出力ＴＤＯ、試験クロック入力ＴＣＫ、試験モード選択入力ＴＭＳ及び試験リセットＴＲＳＴ）を与える。
【００２０】
簡潔に言えば、ＥＯｎＣＥユニット５０２は、ＥＯｎＣＥコントローラ、イベント・カウンタ、追跡ユニット、イベント検出ユニット、イベント・セレクタ、及び同期化ユニットを含む。イベント検出ユニットは、６個のアドレス・イベント検出チャネルＥＤＣＡ５−ＥＤＣＡ０を含み、各アドレス・イベント検出チャネルは、第１のデータ・バスＸＡ１２２又は第２のデータ・バスＸＢ１２４のいずれかと関連したアドレス・ラインで或る一定のアドレス（又は或る一定のアドレス範囲に属するアドレス）の出現を検出することが可能である。
【００２１】
ＥＯｎＣＥユニット５０２は、様々な動作モードで動作することができ、そして、様々なイベントを追跡するため、（ｉ）ＴＥＸＥＸＴ−各実行セットのＰＣを追跡すること、（ｉｉ）ＴＭＡＲＫ−ＭＡＲＫ命令を含む実行セットのＰＣを追跡すること、（ｉｉｉ）ＴＣＨＯＦ−フロー命令の事前定義された変化を含む実行セットの出所及び行先ＰＣを追跡すること、（ｉｖ）ＴＬＯＯＰ−ハードウエア・ループの実行を追跡することに対し、長いループに関して、最後のアドレス及び開始アドレスのＰＣが追跡され、そして短いループに関して、最後のアドレスのＰＣのみが追跡されること、（ｖ）ＴＳＵＢ−サブルーチン呼び出し又は戻り命令を含む実行セットの出所及び行先ＰＣを追跡すること、（ｖｉ）ＴＲＴＥ−例外からの戻り命令を含む実行セットの出所及び行先ＰＣを追跡すること、及び（ｖｉｉ）ＴＩＮＴ−割り込み及び例外の割り込み点及び行先ＰＣを追跡することを含む。その上、追跡イベントの際に、カウンタ値及び拡張カウンタ値を追跡することができる。
【００２２】
一般的に、ひとたびフローの変化が起きると、ＥＯｎＣＥユニット５０２は、１又はそれより多いプログラム・カウンタ値、並びにプロセッサの特権レベルを表すタスク・フラグを与えることができる。
【００２３】
カウンタ及びレジスタ論理６１０は、どのイベントがカウンタ６１１−６１６により計数されるであろうか、又はどのイベントがシャドウ・レジスタ６２１−６２６にカウンタ６１１−６１６を非侵入的要領でサンプリングさせるかを決定するための、制御レジスタ７１０−７３６のような複数の制御レジスタを含む。
【００２４】
カウンタ６１１−６１６の各カウンタは、ワンショット計数モード及び追跡モードで動作することができる３１ビット・ダウン・カウント・レジスタである。前者のモードでは、カウンタは、或る一定のプログラムされた値からゼロまで計数し、次いでイベントを生成して、計数することを停止する。このイベントは、プロセッサ１１０にデバッグ・モードに入らせることができ、そしてデバッグ例外又はデバッグ割り込みをトリガすることができる。後者のモードでは、カウンタは、計数することを続け、ゼロに達して折り返し、そして計数することを継続する。カウンタ６１１−６１６のコンテンツは、追跡イベントの際にシャドウ・レジスタ６２１−６２６により読み出される。ＤＰＵ５００は、ＥＯｎＣＥにより発生され又はＤＰＵ５００により発生されるかのいずれかによる追跡情報をＴＷＢ１６０を介して仮想追跡バッファ（ＶＴＢ）６７０に書き込むことができる。それはまた、追跡情報を外部ＮＥＸＵＳブロック５０４に書き込むことができる。
【００２５】
ＶＴＢ６７０は、後に説明される、様々な制御レジスタに格納される開始アドレス及び終了アドレスにより定義される、高レベル・メモリ・モジュール５０内のメモリ空間であることが都合よい。制御レジスタはまた、追跡情報を受け取るべきである現在のメモリ・エントリを指し示すポインタを保持する。
【００２６】
追跡書き込み管理ユニット６４０は、ＶＴＢ６７０への追跡情報の書き込みプロセスを制御する。追跡情報は、ＶＴＢ６７０から３つのあり得るモードで書き込まれることができる。オーバライト（上書き）・モードで動作するとき、書き込みアドレス・ラップ（ｗｒａｐ）を開始アドレスまで追跡し、そして追跡データは、古いデータをオーバライトする。この追跡モードは、ブレークポイント又はエラー点に導く追跡情報を見ることを可能にする。ワン・アドレス（１アドレス）・モードで動作するとき、追跡情報は、単一のプログラム可能なアドレスへ書き込まれる。これは、追跡情報をシリアル・インターフェース・ユニットのような周辺装置に書き込むことを可能にする。追跡イベント要求モードで動作するとき、ＶＴＢ６７０の中の情報は、ひとたびＶＴＢ６７０が一杯にされると、周期的に読み取られることができるであろう。ＤＰＵ５００は、例えば、ＤＭＡによりＶＴＢ６７０の読み出し動作を起動する割り込みを発生することができる。追跡情報は、ＤＰＵにより発生された追跡情報（例えば、６個のカウンタ６１１−６１６のコンテンツのようなもの）、ＥＯｎＣＥユニットにより発生された追跡情報、及びＥＯｎＣＥユニットにより発生され圧縮された追跡情報を含み得る。第１及び第２のスイッチ・ユニット６５０及び６７０は、どの情報を出力すべきかを選択する制御情報を受け取る。本発明の一実施形態に従って、追跡情報は、これらの情報の組み合わせを含むことができる。本発明の別に実施形態に従って、ＶＴＢ６７０は、或る一定の追跡情報を受け取ることができる一方、ＮＥＸＵＳブロック５０４は、他の追跡情報を受け取る。この分離は、当該技術で全く既知の論理構成要素により利用されることができる。
【００２７】
ＥＯｎＣＥユニットにより発生された情報は、圧縮器ユニット６５５により圧縮され、当該圧縮器ユニット６５５は、以下で言及する圧縮スキーム又は様々な周知の圧縮スキームのいずれかを適用することができる。本発明の一実施形態に従って、圧縮器は、冗長なループ情報を取り除くことによりＥＯｎＣＥユニットにより発生された追跡情報を圧縮する。例えば、追跡情報が短いハードウエア・ループの発生を表す場合、そのループの最後のアドレス、及びループが実行された回数のみが、書き込まれる。追跡情報が長いハードウエア又はソフトウエア・ループの発生を表す場合、そのループの最後のアドレス又はそのループの開始アドレス、並びにループが実行された回数のみが、書き込まれる。ＤＰＵは、短いハードウエア・ループの発生を短ループ・フラグによりマークする一方、長いソフトウエア又はハードウエア・ループの発生は、長ループ・フラグにより指示される。
【００２８】
ＴＷＢ１６０は、８つの２５６ビット・エントリ深さである。ＴＷＢ１６０がフル（一杯）であるとき、それは、高優先順位バス要求をＤＣＵ１５０に送り、さもなければ、それは、低優先順位バス要求をＤＣＵ１５０に送る。
【００２９】
ＶＴＢ６７０へのアクセス、並びに追跡情報のＴＷＢ１６０へ次いでＶＴＢ６７０への流れは、追跡されるべきである情報の量及びタイプを決定する制御信号により制御されることができる。
【００３０】
追跡情報は、複数の追跡フラグを含むことができる。各追跡フラグは、プログラム・アドレスのような他の追跡情報として解釈されることができない一意の値を有する。追跡フラグは、ダミー・フラグを除いて、追跡情報のタイプを指示する。追跡フラグは、ユーザ・タスク・フラグ、スーパーバイザ・タスク・フラグ、短ループ・フラグ、長ループ・フラグ、ＶＴＢ充填フラグ、及びダミー・フラグを含む。
【００３１】
２つのタスク・フラグ、即ち、ユーザ・タスク・フラグ及びスーパーバイザ・タスク・フラグがある。従って、タスク・フラグは、タスクの特権レベルを表す。ユーザ・タスク・フラグは、プロセッサがユーザ特権レベルで動作することを示し、そしてまたタスクＩＤを含む。スーパーバイザ・タスク・フラグは、プロセッサがスーパーバイザ特権レベルで動作することを指示する。ＶＴＢダミー・フラグ及び充填フラグは、ＴＷＢパディングのために用いられ、そして追跡情報を搬送しない。
【００３２】
表１は、本発明の一実施形態に従った例示的フラグ・フォーマットを示す。ビット０に関するＸの値は、それはこのフラグを用いる文脈に応じて０又は１であることができる（表２参照）ことを意味する。
【００３３】
【表１】
2008513875.tif 000003
【００３４】
ＤＰＵベース・アドレスは、プログラム・カウンタ値として解釈されることができない一意のアドレスである。第１の動作モードで、タスク・スイッチが生じるとき、ＤＰＵ５００は、次の情報、即ち、前のタスクの最後のＰＣ、カウンタ６１１−６１６の値、新しいタスクの第１のＰＣ、並びに新しいタスクのタスク・フラグをセーブすることができる。ＥＯｎＣＥユニット５０２は、割り込み及びＲＴＥ命令を一緒に追跡するようプログラムされるであろう。タスク・フラグは、プロセッサの特権レベルについての指示を含む。
【００３５】
第２の動作モードで、ＤＰＵ５００は、プロセッサがサブルーチン又は割り込みルーチンへジャンプ又はそれから戻るとき情報をセーブする。ひとたびそのようなイベントが生じると、ＥＯｎＣＥユニット５０２は、ＤＰＵ５００に発信元ＰＣ及び宛先ＰＣを送る。ひとたびそのような対が受け取られると、ＤＰＵ５００は、次の情報、即ち、サブルーチン又は割り込みルーチンへジャンプ又はそれから戻る前の最後のＰＣと、カウンタ６１１−６１６の値と、タスク・フラグと、フローの変化後の第１のＰＣとをサンプリングする。ＥＯｎＣＥユニット５０２は、フロー命令の次の変化、即ち、割り込みルーチンへジャンプ、割り込みサービス・ルーチンからの戻り、サブルーチンへのジャンプ、及びサブルーチンからの戻りを追跡するようプログラムされる。
【００３６】
第３の動作モードで、ＤＰＵ５００は、ＰＤ＿ＴＣ７４０の中のＳＡＭＰＬＥビット（サンプル・ビット）がセットされるとき、次の情報、即ち、タスク・フラグと、カウンタ６１１−６１６の値と、ダミー・フラグとをセーブして、各追跡メッセージのサイズが２５６ビットであることを保証する。ひとたび第１の情報部分がＴＷＢ１６０へ送られると、ＳＡＭＰＬＥビットは、リセットされる。
【００３７】
第４の動作モードで、ＤＰＵ５００は、ＥＯｎＣＥのアドレス・イベント検出チャネルＥＤＣＡ５がイベントを発生したとき情報をセーブする。なお、そのイベントは、このユニットにより検出されたいずれの種類のブレークポイントであることができるであろう。次の情報、即ち、タスク・フラグ、カウンタ６１１−６１６の値、及びダミー・フラグが、セーブされる。
【００３８】
第５の動作モードで、ひとたび書き込みアクセスが追跡データ・レジスタ（図５においてＤＰ＿ＴＤ７５０で示す。）に対して実行されると、そのコンテンツは、ＴＷＢ１６０に書き込まれる。
【００３９】
追跡情報は、ＴＷＢ１６０へ或る一定のフォーマットで書き込まれる。追跡エントリは、単一の追跡イベントの結果として発生される、ＤＰＵ５００からの任意の数の書き込みである。追跡エントリは、前述のフラグのうちの少なくとも１つを含み、そして表２に示されるフォーマットを有することが都合良い。当業者は、他のフォーマットを用いることができることを認めるであろう。
【００４０】
【表２】
2008513875.tif 000004
【００４１】
上記で言及したフォーマットに従って、ＴＷＢ１６０に書き込まれるべき第１の追跡情報は、１のＬＳＢ値により特徴付けられ、それにゼロのＬＳＢ値により特徴付けられる追加の追跡情報が続く。これは、追跡情報をパーズ（構文解析）することを容易にする。
【００４２】
ＤＰＵ５００は、複数の制御レジスタを含む。これらの制御レジスタの大部分は、カウンタ及びレジスタ論理６１０に属するが、しかし幾らかは、追跡書き込み管理ユニット６４０に属し、またＩＤ比較論理６４５に属する。これらのレジスタは、汎用制御レジスタ、制御カウンタ・レジスタ、及び追跡バッファ・レジスタを含む。
【００４３】
追跡情報論理６５２は、第１のスイッチ・ユニット６５０に接続され、そして追跡情報をＥＯｎＣＥユニット５０２から受け取り、その情報の少なくとも幾らかを事前定義された（通常プログラムされた）値と比較し、そして上記部分に応答して、１又はそれより多いトリガリング・イベントを開始し得る。追跡情報論理６５２は、カウンタ及びレジスタ論理６１０に接続されて、１又はそれより多いトリガリング・イベントの発生についての指示を与える。
【００４４】
図３は、本発明の一実施形態に従った様々な汎用制御レジスタを示す。汎用制御レジスタは、制御レジスタ（ＤＰ＿ＣＲ）７００、ステータス・レジスタ（ＤＰ＿ＳＲ）７０２、モニタ・レジスタ（ＤＰ＿ＭＲ）７０４、ＰＩＤ検出基準値レジスタ（ＤＰ＿ＲＰＩＤ）７０６、及びＤＩＤ検出基準値レジスタ（ＤＰ＿ＲＤＩＤ）７０８を含む。
【００４５】
制御レジスタ（ＤＰ＿ＣＲ）７００は、ＩＤ比較論理６４５によりデータ・タスクＩＤ及び／又は命令タスクＩＤが考慮されるか又はそれらのいずれも考慮されないかを定義する２つのＩＤ比較ビット（ＴＩＤＣＭ−ビット２９−２８）を含む。
【００４６】
幾つかのビット（ビット２７−１４）は、ＥＯｎＣＥにより発生された様々なイベント（ＩＳＥＤＡＣＡ５−ＩＳＥＤＡＣＡ０、ビット２７−１６）、又はＥＯｎＣＥにより発生された割り込み要求（ＥＩＳ、ビット１４）がプログラム割り込みコントローラ（ＰＩＣ）（図示せず）に対してゼロ、１又は２の割り込み要求を引き起こすことができるかを指示する。ＤＰ＿ＣＲ７００の残りのビット（ビット１３−０）は、割り込み要求がカウンタにより発生されたイベント（ＤＥＣＢ２−ＤＥＣＡ０、ビット１１−０）又は追跡に関連したイベント（ＤＥＴＢ、ビット１３−１２）に応答してＰＩＣ又は送られるか又はデバッグ要求がＥＯｎＣＥユニット５０２に送られるかを指示する。
【００４７】
ステータス・レジスタ（ＤＰ＿ＳＲ）７０２は、ＶＴＢ６７０に到達しなかったＴＷＢ１６０内にいずれの追跡情報があるかどうかを指示する追跡バッファ・アクティブ・ビット（ＴＷＢＡ、ビット６）と、それぞれのカウンタ・イネーブル・ビットがそれぞれのカウンタが使用可能にされるか又は使用不能にされるかを指示する、６個のカウンタ・イネーブル・ビット（ＥＮＣＢ２−ＥＮＣＡ０、ビット５−０）とを含む。
【００４８】
モニタ・レジスタ（ＤＰ＿ＭＲ）７０４は、ＴＷＢ１６０がフル（一杯）であることを指示する追跡バッファ・フル・ビット（ＴＢＦ、ビット９）と、既存のデバッグ要求又は割り込みのための理由を指示する複数のビット（ＤＲＡ、ＤＲＮ、ＤＲＴＢ、ＤＲＣＢ２−ＤＲＣＡ０）とを含む。その理由は、外部デバッグ要求、ＮＥＸＵＳデバッグ要求、追跡イベント、又は６個のカウンタのうちの１つと関連したイベントであり得る。
【００４９】
ＰＩＤ検出基準値レジスタ（ＤＰ＿ＲＰＩＤ）７０６は、ＩＤ比較論理６４５により比較されるべき８ビット基準プログラムＩＤ値（ＲＰＩＤ、ビット７−０）を含む。
ＤＩＤ検出基準値レジスタ（ＤＰ＿ＲＤＩＤ）７０８は、ＩＤ比較論理６４５により比較されるべき８ビット基準プログラムＩＤ値（ＲＤＩＤ、ビット７−０）を含む。
【００５０】
図４は、本発明の一実施形態に従った幾つかのカウンタ制御レジスタを示す。カウンタ制御レジスタは、第１のカウンタ・セット・レジスタ（ＤＰ＿ＴＡＣ）７１０、第２のカウンタ・セット・レジスタ（ＤＰ＿ＴＢＣ）７１２、第１から第６までのカウンタ制御レジスタ（ＤＰ＿Ｃ１−ＤＰ＿Ｃ６）７１４−７２４、及び第１から第６までのカウンタ値レジスタ（ＤＰ＿Ｃ１−ＤＰ＿Ｃ６）７２６−７３６を含む。
【００５１】
第１のカウンタ・セット・レジスタ（ＤＰ＿ＴＡＣ）７１０は、セットのカウンタをディスエーブル（使用不能に）することができる任意に要求されるＩＤ値に加えて、特権レベル（ユーザ又はスーパーバイザ）を決定するセット・ディスエーブル・モード特権レベル・ビット（ＴＤＭＰ、ビット２９−２８）を含む。ＤＰ＿ＴＡＣは更に、レジスタ・ビットのセット（ＴＤＭ、ビット２７−２４）をディスエーブルするイベントを指定する、特に、どのＥＤＣＡがそのカウンタ・セットをディスエーブルすることができるイベントと関連付けられるかを指定するためのビットを含む。前に言及したビットに加えて、ＤＰ＿ＴＡＣはまた、カウンタをイネーブル（使用可能に）することができる特権レベルのイベント（これはまた追跡イベントと呼ばれる。）定義するレジスタ・セット・モード特権ビット（ＴＥＮＭＰ、ビット２１−２０）、レジスタ・ビットのセットをイネーブルするイベント（ＴＥＮＭ、ビット１９−１６）、及び追跡されるイベントを含む特権レベルのタスクを定義する計数されたイベント・グループ特権レベル・ビット（ＣＥＧＰ、ビット１３−１２）を含む。これらのビットには、どのセットの追跡イベントが計数されるかを表すカウンタ・イベント・グループ・ビット（ＣＥＧ、ビット８−４）と、カウンタのセットがワンショット計数モードで動作するか又は追跡モードで動作するかを定義するカウンタ・セット・モード・レジスタ・ビット（ＣＭＯＤＥ、ビット２−１）と、最後に、レジスタが個々に制御されるか、又はセット制御を受けさせられるかを決定するＴＣＥＮビット（ビット０）とが続く。
【００５２】
第２のカウンタ・セット・レジスタ（ＤＰ＿ＴＢＣ）７１２は、第１のカウンタ・セット・レジスタ（ＤＰ＿ＴＡＣ）７１０と同一であるが、しかし第２のセットのカウンタ６１４−６１６を制御する。
【００５３】
６個のカウンタ制御レジスタ（ＤＰ＿Ｃ１−ＤＰ＿Ｃ６）７１４−７２４のそれぞれは、カウンタ・セット・レジスタ（ＤＰ＿ＴＡＣ）７１０に似ているが、単一のカウンタを制御するが、セットのレジスタを制御しない。最下位ビットがディスエーブルされる。
【００５４】
６個のカウンタ値レジスタ（ＤＰ＿Ｃ１−ＤＰ＿Ｃ６）７２６−７３６のそれぞれは、当該６個のカウンタのそれぞれの３１ビット・カウンタ値であって、初期カウンタ値として働き、活動状態になった後では進行中のカウンタ値として働く当該それぞれの３１ビット・カウンタ値を保持する。
【００５５】
図５は、追跡制御レジスタ（ＤＰ＿ＴＣ）７４０、ＶＴＢ開始アドレス・レジスタ（ＤＰ＿ＴＳＡ）７４２、ＶＴＢ終了アドレス・レジスタ（ＤＰ＿ＴＳＡ）７４４、追跡イベント要求レジスタ（ＤＰ＿ＴＥＲ）７４６、追跡書き込みポインタ・レジスタ（ＤＰ＿ＴＷ）７４８、及び追跡データ・レジスタ（ＤＰ＿ＴＤ）７５０のような様々な追跡ユニット・レジスタを示す。
【００５６】
追跡制御レジスタ（ＤＰ＿ＴＣ）７４０は、ＶＴＢ書き込みアクセスの特権を示す特権ビット（ＰＲＯＶ、ビット２１）を含む。ＤＰ＿ＴＣ７４０はまた、グローバル動作属性（ＧＬＯＢＡＬ、ビット２０−１９）と、ＶＴＢ６７０への書き込み動作のバースト・サイズ（通常、１、２、４及び８ＢＤＵのいずれか）を示すバースト・サイズ・ビット（ＢＵＲＳＴ−ＳＩＺＥ、ビット１７−１６）と、全ての追跡情報がＶＴＢ６７０に到着したことを検証するためＴＷＢ１６０のコンテンツをフラッシュすることを可能にするための時間的ディスエーブル・ビット（ＴＭＰＤＩＳ、ビット１２）とを含む。ＤＰ＿ＴＣ７４０は更に、追跡情報がオーバーライト・モード、ワン・アドレス・モード、及び追跡イベント要求モードのいずれで書き込まれるかを指示する仮想追跡バッファ書き込みモード・ビット（ＶＴＢＷＭ、ビット９−８）を含む。これのビットには、ＶＴＢビットに対するサンプル・カウンタ値（ＳＡＭＰＬＥ、ビット６）と、出力されつつある追跡情報、例えば、ＥＯｎＣＥにより発生された追跡情報、ＥＯｎＣＥにより発生され圧縮された追跡情報（及びまた、追加されたタスク・フラグ）、及び追加の追跡情報を有する６個のカウンタの値のようなものを指示する追跡モード・ビット（ＴＭＯＤＥ、ビット４−１）とが続く。ＤＰ＿ＴＣ７４０の最下位ビットは、追跡することがイネーブルされるかどうかを指示するイネーブル・ビット（ＥＮ）である。
【００５７】
ＶＴＢ開始アドレス・レジスタ（ＤＰ＿ＴＳＡ）７４２は、仮想追跡バッファ７６０の始まりの３２ビット物理アドレスを格納する。ＶＴＢ終了アドレス・レジスタ（ＤＰ＿ＴＳＡ）７４４は、仮想追跡バッファ７６０の終わりの３２ビット物理アドレスを格納する。追跡イベント要求レジスタ（ＤＰ＿ＴＥＲ）７４６は、３２ビットアドレスをＶＴＢ６７０内に格納し、そこでは、割り込み又はデバッグ要求が、発生されるはずである。このアドレスは、ＤＰＵ５００が追跡イベント要求イベント・モードとして動作するとき書き込まれる。追跡書き込みポインタ・レジスタ（ＤＰ＿ＴＷ）７４８は、ＶＴＢ６７０エントリに対する３２ポインタを格納し、そこでは、現在の追跡情報が書き込まれつつある。追跡データ・レジスタ（ＤＰ＿ＴＤ）７５０は、ＶＴＢ６７０へ或る一定の動作モードで書き込まれるべきであるデータを格納する。
【００５８】
カウンタのセットは、イベントのセットを追跡するため設定されることができることが都合良い。表３は、これらのレジスタのアセット（ａｓｓｅｔ）により追跡されるイベントの様々なセットを示す。
【００５９】
【表３】
2008513875.tif 000005
【００６０】
図６は、本発明の一実施形態に従って非侵入的に追跡する方法８００のフロー・チャートを示す。方法８００は、選択されたイベントを複数のカウンタにより計数するステップ８１０により開始する。図２に示される例を参照すると、カウンタ及びレジスタ論理６１０は、どの追跡イベントがカウンタ６１１−６１６により計数されるかを決定する。その決定は、様々な制御レジスタのコンテンツに応答し、その様々な制御レジスタのコンテンツは、各カウンタの制御を個々に促進するするか、又は制御をイベントのセット・ベースで促進することさえもができる。制御レジスタは、準備的構成ステップ８０５中に構成されることができる。ボックス８１０からのそれ自身への矢印は、方法８００がステップ８２０及び８３０に進む間にイベントの計数が進むことを示す。
【００６１】
方法８００は更に、事前定義されたトリガリング・イベントに応答して、非侵入的要領で複数のカウンタをサンプリングして複数のカウンタ値を検索するステップ８２０を含む。図２に示される例を参照すると、シャドウ・レジスタ６２１−６２６は、トリガリング・イベントを受け取ると直ぐにカウンタ６１１−６１６のコンテンツをサンプリングするよう適合されている。トリガリング・イベントは、特に様々な制御レジスタを用いて、事前定義されている。各シャドウ・レジスタは、他のシャドウ・レジスタにかまわずサンプリング動作を実行する。
【００６２】
ステップ８２０には、複数のカウンタ値を追跡情報として出力するステップ８３０が続く。
前の図面に示される例を参照すると、インターフェース６４５は、追跡情報を様々な要領で出力することが可能である。
【００６３】
図７は、本発明の一実施形態に従った方法９００のフロー・チャートである。
方法９００は、ステップ８０５により開始し、そのステップ８０５には、ステップ８１０及び８２０が続く。
【００６４】
これらのステップに対して並列に、方法９００は、ＥＯｎＣＥにより発生された追跡情報のような追加の追跡情報を受け取るステップ９１０を含む。ステップ９１０には、ステップ９２０及び９２５が続く。ステップ９２０は、その追跡情報を圧縮することを含む。ステップ９２５は、データＩＤ又は情報ＩＤであることができるＩＤを、ＥＯｎＣＥにより発生された追跡情報であって圧縮された又は圧縮されてない当該追跡情報と関連付けることを含む。
【００６５】
ステップ９２５及び８２０には、どの情報が追跡情報として出力されるかを選択するステップ８６０が続く。これは、３つの追跡情報タイプのうちの唯１つであることができるか、又はそれは、それらの組み合わせであることができる。圧縮された追跡情報を出力することを選択する場合、タスクＩＤ情報のみが追加されることができ、いずれのカウンタ値も追加されることができないことが都合良い。
【００６６】
ステップ８６０には、追跡情報を出力するステップ９６０が続く。これは、情報をＴＷＢ１６０を介してＶＴＢ６７０に書き込むこと、及び／又はその情報の少なくとも幾らかをＮＥＸＵＳインターフェース６７５を介してＮＥＸＵＳブロック５０４に書き込むことを含む。
【００６７】
本明細書で説明されたものの変形、変更及び他の実施形態が、特許請求の範囲の趣旨及び範囲から逸脱することなしに当業者により行われるであろう。従って、本発明は、先の例示的説明により定義されるものではなく、代わりに添付の特許請求の範囲の趣旨及び範囲により定義されるべきである。
【図面の簡単な説明】
【００６８】
【図１】図１は、本発明の一実施形態に従ったシステムの概略図である。
【図２】図２は、本発明の一実施形態に従ったデバッギング及びプロファイリング・ユニットの概略図である。
【図３】図３は、本発明の一実施形態に従った様々な制御レジスタの１つを示す。
【図４】図４は、本発明の一実施形態に従った様々な制御レジスタの１つを示す。
【図５】図５は、本発明の一実施形態に従った様々な制御レジスタの１つを示す。
【図６】図６は、本発明の一実施形態に従った非侵入的追跡を行う方法のフロー・チャートの１つである。
【図７】図７は、本発明の一実施形態に従った非侵入的追跡を行う方法のフロー・チャートの１つである。
【図１】
2008513875.tif 000006
【図２】
2008513875.tif 000007
【図３】
2008513875.tif 000008
【図４】
2008513875.tif 000009
【図５】
2008513875.tif 000010
【図６】
2008513875.tif 000011
【図７】
2008513875.tif 000012
【手続補正書】
【提出日】平成19年5月16日(2007.5.16)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
非侵入的追跡を行う装置（１０）であって、複数の選択されたイベントを計数するよう動作可能である複数のカウンタ（６１１−６１６）を備える装置（１０）において、
前記複数のカウンタに結合された複数のシャドウ・レジスタ（６２１−６２６）であって、トリガリング・イベントに応答して、前記複数のカウンタをシームレスの要領でサンプリングして複数のカウンタ値を与える複数のシャドウ・レジスタ（６２１−６２６）と、
前記複数のカウンタ及び前記複数のシャドウ・レジスタに結合されたカウンタ及びレジスタ論理（６１０）であって、前記複数のカウンタ及び複数のシャドウ・レジスタの動作を制御するよう動作可能であるカウンタ及びレジスタ論理（６１０）と、
前記複数のシャドウ・レジスタに結合された追跡論理（６２９，６４０，６４５，６５０，６５５，６７０，６７５，６５３）であって、（ｉ）複数のカウンタ値を受け取り、及び少なくとも１つのプログラム・カウンタ値を備える追跡情報を受け取り、且つ（ｉｉ）前記複数のカウンタ値及び前記追加の追跡情報のうちの少なくとも１つを出力するよう適合された追跡論理（６２９，６４０，６４５，６５０，６５５，６７０，６７５，６５３）と
を備えることを特徴とする装置（１０）。
【請求項２】
仮想追跡バッファへの追跡情報の書き込みプロセスを制御するよう適合された追跡書き込み管理ユニット（６４０）を更に備える請求項１記載の装置（１０）。
【請求項３】
追跡情報を受け取って、当該追跡情報を前記仮想追跡バッファに与える追跡書き込みバッファ（１６０）を更に備える請求項２記載の装置（１０）。
【請求項４】
追跡情報を圧縮するよう適合された圧縮器（６５５）を更に備える請求項１から３のいずれか一項に記載の装置（１０）。
【請求項５】
前記圧縮器（６５５）が、ループの発生を指示する追跡情報を取り除くことにより追跡情報を圧縮するよう適合されている請求項４記載の装置（１０）。
【請求項６】
前記圧縮器（６５５）が更に、ループ・フラグ、ループ反復の回数を表す指示及びループ・アドレスを与えることによりループの発生の指示を与えるよう適合されている請求項５記載の装置（１０）。
【請求項７】
前記複数のカウンタ（６１１−６２６）は、カウンタ・セットに整列され、
前記カウンタ及びレジスタ論理（６１０）が、１組のイベントを追跡するため１組のレジスタをプログラムするよう動作可能である
請求項１から６のいずれか一項に記載の装置（１０）。
【請求項８】
イベントに応答して割り込みを開始するよう更に適合されている請求項１から７のいずれか一項に記載の装置（１０）。
【請求項９】
追跡情報を高レベル追跡情報構成要素（５０４）に与えるよう更に適合されている請求項１から８のいずれか一項に記載の装置（１０）。
【請求項１０】
少なくとも１つのトリガリング・イベントが、事前定義された追加の追跡情報の受け取りである請求項１から９のいずれか一項に記載の装置（１０）。
【請求項１１】
少なくとも１つのトリガリング・イベントが、フロー・イベントの変化である請求項１から９のいずれか一項に記載の装置（１０）。
【請求項１２】
少なくとも１つのトリガリング・イベントが、追跡されたプロセッサの特権レベルの変化である請求項１から９のいずれか一項に記載の装置（１０）。
【請求項１３】
非侵入的追跡を行う方法（９００）であって、選択されたイベントを複数のカウンタにより計数するステップ（８１０）を備える方法（９００）において、
事前定義されたトリガリング・イベントに応答して、前記複数のカウンタに結合された複数のシャドウ・レジスタにより前記複数のカウンタをシームレスの要領でサンプリングして複数のカウンタ値を検索するステップ（８２０）であって、前記複数のカウンタ及び前記複数のシャドウ・レジスタがカウンタ及びレジスタ論理により制御される、前記検索するステップ（８２０）と、
前記複数のシャドウ・レジスタに結合された追跡論理により、少なくとも１つのプログラム・カウンタ値を備える追加の追跡情報を受け取るステップ（９１０）と、
前記追跡論理により、前記複数のカウンタ値及び前記追加の追跡情報のうちの少なくとも１つを追跡情報として出力するステップ（８３０）と
を備えることを特徴とする方法（９００）。
【請求項１４】
追跡情報を仮想追跡バッファに書き込むステップを更に備える請求項１３記載の方法（９００）。
【請求項１５】
前記追加の追跡情報を圧縮して、圧縮された追跡情報を与えるステップ（９２０）を更に備える請求項１３又は１４記載の方法（９００）。
【請求項１６】
前記の圧縮するステップ（９２０）が、ループの発生を指示する追跡情報を取り除くステップを備える請求項１５記載の方法（９００）。
【請求項１７】
前記の圧縮するステップ（９２０）が、ループ・フラグ、ループ反復の回数を表す指示、及びループ・アドレスを備えるループの発生の指示を生成する請求項１５又は１６記載の方法（９００）。
【請求項１８】
１組のカウンタを構成して、１組のイベントを計数する準備ステップを更に備える請求項１３から１７のいずれか一項に記載の方法（９００）。
【請求項１９】
少なくとも１つのトリガリング・イベントが、事前定義された追加の追跡情報の受け取りである請求項１３から１８のいずれか一項に記載の方法（９００）。
【請求項２０】
少なくとも１つのトリガリング・イベントが、フロー・イベントの変化である請求項１３から１９のいずれか一項に記載の方法（９００）。
【請求項２１】
少なくとも１つのトリガリング・イベントが、追跡されたプロセッサの特権レベルの変化である請求項１３から２０のいずれか一項に記載の方法（９００）。
【請求項２２】
前記追加の追跡情報が更に、プロセッサ特権レベル指示を備える請求項１から１２のいずれか一項に記載の装置（１０）。
【請求項２３】
前記追加の追跡情報が更に、プロセッサ特権レベル指示を備える請求項１３から２１のいずれか一項に記載の方法（９００）。
【請求項２４】
前記追跡データが、追跡フラグを備える請求項１３から２１のいずれか一項に記載の方法（９００）。
【請求項２５】
前記追跡フラグが、タスク・フラグ、スーパーバイザ・タスク・フラグ、短ループ・フラグ、長ループ・フラグ、及びＶＴＢ充填フラグから成るグループから選択される請求項２４記載の方法（９００）。
【請求項２６】
前記出力追跡データが、追跡フラグを備える請求項１から１２のいずれか一項に記載の装置（１０）。
【請求項２７】
前記追跡フラグが、タスク・フラグ、スーパーバイザ・タスク・フラグ、短ループ・フラグ、長ループ・フラグ、及びＶＴＢ充填フラグから成るグループから選択される請求項２６記載の装置（１０）。
【請求項２８】
非侵入的追跡を行う装置であって、
複数の選択されたイベントを計数するよう動作可能である複数のカウンタと、
前記複数のカウンタに結合された複数のシャドウ・レジスタであって、トリガリング・イベントに応答して、前記複数のカウンタをシームレスの要領でサンプリングして複数のカウンタ値を与える複数のシャドウ・レジスタと、
前記複数のカウンタ及び前記複数のシャドウ・レジスタに結合されたカウンタ及びレジスタ論理であって、前記複数のカウンタ及び複数のシャドウ・レジスタの動作を制御するよう動作可能であるカウンタ及びレジスタ論理と、
前記複数のシャドウ・レジスタに結合された追跡論理であって、前記複数のカウンタ値のうちの少なくとも１つを出力するよう適合された追跡論理と
を備える装置。
【請求項２９】
非侵入的追跡を行う方法（８００）であって、
選択されたイベントを複数のカウンタにより計数するステップ（８１０）と、
事前定義されたトリガリング・イベントに応答して、前記複数のカウンタに結合された複数のシャドウ・レジスタにより前記複数のカウンタをシームレスの要領でサンプリングして複数のカウンタ値を検索するステップ（８２０）と、
前記複数のシャドウ・レジスタに結合された追跡論理により、前記複数のカウンタ値を追跡情報として出力するステップ（８３０）と、を備え、
前記複数のカウンタ及び前記複数のシャドウ・レジスタが、カウンタ及びレジスタ論理により制御される、方法（８００）。
【国際調査報告】
2008513875.tif 000013