JP2015510153A - ランタイム・インストルメンテーション指向サンプリング - Google Patents

ランタイム・インストルメンテーション指向サンプリング Download PDF

Info

Publication number
JP2015510153A
JP2015510153A JP2014543661A JP2014543661A JP2015510153A JP 2015510153 A JP2015510153 A JP 2015510153A JP 2014543661 A JP2014543661 A JP 2014543661A JP 2014543661 A JP2014543661 A JP 2014543661A JP 2015510153 A JP2015510153 A JP 2015510153A
Authority
JP
Japan
Prior art keywords
instruction
runtime instrumentation
sample
instrumentation
execution
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
JP2014543661A
Other languages
English (en)
Other versions
JP6153533B2 (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.)
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 JP2015510153A publication Critical patent/JP2015510153A/ja
Application granted granted Critical
Publication of JP6153533B2 publication Critical patent/JP6153533B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control

Landscapes

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

Abstract

【課題】 ランタイム・インストルメンテーション指向サンプリングを実施するための方法、システム、及びコンピュータ・プログラム製品を提供する。【解決手段】 本発明の実施形態は、ランタイム・インストルメンテーション指向サンプリングの実施に関する。本発明の態様は、ランタイム・インストルメンテーション指向サンプリングを実施するための方法を含む。この方法は、命令ストリームからrun−time insutrumentation next(RINEXT)命令をフェッチすることを含む。命令ストリームは、RINEXT命令、続いてプログラム順の次の順次命令を含む。この方法は、プロセッサによりRINEXT命令を実行することをさらに含む。実行することは、プログラム実行中、現在のランタイム・インストルメンテーション状態が、ランタイム・インストルメンテーション情報を報告するためのサンプル・ポイントの設定を可能にするかどうかを判断することを含む。現在のランタイム・インストルメンテーション状態がサンプル・ポイントの設定を可能にすることに基づいて、NSIは、ランタイム・インストルメンテーション・イベントを引き起こすためのサンプル命令となる。NSIサンプル命令を実行すること基づいて、ランタイム・インストルメンテーション・イベントは、ランタイム・インストルメンテーション情報を、報告グループとしてランタイム・インストルメンテーション・プログラム・バッファに記録させる。【選択図】 図13

Description

