(57)【特許請求の範囲】
【請求項１】
装置であって、
プロセッサと、
前記装置のパフォーマンス監視情報を記録する複数のカウンタと、前記複数のカウンタのうちの１以上のカウンタのそれぞれに対応し、かつ、前記１以上のカウンタのそれぞれを制御するための、前記１以上のカウンタの数に対応する数のカウンタイネーブルビットまたはフィールドと、前記１以上のカウンタの数に対応する数のカウンタイネーブルビットまたはフィールドのサブセットのそれぞれに対応し、かつ、前記１以上のカウンタの数に対応する数のカウンタイネーブルビットまたはフィールドのサブセットのそれぞれを制御するための１以上の追加イネーブルインジケータと、カウンタ毎に１ビットを持つ、カウンタイネーブルベクトルを格納するためのフィールドとを格納するカウンタイネーブル格納位置であって、前記追加イネーブルインジケータは、前記カウンタイネーブルベクトルをイネーブルまたはディセーブルするために使用される追加ビットを含み、前記カウンタイネーブルベクトルは、前記複数のカウンタを個別に制御するために使用され、前記追加ビットは、前記複数のカウンタの個別制御をディセーブルするために使用される、カウンタイネーブル格納位置と、
前記複数のカウンタのうちのカウンタを、前記１以上のカウンタの数に対応する数のカウンタイネーブルビットまたはフィールドの第１のサブセットのうちの当該カウンタに対応するカウンタイネーブルビットまたはフィールドが個別のイネーブル値に設定され、かつ、前記１以上の追加イネーブルインジケータのうちの前記第１のサブセットに対応する追加イネーブルインジケータが個別のイネーブル値に設定されたことに応じて、イネーブルさせ、当該カウンタを、当該カウンタに対応するカウンタイネーブルビットまたはフィールドと、前記追加イネーブルインジケータとの少なくとも１つのディセーブル値への設定に応じて、ディセーブルさせる、カウンタイネーブルロジックユニットと、
前記装置が有するホストから前記装置が有するゲストへ前記プロセッサの制御を移行する第１制御ロジックと、前記ゲストから前記ホストへ前記プロセッサの制御を移行させる第２制御ロジックとを有する制御ロジックユニットと
を備え、
前記第１制御ロジックは、前記ホストから前記ゲストへの制御の移行に応じて前記カウンタイネーブル格納位置に前記ゲストの状態を示すゲスト値をロードさせるゲスト状態ロードロジックを含み、
前記第２制御ロジックは、前記ゲストから前記ホストへの制御の移行に応じて前記カウンタイネーブル格納位置に前記ホストの状態を示すホスト値をロードさせるホスト状態ロードロジックを含む、装置。
【請求項２】
前記ゲスト値が前記カウンタイネーブル格納位置にロードされている場合に、前記ゲストが実行されている間に発生するイベントのカウントがイネーブルされる、請求項１に記載の装置。
【請求項３】
前記複数のカウンタは、選択されたイベントをカウントする複数のパフォーマンスカウンタを備える、請求項１または２に記載の装置。
【請求項４】
前記選択されたイベントは、分岐予測ミス、キャッシュヒット、キャッシュミス、変換索引バッファヒットまたは変換索引バッファミスを含む、請求項３に記載の装置。
【請求項５】
コンピュータに、
前記コンピュータのパフォーマンス監視情報を記録する複数のカウンタのうちのカウンタを、カウンタイネーブル格納位置に格納され、当該カウンタに対応するカウンタイネーブルビットまたはフィールドが、個別のイネーブル値に設定され、かつ、前記カウンタイネーブル格納位置に格納され、前記カウンタイネーブルビットまたはフィールドを有するカウンタイネーブルビットまたはフィールドのサブセットに対応する追加イネーブルインジケータが、個別のイネーブル値に設定されたことに応じて、イネーブルさせる手順であって、前記カウンタイネーブル格納位置は、カウンタ毎に１ビットを持つ、カウンタイネーブルベクトルを格納するためのフィールドを含み、前記追加イネーブルインジケータは、前記カウンタイネーブルベクトルをイネーブルまたはディセーブルするために使用される追加ビットを含み、前記カウンタイネーブルベクトルは、前記複数のカウンタを個別に制御するために使用され、前記追加ビットは、前記複数のカウンタの個別制御をディセーブルするために使用される、手順、
前記複数のカウンタのうちの前記カウンタを、当該カウンタに対応する前記カウンタイネーブルビットまたはフィールドと、前記追加イネーブルインジケータとの少なくとも１つのディセーブル値への設定に応じて、ディセーブルさせる手順、
前記コンピュータが有するホストから前記コンピュータが有するゲストへ制御を移行する手順、
前記ホストから前記ゲストへの制御の移行に応じて前記カウンタイネーブル格納位置に前記ゲストの状態を示すゲスト値をロードさせる手順、
前記ゲストから前記ホストへ制御を移行する手順、
前記ゲストから前記ホストへの制御の移行に応じて前記カウンタイネーブル格納位置に前記ホストの状態を示すホスト値をロードさせる手順
を実行させるためのプログラム。
【請求項６】
前記コンピュータに、前記カウンタイネーブル格納位置に前記ゲスト値をロードさせる手順の後に、前記ゲストが実行されている間に発生するイベントのカウントをイネーブルする手順をさらに実行させる、請求項５に記載のプログラム。
【請求項７】
前記複数のカウンタは、選択されたイベントをカウントする複数のパフォーマンスカウンタを備える、請求項５または６に記載のプログラム。
【請求項８】
前記選択されたイベントは、分岐予測ミス、キャッシュヒット、キャッシュミス、変換索引バッファヒットまたは変換索引バッファミスを含む、請求項７に記載のプログラム。
【請求項９】
装置が備えるカウンタイネーブルロジックユニットが、前記装置のパフォーマンス監視情報を記録する複数のカウンタのうちのカウンタを、カウンタイネーブル格納位置に格納され、当該カウンタに対応するカウンタイネーブルビットまたはフィールドが、個別のイネーブル値に設定され、かつ、前記カウンタイネーブル格納位置に格納され、前記カウンタイネーブルビットまたはフィールドを有するカウンタイネーブルビットまたはフィールドのサブセットに対応する追加イネーブルインジケータが、個別のイネーブル値に設定されたことに応じて、イネーブルさせることであって、前記カウンタイネーブル格納位置は、カウンタ毎に１ビットを持つ、カウンタイネーブルベクトルを格納するためのフィールドを含み、前記追加イネーブルインジケータは、前記カウンタイネーブルベクトルをイネーブルまたはディセーブルするために使用される追加ビットを含み、前記カウンタイネーブルベクトルは、前記複数のカウンタを個別に制御するために使用され、前記追加ビットは、前記複数のカウンタの個別制御をディセーブルするために使用される、ことと、
前記カウンタイネーブルロジックユニットが、前記複数のカウンタのうちの前記カウンタを、当該カウンタに対応するカウンタイネーブルビットまたはフィールドと、前記追加イネーブルインジケータとの少なくとも１つのディセーブル値への設定に応じて、ディセーブルさせることと、
前記装置が有する第１制御ロジックが、前記装置が有するホストから前記装置が有するゲストへ制御を移行することと、
前記第１制御ロジックが、前記ホストから前記ゲストへの制御の移行に応じて前記カウンタイネーブル格納位置に前記ゲストの状態を示すゲスト値をロードさせることと、
前記装置が備える第２制御ロジックが、前記ゲストから前記ホストへ制御を移行することと、
前記第２制御ロジックが、前記ゲストから前記ホストへの制御の移行に応じて前記カウンタイネーブル格納位置に前記ホストの状態を示すホスト値をロードさせることと
を備える方法。
【請求項１０】
前記カウンタイネーブル格納位置に前記ゲスト値をロードさせることの後に、前記ゲストが実行されている間に発生するイベントのカウントをイネーブルすることをさらに備える、請求項９に記載の方法。
【請求項１１】
前記複数のカウンタは、選択されたイベントをカウントする複数のパフォーマンスカウンタを備え、
前記選択されたイベントは、分岐予測ミス、キャッシュヒット、キャッシュミス、変換索引バッファヒットまたは変換索引バッファミスを含む、請求項９または１０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示内容は、情報処理分野に関し、特に仮想化環境におけるパフォーマンスカウンタの利用に関する。
【背景技術】
【０００２】
一般的に、情報処理システムにおける仮想化の概念によって、各ＯＳは単一の情報処理システムおよび当該システムのリソースに対して全体的且つ直接的な制御を行うように設計されているにもかかわらず、当該情報処理システムにおいて１以上のオペレーティングシステム（ＯＳ）の複数のインスタンスを実行することが可能となる。仮想化は通常、ソフトウェア（例えば、仮想マシンモニタ（ＶＭＭ））を用いて実装され、仮想リソースを持つ「仮想マシン（ＶＭ）」を各ＯＳに対して提示する。仮想リソースは、例えば１以上の仮想プロセッサ等であり、各ＯＳによって全体的且つ直接的に制御するとしてもよい。ここで、ＶＭＭは、ＶＭ間での共有化および／または物理リソースの割り当て等、仮想化ポリシーを実装するべくシステム環境を維持する（「仮想化環境」）。ＶＭで実行される各ＯＳおよびその他のソフトウェアを「ゲスト」または「ゲストソフトウェア」とよび、仮想化環境の外で実行されるＶＭＭのようなソフトウェアを「ホスト」または「ホストソフトウェア」と呼ぶ。
【０００３】
情報処理システムに含まれる物理プロセッサは、例えば、ＶＭにおける仮想プロセッサ（つまり、ＶＭＭによって制限された物理プロセッサ）でゲストを実行するべく、仮想化環境を開始させる命令をサポートすることによって仮想化をサポートし得る。仮想化環境において、外部割込みまたは特権レジスタまたはリソースへのアクセス試み等のあるイベント、処理および状況がインターセプト（ｉｎｔｅｒｃｅｐｔ）される場合がある。つまり、あるイベント、処理および状況によってプロセッサが仮想化環境を離脱して、ＶＭＭは例えば仮想化ポリシーを実施するべく動作する。物理プロセッサはまた、仮想化環境を維持するほかの命令をサポートするとしてもよく、物理プロセッサの仮想化能力を指定または制御するメモリまたはレジスタビットを有するとしてもよい。
【０００４】
仮想化環境をサポートする物理プロセッサは、パフォーマンス監視情報を記録するためのパフォーマンスカウンタを有するとしてもよい。各パフォーマンスカウンタは通常、当該カウンタに対応付けられる、１以上の制御または構成レジスタ、もしくは１以上の制御または構成レジスタの一部によって制御され得る。これらのパフォーマンスカウンタを仮想化するためには、ゲストとホスト間または２つのゲスト間で移行を実施する度に通常、カウンタすべておよび当該カウンタに対応付けられている制御レジスタの状態を保存して、カウンタすべておよび当該カウンタに対応付けられている制御レジスタについて新しい状態をロードする必要がある。
【図面の簡単な説明】
【０００５】
本発明は、添付図面に図示される例に基づいて説明するが、添付図面の内容は本発明を限定するものではない。
【０００６】
【図１】仮想化アーキテクチャにおける本発明の実施形態を示す図である。
【０００７】
【図２Ａ】パフォーマンスカウンタを仮想化する方法における本発明の実施形態を示す図である。
【図２Ｂ】パフォーマンスカウンタを仮想化する方法における本発明の実施形態を示す図である。
【０００８】
【図３】仮想化アーキテクチャにおける本発明の別の実施形態を示す図である。
【０００９】
【図４】パフォーマンスカウンタを仮想化する方法における本発明の別の実施形態を示す図である。
【発明を実施するための最良の形態】
【００１０】
パフォーマンスカウンタを仮想化するための装置、方法およびシステムの実施形態を以下で説明する。以下の説明では、本発明を十分に説明するべく、構成要素およびシステム構成等具体的且つ詳細な内容を数多く挙げるが、当業者であればそのような具体的且つ詳細な内容以外でも本発明を実施できることに想到するであろう。また、一部の公知の構造および回路等については、本発明が不必要に不明確となるのを避けるべく、詳細な説明を省略している。
【００１１】
仮想化環境のパフォーマンスは、ホスト−ゲスト間およびゲスト間での移行において保存およびロードされる必要がある状態情報の量を低減することによって、改善され得る。本発明の実施形態を用いることによって、カウンタおよび当該カウンタに対応付けられる制御レジスタの内容を保存およびロードすることなく、パフォーマンスカウンタまたはその他のカウンタを仮想化し得る。このため、カウンタおよび当該カウンタに対応付けられる制御レジスタの内容が移行において保存される仮想化環境に比べて、パフォーマンスを向上させることができる。本発明の実施形態によれば、ホストおよびゲストの数に関わらずパフォーマンスカウンタを効率よくイネーブルまたはディセーブルすることが可能となり、ホストまたはゲストの専用使用に対してパフォーマンスカウンタを割り当てることが可能となり、ホストおよび／またはゲストの間でその数に関わらずパフォーマンスカウンタを共有化することが可能となる。
【００１２】
図１は、仮想化アーキテクチャ１００における本発明の実施形態を示す図である。図１において、ベアプラットフォームハードウェア１１０は、任意のＯＳまたはＶＭＭソフトウェアを実行できるデータ処理装置であればどのようなものであってもよい。例えば、ベアプラットフォームハードウェアは、パーソナルコンピュータ、メインフレームコンピュータ、ポータブルコンピュータ、ハンドヘルドデバイス、セットトップボックス、サーバ等の演算システムに含まれるものであってよい。ベアプラットフォームハードウェア１１０は、プロセッサ１２０およびメモリ１３０を有する。
【００１３】
プロセッサ１２０はどのような種類のプロセッサであってもよく、汎用マイクロプロセッサであってもよく、例えば、Ｉｎｔｅｌ（登録商標）Ｃｏｒｐｏｒａｔｉｏｎ社のＩｎｔｅｌ（登録商標）Ｐｅｎｔｉｕｍ（登録商標）プロセッサファミリー、Ｉｔａｎｉｕｍ（登録商標）プロセッサファミリー、またはその他のプロセッサファミリーに属するプロセッサ、または別の会社製の別のプロセッサ、またはデジタルシグナルプロセッサ、またはマイクロコントローラであってもよい。図１に示すプロセッサ１２０は１つのみであるが、ベアプラットフォームハードウェア１１０が有するプロセッサの数は任意であるとしてもよく、それぞれが任意の数の実行コアを含む任意の数のマルチコアプロセッサを含み、それぞれが任意の数のスレッドを含む任意の数のマルチスレッドプロセッサを含むとしてもよい。
【００１４】
メモリ１３０は、スタティックランダムアクセスメモリまたはダイナミックランダムアクセスメモリ、半導体ベースのリードオンリーメモリまたはフラッシュメモリ、磁気または光学ディスクメモリ、プロセッサ１２０が読み出し可能なその他の種類の媒体、またはこのような媒体の組み合わせであってよい。プロセッサ１２０およびメモリ１３０は、任意の公知の方法に従って互いに接続または通信させられるとしてよく、該方法としては、１以上のバスを介して直接的または間接的に接続または通信させる方法、ポイント・ツー・ポイント方式、またはその他の有線接続方法または無線接続方法がある。ベアプラットフォームハードウェア１１０には、任意の数のデバイスまたは接続を追加するとしてもよい。
【００１５】
図１では、ベアプラットフォームハードウェア１００に加え、ＶＭＭ１４０、ＶＭ１５０および１６０、ゲストオペレーティングシステム１５２および１６２、ならびにアプリケーション１５４、１５５、１６４および１６５が図示されている。
【００１６】
ＶＭＭ１４０は、ゲストに対してＶＭ、つまりベアプラットフォームハードウェア１１０の抽象化を提示するべく、またはＶＭを形成および管理して仮想化ポリシーを実装するべく、ベアプラットフォームハードウェア１１０にインストールされているか、またはベアプラットフォームハードウェア１１０にアクセス可能な任意のソフトウェア、ファームウェアまたはハードウェアのホストであってもよい。ほかの実施形態によると、ホストは、任意のＶＭＭ、ハイパバイザ、ＯＳ、またはベアプラットフォームハードウェア１１０を制御できるその他のソフトウェア、ファームウェアまたはハードウェアであってよい。ゲストは、任意のＯＳ、ＶＭＭ１４０の別のインスタンスを含む任意のＶＭＭ、任意のハイパバイザ、または任意のアプリケーションもしくは別のソフトウェアであってよい。
【００１７】
各ゲストは、ＶＭにおいて提示されるプロセッサおよびプラットフォームのアーキテクチャに応じて、ベアプラットフォームハードウェア１１０の物理リソース、例えばプロセッサおよびプラットフォームレジスタ、メモリおよび入出力デバイスに対して、アクセスするものと考えられる。図１では２つのＶＭ１５０および１６０が図示されており、ＶＭ１５０にはゲストＯＳ１５２ならびにゲストアプリケーション１５４および１５５がインストールされ、ＶＭ１６０にはゲストＯＳ１６２ならびにゲストアプリケーション１６４および１６５がインストールされている。図１に図示されているＶＭは２つのみでＶＭ毎のアプリケーションも２つのみであるが、本発明の範囲内では、形成されるＶＭの数はいくつであってもよく、各ＶＭにおいて実行されるアプリケーションの数もいくつであってもよい。
【００１８】
ゲストがアクセス可能なリソースは、「特権」リソースまたは「非特権」リソースに分類され得る。特権リソースの場合は、ＶＭＭ１４０は、当該リソースに対する最終制御を保持しつつ、ゲストが所望する機能を提供する。非特権リソースの場合は、ＶＭＭ１４０による制御を受ける必要はなくゲストが直接アクセスし得る。
【００１９】
また、各ゲストＯＳは、例外（例えば、ページフォールトおよび一般保護違反）、割り込み（例えば、ハードウェア割り込みおよびソフトウェア割り込み）、およびプラットフォームイベント（例えば、初期化およびシステム管理割り込み）等、さまざまなイベントを処理するものと考えられる。このような例外、割り込みおよびプラットフォームイベントは、本明細書において、「仮想化イベント」と総合的または個別に呼称される。このような仮想化イベントの一部は、ＶＭ１５０および１６０を適切に動作させ、ゲストからＶＭＭ１４０を保護し、およびお互いから各ゲストを保護するべく、ＶＭＭ１４０が処理する必要があるので、「特権イベント」と呼ばれる。
【００２０】
任意の時点において、プロセッサ１２０がＶＭＭ１４０または任意のゲストからの命令を実行しているとすると、ＶＭＭ１４０または当該ゲストは、プロセッサ１２０上で実行されているか、プロセッサ１２０を制御し得る。特権イベントが発生するか、またはゲストが特権リソースへのアクセスを試みると、制御がゲストからＶＭＭ１４０に移行され得る。ゲストからＶＭＭ１４０への制御の移行を、本明細書では、「ＶＭエグジット（ｅｘｉｔ）」と呼ぶ。イベントの処理またはリソースへのアクセスの提供が適切に終了すると、ＶＭＭ１４０は制御をゲストに戻すとしてもよい。ＶＭＭ１４０からゲストへの制御の移行を、本明細書では、「ＶＭエントリ（ｅｎｔｒｙ）」と呼ぶ。
【００２１】
図１に示す実施形態によると、プロセッサ１２０は、仮想マシン制御構造（ＶＭＣＳ）１３２に格納されているデータに従ってＶＭ１５０および１６０の動作を制御する。ＶＭＣＳ１３２は、１または複数のゲストの状態、ＶＭＭ１４０の状態、ＶＭＭ１４０がどのように１または複数のゲストの動作を制御するかを示す実行管理情報、ＶＭの終了および開始に関する情報、およびその他の任意の情報を含み得る構造である。プロセッサ１２０は、ＶＭＣＳ１３２から情報を読み出して、ＶＭの実行環境を決定して当該ＶＭの行動を制限する。本実施形態において、ＶＭＣＳ１３２はメモリ１３０に格納されている。一部の実施形態によると、複数のＶＭをサポートするべく複数のＶＭＣＳを利用する。図１ではＶＭＣＳ１３２がメモリ１３０に格納される構成を示しているが、メモリ内にＶＭＣＳを格納する構成は本発明において必須ではない。
【００２２】
プロセッサ１２０はカウンタ１７１、１７３、１７５および１７７を含む。本実施形態によると、カウンタ１７１、１７３、１７５および１７７は、プロセッサ１２０で実行されるソフトウェアによってプログラミングされてパフォーマンス監視情報を記録するパフォーマンスカウンタである。しかし、他の実施形態では、任意の数のカウンタおよび／または任意の種類およびサイズのカウンタを含むとしてよい。例えば、パフォーマンスカウンタ１７１、１７３、１７５または１７７のいずれかが、選択されるイベントの発生毎にインクリメントするべく、または選択されるイベント中の各クロックサイクル毎にインクリメントするべく、プログラミングされるとしてもよい。イベントは、プロセッサ１２０上でのプログラムコードの実行に関する多岐にわたるイベントのいずれを含むとしてもよい。そのようなイベントには、分岐予測ミス、キャッシュヒット、キャッシュミス、変換索引バッファヒット、変換索引バッファミス等がある。このため、パフォーマンスカウンタ１７１、１７３、１７５および１７７に基づいて、プロセッサ１２０において可能な限り最高のパフォーマンスを実現するようにプログラムコードを調整または設計するとしてもよい。
【００２３】
プロセッサ１２０はさらに、カウンタ１７１、１７３、１７５および１７７にそれぞれ対応する、カウンタ制御格納位置１７２、１７４、１７６および１７８を含む。カウンタ制御格納位置１７２、１７４、１７６および１７８は、任意のサイズのレジスタまたはその他の構造、もしくは１以上のレジスタまたはその他の構造の一部分であってよく、カウンタ１７１、１７３、１７５および１７７をそれぞれ制御または構成する情報を格納し得る。カウンタ制御格納位置１７２、１７４、１７６および１７８は、カウンタ１７１、１７３、１７５および１７７をそれぞれ制御または構成する情報を格納するようにプログラミングされるとしてもよい。当該情報は例えば、カウンタをイネーブルする情報、カウント対象のイベントを選択する情報、カウント方法を選択する情報（例えば、発生回数またはイベント持続時間）、カウント条件を選択する情報（例えば、イベントが検出された場合のソフトウェア実行の特権レベルに基づく）、およびその他の制御変数、構成変数またはその他の変数を設定するための情報である。
【００２４】
プロセッサ１２０はさらに、総合カウンタイネーブル格納位置１２１を含む。総合カウンタイネーブル格納位置１２１は、制御レジスタ、構成レジスタ、モデル依存レジスタ、または総合カウンタイネーブルインジケータを格納するその他の格納位置内の１以上のビットであってもよい。一実施形態によると、総合カウンタイネーブル格納位置１２１はプログラム可能レジスタの１ビットであって、当該ビットが論理値「１」に設定されると総合カウンタイネーブルインジケータが「イネーブル」値に設定され、論理値「０」に設定されると総合カウンタイネーブルインジケータが「ディセーブル」値に設定される。
【００２５】
別の実施形態によると、総合カウンタイネーブル格納位置は、パフォーマンスカウンタ毎に１ビットを持ち、各ビットが論理値「１」に設定されると、対応するパフォーマンスカウンタ用の個別カウンタイネーブルインジケータが「イネーブル」値に設定されるとしてもよい。その他の実施形態によると、総合カウンタイネーブル格納位置の単一のビットまたはフィールドは、任意の数のパフォーマンスカウンタを含む群に対応するとしてもよい。このような実施形態ではいずれの場合も、総合イネーブル格納位置は、任意の数のパフォーマンスカウンタに対応する任意の数のビットまたはフィールドを含むとしてよく、より直接的にパフォーマンスカウンタを制御する任意の数のビットまたはフィールドを制御するべく利用され得る１以上の追加イネーブルインジケータをさらに含むとしてもよいし、またはそのような追加イネーブルインジケータに対応付けられるとしてもよい。例えば、格納位置は、「カウンタイネーブルベクトル」を格納するためのフィールドを含むとしてもよい。当該フィールドはカウンタ毎に１ビットを持つ。この格納位置の内部またはプロセッサ１２０または仮想化アーキテクチャ１００における別の格納位置またはデータ構造に設けられる追加ビットを用いて、当該カウンタイネーブルベクトルをイネーブルまたはディセーブルするとしてもよい。このようにすることで、ＶＭＣＳに格納されているカウンタイネーブルベクトルに応じて、各カウンタをゲストが個別に制御するとしてもよいが、追加ビットのデフォルト値は、カウンタイネーブルベクトルモデルをサポートしないプロセッサ用に設計されているＶＭＭまたはその他のホストソフトウェアを実行する場合には個別カウンタ制御が自動的にディセーブルされるように設定されるとしてもよい。
【００２６】
総合カウンタイネーブルインジケータの値は、カウンタ制御格納位置１７２、１７４、１７６および１７８に格納されているほかの関連情報と共に、カウンタ１７１、１７３、１７５および１７７の動作を制御するべくカウンタイネーブルロジック１７０によって使用される。総合カウンタイネーブルインジケータが「イネーブル」値に設定されている場合には、各カウンタは個別制御および構成情報に応じて動作する。例えば、カウンタ１７１はキャッシュヒットに応じてインクリメントされるとしてもよい。これは、カウンタ制御格納位置１７２の内容に、「イネーブル」値に設定された個別カウンタイネーブルビットおよびキャッシュヒットをカウントするように設定されたイベント選択フィールドが含まれているためである。一方、カウンタ１７３はインクリメントされないとしてもよい。これは、カウンタ制御格納位置１７４の内容には「ディセーブル」値に設定されている個別カウンタイネーブルビットが含まれているためである。しかし、総合カウンタイネーブルインジケータが「ディセーブル」値に設定されている場合には、すべてのカウンタ１７１、１７３、１７５および１７７がディセーブルされ、それぞれの個別制御および構成情報に応じては動作しない。カウンタ１７１を例に挙げて説明すると、カウンタ制御格納位置１７２の内容に、「イネーブル」値に設定されている個別カウンタイネーブルビットおよびキャッシュヒットをカウントするように設定されているイベント選択フィールドが含まれているとしても、キャッシュヒットに応じてインクリメントされない。
【００２７】
また、プロセッサ１２０は、カウンタ１７１、１７３、１７５および１７７の仮想化を含む仮想化をサポートするべく、制御ロジック１８０を含む。制御ロジック１８０は、プロセッサ１２０に含まれるマイクロコード、プログラム可能ロジック、ハードコードロジック、またはその他の形式の制御ロジックであってよい。他の実施形態によると、制御ロジック１８０は、プロセッサ、またはメモリ１３０のように、プロセッサがアクセス可能な素子または読み出し可能な媒体において、プロセッサ抽象化層のように、ハードウェア、ソフトウェアまたはファームウェアのうちどの形式で実装されるとしてもよい。
【００２８】
制御ロジック１８０は、本発明に係る方法の実施形態をプロセッサ１２０に実行させる。例えば、図２Ａおよび図２Ｂを参照しつつ以下で説明する方法の実施形態を実行させる。一例を挙げると、プロセッサ１２０に、例えば仮想化をサポートする１以上のマイクロ処理の実行を、ホストまたはゲストからの仮想化命令またはその他の命令に対する応答の中に含ませる。
【００２９】
制御ロジック１８０は、ホストからゲストへプロセッサ１２０の制御を移行させる（つまりＶＭエントリ）ＶＭエントリロジック１８１と、ゲストからホストへプロセッサ１２０の制御を移行させる（つまりＶＭエグジット）ＶＭエグジットロジック１８２とを含む。一部の実施形態によると、制御はさらに、ゲストからゲストへ、またはホストからホストへと移行されるとしてもよい。例えば、層状仮想化をサポートする実施形態では、プロセッサ１２０上のＶＭで実行されるソフトウェアはゲストであると同時にホストである（例えば、あるＶＭで実行されるＶＭＭは、当該ＶＭを制御するＶＭＭに対してゲストであり、自身が制御するＶＭで実行されるゲストに対してはホストである）。
【００３０】
制御ロジック１８０はさらに、ゲスト状態ロードロジック１８３、ホスト状態ロードロジック１８４、およびゲスト状態格納ロジック１８５を含む。ゲスト状態ロードロジック１８３は、ＶＭエントリに応じて、ＶＭＣＳ１３２からプロセッサ１２０にゲスト状態をロードする。ホスト状態ロードロジック１８４は、ＶＭエグジットに応じて、ＶＭＣＳ１３２からプロセッサ１２０に対してホスト状態をロードする。ゲスト状態格納ロジック１８５は、ＶＭエグジットに応じて、プロセッサ１２０からＶＭＣＳ１３２に対してゲスト状態を格納する。一部の実施形態によると、制御ロジック１８０はさらに、ゲスト状態ロードロジック１８３によるプロセッサ１２０へのゲスト状態のロードに先立って、ＶＭエントリに応じて、プロセッサ１２０からＶＭＣＳ１３２に対してホスト状態を格納するホスト状態格納ロジック１８６を含む。一部の実施形態によると、制御ロジック１８０は、入出力デバイスおよびメモリコントローラ等の、他のシステム構成要素に存在する状態をロードおよび格納するとしてもよい。
【００３１】
ＶＭＣＳ１３２は、仮想化をサポートするフィールド、制御ビットまたはその他のデータ構造を含むとしてもよい。これらのデータ構造は、制御ロジック１８０によってチェックまたは参照されて、ＶＭ環境をどのように管理するか決定するために利用され得る。例えば、ＶＭエントリに応じて、ゲスト状態格納位置１３７から総合カウンタイネーブル格納位置１２１にゲスト値をゲスト状態ロードロジック１８３がロードするように、ゲスト状態ロードイネーブルインジケータ１３３を設定するとしてもよく、ＶＭエグジットに応じて、ホスト状態格納位置１３８から総合カウンタイネーブル格納位置１２１にホスト値をホスト状態ロードロジック１８４がロードするようにホスト状態ロードイネーブルインジケータ１３４を設定するとしてもよく、ゲスト状態格納イネーブルインジケータ１３５は、ゲスト状態格納ロジック１８５が総合イネーブル格納位置１２１の内容をゲスト状態格納位置１３７に格納するように、設定されるとしてもよく、ホスト状態格納イネーブルインジケータ１３６は、ホスト状態格納ロジック１８６が総合イネーブル格納位置１２１の内容をホスト状態格納位置１３８に格納するように、設定されるとしてもよい。これらの処理はすべて以下で説明する。本実施形態の以下の説明では、インジケータは所望の効果をイネーブルまたは発生させるように設定される制御ビットであり、「設定」とはビットに論理値「１」を書き込むことを意味するが、本発明の範囲においてはどのような論理方式または論理用語を利用するとしてもよい。
【００３２】
本明細書で説明する機構に基づいて、ＶＭＭは、ゲストが実行されている間のみ、ＶＭＭが実行されている間のみ、またはＶＭＭおよびゲストが実行されている間に発生するイベントのカウントをイネーブルするとしてもよい。また、ＶＭＭは、ゲスト毎に、ゲストとＶＭＭとの間での移行（つまりＶＭエントリまたはＶＭエグジット）の一部として、パフォーマンスカウンタをイネーブルまたはディセーブルするとしてもよい。このような機構によって、ＶＭＭは、自身がパフォーマンスカウンタに及ぼす影響を、ゲストに対して「隠す」ことが可能となる。または、このような機構によって、ゲストが使用するＶＭＭ内でのイベントのカウント、またはＶＭＭが使用するゲスト内でのイベントのカウントが可能となる。
【００３３】
図２Ａおよび図２Ｂは、方法２００における本発明の実施形態を示す図である。方法２００は、パフォーマンスカウンタを仮想化する方法である。方法の実施形態はこれに限定されるわけではないが、図２Ａおよび図２Ｂに示す方法の実施形態を説明する際には図１に示す仮想化アーキテクチャ１００を参照する。
【００３４】
図２Ａのボックス２１０において、第１のパフォーマンスカウンタを構成して第１のイベントの発生回数をカウントさせる。例えば、カウンタ制御格納位置１７２をプログラミングすることによって、カウンタ１７１を構成して、キャッシュミスをカウントさせるとしてもよい。ボックス２１２において、第２のパフォーマンスカウンタを構成して第２のイベントの発生回数をカウントさせる。例えば、カウンタ制御格納位置１７４をプログラミングすることによって、カウンタ１７３を構成して、休止していないサイクルをカウントさせる。他の実施形態によると、パフォーマンスカウンタは、任意のほかのイベント、例えば変換索引バッファミス、分岐予測ミス等の発生回数をカウントするように構成されるとしてもよい。
【００３５】
図２Ａのボックス２２０では、図１に示したＶＭＭ１４０がＶＭ用にＶＭＣＳ（例えば、ＶＭＣＳ１３２）を生成する。ボックス２２２から２２６では、ＶＭＭ１４０はカウンタ１７１、１７３、１７５および１７７を仮想化するためのサポートを実装するようにＶＭＣＳ１３２を構成する。ボックス２２２において、ゲスト状態ロードイネーブルインジケータ１３３は、ＶＭエントリに応じてゲスト状態格納位置１３７から総合カウンタイネーブル格納位置１２１にゲスト値をゲスト状態ロードロジック１８３がロードするように、設定される。ボックス２２４において、ホスト状態ロードイネーブルインジケータ１３４は、ＶＭエグジットに応じて、ホスト状態格納位置１３８から総合カウンタイネーブル格納位置１２１にホスト値をホスト状態ロードロジック１８４がロードするように、設定される。ボックス２２６において、ゲスト状態格納イネーブルインジケータ１３５は、ゲスト状態格納ロジック１８５が総合イネーブル格納位置１２１の内容をゲスト状態格納位置１３６に格納するように、設定される。
【００３６】
ボックス２３０において、ホスト（つまり、ＶＭＭ１４０）からゲストへのプロセッサ１２０の制御の移行が開始される。例えば、ＶＭＭはＶＭエントリを開始させるとしてもよい。ＶＭエントリは、ＶＭエントリロジック１８１がプロセッサ１２０にホスト状態を保存してゲスト状態をロードするための処理またはマイクロ処理を実行させることを含むとしてもよい。ボックス２３２では、ＶＭエントリロジックが、ゲスト状態ロードイネーブルインジケータ１３３に基づいて、ゲスト状態格納位置１３７から総合カウンタイネーブル格納位置１２１へとゲスト値をロードするか否か判断する。ゲスト状態ロードイネーブルインジケータ１３３が設定されている場合には、ボックス２３４において、ゲスト状態ロードロジック１８３がゲスト状態格納位置１３７からゲスト値を総合カウンタイネーブル格納位置１２１へとロードさせる。設定されていない場合は、ボックス２３４は実行されない。ボックス２３６では、ＶＭエントリが完了してゲストに制御が移行する。ボックス２３８ではゲストの実行が開始または継続される。
【００３７】
ボックス２３９において、カウンタイネーブルロジック１７０は総合カウンタイネーブルインジケータが設定されているか否か判断する。設定されていない場合は、方法２００はボックス２５８に進む。設定されている場合は、方法２００はボックス２４０に進む。ボックス２４０において、第１のイベントが発生したか否か判断する。発生している場合、ボックス２４４において、第１のパフォーマンスカウンタは構成されたように動作して、つまり本実施形態の場合は、ボックス２１０においてキャッシュミスをカウントするべく構成されており、それにしたがって動作して、第１のパフォーマンスカウンタがインクリメントされる。ボックス２５０では、第２のイベントが発生したか否か判断する。発生している場合、ボックス２５４では、第２のパフォーマンスカウンタが構成されたように動作して、つまり本実施形態の場合は、ボックス２１２において第２のイベントの発生回数をカウントするように構成されており、それにしたがって動作して、第２のパフォーマンスカウンタがインクリメントされる。
【００３８】
ボックス２５８において、仮想化イベントが発生したか否か判断する。発生していなければ、方法２００はボックス２３８に進む。発生していれば、ボックス２６０において、ゲストからホストへのプロセッサ１２０の制御の移行が開始される。ＶＭエグジットは、ＶＭエグジットロジック１８２がプロセッサ１２０にゲスト状態を保存してホスト状態をロードするための処理またはマイクロ処理を実行させることを含むとしてもよい。
【００３９】
ボックス２６２において、ＶＭエグジットロジックは、ゲスト状態格納イネーブルインジケータ１３５に基づいて、総合カウンタイネーブル格納位置１２１の内容をゲスト状態格納位置１３７に格納するか否か判断する。ゲスト状態格納イネーブルインジケータ１３５が設定されていれば、ボックス２６４において、ゲスト状態格納ロジック１８５は総合カウンタイネーブル格納位置１２１の内容をゲスト状態格納位置１３７に格納する。設定されていなければ、ボックス２６４は実行されない。一部の実施形態においては、ゲスト状態格納イネーブルインジケータ１３５が設けられない。一部の実施形態によると、ゲスト状態格納ロジック１８５は常に、総合カウンタイネーブル格納位置１２１の内容をゲスト状態格納位置１３７に格納する。他の実施形態によると、ゲスト状態格納ロジック１８５は、ＶＭエグジット処理の一部として総合カウンタイネーブル格納位置１２１の内容をゲスト状態格納位置１３７に格納することは決して行わない。一部の実施形態によると、ゲストソフトウェアによる総合カウンタイネーブル格納位置１２１に対するアクセスの試みによって、ＶＭエグジットが発生するとしてもよい。ここで、ソフトウェア構成によってＶＭエグジットが発生するとしてもよいし（例えば、ＶＭＭは、総合カウンタイネーブル格納位置１２１へのアクセス時にＶＭエグジットが発生するように、ＶＭＣＳ内の制御を適切に設定しなければならない）、プロセッサに基づいてそのようなＶＭエグジットを強制するとしてもよい。
【００４０】
ボックス２６６において、ＶＭエグジットロジックは、ホスト状態ロードイネーブルインジケータ１３４に基づいて、ホスト状態格納位置１３８から総合カウンタイネーブル格納位置１２１にホスト値をロードするか否かを判断する。ホスト状態格納イネーブルインジケータ１３４が設定されていれば、ボックス２６８において、ホスト状態ロードロジック１８４はホスト状態格納位置１３８から総合カウンタイネーブル格納位置１２１へとホスト値をロードさせる。設定されていなければ、ボックス２６８は実行されない。
【００４１】
ボックス２７０において、ＶＭエグジットが完了して制御はホストに移行される。ボックス２７２において、ホストの実行が開始または継続される。
【００４２】
ボックス２７５において、カウンタイネーブルロジック１７０は総合カウンタイネーブルインジケータが設定されているか否か判断する。設定されていない場合は、方法２００はボックス２９８に進む。設定されている場合は、方法２００はボックス２８０に進む。ボックス２８０において、第１のイベントが発生したか否か判断する。発生している場合、ボックス２８４において、第１のパフォーマンスカウンタは構成されたように動作して、つまり本実施形態の場合は、ボックス２１０においてキャッシュミスをカウントするべく構成されており、それにしたがって動作して、第１のパフォーマンスカウンタがインクリメントされる。ボックス２９０では、第２のイベントが発生したか否か判断する。発生している場合、ボックス２９４では、第２のパフォーマンスカウンタが構成されたように動作して、つまり本実施形態の場合は、ボックス２１２において第２のイベントの発生回数をカウントするように構成されており、それにしたがって動作して、第２のパフォーマンスカウンタがインクリメントされる。
【００４３】
ボックス２９８において、ＶＭエントリが発生するか否か判断する。発生する場合、方法２００はボックス２３０に進む。発生しない場合、方法２００はボックス２９９に進む。ボックス２９９において、停止またはその他の同様の命令が実行されるか否か判断する。実行されない場合、方法２００はボックス２７２に進み、実行される場合、方法２００は終了する。
【００４４】
図３は、ベアプラットフォームハードウェア３１０における本発明の別の実施形態を示す図である。当該実施形態は、仮想化アーキテクチャ１００または別の仮想化アーキテクチャにおいて利用され得る。明記されていない限り、ベアプラットフォームハードウェアおよびその構成要素の説明は、ベアプラットフォームハードウェア３１０およびその対応する構成要素にも当てはまる。ベアプラットフォームハードウェア３１０は、プロセッサ３２０およびメモリ３３０を有する。
【００４５】
プロセッサ３２０は、カウンタ３７１、３７３、３７５および３７７を含む。プロセッサ３２０はさらに、カウンタ３７１、３７３、３７５および３７７にそれぞれ対応する、カウンタ制御格納位置３７２、３７４、３７６および３７８を含む。カウンタ制御格納位置３７２、３７４、３７６および３７８はそれぞれ、他の制御または構成情報と共に、対応するカウンタをイネーブルまたはディセーブルするためのカウンタ有効インジケータを格納するカウンタ有効格納位置を含む。またさらに、プロセッサ３２０は、カウンタ３７１、３７３、３７５および３７７にそれぞれ対応する、カウンタ識別子格納位置３９１、３９３、３９５および３９７を含む。カウンタ識別子格納位置３９１、３９３、３９５および３９７は、任意のサイズのレジスタもしくはその他の構造、または１以上のレジスタまたは他の構造の一部分であってよく、カウンタ３７１、３７３、３７５および３７７それぞれを識別または分類するための情報を格納する。カウンタ識別子格納位置３９１、３９３、３９５および３９７は、カウンタ３７１、３７３、３７５および３７７を一意的にまたは重複して（つまり、２つのカウンタ識別子格納位置が同じ値にプログラミングされることもあり得る）識別する識別子を格納するようにプログラミングされるとしてもよい。
【００４６】
ＶＭＣＳ３３２はカウンタ識別子フィールド３３３を有する。当該カウンタ識別子フィールド３３３は、本実施形態によると、カウンタ識別子格納位置３９１、３９３、３９５および３９７のそれぞれとビット数が同じであるが、他の実施形態によると、任意のビット数であってよい。他の実施形態では、カウンタ識別子フィールドが追加されるとしても良い。カウンタ識別子フィールド３３３は、ＶＭＣＳ３３２を生成するＶＭＭまたはその他の任意のソフトウェアによって、カウンタ識別子格納位置３９１、３９３、３９５および３９７に格納されている値のうち１以上と一致する値または一致しない値を格納するようにプログラミングされるとしてもよい。
【００４７】
プロセッサ３２０はさらに、比較ロジック３２２を有する。比較ロジック３２２は、任意の公知の方法に従って実装され、各カウンタに対して、対応するカウンタ識別子格納位置の内容とカウンタ識別子フィールド３３３の内容とを比較した結果に基づいて、カウンタ一致信号を生成するとしてもよい。本実施形態によると、各カウンタのカウンタ一致信号は、対応するカウンタ識別子格納位置の内容とカウンタ識別子フィールド３３３の内容が一致している場合に、アサートされる。本実施形態によると、各カウンタのカウンタ一致信号は、対応するカウンタ識別子格納位置の内容が値０に等しい場合には、カウンタ識別子フィールド３３３の内容に関わらず、アサートされる。これは、本発明の特徴であるカウンタ識別子を利用しないソフトウェアに、カウンタ識別子の特徴を有するハードウェアで所望通りの動作を実行させるためである。別の実施形態によると、カウンタ一致ロジックは、「一致」の判断を、少なくとも部分的にＶＭＣＳ内の別のフィールドの内容といったほかの要因に基づいて行うとしてもよい。例えば、インテルアーキテクチャ内のＣＲ０、ＣＲ３またはＣＲ４レジスタといったさまざまな制御レジスタの値を参照するとしてもよい。または、カウンタ一致ロジックは、現在実行されているソフトウェアがＶＭＭであるかゲストであるかを判断することを含み、ゲストソフトウェアが現在実行されている場合に限ってＶＭＣＳ内の１以上の制御ビットに基づいてカウンタをイネーブルするとしてもよい。
【００４８】
実施形態は、比較ロジックをディセーブルすることによって、またはその他の任意の所望の方法によって、カウンタ一致特徴をイネーブルまたはディセーブルするための「カウンタ一致イネーブル」制御ビットまたはフィールドを１以上含むとしてもよい。例えば、カウンタ一致イネーブルビットが設定されている場合、上述したように比較が行われる。しかし、カウンタ一致イネーブルビットがクリアされている場合、カウンタは常にイネーブルされて比較は行われず、カウンタ識別子格納位置に格納されている「０」の値は上述したような特別処理を必要としない。
【００４９】
各カウンタ用のカウンタ一致信号は、カウンタ制御格納位置３７２、３７４、３７６および３７８に格納されている任意のほかの関連情報と共に、カウンタ３７１、３７３、３７５および３７７の処理を制御するべくカウンタイネーブルロジック３７０によって使用される。あるカウンタのカウンタ一致信号がアサートされている場合、当該カウンタはその制御および構成情報に従って動作する。例えば、カウンタ制御格納位置３７２の内容には、「イネーブル」値に設定されている個別カウンタ有効ビットとキャッシュヒットをカウントするように設定されているイベント選択フィールドとが含まれている場合、カウンタ３７１はキャッシュヒットに応じてインクリメントされるとしてもよい。しかし、あるカウンタのカウンタ一致信号がアサートされていない場合、カウンタはディセーブルされてその個別制御および構成情報に従って動作しない。例えば、カウンタ制御格納位置３７２の内容に、「イネーブル」値に設定されている個別カウンタ有効ビットとキャッシュヒットをカウントするように設定されているイベント選択フィールドとが含まれていても、カウンタ３７１はキャッシュヒットに応じてインクリメントされない。
【００５０】
また、プロセッサ３２０は、カウンタ３７１、３７３、３７５および３７７の仮想化を含む仮想化をサポートする制御ロジック３８０を含む。制御ロジック３８０は、本発明に係る方法の実施形態をプロセッサ３２０に実行させる。例えば、図４を参照しつつ以下で説明する方法の実施形態を実行させる。一例を挙げると、プロセッサ３２０に、例えば仮想化をサポートする１以上のマイクロ処理の実行を、ホストまたはゲストからの仮想化命令またはその他の命令に対する応答の中に含ませる。
【００５１】
図４は、方法４００における本発明の実施形態を示す図である。方法４００は、パフォーマンスカウンタを仮想化する別の方法である。方法の実施形態はこれに限定されるわけではないが、図４に示す方法の実施形態を説明する際には図１から図３の内容を参照する。
【００５２】
図４のボックス４１０において、イベントの発生回数をカウントするようにパフォーマンスカウンタを構成する。例えば、カウンタ制御格納位置３７２をプログラミングすることによって、キャッシュミスをカウントするようにカウンタ３７１を構成するとしてもよい。ボックス４１２において、所望のカウンタ識別値によってカウンタ識別子格納位置３９１をプログラミングする。
【００５３】
ボックス４２０において、ホストがＶＭ用にＶＭＣＳ（例えばＶＭＣＳ３３２）を生成する。ボックス４２２において、ホストは、カウンタ３７１、３７３、３７５および３７７の仮想化に対するサポートを実装するようにＶＭＣＳ３３２を構成する。具体的には、ボックス４１２で利用されるカウンタ識別値に等しい値でカウンタ識別子フィールド３３３をプログラミングする。本実施形態によると、任意の数のほかのゲストまたはホストに対応する、ＶＭＣＳ３３２またはその他の任意のＶＭＣＳ内の任意の数のほかのカウンタ識別子フィールドもまた、同じ値でプログラミングして、任意の数のゲストまたはホストが１以上のカウンタを共有できるようにするとしてもよい。
【００５４】
ボックス４３０においては、プロセッサ３２０の制御がホストからゲストへと移行される。ボックス４３２では、ゲストの実行が開始または継続される。ボックス４３４では、カウンタ識別子格納位置３９１とカウンタ識別子フィールド３３３との比較に基づいてカウンタ一致信号を生成する。本実施形態によると、カウンタ識別子格納位置の内容がカウンタ識別子フィールドの内容と一致している場合に、カウンタ一致信号がアサートされる。
【００５５】
ボックス４４０において、イベントの発生、つまり本実施形態ではキャッシュミスが認識される。ボックス４４２において、カウンタイネーブルロジック３７０は、カウンタ一致信号と対応するカウンタ制御格納位置（例えば、カウンタ制御格納位置３７２）におけるカウンタ有効格納位置の内容とに基づいてパフォーマンスカウンタをインクリメントするか否か判断する。
【００５６】
カウンタ一致信号がアサートされていてカウンタのカウンタ有効インジケータが設定されていない場合、ボックス４４４では、パフォーマンスカウンタは構成通りに動作し、つまり本実施形態によると、ボックス４１０においてキャッシュミスをカウントするように構成されており、これにしたがって動作して、パフォーマンスカウンタはインクリメントされる。カウンタ一致信号がアサートされていない場合、またはカウンタの有効インジケータが設定されていない場合、ボックス４４４は実行されない。
【００５７】
本発明の範囲内では、図２Ａおよび図２Ｂならびに図４に図示されている方法は、異なる順序で実行されるとしてもよいし、図示されているボックスを省略して実行されるとしてもよいし、ボックスを追加して実行されるとしてもよいし、または、ボックスの並び替え、削除または追加を組み合わせて実行されるとしてもよい。例えば、ＶＭＣＳはＶＭＣＳをどの順序で構成するとしてもよい。例えば、ボックス２２２から２２６はどのような順序で並び替えられるとしてもよい。
【００５８】
プロセッサ１２０、または本発明の実施形態に応じて設計されるその他の任意の構成要素または構成要素の一部分は、生成、シミュレーション、製造といったさまざまな段階で設計され得る。設計を表現するデータは、多くの方式で設計を表現し得る。まず、シミュレーションで利用し易いように、ハードウェアはハードウェア記述言語またはその他の機能記述言語を用いて表現されるとしてもよい。このような構成に加えて、またはこのような構成に代えて、設計プロセスのある段階において、ロジックおよび／またはトランジスタゲートを備える回路レベルのモデルを形成するとしてもよい。さらに、大半の設計では、ある段階において、さまざまなデバイスの物理的配置を表すデータによって設計をモデルかし得るレベルに到達する。従来の半導体プロセス技術が用いられる場合、デバイス配置モデルを表現するデータは、集積回路を製造するために用いられるマスクを形成する複数の異なるマスク層におけるさまざまな特徴の有無を特定するデータであってもよい。
【００５９】
設計をどのように表現する場合であっても、データは機械可読媒体の任意の形式で格納され得る。機械可読媒体とは、情報を送信するべく変調または生成される光波または電波、メモリ、もしくはディスク等の磁気または光学格納媒体であってよい。このような媒体はいずれも、設計または本発明の実施形態で用いられるほかの情報を「搬送」、または「指し示す」としてよい。当該情報を指し示すまたは搬送する搬送電波が送信されると、電気信号の複写、バッファリング、または再送が実行される限り、新しい複写が作成される。このように、通信業者またはネットワークプロバイダの仕事は、本発明に係る技術を実施する物品、例えば搬送波の複写を作成することを含むとしてよい。
【００６０】
以上に、パフォーマンスカウンタを仮想化する装置、方法およびシステムを開示した。任意の実施形態を説明し添付図面で図示しているが、本開示内容を参照することで当業者は他のさまざまな変形例に想到すると思われるので、上述の実施形態は単に例示を目的としたもので多岐にわたる本発明を限定するものではなく、本発明は図示および説明された具体的な構成および配置に限定されるものではないと理解されたい。成長速度が速く今後の発展の予測が簡単ではないこのような技術分野においては、開示された実施形態は、その配置および詳細な内容を、本開示内容の原則または特許請求の範囲から離れることなく、技術の進歩を可能にすることによって支援されて、容易に変形可能であるとしてもよい。
［項目１］
装置であって、
複数のカウンタと、
前記複数のカウンタのそれぞれと対応する複数のカウンタイネーブルインジケータを格納するカウンタイネーブル格納位置と、
総合カウンタイネーブルインジケータを格納する総合イネーブル格納位置と、
対応する前記カウンタイネーブルインジケータがイネーブルに設定されており、前記総合カウンタイネーブルインジケータがイネーブルに設定されている場合に、前記カウンタをイネーブルし、
対応する前記カウンタイネーブルインジケータがイネーブルに設定されており、前記総合カウンタイネーブルインジケータがディセーブルに設定されている場合に、前記カウンタをディセーブルし、
対応する前記カウンタイネーブルインジケータがディセーブルに設定されており、前記総合カウンタイネーブルインジケータがイネーブルに設定されている場合に、前記カウンタをイネーブルし、
対応する前記カウンタイネーブルインジケータがディセーブルに設定されており、前記総合カウンタイネーブルインジケータがディセーブルに設定されている場合に、前記カウンタをディセーブルするカウンタイネーブルロジックと、
前記装置の制御をゲストに移行させる仮想マシン制御ロジックと
を備え、
前記仮想マシン制御ロジックは、前記ゲストへの制御の移行に応じて、仮想マシン制御構造のゲスト値を前記総合イネーブル格納位置へとロードさせるゲスト状態ロードロジックを有する
装置。
［項目２］
仮想マシンモニタをさらに備え、
前記仮想マシンモニタは、ゲスト毎に、前記ゲストと前記仮想マシンモニタとの間での移行の一部として、前記複数のカウンタをイネーブルまたはディセーブルにする
項目１に記載の装置。
［項目３］
前記複数のカウンタは、パフォーマンス監視情報を記録する
項目１または２に記載の装置。
［項目４］
前記仮想マシン制御ロジックはさらに、
前記装置の制御を前記ゲストからホストへと移行させ、
前記ゲストから前記ホストへの制御の移行に応じて、前記仮想マシン制御構造のホスト値を前記総合イネーブル格納位置へとロードさせるホスト状態ロードロジックを有する
項目１から３のいずれか１項に記載の装置。
［項目５］
前記仮想マシン制御ロジックはさらに、前記ゲストから前記ホストへの制御の移行に応じて、前記総合イネーブル格納位置の内容を前記仮想マシン制御構造に格納させるゲスト状態格納ロジックを有する
項目４に記載の装置。
［項目６］
前記仮想マシン制御ロジックはさらに、前記仮想マシン制御構造内のゲスト状態ロードイネーブルインジケータに基づいて前記ゲスト状態ロードロジックをイネーブルする仮想マシンエントリロジックを有する
項目１から５のいずれか１項に記載の装置。
［項目７］
前記仮想マシン制御ロジックはさらに、前記仮想マシン制御構造内のホスト状態ロードイネーブルインジケータに基づいて前記ホスト状態ロードロジックをイネーブルする仮想マシンエグジットロジックを有する
項目４に記載の装置。
［項目８］
前記仮想マシン制御ロジックはさらに、前記仮想マシン制御構造内のゲスト状態格納イネーブルインジケータに基づいて前記ゲスト状態格納ロジックをイネーブルする仮想マシンエグジットロジックを有する
項目５に記載の装置。
［項目９］
総合カウンタイネーブルインジケータを総合イネーブル格納位置に格納する段階と、
プロセッサ内の複数のカウンタを構成して、第１のイベント及び第２のイベントの発生回数をカウントする段階と、
前記プロセッサの制御のゲストへの移行を開始させる段階と、
前記ゲストへの制御の移行に応じて、仮想マシン制御構造から前記総合イネーブル格納位置へゲスト値をロードする段階と、
前記プロセッサの制御の前記ゲストへの移行を完了させる段階と、
前記総合イネーブル格納位置の内容と、前記第１のイベントの第１の発生と、前記第２のイベントの第１の発生とに基づいて、前記複数のカウンタのカウント回数を変更するか否か判断する段階と
を備える方法。
［項目１０］
前記複数のカウンタのそれぞれと対応する複数のカウンタイネーブルインジケータのうちの、対応するカウンタイネーブルインジケータがイネーブルに設定されており、前記総合カウンタイネーブルインジケータがイネーブルに設定されている場合に、前記カウンタをイネーブルし、
対応する前記カウンタイネーブルインジケータがイネーブルに設定されており、前記総合カウンタイネーブルインジケータがディセーブルに設定されている場合に、前記カウンタをディセーブルし、
対応する前記カウンタイネーブルインジケータがディセーブルに設定されており、前記総合カウンタイネーブルインジケータがイネーブルに設定されている場合に、前記カウンタをイネーブルし、
対応する前記カウンタイネーブルインジケータがディセーブルに設定されており、前記総合カウンタイネーブルインジケータがディセーブルに設定されている場合に、前記カウンタをディセーブルする段階
をさらに備える項目９に記載の方法。
［項目１１］
ゲスト毎に、前記ゲストと仮想マシンモニタとの間での移行の一部として、前記複数のカウンタをイネーブルまたはディセーブルにする
項目９または１０に記載の方法。
［項目１２］
前記プロセッサの制御の前記ゲストからホストへの移行を開始させる段階と、
前記仮想マシン制御構造から前記総合イネーブル格納位置へとホスト値をロードする段階と、
前記ゲストから前記ホストへの前記プロセッサの制御の移行を完了させる段階と、
前記総合イネーブル格納位置の内容と、前記第１のイベントの第２の発生と、前記第２のイベントの第２の発生とに基づいて、前記複数のカウンタのカウント回数を変更するか否か判断する段階と
をさらに備える項目９に記載の方法。
［項目１３］
前記ゲストから前記ホストへの前記プロセッサの制御の移行を開始させた後で、前記仮想マシン制御構造に前記総合イネーブル格納位置の内容を格納する段階
をさらに備える項目１２に記載の方法。
［項目１４］
前記仮想マシン制御構造内のゲスト状態ロードイネーブルインジケータに基づいて、前記プロセッサに前記ゲスト値をロードさせる段階
をさらに備える項目９に記載の方法。
［項目１５］
前記仮想マシン制御構造内のホスト状態ロードイネーブルインジケータに基づいて、前記プロセッサに前記ホスト値をロードさせる段階
をさらに備える項目１２に記載の方法。
［項目１６］
前記仮想マシン制御構造内のゲスト状態格納イネーブルインジケータに基づいて、前記プロセッサに前記総合イネーブル格納位置の内容を格納させる段階
をさらに備える項目１２に記載の方法。
［項目１７］
仮想マシンを制御するためのデータ構造を格納するメモリと、
プロセッサと
を備えるシステムであって、
前記プロセッサは、
複数のカウンタと、
総合カウンタイネーブルインジケータを格納する総合イネーブル格納位置と、
前記総合カウンタイネーブルインジケータに基づいて前記複数のカウンタをイネーブルするカウンタイネーブルロジックと、
前記プロセッサの制御をゲストへ移行させる仮想マシン制御ロジックと
を有し、
前記仮想マシン制御ロジックは、前記ゲストへの制御の移行に応じて、前記データ構造のゲスト値を前記総合イネーブル格納位置へとロードさせるゲスト状態ロードロジックを含む
システム。
［項目１８］
前記カウンタイネーブルロジックは、前記複数のカウンタのそれぞれと対応する複数のカウンタイネーブルインジケータのうちの、対応するカウンタイネーブルインジケータがイネーブルに設定されており、前記総合カウンタイネーブルインジケータがイネーブルに設定されている場合に、前記カウンタをイネーブルし、
対応する前記カウンタイネーブルインジケータがイネーブルに設定されており、前記総合カウンタイネーブルインジケータがディセーブルに設定されている場合に、前記カウンタをディセーブルし、
対応する前記カウンタイネーブルインジケータがディセーブルに設定されており、前記総合カウンタイネーブルインジケータがイネーブルに設定されている場合に、前記カウンタをイネーブルし、
対応する前記カウンタイネーブルインジケータがディセーブルに設定されており、前記総合カウンタイネーブルインジケータがディセーブルに設定されている場合に、前記カウンタをディセーブルする
項目１７に記載のシステム。
［項目１９］
前記複数のカウンタはパフォーマンス監視情報を記録する
項目１８に記載のシステム。
［項目２０］
前記メモリはダイナミックランダムアクセスメモリである
項目１８に記載のシステム。
【図１】
0005969550.tif 000002
【図２Ａ】
0005969550.tif 000003
【図２Ｂ】
0005969550.tif 000004
【図３】
0005969550.tif 000005
【図４】
0005969550.tif 000006