CN109032609A - 用于实现页级自动二进制转换的硬件剖析机制 - Google Patents

用于实现页级自动二进制转换的硬件剖析机制 Download PDF

Info

Publication number
CN109032609A
CN109032609A CN201810665696.8A CN201810665696A CN109032609A CN 109032609 A CN109032609 A CN 109032609A CN 201810665696 A CN201810665696 A CN 201810665696A CN 109032609 A CN109032609 A CN 109032609A
Authority
CN
China
Prior art keywords
page
code
counter
code page
instruction
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
CN201810665696.8A
Other languages
English (en)
Inventor
P·卡普瑞奥利
M·C·梅尔腾
M·M·艾尔-奥图姆
O·M·沙克
A·S·卡尼尔
S·斯里尼瓦斯
K·山田
V·萨卡
P·奥斯蔡克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Priority to CN201810665696.8A priority Critical patent/CN109032609A/zh
Publication of CN109032609A publication Critical patent/CN109032609A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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/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/0706Error 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 the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error 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 the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3616Software analysis for verifying properties of programs using software metrics
    • 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
    • G06F11/3652Software debugging using additional hardware in-circuit-emulation [ICE] arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • 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/3017Runtime instruction translation, e.g. macros
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • G06F9/4552Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM

Abstract

由性能监视硬件实现的硬件剖析机制实现页级自动二进制转换。该硬件在运行时期间标识存储器中包含潜在能被优化的指令的代码页。该硬件请求在所述存储器中分配与所述代码页相关联的新页,其中所述新页包含计数器的集合,并且所述计数器中的每一个对应于所述代码页中的指令中的一个。当该硬件检测到具有在该代码页内的分支目标的分支指令时,它使在该新页中具有与代码页中的分支目标相同的位置的计数器之一递增。重复该代码页的执行,并在分支目标落在该代码页之内时使计数器递增。该硬件然后将所述新页中的所述计数器值提供给二进制转换器以用于二进制转换。

Description

