CN101490646B - 虚拟化性能计数器 - Google Patents

虚拟化性能计数器 Download PDF

Info

Publication number
CN101490646B
CN101490646B CN2007800259423A CN200780025942A CN101490646B CN 101490646 B CN101490646 B CN 101490646B CN 2007800259423 A CN2007800259423 A CN 2007800259423A CN 200780025942 A CN200780025942 A CN 200780025942A CN 101490646 B CN101490646 B CN 101490646B
Authority
CN
China
Prior art keywords
counter
virtual machine
vmcs
client
logic
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
CN2007800259423A
Other languages
English (en)
Other versions
CN101490646A (zh
Inventor
E·科塔-罗布尔斯
G·奈格
S·贝内特
A·安德森
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
Priority to CN201310403619.2A priority Critical patent/CN103500137B/zh
Publication of CN101490646A publication Critical patent/CN101490646A/zh
Application granted granted Critical
Publication of CN101490646B publication Critical patent/CN101490646B/zh
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)

Abstract

公开了用于对性能计数器进行虚拟化的装置、方法和系统的实施例。在一个实施例中,一种装置包括计数器、计数器启用存储单元、计数器启用逻辑以及虚拟机控制逻辑。计数器启用存储单元用于存储计数器启用指示符。计数器启用逻辑用于基于计数器启用指示符来启用计数器。虚拟机控制逻辑用于向客户转移该装置的控制权。虚拟机控制逻辑包括客户状态加载逻辑,其用于针对该装置的控制权向客户的转移而使来自虚拟机控制结构的客户值被加载到计数器启用存储单元中。

Description

