JP4138021B2 - プロセッサベースのデバイス、ソフトウェア性能プロファイリング情報をもたらす方法およびソフトウェア性能プロファイリング情報を生成し分析するためのソフトウェア開発システム - Google Patents
プロセッサベースのデバイス、ソフトウェア性能プロファイリング情報をもたらす方法およびソフトウェア性能プロファイリング情報を生成し分析するためのソフトウェア開発システム Download PDFInfo
- Publication number
- JP4138021B2 JP4138021B2 JP54301998A JP54301998A JP4138021B2 JP 4138021 B2 JP4138021 B2 JP 4138021B2 JP 54301998 A JP54301998 A JP 54301998A JP 54301998 A JP54301998 A JP 54301998A JP 4138021 B2 JP4138021 B2 JP 4138021B2
- Authority
- JP
- Japan
- Prior art keywords
- software
- trace
- processor
- based device
- profiling information
- 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.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3409—Recording 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/3419—Recording 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3466—Performance evaluation by tracing or monitoring
- G06F11/348—Circuit details, i.e. tracer hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
- G06F11/3656—Software debugging using additional hardware using a specific debug interface
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/26—Functional testing
- G06F11/261—Functional testing by simulating additional hardware, e.g. fault simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/86—Event-based monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/885—Monitoring 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)
Description
技術分野
この発明はマイクロプロセッサにおけるソフトウェア性能プロファイリングサポートに関し、より特定的にはソフトウェア性能プロファイルデータをキャプチャする能力を有するオンチップトレースキャッシュを組込んだマイクロプロセッサベースのデバイスに関する。
【0002】
背景技術
ソフトウェア性能プロファイリングとは、ソフトウェアプログラム内での種々のソフトウェアプロシジャの実行時間、頻度およびコールパターンを調べることである。ソフトウェアアプリケーションの実行時間を最適化しようと試みるソフトウェアエンジニアにとって、性能プロファイリングは非常に有効なツールとなり得る。ソフトウェアプロファイリングを実行するために、統計的分析に基づく数多くの技術を含むさまざまな技術が現在用いられている。ソフトウェアプロファイリングを実行する際に、実行時間およびサブルーチンコールリンクは時々、ソフトウェアを実行しているコンピュータシステムのシステムバスをモニタする外部の(オフチップの)計測器によりキャプチャされる。代わりに、ソフトウェアが実行されるコンピュータシステムに直接プロファイリング情報をもたらすようソフトウェアに「計測機能を付ける」またはソフトウェアを変形することができる。
【0003】
ソフトウェアがますます複雑になり、これに相まってプロセッサのクロック速度が増加していることから、アプリケーションソフトウェアの開発者らの負担が増し、性能プロファイリングの課題が複雑になっている。現在、新しいソフトウェア製品の開発、デバッグおよび最適化に関連するコストはプロセッサを選択する上で重要な要素である。性能プロファイリングを含む、ソフトウェアデバッグを十分容易にするプロセッサ機能により、顧客による開発にかかる時間が短くなり産業においてそのプロセッサを用いることの魅力が増す。ソフトウェアデバッグサポートを提供することは、専門化されたオンチップ回路がしばしばプロセッサコアと組合されている組込製品産業において特に必要とされている。
【0004】
ロジックアナラザイザ、読出専用メモリ(ROM)エミュレータおよびインサーキットエミュレータ(ICE)がソフトウェア性能プロファイリングデータをキャプチャするのにしばしば用いられる。インサーキットエミュレータは他のデバッグ環境に比べて、メモリおよびレジスタの内容に対する完全な可制御性および可観測性をもたらし、システムメモリが不十分である場合にはオーバレイおよびトレースメモリをも提供するなどの利点がある。しかしながら、カスタムエミュレータバックエンドをプロセッサソケットとインターフェイスしてエミュレーション装置とターゲットシステムとの通信を可能にする従来のインサーキットエミュレータの使用は今日の非定型のパッケージおよび製品寿命サイクル短縮の時代においてはますます困難であり費用が高くなりつつある。
【0005】
別のアプローチ(モトローラ社(Motorola,Inc.)による「バックグラウンドデバッグモード」(“Background Debug Mode”))では、基本的な実行制御のため、限られたオンチップデバッグ回路が提供される。このアプローチでは、さらなるピンを必要とする専用シリアルリンクを介してデバッガ/性能プロファイラがターゲットシステムを開始および停止し、かつシステムメモリに特殊な命令を挿入することにより基本的なコードのブレークポイントを適用することを可能にする。ブレークポイントレジスタが、タイマを開始し停止するよう機能するオフチップトリガパルスを発生するのに用いられる。しかしながら、シリアルリンクはオンチップのソフトウェア性能プロファイリングキャプチャ能力を提供せず、プロファイルデータをもたらすにはさらなる専用のピンおよび外部トレースキャプチャハードウェアが必要である。
【0006】
上述のように、時々ソフトウェア自体に計測機能が付いているためソフトウェアを分析して性能プロファイリングデータを収集することができる。多くの場合、計測機能付コードは、選択されたプロシジャを分析するために、プロファイリング情報を挿入するように構成されるコンパイラによって生成される。たとえば、プロシジャコールのプロローグおよび終りのエピローグにおいて、コンパイラは実行時間をトラッキングするカウンタを活性化するのに用いられるコードを挿入してもよい。特定されたプログラム実行コールが実行されると、挿入されたルーチンへのジャンプが行なわれカウンタ/タイマをマークする。他の補助プロシジャをコールする親プロシジャの実行時間は、親プロシジャの全実行時間から補助プロシジャの実行時間を減算することによって定められる。あるモジュールのすべてのプロシジャを分析することによって、そのモジュールの全実行時間を計算できる。むろん、所与のプロシジャの実行時間はプロシジャにおける変数の状態に応じて変動することがあり、統計的サンプリングを利用することが必要となる。
【0007】
このように、ソフトウェア性能プロファイリングに対する数多くの現在の解決策には、コードに計測機能を付けることの必要、パッケージングおよび開発のコストの増加、回路の複雑さ、ならびに帯域幅整合の困難を含む、さまざまなハードウェアおよびソフトウェアの制約がある。特に、内部プロセッサのクロック周波数が増加し続けるにつれ、将来、既存の解決策の制約が悪化する可能性が高いため、プロファイルデータをキャプチャするための低コストのプロシジャは非常に望ましいものである。
【0008】
米国特許第5,058,114号では、トレース機能を組込んだプログラム制御装置が記載されている。ある特定の動作モードの間に活性化され外部条件に対応する情報とプログラム制御装置の動作シーケンスにかかった時間に関する情報とを連続してストアする記憶回路が提供される。
【0009】
発明の開示
簡単に、この発明によるプロセッサベースのデバイスは、ソフトウェア性能プロファイリング情報を提供するためのオンチップトレースキャッシュおよびサポート回路を含む。トレースキャッシュは選択されたプロシジャにおいて費やされた実行時間に関する情報を集める。よって性能プロファイリング情報が、コードに計測機能を付けたり、プログラム実行速度に悪影響を与えたり、または高価なオフチップサポート装置を用いることなく集められる。
【0010】
この発明によるシステムにおいて、ブレークポイントまたはトリガ制御レジスタは、選択されたプロシジャに入る際に第1のオンチップカウンタを初期化およびトリガ(開始)するよう構成される。第2のブレークポイントまたはトリガ制御レジスタは、選択されたプロシジャのプロシジャエピローグに入った際に第1のカウンタを停止するのに用いられる。選択されたプロシジャの経過した実行時間を反映するカウンタ値はそこでオンチップトレースキャッシュにストアされる。割込ハンドラ実行時間などの他のパラメータを測定するのに類似の技術を用いることができる。
【0011】
この発明の開示される実施例では、第2のカウンタも設けられる。第2のカウンタは連続して実行されるが、第2のトリガ制御レジスタにより生じる停止トリガイベントの後にゼロにリセットされる。また、停止トリガイベントによって第2のカウンタの値がオンチップトレースキャッシュ内に入れられる。この第2のカウンタ値は関心の対象であるプロシジャの発生の頻度を得るのに有効である一方、第1のカウンタはプロシジャの実行時間に関する情報をもたらす。
【0012】
プロファイルデータは、選択されるプロシジャが実行されるコンピュータシステム内にある後処理ソフトウェアによって、デバッグポートを利用するホストシステムによって、またはチップ外のトレースキャプチャ用ハードウェアを介して分析できる。一般的に、一度に1つのプロシジャだけについてプロファイルがとられる。トレースキャッシュを調べることによって、あるプロシジャにおいて費やされた最小、平均および最大時間ならびに他の統計的データを判定できる。この発明の有益な局面の1つはプロシジャプロローグおよびエピローグを修正する必要がないことである。しかしながら、なおコンパイラを利用してこの発明に使用するためのプロファイリング情報を加えるようにしてもよい。
【0013】
トレース情報を外部デバイスに通信するためにシリアルおよびパラレル通信チャネルの両方が設けられる。この発明の開示される実施例では、IEEE−1149.1−1990に従ったJTAG(ジョイントテストアクショングループ)インターフェイスまたは、プロセッサベースのデバイスに統合される類似の規格化されたインターフェイスを用いるソフトウェアデバッグポートを介してプロファイル(またはトレース)キャッシュの可制御性および可観測性が達成される。
【0014】
このように、ソフトウェア性能プロファイリング情報をもたらすための柔軟な高性能の解決策を提供するプロセッサベースのデバイスが提供される。また、開示されるオンチップトレースキャッシュにより、数多くの既存の解決策において生じている帯域幅およびクロック同期のさまざまな問題が軽減される。
【0015】
この発明は好ましい実施例の以下の詳細な説明を以下の図面と関連して考慮する際によりよく理解できるであろう。
【0016】
発明を実施するための形態
図面を参照して、図1はこの発明のある考えられる用途を示す例示的なソフトウェアデバッグ環境を示す。ターゲットシステムTはシステムメモリ106に結合される、この発明による組込プロセッサデバイス102を含んでいるのが示される。組込プロセッサデバイス102はプロセッサコア104、トレースキャッシュ200(図2)およびデバッグポート100を組込んでいる。この発明には重要ではないが、組込プロセッサデバイス102は応用に特有の機能を実行するためのさらなる回路(図示せず)を組込んでいてもよく、またはスタンドアロンプロセッサまたはデジタル信号プロセッサの形をとっていてもよい。好ましくは、デバッグポート100はIEEE−1149.1−1990に従ったJTAGインターフェイスまたは他の類似の規格化されたシリアルポートインターフェイスを用いる。
【0017】
ホストシステムHを用いてデバッグ制御ソフトウェア112を実行し、高レベルのコマンドを転送し、ターゲットシステムTにより生成されるソフトウェア性能プロファイリング情報の抽出および分析を制御する。この発明の開示される実施例のホストシステムHおよびターゲットシステムTはシリアルリンク110を介して通信する。ほとんどのコンピュータはシリアルまたはパラレルインターフェイスを備えており、これはさほど費用をかけずにシリアルコネクタ108によりデバッグポート100に接続でき、さまざまなコンピュータがホストシステムHとして機能できるようにする。代わりに、シリアルコネクタ108をより高速のJTAG−ネットワーク変換装置で置換えてもよい。さらに、ターゲットシステムTは内部でソフトウェア性能プロファイリングデータを分析するよう構成してもよい。
【0018】
次に図2を参照して、この発明による組込プロセッサデバイス102の詳細が示される。プロセッサコア104に加えて、図2ではトレースキャッシュ200を利用し制御する能力を有するデバッグポート100の強化型実施例のさまざまな要素が示される。当業者には明らかとなるように数多くの他の構成が可能であり、以下に説明するさまざまなプロセッサデバイス102の構成要素はオンチップトレースキャッシュ200を提供することに関連する利益を例示する目的で示される。
【0019】
この発明の開示される実施例のトレース制御回路218およびトレースキャッシュ200はまた、ソフトウェア性能プロファイリング情報をキャプチャするよう協働してもよい。さらに、トレース制御回路218はトレースパッドインターフェイスポート220またはトレースキャッシュ200への「トレーシング」をサポートし、ソフトウェア性能プロファイリングデータのキャプチャを選択的に活性化するためのユーザ制御をもたらす。トレース制御回路218により可能となる他の特徴には、以下に詳しく説明するように、ユーザ特定のトレースレコードおよび同期アドレス生成のプログラム可能性が含まれる。
【0020】
最低限として、この発明の説明される実施例ではソフトウェアデバッグポート100において従来のJTAGピンのみをサポートすればよい。JTAGピンは実質的に、既存のピンを用いて、プロセッサコア104が実行すべきプロファイリングおよび他のコマンドを入れるための移送機構となる。より特定的には、JTAGテストアクセスポート(TAP)コントローラ204へ与えられ、かつこれにより駆動されるテストクロック信号TCK、テストモード選択信号TMS、テストデータ入力信号TDIおよびテストデータ出力信号TDOは従来のJTAGサポート信号であり当業者には公知である。以下により詳しく説明するように、デバッグポート100の「強化型」実施例では標準JTAGインターフェイスにコマンド確認信号CMDACK、ブレークリクエスト/トレースキャプチャ信号BRTC、送信停止信号STOPTXおよびトリガ信号TRIGが加えられる。この付加的な信号により、非常に正確な外部ブレークポイントのアサーションおよびモニタリングが可能となり、内部ブレークポイントに応答して外部デバイスがトリガされ、JTAGシリアルインターフェイスのステータスのポーリングがなくなる。これらの「側波帯」信号によって追加の機能性がもたらされ、デバッグポート100のための通信速度が向上する。また、これらの信号は、開示される組込プロセッサデバッグ102の特殊なボンドアウトタイプのものに設けられる任意のパラレルポート214の動作を助ける。
【0021】
JTAG TAPコントローラ204は従来のJTAG信号を介して標準のJTAGシリアルデータおよび制御を受入れる。DEBUG命令がJTAG命令レジスタに書かれると、シリアルデバッグシフタ212がJTAGテストデータ入力信号TDIおよびテストデータ出力信号TDOに接続され、コマンドおよびデータをデバッグレジスタ210にロードし、およびこれらをデバッグレジスタ210から読むことができるようにする。この発明の開示される実施例では、デバッグレジスタ210はデータを送信するため(TX_DATAレジスタ)および受信するため(RX_DATAレジスタ)の2つのデバッグレジスタと、命令トレース設定レジスタ(ITCR)と、デバッグ制御ステータスレジスタ(DCSR)とを含む。
【0022】
制御インターフェイスステートマシン206は、シリアルデバッグシフタ212およびデバッグレジスタ210へ/からのデータのローディング/読取を調整する。コマンドデコードおよび処理ブロック208はコマンド/データをデコードし、これらをプロセッサインターフェイス論理202およびトレースデバッグインターフェイス論理216にディスパッチする。他の機能を実行することに加えて、トレースデバッグインターフェイス論理216およびトレース制御論理218はトレースキャッシュ200からTAPコントローラ204へのソフトウェア性能プロファイリングおよび他のトレース情報の通信を調整する。プロセッサインターフェイス論理202はプロセッサコア104ともトレース制御論理218とも直接通信する。以下により完全に説明するように、パラレルポート論理214は制御インターフェイスステートマシン206およびデバッグレジスタ210と通信して、オプションのボンドアウトタイプの組込プロセッサデバイス102においてパラレルデータ読取/書込動作を実行する。
【0023】
デバッグポート100を介して(従来のJTAG信号のみを用いて)ソフトウェア性能プロファイリング情報が通信される前に、ポート100がパブリックJTAG命令DEBUGをTAPコントローラ204内に含まれるJTAG命令レジスタに書込むことによりイネーブルされる。以下に示すように、開示される実施例のJTAG命令レジスタは38ビットレジスタであり、32ビットのデータフィールド(debug_data[31:0])と、デバッグポート100がもたらす機能およびさまざまの内部レジスタを示すための4ビットのコマンドフィールドと、コマンド係属中フラグと、コマンド完了フラグとを含む。いくつかのコマンドでは、debug_dataフィールドからのビットをサブフィールドとして用いて利用可能なコマンドの数を増やすことも可能である。
【0024】
【表1】
【0025】
このJTAG命令レジスタはテストモード選択信号TMSをトグルすることにより選択される。テストモード選択信号TMSはスキャンパス内のJTAGのクロック供給の経路を変更することを可能にし、異なる長さの複数の経路を用いることができるようにする。好ましくは、JTAG命令レジスタは短い経路を介してアクセスすることが可能である。このレジスタは、特定されたシステムレジスタへロードすべき、またはそれらから受けるべき値を保持するための「ソフト」レジスタを含むよう構成される。
【0026】
次に図3を参照して、この発明による組込プロセッサデバイス102の例示的なトレースキャッシュ200と他の構成要素との関係を示す簡略化されたブロック図が示される。この発明のある考えられる実施例では、トレースキャッシュ200は128エントリのファーストインファーストアウト(FIFO)循環キャッシュである。トレースキャッシュ200のサイズを大きくすることにより、必要となるシリコン領域の量が増加するかもしれないが、キャプチャできるソフトウェア性能プロファイルおよび他の命令トレース情報の量も増加する。
【0027】
以下により詳しく説明するように、この発明の開示される実施例のトレースキャッシュ200は、ソフトウェア性能プロファイリングおよび他のトレース情報などの、複数の20ビット(またはそれ以上)のトレースエントリをストアする。タスク識別子およびトレースキャプチャ停止/開始情報などの付加的な情報もまたトレースキャッシュ200内に入れることができる。トレースキャッシュ200の内容はホストシステムHなどの外部ハードウェアにシリアルまたはパラレルのいずれかのトレースピン230を介して与えられる。代わりに、内部でトレースキャッシュ200の内容を調べるようにターゲットシステムTを構成してもよい。
【0028】
図4では、標準JTAGインターフェイスを用いた際のコマンド処理過程の高レベルのフローチャートが示される。ステップ400においてデバッグモードに入る際、DEBUG命令がステップ402においてTAPコントローラ204に書かれる。次に、ステップ404で、コマンド係属中フラグがセットされ、かつデータフィールドに所望のデータがある(これは当てはまる場合であり、そうでなければ0)状態で、38ビットのシリアル値が一まとまりとしてシフトインされる。制御はステップ406に進み、ここで係属中コマンドはロード/アンロードされ、コマンド完了フラグがチェックされる。コマンドの完了は典型的に、データレジスタとプロセッサレジスタまたは記憶/IO場所との間での値の転送を伴う。コマンドが完了した後、プロセッサ104はコマンド係属中フラグをクリアし、コマンド完了フラグをセットすると同時に、当てはまる場合にはデータフィールドに値をストアする。38ビットレジスタ全体をスキャンしてコマンド完了フラグおよびコマンド係属中フラグをモニタする。係属中フラグが0にリセットされ、完了フラグが1に設定されている場合、前のコマンドは完了している。フラグのステータスは制御インターフェイスステートマシン206によりキャプチャされる。フラグのステータスのスレーブコピーが内部に保存され、次の命令をロードすべきであるかどうかを定める。TAPコントローラ204の状態の間のフラグステータスの変化の可能性があるためスレーブコピーは維持される。このことによりプロセッサ104は次の命令をロードする前に前の命令が完了しているかどうかを判定することができる。
【0029】
完了フラグがステップ408においてセットされていないと判定された場合、制御はステップ410に進み、38ビットコマンドのロード/アンロードが繰返される。コマンド終了フラグもチェックされる。制御は次にステップ408に戻る。完了フラグがステップ408において定められるようにセットされていれば、制御はステップ406に戻り次のコマンドを処理する。DEBUGモードから出るには典型的なJTAGプロセスを介する。
【0030】
再び図2を参照して、前述の任意の側波帯信号を強化されたデバッグポート100において利用して余分の機能性をもたらすようにする。任意の側波帯信号は、デバッグ制御/ステータスレジスタにおいてセットされるビットのステータスに応じてブレークリクエスト信号またはトレースキャプチャイネーブル信号として機能できるフレークリクエスト/トレースキャプチャ信号BRTCを含む。ブレークリクエスト/トレースキャプチャ信号BRTCがブレークリクエスト信号として機能するよう設定される場合、これはアサートされてプロセッサ104がデバッグモードに入るようにさせる(プロセッサ104は従来のJTAG信号を介してホールトコマンドをスキャンインすることにより停止することもできる)。トレースキャプチャイネーブル信号として機能するよう設定されている場合は、ブレークリクエスト/トレースキャプチャ信号BRTCをアサートすることでトレース情報のキャプチャがイネーブルされる。この信号がデアサートされるとトレースキャプチャは停止される。信号は、検出された後、次の命令の境界において有効となり、かつ内部プロセッサクロックと同期化される。ブレークリクエスト/トレースキャプチャ信号BRTCはどの時点でアサートしてもよい。
【0031】
トリガ信号TRIGは内部プロセッサブレークポイントがアサートされるといつでもパルスを生じるよう構成される。トリガ信号TRIGはロジックアナライザなどの外部キャプチャデバイスをトリガするのに用いてもよく、トレースレコードキャプチャクロック信号TRACECLKと同期する。ブレークポイントが生成されると、そのイベントはトレースキャプチャクロック信号TRACECLKと同期し、その後にトリガ信号TRIGはトレースキャプチャの持続時間にわたってアクティブに保たれる。
【0032】
送信停止信号STOPTXは、プロセッサ104がDEBUGモードに入り、かつレジスタ問合せ/変更、デバッグポート100を介してのメモリまたはI/O読取および書込の準備ができている際にアサートされる。この発明の開示される実施例では、送信停止信号STOPTXはデバッグ制御ステータスレジスタ(DCSR)内のビットの状態を反映する。送信停止信号STOPTXはトレースキャプチャクロック信号TRACECLKと同期する。
【0033】
コマンド確認信号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と同期する。テストクロック信号TCKは常にクロックされる必要はないが、理想的にはコマンド確認信号CMDACKの応答を待っている間は連続してクロックされる。
【0034】
デバッグポート100を介するオペレーティングシステム/アプリケーション通信
デバッグレジスタブロック210にはまた、命令トレース設定レジスタ(ITCR)が含まれる。この32ビットレジスタはソフトウェア性能プロファイルおよび命令トレースデバッグ機能のイネーブル/ディセーブルおよび設定を行なう。、トレース同期強制カウント、トレース初期化、命令トレーシングモーこのような機能は数多く考えられ、さまざまなレベルのトレーシングド、クロック分周比情報および下の表に示されるさらなる機能が含まれる。ITCRはデバッグレジスタブロック210の他のレジスタの場合と同様にJTAG命令レジスタ書込/読取コマンドを介してアクセスされるか、または予約された命令を介してアクセスされる。
【0035】
【表2】
【0036】
別のデバッグレジスタであるデバッグ制御/ステータスレジスタ(DCSR)はプロセッサ104がいつデバッグモードに入ったかを示す表示をもたらし、プロセッサ104が強化型JTAGインターフェイスを介してDEBUGモードに入るように強いることができる。下の表に示されるように、DCSRはまた、プロセッサ104へのレディ信号の強制、デバッグポートを介して開始されるアクセスに対するメモリアクセス空間の制御、DEBUGモードに入った際のキャッシュフラッシュのディセーブル、TXおよびRXビット、パラレルポート214のイネーブル、強制ブレーク、強制グローバルリセットおよび他の機能など、さまざまな制御特徴をイネーブルする。ITCRまたはDCSRのどちらかにおけるさまざまなビットの順序または存在はこの発明の動作にとり重要ではない。
【0037】
【表3】
【0038】
図1のようなクロスデバッグ環境にある場合、ターゲットシステムTにおいて実行中の親タスクがこれを制御するホストプラットホームHに情報を送ることが望ましい。このデータはたとえば、printf()コールからの文字ストリームまたはタスク制御ブロック(TCB)からのレジスタ情報を含んでいてもよい。データを転送するためのある考えられる方法は、オペレーティングシステムがデータを既知の領域に入れて、次にトラップ命令を介してDEBUGモードに入るようにさせることである。
【0039】
ホストシステムHは次に、デバッグポート100のコマンドを介して、DEBUGモードに入った理由を判定し、予約された領域からデータを引出すことにより応答することができる。しかしながら、プロセッサ104がDEBUGモードに入っている間、通常のプロセッサ実行は停止されている。上記のとおり、これは数多くのリアルタイムのシステムにおいては望ましいことではない。
【0040】
この状況はこの発明によれば、デバッグポート100においてデータを送信するため(TX_DATAレジスタ)および受信するため(RX_DATAレジスタ)の2つのデバッグレジスタを設けることによって対処される。これらのレジスタはソフトアドレスおよびJTAG命令レジスタコマンドを用いてアクセスできる。上述のように、ホストシステムHがデバッグ命令をJTAG命令レジスタに書いた後、シリアルデバッグシフタ212がテストデータ入力信号TDIラインおよびテストデータ出力信号TDOラインに結合される。
【0041】
プロセッサ104がコードを実行し、それによりこれがデータを送信するようにさせると、これはまずITCRにおけるRXビットをテストする。TXビットが0に設定されている場合、プロセッサ104はプロセッサ命令(メモリまたはI/O書込のいずれか)を実行してデータをTX_DATAレジスタに転送する。デバッグポート100はDCSRおよびITCRにおいてTXビットをセットし、ホストシステムHに対してこれがデータを送信する準備ができたことを示す。また、STOPTXピンはハイに設定される。ホストシステムHがTX_DATAレジスタからの送信データの読取を終えると、TXビットは0に設定される。そこで、ITCRにおけるTXINTENビットがセットされ、プロセッサ104に割込みの信号を発生する。この割込みはITCRにおけるTXビットが0に遷移したときのみ生成される。TXINTENビットがセットされていない場合、プロセッサ104はITCRをポーリングして、さらにデータを送信するためにTXビットのステータスを判定する。
【0042】
ホストシステムHがデータを送ることを望む場合、ホストシステムHはまずITCRにおけるRXビットをテストする。RXビットが0に設定されている場合、ホストシステムHはデータをRX_DATAレジスタに書き、RXビットがDCSRおよびITCRの双方において1に設定される。そこで、RXINTビットがIGCRにおいてセットされ、プロセッサ104に割込みの信号を発生する。この割込みはITCRにおけるRXが1に遷移したときのみ生成される。RXINTENビットがセットされていない場合、プロセッサ104はITCRをポーリングしてRXビットのステータスを確かめる。RXビットが1に設定されている場合、プロセッサ命令が実行されRX_DATAレジスタからデータが読まれる。プロセッサ104によりRX_DATAレジスタからデータが読まれた後に、RXビットは0に設定される。ホストシステムHは連続してITCRを読み、さらにデータを送るためにRXビットのステータスを判定する。
【0043】
この技術ではプロセッサ104の実行を停止することなくオペレーティングシステムまたはアプリケーションがホストシステムHと通信することが可能となる。通信はデバッグポート100を介して好都合に行なわれ、オンチップアプリケーションリソースへの影響は最小である。場合によってはシステム割込みをディセーブルする必要がある。このため、プロセッサ100がRXビットおよびTXビットを調べる必要がある。この場合には、通信リンクはポーリングモードで駆動される。
【0044】
デバッグポート100へのパラレルインターフェイス
いくつかの組込システムでは、I/Oおよびデータ処理動作を維持しながら命令トレースを調べることが必要となる。マルチタスクのオペレーティングシステムを用いない場合は、デバッグポート100を介してトレースキャッシュ200を調べるにはプロセッサ104を停止する必要があるため、トレースデータをもたらすのにボンドアウトタイプの組込プロセッサデバイス102が好ましい。
【0045】
この発明の開示される実施例では、パラレルポート214がオプションのボンドアウトタイプの組込プロセッサデバイス102に設けられ、デバッグポート100にパラレルコマンドおよびデータアクセスを提供する。このインターフェイスは16ビットのデータ経路をもたらし、これはトレースパッドインターフェイスポート220で多重化される。より特定的には、パラレルポート214は、16ビット幅の二方向性データバス(PDATA[15:0])、3ビットアドレスバス(PADR[2:0])、パラレルデバッグポート読取/書込選択信号(PRW)、トレース有効信号TVおよび命令トレースレコード出力クロックTRACECLOCK(TC)をもたらす。トレースパッドインターフェイスポート220と共有されないが、パラレルバスリクエスト/グラント信号対PBREQ/PBGNT(図示せず)も提供される。パラレルポート214はDCSRにおけるあるビットをセットすることによりイネーブルされる。デバッグポート100を介するシリアル通信はパラレルポート214がイネーブルされる際にディセーブルされない。
【0046】
【表4】
【0047】
パラレルポート214は主に、ターゲットシステムTのメモリに対する高速のダウンロード/アップロードに用いることが意図される。しかしながら、パラレルポート214はプロセッサ104が停止したときはいつでもターゲットシステムTとのすべてのデバッグ通信のために用いることができる。シリアルデバッグ信号(標準または強化型)はプロセッサ104が命令を実行している際にターゲットシステムTへのデバッグアクセスのために用いられる。
【0048】
JTAG規格と類似した態様で、パラレルポート214へのすべての入力はテストクロック信号TCKの立上がりエッジにおいてサンプリングされ、すべての出力はテストクロック信号TCKの立下がりエッジにおいて変更される。開示される実施例では、パラレルポート214はトレースパッドインターフェイス220とピンを共用しており、プロセッサ104が停止されトレースパッドインターフェイス220が共有バスから切断されている間だけパラレルコマンドの開始が必要となる。
【0049】
パラレルバスリクエスト信号PBREQおよびパラレルバスグラント信号PBGNTは、トレースキャッシュ200とパラレルポート214との間で共有バス信号の多重化を促進するために提供される。パラレルポート214へのホストインターフェイスはパラレルバスリクエスト信号PBREQがアサートされていることを判定すると、パラレルポート214の信号を駆動し始めパラレルバスグラント信号PBGNTをアサートする。
【0050】
パラレルポート214がイネーブルされた状態でDEBUGモードに入るかまたはDEBUGモードから出る場合、プロセッサ状態保存および復元サイクルのためにパラレルポート214が用いられる。パラレルバスリクエスト信号PBREQは、DEBUGモードに入る前の状態保存シーケンスが始まる直前にアサートされる。最後の状態復元サイクルにおいて、パラレルバスリクエスト信号PBREQは書込データをラッチした後にデアサートされる。パラレルポート214のホストインターフェイスはパラレルバスリクエスト信号PBREQのデアサーションに応答してそのパラレルポートドライバをトライステート状態とし、パラレルバスグラント信号PBGNTをデアサートする。次に、パラレルポート214はデバッグトレースポートピンドライバをイネーブルし、最後の状態復元サイクルを完了し、コマンド確認信号CMDACKをアサートし、インターフェイスの制御をトレース制御論理218に戻す。
【0051】
パラレルポート214を介して通信する際に、アドレスピンPADR[2:0]を用いてJTAG命令レジスタのフィールドを選択し、これは下の表に示されるように16ビットデータバスPDATA[15:0]にマッピングされる。
【0052】
【表5】
【0053】
debug_data[31:0]レジスタの一方の半分のみが用いられている場合(たとえば8ビットI/Oサイクルデータ書込など)は、debug_data[31:0]レジスタの両半分を更新する必要はない。コマンド係属中フラグは4ビットコマンドレジスタへの書込動作を行なう際に自動的にセットされ、コマンド完了フラグがアサートされるとクリアされる。ホストシステムHはコマンド確認信号CMDACKをモニタして完了フラグがいつアサートされたかを判定することができる。パラレルポート214を用いることにより、プロセッサコア104を減速することなく実行履歴を完全に見ることができる。必要であればトレースキャッシュ200をパラレルポート214に対するバッファとして用いるように構成して帯域幅整合の問題などあれば軽減するようにしてもよい。
【0054】
オペレーティングシステムおよびデバッガ統合
この発明の開示される実施例では、トレースキャッシュ200を含むすべてのデバッグサポート特徴の動作はデバッグポート100またはプロセッサ命令を介して制御することができる。これらのプロセッサ命令はモニタプログラム、ターゲットで動作するデバッガまたは従来のポッドウェアからのものであってもよい。デバッグポート100は、プロセッサ命令によってではなくシリアルデータポートコマンドによって開始されるデータ移動を行なう。
【0055】
従来のポッド空間からのプロセッサコア104の動作はモニタプログラムからDEBUGモードにおいて動作するのによく類似している。すべてのデバッグ動作はプロセッサ命令を介して制御できる。これらの命令がポッド空間から来たものであろうと通常のメモリから来たものであろうと関係がない。このことにより、オペレーティングシステムをさらなるデバッグ能力を含むよう拡張することが可能となる。
【0056】
むろん、ptrace()などの特権システムコールを介して、オペレーティングシステムは長い間デバッガをサポートしてきた。しかしながら、今、オンチップトレースキャッシュ200を組込むことによってオペレーティングシステムがソフトウェア性能プロファイリングおよび命令トレース能力をもたらすことが可能である。この発明によるデバッグ環境では、「外部」ロジックアナライザまたはインサーキットエミュレータを組込むことなくオペレーティングシステムを強化して限られたトレースをサポートすることができる。
【0057】
トレースキャッシュ200の内容の内部ローディングおよび読出をサポートするのに用いられる命令の例にはロード命令トレースキャッシュレコードコマンドLITCRおよびストア命令トレースキャッシュレコードコマンドSITCRが含まれる。コマンドLITCRは、プロセッサコア104のEAXレジスタの内容とともに、トレースキャッシュポインタITREC.PTRによる指定にしたがってトレースキャッシュ200内に指標付きレコードをロードする。トレースキャッシュポインタITREC.PTRはコマンドLITCRの一般的な動作が以下のとおりとなるように予めインクリメントされる。
【0058】
【数1】
【0059】
命令トレースレコード(以下のトレースレコードフォーマットの説明を参照のこと)がEAXレコードより小さい場合には、EAXレジスタの一部のみが利用される。
【0060】
同様に、ストア命令トレースキャッシュレコードコマンドSITCRはトレースキャッシュ200から指標付きレコードを取出し(EAXレジスタ内に)ストアするのに用いられる。プロセッサコア104のECXレジスタの内容は、トレースキャッシュ200内への指標を作るためトレースキャッシュポインタITREC.PTRに加えられるオフセットとして用いられる。ECXレジスタは後でインクリメントされるが、トレースキャッシュポインタITREC.PTRは影響を受けず、以下のとおりとなる。
【0061】
【数2】
【0062】
LITCRおよびSITCRコマンドのフォーマットの数多くの変形は当業者には明らかになるであろう。
【0063】
オペレーティングシステムを拡張してオンチップトレースをサポートすることには通信産業においてある利点を有する。タスクがトレースされている間、システムI/Oおよび通信活動を維持することが可能になる。従来、インサーキットエミュレータを使用すると、(ptrace()とは異なり)プロセッサの状態およびトレースを調べられるようにするにはまずプロセッサを停止する必要があった。このため、I/Oデータ処理の連続したサポートが中断されることになる。
【0064】
さらに、トレースキャッシュ200は、現場の装置とともに用いると非常に有効である。予期せずシステムクラッシュが起こった場合、トレースキャッシュ200を調べてクラッシュイベントに達するまでの実行履歴を観察できる。電力消費が問題となるポータブルシステムまたは他の環境において用いる場合には、トレースキャッシュ200を必要に応じて電力管理回路を介してディセーブルしてもよい。
【0065】
例示的なトレースレコードフォーマット
この発明の開示される実施例では、命令トレースレコードは20ビット幅であり、TCODE(トレースコード)およびTDATA(トレースデータ)の2つのフィールドと有効ビットVとを含む。TCODEフィールドはTDATAフィールド内のデータのタイプを識別するコードである。TDATAフィールドはデバッグの目的に用いられるソフトウェア性能プロファイルおよび他のトレース情報を含む。
【0066】
【表6】
【0067】
この発明のある考えられる実施例では、組込プロセッサデバイス102は下の表に提示される性能プロファイリングデータおよび他の10個のトレースコードに対応するデータを報告する。
【0068】
【表7】
【0069】
トレースキャッシュ200の記憶容量は限られているため、キャプチャされたトレースデータのある程度の量の「圧縮」が望ましい。トレースデータをキャプチャする上で、以下の説明ではトレースされるプログラムのイメージがホストシステムHにとり入手可能であることを前提とする。プログラムイメージ(オブジェクトモジュール)からアドレスを得られる場合、そのアドレスはトレースデータ内にはもたらされない。好ましくは、命令フローを中断する命令のみが報告され、さらに、ターゲットアドレスが何らかの態様でデータに依存するもののみが報告される。たとえば、このような「中断する」イベントには、コール命令、またはターゲットアドレスがデータレジスタまたはスタックなどの他の記憶場所からもたらされる無条件分岐命令が含まれる。
【0070】
上の表に示されるように、キャプチャできる他のトレース情報には、トラップまたは割込ハンドラのターゲットアドレス、リターン命令のターゲットアドレス、データレジスタに依存する(そうでなければ、必要となるのは分岐がとられたかとられていないかを示す1ビットのトレースだけである)ターゲットアドレスを有する条件付き分岐命令および、より多くの場合はプロシジャリターンからのアドレスが含まれる。タスク識別子およびトレースキャプチャ停止/開始情報などの他の情報もトレースキャッシュ200内に入れることができる。トレースレコードの厳密な内容および性質はこの発明において重要なことではない。
【0071】
次に図6Aを参照して、例示的な性能プロファイルカウンタシーケンスが示される。この発明によるシステムでは、トリガ制御レジスタ219は、特定されたプロシジャに対して実行の経過時間を測定するカウンタを開始および停止するよう構成される。トリガ制御レジスタ219の厳密な実現はこの発明にとって重要ではないが、(いくつかの先行技術のマイクロプロセッサコアに存在するデバッグレジスタDR0−DR7のいずれかなどの)従来のブレークポイントレジスタを使用してトリガ機能を実行することが好ましい。さらに、この発明の開示される実施例では、プロファイリング情報を集めている間は通常の命令実行が割込まれないことに注目すべきである。
【0072】
さらに具体的に図6Aを参照して、第1のオンチップトリガ制御レジスタ219aは、特定されたプロシジャに入る際に第1のカウンタをトリガ(開始)するよう構成される。第2のトリガ制御レジスタ219bは、特定されたプロシジャのプロローグに入る際にカウンタを停止するよう用いられる。第1のカウンタが開始トリガによって開始されると、これはゼロに初期化される。第2のトリガ制御レジスタ219bにより特定されるのにしたがい停止トリガが生成されると、第1のカウンタのカウント値がTCODE=1010トレースエントリ(図6B)を用いてトレースキャッシュ200内に入れられる。同様の技術を用いて割込ハンドラ実行時間などの他のパラメータを測定してもよい。上述のように、トリガ制御レジスタ219はまた、トリガ信号TRIGを生じさせ、実行トレースが開始および停止すべきところのプログラムアドレスを選択するよう用いてもよい。
【0073】
この発明の開示される実施例では、第2のカウンタも用いられる。第2のカウンタは連続して実行されるが、停止トリガイベントの後にゼロにリセットされる。また、停止トリガイベントによって第2のカウンタの値がトレースキャッシュ200内に入れられる。この第2のカウンタ値は関心の対象であるプロシジャの発生の頻度を得るのに有効である一方、第1のカウンタはプロシジャの実行時間に関する情報をもたらす。
【0074】
図6Bを参照して、この発明によるソフトウェア性能プロファイリング情報を報告するためのトレースキャッシュ200エントリのセットの一般的なフォーマットが示される。示されるように、第1のカウンタのカウント値はTCODE=1010トレースエントリによって16ビット値を用いてトレースキャッシュ200内に入れられる。このTCODE=1010トレースエントリの後に、第2のカウンタの値を反映する32ビットカウント値を含むTCODE=0111エントリ対が続いていてもよい。
【0075】
この発明の一実施例では、第1および第2のカウンタのカウンタ周波数(すなわち分解能)は2つの値のうちのいずれかになるようにプログラムされる。これにより、非常に低い周波数または高い周波数のイベントのプロファイルをとる際により高い精度が可能となる。たとえば、下の表には、カウンタの2つの累算周波数が示される。
【0076】
【表8】
【0077】
特権レベルリング0またはリング1に入る際に、時にすべての計数(両方のカウンタ)を停止することが望ましいこともある。これにより、測定されたプロファイリング値からシステムコールおよび割込みをなくすことができる。また、計数をイネーブル/ディセーブルし、また双方のカウント値を同時にリセットする手段を含む、2つのさらなるサポート特徴を組込んでもよい。この発明の開示される実施例のこの局面は、モニタされる(単一のタスク内の)プロシジャの間に生じるタスクコンテキストスイッチングを助ける。また、周期的割込ハンドラを介してプロシジャを1つずつ調べることも可能である。
【0078】
後処理ソフトウェアは任意のオフチップトレースキャプチャハードウェアとともに、プロファイルデータを分析するのに利用できる。このため、トレースキャッシュ200を利用して、選択されるプロシジャにおいて費やされる実行時間に関する情報が集められる。一般的に、一度に1つのプロシジャだけのプロファイルがとられる。トレースキャッシュ200を調べることにより、あるプロシジャにおいて費やされる最小平均および最大時間を(集められたサンプルの制限内で)判定できる。また、コード範囲プロファイリング能力を加えてテストランの間に実行されるおよび実行されない特定のアドレスを示すようにしてもよい。トレースキャッシュ200により、ストアできる限りの数のサンプルを用いて統計的分析を行なうことが可能となる。
【0079】
図7Aには、条件分岐イベントを報告するための例示的なフォーマットが示される。最大15の分岐イベントの結果を1つのトレースエントリとしてまとめることができる。16ビットのTDATAフィールド(または「BFIELD」)は1ビットの分岐結果トレースエントリを含み、TCODE=0001エントリと記される。TDATAフィールドは、1に設定される最も左のビットを除いて初めにクリアされる。新しい条件分岐に出会うたびに、新しい1ビットエントリが左に加えられ、それ以外のエントリは1ビットずつ右へシフトされる。
【0080】
128エントリのトレースキャッシュ200を用いることで、320バイトの情報をストアできる。6つの命令につき1つの分岐という分岐頻度を仮定すると、開示されるトレースキャッシュ200は、1536個の命令の有効なトレースレコードをもたらす。この推定値はコール、ジャンプおよびリターン命令の発生を考慮していない。
【0081】
トレース制御論理218はプロセッサインターフェイス論理202を介して命令実行をモニタする。分岐ターゲットアドレスを報告しなければならない場合、15のエントリが蓄積されていなくても、カレント条件分岐TDATAフィールド内に含まれる情報がトレース制御論理218によって完全なものとしてマークされる。図7Bに示されるように、(32ビットアドレッシングを用いるプロセッサベースのデバイス102における)ターゲットアドレスはそこでトレースエントリ対に記録され、その第1のエントリ(TCODE=0010)はターゲットアドレスの上位16ビットをもたらし、第2のエントリ(TCODE=0111)はターゲットアドレスの下位16ビットをもたらす。分岐ターゲットアドレスが条件ジャンプ命令のために与えられる場合、報告される分岐に対する1ビットの分岐結果トレースエントリは現われない。
【0082】
トレースキャプチャの開始および停止
次に、図7Cを参照して、たとえばタスクコンテキストスイッチが生じた際など、プログラム実行のあるセクションの間にトレース収集を開始および停止することが望ましいことがある。トレースキャプチャが停止されると、トレースエントリはトレースキャッシュ200に入れられず、トレースポート214のボンドアウトピンにも現われない。トレースキャプチャをイネーブルおよびディセーブルするためにさまざまな方法が考えられる。たとえば、x86コマンドを提供し、または既存のx86コマンドを利用してI/Oポート位置におけるビットをトグルしてもよい。代わりに、オンチップトリガ制御レジスタ219をトレースキャプチャが開始/停止すべきところのアドレスを示すように構成してもよい。トレーシングがホールトされると、最後のトレースアドレスを記録しているトレースエントリ(TCODE=1000、TCODE=0111)がトレースストリームに入れられる。トレーシングが再開されると、現在実行されている命令のアドレスを含むトレース同期エントリ(TCODE=0110、TCODE=0111)が生成される。
【0083】
トレーシングが停止されている間に生じるセグメント変化を考慮することは重要であるかもしれない。この状態は、図7Cに示されるように、TCODE=1000エントリの直後にカレントセグメントベースアドレスエントリ(TCODE=0100、TCODE=0111)を続けるオプションを選択することによって一部は解決できる。あるトレースの終りにデバッグモードに入る前にカレントセグメントベースアドレスエントリをイネーブルするための設定オプションもまた望ましい。これと比較して、割込みが生じた際など、ベースが変化していない場合にセグメントベース情報をもたらすことは望ましくないかもしれない。
【0084】
図7Dを参照して、割込みまたはトラップなどの非同期または同期イベントの発生の後に、TCODE=0101トレースエントリが生成され、ターゲット割込ハンドラのアドレスをもたらす。しかしながら、割込エントリの直前にトレース同期(TCODE=0110)エントリを生成することによって割込まれた命令のアドレスと、前セグメントベースアドレス(TCODE=0011)とを記録することも望ましい。トレース同期エントリは割込ハンドラが始まる前にリタイアした最後の命令のアドレスを含む。
【0085】
セグメントの変化
図7Eは、セグメントパラメータの変化を報告するのに用いられるトレースエントリを示している。トレースストリームを処理する際にトレースアドレス値をセグメントベースアドレスと組合せて命令の線形アドレスを定める。ベースアドレスおよびデフォルトデータオペランドサイズ(32または16ビットモード)は変更することができる。この結果、TCODE=0011および0111エントリは正確に命令フローを再構築するのに必要な情報をもたらすよう構成される。TCODE=0011エントリに対応するTDATAフィールドは前セグメントベースアドレスの上位16ビットを含むが、関連付けられたTCODE=0111エントリは下位15ビットまたは4ビットを含む(これは命令がリアルモードで実行されるかプロテクトモードで実行されるかに依存する)。また、TCODE=0111エントリはカレントセグメントサイズ(32ビットまたは16ビット)を示すビットと、動作モード(リアルまたはプロテクト)を示すビットと、ページングが用いられているかどうかを示すビットとを含む。セグメント情報は一般的に、カレント(ターゲット)セグメントではなく前セグメントに関連している。カレントセグメント情報はプロセッサコア104を停止してその状態を調べることによって得られる。
【0086】
ユーザ特定のトレースエントリ
アプリケーションプログラムまたはオペレーティングシステムが付加的な情報をトレースストリームに加えることを望む場合がある。このためには、好ましくは、所望の実行位置において16ビットデータ値をトレースストリームに入れることを可能にするx86命令が提供される。この命令はI/O空間への移動として実現でき、オペランドはメモリまたはレジスタにより与えられる。プロセッサコア104がこの命令を実行すると、ユーザ特定のトレースエントリがトレース制御論理218によりキャプチャされ、トレースキャッシュ200に入れられる。図7Fに示されるように、この発明の開示される実施例ではTCODE=1001エントリがこの目的に用いられる。このエントリはたとえば、マルチタスクのオペレーティングシステムにおいてタスクスイッチが生じた際に前のまたは現在のタスク識別子を提供してもよい。
【0087】
トレースデータの同期
プロセッサベースのデバイス102において典型的なソフトウェアを実行する際に、アドレス値を含むトレースエントリは少ない。ほとんどのエントリはTCODE=0001フォーマットのものであり、1つのビットが条件動作の結果を示している。しかしながら、トレースストリームを調べる場合には、データは既知のプログラムアドレスに関連してでなければ検討することができない。たとえば、トレースキャッシュ200における最も古いエントリから始まってアドレスエントリまでのすべてのエントリは利用価値が少ない。アルゴリズム同期は典型的に、ターゲットアドレスをもたらすトレースエントリから始まる。
【0088】
トレースキャッシュ200が、アドレスをもたらすエントリを1つも含んでいない場合、トレース分析はできない。この状況は稀ではあるが起こり得る。このため、開示される実施例では同期レジスタTSYNCを提供して同期化アドレス情報の注入を制御する。同期レジスタTSYNCが0に設定されると、トレース同期エントリは生成されない。
【0089】
【表9】
【0090】
図7Gでは、例示的なトレース同期エントリが示される。動作中、カウンタレジスタは、ターゲットアドレスを含むトレースエントリが生成されるたびに同期レジスタTSYNCに含まれる値にセットされる。他のすべてのトレースエントリに対してカウンタは1だけデクリメントされる。カウンタが0に達すると、最も最近リタイアした命令(または代わりに係属中の命令)のアドレスを含むトレースエントリ(TCODE=0110)が挿入される。さらに、同期化エントリがトレースキャッシュ200に記録されると、これはトレースピン220にも現われ、全機能ICE装置に対して同期化トレースデータが十分に利用可能であることを確実にする。
【0091】
また、トレースエントリ情報を拡張して、コード範囲または実行性能に関するデータを含むようにしてもよい。この情報はたとえばコードテストおよび性能チューニングなどに有効である。こうした強化がなくても、プロセッサコア104がトレースキャッシュ200にアクセスするのを可能にすることは望ましい。マイクロコントローラデバイスの場合、この特徴はトレースキャッシュ200をI/Oまたはメモリ空間内にマッピングすることにより達成できる。より一般的なアプローチでは、トレースキャッシュ200のデータのシステムメモリへの移動をサポートする命令を含めるようにする。
【0092】
このように、ソフトウェア性能プロファイリング情報をもたらすための柔軟な高性能の解決策を提供するプロセッサベースのデバイスについて説明した。プロセッサベースのデバイスは、プロファイリング情報をキャプチャし、かつ提供する能力を有するトレースキャッシュを組込んでいる。プロファイリング情報を外部デバイスに通信するためにシリアルおよびパラレル通信チャネルの双方が設けられる。開示されるオンチップトレースキャッシュにより、数多くの既存の解決策において生じる帯域幅およびクロック同期のさまざまな問題が軽減され、また、さほど高価でない外部キャプチャハードウェアを用いる際にはこれを利用することが可能となる。
【0093】
この発明の上記の開示および説明は例示的かつ説明的なものであり、この発明の精神から逸脱することなく大きさ、形状、材料、構成要素、回路素子、ワイヤ接続および接触のさまざまな変更ならびに例示される回路の詳細、構成および動作の方法におけるさまざまな変更を行なうことができる。
【図面の簡単な説明】
【0094】
【図1】図1は、この発明によるソフトウェアプロファイリングおよびデバッグ解決策を利用するソフトウェアデバッグ環境のブロック図である。
【図2】図2は、この発明によるオンチップトレースキャッシュを組込んだ例示的な組込プロセッサ製品の詳細を示すブロック図である。
【図3】図3は、この発明による組込プロセッサ製品の例示的なトレースキャッシュと他の構成要素との関係を示す簡略化されたブロック図である。
【図4】図4は、この発明の一実施例によるソフトウェアデバッグコマンド処理過程を示すフローチャートである。
【図5】図5は、この発明の第2の実施例による強化されたコマンド処理過程を示すフローチャートである。
【図6A】図6Aは、この発明による性能プロファイルカウンタシーケンスを示す。
【図6B】図6Bは、この発明によるソフトウェア性能プロファイリング情報を報告するためのトレースキャッシュエントリのセットの一般的なフォーマットを示す。
【図7A】図7Aは、命令実行情報を報告するためのさまざまなオプションのトレースキャッシュエントリの一般的なフォーマットを示す。
【図7B】図7Bは命令実行情報を報告するためのさまざまなオプションのトレースキャッシュエントリの一般的なフォーマットを示す。
【図7C】命令実行情報を報告するためのさまざまなオプションのトレースキャッシュエントリの一般的なフォーマットを示す。
【図7D】命令実行情報を報告するためのさまざまなオプションのトレースキャッシュエントリの一般的なフォーマットを示す。
【図7E】命令実行情報を報告するためのさまざまなオプションのトレースキャッシュエントリの一般的なフォーマットを示す。
【図7F】命令実行情報を報告するためのさまざまなオプションのトレースキャッシュエントリの一般的なフォーマットを示す。
【図7G】命令実行情報を報告するためのさまざまなオプションのトレースキャッシュエントリの一般的なフォーマットを示す。
Claims (14)
- 一連のソフトウェア命令を実行するように適合される電子プロセッサベースのデバイスであって、前記プロセッサベースのデバイスにはピンが設けられ外部導体への接続ができ、前記電子プロセッサベースのデバイスは、
プロセッサコアと、
前記プロセッサコアに結合され前記プロセッサコアにより実行されるソフトウェア命令に関連するソフトウェア性能プロファイリング情報をストアするためのトレースメモリとを含み、前記トレースメモリは一連の記憶素子を含み、各記憶素子はソフトウェア性能プロファイリング情報をストアするよう適合され、前記トレースメモリはファーストインファーストアウト(FIFO)循環バッファであり、前記電子プロセッサベースのデバイスはさらに
前記トレースメモリとピンの選択されたものとの間に接続され前記トレースメモリから外部デバイスへソフトウェア性能プロファイリング情報を送信するための通信チャネルと、
前記ソフトウェア性能プロファイリング情報を集めて前記ソフトウェア性能プロファイリング情報を前記トレースメモリにもたらすトレース制御回路を含み、前記トレース制御回路は
前記トレースメモリに結合される第1のソフトウェアプロファイルカウンタと、
前記第1のソフトウェアプロファイルカウンタに結合される第1のソフトウェアプロファイルトリガ制御レジスタとを含み、前記第1のソフトウェアプロファイルトリガ制御レジスタは、予め定められたソフトウェア命令の実行の際に前記第1のソフトウェアプロファイルカウンタに経過時間のカウントを開始させ、前記トレース制御回路はさらに
前記第1のソフトウェアプロファイルカウンタに結合される第2のソフトウェアプロファイルトリガ制御レジスタを含み、前記第2のソフトウェアプロファイルトリガ制御レジスタは、さらなる予め定められたソフトウェア命令の実行の際に前記第1のソフトウェアプロファイルカウンタに経過時間のカウントを停止させ、
前記第1のソフトウェアプロファイルカウンタによる経過時間の計測の停止によりそのカウント値が前記トレースメモリ内にストアされ、
前記トレース制御回路は
前記トレースメモリに結合され、経過時間をカウントする第2のソフトウェアプロファイルカウンタをさらに含み、
前記第2のソフトウェアプロファイルトリガ制御レジスタは、前記さらなる予め定められたソフトウェア命令の実行の際に前記第2のソフトウェアプロファイルカウンタを初期化し、前記第2のソフトウェアプロファイルカウンタの初期化により、初期化の直前のそのカウント値が前記トレースメモリ内にストアされる、プロセッサベースのデバイス。 - 前記予め定められたソフトウェア命令は特定されたソフトウェアプロシジャへ入ったことを示し、前記さらなる予め定められたソフトウェア命令は特定されたソフトウェアプロシジャから出たことを示す、請求項1に記載のプロセッサベースのデバイス。
- 前記予め定められたソフトウェア命令は特定された割込ハンドラへ入ったことを示し、前記さらなる予め定められたソフトウェア命令は前記特定された割込ハンドラから出たことを示す、請求項1に記載のプロセッサベースのデバイス。
- 前記通信チャネルは前記トレースメモリとピンの選択されたものとの間にパラレルインターフェイスを含む、請求項1に記載のプロセッサベースのデバイス。
- 前記通信チャネルは前記トレースメモリとピンの選択されたものとの間にシリアルインターフェイスを含む、請求項1に記載のプロセッサベースのデバイス。
- 前記シリアルインターフェイスはシリアルインターフェイス規格に準拠する、請求項5に記載のプロセッサベースのデバイス。
- 前記シリアルインターフェイスはIEEE−1149.1−1990JTAGインターフェイス規格に準拠する、請求項6に記載のプロセッサベースのデバイス。
- 一連のソフトウェア命令を実行するプロセッサコアを有するプロセッサベースのデバイス内に、ソフトウェア性能プロファイリング情報をもたらす方法であって、
前記プロセッサコアにより実行されるソフトウェア命令に関連するソフトウェア性能プロファイリング情報を生成するステップを含み、前記生成するステップは
予め定められたソフトウェア命令の実行の際に第1のソフトウェアプロファイルカウンタに経過時間のカウントを開始させるステップと、
さらなる予め定められたソフトウェア命令の実行の際に前記第1のソフトウェアプロファイルカウンタに経過時間のカウントを停止させるステップと、
前記さらなる予め定められたソフトウェア命令の実行の際に経過時間をカウントする第2のソフトウェアプロファイルカウンタを初期化するステップとを含み、前記ソフトウェア性能プロファイリング情報は経過時間のカウントが停止された後の前記第1のソフトウェアプロファイルカウンタのカウント値および前記第2のソフトウェアプロファイルカウンタが初期化された直前の前記第2のソフトウェアプロファイルカウンタのカウント値を含んでおり、前記方法はさらに
前記プロセッサベースのデバイス内に設けられたファーストインファーストアウト(FIFO)循環バッファにおいて前記ソフトウェア性能プロファイリング情報をストアするよう適合される一連の記憶素子内に前記ソフトウェア性能プロファイリング情報をストアするステップを含む、方法。 - 前記予め定められたソフトウェア命令は特定されたソフトウェアプロシジャへ入ったことを示し、前記さらなる予め定められたソフトウェア命令は特定されたソフトウェアプロシジャから出たことを示す、請求項8に記載の方法。
- 前記予め定められたソフトウェア命令は特定された割込ハンドラへ入ったことを示し、前記さらなる予め定められたソフトウェア命令は前記特定された割込ハンドラから出たことを示す、請求項8に記載の方法。
- 前記ソフトウェア性能プロファイリング情報を前記FIFO循環バッファからデバッグシステムへ通信チャネルを介して通信するステップとをさらに含む、請求項8に記載の方法。
- 前記通信ステップにおいて用いられる前記通信チャネルはシリアルインターフェイスである、請求項11に記載の方法。
- 前記通信ステップにおいて用いられる前記通信チャネルはパラレルインターフェイスである、請求項11に記載の方法。
- ソフトウェア性能プロファイリング情報を生成し分析するためのソフトウェア開発システムであって
一連のソフトウェア命令を実行するよう適合される電子プロセッサベースのデバイスを含み、前記プロセッサベースのデバイスは
外部導体へ接続するためのピンと、
プロセッサコアと、
前記プロセッサコアに結合され前記プロセッサコアにより実行されるソフトウェア命令に関連するソフトウェア性能プロファイリング情報をストアするためのトレースメモリとを含み、前記トレースメモリは一連の記憶素子を含み、前記記憶素子はソフトウェア性能プロファイリング情報をストアするよう適合されており、前記トレースメモリはファーストインファーストアウト(FIFO)循環バッファであり、前記プロセッサベースのデバイスはさらに
前記ソフトウェア性能プロファイリング情報を集め前記ソフトウェア性能プロファイリング情報を前記トレースメモリにもたらすトレース制御回路を含み、前記トレース制御回路は
前記トレースメモリに結合される第1のソフトウェアプロファイルカウンタと、
前記第1のソフトウェアプロファイルカウンタに結合される第1のソフトウェアプロファイルトリガ制御レジスタとを含み、前記第1のソフトウェアプロファイルトリガ制御レジスタは予め定められたソフトウェア命令の実行の際に前記第1のソフトウェアプロファイルカウンタに経過時間のカウントを開始させ、前記トレース制御回路はさらに
前記第1のソフトウェアプロファイルカウンタに結合される第2のソフトウェアプロファイルトリガ制御レジスタを含み、前記第2のソフトウェアプロファイルトリガ制御レジスタはさらなる予め定められたソフトウェア命令の実行の際に前記第1のソフトウェアプロファイルカウンタに経過時間のカウントを停止させ、
前記第1のソフトウェアプロファイルカウンタによる経過時間のカウントの停止によりそのカウント値が前記トレースメモリ内にストアされ、前記トレース制御回路は
前記トレースメモリに結合され、経過時間をカウントする第2のソフトウェアプロファイルカウンタをさらに含み、
前記第2のソフトウェアプロファイルトリガ制御レジスタは、前記さらなる予め定められたソフトウェア命令の実行の際に前記第2のソフトウェアプロファイルカウンタを初期化し、前記第2のソフトウェアプロファイルカウンタの初期化により、初期化の直前のそのカウント値が前記トレースメモリ内にストアされ、前記プロセッサベースのデバイスはさらに
前記プロセッサベースのデバイスの前記ピンに通信可能に結合され前記トレースメモリからソフトウェア性能プロファイリング情報を受信するためのホストシステムを含み、前記ホストシステムはソフトウェア性能プロファイル情報を分析するためのソフトウェアを含む、ソフトウェア開発システム。
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 US6154857A (en) | 1997-04-08 | 1997-12-17 | Microprocessor-based device incorporating a cache for capturing software performance profiling data |
US08/992,610 | 1997-12-17 | ||
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 JP2001519949A (ja) | 2001-10-23 |
JP2001519949A5 JP2001519949A5 (ja) | 2005-11-10 |
JP4138021B2 true 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) |
Families Citing this family (81)
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 | セイコーエプソン株式会社 | マイクロコンピュータ、電子機器及びデバッグシステム |
US7111290B1 (en) | 1999-01-28 | 2006-09-19 | Ati International Srl | Profiling program execution to identify frequently-executed portions and to assist binary translation |
US6763452B1 (en) | 1999-01-28 | 2004-07-13 | Ati International Srl | Modifying program execution based on profiling |
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 |
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 |
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 |
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 |
US6954923B1 (en) | 1999-01-28 | 2005-10-11 | Ati International Srl | Recording classification of instructions executed by 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 |
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 |
US6684348B1 (en) | 1999-10-01 | 2004-01-27 | Hitachi, Ltd. | Circuit for processing trace information |
US6918065B1 (en) | 1999-10-01 | 2005-07-12 | Hitachi, Ltd. | Method for compressing and decompressing 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 |
DE60118089T2 (de) * | 2000-03-02 | 2006-10-05 | Texas Instruments Incorporated, Dallas | Abtastschnittstelle mit Zeitmultiplexmerkmal zur Signalüberlagerung |
US6687816B1 (en) * | 2000-04-04 | 2004-02-03 | Peoplesoft, Inc. | Configuration caching |
DE60100901T2 (de) * | 2000-04-11 | 2004-08-19 | Analog Devices Inc., Norwood | Verfahren und anordnung zum eingriffsfreien profilieren von anwendungsprogrammkoden |
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 | 日本電気株式会社 | 運用レポート作成方式、運用レポート作成方法および運用レポート作成用プログラム |
GB2395040B (en) * | 2001-08-27 | 2005-05-11 | Ericsson Telefon Ab L M | 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 |
US20050125784A1 (en) * | 2003-11-13 | 2005-06-09 | Rhode Island Board Of Governors For Higher Education | 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 |
JP2008523456A (ja) * | 2004-05-12 | 2008-07-03 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | トレースコプロセッサを備えたデータ処理システム |
TW200602974A (en) | 2004-05-19 | 2006-01-16 | Arc Internat Uk Ltd | Microprocessor architecture |
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 |
US7607047B2 (en) * | 2005-05-16 | 2009-10-20 | Texas Instruments Incorporated | Method and system of identifying overlays |
US7788645B2 (en) * | 2005-05-16 | 2010-08-31 | Texas Instruments Incorporated | Method for guaranteeing timing precision for randomly arriving asynchronous events |
US7590892B2 (en) * | 2005-05-16 | 2009-09-15 | Texas Instruments Incorporated | Method and system of profiling real-time streaming channels |
US20060255978A1 (en) * | 2005-05-16 | 2006-11-16 | Manisha Agarwala | Enabling Trace and Event Selection Procedures Independent of the Processor and Memory Variations |
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 |
WO2007049150A2 (en) | 2005-09-28 | 2007-05-03 | Arc International (Uk) Limited | Architecture for microprocessor-based systems including simd processing unit and associated systems and methods |
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 |
JP2008293061A (ja) * | 2007-05-22 | 2008-12-04 | Nec Electronics Corp | 半導体装置、及び半導体装置のデバッグ方法 |
WO2009011028A1 (ja) * | 2007-07-17 | 2009-01-22 | Advantest Corporation | 電子デバイス、ホスト装置、通信システム、およびプログラム |
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 |
GB2461716A (en) | 2008-07-09 | 2010-01-13 | Advanced Risc Mach Ltd | Monitoring circuitry for monitoring accesses to addressable locations in data processing apparatus that occur between the start and end events. |
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 |
JP5310819B2 (ja) * | 2010-11-29 | 2013-10-09 | 株式会社デンソー | マイクロコンピュータ |
KR101301022B1 (ko) * | 2011-12-23 | 2013-08-28 | 한국전자통신연구원 | 암 코어 기반의 프로세서를 위한 외부 공격 방어 장치 및 이를 이용한 방법 |
JP5710543B2 (ja) * | 2012-04-26 | 2015-04-30 | 京セラドキュメントソリューションズ株式会社 | 半導体集積回路 |
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 |
WO2021228766A1 (en) | 2020-05-11 | 2021-11-18 | Politecnico Di Milano | A computing platform and method for synchronize the prototype execution and simulation of hardware device |
CN117595860A (zh) * | 2023-11-15 | 2024-02-23 | 合芯科技有限公司 | 计数器、存储器和芯片 |
Family Cites Families (12)
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 | ロード・モジュール実行時トレース処理方法 |
DE69415600T2 (de) * | 1993-07-28 | 1999-07-15 | Koninkl Philips Electronics Nv | Mikrokontroller mit hardwaremässiger Fehlerbeseitigungsunterstützung nach dem Boundary-Scanverfahren |
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 |
-
1997
- 1997-12-17 US US08/992,610 patent/US6154857A/en not_active Expired - Lifetime
-
1998
- 1998-04-07 JP JP54301998A patent/JP4138021B2/ja not_active Expired - Lifetime
- 1998-04-07 DE DE69801156T patent/DE69801156T2/de not_active Expired - Lifetime
- 1998-04-07 EP EP98918024A patent/EP0974096B1/en not_active Expired - Lifetime
- 1998-04-07 WO PCT/US1998/006838 patent/WO1998045784A1/en active IP Right Grant
- 1998-04-07 KR KR10-1999-7009274A patent/KR100522193B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
DE69801156D1 (de) | 2001-08-23 |
US6154857A (en) | 2000-11-28 |
DE69801156T2 (de) | 2002-03-14 |
KR20010006194A (ko) | 2001-01-26 |
JP2001519949A (ja) | 2001-10-23 |
KR100522193B1 (ko) | 2005-10-18 |
EP0974096B1 (en) | 2001-07-18 |
WO1998045784A1 (en) | 1998-10-15 |
EP0974096A1 (en) | 2000-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4138021B2 (ja) | プロセッサベースのデバイス、ソフトウェア性能プロファイリング情報をもたらす方法およびソフトウェア性能プロファイリング情報を生成し分析するためのソフトウェア開発システム | |
EP0974094B1 (en) | Trace cache for a microprocessor-based device | |
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 | |
US6041406A (en) | Parallel and serial debug port on a processor | |
KR100517679B1 (ko) | 컴팩트한 트레이스 기록 기억장치를 포함하는 디버그 인터페이스 | |
US5978902A (en) | Debug interface including operating system access of a serial/parallel debug port | |
EP0567722B1 (en) | System for analyzing and debugging embedded software through dynamic and interactive use of code markers | |
US6189140B1 (en) | Debug interface including logic generating handshake signals between a processor, an input/output port, and a trace logic | |
US6145100A (en) | Debug interface including timing synchronization logic | |
US6142683A (en) | Debug interface including data steering between a processor, an input/output port, and a trace logic | |
US5724505A (en) | Apparatus and method for real-time program monitoring via a serial interface | |
US6154856A (en) | Debug interface including state machines for timing synchronization and communication | |
US6854029B2 (en) | DSP bus monitoring apparatus and method | |
US5265254A (en) | System of debugging software through use of code markers inserted into spaces in the source code during and after compilation | |
US6145123A (en) | Trace on/off with breakpoint register | |
KR20070109432A (ko) | 커널 인지 디버깅 장치 및 방법 | |
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 | |
Leatherman et al. | Processor and System Bus On-Chip Instrumentation | |
JPH11102306A (ja) | エミュレータ | |
Stollon et al. | MIPS EJTAG | |
JPH10171678A (ja) | エミュレータ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
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 | Written amendment |
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 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080228 |
|
A911 | Transfer of reconsideration by examiner 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 |