JP5356635B2 - 非侵入式アプリケーション・コード・プロファイリングの方法および装置 - Google Patents

非侵入式アプリケーション・コード・プロファイリングの方法および装置 Download PDF

Info

Publication number
JP5356635B2
JP5356635B2 JP2001577148A JP2001577148A JP5356635B2 JP 5356635 B2 JP5356635 B2 JP 5356635B2 JP 2001577148 A JP2001577148 A JP 2001577148A JP 2001577148 A JP2001577148 A JP 2001577148A JP 5356635 B2 JP5356635 B2 JP 5356635B2
Authority
JP
Japan
Prior art keywords
register
clock
processor
latch
contents
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
Application number
JP2001577148A
Other languages
English (en)
Other versions
JP2003531436A (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.)
Analog Devices Inc
Original Assignee
Analog 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 Analog Devices Inc filed Critical Analog Devices Inc
Publication of JP2003531436A publication Critical patent/JP2003531436A/ja
Application granted granted Critical
Publication of JP5356635B2 publication Critical patent/JP5356635B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

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/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
    • 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/3447Performance evaluation by modeling
    • 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

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)
  • Test And Diagnosis Of Digital Computers (AREA)

Description

(発明の分野)
本発明は、プロセッサ上で実行されるコンピュータ・プログラム・コードの分析の分野に関する。詳細には、本発明は、プログラムの、詳細には、アプリケーション・プログラムの様々な命令および部分を実行するプロセッサによって占有される時間の非侵入式の監視およびプロファイリングに関する。
(発明の背景)
今日、プロセッサ、詳細には、マイクロプロセッサが、多種多様な用途において情報処理アプリケーションを行うのに使用されている。特に、今日、プロセッサが普及して中心的機能を果たしている1つの分野が、デジタル信号プロセッサ(DSP)システムの分野である。そのようなシステムでは、音声信号またはビデオ信号、または医療遠隔測定入力または計測入力などの物理信号を表すデータがデジタル化され、様々なアルゴリズムにかけられて情報が抽出され、あるいは新しい情報または新しい信号が生成され、あるいは情報が伝送される。そのようなDSPベースのシステムの動作を改良し、システムをより高速でより安価にすること等の市場圧力が常に存在する。より高い速度を達することにより、ハードウェアの改良に焦点が当てられることになるだけでなく、プロセッサ・ハードウェアのより効率的な利用を達することも焦点が当てられることになる。したがって、デジタル信号プロセッサ上で、または、実際、一般にプロセッサ上で実行されるアプリケーション・ソフトウェア(コンピュータ・プログラム)を開発するプロセスにおける1つのステップは、システムがソフトウェアによって動作させられる効率を評価して、プログラムのどの部分が最も多くの処理時間を消費し、したがって、その部分の改良がシステムのパフォーマンスを相当に向上させる可能性が最も高いかを判定しようと試みることである。
プログラム・コードのプロセッサ実行に関するパフォーマンス・データを収集するのに一般に使用される方法は、試験中のシステムに対して影響を与える。例えば、方法は、プログラム・コードの中に様々なポイントで区切り点命令を挿入して、プログラムの進行を区切り点ごとに測定できるようにすることを必要とする可能性がある。別の言い方をすれば、従来の手法は、プログラム・コンパイラおよびプログラム・アセンブラが(ユーザによって導入された指示を介して)、サブルーチンのすべてのエントリ・ポイントおよびエグジット・ポイントで計装コード(区切り点命令)を追加することを必要とする。この追加の計装コードを使用して、サブルーチンの、より一般的には、プロセスの)エントリに関するプロセッサのプログラム・カウンタの現行のカウントを捕捉することができる。エグジット時に、計装コードは、サブルーチンの(プロセスの)動作に関する様々な情報(例えば、サブルーチン(プロセス)が開始された回数、サブルーチンの中で経過した合計時間、サブルーチン通過の単一の最大時間、サブルーチン通過の単一の最小時間等)でレコードを更新する。この情報を使用して、ユーザは、どのルーチン(プロセス)がプロセス上で最も多くの時間を消費しているかに関して何らかの結論に達し、これにより、改良することでプログラム・パフォーマンスの相当な全体的向上がもたらされる可能性が最も高いサブルーチンを特定することができる。もちろん、1つの欠点は、「目標」プログラム・コードを変更しなければならないことであり、これは、計装コードを実行しているシステム・パフォーマンスが、計装していないコードを実行するシステム・パフォーマンスとは異なることである。ただし、試験を受けるプログラムのコードおよび自然なフローを変更することにより、本来的に、不正確なデータの生成がもたらされる。というのは、分析されるプログラムが、通常の使用時に存在する実際のプログラムではないからである。システムの製造バージョンのダイナミックスのいくらかが失われる可能性がある。この結果、特に最良のパフォーマンスに合せて入念に調整されている(すなわち、通常、「高度に調整されている」と言われる)システム上で、結果の不正確さにより、さらなる調整を必要とするシステムの部分に関する不正確な報告がもたらされる可能性がある。
さらに、これらのシステムのいくつかは、100%のプロセッサ利用を得ようとする。そのような状況では、パフォーマンス・データを収集するためにプログラム・コードに追加の命令を挿入することにより、実際、システムが動作しなくなる可能性がある。
したがって、プログラム・コードを変更する(例えば、追加の命令が追加される)ことなしに、プロセスがプログラム・コードを実行する際、プロセッサの非侵入式監視を提供する方法および装置の必要性が存在する。
(発明の概要)
以上の必要性に対して、ランダム式にプロセッサのプログラム・カウンタを非侵入式にサンプリングする統計的プロファイリング方法の使用によって対応がなされ、利点が得られる。収集されたデータにより、システム開発者は、プロセッサ時間の各ルーチンの利用を分析(さらには視覚化)を行うことができ、したがって、開発者は、どのルーチンがプロセッサのパフォーマンスの大部分を消費しているかを特定し、それらのルーチンを最適化することができる。ランダム・サンプリングは、JTAGポートとして知られる業界標準のポートを有する、プロセッサ上に、詳細には、DSP上に一般に備えられているシフト・レジスタを利用して得られる。JTAGポートは、従来、いわゆる境界スキャニング動作で使用するために提供される。
プログラム・カウンタ内容が変化する時刻に対してランダムなタイミング(すなわち、プロセッサ・コア・クロックとは独立のタイミング)でサンプリングが行われない場合、収集された情報は、あるプログラム・カウントまたはルーチンが実際よりも多い頻度で、または少ない頻度で実行されていると不正確に示す可能性がある。これは、サンプリングが、プログラム実行とどうにか同期しているときに生じる可能性がある。これを回避するため、本発明によるシステムは、通常、少なくとも、プロセッサ・コア・クロックとは独立したクロックを使用してプログラム・カウンタ内容のサンプリングを行う。
ランダム性の保証をより高くするため、2つの異なる方法を使用してランダム・サンプリングを行う。第1に、サンプリング・ポートでレジスタのために使用するクロックが、前段で説明したとおり、プロセッサを動作させるクロックとは独立に動作する。第2に、外部ホスト・コンピュータ(例えば、パーソナル・コンピュータまたはワークステーション)を使用して、いつプログラム・カウンタをサンプリングするかに関してサンプリング・ポートに知らせる。ホストからの信号は、サンプリング・ポートにおけるクロックとは非同期に確立される。このプロセスは、サンプリングするコマンドとサンプリングの開始の間にランダムな遅延を加える。サンプリングを行うコマンドは、規定の間隔を特定し、または規定の間隔中、継続して、次に別の間隔中、停止して、複数の逐次サンプルを可能にし、所望される場合、サンプリング・プロセスに「バースト性」の品質を与える。または、1回につき1つだけのサンプルをとることができる。
第1の態様によれば、本発明は、プロセッサがコンピュータ・プログラムに関するソフトウェア・コードを実行する際、プロセッサを監視するためのシステムに関わる。システムは、プロセッサによって実行された命令に関する情報を収集する、プロセッサに動作可能に接続されたレジスタと、プロセッサの動作とは非同期にレジスタの内容をサンプリングする、レジスタに動作可能に接続されたサンプラ(即ち、サンプル回路)とを含む。システムは、前記サンプルを受け取り、プロセッサによって実行された命令の統計レコードを提供するホスト・コンピュータを含むことが可能である。
第2の態様によれば、本発明は、プロセッサがコンピュータ・プログラムに関するソフトウェア・コードを実行する際、プロセッサを監視するためにシステムに関わり、プロセッサによって実行された命令に関する情報を収集するプロセッサに動作可能に接続されたレジスタと、プロセッサの動作とは非同期にレジスタの内容をサンプリングするレジスタに動作可能に接続されたサンプラと、レジスタの内容をサンプリングするサンプラの動作を開始するコマンドを発行するホスト・コンピュータとを含む。ホスト・コンピュータは、前記サンプルを受け取り、プロセッサによって実行された命令の統計レコードを提供することができる。
第3の態様によれば、本発明は、プロセッサがコンピュータ・プログラムに関するソフトウェア・コードを実行する際、プロセッサを監視するためのシステムに関わり、プロセッサが、第1のクロックによってクロックされ、前記第1のクロックによってやはりクロックされるプログラム・カウンタを含み、プログラム・カウンタに動作可能に接続され、第1のクロックによってクロックされ、不能(disable)にされているとき以外、第1のクロックと同期にプログラム・カウンタの内容を受け取るレジスタと、レジスタに動作可能に接続されて、第1のクロックとは独立の第2のクロックに応答してレジスタ内容をサンプリングするラッチとを含む。また、レジスタがラッチによってサンプリングされている間、レジスタを不能にするように適合された論理を提供することも可能である。ラッチの内容を受け取り、その内容をユーザ装置に通信するように動作可能に接続されたシフト・レジスタが含まれることが可能である。また、第1のクロックおよび第2のクロックとは独立の第3のクロックによってクロックされるホスト・コンピュータ、およびホスト・コンピュータとラッチの間に結合され、ホスト・コンピュータからのサンプリング・コマンドをラッチに通信してラッチによるサンプリングを開始するインターフェース・ユニットも含まれることが可能である。インターフェース・ユニットは、第2のクロックと同期にサンプリングを行うコマンドをラッチに発行することができる。ラッチは、プログラム・カウンタからの一続きのプロセッサ命令内容をレジスタからシーケンスで受け取るように時々、制御することが可能である。また、好ましくは、ただし、オプションとして、プログラム・カウンタ内の命令を実行するための条件が満たされていないとき、レジスタを不能にする論理も含まれることが可能である。
さらに別の態様によれば、本発明は、プロセッサがコンピュータ・プログラムに関するソフトウェア・コードを実行する際、プロセッサを監視するための方法に関わり、プロセッサは、第1のクロックによってクロックされ、前記第1のクロックによってやはりクロックされるプログラム・カウンタを含み、実行されない命令に関する命令内容を捕捉しないことを除き、非侵入式に第1のクロックと同期してレジスタの中のプログラム・カウンタの命令内容を捕捉することと、第1のクロックとは独立の第2のクロックに応答してレジスタ内容をサンプリングすることとを含む。そのような方法は、レジスタがサンプリングされている間、レジスタを不能にすることをさらに含むことが可能である。サンプリングは、ラッチの内容を受け取り、その内容をユーザ装置に通信するように動作可能に接続されたシフト・レジスタにプログラム・カウンタ内容を渡すことを含むことが可能である。好ましくは、シフト・レジスタは、JTAGポートにある。ユーザ装置は、ホスト・コンピュータであることが可能であり、ホスト・コンピュータを動作させて、捕捉されたプログラム・カウンタ命令内容の統計分析を生成することができる。オプションとして、方法は、第1のクロックおよび第2のクロックとは独立の第3のクロックによってホスト・コンピュータをクロックすること、およびホスト・コンピュータとラッチの間に結合されたインターフェース・ユニットを使用して、ホスト・コンピュータからのサンプリング・コマンドをラッチに通信して、ラッチによるサンプリングを開始することをさらに含むことが可能である。
また、方法は、インターフェース・ユニットが、第2のクロックと同期してサンプリングを行うコマンドをラッチに発行し、ラッチが、第2のクロックと第3のクロックの差、および処理遅延に関連する遅延の後、応答することを含むことも可能である。方法は、プログラム・カウンタからの一続きのプロセッサ命令内容をレジスタからシーケンスで受け取るように少なくとも時々、ラッチを制御することを含むことが可能である。また、方法は、プログラム・カウンタ内の命令を実行するための条件が満たされていないとき、レジスタを不能にすることを含むことも可能である。
さらに別の態様によれば、本発明は、プロセッサがコンピュータ・プログラムに関するソフトウェア・コードを実行する際、プログラム・カウンタを有するプロセッサを監視するための方法に関わり、プログラム・カウンタから、プロセッサによって実行された命令に関する情報を非侵入式に収集することと、プロセッサの動作とは非同期式に、収集された情報をサンプリングすることとを含む。この方法は、JTAGポートにおけるシフト・レジスタを介してホスト・コンピュータにサンプルを提供することをさらに含むことが可能であり、次に、プロセッサによって実行された命令の統計レコードを提供するようにホスト・コンピュータを動作させることが可能である。
本発明は、添付の図面と合せて読むべき以下の詳細な説明からよりよく理解される。図面では、同様の参照番号が、同様の要素を指すものとする。アイテムは、一定の縮尺で描いたものではない。
(詳細な説明)
前述したとおり、プログラミングされたプロセッサの動作を監視し分析して、目標プログラム・コードの中に設定または実装される様々なルーチンおよびプロセスを実行する際にプロセッサによって占有される時間の統計プロファイルを作成することにより、コード最適化を可能にすることができる。この統計プロファイルを作成する1つのやり方は、プロセッサをランダムにサンプリングして、サンプリング時間にプロセッサがどの命令を実行しているかを判定することである。次に、その命令をプログラム・コードの中のその命令の場所に関連付け、タイミング・プロファイルを作成することができる。好都合なことに、ほとんどのプロセッサには、プログラム・カウンタ(PC)が含まれる。プログラム・カウンタは、実行中の命令のアドレス(メモリ内の)を含むレジスタである。このレジスタの内容は、プログラムの各命令がメモリから取り出される直前に自動的に増分されて、記憶された命令の逐次の実行を可能にする。プログラム制御下で、PCの内容をポインタ・レジスタの内容で変更または交換して、サブルーチン呼出しおよびプログラム分岐を行うことも可能である。他の目的で一般に使用される機構を適合させて、相当なオーバーヘッドを生じさせることなく、プログラム・カウンタの統計サンプリングを可能にすることができる。この機構は、プロセッサ・チップに通常、組み込まれるいわゆるJTAGレジスタである。JTAGは、ボードレベル試験のある問題に対する解決策を業界標準として確立し、普及させるために1985年に会合を開いたエレクトロニクス業界および半導体業界における200を超える会員の団体であるJoint Test Action Groupの略語である。1990年の解決策は、IEEE Std.1149〜1990、IEEE Standard Test Access Port And Boundary−Scan Architectureになった。すべてのJTAG(すなわち、IEEE Std.1149.1)対応の装置は、試験命令および試験データを装置に逐次にロードすることができるようにし、その後の試験結果を装置から逐次に読み取ることができるようにするレジスタを含む。標準に適合するのに、構成要素は、ある基本的試験機能を有していなければならないが、標準により、設計者は、自身の独自の要件を満たす試験機能を追加できるようになる。
次に、プログラム・カウンタ(PC)14を含む従来のシーケンサ12を有するDSP10などのプロセッサをブロック図で示す図1を参照する。レジスタ16が、マイクロプロセッサのコア・クロックの各「刻み」ごとにPC内容を収集し、またレジスタ16に接続されたサンプラ(サンプル回路)18が、プロセッサのコア・クロックの動作とは非同期にレジスタ16の内容をサンプリングする。
より詳細には、レジスタ16が、バス17上でプログラム・カウンタ14の内容をパラレル式に受け取る。クロック生成器19からのマイクロプロセッサ・コア・クロック(CCLK)の各刻みごとに、ライン22上でDISABLE信号がアサート(assert)されない限り、PC内容がレジスタ16の中にロードされる。レジスタ16が読み取られる際(以下を参照)、内容が読み取られるまでレジスタの内容が変更されるのを防止するため、中止され、プロセッサによって実行されない命令に関して不能信号はアサートされる。中止される命令には、プログラム・コードの中に存在するが、実行が条件付きであり、実行を可能にするその条件が生じなかったときの命令が含まれる。
サンプラ18は、第1のレジスタ、またはレジスタ16に接続されて、レジスタの出力をバス26上でパラレル式に受け取るラッチ24を含む。サンプリング・ラッチ24は、マイクロプロセッサ・コア・クロックCCLKとは別の独立して動作する試験クロック(TCLK)によってクッロクされる。ラッチ24は、シフト・レジスタ28によってパラレル式に読み取られ、レジスタの内容が、ライン32上にシリアル式にシフトアウトされることが可能である。シフト・レジスタ28は、JTAG EMUPCシフト・レジスタであることが可能である。
TCLK信号は、ラッチ24をクロックしてプログラム・カウントを含むレジスタ16の内容を捕捉するだけでなく、ライン36上に現れるSAMPLE信号で表されるとおり、PCがサンプリングされるとき、ライン22上でDISABLE信号を生成して(論理34を介して)レジスタ16を不能にすることも行う。つまり、SAMPLE信号が提供されるとき、DISABLE信号が生成されて、レジスタ16がCCLKクロックに応答するのを止めさせ、レジスタ16の中で捕捉されるPC内容が、読み取ることができる前に変更されないことを確実にするようにする。必要な場合、単にタイミング問題を解決し、プロファイル・レジスタ16がラッチ24によってサンプリングされる前に不能にされることを確実にするだけのために、必要のない可能性があり、当分野の技術の範囲内の設計上の詳細と見なされるべき論理34が提供される。論理34は、入力としてTCLK信号およびSAMPLE信号を受け取るものとして示しているが、TCLK信号およびSAMPLE信号を必要な入力と見なしてはならない。
図2を参照すると、プログラム・カウンタ捕捉レジスタ16の動作をよりよく理解することができる。例として、任意の所与のクロック・サイクル中、第1の命令が取り出され、直前の取り出された命令が復号化され、次の先行する命令が、評価され、条件付きで実行されるパイプライン式プロセッサを考慮されたい。一続きの6つの命令、A〜Fを想定する。命令A〜Cは、NOP(動作なし)命令であり、命令Dは、Aにジャンプする命令であり、また命令EおよびFは、条件が満たされず、したがって、遭遇したとき、実行されるべきではないものと想定する条件侍き命令COND1およびCOND2である。図2は、一続きのプロセッサ・クロック・サイクルのそれぞれに関して、取り出された命令のシーケンスを行42に示し、復号化された命令のシーケンスを行44に示し、見かけでは実行された命令のシーケンス46、ならびに命令EおよびFが中止されるためにもたらされるレジスタの内容のシーケンス48を示している。したがって、この仮想の例では、時間の50%で、プロセッサが、命令Dを実行しているものと予期されることが分かる。プロファイリング・レジスタ16の統計的に有効なサンプリングが行われる場合、実際、命令Dが半分の時間、実行されていることが分かる。これは、命令Dを効率的に実行すること、またはプログラム・コードを変更して、別の命令、より高速に実行されるコードで元のコードを置き換えることができることに注意を向けるべきであるという結論に設計者を導くことになる。
JTAG EMUPCレジスタ28からの出力は、プロセッサによって実行されるすべての命令のシーケンスではない。そうではなく、出力のサンプリングであり、各プロセッサ・クロック・サイクルごとに複数のクロック・サイクルを必要とする命令のシリアル・ビット・ストリームを提供する。
任意の一まとまりの統計情報の有効性に関して重要なのは、収集されたサンプルの数である。ランダムに収集されたサンプルの数が増大するにつれ、サンプルから抽出される情報の正確さも高まる。このことは、デバッガが、サンプリングをランダムに保ちながらも、可能な限り高速にサンプルを収集することを確実にするのが望ましいことを示す。好ましくは、これは、プロセッサからサンプルの妥当なサイズの「バースト」(例えば、32〜64サンプル)を収集することによって達せられる。
図1の破線40の下の装置をオプションとして使用して、バースト・サンプリングを可能にする、または別の仕方で、サンプリング動作のランダム性のより高い信頼性を確実にすることができる。パーソナル・コンピュータまたはワークステーションなどのホスト・コンピュータ42が、通信リンクまたはバス44(例えば、PCIまたはISAバス)を介してインサーキット・エミュレータ(ICE)46にコマンドを発行し、このコマンドは、インサーキット・エミュレータ46が,SAMPLE信号をライン36上で発行するようにさせるものである。インサーキット・エミュレータは、ホスト・コンピュータとJTAGポートの間でコマンド変換およびプロトコル変換を提供する従来の装置または回路である。また、インサーキット・エミュレータは、本明細書でTCLKクロックとラベル付けした、JTAGシフト・レジスタおよび他のポート構成要素によって使用されるクロックを生成して、JTAGポートに供給する。ホストは、ICEおよびサンプラ18によって使用されるTCLKクロックとは非同期して独自の内部クロックで動作する。また、サンプラのTCLKクロックも、プロセッサ・クロックCCLKに関して非同期であり、独立である。したがって、ホスト・システムによるサンプリング・コマンドのアサートとSAMPLE信号のアサートの間で本来的でランダムな遅延(クロック・サイクル間隔内)が存在する。
ホストは、通常、ある間隔中、サンプリングを求め、ある間隔中、待ち、次にある間隔中、再びサンプリングを行い、これらの間隔のそれぞれは、1つまたは複数の(必ずしも量が一様でない)プロセッサ・クロック・サイクルの継続時間を有する。
ICEを介してサンプリングされたプログラム・カウンタ内容をホストにフィードバックすることができ、ホストが、任意の従来の統計分析ソフトウェアまたはカスタムの統計分析ソフトウェアを実行して、サンプリングされたプログラム・カウントの分布を計算し、かつ/または表示することが可能である。所望される場合、示していないが、各サンプルにタイムスタンプを押して、経過時間統計を作成できるようにすることも可能である。
したがって、本発明が、プログラムの実行のダイナミックスを変更することなく、システムの速度を低下させることなく、またソース・レベルまたはマシン・コード・レベルのどちらでもプログラム・コードに対する変更を全く必要とすることなく、デジタル信号プロセッサなどのプロセッサ上におけるプログラム命令の実行を監視し、分析するための装置および方法を提供することが分かる。したがって、プログラム・コードのパフォーマンスを分析するため、プログラム・コードのコンパイルをやり直す、またはアセンブルをやり直す必要が全くない。また、プログラムのどこに、区切り点を挿入することが有益である可能性があるかを先験的に知っている必要もない。プログラム全体の動作が、統計的に監視され、したがって、先験的仮定は、全く必要ない。命令利用が非侵入式に追跡される。
したがって、本発明のいくつかの実施形態を示したが、これらの実施形態は、説明のために例としてだけ提示しており、限定するものではない。当分野の技術者には、開示した実施形態の変形形態、ならびに全く新しい実施形態が容易に考えられよう。そのような改変形態、変更形態、拡張形態、および追加形態は、本発明の趣旨および範囲の中にあるものとされ、本明細書で示唆されるものである。例えば、ホスト・コンピュータは、汎用コンピュータである必要はなく、例えば、専用試験システム、または限られた機能性の他の装置、またはハンドヘルド・プログラマブル計算機であることが可能である。ラッチとして説明した要素は、他の適切なタイプのレジスタであることが可能である。命令を1回に1つづつサンプリングすること、または一続きの複数の命令の連続でサンプリングすることが可能である。サンプリングは、JTAGレジスタ以外の専用レジスタまたはその他のレジスタを介して実行することも可能である。これらは、当分野の技術者には考えられ、カバーされるものである本発明の主題の変形形態のいくつかに過ぎない。したがって、本発明は、頭記の特許請求の範囲および等価内容によってだけ限定されるものとする。
本明細書で説明するとおり、ある部分はオプションであり、必要不可欠ではない本発明によるシステムを示すブロック図である。 本発明によるサンプラが、プログラム・フローの中に条件付き命令が存在してプログラム・カウンタ捕捉レジスタを動作させ、実際に実行された命令だけを捕捉するようにする仕方を示す図である。

