CN104049950A - 带有旁路多个实例化表的移动消除的系统和方法 - Google Patents
带有旁路多个实例化表的移动消除的系统和方法 Download PDFInfo
- Publication number
- CN104049950A CN104049950A CN201410098517.9A CN201410098517A CN104049950A CN 104049950 A CN104049950 A CN 104049950A CN 201410098517 A CN201410098517 A CN 201410098517A CN 104049950 A CN104049950 A CN 104049950A
- Authority
- CN
- China
- Prior art keywords
- collection
- register
- data
- data manipulation
- data structure
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 63
- 230000008030 elimination Effects 0.000 title claims abstract description 31
- 238000003379 elimination reaction Methods 0.000 title claims abstract description 31
- 238000012545 processing Methods 0.000 claims abstract description 19
- 241001269238 Data Species 0.000 claims description 6
- 238000003860 storage Methods 0.000 description 24
- 230000008569 process Effects 0.000 description 17
- 238000012856 packing Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 9
- 230000001052 transient effect Effects 0.000 description 9
- 238000004422 calculation algorithm Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 8
- 238000007667 floating Methods 0.000 description 8
- 239000012141 concentrate Substances 0.000 description 7
- 238000009826 distribution Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 230000000712 assembly Effects 0.000 description 4
- 238000000429 assembly Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000008707 rearrangement Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- BYACHAOCSIPLCM-UHFFFAOYSA-N 2-[2-[bis(2-hydroxyethyl)amino]ethyl-(2-hydroxyethyl)amino]ethanol Chemical compound OCCN(CCO)CCN(CCO)CCO BYACHAOCSIPLCM-UHFFFAOYSA-N 0.000 description 1
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000013011 mating Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本申请公开了带有旁路多个实例化表的移动消除的系统和方法。带有旁路多个实例化表(MIT)逻辑的用于移动操作消除的系统和方法。示例处理系统可以包括:被配置成存储多个物理寄存器值的第一数据结构;被配置成存储多个指针的第二数据结构,每一指针都引用第一数据结构的元素;包括多个移动消除集的第三数据结构,每一移动消除集都包括表示多个逻辑寄存器的多个比特;以及被配置成通过使第二数据结构的元素引用第一数据结构的元素来执行数据操纵操作的逻辑,所述逻辑进一步被配置成通过执行第三数据结构的单个更新来反映两个或更多数据操纵操作的结果。
Description
技术领域
本发明一般涉及计算机系统,具体而言,涉及提高由计算机系统执行数据复制指令的效率。
背景
物理寄存器之间的数据复制操作代表由处理器执行的大部分操作。因此,优化它们的执行可以提高处理器的总体性能。
附图简述
本发明是通过示例而不是作为限制来说明的,当与附图一起考虑时并参考下列详细描述时,可以更完全地理解本发明,在附图中:
图1描绘了根据本公开的一个或多个方面的示例计算机系统的高级组件图示;
图2描绘了根据本公开的一个或多个方面的处理器的框图;
图3a-3b示意地示出了根据本公开的一个或多个方面的处理器微体系结构的要素;
图4示意地示出了根据本公开的一个或多个方面的图1的示例计算机系统100的示例处理器及其他组件的多个方面;
图5示意地示出了根据本公开的一个或多个方面的通过寄存器别名使用(aliasing)来执行移动操作的示例;
图6a-6c示意地示出了根据本公开的一个或多个方面的使用多个实例化表(MIT)来进行物理寄存器文件(PRF)条目跟踪;
图7a-7c示意地示出了根据本公开的一个或多个方面的MIT分配和预留逻辑;
图8a-8c示意地示出了根据本公开的一个或多个方面的MIT孤立回收逻辑;
图9a-9c、10a-10c以及11a-11c示意地示出了根据本公开的一个或多个方面的通过旁路MIT逻辑来实现的数据操纵操作的多个示例;
图12示意地示出了根据本公开的一个或多个方面实现移动消除逻辑的示例电路;
图13描绘了根据本公开的一个或多个方面的示例方法的流程图;以及
图14描绘了根据本公开的一个或多个方面的示例计算机系统的框图。
具体实施方式
此处描述了用于利用旁路多个实例化表(MIT)逻辑来实现移动消除的计算机系统以及相关的技术。此处的“移动消除(move elimination)”应该是指执行寄存器复制操作,而不使用执行单元(例如,通过修改寄存器别名表中的条目)。
出于提高指令执行的效率的目的,处理器可以实现寄存器别名使用:可以使用称为物理寄存器文件(PRF)的第一数据结构来存储物理寄存器值,并且可以使用称为寄存器别名表(RAT)的第二数据结构来存储将逻辑寄存器标识符(诸如,例如,R8或AX)映射到存储在PRF中的值的指针。寄存器别名使用允许通过修改别名表中的条目而不将这些指令发送到执行单元,来执行某些指令。这样的指令的示例包括寄存器归零指令(诸如,例如,XOR AX,AX)和寄存器复制指令(诸如MOV指令)。由于寄存器复制指令不会创建新的值,因此,可以将源寄存器指针复制到RAT中的目的地寄存器指针,以便指令将不需要使用执行单元和另一PRF条目。此过程被称为“移动消除”,因为从发送到执行单元的流中消除了移动指令。
在上文所描述的寄存器别名使用方案中,可能需要跟踪PRF表条目的使用,以便确定何时可以释放PRF条目以供新指令使用。可以使用称为多个实例化表(MIT)的第三数据结构来跟踪PRF表条目的使用,如下面更详细地描述的。
此处所描述的系统和方法可以预先计算两个或更多数据操纵操作的依赖关系,然后执行单个MIT更新以反映两个或更多操作的结果,如此,改善移动消除操作的时序和功率消耗方面。下面作为示例而并非作为限制地详细描述了上面引用的方法和系统的各方面。
在下面的描述中,阐述了很多具体细节,诸如特定类型的处理器和系统配置、特定硬件结构、特定体系结构和微体系结构细节、特定寄存器配置、特定指令类型、特定系统组件、特定测量值/高度、特定处理器流水线级和操作等等的示例,以便提供对本发明的全面的理解。然而,对本领域普通技术人员显而易见的是,可以不必使用这些具体细节来实施本发明。在其他情况下,没有详细描述已知的组件或方法,诸如特定和替代处理器体系结构、特定逻辑电路/用于描述算法的代码、特定固件代码、特定互连操作、特定逻辑配置、特定制造技术和材料、特定编译器实现、代码中的算法的特定表达、特定断电和选通技术/逻辑及计算机系统的其他特定操作细节,以避免对本发明造成不必要的模糊。
虽然将处理器参考来描述下列各实施例,但是,其他实施例也适用于其他类型的集成电路和逻辑设备。可以将本发明的各实施例的类似的技术和原理应用于可以得益于较高流水线吞吐量和改善的性能的其他类型的电路或半导体器件。本发明的各实施例的原理适用于执行数据操纵的任何处理器或机器。然而,本发明不仅限于执行512比特、256比特、128比特、64比特、32比特或16比特数据操作的处理器或机器,并可以应用于其中执行对数据的操纵或管理的任何处理器和机器。另外,下列描述提供了示例,为便于说明,各个附图示出了各种示例。然而,这些示例不应该以限制的方式来解释,因为它们只是提供本发明的各实施例的示例,而并非提供本发明的各实施例的所有可能的实现的详细清单。
虽然下面的示例在执行单元以及逻辑电路的上下文中描述了指令处理和分布,但是本发明的其他实施例可以通过存储在机器可读的、有形的介质上的数据或指令来完成,这些数据或指令当由机器执行时,使机器执行根据本发明的至少一个实施例的功能。在一个实施例中,与本发明的各实施例相关联的功能是以机器可执行指令来实现的。指令可以用来使利用指令编程的通用或专用的处理器来执行本发明的步骤。本发明的各实施例可以作为计算机程序产品或软件来提供,该计算机程序产品或软件可以包括在其上存储了机器或计算机可读介质,指令可以被用来编程计算机(或其他电子器件)以执行根据本发明的各实施例的一个或多个操作。可另选地,可以由包含用于执行操作的固定功能逻辑的特定硬件组件,或由编程的计算机组件和固定功能硬件组件的任何组合,来执行本发明的各实施例的操作。
用于编程逻辑以执行本发明的各实施例的指令可以存储在系统中的存储器内,诸如DRAM、缓存、闪存,或其他存储器。此外,指令还可以通过网络或通过其他计算机可读介质来分发。如此,机器可读的介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,但不仅限于,软盘、光盘、压缩光盘、只读存储器(CD-ROM),以及磁光盘、只读存储器(ROMs)、随机存取存储器(RAM)、可擦与可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)、磁卡或光卡、闪存,或用于通过电的、光学的、声音或其他形式的传播信号(例如,载波、红外信号、数字信号等等)通过因特网来传输信息的有形的,机器可读的存储器。相应地,计算机可读介质包括适于以可由机器(例如,计算机)读取的形式来存储或传输电子指令或信息的任何类型的有形的机器可读取的介质。
此处“处理器”应该是指能够执行指令编码算术、逻辑或I/O操作的设备。在一个说明性示例中,处理器可以遵循冯诺依曼体系结构模型,并可以包括算术逻辑单元(ALU)、控制单元以及多个寄存器。另一方面,处理器可以包括一个或多个处理器核,因此可以是通常能够处理单指令流水线的单核处理器,或同时可以处理多个指令流水线的多核处理器。在另一方面,处理器可以实现为单个集成电路,两个或更多个集成电路,或可以是多芯片模块(例如,其中,单个微处理器晶片被包括在单个集成电路封装中,因此共享单个插槽)的组件。
图1描绘了根据本发明一个或多个方面的计算机系统的一个示例的高级的组件图示。根据此处所描述的实施例,计算机系统100可以包括处理器102来使用包括执行用于处理数据的算法的逻辑的执行单元。系统100是基于位于加利福尼亚州圣克拉拉市的英特尔公司所提供的PENTIUMIIITM、PENTIUM4TM、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,该指令解码器228又解码或解释它们。例如,在一个实施例中,解码器将接收到的指令解码为机器可以执行的一个或多个叫做“微指令”或“微操作”的操作。在其他实施例中,解码器将指令解析为微体系结构用来执行根据一个实施例的操作的操作码和对应的数据和控制字段。在一个实施例中,跟踪高速缓存230获取已解码的微操作,并将它们组装为程序有序序列或uop队列234中的跟踪以供执行。当跟踪高速缓存230遇到复杂指令时,微代码ROM232提供完成操作所需的微操作。
某些指令被转换为单个微操作,而其他指令需要多个微操作才能完成完全操作。在一个实施例中,如果需要四个以上的微操作才能完成指令,则解码器228访问微代码ROM232来执行指令。对于一个实施例,指令可以被解码为少量的微操作,用于在指令解码器228处进行处理。在另一个实施例中,指令可以存储在微代码ROM232内,以防需要若干个微操作才能完成该操作。跟踪高速缓存230引用入口点可编程逻辑阵列(PLA)来确定用于从微代码ROM232中读取微代码序列的正确的微指令指针,以完成根据一个实施例的一个或多个指令。在微代码ROM232完成对用于指令的微操作的排序之后,机器的前端201恢复从跟踪高速缓存230获取微操作。
无序执行引擎203是准备指令以供执行的地方。无序执行逻辑具有若干个缓冲器,以平缓和重新排序指令的流,以在它们离开流水线并被调度供执行时优化性能。分配器逻辑分配每一个微操作需要的以便执行的机器缓冲器和资源。寄存器别名使用逻辑将逻辑寄存器映射到寄存器文件中的条目。分配器还在指令调度器(存储器调度器、快速调度器202、慢/一般浮点调度器204以及简单浮点调度器206)的前面,为两个微操作队列中的一个中的每一个微操作分配条目,一个用于存储器操作而一个用于非存储器操作。微操作调度器202、204、206基于它们的依赖的输入寄存器操作数源的就绪状态以及微操作完成它们的操作所需的执行资源的可用性,来确定微操作何时准备好执行。一个实施例的快速调度器202可以在主时钟周期的每一半调度,而其他调度器只能每个主处理器时钟周期调度一次。调度器仲裁分派端口,来调度微操作以供执行。
物理寄存器文件208、210在调度器202、204、206和执行块211中的执行单元212、214、216、218、220、222、224之间。对于整数和浮点运算,分别有单独的寄存器文件208、210。一个实施例的每一个寄存器文件208、210还包括旁路网络,该旁路网络可以将还没有被写入到寄存器文件中的刚刚完成的结果旁路或转发到新依赖的微操作。整数寄存器文件208和浮点寄存器文件210还能够与其他文件进行数据交换。对于一个实施例,整数寄存器文件208被拆分成两个单独的寄存器文件,一个寄存器文件用于低阶32比特的数据,第二寄存器文件用于高阶32比特的数据。一个实施例的浮点寄存器文件210具有128比特宽的条目,因为浮点指令通常具有宽度从64到128比特的操作数。
执行块211包含其中实际执行指令的执行单元212、214、216、218、220、222、224。此部分包括寄存器文件208、210,这些寄存器文件208,210存储微指令需要执行的整数和浮点数据操作数值。一个实施例的处理器200包括若干个执行单元:地址生成单元(AGU)212、AGU214、快速ALU216、快速ALU218、慢速ALU220、浮点ALU222、浮点移动单元224。对于一个实施例,浮点执行块222、224执行浮点、MMX、SIMD以及SSE或其他操作。一个实施例的浮点ALU222包括64比特x64比特浮点除法器,以执行除法、平方根,以及剩余微操作。对于本发明的各实施例,可以利用浮点硬件来处理涉及浮点值的指令。在一个实施例中,ALU运算进入高速ALU执行单元216、218。一个实施例的快速ALU216、218可以执行快速的操作,带有一半时钟周期的有效延迟。对于一个实施例,大多数复杂的整数操作进入慢速ALU220,因为慢速ALU220包括用于长延迟类型的操作的整数执行硬件,诸如乘法器、移位器、标记逻辑以及分支处理。存储器加载/存储操作是由AGU212、214执行的。对于一个实施例,整数ALU216、218、220是在对64比特数据操作数执行整数操作的上下文中描述的。在替换实施例中,ALU216、218、220可被实现为支持各种数据比特,包括16、32、128、256等等。类似地,浮点单元222,224可被实现为支持具有各种宽度的比特的操作数的范围。对于一个实施例,浮点单元222、224可以结合SIMD和多媒体指令对128比特宽的打包数据操作数进行操作。
在一个实施例中,微操作调度器202、204、206在父加载完成执行之前分派依赖的操作。由于微操作是在处理器200中投机性地调度和执行的,因此处理器200还包括处理存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则在流水线中可能会有带有临时不正确的数据的离开调度器的正在执行的依赖的操作。重播机制跟踪并重新执行使用不正确的数据的指令。依赖的操作应该被重播,而独立的操作被允许完成。处理器的一个实施例的调度器和重播机制还被设计为捕捉用于文本字符串比较操作的指令序列。
术语“寄存器”可以表示被用作标识操作数的指令的一部分的板上的处理器存储器位置。换言之,寄存器可以是从处理器外部可使用的那些寄存器(从编程器的角度来看)。然而,实施例的寄存器在特定类型的电路的意义上不应该受限制。相反,实施例的寄存器能够存储和提供数据并执行此处所描述的功能。此处所描述的寄存器可以通过处理器内的电路使用任意数量的不同的技术来实现,诸如专用物理寄存器、使用寄存器别名的动态地分配的物理寄存器、专用和动态地分配的物理寄存器的组合等等。在一个实施例中,整数寄存器存储32比特整型数据。一个实施例的寄存器文件还包含用于打包的数据的八个多媒体SIMD寄存器。对于下面的讨论,寄存器被理解为是被设计为保存打包的数据的数据寄存器,诸如利用加利福尼亚州Santa Clara的Intel Corporation的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,指令转换后备缓冲器436耦合到指令获取单元438,指令获取单元438耦合到解码单元440。解码单元或解码器可以解码指令,并生成一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号作为输出,它们从原始指令解码得出、或以别的方式反映、或来源于原始指令。解码器可以使用各种不同的机制来实现。合适的机制的示例包括但不仅限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等等。指令高速缓存单元434进一步耦合到存储器单元470中的2级(L2)高速缓存单元476。解码单元440耦合到执行引擎单元450中的重命名/分配器单元452。
执行引擎单元450包括耦合到隐退单元454的重命名/分配器单元452和一组一个或多个调度器单元456。调度器单元456表示任意数量的不同的调度器,包括预留站、中心指令窗口等等。调度器单元456耦合到物理寄存器文件单元458。物理寄存器文件单元458中的每一个都表示一个或多个物理寄存器文件,其中不同的文件存储一种或多种不同的数据类型,诸如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点等等、状态(例如,是要被执行的下一指令的地址的指令指针)等等。物理寄存器文件单元458被隐退单元454重叠,以示出可以实现寄存器别名使用和无序执行的各种方式(例如,使用重新排序缓冲器和隐退寄存器文件,使用未来的文件,历史缓冲器,以及隐退寄存器文件;使用寄存器图和寄存器的池;等等)。一般而言,体系结构寄存器从处理器的外部或从编程器的角度可见。寄存器不仅限于任何已知的特定类型的电路。各种不同类型的寄存器都是合适的,只要它们能够存储和提供如此处所描述的数据。合适的寄存器的示例包括,但不仅限于,专用物理寄存器,使用寄存器别名的动态地分配的物理寄存器,专用和动态地分配的物理寄存器的组合,等等。隐退单元454和物理寄存器文件单元458耦合到执行群集460。执行群集460包括一组一个或多个执行单元162和一组一个或多个存储器访问单元464。执行单元462可以对各种类型的数据(例如,标量浮点、打包整数、打包浮点、向量整数、向量浮点)执行各种操作(例如,位移、加法、减法、乘法)。尽管一些实施例可以包括专用于特定功能或功能组的若干个执行单元,但是,其他实施例可以包括一个执行单元或所有都执行所有功能的多个执行单元。调度器单元456、物理寄存器文件单元458,以及执行群集460被示为可能是多个,因为某些实施例对于某些类型的数据/操作创建单独的流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线,和/或存储器访问流水线,每一个流水线都具有它们自己的调度器单元、物理寄存器文件单元,和/或执行群集——在单独的存储器访问流水线的情况下,实现了其中只有此流水线的执行群集具有存储器访问单元464的某些实施例)。还应该理解,使用单独的流水线,这些流水线中的一个或多个可以是无序发布/执行,其余的是有序的。
存储器访问单元组464耦合到存储器单元470,该存储器单元470包括耦合到数据高速缓存单元474的数据TLB单元472,该数据高速缓存单元474耦合到2级(L2)高速缓存单元476。在一个示例性实施例中,存储器访问单元464可以包括加载单元、存储地址单元以及存储数据单元,其中每一个都耦合到存储器单元470中的数据TLB单元472。L2高速缓存单元476耦合到一个或多个其他级别的高速缓存,最终耦合到主存储器。
作为示例,示例性寄存器重命名,无序发布/执行核体系结构可以按如下方式实现流水线400:指令获取438执行获取和长度解码级402以及404;解码单元440执行解码级406;重命名/分配器单元452执行分配级408和重命名级410;调度器单元456执行调度级412;物理寄存器文件单元458和存储器单元470执行寄存器读取/存储器读取级414;执行群集460执行“执行级416”;存储器单元470和物理寄存器文件单元458执行写回/存储器写入级418;涉及异常处理级422中可以涉及各种单元;以及,隐退单元454和物理寄存器文件单元458执行提交级424。
核490可以支持一个或多个指令集(例如,x86指令集(带有与较新的版本一起添加的某些扩展);位于美国加州桑尼维尔的MIPS Technologies的MIPS指令集;位于美国加州桑尼维尔的ARM Holdings的ARM指令集(带有诸如NEON之类的可选的额外的扩展)。
在某些实现中,核可以支持多线程(执行操作或线程的两个或更多并行组),并可以以各种方式达到这一目的,包括时间切片多线程、同时的多线程(其中,单个物理核为物理核同时正在多线程处理的每一个线程提供一种逻辑核)或其组合(例如,时间切片获取和解码和此后的同时的多线程处理,诸如在Hyperthreading技术中)。
尽管寄存器别名使用是在无序执行的上下文中描述的,但是,应该理解,寄存器别名可以用于有序体系结构中。尽管处理器的所示出的实施例还包括单独的指令和数据高速缓存单元434/474以及共享的L2高速缓存单元476,但是,替换实施例对于指令和数据两者可以具有单个内部高速缓存,诸如,例如,1级(L1)内部高速缓存,或多级内部高速缓存。在某些实施例中,系统可以包括内部高速缓存和核和/或处理器外部的外部高速缓存的组合。可另选地,全部高速缓存都可以位于核和/或处理器外部。
图4示出了根据本发明的一个或多个方面的示例处理器102及计算机系统100的其他组件的框图。参考图4,处理器核490可以包括获取单元438以获取用于由核490执行的指令。可以从一个或多个存储设备,诸如存储器115和/或其他存储器设备(诸如数据存储设备124)获取指令。处理器核490还可以包括解码单元440以将获取的指令解码为一个或多个微操作。处理器核490还可以包括调度单元446以存储从解码单元440接收到的解码的指令,直到指令准备被发布,例如,直到解码的指令的操作数值变得可用。调度单元446可以调度和/或向执行单元450发布解码的指令。
执行单元450可以包括一个或多个算术逻辑单元(ALU)、一个或多个整数执行单元、一个或多个浮点执行单元和/或其他执行单元。在某些实现中,执行单元450可以无序(OOO)地执行指令。处理器核490还可以包括隐退单元454以在提交执行的指令之后隐退执行的指令。
处理器核490还可以包括RAT421、PRF423、MIT425以及逻辑150以实现如下面更详细地描述的数据操纵功能。尽管在图4中逻辑150被示为在核490内部,但是,也可以在计算机系统100中的别处提供逻辑150。此外,逻辑150和/或其组件中的一些可以在多个处理器核之间共享。
如上文所指出的,可以通过将源寄存器指针复制到RAT中的目的地寄存器指针来消除移动指令。图5示意地示出了通过寄存器别名使用来执行MOV DX,AX指令:逻辑寄存器AX的RAT条目的内容(指向PRF中的条目X的指针)被复制到逻辑寄存器DX的RAT条目。如图5所示出的,在某些实现中,PRF可以通过物理寄存器值的阵列来提供,RAT可以通过指向PRF的指针的阵列来提供。
在指令被发送到执行单元之前,可以分配PRF条目,用于接收该指令的结果。由于多个RAT条目可以指向同一个PRF条目,因此,一旦多个RAT条目已经被一个或多个指令(因此被隐退)改写,可以将PRF条目标记为对后续指令可用。MIT可以用于跟踪对PRF条目的引用以确定何时可以释放PRF条目,以供新指令使用。
MIT可以通过具有代表寄存器被跟踪的多个行的二维阵列(例如,比特矩阵)来提供。每一MIT列都可以代表移动消除集,其中,一个置位比特表示对应的逻辑寄存器参与移动消除集。
当移动操作被消除时,对应于源和目的地逻辑寄存器的比特被置位,表示这些逻辑寄存器是移动消除集的一部分,如图6a示意地示出。如果移动指令的源是已经参与移动消除集的逻辑寄存器,则将目的地逻辑寄存器添加到该集中,如图6b示意地示出的。当逻辑寄存器被另一指令改写时,可以在MIT中清除为该寄存器设置的比特,如此将逻辑寄存器与移动消除集分离,如图6c示意地示出的。一旦对物理寄存器的所有引用被一个或多个指令改写,并且那些指令已经隐退,不是任何移动消除集的一部分或是移动消除集的唯一成员的对应的物理寄存器可以被新指令重复使用。
在某些实现中,移动消除集跟踪是在微操作分配到微操作分配之间执行的,而不依赖于微操作隐退。即,在分配移动微操作时,创建移动消除集。进一步地,在分配改写逻辑寄存器的微操作时,从现有的移动消除集中删除逻辑寄存器。当分配改写移动消除集中的最后一个逻辑寄存器的微操作时,当该改写微操作随后隐退时,PRF条目被标记为释放。释放PRF条目取决于最后一个改写微操作的微操作隐退。执行对PRF条目的释放的逻辑是在MIT的外面执行的。然而,由MIT实现的移动消除集可以在最后一个改写微操作分配之后立即被回收,并可以被重复使用以跟踪另一移动消除集。
由于移动消除集是通过MIT列来提供的,以便跟踪N个逻辑寄存器中的移动消除的所有可能的组合,因此,可能需要N/2个MIT列。如果MIT具有少于N/2的移动消除集,并且它们全部都被使用,则可以将下一移动指令作为消耗新PRF条目的普通指令发送到执行单元。在任一种情况下,MIT向RAT发送信号以指示指令是否需要消耗PRF条目。
在超级标量M-宽发布处理器中,每周期高达M个指令可以是数据复制指令,MIT只有足够的空闲集以消除发布指令的子集是可能的。为进一步提高执行效率,处理器可以不判断移动指令是否与预先存在的或新移动消除集有关,而是假设每一移动指令都将需要新移动消除集。因此,处理器可以将可用的移动消除集的数量与移动指令的数量进行比较,并选择要被移动消除的头K个移动指令,同时将其他移动指令发送到执行单元。
图7a-7c示意地示出了根据本发明的一个或多个方面的MIT分配和预留逻辑。图7a示出了MIT的初始状态(周期N):列1-3是空闲的,可用于分配。随后预留列1-2,用于执行两个移动操作(MOV AX,CX和MOVR9,R8)。在(N+1)周期,如图7b示意地示出,Reserve(预留)比特被置位,Free(释放)比特在MIT中被清除,以反映列1-2的上文指出的分配。随后,两个额外的移动消除机会向MIT呈现它们自己,如此预留MIT列3用于执行第三移动操作(MOV BX,DX),并将第四移动操作发送到执行单元,因为在MIT(MOV AX,R8)中没有可用的移动消除集。在(N+2)周期,如图7c示意地示出的,取消从周期N的预留,因此,相应的Reserve比特被清除。MIT利用来自周期N的指令的结果更新,并入列0,在列2中创建新集。考虑到MIT更新,重新计算Empty(空)比特,通过对于受影响的MIT列,从Empty比特减去Reserve比特,更新Free比特。因此,对于要利用新移动消除信息来更新的MIT集,可以有两周期延迟。
当只有一个寄存器映射仍保留移动消除集中,以便对应的PRF条目只有一个引用保留时,由MIT列所提供的移动消除集仍可能不可用于向另一移动指令分配。这样的集可以称为“孤立”集,因为它只有一个寄存器映射。在没有用于清除孤立集的一些动作的情况下,它可能仍不可用,直到最后一个逻辑寄存器被改写,如此减少可能的移动消除的数量。
在某些实现中,作为MIT分配搜索的一部分,处理器可以检测并清除孤立移动消除集。如果移动消除集被判断为是孤立集,则处理器可以为下一周期断言将释放该集用于分配的清除信号。因此,孤立集可以在三个或多个周期变得可用,包括用于初始分配写入的两个周期和用于清除孤立集的一个周期,如下面更详细地描述的。
图8a-8c示意地示出了根据本发明的一个或多个方面的MIT孤立回收逻辑功能的一个示例。图8a示意地表示在执行移动指令和部分地改写新分配的移动消除集的后续指令之前的MIT列的初始状态(称为周期N)。图8b示意地表示在在周期N+2中更新之后MIT列的状态。在此阶段,MIT列是孤立集,并可以如此被检测。图8c示意地表示在孤立回收之后MIT列的状态。然而,值得注意的是,周期N+1中的移动消除指令使用AX寄存器作为其源,则在周期N+3中将不会有孤立回收,因为移动消除集将利用来自周期N+1的指令的结果进行更新。
在某些实现中,逻辑150可以预先计算两个或更多数据操纵操作的依赖关系,然后执行单个MIT更新以反映两个或更多操作的结果,如此,改善移动消除操作的时序和功率消耗方面。MIT更新可包括创建新移动消除集、修改移动消除集或回收孤立移动消除集。
与序列化更新逻辑不同,逻辑150更新MIT一次,以反映两个或更多数据操纵操作的结果。将被序列化的更新排序中的对应的MIT更新反映的中间MIT状态不由逻辑150执行。例如,如果将寄存器添加到移动消除集中并被下一操作改写,则MIT将不会反映包含寄存器的移动消除集的中间状态。
为了预先计算两个或更多数据操纵操作的依赖关系,逻辑150可以检测多种类型的移动操作,包括但不限于:具有被用作同一个处理线中的随后的移动操作的源的目的地寄存器的移动操作,如图9a-9c示意地示出的;相同线中的使用同一个寄存器作为源的两个移动操作,如图10a-10c示意地示出的;以及,具有与随后的移动操作的源匹配的目的地寄存器的移动操作,并带有对该目的地/源寄存器的中间写入,如图11a-11c示意地示出的。
为了检测上文引用的组合,逻辑150可以比较多个指令的源和目的地,判断是否已经为移动消除选择了移动指令,判断移动消除操作的源是否存在于已经存在的移动消除集中,以及判断新的或现有的移动消除集中涉及的任何逻辑寄存器是否随后被改写。鉴于确定的MIT列分配数据,逻辑150可以生成要被写入到受影响的MIT列的新的数据,选择新的或现有的数据作为与每一指令相关联的更新数据,使用上文引用的源和目的地比较将数据一个指令旁路到另一指令,并更新MIT。
如上文所指出的,移动消除逻辑可以以硬件或软件或其组合来实现。在图12中示意地示出了实现逻辑150的示例电路800。
电路800可以包括对应于特定MIT列(移动消除集)中的特定逻辑寄存器的每比特逻辑802。电路800还可以进一步包括对应于特定MIT列(移动消除集)的每列逻辑804。
电路800可以接收多个输入信号,包括:反映每一个矩阵比特的MIT的前一状态的PreviousData信号805;每行的SourceMatch信号810,该信号810标识处理线中的具有匹配该行的逻辑源的每一移动消除指令;每个处理线指令的SelectorCopy信号815,该信号标识是否将数据从一个MIT行复制到另一行(移动消除指令逻辑源行到移动消除指令逻辑目的地行),由此,将目的地逻辑寄存器从移动消除指令添加到以前存在的移动消除集中(还将它与所有其他移动消除集解除关联);以及,包含每个处理线指令的要被写入到MIT行中的新的数据的AllocationData信号820。此数据可以是零以从所有移动消除集中清除由MIT行所标识的逻辑寄存器,或者它可以包含将逻辑寄存器分配到移动消除集的数据。电路800可以处理上面的引用的信号以产生新MIT数据输出信号830。
可以通过利用SourceMatch信号选拔现有的MIT数据,以从表示是移动指令的源的逻辑寄存器的MIT中的一行中选择数据,来生成CopyData信号832。
由SelectorCopy信号815控制的Copy/Set多路复用器840可以选择CopyData信号或AllocData信号。SelectorCopy表示来自表示移动指令的源的MIT行的数据应该被写入到表示移动指令的目的地的另一行中,如此将目的地寄存器添加到现有的移动消除集中。当逻辑150确定移动消除指令的源已经参与移动消除集并且逻辑寄存器没有被处理线中的前一指令改写时,SelectorCopy信号被置位。通过使用SourceMatch信号810来选拔来自MIT的一行,并检查以查看在该行中是否有任何比特被置位,来确定参与移动消除集中。
对串联旁路多路复用器835的控制可以计算执行线内部的依赖关系,例如,将第一移动指令的目的地与第二移动指令的源进行比较。如果检测到依赖关系,则在835中可以将前一指令的数据旁路到稍后的指令。串联旁路多路复用器835的输出信号可以被馈送到更新数据多路复用器845的输入端。更新数据多路复用器845的另一输入可以通过PreviousData信号805来提供,通过指示MIT列中是否只有一个比特被置位的ClearOrphan信号850来选拔。由选择器更新数据信号825控制的更新数据多路复用器845可以输出新MIT数据信号850。选择器更新数据信号825是优先级编码的,以便来自最后一个对逻辑寄存器的引用的旁路数据被输出到新MIT数据信号850。
参考图9-11的示例进一步示出了例如由电路800实现的逻辑150的功能。图9a-9c示意地示出了移动操作,该移动操作的目的地寄存器被用作由示例链移动AX->BX->CX所提供的同一个处理线中的随后的移动操作的源。图9a示出了MIT的初始状态。图9b示出了MIT分配:列0和1分别是针对uop0(MOV BX,AX)和uop1(MOV CX,BX)而分配。由于任一操作的源都不是现有的移动消除集的成员,因此,两个微操作的CopyData信号832都是0,并且SelectorCopy信号815通过复制/置位多路复用器840将两个微操作的AllocData820发送到串联旁路多路复用器835。如图9c所示出的,逻辑150检测到第一移动操作(MOV BX,AX)的目的地匹配第二移动操作(MOV CX,BX)的源。串联旁路多路复用器835选择对应于第一移动操作(AllocData[Uop0])的复制/分配数据,而并非对应于第二移动操作(AllocData[Uop1])的数据,以作为输入数据馈送到更新数据多路复用器845。如此,UpdateData[Uop0]和UpdateData[Uop1]相同。由于更新数据多路复用器845的输出是优先级编码的,因此,对应于引用逻辑寄存器的最后一个操作的旁路的数据变为新MIT数据。更新数据多路复用器845选择对应于第一移动操作(UpdateData[Uop0])的数据作为AX的新的数据,选择对应于第二移动操作(UpdateData[Uop1])的旁路的数据作为BX和CX两者的新的数据,因为第二移动操作是引用这些寄存器的最后一个操作。然而,由于旁路机制,相同数据被写入到所有三个条目中。
图10a-10c示意地示出了由MOV BX,DX;MOV AX,DX的示例所提供的使用相同寄存器作为源的一个线中的两个移动操作。图10a示出了MIT的初始状态。图10b示出了MIT分配:列1和2分别是为uop0(MOVBX,DX)和uop1(MOV AX,DX)而分配。由于任一操作的源都不是现有的移动消除集的成员,因此两个微操作的CopyData信号832都是0,并且SelectorCopy信号815将通过复制/置位多路复用器840将两个微操作的AllocData820发送到串联旁路多路复用器835。如图10c所示出的,类似于图9a-9c的示例,逻辑150判断是否为第一移动操作选择副本或分配数据。对于第二移动操作,逻辑150确定移动操作与前一移动消除操作共享源,因此,串联旁路多路复用器835选择对应于第一移动操作(AllocData[Uop0])的复制/分配数据,而不是对应于第二移动操作(AllocData[Uop1])的数据,以作为输入数据馈送到更新多路复用器845。如此,UpdateData[Uop0]和UpdateData[Uop1]相同。更新数据多路复用器845选择对应于第一移动操作(UpdateData[Uop0])的数据作为BX(UpdateData[uop0])的新的数据,选择对应于第二移动操作的旁路的数据作为DX和AX(UpdateData[uop1])两者的新的数据,因为第二移动操作是引用这些寄存器的最后一个操作。然而,由于旁路机制,相同数据被写入到所有三个条目中。
图11a-11c示意地示出了一行中的两个移动指令的示例,其中移动链被向移动消除寄存器的中间写入(MOV BX,AX;overwrite BX;MOV DX,BX)打断。图11a示出了MIT的初始状态。图11b示出了MIT分配:MIT列1和2分别是为uop0(MOV BX,AX)和uop2(MOV DX,BX)而分配。如图11c所示出的,类似于图9a-9c和10a-10c的示例,逻辑150判断移动操作的源是否已经是现有移动消除集的成员,并将对应的数据馈送到复制/置位多路复用器840。在此情况下,复制/置位多路复用器840对于uop0经过CopyData[uop0],对于uop1经过AllocData[uop1],对于uop2经过AllocData[uop2]。请注意,uop1的AllocData全部都是零,因为它不会创建移动消除集,而是从任何集中移除该寄存器。逻辑150确定第二移动操作的源匹配第一移动操作的目的地,并且中间操作改写寄存器。因此,取消了旁路机制,并且分别地处理三个移动操作的结果:AX接收第一移动操作(CopyData[Uop0]信号)的数据,BX和DX接收第二移动操作(AllocData[Uop2])的数据。由于更新数据多路复用器845的输入是优先级编码的,所以对应于第二移动操作的数据变为BX的新的数据。如此,由于旁路逻辑运算,没有作出对BX的中间更新(该中间更新是将它置于MIT列0,从列0中删除它,然后,将它置于列2)。
在某些实现中,处理器可以消除整数通用逻辑寄存器(INT)和流式单指令多数据(SIMD)扩展(SSE)逻辑寄存器域内部的移动指令。SSE域还可以包含高级向量扩展(AVX)的逻辑寄存器域,这是SSE的超集域。为进一步改善实现的效率,处理器可以为每一个移动操作预留SSE和INTMIT中的移动消除集,不管移动操作中涉及的寄存器的类型是什么。尽管潜在地减少实际执行的移动消除的数量,由于SSE移动操作可以预留否则可能被INT指令所使用的的INT移动消除集,因此,上文所描述的统一的预留机制还可以进一步提高处理器执行指令的总效率。
如此,此处所描述的旁路MIT设计通过由于并行计算而缩短MIT更新的延迟、执行对孤立列的积极的清除以及实现统一的预留机制,提高了处理器性能。
图13描绘了根据本发明的一个或多个方面的带有旁路MIT的移动消除的示例方法的流程图。方法900可以由可以包括硬件(例如,电路、专用逻辑和/或可编程逻辑)、软件(例如,可在计算机系统上执行以执行硬件模拟的指令)或其组合的计算机系统来执行。方法900和/或其函数、例程、子例程或操作中的每一个都可以由执行方法的计算机系统的一个或多个物理处理器来执行。方法900的两个或更多函数、例程、子例程,或操作可以并行地或按照可以不同于上文所描述的顺序的顺序来执行。在一个示例中,如图13所示出的,方法900可以由图1的计算机系统100来执行。
参考图13,在框910,处理器可以将多个寄存器值存储在PRF中。
在框920,处理器可以将多个指针存储在RAT中,每一RAT指针都引用PRF元素。
在框930,处理器可以将多个移动消除集存储在MIT中。每一移动消除集都可以包括表示多个逻辑寄存器的多个比特。
在框940,处理器可以预先计算两个或更多数据操纵操作的依赖关系。
在框950,处理器可以通过更新RAT和/或MIT来反映两个或更多数据操纵操作的结果。如上文所指出的,在某些实现中,处理器可以预先计算两个或更多数据操纵操作的依赖关系,然后执行单个MIT更新以反映两个或更多操作的结果,如此改善移动消除操作的时序和功率消耗方面。在完成了由框950引用的操作时,方法可以结束。
图14描绘了根据本发明的一个或多个方面的示例计算机系统的框图。如图14所示,多处理器系统700是点对点互连系统,并包括通过点对点互连750耦合的第一处理器770和第二处理器780。处理器770和780中的每一个都可以是能够执行事务性的存储器访问操作和/或非事务性的存储器访问操作的处理器102的某种版本,诸如下面更详细地描述的。
尽管只利用两个处理器770780来示出,但是,可以理解,本发明的范围不仅限于此。在其他实施例中,一个或多个额外的处理器可以存在于给定处理器中。
处理器770和780被示为分别包括集成存储器控制器单元772和782。处理器770还包括点对点(P-P)接口776和778,作为其总线控制器单元的一部分;类似地,第二处理器780包括P-P接口786和788。处理器770,780可以使用P-P接口电路778、788通过点对点(P-P)接口750来交换信息。如图14所示,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)总线,或诸如PCI Express总线之类的总线,或另一第三代I/O互连总线,虽然本发明的范围不仅限于此。
如图14所示,各种I/O设备714可以耦合到第一总线716,以及将第一总线716耦合到第二总线720的总线桥接器718。在一个实施例中,第二总线720可以是低管脚数(LPC)总线。在一个实施例中,各种设备可以耦合到第二总线720,包括例如键盘和/或鼠标722、通信设备727和存储单元728(诸如磁盘驱动器或可以包括指令/代码和数据730的其他大容量存储设备)。进一步地,音频I/O724可以耦合到第二总线720。请注意,其他体系结构也是可以的。例如,代替图14的点对点体系结构,系统可以实现多点分支总线或其他这样的体系结构。
下列示例示出了根据本发明的一个或多个方面的各种实现。
示例1是处理系统,包括:被配置成存储多个物理寄存器值的第一数据结构;被配置成存储多个指针的第二数据结构,每一指针引用第一数据结构的元素;包括多个移动消除集的第三数据结构,每一移动消除集包括表示多个逻辑寄存器的多个比特;以及,被配置成通过使所述第二数据结构的元素引用所述第一数据结构的元素来执行数据操纵操作的逻辑,所述逻辑进一步被配置成通过执行所述第三数据结构的单次更新来反映两个或更多数据操纵操作的结果。
在示例2中,示例1的处理系统的第三数据结构的更新可以包括下列各项中的至少一项:创建移动消除集、修改移动消除集或回收移动消除集。
在示例3中,示例1的处理系统的逻辑可以被配置成基于预先计算两个或更多数据操纵操作的依赖关系来更新第三数据结构。
在示例4中,示例1的处理系统的逻辑可以被配置成预留下列各项中的至少一项:整数通用逻辑寄存器域中的第一移动消除集或流式单指令多数据(SIMD)扩展(SSE)逻辑寄存器域中的第二移动消除集。
在示例5中,示例1的处理系统的逻辑可以被配置成通过处理下列各项中的至少一项来输出更新第三数据结构的信号:反映第三数据结构的前一状态的第一信号、标识用于数据操纵操作的源逻辑寄存器的第二信号、标识用于数据操纵操作的目的地逻辑寄存器的第三信号、标识现有的移动消除集是否包含至少一项引用的第四信号、标识所述第三数据结构内的新移动消除集的第五信号、以及标识是否选择了用于移动消除的所述数据操纵操作的第六信号。
在示例6中,示例1的处理系统的逻辑可以被配置成检测下列各项中的至少一项:第一数据操纵操作所具有的目的地寄存器匹配第二数据操纵操作的源;两个数据操纵操作使用公用寄存器作为源,并带有向所述源寄存器的中间写入;两个数据操纵操作使用公用寄存器作为源;第一数据操纵操作所具有的目的地寄存器匹配第二数据操纵操作的源,且带有向所述目的地寄存器的中间写入;或第一数据操纵操作改写由现有的移动消除集引用的并且是第二数据操纵操作的源的寄存器。
示例7是一种执行数据操纵操作的方法,包括:通过计算机系统,将多个物理寄存器值存储在第一数据结构中;在第二数据结构中,存储多个指针,每一指针都引用所述第一数据结构的元素;在第三数据结构中,存储多个移动消除集,每一移动消除集都包括表示多个逻辑寄存器的多个比特;通过使所述第二数据结构的元素引用所述第一数据结构的元素来执行数据操纵操作;以及,通过执行所述第三数据结构的单次更新来反映两个或更多数据操纵操作的结果。
在示例8中,示例7的方法的更新第三数据结构可以包括下列各项中的至少一项:创建移动消除集,修改移动消除集,或回收移动消除集。
在示例9中,示例7的方法还可以进一步包括预留下列各项中的至少一项:整数通用逻辑寄存器域中的第一移动消除集或流式单指令多数据(SIMD)扩展(SSE)逻辑寄存器域中的第二移动消除集。
在示例10中,示例7的方法还可以进一步包括通过处理下列各项中的至少一项来输出更新第三数据结构的信号:反映第三数据结构的前一状态的第一信号、标识用于数据操纵操作的源逻辑寄存器的第二信号、标识用于数据操纵操作的目的地逻辑寄存器的第三信号、标识现有的移动消除集是否包含至少一项引用的第四信号、标识所述第三数据结构内的新移动消除集的第五信号、以及标识是否选择了用于移动消除的所述数据操纵操作的第六信号。
在示例11中,示例7的方法还可以进一步包括检测下列各项中的至少一项:第一数据操纵操作所具有的目的地寄存器匹配第二数据操纵操作的源;两个数据操纵操作使用公用寄存器作为源,且带有向所述源寄存器的中间写入;两个数据操纵操作使用公用寄存器作为源;第一数据操纵操作所具有的目的地寄存器匹配第二数据操纵操作的源,且带有向所述目的地寄存器的中间写入,或第一数据操纵操作改写由现有的移动消除集引用的并是第二数据操纵操作的源的寄存器。
在示例12中,示例7的方法的更新第三数据结构可以基于预先计算两个或更多数据操纵操作的依赖关系来执行。
示例13是处理系统,包括:被配置成存储多个物理寄存器值的第一数据结构;被配置成存储多个指针的第二数据结构,每一指针都引用第一数据结构的元素;包括第一多个移动消除集和第二多个移动消除集的第三数据结构,所述第一多个移动消除集的每一移动消除集包括表示多个整数逻辑寄存器的多个比特,所述第二多个移动消除集的每一移动消除集都包括表示多个流式单指令多数据(SIMD)扩展(SSE)逻辑寄存器的多个比特;以及,被配置成预留所述第一多个移动消除集的第一移动消除集和所述第二多个移动消除集的第二移动消除集的逻辑,所述逻辑进一步被配置成通过更新所述第二数据结构和下列各项中的一项来执行数据操纵操作:所述第一移动消除集或所述第二移动消除集。
在示例14中,示例13的处理系统的逻辑可以进一步被配置成通过处理下列各项中的至少一项来输出更新第三数据结构的信号:反映第三数据结构的前一状态的第一信号、标识用于数据操纵操作的源逻辑寄存器的第二信号、标识用于数据操纵操作的目的地逻辑寄存器的第三信号、标识现有的移动消除集是否包含至少一项引用的第四信号、标识所述第三数据结构内的新移动消除集的第五信号、以及标识是否选择了用于移动消除的所述数据操纵操作的第六信号。
在示例15中,示例13的处理系统的逻辑可以进一步被配置成检测下列各项中的至少一项:第一数据操纵操作所具有的目的地寄存器匹配第二数据操纵操作的源的;两个数据操纵操作使用公用寄存器作为源,且带有向所述源寄存器的中间写入;两个数据操纵操作使用公用寄存器作为源;第一数据操纵操作所具有的目的地寄存器匹配第二数据操纵操作的源,且带有向所述目的地寄存器的中间写入;或第一数据操纵操作改写由现有的移动消除集引用的并是第二数据操纵操作的源的寄存器。
在示例16中,示例13的处理系统的逻辑可以进一步被配置成:预先计算两个或更多数据操纵操作的依赖关系;以及,通过执行所述第三数据结构的单次更新来反映所述两个或更多数据操纵操作的结果。
在示例17中,示例13的处理系统的逻辑可以进一步被配置成执行下列各项中的至少一项:创建移动消除集,修改移动消除集,或回收移动消除集。
示例18是一种执行数据操纵操作的方法,包括:通过计算机系统,将多个物理寄存器值存储在第一数据结构中;在第二数据结构中,存储多个指针,每一指针都引用所述第一数据结构的元素;在第三数据结构中存储第一多个移动消除集和第二多个移动消除集,所述第一多个移动消除集的每一移动消除集都包括表示多个整数逻辑寄存器的多个比特,所述第二多个移动消除集的每一移动消除集都包括表示多个流式单指令多数据(SIMD)扩展(SSE)逻辑寄存器的多个比特;预留所述第一多个移动消除集的第一移动消除集和所述第二多个移动消除集的第二移动消除集的逻辑;以及,通过更新所述第二数据结构和下列各项中的一项来执行数据操纵操作:所述第一移动消除集或所述第二移动消除集。
在示例19中,示例18的方法还可以进一步包括通过处理下列各项中的至少一项来输出更新第三数据结构的信号:反映第三数据结构的前一状态的第一信号、标识用于数据操纵操作的源逻辑寄存器的第二信号、标识用于数据操纵操作的目的地逻辑寄存器的第三信号、标识现有的移动消除集是否包含至少一项引用的第四信号、标识所述第三数据结构内的新移动消除集的第五信号、以及标识是否选择了所述数据操纵操作以用于移动消除的第六信号。
在示例20中,示例18的方法还可以进一步包括检测下列各项中的至少一项:第一数据操纵操作所具有的目的地寄存器匹配第二数据操纵操作的源;两个数据操纵操作使用公用寄存器作为源,且带有向所述源寄存器的中间写入;两个数据操纵操作使用公用寄存器作为源;第一数据操纵操作所具有的目的地寄存器匹配第二数据操纵操作的源,且带有向所述目的地寄存器的中间写入;或第一数据操纵操作改写由现有的移动消除集引用的并是第二数据操纵操作的源的寄存器。
在示例21中,示例18的方法还可以进一步包括:预先计算两个或更多数据操纵操作的依赖关系;以及,通过执行所述第三数据结构的单次更新来反映所述两个或更多数据操纵操作的结果。
在示例22中,示例18的方法还可以进一步包括:执行下列各项中的至少一项:创建移动消除集、修改移动消除集或回收移动消除集。
示例23是包括可执行指令的计算机可读取的非瞬态的存储介质,可执行指令在由计算机系统执行时使计算机系统执行下列操作包括:通过计算机系统,将多个物理寄存器值存储在第一数据结构中;在第二数据结构中存储多个指针,每一指针都引用所述第一数据结构的元素;在第三数据结构中存储多个移动消除集,每一移动消除集都包括表示多个逻辑寄存器的多个比特;通过使所述第二数据结构的元素引用所述第一数据结构的元素来执行数据操纵操作;以及通过执行所述第三数据结构的单次更新来反映两个或更多数据操纵操作的结果。
在示例24中,更新示例23的第三数据结构可以包括下列各项中的至少一项:创建移动消除集、修改移动消除集、或回收移动消除集。
在示例25中,存储在示例23的计算机可读取的非瞬态的存储介质上的可执行指令还可以进一步基于预先计算两个或更多数据操纵操作的依赖关系来使计算机系统更新第三数据结构。
在示例26中,存储在示例23的计算机可读取的非瞬态的存储介质上的可执行指令还可以使计算机系统预留下列各项中的至少一项:整数通用逻辑寄存器域中的第一移动消除集或流式单指令多数据(SIMD)扩展(SSE)逻辑寄存器域中的第二移动消除集。
在示例27中,存储在示例23的计算机可读取的非瞬时的存储介质上的可执行指令还可以进一步通过处理下列各项中的至少一项来使计算机系统输出更新第三数据结构的信号:反映第三数据结构的前一状态的第一信号、标识用于数据操纵操作的源逻辑寄存器的第二信号、标识用于数据操纵操作的目的地逻辑寄存器的第三信号、标识现有的移动消除集是否包含至少一项引用的第四信号、标识所述第三数据结构内的新移动消除集的第五信号、以及标识是否选择了用于移动消除的所述数据操纵操作的第六信号。
在示例28中,存储在示例23的计算机可读取的非瞬态的存储介质上的可执行指令还可以使计算机系统检测下列各项中的至少一项:第一数据操纵操作所具有的目的地寄存器匹配第二数据操纵操作的源;两个数据操纵操作使用公用寄存器作为源,且带有向所述源寄存器的中间写入;两个数据操纵操作使用公用寄存器作为源;第一数据操纵操作所具有的目的地寄存器匹配第二数据操纵操作的源,且带有向所述目的地寄存器的中间写入;或第一数据操纵操作改写由现有的移动消除集引用的并是第二数据操纵操作的源的寄存器。
示例29是包括可执行指令的计算机可读取的非瞬态的存储介质,可执行指令在由计算机系统执行时使计算机系统执行下列操作,包括:将多个物理寄存器值存储在第一数据结构中;在第二数据结构中,存储多个指针,每一指针都引用所述第一数据结构的元素;在第三数据结构中存储第一多个移动消除集和第二多个移动消除集,所述第一多个移动消除集的每一移动消除集包括表示多个整数逻辑寄存器的多个比特,所述第二多个移动消除集的每一移动消除集包括表示多个流式单指令多数据(SIMD)扩展(SSE)逻辑寄存器的多个比特;预留所述第一多个移动消除集的第一移动消除集和所述第二多个移动消除集的第二移动消除集的逻辑;以及,通过更新所述第二数据结构和下列各项中的一项来执行数据操纵操作:所述第一移动消除集或所述第二移动消除集。
在示例30中,存储在示例29的计算机可读取的非瞬态的存储介质上的可执行指令还可以进一步通过处理下列各项中的至少一项来使计算机系统更新第三数据结构:反映第三数据结构的前一状态的第一信号、标识用于数据操纵操作的源逻辑寄存器的第二信号、标识用于数据操纵操作的目的地逻辑寄存器的第三信号、标识现有的移动消除集是否包含至少一项引用的第四信号、标识第三数据结构内的新移动消除集的第五信号、以及标识是否选择了用于移动消除的数据操纵操作的第六信号。
在示例31中,存储在示例29的计算机可读取的非瞬态的存储介质上的可执行指令还可以使计算机系统检测下列各项中的至少一项:第一数据操纵操作所具有的目的地寄存器匹配第二数据操纵操作的源;两个数据操纵操作使用公用寄存器作为源,且带有向源寄存器的中间写入;两个数据操纵操作使用公用寄存器作为源;第一数据操纵操作所具有的目的地寄存器匹配第二数据操纵操作的源,且带有向目的地寄存器的中间写入;或第一数据操纵操作改写由现有的移动消除集引用的并是第二数据操纵操作的源的寄存器。
在示例32中,存储在示例29的计算机可读取的非瞬态的存储介质上的可执行指令还可以使计算机系统检测下列各项中的至少一项:预先计算两个或更多数据操纵操作的依赖关系;以及,通过执行所述第三数据结构的单次更新来反映所述两个或更多数据操纵操作的结果。
在示例33中,存储在示例29的计算机可读取的非瞬态的存储介质上的可执行指令还可以使计算机系统执行下列各项中的至少一项:创建移动消除集、修改移动消除集、或回收移动消除集。
示例34是一种装置,包括存储器和耦合到存储器的处理系统,其中处理系统被配置成执行示例7-12中的任何一个的方法。
示例34是一种装置,包括存储器和耦合到存储器的处理系统,其中处理系统被配置成执行示例18-22中的任何一个的方法。
详细描述的某些部分以算法、和对计算机存储器内的数据位的操作的符号表示法的形式存在。这些算法描述和表示法是那些精通数据处理技术的人所使用的最有效地将他们的工作的实质传递到精通技术的其他人的手段。算法,这里一般是指导致所希望的结果的操作的独立的序列。操作是那些需要对物理量进行物理操纵的操作。通常,尽管不一定,这些量呈现电的和/或磁性信号的形式,这些信号能够被存储、传输、组合、比较,以及以别的方式操纵。已经证明有时,主要由于共同的用途原因,将这些信号称为比特、值、元素、符号、字符、术语、数字等等比较方便。
然而,应该记住,所有这些和/或类似的术语将与适当的物理量关联,仅仅是应用于这些量的方便的标记。除非特别声明,从上文的讨论中显而易见地看出,应该理解,在整个本说明书中,利用诸如“加密”、“解密”、“存储”、“提供”、“导出”、“获取”、“接收”、“认证”、“删除”、“执行”、“请求”、“通信”等等之类的术语的讨论,引用了计算机系统,和/或类似的电子计算设备的动作和/或进程,它们操纵和/或转换表示为计算机系统的寄存器和存储器内的物理(例如,电子)量的数据,将这些数据转换为类似地表示为计算机系统存储器或寄存器和/或其他这样的信息存储器、传输和/或显示设备内的物理量的其他数据。
在此可使用词语“示例”或“示例性”意指用作示例、实例或说明。本文中被描述为“示例”或“示例性”的任何方面或设计不一定被解释为优选于或更优于其他方面或设计。相反,使用词语“示例”或“示例性”旨在以具体的方式呈现各个概念。如本申请中所使用的,术语“或”意指包括性“或”而非互斥性“或”。即,除非另有指定或从上下文可以清楚,“X包括A或B”意指任何自然的包括性排列。即,如果X包括A;X包括B;或X包括A和B两者,则在任何以上情况下,都满足“X包括A或B。”此外,本申请中和所附权利要求书所使用的冠词“一”和“一个”一般应解释为“一个或多个”,除非另有指定或从上下文将清楚是指单数形式。此外,术语“实施例”或“一个实施例”或“实现”或“一个实现”不旨在意指同一个实施例或实现,除非这样描述。此外,如此处所使用的术语“第一”、“第二”、“第三”、“第四”等等旨在用作区别不同的元件的标记,可以不一定具有根据它们的数字表示的序数含义。
此处所描述的各实施例还可以涉及用于执行此处的操作的设备。可以为所需的用途专门地设计此设备,也可以包括由存储在计算机中的计算机程序有选择地激活和/或重新配置的通用计算机。这样的计算机程序可以存储在非瞬时的计算机可读取的存储介质上,诸如,但不仅限于,任何类型的磁(光)盘,包括软盘、光盘、CD-ROM,以及磁性光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,闪存,或适于存储电子指令的任何类型的介质。术语“计算机可读取的存储介质”应该被视为包括存储一个或多个指令集的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。术语“计算机可读介质”还应该被视为包括能够存储、编码或携带由机器执行的一组指令并且使机器执行各实施例的方法中的任何一个或多个的任何介质。术语“计算机可读取的存储介质”相应地应该被视为包括,但不局限于,固态存储器、光学介质、磁性介质,能够存储由机器执行的一组指令并且使机器执行各实施例的方法中的任何一个或多个的任何介质。
此处呈现的算法和/或显示不固有地涉及任何特定计算机或其他设备。各种通用系统可以与根据此处的原理编写的程序一起使用,或者构建更加专业化的设备来执行所需的方法操作也是比较方便的。根据下面的描述,这些系统中的各种系统的所需的结构将变得显而易见。另外,没有参考任何特定编程语言来描述各实施例。应该理解,可以使用各种编程语言来实现此处所描述的各实施例的各实施例的原理。
上面的描述阐述了诸如特定系统、组件、方法等等的示例之类的很多具体细节,以便提供对多个实施例的更全面的理解。然而,对那些精通本技术的人显而易见的是,可以在没有这些具体细节的情况下实施至少一些实施例。在其他情况下,没有详细示出或以简单框图格式来呈现已知的组件或方法,以便避免对各实施例造成不必要的模糊。如此,上文阐述的具体细节只是示例性的。特定实现可能不同于这些示例性细节,仍在各实施例的范围内。
可以理解,上文的描述只是说明性的,而不是限制性的。在阅读和理解上面的描述之后,许多其他实施例对本领域的技术人员是显而易见的。各实施例的范围完全由所附权利要求书以及这些权利要求所授权的等效技术方案的完整范围来确定。
Claims (22)
1.一种处理系统,包括:
第一数据结构,被配置成存储多个物理寄存器值;
第二数据结构,被配置成存储多个指针,每一指针引用第一数据结构的元素;
第三数据结构,包括多个移动消除集,每一移动消除集都包括表示多个逻辑寄存器的多个比特;以及
逻辑,被配置成通过使所述第二数据结构的元素引用所述第一数据结构的元素来执行数据操纵操作,所述逻辑进一步被配置成通过执行所述第三数据结构的单次更新来反映两个或更多数据操纵操作的结果。
2.如权利要求1所述的处理系统,其特征在于,对所述第三数据结构的所述更新包括下列各项中的至少一项:创建移动消除集、修改移动消除集、或回收移动消除集。
3.如权利要求1所述的处理系统,其特征在于,所述逻辑被配置成基于预先计算两个或更多数据操纵操作的依赖关系来更新所述第三数据结构。
4.如权利要求1所述的处理系统,其特征在于,所述逻辑进一步被配置成预留下列各项中的至少一项:整数通用逻辑寄存器域中的第一移动消除集或流式单指令多数据(SIMD)扩展(SSE)逻辑寄存器域中的第二移动消除集。
5.如权利要求1所述的处理系统,其特征在于,所述逻辑被配置成通过处理下列各项中的至少一项来输出更新所述第三数据结构的信号:反映所述第三数据结构的前一状态的第一信号、标识用于数据操纵操作的源逻辑寄存器的第二信号、标识用于数据操纵操作的目的地逻辑寄存器的第三信号、标识现有的移动消除集是否包含至少一项引用的第四信号、标识所述第三数据结构内的新移动消除集的第五信号、以及标识是否选择了所述数据操纵操作以用于移动消除的第六信号。
6.如权利要求1所述的处理系统,其特征在于,所述逻辑被配置成检测下列各项中的至少一项:第一数据操纵操作所具有的目的地寄存器匹配第二数据操纵操作的源;两个数据操纵操作使用公用寄存器作为源,并带有向所述源寄存器的中间写入;两个数据操纵操作使用公用寄存器作为源;第一数据操纵操作所具有的目的地寄存器匹配第二数据操纵操作的源,并带有向所述目的地寄存器的中间写入;或第一数据操纵操作改写由现有的移动消除集引用的并是第二数据操纵操作的源的寄存器。
7.一种执行数据操纵操作的方法,包括:
通过计算机系统,将多个物理寄存器值存储在第一数据结构中;
在第二数据结构中存储多个指针,每一指针引用所述第一数据结构的元素;
在第三数据结构中存储多个移动消除集,每一移动消除集包括表示多个逻辑寄存器的多个比特;
通过使所述第二数据结构的元素引用所述第一数据结构的元素来执行数据操纵操作;以及
通过执行所述第三数据结构的单次更新来反映两个或更多数据操纵操作的结果。
8.如权利要求7所述的方法,其特征在于,对所述第三数据结构的所述更新包括下列各项中的至少一项:创建移动消除集、修改移动消除集或回收移动消除集。
9.如权利要求7所述的方法,还包括预留下列各项中的至少一项:整数通用逻辑寄存器域中的第一移动消除集或流式单指令多数据(SIMD)扩展(SSE)逻辑寄存器域中的第二移动消除集。
10.如权利要求7所述的方法,还包括通过处理下列各项中的至少一项来输出更新所述第三数据结构的信号:反映所述第三数据结构的前一状态的第一信号、标识用于数据操纵操作的源逻辑寄存器的第二信号、标识用于数据操纵操作的目的地逻辑寄存器的第三信号、标识现有的移动消除集是否包含至少一项引用的第四信号、标识所述第三数据结构内的新移动消除集的第五信号、以及标识是否选择了所述数据操纵操作以用于移动消除的第六信号。
11.如权利要求7所述的方法,还包括检测下列各项中的至少一项:第一数据操纵操作所具有的目的地寄存器匹配第二数据操纵操作的源;两个数据操纵操作使用公用寄存器作为源,且带有向所述源寄存器的中间写入;两个数据操纵操作使用公用寄存器作为源;第一数据操纵操作所具有的目的地寄存器匹配第二数据操纵操作的源,且带有向所述目的地寄存器的中间写入;或第一数据操纵操作改写由现有的移动消除集引用的并是第二数据操纵操作的源的寄存器。
12.如权利要求7所述的方法,其特征在于,基于预先计算两个或更多数据操纵操作的依赖关系来执行对所述第三数据结构的所述更新。
13.一种处理系统,包括:
第一数据结构,被配置成存储多个物理寄存器值;
第二数据结构,被配置成存储多个指针,每一指针引用第一数据结构的元素;
第三数据结构,包括第一多个移动消除集和第二多个移动消除集,所述第一多个移动消除集的每一移动消除集包括表示多个整数逻辑寄存器的多个比特,所述第二多个移动消除集的每一移动消除集包括表示多个流式单指令多数据(SIMD)扩展(SSE)逻辑寄存器的多个比特;以及
逻辑,被配置成预留所述第一多个移动消除集的第一移动消除集和所述第二多个移动消除集的第二移动消除集,所述逻辑进一步被配置成通过更新所述第二数据结构和下列各项中的一项来执行数据操纵操作:所述第一移动消除集或所述第二移动消除集。
14.如权利要求13所述的处理系统,其特征在于,所述逻辑进一步被配置成通过处理下列各项中的至少一项来输出更新所述第三数据结构的信号:反映所述第三数据结构的前一状态的第一信号、标识用于数据操纵操作的源逻辑寄存器的第二信号、标识用于数据操纵操作的目的地逻辑寄存器的第三信号、标识现有的移动消除集是否包含至少一项引用的第四信号、标识所述第三数据结构内的新移动消除集的第五信号、以及标识是否选择了所述数据操纵操作以用于移动消除的第六信号。
15.如权利要求13所述的处理系统,其特征在于,所述逻辑进一步被配置成检测下列各项中的至少一项:第一数据操纵操作所具有的目的地寄存器匹配第二数据操纵操作的源;两个数据操纵操作使用公用寄存器作为源,且带有向所述源寄存器的中间写入;两个数据操纵操作使用公用寄存器作为源;第一数据操纵操作所具有的目的地寄存器匹配第二数据操纵操作的源,且带有向所述目的地寄存器的中间写入;或第一数据操纵操作改写由现有的移动消除集引用的并是第二数据操纵操作的源的寄存器。
16.如权利要求13所述的处理系统,其特征在于,所述逻辑进一步被配置成:
预先计算两个或更多数据操纵操作的依赖关系;以及
通过执行所述第三数据结构的单次更新来反映所述两个或更多数据操纵操作的结果。
17.如权利要求13所述的处理系统,其特征在于,所述逻辑进一步被配置成执行下列各项中的至少一项:创建移动消除集、修改移动消除集、或回收移动消除集。
18.一种执行数据操纵操作的方法,包括:
通过计算机系统,将多个物理寄存器值存储在第一数据结构中;
在第二数据结构中存储多个指针,每一指针引用所述第一数据结构的元素;
在第三数据结构中存储第一多个移动消除集和第二多个移动消除集,所述第一多个移动消除集的每一移动消除集包括表示多个整数逻辑寄存器的多个比特,所述第二多个移动消除集的每一移动消除集包括表示多个流式单指令多数据(SIMD)扩展(SSE)逻辑寄存器的多个比特;
预留所述第一多个移动消除集的第一移动消除集和所述第二多个移动消除集的第二移动消除集;以及
通过更新所述第二数据结构和下列各项中的一项来执行数据操纵操作:所述第一移动消除集或所述第二移动消除集。
19.如权利要求18所述的方法,还包括通过处理下列各项中的至少一项来输出更新所述第三数据结构的信号:反映所述第三数据结构的前一状态的第一信号、标识用于数据操纵操作的源逻辑寄存器的第二信号、标识用于数据操纵操作的目的地逻辑寄存器的第三信号、标识现有的移动消除集是否包含至少一项引用的第四信号、标识所述第三数据结构内的新移动消除集的第五信号、以及标识是否选择了用于移动消除的所述数据操纵操作的第六信号。
20.如权利要求18所述的方法,还包括检测下列各项中的至少一项:第一数据操纵操作所具有的目的地寄存器匹配第二数据操纵操作的源;两个数据操纵操作使用公用寄存器作为源,且带有向所述源寄存器的中间写入;两个数据操纵操作使用公用寄存器作为源;第一数据操纵操作所具有的目的地寄存器匹配第二数据操纵操作的源,且带有向所述目的地寄存器的中间写入;或第一数据操纵操作改写由现有的移动消除集引用的并是第二数据操纵操作的源的寄存器。
21.如权利要求18所述的方法,还包括:
预先计算两个或更多数据操纵操作的依赖关系;以及
通过执行所述第三数据结构的单次更新来反映所述两个或更多数据操纵操作的结果。
22.如权利要求18所述的方法,还包括执行下列各项中的至少一项:创建移动消除集、修改移动消除集或回收移动消除集。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/840,462 US9256433B2 (en) | 2013-03-15 | 2013-03-15 | Systems and methods for move elimination with bypass multiple instantiation table |
US13/840,462 | 2013-03-15 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104049950A true CN104049950A (zh) | 2014-09-17 |
CN104049950B CN104049950B (zh) | 2017-04-12 |
Family
ID=51418953
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410098517.9A Active CN104049950B (zh) | 2013-03-15 | 2014-03-17 | 带有旁路多个实例化表的移动消除的系统和方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9256433B2 (zh) |
JP (1) | JP5758515B2 (zh) |
KR (1) | KR101594502B1 (zh) |
CN (1) | CN104049950B (zh) |
DE (1) | DE102014003799A1 (zh) |
GB (1) | GB2512471B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112540982A (zh) * | 2019-09-20 | 2021-03-23 | Sap欧洲公司 | 具有可更新逻辑表指针的虚拟数据库表 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10417001B2 (en) * | 2012-12-27 | 2019-09-17 | Intel Corporation | Physical register table for eliminating move instructions |
US9292288B2 (en) * | 2013-04-11 | 2016-03-22 | Intel Corporation | Systems and methods for flag tracking in move elimination operations |
CN106149284B (zh) * | 2015-04-28 | 2019-04-26 | 青岛海尔洗衣机有限公司 | 一种洗衣机故障检测处理方法 |
US9792147B2 (en) * | 2015-07-02 | 2017-10-17 | International Business Machines Corporation | Transactional storage accesses supporting differing priority levels |
US10261790B2 (en) * | 2016-03-31 | 2019-04-16 | Intel Corporation | Memory copy instructions, processors, methods, and systems |
US10282296B2 (en) * | 2016-12-12 | 2019-05-07 | Intel Corporation | Zeroing a cache line |
US20180203694A1 (en) * | 2017-01-16 | 2018-07-19 | Intel Corporation | Execution Unit with Selective Instruction Pipeline Bypass |
US10275391B2 (en) | 2017-01-23 | 2019-04-30 | International Business Machines Corporation | Combining of several execution units to compute a single wide scalar result |
US10402355B2 (en) | 2017-02-08 | 2019-09-03 | Texas Instruments Incorporated | Apparatus and mechanism to bypass PCIe address translation by using alternative routing |
US11360770B2 (en) | 2017-03-20 | 2022-06-14 | Intel Corporation | Systems, methods, and apparatuses for zeroing a matrix |
US11275588B2 (en) | 2017-07-01 | 2022-03-15 | Intel Corporation | Context save with variable save state size |
US10884752B2 (en) | 2017-11-29 | 2021-01-05 | International Business Machines Corporation | Slice-based allocation history buffer |
GB2576572B (en) * | 2018-08-24 | 2020-12-30 | Advanced Risc Mach Ltd | Processing of temporary-register-using instruction |
US10949205B2 (en) * | 2018-12-20 | 2021-03-16 | International Business Machines Corporation | Implementation of execution compression of instructions in slice target register file mapper |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0337722A (ja) * | 1989-07-05 | 1991-02-19 | Nec Corp | 情報処理装置 |
WO2006126449A1 (ja) * | 2005-05-26 | 2006-11-30 | Nec Corporation | 情報処理装置および命令実行方法 |
US20110208918A1 (en) * | 2009-12-26 | 2011-08-25 | Shlomo Raikin | Move elimination and next page prefetcher |
US20120005459A1 (en) * | 2010-12-28 | 2012-01-05 | Advanced Micro Devices, Inc. | Processor having increased performance and energy saving via move elimination |
CN102750130A (zh) * | 2011-04-15 | 2012-10-24 | 国际商业机器公司 | 分配计数器以追踪寄存器映射的方法和系统 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US6505293B1 (en) * | 1999-07-07 | 2003-01-07 | Intel Corporation | Register renaming to optimize identical register values |
US6553483B1 (en) * | 1999-11-29 | 2003-04-22 | Intel Corporation | Enhanced virtual renaming scheme and deadlock prevention therefor |
KR100385356B1 (ko) * | 2000-10-31 | 2003-05-27 | 김현수 | 복합 테이프 전사구 |
US6957323B2 (en) * | 2001-11-14 | 2005-10-18 | Elan Research, Inc. | Operand file using pointers and reference counters and a method of use |
US7647481B2 (en) * | 2005-02-25 | 2010-01-12 | Qualcomm Incorporated | Reducing power by shutting down portions of a stacked register file |
US20090327661A1 (en) * | 2008-06-30 | 2009-12-31 | Zeev Sperber | Mechanisms to handle free physical register identifiers for smt out-of-order processors |
WO2013101323A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Micro-architecture for eliminating mov operations |
US9454371B2 (en) * | 2011-12-30 | 2016-09-27 | Intel Corporation | Micro-architecture for eliminating MOV operations |
US8949639B2 (en) | 2012-06-29 | 2015-02-03 | Intel Corporation | User behavior adaptive sensing scheme for efficient power consumption management |
US10417001B2 (en) * | 2012-12-27 | 2019-09-17 | Intel Corporation | Physical register table for eliminating move instructions |
-
2013
- 2013-03-15 US US13/840,462 patent/US9256433B2/en not_active Expired - Fee Related
-
2014
- 2014-02-17 GB GB1402777.5A patent/GB2512471B/en active Active
- 2014-02-26 JP JP2014034934A patent/JP5758515B2/ja not_active Expired - Fee Related
- 2014-03-12 KR KR1020140029236A patent/KR101594502B1/ko active IP Right Grant
- 2014-03-17 DE DE102014003799.1A patent/DE102014003799A1/de not_active Withdrawn
- 2014-03-17 CN CN201410098517.9A patent/CN104049950B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0337722A (ja) * | 1989-07-05 | 1991-02-19 | Nec Corp | 情報処理装置 |
WO2006126449A1 (ja) * | 2005-05-26 | 2006-11-30 | Nec Corporation | 情報処理装置および命令実行方法 |
US20110208918A1 (en) * | 2009-12-26 | 2011-08-25 | Shlomo Raikin | Move elimination and next page prefetcher |
US20120005459A1 (en) * | 2010-12-28 | 2012-01-05 | Advanced Micro Devices, Inc. | Processor having increased performance and energy saving via move elimination |
CN102750130A (zh) * | 2011-04-15 | 2012-10-24 | 国际商业机器公司 | 分配计数器以追踪寄存器映射的方法和系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112540982A (zh) * | 2019-09-20 | 2021-03-23 | Sap欧洲公司 | 具有可更新逻辑表指针的虚拟数据库表 |
CN112540982B (zh) * | 2019-09-20 | 2024-04-16 | Sap欧洲公司 | 具有可更新逻辑表指针的虚拟数据库表 |
Also Published As
Publication number | Publication date |
---|---|
JP2014182803A (ja) | 2014-09-29 |
US20140281432A1 (en) | 2014-09-18 |
GB2512471B (en) | 2015-06-03 |
US9256433B2 (en) | 2016-02-09 |
GB2512471A (en) | 2014-10-01 |
DE102014003799A1 (de) | 2014-09-18 |
CN104049950B (zh) | 2017-04-12 |
JP5758515B2 (ja) | 2015-08-05 |
GB201402777D0 (en) | 2014-04-02 |
KR101594502B1 (ko) | 2016-02-16 |
KR20140113434A (ko) | 2014-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104049950A (zh) | 带有旁路多个实例化表的移动消除的系统和方法 | |
CN105190538B (zh) | 用于移动消除操作中的标志跟踪的系统和方法 | |
CN108268386A (zh) | 加速硬件中的存储器排序 | |
CN106648553B (zh) | 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置 | |
CN104204990B (zh) | 在使用共享虚拟存储器的处理器中加速操作的装置和方法 | |
CN104049941A (zh) | 跟踪指令的控制流程 | |
CN104503830B (zh) | 用于引导异构系统并呈现对称核视图的方法 | |
CN104050023A (zh) | 用于实现事务存储器的系统和方法 | |
CN104995599A (zh) | 使用硬件与软件组合的路径概况分析 | |
CN104951281A (zh) | 用于实现动态无序处理器流水线的方法和装置 | |
CN108292215A (zh) | 用于加载-索引和预取-聚集操作的指令和逻辑 | |
EP3394737B1 (en) | Processing devices to perform a key value lookup instruction | |
CN108369517A (zh) | 聚合分散指令 | |
CN108475192A (zh) | 分散减少指令 | |
CN109313607A (zh) | 用于利用所指示的检查位值来检查位的位检查处理器、方法、系统和指令 | |
CN108604107A (zh) | 用于基于指令类型调整最大时钟频率的处理器、方法和系统 | |
CN114675882A (zh) | 用于可缩放预留站的方法、系统和装置 | |
CN111752533A (zh) | 用于矩阵运算的加速器系统和方法 | |
CN105320494A (zh) | 带有一致的和非一致的子系统的存储器排序 | |
TWI733714B (zh) | 用以執行共軛置換指令的處理裝置 | |
CN108292216A (zh) | 用于压缩和循环的指令和逻辑 | |
CN108292219A (zh) | 浮点(fp)加法低指令功能单元 | |
TWI724066B (zh) | 分散縮減指令 |
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 |