用于实现页级自动二进制转换的硬件剖析机制
本申请是PCT国际申请号为PCT/US2012/031572、国际申请日为2012年3月30日、中国国家申请号为201280072148.5、题为“用于实现页级自动二进制转换的方法、装置、系统和设备”的申请的分案申请。
技术领域
本公开涉及处理逻辑、微处理器以及相关的指令集架构的领域,这些指令集架构在被处理器或其他处理逻辑所执行时执行逻辑、数学或其他功能性操作。
背景技术
计算机程序通常针对特定的计算机处理器架构被编译成二进制代码。这在该计算机处理器进化以实现更先进的指令集、更强大的功能单元或不同的数据格式时产生问题。每当引入新一代处理器时,计算机硬件和软件供应商不得不花费大量的工程设计资源以及金钱资源来帮助旧的计算机程序在新计算机处理器上运行。
在现代计算机中,通常通过处理器的前端处的解码器将经编译的二进制代码解码成微代码。一种使旧软件能在新处理器上运行的现有方法是动态二进制转换,动态二进制转换将二进制代码从一个指令集转换至另一指令集。如果经编译的二进制代码包含热点(hot spot),即程序的频繁执行部分,则可对包含该热点的代码区(而不是整个代码)执行二进制转换。这样的部分二进制转换的结果是处理器专用和经优化的代码。
为了对热点执行部分二进制转换,首先需要使有效的热点检测机制就位。常规的热点检测机制收集并分析二进制代码的运行时(runtime)统计,由此确定热点的存在。然而,常规的热点检测机制会使用大量的存储器来存储所收集的统计,并且会招致显著的硬件成本以用于跟踪二进制代码的运行时行为。
在检测到热点之后,调用转换器软件以产生该热点代码的经优化版本。然后将经优化的代码安装在存储器中,并执行经优化的版本,而不是执行原始原生代码。找出并优化热点的过程花费了相当大量的处理时间和硬件资源,这些处理时间和硬件资源原本可用于执行原生代码。然而,由于硬件和软件限制,当前系统标识并转换相同的热点,并存储和安装用于每个虚拟地址的相同的经优化代码和其中检测到热点的上下文。因此,每当创建新上下文时,即使之前已经对于相同代码执行了整个过程,相同代码中包含的热点也被重新检测和重新安装。因此,系统资源被低效地利用,并且系统性能降级。
附图简述
在附图的以下各图中通过示例而非限制地说明多个实施例:
图1是根据一个实施例的具有性能监视硬件的指令处理装置的示例实施例的框图。
图2示出根据一个实施例的被分配给代码页的新页的示例。
图3示出根据一个实施例的用于运行时二进制转换的性能监视系统的元件。
图4是示出根据一个实施例要执行的操作的流程图。
图5是示出根据一个实施例要执行的操作的另一流程图。
图6是示出根据一个实施例的使用软件指令转换器将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。
图7A是根据一个实施例的有序和无序流水线的框图。
图7B是根据一个实施例的有序和无序核的框图。
图8A-B是根据一个实施例的更具体的示例性的有序核架构的框图。
图9是根据一个实施例的处理器的框图。
图10是根据一个实施例的系统的框图。
图11是根据一个实施例的第二系统的框图。
图12是根据本发明的实施例的第三系统的框图。
图13是根据一个实施例的片上系统(SoC)的框图。
各实施例的描述
在以下描述中,陈述了多个具体细节。然而,应当理解的是,可不通过这些具体细节来实施本发明的实施例。在其它实例中,未详细示出公知的电路、结构以及技术,以免模糊对本描述的理解。
常规的热点检测和二进制转换机制不能高效地利用系统资源。因此,需要关于热点检测覆盖范围、转换器调用次数以及经优化代码和元数据的存储尺寸的改进。本申请中描述的各实施例提供了硬件剖析机制,该硬件剖析机制允许利用非常少的硬件和软件开销来监视热点。本申请中描述的实施例还允许在多个上下文上重新使用经优化的代码。因此,可减小热点检测覆盖范围,并且可使转换器调用次数以及经优化的代码存储空间最小。因为有附加的机会来执行经优化的代码,所以还可改善系统性能。
图1是指令处理装置115的实施例的框图,该指令处理装置具有用于执行指令的执行单元140。在一些实施例中,指令处理装置115可以是处理器、多核处理器的处理核、或者电子系统中的处理元件。
解码器130接收高级机器指令或宏指令形式的传入指令,并且解码所述指令以生成低级微操作、微代码进入点、微指令或其他低级指令或控制信号,它们反映了原始的高级指令和/或从原始的高级指令导出。低级指令或控制信号可通过低级(例如,电路级或硬件级)操作来实现高级指令的操作。解码器130可使用各种不同的机制来实现。合适机制的示例包括但不限于微代码、随机存取存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)、用于实现本领域已知的解码器的其他机制等。
执行单元140耦合至解码器130。执行单元140可从解码器130接收一个或多个微操作、微代码进入点、微指令、其他指令或其他控制信号,它们反映了所接收的指令或者是从所接收的指令导出的。执行单元140还接收来自寄存器或存储器位置170的输入,并产生输出至寄存器或存储器位置170。
为了避免混淆描述,已示出和描述了相对简单的指令处理装置115。应当理解,其他实施例可具有超过一个执行单元。例如,装置115可包括多个不同类型的执行单元,诸如例如算术单元、算术逻辑单元(ALU)、整数单元、浮点单元等。指令处理装置或处理器的再其他实施例可具有多个核、逻辑处理器或执行引擎。稍后将参考图7-13提供指令处理装置115的多个实施例。
根据一个实施例,指令处理装置115包括用于执行硬件剖析的性能监视硬件110。在指令处理装置115是多核处理器的情形下,每个处理器核可包含性能监视硬件110的副本。性能监视硬件110包括第一级硬件112和第二级硬件114。在装置115接收二进制指令流时,第一级硬件112监视这些指令以检测这些指令中是否有指令有必要进行优化(因此有必要进行优化这些指令的二进制转换)。例如,向量展宽是使用二进制转换将更早年代的指令集架构(ISA)(例如SIMD扩展(SSE))的向量指令(也称为打包指令)转换成在更宽的向量寄存器上操作的更新的向量指令(例如高级向量扩展(AVX))的优化技术,从而既提高性能又提高每瓦特性能。对于该二进制转换机会,第一级硬件112可标识包含大量打包SSE指令的代码页。
可将指令从一个ISA二进制转换至执行这些指令所针对的另一ISA,如上述示例所描述。还可出于存储器预取出、分支性能改善、计算效率增强等等目的对指令进行二进制转换,其中二进制转换的源和目标可针对同一ISA。因此,第一级硬件112可根据各种各样的优化标准来检测二进制转换机会。
当第一级硬件112检测到大量可优化的指令时,性能监视硬件110标识包含这些指令的代码页。这是由于二进制转换的粒度通常是代码页的尺寸(虽然在一些实施例中二进制转换的粒度可以与代码页的尺寸不同),其中代码页的尺寸可以是4K字节或其它预定尺寸。性能监视硬件110将所标识的代码页的物理地址(即所标识的代码页的基址)发送至二进制转换器120,并请求分配新页用于跟踪所标识代码页的运行时行为。在一个实施例中,被跟踪的运行时行为包括分支频率和分支目标的位置(即分支目标在所标识的代码页内的偏移量)。通过与所标识的代码页相关联,该新页仅保持跟踪落在该代码页内的分支目标。(导致这些分支出现的)分支指令可位于该代码页之内或在该代码页之外。
在一个实施例中,二进制转换器120是一个软件,该软件驻留在系统存储器125中并与性能监视硬件110直接交互,无需操作系统的辅助。二进制转换器120具有存储器的页集合,这些页可被分配用于保持经二进制转换的代码。代替在二进制转换过程期间分配页,当由于来自性能监视硬件110的请求而标识代码页以进行优化时,二进制转换器120可分配同一页。被分配的页可用于保持相关联的代码页的分支统计,并可在稍后重新初始化以保持经转换的代码。因此,分支统计的跟踪招致很少或无存储器开销。
在标识给定代码页以进行优化之后,性能监视硬件110陷入二进制转换器的运行时层以分配新页,该新页将在稍后保持给定代码页的经转换代码。该新页是存储器中的物理页,并且被映射至与给定代码页相同的虚拟地址。使用不同的上下文标识符可将新页和给定的代码页区分开。在二进制转换器120分配该新页之后,它将该页初始化为零,并将该新页的基址(即起始物理地址)记录在性能监视硬件110中的基址寄存器116中。第二级硬件114然后监视目标落在该新页内的所有分支(等价的跳转或条件指令)。这实现对该页的分支目标的100%覆盖,从而与通过统计采样的发现相比,显著减少了标识目标所需的时间。在一个实施例中,该新页由第二级硬件114使用,以作为用于对落在该给定代码页内的分支目标的数量进行计数的计数器的集合。
图2是示出被用作计数器集合的新页200的示例的框图。针对代码页210分配该新页200。在一个实施例中,新页220由二进制转换器120建立作为计数器网格,所有计数器都被初始化为零。每个计数器具有相同尺寸,该尺寸不大于ISA中的最短指令(即该ISA的粒度),以简化指令与它们相关联的计数器之间的映射。对于x86ISA(由Pentium 4处理器、CoreTM处理器、以及来自加州桑尼维尔市的Advanced Micro Devices公司的处理器实现),最短指令是一个字节。因此,可使用一个字节尺寸的计数器,使得代码页210内的指令处于与新页200中的相应计数器相同的位置。
图2中示出的新页200是该页的简化存储器镜像,其中每个方块表示被用作计数器的存储器字节。1、7和8的计数器值处于与代码页210中的分支目标相对应的偏移量处,并进一步表示遇到那些分支目标的频率。例如,如果分支目标处于代码页210的页面偏移量0x12处,则该硬件(图1的第二级硬件114)将使新页面200偏移量0x12处的字节计数器递增。在图2的示例中,示出了分支目标BT1具有计数器值1,分支目标BT2具有计数器值7,以及分支目标BT3具有计数器值8。每个分支目标及其相关联的计数器具有在它们的相应页面中的相同字节位置(相同偏移)(例如,BT1及其计数器位于第7字节位置处,BT2及其计数器位于第18字节位置处,以及BT3及其计数器位于第27字节位置处)。该计数器值表明目标处于代码页210的字节位置中的分支的数量。例如,新页200的第7字节位置处的计数器值1表明有一个分支目标落在相关联的代码页210的第7字节处。每当检测到代码页210中的分支(等价的条件指令或跳转)目标时,使新页200中的相应计数器加1。
在一个实施例中,字节计数器是8位饱和计数器。在执行代码页210多个循环之后,一些计数器可能到达最大值(例如255)。这些计数器是饱和计数器,因为它们不会返回到零,而是保留在最大值,即便在相应位置处检测到更多跳转。此外,计数器值可以是近似的,因为读取、修改、写入的严格的原子语义不是必要的。这允许执行计数器更新的硬件(例如图1的第二级硬件114)具有较不严格的定时要求,并且因此可更低成本地建立。在一些替代实施例中,每个计数器可以是1位(布尔值),而不是8位计数器。在一些实施例中,可将这些计数器保持在专用存储中(例如在芯片上),而不是保持在存储器中。
二进制转换器120可使用分支统计来确定如何优化代码页210。在所有观测到的控制转移的页面内的偏移量可用于产生正好在这些位置处的进入经转换页的进入点。此外,由于二进制转换器120已经分析了原始的指令,它能够使用计数器来标识热点、嵌套循环以及它们相对的跳脱(trip)计数和基本块链接的共同模式。
在一个实施例中,新页200是将被经转换代码覆写的相同页。这改善了高速缓存的有效性。二进制转换器120可高速缓存计数器值数据,并重新初始化(归零)新页200以存储经转换的代码。
在一个实施例中,在二进制转换器120优化并转换代码页210之后,然后将经转换的代码安装在存储器中的新页200中。当代码执行到达代码页210时,执行新页200中的经转换代码,而不执行代码页210。在常规系统中,在系统中启用硬件机制,使得它检测命中虚拟地址(该虚拟地址被分配给所执行的上下文)的执行。然后将执行转移至经转换代码。因此,可仅在该专用的预定义上下文中执行经转换代码。
在运行多个进程或线程的计算机系统中,每个进程/线程可在不同的上下文中运行,并且可被分配不同的虚拟地址范围。常常出现以下情况:新上下文执行与系统中存在的其它上下文相同的代码,或新上下文执行与系统中先前曾存在的上下文相同的代码。例如,这在如下情况时出现:同一应用或库按顺序运行多次,或应用或库的多个实例同时执行,或两者兼有。
根据一个实施例,可在时间和空间上重新使用经转换的代码。即,对于并发运行、按顺序多次运行或两者兼有的上下文和/或线程,可重复使用该新页200的物理页中驻留的相同的经转换代码。
一般而言,操作系统通过如下方式优化存储器使用和盘访问:在系统中(在同一处理器核之内或在多个处理器核上)同时运行相同代码的多个上下文之间共享物理代码页,并在时间上重新使用同一物理代码页,即当一个应用或库按顺序被调用多次时。此外,为了提高安全性,操作系统可在不同上下文的不同虚拟地址下映射同一物理代码页(这称为地址空间布局随机化)。在所有这些情况下,可重新使用该代码的经优化版本(即经转换的代码),因为物理代码页的内容是相同的,并且它驻留在同一物理地址下。
本申请中描述的实施例允许经优化的代码按照与操作系统重新使用物理代码页的相似方式,在不同上下文上重新使用和/或在不同虚拟地址下被映射。再次参考图1,当性能监视硬件110标识有必要用于二进制转换的代码页时,它首先将该代码页的物理地址发送至二进制转换器120。在一个实施例中,二进制转换器120在系统存储器125中保持先前转换的页的历史。二进制转换器120检查所标识的代码页的物理地址是否已经在该历史中。如果它在历史中,则意味着该代码页之前已被转换。因此,该二进制转换器120可通知性能监视硬件110:转换已经就位,因此硬件110没有必要收集代码页的分支统计。二进制转换器120还可向该硬件返回经转换页的物理地址,以允许执行经转换页。
如果代码页被修改,则先前为该代码页产生(在其修改之前)的经转换代码不能再使用,并且必须被停用。在一个实施例中,如果相应的代码页已被修改,则二进制转换器120可在历史中将先前转换的代码页标记为无效。
经转换代码是上下文和虚拟地址无关的,因此可利用不同的虚拟地址来执行经转换代码。针对物理地址安装经转换代码,而不是针对上下文-虚拟地址对安装经转换代码。经转换代码也是位置无关的。即,不存在硬编码的地址;替代地,使用相对地址。
图3示出根据一个实施例的用于微架构360的硬件和软件共同设计的运行时二进制转换系统的元件。如图3中所示,该软件可包括系统存储器352,该系统存储器可包括访客软件354(包含代码页310)、操作系统(OS)355、二进制转换器120(图1)、查找表350、转换历史330和新页300(每个新页针对一个代码页310而关联,以用于保持分支目标计数器和稍后的经转换代码)。在一个实施例中,可利用特定指令集来编译代码页310。在一些实施例中,代码页310可驻留在运行于OS 355(包括运行于由虚拟机管理器所管理的虚拟机上的另一OS)上的任何其它软件中。在一个实施例中,代码页310可以是OS 355的部分。查找表350可用于存储从每个代码页310的物理地址到相应的新页300的物理地址的映射。
二进制转换器120和查找表350可以是微架构360的软件元件。微架构360进一步包括硬件元件,诸如一个或多个处理器340。处理器340中的一个或多个可包括多个处理器核380。每个处理器核380包括性能监视硬件110(图1)。性能监视硬件110包括:用于标识包含可优化的指令的代码页的逻辑;用于请求与代码页相关联的新页的分配的逻辑;用于检测具有位于代码页内的分支目标的分支指令的逻辑;用于在分支目标落在该代码页的相应位置内时使计数器递增的逻辑;以及用于将新页中的计数器值提供给二进制转换器以供二进制转换的逻辑。
在一个实施例中,处理器340可包括:由新一代处理器所支持的新特征,例如,新特征可包括更宽的寄存器(诸如256位、512位或1024位等等);以及其它特征(例如用于进入和退出经转换代码的电路、用于确保转换一致性的电路、用于存储器消歧的电路、用于原子性支持的电路、用于运行时监视微代码的电路)。微架构360的二进制转换器120可包括:用于分析代码页310的热点的逻辑;用于将该代码页的所标识热点部分转换成得到底层处理器支持的经转换代码的逻辑;以及用于执行代码页和经转换代码(包括它们之间的转换)的运行时层。
图4是用于执行硬件剖析的方法400的示例实施例的流程框图。在各实施例中,方法400可由通用处理器、专用处理器(例如,图形处理器或数字信号处理器)、或另一种类型的数字逻辑设备或指令处理装置执行。在一些实施例中,方法400可由图1的指令处理装置115、或类似的处理器、装置或系统(诸如图7-13中所示的实施例)执行。而且,图1的指令处理装置115以及图7-13中所示的处理器、装置或系统可执行与图4的方法400的实施例相同、类似或不同的操作和方法的实施例。
方法400可如下开始:硬件(例如图1的性能监视硬件110)在运行时期间标识存储器中包含潜在可优化指令的代码页(框410)。在一个实施例中,这些指令可以是计算密集的指令、来自较早年代的ISA的指令等等。硬件请求在与该代码页相关联的存储器中分配新页(框420)。可在运行时期间发送该请求,而不中断被执行的指令。新页包含计数器的集合,并且每个计数器对应于该代码页中的一个指令。当硬件检测到分支目标落在该代码页内的分支指令时(框430),它使在该新页中具有与代码页中的分支目标相同位置的计数器之一递增(框440)。重复该代码页的执行,并在分支目标落在该代码页之内时使计数器递增(框450)。可将该代码页或包括该代码页的计算机程序的执行重复预定循环次数、重复预定时间长度、或在满足预定条件时重复。在运行时期间将该新页中的计数器的值提供给二进制转换器以用于二进制转换(框460)。在一个实施例中,性能监视、分支目标计数以及二进制转换都可以在包含该代码页的计算机程序正在运行时在运行时执行。在代码页经过转换之后,当到达该代码时,系统可自动切换至经转换代码,而不中断对计算机程序的执行。
图5是用于重新使用经转换代码页的方法500的示例实施例的流程框图。在各实施例中,方法500的方法可由通用处理器、专用处理器(例如,图形处理器或数字信号处理器)、或另一种类型的数字逻辑设备或指令处理装置执行。在一些实施例中,方法500可由图1的指令处理装置115、或类似的处理器、装置或系统(诸如图7-13中所示的实施例)执行。而且,图1的指令处理装置115以及图7-13中所示的处理器、装置或系统可执行与图5的方法500的实施例相同、类似或不同的操作和方法的实施例。
方法500可如下开始:硬件(例如图1的性能监视硬件110)在运行时期间标识包含可被优化的指令的代码页(框510,与图4的框410相同)。在标识代码页之后,性能监视硬件110将标识该代码页的物理地址传递给二进制转换器120(框520),以允许二进制转换器120确定该代码页先前是否已经过转换。在一个实施例中,二进制转换器120在转换历史清单中查找该物理地址,该清单记录了所有先前经转换代码页的物理地址(框530)。二进制转换器120将查找结果传递给性能监视硬件110(框540),例如通过写入寄存器。如果代码页的物理地址在转换历史的该清单中,则性能监视硬件110获得经转换代码页的物理地址并执行该经转换代码页,而不请求分配该新页(框550)。另一方面,如果该代码页的物理地址不在该转换历史的清单中,则性能监视硬件110向二进制转换器120请求分配新页(框560,与图4的框420相同)。
图1的二进制转换器120可用作指令优化器,其中优化的源和目标在同一指令集中。在一些实施例中,指令转换器120可用作用于将指令从源指令集转换至目标指令集的指令转换器。例如,指令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其它方式将指令转换成将由核来处理的一个或多个其它指令。指令转换器可以用软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图6是根据本发明实施例的将软件指令转换器的使用进行对比的框图。在所示的实施例中,指令转换器是软件指令转换器,但作为替代,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图6示出了用高级语言602的程序可以使用x86编译器604来编译,以生成可以由具有至少一个x86指令集核的处理器616原生执行的x86二进制代码606。具有至少一个x86指令集核的处理器616表示任何处理器,这些处理器能通过兼容地执行或以其他方式处理以下内容来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能:1)英特尔x86指令集核的指令集的本质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行的应用或其它程序的目标代码版本,以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果。x86编译器604表示用于生成x86二进制代码606(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器616上执行。类似地,图6示出用高级语言602的程序可以使用替代的指令集编译器608来编译,以生成可以由不具有至少一个x86指令集核的处理器614(例如具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集,和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)来原生执行的替代指令集二进制代码610。指令转换器612被用来将x86二进制代码606转换成可以由不具有x86指令集核的处理器614原生执行的代码。该转换后的代码不大可能与替代性指令集二进制代码610相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作并由来自替代指令集的指令构成。因此,指令转换器612通过仿真、模拟或任何其它过程来表示允许不具有x86指令集处理器或核的处理器或其它电子设备执行x86二进制代码606的软件、固件、硬件或其组合。
示例性核架构
有序和无序核框图
图7A是示出根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的无序发布/执行流水线的框图。图7B是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的无序发布/执行架构核的框图。图7A-B中的实线框示出有序流水线和有序核,而任选增加的虚线框示出寄存器重命名的无序发布/执行流水线和核。给定有序方面是无序方面的子集的情况下,将描述无序方面。
在图7A中,处理器流水线700包括取出级702、长度解码级704、解码级706、分配级708、重命名级710、调度(也称为分派或发布)级712、寄存器读取/存储器读取级714、执行级716、写回/存储器写入级718、异常处理级722和提交级724。
图7B示出了包括耦合到执行引擎单元750的前端单元730的处理器核790,且执行引擎单元和前端单元两者都耦合到存储器单元770。核790可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或替代核类型。作为又一选项,核790可以是专用核,诸如例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理器单元(GPGPU)核、或图形核等等。
前端单元730包括耦合到指令高速缓存单元734的分支预测单元732,该指令高速缓存单元耦合到指令转换后备缓冲器(TLB)736,该指令转换后备缓冲器耦合到指令取出单元738,指令取出单元耦合到解码单元740。解码单元740(或解码器)可解码指令,并生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元740可使用各种不同的机制来实现。合适的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核790包括(例如,在解码单元740中或否则在前端单元730内的)用于存储某些宏指令的微代码的微代码ROM或其他介质。解码单元740耦合至执行引擎单元750中的重命名/分配器单元752。
执行引擎单元750包括重命名/分配器单元752,该重命名/分配器单元耦合至引退单元754和一个或多个调度器单元756的集合。调度器单元756表示任何数目的不同调度器,包括预留站、中央指令窗等。调度器单元756耦合到物理寄存器组单元758。每个物理寄存器组单元758表示一个或多个物理寄存器组,其中不同的物理寄存器组存储一种或多种不同的数据类型,诸如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,物理寄存器组单元758包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器、和通用寄存器。物理寄存器组单元758与引退单元754重叠以示出可以用来实现寄存器重命名和无序执行的各种方式(例如,使用重新排序缓冲器和引退寄存器组;使用将来的文件、历史缓冲器和引退寄存器组;使用寄存器映射和寄存器池等等)。引退单元754和物理寄存器组单元758耦合到执行群集760。执行群集760包括一个或多个执行单元762的集合和一个或多个存储器访问单元764的集合。执行单元762可以对各种类型的数据(例如,标量浮点、打包整数、打包浮点、向量整型、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但其他实施例可包括全部执行所有功能的仅一个执行单元或多个执行单元。调度器单元756、物理寄存器组单元758和执行群集760被示为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整型流水线、标量浮点/打包整型/打包浮点/向量整型/向量浮点流水线,和/或各自具有其自己的调度器单元、物理寄存器组单元和/或执行群集的存储器访问流水线——以及在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行群集具有存储器访问单元764的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以为无序发布/执行,并且其余流水线可以为有序发布/执行。
存储器访问单元764的集合耦合到存储器单元770,该存储器单元包括耦合到数据高速缓存单元774的数据TLB单元772,其中数据高速缓存单元耦合到二级(L2)高速缓存单元776。在一个示例性实施例中,存储器访问单元764可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元770中的数据TLB单元772。指令高速缓存单元734还耦合到存储器单元770中的二级(L2)高速缓存单元776。L2高速缓存单元776耦合到一个或多个其他级的高速缓存,并最终耦合到主存储器。
作为示例,示例性寄存器重命名的、无序发布/执行核架构可以如下实现流水线700:1)指令取出738执行取出和长度解码级702和704;2)解码单元740执行解码级706;3)重命名/分配器单元752执行分配级708和重命名级710;4)调度器单元756执行调度级712;5)物理寄存器组单元758和存储器单元770执行寄存器读取/存储器读取级714;执行群集760执行执行级716;6)存储器单元770和物理寄存器组单元758执行写回/存储器写入级718;7)各单元可牵涉到异常处理级722;以及8)引退单元754和物理寄存器组单元758执行提交级724。
核790可支持一个或多个指令集(例如,x86指令集(具有与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼州桑尼维尔市的ARM控股的ARM指令集(具有诸如NEON等可选附加扩展)),其中包括本文中描述的各指令。在一个实施例中,核790包括逻辑以支持打包数据指令集扩展(例如,SSE、AVX1、AVX2等),由此允许许多多媒体应用所使用的操作使用打包数据来执行。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,此各种方式包括时分多线程化、同步多线程化(其中单个物理核为物理核正在同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后诸如用超线程化技术来同步多线程化)。
尽管在无序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管所示出的处理器的实施例还包括分开的指令和数据高速缓存单元734/774以及共享L2高速缓存单元776,但替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如一级(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
具体的示例性有序核架构
图8A-B示出了更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块之一(包括相同类型和/或不同类型的其他核)。根据应用,这些逻辑块通过高带宽的互连网络(例如,环形网络)与一些固定的功能逻辑、存储器I/O接口和其它必要的I/O逻辑通信。
图8A是根据本发明的各实施例的单个处理器核以及它与管芯上互连网络802的连接及其二级(L2)高速缓存的本地子集804的框图。在一个实施例中,指令解码器800支持具有打包数据指令集扩展的x86指令集。L1高速缓存806允许对进入标量和向量单元中的高速缓存存储器的低等待时间访问。尽管在一个实施例中(为了简化设计),标量单元808和向量单元810使用分开的寄存器集合(分别为标量寄存器812和向量寄存器814),并且在这些寄存器之间转移的数据被写入到存储器并随后从一级(L1)高速缓存806读回,但是本发明的替代实施例可以使用不同的方法(例如使用单个寄存器集合或包括允许数据在这两个寄存器组之间传输而无需被写入和读回的通信路径)。
L2高速缓存的本地子集804是全局L2高速缓存的一部分,该全局L2高速缓存被划分成多个分开的本地子集,即每个处理器核一个本地子集。每个处理器核具有到其自己的L2高速缓存804的本地子集的直接访问路径。被处理器核读出的数据被存储在其L2高速缓存子集804中,并且可以与其他处理器核访问其自己的本地L2高速缓存子集并行地被快速访问。被处理器核写入的数据被存储在其自己的L2高速缓存子集804中,并在必要的情况下从其它子集清除。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2高速缓存和其它逻辑块之类的代理在芯片内彼此通信。每个环形数据路径为每个方向1012位宽。
图8B是根据本发明的各实施例的图8A中的处理器核的一部分的展开图。图8B包括L1高速缓存804的L1数据高速缓存806A部分,以及关于向量单元810和向量寄存器814的更多细节。具体地说,向量单元810是16宽向量处理单元(VPU)(见16宽ALU 828),该单元执行整型、单精度浮点以及双精度浮点指令中的一个或多个。该VPU通过混合单元820支持对寄存器输入的混合、通过数值转换单元822A-B支持数值转换、并通过复制单元824支持对存储器输入的复制。写掩码寄存器826允许断言所得的向量写入。
具有集成存储器控制器和图形器件的处理器
图9是根据本发明的实施例的处理器900的框图,该处理器可具有一个以上的核、可具有集成的存储器控制器、且可具有集成的图形器件。图9的实线框示出了处理器900,该处理器具有单个核心902A、系统代理910、一组一个或多个总线控制器单元916,而可选附加的虚线框示出了替代的处理器900,具有多个核心902A-N、系统代理单元910中的一组一个或多个集成存储器控制器单元914以及专用逻辑908。
因此,处理器900的不同实现可包括:1)CPU,其中专用逻辑908是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核902A-N是一个或多个通用核(例如,通用的有序核、通用的无序核、这两者的组合);2)协处理器,其中核902A-N是旨在主要用于图形和/或科学(吞吐量)的多个专用核;以及3)协处理器,其中核902A-N是多个通用有序核。因此,处理器900可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、或嵌入式处理器等。该处理器可以被实现在一个或多个芯片上。处理器900可以是一个或多个衬底的一部分,和/或可以使用诸如例如BiCMOS、CMOS或NMOS等的多个加工技术中的任何一个技术将处理器实现在一个或多个衬底上。
存储器层次结构包括在各核内的一个或多个级别的高速缓存、一个或多个共享高速缓存单元906的集合、以及耦合至集成存储器控制器单元914的集合的外部存储器(未示出)。该共享高速缓存单元906的集合可以包括一个或多个中间级高速缓存,诸如二级(L2)、三级(L3)、四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)、和/或其组合。尽管在一个实施例中,基于环的互连单元912将集成图形逻辑908、共享高速缓存单元906的集合以及系统代理单元910/集成存储器控制器单元914互连,但替代实施例可使用任何数量的公知技术来将这些单元互连。在一个实施例中,可以维护一个或多个高速缓存单元906和核902-A-N之间的一致性(coherency)。
在一些实施例中,核902A-N中的一个或多个核能够多线程化。系统代理910包括协调和操作核902A-N的那些组件。系统代理单元910可包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括用于调整核902A-N和集成图形逻辑908的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核902A-N在架构指令集方面可以是同构的或异构的;即,这些核902A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。
示例性计算机架构
图10-13是示例性计算机架构的框图。本领域已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含本文中所公开的处理器和/或其它执行逻辑的多个系统和电子设备一般都是合适的。
现在请参看图10,所示是根据本发明的一个实施例的系统1000的框图。系统1000可以包括一个或多个处理器1010、1015,这些处理器耦合到控制器中枢1020。在一个实施例中,控制器中枢1020包括图形存储器控制器中枢(GMCH)1090和输入/输出中枢(IOH)1050(其可以在分开的芯片上);GMCH 1090包括存储器和图形控制器,存储器1040和协处理器1045耦合到该存储器和图形控制器;IOH 1050将输入/输出(I/0)设备1060耦合到GMCH1090。或者,存储器和图形控制器中的一个或两个集成在处理器内(如本文所述),存储器1040和协处理器1045直接耦合到处理器1010和控制器中枢1020,该控制器中枢与IOH 1050在单个芯片中。
附加处理器1015的任选性质用虚线表示在图10中。每一处理器1010、1015可包括本文中描述的处理核中的一个或多个,并且可以是处理器900的某一版本。
存储器1040可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢1020经由诸如前端总线(FSB)之类的多分支总线、诸如快速通道互连(QPI)之类的点对点接口、或者类似的连接1095与处理器1010、1015进行通信。
在一个实施例中,协处理器1045是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。在一个实施例中,控制器中枢1020可以包括集成图形加速器。
在物理资源1010、1015之间会存在包括架构、微架构、热、和功耗特征等的一系列品质度量方面的各种差异。
在一个实施例中,处理器1010执行控制一般类型的数据处理操作的指令。协处理器指令可嵌入在这些指令中。处理器1010将这些协处理器指令识别为应当由附连的协处理器1045执行的类型。因此,处理器1010在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1045。协处理器1045接受并执行所接收的协处理器指令。
现在请参看图11,所示是根据本发明的一个实施例的第一更具体的示例性系统1100的框图。如图11所示,多处理器系统1100是点对点互连系统,且包括经由点对点互连1150耦合的第一处理器1170和第二处理器1180。处理器1170和1180中的每一个都可以是处理器900的某一版本。在本发明的一个实施例中,处理器1170和1180分别是处理器1010和1015,而协处理器1138是协处理器1045。在另一实施例中,处理器1170和1180分别是处理器1010和协处理器1045。
处理器1170和1180被示为分别包括集成存储器控制器(IMC)单元1172和1182。处理器1170还包括作为其总线控制器单元的一部分的点对点(P-P)接口1176和1178;类似地,第二处理器1180包括点对点接口1186和1188。处理器1170、1180可以使用点对点(P-P)接口电路1178、1188经由P-P接口1150来交换信息。如图11所示,IMC 1172和1182将诸处理器耦合至相应的存储器,即存储器1132和存储器1134,这些存储器可以是本地附连至相应的处理器的主存储器的一部分。
处理器1170、1180可各自经由使用点对点接口电路1176、1194、1186、1198的各个P-P接口1152、1154与芯片组1190交换信息。芯片组1190可以可选地经由高性能接口1139与协处理器1138交换信息。在一个实施例中,协处理器1138是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。
共享高速缓存(未示出)可以被包括在任一处理器之内,或被包括在两个处理器外部但仍经由P-P互连与这些处理器连接,从而如果将某处理器置于低功率模式时,可将任一处理器或两个处理器的本地高速缓存信息存储在该共享高速缓存中。
芯片组1190可经由接口1196耦合至第一总线1116。在一个实施例中,第一总线1116可以是外围组件互连(PCI)总线,或诸如PCI Express总线或其它第三代I/O互连总线之类的总线,但本发明的范围并不受此限制。
如图11所示,各种I/O设备1114可以连同总线桥1118耦合到第一总线1116,总线桥1118将第一总线1116耦合至第二总线1120。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU的处理器、加速器(诸如例如图形加速器或数字信号处理器(DSP)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器1115被耦合到第一总线1116。在一个实施例中,第二总线1120可以是低引脚计数(LPC)总线。各种设备可以被耦合至第二总线1120,在一个实施例中这些设备包括例如键盘/鼠标1122、通信设备1127以及诸如可包括指令/代码和数据1130的盘驱动器或其它大容量存储设备的存储单元1128。此外,音频I/O1124可以被耦合至第二总线1120。注意,其它架构是可能的。例如,代替图11的点对点架构,系统可实现多点总线或者其他此类架构。
现在请参看图12,所示是根据本发明的一个实施例的第二更具体的示例性系统1200的框图。图11和12中的类似元件使用类似附图标记,且在图12中省略了图11的某些方面以避免混淆图12的其它方面。
图12例示了处理器1170、1180可分别包括集成存储器和I/O控制逻辑(“CL”)1172和1182。因此,CL 1172、1182包括集成存储器控制器单元并包括I/O控制逻辑。图12示出:不仅存储器1132、1134耦合至CL 1172、1182,I/O设备1214也耦合至控制逻辑1172、1182。传统I/O设备1215被耦合至芯片组1190。
现在请参看图13,所示是根据本发明的实施例的SoC 1300的框图。图9中的类似元件具有相似的附图标记。另外,虚线框是更先进的SoC的可选特征。在图13中,互连单元1302被耦合至:应用处理器1310,该应用处理器包括一个或多个核202A-N的集合以及共享高速缓存单元906;系统代理单元910;总线控制器单元916;集成存储器控制器单元914;一组或一个或多个协处理器1320,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1330;直接存储器存取(DMA)单元1332;以及用于耦合至一个或多个外部显示器的显示单元1340。在一个实施例中,协处理器1320包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器等等。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
诸如图11所示的代码1130之类的程序代码可应用于输入指令,以执行本文中所描述的功能并生成输出信息。输出信息可以按已知方式被应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,指令表示处理器中的各种逻辑,指令在被机器读取时使得该机器制作用于执行本文所述的技术的逻辑。被称为“IP核”的这些表示可以被存储在有形的机器可读介质上,并被提供给多个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
这样的机器可读存储介质可以包括但不限于通过机器或设备制造或形成的物品的非瞬态的有形安排,其包括存储介质,诸如:硬盘;任何其它类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器件,例如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其它类型的介质。
因此,本发明的各实施例还包括非瞬态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。
虽然已经描述并在附图中示出了特定示例实施例,但可以理解,这些实施例仅仅是对本宽泛发明的说明而非限制,并且本发明不限于所示出和所描述的特定结构和配置,因为本领域技术人员在研究了本公开文本之后可以料知到多种其他修改方式。在本技术领域中,因为发展很快且未来的进步难以预见,所以本公开的诸个实施例可通过受益于技术进步而容易地获得配置和细节上的改动,而不背离本公开的原理和所附的权利要求书的范围。

Claims (10)

1.一种装置,包括:
一个或多个处理器核,所述处理器核中的每一个包括性能监视硬件;以及
高速缓存单元,耦合至所述一个或多个核,
其中所述性能监视硬件包括逻辑,所述逻辑用于:
标识存储器中包含潜在能被优化的指令的代码页;
请求在所述存储器中分配与所述代码页相关联的新页,其中所述新页包含计数器的集合,并且所述计数器中的每一个对应于所述代码页中的指令中的一个;
检测具有在所述代码页内的分支目标的分支指令;
使在所述新页中具有与所述代码页中的所述分支目标相同的位置的计数器之一递增;
重复所述代码页的执行,并在分支目标落在所述代码页之内时使所述计数器递增;以及
将所述新页中的所述计数器的值提供给二进制转换器以用于二进制转换。
2.如权利要求1所述的装置,其特征在于,所述新页被所述二进制转换器用于保持从所述代码页转换的代码,由此替换所述计数器的值。
3.如权利要求2所述的装置,其特征在于,从所述代码页转换的代码能在多个线程之间共享。
4.如权利要求1所述的装置,其特征在于,所述性能监视硬件还适于:
在标识所述代码页之后,将标识所述代码页的物理地址传递给所述二进制转换器,由此允许所述二进制转换器确定所述代码页之前是否已被转换;以及
响应于确定所述代码页之前已被转换,获得经转换的代码页的物理地址并执行所述经转换的代码页,而不请求分配所述新页。
5.如权利要求1所述的装置,其特征在于,每个计数器的尺寸不大于所述代码页中的指令的粒度。
6.如权利要求1所述的装置,其特征在于,所述计数器中的每一个在最大值处饱和,并且不会返回到零。
7.如权利要求1所述的装置,其特征在于,所述代码页被转换成位置无关代码。
8.一种方法,包括:
通过性能监视硬件在运行时期间标识存储器中包含潜在能被优化的指令的代码页;
请求在所述存储器中分配与所述代码页相关联的新页,其中所述新页包含计数器的集合,并且所述计数器中的每一个对应于所述代码页中的指令中的一个;
检测具有在所述代码页内的分支目标的分支指令;
使在所述新页中具有与所述代码页中的所述分支目标相同的位置的计数器之一递增;
重复所述代码页的执行,并在分支目标落在所述代码页之内时使所述计数器递增;以及
将所述新页中的所述计数器的值提供给二进制转换器以用于二进制转换。
9.如权利要求8所述的方法,其特征在于,所述新页被所述二进制转换器用于保持从所述代码页转换的代码,由此替换所述计数器的值。
10.一种系统,包括:
存储器,用于存储多个代码页;
耦合至所述存储器的处理器,所述处理器包括性能监视硬件,所述性能监视硬件包括逻辑,所述逻辑用于:
在运行时期间标识所述代码页中包含潜在能被优化的指令的一个代码页;
请求在所述存储器中分配与所标识的代码页相关联的新页,其中所述新页包含计数器的集合,并且所述计数器中的每一个对应于所标识的代码页中的指令中的一个;
检测具有在所标识的代码页内的分支目标的分支指令;
使在所述新页中具有与所标识的代码页中的所述分支目标相同的位置的计数器之一递增;
重复所标识的代码页的执行,并在分支目标落在所标识的代码页之内时使所述计数器递增;以及
将所述新页中的所述计数器的值提供给二进制转换器以用于二进制转换。
CN201810665696.8A 2012-03-30 2012-03-30 用于实现页级自动二进制转换的硬件剖析机制 Pending CN109032609A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810665696.8A CN109032609A (zh) 2012-03-30 2012-03-30 用于实现页级自动二进制转换的硬件剖析机制

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201810665696.8A CN109032609A (zh) 2012-03-30 2012-03-30 用于实现页级自动二进制转换的硬件剖析机制
PCT/US2012/031572 WO2013147868A1 (en) 2012-03-30 2012-03-30 Hardware profiling mechanism to enable page level automatic binary translation
CN201280072148.5A CN104205088B (zh) 2012-03-30 2012-03-30 用于实现页级自动二进制转换的方法、装置、系统、和设备

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201280072148.5A Division CN104205088B (zh) 2012-03-30 2012-03-30 用于实现页级自动二进制转换的方法、装置、系统、和设备

Publications (1)

Publication Number Publication Date
CN109032609A true CN109032609A (zh) 2018-12-18

Family

ID=49260923

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201810665696.8A Pending CN109032609A (zh) 2012-03-30 2012-03-30 用于实现页级自动二进制转换的硬件剖析机制
CN201280072148.5A Expired - Fee Related CN104205088B (zh) 2012-03-30 2012-03-30 用于实现页级自动二进制转换的方法、装置、系统、和设备

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201280072148.5A Expired - Fee Related CN104205088B (zh) 2012-03-30 2012-03-30 用于实现页级自动二进制转换的方法、装置、系统、和设备

Country Status (4)

Country Link
US (2) US9542191B2 (zh)
EP (1) EP2831749B1 (zh)
CN (2) CN109032609A (zh)
WO (1) WO2013147868A1 (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9672019B2 (en) 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
US10621092B2 (en) 2008-11-24 2020-04-14 Intel Corporation Merging level cache and data cache units having indicator bits related to speculative execution
WO2013048468A1 (en) * 2011-09-30 2013-04-04 Intel Corporation Instruction and logic to perform dynamic binary translation
US9542191B2 (en) * 2012-03-30 2017-01-10 Intel Corporation Hardware profiling mechanism to enable page level automatic binary translation
US9032381B2 (en) 2012-06-29 2015-05-12 Intel Corporation State recovery methods and apparatus for computing platforms
US9116719B2 (en) * 2013-06-27 2015-08-25 Intel Corporation Partial commits in dynamic binary translation based systems
US9891936B2 (en) 2013-09-27 2018-02-13 Intel Corporation Method and apparatus for page-level monitoring
US9858058B2 (en) * 2014-03-31 2018-01-02 International Business Machines Corporation Partition mobility for partitions with extended code
US9471292B2 (en) * 2014-04-18 2016-10-18 Intel Corporation Binary translation reuse in a system with address space layout randomization
US9665374B2 (en) * 2014-12-18 2017-05-30 Intel Corporation Binary translation mechanism
US9507891B1 (en) 2015-05-29 2016-11-29 International Business Machines Corporation Automating a microarchitecture design exploration environment
US9477451B1 (en) 2015-11-06 2016-10-25 International Business Machines Corporation Generating dynamic measurement metadata for efficient compilation and optimization on a target device
US11163682B2 (en) * 2015-12-29 2021-11-02 Intel Corporation Systems, methods, and apparatuses for distributed consistency memory
US20170192688A1 (en) * 2015-12-30 2017-07-06 International Business Machines Corporation Lazy deletion of vaults in packed slice storage (pss) and zone slice storage (zss)
CN106371766A (zh) * 2016-08-29 2017-02-01 北京像素软件科技股份有限公司 一种存储电子游戏的网格数据的方法及装置
US11775298B2 (en) * 2020-04-24 2023-10-03 Intel Corporation Frequency scaling for per-core accelerator assignments
US11620134B2 (en) 2021-06-30 2023-04-04 International Business Machines Corporation Constrained carries on speculative counters
US11886883B2 (en) 2021-08-26 2024-01-30 International Business Machines Corporation Dependency skipping in a load-compare-jump sequence of instructions by incorporating compare functionality into the jump instruction and auto-finishing the compare instruction
CN115240369A (zh) * 2022-07-21 2022-10-25 天津君秒安减灾科技有限公司 一种基于地震预警的物联网喇叭语音广播系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1234551A (zh) * 1997-10-06 1999-11-10 太阳微系统有限公司 动态优化字节编码程序的方法和装置
US20050155018A1 (en) * 2004-01-14 2005-07-14 International Business Machines Corporation Method and apparatus for generating interrupts based on arithmetic combinations of performance counter values
CN1641607A (zh) * 2004-01-14 2005-07-20 国际商业机器公司 页表中维护性能监测结构用于监测程序性能的方法和设备
CN101963907A (zh) * 2010-10-14 2011-02-02 中国科学技术大学苏州研究院 一种计算机程序热点的动态剖析机制
CN102103485A (zh) * 2009-12-16 2011-06-22 英特尔公司 用于x86中动态二进制优化的两阶段提交区域
CN104205088A (zh) * 2012-03-30 2014-12-10 英特尔公司 用于实现页级自动二进制转换的硬件剖析机制

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6076155A (en) * 1995-10-24 2000-06-13 S3 Incorporated Shared register architecture for a dual-instruction-set CPU to facilitate data exchange between the instruction sets
US7111290B1 (en) 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US6470492B2 (en) * 1999-05-14 2002-10-22 Hewlett-Packard Company Low overhead speculative selection of hot traces in a caching dynamic translator
US7107580B2 (en) * 2003-01-07 2006-09-12 Intel Corporation Binary translation of self-modifying code
US20040255104A1 (en) * 2003-06-12 2004-12-16 Intel Corporation Method and apparatus for recycling candidate branch outcomes after a wrong-path execution in a superscalar processor
US20050155022A1 (en) * 2004-01-14 2005-07-14 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses to identify hot spots
US7702887B1 (en) * 2004-06-30 2010-04-20 Sun Microsystems, Inc. Performance instrumentation in a fine grain multithreaded multicore processor
US7363471B2 (en) * 2005-06-27 2008-04-22 Intel Corporation Apparatus, system, and method of dynamic binary translation supporting a denormal input handling mechanism
CN101295265A (zh) * 2007-04-25 2008-10-29 国际商业机器公司 全系统isa仿真系统及其识别进程的方法
US8060356B2 (en) * 2007-12-19 2011-11-15 Sony Computer Entertainment Inc. Processor emulation using fragment level translation
US8782613B2 (en) * 2008-08-12 2014-07-15 Hewlett-Packard Development Company, L.P. Optimizing applications using source code patterns and performance analysis

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1234551A (zh) * 1997-10-06 1999-11-10 太阳微系统有限公司 动态优化字节编码程序的方法和装置
US20050155018A1 (en) * 2004-01-14 2005-07-14 International Business Machines Corporation Method and apparatus for generating interrupts based on arithmetic combinations of performance counter values
CN1641607A (zh) * 2004-01-14 2005-07-20 国际商业机器公司 页表中维护性能监测结构用于监测程序性能的方法和设备
CN102103485A (zh) * 2009-12-16 2011-06-22 英特尔公司 用于x86中动态二进制优化的两阶段提交区域
CN101963907A (zh) * 2010-10-14 2011-02-02 中国科学技术大学苏州研究院 一种计算机程序热点的动态剖析机制
CN104205088A (zh) * 2012-03-30 2014-12-10 英特尔公司 用于实现页级自动二进制转换的硬件剖析机制

Also Published As

Publication number Publication date
EP2831749B1 (en) 2020-04-22
US20130311758A1 (en) 2013-11-21
EP2831749A4 (en) 2016-01-06
WO2013147868A1 (en) 2013-10-03
EP2831749A1 (en) 2015-02-04
US9542191B2 (en) 2017-01-10
CN104205088A (zh) 2014-12-10
CN104205088B (zh) 2018-07-24
US20170212825A1 (en) 2017-07-27

Similar Documents

Publication Publication Date Title
CN104205088B (zh) 用于实现页级自动二进制转换的方法、装置、系统、和设备
US11379229B2 (en) Apparatus and method for adaptable and efficient lane-wise tensor processing
CN104204990B (zh) 在使用共享虚拟存储器的处理器中加速操作的装置和方法
CN108292215B (zh) 用于加载-索引和预取-聚集操作的指令和逻辑
CN104603795B (zh) 实现用户级线程的即时上下文切换的指令和微架构
US11093250B2 (en) Apparatus and method for gang invariant operation optimizations using dynamic evaluation
CN108845826B (zh) 多寄存器存储器访问指令、处理器、方法和系统
CN108369516B (zh) 用于加载-索引和预取-分散操作的指令和逻辑
US10095623B2 (en) Hardware apparatuses and methods to control access to a multiple bank data cache
CN108351779A (zh) 用于安全指令执行流水线的指令和逻辑
US10915328B2 (en) Apparatus and method for a high throughput parallel co-processor and interconnect with low offload latency
TW201732581A (zh) 用於載入索引與集中操作的指令及邏輯
US10831505B2 (en) Architecture and method for data parallel single program multiple data (SPMD) execution
TWI514144B (zh) 積聚分頁錯失之信號傳遞與處置技術
CN104050415B (zh) 用于系统调用的稳健且高性能的指令
TW201732550A (zh) 用於載入索引和散佈運算之指令和邏輯
CN104951702A (zh) 用于有效地执行散列操作的方法和设备
TW201800948A (zh) 提取資料至具保證完成指示快取階之處理器、方法、系統及指令
CN111353156A (zh) 可缩放多密钥总存储器加密引擎
TWI752034B (zh) 用以校驗具有指示校驗位元值之位元的位元校驗處理器、方法、系統與指令
US20200012514A1 (en) Systems, Methods, and Apparatuses for Resource Monitoring
US10296464B2 (en) System, apparatus and method for dynamic profiling in a processor
TWI751125B (zh) 用以監控位址衝突的計數器
US20160378480A1 (en) Systems, Methods, and Apparatuses for Improving Performance of Status Dependent Computations
US10387159B2 (en) Apparatus and method for architectural performance monitoring in binary translation systems

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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20181218

WD01 Invention patent application deemed withdrawn after publication