《浮点舍入量确定处理器、方法、系统和指令.pdf》由会员分享,可在线阅读,更多相关《浮点舍入量确定处理器、方法、系统和指令.pdf(63页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN104145245A43申请公布日20141112CN104145245A21申请号201180076467922申请日20111230G06F9/06200601G06F9/30200601G06F13/1420060171申请人英特尔公司地址美国加利福尼亚州72发明人CS安德森BL托尔R凡伦天S卢巴诺维奇A格雷德斯廷74专利代理机构上海专利商标事务所有限公司31100代理人张东梅54发明名称浮点舍入量确定处理器、方法、系统和指令57摘要一方面,方法包括接收浮点舍入量确定指令。该指令指示一个或多个浮点数据元素的源,指示小数点之后的分数位的数量,且指示目的地存储位置。响应于浮。
2、点舍入量确定指令将包括一个或多个结果浮点数据元素的结果存储在目的地存储位置。一个或多个结果浮点数据元素中的每一个包括相应位置中的源的相应浮点数据元素与已经被舍入到指示数量的分数位的源的相应浮点数据元素的经舍入版本之间的差。公开了其它方法、装置、系统和指令。85PCT国际申请进入国家阶段日2014082986PCT国际申请的申请数据PCT/US2011/0682472011123087PCT国际申请的公布数据WO2013/101233EN2013070451INTCL权利要求书3页说明书31页附图28页19中华人民共和国国家知识产权局12发明专利申请权利要求书3页说明书31页附图28页10申请公。
3、布号CN104145245ACN104145245A1/3页21一种方法,包括接收浮点舍入量确定指令,所述浮点舍入量确定指令指示一个或多个浮点数据元素的源,指示小数点之后的分数位的数量,且指示目的地存储位置;以及响应于浮点舍入量确定指令将包括一个或多个结果浮点数据元素的结果存储在目的地存储位置,一个或多个结果浮点数据元素中的每一个包括相应位置中的源的相应浮点数据元素与已经被舍入到指示数量的分数位的源的相应浮点数据元素的经舍入版本之间的差。2如权利要求1所述的方法,其特征在于,进一步包括确定已经被舍入到所指示数量的分数位的源的浮点数据元素的经舍入版本;以及从所述源的浮点数据元素减去经舍入版本。3。
4、如权利要求1所述的方法,其特征在于,接收包括接收明确指定分数位的数量的浮点舍入量确定指令。4如权利要求3所述的方法,其特征在于,接收包括接收具有立即数的浮点舍入量确定指令,所述立即数包括用以明确指定分数位的数量的多个位。5如权利要求1所述的方法,其特征在于,接收包括接收含有打包数据操作掩码说明符和数据元素广播控制的浮点舍入量确定指令。6如权利要求1所述的方法,其特征在于,接收包括接收指示打包数据操作掩码的浮点舍入量确定指令,且其中存储结果包括根据打包数据操作掩码有条件地存储一个或多个结果浮点数据元素,每个结果浮点数据元素包括源的相应浮点数据元素和源的相应浮点数据元素的经舍入版本之间的差。7如权。
5、利要求1所述的方法,其特征在于,接收包括接收指示单个浮点数据元素的源的浮点舍入量确定指令,且其中存储包括存储含有多个打包结果浮点数据元素的结果打包数据,所述结果浮点数据元素中的每一个包括源的单个浮点数据元素和已经被舍入到所指示的数量的分数位的源的单个浮点数据元素的经舍入版本之间的差。8如权利要求1所述的方法,其特征在于,接收包括接收指示多个打包浮点数据元素的源的浮点舍入量确定指令,且其中存储包括存储含有相应的多个打包结果浮点数据元素的结果。9如权利要求1所述的方法,其特征在于,接收包括接收指示单个标量浮点数据元素的源的浮点舍入量确定指令,且其中存储包括存储含有单个相应的结果浮点数据元素的结果。。
6、10如权利要求1所述的方法,其特征在于,还包括在浮点乘法和加法算术逻辑单元中的一个或多个结果浮点数据元素。11如权利要求1所述的方法,其特征在于,接收包括接收指示源的浮点舍入量确定指令,所述源包括以下之一1至少八个双精度浮点数据元素;以及2至少十六个单精度浮点数据元素。12一种装置,包括多个寄存器;以及与多个寄存器耦合的浮点执行单元,所述浮点执行单元操作成响应于浮点舍入量确定指令将结果存储在目的地中,所述浮点舍入量确定指令指示一个或多个浮点数据元素的权利要求书CN104145245A2/3页3源,指示小数点之后的分数位的数量,并且指示目的地,所述结果包括一个或多个结果浮点数据元素,所述一个或多。
7、个结果浮点数据元素中的每一个包括在相应位置中的源的相应浮点数据元素与已经被舍入到所指示数量的分数位的源的相应浮点数据元素的经舍入版本之间的差。13如权利要求12所述的装置,其特征在于,所述浮点舍入量确定指令明确指定分数位的数量。14如权利要求13所述的装置,其特征在于,所述浮点舍入量确定指令具有立即数,所述立即数包括用以明确指定分数位的数量的多个位。15如权利要求12所述的装置,其特征在于,还包括打包数据操作掩码寄存器,且其中浮点舍入量确定指令指示打包数据操作掩码寄存器。16如权利要求12所述的装置,其特征在于,所述浮点舍入量确定指令指示单个浮点数据元素的源,且其中执行单元响应于指令广播所述单。
8、个浮点数据元素。17如权利要求12所述的装置,其特征在于,还包括打包数据操作掩码寄存器,且其中浮点舍入量确定指令包括打包数据操作掩码说明符和数据元素广播控制。18如权利要求12所述的装置,其特征在于,所述执行单元响应于指令存储包括多个打包结果浮点数据元素的打包数据结果。19如权利要求12所述的装置,其特征在于,所述打包数据结果包括至少八个双精度浮点数据元素和至少十六个单精度浮点数据元素中的一个。20如权利要求12所述的装置,其特征在于,所述执行单元响应于指令存储包括单个标量结果浮点数据元素的结果。21如权利要求12所述的装置,其特征在于,所述执行单元包括浮点乘法和加法单元。22如权利要求12所。
9、述的装置,其特征在于,所述执行单元响应于指令确定已经被舍入到所指示的数量的分数位的源的浮点数据元素的经舍入版本,并从源的浮点数据元素减去经舍入版本。23一种系统,包括互连;与所述互连耦合的处理器,所述处理器操作成响应于浮点舍入量确定指令将结果存储在目的地中,所述浮点舍入量确定指令指示一个或多个浮点数据元素的源,指示小数点之后的分数位的数量,并且指示目的地,所述结果包括一个或多个结果浮点数据元素,所述一个或多个结果浮点数据元素中的每一个包括在相应位置中的源的相应浮点数据元素与已经被舍入到所指示数量的分数位的源的相应浮点数据元素的经舍入版本之间的差。与所述互连耦合的动态随机存取存储器DRAM。24。
10、如权利要求23所述的系统,其特征在于,所述浮点舍入量确定指令具有用于明确指定分数位的数量的立即数。25如权利要求23所述的系统,其特征在于,还包括打包数据操作掩码寄存器,且其中浮点舍入量确定指令包括打包数据操作掩码说明符,用以指定打包数据操作掩码寄存器。26一种制品,包括包括一种或多种固体数据存储材料的机器可读存储介质,所述机器可读存储介质存储浮点舍入量确定指令,权利要求书CN104145245A3/3页4所述浮点舍入量确定指令指示一个或多个浮点数据元素的源,指示小数点之后的分数位的数量,并且指示目的地存储位置,并且所述浮点舍入量确定指令如果由机器执行则操作用于导致所述机器执行以下操作将包括一。
11、个或多个结果浮点数据元素的结果存储在目的地存储位置中,一个或多个结果浮点数据元素中的每一个包括相应位置中的源的相应浮点数据元素与已经被舍入到指示数量的分数位的源的相应浮点数据元素的经舍入版本之间的差。27如权利要求26所述的制品,其特征在于,所述指令如果由机器执行还操作用于导致机器访问由指令指示的打包数据操作掩码。28如权利要求26所述的制品,其特征在于,所述指令如果由机器执行还操作用于导致机器广播由指令指示的单个源浮点数据元素。权利要求书CN104145245A1/31页5浮点舍入量确定处理器、方法、系统和指令0001背景技术领域0002实施例涉及处理器。具体地,实施例涉及响应于浮点舍入量确。
12、定指令确定浮点舍入量的处理器。0003背景信息0004浮点数通常用于处理器、计算机系统和其它电子设备。浮点数的一个优点是它们允许按相对紧凑的数值格式和/或位数表示宽范围的数值。0005现有技术中已知若干不同的浮点格式。浮点格式通常将用于表示浮点数的位分摊成若干组成CONSTITUENT字段,称为浮点数的符号、有效位和指数。0006在本领域中已知用于处理浮点数的各种指令。例如,已知用于在浮点和整数格式之间转换的指令作为另一个示例,已知用于将标量或打包单精度或双精度浮点数据元素分别舍入为单精度或双精度浮点格式的整数的指令。0007附图的若干视图的简要说明0008可通过参考以下描述以及用于示出实施例。
13、的附图最佳地理解本发明。在附图中0009图1是具有含一个或多个浮点舍入量确定指令的指令集的处理器的实施例的框图。0010图2AE是适当的浮点格式的实施例的框图。0011图3是具有操作用于执行浮点舍入量确定指令的实施例的浮点执行单元的指令处理装置的实施例的框图。0012图4是处理浮点舍入量确定指令的实施例的方法的实施例的流程框图。0013图5是浮点舍入量确定操作的实施例的框图,其涉及将一个或多个浮点数的一个或多个有效数舍入成所指示数量的分数位。0014图6是适当的浮点源和/或结果格式的若干示例实施例的框图。0015图7是带数据元素广播的浮点舍入量确定操作AFLOATINGPOINTROUNDOF。
14、FAMOUNTDETERMINATIONWITHDATAELEMENTBROADCASTOPERATION的实施例的框图。0016图8是带掩码的浮点舍入量确定操作AFLOATINGPOINTROUNDOFFAMOUNTDETERMINATIONWITHMASKINGOPERATION的实施例的框图。0017图9是一组合适的打包数据操作掩码寄存器的实施例的框图。0018图10是浮点舍入量确定指令格式的实施例的框图。0019图11是适当的立即数的特定示例实施例的框图。0020图12是一组合适的打包数据寄存器的实施例的框图。0021图13是包括存储一个或多个浮点舍入量确定指令的机器可读存储介质的制品。
15、的框图。0022图14A是示出根据本发明的实施例的通用向量友好指令格式及其A类指令模板的方框图。说明书CN104145245A2/31页60023图14B是示出根据本发明的实施例的通用向量友好指令格式及其B类指令模板的方框图。0024图15A是示出根据本发明的实施例的示例性专用向量友好指令格式的框图。0025图15B是示出根据本发明的实施例的构成完整操作码字段的具有专用向量友好指令格式的字段的方框图。0026图15C是示出根据本发明的实施例的构成寄存器索引字段的具有专用向量友好指令格式的字段的框图。0027图15D是示出根据本发明的一个实施例的构成扩充AUGMENTATION操作字段的具有专用。
16、向量友好指令格式的字段的框图。0028图16是根据本发明的一个实施例的寄存器架构的方框图。0029图17A是示出根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的无序发布/执行流水线的框图。0030图17B示出处理器核,该核包括耦合到执行引擎单元的前端单元,并且两者耦合到存储器单元。0031图18A是根据本发明的实施例的连接到管芯上ONDIE互联网络且具有第二级L2高速缓存的本地子集的单处理器核的方框图。0032图18B是根据本发明的各实施例的图18A中的处理器核的一部分的展开图。0033图19是根据本发明的实施例的可具有一个以上核、可具有集成存储器控制器、并且可具有集成图形的处理。
17、器的方框图。0034图20示出根据本发明的实施例的系统的方框图。0035图21示出根据本发明的实施例的第一更具体的示例性系统的方框图。0036图22示出根据本发明的实施例的第二更具体的示例性系统的方框图。0037图23示出根据本发明的实施例的片上系统SOC的方框图。0038图24是根据本发明的实施例的对比使用软件指令变换器将源指令集中的二进制指令变换成目标指令集中的二进制指令的框图。具体实施方式0039本文中公开的是浮点舍入量确定指令,用于执行该浮点舍入量确定指令的处理器,在处理或执行浮点舍入量确定指令时处理器执行的方法,以及合并一个或多个处理器以处理或执行该浮点舍入量确定指令的系统。在以下描。
18、述中,阐述多个特定细节例如,特定处理器配置、操作序列、指令格式、浮点格式、微架构细节等。然而,在没有这些具体细节的情况下,也可实践实施例。在其他实例中,未详细示出公知电路、结构和技术,以避免混淆对本描述的理解。0040图1是具有含一个或多个浮点舍入量确定指令103的指令集102的处理器100的实施例的框图。该处理器可以是各种复杂指令集计算CISC处理器、各种精简指令集计算RISC处理器、各种超长指令字VLIW处理器、其各种混合、或完全其他类型的处理器中的任何处理器。在一些实施例中,处理器可以是通用处理器例如,在台式、膝上型等计算机中使用的类型的通用微处理器。替换地,处理器可以是专用处理器。合适。
19、的专用处理器的示例包括但不限于,网络处理器、通信处理器、加密处理器、图形处理器、协处理器、嵌入说明书CN104145245A3/31页7式处理器、数字信号处理器DSP、浮点协处理器以及控制器例如,微控制器,仅列举数例。0041处理器具有指令集架构ISA101。ISA表示处理器的架构中涉及编程的那部分。ISA通常包括原生指令、架构寄存器、数据类型、寻址模式、存储器架构、中断和异常处理以及处理器的外部输入和输出I/O。ISA与微架构不同,微架构通常表示被选择用于实现ISA的特定处理器设计技术。带有不同的微架构的处理器可以共享共同的ISA。0042ISA包括处理器支持的指令集102。指令集的这些指令。
20、表示宏指令例如,提供给处理器以供执行的指令,与微指令或微操作例如,处理器的解码器解码宏指令而得到的微指令或微操作不同。指令集包括一个或多个浮点舍入量确定指令103。在一些实施例中,浮点舍入量确定指令可操作用于导致处理器确定一个或多个源浮点数据元素和一个或多个对应的源浮点数据元素的经舍入版本之间的差。以下进一步公开浮点舍入量确定指令的各不同实施例。处理器还包括浮点执行逻辑108,该逻辑可操作用于执行或处理浮点舍入量确定指令103。0043ISA还包括架构可视寄存器例如,架构寄存器组104。架构寄存器通常表示管芯上的处理器存储位置。架构寄存器此处也可以被简称为寄存器。短语架构寄存器、寄存器组、以及。
21、寄存器在本申请中用于表示对软件和/或程序器可见例如,软件可见的的寄存器和/或由通用宏指令指定用来标识操作数的寄存器,除非另外指定或清楚地明显可知。这些寄存器与给定微架构中的其他非架构的或非在架构上可见的寄存器例如,指令所使用的临时寄存器,重新排序缓冲器,引退寄存器等等不同。0044所示出的架构寄存器包括打包数据寄存器105。每个打包数据寄存器可操作用于存储打包数据、向量数据或者SIMD数据。在一些实施例中,打包数据寄存器可用于存储与浮点舍入量确定指令103的打包实施例相关联的打包浮点数据。在一些实施例中,打包数据寄存器可用于存储与浮点舍入量确定指令103的标量实施例相关联的标量浮点数据。在一些。
22、实施例中,打包数据寄存器还可任选地能够存储整数,但这不是必须的。或者,架构寄存器可包括单独标量浮点寄存器的集合,用以分别存储用于浮点舍入量确定指令的标量实施例的标量浮点数据。0045在一些实施例中,寄存器可任选地包括掩码寄存器106,然而这不是必须的。掩码寄存器可存储打包数据操作掩码,以对打包数据操作例如与浮点舍入量确定指令相关联的打包数据浮点舍入量确定操作进行掩码或断言。以下进一步讨论掩码寄存器和掩码操作。0046寄存器还包括控制和/或状态寄存器107。在一些方面,控制和/或状态寄存器中的一个或多个可包括与浮点舍入量确定指令的执行相关联的状态和/或控制信息例如,它可包括浮点舍入量确定指令所使。
23、用的默认舍入模式,除非存在由指令提供的舍入模式的超驰OVERRIDE。0047浮点数的简要讨论可能是有帮助的。浮点数包括符号、有效数、基数和指数,它们的关系在等式1中示出0048A1符号有效位数基数指数等式10049表达式“1符号”表示负一自乘到符号次幂。该表达式评估浮点数是正或负。例如,当符号是整数0时,浮点数是正,或者当符号是整数1时,浮点数是说明书CN104145245A4/31页8负。有效数包括一定长度的数字串,该长度在很大程度上决定浮点数的精度。有效数有时也被称为有效数字、系数、分数或尾数。通常隐含地假设小数点例如,十进制格式的十进制小数点或二进制格式的二进制点位于固定位置例如,刚好。
24、在有效数的最左或最高有效数字的右侧,在一些情况下可如下所讨论地暗示。二进制中示例有效数可以是“110010010000111111011011”。小数点右侧的有效数的数字例如“10010010000111111011011”可表示分数位。表达式“基数指数”表示基数自乘到指数次幂。基数通常是基数2对于二进制,基数10对于十进制或基数16对于十六进制。基数有时被称为底数RADIX。指数还可被称为首数CHARACTERISTIC或缩放因数SCALE。使基数自乘指数次幂实际上将小数点例如,从隐含的或假设的开始位置移动指数数量的数位。如果指数为正,则小数点向右移动,或者如果指数为负,则小数点向左移动。0。
25、050图2AE是示出适当的浮点格式的示例实施例的框图。电气和电子工程师协会IEEE已经将标志IEEE754的各种版本中的这些格式标准化。0051图2A示出半精度浮点格式210A。半精度浮点具有16位且也被称为二进制16。半精度浮点格式包括在位90中的10位的有效数211A、在位1410中的5位的指数212A以及在位15中的1位的符号213A。0052图2B示出单精度浮点格式210B。单精度浮点格式具有32位且也被称为二进制32。单精度浮点格式包括在位220中的23位的有效数211B、在位3023中的8位的指数212B以及在位31中的1位的符号213B。0053图2C示出双精度浮点格式210C。。
26、双精度浮点格式具有64位且也被称为二进制64。双精度浮点格式包括在位510中的52位的有效数211C、在位6252中的11位的指数212C以及在位63中的1位的符号213C。目前,单精度和双精度格式可能被大多数处理器、计算机系统和电子设备广泛使用。0054图2D示出扩展双精度浮点格式210D。扩展双精度浮点格式具有80位。扩展双精度浮点格式包括在位630中的64位的有效数211D、在位7864中的15位的指数212D以及在位79中的1位的符号213D。0055图2E示出四精度浮点格式210E。四精度浮点格式具有128位且也被称为二进制128。四精度浮点格式包括在位1110中的112位的有效数2。
27、11E、在位126112中的15位的指数212E以及在位127中的1位的符号213E。0056在这些浮点格式的每一个中,暗示或假设基数是基数2即,二进制,且不被以浮点格式来单独存储。有效数的最高有效或最左位被称为J位。隐含地假设J位是二进制1,且一般不被存储为浮点格式,而是提供附加精度而不需要被存储的隐含或隐藏位例如,对于有效数明确具有23位的单精度浮点数实际具有24位精度。通常假定小数点在J位之后。指数通常具有指数偏移EXPONENTBIAS。例如,半精度格式可具有指数偏移15,单精度格式可具有指数偏移127,双精度格式可具有指数偏移1023,而四精度格式可具有指数偏移16383。如果需要的。
28、话,可在IEEE754中获得关于浮点数和格式的进一步细节。0057这些只是数个说明性示例。其它适当的格式包括但不限于十进制32、十进制64和十进制128。此外,未来开发的其它格式通常也是适当的。0058图3是具有可操作用于执行包括浮点舍入量确定指令303的实施例的指令的浮点执行单元316的指令处理装置300的实施例的框图。在一些实施例中,指令处理装置可以是说明书CN104145245A5/31页9处理器和/或可被包括在处理器中。例如,在一些实施例中,指令处理装置可以是图1的处理器或类似设备,或者可被包括在图1的处理器或类似设备中。替代地,指令处理装置可被包括在不同的处理器或电子系统中。在一些实。
29、施例中,指令处理装置可被包括在增加的或单独的浮点处理器或单元中,以引入或补充相关联的处理器或电子设备的浮点处理能力。0059指令处理装置300可接收浮点舍入量确定指令303。例如,可从指令取出单元、指令队列或存储器接收该指令。浮点舍入量确定指令可表示由指令处理装置识别并控制该装置执行特定操作的机器指令、宏指令或控制信号。0060浮点舍入量确定指令可明确指定例如通过位或一个或多个字段或以其它方式指示例如,隐含地指示源320。源包括一个或多个浮点数据元素321。在一些实施例中,浮点舍入量确定指令可明确指定例如,通过位或一个或多个字段或以其它方式指示例如,隐含指示小数点例如,二进制小数点、十进制小数。
30、点或十六进制小数点之后源320的一个或多个浮点数据元素321中每一个将被舍入至的分数位的数量。在一些实施例中,可在指令的立即数中指定分数位的数量。或者,可在寄存器或其它存储位置中指定或在寄存器或其它存储位置中隐含地指示分数位的数量。指令还可指定或以其它方式指示目的地322例如目的地存储位置,其中将根据指令存储结果324。0061在一些实施例中,源320和目的地322可各自在指令处理装置的一组打包数据寄存器305内,尽管这不是必须的。打包数据寄存器可各自表示可操作用于存储打包或向量浮点数据的架构可见的管芯上存储位置例如在具有执行单元的管芯上。在一些实施例中,如前所述,打包数据寄存器还可操作用于存。
31、储标量浮点数据。打包数据寄存器可使用公知技术在不同的微架构中以不同的方式实现,并且不限于任何特定类型的电路。各种不同类型的寄存器都是合适的,只要它们能够存储和提供如此处所描述的浮点数据。合适类型的寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、及其组合。或者,在其它实施例中,源和/或目的地中的一个或多个可被存储在打包数据寄存器外的其它存储位置中例如,在标量浮点寄存器、存储器位置等。0062所示的指令处理装置包括指令解码单元或解码器315。解码器可接收和解码高级机器指令或宏指令如,浮点舍入量确定指令303,并且输出一个或多个低级微操作、微代码入口点、微指令或者反映。
32、和/或从原始较高级指令导出的其他低级指令或控制信号。这一个或多个低级指令或控制信号可通过一个或多个较级例如,电路级或硬件级操作来实现高级指令的操作。解码器可以使用各种不同的机制来实现,包括但不限于,微代码只读存储器ROM、查找表、硬件实现、可编程逻辑阵列PLA和本领域已知的用于实现解码器的其他机制。0063在其他实施例中,取代具有解码器315,可使用指令仿真器、翻译器、变形器MORPHER、解释器、或者其他指令转换逻辑。各种不同类型的指令变换逻辑在本领域中是已知的,并且可在软件、硬件、固件、或者其组合中实现。指令转换逻辑可接收指令,并且仿真、翻译、变形、解释、或者以其他方式将接收的指令转换成一。
33、个或多个对应的导出指令或控制信号。在其他实施例中,可使用指令转换逻辑和解码器两者。例如,该装置可具有用于将接收到的指令转换成一个或多个中间指令的指令转换逻辑,以及用于将一个或多个中间指令解码成可由该指令处理装置的原生硬件执行的一个或多个较低级指令或控制信号的解码器。指令变换逻辑中的一些或全部可位于其余指令处理装置的管芯外,诸如在单独的说明书CN104145245A6/31页10管芯上或在管芯外的存储器中。0064再次参考图3,浮点执行单元316与解码器315耦合。执行单元可从解码器接收一个或多个微操作、微代码进入点、微指令、其他指令或其他控制信号,它们反映了浮点舍入量确定指令303或者是从浮点。
34、舍入量确定指令303导出的。执行单元也与源320和目的地322耦合例如,与打包数据寄存器305耦合。浮点执行单元包括设计成在浮点数上进行操作例如,浮点舍入量确定操作、浮点舍入操作、减法操作等的逻辑例如,通常在至少一些电路上。0065响应于浮点舍入量确定指令303和/或作为浮点舍入量确定指令303的结果,浮点执行单元316可操作用于将结果324存储在目的地中,该浮点舍入量确定指令303指定或以其它方式指示包括一个或多个浮点数据元素321的源320并且指定或以其它方式指示目的地322。结果可包括一个或多个相应的结果浮点数据元素323。在一些实施例中,一个或多个结果浮点数据元素中的每一个可包括相应位。
35、置中的源的相应浮点数据元素与已经被舍入到指示数量的分数位的源的相应浮点数据元素的经舍入版本之间的差。换言之,每个结果数据元素可表示FPFP,其中FP表示浮点数,且其中FP表示浮点数的经舍入的版本。即,指令可导致执行单元通过将一个或多个浮点数据元素舍入到所指示数量的分数位来确定一个或多个浮点数据元素的经舍入的版本,然后在舍入之前从最初的相应浮点数据元素减去这些经舍入的版本中的每一个。0066在一些实施例中,浮点舍入量确定指令可操作用于导致装置将一个或多个源浮点数据元素中的每一个的有效数舍入到给定数量的分数位。在该实施例中,浮点舍入量确定指令可指定或以其它方式指示在小数点例如,二进制小数点、十进制。
36、小数点或十六进制小数点之后或右侧,源的一个或多个浮点数据元素中的每一个将被舍入至的分数位的数量。该过程不限于舍入到整数值。当指令指示的分数位的数量为0时,舍入到整数值是可能的,但当指令指示的分数位的数量不是零时可实现舍入到非整数值。在一些实施例中,浮点舍入量确定指令的立即数可包括用于明确指定在小数点例如,二进制或十进制小数点之后源的一个或多个浮点数据元素中的每一个被舍入至的分数位的数量。在一个特定实施例中,8位立即数的位74可指定该数量例如,指定0和十五之间的数,尽管这不是必须的。0067舍入浮点数指的是用另一个浮点数替换浮点数,另一个浮点数表示例如,近似等于最初浮点数,但在小数点后具有较少数。
37、量的分数位。考虑对数派舍入的示例。按熟悉的十进制计数法表示的至二十个小数位的数是314159265358979323846。二进制计数法表示的至二十个小数位的数是1100100100001111110110。在二进制单精度浮点格式中,数被表示为有效数110010010000111111011,且指数1。假设我们想要舍入到5个分数位。在这种情况下,经舍入的值将是1100100或1100101,这取决于舍入模式。结果将按浮点返回,为1100100且二进制指数1,或为1100101且二进制指数1这取决于舍入模式。0068将浮点数的有效数舍入到给定数量的分数位用于各种不同的目的。作为一个示例,当期望减。
38、少分数位的数量和/或降低浮点数的精度时,这可能是有用的。作为另一个示例,当将浮点数转换成小数点右侧的给定数量的有效数字时,这可能是有用的。作为另一个示例,在表查找之前利用具有所指示数量的分数位的经舍入的有效数,作为表的索引,这可说明书CN104145245A107/31页11能是有用的。减少分数位的数量可帮助减小表的大小例如,条目的数量。还期望知晓舍入的量或与这种舍入操作相关联的舍入量。作为一个示例,这可允许由于评估由于舍入引起的误差量。作为另一个示例,当在数学库中处理指数、幂或其它超越函数时,这可能是有用的。0069在单个指令的执行范围内将一个或多个浮点数舍入到所指示数量的分数位并确定舍入量。
39、的能力提供某些优点。其它指令可能仅能够将浮点数舍入到整数,且这可能需要四步过程第一,通过将浮点数乘以与所期望的分数位的数量相对应的缩放因子来缩放浮点数,利用具有仅能舍入到整数量的限制的指令来将经缩放的浮点数舍入为整数,然后通过缩放因子对经舍入的整数值浮点数进行去缩放DESCALE,然后减去原始源。通常这些操作中的一些可能倾向于是相对复杂的操作,潜在地涉及溢出控制和特殊值处理。0070通常,所指示的分数位的数量为正,但在一些实施例中,可允许所指示的分数位的数量为负。舍入到负数个“分数”位可表示舍入到给定的底数幂的倍数。例如,当舍入到负整数K分数位时,结果将是N底数K,其中N是整数。作为一个示例,。
40、50按二进制舍入到K1分数位得到40或60,这取决于舍入模式。作为另一个示例,1525按二进制舍入到K2分数位得到120或160,这取决于舍入模式。舍入到负数个分数位的使用包括但不限于用于函数中的特殊情况的测试诸如POWK1以及数学库中的其它使用。0071在一些实施例中,如果源数据元素是信令非数SIGNALINGNOTANUMBER,SNAN,则可将其转换成静默非数QUIETNOTANUMBER,QNAN。在一些实施例中,如果源数据元素是正或负无穷大,则返回至可以是0。在一些实施例中,如果源数据元素是非正规,则返回至可以是源数据元素。0072浮点执行单元和/或指令处理装置可包括特定或具体的逻辑。
41、例如,典型的是可能与软件和/或固件组合的电路或其它硬件,操作用于执行和/或处理浮点舍入量确定指令,并响应于指令例如,响应于从指令导出的一个或多个微指令或其它控制信号存储结果。在一些实施例中,浮点执行单元可包括集成电路、数字电路、专用集成电路、模拟电路、编程逻辑设备、包括指令的存储设备或其组合。在一些实施例中,浮点执行单元可包括至少一些电路或硬件例如,由晶体管、栅和/或其它集成电路组件配置的专用电路。在一些实施例中,执行单元可包括浮点乘法和加法算术逻辑单元,但这不是必须的。0073为了避免混淆描述,已示出和描述了相对简单的指令处理装置。在其他实施例中,该指令处理装置可任选地包括其他公知组件,诸如。
42、举例而言,指令取出单元、指令调度单元、分支预测单元、指令和数据的高速缓存、指令和数据的转换后备缓冲器TRANSLATIONLOOKASIDEBUFFER、预取缓冲器、微指令队列、微指令定序器、总线接口单元、二级或更高级高速缓存、引退单元、寄存器重命名单元、处理器中包含的其他组件、以及上述的各种组合。实施例可具有多个核、逻辑处理器或执行引擎。可操作用于执行本申请中公开的指令实施例的执行单元可被包含在核、逻辑处理器或执行引擎中的至少一个、至少两个、大多数或全部中。实际上在处理器中存在组件的多种不同的组合和配置,并且各实施例不限于任何特定组合或配置。0074图4是处理浮点舍入量确定指令的实施例的方法。
43、425的实施例的流程框图。在各实施例中,方法可由通用处理器、专用处理器例如,图形处理器或数字信号处理器、或其他种类型的数字逻辑设备或指令处理装置执行。在一些实施例中,方法425可由图1的处说明书CN104145245A118/31页12理器和/或图3的指令处理装置300来执行。替代地,方法425可由处理器或指令处理装置的不同实施例执行。此外,处理器100和指令处理装置300可执行与方法425的操作和方法相同、类似或不同的操作和方法的实施例。0075方法包括在框426处接收浮点舍入量确定指令。在各个方面,该指令可在处理器、指令处理装置或者其一部分例如,解码器、指令变换器等处接收。在各个方面,指令。
44、可从处理器外的源例如,从主存储器、盘、或总线或互连或者从处理器上的源例如,从指令高速缓存接收。浮点舍入量确定指令指定或以其它方式指示一个或多个浮点数据元素的源、指定或以其它方式指示在小数点例如,二进制小数点或十进制小数点之后源的一个或多个浮点数据元素中的每一个被舍入至的分数位的数量,并且指定或以其它方式指示目的地存储位置。0076然后,在框427,响应于浮点舍入量确定指令、作为浮点舍入量确定指令的结果和/或由浮点舍入量确定指令所指定的,将包括一个或多个结果浮点数据元素的结果存储在目的地存储位置中。一个或多个结果浮点数据元素中的每一个包括相应位置中的源的相应浮点数据元素与已经被舍入到指示数量的分。
45、数位的源的相应浮点数据元素的经舍入版本之间的差。0077所示的方法包括从处理器或指令处理装置外部可见的操作例如,从软件角度可见。在其他实施例中,该方法可任选地包括处理器内出现的一个或多个操作。作为示例,可获取浮点舍入量确定指令,然后可将该指令解码、转换、仿真或以其它方式变换成一个或多个其它指令或控制信号。可访问和/或接收源操作数/数据。可启用浮点执行单元,以执行指令指定的操作,并且可执行该操作例如,可执行用于实现指令的操作的微架构操作。作为示例,这些微架构操作可包括舍入、减法等。0078图5是示出浮点舍入量确定操作530的实施例的框图。可响应于浮点舍入量确定指令的实施例执行浮点舍入量确定操作。。
46、0079浮点舍入量确定指令指定或以其它方式指示一个或多个浮点数据元素的源520。在一些实施例中,源可包括具有有效数0SIGNICAND0的单个标量浮点数据元素FP0。在一个方面,单个标量浮点数据元素可被存储在打包数据寄存器中例如,在打包数据寄存器的最低位数据元素中。或者,在另一个方面,单个标量浮点数据元素可被存储在标量寄存器中或另一个存储位置。适当的浮点数据元素格式的示例包括但不限于半精度、单精度、双精度、扩展双精度和四精度。0080在其它实施例中,源可包括多个N个打包浮点数据元素FP0FPN,其具有相应的有效数,即有效数0有效数NSIGNICAND0SIGNICANDN,其中N至少是2。数N。
47、可等于源打包数据的位宽度除以浮点数据元素FP0FPN的位宽度。在各实施例中,打包数据宽度可以是64位且可以有两个32位单精度浮点数据元素或一个64位双精度浮点数据元素,打包数据宽度可以是128位且可以有四个32位单精度浮点数据元素或二个64位双精度浮点数据元素,打包数据宽度可以是256位且可以有八个32位单精度浮点数据元素或四个64位双精度浮点数据元素,或打包数据宽度可以是512位且可以有十六个32位单精度浮点数据元素或八个64位双精度浮点数据元素。其它打包数据宽度和浮点数据元素宽度例如,半精度、扩展双精度、四精度也是适当的。0081浮点舍入量确定指令还指定或以其它方式指示分数位的数量532。。
48、分数位的数量说明书CN104145245A129/31页13是在小数点例如,二进制小数点、十进制小数点或十六进制小数点后或右侧的。一个或多个浮点数据元素中的每一个将被舍入到所指示数量的分数位,以形成源浮点数据元素的经舍入版本,然后通过从原始的对应源浮点数据元素减去浮点数据元素的经舍入的版本来生成并存储结果。在一些实施例中,指令可包括一个或多个位或字段,以明确指定分数位的数量。例如,指令可包括立即数,该立即数具有用以指定分数位的数量的多个位例如8位立即数的位74。四个位可允许指定在0和15之间的分数位的数量,然而如果期望能够指定其它数量的分数位,则可包括较少或较多的位。0082可生成包括一个或多。
49、个相应的结果浮点数据元素的结果524,并将其存储在由浮点舍入量确定指令指示的目的地中。一个或多个结果浮点数据元素中的每一个可包括相应位置中的源的相应浮点数据元素FP与已经被舍入到指示数量的分数位的源的相应浮点数据元素FP的经舍入版本之间的差。在图示中,上标星号用于指示相应的浮点数据元素FP的经舍入版本。例如,FP0是有效数0被舍入到所指示数量的分数位的相应浮点数据元素FP0的经舍入版本,FPN是有效数N被舍入到所指示数量的分数位的浮点数据元素FPN的经舍入版本,等等。因此,第一结果浮点数据元素可包括FP0FP0,第N结果浮点数据元素可包括FPNFPN,等等。0083如图所示,在单个标量源浮点数据元素FP0的实施例中,结果可包括单个对应的结果浮点数据元素。或者,在N个打包浮点数据元素FP0FPN的实施例中,结果可包括N个对应的结果浮点数据元素。0084图6是示出适当的浮点源和/或结果格式的若干示例实施例的框图。这些格式中的每一个适用于如本文公开的浮点舍入量确定指令的源和/或结果。008564位打包单精度浮点格式634是64位宽且包括两个32位单精度SP浮点数据元素SP0SP1。SP0是最低有效数据元素且占据位310,而SP1是最高有效数据元素且占据位6332。0086128位打包单精度浮点格式635是128位宽且包括四个32位单精度SP浮点数据元素S。