(57)【要約】【課題】  プログラム・イベント記録イベントをランタイム計装イベントに変換すること。【解決手段】  本発明の態様は、プログラム・イベント記録イベントをランタイム計装イベントに変換するための方法を含む。方法は、プロセッサ上で実行する命令ストリームの計装情報を収集するためのランタイム計装を有効化することを含む。方法は、プロセッサによって、プログラム・イベント記録（ＰＥＲ）イベントを検出することも含み、ＰＥＲイベントは、プロセッサ上で実行する命令ストリームに関連付けられる。方法は、ＰＥＲイベントの検出に基づいて、ＰＥＲイベントを識別するＰＥＲイベント記録をランタイム計装イベントとして収集バッファに書き込むことをさらに含む。【選択図】  図１４
2015515654.tif 000002
【特許請求の範囲】
【請求項１】
プログラム・イベント記録イベントをランタイム計装イベントに変換するための、コンピュータ・プログラム製品であって、
処理回路によって読み取り可能な有形記憶媒体であって、
プロセッサ上で実行する命令ストリームの計装情報を収集するためのランタイム計装を有効化すること、
前記プロセッサによって、プログラム・イベント記録（ＰＥＲ）イベントを検出することであって、前記ＰＥＲイベントは、前記プロセッサ上で実行する前記命令ストリームに関連付けられる、検出すること、および、
前記ＰＥＲイベントの検出に基づいて、ＰＥＲイベント記録をランタイム計装イベントとして収集バッファに書き込むことであって、前記ＰＥＲイベント記録は前記ＰＥＲイベントを識別する、書き込むこと、
を含む方法を実行するために、前記処理回路による実行のための命令を記憶する、有形記憶媒体、
を備える、コンピュータ・プログラム製品。
【請求項２】
前記ＰＥＲイベントを検出することは、
前記プロセッサ上で実行する前記命令ストリームがＰＥＲ割り込み条件に関連付けられたＰＥＲ割り込みによって割り込まれないように、前記ＰＥＲイベントに関連付けられたＰＥＲ割り込み条件をインターセプトすること、
をさらに含む、請求項１に記載のコンピュータ・プログラム製品。
【請求項３】
ランタイム計装制御ロード（ＬＲＩＣ）命令の実行に基づいて、ランタイム計装制御を構成することをさらに含み、前記ＬＲＩＣ命令はランタイム計装ＰＥＲ制御を有効化する、請求項１に記載のコンピュータ・プログラム製品。
【請求項４】
低特権プログラムからのランタイム計装制御値を構成するために、前記ＬＲＩＣ命令の実行に基づいてランタイム計装制御修正（ＭＲＩＣ）命令の実行を許可するように、Ｋビットを設定すること、および、
前記ランタイム計装ＰＥＲ制御が有効化され、Ｋビットが設定された場合、前記低特権プログラムからのＰＥＲ制御レジスタを構成するために、前記ＬＲＩＣ命令の実行に基づいて前記ＭＲＩＣ命令の実行を許可するように、ＰＫビットを設定すること、
をさらに含む、請求項３に記載のコンピュータ・プログラム製品。
【請求項５】
前記ＭＲＩＣ命令は、ランタイム計装プログラム・バッファ現行アドレス（ＲＣＡ）フィールド、ランタイム計装プログラム・バッファ起点アドレス（ＲＯＡ）フィールド、およびランタイム計装プログラム・バッファ限界アドレス（ＲＬＡ）フィールドを含む、制御フロックを更新し、
前記ＭＲＩＣ命令の実行に基づいて、ランタイム計装プログラム・バッファを構成するために、前記ＲＯＡフィールドおよび前記ＲＬＡフィールド内のアドレス値を設定することであって、前記ＰＫビットはクリアされ、前記Ｋビットは設定される、設定すること、および、
後続のＭＲＩＣ命令の実行に基づいて、ＰＥＲ制御レジスタを構成するために、前記ＲＣＡフィールド、前記ＲＯＡフィールド、および前記ＲＬＡフィールドのうちの１つまたは複数を再マッピングすることであって、前記ＰＫビットは設定され、前記Ｋビットは設定される、再マッピングすること、
をさらに含む、請求項４に記載のコンピュータ・プログラム製品。
【請求項６】
前記ランタイム計装ＰＥＲ制御が有効化される場合、前記ＰＥＲイベントを発生させる命令をサンプル命令として認識するために、前記ＬＲＩＣ命令の実行に基づいてＰＩビットを設定すること、および、
報告グループをランタイム計装プログラム・バッファに記憶することであって、前記報告グループは、前記ＰＥＲイベント記録と、前記ＰＥＲイベントを発生させる命令を前記サンプル命令として識別する命令タイプ記録とを含む、記憶すること、
をさらに含む、請求項３に記載のコンピュータ・プログラム製品。
【請求項７】
前記ＰＥＲイベント記録は、
前記ＰＥＲイベントを識別するＰＥＲコードであって、前記ＰＥＲイベントは、正常分岐、命令フェッチ、ストレージ変更、実アドレス使用ストア、および命令フェッチ無効化のうちの１つである、ＰＥＲコードと、
前記ＰＥＲイベントを発生させた参照を変換するために使用される、ＰＥＲアドレス・スペース制御要素識別と、
ＰＥＲアクセス識別と、
命令フィールドのＰＥＲ長さと、
前記ＰＥＲイベントについての責務を負う前記命令をフェッチするために使用される命令アドレスを含む、ＰＥＲアドレスと、
を含む、請求項１に記載のコンピュータ・プログラム製品。
【請求項８】
プログラム・イベント記録イベントをランタイム計装イベントに変換するための、コンピュータ実装方法であって、
プロセッサ上で実行する命令ストリームの計装情報を収集するためのランタイム計装を有効化すること、
前記プロセッサによって、プログラム・イベント記録（ＰＥＲ）イベントを検出することであって、前記ＰＥＲイベントは、前記プロセッサ上で実行する前記命令ストリームに関連付けられる、検出すること、および、
前記ＰＥＲイベントの検出に基づいて、ＰＥＲイベント記録をランタイム計装イベントとして収集バッファに書き込むことであって、前記ＰＥＲイベント記録は前記ＰＥＲイベントを識別する、書き込むこと、
を含む、方法。
【請求項９】
前記ＰＥＲイベントを検出することは、
前記プロセッサ上で実行する前記命令ストリームがＰＥＲ割り込み条件に関連付けられたＰＥＲ割り込みによって割り込まれないように、前記ＰＥＲイベントに関連付けられたＰＥＲ割り込み条件をインターセプトすること、
をさらに含む、請求項８に記載の方法。
【請求項１０】
ランタイム計装制御ロード（ＬＲＩＣ）命令の実行に基づいて、ランタイム計装制御を構成することをさらに含み、前記ＬＲＩＣ命令はランタイム計装ＰＥＲ制御を有効化する、請求項８に記載の方法。
【請求項１１】
低特権プログラムからのランタイム計装制御値を構成するために、前記ＬＲＩＣ命令の実行に基づいてランタイム計装制御修正（ＭＲＩＣ）命令の実行を許可するように、Ｋビットを設定すること、および、
前記ランタイム計装ＰＥＲ制御が有効化され、Ｋビットが設定された場合、前記低特権プログラムからのＰＥＲ制御レジスタを構成するために、前記ＬＲＩＣ命令の実行に基づいて前記ＭＲＩＣ命令の実行を許可するように、ＰＫビットを設定すること、
をさらに含む、請求項１０に記載の方法。
【請求項１２】
前記ＭＲＩＣ命令は、ランタイム計装プログラム・バッファ現行アドレス（ＲＣＡ）フィールド、ランタイム計装プログラム・バッファ起点アドレス（ＲＯＡ）フィールド、およびランタイム計装プログラム・バッファ限界アドレス（ＲＬＡ）フィールドを含む、制御フロックを更新し、
前記ＭＲＩＣ命令の実行に基づいて、ランタイム計装プログラム・バッファを構成するために、前記ＲＯＡフィールドおよび前記ＲＬＡフィールド内のアドレス値を設定することであって、前記ＰＫビットはクリアされ、前記Ｋビットは設定される、設定すること、および、
後続のＭＲＩＣ命令の実行に基づいて、ＰＥＲ制御レジスタを構成するために、前記ＲＣＡフィールド、前記ＲＯＡフィールド、および前記ＲＬＡフィールドのうちの１つまたは複数を再マッピングすることであって、前記ＰＫビットは設定され、前記Ｋビットは設定される、再マッピングすること、
をさらに含む、請求項１１に記載の方法。
【請求項１３】
前記ランタイム計装ＰＥＲ制御が有効化される場合、前記ＰＥＲイベントを発生させる命令をサンプル命令として認識するために、前記ＬＲＩＣ命令の実行に基づいてＰＩビットを設定すること、および、
報告グループをランタイム計装プログラム・バッファに記憶することであって、前記報告グループは、前記ＰＥＲイベント記録と、前記ＰＥＲイベントを発生させる命令を前記サンプル命令として識別する命令タイプ記録とを含む、記憶すること、
をさらに含む、請求項１０に記載の方法。
【請求項１４】
前記ＰＥＲイベント記録は、
前記ＰＥＲイベントを識別するＰＥＲコードであって、前記ＰＥＲイベントは、正常分岐、命令フェッチ、ストレージ変更、実アドレス使用ストア、および命令フェッチ無効化のうちの１つである、ＰＥＲコードと、
前記ＰＥＲイベントを発生させた参照を変換するために使用される、ＰＥＲアドレス・スペース制御要素識別と、
ＰＥＲアクセス識別と、
命令フィールドのＰＥＲ長さと、
前記ＰＥＲイベントについての責務を負う前記命令をフェッチするために使用される命令アドレスを含む、ＰＥＲアドレスと、
を含む、請求項８に記載の方法。
【請求項１５】
プログラム・イベント記録イベントをランタイム計装イベントに変換するための、システムであって、
収集バッファと、
ランタイム計装モジュールを含むプロセッサであって、前記ランタイム計装モジュールは、
プロセッサ上で実行する命令ストリームの計装情報を収集するためのランタイム計装を有効化すること、
前記プロセッサによって、プログラム・イベント記録（ＰＥＲ）イベントを検出することであって、前記ＰＥＲイベントは、前記プロセッサ上で実行する前記命令ストリームに関連付けられる、検出すること、および、
前記ＰＥＲイベントの検出に基づいて、ＰＥＲイベント記録をランタイム計装イベントとして収集バッファに書き込むことであって、前記ＰＥＲイベント記録は前記ＰＥＲイベントを識別する、書き込むこと、
を含む方法を実行するように構成された、プロセッサと、
を備える、システム。
【請求項１６】
前記ＰＥＲイベントを検出することは、
前記プロセッサ上で実行する前記命令ストリームがＰＥＲ割り込み条件に関連付けられたＰＥＲ割り込みによって割り込まれないように、前記ＰＥＲイベントに関連付けられたＰＥＲ割り込み条件をインターセプトすること、
をさらに含む、請求項１５に記載のシステム。
【請求項１７】
ランタイム計装制御ロード（ＬＲＩＣ）命令の実行に基づいて、ランタイム計装制御を構成することをさらに含み、前記ＬＲＩＣ命令はランタイム計装ＰＥＲ制御を有効化する、請求項１５に記載のシステム。
【請求項１８】
低特権プログラムからのランタイム計装制御値を構成するために、前記ＬＲＩＣ命令の実行に基づいてランタイム計装制御修正（ＭＲＩＣ）命令の実行を許可するように、Ｋビットを設定すること、および、
前記ランタイム計装ＰＥＲ制御が使用可能であり、Ｋビットが設定された場合、前記低特権プログラムからのＰＥＲ制御レジスタを構成するために、前記ＬＲＩＣ命令の実行に基づいて前記ＭＲＩＣ命令の実行を許可するように、ＰＫビットを設定すること、
をさらに含む、請求項１７に記載のシステム。
【請求項１９】
前記ランタイム計装ＰＥＲ制御が使用可能な場合、前記ＰＥＲイベントを発生させる命令をサンプル命令として認識するために、前記ＬＲＩＣ命令の実行に基づいてＰＩビットを設定すること、および、
報告グループをランタイム計装プログラム・バッファに記憶することであって、前記報告グループは、前記ＰＥＲイベント記録と、前記ＰＥＲイベントを発生させる命令を前記サンプル命令として識別する命令タイプ記録とを含む、記憶すること、
をさらに含む、請求項１７に記載のシステム。
【請求項２０】
前記ＰＥＲイベント記録は、
前記ＰＥＲイベントを識別するＰＥＲコードであって、前記ＰＥＲイベントは、正常分岐、命令フェッチ、ストレージ変更、実アドレス使用ストア、および命令フェッチ無効化のうちの１つである、ＰＥＲコードと、
前記ＰＥＲイベントを発生させた参照を変換するために使用される、ＰＥＲアドレス・スペース制御要素識別と、
ＰＥＲアクセス識別と、
命令フィールドのＰＥＲ長さと、
前記ＰＥＲイベントについての責務を負う前記命令をフェッチするために使用される命令アドレスを含む、ＰＥＲアドレスと、
を含む、請求項１５に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンピューティング環境内での処理に関し、より具体的に言えば、プログラム・イベント記録イベントのランタイム計装（run-time instrumentation）イベントへの変換に関する。
【背景技術】
【０００２】
コンピュータ・プロセッサは、プログラムまたは命令ストリームを、ますます複雑になる分岐予測および命令キャッシング論理を使用して実行する。これらのプロセスは、命令スループット、したがって処理性能を向上させるために導入されてきた。性能を向上させるための論理の導入は、特定のソフトウェア・アプリケーションがコンピュータ・プロセッサ上でどのように実行されるかを確実に予測することを困難にする。ソフトウェア開発プロセス中には、しばしば機能性と性能とのバランスが存在する。ソフトウェアは、ソフトウェアを実行している基礎となるハードウェアから、１つまたは複数レベルの抽象化で実行される。ハードウェアが仮想化される場合、追加層の抽象化が導入される。性能強化論理の導入および様々な層の抽象化に伴い、プログラムが実行している時に、ハードウェア・レベルで実際に何が発生しているかを完全に理解することは困難である。ソフトウェア開発者は、ソフトウェア・アプリケーションを最適化するために、この情報無しで、実行持続時間、メモリ使用率、スレッド数などの、より抽象的な方法を使用する。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】「ＩＢＭ（Ｒ）  ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｐｒｉｎｃｉｐｌｅｓ  ｏｆ  Ｏｐｅｒａｔｉｏｎ」Ｐｕｂｌｉｃａｔｉｏｎ  Ｎｏ．ＳＡ２２−７８３２−０８、第９版、２０１０年８月
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ハードウェア特有の情報が利用可能な場合、これは典型的には事後に開発者に提供され、また全体として、高レベルで、または、他のプログラムおよびオペレーティング・システムのアクティビティが混在して、あるいはそれらすべての状態で提供されるため、ソフトウェア・アプリケーションの効率および正確さに影響を及ぼす可能性のある問題の識別を困難にする。
【課題を解決するための手段】
【０００５】
実施形態は、プログラム・イベント記録イベントをランタイム計装イベントに変換するための、方法、システム、およびコンピュータ・プログラム製品を含む。コンピュータ・プログラム製品は、処理回路によって読み取り可能であり、方法を実行するために処理回路による実行のための命令を記憶する、有形記憶媒体を含む。方法は、プロセッサ上で実行する命令ストリームの計装情報を収集するためのランタイム計装を有効化することを含む。方法は、プロセッサによって、プログラム・イベント記録（ＰＥＲ）イベントを検出することも含み、ＰＥＲイベントは、プロセッサ上で実行する命令ストリームに関連付けられる。方法は、ＰＥＲイベントの検出に基づいて、ＰＥＲイベント記録をランタイム計装イベントとして収集バッファに書き込むことをさらに含み、ＰＥＲイベント記録はＰＥＲイベントを識別する。
【０００６】
方法は、プロセッサ上で実行する命令ストリームの計装情報を収集するためのランタイム計装を有効化することを含む。方法は、プロセッサによって、プログラム・イベント記録（ＰＥＲ）イベントを検出することも含み、ＰＥＲイベントは、プロセッサ上で実行する命令ストリームに関連付けられる。方法は、ＰＥＲイベントの検出に基づいて、ＰＥＲイベント記録をランタイム計装イベントとして収集バッファに書き込むことをさらに含み、ＰＥＲイベント記録はＰＥＲイベントを識別する。
【０００７】
プログラム・イベント記録イベントをランタイム計装イベントに変換するためのシステムは、収集バッファ、およびランタイム計装モジュールを備えるプロセッサを含む。ランタイム計装モジュールは、方法を実行するように構成される。方法は、プロセッサ上で実行する命令ストリームの計装情報を収集するためのランタイム計装を有効化することを含む。方法は、プロセッサによって、プログラム・イベント記録（ＰＥＲ）イベントを検出することも含み、ＰＥＲイベントは、プロセッサ上で実行する命令ストリームに関連付けられる。方法は、ＰＥＲイベントの検出に基づいて、ＰＥＲイベント記録をランタイム計装イベントとして収集バッファに書き込むことをさらに含み、ＰＥＲイベント記録はＰＥＲイベントを識別する。
【０００８】
追加の特徴および利点は、本発明の技法を介して実現される。本明細書では、本発明の他の実施形態および態様が詳細に説明され、特許請求された発明の一部とみなされる。本発明を利点および特徴と共により良く理解するために、説明および図面を参照されたい。
【０００９】
本発明とみなされる主題は、本明細書の終わりに特許請求の範囲で詳別に指摘され、明確に請求される。本発明の前述および他の特徴および利点は、添付の図面に関連して行われる以下の詳細な説明から明らかである。
【図面の簡単な説明】
【００１０】
【図１】実施形態における、例示のホスト・コンピュータ・システムを示す図である。
【図２】実施形態における、例示のエミュレーション・ホスト・コンピュータ・システムを示す図である。
【図３】実施形態における、例示のコンピュータ・システムを示す図である。
【図４】実施形態における、例示のコンピュータ・ネットワークを示す図である。
【図５】実施形態における、コンピュータ・システムの要素を示す図である。
【図６】実施形態における、コンピュータ・システムの要素を詳細に示す図である。
【図７】実施形態における、コンピュータ・システムの要素を詳細に示す図である。
【図８】実施形態における、コンピュータ・システムの要素を詳細に示す図である。
【図９】実施形態に従った、プロセッサのランタイム計装のためのシステムを示す概略図である。
【図１０】実施形態における、特権状態によって設定可能な制御を含む、ランタイム計装制御制御ブロック（ＲＩＣＣＢ）の一部を示す図である。
【図１１】実施形態における、準特権ビット（Ｋ）が１に設定された場合の、ＲＩＣＣＢ制御ブロックの一部を示す図である。
【図１２】実施形態に従った、プログラム・イベント記録制御レジスタを示す図である。
【図１３】実施形態に従った、報告グループを示す図である。
【図１４】実施形態に従った、プログラム・イベント記録イベントをランタイム計装イベントに変換するためのプロセス・フローを示す図である。
【図１５】実施形態に従った、コンピュータ・プログラム製品を示す図である。
【発明を実施するための形態】
【００１１】
本発明の実施形態は、プログラム・イベント記録（ＰＥＲ）イベントをランタイム計装イベントに変換することを可能にする。ＰＥＲの目的は、プログラムのデバッグを支援することである。ＰＥＲは、より多くの特権または制御プログラムに、正常な分岐イベント、命令フェッチ基本イベント、命令フェッチ無効化イベント、ストレージ変更イベント、および実アドレス使用ストア・イベントなどの、低特権またはユーザ・プログラム内の様々なイベントについての警告を出すことが可能である。ＰＥＲイベントの通知は、ＰＥＲ割り込み条件の形とすることが可能であり、これがＰＥＲまたはプログラム割り込みをトリガする。プログラム割り込みは、低特権プログラムからＰＥＲイベントの知識を除去する。したがって、カスタマイズされたプログラム・デバッグ情報を取得することは、典型的には不可能であるか、または少なくとも制御プログラムの優先順位および実装スケジュールに対する担保（hostage）である。
【００１２】
ランタイム計装は、研究室内またはオフライン分析用のみならず、プロセッサ（ＣＰＵ）上のプログラム制御下でのプログラム・ランタイム中の顧客環境内でも、使用可能な機構である。したがって、高特権制御／スーパーバイザ・プログラムおよび低特権ユーザ・プログラムのいずれも、ランタイム計装を直接活用することができる。プログラムを実行するためにフェッチおよび実行される一連の命令を、命令ストリームと呼ぶことができる。データ収集の適応性を強化するために、構成可能な間隔に基づいてイベントを収集することができる。プログラムによる設定が可能なＣＰＵ制御が、ランタイム計装を管理する。ランタイム計装は通常、定期的なサンプリングごとにイベントを報告する。定期的なサンプリング間隔は、命令カウントまたはサイクル・カウントによって決定される。計装済み命令ストリーム内の追加ポイントを、ランタイム計装ネクスト（ＲＩＮＥＸＴ）命令を使用して指示することができる。ＰＥＲイベントの検出は、検出されたＰＥＲイベントに応答してサンプル・ポイントを作成する、別の手段を提供する。計装済み命令ストリーム内の特定情報は、後続の分析が実行される場合に非常に有用な可能性がある。各サンプル・ポイントは、結果として、収集バッファから最近収集されたデータならびにサンプル・ポイントでの命令の実行に関連付けられたデータを含む、複数記録の報告グループを記憶することになる。
【００１３】
実施形態において、ランタイム計装でＰＥＲイベント報告が有効化されると、ＰＥＲイベントは、有効化されたランタイム計装を有するプロセッサによって検出される。ＰＥＲイベントは、インターセプトされて、ランタイム計装収集バッファ内に収集されることになるＰＥＲイベント記録として提示される、ＰＥＲ割り込み条件として検出可能である。これは、ＰＥＲ割り込み条件が割り込みとして取り扱われるのを防止し、命令ストリームの実行が割り込まれないように維持する。これにより、低特権プログラムは、低特権プログラムの代わりにＰＥＲを管理するために高特権制御プログラムに依拠するのではなく、ＰＥＲ機能自体を利用することも可能である。
【００１４】
図１は、実施形態におけるホスト・コンピュータ・システム５０の代表的な構成要素を示す。コンピュータ・システム内では、構成要素の他の配置構成も採用可能である。代表的なホスト・コンピュータ・システム５０は、メイン・ストア（コンピュータ・メモリ）２と通信する１つまたは複数のプロセッサ１、ストレージ・デバイス１１へのＩ／Ｏインターフェース、他のコンピュータまたはＳＡＮなどと通信するためのネットワーク１０へのインターフェースなどを備える。プロセッサ１は、アーキテクチャに組み込まれた（以下、「アーキテクチャ化」という）命令セットおよび機能を有するアーキテクチャに準拠している。プロセッサ１は、プログラム・アドレス（仮想アドレス）をメモリ内の実アドレスに変換するための動的アドレス変換（ＤＡＴ）３を有することができる。ＤＡＴ３は、典型的には、変換をキャッシングするための変換索引バッファ（ＴＬＢ）７を含むため、コンピュータ・メモリ２のブロックへのその後のアクセスは、アドレス変換の遅延を必要としない。典型的には、キャッシュ９はコンピュータ・メモリ２とプロセッサ１との間で使用される。キャッシュ９は、複数のＣＰＵが使用可能な大型キャッシュ、および、大型キャッシュと各ＣＰＵとの間の小型で高速の（下位レベル）キャッシュを有する、階層とすることができる。いくつかの実施形態において、下位レベル・キャッシュは、命令フェッチおよびデータ・アクセスのための別々の下位レベル・キャッシュを提供するために分割される。実施形態において、命令は、命令フェッチ・ユニット４により、キャッシュ９を介してコンピュータ・メモリ２からフェッチされる。命令は、命令復号ユニット６内で復号され、（いくつかの実施形態では他の命令と共に）命令実行ユニット８にディスパッチされる。典型的には、たとえば算術実行ユニット、浮動小数点実行ユニット、および分岐命令実行ユニットなどの、いくつかの命令実行ユニット８が使用される。命令は、必要に応じて命令指定レジスタまたはコンピュータ・メモリ２からのオペランドにアクセスする、命令実行ユニット８によって実行される。オペランドがコンピュータ・メモリ２からアクセス（ロードまたはストア）されるものである場合、ロード／ストア・ユニット５は、典型的には、実行中の命令の制御の下でアクセスを処理する。命令は、ハードウェア回路内または内部マイクロコード（ファームウェア）内で、あるいはその両方の組み合わせによって、実行することができる。
【００１５】
図２では、図１のホスト・コンピュータ・システム５０などのホスト・アーキテクチャのホスト・コンピュータ・システムをエミュレートする、エミュレーテッド・ホスト・コンピュータ・システム２１が示されている。エミュレーテッド・ホスト・コンピュータ・システム２１において、ホスト・プロセッサ（ＣＰＵ）１はエミュレーテッド・ホスト・プロセッサ（または仮想ホスト・プロセッサ）２９であり、ホスト・コンピュータ・システム５０のプロセッサ１とは異なるネイティブ命令セット・アーキテクチャを有する、ネイティブ・プロセッサ２７を備える。エミュレーテッド・ホスト・コンピュータ・システム２１は、ネイティブ・プロセッサ２７がアクセス可能なメモリ２２を有する。実施形態において、メモリ２２は、コンピュータ・メモリ２部分とエミュレーション・ルーチン・メモリ２３部分とに区分される。コンピュータ・メモリ２は、エミュレーテッド・ホスト・コンピュータ・システム２１のプログラムがホスト・コンピュータ・アーキテクチャに従って使用可能である。ネイティブ・プロセッサ２７は、エミュレーテッド・プロセッサ２９のそれではなく、エミュレーション・ルーチン・メモリ２３から取得されたネイティブ命令である、アーキテクチャのアーキテクチャ化命令セットのネイティブ命令を実行する。ネイティブ・プロセッサ２７は、また、アクセスされたホスト命令の機能をエミュレートするためのネイティブ命令実行ルーチンを決定するために、アクセスされたホスト命令を復号可能な、シーケンスおよびアクセス／復号ルーチンで取得された１つまたは複数の命令を使用することによって、コンピュータ・メモリ２内のプログラムから実行のためにホスト命令にアクセスすることができる。ホスト・コンピュータ・システム５０のアーキテクチャ用に定義された他の機構は、たとえば汎用レジスタ、制御レジスタ、動的アドレス変換および入力／出力（Ｉ／Ｏ）サブシステム・サポート、ならびにプロセッサ・キャッシュなどの機構を含む、アーキテクチャ化機構ルーチンによって、エミュレートすることができる。エミュレーション・ルーチンは、エミュレーション・ルーチンの性能を向上させるために、（汎用レジスタおよび仮想アドレスの動的変換などの）ネイティブ・プロセッサ２７において使用可能な機能も利用することができる。ホスト・コンピュータ・システム５０の機能をエミュレートする際にネイティブ・プロセッサ２７を支援するために、特別なハードウェアおよびオフロード・エンジンも提供可能である。
【００１６】
メインフレームにおいて、アーキテクチャ化マシン命令は、プログラマ、通常、現在は「Ｃ」プログラマによって、しばしばコンパイラ・アプリケーションを介して使用される。記憶媒体内に記憶されたこれらの命令は、本来ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）  ＩＢＭ  Ｓｅｒｖｅｒ内で、あるいは他のアーキテクチャを実行しているマシン内で、実行可能である。これらは、既存および将来のＩＢＭメインフレーム・サーバ内で、および他のＩＢＭマシン（たとえばｐＳｅｒｉｅｓ  ＳｅｒｖｅｒおよびｘＳｅｒｉｅｓ（Ｒ）  Ｓｅｒｖｅｒ）上で、エミュレート可能である。これらは、ＩＢＭ社、Ｉｎｔｅｌ社、ＡＭＤ社、Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ社、その他によって製造されたハードウェアを使用する、多様なマシン上でＬｉｎｕｘ（Ｒ）を実行するマシン内で実行可能である。そのハードウェア上でｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの下で実行するのに加えて、Ｌｉｎｕｘならびに、Ｈｅｒｃｕｌｅｓ、ＵＭＸ、Ｆｕｎｄａｍｅｎｔａｌ  Ｓｏｆｔｗａｒｅ，Ｉｎｃ．（ＦＳＩ）、またはＰｌａｔｆｏｒｍ  Ｓｏｌｕｔｉｏｎｓ，Ｉｎｃ．（ＰＳＩ）によるエミュレーションを使用するマシンが使用可能であり、一般に実行はエミュレーション・モードである。エミュレーション・モードの場合、エミュレーション・ソフトウェアは、エミュレーテッド・プロセッサのアーキテクチャをエミュレートするためにネイティブ・プロセッサによって実行される。
【００１７】
エミュレーテッド・ホスト・コンピュータ・システム２１の構成要素のうちの１つまたは複数は、「ＩＢＭ  ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｐｒｉｎｃｉｐｌｅｓ  ｏｆ  Ｏｐｅｒａｔｉｏｎ」Ｐｕｂｌｉｃａｔｉｏｎ  Ｎｏ．ＳＡ２２−７８３２−０８、第９版、２０１０年８月で、より詳細に説明されている。ＩＢＭは、米国ニューヨーク州アーモンクにあるインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である。本明細書で使用される他の名称は、インターナショナル・ビジネス・マシーンズ・コーポレーションまたは他の会社の登録商標、商標、または製品名であり得る。
【００１８】
ネイティブ・プロセッサ２７は、典型的には、エミュレーテッド・プロセッサのエミュレーションを実行するためのファームウェアまたはネイティブ・オペレーティング・システムのいずれかを含む、エミュレーション・ルーチン・メモリ２３に記憶されたエミュレーション・ソフトウェアを実行する。エミュレーション・ソフトウェアは、エミュレーテッド・プロセッサ・アーキテクチャの命令をフェッチおよび実行する責務を負う。エミュレーション・ソフトウェアは、命令境界を追跡するために、エミュレーテッド・プログラム・カウンタを維持する。エミュレーション・ソフトウェアは、一度に１つまたは複数のエミュレーテッド・マシン命令をフェッチし、この１つまたは複数のエミュレーテッド・マシン命令を、ネイティブ・プロセッサ２７による実行のために対応するネイティブ・マシン命令のグループに変換することができる。これらの変換された命令は、より高速の変換が実施できるように、キャッシュに入れることができる。エミュレーション・ソフトウェアは、エミュレーテッド・プロセッサ用に作成されたオペレーティング・システムおよびアプリケーションが正しく動作することを保証するために、エミュレーテッド・プロセッサ・アーキテクチャのアーキテクチャ規則を維持する。さらにエミュレーション・ソフトウェアは、エミュレーテッド・プロセッサ２９上で実行するように設計されたオペレーティング・システムまたはアプリケーション・プログラムが、エミュレーション・ソフトウェアを有するネイティブ・プロセッサ２７上で実行可能なように、制御レジスタ、汎用レジスタ、浮動小数点レジスタ、たとえばセグメント・テーブルおよびページ・テーブルを含む動的アドレス変換機能、割り込みメカニズム、コンテキスト交換メカニズム、時刻（ＴＯＤ）機構、ならびに、Ｉ／Ｏサブシステムへのアーキテクチャ・インターフェースを含むが、これらに限定されない、エミュレーテッド・プロセッサ・アーキテクチャによって識別される、リソースを提供する。
【００１９】
エミュレートされている特定の命令が復号され、個々の命令の機能を実行するためにサブルーチンが呼び出される。エミュレーテッド・プロセッサ２９の機能をエミュレートするエミュレーション・ソフトウェア機能は、たとえば「Ｃ」サブルーチンまたはドライバ、あるいは、好ましい実施形態の説明を理解した後に、当業者の範囲内であるような特定のハードウェアにドライバを提供する何らかの他の方法で実装される。
【００２０】
実施形態において、本発明は、ソフトウェア（時には、認可された内部コード、ファームウェア、マイクロコード、ミリコード、ピココードなどと呼ばれ、そのいずれも本発明に適合するものである）によって実施可能である。図１を参照すると、本発明を具体化するソフトウェア・プログラム・コードは、長期記憶媒体、ＣＤ−ＲＯＭドライブ、テープ・ドライブ、またはハード・ドライブなどの、記憶デバイス１１から、ホスト・コンピュータ・システム５０のＣＰＵ（中央処理ユニット）１としても知られるプロセッサによってアクセスされる。ソフトウェア・プログラム・コードは、ディスケット、ハード・ドライブ、またはＣＤ−ＲＯＭなどの、データ処理システムと共に使用するための様々な既知の媒体上のいずれかで具体化可能である。コードは、こうした媒体上で配布するか、あるいは、１つのコンピュータ・システムのコンピュータ・メモリ２またはストレージからネットワーク１０を介して他のコンピュータ・システムへと、こうした他のシステムのユーザが使用するために、ユーザに配布することができる。
【００２１】
別の方法として、プログラム・コードはコンピュータ・メモリ２内に具体化し、プロセッサ・バス（図示せず）を使用してプロセッサ１によってアクセスすることが可能である。こうしたプログラム・コードは、様々なコンピュータ構成要素および１つまたは複数のアプリケーション・プログラムの機能および対話を制御する、オペレーティング・システムを含む。プログラム・コードは、通常、記憶デバイス１１などの高密度媒体から、プロセッサ１による処理に使用可能なコンピュータ・メモリ２へ、ページングされる。物理媒体上のメモリ内でソフトウェア・プログラム・コードを具体化するため、または、ネットワークを介してソフトウェア・コードを配布するため、あるいはその両方の、技法および方法は、周知であるため、本明細書ではこれ以上考察しない。プログラム・コードは、作成され、有形媒体（電子メモリ・モジュール（ＲＡＭ）、フラッシュ・メモリ、コンパクト・ディスク（ＣＤ）、ＤＶＤ、磁気テープなどを含むが、これらに限定されない）上に記憶された場合、しばしば「コンピュータ・プログラム製品」と呼ばれる。コンピュータ・プログラム製品媒体は、典型的には、処理回路による実行のために、好ましくはコンピュータ・システム内の処理回路によって読み取り可能である。
【００２２】
図３は、内部で本発明が実施可能な代表的ワークステーションまたはサーバ・ハードウェア・システムを示す。図３のシステム１００は、オプションの周辺デバイスを含む、パーソナル・コンピュータ、ワークステーション、またはサーバなどの、代表的なベース・コンピュータ・システム１０１を備える。ベース・コンピュータ・システム１０１は、既知の技法に従って、ベース・コンピュータ・システム１０１の１つまたは複数のプロセッサ１０６と他の構成要素とを接続し、その間での通信を可能にするために使用される、１つまたは複数のプロセッサ１０６およびバス（図示せず）を含む。バスはプロセッサ１０６をメモリ１０５、および、たとえば、（たとえば磁気媒体、ＣＤ、ＤＶＤ、およびフラッシュ・メモリのいずれかを含む）ハード・ドライブまたはテープ・ドライブを含むことが可能な、長期記憶１０７に接続する。ベース・コンピュータ・システム１０１は、ユーザ・インターフェース・アダプタも含むことが可能であり、これは、バスを介して、１つまたは複数のプロセッサ１０６を、キーボード１０４、マウス１０３、プリンタ／スキャナ１１０、または、タッチ式スクリーン、デジタル式入力パッドなどの任意のユーザ・インターフェース・デバイスとすることが可能な他のインターフェース・デバイス、あるいはそれらすべてなどの、１つまたは複数のインターフェース・デバイスに接続する。バスは、１つまたは複数のプロセッサを、ディスプレイ・アダプタを介してＬＣＤスクリーンまたはモニタなどのディスプレイ・デバイス１０２にも接続する。
【００２３】
ベース・コンピュータ・システム１０１は、ネットワーク１０９との通信１０８が可能なネットワーク・アダプタを介して、他のコンピュータまたはコンピュータのネットワークと通信することができる。例示のネットワーク・アダプタは、通信チャネル、トークン・リング、イーサネット、またはモデムである。別の方法として、ベース・コンピュータ・システム１０１は、セルラ式デジタル・パケット・データ（ＣＤＰＤ）カードなどのワイヤレス・インターフェースを使用して、通信可能である。ベース・コンピュータ・システム１０１は、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）内のこうした他のコンピュータと関連付けることができるか、あるいは、ベース・コンピュータ・システム１０１は、他のコンピュータを備えるクライアント／サーバ配置構成におけるクライアントなどとすることができる。
【００２４】
図４は、内部で本発明が実施可能な、データ処理ネットワーク２００を示す。データ処理ネットワーク２００は、ワイヤレス・ネットワークおよびワイヤード・ネットワークなどの、複数の個別ネットワークを含むことが可能であり、そのそれぞれが、複数の個別ワークステーション２０１、２０２、２０３、２０４、または図３のベース・コンピュータ・システム１０１、あるいはそれらすべてを含むことが可能である。加えて、当業者であれば理解されるように、１つまたは複数のＬＡＮを含むことが可能であり、ＬＡＮはホスト・プロセッサに結合された複数のインテリジェント・ワークステーションを備えることができる。
【００２５】
プログラミング・コード１１１は、メモリ１０５内で具体化可能であり、プロセッサ・バスを使用してプロセッサ１０６によりアクセス可能である。こうしたプログラミング・コードは、様々なコンピュータ構成要素および１つまたは複数のアプリケーション・プログラム１１２の機能および対話を制御する、オペレーティング・システムを含む。プログラム・コードは、通常、長期記憶１０７から、プロセッサ１０６によって処理のために使用可能な高速メモリ１０５へとページングされる。物理媒体上のメモリ内でソフトウェア・プログラミング・コードを具体化するため、または、ネットワークを介してソフトウェア・コードを配布するため、あるいはその両方の、技法および方法は、周知であるため、本明細書ではこれ以上考察しない。プログラム・コードは、作成され、有形媒体（電子メモリ・モジュール（ＲＡＭ）、フラッシュ・メモリ、コンパクト・ディスク（ＣＤ）、ＤＶＤ、磁気テープなどを含むが、これらに限定されない）上に記憶された場合、しばしば「コンピュータ・プログラム製品」と呼ばれる。コンピュータ・プログラム製品媒体は、典型的には、処理回路による実行のために、好ましくはコンピュータ・システム内の処理回路によって読み取り可能である。
【００２６】
プロセッサが最も容易に使用可能な（通常は、プロセッサの他のキャッシュよりも高速かつ小型の）キャッシュは最下位（Ｌ１またはレベル１）キャッシュであり、メイン・ストア（メイン・メモリ）は最高位キャッシュ（３つのレベルが存在する場合はＬ３）である。最下位レベル・キャッシュは、しばしば、実行されることになるマシン命令を保持する命令キャッシュ（Ｉキャッシュ）およびデータ・オペランドを保持するデータ・キャッシュ（Ｄキャッシュ）に分割される。
【００２７】
さらに図４を参照すると、ネットワークは、データ・リポジトリにアクセス可能であり、ワークステーション２０５からの直接アクセスも可能である、ゲートウェイ・コンピュータ（クライアント・サーバ）２０６またはアプリケーション・サーバ（リモート・サーバ）２０８などの、メインフレーム・コンピュータまたはサーバも含むことができる。ゲートウェイ・コンピュータ２０６は、各ネットワーク２０７内への入口ポイントとして働く。ゲートウェイは、ネットワーキング・プロトコル間を接続する場合に必要である。ゲートウェイ・コンピュータ２０６は、好ましくは、通信リンクを用いて別のネットワーク（たとえばインターネット２０７）に結合することができる。ゲートウェイ・コンピュータ２０６は、通信リンクを使用して、１つまたは複数のワークステーション１０１、２０１、２０２、２０３、および２０４に調節結合することも可能である。ゲートウェイ・コンピュータは、インターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能なＩＢＭ  ｅＳｅｒｖｅｒ（ＴＭ）  ｚＳｅｒｉｅｓ  ｚ９  Ｓｅｒｖｅｒを利用して実装可能である。
【００２８】
実施形態において、本発明を具体化するソフトウェア・プログラミング・コードは、図３の長期記憶１０７などの長期記憶媒体から、ベース・コンピュータ・システム１０１のプロセッサ１０６によってアクセスされる。ソフトウェア・プログラミング・コードは、ディスケット、ハード・ドライブ、またはＣＤ−ＲＯＭなどのデータ処理システムと共に使用するための、様々な既知の媒体のいずれかの上に具体化可能である。コードは、こうした媒体上で配布するか、あるいは、１つのコンピュータ・システムのメモリまたはストレージからネットワークを介して他のコンピュータ・システムへと、こうした他のシステムのユーザが使用するために、ユーザ２１０および２１１に配布することができる。
【００２９】
図５を参照すると、プロセッサ１０６に関する例示のプロセッサ実施形態が示されている。プロセッサ１０６の性能を向上させるために、１つまたは複数レベルのキャッシュ３０３がメモリ・ブロックをバッファリングするために使用される。キャッシュ３０３は、使用される可能性があるメモリ・データのキャッシュ・ラインを保持する高速バッファである。典型的なキャッシュ・ラインは６４、１２８、または２５６バイトのメモリ・データである。実施形態において、データをキャッシュに入れる以外に命令をキャッシュに入れるために、別々のキャッシュが使用される。キャッシュ・コヒーレンス（メモリおよびキャッシュ内のラインのコピーの同期化）は、しばしば、当分野で周知の様々な「スヌープ」アルゴリズムによって提供される。プロセッサ・システムのメモリ１０５などのメイン・ストレージは、しばしばキャッシュと呼ばれる。４レベルのキャッシュ３０３を有するプロセッサ・システムにおいて、メモリ１０５は、典型的にはより高速であり、コンピュータ・システムが使用できる不揮発性記憶（ＤＡＳＤ、テープなど）の一部のみを保持するため、時折、レベル５（Ｌ５）キャッシュと呼ばれる。メモリ１０５は、データのページをキャッシュするが、それらはオペレーティング・システムによってメモリ１０５にページ・インされたり、メモリ１０５からページ・アウトされたりする。
【００３０】
プログラム・カウンタ（命令カウンタ）３１１は、実行されることになる現行命令のアドレスを追跡する。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅプロセッサにおけるプログラム・カウンタは６４ビットであるが、従来のアドレス指定制限をサポートするために、３１ビットまたは２４ビットに切り詰めることができる。プログラム・カウンタは、コンテキスト切り替えの間持続するように、典型的にはコンピュータのプログラム状況ワード（ＰＳＷ）で具体化される。したがって、プログラム・カウンタ値を有する進行中のプログラムは、たとえばオペレーティング・システムによって割り込まれる可能性がある（すなわち、現行のコンテキストは、プログラム環境からオペレーティング・システム環境へと切り替わる）。オペレーティング・システムがアクティブでない間、プログラムのＰＳＷはプログラム・カウンタ値を維持し、オペレーティング・システムが実行している間、オペレーティング・システムの（ＰＳＷの）プログラム・カウンタが使用される。実施形態において、プログラム・カウンタは、現行命令のバイト数に等しい数ずつ増分される。縮小命令セット・コンピューティング（ＲＩＳＣ）命令は典型的には固定長であり、複合命令セット・コンピューティング（ＣＩＳＣ）命令は典型的には可変長である。ＩＢＭ  ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの命令は、２、４、または６バイト長さを有するＣＩＳＣ命令である。プログラム・カウンタ３１１は、たとえばコンテキスト切り替え動作、または分岐命令の分岐実行動作のいずれかによって修正される。コンテキスト切り替え動作において、現行のプログラム・カウンタ値は、実行されているプログラムに関する他の状態情報（条件コードなど）と共にＰＳＷに保存され、実行されることになる新しいプログラム・モジュールの命令を指示する新しいプログラム・カウンタ値がロードされる。プログラムの意思決定またはプログラム内のループを許可するために、分岐命令の結果をプログラム・カウンタ３１１内にロードすることによって、分岐実行動作が実行される。
【００３１】
実施形態において、プロセッサ１０６の代わりに命令をフェッチするために、命令フェッチ・ユニット３０５が使用される。命令フェッチ・ユニット３０５は、「次の順次命令」、分岐実行命令のターゲット命令、または、コンテキスト切り替えに続くプログラムの第１の命令の、いずれかをフェッチする。実施形態において、命令フェッチ・ユニット３０５は、プリフェッチされた命令が使用される可能性に基づいて、命令を投機的にプリフェッチするためのプリフェッチ技法を使用する。たとえば命令フェッチ・ユニット３０５は、次の順次命令および他の順次命令の追加バイトを含む、１６バイトの命令をフェッチすることができる。
【００３２】
フェッチされた命令は、その後、プロセッサ１０６によって実行される。実施形態において、フェッチされた命令は、命令フェッチ・ユニット３０５の復号／ディスパッチ・ユニット３０６に渡される。復号／ディスパッチ・ユニット３０６は命令を復号し、復号された命令に関する情報を、適切な実行ユニット３０７、３０８、または３１０、あるいはそれらすべてに転送する。実行ユニット３０７は、復号された算術命令に関する情報を命令フェッチ・ユニット３０５から受信し、命令のオペレーション・コード（オペコード）に従って、算術演算をオペランドに対して実行することになる。オペランドは、メモリ１０５、アーキテクチャ化レジスタ３０９、または、実行されている命令の即値フィールドのいずれかから、実行ユニット３０７に提供される。実行の結果は、記憶される場合、メモリ１０５、アーキテクチャ化レジスタ３０９、または（制御レジスタ、ＰＳＷレジスタなどの）他のマシン・ハードウェア内のいずれかに記憶される。
【００３３】
プロセッサ１０６は、典型的には、命令の機能を実行するための１つまたは複数の実行ユニット３０７、３０８、および３１０を有する。図６を参照すると、実行ユニット３０７は、インターフェース論理４０７を介して、アーキテクチャ・レジスタ３０９、復号／ディスパッチ・ユニット３０６、ロード／ストア・ユニット３１０、およびその他のプロセッサ・ユニット４０１と通信することができる。実行ユニット３０７は、算術論理ユニット（ＡＬＵ）４０２が動作することになる情報を保持するためのいくつかのレジスタ回路４０３、４０４、および４０５を使用することができる。ＡＬＵ４０２は、加算、減算、乗算、および除算などの算術演算、ならびに、ＡＮＤ、ＯＲ、および排他的ＯＲ（ＸＯＲ）などの論理関数、回転、およびシフトを実行する。実施形態において、ＡＬＵは、設計に依存する特殊動作をサポートする。他の回路は、たとえば条件コードおよび回復サポート論理を含む、他のアーキテクチャ機構４０８を提供することができる。典型的には、ＡＬＵ動作の結果は、結果を様々な他の処理機能に転送することが可能な、出力レジスタ回路４０６内に保持される。他の実施形態ではプロセッサ・ユニットの多くの配置構成が存在し、本説明は、一実施形態の代表的な理解を与えることのみが意図される。
【００３４】
たとえばＡＤＤ命令は、算術機能および論理機能を有する実行ユニット３０７内で実行されることになるが、たとえば浮動小数点命令は、特殊浮動小数点機能を有する浮動小数点実行ユニット（図示せず）内で実行されることになる。好ましくは、実行ユニットは、オペランドに対してオペコード定義機能を実行することによって、命令によって識別されたオペランドに対して動作する。たとえばＡＤＤ命令は、命令のレジスタ・フィールドによって識別された２つのアーキテクチャ化レジスタ３０９内で見つけられたオペランドに対して、実行ユニット３０７によって実行可能である。
【００３５】
実行ユニット３０７は、２つのオペランドに対して算術的加算を実行し、その結果を第３のオペランドに記憶し、第３のオペランドは第３のレジスタまたは２つのソース・レジスタのうちの１つとすることができる。実行ユニット３０７は、好ましくは、シフト、回転、ＯＲ、およびＳＯＲ等の様々な論理関数、ならびに、加算、減算、乗算、除算のうちのいずれかを含む様々な代数関数を実行することが可能な、算術論理ユニット（ＡＬＵ）４０２を使用する。ＡＬＵ４０２のいくつかはスカラー演算用に、いくつかは浮動小数点用に設計される。実施形態において、データは、アーキテクチャに応じてビッグ・エンディアン（最下位バイトが最高位バイト・アドレスにある）またはリトル・エンディアン（最下位バイトが最下位バイト・アドレスにある）とすることができる。ＩＢＭ  ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅはビッグ・エンディアンである。符号付きフィールドは、アーキテクチャに応じて、符号および大きさ、１の補数、または２の補数とすることができる。２の補数における負の値または正の値のいずれかがＡＬＵ内での加算のみを必要とするため、２の補数は、ＡＬＵは減算機能を設計する必要がないという点で有利である。数は一般に省略して記述され、１２ビット・フィールドは４０９６バイト・ブロックのアドレスを定義し、一般に、たとえば４Ｋバイト（キロバイト）ブロックとして記述される。
【００３６】
図７を参照すると、分岐命令を実行するための分岐命令情報は、典型的には、他の条件付き演算が完了する前に分岐の結果を予測するために分岐履歴テーブル４３２などの分岐予測アルゴリズムを採用する、分岐ユニット３０８に送信される。現行の分岐命令のターゲットはフェッチされ、条件付き演算が完了する前に投機的に実行されることになる。条件付き演算が完了すると、投機的に実行された分岐命令は、条件付き演算の条件および推測された結果に基づいて完了または廃棄される。典型的な分岐命令は条件コードをテストし、条件コードが分岐命令の分岐要件に合致した場合、ターゲット・アドレスへと分岐することが可能であり、ターゲット・アドレスは、たとえば命令のレジスタ・フィールドまたは即値フィールド内でみつかったものを含むいくつかの数に基づいて、計算することができる。実施形態において、分岐ユニット３０８は、複数の入力レジスタ回路４２７、４２８、および４２９ならびに出力レジスタ回路４３０を有する、ＡＬＵ４２６を使用することができる。分岐ユニット３０８は、たとえば汎用レジスタ、復号／ディスパッチ・ユニット３０６、または他の回路４２５と通信可能である。
【００３７】
命令のグループの実行は、たとえば、オペレーティング・システムによって開始されたコンテキスト切り替え、コンテキスト切り替えを生じさせるプログラム例外またはエラー、コンテキスト切り替えを生じさせるＩ／Ｏ割り込み信号、あるいは、（マルチスレッド環境内での）複数のプログラムのマルチスレッド・アクティビティを含む、様々な理由で割り込み可能である。実施形態において、コンテキスト切り替え動作は、現在実行中のプログラムに関する状態情報を保存し、呼び出される別のプログラムに関する状態情報をロードする。状態情報は、たとえばハードウェア・レジスタまたはメモリ内に保存可能である。状態情報は、実行されることになる次の命令を指示するプログラム・カウンタ値、条件コード、メモリ変換情報、およびアーキテクチャ化レジスタ・コンテンツを含む。コンテキスト切り替えアクティビティは、ハードウェア回路、アプリケーション・プログラム、オペレーティング・システム・プログラム、またはファームウェア・コード（マイクロコード、ピココード、または認可された内部コード（ＬＩＣ））の単独で、あるいはそれらの組み合わせによって、実施可能である。
【００３８】
プロセッサは、命令定義方法に従ってオペランドにアクセスする。命令は、命令の一部の値を使用する即値オペランドを提供し、汎用レジスタまたは専用レジスタ（たとえば浮動小数点レジスタ）のいずれかを明示的に指示する、１つまたは複数のレジスタ・フィールドを提供することができる。命令は、オペコード・フィールドによってオペランドとして識別された暗黙レジスタを使用することができる。命令は、オペランド用のメモリ位置を使用することができる。オペランドのメモリ位置は、命令が、オペランドのアドレスをメモリ内に提供するためにまとめて追加される、ベース・レジスタ、インデックス・レジスタ、および即値フィールド（変位フィールド）を定義する、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの長変位機構によって例示されるような、レジスタ、即値フィールド、またはレジスタと即値フィールドとの組み合わせによって、提供可能である。本明細書において、位置とは、特に指定がない限り、メイン・メモリ（メイン・ストレージ）内の位置を示唆する。
【００３９】
図８を参照すると、プロセッサはロード／ストア・ユニット３１０を使用してストレージにアクセスする。ロード／ストア・ユニット３１０は、キャッシュ／メモリ・インターフェースを介してメモリ内のターゲット・オペランドのアドレスを取得すること、および、アーキテクチャ化レジスタ３０９または別のメモリ位置内にオペランドをロードすることによって、ロード動作を実行することが可能であるか、あるいは、メモリ内のターゲット・オペランドのアドレスを取得すること、および、アーキテクチャ化レジスタ３０９または別のメモリ位置から取得されたデータをメモリ内のターゲット・オペランド位置に記憶することによって、ストア動作を実行することが可能である。ロード／ストア・ユニット３１０は投機的であり、命令シーケンスに対して順序外れなシーケンスでメモリにアクセスすることが可能であるが、ロード／ストア・ユニット３１０は、命令が順序通りに実行されたような外観を、プログラムに対して維持する。ロード／ストア・ユニット３１０は、アーキテクチャ化レジスタ３０９、復号／ディスパッチ・ユニット３０６、キャッシュ／メモリ・インターフェース、またはその他の要素４５５と通信可能であり、ストレージ・アドレスを計算するため、および動作を順序通りに維持するためにパイプライン・シーケンシングを提供するための、様々なレジスタ回路、ＡＬＵ４５８、および制御論理４６３を備える。いくつかの動作は順序外れの可能性があるが、ロード／ストア・ユニットは、当分野で周知のように、順序外れ動作が順序通りに実行されたようにプログラムに対して見せるための機能を提供する。
【００４０】
好ましくは、アプリケーション・プログラムが「見る」アドレスは、しばしば仮想アドレスと呼ばれる。仮想アドレスは、時には「論理アドレス」および「有効アドレス」と呼ばれる。これらの仮想アドレスは、オフセット値での仮想アドレスのプレフィクシング、１つまたは複数の変換テーブルを介した仮想アドレスの変換を含むが、これらに限定されない、図５のＤＡＴ３１２などの様々なＤＡＴ技術のうちの１つによって、物理メモリ位置にリダイレクトされるという点で、仮想であり、変換テーブルは好ましくは少なくともセグメント・テーブルおよびページ・テーブルを単独または組み合わせで含み、セグメント・テーブルはページ・テーブルを指示するエントリを有する。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅでは、領域第１テーブル、領域第２テーブル、領域第３テーブル、セグメント・テーブル、およびオプション・ページ・テーブルを含む、変換の階層が提供される。アドレス変換の性能は、しばしば、仮想アドレスを関連付けられた物理メモリ位置にマッピングするエントリを含む、変換索引バッファ（ＴＬＢ）を使用することによって向上する。エントリは、ＤＡＴ３１２が変換テーブルを使用して仮想アドレスを変換するときに作成される。仮想アドレスのその後の使用では、低速の順次変換テーブル・アドレスではなく、高速ＴＬＢのエントリを使用することができる。ＴＬＢコンテンツは、最長時間未使用（ＬＲＵ）を含む、様々な変位アルゴリズムによって管理可能である。
【００４１】
プロセッサ１０６がマルチプロセッサ・システムのプロセッサである場合、各プロセッサは、コヒーレンシのために連動されたＩ／Ｏ、キャッシュ、ＴＬＢ、およびメモリなどの共有リソースを維持する責務を有する。実施形態において、「スヌープ」技術はキャッシュ・コヒーレンシを維持する際に使用されることになる。スヌープ環境では、各キャッシュ・ラインは、共有を容易にするために、共有状態、排他的状態、変更済み状態、無効状態などのうちのいずれか１つであるものとしてマーク付けすることができる。
【００４２】
図５のＩ／Ｏユニット３０４は、たとえばテープ、ディスク、プリンタ、ディスプレイ、およびネットワークを含む周辺デバイスに接続するための手段を、プロセッサ１０６に提供する。Ｉ／Ｏユニット３０４は、しばしば、ソフトウェア・ドライバによってコンピュータ・プログラムに提示される。ＩＢＭからのｚ／Ｓｅｒｉｅｓなどのメインフレームにおいて、チャネル・アダプタおよびオープン・システム・アダプタは、オペレーティング・システムと周辺デバイスとの間に通信を提供する、メインフレームのＩ／Ｏユニットである。
【００４３】
計装データは、プロセッサ１０６の動作に関するデータである。実施形態において、計装データおよび他のシステム・レベル・メトリクスへのアクセスは、制限されるかまたは使用不可の場合がある。コンピュータ・プロセッサは、特権状態（またはスーパーバイザ状態）および低特権状態（または問題状態）の下で動作する。特権状態では、プログラムは、特権動作を介したすべてのシステム・リソースへのアクセス（たとえばすべての制御レジスタおよびスーパーバイザ・メモリ・スペースへのアクセス）が可能である。特権状態は特権モードまたはスーパーバイザ・モードとも呼ばれる。コンピュータ・プロセッサ上で実行するオペレーティング・システムは、特権状態での動作が可能である。たとえば、低特権状態で実行するアプリケーション・プログラムは、制御レジスタへのアクセスが制限されるかアクセスできない可能性があり、オペレーティング・システムによってアプリケーション・プログラムに割り当てられたユーザ・メモリ・スペースのみにアクセスできる可能性がある。低特権状態は、典型的には、オペレーティング・システムの制御の下で実行されるアプリケーション・プログラムに割り当てられ、低特権状態ではいかなる特権動作も実行できない。低特権状態は、問題状態、問題モード、またはユーザ・モードとも呼ばれる。
【００４４】
低特権状態で実行しているプログラムへの書き込みが受け入れられない、こうした制限されたリソースの１つが、プログラム状況ワード（ＰＳＷ）である。ＰＳＷは、実行されることになる次の命令のプログラム・カウンタ、分岐命令によって使用可能な条件コード・フィールド、計装が有効化されているか無効化されているかを示すための計装制御フィールド、ならびに、命令順序付けを制御するため、およびプログラムに割り当てられた特権状態を含むコンピュータ・プロセッサの状態を決定するために使用される他の情報を、含むことができる。マルチスレッド処理環境では、複数のプログラムが、使用可能なコンピュータ・プロセッサ容量を共有するか、またはタイム・スライスする。それぞれのプログラムが、関連付けられたＰＳＷ、プログラムに割り当てられたメイン・ストレージにアクセスするためのアドレス変換テーブルの起点アドレス、汎用レジスタの現行値、制御レジスタ、浮動小数点レジスタのセット、などを含む、コンテキスト情報を有する。コンピュータ・プロセッサは、コンピュータ・プロセッサの、例外条件および外部刺激に応答した他のプログラムへの迅速なコンテキスト切り替えを可能にする、割り込み機能を有する。割り込みが発生した場合、コンピュータ・プロセッサは、特定クラスの割り込みのために、旧ＰＳＷ位置と呼ばれる割り当てられたストレージ位置内に現行ＰＳＷを配置する。コンピュータ・プロセッサは、第２の割り当てられたストレージ位置から新しいＰＳＷをフェッチする。この新しいコンテキストは、実行されることになる次のプログラムを決定する。実施形態において、これらのストレージ位置は、コンピュータ・プロセッサがアクセス可能なメモリ位置内に位置決めされる。コンピュータ・プロセッサが割り込み処理を完了した場合、割り込みを処理するプログラムは、旧ＰＳＷを含む旧コンテキストを再ロードし、割り込まれたプログラムが続行できるように、これを再度現行ＰＳＷとする。
【００４５】
ＰＳＷのフィールドは、明示的（たとえば、命令実行がＰＳＷビットの一部を読み取る場合）または暗黙的（たとえば、命令フェッチング、オペランド・フェッチング、アドレス生成計算、アドレス生成ソースなどの場合）のいずれかで、参照可能である。明示的参照は、一般に、実行時に実行されるが、暗黙的参照は、一般に、命令実行中にパイプラインの異なる段階（すなわち、命令フェッチ、命令復号、実行時、および完了時）で実行される。ＰＳＷ内の個々のフィールドは、互いに独立に参照または更新することができる。
【００４６】
実施形態において、コンテキストを操作することにより、オペレーティング・システムは、コンピュータ処理リソースを制御する（例えば、コンピュータ・プロセッサによるランタイム計装を有効化する）。ランタイム計装は、オペレーティング・システムの実行中に、ならびにオペレーティング・システムによって実行される任意のソフトウェア・アプリケーションによって、有効化または無効化することができる。ランタイム計装の有効化／無効化状態は、プログラムに関連付けられたＰＳＷでのコンテキスト情報として保存される。
【００４７】
ランタイム計装（ＲＩ）機構は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅを実装しているモデル上に組み込むことができる。ＲＩ機構がインストールされ、有効化された場合、データは、プログラム実行中にＣＰＵ内の１つまたは複数の収集バッファ内に集められる。記憶された情報の各単位が報告グループと呼ばれる。報告グループのコンテンツは、そのコンテンツがプログラム実行中にＣＰＵによって認識されるイベントを表す、複数の記録からなる。
【００４８】
ランタイム計装機構が構成内にインストールされた場合、ＰＳＷフィールド（ＲＩビット）はランタイム計装を有効化する。ランタイム計装制御の妥当性は、ＲＩビットをオンにする機能を決定するが、ＲＩが１の場合、ＣＰＵ制御は有効であり、ランタイム計装は有効化される。ランタイム計装機構は、ランタイム計装制御ロード、ランタイム計装制御修正、ランタイム計装エミット、ランタイム計装ネクスト、ランタイム計装オフ、ランタイム計装オン、ランタイム計装制御ストア、ランタイム計装制御テストの、命令を含むことができる。
【００４９】
ランタイム計装制御ロード（ＬＲＩＣ）命令は、ランタイム計装を管理するランタイム計装制御を初期化する。ランタイム計装制御修正（ＭＲＩＣ）は、最初にＬＲＩＣによって確立されたランタイム計装制御のすべてまたはサブセットを修正する。ランタイム計装エミット（ＲＩＥＭＩＴ）命令は、汎用レジスタの値を収集バッファ内に記憶することによって、これを収集する。ランタイム計装ネクスト（ＲＩＮＥＸＴ）命令は、ＲＩＮＥＸＴの後の、次の順次命令（ＮＳＩ）の指示サンプリングを実行する。ランタイム計装オフ（ＲＩＯＦＦ）命令は、ランタイム計装を無効化する。ランタイム計装オン（ＲＩＯＮ）命令は、ランタイム計装を有効化する。ランタイム計装制御ストア（ＳＴＲＩＣ）命令は、ランタイム計装制御の現行値を指定されたストレージ位置に配置する。ランタイム計装制御テスト（ＴＲＩＣ）命令は、ランタイム計装制御を検査する。有効である場合、制御状態変更インジケータが設定される。
【００５０】
ランタイム計装機構は、測定警報外部割り込みを保留にさせるための機能を含む。ランタイム計装によって収集され、プログラム・バッファに報告される情報の一部は、モデル依存であるため、定義されない。ランタイム計装機構によって提供されるサンプルおよびデータは、性能特徴の統計的推定を意図したもので、ほぼ正確であるが、反復可能でない場合がある。たとえば、例外を発生させるかまたはあるシステム内部アクティビティに関連付けられているサンプル命令が、結果として報告グループの記憶を生じさせることになるかどうか、および、記憶される場合、ランタイム計装データ内に含められたモデル依存データが影響を受けるかどうかは、サンプリング・モードに関係なく、予測不可能である。
【００５１】
収集バッファは、そのコンテンツがプログラム実行中にプロセッサによって認識されたイベントに関して報告する、記録のセットをキャプチャするために使用される。その例は、１つまたは複数の分岐実行、トランザクション実行アボートイベント、命令フェッチ・キャッシュ・ミス、データ・フェッチ・キャッシュ・ミス、データ・ストア・キャッシュ・ミス、ＲＩＥＭＩＴ命令のオペランドなどである。ＲＩＥＭＩＴ命令の実行は、汎用レジスタの値を収集バッファ内に記憶することによって、これを収集する。追加のデータは、命令データ・バッファなどの他のバッファ内に収集または記憶あるいはその両方が可能である。
【００５２】
報告は、報告制御の対象となる。サンプル命令が識別された場合、各報告制御は対応する条件のチェックを可能にする。対応する条件が存在する場合、報告グループが形成および記憶される。いかなる報告制御も有効化されないか、または、有効化された報告制御に対して対応する条件が存在しない場合、報告グループは記憶されない。サンプル命令に関して報告されるデータは、命令データ・バッファおよび他のモデル依存ソースから獲得され、その後、報告グループの１つまたは複数の記録のコンテンツを作成するために使用され、そうした記録の１つが命令記録である。
【００５３】
報告グループ・ストア内にキャプチャ可能な記録タイプは、フィラー、特別、開始、タイムスタンプ、命令、エミット、ＴＸアボート、呼び出し、戻り、および転送を含む。フィラー記録は、収集バッファ内の有効な記録数が現行の報告グループ・サイズの報告グループを満たすには不十分である場合に、報告グループ内で使用される。特別記録は、報告グループの特別セクションで使用可能である。開始記録は、第１の報告グループの第１の記録である。タイムスタンプ記録は、第１の報告グループ以外のあらゆる報告グループの記録０として記憶される。命令記録は、報告グループがサンプル命令に対して報告グループの最終記録として記憶される場合に作成される。エミット記録は、ＲＩＥＭＩＴの正常な実行によって作成される。トランザクション実行（ＴＸ）モード・アボート記録は、暗黙的アボートまたはトランザクション・アボート命令の実行のいずれかによって作成される。呼び出し記録は、呼び出しタイプ分岐命令として分類される分岐命令の実行によって作成される。戻り記録は、戻り命令として分類される戻りタイプ分岐命令の実行によって作成される。転送記録は、ある条件コード基準を満たす分岐命令の実行によって作成される。
【００５４】
図９は、実施形態において実装可能なプロセッサのランタイム計装用のシステムを示す概略図である。実施形態において、システム５００は、図１のプロセッサ１０６などの中央処理ユニット（ＣＰＵ）を含む。実施形態において、プロセッサ１０６は単一プロセッサである。代替実施形態において、プロセッサ１０６はマルチコア・プロセッサの単一処理コアである。実施形態において、プロセッサ１０６は可変速度で動作可能である。
【００５５】
実施形態において、プロセッサ１０６はレジスタ５１０をさらに含む。レジスタ５１０は、プロセッサ１０６による使用のためにデータのワードを記録可能なハードウェア・レジスタである。レジスタ５１０は、プロセッサ１０６によってアクセス可能なデータのビットを記憶するための１つまたは複数のラッチを含む。レジスタ５１０は、たとえば、汎用レジスタおよび制御レジスタを含むことができる。プロセッサ１０６は、さらに、レジスタ５１０と通信している計装モジュール５０６を含む。計装モジュール５０６は、プロセッサ１０６の計装を制御する処理回路である。計装モジュール５０６は、１つまたは複数の実行分岐のうちの実行経路、トランザクション実行アボート・イベント、様々なランタイム・オペランド、タイムスタンプ情報などの、計装データを、プロセッサ１０６から直接収集するように構成される。計装モジュール５０６は、プロセッサ１０６から計装データを収集し、収集バッファ５０８内に計装データを記憶する。実施形態において、収集バッファ５０８は計装モジュール５０６から受信するデータを収集する循環バッファであり、循環バッファが満たされた場合、最も古いデータを新しいデータで上書きする。
【００５６】
プロセッサ１０６は１つまたは複数のオペレーティング・システム５１６および１つまたは複数のアプリケーション５１８を実行する。１つまたは複数のオペレーティング・システム５１６および１つまたは複数のアプリケーション５１８は、ハード・ドライブ、ＣＤ／ＲＯＭ、フラッシュ・メモリなどのストレージ５２０内に記憶され、必要に応じてストレージ５２０からランタイム・メモリ５０４内へロードされる、ページと呼ばれる、現在実行しているオペレーティング・システムまたはアプリケーションあるいはその両方の１つまたは複数のアクティブな部分を記憶するために予約された、ランタイム・メモリ５０４領域内のメイン・メモリ５１４にロードされる。実施形態において、それぞれのオペレーティング・システムは、ハイパーバイザ（図示せず）によって管理され、プロセッサ１０６によって実行される、仮想マシンとして実行する。
【００５７】
実施形態において、プロセッサ１０６は、メイン・メモリ５１４から現在実行しているオペレーティング・システムまたはアプリケーションのために、レジスタ５１０内のＰＳＷ  ５１２を、メイン・メモリ５１４内のＰＳＷデータ５１２からロードし、１つまたは複数のプロセッサ設定をたとえばレジスタ５１０内に設定する。実施形態において、レジスタ５１０内のＰＳＷは、計装モジュール５０６を使用可能化および制御するための１つまたは複数のビットを含む。
【００５８】
１つまたは複数のアプリケーション５１８は、特定のオペレーティング・システム上で実行するようにコンパイルされたソフトウェア・アプリケーション、インタプリタ上で実行する解釈済みコード（例えばＪａｖａ（ＴＭ））、または、オペレーティング・システム・サポート・スレッド（たとえばプロセス管理、デーモンなど）を含む。１つまたは複数のオペレーティング・システム５１６または１つまたは複数のアプリケーション５１８あるいはその両方のそれぞれは、計装データの収集を開始または終了するために、計装モジュール５０６をトリガするための命令を実行することができる。
【００５９】
実施形態において、１つまたは複数のアプリケーション５１８のうちの１つは、サンプル命令であるように決定された命令を実行し、それによって、サンプル命令の実行の完了時にサンプル・ポイントを作成し、その後、計装モジュール５０６に、アプリケーションの収集したデータを、収集バッファ５０８からアプリケーションがアクセス可能なメイン・メモリ５１４内のプログラム・バッファ５２２へと移動させる。メイン・メモリ５１４は、当分野で知られた任意のアドレス指定可能メモリとすることができる。実施形態において、メイン・メモリ５１４は、時にはキャッシュと呼ばれる、高速アクセス・バッファ・ストレージを含むことができる。各ＣＰＵは関連付けられたキャッシュを有することができる。追加の実施形態において、メイン・メモリ５１４は動的ランダム・アクセス・メモリ（ＤＲＡＭ）である。さらに他の実施形態において、メイン・メモリは、アプリケーションによるアクセス可能な、コンピュータ・ハード・ドライブ、またはフラッシュ・メモリなどの、ストレージ・デバイスである。
【００６０】
ランタイム計装制御を構成するために、プロセッサ１０６はランタイム計装制御ロード（ＬＲＩＣ）命令をサポートする。本明細書で詳細に説明される特定のＬＲＩＣフィールドに加えて、他の機能をサポートするために追加のフィールドが定義可能であることを理解されよう。ＬＲＩＣ命令は、ランタイム計装をロードし、初期に構成するために使用することが可能であり、図９の計装モジュール５０６によってサポートされる。実施形態において、計装モジュール５０６はランタイム計装モジュール５０６とも呼ばれ、ランタイム計装制御および報告制御を実装する。ランタイム計装制御の現在の状態は、ランタイム制御ストア（ＳＴＲＩＣ）命令を使用して、図９のレジスタ５１０からメイン・メモリ５１４に記憶することができる。ＬＲＩＣ命令のオペランドとしてロード可能な制御ブロックの様々なフィールドの定義は、本明細書では、ランタイム計装制御の対応する値の状態を表すためにも使用される。
【００６１】
図１０は、実施形態において特権状態によって設定可能な制御を含む、ランタイム計装制御制御ブロック（ＲＩＣＣＢ）の一部を示す。制御ブロック部分６００は、図１０を参照しながら説明する以外の追加の値を含むことができる。制御ブロック部分６００に対する修正は、ＬＲＩＣ命令によって実行することができる。
【００６２】
制御ブロック部分は、妥当性ビット６０２（Ｖビット）を含む。妥当性ビット６０２は、プロセッサ内のランタイム計装制御のセットがＬＲＩＣ命令によって以前に設定された場合、その妥当性を示す。
【００６３】
制御ブロックは、低特権状態プログラムがＭＲＩＣ命令を実行できるかどうかを判別するために使用される、Ｓビット６０４も含む。Ｋビット６０６は、低特権状態プログラムが、起点アドレス、およびランタイム計装制御の限界アドレスなどの、ランタイム計装制御に関して、準特権状態で実行できるかどうかを示す。Ｋビット６０６は、ＰＥＲ制御に関連付けられた制御レジスタ（図示せず）などの他の値を、他の制御と組み合わせて修正するために、問題状態で発行されるＭＲＩＣ命令に許可を与えることも可能である。Ｈビット６０８は、アドレス制御（すなわち起点アドレス、限界アドレス、および現行アドレス）が１次仮想アドレス・スペースまたはホーム仮想アドレス・スペースを指すかどうかを判別する。Ｏビット６１０は無視され、０として扱われる。
【００６４】
低特権状態サンプル報告制御ビット６１２（Ｐｓビット）は、低特権状態プログラムと共に使用される。低特権状態にあり、ランタイム計装制御内のＰｓビット６１２がゼロの場合、ランタイム計装制御の報告制御は、ランタイム計装が有効化されていれば無視されるため、報告グループは記憶されない。低特権状態にあり、ランタイム計装制御内のＰｓビット６１２が１の場合、報告制御がチェックされ、それらの定義済み機能に従って使用される。
【００６５】
スーパーバイザ状態サンプル報告制御ビット６１４（Ｑｓビット）は、スーパーバイザ状態プログラムと共に使用される。スーパーバイザ状態にあり、ランタイム計装制御内のＱｓビット６１４がゼロの場合、ランタイム計装制御の報告制御は、ランタイム計装が有効化されていれば無視されるため、報告グループは記憶されない。スーパーバイザ状態にあり、ランタイム計装制御内のＱｓビット６１４が１の場合、報告制御がチェックされ、それらの定義済み機能に従って使用される。
【００６６】
低特権状態収集バッファ制御ビット６１６（Ｐｃビット）は、図９の収集バッファ５０８への更新を制御する。低特権状態にあり、ランタイム計装制御内のＰｃビット６１６がゼロの場合、ランタイム計装制御の収集バッファ制御は、ランタイム計装が有効化されていれば無視され、収集バッファ５０８への更新は防止される。低特権状態にあり、ランタイム計装制御内のＰｃビット６１６が１の場合、収集バッファ制御がチェックされ、それらの定義済み機能に従って使用される。
【００６７】
スーパーバイザ状態収集バッファ制御ビット６１８（Ｑｃビット）は、収集バッファ５０８への更新を制御する。スーパーバイザ状態にあり、ランタイム計装制御内のＱｃビット６１８がゼロの場合、ランタイム計装制御の収集バッファ制御は、ランタイム計装が有効化されていれば無視され、収集バッファ５０８への更新は防止される。スーパーバイザ状態にあり、ランタイム計装制御内のＱｃビット６１８が１の場合、示される収集バッファ制御がチェックされ、それらの定義済み機能に従って使用される。
【００６８】
Ｇビット６２０は、停止割り込みとも呼ばれる、ランタイム計装停止割り込みの保留制御である。Ｇビット６２０がゼロの場合、停止割り込みは保留されない。Ｇビット６０２が１の場合、停止割り込みは保留される。プログラム・バッファ５２２内の第１の報告グループが書き込まれた場合、Ｇビット６２０はゼロに設定される。すなわち、図１１のランタイム計装プログラム・バッファ起点アドレス（ＲＯＡ）７０２と、ランタイム計装プログラム・バッファ現行アドレス（ＲＣＡ）７０６が等しい場合、Ｇビット６２０はゼロに設定される。プログラム・バッファ５２２内の第１の報告グループ以外を記憶するように試行される場合、ランタイム計装停止条件が存在しなければＧビット６２０はゼロに設定され、報告グループは記憶される。プログラム・バッファ５２２内の第１の報告グループ以外を記憶するように試行される場合、ランタイム計装停止条件が存在すればＧビット６２０は１に設定され、報告グループは記憶されない。
【００６９】
Ｕビット６２２は、バッファ・フル割り込みおよび停止割り込みに関する有効化制御である。Ｕビット６２２がゼロの場合、割り込み要求の生成は無効化され、保留中の場合は保留のままである。
【００７０】
Ｌビット６２４は、バッファ・フル割り込みの保留制御である。Ｌビット６２４がゼロの場合、バッファ・フル割り込みは保留されない。Ｌビット６２４が１の場合、バッファ・フル割り込みは保留される。
【００７１】
キー・フィールド６２６は、その値が報告グループの記憶のためのストレージ保護キーとして使用される、４ビット符号なし整数である。報告グループの記憶は、ストレージ・キーがストレージ・アクセスのための要求に関連付けられたアクセス・キーと一致する場合にのみ許可され、フェッチは、ストレージ・キーがアクセス・キーと一致する場合、またはストレージ・キーのフェッチ保護ビットがゼロの場合に許可される。キーは、ストレージ・キーの４つのアクセス制御ビットがアクセス・キーに等しい場合、またはアクセス・キーがゼロの場合に一致する。
【００７２】
図１１は、ＭＲＩＣが準特権モード（すなわちＫビットが１）で実行することが許可されている場合の、ＲＩＣＣＢ制御ブロックの一部を示す。制御ブロック７００は、ランタイム計装制御の初期化のためのＬＲＩＣ命令のオペランドとすることも可能である。制御ブロック７００は、図１１を参照しながら説明される以外の追加の値を含むことができる。実施形態において、他の方法で指定されていないＭＲＩＣ命令オペランドのセクションへの、低特権状態プログラムによるアクセスは不可能である。準特権モードが許可された場合、ランタイム計装プログラム・バッファ起点アドレス（ＲＯＡ）７０２およびランタイム計装プログラム・バッファ限界アドレス（ＲＬＡ）７０４は、低特権状態プログラムによってＭＲＩＣ命令を用いて設定される。ＲＯＡ７０２は図９の問題バッファ５２２の第１のバイトの位置である。ＲＬＡ７０４は、プログラム・バッファ５２２の最終バイトの位置を示す。
【００７３】
実施形態において、ランタイム計装プログラム・バッファ現行アドレス（ＲＣＡ）７０６は、ＭＲＩＣ命令によって更新可能である。ＲＣＡ７０６は、記憶されることになる次の報告グループのプログラム・バッファ５２２内の位置である。ＲＣＡ７０６は、報告グループ・サイズ・フィールド７４４（ＲＧＳフィールド）を検査し、プログラム・バッファ５２２のアドレスを形成するために使用される有効ビット位置の数に影響を与える。６４ビットのＲＣＡ７０６は、ワード０、ワード１のビット位置０から２６のＲＧＳ、および右側に付加されたＲＧＳ＋５バイナリ・ゼロである。これは、プログラム・バッファ５２２内に記憶されることになる後続の報告グループの、図９のプログラム・バッファ５２２内の開始位置である。報告グループは、計装モジュール５０６によって作成され、その後プログラム・バッファ５２２内に記憶される、情報の単位である。実施形態において、ＲＣＡ７０６によって指定されたＲＧＳフィールド７４４が、ランタイム計装制御の現行報告グループ・サイズに等しくない（すなわち、ＲＣＡ７０６がＲＧＳフィールド７４４を変更することになる）場合、ＲＣＡ７０６はＲＯＡ７０２に設定される。
【００７４】
残余サンプル間隔カウント・フィールド７４２（ＲＳＩＣフィールド）は、ＭＲＩＣ命令を使用して低特権プログラムによって更新可能である。ＲＳＩＣフィールド７４２は、残余サンプル間隔カウントを示す６４ビットの符号なし整数を含む。ランタイム計装制御内のＲＳＩＣフィールド７４２の値がゼロ、またはスケーリング係数フィールド７４０（ＳＦフィールド）内の値に等しく、さらにランタイム計装が有効化されている場合、次のサンプル間隔は、サンプリング・モード７０８（Ｍ）およびＳＦフィールド７４０の値に基づいて、全間隔である。ＲＳＩＣフィールド７４２が非ゼロであり、ＳＦフィールド７４０よりも小さく、ランタイム計装が有効化されている場合、次のサンプル間隔は部分間隔である。ＲＳＩＣフィールド７４２が非ゼロであり、ＳＦフィールド７４０値よりも大きく、ランタイム計装が有効化されている場合、次のサンプル間隔は延長間隔である。延長間隔が満了になった場合、次の間隔はＳＦフィールド７４０値に基づく。ＲＳＩＣフィールド７４２が非ゼロ値に設定される場合、これは、ＳＦフィールド７４０の対象ともなる、同じモデル依存最大限界の対象となる。ＲＳＩＣフィールド７４２の元の値がゼロの場合、サンプリング・モードは、ＲＳＩＣフィールド７４２がＬＲＩＣおよびＭＲＩＣ命令の実行中に、ＳＦフィールド７４０内の値に設定されるかどうか、または、ランタイム計装が有効化されるまでゼロを示し続けるかどうかを、示すことになる。
【００７５】
ＳＦフィールド７４０は、その値がユニットのスケーリング係数カウントである、６４ビットの符号なし整数を含む。ユニットの寸法は、モード・フィールド７０８（Ｍフィールド）から決定される。ＲＳＩＣフィールド７４２内の値がゼロの場合、ＳＦフィールド７４０は、現行命令がサンプル命令として認識される地点でゼロまで減分される、ＲＳＩＣフィールド７４２の初期値を提供し、間隔カウントはＳＦフィールド７４０の値からリフレッシュされる。ＳＦフィールド７４０の有効値は、１から２６４−１の範囲内である。ゼロが指定された場合、値１が想定される。しかしながら、各モデルはＳＦフィールド７４０の最小値および最大値の両方を有することができる。最小値および最大値は、モード・フィールド７０８に基づいて、異なることも可能である。最小値を下回る値が指定された場合、モデル依存最小値がロードされる。最大値を上回る値が指定された場合、モデル依存最大値がロードされる。
【００７６】
ＤＣ制御フィールド７３６は、その値がデータのフェッチまたはストアのキャッシュ・ミスに関連付けられたキャッシュ待ち時間レベルを指定する、４ビットの符号なし整数である。すなわち、サンプル命令がデータ・アクセス・キャッシュ・ミスに遭遇した。他のランタイム計装制御によって禁止されない限り、ＤＣ制御フィールド７３６の値によって指定されたレベルよりも数値的に大きいかまたは等しいキャッシュ待ち時間レベルでそのデータ・アクセスがミスを認識した、サンプル命令を表す報告グループを記憶することが試行される。データ・アクセスに関するキャッシュ構造およびキャッシュ待ち時間レベルはモデルに依存する。複数または長いオペランドを用いる命令の場合、もしもあれば、オペランド・アクセスが報告制御に使用されるかどうかは、モデルに依存する。モデル依存挙動は、ＤＣ制御フィールド７３６の値を無視する可能性があるため、報告グループを記憶するための理由としては使用しない。
【００７７】
ＩＣフィールド７３４は、その値が命令フェッチ・キャッシュ・ミスに関連付けられたキャッシュ待ち時間レベルを指定する、４ビットの符号なし整数である。すなわち、サンプル命令のフェッチが、命令フェッチ・キャッシュ・ミスに遭遇した。ＩＣフィールド７３４およびＤＣ制御フィールド７３６の両方について、キャッシュ待ち時間レベルは、キャッシュ・レベル・アクセスが当該プロセッサからどれほど離れているかの抽象化である。待ち時間レベルは、プロセッサとメイン・ストレージとの間でネストされたキャッシュ・レベル量と、こうしたキャッシュ・レベルが複数プロセッサ間でいかに共有されるかに依存する。より大きな待ち時間レベルは、一般に、より多くの時間を消費するアクセスに対応する。ＩＣフィールド７３４およびＤＣ制御フィールド７３６内の値は、キャッシュ待ち時間レベルのゼロ起点識別とみなすことができる。たとえばゼロの値は、Ｌ１キャッシュ（すなわち、プロセッサに最も近いキャッシュ）に対応する。したがって１の値は、Ｌ２キャッシュ、あるいはマシンによってはＬ１．５キャッシュと呼ばれることのある、キャッシュの次の層である。２〜１５の値は、メイン・メモリに到達するまでの追加のキャッシュ待ち時間層の論理的進行を指定するが、メイン・メモリ自体は含まない。一般に、キャッシュ構造は１５層までの深さはない。したがって、ＩＣフィールド７３４およびＤＣ制御フィールド７３６内の１５の値は特殊なケースと解釈され、命令フェッチまたはデータ・アクセスに対するキャッシュ・ミスは、それぞれ、キャッシュ待ち時間レベルに関係なく、報告グループを記憶する目的のために認識されることはないことを意味する。他のランタイム計装制御によって禁止されない限り、ＩＣフィールド７３４の値によって指定されたレベルよりも数値的に大きいかまたは等しいキャッシュ待ち時間レベルでそのフェッチがミスを認識した、サンプル命令を表す報告グループを記憶することが試行される。命令フェッチに関するキャッシュ構造およびキャッシュ待ち時間レベルはモデルに依存する。モデル依存挙動は、ＩＣフィールド７３４の値を無視する可能性があるため、報告グループを記憶するための理由としては使用しない。
【００７８】
キャッシュ待ち時間レベル・オーバーライド報告制御ビット７３２（Ｆビット）は、非分岐命令用および分岐予測制御用である。ランタイム計装制御内のＦビット７３２がゼロの場合、ランタイム計装制御のキャッシュ報告制御（ＩＣフィールド７３４およびＤＣ制御フィールド７３６）がチェックされ、それらの定義済み機能に従って使用される。ランタイム計装制御の分岐予測制御（ＢＰｘｎビット７２２、ＢＰｘｔビット７２４、ＢＰｔｉビット７２６、およびＢＰｎｉビット７２８）がチェックされ、それらの定義済み機能に従って使用される。Ｆビット７３２が１である場合、これらの同じ制御は無視され、他の制御によって禁止されない限り、報告グループは記憶される。
【００７９】
データ・キャッシュ・ミス制御ビット７３０（Ｄビット）は、報告グループが記憶されるかどうかを示す。Ｄビット７３０が１である場合、サンプル命令に関するモデル依存データを含む報告グループの特別セクション内に特別タイプ記録を配置することができる。
【００８０】
ＭＲＩＣ命令は、分岐予測（ＢＰ）報告制御（ＢＰｘｎ  ７２２、ＢＰｘｔ  ７２４、ＢＰｔｉ  ７２６、およびＢＰｎｉ  ７２８）を含む。ランタイム計装制御内のＢＰ報告制御ビットがゼロの場合、対応する条件はチェックされない。ＢＰ報告制御ビットが１であり、対応する分岐予測条件が存在する場合、報告グループが記憶される。
【００８１】
ＢＰｘｎビット７２２は、１の場合、分岐予測情報のチェックを有効化する。したがって、サンプル分岐が実行されるものと誤って予測されたが実行されない場合、報告グループが記憶される。
【００８２】
ＢＰｘｔビット７２４は、１の場合、分岐予測情報のチェックを有効化する。したがって、サンプル分岐が実行されないものと誤って予測されたが実行された場合、報告グループが記憶される。
【００８３】
ＢＰｔｉビット７２６は、１の場合、分岐予測情報のチェックを使用することができる。したがって、サンプル分岐が実行されるものと正しく予測され、実行されたが、分岐ターゲットが誤って予測された場合、報告グループが記憶される。
【００８４】
ＢＰｎｉビット７２８は、１の場合、分岐予測情報のチェックを有効化する。したがって、サンプル分岐が実行されないものと正しく予測され、実行されなかったが、分岐ターゲットが誤って予測された場合、報告グループが記憶される。
【００８５】
トランザクション実行モード記録ビット７２０（Ｘビット）の有効化制御は、トランザクション実行モード・アボート記録の収集を制御する。ランタイム計装制御内のＸビット７２０がゼロである場合、トランザクション実行モード・アボート記録は収集されない。Ｘビット７２０が１である場合、トランザクション実行モード・アボート記録は収集され、図９の収集バッファ５０８内に配置される。モデルにトランザクション実行機構がインストールされていない場合、Ｘビット７２０は無視される。
【００８６】
ＲＩＥＭＩＴ命令制御ビット７１８（Ｅビット）は、ＲＩＥＭＩＴ命令の実行を制御する。ランタイム計装制御内のＥビット７１８がゼロであるか、または無視されて、ランタイム計装の有効化によりゼロとして扱われる場合、ＲＩＥＭＩＴはノーオペレーションを実行する。Ｅビット７１８が１であり、無視されない場合、ＲＩＥＭＩＴはその定義済み機能を実行することができる。
【００８７】
Ｊビット７４６は、ゼロの場合、マスク値に関係なく、条件分岐（ＢＣ）命令が他のタイプの分岐カテゴリ内にあることを指定する。Ｊビット７４６は、１の場合、１５のマスクを指定するＢＣ命令が、戻りタイプの分岐カテゴリ内にあることを指定する。ＢＣ命令が１〜１４のマスクを指定する場合、Ｊビット７４６による影響を受けず、常に他のタイプの分岐カテゴリ内にある。戻りタイプの分岐カテゴリ内にある場合、Ｒビット７１６は図９の収集バッファ５０８内への包含を制御する。他のタイプの分岐カテゴリ内にある場合、Ｂビット７４８は収集バッファ５０８内への包含を制御する。他のタイプの分岐カテゴリは、転送タイプ分岐カテゴリとしても示される場合がある。
【００８８】
命令アドレス・コード・ビット７１４（Ｃビット）は、呼び出しタイプ分岐の有効化を制御する。ランタイム計装制御内のＣビット７１４が１であり、命令が呼び出しタイプ分岐である場合、収集バッファ５０８が更新される。呼び出しタイプおよび戻りタイプの両方の分岐のモデル依存検出が組み合わされた場合、Ｃビット７１４は両方のタイプに対して動作し、Ｒビット７１６は有効ではない。
【００８９】
Ｒビット７１６は戻りタイプ分岐の有効化制御である。ランタイム計装制御内のＲビット７１６が１であり、命令が戻りタイプ分岐である場合、収集バッファ５０８が更新される。
【００９０】
Ｂビット７４８は、呼び出しタイプおよび戻りタイプの分岐以外の分岐の有効化制御である。ランタイム計装制御内のＢビット７４８が１であり、命令がランタイム計装によって認識された他のタイプの分岐である場合、収集バッファ５０８が更新される。
【００９１】
最大アドレス超過ビット７１２（ＭＡＥビット）は、１に設定された場合、１に設定された命令アドレス・コード（Ｃフィールド）を有する１つまたは複数の報告グループが記録されたことを示す。ＭＡＥビット７１２が１に設定されると、ランタイム計装の実行を続行しても、設定がゼロに戻されることはない。ＭＡＥビット７１２をゼロとして指定するＬＲＩＣ命令またはＭＲＩＣ命令の実行により、ＭＡＥビット７１２はゼロに設定されることになる。
【００９２】
ランタイム計装ネクスト（ＲＩＮＥＸＴ）制御ビット７１０（Ｎビット）は、サンプル命令の実行を制御する、ランタイム計装ネクスト命令の有効化を制御する。ランタイム計装制御内のＮビット７１０がゼロであるか、または無視されて、ゼロとして扱われる場合、ＲＩＮＥＸＴはノーオペレーションを実行する。Ｎビット７１０が１であり、無視されない場合、ＲＩＮＥＸＴはその定義済み機能を実行することができる。
【００９３】
モード・フィールド７０８（Ｍフィールド）は、その値が、ランタイム計装制御に関するサンプリング・モードを指定する、４ビットの符号なし整数である。サポートされるサンプリング・モードは、例えば、ＣＰＵサイクルのカウントに基づくサンプリング、命令のカウントに基づくサンプリング、または、ＲＩＮＥＸＴなどのサンプル命令に応じたサンプリング（指示サンプリング）を含む。
【００９４】
報告グループ・サイズ・フィールド７４４（ＲＧＳ）は、その値が報告グループの記録の数（ＲＲＧ）を指定する、３ビットの符号なし整数である。報告グループ内の記録数は、開始／タイムスタンプ記録および命令最終記録を含む２つの記録から、２５６の記録まで変化する可能性がある。実施形態において、上限はモデルに依存する可能性がある。報告グループ内に配置される１６バイト記録の数は、２（ＲＧＳ＋１）である。
【００９５】
１次ＣＰＵ機能抑制制御ビット７３８（Ｙビット）および２次ＣＰＵ機能抑制制御ビット７３９（Ｚビット）は、集合的に抑制制御と呼ばれる。報告グループの記憶の抑制は、記憶が試行されないことを意味する。構成内のすべてのＣＰＵのＣＰＵ機能が同じである場合、抑制制御は有効でなく、抑制は発生しない。構成において、ＣＰＵのＣＰＵ機能が別のＣＰＵの機能と異なる場合、抑制制御は有効であり、少なくとも１つのＣＰＵは１次ＣＰＵ機能で動作することになると言われ、少なくとも１つの他のＣＰＵは２次ＣＰＵ機能で動作することになると言われる。１次および２次ＣＰＵ機能は異なる動作速度である。Ｙビット７３８およびＺビット７３９がどちらもゼロの場合、抑制は発生しない。Ｙビット７３８がゼロでありＺビット７３９が１である場合、ＣＰＵ、たとえばプロセッサ１０６が２次ＣＰＵ機能で動作していれば、抑制が発生する。Ｙビット７３８が１でありＺビット７３９がゼロである場合、ＣＰＵ、たとえばプロセッサ１０６が１次ＣＰＵ機能で動作していれば、抑制が発生する。Ｙビット７３８およびＺビット７３９がどちらも１である場合、抑制が発生する。
【００９６】
Ｐビット７５２はランタイム計装のためのＰＥＲ制御である。Ｐビット７５２が１の場合、追加のランタイム計装ＰＥＲ制御は動作可能である。Ｐビット７５２がゼロの場合、追加のランタイム計装ＰＥＲ制御は無視される。ＳＴＲＩＣ命令の実行が、ランタイム計装ＰＥＲ制御の現行値を記憶する。
【００９７】
ＰＩビット７５４はＰＥＲイベント即値サンプル制御である。Ｐビット７５２が１の場合、ＰＩビット７５４は有意である。ＰＩビット７５４が有意であり１である場合、ＰＥＲイベントを生じさせる命令は、サンプル命令としても認識される。すなわち、その命令タイプ記録がＰＥＲイベントを生じさせる命令を識別する、報告グループが記憶される。ＰＩビット７５４が有意でありゼロである場合、ＰＥＲイベントを生じさせる命令は、サンプル・ポイントでもない。ＰＩビット７５４の値に関係なく、ＰＥＲタイプの記録は収集バッファ５０８内に配置される。
【００９８】
ＰＫビット７５６は、問題状態ＰＥＲ制御レジスタ修正許可制御である。Ｐビット７５２が１の場合、ＰＫビット７５６は有意である。ＰＫビット７５６が有意であり１である場合、問題状態プログラムは、図１２に関連して詳細に説明するように、ＰＥＲ制御レジスタＣＲ９、ＣＲ１０、およびＣＲ１１を表すＲＩ制御を変更することが可能である。すなわち、ＭＲＩＣ命令は、ランタイム計装ＰＥＲ制御を変更するために使用可能である。ＰＫビット７５６が有意でありゼロである場合、問題状態プログラムは、ＰＥＲ制御レジスタＣＲ９、ＣＲ１０、およびＣＲ１１を表すランタイム計装制御を変更することができない。ＰＫビット７５６は特権ビットであり、ＬＲＩＣ命令の実行中に設定可能である。
【００９９】
図１１の上記フィールドおよびビットはフィールドの配置および命名の例であり、本明細書では明瞭にする目的で提供されている。他の実施形態では、フィールドのサブセットのみを使用すること、フィールドを任意の順序または位置とすること、フィールドを異なる名前で表すことなどが可能である。
【０１００】
ランタイム計装がインストールされ、有効化される場合、複数のイベントおよびデータを収集バッファ５０８内にキャプチャすることができる。収集バッファ５０８は、そのコンテンツがプログラム実行中にプロセッサ１０６によって認識されたイベントに関して報告する、記録のセットをキャプチャするために使用される。その例は、１つまたは複数の分岐の実行、トランザクション実行アボート・イベント、キャッシュ・ミス、およびランタイム計装エミット命令のオペランドである。ＩＣおよびＤＣ制御フィールド７３４および７３６は、命令またはデータのプリフェッチ挙動を向上させるために、プログラムがいくつかの訂正アクションを実行することに関心を持つことになるレベルを設定する。ＲＩＥＭＩＴ命令の実行は、汎用レジスタの値を収集バッファ５０８内に記憶することによって、当該値を収集する。ランタイム計装命令記録を構築するためのモデル依存サンプル命令データを収集するために使用される命令データ・バッファ（ＩＤＢ）（図示せず）などの、他のバッファ内に追加のデータを収集あるいは記憶することも可能である。
【０１０１】
収集されたランタイム計装情報は、サンプリング・ベースで報告される。命令ストリームからの命令がサンプリングされる。サンプリングされた命令は、サンプル命令と呼ばれる。サンプル命令を決定するためのいくつかのモードは、ランタイム計装が有効な場合、以下のように定義される。サイクル・カウント・モードでは、カウントは、どちらも現行間隔に関するカウントを提供するために使用される、ＳＦ７４０またはＲＳＩＣ７４２のいずれかで指定されるＣＰＵサイクルの数である。カウントは、サンプリング・モードに関連付けられたイベントに応答して調整される。たとえばカウントは、プロセッサ１０６が動作状態にある場合に減分することができる。カウントが、ゼロなどのしきい値まで減分された場合、現行命令はサンプル命令として認識され、カウントはＳＦ７４０の値に再初期化され、次のサイクルで減分を開始する。サンプル命令の実行が完了すると、適宜、報告が実行される。
【０１０２】
命令カウント・モードでは、カウントは、どちらも現行間隔に関するカウントを提供するために使用される、ＳＦ７４０またはＲＳＩＣ７４２のいずれかで指定される。単一の動作単位からなる命令の場合、カウントは、カウントを調整するために使用されるイベントとして命令の完了時に減分される。命令は、カウントがゼロなどのしきい値まで減分された場合、サンプル命令である。複数の動作単位からなる命令の場合、カウントは以下のいずれか１つの方法で減分される。
ａ．割り込み可能命令の場合、部分的に完了したすべての動作単位、カウントが減分される１つのカウント済み単位を表す。
ｂ．割り込み可能命令の場合、最も新しい部分的完了から最終完了までのすべての動作単位は、カウントが減分される１つのカウント済み単位を表す。
ｃ．命令のパラメータによって指定された処理のうちＣＰＵが決定した部分を実行した後に完了する命令の場合、完了は、カウントが減分される１つのカウント済み単位を表す。
ｄ．複数の動作単位を実行した後に完了するが、上記ａ〜ｃのカテゴリに入らない命令の場合、最終動作単位の完了は、カウントが減分される１つのカウント済み単位を表す。
命令は、命令の任意のカウント済み単位についてカウントがゼロまで減分された場合、サンプル命令である。ゼロなどのしきい値に達すると、カウントはＳＦ７４０の値に再初期化され、上記ａ〜ｄに記載されたようにカウントダウンを開始する。カウント・モードのすべてのケースにおいて、報告は、サンプル命令の最終動作単位の完了後に、適宜発生する。
【０１０３】
指示サンプリング・モードでは、指示されたサンプリングは、Ｎビット７１０が１であり、ＲＩＮＥＸＴ命令が正常に実行された場合に発生する。サンプル命令は、ＲＩＮＥＸＴ命令後の次の順次命令（ＮＳＩ）である。次の順次命令が実行タイプ命令である場合、サンプル命令は実行タイプ命令のターゲット命令である。指示サンプリングは、サイクル・カウントまたは命令カウント・モードの場合に発生可能である。カウント・サンプリングは、指示サンプリングおよびその結果生じるアクションのいずれかと共に続行され、そうでなければ、カウント・サンプリングから決定されたサンプル命令が、指示サンプリングによって決定された同じ命令である場合に、２つの報告グループが記憶されないことを除き、影響を受けない。
【０１０４】
サンプリング・モードが何であれ、サンプル命令がＲＩＮＥＸＴ命令の実行によって識別された場合、報告グループが記憶される。しかしながら、ランタイム計装制御Ｙ７３８、Ｚ７３９、Ｑｓ６１４、およびＰｓ６１２は引き続き有効である。
【０１０５】
サイクル・カウントおよび命令カウント・サンプリングは、それぞれ、内部システム・イベントおよび例外条件に基づく変動量の対象となる近似間隔を決定する。カウントダウンは、ランタイム計装が無効から有効に遷移した場合に開始される。指示サンプリングは、ＲＩＮＥＸＴの完了とＮＳＩとの間に入れることが可能な任意のイベントに応じて、より少ない変動量の対象となる。ＰＥＲイベント・サンプリングは、ＰＥＲイベントの頻度に応じて、変動性が大きくなる可能性がある。
【０１０６】
サンプリングは、モードに関係なくサンプル命令を識別する。サンプル命令が識別されると、サンプル命令の実行完了時に収集が停止し、報告が開始する。その後、報告を管理する様々な報告制御が適用される。収集は、報告グループの記憶が保留された場合に再開する。
【０１０７】
報告グループの記憶は、サンプル命令の実行完了時に保留となる。報告グループの記憶が延期または保留されると、１）プログラム割り込み、２）緊急マシン・チェック割り込み、３）再開割り込み、および４）スーパーバイザ呼び出し割り込みの、いずれかの割り込みが認識された場合、報告グループをパージすることができる。
【０１０８】
保留中のいかなるＩ／Ｏ割り込み、外部割り込み、および抑制可能マシン・チェック割り込みも、報告グループが記憶されるまで、または、報告グループが記憶されないものであることをランタイム計装制御が決定するまで、保留のままである。
【０１０９】
各モードは、異なるセットの報告制御が可能である場合、または可能でない場合がある。サンプリング・モードが命令カウントまたはサイクル・カウントのいずれかであるが、指示サンプリングも使用される場合、同じサンプル命令が複数のサンプリング方法によって識別されることも可能である。これが発生する場合、また、使用されることになる報告制御がサンプリング・モードに従って異なる場合、指示サンプリングに関連付けられた報告制御が適用される。同様に、ＰＥＲイベントによって、他のサンプリング方法と組み合わせて、同じサンプル命令が識別される可能性もあり、結果として、共通のサンプル命令が識別された場合、単一の報告グループを記憶することになる。
【０１１０】
前述のように、プログラム実行中にランタイム計装が有効化されると、ランタイム計装データはプロセッサ１０６の収集バッファ５０８内に収集される。実施形態において、収集バッファ５０８は、最も新しく収集された記録を保存するために使用される、プロセッサ１０６の内部バッファである。サンプル・トリガ・ポイントが検出された場合、記録は、プログラム・バッファ５２２に書き込まれる報告グループの一部として、収集バッファ５０８からプログラム・バッファ５２２内にコピーされる。実施形態において、記録は、収集バッファ５０８から非破壊的方法でコピーされる。
【０１１１】
収集バッファ５０８は、プロセッサ内に位置し、実施形態では、所与のイベントに関する命令アドレスおよびイベント・メタデータを記憶するためのレジスタ・ペアのアレイとして実装されるため、「ハードウェア収集バッファ」と呼ばれることがある。イベントの例は、実行された分岐であり、レジスタ・ペアが当該分岐の命令アドレスを保持することが可能であり、メタデータが当該分岐のターゲットならびに当該分岐の履歴挙動に関する情報を保持することが可能である。実施形態において、レジスタ・ペアは、イベントが命令ストリーム内で発生する順序で順序付けおよび更新される。カウンタは、アレイ内で最も新しく更新されたエントリのインデックスを示すために維持される。実施形態において、収集バッファ５０８は循環バッファであり、収集バッファ５０８がフルの場合、次のイベントはアレイ内の第１のエントリを上書きし、後続のイベントでアレイのレジスタ・ペアの順次更新が再開される。したがって、アレイＣＢ［０］〜ＣＢ［Ｎ−１］と、最新の更新インデックスを示すカウンタｉとを想定すると、キャプチャされたイベントの追跡は、ＣＢ［ｉ］、ＣＢ［ｉ−１］．．．ＣＢ［１］、ＣＢ［０］、ＣＢ［Ｎ−１］、ＣＢ［Ｎ−２］．．．ＣＢ［ｉ＋１］のシーケンスで表されることになる。他の実施形態では、バッファ内の最も古いエントリを指示するヘッド・ポインタ、およびバッファ内の最も新しいエントリを指示するテール／現行ポインタの、２つのポインタが使用される。
【０１１２】
任意の所与の実行ポイントでのプロセッサ１０６の状態を表すイベントは、収集バッファ５０８内に順次キャプチャされる。収集バッファ５０８は、そのコンテンツがプログラム実行中にプロセッサ１０６によって認識されたイベント（たとえば、１つまたは複数の分岐の実行、トランザクション実行アボート・イベント、ＲＩＥＭＩＴ命令のオペランドなど）について報告する、記録のセットをキャプチャするために使用される。実施形態において、認識されるイベントは、図１１に示されるＲＩＣＣＢのコンテンツに依存する。示された収集バッファ５０８の実施形態におけるエントリは、イベント命令アドレスおよび他の関連イベント・メタデータを含む。イベント・メタデータの例は、分岐の履歴挙動に関するいくつかの情報を含む実行された分岐およびそのターゲットの命令アドレス、ＲＩＥＭＩＴ命令の命令アドレスおよびそれぞれのレジスタ値、ならびに、トランザクション・アボート命令のアドレスおよびそれぞれのトランザクション回復エントリ・ポイントを含むが、これらに限定されない。
【０１１３】
収集バッファ５０８の実施形態は、各命令アドレスが６４ビット（たとえばビット０：６３）、イベント・メタデータが６４ビット（たとえばビット６４：１２７）で指定された、３２までのエントリ（すなわち、３２のイベントに関する情報）を記憶する。収集バッファのサイズ（ＲＣＢ）は、記録の数を表すモデル依存カウントである。実施形態において、収集バッファ５０８のバイト・サイズは１６バイト記録サイズの倍数である。収集バッファのサイズ（ＲＣＢ）は、モデルの最大報告グループのカウント（ＲＲＧ）と、収集バッファから獲得されない報告グループ内の記録のカウント（ＲＮＣ）との、差異よりも大きいかまたは等しい、記録数である。したがって実施形態において、収集バッファのサイズは以下のように表される。
ＲＣＢ≧（ＲＲＧ−ＲＮＣ）
【０１１４】
実施形態において、収集バッファ５０８および（使用されるなら）命令データ・バッファのコンテンツは、以下のイベント（１）〜（３）によってパージされるか、あるいは何らかの影響を受ける。（１）割り込み、（２）ランタイム計装機構をオンおよびオフに切り替えるＰＳＷビット（たとえばビット２４）が、１からゼロに変更される、および、（３）ランタイム計装機構がトランザクション実行モードにある際にサンプル命令が識別された場合（この場合、収集データ・バッファ５０８および命令データ・バッファのさらなる更新は停止し、トランザクション終了時に再開するが、その時点で報告グループの記憶は保留されており、収集バッファ５０８および命令データ・バッファはパージされる）。
【０１１５】
図２に示されたエミュレーテッド・ホスト・コンピュータ・システムなどの実施形態において、収集バッファ５０８は、レジスタまたはメモリあるいはその両方を使用して実装される。この実施形態において、オプションの命令データ・バッファも、存在すれば、レジスタまたはメモリあるいはその両方を使用して実装される。
【０１１６】
実施形態において、追加の機能がデータ収集に影響を与えることが可能であり、前述の正規の命令カウントまたはサイクル・カウント・サンプリングをほとんど妨げずに、追加のデータ収集ポイントを提供するものとみなすことができる。これらは、汎用レジスタの値を収集バッファ５０８内に記憶することによって収集する、ＲＩＥＭＩＴ命令の実行を含む。加えて、前述のランタイム計装制御内のデータ収集制御ビット（たとえばＥ、Ｃ、Ｒ、およびＢ制御ビット）を使用して、収集されるデータのタイプをカスタマイズすることができる。このように、収集されるデータのタイプはプログラム可能である。
【０１１７】
実施形態において、命令データ・バッファは、ランタイム計装命令記録を構築するために使用されるモデル依存サンプル命令データを収集するために実装される。命令データ・バッファは、命令がサンプル命令として識別された場合、使用可能であることを予想して命令からデータを収集する。実施形態において、命令データ・バッファは、サンプル・ポイントとしてのトリガとなる命令に関する情報が保存される、プロセッサ内のハードウェア・バッファ／ストレージ位置であるため、ログ・アウト・プロセス中に、収集バッファ５０８からのデータと共に書き出すことが可能である。収集バッファ５０８と同様に、命令アドレスと、その命令に関連付けられたメタデータとを含む。命令データ・バッファ内のメタデータは、しばしばマシンに依存し、キャッシュ・ミス関係情報および分岐予測関係情報を含むことが可能であるが、これらに限定されない。
【０１１８】
実施形態によれば、他のデータは、収集バッファ５０８から、および命令データ・バッファから収集されるものではない場合がある。その例は、以下の一部を形成するために使用されるデータを含む。（１）報告グループの第１の記録、タイムスタンプまたは開始記録、および（２）追加のタイプの記録は、あらゆる報告グループについて作成可能であるため、収集バッファ５０８内に記憶されず、こうした記録が存在する場合は、報告グループの特別なセクションまたはマシン依存セクション内に配置することができる。これらの記録は、本明細書では「システム情報記録」と呼ばれる。
【０１１９】
図１２は、実施形態に従ったプログラム・イベント記録（ＰＥＲ）制御レジスタ８００を示す。個別のＰＥＲ制御レジスタＣＲ９、ＣＲ１０、およびＣＲ１１を設定するためのランタイム計装（ＲＩ）ＰＥＲ制御は、Ｐが１の場合に有効である。ＰＥＲ制御レジスタＣＲ９〜ＣＲ１１は、ＰＫビット７５６が１の場合にのみ、ＭＲＩＣ命令によって問題状態で設定可能である。ＰＫビット７５６は、制御ブロック７００のフィールドを多重化の形として再マッピングするために使用可能である。たとえば、Ｋビット６０６が設定され、ＰＫビット７５６がクリアな場合、ＭＲＩＣ命令は、プログラム・バッファ５２２を構成するために、ＲＯＡ７０２およびＲＬＡ７０４のフィールド内にアドレス値を設定することができる。Ｋビット６０６が設定され、ＰＫビット７５６が設定された場合、後続のＭＲＩＣ命令は、ＰＥＲ制御レジスタＣＲ９〜ＣＲ１１を構成するために、場合によってはＲＣＡ７０６、ＲＯＡ７０２、およびＲＬＡ７０４用に予約されたフィールドのうちの１つまたは複数を再マッピングすることができる。別の方法として、ＰＥＲ制御レジスタＣＲ９〜ＣＲ１１を構成するために、ＲＣＡ７０６、ＲＯＡ７０２、およびＲＬＡ７０４用に予約された以外のフィールドを多重化することができる。別の代替形態として、制御ブロック７００のサイズを拡張または再構成して、場合によってはＲＣＡ７０６、ＲＯＡ７０２、およびＲＬＡ７０４用に予約されたフィールドを再マッピングすることなく、ＰＥＲ制御レジスタＣＲ９〜ＣＲ１１を構成することができる。他の例として、ＰＥＲ制御レジスタ・データのコピーを保持するために、メイン・メモリ５１４内の位置を割り当てることができる。
【０１２０】
ＰＥＲ機能は一般に、図９のＰＥＲモジュール５２８によって管理可能である。ＰＥＲモジュール５２８は、複数のＰＥＲイベントの識別および報告をサポートする。ＰＥＲモジュール５２８は、図９のレジスタ５１０内に常駐可能な、ＰＥＲ制御レジスタＣＲ９、ＣＲ１０、およびＣＲ１１を使用して構成可能である。図９の計装モジュール５０６内のＲＩ  ＰＥＲモジュール５２６は、ＲＩ  ＰＥＲ制御を使用してＰＥＲ制御レジスタＣＲ９、ＣＲ１０、およびＣＲ１１を構成するために使用可能である。ＲＩ  ＰＥＲモジュール５２６は、ＰＥＲイベントの検出も可能である。ＰＥＲイベントは、ＰＥＲ割り込み条件を監視することによって、直接または間接的に検出することができる。ＲＩ  ＰＥＲモジュール５２６は、ＰＥＲイベントの検出に基づいてＰＥＲモジュール５２８によって生成される、ＰＥＲ割り込み条件をインターセプトすることができる。ＰＥＲ割り込み条件のインターセプトにより、プロセッサ１０６がＰＥＲ割り込み条件に関連付けられたＰＥＲ命令によって割り込まれるのを防止する。
【０１２１】
ＰＥＲ制御レジスタＣＲ９を設定するためのＲＩ  ＰＥＲ制御は、ＣＲ９のビット位置３２〜４７に対応する１６ビット・マスクである。ＣＲ９は、ＰＥＲイベント・マスク（ＥＭ）８０２を含む。ＥＭ８０２内のＣＲ９のビット３２〜３４および３６は、どのタイプのＰＥＲイベントが認識されるかを指定する。ＰＥＲ−３機構がインストールされた場合、ＥＭ８０２内のＣＲ９のビット３９も使用される。実施形態において、ＥＭ８０２内のＣＲ９のビットは以下のように割り当てられる。
ビット３２：正常な分岐イベント
ビット３３：命令フェッチ・イベント
ビット３４：ストレージ変更イベント
ビット３６：実アドレス使用ストア・イベント（ビット３４も１でなければならない）
ビット３９：命令フェッチ無効化イベント（ビット３３も１でなければならない）
ＣＲ９のビット３２〜３４およびビット３６は、１の場合、対応するイベントのタイプがＰＥＲイベントとして認識されることを指定する。しかしながらビット３６は、ビット３４も１の場合にのみ、この目的に対して有効である。ビット３４が１の場合、ストレージ変更イベントが認識される。ビット３４および３６が１の場合、ストレージ変更イベントおよび実アドレス使用ストア・イベントの両方が認識される。ビットがゼロの場合、対応するイベントのタイプは認識されない。ビット３４がゼロの場合、ストレージ変更イベントおよび実アドレス使用ストア・イベントの両方が認識されない。
【０１２２】
ＰＥＲ−３機構がインストールされない場合、ＣＲ９のビット３９は無視される。ビット３９は、ＣＲ９のビット３３も１の場合に有効である。ビット３３が１であり、ＰＥＲ−３機構がインストールされ、ビット３９が１の場合、ＰＥＲ命令フェッチ無効化イベントが認識される。ビット３３が１でありビット３９がゼロの場合（またはＰＥＲ−３機構がインストールされない場合）、ＰＥＲ命令フェッチ基本イベントが認識される。ビット３３がゼロの場合、ＰＥＲ命令フェッチ基本イベントおよびＰＥＲ命令フェッチ無効化イベントのいずれも認識されない。
【０１２３】
分岐アドレス制御（Ｂビット）８０４は、ＣＲ９のビット４０である。Ｂビット８０４は、１の場合、正常な分岐イベントが、指定されたストレージ領域内の位置に向かう分岐の場合にのみ発生することを指定する。Ｂビット８０４がゼロの場合、正常な分岐イベントは、分岐ターゲット・アドレスに関係なく発生する。
【０１２４】
ストレージ変更スペース制御（Ｓビット）８０６は、ＣＲ９のビット４２である。Ｓビット８０６は、１の場合、ストレージ変更イベントが、指定されたアドレス・スペース内の指定されたストレージ領域のみへの参照の結果として生じることを指定する。ストレージ変更イベントが発生するアドレス・スペースは、アドレス・スペースへの参照を変換するために使用されるアドレス・スペース制御要素内のストレージ変更イベント・ビットを用いて、１として指定される。ＤＡＴが有効でない場合、Ｓビット８０６は無視される。ＤＡＴが有効でないかまたはＳビット８０６がゼロの場合、ストレージ変更イベントは、特定のアドレス・スペースに対してのみ発生するように制約されない。
【０１２５】
ＰＥＲ制御レジスタＣＲ１０を設定するためのＲＩ  ＰＥＲ制御は、６４ビット・アドレスであり、ＰＥＲ開始アドレス８０８と一致する。ＣＲ１０のビット０〜６３は、指定されたストレージ領域の開始アドレスであり、メイン・メモリ５１４内の位置とすることができる。
【０１２６】
ＰＥＲ制御レジスタＣＲ１１を設定するためのＲＩ  ＰＥＲ制御は６４ビット・アドレスであり、ＰＥＲ終了アドレス８１０と一致する。ＣＲ１１のビット０〜６３は、指定されたストレージ領域の終わりのアドレスであり、メイン・メモリ５１４内の位置とすることができる。
【０１２７】
２つのタイプのＰＥＲイベント−命令フェッチおよびストレージ変更は、ストレージ内のエリアの指定を含む。正常な分岐イベントは、この指定を含むことができる。ストレージ領域は、ＣＲ１０内の開始アドレス８０８によって指定された位置から開始し、ＣＲ１１内の終了アドレス８１０によって指定された位置を含むこの位置まで延在する。命令フェッチ・イベントは、命令の第１のバイトまたは実行タイプ命令のターゲットの第１のバイトが、指定された領域からフェッチされた場合に必ず発生する。ストレージ変更イベントは、論理または仮想アドレスとして定義されたオペランド・アドレスを使用することによって、指定された領域に対してストア・アクセスが実行された場合に発生する。
【０１２８】
ランタイム計装が使用可能であり、Ｐビット７５２が１の場合、場合によってはＣＲ９、ＣＲ１０、およびＣＲ１１の状態を修正することになる、ロード制御命令などの命令をブロックして、ランタイム計装ＰＥＲがアクティブな間のレジスタ修正を防止することができる。
【０１２９】
図１３は、サンプル・ポイントでプログラム・バッファ５２２に記憶される報告グループ９００の高水準な例を示す。報告グループのサイズ（記録数）は、２（ＲＧＳ＋１）に等しいＲＲＧで表され、ここでＲＧＳは指数としての報告グループ・サイズである。収集バッファ５０８以外の位置からコピーされるモデル依存の記録数（ＲＮＣ）は、報告グループ内で使用される場合、非破壊的にコピーすることができる。図１３の例では、ＲＲＧ＝８、ＲＧＳ＝２、およびＲＮＣ＝４である。図１３に示される例示の報告グループ９００は、ヘッダー・セクション９０２、本文セクション９０４、特別記録セクション９０６、およびフッター・セクション９０８を含む。
【０１３０】
ヘッダー・セクション９０２は、状況、追跡、またはタイミング、あるいはそれらすべての情報を保持するための、開始記録またはタイムスタンプ記録を含むことができる。開始記録は、プログラム・バッファに記憶された第１の報告グループについて（すなわち、ＲＣＡ７０６がＲＯＡ７０２に等しい場合）、ヘッダー・セクション９０２内に記憶される。実施形態において、開始記録は、記録タイプ・フィールド「０２」、いくつの報告グループが現在プログラム・バッファ内に記憶されているかを示すための報告グループ数（ＮＲＧ）フィールド、報告グループのサイズを示すためのＲＧＳフィールド、プログラム・バッファ５２２がフルであるか否かを示すための終了（Ｓ）フィールド、ランタイム計装が停止されたかどうかを示すための停止（Ｈ）フィールド、および、開始記録が書き込まれた時点を示すための時刻（ＴＯＤ）クロック・フィールドを含む。実施形態において、開始記録内のフィールドの少なくともサブセットは、ＲＩ制御ブロック（たとえばＲＩＣＣＢ）から供給される。タイムスタンプ記録の実施形態は、記録タイプ「０３」を有し、記録が記憶された時点を示すためのＴＯＤクロック・フィールドを含む。実施形態において、タイムスタンプ記録は、第１の報告グループ以外の各報告グループについて、ヘッダー・セクション９０２内に記憶される。
【０１３１】
報告グループの本文セクション９０４は、収集バッファ５０８からサンプリングされたイベントおよび情報に関する様々な記録を含むことができる。イベントおよび情報は、たとえば、エミット命令によってキャプチャされた状態情報、トランザクション実行アボート、ＰＥＲイベント、呼び出し、戻り、分岐、およびフィラーを表すことができる。
【０１３２】
実施形態において、エミット記録は、ＲＩＥＭＩＴ命令が正常に実行された時点で作成され、収集バッファ５０８内に記憶される。エミット記録の実施形態は、記録タイプ・フィールド「１０」、現行ＰＳＷの命令アドレス・ビット位置がエミット記録内でどのように表されているかを示すための命令アドレス・コード・フィールド、アドレス指定モード（たとえば６４、３１、または２４ビット）に応じて変化し、ＲＩＥＭＩＴが実行タイプ命令のターゲットであった場合にＲＩＥＭＩＴ命令または実行タイプ命令の命令アドレスを含む、命令アドレス・フィールド、および、ＲＩＥＭＩＴ命令によって指定された汎用レジスタからのデータを記憶するためのエミット・データ・フィールドを含む。
【０１３３】
実施形態において、トランザクション実行アボート記録は、暗黙的アボート、またはトランザクション・アボート命令の実行のいずれかによって、作成され、収集バッファ５０８内に記憶される。アボート記録の実施形態は、記録タイプ・フィールド「１１」、現行ＰＳＷの命令アドレス・ビット位置がトランザクション実行アボート記録内でどのように表されているかを示すための命令アドレス・コード・フィールド、アドレス指定モード（たとえば６４、３１、または２４ビット）に応じて変化し、アボートされた命令が実行タイプ命令のターゲットであった場合にアボートされた命令または実行タイプ命令の命令アドレスを含む、命令アドレス・フィールド、および、アボートに関連付けられた任意のモデル依存データのためのフィールドを含む。
【０１３４】
実施形態において、ＰＥＲイベント記録は、プロセッサ１０６上で実行する命令ストリームに関連付けられたＰＥＲイベントを検出することによって作成される。ＲＩ  ＰＥＲタイプの記録の実施形態は、通常のＰＥＲプログラム割り込みで使用可能なＰＥＲイベントの証拠を含む。報告グループ９００の一部として記憶可能なＰＥＲイベント記録は、８ビットＰＥＲコード、２ビットＰＥＲアドレス・スペース制御要素（ＡＳＣＥ）識別、４ビットＰＥＲアクセス識別（ＰＡＩＤ）、命令フィールドの２ビットＰＥＲ長さ（ＩＬＣ）、および６４ビットＰＥＲアドレスを含むことができる。ＰＥＲコードは、正常分岐、命令フェッチ、ストレージ変更、実アドレス使用ストア、および命令フェッチ無効化のうちの１つとして、ＰＥＲイベントを識別することができる。ＰＥＲ  ＡＳＣＥ  ＩＤは、ＰＥＲイベントを引き起こした参照を変換するために使用される、アドレス・スペース制御要素を識別する。ＰＥＲ命令無効化イベントの場合、ＰＥＲ  ＩＬＣは０である。ＰＥＲ基本イベントの場合、ＰＥＲ  ＩＬＣは、ＰＳＷロード命令、ＰＳＷロード拡張命令、プログラム戻り命令、またはスーパーバイザ呼び出し割り込みによって導入されたＰＳＷに関する同時指定例外が、ＩＬＣを０に設定する場合を除き、ＰＥＲアドレスによって指定された命令の長さを示す。ＰＥＲアドレス・フィールドは、認識されたＰＥＲイベントに対して責務を負う命令をフェッチするために使用される命令アドレスを含む。
【０１３５】
実施形態において、呼び出し記録は、Ｒ２フィールドが非ゼロの場合のＢＲＡＮＣＨ  ＡＮＤ  ＳＡＶＥ（ＢＡＳＲ）、ＢＲＡＮＣＨ  ＡＮＤ  ＳＡＶＥ（ＢＡＳ）、ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ  ＡＮＤ  ＳＡＶＥ  ＬＯＮＧ、ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ  ＡＮＤ  ＳＡＶＥ、Ｒ２フィールドが非ゼロの場合のＢＲＡＮＣＨ  ＡＮＤ  ＬＩＮＫ（ＢＡＬＲ）、ＢＲＡＮＣＨ  ＡＮＤ  ＬＩＮＫ（ＢＡＬ）、およびＲ２フィールドが非ゼロの場合のＢＲＡＮＣＨ  ＡＮＤ  ＳＡＶＥ  ＡＮＤ  ＳＥＴ  ＭＯＤＥなどの、呼び出しタイプ分岐命令の実行によって作成される。呼び出し記録の実施形態は、記録タイプ・フィールド「１２」、現行ＰＳＷの命令アドレス・ビット位置が呼び出し記録内でどのように表されているかを示すための命令アドレス・コード・フィールド、アドレス指定モード（たとえば６４、３１、または２４ビット）に応じて変化し、分岐命令が実行タイプ命令のターゲットであった場合に分岐命令または実行タイプ命令のアドレスを含む、命令アドレス・フィールド、および分岐が正常に予測されたか否かを示すための正常挙動フィールド、および、分岐ターゲット・アドレス（「呼び出し位置」とも呼ばれる）を含むターゲット・アドレス・フィールドを含む。
【０１３６】
戻り記録および転送記録は、呼び出し記録と同じ形式を有することができる。実施形態において、戻り記録は記録タイプ・フィールド「１３」を有し、Ｒ２フィールドが非ゼロでありマスクが１５である場合のＢＲＡＮＣＨ  ＯＮ  ＣＯＮＤＩＴＩＯＮ（ＢＣＲ）などの、戻りタイプ分岐命令の実行によって作成される。戻り記録の場合、命令アドレス・フィールドは、分岐が実行タイプ命令のターゲットである場合、分岐命令または実行タイプ命令のアドレスを含み、ターゲット・アドレス・フィールドは戻り位置を含む。
【０１３７】
実施形態において、転送記録は記録タイプ・フィールド「１４」を有し、ａ．Ｒ２フィールドが非ゼロでありマスクが１〜１４の範囲内にある場合のＢＲＡＮＣＨ  ＯＮ  ＣＯＮＤＩＴＩＯＮ（ＢＣＲ）、ｂ．Ｊビットがゼロであるかまたはマスクが１〜１４の範囲内にある場合のＢＲＡＮＣＨ  ＯＮ  ＣＯＮＤＩＴＩＯＮ（ＢＣ）、ｃ．ＢＲＡＮＣＨ  ＯＮ  ＣＯＵＮＴ（ＢＣＴ、ＢＣＴＲ、ＢＣＴＧ、ＢＣＴＧＲ）、ｄ．ＢＲＡＮＣＨ  ＯＮ  ＩＮＤＥＸ  ＨＩＧＨ（ＢＸＨ、ＢＸＨＧ）、ｅ．ＢＲＡＮＣＨ  ＯＮ  ＩＮＤＥＸ  ＯＷ  ＯＲ  ＥＱＵＡＬ（ＢＸＬＥ、ＢＸＬＥＧ）、ｆ．ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ  ＯＮ  ＣＯＮＤＩＴＩＯＮ（ＢＲＣ）、ｇ．ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ  ＯＮ  ＣＯＮＤＩＴＩＯＮ  ＬＯＮＧ（ＢＲＣＬ）、ｈ．ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ  ＯＮ  ＣＯＵＮＴ（ＢＲＣＴ、ＢＲＣＴＧ）、ｉ．ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ  ＯＮ  ＣＯＵＮＴ  ＨＩＧＨ（ＢＲＣＴＨ）、ｊ．ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ  ＯＮ  ＩＮＤＥＸ  ＨＩＧＨ（ＢＲＸＨ、ＢＲＸＨＧ）、ｋ．ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ  ＯＮ  ＩＮＤＥＸ  ＬＯＷ  ＯＲ  ＥＱＵＡＬ（ＢＲＸＬＥ、ＢＲＸＬＧ）、ｌ．ＣＯＭＰＡＲＥ  ＡＮＤ  ＢＲＡＮＣＨ（ＣＲＢ、ＣＧＲＢ）、ｍ．ＣＯＭＰＡＲＥ  ＡＮＤ  ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ（ＣＲＪ、ＣＧＲＪ）、ｎ．ＣＯＭＰＡＲＥ  ＩＭＭＥＤＩＡＴＥ  ＡＮＤ  ＢＲＡＮＣＨ（ＣＩＢ、ＣＧＩＢ）、ｏ．ＣＯＭＰＡＲＥ  ＩＭＭＥＤＩＡＴＥ  ＡＮＤ  ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ（ＣＩＪ、ＣＧＩＪ）、ｐ．ＣＯＭＰＡＲＥ  ＬＯＧＩＣＡＬ  ＡＮＤ  ＢＲＡＮＣＨ（ＣＬＲＢ、ＣＬＧＲＢ）、ｑ．ＣＯＭＰＡＲＥ  ＬＯＧＩＣＡＬ  ＡＮＤ  ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ（ＣＬＲＪ、ＣＬＧＲＪ）、ｒ．ＣＯＭＰＡＲＥ  ＬＯＧＩＣＡＬ  ＩＭＭＥＤＩＡＴＥ  ＡＮＤ  ＢＲＡＮＣＨ（ＣＬＩＢ、ＣＬＧＩＢ）、およびｓ．ＣＯＭＰＡＲＥ  ＬＯＧＩＣＡＬ  ＩＭＭＥＤＩＡＴＥ  ＡＮＤ  ＢＲＡＮＣＨ  ＲＥＬＡＴＩＶＥ（ＣＬＩＪ、ＣＬＧＩＪ）などの、戻りタイプ分岐命令の実行によって作成される。転送記録は、分岐が実行された場合に作成される。転送記録について、命令アドレス・フィールドは、分岐が実行タイプ命令のターゲットである場合、分岐命令または実行タイプ命令のアドレスを含み、ターゲット・アドレス・フィールドは戻り位置を含む。
【０１３８】
フィラー記録は、収集バッファ５０８内の有効記録数が、現行ＲＧＳの報告グループを満たすのに十分でない場合に、報告グループ内で使用される。フィラー記録の実施形態は、記録がフィラー記録であり、残りのバイトは未定義であることを示すための、記録タイプ・フィールド「００」を含む。
【０１３９】
特別記録セクション９０６は、存在する場合、モデル依存記録を含むことができる。実施形態において、特別記録の形式は、記録が特別記録であること、および特別記録の残りのバイトがモデル依存データを含み得ることを示すために、記録タイプが「０１」に設定されることを除き、フィラー記録と同様である。
【０１４０】
フッター・セクション９０８は、サンプル命令の実行に関する情報を含む命令記録を含むことができる。命令記録は、サンプル命令について報告グループが記憶された場合に作成される。命令記録の実施形態は、記録タイプ・フィールド「０４」、現行ＰＳＷの命令アドレス・ビット位置が命令記録内でどのように表されているかを示すための命令アドレス・コード・フィールド、アドレス指定モード（たとえば６４、３１、または２４ビット）に応じて変化し、サンプル命令が実行タイプ命令のターゲットであった場合にサンプル命令または実行タイプ命令の命令アドレスを含む、命令アドレス・フィールド、および、命令データ・バッファ（ＩＤＢ）から収集された任意のモデル依存データを含むＩＤＢフィールドを含む。
【０１４１】
図１４は、プログラム・イベント記録イベント条件をランタイム計装イベントに変換することを実装可能な、プロセス・フロー１０００を示す。プロセス・フロー１０００は、プロセッサ１０６によって実装可能である。プロセス・フロー１０００は、別の方法として、図２のエミュレーテッド・プロセッサ２９によって実装可能である。説明を簡単にするために、プロセス・フロー１０００は、本明細書ではプロセッサ１０６に関連して説明する。
【０１４２】
最初に、図９のランタイム計装モジュール５０６およびレジスタ５１０は、前述のように、図１０および図１１の制御ブロック６００および７００をロードするためのＬＲＩＣ命令を使用してＰＥＲをサポートするように構成可能である。Ｐビット７５２は、ＰＩビット７５４、ＰＫビット７５６、Ｋビット６０６、ならびにＰＥＲ制御レジスタＣＲ９、ＣＲ１０、およびＣＲ１１と組み合わせて、ランタイム計装ＰＥＲをサポートするように構成可能である。
【０１４３】
ブロック１００２で、ランタイム計装は、プロセッサ１０６上で実行する命令ストリームの計装情報を収集するために有効化される。命令ストリームは、ランタイム・メモリ５０４からの問題状態プログラムまたはスーパーバイザ状態プログラムとすることができる。実施形態において、ＰＳＷデータ５１２における値の変更、およびＰＳＷデータ５１２のレジスタ５１０へのロードによって、ランタイム計装が有効化される。ランタイム計装制御が構成され、有効化されると、ＰＥＲイベントを含むイベントおよびデータを収集バッファ５０８内に収集することができる。サンプル命令またはサンプル・ポイントに達し、ランタイム計装プログラム・バッファ５２２とも呼ばれるプログラム・バッファ５２２内への報告グループの記憶をトリガする。
【０１４４】
ブロック１００４で、プロセッサ１０６は、ＰＥＲイベントを収集するために、プロセッサ１０６上で実行する命令ストリームに関連付けられたＰＥＲイベントを検出する。ブロック１００６で、ＰＥＲイベントは、プロセッサ１０６上で実行する命令ストリームがＰＥＲ割り込み条件に関連付けられたＰＥＲ割り込みによって割り込まれないように、ＰＥＲイベントに関連付けられたＰＥＲ割り込み条件をインターセプトすることによって検出可能である。
【０１４５】
ブロック１００８で、プロセッサ１０６は、ＰＥＲイベントの検出に基づいて、ＰＥＲイベント記録をランタイム計装イベントとして収集バッファ５０８に書き込む。ＰＥＲイベント記録は、検出されたＰＥＲイベントを識別する。ＰＥＲイベント記録は、報告グループ９００などの報告グループの一部として記憶するために、ランタイム計装イベント・タイプ記録としてフォーマット化される。
【０１４６】
１つまたは複数の報告グループが、収集されたランタイム計装イベントから生成され、ランタイム計装プログラム・バッファ５２２に記憶される。システム情報から、および収集バッファ５０８からの、記録の組み合わせを、図１３の報告グループ９００などの報告グループをランタイム計装プログラム・バッファ５２２に記憶するためにマージすることができる。ＰＩビット７５４がＰビット７５２と組み合わせて設定されると、報告グループがプログラム・バッファ５２２に記憶された場合、報告グループは、ＰＥＲイベント記録と、ＰＥＲイベントを発生させた命令をサンプル命令として識別する命令タイプ記録を含むことができる。
【０１４７】
前述のように、実施形態は、コンピュータ実装プロセスおよびそれらのプロセスを実施するための装置の形で具体化可能である。実施形態は、製品として有形媒体内に具体化された命令を含む、コンピュータ読み取り可能／使用可能媒体１１０２上にコンピュータ・プログラム・コード論理１１０４を備える、図１５に示されたようなコンピュータ・プログラム製品１１００を含むことが可能である。コンピュータ読み取り可能／使用可能媒体１１０２に関する製品の例は、フレキシブル・ディスケット、ＣＤ−ＲＯＭ、ハード・ドライブ、ユニバーサル・シリアル・バス（ＵＳＢ）フラッシュ・ドライブ、または任意の他のコンピュータ読み取り可能記憶媒体を含むことが可能であり、コンピュータ・プログラム・コード論理１１０４がコンピュータ内にロードされ、これによって実行された場合、コンピュータは本発明を実施するための装置となる。実施形態は、たとえば、記憶媒体内に記憶される、コンピュータ内にロードされるかまたはコンピュータによって実行される、あるいはその両方、もしくは、電線または電気ケーブル、光ファイバ、または電磁放射などの何らかの伝送媒体を介して伝送される、コンピュータ・プログラム・コード論理１１０４を含み、コンピュータ・プログラム・コード論理１１０４がコンピュータ内にロードされ、これによって実行された場合、コンピュータは本発明を実施するための装置となる。汎用マイクロプロセッサ上で実装された場合、コンピュータ・プログラム・コード論理１１０４のセグメントは、特定の論理回路を作成するためにマイクロプロセッサを構成する。
【０１４８】
技術的な効果および利点は、プログラム・イベント記録イベントをランタイム計装イベントに変換することを含む。ＰＥＲイベントは、ＰＥＲイベントの検出時に、あるタイプのランタイム計装イベントとして収集される。ＰＥＲイベントは、場合によっては計装済み命令ストリームを実行するプロセッサに割り込む可能性のある、ＰＥＲ割り込み条件をインターセプトすることによって、検出可能である。これにより、場合によっては直接アクセスＰＥＲイベント・データを有さない低特権プログラムが、ＰＥＲイベントを使用できるようになる。ＰＥＲイベントの収集にランタイム計装を使用することによっても、現在実行中のプログラムが、ＰＥＲ割り込みに割り込まれることなく実行を継続することができる。プログラム・イベント記録イベントのランタイム計装イベントへの変換についてのサポートは、エミュレーション・ルーチンを使用してエミュレーテッドまたは仮想のプロセッサに含めることも可能である。
【０１４９】
本明細書で使用される用語は、特定の実施形態を説明することを目的とするものであり、本発明を制限することは意図されていない。本明細書で使用される場合、「ａ」、「ａｎ」、および「ｔｈｅ」は、文脈が特に明確に示していない限り、複数形も同様に含むことが意図される。「含む」または「含んでいる」あるいはその両方の用語は、本明細書で使用される場合、示された特徴、整数、ステップ、動作、要素、または構成要素、あるいはそれらすべての存在を指定するが、１つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、またはそれらのグループ、あるいはそれらすべての存在または追加を排除するものでないことをさらに理解されよう。
【０１５０】
以下の特許請求の範囲における、すべての手段またはステップならびに機能要素の対応する構造、材料、動作、および同等物は、具体的に請求された他の請求要素と組み合わせて機能を実行するための、任意の構造、材料、または動作を含むことが意図される。本発明の説明は、例示および説明の目的で提示されたものであり、開示された形での本発明を網羅するかまたはこれに限定されることは意図されていない。当業者であれば、本発明の範囲および趣旨を逸脱することなく、多くの修正および変形が明らかとなろう。実施形態は、本発明の原理および実際の適用例を最も良く説明するため、ならびに、企図された特定の用途に合うような様々な修正を伴う様々な実施形態に関して他の当業者が本発明を理解できるようにするために、選択および説明された。
【０１５１】
当業者であれば理解されるように、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具体化することが可能である。したがって、本発明の態様は、完全にハードウェア実施形態、完全にソフトウェア実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなど）、あるいは、本明細書ではすべてが全体として「回路」、「モジュール」、または「システム」と呼ばれることのある、ソフトウェアとハードウェアの態様を組み合わせた実施形態の、形を取ることができる。さらに、本発明の態様は、その上に具体化されたコンピュータ読み取り可能プログラム・コードを有する１つまたは複数のコンピュータ読み取り可能媒体の内部に具体化された、コンピュータ・プログラム製品の形を取ることができる。
【０１５２】
１つまたは複数のコンピュータ読み取り可能媒体の任意の組み合わせが使用可能である。コンピュータ読み取り可能媒体は、コンピュータ読み取り可能信号媒体またはコンピュータ読み取り可能記憶媒体とすることができる。コンピュータ読み取り可能記憶媒体は、たとえば、電子、磁気、光、電磁、赤外線、または半導体のシステム、装置、またはデバイス、あるいはそれらの任意の好適な組み合わせとすることが可能であるが、それらに限定されない。コンピュータ読み取り可能記憶媒体のより特定の例（非網羅的リスト）は、１本または複数のワイヤを有する電気接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、光記憶デバイス、磁気記憶デバイス、またはそれらの任意の好適な組み合わせを含むことになる。本書の状況において、コンピュータ読み取り可能記憶媒体は、命令実行のシステム、装置、またはデバイスによって、あるいはそれらに関連して、使用するためのプログラムを、含むかまたは記憶することが可能な、任意の有形媒体とすることができる。
【０１５３】
コンピュータ読み取り可能信号媒体は、たとえばベースバンド内に、または搬送波の一部として、内部に具体化されたコンピュータ読み取り可能プログラム・コードを備える、伝搬データ信号を含むことができる。こうした伝搬信号は、電磁、光、またはそれらの任意の好適な組み合わせを含むが、これらに限定されない、様々な形のうちのいずれかの形を取ることができる。コンピュータ読み取り可能信号媒体は、コンピュータ読み取り可能記憶媒体ではなく、命令実行のシステム、装置、またはデバイスによって、あるいはそれらに関連して、使用するためのプログラムを、通信、伝搬、または移送することが可能な、任意のコンピュータ読み取り可能媒体とすることができる。
【０１５４】
コンピュータ読み取り可能媒体上に具体化されたプログラム・コードは、無線、有線、光ファイバ・ケーブル、ＲＦなど、またはそれらの任意の好適な組み合わせを含むが、それらに限定されない、任意の適切な媒体を使用して伝送可能である。
【０１５５】
本発明の態様に関する動作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などの、オブジェクト指向プログラミング言語、および、「Ｃ」プログラミング言語または同様のプログラミング言語などの、従来の手続き型プログラミング言語を含む、１つまたは複数のプログラミング言語の任意の組み合わせで作成可能である。プログラム・コードは、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロン型ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上および部分的にリモート・コンピュータ上で、あるいは、完全にリモート・コンピュータまたはサーバ上で、実行可能である。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを介して、ユーザのコンピュータに接続可能であるか、あるいは、（たとえばインターネット・サービス・プロバイダを使用し、インターネットを介して）外部コンピュータへの接続が可能である。
【０１５６】
本発明の態様は、本発明の態様に従った、方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャートまたは概略図あるいはその両方を参照しながら、上記で説明されている。フローチャートまたはブロック図あるいはその両方の各ブロック、および、フローチャートまたはブロック図あるいはその両方におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実装可能であることを理解されよう。これらのコンピュータ・プログラム命令は、マシンを生成するために、汎用コンピュータ、特定用途向けコンピュータ、または他のプログラマブル・データ処理装置のプロセッサに、提供可能であるため、結果として、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行する命令は、フローチャートまたはブロック図あるいはその両方のブロック内に指定された機能／動作を実装するための手段を作成することになる。
【０１５７】
これらのコンピュータ・プログラム命令は、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに対して、特定の様式で機能するように指示することが可能な、コンピュータ読み取り可能媒体内に記憶することも可能であり、結果として、コンピュータ読み取り可能媒体内に記憶された命令が、フローチャートまたはブロック図あるいはその両方
のブロック内に指定された機能／動作を実装する命令を含む製品を生成することになる。
【０１５８】
コンピュータ・プログラム命令は、一連の動作ステップをコンピュータ上で実行させるために、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードすることも可能であり、結果として、コンピュータまたは他のプログラマブル装置上で実行する命令が、フローチャートまたはブロック図あるいはその両方のブロック内に指定された機能／動作を実装するためのプロセスを提供することになる。
【０１５９】
前述のように、実施形態は、コンピュータ実装プロセスおよびそれらのプロセスを実施するための装置の形で具体化可能である。実施形態において、本発明は、１つまたは複数のネットワーク要素によって実行されるコンピュータ・プログラム・コード内に具体化される。実施形態は、製品として有形媒体内に具体化された命令を含む、コンピュータ・プログラム・コード論理を備えたコンピュータ使用可能媒体上のコンピュータ・プログラム製品を含む。コンピュータ使用可能媒体の製品の例は、フレキシブル・ディスケット、ＣＤ−ＲＯＭ、ハード・ドライブ、ユニバーサル・シリアル・バス（ＵＳＢ）フラッシュ・ドライブ、または任意の他のコンピュータ読み取り可能記憶媒体を含むことが可能であり、コンピュータ・プログラム・コード論理がコンピュータ内にロードされ、これによって実行された場合、コンピュータは本発明を実施するための装置となる。実施形態は、たとえば、記憶媒体内に記憶される、コンピュータ内にロードされるかまたはコンピュータによって実行される、あるいはその両方、もしくは、電線または電気ケーブル、光ファイバ、または電磁放射などの何らかの伝送媒体を介して伝送される、コンピュータ・プログラム・コード論理を含み、コンピュータ・プログラム・コード論理がコンピュータ内にロードされ、これによって実行された場合、コンピュータは本発明を実施するための装置となる。汎用マイクロプロセッサ上で実装された場合、コンピュータ・プログラム・コード論理のセグメントは、特定の論理回路を作成するためにマイクロプロセッサを構成する。
【０１６０】
図面内のフローチャートおよびブロック図は、本発明の様々な実施形態に従ったシステム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。この点で、フローチャートまたはブロック図内の各ブロックは、指定された論理機能を実装するための１つまたは複数の実行可能命令を含む、モジュール、セグメント、コードの一部を表すことができる。いくつかの代替実装において、ブロック内に示された機能は、図面に示された順序以外で発生可能であることにも留意されたい。たとえば、連続して示された２つのブロックは、実際にはほぼ同時に実行可能であるか、または時にはブロックは、関連する機能に応じて逆の順序で実行可能である。ブロック図またはフローチャートあるいはその両方の各ブロック、および、ブロック図またはフローチャートあるいはその両方におけるブロックの組み合わせは、指定された機能または動作を実行する特定用途向けハードウェアベース・システム、あるいは、特定用途向けハードウェアおよびコンピュータ命令の組み合わせによって、実装可能であることにも留意されよう。
【図１】
2015515654.tif 000003
【図２】
2015515654.tif 000004
【図３】
2015515654.tif 000005
【図４】
2015515654.tif 000006
【図５】
2015515654.tif 000007
【図６】
2015515654.tif 000008
【図７】
2015515654.tif 000009
【図８】
2015515654.tif 000010
【図９】
2015515654.tif 000011
【図１０】
2015515654.tif 000012
【図１１】
2015515654.tif 000013
【図１２】
2015515654.tif 000014
【図１３】
2015515654.tif 000015
【図１４】
2015515654.tif 000016
【図１５】
2015515654.tif 000017
【手続補正書】
【提出日】平成26年10月27日(2014.10.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プログラム・イベント記録イベントをランタイム計装イベントに変換するための、コンピュータ・プログラムであって、
コンピュータに、
実行される命令ストリームの計装情報を収集するためのランタイム計装を使用可能にする手順と、
前記命令ストリームに関連付けられるプログラム・イベント記録（ＰＥＲ）イベントを検出する手順と、
前記ＰＥＲイベントの検出に基づいて、前記ＰＥＲイベントを識別するＰＥＲイベント記録をランタイム計装イベントとして収集バッファに書き込む手順と、
を実行させる、コンピュータ・プログラム。
【請求項２】
前記ＰＥＲイベントを検出する手順は、
前記命令ストリームがＰＥＲ割り込み条件に関連付けられたＰＥＲ割り込みによって割り込まれないように、前記ＰＥＲイベントに関連付けられたＰＥＲ割り込み条件をインターセプトする手順、
をさらに含む、請求項１に記載のコンピュータ・プログラム。
【請求項３】
ランタイム計装制御ロード（ＬＲＩＣ）命令の実行に基づいて、ランタイム計装制御を構成する手順をさらに前記コンピュータに実行させ、前記ＬＲＩＣ命令はランタイム計装ＰＥＲ制御を有効化する、請求項１に記載のコンピュータ・プログラム。
【請求項４】
低特権プログラムからのランタイム計装制御値を構成するために、前記ＬＲＩＣ命令の実行に基づいてランタイム計装制御修正（ＭＲＩＣ）命令の実行を許可するように、Ｋビットを設定する手順、および、
前記ランタイム計装ＰＥＲ制御が有効化され、Ｋビットが設定された場合、前記低特権プログラムからのＰＥＲ制御レジスタを構成するために、前記ＬＲＩＣ命令の実行に基づいて前記ＭＲＩＣ命令の実行を許可するように、ＰＫビットを設定する手順、
をさらに前記コンピュータに実行させる、請求項３に記載のコンピュータ・プログラム。
【請求項５】
前記ＭＲＩＣ命令は、ランタイム計装プログラム・バッファ現行アドレス（ＲＣＡ）フィールド、ランタイム計装プログラム・バッファ起点アドレス（ＲＯＡ）フィールド、およびランタイム計装プログラム・バッファ限界アドレス（ＲＬＡ）フィールドを含む、制御フロックを更新し、
前記ＭＲＩＣ命令の実行に基づいて、ランタイム計装プログラム・バッファを構成するために、前記ＲＯＡフィールドおよび前記ＲＬＡフィールド内のアドレス値を設定する手順であって、前記ＰＫビットはクリアされ、前記Ｋビットは設定される、設定する手順、および、
後続のＭＲＩＣ命令の実行に基づいて、ＰＥＲ制御レジスタを構成するために、前記ＲＣＡフィールド、前記ＲＯＡフィールド、および前記ＲＬＡフィールドのうちの１つまたは複数を再マッピングする手順であって、前記ＰＫビットは設定され、前記Ｋビットは設定される、再マッピングする手順、
をさらに前記コンピュータに実行させる、請求項４に記載のコンピュータ・プログラム。
【請求項６】
前記ランタイム計装ＰＥＲ制御が有効化される場合、前記ＰＥＲイベントを発生させる命令をサンプル命令として認識するために、前記ＬＲＩＣ命令の実行に基づいてＰＩビットを設定する手順、および、
前記ＰＥＲイベント記録と、前記ＰＥＲイベントを発生させる命令を前記サンプル命令として識別する命令タイプ記録とを含む報告グループをランタイム計装プログラム・バッファに記憶する手順、
をさらに前記コンピュータに実行させる、請求項３に記載のコンピュータ・プログラム。
【請求項７】
前記ＰＥＲイベント記録は、
前記ＰＥＲイベントを識別するＰＥＲコードであって、前記ＰＥＲイベントは、正常分岐、命令フェッチ、ストレージ変更、実アドレス使用ストア、および命令フェッチ無効化のうちの１つである、ＰＥＲコードと、
前記ＰＥＲイベントを発生させた参照を変換するために使用される、ＰＥＲアドレス・スペース制御要素識別と、
ＰＥＲアクセス識別と、
命令フィールドのＰＥＲ長さと、
前記ＰＥＲイベントについての責務を負う前記命令をフェッチするために使用される命令アドレスを含む、ＰＥＲアドレスと、
を含む、請求項１に記載のコンピュータ・プログラム。
【請求項８】
プログラム・イベント記録イベントをランタイム計装イベントに変換するための、コンピュータ実装方法であって、
プロセッサ上で実行する命令ストリームの計装情報を収集するためのランタイム計装を有効化すること、
前記プロセッサによって、前記命令ストリームに関連付けられるプログラム・イベント記録（ＰＥＲ）イベントを検出すること、および、
前記ＰＥＲイベントの検出に基づいて、前記ＰＥＲイベントを識別するＰＥＲイベント記録をランタイム計装イベントとして収集バッファに書き込むこと、
を含む、方法。
【請求項９】
前記ＰＥＲイベントを検出することは、
前記プロセッサ上で実行する前記命令ストリームがＰＥＲ割り込み条件に関連付けられたＰＥＲ割り込みによって割り込まれないように、前記ＰＥＲイベントに関連付けられたＰＥＲ割り込み条件をインターセプトすること、
をさらに含む、請求項８に記載の方法。
【請求項１０】
ランタイム計装制御ロード（ＬＲＩＣ）命令の実行に基づいて、ランタイム計装制御を構成することをさらに含み、前記ＬＲＩＣ命令はランタイム計装ＰＥＲ制御を有効化する、請求項８に記載の方法。
【請求項１１】
低特権プログラムからのランタイム計装制御値を構成するために、前記ＬＲＩＣ命令の実行に基づいてランタイム計装制御修正（ＭＲＩＣ）命令の実行を許可するように、Ｋビットを設定すること、および、
前記ランタイム計装ＰＥＲ制御が有効化され、Ｋビットが設定された場合、前記低特権プログラムからのＰＥＲ制御レジスタを構成するために、前記ＬＲＩＣ命令の実行に基づいて前記ＭＲＩＣ命令の実行を許可するように、ＰＫビットを設定すること、
をさらに含む、請求項１０に記載の方法。
【請求項１２】
前記ＭＲＩＣ命令は、ランタイム計装プログラム・バッファ現行アドレス（ＲＣＡ）フィールド、ランタイム計装プログラム・バッファ起点アドレス（ＲＯＡ）フィールド、およびランタイム計装プログラム・バッファ限界アドレス（ＲＬＡ）フィールドを含む、制御フロックを更新し、
前記ＭＲＩＣ命令の実行に基づいて、ランタイム計装プログラム・バッファを構成するために、前記ＲＯＡフィールドおよび前記ＲＬＡフィールド内のアドレス値を設定することであって、前記ＰＫビットはクリアされ、前記Ｋビットは設定される、設定すること、および、
後続のＭＲＩＣ命令の実行に基づいて、ＰＥＲ制御レジスタを構成するために、前記ＲＣＡフィールド、前記ＲＯＡフィールド、および前記ＲＬＡフィールドのうちの１つまたは複数を再マッピングすることであって、前記ＰＫビットは設定され、前記Ｋビットは設定される、再マッピングすること、
をさらに含む、請求項１１に記載の方法。
【請求項１３】
前記ランタイム計装ＰＥＲ制御が使用可能な場合、前記ＰＥＲイベントを発生させる命令をサンプル命令として認識するために、前記ＬＲＩＣ命令の実行に基づいてＰＩビットを設定すること、および、
前記ＰＥＲイベント記録と、前記ＰＥＲイベントを発生させる命令を前記サンプル命令として識別する命令タイプ記録とを含む報告グループをランタイム計装プログラム・バッファに記憶すること、
をさらに含む、請求項１０に記載の方法。
【請求項１４】
前記ＰＥＲイベント記録は、
前記ＰＥＲイベントを識別するＰＥＲコードであって、前記ＰＥＲイベントは、正常分岐、命令フェッチ、ストレージ変更、実アドレス使用ストア、および命令フェッチ無効化のうちの１つである、ＰＥＲコードと、
前記ＰＥＲイベントを発生させた参照を変換するために使用される、ＰＥＲアドレス・スペース制御要素識別と、
ＰＥＲアクセス識別と、
命令フィールドのＰＥＲ長さと、
前記ＰＥＲイベントについての責務を負う前記命令をフェッチするために使用される命令アドレスを含む、ＰＥＲアドレスと、
を含む、請求項８に記載の方法。
【請求項１５】
プログラム・イベント記録イベントをランタイム計装イベントに変換するための、システムであって、
収集バッファと、
ランタイム計装モジュールを含むプロセッサであって、前記ランタイム計装モジュールは、
プロセッサ上で実行する命令ストリームの計装情報を収集するためのランタイム計装を有効化すること、
前記プロセッサによって、前記命令ストリームに関連付けられるプログラム・イベント記録（ＰＥＲ）イベントを検出すること、および、
前記ＰＥＲイベントの検出に基づいて、前記ＰＥＲイベントを識別するＰＥＲイベント記録をランタイム計装イベントとして収集バッファに書き込むこと、
を含む方法を実行するように構成された、プロセッサと、
を備える、システム。
【請求項１６】
前記ＰＥＲイベントを検出することは、
前記プロセッサ上で実行する前記命令ストリームがＰＥＲ割り込み条件に関連付けられたＰＥＲ割り込みによって割り込まれないように、前記ＰＥＲイベントに関連付けられたＰＥＲ割り込み条件をインターセプトすること、
をさらに含む、請求項１５に記載のシステム。
【請求項１７】
ランタイム計装制御ロード（ＬＲＩＣ）命令の実行に基づいて、ランタイム計装制御を構成することをさらに含み、前記ＬＲＩＣ命令はランタイム計装ＰＥＲ制御を有効化する、請求項１５に記載のシステム。
【請求項１８】
低特権プログラムからのランタイム計装制御値を構成するために、前記ＬＲＩＣ命令の実行に基づいてランタイム計装制御修正（ＭＲＩＣ）命令の実行を許可するように、Ｋビットを設定すること、および、
前記ランタイム計装ＰＥＲ制御が有効化され、Ｋビットが設定された場合、前記低特権プログラムからのＰＥＲ制御レジスタを構成するために、前記ＬＲＩＣ命令の実行に基づいて前記ＭＲＩＣ命令の実行を許可するように、ＰＫビットを設定すること、
をさらに含む、請求項１７に記載のシステム。
【請求項１９】
前記ランタイム計装ＰＥＲ制御が有効化される場合、前記ＰＥＲイベントを発生させる命令をサンプル命令として認識するために、前記ＬＲＩＣ命令の実行に基づいてＰＩビットを設定すること、および、
前記ＰＥＲイベント記録と、前記ＰＥＲイベントを発生させる命令を前記サンプル命令として識別する命令タイプ記録とを含む報告グループをランタイム計装プログラム・バッファに記憶すること、
をさらに含む、請求項１７に記載のシステム。
【請求項２０】
前記ＰＥＲイベント記録は、
前記ＰＥＲイベントを識別するＰＥＲコードであって、前記ＰＥＲイベントは、正常分岐、命令フェッチ、ストレージ変更、実アドレス使用ストア、および命令フェッチ無効化のうちの１つである、ＰＥＲコードと、
前記ＰＥＲイベントを発生させた参照を変換するために使用される、ＰＥＲアドレス・スペース制御要素識別と、
ＰＥＲアクセス識別と、
命令フィールドのＰＥＲ長さと、
前記ＰＥＲイベントについての責務を負う前記命令をフェッチするために使用される命令アドレスを含む、ＰＥＲアドレスと、
を含む、請求項１５に記載のシステム。
【国際調査報告】
2015515654.tif 000018
2015515654.tif 000019