浮点数运算电路及方法与流程

文档序号:17718861发布日期:2019-05-22 02:00阅读:961来源:国知局
浮点数运算电路及方法与流程

本发明是关于浮点数的运算,尤其是关于浮点数的乘法运算、乘积累加法运算(multiplicationandaccumulation,mac)及融合乘积累加法运算(fusedmultiplicationandaccumulation,fusedmac)。



背景技术:

处理器进行浮点数的算术运算时常涉及加法、减法、乘法、除法、乘积累加法、融合乘积累加法等运算。乘积累加法运算及融合乘积累加法运算皆是计算a*b+c(a、b、c皆为浮点数),但因为乘积累加法运算于乘法运算及加法运算各做一次修整(rounding),而融合乘积累加法运算仅于加法运算做一次修整,所以融合乘积累加法运算会得到相对精确的结果。习知的处理器通常对个别的运算做优化,但是对个别的运算进行优化对提升处理器的整体效能有限。因此需要一个将多种运算同时纳入考虑的优化电路,以简化电路并更加提升处理器的效能。



技术实现要素:

鉴于先前技术的不足,本发明的一目的在于提供一种浮点数运算电路及方法,以简化电路及提升处理器的效能。

本发明揭露一种浮点数运算电路,用于对一第一运算元、一第二运算元及一第三运算元进行一融合乘积累加法运算或一乘积累加法运算,或是对该第一运算元及该第二运算元进行一乘法运算。该浮点数运算电路包含一乘法电路、一选择电路、一控制电路以及一加法电路。该乘法电路接收该第一运算元及该第二运算元,并对该第一运算元及该第二运算元进行该乘法运算以产生一未经修整的积及一经修整的积。该选择电路接收该未经修整的积及该经修整的积,并输出该未经修整的积及该经修整的积的其中之一。当该浮点数运算电路执行该乘积累加法运算时,控制该选择电路输出该经修整的积,以及当该浮点数运算电路执行该融合乘积累加法运算时,控制该选择电路输出该未经修整的积。该加法电路接收该未经修整的积及该经修整的积的其中之一以及该第三运算元,并将该未经修整的积及该经修整的积的其中之一与该第三运算元相加,以得到一运算结果,其中该运算结果为该融合乘积累加法运算或该乘积累加法运算的结果。该加法电路的总输入位数大于两倍的该第一运算元、第二运算元或第三运算元的位数。

本发明另揭露一种浮点数运算方法,用于对一第一运算元、一第二运算元及一第三运算元进行一融合乘积累加法运算或一乘积累加法运算,或是对该第一运算元及该第二运算元进行一乘法运算。该方法包含以下步骤:以一乘法电路接收该第一运算元及该第二运算元,并以该乘法电路对该第一运算元及该第二运算元进行该乘法运算以产生一未经修整的积及一经修整的积;以一选择电路接收该未经修整的积及该经修整的积,并输出该未经修整的积及该经修整的积的其中之一;当该乘积累加法运算被执行时,控制该选择电路输出该经修整的积,以及当该融合乘积累加法运算被执行时,控制该选择电路输出该未经修整的积;以及以一加法电路接收该未经修整的积及该经修整的积的其中之一以及该第三运算元,并以该加法电路对该未经修整的积及该经修整的积的其中之一与该第三运算元进行一加法运算,以得到一运算结果,其中该运算结果为该融合乘积累加法运算或该乘积累加法运算的结果。该加法电路的总输入位数大于两倍的该第一运算元、第二运算元或第三运算元的位数。

本发明的浮点数运算电路及方法整合浮点数的乘法运算、乘积累加法运算及融合乘积累加法运算。相较于传统技术,本发明之浮点数运算电路及方法同时为此三种运算进行优化,以提升处理器的效能及简化电路。

有关本发明的特征、实作与功效,兹配合图式作实施例详细说明如下。

附图说明

[图1]为本发明浮点数运算电路的计算部分的电路图;

[图2]为本发明浮点数运算方法的计算部分的流程图;

[图3]为本发明浮点数运算电路的侦测部分的一实施例的电路图;

[图4]为本发明浮点数运算方法的侦测部分的一实施例的流程图;

[图5]为本发明浮点数运算电路的侦测部分的另一实施例的电路图;以及

[图6]为本发明浮点数运算方法的侦测部分的另一实施例的流程图。

具体实施方式