虚拟化性能计数器
技术领域
本公开内容属于信息处理的领域,并且更明确地属于在虚拟化环境中使用性能计数器的领域。
背景技术
通常,信息处理系统中虚拟化的概念允许在单个信息处理系统上运行一个或更多操作系统(每个是一个“OS”)的多个实例,即便每个OS被设计为对系统及其资源具有完全、直接的控制权也可如此。虚拟化被典型地通过使用软件(例如,虚拟机监视器或“VMM”)来实现,其为每个OS提供一个拥有虚拟资源的“虚拟机”(“VM”),该虚拟资源包括该OS可以完全且直接控制的一个或更多虚拟处理器,而VMM维护用于执行虚拟化策略(例如在各VM之间共享和/或分配物理资源)的系统环境(“虚拟化环境”)。每个OS以及任何其它运行在VM上的软件被称作“客户(guest)”或“客户软件”,而“宿主(host)”或“宿主软件”是诸如VMM这样的运行在虚拟化环境之外的软件。
信息处理系统中的物理处理器可以例如通过支持用于进入虚拟化环境以在VM中的虚拟处理器(即,受到VMM施加的限制的物理处理器)上运行客户的指令,来支持虚拟化。在该虚拟化环境中,可以截听某些事件、操作和情况(例如要求访问特权寄存器(privileged register)或者资源的外部中断或尝试),即,使处理器退出虚拟化环境以便VMM可以进行操作(例如,实现虚拟化策略)。物理处理器还可以支持其它用来维护虚拟化环境的指令,并且物理处理器可以包括指示或控制该物理处理器的虚拟化能力的存储器位或寄存器位。
支持虚拟化环境的物理处理器可以包括用于记录性能监测信息的性能计数器。典型地,每个性能计数器将会由与该计数器相关的一个或更多控制或配置寄存器、或一个或更多控制或配置寄存器的部分进行控制。为了虚拟化这些性能计数器,客户与宿主之间或者两个客户之间的每个转换将典型地需要:保存所有计数器及其相关控制寄存器的状态,以及为所有计数器及其相关控制寄存器加载新的状态。
附图说明
在附图中以示例的方式而非限制的方式说明了本发明。
图1用一种虚拟化架构说明了本发明的一个实施例。
图2用一种用于对性能计数器进行虚拟化的方法说明了本发明的一个实施例。
图3用一种虚拟化架构说明了本发明的另一个实施例。
图4用一种用于对性能计数器进行虚拟化的方法说明了本发明的另一个实施例。
具体实施方式
以下描述了用于对性能计数器进行虚拟化的装置、方法和系统的实施例。在该说明书中,可以给出许多特定细节,例如部件和系统配置,以供更细致了解本发明。然而,本领域的技术人员可以理解,在没有这些特定细节的情况下也可以实现本发明。此外,没有详细示出一些众所周知的结构、电路等等,以便避免不必要地模糊本发明。
通过降低在宿主和客户之间以及多个客户之间进行转换时所必须保存和加载的状态信息量,可以提高虚拟化环境的性能。本发明的实施例可以用来对性能计数器或其它计数器进行虚拟化,而不需要保存和加载计数器及其相关控制寄存器的内容。因此,可以提高当转换时要保存计数器及其相关控制寄存器的内容的虚拟化环境的性能。本发明的实施例提供了:对于任意多个宿主和客户,性能计数器都能被高效地启用(enable)或禁用(disable);分配性能计数器用于宿主或客户的排他使用;以及在任意多个宿主和/或客户之间共享性能计数器。
图1用虚拟化架构100说明了本发明的一个实施例。在图1中,裸平台硬件110可以是任何能够执行任意OS或VMM软件的数据处理装置。例如,裸平台硬件可以是个人计算机、大型计算机、便携式计算机、手持设备、机顶盒、服务器或任意其它计算系统的平台硬件。裸平台硬件110包括处理器120和存储器130。
处理器120可以是任何类型的处理器,包括通用微处理器(例如,英特尔
Figure G2007800259423D00031
奔腾系列处理器、安腾
Figure G2007800259423D00033
系列处理器、或英特尔
Figure G2007800259423D00034
公司的其它系列处理器中的处理器),或来自其它公司的其它处理器,或者数字信号处理器或微控制器。尽管图1仅示出一个这种处理器120,但是裸平台硬件110可以包括任意多个处理器,包括任意多个多核处理器(每个拥有任意多个执行内核)以及任意多个多线程处理器(每个拥有任意多个线程)。
存储器130可以是静态或动态随机存取存储器、基于半导体的只读或闪速存储器、磁盘或光盘存储器、处理器120可读的任何其它类型的介质、或任意这样的介质的组合。处理器120和存储器130可以根据任何已知的方法(例如,直接或间接地通过一个或更多总线、点到点的连接、或其它有线的或无线的连接)来互相耦合或进行通信。裸平台硬件110还可以包括任意多个附加的设备或连接。
除裸硬件平台110之外,图1还示出了VMM 140、VM 150和160、客户操作系统152和162、以及应用程序154、155、164和165。
VMM 140可以是任何被安装在裸平台硬件110上或可由其访问的软件、固件或硬件宿主,其用于向客户提供VM(即裸平台硬件110的抽象),或用于创建VM、管理VM及实现虚拟化策略。在其它实施例中,宿主可以是任何VMM、管理程序(hypervisor)、OS或其它能够控制裸平台硬件110的软件、固件或硬件。客户可以是任何OS、任何VMM(包括VMM 140的另一实例)、任何管理程序、或者任何应用程序或其它软件。
每个客户希望根据VM上提供的处理器和平台的架构来访问物理资源,例如裸平台硬件110的处理器和平台寄存器、存储器以及输入/输出设备。图1示出两个VM,150和160,在VM 150上安装有客户OS 152及客户应用程序154和155,以及在VM 160上安装有客户OS 162及客户应用程序164和165。尽管图1仅示出两个VM,并且每个VM有两个应用程序,但是在本发明的范围之内,可以创建任意多个VM,并且在每个VM上可以运行任意多个应用程序。
客户能够访问的资源可以或者被归类为“特权”资源,或者被归类为“非特权”资源。对于特权资源,VMM 140帮助实现了客户希望的功能,但保留对该资源的最终控制权。非特权资源不需要由VMM 140进行控制,并且可以被客户直接访问。
此外,每个客户OS期望处理各种事件,例如异常(举例来说,页面错误和常规保护错误)、中断(举例来说,硬件中断和软件中断)和平台事件(举例来说,初始化和系统管理中断)。这里,这些异常、中断和平台事件被一并、且被各自称作“虚拟化事件”。这些虚拟化事件中的一些事件被称作“特权事件”,这是因为它们必须由VMM 140来进行处理,以确保VM 150和160的正确操作、确保VMM 140免受客户的不当操作、以及确保客户免受其它客户的不当操作。
在任意给定的时刻,处理器120可能正在执行来自VMM 140或任何客户的指令,因此VMM 140或该客户可能正在处理器120上运行或者控制着处理器120。当发生特权事件或客户试图访问特权资源时,可以把控制权从客户转移给VMM 140。这里,从客户向VMM 140转移控制权被称作“VM退出(exit)”。在适当地处理该事件或帮助实现对资源的访问之后,VMM 140可以把控制权归还给客户。这里,从VMM 140向客户转移控制权被称作“VM进入(entry)”。
在图1的实施例中,处理器120根据存储在虚拟机控制结构(“VMCS”)132中的数据来控制VM 150和VM 160的操作。VMCS 132是一种结构,其可以包含:一个客户或多个客户的状态、VMM 140的状态、指示VMM140将如何控制一个客户或多个客户的操作的执行控制信息、关于VM退出和VM进入的信息、以及任意其它这样的信息。处理器120从VMCS 132读取信息,以确定VM的执行环境并限制VM的行为。在该实施例中,VMCS 132被存储在存储器130中。在一些实施例中,使用多个VMCS以支持多个VM。尽管图1示出VMCS 132被存储在存储器130中,但是本发明并不要求在存储器中存储VMCS。
处理器120包括计数器171、173、175和177。在该实施例中,计数器171、173、175和177是性能计数器,其可以由运行在处理器120上的软件进行编程以便记录性能监测信息;然而,其它实施例可以包括任意多个计数器和/或任意类型或长度的计数器。例如,可以对任意一个计数器171、173、175和177进行编程,以便每次发生选定的事件时该计数器加1,或在选定的事件期间每过一个时钟周期该计数器加1。所述事件可以包括各种涉及在处理器120上执行程序代码的事件中的任意事件,例如,分支误预测、高速缓存命中、高速缓存未命中、旁路转换缓冲(translationlookaside buffer)命中、旁路转换缓冲未命中等等。因此,可以使用性能计数器171、173、175和177来调节或剖析程序代码,以在处理器120上产生可能的最优性能。
处理器120还包括分别对应于计数器171、173、175和177的计数器控制存储单元172、174、176和178。计数器控制存储单元172、174、176和178可以是寄存器或任何其它具有任意长度的结构、或一个或更多具有其它结构的寄存器的部分,分别用来存储用于对计数器171、173、175和177进行控制或配置的信息。可以对计数器控制存储单元172、174、176和178进行编程来分别存储用于对计数器171、173、175和177进行控制或配置的信息,例如这样的信息:其用于启用计数器、用于选择将要进行计数的事件、用于选择计数方法(例如,事件发生的次数或事件的持续时间)、用于选择计数条件(例如,基于检测到事件时正在执行的软件的特权等级)、以及用于设置任何其它控制、配置或其它变量。
处理器120还包括全局计数器启用存储单元121,其可以是控制寄存器、配置寄存器、模式相关寄存器(model specific register)中的一个或更多比特,或用来存储全局计数器启用指示符的任意其它存储单元。在一个实施例中,全局计数器启用存储单元121可以是可编程寄存器中的一个比特,其中该比特可以被设置为逻辑1,以便将全局计数器启用指示符设置为“启用”值,或者该比特可以被设置为逻辑0,以便将全局计数器启用指示符设置为“禁用”值。
在另一个实施例中,全局计数器启用存储单元可以包括针对每个性能计数器的一个比特,其中每个比特可以被设置为逻辑1,以便将用于相对应的性能计数器的单个计数器启用指示符设置为“启用”值。在其它实施例中,全局计数器启用存储单元中的一个比特或字段可以对应于一组的任意多个性能计数器。在任意这些实施例中,全局启用存储单元可以包括对应于任意多个性能计数器的任意多个比特或字段,并且还可以包括或关联于一个或更多附加的启用指示符(其可以被用来控制任意多个更直接控制性能计数器的比特或字段)。例如,一个存储单元可以包括用于存储“计数器启用向量”的字段,该字段包括针对每个计数器的一个比特,并且该存储单元内的一个附加比特或在处理器120或虚拟化架构100的其它地方的存储单元或数据结构中的一个附加比特可以被用来启用或禁用该计数器启用向量。这样,客户根据存储在VMCS中的计数器启用向量来单独地对单个计数器进行控制,但是可以设置附加比特的默认值,以便当执行为不支持计数器启用向量模型的处理器设计的VMM或其它宿主软件时,能够自动地禁用单个计数器控制。
计数器启用逻辑170使用全局计数器启用指示符的值、以及任意其它存储在计数器控制存储单元172、174、176和178中的相关信息,来分别控制计数器171、173、175和177的操作。如果全局计数器启用指示符被设置为“启用”值,则每个计数器根据其单个控制和配置信息来进行操作。例如,因为计数器控制存储单元172的内容包括被设置为“启用”值的单个计数器启用比特以及被设置对高速缓存命中进行计数的事件选择字段,所以当高速缓存命中时计数器171会加1,而与此同时,由于计数器控制存储单元174的内容包括被设置为“禁用”值的单个计数器启用比特,所以计数器173不会加1。然而,如果全局计数器启用指示符被设置为“禁用”值,则所有计数器171、173、175和177被禁用,而不会根据它们的单个控制和配置信息进行操作。例如,即使计数器控制存储单元172的内容包括被设置为“启用”值的单个计数器启用比特以及被设置对高速缓存命中进行计数的事件选择字段,当高速缓存命中时计数器171也不会加1。
此外,处理器120包括用于支持虚拟化的控制逻辑180,该虚拟化包括对计数器171、173、175和177的虚拟化。控制逻辑180可以是处理器120内的微码、可编程逻辑、硬编码逻辑、或任何其它形式的控制逻辑。在其它实施例中,可以用处理器内部的或处理器可访问的任何部件或可读的任何介质(例如存储器130)中的任何形式的硬件、软件或固件(例如处理器抽象层)来实现控制逻辑180。
控制逻辑180使处理器120执行本发明的方法实施例(例如,以下参考图2进行描述的方法实施例),这是例如通过以下来实现的:使处理器120在其对来自宿主或客户的虚拟化指令或其它指令进行响应期间执行一个或更多微操作(例如,用以支持虚拟化)。
控制逻辑180包括VM进入逻辑181,其用于把处理器120的控制权从宿主转移到客户(即,VM进入),以及VM退出逻辑182,其用于把处理器120的控制权从客户转移到宿主(即,VM退出)。在一些实施例中,也可以把控制权从一个客户转移到另一个客户或从一个宿主转移到另一个宿主。例如,在支持分层虚拟化的实施例中,运行在处理器120上的VM上的软件既可以是客户又可以是宿主(例如,运行在VM上的VMM对控制该VM的VMM而言是客户,而对运行在其控制的VM上的客户而言是宿主)。
控制逻辑180还包括客户状态加载逻辑183、宿主状态加载逻辑184以及客户状态存储逻辑185。客户状态加载逻辑183用于在VM进入时把客户状态从VMCS 132加载到处理器120中。宿主状态加载逻辑184用于在VM退出时把宿主状态从VMCS 132加载到处理器120中。客户状态存储逻辑185用于在VM退出时把客户状态从处理器120存储到VMCS 132中。在一些实施例中,控制逻辑180还包括宿主状态存储逻辑186,其用于在VM进入时,在客户状态加载逻辑183把客户状态加载到处理器120之前,把宿主状态从处理器120存储到VMCS 132中。在一些实施例中,控制逻辑180可以加载并存储存在于其它系统部件(例如,输入-输出设备、存储器控制器)中的状态。
VMCS 132可以包括用于支持虚拟化的字段、控制比特或其它数据结构。控制逻辑180可以检查或者以其它方式访问这些数据结构,以确定如何管理VM环境。例如,可以设置客户状态加载启用指示符133,以便针对VM进入,使客户状态加载逻辑183把客户值从客户状态存储单元137加载到全局计数器启用存储单元121中;可以设置宿主状态加载启用指示符134,以便针对VM退出,使宿主状态加载逻辑184把宿主值从宿主状态存储单元138加载到全局计数器启用存储单元121中;可以设置客户状态存储启用指示符135,以使客户状态存储逻辑185把全局启用存储单元121的内容存储到客户状态存储单元137中;并且可以设置宿主状态存储启用指示符136,以使宿主状态存储逻辑186把全局启用存储单元121的内容存储到宿主状态存储单元138中,所有这些都将会在下面进一步描述。在该实施例的该说明中,这些指示符是被设置以启用或引发期望效果的控制比特,这里,设置意味着向该比特写入逻辑1,但是在本发明的范围之内可以使用任何逻辑约定或命名。
使用这里描述的机制,VMM可以支持对仅在客户执行时发生的事件、仅在VMM执行时发生的事件、或在VMM执行和客户执行时发生的事件进行计数。此外,VMM可以,一个客户接一个客户地,启用或禁用性能计数器,作为该客户和VMM之间的转换(即,VM进入或VM退出)的一部分。这种机制允许VMM对客户“隐藏”它对性能计数器的影响。作为选择,这种机制允许对在VMM中客户使用的事件或在客户中VMM使用的事件进行计数。
图2用方法200,一种用于对性能计数器进行虚拟化的方法,说明了本发明的一个实施例。参考图1的虚拟化架构100来描述图2的方法实施例,但是方法实施例不限于此。
在图2的框210中,第一性能计数器被配置成对第一事件的发生进行计数。例如,可以通过对计数器控制存储单元172进行编程来把计数器171配置成对高速缓存未命中进行计数。在框212,第二性能计数器被配置成对第二事件的发生进行计数。例如,可以通过对计数器控制存储单元174进行编程来把计数器173配置成对没有异常终止(halt)的周期进行计数。在其它实施例中,性能计数器可以被配置成对任何其它事件(例如旁路转换缓冲未命中、分支误预测等等)的发生进行计数。
在图2的框220中,图1的VMM 140为VM创建VMCS(例如,VMCS132)。在框222到框226,VMM 140配置VMCS 132以实现支持对计数器171、173、175和177进行虚拟化。在框222,设置客户状态加载启用指示符133,以便针对VM进入,使客户状态加载逻辑183把客户值从客户状态存储单元137加载到全局计数器启用存储单元121中。在框224,设置宿主状态加载启用指示符134,以便针对VM退出,使宿主状态加载逻辑184把宿主值从宿主状态存储单元138加载到全局计数器启用存储单元121中。在框226,设置客户状态存储启用指示符135,以使客户状态存储逻辑185把全局启用存储单元121的内容存储到客户状态存储单元136中。
在框230,发起从宿主(即,VMM 140)向客户转移处理器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,确定是否发生了第一事件。如果发生了第一事件,则在框244,第一性能计数器如所配置的那样进行操作,即,在该实施例中,在框210中其被配置成对高速缓存未命中进行计数,因此第一性能计数器加1。在框250,确定是否发生了第二事件。如果发生了第二事件,则在框254,第二性能计数器如所配置的那样进行操作,即,在该实施例中,在框212中其被配置成对第二事件的发生进行计数,因此第二性能计数器加1。
在框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退出,或者是通过软件约定(例如,VMM被要求正确设置VMCS中的控制,以便在访问全局计数器启用存储单元121时引起VM退出),或者是通过处理器强制执行这种VM退出。
在框266,VM退出逻辑基于宿主状态加载启用指示符134,确定是否把宿主值从宿主状态存储单元138加载到全局计数器启用存储单元121中。如果设置了宿主状态加载启用指示符134,则在框268,宿主状态加载逻辑184使来自宿主状态存储单元138的宿主值被加载到全局计数器启用存储单元121中;否则,不执行框268。
在框270,完成VM退出并且控制权被转移到宿主。在框272,宿主开始或继续执行。
在框275,计数器启用逻辑170确定是否设置了全局计数器启用指示符。如果没有设置,则方法200继续进行到框298。如果设置了,则方法200继续进行到框280。在框280,确定是否发生了第一事件。如果发生了第一事件,则在框284,第一性能计数器如所配置的那样进行操作,即,在该实施例中,在框210中其被配置成对高速缓存未命中进行计数,因此第一性能计数器加1。在框290,确定是否发生了第二事件。如果发生了第二事件,则在框294,第二性能计数器如所配置的那样进行操作,即,在该实施例中,在框212中其被配置成对第二事件的发生进行计数,因此第二性能计数器加1。
在框298,确定是否发生VM进入。如果发生了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,每个计数器控制存储单元包含用于存储计数器有效指示符的计数器有效存储单元以及其它控制或配置信息,该计数器有效指示符用于启用或禁用相对应的计数器。此外,处理器320包括分别对应于计数器371、373、375和377的计数器标识符存储单元391、393、395和397。计数器标识符存储单元391、393、395和397可以是寄存器或任何其它具有任意长度的结构、或一个或更多具有其它结构的寄存器的部分,分别用来存储用于标识或标记计数器371、373、375和377的信息。可以对计数器标识符存储单元391、393、395和397进行编程,来存储分别用于唯一地或冗余地(即,两个计数器标识符存储单元可以被用同一个值来编程)标识计数器371、373、375和377的标识符。
VMCS 332包括计数器标识符字段333,在该实施例中,计数器标识符字段与每个计数器标识符存储单元391、393、395和397具有相同的比特数,但是在其它实施例中其可以具有任意多个比特。其它实施例可以包括附加的计数器标识符字段。通过创建VMCS 332的VMM或通过任意其它软件,可以对计数器标识符字段333进行编程,来存储一个值,该值可以匹配或不匹配在计数器标识符存储单元391、393、395和397中存储的值中的一个或更多值。
处理器320还包括可以根据任何已知方法实现的比较逻辑322,其用于基于相对应的计数器标识符存储单元的内容与计数器标识符字段333的内容的比较结果,为每个计数器生成计数器匹配信号。在该实施例中,如果相对应的计数器标识符存储单元的内容与计数器标识符字段333的内容相匹配,则将针对该计数器的计数器匹配信号置为有效(assert)。在该实施例中,如果相对应的计数器标识符存储单元中的内容等于0值,则不论计数器标识符字段333中的内容怎样,也将针对该计数器的计数器匹配信号置为有效,以便使不使用本发明的计数器标识符特性的软件也能在包括该计数器标识符特性的硬件上进行期望的操作。在另一个实施例中,计数器匹配逻辑可以至少部分地基于其它因素(例如VMCS内的其它字段的内容)来确定“匹配”。例如,可以参考英特尔架构中的各种控制寄存器(例如CR0、CR3或CR4寄存器)的值。作为选择,计数器匹配逻辑可以包括确定当前执行的软件是VMM还是客户,并且基于VMCS中的一个或更多控制比特,仅当客户软件正在执行时,才启用计数器。
实施例可以包括一个或更多“计数器匹配启用”控制比特或字段,用于通过禁用比较逻辑或通过任何其它希望的方式来启用或禁用计数器匹配特性。例如,如果设置了计数器匹配启用比特,则发生上述比较。然而,如果计数器匹配启用比特被清零,则总是启用计数器而不进行比较,因此,计数器标识符存储单元中的“0”值不需要上述特别处理。
计数器启用逻辑370使用针对每个计数器的计数器匹配信号以及任意其它存储在计数器控制存储单元372、374、376和378中的相关信息,来分别控制计数器371、373、375和377的操作。如果针对一个计数器的计数器匹配信号被置为有效,则该计数器根据其单个控制和配置信息进行操作。例如,如果计数器控制存储单元372的内容包括被设置为“启用”值的单个计数器有效比特以及被设置对高速缓存命中进行计数的事件选择字段,则当高速缓存命中时计数器371可以加1。然而,如果针对一个计数器的计数器匹配信号未被置为有效,则该计数器被禁用而不根据其单个控制和配置信息进行操作。例如,即使计数器控制存储单元372的内容包括被设置为“启用”值的单个计数器有效比特以及被设置对高速缓存命中进行计数的事件选择字段,当高速缓存命中时计数器371也不会加1。
此外,处理器320包括用于支持虚拟化的控制逻辑380,该虚拟化包括对计数器371、373、375和377的虚拟化。控制逻辑380使处理器320执行本发明的方法实施例(例如,以下参考图4进行描述的方法实施例),这是例如通过以下来实现的:使处理器320在其对来自宿主或客户的虚拟化指令或其它指令进行响应期间执行一个或更多微操作(例如,用以支持虚拟化)。
图4用方法400,另一种用于对性能计数器进行虚拟化的方法,说明了本发明的一个实施例。参考图1和图3来描述图4的方法实施例,但是方法实施例不限于此。
在图4的框410中,性能计数器被配置成对一种事件的发生进行计数。例如,可以通过对计数器控制存储单元372进行编程来把计数器371配置成对高速缓存未命中进行计数。在框412,计数器标识符存储单元391被用期望的计数器标识值进行编程。
在框420,宿主为VM创建VMCS(例如,VMCS 332)。在框422,宿主对VMCS 332进行配置以便实现支持对计数器371、373、375和377进行虚拟化,包括用等于在框412中使用的计数器标识值的值来对计数器标识符字段333进行编程。在该实施例中,也可以用同一个值来对VMCS332或任何其它VMCS(对应于任意多个其它客户或宿主)中的任意多个其它计数器标识符字段进行编程,以允许任意多个客户或宿主共享一个或更多计数器。
在框430,处理器320的控制权从宿主转移到客户。在框432,客户开始或继续执行。在框434,基于计数器标识符存储单元391与计数器标识符字段333的比较结果,生成计数器匹配信号。在该实施例中,如果计数器标识符存储单元的内容与计数器标识符字段的内容相匹配,则将该计数器匹配信号置为有效。
在框440,识别出该事件(即,在该实施例中,高速缓存未命中)的发生。在框442,计数器启用逻辑370基于计数器匹配信号以及在相对应的计数器控制存储单元(例如,计数器控制存储单元372)中的计数器有效存储单元的内容,来确定性能计数器是否加1。
如果计数器匹配信号被置为有效,并且没有设置该计数器的计数器有效指示符,则在框444,性能计数器如所配置的那样进行操作,即,在该实施例中,在框410中其被配置成对高速缓存未命中进行计数,因此该性能计数器加1。如果计数器匹配信号未被置为有效或没有设置该计数器的有效指示符,则不执行框444。
在本发明的范围之内,图2和图4所说明的方法可以按不同的次序来执行,可以省略所说明的框来执行、可以添加附加的框来执行、或者可以利用重排序的、省略的或附加的框的组合来执行。例如,VMCS可以按任意次序来配置VMCS,例如,可以按照任意次序重新安排框222至226。
可以在从创造到仿真到制造的各个阶段中对处理器120或根据本发明的实施例设计的任何其它部件或部件的一部分进行设计。表示一种设计的数据可以用许多方式来表示该设计。首先,在仿真中很有用的一种情况是,可以使用硬件描述语言或其它功能描述语言来表示硬件。此外或作为选择,可以在设计过程的一些阶段中,生产出具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在某一阶段上可以达到这样一种级别,其中可以用表示各种器件的物理布局的数据来对该设计进行建模。在使用常规半导体制造技术的情况下,表示器件布局模型的数据可以是这样的数据:其规定了在用于生产集成电路的掩膜的不同掩膜层上各种特性的存在与否。
在该设计的任何表示中,数据可以被存储在任何形式的机器可读介质中。被调制或以其它方式生成的用来传送这样的信息的光波或电波、存储器、或磁或光存储介质(例如磁盘)都可以是该机器可读介质。任意这些媒体都可以“携带”或“指示”该设计或在本发明的实施例中使用的其它信息。当传送指示或携带信息的电载波时,就对电信号执行复制、缓冲或重传而言,创建了一个新的拷贝。因此,通信提供者或网络提供者的行为可以构成对包含了本发明的技术的制品(例如,载波)的拷贝的生成。
这样,公开了用于对性能计数器进行虚拟化的装置、方法和系统。尽管已经描述了某些实施例并且在附图中示出,但是可以理解,这些实施例仅仅是说明而不是限制了该广泛的发明,并且由于本领域技术人员在研究本公开内容之后可以想到各种其它修改,因此本发明并不被限制于所示出和描述的特定构造和安排。在像这样的快速成长且不易预见其进一步发展的技术领域中,如技术进步所推动的,所公开的实施例可以被很容易地在安排和细节上进行修改,而不背离本公开内容的原理或所附权利要求的范围。