本発明は、一般に、コンピューティング環境内の処理に関し、より具体的には、ランタイム・インストルメンテーション(run-time-instrumentation)を用いた、収集したイベントの指向サンプリング(directed sampling)に関する。
コンピュータ・プロセッサは、ますます複雑化する分岐予測及び命令キャッシング論理を用いて、トランザクションを実行する。これらのプロセスは、命令スループット、従って処理性能を高めるために導入されてきた。性能を向上させるための論理の導入は、特定のソフトウェア・アプリケーションがコンピュータ・プロセッサ上でどのように実行されるかを確実に予測することが困難になる。ソフトウェア開発プロセスの際、多くの場合、機能と性能との間はバランスされている。ソフトウェアは、そのソフトウェアを実行している基礎をなすハードウェアから1又は複数の抽象化レベルで実行される。ハードウェアが仮想化されるとき、付加的な抽象化層が導入される。性能向上論理及び種々の抽象化層が導入されると、プログラムが実行されているときにハードウェア・レベルで何が実際に行われているかを完全に理解することは困難である。この情報がない場合、ソフトウェア開発者は、ソフトウェア・アプリケーションを最適化するために、実行期間、メモリの使用、スレッド数等、より抽象的なメソッドを使用する。
ハードウェア特有の情報が利用可能であるとき、この情報は、典型的には、事後に開発者に対して、且つ、高レベルで、及び/又は他のプログラムの活動及びオペレーティング・システムが散りばめられて集合体として提供され、そのため、ソフトウェア・アプリケーションの効率及び精度に影響を及ぼし得る問題の識別が困難になる。
実施形態は、ランタイム・インストルメンテーション指向サンプリングを実施するための方法、システム、及びコンピュータ・プログラム製品を含む。コンピュータ・プログラム製品は、処理回路により可読であり、且つ、方法を実施するための、処理回路により実施するための命令を格納する有形ストレージ媒体を含む。この方法は、命令ストリームからrun−time insutrumentation next(RINEXT)命令をフェッチすることを含む。命令ストリームは、RINEXT命令、続いてプログラム順の次の順次命令(NSI:next, sequential instruction)を含む。この方法は、プロセッサによりRINEXT命令を実行することをさらに含む。実行することは、プログラム実行中、現在のランタイム・インストルメンテーション状態が、ランタイム・インストルメンテーション情報を報告するためのサンプル・ポイントの設定を可能にするかどうかを判断することを含む。現在のランタイム・インストルメンテーション状態がサンプル・ポイントの設定を可能にすることに基づいて、NSIは、ランタイム・インストルメンテーション・イベントを引き起こすためのサンプル命令となる。NSIサンプル命令を実行すること基づいて、ランタイム・インストルメンテーション・イベントは、ランタイム・インストルメンテーション情報を、報告グループとしてランタイム・インストルメンテーション・プログラム・バッファに記録させる。
ランタイム・インストルメンテーション指向サンプリングを実施するための方法は、命令ストリームからrun−time insutrumentation next(RINEXT)命令をフェッチすることを含む。命令ストリームは、命令ストリームは、RINEXT命令、続いてプログラム順の次の順次命令を含む。この方法は、プロセッサによりRINEXT命令を実行することをさらに含む。実行することは、プログラム実行中、現在のランタイム・インストルメンテーション状態が、ランタイム・インストルメンテーション情報を報告するためのサンプル・ポイントの設定を可能にするかどうかを判断することを含む。現在のランタイム・インストルメンテーション状態がサンプル・ポイントの設定を可能にすることに基づいて、NSIは、ランタイム・インストルメンテーション・イベントを引き起こすためのサンプル命令となる。NSIサンプル命令を実行すること基づいて、ランタイム・インストルメンテーション・イベントは、ランタイム・インストルメンテーション情報を、報告グループとしてランタイム・インストルメンテーション・プログラム・バッファに記録させる。
ランタイム・インストルメンテーション指向サンプリングを実装するためのシステムは、メモリと、方法を実施するように構成されたランタイム・インストルメンテーション・モジュールを含むプロセッサとを含む。ランタイム・インストルメンテーション・モジュールは、方法を実施するように構成される。この方法は、命令ストリームからrun−time insutrumentation next(RINEXT)命令をフェッチすることを含む。命令ストリームは、RINEXT命令、続いてプログラム順の次の順次命令を含む。この方法は、プロセッサによりRINEXT命令を実行することをさらに含む。実行することは、プログラム実行中、現在のランタイム・インストルメンテーション状態が、ランタイム・インストルメンテーション情報を報告するためのサンプル・ポイントの設定を可能にするかどうかを判断することを含む。現在のランタイム・インストルメンテーション状態がサンプル・ポイントの設定を可能にすることに基づいて、NSIは、ランタイム・インストルメンテーション・イベントを引き起こすためのサンプル命令となる。NSIサンプル命令を実行すること基づいて、ランタイム・インストルメンテーション・イベントは、ランタイム・インストルメンテーション情報を、メモリ内の報告グループとしてランタイム・インストルメンテーション・プログラム・バッファに記録させる。
本発明の技術を通じて、付加的な特徴及び利点が実現される。本発明の他の実施形態及び側面は、本明細書において詳細に説明され、特許請求される本発明の一部と見なされる。利点及び特徴に関して本発明をより良好に理解するために、説明及び図面を参照されたい。
本発明と見なされる対象は、明細書の結論であるところの、本明細書の最後にある特許請求の範囲において具体的に示され、明確に特許請求されている。本発明の上記及び他の特徴、並びに利点は、添付図面と関連して用いられる以下の詳細な説明から明らかである。
1つの実施形態における例示的なホスト・コンピュータ・システムを示す図である。 1つの実施形態における例示的なエミュレーション・ホスト・コンピュータ・システムを示す図である。 1つの実施形態における例示的なコンピュータ・システムを示す図である。 1つの実施形態における例示的なコンピュータ・ネットワークを示す図である。 1つの実施形態におけるコンピュータ・システムの要素を示す図である。 1つの実施形態におけるコンピュータ・システムの詳細な要素を示す。 1つの実施形態におけるコンピュータ・システムの詳細な要素を示す。 1つの実施形態におけるコンピュータ・システムの詳細な要素を示す。 1つの実施形態による、プロセッサのランタイム・インストルメンテーションのためのシステムの概略図を示す。 1つの実施形態における、特権状態(privileged state)により設定可能な制御を含むランタイム・インストルメンテーション制御制御ブロック(RICCB)の一部を示す。 1つの実施形態における、準特権(semi-privileged)ビット(K)が1に設定されているときのRICCB制御ブロックの一部を示す。 1つの実施形態による、報告グループを示す。 1つの実施形態による、ランタイム・インストルメンテーションの指向サンプリングを実施するためのプロセス・フローを示す。 1つの実施形態によるコンピュータ・プログラム製品を示す。
本発明の実施形態は、ランタイム・インストルメンテーションを用いた、収集したイベントの指向サンプリングを可能にする。ランタイム・インストルメンテーションは、単に実験室において又はオフライン分析のために使用できるだけではなく、プロセッサ(CPU)上のプログラム制御下でプログラム実行中、顧客環境においても使用できるファシリティである。プログラムを動作させるためにフェッチされ、実行される一連の命令は、命令ストリームと呼ぶことができる。データ収集の柔軟性を高めるために、構成可能な間隔(interval)に基づいてイベントを収集することができる。プログラムにより設定可能なCPU制御が、ランタイム・インストルメンテーションを管理する。ランタイム・インストルメンテーションは、通常、通常のサンプリング基準に基づいてイベントを報告するが、run−time instumentation next(RINEXT)命令を使用することにより、インストルメント化された(instrumented)命令ストリーム内の関心ある付加的なポイントを指向させることができる。通常のサンプリング間隔は、命令カウント又はサイクル・カウントのいずれかにより決定される。後の分析を行う場合に、インストルメント化命令ストリーム内の特定の情報は、非常に有用である。インストルメンテーションの動作中、インストルメント化命令ストリーム内の特定の命令に伴われた付加的な指向サンプル・ポイントを作成できることで、分析後に利用可能な重要な情報の量が実質的に増大できる。
run−time instumentation next(RINEXT)命令は、インストルメント化されたプログラムが、次の順次命令(NSI)の実行の完了時にサンプル・ポイントを指定することを可能にするように定められる。通常間隔サンプリングに加えて、この指向サンプリングにより、追加の、サンプル・ポイントにしっかりと焦点が合わせられた報告が可能になる。通常サンプリングが進行する間、RINEXTの使用を、インストルメント化命令ストリームの高精度プローブとみなすことができる。RINEXTの実行の各々がNSIサンプル・ポイントを決定し、従って、サンプル・ポイントに至って収集されたインストルメンテーション・データが報告される。特定の命令のサンプル・ポイントを配置するのに何が重要かを判断するのは、インストルメント化されたプログラムである。各サンプル・ポイントは、通常間隔サンプルであっても、又はRINEXTの実行から決定された指向サンプル・ポイントであっても、収集バッファから最近収集されたデータ及びサンプル・ポイントにおける命令の実行に伴うデータを含む多重記録された報告グループの格納をもたらす。
図1は、1つの実施形態におけるホスト・コンピュータ・システム50の代表的なコンポーネントを示す。コンピュータ・システムにおいて、コンポーネントの他の構成を用いることもできる。代表的なホスト・コンピュータ・システム50は、主ストア(コンピュータ・メモリ)2と通信する1つ又は複数のプロセッサ1、並びにストレージ・デバイス11及び他のコンピュータ又はSAN等と通信するためのネットワーク10へのI/Oインターフェースを含む。プロセッサ1は、アーキテクチャ化された(architected)命令セット及びアーキテクチャ化された機能を有するアーキテクチャに準拠している。プロセッサ1は、プログラム・アドレス(仮想アドレス)をメモリの実アドレスに変換するための動的アドレス変換(dynamic address translation、DAT)3を有することができる。DAT3は、典型的には、変換をキャッシュに入れるための変換ルックアサイド・バッファ(translation lookaside buffer、TLB)7を含むので、コンピュータ・メモリ2のブロックへの後のアクセスでは、アドレス変換の遅延を要しない。典型的には、キャッシュ9が、コンピュータ・メモリ2とプロセッサ1との間に用いられる。キャッシュ9は、1つより多いCPUが利用可能な大型キャッシュと、大型キャッシュと各CPUとの間の、より小型でより高速な(下位レベルの)キャッシュとを有する階層とすることができる。幾つかの実施形態においては、下位レベル・キャッシュが分割されて、命令のフェッチ及びデータ・アクセスのための別個の下位レベル・キャッシュを与える。1つの実施形態において、命令は、キャッシュ9を介して、命令フェッチ・ユニット4により、コンピュータ・メモリ2からフェッチされる。命令は、命令デコード・ユニット6においてデコードされ、命令実行ユニット8にディスパッチされる(幾つかの実施形態においては、他の命令を用いて)。典型的には、例えば、算術演算実行ユニット、浮動小数点実行ユニット、及び分岐命令実行ユニットなどの幾つかの命令実行ユニット8が用いられる。命令は、命令実行ユニット8により実行され、必要に応じて、命令が指定したレジスタ又はコンピュータ・メモリ2からオペランドにアクセスする。コンピュータ・メモリ2からオペランドにアクセスする(オペランドをロード又はストア(格納)する)場合、典型的には、実行される命令の制御下で、ロード・ストア・ユニット5がアクセスを処理する。命令は、ハードウェア回路又は内部のマイクロコード(ファームウェア)において、又はその両方の組み合わせによって実行することができる。
図2において、図1のホスト・コンピュータ・システム50などのホスト・アーキテクチャのホスト・コンピュータ・システムをエミュレートする、エミュレートされたホスト・コンピュータ・システム21が提供される。エミュレートされたホスト・コンピュータ・システム21において、ホスト・プロセッサ(CPU)1は、エミュレートされたホスト・プロセッサ(又は仮想ホスト・プロセッサ)29であり、ホスト・コンピュータ・システム50のプロセッサ1のものとは異なるネイティブ命令セット・アーキテクチャを有するネイティブ・プロセッサ27を含む。エミュレートされたホスト・コンピュータ・システム21は、ネイティブ・プロセッサ27がアクセス可能なメモリ22を有する。1つの実施形態において、メモリ22は、コンピュータ・メモリ2の部分と、エミュレーション・ルーチン・メモリ23の部分とに区分化される。コンピュータ・メモリ2は、ホスト・コンピュータ・アーキテクチャに従って、エミュレートされたホスト・コンピュータ・システム21のプログラムに利用可能である。ネイティブ・プロセッサ27は、エミュレートされたプロセッサ29のもの以外のアーキテクチャのアーキテクチャ化命令セットのネイティブ命令、エミュレーション・ルーチン・メモリ23から取得されたネイティブ命令を実行し、アクセスされたホスト命令をデコードして、アクセスされたホスト命令の機能をエミュレートするためのネイティブ命令実行ルーチンを判断することができるシーケンス及びアクセス/デコード・ルーチンにおいて取得される1つ又は複数の命令を用いることにより、コンピュータ・メモリ2内のプログラムによる実行のためにホスト命令にアクセスすることができる。ホスト・コンピュータ・システム50のアーキテクチャのために定められた、例えば、汎用レジスタ、制御レジスタ、動的アドレス変換、及びI/Oサブシステムのサポート、並びにプロセッサ・キャッシュといったファシリティを含む他のファシリティを、アーキテクチャ化ファシリティ・ルーチンによってエミュレートすることができる。エミュレーション・ルーチンは、エミュレーション・ルーチンの性能を高めるために、(汎用レジスタ、及び仮想アドレスの動的変換などの)ネイティブ・プロセッサ27において利用可能な機能を利用することもできる。専用ハードウェア及びオフロード・エンジンを設けて、ホスト・コンピュータ・システム50の機能をエミュレートする際にネイティブ・プロセッサ27を補助することもできる。
メインフレームにおいて、アーキテクチャ化されたマシン命令は、通常、プログラマによって、多くの場合コンパイラ・アプリケーションを介して、今日では「C」プログラマによって用いられる。ストレージ媒体内に格納されたこれらの命令は、z/アーキテクチャのIBM(登録商標)サーバにおいて、又は代替的に他のアーキテクチャを実行するマシンにおいて、ネイティブに実行することができる。これらの命令は、既存の及び将来のIBM(登録商標)メインフレーム・サーバにおいて、及び、IBM(登録商標)の他のマシン(例えば、pSeries(登録商標)サーバ及びxSeires(登録商標)サーバ)上で、エミュレートすることができる。これらの命令は、IBM(登録商標)、Intel(登録商標)、AMD(商標)、Sun Microsystemsその他によって製造されたハードウェアを用いた種々のマシン上でLinux(登録商標)を実行しているマシンにおいて実行することができる。Z/Architecture(登録商標)のハードウェア上で実行することに加えて、Linux(登録商標)を用いること、並びに、一般に実行がエミュレーション・モードにある、Hercules、UMX、又はFundamental Software,Inc.(FSI)、又はPlatform Solutions,Inc.(PSI)によるエミュレーションを用いるマシンを使用することもできる。エミュレーション・モードにおいては、ネイティブ・プロセッサによって、エミュレーション・ソフトウェアが実行され、エミュレートされたプロセッサのアーキテクチャをエミュレートする。
エミュレートされたホスト・コンピュータ・システム21のコンポーネントの1つ又は複数は、「IBM(登録商標) z/Architecture Principles of Operation」、出版番号SA22−7832−08、第9版、2010年8月」に記載されており、その全体は、引用により本明細書に含まれるものである。IBMは、米国ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である。本明細書で使用される他の名称は、インターナショナル・ビジネス・マシーンズ・コーポレーション又は他の会社の登録商標、商標、又は製品名であり得る。
ネイティブ・プロセッサ27は、典型的に、エミュレートされたプロセッサのエミュレーションを実行するためにファームウェア又はネイティブ・オペレーティング・システムのいずれかを含むエミュレーション・ルーチン・メモリ23内に格納されたエミュレーション・ソフトウェアを実行する。エミュレーション・ソフトウェアは、エミュレートされたプロセッサ・アーキテクチャの命令のフェッチ及び実行を担当する。エミュレーション・ソフトウェアは、エミュレートされたプログラム・カウンタを維持し、命令の境を監視し続ける。エミュレーション・ソフトウェアは、一度の1つ又は複数のエミュレートされたマシン命令をフェッチし、ネイティブ・プロセッサ27により実行するために、1つ又は複数のエミュレートされたマシン命令を、対応するネイティブ・マシン命令のグループに変換することができる。これらの変換された命令をキャッシュに入れて、より高速の変換を達成することができる。エミュレーション・ソフトウェアは、エミュレートされたプロセッサ・アーキテクチャのアーキテクチャ規則を維持して、オペレーティング・システム及びエミュレートされたプロセッサのために書かれたアプリケーションが正確に動作することを保証する。さらに、エミュレーション・ソフトウェアは、これらに限られるものではないが、制御レジスタ、汎用レジスタ、浮動小数点レジスタ、例えばセグメント・テーブル及びページ・テーブルを含む動的アドレス変換機能、割り込み機構、コンテキスト・スイッチ機構、時刻(Time of Day、TOD)クロック、及びI/Oサブシステムへのアーキテクチャ化されたインターフェースを含む、エミュレートされたプロセッサのアーキテクチャによって識別されるリソースを提供し、オペレーティング・システム又はエミュレートされたプロセッサ29上で実行するように設計されたアプリケーション・プログラムが、エミュレーション・ソフトウェアを有するネイティブ・プロセッサ27上で実行できるようにする。
エミュレートされる特定の命令がデコードされ、個々の命令の機能を実行するためのサブルーチンが呼び出される。エミュレートされたプロセッサ1の機能をエミュレートするエミュレーション・ソフトウェアの機能は、例えば、「C」サブルーチン若しくはドライバにおいて、又は好ましい実施形態の説明を理解した後で当技術の範囲内にある特定のハードウェアのためドライバを提供する、他の何らかの方法で実装される。
1つの実施形態において、本発明は、ソフトウェア(ライセンス内部コード、ファームウェア、マイクロコード、ミリコード、ピココードなどと呼ばれる場合もあるが、そのいずれも本発明の1つ又は複数の態様と整合性がある)により実施することができる。図1を参照すると、本発明を具体化するソフトウェア・プログラム・コードには、ホスト・コンピュータ・システム50のCPU(中央演算処理ユニット)1としても知られるプロセッサにより、長期ストレージ媒体、CD−ROMドライブ、テープドライブ、又はハードドライブなどのストレージ・デバイス11からアクセスすることができる。ソフトウェア・プログラム・コードは、ディスケット、ハードドライブ、又はCD−ROMなどの、データ処理システムと共に使用するための種々の周知の媒体のいずれかの上で具体化することができる。コードは、こうした媒体上に分散させてもよく、又はコンピュータ・メモリ2からユーザに分散させてもよく、又は、上述した他のシステムのユーザが使用するために、ネットワーク10上の1つのコンピュータ・システムのストレージから他のコンピュータ・システムに分散させてもよい。
代替的に、コンピュータ・メモリ2においてプログラム・コードを具体化し、プロセッサ・バス(図示せず)を用いて、プロセッサ1によりプログラム・コードにアクセスすることができる。こうしたプログラム・コードは、種々のコンピュータ・コンポーネントの機能及び相互作用を制御するオペレーティング・システムと、1つ又は複数のアプリケーション・プログラムとを含む。プログラム・コードは、通常、ストレージ・デバイス11などの高密度媒体からコンピュータ・メモリ2にページングされ、そこでプロセッサ1による処理のために利用可能になる。ソフトウェア・プログラム・コードをメモリ内、物理的媒体上で具体化し、及び/又は、ネットワークを介してソフトウェア・コードを分散させる技術及び方法は周知であり、本明細書ではこれ以上論じない。プログラム・コードは、作成され、有形の媒体(これらに限定されるものではないが、電子メモリ・モジュール(RAM)、フラッシュ・メモリ、コンパクト・ディスク(CD)、DVD、磁気テープ等を含む)上に格納されたとき、「コンピュータ・プログラム製品」と呼ばれることが多い。コンピュータ・プログラム製品媒体は、典型的には、処理回路による実行のために、好ましくはコンピュータ・システム内の処理回路によって読み取り可能である。
図3は、本発明を実施することができる代表的なワークステーション又はサーバ・ハードウェア・システムを示す。図3のシステム100は、随意的に周辺機器を含む、パーソナル・コンピュータ、ワークステーション、又はサーバなどの代表的なベース・コンピュータ・システム101を含む。ベース・コンピュータ・システム101は、1つ又は複数のプロセッサ106と、周知の技術に従って1つ又は複数のプロセッサ106とベース・コンピュータ・システム101の他のコンポーネントを接続し、これらの間の通信を可能にするために用いられるバス(図示せず)とを含む。バスは、プロセッサ106を、メモリ105及びハードドライブ(例えば、磁気媒体、CD、DVD、及びフラッシュ・メモリのいずれかを含む)又はテープドライブを含むことができる長期ストレージ107に接続する。ベース・コンピュータ・システム101はまた、バスを介して、1つ又は複数のプロセッサ106を、キーボード104、マウス103、プリンタ/スキャナ110、及び/又はタッチ・センシティブ・スクリーン、デジタル化された入力パッド等のいずれかのユーザ・インターフェース機器とすることができる他のインターフェース機器といった、1つ又は複数のインターフェース機器に接続する、ユーザ・インターフェース・アダプタを含むこともできる。バスはまた、ディスプレイ・アダプタを介して、1つ又は複数のプロセッサを、LCDスクリーン又はモニタなどのディスプレイ装置102にも接続する。
ベース・コンピュータ・システム101は、ネットワーク109と通信することができるネットワーク・アダプタ108を介して、他のコンピュータ又はコンピュータのネットワークと通信することができる。例示的なネットワーク・アダプタは、通信チャネル、トークン・リング、イーサネット(登録商標)、又はモデムである。これに代えて、ベース・コンピュータ・システム101は、セルラー・デジタル・パケット・データ(CDPD)カードなどの無線インターフェースを用いて通信することができる。ベース・コンピュータ・システム101は、ローカル・エリア・ネットワーク(LAN)若しくは広域ネットワーク(WAN)内の上述した他のコンピュータと関連付けることができ、又は、別のコンピュータ等とのクライアント/サーバ構成におけるクライアントとすることができる。
図4は、本発明を実施することができるデータ処理ネットワーク200を示す。データ処理ネットワーク200は、各々が複数の個々のワークステーション201、202、203、204、及び/又は図3のベース・コンピュータ・システム101を含むことができる、無線ネットワーク及び有線ネットワークのような複数の個々のネットワークを含むことができる。さらに、当業者であれば理解するように、1つ又は複数のLANを含ませることができ、そこで、LANは、ホスト・プロセッサに結合された複数のインテリジェント・ワークステーションを含むことができる。
プログラミング・コード111をメモリ105において具体化し、プロセッサ・バスを用いてプロセッサ106により、このプログラミング・コード111にアクセスすることができる。こうしたプログラミング・コードは、種々のコンピュータ・コンポーネントの機能及び相互作用を制御するオペレーティング・システムと、1つ又は複数のアプリケーション・プログラム112とを含む。プログラム・コードは、通常、長期ストレージ107から高速メモリ105にページングされ、そこでプロセッサ106による処理のために利用可能になる。物理媒体上のソフトウェア・プログラミング・コードをメモリ内、で具体化する、及び/又は、ネットワークを介してソフトウェア・コードを分散させる技術及び方法は周知であり、本明細書ではこれ以上論じない。プログラム・コードは、有形の媒体(これらに限定されるものではないが、電子メモリ・モジュール(RAM)、フラッシュ・メモリ、コンパクト・ディスク(CD)、DVD、磁気テープ等を含む)上に作成され格納されたとき、「コンピュータ・プログラム製品」と呼ばれることが多い。コンピュータ・プログラム製品媒体は、典型的には、処理回路による実行のために、好ましくはコンピュータ・システム内の処理回路によって読み取り可能である。
プロセッサが最も容易に利用できるキャッシュ(通常、プロセッサの他のキャッシュよりも高速で小さい)は、最下位(L1又はレベル1)のキャッシュであり、主記憶部(メインメモリ)は、最上位レベルのキャッシュ(3つのレベルがある場合にはL3)である。最下位レベルのキャッシュは、実行されるマシン命令を保持する命令キャッシュ(I−キャッシュ)と、データ・オペランドを保持するデータ・キャッシュ(D−キャッシュ)とに分割されることが多い。
引き続き図4を参照すると、ネットワークはまた、ゲートウェイ・コンピュータ(クライアント・サーバ)206、又は(データ・リポジトリにアクセスすることができ、且つ、ワークステーション205から直接アクセスすることもできる)アプリケーシ・サーバ(遠隔サーバ)208などの、メインフレーム・コンピュータ又はサーバを含むこともできる。ゲートウェイ・コンピュータ206は、各々のネットワーク207へのエントリ・ポイントとして働く。ゲートウェイは、1つのネットワーキング・プロトコルを別のものに接続するときに必要とされる。ゲートウェイ・コンピュータ206は、通信リンクによって、別のネットワーク(例えば、インターネット207)に結合できることが好ましい。ゲートウェイ・コンピュータ206は、また、通信リンクを用いて、1つ又は複数のワークステーション101、201、202、203及び204に直接結合することもできる。ゲートウェイ・コンピュータは、インターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能なIBM(登録商標) eServer(登録商標) zSeries(登録商標)z9(登録商標)サーバを用いて実装することができる。
1つの実施形態において、本発明を具体化するソフトウェア・プログラミング・コードには、図3の長期ストレージ107などの長期ストレージ媒体から、ベース・コンピュータ・システム101のプロセッサ106によりアクセスされる。ソフトウェア・プログラミング・コードは、ディスケット、ハードドライブ、又はCD−ROMといった、データ処理システムと共に用いるための種々の周知の媒体のいずれかの上で具体化することができる。コードは、そのような媒体上で分散させても、又はメモリからユーザ210及び211に分散させてもよく、又は上述した他のシステムのユーザが用いるために、ネットワーク上で1つのコンピュータ・システムのストレージから他のコンピュータ・システムに分散させてもよい。
図5を参照すると、プロセッサ106に関する例示的なプロセッサ実施形態が示される。メモリ・ブロックをバッファに入れてプロセッサ106の性能を向上させるために、1つ又は複数のレベルのキャッシュ303が用いられる。キャッシュ303は、使用される可能性が高いメモリ・データのキャッシュ・ラインを保持する高速バッファである。典型的なキャッシュ・ラインは、64バイト、128バイト、又は256バイトのメモリ・データである。1つの実施形態において、命令をキャッシュに入れるために、データをキャッシュに入れるのとは別個のキャッシュが用いられる。キャッシュ・コヒーレンス(メモリ及びキャッシュ内のラインのコピーの同期)は、多くの場合、当技術分野において周知の種々の「スヌープ(snoop)」アルゴリズムによって与えられる。プロセッサ・システムのメモリ105などの主記憶部は、キャッシュとして参照されることが多い。4つのレベルのキャッシュ303を有するプロセッサ・システムにおいて、メモリ105は、典型的にはより高速であり、且つ、コンピュータ・システムが利用できる不揮発性ストレージ(DASD、テープ等)の一部だけを保持するので、レベル5(L5)のキャッシュと呼ばれることがある。メモリ105は、オペレーティング・システムによってメモリ105との間でページングされるデータのページを「キャッシュする」。
プログラム・カウンタ(命令カウンタ)311は、実行される現在の命令(current instruction)のアドレスを常時監視している。z/アーキテクチャ・プロセッサのプログラム・カウンタは64ビットであり、従来のアドレッシング制限をサポートするために、31ビット又は24ビットに切り捨てすることができる。。プログラム・カウンタは、典型的には、コンテキスト・スイッチの際に持続するように、コンピュータのプログラム状況ワード(PSW)内に実装される。従って、例えばオペレーティング・システムにより、プログラム・カウンタ値を有する進行中のプログラムに割り込みをかけることが可能である(即ち、プログラム環境からオペレーティング・システム環境への現在のコンテキスト・スイッチ)。プログラムがアクティブでない間、プログラムのPSWは、プログラム・カウンタ値を維持し、オペレーティング・システムが実行されている間、オペレーティング・システムの(PSW内の)プログラム・カウンタが用いられる。1つの実施形態において、プログラム・カウンタは、現在の命令のバイト数に等しい量だけインクリメントされる。縮小命令セットコンピューティング(RISC)の命令は、典型的には固定長であり、複合命令セット・コンピューティング(CISC)の命令は、典型的には可変長である。IBM(登録商標) z/アーキテクチャの命令は、2バイト、4バイト、又は6バイトの長さを有するCISC命令である。例えば、コンテキスト・スイッチ操作又は、分岐命令の分岐成立(Branch taken)操作により、プログラム・カウンタ311が変更される。コンテキスト・スイッチ操作において、現行のプログラム・カウンタ値は、実行されるプログラムについての他の状態情報(条件コードなど)と共にPSW内に保存され、新しいプログラム・カウンタ値がロードされ、実行される新しいプログラム・モジュールの命令を指し示す。分岐成立操作を行い、分岐命令の結果をプログラム・カウンタ311にロードすることにより、プログラムが判断を下すこと又はプログラム内でループすることを可能にする。
1つの実施形態において、プロセッサ106の代わりに命令をフェッチするために、命令フェッチ・ユニット305が用いられる。命令フェッチ・ユニット305は、「次の順次命令(next sequential instruction)」、分岐成立命令のターゲット命令、又はコンテキスト・スイッチの後のプログラムの最初の命令のいずれかをフェッチする。1つの実施形態において、命令フェッチ・ユニット305は、プリフェッチされた命令を用いることができる可能性に基づいて、命令を投機的にプリフェッチするためのプリフェッチ技術を用いる。例えば、命令フェッチ・ユニット305は、次の順次命令を含む16バイトの命令と、付加的なバイトの更なる順次命令とをフェッチすることができる。
次に、フェッチされた命令が、プロセッサ106により実行される。1つの実施形態において、フェッチされた命令は、命令フェッチ・ユニット305のデコード/ディスパッチ・ユニット306に渡される。デコード/ディスパッチ・ユニット306は、命令をデコードし、デコードされた命令についての情報を適切な実行ユニット307、308、及び/又は310に転送する。実行ユニット307は、命令フェッチ・ユニット305から、デコードされた算術命令についての情報を受け取り、命令の操作コード(オペコード)に従ってオペランドに関する算術演算を行う。オペランドは、メモリ105、アーキテクチャ化レジスタ309、又は実行されている命令の即値フィールドのいずれかから、実行ユニット307に与えられる。実行の結果は、格納される場合には、メモリ105、アーキテクチャ化レジスタ309、又は他のマシン・ハードウェア(制御レジスタ、PSWレジスタ等のような)内に格納される。
プロセッサ106は、典型的には、命令の機能を実行するための1つ又は複数の実行ユニット307、308、及び310を有する。図6を参照すると、実行ユニット307は、インターフェース論理407を介して、アーキテクチャ化レジスタ309、デコード/ディスパッチ・ユニット306、ロード・ストア・ユニット310、及びその他のプロセッサ・ユニット401と通信することができる。実行ユニット307は、幾つかのレジスタ回路403、404、及び405を用いて、算術論理演算ユニット(ALU)402が演算対象とする情報を保持することができる。ALU402は、加算(add)、減算(subtract)、乗算(multiply)及び除算(divide)などの算術演算、並びに、論理積(and)、論理和(or)及び排他的論理和(XOR)、ローテート(rotate)及びシフト(shift)などの論理関数を実行する。1つの実施形態において、ALUは、設計に依存する専用の演算をサポートする。他の回路は、例えば条件コード及び復元サポート論理を含む、他のアーキテクチャ化ファシリティ408を提供することができる。典型的には、ALU演算の結果は、出力レジスタ回路406内に保持され、この出力レジスタ回路406が、結果を種々の他の処理機能に転送することができる。他の実施形態においては、多数のプロセッサ・ユニットの構成が存在し、本説明は、一実施形態の代表的な理解を与えることのみを意図している。
例えばADD命令は、算術及び論理機能を有する実行ユニット307で実行され、一方、例えば浮動小数点命令は、特化された浮動小数点能力を有する浮動小数点実行ユニット(図示せず)で実行される。実行ユニットは、オペランドに対して操作コードが定めた関数を実行することにより、命令が特定したオペランドに対して動作することが好ましい。例えば、ADD命令は、命令のレジスタ・フィールドによって特定された2つのアーキテクチャ化レジスタ309内に見出されるオペランドに対して、実行ユニット307により実行することができる。
実行ユニット307は、2つのオペランドに対して算術加算を実行し、結果を第3のオペランドに格納し、ここで第3のオペランドは、第3のレジスタであっても又は2つのソース・レジスタの一方であってもよい。実行ユニット307は、シフト、ローテート、論理積、論理和及び排他的論理和のような種々の論理関数、並びに、加算、減算、乗算、除算のいずれかを含む、種々の代数関数を実行することができる算術論理演算ユニット(ALU)402を用いることが好ましい。スカラー演算のために設計されたALU402もあり、浮動小数点のために設計されたALU402もある。実施形態において、データは、アーキテクチャに応じて、ビッグエンディアン(最下位バイトが最も高いバイト・アドレスである)、又はリトルエンディアン(最下位バイトが最も低いバイト・アドレスである)とすることができる。IBM(登録商標) z/アーキテクチャは、ビッグエンディアンである。符号付きフィールドは、アーキテクチャに応じて、符号及び大きさ、1の補数、又は2の補数とすることができる。2の補数における負の値又は正の値は、ALU内で加法しか必要としないため、ALUが減算能力を設計する必要がないという点で、2の補数は有利である。数値は、通常、省略表現で記述され、12ビット・フィールドは、4,096バイトブロックのアドレスを定め、通常、例えば4Kバイト(キロバイト)ブロックとして記述される。
図7を参照すると、分岐命令を実行するための分岐命令情報が、典型的には、分岐ユニット308に送られ、この分岐ユニット308は、分岐履歴テーブル432のような分岐予測アルゴリズムを用いて、他の条件付き演算が完了する前に分岐の結果を予測する。条件付き演算が完了する前に、現在の分岐命令のターゲットがフェッチされ、投機的に実行される。条件付き演算が完了すると、投機的に実行された分岐命令は、条件付き演算の条件及び投機された結果に基づいて、完了されるか又は破棄される。典型的な分岐命令は、条件コードを試験し、条件コードが分岐命令の分岐要件を満たす場合、ターゲット・アドレスに分岐することができ、ターゲット・アドレスは、例えば、命令のレジスタ・フィールド又は即値フィールド内に見出されるものを含む幾つかの数に基づいて計算することができる。1つの実施形態において、分岐ユニット308は、複数の入力レジスタ回路427、428及び429と、出力レジスタ回路430とを有するALU426を用いることができる。分岐ユニット308は、例えば、汎用レジスタ、デコード/ディスパッチ・ユニット306、又は他の回路425と通信することができる。
例えば、オペレーティング・システムによって開始されるコンテキスト・スイッチ、コンテキスト・スイッチを発生させるプログラム例外又はエラー、コンテキスト・スイッチを発生させるI/O割り込み信号、又は(マルチスレッド環境における)複数のプログラムのマルチスレッド活動を含む様々な理由により、命令のグループの実行に割り込みがかけられることがある。1つの実施形態において、コンテキスト・スイッチ動作により、現在実行中のプログラムについての状態情報が保存され、次いで、起動される別のプログラムについての状態情報がロードされる。状態情報は、例えば、ハードウェア・レジスタ又はメモリ内に保存することができる。状態情報は、実行される次の命令を指し示すプログラム・カウンタ値、条件コード、メモリ変換情報、及びアーキテクチャ化レジスタのコンテンツを含む。コンテキスト・スイッチ活動は、ハードウェア回路、アプリケーション・プログラム、オペレーティング・システム・プログラム、又はファームウェア・コード(マイクロコード、ピココード、又はライセンス内部コード(LIC))により単独で又はその組み合わせで実施することができる。
プロセッサは、命令により定義された方法に従ってオペランドにアクセスする。命令は、命令の一部の値を用いて即値オペランドを与え、汎用レジスタ又は専用レジスタ(例えば、浮動小数点レジスタ)のいずれかを明示的に指し示す1つ又は複数のレジスタ・フィールドを与えることができる。命令は、操作コード・フィールドによって、オペランドとして識別されるインプライド・レジスタ(implied register)を用いることができる。命令は、オペランドのためのメモリ位置を用いることができる。z/アーキテクチャの長変位ファシリティ(long displacement facility)により例示されるように、オペランドのメモリ位置を、レジスタ、即値フィールド、又はレジスタと即値フィールドの組み合わせによって与えることができ、命令は、基底レジスタ、インデックス・レジスタ、及び即値フィールド(変位フィールド)を定め、これらが、互いに加算されてメモリ内のオペランドのアドレスをもたらす。ここでの位置(location)は、典型的には、特に断りのない限り、主メモリ(主ストレージ)内の記憶位置を意味する。
図8を参照すると、プロセッサは、ロード/ストア・ユニット310を用いて、ストレージにアクセスする。ロード/ストア・ユニット310は、キャッシュ・メモリ・インターフェースを通じてメモリ内のターゲット・オペランドのアドレスを取得し、オペランドをアーキテクチャ化レジスタ309若しくは別のメモリ位置にロードすることによって、ロード操作を行うことができ、又は、メモリ内のターゲット・オペランドのアドレスを取得し、アーキテクチャ化レジスタ309若しくは別のメモリ位置から取得したデータをメモリ内のターゲット・オペランドの記憶位置に格納することによって、ストア操作を行うことができる。ロード/ストア・ユニット310は、投機的なものであってもよく、命令シーケンスに対してアウト・オブ・オーダー式の順序でメモリにアクセスすることができるが、プログラムに対して、命令がイン・オーダー式に実行されたように見せ続ける。ロード/ストア・ユニット310は、アーキテクチャ化レジスタ309、デコード/ディスパッチ・ユニット306、キャッシュ/メモリ・インターフェース若しくは他の要素455と通信することができ、ストレージ・アドレスを計算し、且つ、パイプライン処理を順に行って操作をイン・オーダー式に保持するための、種々のレジスタ回路、ALU458、及び制御論理463を含む。一部の動作は、アウト・オブ・オーダー式とすることができるが、ロード/ストア・ユニットは、アウト・オブ・オーダー式動作が、プログラムに対して、当技術分野において周知のようなイン・オーダー式に実行されたように見えるようにする機能を提供する。
好ましくは、アプリケーション・プログラムが「見ている」アドレスは、仮想アドレスと呼ばれることが多い。仮想アドレスは、「論理アドレス」及び「実効アドレス」と呼ばれることもある。これらの仮想アドレスは、これらに限定されるものではないが、仮想アドレスをオフセット値にプリフィックス付加すること、1つ又は複数の変換テーブルを介して仮想アドレスを変換することを含む、図5のDAT312のような種々のDAT技術の1つによって、物理的メモリ位置にリダイレクトされるという点で仮想のものであり、変換テーブルは、少なくともセグメント・テーブル及びページ・テーブルを単独で又は組み合わせて含み、セグメント・テーブルは、ページ・テーブルを指し示すエントリを有することが好ましい。z/アーキテクチャにおいては、領域第1テーブル、領域第2テーブル、領域第3テーブル、セグメント・テーブル、及び随意的なページ・テーブルを含む、変換の階層が提供される。アドレス変換の性能は、仮想アドレスを関連した物理的メモリ位置にマッピングするエントリを含む変換ルックアサイド・バッファ(TLB)を用いることにより改善されることが多い。DAT312が変換テーブルを用いて仮想アドレスを変換したときに、エントリが作成される。次いで、後に仮想アドレスを用いることで、低速の順次変換テーブル・アクセスではなく、高速のTLBのエントリを用いることがきる。TLBのコンテンツは、最長時間未使用(Least Recently Used、LRU)を含む種々の置換アルゴリズムによって管理することができる。
プロセッサ106がマルチプロセッサ・システムのプロセッサである場合には、各プロセッサは、コヒーレンシのために、I/O、キャッシュ、TLB、及びメモリといった共有リソースをインターロック状態に保持する責任を負う。1つの実施形態において、キャッシュ・コヒーレンシを保持する際に、「スヌープ」技術が用いられる。スヌープ環境においては、共有を容易にするために、各キャッシュ・ラインを、共有状態、排他的状態、変更状態、無効状態等のいずれか1つの状態にあるものとしてマーク付けすることができる。
図5のI/Oユニット304は、プロセッサ106に、例えば、テープ、ディスク、プリンタ、ディスプレイ、及びネットワークを含む周辺機器に取り付けるための手段を与える。I/Oユニット304は、ソフトウェア・ドライバによってコンピュータ・プログラムに提示されることが多い。IBM(登録商標) z/Seriesのようなメインフレームにおいては、チャネル・アダプタ及びオープン・システム・アダプタが、オペレーティング・システムと周辺機器との間に通信をもたらすメインフレームのI/Oユニットである。
インストルメンテーション・データは、プロセッサ106の動作に関連したデータである。1つの実施形態において、インストルメンテーション・データ及び他のシステム・レベル・メトリックへのアクセスが制限されていること又は利用できないことがある。コンピュータ・プロセッサは、特権状態(即ち、スーパーバイザ状態)、及び低特権状態(又は問題状態)の下で動作する。特権状態において、プログラムは、特権操作を介して、全てのシステム・リソースにアクセスする(例えば、全ての制御レジスタ及びスーパーバイザ・メモリ空間にアクセスする)ことができる。特権状態は、特権モード又はスーパーバイザ・モードとも呼ばれる。コンピュータ・プロセッサ上で実行されているオペレーティング・システムは、特権状態で動作し得る。低特権状態は、システム・リソースへのアクセスが制限されている非特権状態(non-privileged state)である。例えば、低特権状態で実行されているアプリケーション・プログラムは、制御レジスタへのアクセスが制限されるか又は制御レジスタにアクセスできないことがあり、且つ、オペレーティング・システムにより、アプリケーション・プログラムに割り当てられたユーザ・メモリ空間にしかアクセスすることができない。低特権状態は、典型的には、オペレーティング・システムの制御下で実行されるアプリケーション・プログラムに割り当てられ、特権操作を低特権状態で実施することはできない。低特権状態は、問題状態、問題モード、又はユーザ・モードとしても知られる。
低特権状態で実行されているプログラムに書き込み・アクセス可能でない1つのこうした制限されたリソースが、プログラム状況ワード(PSW)である。PSWは、実行される次の命令のプログラム・カウンタと、分岐命令により使用可能な条件コード・フィールドと、インストルメンテーションがイネーブルにされているか又はディスエーブルにされているかを示すためのインストルメンテーション制御フィールドと、命令の順序を制御し、プログラムに割り当てられた特権状態を含むコンピュータ・プロセッサの状態を判断するために用いられる他の情報とを含むことができる。マルチスレッド処理環境においては、複数のプログラムが、利用可能なコンピュータ・プロセッサの容量を共有するか、又はタイムスライスする。プログラムの各々は、関連したPSW、プログラムに割り当てられた主ストレージにアクセスするためのアドレス変換テーブルの起点アドレス(origin address)、汎用レジスタの現在値のセット、制御レジスタ、浮動小数点レジスタ等を含む、コンテキスト情報を有する。現在アクティブな又は制御を行っているPSWは、現(current)PSWと呼ばれる。この現PSWは、現在実行されているプログラムを制御する。コンピュータ・プロセッサは、割り込み能力を有し、この割り込み能力により、例外条件及び外部からの刺激に応答して、コンピュータ・プロセッサが、別のプログラムにより迅速にコンテキストを切り替えることが可能になる。割り込みが発生すると、コンピュータ・プロセッサは、現PSWを、特定のクラスの割り込みのための、旧(old)PSW位置と呼ばれる割り当てられたストレージ位置に入れる。コンピュータ・プロセッサは、第2の割り当てられたストレージ位置から、新(new)PSWをフェッチする。この新しいコンテキストにより、実行される次のプログラムが判断される。1つの実施形態において、これらのストレージ位置は、コンピュータ・プロセッサがアクセス可能なメモリ位置に配置される。コンピュータ・プロセッサが割り込み処理を終了すると、割り込みを処理するプログラムは、旧PSWを含む旧コンテキストを再ロードし、これを再び現PSWとすることができ、これにより、割り込みを受けたプログラムが続行できるようになる。
PSWのフィールドは、明示的に(例えば、命令の実行がPSWビットの一部を読み出す場合)、又は暗黙的に(例えば、命令フェッチ、オペランド・フェッチ、アドレス生成計算、アドレス生成ソース等の際に)参照することができる。明示的な参照は、一般に、実行時に実施されるのに対して、暗黙的な参照は、一般に、命令実行中のパイプラインの異なる段階(即ち、命令フェッチ、命令デコード、実行時、及び完了時)に実施される。PSW内の個々のフィールドは、互いに独立して参照又は更新することができる。
1つの実施形態において、コンテキストを操作することにより、オペレーティング・システムは、コンピュータ・プロセッサによりランタイム・インストルメンテーションをイネーブルにすることを含む、コンピュータ処理リソースの制御を行う。ランタイム・インストルメンテーションは、オペレーティング・システムの実行の際、並びに、オペレーティング・システムにより実行されるいずれかのソフトウェア・アプリケーションにより、イネーブル又はディスエーブルにすることができる。ランタイム・インストルメンテーションのイネーブル/ディスエーブル状態は、プログラムと関連したPSW内に、コンテキスト情報として保存される。
ランタイム・インストルメンテーション(RI)ファシリティは、z/アーキテクチャを実装するモデル上に組み込むことができる。RIファシリティがインストールされ、イネーブルにされると、プログラム実行中、データが、CPUの1つ又は複数の収集バッファ内に収集され、次いで、プログラム・バッファに報告される。格納された情報の各単位は、報告グループと呼ばれる。報告グループのコンテンツは、プログラム実行中、そのコンテンツがCPUにより認識されたイベントを表す複数の記録から成る。
ランタイム・インストルメンテーション・ファシリティが構成内にインストールされている場合、PSWフィールド(RIビット)がランタイム・インストルメンテーションをイネーブルにする。ランタイム・インストルメンテーション制御の妥当性が、RIビットをオンにする能力を決定するが、RIが1のとき、CPU制御は有効であり、ランタイム・インストルメンテーションがイネーブルにされる。ランタイム・インストルメンテーション・ファシリティは、以下の命令:load run−time−instrumentation controls、modify run−time−instrumentation controls、run−time−instrumentation emit、run−time−instrumentation next、run−time−instrumentation off、run−time−instrumentation on、store run−time−instrumentation controls、及びtest run−time−instrumentation controlsを含むことができる。
load run−time−instrumentation controls(LRIC:ランタイム・インストルメンテーション制御ロード)命令は、ランタイム・インストルメンテーションを制御するランタイム・インストルメンテーション制御を初期化する。modify run−time−instrumentation controls(MRIC)命令は、もともとLRICによって確立されたランタイム・インストルメンテーション制御の全て又はサブセットを変更する。run−time−instrumentation emit(RIEMIT)命令は、汎用レジスタの値を収集バッファ内に格納することにより、これを収集する。run−time−instrumentation next(RINEXT:)命令は、RINEXTの後の次の順次命令(NSI)の指向サンプリングを実施する。run−time−instrumentation off(RIOFF)命令は、ランタイム・インストルメンテーションをディスエーブルにする。run−time−instrumentation on(RION)命令は、ランタイム・インストルメンテーションをイネーブルにする。store run−time−instrumentation controls(STRIC)命令は、ランタイム・インストルメンテーション制御の現在の値を指定されたストレージ位置に入れる。test run−time−instrumentation controls(TRIC)命令は、ランタイム・インストルメンテーション制御を検査する。有効である場合、制御変更インジケータの状態が設定される。
ランタイム・インストルメンテーション・ファシリティは、測定警報外部割り込みを保留中にする能力を含む。ランタイム・インストルメンテーションによって収集され、プログラム・バッファに報告される情報の一部はモデル依存であり、従って、定義されない。ランタイム・インストルメンテーション・ファシリティにより与えられるサンプル及びデータは、性能特性の統計的推定を目的としており、概ね正確であり、繰り返し可能でないことがある。例えば、サンプリング・モードに関係なく、例外を発生させた又は特定のシステムの内部活動と関連付けられたサンプル命令が報告グループのストアをもたらすかどうか、そして、ストアされる場合、ランタイム・インストルメンテーション・データ内に含まれるモデル依存データに影響を及ぼすかどうかは、予測不可能である。
収集バッファは、プログラム実行中、そのコンテンツがプロセッサにより認識されたイベントについて報告する記録のセットをキャプチャするために用いられる。例として、1又は複数の成立した分岐の実行、トランザクション実行アボート(abort)イベント、命令フェッチ・キャッシュミス、データフェッチ又はストア・キャッシュミス、及びRIEMIT命令のオペランドが挙げられる。RIEMIT命令の実行は、汎用レジスタの値を収集バッファ内に格納することによって、これを収集する。付加的なデータを収集すること、及び/又は命令データ・バッファなどの他のバッファに格納することが可能である。
報告は、報告制御に従う。サンプル命令が識別されると、各々の報告制御は、対応する条件のチェックをイネーブルにする。対応する条件が存在する場合、報告グループが形成され、格納される。報告制御がイネーブルにされないか、又はイネーブルにされた報告制御に関して対応する条件が存在しない場合、報告グループは格納されない。サンプル命令について報告されたデータは、命令データ・バッファ及び他のモデル依存ソースから取得され、次いで、このデータを用いて報告グループの1つ又は複数の記録のコンテンツを作成することができ、1つのこうした記録が命令の記録となる。
報告グループ・ストアにおいてキャプチャすることができる記録タイプには:フィラー(filler)、追加(extra)、開始、タイムスタンプ、命令、発行(emit)、TXアボート、呼び出し(call)、リターン(return)、及び転送(transfer)が含まれる。フィラー記録は、収集バッファ内の有効な記録の数が現在の報告グループ・サイズの報告グループを満たすのに十分でない場合に、報告グループにおいて使用される。追加記録は、報告グループの追加セクションにおいて使用することができる。開始記録は、第1の報告グループの最初の記録である。タイムスタンプ記録は、第1の報告グループ以外のあらゆる報告グループの記録0として格納される。命令記録は、サンプル命令に関して報告グループが格納されるときに、報告グループの最後の記録として作成される。発行記録は、RIEMITの実行の成功により作成される。トランザクション実行(TX)モード・アボート記録は、暗黙的アボート、又は、トランザクション・アボート命令の実行によって作成される。呼び出し記録は、呼び出しタイプ分岐命令として分類される分岐命令の実行によって作成される。リターン記録は、リターン・タイプ命令として分類されるリターン・タイプ分岐命令の実行によって作成される。転送記録は、特定の条件コード基準を満たす分岐命令の実行によって作成される。
図9は、1つの実施形態において実装することができるプロセッサのランタイム・インストルメンテーションのためのシステムの概略図を示す。1つの実施形態において、システム500は、図3のプロセッサ106などの中央演算処理ユニット(CPU)を含む。1つの実施形態において、プロセッサ106は、シングル・プロセッサである。代替的な実施形態において、プロセッサ106は、マルチコア・プロセッサのシングル処理コアである。1つの実施形態において、プロセッサ106は、様々な速度で動作し得る。
1つの実施形態において、プロセッサ106は、レジスタ510をさらに含む。レジスタ510は、プロセッサ106により使用するためのデータのワード(word)を格納することができるハードウェア・レジスタである。レジスタ510は、プロセッサ106によりアクセスが可能なデータ・ビットを格納するための1又は複数のラッチを含む。レジスタ510は、例えば、汎用レジスタ及び制御レジスタを含むことができる。プロセッサ106は、レジスタ510と通信するインストルメンテーション・モジュール506をさらに含む。インストルメンテーション・モジュール506は、プロセッサ106のインストルメンテーションを制御する処理回路である。インストルメンテーション・モジュール506は、1つ又は複数の成立した分岐の実行経路、トランザクション実行アボート・イベント、種々のランタイム・オペランド、タイムスタンプ情報等といったインストルメンテーション・データを、プロセッサ106から直接収集するように構成される。インストルメンテーション・モジュール506は、プロセッサ106からインストルメンテーション・データを収集し、そのインストルメンテーション・データを収集バッファ508に格納する。1つの実施形態において、収集バッファ508は、インストルメンテーション・モジュール506から受け取ったデータを収集する循環バッファ(circular buffer)であり、循環バッファが満たされると、この循環バッファは、最も古いデータを新しいデータで上書きする。
プロセッサ106は、1つ又は複数のオペレーティング・システム516及び1つ又は複数のアプリケーション518を実行する。1つ又は複数のオペレーティング・システム516及び1つ又は複数のアプリケーション518は、ハードドライブ、CD/ROM、フラッシュ・メモリ等のようなストレージ520内に格納され、必要に応じてストレージ520からランタイム・メモリ504内にロードされる、ページと呼ばれる、現在実行されているオペレーティング・システム及び/又はアプリケーションの1つ又は複数のアクティブな部分を格納するために予約された主メモリ514のランタイム・メモリ504領域にロードされる。1つの実施形態において、オペレーティング・システムの各々は、ハイパーバイザ(図示せず)によって管理され、且つ、プロセッサ106により実行される仮想マシンとして実行される。
1つの実施形態において、プロセッサ106は、主メモリ514から、現在実行されているオペレーティング・システム又はアプリケーションに関する主メモリ514内のPSWデータからのPSWをレジスタ510にロードし、例えばレジスタ510において、1つ又は複数のプロセッサ106の設定を設定する。1つの実施形態において、レジスタ510内のPSWは、インストルメンテーション・モジュール506をイネーブルにし、制御するための1又は複数のビットを含む。
1つ又は複数のアプリケーション518は、特定のオペレーティング・システム上で実行されるようにコンパイルされたソフトウェア・アプリケーション、インタープリタ(例えば、Java(登録商標))上で実行される解釈済みコード、又はオペレーティング・システム・サポート・スレッド(例えば、プロセス管理、デーモン等)を含む。1つ又は複数のオペレーティング・システム516、及び/又は、1つ又は複数のアプリケーション518の各々は、インストルメンテーション・モジュール506をトリガして、インストルメンテーション・データの収集を開始又は停止するための命令を実行することができる。
1つの実施形態において、1つ又は複数のアプリケーション518の1つは、サンプル命令であると判断された命令を実行し、それにより、サンプル命令の実行の完了時にサンプル・ポイントが作成され、その結果、インストルメンテーション・モジュール506が、収集バッファ508からのアプリケーションの収集データを、アプリケーションがアクセス可能な主メモリ514内のプログラム・バッファ522に移動させる。主メモリ514は、当技術分野において周知の任意のアドレス指定可能メモリとすることができる。1つの実施形態において、主メモリ514は、キャッシュと呼ばれることもある、高速アクセス・バッファ・ストレージを含むことができる。各CPUは、関連したキャッシュを有することができる。付加的な実施形態において、主メモリ514は、ダイナミック・ランダム・アクセス・メモリ(DRAM)である。さらに別の実施形態において、主メモリは、コンピュータのハードドライブ、又はアプリケーションによりアクセス可能なフラッシュ・メモリなどのストレージ・デバイスである。
ランタイム・インストルメンテーション制御を構成するために、プロセッサ106は、load run−time instrumentation controls(LRIC)命令をサポートする。本明細書でさらに説明する特定のLRICフィールドを超えて、他の機能をサポートするために、付加的なフィールドを定めることができることが理解されるであろう。LRIC命令は、ランタイム・インストルメンテーションをロードし、これを最初に構成するために用いることができ、図9のインストルメンテーション・・モジュール506によりサポートされる。1つの実施形態において、ランタイム・インストルメンテーション・モジュール506とも呼ばれるインストルメンテーション・モジュール506は、ランタイム・インストルメンテーション制御及び報告制御を実施する。ランタイム・インストルメンテーション制御の現在の状態は、store run−time controls(STRIC)命令を用いて、図9のレジスタ510から主メモリ514に格納(ストア)することができる。本明細書において、LRIC命令のオペランドとしてロード可能な制御ブロックの種々のフィールドの定義を用いて、ランタイム・インストルメンテーション制御の対応する値の状態を参照するためにもまた、使用される。
図10は、1つの実施形態における、特権状態により設定可能な制御を含むランタイム・インストルメンテーション制御制御ブロック(RICCB)の一部を示す。制御ブロック部分600は、図10を参照して説明されるもの以外の付加的な値を含むことができる。LRIC命令により、制御ブロック部分600に対する変更を実施することができる。
制御ブロック部分は、正規ビット602(Vビット)を含む。正規ビット602は、既にLRIC命令により設定されているので、プロセッサにおけるランタイム・インストルメンテーション制御のセットの正規性を示す。
制御ブロックはまた、低特権状態プログラムがMRIC命令の実行を許可するかどうかを判断するために使用されるSビット604も含む。Kビット606は、低特権状態プログラムが、ランタイム・インストルメンテーション制御の起点アドレス及び制限アドレスなどのランタイム・インストルメンテーション制御に関して、準特権状態での実行が許可されるかどうかを示す。Hビット608は、アドレス制御(即ち、起点アドレス、制限アドレス、及び現在のアドレス)が一次仮想アドレス空間を参照するか又はホーム仮想アドレス空間を参照するかを判断する。Oビット610は無視され、0として扱われる。
低特権状態サンプル報告制御ビット612(Psビット)は、低特権状態プログラムと併せて使用される。低特権状態において、ランタイム・インストルメンテーション制御内のPsビット612がゼロである場合、ランタイム・インストルメンテーションがイネーブルにされているときには、ランタイム・インストルメンテーション制御の報告制御は無視され、従って、報告グループは格納されない。低特権状態にあり、ランタイム・インストルメンテーション制御のPsビット612が1である場合、報告制御がチェックされ、その定められた機能に従って使用される。
スーパーバイザ状態サンプル報告制御ビット614(Qsビット)は、スーパーバイザ状態プログラムと併せて使用される。スーパーバイザ状態において、ランタイム・インストルメンテーション制御のQsビット614がゼロである場合、ランタイム・インストルメンテーションがイネーブルにされているとき、ランタイム・インストルメンテーション制御の報告制御は無視され、従って、報告グループは格納されない。スーパーバイザ状態において、ランタイム・インストルメンテーション制御のQsビット614が1である場合、報告制御がチェックされ、その定められた機能に従って使用される。
低特権状態収集バッファ制御ビット616(Pcビット)は、図9の収集バッファ508に対する更新を制御する。低特権状態において、ランタイム・インストルメンテーション制御のPcビット616がゼロである場合、ランタイム・インストルメンテーションがイネーブルにされているときには、ランタイム・インストルメンテーション制御の収集バッファ制御は無視され、収集バッファ508の更新が防止される。低特権状態において、ランタイム・インストルメンテーション制御のPcビット616が1である場合、収集バッファ制御がチェックされ、その定められた機能に従って使用される。
スーパーバイザ状態収集バッファ制御ビット618(Qcビット)は、収集バッファ508に対する更新を制御する。スーパーバイザ状態において、ランタイム・インストルメンテーション制御内のQcビット618がゼロである場合、ランタイム・インストルメンテーションがイネーブルにされているとき、ランタイム・インストルメンテーション制御の収集バッファ制御は無視され、収集バッファ508の更新は防止される。スーパーバイザ状態において、ランタイム・インストルメンテーション制御内のQcビット618が1である場合、指し示された収集バッファ制御がチェックされ、その定められた機能に従って使用される。
Gビット620は、割り込み停止(halted interruption)とも呼ばれるランタイム・インストルメンテーションの割り込み停止の保留制御である。Gビット620がゼロである場合、割り込み停止は保留中でない。Gビット620が1である場合、割り込み停止は保留中である。プログラム・バッファ522内の第1の報告グループが書き込まれると、Gビット620はゼロに設定される。つまり、ランタイム・インストルメンテーション・プログラム・バッファ起点アドレス(ROA)702が、図11のランタイム・インストルメンテーション・プログラム・バッファ現在アドレス(RCA)706に等しい場合、Gビット620はゼロに設定される。プログラム・バッファ522内の第1の報告グループ以外のストアが試行されたとき、ランタイム・インストルメンテーション停止条件が存在しない場合には、Gビット620がゼロに設定され、報告グループが格納される。プログラム・バッファ522内の第1の報告グループ以外のストアが試行されたとき、ランタイム・インストルメンテーション停止条件が存在する場合には、Gビット620が1に設定され、報告グループは格納されない。
Uビット622は、バッファ・フル割り込み(buffer-full interruption)及び割り込み停止に対するイネーブルメント制御である。Uビット622がゼロであるとき、割り込み要求の生成がディスエーブルにされ、保留中の場合は、保留中のままである。
Lビット624は、バッファ・フル割り込みの保留制御である。Lビット624がゼロである場合、バッファ・フル割り込みは保留中でない。Lビット624が1である場合、バッファ・フル割り込みは保留中である。
キー・フィールド626は、その値が報告グループのストアのためのストレージ保護キーとして使用される、4ビットの符号なし整数である。ストレージ・キーがストレージ・アクセス要求と関連したアクセス・キーと一致する場合にのみ、報告グループのストアが許可され、フェッチは、ストレージ・キーがアクセス・キーと一致する場合、又はストレージ・キーのフェッチ保護ビットがゼロである場合に許可される。ストレージ・キーの4つのアクセス制御ビットがアクセス・キーと等しい場合、又はアクセス・キーがゼロである場合、キーが一致する。
図11は、MRICが準特権モードでの実行を許可された(即ち、Kビットが1である)場合のRICCB制御ブロックの一部を示す。制御ブロック700は、ランタイム・インストルメンテーション制御の初期化のためのLRIC命令のオペランドとすることもできる。制御ブロック700は、図11を参照して説明されるもの以外の付加的な値を含むことができる。1つの実施形態において、低特権状態プログラムにより、他の指定がないMRIC命令オペランドのセクションにはアクセスすることができない。準特権モードが許可された場合、ランタイム・インストルメンテーション起点アドレス(ROA)702及びランタイム・インストルメンテーション・プログラム・バッファ制限アドレス(RLA)704は、低特権状態プログラムにより、MRIC命令を用いて設定される。ROA702は、図9のプログラム・バッファ522の最初のバイトの位置である。ROA704は、プログラム・バッファ522の最後のバイトの位置を示す。
1つの実施形態において、ランタイム・インストルメンテーション・プログラム・バッファ現在アドレス(RCA)706は、MRIC命令により更新することができる。RCA706は、ストアされる次の報告グループのプログラム・バッファ522の位置である。RCA706は、報告グループ・サイズ・フィールド744(RGSフィールド)を検査し、プログラム・バッファ522のアドレスの形成に使用される有効ビット位置の数に影響を与える。64ビットのRCA706は、ワード0、ワード1のビット位置0乃至26−RGS、及びRGS+右に付加された5つの2進数ゼロである。これが、プログラム・バッファ522内に格納されることになる後続の報告グループの、図9のプログラム・バッファ522における開始位置である。報告グループは、インストルメンテーション・モジュール506により作成され、後にプログラム・バッファ522内に格納される情報の単位である。1つの実施形態において、RCA706により指定されるRGSフィールド744は、ランタイム・インストルメンテーション制御の現在の報告グループ・サイズと等しくない(即ち、RCA706がRGSフィールド744を変更する)場合、RCA706は、ROA702に設定される。
残りのサンプル間隔カウント・フィールド742(RSICフィールド)は、MRIC命令を用いて低特権プログラムにより更新することができる。RSICフィールド742は、残りのサンプル間隔カウントを示す、64ビットの符号なし整数を含む。ランタイム・インストルメンテーション制御内のRSICフィールド742の値がゼロであるか又はスケーリング・ファクタ・フィールド740(SFフィールド)内の値に等しく、且つ、ランタイム・インストルメンテーションがイネーブルにされている場合、次のサンプル間隔は、サンプリング・モード708(M)及びSFフィールド740の値に基づいた全間隔(full interval)である。RSICフィールド742が非ゼロであり、SFフィールド740を下回り、且つ、ランタイム・インストルメンテーションがイネーブルにされている場合、次のサンプル間隔は、部分的間隔である。RSICフィールド742が非ゼロであり、SFフィールド740の値を上回り、且つ、ランタイム・インストルメンテーションがイネーブルにされている場合、次のサンプル間隔は延長した間隔である。延長した間隔が期間満了すると、次の間隔は、SFフィールド740の値に基づく。RSICフィールド742が非ゼロの値に設定されると、このRSICフィールド742は、SFフィールド740も従う同じモデル依存の最大限度に従う。RSICフィールド742のオリジナル値がゼロである場合、LRIC命令及びMRIC命令の実行中、RSICフィールド742がSFフィールド740内の値に設定されるかどうか、又は、ランタイム・インストルメンテーションがイネーブルにされるまで、RSICフィールド742が引き続きゼロとして表示されるかどうかを指示する。
SFフィールド740は、その値がスケーリング・ファクタのカウント単位である、64ビットの符号なし整数を含む。単位の大きさは、モード・フィールド708(Mフィールド)から判断される。RSICフィールド742内の値がゼロである場合、SFフィールド740は、現在の命令がサンプル命令として認識される、ゼロまでデクリメントされるRSICフィールド742の初期値を与え、間隔カウントは、SFフィールド740の値からリフレッシュされる。SFフィールド740の有効値は、1から264−1までの範囲内にある。ゼロが指定される場合、1の値が推定される。しかしながら、各モデルはSFフィールド740の最小値及び最大値の両方を有し得る。最小値及び最大値はまた、モード・フィールド708に基づいて異なり得る。最小値を下回る値が指定される場合、モデル依存の最小値がロードされる。最大値を上回る値が指定される場合、モデル依存の最大値がロードされる。
DC制御フィールド736は、その値がデータフェッチ又はストアのキャッシュミスと関連したキャッシュ待ち時間(cash-latency)レベルを指し示す、4ビットの符号なし整数である。つまり、サンプル命令がデータ・アクセス・キャッシュ・ミスに遭遇した。別のランタイム・インストルメンテーション制御により禁止されない限り、そのデータ・アクセスにより、DC制御フィールド736の値により指し示されるレベルを数値的に上回るか又はこれに等しいキャッシュ待ち時間レベルでミスが認識されるサンプル命令を表す報告グループのストアが試行される。データ・アクセスに関するキャッシュ構造及びキャッシュ待ち時間レベルは、モデル依存である。複数の又は長いオペランドを用いる命令については、もしあれば、どのオペランド・アクセスが報告制御に用いられるかは、モデル依存である。モデル依存の挙動は、DC制御フィールド736の値を無視することがあり、従って、この値は、報告グループのストアのために使用しない。
ICフィールド734は、その値が命令フェッチのキャッシュミスと関連したキャッシュ待ち時間レベルを指し示す、4ビットの符号なし整数である。つまり、サンプル命令のフェッチが命令フェッチ・キャッシュミスに遭遇した。ICフィールド734及びDC制御フィールド736の両方について、キャッシュ待ち時間レベルは、観察しているプロセッサから特定のキャッシュ・レベル・アクセスまでの距離の抽象化である。待ち時間レベルは、プロセッサと主ストレージとの間のネスト化されたキャッシュ・レベルの量と、こうしたキャッシュ・レベルが複数のプロセッサ間でどのように共有されるかの組み合わせに依存する。より大きい待ち時間レベルは、一般に、より時間のかかるアクセスに対応する。ICフィールド734及びDC制御フィールド736内の値は、キャッシュ待ち時間レベルのゼロ起点の識別と考えることができる。例えば、ゼロの値は、L1キャッシュ(即ち、プロセッサに最も近いキャッシュ)に対応する。従って、1の値は、L2キャッシュ、又は、幾つかのマシンにおいてはL1.5キャッシュとして知られ得る次のキャッシュ層である。2−15の値は、主メモリに到達するまでの付加的なキャッシュ待ち時間層の論理的進行を示すが、主メモリ自体は含まない。一般に、キャッシュ構造は、15層の深さには至らない。従って、ICフィールド734及びDC制御フィールド736内の15の値は、特別な場合と解釈され、命令フェッチ又はデータ・アクセスにおけるキャッシュミスは、それぞれ、キャッシュ待ち時間レベルに関係なく、報告グループのストア目的では認識されないことを意味する。別のランタイム・インストルメンテーション制御により禁止されない限り、そのフェッチにより、ICフィールド1034の値により指し示されるレベルを数値的に上回る又はこれに等しいキャッシュ待ち時間レベルでミスが認識されたサンプル命令を表す報告グループのストアが試行される。命令フェッチに関するキャッシュ構造及びキャッシュ待ち時間レベルは、モデル依存である。モデル依存の挙動は、ICフィールド734の値を無視することがあり、従って、この値を、報告グループのストアのために使用しない。
キャッシュ待ち時間レベル・オーバーライド報告制御ビット732(Fビット)は、非分岐命令及び非分岐予測制御のためのものである。ランタイム・インストルメンテーション制御内のFビット732がゼロである場合、ランタイム・インストルメンテーション制御のキャッシュ報告制御(ICフィールド734及びDC制御フィールド736)がチェックされ、その定められた機能に従って使用される。ランタイム・インストルメンテーション制御の分岐予測制御(BPxnビット722、BPxtビット724、BPtiビット726、及びBPniビット728)がチェックされ、その定められた機能に従って使用される。Fビット732が1である場合、別の制御によって禁止されない限り、これらの同じ制御が無視され、報告グループが格納される。
データ・キャッシュミス制御ビット730(Dビット)は、報告グループを格納するかどうかを示す。Dビット730が1である場合、追加タイプ記録を、サンプル命令についてのモデル依存データを含む報告グループの追加セクションに入れても又は入れなくてもよい。
MRIC命令は、分岐予測(BP)報告制御(BPxn722、BPxt724、BPti726、及びBPni728)を含む。ランタイム・インストルメンテーション制御内のBP報告制御ビットがゼロである場合、対応する条件はチェックされない。BP報告制御ビットが1であり、対応する分岐予測条件が存在する場合、報告グループが格納される。
BPxnビット722は、1であるとき、分岐予測情報のチェックをイネーブルにする。従って、サンプル分岐が成立すると誤って予測されたが成立しなかった場合、報告グループが格納される。
BPxtビット724は、1であるとき、分岐予測情報のチェックをイネーブルにする。従って、サンプル分岐が成立しないと誤って予測されたが成立した場合、報告グループが格納される。
BPtiビット726は、1であるとき、分岐予測情報のチェックをイネーブルにする。従って、サンプル分岐が成立すると正しく予測され、分岐が成立したが、分岐ターゲットが誤って予測された場合、報告グループが格納される。
BPniビット728は、1である場合、分岐予測情報のチェックをイネーブルにする。従って、サンプル分岐が成立しないと正しく予測され、分岐が成立せず、且つ、分岐ターゲットが誤って予測された場合、報告グループが格納される。
トランザクション実行モード記録ビット720(Xビット)のイネーブルメント制御は、トランザクション実行モード・アボート記録の収集を制御する。ランタイム・インストルメンテーション制御内のXビット720がゼロであるとき、トランザクション実行モード・アボート記録は収集されない。Xビット720が1であるとき、トランザクション実行モード・アボート記録が収集され、図9の収集バッファ508に入れられる。モデルにトランザクション実行ファシリティがインストールされていない場合、Xビット720は無視される。
RIEMIT命令制御ビット718(Eビット)は、RIEMIT命令の実行を制御する。ランタイム・インストルメンテーションがイネーブルにされるとき、ランタイム・インストルメンテーション制御内のEビット718がゼロであるか、又は無視されてゼロとして扱われる場合、RIEMITは、操作を実行しない。Eビット718が1であり、他の形で無視されない場合、RIEMITはイネーブルにされ、その定められた機能を実行する。
Jビット746は、ゼロである場合、branch on condition(BC)命令が、マスク値に関係なく他のタイプの分岐カテゴリ内にあることを指定する。Jビット746が1である場合、15のマスクを指定するBC命令は、リターン・タイプ分岐カテゴリ内にある。BC命令が1−14のマスクを指定する場合、BC命令はJビット746に影響を受けず、常にその他のタイプの分岐カテゴリ内にある。リターン・タイプ分岐カテゴリ内にある場合、Rビット716は、図9の収集バッファ508への包含を制御する。他のタイプの分岐カテゴリ内にある場合、Bビット748が収集バッファ508への包含を制御する。他のタイプの分岐カテゴリは、転送タイプ分岐カテゴリとして示すこともできる。
命令アドレス・コード・ビット714(Cビット)は、呼び出しタイプ分岐のイネーブルメントを制御する。ランタイム・インストルメンテーション制御内のCビット714が1であり、命令が呼び出しタイプ分岐である場合、収集バッファ508が更新される。呼び出しタイプ分岐とリターン・タイプ分岐の両方のモデル依存検出が組み合わされる場合、Cビット714は両方のタイプに対して動作し、Rビット816は有効でない。
Rビット716は、リターン・タイプ分岐のイネーブルメント制御である。ランタイム・インストルメンテーション制御内のRビット716が1であり、命令がリターン・タイプ分岐である場合、収集バッファ508が更新される。
Bビット748は、呼び出しタイプ分岐及びリターン・タイプ分岐以外の分岐のイネーブルメント制御である。ランタイム・インストルメンテーション制御内のBビット748が1であり、命令が、ランタイム・インストルメンテーションにより認識される他のタイプの分岐である場合、収集バッファ508が更新される。
最大アドレス超過ビット712(MAEビット)は、1に設定された場合、1に設定された命令アドレス・コード(Cフィールド)を有する1つ又は複数の報告グループが格納されたことを示す。ひとたびMAEビット712が1に設定されると、引き続きランタイム・インストルメンテーションを実行することにより、MAEビット712が再びゼロに設定されることはない。MAEビット712をゼロとして指定するLRIC命令又はMRIC命令の実行により、MAEビット712がゼロに設定される。
ランタイム・インストルメンテーション・ネクスト(RINEXT)制御ビット710(Nビット)は、サンプル命令の実行を制御する、run−time−instrumentation next命令のイネーブルメントを制御する。ランタイム・インストルメンテーション制御内のNビット710がゼロであるか、又は無視されてゼロとして扱われる場合、RINEXTは、操作を実行しない。Nビット710が1であり、他の形で無視されない場合、RINEXTがイネーブルにされ、その定められた機能を実行する。
モード・フィールド708(Mフィールド)は、ランタイム・インストルメンテーション制御内のその値が、ランタイム・インストルメンテーション制御に関するサンプリング・モードを指定する、4ビットの符号なし整数である。サポートされるサンプリング・モードは、CPUサイクルのカウント、命令のカウントに基づくサンプリングを含むことができ、又は、RINEXTなどのサンプル命令に応答してサンプルに向けることができる。
報告グループ・サイズ・フィールド744(RGS)は、その値が報告グループの記録(RRG)の数を指定する、3ビットの符号なし整数である。報告グループ内の記録の数は、開始/タイムスタンプ記録及び命令の最後の記録を含む2つの記録から、最大256の記録まで変化し得る。1つの実施形態において、上限は、モデル依存であり得る。報告グループ内に入れられる16バイト記録の数は、2(RGS+1)である。
一次CPU能力抑止制御ビット738(Yビット)及び二次CPU能力抑止制御ビット739(Zビット)は、まとめて抑止制御(suppression control)と呼ばれる。報告グループのストアの抑止とは、ストアが実施されないよう試みることを意味する。構成内の全てのCPUのCPU能力が同じであるとき、抑止制御は有効でなく、抑止は行われない。構成において、あるCPUのCPU能力が別のCPUの能力と異なる場合、抑止制御は有効であり、少なくとも1つのCPUがCPU能力又は一次CPU能力で動作していると言われ、一方、少なくとも1つの他のCPUが二次CPU能力で動作していると言われる。一次CPU能力と二次CPU能力は、異なる動作速度である。Yビット738及びZビット739の両方がゼロであるとき、抑止は行われない。Yビット738がゼロであり、Zビット739が1であるとき、例えばプロセッサ106などのCPUが二次CPU能力で動作している場合、抑止が行われる。Yビット738が1であり、Zビット739がゼロであるとき、例えばプロセッサ106などのCPUが一次CPU能力で動作している場合、抑止が行われる。Yビット738及びZビット739の両方とも1である場合、抑止が行われる。
図11の上記のフィールド及びビットは、フィールドの配置及び呼称の一例であり、明確にするために本明細書で与えられている。他の実施形態において、フィールドのサブセットだけを使用してもよいこと、及び、フィールドはいずれの順序又は位置としてもよく、及び/又は、異なる名称で表し得ることが理解されるであろう。
ランタイム・インストルメンテーションがインストールされ、イネーブルにされると、多数のイベント及びデータを、収集バッファ508内にキャプチャすることができる。収集バッファ508は、そのコンテンツが、プログラム実行中にプログラム106により認識されたイベントについて報告する記録のセットをキャプチャするために用いられる。例として、1又は複数の成立した分岐の実行、トランザクション実行アボート・イベント、キャッシュミス、及びrun−time instrumentation emit命令のオペランドが挙げられる。IC制御フィールド734及びDC制御フィールド736は、プログラムが、命令又はデータ・プリフェッチ動作を改善するために何らかの是正アクションを取ることに関心があるレベルを設定する。RIEMIT命令の実行は、汎用レジスタの値を収集バッファ508内に格納することにより、これを収集する。付加的なデータを収集し、及び/又はモデル依存サンプル命令データの収集に用いられる命令データ・バッファ(IDB)(図示せず)などの他のバッファに格納し、ランタイム・インストルメンテーション命令記録を構築することができる。
収集されたランタイム・インストルメンテーション情報は、サンプリング・ベースで報告される。命令ストリームからの命令がサンプリングされる。サンプリングされた命令は、サンプル命令と呼ばれる。サンプル命令を判断するためのモードの数は、ランタイム・インストルメンテーションがイネーブルにされたとき、以下のように定められる。サイクス・カウント・モードにおいて、カウントは、SF740又はRSIC742のいずれかで指定されたCPUサイクルの数であり、どちらが用いられても、現在の間隔のカウントをもたらす。カウントは、サンプリング・モードと関連したイベントに応答して調整される。例えば、プロセッサ106が動作状態であるとき、カウントをデクリメントすることができる。カウントが、ゼロなどの閾値までデクリメントされると、現在の命令はサンプル命令として認識され、カウントはSF740に再初期化され、次のサイクルにおいてデクリメントされ始める。サンプル命令の実行が終了すると、適切な場合に、報告される。
命令カウント・モードでは、カウントは、SF740又はRSIC742のいずれかにおいて指定され、どちらが用いられても、現在の間隔のカウントをもたらす。単一の操作単位から成る命令については、カウントを調整するために用いられるイベントとして、命令の完了時にカウントがデクリメントされる。カウントがゼロなどの閾値にデクリメントされたとき、命令はサンプル命令である。複数の操作単位から成る命令については、以下の方法の1つでカウントをデクリメントすることができる。:
a.割り込み可能命令については、部分的完了を通じた全ての操作単位が、カウントをデクリメントする1つのカウント単位を表す。
b.割り込み可能命令については、最終的完了を通じた最新の部分的完了以後の全ての操作単位が、カウントをデクリメントする1つのカウント単位を表す。
c.命令のパラメータにより指定される処理のCPU決定の小部分を実施した後に完了する命令については、完了が、カウントをデクリメントする1つのカウント単位を表す。
d.複数の操作単位を実施した後に完了するが、上のカテゴリa−cに入らない命令については、最後の操作単位の完了が、カウントをデクリメントする1つのカウント単位を表す。
命令の何れかのカウント単位についてカウントがゼロにデクリメントされるとき、命令はサンプル命令である。ゼロなどの閾値に達すると、カウントはSF740に再初期化され、上のa−dで説明されるようなカウント・ダウンを始める。カウント・モードの全ての場合において、報告は、適切な場合、サンプル命令の最後の操作単位の完了後に行われる。
指向サンプリング・モードにおいて、Nビット710が1であり、RINEXT命令が成功裏に実行されたとき、指向サンプリングが行われる。サンプル命令は、RINEXT命令後の次の順次命令(NSI)である。次の順次命令が実行タイプ命令である場合、サンプル命令は、実行タイプ命令のターゲット命令である、指向サンプリングは、サイクル・カウント・モード又は命令カウント・モードにあるときに行われる。カウント・サンプリングは、指向サンプリング及びその結果のアクションのいずれかと併せて続行し、それ以外に影響を受けない限り、カウント・サンプリングから決定されたサンプル命令が試行サンプリングによって決定された同じ命令である場合を除き、2つの報告グループは、格納されない。
いかなるサンプリング・モードも、サンプル命令がRIENXT命令の実行によって識別される場合、報告グループが格納される。しかしながら、ランタイム・インストルメンテーション制御Y738、Z739、Qs614及びPs612は、引き続き有効である。
サイクル・カウント・サンプリング及び命令カウント・サンプリングは、それぞれ、内部システム・イベント及び例外条件に基づいた変動量をもたらす適切な間隔を判断する。カウント・ダウンは、ランタイム・インストルメンテーションがディスエーブルからイネーブルに移行したときに始まる。指向サンプリングは、RINEXTの完了とNSIの間に挿入され得るあらゆるイベントに応じて、変動量がより少ない。注目すべきことに、割り込みは、もはやNSIではないものでなく、NSIであると考えられたものを引き起こし得る。
サンプリングは、モードに関係なく、サンプル命令を識別する。ひとたびサンプル命令が識別されると、サンプル命令の実行の完了時に収集が停止し、報告が始まる。報告を制御する種々の報告制御が、次いで適用される。報告グループのストアが保留中にされたときに収集が再開する。
トランザクション実行モードにないとき、サンプル命令の実行の完了時に、報告グループのストアは保留中になる。トランザクション実行モードにあるとき、サンプル命令の実行の完了時に、報告グループのストアは、トランザクションが終了するまで遅らせられ、次いで保留中になる。報告グループのストアが遅らせられたとき又は保留中のとき、以下の:1)プログラム割り込み、2)緊急マシン・チェック割り込み、3)再起動割り込み、及び4)スーパーバイザ・コール割り込み、のいずれかが認識される場合、報告グループをパージすることができる。
いずれの保留中のI/O割り込み、外部割り込み、及び抑止できるマシン・チェック割り込みも、報告グループが格納されるか、又は報告グループが格納されないとランタイム・インストルメンテーション制御が判断するまで、保留中のままである。
各モードが、異なる報告制御のセットを可能にすることも又はしないこともある。サンプリング・モードは、命令カウント又はサイクル・カウントのいずれかであるが、指向サンプリングも使用され、複数のサンプリング方法により同じサンプル命令を識別することも可能である、このことが起こり、使用される報告制御がサンプリング・モードに応じて異なる場合、指向サンプリングと関連した報告制御が適用される。
発生し得る非同期型及び非要求型システム・イベントのために、特定の命令をサンプリングすることを意図した間隔の正確な判断は、通常、実現可能でない。代わりに、RINEXT命令を用いて、サンプル命令をより詳細に指し示すことができる。
サイクル・カウント・モード又は命令カウント・モードにあるとき、命令カウント又はサイクル・カウント・サンプリングから識別されたサンプル命令に接近しすぎた状態で、RINEXT命令を発行することができる。関連した報告グループのコンテンツは、サンプル命令がRINEXT命令のNSIとして識別されたかのようであり、且つ、サンプル命令のサイクル・カウント又は命令カウント識別が適用されなかったかのようである。
RINEXTの実行は、以下の例外条件のいずれか1つ又は複数が満たされた場合、ノーオペレーション(non-operation)として実行することができる。:即ち、
1.ランタイム・インストルメンテーション制御が有効でない。
2.問題状態において、現在のランタイム・インストルメンテーション制御のPs612がゼロであり、問題状態の報告が許容されないことを示す。
3.スーパーバイザ状態において、現在のランタイム・インストルメンテーション制御のQs614がゼロであり、スーパーバイザ状態の報告が許容されないことを示す。
4.現在のランタイム・インストルメンテーション制御のNビット710がゼロであり、RINEXT命令自体が許容されないことを示す。
5.ストレージが抑止される。
6.現PSW内のフィールドが、ランタイム・インストルメンテーションがディスエーブルにされていることを示す。
7.モデル依存の閾値を超過する。ある期間にRINEXTが発行された回数が、モデル依存の限界を超過した。
8.プログラム・バッファ・フル条件が存在する。
9.ランタイム・インストルメンテーション停止条件が存在する。
10.次の順次命令がstart interpretive execution(解釈実行開始)命令である。
11.次の順次命令がsuperviosr call(スーパーバイザ呼び出し)命令である。
前述のように、プログラム実行中にランタイム・インストルメンテーションがイネーブルにされると、ランタイム・インストルメンテーション・データが、プロセッサ106の収集バッファ508内に収集される。1つの実施形態において、収集バッファ508は、収集された最新の記録を保存するために使用される、プロセッサ106の内部バッファである。サンプル・トリガ・ポイントが検出されると、記録は、プログラム・バッファ522に書き込まれる報告グループの一部として、収集バッファ508からプログラム・バッファ522にコピーされる。1つの実施形態において、記録は、収集バッファ508から非破壊的なやり方でコピーされる。
収集バッファ508は、これがプロセッサ内に配置され、且つ、1つの実施形態においては、所定のイベントについての命令アドレス及びイベント・メタデータを格納するためのレジスタ対のアレイとして実装されるので、「ハードウェア収集バッファ」と呼ぶことができる。イベントの一例は、分岐の成立であり、そこで、レジスタ対は分岐の命令アドレスを保持し、メタデータは分岐のターゲット、並びに分岐の挙動履歴(historic behavior)に関する情報を保持することができる。1つの実施形態においては、レジスタ対が順序付けられ、命令ストリーム内でイベントが発生したときに連続的に更新される。カウンタは、アレイ内の最後に更新されたエントリのインデックスを示すように維持される。1つの実施形態において、収集バッファ508は循環バッファであり、収集バッファ508が一杯になると、次のイベントがアレイ内の最初のエントリを上書きし、後のイベントにおいて、アレイのレジスタ対の連続的更新が再開する。従って、アレイCB[0]乃至CB[N−1]及び最新の更新インデックスを示すカウンタiを仮定すると、キャプチャされたイベントのトレースは、シーケンスCB[i]、CB[i−1]...CB[1]、CB[0]、CB[N−1]、CB[N−2]...CB[i+1]で表される。別の実施形態においては、バッファ内の最も古いエントリを指し示すヘッド・ポインタ、及び、バッファ内の最も新しいエントリを指し示すテール/現在ポインタの2つのポインタが使用される。
任意の所定の実行点でのプロセッサ106の状態を表すイベントが、収集バッファ508内に連続的にキャプチャされる。収集バッファ508は、そのコンテンツが、プログラム実行中にプロセッサ106により認識されるイベント(例えば、1つ又は複数の成立した分岐の実行、トランザクション実行アボート・イベント、RIEMIT命令のオペランド等)に関して報告する記録のセットをキャプチャするために使用される。1つの実施形態において、認識されるイベントは、図11に示されるRICCBのコンテンツによって決まる。収集バッファ508の実施形態におけるエントリは、イベント命令アドレスと、他の関連するイベント・メタデータとを含む。イベント・メタデータの例として、これらに限定されるものではないが、成立した分岐の命令アドレス及びその分岐の挙動履歴についての何らかの情報を含むそのターゲット;RIEMIT命令の命令アドレス及びそれぞれのレジスタ値;並びに、トランザクション・アボート命令のアドレス及びそれぞれのトランザクション復元エントリ・ポイントが挙げられる。
収集バッファ508の実施形態は、最大32個までのエントリ(即ち、32のイベントについての情報)を格納することができ、各命令アドレスは64のビット(例えば、ビット0:63)により指定され、イベント・メタデータは64ビット(例えば、ビット64:127)により指定される。収集バッファのサイズ(RCB)は、記録の数を表すモデル依存のカウントである。1つの実施形態において、収集バッファのバイト・サイズは、16バイトの記録サイズの倍数である。1つの実施形態において、収集バッファのサイズは、モデルの最大報告グループのカウント(RRG)と、収集バッファから取得されない報告グループの記録のカウント(RNC)との間の差を上回るか又はこれに等しい記録の数である。従って、1つの実施形態において、収集バッファのサイズは:
のように表される。
1つの実施形態において、収集バッファ508及び命令データ・バッファのコンテンツは(一方が使用される場合)、以下のイベントによって、パージされる又は他の形で影響を受ける。:即ち(1)割り込み、(2)ランタイム・インストルメンテーション・ファシリティをオン又はオフにするPSWビット(例えば、ビット24)の1からゼロへの変更、及び(3)ランタイム・インストルメンテーション・ファシリティがトランザクション実行モードであるときにサンプル命令が識別された場合(この場合、収集バッファ508及び命令データ・バッファの更なる更新は停止し、トランザクション終了時に再開し、この時点では、報告グループのストアは保留中であり、収集バッファ508及び命令データ・バッファはパージされる)。
図2に示されるエミュレートされたホスト・コンピュータ・システムのような1つの実施形態において、収集バッファ508は、レジスタ及び/又はメモリを用いて実装される。この実施形態において、随意的な命令データ・バッファもまた、存在する場合には、レジスタ及び/又はメモリを用いて実装される。
実施形態において、付加的な能力は、データ収集に影響を与えることがあり、且つ、前述した規則的な命令カウント又はサイクル・カウントのサンプリングを実質的に妨げずに、付加的なデータ収集ポイントをもたらすと考えることができる。これらには、収集バッファ508内に汎用レジスタの値を格納することにより、その値を収集するRIEMIT命令の実行が含まれる。さらに、前述したランタイム・インストルメンテーション制御内のデータ収集制御ビットを用いて、収集したデータのタイプをカスタマイズすることができる(例えば、E、C、R及びB制御ビット)。このように、収集したデータ・タイプは、プログラム可能である。
1つの実施形態において、ランタイム・インストルメンテーション命令の記録を構築するために使用されるモデル依存のサンプル命令データを収集するために、命令データ・バッファが実装される。命令データ・バッファは、命令がサンプル命令として識別されたときに利用可能になると予期して、命令からデータを収集する。1つの実施形態において、命令データ・バッファは、サンプル・ポイントとしてトリガになる命令についての情報が保存される、プログラム内のハードウェア・バッファ/ストレージ位置であるので、ログアウト・プロセス中、情報を収集バッファ508からデータと共に書き出すことができる。収集バッファ508と同様に、命令データ・バッファは、命令アドレス、及びその命令と関連したメタデータを含む。命令データ・バッファ内のメタデータは、多くの場合、マシンに依存し、これらに限定されるものではないが、キャッシュミス関連情報、及び分岐予測関連情報を含むことができる。
実施形態によれば、収集される他のデータは、収集バッファ508からのものでないことも、又は命令データ・バッファからのものでないこともある。例として、以下の部分::即ち、(1)報告グループの最初の記録:タイムスタンプ又は開始記録、及び(2)あらゆる報告グループに関して作成することができ、従って、収集バッファ508内に格納することができる付加的なタイプの記録を形成すために使用されるデータが挙げられ、これらの記録は、存在する場合、報告グループの追加又はマシン依存セクションに入れることができる。これらの記録は、本明細書では「システム情報記録」と呼ばれる。
図12は、サンプル・ポイントにおいてプログラム・バッファ522に格納された報告グループ800の高レベルの例を示す。記録内の報告グループのサイズは、2(RGS+1)に等しいRRGで表され、ここで、RGSは、指数としての報告グループ・サイズである。収集バッファ508以外の位置からコピーされた記録のモデル依存数(RNC)は、報告グループで使用されるとき、非破壊的にコピーされても又はされなくてもよい。図12の例において、RRG=8、RGS=2、及びRNC=4である。図12に示される例示的な報告グループ800は、ヘッダ・セクション802、本体セクション804、追加記録セクション806、及びフッタ・セクション808を含む。
ヘッダ・セクション802は、状態情報、追跡情報、及び/又はタイミング情報を保持するための開始記録又はタイムスタンプ記録を含むことができる。開始記録は、プログラム・バッファに格納された第1の報告グループに関するヘッダ・セクション802内に格納される(即ち、RCA706がROA702に等しいとき)。1つの実施形態において、開始記録は、「02」の記録タイプ・フィールドと、現在幾つの報告グループがプログラム・バッファに格納されているかを示すための報告グループ数(NRG)フィールドと、報告グループのサイズを示すためのRGSフィールドと、プログラム・バッファ522が一杯であるかどうかを示すための停止(S:stopped)フィールドと、ランタイム・インストルメンテーションが停止されたかどうかを示すための停止(H:halted)フィールドと、いつ開始記録が書き込まれたかを示すための時刻(TOD)クロック・フィールドとを含む。1つの実施形態において、開始記録内のフィールドの少なくとも1つのサブセットが、RI制御ブロック(例えば、RICCB)から調達される。タイムスタンプ記録の1つの実施形態は、「03」の記録タイプを有し、その記録がいつ格納されたかを示すためのTODクロック・フィールドを含む。1つの実施形態において、タイムスタンプ記録は、第1の報告グループ以外の報告グループの各々についてのヘッダ・セクション802内に格納される。
報告グループの本体セクション804は、収集バッファ508からサンプリングされたイベント及び情報に関する種々の記録を含むことができる。イベント及び情報は、例えば、発行命令、トランザクション実行アボート、呼び出し、リターン、分岐、及びフィラーによってキャプチャされた状態情報を表すことができる。
1つの実施形態において、発行記録は、RIEMIT命令の正常な実行時に作成され、収集バッファ508に格納される。発行記録の1つの実施形態は、「10」の記録タイプ・フィールドと、発行記録において、現PSWの命令アドレス・ビット位置がどのように表されるかを示すための命令アドレス・コード・フィールドと、アドレッシング・モード(例えば、64ビット、31ビット、又は24ビット)に応じて変わり、且つ、RIEMIT命令のアドレス、若しくはRIEMITが実行タイプ命令のターゲットであった場合には実行タイプ命令の命令アドレスを含む命令アドレス・フィールドと、RIEMIT命令により指定される汎用レジスタからのデータを格納するための発行データ・フィールドとを含む。
1つの実施形態において、トランザクション実行アボート記録が、暗黙的アボートにより、又はトランザクション・アボート命令の実行により、作成され、収集バッファ508に格納される。アボート記録の1つの実施形態は、「11」の記録タイプ・フィールドと、トランザクション実行アボート記録において現PSWの命令アドレス・ビット位置がどのように表されるかを示すための命令アドレス・コード・フィールドと、アドレッシング・モード(例えば、64ビット、31ビット、又は24ビット)に応じて変わり、且つ、アボートされる命令のアドレス、若しくはアボートされる命令が実行タイプ命令のターゲットであった場合には実行タイプ命令の命令アドレスを含む命令アドレス・フィールドと、アボートと関連したいずれかのモデル依存データに関するフィールドとを含む。
1つの実施形態において、呼び出し記録は、R2フィールドが非ゼロであるときのBRANCH AND SAVE(BASR)、BRANCH AND SAVE(BAS)、BRANCH RELATIVE AND SAVE LONG、BRANCH RELATIVE AND SAVE、R2フィールドが非ゼロであるときのBRANCH AND LINK(BALR)、BRANCH AND LINK(BAL)、及びR2フィールドが非ゼロであるときのBRANCH AND SAVE AND SET MODEなどの呼び出しタイプ分岐命令の実行によって作成される。呼び出し記録の1つの実施形態は、「12」の記録タイプ・フィールドと、呼び出し記録において現PSWの命令アドレス・ビット位置がどのように表されるかを示すための命令アドレス・コード・フィールドと、アドレッシング・モード(例えば、64ビット、31ビット、又は24ビット)に応じて変わり、且つ、分岐命令のアドレス、若しくは分岐命令が実行タイプ命令のターゲットであった場合には実行タイプ命令の命令アドレスを含む命令アドレス・フィールドと、分岐が正しく予測されたかどうかを示すための正常動作(well-behaved)フィールドと、分岐ターゲット・アドレス(「呼び出された位置」とも呼ばれる)を含むターゲット・アドレス・フィールドとを含む。
リターン記録及び転送記録は、呼び出し記録と同じフォーマットを有することができる。1つの実施形態において、リターン記録は、「13」の記録タイプ・フィールドを有し、R2フィールドが非ゼロであり、マスクが15であるときのBRANCH ON CONDITION(BCR)などのリターン・タイプ分岐命令の実行によって作成される。リターン記録に関して、命令アドレス・フィールドは、分岐命令のアドレス、又は分岐が実行タイプ命令のターゲットである場合には実行タイプ命令のアドレスを含み、ターゲット・アドレス・フィールドはリターン位置を含む。
1つの実施形態において、転送記録は、「14」の記録タイプ・フィールドを有し、a.R2フィールドが非ゼロであり、且つ、マスクが1−14の範囲内にあるときのBRANCH ON CONDITION(BCR);b.Jビットがゼロであるか又はマスクが1−14の範囲内にあるときのBRANCH ON CONDITION(BC);c.BRANCH ON COUNT(BCT、BCTR、BCTG、BCTGR);d.BRANCH ON INDEX HIGH(BXH、BXHG);e.BRANCH ON INDEX LOW OR EQUAL(BXLE,BXLEG);f.BRANCH RELATIVE ON CONDITION(BRC);g.BRANCH RELATIVE ON CONDITION LONG(BRCL);h.BRANCH RELATIVE ON COUNT(BRCT,BRCTG);i.BRANCH RELATIVE ON COUNT HIGH(BRCTH);j.BRANCH RELATIVE ON INDEX HIGH(BRXH、BRXHG);k.BRANCH RELATIVE ON INDEX LOW OR EQUAL(BRXLE、BRXLG);l.COMPARE AND BRANCH(CRB、CGRB);m.COMPARE AND BRANCH RELATIVE(CRJ、CGRJ);n.COMPARE IMMEDIATE AND BRANCH(CIB、CGIB);o.COMPARE IMMEDIATE AND BRANCH RELATIVE(CIJ、CGIJ);p.COMPARE LOGICAL AND BRANCH(CLRB、CLGRB);q.COMPARE LOGICAL AND BRANCH RELATIVE(CLRJ,CLGRJ);r.COMPARE LOGICAL IMMEDIATE AND BRANCH(CLIB、CLGIB);及びs.COMPARE LOGICAL IMMEDIATE AND BRANCH RELATIVE(CLIJ、CLGIJ)のようなリターン・タイプ分岐命令の実行により作成される。転送記録は、分岐が成立したときに作成される。転送記録に関して、命令アドレス・フィールドは、分岐命令のアドレス、又は分岐が実行タイプ命令のターゲットである場合には実行タイプ命令のアドレスを含み、ターゲット・アドレス・フィールドはリターン位置を含む。
フィラー記録は、収集バッファ508内の有効な記録の数が、現在のRGSの報告グループを満たすのに十分でない場合に、報告グループにおいて使用される。フィラー記録の1つの実施形態は、記録がフィラー記録であることを示すための「00」の記録タイプ・フィールドを含み、残りのバイトは定義されない。
追加記録セクション806は、存在する場合、モデル依存の記録を含むことができる。1つの実施形態において、追加記録のフォーマットは、記録が追加記録であることを示すうように、記録タイプが「01」に設定され、追加記録の残りのバイトはモデル依存データを含むことができる点を除いて、フィラー記録に類似している。
フッタ・セクション808は、サンプル命令の実行についての情報を含む命令記録を含むことができる。命令記録は、サンプル命令に関して報告グループが格納されたときに作成される。命令記録の1つの実施形態は、「04」の記録タイプ・フィールド「04」と、命令記録において、現PSWの命令アドレス・ビット位置がどのように表されるかを示すための命令アドレス・コード・フィールドと、アドレッシング・モード(例えば、64ビット、31ビット、又は24ビット)に応じて変わり、且つ、サンプル命令のアドレス、又はサンプル命令が実行タイプ命令のターゲットであった場合には実行タイプ命令の命令アドレスを含む命令アドレス・フィールドと、IDBから収集されたいずれかのモデル依存データを含む命令データ・バッファ(IDB)フィールドとを含む。
図13は、ランタイム・インストルメンテーション指向サンプリングを実施することができるプロセス・フロー900を示す。プロセス・フロー900は、プロセッサ106により実施することができる。プロセス・フロー900は、図2のエミュレートされたプロセッサ29により代替的に実施することもできる。説明を簡単にするために、本明細書では、プロセス・フロー900は、プロセッサ106に関連して説明される。
前述のように、最初に、ランタイム・インストルメンテーション・モジュール506及び図9のレジスタ510を、図10及び図11の制御ブロック600及び700をロードするためのLRIC命令を用いて指向サンプリングをサポートするように構成することができる。ひとたびランタイム・インストルメンテーション制御が構成され、イネーブルにされると、収集バッファ508内にイベント及びデータなどの情報を収集することができる。規則的に又は指示通りに、同じくランタイム・インストルメンテーション・プログラム・バッファ522とも呼ばれるプログラム・バッファ522内への報告グループの格納をトリガするサンプル命令が得られる。
ブロック902において、プロセッサ106は、命令ストリームからRINEXT命令をフェッチする。命令ストリームは、ランタイム・メモリ504からの問題状態プログラム又はスーパーバイザ状態プログラムとすることができる。命令ストリームは、RINEXT命令、続いてプログラム順の次の順次命令を含む。RINEXT命令は、命令のオペコードに基づいて識別することができる。1つの実施形態において、RINEXT命令は、ビット0−7の16進数「AA]及びビット12−15の「0」を有する32ビットである。
ブロック904において、プロセッサ106は、RINEX命令を実行する。ブロック906において、RINEXT命令の実行は、現在のランタイム・インストルメンテーション状態が、プログラム実行中、ランタイム・インストルメンテーション情報を報告するためのサンプル・ポイントの設定を可能にするかどうかを判断することを含む。ランタイム・インストルメンテーションがサンプル・ポイントを設定するのを可能にするために、現在実行されている命令ストリームと関連したPSWにおいて、ランタイム・インストルメンテーションをイネーブルにしなければならないなど、種々の条件を満たす必要がある。同様に、状態特有の報告をイネーブルにする必要があり(Ps612、Qs614)、サンプリング・モードM−フィールド708は有効サンプリング・モードを示す必要があり、N−ビット710をイネーブルにする必要があり、抑止制御は、非抑止を示すべきであり、ランタイム・インストルメンテーション制御は有効な構成であるべきであり、RINEXT命令の近くのモデル依存制限を満たす必要があり、プログラム・バッファ・フル条件は存在すべきでなく、ランタイム・インストルメンテーション停止(halted)条件は存在すべきでなく、次の順次命令は制限命令であるべきではない。
ブロック908において、現在のランタイム・インストルメンテーション状態が、サンプル・ポイントの設定を可能にしない場合、RINEXT命令は、ノーオペレーション(no-operation)として扱われる。他の場合には、ブロック910において、現在のランタイム・インストルメンテーション状態が、サンプル・ポイントの設定を可能にする場合、NSIは、ランタイム・インストルメンテーション・イベントを引き起こすためのサンプル命令にされる。
ブロック912において、NSIの実行に基づいて、ランタイム・インストルメンテーション・イベントは、報告グループとして、ランタイム・インストルメンテーション・プログラム・バッファ522内にランタイム・インストルメンテーション情報を記録させる。システム情報からの記録及び収集バッファ508からの記録の組み合わせを併合して、図12の報告グループ800のような報告グループを、ランタイム・インストルメンテーション・プログラム・バッファ522に格納することができる。
前述のように、他のサンプリング・モードのサンプル命令の間にRINEXT命令を挿入することができる。制御ブロック部分700をロードするためのLRIC命令を用いて、サンプリング・モードを、サイクル・カウント・モード及び命令カウント・モードの一方に設定することができる一方、現在のランタイム・インストルメンテーション状態は、NSIの実行に基づいてサンプル・ポイントを設定することが可能である。カウントは、サンプリング・モードと関連したサンプリング間隔を確立するように構成される。カウントは、各CPUサイクルにおいて又は命令完了時にカウントをデクリメントするといった、サンプリング・モードと関連したイベントに応答して調整される。命令ストリーム内の命令は、カウントがゼロなどの閾値に達することに応答して、サンプル命令として識別される。サンプル命令の完了に応答して、報告グループに関して、プロセッサ106の収集バッファ508内に収集された情報の記録が生成される。ランタイム・インストルメンテーションがサイクル・カウント・モード又は命令カウント・モードのいずれかに対して設定される間にRINEXT命令に遭遇し、且つ、N−ビット710が0の場合、RINEXT命令はノーオペレーションとして扱われる。しかしながら、N−ビット710が設定された場合、プロセッサ106は、サイクル・カウント・モード又は命令カウント・モードにある間、RINEXT命令を実行することができる。従って、サイクル・カウント・モード又は命令カウント・モードに基づいて、サンプル命令を完了する連続的インスタンスの間に、プロセッサ106により、1又は複数のRINEXT命令を実行することができる。これにより、インストルメント化命令ストリームの規則的間隔サンプリング及び指向サンプリングの両方が可能になる。場合によっては、間隔ベースのサンプリング・モード及び指向サンプリング・モードの両方が、サンプル命令と同じ命令を識別することができる。プロセッサ106が、命令ストリーム内の命令がNSI、及びサンプル命令のような命令を認識するサンプリング・モードの両方に基づくサンプル命令であると判断すると、同じ命令が事実上2度識別されたとしても、単一の報告グループだけが、ランタイム・インストルメンテーション・プログラム・バッファ522内に格納される。
上述のように、実施形態は、コンピュータ実装プロセス及びそれらのプロセスを実施するための装置の形で具体化することができる。実施形態は、製造物品として有形媒体内に具体化された命令を含むコンピュータ・プログラム・コード論理1004を有するコンピュータ可読/使用可能媒体1002上の、図14に示されるようなコンピュータ・プログラム製品1000を含むことができる。コンピュータ可読/使用可能媒体1002に関する例示的な製造物品は、フロッピィ・ディスケット、CD−ROM、ハードドライブ、ユニバーサル・シリアル・バス(USB)フラッシュ・ドライブ、又は他のいずれかのコンピュータ可読ストレージ媒体を含むことができ、ここで、コンピュータ・プログラム・コード論理1004がコンピュータにロードされ、コンピュータにより実行されると、コンピュータは、本発明を実施するための装置となる。実施形態は、例えば、ストレージ媒体内に格納される、コンピュータにロードされる及び/又はコンピュータによって実行される、又は電気配線若しくはケーブルにより光ファイバを通じて又は電磁放射を介してといった何らかの伝送媒体上で伝送される、コンピュータ・プログラム・コード論理1004を含み、ここで、コンピュータ・プログラム・コード論理1004がコンピュータにロードされ、コンピュータにより実行されると、コンピュータは、本発明を実施するための装置となる。汎用マイクロプロセッサ上に実装される場合、コンピュータ・プログラム・コード論理1004のセグメントは、特定の論理回路を作成するようにマイクロプロセッサを構成する。
技術的効果及び利点として、ランタイム・インストルメンテーションを用いる、キャプチャされたイベントの指向サンプリングが挙げられる。プロセッサ内にアーキテクチャ化されたRINEXT命令により、次の順次命令の完了時に、インストルメント化されたプログラムが、サンプル・ポイントを指定することが可能になる。これにより、サイクル・カウント及び命令カウント・ベースのサンプリングにわたって、より正確なサンプリングがもたらされる。指向サンプリングがイネーブルにされていないとき、RINEXTは、ノーオペレーション命令として現れるので、プログラム内にRINEXT命令を含ませることにより、プログラムを再コンパイルすることなく、指向サンプリングを選択的にイネーブルにすることが可能になる。エミュレーション・ルーチンを用いるエミュレートされた又は仮想プロセッサ内に、RINEXT命令に対するサポートを含ませることができる。
本明細書で用いられる用語は、特定の実施形態を説明する目的のためのものにすぎず、本発明を限定することを意図したものではない。本明細書で用いられる場合、単数形「1つの(a)」、「1つの(an)」及び「その(the)」は、文脈が特に明示しない限り、複数形も同様に含むことを意図したものである。「含む(comprise)」及び/又は「含んでいる(comprising)」という用語は、本明細書で用いられる場合、記述された特徴、整数、ステップ、動作、要素、及び/又はコンポーネントの存在を指定するが、1つ又は複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、及び/又はそれらのグループの存在又は追加を排除するものではないこともさらに理解されるであろう。
下記の特許請求の範囲におけるすべての機能付き手段(ミーンズ・プラス・ファンクション)又は機能付き工程(ステップ・プラス・ファンクション)の対応する構造、部材、動作、及び均等物は、もしあれば、その機能を、明確に請求されている他の特許請求された要素と組み合わせて実行するための、あらゆる構造、部材、又は動作を含むことが意図されている。本発明の説明は、例証及び説明のために提示されたものであり、網羅的であること又は本発明を開示された形態に限定することを意図したものではない。当業者には、本発明の範囲から逸脱しない多くの修正及び変形が明らかとなるであろう。実施形態は、本発明の原理及び実際の適用を最も良く説明し、その他の当業者が企図される特定の使用に適した種々の修正を伴う種々の実施形態について本発明を理解できるように、選択され、説明された。
当業者により認識されるように、本発明の態様は、システム、方法、又はコンピュータ・プログラム製品として具体化することができる。従って、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)、又はソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形を取ることができ、これらは全て、本明細書において、一般的に「回路」、「モジュール」又は「システム」と呼ぶことができる。さらに、本発明の態様は、コンピュータ可読プログラム・コードが組み込まれた、1つ又は複数のコンピュータ可読媒体内に具体化されたコンピュータ・プログラム製品の形を取ることができる。
1つ又は複数のコンピュータ可読媒体の任意の組み合わせを利用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、これらに限定されるものではないが、例えば、電子的、磁気的、光学的、電磁気的、赤外線、若しくは半導体のシステム、装置、若しくはデバイス、又は上記のものの任意の組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例(非網羅的なリスト)には、以下のもの、即ち、1つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能なプログラム可能読み出し専用メモリ(EPROM又はフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD−ROM)、光記憶装置、磁気記憶装置、又は上記のものの任意の適切な組み合わせが含まれる。本文書の文脈において、コンピュータ可読ストレージ媒体は、命令実行システム、装置若しくはデバイスによって、又はそれらとの関連で使用するためのプログラムを収容又は格納することができる任意の有形媒体とすることができる。
コンピュータ可読信号媒体は、コンピュータ可読プログラム・コードが、例えばベースバンド内に又は搬送波の一部として内部に具体化された伝搬データ信号を含むことができる。このような伝搬信号は、これらに限定されるものではないが、電磁気、光、又はそれらの任意の適切な組み合わせを含む種々の形態のいずれかを取ることができる。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではなく、且つ、命令実行システム、装置若しくはデバイスによって、又はこれらとの関連で使用するためのプログラムを通信し、伝搬し、又は搬送することができる任意のコンピュータ可読媒体とすることができる。
コンピュータ可読媒体上に具体化されたプログラム・コードは、これらに限定されるものではないが、無線、有線、光ファイバ・ケーブル、RF等、又は上記のもののいずれかの適切な組み合わせを含む、いずれかの適切な媒体を用いて伝送することができる。
本発明の態様の動作を実行するためのコンピュータ・プログラム・コードは、Java(登録商標)、Smalltalk、C++等のようなオブジェクト指向型プログラミング言語、及び「C」プログラミング言語又は同様のプログラミング言語のような従来の手続き型プログラミング言語を含む、1つ又は複数のプログラミング言語のいずれかの組み合わせで記述することができる。プログラム・コードは、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立したソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。後者のシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)若しくは広域ネットワーク(WAN)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は、外部コンピュータへの接続がなされる場合もある(例えば、インターネット・サービス・プロバイダを用いるインターネットを通じて)。
本発明の態様は、本発明の実施形態による方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図及び/又はブロック図を参照して以下で説明される。フローチャート図及び/又はD−2ブロック図の各ブロック、並びにフローチャート図及び/又はブロック図内のブロックの組み合わせは、コンピュータ・プログラム命令によって実装することができることが理解されるであろう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサにより実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装するための手段を生成するようにすることができる。
これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスに特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装する命令を含む製品を製造するようにすることもできる。
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、そのコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で、コンピュータ実装プロセスを生成するための一連の動作ステップを実施させて、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装するためのプロセスを提供するようにすることもできる。
上述のように、実施形態は、コンピュータ実装プロセス及びそれらのプロセスを実施するための装置の形で具体化することができる。実施形態において、本発明は、1つ又は複数のネットワーク要素により実行されるコンピュータ・プログラム・コードにおいて具体化される。実施形態は、製造物品として有形媒体内に具体化された、命令を含むコンピュータ・プログラム・コード論理を有するコンピュータ使用可能媒体上のコンピュータ・プログラム製品を含む。コンピュータ使用可能媒体に関する例示的な製造物品は、フロッピィ・ディスケット、CD−ROM、ハードドライブ、ユニバーサル・シリアル・バス(USB)フラッシュ・ドライブ、又は他のいずれかのコンピュータ可読ストレージ媒体を含むことができ、ここで、コンピュータ・プログラム・コード論理がコンピュータにロードされ、コンピュータにより実行されると、コンピュータは、本発明を実施するための装置となる。実施形態は、例えば、ストレージ媒体内に格納される、コンピュータにロードされる及び/又はコンピュータによって実行される、又は電気配線若しくはケーブルにより、光ファイバを通じて、又は電磁放射を介してといった何らかの伝送媒体上で伝送される、コンピュータ・プログラム・コード論理を含み、ここで、コンピュータ・プログラム・コード論理がコンピュータにロードされ、コンピュータにより実行されると、コンピュータは、本発明を実施するための装置となる。汎用マイクロプロセッサ上に実装される場合、コンピュータ・プログラム・コード論理のセグメントは、特定の論理回路を作成するようにマイクロプロセッサを構成する。
図面内のフローチャート及びブロック図は、本発明の種々の実施形態によるシステム、方法及びコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含むモジュール、セグメント、又はコードの部分を表すことができる。幾つかの代替的な実装において、ブロック内に記載された機能は、図面内に記載された順序とは異なる順序で行われ得ることにも留意すべきである。例えば、連続して示された2つのブロックが、関与する機能に応じて、実際には、実質的に同時に実行されることもあり、ときにはブロックが逆順に実行されることもある。また、ブロック図及び/又はフローチャート図の各ブロック、並びにブロック図及び/又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を行う専用ハードウェア・ベースのシステムによって、又は専用ハードウェアとコンピュータ命令との組み合わせによって実装できることにも留意されたい。
1、106:プロセッサ
2、22、105:メモリ
11:ストレージ・デバイス
50:ホスト・コンピュータ・システム
100、500:システム
111:プログラミング・コード
112:アプリケーション・プログラム
200:データ処理ネットワーク
303:キャッシュ
304:I/Oユニット
305:命令フェッチ・ユニット
306:デコード/ディスパッチ・ユニット
307:実行ユニット
308:分岐ユニット
309:アーキテクチャ化レジスタ
310:ロード・ストア・ユニット
311:プログラム・カウンタ
504:ランタイム・メモリ
506:インストルメンテーション・モジュール
508:収集バッファ
510:レジスタ
512:PSWデータ
514:主メモリ
516:オペレーティング・システム
518:アプリケーション
520:ストレージ
522:プログラム・バッファ
702:ランタイム・インストルメンテーション起点アドレス(ROA)
704:ランタイム・インストルメンテーション・プログラム・バッファ制限アドレス(RLA)
800:報告グループ
802:ヘッダ・セクション
804:本体セクション
806:追加記録セクション
808:フッタ・セクション
1000:コンピュータ・プログラム製品
1002:コンピュータ可読/使用可能媒体
1004:コンピュータ・プログラム・コード論理

