JP2004199685A - 繰返し命令の追跡許可 - Google Patents

繰返し命令の追跡許可 Download PDF

Info

Publication number
JP2004199685A
JP2004199685A JP2003417339A JP2003417339A JP2004199685A JP 2004199685 A JP2004199685 A JP 2004199685A JP 2003417339 A JP2003417339 A JP 2003417339A JP 2003417339 A JP2003417339 A JP 2003417339A JP 2004199685 A JP2004199685 A JP 2004199685A
Authority
JP
Japan
Prior art keywords
instruction
repeat
processor
interrupt
tracking
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
JP2003417339A
Other languages
English (en)
Other versions
JP3731887B2 (ja
Inventor
Jimmie E Dewitt
ジミィ・イー・デウィット
Frank E Levine
フランク・イー・レバイン
Robert J Urquhart
ロバート・ジェイ・アーカート
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2004199685A publication Critical patent/JP2004199685A/ja
Application granted granted Critical
Publication of JP3731887B2 publication Critical patent/JP3731887B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • 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

Abstract

【課題】繰返し命令の追跡を可能にする方法およびシステムを提供すること。
【解決手段】繰返し命令がプロセッサ内部で実行される。繰返し命令の最後の実行中にセットされた繰返し命令フラグの検出に応答して、プロセッサ内部で割込みが開始される。プロセッサは、割込み中に、追跡プログラムまたは外部ハードウェアが、プロセッサ内部の記憶装置から繰返し命令用の実行カウントを読み出すことを可能にする。
【選択図】図8

Description

本発明は、全般的にはマイクロプロセッサに関し、詳細には、マイクロプロセッサの命令ストリームの追跡(trace)に関する。より詳細には、本発明は、繰返し命令の実行を評価するための、マイクロプロセッサのカウント・レジスタの追跡に関する。
データ処理システムの性能またはデータ処理システム内部で実行されるアプリケーションの解析において、実行の流れおよびシステム資源の使用を理解することが有益である。命令トレースは、アプリケーション・プログラムまたはシステム・プログラムの実行中にプロセッサによって実行される命令のリストを含むことができる。命令トレースは、性能モデルを作成するために、また、システム動作の一部分を統計的に監視するために解析される。トレース解析の多くの対象のうちには、命令タイプや他のフィールドの動的な使用、アドレス変換パターンならびにメモリ参照パターン、分岐動作ならびに基本ブロック・サイズがある。抽出された統計は、トレースを集める対象となったアーキテクチャ、実装、システム・ソフトウェア、およびアプリケーション・プログラムの特定の組合せを反映し、したがって、これらすべての構成要素の開発者による設計の決定の手引きとして使用することができる。
具体的には、トレースは、様々なレベルの情報を含むことができる。たとえば、アドレス・トレースは、命令およびオペランドへのアクセスに使用されるメモリ・アドレスのシーケンスを含む。命令トレースは、メモリ・アドレスのシーケンスに加え、命令のオペレーション・コードおよびレジスタ指定子を含む。
従来の追跡ツールは、トレースを取得するために、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組合せを使用することができる。ハードウェア側では、多くのプロセッサが、追跡を可能にするモードを含む。現在のプロセッサの焦点となっているのは、選択された分岐命令の検出時に割込みを起こし、選択された分岐命令を追跡する、分岐追跡機能である。どの分岐命令が最も頻繁に選択され、どの分岐が最も頻繁に例外となるかということに関する情報を集めることは、有益な情報である。
追跡ツールでは分岐および例外の追跡が焦点とされているが、他のタイプの命令の実行におけるトレースを集めることが有利であろう。具体的には、繰返しストリング命令など、繰返し命令の実行を監視することが有利であろう。たとえば、命令が要求された回数だけ繰り返されたか、または割込みが繰返しサイクルを停止したかを監視することが有利であろう。繰返し命令を追跡することによって、繰返し命令が実行される速度を監視することができる。
したがって、繰返し命令がソフトウェアの性能に与える影響を判断するために、繰返し命令を監視し検査するハードウェアおよびソフトウェアの追跡ツールを実現することが有利であろう。さらに、繰返し命令および分岐命令の両方を追跡することが有利であろう。
したがって、上記のことに鑑みて、本発明の目的は、改良されたマイクロプロセッサ機能を提供することである。
本発明の別の目的は、マイクロプロセッサの命令ストリームを追跡する方法、システムおよびプログラムを提供することである。
本発明のさらに別の目的は、繰返し命令の実行を評価するために、マイクロプロセッサの命令ストリームを追跡する方法、システムおよびプログラムを提供することである。
本発明の一態様によると、繰返し命令は、プロセッサ内部で実行される。繰返し命令の最後の実行中にセットされた繰返し命令フラグの検出に応答して、プロセッサ内部で割込みが開始される。プロセッサは、割込み中に、追跡プログラムまたは外部ハードウェアが、プロセッサ内部の記憶装置から繰返し命令用の実行カウントを読み出すことを可能にする。
一実施形態によると、初めて繰返し命令が実行されるとき、CXレジスタ値がプロセッサ内部の繰返しカウント・レジスタにコピーされる。繰返し命令の最後の実行が検出されたとき、割込みが生成される。プロセッサは、追跡プログラムが、CXレジスタの値と繰返しカウント・レジスタの値との差を読み出して、繰返し命令が実行された実際の回数を判定することを可能にする。
別の実施形態によると、複数の繰返し命令の実行回数を格納するために、繰返し命令情報バッファがプロセッサ内部で使用可能である。あるいは、プロセッサが、バッファに入れられた、プロセッサ外部のメモリ位置をポイントすることもできる。初めて繰返し命令が実行されるとき、CXレジスタ値がプロセッサ内部の繰返しカウント・レジスタにコピーされる。繰返し命令の最後の実行が検出されたとき、プロセッサは、現在のCXレジスタ値と繰返しカウント・レジスタの値との差を、繰返し命令情報バッファにコピーし、したがって、繰返し命令が実行された実際の回数が格納される。命令情報バッファが満杯になると、割込みがトリガされる。プロセッサは、追跡プログラムが命令情報バッファを読み出すことを可能にする。
さらに別の実施形態によると、プロセッサは、カウンタ・レジスタを有する性能モニタを含む。カウンタ・レジスタは、繰返し発生カウンタを含む。第1の選択肢によると、繰返し発生カウンタは、オーバフローの1つ手前にプログラムされて、繰返し命令の発生をカウントするように設定される。繰返し命令の発生を検出すると、カウンタは増加してオーバフローし、割込みをトリガする。第2の選択肢によると、繰返し発生カウンタは、繰返し命令の最後の実行の発生をカウントするように設定され、最後の実行が起こると、カウンタは増加してオーバフローし、割込みをトリガする。もう1つの繰返し実行カウンタは、繰返し命令を検出すると、繰返し命令の各実行のカウントを開始する。したがって、割込みがトリガされると、プロセッサは、繰返し命令が実行された実際の回数をカウントした繰返し実行カウンタを追跡プログラムが読み出すことを可能にする。
さらに別の実施形態によると、第1の順次繰返し命令が、プロセッサ内で割込みを起こすように、追跡プログラムによって変更される。プロセッサ内での割込みの検出に応答して、繰返し命令が実行された実際の回数を含む記憶装置にアクセスすることによって繰返し命令が追跡される。次いで、繰返し命令は、割込みから戻るように変更される。あるいは、第1の順次繰返し命令を渡す分岐割込みの検出に応答して、繰返し命令が復元され、次の順次繰返し命令が、実行されると割込みを起こすように変更される。
本発明のすべての目的、特徴、および利点は、以下の詳細な説明で明らかになるであろう。
本発明の特徴と考えられる新規な特徴を、添付の特許請求の範囲に記す。ただし、本発明自体、ならびに好ましい使用方法、さらにその目的および利点も、以下の例示的な実施形態の詳細な説明を参照し、添付の図面を併せ読むことによって、最もよく理解されるであろう。
ここで図面に移ると、図1は、本発明を実施することができる、コンピュータ・システムの一実施形態を示す。コンピュータ・システム10は、バス22またはコンピュータ・システム10内部で情報を通信する他の通信装置と、バス22に結合された、情報を処理するプロセッサ12など少なくとも1つの処理装置とを含む。バス22は、好ましくは、待ち時間の短い経路および待ち時間の長い経路を含み、これらの経路は、ブリッジによって接続され、複数のバス・コントローラによってコンピュータ・システム10内部で制御される。
プロセッサ12は、IBMのPowerPC(商標)などの汎用プロセッサでよく、このようなプロセッサは、通常動作中に、オペレーティング・システム、およびランダム・アクセス・メモリ(RAM)14などの動的記憶装置ならびに読出し専用メモリ(ROM)16などの静的記憶装置に格納されたアプリケーション・ソフトウェアの制御下でデータを処理する。オペレーティング・システムは、好ましくは、グラフィカル・ユーザ・インタフェース(GUI)をユーザに提供する。好ましい実施形態では、アプリケーション・ソフトウェアは機械実行可能な命令を含み、この命令は、プロセッサ12で実行されると、図8、9、12、14、15、16のフロー図に示す動作、および本明細書で説明する他の動作を実施する。あるいは、本発明のステップは、ステップを実施する配線論理を含む特定のハードウェア構成要素によって実施しても、プログラムされたコンピュータ構成要素と特注のハードウェア構成要素のどの組合せによって実施してもよい。
本発明は、コンピュータ・プログラム製品として提供することができ、こうしたコンピュータ・プログラム製品は、コンピュータ・システム10を、本発明による処理を実施するようにプログラムするのに使用される機械実行可能な命令を格納した機械可読媒体に組み込まれる。本明細書で使用する「機械可読媒体」という用語は、実行のためにプロセッサ12またはコンピュータ・システム10の他の構成要素に命令を提供することに関与するどの媒体も含む。このような媒体は、不揮発性媒体、揮発性媒体、伝送媒体など多くの形をとり得るが、それだけに限定されるものではない。不揮発性媒体の一般的な形には、たとえば、フロッピー(R)・ディスク、フレキシブル・ディスク、ハード・ディスク、磁気テープまたは他の磁気媒体、コンパクト・ディスクROM(CD−ROM)または他の光学媒体、パンチ・カードまたは穿孔パターンを有する他の物理媒体、プログラム可能ROM(PROM)、消去可能PROM(EPROM)、電気的EPROM(EEPROM)、フラッシュ・メモリ、他のメモリ・チップまたはカートリッジ、あるいはコンピュータ・システム10が読み取ることができ、命令の格納に適した他のどのような媒体も含まれる。本実施形態では、不揮発性媒体の一例は大容量記憶装置18である。揮発性媒体には、RAM14などの動的メモリがある。伝送媒体には、バス22を備えるワイアを含めて、同軸ケーブル、銅線または光ファイバがある。伝送媒体は、電波通信または赤外線データ通信の間に生成されるような、音響波または光波の形をとることもできる。
さらに、本発明はコンピュータ・プログラム製品としてダウンロードすることもでき、こうしたコンピュータ・プログラム製品において、プログラム命令は、搬送波または他の伝播媒体で実施されるデータ信号を使って、バス22に結合された通信インタフェース32へのネットワーク・リンク34(たとえば、モデム接続またはネットワーク接続)を介してサーバ39などの遠隔コンピュータから要求側のコンピュータ・システム10に転送することができる。通信インタフェース32は、ネットワーク・リンク34に結合される双方向データ通信を提供し、ネットワーク・リンクは、たとえば、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)に、または図1に示すように、直接、インターネット・サービス・プロバイダ(ISP)37に接続することができる。具体的には、ネットワーク・リンク34は、1つまたは複数のネットワークに、有線または無線あるいはその両方のネットワーク通信を提供することができる。
ISP37は、インターネット38または他のネットワークを介してデータ通信サービスを提供する。インターネット38は、互いに通信するために伝送制御プロトコル(TCP)やインターネット・プロトコル(IP)など特定のプロトコルを使用するネットワークおよびゲートウェイの、世界規模の集合体を指すことができる。ISP37およびインターネット38はいずれも、デジタル・データ・ストリームを搬送する電気信号、電磁信号、または光信号を使用する。コンピュータ・システム10との間でデジタル・データを搬送する、様々なネットワークを介する信号、およびネットワーク・リンク34上にあり通信インタフェース32を介する信号は、情報を移送する搬送波の例示的な形である。
さらに、バス22に結合された入出力(I/O)コントローラ11に接続される複数の周辺装置を、コンピュータ・システム10に追加することができる。たとえば、マイクロホンや他の音声または唇動作取込み装置を介して音声入力を制御するために、また、スピーカや他の音声投射装置を介して音声出力を制御するために、音声入出力装置28がI/Oコントローラ11に接続される。ディスプレイ24も、視覚的、触覚的、または他のグラフィカルな表示形式を提供するために、I/Oコントローラ11に接続される。キーボード26、およびマウス、トラックボール、カーソル方向キーなどのカーソル制御装置30が、コンピュータ・システム10へのユーザ入力用インタフェースとして、I/Oコントローラ11に結合される。本発明の代替実施形態では、さらなる入出力周辺装置を追加することができる。
図1は、プロセッサが機能することができるコンピューティング環境の例を意図したものであり、アーキテクチャ上の限定を意図したものではない。本発明は、いくつかの異なるオペレーティング・システムの下で、様々なコンピューティング・システムや電子装置など、様々なシステムにおいて実行することができる。本発明の一実施形態では、コンピューティング・システムは、ノート型コンピュータ、パームトップ・コンピュータ、携帯情報端末(PDA)、電話などの可搬型コンピューティング・システム、または電話サービス、拡張電話サービス、メッセージング・サービス、情報サービスを提供する通信機能をやはり組み込むことができる他の電子コンピューティング・システムである。ただし、コンピューティング・システムは、たとえば、デスクトップ・コンピュータ、ネットワーク・コンピュータ、中型(midrange)コンピュータ、サーバ・システム、メインフレーム・コンピュータでもよい。したがって、通常、本発明は、コンピュータ・システムがアクセス可能な記憶装置のデータ操作などの計算タスクを実施するコンピュータ・システムにおいて実行される。さらに、コンピュータ・システムは、少なくとも1つの出力装置と少なくとも1つの入力装置を含むことができる。
ここで図2を参照すると、図1に示すコンピュータ・システムなどの計算機システム内部で使用することができる、プロセッサおよびメモリ・サブシステム内の一般的な構造のブロック図が示してある。階層メモリ110は、プロセッサ12によってアクセス可能なメモリ階層のタイプの例を示す。この例において、階層メモリ110は、レベル2キャッシュ112、RAM14、不揮発性メモリ116を備える。レベル2キャッシュ112は、当技術分野で公知のやり方でRAM14に格納することができるデータおよび命令用の高速アクセス・キャッシュを提供する。多くのタイプのキャッシュ・アーキテクチャを実装できることが理解されよう。RAM14は、データおよび命令用のメイン・メモリ記憶装置を提供する。また、RAM14は、図1に示す大容量記憶装置18などの不揮発性メモリ116に格納されたデータおよび命令用のキャッシュを提供することもできる。
プロセッサ12は、単一のサイクルにおいて複数の命令を実行することが可能な、パイプライン式のプロセッサである。他のタイプのプロセッサも実装できることが理解されよう。データ処理システムの動作中、命令およびデータは、階層メモリ110に格納される。データおよび命令は、バス22によって、階層メモリからプロセッサに転送することができる。バス22は、共通データ経路または独立データ経路を含むことができる。いずれの場合でも、プロセッサ12は、プロセッサ12の内部で、命令キャッシュ122およびデータ・キャッシュ124に関連する別々の命令転送経路およびデータ転送経路を提供することができる。命令キャッシュ122は、プロセッサ内での実行のためにキャッシュされた命令を含む。一部の命令は、データ・キャッシュ124を介して、階層メモリ110に、またはそこからデータを転送することができる。他の命令は、汎用データ・レジスタ126にロード済みのデータに作用することができる。汎用データ・レジスタ126は、通常、累算レジスタ(AX)、基本レジスタ(BX)、カウント・レジスタ(CX)、データ・レジスタ(DX)など、複数のレジスタを含む。図には、本発明の実装に関係する、カウント・レジスタ(CX)139を特に示してある。さらに、一部の命令は、汎用制御レジスタ128に関連して、制御動作を実施することができる。
命令取出しユニット130は、必要に応じて、命令キャッシュ122から命令を検索し、命令キャッシュは、必要に応じて、階層メモリ110から命令を検索する。命令復号ユニット132は、命令を復号して、命令タイプ、発信レジスタ、宛先レジスタなど、命令に関する基本情報を判定する。
この例では、プロセッサ12は順不同実行のプロセッサである。他の実行タイプのプロセッサも実装できることが理解されよう。順序付けユニット134は、復号された情報を使用して、実行のために命令をスケジューリングする。完了ユニット136は、命令を追跡するために、スケジューリングされた命令に関する情報を格納し検索するためのデータおよび制御構造を有することができる。実行ユニット138によって命令が実行されると、実行中の命令および実行された命令に関する情報が完了ユニット136に集められる。実行ユニット138は、複数の実行サブユニットを使用することができる。命令が完了すると、完了ユニット136が、命令の実行結果を反映させる(commit)。すなわち、命令の宛先レジスタが後続の命令にとって使用可能となるか、または宛先レジスタの値が様々な制御フラグの使用によって有効と指示される。後続の命令は、そのソース・データが使用可能になるとすぐに、適切な実行サブユニットに発行することができる。
さらに、この例では、プロセッサ12を、投機的実行プロセッサとして示してある。一般に、分岐タイプの命令がその命令の流れを条件付きでまたは無条件に変えるまで、命令は順次取り出されて完了される。命令復号ユニット132が条件付き分岐動作を認識した後、順序付けユニット134は、条件の結果を判定するためのデータがまだ利用不可能であると認識することもある。この場合、命令取出しユニット130は、分岐予測ユニット140にある1つまたは複数の分岐予測機構を使用して、条件の結果を予測することができる。次いで、条件の結果を判定することができるまで、制御が投機的に変更される。プロセッサの能力に応じて、複数の予測経路をとることができ、不必要な分岐は実行パイプラインから消去される。
具体的には、この例では、命令復号ユニット132が繰返し命令動作を認識すると、順序付けユニット134が実行のためにその命令をスケジューリングする。繰返し命令動作は、通常、「REP」接頭部で始まる命令によって識別される。命令が繰り返される回数「n」は、CXレジスタ139にロードされる。本発明では、CXレジスタ139は、繰返し命令が実行される度に減分されるカウント・レジスタである。したがって、実行ユニット138は、命令を「n」回、すなわち各実行ごとにCXレジスタ139を減分して、条件が満たされるまで繰り返す。本発明は、指定された値まで、繰返し命令の実行が起こる度に増分されるCXレジスタでも実装できることに留意されたい。さらに、本発明は、繰返し命令の実行が起こると、指定された値まで減分されるCXレジスタでも実装することができる。
割込み制御ユニット142は、命令処理中に起こるイベントを制御し、このイベントが起こると、ソフトウェアまたは外部ハードウェアによって提供することができる割込み処理ルーチンに実行フロー制御が渡される。割込み時点でのプロセッサの状態が、一定量、プロセッサによって自動的に保存される。割込み処理の完了後、保存されたプロセッサ状態を復元するために、割込みからの戻り(RFI)を実行することができ、同時に、プロセッサ12は、割込み命令の実行を続けることができる。割込み制御ユニット142は、割込みの処理を助ける様々なデータ・レジスタおよび制御レジスタを備えることができる。
命令が実行されるとき、キャッシュ・アクセスや変換索引バッファ(TLB)ミスなどのイベントがプロセッサで起こる。性能モニタ144はこうしたイベントを監視して、命令を処理した結果として起こるイベントのカウントを累算する。性能モニタ144は、命令の実行およびデータの格納に関する情報を提供するための、ソフトウェア・アクセス可能な機構である。すなわち、そのカウンタ・レジスタおよび制御レジスタは、ソフトウェアの制御下でその目的のための特別な命令を介して読み出すことも書き込むこともできる。性能モニタ144は、複数の性能監視カウンタ(PMC)、あるいは1つまたは複数の制御レジスタ148の制御下でイベントをカウントする複数のカウンタ・レジスタ146を含む。制御レジスタは、通常、イベント/信号の選択および累算を可能にするビット・フィールドに区分される。イベントの許容可能な組合せを選択することにより、複数のカウンタが並行して動作するようになる。すなわち、性能モニタは、命令パイプラインの諸段階での性能を監視する機構として使用することができる。
図2のハードウェアはシステムの実装によって変わり得ることが、当業者には理解されよう。図示した例は、本発明に関するアーキテクチャ上の限定を意図するものではない。
ここで図3を参照すると、本発明の方法、システム、およびプログラムによる、コンピュータ・システム内部のソフトウェア構成要素を示し、ソフトウェアの機能層の間の論理関係を示すブロック図が示してある。コンピューティング・システムのハードウェアは、レベル50にある。オペレーティング・システムのレベル52にあるカーネルは、ハードウェアへのインタフェースとして働く、コアとなる1組の機能を提供する。I/O機能およびドライバはレベル54にあり、メモリ管理機能およびメモリ関連機能はレベル56にある。レベル58にあるユーザ・アプリケーションおよび他のプログラムは、全般的なデータ処理を実施するために、他の層にある機能にアクセスする。レベル52、54、56は、全体として、特定の装置のオペレーティング・システムとみなすことができる。オペレーティング・システムが拡張可能であるとすると、ユーザ・アプリケーションに必要な様々な追加機能をサポートするために、システムに追加された新しい装置のサポートのためのデバイス・ドライバなどのソフトウェア・ドライバをオペレーティング・システムに追加することができる。
本発明は、様々なハードウェア・プラットフォームおよび様々なソフトウェア環境で実装することができる。単一のコンピューティング・システム内部で、複数のオペレーティング・システムを実行することができる。
ここで図4を参照すると、本発明の方法、システム、およびプログラムによる、追跡機構によって解析されるデータ処理システム内のソフトウェア構成要素間の関係を示すブロック図が示してある。追跡プログラム150は、アプリケーション・プログラム151の解析に使用される割込み処理ルーチンを含む。追跡プログラム150は、解析されているデータ処理システム上の割込みのサブセットを処理するように構成することができる。たとえば、選択分岐トラップまたは繰返し命令割込みから割込みが起こると、追跡プログラム150は、様々な追跡機能、プロファイリング機能、またはデバッグ機能を機能的に実施することができる。以下では、追跡、プロファイリング、デバッグという用語は、互いに交換可能に使用する。さらに、追跡プログラム150は、フックの実行が起こったとき、データを記録するのに使用することができる。フックとは、アプリケーションのプロセスの特定の場所にある、専用のコードである。トレース・フックは、通常、デバッグ、性能解析、または機能の強化の目的で挿入される。
通常、追跡プログラム150は、様々なタイプの情報のトレース・データを生成し、このトレース・データは、実行または割込みを処理する間、入出力が必要とされないように、固定されたトレース・データ・バッファに書き込まれる。その後、固定されたトレース・データ・バッファに書き込まれたデータは、後処理のためにデータ・ファイルに書き込まれる。本発明では、追跡プログラム150は、繰返し命令、ならびに選択された分岐命令、システム性能に影響を与える他のタイプの命令の実行のトレース・データを生成する。
追跡プログラム150およびアプリケーション・プログラム151はどちらも、システム・レベルの呼出し、ユーティリティ、デバイス・ドライバを備えかつサポートするカーネル152を使用する。実装形態によっては、追跡プログラム150は、アプリケーション・レベルの優先度をもつレベル58で実行されるモジュールと、信頼できるシステム・レベルの優先度をもつレベル52で実行される他のモジュールとを有することができる。具体的には、追跡プログラム150、あるいは例外または割込みを処理可能な他のドライバは、信頼できるコードによって(特権状態で)処理される。
本発明の命令追跡機能は、カーネル、カーネル・ドライバ、オペレーティング・システム・モジュール、追跡プロセス、追跡プログラムなど、様々な状況で使用できることに留意されたい。これ以降、「追跡プログラム」と「追跡ソフトウェア」という用語は、一般的なカーネル機能、およびアプリケーション・プログラムによって生成される処理と区別するために使用する。
ここで図5を参照すると、本発明の方法、システム、およびプログラムによる、追跡プログラムの典型的な諸フェーズを示す、高レベルの論理フロー図が示してある。最初に、初期化段階155で、追跡が開始される時点でのコンピュータ・システムの状態を取り込む。このトレース初期化データは、存在するすべてのスレッド、ロードされたすべてのクラス、およびロードされたクラスのためのすべてのメソッドを識別するトレース記録を含むことができる。続いて生成されるトレース・データは、スレッド切換え、割込み、クラスのロードおよびアップロード、JITコンパイラでコンパイルされたメソッドを含むことができる。トレース出力内部に、いつ起動情報がすべて書き込まれたかを示す特別な記録を書き込むことができる。次に、プロファイリング・フェーズ156で、記録を追跡し、その記録をトレース・バッファまたはトレース・ファイルに書き込む。メモリ制約条件に従って、生成されたトレース出力は、アナライザが特定のプログラムをプロファイリングまたはデバッグするのに必要なだけ、できるだけ長く、できるだけ詳細にすることができる。
最後に、後処理フェーズ157で、後処理のために、バッファに集められたデータをファイルに送る。後処理中、各トレース記録は、トレース記録内部の情報のタイプに従って処理される。すべてのトレース記録が処理された後、情報は通常、レポートの形で出力するためにフォーマットされる。トレース出力はサーバに送られ、サーバは、計算機システムにおける処理からのトレース出力を解析する。もちろん、利用可能な資源または他の考慮事項によっては、後処理は、計算機システム上で実施しても、追跡が行われている間に実施してもよい。
具体的には、追跡の初期化中、ロードされたすべてのコードについて、アドレス、実行ファイル(たとえばアプリケーション)名、および他の適切な情報が識別される。次いで、追跡プログラムは、追跡するアドレスを実行ファイルにマッピングし、それによって、アドレスをコード内部の命令またはコード用の記号情報にマッピングすることが可能になる。コードが動的にロードされるとき、この情報も識別される。具体的には、コードが、後処理中にディスクから読み出すことができる実行ファイル(またはディスクから読み出される記号情報)の一部ではない場合、そのコードのロードされたアドレスおよび長さが、後続の後処理のためにコードを取り込むのに使用される。この機能は、Java(R)仮想マシン・プロファイリング・インタフェース(JVMPI)を使用して、多くのJava(R)プロファイラによってサポートされる。
初期化フェーズ中にアドレス、実行ファイル名、および他の適切な情報が識別されるので、次のプロファイリング・フェーズ中には、実行されるコードの処理およびアドレスを記録するだけでよい。初期化フェーズ中に識別された情報、およびプロファイリング・フェーズ中に記録された処理およびアドレスに基づき、後処理フェーズでは、記号マッピングを使用して、実行されている関数およびメソッドの名前を識別し、どのコードが実行されたかを判定する。
ここで図6を参照すると、本発明の方法、システム、およびプログラムによる、繰返し命令に関する実行情報を明らかにするのに使用することができる、プロセッサ内部の繰返し命令レジスタを示すブロック図が示してある。図に示すように、プロセッサ180は、プロセッサ12と類似しており、特殊な繰返しカウント・レジスタ182を含む。繰返しカウント・レジスタ182は、繰返し命令のスケジューリングされた繰返し回数を示すCXの値のコピーを含む。繰返しカウント・レジスタ182は、適切であれば、プロセッサ180内部の様々なユニット内部に物理的に配置することができる。さらに、繰返しカウント・レジスタ182は、CXレジスタとして実装することもできる。繰返しカウント・レジスタ182は、専用レジスタである必要はないことに留意されたい。すなわち、プロセッサ180は、最も最近に実行された命令のコピーを、汎用レジスタ、性能監視レジスタ、あるいは実装されたプロセッサ・アーキテクチャ用に構成でき、またはそのアーキテクチャに適した他のレジスタに引き渡すことができる。さらに、繰返しカウント・レジスタは、選択分岐命令の分岐先および分岐元のアドレスも格納するために共用できることに留意されたい。
ここで図7を参照すると、本発明の方法、システム、およびプログラムによる、繰返し命令の追跡が可能なプロセッサを示すブロック図が示してある。図に示すように、プロセッサ190は、図2で説明したように、割込み制御ユニット192を含む。割込み制御ユニットは、繰返しカウント・レジスタ182を含む。さらに、割込み制御ユニット192は、制御レジスタ196を含む。制御レジスタ196は、モード、条件、またはプロセッサ内部の他のいくつかのタイプの動作状態を示す必要に応じてセットまたはクリアされる、1つまたは複数のビットを使用することができる。「フラグ」という用語は、一般に、1ビットのフィールドを示すのに使用される。この例では割込み制御ユニット192内部の構造として示したが、制御レジスタ196は、プロセッサ内部の複数の位置にあってよい。
制御レジスタ196は、繰返しイネーブル(RE)フラグ198を含む。REフラグ198は、ソフトウェアで指定可能なフラグであり、繰返し命令が検出されたときに割込みをトリガする。図4および5に示した追跡プログラム、より詳細には繰返し割込みハンドラ200は、繰返し命令が検出されたときまたは繰返し命令が実行を完了したときにプロセッサを停止するように、REフラグ198をセットすることができる。
さらに、制御レジスタ196は、単一ステップ・イネーブル(SSE)フラグ199を含む。SSEフラグ199も、ソフトウェアで指定可能なフラグであり、セットされると、命令の実行が成功した後に単一ステップのトラップを起こさせる。さらに、制御レジスタ196は、選択分岐イネーブル(TBE)フラグ197を含み、このフラグは、セットされると、分岐タイプの命令がうまく完了したときに選択分岐トラップを起こさせる。制御レジスタ196内部では他のフラグも必要になり得ることが理解されよう。たとえば、制御レジスタ196は、割込みイネーブル(IE)フラグなどのフラグも含むことができ、このフラグは、割込みが処理されるかどうか、すなわち外部割込みによってプロセッサが制御を外部割込みハンドラに移すかどうかを示す。さらに、繰返し命令ハンドラおよび分岐選択割込みハンドラは、割込みの前にどのタイプの命令が起こったかを検出してそのタイプの命令の機能を実施する、単一ハンドラとして機能し得ることに留意されたい。
第1の選択肢では、REフラグ198がセットされて繰返し命令が検出されると、割込み制御ユニット192が割込みを生成する(トラップ・モード)。追跡プログラム、すなわち繰返し割込みハンドラ200が、繰返し命令が実行されるよう設定された回数を示すCXレジスタなどのマシンの状態情報を集める。さらに、繰返し割込みハンドラ200は、繰返し命令の実行をCXレジスタで示される回数だけ繰り返して追跡するように、REフラグ198をセットすることができる。
第2の選択肢では、REフラグ198がセットされて繰返し命令が検出されると、割込み制御ユニット192は、繰返し命令の最後の実行までプロセッサに割り込まない。ただし、繰返し命令が初めて実行されるとき、CXレジスタは繰返しカウント・レジスタ182にコピーされる。繰返し命令の最後の実行が検出されるとき、割込み制御ユニット192は割込みを生成する。繰返し命令ハンドラは、CXレジスタの値と繰返しカウント・レジスタの値の差を読み出す。
第2の選択肢は、繰返し命令が起こった場合にそれだけを追跡するという利点をもたらす。さらに、一部の繰返し命令は条件付きである。こうした命令を使用するには、条件が検出されるまで命令を何度も繰り返すことができるように、CXレジスタを最も高い値に設定することが必要となり得る。条件付き繰返し命令の場合、繰返し命令を最後の実行の後で追跡することにより、より正確なトレースが提供される。
ここで図8を参照すると、プロセッサ内部での繰返しイネーブル・フラグの使用のための、処理およびプログラムを示す高レベルの論理フロー図が示してある。図に示すように、処理はブロック210で始まり、その後ブロック212に進む。ブロック212で、命令を実行する。次に、ブロック216で、REフラグがセットされているかどうか判定する。REフラグがセットされていない場合、処理は終わる。REフラグがセットされている場合、処理はブロック214に移る。ブロック214で、実行される命令が繰返し命令の最初の実行であるかどうか判定する。命令が繰返し命令の最初の実行ではない場合、処理は終わる。命令が繰返し命令の最初の実行である場合、処理はブロック218に移る。ブロック218で、繰返しカウント・レジスタにCXレジスタの値を書き込む。次に、ブロック220で、トレース割込みを生成し、処理は終わる。命令を実行した後、命令が繰返し命令ではない場合は、命令が選択分岐命令であるか他のタイプの特殊な命令であるかが判定される可能性があることに留意されたい。命令が選択分岐命令であってTBEフラグがセットされていれば、処理は選択分岐命令を追跡するための割込みトレースを生成する。
ここで図9を参照すると、完了した繰返し命令を追跡するために、プロセッサ内部で繰返しイネーブル・フラグを使用するための、処理およびプログラムを示す高レベルの論理フロー図が示してある。図に示すように、処理はブロック230で始まり、その後ブロック232に進む。ブロック232で、命令を実行する。次に、ブロック240で、REフラグがセットされているかどうか判定する。REフラグがセットされていない場合、処理は終わる。REフラグがセットされている場合、処理はブロック234に移る。ブロック234で、実行された命令が繰返し命令であるかどうか判定する。命令が繰返し命令ではない場合、処理は終わる。命令が繰返し命令の場合、処理はブロック236に移る。ブロック236で、命令が繰返し命令の最初の実行であるかどうか判定する。命令が最初の実行の場合、処理はブロック242に移る。ブロック242で、繰返しカウント・レジスタにCXレジスタの値を書き込み、処理はブロック232に戻る。
ブロック236に戻ると、命令が最初の実行ではない場合、最後の実行であるかどうか判定するために、処理はブロック238に移る。最後の実行ではない場合、処理はブロック232に移り、最後の実行である場合、処理はブロック244に移る。ブロック244で、トレース割込みを生成し、処理は終わる。追跡プログラムは、好ましくは、繰返し命令が実行された実際の回数を記録するために、繰返しカウント・レジスタの値とCXレジスタの値の差を読み出す。
ここで図10を参照すると、本発明の方法、システム、およびプログラムによる、繰返し命令の追跡および格納が可能なプロセッサを示すブロック図が示してある。図に示すように、プロセッサ250は、図7に示す繰返しカウント・レジスタ182および制御レジスタ196を有する割込み制御ユニット252を含む。さらに、割込み制御ユニット252は、1つの繰返し命令だけではなく複数の繰返し命令のカウントを格納する、繰返し命令情報バッファ259を含む。命令情報バッファ259は、1組の専用レジスタでもよく、既存のレジスタに組み込んでもよい。重要なのは、命令情報バッファ259が追跡プログラムによって読み出しできることである。命令情報バッファ259は繰返し命令のCX値、ならびに選択分岐命令の分岐元および分岐先アドレスの書込みに共用できることに留意されたい。たとえば、命令バッファ中の項目253は、繰返し命令および選択分岐命令の情報を含む。繰返し命令と選択分岐命令の項目は、マスキング、またはバッファ中のデータを区別するために使用可能な他の技術によって区別することができる。
プロセッサは、CXレジスタ値のコピーを命令情報バッファ259に置く。REフラグ198およびTBEフラグ197は、命令情報バッファ259の使用を認めるのに使用することができる。REフラグがセットされている場合、プロセッサは、(繰返し命令のカウントを示す)CXレジスタ値を繰返し命令情報バッファに格納すべきである。さらに、TBEフラグ197がセットされている場合、プロセッサは、選択分岐命令の分岐元および分岐先アドレスを格納すべきである。この例では、命令情報バッファ259は循環方式で充填される。先頭ポインタ258および終端ポインタ256は、命令情報バッファ259の最初および最後の項目をポイントするのに使用される。
第1の選択肢では、REフラグ198がセットされているときに最初の繰返し命令が検出されると、CXレジスタの値が命令情報バッファ259にコピーされる。命令情報バッファ259は、次いで、少なくとも1度繰り返される各繰返し命令に対して期待されるカウントを含む。
第2の選択肢では、REフラグ198がセットされているときに繰返し命令の最初の実行が検出されると、CXレジスタ値を繰返しカウント・レジスタ182にコピーすることができる。次いで、繰返し命令の最後の実行が検出されると、プロセッサは、繰返しカウント・レジスタ182の元のCXレジスタ値と最後の命令を実行した後のCXレジスタ値との差をコピーし、したがって、繰返し命令が実行された実際の回数が命令情報バッファ259に格納される。
バッファのオーバフローを防止するために、RE満杯フラグ254が、命令情報バッファ259に関連付けられる。命令情報バッファ259が満杯になると、RE満杯フラグ254がセットされて割込みを生成する。あるいは、他のタイプのフラグで割込みを起こすこともできる。たとえば、選択分岐命令に応答してTBEフラグ197がセットされている場合、命令情報バッファ259を空にするための割込みを開始することができる。
割込みに応答して、命令情報バッファ259を空にしようと試みて、繰返し割込みハンドラ200などの追跡プログラムが、プロセッサ250によって呼び出される。繰返し割込みハンドラ200は、命令情報バッファ259を空にして、その内容を別のメモリ位置に移すよう制御する。バッファ内の情報の移動が終わると、繰返し割込みハンドラ200は、制御をプロセッサ250に戻すために割込みからの戻り(RFI)を送り、この時点で、プロセッサ250は先頭ポインタ258および終端ポインタ256をリセットする。
ここで図11を参照すると、本発明の方法、システム、およびプログラムによる、繰返し命令を追跡してプロセッサの外部にあるメモリに格納することが可能なプロセッサを示すブロック図が示してある。プロセッサ260は、命令情報バッファの代わりに繰返し命令情報バッファ・ポインタ269を使用する点を除いて、プロセッサ250と同様である。プロセッサ260内部のバッファのサイズは、プロセッサ260外部のメモリで使用可能な記憶領域と比較すると、限られている。したがって、繰返し命令バッファ・ポインタ269は、命令情報バッファがある、プロセッサ外部のメモリ中の位置をポイントする。命令情報バッファは選択分岐命令の格納にも使用できることに留意されたい。さらに、別々の選択分岐命令情報バッファを指す別々の選択分岐命令情報バッファ・ポインタを実装できることに留意されたい。
プロセッサは、適切であれば、CXレジスタ値のコピーを、繰返し命令バッファ・ポインタ269によってポイントされる命令情報バッファに書き込む。あるいは、プロセッサは、CXレジスタ値と繰返しカウント・レジスタ182に格納された値との差を、繰返し命令バッファ・ポインタ269によってポイントされる命令情報バッファに書き込む。命令情報バッファ(IB)のサイズは、IBサイズ・レジスタ268に保持される。次の未使用項目オフセット・バッファ・インディケータは、ネクスト・レジスタ266に保持される。満杯フラグ264は、繰返し命令情報バッファが満杯になるとセットされて、繰返し割込みハンドラ200が命令情報バッファのトレース・バッファ位置への格納を制御するための、割込み呼出しを起こす。
ここで図12を参照すると、バッファ内の繰返し命令カウントを追跡するために、繰返しイネーブル・フラグを使用する処理およびプログラムを示す高レベルの論理フロー図が示してある。図に示すように、処理はブロック270で始まり、その後ブロック272に進む。ブロック272で、命令を実行する。次に、ブロック276で、REフラグがセットされているかどうか判定する。REフラグがセットされている場合、処理はブロック274に移り、セットされていない場合、処理はブロック286に移る。ブロック274で、実行された命令が繰返し命令の最初の実行であるかどうか判定する。実行された命令が繰返し命令の最初の実行である場合、処理はブロック278に移り、最初の実行ではない場合、処理は終わる。ブロック278で、命令情報バッファにCXレジスタ・カウントのコピーを書き込む。あるいは、CXレジスタ・カウントのコピーを、繰返し命令情報バッファ・ポインタによってポイントされる命令情報バッファに書き込んでもよい。あるいは、繰返し命令の最初の実行が検出されるとき、CXレジスタの値を繰返しカウント・レジスタに格納してもよい。次いで、繰返し命令の最後の実行が検出されるとき、繰返しカウント・レジスタに格納されたCXレジスタの値とCXレジスタの現在の値の差が命令情報バッファに格納される。
次に、ブロック280で、命令情報バッファが満杯かどうか判定する。命令情報バッファが満杯ではない場合、終端ポインタが増分されて処理は終わり、満杯の場合、処理はブロック282に移る。ブロック282で、満杯フラグをセットする。次に、ブロック284で、トレース割込みを生成し、処理は終わる。
処理の開始ステップに戻ると、ブロック286で、TBEフラグがセットされているかどうか判定する。TBEフラグがセットされている場合、処理はブロック285に移り、セットされていない場合、処理は終わる。ブロック285で、分岐が選択されたかどうか判定する。分岐が選択されていない場合、処理は終わる。分岐が選択されている場合、処理はブロック287に移る。ブロック287で、選択分岐記録のマークがつけられた命令情報バッファに分岐元および分岐先アドレスをコピーし、処理はブロック280に移る。
ここで図13を参照すると、本発明の方法、システム、およびプログラムによる、繰返し命令の追跡を制御することが可能なプロセッサを示すブロック図が示してある。図に示すように、プロセッサ290は、通常プロセッサ内部にある他の構成要素に加えて、性能モニタ292を含む。性能モニタ292は、カウンタ・レジスタ294および制御レジスタ196を含む。
カウンタ・レジスタ294は、繰返し発生カウンタ296を含む。一選択肢によると、繰返し発生カウンタ296は、繰返し命令の発生をカウントするように設定される。カウンタは、オーバフローの1つ手前にプログラムされる。繰返し命令の発生を検出すると、カウンタは増加してオーバフローし、割込みをトリガする。割込みによって、繰返し割込みハンドラがCXレジスタの値などの命令ストリームを追跡するために呼び出される。CXレジスタの値は、繰返し命令の実行がスケジューリングされている回数を示す。
さらに、カウンタ・レジスタ294は、繰返し実行カウンタ298を含む。第2の選択肢によると、繰返し発生カウンタ296は、繰返し命令の発生の完了をカウントするように設定される。繰返し実行カウンタ298は、1つの繰返し命令が実際に実行される回数をカウントするように設定される。最初の繰返し命令を検出すると、繰返し実行カウンタ298は、繰返し命令の実行回数のカウントを開始する。繰返し命令の完了を検出すると、繰返し発生カウンタ296は1だけ増分されてオーバフローを起こし、それによって割込みがトリガされる。割込みによって、繰返し割込みハンドラ200が呼び出され、繰返し実行カウンタ298の値が読み出される。具体的には、繰返し実行カウンタ298から読み出される値は、繰返し命令が実際に実行された回数である。カウンタ・レジスタ294は、割込みが生成される前に複数の繰返し命令の実行回数をカウントすることができる、追加のカウンタを含み得ることに留意されたい。
ここで図14を参照すると、性能監視カウンタを使用して、繰返し命令を追跡するために、割込みを制御する処理およびプログラムを示す高レベルの論理フロー図が示してある。図に示すように、処理はブロック300で始まり、その後ブロック302に進む。ブロック302で、実行された命令を検出する。次に、ブロック306で、REフラグがセットされているかどうか判定する。REフラグがセットされている場合、処理はブロック304に移り、セットされていない場合、処理は終わる。ブロック304で、実行された命令が繰返し命令の最初の実行であるかどうか判定する。実行された命令が繰返し命令の最初の実行の場合、処理はブロック308に移り、最初の実行ではない場合、処理は終わる。ブロック308で、繰返し発生カウンタを増分させる。次に、ブロック310で、繰返し発生カウンタがオーバフローしたかどうか判定する。繰返し発生カウンタがオーバフローした場合、処理はブロック312に移り、オーバフローしない場合、処理は終わる。ブロック312で、トレース割込みを生成し、処理は終わる。
ここで図15を参照すると、複数の性能監視カウンタを介して、繰返し命令を追跡するために、割込みを制御する処理およびプログラムを示す高レベルの論理フロー図が示してある。図に示すように、処理はブロック320で始まり、その後ブロック322に進む。ブロック322で、実行された命令を検出する。ブロック326で、REフラグがセットされているかどうか判定する。REフラグがセットされている場合、処理はブロック324に移り、セットされていない場合、処理は終わる。次に、ブロック324で、実行された命令が繰返し命令の最初の実行であるかどうか判定する。実行された命令が繰返し命令の最初の実行の場合、処理はブロック328に移り、最初の実行ではない場合、処理は終わる。ブロック328で、繰返し実行カウンタを増分させる。次に、ブロック330で、実行された命令を検出する。続いて、ブロック332で、実行された命令が繰返し命令の最後の実行であるかどうか判定する。実行された命令が繰返し命令の最後の実行である場合、処理はブロック334に移り、最後の実行ではない場合、オーバライドな割込み命令が検出されない限り処理はブロック328に移る。ブロック334で、繰返し実行カウンタを増分させる。次に、ブロック336で、繰返し発生カウンタを増分させる。ブロック338で、繰返し発生カウンタがオーバフローしたかどうか判定する。繰返し発生カウンタがオーバフローした場合、処理はブロック340に移り、オーバフローしていない場合、処理は終わる。ブロック340で、トレース割込みを生成し、処理は終わる。
ここで図16を参照すると、アプリケーション中で、一度に1つの繰返し命令にトレース・フックを挿入する処理およびプログラムを示す高レベルの論理フロー図が示してある。処理およびプログラムは、繰返し割込みハンドラなどの追跡プログラムによって実施することができる。処理は、有利には、一度に1つの繰返し命令に割込みフックを挿入する。図に示すように、処理はブロック350で始まり、その後ブロック351に進む。ブロック351で、最初の順次繰返し命令について、(割込みを引き起こす)例外に対処するようにオペレーション・コードを変更する。次に、ブロック352で、変更された繰返し命令をプログラムが渡すようにさせる選択分岐割込みが検出されたかどうか判定する。変更された繰返し命令を渡す選択分岐命令が検出された場合、処理はブロック354に移る。ブロック354で、直前の変更された繰返し命令のオペレーション・コードを復元する。次に、ブロック356で、次の順次繰返し命令のオペレーション・コードを、割込みを起こすように変更し、処理はブロック352に戻る。
ブロック352に戻ると、選択分岐割込みが検出されない場合、処理はブロック358に移る。ブロック358で、変更された繰返し命令に対するトラップが検出されたかどうか判定する。トラップが検出されない場合、ブロック364で、処理は、アプリケーションの最後に到達したかどうか判定し、アプリケーションの最後に到達していない場合、ブロック352に戻る。トラップが検出された場合、処理は、ブロック360に移って、CXレジスタ、および命令ストリームの他の部分をトレース・バッファに読み出す。次に、ブロック362で、割込みからの戻りを引き起こすために繰返し命令のオペレーション・コードを復元し、処理はブロック356に移る。
本発明を、完全に機能するデータ処理システムの状況で説明したことに留意されたい。本発明の処理は、コンピュータ可読な命令媒体など様々な形で配布できること、および、本発明が、配布の実行に実際に使用される信号伝達媒体のタイプに関わらず、等しく適用されることが当業者には理解されよう。コンピュータ可読媒体の例として、フロッピー(R)・ディスク、ハード・ディスク・ドライブ、RAM、CD−ROM、DVD−ROMなどの記録可能なタイプの媒体や、デジタルおよびアナログ通信リンク、無線周波数伝送や光波伝送といった伝送形体を使用した有線または無線通信リンクなどの伝送タイプの媒体がある。コンピュータ可読媒体は、あるデータ処理システムで実際に使用する場合に復号される、符号化されたフォーマットの形をとることができる。
本発明を、好ましい実施形態に関して具体的に示し説明したが、本発明の精神および範囲から逸脱することなく、本発明の形式および細部に様々な変更を加えることができることが当業者には理解されよう。
まとめとして、本発明の構成に関して以下の事項を開示する。
(1)繰返し命令の追跡を可能にする方法であって、
プロセッサ内部で繰返し命令を実行すること、
前記繰返し命令の最後の実行中にセットされた繰返し命令フラグの検出に応答して、前記プロセッサ内部で割込みを開始すること、および
前記割込み中に、前記プロセッサ内部の記憶装置からの前記繰返し命令用の実行カウントの読出しを可能にすることを含む方法。
(2)前記繰返し命令の最初の実行の検出に応答して、前記プロセッサ内部の繰返しカウント・レジスタと前記プロセッサによってアクセス可能な命令情報バッファとのうちの少なくとも1つを備える前記記憶装置に、前記繰返し命令用の最初のカウント値をコピーすることをさらに含む、上記(1)に記載の繰返し命令の追跡を可能にする方法。
(3)前記繰返し命令フラグが、割込みを起こすためにセットされる繰返しイネーブル・フラグと、オーバフロー、トレース・フック命令、および性能監視カウンタのオーバフローによってセットされるバッファ満杯フラグとのうちの少なくとも1つである、上記(1)に記載の繰返し命令の追跡を可能にする方法。
(4)前記繰返し命令用の実行カウントの読出しを可能にすることが、
前記実行カウントを保持する、前記プロセッサ内部のCXレジスタと、前記実行カウントを保持する、前記プロセッサ内部の繰返しカウント・レジスタと、前記実行カウントおよび第1の実行カウントを保持する前記繰返しカウント・レジスタと第2の実行カウントを保持する前記CXレジスタの差を保持する、前記プロセッサを介してアクセス可能な命令情報バッファとのうちの少なくとも1つを備える前記記憶装置からの読出しを追跡プログラムが行うことを可能にすることをさらに含む、上記(1)に記載の繰返し命令の追跡を可能にする方法。
(5)前記プロセッサ内部の記憶装置として働く性能監視カウンタ中の前記実行カウントを追跡すること、および
前記性能監視カウンタからの前記実行カウントの読出しを可能にすることをさらに含む、上記(1)に記載の繰返し命令の追跡を可能にする方法。
(6)複数の繰返し命令の実行カウントを追跡した後でのみ、前記割込みを開始することをさらに含む、上記(5)に記載の繰返し命令の追跡を可能にする方法。
(7)割込みの検出に応答して、追跡プログラムが前記記憶装置からの繰返し命令の実行カウントおよび実行されたアドレスを固定バッファに読み出すことを可能にすること、および
前記実行カウントを実行ファイル中の特定の繰返し命令にマッピングするために、前記実行されたアドレスと、前記実行されたアドレスに格納された前記実行ファイルの命令とのマッチングを制御することをさらに含む、上記(1)に記載の繰返し命令の追跡を可能にする方法。
(8)繰返し命令の追跡を可能にするシステムであって、
追跡プログラムによって追跡可能なプロセッサと、
前記プロセッサ内部で繰返し命令を実行する手段と、
前記繰返し命令の最後の実行中にセットされた繰返し命令フラグの検出に応答して、前記プロセッサ内部で割込みを開始する手段と、
前記割込み中に、前記プロセッサ内部の記憶装置からの前記繰返し命令用の実行カウントの読出しを可能にする手段とを備えるシステム。
(9)前記繰返し命令の最初の実行の検出に応答して、前記プロセッサ内部の繰返しカウント・レジスタと前記プロセッサによってアクセス可能な命令情報バッファとのうちの少なくとも1つを備える前記記憶装置に、前記繰返し命令用の最初のカウント値をコピーする手段をさらに備える、上記(8)に記載の繰返し命令の追跡を可能にするシステム。
(10)前記繰返し命令フラグが、割込みを起こすためにセットされる繰返しイネーブル・フラグと、オーバフロー、トレース・フック命令、および性能監視カウンタのオーバフローによってセットされるバッファ満杯フラグとのうちの少なくとも1つである、上記(8)に記載の繰返し命令の追跡を可能にするシステム。
(11)前記繰返し命令用の実行カウントの読出しを可能にする手段が、
前記実行カウントを保持する、前記プロセッサ内部のCXレジスタと、前記実行カウントを保持する、前記プロセッサ内部の繰返しカウント・レジスタと、前記実行カウントおよび第1の実行カウントを保持する前記繰返しカウント・レジスタと第2の実行カウントを保持する前記CXレジスタの差を保持する、前記プロセッサを介してアクセス可能な命令情報バッファとのうちの少なくとも1つを備える前記記憶装置からの読出しを追跡プログラムが行うことを可能にする手段をさらに備える、上記(8)に記載の繰返し命令の追跡を可能にするシステム。
(12)前記プロセッサ内部の記憶装置として働く性能監視カウンタ中の前記実行カウントを追跡する手段と、
前記性能監視カウンタからの前記実行カウントの読出しを可能にする手段とをさらに備える、上記(8)に記載の繰返し命令の追跡を可能にするシステム。
(13)複数の繰返し命令の実行カウントを追跡した後でのみ、前記割込みを開始する手段をさらに備える、上記(12)に記載の繰返し命令の追跡を可能にするシステム。
(14)割込みの検出に応答して、追跡プログラムが前記記憶装置からの繰返し命令の実行カウントおよび実行されたアドレスを固定バッファに読み出すことを可能にする手段と、
前記実行カウントを実行ファイル中の特定の繰返し命令にマッピングするために、前記実行されたアドレスと、前記実行されたアドレスに格納された前記実行ファイルの命令とのマッチングを制御する手段とをさらに備える、上記(8)に記載の繰返し命令の追跡を可能にするシステム。
(15)繰返し命令の追跡を制御する方法であって、
プロセッサ内で割込みを起こすように第1の順次繰返し命令を変更すること、
前記プロセッサ内での前記割込みの検出に応答して、前記繰返し命令を追跡し、前記繰返し命令を割込みから戻るように変更すること、および
前記第1の順次繰返し命令を渡す分岐割込みの検出に応答して、前記繰返し命令を復元し、次の順次繰返し命令を割込みを起こすように変更することを含む方法。
本発明を実施することができる、コンピュータ・システムの一実施形態を示すブロック図である。 図1に示すコンピュータ・システムなどのコンピューティング・システム内部で使用することができる、プロセッサおよびメモリ・サブシステム内の一般的な構造を示すブロック図である。 本発明の方法、システム、およびプログラムによる、コンピュータ・システム内部のソフトウェア構成要素を示し、ソフトウェアの機能層の間の論理関係を示すブロック図である。 本発明の方法、システム、およびプログラムによる、追跡機構によって解析されるデータ処理システム内のソフトウェア構成要素間の関係を示すブロック図である。 本発明の方法、システム、およびプログラムによる、追跡プログラムの一般的なフェーズを示す、高レベルの論理フロー図である。 本発明の方法、システム、およびプログラムによる、繰返し命令に関する実行情報を明らかにするのに使用することができる、プロセッサ内部の繰返し命令レジスタを示すブロック図である。 本発明の方法、システム、およびプログラムによる、繰返し命令の追跡が可能なプロセッサを示すブロック図である。 プロセッサ内部で繰返しイネーブル・フラグを使用するための、処理およびプログラムを示す高レベルの論理フロー図である。 完了した繰返し命令を追跡するために、プロセッサ内部で繰返しイネーブル・フラグを使用するための、処理およびプログラムを示す高レベルの論理フロー図である。 本発明の方法、システム、およびプログラムによる、繰返し命令を追跡し格納することが可能なプロセッサを示すブロック図である。 本発明の方法、システム、およびプログラムによる、繰返し命令を追跡してプロセッサの外部にあるメモリに格納することが可能なプロセッサを示すブロック図である。 バッファ内の繰返し命令カウントを追跡するために、繰返しイネーブル・フラグを使用する処理およびプログラムを示す高レベルの論理フロー図である。 本発明の方法、システム、およびプログラムによる、繰返し命令の追跡を制御することが可能なプロセッサを示すブロック図である。 性能監視カウンタを使用して、繰返し命令を追跡するために、割込みを制御する処理およびプログラムを示す高レベルの論理フロー図である。 複数の性能監視カウンタを介して繰返し命令を追跡するために割込みを制御する処理およびプログラムを示す高レベルの論理フロー図である。 アプリケーション中で一度に1つの繰返し命令にトレース・フックを挿入する処理およびプログラムを示す高レベルの論理フロー図である。
符号の説明
10 コンピュータ・システム
11 入出力(I/O)コントローラ
12 プロセッサ
14 ランダム・アクセス・メモリ(RAM)
16 読出し専用メモリ(ROM)
18 大容量記憶装置
22 バス
24 ディスプレイ
26 キーボード
28 音声入出力装置
30 カーソル制御装置
32 通信インタフェース
34 ネットワーク・リンク
37 インターネット・サービス・プロバイダ(ISP)
38 インターネット
39 サーバ
110 階層メモリ
112 レベル2キャッシュ
116 不揮発性メモリ
122 命令キャッシュ
124 データ・キャッシュ
126 汎用データ・レジスタ
128 汎用制御レジスタ
130 命令取出しユニット
132 命令復号ユニット
134 順序付けユニット
136 完了ユニット
138 実行ユニット
139 カウント・レジスタ(CX)、CXレジスタ
140 分岐予測ユニット
142 割込み制御ユニット
144 性能モニタ
146 カウンタ・レジスタ
148 制御レジスタ
150 追跡プログラム
151 アプリケーション・プログラム
152 カーネル
180 プロセッサ
182 繰返しカウント・レジスタ
190 プロセッサ
192 割込み制御ユニット
196 制御レジスタ
197 選択分岐イネーブル(TBE)フラグ
198 繰返しイネーブル(RE)フラグ
199 単一ステップ・イネーブル(SSE)フラグ
200 繰返し割込みハンドラ
250 プロセッサ
252 割込み制御ユニット
254 RE満杯フラグ
256 終端ポインタ
258 先頭ポインタ
259 繰返し命令情報バッファ、命令情報バッファ
260 プロセッサ
264 満杯フラグ
266 ネクスト・レジスタ
268 IBサイズ・レジスタ
269 繰返し命令情報バッファ・ポインタ、繰返し命令バッファ・ポインタ
290 プロセッサ
292 性能モニタ
294 カウンタ・レジスタ
296 繰返し発生カウンタ
298 繰返し実行カウンタ

Claims (15)

  1. 繰返し命令の追跡を可能にする方法であって、
    プロセッサ内部で繰返し命令を実行すること、
    前記繰返し命令の最後の実行中にセットされた繰返し命令フラグの検出に応答して、前記プロセッサ内部で割込みを開始すること、および
    前記割込み中に、前記プロセッサ内部の記憶装置からの前記繰返し命令用の実行カウントの読出しを可能にすることを含む方法。
  2. 前記繰返し命令の最初の実行の検出に応答して、前記プロセッサ内部の繰返しカウント・レジスタと前記プロセッサによってアクセス可能な命令情報バッファとのうちの少なくとも1つを備える前記記憶装置に、前記繰返し命令用の最初のカウント値をコピーすることをさらに含む、請求項1に記載の繰返し命令の追跡を可能にする方法。
  3. 前記繰返し命令フラグが、割込みを起こすためにセットされる繰返しイネーブル・フラグと、オーバフロー、トレース・フック命令、および性能監視カウンタのオーバフローによってセットされるバッファ満杯フラグとのうちの少なくとも1つである、請求項1に記載の繰返し命令の追跡を可能にする方法。
  4. 前記繰返し命令用の実行カウントの読出しを可能にすることが、
    前記実行カウントを保持する、前記プロセッサ内部のCXレジスタと、前記実行カウントを保持する、前記プロセッサ内部の繰返しカウント・レジスタと、前記実行カウントおよび第1の実行カウントを保持する前記繰返しカウント・レジスタと第2の実行カウントを保持する前記CXレジスタの差を保持する、前記プロセッサを介してアクセス可能な命令情報バッファとのうちの少なくとも1つを備える前記記憶装置からの読出しを追跡プログラムが行うことを可能にすることをさらに含む、請求項1に記載の繰返し命令の追跡を可能にする方法。
  5. 前記プロセッサ内部の記憶装置として働く性能監視カウンタ中の前記実行カウントを追跡すること、および
    前記性能監視カウンタからの前記実行カウントの読出しを可能にすることをさらに含む、請求項1に記載の繰返し命令の追跡を可能にする方法。
  6. 複数の繰返し命令の実行カウントを追跡した後でのみ、前記割込みを開始することをさらに含む、請求項5に記載の繰返し命令の追跡を可能にする方法。
  7. 割込みの検出に応答して、追跡プログラムが前記記憶装置からの繰返し命令の実行カウントおよび実行されたアドレスを固定バッファに読み出すことを可能にすること、および
    前記実行カウントを実行ファイル中の特定の繰返し命令にマッピングするために、前記実行されたアドレスと、前記実行されたアドレスに格納された前記実行ファイルの命令とのマッチングを制御することをさらに含む、請求項1に記載の繰返し命令の追跡を可能にする方法。
  8. 繰返し命令の追跡を可能にするシステムであって、
    追跡プログラムによって追跡可能なプロセッサと、
    前記プロセッサ内部で繰返し命令を実行する手段と、
    前記繰返し命令の最後の実行中にセットされた繰返し命令フラグの検出に応答して、前記プロセッサ内部で割込みを開始する手段と、
    前記割込み中に、前記プロセッサ内部の記憶装置からの前記繰返し命令用の実行カウントの読出しを可能にする手段とを備えるシステム。
  9. 前記繰返し命令の最初の実行の検出に応答して、前記プロセッサ内部の繰返しカウント・レジスタと前記プロセッサによってアクセス可能な命令情報バッファとのうちの少なくとも1つを備える前記記憶装置に、前記繰返し命令用の最初のカウント値をコピーする手段をさらに備える、請求項8に記載の繰返し命令の追跡を可能にするシステム。
  10. 前記繰返し命令フラグが、割込みを起こすためにセットされる繰返しイネーブル・フラグと、オーバフロー、トレース・フック命令、および性能監視カウンタのオーバフローによってセットされるバッファ満杯フラグとのうちの少なくとも1つである、請求項8に記載の繰返し命令の追跡を可能にするシステム。
  11. 前記繰返し命令用の実行カウントの読出しを可能にする手段が、
    前記実行カウントを保持する、前記プロセッサ内部のCXレジスタと、前記実行カウントを保持する、前記プロセッサ内部の繰返しカウント・レジスタと、前記実行カウントおよび第1の実行カウントを保持する前記繰返しカウント・レジスタと第2の実行カウントを保持する前記CXレジスタの差を保持する、前記プロセッサを介してアクセス可能な命令情報バッファとのうちの少なくとも1つを備える前記記憶装置からの読出しを追跡プログラムが行うことを可能にする手段をさらに備える、請求項8に記載の繰返し命令の追跡を可能にするシステム。
  12. 前記プロセッサ内部の記憶装置として働く性能監視カウンタ中の前記実行カウントを追跡する手段と、
    前記性能監視カウンタからの前記実行カウントの読出しを可能にする手段とをさらに備える、請求項8に記載の繰返し命令の追跡を可能にするシステム。
  13. 複数の繰返し命令の実行カウントを追跡した後でのみ、前記割込みを開始する手段をさらに備える、請求項12に記載の繰返し命令の追跡を可能にするシステム。
  14. 割込みの検出に応答して、追跡プログラムが前記記憶装置からの繰返し命令の実行カウントおよび実行されたアドレスを固定バッファに読み出すことを可能にする手段と、
    前記実行カウントを実行ファイル中の特定の繰返し命令にマッピングするために、前記実行されたアドレスと、前記実行されたアドレスに格納された前記実行ファイルの命令とのマッチングを制御する手段とをさらに備える、請求項8に記載の繰返し命令の追跡を可能にするシステム。
  15. 繰返し命令の追跡を制御する方法であって、
    プロセッサ内で割込みを起こすように第1の順次繰返し命令を変更すること、
    前記プロセッサ内での前記割込みの検出に応答して、前記繰返し命令を追跡し、前記繰返し命令を割込みから戻るように変更すること、および
    前記第1の順次繰返し命令を渡す分岐割込みの検出に応答して、前記繰返し命令を復元し、次の順次繰返し命令を割込みを起こすように変更することを含む方法。
JP2003417339A 2002-12-19 2003-12-15 繰返し命令の追跡許可 Expired - Fee Related JP3731887B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/325,078 US7062684B2 (en) 2002-12-19 2002-12-19 Enabling tracing of a repeat instruction

Publications (2)

Publication Number Publication Date
JP2004199685A true JP2004199685A (ja) 2004-07-15
JP3731887B2 JP3731887B2 (ja) 2006-01-05

Family

ID=32593645

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003417339A Expired - Fee Related JP3731887B2 (ja) 2002-12-19 2003-12-15 繰返し命令の追跡許可

Country Status (3)

Country Link
US (1) US7062684B2 (ja)
JP (1) JP3731887B2 (ja)
CN (1) CN1252594C (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010092178A (ja) * 2008-10-06 2010-04-22 Nippon Telegr & Teleph Corp <Ntt> 解析装置、解析方法及び解析プログラム

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7287245B2 (en) * 2003-09-17 2007-10-23 Faraday Technology Corp. Method for real-time instruction information tracing
US6925424B2 (en) * 2003-10-16 2005-08-02 International Business Machines Corporation Method, apparatus and computer program product for efficient per thread performance information
US7412693B2 (en) * 2004-03-05 2008-08-12 Sun Microsystems, Inc. Method and apparatus for determining frequency of execution for compiled methods within a virtual machine
US20060047495A1 (en) * 2004-09-01 2006-03-02 Jesus Sanchez Analyzer for spawning pairs in speculative multithreaded processor
US7380241B2 (en) * 2004-12-07 2008-05-27 International Business Machines Corporation Scalable and improved profiling of software programs
US8161461B2 (en) * 2005-03-24 2012-04-17 Hewlett-Packard Development Company, L.P. Systems and methods for evaluating code usage
US7454666B1 (en) * 2005-04-07 2008-11-18 Sun Microsystems, Inc. Real-time address trace generation
US7433803B2 (en) * 2005-04-27 2008-10-07 Freescale Semiconductor, Inc. Performance monitor with precise start-stop control
US7698690B2 (en) * 2005-11-10 2010-04-13 International Business Machines Corporation Identifying code that wastes time performing redundant computation
US7519797B1 (en) * 2006-11-02 2009-04-14 Nividia Corporation Hierarchical multi-precision pipeline counters
JP4836811B2 (ja) * 2007-01-26 2011-12-14 株式会社東芝 パフォーマンスモニタ装置および情報処理装置
US8055886B2 (en) 2007-07-12 2011-11-08 Texas Instruments Incorporated Processor micro-architecture for compute, save or restore multiple registers and responsive to first instruction for repeated issue of second instruction
WO2009058042A1 (en) * 2007-10-29 2009-05-07 Intel Corporation A method of external performance monitoring for virtualized environments
GB2487355B (en) * 2011-01-13 2020-03-25 Advanced Risc Mach Ltd Processing apparatus, trace unit and diagnostic apparatus
JP2012150661A (ja) * 2011-01-19 2012-08-09 Toshiba Corp プロセッサ動作検査システム、及びその検査方法
GB2489000B (en) 2011-03-14 2019-09-11 Advanced Risc Mach Ltd Diagnosing code using single step execution
US8910125B2 (en) * 2012-09-27 2014-12-09 International Business Machines Corporation Monitoring software performance
CN103853591B (zh) * 2012-11-30 2017-06-16 国际商业机器公司 用于虚拟机管理器获取异常指令的装置和控制方法
US9058415B1 (en) * 2013-03-15 2015-06-16 Google Inc. Counting events using hardware performance counters and annotated instructions
CN104216812B (zh) * 2014-08-29 2017-04-05 杭州华为数字技术有限公司 一种性能监控单元多事件统计的方法和装置
CN108804139B (zh) * 2017-06-16 2020-10-20 上海兆芯集成电路有限公司 可编程设备及其操作方法和计算机可用介质
CN107273198B (zh) * 2017-06-16 2018-12-18 北京得瑞领新科技有限公司 一种ssd控制芯片的中断控制方法、装置及ssd设备
GB2571947B (en) * 2018-03-13 2020-09-16 Advanced Risc Mach Ltd Tracing branch instructions
US11023397B2 (en) * 2019-03-25 2021-06-01 Alibaba Group Holding Limited System and method for monitoring per virtual machine I/O
CN111782273B (zh) * 2020-07-16 2022-07-26 中国人民解放军国防科技大学 一种提高重复程序执行性能的软硬件协同缓存装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4910663A (en) * 1987-07-10 1990-03-20 Tandem Computers Incorporated System for measuring program execution by replacing an executable instruction with interrupt causing instruction
JPH0322146A (ja) 1989-06-20 1991-01-30 Toshiba Corp マイクロプログラム制御装置
JPH0454636A (ja) 1990-06-25 1992-02-21 Hitachi Ltd プロセッサ
JPH05173779A (ja) 1991-12-25 1993-07-13 Toshiba Corp デジタル演算集積回路
US5359608A (en) 1992-11-24 1994-10-25 Amdahl Corporation Apparatus for activation and deactivation of instruction tracing through use of conditional trace field in branch instructions
US5446876A (en) 1994-04-15 1995-08-29 International Business Machines Corporation Hardware mechanism for instruction/data address tracing
US5574937A (en) 1995-01-30 1996-11-12 Intel Corporation Method and apparatus for improving instruction tracing operations in a computer system
US5944841A (en) 1997-04-15 1999-08-31 Advanced Micro Devices, Inc. Microprocessor with built-in instruction tracing capability
US6003128A (en) * 1997-05-01 1999-12-14 Advanced Micro Devices, Inc. Number of pipeline stages and loop length related counter differential based end-loop prediction
US5933626A (en) 1997-06-12 1999-08-03 Advanced Micro Devices, Inc. Apparatus and method for tracing microprocessor instructions
EP0992907B1 (en) * 1998-10-06 2005-09-28 Texas Instruments Inc. Trace fifo management
US6253338B1 (en) * 1998-12-21 2001-06-26 International Business Machines Corporation System for tracing hardware counters utilizing programmed performance monitor to generate trace interrupt after each branch instruction or at the end of each code basic block
JP3842474B2 (ja) * 1999-02-02 2006-11-08 株式会社ルネサステクノロジ データ処理装置
US6915416B2 (en) * 2000-12-28 2005-07-05 Texas Instruments Incorporated Apparatus and method for microcontroller debugging
US6976158B2 (en) * 2001-06-01 2005-12-13 Microchip Technology Incorporated Repeat instruction with interrupt
US7039793B2 (en) * 2001-10-23 2006-05-02 Ip-First, Llc Microprocessor apparatus and method for accelerating execution of repeat string instructions

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010092178A (ja) * 2008-10-06 2010-04-22 Nippon Telegr & Teleph Corp <Ntt> 解析装置、解析方法及び解析プログラム

Also Published As

Publication number Publication date
CN1252594C (zh) 2006-04-19
CN1508690A (zh) 2004-06-30
US20040123084A1 (en) 2004-06-24
JP3731887B2 (ja) 2006-01-05
US7062684B2 (en) 2006-06-13

Similar Documents

Publication Publication Date Title
JP3731887B2 (ja) 繰返し命令の追跡許可
US6446029B1 (en) Method and system for providing temporal threshold support during performance monitoring of a pipelined processor
JP3531731B2 (ja) 投機的プロセッサ内で非投機的イベントをカウントするための方法およびシステム
US9063804B2 (en) System to profile and optimize user software in a managed run-time environment
US6574727B1 (en) Method and apparatus for instruction sampling for performance monitoring and debug
US8447962B2 (en) Gathering and scattering multiple data elements
JP3113855B2 (ja) データ処理システムにおけるパフォーマンス監視
Horowitz et al. Informing memory operations: Providing memory performance feedback in modern processors
TWI304548B (en) Method, system, computer readable recording medium recording instructions for counting instruction execution and data accesses for specific types of instructions
US20030135719A1 (en) Method and system using hardware assistance for tracing instruction disposition information
US20030135720A1 (en) Method and system using hardware assistance for instruction tracing with secondary set of interruption resources
JP6138142B2 (ja) 被管理ランタイムのためのハードウェア・ベース・ランタイム計装機構
US20050154812A1 (en) Method and apparatus for providing pre and post handlers for recording events
JP6058012B2 (ja) ランタイム・インスツルメンテーションを使用してプロセッサのプロセッサ特性情報をモニターするためのコンピュータ・プログラム・プロダクト、方法、およびシステム(プロセッサ特性のランタイム・インスツルメンテーション・モニタリング)
US6539502B1 (en) Method and apparatus for identifying instructions for performance monitoring in a microprocessor
JP2005018760A (ja) アプリケーションのプロファイリングを容易にするシステムおよび方法
US7506207B2 (en) Method and system using hardware assistance for continuance of trap mode during or after interruption sequences
US6415378B1 (en) Method and system for tracking the progress of an instruction in an out-of-order processor
US20080155339A1 (en) Automated tracing
KR20170039212A (ko) 커널 모듈을 위한 멀티코어 메모리 데이터 레코더
US20030135718A1 (en) Method and system using hardware assistance for instruction tracing by revealing executed opcode or instruction
Pohlack Runtime monitoring for open real-time systems.
US20220100626A1 (en) Monitoring performance cost of events

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050502

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050517

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050729

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20050729

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20050729

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

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20050920

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051007

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees