CN109783055B - 浮点数运算电路及方法 - Google Patents
浮点数运算电路及方法 Download PDFInfo
- Publication number
- CN109783055B CN109783055B CN201711106649.1A CN201711106649A CN109783055B CN 109783055 B CN109783055 B CN 109783055B CN 201711106649 A CN201711106649 A CN 201711106649A CN 109783055 B CN109783055 B CN 109783055B
- Authority
- CN
- China
- Prior art keywords
- circuit
- operand
- flag
- detection result
- floating
- 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.)
- Active
Links
Images
Landscapes
- Complex Calculations (AREA)
- Advance Control (AREA)
Abstract
本发明揭露了一种浮点数运算电路及方法。浮点数运算电路用于对一第一运算元、一第二运算元及一第三运算元进行一融合乘积累加法运算或一乘积累加法运算,或是对该第一运算元及该第二运算元进行一乘法运算。该浮点数运算电路包含二修整电路、一乘法电路、一选择电路、一控制电路以及一加法电路。控制电路控制各种运算的排程以及各计算路径上资源的运用,以简化电路及提升处理器的效能。
Description
技术领域
本发明是关于浮点数的运算,尤其是关于浮点数的乘法运算、乘积累加法运算(multiplication and accumulation,mac)及融合乘积累加法运算(fusedmultiplication and accumulation,fused mac)。
背景技术
处理器进行浮点数的算术运算时常涉及加法、减法、乘法、除法、乘积累加法、融合乘积累加法等运算。乘积累加法运算及融合乘积累加法运算皆是计算A*B+C(A、B、C皆为浮点数),但因为乘积累加法运算于乘法运算及加法运算各做一次修整(rounding),而融合乘积累加法运算仅于加法运算做一次修整,所以融合乘积累加法运算会得到相对精确的结果。习知的处理器通常对个别的运算做优化,但是对个别的运算进行优化对提升处理器的整体效能有限。因此需要一个将多种运算同时纳入考虑的优化电路,以简化电路并更加提升处理器的效能。
发明内容
鉴于先前技术的不足,本发明的一目的在于提供一种浮点数运算电路及方法,以简化电路及提升处理器的效能。
本发明揭露一种浮点数运算电路,用于对一第一运算元、一第二运算元及一第三运算元进行一融合乘积累加法运算或一乘积累加法运算,或是对该第一运算元及该第二运算元进行一乘法运算。该浮点数运算电路包含一乘法电路、一选择电路、一控制电路以及一加法电路。该乘法电路接收该第一运算元及该第二运算元,并对该第一运算元及该第二运算元进行该乘法运算以产生一未经修整的积及一经修整的积。该选择电路接收该未经修整的积及该经修整的积,并输出该未经修整的积及该经修整的积的其中之一。当该浮点数运算电路执行该乘积累加法运算时,控制该选择电路输出该经修整的积,以及当该浮点数运算电路执行该融合乘积累加法运算时,控制该选择电路输出该未经修整的积。该加法电路接收该未经修整的积及该经修整的积的其中之一以及该第三运算元,并将该未经修整的积及该经修整的积的其中之一与该第三运算元相加,以得到一运算结果,其中该运算结果为该融合乘积累加法运算或该乘积累加法运算的结果。该加法电路的总输入位数大于两倍的该第一运算元、第二运算元或第三运算元的位数。
本发明另揭露一种浮点数运算方法,用于对一第一运算元、一第二运算元及一第三运算元进行一融合乘积累加法运算或一乘积累加法运算,或是对该第一运算元及该第二运算元进行一乘法运算。该方法包含以下步骤:以一乘法电路接收该第一运算元及该第二运算元,并以该乘法电路对该第一运算元及该第二运算元进行该乘法运算以产生一未经修整的积及一经修整的积;以一选择电路接收该未经修整的积及该经修整的积,并输出该未经修整的积及该经修整的积的其中之一;当该乘积累加法运算被执行时,控制该选择电路输出该经修整的积,以及当该融合乘积累加法运算被执行时,控制该选择电路输出该未经修整的积;以及以一加法电路接收该未经修整的积及该经修整的积的其中之一以及该第三运算元,并以该加法电路对该未经修整的积及该经修整的积的其中之一与该第三运算元进行一加法运算,以得到一运算结果,其中该运算结果为该融合乘积累加法运算或该乘积累加法运算的结果。该加法电路的总输入位数大于两倍的该第一运算元、第二运算元或第三运算元的位数。
本发明的浮点数运算电路及方法整合浮点数的乘法运算、乘积累加法运算及融合乘积累加法运算。相较于传统技术,本发明之浮点数运算电路及方法同时为此三种运算进行优化,以提升处理器的效能及简化电路。
有关本发明的特征、实作与功效,兹配合图式作实施例详细说明如下。
附图说明
[图1]为本发明浮点数运算电路的计算部分的电路图;
[图2]为本发明浮点数运算方法的计算部分的流程图;
[图3]为本发明浮点数运算电路的侦测部分的一实施例的电路图;
[图4]为本发明浮点数运算方法的侦测部分的一实施例的流程图;
[图5]为本发明浮点数运算电路的侦测部分的另一实施例的电路图;以及
[图6]为本发明浮点数运算方法的侦测部分的另一实施例的流程图。
具体实施方式
以下说明内容的技术用语是参照本技术领域的习惯用语,如本说明书对部分用语有加以说明或定义,该部分用语的解释以本说明书的说明或定义为准。
本发明的揭露内容包含浮点数运算电路及方法。由于本发明的浮点数运算电路所包含的部分组件单独而言可能为已知组件,因此在不影响该装置发明之充分揭露及可实施性的前提下,以下说明对于已知组件的细节将予以节略。此外,本发明的浮点数运算方法的部分或全部流程可以藉由本发明的浮点数运算电路或其等效装置来执行,在不影响该方法发明的充分揭露及可实施性的前提下,以下方法发明的说明将着重于步骤内容而非硬件。
图1系本发明浮点数运算电路的计算部分的电路图。图中以双精度(doubleprecision)(以一个位表示正负号、以11个位表示指数部分、以52个位表示有效数(significand)的小数部分)为例,但本发明亦可应用于IEEE 754-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用来侦测浮点数运算的特殊值(special value),包含侦测电路310、侦测电路320、侦测电路330、并集(union)电路340、选择电路350及控制电路360。控制电路360可以与图1的控制电路140共享电路,亦或是两者以独立的电路实作。浮点数运算电路的侦测架构300用于侦测运算元A、B及C是否为特殊值。当运算元A、B及C的一部分或全部为特殊值时,乘法运算、乘积累加法运算及融合乘积累加法运算的运算结果可以由浮点数运算电路的侦测架构300产生,而不需经过浮点数运算电路的计算架构100的计算。特殊值包含±0、±∞、非数值(not a number,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更对应地输出运算的状态旗标(status flag)。根据IEEE754-2008的定义,状态旗标包含(1)无效运算(invalid operation)、(2)除以零(divided by zero)、(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’做逐位或运算(bitwise ORoperation),以产生旗标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可以例如由有限状态机(finite state machine,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 步骤。
Claims (10)
1.一种浮点数运算电路,用于对一第一运算元、一第二运算元及一第三运算元进行一融合乘积累加法运算或一乘积累加法运算,或是对该第一运算元及该第二运算元进行一乘法运算,该浮点数运算电路包含:
一乘法电路,接收该第一运算元及该第二运算元,对该第一运算元及该第二运算元进行该乘法运算以产生一未经修整的积及一经修整的积;
一选择电路,耦接该乘法电路,用来接收该未经修整的积及该经修整的积,并输出该未经修整的积及该经修整的积的其中之一;
一控制电路,耦接该选择电路,当该浮点数运算电路执行该乘积累加法运算时,控制该选择电路输出该经修整的积,以及当该浮点数运算电路执行该融合乘积累加法运算时,控制该选择电路输出该未经修整的积;以及
一加法电路,耦接该选择电路,接收该未经修整的积及该经修整的积的其中之一以及该第三运算元,将该未经修整的积及该经修整的积的其中之一与该第三运算元相加,以得到一运算结果,其中该运算结果为该融合乘积累加法运算或该乘积累加法运算的结果;
其中,该加法电路的总输入位数大于两倍的该第一运算元、第二运算元或第三运算元的位数,并且
依据该选择电路的选择结果,修整电路对该融合乘积累加法运算或该乘积累加法运算的结果进行修整。
2.如权利要求1所述的浮点数运算电路,其中该浮点数运算电路依据一时钟动作,该乘法电路操作于一第一阶段且占用该时钟的至少一周期,该加法电路操作于一第二阶段且占用该时钟的至少一周期,且该第二阶段位于该第一阶段之后。
3.如权利要求2所述的浮点数运算电路,其中该加法电路于该第一阶段接收该第三运算元。
4.如权利要求2所述的浮点数运算电路,其中该乘法电路于该第一阶段产生该经修整的积。
5.如权利要求2所述的浮点数运算电路,其中该选择电路为一第一选择电路,该浮点数运算电路还包含:
一第一侦测电路,于该第一阶段接收该第一运算元及该第二运算元,并于该第一阶段根据该第一运算元及该第二运算元产生一第一侦测结果及一第一旗标,其中该第一侦测结果及该第一旗标对应该乘法运算;
一第二侦测电路,于该第一阶段接收该第一运算元、该第二运算元及该第三运算元,并于该第一阶段根据该第一运算元、该第二运算元及该第三运算元产生一第二侦测结果及一第二旗标,其中该第二侦测结果及该第二旗标对应该融合乘积累加法运算;
一第三侦测电路,耦接该第一侦测电路及该第二侦测电路,于该第二阶段接收该第一侦测结果及该第三运算元,并于该第二阶段根据该第一侦测结果及该第三运算元产生一第三侦测结果及一中间旗标;
一并集电路,耦接该第一侦测电路及该第三侦测电路,用来根据该第一旗标及该中间旗标产生一第三旗标,其中该第三旗标为该第一旗标及该中间旗标的并集,且该第三侦测结果及该第三旗标对应该乘积累加法运算;以及
一第二选择电路,耦接该第二侦测电路、该第三侦测电路及该并集电路,接收该第二侦测结果、该第二旗标、该第三侦测结果及该第三旗标;
其中,该控制电路还耦接该第二选择电路,当该浮点数运算电路执行该融合乘积累加法运算时,控制该第二选择电路输出该第二侦测结果及该第二旗标,以及当该浮点数运算电路执行该乘积累加法运算时,控制该第二选择电路输出该第三侦测结果及该第三旗标。
6.如权利要求2所述的浮点数运算电路,其中该选择电路为一第一选择电路,该浮点数运算电路还包含:
一第一侦测电路,于该第一阶段接收该第一运算元及该第二运算元,并于该第一阶段根据该第一运算元及该第二运算元产生一第一侦测结果及一第一旗标,其中该第一侦测结果及该第一旗标对应该乘法运算;
一第二侦测电路,于该第一阶段接收该第一运算元、该第二运算元及该第三运算元,并于该第一阶段根据该第一运算元、该第二运算元及该第三运算元产生一第二侦测结果及一第二旗标,其中该第二侦测结果及该第二旗标对应该融合乘积累加法运算;
一第二选择电路,耦接该第一侦测电路及该第二侦测电路,接收该第一侦测结果、该第一旗标、该第二侦测结果及该第二旗标;
一第三侦测电路,耦接该第一侦测电路及该第二侦测电路,于该第二阶段接收该第一侦测结果及该第三运算元,并于该第二阶段根据该第一侦测结果及该第三运算元产生一第三侦测结果及一中间旗标;以及
一并集电路,耦接该第一侦测电路及该第三侦测电路,用来根据该第一旗标及该中间旗标产生一第三旗标,其中该第三旗标为该第一旗标及该中间旗标的并集,且该第三侦测结果及该第三旗标对应该乘积累加法运算;
其中,该控制电路还耦接该第二选择电路,当该浮点数运算电路执行该乘法运算时,控制该第二选择电路输出该第一侦测结果及该第一旗标,以及当该浮点数运算电路执行该融合乘积累加法运算时,控制该第二选择电路输出该第二侦测结果及该第二旗标。
7.如权利要求6所述的浮点数运算电路,其中该控制电路控制该第二选择电路于该第一阶段输出该第一侦测结果及该第一旗标或输出该第二侦测结果及该第二旗标。
8.一种浮点数运算方法,用于对一第一运算元、一第二运算元及一第三运算元进行一融合乘积累加法运算或一乘积累加法运算,或是对该第一运算元及该第二运算元进行一乘法运算,该方法包含:
以一乘法电路接收该第一运算元及该第二运算元,并以该乘法电路对该第一运算元及该第二运算元进行该乘法运算以产生一未经修整的积及一经修整的积;
以一选择电路接收该未经修整的积及该经修整的积,并输出该未经修整的积及该经修整的积的其中之一;
当该乘积累加法运算被执行时,控制该选择电路输出该经修整的积,以及当该融合乘积累加法运算被执行时,控制该选择电路输出该未经修整的积;以及
以一加法电路接收该未经修整的积及该经修整的积的其中之一以及该第三运算元,并以该加法电路对该未经修整的积及该经修整的积的其中之一与该第三运算元进行一加法运算,以得到一运算结果,其中该运算结果为该融合乘积累加法运算或该乘积累加法运算的结果;
其中,该加法电路的总输入位数大于两倍的该第一运算元、第二运算元或第三运算元的位数,并且
依据该选择电路的选择结果,修整电路对该融合乘积累加法运算或该乘积累加法运算的结果进行修整。
9.如权利要求8所述的浮点数运算方法,其中该乘法运算执行于一第一阶段且占用时钟的至少一周期,该加法运算执行于一第二阶段且占用该时钟的至少一周期,该第二阶段位于该第一阶段之后,且该选择电路为一第一选择电路,该方法还包含:
于该第一阶段根据该第一运算元及该第二运算元产生一第一侦测结果及一第一旗标,其中该第一侦测结果及该第一旗标对应该乘法运算;
于该第一阶段根据该第一运算元、该第二运算元及该第三运算元产生一第二侦测结果及一第二旗标,其中该第二侦测结果及该第二旗标对应该融合乘积累加法运算;
于该第二阶段根据该第一侦测结果及该第三运算元产生一第三侦测结果及一中间旗标;
根据该第一旗标及该中间旗标产生一第三旗标,其中该第三旗标为该第一旗标及该中间旗标的并集,且该第三侦测结果及该第三旗标对应该乘积累加法运算;
以一第二选择电路接收该第二侦测结果、该第二旗标、该第三侦测结果及该第三旗标;
当该浮点数运算方法执行该融合乘积累加法运算时,控制该第二选择电路输出该第二侦测结果及该第二旗标;以及
当该浮点数运算方法执行该乘积累加法运算时,控制该第二选择电路输出该第三侦测结果及该第三旗标。
10.如权利要求8所述的浮点数运算方法,其中该乘法运算执行于一第一阶段且占用时钟的至少一周期,该加法运算执行于一第二阶段且占用该时钟的至少一周期,该第二阶段位于该第一阶段之后,且该选择电路为一第一选择电路,该方法还包含:
于该第一阶段根据该第一运算元及该第二运算元产生一第一侦测结果及一第一旗标,其中该第一侦测结果及该第一旗标对应该乘法运算;
于该第一阶段根据该第一运算元、该第二运算元及该第三运算元产生一第二侦测结果及一第二旗标,其中该第二侦测结果及该第二旗标对应该融合乘积累加法运算;
以一第二选择电路接收该第一侦测结果、该第一旗标、该第二侦测结果及该第二旗标;
于该第二阶段根据该第一侦测结果及该第三运算元产生一第三侦测结果及一中间旗标;
根据该第一旗标及该中间旗标产生一第三旗标,其中该第三旗标为该第一旗标及该中间旗标的并集,且该第三侦测结果及该第三旗标对应该乘积累加法运算;
当该浮点数运算方法执行该乘法运算时,控制该第二选择电路输出该第一侦测结果及该第一旗标;以及
当该浮点数运算方法执行该融合乘积累加法运算时,控制该第二选择电路输出该第二侦测结果及该第二旗标。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711106649.1A CN109783055B (zh) | 2017-11-10 | 2017-11-10 | 浮点数运算电路及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711106649.1A CN109783055B (zh) | 2017-11-10 | 2017-11-10 | 浮点数运算电路及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109783055A CN109783055A (zh) | 2019-05-21 |
CN109783055B true CN109783055B (zh) | 2021-02-12 |
Family
ID=66485424
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711106649.1A Active CN109783055B (zh) | 2017-11-10 | 2017-11-10 | 浮点数运算电路及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109783055B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
CN105335127A (zh) * | 2015-10-29 | 2016-02-17 | 中国人民解放军国防科学技术大学 | Gpdsp中支持浮点除法的标量运算单元结构 |
CN105849690A (zh) * | 2014-07-02 | 2016-08-10 | 上海兆芯集成电路有限公司 | 使用第一和第二子运算的分路融合乘积-累加运算 |
CN107025091A (zh) * | 2016-02-01 | 2017-08-08 | 国际商业机器公司 | 二进制融合乘加浮点计算 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8990282B2 (en) * | 2009-09-21 | 2015-03-24 | Arm Limited | Apparatus and method for performing fused multiply add floating point operation |
US8924454B2 (en) * | 2012-01-25 | 2014-12-30 | Arm Finance Overseas Limited | Merged floating point operation using a modebit |
US9823897B2 (en) * | 2015-09-25 | 2017-11-21 | Arm Limited | Apparatus and method for floating-point multiplication |
CN107273090B (zh) * | 2017-05-05 | 2020-07-31 | 中国科学院计算技术研究所 | 面向神经网络处理器的近似浮点乘法器及浮点数乘法 |
-
2017
- 2017-11-10 CN CN201711106649.1A patent/CN109783055B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
CN105849690A (zh) * | 2014-07-02 | 2016-08-10 | 上海兆芯集成电路有限公司 | 使用第一和第二子运算的分路融合乘积-累加运算 |
CN106293610A (zh) * | 2014-07-02 | 2017-01-04 | 上海兆芯集成电路有限公司 | 微处理器及其方法 |
CN105335127A (zh) * | 2015-10-29 | 2016-02-17 | 中国人民解放军国防科学技术大学 | Gpdsp中支持浮点除法的标量运算单元结构 |
CN107025091A (zh) * | 2016-02-01 | 2017-08-08 | 国际商业机器公司 | 二进制融合乘加浮点计算 |
Non-Patent Citations (1)
Title |
---|
浮点融合乘加部件设计分析与尾数加电路定制设计;李振虎;《中国优秀硕士学位论文全文数据库 信息科技辑》;20150115;I137-40 * |
Also Published As
Publication number | Publication date |
---|---|
CN109783055A (zh) | 2019-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8965945B2 (en) | Apparatus and method for performing floating point addition | |
US5844830A (en) | Executing computer instrucrions by circuits having different latencies | |
US6363476B1 (en) | Multiply-add operating device for floating point number | |
JP2012528391A (ja) | 飽和を伴う整数乗算および乗算加算演算 | |
US10331407B2 (en) | Tiny detection in a floating-point unit | |
US7349938B2 (en) | Arithmetic circuit with balanced logic levels for low-power operation | |
CN109783055B (zh) | 浮点数运算电路及方法 | |
US10929101B2 (en) | Processor with efficient arithmetic units | |
TWI638313B (zh) | 浮點數運算電路及方法 | |
GB2396708A (en) | Arithmetic logic unit with feedback to a first adder via registers and output via a second adder. | |
US8375078B2 (en) | Fast floating point result forwarding using non-architected data format | |
US9280316B2 (en) | Fast normalization in a mixed precision floating-point unit | |
CN100392584C (zh) | 进位存储加法器及其*** | |
Fiolhais et al. | An efficient exact fused dot product processor in FPGA | |
US6725360B1 (en) | Selectively processing different size data in multiplier and ALU paths in parallel | |
US20090265529A1 (en) | Processor apparatus and method of processing multiple data by single instructions | |
US11269651B2 (en) | Reusing adjacent SIMD unit for fast wide result generation | |
JP5010648B2 (ja) | 演算装置及び演算方法 | |
Edmonson et al. | Interval Arithmetic Logic Unit for Signal Processing and Control Applications | |
JP5376659B2 (ja) | 積和演算装置及び積和演算装置の制御方法 | |
VANI et al. | Improving FPGA Performance for Carry-Save Arithmetic using Multi Operand Redundant Adders | |
WO1998006029A1 (en) | Apparatus and methods for execution of computer instructions | |
JP2008040661A (ja) | 制御用プロセッサ | |
JP2003058362A (ja) | データ演算処理装置及びデータ演算処理プログラム | |
JP2009266021A (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 |