Claims (15)

  1. プロセッサがコンピュータ・プログラムに関するソフトウェア・コードを実行する際、前記プロセッサを監視するためのシステムであって、
    前記プロセッサに動作可能に接続されて第1のクロックによってクロックされ、前記プロセッサによって実行された命令に関する情報を前記プロセッサのプログラム・カウンタから収集するレジスタと、
    前記レジスタに動作可能に接続されて前記第1のクロックに対して非同期の第2のクロックによってクロックされ、前記プログラム・カウンタの内容が変化する時に対してランダムな時に前記レジスタの内容をサンプリングするサンプラであって、前記レジスタに動作可能に接続されて前記第1のクロックとは独立の前記第2のクロックに応答して前記レジスタの内容をサンプリングするラッチを含む、サンプラと、
    前記第1のクロックおよび前記第2のクロックとは独立の第3のクロックによってクロックされるホスト・コンピュータと、
    前記ホスト・コンピュータと前記ラッチとの間に結合されるインターフェース・ユニットであって、前記第2のクロックと同期して前記ホスト・コンピュータからのサンプリング・コマンドを前記ラッチに通信して、前記ラッチによるサンプリングを開始し、それによって、前記インターフェース・ユニットによる前記サンプリング・コマンドの受信と前記ラッチへの前記サンプリング・コマンドの送信との間に本来的でランダムな遅延を挿入するように構成される、インターフェース・ユニットと
    を含むことを特徴とするシステム。
  2. 前記ホスト・コンピュータは、前記サンプルを受け取り、前記プロセッサによって実行された前記命令の統計レコードを提供する請求項1に記載のシステム。
  3. 前記レジスタが前記ラッチによってサンプリングされている間、前記レジスタを不能にするように適合された論理をさらに含む請求項1に記載のシステム。
  4. 前記ラッチの前記内容を受け取り、前記内容をユーザ装置に通信するように動作可能に接続されたシフト・レジスタをさらに含む請求項1または請求項3に記載のシステム。
  5. 前記ラッチが、時々、前記プログラム・カウンタからの一続きのプロセッサ命令内容を前記レジスタからシーケンスで受け取るように制御される請求項4に記載のシステム。
  6. 前記シフト・レジスタが、JTAGポートにある請求項4に記載のシステム。
  7. プログラム・カウンタ内の命令を実行するための条件が満たされていないとき、前記レジスタを不能にする論理をさらに含む請求項1に記載のシステム。
  8. プロセッサがコンピュータ・プログラムに関するソフトウェア・コードを実行する際、前記プロセッサを監視するための方法であって、
    前記プロセッサに動作可能に接続されて第1のクロックによってクロックされるレジスタにおいて、前記プロセッサによって実行された命令に関する情報を前記プロセッサのプログラム・カウンタから収集することと、
    前記プロセッサの前記第1のクロックの動作と非同期に、第2のクロックを使用して、前記プログラム・カウンタの内容が変化する時に対してランダムな時に、前記レジスタの内容をサンプリングすることであって、前記レジスタに動作可能に接続されたラッチによって前記第1のクロックとは独立の前記第2のクロックに応答して前記レジスタの内容をサンプリングすることを含む、サンプリングすることと、
    前記第1のクロックおよび前記第2のクロックとは独立の第3のクロックによってホスト・コンピュータをクロックすることと、
    前記ホスト・コンピュータと前記ラッチの間で結合されたインターフェース・ユニットを使用し、前記第2のクロックと同期して前記ホスト・コンピュータから前記ラッチにサンプリング・コマンドを通信して、前記ラッチによるサンプリングを開始し、それによって、前記インターフェース・ユニットによる前記サンプリング・コマンドの受信と前記ラッチへの前記サンプリング・コマンドの送信との間に本来的でランダムな遅延を挿入することと
    を含むことを特徴とする方法。
  9. 前記サンプルを受け取り、前記プロセッサによって実行された前記命令の統計レコードを提供するように前記ホスト・コンピュータを動作させることをさらに含む請求項8に記載の方法。
  10. 実行されない命令に関して前記レジスタがサンプリングされている間、前記レジスタを不能にすることをさらに含む請求項8に記載の方法。
  11. サンプリングすることが、前記ラッチの前記内容を受け取り、前記内容をユーザ装置に通信するように動作可能に接続されたシフト・レジスタに前記プログラム・カウンタ内容を渡すことを含む請求項10に記載の方法。
  12. 前記シフト・レジスタが、JTAGポートにある請求項11に記載の方法。
  13. 前記ユーザ装置が、ホスト・コンピュータであり、前記ホスト・コンピュータが、捕捉されたプログラム・カウンタ命令内容の統計分析を生成するように動作させられる請求項11に記載の方法。
  14. 前記ラッチを、少なくとも時々、前記プログラム・カウンタからの一続きのプロセッサ命令内容を前記レジスタからシーケンスで受け取るように制御することをさらに含む請求項10に記載の方法。
  15. プログラム・カウンタ内の命令を実行するための条件が満たされていないとき、前記レジスタを不能にすることをさらに含む請求項10に記載の方法。
