CN109313567B - 虚拟化精确的基于事件的采样的设备和方法 - Google Patents

虚拟化精确的基于事件的采样的设备和方法 Download PDF

Info

Publication number
CN109313567B
CN109313567B CN201780033170.1A CN201780033170A CN109313567B CN 109313567 B CN109313567 B CN 109313567B CN 201780033170 A CN201780033170 A CN 201780033170A CN 109313567 B CN109313567 B CN 109313567B
Authority
CN
China
Prior art keywords
processor
event
virtual machine
record
packets
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
CN201780033170.1A
Other languages
English (en)
Other versions
CN109313567A (zh
Inventor
M·C·梅尔腾
B·C·斯特朗
M·W·查诺韦思
G·G·周
A·科林
K·C·威尔
A·D·施密德
S·布拉塔诺夫
S·阿伯拉罕姆
J·W·布兰德特
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
Publication of CN109313567A publication Critical patent/CN109313567A/zh
Application granted granted Critical
Publication of CN109313567B publication Critical patent/CN109313567B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/301Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is a virtual computing platform, e.g. logically partitioned systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • 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/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional 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
    • 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/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/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/885Monitoring specific for caches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0604Management of faults, events, alarms or notifications using filtering, e.g. reduction of information by using priority, element types, position or time
    • H04L41/0613Management of faults, events, alarms or notifications using filtering, e.g. reduction of information by using priority, element types, position or time based on the type or category of the network elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/04Processing captured monitoring data, e.g. for logfile generation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

核包括存储器缓冲器并且在虚拟机内执行指令。处理器跟踪器捕捉跟踪数据并且将跟踪数据格式化为跟踪数据分组。基于事件的采样器响应于作为指令的执行的结果的某个类型的事件的发生而生成用于采样记录的现场数据。处理器跟踪器在接收到现场数据后进行以下操作:将现场数据格式化为采样记录的元素作为一组记录分组;将一组记录分组插入到跟踪数据分组之间作为组合分组流;以及将组合分组流存储在存储器缓冲器中作为一系列输出页。当在访客概况分析模式中时,核执行虚拟机监视器以使用多级页表将存储器缓冲器的输出页映射到主存储器的主机物理页。

Description

虚拟化精确的基于事件的采样的设备和方法
技术领域
本文中所描述的实施例一般涉及处理设备,并且更具体地涉及在虚拟化环境中对精确的基于事件的采样的管理。
背景技术
处理器可以生成关于由处理器执行的软件的跟踪数据,并且通常为处理器内的任何指令引退这样做,从而产生大量信息。跟踪数据可以由编程者使用以用于调试目的。跟踪数据还可以由系统管理者或技术支持人员和软件监视工具使用以利用安装的软件来诊断问题。在由处理器执行的虚拟机内也已经存在对捕捉跟踪数据的一些虚拟化(在支持的情况下)。还可以在处理器内启用被称为精确的基于事件的采样(PEBS)的附加调试特征。PEBS是在事件发生时将处理器状态的快照记入日志从而允许用户将性能事件归因于实际指令指针(IP)的概况分析机制。开发者尚未能可靠地或高效地虚拟化PEBS。
附图说明
通过下文给出的具体实施方式并通过本公开各实施例的附图,将更完整地理解本公开。然而,不应当认为这些附图将本公开限制为特定实施例,而是这些附图仅用于说明和理解。
图1A是根据本公开的实施例的虚拟化系统的示意性框图。
图1B是根据本公开的实施例的图1A所示的处理器的模型专用寄存器的详细视图的示意性框图。
图2是图示根据本公开的实施例的插入在跟踪数据分组之间的一组精确的基于事件的采样(PEBS)分组的规范的一组数据分组的表。
图3是图示根据本公开的实施例的使跟踪数据分组与PEBS分组交织的分组流的示例的示图。
图4A是图示根据本公开的实施例的配置虚拟化系统以用于PEBS记录生成的方法的流程图。
图4B是图示根据本公开的一个实施例的将PEBS记录格式化并输出为PEBS记录分组的方法的流程图。
图4C是图示根据本公开的一个实施例的分析PEBS记录分组以用于调试和故障检测目的的方法的流程图。
图5是根据本公开的实施例的芯片上系统(SoC)的框图。
图6是根据本公开的另一实施例的芯片上系统(SoC)设计的实施例的框图。
图7是根据本公开的一个实施例的计算机系统的框图。
图8A是示出根据本公开的一个实施例的由处理器核实现的有序流水线以及寄存器重命名级、乱序发布/执行流水线的框图。
图8B是示出根据本公开的至少一个实施例的、要被包括在处理器中的有序架构核以及寄存器重命名逻辑、乱序发布/执行逻辑的框图。
图9是处理器的微架构的框图,该处理器包括用于执行根据本发明的一个实施例的指令的逻辑电路。
图10示出了计算机系统的示例形式的机器的图示性表示,在该计算机系统内,可执行用于使机器执行本文中所讨论的方法中的任何一个或多个的一组指令。
具体实施方式
精确的基于事件的采样(PEBS)在被编程到性能监视计数器(PMC)中的类型的事件的每n次计数的发生时将处理器状态的快照保存到存储器缓冲器。事件是由指令的执行产生的处理器执行状态(包括存储器状态)的变化或性能相关的触发。可以从要监视的广泛列表的性能相关事件中选择事件类型,诸如例如:高速缓存未命中、远程高速缓存命中、分支误预测、坏的存储到加载的转发、函数调用引退、x87浮点辅助、分割的高速缓存行访问、事务同步中止、MMXTM指令引退、以及各种类型的硬件停止等等。所支持的事件类型的列表取决于处理器的模型的制造商而变化。处理器状态可以包括可能影响处理器性能的执行指令指针(IP)和执行相关状态(诸如计数器)、寄存器和执行单元的内容、存储器地址、等待时间等等。
更具体地,当与特定事件类型相关联的事件计数器溢出时,处理器可以在下一匹配事件之后使指令执行陷入、记录处理器状态、重新加载事件计数器、并且恢复指令的执行。因此,周期性地生成PEBS数据,并且可以使用统计分析在计数器溢出之间推断与特定事件相关的性能。
当事件计数器溢出时,PEBS允许处理器硬件收集与对应的事件相关的附加的基于处理器的执行信息。PEBS还可以为分析和调试工具提供关于触发特定事件类型的发生的指令的执行的更准确的信息,并且因此可以提供上下文以跟踪数据。PEBS采样是等待由计数器溢出触发的中断以收集此类信息(典型地是数十到数百个周期之后(由于通过中断控制器处理))的替代。如果由于处理器执行某些活动而中断被临时地掩蔽或阻止,则该IP滑移(skid)可能是大得多的。在此类情况下,该滑移可能是足够大的以使得当计数器实际上溢出时所收集的样本不指示被执行的代码。PEBS可以通过依赖于硬件以生成独立于中断的样本来避免该错误信息。
因此,通过分析各性能事件(诸如远程高速缓存命中或坏的存储到加载的转发)的关注点并且将此类事件归因于特定指令,PEBS特征可以大量地用于性能调试。利用详细的上下文信息,软件开发者可以对应用进行概况分析以标识性能问题在哪里出现并且因此更好地构想他们的代码。系统分析者还可以对端-到-端执行进行概况分析,从而寻找对应用、驱动程序和操作系统(OS)交互、以及用户体验设计小故障的洞察。因此,可以在诸如
Figure GDA0004064910150000031
Linux Perf等的性能工具中采用PEBS。
然而,现代计算系统逐渐在启用虚拟化的情况下运行。虚拟化技术允许多个操作系统同时在系统上运行,彼此受保护,并且由虚拟机监视器(VMM)仲裁和控制。传统操作系统作为访客在虚拟化系统内运行,并且不仅在云服务器空间中,而VMM作为根运行。客户机系统也使用虚拟化。此外,可以在提高的特权等级运行计算设备的安全服务,而在较低的特权等级运行访客OS,从而改善访客的安全性。在一些情况下,开发者可能对整个系统(包括VMM和访客)进行概况分析以查看总性能。这可以被称为“系统范围”概况分析。在其他情况下,开发者被限制为访客并且需要对仅在该访客内监视的PEBS的访问。这可以被称为“仅访客”概况分析。在其他情况下,仅允许系统分析者使用在根和某些访客内监视的PEBS,而其他访客被限制,诸如出于数据隐私的原因。这可以被分别称为“仅主机”或“主机和部分访客”概况分析。
然而,出于各种原因,PEBS配置和输出机制不能顺应虚拟化。例如,PEBS不能处置用于在虚拟化中使用的第二级地址转换(SLAT)中的嵌套分页的多级页表(MPT)中的违规。这些多级页表是硬件辅助虚拟化技术,其通过促进访客虚拟地址与主机物理地址之间的转换来使避免与软件管理的影子页表相关联的开销是可能的。在一个实施例中,多级页表被美国加利福尼亚州圣克拉拉市的英特尔公司称为扩展页表(EPT)。在另一实施例中,多级页表被美国加利福尼亚州圣何塞市的ARM控股有限公司称为2级页表。
当被线性地(有时被称为虚拟地)寻址的PEBS配置页和PEBS输出缓冲器页未被VMM映射到物理页时,多级页表违规发生。即使OS将配置和输出页映射到其相信是物理存储器(被称为访客物理存储器)的地方,VMM执行访客物理存储器到实际存储器(被称为主机物理存储器)的最终映射。可能并非由所有活动OS访客指派的所有访客物理存储器可以被同时映射到主机物理存储器。如果由PEBS记录生成机制访问的页被正确地映射在访客物理存储器中但是未被映射到主机物理存储器中,则可能需要将执行控制转移到VMM以正确地映射该页。在映射该页之后,可能不能恢复对PEBS记录的生成,因为触发该PEBS记录生成的事件已经过去并且状态值已经改变。进一步的,当执行系统范围概况分析时,VMM难以强制每个访客OS分配与VMM在OS的访客物理存储器映射中所处位置相同尺寸的虚拟存储器区域并且共同映射到同一主机物理存储器中。
此外,PEBS当前不适于VM与VMM之间的转变相关的控制,例如,在离开访客以进入VMM执行(称为VM-退出)后关闭PEBS记录生成和在返回到访客执行(称为VM-进入)后重新打开PEBS记录生成。这是“仅访客”跟踪使用模型的问题。
配置存储器块是字段的集合,其包括:输出缓冲器的基址、当前地址和最大线性(虚拟)地址、和用于每个计数器的重新加载值。在记录被生成之后,PMC计数器被自动地重新加载这些重新加载值以实现周期性记录生成。如将讨论的,存储器的该配置块由位于IA32_DS_AREA模型专用寄存器中的线性(虚拟)地址定位。
跟踪指代将诸如控制流转移的事件的每一次发生记入日志,其将与仅事件的一部分触发将处理器状态记入日志的采样区别开。美国加利福尼亚州圣克拉拉市的英特尔公司支持被称为
Figure GDA0004064910150000051
处理器跟踪(PT)的跟踪特征。PT现在包括用于支持虚拟化的机制并且被逐渐采用以获得对从控制流跟踪到功率事件跟踪等的执行的详细洞察。此外,PT包括用于遵循相同的概况分析模式的机制,这些模式诸如全系统、仅访客、仅主机等等。使PEBS输出到与PT被输出到的跟踪缓冲器分开的PEBS缓冲器需要工具开发者和VM供应商管理两个分开的输出机制以获得现代处理器可以提供的广泛的性能数据,从而使获得分析和调试所需的信息的方法复杂化。
用于虚拟化PEBS的现有方案需要访客OS启用对页错误的管理和阻止。当页错误或MPT违规发生时,PEBS记录被丢弃,因为产生该PEBS记录的微代码的硬件执行被中断并且不能被恢复。微代码被视为处理器硬件的一部分,作为嵌入硬件的低级微指令。当与输出缓冲器页相关的页错误发生(例如,访客OS未将线性地址映射到访客物理存储器)或MPT违规发生(例如,VMM未将访客物理页映射到主机物理存储器)时,PEBS记录将在页错误或MPT违规的中间被放弃。当执行访客代码时,页错误中的一些可能发生,其可能导致“蓝屏”或“内核严重错误”。此外,不期望丢弃PEBS记录,因为这样做干扰统计采样以及调试和故障检测的正确执行。因此,一些处理器可以要求OS将PEBS输出缓冲器和配置块线性地址映射到物理存储器中(在非虚拟化系统中)。在虚拟化系统中,该要求可以增长为包括OS将页从线性地址映射到访客物理存储器以及VMM将访客物理存储器映射到主机物理存储器。该后一步骤是更多的,因为VMM指示每个OS以相似方式配置输出缓冲器,或者指示每个OS以其自己的方式配置输出缓冲器而VMM将每个访客的输出块接合成一个合并的输出块。
如将说明的,本公开通过在跟踪(或PT)流内将PEBS数据打包并路由以使PEBS数据可以被输出并且利用处置页错误和MPT违规的PT可用机制被检取来解决具有页错误和MPT违规的这些顾虑。更具体地,响应于作为指令的执行的结果的某种类型的事件的发生,基于事件的采样器可以将PEBS(或采样)记录的元素的PEBS捕捉的现场数据传输到处理器跟踪器。该现场数据可以具有特定格式(例如,包括标识后续数据作为去往跟踪器的PEBS现场数据的头部),使得处理器跟踪器可以检测和捕捉现场数据。
在接收后,处理器跟踪器可以将采样(PEBS)记录的所捕捉的现场数据格式化(例如,分组化或打包),从而将现场数据转换为与处理器跟踪器的输出格式兼容的PEBS记录分组。在一个实施例中,该PEBS记录分组是包含多个分组化元素的单个分组。在又一实施例中,PEBS记录分组包括一组分组化元素(例如,以字段或元素水平生成的一组PEBS记录分组),其可以作为群组传送或分开地传送。处理器跟踪器然后可以将PEBS记录分组插入在跟踪数据(或PT)流的多个跟踪数据分组(诸如控制流分组和功率事件分组)之间,例如,以生成组合分组流。处理器跟踪器可以将组合分组流存储在存储器缓冲器中作为一系列输出页,或者将其路由至由处理器控制的端口(引脚)。当在系统范围概况分析模式中时,处理器可以寻址处理器跟踪输出页作为主机物理页。
因此,PEBS记录被格式化以适配PT机制并且由PT机制处置,PT机制已经包括对虚拟化的支持(诸如解决页错误和MPT违规),如将详细地讨论的。作为仅一个示例,现有的PT输出目标是可用的以将PEBS记录分组(与跟踪数据分组一起)流送至该现有的PT输出目标,包括到连续缓冲器、物理地址的表(ToPA)或其他分布式存储器缓冲器,或到诸如跟踪中枢的跟踪聚集器。当使用仅访客概况分析时,可以使用访客物理地址来寻址这些缓冲器,并且VMM可以使用MPT来将访客物理页映射到主机物理存储器。在页被需要用于输出之前,处理器可以通过在方便的时间启用预取下一跟踪输出页来避免部分地由于MPT违规导致的跟踪损坏。更具体地,PT可以维持两个输出页的映射。当PT硬件检测到其填充了第一输出页并且移动到了写入第二输出页时,处理器然后可以确定下一(第三)输出页并且测试下一输出页是否被映射。如果下一输出页未被映射,则处理器可以触发VM-退出以请求VMM映射该下一输出页。该查找可以在硬件中实现,或者使用微代码实现。以此方式,PEBS可以维护当前输出页和准备好被写入的下一输出页。此种方案的优势是页的任何MPT违规在处理器需要写入该页之前发生,从而确保MPT违规不会使跟踪数据被丢弃。由于在PT流内交织,可用于PT输出的这些类型的虚拟化机制对PEBS输出(例如,PEBS记录分组)也变成可用的。
在一个实施例中,计数器重新加载值(其指定事件计数器何时将溢出并且因此生成PEBS记录)还可以被从调试存储(DS)管理区中的线性地址移动到模型专用寄存器(MSR)以消除对PEBS的基于存储器的配置的依赖,例如,消除访问线性访问的存储器以获得事件计数器重新加载信息和PEBS输出页地址的需要。当PMC计数器溢出时,DS管理区在线性寻址的存储器缓冲器内存储PEBS记录。此外,部分地提供虚拟机控制结构(VMCS)结构以配置虚拟机的VM-进入和VM-退出流。当进入和离开访客VM时,这些可以被配置为保存和恢复计数器启用和最后分支寄存器(LBR),其可以启用对仅访客概况分析模式的完全支持,如将详细地说明的。
图1A是根据本公开的实施例的虚拟化系统100的示意性框图。虚拟化系统100包括虚拟化服务器110,其支持多个客户机设备101A–101C。虚拟化服务器110包括执行管理程序180的至少一个处理器112,管理程序180可以实例化可由客户机设备101A–101C经由网络接口170访问的一个或多个虚拟机190A–190C。处理器112可以包括一个或多个核120、处理器跟踪器124(或仅“跟踪器124”)、基于事件的采样器128、模型专用寄存器(MSR)的集合103A–130C(多个VM 190A–190C中的每一个有一个集合)、存储器管理单元(MMU)140、输出端口150、一个或多个存储器缓冲器160、管理程序(或VMM)180以及处理器跟踪(PT)解码器194。图1B是根据本公开的实施例的图1A所示的处理器核120的模型专用寄存器130的详细视图的示意性框图。
虚拟化服务器110包括主存储器114和次级存储118,主存储器114包括跟踪缓冲器116部分,次级存储118具有用于在跟踪和PEBS数据溢出之间存储程序二进制文件和操作系统(OS)驱动程序事件的数据库119。次级存储118中的数据可以存储在被称为页的块中,并且每个页可以对应于一组物理存储器地址。虚拟化服务器110可以采用虚拟存储器管理,其中由核120运行的诸如虚拟机190A–190C的应用使用由存储器管理单元(MMU)140映射到访客物理存储器地址的虚拟存储器地址。
核120可以执行MMU 140以将来自次级存储118的页加载到主存储器114中,以供在处理器112上(例如,在核上)运行的软件更快的访问。当虚拟机190A–190C中的一个试图访问对应于被加载到主存储器114中的页的物理存储器地址的虚拟存储器地址时,MMU 140返回所请求的数据。核120可以执行VMM 180以将访客物理地址转换为主存储器的主机物理地址,并且为允许核120读取、遍历并解释这些映射的协议提供参数。
当虚拟机中的一个试图访问对应于未被加载到主(或主机物理)存储器114中的页的访客物理存储器地址的虚拟存储器地址时,MPT违规发生并且MMU 140生成MPT违规作为错误或异常。当MPT违规发生时,可以将对核120的控制转移到VMM 180(经由VM-退出)以服务违规。VMM 180可以通过使虚拟机暂停、指示MMU 140加载包含对应于所请求的虚拟存储器地址的主机物理存储器地址的页、并且恢复虚拟机来处置MPT违规。
核120可以包括跟踪器124,其捕捉作为在启用跟踪时处理器112对核120的硬件线程执行软件指令的结果所生成的跟踪数据。跟踪器124还可以将跟踪数据格式化(例如,分组化或打包)为独立的跟踪数据分组以用于作为分组流来路由。跟踪器124可以由微代码指令、数字电路、模拟电路、或其组合来实现。在一个实施例中,跟踪器124主要包括专用硬件电路和微代码,不过一旦数据分组由专用硬件和固件生成,跟踪器124(或分开的软件工具)还可以执行软件指令以接管对该数据分组的处置。跟踪器124可以包括跟踪寄存器126,其存储指示启用还是禁用跟踪的值。与由处理器112生成的其他数据一样,在被写入主存储器114之前,分组流的跟踪数据可以初始地存储在内部缓冲器160中。一旦跟踪数据在主存储器114中,软件就可以访问跟踪数据并且对其进行分析或者将其呈现给用户以用于解释。
虚拟机190A、190B或190C可以各自包括访客操作系统和使用处理器112的一个或多个应用。例如,虚拟机可以执行启用跟踪的调试应用,从而允许虚拟机的用户调试访客OS或由虚拟机执行的其他应用。虚拟机可以指定在其中存储在跟踪缓冲器116内生成的跟踪数据的一组虚拟存储器地址。
进一步参考图1B,在一个实施例中,每个核120可以包括模型专用寄存器(MSR)的集合130A以供一个或多个VM 190A使用,尽管许多MSR可以由单个核120共享或跨若干核120共享。在一个实施例中,当VM被交换进入和离开核时,MSR可以被交换进入和离开核。每个核120还可以包括虚拟机控制结构(VMCS)136以保存当该交换发生时VM的当前状态。
作为示例,图1A的模型专用寄存器的集合130A在图1B中更详细地示出。模型专用寄存器的集合130A可以包括但不限于,跟踪寄存器126(图1A)、性能监视计数器(PMC)寄存器132、重新加载寄存器134、PERF_GLOBAL_CTRL寄存器138、DEBUG_CTRL寄存器142、和任何其他VMCS寄存器143、性能监视中断(PMI)寄存器144、一个或多个最后分支寄存器148。当VM被交换进入或离开核时,VMCS 136可以保存寄存器138、142和143中的每一个的值作为对应的VM状态的一部分。下文将更详细地描述MSR 130A,但是在其中一个或多个虚拟机对虚拟化服务器110进行操作的虚拟化环境内,MSR各自在促进控制跟踪和PEBS数据生成中起作用。因此,这些寄存器中的一些还帮助促进VMM 180支持以系统范围、访客和主机类型的方式对PEBS的使用,当处理器112执行VM-退出和VM-进入时,该方式对主机可能是透明的,如下文将更详细地说明的。
在一个实施例中,处理器112可以包括任何类型或数量的基于事件的采样器128。尽管在图1A中基于事件的采样器128被示出为与核120分开,但是基于事件的采样器128可以实现在核中,如本文中所描述的其他硬件和固件能够的,诸如跟踪器124和MSR的集合130A–130C,例如,如图1B部分地示出的。例如,在仅访客模式中,每个VM可以具有其自己的跟踪器、基于事件的采样器、和寄存器状态,当该VM被交换进入和离开核时,它们被交换进入和离开核120。在完整系统模式中,跟踪器、基于事件的采样器、和寄存器可以被配置一次并且跨VM交换而持续。注意,若干不同虚拟机可以在不同核上同时运行。
基于事件的采样器128可以由微代码指令、数字电路、模拟电路或其组合实现。在另一实施例中,基于事件的采样器128可以记录并存储来自源的关于处理器执行的信息,上述源诸如性能计数器、寄存器和执行单元,其可以被包括在核中或处理器112的另一部分中。在又一实施例中,基于事件的采样器128可以通过选择性地转储寄存器、计数器、或处理器112的其他部分的内容来记录并存储关于处理器执行的信息。
基于事件的采样器128可以在任何合适的时间记录并存储关于处理器的执行的信息。在一个实施例中,基于事件的采样器128可以在执行之后在指令的引退时执行数据收集。因此,基于事件的采样器可以在给定的指令被执行之后记录被引退的该指令的信息,从而提供在这时候的处理器状态的快照。在另一实施例中,基于事件的采样器可以在诸如加载或存储的存储器访问指令的引退之后执行数据收集。在另一实施例中,基于事件的采样器可以在最旧的指令响应于处理器中其他地方的不相关的活动而引退之后执行数据收集,从而提供事件的发生的时间。
基于事件的采样器128可以将执行数据收集的结果输出至任何合适的目的地。在一个实施例中,在被保存到跟踪缓冲器116(或其他跟踪存储目的地)中之前,基于事件的采样器可以将结果输出至记录,诸如存储器缓冲器160或输出端口150,作为存储器分级步骤。跟踪缓冲器116(或其他存储)内的PEBS记录的基址和范围可以由寄存器定义。在跟踪缓冲器116(或其他存储)中在指定地址处接收到此类数据后,数据可以用于执行关于处理器112的各种分析。例如,可以执行安全概况分析,其中分析处理器的当前状态以确定是否出现了安全或恶意软件漏洞。在一个实施例中,概况分析器可以获得从被引退的指令返回的采样信息的统计调用栈。在另一实施例中,概况分析器可以使用常见的大量计算型函数(诸如加密)的预计算的值来执行调用参数概况分析。
如所讨论的,尽管跟踪涉及为在处理器112中引退的任何指令生成跟踪数据,但是PEBS采样涉及周期性地取得处理器状态的快照并且然后依赖统计分析以在快照之间进行推断以获得与感兴趣的执行事件相关的性能的更完整的图像。简言之,当事件计数器溢出时,处理器112可以在下一匹配事件之后使执行陷入、记录处理器状态、重新加载计数器、并且恢复执行。为了捕捉处理器状态,PEBS微代码可以在第n次事件的发生之后生成(例如,“转储”)数据(例如,指令指针(IP)、处理器执行状态、存储器访问地址和等待时间、等等)的日志或记录。可以通过存储在线性寻址的存储器中的一组字段来完成PEBS输出缓冲器和PEBS重新加载值的配置。然而,以此方式生成PEBS记录的微代码流或组合逻辑是非可重入的:该功能要求OS固定输出缓冲器页,使得在微代码流中间不存在页错误。
在一个实施例中,并且作为使PEBS数据生成顺应于虚拟化的第一步骤,基于事件的采样器128可以执行(不论通过例如硬件还是微代码执行)一系列信号操作,其将PEBS采样记录(或日志)的元素的基于事件的现场数据传送至跟踪器124,使得跟踪器124可以将采样记录结合到PT流中。信号操作以跟踪器124识别并且能捕捉、并且因此是跟踪器兼容的格式生成现场数据。例如,每个元素的现场数据可以包含用于标识数据类型和现场数据与其相关的采样记录内的元素的头部。在微代码的一个实现方式中,按特定顺序执行信号操作,使得跟踪器124按同一特定顺序接收元素的值。跟踪器124然后可以进一步将现场数据格式化(例如,分组化或打包)为采样记录的元素以生成记录分组,或如所讨论的,各自与分组化元素相关的一组记录分组。如下文将参考图2讨论的,记录分组包括标识特定有效负载数据的头部。跟踪器124可以进一步将这些记录分组交织在PT流的跟踪数据分组之间,并且将经交织的分组流路由至由跟踪器124控制的存储器缓冲器160或端口150。可以如先前为PT流完成的那样执行该路由。
图2是图示根据本公开的实施例的插入在跟踪数据分组之间的一组PEBS分组的规范的一组数据分组的表200。表200包括多个列。此处,“分组”是包括分组头部、接着有效负载、并且在一些情况下接着分组尾部的数据结构。表200的第一列和第二列可以表示每个分组的分组头部,其中第一列包括分组类型210,并且第二列包括分组有效负载220。附加列可以包括数据分组中的有效负载的字节230。许多字段是自描述的,因为分组头部指示有效负载中的数据的类型,并且不需要枚举其中分组可以按各种顺序被路由的特定固定布局。
在一个实施例中,分组类型列中的BLOCK_BEGIN(块_开始)分组接着是类型,并且指示后续字节应当根据BLOCK(块)类型来解释。注意,例如,在表中存在多个具有头部0x04的分组。这些分组在跟踪流中看起来可能是相同的,但是前面的BLOCK_BEGIN分组类型提供用于解释第二列的分组有效负载220的上下文,诸如分组有效负载是(PEBS分组的)可应用计数器还是(下文讨论的GPR的)R/E标志。这些字节将意味着BLOCK上下文之外的一些不同含义。在BEGIN之后,通常不允许其他分组类型。非PEBS分组可能看起来像块字段分组,并且在BLOCK上下文内将被误解。当在流中遇到另一个BLOCK_BEGIN或遇到BLOCK_END(块_结束)时,该上下文结束。
如在表200的示例规范中所见,第一分组是时间戳计数器(TSC),其提供全局系统时间,该时间可以为何时生成了PEBS分组提供上下文。在不同实施例中,可以将TSC分组插入到PEBS分组之前或之后。例如,执行PEBS硬件和/或微代码可以使TSC分组被插入到PT流中在PEBS BLOCK_BEGIN分组之前以为何时生成了PEBS分组提供时序上下文。因此,下一分组是该组PEBS分组中的一个,其作为“PEBS分组”继续,直到BLOCK_END或指示转变到另一个分组类型的另一个BLOCK_BEGIN。如所示,PEBS分组接着是多个通用寄存器(GPR)分组,各自以分组有效负载类型GPR的BLOCK_BEGIN开始,其是在处理器的通用编程中使用的基本寄存器。在GPR分组之后是最后分支寄存器(LBR)分组,接着是BLOCK_END指示符,其进而接着是流程更新分组(FUP)。FUP提供在取得记录的时间的当前指令指针。当在转移之前使异步转移作为指令指针时也使用FUP分组。
分组有效负载220指示分组中包含的数据的类型。对于PEBS分组,第一分组有效负载220字段是“PEBS”,以信号指示分组的其余部分将包含记录数据的各种PEBS字段。PEBS记录分组内的下列分组有效负载指示符包括但不限于,可应用计数器、基于事件的指令指针(IP)、存储器辅助信息、存储器访问等待时间、存储器访问地址、和事务同步指令(TSX)辅助信息。
进一步参考图1A和1B,在一个实施例中,用于跟踪分组数据和PEBS数据的微代码由环0(例如,内核或最高特权等级的保护)软件配置,使得这些处理器尽可能的安全。用于调试和性能分析的软件工具然后可以取得PEBS和跟踪数据分组的统一流并且将它们与其他信息组合以产生性能的丰富视图。处理器跟踪将跟踪数据分组内的上下文提供给PEBS记录分组。此外,来自OS和VMM的信息可以被进一步地与来自跟踪数据分组的该上下文组合以在执行中更精确地定位PEBS样本的上下文。然后可以将该信息馈送至性能分析工具,诸如
Figure GDA0004064910150000131
Linux Perf等。
在PT输出流内路由PEBS分组允许PEBS虚拟化利用处理器跟踪支持的优势以用于访客模式概况分析和完整系统模式概况分析、以及用于对PT可用的容错输出选项的阵列。在一个实施例中,当执行系统范围概况分析时,可以使用主机物理地址来编程缓冲器160。当执行仅访客概况分析时,可以使用访客物理地址来编程这些缓冲器160,并且VMM 180可以采用扩展页表(MPT)来将访客物理地址映射到主机物理地址。如先前讨论的,该机制部分地通过在方便的时间预取下一输出页来阻止MPT违规(例如,其中访客页未被映射到主机物理页)损坏跟踪。依赖于这些存储器管理机制通过为PEBS和PT提供单个统一输出控制而允许概况分析软件简化。
此外,处理器跟踪将现在可用于组合输出流(例如,PEBS分组与PT数据分组组合)的若干不同输出选项提供给不同的缓冲器160或输出端口150(其还可以包括存储器缓冲器)。因此,在各实施例中,组合输出流可以存储在物理地址的表(ToPA)、单个范围输出、和诸如跟踪中枢的跟踪聚集器中。将组合输出流存储到ToPA可以是将流发送到分布式输出缓冲器的方式,类似于页表但是用于跟踪/PEBS输出。ToPA以分布式方式(例如,到非连续的存储器)分配存储器以创建更大的缓冲器以用于在分布式存储器块中的PEBS输出数据的连续缓冲。输出端口150可以与连接到跟踪调试器和芯片外分析器(诸如LauterbachTM)的输出引脚通信。
跟踪聚集器可以是位于除存储器之外的某个地方的PEBS存储位置,诸如位于可以包括跟踪中枢、芯片外调试器等的各种端点。在一个实施例中,到调试端口(诸如ITP、USB、HDMI)的连接穿过跟踪中枢(或跟踪聚集器)。用户可以配置跟踪中枢以将跟踪输出定向到DRAM或可用的调试端口中的一个。单个范围可以是物理寻址的结构,该结构是连续存储器,例如,包括开始指针和结束指针以及一系列连续存储器地址的存储器结构。被发送到单个范围存储器的PEBS数据然后可以被发送到特定输出端口,其在将输出流发送到存储器映射的IO时被更普遍地使用。在另一实施例中,跟踪中枢包括边带连接,使得与来自软件的加载和存储共享存储器子系统是不必要的。以此方式,跟踪数据不太干扰软件的跟踪。
在一些实施例中,PEBS硬件或微代码可以被适配,使得基于事件的采样器可以在检测到PEBS记录分组的生成之后使中断被触发。该能力可以通过设置PMI寄存器144来启用。当采用时,中断为处理器核120提供立即将记录分组传送(可选地与经交织的跟踪数据分组一起)至输出引脚的机会以供需要记录分组(以及可选地经交织的跟踪数据分组)的调试器或芯片外分析器来执行调试或故障检测功能。在一个实施例中,在采取该动作中,跟踪器124还可以进一步缓冲PEBS记录与其他跟踪数据分组以供正常调度下的稍后输出。
图3是图示根据本公开的实施例的使跟踪数据分组与PEBS分组交织的分组流300的示例的示图。跟踪数据分组反映的事件类型包括但不限于,采用/未采用的条件分支(TNT)304、时间戳计数器(TSC)308、流程更新分组(FUP)316、分页信息分组(PIP)324、虚拟机控制结构(VMCS)分组328、最后分支寄存器(LBR)分组340、和目标指令指针(TIP),其中最后一个未示出。如所讨论的,多个PEBS分组312可以在跟踪数据分组之间交织,多个PEBS分组各自包含可应用计数器、事件相关的执行指令指针(EIP)和构成在到达感兴趣的事件发生第n次后生成的PEBS记录的各种其他数据。
在一个实施例中,可以配置跟踪器微代码以使得响应于检测到PEBS分组312被插入到分组流300中而生成TSC分组308。PIP分组324包括包含与分组流300相关的信息的数据,并且具体地,以提供关于VM 190A被从先前应用或程序切换到执行的新应用或程序的信息,或关于VM被从先前VM状态切换到执行的新VM状态的信息。
在一个实施例中,VMCS分组328包含虚拟化服务器110上的活动访客的虚拟机190A、190B或190C的状态,例如,当执行退出虚拟机时,使得状态被保存。以此方式,虚拟化服务器110可以重新进入虚拟机并且根据所保存的VM状态捡起虚拟机的执行。如稍后将进一步说明的,VMCS寄存器136(图1B)提供对状态和其他VM数据的生成和保存的控制能力。
进一步参考图1A和1B,当PMC计数器(诸如可以存储在PMC寄存器132中)在对特定事件类型的事件的特定数量(例如,“n”)计数之后溢出时,PEBS被装备(例如,准备以捕捉PEBS记录的元素内的处理器状态),并且在触发特定事件类型的事件的下一指令之后,基于事件的采样器128被触发以转储PEBS记录。在先前操作中,输出缓冲器160的边界被检查,并且如果存在足够的存储器空间,则将PEBS元素的值经由存储操作写入到存储器中的输出缓冲器160。然而,当跟踪器124将与跟踪数据分组交织的PEBS分组记录结合到输出缓冲器160中时,不需要对输出缓冲器边界的显式的检查,因为跟踪器124自主地管理缓冲器,例如,利用预配置电路和微代码而没有外部影响。代替直接通过存储操作写入存储器中的输出缓冲器,基于事件的采样器128可以经由微代码或硬件来执行一系列信号操作,其中的每一个是将特定现场的现场数据传送至跟踪器124的单独的微操作。
在一个实施例中,一系列信号操作中的每个信号操作可以将其现场数据(来自PEBS转储)存储到不同的通用寄存器(例如,r1、r2、r3...)中和/或将该现场数据路由至图1A的跟踪器124。在一个示例中,微代码可以被适配以使得按某个顺序执行信号操作,使得跟踪器124按某个顺序接收特定元素的特定现场数据。跟踪器124然后可以将数据记录的元素格式化(例如,分组化或打包)以生成PEBS记录分组或对应于PEBS记录的元素的一组记录分组。在一个示例中,跟踪器124记下来自每个元素的头部的字段的类型,以便可选地以与每一组记录分组相同的方式对元素排序。可以通过接收来自基于事件的采样器的多个元素的每个值、通过元素的头部标识每个元素、并且将多个元素包裹在一起以形成PEBS记录分组来执行格式化。在一个实施例中,元素按某个顺序布置。
用于创建PEBS记录分组的格式化还可以包括将每个元素的头部组合到记录分组的头部中,该头部被创建以标识记录分组内的有效负载数据。例如,图2中的“可应用计数器”的头部在PEBS分组的头部中可以被首先列出,其中对应的现场数据将在有效负载数据内被首先放置。类似的,“事件相关的IP(EventingIP)”的头部在头部中可以被第二列出,其中指令指针值(现场数据)将在有效负载数据中被第二放置,等等,沿着列表向下,在PEBS分组的每个有效负载的对应头部中。跟踪器124然后可以将该组记录分组插入到多个跟踪数据分组中的一些之间,其中跟踪器124的选项首先将TSC分组插入在该组记录分组之前,以生成可以被路由至由跟踪器控制的存储器缓冲器或端口中的至少一个的组合分组流。
在一个实施例中,禁用大部分PT跟踪(例如,消除控制流分组和其他类型的分组)是可能的,从而产生几乎全部由PEBS记录分组构成的跟踪流。这可以减小输出流尺寸并且将所收集的信息限制为仅期望类型的信息,其中处理器跟踪数据可能不是必须的或者其中存在更少的空间或带宽用于PT流数据分组。在一个实施例中,可以通过跟踪寄存器126的设置来选择性地执行对PT跟踪的禁用。
进一步参考图1B,本公开还提出对附加的模型专用寄存器(MSR)的使用。在一个实施例中,每个VM 190A、190B或190C具有其自己的MSR集合,因此每个VM可以执行与其他VM分开的其自己的采样。在一个实施例中,在使基于事件的采样器128转储PEBS记录之前,重新加载寄存器134可以保持是特定事件类型将发生的次数的值“n”。重新加载值可以是例如-1000。PMC寄存器132可以包括PEBS计数器,每当特定事件类型发生时,可以递增PEBS计数器。在处理器112的重置或PMC寄存器132的溢出之后,来自重新加载寄存器134的重新加载值可以存储在PMC寄存器132中,PMC寄存器132然后再次开始在每次事件发生时递增。
更具体地,当PMC寄存器132的PEBS计数器溢出时,例如,到达该示例中作为预定触发值的零(“0”),并且在溢出之后特定事件类型下一次发生时,重新加载值可以被重新加载到PMC寄存器132中。此外,如先前所讨论的,在PMC寄存器溢出后,基于事件的采样器128可以执行信号操作以生成PEBS记录内的元素的基于事件的值。重新加载寄存器134可以为不同事件(并且可选地不同VM)包含不同的重新加载值,并且因此对用于不同类型事件的PEBS记录生成的周期性进行定制。
尽管被集成在PT跟踪流内,PEBS记录分组仍然可以利用与PT过滤不同的PEBS专用过滤来处置。例如,PEBS过滤可以允许处理器112来确定在程序中的特定过滤点处的执行之前什么应当发生,以及在该过滤点之后什么应当发生。根据算作是“事件”以用于递增计数器的情况,可以通过对PEBS计数器的仔细跟踪(如刚才讨论的)来执行对程序中的该过滤点的跟踪。虚拟机的执行还可以在该点处被暂停以读出在该过滤点处的事件的数据。
在一个实施例中,处理器112还可以控制并参考VMCS寄存器以帮助VMM 180在VM-退出时得到来自操作系统的正确数据并且在VM-进入时正确地再次开始VM操作,始终不导致PEBS记录分组的损失。例如,在系统范围概况分析的一个设置中,处理器112可以启用对所有活动的跟踪并且因此在转变进入和离开任何特定虚拟机之间不做任何事情。换言之,在这些转变处没有切换,因为VMM 180和主机均能被跟踪。然而,如果虚拟化服务器110被设置在仅访客概况分析中,则处理器112可以被配置为仅跟踪VMM 180,在这种情况下基于事件的采样器128可以选择性地在VM-退出时关闭PEBS并且在VM-进入时重新打开PEBS。
因此,跟踪寄存器126可以被设置为选择性地打开和关闭跟踪,这将有效地关闭所有跟踪和PT流内的PEBS记录分组路由。此外,PERF_GLOBAL_CTRL寄存器138可以被控制以便控制PMC寄存器132的计数器。如果PERF_GLOBAL_CTRL寄存器138未被置位(例如,包含零),例如,则关闭计数器并且可以不生成PEBS记录。此外,DEBUG_CTRL寄存器142可以被置位以控制最后分支条目(LBR),当最后分支条目被清除时也将关闭PEBS记录分组内的LBR事件的生成。处理器112的VMCS控制(例如,通过VMCS寄存器143)可以允许DEBUG_CTRL寄存器142在系统范围控制下在VM-退出时不被清除,例如,以使LBR从主机到访客保持启用。其他MSR还可以用于选择性地关闭驱动用于其他PEBS字段的值的生成的功能。
进一步参考图1A,软件PT解码器194可以对交织的分组流(包括跟踪数据分组和PEBS记录分组)解码以对PEBS记录分组解码。对于完整解码,包括对处理器执行内的每个分组的上下文的确定,PT解码器194可以访问来自数据库119的程序二进制文件和OS驱动程序事件。对关于来自PEBS记录的基于事件的指令指针的程序二进制文件和OS驱动程序事件内的元数据的比较可以帮助确定对PEBS记录分组中的数据有贡献的函数在程序二进制文件中的位置。OS驱动程序事件可以是来自操作系统的通知OS的执行状态的操作的跟踪数据。
更具体地,PT解码器194可以检取并检查来自程序二进制文件、OS驱动程序事件的元数据,并且分析关于对应于所捕捉的指令指针(IP)的跟踪数据分组(诸如TNT、PIP、TIP和FUP分组)和一组PEBS记录分组的该数据。例如,如果PIP分组指示程序变化并且在PT流附近沿着PT流存在PEBS记录分组,则PT解码器194可以将程序执行的变化与被分组化为PEBS记录分组的PEBS数据记录生成相关联。PT解码器194还可以使用来自一组PEBS记录分组的IP结合元数据以进一步确定在特定事件类型发生的时间被执行的函数或线程的标识。所有该上下文类型信息可以为接收与跟踪数据和PEBS记录分组一起的信息的调试和性能监视应用或工具提供所需的上下文。
图4A是图示根据本公开的实施例的为PEBS数据记录生成配置虚拟化系统100的方法400的流程图。方法400可以由处理系统执行,该处理系统可以包括硬件(例如,电路、专用逻辑和/或可编程逻辑)、软件(例如,在计算机系统上可执行以执行硬件模拟的指令)或其组合。在说明性示例中,方法400可以由图1A的虚拟化系统100执行,并且因此可以在虚拟机上或在系统范围的基础上执行。可由执行方法的虚拟化服务器110的一个或多个处理器(诸如处理器112)来执行方法400和/或其函数、例程、子例程或操作中的每一个。可并行地或按可不同于上述顺序的顺序来执行方法400的两个或更多个函数、例程、子例程或操作。
参考图4A,方法400可以开始,其中处理器采用环_0驱动程序来配置性能监视单元和处理器跟踪器(410)。方法可以继续,其中实现方法的处理器可以使跟踪寄存器(和其他可应用的MSR,如刚才所讨论的)能生成用于虚拟机的跟踪数据,并且可选地,用于可以运行多个虚拟机的整个系统的跟踪数据(414)。方法可以继续,其中实现方法的处理器可以启用性能监视计数器(PMC)寄存器和重新加载寄存器,使得可以执行精确的基于事件的采样(PEBS)(418)。方法可以继续,其中实现方法的处理器可以用重新加载寄存器中的值加载PMC寄存器(422)。
图4A的方法400可以继续,其中实现方法的处理器可以确定在处理器的指令的执行时某个类型的事件是否被检测为正在发生,在一个实施例中,该指令可以在虚拟机上执行(426)。方法可以继续,其中实现方法的处理器在检测到某个类型的事件的发生后可以递增PMC寄存器的计数器(430)。方法可以继续,其中实现方法的处理器可以确定PMC寄存器的计数器是否溢出(434)。如果否,则方法可以继续,其中实现方法的处理器可以循环回到框426以继续尝试检测该事件的发生。如果是,则方法可以继续,其中实现方法的处理器可以生成用于PEBS采样记录的元素的现场数据,例如,通过执行微代码以执行信号操作,如先前所讨论的(438)。方法然后可以循环回到用重新加载寄存器中的值加载PMC寄存器(422),以再次开始PEBS计数器循环,直到对下一PEBS事件计数。
图4B是图示根据本公开的一个实施例的将PEBS记录格式化并输出为PEBS记录分组的方法404的流程图。方法404可以由处理系统执行,该处理系统可以包括硬件(例如,电路、专用逻辑和/或可编程逻辑)、软件(例如,在计算机系统上可执行以执行硬件模拟的指令)或其组合。在说明性示例中,方法404可以由图1A的虚拟化系统100执行,并且因此可以在虚拟机上或在系统范围的基础上执行。可由执行方法的虚拟化服务器110的一个或多个处理器(诸如处理器112)来执行方法404和/或其函数、例程、子例程或操作中的每一个。可并行地或按可不同于上述顺序的顺序来执行方法404的两个或更多个函数、例程、子例程或操作。
参考图4B,方法404可以开始,其中处理器的处理器跟踪器将PEBS采样记录的元素的现场数据(在图4A的方法的框438中生成)格式化以创建一组PEBS记录分组(440)。可以通过接收来自基于事件的采样器的多个元素中的每个元素的现场数据、通过头部标识每个元素、并且将多个元素包裹(例如,打包或分组化)在一起以形成PEBS记录分组来执行格式化。替代地,处理器跟踪器可以将元素的现场数据格式化为一组单独的PEBS分组,可选地按特定顺序排序。格式化还可以包括使用每个元素的头部作为对应记录分组的头部,以标识记录分组内的有效负载数据。
方法可以继续,其中处理器跟踪器可以将该组记录分组插入到根据PT跟踪生成的跟踪数据的跟踪数据分组之间,以生成组合分组流(如参考图2-3说明的并且如图2-3所示)(444)。通常可以按时序地在PEBS数据转储的时候执行对记录分组的插入,但是可以在策略上在TSC分组的生成和插入之后插入到流中,以标识插入的精确时间。方法可以继续,其中实现方法的处理器可以将组合分组流作为一系列输出页存储到由处理器跟踪器控制的存储器缓冲器(或端口)中的至少一个(446)。方法可以继续,其中实现方法的处理器当在访客概况分析模式中时可以执行VMM以使用扩展页表(MPT)或类似的映射结构将存储器缓冲器(或端口)的一系列输出页映射到主存储器的主机物理页(450)。
图4C是图示根据本公开的一个实施例的分析PEBS记录分组以用于调试和故障检测目的的方法414的流程图。方法414可以由处理系统执行,该处理系统可以包括硬件(例如,电路、专用逻辑和/或可编程逻辑)、软件(例如,在计算机系统上可执行以执行硬件模拟的指令)或其组合。在说明性示例中,方法414可以由图1A的虚拟化系统100执行,并且因此可以在虚拟机上或在系统范围的基础上执行。可由虚拟化服务器110的一个或多个处理器来执行方法414和/或其函数、例程、子例程或操作中的每一个,诸如处理器112,执行该方法,或如本文中所讨论的调试或性能分析工具。可并行地或按可不同于上述顺序的顺序来执行方法414的两个或更多个函数、例程、子例程或操作。
参考图4C,方法414可以开始,其中实现方法的处理器可以在某个类型的事件发生时从VMM检取由处理器执行的二进制程序的标识(460)。方法可以继续,其中实现方法的处理器可以检取来自虚拟机的操作系统的与二进制程序相关的元数据,其中元数据引用在所确定的事件的发生时或之前被执行的函数(464)。方法可以继续,其中实现方法的处理器可以根据元数据和指令指针来确定被执行的函数的标识(468)。方法可以继续,其中实现方法的处理器可以将被执行的函数的标识与记录分组一起发送至性能分析工具(472)。
图5是根据本公开的实施例的SoC 500的框图。虚线框是更先进的SoC的任选特征。在图5中,互连单元508被耦合至:应用处理器510,其包括一组一个或多个核502A–502N以及共享高速缓存单元506;系统代理单元550;总线控制器单元516;集成存储器控制器单元514;一组一个或多个媒体处理器520,其可包括集成图形逻辑522、用于提供静止和/或视频照相功能的图像处理器524、用于提供硬件音频加速的音频处理器526、用于提供视频编码/解码加速的视频处理器528;静态随机存取存储器(SRAM)单元530;直接存储器存取(DMA)单元532;以及显示单元540,其用于耦合至一个或多个外部显示器。在一个实施例中,应用处理器510包括或是图1的处理器112。
存储器层级结构包括核内的一个或多个高速缓存级别、一组一个或多个共享高速缓存单元506、以及耦合至集成存储器控制器单元514的集合的外部存储器(未示出)。共享高速缓存单元506的集合可包括一个或多个中间级别的高速缓存、末级高速缓存(LLC)和/或以上各项的组合,中间级别的高速缓存诸如第2级(L2)、第3级(L3)、第4级(L4)或其他级别的高速缓存。在一些实施例中,核502A–502N中的一个或多个能够实现多线程化。
系统代理550包括协调和操作核502A–502N的那些组件。系统代理单元550可包括例如功率控制单元(PCU)和显示单元。PCU可以是对核502A–502N以及集成图形逻辑508的功率状态进行调节所需的逻辑和组件,或可包括这些逻辑和组件。显示单元540用于驱动一个或多个外部连接的显示器。
核502A–502N在架构和/或指令集方面可以是同构或异构的。例如,核502A–502N中的一些可以是有序的,而另一些是乱序的。作为另一个示例,核502A–502N中的两个或更多可能能够执行相同的指令集,而其他核可能能够执行该指令集中仅仅子集或执行不同的指令集。
应用处理器510可以是通用处理器,诸如,酷睿(CoreTM)i3、i5、i7、2Duo和Quad、至强(XeonTM)、Xeon-PhiTM、安腾(ItaniumTM)、XScaleTM或StrongARMTM处理器,这些均可以从加利福尼亚州圣克拉拉市的英特尔公司获得。或者,应用处理器510可以来自另一个公司,诸如,来自ARM控股公司、MIPS等。应用处理器510可以是专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器等等。应用处理器510可被实现在一个或多个芯片上。应用处理器510可以是一个或多个衬底的部分,和/或可以使用诸如例如BiCMOS、CMOS或NMOS之类的数种工艺技术中的任何技术实现在一个或多个衬底上。
图6是根据本公开的芯片上系统(SOC)设计的实施例的框图。作为特定的说明性示例,SOC 600被包括在用户装备(UE)中。在一个实施例中,UE指可由最终用户用于通信的任何设备,诸如,手持电话、智能电话、平板、超薄笔记本、具有宽带适配器的笔记本,或任何其他类似的通信设备。UE通常连接到基站或节点,该基站或节点本质上潜在地对应于GSM网络中的移动站(MS)。在一个实施例中,SOC 600可以包括图1的处理器112或可以包括处理器112的各种特征或组件。
在此,SOC 600包括2个核——606和607。核606和607可符合指令集架构,诸如,基于
Figure GDA0004064910150000221
架构酷睿(CoreTM)的处理器、超微半导体公司(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计,或它们的客户,以及它们的被许可方或采纳方。核606和607耦合到高速缓存控件608,该高速缓存控件608与总线接口单元609和L2高速缓存610相关联以与SOC 600的其他部分通信。互连611包括潜在地实现所描述公开的一个或多个方面的芯片上互连,诸如IOSF、AMBA或以上所讨论的其他互连。
接口611提供到其他组件的通信信道,其他组件诸如,用于与订户身份模块(SIM)卡对接的SIM 630、用于保存供核606和607执行以初始化并引导SOC 600的引导代码的引导ROM 635、用于与外部存储器(例如,DRAM 660)对接的SDRAM控制器640、用于与非易失性存储器(例如,闪存665)对接的闪存控制器645、用于与外围设备对接的外围控制器650(例如,串行外围接口)、用于显示和接收输入(例如,启用触摸的输入)的视频编解码器620和视频接口625、用于执行图形相关的计算的GPU 615等。这些接口中的任何一者可包括本文中所描述公开的多个方面。
另外,系统600图示出用于通信的外围设备,诸如蓝牙模块670、3G调制解调器675、GPS 680以及Wi-Fi 685。注意,如上文所述,UE包括用于通信的无线电装置。结果,这些外围通信模块不都是需要的。然而,在UE中,将包括用于外部通信的某种形式的无线电装置。
图7是根据实现方式的多处理器系统700的框图。如图7所示,多处理器系统700是点对点互连系统,且包括经由点对点互连750耦合的第一处理器770和第二处理器780。处理器770和780中的每一个都可以是图1中的处理器112的某一版本。如图7所示,处理器770和780中的每一个都可以是多核处理器,包括第一和第二处理器核,虽然潜在地更多核可以存在于处理器中。也可将处理器核称为执行核。
虽然以两个处理器770、780来示出,但应理解本公开的范围不限于此。在其他实现方式中,在给定处理器中可存在一个或多个附加处理器。
处理器770和780被示为分别包括集成存储器控制器单元772和782。处理器770还包括作为其总线控制器单元的一部分的点对点(P-P)接口776和778;类似地,第二处理器780包括P-P接口786和788。处理器770、780可以经由使用点对点(P-P)接口电路778、788的P-P接口750来交换信息。如图7所示,IMC 772和782将处理器耦合到相应的存储器,即存储器732和存储器734,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器770、780可各自经由单独的P-P接口752、754使用点对点接口电路776、794、786和798来与芯片组790交换信息。芯片组790还可经由高性能图形接口739来与高性能图形电路738交换信息。
共享高速缓存(未示出)可被包括在任一处理器中,或在这两个处理器的外部但经由P-P互连与这些处理器连接,使得如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
芯片组790可经由接口796耦合至第一总线716。在一个实施例中,第一总线716可以是外围组件互连(PCI)总线或诸如PCI高速总线或另一第三代I/O互连总线之类的总线,但是本公开的范围不限于此。
如图7所示,各种I/O设备714可连同总线桥718一起耦合到第一总线716,总线桥718将第一总线716耦合到第二总线720。在一个实施例中,第二总线720可以是低引脚数(LPC)总线。在一个实施例中,各种设备可以耦合至第二总线720,包括例如,键盘和/或鼠标722、通信设备727以及可包括指令/代码和数据730的存储单元728(诸如,盘驱动器或其他大容量存储设备)。此外,音频I/O 724可被耦合至第二总线720。注意,其他架构是可能的。例如,代替图7的点对点架构,系统可以实现多分支总线或其他此类架构。
图8A是示出根据本公开的一些实施例的由图8B的核890(其可以被包括在处理器中)实现的有序流水线以及寄存器重命名级、乱序发布/执行流水线的框图。图8B是示出根据本发明的至少一个实施例的、可以被包括在处理器中的有序架构核以及寄存器重命名逻辑、乱序发布/执行逻辑的框图。图8A中的实线框示出了有序流水线,而虚线框示出了寄存器重命名的、乱序发布/执行流水线。类似地,图8A中的实线框示出了有序架构逻辑,而虚线框示出了寄存器重命名逻辑以及乱序发布/执行逻辑。在图8A中,处理器流水线800包括取出级802、长度解码级804、解码级806、分配级808、重命名级810、调度(也称为分派或发布)级812、寄存器读取/存储器读取级810、执行级816、写回/存储器写入级818、异常处置级822和提交级824。在一个实施例中,图1的处理器112可以包括核890的功能中的一些或全部。
图8B是示出根据本公开的至少一个实施例的、可以被包括在处理器中的有序架构核以及寄存器重命名逻辑、乱序发布/执行逻辑的框图。在图8B中,箭头指示两个或更多个单元之间的耦合,且箭头的方向指示那些单元之间的数据流的方向。图8B示出处理器核890,该处理器核包括耦合到执行引擎单元850的前端单元830,并且执行引擎单元和前端单元两者都耦合到存储器单元870。
核890可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或者混合或替代的核类型。作为又一选项,核890可以是专用核,诸如例如,网络或通信核、压缩引擎、图形核等。
前端单元830包括耦合至指令高速缓存单元834的分支预测单元832,该指令高速缓存单元834耦合至指令转换后备缓冲器(TLB)836,该指令转换后备缓冲器836耦合至指令取出单元838,指令取出单元838耦合至解码单元840。解码单元或解码器可解码指令,并生成从原始指令中解码出的、或以其他方式反映原始指令的、或从原始指令中导出的一个或多个微操作、微代码进入点、微指令、其他指令或其他控制信号作为输出。可使用各种不同的机制来实现解码器。合适机制的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元834进一步耦合到存储器单元870中的第2级(L2)高速缓存单元876。解码单元840耦合到执行引擎单元850中的重命名/分配器单元852。
执行引擎单元850包括重命名/分配器单元852,该重命名/分配器单元852耦合至引退单元854和一个或多个调度器单元的集合856。调度器单元856表示任何数量的不同调度器,包括预留站、中央指令窗等。调度器单元856耦合至物理寄存器堆单元858。物理寄存器堆单元858中的每一个表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一个或多个不同的数据类型(诸如,标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点等)、状态(诸如,作为将要执行的下一指令的地址的指令指针)等等。(多个)物理寄存器堆单元858与引退单元854重叠以图示出可以用来实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来文件、(多个)历史缓冲器和(多个)引退寄存器堆;使用寄存器映射和寄存器池;等等)。通常,架构寄存器从处理器外部或从编程者的视角来看是可见的。这些寄存器不限于任何已知的特定电路类型。各种不同类型的寄存器可适用,只要它们能够存储并提供如本文中所描述的数据。合适寄存器的示例包括但不限于,专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、以及专用物理寄存器和动态分配物理寄存器的组合,等等。引退单元854和(多个)物理寄存器堆单元858耦合至(多个)执行集群860。(多个)执行集群860包括一个或多个执行单元162的集合和一个或多个存储器访问单元864的集合。执行单元862可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。尽管一些实施例可以包括专用于特定功能或功能集合的数个执行单元,但是其他实施例可仅包括一个执行单元或全都执行所有功能的多个执行单元。(多个)调度器单元856、(多个)物理寄存器堆单元858和(多个)执行集群860示出为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线,和/或各自具有其自身的调度器单元、物理寄存器堆单元和/或执行集群的存储器访问流水线——并且在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行集群具有(多个)存储器访问单元864的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,并且其余流水线可以是有序发布/执行。
存储器访问单元864的集合耦合至存储器单元870,该存储器单元870包括数据TLB单元872,该数据TLB单元872耦合至数据高速缓存单元874,该数据高速缓存单元874耦合至第2级(L2)高速缓存单元876。在一个示例性实施例中,存储器访问单元864可以包括加载单元、存储地址单元以及存储数据单元,其中的每一个都耦合到存储器单元870中的数据TLB单元872。L2高速缓存单元876耦合至一个或多个其他级别的高速缓存,并最终耦合至主存储器。
作为示例,示例性寄存器重命名的乱序发布/执行核架构可如下所述地实现流水线800:1)指令取出838执行取出级802和长度解码级804;2)解码单元840执行解码级806;3)重命名/分配器单元852执行分配级808和重命名级810;4)(多个)调度器单元856执行调度级812;5)(多个)物理寄存器堆单元858和存储器单元870执行寄存器读取/存储器读取级810;执行集群860执行执行级816;6)存储器单元870和(多个)物理寄存器堆单元858执行写回/存储器写入级818;7)各单元可牵涉到异常处置级822;以及8)引退单元854和(多个)物理寄存器堆单元858执行提交级824。
核890可支持一个或多个指令集(诸如,x86指令集(具有增加有更新版本的一些扩展)、英国赫特福德郡金斯兰利的想象技术公司(Imagination Technologies)的MIPS指令集、加利福尼亚州桑尼威尔的ARM控股公司的ARM指令集(具有可选附加扩展,诸如NEON))。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如
Figure GDA0004064910150000271
超线程化技术中的同时多线程化)。
尽管在乱序执行的上下文中描述寄存器重命名,但应当理解,寄存器重命名可在有序架构中被使用。虽然处理器的所图示的实施例也包括单独的指令和数据高速缓存单元834/874以及共享的L2高速缓存单元876,但替代实施例可具有用于指令和数据两者的单个的内部高速缓存,诸如例如,第1级(L1)内部高速缓存或多个层级的内部高速缓存。在一些实施例中,系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。替代地,所有高速缓存都可在核和/或处理器的外部。
图9是包括用于执行根据本发明的一个实施例的指令的逻辑电路的处理器900的微架构的框图。在一些实施例中,根据一个实施例的指令可以被实现为对具有字节尺寸、字尺寸、双字尺寸、四字尺寸等并具有诸如单精度和双精度整数和浮点数据类型之类的数据类型的数据元素执行操作。在一个实施例中,有序前端901是处理器900的部分,该有序前端901取出将要被执行的指令并准备这些指令以供稍后在处理器流水线中使用。前端901可包括若干单元。在一个实施例中,指令预取器926从存储器取出指令,并将指令馈送至指令解码器928,指令解码器928随后解码或解释指令。例如,在一个实施例中,解码器将所接收到的指令解码为机器可执行的被称为“微指令”或“微操作”(也称为微op或uop)的一个或多个操作。在其他实施例中,解码器将指令解析为由微架构使用以执行根据一个实施例的操作的操作码和对应的数据及控制字段。在一个实施例中,跟踪高速缓存930接受经解码的微操作,并将它们组装为微操作队列934中的程序有序序列或踪迹,以用于执行。当跟踪高速缓存930遇到复杂指令时,微代码ROM 932提供完成操作所需的微操作。在一个实施例中,图1的处理器112可以包括处理器900的组件和功能中的一些或全部。
一些指令被转换为单个微操作,而其他指令需要若干个微操作以完成整个操作。在一个实施例中,如果需要超过四个微操作来完成指令,则解码器928访问微代码ROM 932以进行该指令。对于一个实施例,指令可被解码为少量的微操作以用于在指令解码器928处进行处理。在另一实施例中,如果需要数个微操作来完成操作,则可将指令存储在微代码ROM 932内。跟踪高速缓存930参考进入点可编程逻辑阵列(PLA)来确定正确的微指令指针,以从微代码ROM 932读取微代码序列以完成根据一个实施例的一条或多条指令。在微代码ROM 932完成对于指令的微操作序列化之后,机器的前端901恢复从跟踪高速缓存930提取微操作。
乱序执行引擎903是将指令准备好用于执行的地方。乱序执行逻辑具有数个缓冲器,用于将指令流平滑并且重排序,以优化指令流进入流水线后的性能,并调度指令流以供执行。分配器逻辑分配每个微操作需要的机器缓冲器和资源,以用于执行。寄存器重命名逻辑将逻辑寄存器重命名为寄存器堆中的条目。在指令调度器(存储器调度器、快速调度器902、慢速/通用浮点调度器904、以及简单浮点调度器906)之前,分配器也将每个微操作的条目分配在两个微操作队列中的一个之中,一个微操作队列用于存储器操作,另一个微操作队列用于非存储器操作。微操作调度器902、904、906基于对它们的依赖输入寄存器操作数源的准备就绪以及微操作完成它们的操作所需的执行资源的可用性来确定微操作何时准备好用于执行。一个实施例的快速调度器902可以在主时钟周期的每半个上进行调度,而其他调度器仅可以在每个主处理器时钟周期上调度一次。调度器对分配端口进行仲裁以调度用于执行的微操作。
在执行块911中,寄存器堆908和910位于调度器902、904和906以及执行单元912、914、916、918、920、922和924之间。存在分别用于整数和浮点操作的分开的寄存器堆908、910。一个实施例的每个寄存器堆908、910也包括旁路网络,该旁路网络可将刚完成的还没有被写入寄存器堆的结果旁路或转发给新的依赖微操作。整数寄存器堆908和浮点寄存器堆910也能够彼此传递数据。对于一个实施例,整数寄存器堆908被划分为两个分开的寄存器堆,一个寄存器堆用于低阶的32位数据,第二个寄存器堆用于高阶的32位数据。一个实施例的浮点寄存器堆910具有128位宽度的条目,因为浮点指令通常具有从64至128位宽度的操作数。
执行块911包括执行单元912、914、916、918、920、922、924,在这些执行单元912、914、916、918、920、922、924中实际执行指令。该区块包括寄存器堆908、910,寄存器堆908、910存储微指令需要执行的整数和浮点数据操作数值。一个实施例的处理器900由以下数个执行单元所组成:地址生成单元(AGU)912、AGU 914、快速ALU 916、快速ALU 918、慢速ALU920、浮点ALU 922、浮点移动单元924。对于一个实施例,浮点执行块922、924执行浮点、MMX、SIMD、SSE或其他操作。一个实施例的浮点ALU 922包括64位除64位浮点除法器,用于执行除法、平方根、以及余数微操作。对于本发明的诸个实施例,涉及浮点值的指令可使用浮点硬件来处理。在一个实施例中,ALU操作进入高速ALU执行单元916、918。一个实施例的快速ALU916、918可执行快速操作,有效等待时间为半个时钟周期。对于一个实施例,大多数复杂整数操作进入慢速ALU 920,因为慢速ALU 920包括用于长等待时间类型操作的整数执行硬件,诸如,乘法器、移位器、标记逻辑和分支处理。存储器加载/存储操作由AGU 912、914来执行。对于一个实施例,整数ALU 916、918、920被描述为对64位数据操作数执行整数操作。在替代实施例中,ALU 916、918、920可被实现为支持多种数据位,包括16、32、128、256等等。类似地,浮点单元922、924可被实现为支持具有多种宽度的位的一系列操作数。对于一个实施例,浮点单元922、924可结合SIMD和多媒体指令对128位宽度紧缩数据操作数进行操作。
在一个实施例中,在父加载完成执行之前,微操作调度器902、904、906就分派依赖操作。因为在处理器900中微操作被推测地调度和执行,所以处理器900也包括用于处置存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则在流水线中会存在已带着临时错误的数据离开调度器的运行中的依赖操作。重放机制追踪使用错误数据的指令,并重新执行这些指令。仅依赖操作需要被重放,而允许独立操作完成。处理器的一个实施例的调度器和重放机制也被设计成用于捕捉用于文本串比较操作的指令序列。
术语“寄存器”可以指代被用作为指令的一部分以标识操作数的板上处理器存储位置。换句话说,寄存器可以是那些处理器外部(从编程者的角度来看)可用的处理器存储位置。然而,实施例的寄存器不限于意指特定类型的电路。相反,实施例的寄存器能够存储并提供数据,并能够执行本文中所描述的功能。本文所描述的寄存器可以由处理器中的电路使用任何数量的不同技术来实现,这些不同技术诸如专用物理寄存器、利用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等。在一个实施例中,整数寄存器存储32位整数数据。一个实施例的寄存器堆也包含用于紧缩数据的八个多媒体SIMD寄存器。对于以下讨论,寄存器应理解为设计成用于保存紧缩数据的数据寄存器,诸如,来自美国加利福尼亚州圣克拉拉市的英特尔公司的启用了MMX技术的微处理器中的64位宽MMXTM寄存器(在一些实例中,也称为‘mm’寄存器)。这些MMX寄存器(可用在整数和浮点形式中)可以与伴随SIMD和SSE指令的紧缩数据元素一起操作。类似地,涉及SSE2、SSE3、SSE4或更新的技术(统称为“SSEx”)的128位宽XMM寄存器也可被用于保持这样紧缩数据操作数。在一个实施例中,在存储紧缩数据和整数数据时,寄存器不需要区分这两种数据类型。在一个实施例中,整数和浮点可被包含在同一寄存器堆中,或被包含在不同的寄存器堆中。此外,在一个实施例中,浮点和整数数据可被存储在不同的寄存器中,或被存储在相同的寄存器中。
图10示出了计算机系统1000的示例形式的机器的图示性表示,在该计算机系统1000内,可执行用于使机器执行本文中所讨论的方法中的任何一个或多个的一组指令。在替代实施例中,可以在LAN、内联网、外联网或互联网中将机器连接(例如,联网)到其他机器。机器可以在客户机-服务器网络环境中作为服务器或客户机设备操作,或者在对等(或分布式)网络环境中作为对等机器操作。该机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、智能电话、web设备、服务器、网络路由器、交换机或桥、或者能够执行指定由该机器执行的动作的一组指令(顺序的或以其他方式)的任何机器。此外,虽然仅示出单个机器,但是,术语“机器”也应当认为包括单独地或联合地执行一组(或多组)指令以执行本文所讨论的方法中的任何一种或更多种方法的机器的任何集合。
计算机系统1000包括处理设备1002、主存储器1004(例如,只读存储器(ROM)、闪存、动态随机存取存储器(DRAM)(诸如,同步DRAM(SDRAM)或DRAM(RDRAM)等)、静态存储器1006(例如,闪存、静态随机存取存储器(SRAM)等)以及数据存储设备1018,它们经由总线1030彼此通信。
处理设备1002表示一个或多个通用处理设备,诸如,微处理器、中央处理单元等等。更具体地,处理设备可以是复杂指令集计算(CISC)微处理器、精简指令集计算机(RISC)微处理器、超长指令字(VLIW)微处理器、或实现其他指令集的处理器、或实现指令集的组合的处理器。处理设备1002也可以是一个或多个专用处理设备,诸如,专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等等。在一个实施例中,处理设备1002可包括一个或处理核。处理设备1002被配置成执行用于执行本文中所讨论的操作的镜像逻辑的指令1026。在一个实施例中,处理设备1002可以对应于图1A的处理器112。
计算机系统1000可以进一步包括通信地耦合至网络1020的网络接口设备1008。计算机系统1000也可包括视频显示单元1010(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备1012(例如,键盘)、光标控制设备1014(例如,鼠标)、信号生成设备1016(例如,扬声器)或其他外围设备。此外,计算机系统1000可包括图形处理单元1022、视频处理单元1028以及音频处理单元1032。在另一实施例中,计算机系统1000可包括芯片组(未示出),该芯片组是指被设计为与处理设备1002一起协作并控制处理设备1002与外部设备之间的通信的一组集成电路或芯片。例如,芯片组可以是将处理设备1002链接到非常高速度的设备(诸如,主存储器1004和图形控制器)以及将处理设备1002链接到较低速度的外围设备的外围总线(诸如,USB、PCI或ISA总线)的主板上的一组芯片。
数据存储设备1018可包括计算机可读存储介质1024,在其上存储了具体化本文中所描述的功能的方法中的任何一个或多个的指令1026。在由计算机系统1000对指令1026的执行期间,这些指令1026也可完全或至少部分地驻留在主存储器1004之内和/或处理设备1002之内;该主存储器1004和处理设备1002也构成计算机可读存储介质。
计算机可读存储介质1024还可用于存储指令1026,该指令1026利用逻辑和/或软件库,该软件库包含调用上述应用的方法。虽然计算机可读存储介质1024在示例实施例中被示出为单个介质,但术语“计算机可读存储介质”或“计算机可读介质”应当视为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。还应当认为术语“计算机可读存储介质”包括能够存储、编码或携带由机器执行并且使该机器执行当前的多个实施例的方法中的任何一种或多种的一组指令的任何介质。术语“计算机可读存储介质”应当相应地视为包括但不限于固态存储器以及光和磁介质。
在以上描述中,陈述了多个细节。然而,将对受益于本公开的本领域普通技术人员将显而易见的是,可在没有这些具体的细节的情况下实践实施例。在一些实例中,公知的结构和设备以框图形式而非详细示出,以避免模糊描述。
尽管在本文中可能参考特定集成电路(诸如,计算平台或微处理器中的集成电路)描述了实施例,但是其他实施例适用于其他类型的集成电路和逻辑器件。本文中所描述实施例的类似技术和教导可应用于其他类型的电路或半导体器件。例如,所公开的实施例不限于台式计算机系统或超级本TM,并也可用于其他设备,例如手持设备、平板、其他薄笔记本、芯片上系统(SOC)设备以及嵌入式应用。手持式设备的一些示例包括蜂窝电话、网际协议设备、智能电话、数码相机、个人数字助理(PDA)和手持式PC。嵌入式应用通常包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络中枢、广域网(WAN)交换机或可执行以下教导的功能与操作的任何其他系统。
虽然实施例在本文中参照处理器或处理设备来描述,但其他实施例也适用于其他类型的集成电路和逻辑设备。本发明的实施例的类似技术和教导可应用于其他类型的电路或半导体器件,这些其他类型的电路或半导体器件可受益于更高的流水线吞吐量和改善的性能。本发明的实施例的教导适用于执行数据操纵的任何处理器或机器。然而,本发明不限于执行512位、256位、128位、64位、32位和/或16位数据操作的处理器或机器,并且可适用于执行数据操纵或管理的任何处理器和机器。另外,下列描述提供了示例,并且为了进行说明,所附附图示出各种示例。然而,这些示例不应当被理解为是限制性意义的,因为它们仅仅旨在提供本发明的诸个实施例的示例,而并非提供本发明的实施例的所有可能实现的详尽列表。
具体实施方式的一些部分在对计算机存储器内的数据位的操作的算法和符号表示方面来呈现。这些算法描述及表示是数据处理领域的技术人员用于向本领域的其他技术人员最有效地传达其工作实质的手段。算法在此一般被理解为导致所需结果的自洽的操作序列。这些操作需要对物理量进行物理操纵。通常但非必须,这些量采用能被存储、传输、组合、比较、以及以其他方式操纵的电信号或磁信号的形式。主要出于常见用途的考虑,时不时地将这些信号称为位、值、要素、符号、字符、项、数字等已被证明是方便的。本文中描述的块可以是硬件、软件、固件或其组合。
然而,应当记住,所有这些和类似的术语将与适当的物理量关联,并且仅仅是应用于这些量的方便的标记。除非明确指明,否则从上文的讨论中显而易见地看出,可以理解,在全文中,利用诸如“检测”、“启动”、“确定”、“继续”、“停止”、“接收”、“记录”等术语的讨论,指的是计算系统或类似电子计算设备的动作和进程,该计算系统或类似电子计算设备操纵在该计算系统的寄存器和存储器内表示为物理(例如,电子)量的数据并将其转换成在该计算系统存储器或寄存器或其他此类信息存储、传输或显示设备内类似地表示为物理量的其他数据。
在本文中使用的词语“示例”或“示例性”意味着用作示例、实例或说明。在此被描述为“示例”或“示例性”的任何方面或设计并不一定要被解释为相比其他方面或设计更优选或有利。相反,词语“示例”或“示例性”的使用旨在以具体的方式来呈现诸概念。如在该申请中使用的,术语“或”旨在表示包含性的“或”,而不是排它性的“或”。也就是说,除非另有指定或根据上下文显而易见,否则“X包括A或B”旨在表示自然包含性排列中的任一者。也就是说,如果X包括A;X包括B;或X包括A和B两者,则在任何前述的情况下都满足“X包括A或B”。此外,在本申请和所附权利要求中使用的冠词“一”和“一个”一般应当被解释为表示“一个或多个”,除非另有规定或根据上下文明确指示为单数形式。此外,通篇对术语“实施例”或“一个实施例”或“实现方式”或“一种实现方式”的使用不旨在意指同一个实施例或实现方式,除非被描述为如此。此外,如此处所使用的术语“第一”、“第二”、“第三”、“第四”等旨在用作用于在不同元件之间进行区分的标记,并且可以不一定具有根据它们的数字指定的顺序含义。
本文中所描述的多个实施例还可涉及用于执行本文中的操作的装置。此装置可专门构造来用于所需目的,或其可包括通用计算机,该通用计算机由存储在该计算机内的计算机程序有选择地激活或重新配置。这样的计算机程序可以存储在非暂态计算机可读存储介质中,诸如,但不仅限于,任何类型的盘(包括软盘、光盘、CD-ROM以及磁光盘)、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡、闪存、或适于存储电子指令的任何类型的介质。术语“计算机可读存储介质”应当被视为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。术语“计算机可读介质”还应该被视为包括能够存储、编码或携带由机器执行的一组指令并且使机器执行各实施例的方法中的任何一个或多个的任何介质。术语“计算机可读存储介质”相应地应当被视为包括但不限于,固态存储器、光学介质、磁性介质、能够存储由机器执行的一组指令并且使机器执行各实施例的方法中的任何一个或多个的任何介质。
本文呈现的算法及显示并非固有地与任何特定计算机或其他装置相关。可以将各种通用系统与根据本文的教导的程序一起使用,或可以证明构造更专门化的装置来执行操作是方便的。各种这些系统的所需结构将从以下描述中呈现。另外,不参考任何特定编程语言来描述实施例。将会理解,可使用多种编程语言来实现本文描述的实施例的教导。
下列示例涉及进一步的实施例。
示例1是一种处理器,包括:1)核,具有存储器缓冲器,并且该核用于在虚拟机内执行指令,其中该核执行虚拟机监视器(VMM)以管理虚拟机,并且进一步包括:a)处理器跟踪器,包括第一电路,用于捕捉由指令的执行产生的跟踪数据并且将跟踪数据格式化为多个跟踪数据分组;b)基于事件的采样器,包括第二电路,用于响应于作为指令的执行的结果的某个类型的事件的发生而生成用于采样记录的元素的现场数据;其中第一电路进一步用于在接收到来自第二电路的现场数据后进行以下操作:i)将现场数据格式化为对应于元素的一组记录分组;ii)将一组记录分组插入到跟踪数据的多个跟踪数据分组中的一些之间以生成组合分组流;以及iii)使用访客物理地址将组合分组流存储在存储器缓冲器中作为一系列输出页;并且其中VMM用于:当在访客概况分析模式中时,使用多级页表将存储器缓冲器的一系列输出页映射到主存储器的主机物理页。
在示例2中,如示例1的处理器,其中核进一步用于当访问一系列输出页中的输出页的未被映射到主存储器的主机物理地址的访客物理地址时生成页错误,并且VMM进一步用于暂停虚拟机以处置页错误。
在示例3中,如示例1的处理器,其中VMM进一步用于当在系统范围概况分析模式中时将一系列输出页直接寻址为主存储器中的主机物理页,并且存储器缓冲器是物理地址的表(ToPA)或单个范围存储器中的一个。
在示例4中,如示例1的处理器,一组记录分组包括对应于引起了事件的发生的指令的地址的指令指针值,并且核进一步用于执行跟踪解码器以进行以下操作:1)从VMM或虚拟机的操作系统中的一个检取在事件的发生期间在虚拟机上被执行的二进制程序的标识;2)检取来自操作系统的与二进制程序相关的元数据,其中元数据引用在事件的发生时或之前被执行的函数;以及3)根据元数据和指令指针确定被执行的函数的标识;以及4)将被执行的函数的标识与一组记录分组一起发送至性能分析工具。
在示例5中,如示例1的处理器,其中为了将组合分组流存储在存储器缓冲器中作为一系列输出页,第一电路用于:1)在填充第一输出页时,预取第二输出页;2)测试第二输出页是否被映射到主存储器的主机物理页;以及3)响应于检测到第二输出页未被映射到主存储器,触发虚拟机退出以请求VMM将第二输出页映射到主存储器。
在示例6中,如示例1的处理器,其中第二电路进一步用于:在检测到事件后,触发虚拟机的执行的暂停,同时生成用于采样记录的字段的现场数据。
在示例7中,如示例1的处理器,进一步包括第二存储器缓冲器,包括耦合至输出引脚的端口,输出引脚连接到调试器或芯片外分析器中的一个。
在示例8中,如示例1的处理器,进一步包括性能监视中断(PMI)寄存器,用于在检测到一组记录分组后引起核中的中断,以使对虚拟机的控制能转移到检取一组记录分组的调试器工具或分析器。
在示例9中,如示例1的处理器,其中一组记录分组中的每一个包括指示有效负载数据的类型是基于事件的数据的头部。
在示例10中,如示例1的处理器,其中基于事件的采样器进一步用于执行硬件或微代码中的一个以执行将用于采样记录的元素的现场数据按预定顺序传送至处理器跟踪器的一系列信号操作。
各实施例可具有以上所描述的结构特征的不同组合。例如,也可参照本文中描述的方法或过程来实现上文中描述的计算系统的所有任选特征,并且可在一个或多个实施例中的任何地方使用示例中的细节。
示例11是一种系统,包括:1)存储器;以及2)处理器,用于执行和引退虚拟机上的多个指令,处理器可操作地耦合至存储器,其中处理器包括:a)重新加载寄存器,用于存储重新加载值;b)性能监视计数器(PMC)寄存器,耦合至重新加载寄存器;c)基于事件的采样器,可操作地耦合至重新加载寄存器和PMC寄存器,其中基于事件的采样器包括第一电路,用于:i)将重新加载值加载到PMC寄存器中;ii)在检测到作为多个指令的执行的结果的某个类型的事件的每次发生之后递增PMC寄存器;以及iii)在PMC寄存器到达预定的触发值之后在检测到事件的发生时进行以下操作:iv)执行微代码以生成用于采样记录内的元素的现场数据,其中现场数据与执行的当前处理器状态相关;以及v)将来自重新加载寄存器的重新加载值重新加载到PMC寄存器中。
在示例12中,如示例11的系统,其中处理器进一步包括处理器跟踪器,处理器跟踪器包括第二电路,用于捕捉由多个指令的执行产生的跟踪数据并且将跟踪数据格式化为多个跟踪数据分组。
在示例13中,如示例12的系统,其中处理器进一步包括由虚拟机使用的存储器缓冲器,并且第二电路进一步用于:1)将现场数据格式化为对应于元素的一组记录分组;2)使一组记录分组交织在跟踪数据的多个跟踪数据分组中的一些之间,以生成组合分组流;以及3)将组合分组流存储在存储器缓冲器中作为一系列输出页。
在示例14中,如示例13的系统,其中处理器进一步用于执行虚拟机监视器(VMM),并且为了将组合分组流存储在存储器缓冲器中作为一系列输出页,第二电路用于:1)在填充第一输出页时,预取第二输出页;2)测试第二输出页是否被映射到主存储器的主机物理页;以及3)响应于检测到第二输出页未被映射到主存储器,触发虚拟机退出以请求VMM将第二输出页映射到主存储器。
在示例15中,如示例12的系统,其中基于事件的采样器进一步用于执行微代码以执行将用于采样记录的元素的现场数据按预定顺序传送至处理器跟踪器的一系列信号操作。
在示例16中,如示例11的系统,进一步包括虚拟机控制结构(VMCS)寄存器,虚拟机控制结构寄存器当被启用时用于当处理器在用于基于事件的采样的系统范围概况分析模式中时在退出虚拟机后使基于事件的采样器保持被启用。
各实施例可具有以上所描述的结构特征的不同组合。例如,也可参照本文中描述的方法或过程来实现上文中描述的计算系统的所有任选特征,并且可在一个或多个实施例中的任何地方使用示例中的细节。
示例17是一种方法,包括:1)由处理器核执行虚拟机的多个指令;2)使用处理器核的处理器跟踪器来捕捉来自多个指令的执行的跟踪数据;3)使用处理器跟踪器将跟踪数据格式化为多个跟踪数据分组;4)响应于作为多个指令的执行的结果的某个类型的事件的发生,使用处理器核的基于事件的采样器来生成用于采样记录的元素的现场数据;5)使用处理器跟踪器将现场数据格式化为对应于元素的一组记录分组;6)使用处理器跟踪器将一组记录分组插入到跟踪数据的多个跟踪数据分组中的一些之间以生成组合分组流;7)由处理器跟踪器将组合分组流存储在处理器核的存储器缓冲器中作为一系列输出页;以及8)当在访客概况分析模式中时,由处理器核执行虚拟机监视器(VMM)以使用多级页表将存储器缓冲器的一系列输出页映射到主存储器的主机物理页。
在示例18中,如示例17的方法,其中将组合分组流存储在存储器缓冲器中作为一系列输出页包括:1)在填充第一输出页时,预取第二输出页;2)测试第二输出页是否被映射到主存储器的主机物理页;以及3)响应于检测到第二输出页未被映射到主存储器,触发虚拟机退出以请求VMM将第二输出页映射到主存储器。
在示例19中,如示例17的方法,进一步包括在用于某个类型的事件的性能监视计数器(PMC)寄存器的溢出之后检测事件的发生。
在示例20中,如示例17的方法,其中一组记录分组包括对应于引起了事件的发生的指令的地址的指令指针值,其中方法进一步包括:1)从VMM或虚拟机的操作系统中的一个检取在事件的发生期间被执行的二进制程序的标识;2)检取来自操作系统的与二进制程序相关的元数据,其中元数据引用在事件的发生时或之前被执行的函数;3)根据元数据和指令指针确定被执行的函数的标识;以及4)将被执行的函数的标识与一组记录分组一起发送至性能分析工具。
在示例21中,如示例17的方法,进一步包括由基于事件的采样器执行微代码以执行将用于采样记录的元素的现场数据按预定顺序传送至处理器跟踪器的一系列信号操作。
在示例22中,如示例17的方法,进一步包括:1)在虚拟机的重置后将重新加载值加载到性能监视计数器(PMC)寄存器中;2)在检测到作为多个指令的执行的结果的事件的每次发生之后递增PMC寄存器;3)在PMC寄存器到达预定的触发值之后检测事件的发生;以及4)响应于在PMC寄存器到达预定的触发值之后检测到事件的发生而进行以下操作:a)执行微代码以生成用于采样记录内的元素的现场数据;以及b)将来自重新加载寄存器的重新加载值重新加载到PMC寄存器中。
在示例23中,如示例17的方法,进一步包括在一组记录分组被插入到多个跟踪数据分组中的一些之间之前或之后使处理器核生成时间戳计数器作为多个跟踪数据分组中的跟踪数据分组。
在示例24中,如示例17的方法,进一步包括在处理器核将执行从第一虚拟机状态切换到第二虚拟机状态后使处理器核生成分页信息分组作为多个跟踪数据分组中的跟踪数据分组,其中分页信息分组包括第二虚拟机状态的标识。
上面的描述阐述了诸如特定系统、组件、方法等等的示例之类的很多具体细节,以便提供对多个实施例的更全面的理解。然而,对本领域技术人员将显而易见的是,没有这些具体细节也可实施至少某些实施例。在其他情况下,没有详细示出或以简单框图格式来呈现已知的组件或方法,以便避免对各实施例造成不必要的模糊。如此,上文阐述的具体细节只是示例性的。特定实现可能不同于这些示例性细节,而仍在各实施例的范围内。
应当理解,以上描述旨在是说明性的而非限制性的。在阅读并理解以上描述之后,许多其他实施例对本领域内技术人员而言将是显而易见的。因此,实施例的范围应参考所附权利要求书以及使这些权利要求享有权利的等效方案的完全范围来确定。

Claims (24)

1.一种处理器,包括:
核,具有存储器缓冲器,并且所述核用于在虚拟机内执行指令,其中所述核执行虚拟机监视器VMM以管理所述虚拟机,并且进一步包括:
处理器跟踪器,包括第一电路,用于捕捉由所述指令的执行产生的跟踪数据并且将所述跟踪数据格式化为多个跟踪数据分组;
基于事件的采样器,包括第二电路,用于响应于作为所述指令的执行的结果的某个类型的事件的发生而生成用于采样记录的元素的现场数据;
其中所述第一电路进一步用于在接收到来自所述第二电路的所述现场数据后进行以下操作:
将所述现场数据格式化为对应于所述元素的一组记录分组;
将所述一组记录分组插入到所述跟踪数据的所述多个跟踪数据分组中的一些之间以生成组合分组流;以及
使用访客物理地址将所述组合分组流存储在所述存储器缓冲器中作为一系列输出页;以及
其中所述VMM用于:当在访客概况分析模式中时,使用多级页表将所述存储器缓冲器的所述一系列输出页映射到主存储器的主机物理页。
2.如权利要求1所述的处理器,其特征在于,所述核进一步用于当访问所述一系列输出页中的输出页的未被映射到所述主存储器的主机物理地址的访客物理地址时生成页错误,并且所述VMM用于暂停所述虚拟机以处置所述页错误。
3.如权利要求1所述的处理器,其特征在于,所述VMM进一步用于当在系统范围概况分析模式中时将所述一系列输出页直接寻址为所述主存储器中的主机物理页,并且所述存储器缓冲器是物理地址的表ToPA或单个范围存储器中的一个。
4.如权利要求1所述的处理器,其特征在于,所述一组记录分组包括对应于引起了事件的发生的所述指令的地址的指令指针值,并且所述核进一步用于执行跟踪解码器以进行以下操作:
从所述VMM或所述虚拟机的操作系统中的一个检取在事件的发生期间在所述虚拟机上被执行的二进制程序的标识;
检取来自所述操作系统的与所述二进制程序相关的元数据,其中所述元数据引用在事件的发生时或之前被执行的函数;以及
根据所述元数据和所述指令指针确定被执行的所述函数的标识;以及
将被执行的所述函数的标识与所述一组记录分组一起发送至性能分析工具。
5.如权利要求1所述的处理器,其特征在于,为了将所述组合分组流存储在所述存储器缓冲器中作为所述一系列输出页,所述第一电路用于:
在填充第一输出页时,预取第二输出页;
测试所述第二输出页是否被映射到所述主存储器的主机物理页;以及
响应于检测到所述第二输出页未被映射到所述主存储器,触发虚拟机退出以请求所述VMM将所述第二输出页映射到所述主存储器。
6.如权利要求1所述的处理器,其特征在于,所述第二电路进一步用于:在检测到事件后,触发所述虚拟机的执行的暂停,同时生成用于所述采样记录的字段的所述现场数据。
7.如权利要求1所述的处理器,其特征在于,进一步包括第二存储器缓冲器,包括耦合至输出引脚的端口,所述输出引脚连接到调试器或芯片外分析器中的一个。
8.如权利要求1所述的处理器,其特征在于,所述处理器进一步包括性能监视中断PMI寄存器,用于在检测到所述一组记录分组后引起所述核中的中断,以使对所述虚拟机的控制能转移到检取所述一组记录分组的调试器工具或分析器。
9.如权利要求1所述的处理器,其特征在于,所述一组记录分组中的每一个包括指示有效负载数据的类型是基于事件的数据的头部。
10.如权利要求1所述的处理器,其特征在于,所述基于事件的采样器进一步用于执行硬件或微代码中的一个以执行将用于所述采样记录的所述元素的所述现场数据按预定顺序传送至所述处理器跟踪器的一系列信号操作。
11.一种用于处理设备的系统,包括:
主存储器;
处理器,用于执行和引退虚拟机上的多个指令,所述处理器可操作地耦合至所述主存储器,其中所述处理器包括:
重新加载寄存器,用于存储重新加载值;
性能监视计数器PMC寄存器,耦合至所述重新加载寄存器;
基于事件的采样器,可操作地耦合至所述重新加载寄存器和所述PMC寄存器,其中所述基于事件的采样器包括第一电路,用于:
将所述重新加载值加载到所述PMC寄存器中;
在检测到作为所述多个指令的执行的结果的某个类型的事件的每次发生之后递增所述PMC寄存器;以及
在所述PMC寄存器到达预定的触发值之后在检测到事件的发生时进行以下操作:
执行微代码以生成用于采样记录内的元素的现场数据,
其中所述现场数据与执行的当前处理器状态相关;以及
将来自所述重新加载寄存器的所述重新加载值重新加载到所述PMC寄存器中。
12.如权利要求11所述的系统,其特征在于,所述处理器进一步包括处理器跟踪器,所述处理器跟踪器包括第二电路,用于捕捉由所述多个指令的执行产生的跟踪数据并且将所述跟踪数据格式化为多个跟踪数据分组。
13.如权利要求12所述的系统,其特征在于,所述处理器进一步包括由所述虚拟机使用的存储器缓冲器,并且所述第二电路进一步用于:
将所述现场数据格式化为对应于所述元素的一组记录分组;
使所述一组记录分组交织在所述跟踪数据的所述多个跟踪数据分组中的一些之间,以生成组合分组流;以及
将所述组合分组流存储在所述存储器缓冲器中作为一系列输出页。
14.如权利要求13所述的系统,其特征在于,所述处理器进一步用于执行虚拟机监视器VMM,并且为了将所述组合分组流存储在所述存储器缓冲器中作为所述一系列输出页,所述第二电路用于:
在填充第一输出页时,预取第二输出页;
测试所述第二输出页是否被映射到所述主存储器的主机物理页;以及
响应于检测到所述第二输出页未被映射到所述主存储器,触发虚拟机退出以请求所述VMM将所述第二输出页映射到所述主存储器。
15.如权利要求12所述的系统,其特征在于,所述基于事件的采样器进一步用于执行所述微代码以执行将用于所述采样记录的所述元素的所述现场数据按预定顺序传送至所述处理器跟踪器的一系列信号操作。
16.如权利要求11所述的系统,其特征在于,进一步包括虚拟机控制结构VMCS寄存器,所述虚拟机控制结构寄存器当被启用时用于:当所述处理器在用于基于事件的采样的系统范围概况分析模式中时,在退出所述虚拟机后使所述基于事件的采样器保持被启用。
17.一种用于处理设备的方法,包括:
由处理器核执行虚拟机的多个指令;
使用所述处理器核的处理器跟踪器来捕捉来自所述多个指令的执行的跟踪数据;
使用所述处理器跟踪器将所述跟踪数据格式化为多个跟踪数据分组;
响应于作为所述多个指令的执行的结果的某个类型的事件的发生,使用所述处理器核的基于事件的采样器来生成用于采样记录的元素的现场数据;
使用所述处理器跟踪器将所述现场数据格式化为对应于所述元素的一组记录分组;
使用所述处理器跟踪器将所述一组记录分组插入到所述跟踪数据的所述多个跟踪数据分组中的一些之间以生成组合分组流;
由所述处理器跟踪器将所述组合分组流存储在所述处理器核的存储器缓冲器中作为一系列输出页;以及
当在访客概况分析模式中时,由所述处理器核执行虚拟机监视器VMM以使用多级页表将所述存储器缓冲器的所述一系列输出页映射到主存储器的主机物理页。
18.如权利要求17所述的方法,其特征在于,将所述组合分组流存储在所述存储器缓冲器中作为所述一系列输出页包括:
在填充第一输出页时,预取第二输出页;
测试所述第二输出页是否被映射到所述主存储器的主机物理页;以及
响应于检测到所述第二输出页未被映射到所述主存储器,触发虚拟机退出以请求所述VMM将所述第二输出页映射到所述主存储器。
19.如权利要求17所述的方法,其特征在于,所述一组记录分组包括对应于引起了事件的发生的所述指令的地址的指令指针值,其中所述方法进一步包括:
从所述VMM或所述虚拟机的操作系统中的一个检取在事件的发生期间被执行的二进制程序的标识;
检取来自所述操作系统的与所述二进制程序相关的元数据,其中所述元数据引用在事件的发生时或之前被执行的函数;
根据所述元数据和所述指令指针确定被执行的所述函数的标识;以及
将被执行的所述函数的标识与所述一组记录分组一起发送至性能分析工具。
20.如权利要求17所述的方法,其特征在于,进一步包括由所述基于事件的采样器执行微代码以执行将用于所述采样记录的所述元素的所述现场数据按预定顺序传送至所述处理器跟踪器的一系列信号操作。
21.如权利要求17所述的方法,其特征在于,进一步包括:
在所述虚拟机的重置后将重新加载值加载到性能监视计数器PMC寄存器中;
在检测到作为所述多个指令的执行的结果的事件的每次发生之后递增所述PMC寄存器;
在所述PMC寄存器到达预定的触发值之后检测事件的发生;以及
响应于在所述PMC寄存器到达所述预定的触发值之后检测到事件的发生而进行以下操作:
执行微代码以生成用于所述采样记录内的所述元素的所述现场数据;以及
将来自重新加载寄存器的所述重新加载值重新加载到所述PMC寄存器中。
22.如权利要求17所述的方法,其特征在于,进一步包括:在所述一组记录分组被插入在所述多个跟踪数据分组中的一些跟踪数据分组之间之前,或者在所述一组记录分组被插入在所述多个跟踪数据分组中的一些跟踪数据分组之间之后,使所述处理器核生成时间戳计数器作为所述多个跟踪数据分组中的跟踪数据分组。
23.如权利要求17所述的方法,其特征在于,进一步包括:在所述处理器核将执行从第一虚拟机状态切换到第二虚拟机状态后,使所述处理器核生成分页信息分组作为所述多个跟踪数据分组中的跟踪数据分组,其中所述分页信息分组包括所述第二虚拟机状态的标识。
24.一种处理设备,包括用于执行如权利要求17-23中的任一项所述的方法的装置。
CN201780033170.1A 2016-06-28 2017-05-24 虚拟化精确的基于事件的采样的设备和方法 Active CN109313567B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/194,881 2016-06-28
US15/194,881 US9965375B2 (en) 2016-06-28 2016-06-28 Virtualizing precise event based sampling
PCT/US2017/034331 WO2018004894A1 (en) 2016-06-28 2017-05-24 Virtualizing precise event based sampling

Publications (2)

Publication Number Publication Date
CN109313567A CN109313567A (zh) 2019-02-05
CN109313567B true CN109313567B (zh) 2023-05-23

Family

ID=60677320

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780033170.1A Active CN109313567B (zh) 2016-06-28 2017-05-24 虚拟化精确的基于事件的采样的设备和方法

Country Status (3)

Country Link
US (3) US9965375B2 (zh)
CN (1) CN109313567B (zh)
WO (1) WO2018004894A1 (zh)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10042737B2 (en) 2016-08-31 2018-08-07 Microsoft Technology Licensing, Llc Program tracing for time travel debugging and analysis
US10031834B2 (en) * 2016-08-31 2018-07-24 Microsoft Technology Licensing, Llc Cache-based tracing for time travel debugging and analysis
US10310963B2 (en) 2016-10-20 2019-06-04 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using index bits in a processor cache
US10489273B2 (en) 2016-10-20 2019-11-26 Microsoft Technology Licensing, Llc Reuse of a related thread's cache while recording a trace file of code execution
US10310977B2 (en) 2016-10-20 2019-06-04 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using a processor cache
US10635479B2 (en) * 2016-12-19 2020-04-28 Bitdefender IPR Management Ltd. Event filtering for virtual machine security applications
US9875167B1 (en) * 2017-03-29 2018-01-23 Google Inc. Distributed hardware tracing
US10365987B2 (en) 2017-03-29 2019-07-30 Google Llc Synchronous hardware event collection
US10318332B2 (en) 2017-04-01 2019-06-11 Microsoft Technology Licensing, Llc Virtual machine execution tracing
US10169198B2 (en) * 2017-04-24 2019-01-01 International Business Machines Corporation Aggregating data for debugging software
US10445247B2 (en) * 2017-06-20 2019-10-15 Red Hat, Inc. Switching between single-level and two-level page table translations
US11907091B2 (en) 2018-02-16 2024-02-20 Microsoft Technology Licensing, Llc Trace recording by logging influxes to an upper-layer shared cache, plus cache coherence protocol transitions among lower-layer caches
EP3804396A4 (en) * 2018-06-01 2022-03-02 Telefonaktiebolaget LM Ericsson (publ) METHOD FOR GATHERING SAMPLING DATA FOR WIRELESS TRANSMISSION
US11256644B2 (en) * 2018-09-05 2022-02-22 Fungible, Inc. Dynamically changing configuration of data processing unit when connected to storage device or computing device
CN109376078B (zh) * 2018-09-25 2023-08-25 北京新时科技发展有限公司 移动应用的测试方法、终端设备及介质
US10866917B2 (en) * 2018-12-03 2020-12-15 Ati Technologies Ulc Inter device data exchange via external bus by utilizing communication port
US11392380B2 (en) 2019-12-28 2022-07-19 Intel Corporation Apparatuses, methods, and systems to precisely monitor memory store accesses
GB2595303B (en) * 2020-05-22 2024-04-17 Advanced Risc Mach Ltd Profiling of sampled operations processed by processing circuitry
US20220100626A1 (en) * 2020-09-26 2022-03-31 Intel Corporation Monitoring performance cost of events
CA3136322A1 (en) * 2020-12-02 2022-06-02 The Boeing Company Debug trace streams for core synchronization
US11681786B2 (en) * 2020-12-07 2023-06-20 Arm Limited System, devices and/or processes for secure computation
US11669263B1 (en) 2021-03-24 2023-06-06 Meta Platforms, Inc. Systems and methods for low-overhead and flexible trace capture triggered on-demand by hardware events under production load
US20230315453A1 (en) * 2022-04-01 2023-10-05 Intel Corporation Forward conditional branch event for profile-guided-optimization (pgo)
CN114721722B (zh) * 2022-06-06 2022-09-02 深流微智能科技(深圳)有限公司 多级高速缓存系统及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102341790A (zh) * 2009-06-30 2012-02-01 国际商业机器公司 支持多个虚拟机的追踪数据的基于时间的上下文采样
CN102395949A (zh) * 2009-05-05 2012-03-28 飞思卡尔半导体公司 用于调试的地址转换跟踪消息生成
CN105184113A (zh) * 2014-03-27 2015-12-23 英特尔公司 用于实现安全视频输出路径的硬件辅助虚拟化

Family Cites Families (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4020471A (en) 1975-06-30 1977-04-26 Honeywell Information Systems, Inc. Interrupt scan and processing system for a data processing system
US4787031A (en) 1985-01-04 1988-11-22 Digital Equipment Corporation Computer with virtual machine mode and multiple protection rings
CA2095311A1 (en) 1993-04-30 1994-10-31 Richard E. Swagerman Conversation management routine for co-operative processing applications
US6266789B1 (en) 1997-11-17 2001-07-24 I-Tech Corporation Deep trace memory system for a protocol analyzer
US6092180A (en) 1997-11-26 2000-07-18 Digital Equipment Corporation Method for measuring latencies by randomly selected sampling of the instructions while the instruction are executed
US6513155B1 (en) * 1997-12-12 2003-01-28 International Business Machines Corporation Method and system for merging event-based data and sampled data into postprocessed trace output
GB2365553B (en) 2000-05-13 2004-07-14 Ibm Trace information in a virtual machine
US6961806B1 (en) 2001-12-10 2005-11-01 Vmware, Inc. System and method for detecting access to shared structures and for maintaining coherence of derived structures in virtualized multiprocessor systems
US7117396B2 (en) 2001-12-28 2006-10-03 Intel Corporation Scalable CPU error recorder
US6910160B2 (en) 2002-01-10 2005-06-21 International Business Machines Corporation System, method, and computer program product for preserving trace data after partition crash in logically partitioned systems
US7747989B1 (en) 2002-08-12 2010-06-29 Mips Technologies, Inc. Virtual machine coprocessor facilitating dynamic compilation
US7496729B2 (en) 2004-05-13 2009-02-24 International Business Machines Corporation Method and apparatus to eliminate interpartition covert storage channel and partition analysis
US7343521B2 (en) 2004-05-28 2008-03-11 International Business Machines Corporation Method and apparatus to preserve trace data
US7590830B2 (en) 2004-05-28 2009-09-15 Sun Microsystems, Inc. Method and structure for concurrent branch prediction in a processor
GB0412104D0 (en) 2004-05-29 2004-06-30 Ibm Apparatus method and program for recording diagnostic trace information
US20050273310A1 (en) 2004-06-03 2005-12-08 Newburn Chris J Enhancements to performance monitoring architecture for critical path-based analysis
US8136096B1 (en) 2004-07-23 2012-03-13 Green Hills Software, Inc. Backward post-execution software debugger
US7200522B2 (en) 2005-01-27 2007-04-03 International Business Machines Corporation Method, apparatus, and computer program product in a performance monitor for sampling all performance events generated by a processor
US7363463B2 (en) * 2005-05-13 2008-04-22 Microsoft Corporation Method and system for caching address translations from multiple address spaces in virtual machines
US20060277435A1 (en) 2005-06-07 2006-12-07 Pedersen Frode M Mechanism for storing and extracting trace information using internal memory in microcontrollers
US8782629B2 (en) 2005-06-29 2014-07-15 Intel Corporation Associating program execution sequences with performance counter events
US7818721B2 (en) 2006-02-01 2010-10-19 Oracle America, Inc. Dynamic application tracing in virtual machine environments
US7493526B2 (en) 2006-06-13 2009-02-17 International Business Machines Corporation System and method for supporting debugging of host channel adapters in a logical partitioning
US8336033B2 (en) 2007-03-30 2012-12-18 Sap Ag Method and system for generating a hierarchical tree representing stack traces
US20080243970A1 (en) 2007-03-30 2008-10-02 Sap Ag Method and system for providing loitering trace in virtual machines
US7853928B2 (en) 2007-04-19 2010-12-14 International Business Machines Corporation Creating a physical trace from a virtual trace
JP4468426B2 (ja) 2007-09-26 2010-05-26 株式会社東芝 高可用システム及び実行状態制御方法
US9459984B2 (en) 2007-10-29 2016-10-04 Intel Corporation Method and systems for external performance monitoring for virtualized environments
US7962314B2 (en) 2007-12-18 2011-06-14 Global Foundries Inc. Mechanism for profiling program software running on a processor
US8832682B2 (en) 2008-03-28 2014-09-09 Vmware, Inc. Trace collection for a virtual machine
CN101751345B (zh) 2008-12-10 2012-04-11 国际商业机器公司 在主机中运行客户机的程序的模拟器和模拟方法
US8826270B1 (en) * 2010-03-16 2014-09-02 Amazon Technologies, Inc. Regulating memory bandwidth via CPU scheduling
US9032398B2 (en) 2010-07-12 2015-05-12 Vmware, Inc. Online classification of memory pages based on activity level represented by one or more bits
US10169187B2 (en) 2010-08-18 2019-01-01 International Business Machines Corporation Processor core having a saturating event counter for making performance measurements
US8615742B2 (en) 2010-11-16 2013-12-24 International Business Machines Corporation Autonomic hotspot profiling using paired performance sampling
US20120226477A1 (en) 2011-03-04 2012-09-06 International Business Machines Corporation Reducing Overhead and Increasing Precision with Code Instrumentation
US8887168B2 (en) 2011-07-14 2014-11-11 Advanced Micro Devices, Inc. Method and apparatus for monitoring and sharing performance resources of a processor
US9063762B2 (en) * 2011-08-26 2015-06-23 Vmware, Inc. Methods, apparatus, and articles of manufacture to virtualize performance counters
WO2013101100A1 (en) 2011-12-29 2013-07-04 Intel Corporation Causing an interrupt based on event count
US9003375B2 (en) 2011-12-30 2015-04-07 Intel Corporation Optional logging of debug activities in a real time instruction tracing log
US9021172B2 (en) 2012-07-06 2015-04-28 Arm Limited Data processing apparatus and method and method for generating performance monitoring interrupt signal based on first event counter and second event counter
US8949531B2 (en) 2012-12-04 2015-02-03 Vmware, Inc. Automated space management for server flash cache
US9053065B2 (en) 2012-12-10 2015-06-09 Vmware, Inc. Method for restoring virtual machine state from a checkpoint file
US9053064B2 (en) 2012-12-10 2015-06-09 Vmware, Inc. Method for saving virtual machine state to a checkpoint file
JP6079317B2 (ja) * 2013-03-05 2017-02-15 富士通株式会社 仮想計算機システム及びその管理方法並びに仮想計算機システムの管理プログラム
US9369368B2 (en) 2013-04-06 2016-06-14 Citrix Systems, Inc. Systems and methods for capturing and consolidating packet tracing in a cluster system
US9081629B2 (en) 2013-05-19 2015-07-14 Frank Eliot Levine Excluding counts on software threads in a state
US9639447B2 (en) 2013-11-05 2017-05-02 Texas Instruments Incorporated Trace data export to remote memory using remotely generated reads
US9262274B2 (en) 2013-12-24 2016-02-16 International Business Machines Corporation Persistent data across reboots
US9766999B2 (en) 2014-05-30 2017-09-19 Intel Corporation Monitoring performance of a processing device to manage non-precise events
US9329884B2 (en) 2014-07-11 2016-05-03 Intel Corporation Managing generated trace data for a virtual machine
US20160019062A1 (en) 2014-07-16 2016-01-21 Ahmad Yasin Instruction and logic for adaptive event-based sampling
US9652237B2 (en) 2014-12-23 2017-05-16 Intel Corporation Stateless capture of data linear addresses during precise event based sampling
US9588870B2 (en) * 2015-04-06 2017-03-07 Microsoft Technology Licensing, Llc Time travel debugging for browser components
US9465680B1 (en) 2015-05-26 2016-10-11 Intel Corporation Method and apparatus for processor performance monitoring
US10235290B2 (en) * 2015-06-26 2019-03-19 Advanced Micro Devices, Inc. Hot page selection in multi-level memory hierarchies
US10055334B2 (en) * 2015-06-30 2018-08-21 International Business Machines Corporation Debugging through causality and temporal patterning in an event processing system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102395949A (zh) * 2009-05-05 2012-03-28 飞思卡尔半导体公司 用于调试的地址转换跟踪消息生成
CN102341790A (zh) * 2009-06-30 2012-02-01 国际商业机器公司 支持多个虚拟机的追踪数据的基于时间的上下文采样
CN105184113A (zh) * 2014-03-27 2015-12-23 英特尔公司 用于实现安全视频输出路径的硬件辅助虚拟化

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"Flubber: Two-level disk scheduling in virtualized environment";Hai Jin等;《Future Generation Computer Systems》;20131031;第29卷(第8期);第2222-2238页 *
"基于ARM Cortex-M3内核微控制器的智能库容检测系统";张根宝等;《化工自动化及仪表》;20080831;第35卷(第4期);第72-74页 *

Also Published As

Publication number Publication date
US11055203B2 (en) 2021-07-06
US9965375B2 (en) 2018-05-08
US10496522B2 (en) 2019-12-03
US20170371769A1 (en) 2017-12-28
CN109313567A (zh) 2019-02-05
US20200242003A1 (en) 2020-07-30
US20180253370A1 (en) 2018-09-06
WO2018004894A1 (en) 2018-01-04

Similar Documents

Publication Publication Date Title
CN109313567B (zh) 虚拟化精确的基于事件的采样的设备和方法
US10346280B2 (en) Monitoring performance of a processor using reloadable performance counters
US9690640B2 (en) Recovery from multiple data errors
US9442824B2 (en) Transformation of a program-event-recording event into a run-time instrumentation event
US9329884B2 (en) Managing generated trace data for a virtual machine
US20170286111A1 (en) Instruction, Circuits, and Logic for Data Capture for Software Monitoring and Debugging
KR102132805B1 (ko) 커널 모듈을 위한 멀티코어 메모리 데이터 레코더
US9690588B2 (en) Elapsed cycle timer in last branch records
US9465680B1 (en) Method and apparatus for processor performance monitoring
US9870301B2 (en) High-speed debug port using standard platform connectivity
RU2635044C2 (ru) Режим слежения в устройстве обработки в системах трассировки команд
US10365988B2 (en) Monitoring performance of a processing device to manage non-precise events
US10445204B2 (en) Instruction and logic for interrupt and exception handling
WO2018004974A1 (en) Processors, methods, and systems to identify stores that cause remote transactional execution aborts
US20230305742A1 (en) Precise longitudinal monitoring of memory operations
US20150180703A1 (en) Mechanism to monitor quality of service
EP2810169B1 (en) Run-time-instrumentation controls emit instruction

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant