[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

CN105190538A - 用于移动消除操作中的标志跟踪的系统和方法 - Google Patents

用于移动消除操作中的标志跟踪的系统和方法 Download PDF

Info

Publication number
CN105190538A
CN105190538A CN201480014563.4A CN201480014563A CN105190538A CN 105190538 A CN105190538 A CN 105190538A CN 201480014563 A CN201480014563 A CN 201480014563A CN 105190538 A CN105190538 A CN 105190538A
Authority
CN
China
Prior art keywords
data structure
register
data
mobile
logic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201480014563.4A
Other languages
English (en)
Other versions
CN105190538B (zh
Inventor
V·B·卡德吉
J·R·安德森
J·D·哈德利
李瞳
M·C·梅尔腾
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 CN105190538A publication Critical patent/CN105190538A/zh
Application granted granted Critical
Publication of CN105190538B publication Critical patent/CN105190538B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30094Condition code generation, e.g. Carry, Zero flag
    • 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/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/30181Instruction operation extension or modification
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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 or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • 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 or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Storage Device Security (AREA)

Abstract

用于涉及移动消除的数据操纵操作中的标志跟踪的系统和方法。示例处理系统包括:包括多个物理寄存器值的第一数据结构;包括多个引用所述第一数据结构的元素的多个指针的第二数据结构;包括多个移动消除集的第三数据结构,每一个移动消除集都包括表示两个或更多逻辑数据寄存器的两个或更多个比特,所述第三数据结构进一步包括与每一个移动消除集相关联的至少一个比特,所述至少一个比特表示一个或多个逻辑标志寄存器;包括与标志寄存器共享所述第一数据结构的元素的数据寄存器的标识符的第四数据结构;以及,被配置成执行移动消除操作的移动消除逻辑。

Description

用于移动消除操作中的标志跟踪的系统和方法
技术领域
本发明一般涉及计算机系统,具体而言,涉及改进由计算机系统执行数据操纵操作的效率。
背景技术
数据操纵操作表示由处理器执行的重要操作。因此,优化它们的执行可以提高处理器的总体性能。
附图简述
本发明是通过示例而不是作为限制来说明的,当与附图一起考虑时并参考下列详细描述时,可以更完全地理解本发明,在附图中:
图1描绘了根据本公开的一个或多个方面的示例计算机系统的高级组件图示;
图2描绘了根据本发明的一个或多个方面的处理器的框图;
图3a-3b示意地示出了根据本公开的一个或多个方面的处理器微体系结构的要素;
图4示意地示出了根据本公开的一个或多个方面的图1的示例计算机系统100的示例处理器及其他组件的多个方面;
图5示意地示出了根据本公开的一个或多个方面的通过寄存器别名使用(aliasing)来执行移动操作的示例;
图6a-6b示意地示出了根据本公开的一个或多个方面的标记跟踪器数据结构的示例;
图7a-7c示意地示出了根据本发明的一个或多个方面的使用多个实例化表(MIT)来用于物理寄存器组(PRF)条目跟踪的多个示例;
图8a-8c示意地示出了根据本发明的一个或多个方面的使用标记跟踪器数据结构来用于MIT条目跟踪的示例;
图9a-9d和10a-10d示意地示出了根据本公开的一个或多个方面的移动消除操作中的标记跟踪逻辑的示例;
图11描绘了根据本发明的一个或多个方面的用于移动消除操作中的标记跟踪的示例方法的流程图;以及
图12描绘了根据本发明的一个或多个方面的示例计算机系统的框图。
具体实施方式
此处描述了用于在涉及移动消除的数据操纵操作中进行标志跟踪的计算机系统以及相关的技术。此处的“移动消除(Moveelimination)”应该是指在不使用执行单元的情况下执行寄存器复制操作,以便提高执行的效率。
在某些实现中,移动消除可以通过寄存器别名化(aliasing)来实现:被称为物理寄存器组(PhysicalRegisterFile:PRF)的第一数据结构,可以用于存储物理寄存器值;以及被称为寄存器别名表(RAT)的第二数据结构,可以用于存储将逻辑寄存器标识符映射到PRF条目的指针。寄存器别名化允许通过修改RAT中的一个或多个指针而不将这些指令发送到执行单元,来执行某些指令。这样的指令的示例包括寄存器归零指令(诸如,例如,XORAX,AX)和寄存器复制指令(诸如MOV指令)。由于寄存器复制指令不会创建新的值,因此,可以将源寄存器指针复制到RAT中的目的地寄存器指针,以便指令将不需要使用执行单元和另一PRF条目。此过程被称为“移动消除”,因为从发送到执行单元的流中消除了移动指令。
整数指令不仅可以修改目的地寄存器值,而且还可以修改处理器状态标志中的一个或多个。为了存储标志值,连同与数据寄存器值的字段,每一个PRF条目都可包括,标志值的一个或多个字段。
可能需要跟踪物理寄存器以及标志对PRF表条目的使用,以便确定何时可以释放PRF条目以供新指令使用。此处描述了用于移动消除操作中的高效标志跟踪的系统和方法。下面作为示例而并非作为限制地详细描述了上面引用的方法和系统的各方面。
在下面的描述中,阐述了很多具体细节,诸如特定类型的处理器和系统配置、特定硬件结构、特定体系结构和微体系结构细节、特定寄存器配置、特定指令类型、特定系统组件、特定测量值/高度、特定处理器流水线级和操作等等的示例,以便提供对本发明的全面的理解。然而,对本领域普通技术人员显而易见的是,可以不必使用这些具体细节来实施本发明。在其他情况下,没有详细描述已知的组件或方法,诸如特定和替代处理器体系结构、特定逻辑电路/用于描述算法的代码、特定固件代码、特定互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实现、代码中的算法的特定表达、特定断电和选通技术/逻辑及计算机系统的其他特定操作细节,以避免对本发明造成不必要的模糊。
虽然将处理器参考来描述下列各实施例,但是,其他实施例也适用于其他类型的集成电路和逻辑设备。可以将本发明的各实施例的类似的技术和原理应用于可以得益于较高流水线吞吐量和改善的性能的其他类型的电路或半导体器件。本发明的各实施例的原理适用于执行数据操纵的任何处理器或机器。然而,本发明不仅限于执行512比特、256比特、128比特、64比特、32比特或16比特数据操作的处理器或机器,并可以应用于其中执行对数据的操纵或管理的任何处理器和机器。另外,下列描述提供了示例,为便于说明,各个附图示出了各种示例。然而,这些示例不应该以限制的方式来解释,因为它们只是提供本发明的各实施例的示例,而并非提供本发明的各实施例的所有可能的实现的详细清单。
虽然下面的示例在执行单元以及逻辑电路的上下文中描述了指令处理和分布,但是本发明的其他实施例可以通过存储在机器可读的、有形的介质上的数据或指令来完成,这些数据或指令当由机器执行时,使机器执行根据本发明的至少一个实施例的功能。在一个实施例中,与本发明的各实施例相关联的功能是以机器可执行指令来实现的。指令可以用来使利用指令编程的通用或专用的处理器来执行本发明的步骤。本发明的各实施例可以作为计算机程序产品或软件来提供,该计算机程序产品或软件可以包括在其上存储了指令的机器或计算机可读介质,指令可以被用来编程计算机(或其他电子器件)以执行根据本发明的各实施例的一个或多个操作。可另选地,可以由包含用于执行操作的固定功能逻辑的特定硬件组件,或由编程的计算机组件和固定功能硬件组件的任何组合,来执行本发明的各实施例的操作。
用于编程逻辑以执行本发明的各实施例的指令可以存储在系统中的存储器内,诸如DRAM、缓存、闪存,或其他存储器。此外,指令可经由网络或通过其他计算机可读介质来分配。因此,计算机可读介质可包括用于以机器(例如,计算机)可读的形式存储或发送信息的任何机制,但不限于:软盘、光盘、紧致盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或在经由互联网通过电、光、声、或其他形式的传播信号(例如,载波、红外信号、数字信号等)发送信息中所用的有形机器可读存储器。因此,计算机可读介质包括适用于存储或发送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
此处“处理器”应该是指能够执行指令编码算术、逻辑或I/O操作的设备。在一个说明性示例中,处理器可以遵循冯诺依曼架构模型,并可以包括算术逻辑单元(ALU)、控制单元以及多个寄存器。另一方面,处理器可以包括一个或多个处理器核,因此可以是通常能够处理单指令流水线的单核处理器,或同时可以处理多个指令流水线的多核处理器。在另一方面,处理器可以实现为单个集成电路,两个或更多个集成电路,或可以是多芯片模块(例如,其中,单个微处理器晶片被包括在单个集成电路封装中,因此共享单个插槽)的组件。
图1描绘了根据本公开一个或多个方面的计算机系统的一个示例的高层组件图示。根据此处所描述的实施例,计算机系统100可包括用于使用执行逻辑的处理器102,该执行逻辑包括用来执行以处理数据的算法的逻辑。系统100代表基于可从美国加利福尼亚州圣克拉拉市的英特尔公司获得的PENTIUMIIITM、PENTIUMTM4、XeonTM、Itanium、XScaleTM和/或StrongARMTM微处理器的处理系统,不过也可使用其它系统(包括具有其它微处理器的PC、工程工作站、机顶盒等)。在一个实施例中,样本系统100可执行可从美国华盛顿州雷蒙德市的微软公司买到的WINDOWSTM操作系统的一个版本,不过也可使用其它操作系统(例如UNIX和Linux)、嵌入式软件、和/或图形用户界面。因此,本发明的各实施例不限于硬件电路和软件的任何具体组合。
各实施例不仅限于计算机系统。本发明的替换实施例可以用于诸如手持式设备和嵌入式应用之类的其他设备中。手持式设备的某些示例包括蜂窝电话、网际协议设备、数码相机、个人数字助理(PDA)以及手持式PC。嵌入式应用可包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机、或能够执行根据至少一个实施例的一个或多个指令的任何其他系统。
在此所示出的实施例中,处理器102包括用于实现将执行至少一个指令的算法的一个或多个执行单元108。可在单处理器桌面或服务器系统的情境中描述一个实施例,但是可将替代实施例包括在多处理器系统中。系统100是“中枢”系统体系结构的示例。计算机系统100包括用于处理数据信号的处理器102。作为一个说明性示例,处理器102包括复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集的组合的处理器或任何其他处理器设备,诸如,例如,数字信号处理器。处理器102耦合到在处理器102及系统100中的其他组件之间传输数据信号的处理器总线110。系统100的元件(例如,图形加速器112、存储器控制器中枢116、存储器120、I/O控制器中枢124、无线收发器126、闪存BIOS128、网络控制器134、音频控制器136、串行扩展端口138、I/O控制器140等等)执行本领域普通技术人员所共知的它们的常规功能。
在一个实施例中,处理器102包括1级(L1)内部高速缓存104。取决于架构,处理器102可以具有单个内部高速缓存或多级内部高速缓存。其他实施例包括内部高速缓存和外部高速缓存的组合,这取决于特定实现和需求。寄存器组106将不同类型的数据存储在各种寄存器中,包括整数寄存器、浮点寄存器、向量寄存器、分组寄存器、影子寄存器(shadowregister)、检查点寄存器、状态寄存器以及指令指针寄存器。
执行单元108(包括用于执行整数和浮点操作的逻辑)也驻留在处理器102中。在一个实施例中,处理器102包括存储微代码的微代码(ucode)ROM,该微代码在被执行时将执行某些宏指令的算法或处理复杂情况。这里,微代码是潜在地可更新的,以为处理器102处理逻辑缺陷/修补。对于一个实施例,执行单元108包括用于处理打包指令集109的逻辑。通过与执行指令的相关联的电路一起将打包指令集109包括在通用处理器102的指令集中,许多多媒体应用程序所使用的操作可以使用通用处理器102中的打包数据来执行。如此,通过使用全宽的处理器的数据总线来对打包的数据执行操作,许多多媒体应用被加速并且更高效率地被执行。这能潜在地消除横跨处理器数据总线传输更小数据单元以便一次对一个数据元素执行一个或多个操作的需求。
执行单元108的替换实施例也可以用于微控制器、嵌入式处理器、图形设备、DSP及其他类型的逻辑电路中。系统100包括存储器120。存储器120包括动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备或其他存储器设备。存储器120存储由数据信号表示的将被处理器102执行的指令和/或数据。
系统逻辑芯片116耦合至处理器总线110和存储器120。在所示出的实施例中的系统逻辑芯片116是存储器控制器中枢(MCH)。处理器102可经由处理器总线110与MCH116通信。MCH116提供至存储器120的高带宽存储器路径118,用于指令和数据存储,以及用于存储图形命令、数据和纹理。MCH116用于在处理器102、存储器120及系统100中的其他组件之间定向数据信号,并在处理器总线110、存储器120以及系统I/O122之间桥接数据信号。在一些实施例中,系统逻辑芯片116可提供耦合至图形控制器112的图形端口。MCH116经由存储器接口118耦合至存储器120。图形卡112通过加速图形端口(AGP)互连114耦合至MCH116。
系统100使用专用中枢接口总线122来以将MCH116耦合至I/O控制器中枢(ICH)130。ICH130通过本地I/O总线来提供到某些I/O设备的直接连接。本地I/O总线是用于将外围设备连接到存储器120、芯片组以及处理器102的高速I/O总线。一些示例是音频控制器、固件中枢(闪存BIOS)128、无线收发机126、数据存储设备124、包括用户输入和键盘接口的传统I/O控制器、串行扩展端口(诸如通用串行总线(USB))以及网络控制器134。数据存储设备124可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备、或其他大容量存储设备。
对于系统的另一个实施例,根据一个实施例的指令可以与芯片上系统一起使用。芯片上系统的一个实施例包括处理器和存储器。一个这样的系统的存储器是闪存。闪存可以与处理器及其他系统组件位于同一个晶片上。另外,诸如存储器控制器或图形控制器之类的其他逻辑块也可以位于芯片上系统之上。
图2是根据本发明的一个实施例的包括执行指令的逻辑电路的处理器200的微体系结构的框图。在一些实施例中,可将根据一个实施例的指令实现为对具有字节尺寸、字尺寸、双字尺寸、四字尺寸等并具有诸多数据类型(例如,单精度和双精度整数和浮点数据类型)的数据元素进行操作。在一个实施例中,有序前端201是处理器200的部分,该部分取出要被执行的指令,并准备这些指令以便稍后在处理器流水线中使用。前端201可包括若干单元。在一个实施例中,指令预取器226从存储器取出指令,并将指令馈送至指令解码器228,指令解码器随后解码或解释这些指令。例如,在一个实施例中,解码器将接收到的指令解码为机器可以执行的叫做“微指令”或“微操作”(也称为uop)的一个或多个操作。在其他实施例中,该解码器将指令解析为可由微架构用于执行根据一个实施例的多个操作的操作码以及对应的数据和控制字段。在一个实施例中,追踪高速缓存230接受经解码的微操作,并将它们组合为程序有序序列或uop队列234中的踪迹,以用于执行。当追踪高速缓存230遇到复杂指令时,微代码ROM232提供完成操作所需的uop。
一些指令被转换为单个微op,而其他指令需要若干个微op以完成完整的操作。在一个实施例中,如果需要多于四个微op来完成指令,则解码器228访问微代码ROM232以执行该指令。对于一个实施例,可将指令解码为少量的微op,以便在指令解码器228处进行处理。在另一实施例中,如果需要多个微op来完成操作,则可将指令存储在微代码ROM232中。追踪高速缓存230参考进入点可编程逻辑阵列(PLA)来确定正确的微指令指针,以从微代码ROM232中读取微代码序列来完成根据一个实施例的一条或多条指令。在微代码ROM232完成对指令的微op进行的序列化操作之后,该机器的前端201恢复从追踪高速缓存230中获取微op。
无序执行引擎203是准备指令以进行执行的地方。无序执行逻辑具有若干个缓冲器,以平缓和重新排序指令的流,以在它们离开流水线并被调度供执行时优化性能。分配器逻辑分配每一个微操作进行执行需要的机器缓冲器和资源。寄存器重叠逻辑将多个逻辑寄存器映射为寄存器组中的多个条目。分配器还在指令调度器(存储器调度器、快速调度器202、慢/通用浮点调度器204以及简单浮点调度器206)的前面,为两个微操作队列中的一个中的每一个微操作分配条目,一个用于存储器操作而一个用于非存储器操作。微操作调度器202、204、206基于对它们的从属输入寄存器操作数源的准备状态以及微操作完成其操作所需的执行资源的可用性来确定微操作何时就绪用于执行。一个实施例中的快速调度器202可在主时钟周期的每半个上进行调度,而其他调度器可在每个主处理器时钟周期上仅调度一次。调度器仲裁分派端口,来调度微操作以供执行。
在执行块211中,物理寄存器组208和210位于调度器202、204和206以及执行单元212、214、216、218、220、222和224之间。也存在单独的寄存器组208、210,分别用于整数和浮点操作。一个实施例中的每个寄存器组208、210也包括旁路网络,该旁路网络可绕开还未被写入到寄存器组中的、刚完成的结果或将这些结果转发到新的从属uop中。整数寄存器组208和浮点寄存器组210也能够彼此传递数据。对于一个实施例,将整数寄存器组208划分为两个单独的寄存器组,一个寄存器组用于低阶的32位数据,第二个寄存器组用于高阶的32位数据。一个实施例中的浮点寄存器组210具有128位宽的条目,因为浮点指令通常具有从64至128位宽度的操作数。
执行块211包括执行单元212、214、216、218、220、222和224,实际在这些执行单元中执行指令。该区块包括存储执行微指令所需要的整数和浮点数据操作数值的寄存器组208和210。一个实施例的处理器200由若干个执行单元所组成。一个实施例的处理器200包括有若干个执行单元:地址生成单元(AGU)212、AGU214、快速ALU216、快速ALU218、慢速ALU220、浮点ALU222、浮点移动单元224。对于一个实施例,浮点执行块222和224执行浮点、MMX、SIMD、以及SSE,或者其他操作。一个实施例中的浮点ALU222包括用于执行除法、平方根和余数微op的64位/64位的浮点除法器。对于本发明的各实施例,可以利用浮点硬件来处理涉及浮点值的指令。在一个实施例中,ALU操作去往高速ALU执行单元216和218。一个实施例中的快速ALU216和218可执行有效等待时间为半个时钟周期的快速操作。对于一个实施例,大多数复杂整数操作去往慢速ALU220,因为慢速ALU220包括用于长等待时间类型操作的整数执行硬件,例如,乘法器、移位器、标记逻辑和分支处理设备。存储器加载/存储操作由AGU212和214来执行。对于一个实施例,在对64位的数据操作数执行整数操作的上下文中描述整数ALU216、218和220。在替换实施例中,ALU216、218、220可被实现为支持多种数据位,包括16、32、128、256等等。类似地,浮点单元222、224可被实现为支持具有多种宽度的位的一系列操作数。对于一个实施例,浮点单元222和224可结合SIMD和多媒体指令,对128位宽度打包数据操作数进行操作。
在一个实施例中,在父加载(parentload)完成执行之前,uop调度器202、204和206就分派从属操作。由于在处理器200中推测性地调度并执行uop,因此处理器200也包括用于处理存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则在流水线中会存在带着临时不正确的数据离开调度器的运行中的从属操作。重放(replay)机制跟踪并重新执行使用不正确的数据的指令。依赖的操作应该被重播,而独立的操作被允许完成。也可将处理器的一个实施例的调度器和重放机制设计成用于捕捉指令序列,以用于文本串比较操作。
术语“寄存器”可以表示被用作标识操作数的指令的一部分的板上的处理器存储器位置。换句话说,寄存器可以是那些从处理器外部(从编程者的角度来看)可用的那些。然而,实施例中的寄存器不限于表示特定类型的电路。相反,实施例中的寄存器能够存储并提供数据,并且执行本文中所述的功能。在此所述的寄存器可由处理器中的电路使用任何数量不同技术来实现,诸如,专用物理寄存器、使用寄存器重叠的动态分配物理寄存器、专用和动态分配物理寄存器的组合,等等。在一个实施例中,整数寄存器存储三十二位整数数据。一个实施例的寄存器组还包含用于打包数据的八个多媒体SIMD寄存器。对于下面的讨论,寄存器被理解为是被设计为保存打包的数据的数据寄存器,诸如利用加利福尼亚州SantaClara的IntelCorporation的MMXTM技术实现的微处理器中的64比特宽MMXTM寄存器(在某些情况下,也简称为“mm”寄存器)。这些MMX寄存器(可用在整数和浮点格式中)可与伴随SIMD和SSE指令的打包数据元素一起操作。类似地,也可以使用涉及SSE2、SSE3、SSE4或以外的(一般地称为“SSEx”)技术的128位宽的XMM寄存器来保存这样的打包数据操作数。在一个实施例中,在存储打包数据和整型数据时,寄存器不需要区分两种数据类型。在一个实施例中,整数和浮点数据可被包括在相同的寄存器组中,或被包括在不同的寄存器组中。此外,在一个实施例中,浮点和整型数据可以存储在不同的寄存器中或相同寄存器中。
图3a-3b示意地示出了根据本发明的一个或多个方面的处理器微体系结构的元件。在图3a中,处理器流水线400包括取出级402、长度解码级404、解码级406、分配级408、重命名级410、调度(也称为分派或发布)级412、寄存器读取/存储器读取级414、执行级416、回写/存储器写入级418、异常处理级422、以及提交级424。
在图3b中,箭头表示两个或更多单元之间的耦合,箭头的方向表示那些单元之间的数据流动的方向。图3b示出了处理器核490,包括耦合到执行引擎单元450的前端单元430,执行引擎单元450和前端单元430两者都耦合到存储器单元470。
核490可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或者混合或替代核类型。作为又一选项,核490可以是专用核,例如,网络或通信核、压缩引擎、图形核等。
前端单元430包括耦合到指令高速缓存单元434的分支预测单元432,指令高速缓存单元434耦合到指令转换后备缓冲器(TLB)436,指令转换后备缓冲器耦合到指令获取单元438,指令获取单元耦合到解码单元440。解码单元或解码器可解码指令,并生成从原始指令中解码出的、或以其他方式反映原始指令的、或从原始指令中推导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。可使用各种不同的机制来实现解码器。合适的机制的示例包括,但不仅限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等等。指令高速缓存单元434进一步耦合到存储器单元470中的2级(L2)高速缓存单元476。解码单元440耦合至执行引擎单元450中的重命名/分配器单元452。
执行引擎单元450包括耦合到隐退单元452的重命名/分配器单元454和一组一个或多个调度器单元456。调度器单元456表示任意数量的不同的调度器,包括预留站、中央指令窗口等等。调度器单元456耦合到物理寄存器组单元458。物理寄存器组单元458中的每一个表示一个或多个物理寄存器组,其中不同的物理寄存器组存储一个或多个不同的数据类型(诸如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、等等)、状态(诸如,指令指针是将要被执行的下一个指令的地址)等等。物理寄存器组单元458被隐退单元454所覆盖,以示出可实现寄存器重叠和无序执行的多种方式(诸如,使用重排序缓冲器和隐退寄存器组、使用未来文件(futurefile)、历史缓冲器、隐退寄存器组、使用寄存器映射和寄存器池等等)。通常,架构寄存器从处理器外部或从编程者的视角来看是可见的。这些寄存器不限于任何已知的特定电路类型。各种不同类型的寄存器是合适的,只要它们能够存储并提供本文所述的数据。合适的寄存器的示例包括,但不仅限于,专用物理寄存器,使用寄存器重叠的动态地分配的物理寄存器,专用和动态地分配的物理寄存器的组合,等等。隐退单元454和物理寄存器组单元458耦合到执行群集460。执行群集460包括一组一个或多个执行单元162和一组一个或多个存储器访问单元464。执行单元462可以对各种类型的数据(例如,标量浮点、打包整数、打包浮点、向量整型、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。尽管一些实施例可以包括专用于特定功能或功能集的多个执行单元,但其他实施例可包括全部执行所有功能的仅一个执行单元或多个执行单元。调度器单元456、物理寄存器组单元458和执行群集460被示出为可能是复数个,因为某些实施例为某些数据/操作类型创建了多个单独流水线(例如,均具有各自调度器单元、物理寄存器组单元和/或执行群集的标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线和/或存储器访问流水线;以及在单独的存储器访问流水线的情况下,某些实施例被实现为仅仅该流水线的执行群集具有存储器访问单元464)。还应该理解,使用单独的流水线,这些流水线中的一个或多个可以是无序发出/执行,其余的是有序的。
存储器访问单元464的集合耦合到存储器单元470,该存储器单元包括耦合到数据高速缓存单元472的数据TLB单元474,其中数据高速缓存单元耦合到二级(L2)高速缓存单元476。在一个示例性实施例中,存储器访问单元464可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元470中的数据TLB单元472。L2高速缓存单元476耦合到一个或多个其他级的高速缓存,并最终耦合到主存储器。
作为示例,示例性的寄存器重叠的、无序发布/执行核架构可按如下方式实现流水线400:指令取出438执行取出和长度解码阶段402和404;解码单元440执行解码阶段406;重命名/分配器单元452执行分配阶段408和重命名阶段410;调度器单元456执行调度阶段;物理寄存器组单元458和存储器单元470执行寄存器读/存储器读阶段412;执行群集460执行执行阶段414;存储器单元470和物理寄存器组单元458执行写回/存储器写阶段416;各单元可牵涉到异常处理阶段418;以及,退出单元454和物理寄存器组单元458执行提交阶段422。
核490可以支持一个或多个指令集(例如,x86指令集(带有与较新的版本一起添加的某些扩展);位于美国加州桑尼维尔的MIPS科技公司的MIPS指令集;位于美国加州桑尼维尔的ARM有限公司的ARM指令集(带有诸如NEON之类的可选的额外的扩展)。
在某些实现中,核可支持多线程操作(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程操作,各种方式包括时分多线程操作、同步多线程操作(其中,单个物理核为物理核正在同步进行多线程操作的多个线程中的每一个线程提供逻辑核)或其组合(例如,时分取出和解码以及此后诸如利用超线程技术的同步多线程操作)。
尽管在无序执行的上下文中描述了寄存器重叠,但应当理解,可在有序架构中使用寄存器重命名。虽然处理器的所示出的实施例也包括单独的指令和数据高速缓存单元434/474以及共享的L2高速缓存单元476,但替代的实施例可具有用于指令和数据两者的单个内部高速缓存,诸如例如第一级(L1)内部高速缓存、或多个层级的内部高速缓存。在某些实施例中,系统可以包括内部缓存和核和/或处理器外部的外部缓存的组合。可另选地,全部缓存都可以核和/或处理器外部的。
图4示出了根据本发明的一个或多个方面的示例处理器102及计算机系统100的其他组件的框图。参考图4,处理器核490可以包括获取单元202,用以获取用于由核490执行的指令。可以从诸如存储器115之类的一个或多个存储设备中获取指令。处理器核490还可以包括解码单元440,用以将获取的指令解码为一个或多个微操作。处理器核490还可以包括调度单元446,用以存储从解码单元440接收到的解码的指令直到指令准备好被发出,例如,直到解码的指令的操作数值变得可用。调度单元446可以调度和/或向执行单元450发出解码的指令。
执行单元450可以包括一个或多个算术逻辑单元(ALU)、一个或多个整数执行单元、一个或多个浮点执行单元和/或其他执行单元。在某些实现中,执行单元450可以无序(OOO)地执行指令。处理器核490还可以包括隐退单元454以在提交执行的指令之后隐退执行的指令。
处理器核490还可以包括寄存器别名表(RAT)421、物理寄存器组(PRF)423、移动消除表(MIT)425、标记跟踪器427,以及PRF跟踪逻辑150。尽管在图4中逻辑150被示为在核490内部,但是,也可以在计算机系统100中的别处提供逻辑150。此外,逻辑150和/或其组件中的一些可以在多个处理器核之间共享。
如上文所表示的,可以通过将源寄存器指针复制到RAT中的目的地寄存器指针来消除移动指令。图5示意地示出了通过寄存器别名使用来执行MOVDX,AX指令:AX的RAT条目的内容(指向PRF中的条目X的指针)被复制到DX的RAT条目。如图5所示出的,在某些实现中,PRF可以通过物理寄存器值阵列来提供,而RAT可以通过指向PRF条目的指针阵列来提供。
整数指令不仅可以修改目的地寄存器值,而且还可以修改处理器状态标志中的一个或多个,包括,例如,进位标志(C)、符号标志(S)、奇偶标志(P)、调整标志(A)、零标志(Z),和/或溢出标志(O)。为了存储标志值,每一个PRF条目都可包括标志值的一个或多个字段,连同数据寄存器值的字段。在某些实现中,处理器状态标志可以存储在两个PRF字段中:用于存储进位标志的值的C比特字段,以及用于存储S、P、A、Z,以及O标志的值的SPAZO5比特字段。如果字段中的一个或多个比特将被新的值更新,则剩余的比特也将被那些比特的先前版本更新。换言之,对于程序执行中的给定点,单个PRF条目包含在该程序点的字段中包含那些标志的最新的值。对于C以及SPAZO分组,需要单个PRF条目或两个物理寄存器的组合来表示在程序中的给定点的正确的标志状态。如此,整数微操作的结果可包括可以被写入到包括三个上文指出的字段的一个PRF条目中的目的地数据寄存器值和标志值。其他实现可以将全部标志比特分组到一个字段中,只需要一个PRF条目来表示程序点处的标志状态;其他实现可以将每一个标志比特作为单独的字段来管理,从而对于带有如前所述的CSPAZO标志状态的处理器,需要高达六个PRF条目来表示程序点处的标志状态。
RAT可包括将标志值映射到PRF条目的一个或多个指针。在某些实现中,RAT可包括将C标志值映射到PRF条目的条目,以及将SPAZO标志值映射到PRF条目的条目。因此,处理器状态标志可以在RAT(也被称为“标志逻辑寄存器”)具有它们自己的逻辑条目,但是,与数据寄存器共享PRF条目:由于在体系结构上更新数据和状态标志两者的操作,若干个RAT条目可能被更新以映射到相同PRF条目。
由多个RAT条目引用的PRF条目可能在包括数据和标志指针的多个RAT指针被一个或多个指令盖写之后,变得对后续指令可用。因此,需要跟踪机制来跟踪引用PRF条目的多个RAT指针。
在某些实现中,被称为标志跟踪器的数据结构可以用于跟踪由数据以及标志逻辑寄存器对PRF条目的共享使用。标志跟踪器可以包括表示一个或多个状态标志的一个或多个字段的集。如图6a示意地示出的,在一个示例中,标志跟踪器可以通过具有分别表示C和SPAZO状态标志的两列的二维阵列来提供。LDstV比特可以被置位,以表示由LDst字段所标识的逻辑数据寄存器与对应的(例如,C或SPAZO)标志寄存器共享PRF条目。在分配时间,当逻辑寄存器已经被改写并且标志也已经被盖写时(假定没有移动消除),在盖写指令隐退之后,可以回收(reclaim)相关联的物理寄存器。当当前与标志共享物理寄存器的逻辑寄存器已经被盖写,但是标志中的全部或某些没有被盖写时,清除对应于那些标志字段的LDstV字段。只有在那些特定标志组也已经被改写之后,才可以回收物理寄存器。
在某些实现中,称为多个实例化表(MIT)的数据结构,可以用于跟踪对PRF条目的引用。在某些实现中,MIT可以存储多组比特,其中,一组比特可以表示移动消除操作,而一组内的比特可以表示逻辑数据寄存器。MIT可以被实现为具有表示逻辑寄存器的多个行和表示移动消除集的多个列的二维阵列(例如,比特矩阵),其中,置位比特表示对应的数据寄存器参与移动消除集。
当只有一个寄存器映射仍保留移动消除集中,以便对应的PRF条目只有一个引用保留时,由MIT列所提供的移动消除集仍可能不可用于向另一移动指令分配。这样的集可以称为“孤儿(orphan)”集,因为它只有一个寄存器映射。在没有用于清除孤立集的一些动作的情况下,它可能保持不可用,直到最后一个逻辑寄存器被盖写,如此减少可能的移动消除的数量。
图7a-7c示意地示出了根据本发明的一个或多个方面的使用多个实例化表(MIT)来用于物理寄存器文件(PRF)条目跟踪的多个示例。当移动操作被消除时,对应于源和目的地逻辑寄存器的比特可被置位,指示这些逻辑寄存器是移动消除集的一部分,如图7a示意地示出。如果移动指令的源是已经参与移动消除集的逻辑寄存器,则将目的地逻辑寄存器添加到该集中,如图7b示意地示出的。当参与移动消除集的寄存器被另一指令盖写时,对应的MIT比特(以前被置位的)可以被清除,如此,将逻辑寄存器与移动消除集脱离关联,如图7c示意地示出的。一旦对物理寄存器的所有引用被一个或多个指令盖写,并且随后隐退,不是任何移动消除集的一部分或是移动消除集的唯一成员的对应的物理寄存器可以被新指令重复使用。
由图7a-7c所示出的示例没有考虑到由数据和标志逻辑寄存器对PRF条目的可能的共享。在某些实现中,标志跟踪器还可以包括指示C和SPAZO标志是否共享相同PRF条目的SharedFlag(共享标志)比特。在C或SPAZO标志中的一个被指令盖写的情况下,其他标志逻辑寄存器可以继续指向相同PRF条目,直到第二标志也被另一指令盖写。
如由图6b示意地示出的,在一个示例中,可以增强标志跟踪器,以包括移动消除有效(MEV)和移动消除列(MECol)字段。MEV比特可以被置位,以指示MECol字段存储MIT列的有效标识符,表示其中标志寄存器与逻辑寄存器共享PRF条目的移动消除集。在某些实现中,LDst和MECol字段可以通过共享字段来表示,因为在任何给定时间,两个中只有一个有效。
图8a-8c示出了使用标志跟踪器来跟踪由数据以及标志逻辑寄存器对PRF条目的共享使用的的示例。图8a示出了C标志跟踪器的初始状态:在EAX寄存器和C标志已经被执行的指令更新之后,LDstV比特被设置为指示C标志与由LDst字段所标识的逻辑寄存器共享PRF条目。图8b示出了将EAX复制到EBX的操作的结果:RAT中的EAX指针被复制到EBX(未示出);创建了移动消除集(未示出),包括与它相关联的EAX,EBX,以及C标志;在标志跟踪器中,LDstV比特被清除,以指示Ldst的值不再相关,MEV比特被置位,移动消除集标识符(对应的MIT列的编号)被写入到MECol。图8c示出了正在被利用新的值改写的EAX寄存器的结果:没有更新C标志:LDst字段被更新,以表示C标志只与一个寄存器(EBX)共享PRF条目,LDstV比特被置位,以指示C标志与由LDst字段(EBX)所标识的逻辑寄存器共享PRF条目,以及,MEV比特被清除,以指示MECol不引用有效移动消除集。
在某些实现中,可以增强MIT,以将表示一个或多个逻辑标志寄存器的一个或多个比特与每一个移动消除集相关联。关联可以通过将表示一个或多个逻辑标志寄存器的一个或多个比特添加到每一个MIT列中来执行。因此,MIT列可包括移动消除集(包括表示逻辑数据寄存器的多个比特)和表示一个或多个逻辑标志寄存器的一个或多个比特。在某些实现中,单个比特可以表示两个或更多个逻辑标志寄存器。在一个示例中,可以将表示C标志的第一比特和/或表示SPAZO标志的第二比特添加到每一个MIT列。
将逻辑标志寄存器添加到MIT列中消除了在移动消除集变为孤儿之后(由图8c的示例所示出的情况)在标志跟踪器中设置LDst和LDstV字段的必要性,如此,会简化系统设计并改善执行效率,如下面参考图9-10的示例比较详细地描述的。在MIT列中设置标志比特的目的是当只有一个逻辑数据寄存器仍保留在该集中时防止孤儿恢复逻辑回收对应的移动消除集。
为进一步改善执行效率,逻辑150可以保守地假设任何移动消除操作都可包括与C和SPAZO状态标志共享PRF条目的逻辑寄存器。因此,跟踪逻辑可以响应于将寄存器创建或添加到移动消除集中,在MIT中投机性(speculatively)地置位标志比特(例如,C和SPAZO标志比特)。当标志被盖写时,可以从MIT中的所有列中清除对应的MIT比特,以指示标志不与移动消除集相关联。如上文所表示的,在某些实现中,只有逻辑和算术操作才能够写入标志比特,因此,那些操作的结果始终被写入到只能在随后的移动操作之后被共享的新物理寄存器。
由于在某些实现中MIT标志比特可被投机性地置位,因此,MIT标志比特不一定指示对应的标志与移动消除集的其他成员共享PRF条目。为了助益标志跟踪,逻辑150可以生成反映MIT更新的多个信号,包括被称为MITOvrWrCol的、标识由于分配的微操作而将从其中删除逻辑寄存器的移动消除集(例如,通过对应的MIT列的编号)的信号,以及被称为LDstlsME的、指示该微操作的目的地寄存器是否被与另一逻辑寄存器共享的信号。当标志的MEV比特被置位时(指示标志寄存器与移动消除集相关联),MITOvrWrCol信号匹配MECol(指示正在被执行的操作正在从与标志逻辑寄存器共享PRF条目的移动消除集释放逻辑寄存器,LDstlsME信号为假(指示由操作的LDst盖写的逻辑寄存器是移动消除集中的最后剩余的寄存器),标志寄存器不再与数据寄存器共享PRF条目。如此,可以清除MEV比特,且下一标志写入操作可以回收PRF条目。
进一步参考由图9a-9d以及10a-10d示意地示出的示例描述标志跟踪逻辑。为描述清楚起见,只示出了一个MIT列、一个状态标志,以及两个寄存器,但是,应该理解,实现可以包含多个MIT列、多个状态标志字段,以及多个逻辑寄存器。
在一个示例中,图9a示出了MIT列0和C标志跟踪器的初始状态:在EAX寄存器和C标志已经被执行的指令更新之后,LDstV比特被置位,以指示C标志与由LDst字段所标识的逻辑寄存器共享PRF条目。图9b示出了将EAX复制到EBX的操作的结果:RAT中的EAX指针被复制到EBX(未示出);创建了包括EAX、EBX,以及C标志的移动消除集;在标志跟踪器中,LDstV比特被清除,以指示Ldst的值不再相关,MEV比特被置位,并且移动消除集标识符(对应的MIT列的编号)被写入到MECol。图9c示出了正在被利用新的值改写的EAX寄存器的结果:MIT条目反映通过清除表示EAX的比特,从移动消除集中移除EAX;标志跟踪器保持不变;孤儿回收被禁用,因为标志比特仍被置位,指示标志可以与EBX共享PRF条目。图9d示出了正在利用新的值盖写EBX寄存器(移动消除集中的最后剩余的数据寄存器),但是状态标志没有被盖写的结果:MIT条目反映通过清除表示对应的比特,从移动消除集中删除EBX;在标志跟踪器中,MEV比特被清除,因此,到C标志的下一写入器将回收PRF条目。如此,MIT列0任意用于另一移动消除;不与任何其他逻辑寄存器共享C标志,如此,在任何一个结构中,没有共享需要被跟踪。如果C标志与EBX更新一起被更新,则PRF条目将在此周期被标记用于回收。
在另一个示例中,图10a示出了多个数据结构的初始状态:在EAX寄存器和C标志已经被执行的指令更新之后,LDstV比特被置位以指示C标志与由LDst字段所标识的逻辑寄存器共享PRF条目。图10b示出了移动消除操作MOVEBX,EAX的结果:RAT中的EAX指针被复制到EBX(未示出);移动消除集被创建,包括EAX,EBX,以及与其相关联的C标志;在标志跟踪器中,LDstV比特被清除,MEV比特被置位,移动消除的集标识符(对应的MIT列的编号)被写入到MECol。图10c示出了正在利用新的值盖写EAX寄存器以及C标志两者的结果:MIT条目反映通过清除对应的比特,从移动消除集中移除EAX以及C标志;标志跟踪器被更新,以反映C标志与EAX寄存器的关联:LDstV比特被置位,并且MEV比特被清除。因此,EBX是移动消除集中剩余的最后寄存器,在下一周期,孤儿恢复机制将回收对应的移动消除列,如由图10d所示意地示出的。假定EBX不变为新移动消除集的成员,EBX所使用的PRF条目将被标记用于下一次它被盖写时回收。
图11描绘了根据本发明的一个或多个方面的用于移动消除操作中的标记跟踪的示例方法的流程图。方法800可以由可以包括硬件(例如,电路、专用逻辑和/或可编程逻辑)、软件(例如,可在计算机系统上执行以执行硬件模拟的指令)或其组合的计算机系统来执行。方法800和/或其函数、例程、子例程或操作中的每一个都可以由执行方法的计算机系统的一个或多个物理处理器来执行。方法800的两个或更多函数、例程、子例程,或操作可以并行地或按照可以不同于上文所描述的顺序的顺序来执行。在一个示例中,如图11所示出的,方法800可以由图1的计算机系统100来执行。
参考图11,在框810,计算系统可以将多个物理寄存器值存储在被称为PRF的第一数据结构中。
在框820,计算系统可以在被称为RAT的第二数据结构中存储引用第一数据结构的元素的多个指针。
在框830,计算系统可以在被称为MIT的第三数据结构中存储表示多个逻辑寄存器的多个比特。
在框840,计算系统可以在被称为标志跟踪器的第四数据结构中存储与标志寄存器共享第一数据结构的元素的数据寄存器的标识符。
在框850,计算系统可以通过导致第二数据结构的元素引用第一数据结构的元素,来执行移动消除操作。
在框860,计算系统可以使用第三数据结构和第四数据结构中的至少一个,跟踪第一数据结构的元素的可用性。在完成了由框850引用的操作时,方法可以结束。
图12描绘了根据本发明的一个或多个方面的示例计算机系统的框图。如图12所示,多处理器系统700是点对点互连系统,并包括通过点对点互连750耦合的第一处理器770和第二处理器780。处理器770和780中的每一个都可以是能够执行事务性的存储器访问操作和/或非事务性的存储器访问操作的处理器102的某种版本,诸如下面更详细地描述的。
尽管只利用两个处理器770、780来示出,但是,可以理解,本发明的范围不仅限于此。在其他实施例中,一个或多个额外的处理器可以存在于给定处理器中。
处理器770和780被示为分别包括集成存储器控制器单元772和782。处理器770还包括点对点(P-P)接口776和778,作为其总线控制器单元的一部分;类似地,第二处理器780包括P-P接口786和788。处理器770、780可以使用点对点(P-P)接口电路778、788经由P-P接口750来交换信息。如图12所示,IMC772和782将处理器耦合到相应的存储器,即存储器732和存储器734,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器770、780可各自经由使用点对点接口电路776、794、786、798的各个P-P接口752、754与芯片组790交换信息。芯片组790还可经由高性能图形接口739与高性能图形电路738交换信息。
共享缓存(未示出)可以被包括在任一处理器之内,或被包括在两个处理器外部但仍经由P-P互连与这些处理器连接,从而如果将某处理器置于低功率模式时,可将任一处理器或两个处理器的本地缓存信息存储在该共享缓存中。
芯片组790可经由接口796耦合至第一总线716。在一个实施例中,第一总线716可以是外围组件互连(PCI)总线,或诸如PCIExpress总线或另一第三代I/O互连总线之类的总线,但本发明的范围并不受此限制。
如图12所示,各种I/O设备714可连同总线桥718一起耦合到第一总线716,总线桥718将第一总线716耦合到第二总线720。在一个实施例中,第二总线720可以是低管脚数(LPC)总线。在一个实施例中,各种设备可以耦合到第二总线720,包括例如键盘和/或鼠标722、通信设备727和存储单元728(诸如磁盘驱动器或可以包括指令/代码和数据730的其他大容量存储设备)。此外,音频I/O724可耦合至第二总线720。注意,其他架构是可能的。例如,代替图12的点对点体系结构,系统可以实现多点分支总线或其他这样的体系结构。
下列示例示出了根据本发明的一个或多个方面的各种实现。
示例1是处理系统,包括:包括多个物理寄存器值的第一数据结构;包括多个引用所述第一数据结构的元素的多个指针的第二数据结构;包括多个移动消除集的第三数据结构,每一移动消除集包括表示两个或更多个逻辑数据寄存器的两个或更多个比特,第三数据结构进一步包括与每一个移动消除集相关联的至少一个比特,至少一个比特表示一个或多个逻辑标志寄存器;包括与标志寄存器共享所述第一数据结构的元素的数据寄存器的标识符的第四数据结构;以及,被配置成通过使所述第二数据结构的元素引用所述第一数据结构的元素来执行移动消除操作的移动消除逻辑,进一步被配置成使用第三数据结构和第四数据结构中的至少一个,来跟踪第一数据结构的元素的可用性的移动消除逻辑。
在示例2中,示例1的处理系统的移动消除逻辑可以被配置成响应于下列各项中的至少一项,更改所述第三数据结构中的标志比特的值:创建新移动消除集,将寄存器添加到移动消除集中,或将新的数据写入到所述第一数据结构中的标志寄存器中。
在示例3中,示例1的处理系统的移动消除逻辑可以被配置成检测和回收仅具有一个非零比特的移动消除集。
在示例4中,示例1的处理系统的移动消除逻辑可以被配置成响应于确定与所述移动消除集相关联的并表示逻辑标志寄存器的至少一个比特具有非零值,取消回收具有至少一个非零比特的移动消除集。
在示例5中,示例1的处理系统的第四数据结构可以包括:指示所述移动消除集的有效性的比特、指示逻辑标志寄存器与所述数据寄存器共享所述第一数据结构的条目的比特、标识与标志寄存器共享所述第一数据结构的元素的数据寄存器的第一标识符,以及,标识移动消除集的第二标识符。
在示例6中,示例5的处理系统的第一标识符和第二标识符可以通过共同数据字段来表示。
在示例7中,示例1的处理系统的移动消除逻辑可以进一步被配置成生成标识具有通过分配的微操作盖写的一个或多个逻辑寄存器的移动消除集的第一信号,以及,指示所述微操作的目的地寄存器的共享使用的第二信号。
在示例8中,示例7的处理系统的移动消除逻辑可以进一步被配置成响应于确定对应于所述标志寄存器的逻辑标志寄存器与第一移动消除集相关联,所述第一信号匹配所述第一移动消除集的所述标识符,以及所述第二信号为假,更新第四数据结构以指示标志寄存器不再与数据寄存器共享所述第一数据结构的元素。
示例9是一种执行数据操纵操作的方法,包括:通过计算系统,将多个物理寄存器值存储在第一数据结构中;在第二数据结构中,存储多个指针,每一指针都引用所述第一数据结构的元素;在第三数据结构中,存储多个移动消除集以及与每一个移动消除集相关联的至少一个比特,所述至少一个比特表示一个或多个逻辑标志寄存器,每一移动消除集包括表示两个或更多逻辑数据寄存器的两个或更多个比特;在第四数据结构中,存储与标志寄存器共享所述第一数据结构的元素的数据寄存器的标识符;通过使所述第二数据结构的元素引用所述第一数据结构的元素来执行移动消除操作;以及,使用所述第三数据结构和所述第四数据结构中的至少一个,跟踪所述第一数据结构的元素的可用性。
在示例10中,示例9的方法还可以进一步包括响应于下列各项中的至少一项,更改所述第三数据结构中的标志比特的值:创建新移动消除集,将寄存器添加到移动消除集中,或将新的数据写入到所述第一数据结构中的标志寄存器中。
在示例11中,示例9的方法还可以进一步包括检测和回收只有一个非零比特的移动消除集。
在示例12中,示例11的方法还可以进一步包括响应于判断与所述移动消除集相关联并表示逻辑标志寄存器的至少一个比特具有非零值,取消回收具有至少一个非零比特的移动消除集。
在示例13中,示例9的方法的第四数据结构可以包括:指示所述移动消除集的有效性的比特、指示逻辑标志寄存器与所述数据寄存器共享所述第一数据结构的条目的比特、标识与标志寄存器共享所述第一数据结构的元素的数据寄存器的第一标识符,以及,标识移动消除集的第二标识符。
在示例14中,示例13的方法的第一标识符和第二标识符可以通过共同数据字段来表示。
在示例15中,示例9的方法还可以进一步包括生成标识具有通过分配的微操作盖写的一个或多个逻辑寄存器的移动消除集的第一信号,以及,指示所述微操作的目的地寄存器的共享使用的第二信号。
在示例16中,示例15的方法还可以进一步包括响应于判断对应于所述标志寄存器的逻辑标志寄存器与第一移动消除集相关联,所述第一信号匹配所述第一移动消除集的所述标识符,以及所述第二信号为假,更新第四数据结构以指示标志寄存器不再与数据寄存器共享所述第一数据结构的元素。
示例17是包括存储器和耦合到存储器的处理系统的设备,其特征在于,处理系统被配置成执行示例9-16中的任何一个的方法。
示例18是包括可执行指令的计算机可读取的非瞬时的存储介质,可执行指令当由计算系统执行时使计算系统执行下列操作,包括:通过计算系统,将多个物理寄存器值存储在第一数据结构中;在第二数据结构中,存储多个指针,每一指针都引用所述第一数据结构的元素;在第三数据结构中,存储多个移动消除集以及与每一个移动消除集相关联的至少一个比特,所述至少一个比特表示一个或多个逻辑标志寄存器,每一移动消除集包括表示两个或更多逻辑数据寄存器的两个或更多个比特;在第四数据结构中,存储与标志寄存器共享所述第一数据结构的元素的数据寄存器的标识符;通过使所述第二数据结构的元素引用所述第一数据结构的元素来执行移动消除操作;以及,使用所述第三数据结构和所述第四数据结构中的至少一个,跟踪所述第一数据结构的元素的可用性。
在示例19中,示例18的计算机可读取的非瞬时的存储介质还可以进一步包括可执行指令导致计算系统响应于下列各项中的至少一项,更改所述第三数据结构中的标志比特的值:创建新移动消除集,将寄存器添加到移动消除集中,或将新的数据写入到所述第一数据结构中的标志寄存器中。
在示例20中,示例18的计算机可读取的非瞬时的存储介质还可以进一步包括可执行指令导致计算系统检测并回收仅具有一个非零比特的移动消除集。
在示例21中,示例20的计算机可读取的非瞬时的存储介质还可以进一步包括可执行指令导致计算系统响应于确定与所述移动消除集相关联并表示逻辑标志寄存器的至少一个比特具有非零值,取消回收具有至少一个非零比特的移动消除集。
在示例22中,示例18的计算机可读取的非瞬时的存储介质的第四数据结构可以包括:指示所述移动消除集的有效性的比特、指示逻辑标志寄存器与所述数据寄存器共享所述第一数据结构的条目的比特、标识与标志寄存器共享所述第一数据结构的元素的数据寄存器的第一标识符,以及,标识移动消除集的第二标识符。
在示例23中,示例22的方法的第一标识符和第二标识符可以通过共同数据字段来表示。
在示例24中,示例18的计算机可读取的非瞬时的存储介质还可以进一步包括可执行指令导致计算系统生成标识具有通过分配的微操作盖写的一个或多个逻辑寄存器的移动消除集的第一信号,以及,指示所述微操作的目的地寄存器的共享的使用的第二信号。
在示例25中,示例18的计算机可读取的非瞬时的存储介质还可以进一步包括可执行指令导致计算系统响应于判断对应于所述标志寄存器的逻辑标志寄存器与第一移动消除集相关联,所述第一信号匹配所述第一移动消除集的所述标识符,以及所述第二信号为假,更新第四数据结构以指示标志寄存器不再与数据寄存器共享所述第一数据结构的元素。
以对计算机存储器内数据位的操作的算法和符号表示,来呈现详细的描述的一些部分。这些算法描述和表示法是那些精通数据处理技术的人所使用的最有效地将他们的工作的实质传递到精通技术的其他人的手段。算法,这里一般是指导致所希望的结果的操作的独立的序列。这些操作是需要对物理量进行物理操控的操作。通常但非必须,这些量采用能被存储、传输、组合、比较、以及以其他方式操控的电信号或磁信号的形式。主要出于常见用途的考虑,将这些信号称为位、值、要素、符号、字符、项、数字等被证明是方便的。
然而,应当记住,所有这些和/或类似的术语用于与适当的物理量关联,并且仅仅是应用于这些量的方便的标记。除非特别声明,从上文的讨论中显而易见地看出,应该理解,在整个本说明书中,利用诸如“加密”、“解密”、“存储”、“提供”、“导出”、“获取”、“接收”、“认证”、“删除”、“执行”、“请求”、“通信”等等之类的术语的讨论,引用了计算系统,和/或类似的电子计算设备的动作和/或进程,它们操纵和/或转换表示为计算系统的寄存器和存储器内的物理(例如,电子)量的数据,将这些数据转换为类似地表示为计算系统存储器或寄存器和/或其他这样的信息存储器、传输和/或显示设备内的物理量的其他数据。
在此可使用词语“示例”或“示例性”意指用作示例、实例或说明。本文中被描述为“示例”或“示例性”的任何方面或设计不一定被解释为优选于或更优于其他方面或设计。相反,使用词语“示例”或“示例性”旨在以具体的方式呈现各个概念。如本申请中所使用的,术语“或”意指包括性“或”而非互斥性“或”。即,除非另有指定或从上下文可以清楚,“X包括A或B”意指任何自然的包括性排列。即,如果X包括A;X包括B;或X包括A和B两者,则在任何以上情况下,都满足“X包括A或B。”此外,本申请中和所附权利要求书所使用的冠词“一”和“一个”一般应解释为一个或多个摂,除非另有指定或从上下文将清楚是指单数形式。此外,术语“实施例”或“一个实施例”或“实现”或“一个实现”不旨在意指同一个实施例或实现,除非这样描述。此外,如此处所使用的术语“第一”、“第二”、“第三”、“第四”等等旨在用作区别不同的元件的标记,可以不一定具有根据它们的数字表示的序数含义。
此处所描述的各实施例也可以涉及用于执行此处的操作的设备。此装置可专门构造来用于所需目的,或其可包括通用计算机,该通用计算机由存储在该计算机内的计算机程序有选择地激活或重新配置。这样的计算机程序可以存储在非瞬时的计算机可读取的存储介质上,诸如,但不仅限于,任何类型的磁(光)盘,包括软盘、光盘、CD-ROM,以及磁性光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,闪存,或适于存储电子指令的任何类型的介质。术语“计算机可读取的存储介质”应该被视为包括存储一个或多个指令集的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的缓存和服务器)。术语“计算机可读介质”还应该被视为包括能够存储、编码或携带由机器执行的一组指令并且使机器执行各实施例的方法中的任何一个或多个的任何介质。术语“计算机可读取的存储介质”相应地应该被视为包括,但不局限于,固态存储器、光学介质、磁性介质,能够存储由机器执行的一组指令并且使机器执行各实施例的方法中的任何一个或多个的任何介质。
本文呈现的算法及显示并非固有地与任何特定计算机或其它装置相关。可以将各种通用系统与根据本文教导的程序一起使用,或可以证明构造更专门的装置来实现所要求的方法步骤是方便的。各种这些系统的所需结构将从本申请中的描述中呈现。另外,不参考任何特定编程语言来描述实施例。将会理解,可使用多种编程语言来实现本文描述的实施例的教导。
上面的描述阐述了诸如特定系统、组件、方法等等的示例之类的很多具体细节,以便提供对多个实施例的更全面的理解。然而,对本领域技术人员将显而易见的是,没有这些具体细节也可实施至少某些实施例。在其他情况下,没有详细示出或以简单框图格式来呈现已知的组件或方法,以便避免对各实施例造成不必要的模糊。如此,上文阐述的具体细节只是示例性的。特定实现可能不同于这些示例性细节,仍在各实施例的范围内。
应当理解,以上描述旨在是说明性的而非限制性的。在阅读并理解以上描述之后,许多其它实施方式对本领域内技术人员而言将是显而易见的。因此,实施例的范围应参考所附权利要求书以及使这些权利要求享有权利的等效方案的完全范围来确定。

Claims (17)

1.一种处理系统,包括:
包括多个物理寄存器值的第一数据结构;
包括多个引用所述第一数据结构的元素的多个指针的第二数据结构;
包括多个移动消除集的第三数据结构,每一个移动消除集包括表示两个或更多个逻辑数据寄存器的两个或更多比特,所述第三数据结构进一步包括与每一个移动消除集相关联的至少一个比特,所述至少一个比特表示一个或多个逻辑标志寄存器;
包括与标志寄存器共享所述第一数据结构的元素的数据寄存器的标识符的第四数据结构;以及
移动消除逻辑,所述移动消除逻辑被配置成通过导致所述第二数据结构的元素引用所述第一数据结构的元素,来执行移动消除操作,所述移动消除逻辑进一步被配置成使用所述第三数据结构和所述第四数据结构中的至少一个来跟踪所述第一数据结构的元素的可用性。
2.如权利要求1所述的处理系统,其特征在于,所述移动消除逻辑被配置成响应于下列各项中的至少一项来更改所述第三数据结构中的标志比特的值:创建新移动消除集,将寄存器添加到移动消除集中,或将新的数据写入到所述第一数据结构中的标志寄存器中。
3.如权利要求1所述的处理系统,其特征在于,所述移动消除逻辑进一步被配置成检测和回收只有一个非零比特的移动消除集。
4.如权利要求3所述的处理系统,其特征在于,所述移动消除逻辑被配置成响应于确定与所述移动消除集相关联并且表示逻辑标志寄存器的至少一个比特具有非零值,取消回收具有至少一个非零比特的移动消除集。
5.如权利要求1所述的处理系统,其特征在于,所述第四数据结构包括:表示所述移动消除集的有效性的比特、表示逻辑标志寄存器与所述数据寄存器共享所述第一数据结构的条目的比特、a标识与标志寄存器共享所述第一数据结构的元素的数据寄存器的第一标识符,以及,标识移动消除集的第二标识符。
6.如权利要求5所述的处理系统,其特征在于,所述第一标识符以及所述第二标识符通过共同的数据字段来表示。
7.如权利要求1所述的处理系统,其特征在于,所述移动消除逻辑进一步被配置成生成标识具有通过分配的微操作盖写的一个或多个逻辑寄存器的移动消除集的第一信号,以及指示所述微操作的目的地寄存器的共享使用的第二信号。
8.如权利要求7所述的处理系统,其特征在于,所述移动消除逻辑进一步被配置成响应于确定对应于所述标志寄存器的逻辑标志寄存器与第一移动消除集相关联,所述第一信号匹配所述第一移动消除集的所述标识符,并且所述第二信号为假,更新所述第四数据结构以指示标志寄存器不再与数据寄存器共享所述第一数据结构的元素。
9.一种执行数据操纵操作的方法,包括:
通过计算系统,将多个物理寄存器值存储在第一数据结构中;
在第二数据结构中存储多个指针,每一指针都引用所述第一数据结构的元素;
在第三数据结构中,存储多个移动消除集以及与每一个移动消除集相关联的至少一个比特,所述至少一个比特表示一个或多个逻辑标志寄存器,每一移动消除集包括表示两个或更多个逻辑数据寄存器的两个或更多个比特;
在第四数据结构中存储与标志寄存器共享所述第一数据结构的元素的数据寄存器的标识符;
通过使所述第二数据结构的元素引用所述第一数据结构的元素来执行移动消除操作;以及
使用所述第三数据结构和所述第四数据结构中的至少一个,来跟踪所述第一数据结构的元素的可用性。
10.如权利要求9所述的方法,其特征在于,进一步包括响应于下列各项中的至少一项,更改所述第三数据结构中的标志比特的值:创建新移动消除集,将寄存器添加到移动消除集中,或将新的数据写入到所述第一数据结构中的标志寄存器中。
11.如权利要求9所述的方法,其特征在于,进一步包括检测和回收仅具有一个非零比特的移动消除集。
12.如权利要求11所述的方法,其特征在于,进一步包括响应于判断与所述移动消除集相关联并表示逻辑标志寄存器的至少一个比特具有非零值,取消回收具有至少一个非零比特的移动消除集。
13.如权利要求9所述的方法,其特征在于,所述第四数据结构包括:指示所述移动消除集的有效性的比特、指示逻辑标志寄存器与所述数据寄存器共享所述第一数据结构的条目的比特、标识与标志寄存器共享所述第一数据结构的元素的数据寄存器的第一标识符,以及,标识移动消除集的第二标识符。
14.如权利要求13所述的方法,其特征在于,所述第一标识符以及所述第二标识符通过共同数据字段来表示。
15.如权利要求9所述的方法,其特征在于,进一步包括生成标识具有通过分配的微操作盖写的一个或多个逻辑寄存器的移动消除集的第一信号,以及指示所述微操作的目的地寄存器的共享使用的第二信号。
16.如权利要求7所述的方法,其特征在于,进一步包括响应于确定对应于所述标志寄存器的逻辑标志寄存器与第一移动消除集相关联,所述第一信号匹配所述第一移动消除集的所述标识符,以及所述第二信号为假,更新所述第四数据结构以指示标志寄存器不再与数据寄存器共享所述第一数据结构的元素。
17.一种设备,包括:
存储器;
以及处理系统,其耦合到所述存储器,其中所述处理系统被配置成执行如权利要求9-16中的任何一个所述的方法。
CN201480014563.4A 2013-04-11 2014-04-09 用于移动消除操作中的标志跟踪的系统和方法 Active CN105190538B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/861,009 2013-04-11
US13/861,009 US9292288B2 (en) 2013-04-11 2013-04-11 Systems and methods for flag tracking in move elimination operations
PCT/US2014/033486 WO2014169032A1 (en) 2013-04-11 2014-04-09 Systems and methods for flag tracking in move elimination operations

Publications (2)

Publication Number Publication Date
CN105190538A true CN105190538A (zh) 2015-12-23
CN105190538B CN105190538B (zh) 2018-11-09

Family

ID=51687620

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480014563.4A Active CN105190538B (zh) 2013-04-11 2014-04-09 用于移动消除操作中的标志跟踪的系统和方法

Country Status (8)

Country Link
US (1) US9292288B2 (zh)
EP (1) EP2984557B1 (zh)
KR (1) KR101655713B1 (zh)
CN (1) CN105190538B (zh)
BR (1) BR112015022683B1 (zh)
RU (1) RU2628156C2 (zh)
TW (1) TWI528291B (zh)
WO (1) WO2014169032A1 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9823925B2 (en) * 2014-03-28 2017-11-21 Intel Corporation Instruction and logic for a logical move in an out-of-order processor
US11221853B2 (en) 2015-08-26 2022-01-11 Huawei Technologies Co., Ltd. Method of dispatching instruction data when a number of available resource credits meets a resource requirement
US10853077B2 (en) * 2015-08-26 2020-12-01 Huawei Technologies Co., Ltd. Handling Instruction Data and Shared resources in a Processor Having an Architecture Including a Pre-Execution Pipeline and a Resource and a Resource Tracker Circuit Based on Credit Availability
US10198264B2 (en) * 2015-12-15 2019-02-05 Intel Corporation Sorting data and merging sorted data in an instruction set architecture
US20170177336A1 (en) * 2015-12-22 2017-06-22 Intel Corporation Hardware cancellation monitor for floating point operations
US10261790B2 (en) * 2016-03-31 2019-04-16 Intel Corporation Memory copy instructions, processors, methods, and systems
US10114768B2 (en) * 2016-08-29 2018-10-30 Intel Corporation Enhance memory access permission based on per-page current privilege level
US10713177B2 (en) 2016-09-09 2020-07-14 Intel Corporation Defining virtualized page attributes based on guest page attributes
CN110419030B (zh) * 2016-09-28 2024-04-19 英特尔公司 测量非均匀存储器访问(numa)系统内按节点的带宽
US10282296B2 (en) * 2016-12-12 2019-05-07 Intel Corporation Zeroing a cache line
US10949205B2 (en) 2018-12-20 2021-03-16 International Business Machines Corporation Implementation of execution compression of instructions in slice target register file mapper
CN112286577B (zh) * 2020-10-30 2022-12-06 上海兆芯集成电路有限公司 处理器及其操作方法
CN117555600B (zh) * 2023-10-20 2024-08-23 海光信息技术(成都)有限公司 用于数据通路的操作方法、计算装置及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5499352A (en) * 1993-09-30 1996-03-12 Intel Corporation Floating point register alias table FXCH and retirement floating point register array
WO2000007096A1 (en) * 1998-07-31 2000-02-10 Advanced Micro Devices, Inc. Processor configured to map logical register numbers to physical register numbers using virtual register numbers
US6505293B1 (en) * 1999-07-07 2003-01-07 Intel Corporation Register renaming to optimize identical register values
US20030126410A1 (en) * 2002-01-02 2003-07-03 Guillermo Savransky System and method of reducing the number of copies from alias registers to real registers in the commitment of instructions
CN1641566A (zh) * 1998-12-31 2005-07-20 英特尔公司 运算标志寄存器的延迟重新分配
US20090327661A1 (en) * 2008-06-30 2009-12-31 Zeev Sperber Mechanisms to handle free physical register identifiers for smt out-of-order processors
US20110208918A1 (en) * 2009-12-26 2011-08-25 Shlomo Raikin Move elimination and next page prefetcher

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6047369A (en) * 1994-02-28 2000-04-04 Intel Corporation Flag renaming and flag masks within register alias table
US5838941A (en) 1996-12-30 1998-11-17 Intel Corporation Out-of-order superscalar microprocessor with a renaming device that maps instructions from memory to registers
US6341370B1 (en) * 1998-04-24 2002-01-22 Sun Microsystems, Inc. Integration of data prefetching and modulo scheduling using postpass prefetch insertion
US6625723B1 (en) * 1999-07-07 2003-09-23 Intel Corporation Unified renaming scheme for load and store instructions
US6594754B1 (en) * 1999-07-07 2003-07-15 Intel Corporation Mapping destination logical register to physical register storing immediate or renamed source register of move instruction and using mapping counters
US6591332B1 (en) 2000-04-28 2003-07-08 Hewlett-Packard Development Company, L.P. Apparatus and method for tracking flushes of cache entries in a data processing system
US7155599B2 (en) * 2000-12-29 2006-12-26 Intel Corporation Method and apparatus for a register renaming structure
US6772317B2 (en) * 2001-05-17 2004-08-03 Intel Corporation Method and apparatus for optimizing load memory accesses
US6889344B2 (en) 2001-08-09 2005-05-03 International Business Machines Corporation System and method for exposing hidden events on system buses
US20030217249A1 (en) * 2002-05-20 2003-11-20 The Regents Of The University Of Michigan Method and apparatus for virtual register renaming to implement an out-of-order processor
US20050050310A1 (en) 2003-07-15 2005-03-03 Bailey Daniel W. Method, system, and apparatus for improving multi-core processor performance
US7711898B2 (en) * 2003-12-18 2010-05-04 Intel Corporation Register alias table cache to map a logical register to a physical register
US7895382B2 (en) 2004-01-14 2011-02-22 International Business Machines Corporation Method and apparatus for qualifying collection of performance monitoring events by types of interrupt when interrupt occurs
WO2009076324A2 (en) 2007-12-10 2009-06-18 Strandera Corporation Strand-based computing hardware and dynamically optimizing strandware for a high performance microprocessor system
US8799882B2 (en) * 2005-12-07 2014-08-05 Microsoft Corporation Compiler support for optimizing decomposed software transactional memory operations
US7721119B2 (en) 2006-08-24 2010-05-18 International Business Machines Corporation System and method to optimize multi-core microprocessor performance using voltage offsets
TWI342498B (en) 2007-01-12 2011-05-21 Asustek Comp Inc Multi-processor system and performance enhancement method thereof
US20120005459A1 (en) 2010-12-28 2012-01-05 Advanced Micro Devices, Inc. Processor having increased performance and energy saving via move elimination
US8661230B2 (en) * 2011-04-15 2014-02-25 International Business Machines Corporation Allocation of counters from a pool of counters to track mappings of logical registers to physical registers for mapper based instruction executions
US9298460B2 (en) * 2011-11-29 2016-03-29 International Business Machines Corporation Register management in an extended processor architecture
US9454371B2 (en) * 2011-12-30 2016-09-27 Intel Corporation Micro-architecture for eliminating MOV operations
US9733939B2 (en) * 2012-09-28 2017-08-15 Intel Corporation Physical reference list for tracking physical register sharing
US10417001B2 (en) * 2012-12-27 2019-09-17 Intel Corporation Physical register table for eliminating move instructions
US9182986B2 (en) * 2012-12-29 2015-11-10 Intel Corporation Copy-on-write buffer for restoring program code from a speculative region to a non-speculative region
US9256433B2 (en) * 2013-03-15 2016-02-09 Intel Corporation Systems and methods for move elimination with bypass multiple instantiation table
US9823925B2 (en) * 2014-03-28 2017-11-21 Intel Corporation Instruction and logic for a logical move in an out-of-order processor

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5499352A (en) * 1993-09-30 1996-03-12 Intel Corporation Floating point register alias table FXCH and retirement floating point register array
WO2000007096A1 (en) * 1998-07-31 2000-02-10 Advanced Micro Devices, Inc. Processor configured to map logical register numbers to physical register numbers using virtual register numbers
CN1641566A (zh) * 1998-12-31 2005-07-20 英特尔公司 运算标志寄存器的延迟重新分配
US6505293B1 (en) * 1999-07-07 2003-01-07 Intel Corporation Register renaming to optimize identical register values
US20030126410A1 (en) * 2002-01-02 2003-07-03 Guillermo Savransky System and method of reducing the number of copies from alias registers to real registers in the commitment of instructions
US20090327661A1 (en) * 2008-06-30 2009-12-31 Zeev Sperber Mechanisms to handle free physical register identifiers for smt out-of-order processors
US20110208918A1 (en) * 2009-12-26 2011-08-25 Shlomo Raikin Move elimination and next page prefetcher

Also Published As

Publication number Publication date
WO2014169032A1 (en) 2014-10-16
US20140310504A1 (en) 2014-10-16
EP2984557A1 (en) 2016-02-17
BR112015022683A2 (pt) 2018-07-31
TWI528291B (zh) 2016-04-01
EP2984557A4 (en) 2017-12-20
TW201506797A (zh) 2015-02-16
RU2628156C2 (ru) 2017-08-15
CN105190538B (zh) 2018-11-09
US9292288B2 (en) 2016-03-22
KR20150119038A (ko) 2015-10-23
EP2984557B1 (en) 2020-03-04
RU2015138900A (ru) 2017-03-16
KR101655713B1 (ko) 2016-09-07
BR112015022683B1 (pt) 2021-12-21

Similar Documents

Publication Publication Date Title
CN105190538A (zh) 用于移动消除操作中的标志跟踪的系统和方法
CN106648554B (zh) 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置
US9495159B2 (en) Two level re-order buffer
CN104049950B (zh) 带有旁路多个实例化表的移动消除的系统和方法
CN104204990B (zh) 在使用共享虚拟存储器的处理器中加速操作的装置和方法
US9870209B2 (en) Instruction and logic for reducing data cache evictions in an out-of-order processor
US9823925B2 (en) Instruction and logic for a logical move in an out-of-order processor
EP3123304B1 (en) Instruction and logic for sorting and retiring stores
CN104050023A (zh) 用于实现事务存储器的系统和方法
CN104303142A (zh) 使用索引阵列和有限状态机的分散
US9652236B2 (en) Instruction and logic for non-blocking register reclamation
TWI738679B (zh) 處理器、運算系統及用以執行運算操作之方法
CN108369517A (zh) 聚合分散指令
CN109313607A (zh) 用于利用所指示的检查位值来检查位的位检查处理器、方法、系统和指令
CN105320494A (zh) 带有一致的和非一致的子系统的存储器排序
EP3274815B1 (en) Apparatus and method for inter-strand communication
WO2017168197A1 (en) Apparatus and method for improving performance of inter-strand communications

Legal Events

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