JP2001577148A 2000-04-11 2001-04-11 非侵入式アプリケーション・コード・プロファイリングの方法および装置 Expired - Lifetime JP5356635B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US19619200P 2000-04-11 2000-04-11
US60/196,192 2000-04-11
PCT/US2001/011881 WO2001080012A2 (en) 2000-04-11 2001-04-11 Non-intrusive application code profiling method and apparatus

Publications (2)

Publication Number Publication Date
JP2003531436A JP2003531436A (ja) 2003-10-21
JP5356635B2 true JP5356635B2 (ja) 2013-12-04

Family

ID=22724399

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001577148A Expired - Lifetime JP5356635B2 (ja) 2000-04-11 2001-04-11 非侵入式アプリケーション・コード・プロファイリングの方法および装置

Country Status (5)

Country Link
US (1) US6718286B2 (ja)
EP (1) EP1272934B1 (ja)
JP (1) JP5356635B2 (ja)
DE (1) DE60100901T2 (ja)
WO (1) WO2001080012A2 (ja)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030083849A1 (en) * 2001-10-31 2003-05-01 Cabot Mason B. Statistical sampling process
US7394877B2 (en) * 2001-12-20 2008-07-01 Texas Instruments Incorporated Low-power packet detection using decimated correlation
DE10234469A1 (de) * 2002-07-29 2004-02-12 Siemens Ag Verfahren zur Erfassung von Programmlaufzeiten in einem Datenverarbeitungsgerät
WO2004046930A1 (fr) * 2002-11-15 2004-06-03 Stmicroelectronics S.A. Dispositif a liaison serie de surveillance d'un microprocesseur
FI5706U1 (fi) * 2002-11-21 2003-02-26 Patria New Technologies Oy JTAG-testilaitteisto ja -testausjärjestelmä
US7185215B2 (en) 2003-02-24 2007-02-27 International Business Machines Corporation Machine code builder derived power consumption reduction
US7610348B2 (en) 2003-05-07 2009-10-27 International Business Machines Distributed file serving architecture system with metadata storage virtualization and data access at the data server connection speed
US6965978B2 (en) * 2003-05-15 2005-11-15 Microsoft Corporation Memory tracking tool
US7318226B2 (en) * 2003-10-16 2008-01-08 International Business Machines Corporation Distributed autonomic solutions repository
US7506241B2 (en) * 2003-10-16 2009-03-17 International Business Machines Corporation Method and apparatus for a self healing agent
US7404160B2 (en) * 2005-02-18 2008-07-22 Quickturn Design Systems Inc. Method and system for hardware based reporting of assertion information for emulation and hardware acceleration
US20080127102A1 (en) * 2006-09-14 2008-05-29 Glen J Anderson Technique to visually present memory location and usage during code execution
US7870438B2 (en) * 2008-02-15 2011-01-11 International Business Machines Corporation Method, system and computer program product for sampling computer system performance data
US7881906B2 (en) * 2008-02-15 2011-02-01 International Business Machines Corporation Method, system and computer program product for event-based sampling to monitor computer system performance
US7908532B2 (en) * 2008-02-16 2011-03-15 International Business Machines Corporation Automated system and processing for expedient diagnosis of broken shift registers latch chains
US8502822B2 (en) 2008-09-30 2013-08-06 Nintendo Co., Ltd. Method and apparatus for visualizing and interactively manipulating profile data
US9495279B2 (en) * 2008-09-30 2016-11-15 Nintendo Co., Ltd. Method and apparatus for efficient statistical profiling of video game and simulation software
JP5217870B2 (ja) * 2008-10-07 2013-06-19 富士通株式会社 プログラム性能測定装置、方法、プログラム、プログラム記録媒体
US20140075417A1 (en) * 2011-05-18 2014-03-13 Telefonaktiebolaget L M Ericsson (Publ) Method and Arrangement for Enabling Analysis of a Computer Program Execution
US9274920B2 (en) 2012-09-28 2016-03-01 Dialog Semiconductor B.V. Code profiling in embedded ULE applications
US9122800B1 (en) * 2014-05-30 2015-09-01 Honeywell International Inc. System and method of non-intrusive measurement of memory access profiles of threads in a multi-core processor
US10289540B2 (en) * 2016-10-06 2019-05-14 International Business Machines Corporation Performing entropy-based dataflow analysis
US11106567B2 (en) 2019-01-24 2021-08-31 International Business Machines Corporation Combinatoric set completion through unique test case generation
US11263116B2 (en) 2019-01-24 2022-03-01 International Business Machines Corporation Champion test case generation
US11099975B2 (en) 2019-01-24 2021-08-24 International Business Machines Corporation Test space analysis across multiple combinatoric models
US11422924B2 (en) 2019-06-13 2022-08-23 International Business Machines Corporation Customizable test set selection using code flow trees
US10990510B2 (en) * 2019-06-13 2021-04-27 International Business Machines Corporation Associating attribute seeds of regression test cases with breakpoint value-based fingerprints
US11232020B2 (en) 2019-06-13 2022-01-25 International Business Machines Corporation Fault detection using breakpoint value-based fingerprints of failing regression test cases

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0240737A (ja) * 1988-07-29 1990-02-09 Nec Corp 使用率表示回路
JPH02202644A (ja) * 1989-02-01 1990-08-10 Hitachi Ltd トレーサ回路
US5151981A (en) * 1990-07-13 1992-09-29 International Business Machines Corporation Instruction sampling instrumentation
JP2777496B2 (ja) * 1991-02-28 1998-07-16 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータシステムにおいてマルチプロセスをプロファイリングする際の使用方法
JPH0784827A (ja) * 1993-09-13 1995-03-31 Nec Corp トレース装置
JPH10240571A (ja) * 1997-02-21 1998-09-11 Nec Corp アドレストレース回路
US5857097A (en) * 1997-03-10 1999-01-05 Digital Equipment Corporation Method for identifying reasons for dynamic stall cycles during the execution of a program
US6189140B1 (en) 1997-04-08 2001-02-13 Advanced Micro Devices, Inc. Debug interface including logic generating handshake signals between a processor, an input/output port, and a trace logic
US6041406A (en) 1997-04-08 2000-03-21 Advanced Micro Devices, Inc. Parallel and serial debug port on a processor
US6154857A (en) 1997-04-08 2000-11-28 Advanced Micro Devices, Inc. Microprocessor-based device incorporating a cache for capturing software performance profiling data
US6148381A (en) 1997-04-08 2000-11-14 Advanced Micro Devices, Inc. Single-port trace buffer architecture with overflow reduction
US6154856A (en) 1997-04-08 2000-11-28 Advanced Micro Devices, Inc. Debug interface including state machines for timing synchronization and communication
US6167536A (en) 1997-04-08 2000-12-26 Advanced Micro Devices, Inc. Trace cache for a microprocessor-based device
US6314530B1 (en) 1997-04-08 2001-11-06 Advanced Micro Devices, Inc. Processor having a trace access instruction to access on-chip trace memory
US6009270A (en) 1997-04-08 1999-12-28 Advanced Micro Devices, Inc. Trace synchronization in a processor
US6142683A (en) 1997-04-08 2000-11-07 Advanced Micro Devices, Inc. Debug interface including data steering between a processor, an input/output port, and a trace logic
US5978902A (en) 1997-04-08 1999-11-02 Advanced Micro Devices, Inc. Debug interface including operating system access of a serial/parallel debug port
US6094729A (en) 1997-04-08 2000-07-25 Advanced Micro Devices, Inc. Debug interface including a compact trace record storage
US6185732B1 (en) 1997-04-08 2001-02-06 Advanced Micro Devices, Inc. Software debug port for a microprocessor
JP3206535B2 (ja) * 1998-01-28 2001-09-10 日本電気株式会社 性能測定ツールの測定値表示方式

Also Published As

Publication number Publication date
US20020002442A1 (en) 2002-01-03
DE60100901T2 (de) 2004-08-19
EP1272934A2 (en) 2003-01-08
DE60100901D1 (de) 2003-11-06
US6718286B2 (en) 2004-04-06
WO2001080012A3 (en) 2002-05-30
WO2001080012A2 (en) 2001-10-25
JP2003531436A (ja) 2003-10-21
EP1272934B1 (en) 2003-10-01

Similar Documents

Publication Publication Date Title
JP5356635B2 (ja) 非侵入式アプリケーション・コード・プロファイリングの方法および装置
US6385742B1 (en) Microprocessor debugging mechanism employing scan interface
US7870437B2 (en) Trace data timestamping
US8978017B2 (en) Profiling operating context
JP4138021B2 (ja) プロセッサベースのデバイス、ソフトウェア性能プロファイリング情報をもたらす方法およびソフトウェア性能プロファイリング情報を生成し分析するためのソフトウェア開発システム
US6961872B2 (en) Microcomputer and debugging system
Zilles et al. A programmable co-processor for profiling
Backasch et al. Runtime verification for multicore SoC with high-quality trace data
Goossens et al. Transaction-based communication-centric debug
US20070011492A1 (en) Generation of trace data
JP2005056380A (ja) データを処理する方法と装置およびコンピュータ・プログラム製品
Decker et al. Online analysis of debug trace data for embedded systems
KR20150008428A (ko) 명령어 트레이스 기능을 갖춘 프로세서 디바이스
JP2011100388A (ja) トレース情報収集装置,トレース情報処理装置,およびトレース情報収集方法
US7607047B2 (en) Method and system of identifying overlays
US6513134B1 (en) System and method for tracing program execution within a superscalar processor
JP2008507025A (ja) 集積回路テスト用エミュレーション及びデバッグインターフェイス
US20010025339A1 (en) User configurable operating system
Bojan et al. Functional coverage measurements and results in post-Silicon validation of Core™ 2 duo family
Qian et al. Load balancing on generalized hypercube and mesh multiprocessors with LAL
Bose Performance test case generation for microprocessors
Preußer et al. Everything you always wanted to know about embedded trace
Du et al. FPGA-controlled PCBA power-on self-test using processor's debug features
Wahab et al. A novel lightweight hardware-assisted static instrumentation approach for ARM SoC using debug components
Park et al. On‐Chip Debug Architecture for Multicore Processor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110606

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110906

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110913

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111117

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20111208

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120321

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120619

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120626

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120718

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20121128

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130328

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20130404

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130501

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130702

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130829

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5356635

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term