Claims (20)

  1. ランタイム・インストルメンテーションの指向サンプリングを実施するためのコンピュータ・プログラム製品であって、
    処理回路により可読であり、且つ、方法を実施するための前記処理回路により実施するための命令を格納する有形ストレージ媒体を含み、
    命令ストリームからrun−time instrumentation next(RINEXT)命令をフェッチすることであって、前記命令ストリームは、RINEXT命令、続いてプログラム順の次の順次命令(NSI)を含む、フェッチすることと、
    プロセッサにより、前記RINEXT命令を実行することと、
    を含み、前記実行することは、
    プログラム実行中、現在のランタイム・インストルメンテーション状態が、ランタイム・インストルメンテーション情報を報告するためのサンプル・ポイントの設定を可能にするかどうかを判断することと、
    前記現在のランタイム・インストルメンテーション状態が前記サンプル・ポイントの設定を可能にすることに基づいて、前記NSIを、ランタイム・インストルメンテーション・イベントを引き起こすためのサンプル命令にすることと、
    前記NSIサンプル命令を実行することに基づいて、前記ランタイム・インストルメンテーション・イベントに、ランタイム・インストルメンテーション情報を、報告グループとしてランタイム・インストルメンテーション・プログラム・バッファ内に記録させることと、
    を含む方法を実行する、コンピュータ・プログラム製品。
  2. 前記現在のランタイム・インストルメンテーション状態が前記サンプル・ポイントの設定を可能にしないことに基づいて、前記RINEXT命令をノーオペレーション命令として扱うことをさらに含む、請求項1に記載のコンピュータ・プログラム製品。
  3. 前記現在のランタイム・インストルメンテーション状態が前記NSIの実行に基づいて前記サンプル・ポイントの設定を可能にする間、サンプル・モードを、サイクル・カウント・モード及び命令カウント・モードの一方に設定することと、
    前記NSI及び前記サンプリング・モードの両方が前記命令を前記サンプル命令として認識することに基づいて、前記命令ストリーム内の命令が前記サンプル命令であることを判断することであって、前記NSI及び前記サンプリング・モードの両方が前記命令を前記サンプル命令として認識されたとき、単一の報告グループだけが前記ランタイム・インストルメンテーション・プログラム・バッファに格納される、判断することと、
    をさらに含む、請求項1に記載のコンピュータ・プログラム製品。
  4. load run−time instrumentation controls(LRIC)命令に応答して、ランタイム・インストルメンテーション制御を構成することをさらに含み、前記LRIC命令はサンプリング・モード及びRINEXT制御を確立する、請求項1に記載のコンピュータ・プログラム製品。
  5. 前記LRIC命令は、前記サンプル・ポイントで収集された情報の記録を格納するためのランタイム・インストルメンテーション・プログラム・バッファ現在アドレス、ランタイム・インストルメンテーション起点アドレス、ランタイム・インストルメンテーション・プログラム・バッファ制限アドレス、問題状態サンプル報告制御、スーパーバイザ状態サンプル報告制御、スケール・ファクタ、及び残りのサンプル間隔カウントをさらに確立する、請求項4に記載のコンピュータ・プログラム製品。
  6. a.ランタイム・インストルメンテーションがイネーブルにされていない、
    b.問題状態において、問題状態報告が許可されない、
    c.スーパーバイザ状態において、スーパーバイザ状態が許可されない、
    d.ランタイム・インストルメンテーション制御の設定に基づいて、前記RINEXT命令の実行が許可されない、及び
    e.前記RINEXT命令が、モデル依存制限に従って以前のRINEXT命令に近すぎる状態で発行された、
    のうちのいずれか1つに基づいて、前記現在のランタイム・インストルメンテーション状態が非イネーブルになる、請求項1に記載のコンピュータ・プログラム製品。
  7. 前記プロセッサは、別の命令セット・アーキテクチャのホスト・プロセッサ上でエミュレートされている命令セット・アーキテクチャの、エミュレートされたプロセッサであり、前記RINEXT命令の実行は、前記RINEXT命令の実行をエミュレートするように構成された1つ又は複数のエミュレーション・ソフトウェア・ルーチンによって行われる、請求項1に記載のコンピュータ・プログラム製品。
  8. ランタイム・インストルメンテーション指向サンプリングを実施するための方法であって、前記方法は、
    命令ストリームからrun−time instrumentation next(RINEXT)命令をフェッチすることであって、前記命令ストリームは、RINEXT命令、続いてプログラム順の次の順次命令(NSI)を含む、フェッチすることと、
    プロセッサにより、前記RINEXT命令を実行することと、
    を含み、前記実行することは、
    プログラム実行中、現在のランタイム・インストルメンテーション状態が、ランタイム・インストルメンテーション情報を報告するためのサンプル・ポイントの設定を可能にするかどうかを判断することと、
    前記現在のランタイム・インストルメンテーション状態が前記サンプル・ポイントの設定を可能にすることに基づいて、前記NSIを、ランタイム・インストルメンテーション・イベントを引き起こすためのサンプル命令にすることと、
    前記NSIサンプル命令を実行することに基づいて、前記ランタイム・インストルメンテーション・イベントに、ランタイム・インストルメンテーション情報を、報告グループとしてランタイム・インストルメンテーション・プログラム・バッファ内に記録させることと、
    を含む、方法。
  9. 前記現在のランタイム・インストルメンテーション状態が前記サンプル・ポイントの設定を可能にしないことに基づいて、前記RINEXT命令をノーオペレーション命令として扱うことをさらに含む、請求項8に記載の方法。
  10. 前記現在のランタイム・インストルメンテーション状態が前記NSIの実行に基づいて前記サンプル・ポイントの設定を可能にする間、サンプル・モードを、サイクル・カウント・モード及び命令カウント・モードの一方に設定することと、
    前記NSI及び前記サンプリング・モードの両方が前記命令を前記サンプル命令として認識することに基づいて、前記命令ストリーム内の命令が前記サンプル命令であることを判断することであって、前記NSI及び前記サンプリング・モードの両方が前記命令を前記サンプル命令として認識されたとき、単一の報告グループだけが前記ランタイム・インストルメンテーション・プログラム・バッファに格納される、判断することと、
    をさらに含む、請求項8に記載の方法。
  11. load run−time instrumentation controls(LRIC)命令に応答して、ランタイム・インストルメンテーション制御を構成することをさらに含み、前記LRIC命令はサンプリング・モード及びRINEXT制御を確立する、請求項8に記載の方法。
  12. 前記LRIC命令は、前記サンプル・ポイントで収集された情報の記録を格納するためのランタイム・インストルメンテーション・プログラム・バッファ現在アドレス、ランタイム・インストルメンテーション起点アドレス、ランタイム・インストルメンテーション・プログラム・バッファ制限アドレス、問題状態サンプル報告制御、スーパーバイザ状態サンプル報告制御、スケール・ファクタ、及び残りのサンプル間隔カウントをさらに確立する、請求項11に記載の方法。
  13. a.ランタイム・インストルメンテーションがイネーブルにされていない、
    b.問題状態において、問題状態報告が許可されない、
    c.スーパーバイザ状態において、スーパーバイザ状態が許可されない、
    d.ランタイム・インストルメンテーション制御の設定に基づいて、前記RINEXT命令の実行が許可されない、及び
    e.前記RINEXT命令が、モデル依存制限に従って以前のRINEXT命令に近すぎる状態で発行された、
    のうちのいずれか1つに基づいて、前記現在のランタイム・インストルメンテーション状態が非イネーブルになる、請求項8に記載の方法。
  14. 前記プロセッサは、別の命令セット・アーキテクチャのホスト・プロセッサ上でエミュレートされている命令セット・アーキテクチャの、エミュレートされたプロセッサであり、前記RINEXT命令の実行は、前記RINEXT命令の実行をエミュレートするように構成された1つ又は複数のエミュレーション・ソフトウェア・ルーチンによって行われる、請求項8に記載の方法。
  15. ランタイム・インストルメンテーション指向サンプリングを実装ためのシステムであって、
    メモリと、
    方法を実行するように構成されたランタイム・インストルメンテーション・モジュールを含むプロセッサであって前記方法が、、
    命令ストリームからrun−time instrumentation next(RINEXT)命令をフェッチすることであって、前記命令ストリームは、RINEXT命令、続いてプログラム順の次の順次命令(NSI)を含む、フェッチすることと、
    プロセッサにより、前記RINEXT命令を実行することと、
    を含み、前記実行することは、
    プログラム実行中、現在のランタイム・インストルメンテーション状態が、ランタイム・インストルメンテーション情報を報告するためのサンプル・ポイントの設定を可能にするかどうかを判断することと、
    前記現在のランタイム・インストルメンテーション状態が前記サンプル・ポイントの設定を可能にすることに基づいて、前記NSIを、ランタイム・インストルメンテーション・イベントを引き起こすためのサンプル命令にすることと、
    前記NSIサンプル命令を実行することに基づいて、前記ランタイム・インストルメンテーション・イベントに、ランタイム・インストルメンテーション情報を、前記メモリ内の報告グループとしてランタイム・インストルメンテーション・プログラム・バッファ内に記録させることと、
    を含む、システム。
  16. 前記現在のランタイム・インストルメンテーション状態が前記サンプル・ポイントの設定を可能にしないことに基づいて、前記RINEXT命令をノーオペレーション命令として扱うことをさらに含む、請求項15に記載のシステム。
  17. 前記現在のランタイム・インストルメンテーション状態が前記NSIの実行に基づいて前記サンプル・ポイントの設定を可能にする間、サンプル・モードを、サイクル・カウント・モード及び命令カウント・モードの一方に設定することと、
    前記NSI及び前記サンプリング・モードの両方が前記命令を前記サンプル命令として認識することに基づいて、前記命令ストリーム内の命令が前記サンプル命令であることを判断することであって、前記NSI及び前記サンプリング・モードの両方が前記命令を前記サンプル命令として認識されたとき、単一の報告グループだけが前記ランタイム・インストルメンテーション・プログラム・バッファに格納される、判断することと、
    をさらに含む、請求項15に記載のシステム。
  18. load run−time instrumentation controls(LRIC)命令に応答して、ランタイム・インストルメンテーション制御を構成することをさらに含み、前記LRIC命令はサンプリング・モード及びRINEXT制御を確立する、請求項15に記載のシステム。
  19. 前記LRIC命令は、前記サンプル・ポイントで収集された情報の記録を格納するためのランタイム・インストルメンテーション・プログラム・バッファ現在アドレス、ランタイム・インストルメンテーション起点アドレス、ランタイム・インストルメンテーション・プログラム・バッファ制限アドレス、問題状態サンプル報告制御、スーパーバイザ状態サンプル報告制御、スケール・ファクタ、及び残りのサンプル間隔カウントをさらに確立する、請求項18に記載のシステム。
  20. a.ランタイム・インストルメンテーションがイネーブルにされていない、
    b.問題状態において、問題状態報告が許可されない、
    c.スーパーバイザ状態において、スーパーバイザ状態が許可されない、
    d.ランタイム・インストルメンテーション制御の設定に基づいて、前記RINEXT命令の実行が許可されない、及び
    e.前記RINEXT命令が、モデル依存制限に従って以前のRINEXT命令に近すぎる状態で発行された、
    のうちのいずれか1つに基づいて、前記現在のランタイム・インストルメンテーション状態が非イネーブルになる、請求項15に記載のシステム。
