双舍入组合浮点乘法和加法
【专利摘要】公开了将双舍入组合浮点乘法和加法功能作为标量或向量SIMD指令或融合的微操作来提供的方法、装置、指令和逻辑。实施例包括检测浮点(FP)乘法操作和将FP乘法的结果指定为源操作数的后续的FP操作。FP乘法和后续的FP操作被编码为组合FP操作,包括对FP乘法的结果的舍入和随后的后续的FP操作。所述组合的FP操作的编码可被存储并利用融合的乘法-加法硬件来执行以作为可执行线程部分的一部分,该融合的乘法-加法硬件包括对FP乘法器的乘积的溢出检测、用于基于FP乘法器的乘积中存在溢出或无溢出而利用不同的舍入输入将第三操作数加数尾数与FP乘法器的乘积相加的第一和第二FP加法器。分别利用溢出检测来选择最终结果。
【专利说明】双舍入组合浮点乘法和加法
【技术领域】
[0001] 本公开涉及处理逻辑、微处理器W及相关联的指令集架构的领域,该指令集架构 在被处理器或其他处理逻辑所执行时运行逻辑、数学或其他功能性操作。具体地,本公开涉 及用于提供双舍入组合浮点乘法和加法功能的指令和逻辑。
【背景技术】
[0002] 目前的诸多处理器通常包括用于提供计算密集型操作但提供高度数据并行性的 指令,该些指令可通过使用多种数据存储设备的高效实现来使用,该些数据存储设备诸如: 单指令多数据(SIMD)向量寄存器。在一些替代处理器中,指令可提供融合的操作,诸如乘 法一加法操作。在一些替代的处理器中,可在单独的指令中提供该两种类型的指令和/或 该两种类型的组合,诸如例如SIMD乘法一加法操作。
[0003] 过去的一些处理器已经实现了用于执行融合的浮点乘法一加法操作的指令。例 女口,在1990, IBM在RISC系统6000 (IBM RS/6000)处理器上实现了融合的浮点乘法一加法 操作。例如,涉及点积计算的一些应用可利用该些新指令来改进性能。但是,因为支持此类 操作的浮点硬件的宽度可能是标准浮点乘法器和加法器的宽度的至少两倍,所W-个浮点 乘法一加法器会占用两个浮点乘法器和两个浮点加法器那样多的区域。因此,融合的浮点 乘法一加法器可能完全取代单独的浮点乘法器和浮点加法器,并且融合的浮点乘法一加法 器可能用于仿真单个浮点乘法和/或单个浮点加法,但牺牲了一些(有可能是显著的)性 能。对于未经重新编译的传统应用,或对于无法利用融合的浮点乘法一加法操作的应用,存 在(有可能是显著的)性能降级。
[0004] 过去的一些其它处理器已经实现了用于几乎执行融合的浮点乘法一加法操作的 指令。例如,在2001,HAL SPARC64通过将来自浮点乘法器的结果旁路至浮点加法器而实现 了伪代码融合的浮点乘法一加法操作。虽然该方法不会遭受未重新编译的传统应用或无法 利用融合的浮点乘法一加法操作的应用遇到的相同的性能降级,但浮点乘法器、旁路和浮 点加法器的宽度不足W提供与真正的融合浮点乘法一加法操作相同的改进准确度。
[0005] 在2008,电气与电子工程师协会(I邸巧发布了修改的浮点标准IE邸Std 754?-1985, I邸E Std 754-2008,其包括融合的乘法一加法(FMA)和融合的乘法一减法 (FM巧操作。该IE邸标准规定了不在乘法与加法之间进行舍入的情况下的真正的IE邸融 合的浮点乘法一加法操作的改进准确度。虽然标准化无疑将会促使提供IEEE FMA和FMS 操作的新处理器的出现,但之前提及的性能降级和增加管芯面积的问题仍存在。
[0006] 迄今为止,尚未充分探索对此类性能受限问题、面积折衷问题W及相关的功率问 题和对重新编译的需求的潜在解决方案。
【专利附图】
【附图说明】
[0007] 在附图的各图中通过示例而非限制地示出本发明。
[0008] 图IA是执行用于提供双舍入组合浮点乘法和加法功能的指令的系统的一个实施 例的框图。
[0009] 图IB是执行用于提供双舍入组合浮点乘法和加法功能的指令的系统的另一实施 例的框图。
[0010] 图IC是执行用于提供双舍入组合浮点乘法和加法功能的指令的系统的另一实施 例的框图。
[0011] 图2是执行用于提供双舍入组合浮点乘法和加法功能的指令的处理器的一个实 施例的框图。
[0012] 图3A示出根据一个实施例的打包数据类型。
[0013] 图3B示出根据一个实施例的打包数据类型。
[0014] 图3C示出根据一个实施例的打包数据类型。
[0015] 图3D示出根据一个实施例的用于提供双舍入组合浮点乘法和加法功能的指令编 码。
[0016] 图3E示出根据另一实施例的用于提供双舍入组合浮点乘法和加法功能的指令编 码。
[0017] 图3F示出根据另一实施例的用于提供双舍入组合浮点乘法和加法功能的指令编 码。
[0018] 图3G示出根据另一实施例的用于提供双舍入组合浮点乘法和加法功能的指令编 码。
[0019] 图3H示出根据另一实施例的用于提供双舍入组合浮点乘法和加法功能的指令编 码。
[0020] 图4A示出用于执行提供双舍入组合浮点乘法和加法功能的指令的处理器微架构 的一个实施例的要素。
[0021] 图4B示出用于执行提供双舍入组合浮点乘法和加法功能的指令的处理器微架构 的另一实施例的要素。
[0022] 图5是用于执行提供双舍入组合浮点乘法和加法功能的指令的处理器的一个实 施例的框图。
[0023] 图6是用于执行提供双舍入组合浮点乘法和加法功能的指令的计算机系统的一 个实施例的框图。
[0024] 图7是用于执行提供双舍入组合浮点乘法和加法功能的指令的计算机系统的另 一实施例的框图。
[00巧]图8是用于执行提供双舍入组合浮点乘法和加法功能的指令的计算机系统的另 一实施例的框图。
[0026] 图9是用于执行提供双舍入组合浮点乘法和加法功能的指令的芯片上系统的一 个实施例的框图。
[0027] 图10是用于执行提供双舍入组合浮点乘法和加法功能的指令的处理器的一个实 施例的框图。
[0028] 图11是提供双舍入组合浮点乘法和加法功能的IP核开发系统的一个实施例的框 图。
[0029] 图12示出提供双舍入组合浮点乘法和加法功能的架构仿真系统的一个实施例。
[0030] 图13示出用于转换提供双舍入组合浮点乘法和加法功能的指令的系统的一个实 施例。
[0031] 图14A示出用于执行提供双舍入组合浮点乘法和加法功能的指令的装置的一个 实施例。
[0032] 图14B示出用于执行提供双舍入组合浮点乘法和加法功能的指令的装置的另一 实施例。
[0033] 图15示出用于提供双舍入组合浮点乘法和加法(或减法或转换)功能的过程的 一个实施例的流程图。
[0034] 图16A示出用于提供双舍入组合浮点乘法和加法功能的过程的替代实施例的流 程图。
[00巧]图16B示出用于提供双舍入组合浮点乘法和减法功能的过程的替代实施例的流 程图。
【具体实施方式】
[0036] W下描述公开了用于在处理器、计算机系统或其它处理装置之内或与处理器、计 算机系统或其它处理装置相关联地提供双舍入组合浮点乘法和加法功能的指令和处理逻 辑。利用单独的浮点(F巧乘法操作和后续的加法操作来编写的算法可预期在每个操作中 对结果的IEEE兼容的舍入。因此,例如,即使存在可用于对融合的FP乘法一加法操作进行 计算的硬件,仅利将成对的乘法和加法替换为融合的FP乘法一加法操作可能不总是令人 满意。
[0037] 本申请中公开的新颖方法、装置、指令和逻辑将双舍入组合浮点乘法和加法、乘法 和减法、或乘法和转换提供作为标量或向量SIMD指令或融合的微操作。一些方法实施例包 括检测FP乘法操作和后续的FP操作(例如诸如加法、减法或转换),该些操作将FP乘法 的结果指定为源操作数。FP乘法和后续的FP操作被融合并编码为组合的FP操作,包括在 应用后续FP操作之前对FP乘法的结果进行舍入。通过重新编译或通过运行时间的动态融 合,组合的浮点乘法和加法(或减法,或转换)操作可被用于代替单独的乘法和加法(或减 法,或转换)指令,由此减少等待时间并提高指令执行效率。
[0038] 可存储所述组合的FP操作的编码,并利用融合的乘法一加法硬件将该编码作为 可执行线程部分的一部分来执行,该融合的乘法一加法硬件包括;对FP乘法器的乘积的溢 出检测、用于基于FP乘法器的乘积中的溢出或无溢出利用不同的舍入输入将第H操作数 加数尾数与FP乘法器的乘积相加的第一和第二FP加法器。然后利用来自溢出检测的溢出 信号相应地选择最终结果。
[0039] 因此,通过重新编译或通过软件转换或硬件中的运行时的动态融合,可减少等待 时间并提高指令执行效率。
[0040] 在W下描述中,陈述了诸如处理逻辑、处理器类型、微架构状况、事件、启用机制等 多种特定细节,W提供对本发明实施例的更透彻理解。然而,本领域技术人员应当领会,没 有该些具体细节也可实践本发明。此外,没有详细示出一些公知的结构、电路等等,W避免 不必要地模糊本发明的实施例。
[0041] 虽然下述的诸个实施例参照处理器来描述,但其他实施例也适用于其他类型的集 成电路和逻辑设备。本发明的实施例的类似技术和教导可应用于其它类型的电路或半导体 器件,该些其它类型的电路或半导体器件也可受益于更高的流水线吞吐量和提高的性能。 本发明的诸个实施例的教导适用于执行数据操纵的任何处理器或机器。然而,本发明不限 于执行512位、256位、128位、64位、32位、或16位数据运算的处理器或机器,并可适用于 执行数据操纵或管理的任何处理器和机器。此外,下述描述提供了示例,并且附图出于示意 性目的示出了多个示例。然而,该些示例不应该被理解为具有限制性目的,因为它们仅仅旨 在提供本发明的诸个实施例的示例,而并非对本发明的实施例的所有可能实现方式进行穷 举。
[0042] 虽然下述的示例描述了在执行单元和逻辑电路情况下的指令处理和分配,但本发 明的其他实施例也可通过存储在机器可读有形介质上的数据或指令来完成,该些数据或指 令在被机器执行时使得机器执行与本发明至少一个实施例相一致的功能。在一个实施例 中,与本发明的实施例相关联的功能被具体化在机器可执行指令中。该些指令可用来使通 过该些指令编程的通用处理器或专用处理器执行本发明的步骤。本发明的诸个实施例也可 W作为计算机程序产品或软件来提供,该计算机程序产品或软件可包括其上存储有指令的 机器或计算机可读介质,该些指令可被用来对计算机(或其他电子设备)进行编程来执行 根据本发明的实施例的一个或多个操作。另选地,本发明的诸个实施例的该些步骤可由包 含用于执行该些步骤的固定功能逻辑的专用硬件组件来执行,或由经编程的计算机组件W 及固定功能硬件组件的任何组合来执行。
[0043] 被用于对逻辑进行编程W执行本发明的诸个实施例的指令可被存储在系统中的 存储器(诸如,DRAM、高速缓存、闪存、或其他存储器)内。进一步的,指令可经由网络或其 他计算机可读介质来分发。因此,计算机可读介质可包括用于W机器(诸如,计算机)可读 的格式存储或发送信息的任何机制,但不限于:软盘、光盘、致密盘只读存储器(CD-ROM)、 磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器巧PROM)、电 可擦除可编程只读存储器巧EPROM)、磁卡或光卡、闪存、或在经由互联网通过电、光、声、或 其他形式的传递信号(诸如,载波、红外信号、数字信号等)发送信息中所用的有形机器可 读存储器。因此,计算机可读介质包括用于存储或发送机器(例如,计算机)可读形式的电 子指令或信息的任何类型的有形机器可读介质。
[0044] 设计会经历多个阶段,从创新到模拟到制造。表示设计的数据可用多种方式来表 示该设计。首先,如模拟中将有用的,可使用硬件描述语言或其他功能性描述语言来表示硬 件。此外,具有逻辑和/或晶体管口电路的电路级模型可在设计流程的其他阶段产生。此 夕F,大多数设计在某些阶段都到达表示硬件模型中多种设备的物理配置的数据水平。在使 用常规半导体制造技术的情况下,表示硬件模型的数据可W是在不同掩模层上对用于生成 集成电路的掩模指示不同特征的存在与否的数据。在任何的设计表示中,数据可被存储在 任何形式的机器可读介质中。存储器或磁/光存储器(诸如,盘)可W是存储信息的机器 可读介质,该些信息是经由光学或电学波来发送的,该些光学或电学波被调制或W其他方 式生成W传送该些信息。当发送指示或承载代码或设计的电学载波时,执行电信号的复制、 缓冲或重传情况时,制作一个新的副本。因此,通信提供商或网络提供商会在有形机器可读 介质上至少临时地存储具体化本发明的诸个实施例的技术的物品(诸如,编码在载波中的 信息)。
[0045] 在现代处理器中,多个不同执行单元被用于处理和执行多种代码和指令。并不是 所有指令都被同等地创建,因为其中有一些更快地被完成而另一些需要多个时钟周期来完 成。指令的吞吐量越快,则处理器的总体性能越好。因此,使大量指令尽可能快地执行将会 是有利的。然而,某些指令具有更大的复杂度,并需要更多的执行时间和处理器资源。例如, 存在浮点指令、加载/存储操作、数据移动等等。
[0046] 因为更多的计算机系统被用于互联网、文本W及多媒体应用,所W逐渐地引进更 多的处理器支持。在一个实施例中,指令集可与一个或多个计算机架构相关联,一个或多个 计算机架构包括数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理W及 外部输入输出(I/O)。
[0047] 在一个实施例中,指令集架构(ISA)可由一个或更多微架构来实现,微架构包括 用于实现一个或多个指令集的处理器逻辑和电路。因此,具有不同微架构的诸个处理器可 共享公共指令集的至少一部分。例如,INTEL?奔腾四(Pentium 4)处理器、Intel;底酷 眷(Core?)处理器、W及来自加利福尼亚州桑尼威尔(Sunnyvale)的超微半导体有限公司 (Advanced Micro Devices, Inc.)的诸多处理器执行几乎相同版本的x86指令集(在更新 的版本中加入了一些扩展),但具有不同的内部设计。类似地,由其他处理器开发公司(诸 如,ARM控股有限公司、MIPS或它们的授权方或兼容方)所设计的诸多处理器可共享至少一 部分公共指令集,但可包括不同的处理器设计。例如,ISA的相同寄存器架构在不同的微架 构中可使用新的或已知的技术W不同方法来实现,包括专用物理寄存器、使用寄存器重命 名机制(诸如,使用寄存器别名表RAT、重排序缓冲器ROB、W及引退寄存器组)的一个或多 个动态分配物理寄存器。在一个实施例中,寄存器可包括;可由软件编程者寻址或不可寻址 的一个或多个寄存器、寄存器架构、寄存器组、或其他寄存器集合。
[0048] 在一个实施例中,指令可包括一个或多个指令格式。在一个实施例中,指令格式可 指示多个字段(位的数目、位的位置等)W特别指定将要被执行的操作W及将要被执行的 操作的操作数。一些指令格式可进一步被指令模板(或子格式)所细分定义。例如,给定 指令格式的指令模板可被定义为具有指令格式字段的不同的子集,和/或被定义为具有不 同解释的给定字段。在一个实施例中,使用指令格式(并且,如果定义过,则W该指令格式 的一个给定指令模板)来表示指令,并且该指令指定或指示操作W及该操作将操作的操作 数。
[0049] 科学应用、金融应用、自动向量化通用应用、MS (识别、挖掘和合成)应用W及视 觉和多媒体应用(诸如,2D/3D图形、图像处理、视频压缩/解压缩、语音识别算法和音频处 理)可能需要对大量数据项执行相同的操作。在一个实施例中,单指令多数据(SIMD)指的 是使得处理器在多个数据元素上执行一操作的一种类型的指令。SIMD技术可被用于处理器 中,该些处理器将寄存器中的诸个位化it)逻辑地划分入多个固定尺寸或可变尺寸的数据 元素,每个数据元素表示单独的值。例如,在一个实施例中,64位寄存器中的诸个位可被组 织为包含四个单独的16位数据元素的源操作数,每个数据元素表示单独的16位值。该数 据类型可被称为"打包"数据类型或"向量"数据类型,并且该数据类型的操作数被称为打 包数据操作数或向量操作数。在一个实施例中,打包数据项或向量可W是存储在单个寄存 器中的打包数据元素的序列,并且打包数据操作数或向量操作数可W是SIMD指令(或"打 包数据指令"或"向量指令")的源操作数或目的地操作数。在一个实施例中,SIMD指令指 定了将要对两个源向量操作数执行的单个向量操作,W生成具有相同或不同尺寸的、具有 相同或不同数量的数据元素的、具有相同或不同数据元素次序的目的地向量操作数(也被 称为结果向量操作数)。
[0050] 诸如由Intel⑥酷眷(Core?)处理器(具有包括x86、MMX?、流SIMD扩展(SSE)、 SSE2、SSE3、SSE4. 1、SSE4. 2指令的指令集)、ARM处理器(诸如,ARM Cortex化处理器族, 具有包括向量浮点(VF巧和/或NEON指令的指令集)、MIPS处理器(诸如,中国科学院计 算机技术研究所(ICT)开发的龙芯处理器族)所使用的SIMD技术之类的SIMD技术在应用 性能上带来了极大的提高(Core?和MMX?是加利福尼亚州圣克拉拉市的英特尔公司的注册 商标或商标)。
[0051] 在一个实施例中,目的地寄存器/数据和源寄存器/数据是表示对应数据或操作 的源和目的地的通用术语。在一些实施例中,它们可由寄存器、存储器或具有与所示出的那 些名称或功能不同的名称或功能的其他存储区域所实现。例如,在一个实施例中,"DEST1" 可W是临时存储寄存器或其他存储区域,而"SRCl"和"SRC2"是第一和第二源存储寄存器 或其他存储区域,等等。在其他实施例中,SRC和DEST存储区域中的两个或更多区域可对 应于相同存储区域中的不同数据存储元素(例如,SIMD寄存器)。在一个实施例中,例如通 过将对第一和第二源数据执行的操作的结果写回至两个源寄存器中作为目的地寄存器的 那个寄存器,源寄存器中的一个也可W作为目的地寄存器。
[0052] 图IA是根据本发明的一个实施例的示例性计算机系统的框图,具有包括执行 单元W执行指令的处理器。根据本发明,诸如根据在此所描述的实施例,系统100包括 诸如处理器102之类的组件,W采用包括逻辑的执行单元来执行算法W处理数据。系统 100代表基于可从美国加利福尼亚州圣克拉拉市的英特尔公司获得的PENTIUM"' m、 PENTIUM电 4、Xeontm、Itanium必、XScaletm 矛口 / 或 StrongARlfm 微处理器的处理系统,不 过也可使用其它系统(包括具有其它微处理器的PC、工程工作站、机顶盒等)。在一个实施 例中,样本系统100可执行可从美国华盛顿州雷蒙德市的微软公司买到的WINDOWStu操作系 统的一个版本,不过也可使用其它操作系统(例如UNIX和Linux)、嵌入式软件、和/或图形 用户界面。因此,本发明的各实施例不限于硬件和软件的任何具体组合。
[0053] 实施例不限于计算机系统。本发明的替换实施例可被用于其他设备,诸如手持式 设备和嵌入式应用。手持式设备的一些示例包括:蜂窝电话、互联网协议设备、数码相机、个 人数字助理(PDA)、手持式PC。嵌入式应用可包括;微控制器、数字信号处理器值SP)、芯片 上系统、网络计算机(NetPC)、机顶盒、网络中枢、广域网(WAN)交换机、或可执行参照至少 一个实施例的一个或多个指令的任何其他系统。
[0054] 图IA是计算机系统100的框图,计算机系统100被形成为具有处理器102,处理 器102包括一个或多个执行单元108 W执行算法,W执行根据本发明的一个实施例的至少 一个指令。参照单处理器桌面或服务器系统来描述了一个实施例,但替代实施例可被包括 在多处理器系统中。系统100是"中枢"系统架构的示例。计算机系统100包括处理器102 W处理数据信号。处理器102可W是复杂指令集计算机(CISC)微处理器、精简指令集计算 巧ISC)微处理器、超长指令字(VLIW)微处理器、实现指令集组合的处理器或任意其它处理 器设备(诸如数字信号处理器)。处理器102禪合至处理器总线110,处理器总线110可在 处理器102和系统100内的其他组件之间传输数据信号。系统100的诸个元素执行本领域 所熟知的常规功能。
[00巧]在一个实施例中,处理器102包括第一级(LI)内部高速缓存存储器104。取决于 架构,处理器102可具有单个内部高速缓存或多级内部高速缓存。或者,在另一个实施例 中,高速缓存存储器可位于处理器102的外部。其他实施例也可包括内部高速缓存和外部 高速缓存的组合,该取决于特定实现和需求。寄存器组106可在多个寄存器(包括整数寄 存器、浮点寄存器、状态寄存器、指令指针寄存器)中存储不同类型的数据。
[0056] 执行单元108 (包括执行整数和浮点操作的逻辑)也位于处理器102中。处理器 102还包括微代码(UCOde) ROM,其存储用于特定宏指令的微代码。对于一个实施例,执行单 元108包括处理打包指令集109的逻辑。通过将打包指令集109包括在通用处理器102的 指令集内并包括相关的电路W执行该些指令,可使用通用处理器102中的打包数据来执行 许多多媒体应用所使用的操作。因此,通过将处理器数据总线的全带宽用于对打包数据进 行操作,许多多媒体应用可获得加速,并更为有效率地执行。该能减少在处理器数据总线上 传输更小数据单元W在一个时间对一个数据元素执行一个或多个操作的需要。
[0057] 执行单元108的替换实施例也可被用于微控制器、嵌入式处理器、图形设备、DSP W及其他类型的逻辑电路。系统100包括存储器120。存储器设备120可W是动态随机存 取存储器值RAM)设备、静态随机存取存储器(SRAM)设备、闪存设备或其他存储器设备。存 储器120可存储可由处理器102执行的指令和/或数据,数据由数据信号表示。
[005引系统逻辑芯片116禪合至处理器总线110和存储器120。在所示出的实施例中的 系统逻辑芯片116是存储器控制器中枢(MCH)。处理器102可经由处理器总线110与MCH 116通信。MCH 116提供至存储器120的高带宽存储器路径118,用于指令和数据存储,W及 用于存储图形命令、数据和纹理。MCH 116用于引导处理器102、存储器120 W及系统100 内的其他组件之间的数据信号,并在处理器总线110、存储器120和系统I/O 122之间桥接 数据信号。在一些实施例中,系统逻辑芯片116可提供禪合至图形控制器112的图形端口。 MCH 116经由存储器接口 118禪合至存储器120。图形卡112通过加速图形端口(AGP)互 连114禪合至MCH 116。
[0059] 系统100使用外围设备中枢接口总线122 W将MCH 116禪合至I/O控制器中枢 (ICH) 130。ICH 130经由局部I/O总线提供至一些I/O设备的直接连接。局部I/O总线是 高速I/O总线,用于将外围设备连接至存储器120、芯片组W及处理器102。一些示例是音 频控制器、固件中枢(闪存BIO巧128、无线收发机126、数据存储器124、包括用户输入和键 盘接口的传统I/O控制器、串行扩展端口(诸如通用串行总线USB) W及网络控制器134。 数据存储设备124可W包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备、或其他大容 量存储设备。
[0060] 对于系统的另一个实施例,根据一个实施例的指令可被用于芯片上系统。芯片上 系统的一个实施例包括处理器和存储器。用于该样一个系统的存储器是闪存存储器。闪存 存储器可位于与处理器和其他系统组件相同的管芯上。此外,诸如存储器控制器或图形控 制器之类的其他逻辑块也可位于芯片上系统上。
[0061] 图IB示出数据处理系统140,数据处理系统140实现本发明的一个实施例的原理。 本领域的技术人员将容易理解,在此描述的诸个实施例可用于替代处理系统,而不背离本 发明的实施例的范围。
[0062] 计算机系统140包括处理核159,处理核159能执行根据一个实施例的至少一个 指令。对于一个实施例,处理核159表示任何类型的架构的处理单元,包括但不限于;CISC、 RISC或化IW类型架构。处理核159也可适于W-种或多种处理技术来制造,并且通过充分 详细地表示在机器可读介质上可W便于其制造。
[0063] 处理核159包括执行单元142、一组寄存器组145 W及解码器144。处理核159也 包括对于理解本发明的实施例不是必需的额外电路(没有示出)。执行单元142用于执行 处理核159所接收到的指令。除了执行典型的处理器指令外,执行单元142也能执行打包 指令集143中的指令,用于对打包数据格式执行操作。打包指令集143包括用于执行本发 明的诸个实施例的指令W及其他打包指令。执行单元142通过内部总线而禪合至寄存器组 145。寄存器组145表示处理核159上的存储区域,用于存储包括数据的信息。如前所述的, 可W理解,该存储区域被用于存储打包数据不是关键。执行单元142禪合至解码器144。解 码器144用于将处理核159所接收到的指令解码为控制信号和/或微代码进入点。响应于 该些控制信号和/或微代码进入点,执行单元142执行合适的操作。在一个实施例中,解码 器用于解释指令的操作码,操作码指示应当对该指令内所指示的对应数据执行何种操作。
[0064] 处理核159禪合至总线141,用于与多个其他系统设备进行通信,该些系统设备 包括但不限于:例如,同步动态随机存取存储器(SDRAM)控制器146、静态随机存取存储器 (SRAM)控制器147、巧发闪存接口 148、个人计算机存储卡国际协会(PCMCIA)/致密闪存 (C巧卡控制器149、液晶显示器(LCD)控制器150、直接存储器存取(DMA)控制器151、W及 替代的总线主接口 152。在一个实施例中,数据处理系统140也包括I/O桥154,用于经由 I/O总线153与多个I/O设备进行通信。该样的I/O设备可包括但不限于:例如,通用异步 接收机/发射机扣ART) 155、通用串行总线(USB) 156、蓝牙无线UART 157、W及I/O扩展接 n 158。
[0065] 数据处理系统140的一个实施例提供了移动通信、网络通信和/或无线通信,并提 供了能够执行SIMD操作的处理核159, SIMD操作包括向量混合和置换功能。处理核159可 编程有多种音频、视频、图像和通信算法,包括离散变换(诸如Walsh-Hadamard变换、快速 傅立叶变换(FFT)、离散余弦变换值CT)、W及它们相应的逆变换)、压缩/解压缩技术(诸 如色彩空间变换)、视频编码运动估计或视频解码运动补偿、W及调制/解调(MODEM)功能 (诸如脉冲编码调制PCM)。
[0066] 图IC示出了能够执行用于提供双舍入组合浮点乘法和加法功能的指令的数据处 理系统的其他替代实施例。根据一个替代实施例,数据处理系统160可包括主处理器166、 SIMD协处理器161、高速缓存处理器167 W及输入/输出系统168。输入/输出系统168可 选地禪合至无线接口 169。SIMD协处理器161能够执行包括根据一个实施例的指令的操作。 处理核170可适于W-种或多种处理技术来制造,并且通过充分详细地表示在机器可读介 质上可W便于包括处理核170的数据处理系统160的全部或一部分的制造。
[0067] 对于一个实施例,SIMD协处理器161包括执行单元162 W及一组寄存器组164。主 处理器166的一个实施例包括解码器165,用于识别指令集163的指令,指令集163包括根 据一个实施例的用于由执行单元162所执行的指令。对于替换实施例,SIMD协处理器161 也包括解码器165B的至少一部分W解码指令集163的指令。处理核170也包括对于理解 本发明的实施例不是必需的额外电路(没有示出)。
[0068] 在操作中,主处理器166执行数据处理指令流,数据处理指令流控制通用类型的 数据处理操作,包括与高速缓存存储器167 W及输入/输入系统168的交互。SIMD协处理 器指令嵌入数据处理指令流中。主处理器166的解码器165将该些SIMD协处理器指令识 别为应当由附连的SIMD协处理器161来执行的类型。因此,主处理器166在协处理器总线 171上发出该些SIMD协处理器指令(或表示SIMD协处理器指令的控制信号),任何附连的 SIMD协处理器从协处理器总线171接收到该些指令。在该情况中,SIMD协处理器161将接 受并执行任何接收到的针对该SIMD协处理器的SIMD协处理器指令。
[0069] 可经由无线接口 169接收数据W通过SIMD协处理器指令进行处理。对于一个示 例,语音通信可W数字信号的形式被接收到,其将被SIMD协处理器指令所处理,W重新生 成表示该语音通信的数字音频采样。对于另一个示例,压缩音频和/或视频可W数字位流 的形式被接收到,其将被SIMD协处理器指令所处理,W重新生成数字音频采样和/或运动 视频峽。对于处理核170的一个实施例,主处理器166和SIMD协处理器161被集成在单个 处理核170中,该单个处理核170包括执行单元162、一组寄存器组164、W及解码器165 W 识别指令集163的指令,指令集163包括根据一个实施例的指令。
[0070] 图2是包括逻辑电路W执行根据本发明的一个实施例的指令的处理器200的微架 构的框图。在一些实施例中,根据一个实施例的指令可被实现为对具有字节尺寸、字尺寸、 双字尺寸、四字尺寸等并具有诸多数据类型(诸如单精度和双精度整数和浮点数据类型) 的数据元素执行操作。在一个实施例中,有序前端201是处理器200的一部分,其获取将要 被执行的指令,并准备该些指令W在稍后供处理器流水线使用。前端201可包括诸个单元。 在一个实施例中,指令预取器226从存储器获取指令,并将指令馈送至指令解码器228,指 令解码器228随后解码或解释指令。例如,在一个实施例中,解码器将所接收到的指令解码 为机器可执行的被称为"微指令"或"微操作"(也称为微操作数或UOP)的一个或多个操 作。在其他实施例中,解码器将指令解析为操作码和对应的数据及控制字段,它们被微架构 用于执行根据一个实施例的操作。在一个实施例中,追踪高速缓存230接受经解码的微操 作,并将它们组装为程序有序序列或微操作队列234中的踪迹,W用于执行。当追踪高速缓 存230遇到复杂指令时,微代码ROM 232提供完成操作所需的微操作。
[0071] 一些指令被转换为单个微操作,而其他指令需要若干个微操作W完成整个操作。 在一个实施例中,如果需要超过四个微操作来完成指令,则解码器228访问微代码ROM 232 W进行该指令。对于一个实施例,指令可被解码为少量的微操作W用于在指令解码器228 处进行处理。在另一个实施例中,如果需要若干微操作来完成操作,则可将指令存储在微代 码ROM 232中。追踪高速缓存230参考进入点可编程逻辑阵列(PLA)来确定正确的微指令 指针,W从微代码ROM 232读取微代码序列W完成根据一个实施例的一个或多个指令。在 微代码ROM 232完成对于指令的微操作序列化之后,机器的前端201恢复从追踪高速缓存 230获取微操作。
[0072] 无序执行引擎203是将指令准备好用于执行的单元。无序执行逻辑具有若干个缓 冲器,用于将指令流平滑并且重排序,W优化指令流进入流水线后的性能,并调度指令流W 供执行。分配器逻辑分配每个微操作需要的机器缓冲器和资源,W用于执行。寄存器重命 名逻辑将诸个逻辑寄存器重命名为寄存器组中的条目。在指令调度器(存储器调度器、快 速调度器202、慢速/通用浮点调度器204、简单浮点调度器206)之前,分配器也将每个微 操作的条目分配入两个微操作队列中的一个,一个队列用于存储器操作,另一个队列用于 非存储器操作。微操作调度器202、204、206基于对它们的依赖输入寄存器操作数源的准备 就绪W及微操作完成它们的操作所需的执行资源的可用性来确定微操作何时准备好用于 执行。一个实施例的快速调度器202可在主时钟周期的每半个上进行调度,而其他调度器 可仅仅在每个主处理器时钟周期上调度一次。调度器对分配端口进行仲裁W调度微操作W 便执行。
[0073] 寄存器组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位宽度的 操作数。
[0074] 执行块 211 包括执行单元 212、214、216、218、220、222、224,在执行单元212、214、 216、218、220、222、224中实际执行指令。该区块包括寄存器组208、210,寄存器组208、210 存储微指令需要执行的整数和浮点数据操作数值。一个实施例的处理器200由多个执行单 元组成;地址产生单元(AGU)212、AGU 214、快速ALU(算术逻辑单元)216、快速ALU 218、慢 速ALU 220、浮点ALU 222、浮点移动单元224。对于一个实施例,浮点执行块222、224执行 浮点、MMX、SIMD、SSE W及其他操作。一个实施例的浮点ALU 222包括64位/64位浮点除 法器,用于执行除法、平方根、W及余数微操作。对于本发明的诸个实施例,涉及浮点值的指 令可使用浮点硬件来处理。在一个实施例中,ALU操作进入高速ALU执行单元216、218。一 个实施例的高速ALU 216、218可执行高速操作,有效等待时间为半个时钟周期。对于一个 实施例,大多数复杂整数操作进入慢速ALU 220,因为慢速ALU 220包括用于长等待时间类 型操作的整数执行硬件,诸如,乘法器、移位器、标记逻辑和分支处理。存储器加载/存储操 作由AGU 212、214来执行。对于一个实施例,整数ALU 216、218、220被描述为对64位数据 操作数执行整数操作。在替换实施例中,ALU 216、218、220可被实现为支持大范围的数据 位,包括16、32、128、256等等。类似地,浮点单元222、224可被实现为支持具有多种宽度的 位的操作数范围。对于一个实施例,浮点单元222、224可结合SIMD和多媒体指令对128位 宽度打包数据操作数进行操作。
[00巧]在一个实施例中,在父加载完成执行之前,微操作调度器202、204、206就分派依 赖操作。因为在处理器200中微操作被投机地调度和执行,所W处理器200也包括处理存 储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则可能存在带有临时错误数 据离开调度器并运行在流水线中的依赖操作。重放机制跟踪使用错误数据的指令,并重新 执行该些指令。仅仅依赖操作需要被重放,而允许独立操作完成。处理器的一个实施例的 调度器和重放机制也被设计为捕捉提供掩码寄存器与通用寄存器之间的转换的指令。
[0076] 术语"寄存器"指代被用作为指令的一部分W标识操作数的板上处理器存储位置。 换句话说,寄存器是那些处理器外部(从编程者的角度来看)可用的处理器存储位置。然 而,一实施例的寄存器不限于表示特定类型的电路。相反,一实施例的寄存器能够存储并提 供数据,并且能够执行在此所述的功能。在此所述的寄存器可由处理器中的电路使用任何 数量不同技术来实现,诸如,专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、 专用和动态分配物理寄存器的组合,等等。在一个实施例中,整数寄存器存储H十二位整数 数据。一个实施例的寄存器组也包含八个多媒体SIMD寄存器,用于打包数据。对于W下讨 论,寄存器应被理解为设计成保存打包数据的数据寄存器,诸如来自美国加利福尼亚州圣 克拉拉市的英特尔公司的启用了 MMX技术的微处理器的64位宽MMXtm寄存器(在一些实例 中也称为"mm寄存器)。"该些MMX寄存器(可用在整数和浮点格式中)可与伴随SIMD和 SSE指令的打包数据元素一起操作。类似地,涉及SSE2、SSE3、SSE4或更新的技术(统称为 "SSEx")的128位宽XMM寄存器也可被用于保持该样打包数据操作数。在一个实施例中, 在存储打包数据和整数数据时,寄存器不需要区分该两类数据类型。在一个实施例中,整数 和浮点数据可被包括在相同的寄存器组中,或被包括在不同的寄存器组中。进一步的,在一 个实施例中,浮点和整数数据可被存储在不同的寄存器中,或被存储在相同的寄存器中。
[0077] 在下述附图的示例中,描述了多个数据操作数。图3A示出根据本发明的一个实施 例的多媒体寄存器中的多种打包数据类型表示。图3A示出了打包字节310、打包字320、打 包双字(dword) 330的用于128位宽操作数的数据类型。本示例的打包字节格式310是128 位长,并且包含十六个打包字节数据元素。字节在此被定义为是8位数据。每一个字节数 据元素的信息被存储为:对于字节0存储在位7到位0,对于字节1存储在位15到位8,对 于字节2存储在位23到位16,最后对于字节15存储在位120到位127。因此,在该寄存器 中使用了所有可用的位。该存储配置提高了处理器的存储效率。同样,因为访问了十六个 数据元素,所W现在可对十六个数据元素并行地执行一个操作。
[0078] 通常,数据元素是单独的数据片,与具有相同长度的其他数据元素一起存储在单 个寄存器或存储器位置中。在涉及SSEx技术的打包数据序列中,存储在XMM寄存器中的数 据元素的数目是128位除W单个数据元素的位长。类似地,在涉及MMX和SSE技术的打包 数据序列中,存储在MMX寄存器中的数据元素的数目是64位除W单个数据元素的位长。虽 然图3A中所示的数据类型是128位长,但本发明的诸个实施例也可操作64位宽、256位宽、 512位宽或其他尺寸的操作数。本示例的打包字格式320是128位长,并且包含八个打包字 数据元素。每个打包字包含十六位的信息。图3A的打包双字格式330是128位长,并且包 含四个打包双字数据元素。每个打包双字数据元素包含H十二位信息。打包四字是128位 长,并包含两个打包四字数据元素。
[0079] 图3B示出了替代的寄存器内数据存储格式。每个打包数据可包括超过一个独立 数据元素。示出了H个打包数据格式:打包半数据元素314、打包单数据元素342、W及打包 双数据元素343。打包半数据元素341、打包单数据元素342、打包双数据元素343的一个 实施例包含定点数据元素。对于替代实施例,一个或多个打包半数据元素341、打包单数据 元素342、打包双数据元素343可包含浮点数据元素。打包半数据元素341的一个替代实 施例是一百二十八位长度,包含八个16位数据元素。打包单数据元素342的一个替代实施 例是一百二十八位长度,且包含四个32位数据元素。打包双数据元素343的一个实施例是 一百二十八位长度,且包含两个64位数据元素。可W理解的是,该样的打包数据格式进一 步可被扩展至其他寄存器长度,例如,96位、160位、192位、224位、256位、512位或更长。
[0080] 图3C示出了根据本发明的一个实施例的多媒体寄存器中的多种有符号和无符号 打包数据类型表示。无符号打包字节表示344示出了 SIMD寄存器中的无符号打包字节的 存储。每一个字节数据元素的信息被存储为:对于字节0存储在位7到位0,对于字节1存 储在位15到位8,对于字节2存储在位23到位16,等等,最后对于字节15存储在位120到 位127。因此,在该寄存器中使用了所有可用的位。该存储配置可提高处理器的存储效率。 同样,因为访问了十六个数据元素,所W可对十六个数据元素并行地执行一个操作。有符号 打包字节表示345示出了有符号打包字节的存储。注意到,每个字节数据元素的第八位是 符号指示符。无符号打包字表示346示出了 SIMD寄存器中字7到字0如何被存储。有符 号打包字表示347类似于无符号打包字寄存器内表示346。注意到,每个字数据元素的第 十六位是符号指示符。无符号打包双字表示348示出了双字数据元素如何存储。有符号打 包双字表示349类似于无符号打包双字寄存器内表示348。注意到,必要的符号位是每个双 字数据元素的第H十二位。
[00則图3D是与可从美国加利福尼亚州圣克拉拉市的英特尔公司的万维网intel. com/ products/processor/manuals/上获得的"Intel液64和IA-32英特尔架构软件开发者手 册组合卷 2A 和 2B;指令集参考 A-Z (Intel Architec1:ure Software Developer's Manual Combined Volumes 2A and 2B:Instruction Set Reference A-Z)"中描述的运算码格式类 型相对应的具有32或更多位的操作编码(操作码)格式360 W及寄存器/存储器操作数寻 址模式的一个实施例的描述。在一个实施例中,可通过一个或更多个字段361和362来编码 指令。可W标识每个指令高达两个操作数位置,包括高达两个源操作数标识符364和365。 对于一个实施例,目的地操作数标识符366与源操作数标识符364相同,而在其他实施例中 它们不相同。对于替代实施例,目的地操作数标识符366与源操作数标识符365相同,而在 其他实施例中它们不相同。在一个实施例中,由源操作数标识符364和365所标识的源操 作数中的一个被指令的结果所覆写,而在其他实施例中,标识符364对应于源寄存器元素, 而标识符365对应于目的地寄存器元素。对于一个实施例,操作数标识符364和365可被 用于标识32位或64位的源和目的地操作数。
[0082] 图3E示出了具有四十个或更多位的另一个替代操作编码(操作码)格式370。操 作码格式370对应于操作码格式360,并包括可选的前缀字节378。根据一个实施例的指令 可通过字段378、371和372中的一个或多个来编码。通过源操作数标识符374和375 W 及通过前缀字节378,可标识每个指令中高达两个操作数位置。对于一个实施例,前缀字节 378可被用于标识32位或64位的源和目的地操作数。对于一个实施例,目的地操作数标 识符376与源操作数标识符374相同,而在其他实施例中它们不相同。对于替代实施例,目 的地操作数标识符376与源操作数标识符375相同,而在其他实施例中它们不相同。在一 个实施例中,指令对由操作数标识符374和375所标识的一个或多个操作数进行操作,并 且由操作数标识符374和375所标识的一个或多个操作数被指令的结果所覆写,然而在其 他实施例中,由标识符374和375所标识的操作数被写入另一个寄存器中的另一个数据元 素中。操作码格式360和370允许由MOD字段363和373 W及由可选的比例-索引-基址 (scale-index-base)和位移(displacement)字节所部分指定的寄存器到寄存器寻址、存 储器到寄存器寻址、由存储器对寄存器寻址、由寄存器对寄存器寻址、直接对寄存器寻址、 寄存器至存储器寻址。
[0083] 接下来转到图3F,在一些替换实施例中,64位(或128位、或256位、或512位或 更多)单指令多数据(SIMD)算术操作可经由协处理器数据处理(CD巧指令来执行。操作 编码(操作码)格式380示出了一个该样的CDP指令,其具有CDP操作码字段382和389。 对于替代实施例,该类型CDP指令操作可由字段383、384、387和388中的一个或多个来编 码。可W对每个指令标识高达H个操作数位置,包括高达两个源操作数标识符385和390 W及一个目的地操作数标识符386。协处理器的一个实施例可对8、16、32和64位值操作。 对于一个实施例,对整数数据元素执行指令。在一些实施例中,使用条件字段381,可有条 件地执行指令。对于一些实施例,源数据尺寸可通过字段383来编码。在一些实施例中,可 对SIMD字段执行零狂)、负(脚、进位(C)和溢出(V)检测。对于一些指令,饱和类型可通 过字段384来编码。
[0084] 接下来转到图3G,其描绘了根据另一实施例的与可从美国加利福尼亚州圣克拉 拉市的英特尔公司的万维网(WWW) intel. com/products/processor/manuals/上获得的 "Intel麼高级向量扩展编程参考(Intel⑥ Advanced Vector Extensions Programming Reference)中描述的操作码格式类型相对应的用于提供双舍入组合浮点乘法和加法功能 的另一替代操作编码(操作码)格式397。
[0085] 原始x86指令集向1字节操作码提供多种地址字节油Ie)格式W及包含在 附加字节中的直接操作数,其中可从第一个"操作码"字节中获知附加字节的存在。此外, 特定字节值被预留给操作码作为修改符(称为前缀prefix,因为它们被放置在指令之前)。 当256个操作码字节的原始配置(包括该些特殊前缀值)耗尽时,指定单个字节W跳出 (escape)到新的256个操作码集合。因为添加了向量指令(诸如,SIMD),即便通过使用前 缀进行了扩展W后,也需要产生更多的操作码,并且"两字节"操作码映射也已经不够。为 此,将新指令加入附加的映射中,附加的映射使用两字节加上可选的前缀作为标识符。
[0086] 除此外,为了便于在64位模式中实现额外的寄存器,在前缀和操作码(W及任何 的用于确定操作码所需的跳出字节)之间使用额外的前缀(被称为"REX")。在一个实施 例中,REX具有4个"有效载荷"位,W指示在64位模式中使用附加的寄存器。在其他实施 例中,可具有比4位更少或更多的位。至少一个指令集的通用格式(一般对应于格式360 和/或格式370)被一般地示出如下:
[0087] [prefixes] [rex] escape [escape2] opcode mo化m (等等)
[0088] 操作码格式397对应于操作码格式370,并包括可选的VEX前缀字节391 (在一个 实施例中,W十六进制的C4或巧开始)W替换大部分的其他公共使用的传统指令前缀字 节和跳出代码。例如,W下示出了使用两个字段来编码指令的实施例,其可在原始指令中不 存在第二跳出代码时使用。在W下所示的实施例中,传统跳出由新的跳出值所表示,传统前 缀被完全压缩为"有效载荷(payload)"字节的一部分,传统前缀被重新申明并可用于未来 的扩展,并且加入新的特征(诸如,增加的向量长度W及额外的源寄存器区分符)。
[0089]
【权利要求】
1. 一种机器实现的方法,包括: 检测包括第一浮点(FP)乘法操作和第二FP操作的可执行线程部分,所述第二FP操作 将所述第一 FP乘法操作的结果指定为源操作数; 将所述第一 FP乘法操作和第二FP操作编码为组合的FP操作,所述组合的FP操作包 括对所述第一 FP乘法操作的结果的舍入、然后所述第二FP操作使用经过舍入的结果作为 所述源操作数; 存储所述组合的FP操作的编码;以及 执行所述组合的FP操作,以作为所述可执行线程部分的一部分。
2. 如权利要求1所述的机器实现的方法,其特征在于,所述第二FP操作是FP加法操 作。
3. 如权利要求1所述的机器实现的方法,其特征在于,所述第二FP操作是FP减法操 作。
4. 如权利要求1所述的机器实现的方法,其特征在于,所述第二FP操作是FP转换操 作。
5. 如权利要求1所述的机器实现的方法,其特征在于,所述组合的FP操作的所述编码 作为微操作被存储在微操作存储器中。
6. 如权利要求5所述的机器实现的方法,其特征在于,所述检测由处理器执行优化逻 辑来执行。
7. 如权利要求1所述的机器实现的方法,其特征在于,对所述组合的FP操作的所述编 码被存储作为指令集架构(ISA)宏指令。
8. 如权利要求7所述的机器实现的方法,其特征在于,对所述组合的FP操作的所述编 码作为ISA宏指令被存储在指令高速缓存中。
9. 如权利要求8所述的机器实现的方法,其特征在于,所述检测由处理器ISA转换逻辑 来执行。
10. 如权利要求7所述的机器实现的方法,其特征在于,所述检测由编译器优化逻辑来 执行。
11. 一种机器实现的方法,包括: 在可执行线程部分中检查浮点(FP)加法操作,以确定所述FP加法操作的第一源操作 数是否是FP乘法操作的结果;以及 如果所述第一源操作数被确定是所述结果并且所述FP加法和乘法操作具有相同精 度,则用双舍入组合FP乘法一加法操作代替所述FP加法操作,并将所述FP乘法操作标记 为已融合;以及 在所述可执行线程部分中检查融合的FP乘法操作,以确定其结果是否将被另一操作 使用;以及 如果所述融合的FP乘法操作的结果被确定不被任何其它操作使用,则去除所述融合 的FP乘法操作。
12. 如权利要求11所述的机器实现的方法,其特征在于,所述双舍入组合FP乘法一加 法操作作为微操作被存储在微操作存储器中。
13. 如权利要求12所述的机器实现的方法,其特征在于,所述检查由处理器执行优化 逻辑来执行。
14. 如权利要求11所述的机器实现的方法,其特征在于,所述双舍入组合FP乘法一加 法操作被存储作为指令集架构(ISA)宏指令。
15. 如权利要求14所述的机器实现的方法,其特征在于,所述双舍入组合FP乘法一加 法操作作为ISA宏指令被存储在指令高速缓存中。
16. 如权利要求15所述的机器实现的方法,其特征在于,所述检查由处理器ISA转换逻 辑来执行。
17. 如权利要求14所述的机器实现的方法,其特征在于,所述检查由编译器优化逻辑 来执行。
18. -种机器实现的方法,包括: 将可执行线程部分中的浮点(FP)乘法操作转换成加数操作数为零的双舍入组合FP乘 法一加法操作; 将所述可执行线程部分中的FP加法操作转换成乘数操作数为一的双舍入组合FP乘 法一加法操作,所述FP加法操作的加数操作数被用作所述双舍入组合FP乘法一加法操作 的被乘数操作数;以及 如果乘数操作数为一的第一双舍入组合FP乘法一加法操作的被乘数操作数与加数操 作数为零的按顺序的前一第二双舍入组合FP乘法一加法操作的目的地操作数相匹配,则 用所述第二双舍入组合FP乘法一加法操作的乘数和被乘数操作数来代替所述第一双舍入 组合FP乘法一加法操作的乘数和被乘数操作数;以及 如果加数操作数为零的任何余下的双舍入组合FP乘法一加法操作产生未使用的结 果,则去除所述余下的双舍入组合FP乘法一加法操作。
19. 如权利要求18所述的机器实现的方法,其特征在于,所述双舍入组合FP乘法一加 法操作作为微操作被存储在微操作存储器中。
20. 如权利要求19所述的机器实现的方法,其特征在于,所述转换由处理器执行优化 逻辑来执行。
21. 如权利要求18所述的机器实现的方法,其特征在于,所述双舍入组合FP乘法一加 法操作被存储作为指令集架构(ISA)宏指令。
22. 如权利要求21所述的机器实现的方法,其特征在于,所述转换由处理器ISA转换逻 辑来执行。
23. 如权利要求22所述的机器实现的方法,其特征在于,所述双舍入组合FP乘法一加 法操作作为ISA宏指令被存储在指令高速缓存中。
24. -种机器实现的方法,包括: 将可执行线程部分中的浮点(FP)乘法操作转换成加数操作数为零的双舍入FP组合乘 法一加法(FCMDD)操作; 将所述可执行线程部分中的FP减法操作转换成乘数操作数为一的双舍入FP组合乘 法一减法(FCMSUB)操作,所述FP减法操作的被减数操作数被用作所述FCMSUB操作的被乘 数操作数; 如果乘数操作数为一的所述双舍入FCMSUB操作的被乘数与加数操作数为零的按顺序 的前一双舍入FCMADD操作的目的地操作数相匹配,则通过用所述FCMADD操作的被乘数和 乘数操作数来代替所述FCMSUB操作的被乘数和乘数操作数,将所述双舍入FCMADD操作组 合到所述FCMSUB操作中; 如果乘数操作数为一的所述双舍入FCMSUB操作的减数与加数操作数为零的按顺序的 前一双舍入FCMADD操作的目的地操作数相匹配,则将所述双舍入FCMADD操作组合到双舍 入FCMSUB逆操作中以代替所述双舍入FCMSUB操作;以及 如果加数操作数为零的任何余下的双舍入FCMDD操作产生未使用的结果,则将所述 余下的双舍入FCMDD操作去除。
25. 如权利要求24所述的机器实现的方法,其特征在于,所述转换由处理器执行优化 逻辑来执行。
26. 如权利要求25所述的机器实现的方法,其特征在于,所述双舍入FCMSUB操作或所 述双舍入FCMSUB逆操作作为微操作被存储在微操作存储器中。
27. 如权利要求24所述的机器实现的方法,其特征在于,所述转换由处理器ISA转换逻 辑来执行。
28. 如权利要求27所述的机器实现的方法,其特征在于,所述双舍入组合FP乘法一加 法操作被存储作为指令集架构(ISA)宏指令。
29. 如权利要求27所述的机器实现的方法,其特征在于,所述双舍入组合FP乘法一加 法操作作为ISA宏指令被存储在指令高速缓存中。
30. -种装置,包括: 浮点(FP)乘法器电路,用于将第一操作数被乘数尾数与第二操作数乘数尾数相乘以 产生结果; FP对齐电路,用于根据所述FP乘法器电路的结果来对齐第三操作数尾数; 溢出检测电路,用于检测所述FP乘法器电路的所述结果中的溢出状况; 第一 FP加法器电路,用于基于在所述FP乘法器电路的所述结果中未检测到溢出状况 的假设,利用第一舍入输入将所述经对齐的第三操作数尾数与所述FP乘法器电路的所述 结果加到一起,以产生第一和或差; 第二FP加法器电路,用于基于在所述FP乘法器电路的所述结果中检测到溢出状况的 假设,利用第二舍入输入将所述经对齐的第三操作数尾数与所述FP乘法器电路的所述结 果加到一起,以产生第二和或差;以及 多路复用器电路,用于基于所述溢出检测电路在所述FP乘法器电路的结果中检测到 溢出状况或未检测到溢出状况,来在所述第二和或差与第一和或差之间进行选择。
31. 如权利要求30所述的装置,其特征在于,所述第一操作数被乘数、所述第二操作数 乘数、以及所述第三操作数是单指令多数据(SMD)向量寄存器。
32. 如权利要求31所述的装置,其特征在于,所述第一操作数被乘数、所述第二操作数 乘数、以及所述第三操作数的数据元素是64位FP数据元素。
33. 如权利要求31所述的装置,其特征在于,所述第一操作数被乘数、所述第二操作数 乘数、以及所述第三操作数的数据元素是32位FP数据元素或16位FP数据元素。
34. 如权利要求30所述的装置,其特征在于,所述第一操作数被乘数、所述第二操作数 乘数、以及所述第三操作数是标量FP寄存器。
35. 如权利要求34所述的装置,其特征在于,所述标量FP寄存器在FP堆栈上。
36. 一种处理器,包括: 一个或多个向量寄存器,各自包括用于存储向量元素的值的多个数据字段; 解码级,用于解码单指令多数据(SMD)双舍入组合浮点(FP)乘法一加法或乘法一减 法指令,所述单指令多数据(SMD)双舍入组合浮点(FP)乘法一加法或乘法一减法指令指 定:所述一个或多个向量寄存器的目的地操作数、所述一个或多个向量寄存器的第一操作 数被乘数、向量元素尺寸、所述一个或多个向量寄存器的第二操作数乘数、以及所述一个或 多个向量寄存器的第三操作数; SMD FP乘法一加法器,包括: 浮点(FP)乘法器级,用于将所述第一操作数被乘数的多个尾数与所述第二操作数乘 数的多个相应的尾数相乘,以产生多个相应的结果; FP对齐级,用于根据所述FP乘法器级的相应结果来对齐所述第三操作数的多个相应 的尾数; 溢出检测电路,用于检测所述FP乘法器级的相应结果中的溢出状况; 第一 FP加法器级,用于基于在所述FP乘法器级的相应结果中未检测到溢出状况的假 设,利用第一舍入输入将所述第三操作数的相应的经对齐的多个尾数与所述FP乘法器级 的相应的结果加到一起,以产生相应的多个第一和或差; 第二FP加法器级,用于基于在所述FP乘法器级的相应结果中检测到溢出状况的假设, 利用第二舍入输入将所述第三操作数的相应的经对齐的多个尾数与所述FP乘法器级的相 应的结果加到一起,以产生相应的多个第二和或差;以及 多路复用器级,用于基于所述溢出检测级在所述FP乘法器级的相应结果中检测到溢 出状况或未检测到溢出状况,来在相应的多个所述第二和或差与第一和或差之间进行选 择。
37. 如权利要求36所述的处理器,其特征在于,所述第一操作数被乘数、所述第二操作 数乘数、以及所述第三操作数的数据元素是64位FP数据元素。
38. 如权利要求36所述的处理器,其特征在于,所述第一操作数被乘数、所述第二操作 数乘数、以及所述第三操作数的数据元素是32位FP数据元素。
39. 如权利要求36所述的处理器,其特征在于,所述双舍入组合浮点(FP)乘法一加法 或乘法一减法指令由处理器指令集架构(ISA)转换逻辑产生。
40. 如权利要求39所述的处理器,其特征在于,所述双舍入组合FP乘法一加法或乘 法一减法指令作为ISA宏指令被存储在指令高速缓存中。
【文档编号】G06F9/30GK104321741SQ201380028676
【公开日】2015年1月28日 申请日期:2013年6月19日 优先权日:2012年6月29日
【发明者】S·萨姆德若拉, G·玛格里斯, M·卢彭, D·R·迪泽尔 申请人:英特尔公司