CN116302868A - 使用固定计数器的高级别微体系结构事件性能监测的系统、方法和装置 - Google Patents

使用固定计数器的高级别微体系结构事件性能监测的系统、方法和装置 Download PDF

Info

Publication number
CN116302868A
CN116302868A CN202211482313.6A CN202211482313A CN116302868A CN 116302868 A CN116302868 A CN 116302868A CN 202211482313 A CN202211482313 A CN 202211482313A CN 116302868 A CN116302868 A CN 116302868A
Authority
CN
China
Prior art keywords
fixed
count
event
counters
events
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.)
Pending
Application number
CN202211482313.6A
Other languages
English (en)
Inventor
C·罗莫
J·库姆斯
B·斯特朗
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 CN116302868A publication Critical patent/CN116302868A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • 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/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • G06F11/3072Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves data filtering, e.g. pattern matching, time or event triggered, adaptive or policy-based reporting
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Mathematical Physics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Advance Control (AREA)

Abstract

本公开涉及使用固定计数器进行高级微体系结构事件性能监测的系统、方法和装置。在一个实施例中,一种装置包括:至少一个核心,用于执行指令;以及多个固定计数器,耦合到至少一个核心,该多个固定计数器用于在至少一个核心执行期间对事件进行计数,多个固定计数器中的至少一些用于对层次体系性能监测组织的最高级别的事件信息进行计数。描述并要求保护其他实施例。

Description

