CN107025091A - 二进制融合乘加浮点计算 - Google Patents

二进制融合乘加浮点计算 Download PDF

Info

Publication number
CN107025091A
CN107025091A CN201710061253.3A CN201710061253A CN107025091A CN 107025091 A CN107025091 A CN 107025091A CN 201710061253 A CN201710061253 A CN 201710061253A CN 107025091 A CN107025091 A CN 107025091A
Authority
CN
China
Prior art keywords
rounded
addend
rounding
correction
shift
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201710061253.3A
Other languages
English (en)
Other versions
CN107025091B (zh
Inventor
M·克莱恩
K·M·克罗伊纳
C·利希特瑙
S·M·穆勒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN107025091A publication Critical patent/CN107025091A/zh
Application granted granted Critical
Publication of CN107025091B publication Critical patent/CN107025091B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • G06F5/012Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/485Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5334Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
    • G06F7/5336Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm
    • G06F7/5338Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm each bitgroup having two new bits, e.g. 2nd order MBA
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/483Indexing scheme relating to group G06F7/483

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Nonlinear Science (AREA)
  • Complex Calculations (AREA)

Abstract

本公开的各实施例总体上涉及二进制融合乘加浮点计算。具体地,涉及一种二进制融合乘加浮点单元,被配置成对加数、乘数和被乘数进行运算。该单元被配置成经由早期结果反馈路径接收在该单元中执行的在先运算的未舍入结果作为加数;以对未舍入指数和未舍入尾数执行未舍入加数的对准移位;以及响应于向上舍入信号与实际对准移位并行地执行加数的舍入校正。

Description

二进制融合乘加浮点计算
技术领域
本发明的各个方面总体上涉及数据处理系统,并且具体地涉及执行二进制融合乘加浮点计算。
背景技术
2008年出版的用于二进制浮点运算的IEEE-754-2008标准规定了通常在计算机硬件中实现的浮点数据架构,诸如具有乘法器的浮点处理器。格式包括符号、无符号偏置指数和有效位数。符号位是单个比特,并且用“S”表示。用“e”表示的无符号偏置指数例如对于单精度为8个比特长,对于双精度为11个比特长,对于四精度为15个比特长。有效位数例如对于单精度为24个比特长,对于双精度为53个比特长,对于四精度为113个比特长。如IEEE-754-2008标准所定义的,有效位数的最高有效位——即所谓的隐含位——是从指数位中解码的。
为了改进浮点算术处理,大多数现代处理器使用被称为融合乘加(以下缩写为FMA)过程的过程来将浮点乘法运算(例如A*B)与浮点加法运算(例如+C)组合,用于作为单个指令(例如A*B+C)来执行,其中A、B、C是乘积A*B的操作数以及C和乘积的和的操作数。通过在单个指令中执行两个运算,FMA过程减少了整个执行时间。FMA过程还提供了改进的精度,因为仅需要在以全精度执行乘法和加法运算两者之后才执行舍入。例如,只有一个舍入误差,而不是两个。
在浮点处理器中,一个中心区域是乘法器阵列。乘法器阵列用于执行两个数的乘法。通常,使用具有基数4的最先进的布思(Booth)编码,其是通常使用的快速乘法算法。这减少了需要求和直到n/2+1的乘积项的数量,其中n是每个操作数的位数。使用允许并行处理所有位的进位保存加法器电路来进行求和,而不是将较低位位置的进位输出链接到下一较高位置的常规相加,其通常通过进位传播加法器电路来执行。进行这种求和的电路在本领域中被称为约减树。在约减树的末端,剩余两个项,和项和进位项,它们分别表示信息的求和部分和信息的进位部分。这些项最终与对准的加数一起添加。再次,在这里执行进位保存加法。最后,只剩下两个项,也是和项和进位项,并且这两个项使用进位-传播-加法器相加以生成一个最终结果。
分析应用、特别是在大数据量上运行时是非常计算密集的。它们的主要数据类型是二进制浮点。这包括商业可用的分析软件,如ILOG、SPSS、Cognos、Algo、以及很多专为保险和银行行业设计的分析软件包。
很多移动应用需要位置检测例程,位置检测例程也是浮点密集型计算。这些例程的性能在新兴领域、例如远程信息处理中是关键的,其将移动输入与数据库查询和保险分析代码组合并且具有实时要求。
对于这两个领域,浮点单元(FPU)的等待时间和吞吐量对于应用的性能非常重要。对于欺诈检测,例如,FPU性能是关于检测是否接近实时的关键。
IEEE 754-2008标准使得FMA(融合乘加,即A*B+C)对于现代浮点单元是强制的。自从引入IEEE 754-2008标准以来,对于具有FMA支持的最快FPU存在巨大竞争。
US 2014/0188966 A1和类似地US 8,892,619 B2(其每个通过引用整体并入本文)公开了在集成电路中实施的浮点融合乘加(FMA)单元。FMA单元包括具有浮点输入A和C以及浮点输出A*C的乘法器电路、以及连接到乘法器电路的输出的加法器电路。加法器电路将浮点输出A*C与浮点输入B相加,以产生结果A*C+B。加法器电路包括与乘法器电路并行实现的指数差分电路、在指数差分电路之后实现的近路径电路、在指数差分电路之后实现的远路径电路、连接到近路径电路和远路径电路的输出的2:1多路复用器(Mux)电路、以及连接到2:1多路复用器电路的输出的舍入电路。FMA单元还包括累积旁路电路,累积旁路电路将2:1多路复用器电路的未舍入输出转发给近路径电路和远路径电路的输入,并且以进位保存格式将指数结果转发给指数差分电路的输入。FMA单元中还包括将2:1多路复用器电路的未舍入输出转发给乘法器电路的浮点输入A和C的乘加旁路电路。根据US 2014/0188966 A1和US8,892,619 B2的公开内容,需要用于B操作数(加数)的舍入校正在加数进入对准移位器之前发生。累积旁路电路相对于彼此交错,使得指数数据路径比尾数数据路径更早地开始,并且指数结果比进位保存格式的尾数结果更早地计算以转发用于下一从属计算。远路径电路将增量与移位和加法数据路径组合。在被馈送给移位器或加法器之前递增的情况下,未舍入输出被右边填充1,并且加法器电路中的电路使用进位传播,就好像未舍入结果在移位和加法之前已经递增。
因此,US 2014/0188966 A1公开了一种在级联乘加管线上的融合乘加。FMA单元需要特殊的浮点加法器结构,用于将2:1多路复用器的未舍入输出转发给浮点输入A和乘法器电路。
US 8,671,129 B2(其全部通过引用内容并入本文)公开了一种用于在乘加管线中执行乘法运算的处理单元。为了减少管线等待时间,乘加运算的未舍入结果被旁路到乘加管线的输入用于在后续运算中使用。如果确定在先运算需要舍入,则在后续运算期间发生舍入。在后续运算期间,未被乘法运算使用的布思(Booth)编码器输出舍入校正因子作为未被乘法运算利用的布思(Booth)多路复用器的选择输入。当布思多路复用器接收舍入校正因子时,布思多路复用器将舍入校正值输出给进位保存加法器(CSA)树,并且CSA树根据舍入校正值和其他部分乘积生产正确的和。
US 8,671,129 B2中公开的处理单元使用融合乘加算法工作。US8,671,129 B2描述了对乘法器输入执行校正以及对布思(Booth)结构的必要修改。然而,它没有描述如何对加数应用舍入校正。
在2011年在第20届IEEE计算机算术研讨会上公开的Sameh Galal、Mark Horowitz的“Latency Sensitive FMA Design”的出版物中还描述了需要由远近路径组成的特殊加法器结构的在US2014/0188966 A1中公开的FMA单元设计(其通过引用整体并入本文),其应用于级联融合乘加管线。
US 8,990,282 B2(其全部内容通过引用并入本文)公开了一种包括乘法电路和加法电路的融合乘加浮点单元。乘法电路将具有N位有效位数的操作数B和C相乘以生成未舍入乘积B*C。未舍入乘积B*C具有M位有效位数,其中M>N。加法电路接收操作数A,操作数A在比乘法电路4接收操作数B和C的处理周期更晚的处理周期输入。在由乘法电路4生成未舍入乘积B*C之后,加法电路8开始操作数A的处理。加法电路8将操作数A与未舍入乘积B*C相加,并且输出舍入结果A+B*C。
因此,在US 8,990,282 B2中,在融合乘加运算的情况下,乘法器将未舍入乘积转发给加法器部分,这是级联乘法和加法设计的特色。此外,在第二种转发中,舍入结果被转发回A输入,即加数。由所公开的乘加单元提供的结果总是被完全舍入;这可以是乘法、加法、减法或乘加运算的结果。由所公开的单元接收的操作数也被完全舍入。不存在来自在先运算的结果到后续运算的操作数的未舍入转发。
US 8,977,670B2(其全部内容通过引用并入本文)公开了在融合乘加管线内实现未融合乘加指令。该系统包括具有用于接收加法项的输入的对准器、具有用于接收用于乘法的第一值和第二值的两个输入的乘法器树、和第一进位保存加法器(CSA),其中第一CSA可以接收来自乘法树的部分乘积和来自对准器的对准的相加项。该系统包括接收第一部分乘积、第二部分乘积和对准的相加项的融合/未融合乘加(PUMA)块,其中第一部分乘积和第二部分乘积没有被截断。PUMA块例如取决于操作码或模式位,使用第一部分乘积、第二部分乘积和对准的相加项来执行未融合乘加运算或者融合乘加运算。将运算的结果转发回下一运算仅可能从乘法到加法运算的输入。转发的乘积是中间不规范化格式。对于未融合乘加,未舍入和非标准化的乘积在FMA管线内部传递(转发)给加法运算,该乘积将需要舍入校正。然而,转发是非常有限的:它只是从乘积到不进行对准的加法的一个操作数。没有从加法或乘加到后续运算的任何输入操作数的未舍入转发,并且没有从乘积到经历对准移位的加法项的未舍入转发。
发明内容
通过提供一种被配置成对加数、乘数和被乘数进行运算并且被配置成执行一种方法的单元,克服了现有技术的缺点并且提供了附加的优点。该方法包括:经由早期结果反馈路径接收在单元中执行的在先运算的未舍入结果作为加数;对未舍入指数和未舍入尾数执行加数的对准移位;以及与对准移位并行地执行加数的舍入校正,舍入校正通过向上舍入信号被启用。
还描述了与一个或多个方面相关的方法、系统和计算机程序产品并且可以在本文中要求保护。
通过本文描述的技术实现了另外的特征和优点。其它实施例和方面在本文中详细描述,并且被认为是要求保护的各个方面的一部分。
附图说明
通过以下对实施例的详细描述,可以最佳地理解本发明的各方面以及上述和其他目的和优点,但是不限于实施例,在附图中:
图1是根据现有技术的FMA单元的概念;
图2示出了根据现有技术的用于到乘积项中的未舍入转发的数据流;
图3是根据本发明实施例的修改的FMA单元的数据流;
图4a至图4c示出了根据本发明实施例的用于有效添加加数的三个舍入校正情况;
图5是根据本发明实施例的用于有效地减去加数的舍入校正情况;
图6是根据本发明实施例的FMA单元的框图;
图7是根据本发明实施例的具有支持校正项的未舍入转发的数据流的FMA单元的框图;
图8是根据本发明实施例的用于到浮点单元的操作数中的未舍入转发的流程图;以及
图9是用于执行根据本发明的一个或多个方面的方法的数据处理系统的示例实施例。
具体实施方式
在附图中,相同的元件用相同的附图标记表示。附图仅仅是示意性表示,而并不意图描绘本发明的各方面的具体参数。此外,附图旨在仅描绘本发明的各方面的典型实施例,因此,不应当被认为是限制本发明的各方面的范围。
本文中描述的说明性实施例提供了用于执行二进制融合乘加浮点计算的单元、方法、系统和计算机程序产品。本文中有时使用特定技术来描述说明性实施例,仅作为用于描述的清楚性的示例。
参考图1至图9,说明性实施例可以用于二进制融合乘加浮点单元10,其被配置成对加数82、乘数70和被乘数72进行运算。例如,FMA单元包括用于经由早期结果反馈路径76接收在该单元中执行的在先运算的未舍入结果作为加数82的装置;用于对未舍入指数和未舍入尾数88执行未舍入加数82的对准移位的装置;以及用于与实际对准移位并行地执行加数82的舍入校正的装置,该装置响应于通过向上舍入信号89的启用。
为了解释FMA过程,图1描绘了根据现有技术的FMA单元10的概念。图1示出了根据现有技术的基于融合乘加运算(FMA)的64b二进制浮点单元(FPU)10的一部分。未详细示出FMA单元10的乘法和对准阶段。现有技术的二进制FPU基于FMA结构以便以高效和高性能的方式支持IEEE-754-2008标准。FMA运算的基本运算是:R=A*B+C,其中R是FMA运算的结果,A、B、C是浮点数。
如图1中示意性地所示,FMA运算在以下步骤中执行。
在将操作数从IEEE-754-2008格式解包成内部格式之后,通过53比特宽的粘滞位字段54,执行乘法A*B以便获得乘积80(106比特宽),并且并行地执行在163位的可能范围中使加数82相对于乘积80对准。对准移位达到饱和。粘滞位字段54被或(OR)树56压缩成单个粘滞位58。加法器在考虑到粘滞位的情况下计算乘积80和对准的加数83的和或绝对差84(163比特宽)。操作数和结果的尾数用符号量值表示。结果的指数用er引用。与加法器并行,由前导零预测器预期加法器结果86中的前导零的数目lz。归一化器通过移出前导零来对尾数进行归一化以获得值87,并且通过减去前导零的数量相应地调整指数,以便产生er-1z。舍入器90计算舍入决定,以得到向上舍入信号89,该向上舍入信号89基于符号、粘滞位52和58、保护位50、最低有效位42和舍入模式来指示该部分是否要增加1。舍入器90还根据需要执行分数88的递增,以便获得结果尾数94,执行范围检查并且根据需要应用后舍入校正。然后将结果94打包成IEEE-754-2008格式。
在未舍入转发的情况下,结果88在归一化之后但是在舍入步骤之前被转发给依赖运算。在由向上舍入信号89表示的舍入决定指示舍入器90要执行递增的情况下,转发的分数是一个单位的最小精度(ulp)太小。因此,使用校正项。这也通过将向上舍入信号89转发给新的运算来指示。
图2中示出了如在现有技术中已经实现的对乘积项A和B执行舍入校正,图2中描绘了根据现有技术的用于到乘积项中的未舍入转发的数据流。在这种情况下,对于运算A*B+C或A*B-C,对于乘积项A、B的未舍入转发,舍入校正总是在固定位置处并且作为正的校正项来执行:
(A+incA)*(B+incB)=A*B+A*incB+B*incA+incA*incB,其中incA和incB是乘积项A和B的增量值。在到乘数和/或被乘数中的未舍入转发的情况下,增量值incA和incB可以从源、在先运算的向上舍入信号89导出。
在图2中,示出了要被添加到由布思(Booth)乘法器级的乘法器树14获得的乘积A*B 80的不同的校正项A*incB 104、B*incA106、incA*incB 108。
对于到加数C中的未舍入转发,加数相对于乘积80移位,这也导致校正项移位。加数C被相加或相减,这意味着舍入校正在C ulp位置是+1或-1。
在图3中,描绘了根据本发明实施例的修改的FMA单元10的数据流。与图1所示的FMA单元10相反,对包括对准的加数83的粘滞位54的所有位计算和或绝对差84。为此目的,应当相应地调整馈送加法器和计算粘滞位58的粘滞逻辑。
图4a至图4c示出了根据本发明实施例的用于有效添加加数82的三个舍入校正情况。为了有效地相加加数82,舍入校正92被加入,并且可以根据下式进行计算:
S=P+C+rC,其中S是有效总和,P是乘积项80的尾数,C是对准的加数83的尾数,rC是校正项92。然后,可以如下计算rC:
对于双精度计算,rC=0或rC=1*2-52*2(ec-ep),其中ec和ep分别是加数82和乘积80的指数。舍入校正92、rC以与加数C相同的方式对准,这意味着它与C的最低有效位对准。用于对准的rC的位置可以通过对对准器移位量进行解码来生成。
在图4a所示的情况下,加数82的指数远大于乘积80的指数;在图4b的情况下,加数82的指数比乘积80的指数小一点,使得乘积尾数与加数尾数完全交叠;在图4c的情况下,加数82的指数远小于乘积80的指数,使得乘积尾数至多部分地与加数尾数交叠。条102示出了用于移位校正项92的潜在范围。
图5示出了根据本发明实施例的用于有效地减去加数82的舍入校正情况。为了有效地减去加数82,加数82可以大于或小于乘积80,因此可以根据下式来计算在没有舍入校正的情况下差值D:
D=|P-C|=P-C=P+!C+ulp,如果P>C,否则
D=-(P-C)=!(P+!C),其中!C是C的非,其中ulp是差值D的最后单位。
此外,可以根据下式来计算舍入校正92:
D=|P-(C+rC)|=P-C-rC=(P-rC)+!C+ulp,
如果P>C+rC,否则
D=-(P-C-rC)=!((P-rC)+!C)。
在图5中,对准的加数83的字段中的剩余位被填充1作为反转整个对准的加数83的一部分。如果需要舍入校正,则校正项92在对准的加数83的ulp位置处等于-1,即,如果舍入校正rC不等于零,则等于潜在校正项93,用1填充的比特。因此,可以通过对解码器移位量的半解码来生成舍入校正92——-rC。
在图6中,示出了根据本发明实施例的FMA单元10的框图。FMA单元10被配置成对加数82、乘数70和被乘数72进行运算,并且包括用于经由早期结果反馈路径76接收在单元中执行的在先运算的未舍入结果作为加数82的装置,即具有对准器30的多路复用器或选择部件;用于对未舍入指数和未舍入尾数88执行未舍入加数82的对准移位的装置,即对准器30;以及用于与实际对准移位并行地执行加数82的舍入校正的装置,该装置响应于通过向上舍入信号89实现的启用。
向上舍入信号89从舍入器28发送回到FMA单元10作为输入。为此目的,装置被预计接收该向上舍入信号89以实现舍入校正。该启用可以通过选择电路、例如多路复用器来完成。
为此目的,FMA单元10包括解包部件12、对准器30(例如,总和寻址移位器)、乘法器14、加法单元(包括具有前导零预计器24的进位保存加法器21和端回进位加法器22)、归一化器26以及舍入和打包部件28反馈。反馈路径76、77将未舍入结果转发回对准器30以及乘法器14。加数82以及包括乘数70和被乘数72的乘积项以双精度格式64位长度被馈送给解包单元12。加数82经由多路复用器62被传送给对准器30,多路复用器62在解包操作数C的尾数和转发的未舍入结果88的尾数之间进行选择,而乘积项70、72经由多路复用器66和64被传送给乘法器14,多路复用器66和64在解包操作数A和B的尾数以及转发的未舍入结果88的尾数之间进行选择。操作数A、B和C的指数经由多路复用器68和69被传送给对准器30的移位量计算逻辑16,多路复用器68和69在解包器12提供的指数或转发的未舍入结果88的指数之间进行选择。对准器30以163比特宽度工作,乘法器14以106比特宽度工作。对准器30根据加数82和乘积80的指数的差来移位加数82。移位的加数82和乘积80被传送给加法器21、22,以便被加入到FMA过程的最终和中。归一化移位器26将总和的尾数从163位归一化为55位。因此,这个未舍入尾数88可以被转发给对准器30或乘法器14,用于分别经由反馈路径76或77进一步计算另外的FMA计算。在先运算是加法或乘法中的至少一个。
在不需要转发最终和的情况下,将和在舍入和打包部件28中舍入并且打包以获得64位双精度宽度的最终结果94。
图7描绘了根据本发明实施例的具有支持到所有操作数的未舍入转发并且应用校正项的数据流的FMA单元10的框图,作为64位二进制浮点单元的可能实现。然而,被配置成执行FMA过程的任何类型的浮点单元可以用于应用本发明的各方面。图7解释了舍入校正可以如何集成到对准器30和加法器20中。
乘积项70、72被馈送给布思多路复用器32,该布思多路复用器32进一步将数据传送给包括多个3:2进位保存加法器34以及4:2进位保存加法器36的乘数约减树20。加数82被馈送给对准器30以计算移位量96并且对准加数82。对准器例如被实现为总和寻址移位器。
提供用于通过应用于乘数约减树20的校正项92来执行加数82的舍入校正的装置。通过在有效加法的情况下将解码函数应用于移位量96和/或通过在有效减法的情况下将半解码函数应用于移位量96来获得校正项92。
提供了作为用于与实际对准移位并行地对加数82执行舍入校正的装置的基于移位量96来生成加数82的校正项92的电路,其中生成基于递增在先运算的未舍入中间结果的校正项92。用于加数82的校正项92以与加数82相同的移位量96对准。
针对乘积项70、72的校正项92确定增量44、46,并且在乘数约减树20中传送增量44、46以获得乘积80、以及用于加数82的增量48,其基于由对准器30计算的移位量96来确定。
提供了用于支持多个浮点精度的装置,其中校正项92的值适于支持任何所支持的精度的结果的未舍入转发。移位量96可以是二进制或一元或任何其它表示。
作为对准器30的输出的移位加数83然后被添加到乘积80以获得最终和84。
计算加数82与乘数70和被乘数72的乘积80之间的和84或绝对差,其包括粘滞位54(见图3),以便基于和84或绝对差的粘滞位54来计算校正项92。
在图8中,示出了根据本发明实施例的用于到浮点单元的操作数的未舍入转发的流程图,其大致解释了用于在在二进制融合乘加浮点单元中执行二进制浮点算术计算的方法的各方面。被配置成对加数C、乘数A和被乘数B进行运算的方法包括例如经由早期结果反馈路径接收在单元中执行的在先运算的未舍入结果作为加数C;对未舍入指数和未舍入尾数执行未舍入加数C的对准移位;以及与实际对准移位并行地对加数C执行舍入校正,舍入校正通过向上舍入信号来被启用。
一个或多个方面的流程开始于在步骤S200中将未舍入结果反馈给乘法器和对准器,其可以对于每个操作数被配置成从先前的乘法、加法或乘加运算或者常规操作数A、B和C中选择未舍入结果。接下来,在步骤202中并行地执行加数的对准移位,以在步骤S204至S212中生成具有所有可能的舍入校正的乘积A*B。可以通过总和寻址移位器来执行对准移位。然后在步骤S214中接合并行分支步骤S202和S204至S212,其中通过将包括校正项的乘积A*B的值和对准的加数C相加或相减,并且基于前导零的数量对和或差绝对差进行归一化来生成归一化的未舍入结果。计算加数和乘数与被乘数之积的和或绝对差,其包括粘滞位。然后可以将在步骤S214中生成的未舍入结果转发给后续指令的步骤S200;它也被传递给执行舍入决定并且生成向上舍入信号的步骤S216。该向上舍入信号可以被转发给后续指令的步骤S206。然后,步骤S218基于步骤S214的未舍入结果和步骤S216的向上舍入信号生成最终舍入结果。
为了生成具有所有潜在舍入校正的乘积A*B,乘法器在步骤S204中开始乘积A*B的计算,并且并行地,步骤S206针对两个乘积项A、B以及针对加数C基于从在先指令接收的向上舍入信号来确定是否需要舍入校正。然后,在步骤S208中确定乘积项A、B的增量项incA和incB,以及在步骤S210中确定加数C的增量项incC。校正和增量项incC以与加数C相同的方式排列。项incC在有效相加的情况下可以通过将解码函数应用于移位量来获得,并且在有效减法的情况下可以通过将半解码函数应用于移位量来获得。在步骤S212中,增量项被馈送给乘数约减树,并且具有全部舍入校正的乘法结束。
现在参考图9,其中示出了数据处理系统210的一个示例。数据处理系统210仅仅是适合的数据处理系统的一个示例,不应对本文中描述的本发明实施例的功能和使用范围带来任何限制。总之,数据处理系统210能够实现和/或执行本文中以上所述的任何功能。
在数据处理系统210中,存在计算机系统/服务器212,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与计算机系统/服务器212一起操作的众所周知的计算系统、环境和/或配置的示例包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子乘积、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任意系统的分布式云计算技术环境,等等。
计算机系统/服务器212可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括执行特定的任务或者实现特定的抽象数据类型的例程、程序、目标程序、组成、逻辑、数据结构等。计算机系统/服务器212可以在其中通过通信网络链接的远程处理设备执行任务的分布式云计算环境中实施。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地或远程计算系统存储介质上。
如图9所示,数据处理系统210中的计算机系统/服务器212以通用计算设备的形式示出。计算机系统/服务器212的部件可以包括但不限于:一个或多个处理器或者处理单元216、系统存储器228、和耦合不同的系统部件(包括系统存储器228和处理单元216)的总线218。
总线218表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、图形加速端口以及使用多种总线结构中的任意总线结构的处理器或局域总线。作为示例而非限制,这些体系结构包括但不限于工业标准体系结构(ISA)总线、微通道体系结构(MAC)总线、增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围部件互连(PCI)总线。
计算机系统/服务器212典型地包括多种计算机系统可读介质。这样的介质可以是能够被计算机系统/服务器212访问的任意可获得的介质,包括易失性和非易失性介质,可移除的和不可移除的介质。
系统存储器228可以包括易失性存储器形式的计算机系统可读介质,诸如随机存取存储器(RAM)230和/或高速缓存存储器232。计算机系统/服务器212还可以包括其它可移除/不可移除的、易失性/非易失性计算机系统存储介质。仅作为示例,存储系统234可以用于读写不可移除的、非易失性磁介质(图中未示出,通常称为“硬盘驱动器”)。尽管图中未示出,可以提供用于读写可移除非易失性磁盘(例如“软盘”)的磁盘驱动器、以及读写可移除非易失性光盘(例如CD-ROM、DVD-ROM或者其它光介质)的光盘驱动器。在这些情况下,每个驱动器可以通过一个或多个数据介质接口与总线18相连。如下面进一步描绘和描述的,存储器228可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置成执行本发明各实施例的功能。
作为示例而非限制,存储器228中可以一组(至少一个)程序模块242的程序/实用工具240,也可以存储操作系统、一个或多个应用程序、其它程序模块以及程序数据。操作系统、一个或多个应用程序、其它程序模块以及程序数据或其某种组合中的每个可以包括网络环境的实现。程序模块242通常执行本文中所描述的本发明实施例的功能和/或方法。
计算机系统/服务器212也可以与一个或多个外部设备214(诸如键盘、指向设备、显示器224等)通信,还可与使得用户能够与计算机系统/服务器12交互的一个或多个设备通信,和/或与使得计算机系统/服务器212能够与一个或多个其它计算设备通信的任何设备(例如网卡、调制解调器等等)通信。这样的通信可以经由输入/输出(I/O)接口222进行。并且,计算机系统/服务器212还可以经由网络适配器220与一个或多个网络(诸如局域网(LAN)、广域网(WAN)和/或公共网络(例如因特网))通信。如图所示,网络适配器220经由总线218与计算机系统/服务器212的其它模块通信。应当明白,尽管图中未示出,其它硬件和/或软件模块可以与计算机系统/服务器212一起操作。示例包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
现在参考如本文所描述的,提供了一种二进制融合乘加浮点单元,其被配置成对加数、乘数和被乘数进行运算,该单元包括:用于经由早期结果反馈路径接收在单元中执行的在先运算的未舍入结果作为加数的装置;用于对未舍入指数和未舍入尾数执行未舍入加数的对准移位的装置;以及用于与实际对准移位并行地执行加数的舍入校正的装置,该装置响应于通过向上舍入信号进行的启用。
与根据现有技术的FMA单元相比,在一个或多个方面,二进制融合乘加浮点单元(以下缩写为FMA单元)表现出FMA单元的显著降低的等待时间。
由于根据现有技术的基于乘加的FPU的结构,加数相对于乘积对准,并且可以相对于乘积向右或向左伸出,这取决于加数大于还是小于乘积。对准器部件和乘法器部件并行工作。
一个或多个方面的二进制融合乘加浮点单元避免了用于FMA的常用分裂路径概念的某些缺点,这对于加法运算是非常有用的。这样的FPU具有两个并行数据路径——近路径和远路径。对于远路径,加数远大于乘积,或者乘积远大于加数。在近路径情况下,加数和乘积彼此非常接近。这种情况拆分允许对每个数据路径进行优化。然而,与经典方法相比,它只节省了几个逻辑阶段。这种方法的另一缺点是,情况拆分只适用于正规的操作数和结果。次正规的操作数和结果通常需要软件支持。
一个或多个方面的二进制融合乘加浮点单元避免了另一概念的某些缺点,该另一概念使用积极的转发技术已经将中间结果反馈给相关运算中,而不是等待最终舍入和打包的答案,例如,用于支持FMA的链接的浮点乘法器和加法器。对于这种结构,实现了在加法器级结束处的乘积到加法运算中的特殊的未舍入转发。如果操作数和结果是正规的,则这个过程是成功的;未归一化的值需要软件支持。然而,这涉及在FMA运算内的转发,而不涉及后续运算。不支持从加法到乘法和从加法到另一加法的两个操作数的快速转发,因为从一个FMA过程向下一FMA过程发送数据将需要快速转发。当乘法和加法不融合时,乘法需要舍入。这样的不对称类型的转发通常导致指令定序器更复杂。
本领域中已知的其他方案支持在将舍入结果舍入到IEEE数据格式之前以内部格式转发舍入结果。这节省了在产生操作中的打包上的一些逻辑延迟和在接收操作中的解包的一些逻辑延迟。支持到FMA运算的所有三个操作数的该转发。本领域已知的其它方案、如US 8,671,129 B2中公开的方案,通过在舍入之前转发结果,甚至更积极。为了保持IEEE兼容性,需要进行一些舍入校正。
在现有技术中,通过基于未舍入结果计算乘积和对准器移位量,以及应用用于乘积的校正项,来实现该IEEE标准符合性。然而,对于加数的实际移位,需要舍入结果。因此,实际移位的开始必须被延迟,直到舍入结果可用,这成为FPU的时序关键路径。因此,对准移位的开始必须被延迟,因为用于到加数中的未舍入转发的真实解是未知的。
一个或多个方面的FMA单元克服了延迟对准移位直到舍入结果可用的必要性。通过为加数而不仅仅为乘积提供校正项,FMA单元允许到加数中的真正的未舍入转发。因此,显着减少了根据本发明的各方面的基于二进制FMA的FPU的等待时间。
作为用于接收经由早期结果反馈路径在单元中执行的在先运算的未舍入结果的作为加数的装置,可以使用多路复用器或选择电路,其能够在两个或更多个模式的输入数据之间进行选择。作为用于对未舍入指数和未舍入尾数执行未舍入加数的对准移位的装置,可以使用具有用于确定和执行相应移位量的功能的任何电子电路。此外,作为用于与实际对准移位并行地执行对加数的舍入校正的装置,其中该装置响应于通过向上舍入信号进行的使能,可以使用具有用于取决于对准移位情况来确定加数的必要增量的功能的任何电子电路。可以通过对由FMA单元的对准器部件确定的有限移位量进行解码并且基于向上舍入信号启用它来生产加数的舍入校正。可以由FMA单元的舍入逻辑中的在先指令来生成向上舍入信号。
根据本发明的一个或多个方面,可以执行从任何运算回到需要对准移位的添加项的转发。
可选地,FMA单元还可以具有用于接收乘数和被乘数的未舍入操作数的装置。
根据实施例,FMA单元还可以包括用于通过应用于乘数约减树的校正项来对加数执行舍入校正的装置。因此,可以并行地对加数执行舍入校正以执行加数的对准移位。校正项可以被传送给由向上舍入信号触发的FMA单元的乘法器部件的加法器单元的输入。这样的加法器单元可以由进位保存加法器单元有利地表示。
根据实施例,校正项还可以在有效相加的情况下通过将解码函数应用于移位量来获得和/或在有效相减的情况下通过将半解码函数应用于移位量来获得。
存在使加数的舍入校正比乘积的舍入校正更复杂的两个方面。首先,加数相对于乘积被对准,即它被移位,并且对准的加数的最低有效位(lsb)位置取决于乘积和加数的指数差。因此,舍入校正也被移位。其次,从该乘积中增加或减去加数,因此也要添加或减去校正项。对准的加数的位置可以例如由解码器从移位量导出。
为了加数的有效相加,舍入校正被加入,并且可以根据下式进行计算:
S=P+C+rC,其中S是有效总和,P是乘积项的尾数,C是与乘积对准的加数的尾数,rC是校正项。校正项rC可以如下计算:
对于双精度计算,rC=0或rC=1*2-52*2(ec-ep),其中ec是加数的指数,ep是乘积项的指数。rC以与加数C相同的方式对准,这意味着它与C的最低有效位对准。用于对准的rC的位置可以通过解码对准器移位量来生成。
为了加数的有效相减,加数可以大于或小于乘积,因此可以根据下式来计算在没有舍入校正的情况下的差值D:
D=|P-C|=P-C=P+!C+ulp,如果P>C,否则
D=-(P-C)=!(P+!C),其中!C是C的非,并且其中ulp是差值D的最后单位。
此外,可以根据下式来计算舍入校正:
D=|P-(C+rC)|=P-C-rC=(P-rC)+!C+ulp,如果P>C+rC,否则
D=-(P-C-rC)=!((P-rC)+!C)。
因此,可以通过对准器移位量的半解码来生成舍入校正-rC。
根据实施例,还可以由总和寻址移位器来执行对准移位。本领域中公知的总和寻址移位器允许组合移位量计算和实际移位。对于常规FMA单元,对准移位必须等待舍入结果可用。一个或多个方面的FMA单元可以使用未舍入尾数进行移位,并且因此可以充分利用总和寻址移位器的等待时间优点。它在对准移位已经在进行的同时在乘法器树中应用加法器校正。因此,总和寻址移位器可以有助于本发明的FMA单元的优点。
根据实施例,FMA单元还可以包括用于支持多个浮点精度的装置,其中校正项的值适于支持任何所支持的精度的结果的未舍入转发。由于用于二进制浮点运算的IEEE-754-2008标准涉及多个浮点精度,诸如单精度、双精度或四精度,等待时间减少将用于多个精度。一个或多个方面的FMA单元可以以不同的浮点精度实现,并且表现出等待时间的有利减少。
根据实施例,在先运算可以是加法或乘法或乘加运算中的至少一个。要转发给FMA单元的输入的操作数可以是在先加法和乘法的结果。在任何情况下都可以实现将未舍入结果转发给涉及减少执行FMA过程中的等待时间的新计算的所有三个操作数。
根据实施例,FMA单元还可以包括至少多路复用器或选择电路作为用于接收在先运算的未舍入结果作为加数的装置。能够区分至少两种不同种类的输入的多路复用器或其它选择电路有利地用作乘法器或对准器的输入级。因此,在先运算的未舍入结果可以被传送给这样的输入级。
根据实施例,FMA单元还可以包括能够用于计算移位量并且对操作数移位的电路作为用于执行未舍入加数的对准移位的装置。可以对未舍入指数和未舍入尾数执行该运算,以充分利用一个或多个方面的FMA单元,并且充分利用浮点运算的等待时间的减少。
根据实施例,FMA单元还可以包括基于移位量来生成用于加数的校正项的电路,作为与实际对准移位并行地执行加数的舍入校正的装置。可以基于加数的增量项并且基于解码或半解码的移位量来计算校正项。然后可以与对加法器执行实际对准移位的对准器并行地将校正项传送给FMA单元的乘法器树的输入级。
根据实施例,FMA单元还可以包括基于递增在先运算的未舍入中间结果来生成校正项。未舍入中间结果的尾数可以增加值1,以便获得结果尾数,并且能够在转发结果时确定是否需要校正项。
根据实施例,用于加数的校正项还可以以与加数相同的移位量被移位。从该乘积中加上或减去加数,因此,也要加上或减去校正项。为了有效相加,添加舍入校正。该位置例如可以通过解码器从移位量导出。
根据实施例,可以计算加数和乘数与被乘数的乘积之间的和或绝对差,其包括粘滞位。作为传统FMA单元的修改,可以对操作数的所有位、包括粘滞位计算和或差。因此,根据FMA单元的乘法器树的加法器级的结果来计算粘滞位。因此,可以执行传统FMA单元的粘滞逻辑的调整,以便充分利用该实施例。
根据实施例,可以基于和或绝对差的粘滞位来计算校正项。可以在将根据由对准器电路确定的移位量移位的加数与乘积项相加之后计算粘滞位。然后可以通过或(OR)电路将粘滞位进一步减小到单个位用于对FMA运算的最终结果进行舍入。
此外,提供了一种用于在二进制融合乘加浮点单元中执行二进制浮点算术计算的方法,其被配置成对加数、乘数和被乘数进行运算。该方法包括经由早期结果反馈路径接收在单元中执行的在先运算的未舍入结果作为加数;对未舍入指数和未舍入尾数执行未舍入加数的对准移位;以及与实际对准移位并行地执行加数的舍入校正,舍入校正通过向上舍入信号来被启用。
该方法克服了延迟对准移位直到FMA单元的舍入结果可用的必要性。该方法通过为加数而不只是为乘积提供校正项,允许到加数中的真正的未舍入转发。因此,大大减少了根据本发明的各方面的二进制FMA过程的等待时间。
此外,根据实施例,可以通过应用于单元的乘数约减树的校正项来执行加数的舍入校正。因此,可以与执行加数的对准移位并行地执行加数的舍入校正。可以将校正项传送给由向上舍入信号触发的FMA单元的乘法器部件的加法器单元的输入。
根据实施例,此外,校正项可以在有效相加的情况下通过将解码函数应用于移位量来获得;和/或在有效减法的情况下通过将半解码函数应用于移位量来获得。
为了加数的有效加法,舍入校正被加入,并且可以根据以下公式进行计算:
S=P+C+rC,其中S是有效总和,P是乘积项的尾数,C是与乘积对准的加数的尾数,rC是校正项。然后,可以如下计算rC:
对于双精度计算,rC=0或rC=1*2-52*2(ec-ep),其中ec是加数的指数,ep是乘积项的指数。rC以与加数C相同的方式对准,这意味着它与C的最低有效位对准。用于对准的rC的位置可以通过对对准器移位量进行解码来生成。
为了加数的有效相减,加数可以大于或小于乘积,因此可以根据下式来计算在没有舍入校正的情况下的差值D:
D=|P-C|=P-C=P+!C+ulp,如果P>C,否则
D=-(P-C)=!(P+!C),其中!C是C的非,其中ulp是差值D的最后单位。
此外,可以根据以下来计算舍入校正:
D=|P-(C+rC)|=P-C-rC=(P-rC)+!C+ulp,如果P>C+rC,否则
D=-(P-C-rC)=!((P-rC)+!C)。
因此,可以通过对准器移位量的半解码来生成舍入校正-rC。
根据实施例,还可以由总和寻址移位器来执行对准移位。总和寻址移位器允许组合移位量计算和实际移位。根据一个或多个方面的方法,在对准移位已经在进行的同时在FMA单元的乘法器树中应用加法器校正。
根据实施例,此外,可以支持多个浮点精度,其中针对任何所支持的精度的结果转发适于支持未舍入校正项的值。根据用于二进制浮点算法的IEEE-754-2008标准,可以支持单浮点精度、双倍浮点精度或四倍浮点精度。
根据实施例,在先运算可以是加法或乘法或乘加运算中的至少一个。根据一个或多个方面,要转发给FMA单元的输入的操作数可以是在先加法和乘法的结果。
根据实施例,可以基于递增在先运算的未舍入中间结果来生成校正项。未舍入中间结果的尾数可以增加值1,以便获得结果尾数,并且能够在转发结果时确定是否需要校正项。
根据实施例,可以计算加数和乘数与被乘数的乘积之间的和或绝对差,其包括粘滞位。可以对操作数的所有位、包括粘滞位计算和或差。因此,根据FMA单元的乘法器树的加法器级的结果来计算粘滞位。
根据实施例,可以基于和或绝对差的粘滞位来计算校正项。可以在将根据由对准器电路确定的移位量移位的加数与乘积项相加之后计算粘滞位。然后可以通过或(OR)电路将粘滞位进一步减小到单个位用于对FMA运算的最终结果进行舍入。
此外,提供了一种用于在二进制融合乘加浮点单元中执行二进制浮点算术计算的计算机程序产品,其被配置成对加数、乘数和被乘数进行运算。计算机程序产品包括具有包含在其中的程序指令的计算机可读存储介质,程序指令由计算机系统可执行以引起计算机系统执行包括以下步骤的方法:经由早期结果反馈路径接收在单元中执行的在先运算的未舍入结果作为加数;对未舍入指数和未舍入尾数执行未舍入加数的对准移位;以及与实际对准移位并行地执行加数的舍入校正,舍入校正通过向上舍入信号来被启用。
此外,提供了一种用于执行数据处理程序的数据处理系统,其包括用于执行上述方法的计算机可读程序指令。
本发明的各方面可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于引起处理器实现本发明的各方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储用于由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的示例(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
本文中描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
本文中参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以将计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图示出了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现
已经出于说明的目的给出了本发明的各种实施例的描述,但是这些描述并不旨在穷举或限于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,很多修改和变化对于本领域的普通技术人员将是显而易见的。选择本文中使用的术语是为了最好地解释实施例的原理、实际应用或对市场中发现的技术的技术改进,或者使得本领域的其他普通技术人员能够理解本文中公开的实施例。

Claims (23)

1.一种被配置成对加数、乘数和被乘数进行运算并且被配置成执行一种方法的单元,所述方法包括:
经由早期结果反馈路径接收在所述单元中执行的在先运算的未舍入结果作为所述加数;
对未舍入指数和未舍入尾数执行所述加数的对准移位;以及
与所述对准移位并行地执行所述加数的舍入校正,所述舍入校正通过向上舍入信号被启用。
2.根据权利要求1所述的单元,其中所述执行所述舍入校正还包括通过向所述单元的乘数约减树施加的校正项来执行所述加数的所述舍入校正。
3.根据权利要求2所述的单元,还包括执行以下中的至少一项:
通过基于有效加法向移位量应用解码函数来获取所述校正项;或者
通过基于有效减法向所述移位量应用半解码函数来获取所述校正项。
4.根据权利要求2所述的单元,其中支持多个浮点精度,并且其中所述校正项的值被适配成支持所支持的多个浮点精度中的一个或多个浮点精度的结果的未舍入转发。
5.根据权利要求2所述的单元,其中所述方法还包括基于递增所述在先运算的未舍入中间结果来生成所述校正项。
6.根据权利要求1所述的单元,其中所述执行所述对准移位还包括通过总和寻址移位器来执行所述对准移位。
7.根据权利要求1所述的单元,其中所述在先运算是以下中的至少一项:加法、乘法、或乘加运算。
8.根据权利要求1所述的单元,其中计算所述加数与所述乘数和所述被乘数的乘积之间的和或绝对差,所述和或所述绝对差包括粘滞位。
9.根据权利要求8所述的单元,其中所述方法还包括基于所述和或所述绝对差的所述粘滞位来计算由所述执行所述舍入校正使用的校正项。
10.根据权利要求1所述的单元,其中所述执行所述对准移位包括计算移位量并且对操作数移位。
11.根据权利要求10所述的单元,其中所述方法还包括基于所述移位量来生成由所述执行所述舍入校正使用的校正项。
12.一种在被配置成对加数、乘数和被乘数进行运算的单元中执行二进制浮点算术计算的方法,所述方法包括:
经由早期结果反馈路径接收在所述单元中执行的在先运算的未舍入结果作为所述加数;
对未舍入指数和未舍入尾数执行所述未舍入加数的对准移位;以及
与实际对准移位并行地执行所述加数的舍入校正,所述舍入校正通过向上舍入信号被启用。
13.根据权利要求12所述的方法,其中所述执行所述舍入校正还包括通过向所述单元的乘数约减树施加的校正项来执行所述加数的所述舍入校正。
14.根据权利要求13所述的方法,还包括执行以下中的至少一项:
通过基于有效加法向移位量应用解码函数来获取所述校正项;或者
通过基于有效减法向所述移位量应用半解码函数来获取所述校正项。
15.根据权利要求13所述的方法,其中支持多个浮点精度,并且其中所述校正项的值被适配成支持所支持的多个浮点精度中的一个或多个浮点精度的结果的未舍入转发。
16.根据权利要求13所述的方法,还包括基于递增所述在先运算的未舍入中间结果来生成所述校正项。
17.根据权利要求12所述的方法,其中所述执行所述对准移位还包括通过总和寻址移位器来执行所述对准移位。
18.根据权利要求12所述的方法,其中所述在先运算是以下中的至少一项:加法、乘法、或乘加运算。
19.根据权利要求12所述的方法,其中计算所述加数与所述乘数和所述被乘数的乘积之间的和或绝对差,所述和或所述绝对差包括粘滞位。
20.根据权利要求19所述的方法,还包括基于所述和或所述绝对差的所述粘滞位来计算由所述执行所述舍入校正使用的校正项。
21.根据权利要求12所述的方法,其中所述执行所述对准移位包括计算移位量并且对操作数移位。
22.根据权利要求21所述的方法,还包括基于所述移位量来生成由所述执行所述舍入校正使用的校正项。
23.一种由处理电路可读并且存储指令的计算机可读存储介质,所述指令用于由所述处理电路执行用于执行根据权利要求12到22所述的方法中的任何方法。
CN201710061253.3A 2016-02-01 2017-01-25 二进制融合乘加浮点计算 Active CN107025091B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US15/011,735 2016-02-01
US15/011,735 US9952829B2 (en) 2016-02-01 2016-02-01 Binary fused multiply-add floating-point calculations
US15/197,290 2016-06-29
US15/197,290 US9959093B2 (en) 2016-02-01 2016-06-29 Binary fused multiply-add floating-point calculations

Publications (2)

Publication Number Publication Date
CN107025091A true CN107025091A (zh) 2017-08-08
CN107025091B CN107025091B (zh) 2020-07-03

Family

ID=59386709

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710061253.3A Active CN107025091B (zh) 2016-02-01 2017-01-25 二进制融合乘加浮点计算

Country Status (2)

Country Link
US (2) US9952829B2 (zh)
CN (1) CN107025091B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109783055A (zh) * 2017-11-10 2019-05-21 瑞昱半导体股份有限公司 浮点数运算电路及方法
CN111936965A (zh) * 2018-03-22 2020-11-13 超威半导体公司 随机舍入逻辑
CN112204517A (zh) * 2018-08-27 2021-01-08 谷歌有限责任公司 多输入浮点加法器
CN112241291A (zh) * 2019-07-18 2021-01-19 国际商业机器公司 用于指数函数实施的浮点单元

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10684824B2 (en) 2018-06-06 2020-06-16 Nvidia Corporation Stochastic rounding of numerical values
US11269630B2 (en) * 2019-03-29 2022-03-08 Intel Corporation Interleaved pipeline of floating-point adders
US11455142B2 (en) * 2019-06-05 2022-09-27 International Business Machines Corporation Ultra-low precision floating-point fused multiply-accumulate unit
US12020028B2 (en) * 2020-12-26 2024-06-25 Intel Corporation Apparatuses, methods, and systems for 8-bit floating-point matrix dot product instructions

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040158600A1 (en) * 2003-02-12 2004-08-12 Hewlett Packard Company Method and system for determining the correct rounding of a function
CN1619484A (zh) * 2003-11-20 2005-05-25 国际商业机器公司 浮点单元及计算指数的方法
US20060179097A1 (en) * 2005-02-09 2006-08-10 International Business Machines Corporation System and method for a floating point unit with feedback prior to normalization and rounding
US7392270B2 (en) * 2004-07-29 2008-06-24 International Business Machines Corporation Apparatus and method for reducing the latency of sum-addressed shifters
US20120233234A1 (en) * 2011-03-08 2012-09-13 Brooks Jeffrey S System and method of bypassing unrounded results in a multiply-add pipeline unit

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4969118A (en) * 1989-01-13 1990-11-06 International Business Machines Corporation Floating point unit for calculating A=XY+Z having simultaneous multiply and add
US5241493A (en) * 1991-12-16 1993-08-31 International Business Machines Corporation Floating point arithmetic unit with size efficient pipelined multiply-add architecture
US5375078A (en) * 1992-12-15 1994-12-20 International Business Machines Corporation Arithmetic unit for performing XY+B operation
US5751621A (en) * 1994-11-17 1998-05-12 Hitachi, Ltd. Multiply-add unit and data processing apparatus using it
US8239440B2 (en) 2008-03-28 2012-08-07 Oracle America, Inc. Processor which implements fused and unfused multiply-add instructions in a pipelined manner
US8990282B2 (en) 2009-09-21 2015-03-24 Arm Limited Apparatus and method for performing fused multiply add floating point operation
US8606840B2 (en) * 2010-03-17 2013-12-10 Oracle International Corporation Apparatus and method for floating-point fused multiply add
US8892619B2 (en) 2012-07-24 2014-11-18 The Board Of Trustees Of The Leland Stanford Junior University Floating-point multiply-add unit using cascade design
US9110713B2 (en) 2012-08-30 2015-08-18 Qualcomm Incorporated Microarchitecture for floating point fused multiply-add with exponent scaling

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040158600A1 (en) * 2003-02-12 2004-08-12 Hewlett Packard Company Method and system for determining the correct rounding of a function
CN1619484A (zh) * 2003-11-20 2005-05-25 国际商业机器公司 浮点单元及计算指数的方法
US7392270B2 (en) * 2004-07-29 2008-06-24 International Business Machines Corporation Apparatus and method for reducing the latency of sum-addressed shifters
US20060179097A1 (en) * 2005-02-09 2006-08-10 International Business Machines Corporation System and method for a floating point unit with feedback prior to normalization and rounding
US20120233234A1 (en) * 2011-03-08 2012-09-13 Brooks Jeffrey S System and method of bypassing unrounded results in a multiply-add pipeline unit

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
MALTE BAESLER ETC.: "An IEEE 754-2008 Decimal Parallel and Pipelined FPGA Floating-Point Multiplier", 《FIELD PROGRAMMABLE LOGIC AND APPLICATIONS》 *
何晶 等: "浮点乘法器中IEEE舍入的实现", 《计算机工程与应用》 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109783055A (zh) * 2017-11-10 2019-05-21 瑞昱半导体股份有限公司 浮点数运算电路及方法
CN109783055B (zh) * 2017-11-10 2021-02-12 瑞昱半导体股份有限公司 浮点数运算电路及方法
CN111936965A (zh) * 2018-03-22 2020-11-13 超威半导体公司 随机舍入逻辑
CN112204517A (zh) * 2018-08-27 2021-01-08 谷歌有限责任公司 多输入浮点加法器
CN112241291A (zh) * 2019-07-18 2021-01-19 国际商业机器公司 用于指数函数实施的浮点单元

Also Published As

Publication number Publication date
US9959093B2 (en) 2018-05-01
CN107025091B (zh) 2020-07-03
US20170220318A1 (en) 2017-08-03
US9952829B2 (en) 2018-04-24
US20170220319A1 (en) 2017-08-03

Similar Documents

Publication Publication Date Title
CN107025091A (zh) 二进制融合乘加浮点计算
CN109255436A (zh) 用于机器学习加速的双曲线函数
CN110168493B (zh) 在128位宽的操作数上的融合乘加浮点运算
CN104899004B (zh) 一种用于将浮点操作数相乘的数据处理装置和方法
CN107077415A (zh) 用于执行转换运算的装置和方法
CN103984521B (zh) Gpdsp中simd结构浮点除法的实现方法及装置
Kanhe et al. Design and implementation of floating point multiplier based on vedic multiplication technique
US20190018648A1 (en) Normalization of a product on a datapath
GB2523342A (en) Conjugate gradient solvers for linear systems
CN107967132A (zh) 一种用于神经网络处理器的加法器和乘法器
Montero et al. Template-based posit multiplication for training and inferring in neural networks
Omondi Cryptography arithmetic
Riedy et al. Augmented arithmetic operations proposed for IEEE-754 2018
JPH0250492B2 (zh)
Bruguera Composite iterative algorithm and architecture for q-th root calculation
CN101981542B (zh) 多项式数据处理运算
Mora et al. Mathematical model and implementation of rational processing
Fenwick Introduction to computer data representation
Ercegovac et al. Digit-recurrence algorithms for division and square root with limited precision primitives
Panda et al. Developing high-performance AVM based VLSI computing systems: a study
Han et al. Decimal floating‐point fused multiply‐add with redundant internal encodings
US7136891B2 (en) Arithmetic and relational operations
Liu et al. An efficient floating-point multiplier for digital signal processors
Manikantha et al. DESIGN OF AREA EFFICIENT WALLACE TREE MULTIPLIER WITH ADVANCED DATA COMPRESSORS
JPS63254525A (ja) 除算装置

Legal Events

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