JP5571208B2 - パフォーマンスカウンタの仮想化 - Google Patents

パフォーマンスカウンタの仮想化 Download PDF

Info

Publication number
JP5571208B2
JP5571208B2 JP2013022629A JP2013022629A JP5571208B2 JP 5571208 B2 JP5571208 B2 JP 5571208B2 JP 2013022629 A JP2013022629 A JP 2013022629A JP 2013022629 A JP2013022629 A JP 2013022629A JP 5571208 B2 JP5571208 B2 JP 5571208B2
Authority
JP
Japan
Prior art keywords
guest
virtual machine
storage location
enable
counter
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013022629A
Other languages
English (en)
Other versions
JP2013109777A (ja
Inventor
コタ−ロブレス、エリック
ネイジャー、ギルバート
ベネット、スティーブン
アンダーソン、アンドリュー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2013109777A publication Critical patent/JP2013109777A/ja
Application granted granted Critical
Publication of JP5571208B2 publication Critical patent/JP5571208B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/348Circuit details, i.e. tracer hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本開示内容は、情報処理分野に関し、特に仮想化環境におけるパフォーマンスカウンタの利用に関する。
一般的に、情報処理システムにおける仮想化の概念によって、各OSは単一の情報処理システムおよび当該システムのリソースに対して全体的且つ直接的な制御を行うように設計されているにもかかわらず、当該情報処理システムにおいて1以上のオペレーティングシステム(OS)の複数のインスタンスを実行することが可能となる。仮想化は通常、ソフトウェア(例えば、仮想マシンモニタ(VMM))を用いて実装され、仮想リソースを持つ「仮想マシン(VM)」を各OSに対して提示する。仮想リソースは、例えば1以上の仮想プロセッサ等であり、各OSによって全体的且つ直接的に制御するとしてもよい。ここで、VMMは、VM間での共有化および/または物理リソースの割り当て等、仮想化ポリシーを実装するべくシステム環境を維持する(「仮想化環境」)。VMで実行される各OSおよびその他のソフトウェアを「ゲスト」または「ゲストソフトウェア」とよび、仮想化環境の外で実行されるVMMのようなソフトウェアを「ホスト」または「ホストソフトウェア」と呼ぶ。
情報処理システムに含まれる物理プロセッサは、例えば、VMにおける仮想プロセッサ(つまり、VMMによって制限された物理プロセッサ)でゲストを実行するべく、仮想化環境を開始させる命令をサポートすることによって仮想化をサポートし得る。仮想化環境において、外部割込みまたは特権レジスタまたはリソースへのアクセス試み等のあるイベント、処理および状況がインターセプト(intercept)される場合がある。つまり、あるイベント、処理および状況によってプロセッサが仮想化環境を離脱して、VMMは例えば仮想化ポリシーを実施するべく動作する。物理プロセッサはまた、仮想化環境を維持するほかの命令をサポートするとしてもよく、物理プロセッサの仮想化能力を指定または制御するメモリまたはレジスタビットを有するとしてもよい。
仮想化環境をサポートする物理プロセッサは、パフォーマンス監視情報を記録するためのパフォーマンスカウンタを有するとしてもよい。各パフォーマンスカウンタは通常、当該カウンタに対応付けられる、1以上の制御または構成レジスタ、もしくは1以上の制御または構成レジスタの一部によって制御され得る。これらのパフォーマンスカウンタを仮想化するためには、ゲストとホスト間または2つのゲスト間で移行を実施する度に通常、カウンタすべておよび当該カウンタに対応付けられている制御レジスタの状態を保存して、カウンタすべておよび当該カウンタに対応付けられている制御レジスタについて新しい状態をロードする必要がある。
本発明は、添付図面に図示される例に基づいて説明するが、添付図面の内容は本発明を限定するものではない。
仮想化アーキテクチャにおける本発明の実施形態を示す図である。
パフォーマンスカウンタを仮想化する方法における本発明の実施形態を示す図である。 パフォーマンスカウンタを仮想化する方法における本発明の実施形態を示す図である。
仮想化アーキテクチャにおける本発明の別の実施形態を示す図である。
パフォーマンスカウンタを仮想化する方法における本発明の別の実施形態を示す図である。
パフォーマンスカウンタを仮想化するための装置、方法およびシステムの実施形態を以下で説明する。以下の説明では、本発明を十分に説明するべく、構成要素およびシステム構成等具体的且つ詳細な内容を数多く挙げるが、当業者であればそのような具体的且つ詳細な内容以外でも本発明を実施できることに想到するであろう。また、一部の公知の構造および回路等については、本発明が不必要に不明確となるのを避けるべく、詳細な説明を省略している。
仮想化環境のパフォーマンスは、ホスト−ゲスト間およびゲスト間での移行において保存およびロードされる必要がある状態情報の量を低減することによって、改善され得る。本発明の実施形態を用いることによって、カウンタおよび当該カウンタに対応付けられる制御レジスタの内容を保存およびロードすることなく、パフォーマンスカウンタまたはその他のカウンタを仮想化し得る。このため、カウンタおよび当該カウンタに対応付けられる制御レジスタの内容が移行において保存される仮想化環境に比べて、パフォーマンスを向上させることができる。本発明の実施形態によれば、ホストおよびゲストの数に関わらずパフォーマンスカウンタを効率よくイネーブルまたはディセーブルすることが可能となり、ホストまたはゲストの専用使用に対してパフォーマンスカウンタを割り当てることが可能となり、ホストおよび/またはゲストの間でその数に関わらずパフォーマンスカウンタを共有化することが可能となる。
図1は、仮想化アーキテクチャ100における本発明の実施形態を示す図である。図1において、ベアプラットフォームハードウェア110は、任意のOSまたはVMMソフトウェアを実行できるデータ処理装置であればどのようなものであってもよい。例えば、ベアプラットフォームハードウェアは、パーソナルコンピュータ、メインフレームコンピュータ、ポータブルコンピュータ、ハンドヘルドデバイス、セットトップボックス、サーバ等の演算システムに含まれるものであってよい。ベアプラットフォームハードウェア110は、プロセッサ120およびメモリ130を有する。
プロセッサ120はどのような種類のプロセッサであってもよく、汎用マイクロプロセッサであってもよく、例えば、Intel(登録商標)Corporation社のIntel(登録商標)Pentium(登録商標)プロセッサファミリー、Itanium(登録商標)プロセッサファミリー、またはその他のプロセッサファミリーに属するプロセッサ、または別の会社製の別のプロセッサ、またはデジタルシグナルプロセッサ、またはマイクロコントローラであってもよい。図1に示すプロセッサ120は1つのみであるが、ベアプラットフォームハードウェア110が有するプロセッサの数は任意であるとしてもよく、それぞれが任意の数の実行コアを含む任意の数のマルチコアプロセッサを含み、それぞれが任意の数のスレッドを含む任意の数のマルチスレッドプロセッサを含むとしてもよい。
メモリ130は、スタティックランダムアクセスメモリまたはダイナミックランダムアクセスメモリ、半導体ベースのリードオンリーメモリまたはフラッシュメモリ、磁気または光学ディスクメモリ、プロセッサ120が読み出し可能なその他の種類の媒体、またはこのような媒体の組み合わせであってよい。プロセッサ120およびメモリ130は、任意の公知の方法に従って互いに接続または通信させられるとしてよく、該方法としては、1以上のバスを介して直接的または間接的に接続または通信させる方法、ポイント・ツー・ポイント方式、またはその他の有線接続方法または無線接続方法がある。ベアプラットフォームハードウェア110には、任意の数のデバイスまたは接続を追加するとしてもよい。
図1では、ベアプラットフォームハードウェア100に加え、VMM140、VM150および160、ゲストオペレーティングシステム152および162、ならびにアプリケーション154、155、164および165が図示されている。
VMM140は、ゲストに対してVM、つまりベアプラットフォームハードウェア110の抽象化を提示するべく、またはVMを形成および管理して仮想化ポリシーを実装するべく、ベアプラットフォームハードウェア110にインストールされているか、またはベアプラットフォームハードウェア110にアクセス可能な任意のソフトウェア、ファームウェアまたはハードウェアのホストであってもよい。ほかの実施形態によると、ホストは、任意のVMM、ハイパバイザ、OS、またはベアプラットフォームハードウェア110を制御できるその他のソフトウェア、ファームウェアまたはハードウェアであってよい。ゲストは、任意のOS、VMM140の別のインスタンスを含む任意のVMM、任意のハイパバイザ、または任意のアプリケーションもしくは別のソフトウェアであってよい。
各ゲストは、VMにおいて提示されるプロセッサおよびプラットフォームのアーキテクチャに応じて、ベアプラットフォームハードウェア110の物理リソース、例えばプロセッサおよびプラットフォームレジスタ、メモリおよび入出力デバイスに対して、アクセスするものと考えられる。図1では2つのVM150および160が図示されており、VM150にはゲストOS152ならびにゲストアプリケーション154および155がインストールされ、VM160にはゲストOS162ならびにゲストアプリケーション164および165がインストールされている。図1に図示されているVMは2つのみでVM毎のアプリケーションも2つのみであるが、本発明の範囲内では、形成されるVMの数はいくつであってもよく、各VMにおいて実行されるアプリケーションの数もいくつであってもよい。
ゲストがアクセス可能なリソースは、「特権」リソースまたは「非特権」リソースに分類され得る。特権リソースの場合は、VMM140は、当該リソースに対する最終制御を保持しつつ、ゲストが所望する機能を提供する。非特権リソースの場合は、VMM140による制御を受ける必要はなくゲストが直接アクセスし得る。
また、各ゲストOSは、例外(例えば、ページフォールトおよび一般保護違反)、割り込み(例えば、ハードウェア割り込みおよびソフトウェア割り込み)、およびプラットフォームイベント(例えば、初期化およびシステム管理割り込み)等、さまざまなイベントを処理するものと考えられる。このような例外、割り込みおよびプラットフォームイベントは、本明細書において、「仮想化イベント」と総合的または個別に呼称される。このような仮想化イベントの一部は、VM150および160を適切に動作させ、ゲストからVMM140を保護し、およびお互いから各ゲストを保護するべく、VMM140が処理する必要があるので、「特権イベント」と呼ばれる。
任意の時点において、プロセッサ120がVMM140または任意のゲストからの命令を実行しているとすると、VMM140または当該ゲストは、プロセッサ120上で実行されているか、プロセッサ120を制御し得る。特権イベントが発生するか、またはゲストが特権リソースへのアクセスを試みると、制御がゲストからVMM140に移行され得る。ゲストからVMM140への制御の移行を、本明細書では、「VMエグジット(exit)」と呼ぶ。イベントの処理またはリソースへのアクセスの提供が適切に終了すると、VMM140は制御をゲストに戻すとしてもよい。VMM140からゲストへの制御の移行を、本明細書では、「VMエントリ(entry)」と呼ぶ。
図1に示す実施形態によると、プロセッサ120は、仮想マシン制御構造(VMCS)132に格納されているデータに従ってVM150および160の動作を制御する。VMCS132は、1または複数のゲストの状態、VMM140の状態、VMM140がどのように1または複数のゲストの動作を制御するかを示す実行管理情報、VMの終了および開始に関する情報、およびその他の任意の情報を含み得る構造である。プロセッサ120は、VMCS132から情報を読み出して、VMの実行環境を決定して当該VMの行動を制限する。本実施形態において、VMCS132はメモリ130に格納されている。一部の実施形態によると、複数のVMをサポートするべく複数のVMCSを利用する。図1ではVMCS132がメモリ130に格納される構成を示しているが、メモリ内にVMCSを格納する構成は本発明において必須ではない。
プロセッサ120はカウンタ171、173、175および177を含む。本実施形態によると、カウンタ171、173、175および177は、プロセッサ120で実行されるソフトウェアによってプログラミングされてパフォーマンス監視情報を記録するパフォーマンスカウンタである。しかし、他の実施形態では、任意の数のカウンタおよび/または任意の種類およびサイズのカウンタを含むとしてよい。例えば、パフォーマンスカウンタ171、173、175または177のいずれかが、選択されるイベントの発生毎にインクリメントするべく、または選択されるイベント中の各クロックサイクル毎にインクリメントするべく、プログラミングされるとしてもよい。イベントは、プロセッサ120上でのプログラムコードの実行に関する多岐にわたるイベントのいずれを含むとしてもよい。そのようなイベントには、分岐予測ミス、キャッシュヒット、キャッシュミス、変換索引バッファヒット、変換索引バッファミス等がある。このため、パフォーマンスカウンタ171、173、175および177に基づいて、プロセッサ120において可能な限り最高のパフォーマンスを実現するようにプログラムコードを調整または設計するとしてもよい。
プロセッサ120はさらに、カウンタ171、173、175および177にそれぞれ対応する、カウンタ制御格納位置172、174、176および178を含む。カウンタ制御格納位置172、174、176および178は、任意のサイズのレジスタまたはその他の構造、もしくは1以上のレジスタまたはその他の構造の一部分であってよく、カウンタ171、173、175および177をそれぞれ制御または構成する情報を格納し得る。カウンタ制御格納位置172、174、176および178は、カウンタ171、173、175および177をそれぞれ制御または構成する情報を格納するようにプログラミングされるとしてもよい。当該情報は例えば、カウンタをイネーブルする情報、カウント対象のイベントを選択する情報、カウント方法を選択する情報(例えば、発生回数またはイベント持続時間)、カウント条件を選択する情報(例えば、イベントが検出された場合のソフトウェア実行の特権レベルに基づく)、およびその他の制御変数、構成変数またはその他の変数を設定するための情報である。
プロセッサ120はさらに、総合カウンタイネーブル格納位置121を含む。総合カウンタイネーブル格納位置121は、制御レジスタ、構成レジスタ、モデル依存レジスタ、または総合カウンタイネーブルインジケータを格納するその他の格納位置内の1以上のビットであってもよい。一実施形態によると、総合カウンタイネーブル格納位置121はプログラム可能レジスタの1ビットであって、当該ビットが論理値「1」に設定されると総合カウンタイネーブルインジケータが「イネーブル」値に設定され、論理値「0」に設定されると総合カウンタイネーブルインジケータが「ディセーブル」値に設定される。
別の実施形態によると、総合カウンタイネーブル格納位置は、パフォーマンスカウンタ毎に1ビットを持ち、各ビットが論理値「1」に設定されると、対応するパフォーマンスカウンタ用の個別カウンタイネーブルインジケータが「イネーブル」値に設定されるとしてもよい。その他の実施形態によると、総合カウンタイネーブル格納位置の単一のビットまたはフィールドは、任意の数のパフォーマンスカウンタを含む群に対応するとしてもよい。このような実施形態ではいずれの場合も、総合イネーブル格納位置は、任意の数のパフォーマンスカウンタに対応する任意の数のビットまたはフィールドを含むとしてよく、より直接的にパフォーマンスカウンタを制御する任意の数のビットまたはフィールドを制御するべく利用され得る1以上の追加イネーブルインジケータをさらに含むとしてもよいし、またはそのような追加イネーブルインジケータに対応付けられるとしてもよい。例えば、格納位置は、「カウンタイネーブルベクトル」を格納するためのフィールドを含むとしてもよい。当該フィールドはカウンタ毎に1ビットを持つ。この格納位置の内部またはプロセッサ120または仮想化アーキテクチャ100における別の格納位置またはデータ構造に設けられる追加ビットを用いて、当該カウンタイネーブルベクトルをイネーブルまたはディセーブルするとしてもよい。このようにすることで、VMCSに格納されているカウンタイネーブルベクトルに応じて、各カウンタをゲストが個別に制御するとしてもよいが、追加ビットのデフォルト値は、カウンタイネーブルベクトルモデルをサポートしないプロセッサ用に設計されているVMMまたはその他のホストソフトウェアを実行する場合には個別カウンタ制御が自動的にディセーブルされるように設定されるとしてもよい。
総合カウンタイネーブルインジケータの値は、カウンタ制御格納位置172、174、176および178に格納されているほかの関連情報と共に、カウンタ171、173、175および177の動作を制御するべくカウンタイネーブルロジック170によって使用される。総合カウンタイネーブルインジケータが「イネーブル」値に設定されている場合には、各カウンタは個別制御および構成情報に応じて動作する。例えば、カウンタ171はキャッシュヒットに応じてインクリメントされるとしてもよい。これは、カウンタ制御格納位置172の内容に、「イネーブル」値に設定された個別カウンタイネーブルビットおよびキャッシュヒットをカウントするように設定されたイベント選択フィールドが含まれているためである。一方、カウンタ173はインクリメントされないとしてもよい。これは、カウンタ制御格納位置174の内容には「ディセーブル」値に設定されている個別カウンタイネーブルビットが含まれているためである。しかし、総合カウンタイネーブルインジケータが「ディセーブル」値に設定されている場合には、すべてのカウンタ171、173、175および177がディセーブルされ、それぞれの個別制御および構成情報に応じては動作しない。カウンタ171を例に挙げて説明すると、カウンタ制御格納位置172の内容に、「イネーブル」値に設定されている個別カウンタイネーブルビットおよびキャッシュヒットをカウントするように設定されているイベント選択フィールドが含まれているとしても、キャッシュヒットに応じてインクリメントされない。
また、プロセッサ120は、カウンタ171、173、175および177の仮想化を含む仮想化をサポートするべく、制御ロジック180を含む。制御ロジック180は、プロセッサ120に含まれるマイクロコード、プログラム可能ロジック、ハードコードロジック、またはその他の形式の制御ロジックであってよい。他の実施形態によると、制御ロジック180は、プロセッサ、またはメモリ130のように、プロセッサがアクセス可能な素子または読み出し可能な媒体において、プロセッサ抽象化層のように、ハードウェア、ソフトウェアまたはファームウェアのうちどの形式で実装されるとしてもよい。
制御ロジック180は、本発明に係る方法の実施形態をプロセッサ120に実行させる。例えば、図2Aおよび図2Bを参照しつつ以下で説明する方法の実施形態を実行させる。一例を挙げると、プロセッサ120に、例えば仮想化をサポートする1以上のマイクロ処理の実行を、ホストまたはゲストからの仮想化命令またはその他の命令に対する応答の中に含ませる。
制御ロジック180は、ホストからゲストへプロセッサ120の制御を移行させる(つまりVMエントリ)VMエントリロジック181と、ゲストからホストへプロセッサ120の制御を移行させる(つまりVMエグジット)VMエグジットロジック182とを含む。一部の実施形態によると、制御はさらに、ゲストからゲストへ、またはホストからホストへと移行されるとしてもよい。例えば、層状仮想化をサポートする実施形態では、プロセッサ120上のVMで実行されるソフトウェアはゲストであると同時にホストである(例えば、あるVMで実行されるVMMは、当該VMを制御するVMMに対してゲストであり、自身が制御するVMで実行されるゲストに対してはホストである)。
制御ロジック180はさらに、ゲスト状態ロードロジック183、ホスト状態ロードロジック184、およびゲスト状態格納ロジック185を含む。ゲスト状態ロードロジック183は、VMエントリに応じて、VMCS132からプロセッサ120にゲスト状態をロードする。ホスト状態ロードロジック184は、VMエグジットに応じて、VMCS132からプロセッサ120に対してホスト状態をロードする。ゲスト状態格納ロジック185は、VMエグジットに応じて、プロセッサ120からVMCS132に対してゲスト状態を格納する。一部の実施形態によると、制御ロジック180はさらに、ゲスト状態ロードロジック183によるプロセッサ120へのゲスト状態のロードに先立って、VMエントリに応じて、プロセッサ120からVMCS132に対してホスト状態を格納するホスト状態格納ロジック186を含む。一部の実施形態によると、制御ロジック180は、入出力デバイスおよびメモリコントローラ等の、他のシステム構成要素に存在する状態をロードおよび格納するとしてもよい。
VMCS132は、仮想化をサポートするフィールド、制御ビットまたはその他のデータ構造を含むとしてもよい。これらのデータ構造は、制御ロジック180によってチェックまたは参照されて、VM環境をどのように管理するか決定するために利用され得る。例えば、VMエントリに応じて、ゲスト状態格納位置137から総合カウンタイネーブル格納位置121にゲスト値をゲスト状態ロードロジック183がロードするように、ゲスト状態ロードイネーブルインジケータ133を設定するとしてもよく、VMエグジットに応じて、ホスト状態格納位置138から総合カウンタイネーブル格納位置121にホスト値をホスト状態ロードロジック184がロードするようにホスト状態ロードイネーブルインジケータ134を設定するとしてもよく、ゲスト状態格納イネーブルインジケータ135は、ゲスト状態格納ロジック185が総合イネーブル格納位置121の内容をゲスト状態格納位置137に格納するように、設定されるとしてもよく、ホスト状態格納イネーブルインジケータ136は、ホスト状態格納ロジック186が総合イネーブル格納位置121の内容をホスト状態格納位置138に格納するように、設定されるとしてもよい。これらの処理はすべて以下で説明する。本実施形態の以下の説明では、インジケータは所望の効果をイネーブルまたは発生させるように設定される制御ビットであり、「設定」とはビットに論理値「1」を書き込むことを意味するが、本発明の範囲においてはどのような論理方式または論理用語を利用するとしてもよい。
本明細書で説明する機構に基づいて、VMMは、ゲストが実行されている間のみ、VMMが実行されている間のみ、またはVMMおよびゲストが実行されている間に発生するイベントのカウントをイネーブルするとしてもよい。また、VMMは、ゲスト毎に、ゲストとVMMとの間での移行(つまりVMエントリまたはVMエグジット)の一部として、パフォーマンスカウンタをイネーブルまたはディセーブルするとしてもよい。このような機構によって、VMMは、自身がパフォーマンスカウンタに及ぼす影響を、ゲストに対して「隠す」ことが可能となる。または、このような機構によって、ゲストが使用するVMM内でのイベントのカウント、またはVMMが使用するゲスト内でのイベントのカウントが可能となる。
図2Aおよび図2Bは、方法200における本発明の実施形態を示す図である。方法200は、パフォーマンスカウンタを仮想化する方法である。方法の実施形態はこれに限定されるわけではないが、図2Aおよび図2Bに示す方法の実施形態を説明する際には図1に示す仮想化アーキテクチャ100を参照する。
図2Aのボックス210において、第1のパフォーマンスカウンタを構成して第1のイベントの発生回数をカウントさせる。例えば、カウンタ制御格納位置172をプログラミングすることによって、カウンタ171を構成して、キャッシュミスをカウントさせるとしてもよい。ボックス212において、第2のパフォーマンスカウンタを構成して第2のイベントの発生回数をカウントさせる。例えば、カウンタ制御格納位置174をプログラミングすることによって、カウンタ173を構成して、休止していないサイクルをカウントさせる。他の実施形態によると、パフォーマンスカウンタは、任意のほかのイベント、例えば変換索引バッファミス、分岐予測ミス等の発生回数をカウントするように構成されるとしてもよい。
図2Aのボックス220では、図1に示したVMM140がVM用にVMCS(例えば、VMCS132)を生成する。ボックス222から226では、VMM140はカウンタ171、173、175および177を仮想化するためのサポートを実装するようにVMCS132を構成する。ボックス222において、ゲスト状態ロードイネーブルインジケータ133は、VMエントリに応じてゲスト状態格納位置137から総合カウンタイネーブル格納位置121にゲスト値をゲスト状態ロードロジック183がロードするように、設定される。ボックス224において、ホスト状態ロードイネーブルインジケータ134は、VMエグジットに応じて、ホスト状態格納位置138から総合カウンタイネーブル格納位置121にホスト値をホスト状態ロードロジック184がロードするように、設定される。ボックス226において、ゲスト状態格納イネーブルインジケータ135は、ゲスト状態格納ロジック185が総合イネーブル格納位置121の内容をゲスト状態格納位置136に格納するように、設定される。
ボックス230において、ホスト(つまり、VMM140)からゲストへのプロセッサ120の制御の移行が開始される。例えば、VMMはVMエントリを開始させるとしてもよい。VMエントリは、VMエントリロジック181がプロセッサ120にホスト状態を保存してゲスト状態をロードするための処理またはマイクロ処理を実行させることを含むとしてもよい。ボックス232では、VMエントリロジックが、ゲスト状態ロードイネーブルインジケータ133に基づいて、ゲスト状態格納位置137から総合カウンタイネーブル格納位置121へとゲスト値をロードするか否か判断する。ゲスト状態ロードイネーブルインジケータ133が設定されている場合には、ボックス234において、ゲスト状態ロードロジック183がゲスト状態格納位置137からゲスト値を総合カウンタイネーブル格納位置121へとロードさせる。設定されていない場合は、ボックス234は実行されない。ボックス236では、VMエントリが完了してゲストに制御が移行する。ボックス238ではゲストの実行が開始または継続される。
ボックス239において、カウンタイネーブルロジック170は総合カウンタイネーブルインジケータが設定されているか否か判断する。設定されていない場合は、方法200はボックス258に進む。設定されている場合は、方法200はボックス240に進む。ボックス240において、第1のイベントが発生したか否か判断する。発生している場合、ボックス244において、第1のパフォーマンスカウンタは構成されたように動作して、つまり本実施形態の場合は、ボックス210においてキャッシュミスをカウントするべく構成されており、それにしたがって動作して、第1のパフォーマンスカウンタがインクリメントされる。ボックス250では、第2のイベントが発生したか否か判断する。発生している場合、ボックス254では、第2のパフォーマンスカウンタが構成されたように動作して、つまり本実施形態の場合は、ボックス212において第2のイベントの発生回数をカウントするように構成されており、それにしたがって動作して、第2のパフォーマンスカウンタがインクリメントされる。
ボックス258において、仮想化イベントが発生したか否か判断する。発生していなければ、方法200はボックス238に進む。発生していれば、ボックス260において、ゲストからホストへのプロセッサ120の制御の移行が開始される。VMエグジットは、VMエグジットロジック182がプロセッサ120にゲスト状態を保存してホスト状態をロードするための処理またはマイクロ処理を実行させることを含むとしてもよい。
ボックス262において、VMエグジットロジックは、ゲスト状態格納イネーブルインジケータ135に基づいて、総合カウンタイネーブル格納位置121の内容をゲスト状態格納位置137に格納するか否か判断する。ゲスト状態格納イネーブルインジケータ135が設定されていれば、ボックス264において、ゲスト状態格納ロジック185は総合カウンタイネーブル格納位置121の内容をゲスト状態格納位置137に格納する。設定されていなければ、ボックス264は実行されない。一部の実施形態においては、ゲスト状態格納イネーブルインジケータ135が設けられない。一部の実施形態によると、ゲスト状態格納ロジック185は常に、総合カウンタイネーブル格納位置121の内容をゲスト状態格納位置137に格納する。他の実施形態によると、ゲスト状態格納ロジック185は、VMエグジット処理の一部として総合カウンタイネーブル格納位置121の内容をゲスト状態格納位置137に格納することは決して行わない。一部の実施形態によると、ゲストソフトウェアによる総合カウンタイネーブル格納位置121に対するアクセスの試みによって、VMエグジットが発生するとしてもよい。ここで、ソフトウェア構成によってVMエグジットが発生するとしてもよいし(例えば、VMMは、総合カウンタイネーブル格納位置121へのアクセス時にVMエグジットが発生するように、VMCS内の制御を適切に設定しなければならない)、プロセッサに基づいてそのようなVMエグジットを強制するとしてもよい。
ボックス266において、VMエグジットロジックは、ホスト状態ロードイネーブルインジケータ134に基づいて、ホスト状態格納位置138から総合カウンタイネーブル格納位置121にホスト値をロードするか否かを判断する。ホスト状態格納イネーブルインジケータ134が設定されていれば、ボックス268において、ホスト状態ロードロジック184はホスト状態格納位置138から総合カウンタイネーブル格納位置121へとホスト値をロードさせる。設定されていなければ、ボックス268は実行されない。
ボックス270において、VMエグジットが完了して制御はホストに移行される。ボックス272において、ホストの実行が開始または継続される。
ボックス275において、カウンタイネーブルロジック170は総合カウンタイネーブルインジケータが設定されているか否か判断する。設定されていない場合は、方法200はボックス298に進む。設定されている場合は、方法200はボックス280に進む。ボックス280において、第1のイベントが発生したか否か判断する。発生している場合、ボックス284において、第1のパフォーマンスカウンタは構成されたように動作して、つまり本実施形態の場合は、ボックス210においてキャッシュミスをカウントするべく構成されており、それにしたがって動作して、第1のパフォーマンスカウンタがインクリメントされる。ボックス290では、第2のイベントが発生したか否か判断する。発生している場合、ボックス294では、第2のパフォーマンスカウンタが構成されたように動作して、つまり本実施形態の場合は、ボックス212において第2のイベントの発生回数をカウントするように構成されており、それにしたがって動作して、第2のパフォーマンスカウンタがインクリメントされる。
ボックス298において、VMエントリが発生するか否か判断する。発生する場合、方法200はボックス230に進む。発生しない場合、方法200はボックス299に進む。ボックス299において、停止またはその他の同様の命令が実行されるか否か判断する。実行されない場合、方法200はボックス272に進み、実行される場合、方法200は終了する。
図3は、ベアプラットフォームハードウェア310における本発明の別の実施形態を示す図である。当該実施形態は、仮想化アーキテクチャ100または別の仮想化アーキテクチャにおいて利用され得る。明記されていない限り、ベアプラットフォームハードウェアおよびその構成要素の説明は、ベアプラットフォームハードウェア310およびその対応する構成要素にも当てはまる。ベアプラットフォームハードウェア310は、プロセッサ320およびメモリ330を有する。
プロセッサ320は、カウンタ371、373、375および377を含む。プロセッサ320はさらに、カウンタ371、373、375および377にそれぞれ対応する、カウンタ制御格納位置372、374、376および378を含む。カウンタ制御格納位置372、374、376および378はそれぞれ、他の制御または構成情報と共に、対応するカウンタをイネーブルまたはディセーブルするためのカウンタ有効インジケータを格納するカウンタ有効格納位置を含む。またさらに、プロセッサ320は、カウンタ371、373、375および377にそれぞれ対応する、カウンタ識別子格納位置391、393、395および397を含む。カウンタ識別子格納位置391、393、395および397は、任意のサイズのレジスタもしくはその他の構造、または1以上のレジスタまたは他の構造の一部分であってよく、カウンタ371、373、375および377それぞれを識別または分類するための情報を格納する。カウンタ識別子格納位置391、393、395および397は、カウンタ371、373、375および377を一意的にまたは重複して(つまり、2つのカウンタ識別子格納位置が同じ値にプログラミングされることもあり得る)識別する識別子を格納するようにプログラミングされるとしてもよい。
VMCS332はカウンタ識別子フィールド333を有する。当該カウンタ識別子フィールド333は、本実施形態によると、カウンタ識別子格納位置391、393、395および397のそれぞれとビット数が同じであるが、他の実施形態によると、任意のビット数であってよい。他の実施形態では、カウンタ識別子フィールドが追加されるとしても良い。カウンタ識別子フィールド333は、VMCS332を生成するVMMまたはその他の任意のソフトウェアによって、カウンタ識別子格納位置391、393、395および397に格納されている値のうち1以上と一致する値または一致しない値を格納するようにプログラミングされるとしてもよい。
プロセッサ320はさらに、比較ロジック322を有する。比較ロジック322は、任意の公知の方法に従って実装され、各カウンタに対して、対応するカウンタ識別子格納位置の内容とカウンタ識別子フィールド333の内容とを比較した結果に基づいて、カウンタ一致信号を生成するとしてもよい。本実施形態によると、各カウンタのカウンタ一致信号は、対応するカウンタ識別子格納位置の内容とカウンタ識別子フィールド333の内容が一致している場合に、アサートされる。本実施形態によると、各カウンタのカウンタ一致信号は、対応するカウンタ識別子格納位置の内容が値0に等しい場合には、カウンタ識別子フィールド333の内容に関わらず、アサートされる。これは、本発明の特徴であるカウンタ識別子を利用しないソフトウェアに、カウンタ識別子の特徴を有するハードウェアで所望通りの動作を実行させるためである。別の実施形態によると、カウンタ一致ロジックは、「一致」の判断を、少なくとも部分的にVMCS内の別のフィールドの内容といったほかの要因に基づいて行うとしてもよい。例えば、インテルアーキテクチャ内のCR0、CR3またはCR4レジスタといったさまざまな制御レジスタの値を参照するとしてもよい。または、カウンタ一致ロジックは、現在実行されているソフトウェアがVMMであるかゲストであるかを判断することを含み、ゲストソフトウェアが現在実行されている場合に限ってVMCS内の1以上の制御ビットに基づいてカウンタをイネーブルするとしてもよい。
実施形態は、比較ロジックをディセーブルすることによって、またはその他の任意の所望の方法によって、カウンタ一致特徴をイネーブルまたはディセーブルするための「カウンタ一致イネーブル」制御ビットまたはフィールドを1以上含むとしてもよい。例えば、カウンタ一致イネーブルビットが設定されている場合、上述したように比較が行われる。しかし、カウンタ一致イネーブルビットがクリアされている場合、カウンタは常にイネーブルされて比較は行われず、カウンタ識別子格納位置に格納されている「0」の値は上述したような特別処理を必要としない。
各カウンタ用のカウンタ一致信号は、カウンタ制御格納位置372、374、376および378に格納されている任意のほかの関連情報と共に、カウンタ371、373、375および377の処理を制御するべくカウンタイネーブルロジック370によって使用される。あるカウンタのカウンタ一致信号がアサートされている場合、当該カウンタはその制御および構成情報に従って動作する。例えば、カウンタ制御格納位置372の内容には、「イネーブル」値に設定されている個別カウンタ有効ビットとキャッシュヒットをカウントするように設定されているイベント選択フィールドとが含まれている場合、カウンタ371はキャッシュヒットに応じてインクリメントされるとしてもよい。しかし、あるカウンタのカウンタ一致信号がアサートされていない場合、カウンタはディセーブルされてその個別制御および構成情報に従って動作しない。例えば、カウンタ制御格納位置372の内容に、「イネーブル」値に設定されている個別カウンタ有効ビットとキャッシュヒットをカウントするように設定されているイベント選択フィールドとが含まれていても、カウンタ371はキャッシュヒットに応じてインクリメントされない。
また、プロセッサ320は、カウンタ371、373、375および377の仮想化を含む仮想化をサポートする制御ロジック380を含む。制御ロジック380は、本発明に係る方法の実施形態をプロセッサ320に実行させる。例えば、図4を参照しつつ以下で説明する方法の実施形態を実行させる。一例を挙げると、プロセッサ320に、例えば仮想化をサポートする1以上のマイクロ処理の実行を、ホストまたはゲストからの仮想化命令またはその他の命令に対する応答の中に含ませる。
図4は、方法400における本発明の実施形態を示す図である。方法400は、パフォーマンスカウンタを仮想化する別の方法である。方法の実施形態はこれに限定されるわけではないが、図4に示す方法の実施形態を説明する際には図1から図3の内容を参照する。
図4のボックス410において、イベントの発生回数をカウントするようにパフォーマンスカウンタを構成する。例えば、カウンタ制御格納位置372をプログラミングすることによって、キャッシュミスをカウントするようにカウンタ371を構成するとしてもよい。ボックス412において、所望のカウンタ識別値によってカウンタ識別子格納位置391をプログラミングする。
ボックス420において、ホストがVM用にVMCS(例えばVMCS332)を生成する。ボックス422において、ホストは、カウンタ371、373、375および377の仮想化に対するサポートを実装するようにVMCS332を構成する。具体的には、ボックス412で利用されるカウンタ識別値に等しい値でカウンタ識別子フィールド333をプログラミングする。本実施形態によると、任意の数のほかのゲストまたはホストに対応する、VMCS332またはその他の任意のVMCS内の任意の数のほかのカウンタ識別子フィールドもまた、同じ値でプログラミングして、任意の数のゲストまたはホストが1以上のカウンタを共有できるようにするとしてもよい。
ボックス430においては、プロセッサ320の制御がホストからゲストへと移行される。ボックス432では、ゲストの実行が開始または継続される。ボックス434では、カウンタ識別子格納位置391とカウンタ識別子フィールド333との比較に基づいてカウンタ一致信号を生成する。本実施形態によると、カウンタ識別子格納位置の内容がカウンタ識別子フィールドの内容と一致している場合に、カウンタ一致信号がアサートされる。
ボックス440において、イベントの発生、つまり本実施形態ではキャッシュミスが認識される。ボックス442において、カウンタイネーブルロジック370は、カウンタ一致信号と対応するカウンタ制御格納位置(例えば、カウンタ制御格納位置372)におけるカウンタ有効格納位置の内容とに基づいてパフォーマンスカウンタをインクリメントするか否か判断する。
カウンタ一致信号がアサートされていてカウンタのカウンタ有効インジケータが設定されていない場合、ボックス444では、パフォーマンスカウンタは構成通りに動作し、つまり本実施形態によると、ボックス410においてキャッシュミスをカウントするように構成されており、これにしたがって動作して、パフォーマンスカウンタはインクリメントされる。カウンタ一致信号がアサートされていない場合、またはカウンタの有効インジケータが設定されていない場合、ボックス444は実行されない。
本発明の範囲内では、図2Aおよび図2Bならびに図4に図示されている方法は、異なる順序で実行されるとしてもよいし、図示されているボックスを省略して実行されるとしてもよいし、ボックスを追加して実行されるとしてもよいし、または、ボックスの並び替え、削除または追加を組み合わせて実行されるとしてもよい。例えば、VMCSはVMCSをどの順序で構成するとしてもよい。例えば、ボックス222から226はどのような順序で並び替えられるとしてもよい。
プロセッサ120、または本発明の実施形態に応じて設計されるその他の任意の構成要素または構成要素の一部分は、生成、シミュレーション、製造といったさまざまな段階で設計され得る。設計を表現するデータは、多くの方式で設計を表現し得る。まず、シミュレーションで利用し易いように、ハードウェアはハードウェア記述言語またはその他の機能記述言語を用いて表現されるとしてもよい。このような構成に加えて、またはこのような構成に代えて、設計プロセスのある段階において、ロジックおよび/またはトランジスタゲートを備える回路レベルのモデルを形成するとしてもよい。さらに、大半の設計では、ある段階において、さまざまなデバイスの物理的配置を表すデータによって設計をモデルかし得るレベルに到達する。従来の半導体プロセス技術が用いられる場合、デバイス配置モデルを表現するデータは、集積回路を製造するために用いられるマスクを形成する複数の異なるマスク層におけるさまざまな特徴の有無を特定するデータであってもよい。
設計をどのように表現する場合であっても、データは機械可読媒体の任意の形式で格納され得る。機械可読媒体とは、情報を送信するべく変調または生成される光波または電波、メモリ、もしくはディスク等の磁気または光学格納媒体であってよい。このような媒体はいずれも、設計または本発明の実施形態で用いられるほかの情報を「搬送」、または「指し示す」としてよい。当該情報を指し示すまたは搬送する搬送電波が送信されると、電気信号の複写、バッファリング、または再送が実行される限り、新しい複写が作成される。このように、通信業者またはネットワークプロバイダの仕事は、本発明に係る技術を実施する物品、例えば搬送波の複写を作成することを含むとしてよい。
以上に、パフォーマンスカウンタを仮想化する装置、方法およびシステムを開示した。任意の実施形態を説明し添付図面で図示しているが、本開示内容を参照することで当業者は他のさまざまな変形例に想到すると思われるので、上述の実施形態は単に例示を目的としたもので多岐にわたる本発明を限定するものではなく、本発明は図示および説明された具体的な構成および配置に限定されるものではないと理解されたい。成長速度が速く今後の発展の予測が簡単ではないこのような技術分野においては、開示された実施形態は、その配置および詳細な内容を、本開示内容の原則または特許請求の範囲から離れることなく、技術の進歩を可能にすることによって支援されて、容易に変形可能であるとしてもよい。

Claims (15)

  1. 装置であって、
    プロセッサと、
    前記プロセッサ上でのプログラムコードの実行に関するイベントをカウントする複数のカウンタと、
    前記複数のカウンタのそれぞれを個別に制御する情報を格納する複数のカウンタ制御格納位置と、
    総合カウンタイネーブルインジケータを格納する総合カウンタイネーブル格納位置と、
    前記総合カウンタイネーブルインジケータに基づいて前記複数のカウンタを前記複数のカウンタ制御格納位置に格納された情報に基づく個別制御に応じて動作させるか、前記複数のカウンタ制御格納位置に格納された情報に基づく個別制御に応じて動作させずに前記複数のカウンタをディセーブルさせるかを制御するカウンタイネーブルロジックと、
    仮想マシンモニタによって構成された仮想マシン制御構造と、
    前記プロセッサの制御を前記仮想マシンモニタとゲストとの間で移行させる仮想マシン制御ロジックと、
    を備え、
    前記仮想マシン制御構造は、
    前記ゲストの状態を示すゲスト値を格納するゲスト状態格納位置と、
    前記仮想マシンモニタの状態を示すホスト値を格納するホスト状態格納位置と
    を有し、
    前記仮想マシン制御ロジックは、前記仮想マシンモニタと前記ゲストとの間での移行の一環として、前記複数のカウンタのイネーブルまたはディセーブルを制御するべく、前記仮想マシンモニタから前記ゲストへの制御の移行に応じて、前記ゲスト状態格納位置が格納している前記ゲスト値を前記総合カウンタイネーブル格納位置へとロードさせるゲスト状態ロードロジックを有し、
    前記仮想マシンモニタは、前記ゲストが実行されている間のみ発生するイベントのカウントをイネーブルさせるか、前記仮想マシンモニタが実行されている間のみ発生するイベントのカウントをイネーブルさせるか、または前記仮想マシンモニタが実行されている間および前記ゲストが実行されている間に発生するイベントのカウントをイネーブルさせるかを制御し、
    前記仮想マシンモニタは、前記仮想マシンモニタが実行されている間および前記ゲストが実行されている間に発生するイベントカウントをイネーブルさせる場合、複数のゲスト毎に、前記ゲストと前記仮想マシンモニタとの間での移行の一環として、前記複数のカウンタをイネーブルさせるかディセーブルさせるかを制御する
    装置。
  2. 前記仮想マシン制御ロジックはさらに、
    前記ゲストから前記仮想マシンモニタへの制御の移行に応じて、前記ホスト状態格納位置が格納している前記ホスト値を前記総合カウンタイネーブル格納位置へとロードさせるホスト状態ロードロジックを有する
    請求項1に記載の装置。
  3. 前記仮想マシン制御ロジックはさらに、前記ゲストから前記仮想マシンモニタへの制御の移行に応じて、前記総合カウンタイネーブル格納位置の内容を前記ゲスト状態格納位置に格納させるゲスト状態格納ロジックを有する
    請求項に記載の装置。
  4. 前記仮想マシン制御ロジックはさらに、前記仮想マシンモニタから前記ゲストへの制御の移行に応じて、前記総合カウンタイネーブル格納位置の内容を前記ホスト状態格納位置に格納するホスト状態格納ロジックを有する
    請求項3に記載の装置。
  5. 前記仮想マシン制御ロジックはさらに、前記仮想マシン制御構造が有するゲスト状態ロードイネーブルインジケータに基づいて、前記ゲスト状態格納位置が格納している前記ゲスト値を前記総合カウンタイネーブル格納位置へとロードさせるか否かを判断する仮想マシンエントリロジックを有する
    請求項1から4のいずれか1項に記載の装置。
  6. 前記仮想マシン制御ロジックはさらに、前記仮想マシン制御構造が有するホスト状態ロードイネーブルインジケータに基づいて、前記ホスト状態格納位置が格納している前記ホスト値を前記総合カウンタイネーブル格納位置へとロードさせるか否かを判断する仮想マシンエグジットロジックを有する
    請求項2から4のいずれか1項に記載の装置。
  7. 前記仮想マシン制御ロジックはさらに、前記仮想マシン制御構造が有するゲスト状態格納イネーブルインジケータに基づいて、前記総合カウンタイネーブル格納位置の内容を前記ゲスト状態格納位置に格納させるか否かを判断する仮想マシンエグジットロジックを有する
    請求項3又は4に記載の装置。
  8. 総合カウンタイネーブルインジケータを総合カウンタイネーブル格納位置に格納する段階と、
    プロセッサ上でのプログラムコードの実行に関するイベントをカウントする複数のカウンタを構成して、第1のイベントおよび第2のイベントの発生回数をカウントする段階と、
    前記プロセッサの仮想マシンモニタからゲストへの制御の移行に応じて、前記ゲストの状態を示すゲスト値を格納するゲスト状態格納位置と、前記仮想マシンモニタの状態を示すホスト値を格納するホスト状態格納位置とを有する仮想マシン制御構造の前記ゲスト状態格納位置から前記総合カウンタイネーブル格納位置へ前記ゲスト値をロードする段階と、
    前記総合カウンタイネーブル格納位置の内容と、前記第1のイベントの第1の発生と、前記第2のイベントの第1の発生とに基づいて、前記複数のカウンタのカウント回数を変更するか否か判断する段階と
    を備え、
    前記ゲストが実行されている間のみ発生するイベントのカウントをイネーブルさせるか前記仮想マシンモニタが実行されている間のみ発生するイベントのカウントをイネーブルさせるか、または前記仮想マシンモニタが実行されている間および前記ゲストが実行されている間に発生するイベントのカウントをイネーブルさせるかを制御する段階と
    前記仮想マシンモニタが実行されている間および前記ゲストが実行されている間に発生するイベントをカウントさせる場合、複数のゲスト毎に、前記ゲストと前記仮想マシンモニタとの間での移行の一環として、前記複数のカウンタイネーブルまたはディセーブルを制御する段階
    をさらに備える方法。
  9. 前記ホスト状態格納位置から前記総合カウンタイネーブル格納位置へとホスト値をロードする段階と、
    前記総合カウンタイネーブル格納位置の内容と、前記第1のイベントの第2の発生と、前記第2のイベントの第2の発生とに基づいて、前記複数のカウンタのカウント回数を変更するか否か判断する段階と
    をさらに備える請求項8に記載の方法。
  10. 前記ゲストから前記仮想マシンモニタへの前記プロセッサの制御の移行に応じて、前記ゲスト状態格納位置に前記総合カウンタイネーブル格納位置の内容を格納する段階
    をさらに備える請求項9に記載の方法。
  11. 前記仮想マシン制御構造が有する、前記プロセッサに前記ゲスト値をロードさせるか否かを示すゲスト状態ロードイネーブルインジケータに基づいて、前記プロセッサに前記ゲスト値をロードさせる段階
    をさらに備える請求項8に記載の方法。
  12. 前記仮想マシン制御構造が有する、前記プロセッサに前記ホスト値をロードさせるか否かを示すホスト状態ロードイネーブルインジケータに基づいて、前記プロセッサに前記ホスト値をロードさせる段階
    をさらに備える請求項9に記載の方法。
  13. 前記仮想マシン制御構造が有する、前記プロセッサに前記総合カウンタイネーブル格納位置の内容を格納させるか否かを示すゲスト状態格納イネーブルインジケータに基づいて、前記プロセッサに前記総合カウンタイネーブル格納位置の内容を格納させる段階
    をさらに備える請求項9に記載の方法。
  14. 仮想マシンを制御するためのデータ構造を格納するメモリと、
    プロセッサと
    を備えるシステムであって、
    前記プロセッサは、
    前記プロセッサ上でのプログラムコードの実行に関するイベントをカウントする複数のカウンタと、
    前記複数のカウンタのそれぞれを個別に制御する情報を格納する複数のカウンタ制御格納位置と、
    総合カウンタイネーブルインジケータを格納する総合カウンタイネーブル格納位置と、
    前記総合カウンタイネーブルインジケータに基づいて前記複数のカウンタを前記複数のカウンタ制御格納位置に格納された情報に基づく個別制御に応じて動作させるか、前記複数のカウンタ制御格納位置に格納された情報に基づく個別制御に応じて動作させずに前記複数のカウンタをディセーブルさせるかを制御するカウンタイネーブルロジックと、
    仮想マシンモニタによって構成された仮想マシン制御構造と、
    前記プロセッサの制御を前記仮想マシンモニタとゲストとの間で移行させる仮想マシン制御ロジックと、
    を有し、
    前記仮想マシン制御構造は、
    前記ゲストの状態を示すゲスト値を格納するゲスト状態格納位置と、
    前記仮想マシンモニタの状態を示すホスト値を格納するホスト状態格納位置と
    を含み、
    前記仮想マシン制御ロジックは、前記仮想マシンモニタと前記ゲストとの間での移行の一環として、前記複数のカウンタのイネーブルまたはディセーブルを制御するべく、前記仮想マシンモニタから前記ゲストへの制御の移行に応じて、前記ゲスト状態格納位置が格納している前記ゲスト値を前記総合カウンタイネーブル格納位置へとロードさせるゲスト状態ロードロジックを含み、
    前記仮想マシンモニタは、前記ゲストが実行されている間のみ発生するイベントのカウントをイネーブルさせるか、前記仮想マシンモニタが実行されている間のみ発生するイベントのカウントをイネーブルさせるか、または前記仮想マシンモニタが実行されている間および前記ゲストが実行されている間に発生するイベントのカウントをイネーブルさせるかを制御し、
    前記仮想マシンモニタは、前記仮想マシンモニタが実行されている間および前記ゲストが実行されている間に発生するイベントカウントをイネーブルさせる場合、複数のゲスト毎に、前記ゲストと前記仮想マシンモニタとの間での移行の一環として、前記複数のカウンタをイネーブルさせるかディセーブルさせるかを制御する
    システム。
  15. 前記メモリはダイナミックランダムアクセスメモリである
    請求項14に記載のシステム。
JP2013022629A 2006-08-08 2013-02-07 パフォーマンスカウンタの仮想化 Active JP5571208B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/501,632 2006-08-08
US11/501,632 US8607228B2 (en) 2006-08-08 2006-08-08 Virtualizing performance counters

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2009523936A Division JP2010500664A (ja) 2006-08-08 2007-08-06 パフォーマンスカウンタの仮想化

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2014129907A Division JP5969550B2 (ja) 2006-08-08 2014-06-25 パフォーマンスカウンタの仮想化

Publications (2)

Publication Number Publication Date
JP2013109777A JP2013109777A (ja) 2013-06-06
JP5571208B2 true JP5571208B2 (ja) 2014-08-13

Family

ID=39052292

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2009523936A Pending JP2010500664A (ja) 2006-08-08 2007-08-06 パフォーマンスカウンタの仮想化
JP2013022629A Active JP5571208B2 (ja) 2006-08-08 2013-02-07 パフォーマンスカウンタの仮想化
JP2014129907A Active JP5969550B2 (ja) 2006-08-08 2014-06-25 パフォーマンスカウンタの仮想化

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2009523936A Pending JP2010500664A (ja) 2006-08-08 2007-08-06 パフォーマンスカウンタの仮想化

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2014129907A Active JP5969550B2 (ja) 2006-08-08 2014-06-25 パフォーマンスカウンタの仮想化

Country Status (7)

Country Link
US (2) US8607228B2 (ja)
JP (3) JP2010500664A (ja)
CN (2) CN103500137B (ja)
BR (1) BRPI0715394A2 (ja)
DE (1) DE112007001714T5 (ja)
TW (1) TWI366789B (ja)
WO (1) WO2008021794A1 (ja)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8607228B2 (en) 2006-08-08 2013-12-10 Intel Corporation Virtualizing performance counters
EP2133454B1 (en) * 2007-03-26 2019-04-24 Mitsui Chemicals, Inc. Mixed continuous fiber nonwoven fabric and process for manufacturing the same
US8032892B2 (en) * 2007-06-26 2011-10-04 International Business Machines Corporation Message passing with a limited number of DMA byte counters
US8595739B2 (en) * 2008-07-07 2013-11-26 International Business Machines Corporation Prioritized resource scanning
US9449314B2 (en) * 2008-10-02 2016-09-20 International Business Machines Corporation Virtualization of a central processing unit measurement facility
US8650562B2 (en) * 2009-06-12 2014-02-11 International Business Machines Corporation Method and apparatus for scalable monitoring of virtual machine environments combining base virtual machine and single monitoring agent for measuring common characteristics and individual virtual machines measuring individualized characteristics
GB2474666B (en) * 2009-10-21 2015-07-15 Advanced Risc Mach Ltd Hardware resource management within a data processing system
US20110107328A1 (en) * 2009-11-02 2011-05-05 Advanced Micro Devices, Inc. Virtual machine device and methods thereof
US8798962B2 (en) 2011-03-21 2014-08-05 International Business Machines Corporation Virtualized abstraction with built-in data alignment and simultaneous event monitoring in performance counter based application characterization and tuning
US9063762B2 (en) 2011-08-26 2015-06-23 Vmware, Inc. Methods, apparatus, and articles of manufacture to virtualize performance counters
JP5962359B2 (ja) * 2012-09-10 2016-08-03 富士通株式会社 プロセッサおよびプロセッサの評価方法
US10558437B1 (en) 2013-01-22 2020-02-11 Altera Corporation Method and apparatus for performing profile guided optimization for high-level synthesis
US9176830B2 (en) * 2013-05-24 2015-11-03 Hyundai Motor Company Method for determining software error in virtualization based integrated control system
US9298651B2 (en) * 2013-06-24 2016-03-29 International Business Machines Corporation Continuous in-memory accumulation of hardware performance counter data
WO2015083282A1 (ja) * 2013-12-06 2015-06-11 株式会社日立製作所 計算機および負荷測定方法
US9304874B2 (en) 2014-02-03 2016-04-05 Red Hat Israel, Ltd. Virtual machine-guest driven state restoring by hypervisor
US9223574B2 (en) * 2014-03-27 2015-12-29 International Business Machines Corporation Start virtual execution instruction for dispatching multiple threads in a computer
US9213569B2 (en) * 2014-03-27 2015-12-15 International Business Machines Corporation Exiting multiple threads in a computer
US9760302B2 (en) 2014-10-03 2017-09-12 International Business Machines Corporation Servicing multiple counters based on a single access check
US9477471B1 (en) * 2015-07-07 2016-10-25 Versa Networks, Inc. Maintaining lock-free, high frequency, high performance counters in software
CN106775919B (zh) * 2015-11-24 2020-03-13 龙芯中科技术有限公司 状态信息控制方法及装置
US9904587B1 (en) 2015-12-18 2018-02-27 Amazon Technologies, Inc. Detecting anomalous behavior in an electronic environment using hardware-based information
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
US10698873B2 (en) 2017-03-30 2020-06-30 Microsoft Technology Licensing, Llc Performance data storage
US11822411B2 (en) * 2021-05-06 2023-11-21 Apple Inc. Telemetry push aggregation

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US341757A (en) 1886-05-11 Compound for preventing window-frost
US274090A (en) 1883-03-13 feldmann
US4280330A (en) 1977-09-19 1981-07-28 Verdell Harris Vehicle heating and cooling system
US4225059A (en) 1978-12-14 1980-09-30 Christopher Kappos Portable beverage cooler and dispenser
US4384663A (en) 1981-07-27 1983-05-24 Smith Williams Margie M Mounting brackets for trailer tool box
US4496016A (en) 1981-11-11 1985-01-29 Derek Unsworth Land vehicles
US4975836A (en) 1984-12-19 1990-12-04 Hitachi, Ltd. Virtual computer system
JPH0833851B2 (ja) * 1986-03-15 1996-03-29 株式会社日立製作所 仮想計算機のモニタリング方式
JPS6320549A (ja) * 1986-07-14 1988-01-28 Hitachi Ltd モニタ情報収集方式
JPH0769858B2 (ja) * 1987-06-02 1995-07-31 富士通株式会社 仮想計算機の性能測定方式
JPH03269640A (ja) 1990-03-19 1991-12-02 Nec Corp 仮想計算機システム
US5307645A (en) 1991-07-02 1994-05-03 Pannell Bobby L Air conditioning system for a recreational vehicle
US5584188A (en) 1995-05-25 1996-12-17 Tippmann; Joseph R. Refrigerated beverage trailer
US7191440B2 (en) 2001-08-15 2007-03-13 Intel Corporation Tracking operating system process and thread execution and virtual machine execution in hardware or in a virtual machine monitor
EP1331564A1 (en) * 2002-01-24 2003-07-30 Siemens Aktiengesellschaft Fuzzy logic based intelligent load control for distributed environment
US7127548B2 (en) 2002-04-16 2006-10-24 Intel Corporation Control register access virtualization performance improvement in the virtual-machine architecture
JP3815557B2 (ja) 2002-08-27 2006-08-30 ソニー株式会社 符号化装置及び符号化方法、並びに復号装置及び復号方法
US6619065B1 (en) 2002-11-01 2003-09-16 Bruce H. Burton Heating ventilating and air conditioning worker's servicing cart
US7793286B2 (en) * 2002-12-19 2010-09-07 Intel Corporation Methods and systems to manage machine state in virtual machine operations
US7069413B1 (en) 2003-01-29 2006-06-27 Vmware, Inc. Method and system for performing virtual to physical address translations in a virtual machine monitor
US7487502B2 (en) * 2003-02-19 2009-02-03 Intel Corporation Programmable event driven yield mechanism which may activate other threads
JP2004318538A (ja) * 2003-04-17 2004-11-11 Fujitsu Ltd 性能モニタリング方式
US7698397B2 (en) * 2003-06-27 2010-04-13 Microsoft Corporation Method and framework for providing system performance information
US20050076186A1 (en) * 2003-10-03 2005-04-07 Microsoft Corporation Systems and methods for improving the x86 architecture for processor virtualization, and software systems and methods for utilizing the improvements
US7552426B2 (en) * 2003-10-14 2009-06-23 Microsoft Corporation Systems and methods for using synthetic instructions in a virtual machine
US7392370B2 (en) * 2004-01-14 2008-06-24 International Business Machines Corporation Method and apparatus for autonomically initiating measurement of secondary metrics based on hardware counter values for primary metrics
US20050183065A1 (en) * 2004-02-13 2005-08-18 Wolczko Mario I. Performance counters in a multi-threaded processor
US9189230B2 (en) * 2004-03-31 2015-11-17 Intel Corporation Method and system to provide concurrent user-level, non-privileged shared resource thread creation and execution
US7840962B2 (en) * 2004-09-30 2010-11-23 Intel Corporation System and method for controlling switching between VMM and VM using enabling value of VMM timer indicator and VMM timer value having a specified time
US8621458B2 (en) 2004-12-21 2013-12-31 Microsoft Corporation Systems and methods for exposing processor topology for virtual machines
US7406834B2 (en) 2004-12-27 2008-08-05 Dwight Williams Self-contained mobile walk-in cooler
FR2881241B1 (fr) * 2005-01-24 2007-05-04 Meiosys Soc Par Actions Simpli Procede d'optimisation de la journalisation et du rejeu d'application multi-taches dans un systeme informatique mono-processeur ou multi-processeurs
US7548964B2 (en) * 2005-10-11 2009-06-16 International Business Machines Corporation Performance counters for virtualized network interfaces of communications networks
US7788664B1 (en) * 2005-11-08 2010-08-31 Hewlett-Packard Development Company, L.P. Method of virtualizing counter in computer system
US8607228B2 (en) 2006-08-08 2013-12-10 Intel Corporation Virtualizing performance counters
GB2474666B (en) 2009-10-21 2015-07-15 Advanced Risc Mach Ltd Hardware resource management within a data processing system
US20110107328A1 (en) 2009-11-02 2011-05-05 Advanced Micro Devices, Inc. Virtual machine device and methods thereof

Also Published As

Publication number Publication date
JP2010500664A (ja) 2010-01-07
US20080040715A1 (en) 2008-02-14
DE112007001714T5 (de) 2009-06-25
JP2013109777A (ja) 2013-06-06
US8607228B2 (en) 2013-12-10
CN103500137A (zh) 2014-01-08
US20140053155A1 (en) 2014-02-20
JP5969550B2 (ja) 2016-08-17
CN101490646B (zh) 2013-10-16
BRPI0715394A2 (pt) 2013-06-25
TWI366789B (en) 2012-06-21
CN101490646A (zh) 2009-07-22
WO2008021794A1 (en) 2008-02-21
US9244712B2 (en) 2016-01-26
JP2014211891A (ja) 2014-11-13
TW200825904A (en) 2008-06-16
CN103500137B (zh) 2017-01-11

Similar Documents

Publication Publication Date Title
JP5571208B2 (ja) パフォーマンスカウンタの仮想化
US10901772B2 (en) Virtualization exceptions
US20200341921A1 (en) Virtualizing interrupt prioritization and delivery
US8230203B2 (en) Detecting spin loops in a virtual machine environment
US8312452B2 (en) Method and apparatus for a guest to access a privileged register
US7506121B2 (en) Method and apparatus for a guest to access a memory mapped device
US8819699B2 (en) Controlling virtual machines based on performance counters
TWI620124B (zh) 虛擬機器控制結構陰影化技術
US20150186659A1 (en) Modifying memory permissions in a secure processing environment
US8370559B2 (en) Executing a protected device model in a virtual machine
US20160188354A1 (en) Efficient enabling of extended page tables
US20210124601A1 (en) Implementing high-performance virtual machines for bare metal simulation
US8291415B2 (en) Paging instruction for a virtualization engine to local storage

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140128

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140425

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140527

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140625

R150 Certificate of patent or registration of utility model

Ref document number: 5571208

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250