JP2001519949A - ソフトウェア性能プロファイリングデータをキャプチャするためのキャッシュを組込んだマイクロプロセッサベースのデバイス - Google Patents

ソフトウェア性能プロファイリングデータをキャプチャするためのキャッシュを組込んだマイクロプロセッサベースのデバイス

Info

Publication number
JP2001519949A
JP2001519949A JP54301998A JP54301998A JP2001519949A JP 2001519949 A JP2001519949 A JP 2001519949A JP 54301998 A JP54301998 A JP 54301998A JP 54301998 A JP54301998 A JP 54301998A JP 2001519949 A JP2001519949 A JP 2001519949A
Authority
JP
Japan
Prior art keywords
processor
trace
counter
cache
based device
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
JP54301998A
Other languages
English (en)
Other versions
JP2001519949A5 (ja
JP4138021B2 (ja
Inventor
マン,ダニエル・ピィ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2001519949A publication Critical patent/JP2001519949A/ja
Publication of JP2001519949A5 publication Critical patent/JP2001519949A5/ja
Application granted granted Critical
Publication of JP4138021B2 publication Critical patent/JP4138021B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • 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/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/261Functional testing by simulating additional hardware, e.g. fault simulation
    • 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/3409Recording 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 for performance assessment
    • G06F11/3419Recording 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 for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/348Circuit details, i.e. tracer hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3656Software debugging using additional hardware using a specific debug interface
    • 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
    • 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/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches

Landscapes

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

Abstract

(57)【要約】 ソフトウェア性能プロファイリング情報をもたらすためのオンチップトレースキャッシュ(200)およびサポート回路を組込んだプロセッサベースのデバイス(102)が提供される。トリガ制御レジスタ(219a)は、選択されるプロシジャへ入る際に第1のオンチップカウンタを初期化しトリガ(開始)するよう構成される。第2のトリガ制御レジスタ(219b)は選択されるプロシジャのプロシジャプロローグに入る際に第1のカウンタを停止するのに用いられる。選択されるプロシジャの経過した実行時間を反映するカウント値はそこでオンチップトレースキャッシュにストアされる。第2のカウンタも設けられる。第2のカウンタは連続して動作するが、第2のトリガ制御レジスタにより生じる停止トリガイベントの後にゼロにリセットされる。また、停止トリガイベントにより、第2のカウンタの値がオンチップトレースキャッシュ(200)内に入れられる。この第2のカウンタの値から、関心の対象であるプロシジャの発生の頻度がもたらされる一方、第1のカウンタはプロシジャの実行時間に関する情報をもたらす。プロファイルデータを分析するのに、ターゲットシステムに対して実行される後処理ソフトウェア、デバッグポートを利用するホストシステム、またはオフチップトレースキャプチャハードウェアのいずれを用いてもよい。

Description

【発明の詳細な説明】 ソフトウェア性能プロファイリングデータをキャプチャするための キャッシュを組込んだマイクロプロセッサベースのデバイス 技術分野 この発明はマイクロプロセッサにおけるソフトウェア性能プロファイリングサ ポートに関し、より特定的にはソフトウェア性能プロファイルデータをキャプチ ャする能力を有するオンチップトレースキャッシュを組込んだマイクロプロセッ サベースのデバイスに関する。 背景技術 ソフトウェア性能プロファイリングとは、ソフトウェアプログラム内での種々 のソフトウェアプロシジャの実行時間、頻度およびコールパターンを調べること である。ソフトウェアアプリケーションの実行時間を最適化しようと試みるソフ トウェアエンジニアにとって、性能プロファイリングは非常に有効なツールとな り得る。ソフトウェアプロファイリングを実行するために、統計的分析に基づく 数多くの技術を含むさまざまな技術が現在用いられている。ソフトウェアプロフ ァイリングを実行する際に、実行時間およびサブルーチンコールリンクは時々、 ソフトウェアを実行しているコンピュータシステムのシステムバスをモニタする 外部の(オフチップの)計測器によりキャプチャされる。代わりに、ソフトウェ アが実行されるコンピュータシステムに直接プロファイリング情報をもたらすよ うソフトウェアに「計測機能を付ける」またはソフトウェアを変形することがで きる。 ソフトウェアがますます複雑になり、これに相まってプロセッサのクロック速 度が増加していることから、アプリケーションソフトウェアの開発者らの負担が 増し、性能プロファイリングの課題が複雑になっている。現在、新しいソフトウ ェア製品の開発、デバッグおよび最適化に関連するコストはプロセッサを選択す る上で重要な要素である。性能プロファイリングを含む、ソフトウェアデバッグ を十分容易にするプロセッサ機能により、顧客による開発にかかる時間が短くな り産業においてそのプロセッサを用いることの魅力が増す。ソフトウェアデバッ グサポートを提供することは、専門化されたオンチップ回路がしばしばプロセッ サコアと組合されている組込製品産業において特に必要とされている。 ロジックアナラザイザ、読出専用メモリ(ROM)エミュレータおよびインサ ーキットエミュレータ(ICE)がソフトウェア性能プロファイリングデータを キャプチャするのにしばしば用いられる。インサーキットエミュレータは他のデ バッグ環境に比べて、メモリおよびレジスタの内容に対する完全な可制御性およ び可観測性をもたらし、システムメモリが不十分である場合にはオーバレイおよ びトレースメモリをも提供するなどの利点がある。しかしながら、カスタムエミ ュレータバックエンドをプロセッサソケットとインターフェイスしてエミュレー ション装置とターゲットシステムとの通信を可能にする従来のインサーキットエ ミュレータの使用は今日の非定型のパッケージおよび製品寿命サイクル短縮の時 代においてはますます困難であり費用が高くなりつつある。 別のアプローチ(モトローラ社(Motorola,Inc.)による「バックグラウンド デバッグモード」(“Background Debug Mode”))では、基本的な実行制御の ため、限られたオンチップデバッグ回路が提供される。このアプローチでは、さ らなるピンを必要とする専用シリアルリンクを介してデバッガ/性能プロファイ ラがターゲットシステムを開始および停止し、かつシステムメモリに特殊な命令 を挿入することにより基本的なコードのブレークポイントを適用することを可能 にする。ブレークポイントレジスタが、タイマを開始し停止するよう機能するオ フチップトリガパルスを発生するのに用いられる。しかしながら、シリアルリン クはオンチップのソフトウェア性能プロファイリングキャプチャ能力を提供せず 、プロファイルデータをもたらすにはさらなる専用のピンおよび外部トレースキ ャプチャハードウェアが必要である。 上述のように、時々ソフトウェア自体に計測機能が付いているためソフトウェ アを分析して性能プロファイリングデータを収集することができる。多くの場合 、計測機能付コードは、選択されたプロシジャを分析するために、プロファイリ ング情報を挿入するように構成されるコンパイラによって生成される。たとえば 、プロシジャコールのプロローグおよび終りのエピローグにおいて、コンパイラ は実行時間をトラッキングするカウンタを活性化するのに用いられるコードを挿 入 してもよい。特定されたプログラム実行コールが実行されると、挿入されたルー チンへのジャンプが行なわれカウンタ/タイマをマークする。他の補助プロシジ ャをコールする親プロシジャの実行時間は、親プロシジャの全実行時間から補助 プロシジャの実行時間を減算することによって定められる。あるモジュールのす べてのプロシジャを分析することによって、そのモジュールの全実行時間を計算 できる。むろん、所与のプロシジャの実行時間はプロシジャにおける変数の状態 に応じて変動することがあり、統計的サンプリングを利用することが必要となる 。 このように、ソフトウェア性能プロファイリングに対する数多くの現在の解決 策には、コードに計測機能を付けることの必要、パッケージングおよび開発のコ ストの増加、回路の複雑さ、ならびに帯域幅整合の困難を含む、さまざまなハー ドウェアおよびソフトウェアの制約がある。特に、内部プロセッサのクロック周 波数が増加し続けるにつれ、将来、既存の解決策の制約が悪化する可能性が高い ため、プロファイルデータをキャプチャするための低コストのプロシジャは非常 に望ましいものである。 発明の開示 簡単に、この発明によるプロセッサベースのデバイスは、ソフトウェア性能プ ロファイリング情報を提供するためのオンチップトレースキャッシュおよびサポ ート回路を含む。トレースキャッシュは選択されたプロシジャにおいて費やされ た実行時間に関する情報を集める。よって性能プロファイリング情報が、コード に計測機能を付けたり、プログラム実行速度に悪影響を与えたり、または高価な オフチップサポート装置を用いることなく集められる。 この発明によるシステムにおいて、ブレークポイントまたはトリガ制御レジス タは、選択されたプロシジャに入る際に第1のオンチップカウンタを初期化およ びトリガ(開始)するよう構成される。第2のブレークポイントまたはトリガ制 御レジスタは、選択されたプロシジャのプロシジャプロローグに入った際に第1 のカウンタを停止するのに用いられる。選択されたプロシジャの経過した実行時 間を反映するカウンタ値はそこでオンチップトレースキャッシュにストアされる 。割込ハンドラ実行時間などの他のパラメータを測定するのに類似の技術を用い る ことができる。 この発明の開示される実施例では、第2のカウンタも設けられる。第2のカウ ンタは連続して実行されるが、第2のトリガ制御レジスタにより生じる停止トリ ガイベントの後にゼロにリセットされる。また、停止トリガイベントによって第 2のカウンタの値がオンチップトレースキャッシュ内に入れられる。この第2の カウンタ値は関心の対象であるプロシジャの発生の頻度を得るのに有効である一 方、第1のカウンタはプロシジャの実行時間に関する情報をもたらす。 プロファイルデータは、選択されるプロシジャが実行されるコンピュータシス テム内にある後処理ソフトウェアによって、デバッグポートを利用するホストシ ステムによって、またはチップ外のトレースキャプチャ用ハードウェアを介して 分析できる。一般的に、一度に1つのプロシジャだけについてプロファイルがと られる。トレースキャッシュを調べることによって、あるプロシジャにおいて費 やされた最小、平均および最大時間ならびに他の統計的データを判定できる。こ の発明の有益な局面の1つはプロシジャプロローグおよびエピローグを修正する 必要がないことである。しかしながら、なおコンパイラを利用してこの発明に使 用するためのプロファイリング情報を加えるようにしてもよい。 トレース情報を外部デバイスに通信するためにシリアルおよびパラレル通信チ ャネルの両方が設けられる。この発明の開示される実施例では、IEEE−11 49.1−1990に従ったJTAG(ジョイントテストアクショングループ) インターフェイスまたは、プロセッサベースのデバイスに統合される類似の規格 化されたインターフェイスを用いるソフトウェアデバッグポートを介してプロフ ァイル(またはトレース)キャッシュの可制御性および可観測性が達成される。 このように、ソフトウェア性能プロファイリング情報をもたらすための柔軟な 高性能の解決策を提供するプロセッサベースのデバイスが提供される。また、開 示されるオンチップトレースキャッシュにより、数多くの既存の解決策において 生じている帯域幅およびクロック同期のさまざまな問題が軽減される。 図面の簡単な説明 この発明は好ましい実施例の以下の詳細な説明を以下の図面と関連して考慮す る際によりよく理解できるであろう。 図1は、この発明によるソフトウェアプロファイリングおよびデバッグ解決策 を利用するソフトウェアデバッグ環境のブロック図である。 図2は、この発明によるオンチップトレースキャッシュを組込んだ例示的な組 込プロセッサ製品の詳細を示すブロック図である。 図3は、この発明による組込プロセッサ製品の例示的なトレースキャッシュと 他の構成要素との関係を示す簡略化されたブロック図である。 図4は、この発明の一実施例によるソフトウェアデバッグコマンド処理過程を 示すフローチャートである。 図5は、この発明の第2の実施例による強化されたコマンド処理過程を示すフ ローチャートである。 図6Aは、この発明による性能プロファイルカウンタシーケンスを示す。 図6Bは、この発明によるソフトウェア性能プロファイリング情報を報告する ためのトレースキャッシュエントリのセットの一般的なフォーマットを示す。 図7A−図7Gは、命令実行情報を報告するためのさまざまなオプションのト レースキャッシュエントリの一般的なフォーマットを示す。 発明を実施するための形態 図面を参照して、図1はこの発明のある考えられる用途を示す例示的なソフト ウェアデバッグ環境を示す。ターゲットシステムTはシステムメモリ106に結 合される、この発明による組込プロセッサデバイス102を含んでいるのが示さ れる。組込プロセッサデバイス102はプロセッサコア104、トレースキャッ シュ200(図2)およびデバッグポート100を組込んでいる。この発明には 重要ではないが、組込プロセッサデバイス102は応用に特有の機能を実行する ためのさらなる回路(図示せず)を組込んでいてもよく、またはスタンドアロン プロセッサまたはデジタル信号プロセッサの形をとっていてもよい。好ましくは 、デバッグポート100はIEEE−1149.1−1990に従ったJTAG インターフェイスまたは他の類似の規格化されたシリアルポートインターフェイ スを用いる。 ホストシステムHを用いてデバッグ制御ソフトウェア112を実行し、高レベ ルのコマンドを転送し、ターゲットシステムTにより生成されるソフトウェア性 能プロファイリング情報の抽出および分析を制御する。この発明の開示される実 施例のホストシステムHおよびターゲットシステムTはシリアルリンク110を 介して通信する。ほとんどのコンピュータはシリアルまたはパラレルインターフ ェイスを備えており、これはさほど費用をかけずにシリアルコネクタ108によ りデバッグポート100に接続でき、さまざまなコンピュータがホストシステム Hとして機能できるようにする。代わりに、シリアルコネクタ108をより高速 のJTAG−ネットワーク変換装置で置換えてもよい。さらに、ターゲットシス テムTは内部でソフトウェア性能プロファイリングデータを分析するよう構成し てもよい。 次に図2を参照して、この発明による組込プロセッサデバイス102の詳細が 示される。プロセッサコア104に加えて、図2ではトレースキャッシュ200 を利用し制御する能力を有するデバッグポート100の強化型実施例のさまざま な要素が示される。当業者には明らかとなるように数多くの他の構成が可能であ り、以下に説明するさまざまなプロセッサデバイス102の構成要素はオンチッ プトレースキャッシュ200を提供することに関連する利益を例示する目的で示 される。 この発明の開示される実施例のトレース制御回路218およびトレースキャッ シュ200はまた、ソフトウェア性能プロファイリング情報をキャプチャするよ う協働してもよい。さらに、トレース制御回路218はトレースパッドインター フェイスポート220またはトレースキャッシュ200への「トレーシング」を サポートし、ソフトウェア性能プロファイリングデータのキャプチャを選択的に 活性化するためのユーザ制御をもたらす。トレース制御回路218により可能と なる他の特徴には、以下に詳しく説明するように、ユーザ特定のトレースレコー ドおよび同期アドレス生成のプログラム可能性が含まれる。 最低限として、この発明の説明される実施例ではソフトウェアデバッグポート 100において従来のJTAGピンのみをサポートすればよい。JTAGピンは 実質的に、既存のピンを用いて、プロセッサコア104が実行すべきプロファイ リングおよび他のコマンドを入れるための移送機構となる。より特定的には、J TAGテストアクセスポート(TAP)コントローラ204へ与えられ、かつこ れにより駆動されるテストクロック信号TCK、テストモード選択信号TMS、 テストデータ入力信号TDIおよびテストデータ出力信号TDOは従来のJTA Gサポート信号であり当業者には公知である。以下により詳しく説明するように 、デバッグポート100の「強化型」実施例では標準JTAGインターフェイス にコマンド確認信号CMDACK、ブレークリクエスト/トレースキャプチャ信 号BRTC、送信停止信号STOPTXおよびトリガ信号TRIGが加えられる 。この付加的な信号により、非常に正確な外部ブレークポイントのアサーション およびモニタリングが可能となり、内部ブレークポイントに応答して外部デバイ スがトリガされ、JTAGシリアルインターフェイスのステータスのポーリング がなくなる。これらの「側波帯」信号によって追加の機能性がもたらされ、デバ ッグポート100のための通信速度が向上する。また、これらの信号は、開示さ れる組込プロセッサデバッグ102の特殊なボンドアウトタイプのものに設けら れる任意のパラレルポート214の動作を助ける。 JTAG TAPコントローラ204は従来のJTAG信号を介して標準のJ TAGシリアルデータおよび制御を受入れる。DEBUG命令がJTAG命令レ ジスタに書かれると、シリアルデバッグシフタ212がJTAGテストデータ入 力信号TDIおよびテストデータ出力信号TDOに接続され、コマンドおよびデ ータをデバッグレジスタ210にロードし、およびこれらをデバッグレジスタ2 10から読むことができるようにする。この発明の開示されろ実施例では、デバ ッグレジスタ210はデータを送信するため(TX_DATAレジスタ)および 受信するため(RX_DATAレジスタ)の2つのデバッグレジスタと、命令ト レース設定レジスタ(ITCR)と、デバッグ制御ステータスレジスタ(DCS R)とを含む。 制御インターフェイスステートマシン206は、シリアルデバッグシフタ21 2およびデバッグレジスタ210へ/からのデータのローディング/読取を調整 する。コマンドデコードおよび処理ブロック208はコマンド/データをデコー ドし、これらをプロセッサインターフェイス論理202およびトレースデバッグ インターフェイス論理216にディスパッチする。他の機能を実行することに加 えて、トレースデバッグインターフェイス論理216およびトレース制御論理2 18はトレースキャッシュ200からTAPコントローラ204へのソフトウェ ア性能プロファイリングおよび他のトレース情報の通信を調整する。プロセッサ インターフェイス論理202はプロセッサコア104ともトレース制御論理21 8とも直接通信する。以下により完全に説明するように、パラレルポート論理2 14は制御インターフェイスステートマシン206およびデバッグレジスタ21 0と通信して、オプションのボンドアウトタイプの組込プロセッサデバイス10 2においてパラレルデータ読取/書込動作を実行する。 デバッグポート100を介して(従来のJTAG信号のみを用いて)ソフトウ ェア性能プロファイリング情報が通信される前に、ポート100がパブリックJ TAG命令DEBUGをTAPコントローラ204内に含まれるJTAG命令レ ジスタに書込むことによりイネーブルされる。以下に示すように、開示される実 施例のJTAG命令レジスタは38ビットレジスタであり、32ビットのデータ フィールド(debug_data[31:0])と、デバッグポート100がもたらす機 能およびさまざまの内部レジスタを示すための4ビットのコマンドフィールドと 、コマンド係属中フラグと、コマンド完了フラグとを含む。いくつかのコマンド では、debug_dataフィールドからのビットをサブフィールドとして用いて利用可 能なコマンドの数を増やすことも可能である。 このJTAG命令レジスタはテストモード選択信号TMSをトグルすることに より選択される。テストモード選択信号TMSはスキャンパス内のJTAGのク ロック供給の経路を変更することを可能にし、異なる長さの複数の経路を用いる ことができるようにする。好ましくは、JTAG命令レジスタは短い経路を介し てアクセスすることが可能である。このレジスタは、特定されたシステムレジス タへロードすべき、またはそれらから受けるべき値を保持するための「ソフト」 レジスタを含むよう構成される。 次に図3を参照して、この発明による組込プロセッサデバイス102の例示的 なトレースキャッシュ200と他の構成要素との関係を示す簡略化されたブロッ ク図が示される。この発明のある考えられる実施例では、トレースキャッシュ2 00は128エントリのファーストインファーストアウト(FIFO)循環キャ ッシュである。トレースキャッシュ200のサイズを大きくすることにより、必 要となるシリコン領域の量が増加するかもしれないが、キャプチャできるソフト ウェア性能プロファイルおよび他の命令トレース情報の量も増加する。 以下により詳しく説明するように、この発明の開示される実施例のトレースキ ャッシュ200は、ソフトウェア性能プロファイリングおよび他のトレース情報 などの、複数の20ビット(またはそれ以上)のトレースエントリをストアする 。タスク識別子およびトレースキャプチャ停止/開始情報などの付加的な情報も またトレースキャッシュ200内に入れることができる。トレースキャッシュ2 00の内容はホストシステムHなどの外部ハードウェアにシリアルまたはパラレ ルのいずれかのトレースピン230を介して与えられる。代わりに、内部でトレ ースキャッシュ200の内容を調べるようにターゲットシステムTを構成しても よい。 図4では、標準JTAGインターフェイスを用いた際のコマンド処理過程の高 レベルのフローチャートが示される。ステップ400においてデバッグモードに 入る際、DEBUG命令がステップ402においてTAPコントローラ204に 書かれる。次に、ステップ404で、コマンド係属中フラグがセットされ、かつ データフィールドに所望のデータがある(これは当てはまる場合であり、そうで なければ0)状態で、38ビットのシリアル値が一まとまりとしてシフトインさ れる。制御はステップ406に進み、ここで係属中コマンドはロード/アンロー ドされ、コマンド完了フラグがチェックされる。コマンドの完了は典型的に、デ ータレジスタとプロセッサレジスタまたは記憶/IO場所との間での値の転送を 伴う。コマンドが完了した後、プロセッサ104はコマンド係属中フラグをクリ アし、コマンド完了フラグをセットすると同時に、当てはまる場合にはデータフ ィールドに値をストアする。38ビットレジスタ全体をスキャンしてコマンド完 了フラグおよびコマンド係属中フラグをモニタする。係属中フラグが0にリセッ トされ、完了フラグが1に設定されている場合、前のコマンドは完了している。 フラグのステータスは制御インターフェイスステートマシン206によりキャプ チャされる。フラグのステータスのスレーブコピーが内部に保存され、次の命令 をロードすべきであるかどうかを定める。TAPコントローラ204の状態の間 のフラグステータスの変化の可能性があるためスレーブコピーは維持される。こ のことによりプロセッサ104は次の命令をロードする前に前の命令が完了して いるかどうかを判定することができる。 完了フラグがステップ408においてセットされていないと判定された場合、 制御はステップ410に進み、38ビットコマンドのロード/アンロードが繰返 される。コマンド終了フラグもチェックされる。制御は次にステップ408に戻 る。完了フラグがステップ408において定められるようにセットされていれば 、制御はステップ406に戻り次のコマンドを処理する。DEBUGモードから 出るには典型的なJTAGプロセスを介する。 再び図2を参照して、前述の任意の側波帯信号を強化されたデバッグポート1 00において利用して余分の機能性をもたらすようにする。任意の側波帯信号は 、デバッグ制御/ステータスレジスタにおいてセットされるビットのステータス に応じてブレークリクエスト信号またはトレースキャプチャイネーブル信号とし て機能できるフレークリクエスト/トレースキャプチャ信号BRTCを含む。ブ レークリクエスト/トレースキャプチャ信号BRTCがブレークリクエスト信号 として機能するよう設定される場合、これはアサートされてプロセッサ104が デバッグモードに入るようにさせる(プロセッサ104は従来のJTAG信号を 介してホールトコマンドをスキャンインすることにより停止することもできる) 。トレースキャプチャイネーブル信号として機能するよう設定されている場合は 、ブレークリクエスト/トレースキャプチャ信号BRTCをアサートすることで トレース情報のキャプチャがイネーブルされる。この信号がデアサートされると トレースキャプチャは停止される。信号は、検出された後、次の命令の境界にお いて有効となり、かつ内部プロセッサクロックと同期化される。ブレークリクエ スト/トレースキャプチャ信号BRTCはどの時点でアサートしてもよい。 トリガ信号TRIGは内部プロセッサブレークポイントがアサートされるとい つでもパルスを生じるよう構成される。トリガ信号TRIGはロジックアナライ ザなどの外部キャプチャデバイスをトリガするのに用いてもよく、トレースレコ ードキャプチャクロック信号TRACECLKと同期する。ブレークポイントが 生成されると、そのイベントはトレースキャプチャクロック信号TRACECL Kと同期し、その後にトリガ信号TRIGはトレースキャプチャの持続時間にわ たってアクティブに保たれる。 送信停止信号STOPTXは、プロセッサ104がDEBUGモードに入り、 かつレジスタ問合せ/変更、デバッグポート100を介してのメモリまたはI/ O読取および書込の準備ができている際にアサートされる。この発明の開示され る実施例では、送信停止信号STOPTXはデバッグ制御ステータスレジスタ( DCSR)内のビットの状態を反映する。送信停止信号STOPTXはトレース キャプチャクロック信号TRACECLKと同期する。 コマンド確認信号CMDACKは図5に関連して説明され、図5は図2の強化 されたデバッグポート100における簡略化されたコマンド処理過程を示す。再 び、ターゲットシステムTをDEBUGモードに入れるため、DEBUG命令が ステップ502においてTAPコントローラ204に書かれる。制御はステップ 504に進み、コマンド完了ステータスを判定するためホストシステムHにより コマンド確認信号CMDACKがモニタされる。この信号はコマンド完了フラグ と同時にターゲットシステムTによってハイにアサートされ、次のシフトサイク ルが開始するまでハイのままである。コマンド確認信号CMDACKを用いる際 に、コマンド完了フラグステータスをキャプチャするのにJTAG命令レジスタ をシフトアウトする必要はない。コマンド確認信号CMDACKは、コマンド完 了フラグが0から1に変化した後のテストクロック信号TCKの次の立上がりエ ッジにおいてハイに遷移する。強化型JTAG信号を用いる場合、コマンド確認 信号CMDACKピンがハイにアサートされるまではホストシステムHによって 新しいシフトシーケンス(ステップ506)は開始されない。コマンド確認信号 CMDACKはテストクロック信号TCKと同期する。テストクロック信号TC Kは常にクロックされる必要はないが、理想的にはコマンド確認信号CMDAC Kの応答を待っている間は連続してクロックされる。 デバッグポート100を介するオペレーティングシステム/アプリケーショ ン通信 デバッグレジスタブロック210にはまた、命令トレース設定レジスタ(IT CR)が含まれる。この32ビットレジスタはソフトウェア性能プロファイルお よび命令トレースデバッグ機能のイネーブル/ディセーブルおよび設定を行なう 。このような機能は数多く考えられ、さまざまなレベルのトレーシング、トレー ス同期強制カウント、トレース初期化、命令トレーシングモード、クロック分周 比情報および下の表に示されるさらなる機能が含まれる。ITCRはデバッグレ ジスタブロック210の他のレジスタの場合と同様にJTAG命令レジスタ書込 /読取コマンドを介してアクセスされるか、または予約された命令を介してアク セスされる。 別のデバッグレジスタであるデバッグ制御/ステータスレジスタ(DCSR) はプロセッサ104がいつデバッグモードに入ったかを示す表示をもたらし、プ ロセッサ104が強化型JTAGインターフェイスを介してDEBUGモードに 入るように強いることができる。下の表に示されるように、DCSRはまた、プ ロセッサ104へのレディ信号の強制、デバッグポートを介して開始されるアク セスに対するメモリアクセス空間の制御、DEBUGモードに入った際のキャッ シュフラッシュのディセーブル、TXおよびRXビット、パラレルポート214 のイネーブル、強制ブレーク、強制グローバルリセットおよび他の機能など、さ まざまな制御特徴をイネーブルする。ITCRまたはDCSRのどちらかにおけ るさまざまなビットの順序または存在はこの発明の動作にとり重要ではない。 図1のようなクロスデバッグ環境にある場合、ターゲットシステムTにおいて 実行中の親タスクがこれを制御するホストプラットホームHに情報を送ることが 望ましい。このデータはたとえば、printf()コールからの文字ストリームまたは タスク制御ブロック(TCB)からのレジスタ情報を含んでいてもよい。データ を転送するためのある考えられる方法は、オペレーティングシステムがデータを 既知の領域に入れて、次にトラップ命令を介してDEBUGモードに入るように させることである。 ホストシステムHは次に、デバッグポート100のコマンドを介して、DEB UGモードに入った理由を判定し、予約された領域からデータを引出すことによ り応答することができる。しかしながら、プロセッサ104がDEBUGモード に入っている間、通常のプロセッサ実行は停止されている。上記のとおり、これ は数多くのリアルタイムのシステムにおいては望ましいことではない。 この状況はこの発明によれば、デバッグポート100においてデータを送信す るため(TX_DATAレジスタ)および受信するため(RX_DATAレジス タ)の2つのデバッグレジスタを設けることによって対処される。これらのレジ スタはソフトアドレスおよびJTAG命令レジスタコマンドを用いてアクセスで きる。上述のように、ホストシステムHがデバッグ命令をJTAG命令レジスタ に書いた後、シリアルデバッグシフタ212がテストデータ入力信号TDIライ ンおよびテストデータ出力信号TDOラインに結合される。 プロセッサ104がコードを実行し、それによりこれがデータを送信するよう にさせると、これはまずITCRにおけるRXビットをテストする。TXビット が0に設定されている場合、プロセッサ104はプロセッサ命令(メモリまたは I/O書込のいずれか)を実行してデータをTX_DATAレジスタに転送する 。デバッグポート100はDCSRおよびITCRにおいてTXビットをセット し、ホストシステムHに対してこれがデータを送信する準備ができたことを示す 。また、STOPTXピンはハイに設定される。ホストシステムHがTX_DA TAレジスタからの送信データの読取を終えると、TXビットは0に設定される 。そこで、ITCRにおけるTXINTENビットがセットされ、プロセッサ1 04に割込みの信号を発生する。この割込みはITCRにおけるTXビットが0 に遷移したときのみ生成される。TXINTENビットがセットされていない場 合、プロセッサ104はITCRをポーリングして、さらにデータを送信するた めにTXビットのステータスを判定する。 ホストシステムHがデータを送ることを望む場合、ホストシステムHはまずI TCRにおけるRXビットをテストする。RXビットが0に設定されている場合 、ホストシステムHはデータをRX_DATAレジスタに書き、RXビットがD CSRおよびITCRの双方において1に設定される。そこで、RXINTビッ トがIGCRにおいてセットされ、プロセッサ104に割込みの信号を発生する 。この割込みはITCRにおけるRXが1に遷移したときのみ生成される。RX INTENビットがセットされていない場合、プロセッサ104はITCRをポ ーリングしてRXビットのステータスを確かめる。RXビットが1に設定されて いる場合、プロセッサ命令が実行されRX_DATAレジスタからデータが読ま れる。プロセッサ104によりRX_DATΛレジスタからデータが読まれた後 に、RXビットは0に設定される。ホストシステムHは連続してITCRを読み 、さらにデータを送るためにRXビットのステータスを判定する。 この技術ではプロセッサ104の実行を停止することなくオペレーティングシ ステムまたはアプリケーションがホストシステムHと通信することが可能となる 。通信はデバッグポート100を介して好都合に行なわれ、オンチップアプリケ ーションリソースへの影響は最小である。場合によってはシステム割込みをディ セーブルする必要がある。このため、プロセッサ100がRXビットおよびTX ビットを調べる必要がある。この場合には、通信リンクはポーリングモードで駆 動される。 デバッグポート100へのパラレルインターフェイス いくつかの組込システムでは、I/Oおよびデータ処理動作を維持しながら命 令トレースを調べることが必要となる。マルチタスクのオペレーティングシステ ムを用いない場合は、デバッグポート100を介してトレースキャッシュ200 を調べるにはプロセッサ104を停止する必要があるため、トレースデータをも たらすのにボンドアウトタイプの組込プロセッサデバイス102が好ましい。 この発明の開示される実施例では、パラレルポート214がオプションのボン ドアウトタイプの組込プロセッサデバイス102に設けられ、デバッグポート1 00にパラレルコマンドおよびデータアクセスを提供する。このインターフェイ スは16ビットのデータ経路をもたらし、これはトレースパッドインターフェイ スポート220で多重化される。より特定的には、パラレルポート214は、1 6ビット幅の二方向性データバス(PDATA[15:0])、3ビットアドレ スバス(PADR[2:0])、パラレルデバッグポート読取/書込選択信号( PRW)、トレース有効信号TVおよび命令トレースレコード出力クロックTR ACECLOCK(TC)をもたらす。トレースパッドインターフェイスポート 220と共有されないが、パラレルバスリクエスト/グラント信号対PBREQ /PBGNT(図示せず)も提供される。パラレルポート214はDCSRにお けるあるビットをセットすることによりイネーブルされる。デバッグポート10 0を介するシリアル通信はパラレルポート214がイネーブルされる際にディセ ーブルされない。 パラレルポート214は主に、ターゲットシステムTのメモリに対する高速の ダウンロード/アップロードに用いることが意図される。しかしながら、パラレ ルポート214はプロセッサ104が停止したときはいつでもターゲットシステ ムTとのすべてのデバッグ通信のために用いることができる。シリアルデバッグ 信号(標準または強化型)はプロセッサ104が命令を実行している際にターゲ ットシステムTへのデバッグアクセスのために用いられる。 JTAG規格と類似した態様で、パラレルポート214へのすべての入力はテ ストクロック信号TCKの立上がりエッジにおいてサンプリングされ、すべての 出力はテストクロック信号TCKの立下がりエッジにおいて変更される。開示さ れる実施例では、パラレルポート214はトレースパッドインターフェイス22 0とピンを共用しており、プロセッサ104が停止されトレースパッドインター フェイス220が共有バスから切断されている間だけパラレルコマンドの開始が 必要となる。 パラレルバスリクエスト信号PBREQおよびパラレルバスグラント信号PB GNTは、トレースキャッシュ200とパラレルポート214との間で共有バス 信号の多重化を促進するために提供される。パラレルポート214へのホストイ ンターフェイスはパラレルバスリクエスト信号PBREQがアサートされている ことを判定すると、パラレルポート214の信号を駆動し始めパラレルバスグラ ント信号PBGNTをアサートする。 パラレルポート214がイネーブルされた状態でDEBUGモードに入るかま たはDEBUGモードから出る場合、プロセッサ状態保存および復元サイクルの ためにパラレルポート214が用いられる。パラレルバスリクエスト信号PBR EQは、DEBUGモードに入る前の状態保存シーケンスが始まる直前にアサー トされる。最後の状態復元サイクルにおいて、パラレルバスリクエスト信号PB REQは書込データをラッチした後にデアサートされる。パラレルポート214 のホストインターフェイスはパラレルバスリクエスト信号PBREQのデアサー ションに応答してそのパラレルポートドライバをトライステート状態とし、パラ レルバスグラント信号PBGNTをデアサートする。次に、パラレルポート21 4はデバッグトレースポートピンドライバをイネーブルし、最後の状態復元サイ クルを完了し、コマンド確認信号CMDACKをアサートし、インターフェイス の制御をトレース制御論理218に戻す。 パラレルポート214を介して通信する際に、アドレスピンPADR[2:0 ]を用いてJTAG命令レジスタのフィールドを選択し、これは下の表に示され るように16ビットデータバスPDATA[15:0]にマッピングされる。 debug_data[31:0]レジスタの一方の半分のみが用いられている場合(た とえば8ビットI/Oサイクルデータ書込など)は、debug_data[31:0]レ ジスタの両半分を更新する必要はない。コマンド係属中フラグは4ビットコマン ドレジスタへの書込動作を行なう際に自動的にセットされ、コマンド完了フラグ がアサートされるとクリアされる。ホストシステムHはコマンド確認信号CMD ACKをモニタして完了フラグがいつアサートされたかを判定することができる 。パラレルポート214を用いることにより、プロセッサコア104を減速する ことなく実行履歴を完全に見ることができる。必要であればトレースキャッシュ 200をパラレルポート214に対するバッファとして用いるように構成して帯 域 幅整合の問題などあれば軽減するようにしてもよい。 オペレーティングシステムおよびデバッガ統合 この発明の開示される実施例では、トレースキャッシュ200を含むすべての デバッグサポート特徴の動作はデバッグポート100またはプロセッサ命令を介 して制御することができる。これらのプロセッサ命令はモニタプログラム、ター ゲットで動作するデバッガまたは従来のポッドウェアからのものであってもよい 。デバッグポート100は、プロセッサ命令によってではなくシリアルデータポ ートコマンドによって開始されるデータ移動を行なう。 従来のポッド空間からのプロセッサコア104の動作はモニタプログラムから DEBUGモードにおいて動作するのによく類似している。すべてのデバッグ動 作はプロセッサ命令を介して制御できる。これらの命令がポッド空間から来たも のであろうと通常のメモリから来たものであろうと関係がない。このことにより 、オペレーティングシステムをさらなるデバッグ能力を含むよう拡張することが 可能となる。 むろん、ptrace()などの特権システムコールを介して、オペレーティングシス テムは長い間デバッガをサポートしてきた。しかしながら、今、オンチップトレ ースキャッシュ200を組込むことによってオペレーティングシステムがソフト ウェア性能プロファイリングおよび命令トレース能力をもたらすことが可能であ る。この発明によるデバッグ環境では、「外部」ロジックアナライザまたはイン サーキットエミュレータを組込むことなくオペレーティングシステムを強化して 限られたトレースをサポートすることができる。 トレースキャッシュ200の内容の内部ローディングおよび読出をサポートす るのに用いられる命令の例にはロード命令トレースキャッシュレコードコマンド LITCRおよびストア命令トレースキャッシュレコードコマンドSITCRが 含まれる。コマンドLITCRは、プロセッサコア104のEAXレジスタの内 容とともに、トレースキャッシュポインタITREC.PTRによる指定にした がってトレースキャッシュ200内に指標付きレコードをロードする。トレース キャッシュポインタITREC.PTRはコマンドLITCRの一般的な動作が 以下のとおりとなるように予めインクリメントされる。 ITREC.PTR<−ITREC.PTR+1; ITREC[ITREC.PTR]<−EAX 命令トレースレコード(以下のトレースレコードフォーマットの説明を参照のこ と)がEAXレコードより小さい場合には、EAXレジスタの一部のみが利用さ れる。 同様に、ストア命令トレースキャッシュレコードコマンドSITCRはトレー スキャッシュ200から指標付きレコードを取出し(EAXレジスタ内に)スト アするのに用いられる。プロセッサコア104のECXレジスタの内容は、トレ ースキャッシュ200内への指標を作るためトレースキャッシュポインタITR EC.PTRに加えられるオフセットとして用いられる。ECXレジスタは後で インクリメントされるが、トレースキャッシュポインタITREC.PTRは影 響を受けず、以下のとおりとなる。 EAX<−ITREC[ECX+ITREC.PTR]; ECX<−ECX+1 LITCRおよびSITCRコマンドのフォーマットの数多くの変形は当業者に は明らかになるであろう。 オペレーティングシステムを拡張してオンチップトレースをサポートすること には通信産業においてある利点を有する。タスクがトレースされている間、シス テムI/Oおよび通信活動を維持することが可能になる。従来、インサーキット エミュレータを使用すると、(ptrace()とは異なり)プロセッサの状態およびト レースを調べられるようにするにはまずプロセッサを停止する必要があった。こ のため、I/Oデータ処理の連続したサポートが中断されることになる。 さらに、トレースキャッシュ200は、現場の装置とともに用いると非常に有 効である。予期せずシステムクラッシュが起こった場合、トレースキャッシュ2 00を調べてクラッシュイベントに達するまでの実行履歴を観察できる。電力消 費が問題となるポータブルシステムまたは他の環境において用いる場合には、ト レースキャッシュ200を必要に応じて電力管理回路を介してディセーブルして もよい。 例示的なトレースレコードフォーマット この発明の開示される実施例では、命令トレースレコードは20ビット幅であ り、TCODE(トレースコード)およびTDATA(トレースデータ)の2つ のフィールドと有効ビットVとを含む。TCODEフィールドはTDATAフィ ールド内のデータのタイプを識別するコードである。TDATAフィールドはデ バッグの目的に用いられるソフトウェア性能プロファイルおよび他のトレース情 報を含む。 この発明のある考えられる実施例では、組込プロセッサデバイス102は下の 表に提示される性能プロファイリングデータおよび他の10個のトレースコード に対応するデータを報告する。 トレースキャッシュ200の記憶容量は限られているため、キャプチャされた トレースデータのある程度の量の「圧縮」が望ましい。トレースデータをキャプ チャする上で、以下の説明ではトレースされるプログラムのイメージがホストシ ステムHにとり入手可能であることを前提とする。プログラムイメージ(オブジ ェクトモジュール)からアドレスを得られる場合、そのアドレスはトレースデー タ内にはもたらされない。好ましくは、命令フローを中断する命令のみが報告さ れ、さらに、ターゲットアドレスが何らかの態様でデータに依存するもののみが 報告される。たとえば、このような「中断する」イベントには、コール命令、ま たはターゲットアドレスがデータレジスタまたはスタックなどの他の記憶場所か らもたらされる無条件分岐命令が含まれる。 上の表に示されるように、キャプチャできる他のトレース情報には、トラップ または割込ハンドラのターゲットアドレス、リターン命令のターゲットアドレス 、データレジスタに依存する(そうでなければ、必要となるのは分岐がとられた かとられていないかを示す1ビットのトレースだけである)ターゲットアドレス を有する条件付き分岐命令および、より多くの場合はプロシジャリターンからの アドレスが含まれる。タスク識別子およびトレースキャプチャ停止/開始情報な どの他の情報もトレースキャッシュ200内に入れることができる。トレースレ コードの厳密な内容および性質はこの発明において重要なことではない。 次に図6Aを参照して、例示的な性能プロファイルカウンタシーケンスが示さ れる。この発明によるシステムでは、トリガ制御レジスタ219は、特定された プロシジャに対して実行の経過時間を測定するカウンタを開始および停止するよ う構成される。トリガ制御レジスタ219の厳密な実現はこの発明にとって重要 ではないが、(いくつかの先行技術のマイクロプロセッサコアに存在するデバッ グレジスタDR0−DR7のいずれかなどの)従来のブレークポイントレジスタ を使用してトリガ機能を実行することが好ましい。さらに、この発明の開示され る実施例では、プロファイリング情報を集めている間は通常の命令実行が割込ま れないことに注目すべきである。 さらに具体的に図6Aを参照して、第1のオンチップトリガ制御レジスタ21 9aは、特定されたプロシジャに入る際に第1のカウンタをトリガ(開始)する よう構成される。第2のトリガ制御レジスタ219bは、特定されたプロシジャ のプロローグに入る際にカウンタを停止するよう用いられる。第1のカウンタが 開始トリガによって開始されると、これはゼロに初期化される。第2のトリガ制 御レジスタ219bにより特定されるのにしたがい停止トリガが生成されると、 第1のカウンタのカウント値がTCODE=1010トレースエントリ(図6 B)を用いてトレースキャッシュ200内に入れられる。同様の技術を用いて割 込ハンドラ実行時間などの他のパラメータを測定してもよい。上述のように、ト リガ制御レジスタ219はまた、トリガ信号TRIGを生じさせ、実行トレース が開始および停止すべきところのプログラムアドレスを選択するよう用いてもよ い。 この発明の開示される実施例では、第2のカウンタも用いられる。第2のカウ ンタは連続して実行されるが、停止トリガイベントの後にゼロにリセットされる 。また、停止トリガイベントによって第2のカウンタの値がトレースキャッシュ 200内に入れられる。この第2のカウンタ値は関心の対象であるプロシジャの 発生の頻度を得るのに有効である一方、第1のカウンタはプロシジャの実行時間 に関する情報をもたらす。 図6Bを参照して、この発明によるソフトウェア性能プロファイリング情報を 報告するためのトレースキャッシュ200エントリのセットの一般的なフォーマ ットが示される。示されるように、第1のカウンタのカウント値はTCODE= 1010トレースエントリによって16ビット値を用いてトレースキャッシュ2 00内に入れられる。このTCODE=1010トレースエントリの後に、第2 のカウンタの値を反映する32ビットカウント値を含むTCODE=0111エ ントリ対が続いていてもよい。 この発明の一実施例では、第1および第2のカウンタのカウンタ周波数(すな わち分解能)はプログラム可能である。このようなプログラム可能性により、非 常に低い周波数または高い周波数のイベントのプロファイルをとる際により高い 精度が可能となる。たとえば、下の表には、カウンタの2つの代替のプログラム 可能な累算周波数が示される。 特権レベルリング0またはリング1に入る際に、時にすべての計数(両方のカ ウンタ)を停止することが望ましいこともある。これにより、測定されたプロフ ァイリング値からシステムコールおよび割込みをなくすことができる。また、計 数をイネーブル/ディセーブルし、また双方のカウント値を同時にリセットする 手段を含む、2つのさらなるサポート特徴を組込んでもよい。この発明の開示さ れる実施例のこの局面は、モニタされる(単一のタスク内の)プロシジャの間に 生じるタスクコンテキストスイッチングを助ける。また、周期的割込ハンドラを 介してプロシジャを1つずつ調べることも可能である。 後処理ソフトウェアは任意のオフチップトレースキャプチャハードウェアとと もに、プロファイルデータを分析するのに利用できる。このため、トレースキャ ッシュ200を利用して、選択されるプロシジャにおいて費やされる実行時間に 関する情報が集められる。一般的に、一度に1つのプロシジャだけのプロファイ ルがとられる。トレースキャッシュ200を調べることにより、あるプロシジャ において費やされる最小平均および最大時間を(集められたサンプルの制限内で )判定できる。また、コード範囲プロファイリング能力を加えてテストランの間 に実行されるおよび実行されない特定のアドレスを示すようにしてもよい。トレ ースキャッシュ200により、ストアできる限りの数のサンプルを用いて統計的 分析を行なうことが可能となる。 図7Aには、条件分岐イベントを報告するための例示的なフォーマットが示さ れる。最大15の分岐イベントの結果を1つのトレースエントリとしてまとめる ことができる。16ビットのTDATAフィールド(または「BFIELD」) は1ビットの分岐結果トレースエントリを含み、TCODE=0001エントリ と記される。TDATAフィールドは、1に設定される最も左のビットを除いて 初めにクリアされる。新しい条件分岐に出会うたびに、新しい1ビットエントリ が左に加えられ、それ以外のエントリは1ビットずつ右へシフトされる。 128エントリのトレースキャッシュ200を用いることで、320バイトの 情報をストアできる。6つの命令につき1つの分岐という分岐頻度を仮定すると 、開示されるトレースキャッシュ200は、1536個の命令の有効なトレース レコードをもたらす。この推定値はコール、ジャンプおよびリターン命令の発生 を考慮していない。 トレース制御論理218はプロセッサインターフェイス論理202を介して命 令実行をモニタする。分岐ターゲットアドレスを報告しなければならない場合、 15のエントリが蓄積されていなくても、カレント条件分岐TDATAフィール ド内に含まれる情報がトレース制御論理218によって完全なものとしてマーク される。図7Bに示されるように、(32ビットアドレッシングを用いるプロセ ッサベースのデバイス102における)ターゲットアドレスはそこでトレースエ ントリ対に記録され、その第1のエントリ(TCODE=0010)はターゲッ トアドレスの上位16ビットをもたらし、第2のエントリ(TCODE=011 1)はターゲットアドレスの下位16ビットをもたらす。分岐ターゲットアドレ スが条件ジャンプ命令のために与えられる場合、報告される分岐に対する1ビッ トの分岐結果トレースエントリは現われない。 トレースキャプチャの開始および停止 次に、図7Cを参照して、たとえばタスクコンテキストスイッチが生じた際な ど、プログラム実行のあるセクションの間にトレース収集を開始および停止する ことが望ましいことがある。トレースキャプチャが停止されると、トレースエン トリはトレースキャッシュ200に入れられず、トレースポート214のボンド アウトピンにも現われない。トレースキャプチャをイネーブルおよびディセーブ ルするためにさまざまな方法が考えられる。たとえば、x86コマンドを提供し 、または既存のx86コマンドを利用してI/Oポート位置におけるビットをト グルしてもよい。代わりに、オンチップトリガ制御レジスタ219をトレースキ ャプチャが開始/停止すべきところのアドレスを示すように構成してもよい。ト レーシングがホールトされると、最後のトレースアドレスを記録しているトレー スエントリ(TCODE=1000、TCODE=0111)がトレースストリ ームに入れられる。トレーシングが再開されると、現在実行されている命令のア ドレスを含むトレース同期エントリ(TCODE=0110、TCODE=01 11)が生成される。 トレーシングが停止されている間に生じるセグメント変化を考慮することは重 要であるかもしれない。この状態は、図7Cに示されるように、TCODE=1 000エントリの直後にカレントセグメントベースアドレスエントリ(TCOD E=0100、TCODE=0111)を続けるオプションを選択することによ って一部は解決できる。あるトレースの終りにデバッグモードに入る前にカレン トセグメントベースアドレスエントリをイネーブルするための設定オプションも また望ましい。これと比較して、割込みが生じた際など、ベースが変化していな い場合にセグメントベース情報をもたらすことは望ましくないかもしれない。 図7Dを参照して、割込みまたはトラップなどの非同期または同期イベントの 発生の後に、TCODE=0101トレースエントリが生成され、ターゲット割 込ハンドラのアドレスをもたらす。しかしながら、割込エントリの直前にトレー ス同期(TCODE=0110)エントリを生成することによって割込まれた命 令のアドレスと、前セグメントベースアドレス(TCODE=0011)とを記 録することも望ましい。トレース同期エントリは割込ハンドラが始まる前にリタ イアした最後の命令のアドレスを含む。 セグメントの変化 図7Eは、セグメントパラメータの変化を報告するのに用いられるトレースエ ントリを示している。トレースストリームを処理する際にトレースアドレス値を セグメントベースアドレスと組合せて命令の線形アドレスを定める。ベースアド レスおよびデフォルトデータオペランドサイズ(32または16ビットモード) は変更することができる。この結果、TCODE=0011および0111エン トリは正確に命令フローを再構築するのに必要な情報をもたらすよう構成される 。TCODE=0011エントリに対応するTDATAフィールドは前セグメン トベースアドレスの上位16ビットを含むが、関連付けられたTCODE=01 11エントリは下位15ビットまたは4ビットを含む(これは命令がリアルモー ドで実行されるかプロテクトモードで実行されるかに依存する)。また、TCO DE=0111エントリはカレントセグメントサイズ(32ビットまたは16ビ ット)を示すビットと、動作モード(リアルまたはプロテクト)を示すビットと 、ページングが用いられているかどうかを示すビットとを含む。セグメント情報 は一般的に、カレント(ターゲット)セグメントではなく前セグメントに関連し ている。カレントセグメント情報はプロセッサコア104を停止してその状態を 調べることによって得られる。 ユーザ特定のトレースエントリ アプリケーションプログラムまたはオペレーティングシステムが付加的な情報 をトレースストリームに加えることを望む場合がある。このためには、好ましく は、所望の実行位置において16ビットデータ値をトレースストリームに入れる ことを可能にするx86命令が提供される。この命令はI/O空間への移動とし て実現でき、オペランドはメモリまたはレジスタにより与えられる。プロセッサ コア104がこの命令を実行すると、ユーザ特定のトレースエントリがトレース 制御論理218によりキャプチャされ、トレースキャッシュ200に入れられる 。図7Fに示されるように、この発明の開示される実施例ではTCODE=10 01エントリがこの目的に用いられる。このエントリはたとえば、マルチタスク のオペレーティングシステムにおいてタスクスイッチが生じた際に前のまたは現 在のタスク識別子を提供してもよい。 トレースデータの同期 プロセッサベースのデバイス102において典型的なソフトウェアを実行する 際に、アドレス値を含むトレースエントリは少ない。ほとんどのエントリはTC ODE=0001フォーマットのものであり、1つのビットが条件動作の結果を 示している。しかしながら、トレースストリームを調べる場合には、データは既 知のプログラムアドレスに関連してでなければ検討することができない。たとえ ば、トレースキャッシュ200における最も古いエントリから始まってアドレス エントリまでのすべてのエントリは利用価値が少ない。アルゴリズム同期は典型 的に、ターゲットアドレスをもたらすトレースエントリから始まる。 トレースキャッシュ200が、アドレスをもたらすエントリを1つも含んでい ない場合、トレース分析はできない。この状況は稀ではあるが起こり得る。この ため、開示される実施例では同期レジスタTSYNCを提供して同期化アドレス 情報の注入を制御する。同期レジスタTSYNCが0に設定されると、トレース 同期エントリは生成されない。 図7Gでは、例示的なトレース同期エントリが示される。動作中、カウンタレ ジスタは、ターゲットアドレスを含むトレースエントリが生成されるたびに同期 レジスタTSYNCに含まれる値にセットされる。他のすべてのトレースエント リに対してカウンタは1だけデクリメントされる。カウンタが0に達すると、最 も最近リタイアした命令(または代わりに係属中の命令)のアドレスを含むトレ ースエントリ(TCODE=0110)が挿入される。さらに、同期化エントリ がトレースキャッシュ200に記録されると、これはトレースピン220にも現 われ、全機能ICE装置に対して同期化トレースデータが十分に利用可能である ことを確実にする。 また、トレースエントリ情報を拡張して、コード範囲または実行性能に関する データを含むようにしてもよい。この情報はたとえばコードテストおよび性能チ ューニングなどに有効である。こうした強化がなくても、プロセッサコア104 がトレースキャッシュ200にアクセスするのを可能にすることは望ましい。マ イクロコントローラデバイスの場合、この特徴はトレースキャッシュ200をI /Oまたはメモリ空間内にマッピングすることにより達成できる。より一般的な アプローチでは、トレースキャッシュ200のデータのシステムメモリへの移動 をサポートする命令を含めるようにする。 このように、ソフトウェア性能プロファイリング情報をもたらすための柔軟な 高性能の解決策を提供するプロセッサベースのデバイスについて説明した。プロ セッサベースのデバイスは、プロファイリング情報をキャプチャし、かつ提供す る能力を有するトレースキャッシュを組込んでいる。プロファイリング情報を外 部デバイスに通信するためにシリアルおよびパラレル通信チャネルの双方が設け られる。開示されるオンチップトレースキャッシュにより、数多くの既存の解決 策において生じる帯域幅およびクロック同期のさまざまな問題が軽減され、また 、さほど高価でない外部キャプチャハードウェアを用いる際にはこれを利用する ことが可能となる。 この発明の上記の開示および説明は例示的かつ説明的なものであり、この発明 の精神から逸脱することなく大きさ、形状、材料、構成要素、回路素子、ワイヤ 接続および接触のさまざまな変更ならびに例示される回路の詳細、構成および動 作の方法におけるさまざまな変更を行なうことができる。
【手続補正書】特許法第184条の8第1項 【提出日】平成11年2月12日(1999.2.12) 【補正内容】 にする。ブレークポイントレジスタが、タイマを開始し停止するよう機能するオ フチップトリガパルスを発生するのに用いられる。しかしながら、シリアルリン クはオンチップのソフトウェア性能プロファイリングキャプチャ能力を提供せず 、プロファイルデータをもたらすにはさらなる専用のピンおよび外部トレースキ ャプチャハードウェアが必要である。 上述のように、時々ソフトウェア自体に計測機能が付いているためソフトウェ アを分析して性能プロファイリングデータを収集することができる。多くの場合 、計測機能付コードは、選択されたプロシジャを分析するために、プロファイリ ング情報を挿入するように構成されるコンパイラによって生成される。たとえば 、プロシジャコールのプロローグおよび終りのエピローグにおいて、コンパイラ は実行時間をトラッキングするカウンタを活性化するのに用いられるコードを挿 入してもよい。特定されたプログラム実行コールが実行されると、挿入されたル ーチンへのジャンプが行なわれカウンタ/タイマをマークする。他の補助プロシ ジャをコールする親プロシジャの実行時間は、親プロシジャの全実行時間から補 助プロシジャの実行時間を減算することによって定められる。あるモジュールの すべてのプロシジャを分析することによって、そのモジュールの全実行時間を計 算できる。むろん、所与のプロシジャの実行時間はプロシジャにおける変数の状 態に応じて変動することがあり、統計的サンプリングを利用することが必要とな る。 このように、ソフトウェア性能プロファイリングに対する数多くの現在の解決 策には、コードに計測機能を付けることの必要、パッケージングおよび開発のコ ストの増加、回路の複雑さ、ならびに帯域幅整合の困難を含む、さまざまなハー ドウェアおよびソフトウェアの制約がある。特に、内部プロセッサのクロック周 波数が増加し続けるにつれ、将来、既存の解決策の制約が悪化する可能性が高い ため、プロファイルデータをキャプチャするための低コストのプロシジャは非常 に望ましいものである。 米国特許第5,058,114号では、トレース機能を組込んだプログラム制 御装置が記載されている。ある特定の動作モードの間に活性化され外部条件に対 応する情報とプログラム制御装置の動作シーケンスにかかった時間に関する情報 とを連続してストアする記憶回路が提供される。 発明の開示 簡単に、この発明によるプロセッサベースのデバイスは、ソフトウェア性能プ ロファイリング情報を提供するためのオンチップトレースキャッシュおよびサポ ート回路を含む。トレースキャッシュは選択されたプロシジャにおいて費やされ た実行時間に関する情報を集める。よって性能プロファイリング情報が、コード に計測機能を付けたり、プログラム実行速度に悪影響を与えたり、または高価な オフチップサポート装置を用いることなく集められる。 この発明によるシステムにおいて、ブレークポイントまたはトリガ制御レジス タは、選択されたプロシジャに入る際に第1のオンチップカウンタを初期化およ びトリガ(開始)するよう構成される。第2のブレークポイントまたはトリガ制 御レジスタは、選択されたプロシジャのプロシジャエピローグに入った際に第1 のカウンタを停止するのに用いられる。選択されたプロシジャの経過した実行時 間を反映するカウンタ値はそこでオンチップトレースキャッシュにストアされる 。割込ハンドラ実行時間などの他のパラメータを測定するのに類似の技術を用い ることができる。 この発明の開示される実施例では、第2のカウンタも設けられる。第2のカウ ンタは連続して実行されるが、第2のトリガ制御レジスタにより生じる停止トリ ガイベントの後にゼロにリセットされる。また、停止トリガイベントによって第 2のカウンタの値がオンチップトレースキャッシュ内に入れられる。この第2の カウンタ値は関心の対象であるプロシジャの発生の頻度を得るのに有効である一 方、第1のカウンタはプロシジャの実行時間に関する情報をもたらす。 プロファイルデータは、選択されるプロシジャが実行されるコンピュータシス テム内にある後処理ソフトウェアによって、デバッグポートを利用するホストシ ステムによって、またはチップ外のトレースキャプチャ用ハードウェアを介して 分析できる。一般的に、一度に1つのプロシジャだけについてプロファイルがと られる。トレースキャッシュを調べることによって、あるプロシジャにおいて費 やされた最小、平均および最大時間ならびに他の統計的データを判定できる。こ請求の範囲 1.一連の命令を実行するように適合される電子プロセッサベースのデバイス( 102)であって、前記プロセッサベースのデバイスにはピン(230)が設け られ外部導体への接続ができ、前記電子プロセッサベースのデバイスは プロセッサコア(104)を含み、 トレースキャッシュ(200)は前記プロセッサコア(104)に結合され前 記プロセッサコアにより実行されるプロシジャのための実行時間に関連する性能 プロファイリング情報をストアし、前記トレースキャッシュは一連の記憶素子を 含み、 トレース制御回路(218)は前記性能プロファイリング情報を集め前記性能 プロファイリング情報を前記トレースキャッシュ(200)にもたらすことを特 徴とする、プロセッサベースのデバイス。 2.前記トレース制御回路(218)は 前記トレースキャッシュ(200)に結合される第1のカウンタと、 前記第1のカウンタに結合される第1のトリガ制御レジスタ(219a)とを 含み、前記第1のトリガ制御レジスタ(219a)は予め定められた命令の実行 の際に前記第1のカウンタを活性化するよう構成可能であり、前記トレース制御 回路(218)はさらに 前記第1のカウンタに結合される第2のトリガ制御レジスタ(219b)を含 み、前記第2のトリガ制御レジスタ(219b)はさらなる予め定められた命令 の実行の際に前記第1のカウンタを非活性化するよう構成可能であり、 前記第1のカウンタの非活性化によりそのカウント値が前記トレースキャッシ ュ内にストアされる、請求項1に記載のプロセッサベースのデバイス。 3.前記トレース制御回路(218)は 前記トレースキャッシュ(102)に結合される第2のカウンタをさらに含み 、 前記第2のトリガ制御レジスタ(219b)はさらなる予め定められた命令の 実行の際に前記第2のカウンタを初期化するようさらに構成可能であり、前記第 2のカウンタの初期化により、初期化の直前のそのカウント値が前記トレースキ ャッシュ(200)内にストアされる、請求項2に記載のプロセッサベースのデ バイス。 4.前記予め定められた命令は特定されたソフトウェアプロシジャへ入ったこと を示し、前記さらなる予め定められた命令は特定されたソフトウェアプロシジャ から出たことを示す、請求項2または3に記載のプロセッサベースのデバイス。 5.前記予め定められた命令は特定された割込ハンドラへ入ったことを示し、前 記さらなる予め定められた命令は前記特定された割込ハンドラから出たことを示 す、請求項4に記載のプロセッサベースのデバイス。 6.前記トレースキャッシュ(200)はファーストインファーストアウト(F IFO)循環キャッシュである、請求項1から5のいずれかに記載のプロセッサ ベースのデバイス。 7.前記トレースキャッシュとピンの選択されたものとの間に接続され前記トレ ースキャッシュから外部デバイスへ性能プロファイリング情報を送信するための 通信チャネルをさらに含む、請求項1から6のいずれかに記載のプロセッサベー スのデバイス。 8.ソフトウェア性能プロファイリング情報を生成し分析するためのソフトウェ ア開発環境であって 請求項7にクレームされるような電子プロセッサベースのデバイス(102) と、 前記プロセッサベースのデバイスのピンに通信可能に結合されトレースキャッ シュから性能プロファイリング情報を受信するためのホストシステム(H)とを 含み、前記ホストシステム(H)は性能プロファイル情報を分析するためのソフ トウェアを含む、ソフトウェア開発環境。 9.一連の命令を実行するプロセッサコア(104)を有するプロセッサベース のデバイス(102)から、ソフトウェア性能プロファイリング情報を後処理ハ ードウェアまたは外部デバッグシステム(H)にもたらす方法であって、 前記プロセッサベースのデバイス(102)内にトレースキャッシュ(200 )を設けるステップを含み、前記トレースキャッシュ(200)は一連の記憶素 子を含んでおり、前記方法はさらに 第1のカウンタを設けるステップと、 予め定められた命令の実行の際に前記カウンタを活性化するステップと、 さらなる予め定められた命令の実行の際に前記カウンタを非活性化するステ ップとによって、前記プロセッサコア(104)により実行されるプロシジャの ための実行時間に関連する性能プロファイリング情報を生成するステップを含み 、前記性能プロファイリング情報は非活性化された後の前記カウンタのカウント 値を含んでおり、前記方法はさらに 前記トレースキャッシュの記憶素子内に前記性能プロファイリング情報をスト アするステップと、 前記性能プロファイリング情報を前記後処理ハードウェアまたは外部デバッグ システムにもたらすステップとを含む、方法。 10.前記性能プロファイリング情報をもたらす前記ステップは、 前記トレースキャッシュ(200)から前記デバッグシステム(H)への通信 チャネルを設けるステップと、 前記性能プロファイリング情報を前記トレースキャッシュ(200)から前記 デバッグシステム(H)へ前記通信チャネルを介して通信するステップとを含む 、請求項9に記載の方法。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),JP,KR 【要約の続き】 イルデータを分析するのに、ターゲットシステムに対し て実行される後処理ソフトウェア、デバッグポートを利 用するホストシステム、またはオフチップトレースキャ プチャハードウェアのいずれを用いてもよい。

Claims (1)

  1. 【特許請求の範囲】 1.一連の命令を実行するように適合される電子プロセッサベースのデバイス( 102)であって、前記プロセッサベースのデバイスにはピンが設けられ外部導 体への接続ができ、前記プロセッサベースのデバイスはプロセッサコア(104 )を含み、前記電子プロセッサベースのデバイスは 前記プロセッサコア(104)に結合され前記プロセッサコアにより実行され る命令に関連する性能プロファイリング情報をストアするためのトレースキャッ シュ(200)を特徴としており、前記トレースキャッシュは一連の記憶素子を 含み、各記憶素子は性能プロファイリング情報をストアするよう適合されること を特徴とする、プロセッサベースのデバイス。 2.プロセッサベースのデバイス(102)であって 前記トレースキャッシュ(200)に結合される第1のカウンタと、 前記第1のカウンタに結合される第1のトリガ制御レジスタ(219a)とを さらに含み、前記第1のトリガ制御レジスタ(219a)は予め定められた命令 の実行の際に前記第1のカウンタを活性化するよう構成可能であり、前記プロセ ッサベースのデバイスはさらに 前記第1のカウンタに結合される第2のトリガ制御レジスタ(219b)を含 み、前記第2のトリガ制御レジスタ(219b)はさらなる予め定められた命令 の実行の際に前記第1のカウンタを非活性化するよう構成可能であり、 前記第1のカウンタの非活性化によりそのカウント値が前記トレースキャッシ ュ内にストアされる、請求項1に記載のプロセッサベースのデバイス。 3.プロセッサベースのデバイス(102)であって 前記トレースキャッシュ(102)に結合される第2のカウンタをさらに含み 、 前記第2のトリガ制御レジスタ(219b)はさらなる予め定められた命令の 実行の際に前記第2のカウンタを初期化するようさらに構成可能であり、前記第 2のカウンタの初期化により、初期化の直前のそのカウント値が前記トレースキ ャッシュ(200)内にストアされる、請求項2に記載のプロセッサベースのデ バイス。 4.前記予め定められた命令は特定されたソフトウェアプロシジャへ入ったこと を示し、前記さらなる予め定められた命令は特定されたソフトウェアプロシジャ から出たことを示す、請求項2に記載のプロセッサベースのデバイス。 5.前記予め定められた命令は特定された割込ハンドラへ入ったことを示し、前 記さらなる予め定められた命令は前記特定された割込ハンドラから出たことを示 す、請求項2に記載のプロセッサベースのデバイス。 6.前記トレースキャッシュ(200)はファーストインファーストアウト(F IFO)循環キャッシュである、請求項1に記載のプロセッサベースのデバイス 。 7.前記トレースキャッシュとピンの選択されたものとの間に接続され前記トレ ースキャッシュから外部デバイスへ性能プロファイリング情報を送信するための 通信チャネルをさらに含む、請求項1に記載のプロセッサベースのデバイス。 8.一連の命令を実行するプロセッサコア(104)を有するプロセッサベース のデバイス(102)から、ソフトウェア性能プロファイリング情報を後処理ハ ードウェアまたは外部デバッグシステム(H)にもたらす方法であって、 前記プロセッサベースのデバイス(102)内にトレースキャッシュ(200 )を設けるステップを含み、前記トレースキャッシュ(200)は性能プロファ イリング情報をストアするよう適合される一連の記憶素子を含んでおり、前記方 法はさらに 前記プロセッサコア(104)により実行される命令に関連する性能プロファ イリング情報を生成するステップと、 前記トレースキャッシュの記憶素子内に前記性能プロファイリング情報をスト アするステップとを含む、方法。 9.前記生成するステップは カウンタを設けるステップと、 予め定められた命令の実行の際に前記カウンタを活性化するステップと、 さらなる予め定められた命令の実行の際に前記カウンタを非活性化するステッ プとを含み、前記性能プロファイリング情報は非活性化された後の前記カウンタ のカウント値を含んでいる、請求項8に記載の方法。 10.前記トレースキャッシュ(200)から前記デバッグシステム(H)への 通信チャネル(230)を設けるステップと、 前記トレース情報を前記トレースキャッシュ(200)から前記デバッグシス テム(H)へ前記通信チャネル(230)を介して通信するステップとをさらに 含む、請求項8に記載の方法。 11.ソフトウェア性能プロファイリング情報を生成し分析するためのソフトウ ェア開発環境であって 一連の命令を実行するよう適合される電子プロセッサベースのデバイス(10 2)を含み、前記プロセッサベースのデバイスは 外部導体へ接続するためのピンと、 プロセッサコア(104)と、 前記プロセッサコア(104)に結合され前記プロセッサコア(104)に より実行される命令に関連する性能プロファイリング情報をストアするためのト レースキャッシュ(200)とを含み、前記トレースキャッシュ(200)は一 連の記憶素子を含み、前記記憶素子は性能プロファイリング情報をストアするよ う適合されており、前記プロセッサベースのデバイスはさらに 前記トレースキャッシュと前記ピンの選択されたものとの間に接続され前記 トレースキャッシュから前記ピンへ性能プロファイリング情報を送信するための 通信チャネル(230)を含み、前記ソフトウェア開発環境はさらに 前記プロセッサベースのデバイスの前記ピンに通信可能に結合され前記トレー スキャッシュから性能プロファイリング情報を受信するためのホストシステム( H)を含み、前記ホストシステム(H)は性能プロファイルデータを分析するた めのソフトウェアを含む、ソフトウェア開発環境。
JP54301998A 1997-04-08 1998-04-07 プロセッサベースのデバイス、ソフトウェア性能プロファイリング情報をもたらす方法およびソフトウェア性能プロファイリング情報を生成し分析するためのソフトウェア開発システム Expired - Lifetime JP4138021B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US4307097P 1997-04-08 1997-04-08
US60/043,070 1997-04-08
US08/992,610 1997-12-17
US08/992,610 US6154857A (en) 1997-04-08 1997-12-17 Microprocessor-based device incorporating a cache for capturing software performance profiling data
PCT/US1998/006838 WO1998045784A1 (en) 1997-04-08 1998-04-07 Microprocessor-based device incorporating a cache for capturing software performance profiling data

Publications (3)

Publication Number Publication Date
JP2001519949A true JP2001519949A (ja) 2001-10-23
JP2001519949A5 JP2001519949A5 (ja) 2005-11-10
JP4138021B2 JP4138021B2 (ja) 2008-08-20

Family

ID=26720006

Family Applications (1)

Application Number Title Priority Date Filing Date
JP54301998A Expired - Lifetime JP4138021B2 (ja) 1997-04-08 1998-04-07 プロセッサベースのデバイス、ソフトウェア性能プロファイリング情報をもたらす方法およびソフトウェア性能プロファイリング情報を生成し分析するためのソフトウェア開発システム

Country Status (6)

Country Link
US (1) US6154857A (ja)
EP (1) EP0974096B1 (ja)
JP (1) JP4138021B2 (ja)
KR (1) KR100522193B1 (ja)
DE (1) DE69801156T2 (ja)
WO (1) WO1998045784A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008293061A (ja) * 2007-05-22 2008-12-04 Nec Electronics Corp 半導体装置、及び半導体装置のデバッグ方法
JP2010020767A (ja) * 2008-07-09 2010-01-28 Arm Ltd データ処理装置の監視およびその監視データの集計
JP2012133752A (ja) * 2010-11-29 2012-07-12 Denso Corp マイクロコンピュータ
JP2013228924A (ja) * 2012-04-26 2013-11-07 Kyocera Document Solutions Inc 半導体集積回路

Families Citing this family (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3542463B2 (ja) * 1997-07-29 2004-07-14 Necエレクトロニクス株式会社 集積回路装置、その動作制御方法
US6347368B1 (en) * 1997-12-30 2002-02-12 Jerry David Harthcock Microcomputing device for exchanging data while executing an application
JP3684831B2 (ja) * 1998-03-31 2005-08-17 セイコーエプソン株式会社 マイクロコンピュータ、電子機器及びデバッグシステム
US7275246B1 (en) * 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US6826748B1 (en) * 1999-01-28 2004-11-30 Ati International Srl Profiling program execution into registers of a computer
US8065504B2 (en) 1999-01-28 2011-11-22 Ati International Srl Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US7111290B1 (en) 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US6370660B1 (en) * 1999-04-21 2002-04-09 Advanced Micro Devices, Inc. Apparatus and method for providing a wait for status change capability for a host computer system
US6374369B1 (en) * 1999-05-21 2002-04-16 Philips Electronics North America Corporation Stochastic performance analysis method and apparatus therefor
US6779107B1 (en) 1999-05-28 2004-08-17 Ati International Srl Computer execution by opportunistic adaptation
JP3767276B2 (ja) * 1999-09-30 2006-04-19 富士通株式会社 システムコール情報の記録方法および記録装置
US6732307B1 (en) 1999-10-01 2004-05-04 Hitachi, Ltd. Apparatus and method for storing trace information
US6615370B1 (en) * 1999-10-01 2003-09-02 Hitachi, Ltd. Circuit for storing trace information
US6918065B1 (en) 1999-10-01 2005-07-12 Hitachi, Ltd. Method for compressing and decompressing trace information
US6684348B1 (en) 1999-10-01 2004-01-27 Hitachi, Ltd. Circuit for processing trace information
US6542940B1 (en) * 1999-10-25 2003-04-01 Motorola, Inc. Method and apparatus for controlling task execution in a direct memory access controller
JP2001184212A (ja) * 1999-12-24 2001-07-06 Mitsubishi Electric Corp トレース制御回路
DE19963832A1 (de) * 1999-12-30 2001-07-05 Ericsson Telefon Ab L M Programmprofilierung
EP1130501B1 (en) * 2000-03-02 2009-07-15 Texas Instruments Incorporated Dynamically configurable debug port for concurrent support of debug functions from multiple data processing cores
US6687816B1 (en) * 2000-04-04 2004-02-03 Peoplesoft, Inc. Configuration caching
WO2001080012A2 (en) * 2000-04-11 2001-10-25 Analog Devices, Inc. Non-intrusive application code profiling method and apparatus
GB2368689B (en) * 2000-06-28 2004-12-01 Ibm Performance profiling in a data processing system
JP2002099447A (ja) * 2000-09-22 2002-04-05 Fujitsu Ltd プロセッサ
US20020073406A1 (en) * 2000-12-12 2002-06-13 Darryl Gove Using performance counter profiling to drive compiler optimization
JP2002197049A (ja) * 2000-12-26 2002-07-12 Sharp Corp マイクロコンピュータ
JP3491617B2 (ja) * 2001-03-01 2004-01-26 日本電気株式会社 運用レポート作成方式、運用レポート作成方法および運用レポート作成用プログラム
WO2003019375A1 (en) * 2001-08-27 2003-03-06 Telefonaktiebolaget L M Ericsson (Publ) Dynamic tracing in a real-time system
US7047519B2 (en) * 2001-09-26 2006-05-16 International Business Machines Corporation Dynamic setting of breakpoint count attributes
US6961928B2 (en) * 2001-10-01 2005-11-01 International Business Machines Corporation Co-ordinate internal timers with debugger stoppage
US6931492B2 (en) * 2001-11-02 2005-08-16 International Business Machines Corporation Method for using a portion of the system cache as a trace array
US7073048B2 (en) * 2002-02-04 2006-07-04 Silicon Lease, L.L.C. Cascaded microcomputer array and method
US7107489B2 (en) * 2002-07-25 2006-09-12 Freescale Semiconductor, Inc. Method and apparatus for debugging a data processing system
US7013409B2 (en) * 2002-07-25 2006-03-14 Freescale Semiconductor, Inc. Method and apparatus for debugging a data processing system
US20040019828A1 (en) * 2002-07-25 2004-01-29 Gergen Joseph P. Method and apparatus for debugging a data processing system
DE10234469A1 (de) * 2002-07-29 2004-02-12 Siemens Ag Verfahren zur Erfassung von Programmlaufzeiten in einem Datenverarbeitungsgerät
GB2393272A (en) * 2002-09-19 2004-03-24 Advanced Risc Mach Ltd Controlling performance counters within a data processing system
WO2005050372A2 (en) * 2003-11-13 2005-06-02 The Board Of Governors For Higher Education State Of Rhode Island : Providence Plantation Hardware environment for low-overhead profiling
EP1531395A1 (en) * 2003-11-17 2005-05-18 Infineon Technologies AG Method of determining information about the processes which run in a program-controlled unit during the execution of a program
US7404178B2 (en) 2004-02-18 2008-07-22 Hewlett-Packard Development Company, L.P. ROM-embedded debugging of computer
WO2005109203A2 (en) * 2004-05-12 2005-11-17 Koninklijke Philips Electronics N.V. Data processing system with trace co-processor
US8719837B2 (en) 2004-05-19 2014-05-06 Synopsys, Inc. Microprocessor architecture having extendible logic
JP4336251B2 (ja) * 2004-06-01 2009-09-30 インターナショナル・ビジネス・マシーンズ・コーポレーション トレーサビリティシステム、トレース情報管理方法、トレース情報管理プログラム、及び記録媒体
DE102004028819B4 (de) * 2004-06-15 2006-10-19 Siemens Ag Verfahren zur Ermittlung und Übertragung von Programmlaufzeiten in eingebetteten Systemen
US7353429B2 (en) * 2004-08-17 2008-04-01 International Business Machines Corporation System and method using hardware buffers for processing microcode trace data
US7849364B2 (en) * 2005-03-01 2010-12-07 Microsoft Corporation Kernel-mode in-flight recorder tracing mechanism
US20060218204A1 (en) * 2005-03-25 2006-09-28 International Business Machines Corporation Log stream validation in log shipping data replication systems
US7475291B2 (en) * 2005-03-31 2009-01-06 International Business Machines Corporation Apparatus and method to generate and save run time data
US20060224925A1 (en) * 2005-04-05 2006-10-05 International Business Machines Corporation Method and system for analyzing an application
US7797686B2 (en) * 2005-05-13 2010-09-14 Texas Instruments Incorporated Behavior of trace in non-emulatable code
US7788645B2 (en) * 2005-05-16 2010-08-31 Texas Instruments Incorporated Method for guaranteeing timing precision for randomly arriving asynchronous events
US7607047B2 (en) * 2005-05-16 2009-10-20 Texas Instruments Incorporated Method and system of identifying overlays
US20060255978A1 (en) * 2005-05-16 2006-11-16 Manisha Agarwala Enabling Trace and Event Selection Procedures Independent of the Processor and Memory Variations
US7590892B2 (en) * 2005-05-16 2009-09-15 Texas Instruments Incorporated Method and system of profiling real-time streaming channels
US20060277435A1 (en) * 2005-06-07 2006-12-07 Pedersen Frode M Mechanism for storing and extracting trace information using internal memory in microcontrollers
US20060294343A1 (en) * 2005-06-27 2006-12-28 Broadcom Corporation Realtime compression of microprocessor execution history
US7650539B2 (en) * 2005-06-30 2010-01-19 Microsoft Corporation Observing debug counter values during system operation
US8218635B2 (en) 2005-09-28 2012-07-10 Synopsys, Inc. Systolic-array based systems and methods for performing block matching in motion compensation
KR101358750B1 (ko) * 2007-01-22 2014-02-06 삼성전자주식회사 관계형 데이터베이스를 이용한 프로그램 트레이스 방법
GB2447683B (en) * 2007-03-21 2011-05-04 Advanced Risc Mach Ltd Techniques for generating a trace stream for a data processing apparatus
GB0709105D0 (en) * 2007-05-11 2007-06-20 Univ Leicester Debugging tool
JPWO2009011028A1 (ja) * 2007-07-17 2010-09-09 株式会社アドバンテスト 電子デバイス、ホスト装置、通信システム、およびプログラム
US20090037886A1 (en) * 2007-07-30 2009-02-05 Mips Technologies, Inc. Apparatus and method for evaluating a free-running trace stream
JP5029245B2 (ja) * 2007-09-20 2012-09-19 富士通セミコンダクター株式会社 プロファイリング方法及びプログラム
US7802142B2 (en) * 2007-12-06 2010-09-21 Seagate Technology Llc High speed serial trace protocol for device debug
US8312253B2 (en) 2008-02-22 2012-11-13 Freescale Semiconductor, Inc. Data processor device having trace capabilities and method
US8140911B2 (en) * 2008-03-20 2012-03-20 International Business Machines Corporation Dynamic software tracing
GB2473850A (en) * 2009-09-25 2011-03-30 St Microelectronics Cache configured to operate in cache or trace modes
US10169187B2 (en) 2010-08-18 2019-01-01 International Business Machines Corporation Processor core having a saturating event counter for making performance measurements
KR101301022B1 (ko) * 2011-12-23 2013-08-28 한국전자통신연구원 암 코어 기반의 프로세서를 위한 외부 공격 방어 장치 및 이를 이용한 방법
US10289540B2 (en) * 2016-10-06 2019-05-14 International Business Machines Corporation Performing entropy-based dataflow analysis
US10761588B2 (en) * 2018-08-09 2020-09-01 Micron Technology, Inc. Power configuration component including selectable configuration profiles corresponding to operating characteristics of the power configuration component
US12056040B2 (en) 2020-05-11 2024-08-06 Politecnico Di Milano Computing platform and method for synchronize the prototype execution and simulation of hardware devices
CN117595860B (zh) * 2023-11-15 2024-08-09 合芯科技有限公司 计数器、存储器和芯片

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3707725A (en) * 1970-06-19 1972-12-26 Ibm Program execution tracing system improvements
JPS59194245A (ja) * 1983-04-19 1984-11-05 Nec Corp マイクロプログラム制御装置
JPH01134541A (ja) * 1987-11-20 1989-05-26 Toshiba Corp 情報処理装置
JP2678283B2 (ja) * 1988-03-15 1997-11-17 株式会社日立製作所 データ通信制御装置
JPH04148242A (ja) * 1990-10-08 1992-05-21 Fujitsu Ltd ロード・モジュール実行時トレース処理方法
EP0636976B1 (en) * 1993-07-28 1998-12-30 Koninklijke Philips Electronics N.V. Microcontroller provided with hardware for supporting debugging as based on boundary scan standard-type extensions
US5537541A (en) * 1994-08-16 1996-07-16 Digital Equipment Corporation System independent interface for performance counters
US5964893A (en) * 1995-08-30 1999-10-12 Motorola, Inc. Data processing system for performing a trace function and method therefor
US5774724A (en) * 1995-11-20 1998-06-30 International Business Machines Coporation System and method for acquiring high granularity performance data in a computer system
US5724505A (en) * 1996-05-15 1998-03-03 Lucent Technologies Inc. Apparatus and method for real-time program monitoring via a serial interface
US5898873A (en) * 1996-11-12 1999-04-27 International Business Machines Corporation System and method for visualizing system operation trace chronologies
GB9626367D0 (en) * 1996-12-19 1997-02-05 Sgs Thomson Microelectronics Providing an instruction trace

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008293061A (ja) * 2007-05-22 2008-12-04 Nec Electronics Corp 半導体装置、及び半導体装置のデバッグ方法
JP2010020767A (ja) * 2008-07-09 2010-01-28 Arm Ltd データ処理装置の監視およびその監視データの集計
US9858169B2 (en) 2008-07-09 2018-01-02 Arm Limited Monitoring a data processing apparatus and summarising the monitoring data
JP2012133752A (ja) * 2010-11-29 2012-07-12 Denso Corp マイクロコンピュータ
JP2013228924A (ja) * 2012-04-26 2013-11-07 Kyocera Document Solutions Inc 半導体集積回路

Also Published As

Publication number Publication date
DE69801156D1 (de) 2001-08-23
EP0974096A1 (en) 2000-01-26
KR20010006194A (ko) 2001-01-26
DE69801156T2 (de) 2002-03-14
EP0974096B1 (en) 2001-07-18
JP4138021B2 (ja) 2008-08-20
US6154857A (en) 2000-11-28
KR100522193B1 (ko) 2005-10-18
WO1998045784A1 (en) 1998-10-15

Similar Documents

Publication Publication Date Title
JP4138021B2 (ja) プロセッサベースのデバイス、ソフトウェア性能プロファイリング情報をもたらす方法およびソフトウェア性能プロファイリング情報を生成し分析するためのソフトウェア開発システム
KR100546087B1 (ko) 마이크로프로세서 기반의 디바이스를 위한 트레이스 캐시
US6009270A (en) Trace synchronization in a processor
US6185732B1 (en) Software debug port for a microprocessor
US6175914B1 (en) Processor including a combined parallel debug and trace port and a serial port
KR100517679B1 (ko) 컴팩트한 트레이스 기록 기억장치를 포함하는 디버그 인터페이스
US6041406A (en) Parallel and serial debug port on a processor
US5978902A (en) Debug interface including operating system access of a serial/parallel debug port
US6189140B1 (en) Debug interface including logic generating handshake signals between a processor, an input/output port, and a trace logic
US6142683A (en) Debug interface including data steering between a processor, an input/output port, and a trace logic
US6145100A (en) Debug interface including timing synchronization logic
US6154856A (en) Debug interface including state machines for timing synchronization and communication
EP0567722B1 (en) System for analyzing and debugging embedded software through dynamic and interactive use of code markers
US6145123A (en) Trace on/off with breakpoint register
US5724505A (en) Apparatus and method for real-time program monitoring via a serial interface
US5265254A (en) System of debugging software through use of code markers inserted into spaces in the source code during and after compilation
EP0645705A1 (en) Testing and monitoring of programmed devices
KR20070109432A (ko) 커널 인지 디버깅 장치 및 방법
EP1091298A2 (en) Interface for transferring debug information
EP0869434A2 (en) Method for outputting trace information of a microprocessor
EP1184790B1 (en) Trace cache for a microprocessor-based device
US7360117B1 (en) In-circuit emulation debugger and method of operation thereof
EP1100017A1 (en) Memory access monitoring and debugging device
JPH11102306A (ja) エミュレータ
Leatherman et al. Processor and System Bus On-Chip Instrumentation

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050322

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050322

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070605

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20070904

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20071015

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071004

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20071204

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080228

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20080417

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080605

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110613

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110613

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120613

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120613

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130613

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term