以下说明内容的技术用语是参照本技术领域的习惯用语,如本说明书对部分用语有加以说明或定义,该部分用语的解释以本说明书的说明或定义为准。

本发明的揭露内容包含浮点数运算电路及方法。由于本发明的浮点数运算电路所包含的部分组件单独而言可能为已知组件,因此在不影响该装置发明之充分揭露及可实施性的前提下,以下说明对于已知组件的细节将予以节略。此外,本发明的浮点数运算方法的部分或全部流程可以藉由本发明的浮点数运算电路或其等效装置来执行,在不影响该方法发明的充分揭露及可实施性的前提下,以下方法发明的说明将着重于步骤内容而非硬件。

图1系本发明浮点数运算电路的计算部分的电路图。图中以双精度(doubleprecision)(以一个位表示正负号、以11个位表示指数部分、以52个位表示有效数(significand)的小数部分)为例,但本发明亦可应用于ieee754-2008所定义之其它精度。浮点数运算电路的计算架构100用来进行浮点数的一般计算(包含乘法运算、乘积累加法运算及融合乘积累加法运算),包含乘法电路110、修整电路112、选择电路120、加法电路130、修整电路132及控制电路140。浮点数运算电路的计算架构100藉由共享或重复使用乘法电路110及加法电路130来同时优化此三种运算,以提升电路效能及节省电路面积。

图2为本发明浮点数运算方法的计算部分的流程图,此流程图对应于图1的电路图。首先,乘法电路110于阶段1接收运算元a及b(步骤s210),接着乘法电路110对运算元a及b进行乘法运算,并产生乘积d以及乘积d_r(步骤s220)。乘积d为未经修整、正规化(normalize)或截断(rounding/truncate)的结果,乘积d_r则为乘积d经修整电路112修整、正规化或截断后的结果。乘积d_r的位数与运算元a及b相同。修整电路112根据预设的修整模式进行修整,例如四舍五入(round-to-nearest)、往正数近似(round-toward-positive)、往负数近似(round-toward-negative)或往零近似(round-toward-zero)。修整电路112可以包含于乘法电路110中;或者乘法电路110与修整电路112可以是独立的电路。

浮点数运算电路的计算架构100的乘法运算的运算结果r_no1=d_r在阶段1输出(步骤s230)。乘积d及乘积d_r在阶段2输入选择电路120(步骤s235)。接下来控制电路140判断浮点数运算电路的计算架构100对运算元a、b及c进行乘积累加法运算或融合乘积累加法运算(步骤s240),并对应控制选择电路120输出乘积d或乘积d_r。当乘积累加法运算被执行时,控制电路140控制选择电路120输出乘积d_r,以及加法电路130在阶段2将运算元c与乘积d_r相加(步骤s250);当融合乘积累加法运算被执行时,控制电路140控制选择电路120输出乘积d,以及加法电路130在阶段2将运算元c与乘积d相加(步骤s260)。请注意,加法电路130可以在阶段1或阶段2接收运算元c。最后,修整电路132修整加法电路130所输出和(步骤s270),而得到运算结果r_no2。更详细地说,依据选择电路120的选择结果,修整电路132对c+d的结果或是c+d_r的结果进行修整。运算结果r_no2的位数与运算元a、b及c相同。浮点数运算电路的计算架构100输出运算结果r_no2作为乘积累加法运算或融合乘积累加法运算的结果(步骤s280)。修整电路132可以包含于加法电路130中;或者加法电路130与修整电路132可以是独立的电路。上述的阶段2位于阶段1之后。

浮点数运算电路的计算架构100根据工作时钟动作;更明确地说,乘法电路110、修整电路112、选择电路120、加法电路130、修整电路132及控制电路140根据工作时钟动作。乘法电路110为管线化的电路,且占用工作时钟的至少一周期;也就是说,从接收运算元a、b至产生运算结果r_no1,乘法电路110至少经过一个工作时钟的周期。类似地,加法电路130为管线化的电路,且占用该时钟的至少一周期;也就是说,从接收运算元c及乘积(d或d_r)至产生运算结果r_no2,加法电路130至少经过一个工作时钟的周期。

如图1所示的电路,乘法电路110除了负责乘法运算(a*b)之外,还负责乘积累加法运算(a*b+c)及融合乘积累加法运算(a*b+c)的乘法部分。再者,因为加法电路130负责乘积累加法运算及融合乘积累加法运算的加法部分,所以加法电路130分配给其中一个运算元(运算元c)一般的位数(视浮点数运算电路的计算架构100所设计的精度而定),分配给另一个运算元(d或d_r)未经修整的位数。以双精度为例,加法电路130的总输入位数为64位+119位,其中,119位中的1、12及106个位分别用于表示正负号、指数部分及有效数的小数部分。作为比较,单纯用于乘积累加法运算运算(亦即不与融合乘积累加法运算共享)的加法电路的总输入位数为64位+64位。

图3系本发明浮点数运算电路之侦测部分的一实施例的电路图,浮点数运算电路的侦测架构300用来侦测浮点数运算的特殊值(specialvalue),包含侦测电路310、侦测电路320、侦测电路330、并集(union)电路340、选择电路350及控制电路360。控制电路360可以与图1的控制电路140共享电路,亦或是两者以独立的电路实作。浮点数运算电路的侦测架构300用于侦测运算元a、b及c是否为特殊值。当运算元a、b及c的一部分或全部为特殊值时,乘法运算、乘积累加法运算及融合乘积累加法运算的运算结果可以由浮点数运算电路的侦测架构300产生,而不需经过浮点数运算电路的计算架构100的计算。特殊值包含±0、±∞、非数值(notanumber,nan)、非规格化数(subnormal)等等。举例来说,以下运算的结果可以由浮点数运算电路的侦测架构300决定,而不需经过浮点数运算电路的计算架构100的计算:

±∞*0=nan(1)

±∞*f1=±∞(2)

±0*f1=±0(3)

±0+f1=f1(4)

f1*f2+nan=nan(5)

其中f1及f2为非特殊值的浮点数且为非规格化数。范例(1)至(5)仅作为例示,非用以限定本发明。

侦测电路310对应于乘法运算,侦测电路320对应于融合乘积累加法运算,以及侦测电路330对应于加法运算。侦测电路310、侦测电路320及侦测电路330更对应地输出运算的状态旗标(statusflag)。根据ieee754-2008的定义,状态旗标包含(1)无效运算(invalidoperation)、(2)除以零(dividedbyzero)、(3)溢位(overflow)、(4)欠位(underflow)、(5)非精确(inexact)。除了这五种之外,状态旗标还可包含使用者定义的旗标。

图4为本发明浮点数运算方法之侦测部分的一实施例的流程图,此流程图对应于图3的电路图。浮点数运算电路的侦测架构300于阶段1接收运算元a及b(由侦测电路310接收)或运算元a、b及c(由侦测电路320接收)(步骤s410)。侦测电路310于阶段1根据运算元a及b产生侦测结果r_sp1及旗标flag1(步骤s420),侦测结果r_sp1及旗标flag1对应乘法运算。侦测结果r_sp1例如是上述特殊值的其中之一。举例来说,如果运算元a及b的至少其中之一为特殊值,导致乘法运算为无效运算或是不需运算,则乘法运算的运算结果由侦测电路310在阶段1产生,而不需经由乘法电路110的计算。

侦测电路320于阶段1根据运算元a、b及c产生侦测结果r_sp2及旗标flag2(步骤s430),侦测结果r_sp2及旗标flag2对应融合乘积累加法运算。侦测结果r_sp2例如是上述特殊值的其中之一。举例来说,如果运算元a、b及c的至少其中之一为特殊值,导致融合乘积累加法运算为无效运算或是不需运算,则融合乘积累加法运算的运算结果由侦测电路320在阶段1产生,而不需经由乘法电路110及加法电路130的计算。

侦测电路330于阶段2根据侦测结果r_sp1及运算元c产生侦测结果r_sp3及中间旗标flag’(步骤s440)。并集电路340根据旗标flag1及中间旗标flag’产生旗标flag3(步骤s450),更明确地说,并集电路340将旗标flag1及中间旗标flag’做逐位或运算(bitwiseoroperation),以产生旗标flag3。侦测结果r_sp3及旗标flag3对应乘积累加法运算。

选择电路350于阶段2从侦测电路320接收侦测结果r_sp2及旗标flag2、从侦测电路330接收侦测结果r_sp3以及从并集电路340接收旗标flag3(步骤s455)。接下来控制电路360判断浮点数运算电路的侦测架构300对运算元a、b及c进行乘积累加法运算或融合乘积累加法运算(步骤s460),并控制选择电路350输出(r_sp2,flag2)或(r_sp3,flag3)以作为最终的侦测结果r_sp4及最终的旗标flag4。当乘积累加法运算被执行时,控制电路360控制选择电路350在阶段2输出侦测结果r_sp3及旗标flag3(步骤s470);当融合乘积累加法运算被执行时,控制电路360控制选择电路350在阶段2输出侦测结果r_sp2及旗标flag2(步骤s480)。

图5系本发明浮点数运算电路之侦测部分的另一实施例的电路图,浮点数运算电路的侦测架构500用来侦测浮点数运算的特殊值,包含侦测电路510、侦测电路520、侦测电路530、并集电路540、选择电路550及控制电路560。控制电路560可以与图1的控制电路140共享电路,亦或是两者以独立的电路实作。浮点数运算电路的侦测架构500用于侦测运算元a、b及c是否为特殊值。当运算元a、b及c的一部分或全部为特殊值时,乘法运算、乘积累加法运算及融合乘积累加法运算的运算结果可以由浮点数运算电路的侦测架构500产生,而不需经过浮点数运算电路的计算架构100的计算。侦测电路510对应于乘法运算,侦测电路520对应于融合乘积累加法运算,以及侦测电路530对应于加法运算。侦测电路510、侦测电路520及侦测电路530更对应地输出运算的状态旗标。

图6为本发明浮点数运算方法之侦测部分的另一实施例的流程图,此流程图对应于图5的电路图。浮点数运算电路的侦测架构500于阶段1接收运算元a及b(由侦测电路510接收)或运算元a、b及c(由侦测电路520接收)(步骤s610)。侦测电路510于阶段1根据运算元a及b产生侦测结果r_sp1及旗标flag1(步骤s620),侦测结果r_sp1及旗标flag1对应乘法运算。侦测结果r_sp1例如是上述特殊值的其中之一。举例来说,如果运算元a及b的至少其中之一为特殊值,导致乘法运算为无效运算或是不需运算,则乘法运算的运算结果由侦测电路510在阶段1产生,而不需经由乘法电路110的计算。

侦测电路520于阶段1根据运算元a、b及c产生侦测结果r_sp2及旗标flag2(步骤s630),侦测结果r_sp2及旗标flag2对应融合乘积累加法运算。侦测结果r_sp2例如是上述特殊值的其中之一。举例来说,如果运算元a、b及c的至少其中之一为特殊值,导致融合乘积累加法运算为无效运算或是不需运算,则乘法运算的运算结果由侦测电路520在阶段1产生,而不需经由乘法电路110及加法电路130的计算。

选择电路550于阶段1从侦测电路510接收侦测结果r_sp1及旗标flag1、从侦测电路520接收侦测结果r_sp2及旗标flag2(步骤s635)。接下来控制电路560判断浮点数运算电路的侦测架构500系进行乘法运算或融合乘积累加法运算(步骤s640),并控制选择电路550输出(r_sp1,flag1)或(r_sp2,flag2)以作为阶段1的侦测结果r_sp4及阶段1的旗标flag4。当乘法运算被执行时,控制电路560控制选择电路550在阶段1输出侦测结果r_sp1及旗标flag1(步骤s650);当融合乘积累加法运算被执行时,控制电路560控制选择电路550在阶段1输出侦测结果r_sp2及旗标flag2(步骤s660)。

侦测电路530于阶段2根据侦测结果r_sp1及运算元c产生侦测结果r_sp3及中间旗标flag’(步骤s670)。并集电路540根据旗标flag1及中间旗标flag’产生旗标flag3(步骤s680),更明确地说,并集电路540将旗标flag1及中间旗标flag’做逐位或运算,以产生旗标flag3。侦测结果r_sp3及旗标flag3对应乘积累加法运算,并且于阶段2输出(步骤s690)。

侦测电路310~330以及侦测电路510~530可以由逻辑电路实作,且该些侦测电路如何根据输入值产生侦测结果及旗标为本技术领域具有通常知识者所熟知,故不再赘述。

图1的浮点数运算电路的计算架构100可以与图3的浮点数运算电路的侦测架构300或图5的浮点数运算电路的侦测架构500组成本发明的浮点数运算电路。在图1与图3组合的实施例中,乘法运算的结果(一般计算的结果r_no1或是特殊值的侦测结果r_sp1)在阶段1输出,而乘积累加法运算或融合乘积累加法运算的结果(一般计算的结果r_no2或是特殊值的侦测结果r_sp4)在阶段2输出。在图1与图5组合的实施例中,乘法运算的结果(一般计算的结果r_no1或是特殊值的侦测结果r_sp1)及融合乘积累加法运算的特殊值的侦测结果r_sp2在阶段1输出,而融合乘积累加法运算或乘积累加法运算的一般计算的结果r_no2以及乘积累加法运算的特殊值的侦测结果r_sp3在阶段2输出。由此可见,相较于图1与图3组合的实施例,在图1与图5组合的实施例中,有机会可以较早得到融合乘积累加法运算的结果(在阶段1而非阶段2输出)。

前述的控制电路140、360及560分别与图1、3及5中的其它电路电连接(简洁起见,未显示该些联机),用来控制各种运算的排程以及各计算路径上资源的运用。控制电路140、360及560可以例如由有限状态机(finitestatemachine,fsm)实作,但不以此为限。

在浮点数运算电路的计算架构100中,控制电路140系(1)响应乘法指令控制乘法电路110进行运算(对应步骤s210~s230);(2)响应乘积累加法运算指令控制乘法电路110及加法电路130进行运算并控制选择电路120选择乘积d_r而非乘积d(对应步骤s210~s250、s270~s280);以及(3)响应融合乘积累加法运算指令控制乘法电路110及加法电路130进行运算并控制选择电路120选择乘积d而非乘积d_r(对应步骤s210~s240、s260~s280)。

在浮点数运算电路的侦测架构300中,控制电路360系(1)响应乘法指令控制侦测电路310进行侦测(对应步骤s410~s420);(2)响应融合乘积累加法运算指令控制侦测电路320进行侦测(对应步骤s410、s430)以及控制选择电路350选择(r_sp2,flag2)(对应步骤s460、s480);以及(3)响应乘积累加法运算指令控制侦测电路310及侦测电路330进行侦测(对应步骤s410~s420、s440~s450)以及控制选择电路350选择(r_sp3,flag3)(对应步骤s460~s470)。

在浮点数运算电路的侦测架构500中,控制电路560系(1)响应乘法指令控制侦测电路510进行侦测(对应步骤s610~s620)以及控制选择电路550选择(r_sp1,flag1)(对应步骤s640~s650);(2)响应融合乘积累加法运算指令控制侦测电路520进行侦测(对应步骤s610、s630)以及控制选择电路550选择(r_sp2,flag2)(对应步骤s640、s660);以及(3)响应乘积累加法运算指令控制侦测电路510及侦测电路530进行侦测(对应步骤s610~s620、s670~s690)。

本发明提出浮点数运算电路的两个实施例:(1)图1与图3的组合(对应图2及图4的流程);以及(2)图1与图5的组合(对应图2及图6的流程)。两个实施例皆整合乘法运算、乘积累加法运算以及融合乘积累加法运算并同时对三者进行优化,因此本发明的浮点数运算电路在这三种运算的处理上可以提升处理器的效能以及简化电路。值得注意的是,本发明的浮点数运算电路的计算架构100可以独立运作以完成浮点数的一般计算,或是搭配其它的侦测架构以一并完成浮点数的一般计算及浮点数运算的特殊值的侦测。类似地,浮点数运算电路的侦测架构300及500亦可以独立运作或搭配其它的计算架构。

由于本技术领域具有通常知识者可藉由本案之装置发明的揭露内容来了解本案之方法发明的实施细节与变化,因此,为避免赘文,在不影响该方法发明之揭露要求及可实施性的前提下,重复之说明在此予以节略。请注意,前揭图标中,组件之形状、尺寸、比例以及步骤之顺序等仅为示意,系供本技术领域具有通常知识者了解本发明之用,非用以限制本发明。再者,前揭实施例虽以双精度为例,然此并非对本发明之限制,本技术领域人士可依本发明之揭露适当地将本发明应用于其它精度。

虽然本发明之实施例如上所述,然而该些实施例并非用来限定本发明,本技术领域具有通常知识者可依据本发明之明示或隐含之内容对本发明之技术特征施以变化,凡此种种变化均可能属于本发明所寻求之专利保护范畴,换言之,本发明之专利保护范围须视本说明书之申请专利范围所界定者为准。

符号说明

100浮点数运算电路的计算架构

110乘法电路

112、132修整电路

120、350、550选择电路

130加法电路

140、360、560控制电路

300、500浮点数运算电路的侦测架构

310、320、330、510、520、530侦测电路

340、540并集电路

s210~s280、s410~s480、s610~s690步骤。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1