CN100543723C - 用于高效浮点运算器(alu)的方法 - Google Patents
用于高效浮点运算器(alu)的方法 Download PDFInfo
- Publication number
- CN100543723C CN100543723C CNB2005800347980A CN200580034798A CN100543723C CN 100543723 C CN100543723 C CN 100543723C CN B2005800347980 A CNB2005800347980 A CN B2005800347980A CN 200580034798 A CN200580034798 A CN 200580034798A CN 100543723 C CN100543723 C CN 100543723C
- Authority
- CN
- China
- Prior art keywords
- floating
- point operation
- operation number
- footpath
- reasoning
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Complex Calculations (AREA)
Abstract
本发明提供一种用于在微处理器的运算器(ALU)中执行近处理路径(110)指数差的改进的技术。在一实施例中,具有用于近处理路径(110)减法和远处理路径(140)减法的独立逻辑电路的装置(100)通过只利用两个浮点运算数的指数的两个最低有效位执行指数差,来产生指数差信号。
Description
根据35.U.S.C.119(e)要求以下申请的利益:Saurbh Srivastava于2004年8月13日提交的序列号为60/601,383的美国临时申请,该美国临时申请的题目为“Methods to improve the speed of 32/40 bit floatingpoint ALU”;及Saurbh Srivastava于2005年6月21日提交的序列号为11/157650的美国专利申请,该申请的题目为“Methods And ApparatusFor An Efficient Floating Point Alu”,为了种种目的,通过引用将这两篇申请完全结合于本文。
技术领域
本发明涉及微处理器内的浮点算术,更具体地说,涉及浮点部件内的加/减管道。
背景技术
一般地,浮点运算数由三个元素组成,第一个是符号位,第二个是尾数位,第三个是指数。例如,根据IEEE(电气和电子工程学会)标准,一个32位浮点运算数的表示如下:
(-1)s × 1.M23 × 2(EB-127)
--符号-- --尾数-- --指数--
通常,浮点加法运算包括两个浮点运算数上的算术运算。例如,两个浮点运算数上的算术运算包括如下步骤:
1.通过使具有较低指数的运算数的尾数向下移位来使两个浮点运算数(运算数)的指数相同;
2.将两个运算数的尾数相加(具有或没有舍入运算)并输出和数;
3.如果和数溢出(例如,在32位加法中,如果和数超过32位,则和数溢出),则将和数向下移1位。
上面略述的浮点加法运算需要全下移位器、加法器和1位下移位器。
类似地,浮点减法运算通常也包括两个运算数上的算术运算。常规技术通过利用称为远处理路径和近处理路径的两个并行处理路径并选择这两个处理路径之一的输出作为减法结果来执行减法运算。
如果两个运算数之间的指数差是1或0,则使用近处理路径运算。因为指数差是1或0,所以只需最大下移1位的下移位运算便可使指数相等。在使指数相等之后,将另一个保持不变的尾数减去移位后的尾数。在这种情况下,最高有效位(MSB)可在减法结果中的任何位位置。结果,可能需要一个全上移位器来将MSB带到第1位置(并且将指数减去与上移位相等的量)。第1位置从相减数的左边指出。例如,在32位减法器中,结果的MSB可以在第32位和第1位之间的任何位置。在此情况下,必须将MSB上移到最高第32位的位置处,这一般需要32位上移位器。因而,近处理路径减法可能需要一个1位下移位器、一个32位减法器和一个32位上移位器。
如果两个运算数之间的指数差大于1,则使用远处理路径运算。远处理路径的指数差可以大于1,并且可以是任何数字。结果,需要全下移位器,以便通过使尾数向下移位来使两个运算数的指数相同。然后,将具有较大输入指数的运算数的尾数减去另一个运算数的尾数。然后,相减结果可能需要上移1位的运算。结果,远处理路径减法运算可能需要全下移位器、全减法器和1位上移位器。例如,32位远处理路径减法可能需要32位下移位器、32位减法器和1位上移位器。
因此,上面的近处理路径浮点减法运算可能需要指数减法器或任何其它用于检测两个运算数的指数差的逻辑。如果尾数差是0、1或-1,则近处理路径进行减法。该指数减法逻辑的时间可能相当长。在这段时间内,近处理路径保持空闲,即它将等待指数差逻辑的结果。当使用前述近处理路径和远处理路径技术时,这会显著增加整个减法运算的时间。此外,当使用前面的远处理路径和近处理路径技术来进行浮点减法时,诸如舍入、上移位误差校正、下溢检测和下移位的尾数选择的运算也会花费相当长的额外的逻辑时间。
发明内容
本发明提供一种用于执行指数差估计的改进的技术,它可用于产生与微处理器的运算器(ALU)的近处理路径相等的减法结果。在一实施例中,具有用于近处理路径和远处理路径减法的单独逻辑的电路通过只利用两个浮点运算数的指数的两个最低有效位来产生用于近处理路径的指数差信号。
附图说明
图1示出根据本主题的一个实施例的用于在ALU中实现并行运算的装置的方块图。
图2示出根据本主题的一个实施例的用于实现图1的并行运算的流程图。
具体实施方式
在以下对本发明的实施例的详细描述中,参照附图,这些附图构成本发明的一部分,并且附图中为了说明而示出实施本发明的特定实施例。对这些实施例的描述足够详细以使本领域的技术人员能够实施本发明,并且要理解,可以利用其它实施例,并且在不背离本发明范围的前提下可进行改变。因此,下面详细的描述不是限制性的,本发明的范围只由所附权利要求定义。
预测用于近处理路径的指数差的改进的方案
现参照图1,示出根据本发明一个实施例的用于实现并行运算的装置100的方块图,其中这些并行运算用于在微处理器的运算器(ALU)中执行两个浮点运算数的减法。如图1所示,装置100包括近处理路径110、远处理路径140、输入逻辑电路160、输入数据总线170和最终结果多路复用器180。
此外,如图1所示,近处理路径110包括近处理路径指数比较器(NPEC)112、一对近处理路径减法前多路复用器114、一对近处理路径减法器116、近处理路径MSB/进位产生电路(CMG1)118、近处理路径减法结果选择器(SRS)120、减法后近处理路径多路复用器122、上移位预测器124、上移位误差预测模块126、近处理路径减法后上移位器(NPPPSU)138、尾数下溢信号产生模块132、指数下溢信号产生模块134和正常结果信号产生模块136。如图1所示,近处理路径减法后上移位器138包括上移位器128和多路复用器130。
远处理路径140包括远处理路径指数减法器(FPES)142、远处理路径指数比较器(FPEC)144、一对下移位器146、一对减法前远处理路径多路复用器(PSFPM)148、一对远处理路径减法器150、远处理路径减法MSB/进位产生电路(CMG2)152、远处理路径SRS154和减法后远处理路径多路复用器156。
在一个示例实施例中,在运算时,输入数据总线170接收第一浮点运算数和第二浮点运算数,并将它们提供给输入逻辑电路160。然后,输入逻辑电路160计算与第一浮点运算数和第二浮点运算数中的每个浮点运算数相关的符号位、尾数和指数,并将它们提供给近处理路径110和远处理路径140,用于计算第一浮点运算数和第二浮点运算数之间的差。在这些实施例中,耦合到输入数据总线170的输入逻辑电路160从输入数据总线170接收第一浮点运算数和第二浮点运算数,并提供多个与所接收的第一浮点运算数和第二浮点运算数对应的计算的指数和尾数。
本发明使得用于计算近路径指数差是否等于0、1或-1所需的时间比常规技术所需的时间减少了几乎一半。此外,与用于执行这些ALU运算的常规方案相比,新方案需要更少的硬件。
在接收与第一浮点运算数和第二浮点运算数相关的指数后,近处理路径110产生多个指数差信号。在一实施例中,近处理路径110使用下式,这说明只需要指数的两个最低有效位就能产生用于执行ALU运算所需的指数差信号。
GT=(EXPsame[1]and XEXP[0]and~YEXP[0])or
(EXPdiffr[1]and YEXP[0]and~XEXP[0]);
LT=(EXPsame[1]and YEXP[0]and~XEXP[0])or
(EXPdiffr[1]and XEXP[0]and~YEXP[0]);
EQ=EXPsame[0]:
其中,EXPsame[i]=XEXP[i]xnor YEXP[i],EXPdiffr[i]=XEXP[i]xorYEXP[i],并且GT、LT及EQ是由上式产生的指数差信号,它们与+1、-1和0的指数差信号等价。它们基本上是对XEXP和YEXP之间的差的预测,其中XEXP和YEXP是第一浮点运算数和第二浮点运算数的指数。GT、LT和EQ同+1、-1和0之间的这种等价是有条件的,即该等价只有在XEXP和YEXP之间的差等于+1、-1或0时才成立。这意味着如果任何两个数之间的差等于+1、-1或0,那么便可以利用上式来计算实际的指数差。因此,只有在这些情况下(即,当指数差是+1、-1或0时)才选择近处理路径结果。所以,对于所选结果,当所预测的指数差结果正确时,最终输出结果结束校正。因此,用于近路径减法器110的指数差可以利用上式而不是利用要花费明显更多的时间和更大硅面积的现有技术产生。
如果任何两个数的指数差等于+1、-1或0,那么使用这种用于近路径计算的技术将导致相同的指数差计算。但如果任何两个数的指数差不等于+1、-1或0,那么结果会不同。因为最终多路复用器不会把近路径输出认为是其它指数差,所以这不会影响减法器的最终结果。使用这种用于近路径指数差的技术将导致更快的预测和有条件地精确的差信号,并且不会对所有指数差的情况产生相同的结果。
在一些实施例中,在通过输入逻辑电路160接收与第一浮点运算数和第二浮点运算数相关联的指数后,近处理路径110中的NPEC112产生GT、LT和EQ指数差信号。
在一些实施例中,近处理路径110中的上移位预测器124然后基于所产生的多个指数差信号和两个运算数的尾数来产生近处理路径上移位值。
在一些实施例中,近处理路径减法前多路复用器对114基于所产生的GT、LT和EQ指数差信号和从输入逻辑电路160中接收的第一浮点运算数和第二浮点运算数的尾数来产生一对近处理路径标准化尾数。
在这些实施例中,近处理路径减法器对116即减去一个具有舍入的数和减去另一个没有舍入的数然后基于所产生的近处理路径标准化尾数对来产生一对相减值。然后,CMG1 118利用所产生的近处理路径标准化尾数对和舍入模式(即ALU的输入信号)及任何从减法前多路复用器中丢弃的位(减法前多路复用器直接传递尾数或者使尾数下移一位,在下移一位的情况下,从下移位后的尾数中丢弃一个LSB位)来产生MSB和进位。
同时,在这些实施例中,减法后近处理路径多路复用器122然后基于选择信号从相减值对中选择近路径相减值。
上移位预测器124基本上同时从NPEC 112中接收GT、LT和EQ指数差信号并从输入逻辑电路160中接收第一浮点运算数和第二浮点运算数的尾数,并产生上移位预测信号和误差匹配模式。在一些实施例中,上移位预测器124在接收GT、LT和EQ指数差信号和与第一浮点运算数和第二浮点运算数相关的尾数后产生上移位预测信号和误差匹配模式。
另外,在这些实施例中,上移位误差预测模块126然后基于误差匹配模式和近处理路径减法值产生预测误差信号。近处理路径减法后上移位器138然后基于近处理路径减法值、上移位预测信号和预测误差信号产生近处理路径上移位后的值。
在一些实施例中,基本上同时地,在从输入逻辑电路160接收与第一浮点运算数和第二浮点运算数相关联的指数后,远处理路径140将这些指数相减,并输出较小指数的尾数所需的下移位量。远处理路径140然后产生一对用于与第一浮点运算数和第二浮点运算数相关联的尾数的远处理路径下移位后的尾数选择信号。此外,远处理路径140基于与第一浮点运算数和第二浮点运算数相关联的指数产生一对用于与第一浮点运算数和第二浮点运算数相关联的尾数的远处理路径直接尾数选择信号。
在这些实施例中,FPES 142从输入逻辑电路160接收第一浮点运算数和第二浮点运算数的指数,将与第一浮点运算数和第二浮点运算数相关联的指数相减,并输出预期的下移位值对。FPEC 144然后产生一对用于与第一浮点运算数和第二浮点运算数相关联的尾数的远处理路径下移位后的尾数选择信号。此外,FPEC 144基于与第一浮点运算数和第二浮点运算数相关联的指数产生一对用于与第一浮点运算数和第二浮点运算数相关联的尾数的远处理路径直接尾数选择信号。
同时,在这些实施例中,下移位器对146然后基于预期的下移位值对来将与第一浮点运算数和第二浮点运算数相关联的尾数向下移位。此外,下移位器对146还丢弃下移位之后在尾数数据范围之外的尾数位。耦合到下移位器对146的PSFPM 148基于远处理路径下移位尾数选择信号对、远处理路径直接尾数选择信号对、与第一浮点运算数和第二浮点运算数相关联的尾数和下移位后的尾数对来选择一对值,并输出一对远处理路径标准化尾数。
另外,在这些实施例中,远处理路径减法器对150然后基于远处理路径标准化尾数对来产生一对相减值(即,一个相减值具有舍入,而另一个相减值没有舍入)。CMG2 152然后利用远处理路径标准化尾数对来产生MSB/进位。然后,远处理路径SRS 154基于所产生的MSB/进位、从下移位器对146中丢弃的位和作为该减法逻辑的输入的舍入模式输入值来产生选择信号。
另外,在这些实施例中,减法后远处理路径多路复用器156然后基于选择信号从相减值对中选择远处理路径相减值,并输出远处理路径减法值。如果MSB是0,那么远处理路径多路复用器156调节所选的远处理路径相减值,并执行1位上移。
另外,近处理路径110通过将第一浮点运算数和第二浮点运算数的指数相减来计算第一浮点运算数和第二浮点运算数的指数差。然后,近处理路径110基于所计算的指数差产生指数差信号。然后,最终结果多路复用器180基于所产生的指数差信号和将被选择的结果的状态来选择远路径减法结果、近路径减法结果或标准结果(假设为指数/尾数下溢,标准结果包含所有0指数和0尾数位,符号位可以是1或0)。
在一些实施例中,最终结果多路复用器180然后基于通过利用与第一浮点运算数和第二浮点运算数相关联的指数计算指数差所获得的输入指数差值来选择远处理路径减法值或近处理路径减法后上移位后的值或用于下溢的标准结果。在一些实施例中,最终结果多路复用器180也会因为由NRSGM 136计算的结果的状态而选择近处理路径上移位后的值。
在一实施例中,当指数差等于1、-1或0并且最终结果没有产生下溢(即指数/尾数下溢)时,最终结果多路复用器180选择近处理路径上移位后的值作为第一浮点运算数和第二浮点运算数减法的结果。在该实施例中,当指数差大于1并且最终结果没有产生下溢情况时,最终结果多路复用器180选择远处理路径减法值作为第一浮点运算数和第二浮点运算数减法的结果。
图2是示出根据本发明的实现用于计算浮点运算数的差的并行运算的方法200的一个示例实施例的流程图。在步骤210,方法200接收第一浮点运算数和第二浮点运算数。所接收的第一浮点运算数和第二浮点运算数中的每个浮点运算数都具有符号位、尾数和指数。在步骤220,通过将第一浮点运算数和第二浮点运算数的指数相减来计算指数差。
在步骤230,产生作为第一浮点运算数和第二浮点运算数中的指数模式的函数的多个指数差信号。在一些实施例中,通过以下方法计算多个指数差信号,即,如果第一浮点运算数和第二浮点运算数的指数差是1、-1或0并且指示第一浮点运算数和第二浮点运算数之间的指数差是+1,那么首先产生GT指数差信号。如果第一浮点运算数和第二浮点运算数的指数差是1、-1或0并且指示第一浮点运算数和第二浮点运算数之间的指数差是-1,那么产生LT指数差信号。如果第一浮点运算数和第二浮点运算数的指数差是1、-1或0并且还指示第一浮点运算数和第二浮点运算数之间的指数差是0,那么产生EQ指数差信号。
在一些实施例中,通过使用下式产生作为第一运算数和第二运算数中的指数模式的函数的GT、LT和EQ指数差信号来获得这些指数差信号:
GT=(EXPsame[1]and XEXP[0]and~YEXP[0])or
(EXPdiffr[1]andYEXP[0]and~XEXP[0]);
LT=(EXPsame[1]and YEXP[0]and~XEXP[0])or
(EXPdiffr[1]and XEXP[0]and~YEXP[0]);
EQ=EXPsame[0]。
在步骤250,产生作为所产生的多个指数差信号及第一运算数和第二运算数的尾数的函数的近路径减法结果。在步骤240,通过将第一浮点数和第二浮点数的尾数相减来计算尾数差。在一些实施例中,然后使用与第一浮点运算数和第二浮点运算数相关联的指数来确定与较小指数相关联的尾数。然后,通过将与较小指数相关联的尾数移位来产生标准化尾数。然后,通过将与第一浮点运算数和第二浮点运算数相关联的标准化尾数相减来计算尾数差。在步骤260,基于所计算的尾数差来计算远路径减法结果。在一些实施例中,通过将与第一浮点运算数和第二浮点运算数相关联的指数相减来计算指数差。如果所计算的指数差不等于1、-1或0,那么然后基于所计算的尾数差来计算远路径减法结果。
在步骤270,选择作为所计算的指数差和将被选择的减法结果的状态的函数的远路径减法结果、近路径减法结果或标准结果。在这些实施例中,如果近路径减法结果是指数或尾数下溢,那么选择标准结果。在步骤280,由ALU输出所选相减结果。
尽管方法200包括在示例实施例中连续排列的步骤210-280,但本发明的其它实施例可以使用多个处理器或组织为两个或两个以上虚拟机或子处理器的单个处理器来并行执行两个或两个以上块。此外,其它实施例可以将这些块实现为两个或两个以上特定的互连硬件模块(相关控制信号和数据信号在模块之间及模块内传送)或专用集成电路的一部分。从而,上面的示例过程流程图可应用于软件、固件和/或硬件实现。
改进的MSB和进位产生方案
需要近路径减法器110/远路径减法器140的MSB/进位信号来在正确的数据对准下选择正确的减法结果。这些信号基本上早于减法结果产生,使得减法结果选择逻辑SRS 120/154可以在适当的时间产生选择信号。
这通过具有与减法器对116和150并行的独立的进位产生电路来实现。由于MSB/进位产生电路118只产生进位,所以它的内部电路比全减法器电路简单得多,并且门具有更少的输出扇出。结果,它的内部信号的产生比由近路径减法器116/远路径减法器150产生的信号快得多。参照上面描述的图1更详细地说明改进的MSB/进位产生技术的操作。
近处理路径上移位器的误差校正信号产生
在近处理路径110中,减法结果的MSB可能不在数据的最后一位的位置上。上移位预测器124预测所需的上移位量。上移位预测器124通知可能具有一位误差的上移位数量,例如,如果它预测需要上移20位,这时实际的MSB可能是在最后一位位置后的20或21位。在上移位之后,如果所得尾数在MSB处不是1,那么它意味着上移位预测器124少预测了一位,则还需要多上移一位。所以,上移位器(128)输出的MSB就象是一位上移位器的控制信号。上移位器128输出的MSB通过缓冲器传递以变得足以驱动大的选择逻辑。
为节省在该缓冲中浪费的时间,MSB必须在其它位之前产生。在上述技术中,如图1所示的上移位预测器124不但产生所需的上移位数量(它可能比实际需要的少1位),而且产生数组PRED[n-1:0],该数组的一位高而其它位低(即,一热)。高位的位置在预测器预测MSB位置所在的位置。一般地,上移位预测器124的预测以如下所述的两个步骤产生上移位数。
1.产生指示MSB预测的模式,例如,对于8位数字,如果上移位预测器124预测第一个1的位置为倒数第三位,那么所产生的模式将是001xxxxx,其中x表示0或1;
2.根据上面产生的模式产生上移位数。
通过利用额外的电路产生这样的模式,其中数据中只有一位是数字1用来指示所预测的第一个非0位,使用第一模式的输出并不占用额外的时间,并且可以与上面指示的步骤2并行产生新模式,因为步骤2和该额外的电路是独立的。下面说明可以利用上移位预测器124为8位尾数产生的一个示例模式。
为8位尾数产生的模式:patt[7:0]
New_patt[7:0]=patt[7:0]|{0,patt[7:1]}|.....{0,0,0,0,0,0,0,patt[7]}
PRED=New_patt[7:0]^{0,New_patt[7:1]}
其中,“^”表示XOR运算,并且“|”表示OR运算。
可以看出,产生上面模式不需要上移位预测器124的任何额外时间。
如果上移位预测器124是正确的,那么PRED[n-1:0]中1的位置和减法结果中MSB的位置将匹配,如下式所示:
Correct_prediction=|(PRED[n-1:0]&subtraction_result[n-1:0]);
其中“&”指AND运算。
可以看出,Correct_prediction信号的产生比上移位器占用更少的时间,结果,额外的上移位信号将在上移位器完成它的运算时准备好。
尾数下溢信号产生
是否接收减法结果的决定取决于尾数下溢信号。如果减法结果是0,那么它意味着它是尾数下溢的情况。如果该情况(尾数下溢)发生,那么选择诸如IEEE的标准结果作为最终结果,而不是基于计算的减法结果。
已开发更快的方案来利用如图1所示的尾数下溢信号产生模块132产生尾数下溢信号。如果尾数减法的结果是0,那么通常发生下溢。这意味着,如果预期的减法结果是A-B(其中A和B是与第一浮点运算数和第二浮点运算数相关联的标准化尾数),是否A=B,或者如果预期的结果是A-B-1(有舍入),是否A=B+1。尾数下溢模块(132)与减法并行地确定上面条件(即,A=B+1或A=B或其他),而不是等待减法结果用于它的分析。此外,通过将标准化尾数A和B输入到“0、1差检测算法”来检测A=B和A=B+1的条件,如下面例子:
XD[n-1:0]=({1′b0,B[n-1:1]}^{1′b0,A[n-1:1]}^(~B[n-1:0]|A[n-1:0]));
YD[n-1:0]=({1′b0,B[n-1:1]}^{1′b0,A[n-1:1]}^(~A[n-1:0]|B[n-1:0]));
YDIF=&YD;
XDIF=&XD;
(A=Bcase:)EQ=YDIIF&XDIF;
(A=B+1case:)GT=~YDIF&XDIF;
Mantissa_Underflow=select_AeqB_or_BeqA?EQ:GT
指数下溢信号产生
需要由指数下溢信号产生模块134输出的指数下溢信号来决定是将减法结果视为最终结果还是产生下溢的特殊结果。如前所述,在由ALU完成减法后,减法结果的MSB可能落在最后一位的位置之后,并且为了使其与IEEE兼容,必须将减法结果向上移位。为了照顾上移位,必须使指数减少相同量(与尾数上移位相等)。如果减少的数量导致指数变成0或为负,那么它被认为是指数下溢的情况。
在常规方案中,首先将原指数减去上移位量,然后分析减法结果以便检查减法结果是否是1、0或负数。在此之后,通过利用下式来确定指数下溢。
Exponent_underflow=(1或0或负数)&(需要1位上移校正)|(0或负数)&(无需上移位校正)。
在图1所示的实施例中,1、0或负数可以由简单的比较器来产生(如果B>=A,则A-B是0或负数),差1可以通过使用“0、1差检测算法”来确定,如前面部分所述。这将保证下溢条件不需要任何减法器和结果分析器,从而减少了进行减法所需要的总时间。
下移位后的尾数选择信号
如前所述,在远处理路径140中,需要至少一个下移位器来将具有较小指数的运算数的尾数向下移位。再如前所述,根据“大指数减小指数”的结果将具有较小指数的尾数向下移位,由于确定哪个指数较大可能占用相当多的时间,所以为了节省时间,将两个尾数都向下移位。根据“第一指数减第二指数”的结果将第二尾数向下移位,并且根据“第二指数减第一指数”的结果将第一尾数向下移位。在下移位之后,可以选择相关的下移位后的尾数,这是因为到那时较大指数信号将可用。当第二尾数和第一尾数的下移位发生时,并行逻辑确定哪个指数较小,并据此选择相应浮点运算数的下移位后的尾数。对于另一个浮点运算数,ALU选择上移位后的尾数。对于具有较大指数的浮点运算数,直接尾数选择信号变为高电平。对于另一个具有较小指数的浮点运算数,移位后的尾数选择信号只有当指数差可使下移位后的尾数不会导致是0时才变为高电平。例如,对于32位尾数,如果指数差是33,那么下移位后的尾数应变成0。为了实现它,两个选择信号都保持低电平。从而,在这种情况下,AND-OR逻辑传递0作为标准化尾数。这将0填充工作从下移位器转到尾数选择多路复用器,这节省了一些时间,但使移位后的尾数选择信号对时间要求更苛刻。块FPEC144利用新技术做该工作,并以比常规方案更少的时间来产生相同的信号。
下式说明用于具有8位指数和32位尾数的数据的新的/建议的方案的实现:
select_shifted_B=((expA[7:5]=expB[7:5])and(expA[4:0]>expB[4:0]))
or
((expA[7:5]-expB[7:5]=1)and(expB[4:0]>expA[4:0]));
select_shifted_A=((expB[7:5]==expA[7:5])and(expB[4:0]>expA[4:0]))
or
((expB[7:5]-expA[7:5]=1)and(expA[4:0]>expB[4:0]));
其中,expA和expB是第一浮点运算数和第二浮点运算数的指数。
上面通过参照上面的尾数下溢信号产生来说明的算法可用于产生(expB[7:5]-expA[7:5]=1)和(expA[7:5]-expB[7:5]=1)信号。通过使用前面参照尾数下溢部分讨论的算法,可为expA[7:5]& expB[7:5]产生XDIF和YDIF,由此给出所有所需信息,如下所示:
(expB[7:5]-expA[7:5]=1)→YDIF&~XDIF
(expA[7:5]-expB[7:5]=1)→XDIF&~YDIF
上面描述只是解释性的,而并非限制性的。许多其它实施例对本领域的技术人员来说是显而易见的。所以,本发明的范围应由所附权利要求以及这些权利要求所拥有的均等物的整个范围来确定。
Claims (7)
1.一种用于执行浮点算术运算的装置(100),包括:
近处理路径电路(110);
远处理路径电路(140),与所述近处理路径路电路(110)并行;
输入数据总线(170),用于基本上同时地将第一和第二浮点运算数提供给所述近处理路径电路(110)和所述远处理路径电路(140),其中所述第一和第二浮点运算数中的每个浮点运算数都包括符号位、尾数和指数,
其中,所述近处理路径电路(110)产生作为所述第一浮点运算数和所述第二浮点运算数中的指数模式的函数的多个指数差信号,其中所述近处理路径电路(110)基于所述指数差信号产生近路径减法结果,
其中,所述近处理路径电路(110)计算所述第一浮点运算数和所述第二浮点运算数的指数差,并且所述近处理路径电路(110)基于所计算的指数差产生指数差信号,并且
其中,所述远处理路径电路(140)计算所述第一浮点运算数和所述第二浮点运算数的尾数差,并且如果所计算的指数差不等于0、1或-1,那么所述远处理路径电路(140)基于所计算的尾数差产生远路径减法结果;以及
最终结果多路复用器(180),耦合到所述近处理路径电路(110)和所述远处理路径电路(140),并且基于所产生的指数差信号选择并输出所述远路径减法结果、所述近路径减法结果或标准结果,其中基于所述近处理路径电路(110)或所述远路径减法结果的状态选择所述标准结果。
2.如权利要求1所述的装置,其特征在于,所述近处理路径电路(110)基于下式产生作为所述第一浮点运算数和所述第二浮点运算数的指数模式的函数的GT、LT和EQ指数差信号:
GT=(EXPsame[1]and XEXP[0]and~YEXP[0])or
(EXPdiffr[1]and YEXP[0]and~XEXP[0]),
LT=(EXPsame[1]and YEXP[0]and~XEXP[0])or
(EXPdiffr[1]and XEXP[0]and~YEXP[0]),以及
EQ=EXPsame[0],
其中,“~”表示反转,EXPsame[i]=XEXP[i]xnor YEXP[i],EXPdiffr[i]=XEXP[i]xnor YEXP[i],并且GT、LT和EQ是所述指数差信号。
3.如权利要求1所述的装置,还包括:
输入逻辑电路(160),耦合到所述输入数据总线(170),以便从所述输入数据总线接收所述第一浮点运算数和所述第二浮点运算数,并提供与所述第一浮点运算数和所述第二浮点运算数相对应的多个指数和尾数。
4.如权利要求1所述的装置,其特征在于,所述近处理路径电路(110)产生作为使用与所述第一浮点运算数和所述第二浮点运算数相关联的指数的两个最低有效位的函数的多个指数差信号。
5.一种用于执行浮点算术运算方法,包括:
在输入数据总线(170)上接收第一浮点运算数和第二浮点运算数(210),其中所述第一浮点运算数和所述第二浮点运算数中的每个浮点运算数都包括符号位、尾数和指数;
在近处理路径电路(110)内产生作为所述第一浮点运算数和所述第二浮点运算数中的指数模式的函数的多个指数差信号(230);
在所述近处理路径电路(110)内产生作为所述多个指数差信号的函数的近路径减法结果(250);
在所述近处理路径电路(110)内通过将与所述第一浮点运算数和所述第二浮点运算数相关联的两个指数中较小者相关联的尾数移位,产生标准化尾数;
在所述近处理路径电路(110)内通过将所述第一浮点运算数和所述第二浮点运算数的标准化尾数相减来计算尾数差(240);
在所述近处理路径电路(110)内通过将所述第一浮点运算数和所述第二浮点运算数的指数相减来计算指数差(220);
在远处理路径电路(140)内如果所计算的指数差不等于1、-1或0,那么基于所计算的尾数差计算远路径减法结果(260);以及
在最终结果多路复用器(180)内选择作为所计算的指数差的函数的所述远路径减法结果、所述近路径减法结果或标准结果(270),其中基于所述近路径或所述远路径减法结果的状态来选择所述标准结果。
6.如权利要求5所述的方法,其特征在于,产生作为所述第一浮点运算数和所述第二浮点运算数中的指数模式的函数的多个指数差信号(230)包括:
如果指示所述第一浮点运算数和所述第二浮点运算数之间的指数差是+1,那么产生GT指数差信号;
如果指示所述第一浮点运算数和所述第二浮点运算数之间的指数差是-1,那么产生LT指数差信号;以及
如果指示所述第一浮点运算数和所述第二浮点运算数之间的指数差是0,那么产生EQ指数差信号。
7.如权利要求5所述的方法,其特征在于,产生作为所述第一浮点数和所述第二浮点数中的指数模式的函数的多个指数差信号(230)包括:
使用下式产生作为所述第一浮点运算数和所述第二浮点运算数中的指数模式的函数的GT、LT和EQ指数模式差信号:
GT=(EXPsame[1]and XEXP[0]and~YEXP[0])or
(EXPdiffr[1]and YEXP[0]and~XEXP[0]);
LT=(EXPsame[1]and YEXP[0]and~XEXP[0])or
(EXPdiffr[1]and XEXP[0]and~YEXP[0]);
EQ=EXPsame[0]。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US60138304P | 2004-08-13 | 2004-08-13 | |
US60/601,383 | 2004-08-13 | ||
US11/157,650 | 2005-06-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101040281A CN101040281A (zh) | 2007-09-19 |
CN100543723C true CN100543723C (zh) | 2009-09-23 |
Family
ID=38890217
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005800347980A Expired - Fee Related CN100543723C (zh) | 2004-08-13 | 2005-08-09 | 用于高效浮点运算器(alu)的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100543723C (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8620983B2 (en) * | 2011-01-05 | 2013-12-31 | Via Technologies, Inc. | Leading sign digit predictor for floating point near subtractor |
GB201111035D0 (en) * | 2011-06-29 | 2011-08-10 | Advanced Risc Mach Ltd | Floating point adder |
WO2022109917A1 (zh) * | 2020-11-26 | 2022-06-02 | 深圳市大疆创新科技有限公司 | 浮点运算装置、浮点运算方法、可移动平台及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4488252A (en) * | 1982-02-22 | 1984-12-11 | Raytheon Company | Floating point addition architecture |
-
2005
- 2005-08-09 CN CNB2005800347980A patent/CN100543723C/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4488252A (en) * | 1982-02-22 | 1984-12-11 | Raytheon Company | Floating point addition architecture |
Also Published As
Publication number | Publication date |
---|---|
CN101040281A (zh) | 2007-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101263467B (zh) | 浮点规格化和反规格化 | |
JP6001276B2 (ja) | 浮動小数点加算を実行するための装置および方法 | |
JP5145040B2 (ja) | 効率的浮動小数点式aluのための方法及び装置 | |
US5956263A (en) | Multiplication, division and square root extraction apparatus | |
CN106406810B (zh) | 微处理器及其方法 | |
CN101133389B (zh) | 多用途乘法-加法功能单元 | |
US6904446B2 (en) | Floating point multiplier/accumulator with reduced latency and method thereof | |
Lang et al. | Floating-point multiply-add-fused with reduced latency | |
JP3609512B2 (ja) | 演算器 | |
CN100440136C (zh) | 算术单元 | |
US5128889A (en) | Floating-point arithmetic apparatus with compensation for mantissa truncation | |
KR100264962B1 (ko) | 결합된 선두 1 및 선두 제로 예상기 | |
EP1857925A2 (en) | Method and apparatus for decimal number multiplication using hardware for binary number operations | |
CN102855117A (zh) | 浮点加法器 | |
CN101692202A (zh) | 一种64比特浮点乘加器及其浮点运算流水节拍处理方法 | |
JP2001092636A (ja) | 第1、第2、第3オペランドに浮動小数点演算を適用するためのデータ処理装置および方法 | |
CN115390790A (zh) | 一种具有融合精度转换功能的浮点乘加单元及其应用方法 | |
CN100543723C (zh) | 用于高效浮点运算器(alu)的方法 | |
CN109343823A (zh) | 基于异步控制的浮点数加法器和浮点数的相加方法 | |
US20040122886A1 (en) | High-sticky calculation in pipelined fused multiply/add circuitry | |
CN102495714B (zh) | 执行浮点减法的装置与方法 | |
US7024439B2 (en) | Leading Zero Anticipatory (LZA) algorithm and logic for high speed arithmetic units | |
US6571267B1 (en) | Floating point addition/subtraction execution unit | |
He et al. | Multiply-add fused float point unit with on-fly denormalized number processing | |
KR20030056012A (ko) | 비동기식 덧셈 곱셈 부동 소수점 연산기 |
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: 20090923 |
|
CF01 | Termination of patent right due to non-payment of annual fee |