CN109690497B - 用于通过输入参数来区分函数性能的系统和方法 - Google Patents

用于通过输入参数来区分函数性能的系统和方法 Download PDF

Info

Publication number
CN109690497B
CN109690497B CN201780055415.0A CN201780055415A CN109690497B CN 109690497 B CN109690497 B CN 109690497B CN 201780055415 A CN201780055415 A CN 201780055415A CN 109690497 B CN109690497 B CN 109690497B
Authority
CN
China
Prior art keywords
pebs
processor
record
npebs
memory
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
CN201780055415.0A
Other languages
English (en)
Other versions
CN109690497A (zh
Inventor
A·亚辛
S·布拉塔诺夫
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 CN109690497A publication Critical patent/CN109690497A/zh
Application granted granted Critical
Publication of CN109690497B publication Critical patent/CN109690497B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • 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/3452Performance evaluation by statistical analysis
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

公开了用于监视处理器性能的系统和方法。所描述的实施例涉及根据输入参数来区分函数性能。在一个实施例中,一种方法包括:将处理器中所包含的计数器配置成用于对该处理器中的事件的发生进行计数,并且用于在对发生的计数达到所指定的值时溢出;将基于精确事件的采样(PEBS)处理机电路配置成用于在至少一个溢出之后生成PEBS记录并将该PEBS记录存储到PEBS存储器缓冲器中,该PEBS记录包含在至少一个溢出之后从栈读取的至少一个栈条目;使PEBS处理机电路能够在至少一个溢出之后生成并存储PEBS记录;在至少一个溢出之后生成PEBS记录并将该PEBS记录存储到PEBS存储器缓冲器中;以及将该PEBS存储器缓冲器的内容存储到存储器中的PEBS跟踪文件。

Description

用于通过输入参数来区分函数性能的系统和方法
技术领域
本文中所描述的实施例总体上涉及监视计算机处理器的性能。具体而言,所描述的实施例总体上涉及用于通过输入参数来区分函数性能的系统和方法。
背景技术
处理器的性能监视可以被用来表征、调试、以及调谐软件和程序代码。逐函数自变量地分解性能特性可有助于针对同一函数的不同调用选择正确的优化策略。同一函数的性能可能取决于其输入参数,并且对于不同的函数自变量值能以不同方式优化该函数。
基于不同的自变量值来监视执行函数时的处理器性能可有助于优化函数在处理器中的执行。例如,存储器复制操作重度依赖于输入/输出数组的长度,并且不同的长度要求不同的优化方式:较短的操作要求使用通用寄存器,而较长的操作利用SSE/AVX寄存器来更好地运行。
附图说明
通过阅读以下说明书和所附权利要求并通过参考附图,本文中所公开的实施例的各种优点对于本领域技术人员将变得显而易见,其中:
图1是图示出根据一个实施例的处理器的框图;
图2图示出用于生成PEBS记录并将该PEBS记录存储在存储器缓冲器中并且用于将该存储器缓冲器存储到PEBS跟踪文件的过程的实施例;
图3图示出将PEBS处理机(handler)电路编程为用于监视处理器性能并生成将要被存储在PEBS存储器缓冲器中并随后被存储在PEBS跟踪文件中的PEBS记录的过程的实施例;
图4图示出对PEBS跟踪文件进行后处理以逐函数调用地分解性能数据的实施例;
图5是根据一个实施例的寄存器架构的框图;
图6是根据实施例的寄存器栈;
图7图示出PEBS数据记录配置管理器的实施例;
图8图示出根据一个实施例的用于在固定功能计数器上启用基于事件的采样的不同的寄存器;
图9图示出根据一个实施例的用于在固定功能计数器上启用基于事件的采样的不同的寄存器;
图10图示出根据一个实施例的对数据存储缓冲器管理区域的更新;
图11A-图11B图示出由本发明的实施例实现的对性能监视的改进;
图12是根据本公开的实施例的示例性计算机系统的框图,该计算机系统被形成为具有包括用于执行指令的执行单元的处理器;
图13是根据本发明的实施例的第一更具体的示例性系统的框图;
图14是根据本发明的实施例的第一更具体的示例性系统的框图;
图15是根据本发明的实施例的第二更具体的示例性系统的框图;
图16是根据本发明的实施例的SoC的框图;
图17是根据本发明的实施例的具有多于一个的核、集成存储器控制器、以及集成图形的处理器的框图;以及
图18是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
在下列描述中,阐述了众多具体细节。然而,应当理解,可在没有这些具体细节的情况下实施本公开的实施例。在其他实例中,未详细示出公知的电路、结构和技术以避免使对本描述的理解模糊。
说明书中对“一个实施例”、“实施例”、“示例实施例”等的引用指示所描述的实施例可包括特定特征、结构或特性,但是,每一个实施例不一定都包括该特定特征、结构或特性。此外,此类短语不一定是指同一个实施例。此外,当结合实施例描述特定的特征、结构或特性时,认为结合无论是否被明确描述的其他实施例而影响此类特征、结构或特性是在本领域技术人员的知识范围之内的。
对执行以不同的自变量值和类型来调用的函数时的处理器性能进行监视有助于基于这些不同的自变量值和类型来优化函数在处理器中的执行。例如,存储器复制操作重度依赖于输入/输出数组的长度,并且不同的长度要求不同的优化方式:较短的操作要求使用通用寄存器,而较长的操作利用SSE/AVX寄存器来更好地运行。
另一示例涉及工程师和科学家在高功率粒子加速器上的需求:他们对粒子碰撞数据应用相同的物理建模函数,但可以输入处理不同的优化以处理具有不同轨迹的不同粒子。理解不同轨迹的性能影响引起对用于不同类型的输入的函数进行优化。
对自变量的基于仪表的跟踪不如本文中所公开的实施例实用,因为仪表化代码可能运行数周或数月,并且性能信息可能失真。
扩展传统的基于采样的统计学分析方法也是高成本的,并且还在中断被掩蔽(内核模式驱动器)时无法工作。
本文中所公开的实施例实现了以低开销方式基于函数自变量来跟踪函数性能的HW(硬件)辅助的方法,该方法允许根据函数的输入参数在同一函数的性能变化之间进行区分。一些实施例描述了检取足够的信息从而为所采样的函数调用重构自变量,并且根据其实际参数将性能特性与所采样的函数相关联。一些实施例允许对引退的函数调用的精确采样。一些实施例描述了将基于精确事件的采样(PEBS)扩展为具有在架构元数据、寄存器状态和其他上下文信息旁边存储栈存储器内容的能力。对所存储的栈存储器内容进行后处理,以分解用于每个函数调用的自变量。
基于精确事件的采样和基于非精确事件的采样(PEBS和NPEBS)
在处理器的一些实施例中采用的性能监视能力在两组事件计数器上建立:固定功能计数器和通用计数器。当前定义并实现了三个固定功能计数器以对以下各项进行计数:(1)引退的指令、(2)参考时钟、以及(3)核时钟。结合对本公开的实施例的描述来描述与基于精确事件的采样(PEBS)和基于非精确事件的采样(NPEBS)相关联的各种概念。
如本文中所使用,精确事件是链接至指令跟踪中的特定指令或微操作并且在该指令或微操作引退时发生的性能事件。此类精确事件可包括但不限于引退的指令、引退的分支指令、高速缓存引用或高速缓存未命中,此处仅是列举数例。在另一方面,非精确事件是不链接至指令跟踪中的特定指令或微操作或者即使在该指令或微操作不引退时也可以推测性地发生的性能事件。作为示例,非精确事件可包括但不限于参考时钟节拍、核时钟节拍、中断被掩蔽时的周期,此处仅是列举数例。
在一些实施例中,对处理设备的性能进行监视,以管理精确和非精确事件。在一些实施例中,处理设备利用该处理设备上的机制来跟踪精确和非精确事件,并以非入侵性方式来存储与这些事件有关的架构元数据,而无需性能监视中断(PMI)的干预。
处理设备的操作可包括监视系统的性能的多个事件的发生。事件包括处理器中的任何操作、发生或动作。在一个实施例中,事件是对处理设备中的给定指令和数据流的响应。事件可与架构元数据相关联,该架构元数据包括处理设备的状态信息,该处理设备的状态信息包括但不限于指令指针、时间戳计数器、以及寄存器状态。
在一些实施例中,性能计数器被配置成用于对一种或多种类型的事件进行计数。当计数器正在递增或递减,软件以所选择的时间间隔来读取该计数器,以确定在时间间隔之间已经被计数的事件的数量。计数器能以多种方式来实现。在一个实施例中,计数器从正起始值开始递减,当计数达到零时溢出。在另一实施例中,计数器开始于零值,并且递增发生计数,直到其在所指定的值溢出。在又一实施例中,计数器开始于负值,并且递增直到其在达到零时溢出。性能计数器可在计数器溢出时生成性能记录或性能监视中断(PMI)。为了触发溢出,计数器可被预设为可在特定数量的事件已经被计数之后使得该计数器溢出的模数值,这生成PMI或性能记录,诸如,如本文中以下详细描述的基于精确事件的采样(PEBS)记录。
跟踪精确事件
存在用于监视和管理各种事件的若干类型的机制。一种类型是PEBS机制,该PEBS机制起作用以监视和管理精确事件。精确事件是链接至指令跟踪中的特定指令或微操作并且在该指令或微操作引退时发生的性能事件。此类精确事件可包括但不限于引退的指令、引退的分支指令、高速缓存引用或高速缓存未命中,此处仅是列举数例。PEBS机制可包括若干组件,诸如,事件选择(ES)控制、性能计数器、PEBS启用启用电路以及PEBS处理机电路。ES可被编程为具有事件标识符,这使得与ES控制对应的性能计数器开始跟踪与事件标识符对应的所编程的事件(例如,对该事件的发生进行计数)。
本公开的实施例还包括处理设备的PEBS启用电路,该PEBS启用电路控制何时生成PEBS记录。当该PEBS启用电路被激活时,PEBS记录在与PEBS启用电路对应的性能计数器溢出时被存储在PEBS处理机电路的存储器中。在一个实施例中,用户激活或设置PEBS启用电路。PEBS记录包括性能计数器溢出时的系统状态的架构元数据。此类架构元数据可包括但不限于指令指针(IP)、时间戳计数器(TSC)以及寄存器状态。在一些实施例中,PEBS记录还包括由栈指针标识的至少一个栈条目。在一些实施例中,PEBS记录包括来自栈的顶部的X个双字。由此,PEBS记录不仅允许对精确事件在指令跟踪中的位置进行精确概况分析,而且提供用于在软件优化、硬件优化、性能调谐等之中使用的附加信息。
跟踪非精确事件
本公开的实施例进一步利用PEBS机制来跟踪和管理处理设备的非精确事件。非精确事件是不链接至指令跟踪中的特定指令或微操作或者即使在该指令或微操作不引退时也可以推测性地发生的性能事件。作为示例,非精确事件可包括但不限于参考时钟节拍、核时钟节拍、中断被掩蔽时的周期,等等。
一些实施例引入处理设备的基于非精确事件的采样(NPEBS)处理机电路,该处理设备允许NPEBS处理机电路生成用于所编程的非精确事件的NPEBS记录,并将用于非精确事件的该NPEBS记录存储在PEBS处理机电路的PEBS存储器缓冲器中。
在一些实施例中,NPEBS记录共享与PEBS记录相同的格式。在其他实施例中,NPEBS记录以与PEBS记录不同的方式被格式化。
PEBS处理机电路和NPEBS处理机电路可共享某个电路。NPEBS处理机电路可使用PEBS处理机电路的资源,仅在名称上区别于PEBS处理机电路。在一个示例中,当ES控制被编程有非精确事件标识符时,与该ES控制和PEBS启用电路相关联的性能计数器跟踪所编程的非精确事件。在一个实施例中,NPEBS处理机电路耦合至PEBS启用电路,该PEBS启用电路耦合至性能计数器,以使得PEBS启用电路在性能计数器溢出时使得NPEBS处理机电路生成用于非精确事件的NPEBS记录。相应地,与非精确事件相关联的架构元数据被捕获而不需要PMI。
在一些实施例中,NPEBS处理机电路控制生成用于非精确事件的NPEBS记录的时序。在一个实施例中,在跟踪非精确事件的性能计数器发生溢出时立即生成用于非精确事件的NPEBS记录。在另一实施例中,在跟踪非精确事件的性能计数器发生溢出之后(例如,在执行接下来的后续指令时)立即生成用于非精确事件的NPEBS记录。在一个实施例中,NPEBS处理机将用于非精确事件的NPEBS记录存储在NPEBS处理机电路的存储器存储中。
以上避免使用PMI来捕获与非精确事件相关联的系统的架构状态的技术具有许多优点。一个此类优点是以此种方式将非精确事件的架构状态存储在存储器存储中在中断被掩蔽时不被抑制。以前,非精确事件只能使PMI待决而不能将PEBS记录记入日志。除非PMI被配置成用于引起不可掩蔽的中断(NMI),否则当中断被掩蔽时,PMI被阻塞,这掩盖了采样实际在何处发生。使用NMI可能导致系统上的稳定性和安全性问题,并且不是所有的操作系统都允许使用NMI。在中断处理机、上下文切换、锁定算法和有特权代码内的其他关键区域(环0)中掩蔽中断。随着向要求针对CPU与知识产权(IP)单元之间的交互的中断的SoC(芯片上系统)的切换,中断处置的时间量已经增加。许多基于事件的采样简档是错误的,因为在中断被掩蔽时无法使用PMI处理机;导致捕获到不正确的指令指针。在本公开的实施例中,当中断被掩蔽时不抑制在PEBS缓冲器中放置事件的细节,因此避免了以上所提到的利用PMI处理机的缺陷。
利用NPEBS处理机电路来生成用于非精确事件的NPEBS记录的另一优点是更快速的检测,从而得到更高的精确度。至少一个栈条目以及硬件的缓冲器可以被捕获以取得指令指针(以及关于架构状态的附加信息),其中等待时间少于中断处理机在PMI时进入所要求的等待时间。进一步的优势是在采样时更低的开销。多个PEBS记录(一些或所有的PEBS记录可对应于非精确事件)可在单个PMI时被收集,以降低所收集的每样本中断(即,PEBS记录)的数量。中断在系统上是昂贵,并且为由基于事件的采样导致的性能扰动中的大部分负责。因此,降低用于获得性能监视样本的中断的数量是有利的。
本公开的一些实施例是紧凑电路,并且因此被实现为各种各样的处理单元的整体部分而不会产生显著的成本和功耗增加。本公开的一些实施例是可编程电路逻辑,并且可被用来跟踪和管理同一电路逻辑上不同类型的非精确事件。NPEBS处理机电路也是可扩展的,以跟踪多个处理单元。NPEBS处理机电路可由在同一处理器上运行的多个应用共享,并且由操作系统(OS)或虚拟机作为共享资源来管理。
用于生成并存储PEBS和NPEBS记录的示例性处理器
图1是图示出根据一个实施例的处理器的框图。图1图示出处理器102,该处理器102包括NPEBS处理机电路106和PEBS处理机电路108,该PEBS处理机电路具有一个或多个存储器存储110a至110n(其可被实现为物理存储器存储,诸如缓冲器)。PEBS处理机电路108还可包括如以上所描述的性能监视中断(PMI)组件112。另外,处理器102可包括一个或多个事件选择(ES)控制114a至114n,该一个或多个ES控制114a至114n与一个或多个通用性能计数器116a-116n对应,并且进一步与一个或多个PEBS启用电路118a-118n(以上讨论了其细节)对应。在一些实现方式中,PEBS启用电路118a-118n可位于单个控制寄存器(例如,机器特定寄存器)中。
另外,在图1中所示出的实施例中,使用固定功能计数器160a-c来应用PEBS、NPEBS和PDIR操作。在一个实施例中,三个固定功能计数器160a-c被定义并实现为用于对被引退的指令、参考时钟以及核时钟进行计数。然而,将会领会,本发明的基本原理不限于任何特定数量的固定功能计数器或任何特定的固定功能计数器实现方式。
如所提到,处理器102可执行嵌入有针对事件的标记的指令流,其可被放置在总线/互连结构104上。指令的片段的执行可构成一个或多个非精确事件。非精确事件是不链接至指令跟踪中的特定指令或微操作或者在该指令或微操作不引退时可以推测性地发生的性能事件。此类非精确事件可包括但不限于参考时钟、核时钟和周期,列举数例。在一个实施例中,非精确事件由处理器102生成。在另一实施例中,非精确事件在处理器102外被生成,并且经由总线/互连结构104被传输到该处理器。
在一个实施例中,图1中所示出的事件选择(ES)控制150a-c执行与以上所描述的ES控制114a-c类似的操作,但是与固定功能性能计数器160a-c对应并且进一步与同这些固定功能性能计数器160a-c相关联的PEBS启用电路170a-c对应。在一些实施例中,PEBS启用电路118a-118n与170a-c位于单个控制寄存器中。
例如,图8图示出示例性PEBS启用机器特定寄存器800,缩写为PEBS启用MSR 800,在该PEBS启用MSR 800中,位0-3分别与四个通用计数器GPctr0-GPctr3相关联,并且位32-34分别与固定功能性能计数器FxCtr0-FxCtr2相关联。在一个实施例中,位位置0-3中的任何一个位位置中的位值1为(N)PEBS启用对应的通用计数器,并且位位置32-34中的任一位位置中的值1为(N)PEBS启用对应的固定功能计数器。当然,被用来启用(N)PEBS的特定的位与本发明的基本原理无关。例如,在替代实现方式中,位值0被用来指示为(N)PEBS启用了对应的计数器。
在一个实施例中,ES控制150a-c的编程使得与所编程的ES控制对应的性能计数器160a-c跟踪特定的所编程的非精确/精确事件的发生。在一些实施例中,不被定义为精确事件的任何事件被认为是非精确事件。在一个实施例中,ES控制150a-c通过执行应用来编程。在另一实施例中,用户将制150a-c编程为具有非精确/精确事件标识符。
当ES控制150a-c被编程有事件标识符时,与ES控制150a-c对应的性能计数器160a-c在所编程的事件的每次发生时被递增或递减。与ES控制150a-c和固定功能性能计数器160a-c对应的PEBS启用电路170a-c可被设置(例如,激活、标志设置、位设置为1等)以在固定功能性能计数器160a-c溢出时或者如果该计数器被递减则在固定功能性能计数器160a-c达到值0时生成PEBS记录。在一个实施例中,图8中所图示的PEBS启用位被设置为用于使得PEBS处理机电路108能够在正在对事件进行计数的固定功能性能计数器160a-c的溢出或零值时生成PEBS记录。如以上所讨论,PEBS记录包括系统在固定功能性能计数器160a-c的溢出或零值时的状态的架构元数据。该架构元数据可包括但不限于例如,IP、TSC或寄存器状态。
用于固定功能计数器的示例性控制寄存器
图9图示出用于对固定计数器的ES控制的替代的MSR布局。在该实施例中,事件选择控制150a-c的布置可在如图9中所示出的组合的MSR中实现。因为它们是固定计数器,不存在要被编程的事件,并且针对每个计数器甚至不存在不同的MSR(即,由于每个计数器总是对仅一件事进行计数,所以不存在事件选择或单元掩码)。示出了针对三个固定计数器(IA32_FIXED_CTR0、IA32_FIXED_CTR1和IA32_FIXED_CTR2)的PEBS启用电路910。在一个实施例中,ENABLE(启用)是与每个计数器相关联的2位的值,该值将被设置为值0(禁用)、1(OS控制)、2(用户控制)以及3(在所有环级别处进行控制)。在该实施例中,由于要求被编程的其他逻辑中的一些(诸如,环级别掩码和PMI启用),存在与每个计数器相关联的受限控制。
在一个实施例中,NPEBS处理机电路106耦合至PEBS启用电路170a-c,以使得当固定功能性能计数器160a-c溢出或达到零值时,NPEBS处理机电路106使得PEBS启用电路170a-c生成用于事件的PEBS记录。在一些实施例中,NPEBS处理机电路106控制生成用于事件的PEBS记录的时序。例如,在一个实施例中,NPEBS处理机电路106使得PEBS启用电路170a-c在对所编程的事件进行跟踪和计数的性能计数器160a-c的溢出或零值发生时立即生成用于该事件的PEBS记录。
在另一实施例中,NPEBS处理机电路106使得PEBS启用电路170a-c在对所编程的事件进行跟踪和计数的固定功能性能计数器160a-c的溢出或零值发生之后立即生成用于该事件的PEBS记录。在该实施例中,PEBS记录在引退的下一指令之后(即,在指令跟踪中触发固定功能性能计数器160a-c溢出或运行到零的下一指令完成之后)被生成。在一个实施例中,由PEBS处理机电路108生成的用于该事件的PEBS记录被存储在PEBS处理机电路108的存储器存储110中。相应地,可在不利用PMI的情况下捕获与该事件相关联的架构元数据。
在一个实施例中,PMI组件112收集存储在PEBS处理机电路108的(多个)存储器存储110a-110n中的PEBS记录。PMI组件112可立即收集存储在存储器存储110a-110n中的PEBS记录。在另一实施例中,PMI组件112在立即收集存储在存储器存储110a-110n中的PEBS记录时被延迟。接口可作为机器特定寄存器(MSR)而被提供。
将PEBS/NPEBS/PDIR应用到固定功能计数器160a-c提供了与将那些特征添加到通用计数器116a-n类似的益处,但允许将通用计数器用于其他活动的自由。下文讨论了本发明的实施例的这些和其他益处以及附加特征。
即使在中断被掩蔽时仍生成PEBS记录
具体而言,使用本文中所描述的技术,当中断被掩蔽时,PEBS样本未被抑制。在当前实现方式中,固定事件仅能使PMI待决而不能将PEBS记入日志。除非PMI被配置成用于引起不可掩蔽的中断(NMI),否则当中断被掩蔽时,PMI将被阻塞,这掩盖了采样实际在何处发生。使用NMI可能导致系统上的稳定性和安全性问题,并且不是所有的操作系统都允许使用NMI。当中断被掩蔽时,将事件的细节放置在PEBS缓冲器中未被抑制。在中断处理机、上下文切换、锁定算法和有特权代码内的其他关键区域(环0)中掩蔽中断。随着向要求针对CPU与其他芯片单元之间的交互的中断的SoC(芯片上系统)的切换,中断处置所要求的时间量已经增加。今天,许多基于事件的采样简档是不正确的,因为性能监视中断处理机在中断被掩蔽时无法进入来捕获诸如指令指针之类的概况分析关键数据。
这些实施例还提供了更快速的检测。例如,硬件缓冲器能以较低的等待时间被捕获以取得指令指针(以及关于架构状态的附加信息),该等待时间少于中断处理机在来自APIC的性能监视中断时进入所要求的等待时间。这带来了更准确的概况分析信息。
这些实施例还提供了采样时更低的开销。可以在单个性能监视中断时收集多个(N)PEBS样本和缓冲器,以降低每一所收集样本的中断数量。如所提到,中断是昂贵的,并且对由基于事件的采样导致的性能扰动中的大部分负责。
对于“引退的指令”固定事件,扩展PEBS以覆盖固定计数器160将允许对利用诸如引退的指令的精确分布(PDIR)之类的特征的进一步增强。该特征确保对在PEBS记录中捕获的IP的采样是统计上准确的,并且今天仅在通用计数器116上可用。通常对通用计数器进行多路复用以便收集全部所请求的事件,这暗示部分指令简档。在PDIR在固定计数器160上被支持的情况下,使用本发明的实施例解决了该问题。
另外,在当前实现方式中,不存在使固定事件利用PEBS事件的触发机制或缓冲器的方法。当中断被掩蔽时缺乏准确地概况分析的能力导致浪费大量时间来调试平台问题。
用于生成并存储PEBS记录的示例性过程
图2图示出用于生成PEBS记录并将该PEBS记录存储在存储器缓冲器中并且用于将该存储器缓冲器存储到PEBS跟踪文件的过程的实施例。在开始之后,在202处,将PMU计数器设置为-N。开始于负值,每当PEBS记录被生成时,该实施例中的PMU计数器将被递增,直到其达到零(0)。在替代实施例(未示出)中,将PMU计数器设置为+N,并且每当PEBS记录被生成时,使PMU计数器递减。在204处,生成N个PEBS记录,并且将这N个PEBS记录存储在PEBS存储器缓冲器中。在206处,将这N个PEBS记录存储在PEBS跟踪文件中。此步骤也被图示为210,示出了将N个PEBS记录存储在PEBS跟踪文件212中。在208处,对PEBS跟踪文件进行后处理,在这之后该过程结束。
图3图示出将PEBS处理机电路编程为用于监视处理器性能并生成将要被存储在PEBS存储器缓冲器中并随后被存储在PEBS跟踪文件中的PEBS记录的过程的实施例。在开始之后,在302处,将PMU计数器编程为对函数调用进行计数并且在N次调用之后溢出,这些函数调用诸如BR_INST_RETIRED和NEAR_CALL_PS事件。在304处,将PEBS处理机电路编程为在每次溢出之后生成PEBS记录,该PEBS记录被配置成包含栈顶的X个条目以及包括处理器的状态信息的架构元数据,该架构元数据包括但不限于指令指针、时间戳计数器、以及寄存器状态。在图7、图8和图9中示出了并且在下文中讨论了由PEBS监视并被存储在PEBS数据记录中的处理器信息的配置。在306处,在PEBS存储器已被填满之后,将PEBS存储器内容存储到PEBS跟踪文件。随后该过程结束。
用于对PEBS跟踪文件进行后处理的示例性过程
图4图示出对PEBS跟踪文件进行后处理以逐函数调用地分解性能数据的实施例。在开始之后,在402处,从PEBS跟踪文件中的记录取出指令指针(IP)。在404处,将该指令指针映射到符号信息。在406处,指令指针被用来确定与该指令相关联的函数名称以及该函数的调用约定,函数的调用约定定义将由该函数接收的输入参数以及将被提供的结果。在408处,使用函数的调用约定,从PEBS跟踪文件取出函数的自变量,该自变量包含来自栈的X个条目以及寄存器值。在410处,在逐函数调用的基础上利用具体的自变量来分解性能数据。随后该过程结束。
示例性处理器寄存器堆
图5是根据本发明的一个实施例的寄存器架构500的框图。在所图示的实施例中,存在32个512位宽的向量寄存器510;这些寄存器被引用为zmm0到zmm31。较低的16个zmm寄存器的较低阶256个位覆盖在寄存器ymm0-16上。较低的16个zmm寄存器的较低阶128个位(ymm寄存器的较低阶128个位)覆盖在寄存器xmm0-15上。
写掩码寄存器515——在所图示的实施例中,有8个写掩码寄存器(k0到k7),每个写掩码寄存器的尺寸是64位。在替代实施例中,写掩码寄存器515的尺寸是16位。如先前所述,在本发明的一个实施例中,向量掩码寄存器k0无法用作写掩码;当将正常指示k0的编码用作写掩码时,它选择硬连线的写掩码0xFFFF,从而有效地停用该指令的写掩码操作。
通用寄存器525——在所图示的实施例中,存在十六个64位通用寄存器,这些寄存器与现有的x86寻址模式一起使用来对存储器操作数寻址。这些寄存器通过名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP以及R8到R15来引用。
标量浮点栈寄存器堆(x87栈)545,在其上面重叠了MMX紧缩整数平坦寄存器堆550——在所图示的实施例中,x87栈是用于使用x87指令集扩展来对32/64/80位浮点数据执行标量浮点操作的八元素栈;而MMX寄存器用于对64位紧缩整数数据执行操作,以及为在MMX和XMM寄存器之间执行的一些操作保存操作数。
本发明的替代实施例使用更宽的或更窄的寄存器。另外,本发明的替代实施例可以使用更多、更少或不同的寄存器堆和寄存器。
示例性栈
图6是根据实施例的寄存器栈。如所图示,栈602(也被称为寄存器栈)包括栈底604、栈界限608、和栈指针606。在一些实施例中,栈指针606指向将从该栈出栈的下一栈条目。在其他实施例中,栈指针606指向将使栈元素入栈所在的空的栈位置。栈602支持出栈和入栈,以及当超出栈界限608时使元素入栈时的溢出。
在一些实施例中,使用诸如通用寄存器525(图5)之类的通用寄存器来存储栈。在一些实施例中,使用一些通用寄存器来实现由所有进程共享的全局栈。在一些实施例中,一些通用寄存器被预留以用来实现用于单个进程的栈。
如所图示,栈存储与用于函数A()的栈帧610相关联的三个元素A1、A2和A3。该栈还存储与用于函数B()的栈帧612相关联的五个元素B1、B2、B3、B4和B5。如所图示,该栈的剩余元素未被使用。通过在图7中配置PEBS记录,为了监视并反映5个条目,如所图示,例如,栈指针+X(其中,X=5),如所图示,例如,在图4中,PEBS后处理可以分解如所描述地馈送至函数(B)的参数。在一些实施例中,栈602包括如图5中所图示的通用寄存器。
PEBS配置寄存器
图7是可编程PEBS配置寄存器的实施例。图7是将PEPS配置寄存器702编程为指定在PEPS记录中存储什么内容的示例。在一些实施例中,PEBS配置寄存器包括图5中所图示的通用寄存器或架构寄存器中的一者。在一些实施例中,PEBS配置寄存器包括被包括在处理器中的独立的专用寄存器。在一些实施例中,PEBS数据记录包括存储器位置。
如所示,PEBS配置寄存器的最低阶的5个位被设置为0b1_1011,这使得PEBS处理机电路监视并记录指令指针(IP)、时间戳(TSC)、通用寄存器RAX、RBX等、最后分支(来自(from)、去往(to)、信息(info))。接下来的6个位使得PEBS处理机电路包括开始于栈指针RSP的栈的X个双字[RSP+0]、[RSP+4]……[RSP(X-1)*4]。如所图示,X可被设置为存储栈的高达64个双字。在如所示对PEBS配置寄存器进行编程时,在一些实施例中,PEBS处理机电路在被启用时,每当PMU计数器溢出时该PEBS处理机电路都生成PEBS记录,使得PEBS记录被生成并被存储。此处,PEBS记录706和708已被生成,并被存储在PEBS存储器缓冲器704中。PEBS记录旨在反映处理器在溢出时的状态。在一些实施例中,虽然某种延迟可能存在,但是PEBS处理机电路在PMU计数器溢出之后立即读取栈条目,。
示例性PEBS存储器缓冲器
图10图示出根据一个实施例的对数据存储缓冲器管理区域的更新。图10图示出本发明的一个实施例的附加细节,在该实施例中,数据存储缓冲器管理区域1000被扩展为包括用于固定计数器固定Cntr0、固定Cntr1和固定Cntr2(类似于图1的固定功能计数器160a-c)的计数器重置值1001。为了对每一个“第N个”事件进行采样,重置值“-N”将通过这些值被指定,并且被编程到固定计数器中,以及被编程到与该计数器相关联的基于存储器的控制块位置中。当计数器达到0时,并且在轻微流水线延迟(其中附加事件可能发生)之后,下一事件使得将取得样本。如所图示,使得将取得样本的每个事件引起PEBS记录被生成并被存储在PEBS存储器缓冲器1002中。然后,(随着执行和计数继续)从计数器重置值1001重新以“-N”来重置该计数器。如所示,连续的PEBS记录(记录0到记录M)被写入到PEBS存储器缓冲器1002。在一些实施例中,当预定阈值数量的PEBS记录被写入到PEBS存储器缓冲器时,PEBS存储器缓冲器的内容被复制到存储器中的PEBS跟踪文件。PEBS跟踪文件可被存储在与PEBS存储器缓冲器1002相同的存储器中,或被存储到不同的存储器中。在一些实施例中,PEBS存储器缓冲器1002被存储在第二存储器中。在一些实施例中,第二存储器具有比第一存储器更大的容量。
在一些实施例中,使用硬件和微代码的组合来收集样本,并且样本不要求中断或任何宏代码执行。一旦缓冲器填充到预定义的阈值,则取得性能监视中断(PMI),并且调用宏代码处理机来处理缓冲器中的样本。
在一个实施例中,基于非精确事件的采样(NPEBS)使用与PEBS相同的调试存储机制来周期性地存储架构状态信息的集合,但NPEBS利用略微不同的语义。使用相同的采样控制机制,但在计数器达到0之后的下次机会时取得样本。其被认为“非精确的”,因为所采样的指令可能不是经历该事件的指令。当针对不是可PEBS(PEBS-able)事件列表的部分的事件(诸如,参考时钟和核时钟)来配置PEBS时,NPEBS参与其中。在以上所描述的实施例中,其在通用计数器116a-n上实现。在没有NPEBS的情况下,用于基于时钟事件得到统计样本的仅有的方式是每当恰当配置的计数器溢出时都进行高成本的PMI。
总而言之,本发明的实施例提供了PEBS启用机器特定寄存器800(例如,IA32_PEBS_ENABLE MSR)、数据存储缓冲器管理区域1000、以及相关联的硬件控制寄存器的扩展,以将用于固定计数器160a-c的状态位包括在内。这些实施例允许所有的固定事件置位对应的PEBS启用位,以使得这些实施例当它们如以上所描述地使用PEBS或者使用NPEBS使输入样本命中值时可以利用PEBS触发机制和缓冲器。对于参考时钟和核时钟,不保证固定事件标记到任何特定指令,但将允许时钟事件利用PEBS缓冲器来存储通过该架构上的PEBS已经可用的所有信息,诸如,指令指针(RIP/EIP)、时间戳计数器(TSC)以及通用寄存器。另外,在一个实施例中,异常生成逻辑中的硬件取得附加输入,并恰当地插入PEBS辅助操作。在一个实施例中,固定计数器160利用PEBS触发机制。因此,固定事件可以对PEBS启用机器特定寄存器800编程,并且使得PEBS能够用于那些非精确事件。
独立于中断来跟踪PEBS事件的示例性优势
图11A-图11B图示出由本公开的实施例实现的对性能监视的改进。图11A图示出在没有PEBS并且其中PMI不被映射到NMI的情况下的采样。最终结果是不准确的简档,其中,整个简档可能被遗漏并且样本可能被丢弃。相比之下,图11B图示出利用如本文中所描述的PEBS采样技术对固定事件进行的基于事件的采样。结果是在事件发生时显著地更好的准确性和样本收集。
示例性系统架构
图12是根据本公开的实施例的示例性计算机系统的框图,该计算机系统被形成为具有包括用于执行指令的执行单元的处理器。根据本公开,诸如在本文中所描述的实施例中,系统1200可以包括诸如处理器1202之类的组件,该处理器1202用于采用包括逻辑的执行单元以执行算法来处理数据。系统1200可以代表基于可从美国加利福尼亚州圣克拉拉市的英特尔公司获得的III、/>4、XeonTM、/>XScaleTM和/或StrongARMTM微处理器的处理系统,不过也可使用其他系统(包括具有其他微处理器的PC、工程工作站、机顶盒等)。在一个实施例中,系统1200可执行可从美国华盛顿州雷蒙德市的微软公司获得的WINDOWSTM操作系统的某个版本,不过也可使用其他操作系统(例如,UNIX和Linux)、嵌入式软件和/或图形用户界面。因此,本公开的各实施例不限于硬件电路和软件的任何特定组合。
实施例不限于计算机系统。本公开的实施例可用于其他设备,诸如手持式设备和嵌入式应用。手持式设备的一些示例包括蜂窝电话、网际协议设备、数码相机、个人数字助理(PDA)以及手持式PC。嵌入式应用可包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机、或可执行根据至少一个实施例的一条或多条指令的任何其他系统。
系统1200可包括处理器1202,该处理器1202可包括一个或多个执行单元1208,用于执行算法以执行根据本公开的一个实施例的至少一条指令。可在单处理器桌面或服务器系统的情境中描述一个实施例,但是可将其他实施例包括在多处理器系统中。系统1200可以是“中枢”系统架构的示例。系统1200可包括处理器1202以用于处理数据信号。处理器1202可包括例如复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现多个指令集组合的处理器或任何其他处理器设备(例如,数字信号处理器)。在一个实施例中,处理器1202可耦合至处理器总线1210,该处理器总线1210可以在处理器1202与系统1200中的其他组件之间传输数据信号。系统1200的多个元件可以执行为熟悉本领域的人员所公知的它们的常规功能。
在一个实施例中,处理器1202可包括第12级(L1)内部高速缓存存储器1204。取决于架构,处理器1202可具有单个内部高速缓存或多级内部高速缓存。在另一实施例中,高速缓存存储器可驻留在处理器1202的外部。其他实施例也可包括内部高速缓存和外部高速缓存两者的组合,这取决于特定实现和需求。寄存器堆1206可将不同类型的数据存储在各种寄存器(包括整数寄存器、浮点寄存器、状态寄存器、指令指针寄存器)中。
执行单元1208(包括用于执行整数和浮点操作的逻辑)也驻留在处理器1202中。处理器1202还可包括存储用于某些宏指令的微代码的微代码(ucode)ROM。在一个实施例中,执行单元1208可包括用于处置紧缩指令集1209的逻辑。通过将紧缩指令集1209包括在处理器1202以及用于执行指令的相关联的电路的指令集中,可以使用处理器1202中的紧缩数据来执行由许多多媒体应用使用的操作。因此,通过将处理器的数据总线的完整宽度用于对紧缩数据执行操作,可加速并更高效地执行许多多媒体应用。这可消除跨处理器的数据总线传输更小数据单元以便一次对一个数据元素执行一个或多个操作的需要。
执行单元1208的实施例也可以用于微控制器、嵌入式处理器、图形设备、DSP及其他类型的逻辑电路。系统1200可包括存储器1220。存储器1220可被实现为动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备或其他存储器设备。存储器1220可存储由可由处理器1202执行的数据信号来表示的指令和/或数据。
存储器控制器中枢1216可耦合至处理器总线1210和存储器1220。存储器控制器中枢1216可包括存储器控制器中枢(MCH)。处理器1202可经由处理器总线1210与存储器控制器中枢1216通信。存储器控制器中枢1216可以提供至存储器1220的高带宽存储器路径1218,用于指令和数据存储,并且用于图形命令、数据和纹理的存储。存储器控制器中枢1216可以引导处理器1202、存储器1220以及系统1200中的其他组件之间的数据信号,并用于在处理器总线1210、存储器1220以及输入/输出(I/O)控制器中枢1230之间桥接数据信号。在一些实施例中,存储器控制器中枢1216提供用于耦合至图形/视频卡1212的图形端口。存储器控制器中枢1216可通过存储器接口1218耦合至存储器1220。图形卡1212可通过加速图形端口(AGP)互连1214耦合至存储器控制器中枢1216。
系统1200可使用专有中枢接口总线1222以将存储器控制器中枢1216耦合至I/O控制器中枢(ICH)1230。在一个实施例中,ICH 1230可经由本地I/O总线来提供到某些I/O设备的直接连接。本地I/O总线可包括用于将外围设备连接到存储器1220、芯片组以及处理器1202的高速I/O总线。示例可包括音频控制器、固件中枢(闪存BIOS)1228、无线收发机1226、数据存储设备1224、包括用户输入和键盘接口的传统I/O控制器、串行扩展端口(诸如,通用串行总线(USB))以及网络控制器1234。数据存储1224可包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备、或其他大容量存储设备。
对于系统的另一实施例,根据一个实施例的指令可以与芯片上系统一起使用。芯片上系统的一个实施例包括处理器和存储器。用于一个此类系统的存储器可包括闪存。闪存可位于与处理器和其他系统组件相同的管芯上。另外,诸如存储器控制器或图形控制器之类的其他逻辑块也可位于芯片上系统上。
示例性系统架构
图13和图14是示例性系统架构的框图。本领域中已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。
现在参考图13,所示出的是根据本发明一个实施例的系统1300的框图。系统1300可以包括一个或多个处理器1310、1315,这些处理器耦合到控制器中枢1320。在一个实施例中,控制器中枢1320包括图形存储器控制器中枢(GMCH)1390和输入/输出中枢(IOH)1350(其可以在分开的芯片上);GMCH 1390包括存储器和图形控制器,存储器1340和协处理器1345耦合到该存储器和图形控制器;IOH 1350将输入/输出(I/O)设备1360耦合到GMCH1390。或者,存储器和图形控制器中的一个或这两者被集成在(如本文中所描述的)处理器内,存储器1340和协处理器1345直接耦合到处理器1310,并且控制器中枢1320与IOH 1350处于单个芯片中。
附加的处理器1315的任选性在图13中通过虚线来表示。每一处理器1310、1315可包括本文中描述的处理核中的一个或多个,并且可以是处理器1700的某一版本。
存储器1340可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢1320经由诸如前端总线(FSB)之类的多分支总线、诸如快速路径互连(QPI)之类的点对点接口、或者类似的连接1395来与处理器1310、1315进行通信。
在一个实施例中,协处理器1345是专用处理器,诸如例如,高吞吐量集成众核(MIC)处理器、网络或通信处理器、压缩引擎、图形处理器、通用图形处理单元(GPGPU)、嵌入式处理器,等等。在一个实施例中,控制器中枢1320可以包括集成图形加速器。
在处理器1310、1315之间可以存在包括架构、微架构、热、功耗特性等一系列品质度量方面的各种差异。
在一个实施例中,处理器1310执行控制一般类型的数据处理操作的指令。嵌入在这些指令内的可以是协处理器指令。处理器1310将这些协处理器指令识别为具有应当由附连的协处理器1345执行的类型。因此,处理器1310在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1345。(多个)协处理器1345接受并执行所接收的协处理器指令。
现在参见图14,所示出的是根据本发明的实施例的多处理器系统1400的框图。如图14中所示,多处理器系统1400是点对点互连系统,并且包括经由点对点互连1450耦合的第一处理器1470和第二处理器1480。处理器1470和处理器1480中的每一个都可以是处理器1700的某一版本。在本发明的一个实施例中,处理器1470和1480分别是处理器1310和1315,而协处理器1438是协处理器1345。在另一实施例中,处理器1470和处理器1480分别是处理器1310和协处理器1345。
处理器1470和处理器1480示出为分别包括集成存储器控制器(IMC)单元1472和1482。处理器1470还包括作为其总线控制器单元的一部分的点对点(P-P)接口1476和1478;类似地,第二处理器1480包括P-P接口1486和1488。处理器1470和处理器1480可以经由使用点对点(P-P)接口电路1478、1488的P-P互连1450来交换信息。如图14中所示,IMC1472和1482将处理器耦合到相应的存储器,即存储器1432和存储器1434,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器1470和处理器1480可各自经由使用点对点接口电路1476、1494、1486、1498的各个P-P接口1452、1454来与芯片组1490交换信息。芯片组1490可以任选地经由高性能接口1492来与协处理器1438交换信息。在一个实施例中,协处理器1438是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。
共享高速缓存(未示出)可被包括在任一处理器中,或在这两个处理器的外部但经由P-P互连与这些处理器连接,使得如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
芯片组1490可以经由接口1496耦合到第一总线1416。在一个实施例中,第一总线1416可以是外围部件互连(PCI)总线或诸如PCI快速总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图14中所示,各种I/O设备1414可连同总线桥1418一起耦合到第一总线1416,该总线桥1418将第一总线1416耦合到第二总线1420。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器1415耦合到第一总线1416。在一个实施例中,第二总线1420可以是低引脚数(LPC)总线。在一个实施例中,各种设备可耦合到第二总线1420,这些设备包括例如键盘和/或鼠标1422、通信设备1427以及数据存储1428,该存储单元1428诸如可包括指令/代码和数据1430的盘驱动器或者其他大容量存储设备。此外,音频I/O 1424可以被耦合到第二总线1420。注意,其他架构是可能的。例如,代替图14的点对点架构,系统可以实现多分支总线或其他此类架构。
现在参考图15,示出的是根据本发明的实施例的第二更具体的示例性系统1500的框图。图14和15中的类似元件使用类似的附图标记,并且从图15中省略了图14的某些方面以避免混淆图15的其他方面。
图15图示处理器1470和处理器1480可分别包括集成存储器和I/O控制逻辑(“CL”)1472和1482。因此,CL 1472、1482包括集成存储器控制器单元,并包括I/O控制逻辑。图15图示不仅存储器1432、1434耦合到CL 1472、1482,而且I/O设备1514也耦合到控制逻辑1472、1482。传统I/O设备1515被耦合到芯片组1490。
现在参考图16,示出的是根据本发明的实施例的SoC 1600的框图。图17中的类似要素使用类似的附图标记。另外,虚线框是更先进的SoC上的任选的特征。在图16中,(多个)互连单元1602被耦合到:应用处理器1610,其包括一个或多个核1702A-N的集合以及(多个)共享高速缓存单元1706,该一个或多个核1702A-N的集合包括高速缓存单元1704A-N;系统代理单元1710;(多个)总线控制器单元1716;(多个)集成存储器控制器单元1714;一个或多个协处理器的集合1620,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1630;直接存储器访问(DMA)单元1632;以及用于耦合到一个或多个外部显示器的显示单元1640。在一个实施例中,(多个)协处理器1620包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器,等等。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或此类实现方式的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码(诸如,图14中图示的代码1430)应用于输入指令,以执行本文中描述的功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有处理器的任何系统,该处理器诸如例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可以用高级的面向过程的编程语言或面向对象的编程语言来实现,以便与处理系统通信。如果需要,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定的编程语言的范围。在任何情况下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制造用于执行本文中所述的技术的逻辑。被称为“IP核”的此类表示可以被存储在有形的机器可读介质上,并可被供应给各个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
此类机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非暂态、有形布置,其包括存储介质,诸如硬盘;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、可重写紧致盘(CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括非暂态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。
示例性核架构、处理器和计算机架构
处理器核能以不同方式、出于不同的目的、在不同的处理器中实现。例如,此类核的实现可以包括:1)旨在用于通用计算的通用有序核;2)旨在用于通用计算的高性能通用乱序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)CPU,其包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用乱序核;以及2)协处理器,其包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核。此类不同的处理器导致不同的计算机系统架构,这些计算机系统架构可包括:1)在与CPU分开的芯片上的协处理器;2)在与CPU相同的封装中但在分开的管芯上的协处理器;3)与CPU在相同管芯上的协处理器(在该情况下,此类协处理器有时被称为专用逻辑或被称为专用核,该专用逻辑诸如,集成图形和/或科学(吞吐量)逻辑);以及4)芯片上系统,其可以将所描述的CPU(有时被称为(多个)应用核或(多个)应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上。接着描述示例性核架构,随后描述示例性处理器和计算机架构。
示例性核架构
有序和乱序核框图
图17是根据本发明的实施例的可具有多于一个的核、可具有集成存储器控制器、以及可具有集成图形器件的处理器1700的框图。图17中的实线框图示具有单个核1702A、系统代理1710、一个或多个总线控制器单元的集合1716的处理器1700,而虚线框的任选增加图示具有多个核1702A-N、系统代理单元1710中的一个或多个集成存储器控制器单元的集合1714以及专用逻辑1708的替代处理器1700。
因此,处理器1700的不同实现可包括:1)CPU,其中专用逻辑1708是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核1702A-N是一个或多个通用核(例如,通用有序核、通用乱序核、这两者的组合);2)协处理器,其中核1702A-N是旨在主要用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中核1702A-N是大量通用有序核。因此,处理器1700可以是通用处理器、协处理器或专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、嵌入式处理器,等等。该处理器可以被实现在一个或多个芯片上。处理器1700可以是一个或多个基板的一部分,和/或可使用多种工艺技术(诸如例如,BiCMOS、CMOS、或NMOS)中的任何技术被实现在一个或多个基板上。
存储器层次结构包括核内的一个或多个高速缓存级别、一个或多个共享高速缓存单元的集合1706、以及耦合到集成存储器控制器单元的集合1714的外部存储器(未示出)。共享高速缓存单元的集合1706可包括一个或多个中间级别的高速缓存,诸如,第二级(L2)、第三级(L3)、第四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)和/或以上各项的组合。虽然在一个实施例中,基于环的互连单元1712将集成图形逻辑1708(集成图形逻辑1708是专用逻辑的示例,并且在本文中也被称为专用逻辑)、共享高速缓存单元的集合1706以及系统代理单元1710/(多个)集成存储器控制器单元1714互连,但是替代实施例可使用任何数量的公知技术来互连此类单元。在一个实施例中,在一个或多个高速缓存单元1706与核1702A-N之间维持一致性。
在一些实施例中,一个或多个核1702A-N能够实现多线程化。系统代理1710包括协调和操作核1702A-N的那些部件。系统代理单元1710可包括例如功率控制单元(PCU)和显示单元。PCU可以是对核1702A-N以及集成图形逻辑1708的功率状态进行调节所需的逻辑和部件,或可包括这些逻辑和部件。显示单元用于驱动一个或多个外部连接的显示器。
核1702A-N在架构指令集方面可以是同构的或异构的;即,核1702A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。
示例性计算机架构
仿真(包括二进制变换、代码变形等)
在一些情况下,指令转换器用于将指令从源指令集转换至目标指令集。例如,指令转换器可以将指令变换(例如,使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其他方式转换成要由核处理的一条或多条其他指令。指令转换器可以用软件、硬件、固件、或其组合来实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图18是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所图示的实施例中,指令转换器是软件指令转换器,但替代地,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图18示出可使用x86编译器1804来编译高级语言1802形式的程序,以生成可由具有至少一个x86指令集核的处理器1816原生执行的x86二进制代码1806。具有至少一个x86指令集核的处理器1816表示通过兼容地执行或以其他方式执行以下各项来执行与具有至少一个x86指令集核英特尔处理器基本相同的功能的任何处理器:1)英特尔x86指令集核的指令集的本质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器1804表示可操作用于生成x86二进制代码1806(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器1816上执行。类似地,图18示出可以使用替代的指令集编译器1808来编译高级语言1802形式的程序,以生成可以由不具有至少一个x86指令集核的处理器1814(例如,具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生执行的替代的指令集二进制代码1810。指令转换器1812用于将x86二进制代码1806转换成可以由不具有x86指令集核的处理器1814原生执行的代码。该转换后的代码不大可能与替代的指令集二进制代码1810相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作,并且由来自替代指令集的指令构成。因此,指令转换器1812通过仿真、模拟或任何其他过程来表示允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码1806的软件、固件、硬件或其组合。
以上示例包括多个特征的特定组合。然而,此类上述示例在这方面不受限制,并且在各实现方案中,上述示例可包括:执行仅此类特征的子集;执行不同顺序的此类特征;执行此类特征的不同组合;以及/或者执行明确列出的那些特征之外的附加特征。例如,可参照示例装置、示例系统和/或示例制品来实现参照示例方法所描述的所有特征,反之亦然。
本发明的实施例可包括以上已被描述的各步骤。可在可用于使通用或专用处理器执行这些步骤的机器可执行指令中具体化这些步骤。替代地,可由包含用于执行这些步骤的硬连线逻辑的专用硬件组件,或可由被编程的计算机组件和定制硬件部件的任何组合来执行这些步骤。
在上述说明书中已经公开了特定示例性实施例。然而,将会显而易见的是,可对这些实施例作出各种修改和改变,而不背离如所附权利要求所述的本发明的更宽泛的精神和范围。因此,说明书和附图应被认为是说明性而非限制性意义。
示例
示例1提供了一种处理器,该处理器包括:计数器,用于对该处理器中的事件的发生进行计数,并且用于在对发生的计数达到所指定的值时溢出;PEBS处理机电路,用于生成PEBS记录并将该PEBS记录存储到PEBS存储器缓冲器中,该PEBS记录包括反映处理器的状态的至少一个栈条目;以及PEBS启用电路,耦合至计数器并且耦合至PEBS处理机电路,该PEBS启用电路用于使PEBS处理机电路能够生成PEBS记录并将该PEBS记录存储到PEBS存储器缓冲器。
示例2包括示例1的实体。在该示例中,PEBS记录进一步包括处理器的架构元数据以及处理器的寄存器状态。
示例3包括示例1-2中任一项的实体。该示例进一步包括:事件选择寄存器,该事件选择寄存器用于被编程为具有对应于事件的事件标识符;以及可编程PEBS配置寄存器,该可编程PEBS配置寄存器用于指定PEBS记录的内容。
示例4包括示例1-3中任一项的实体。该示例进一步包括:第二计数器,包含在处理器中,该第二计数器用于生成对处理器中非精确事件的发生的第二计数,并且用于在发生的第二计数达到第二所指定的值时溢出;NPEBS处理机电路,用于生成NPEBS记录并将该NPEBS记录存储到PEBS存储器缓冲器中,该NPEBS记录包括反映处理器的状态的至少一个栈条目;以及NPEBS启用电路,耦合至第二计数器并且耦合至NPEBS处理机电路,该NPEBS启用电路用于使NPEBS处理机电路能够在计数器达到第二所指定的值时生成NPEBS记录并将该NPEBS记录存储到PEBS存储器缓冲器。
示例5包括示例1-4中任一项的实体。在该示例中,事件是非精确事件。
示例6包括示例1-5中任一项的实体。在该示例中,当计数器从正起始值递减时所指定的值包括零值,当计数器从负起始值递增时所指定的值包括零值,并且当计数器从零起始值递增时所指定的值包括正值。
示例7包括示例1-6中任一项的实体。该示例进一步包括到第二存储器的接口,PEBS存储器缓冲器用于被存储到该第二存储器中所包含的PEBS跟踪文件中。
示例8包括示例1-7中任一项的实体。在该示例中,PEBS存储器缓冲器包括处理器中所包含的高速缓存存储器,并且第二存储器包括处理器外部的存储器。
示例9包括示例1-8中任一项的实体。在该示例中,PEBS存储器缓冲器包括处理器外部的、并且通过存储器控制器中枢耦合至该处理器的存储器,并且第二存储器包括处理器外部的、并且通过输入/输出(I/O)控制器中枢耦合至该处理器的数据存储。
示例10提供了一种方法,该方法包括以下步骤:将处理器中所包含的计数器配置成用于对该处理器中的事件的发生进行计数,并且用于在对发生的计数达到所指定的值时溢出;将基于精确事件的采样(PEBS)处理机电路配置成用于在至少一个溢出之后生成PEBS记录,并且用于将该PEBS记录存储到PEBS存储器缓冲器中,该PEBS记录包含在溢出之后从栈读取的至少一个栈条目;由PEBS启用电路是PEBS处理机电路能够在至少一个溢出之后生成并存储PEBS记录;由PEBS处理机电路在至少一个溢出之后生成PEBS记录并将该PEBS记录存储到PEBS存储器缓冲器中;以及将该PEBS存储器缓冲器的内容存储到存储器中的PEBS跟踪文件。
示例11包括示例10的实体。在该示例中,PEBS记录进一步包括处理器的架构元数据以及处理器的寄存器状态。
示例12包括示例10-11中任一项的实体。在该示例中,将PEBS处理机电路配置成用于生成并存储PEBS记录包括:将PEBS配置寄存器编程为用于指定该PEBS记录的内容。
示例13包括示例10-12中任一项的实体。在该示例中,事件是精确事件,并且该示例进一步包括:将处理器中所包含的第二计数器配置成用于生成对该处理器中非精确事件的发生的第二计数,并且用于在发生的第二计数达到第二所指定的值时生成第二溢出;以及将基于非精确事件的采样(NPEBS)处理机电路配置成用于在至少一个第二溢出之后生成NPEBS记录,并且用于将该NPEBS记录存储到PEBS存储器缓冲器中,该NPEBS记录包含在第二计数器的至少一个第二溢出之后从栈读取的至少一个栈条目。
示例14包括示例13的实体。在该示例中,PEBS处理机电路和NPEBS处理机电路共享至少一些硬件。
示例15包括示例10-14中任一项的实体。该示例进一步包括对PEBS跟踪文件进行后处理,该后处理包括:从PEBS跟踪文件中的PEBS记录取出指令指针;将该指令指针映射到符号信息;确定由该指令指针所指向的函数的函数名称和调用约定;从PEBS跟踪文件取出函数自变量;以及利用这些函数自变量逐函数调用地分解性能数据。
示例16提供了一种非暂态计算机可读介质,该非暂态计算机可读介质包含计算机可执行指令,这些计算机可执行指令在由处理器执行时使得该处理器用于执行方法,该方法包括:将处理器中所包含的计数器配置成用于对该处理器中的事件的发生进行计数,并且用于在对发生的计数达到所指定的值时溢出;将PEBS处理机电路配置成用于在至少一个溢出之后生成PEBS记录,并且用于将该PEBS记录存储到PEBS存储器缓冲器中,该PEBS记录包含在至少一个溢出之后从栈读取的至少一个栈条目;由PEBS启用电路使PEBS处理机电路在至少一个溢出之后生成并存储PEBS记录;由PEBS处理机电路生成PEBS记录并将该PEBS记录存储到PEBS存储器缓冲器中;以及将该PEBS存储器缓冲器存储到PEBS跟踪文件。
示例17包括示例16的实体。在该示例中,PEBS记录进一步包括处理器的架构元数据以及处理器的寄存器状态。
示例18包括示例16-17中任一项的实体。在该示例中,将处理器中所包含的计数器配置成用于对该处理器中的事件的发生进行计数并且用于在对发生的计数达到所指定的值时溢出包括:将事件选择(ES)控制编程为具有对应于所选择的事件的事件标识符;以及将PEBS启用电路配置成用于使PEBS处理机电路在对处理器中的事件的发生的计数达到所指定的值时生成并存储PEBS记录。
示例19包括示例16-18中任一项的实体。在该示例中,事件是精确事件,并且该方法进一步包括:将处理器中所包含的第二计数器配置成用于生成对该处理器中非精确事件的发生的第二计数,并且用于在发生的第二计数达到第二所指定的值时溢出;以及将NPEBS处理机电路配置成用于在对发生的第二计数的至少一个第二溢出之后生成NPEBS记录,并且用于将该NPEBS记录存储到PEBS存储器缓冲器中,该NPEBS记录包含在第二计数器的至少一个第二溢出之后从栈读取的至少一个栈条目。
示例20包括示例16-19中任一项的实体。该示例进一步包括对PEBS跟踪文件进行后处理,该后处理包括:从PEBS跟踪文件中的PEBS记录取出指令指针;将该指令指针映射到符号信息;确定由该指令指针所指向的函数的函数名称和调用约定;从PEBS跟踪文件取出函数自变量;以及利用这些函数自变量逐函数调用地分解性能数据。
示例21提供了一种系统,该系统包括:系统存储器,处理器,该处理器包括:计数器,用于对该处理器中的事件的发生进行计数,并且用于在对发生的计数达到所指定的值时溢出;PEBS处理机电路,用于生成PEBS记录并将该PEBS记录存储到PEBS存储器缓冲器中,该PEBS记录包括反映处理器的状态的至少一个栈条目;以及PEBS启用电路,耦合至计数器并且耦合至PEBS处理机电路,该PEBS启用电路用于使PEBS处理机电路能够生成PEBS记录并将该PEBS记录存储到PEBS存储器缓冲器。
示例22包括示例21的实体。在该示例中,PEBS记录进一步包括处理器的架构元数据以及处理器的寄存器状态。
示例23包括示例21-22中任一项的实体。该示例进一步包括将事件选择寄存器编程为具有对应于事件的事件标识符,并且进一步包括可编程PEBS配置寄存器,该可编程PEBS配置寄存器用于指定PEBS记录的内容。
示例24包括示例21-23中任一项的实体。该示例进一步包括:第二计数器,包含在处理器中,该第二计数器用于生成对处理器中非精确事件的发生的第二计数,并且用于在发生的第二计数达到第二所指定的值时溢出;NPEBS处理机电路,用于生成NPEBS记录并将该NPEBS记录存储到PEBS存储器缓冲器中,该NPEBS记录包括反映处理器的状态的至少一个栈条目;以及NPEBS启用电路,耦合至第二计数器并且耦合至NPEBS处理机电路,该NPEBS启用电路用于使NPEBS处理机电路能够在计数器达到第二所指定的值时生成NPEBS记录并将该NPEBS记录存储到PEBS存储器缓冲器。
示例25包括示例21-24中任一项的实体。在该示例中,事件是非精确事件。
示例26包括示例21-25中任一项的实体。在该示例中,当计数器从正起始值递减时所指定的值包括零值,当计数器从负起始值递增时所指定的值包括零值,并且当计数器从零起始值递增时所指定的值包括正值。
示例27包括示例21-26中任一项的实体。该示例进一步包括到第二存储器的接口,并且PEBS存储器缓冲器用于被存储到该第二存储器中所包含的PEBS跟踪文件中。
示例28包括示例21-27中任一项的实体。在该示例中,PEBS存储器缓冲器包括处理器中所包含的高速缓存存储器,并且第二存储器包括处理器外部的存储器。
示例29包括示例21-28中任一项的实体。在该示例中,PEBS存储器缓冲器包括处理器外部的、并且通过存储器控制器中枢耦合至该处理器的存储器,并且第二存储器包括处理器外部的、并且通过输入/输出(I/O)控制器中枢耦合至该处理器的数据存储。
示例30提供了一种处理器,该处理器包括:用于对处理器中的事件的发生进行计数并且用于在对发生的计数达到所指定的值时溢出的装置;用于生成PEBS记录并将该PEBS记录存储到PEBS存储器缓冲器中的装置,该PEBS记录包括反映处理器的状态的至少一个栈条目;用于使用于生成PEBS记录并将该PEBS记录存储到PEBS存储器缓冲器中的装置能够生成PEBS记录并将该PEBS记录存储到PEBS存储器缓冲器中的装置。
示例31包括示例30的实体。在该示例中,PEBS记录进一步包括处理器的架构元数据以及处理器的寄存器状态。
示例32包括示例30-31中任一项的实体。该示例进一步包括:用于将事件选择寄存器编程为具有对应于事件的事件标识符的装置,并且进一步包括用于将PEBS配置寄存器编程为用于指定PEBS记录的内容的装置。
虽然本文中的一些实施例涉及在硬件执行单元和逻辑电路的上下文中的数据处置和分布,但是其他实施例可通过存储在非暂态机器可读有形介质上的数据或指令来实现,该数据或指令在由机器执行时,使该机器执行符合至少一个实施例的功能。在一个实施例中,与本公开的实施例相关联的功能以机器可执行指令来具体化。指令可用于使通过这些指令来编程的通用处理器或专用处理器执行指示一个实施例的步骤。本发明的实施例可以作为计算机程序产品或软件来提供,该计算机程序产品或软件可以包括在其上存储有计算机可执行指令的机器或计算机可读介质,这些指令可以用于对计算机(或其他电子设备)编程以执行根据指示一个实施例的一个或多个操作。替代地,实施例的步骤可由包含用于执行这些步骤的固定功能逻辑的专用硬件组件来执行,或由经编程的计算机组件以及固定功能硬件组件的任何组合来执行。
可将用于对逻辑进行编程以执行至少一个实施例的指令存储在系统中的存储器(诸如,DRAM、高速缓存、闪存、或其他存储)内。此外,指令可以经由网络或通过其他计算机可读介质的方式被分发。因此,机器可读介质可包括用于以机器(诸如,计算机)可读形式存储或传送信息的任何机制,但不限于:软盘、光盘、紧凑盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存存储器、或在经由互联网通过电、光、声、或其他形式的传播信号(诸如,载波、红外信号、数字信号等)传送信息中所用的有形机器可读存储。因此,非暂态计算机可读介质包括适用于存储或传送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。

Claims (25)

1.一种处理器,包括:
计数器,用于对所述处理器中的事件的发生进行计数,并且用于在对发生的所述计数达到所指定的值时溢出;
PEBS处理机电路,用于生成PEBS记录并将所述PEBS记录存储到PEBS存储器缓冲器中,所述PEBS记录包括反映所述处理器的状态的至少一个栈条目;以及
PEBS启用电路,耦合至所述计数器并且耦合至所述PEBS处理机电路,所述PEBS启用电路用于使所述PEBS处理机电路能够生成所述PEBS记录并将所述PEBS记录存储到所述PEBS存储器缓冲器。
2.如权利要求1所述的处理器,其中,所述PEBS记录进一步包括所述处理器的架构元数据以及所述处理器的寄存器状态。
3. 如权利要求1所述的处理器,
进一步包括事件选择寄存器,所述事件选择寄存器用于被编程为具有对应于所述事件的事件标识符;并且
进一步包括可编程PEBS配置寄存器,所述可编程PEBS配置寄存器用于指定所述PEBS记录的内容。
4.如权利要求1-3中的任一项所述的处理器,进一步包括:
第二计数器,包含在所述处理器中,所述第二计数器用于生成对所述处理器中的非精确事件的发生的第二计数,并且用于在对发生的所述第二计数达到第二所指定的值时溢出;
NPEBS处理机电路,用于生成NPEBS记录并将所述NPEBS记录存储到所述PEBS存储器缓冲器中,所述NPEBS记录包括反映所述处理器的状态的至少一个栈条目;以及
NPEBS启用电路,耦合至所述第二计数器并且耦合至所述NPEBS处理机电路,所述NPEBS启用电路用于使所述NPEBS处理机电路能够在计数器达到第二所指定的值时生成NPEBS记录并将所述NPEBS记录存储到所述PEBS存储器缓冲器。
5.如权利要求1-3中任一项所述的处理器,其中所述事件是非精确事件。
6.如权利要求1-3中任一项所述的处理器,其中,当所述计数器从正起始值递减时所述所指定的值包括零值,当所述计数器从负起始值递增时所述所指定的值包括零值,并且当所述计数器从零起始值递增时所述所指定的值包括正值。
7.如权利要求1-3中任一项所述的处理器,进一步包括到第二存储器的接口,所述PEBS存储器缓冲器用于被存储到所述第二存储器中所包含的PEBS跟踪文件中。
8.如权利要求7所述的处理器,其中,所述PEBS存储器缓冲器包括所述处理器中所包含的高速缓存存储器,并且所述第二存储器包括所述处理器外部的存储器。
9.如权利要求7所述的处理器,其中,所述PEBS存储器缓冲器包括所述处理器外部的、并且通过存储器控制器中枢耦合至所述处理器的存储器,并且所述第二存储器包括所述处理器外部的、并且通过输入/输出控制器中枢耦合至所述处理器的数据存储。
10.一种处理方法,包括:
将处理器中所包含的计数器配置成用于对所述处理器中的事件的发生进行计数,并且用于在对发生的所述计数达到所指定的值时溢出;
将PEBS处理机电路配置成用于在至少一个溢出之后生成PEBS记录,并且用于将所述PEBS记录存储到PEBS存储器缓冲器中,所述PEBS记录包含在所述溢出之后从栈读取的至少一个栈条目;
由PEBS启用电路使所述PEBS处理机电路能够在所述至少一个溢出之后生成并存储所述PEBS记录;
由所述PEBS处理机电路在所述至少一个溢出之后生成所述PEBS记录并将所述PEBS记录存储到所述PEBS存储器缓冲器中;以及
将所述PEBS存储器缓冲器的内容存储到存储器中的PEBS跟踪文件。
11.如权利要求10所述的处理方法,所述PEBS记录进一步包含所述处理器的架构元数据以及所述处理器的寄存器状态。
12.如权利要求10所述的处理方法,其中,将所述PEBS处理机电路配置成用于生成并存储所述PEBS记录包括:将PEBS配置寄存器编程为用于指定所述PEBS记录的内容。
13. 如权利要求10-12中的任一项所述的处理方法,
其中,所述事件是精确事件;并且
所述方法进一步包括:
将所述处理器中所包含的第二计数器配置成用于生成对所述处理器中的非精确事件的发生的第二计数,并且用于在对发生的所述第二计数达到第二所指定的值时生成第二溢出;以及
将NPEBS处理机电路配置成用于在至少一个第二溢出之后生成NPEBS记录,并且用于将所述NPEBS记录存储到所述PEBS存储器缓冲器中,所述NPEBS记录包含在所述第二计数器的所述至少一个第二溢出之后从所述栈读取的至少一个栈条目。
14.如权利要求13所述的处理方法,其中,所述PEBS处理机电路和所述NPEBS处理机电路共享至少一些硬件。
15.如权利要求10-12中任一项所述的处理方法,进一步包括对所述PEBS跟踪文件进行后处理,所述后处理包括:
从所述PEBS跟踪文件中的PEBS记录取出指令指针;
将所述指令指针映射到符号信息;
确定由所述指令指针所指向的函数的函数名称和调用约定;
从所述PEBS跟踪文件取出函数自变量;以及
利用所述函数自变量逐函数调用地分解性能数据。
16.一种机器可读介质,包括代码,所述代码在被执行时使机器执行如权利要求10-15中任一项所述的处理方法。
17.一种处理系统,包括:
系统存储器;
处理器,所述处理器包括:
计数器,用于对所述处理器中的事件的发生进行计数,并且用于在对发生的所述计数达到所指定的值时溢出;
PEBS处理机电路,用于生成PEBS记录并将所述PEBS记录存储到PEBS存储器缓冲器中,所述PEBS记录包括反映所述处理器的状态的至少一个栈条目;以及
PEBS启用电路,耦合至所述计数器并且耦合至所述PEBS处理机电路,所述PEBS启用电路使所述PEBS处理机电路能够生成PEBS记录并将所述PEBS记录存储到所述PEBS存储器缓冲器。
18.如权利要求17所述的处理系统,其中,所述PEBS记录进一步包括所述处理器的架构元数据以及所述处理器的寄存器状态。
19. 如权利要求17所述的处理系统,
进一步包括事件选择寄存器,所述事件选择寄存器用于被编程为具有对应于所述事件的事件标识符;并且
进一步包括可编程PEBS配置寄存器,所述可编程PEBS配置寄存器用于指定所述PEBS记录的内容。
20.如权利要求17-19中任一项所述的处理系统,进一步包括:
第二计数器,包含在所述处理器中,所述第二计数器用于生成对处理器中的非精确事件的发生的第二计数,并且用于在对发生的所述第二计数达到第二所指定的值时溢出;
NPEBS处理机电路,用于生成NPEBS记录并将所述NPEBS记录存储到所述PEBS存储器缓冲器中,所述NPEBS记录包括反映所述处理器的状态的至少一个栈条目;以及
NPEBS启用电路,耦合至所述第二计数器并且耦合至所述NPEBS处理机电路,所述NPEBS启用电路用于使所述NPEBS处理机电路能够在计数器达到第二所指定的值时生成NPEBS记录并将所述NPEBS记录存储到所述PEBS存储器缓冲器。
21.如权利要求17-19中任一项所述的处理系统,其中,所述事件是非精确事件。
22.如权利要求17-19中任一项所述的处理系统,其中,当所述计数器从正起始值递减时所述所指定的值包括零值,当所述计数器从负起始值递增时所述所指定的值包括零值,并且当所述计数器从零起始值递增时所述所指定的值包括正值。
23.如权利要求17-19中任一项所述的处理系统,进一步包括到第二存储器的接口,所述PEBS存储器缓冲器用于被存储到所述第二存储器中所包含的PEBS跟踪文件中。
24.一种处理器,包括:
用于对所述处理器中的事件的发生进行计数并且用于在发生的所述计数达到所指定的值时溢出的装置;
用于生成PEBS记录并将所述PEBS记录存储到PEBS存储器缓冲器中的装置,所述PEBS记录包括反映所述处理器的状态的至少一个栈条目;以及
用于使用于生成PEBS记录并将所述PEBS记录存储到PEBS存储器缓冲器中的装置能够生成所述PEBS记录并将所述PEBS记录存储到所述PEBS存储器缓冲器中的装置。
25. 如权利要求24所述的处理器,
其中,所述PEBS记录进一步包括所述处理器的架构元数据以及所述处理器的寄存器状态;并且
其中,所述处理器进一步包括:
用于将事件选择寄存器编程为具有对应于所述事件的事件标识符的装置;以及
用于将PEBS配置寄存器编程为用于指定所述PEBS记录的内容的装置。
CN201780055415.0A 2016-09-27 2017-08-16 用于通过输入参数来区分函数性能的系统和方法 Active CN109690497B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/277,855 US10140056B2 (en) 2016-09-27 2016-09-27 Systems and methods for differentiating function performance by input parameters
US15/277,855 2016-09-27
PCT/US2017/047141 WO2018063550A1 (en) 2016-09-27 2017-08-16 Systems and methods for differentiating function performance by input parameters

Publications (2)

Publication Number Publication Date
CN109690497A CN109690497A (zh) 2019-04-26
CN109690497B true CN109690497B (zh) 2023-12-19

Family

ID=61686165

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780055415.0A Active CN109690497B (zh) 2016-09-27 2017-08-16 用于通过输入参数来区分函数性能的系统和方法

Country Status (4)

Country Link
US (2) US10140056B2 (zh)
CN (1) CN109690497B (zh)
DE (1) DE112017004837T5 (zh)
WO (1) WO2018063550A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9766999B2 (en) * 2014-05-30 2017-09-19 Intel Corporation Monitoring performance of a processing device to manage non-precise events
TWI652597B (zh) * 2017-12-05 2019-03-01 緯創資通股份有限公司 電子裝置及其解鎖方法
CN112154419A (zh) * 2019-08-19 2020-12-29 深圳市大疆创新科技有限公司 性能监测装置、方法、片上系统、可移动平台及相机
CN111427755B (zh) * 2020-03-10 2022-07-26 苏州浪潮智能科技有限公司 一种分布式文件系统的io分析方法、装置、设备和介质
US20220100626A1 (en) * 2020-09-26 2022-03-31 Intel Corporation Monitoring performance cost of events

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101427223A (zh) * 2005-06-01 2009-05-06 英特尔公司 用于基于关键路径的分析的性能监视体系结构的增强
CN103154908A (zh) * 2010-07-28 2013-06-12 英特尔公司 用于事务存储器的最后分支记录指示符
CN104246692A (zh) * 2012-03-30 2014-12-24 英特尔公司 用于实时指令跟踪的系统和方法
CN104969144A (zh) * 2013-03-15 2015-10-07 起元技术有限责任公司 对程序执行的记录

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6651243B1 (en) * 1997-12-12 2003-11-18 International Business Machines Corporation Method and system for periodic trace sampling for real-time generation of segments of call stack trees
US6349406B1 (en) * 1997-12-12 2002-02-19 International Business Machines Coporation Method and system for compensating for instrumentation overhead in trace data by computing average minimum event times
US20030101336A1 (en) * 2001-11-28 2003-05-29 Sun Microsystems, Inc. Technique for associating instructions with execution events
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
US7640539B2 (en) * 2005-04-12 2009-12-29 International Business Machines Corporation Instruction profiling using multiple metrics
US8301868B2 (en) * 2005-09-23 2012-10-30 Intel Corporation System to profile and optimize user software in a managed run-time environment
US7721076B2 (en) * 2006-12-18 2010-05-18 Intel Corporation Tracking an oldest processor event using information stored in a register and queue entry
US7962314B2 (en) 2007-12-18 2011-06-14 Global Foundries Inc. Mechanism for profiling program software running on a processor
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
US9720744B2 (en) * 2011-12-28 2017-08-01 Intel Corporation Performance monitoring of shared processing resources
US20140229715A1 (en) * 2011-12-29 2014-08-14 Laura A. Knauth Apparatus and method for providing eventing ip and source data address in a statistical sampling infrastructure
US9766999B2 (en) 2014-05-30 2017-09-19 Intel Corporation Monitoring performance of a processing device to manage non-precise events
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
US9626274B2 (en) * 2014-12-23 2017-04-18 Intel Corporation Instruction and logic for tracking access to monitored regions

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101427223A (zh) * 2005-06-01 2009-05-06 英特尔公司 用于基于关键路径的分析的性能监视体系结构的增强
CN101976218A (zh) * 2005-06-01 2011-02-16 英特尔公司 用于基于关键路径的分析的性能监视体系结构的增强
CN103154908A (zh) * 2010-07-28 2013-06-12 英特尔公司 用于事务存储器的最后分支记录指示符
CN104246692A (zh) * 2012-03-30 2014-12-24 英特尔公司 用于实时指令跟踪的系统和方法
CN104969144A (zh) * 2013-03-15 2015-10-07 起元技术有限责任公司 对程序执行的记录

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Demand-driven software race detection using hardware performance counters;Joseph L. Greathouse等;2011 38th Annual International Symposium on Computer Architecture (ISCA);全文 *
二进制代码覆盖率评估系统的设计与实现;姚伟平;王震宇;刘建林;窦增杰;;计算机工程与设计(第24期);全文 *
基于性能计数器的攻击检测,防御与分析;袁立威;中国优秀硕士学位论文全文数据库 信息科技辑;全文 *

Also Published As

Publication number Publication date
US20190155540A1 (en) 2019-05-23
DE112017004837T5 (de) 2019-06-19
WO2018063550A1 (en) 2018-04-05
US20180088861A1 (en) 2018-03-29
CN109690497A (zh) 2019-04-26
US10969995B2 (en) 2021-04-06
US10140056B2 (en) 2018-11-27

Similar Documents

Publication Publication Date Title
CN109690497B (zh) 用于通过输入参数来区分函数性能的系统和方法
TWI724083B (zh) 用於使用可重載的效能計數器監控處理器之效能的處理器、方法及系統晶片
US9696997B2 (en) Real time instruction trace processors, methods, and systems
CN108205433B (zh) 用来加速稀疏矩阵乘密集向量以及稀疏向量乘密集向量乘法的存储器到存储器指令
US11755442B2 (en) Apparatus and method for multithreading-aware performance monitoring events
US9465680B1 (en) Method and apparatus for processor performance monitoring
CN106293626B (zh) 持久性提交处理器、方法、装置、制品和电子设备
US10365988B2 (en) Monitoring performance of a processing device to manage non-precise events
US20210208990A1 (en) Apparatus and method for generating performance monitoring metrics
US9116719B2 (en) Partial commits in dynamic binary translation based systems
EP4254197A1 (en) Control register set to facilitate processor event based sampling
EP4198741A1 (en) System, method and apparatus for high level microarchitecture event performance monitoring using fixed counters
CN114661350A (zh) 用于并发地将多个pmon计数存储在单个寄存器中的设备、系统和方法
US20220100626A1 (en) Monitoring performance cost of events
US10824496B2 (en) Apparatus and method for vectored machine check bank reporting
US20230185695A1 (en) Processor trace with suppression of periodic timing packets for low density trace sections

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