CN102103479B - 浮点运算器及浮点运算的处理方法 - Google Patents

浮点运算器及浮点运算的处理方法 Download PDF

Info

Publication number
CN102103479B
CN102103479B CN201110050039.0A CN201110050039A CN102103479B CN 102103479 B CN102103479 B CN 102103479B CN 201110050039 A CN201110050039 A CN 201110050039A CN 102103479 B CN102103479 B CN 102103479B
Authority
CN
China
Prior art keywords
point
floating
fixed
module
fixed point
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
Application number
CN201110050039.0A
Other languages
English (en)
Other versions
CN102103479A (zh
Inventor
林文琼
华力
黎立煌
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.)
Shenzhen ZTE Microelectronics Technology Co Ltd
Original Assignee
ZTE 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 ZTE Corp filed Critical ZTE Corp
Priority to CN201110050039.0A priority Critical patent/CN102103479B/zh
Publication of CN102103479A publication Critical patent/CN102103479A/zh
Application granted granted Critical
Publication of CN102103479B publication Critical patent/CN102103479B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了浮点运算器及浮点运算的处理方法,该浮点运算器包括浮点转定点模块,用于将输入到所述浮点转定点模块的浮点数转换为定点数;所述定点加法模块,所述定点加法模块的输入端连接至所述浮点转定点模块的输出端,所述定点加法模块的输出端连接至所述定点加法模块的输入端,用于对所述浮点转定点模块输出的定点数和所述定点加法模块输出的定点数进行定点加法运算;归一化模块,连接至所述定点加法模块的输出端,用于对所述定点加法模块的输出进行归一化处理转成与所述浮点运算器输入的比特位数相同的浮点数输出。通过本发明实现了高频率下的单拍累加。

Description

浮点运算器及浮点运算的处理方法
技术领域
本发明涉及矢量处理器领域,具体而言,涉及一种浮点运算器及浮点运算的处理方法。
背景技术
目前通信协议有多种模式,采用原有的特殊应用集成电路(Application Specific IntegratedCircuit,简称为ASIC)设计方法来实现多模兼容的移动终端芯片必然面临面积大功耗大且缺乏灵活性等等缺点。当前的软件无线电(software-defined radio,简称为SDR)技术是解决目前多模通信终端芯片设计问题的极具潜力的技术。可编程矢量处理器(programmable vectorprocessor)是软件无线电SDR的核心架构。为了支持多模基带的处理,矢量处理器必须能每秒执行数G操作。并且作为移动终端需要满足功耗在几百mW左右。
浮点运算单元是矢量处理器的核心运算部分,其性能决定了整个处理器的性能,其功耗也占到处理器近一半的功耗。因此,该浮点计算单元的设计和实现非常关键。
IEEE标准754浮点数是广泛应用的浮点格式。IEEE标准754从逻辑上用三元组{S,E,M}表示一个数n,如下所示:
              S       E      M
             符号位  指数   尾数
             最高位  ...    最低位
n=(-1)s×1.m×2e  公式(1)
N的实际值n由公式(1)表示。
n,s,e,m分别为N,S,E,M对应的实际数值,而N,S,E,M仅仅是一串二进制位。S(sign)表示N的符号位。对应值s满足:n>0时,s=0;n<0时,s=1。E(exponent)表示N的指数位,位于S和M之间的若干位。对应值e值也可正可负。M(mantissa)表示N的尾数位,恰好,它位于N末尾。有效数(Significand)为1.m,1为隐含位是多出来的1位精度。
IEEE标准754规定了三种浮点数格式:单精度、双精度、扩展精度。单精度共32bit,S、E、M的bit数分别为1、8、23;双精度共64bit,S、E、M的bit数分别为1、11、52。更多请参考IEEE 754浮点标准,在此不再赘述。
浮点乘加器可以有很多结构,可以实现一般乘法、加法、乘加,还可以实现复数乘法、加法、乘加,以及特定fft运算。这些都视乘加器的具体结构而定。但是相关技术中的浮点乘加器都难以实现高频率下的单拍反馈累加,而只能对两拍前的结果进行累加,不能直接和上拍的运算结果进行累加,即不能完全实现流水累加,造成编程上的不方便和编程效率的损失。
图1是根据相关技术的传统浮点加法器的原理框图,下面结合图1对传统的浮点加法的步骤进行说明:两输入浮点数的指数相减;浮点数有效数移位对齐;有效数相加;归一化(包括尾数取舍(rounding))。这些步骤都是串行的,逻辑很长。为了工作在诸如400MHz的高频上,浮点加法器必须分成两拍,这造成了不能实现单拍累加。
浮点加法部分是浮点乘加器中逻辑时延的关键路径在相关技术中采用双路径来提高其工作效率,即near-path和far-path方式实现浮点加法器。
双路径方法主要是根据两浮点数的指数差值范围划分为两种情况:指数差<=1(near-path)和指数差>=2(far-path)。near-path:指数相减得到简化(只需要做2比特的减法),浮点数有效数移位对齐简化。只需要对一个加数的有效部分预先做左移和右移动1比特两种结果,根据指数相减的结果决定输出。这样指数相减和浮点有效数移位对齐时延大大减少。为减少归一化延时,在进行有效数部分的加法同时进行前导0的预测。far-path:由于指数差>=2,浮点加法后不会产生小于1.0的数据,所以最后归一化步骤中不需要进行小数点的左移。
这样两路径都分别减少了时延,实现了一般浮点加法步骤的并行化。最后选择两路径中一个作为输出结果。但是双路径浮点加法器面积几乎是原来标准的浮点加法器的两倍。但是逻辑延时并没有减少到原来的一半,实际上减少30%多。在同样的工作频率要求下难以实现单拍加法,也就不能实现单拍反馈累加。.
在相关技术中的传统的浮点加法器在高频下只能与两拍前即上上次的运算结果累加。在软件编程时,不能流水的实现连续的累加,必须分成奇数偶数部分分别进行累加,之后用一条特殊指令将奇数偶数部分的累加和再次相加。这样在编程上不是很方便和直观,编程效率也大大降低。
发明内容
本发明的主要目的在于提供一种浮点运算器及浮点运算的处理方法,以至少解决上述问题。
根据本发明的一个方面,提供了一种浮点运算器,包括:浮点转定点模块,用于将输入到所述浮点转定点模块的浮点数转换为定点数;所述定点加法模块,所述定点加法模块的输入端连接至所述浮点转定点模块的输出端,所述定点加法模块的输出端连接至所述定点加法模块的输入端,用于对所述浮点转定点模块输出的定点数和所述定点加法模块输出的定点数进行定点加法运算;归一化模块,连接至所述定点加法模块的输出端,用于对所述定点加法模块的输出进行归一化处理转成与所述浮点运算器输入的比特位数相同的浮点数输出。
优选地,还包括:一个或多个浮点乘法模块,一个或多个所述浮点乘法模块的输出端连接至所述浮点转定点模块的输入端,用于对输入的浮点数进行浮点乘法的运算;所述浮点转定点模块的输入端连接至所述浮点乘法模块的输出端,所述浮点转定点模块用于将所述浮点乘法模块的运算结果和/或来自所述浮点运算器的输入端的浮点数转换为定点数。
优选地,所述定点加法模块包括:一个或多个定点加法器;或者,所述定点加法模块包括:一个或多个定点加法器,以及一个或多个华莱士树模块。
优选地,还包括:选择器,所述选择器的两个输入端分别连接至所述浮点运算器的输入端和所述定点加法模块的输出端,所述选择器的输出端连接至所述定点加法模块的输入端,所述选择器用于选择向所述定点加法模块反馈所述定点加法模块的输出,或者向所述定点加法模块输入来自所述浮点运算器的输入端的经由所述浮点转定点模块转换成的定点数。
优选地,所述华莱士树模块中的两个输入端分别连接至所述浮点转定点模块的输出端,用于将所述浮点乘法模块进行浮点乘法运算之后的浮点数转换成的定点数作为输入,所述华莱士树的另一个输入端连接至选择器的输出端,用于将来自所述选择器的输出作为所述华莱士树的另一个输入,其中,所述选择器的两个输入为定点加法模块的输出和来自所述浮点转定点模块将所述浮点运算器的输入端的浮点数转换得到的定点数。
优选地,所述浮点乘法模块在将对输入的浮点数进行浮点乘法的运算之后,不进行归一化处理,将进行浮点乘法运算之后的结果直接输入到所述浮点转定点模块。
优选地,还包括:前导零预测模块,连接至所述定点加法模块的输出端,用于对所述定点加法模块的输出进行前导零计数。
优选地,所述浮点运算器的输入端输入的浮点数小于或等于16比特。
根据本发明的另一个方面,还提供了一种浮点运算的处理方法,包括:将输入的浮点数转换为定点数;对所述定点数进行定点加法运算;对所述定点加法运算的结果进行归一化处理转成与所述输入的浮点数比特位数相同的浮点数输出。
优选地,将输入的浮点数转换为定点数包括:将输入的浮点数进行浮点乘法的运算之后的浮点数转换为定点数,和/或,将直接输入的浮点数转换为定点数。
通过本发明,解决了相关技术中不能实现高频率下单拍累加而导致的问题,进而实现了浮点运算器器的工作在高频率下的单拍累加。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据相关技术的传统浮点加法器的原理框图;
图2是根据本发明实施例的浮点运算器的结构框图;
图3是根据本发明实施例的浮点运算的处理方法的流程图;
图4是与本发明实施例相关的浮点加法器的实现原理框图;
图5是根据本发明实施例的支持单拍反馈累加的浮点乘加器的结构框图;
图6是根据本发明实施例的浮点乘加的处理方法的流程图;
图7是根据本发明实施例的浮点乘加器的E0阶段电路框图;
图8是根据本发明实施例的浮点乘加器的E1阶段电路框图;
图9是根据本发明实施例的浮点乘加器的E2阶段电路框图;
图10是根据本发明实施例的浮点乘加器的E3阶段电路框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
在本实施例中采用了用定点加法运算代替浮点运算的方法。本实施例可以应用于一般浮点乘加器、一般浮点加法器,带累加或不带累加功能只要浮点数的宽度较小(<=16bit,或稍大于16bit)都适用于本实施例。需要说明的是,浮点数比较大的情况也可以适用本实施例,只不过实现的面积要增大。因此,本实施例最佳应用于小于或等于16bit的情况,而16比特的宽度对于移动终端而言已经足够了。以下以自定义的1,5,10格式(1bit符号位,5bit指数,10bit尾数)的16bit浮点数(兼容IEEE754浮点数规范)为例进行说明。
在本实施例中提供了一种浮点运算器,图2是根据本发明实施例的浮点运算器的结构框图,如图2所示,该浮点运算器的结构框图包括:浮点转定点模块20、定点加法模块22和归一化模块24,下面对该结构进行说明。
浮点转定点模块20,用于将输入到浮点转定点模块的浮点数转换为定点数;定点加法模块22,定点加法模块22的输入端连接至浮点转定点模块的输出端,定点加法模块22的输出端连接至定点加法模块22的输入端,用于对浮点转定点模块20输出的定点数和所述定点加法模块输出的定点数进行定点加法运算;归一化模块24,连接至定点加法模块22的输出端,用于对定点加法模块的输出进行归一化处理转成与浮点运算器输入的比特位数相同的浮点数输出。
通过上述浮点运算器,将浮点运算转换成了定点运算,而且实现了累加。由于不在使用浮点加法运算,因此实现了在高频率下的处理。
优选地,该浮点运算器还可以实现乘加的运算,此时,该浮点运算器还包括:一个或多个浮点乘法模块,一个或多个浮点乘法模块的输出端连接至浮点转定点模块的输入端,用于对输入的浮点数进行浮点乘法的运算;浮点转定点模块的输入端连接至浮点乘法模块的输出端,浮点转定点模块用于将浮点乘法模块的运算结果和/或来自浮点运算器的输入端的浮点数转换为定点数。通过该浮点运算器,可以实现浮点乘加器的工作在高频率下的单拍累加。
优选地,在实施时,如果需要对来自该浮点运算器输入端的数进行加法运算,那么可以增加一个选择器,该选择器来选择对来自浮点运算器的输入端的书进行加或者是选择进行累加,例如,该浮点运算器还包括:选择器,选择器的两个输入端分别连接至浮点运算器的输入端和定点加法模块的输出端,选择器的输出端连接至定点加法模块的输入端,选择器用于选择向定点加法模块反馈定点加法模块的输出,或者向定点加法模块输入来自浮点运算器的输入端的经由浮点转定点模块转换成的定点数。
优选地,该定点加法模块包括:一个或多个定点加法器。当然,也可以采用华莱士树取代定点加法器,此时该定点加法模块包括:一个或多个定点加法器,以及一个或多个华莱士树模块。下面对使用华莱士树进行举例说明,例如,华莱士树模块中的两个输入端分别连接至浮点转定点模块的输出端,用于将浮点乘法模块进行浮点乘法运算之后的浮点数转换成的定点数作为输入,华莱士树的另一个输入端连接至选择器的输出端,用于将来自选择器的输出作为华莱士树的另一个输入,其中,选择器的两个输入为定点加法模块的输出和来自浮点转定点模块将浮点运算器的输入端的浮点数转换得到的定点数。
优选地,浮点乘法模块在将对输入的浮点数进行浮点乘法的运算之后,不进行归一化处理,将进行浮点乘法运算之后的结果直接输入到浮点转定点模块。
优选地,该浮点运算器还包括:前导零预测模块,连接至定点加法模块的输出端,用于对定点加法模块的输出进行前导零计数。
在本实施例中,还提供了一种浮点运算的处理方法,图3是根据本发明实施例的浮点运算的处理方法的流程图,当然该流程可以使用上述的浮点运算器来实现,如图3所示,该流程包括如下步骤:
步骤S302,将输入的浮点数转换为定点数;
步骤S304,对定点数进行定点加法运算;
步骤S306,对定点加法运算的结果进行归一化处理转成与输入的浮点数比特位数相同的浮点数输出。
优选地,在步骤S302将输入的浮点数转换为定点数中包括:将输入的浮点数进行浮点乘法的运算之后的浮点数转换为定点数,和/或,将直接输入的浮点数转换为定点数。
在下面的优选实施例中,提供的是一种浮点乘加器,该乘加器使用了上述实施例中的实现方法,可以实现较多类型的运算。为了更好地进行说明,在本实施例中首先对浮点加法器的原理进行说明,图4是与本发明实施例相关的浮点加法器的实现原理框图。图4中示出的浮点加法器支持实数、复数乘加,乘累加及快速傅立叶(fft)的蝶形运算。下面对这些算法进行说明。
实数乘法:例如,a1xb1、a2xb2;
实数加法:此时b1=1、b2=1,例如,a1x1+c1,a2x1+c2;
实数乘加:a1xb1+c1,a2xb2+c2;
累加(包括实数和复数):a1xb1+z1,a2xb2+z2,或a1+z1,a2+z2等。z1和z2是上上拍的运算结果;
复数乘法:(a1+ja2)x(b1+jb2),a1xb1-a2xb2为复数乘法的实部运算,虚部运算还需要另一个相同的浮点运算单元;
复数加法:(a1+ja2)+(c1+jc2),b1=1,b2=1,实部=a1x1+c1,虚部=a2x1+c2;
fft的蝶形运算:此时c1、c2输入相同的数Ar,BWr=a1xb1+a2xb2,z1=Ar+BWr,z2=Ar-BWr即为蝶形运算的两个输出。
整个浮点乘加器流水线需要5阶。其中浮点加法逻辑最长,需要分成两阶。故不能实现单拍反馈累加。
通过实现该浮点乘加器来实现上述乘加器的实现的单元综合结果:纯组合逻辑8543门;各拍间寄存器共2498门;总面积=8543+2498=11041门;延时2.62ns,包含寄存器延时。
对于上述浮点乘加器,如果采用双路径优化方法用一拍实现浮点加法器,可以实现单拍累加。即将图4中的加法和归一化部分合并为1阶段。整个乘加器总共只有3拍。综合结果:纯组合逻辑12667门;寄存器1285;总面积12667+1285=13972门;延时3.34ns,包含寄存器延时。虽然可以实现单拍的反馈累加,但是不能工作在330MHz及以上。
在对上述浮点乘加器分析的过程中发现,导致不能实现高频单拍累加的主要原因在于浮点乘加器中浮点加法器难以工作在较高频率下。因此,在本实施例中采用了浮点定点混合运算或用定点运算代替浮点运算的方法。本实施例可以应用于一般浮点乘加器、一般浮点加法器,带累加或不带累加功能只要浮点数的宽度较小(<=16bit,或稍大于16bit)都适用于本实施例。需要说明的是,浮点数比较大的情况也可以适用本实施例,至不过实现的面积要增大。因此,本实施例最佳应用于小于或等于16bit的情况,而16比特的宽度对于移动终端而言已经足够了。以下以自定义的1,5,10格式(1bit符号位,5bit指数,10bit尾数)的16bit浮点数(兼容IEEE754浮点数规范)为例进行说明。
图5是根据本发明实施例的支持单拍反馈累加的浮点乘加器的结构框图,如图5所示,该浮点乘加器将浮点加法全部转化为定点加法,由于采用了定点加法因此可以工作在高频率下,并且,该浮点乘加器利用了华莱士树的3化2,可以将3个定点加法器进行融合,减少一个全加器。并且只需最后进行归一化处理,电路的逻辑简化,定点加法时序很好,46bit定点全加器只需0.93ns延时,面积也很小约590门。综合结果如下(综合条件同上):纯组合逻辑9845门;各拍间寄存器共3281门;总面积=9845+3281=13126门;延时2.83ns,包含寄存器延时。该浮点乘加器工作在330MHz。与图6中的实现方法相比,90nm工艺面积增加13126-11041=2085门,大约2085/11041=19%。这是实现图5浮点乘加器的面积代价。
图5示出的浮点乘加器在纯组合逻辑上增加不多,只增加1302门。另近一半增加的面积来自各拍间增加的寄存器(图5中纵贯的竖线表示流水线各阶间寄存器)。这是由于浮点转化为全精度定点加法扩大位宽到42bit造成的。双路径实现在组合逻辑上增加非常大,但是由于减少2拍流水,寄存器减少非常多,所以总体电路面积增加只比图5中的浮点乘加器多一些,但是由于其优化时序有限,根本达不到工作频率要求,差距很远。综合来看,该乘加器以最小的代价实现高频下单拍累加功能,在40nm工艺下综合能工作频率能达到450MHz。
如图5所示,该浮点乘加器包括:浮点乘法模块,用于对输入的浮点数a1和b1、以及a2和b2进行浮点乘法的运算;浮点转定点模块,浮点转定点模块的输入端连接至浮点乘法模块的输出端和浮点乘加器的输入端,用于将浮点乘法模块的运算结果和输入端的浮点数转换为定点数;华莱士树模块,华莱士树模块其中的两个输入端分别连接至浮点转定点模块的输出端,用于将a1和b1,以及a2和b2进行浮点乘法运算之后转换成的定点数作为输入,华莱士树的另一个输入端连接至选择器的输出端,用于将来自选择器的输出作为华莱士树的另一个输入,其中,选择器的两个输入为定点加法模块的输出和来自浮点转定点模块将浮点乘加器的输入端的浮点数转换得到的定点数;定点加法模块,定点加法模块的输入端连接至华莱士树模块的两个输出端,用于对华莱士树的输出进行定点加法运算;归一化模块(即E3部分),连接至定点加法模块的输出端,用于对定点加法模块的输出进行归一化处理。需要说明的是,定点加法模块可以包括一个或多个定点加法器,此处的定点加法模块包括华莱士树。此外,由于对于华莱士树而言,三输入华莱士数之后进行加法的电路可以改为两个加法器实现,即两输入先加再将这个加法结果与第三个输入相加。因此,也可以将包括华莱士树和定点加法器的部分共同称为定点加法模块。
优选地,在实施时,浮点乘法模块在将对输入的浮点数a1和b1、以及a2和b2进行浮点乘法的运算之后,不进行归一化处理,将进行浮点乘法运算之后的结果直接输入到浮点转定点模块。优选地,该浮点乘加器还包括:前导零预测模块,连接至定点加法模块的输出端,用于对定点加法模块的输出进行前导零计数。
优选地,在实施时,该浮点乘加器还包括:符号位运算模块,连接至华莱士模块的输入端,其中,该华莱士模块的输入端分别用于接收a1和b1,以及a2和b2进行浮点乘法运算之后转换成的定点数,符号位运算模块用于计算a1和b1,以及a2和b2进行浮点乘法运算之后转换成的定点数的符号。
在本实施例中,还提供了一种浮点乘加的处理方法,图6是根据本发明实施例的浮点乘加的处理方法的流程图,如图6所示,该流程包括如下步骤:
步骤S602,对输入端输入的浮点数a1和b1、以及a2和b2进行浮点乘法的运算;
步骤S604,将浮点乘法的运算结果和输入端输入的浮点数转换为定点数;
步骤S606,进行3化2运算,其中,所述3化2运算的三个输入分别为:对将a1和b1,以及a2和b2进行浮点乘法运算之后转换成的定点数,从对输入端输入的浮点数进行转换得到的定点数;
步骤S608,将3化2运算的输出进行定点加法运算,将定点加法运算得到的结果反馈到3化2运算的输入端,并对定点加法运算的输出进行归一化处理。
优选地,在对输入的浮点数a1和b1、以及a2和b2进行浮点乘法的运算之后,不进行归一化处理,将进行浮点乘法运算之后的结果直接进行转换为定点数。优选地,该处理方法还包括:对定点加法的输出进行前导零计数。优选地,在进行3化2运算之前,还包括:计算a1和b1,以及a2和b2进行浮点乘法运算之后转换成的定点数的符号。
该浮点乘加器及浮点乘加的处理方法具有如下的优点:(1)实现了高频工作下单拍反馈累加;(2)流水线4拍比传统设计5拍少一拍;(3)由于对归一化前的全精度定点数进行累加,在连续的累加过程中由于没有被归一化截掉尾数,所以累加结果有更高的精度。
下面结合其他附图对说明图5所示的浮点乘加器的工作各阶段进行说明。
E0阶段,图7示出了E0阶段的电路框图,在该阶段中:两个浮点数的尾数包括隐含的1bit共11bit,11bitx11bit得到22bit的乘积,同时两个浮点数乘数的指数相加得到mult_e。优选地,本阶段乘法的结果不需要归一化,两个指数和直接送到E1阶段,在W1阶段将乘积结果进行浮点转定点。由于减少了乘法结果的归一化,使得本阶段时序得到优化,同时在运算中间保留了更多精度,使得运算的结果更加准确。
E1阶段,图8示出了E1阶段的电路框图,在该阶段中:将a1xb1和a2xb2的22bit乘积按E0阶段输入的各自mult_e进行左移保留高42bit转换为42bit定点数。c1和c2根据其各自的指数直接转换为42bit定点数。这里乘积不是按照一般的浮点乘法先截取11bit后归一化为浮点数再送到下一阶段进行浮点加法的做法,而是保留22bit直接转化为42bit定点数送到下阶段做定点加法,这样可以得到更高的精度。
E2阶段,图9示出了E2阶段的电路框图,在该阶段中:巧妙的利用华莱士树(wallacetree),如图9所示,图中的两个选择器选择使用定点加法器上拍的输出还是c1作为华莱士树的输入。选择定点加法器上拍的输出则实现累加功能。mult1_fix和mult2_fix是E1阶段输出的42bit定点数乘积,是无符号数。符号由E0阶段各自输入的两个乘数和c1或c2的最高位-符号位决定。mult1_neg即mult1_fix的符号,1表示负数,0表示正数。以a1xb1+c1为例,a1符号位s=1,b1和c1的s都为0,mult1_neg=1;如a1和b1符号位s=0,c1的s=1,因为对c1没有取反操作,设置mult1_neg=1,在E3输出时将z1的s取反。mult1_neg=1即需要对mult1_fix取反加1再送入华莱士树的输入,Mult2_fix同理。取反在华莱士树的输入前实现,见图9的neg模块(实现了上述符号位运算模块的功能),而对mult1_fix加1和mult2_fix加1被巧妙地放在了定点加法器的两个输入端。见图9:
{wa1_c[44:1]wa1_in_mult2[44],wa1_in_mult1[44]}和{wa1_s,wa1_in_mult1[44]}
这样定点加法器扩宽1bit为46bit宽,而只需要取输出的高45bit即[45:1]。wa1_in_mult2[44]和wa1_in_mult1[44]分别是mult1_fix加1和mult2_fix最高bit,为1表示是负数需要取反加1。图9中clr模块的作用是将mult1_fix加1和mult2_fix中一个清除为零,即不需要加上其值。在涉及复数相乘、复数乘加和fft蝶形运算不启动clr模块,其他运算时都启动clr模块。零前导预测(Leading Zero Anticipation,简称为LZA)模块实现前导零预测功能,由于定点加法器时序很好,只需0.93ns,因此在本实施例中只对加法后结果进行前导零计数,不进行前导零预测。前导预测800多门,而只进行前导零计数400多门,这样做节省接近400门电路。图9中add1[45]=1对结果取反后再送入LZA,则可以在结果为负数时也是计算前导零数目,与结果为正数时一样。45bit的结果经过溢出(overflow)判断后取43bit一边送E3进行归一化和四舍五入,一边反馈到华莱士树输入,实现单拍累加。
E3阶段,图10示出了E3阶段的电路框图,在该阶段中:利用E2阶计算出的LZA结果对加法结果进行移位,并截取有效位的最高11比特作为归一化的结果,然后判断截取后端最低位进行四舍五入得到尾数结果,指数的结果通过固定值减去LZA结果得到,最后合并符号位,指数和尾数作为16bit浮点数输出。
综上所述,通过上述实施例,解决了相关技术中的浮点乘加器不能实现高频率下单拍累加而导致的问题,进而实现了浮点乘加器的工作在高频率下的单拍累加。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种浮点运算器,其特征在于包括:
浮点转定点模块,用于将输入到所述浮点转定点模块的浮点数转换为定点数,所述定点数为全精度定点数,所述全精度定点数为保留了被转换的浮点数的全部尾数的定点数;
所述定点加法模块,所述定点加法模块的输入端连接至所述浮点转定点模块的输出端,所述定点加法模块的输出端连接至所述定点加法模块的输入端,用于对所述浮点转定点模块输出的定点数和所述定点加法模块输出的定点数进行定点加法运算;
归一化模块,连接至所述定点加法模块的输出端,用于对所述定点加法模块的输出进行归一化处理转成与所述浮点运算器输入的比特位数相同的浮点数输出。
2.根据权利要求1所述的浮点运算器,其特征在于,
还包括:一个或多个浮点乘法模块,一个或多个所述浮点乘法模块的输出端连接至所述浮点转定点模块的输入端,用于对输入的浮点数进行浮点乘法的运算;
所述浮点转定点模块的输入端连接至所述浮点乘法模块的输出端,所述浮点转定点模块用于将所述浮点乘法模块的运算结果和/或来自所述浮点运算器的输入端的浮点数转换为定点数。
3.根据权利要求1或2所述的浮点运算器,其特征在于,
所述定点加法模块包括:一个或多个定点加法器;或者,
所述定点加法模块包括:一个或多个定点加法器,以及一个或多个华莱士树模块。
4.根据权利要求3所述的浮点运算器,其特征在于,还包括:选择器,所述选择器的两个输入端分别连接至所述浮点运算器的输入端和所述定点加法模块的输出端,所述选择器的输出端连接至所述定点加法模块的输入端,所述选择器用于选择向所述定点加法模块反馈所述定点加法模块的输出,或者向所述定点加法模块输入来自所述浮点运算器的输入端的经由所述浮点转定点模块转换成的定点数。
5.根据权利要求4所述的浮点运算器,其特征在于,所述华莱士树模块中的两个输入端分别连接至所述浮点转定点模块的输出端,用于将所述浮点乘法模块进行浮点乘法运算之后的浮点数转换成的定点数作为输入,所述华莱士树的另一个输入端连接至选择器的输出端,用于将来自所述选择器的输出作为所述华莱士树的另一个输入,其中,所述选择器的两个输入为定点加法模块的输出和来自所述浮点转定点模块将所述浮点运算器的输入端的浮点数转换得到的定点数。
6.根据权利要求2所述的浮点运算器,其特征在于,所述浮点乘法模块在将对输入的浮点数进行浮点乘法的运算之后,不进行归一化处理,将进行浮点乘法运算之后的结果直接输入到所述浮点转定点模块。
7.根据权利要求1或2所述的浮点运算器,其特征在于还包括:前导零预测模块,连接至所述定点加法模块的输出端,用于对所述定点加法模块的输出进行前导零计数。
8.根据权利要求1或2中任一项所述的浮点运算器,其特征在于,所述浮点运算器的输入端输入的浮点数小于或等于16比特。
9.一种浮点运算的处理方法,其特征在于包括:
将输入的浮点数转换为定点数,所述定点数为全精度定点数,所述全精度定点数为保留了被转换的浮点数的全部尾数的定点数;
对所述定点数进行定点加法运算;
对所述定点加法运算的结果进行归一化处理转成与所述输入的浮点数比特位数相同的浮点数输出。
10.根据权利要求9所述的方法,其特征在于,将输入的浮点数转换为定点数包括:将输入的浮点数进行浮点乘法的运算之后的浮点数转换为定点数,和/或,将直接输入的浮点数转换为定点数。
CN201110050039.0A 2011-03-02 2011-03-02 浮点运算器及浮点运算的处理方法 Active CN102103479B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110050039.0A CN102103479B (zh) 2011-03-02 2011-03-02 浮点运算器及浮点运算的处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110050039.0A CN102103479B (zh) 2011-03-02 2011-03-02 浮点运算器及浮点运算的处理方法

Publications (2)

Publication Number Publication Date
CN102103479A CN102103479A (zh) 2011-06-22
CN102103479B true CN102103479B (zh) 2015-06-10

Family

ID=44156284

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110050039.0A Active CN102103479B (zh) 2011-03-02 2011-03-02 浮点运算器及浮点运算的处理方法

Country Status (1)

Country Link
CN (1) CN102103479B (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104238992A (zh) * 2014-09-09 2014-12-24 南京航空航天大学 一种高性能非精确浮点加法器及其应用方法
US9582248B2 (en) * 2014-09-26 2017-02-28 Arm Limited Standalone floating-point conversion unit
CN107305485B (zh) * 2016-04-25 2021-06-08 中科寒武纪科技股份有限公司 一种用于执行多个浮点数相加的装置及方法
US10402168B2 (en) * 2016-10-01 2019-09-03 Intel Corporation Low energy consumption mantissa multiplication for floating point multiply-add operations
CN106502626A (zh) * 2016-11-03 2017-03-15 北京百度网讯科技有限公司 数据处理方法和装置
CN106557299B (zh) 2016-11-30 2019-08-30 上海兆芯集成电路有限公司 浮点操作数计算方法以及使用此方法的装置
GB2556645B (en) * 2017-03-24 2019-04-03 Imagination Tech Ltd Floating point to fixed point conversion
CN107256140A (zh) * 2017-06-09 2017-10-17 上海联影医疗科技有限公司 实现基于硬件加速的非标准浮点数重建算法的方法和设备
CN107562694A (zh) * 2017-08-23 2018-01-09 维沃移动通信有限公司 一种数据处理方法及移动终端
CN109522254B (zh) 2017-10-30 2022-04-12 上海寒武纪信息科技有限公司 运算装置及方法
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US10534578B1 (en) * 2018-08-27 2020-01-14 Google Llc Multi-input floating-point adder
CN109739555B (zh) * 2019-01-04 2023-06-16 腾讯科技(深圳)有限公司 包括乘累加模块的芯片、终端及控制方法
CN110069240B (zh) * 2019-04-30 2021-09-03 北京探境科技有限公司 定点与浮点数据计算方法及装置
CN110389746B (zh) * 2019-07-29 2021-04-23 中国电子科技集团公司第二十四研究所 硬件加速电路、微控制芯片及系统
US11907713B2 (en) 2019-12-28 2024-02-20 Intel Corporation Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6381624B1 (en) * 1999-04-29 2002-04-30 Hewlett-Packard Company Faster multiply/accumulator
US6205462B1 (en) * 1999-10-06 2001-03-20 Cradle Technologies Digital multiply-accumulate circuit that can operate on both integer and floating point numbers simultaneously
CN101082860A (zh) * 2007-07-03 2007-12-05 浙江大学 一种乘累加装置
CN101650642B (zh) * 2009-09-11 2011-01-05 杭州中天微系统有限公司 基于补码舍入的浮点加法装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
杨卫平.基本数据类型.《Visual Basic程序设计基础教程》.中国矿业大学出版社,2007,第18页. *

Also Published As

Publication number Publication date
CN102103479A (zh) 2011-06-22

Similar Documents

Publication Publication Date Title
CN102103479B (zh) 浮点运算器及浮点运算的处理方法
CN102722352B (zh) 一种Booth乘法器
CN102520903B (zh) 支持定浮点可重构的长度可配置的向量最大/最小值网络
Roesler et al. Novel optimizations for hardware floating-point units in a modern FPGA architecture
US8069200B2 (en) Apparatus and method for implementing floating point additive and shift operations
Choi et al. Energy-efficient design of processing element for convolutional neural network
CN104246690A (zh) 数字信号处理器中用于信号处理的系统和方法
Sheikh et al. An operand-optimized asynchronous IEEE 754 double-precision floating-point adder
CN108255777B (zh) 用于fpga的嵌入式浮点型dsp硬核结构
US8930433B2 (en) Systems and methods for a floating-point multiplication and accumulation unit using a partial-product multiplier in digital signal processors
CN110688086A (zh) 一种可重构的整型-浮点加法器
CN104991757A (zh) 一种浮点处理方法及浮点处理器
US9524270B2 (en) Operand-optimized asynchronous floating-point units and method of use thereof
CN102495714B (zh) 执行浮点减法的装置与方法
CN102004627B (zh) 乘法舍入实现方法和装置
CN101986259A (zh) 无符号定点除法及无符号定点除法器
CN104778026A (zh) 一种带simd的高速数据格式转换部件及转换方法
CN107092462B (zh) 一种基于fpga的64位异步乘法器
CN102411490B (zh) 一种针对动态可重构处理器的指令集的优化方法
CN103955585A (zh) 一种适用于低功耗容错电路的fir滤波器结构
Popoff et al. High-efficiency logarithmic number unit design based on an improved cotransformation scheme
CN102073473A (zh) 基于fpga的十进制浮点乘法器设计
Spoorthi et al. Low power datapath architecture for multiply-accumulate (mac) unit
CN103365826B (zh) 一种小面积的基-3fft蝶形单元
Kuang et al. Variable-latency floating-point multipliers for low-power applications

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
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20151105

Address after: Dameisha Yantian District of Shenzhen City, Guangdong province 518085 Building No. 1

Patentee after: SHENZHEN ZTE MICROELECTRONICS TECHNOLOGY CO., LTD.

Address before: 518057 Nanshan District science and technology, Guangdong Province, South Road, No. 55, No.

Patentee before: ZTE Corporation

EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20110622

Assignee: Xi'an Chris Semiconductor Technology Co. Ltd.

Assignor: SHENZHEN ZTE MICROELECTRONICS TECHNOLOGY CO., LTD.

Contract record no.: 2019440020036

Denomination of invention: Floating point calculator and processing method for floating point calculation

Granted publication date: 20150610

License type: Common License

Record date: 20190619

EE01 Entry into force of recordation of patent licensing contract