Claims (14)

1.一种用于对性能计数器进行虚拟化的装置,包括:
虚拟机监视器VMM,用于为虚拟机VM创建虚拟机控制结构VMCS,该VMCS构造为包含:一个客户或多个客户的状态、VMM的状态、用于指示VMM将如何控制一个客户或多个客户的操作的执行控制信息以及关于VM退出和VM进入的信息;
计数器,其中所述VMM配置所述VMCS以实现支持对该计数器进行虚拟化;
计数器启用存储单元,用于存储计数器启用指示符,其中,所述计数器启用存储单元能够包括对应于任意多个计数器的任意多个比特或字段;
计数器启用逻辑,用于基于所述计数器启用指示符来启用所述计数器;以及
虚拟机控制逻辑,用于向客户转移所述装置的控制权并且将所述装置的控制权从该客户转移给宿主,所述虚拟机控制逻辑包括客户状态加载逻辑,宿主状态加载逻辑和客户状态存储逻辑,
其中所述VMM配置所述VMCS以实现支持对该计数器进行虚拟化进一步包括:
设置所述VMCS中的客户状态加载启用指示符,使该客户状态加载逻辑针对控制权向所述客户的转移而将来自所述虚拟机控制结构VMCS中的客户状态存储单元的客户值加载到所述计数器启用存储单元中;
设置所述VMCS中的宿主状态加载启用指示符,使所述宿主状态加载逻辑针对控制权从所述客户向所述宿主的转移而将来自所述虚拟机控制结构VMCS的宿主状态存储单元中的宿主值加载到所述计数器启用存储单元中;
设置所述VMCS中的客户状态存储启用指示符,以使该客户状态存储逻辑针对控制权从所述客户向所述宿主的转移而将所述计数器启用存储单元的内容存储到所述虚拟机控制结构VMCS的客户状态存储单元中。
2.根据权利要求1所述的装置,其中,所述计数器用于记录性能监测信息。
3.根据权利要求1所述的装置,其中,所述虚拟机控制逻辑还包括虚拟机进入逻辑,该虚拟机进入逻辑用于基于所述虚拟机控制结构中的客户状态加载启用指示符来启用所述客户状态加载逻辑。
4.根据权利要求1所述的装置,其中,所述虚拟机控制逻辑还包括虚拟机退出逻辑,该虚拟机退出逻辑用于基于所述虚拟机控制结构中的宿主状态加载启用指示符来启用所述宿主状态加载逻辑。
5.根据权利要求1所述的装置,其中,所述虚拟机控制逻辑还包括虚拟机退出逻辑,该虚拟机退出逻辑用于基于所述虚拟机控制结构中的客户状态存储启用指示符来启用所述客户状态存储逻辑。
6.一种用于对性能计数器进行虚拟化的装置,包括:
虚拟机监视器VMM,用于为虚拟机VM创建虚拟机控制结构VMCS,该VMCS构造为包含:一个客户或多个客户的状态、VMM的状态、用于指示VMM将如何控制一个客户或多个客户的操作的执行控制信息以及关于VM退出和VM进入的信息;
计数器,其中所述VMM配置所述VMCS以实现支持对该计数器进行虚拟化;
虚拟机控制逻辑,用于实施所述VM退出和VM进入,包括包括客户状态加载逻辑,宿主状态加载逻辑和客户状态存储逻辑;
计数器标识符存储单元,用于存储计数器标识符,其中,所述计数器标识符存储单元是可编程的;
比较逻辑,用于基于所述计数器标识符与来自虚拟机控制结构的计数器标识符字段的内容的比较结果来生成计数器匹配信号,其中,所述计数器标识符字段是可编程的;以及
启用逻辑,用于生成用来启用所述计数器的计数器启用信号,其中所述计数器启用信号是基于所述计数器匹配信号的,
其中所述VMM配置所述VMCS以实现支持对该计数器进行虚拟化进一步包括:
设置所述VMCS中的客户状态加载启用指示符,使该客户状态加载逻辑针对所述VM进入而将来自所述虚拟机控制结构VMCS中的客户状态存储单元的客户值加载到所述计数器启用存储单元中;
设置所述VMCS中的宿主状态加载启用指示符,使所述宿主状态加载逻辑针对所述VM退出而将来自所述虚拟机控制结构VMCS的宿主状态存储单元中的宿主值加载到所述计数器启用存储单元中;
设置所述VMCS中的客户状态存储启用指示符,以使该客户状态存储逻辑针对所述VM退出而将所述计数器启用存储单元的内容存储到所述虚拟机控制结构VMCS的客户状态存储单元中。
7.根据权利要求6所述的装置,还包括:
计数器有效存储单元,用于存储计数器有效指示符,其中所述计数器启用信号也是基于所述计数器有效指示符的。
8.一种用于对性能计数器进行虚拟化的方法,包括:
为虚拟机VM创建虚拟机控制结构VMCS,该VMCS构造为包含:一个客户或多个客户的状态、VMM的状态、指示VMM将如何控制一个客户或多个客户的操作的执行控制信息以及关于VM退出和VM进入的信息;
把处理器中的第一计数器配置成对第一事件的发生进行计数;
把所述处理器中的第二计数器配置成对第二事件的发生进行计数;
发起向客户转移所述处理器的控制权;
配置所述VMCS以实现支持对处理器内的计数器进行虚拟化,包括设置所述VMCS中的客户状态加载启用指示符以把客户值从虚拟机控制结构加载到计数器启用存储单元中,其中,所述计数器启用存储单元用于存储计数器启用指示符并能够包括对应于任意多个计数器的任意多个比特或字段;
完成向所述客户转移所述处理器的控制权;
基于所述计数器启用存储单元的内容以及所述第一事件的第一次发生,确定是否改变所述第一计数器的计数值;以及
基于所述计数器启用存储单元的内容以及所述第二事件的第一次发生,确定是否改变所述第二计数器的计数值;
该方法还包括:
发起从所述客户向宿主转移所述处理器的控制权;
设置所述VMCS中的宿主状态加载启用指示符,把宿主值从所述虚拟机控制结构加载到所述计数器启用存储单元中;设置所述VMCS中的客户状态存储启用指示符,以在发起从所述客户向所述宿主转移所述处理器的控制权之后,把所述计数器启用存储单元的内容存储到所述虚拟机控制结构中;
完成从所述客户向所述宿主转移所述处理器的控制权。
9.根据权利要求8所述的方法,还包括:
基于所述计数器启用存储单元的内容以及所述第一事件的第二次发生,确定是否改变所述第一计数器的计数值;以及
基于所述计数器启用存储单元中的内容以及所述第二事件的第二次发生,确定是否改变所述第二计数器的计数值。
10.一种用于对性能计数器进行虚拟化的方法,包括:
为虚拟机VM创建虚拟机控制结构VMCS,该VMCS构造为包含:一个客户或多个客户的状态、VMM的状态、指示VMM将如何控制一个客户或多个客户的操作的执行控制信息以及关于VM退出和VM进入的信息;并且配置所述VMCS以实现支持对处理器内的计数器进行虚拟化;
把处理器中的计数器配置成对事件的发生进行计数;
向客户转移所述处理器的控制权;
识别所述事件的发生;
基于在所述处理器中的计数器标识符存储单元的内容与虚拟机控制结构中的计数器标识符字段的内容的比较结果来生成匹配信号,其中,所述计数器标识符存储单元和所述计数器标识符字段是可编程的;以及
基于所述匹配信号来确定是否改变所述计数器的计数值,
其中配置所述VMCS以实现支持对该计数器进行虚拟化进一步包括:
设置所述VMCS中的客户状态加载启用指示符,以针对控制权向所述客户的转移而将来自所述虚拟机控制结构VMCS中的的客户值加载到所述计数器启用存储单元中;
设置所述VMCS中的宿主状态加载启用指示符,以针对控制权从所述客户向所述宿主的转移而将来自所述虚拟机控制结构VMCS的宿主值加载到所述计数器启用存储单元中;
设置所述VMCS中的客户状态存储启用指示符,以在发起从所述客户向所述宿主转移处理器的控制权之后将所述计数器启用存储单元的内容存储到所述虚拟机控制结构VMCS中。
11.根据权利要求10所述的方法,其中,确定是否改变所述计数器的计数值也是基于计数器有效指示符的。
12.一种用于对性能计数器进行虚拟化的系统,包括:
虚拟机监视器VMM,用于为虚拟机VM创建虚拟机控制结构VMCS,该VMCS构造为包含:一个客户或多个客户的状态、VMM的状态、用于指示VMM将如何控制一个客户或多个客户的操作的执行控制信息以及关于VM退出和VM进入的信息;
存储器,用于存储用来控制虚拟机的数据结构;以及
处理器,包括:
多个计数器,其中所述VMM配置所述VMCS以实现支持对该多个计数器进行虚拟化;
计数器启用存储单元,用于存储计数器启用指示符,其中,所述计数器启用存储单元能够包括对应于任意多个计数器的任意多个比特或字段;
计数器启用逻辑,用于基于所述计数器启用指示符来启用所述多个计数器;以及
虚拟机控制逻辑,用于向客户转移所述处理器的控制权并且将所述处理器的控制权从该客户转移给宿主,所述虚拟机控制逻辑包括客户状态加载逻辑,宿主状态加载逻辑和客户状态存储逻辑,
其中所述VMM配置所述VMCS以实现支持对该计数器进行虚拟化进一步包括:
设置所述VMCS中的客户状态加载启用指示符,使该客户状态加载逻辑针对控制权向所述客户的转移而将来自所述虚拟机控制结构VMCS中的客户状态存储单元的客户值加载到所述计数器启用存储单元中;
设置所述VMCS中的宿主状态加载启用指示符,使所述宿主状态加载逻辑针对控制权从所述客户向所述宿主的转移而将来自所述虚拟机控制结构VMCS的宿主状态存储单元中的宿主值加载到所述计数器启用存储单元中;
设置所述VMCS中的客户状态存储启用指示符,以使该客户状态存储逻辑针对控制权从所述客户向所述宿主的转移而将所述计数器启用存储单元的内容存储到所述虚拟机控制结构VMCS的客户状态存储单元中。
13.根据权利要求12所述的系统,其中,所述多个计数器用于记录性能监测信息。
14.根据权利要求12所述的系统,其中,所述存储器是动态随机存取存储器。
CN2007800259423A 2006-08-08 2007-08-06 虚拟化性能计数器 Active CN101490646B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310403619.2A CN103500137B (zh) 2006-08-08 2007-08-06 虚拟化性能计数器

Applications Claiming Priority (3)

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
PCT/US2007/075286 WO2008021794A1 (en) 2006-08-08 2007-08-06 Virtualizing performance counters

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201310403619.2A Division CN103500137B (zh) 2006-08-08 2007-08-06 虚拟化性能计数器

Publications (2)

Publication Number Publication Date
CN101490646A CN101490646A (zh) 2009-07-22
CN101490646B true CN101490646B (zh) 2013-10-16

Family

ID=39052292

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201310403619.2A Active CN103500137B (zh) 2006-08-08 2007-08-06 虚拟化性能计数器
CN2007800259423A Active CN101490646B (zh) 2006-08-08 2007-08-06 虚拟化性能计数器

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201310403619.2A Active CN103500137B (zh) 2006-08-08 2007-08-06 虚拟化性能计数器

Country Status (7)

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

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

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4975836A (en) * 1984-12-19 1990-12-04 Hitachi, Ltd. Virtual computer system
CN1659518A (zh) * 2002-04-16 2005-08-24 英特尔公司 虚拟计算机结构中控制寄存器访问虚拟化性能的改进
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
CN1794177A (zh) * 2004-12-21 2006-06-28 微软公司 用于为虚拟机揭示处理器拓扑结构的系统和方法

Family Cites Families (33)

* 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
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
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
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
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4975836A (en) * 1984-12-19 1990-12-04 Hitachi, Ltd. Virtual computer system
CN1659518A (zh) * 2002-04-16 2005-08-24 英特尔公司 虚拟计算机结构中控制寄存器访问虚拟化性能的改进
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
CN1794177A (zh) * 2004-12-21 2006-06-28 微软公司 用于为虚拟机揭示处理器拓扑结构的系统和方法

Also Published As

Publication number Publication date
JP5571208B2 (ja) 2014-08-13
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
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
CN101490646B (zh) 虚拟化性能计数器
EP3317999B1 (en) Loading and virtualizing cryptographic keys
US10152602B2 (en) Protecting state information for virtual machines
JP5984865B2 (ja) 命令エミュレーションプロセッサ、方法、およびシステム
EP1939754B1 (en) Providing protected access to critical memory regions
CN102207896A (zh) 虚拟机崩溃文件生成技术
CN101364184A (zh) 在虚拟机环境中检测自旋循环
US9058494B2 (en) Method, apparatus, system, and computer readable medium to provide secure operation
US8407453B2 (en) Facilitating processing in a computing environment using an extended drain instruction
WO2013101191A1 (en) Virtual machine control structure shadowing
US10698713B2 (en) Virtual processor state switching virtual machine functions
CN108351826A (zh) 监视处理器的操作
US20130058478A1 (en) Virtualization of cryptographic keys
Allievi et al. Windows internals, part 2
US10127064B2 (en) Read-only VM function chaining for secure hypervisor access
WO2016209915A1 (en) Protecting state information for virtual machines
US11726811B2 (en) Parallel context switching for interrupt handling
Crutcher et al. Operating System
Martinsen Implementation of Intel virtual machine extension root operation on the NPS least privilege separation kernel
Assembly Pervasive Verification of an OS Microkernel

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant