(57)【要約】【課題】  仮想処理環境内のデータの収集を容易にするためのコンピュータ・プログラム、コンピュータによって実行される方法、およびコンピュータ・システムを提供する。【解決手段】  仮想環境内で実行している複数ゲストによるその機能の同時使用をサポートするために、中央演算処理装置測定機能が仮想化される。その環境の各ゲストは、そのゲストについてその機能の使用不可化／使用可能化を独立して制御する。【選択図】  図１
2010086520.tif 000002
【特許請求の範囲】
【請求項１】
仮想処理環境内のデータの収集を容易にするためのコンピュータ・プログラムであって、前記コンピュータ・プログラムが、コンピュータに、
前記仮想処理環境のあるゲストにより、前記あるゲストのアクティビティに関連する測定の使用可能化を制御するステップと、
前記仮想処理環境の他のゲストにより、前記他のゲストのアクティビティに関連する測定の使用可能化を制御するステップとを含み、
前記あるゲストにより制御する前記ステップが前記他のゲストにより制御する前記ステップとは無関係であり、前記あるゲストと前記他のゲストについて同時に測定が使用可能になるか、あるいは、前記あるゲストと前記他のゲストのうちの一方については測定が使用可能になるが、前記あるゲストと前記他のゲストのうちのもう一方については測定が使用可能にならないステップ
を実行させる、コンピュータ・プログラム。
【請求項２】
前記あるゲストにより制御する前記ステップが測定を使用可能にするステップを含み、使用可能にする前記ステップが前記あるゲストの論理プロセッサ上で測定を使用可能にするステップを含む、請求項１記載のコンピュータ・プログラム。
【請求項３】
前記使用可能化が、前記あるゲストについてサンプリングおよびカウンタのうちの少なくとも１つを使用可能にするステップを含む、請求項２記載のコンピュータ・プログラム。
【請求項４】
前記あるゲストの論理プロセッサが、前記論理プロセッサに関するサンプリング・データを維持するために前記論理プロセッサに割り当てられ、それに関連する測定ブロックを有する、請求項２記載のコンピュータ・プログラム。
【請求項５】
前記論理プロセッサが、前記論理プロセッサに関する測定の状態を維持するために、それに関連する１つまたは複数の制御ブロックを有する、請求項４記載のコンピュータ・プログラム。
【請求項６】
前記あるゲストが前記仮想処理環境のある論理区画で実行し、前記他のゲストが前記仮想処理環境の他の論理区画で実行する、請求項１記載のコンピュータ・プログラム。
【請求項７】
前記あるゲストが中断され、前記方法が、残余間隔において、前記あるゲストについて次のサンプルが取られる前に残っている時間量を記録するステップをさらに含む、請求項１記載のコンピュータ・プログラム。
【請求項８】
前記あるゲストの再ディスパッチに応答して再開が行われ、前記再ディスパッチに応答して、
前記あるゲストが依然として測定の実行を許可されているかどうかを判断するために許可チェックが実行され、
前記あるゲストが許可されていないことを前記許可チェックが示す場合に前記あるゲストに通知が行われる、請求項７記載のコンピュータ・プログラム。
【請求項９】
前記サンプリングに応答して、サンプル・データがバッファに書き込まれる、請求項３記載のコンピュータ・プログラム。
【請求項１０】
前記あるゲストにより制御する前記ステップが前記あるゲストに関する測定を使用不可にするステップを含み、前記他のゲストにより制御する前記ステップが前記他のゲストに関する測定を使用可能にするステップを含む、請求項１記載のコンピュータ・プログラム。
【請求項１１】
仮想処理環境内のデータの収集を容易にするためのコンピュータによって実行される方法であって、前記方法が、
前記仮想処理環境のあるゲストにより、前記あるゲストのアクティビティに関連する測定の使用可能化を制御するステップと、
前記仮想処理環境の他のゲストにより、前記他のゲストのアクティビティに関連する測定の使用可能化を制御するステップとを含み、
前記あるゲストにより制御する前記ステップが前記他のゲストにより制御する前記ステップとは無関係であり、前記あるゲストと前記他のゲストについて同時に測定が使用可能になるか、あるいは、前記あるゲストと前記他のゲストのうちの一方については測定が使用可能になるが、前記あるゲストと前記他のゲストのうちのもう一方については測定が使用可能にならない、コンピュータによって実行される方法。
【請求項１２】
前記あるゲストにより制御する前記ステップが測定を使用可能にするステップを含み、使用可能にする前記ステップが前記あるゲストの論理プロセッサ上で測定を使用可能にするステップを含む、請求項１１記載のコンピュータによって実行される方法。
【請求項１３】
前記あるゲストが中断され、前記方法が、残余間隔において、前記あるゲストについて次のサンプルが取られる前に残っている時間量を記録するステップをさらに含む、請求項１１記載のコンピュータによって実行される方法。
【請求項１４】
仮想処理環境内のデータの収集を容易にするためのコンピュータ・システムであって、前記コンピュータ・システムが、
メモリと、
前記メモリと通信するプロセッサとを含み、
前記コンピュータ・システムがある方法を実行することができ、前記方法が、
前記仮想処理環境のあるゲストにより、前記あるゲストのアクティビティに関連する測定の使用可能化を制御するステップと、
前記仮想処理環境の他のゲストにより、前記他のゲストのアクティビティに関連する測定の使用可能化を制御するステップとを含み、
前記あるゲストにより制御する前記ステップが前記他のゲストにより制御する前記ステップとは無関係であり、前記あるゲストと前記他のゲストについて同時に測定が使用可能になるか、あるいは、前記あるゲストと前記他のゲストのうちの一方については測定が使用可能になるが、前記あるゲストと前記他のゲストのうちのもう一方については測定が使用可能にならない、コンピュータ・システム。
【請求項１５】
前記あるゲストにより制御する前記ステップが測定を使用可能にするステップを含み、使用可能にする前記ステップが前記あるゲストの論理プロセッサ上で測定を使用可能にするステップを含む、請求項１４記載のコンピュータ・システム。
【請求項１６】
前記あるゲストの論理プロセッサが、前記論理プロセッサに関するサンプリング・データを維持するために前記論理プロセッサに割り当てられ、それに関連する測定ブロックを有する、請求項１５記載のコンピュータ・システム。
【請求項１７】
前記論理プロセッサが、前記論理プロセッサに関する測定の状態を維持するために、それに関連する１つまたは複数の制御ブロックを有する、請求項１６記載のコンピュータ・システム。
【請求項１８】
前記あるゲストが前記仮想処理環境のある論理区画で実行し、前記他のゲストが前記仮想処理環境の他の論理区画で実行する、請求項１４記載のコンピュータ・システム。
【請求項１９】
前記あるゲストが中断され、前記方法が、残余間隔において、前記あるゲストについて次のサンプルが取られる前に残っている時間量を記録するステップをさらに含む、請求項１４記載のコンピュータ・システム。
【請求項２０】
前記あるゲストの再ディスパッチに応答して再開が行われ、前記再ディスパッチに応答して、
前記あるゲストが依然として測定の実行を許可されているかどうかを判断するために許可チェックが実行され、
前記あるゲストが許可されていないことを前記許可チェックが示す場合に前記あるゲストに通知が行われる、請求項１９記載のコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、測定機能（measurement facility）に関し、特に、仮想化処理環境のための仮想化測定機能を提供することに関する。
【背景技術】
【０００２】
システム・パフォーマンスの改善と、エラーの低減は、仮想化をサポートする環境を含む多くの処理環境において、優先度の高い目標である。このような目標を達成しようとして、診断ツールおよびチューニング・ツールが使用される。このようなツールの１つは、処理環境内で行われる処理に関連するデータを収集する測定機能である。
【０００３】
具体的には、ハードウェア内で発生する特定のイベントのアクティビティ・カウント（サイクル・カウント、命令カウントなど）を累積するためまたはその環境内で実行している中央演算処理装置のスナップショットを定期的に撮るためあるいはその両方のために、測定機能が使用される。この機能は、中央演算処理装置に関連する状態情報を記録する。この情報は、デバッグのためまたはシステム・パフォーマンスを改善するためあるいはその両方のために使用される。
【０００４】
現在、各測定時間ごとに、データが収集され、レジスタに保管され、制御プログラムに割り込みが提供される。割り込みが行われると、制御プログラムは測定データを読み出し、レジスタをリセットし、操作を再開する。各測定間隔におけるこの割り込みにより、重大なシステム・オーバヘッドが発生し、一部のリアルタイム環境では、測定されたデータをゆがめる可能性すらある。このオーバヘッド問題により、ユーザは、収集すべき測定データの量を制限し、その結果、測定機能の実用を制限している。
【０００５】
その上、中央演算処理装置では１つの測定機能しか実現されないので仮想環境で問題が発生するが、この機能は複数のゲストによって共用される可能性がある。このような共用により、収集したデータが壊れる可能性がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】本出願とともに出願され、Ｂａｒｔｉｋ他による「CentralProcessing Unit Measurement Facility」という名称の米国特許出願第    号
【非特許文献】
【０００７】
【非特許文献１】２００８年２月発行のＩＢＭ（Ｒ）資料Ｎｏ．ＳＡ２２−７８３２−０６「z/Architecture Principles of Operation」第７版
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上記に基づき、現行の測定機能より破壊的ではなく、現行の測定機能より効果的な、強化された測定機能が必要である。特に、各サンプリング間隔で制御プログラムに対して割り込みを行わない測定機能が必要である。さらに、複数ゲストの同時実行を含む、仮想環境の様々な構成をサポートするためにフレキシブルに仮想化される測定機能が必要である。その上、特に測定機能が特定のＣＰＵについてアクティブではないときに、もたらすシステム・オーバヘッドが多すぎないようにその機能を効率よく仮想化することが必要である。
【課題を解決するための手段】
【０００９】
処理環境内のデータの収集を管理するためのコンピュータ・プログラム（computerprogram product）の提供により、従来技術の短所は克服され、追加の利点が提供される。このコンピュータ・プログラムは、処理回路によって読み取り可能であり、ある方法を実行するためにコンピュータが実行するための命令を保管する記憶媒体を含む。この方法は、たとえば、仮想処理環境のあるゲストにより、そのゲストのアクティビティに関連する測定の使用可能化を制御するステップと、仮想処理環境の他のゲストにより、その他のゲストのアクティビティに関連する測定の使用可能化を制御するステップとを含み、あるゲストにより制御するステップが他のゲストにより制御するステップとは無関係であり、あるゲストと他のゲストについて同時に測定が使用可能になるか、あるいは、あるゲストと他のゲストのうちの一方については測定が使用可能になるが、あるゲストと他のゲストのうちのもう一方については測定が使用可能にならない。
【００１０】
本発明の１つまたは複数の態様に関連する方法およびシステムも本明細書に記載され、請求されている。さらに、本発明の１つまたは複数の態様に関連するサービスも記載され、本明細書で請求することができる。
【００１１】
追加の特徴および利点は本発明の技法により実現される。本発明のその他の諸実施形態および諸態様は、本明細書に詳細に記載され、請求された発明の一部と見なされる。
【００１２】
本発明の１つまたは複数の態様は、本明細書の終わりの特許請求の範囲において、詳細に指摘され、例として明瞭に請求される。本発明の上記その他の目的、特徴、および利点は、添付図面に併せて取られた以下の詳細な説明から明らかである。
【図面の簡単な説明】
【００１３】
【図１】本発明の１つまたは複数の態様を取り入れて使用するための処理環境の一実施形態を示す図である。
【図２】本発明の一態様により使用される様々なサンプリング制御レジスタの一例を示す図である。
【図３】本発明の一態様による図２のテーブル項目アドレス・レジスタの内容の一例を示す図である。
【図４】本発明の一態様による図２のデータ項目アドレス・レジスタの内容の一例を示す図である。
【図５】本発明の一態様による測定許可記述ブロックのフォーマットの一実施形態を示す図である。
【図６】本発明の一態様による測定使用可能記述ブロックのフォーマットの一実施形態を示す図である。
【図７】本発明の一態様による測定活動化記述ブロックのフォーマットの一実施形態を示す図である。
【図８】本発明の一態様による測定ブロックのフォーマットの一実施形態を示す図である。
【図９】本発明の一態様により図８に描写されている測定ブロックのサンプリング制御ブロックのフィールドの一実施形態を示す図である。
【図１０】本発明の一態様により使用されるサンプリング・バッファの構造の一例を示す図である。
【図１１】本発明の一態様による基本サンプリング・データ項目のフィールドの一実施形態を示す図である。
【図１２】本発明の一態様による診断サンプリング・データ項目のフィールドの一実施形態を示す図である。
【図１３】本発明の一態様によるトレーラ項目のフィールドの一実施形態を示す図である。
【図１４】本発明の一態様によるサンプリング・バッファの更新に関連するロジックの一実施形態を示す図である。
【図１５】本発明の一態様によるサンプリング・バッファの更新に関連するロジックの一実施形態を示す図である。
【図１６】本発明の一態様により収集したデータをバッファから読み取るための割り込みの提供に関連するロジックの一実施形態を示す図である。
【図１７】本発明の一態様によるサンプリング機能の実行に関連するロジックの概要の一実施形態を示す図である。
【図１８】本発明の一態様によるサンプリング機能の実行に関連するロジックの概要の一実施形態を示す図である。
【図１９】本発明の一態様によりゲストが再ディスパッチされるときに測定が許可されるかどうかを判断するために使用されるロジックの一実施形態を示す図である。
【図２０】本発明の一態様により収集したデータとともに識別子の保管を可能にするためにサンプリング機能の実行とは非同期に実行される処理に関連するロジックの一実施形態を示す図である。
【図２１】本発明の一態様により使用されるプログラム・パラメータ設定命令のフォーマットの一例を示す図である。
【図２２】本発明の一態様により使用されるサンプリング情報照会命令のフォーマットの一実施形態を示す図である。
【図２３】本発明の一態様によるサンプリング情報照会命令に関連する情報ブロックに関連するフィールドの一実施形態を示す図である。
【図２４】本発明の一態様により使用されるカウンタ情報照会命令のフォーマットの一実施形態を示す図である。
【図２５】本発明の一態様によるカウンタ情報照会命令に関連する情報ブロックに関連するフィールドの一実施形態を示す図である。
【図２６】本発明の一態様により使用されるサンプリング制御設定命令のフォーマットの一実施形態を示す図である。
【図２７】本発明の一態様によるサンプリング制御設定命令に関連する要求ブロックの一実施形態を示す図である。
【図２８】本発明の一態様により使用されるＣＰＵカウンタ・セット制御設定命令のフォーマットの一実施形態を示す図である。
【図２９】本発明の一態様により１つまたは複数の処理装置上に測定ロジックを配備するためのロジックの一実施形態を示す図である。
【図３０】本発明の一態様により１つまたは複数の処理装置上に測定ロジックを配備するためのロジックの一実施形態を示す図である。
【図３１】本発明の１つまたは複数の態様を取り入れるコンピュータ・プログラムの一実施形態を示す図である。
【発明を実施するための形態】
【００１４】
本発明の一態様により、それが実行されている中央演算処理装置または共用周辺プロセッサのアクティビティを測定するＣＰＵ測定機能（カウンタ機能）、または中央演算処理装置上で実行されているタスク（たとえば、アプリケーション、モジュール、機能、命令など）に関するデータを収集するために指定のサンプリング間隔で中央演算処理装置のスナップショットを撮るＣＰＵ測定機能（サンプリング機能）が提供される。このデータは、パフォーマンス特性の統計的推定のために収集される。収集したサンプリング・データは選択した時間にバッファに保管され、バッファからデータを除去してその再使用を可能にするために割り込みが提供される。割り込みは、各サンプルの後に行われるわけではないが、データを除去し、データ損失を最小限にするために十分な時間をかけて行われる。
【００１５】
本発明の他の一態様では、仮想環境内で実行している複数ゲストによるその機能の同時使用をサポートするために、ＣＰＵ測定機能が仮想化される。一例として、あるゲストが測定の使用可能化／使用不可化を独立して制御することができ、複数のゲストが（たとえば、カウンタを介して）同時にアクティビティのサンプリングまたは測定あるいはその両方を行うことができるように、測定機能が仮想化される。特定の一例では、あるゲストに割り当てられた各論理プロセッサは、測定機能を実行することができる。
【００１６】
本発明の１つまたは複数の態様を取り入れて使用する処理環境の一実施形態について、図１に関連して説明する。一例では、処理環境１００は、たとえば、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ社によって提供されるｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）に基づくものである。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）については、２００８年２月発行のＩＢＭ（Ｒ）資料Ｎｏ．ＳＡ２２−７８３２−０６「z/Architecture Principles of Operation」第７版に記載されている。（ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）およびＩＢＭ（Ｒ）は米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ社の登録商標である。本明細書で使用するその他の名前は、インターナショナル・ビジネス・マシーンズ社またはその他の企業の登録商標、商標、または製品名である場合もある。）一例では、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）に基づく処理環境は、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ社によって提供されるｅＳｅｒｖｅｒ  ｚＳｅｒｉｅｓを含む。
【００１７】
この例では、処理環境１００は中央演算処理装置複合システム（ＣＰＣ：central processor complex）１０２を含む。中央演算処理装置複合システム１０２は、たとえば、１つまたは複数の区画またはゾーン１０４（たとえば、論理区画ＬＰ１〜ＬＰｎ）と、１つまたは複数の中央処理装置（central processor）１０６（たとえば、ＣＰ１〜ＣＰｍ）と、ハイパーバイザ１０８（たとえば、論理区画マネージャ）とを含み、そのそれぞれについて以下に説明する。
【００１８】
各論理区画１０４は、個別システムとして機能することができる。すなわち、各論理区画は、独立してリセットすることができ、望ましい場合、最初にオペレーティング・システムをロードすることができ、種々のプログラムで動作することができる。論理区画で実行されるオペレーティング・システムまたはアプリケーション・プログラムは、完全なシステム全体にアクセスできるように思われるが、その一部分のみが使用可能である。ハードウェアとライセンス内部コード（マイクロコードまたはミリコードともいう）との組み合わせにより、ある論理区画内のプログラムが異なる論理区画内のプログラムを妨害しないようにする。これにより、いくつかの異なる論理区画がタイム・スライス方式で単一または複数の物理プロセッサを操作することができる。この特定の例では、各論理区画は常駐オペレーティング・システム１１０を有し、そのオペレーティング・システムは１つまたは複数の論理区画ごとに異なる可能性がある。一実施形態では、オペレーティング・システム１１０は、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ社によって提供される、ｚ／ＯＳ（Ｒ）またはｚ／Ｌｉｎｕｘオペレーティング・システムである。ｚ／ＯＳ（Ｒ）はインターナショナル・ビジネス・マシーンズ社の登録商標である。
【００１９】
中央処理装置１０６は、論理区画に割り振られた物理プロセッサ・リソースである。たとえば、論理区画１０４は１つまたは複数の論理プロセッサ１１２を含み、そのそれぞれはその区画に割り振られた物理プロセッサ・リソース１０６のすべてまたは一部分（share）を表す。下にあるプロセッサ・リソースは、その区画に専用のものである場合もあれば、他の区画と共用される場合もある。
【００２０】
論理区画１０４は、プロセッサ１０６上で実行されるファームウェアによって実現されるハイパーバイザ１０８によって管理される。論理区画１０４およびハイパーバイザ１０８はそれぞれ、中央処理装置に関連する中央記憶域のそれぞれの部分に常駐する１つまたは複数のプログラムを含む。ハイパーバイザ１０８の一例は、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ社によって提供されるプロセッサ・リソース／システム管理機構（ＰＲ／ＳＭ：Processor Resource/Systems Manager）である。
【００２１】
処理環境内の処理を容易にするための情報を提供するために、規則正しくデータが収集される。このデータは、たとえば、デバッグ目的またはシステム・パフォーマンスを改善するためあるいはその両方のために使用される。仮想処理環境では、測定機能（たとえば、カウンタまたはサンプリングあるいはその両方）１１４は、１つまたは複数の論理プロセッサ１１２上で実行される。この機能は、それが実行されている各論理プロセッサごとに、ハードウェア内で発生する特定のイベントのアクティビティ・カウント（サイクル・カウント、命令カウントなど）を累積するか（カウンタ）、プロセッサによって認識される処理時間間隔である指定のサンプリング間隔ごとに論理プロセッサのスナップショットを提供するか（サンプリング）、あるいはその両方を行う。各スナップショットは１組のサンプル・データを生成し、このサンプル・データは、たとえば、実行中の命令の命令アドレスと、論理プロセッサに関する何らかの状態情報とを含む。このサンプル・データは、たとえば、バッファの１つまたは複数のサンプル・データ・ブロックに保管される。
【００２２】
同様に、仮想化をサポートしていない処理環境（本明細書では非仮想環境という）では、測定機能は１つまたは複数の物理ＣＰＵ上で実行され、この機能は、それが実行されている各ＣＰＵごとに、ハードウェア内で発生する特定のイベントのアクティビティ・カウント（サイクル・カウント、命令カウントなど）を累積するか、指定のサンプリング間隔ごとにＣＰＵのスナップショットを提供するか、あるいはその両方を行う。非仮想環境用の測定機能の一実施形態は、本明細書に記載されているとともに、本出願とともに出願され、Ｂａｒｔｉｋ他による「Central Processing Unit Measurement Facility」という名称の米国特許出願第    号（ＰＯＵ９２００８０２０７ＵＳ１）にも記載されている。
【００２３】
測定機能について説明する際に、ＣＰＵに言及する。非仮想環境の場合、ＣＰＵは物理ＣＰＵである。しかし、仮想環境の場合、ＣＰＵは、ゲストに割り当てられた論理ＣＰＵ（論理プロセッサともいう）である。物理ＣＰＵは仮想環境において複数のゲスト間で共用することができるので、測定に関連する状態情報および制御は各論理プロセッサごとに維持される。したがって、以下の考察では、制御について説明し、次に、仮想環境に関する任意の追加または変更を示す。さらに、測定機能のカウンタ機能とサンプリング機能の両方について説明する。
【００２４】
ＣＰＵ測定カウンタ機能は、たとえば、４つのカウンタ・セットを含み、それぞれが、複数のカウンタと、１つのローカル・カウンタ状態制御レジスタと、いくつかの外部割り込みイベントと、たとえば、以下に説明するカウンタ情報照会命令およびＣＰＵカウンタ・セット制御設定命令を含む様々な命令とを有する。
【００２５】
一例では、ＣＰＵカウンタ・セットは、基本カウンタ・セットと、問題プログラム状態カウンタ・セットと、暗号アクティビティ・カウンタ・セットと、拡張カウンタ・セットとを含み、そのそれぞれは、ＣＰＵが動作状態にあり、カウンタ・セットがアクティブであるときに、ＣＰＵの特定のアクティビティについて増分される複数のカウンタを含む。
【００２６】
それぞれのＣＰＵ上で、ＣＰＵ測定カウンタ機能はローカル・カウンタ状態制御レジスタを提供し、このレジスタは、たとえば、各ＣＰＵカウンタ・セットに関する１ビットの許可制御（authorization control）と、１ビットの使用可能制御（enablecontrol）と、１ビットの活動化制御（activation control）とを含む。また、これは、コプロセッサ・グループ・カウンタ・セットに関する１ビットの許可制御も含む。許可制御を除き、ローカル・カウンタ状態制御レジスタの内容は、初期ＣＰＵリセット、クリア・リセット、またはパワーオン・リセットによって０（ゼロ）でクリアされる。許可制御は、外部手段によって設定またはリセットされる。
【００２７】
外部割り込みイベントとしては、カウンタ許可変更アラートおよびカウンタ・データ喪失アラートを含む。
【００２８】
一例では、ＣＰＵ測定サンプリング機能は、２つのサンプリング機能と、いくつかのサンプリング制御レジスタと、いくつかの外部割り込みイベントと、様々な命令とを含み、そのそれぞれについて以下に説明する。
【００２９】
２つのサンプリング機能は、たとえば、基本サンプリングと診断サンプリングとを含む。基本サンプリング機能は１組の構築サンプル・データ（architected sample data）を提供する。サンプル・データは、例として、命令アドレスと、１次アドレス・スペース番号（ＰＡＳＮ：primary address space number）と、ＣＰＵに関する何らかの状態情報とを含む。これにより、ツール・プログラムは命令アドレスをモジュールまたはタスクにマッピングすることができ、ホット・スポットの判断が容易になる。診断サンプリング機能は１組の非構築サンプル・データ（non-architected sample data）を提供し、ハードウェア設計アナリスト、オペレーティング・システム、高性能コンパイラ、および内部サブシステムによって使用されるためのものである。診断サンプリング機能によって提供されるサンプル・データは詳細な内部ハードウェア設計を明らかにする可能性があるので、この機能の使用を許可するために、制御付きパスワードを備えたコンソールを使用することができる。
【００３０】
基本サンプリング機能と診断サンプリング機能はいずれも、同じサンプリング制御レジスタと、同じサンプリング・バッファ構造と、同じ外部割り込みイベントと、同じ命令を使用する。この２つの機能の主な違いはサンプル・データである。
【００３１】
各サンプリング機能用のサンプル・データのサイズとフォーマットは、モデルに依存し、たとえば、各サンプル・データに保管される１６ビットのデータ項目フォーマット・コードによって決定される。基本サンプリング機能によって提供されるサンプル・データは、診断サンプリング機能によって提供されるサンプル・データに含まれない。意味のある診断サンプリング・データを獲得するためには、どちらのサンプリング機能も活動化しなければならない。各サンプリング機能の状態は、以下に説明するサンプリング制御設定命令を実行することにより、個別に設定することができる。どちらのサンプリング機能も、初期ＣＰＵリセット、クリア・リセット、またはパワーオン・リセットによって使用不可になる。
【００３２】
一例では、外部割り込みイベントとしては、無効項目アドレス・アラート、不正確サンプル・データ・ブロック・テーブル項目アラート、プログラム要求アラート、サンプリング許可変更アラート、およびサンプル・データ喪失アラートを含む。これらのイベントは、測定アラート・サブクラスという外部割り込みサブクラスの一部である。サブクラス・マスク・ビット、たとえば、制御レジスタ０のビット５８が提供される。このビットは１に初期設定され、これにより割り込みが可能になる。
【００３３】
ＣＰＵ測定サンプリング機能はいくつかのサンプリング制御レジスタを提供する。許可制御を除き、これらの制御レジスタの内容は、初期ＣＰＵリセット、クリア・リセット、またはパワーオン・リセットによって０にクリアされるが、すべてのサンプリング機能を使用不可にするサンプリング制御設定命令を実行することにより０にクリアすることもできる。許可制御は、外部手段によって設定またはリセットされる。
【００３４】
サンプリング制御レジスタの例について、図２に関連して説明する。一例では、これらのレジスタはＣＰＵ内のハードウェア・レジスタである。図示の通り、サンプリング制御レジスタ２００は、たとえば、テーブル項目アドレス・レジスタ（ＴＥＡＲ：table entry address register）２０２と、データ項目アドレス・レジスタ（ＤＥＡＲ：data entry address register）２０４と、最大バッファ・サイズ・インジケータ２０６と、サンプリング機能状態制御レジスタ２０８と、サンプリング間隔レジスタ２１０と、ホスト・インジケータ２１２とを含み、そのそれぞれについて以下に説明する。
【００３５】
図３に示されている通り、テーブル項目アドレス・レジスタ２０２は、たとえば、６４ビットであり、現行サンプル・データ・ブロック・テーブル項目のアドレス２２０を含む。このアドレスが実アドレスであるか絶対アドレスであるかは予測不能である。
【００３６】
図４を参照すると、データ項目アドレス・レジスタ２０４は、たとえば、６４ビットであり、次のサンプル・データ・ブロック・データ項目のアドレス２３０を含む。この場合も、このアドレスが実アドレスであるか絶対アドレスであるかは予測不能である。
【００３７】
一例では、最大バッファ・サイズ・インジケータ２０６は１ビットである。このインジケータが０である場合、サンプル・データ・ブロック・テーブルの最大サイズと、サンプル・データ・ブロックのサイズは４Ｋバイトである。このインジケータが１である場合、サンプル・データ・ブロック・テーブルの最大サイズと、サンプル・データ・ブロックのサイズは１Ｍバイトである。
【００３８】
サンプリング機能状態制御レジスタ２０８は、たとえば、６ビットであり、基本サンプリング機能に３ビットが割り当てられ、診断サンプリング機能に残りの３ビットが割り当てられる。各サンプリング機能ごとに、たとえば、許可制御（Ａ）、使用可能制御（Ｅ）、および活動化制御（Ｃ）を含む、３つの状態制御インジケータがある。
【００３９】
サンプリング間隔レジスタ２１０は、たとえば、６４ビットであり、このレジスタの内容は各サンプリング間隔内のＣＰＵサイクルの数を指定する。
【００４０】
ホスト・インジケータ２１２は、たとえば、１ビットであり、論理区画レベルでＣＰＵにとって使用可能なものである。ＣＰＵが論理区画レベルで実行しているときに、サンプリング機能がアクティブである場合、ホスト・インジケータが０であると、プログラム・パラメータ・レジスタの内容がサンプル・データ・ブロック更新プロセスによってサンプル・データ・ブロックのゲスト・プログラム・パラメータ・フィールドに保管されることを指定し、ホスト・インジケータが１であると、プログラム・パラメータ・レジスタの内容がホスト・プログラム・パラメータ・フィールドに保管されることを指定する。
【００４１】
ＣＰＵが動作状態にある場合、各カウンタ・セットまたはサンプリング機能は、例として、無許可（unauthorized）、使用不可（disabled）、非アクティブ（inactive）、およびアクティブ（active）という４つの状態のいずれかになることができる。
【００４２】
無許可：  カウンタ・セットが無許可状態にある場合、カウンタは使用することができず、増分しない。サンプリング機能が無許可状態にある場合、この機能は使用することができず、サンプル・データはまったく保管されない。これらの機能の使用を許可するかまたは無許可にするために外部手段が提供される。
【００４３】
使用不可：  カウンタ・セットまたはサンプリング機能が使用不可状態にある場合、カウンタ・セットまたはサンプリング機能は使用が許可されているが、プログラムはカウンタ・セットまたはサンプリング機能を使用可能にしていない。カウンタ・セットがこの状態にある場合、カウンタ・セット内のカウンタは増分せず、カウンタの内容を抽出または設定することができない。サンプリング機能がこの状態にある場合、この機能は使用が許可されているが、制御プログラムはこの機能をまだ使用可能にしていない。この状態では、新しいサンプル・データはまったく保管されず、サンプル・データ・ブロックの内容は変化せず、許可制御を除き、サンプリング制御はまったく保存されない。
【００４４】
非アクティブ：  カウンタ・セットまたはサンプリング機能が非アクティブ状態にある場合、カウンタ・セットまたはサンプリング機能は許可され、使用可能になり、非活動化される。カウンタ・セットがこの状態にある場合、カウンタ・セット内のカウンタは増分せず、カウンタの内容は変化せず、抽出または設定することができる。サンプリング機能がこの状態にある場合、新しいサンプル・データはまったく保管されず、サンプル・データ・ブロックの内容は変化せず、サンプリング制御は保存され、抽出することができる。
【００４５】
アクティブ：  カウンタ・セットまたはサンプリング機能がアクティブ状態にある場合、カウンタ・セットまたはサンプリング機能は許可され、使用可能になり、活動化される。カウンタ・セットがこの状態にある場合、セット内の各カウンタは定義済みアクティビティについて増分し、カウンタの内容は抽出または設定することができる。サンプリング機能がこの状態にある場合、この機能は許可され、使用可能になり、活動化される。この状態では、新しいサンプル・データは各サンプリング間隔中に保管され、サンプリング制御は抽出することができる。
【００４６】
ＣＰＵが動作状態から停止状態に入ると、アクティブ・カウンタ・セットおよびサンプリング機能は停止する。ＣＰＵが停止状態から動作状態に入ると、カウンタ・セットおよびサンプリング機能は、最後に停止したときの状態を再開する。
【００４７】
以下の表は、カウンタ・セットの状態遷移を引き起こすアクションを要約したものである。
【表１】
2010086520.tif 000003
【００４８】
以下の表は、サンプリング機能の状態遷移を引き起こすアクションを要約したものである。
【表２】
2010086520.tif 000004
【００４９】
仮想環境では、許可インジケータ、使用可能インジケータ、および活動化インジケータが状態記述（たとえば、各ゲストまたは論理プロセッサに関連する制御ブロック）に維持される。たとえば、この情報を維持するために使用される１組の制御ブロックは各論理プロセッサ用の状態記述内に保管される。これらの制御ブロックの例については、図５〜図９に関連して説明する。
【００５０】
図５を参照すると、ゲストがそれぞれの指定の測定機能を使用できるかどうかを制御するために、測定許可記述（ＭＡＤ：measurement authorization description）制御ブロック２４０が使用される。これらの機能は、測定機能のカウンタ機能およびサンプリング機能の機能を含む。一例では、測定許可記述２４０は以下の制御を含む。
Ａg２４２：  コプロセッサ・グループ・カウンタ・セット許可制御  −  Ａgが１である場合、ゲストはコプロセッサ・グループ・カウンタ・セットの使用を許可され、Ａgが０である場合、ゲストはそのカウンタ・セットの使用を許可されない。
コプロセッサ・グループ・カウンタ・セットが許可されると、カウンタは、そのカウンタ・セットがアクティブであるときに特定のアクティビティについて増分される。
Ａs２４４：  基本サンプリング許可制御  −  Ａsが１である場合、ゲストは基本サンプリング機能の使用を許可され、Ａsが０である場合、ゲストはサンプリング機能の使用を許可されない。
Ａd２４５：  診断サンプリング許可制御  −  Ａdが１である場合、ゲストは診断サンプリング機能の使用を許可され、Ａdが０である場合、ゲストは診断サンプリング機能の使用を許可されない。
Ａc２４６：  暗号アクティビティ・カウンタ・セット許可制御  −  Ａcが１である場合、ゲストは暗号アクティビティ・カウンタ・セットの使用を許可され、Ａcが０である場合、ゲストはそのカウンタ・セットの使用を許可されない。
Ａp２４７：  問題プログラム状態カウンタ・セット許可制御  −  Ａpが１である場合、ゲストは問題プログラム状態カウンタ・セットの使用を許可され、Ａpが０である場合、ゲストはそのカウンタ・セットの使用を許可されない。
Ａb２４８：  基本カウンタ・セット許可制御  −  Ａbが１である場合、ゲストは基本カウンタ・セットの使用を許可され、Ａbが０である場合、ゲストはそのカウンタ・セットの使用を許可されない。
Ａe２４９：  拡張カウンタ・セット許可制御  −  Ａeが１である場合、ゲストは拡張カウンタ・セットの使用を許可され、Ａeが０である場合、ゲストはそのカウンタ・セットの使用を許可されない。
【００５１】
使用されるもう１つの制御ブロックは、測定使用可能記述（ＭＥＤ：measurement enable description）ブロック２５０（図６）であり、これはゲストが各カウンタ・セットおよび各サンプリング機能を使用可能にしたかどうかを指定する。一例では、以下のように状況を定義する。
Ｅs２５２：  基本サンプリング使用可能制御  −  Ｅsが１である場合、基本サンプリング機能は使用可能になり、Ｅsが０である場合、基本サンプリング機能は使用可能ではない。
Ｅd２５４：  診断サンプリング使用可能制御  −  Ｅdが１である場合、診断サンプリング機能は使用可能になり、Ｅdが０である場合、診断サンプリング機能は使用可能ではない。
Ｅc２５６：  暗号アクティビティ・カウンタ・セット使用可能制御  −  Ｅcが１である場合、暗号アクティビティ・カウンタ・セットは使用可能になり、Ｅcが０である場合、そのカウンタ・セットは使用可能ではない。
Ｅp２５７：  問題プログラム状態カウンタ・セット使用可能制御  −  Ｅpが１である場合、問題プログラム状態カウンタ・セットは使用可能になり、Ｅpが０である場合、そのカウンタ・セットは使用可能ではない。
Ｅb２５８：  基本カウンタ・セット使用可能制御  −  Ｅbが１である場合、基本カウンタ・セットは使用可能になり、Ｅbが０である場合、そのカウンタ・セットは使用可能ではない。
Ｅe２５９：  拡張カウンタ・セット使用可能制御  −  Ｅeが１である場合、拡張カウンタ・セットは使用可能になり、Ｅeが０である場合、そのカウンタ・セットは使用可能ではない。
【００５２】
使用されるもう１つの制御ブロックは、測定活動化記述（ＭＣＤ：measurement activation description）制御ブロック２６０（図７）であり、これはゲストが各カウンタ・セットおよび各サンプリング機能を活動化したかどうかを指定する。一例では、以下のように制御を定義する。
Ｃs２６１：  基本サンプリング活動化制御  −  Ｃsが１である場合、基本サンプリング機能はアクティブであり、Ｃsが０である場合、基本サンプリング機能はアクティブではない。
Ｃd２６２：  診断サンプリング活動化制御  −  Ｃdが１である場合、診断サンプリング機能はアクティブであり、Ｃdが０である場合、診断サンプリング機能はアクティブではない。
Ｃc２６３：  暗号アクティビティ・カウンタ・セット活動化制御  −  Ｃcが１である場合、暗号アクティビティ・カウンタ・セットはアクティブであり、Ｃcが０である場合、そのカウンタ・セットはアクティブではない。
暗号アクティビティ・カウンタ・セットがアクティブであると、カウンタは、この論理ＣＰＵによって寄与されるコプロセッサ・グループの指定のアクティビティをカウントする。
Ｃp２６５：  問題プログラム状態カウンタ・セット活動化制御  −  Ｃpが１である場合、問題プログラム状態カウンタ・セットはアクティブであり、Ｃpが０である場合、そのカウンタ・セットはアクティブではない。
問題プログラム状態カウンタ・セットがアクティブであると、カウンタは、ＣＰＵが問題プログラム状態にあるときに指定のアクティビティをカウントする。
Ｃb２６７：  基本カウンタ・セット活動化制御  −  Ｃbが１である場合、基本カウンタ・セットはアクティブであり、Ｃbが０である場合、そのカウンタ・セットはアクティブではない。
基本カウンタ・セットがアクティブであると、ＣＰＵが問題プログラム状態にあるかスーパバイザ状態にあるかにかかわらず、カウンタは指定のアクティビティをカウントする。
Ｃe２６９：  拡張カウンタ・セット活動化制御  −  Ｃeが１である場合、拡張カウンタ・セットはアクティブであり、Ｃeが０である場合、そのカウンタ・セットはアクティブではない。
拡張カウンタ・セットがアクティブであると、カウンタの数および意味はモデルに依存する。
【００５３】
さらに、状態記述の保留割り込みパラメータ（ＰＩＰ：pending interruption parameter）は、保留測定アラート外部割り込み用のソースを含み、ゲスト接頭部域内の外部割り込みパラメータのフォーマットになっている。
【００５４】
その上、状態記憶の指定バイトの測定ブロック指定（ＭＢＤ：measurement block designation）は、ホスト実記憶域内の測定ブロックの起点を指定するアドレスを含む。
【００５５】
測定ブロックのフォーマットの一例は、図８に描写し、以下に説明する。各カウンタ・セット内のカウンタは、そのカウンタ・セットに割り当てられたフィールドの起点から始まり、カウンタ番号の昇順に保管される。
【００５６】
測定ブロックへのアクセス中に発生したアクセス制御は、妥当性インターセプトにより報告される。
【００５７】
一例として、測定ブロック２８０は、たとえば、以下のものを含む。
基本カウンタ・セット２８２
問題プログラム状態カウンタ・セット２８４
暗号アクティビティ・カウンタ・セット２８６
拡張カウンタ・セット２８８
サンプリング制御ブロック２９０：  サンプリング制御ブロックは１２８バイトであり、ゲスト・サンプリング制御レジスタの一部と追加の制御情報とを含む。サンプリング制御ブロックのフォーマットの一例について、図９に関連して説明する。
【００５８】
一例では、サンプリング制御ブロック２９０は、たとえば、以下のものを含む。
最大バッファ・サイズ・インジケータ（Ｓ）２９２：  このインジケータは最大バッファ・サイズ・インジケータを含む。
ホスト・インジケータ（Ｈ）２９４：  このインジケータはホスト・インジケータを含む。
サンプリング間隔２９６：  このフィールドは、サンプリング間隔レジスタの内容を含む。
現行テーブル項目アドレス２９７：  このフィールドは、テーブル項目アドレス・レジスタの内容を含む。
次のデータ項目アドレス２９８：  このフィールドは、データ項目アドレス・レジスタの内容を含む。
【００５９】
サンプル・データは、たとえば、メイン・メモリ内のバッファに保管される。たとえば、各サンプリング間隔中にマシンがサンプル・データを保管するために、制御プログラム（たとえば、ゲストとして実行されるオペレーティング・システム）によっていくつかのサンプル・データ・ブロック（バッファを含む）が割り振られる。各サンプル・データ・ブロックは、サンプル・データ・ブロック・テーブル内のブロック・リンク項目によって指定される。サンプル・データ・ブロック・テーブルの現行項目はテーブル項目アドレス・レジスタの内容によって指定され、サンプル・データ・ブロックの次のデータ項目はデータ項目アドレス・レジスタの内容によって指定される。本発明の一態様によるサンプリング・バッファの構造の一例は、図１０に描写する。
【００６０】
図１０を参照すると、サンプリング・バッファ３００は、１つまたは複数のサンプル・データ・ブロック・テーブル（ＳＤＢＴ）３０２と、１つまたは複数のサンプル・データ・ブロック（ＳＤＢ）３０４とを含む。この特定の例では、３つのサンプル・データ・ブロック・テーブルが示され、それらのテーブルは循環リンク・リストとして結合されている。さらに、この例には、複数のサンプル・データ・ブロックがある。この特定の例に示されるように、サンプリング・バッファの他の例が、より多数、より少数、または同数のＳＤＢＴ、あるいはより多数、より少数、または同数のＳＤＢ、もしくはその両方を有することができることは言うまでもない。
【００６１】
テーブル項目アドレス・レジスタ（ＴＥＡＲ）３０６の内容は、サンプル・データ・ブロック・テーブル３０２の現行項目を指し示す。各サンプル・データ・ブロック・テーブルには、たとえば、ブロック・リンク項目３０８とテーブル・リンク項目３１０を含む、２種類の項目が存在する。各ブロック・リンク項目３０８はサンプル・データ・ブロック（ＳＤＢ）起点を含み、各テーブル・リンク項目はサンプル・データ・ブロック・テーブル（ＳＤＢＴ）起点を含む。この特定の実施形態では、各サンプル・データ・ブロック・テーブルは１６バイトの規定境界から始まり、各項目は８バイトである。各サンプル・データ・ブロック・テーブル３０２は、いくつかのブロック・リンク項目３０８と１つのテーブル・リンク項目３１０とを含む。各項目内の指定のビット（たとえば、ビット６３）はブロック・リンク項目とテーブル・リンク項目とを区別する。ビット６３が０である場合、その項目はブロック・リンク項目であり、ビット６３が１である場合、その項目はテーブル・リンク項目である。テーブル・リンク項目はサンプル・データ・ブロック・テーブル内の最後の項目である。サンプル・データ・ブロック・テーブルの実際のサイズは、テーブル・リンク項目の位置によって決定され、最大バッファ・サイズ・インジケータに指定されたサイズを超えない。サンプル・データ・ブロック・テーブルの起点およびテーブル・リンク項目は、この実施形態では、最大バッファ・サイズの規定境界によって分離することができない。
【００６２】
最大バッファ・サイズ・インジケータ３２０が０である場合、ブロック・リンク項目の指定の一部分（たとえば、ビット０〜５１）は、実記憶域または絶対記憶域内のサンプル・データ・ブロックの起点を含む。サンプル・データ・ブロック起点をデータ項目アドレス・レジスタ内に置く予定である場合、６４ビットのアドレスを形成するために右に複数の０（たとえば、１２個の０）が付加され、その後、そのアドレスがレジスタ内に置かれる。
【００６３】
最大バッファ・サイズ・インジケータ３２０が１である場合、ブロック・リンク項目の指定のビット（ビット０〜４３）は、実記憶域または絶対記憶域内のサンプル・データ・ブロックの起点を含む。サンプル・データ・ブロック起点をデータ項目アドレス・レジスタ内に置く予定である場合、６４ビットのアドレスを形成するために右にいくつかの０（たとえば、２０個）が付加され、その後、そのアドレスがレジスタ内に置かれる。
【００６４】
一例では、テーブル・リンク項目３１０のビット０〜５９は、実記憶域または絶対記憶域内のサンプル・データ・ブロック・テーブルの起点を含む。サンプル・データ・ブロック・テーブル起点をテーブル項目アドレス・レジスタ内に置く予定である場合、６４ビットのアドレスを形成するために右にいくつかの０（たとえば、４個）が付加され、その後、そのアドレスがレジスタ内に置かれる。
【００６５】
引き続き図１０を参照すると、データ項目アドレス・レジスタ３３０の内容は、サンプル・データ・ブロック３０４の次のデータ項目３３２を指定する。各サンプル・データ・ブロックは、最大バッファ・サイズの規定境界から始まる。サンプル・データ・ブロックのサイズは、最大バッファ・サイズ・インジケータ内に指定されたサイズに等しい。
【００６６】
一例では、各サンプル・データ・ブロックには、たとえば、データ項目３３２とトレーラ項目３３６を含む、２種類の項目が存在する。サンプル・データ・ブロックの最後のバイト数（たとえば、６４）はトレーラ項目を形成し、ブロック内の他のすべてのスペースを使用してデータ項目を形成する。
【００６７】
少なくとも１つのサンプリング機能がアクティブである場合、データ項目は各サンプリング間隔中に保管される。基本サンプリング機能のみがアクティブである場合、保管されるデータ項目は基本サンプリング・データ項目であり、診断サンプリング機能のみがアクティブである場合、保管されるデータ項目は診断サンプリング・データ項目である。どちらのサンプリング機能もアクティブである場合、保管されるデータ項目は複合データ項目である。これらのデータ項目のそれぞれについて、以下にさらに詳細に説明する。
【００６８】
基本サンプリング・データ項目の一例について、図１１に関連して説明する。一例では、基本サンプリング・データ項目４００は、たとえば、以下のフィールドを含む。
データ項目フォーマット・コード４０２：  データ項目のビット０〜１５はデータ項目のフォーマット・コードを含む。
固有命令の数（Ｕ）４０４：  データ項目のビット２０〜２３は、固有サイクル・インジケータがオンであるときに、サンプリング・サイクル中に同時に実行された固有の完了した命令の数を指定する。
パイプライン化ＣＰＵは、オーバラップ方式で同時に複数の命令を実行することができ、すなわち、同時に実行されているこれらの命令のそれぞれは異なるパイプライン・ステージにある。さらに、一部のモデルでは、パイプライン化ＣＰＵの各ステージは複数の命令を同時に実行することができる。
命令実行中に、固有サイクル・インジケータは、サンプル・データが取られるＣＰＵ内の場所であるサンプル・ポイントで１サイクルの間、オンになる。サンプリング・ポイントはモデルに依存するが、同じモデル上で実行されるすべての命令について同じである。パイプライン化ＣＰＵの場合、サンプリング・ポイントは通常、特定のパイプライン・ステージである。モデルに応じて、固有サイクル・インジケータが命令実行中にオンになる時期は予測不能である。このフィールドは、固有サイクル・インジケータがオンであるときに、サンプリング・ポイントで同時に実行される命令の数を含む。
サンプリング時間が発生したときに、ＣＰＵが待ち状態であるためまたは他の何らかのパイプライン・ステージで遅延が発生しているためにサンプリング・ポイントが使用中ではない場合、このフィールドの内容は０に設定される。
このフィールドの内容は、十分に小さいサンプリング間隔と十分に多数のサンプルを使用するときの１命令あたりのサイクル数を推定するために使用することができる。
特定の測定に関する１命令あたりのサイクル数は、待ち状態ビット（以下に説明する）が０に設定されているサンプルである使用中サンプルの数を、すべての使用中サンプル内の固有命令の総数で割ることによって推定することができる。
ＤＡＴモード（Ｔ）４０６：  データ項目のビット２６は、ＣＰＵのプログラム状況ワード（ＰＳＷ：Program Status Word）内のデータ・アドレス変換（ＤＡＴ）モード・ビットを含む。
待ち状態（Ｗ）４０８：  データ項目のビット２７は、ＣＰＵのＰＳＷ内の待ち状態ビットを含む。
問題プログラム状態（Ｐ）４１０：  データ項目のビット２８は、ＣＰＵのＰＳＷ内の問題プログラム状態ビットを含む。
アドレス・スペース制御（ＡＳ）４１２：  データ項目のビット２９〜３０は、ＣＰＵのＰＳＷ内のアドレス・スペース制御を含む。
無効表示（Ｉ）４１４：  データ項目のビット３１は、その項目が有効であるか無効であるかを示す。このビットが０である場合、その項目は有効であり、このビットが１である場合、その項目は無効である。項目内のサンプル・データが一貫していない場合、その項目は無効に設定される。
１次ＡＳＮ４１６：  データ項目のバイト・オフセット６〜７は、ＣＰＵの制御レジスタ４のビット４８〜６３内の１次アドレス・スペース番号（ＰＡＳＮ）を含む。
命令アドレス４１８：  データ項目のバイト・オフセット８〜１５は、サンプリング・サイクル中にＣＰＵが実行している命令の命令アドレスを含む。
命令アドレスは、実モードでは実アドレスとして、１次アドレス・モード、２次スペース・モード、またはアクセス・レジスタ・モードでは１次仮想アドレスとして、ホーム・スペース・モードではホーム仮想アドレスとして処理される。
サンプリング・ポイントがサンプリング・サイクル中に同時に複数の命令を実行している場合、これらの同時に実行されている命令のうちの１つの命令のアドレスのみが報告される。どの命令アドレスを報告すべきかという選択はモデルに依存する。
一部のモデルでは、実行のターゲット命令のアドレスは同じデータで報告されない。待ち状態ビットが１である場合、このフィールドの内容は予測不能である。サンプリング時間が発生したときに、他の何らかのパイプライン・ステージで遅延が発生しているためにサンプリング・ポイントがいずれの命令も実行していない場合、ＣＰＵ内で同時に実行されている命令のどのアドレスが報告されるかは予測不能である。
ゲスト・プログラム・パラメータ４２０：  データ項目のバイト・オフセット１６〜２３は、ＣＰＵが論理区画レベルで実行していない場合またはＣＰＵが論理区画レベルで実行していて、ホスト・インジケータが０である場合に現行プログラム・パラメータ・レジスタを含む。ＣＰＵが論理区画レベルで実行していて、ホスト・インジケータが１である場合、このフィールドに０が保管される。
ホスト・プログラム・パラメータ４２２：  データ項目のバイト・オフセット２４〜３１は、ＣＰＵが論理区画レベルで実行していて、ホスト・インジケータが１である場合に現行プログラム・パラメータ・レジスタを含む。そうではない場合、このフィールドの内容は予測不能である。
【００６９】
診断サンプリング・データ項目４４０の一例について、図１２に関連して説明する。一例では、診断サンプリング・データ項目４４０は、以下のものを含む。
データ項目フォーマット・コード４４２：  データ項目のビット０〜１５はデータ項目のフォーマット・コードを含む。
最大バッファ・サイズ４４４：  ビット１９は、最大バッファ・サイズを示すためのものである。０は４Ｋバイトを示し、１は１メガバイトを示す。
無効表示（Ｉ）４４６：  データ項目のビット３１は、その項目が有効であるか無効であるかを示す。このビットが０である場合、その項目は有効であり、このビットが１である場合、その項目は無効である。項目内のサンプル・データが一貫していない場合、その項目は無効に設定される。
この項目の残りの部分は非構築サンプル・データを含む。
【００７０】
基本サンプリング機能と診断サンプリング機能がどちらもアクティブである場合、各サンプリング間隔中に保管されたサンプル・データは複合データ項目であり、これは基本サンプリング・データ項目と、それに続く診断サンプリング・データ項目とを含む。
【００７１】
複合データ項目を保管する予定の場合、この項目は、十分なスペースがある場合、現行サンプル・データ・ブロックに完全に保管される。現行サンプル・データ・ブロックに十分なスペースがないときに、次のサンプル・データ・ブロックに十分なスペースがある場合、複合サンプル・データ全体が次のサンプル・データ・ブロックに保管される。複合データ項目の基本サンプリング・データ項目と診断サンプリング・データ項目は、この例では、異なるサンプル・データ・ブロックに保管されるわけではない。使用可能なスペースがないために複合サンプル・データが廃棄される場合、現行サンプル・データ・ブロックのサンプル・オーバフロー・カウントは１だけ増分される。
【００７２】
トレーラ項目に関連するフィールドの一実施形態について、図１３に関連して説明する。各トレーラ項目は、たとえば、６４バイトであり、サンプル・データ・ブロックの最後の６４バイトに常駐する。一例では、トレーラ項目４５０は、たとえば、以下のものを含む。
ブロック・フル・インジケータ（Ｆ）４５２：  トレーラ項目のバイト・オフセット０のビット０はブロック・フル・インジケータである。このインジケータが１である場合、サンプル・データ・ブロックは一杯である。
アラート要求制御（Ａ）４５４：  トレーラ項目のバイト・オフセット０のビット１はアラート要求インジケータである。このインジケータが１であって、サンプル・データ・ブロックが一杯になっている場合、サンプル・データ・ブロック更新プロセスの完了時にプログラム要求アラート外部割り込みイベントが認識される。本明細書では、それが完全に一杯であるかどうかにかかわらず、そのブロック・フル・インジケータが設定されると、サンプル・データ・ブロックは一杯であると見なされる。ブロックに追加のスペースがあるが、次のサンプルを保管するのに十分ではない場合、このインジケータが設定され、ブロックは一杯であると見なされる。
アラート要求制御の設定は選択可能である。たとえば、これは、ｘ個（たとえば、１０個）のデータ・ブロックごとに設定することができる。したがって、バッファのうちの１つのデータ・ブロックが一杯であっても、１０番目の一杯のデータ・ブロックの後など、そのインジケータが設定されたデータ・ブロックに達するまで割り込みを行う必要はない。１０という選択は一例に過ぎず、他の任意の所望の数を使用することができる。したがって、サンプル間隔後または１つのデータ・ブロックが一杯になった後でも割り込みは行われない。
サンプル・オーバフロー・カウント４５６：  トレーラ項目のバイト・オフセット８〜１５は、サンプル・データ・ブロックが一杯であるために失われたサンプル・データ項目の数を含む。
タイムスタンプ４５８：  トレーラ項目のバイト・オフセット１６〜３１は、サンプル・データ・ブロックが一杯になったときの時刻（ＴＯＤ）機構値を含む。
【００７３】
プログラム要求アラートが発生した場合、一杯であるサンプル・データ・ブロックからプログラム（たとえば、ゲストとして実行されるオペレーティング・システムなどの制御プログラム）がサンプル・データを読み出すことが予想される。これらのブロックを解放するために、プログラムは、ブロック・フル・インジケータ（Ｆ）とサンプル・オーバフロー・カウントをリセットし、アラート要求制御（Ａ）を再確立することになる。一例では、インターロックされた更新として、ダブル比較およびスワップ命令を使用して、サンプル・データ・ブロック内のこれらのフィールドの更新が実行される。これらの読み取りおよび更新はいずれも、サンプリング機能がアクティブである間に実行される。
【００７４】
ＣＰＵが動作状態にあり、少なくとも１つのサンプリング機能がアクティブであるときに、サンプル・データ・ブロック更新プロセスは各サンプリング時間に実行される。このプロセスは、新しいデータ項目用のスペースを突き止め、その項目を形成し、レジスタの内容が次のデータ項目の位置を指定するようにデータ項目アドレス・レジスタの内容を更新する。
【００７５】
サンプル・データ・ブロック更新プロセス中に、他のアドレスにある値を追加することによって任意のアドレスが形成される場合、そのアドレスのビット位置０からの桁上げがある場合に、その桁上げは無視される。同様に、サンプル・オーバフロー・カウント・フィールドの内容が増分される場合、そのカウントのビット位置０からの桁上げがある場合に、その桁上げは無視される。
【００７６】
サンプル・データ・ブロックへのアクセスはキー制御保護を条件とせず、低アドレス保護も条件としない。
【００７７】
サンプル・データ・ブロック項目またはサンプル・データ・ブロック・テーブル項目への記憶アクセスが行われるときに、アドレスが無効である場合、測定アラート外部割り込みイベント（無効項目アドレス）が認識され、そのＣＰＵ用のアクティブ・サンプリング機能が非アクティブ状態になる。たとえば、アドレスが０〜８１９１の範囲内にある場合、指定のサンプル・データ・ブロック項目がトレーラ項目内部にある場合、または指定の記憶位置がこの構成で使用可能ではない場合、項目アドレスは無効である。
【００７８】
サンプル・データ・ブロック・テーブル項目への記憶アクセスが行われるときに、任意の不正確なＳＤＢテーブル項目が検出された場合、測定アラート外部割り込みイベント（不正確サンプル・データ・ブロック・テーブル項目）が認識され、そのＣＰＵ用のアクティブ・サンプリング機能が非アクティブ状態になる。その項目がテーブル・リンク項目であって、それが他のテーブル・リンク項目を指定する場合、または最後のテーブル項目がテーブル・リンク項目ではない場合、サンプル・データ・ブロック・テーブル項目は不正確である。
【００７９】
データ項目アドレス・レジスタの内容は、現行サンプル・データ・ブロック内の次のデータ項目を突き止めるために使用される。次のデータ項目がサンプル・データ・ブロックのトレーラ項目（たとえば、最後の６４バイト）内部に常駐する場合、測定アラート外部割り込みイベント（無効項目アドレス・アラート）が認識され、サンプリング機能は非アクティブ状態になる。
【００８０】
本発明の一態様によるサンプリング・バッファの更新に関連するロジックの一実施形態について、図１４〜図１５に関連して説明する。図１４を参照すると、最初に、サンプリング機能中にサンプル・データが入手されており、ステップ５００で、それをバッファに保管する予定である。照会５０２で、現行サンプル・データ・ブロックのトレーラ項目内のブロック・フル・インジケータが設定されている（たとえば、１に等しい）かどうかについて判断が行われる。ブロック・フル・インジケータが設定されている場合、この時点で、データを保管するためのバッファ内のスペースが不十分であることを示す。ステップ５０４で、トレーラ項目のサンプル・オーバフロー・カウント・フィールドの内容が１だけ増分され、ステップ５０６で、保管すべきサンプル・データが廃棄される。ステップ５０８で、これで更新プロセスが完了する。
【００８１】
しかし、照会５０２に戻り、現行サンプル・データ・ブロックのトレーラ項目内のブロック・フル・インジケータが０である場合、照会５１０で、サンプル・データを保管するためのスペースが十分であるかどうかについて判断が行われる。ブロック・フル・インジケータが０であって、十分なスペースが存在する場合、ステップ５１２で、サンプル・データは次のデータ項目に保管され、ステップ５１４で、データ項目アドレス・レジスタの内容はデータ項目サイズ分だけ増分される。ステップ５０８で、更新プロセスが完了する。
【００８２】
これに対して、照会５１０に戻り、ブロック・フル・インジケータが設定されておらず、次のデータ項目にサンプル・データを保管するためのスペースが十分ではない場合、ステップ５２０（図１５）で、現行サンプル・データ・ブロックのトレーラ項目内のブロック・フル・インジケータが１に設定され、ステップ５２２で、時刻機構値がトレーラ項目のタイムスタンプ・フィールドに置かれる。
【００８３】
その後、照会５２４で、トレーラ項目内のアラート要求インジケータが１であるかどうかについて判断が行われる。トレーラ項目内のアラート要求インジケータが１である場合、ステップ５２６で、更新プロセスの終わりに測定アラート外部割り込みイベント（プログラム要求アラート）が認識される。その後、またはアラート要求インジケータが設定されていない場合、ステップ５２８で、ＳＤＢテーブル内の次の項目が現行ＳＤＢテーブル項目になるように、テーブル項目アドレス・レジスタの内容がＳＤＢテーブル項目サイズ分だけ増分される。ステップ５３０で、現行ＳＤＢテーブル項目が取り出され、その項目のビット６３が検査される。ＳＤＢテーブル項目のビット６３が０である場合、その項目はブロック・リンク項目であって、サンプル・データ・ブロック（ＳＤＢ）起点を含み、ビット６３が１である場合、その項目はテーブル・リンク項目であって、サンプル・データ・ブロック・テーブル（ＳＤＢＴ）起点を含む。
【００８４】
照会５３２で、取り出された項目がＳＤＢテーブル内の最後の項目である（すなわち、その項目が最大バッファ・サイズに達する前の最後の項目である）場合、しかも照会５３４で、その項目がテーブル・リンク項目ではない（すなわち、その項目のビット６３が０である）場合、ステップ５３６で、測定アラート外部割り込みイベント（不正確ＳＤＢテーブル項目アラート）が認識される。ステップ５３８で、アクティブ・サンプリング機能が非アクティブ状態になり、更新プロセスが完了する。
【００８５】
照会５３４に戻り、それが最後の項目であり、ビット６３が１である場合、ステップ５４０で、指定のテーブルが現行ＳＤＢテーブルになるように、その項目に指定されたＳＤＢテーブルの起点のアドレスがテーブル項目アドレス・レジスタに置かれる。ステップ５４２で、現行ＳＤＢテーブル項目が取り出され、その項目のビット６３が検査される。照会５４４で、ビット６３が１である場合、テーブル・リンク項目によって指し示されたＳＤＢテーブル項目自体がテーブル・リンク項目であることを示し、ステップ５３６で、測定アラート外部割り込みイベント（不正確ＳＤＢテーブル項目アラート）が認識される。ステップ５３８で、アクティブ・サンプリング機能が非アクティブ状態になり、更新プロセスが完了する。
【００８６】
しかし、照会５４４で、ビット６３が０である場合、ステップ５４６で、そのブロックが現行サンプル・データ・ブロックになるように、その項目に指定されたサンプル・データ・ブロックの起点のアドレスがデータ項目・アドレス・レジスタに置かれる。次に処理は、上述の照会５０２（図１４）に続く。
【００８７】
照会５３２（図１５）に戻り、取り出された項目がＳＤＢテーブル内の最後の項目ではない（すなわち、境界に達する前の最後の項目ではない）場合、しかも照会５５０で、取り出されたテーブル項目のビット６３が０である場合、処理は、上述のステップ５４６に続く。しかし、取り出された項目のビット６３が１である場合、テーブルにそれ以上のスペースがあっても、テーブル内にそれ以上の項目がないことを示し、次に処理は、上述のステップ５４０に続く。
【００８８】
ステップ５２６に関連して示した通り、一杯として示されているサンプル・データ・ブロックのトレーラ項目にアラート要求が設定されていると判断したことに応答して、更新プロセスの終わりに測定アラート外部割り込みイベントが認識される。この処理の一実施形態について、図１６に関連して説明する。
【００８９】
図１６を参照すると、ステップ５８０で、更新プロセスの終わりに割り込みが認識される。それに応答して、ステップ５８２で、制御プログラム（たとえば、ゲストとして実行されるオペレーティング・システム）は、１つまたは複数のサンプル・データ・ブロック（たとえば、一杯になっているブロック、あるいはデータまたはそのサブセットを有するすべてのブロック）に保管されたデータを読み取り、ＤＡＳＤまたは他の記憶媒体にそのデータを書き込む。さらに、インターロックされた更新操作において、制御プログラムは、ステップ５８４で、一杯になっていたいずれかのブロックのトレーラ項目内のブロック・フル・インジケータをリセットし、ステップ５８６で、アラート要求制御を再確立する。一例では、この再確立は、割り込みを開始したものと同じアラート・インジケータを設定すること（または設定を放置すること）を含む。しかし、他の例では、１つまたは複数の他のアラート・インジケータを設定することができる。そのデータをどの程度頻繁にダンプするかに応じて、１つまたは複数のトレーラ項目にアラート・インジケータを設定することができる。
【００９０】
アラート・インジケータは、たとえば、サンプル・データの喪失を最小限にし、バッファが一杯になる前にデータをダンプするために十分な時間を提供するように選択された少なくとも１つのデータ・ブロックに設定される。しかし、少量のデータが失われた場合、収集したデータは依然として有用であり続ける。これに対して、実現例に依存して、大量のデータが失われた場合、収集したサンプル・データは無視される。
【００９１】
図１４〜図１６に関連して説明したバッファ更新プロセスは、サンプル・データを取り込むために行われる全体的なサンプリング・プロセスの一部である。このサンプリング・プロセスはオペレータ要求によって始まり、その要求に応答してサンプリング機能が開始される。１つまたは複数のサンプリング機能が１人または複数のオペレータによって同時に開始される可能性がある。バッファ更新プロセスを含むサンプリング・プロセスは、非仮想環境と仮想環境のいずれでも実行することができる。仮想環境に関するサンプリング・プロセスの概要の一実施形態について、図１７〜図１９に関連して説明する。その後、仮想環境におけるカウンタに関する処理の概要を示す。
【００９２】
図１７を参照すると、最初に、ステップ６００で、オペレータがサンプリング機能を呼び出し、たとえば、サンプリング周波数Ｆ（たとえば、１分あたりに収集されるサンプルの数）、分単位のサンプリング実行の持続期間Ｄ、およびサンプリングのタイプ（たとえば、基本、診断、または複合）を含む、様々なパラメータを指定する。
【００９３】
さらに、ステップ６０２で、ホスト（たとえば、ＬＰＡＲ）は、実行すべきサンプリングの対象となる特定のゲストに関する許可インジケータを設定することにより、サンプリングを許可する。
【００９４】
ステップ６０４で、ゲスト（たとえば、オペレーティング・システムなどの制御プログラム）がディスパッチされる。その後、ステップ６０６で、ゲストは、サンプリング機能に関する情報を提供する命令であって、以下に説明するサンプリング情報照会（ＱＳＩ）命令を発行する。一例では、この情報は、バイト単位の基本サンプリング・データ項目サイズ（ＢＳＤＥＳ）、バイト単位の診断サンプリング・データ項目サイズ（ＤＳＤＥＳ）、およびＣＰＵ速度＝Ｃサイクル数／マイクロ秒を含む。得られた情報により、ステップ６０８で、制御プログラムは、測定内の各プロセッサに関するサンプリング間隔＝ｉサイクル数／秒を計算する。たとえば、以下の通りである。
Ｆ＝サンプル数／分単位の総合サンプリング周波数
ｐ＝測定に係わるプロセッサの数
ｆ＝（Ｆ／６０）／ｐ＝サンプル数／秒単位の各プロセッサに関する個別サンプリング周波数
Ｃ＝サイクル数／（１０＊＊−６）秒単位のＣＰＵ速度
ｉ＝（１／ｆ）Ｃ＝サイクル数／サンプル単位の各プロセッサに関する個別サンプリング間隔
【００９５】
さらに、ステップ６１０で、個別サンプリング周波数（上記で定義）ｆ、サンプル・データ項目サイズＬ、およびサンプリング実行の指定の持続期間Ｄを使用して、各プロセッサごとにどのくらいの大きさのデータ・バッファが必要であるかを計算する。サンプル・データ項目サイズＬは、指定のサンプリング・タイプと、ＱＳＩ命令によって返される各項目タイプ（ＢＳＤＥＳおよびＤＳＤＥＳ）のサイズを使用して計算される。たとえば、以下の通りである。
Ｌ＝バイト単位のサンプリング・データ項目サイズ
基本サンプリングのみを使用する場合、Ｌ＝ＢＳＤＥＳ
診断サンプリングのみを使用する場合、Ｌ＝ＤＳＤＥＳ
基本サンプリングと診断サンプリングの両方を使用する場合、Ｌ＝ＢＳＤＥＳ＋ＤＳＤＥＳ
ｆ＝サンプル数／秒単位の各プロセッサに関する個別サンプリング周波数
Ｄ＝分単位のサンプリング実行の意図された持続期間
Ｂ＝ｆ＊Ｌ＊Ｄ＊６０＝サンプリング実行全体について個別プロセッサ上のすべてのサンプルに必要なバイト単位のバッファ・サイズ
【００９６】
ステップ６１２で、上記の情報に基づいて、ゲストはバッファ用の記憶域を割り振る。本発明の一態様により、全バッファ・サイズを割り振る必要はない。その代わりに、バッファの一部分のみが割り振られ、特定の時間に、バッファからデータを除去するための割り込みが開始され、同じバッファを再使用することができる。所望のバッファ・サイズについて記憶域が割り振られ、その記憶域は、図１０に関連して説明したサンプリング・データ・バッファの形に構築される。
【００９７】
割り振られたバッファが一杯になる前にゲストが割り込みを処理できるように、ゲストによって割り振られるバッファ・サイズは十分な大きさになる予定である。この最小値より大きいバッファを割り振るには、ゲストに対する割り込みの頻度をより低くする必要があるであろう。ゲスト割り込み間に必要な時間は、次の割り込みが提示される前にそれぞれの割り込みの処理を保証するためのものである。ゲストは、割り振るために必要なバッファ・サイズの一部分を決定するときに、これらの要因を考慮する。
【００９８】
測定に係わる各プロセッサごとに割り振るべきバッファの最小サイズｂは、個別サンプリング周波数ｆ、サンプル・サイズＬ、および制御プログラム・サービス間隔Ｔを使用して計算される。たとえば、以下の通りである。
Ｔ＝バッファを処理するために必要な制御プログラム割り込み間の秒単位の時間
ｂ＝ｆ＊Ｌ＊Ｔ＝バイト単位の最小割り振りバッファ・サイズ
【００９９】
最小値と最大値が計算されると、ゲストは、安全マージンを含む、実用的なバッファ・サイズを決定する。たとえば、書き込み操作に対して同時に収集されるサンプルを失わずにバッファの非同期書き込みを行えるようにするために、最小バッファ・サイズｂに４という値を掛けるが、書き込み操作が完了するには相当な時間を要することは言うまでもない。
【０１００】
その後、ステップ６１４で、ゲストは、サンプリング機能を活動化するために、以下に説明するサンプリング制御設定命令を発行する。この命令は、サンプリング制御において適切な使用可能化ビットおよび活動化ビットを設定する。この命令を発行したことに応答して、ステップ６１６で、サンプリングが実行され、サンプリングされたデータは図１４〜図１６に関連して説明したように処理される。
【０１０１】
ステップ６２０で、ある時点でゲストが中断され、制御がホストに返される。これは、ゲストのタイム・スライスが期限切れになったことを含む、いくつかの理由で発生する可能性がある。ステップ６２８（図１８）で、中断の一部として、残余サンプリング間隔インジケータが更新される。このインジケータは各ゲストごとに提供される。ゲストのタイム・スライスが終了すると、このインジケータは、次のサンプルが取られる前の残りの時間を記録するために使用される。たとえば、サンプリング間隔が１０ｍｓであり、中断される前に６ｍｓでゲストの最後のサンプルが取られた場合、残余サンプリング間隔に４ｍｓが保存される。これは、このゲストが再ディスパッチされるときにこのサンプリング間隔で残っている時間として使用される。一例では、このインジケータは、以下に説明するように、ゲストに関連する測定ブロックに保管される。
【０１０２】
さらに、ステップ６３０で、サンプリング制御などの制御が保存される。これは仮想環境であるので、上述の通り、各ゲストごとに制御を保存するために制御ブロックが提供される。たとえば、適切な使用可能化インジケータおよび活動化インジケータは、状態記述のＭＡＤおよびＭＣＤに保管される。その上、保留割り込みパラメータは状態記述に保存される。
【０１０３】
さらに、ステップ６３２で、１つまたは複数のハードウェア・インジケータを設定することにより、サンプリング機能が使用不可状態になり、ステップ６３４で、制御がホストに戻る。
【０１０４】
上記のようにサンプル・データが取り込まれ、バッファに書き込まれることに加え、ゲストのアクティビティを反映するためにカウンタを更新することもできる。この処理は、図１７〜図１８に関連して説明したサンプリング・プロセスと同様である。たとえば、オペレータはカウンタを許可し、１つまたは複数のパラメータを指定する。さらに、ホストは、実行すべきカウンタの対象となる特定のゲストに関する許可インジケータを設定することにより、カウンタ機能を許可する。ゲストはディスパッチされ、その後、ゲストは、カウンタ機能に関する情報を提供する命令であって、以下に説明するカウンタ情報照会（ＱＣＴＲＩ）命令を発行する。さらに、ゲストは、カウンタ機能を活動化するために、以下に説明するＣＰＵカウンタ・セット制御設定命令を発行する。この命令は、カウンタ制御において適切な使用可能化ビットおよび活動化ビットを設定する。この命令を発行したことに応答して、カウンタ機能が実行される。
【０１０５】
ゲストが中断されると、カウンタ制御が保存される。たとえば、適切な使用可能化インジケータおよび活動化インジケータはＭＡＤおよびＭＣＤに保管され、保留割り込みパラメータは状態記述に保存される。制御はホストに戻る。
【０１０６】
一例では、ゲストが再ディスパッチされると、照会６５０（図１９）で、測定が依然として許可されるかどうかについてチェックが行われる。これは、一例では、許可インジケータをチェックするディスパッチ・ルーチン（たとえば、ミリコード）によって達成される。測定が許可されない場合、ステップ６５２で、たとえば、ゲスト割り込みを介してゲストに通知される。そうではない場合、ステップ６５４で、上述の通り、測定が進行する。
【０１０７】
上記とは非同期に、本発明の一態様により、制御プログラムのディスパッチャがタスクをディスパッチするたびに、ステップ７００（図２０）で、ディスパッチャはプログラム・パラメータ設定命令を発行する。プログラム・パラメータ設定命令は、特定にタスクを識別する識別子でタスクにタグを付ける。この識別子は、そのデータがどのタスクに属すかが把握されるように、サンプル・データとともに提供される（たとえば、識別子はレジスタから取り出され、データとともに含まれる）。ディスパッチャはパフォーマンス・クリティカルであるので、測定機能が活動化されるかどうかを判断するためのテストはまったくない。その代わりに、この命令は、ディスパッチャがタスクをディスパッチするたびに発行される。一例では、構成がサンプリング用に構成されない場合、命令はノーオペレーションとして実行される。
【０１０８】
プログラム・パラメータ設定命令の一実施形態について、図２１に関連して説明する。一例として、プログラム・パラメータ設定命令７５０は以下のフィールドを含む。
命令コード７５２：  このフィールドは、プログラム・パラメータ設定命令を指定する命令コードを含む。
Ｂ2７５４およびＤ2７５６：  Ｂ2フィールドによって指定された汎用レジスタの内容はＤ2フィールドの内容に追加され、第２オペランド・アドレスを形成する。
【０１０９】
実行の際に、第２オペランド・アドレスによって指定された記憶位置の８バイトのプログラム・パラメータは、プログラム・パラメータ・レジスタ内に置かれる。一例では、このレジスタは６４ビットのレジスタであり、このレジスタの内容は、初期ＣＰＵリセット、クリア・リセット、またはパワーオン・リセットによって０にクリアされる。特定の一例として、プログラム・パラメータ・レジスタは、実記憶域に維持される状態記述内に含まれる。
【０１１０】
上記で参照したサンプリング情報照会命令は、その命令の第２オペランド・アドレスによって指定された情報ブロック内にＣＰＵ測定サンプリング機能に関する情報を入れるために使用される。一例では、サンプリング情報照会命令８００（図２２）は、たとえば、以下のものを含む。
命令コード８０２：  このフィールドは、サンプリング情報照会命令を指定する命令コードを含む。
Ｂ2８０４およびＤ2８０６：  Ｂ2フィールドによって指定された汎用レジスタの内容はＤ2フィールドの内容に追加され、第２オペランド・アドレスを形成する。
【０１１１】
一例では、情報ブロック８２０（図２３）は６４バイトであり、以下のものを含む。
サンプリング状態制御８２２：  状態ブロックのバイト・オフセット０〜３は、基本サンプリング機能および診断サンプリング機能に関する状態制御を含み、一例では、以下のフォーマットを有する。
【表３】
2010086520.tif 000005
【０１１２】
基本サンプリング・データ項目サイズ（ＢＳＤＥＳ）８２４：  情報ブロックのバイト・オフセット４〜５は符号なし２進整数を含み、基本サンプリング・データ項目のサイズをバイト単位で指定する。この情報は、一例では、マシン内でハードコーディングされる。
診断サンプリング・データ項目サイズ（ＤＳＤＥＳ）８２６：  バイト・オフセット６〜７は符号なし２進整数を含み、診断サンプリング・データ項目のサイズをバイト単位で指定する。この情報は，一例では、マシン内でハードコーディングされる。
最小サンプリング間隔８２８：  情報ブロックのバイト・オフセット８〜１５は、ＣＰＵサイクル数単位の最小サンプリング間隔を含む。この情報は，一例では、マシン内でハードコーディングされる。
最大サンプリング間隔８３０：  バイト・オフセット１６〜２３は、ＣＰＵサイクル数単位の最大サンプリング間隔を含む。この情報は，一例では、マシン内でハードコーディングされる。
ＴＥＡＲ内容８３２：  基本サンプリング機能または診断サンプリング機能あるいはその両方が使用可能である場合、情報ブロックのバイト・オフセット２４〜３１はテーブル項目アドレス・レジスタの内容を含む。基本サンプリング機能または診断サンプリング機能のいずれも使用可能ではない場合、情報ブロックのバイト・オフセット２４〜３１に０が保管される。
ＤＥＡＲ内容８３４：  基本サンプリング機能または診断サンプリング機能あるいはその両方が使用可能である場合、情報ブロックのバイト・オフセット３２〜３９はデータ項目アドレス・レジスタの内容を含む。基本サンプリング機能または診断サンプリング機能のいずれも使用可能ではない場合、情報ブロックのバイト・オフセット３２〜３９に０が保管される。
ＣＰＵ速度８３６：  バイト・オフセット４４〜４７は符号なし２進整数を含み、マイクロ秒あたりのＣＰＵサイクル数単位でＣＰＵ速度を指定する。この情報は、一例では、モデルに基づいてマシンによって提供される。
【０１１３】
上記で参照したカウンタ情報照会命令は、その命令の第２オペランド・アドレスによって指定された情報ブロック内にＣＰＵ測定カウンタ機能に関する情報を入れるために使用される。一例では、カウンタ情報照会命令８５０（図２４）は、たとえば、以下のものを含む。
命令コード８５２：  このフィールドは、カウンタ情報照会命令を指定する命令コードを含む。
Ｂ2８５４およびＤ2８５６：  Ｂ2フィールドによって指定された汎用レジスタの内容はＤ2フィールドの内容に追加され、第２オペランド・アドレスを形成する。
【０１１４】
一例では、情報ブロック８７０（図２５）は６４バイトであり、以下のものを含む。
カウンタ第１バージョン番号（ＣＦＶＮ）８７２：  情報ブロックのバイト・オフセット０〜１はカウンタ第１バージョン番号を含む。
許可制御８７４：  情報ブロックのバイト・オフセット２〜３は許可制御を含み、一例では、以下のフォーマットを有する。
【表４】
2010086520.tif 000006
【０１１５】
使用可能制御８７６：  情報ブロックのバイト・オフセット４〜５は使用可能制御を含み、一例では、以下のフォーマットを有する。
【表５】
2010086520.tif 000007
【０１１６】
活動化制御８７８：  情報ブロックのバイト・オフセット６〜７は活動化制御を含み、一例では、以下のフォーマットを有する。
【表６】
2010086520.tif 000008
【０１１７】
最大ＣＰＵアドレス８８０：  情報ブロックのバイト・オフセット８〜９は基本マシン・レベルの最大ＣＰＵアドレスを含む。
カウンタ第２バージョン番号（ＣＳＶＮ）８８２：  バイト・オフセット１０〜１１はカウンタ第２バージョン番号を含む。
【０１１８】
その一例について図２６に関連して説明するサンプリング制御設定命令は、サンプリング制御を更新するために使用される。一実施形態のサンプリング制御設定命令９００は、一例では、以下のフォーマットを有する。
命令コード９０２：  このフィールドは、サンプリング制御設定命令を指定する命令コードを含む。
Ｂ2９０４およびＤ2９０６：  Ｂ2フィールドによって指定された汎用レジスタの内容はＤ2フィールドの内容に追加され、第２オペランド・アドレスを形成する。
【０１１９】
命令実行中に、第２オペランド・アドレスによって指定された記憶位置の要求ブロック内のサンプリング制御は、対応するサンプリング制御レジスタ内に置かれる。要求ブロック内の制御の値は、以下に示す通り、オペレータまたは制御プログラム（たとえば、ゲストとして実行されるオペレーティング・システム）あるいはその両方によって提供される。
【０１２０】
一例では、要求ブロックは６４バイトであり、図２７に関連して説明する通り、以下のフィールドを含む。
Ｓ９２２：  要求ブロックのビット０（Ｓ）は、オペレータによって指定された最大バッファ・サイズ・インジケータを指定する。
Ｈ９２４：  ＣＰＵが論理区画レベルで実行している場合、要求ブロックのビット１（Ｈ）はホスト・インジケータである。ＣＰＵが論理区画レベルで実行していない場合、ビット１は無視され、０として処理される。これは制御プログラムによって指定される。
Ｅs９２６：  要求ブロックのビット５４（Ｅs）は、オペレータからの入力パラメータに基づいて設定される基本サンプリング使用可能制御を指定する。
Ｅd９２８：  要求ブロックのビット５５（Ｅd）は、オペレータからの入力パラメータに基づいて設定される診断サンプリング使用可能制御を指定する。
Ｃs９３０：  要求ブロックのビット６２（Ｃs）は、オペレータからの入力パラメータに基づいて設定される基本サンプリング活動化制御を指定する。
Ｃd９３２：  要求ブロックのビット６３（Ｃd）は、オペレータからの入力パラメータに基づいて設定される診断サンプリング活動化制御を指定する。要求ブロックのビット２〜５３（９２５）およびビット５６〜６１（９２９）は０である。
【０１２１】
サンプリング機能の指定の使用可能制御および活動化制御は、両方のサンプリング機能が有効な状態遷移を行える場合にのみ設定される。サンプリング機能が有効な状態遷移を行えない場合、どのサンプリング機能についても指定の状態制御が設定されない。
【０１２２】
サンプリング機能が使用不可状態、非アクティブ状態、またはアクティブ状態からアクティブ状態に設定される場合、最大バッファ・サイズ・インジケータ、ホスト・インジケータ、サンプリング間隔９３４、テーブル項目アドレス・レジスタの内容９３６、およびデータ項目アドレス・レジスタの内容９３８を含む追加の制御はサンプリング制御レジスタ内に置かれる。操作によりいかなるサンプリング機能もアクティブ状態にならない場合、追加の制御は無視され、サンプリング制御レジスタ内に置かれない。
【０１２３】
サンプリング機能が使用不可状態、非アクティブ状態、またはアクティブ状態からアクティブ状態に設定される予定であるときに、要求されたサンプリング間隔がサポートされる範囲の外側である場合、サンプリング制御レジスタ内の任意の状態制御を含むサンプリング制御はいずれも変更されず、指定例外が認識される。サポートされるサンプリング間隔の範囲は、サンプリング情報照会命令を実行することによって提供される最大サンプリング間隔と最小サンプリング間隔との間（両端の値を含む）である。
【０１２４】
一例では、両方のサンプリング機能に関する使用可能制御および活動化制御が設定される場合、条件コード０が設定される。使用可能制御および活動化制御が設定されない場合、条件コード３が設定される。
【０１２５】
その一例について図２８に関連して説明するＣＰＵカウンタ・セット制御設定命令は、カウンタ状態制御を更新するために使用される。一実施形態のＣＰＵカウンタ・セット制御設定命令９５０は、一例では、以下のフォーマットを含む。
命令コード９５２：  このフィールドは、ＣＰＵカウンタ・セット制御設定命令を指定する命令コードを含む。
Ｂ2９５４およびＤ2９５６：  Ｂ2フィールドによって指定された汎用レジスタの内容はＤ2フィールドの内容に追加され、第２オペランド・アドレスを形成する。
【０１２６】
命令実行中に、第２オペランド・アドレスによって指定された記憶位置のＣＰＵカウンタ・セット状態制御は、ローカル・カウンタ状態制御レジスタ内に置かれる。
【０１２７】
一例では、第２オペランドは６４ビットであり、第２オペランドのビット４４〜４７およびビット６０〜６３がＣＰＵカウンタ・セットに関する状態制御を指定する。これらのビットは、たとえば、以下のものを含む。
第２オペランドのビット４４（Ｅc）は、暗号アクティビティ・カウンタ・セットに関する使用可能制御を含む。
第２オペランドのビット４５（Ｅp）は、問題カウンタ・セットに関する使用可能制御を含む。
第２オペランドのビット４６（Ｅb）は、基本カウンタ・セットに関する使用可能制御を含む。
第２オペランドのビット４７（Ｅe）は、拡張カウンタ・セットに関する使用可能制御を含む。
第２オペランドのビット６０（Ｃc）は、暗号アクティビティ・カウンタ・セットに関する活動化制御を含む。
第２オペランドのビット６１（Ｃp）は、問題カウンタ・セットに関する活動化制御を含む。
第２オペランドのビット６２（Ｃb）は、基本カウンタ・セットに関する活動化制御を含む。
第２オペランドのビット６３（Ｃe）は、拡張カウンタ・セットに関する活動化制御を含む。
【０１２８】
すべてのＣＰＵカウンタ・セットが有効な状態遷移を行える場合、ＣＰＵカウンタ・セットの指定の状態制御が設定される。カウンタ・セットが有効な状態遷移を行えない場合、一実施形態では、どのカウンタ・セットについても指定の状態制御が設定されない。
【０１２９】
ハードウェア内で発生する特定のイベントのアクティビティ・カウント（サイクル・カウント、命令カウントなど）を累積するか、それが実行されている中央演算処理装置のスナップショットを定期的に撮るか、あるいはその両方を行い、実行中の命令を含むＣＰＵ状態情報（たとえば、命令コード、命令に関する問題が存在するかどうかなど）を記録するＣＰＵ機能について、上記で詳細に説明した。各サンプリング時間に、サンプル・データがバッファ内に置かれる。バッファが定義済み量のデータを有する場合、バッファからデータを除去するために、割り込みが提示される。
【０１３０】
本発明の他の一態様により、仮想環境の構成をサポートするために、測定機能が仮想化される。仮想環境では、この機能は、独立してしかも同時に１つまたは複数のゲストによって使用することができる。
【０１３１】
本発明のさらに他の一態様では、１つまたは複数の処理装置上に測定ロジックの１つまたは複数の態様を配備するための技法が提供される。配備ロジックの一実施形態について、図２９〜図３０に関連して説明する。
【０１３２】
図２９を参照すると、最初に、照会１０００で、測定ロジックが実行されたときに１つまたは複数のサーバ上に常駐する問題が存在するかどうかについて判断が行われる。存在する場合、ステップ１００２で、実行可能プログラムを含むための１つまたは複数のサーバが識別され、ステップ１００４で、１つまたは複数のサーバ用の測定ロジックが、たとえば、ファイル転送プロトコル（ＦＴＰ）または何らかの他のプロトコルを介して、あるいは共用ファイル・システムの使用によるコピーにより、サーバの記憶域に直接転送される。次に、ステップ１００６で、ロジックがサーバにインストールされる。
【０１３３】
その後、または実行可能プログラムがまったくない場合、照会１００８で、ユーザに１つまたは複数のサーバ上のロジックにアクセスさせることにより測定ロジックが配備されるかどうかについて追加の判断が行われる。ユーザがサーバ上の測定ロジックにアクセスする場合、ステップ１０１０で、ロジックを保管する予定であるサーバ・アドレスが識別される。一例では、照会１０１２（図３０）で、測定ロジックを保管するためにプロキシ・サーバが構築される予定であるかどうかについて判断が行われる。プロキシ・サーバは、Ｗｅｂブラウザなどのクライアント・アプリケーションと実サーバとの間に位置するサーバである。プロキシ・サーバは、その要求自体を満たすことができるかどうかを確認するために、実サーバへの要求をインターセプトする。満たすことができない場合、プロキシ・サーバは、その要求を実サーバに転送する。プロキシ・サーバの２つの主要な利点は、パフォーマンスを改善することと、要求をフィルタリングすることである。プロキシ・サーバが構築される場合、ステップ１０１４で、そのプロキシ・サーバがインストールされる。
【０１３４】
その後、またはプロキシ・サーバが構築されない場合、ステップ１０１６で、測定ロジックは、ファイル転送プロトコル（ＦＴＰ）などのプロトコルを介してサーバに送信されるか、あるいはファイル共用を介してソース・ファイルからサーバ・ファイルに直接コピーされる。他の例として、測定ロジックを含む１つまたは複数のサーバにトランザクションが送信され、そのサーバがトランザクションを処理し、ロジックを受信して、そのロジックをサーバのファイル・システムにコピーする。
【０１３５】
測定ロジックがサーバで保管された後、ステップ１０１８で、ユーザは自分のクライアント・コンピュータを介してサーバ上のロジックにアクセスし、ロジックの少なくとも一部分を自分のクライアント・コンピュータのファイル・システムにコピーすることができる。次に、ユーザは、ステップ１０２０で、クライアント・コンピュータ上にロジックをインストールするプログラムを実行する。他の一例では、サーバは、サンプリング・ロジックの１つまたは複数の態様を各クライアントに自動的にコピーし、その後、各クライアント・コンピュータでそのロジック用のインストール・プルグラムを実行する。これにより、ステップ１０２２で、配備処理の一例が終了する。
【０１３６】
照会１００８（図２９）に戻り、ユーザに１つまたは複数のサーバ上のロジックにアクセスさせることによりロジックが配備されない場合、処理は、照会１０３０で、電子メールを介してロジックをユーザに送信することによりロジックが配備されるかどうかという判断を続行する。そのように配備される場合、ステップ１０３２で、ロジックが配備される１組のユーザはユーザのクライアント・コンピュータのアドレスとともに識別される。測定ロジックは、ステップ１０３４（図３０）で、ユーザのクライアント・コンピュータのそれぞれに電子メールを介して送信される。ユーザは、ステップ１０３６で、電子メールを受信し、ステップ１０３８で、電子メールから自分のクライアント・コンピュータ上のディレクトリに測定ロジックを切り離す。ユーザは、ステップ１０２０で、クライアント・コンピュータにロジックをインストールするプログラムを実行し、ステップ１０２２で、プロセスを終了する。
【０１３７】
照会１０３０（図２９）に戻り、電子メールを介して測定ロジックが配備されない場合、ステップ１０４０で、ロジックがユーザのクライアント・コンピュータ上のユーザ・ディレクトリに直接送信されるかどうかについてさらに判断が行われる。直接送信される場合、ステップ１０４２で、ユーザ・ディレクトリが識別される。測定ロジックは、ステップ１０４４（図３０）で、ユーザのクライアント・コンピュータのディレクトリに直接転送される。これは、ファイル・システム・ディレクトリを共用し、その後、送信側のファイル・システムから受信側ユーザのファイル・システムにコピーすること、あるいは、ファイル転送プロトコル（ＦＴＰ）などの転送プロトコルを使用することなどを含むが、これらに限定されないいくつかの方法で実行することができる。ユーザは、ステップ１０４６で、測定ロジックのインストールに備えて、自分のクライアント・ファイル・システム上のディレクトリにアクセスする。ユーザは、ステップ１０２０で、クライアント・コンピュータにロジックをインストールするプログラムを実行し、ステップ１０２２で、配備プロセスを終了する。
【０１３８】
照会１０４０（図２９）に戻り、ロジックがユーザのディレクトリに直接送信されない場合、ステップ１０５０で処理が終了する。
【０１３９】
ロジックを配備する一実施形態が提供されるが、本発明の精神を逸脱せずに多くの変形例が可能である。
【０１４０】
顧客環境の管理を提供するサービス・プロバイダにより、本発明の１つまたは複数の態様の提供、提案、配備、管理、処理などを行うことができる。たとえば、サービス・プロバイダは、１人または複数の顧客のために本発明の１つまたは複数の態様を実行するコンピュータ・コードまたはコンピュータ・インフラストラクチャあるいはその両方の作成、維持、サポートなどを行うことができる。それと引き替えに、サービス・プロバイダは、例として、加入契約または料金契約あるいはその両方に基づいて顧客から支払を受けることができる。さらにまたは代わって、サービス・プロバイダは、１つまたは複数のサード・パーティへの広告内容の販売により支払を受けることができる。
【０１４１】
本発明の一態様では、上述の通り、本発明の１つまたは複数の態様を実行するためのアプリケーションを配備することができる。一例として、アプリケーションを配備することは、本発明の１つまたは複数の態様を実行するために動作可能なコンピュータ・インフラストラクチャを提供することを含む。
【０１４２】
本発明の他の一態様として、コンピュータ可読コードをコンピューティング・システムに統合することを含む、コンピューティング・インフラストラクチャを配備することができ、そのコードはコンピューティング・システムと組み合わせて本発明の１つまたは複数の態様を実行することができる。
【０１４３】
本発明のさらに他の一態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含む、コンピューティング・インフラストラクチャを統合するためのプロセスを提供することができる。このコンピュータ・システムはコンピュータ使用可能媒体を含み、そのコンピュータ使用可能媒体は本発明の１つまたは複数の態様を含む。そのコードはコンピュータ・システムと組み合わせて本発明の１つまたは複数の態様を実行することができる。
【０１４４】
本発明の１つまたは複数の態様は、たとえば、コンピュータ使用可能媒体を有する装置（article of manufacture）（たとえば、１つまたは複数のコンピュータ・プログラム）に含めることができる。この媒体は、たとえば、本発明の諸機能を提供し促進するためのコンピュータ可読プログラム・コード手段またはロジック（たとえば、命令、コード、コマンドなど）をそこに有する。この装置は、コンピュータ・システムの一部として含めるか、または別個に販売することができる。
【０１４５】
図３１に関連して、本発明の１つまたは複数の態様を取り入れた装置またはコンピュータ・プログラムの一例について説明する。コンピュータ・プログラム１１００は、たとえば、本発明の１つまたは複数の態様を提供し促進するためのコンピュータ可読プログラム・コード手段またはロジック１１０４をそこに保管するための１つまたは複数のコンピュータ使用可能媒体１１０２を含む。この媒体は、電子、磁気、光学、電磁、赤外線、または半導体のシステム（あるいは装置またはデバイス）もしくは伝搬媒体にすることができる。コンピュータ可読媒体の例としては、半導体またはソリッド・ステート・メモリ、磁気テープ、取り外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、剛性磁気ディスク、および光ディスクを含む。光ディスクの例としては、コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、書き換え可能コンパクト・ディスク（ＣＤ−Ｒ／Ｗ）、およびＤＶＤを含む。
【０１４６】
１つまたは複数のコンピュータ可読プログラム・コード手段またはロジックによって定義された１つまたは複数の相関モジュールの論理アセンブリあるいは一連のプログラム命令は、本発明の１つまたは複数の態様の実行を指示するものである。
【０１４７】
有利なことに、本発明の１つまたは複数の態様の測定機能は、仮想環境の複数のゲストによって同時に使用可能である。それぞれのゲストは、その機能がそのゲストについて使用可能であるかどうかを制御する。測定機能は、仮想環境内の論理プロセッサのサブセットまたはすべての論理プロセッサ上で使用可能にすることができる。ゲストのデータの整合性を保護するために、制御は個別に維持される。
【０１４８】
有利なことに、本発明の１つまたは複数の態様の測定機能は、測定が実行されるたびに割り込みを必要とするわけではない。その代わりに、マークされたサンプル・データ・ブロックがほぼ一杯である（たとえば、次のデータ項目を保管するための十分なスペースがない）と判断されたときまたは所望の時間にのみ、割り込みが実行される。割り込みの回数を低減することにより、システム・パフォーマンスが強化される。さらに、バッファを解放することにより、同じバッファが繰り返し使用され、したがって、必要なバッファ・スペースの量が減少する。
【０１４９】
様々な実施形態が上述されているが、これらは例に過ぎない。たとえば、様々な命令が本明細書に記載されているが、本発明の１つまたは複数の態様は、コマンド、関数など、命令以外のものを使用することができる。さらに、命令のフォーマットは、種々のフィールド、種々のサイズ・フィールド、種々の位置決めなど、それぞれ異なる可能性がある。さらに、本明細書に記載されているエンティティ（たとえば、要求ブロック、項目のフィールド、情報ブロック）の情報は、種々の情報を有することができ、フィールドのサイズならびに位置決めもそれぞれ異なる可能性がある。予約フィールドまたはゼロを含むフィールドは、エンティティから除去されている可能性がある。その上、エンティティ内の情報の一部は、本発明の１つまたは複数の態様のために使用されないかまたは必要ではない場合もある。多くの他の変形例が可能である。
【０１５０】
処理環境の一例が本明細書に示されているが、これは一例に過ぎない。処理環境の多くの他の例は、本発明の１つまたは複数の態様を取り入れて使用することができる。たとえば、処理環境は１つまたは複数のゲストをサポートする１つのＣＰＵのみを有する場合がある。他の一例では、処理環境は本明細書に記載したものとは異なる制御プログラムを実行している場合もある。さらに、処理環境は、インターナショナル・ビジネス・マシーンズ社によって提供されるｚ／ＶＭ（Ｒ）などの仮想計算機を実行している場合もある（ｚ／ＶＭ（Ｒ）はインターナショナル・ビジネス・マシーンズ社の登録商標である）。一例では、ＶＭが論理区画内で実行されているときに、ＶＭがゲストに関するサンプル・データを収集している場合、ＶＭはホスト・インジケータを１に設定することになる。これにより、論理区画レベルで設定されたプログラム・パラメータ・レジスタの内容がＶＭサンプル・データ・ブロック内のデータ項目のホスト・プログラム・パラメータ・フィールドに保管され、仮想計算機レベルで設定されたプログラム・パラメータ・レジスタの内容がＶＭサンプル・データ・ブロック内のデータ項目のゲスト・プログラム・パラメータ・フィールドに保管されるであろう。この場合、仮想計算機レベルで設定されたプログラム・パラメータ・レジスタの内容はゲストによって設定され、タスクＩＤを指定することができ、論理区画レベルで設定されたプログラム・パラメータ・レジスタの内容はＶＭによって設定され、ゲストＩＤを指定することができる。これらの２つの組み合わせにより、サンプル・データに寄与したゲスト・タスクを明確に識別する。多くの他の変形例も可能である。
【０１５１】
さらに、他のタイプのコンピューティング環境は本発明の１つまたは複数の態様から恩恵を受けることができる。一例として、ある環境はエミュレータ（たとえば、ソフトウェアまたはその他のエミュレーション・メカニズム）を含むことができ、そこで特定のアーキテクチャ（たとえば、命令実行、アドレス変換などの構築された機能、構築されたレジスタを含む）またはそのサブセットが（たとえば、プロセッサおよびメモリを有するネイティブ・コンピュータ・システム上で）エミュレートされる。このような環境では、エミュレータを実行しているコンピュータがエミュレート中の機能とは異なるアーキテクチャを有する可能性があっても、エミュレータの１つまたは複数のエミュレーション機能は本発明の１つまたは複数の態様を実現することができる。一例として、エミュレーション・モードでは、エミュレート中の特定の命令または操作がデコードされ、個々の命令または操作を実現するために適切なエミュレーション機能が構築される。
【０１５２】
エミュレーション環境では、ホスト・コンピュータは、たとえば、命令およびデータを保管するためのメモリと、メモリから命令を取り出し、任意選択で取り出した命令についてローカル・バッファリングを行うための命令取り出しユニットと、命令取り出しユニットを受け入れ、取り出された命令のタイプを決定するための命令デコード・ユニットと、命令を実行するための命令実行ユニットとを含む。実行は、メモリ用のレジスタにデータをロードすること、レジスタからメモリにデータを戻すこと、あるいはデコード・ユニットによって決定されたように何らかのタイプの算術演算または論理演算を実行することを含むことができる。一例では、それぞれのユニットはソフトウェアで実現される。たとえば、各ユニットによって実行される操作は、エミュレータ・ソフトウェア内の１つまたは複数のサブルーチンとして実現される。
【０１５３】
さらに、プログラム・コードの保管または実行あるいはその両方に適したデータ処理システムであって、直接またはシステム・バスを介して間接的にメモリ・エレメントに結合された少なくとも１つのプロセッサを含むものが使用可能である。メモリ・エレメントは、たとえば、プログラム・コードの実際の実行中に使用されるローカル・メモリ、大容量記憶装置、ならびに、実行中にコードを大容量記憶装置から取り出さなければならない回数を削減するために少なくとも何らかのプログラム・コードの一時記憶を行うキャッシュ・メモリを含む。
【０１５４】
入出力またはＩ／Ｏ装置（キーボード、ディスプレイ、ポインティング・デバイス、ＤＡＳＤ、テープ、ＣＤ、ＤＶＤ、サム・ドライブ、およびその他の記憶媒体などを含むが、これらに限定されない）は、直接または介在するＩ／Ｏコントローラを介してシステムに結合することができる。データ処理システムが介在する私設網または公衆網を介して他のデータ処理システムまたはリモート・プリンタあるいは記憶装置に結合された状態になれるようにするために、ネットワーク・アダプタもシステムに結合することができる。モデム、ケーブル・モデム、およびイーサネット・カードは、使用可能なタイプのネットワーク・アダプタのうちのいくつかに過ぎない。
【０１５５】
本発明の１つまたは複数の態様の諸機能は、ソフトウェア、ファームウェア、ハードウェア、またはこれらの何らかの組み合わせで実現することができる。本発明の諸機能を実行するためにマシンによって実行可能な複数命令からなる少なくとも１つのプログラムを実施するマシンによって読み取り可能な少なくとも１つのプログラム記憶装置を提供することができる。
【０１５６】
本明細書に描写されている流れ図は例に過ぎない。本発明の精神を逸脱せずに、これらの流れ図またはそこに記載されているステップ（または操作）に対する多くの変形例が可能である。たとえば、これらのステップを異なる順序で実行するか、ステップを追加、削除、または変更することができる。これらの変形例はいずれも、請求された本発明の一部と見なされる。
【０１５７】
本明細書で使用する「入手する（obtaining）」という用語は、受信すること、提供されること、取り出すこと、決定すること、アクセスすることなどを含むが、これらに限定されない。
【０１５８】
諸実施形態が本明細書に詳細に描写され記載されているが、本発明の精神を逸脱せずに、様々な変更、追加、置き換えなどが可能であることは当業者には明らかになることであり、したがって、これらは特許請求の範囲に定義された本発明の範囲内のものであると見なされる。
【符号の説明】
【０１５９】
１００  処理環境
１０２  中央演算処理装置複合システム（ＣＰＣ）
１０４  論理区画（ＬＰ）
１０６  中央処理装置
１０８  ハイパーバイザ
１１０  オペレーティング・システム（ＯＳ）
１１２  論理プロセッサ
１１４  測定機能
【図１】
2010086520.tif 000009
【図２】
2010086520.tif 000010
【図３】
2010086520.tif 000011
【図４】
2010086520.tif 000012
【図５】
2010086520.tif 000013
【図６】
2010086520.tif 000014
【図７】
2010086520.tif 000015
【図８】
2010086520.tif 000016
【図９】
2010086520.tif 000017
【図１０】
2010086520.tif 000018
【図１１】
2010086520.tif 000019
【図１２】
2010086520.tif 000020
【図１３】
2010086520.tif 000021
【図１４】
2010086520.tif 000022
【図１５】
2010086520.tif 000023
【図１６】
2010086520.tif 000024
【図１７】
2010086520.tif 000025
【図１８】
2010086520.tif 000026
【図１９】
2010086520.tif 000027
【図２０】
2010086520.tif 000028
【図２１】
2010086520.tif 000029
【図２２】
2010086520.tif 000030
【図２３】
2010086520.tif 000031
【図２４】
2010086520.tif 000032
【図２５】
2010086520.tif 000033
【図２６】
2010086520.tif 000034
【図２７】
2010086520.tif 000035
【図２８】
2010086520.tif 000036
【図２９】
2010086520.tif 000037
【図３０】
2010086520.tif 000038
【図３１】
2010086520.tif 000039