CN1818851A - 用于执行浮点算术运算的系统和方法 - Google Patents

用于执行浮点算术运算的系统和方法 Download PDF

Info

Publication number
CN1818851A
CN1818851A CN200610006691.1A CN200610006691A CN1818851A CN 1818851 A CN1818851 A CN 1818851A CN 200610006691 A CN200610006691 A CN 200610006691A CN 1818851 A CN1818851 A CN 1818851A
Authority
CN
China
Prior art keywords
operand
last computing
precision
result
carried out
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
CN200610006691.1A
Other languages
English (en)
Other versions
CN100449476C (zh
Inventor
布鲁斯·M.·费勒舍
于尔根·黑斯
迈克尔·克勒纳
马丁·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 CN1818851A publication Critical patent/CN1818851A/zh
Application granted granted Critical
Publication of CN100449476C publication Critical patent/CN100449476C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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
    • 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/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths
    • 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/49936Normalisation mentioned as feature only
    • 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
    • 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

Landscapes

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

Abstract

公开了用于执行浮点算术运算的系统和方法。所述系统包括用于接收操作数的输入寄存器。该系统还包括用于响应判断操作数是未规格化格式的情况,执行移位或屏蔽运算的机制。该系统还包括用于响应判断操作数是单精度、操作数需要基于前一运算的结果而增大以及前一运算没有执行增大的情况,对操作数执行单精度增大的指令。操作数是在前一运算中创建的。该系统进一步包括用于响应判断操作数是双精度、操作数需要基于前一运算的结果而增大以及前一运算没有执行增大的情况,对操作数执行双精度增大的指令。

Description

用于执行浮点算术运算的系统和方法
商标
IBM是International Business Machines Corporation,Armonk,New York,U.S.A.S/390,Z900 and z990的注册商标,这里所使用的其他名称可能是International Business Machines Corporation或其他公司的注册商标、商标或产品名称。
技术领域
一般而言,本发明涉及计算机系统,具体来说,涉及提供浮点运算的计算机系统。
背景技术
“IEEE-754 Standard for Binary Floating-point Arithmetic”说明了通常在诸如具有乘法器的浮点处理器之类的计算机硬件中实现的浮点数据体系结构。格式包括符号、无符号偏置指数和有效数字。符号位是单个位,并由“S”表示。由“e”表示的无符号偏置指数,对于单格式,是8位长,对于双格式,11位长。有效数字,对于单格式,是8位长,对于双格式,53位长。从指数的值可以推导出有效数字的最高有效位。有效数字或小数的次高有效位由随后的公式(1)和(2)表示。如果无符号偏置指数“e”不等于零并且没有将所有位设置为1,那么,浮点数的值可以由下列公式给出:
(-1)S×(1).F×2(C-Bias)(1)
此范围内的数字叫做“规格化数”,它们在有效数字的开始具有暗指的数。此范围外的数字被视为特殊的数字。在IEEE-754标准中定义了四种特殊的数字。通过硬件可以轻松地处理这些特殊的数字中的三种数字,因为它们的值决定了结果值,几乎没有算术计算。这三种特殊的数字为零、无穷大和非数字(“NaN”)。第四种特殊的数字是由等于零和非零小数的无符号偏置指数e指示的非规格化数。第四种特殊的数字的值由下列公式给出:
(-1)S×(0).F×2(1-Bias)(2)
与规格化格式对比,在此非规格化格式的小数前面,没有暗指的数。为了判断数据是非规格化的,必须检查特征。这是重要的,因为由硬件执行的计算通常通过非规格化输入数据(将有助于硬件的周期时间,与乘法的情况相同)的预先决定被串行地选通。对于不具有操作数是非规格化的任何预先解码的信息的浮点处理器,处理非规格化输入数据是一个特定问题,特别是在假设输入操作数是规格化的情况下。
在设计高性能浮点单元(FPU)时一个关键性能因数是解决两个连续的运算之间的相关性所需的周期数量。例如,对于熔合乘法-加法运算(fused multiply-add operation)的总体延迟可以是七个周期,具有每一个FPU、每一个周期的一个运算的吞吐量。在这种流水线中,取决于预运算的结果的运算在启动之前必须等待第一运算的整个延迟(在此情况下,为七个周期)。
当前,通过延迟相关的运算,直到计算出舍入的中间结果之后,某些FPU执行支持有限情况的数据相关运算的熔合的乘法-加法运算。例如,授予Cocanougher等人共同转让的专利号为4,999,802的美国专利描述了允许将舍入之前的中间结果传输到新的相关指令并稍后在乘法器中校正的机制。此机制支持将舍入之前的中间结果反馈到双精度数据的乘法器。
通过对多种数据类型(即,单精度和双精度)提供早期的未舍入反馈,并通过允许乘数输入操作数以及加数输入操作数中的相关性,可以改善性能。通过在某些或全部规格化之前反馈未舍入的未规格化结果,可以实现额外的性能改善。
发明内容
本发明的示范性实施例包括用于执行浮点算术运算的系统。该系统包括用于接收操作数的输入寄存器和用于响应判断操作数是未规格化格式并可能具有必须被屏蔽的精确的附加位的情况,执行屏蔽或移位运算的机制。该系统还包括用于响应判断操作数是单精度、操作数需要基于前一运算的结果而增大以及前一运算没有执行增大的情况,对操作数执行单精度增大的机制。操作数是在前一运算中创建的。该系统进一步包括用于响应判断操作数是双精度、操作数需要基于前一运算的结果而增大以及前一运算没有执行增大的情况,对操作数执行双精度增大的机制。
附加的示范性实施例包括用于执行浮点算术运算的系统。该系统包括用于接收多个操作数的输入寄存器和用于响应判断操作数是未规格化格式并可能具有必须被屏蔽的精确的附加位的情况,执行屏蔽或移位运算的机制。该系统还包括用于响应判断操作数是单精度、操作数需要基于前一运算的结果而增大以及前一运算没有执行增大的情况,对多个操作数中的一个或多个操作数执行单精度增大的机制。该系统进一步包括用于响应判断操作数是双精度、操作数需要基于前一运算的结果而增大以及前一运算没有执行增大的情况,对多个操作数中的一个或多个操作数执行双精度增大的机制。
附加的示范性实施例包括用于执行浮点算术运算的方法。该方法包括响应判断操作数是未规格化格式并可能具有必须被屏蔽的精确的附加位的情况,对操作数执行屏蔽或移位运算。该方法还包括响应判断操作数是单精度、操作数需要基于前一运算的结果而增大以及前一运算没有执行增大的情况,对操作数执行单精度增大。操作数是在前一运算中创建的。该方法进一步包括响应判断操作数是双精度、操作数需要基于前一运算的结果而增大以及前一运算没有执行增大的情况,对操作数执行双精度增大。
通过本本发明的技术,来实现其他功能和优点。这里将详细描述本发明的其他实施例和方面,它们被视为所声明的发明的一部分。为了更好地了解具有优点和功能的本发明,请参阅说明和图形。
附图说明
在本说明书结尾时在权利要求书中特别指出了并明确声明了被视为本发明的主题。通过下面的结合附图对本发明进行的详细说明,可以更好地理解本发明的前述和其他目标、特点和优点,其中:
图1是可以被本发明的示范性实施例利用的示范性浮点单元(FPU)的方框图;
图2说明了被本发明的示范性实施例利用的进位存储加法器的一个示例;
图3是可以被本发明的示范性实施例利用的示范性规格化装置的方框图;
图4是可以由本发明的示范性实施例执行的操作数锁存器(operand latch)屏蔽过程的流程图;
图5是可以被本发明的示范性实施例利用的具有延迟的一位移位的示范性可选舍入器设计的方框图;以及
图6是可以由本发明的示范性实施例执行的操作数锁存器屏蔽过程的流程图;
关于具体实施方式的描述通过参考附图说明了本发明的优选实施例,以及优点和功能。
具体实施方式
本发明的示范性实施例涉及优化相关的运算的硬件,其中,一个熔合乘法-加法运算取决于以前的熔合乘法-加法运算。熔合的乘法-加法数据流实现了公式T=B+A*C,其中,A、B和C是三个输入操作数,T是乘法-加法运算的目标或结果。A可以称为乘数,C称为被乘数,B称为加数。乘法-加法运算被视为熔合的,因为计算时有一个舍入误差,而不是乘法运算一个误差、加法运算一个误差。
在本发明的示范性实施例中,三个操作数是IEEE 754二进制浮点标准所定义的二进制浮点操作数。IEEE 754标准定义了32位单精度和64位双精度格式。IEEE 754标准将数据定义为具有表示数字是负的还是正的的一个符号位的数据,表示数字的指数的位字段,和表示数字的有效数字的位字段。
在本发明的示范性实施例中,输入操作数(即,A、B和C)可以是单精度,也可以是双精度(例如,A和B是单精度,C和T是双精度或任何其他组合),目标(T)由指令文本定义为单精度或双精度。此外,本发明的示范性实施例具有处理所有三个操作数的相关性的功能。可以将中间的、未舍入的未规格化结果提供到三个操作数(即,A、B和C)中的任何一个。
可以使用F1、F2、F3、F4、F5、F6和F7标记熔合的乘法-加法数据流的七个周期流水线,以表示每一个流水线级。规格化通常在流水线的倒数第二级完成,在此情况下,为F6。通常,最后一级F7执行舍入,以在规格化结果和最后增大一个单位的规格化结果之间选择。在不反馈早先的未舍入的未规格化结果的情况下,两个相关的熔合乘法-加法运算的典型的流水线流将如下所示:
Cycles        1  2  3  4  5  6  7  8  9  10 11 12 13 14
r5<-r1*r2+r3 F1 F2 F3 F4 F5 F6 F7
r6<-r5*r2+r7                      F1 F2 F3 F4 F5 F6 F7
通过提供未舍入的数据反馈,两个相关的熔合乘法-加法运算的流水线流将如下所示:
Cycles        1  2  3  4  5  6  7  8  9  10 11 12 13 14
r5<-r1*r2+r3 F1 F2 F3 F4 F5 F6 F7
r6<-r5*r2+r7                      F1 F2 F3 F4 F5 F6 F7
如上述序列所描述的,第二熔合乘法-加法运算提前一个周期地启动。结果,在第十三周期完成两个熔合乘法-加法运算,而不是第十四周期。通过反馈未舍入的未规格化数据,可以节省额外的部分周期,导致总共节省一个以上的周期。
在提供未舍入的未规格化反馈的本发明的示范性实施例中,利用两个不同的方案来处理乘数操作数和加数操作数的情况。对于到乘数操作数的反馈,来自周期F6中的中间点的未舍入的未规格化结果被反馈到操作数寄存器(F1之前的周期)。基于第一运算的输出的精度(例如,r5),到第二运算的输入的精度(例如,r5、r2和r7),反馈结果的规格化要求,形成舍入校正项。将此校正项添加到计数器树中的部分乘积。在F6的结束时,规格化要求是已知的,在F7过程中,知道舍入是否需要增大或截断。此信息被发送到计数器树,舍入校正项在周期F1过程中或者被抑制,或者被允许进入乘数树中。舍入校正项可以是能够处理到操作数的单精度或双精度反馈的各种组合之一。此外,也必须考虑将结果反馈到两个乘数操作数的特殊情况。
通过反馈F6周期中的,然后后一周期F7中的规格化结果的指数,将规格化舍入的结果反馈到加数的第二流水线级,可以完成到加数操作数的反馈。对于指数差计算(确定相对于积的加数的移位量),加数数据流路径是唯一关键的。有效数字不关键,通过在周期F2中开始的移位量计算,延迟其对齐。因此,来自F7的规格化舍入结果可以直接馈送到馈送F2周期的锁存器。
为校正对加数B的相关性,本发明的示范性实施例先将结果的部分规格化的指数反馈到,在一个周期之后将部分规格化的舍入的结果有效数字反馈到下一运算。为了能够这样做,在对齐中使用附加位。不是对齐53位双精度有效数字,而是使用54位,因为舍入可以将所有1的53位有效数字增大到1的53位有效数字,后面是53个零。由于从规格化结果指数而不是在舍入之后计算对齐移位量,需要维护有效数字的附加位。
对于7级熔合乘法-添加流水线,指数在第6级之后反馈到第1级的输入寄存器,这样,让以前的指令的第7级与相关的新指令的第1级重叠。在下面的周期中,第7级将以前的指令的舍入的有效数字馈送到新的相关的指令的第2级。在第1级没有完成加数的移位对齐,因此,可以绕过此级。这样,通过将规格化指数从第6级馈送到第1级,将舍入有效数字从第7级馈送到第2级,保留有效数字的附加位以便能够进行53位有效数字的进位输出。
对于两个乘数操作数,A和C,校正的示范性实施例如下。假设P表示积,那么:
P=A×C
如果A=A’+2**-n,其中,对于单精度,n=23,或对于双精度,为52,A′是在完成规格化和舍入之前的中间截断结果,那么,P=A×C=(A’+2**-n)×C=A’×C+2**-n×C。注意,只要一起反馈有效数字和对应的指数,只反馈部分地规格化的结果对积的值没有影响。只有舍入需要校正,但是具有部分地规格化的结果使位的位置增大起来比较困难。
因此,如果舍入之前的中间结果A′在乘法器的部分乘积阵列中乘以C,需要添加校正项,以使用A′进行校正。此校正项包括乘以2**-n的C。如果中间结果已经规格化,取决于A是单精度还是双精度,校正项只不过是移位23或52位位置的C。但对于可能需要再向左移位一个位的部分地规格化的结果,对于单精度,n可以等于23或24,对于双精度,等于52或53。在完成规格化之后,舍入位置的位置创建更多潜在的位置。
如果C是取决于前一运算的操作数,C=C’+2**-n,其中,C是中间未舍入的未规格化结果,那么:
P=A×C=A×(C’+2**-n)=A×C’+A×2**-n
在此情况下,校正项对于规格化中间结果是移位23或52个位位置的A,或当对于反馈路径,跳过左边1位的最后的移位时,是移位23、24、52或53个位位置的A。
如果A和C相等,并依赖于前一运算,那么:
P=(A’+2**-n)×(C’+2**-n)=A’×C’+A’×2**-n+C’×2**-n+
    2**(-2n);and
P=A’×C’+A’×2**(-n+1)+2**-2n
对于乘数操作数中的相关性,本发明的示范性实施例基于运算完成的精度和是否完成了规格化(即,是否需要左移一位(SL1))创建校正项。如果对于舍入需要增大,则将校正项添加到部分乘积阵列中。
在遵循IEEE 754浮点标准的二进制浮点设计中,所有操作数必须被规格化,除非它们非常小,在低于正常的数字范围内。从规格化操作数开始,乘法运算将使用两个可能的位位置中的前面的一个产生结果,只需要最小的移位。但是,加法运算可以导致大量的取消,这可能导致需要大量的移位。通常,设计了前导零预期(LZA)电路,以计算并行于加法的移位量。大多数LZA将产生关于前导位将在哪里的不正确的猜测,并可能偏离多达一个位的位置。许多规格化装置在设计时,将此考虑在内,通过使用多个移位级别来移位LZA量来开始,后面才是校正移位。校正移位需要检测前一移位器的数据的最高有效位,并被用来作为选择是否再左移一个位的选择行。此校正移位比较慢,因为较早时选择不可用,必须重新升幂(re-powered)到数据的每一个位。校正移位可能需要多达4FO4的延迟(散开到4个信号的反相器的延迟)。在高频设计中,这是关键的。下面所描述的本发明的示范性实施例在绕过数据到下一个操作数之前跳过SL1校正,而是直接校正数据。
在舍入之前,具体来说,在完成规格化之前,本发明的示范性实施例在熔合乘法-加法流水线中将中间结果馈送到下一运算。在规格化的最后一个SL1校正之前,本发明的示范性实施例反馈数据,但是这可以轻松地扩展为在任何规格化级别之前。在甚至更早的规格化之前反馈数据的困难是,数据必须更宽,也需要屏蔽最低有效位。本发明的示范性实施例缩小反馈路径(通常是FPU中的关键路径)中的延迟的关键量。
不是在将数据反馈到输入操作数寄存器之前移位数据,而是以精确的可能的附加位,反馈数据的有效数字和对应的指数。如果前导位是1,那么,对到操作数寄存器的输入,屏蔽最低有效位。这也影响前面所描述的舍入校正项的设计,因为舍入可以是将1添加到两个不同的位位置;这样,必须潜在地移位校正项。
在绕过路径中跳过规格化的一部分,SL1校正,并在舍入路径中延迟。在绕过路径中,SL1校正控制LSB的屏蔽,以及在下面的周期中创建的舍入的校正项的移位。在到浮点寄存器的直通路径中,SL1校正可以被延迟,直到舍入之后,并用来选择舍入器的输出的最后的移位。这样,左移1位校正只选通关键周期中的一位,并在被重新升幂(re-powered)之后在随后的周期中执行大多数校正。本发明的示范性实施例可以扩展,以涵盖跳过移位的最后四位,或规格化的更多的步骤,为此付出的代价是复杂性增大,将总线宽度增大被跳过的移位的量。
图1是可以被本发明的示范性实施例用来利用规格化和舍入之前的反馈实现熔合的乘法加法-运算的FPU的方框图。提供来自寄存器文件的数据100,并输入到B1寄存器110,A1寄存器111和C1寄存器112。在本发明的示范性实施例中,A1寄存器111和C1寄存器112包含在浮点算术运算的乘法部分中使用的操作数。B1寄存器110包含加法操作数。A1寄存器111的内容被输入到Booth解码器130。Booth解码器130、Booth多路复用器132和计数器树/部分乘积还原方框134统称为乘法器。通过Booth多路复用器132,将Booth解码器的输出提供到计数器树/部分乘积还原方框134。C1寄存器112的内容被输入到舍入校正方框180。C1寄存器112的内容也通过Booth多路复用器132被输入到计数器树/部分乘积还原方框134。
A1寄存器111、B1寄存器110和C1寄存器112的内容被输入到指数差方框120,以判断如何在校准器124中校准到加法器150的输入。指数差方框120的输出被输入到B2寄存器122,B2寄存器122的内容被输入到校准器124。校准器124可以作为移位器来实现,其功能是用在乘法器134中执行的乘法的结果校准加法操作数。校准器124提供存储在B3寄存器126中的输出。B3寄存器126的内容被输入到3:2计数器140。
计数器树/部分乘积还原方框134提供输入到3:2计数器140的两个部分乘积输出。3:2计数器140将输出到提供到加法器150和前导零指示器(LZA)182。基于到加法器150的输入,LZA 182预测加法器150的输出必须左移多少。如当前技术已知的,LZA 182提供了所需的移位量的良好的估计,但可能偏离一个位。来自LZA的估计被输入到规格化装置160。加法器150的输出还被输入到规格化装置160以便进行规格化。在完成规格化之前,输出中间未舍入的未规格化结果,并发送到A1寄存器111、B1寄存器110和C1寄存器112。此外,来自规格化装置160的输出还被输入到舍入器170以便舍入。来自规格化装置160的输出还被输入到舍入器170以便舍入。从舍入器170输出舍入的结果。舍入器170输出表示对于舍入是否需要增大的信号。来自舍入器170的此指示信号被输入到舍入校正方框180,以便输入到计数器树/部分乘积还原方框134。来自规格化装置160的用于表示结果是否需要左移一位以便规格化的SL1指示器也输入到舍入校正方框180。此外,舍入的结果也可以输入到B2寄存器122、A1寄存器和/或C1寄存器112。
图2是进位存储加法器树(本发明的示范性实施例中的乘数的部分)的例图。注意,舍入校正180输出提供到进位存储加法器CSA3B的输入。使用此输入来表示预先计算的结果是否被向上舍入。如果是,将1加到部分乘积中。由于通过树的传播延迟,可以以及时的方式添加舍入。
在用于提供未舍入的未规格化中间结果的本发明的示范性实施例中,通过下列公式计算来自舍入校正方框180的舍入校正项输出中的逻辑。将rounding_correction变量添加到A×C的结果中,以校正A和/或C可以不必舍入的事实。DP_TARGET是当目标或结果将以双精度表达时设置为1的开关,当目标以单精度表达时,该开关设置为0。A是存储在A1寄存器111中的输入数据,B是存储在B1寄存器110中的输入数据,C是存储在C1寄存器112中的输入数据。BYP_A是当A是中间未舍入的结果时设置为1,否则,复位为0的开关。BYP_C是当C是中间未舍入的结果时设置为1,否则,复位为0的开关。SL1指示器是来自LZA 302的输出,并表示SL1是否需要应用于数据。将PP_round校正添加到部分乘积,以校正A和/或C不被舍入。rounder_chooses_to_increment是来自舍入器的表示是否截断或增大的指示器。
  Rounding_correction(23:106)<=(Zeros(23:52)&C(0:52)&′0′)when
        ((DP_TARGET and BYP_A and not BYP_C and not SL1)=′1′)OR
  (Zeros(23:52)&C(0:53))wben((DP_TARGET and BYP_A and not BYP_C
        and SL1)=′1′)OR
  (Zeros(23:52)&A(0:52)&′0′)when((DP_TARGET and not BYP_A and
        BYP_C and not SL1)=′1′)OR
  (Zeros(23:52)&A(0:53))when((DP_TARGET and not BYP_A and BYP_C
        and SL1)=′1′)O
  (Zeros(23:51)&A(0:52)&′1′&′0′)when
        ((DP_TARGET and BYP_A and BYP_C and not SL1)=′1′)OR
  (Zeros(23:51)&A(0:53)&′1′)when((DP_TARGET and BYP_A and BYP_C
        and SL1)=′1′)OR
  (Zeros(23)&C(0:52)&Zeros(77:106))when
        ((not DP_TARGET and BYP_A and not BYP_C and not SL1)=′1′)OR
  (Zeros(23)&C(0:53)&Zeros(78:106))when
        ((not DP_TARGET and BYP_A and not BYP_C and SL1)=′1′)OR
  (Zeros(23)&A(0:52)&Zeros(77:106))when((not DP_TARGET and not
        BYP_A and BYP_C and not SL1)=′1′)OR
  (Zeros(23)&A(0:53)&Zeros(78:106))when((not DP_TARGET and not
        BYP_A and BYP_C and SL1)=′1′)OR
  (A(0:52)&′1′&Zeros(77:106))when
        ((not DP_TARGET and BYP_A and BYP_C and not SL1)=′1′)OR
  (A(0:53)&′1′&Zeros(78:106))when((not
        DP_TARGET and BYP_A and BYP_C and SL1)=′1′);and
  PP_round_correction(23:106)<=(Round_correction(23:106))when
        (Rounder_chooses_to_increment=′1′)
        else Zeros(23:106);
注意,可以使用A或C的53位,不管它们是单精度还是双精度,因为对于单精度,位24到53将为零。在本发明的示范性实施例中,校正首先基于DP_TARGET、BYP_A、BYP_C和SL1。一旦知道了舍入器是否增大或截断,那么,有AND门以抑制或传输此校正。舍入校正方框180可以作为12路多路复用器来实现,后面2路AND门。
图3是可以由本发明的示范性实施例使用的以提供中间未舍入的未规格化结果的示范性规格化装置160的方框图。规格化装置160接收来自LZA 182的输入、来自加法器150的高加数和来自加法器150的加法器结果。在本发明的示范性实施例中,LZA 182的结果,左移估计值存储在8位字中。取决于来自LZA 182的结果字的开头三个位中的值,方框160a将加法器结果左移32、64、96、128和160位。取决于来自LZA 182的结果字的第4和第5位中的值,方框160b将加法器结果左移0、8、16或24位。取决于来自LZA 182的结果字的最后三个位中的值,方框160c将加法器结果左移0、1、2、3、4、5、6或7位。取决于最高有效位(MSB)的值,方框160d将加法器结果左移0或1位。如果MSB等于零,则结果需要左移一位;否则,结果不需要任何进一步的移位。来自规格化装置160的输出包括SL1指示器和规格化输出。图3还描述了中间未规格化结果U1,在最后移位之前输出,一个位的位移。此外,图3描述了早先地中间未规格化结果,U2,在第三移位之前输出,这是本发明的变体,以允许规格化装置的任何级反馈到操作数寄存器110、111和112。
图4是可以由本发明的示范性实施例执行的以提供中间未舍入的未规格化结果的操作数锁存器屏蔽过程的流程图。图4中的过程可以被A1寄存器111、B1寄存器110和C1寄存器112中的每一个寄存器用来判断这些寄存器中的每一个寄存器中的有效数字的值。如果寄存器的输入数据是U1(来自规格化装置160的未规格化结果),则使用方框402。如果在寄存器数据上需要SL1,则必须与寄存器数据一起发送附加位。位0到22被传递到被标记为修改的规格化输出的方框402的输出。如果数据包括双精度数,那么位23被传递到修改的规格化输出;否则,位23被复位为零。此外,如果数据是单精度,在数据上应该发生SL1,那么位23被传递到修改的规格化输出,否则,位23被复位为零。如果数据是双精度,在数据上应该发生SL1,那么位53被传递到修改的规格化输出;否则,位53被复位为零。
修改的规格化输出被输入到方框404。到方框404的另一个输入是来自寄存器文件的数据,第54位具有附加到来自寄存器文件的数据的右边的零值。此外,来自舍入器170的舍入的结果数据,或舍入器数据也输入到方框404中。再次,具有附加了零值的第54位被附加到舍入器数据的右边。方框404是在这三个值之间选择以输入到方框406中的A1寄存器111、B1寄存器110或C1寄存器的三通多路复用器。对于每一个寄存器,执行此过程。
图5是可以被本发明的示范性实施例利用的具有延迟SL1的示范性可选舍入器170a的方框图。舍入器170a接收部分地规格化的输出U1,和来自规格化装置160的SL1指示器。此外,最低有效位L、保护位G和表示中间结果是否不精确粘性位(sticky bit)S,以及结果是单精度还是双精度格式的指示也输入到舍入器170a中。舍入器170a为部分地规格化的输出创建所有可能的组合:截断的SL1双精度,没有截断的SL1双精度,增大的SL1双精度、没有增大的SL1双精度,截断的SL1单精度,没有截断的SL1单精度、增大的SL1单精度,没有增大的SL1单精度。基于SL1指示器中的值和舍入表中的信息,多路复用器从可能的组合的列表中选择其中一个值。
图6是可以由本发明的示范性实施例执行的以提供中间未舍入的未规格化结果的操作数锁存器屏蔽过程的流程图。流程类似于参考图4所描述的流程,只是它适用于早先来自移位过程中的未规格化的输出(例如,图4中的U2)。
本发明的功能可以以软件、固件、硬件或其某些组合来实现。
作为一个示例,本发明的一个或多个方面可以包括在具有计算机可使用的介质的产品中(例如,一个或多个计算机程序产品)。介质中包含了用于提供和促进本发明的功能的计算机可读取的程序代码装置。产品可以作为计算机系统的一部分或单独地销售。
另外,可以提供至少一个由机器可读取的程序存储设备,其中可触摸地包含了由机器可执行的至少一个指令程序以执行本发明的功能。
这里所描述的流程图只是示例。在不偏离本发明的精神的情况下,对这里所描述的这些图表或步骤(或操作)可以有许多更改。例如,可以以不同顺序执行各个步骤,也可以添加、删除或修改步骤。所有这些变化被视为带有权利要求的本发明的一部分。
虽然是参考示范性实施例描述本发明的,但是那些精通本技术的人员将理解,在不偏离本发明的范围的情况下,可以进行各种修改,并以等效的元件来替代元件。此外,可以进行许多修改,以使特定情况或材料适应本发明的原理,而不偏离其基本范围。因此,本发明不仅限于这里作为实现本发明的最佳实施方式所说明的特定实施例,本发明还包括在所附的权利要求的范围内的所有实施例。此外,使用术语“第一”、“第二”等等并不意味着任何顺序或重要性,而是用来将一个元素与另一个元素区别开来。

Claims (20)

1.一种用于执行浮点算术运算的系统,该系统包括:
用于接收操作数的输入寄存器;
一种机制,用于:
响应判断操作数是未规格化格式的情况,对操作数执行屏蔽或移位运算,以使操作数相当于规格化截断操作数;
响应判断操作数是单精度、操作数需要基于前一运算的结果而增大以及前一运算没有执行增大的情况,对操作数执行单精度增大;以及
响应判断操作数是双精度、操作数需要基于前一运算的结果而增大以及前一运算没有执行增大的情况,对操作数执行双精度增大。
2.根据权利要求1所述的系统,其中,所述操作数是加数、乘数或被乘数。
3.根据权利要求1所述的系统,其中,所述操作数是前一运算的未舍入的未规格化中间结果。
4.根据权利要求1所述的系统,其中,所述移位运算是左移运算。
5.根据权利要求1所述的系统,其中,所述移位运算是左移一位运算。
6.根据权利要求1所述的系统,对于操作数舍入需要进行增大。
7.根据权利要求1所述的系统,前一运算是加法运算。
8.根据权利要求1所述的系统,其中,前一运算是乘法运算。
9.根据权利要求1所述的系统,其中,执行移位运算、执行单精度增大以及执行双精度增大是对操作数的规格化要求的响应。
10.一种用于执行浮点算术运算的系统,该系统包括:
用于接收多个操作数的输入寄存器;以及
一种机制,用于:
响应判断操作数是未规格化格式的情况,对多个操作数中的一个或多个操作数执行屏蔽或移位运算,以使操作数在值上相当于规格化截断操作数;
响应判断操作数是单精度、操作数需要基于前一运算的结果而增大以及前一运算没有执行增大的情况,对多个操作数中的一个或多个操作数执行单精度增大;以及
响应判断操作数是双精度、操作数需要基于前一运算的结果而增大以及前一运算没有执行增大的情况,对多个操作数中的一个或多个操作数执行双精度增大。
11.根据权利要求10所述的系统,其中,多个操作数是加数、乘数和被乘数。
12.根据权利要求10所述的系统,其中,一个或多个操作数是前一运算的未舍入的未规格化结果。
13.一种用于执行浮点算术运算的方法,该方法包括:
响应判断操作数是未规格化格式的情况,对操作数执行屏蔽或移位运算;
响应判断操作数是单精度、操作数需要基于前一运算的结果而增大以及前一运算没有执行增大的情况,对操作数执行单精度增大,其中,所述操作数是在前一运算中创建的;以及
响应判断操作数是双精度、操作数需要基于前一运算的结果而增大以及前一运算没有执行增大的情况,对操作数执行双精度增大。
14.根据权利要求13所述的方法,其中,所述操作数是加数、乘数或被乘数。
15.根据权利要求13所述的方法,其中,所述操作数是前一运算的未舍入的未规格化中间结果。
16.根据权利要求13所述的方法,其中,所述移位运算是左移运算。
17.根据权利要求13所述的方法,对于操作数舍入需要进行增大。
18.根据权利要求13所述的方法,其中前一运算是加法运算。
19.根据权利要求13所述的方法,其中,前一运算是乘法运算。
20.根据权利要求13所述的方法,其中,执行屏蔽或移位运算、执行单精度增大和执行双精度增大是对操作数的规格化要求的响应。
CNB2006100066911A 2005-02-09 2006-02-08 用于执行浮点算术运算的系统和方法 Expired - Fee Related CN100449476C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/054,110 2005-02-09
US11/054,110 US7730117B2 (en) 2005-02-09 2005-02-09 System and method for a floating point unit with feedback prior to normalization and rounding

Publications (2)

Publication Number Publication Date
CN1818851A true CN1818851A (zh) 2006-08-16
CN100449476C CN100449476C (zh) 2009-01-07

Family

ID=36781135

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006100066911A Expired - Fee Related CN100449476C (zh) 2005-02-09 2006-02-08 用于执行浮点算术运算的系统和方法

Country Status (4)

Country Link
US (1) US7730117B2 (zh)
JP (1) JP4953644B2 (zh)
CN (1) CN100449476C (zh)
TW (1) TWI365404B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101859241A (zh) * 2010-05-22 2010-10-13 中国人民解放军国防科学技术大学 基于全展开的全流水128位精度浮点累加器
CN104346134A (zh) * 2013-07-31 2015-02-11 Arm有限公司 用于执行缩小和舍入算术运算的数据处理装置和方法
CN106250098A (zh) * 2015-06-12 2016-12-21 Arm 有限公司 用于在执行浮点运算时控制舍入的装置及方法
CN107038014A (zh) * 2015-10-19 2017-08-11 想象技术有限公司 舍入反平方根结果
CN108255777A (zh) * 2018-01-19 2018-07-06 中国科学院电子学研究所 用于fpga的嵌入式浮点型dsp硬核结构
CN108958705A (zh) * 2018-06-26 2018-12-07 天津飞腾信息技术有限公司 一种支持混合数据类型的浮点融合乘加器及其应用方法

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7917567B1 (en) * 2007-06-07 2011-03-29 Xilinx, Inc. Floating-point processing unit for successive floating-point operations
US8046399B1 (en) * 2008-01-25 2011-10-25 Oracle America, Inc. Fused multiply-add rounding and unfused multiply-add rounding in a single multiply-add module
US8239440B2 (en) 2008-03-28 2012-08-07 Oracle America, Inc. Processor which implements fused and unfused multiply-add instructions in a pipelined manner
US8046400B2 (en) * 2008-04-10 2011-10-25 Via Technologies, Inc. Apparatus and method for optimizing the performance of x87 floating point addition instructions in a microprocessor
US8239441B2 (en) * 2008-05-15 2012-08-07 Oracle America, Inc. Leading zero estimation modification for unfused rounding catastrophic cancellation
US8671129B2 (en) 2011-03-08 2014-03-11 Oracle International Corporation System and method of bypassing unrounded results in a multiply-add pipeline unit
US8892622B2 (en) 2011-04-07 2014-11-18 Oracle International Corporation Pipelined divide circuit for small operand sizes
US9104479B2 (en) 2011-12-07 2015-08-11 Arm Limited Apparatus and method for rounding a floating-point value to an integral floating-point value
CN103019647B (zh) * 2012-11-28 2015-06-24 中国人民解放军国防科学技术大学 具有浮点精度保持功能的浮点累加/累减运算方法
US9286069B2 (en) 2012-12-21 2016-03-15 Arm Limited Dynamic write port re-arbitration
GB2511314A (en) 2013-02-27 2014-09-03 Ibm Fast fused-multiply-add pipeline
US9286031B2 (en) 2013-11-26 2016-03-15 International Business Machines Corporation Fast normalization in a mixed precision floating-point unit
US9645791B2 (en) 2014-06-16 2017-05-09 Apple Inc. Multiplier unit with speculative rounding for use with division and square-root operations
US9891886B2 (en) * 2014-07-02 2018-02-13 Via Alliance Semiconductor Co., Ltd Split-path heuristic for performing a fused FMA operation
US9952829B2 (en) * 2016-02-01 2018-04-24 International Business Machines Corporation Binary fused multiply-add floating-point calculations
US10303438B2 (en) * 2017-01-16 2019-05-28 International Business Machines Corporation Fused-multiply-add floating-point operations on 128 bit wide operands
US11531546B2 (en) 2021-03-08 2022-12-20 International Business Machines Corporation Hexadecimal floating point multiply and add instruction
US20220318013A1 (en) * 2021-03-25 2022-10-06 Intel Corporation Supporting 8-bit floating point format operands in a computing architecture

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4999802A (en) 1989-01-13 1991-03-12 International Business Machines Corporation Floating point arithmetic two cycle data flow
US5184318A (en) * 1989-09-05 1993-02-02 Cyrix Corporation Rectangular array signed digit multiplier
JP2651267B2 (ja) * 1990-07-26 1997-09-10 富士通株式会社 演算処理装置及び演算処理方法
JP2508912B2 (ja) * 1990-10-31 1996-06-19 日本電気株式会社 浮動小数点加算装置
US5631859A (en) * 1994-10-27 1997-05-20 Hewlett-Packard Company Floating point arithmetic unit having logic for quad precision arithmetic
US5646875A (en) * 1995-02-27 1997-07-08 International Business Machines Corporation Denormalization system and method of operation
US5867413A (en) * 1995-10-17 1999-02-02 Hitachi Micro Systems, Inc. Fast method of floating-point multiplication and accumulation
US5696711A (en) 1995-12-22 1997-12-09 Intel Corporation Apparatus and method for performing variable precision floating point rounding operations
US5880984A (en) * 1997-01-13 1999-03-09 International Business Machines Corporation Method and apparatus for performing high-precision multiply-add calculations using independent multiply and add instruments
US6185593B1 (en) * 1997-09-02 2001-02-06 Intrinsity, Inc. Method and apparatus for parallel normalization and rounding technique for floating point arithmetic operations
US6275838B1 (en) * 1997-12-03 2001-08-14 Intrinsity, Inc. Method and apparatus for an enhanced floating point unit with graphics and integer capabilities
US6044454A (en) 1998-02-19 2000-03-28 International Business Machines Corporation IEEE compliant floating point unit
GB2339936B (en) * 1998-05-27 2002-09-25 Advanced Risc Mach Ltd Data processing apparatus and method for performing multiply-accumulate operations
US6148314A (en) 1998-08-28 2000-11-14 Arm Limited Round increment in an adder circuit
US6697832B1 (en) 1999-07-30 2004-02-24 Mips Technologies, Inc. Floating-point processor with improved intermediate result handling
CA2327924A1 (en) * 2000-12-08 2002-06-08 Ibm Canada Limited-Ibm Canada Limitee Processor design for extended-precision arithmetic
CN1220935C (zh) * 2001-09-27 2005-09-28 中国科学院计算技术研究所 提高半规模双精度浮点乘法流水线效率的部件
TWI269228B (en) 2003-01-07 2006-12-21 Ibm Floating point unit, processor chip, and computer system to resolve data dependencies

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101859241A (zh) * 2010-05-22 2010-10-13 中国人民解放军国防科学技术大学 基于全展开的全流水128位精度浮点累加器
CN104346134A (zh) * 2013-07-31 2015-02-11 Arm有限公司 用于执行缩小和舍入算术运算的数据处理装置和方法
CN104346134B (zh) * 2013-07-31 2018-10-19 Arm 有限公司 用于执行缩小和舍入算术运算的数据处理装置和方法
CN106250098A (zh) * 2015-06-12 2016-12-21 Arm 有限公司 用于在执行浮点运算时控制舍入的装置及方法
CN107038014A (zh) * 2015-10-19 2017-08-11 想象技术有限公司 舍入反平方根结果
CN108255777A (zh) * 2018-01-19 2018-07-06 中国科学院电子学研究所 用于fpga的嵌入式浮点型dsp硬核结构
CN108255777B (zh) * 2018-01-19 2021-08-06 中国科学院电子学研究所 用于fpga的嵌入式浮点型dsp硬核结构
CN108958705A (zh) * 2018-06-26 2018-12-07 天津飞腾信息技术有限公司 一种支持混合数据类型的浮点融合乘加器及其应用方法
CN108958705B (zh) * 2018-06-26 2021-11-12 飞腾信息技术有限公司 一种支持混合数据类型的浮点融合乘加器及其应用方法

Also Published As

Publication number Publication date
TWI365404B (en) 2012-06-01
US20060179097A1 (en) 2006-08-10
JP4953644B2 (ja) 2012-06-13
JP2006221622A (ja) 2006-08-24
TW200709039A (en) 2007-03-01
CN100449476C (zh) 2009-01-07
US7730117B2 (en) 2010-06-01

Similar Documents

Publication Publication Date Title
CN1818851A (zh) 用于执行浮点算术运算的系统和方法
US8694572B2 (en) Decimal floating-point fused multiply-add unit
CN1928809A (zh) 用于执行浮点运算的系统、设备和方法
US8671129B2 (en) System and method of bypassing unrounded results in a multiply-add pipeline unit
US9665347B2 (en) Apparatus and method for performing conversion operation
US20160092169A1 (en) Standalone floating-point conversion unit
US7315163B2 (en) Arithmetic unit
US10338889B2 (en) Apparatus and method for controlling rounding when performing a floating point operation
Del Barrio et al. Ultra-low-power adder stage design for exascale floating point units
US7519645B2 (en) System and method for performing decimal floating point addition
CN1826580A (zh) 具有初步饱和检测的加法或者减法运算单元
US20130304785A1 (en) Apparatus and method for performing a convert-to-integer operation
US8166085B2 (en) Reducing the latency of sum-addressed shifters
Gonzalez-Navarro et al. Binary integer decimal-based floating-point multiplication
GB2559039B (en) Leading zero anticipation
US9720648B2 (en) Optimized structure for hexadecimal and binary multiplier array
Seidel et al. How many logic levels does floating-point addition require?
US7475104B2 (en) System and method for providing a double adder for decimal floating point operations
US10275218B1 (en) Apparatus and method for subtracting significand values of floating-point operands
CN101040281A (zh) 用于高效浮点运算器(alu)的方法
US20060179096A1 (en) System and method for a fused multiply-add dataflow with early feedback prior to rounding
JP4109181B2 (ja) 論理回路、および、それを使用した浮動小数点演算回路とマイクロプロセッサ
Castellanos Analysis and implementation of decimal arithmetic hardware in nanometer CMOS technology

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090107

Termination date: 20190208

CF01 Termination of patent right due to non-payment of annual fee