浮点加法器电路的制作方法
【专利摘要】本发明涉及浮点加法器电路。提供执行涉及至少三个浮点数的浮点加法或减法运算的集成电路。所述浮点数的预处理是通过动态扩展尾数位的数目、确定具有最大指数的浮点数,以及使其它浮点数的尾数右移来进行的。每个经扩展尾数具有进入所述浮点运算的所述尾数的位数的至少两倍数目的位数。准确的位扩展取决于待添加的浮点数的数目。具有小于所述最大指数的指数的所有浮点数的尾数右移。右移位的数目取决于所述最大指数与相应的浮点指数之间的差值。
【专利说明】浮点加法器电路
[0001]本申请主张2013年9月5日提交的14/019,196号美国专利申请案的优先权,所述申请案以全文引用的方式并入本文中。
【技术领域】
[0002]本发明涉及在集成电路中执行浮点算术运算,并且更确切地说涉及用于浮点运算的动态位扩展以及移位技术。
【背景技术】
[0003]浮点运算通常根据IEEE754标准来实施,所述标准将浮点数定义为具有符号、尾数以及指数,其中要求总是对尾数进行规格化,因为所述标准隐含前导“ I”。然而,就电路面积以及操作时延而言,执行规格化可能是昂贵的。一些浮点运算还要求将浮点数操作数作为浮点运算的一部分进行操纵。例如,浮点加法以及减法要求浮点数操作数的尾数对准,其方式为使得浮点数操作数的指数相等。
[0004]其中若干浮点运算顺序执行(例如,在加法器树中)的情形频繁出现。此类顺序执行的运算要求对通过第一加法器级产生的尾数进行规格化,随后使进入第二加法器级的尾数对准。
【发明内容】
[0005]本发明涉及具有改进的浮点运算能力的集成电路。集成电路可以具有执行浮点运算的电路。此电路可以接收具有第一指数以及第一尾数的第一浮点数、具有第二指数以及第二尾数的第二浮点数,以及具有第三指数以及第三尾数的第三浮点数。第一、第二以及第三尾数中的每一个可以具有给定精度。所述电路可以将第一、第二以及第三尾数的给定精度扩展到较大数目以产生第一、第二以及第三经扩展尾数。较大数目可以至少大于或等于给定精度。所述电路可以进一步将第一、第二以及第三经扩展尾数右移以产生第一、第二以及第三经移位尾数并且计算第一、第二以及第三经移位尾数的总和。
[0006]应了解,本发明可以用许多方式来实施,例如程序、设备、系统、装置,计算机可读介质上的指令。下文描述本发明的若干发明性实施例。
[0007]在某些实施例中,当将第一、第二以及第三经扩展尾数向右移位时,上述电路可以比较第一、第二以及第三指数以确定主指数。主指数可以等于选定的指数,所述选定的指数大于或等于第一、第二以及第三指数中的每一个。响应于确定第三指数是主指数,电路可以从主指数中减去第一指数以产生第一位数目并且从主指数中减去第二指数以产生第二位数目。
[0008]在其它情况下,电路可以进一步将第一经扩展尾数右移第一位数目以产生第一经移位尾数、将第二经扩展尾数右移第二位数目以产生第二经移位尾数,并且将第三经扩展尾数提供为第三经移位尾数。
[0009]本发明的另外特征、其性质以及各种优点将从附图以及以下对优选实施例的详细描述中更加清楚可见。
【专利附图】
【附图说明】
[0010]图1是根据本发明的实施例的说明性集成电路的图示。
[0011]图2是根据本发明的实施例的说明性单精度浮点数的图示。
[0012]图3是根据本发明的实施例的两个说明性连续浮点加法器级的图示。
[0013]图4A是根据本发明的实施例的基于两个浮点数的相应指数的大小来路由所述两个浮点数的说明性电路的图示。
[0014]图4B是根据本发明的实施例的基于四个浮点数的相应指数的大小来路由所述四个浮点数的说明性电路的图示。
[0015]图5是根据本发明的实施例的通过动态位扩展产生的说明性经扩展尾数的图示。
[0016]图6是根据的本发明的实施例的使浮点数的尾数对准的说明性移位技术的图示。
[0017]图7是根据本发明的实施例的对浮点加法的结果进行的说明性规格化运算的图
/Jn ο
[0018]图8是根据本发明的实施例的用于使用动态位扩展以及移位技术来将浮点数相加的说明性步骤的流程图。
【具体实施方式】
[0019]本发明的实施例涉及在集成电路中执行浮点算术运算,并且更确切地说涉及用于浮点运算的动态位扩展以及移位技术。
[0020]浮点运算通常根据IEEE754标准来实施,所述标准将浮点数定义为具有符号、尾数以及指数,并且其中要求总是对尾数进行规格化,因为所述标准隐含前导“I”。此外,浮点加法以及减法要求浮点数操作数的尾数对准,其方式为使得浮点数操作数的指数等值。
[0021]其中若干浮点加法或减法运算顺序执行的情形(例如,在树状结构中两个以上数的相加)频繁出现。此类顺序执行的加法或减法运算要求对通过第一浮点加法或减法级产生的尾数进行规格化,随后使进入随后的浮点加法或减法级的尾数对准。然而,就电路面积以及操作时延而言,规格化以及对准运算可能是昂贵的。
[0022]可能需要实施预处理级,所述预处理级消除在连续浮点加法或减法运算之前以及之间的规格化以及对准运算,由此去除潜在的低效率。
[0023]对于所属领域的技术人员将显而易见的是,可以在没有这些具体细节中的一些或全部的情况下实践当前示例性实施例。在其它情况下,并未详细描述众所周知的运算以便不会不必要地使当前实施例模糊。
[0024]根据本发明的集成电路102的一个说明性实施例在图1中示出。
[0025]集成电路102可以包括存储且处理电路104以及输入输出电路108。存储且处理电路104可以包括嵌入式微处理器、数字信号处理器(DSP)、微控制器或其它处理电路。存储且处理电路104可以进一步具有随机存取存储器(RAM)、先进先出(FIFO)电路、堆栈或后进先出(LIFO)电路、只读存储器(R0M),或其它存储元件。输入/输出电路可以包括并行输入/输出电路、差分输入/输出电路、串行数据收发器电路,或适合于发送以及接收数据的其它输入/输出电路。导电线以及总线等内部互连资源106可以用于将数据从一个组件发送到另一个组件或将数据从一个组件广播到一个或更多个其它组件。内部互连资源106还可以包括片上网络(NoC)或其它片上互连资源。导电线以及总线、光学互连基础设施,或具有可选的中间交换机的有线以及无线网络等外部互连资源109可以用于与其它装置进行通信。
[0026]浮点数常见用于在计算系统中以科学计数法表示实数并且被设计成覆盖大数值范围以及多样化的精度要求。IEEE754标准通常用于浮点数。浮点数(例如图2中图示的浮点数)包括三个不同的部分:浮点数的符号110、尾数111以及指数112。这些部分中的每一个可以由二进制数表示,并且在IEEE754格式中具有取决于精度的不同位大小。例如,单精度浮点数(例如图2中的浮点数)需要32位,所述32位分布如下:一个符号位(位31)、八个指数位(位[30:23]),以及23个尾数位(位[22:0])。双精度浮点数需要64位,包括一个符号位(位63)、11个指数位(位[62:52]),以及52个尾数位(位[51:0])。根据IEEE754标准,尾数还可以具有额外的位。具有额外的位的尾数有时也被称为经扩展尾数。例如,经扩展单精度尾数可以具有五个额外的位(即,经扩展单精度尾数可以由28位而非23位组成)。添加到最低有效位的右侧的最后三个位表示舍入位、保护位以及粘滞位。
[0027]当执行算术运算时,舍入位以及保护位可以提供额外的精确度。例如,将在最低有效位位置中具有‘I’的尾数除以二可能导致舍入位变成‘I’。另外的除以二可能导致保护位变成‘I’。因此,舍入位以及保护位使得对小于没有这些额外的位的尾数的数字的表示能够精确地表示。粘滞位可以通过执行与舍入位以及保护位的逻辑“或”运算来记录经移位超出尾数的精度的任何值‘I’的位。
[0028]两个剩余位经相加超出最高有效位位置并且可以吸收浮点算术运算产生的任何溢出。
[0029]根据标准IEEE754的浮点数的符号使用单个位来表示,其中“O”表示正数并且“I”表示负数。
[0030]浮点数的指数优选地是无符号二进制数,所述无符号二进制数对于单精度格式而言在O到255的范围内。为了表示极小的数,有必要使用负指数。因此,指数优选地具有负偏差。对于单精度浮点数,偏差优选地是-127。例如,指数的值140实际上表示(140 —127) = 13,并且值100表示(100 — 127) =-27。对于双精度数,指数偏差优选地是-1023。
[0031]如上文所论述,根据IEEE754标准,尾数是规格化数(即,它不具有前导零并且表示浮点数的精度分量)。因为尾数以二进制格式存储,所以前导位可以是或者O或者1,但对于规格化数,它将一直是I。因此,在其中数总是被规格化的系统中,前导位不需要被存储并且可以被隐含,从而有效地给予尾数一个额外的精度位。
[0032]考虑其中四个浮点数(例如,A、B、C以及D)相加在一起的情形。这四个浮点数通过加法器树(例如,加法器树400)相加的说明性图在图3中示出。加法器树400可以包括位扩展级440、中间路由级410、移位器415A、415B和415C、加法器级420A、420B和420C、规格化级430,以及舍入级435。如图3中所示的加法器树400仅是说明性的且并不意图限制本发明的范围。如果需要,加法器树400可以具有更多或更少的加法器级,加法器树400可以接收三个或四个以上的浮点数,加法器树400可以用不同方式进行设置。例如,位扩展级以及中间路由级的次序可以颠倒;加法器级420A可以耦合到移位器415A以及415B上,而加法器级420B耦合到移位器415C以及中间路由级410上等。
[0033]如图3中所示,浮点数A、B、C以及D可以由位扩展级440接收。浮点数A、B、C以及D可以各自具有符号、指数以及尾数。位扩展级440可以扩展表示四个接收到的浮点数中每一者的尾数的位的数目,由此产生相对应的经扩展尾数。
[0034]尾数扩展的三个实施例在图5中图示。考虑其中浮点数是单精度浮点数(即,A、B、C以及D的尾数由23位表示)的情形。单精度浮点数的尾数扩展可以包括前导溢出位,以及尾部舍入位、保护位和粘滞位(例如,见图5中的510);因此使用27位来表示经扩展尾数。在另一设置中,在浮点数A、B、C以及D是双精度浮点数的情况下,通过添加前导溢出位与尾部舍入位、保护位和粘滞位来扩展的尾数可以使用56位来表示(例如,见图5中的510)。使用根据510的经扩展尾数的加法器树(例如,图3中示出的加法器树400)可能能够产生至少与在使用常规的遵循IEEE754的加法器树架构(即,在每个加法器级之前执行对准运算并且在每个加法器级之后执行规格化运算的加法器树架构)的最差情况情形下获得的总和一样精确的总和。
[0035]当使多达四个浮点数相加时,根据图5中的520的位扩展结合加法器树400可以保证产生总是至少与使用常规的遵循IEEE754的加法器树架构获得的总和一样精确的总和。根据520的位扩展可以包括舍入位、保护位和粘滞位,以及用于加法器树中的每一个加法器级的一个溢出位。例如,三个或四个浮点数的相加需要两个加法器级(即,两个溢出位),五个到八个浮点数的相加需要三个加法器级(即,三个溢出位,见图5中的530),九个到16个浮点数的相加需要四个加法器级(即,四个溢出位)等。
[0036]根据520的位扩展可以使用额外的位来产生经扩展尾数,由此额外的位的数目取决于浮点数的精度。例如,单精度浮点数的尾数可以使用23位来表示,并且根据520的位扩展可以包括用于超过一的每个另外的加法器级的23个额外零位的倍数。例如,三个或四个浮点数的相加需要两个加法器级,并且单精度浮点数的尾数扩展需要23个额外零位。五个到八个浮点数的相加需要三个加法器级并且因此需要两倍的23个额外零位(S卩,46个零位,见图5中的530)。
[0037]在加法器树产生双精度浮点数的总和的情形下,位扩展级包括52个零位的倍数。因此,三个或四个浮点数的相加需要隐含52个额外零位(见520)的两个加法器级,而五个到八个浮点数的相加需要隐含104个额外零位(见530)的三个加法器级。
[0038]在位扩展级之后,具有指数以及经扩展尾数的浮点数A、B、C以及D可以馈送到中间路由级410,如图3中所示。中间路由级可以确定浮点数A、B、C以及D中的哪一者具有最大指数并且将具有最大指数的浮点数路由到加法器级420A。中间路由级410可以将指数小于最大指数的所有浮点数与最大指数一起路由到移位器415。中间路由级410还可以将具有等于最大指数的指数的浮点数路由到移位器415。
[0039]中间路由级的一个实施例(例如中间路由级410)是图4A中示出的中间路由级450。中间路由级450可以接收浮点数A以及B的尾数和指数(即,浮点数A的尾数A和指数A以及浮点数B的尾数B和指数B)。中间路由级450可以包括比较器460以及多路复用器 470A、470B、480A 和 480B。
[0040]多路复用器470A以及470B可以各自接收浮点数A以及B的尾数。多路复用器480A和480B以及比较器460可以接收浮点数A以及B的指数。比较器460可以比较浮点数A以及B的指数。比较的结果可以用于选择在级450中的多路复用器的输入端。
[0041]例如,多路复用器470A以及480A可以通过比较的结果引导来分别选择具有较大指数的浮点数的尾数以及指数。类似地,多路复用器470B以及480B可以通过比较的结果引导来分别选择具有较小指数的浮点数的尾数以及指数。
[0042]中间路由级的另一实施例(例如图3中的中间路由级410)是图4B中的中间路由级490。中间路由级490可以接收四个浮点数A、B、C以及D。
[0043]如图所示,中间路由级490可以使用树状结构中的中间路由级450,其中中间路由级450A确定在浮点数A与B之间具有较大指数的浮点数,并且中间路由级450B确定在C与D之间具有较大指数的浮点数。中间路由级450C可以接收来自中间路由级450A以及450B的具有较大指数的浮点数并且产生具有所有四个浮点数A、B、C以及D中最大指数的浮点数。
[0044]图3的中间路由级410可以将具有小于最大指数的指数的所有浮点数与最大指数一起路由到移位器415。移位器的一个实施例(例如移位器415)是图6中示出的移位器600。移位器600可以接收浮点数(例如浮点数J)的尾数以及指数。移位器600还可以接收通过图3的加法器树400接收的所有浮点数的最大指数。移位器600可以使用减法器(例如减法器610)从最大指数中减去浮点数的指数。最大指数与浮点数的指数之间的差值可以确定浮点数的尾数通过右移位器620向右移位的位位置的数目。
[0045]移位器415(例如,移位器415A、415B以及415C)可以将经移位尾数提供给加法器420。以此方式提供在移位器415的输出端处的浮点数已经恰当地被对准。
[0046]加法器级420A以及420B可以接收来自中间路由级410以及移位器415的经对准浮点数,如图3中所示。取决于接收到的操作数的符号,加法器级420A以及420B可以实施加法或者减法。例如,在从中间路由级410以及移位器415A接收到的浮点数的符号相同的情形下,加法器级420A可以将接收到的浮点数的尾数相加并且将所得的浮点数E发送到加法器级420C。浮点数E可以包括经对准尾数、符号位以及最大指数的总和。
[0047]在从移位器415B以及415C接收到的浮点数具有不同符号的情形下,加法器级420B可以将从移位器415B以及415C接收到的浮点数的接收尾数相减。加法器级420B还可以通过比较正以及负浮点数的量值来确定符号位。替代地,减法运算可以例如通过将符号换成正、将尾数转换成其二进制补码,并且执行加法来实施。此运算的结果可能是负的。在此情况下,尾数需要再次转换成其二进制补码并且使符号变反以指示负数。在此情形下,加法器级420B可以将所得的浮点数F发送到加法器级420C,所述浮点数F由尾数的差值、所得的符号位以及最大指数组成。
[0048]第二加法器级420C可以取决于符号位来实施加法或减法,如上文所说明的。任何加法器级(例如加法器级420A、420B或420C)都可能产生溢出(即,在小数点前方具有超过一个位的浮点数)。在加法器级产生溢出的情形下,加法器树400可以将表示总和的浮点数规格化。出于此目的,加法器级420C可以将加法或减法的结果发送到规格化级430。
[0049]规格化级(例如规格化框430)的一个说明性实施例示出为图7中的规格化级700,所述实施例可以将加法器级420C的结果转换成以IEEE754标准格式表示的相同值。框710可以确定在尾数中溢出位中第一个“I”的位置以识别隐含的前导“I”。尾数随后在框720中被右移在框710中发现的数目以获得前导“I”。在减法的情况下,尾数可以具有替代前导“ I ”位置的一定数目的前导零。
[0050]框740可以确定在尾数中的前导零的数目。尾数随后在框750中被左移在框740中发现的数目以获得前导“1”,所述前导“I”随后被消除,因为IEEE754标准隐含前导“I”。
[0051]为了转换最大指数,第一偏移调整通过加法器730加到指数上以说明框720中的右移运算。第二偏移调整可以通过减法器760从指数中减掉以说明框750中的左移运算。因此,最大指数的总偏移调整由在框710中确定的前导“I”位置的数目以及在框740中确定的前导零的数目之间的差值来确定。
[0052]规格化浮点数的任何必需的舍入在图3的框435中执行。在框435中的舍入可以使用不同的舍入方案。例如,向上舍入、向下舍入、趋向零舍入(所述趋向零舍入有时也称为截断)或向最接近值舍入等舍入方案,其中最接近值可以是整数、偶值、奇值或可代表的值。向最接近值舍入可能产生连结(tie)。在此情况下,第二种向最接近值舍入方法可以用作连结中断器。例如,向最接近整数舍入方法可以与向最接近偶数方法合并作为连结中断器。
[0053]用于执行浮点算术运算的说明性步骤在图8的流程图中示出。在步骤810期间,浮点算术运算符(例如图3中的加法器树400)可以接收多个浮点数。在步骤820期间,可以扩展浮点数的尾数。例如,可以将尾随零添加到尾数上以增加精度。另外的尾随零可以充当舍入位、保护位以及粘滞位。还可以添加前导位以吸收潜在的溢出。
[0054]在步骤830期间可以确定在接收到的多个浮点数中具有最大指数的浮点数,并且在步骤840期间可以使所有浮点数的尾数向右移位。给定浮点数的尾数向右移位的量可以取决于最大指数与给定浮点数的指数之间的差值。因此,具有等于最大指数的指数的浮点数的尾数可以不进行移位。
[0055]在步骤850期间,可以产生所有尾数的总和,随后是在步骤860期间对总和的规格化以及舍入。
[0056]本文中所描述的方法和设备可以并入到任何合适的集成电路或集成电路的系统中。例如,所述方法和设备可以并入到许多类型的装置中,例如微处理器或其它1C。示例性IC包括可编程阵列逻辑(PAL)、可编程逻辑阵列(PLA)、现场可编程逻辑阵列(FPLA)、电可编程集成电路(EPLD)、电可擦除可编程集成电路(EEPLD)、逻辑单元阵列(LCA)、现场可编程门阵列(FPGA)、专用标准产品(ASSP)、专用集成电路(ASIC),仅举几例。
[0057]本文中所描述的集成电路可以是包括以下组件中的一个或更多的数据处理系统的一部分:处理器、存储器、I/O电路以及外围装置。数据处理系统可以用于多种多样的应用中,例如,计算机网络连接、数据网络连接、仪表化、视频处理、数字信号处理或任何合适的其它应用。
[0058]尽管以特定的次序描述所述方法操作,但应理解,可以在所描述的操作之间执行其它操作,可以调整所描述的操作使得它们在稍微不同的时刻发生,或者可以将所描述的操作分布在一个系统中,所述系统允许在与处理相关联的多个间隔处发生处理操作,只要以所需方式执行对重叠操作的处理。
[0059]另外的实施例:
[0060]另外的实施例1。一种用于在集成电路上执行浮点运算的方法,其包含:接收具有第一指数以及第一尾数的第一浮点数、具有第二指数以及第二尾数的第二浮点数,以及具有第三指数以及第三尾数的第三浮点数,其中第一、第二以及第三尾数中的每一者具有给定精度;增加第一、第二以及第三尾数的给定精度以产生相对应的第一、第二以及第三经扩展尾数,其中较大数目至少是给定精度的两倍;以及产生第一、第二以及第三经扩展尾数的总和。
[0061]另外的实施例2。根据另外的实施例1所述的方法,其中产生第一、第二以及第三经扩展尾数的总和包含:将第一、第二以及第三经扩展尾数右移以产生第一、第二以及第三经移位尾数;以及利用加法器,计算第一、第二以及第三经移位尾数的总和。
[0062]另外的实施例3。根据另外的实施例2所述的方法,其中将第一、第二以及第三经扩展尾数右移包含:比较第一、第二以及第三指数以识别主指数,其中主指数至少等于第一、第二以及第三指数中的每一个。
[0063]另外的实施例4。根据另外的实施例3所述的方法,其进一步包含:响应于将第三指数识别为主指数,从主指数中减去第一指数以计算第一数目的位并且从主指数中减去第二指数以计算第二数目的位。
[0064]另外的实施例5。根据另外的实施例4所述的方法,其中将第一、第二以及第三经扩展尾数右移包含:将第一经扩展尾数右移第一数目的位以产生第一经移位尾数;将第二经扩展尾数右移第二数目的位以产生第二经移位尾数;以及将第三经扩展尾数用作第三经移位尾数。
[0065]另外的实施例6。根据另外的实施例3所述的方法,其进一步包含:基于在总和中的前导一的位置确定调整数目;基于调整数目将总和右移一定数目的位以产生经调整总和;以及将调整数目加到主指数上以计算经调整指数。
[0066]另外的实施例7。根据另外的实施例6所述的方法,其进一步包含:确定经调整总和的前导零的数目;基于所述前导零的数目将经调整总和左移一定数目的位;以及从经调整指数中减去前导零的数目。
[0067]另外的实施例8。根据另外的实施例1所述的方法,其中增加所述第一、第二以及第三尾数的给定精度包含:将一定数目的溢出位插入到第一、第二以及第三尾数中的每一个中,其中溢出位的数目是基于待添加的尾数数目;以及将舍入位、保护位以及粘滞位串接到第一、第二以及第三尾数中的每一个上以产生第一、第二以及第三经部分扩展尾数。
[0068]另外的实施例9。执行浮点运算的电路,其包含:至少三个输入端,其中所述输入端中的每一个接收具有指数以及给定精度的尾数的浮点数;接收来自输入端的浮点数并且为接收到的浮点数中的每一个产生至少两倍的给定精度的经扩展尾数的位扩展电路;以及具有输入端以及输出端的浮点处理电路,所述浮点处理电路在输入端处接收来自位扩展电路的具有经扩展尾数的浮点数并且在输出端处产生浮点数的总和。
[0069]另外的实施例10。根据另外的实施例9所述的电路,其进一步包含:规格化电路,所述规格化电路接收来自浮点处理电路的总和并且根据要求隐含前导位的标准来转换所述总和。
[0070]另外的实施例11。根据另外的实施例9所述的电路,其中位扩展电路将一定数目的尾随零添加到浮点数中每一个的尾数上,并且其中尾随零的数目是基于给定精度。
[0071]另外的实施例12。根据另外的实施例11所述的电路,其中位扩展电路将一定数目的前导零添加到浮点数中每一个的尾数上以防止溢出。
[0072]另外的实施例13。根据另外的实施例9所述的电路,其中浮点处理电路包含:中间级,所述中间级接收来自输入端的具有经扩展尾数的浮点数并且基于经扩展尾数以及接收到的浮点数的指数产生经移位尾数;以及算术运算符电路,所述算术运算符电路接收来自中间级的具有经移位尾数的浮点数并且计算浮点数的总和。
[0073]另外的实施例14。根据另外的实施例13所述的电路,其中中间级进一步包含:具有输入端以及输出端的右移级,其中右移级的输出端耦合到算术运算符电路上;以及具有输入端以及输出端的中间路由级,其中中间路由级的输入端耦合到位扩展电路上并且中间路由级的输出端耦合到右移级以及算术运算符电路上,并且其中所述中间路由级接收来自位扩展电路的浮点数并且选择性地将浮点数路由到右移级的输入端以及到算术运算符电路。
[0074]另外的实施例15。根据另外的实施例14所述的电路,其中中间路由级进一步包含:比较器,所述比较器耦合到中间路由级的输入端上,所述比较器接收具有经扩展尾数的浮点数的指数,并且所述比较器通过比较浮点数的指数产生比较结果。
[0075]另外的实施例16。根据另外的实施例15所述的电路,其中所述中间路由级进一步包含:耦合到中间路由级的输入端以及比较器上的电路,所述电路接收具有经扩展尾数的浮点数以及比较结果,所述电路基于比较结果选择浮点数的第一以及第二子集,并且所述电路将第二子集以及第一子集的浮点数中一个的指数路由到右移级并且将第一子集路由到算术运算符电路。
[0076]另外的实施例17。根据另外的实施例16所述的电路,其中右移级接收第二子集以及第一子集的浮点数中一个的指数,并且其中右移级通过使经扩展尾数右移产生第二子集的每个浮点数的经移位尾数。
[0077]另外的实施例18。一种用于使用集成电路来处理至少三个浮点数以执行浮点运算的方法,其中所述浮点数中的每一个包含具有给定数目的精度位的尾数以及指数,所述方法包含:将一定数目的位串接到浮点数中每一个的尾数上以产生具有经扩展尾数的相对应的浮点数,其中所述位的数目是至少所述精度位的给定数目的两倍;以及利用比较器,识别浮点数的第一以及第二子集,其中在第一子集中的浮点数的指数彼此相等并且大于在第二子集中的浮点数的指数。
[0078]另外的实施例19。根据另外的实施例18所述的方法,其中所述位的数目是基于浮点运算中所涉及的浮点数的数目。
[0079]另外的实施例20。根据另外的实施例18所述的方法,其进一步包含:对于在第二子集中的浮点数中的每一个,计算移位的数目并且将经扩展尾数右移经计算的移位数目。
[0080]另外的实施例21。根据另外的实施例20所述的方法,其中为在第二子集中的第一浮点数计算移位的数目进一步包含:计算在第一子集中的浮点数中一个的指数与第一浮点数的指数之间的差值。
[0081]另外的实施例22。根据另外的实施例20所述的方法,其进一步包含:将一定数目的溢出位插入到经扩展尾数中的每一个中,其中溢出位的数目是基于浮点运算中所涉及的浮点数的数目。
[0082]前文仅说明本发明的原理,并且在不脱离本发明的精神和范围的情况下,所属领域的技术人员可以进行各种修改。前述实施例可以单独地或以任何组合实施。
【权利要求】
1.一种用于在集成电路上执行浮点运算的方法,其包含: 接收具有第一指数以及第一尾数的第一浮点数、具有第二指数以及第二尾数的第二浮点数,以及具有第三指数以及第三尾数的第三浮点数,其中所述第一、第二以及第三尾数中的每一个都具有给定精度; 增大所述第一、第二以及第三尾数的所述给定精度以产生相对应的第一、第二以及第三经扩展尾数,其中较大数目至少是所述给定精度的两倍;以及产生所述第一、第二以及第三经扩展尾数的总和。
2.根据权利要求1所述的方法,其中产生所述第一、第二以及第三经扩展尾数的所述总和包含: 将所述第一、第二以及第三经扩展尾数右移以产生第一、第二以及第三经移位尾数;以及 利用加法器,计算所述第一、第二以及第三经移位尾数的总和。
3.根据权利要求2所述的方法,其中将所述第一、第二以及第三经扩展尾数右移包含: 比较所述第一、第二以及第三指数以识别主指数,其中所述主指数至少等于所述第一、第二以及第三指数中的每一个。
4.根据权利要求3所述的方法,其进一步包含: 响应于将所述第三指数识别为所述主指数,从所述主指数中减去所述第一指数以计算第一数目的位并且从所述主指数中减去所述第二指数以计算第二数目的位。
5.根据权利要求4所述的方法,其中将所述第一、第二以及第三经扩展尾数右移包含: 将所述第一经扩展尾数右移所述第一数目的位以产生所述第一经移位尾数; 将所述第二经扩展尾数右移所述第二数目的位以产生所述第二经移位尾数;以及 将所述第三经扩展尾数用作所述第三经移位尾数。
6.根据权利要求3所述的方法,其进一步包含: 基于在所述总和中前导一的位置确定调整数目; 基于所述调整数目将所述总和右移一定数目的位以产生经调整总和;以及 将所述调整数目加到所述主指数上以计算经调整指数。
7.根据权利要求6所述的方法,其进一步包含: 确定所述经调整总和的前导零的数目; 基于所述前导零的数目将所述经调整总和左移一定数目的位;以及 从所述经调整指数中减去所述前导零的数目。
8.根据权利要求1所述的方法,其中增大所述第一、第二以及第三尾数的所述给定精度包含: 将一定数目的溢出位插入到所述第一、第二以及第三尾数中的每一个中,其中所述溢出位的数目是基于待添加的尾数的数目;以及 将舍入位、保护位以及粘滞位串接到所述第一、第二以及第三尾数中的每一个上以产生第一、第二以及第三经部分扩展尾数。
9.一种执行浮点运算的电路,其包含: 至少三个输入端,其中所述输入端中的每一个接收具有指数以及给定精度的尾数的浮点数; 位扩展电路,所述位扩展电路接收来自所述输入端的所述浮点数并且为所接收到的浮点数中的每一个产生至少两倍的所述给定精度的经扩展尾数;以及 具有输入端以及输出端的浮点处理电路,所述浮点处理电路在所述输入端处接收来自所述位扩展电路的具有所述经扩展尾数的所述浮点数并且在所述输出端处产生所述浮点数的总和。
10.根据权利要求9所述的电路,其进一步包含: 规格化电路,所述规格化电路接收来自所述浮点处理电路的所述总和并且根据要求隐含前导位的标准来转换所述总和。
11.根据权利要求9所述的电路,其中所述位扩展电路将一定数目的尾随零添加到所述浮点数中每一个的所述尾数上,并且其中所述尾随零的数目是基于所述给定精度。
12.根据权利要求11所述的电路,其中所述位扩展电路将一定数目的前导零添加到所述浮点数中的每一个的所述尾数上以防止溢出。
13.根据权利要求9所述的电路,其中所述浮点处理电路包含: 中间级,所述中间级接收来自所述输入端的具有所述经扩展尾数的所述浮点数并且基于所述经扩展尾数以及所述接收到的浮点数的所述指数产生经移位尾数;以及 算术运算符电路,所述算术运算符电路接收来自所述中间级的具有所述经移位尾数的所述浮点数并且计算所述浮点数的总和。
14.根据权利要求13所述的电路,其中所述中间级进一步包含: 具有输入端以及输出端的右移级,其中所述右移级的所述输出端耦合到所述算术运算符电路上;以及 具有输入端以及输出端的中间路由级,其中所述中间路由级的所述输入端耦合到所述位扩展电路上并且所述中间路由级的所述输出端耦合到所述右移级以及所述算术运算符电路上,并且其中所述中间路由级接收来自所述位扩展电路的所述浮点数并且选择性地将所述浮点数路由到所述右移级的所述输入端以及到所述算术运算符电路。
15.根据权利要求14所述的电路,其中所述中间路由级进一步包含: 耦合到所述中间路由级的所述输入端上的比较器,所述比较器接收具有所述经扩展尾数的所述浮点数的所述指数,并且所述比较器通过比较所述浮点数的所述指数产生比较结果O
16.根据权利要求15所述的电路,其中所述中间路由级进一步包含: 耦合到所述中间路由级的所述输入端以及所述比较器上的电路,所述电路接收具有所述经扩展尾数的所述浮点数以及所述比较结果,所述电路基于所述比较结果选择所述浮点数的第一以及第二子集,并且所述电路将所所述第一子集的所述浮点数中一个的所述指数以及述第二子集路由到所述右移级并且将所述第一子集路由到所述算术运算符电路。
17.根据权利要求16所述的电路,其中所述右移级接收所述第一子集的所述浮点数中一个的所述指数以及所述第二子集,并且其中所述右移级通过将所述经扩展尾数右移为所述第二子集的每个浮点数产生所述经移位尾数。
18.一种用于使用集成电路来处理至少三个浮点数以执行浮点运算的方法,其中所述浮点数中的每一个包含具有给定数目的精度位的尾数以及指数,所述方法包含: 将一定数目的位串接到所述浮点数中每一个的所述尾数上以产生具有经扩展尾数的相对应浮点数,其中所述位的数目至少是所述精度位的给定数目的两倍;以及 利用比较器,识别浮点数的第一以及第二子集,其中所述第一子集中的所述浮点数的所述指数彼此相等并且大于所述第二子集中的所述浮点数的所述指数。
19.根据权利要求18所述的方法,其中所述位的数目是基于所述浮点运算中所涉及的浮点数的数目。
20.根据权利要求18所述的方法,其进一步包含: 对于所述第二子集中的所述浮点数中的每一个,通过计算所述第一子集中的所述浮点数中一个的所述指数与所述第一浮点数的所述指数之间的差值来计算移位的数目并且将所述经扩展尾数右移所计算出的移位的数目;以及 将一定数目的溢出位插入到所述经扩展尾数中的每一个中,其中所述溢出位的数目是基于所述浮点运算中所涉及的浮点数的数目。
【文档编号】G06F7/485GK104423926SQ201410452196
【公开日】2015年3月18日 申请日期:2014年9月5日 优先权日:2013年9月5日
【发明者】T·柴可夫斯基 申请人:阿尔特拉公司