首页> 中国专利> 带有旁路多个实例化表的移动消除的系统和方法

带有旁路多个实例化表的移动消除的系统和方法

摘要

本申请公开了带有旁路多个实例化表的移动消除的系统和方法。带有旁路多个实例化表(MIT)逻辑的用于移动操作消除的系统和方法。示例处理系统可以包括:被配置成存储多个物理寄存器值的第一数据结构;被配置成存储多个指针的第二数据结构,每一指针都引用第一数据结构的元素;包括多个移动消除集的第三数据结构,每一移动消除集都包括表示多个逻辑寄存器的多个比特;以及被配置成通过使第二数据结构的元素引用第一数据结构的元素来执行数据操纵操作的逻辑,所述逻辑进一步被配置成通过执行第三数据结构的单个更新来反映两个或更多数据操纵操作的结果。

著录项

  • 公开/公告号CN104049950A

    专利类型发明专利

  • 公开/公告日2014-09-17

    原文格式PDF

  • 申请/专利权人 英特尔公司;

    申请/专利号CN201410098517.9

  • 发明设计人 J·R·安德森;

    申请日2014-03-17

  • 分类号G06F9/312;G06F9/318;

  • 代理机构上海专利商标事务所有限公司;

  • 代理人何焜

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-17 01:14:57

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-04-12

    授权

    授权

  • 2014-10-22

    实质审查的生效 IPC(主分类):G06F9/312 申请日:20140317

    实质审查的生效

  • 2014-09-17

    公开

    公开

说明书

技术领域

本发明一般涉及计算机系统,具体而言,涉及提高由计算机系统执行 数据复制指令的效率。

背景

物理寄存器之间的数据复制操作代表由处理器执行的大部分操作。因 此,优化它们的执行可以提高处理器的总体性能。

附图简述

本发明是通过示例而不是作为限制来说明的,当与附图一起考虑时并 参考下列详细描述时,可以更完全地理解本发明,在附图中:

图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 是基于位于加利福尼亚州圣克拉拉市的英特尔公司所提供的PENTIUM IIITM、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将不同类型的数据存储在各种寄存器中,包括整 数寄存器、浮点寄存器、向量寄存器、分组寄存器、影子寄存器(shadow  register)、检查点寄存器、状态寄存器以及指令指针寄存器。

执行单元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、快速ALU 216、快速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和MOV R9,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(MOV  BX,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和INT MIT中的移动消除集,不管移动操作中涉及的寄存器的类型是什么。尽管 潜在地减少实际执行的移动消除的数量,由于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、磁卡或光卡, 闪存,或适于存储电子指令的任何类型的介质。术语“计算机可读取的存 储介质”应该被视为包括存储一个或多个指令集的单个介质或多个介质(例 如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。术语“计 算机可读介质”还应该被视为包括能够存储、编码或携带由机器执行的一 组指令并且使机器执行各实施例的方法中的任何一个或多个的任何介质。 术语“计算机可读取的存储介质”相应地应该被视为包括,但不局限于, 固态存储器、光学介质、磁性介质,能够存储由机器执行的一组指令并且 使机器执行各实施例的方法中的任何一个或多个的任何介质。

此处呈现的算法和/或显示不固有地涉及任何特定计算机或其他设备。 各种通用系统可以与根据此处的原理编写的程序一起使用,或者构建更加 专业化的设备来执行所需的方法操作也是比较方便的。根据下面的描述, 这些系统中的各种系统的所需的结构将变得显而易见。另外,没有参考任 何特定编程语言来描述各实施例。应该理解,可以使用各种编程语言来实 现此处所描述的各实施例的各实施例的原理。

上面的描述阐述了诸如特定系统、组件、方法等等的示例之类的很多 具体细节,以便提供对多个实施例的更全面的理解。然而,对那些精通本 技术的人显而易见的是,可以在没有这些具体细节的情况下实施至少一些 实施例。在其他情况下,没有详细示出或以简单框图格式来呈现已知的组 件或方法,以便避免对各实施例造成不必要的模糊。如此,上文阐述的具 体细节只是示例性的。特定实现可能不同于这些示例性细节,仍在各实施 例的范围内。

可以理解,上文的描述只是说明性的,而不是限制性的。在阅读和理 解上面的描述之后,许多其他实施例对本领域的技术人员是显而易见的。 各实施例的范围完全由所附权利要求书以及这些权利要求所授权的等效技 术方案的完整范围来确定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号