JP2014543661A 2012-03-16 2013-03-01 ランタイム・インストルメンテーション指向サンプリング Active JP6153533B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/422,532 US9465716B2 (en) 2012-03-16 2012-03-16 Run-time instrumentation directed sampling
US13/422,532 2012-03-16
PCT/JP2013/001267 WO2013136705A1 (en) 2012-03-16 2013-03-01 Run-time instrumentation directed sampling

Publications (2)

Publication Number Publication Date
JP2015510153A true JP2015510153A (ja) 2015-04-02
JP6153533B2 JP6153533B2 (ja) 2017-06-28

Family

ID=49158801

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014543661A Active JP6153533B2 (ja) 2012-03-16 2013-03-01 ランタイム・インストルメンテーション指向サンプリング

Country Status (15)

Country Link
US (2) US9465716B2 (ja)
EP (1) EP2825961B1 (ja)
JP (1) JP6153533B2 (ja)
KR (1) KR101572404B1 (ja)
CN (1) CN104169888B (ja)
AU (1) AU2013233831B2 (ja)
CA (1) CA2866809C (ja)
IL (1) IL235094A (ja)
NO (1) NO2754961T3 (ja)
RU (1) RU2585982C2 (ja)
SG (1) SG11201404860VA (ja)
SI (1) SI2825961T1 (ja)
TW (1) TWI534613B (ja)
WO (1) WO2013136705A1 (ja)
ZA (1) ZA201406609B (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9804951B2 (en) * 2014-10-08 2017-10-31 Signalfx, Inc. Quantization of data streams of instrumented software
US9760353B2 (en) * 2014-12-19 2017-09-12 Signalfx, Inc. Dynamically changing input data streams processed by data stream language programs
US10394692B2 (en) 2015-01-29 2019-08-27 Signalfx, Inc. Real-time processing of data streams received from instrumented software
WO2017028908A1 (en) 2015-08-18 2017-02-23 Telefonaktiebolaget Lm Ericsson (Publ) Method for observing software execution, debug host and debug target
GB2551574B (en) * 2016-06-24 2019-11-27 Advanced Risc Mach Ltd An apparatus and method for generating and processing a trace stream indicative of instruction execution by processing circuitry
GB2551747B (en) * 2016-06-29 2019-04-10 Advanced Risc Mach Ltd Diagnostic data capture
US10282327B2 (en) * 2017-01-19 2019-05-07 International Business Machines Corporation Test pending external interruption instruction
RU2756186C2 (ru) * 2018-02-06 2021-09-28 Акционерное общество "Лаборатория Касперского" Система и способ категоризации .NET приложений
WO2020156549A1 (en) * 2019-02-02 2020-08-06 Beijing Bytedance Network Technology Co., Ltd. Buffer access methods for intra block copy in video coding
CN117395439A (zh) 2019-03-01 2024-01-12 北京字节跳动网络技术有限公司 用于视频编解码中的帧内块复制的基于方向的预测
KR20210125506A (ko) 2019-03-04 2021-10-18 베이징 바이트댄스 네트워크 테크놀로지 컴퍼니, 리미티드 비디오 코딩에서 인트라 블록 복사를 위한 버퍼 관리
BR112022000358A2 (pt) 2019-07-10 2022-05-10 Beijing Bytedance Network Tech Co Ltd Método e aparelho para processar dados de vídeo e meios de armazenamento e gravação não transitórios legíveis por computador
TWI790506B (zh) * 2020-11-25 2023-01-21 凌通科技股份有限公司 開發介面系統與在開發介面進行大量資料傳輸方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001051874A (ja) * 1999-08-12 2001-02-23 Hitachi Ltd マイクロコンピュータ
US20030005423A1 (en) * 2001-06-28 2003-01-02 Dong-Yuan Chen Hardware assisted dynamic optimization of program execution
US20040019886A1 (en) * 2002-07-29 2004-01-29 Berent Anthony Neil Compilation of application code in a data processing apparatus
US7103877B1 (en) * 2000-11-01 2006-09-05 International Business Machines Corporation System and method for characterizing program behavior by sampling at selected program points
US20110173588A1 (en) * 2010-01-08 2011-07-14 International Business Machines Corporation Hardware support for software controlled fast multiplexing of performance counters

Family Cites Families (137)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4821178A (en) 1986-08-15 1989-04-11 International Business Machines Corporation Internal performance monitoring by event sampling
JPS6421546A (en) 1987-07-16 1989-01-24 Nec Corp Device for collecting program execution history
JPH03217949A (ja) 1990-01-23 1991-09-25 Hitachi Ltd 計算機システム
US5151981A (en) * 1990-07-13 1992-09-29 International Business Machines Corporation Instruction sampling instrumentation
US5341500A (en) 1991-04-02 1994-08-23 Motorola, Inc. Data processor with combined static and dynamic masking of operand for breakpoint operation
JP2505950B2 (ja) 1991-05-13 1996-06-12 インターナショナル・ビジネス・マシーンズ・コーポレイション ハ―ドウェア支援ブレ―クポイント・システム
US5491793A (en) 1992-07-31 1996-02-13 Fujitsu Limited Debug support in a processor chip
JPH07281930A (ja) 1994-04-08 1995-10-27 Nec Corp 情報処理装置動作測定解析システム
EP0689141A3 (en) 1994-06-20 1997-10-15 At & T Corp Disruption-based hardware support for system performance profiling
US5555432A (en) 1994-08-19 1996-09-10 Intel Corporation Circuit and method for scheduling instructions by predicting future availability of resources required for execution
JPH09505922A (ja) 1994-09-19 1997-06-10 フィリップス エレクトロニクス ネムローゼ フェンノートシャップ 多数のマイクロ制御器の演算を実行するマイクロ制御器システム
US5675817A (en) 1994-12-05 1997-10-07 Motorola, Inc. Language translating pager and method therefor
US5553293A (en) 1994-12-09 1996-09-03 International Business Machines Corporation Interprocessor interrupt processing system
US5964893A (en) 1995-08-30 1999-10-12 Motorola, Inc. Data processing system for performing a trace function and method therefor
US5737516A (en) 1995-08-30 1998-04-07 Motorola, Inc. Data processing system for performing a debug function and method therefor
US5675768A (en) 1996-02-01 1997-10-07 Unisys Corporation Store software instrumentation package instruction
US5987249A (en) 1996-08-27 1999-11-16 Numega Technologies IR code instrumentation
US6314558B1 (en) 1996-08-27 2001-11-06 Compuware Corporation Byte code instrumentation
US5796939A (en) 1997-03-10 1998-08-18 Digital Equipment Corporation High frequency sampling of processor performance counters
US6631518B1 (en) 1997-03-19 2003-10-07 International Business Machines Corporation Generating and utilizing organized profile information
US5960198A (en) 1997-03-19 1999-09-28 International Business Machines Corporation Software profiler with runtime control to enable and disable instrumented executable
US6094729A (en) 1997-04-08 2000-07-25 Advanced Micro Devices, Inc. Debug interface including a compact trace record storage
US5978902A (en) 1997-04-08 1999-11-02 Advanced Micro Devices, Inc. Debug interface including operating system access of a serial/parallel debug port
US5944841A (en) 1997-04-15 1999-08-31 Advanced Micro Devices, Inc. Microprocessor with built-in instruction tracing capability
US6154818A (en) 1997-11-20 2000-11-28 Advanced Micro Devices, Inc. System and method of controlling access to privilege partitioned address space for a model specific register file
US6163840A (en) 1997-11-26 2000-12-19 Compaq Computer Corporation Method and apparatus for sampling multiple potentially concurrent instructions in a processor pipeline
US6374367B1 (en) 1997-11-26 2002-04-16 Compaq Computer Corporation Apparatus and method for monitoring a computer system to guide optimization
US6077312A (en) 1998-05-06 2000-06-20 International Business Machines Corporation Apparatus, program product and method of debugging utilizing a context sensitive breakpoint
US6216237B1 (en) 1998-06-19 2001-04-10 Lucent Technologies Inc. Distributed indirect software instrumentation
US6161196A (en) 1998-06-19 2000-12-12 Lucent Technologies Inc. Fault tolerance via N-modular software redundancy using indirect instrumentation
US6145123A (en) * 1998-07-01 2000-11-07 Advanced Micro Devices, Inc. Trace on/off with breakpoint register
US6158049A (en) 1998-08-11 2000-12-05 Compaq Computer Corporation User transparent mechanism for profile feedback optimization
US6243836B1 (en) 1998-08-17 2001-06-05 Lucent Technologies, Inc. Apparatus and method for circular buffering on an on-chip discontinuity trace
US6230313B1 (en) * 1998-12-23 2001-05-08 Cray Inc. Parallelism performance analysis based on execution trace information
US6978462B1 (en) 1999-01-28 2005-12-20 Ati International Srl Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled
US7013456B1 (en) 1999-01-28 2006-03-14 Ati International Srl Profiling execution of computer programs
US20020046305A1 (en) 1999-02-17 2002-04-18 Babaian Boris A. Method for effective binary translation between different instruction sets using emulated supervisor flag and multiple page tables
US6378125B1 (en) 1999-02-22 2002-04-23 International Business Machines Corporation Debugger thread identification points
US7137105B2 (en) 1999-05-12 2006-11-14 Wind River Systems, Inc. Dynamic software code instrumentation method and system
US6321329B1 (en) 1999-05-19 2001-11-20 Arm Limited Executing debug instructions
US6519766B1 (en) 1999-06-15 2003-02-11 Isogon Corporation Computer program profiler
US7406603B1 (en) * 1999-08-31 2008-07-29 Intertrust Technologies Corp. Data protection systems and methods
US6918065B1 (en) 1999-10-01 2005-07-12 Hitachi, Ltd. Method for compressing and decompressing trace information
US6539500B1 (en) 1999-10-28 2003-03-25 International Business Machines Corporation System and method for tracing
US6574727B1 (en) 1999-11-04 2003-06-03 International Business Machines Corporation Method and apparatus for instruction sampling for performance monitoring and debug
US6634020B1 (en) 2000-03-24 2003-10-14 International Business Machines Corporation Uninitialized memory watch
US7735072B1 (en) 2000-08-11 2010-06-08 International Business Machines Corporation Method and apparatus for profiling computer program execution
US6961927B1 (en) 2000-11-27 2005-11-01 Microsoft Corporation Lossless, context-free compression system and method
US8312435B2 (en) 2000-12-26 2012-11-13 Identify Software Ltd. (IL) System and method for conditional tracing of computer programs
US6769054B1 (en) 2001-02-26 2004-07-27 Emc Corporation System and method for preparation of workload data for replaying in a data storage environment
JP2002252163A (ja) 2001-02-27 2002-09-06 Toshiba Corp 画像表示装置の製造方法および製造装置
US6918110B2 (en) * 2001-04-11 2005-07-12 Hewlett-Packard Development Company, L.P. Dynamic instrumentation of an executable program by means of causing a breakpoint at the entry point of a function and providing instrumentation code
JP2002342114A (ja) 2001-05-21 2002-11-29 Fujitsu Ltd トレースデータ採取可能なプロセッサ
US7047521B2 (en) 2001-06-07 2006-05-16 Lynoxworks, Inc. Dynamic instrumentation event trace system and methods
US7181600B1 (en) 2001-08-02 2007-02-20 Mips Technologies, Inc. Read-only access to CPO registers
US7080289B2 (en) 2001-10-10 2006-07-18 Arm Limited Tracing multiple data access instructions
GB0125628D0 (en) 2001-10-25 2001-12-19 Ibm Computer system with watchpoint support
US7281242B2 (en) 2002-01-18 2007-10-09 Bea Systems, Inc. Flexible and extensible Java bytecode instrumentation system
US7134115B2 (en) 2002-02-07 2006-11-07 Matsushita Electric Industrial Co., Ltd. Apparatus, method, and program for breakpoint setting
US6877114B2 (en) 2002-02-14 2005-04-05 Delphi Technologies, Inc. On-chip instrumentation
US20040139304A1 (en) 2003-01-09 2004-07-15 International Business Machines Corporation High speed virtual instruction execution mechanism
US8141052B2 (en) 2003-05-09 2012-03-20 Microsoft Corporation Instrumenting software for enhanced diagnosability
US7185320B2 (en) 2003-06-27 2007-02-27 Hewlett-Packard Development Company, L.P. System and method for processing breakpoint events in a child process generated by a parent process
US7152186B2 (en) 2003-08-04 2006-12-19 Arm Limited Cross-triggering of processing devices
US20050120337A1 (en) 2003-12-01 2005-06-02 Serrano Mauricio J. Memory trace buffer
US7500152B2 (en) 2003-12-05 2009-03-03 Freescale Semiconductor, Inc. Apparatus and method for time ordering events in a system having multiple time domains
US7206916B2 (en) 2004-03-08 2007-04-17 Sun Microsystems, Inc. Partial address compares stored in translation lookaside buffer
US20050228631A1 (en) 2004-04-07 2005-10-13 Maly John W Model specific register operations
US20090150890A1 (en) 2007-12-10 2009-06-11 Yourst Matt T Strand-based computing hardware and dynamically optimizing strandware for a high performance microprocessor system
US20060184832A1 (en) 2005-02-11 2006-08-17 International Business Machines Corporation Method and apparatus for achieving high cycle/trace compression depth by adding width
US9152531B2 (en) * 2005-02-18 2015-10-06 Green Hills Sofware, Inc. Post-compile instrumentation of object code for generating execution trace data
US7478219B2 (en) 2005-04-14 2009-01-13 International Business Machines Corporation Retrieving event data for logical partitions
US7650595B2 (en) 2005-04-29 2010-01-19 Microsoft Corporation Sound transaction-based reduction without cycle detection
US7661094B2 (en) 2005-05-10 2010-02-09 Alcatel-Lucent Usa Inc. Real-time software diagnostic tracing
US7720670B2 (en) 2005-05-16 2010-05-18 Texas Instruments Incorporated Saving resources by deducing the total prediction events
US7603589B2 (en) 2005-05-16 2009-10-13 Texas Instruments Incorporated Method and system for debugging a software program
US7886198B2 (en) 2005-05-16 2011-02-08 Texas Instruments Incorporated Method and system of identifying overlays used by a program
US8527958B2 (en) 2005-05-16 2013-09-03 Texas Instruments Incorporated Profiling operating context and tracing program on a target processor
US8694970B2 (en) 2005-06-02 2014-04-08 Seagate Technology Llc Unified debug system with multiple user-configurable trace volumes and trace buffers
US7716335B2 (en) 2005-06-27 2010-05-11 Oracle America, Inc. System and method for automated workload characterization of an application server
US7239980B2 (en) 2005-08-30 2007-07-03 International Business Machines Corporation Method and apparatus for adaptive tracing with different processor frequencies
US8301868B2 (en) 2005-09-23 2012-10-30 Intel Corporation System to profile and optimize user software in a managed run-time environment
US20070079294A1 (en) 2005-09-30 2007-04-05 Robert Knight Profiling using a user-level control mechanism
US20070079177A1 (en) 2005-09-30 2007-04-05 Charles Spirakis Process monitoring and diagnosis apparatus, systems, and methods
US20070143755A1 (en) 2005-12-16 2007-06-21 Intel Corporation Speculative execution past a barrier
US20070186056A1 (en) 2006-02-07 2007-08-09 Bratin Saha Hardware acceleration for a software transactional memory system
CN101021800A (zh) 2006-02-16 2007-08-22 Sap股份公司 虚拟机监控
GB0604991D0 (en) 2006-03-11 2006-04-19 Slam Games Ltd Instrumentation for real-time performance profiling
US20070261032A1 (en) 2006-05-05 2007-11-08 Chen Wen-Tzer T Method and apparatus for hardware assisted profiling of code
US8245199B2 (en) * 2006-05-05 2012-08-14 International Business Machines Corporation Selectively marking and executing instrumentation code
US7814466B2 (en) 2006-05-05 2010-10-12 International Business Machines Corporation Method and apparatus for graphically marking instructions for instrumentation with hardware assistance
US20070260849A1 (en) 2006-05-05 2007-11-08 Chen Wen-Tzer T Method and apparatus for executing instrumentation code using a target processor
WO2007145903A2 (en) 2006-06-05 2007-12-21 Acumem Ab System for and method of capturing application characteristics data from a computer system and modeling target system
US8307346B2 (en) 2006-06-09 2012-11-06 Oracle America, Inc. Atomic groups for debugging
RU58744U1 (ru) * 2006-06-20 2006-11-27 Федеральное государственное унитарное предприятие "Научно-исследовательский институт "Восход" Система актуализации персональных данных кандидатов и депутатов в интегрированной базе данных избирательной системы
US7895569B2 (en) 2006-08-30 2011-02-22 Research In Motion Limited System and method for implementing software breakpoints in an interpreter
CN100401267C (zh) 2006-09-01 2008-07-09 上海大学 微处理器的片上动态跟踪方法
CN100547562C (zh) 2006-10-18 2009-10-07 国际商业机器公司 自动生成可再现运行时问题的单元测试用例的方法和系统
US7992136B2 (en) 2006-10-18 2011-08-02 International Business Machines Corporation Method and apparatus for automatic application profiling
US8627335B2 (en) 2006-11-13 2014-01-07 Oracle America, Inc. Method and apparatus for data space profiling of applications across a network
CN101595457A (zh) 2006-12-06 2009-12-02 艾利森电话股份有限公司 负载平衡剖析
US7783867B2 (en) 2007-02-01 2010-08-24 International Business Machines Corporation Controlling instruction execution in a processing environment
US8041901B2 (en) 2007-03-05 2011-10-18 Freescale Semiconductor, Inc. Performance monitoring device and method thereof
US7743279B2 (en) 2007-04-06 2010-06-22 Apple Inc. Program counter (PC) trace
WO2008122746A1 (en) 2007-04-10 2008-10-16 Cambridge Consultants Limited Data processing apparatus
US20090037887A1 (en) 2007-07-30 2009-02-05 Chavan Shasank K Compiler-inserted predicated tracing
US8127296B2 (en) 2007-09-06 2012-02-28 Dell Products L.P. Virtual machine migration between processors having VM migration registers controlled by firmware to modify the reporting of common processor feature sets to support the migration
US8453121B2 (en) 2007-10-25 2013-05-28 International Business Machines Corporation Managing the tracing of the execution of a computer program
US7962314B2 (en) 2007-12-18 2011-06-14 Global Foundries Inc. Mechanism for profiling program software running on a processor
US8141053B2 (en) 2008-01-04 2012-03-20 International Business Machines Corporation Call stack sampling using a virtual machine
US8090933B2 (en) 2008-02-12 2012-01-03 International Business Machines Corporation Methods computer program products and systems for unifying program event recording for branches and stores in the same dataflow
US7870438B2 (en) 2008-02-15 2011-01-11 International Business Machines Corporation Method, system and computer program product for sampling computer system performance data
US8312253B2 (en) * 2008-02-22 2012-11-13 Freescale Semiconductor, Inc. Data processor device having trace capabilities and method
US7904460B2 (en) 2008-04-23 2011-03-08 Microsoft Corporation Determining computer information from processor properties
US8572577B2 (en) 2008-06-20 2013-10-29 International Business Machines Corporation Monitoring changes to data within a critical section of a threaded program
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.
US9449314B2 (en) 2008-10-02 2016-09-20 International Business Machines Corporation Virtualization of a central processing unit measurement facility
US8307345B2 (en) 2008-11-04 2012-11-06 Ca, Inc. Intelligent engine for dynamic and rule based instrumentation of software
US8478948B2 (en) 2008-12-04 2013-07-02 Oracle America, Inc. Method and system for efficient tracing and profiling of memory accesses during program execution
US8527734B2 (en) 2009-01-23 2013-09-03 International Business Machines Corporation Administering registered virtual addresses in a hybrid computing environment including maintaining a watch list of currently registered virtual addresses by an operating system
JP5326708B2 (ja) 2009-03-18 2013-10-30 富士通株式会社 演算処理装置および演算処理装置の制御方法
US8694962B2 (en) 2009-04-30 2014-04-08 International Business Machines Corporation Aspect-oriented parallel programming language extensions
JP5411587B2 (ja) * 2009-06-09 2014-02-12 トヨタ自動車株式会社 マルチスレッド実行装置、マルチスレッド実行方法
US8650562B2 (en) 2009-06-12 2014-02-11 International Business Machines Corporation Method and apparatus for scalable monitoring of virtual machine environments combining base virtual machine and single monitoring agent for measuring common characteristics and individual virtual machines measuring individualized characteristics
US9092253B2 (en) 2009-12-15 2015-07-28 Microsoft Technology Licensing, Llc Instrumentation of hardware assisted transactional memory system
US8316194B2 (en) 2009-12-15 2012-11-20 Intel Corporation Mechanisms to accelerate transactions using buffered stores
KR20110070468A (ko) 2009-12-18 2011-06-24 삼성전자주식회사 인스트루먼테이션 실행 장치 및 방법
US8301849B2 (en) 2009-12-23 2012-10-30 Intel Corporation Transactional memory in out-of-order processors with XABORT having immediate argument
US8453124B2 (en) 2009-12-23 2013-05-28 International Business Machines Corporation Collecting computer processor instrumentation data
US8782612B2 (en) 2010-05-11 2014-07-15 Ca, Inc. Failsafe mechanism for dynamic instrumentation of software using callbacks
US8473925B2 (en) 2010-05-11 2013-06-25 Ca, Inc. Conditional dynamic instrumentation of software in a specified transaction context
US8566800B2 (en) 2010-05-11 2013-10-22 Ca, Inc. Detection of method calls to streamline diagnosis of custom code through dynamic instrumentation
US8607200B2 (en) 2010-06-01 2013-12-10 Red Hat, Inc. Executing a web application at different stages in the application life cycle
GB2481385B (en) 2010-06-21 2018-08-15 Advanced Risc Mach Ltd Tracing speculatively executed instructions
US20120167057A1 (en) 2010-12-22 2012-06-28 Microsoft Corporation Dynamic instrumentation of software code
US9430275B2 (en) 2011-06-03 2016-08-30 Oracle International Corporation Synchronization between concurrent notifier and waiter transactions using transaction condition variables
US8707314B2 (en) 2011-12-16 2014-04-22 Advanced Micro Devices, Inc. Scheduling compute kernel workgroups to heterogeneous processors based on historical processor execution times and utilizations

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001051874A (ja) * 1999-08-12 2001-02-23 Hitachi Ltd マイクロコンピュータ
US7103877B1 (en) * 2000-11-01 2006-09-05 International Business Machines Corporation System and method for characterizing program behavior by sampling at selected program points
US20030005423A1 (en) * 2001-06-28 2003-01-02 Dong-Yuan Chen Hardware assisted dynamic optimization of program execution
US20040019886A1 (en) * 2002-07-29 2004-01-29 Berent Anthony Neil Compilation of application code in a data processing apparatus
US20110173588A1 (en) * 2010-01-08 2011-07-14 International Business Machines Corporation Hardware support for software controlled fast multiplexing of performance counters

Also Published As

Publication number Publication date
CN104169888A (zh) 2014-11-26
TW201403313A (zh) 2014-01-16
US9367313B2 (en) 2016-06-14
KR101572404B1 (ko) 2015-11-26
US20130246746A1 (en) 2013-09-19
TWI534613B (zh) 2016-05-21
NO2754961T3 (ja) 2018-02-10
EP2825961B1 (en) 2017-11-08
AU2013233831A1 (en) 2014-09-11
JP6153533B2 (ja) 2017-06-28
SI2825961T1 (en) 2018-03-30
KR20140104981A (ko) 2014-08-29
ZA201406609B (en) 2016-05-25
WO2013136705A1 (en) 2013-09-19
AU2013233831B2 (en) 2016-05-12
CA2866809A1 (en) 2013-09-19
RU2585982C2 (ru) 2016-06-10
RU2014118861A (ru) 2015-11-20
CA2866809C (en) 2020-04-14
SG11201404860VA (en) 2014-09-26
IL235094A (en) 2017-07-31
US20130246741A1 (en) 2013-09-19
EP2825961A1 (en) 2015-01-21
CN104169888B (zh) 2016-11-16
EP2825961A4 (en) 2015-05-06
US9465716B2 (en) 2016-10-11

Similar Documents

Publication Publication Date Title
JP6099060B2 (ja) 低特権状態からのランタイム・インストルメンテーション・ファシリティの動作の制御
JP6095682B2 (ja) プログラム・イベント記録イベントのランタイム計装イベントへの変換
JP6153533B2 (ja) ランタイム・インストルメンテーション指向サンプリング
EP2810168B1 (en) Run-time instrumentation sampling in transactional-execution mode
JP6195566B2 (ja) ランタイム・インストルメンテーション報告
JP6195571B2 (ja) 低特権状態からのランタイム・インストルメンテーション制御の変更
JP6195572B2 (ja) ランタイム計装制御の状況の決定のためのコンピュータ・プログラム、方法、およびシステム
JP6138142B2 (ja) 被管理ランタイムのためのハードウェア・ベース・ランタイム計装機構
WO2013136679A1 (en) Run-time instrumentation monitoring of processor characteristics
JP6153534B2 (ja) 命令オペレーション・コードによるランタイム計装間接サンプリング
EP2810170B1 (en) Run-time instrumentation indirect sampling by address

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141020

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140912

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20140911

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161004

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20161027

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161227

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170530

R150 Certificate of patent or registration of utility model

Ref document number: 6153533

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150