使用固定计数器的高级别微体系结构事件性能监测的系统、 方法和装置
背景技术
现代处理器通常包括性能监测能力,使有技术能力的用户能够执行调试和代码分析功能。在一些处理器中,提供了自上而下的微体系结构分析(top-downmicroarchitecture analysis,TMA)方法论来用于标识软件性能问题。这种TMA方法论是基于事件的指标的层次体系组织,该指标标识应用中占主导地位的性能瓶颈。其目的在于平均显示(一个或多个)处理器管线在运行应用时的利用程度。然而,访问该信息的当前机制可受到缺乏精度和/或资源影响的影响。
附图说明
图1是根据实施例的处理器的框图。
图2是根据实施例的方法的流程图。
图3A和图3B图示更具体的示例性有序核心体系结构的框图。
图4是根据本发明的实施例的处理器的框图。
图5是根据本发明的实施例的第一更具体示例性系统的框图。
图6是根据本发明的实施例的SoC的框图。
图7是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
在各种实施例中,处理器可以配置有性能监测单元的多个专用或固定计数器,以便能够对多级性能监测方法论的最高层次体系级别的原始事件进行计数(本文也称为“性能监测布置”、“性能监测组织”和“性能监测系统”)。虽然实施例适用于任何性能监测布置,但本文描述的特定实现方式是用于
Figure BDA0003962212140000012
Figure BDA0003962212140000011
自上而下微体系结构分析(Top-DownMicroarchitecture Analysis,TMA)方法论。在该方法论中,可以有多个级别的性能指标,这些指标可以从层次体系的最高级别监测到层次体系的最低级别。在不同情况下,可能会有2个、3个或更多个级别的性能指标。
在一个或多个示例中,可以提供固定计数器集合,每个计数器都与特定的最高级别性能指标相关联,根据上述TMA方法论,该指标是TMA级别1(level 1,L1)。通过这种方式,可以避免对于分配可编程计数器来计数此类指标信息或通过性能指标模型特定的寄存器(model specific register,MSR)获得信息的需要。
通过这些计数器,实现了一种低成本的机制来迁移宝贵的可编程计数器。这些固定计数器通过允许将特定的最高级别事件与可编程事件(其可以为较低级别的事件编程)一起收集来减少复用。这些固定计数器非常精确且访问起来很快,因为它们提供原始计数并且其大小可能引发在相对长的持续时间(例如,大约400秒)内清除溢出(overflow)。
在一个处理器实现方式中,可以假设在每个时钟周期中针对每个核心,有N个(例如,4个)管线时间槽可用。某些性能监测单元(performance monitoring unit,PMU)事件可用于衡量这些管线时间槽的利用程度。在此实现方式中,应用的运行时期间可用的每个管线时间槽可以基于执行期间这些PMU事件的发生情况被分类为四个L1类别之一(前端约束、不良推测、后端约束、引退)。在其他情况下,可保持更多或不同的L1指标。在一些情况下,这四个L1类别中的一个可能无法保持在固定计数器中,但该L1性能指标可以从其他L1性能指标中导出,如下文进一步描述的。
与为性能监测布置的最高层次体系级别提供固定计数器的实施例不同,其他捕捉TMA数据的手段具有缺点。在没有实施例并且具有数量有限的可编程计数器的情况下,用户会跨工作负荷的多次运行复用事件,以获取完整的简档并收集在层次体系的最低级别的事件。TMA指标总共可以包括数十个事件。这种复用的过程可在简档中引入问题(需要更多时间来收集)并且有时还会生成不一致的数据,因为工作负荷的每次运行的行为可能有所不同(例如,基于系统上运行的其他内容、中断率等)。实施例可能会减少甚至避免对复用的需求,从而提高简档的保真度。
一些处理器可提供性能指标MSR(例如,称为PERF_METRICS MSR),其可以提供一种在不使用可编程计数器的情况下收集TMA L1数据的手段。然而,该计数器只能提供百分比信息,例如,落在TMA L1类别中的每个类别中的时间槽的百分比。但这个PERF_METRICS接口有缺点。首先,对PERF_METRICS MSR的访问速度比访问PMU计数器慢得多。虽然读取可编程PMU计数器的速度可以快至10个周期(例如,经由读取性能监测器计数器指令(readperformance monitor counter,RDPMC)使用读取操作),但读取PERF_METRICS MSR大约需要100个周期。除此之外,获得百分比信息有额外的等待时间,因为处理器根据L1指标收集原始计数,然后将每个计数除以时间槽总数,以便计算为此MSR返回的百分比。此外,由于更多的时间槽由构成每个L1指标的百分比的8比特中的每个比特表示,因此L1指标的精度随着时间的推移而下降。为了使此误差的累积最小化,某些工具每次消耗该值时都会清除PERF_METRICS MSR。这个过程可能需要大约500个周期,并且通常可能每毫秒发生一次,从而增加了收集简档的开销。
在实施例中,处理器标识信息可被访问,以表示是否存在固定的性能监测计数器,包括本文描述的固定计数器。在特定示例中,软件或其他实体可以经由CPUID指令发现本文描述的固定计数器:
CPUID.0xA.ECX[7:4]=0b1111(固定计数器比特图)。
在一个或多个示例中,四个固定计数器的集合可被提供来对4个TMA L1指标进行计数。当然,在其他示例中可以提供更多或更少的此类固定计数器,以便对额外的或不同的TMA级别1指标进行计数。并且在其他示例中,可以为其他级别的TMA指标和/或其他类型的指标提供额外的固定计数器。在一个实施例中,可以将以下固定计数器分配给TMA L1性能指标:
·IA32_FIXED_CTR4-TOPDOWN_BAD_SPECULATION(MSR 0x30D)
·IA32_FIXED_CTR5-TOPDOWN_FE_BOUND(MSR 0x30E)
·IA32_FIXED_CTR6-TOPDOWN_RETIRING(MSR 0x30F)
·IA32_FIXED_CTR7-TOPDOWN_BE_BOUND(MSR 0x310)
注意,如果任何单个计数器不被支持,则可以根据SLOTS-SUM(FixedCtr[7:4])计算缺失的指标,其中SLOTS可以从另一个固定计数器或经由其他手段获得。在示例处理器中,可能有额外的固定计数器来计数额外事件,额外事件包括引退指令、未停止的核心时钟、未停止的时间戳计数器时钟、时间槽等。
在一个或多个示例中,这些计数器是响应于来自给定性能分析软件或其他实体的请求而被启用和配置的。响应于此类请求,一个或多个配置寄存器中的字段可被置位。该(一个或多个)配置寄存器可包括用于配置这些固定计数器的各种比特字段。例如,比特字段可以启用计数器、其溢出行为、用户/操作系统(operating system,OS)模式等。在一个或多个示例中,为了启用给定的固定计数器,全局性能控制寄存器的启用指示符(例如,PERF_GLOBAL_CTRL)可被置位。此外,全局性能状态寄存器的溢出指示符(例如,PER_GLOBAL_STATUS)可被置位来指示溢出行为。此外,全局性能使用中寄存器的使用中指示符(例如,PERF_GLOBAL_INUSE)可被置位来指示计数器处于活动状态。此外,基于处理器事件的采样启用寄存器的启用指示符(例如,PEBS_ENABLE)可被置位。
除了配置固定计数器外,还可以写入固定计数器配置寄存器(例如,FIXED_CTR_CTRL)。在实施例中,可以在此寄存器中为每个固定计数器提供配置字段。配置字段可以存储信息,以标识计数器是否针对给定的特权级别(例如,用户或操作系统,或两者都有)被启用,以及是否响应于计数器的溢出而引发性能监测中断(performance monitoringinterrupt,PMI)。
在一些情况下,用户可能希望确定每个L1类别中时间槽的百分比。为了确定这个百分比,时间槽总数可以通过各种手段中的一个收集。在一个示例中,TOPDOWN.SLOTS事件可以经由固定计数器或可编程事件(例如,此事件可能是:事件ID 0xA4,umask 0x01)获得。在固定宽度微体系结构的示例中,总时间槽可以通过收集总周期并乘以每个周期的时间槽来计算。注意,每个周期的时间槽可能因微体系结构而异,但如果宽度是固定的,则宽度在ID寄存器中枚举,例如,CPUID.0xA.EDX[19:16](否则为0,在这种情况下可以使用上述技术)。
在又另一种情况下,周期可以经由固定计数器或可编程CPU_CLK_UNHALTED.CORE事件(例如,此事件可能是:事件ID 0x3c,umask 0x00)收集。
现在参考图1,示出的是根据实施例的处理器的部分的框图。注意,在图1中,处理器100处于高级别,并图示出诸如处理器核心之类的处理引擎的一般管线体系结构。应理解,一个或多个核心中可能存在多个管线。在图1所示的高级别上,还存在性能监测器180,详情如下。
在图1中,分支预测器110可以基于分支方向的历史来预测分支被采用还是不被采用,并将此信息提供给指令缓存120。指令缓存120耦合到指令取得电路130。指令取得电路130可以从指令缓存120或另一个存储装置取得指令。进而,取得的指令(此时可能以宏指令的形式)被提供给解码器140。在实施例中,解码器140可以将每个宏指令解码为一个或多个微操作。
仍然参考图1,解码器140向寄存器重命名器150提供经解码的指令,如图所示,寄存器重命名器150也可以执行分配和调度操作,以调度传入指令以供在执行电路160中执行。执行电路160可包括多个执行单元,诸如整数和浮点单元,以对传入源操作对象执行操作。结果经由寄存器堆170的写回路径提供。
如图1中进一步所示,性能监测器180与处理器100的前端和后端耦合。应理解,在一个或多个实现方式中,性能监测器180可以是包括各种存储装置(例如,寄存器或其他计数器)的分布式硬件电路,以在控制电路185的控制下执行对各种事件或其他操作的计数。如图所示,控制电路可包括(或耦合到)寄存器集合188,寄存器集合188可包括可用于启用和配置本文所描述的固定计数器的配置寄存器、控制寄存器和状态寄存器。
在图1中所示的高级别上,性能监测器180包括固定计数器的集合1820-m和可编程计数器的集合184n-p。根据实施例,固定计数器182中的至少一些可被提供以保持本文所描述的TMA级别1计数。虽然实施例在这方面不受限制,但在一个或多个示例中,可能有8个固定计数器,包括4个TMA级别1计数器和4个额外的计数器,这些计数器可以对诸如如上所描述的其他事件进行计数。在一个或多个实施例中,每个核心可以提供单独的固定计数器和可编程计数器集合。虽然在图1中,各种计数器通常显示在性能监测器中,但在一些实现方式中,计数器可能位于总线集群单元或其他位置。
在不同的示例中,可能有不同数量的可编程计数器。在一个示例中,可能有8个可编程计数器。根据实施例,由于为TMA级别1指标提供了固定计数器,因此无需为这些指标分配任何可编程计数器184,从而减轻了对这些可编程计数器的压力。应理解,虽然在图1的实施例中以该高级别示出,但是许多变型和替换方案是可能的。
现在参考图2,示出了根据实施例的方法的流程图。更具体地,如图2所示,方法200是一种控制性能监测器的一个或多个固定和可编程计数器的操作的方法。在实施例中,方法200可以至少部分通过硬件电路系统执行,诸如性能监测器的控制电路185。在其他情况下,方法200可以通过硬件电路系统结合固件和/或软件来执行。
如图2中所示,方法200从启用和配置一个或多个TMA固定计数器开始(框210)。在实施例中,这些计数器可以响应于到一个或多个配置寄存器的写入而被启用。通过这种方式,可以为给定的操作模式启用和配置各个计数器。例如,在一个用例中,性能监测工具可发出引起配置寄存器写入的请求。
接下来在框220处,一个或多个可编程计数器可以为选择的一个或多个事件启用和配置。例如,额外的配置寄存器写入可被执行,以使可编程计数器集合中的不同计数器与给定事件相关联。然后在框225处,固定计数器和可编程计数器都可以全局启用。
此时,性能监测单元的各种计数器被配置用于正常操作。因此,给定的应用或其他感兴趣的程序可开始执行。在此类工作负荷执行期间,在框230处,各种计数器可基于此工作负荷执行来更新。例如,在处理器执行期间发生的、并且与特定的自上而下的级别1指标相关联的事件可引起相关联固定计数器的更新。
在工作负荷执行期间,可以确定是否有任何计数器溢出(菱形框240)。如果是,控制传递到框260,在框260处至少可以读取此计数器,可能还可以读取全部计数器,并将其值存储在存储装置中,诸如性能日志文件(其可存储在系统存储器中,例如,动态随机访问存储器(dynamic random access memory,DRAM))。
接下来控制传递到菱形框270,以确定应用的执行(或用于性能监测的所需数量的应用执行)是否完成。如果否,则控制传递回到框230。否则,当此执行已完成后,控制传递到框280,在框280处计数值可被提供给请求方。例如,日志文件可以以用户可读的形式提供,以标识各种固定计数器和可编程计数器以及这些计数器中的每个计数器中存在的相对应的计数值或其他信息。
仍然参考图2,如果替代地在菱形框240处没有确定任何计数器溢出,控制可传递到框250,在框250处可以确定给定计数器是否已达到停止点。例如,一些计数器可被编程成用于计数,直到达到给定值。发生此类情况后,如上文所讨论的,控制传递到框260。应理解,虽然在图2的实施例中以该高级别示出,但是许多变型和替换方案是可能的。例如,在其他情况下,固定计数器中的一个或多个可以响应于读取性能监测器计数器指令(例如,RDPMC)而读取,该指令可以在少量周期(例如,10个)中执行。
实施例可以在具有不同管线配置的许多不同处理器类型中实现。图3A是图示根据本发明的各实施例的示例性有序管线和示例性的寄存器重命名的乱序发出/执行管线的框图。图3B是示出根据本发明的各实施例的要包括在处理器中的有序体系结构核心的示例性实施例和示例性的寄存器重命名的乱序发出/执行体系结构核心的框图。图3A和图3B中的实线框图示有序管线和有序核心,而虚线框的可选增加图示寄存器重命名的、乱序发出/执行管线和核心。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图3A中,处理器管线300包括取得(fetch)级302、长度解码阶段304、解码阶段306、分配阶段308、重命名阶段310、调度(也被称为调遣或发出)级312、寄存器读取/存储器读取阶段314、执行阶段316、写回/存储器写入阶段318、异常处置阶段322和提交阶段324。注意,如本文所述,在给定实施例中,核心可包括多个处理管线(诸如管线300)。并且对于实施例,包括TMA L1事件的微体系结构事件可至少部分地使用PMU的固定计数器来计数,如本文所述。
图3B示出处理器核心390,该处理器核心390包括前端单元330,该前端单元330耦合到执行引擎单元350,并且前端单元330和执行引擎单元350两者都耦合到存储器单元370。核心390可以是精简指令集计算(reduced instruciton set computing,RISC)核心、复杂指令集计算(complex instruction set computing,CISC)核心、超长指令字(verylong instruction word,VLIW)核心、或混合或替代性核心类型。作为又一选项,核心390可以是专用核心,诸如例如,网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(general purpose computing graphics processing unit,GPGPU)核心、图形核心,等等。
前端单元330包括分支预测单元332,该分支预测单元332耦合到指令缓存单元334,该指令缓存单元334耦合到指令转译后备缓冲器(translation loodaside buffer,TLB)336,该指令转译后备缓冲器336耦合到指令取得单元338,该指令取得单元338耦合到解码单元340。解码单元340(或解码器)可对指令解码,并且生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元340可使用各种不同的机制来实现。合适机制的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(programmable logicarray,PLA)、微代码只读存储器(read only memory,ROM)等。在一个实施例中,核心390包括存储用于某些宏指令的微代码的微代码ROM或其他介质(例如,在解码单元340中,或以其他方式在前端单元330内)。解码单元340耦合到执行引擎单元350中的重命名/分配器单元352。
执行引擎单元350包括重命名/分配器单元352,该重命名/分配器单元352耦合到引退单元354和一个或多个调度器单元的集合356。(一个或多个)调度器单元356表示任何数量的不同调度器,包括预留站、中央指令窗等。(一个或多个)调度器单元356耦合到(一个或多个)物理寄存器堆单元358。(一个或多个)物理寄存器堆单元358中的每一个物理寄存器堆单元表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一种或多种不同的数据类型,诸如,标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点,状态(例如,作为要执行的下一个指令的地址的指令指针)等等。在一个实施例中,(一个或多个)物理寄存器堆单元358包括向量寄存器单元、写入掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供体系结构向量寄存器、向量掩码寄存器和通用寄存器。(一个或多个)物理寄存器堆单元358由引退单元354重叠,以图示可实现寄存器重命名和乱序执行的各种方式(例如,使用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器堆;使用(一个或多个)未来的堆、(一个或多个)历史缓冲器、(一个或多个)引退寄存器堆;使用寄存器图谱和寄存器池,等等)。引退单元354和(一个或多个)物理寄存器堆单元358耦合到(一个或多个)执行集群360。(一个或多个)执行集群360包括一个或多个执行单元的集合362以及一个或多个存储器访问单元的集合364。执行单元362可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可包括仅一个执行单元或全都执行所有功能的多个执行单元。(一个或多个)调度器单元356、(一个或多个)物理寄存器堆单元358和(一个或多个)执行集群360示出为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的管线(例如,标量整数管线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点管线,和/或各自具有其自身的调度器单元、(一个或多个)物理寄存器堆单元和/或执行集群的存储器访问管线——并且在分开的存储器访问管线的情况下,实现其中仅该管线的执行集群具有(一个或多个)存储器访问单元364的某些实施例)。还应当理解,在使用分开的管线的情况下,这些管线中的一个或多个可以是乱序发出/执行,并且其余管线可以是有序的。
存储器访问单元的集合364耦合到存储器单元370,该存储器单元370包括数据TLB单元372,该数据TLB单元372耦合到数据缓存单元374,该数据缓存单元374耦合到第二级(L2)缓存单元376。在一个示例性实施例中,存储器访问单元364可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合到存储器单元370中的数据TLB单元372。指令缓存单元334还耦合到存储器单元370中的第二级(L2)缓存单元376。L2缓存单元376耦合到一个或多个其他级别的缓存,并最终耦合到主存储器。
作为示例,示例性寄存器重命名的乱序发出/执行核心体系结构可如下所述地实现管线300:1)指令取得338执行取得阶段302和长度解码阶段304;2)解码单元340执行解码阶段306;3)重命名/分配器单元352执行分配阶段308和重命名阶段310;4)(一个或多个)调度器单元356执行调度阶段312;5)(一个或多个)物理寄存器堆单元358和存储器单元370执行寄存器读取/存储器读取阶段314;执行集群360执行执行阶段316;6)存储器单元370和(一个或多个)物理寄存器堆单元358执行写回/存储器写入阶段318;7)各单元可牵涉到异常处置阶段322;以及8)引退单元354和(一个或多个)物理寄存器堆单元358执行提交阶段324。
核心390可支持一个或多个指令集(例如,x86指令集(具有已与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集(具有诸如NEON的可选的附加扩展)),其中包括本文中描述的(一个或多个)指令。在一个实施例中,核心390包括用于支持紧缩数据指令集扩展(例如,AVX1、AVX2)的逻辑,由此允许使用紧缩数据来执行由许多多媒体应用使用的操作。
应当理解,核心可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核心为物理核心正在同时多线程化的线程中的每一个线程提供逻辑核心)、或其组合(例如,时分取得和解码以及此后的诸如
Figure BDA0003962212140000101
超线程化技术中的同时多线程化)。
尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序体系结构中使用寄存器重命名。尽管所图示的处理器的实施例还包括分开的指令和数据缓存单元334/374以及共享的L2缓存单元376,但是替代实施例可以具有用于指令和数据两者的单个内部缓存,诸如例如,第一级(L1)内部缓存或多个级别的内部缓存。在一些实施例中,该系统可包括内部缓存和在核心和/或处理器外部的外部缓存的组合。或者,所有缓存都可以在核心和/或处理器的外部。
图4是根据本发明的实施例的可具有多于一个的核心、可具有集成存储器控制器、以及可具有集成图形器件的处理器400的框图。图4中的实线框图示具有单个核心402A、系统代理410、一个或多个总线控制器单元的集合416的处理器400,而虚线框的可选增加图示具有多个核心402A-N、系统代理单元410中的一个或多个集成存储器控制器单元的集合414以及专用逻辑408的替代处理器400。处理器400可以包括PMU或具有如本文所述的固定计数器的其他性能监测电路系统,以保持包括TMA L1事件的微体系结构事件的计数。
因此,处理器400的不同实现可包括:1)CPU,其中专用逻辑408是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核心),并且核心402A-N是一个或多个通用核心(例如,通用有序核心、通用乱序核心、这两者的组合);2)协处理器,其中核心402A-N是旨在主要用于图形和/或科学(吞吐量)的大量专用核心;以及3)协处理器,其中核心402A-N是大量通用有序核心。因此,处理器400可以是通用处理器、协处理器或专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(general purpose graphics processingunit,通用图形处理单元)、高吞吐量的集成众核(many integrated core,MIC)协处理器(包括30个或更多核心)、嵌入式处理器,等等。该处理器可以被实现在一个或多个芯片上。处理器400可以是一个或多个基板的一部分,和/或可使用多种工艺技术(诸如例如,BiCMOS、CMOS、或NMOS)中的任何技术被实现在一个或多个基板上。
存储器层次体系包括核心内的一个或多个级别的缓存单元404A-N、一个或多个共享缓存单元的集合406、以及耦合到集成存储器控制器单元的集合414的外部存储器(未示出)。共享缓存单元的集合406可包括一个或多个中间级别的缓存,诸如,第二级(L2)、第三级(L3)、第四级(L4)或其他级别的缓存、最后一级缓存(last level cache,LLC)和/或以上各项的组合。虽然在一个实施例中,基于环的互连单元412将专用逻辑408、共享缓存单元的集合406以及系统代理单元410/(一个或多个)集成存储器控制器单元414互连,但是替代实施例可使用任何数量的公知技术来互连此类单元。在一个实施例中,在一个或多个缓存单元406与核心402A-N之间维持一致性。
系统单元410包括协调和操作核心402A-N的那些组件。系统代理单元410可包括例如功率控制单元(power control unit,PCU)和显示单元。PCU可以是对核心402A-N以及专用逻辑408的功率状态进行调节所需的逻辑和组件,或可包括这些逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核心402A-N在体系结构指令集方面可以是同构的或异构的;即,核心402A-N中的两个或更多个核心可能能够执行相同的指令集,而其他核心可能能够执行该指令集的仅仅子集或不同的指令集。
图5-6是示例性计算机体系结构的框图。本领域中已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(digital signal processor,DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。
现在参见图5,所示出的是根据本发明的实施例的第一更具体的示例性系统500的框图。如图5中所示,多处理器系统500是点到点互连系统,并且包括经由点到点互连550耦合的第一处理器570和第二处理器580。处理器570和580中的每一个都可以是处理器的某一版本。
处理器570和580示出为分别包括集成存储器控制器(integrated memorycontroller,IMC)单元572和582。处理器570还包括作为其总线控制器单元的一部分的点到点(point-to-point,P-P)接口576和578;类似地,第二处理器580包括P-P接口586和588。处理器570、580可以经由使用点到点(P-P)接口电路578、588的P-P接口550来交换信息。如图5中所示,IMC 572和582将处理器耦合到相应的存储器,即存储器532和存储器534,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器570、580可各自经由使用点到点接口电路576、594、586、598的各个P-P接口552、554来与芯片组590交换信息。芯片组590可以可选地经由高性能接口539来与协处理器538交换信息。在一个实施例中,协处理器538是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。
共享缓存(未示出)可被包括在任一处理器中,或在这两个处理器的外部但经由P-P互连与这些处理器连接,使得如果处理器被置于低功率模式,则任一个或这两个处理器的本地缓存信息可被存储在共享缓存中。
芯片组590可以经由接口595耦合到第一总线516。在一个实施例中,第一总线516可以是外围组件互连(Peripheral Component Interconnect,PCI)总线或诸如PCI快速(PCI Express)总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图5中所示,各种I/O设备514可连同总线桥518一起耦合到第一总线516,该总线桥518将第一总线516耦合到第二总线520。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器515耦合到第一总线516。在一个实施例中,第二总线520可以是低引脚数(low pin count,LPC)总线。在一个实施例中,各种设备可耦合到第二总线520,这些设备包括例如键盘和/或鼠标522、通信设备527以及存储单元528,该存储单元528诸如可包括指令/代码和数据530的盘驱动器或者其他大容量存储设备。此外,音频I/O 524可以被耦合到第二总线520。注意,其他体系结构是可能的。例如,代替图5的点到点体系结构,系统可以实现多分支总线或其他此类体系结构。
现在参考图6,示出的是根据本发明的实施例的SoC 600的框图。虚线框是更先进的SoC上的可选的特征。在图6中,(一个或多个)互连单元602被耦合到:应用处理器610,其包括一个或多个核心的集合602A-N(包括组成缓存单元604A-N)的集合以及(一个或多个)共享缓存单元606;系统代理单元610;(一个或多个)总线控制器单元616;(一个或多个)集成存储器控制器单元614;一个或多个协处理器的集合620,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(static random access memory,SRAM)单元630;直接存储器访问(direct memory access,DMA)单元632;以及用于耦合到一个或多个外部显示器的显示单元640。在一个实施例中,(一个或多个)协处理器620包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器,等等。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或此类实现方式的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码(诸如,图6中图示的代码630)应用于输入指令,以执行本文中描述的功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有处理器的任何系统,该处理器诸如例如,数字信号处理器(DSP)、微控制器、专用集成电路(application specific integrated circuit,ASIC)或微处理器。
程序代码可以用高级的面向过程的编程语言或面向对象的编程语言来实现,以便与处理系统通信。如果需要,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定的编程语言的范围。在任何情况下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制造用于执行本文中所述的技术的逻辑。被称为“IP核心”的此类表示可以被存储在有形的机器可读介质上,并可被供应给各个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
此类机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非暂态、有形布置,其包括存储介质,诸如硬盘;任何其他类型的盘,包括软盘、光盘、致密盘只读存储器(compact disk read-only memory,CD-ROM)、可重写致密盘(compack diskrewritable,CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(dynamic random access memory,DRAM)和静态随机存取存储器(static randomaccess memory,SRAM)的随机存取存储器(random access memory,RAM)、可擦除可编程只读存储器(erasable programmable read-only memories,EPROM)、闪存、电可擦除可编程只读存储器(electrically erasable programmable read-only memory,EEPROM);相变存储器(phase change memory,PCM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括非暂态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(Hardware Description Language,HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。
在一些情况下,指令转换器可用于将指令从源指令集转换至目标指令集。例如,指令转换器可以将指令转译(例如,使用静态二进制转译、包括动态编译的动态二进制转译)、变形、仿真或以其他方式转换成要由核心处理的一个或多个其他指令。指令转换器可以用软件、硬件、固件、或其组合来实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图7是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所图示的实施例中,指令转换器是软件指令转换器,但替代地,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图7示出可使用x86编译器704来编译高级语言702形式的程序,以生成可由具有至少一个x86指令集核心的处理器716原生执行的x86二进制代码706。具有至少一个x86指令集核心的处理器716表示通过兼容地执行或以其他方式处理以下各项来执行与具有至少一个x86指令集核心的英特尔处理器基本相同的功能的任何处理器:1)英特尔x86指令集核心的指令集的实质部分,或2)目标为在具有至少一个x86指令集核心的英特尔处理器上运行以便取得与具有至少一个x86指令集核心的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器704表示可操作用于生成x86二进制代码706(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核心的处理器716上执行。类似地,图7示出可以使用替代性指令集编译器708来编译高级语言702形式的程序,以生成可以由没有至少一个x86指令集核心的处理器714(例如,具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核心的处理器)原生执行的替代性指令集二进制代码710。指令转换器712用于将x86二进制代码706转换成可以由没有x86指令集核心的处理器714原生执行的代码。该转换后的代码不大可能与替代性指令集二进制代码710相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作,并且由来自替代指令集的指令构成。因此,指令转换器712通过仿真、模拟或任何其他过程来表示允许没有x86指令集处理器或核心的处理器或其他电子设备执行x86二进制代码706的软件、固件、硬件或其组合。
以下示例涉及进一步的实施例。
在一个示例中,一种装置包括:至少一个核心,用于执行指令;以及多个固定计数器,耦合到至少一个核心,该多个固定计数器用于在至少一个核心执行期间对事件进行计数,多个固定计数器中的至少一些固定计数器用于对层次体系性能监测组织的最高级别的事件信息进行计数。
在示例中,多个固定计数器中的第一固定计数器被配置成用于对与前端约束条件相关联的第一事件进行计数。
在示例中,多个固定计数器中的第二固定计数器被配置成用于对与后端约束条件相关联的第二事件进行计数。
在示例中,多个固定计数器中的第三固定计数器被配置成用于对误推测事件进行计数。
在示例中,多个固定计数器中的第四固定计数器被配置成用于对引退事件进行计数。
在示例中,该装置进一步包括用于存储配置信息的配置寄存器,其中配置寄存器包括第一字段,用于存储在被置位时使第一固定计数器能够对第一事件进行计数的第一指示符。
在示例中,第一固定计数器用于对第一事件的原始数量进行计数。
在示例中,该装置进一步包括计算电路,用于至少部分基于第一事件的原始数量来确定发生第一事件期间的时间槽的百分比。
在示例中,该装置进一步包括多个可编程计数器。
在示例中,该装置进一步包括性能监测单元,耦合到至少一个核心,其中性能监测单元包括多个固定计数器和多个可编程计数器。
在另一示例中,一种方法包括:经由控制电路启用处理器的性能监测器单元的第一固定计数器以保持性能监测系统的最高层次体系级别的第一事件的计数;响应于在处理器上执行工作负荷期间发生的第一事件而更新第一固定计数器;以及读取第一固定计数器的值并将该值存储到存储装置中,该值包括执行工作负荷期间发生的第一事件的原始计数。
在示例中,该方法进一步包括启用第一固定计数器以保持与前端约束条件相关联的第一事件的计数。
在示例中,该方法进一步包括经由控制电路启用性能监测器单元的第二固定计数器以保持第二事件的计数,第二事件是性能监测系统的最高层次体系级别的事件。
在示例中,该方法进一步包括至少部分基于第一事件的计数来确定发生第一事件期间的时间槽的百分比。
在示例中,确定时间槽的百分比包括使用第一事件的计数和从性能监测器单元的另一个固定计数器获得的时间槽的计数来计算时间槽的百分比。
在示例中,启用第一固定计数器包括在至少一个配置寄存器的字段中置位指示符,该字段与第一固定计数器相关联。
在示例中,该方法进一步包括启用第一固定计数器以保持第一特权级别的第一事件的计数。
在另一示例中,一种计算机可读介质包括指令,指令用于执行如以上示例中的任一项所述的方法。
在进一步的示例中,包括数据的计算机可读介质由至少一个机器使用以制造至少一个集成电路来执行如以上示例中的任一项的方法。
在更进一步的示例中,一种设备包括用于执行如以上示例中的任一项的方法的装置。
在又另一个示例中,系统包括处理器和耦合到处理器的存储器。处理器可包括:用于取得指令并对指令解码的前端电路系统;用于执行和引退指令的后端电路系统;用于存储配置信息的至少一个配置寄存器;耦合到前端电路系统和后端电路系统的性能监测电路系统。性能监测电路系统可包括:多个固定计数器,用于对层次体系性能监测组织的最高级别的事件进行计数;多个可编程计数器,其中可编程计数器可编程用于对层次体系性能监测组织的低于最高级别的一个或多个级别的事件进行计数;以及控制电路,用于启用多个固定计数器中的一个或多个固定计数器和多个可编程计数器中的一个或多个可编程计数器,以响应于对至少一个配置寄存器的至少一个写入。
在示例中,性能监测电路系统用于响应于写入指令而在存储器中存储最高级别的第一事件的原始计数。
在示例中,多个固定计数器包括:第一固定计数器,用于对与前端电路系统的约束条件相关联的事件进行计数;第二固定计数器,用于对与后端电路系统的约束条件相关联的事件进行计数;第三固定计数器,用于对误推测事件进行计数;以及第四固定计数器,用于对引退事件进行计数。
应理解,以上示例的各种组合是可能的。
注意,术语“电路”和“电路系统”在本文中可互换地使用。如本文中所使用,这些术语以及术语“逻辑”用来单独地或以任何组合指代模拟电路系统、数字电路系统、硬连线电路系统、可编程电路系统、处理器电路系统、微控制器电路系统、硬件逻辑电路系统、状态机电路系统和/或任何其他类型的物理硬件组件。实施例可在许多不同类型的系统中使用。例如,在一个实施例中,可以将通信设备布置为用于执行本文中所描述的各种方法和技术。当然,本发明的范围不限于通信设备,并且相反,其他实施例可以涉及用于处理指令的其他类型的装置、或者一种或多种机器可读介质,该机器可读介质包括指令,响应于在计算设备上执行这些指令,这些指令使该设备执行本文中所描述的方法与技术中的一者或多者。
实施例可被实现在代码中,并且可被存储在非暂态存储介质上,该非暂态存储介质具有存储于其上的指令,这些指令可以被用于将系统编程为用于执行这些指令。实施例还可被实现在数据中,并且可被存储在非暂态存储介质上,该非暂态存储介质如果被至少一个机器使用则使得该至少一个机器制造至少一个集成电路以执行一个或多个操作。更进一步的实施例可以在包括信息的计算机可读存储介质中实现,该计算机可读存储介质当被制造在SoC或其他处理器中时将SoC或其他处理器配置为执行一个或多个操作。该存储介质可包括但不限于:任何类型的盘,包括软盘、光盘、固态驱动器(solid state drive,SSD)、致密盘只读存储器(compact disk read-only memory,CD-ROM)、致密盘可重写(compactdisk rewritable,CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(read-only memory,ROM)、诸如动态随机存取存储器(dynamic random access memory,DRAM)与静态随机存取存储器(static random access memory,SRAM)之类的随机存取存储器(random accessmemory,RAM)、可擦除可编程只读存储器(erasable programmable read-only memory,EPROM)、闪存、电可擦除可编程只读存储器(electrically erasable programmable read-only memory,EEPROM);磁卡或光卡;或适用于存储电子指令的任何其他类型的介质。
尽管已参考有限数量的实现方式描述了本公开,但是受益于本公开的本领域技术人员将从其中理解众多修改和变型。所附权利要求书旨在涵盖所有此类修改和变型。

Claims (24)

1.一种装置,包括:
至少一个核心,用于执行指令;以及
多个固定计数器,耦合到所述至少一个核心,所述多个固定计数器用于在所述至少一个核心执行期间对事件进行计数,所述多个固定计数器中的至少一些固定计数器用于对层次体系性能监测组织的最高级别的事件信息进行计数。
2.如权利要求1所述的装置,其特征在于,所述多个固定计数器中的第一固定计数器被配置成用于对与前端约束条件相关联的第一事件进行计数。
3.如权利要求2所述的装置,其特征在于,所述多个固定计数器中的第二固定计数器被配置成用于对与后端约束条件相关联的第二事件进行计数。
4.如权利要求3所述的装置,其特征在于,所述多个固定计数器中的第三固定计数器被配置成用于对误推测事件进行计数。
5.如权利要求4所述的装置,其特征在于,所述多个固定计数器中的第四固定计数器被配置成用于对引退事件进行计数。
6.如权利要求2所述的装置,进一步包括用于存储配置信息的配置寄存器,其中所述配置寄存器包括第一字段,用于存储在被置位时使所述第一固定计数器能够对所述第一事件进行计数的第一指示符。
7.如权利要求2所述的装置,其特征在于,所述第一固定计数器用于对所述第一事件的原始数量进行计数。
8.如权利要求7所述的装置,进一步包括计算电路,用于至少部分基于所述第一事件的所述原始数量来确定发生所述第一事件期间的时间槽的百分比。
9.如权利要求1-8中的任一项所述的装置,进一步包括多个可编程计数器。
10.如权利要求9所述的装置,进一步包括性能监测单元,耦合到所述至少一个核心,其中,所述性能监测单元包括所述多个固定计数器和所述多个可编程计数器。
11.一种方法,包括:
经由控制电路启用处理器的性能监测器单元的第一固定计数器以保持第一事件的计数,所述第一事件是性能监测系统的最高层次体系级别的事件;
响应于在所述处理器上执行工作负荷期间发生所述第一事件而更新所述第一固定计数器;以及
读取所述第一固定计数器的值并将所述值存储到存储装置中,所述值包括执行所述工作负荷期间发生的第一事件的原始计数。
12.如权利要求11所述的方法,进一步包括启用所述第一固定计数器以保持与前端约束条件相关联的第一事件的计数。
13.如权利要求11所述的方法,进一步包括经由所述控制电路启用所述性能监测器单元的第二固定计数器以保持第二事件的计数,所述第二事件是所述性能监测系统的最高层次体系级别的事件。
14.如权利要求11所述的方法,进一步包括至少部分基于第一事件的计数来确定发生所述第一事件期间的时间槽的百分比。
15.如权利要求14所述的方法,其特征在于,确定时间槽的所述百分比包括:使用第一事件的所述计数和从所述性能监测器单元的另一个固定计数器获得的时间槽的计数来计算时间槽的所述百分比。
16.如权利要求11所述的方法,其特征在于,启用所述第一固定计数器包括:在至少一个配置寄存器的字段中置位指示符,所述字段与所述第一固定计数器相关联。
17.如权利要求11所述的方法,进一步包括启用所述第一固定计数器以保持第一特权级别的第一事件的计数。
18.一种计算机程序产品,包括指令,所述指令当由处理器执行时,使所述处理器执行如权利要求11-17中任一项所述的方法。
19.一种系统,包括:
处理器,所述处理器包括:
用于取得指令并对指令解码的前端电路系统;
用于执行和引退所述指令的后端电路系统;
用于存储配置信息的至少一个配置寄存器;
性能监测电路系统,耦合到所述前端电路系统和所述后端电路系统,所述性能监测电路系统包括:
多个固定计数器,用于对层次体系性能监测组织的最高级别的事件进行计数;
多个可编程计数器,其中,所述可编程计数器可编程用于对层次体系性能监测组织的低于所述最高级别的一个或多个级别的事件进行计数;以及
控制电路,用于启用所述多个固定计数器中的一个或多个固定计数器和所述多个可编程计数器中的一个或多个可编程计数器,以响应于对所述至少一个配置寄存器的至少一个写入;以及
存储器,耦合到所述处理器。
20.如权利要求19所述的系统,其特征在于,所述性能监测电路系统用于响应于写入指令而在所述存储器中存储所述最高级别的第一事件的原始计数。
21.如权利要求19-20中的任一项所述的系统,其特征在于,所述多个固定计数器包括:
第一固定计数器,用于对与所述前端电路系统的约束条件相关联的事件进行计数;
第二固定计数器,用于对与所述后端电路系统的约束条件相关联的事件进行计数;
第三固定计数器,用于对误推测事件进行计数;以及
第四固定计数器,用于对引退事件进行计数。
22.一种设备,包括:
用于启用性能监测器装置的第一固定计数器装置以保持第一事件的计数的装置,所述第一事件是性能监测系统的最高层次体系级别的事件;
用于响应于执行工作负荷期间发生所述第一事件而更新所述第一固定计数器装置的装置;以及
用于读取所述第一固定计数器装置的值并将所述值存储到存储装置中的装置,所述值包括执行所述工作负荷期间发生的第一事件的原始计数。
23.如权利要求22所述的设备,进一步包括用于启用所述第一固定计数器装置以保持与前端约束条件相关联的第一事件的计数的装置。
24.如权利要求22所述的设备,进一步包括用于启用所述性能监测器装置的第二固定计数器装置以保持第二事件的计数的装置,所述第二事件是所述性能监测系统的最高层次体系级别的事件。
CN202211482313.6A 2021-12-20 2022-11-24 使用固定计数器的高级别微体系结构事件性能监测的系统、方法和装置 Pending CN116302868A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/556,751 2021-12-20
US17/556,751 US20230195593A1 (en) 2021-12-20 2021-12-20 System, Method And Apparatus For High Level Microarchitecture Event Performance Monitoring Using Fixed Counters

Publications (1)

Publication Number Publication Date
CN116302868A true CN116302868A (zh) 2023-06-23

Family

ID=84360899

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211482313.6A Pending CN116302868A (zh) 2021-12-20 2022-11-24 使用固定计数器的高级别微体系结构事件性能监测的系统、方法和装置

Country Status (3)

Country Link
US (1) US20230195593A1 (zh)
EP (1) EP4198741A1 (zh)
CN (1) CN116302868A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117472721A (zh) * 2023-12-28 2024-01-30 北京微核芯科技有限公司 事件统计方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10997048B2 (en) * 2016-12-30 2021-05-04 Intel Corporation Apparatus and method for multithreading-aware performance monitoring events

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117472721A (zh) * 2023-12-28 2024-01-30 北京微核芯科技有限公司 事件统计方法及装置
CN117472721B (zh) * 2023-12-28 2024-03-12 北京微核芯科技有限公司 事件统计方法及装置

Also Published As

Publication number Publication date
EP4198741A1 (en) 2023-06-21
US20230195593A1 (en) 2023-06-22

Similar Documents

Publication Publication Date Title
US10061588B2 (en) Tracking operand liveness information in a computer system and performing function based on the liveness information
KR101594090B1 (ko) 공유 메모리에 대한 액세스들의 동기화를 완화하기 위한 프로세서들, 방법들 및 시스템들
US9286072B2 (en) Using register last use infomation to perform decode-time computer instruction optimization
US11755442B2 (en) Apparatus and method for multithreading-aware performance monitoring events
CN106293626B (zh) 持久性提交处理器、方法、装置、制品和电子设备
CN108027734B (zh) 空指令的动态生成
US9465680B1 (en) Method and apparatus for processor performance monitoring
CN111752616A (zh) 用于符号存储地址生成的系统、装置和方法
US10235177B2 (en) Register reclamation
US11048516B2 (en) Systems, methods, and apparatuses for last branch record support compatible with binary translation and speculative execution using an architectural bit array and a write bit array
US20140189330A1 (en) Optional branches
US11182298B2 (en) System, apparatus and method for dynamic profiling in a processor
CN112241288A (zh) 在硬件中检测条件分支的动态控制流重汇聚点
US20220413860A1 (en) System, Apparatus And Methods For Minimum Serialization In Response To Non-Serializing Register Write Instruction
EP4198741A1 (en) System, method and apparatus for high level microarchitecture event performance monitoring using fixed counters
US20230305742A1 (en) Precise longitudinal monitoring of memory operations
US9116719B2 (en) Partial commits in dynamic binary translation based systems
US20180165200A1 (en) System, apparatus and method for dynamic profiling in a processor
CN117043612A (zh) 用于精确的最后分支记录事件录志的方法、系统和装置
CN114675881A (zh) 优化部分标志更新指令的方法、系统和装置
CN112148106A (zh) 用于处理器的混合预留站的系统、装置和方法
US20230315453A1 (en) Forward conditional branch event for profile-guided-optimization (pgo)
US20230195456A1 (en) System, apparatus and method for throttling fusion of micro-operations in a processor
Gong Hint-Assisted Scheduling on Modern GPUs
CN115858022A (zh) 集群化解码管线的可缩放切换点控制电路系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication