CN104111816A - Gpdsp中多功能simd结构浮点融合乘加运算装置 - Google Patents
Gpdsp中多功能simd结构浮点融合乘加运算装置 Download PDFInfo
- Publication number
- CN104111816A CN104111816A CN201410292856.0A CN201410292856A CN104111816A CN 104111816 A CN104111816 A CN 104111816A CN 201410292856 A CN201410292856 A CN 201410292856A CN 104111816 A CN104111816 A CN 104111816A
- Authority
- CN
- China
- Prior art keywords
- mantissa
- result
- unit
- multiply
- multiplication
- 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.)
- Granted
Links
Landscapes
- Complex Calculations (AREA)
Abstract
本发明公开一种GPDSP中多功能SIMD结构浮点融合乘加装置,包括:操作数准备模块,用于将输入的各操作数的符号、指数和尾数进行分离;尾数乘法模块,用于接收操作数准备模块输出的高位、低位乘法操作数的尾数并采用4个单精度乘法器并行执行各组尾数的尾数乘法,输出各尾数乘法结果至乘加计算模块;乘加计算模块,用于根据各个操作数的指数执行对阶移位,并根据加法操作数的尾数以及各尾数乘法结果执行乘加运算的尾数计算,得到尾数结果并输出。本发明支持SIMD结构的浮点乘加运算并能够直接支持点积和复数乘法运算,具有实现方法简单、延迟小、计算精度高且浮点运算效率高的优点。
Description
技术领域
本发明涉及数字信号处理领域,尤其涉及一种GPDSP中多功能SIMD结构浮点融合乘加运算装置。
背景技术
在3D图像处理、雷达信号处理和现代通信等应用领域中通常需要超高性能的数字信号处理器(DSP)对大量数据进行处理,因此对数字信号处理器DSP的计算精度和计算速度都提出更高要求。目前,越来越多DSP芯片集成浮点FMAC(Fused Multiply ACumulators,融合乘加运算)部件,实现IEEE-754标准单精度和双精度浮点融合乘加操作,以支持通用科学计算和数字信号处理应用。
在某些信号处理系统中,同时还经常需要高性能的浮点点积和复数运算操作,例如FFT算法中核心运算单元是执行蝶形运算,完成一个N点FFT需要进行(N/2)log2N次蝶形运算,每个蝶形运算包括一个复数乘法和两个复数加法,卷积等算法中核心操则为点积运算。因此浮点复数和点积运算操作的运算性能也直接影响这些算法的运算效率。
现有技术中,DSP芯片上的FMAC部件中只有实现单/双精度浮点乘法、乘加指令,而没有单独实现点积和复数操作的指令。如TI C66XX DSP芯片,只能通过浮点乘法和浮点加法操作组合完成复数运算,运算过程中需要进行三次舍入操作,分别为2次乘法结果尾数的舍入和1次浮点加法操作的舍入。因此,传统DSP芯片上的FMAC结构在处理包含大量点积和复数操作的运算时存在以下问题:
1)浮点点积运算由两个乘法和一个加法操作完成、复数乘法操作时执行两个乘法和两个加法操作,因此处理浮点点积和复数操作时的运算效率低,很难满足高性能GPDSP(General-Purpose DSP,通用数字信号处理器)芯片对各种算法的高效支持;
2)存在多次舍入操作,导致计算精度的降低;
3)应用编程代码量大,代码访存导致的cache缺失增加;
4)硬件复用率低,功能单一,利用浮点融合乘加结构,仅实现了浮点的乘法、加法和乘加运算功能。
综上所述,需要尽可能的复用传统浮点乘加装置,提供一种可直接支持点积和复数乘法运算的SIMD结构浮点乘加运算装置。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种支持SIMD结构的浮点乘加运算并能够直接支持点积和复数乘法运算、实现方法简单、计算精度高、浮点运算效率高的GPDSP中多功能SIMD结构浮点融合乘加运算装置。
为解决上述技术问题,本发明提出的技术方案为:
一种GPDSP中多功能SIMD结构浮点融合乘加运算装置,包括:
操作数准备模块,用于将输入的各操作数的符号、指数和尾数进行分离,分别获取高位、低位乘法操作数的尾数并输出至尾数乘法模块,将各个操作数的指数以及加法操作数的尾数输出至乘加计算模块;
尾数乘法模块,用于接收操作数准备模块输出的高位、低位乘法操作数的尾数并采用4个单精度乘法器并行执行各组尾数的尾数乘法,输出各尾数乘法结果至乘加计算模块;
乘加计算模块,用于根据所述各个操作数的指数执行对阶移位,并根据所述加法操作数的尾数以及所述各尾数乘法结果执行乘加运算的尾数计算,得到尾数结果并输出。
作为本发明的进一步改进:所述乘加计算模块包括双精度复用乘加计算单元、单精度复用乘加计算单元和结果尾数加法单元,所述双精度复用乘加计算单元执行双精度乘加运算、SIMD单精度乘加运算中高位部分或复数乘法运算中实部的尾数计算,输出第一尾数中间结果;所述单精度复用乘加计算单元执行SIMD单精度乘加运算中低位部分、点积运算或复数乘法运算中虚部的尾数计算,输出第二尾数中间结果;所述结果尾数加法单元接收所述第一尾数中间结果、第二尾数中间结果分别执行尾数的加法运算,根据所执行的运算类型得到乘加运算的尾数结果。
作为本发明的进一步改进:所述双精度复用乘加计算单元包括依次连接的第一阶差计算子单元、第一对阶移位子单元以及结果压缩子单元,所述第一阶差计算子单元输入双精度乘加运算、SIMD单精度乘加运算中高位部分或复数乘法运算中实部的各操作数的指数,根据所述各操作数的指数计算指数阶差;所述第一对阶移位子单元根据计算出的所述指数阶差对所述加法操作数的尾数进行对阶移位,得到对阶移位后的结果;所述结果压缩子单元接收所述对阶移位后的结果以及所述尾数乘法模块输出的所述尾数乘法结果并执行一级部分积压缩,得到第一尾数中间结果并输出至结果尾数加法单元。
作为本发明的进一步改进:所述单精度复用乘加计算单元包括依次连接的第二阶差计算子单元、尾数交换子单元以及第二对阶移位子单元;所述第二阶差计算子单元输入SIMD单精度乘加运算中低位部分、点积运算或复数乘法运算中虚部的各操作数的指数,根据所述各操作数的指数计算指数阶差;所述尾数交换子单元根据所述指数阶差将SIMD单精度乘加运算中低位部分对应的尾数乘法结果与加法操作数进行尾数交换,或所述尾数交换子单元根据所述指数阶差将点积运算中两个尾数乘法结果进行尾数交换,或所述尾数交换子单元根据所述指数阶差将复数乘法运算中虚部对应的两个尾数乘法结果进行尾数交换,将指数较小的尾数输出至所述第二对阶移位子单元并根据所述指数阶差进行对阶移位,得到对阶移位后的结果,指数较大的尾数及所述对阶移位后的结果输出至结果尾数加法单元。
作为本发明的进一步改进:所述第一阶差计算子单元、第二阶差计算子单元复用一个阶差计算部件,所述阶差计算部件包括高位部分和低位部分,所述高位部分复用计算SIMD单精度乘加运算中高部分或复数乘法运算中虚部的指数阶差,所述低位部分复用计算双精度乘加运算、SIMD单精度乘加运算中低位部分、点积或复数乘法运算中实部的指数阶差。
作为本发明的进一步改进:所述第一对阶移位子单元采用161位对阶移位器,所述第二对阶移位子单元采用50位对阶移位器。
作为本发明的进一步改进:所述结果尾数加法单元包括2个54位的复合加法器和一个54位的加法器;执行双精度乘加运算时,所述2个54位的复合加法器接收双精度复用乘加计算单元输出的第一尾数中间结果的低108位,进行加法运算得到低108位的尾数结果,并由所述54位的加法器根据第108位的进位计算高54位的尾数结果,得到双精度运算的尾数结果;执行SIMD单精度乘加运算时,所述2个54位的复合加法器分别接收双精度复用乘加计算单元输出的第一尾数中间结果的低108位、单精度复用乘加计算单元输出的指数较大的尾数、对阶移位后的结果,执行加法运算后得到SIMD单精度乘加运算的尾数结果。
作为本发明的进一步改进:所述尾数乘法模块中每个所述单精度乘法器包括部分积产生单元、4级压缩单元以及尾数加法器单元;部分积产生单元接收一组尾数并通过Booth编码产生15个部分积,经2级压缩单元将所述15个部分积压缩成6个部分积,再经过2级压缩单元将所述6个部分积压缩成2个部分积,所述2个部分积输出至尾数加法器单元进行加法运算,得到尾数乘法结果。
作为本发明的进一步改进:还包括与乘加计算模块连接的规格化处理模块,所述规格化处理模块包括前导0预测单元、规格化移位单元、指数修正单元以及舍入计算单元,所述前导0预测单元计算出乘加计算模块输出的尾数结果的前导0的个数,所述指数修正单元根据所述前导0个数对所述尾数结果的指数进行修正,所述规格化移位单元根据所述前导0个数对所述尾数结果进行规格化移位,规格化移位后的尾数结果由所述舍入计算单元根据舍入模式进行舍入计算,得到最终的尾数结果并写回。
作为本发明的进一步改进:所述前导0预测单元包括108位前导0预测子单元与51位前导0预测子单元,规格化移位单元包括108位规格化移位器和50位规格化移位器;双精度乘加运算、SIMD单精度乘加运算中低位部分、点积运算、复数乘法运算中实部复用108位前导0预测子单元计算前导0个数,根据前导0个数由108位规格化移位器进行移位;SIMD单精度运算中高位部分和复数乘法运算中虚部复用51位前导0预测子单元计算前导0的个数,根据前导0个数由50位规格化移位器进行规格化移位。
与现有技术相比,本发明的优点在于:
1)本发明通过复用一个尾数乘法模块实现双精度、单精度操作以及点积和复数乘法的尾数乘法,复用乘加计算模块实现双精度、单精度操作以及点积和复数乘法的尾数计算,使得在GPDSP中可直接实现点积、复数乘法运算,从而支持包括双精度浮点乘法、双精度浮点融合乘加/减、SIMD单精度浮点乘法、SIMD单精度浮点乘加/减、单精度浮点点积和复数乘法运算的8种IEEE-754标准浮点运算操作,能够有效提高浮点运算的计算精度及效率。
2)本发明采用4个单精度乘法器并行计算各尾数乘法,代替传统的双精度53*53尾数乘法器,使得能够复用尾数乘法模块实现复数乘法中所需的四个单精度乘法运算,从而能够在复用传统的浮点乘加部件的基础上支持点积和复数乘法运算并降低硬件的开销。
3)本发明将单精度复用乘加计算单元中第二对阶移位子单元设置于尾数交换子单元后,先进行尾数交换产生乘法尾数后再进行对阶移位操作,使得能够复用单精度复用乘加计算单元实现点积、复数乘法操作和单精度操作中对阶移位,实现点积、复数乘法操作的尾数计算同时降低硬件开销。
附图说明
图1是本实施例GPDSP中多功能SIMD结构浮点融合乘加运算装置结构示意图。
图2是本实施例中操作数准备模块具体实现原理示意图。
图3是本实施例中各类型运算的尾数乘法组成原理示意图。
图4是本实施例中尾数乘法模块结构示意图。
图5是本实施例中双精度复用乘加计算单元结构示意图。
图6是本实施例中单精度复用乘加计算单元的结构示意图。
图7是本实施例中阶差计算部件结构示意图。
图8是本实施例中结果尾数计算部件结构示意图。
图9是本实施例中结果尾数计算部件具体结构示意图。
图10是本实施例中双精度操作的结果尾数计算原理示意图。
图11是本实施例中规格化处理模块结构示意图。
图12是本发明具体实施例中SIMD结构浮点融合乘加运算装置具体结构示意图。
图例说明
1、操作数准备模块;2、尾数乘法模块;3、乘加计算模块;31、双精度复用乘加计算单元;311、第一阶差计算子单元;312、第一对阶移位子单元;313、结果压缩子单元;32、单精度复用乘加计算单元;321、第二阶差计算子单元;322、尾数交换子单元;323、第二对阶移位子单元;33、结果尾数加法单元;4、规格化处理模块;41、前导0预测单元;42、规格化移位单元;43、指数修正单元;44、舍入计算单元。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
如图1所示,本实施例GPDSP中多功能SIMD结构浮点融合乘加运算装置,包括:
操作数准备模块1,用于将输入的各操作数的符号、指数和尾数进行分离,分别获取高位、低位乘法操作数的尾数并输出至尾数乘法模块2,将各个操作数的指数以及加法操作数的尾数输出至乘加计算模块3;
尾数乘法模块2,用于接收操作数准备模块1输出的高位、低位乘法操作数的尾数并采用4个单精度乘法器并行执行所需的各组尾数的尾数乘法,输出各尾数乘法结果至乘加计算模块;
乘加计算模块3,用于根据各个操作数的指数执行对阶移位,并根据加法操作数的尾数以及各尾数乘法结果执行乘加运算的尾数计算,得到尾数结果并输出。
本实施例中SIMD结构融合乘加运算装置位于处理器的一条执行流水线上,其中处理器中的寄存器文件能够为该执行流水线提供3个读端口和1个写端口。输入双精度或SIMD单精度操作数A、B、C可执行双精度乘加运算或SIMD单精度乘加运算,其中A和B为执行乘法操作的乘法操作数,C为执行加法操作的加法操作数,乘减与乘加运算的实现原理相同,因此可执行包括乘减运算在内的双精度乘加/减(A*B±C)、SIMD单精度乘加/减(A2*B2±C2、A1*B1±C1)运算,其中A1、A2分别为SIMD单精度操作中操作数A的高位、低位操作数尾数,B1、B2分别为SIMD单精度操作中操作数B的高位、低位尾数,且当加法操作数C为0时可执行双精度乘法(A*B)、SIMD单精度乘法(A2*B2、A1*B1)运算。本实施例中SIMD结构融合乘加运算装置通过复用传统的浮点乘加部件还能够执行点积(A2*B2+A1*B1)或复数乘法(A2*B2-A1*B1、A2*B1+A1*B2)运算,即可实现双精度浮点乘法、SIMD单精度浮点乘法、双精度浮点融合乘加/减、SIMD单精度浮点乘加/减、单精度浮点点积和复数乘法运算的8种IEEE-754标准的浮点运算操作。
本实施例中,由操作数准备模块1对输入的双精度或单精度操作数A、B、C进行预处理,分离出符号、指数以及尾数并获取高位、低位尾数。操作数准备模块具体实现原理如图2所示,对于双精度操作数,分离出双精度操作数A、B和C的符号S、指数exp及尾数man,再将乘法操作数A、B分离出的53位尾数man进行高位补零扩展成54位,将操作数A的尾数manA的低27位输入到A1,获取到操作数A的低位尾数A1;将操作数A的尾数manA的高27位输入到A2,获取到操作数A的高位尾数A2;操作数B的处理方法与操作数A相同,获取操作数B的尾数manB的低27位输入到B1、高27位输入到B2;对于SIMD单精度的操作数,分离出高/低位单精度操作数A、B和C的符号S1/S2、指数exp1/exp2及尾数man1/man2,再将分离出的高/低位乘法操作数A和B的man1/man2分别由24位进行高位补零扩展成27位,获取低27位的操作数A的尾数manA1输入到A1、高27位的操作数A的尾数manA2输入到A2,获取低27位的操作数B的尾数manB1输入到B1、高27位的操作数B的尾数manB2输入到B2。
浮点乘加运算实现过程中,尾数乘法所占用的逻辑比较大,各类型浮点运算的尾数乘法组成原理如图3所示,对于双精度操作(双精度乘加/减法A*B±C、双精度乘法A*B),尾数乘法为manA*manB,需要4个27*27位乘法器完成尾数计算;对于单精度操作和点积运算(A2*B2+A1*B1),其中单精度操作包括SIMD单精度乘加/减(A2*B2±C2、A1*B1±C1)和SIMD单精度乘法(A2*B2、A1*B1),尾数乘法包括manA2*manB2、manA1*manB1,需要2个27*27位乘法器完成尾数计算;对于复数乘法操作(A2*B2-A1*B1、A2*B1+A1*B2),尾数乘法包括:manA2*manB2、manA2*manB1、manA1*manB2、manA1*manB1,需要4个27*27位乘法器完成尾数计算。
本实施例中,通过复用尾数乘法模块2计算双精度操作、单精度操作、点积运算以及复数乘法操作中所需的各组尾数的尾数乘法,尾数乘法模块结构如图4所示,包括4个27*27位同构乘法器HH、HL、LH和LL,并行执行manA2*manB2、manA2*manB1、manA1*manB2、manA1*manB1的尾数乘法计算,输出4个尾数乘法结果mul_HH、mul_HL、mul_LH以及mul_LL,其中将操作数准备模块1输出的尾数A2和B2输入到高位乘法器HH、A2和B1输入到乘法器HL、A1和B2输入到乘法器LH、A1和B1输入到低位乘法器LL。对于双精度操作和复数操作,乘法器HH、HL、LH以及LL均有效,分别完成manA2*manB2、manA2*manB1、manA1*manB2、manA1*manB1组合的尾数乘法计算;对于单精度操作以及点积运算,由于只需2个27*27位乘法器,则仅高位乘法器HH和低位乘法器LL乘法器有效,其余乘法器输入为0,具体为:使用高位乘法器HH完成SIMD单精度乘法运算中高位部分(A2*B2),SIMD单精度乘加/减运算中高位部分(A2*B2±C2)、点积运算(A2*B2+A1*B1)的尾数乘法manA2*manB2的计算,使用低位乘法器LL完成SIMD单精度乘加/减运算中低位部分(A1*B1±C1),SIMD单精度乘法运算中低位部分(A1*B1),点积运算(A2*B2+A1*B1)中尾数乘法manA1*manB1的计算。
本实施例采用4个27*27位单精度乘法器并行计算各组尾数乘法,代替传统的双精度53*53尾数乘法器,使得能够复用尾数乘法模块2实现复数乘法中所需的四个单精度乘法运算,从而能够在复用传统的浮点乘加部件的基础上支持点积和复数乘法运算并降低硬件的开销。
本实施例中,每一个27*27位乘法器具体包括部分积产生单元、第一~四级压缩单元以及尾数加法器单元,27*27位乘法器具体结构如图4所示,尾数加法器单元采用54位加法器。输入的各组尾数在部分积产生单元通过booth编码产生15个部分积,经第一、二级压缩单元将部分积压缩成6个,压缩后的6个部分积再经过第三、四级压缩单元压缩成2个,输出至64位加法器计算出乘法结果。
本实施例中,各条浮点运算指令占用同一流水线,每一周期仅执行其中一条指令,通过设计六级流水(E1~E6)分别实现双精度浮点乘法、双精度浮点融合乘加/减、SIMD单精度浮点乘法、SIMD单精度浮点乘加/减、单精度浮点点积和复数乘法运算。
本实施例中,尾数乘法模块2位于执行栈的第一(E1)和第二(E2)栈,通过4个27*27位乘法器并行执行乘法操作数的尾数乘法计算,其中booth编码和第一、二级压缩位于E1栈,第三、四级压缩和尾数加法位于E2栈。每个乘法器的具体执行流程为:在E1栈通过booth编码产生15个部分积,并通过第一、二级压缩将15个部分积压缩为6个;在E2栈对E1栈得到的6个部分积进行第三、四级压缩,得到2个部分积并输入到加法器中完成尾数乘法的计算。
本实施例中,乘加计算模块3包括双精度复用乘加计算单元31、单精度复用乘加计算单元32和结果尾数加法单元33,由双精度复用乘加计算单元31执行双精度乘加/减运算、双精度乘法运算、SIMD单精度乘加/减运算中的高位部分、SIMD单精度乘法运算中的高位部分或复数乘法运算中实部(A2*B2-A1*B1)的尾数计算,根据各个操作数的指数执行对阶移位后对加法操作数和各尾数乘法结果进行压缩求和,输出第一尾数中间结果;由单精度复用乘加计算单元32执行SIMD单精度乘加/减运算中的低位部分、SIMD单精度乘法运算中的低位部分、点积运算或复数乘法运算中虚部的尾数计算,根据各操作数的指数大小进行尾数交换后对指数较小的尾数执行对阶移位,输出第二尾数中间结果;结果尾数加法单元33接收第一尾数中间结果、第二尾数中间结果分别执行尾数的加法运算,根据所执行的运算类型得到乘加运算的尾数结果。
本实施例中,双精度复用乘加计算单元结构如图5所示,包括依次连接的第一阶差计算子单元311、第一对阶移位子单元312以及结果压缩子单元313。第一阶差计算子单元311输入双精度乘加/减运算、双精度乘法运算、SIMD单精度乘加/减运算的高位部分、SIMD单精度乘法运算中的高位部分或复数乘法运算中实部的各操作数的指数exp,根据各操作数的指数计算指数阶差expdiff;第一对阶移位子单元312根据计算出的指数阶差expdiff完成加法操作数C与A*B的对阶移位,得到加法操作数C对阶移位后的结果shiftmanC;结果压缩子单元313接收对阶移位后的结果shiftmanC以及尾数乘法模块2输出的4个尾数乘法结果(mul_HH、mul_HL、mul_LH以及mul_LL),执行一级部分积压缩,得到尾数中间结果Dsum、Dcarry,尾数中间结果Dsum、Dcarry通过结果尾数加法单元33进行相加得到乘加运算的尾数结果。
本实施例中,第一对阶移位子单元312采用161位对阶移位器,将对阶移位量和加法操作数C送入对阶移位器完成对阶,其中当指数阶差大于0时对阶移位量等于0,当指数阶差小于0时,将加法操作数C右移;当指数阶差小于-161时,由于加法操作数C已全部移出移位器作为粘结位,对阶移位量为161。由于指数阶差计算时,乘法的指数多加了56,将乘法尾数右移56位相当于将乘法尾数规定在161位对阶移位器的低106位,因此只需要对加法操作数C的尾数右移完成对阶。
本实施例中,结果压缩子单元313采用CSA4:2进位节省加法器构成的压缩单元,为压缩计算延时,将4个尾数乘法结果(mul_HH、mul_HL、mul_LH以及mul_LL)和对阶移位后的结果shiftmanC组成四个部分积输入CSA4:2压缩单元进行一级压缩,得到两个尾数中间结果Dsum、Dcarry,其中由对阶移位后的结果shiftmanC作为一个部分积输入、mul_HH和mul_LL组成一个部分积输入、mul_LH和mul_HL为另2个部分积输入,即四个部分积分别为{mul_HH、mul_LL}、{mul_HL、27’b0}、{mul_LH、27’b0}、shiftmanC。为了复用双精度复用乘加计算单元31实现SIMD单精度浮点乘加/减运算中高位部分的尾数计算,将SIMD单精度浮点乘加/减运算中高位部分中尾数乘法结果mul_HH和对阶移位后的结果shiftmanC组成输入CSA4:2压缩单元的四个部分积,四个部分积分别为{mul_HH、54’b0}、{0}、{0}、shiftmanC;为了复用双精度复用乘加计算单元31实现复数乘法运算中实部的尾数计算,将复数乘法运算中实部的两个尾数乘法结果mul_HH、mul_LL和对阶移位后的结果shiftmanC组成输入CSA4:2压缩单元的四个部分积,进行一级压缩得到两个尾数中间结果Dsum、Dcarry,其中四个部分积分别为{mul_HH}、{mul_LL}、{0}、shiftmanC。
本实施例中,双精度复用乘加计算单元31位于执行栈的第一(E1)、第二(E2)和第三(E3)栈,具体执行流程为:在E1栈完成双精度、SIMD单精度中高位部分和复数乘法运算中实部的操作数的指数阶差计算,在E2栈根据计算得出的指数阶差完成加法操作数C的对阶移位,得到对阶移位后的结果shiftmanC;在E3栈根据尾数乘法模块2输出的4个尾数乘法结果和shiftmanC执行第五级压缩,得到两个尾数中间结果Dsum、Dcarry。
执行双精度操作(双精度乘加/减运算、双精度乘法运算)计算时,第一阶差计算子单元311根据操作数的指数expA、expB和expC在E1栈计算指数阶差且指数阶差为:expdiff=expC-(expA+expB-1023+56);指数阶差计算完成之后直接在E2栈由161位对阶移位器对双精度加法操作数C进行对阶移位操作,对阶移位后的结果shiftmanC与4个尾数乘法结果在E3栈由CSA4:2压缩单元执行第五级压缩,即进行求和运算:A2*B2*254+A1*B1+A1*B2*227+A2*B1*227+shiftmanC,得到两个压缩部分积Dsum、Dcarry。CSA4:2压缩单元由4个尾数乘法结果和对阶移位后的结果shiftmanC组成四个部分积{mul_HH、mul_LL}、{mul_HL、27’b0}、{mul_LH、27’b0}、shiftmanC,分别对应于A2*B2*254+A1*B1、A1*B2*227、′A2*B1*227和shiftmanC。
执行SIMD单精度浮点乘加/减中的高位部分计算时,第一阶差计算子单元311在E1栈计算指数阶差且指数阶差为:expdiff=expC2-(expA2+expB2-127+56),在E2栈由161位对阶移位器对单精度加法操作数C进行对阶移位操作,在E3栈由CSA4:2压缩单元对SIMD单精度乘法中A2*B2尾数乘法(mul_HH)和对阶移位结果shiftmanC进行求和,即计算A2*B2*254+shiftmanC,其中CSA4:2压缩单元由尾数乘法结果mul_HH和对阶移位结果shiftmanC组成输入CSA4:2压缩单元的四个部分积{mul_HH、54’b0}、{0}、{0}、shiftmanC,进行一级压缩得到的两个中间结果Dsum、Dcarry。
执行复数乘法运算中实部(A2*B2-A1*B1)运算时,第一阶差计算子单元311在E1栈计算指数阶差且指数阶差为:expdiff=expA1+expB1-(expA2+expB2+56),在E2栈由161位对阶移位器进行对阶移位操作,CSA4:2压缩单元对单精度乘法中A2*B2的尾数乘法(mul_HH)、单精度乘法中A1*B1的尾数乘法中(mul_LL)和shiftmanC进行求和,即计算mul_HH+mul_LL+shiftmanC,其中CSA4:2压缩单元由两个尾数乘法结果mul_HH、mul_LL和对阶移位后的结果shiftmanC组成四个部分积{mul_HH}、{mul_LL}、{0}、shiftmanC,进行一级压缩得到的两个中间结果Dsum、Dcarry。
本实施例中,通过单精度复用乘加计算单元32完成SIMD单精度乘加/减运算中的低位部分、SIMD单精度乘法运算中的低位部分、点积、复数乘法运算中虚部的尾数计算。由于相对于双精度复用乘加计算单元31,单精度复用乘加计算单元32的计算位宽较小和计算延时较小,因此本实施例中单精度复用乘加计算单元32先进行阶差计算,然后对尾数进行交换,再进行对阶移位操作。单精度复用乘加计算单元结构如图6所示,包括依次连接的第二阶差计算子单元321、尾数交换子单元322以及第二对阶移位子单元323。第二阶差计算子单元321输入SIMD单精度乘加/减运算中低位部分、SIMD单精度乘法运算中的低位部分、点积运算或复数乘法运算中虚部的各操作数的指数,包括低位尾数的指数(exp)和高位尾数的指数(Hexp),根据各操作数的指数计算指数阶差;尾数交换子单元322根据计算得出的指数阶差进行尾数交换,当执行SIMD单精度乘加/减运算时,将SIMD单精度乘加/减运算的低位部分对应的尾数乘法结果与加法操作数C进行尾数交换,当执行点积运算或复数乘法运算时,将点积运算或复数乘法运算中虚部对应的两个单精度乘法尾数结果进行尾数交换,其中指数较小的尾数输出至第二对阶移位子单元323,由第二对阶移位子单元323根据指数阶差进行对阶移位,输出对阶移位后的结果;指数较大的尾数、对阶移位后的结果输出至结果尾数加法单元33进行加法运算,得到乘加运算的尾数结果。
本实施例中,单精度复用乘加计算单元32位于执行栈的第一(E1)、第二(E2)和第三(E3)栈,具体执行流程为:在E1栈完成点积、复数乘法的虚部或SIMD单精度操作的阶差计算,在E2栈完成点积或复数乘法操作的两个单精度乘法尾数交换,或SIMD单精度乘加/减运算的尾数乘法结果与加法操作数C尾数交换,在E3栈完成对指数较小的操作数的对阶移位。
对于SIMD单精度乘加/减运算的低位部分,指数阶差expdiff=expA1+expB1-expC1;对于点积运算,指数阶差expdiff=expA2+expB2-expA1-expB1;对于复数乘法中虚部,指数阶差expdiff=expA2+expB1-expA1-expB2。本实施例中,第一阶差计算子单元311、第二阶差计算子单元321复用一个阶差计算部件,即双精度操作和单精度操作复用一个阶差计算部件在E1栈执行指数阶差的计算,阶差计算部件结构如图7所示,阶差计算部件包括高位部分和低位部分,其中阶差计算部件的低位部分为双精度、单精度操作复用,执行双精度操作(双精度乘加/减、双精度乘法)、SIMD单精度操作(SIMD单精度乘加/减、SIMD单精度乘法)中低位部分、点积或复数乘法运算中实部的结果指数和指数阶差的计算;阶差计算部件的高位部分执行SIMD单精度操作(SIMD单精度乘加/减、SIMD单精度乘法)中高位部分、复数乘法运算中虚部的结果指数和指数阶差的计算。具体为:双精度操作(双精度乘法、双精度乘加/减运算)时,由阶差计算部件的低位部分计算指数阶差expdiff=expC-expAB,且乘法操作的指数expAB=expA+expB+const,const为常量56-1023;SIMD单精度操作(SIMD单精度乘法、SIMD单精度乘加/减运算)时,复用阶差计算部件的低位部分计算低位部分的指数阶差expdiff=expC1-expA1*B1,由阶差计算部件的高位部分计算高位部分的指数阶差Hexpdiff=HexpC-HexpAB,其中乘法操作的指数阶差HexpAB=expA2+expB2+const,HexpC为操作数C的高位尾数的指数expC2,const为常量-127;复数乘法运算时,复用阶差计算部件的低位部分计算实部的指数阶差expdiff=expA2*B2-expA1*B1,其中expA2*B2=expA2+expB2+const,expA1*B1=expA1+expB1+const,const为常量-127,由阶差计算部件的高位部分计算虚部的指数阶差Hexpdiff=expA2*B1-expA1*B2,其中expA2*B1=expA2+expB1+const,expA1*B2=expA1+expB2+const,const为常量-127;点积运算时,复用阶差计算部件的低位部分计算指数阶差expdiff=expA2*B2-expA1*B1。
本实施例中,尾数交换子单元322完成SIMD单精度操作的低位部分、点积运算、复数乘法运算中实部的尾数交换,其中SIMD单精度乘加/减运算中是将尾数乘法结果与加法操作数C进行尾数交换,点积、复数乘法操作中则是将两个单精度乘法的尾数乘法结果进行尾数交换,若低位指数阶差满足expdiff=expT1-expT2>0,T1、T2为进行尾数交换的操作数,将低位部分中指数较大的T1尾数输入到man1,指数较小的T2尾数输入到pre_shiftman1,否则将T2尾数输入到man1,T1输入到pre_shiftman1。
本实施例中,第二对阶移位子单元323采用50位对阶移位器,对尾数交换子单元322输出的指数较小的尾数进行对阶移。由于点积和复数乘法操作需要进行对阶移位的两个尾数都是来自乘法器,因此单精度复用乘加计算单元32中对阶移位器设置于乘法尾数产生后,使得能够实现点积、复数乘法操作和单精度操作对阶移位的硬件复用。
执行SIMD单精度乘/加减中低位部分计算时,第二阶差计算子单元321在E1栈根据低部分的指数expA1、expB1和expC1计算指数阶差expdiff=expA1+expB1-expC1;尾数交换子单元322在E2栈接收低位部分的单精度尾数乘法A1*B1的尾数结果mul_LL以及加法操作数C1并根据指数阶差进行尾数交换,若尾数结果mul_LL的指数大于加法操作数C1的指数大小,将加法操作数C1的尾数输入到pre_shiftman1,尾数结果mul_LL输入到man1,否则将尾数结果mul_LL输入到pre_shiftman1、加法操作数C1的尾数输入到man1;第二对阶移位子单元323在E3栈对指数较小的尾数pre_shiftman1进行对阶移位。
执行点积运算时,第二阶差计算子单元321在E1栈根据指数计算指数阶差expdiff=expA2+expB2-expA1-expB1;尾数交换子单元322在E2栈接收两个单精度尾数乘法A2*B2、A1*B1的尾数结果mul_HH、mul_LL并根据指数阶差进行尾数交换,若尾数结果mul_HH的指数大于尾数结果mul_LL的指数,将尾数结果mul_LL输入到pre_shiftman1、尾数结果mul_HH输入到man1,否则将尾数结果mul_HH输入到pre_shiftman1、尾数结果mul_LL输入到man1;第二对阶移位子单元323在E3栈对指数较小的尾数pre_shiftman1进行对阶移位。
执行复数乘法中虚部计算时,第二阶差计算子单元321在E1栈根据指数计算指数阶差expdiff=expA2+expB1-expA1-expB2;尾数交换子单元322在E2栈接收两个单精度尾数乘法A2*B1、A1*B2的尾数结果mul_HL、mul_LH并根据指数阶差进行尾数交换,若尾数结果mul_HL的指数大于尾数结果mul_LH的指数,将尾数结果mul_LH输入到pre_shiftman1、尾数结果mul_HL输入到man1,否则将尾数结果mul_HL输入到pre_shiftman1、尾数结果mul_LH输入到man1;第二对阶移位子单元323在E3栈对指数较小的尾数pre_shiftman1进行对阶移位。
本实施例中,结果尾数加法单元33结构如图8、9所示,包括2个54位的复合加法器(复合加法器1#、复合加法器2#)和1个54位的加法器,复用实现双精度操作、单精度操作的尾数结果的加法运算。结果尾数加法单元33位于执行栈的第三(E3)栈,当执行双精度运算操作时,将双精度复用乘加计算单元31输出的尾数中间结果Dsum、Dcarry的低108位输入到两个复合加法器完成双精度操作低108位的尾数计算,并根据第108位的进位计算高54位的尾数;当执行SIMD单精度运算操作、点积或复数乘法运算时,通过复用两个54位复合加法器实现尾数结果的加法运算。由于单精度对阶移位后的点积、复数乘法运算与SIMD单精度乘加/减运算完全相同,因此所有单精度操作在结果尾数加法单元33中都按照SIMD单精度操作处理。
结果尾数加法单元33的具体执行流程为:当执行双精度运算操作时,如图10所示,将双精度复用乘加计算单元31输出的尾数中间结果Dsum、Dcarry中Dsum[52:0]和Dcarry[52:0]输入到复合加法器1#,将Dsum[107:53]、Dcarry[107:53]输入到复合加法器2#,Dcarry[160:107]为全0,Dsum[160:107]由54位的加法器根据低位的进位完成加1操作,得到尾数结果为:result0=A+B、result1=A+B+1,其中若尾数manAB和对阶移位后的结果shiftmanC实际执行的是加法操作,即执行乘加运算时,结果result=A+B=result0;若执行乘减运算且结果为负则尾数结果result=~(A+B+1)+1=~result0,若执行乘减运算且结果为正时则尾数结果等于result1。当执行SIMD单精度操作时,低部分通过单精度复用乘加计算单元32计算,输出的man1,shiftman1输入到低位的复合加法器1#计算得到低部分的尾数结果,高位部分复用双精度复用乘加计算单元31进行计算,输出的尾数中间结果Dsum[107:53]和Dcarry[107:53]通过复合加法器2#相加得到高部分的尾数结果,且尾数结果为:result0=A+B和result1=A+B+1;若单精度乘法尾数manAB和对阶移位后的结果shiftman1实际执行的是加法操作,即乘加运算时,尾数结果result=A+B=result0;若执行的是乘减法操作且结果为负则尾数结果result=~(A+B+1)+1=~result0,若执行的是乘减法操作、结果为正且粘结位sticky=0则尾数结果等于result1,否则尾数结果等于result0。
本实施例中,还包括与乘加计算模块3连接的规格化处理模块4,对尾数结果进行规格化处理以及舍入处理并写回。规格化处理模块具体结构如图11所示,包括前导0预测单元41、规格化移位单元42、指数修正单元43和舍入计算单元44。前导0预测单元41计算出乘加计算模块3输出的尾数结果的前导0的个数,指数修正单元43根据前导0个数对尾数结果的指数进行修正,规格化移位单元42根据前导0个数对尾数结果进行规格化移位,规格化移位后的尾数结果由舍入计算单元44根据舍入模式进行舍入计算,将尾数结果表示成符合IEEE-754标准的尾数,得到最终的尾数结果并写回。
本实施例中,前导0预测单元41包括108位前导0预测子单元与51位前导0预测子单元,规格化移位单元42包括108位规格化移位器和51位规格化移位器,舍入计算单元44包括两个舍入计算子单元,分别与108位规格化移位器和51位规格化移位器连接。双精度操作、SIMD单精度操作中低位部分、点积、复数乘法运算中实部复用108位前导0预测子单元,当执行双精度操作时若加法操作数C较大则将尾数结果result的高108位输出至108位规格化移位器进行规格化移位,否则将尾数结果result的低108位输出至108位规格化移位器;当执行SIMD单精度操作中低位部分,只需将50位尾数结果低位补充58个0输出到108位前导0预测子单元,输出结果尾数高位0的个数。51位前导0预测子单元为SIMD单精度操作中高位部分和复数乘法运算中虚部复用,输出E3栈中复合加法器2#输出的尾数结果中高位0的个数,再根据前导0的个数经过51位规格化移位器进行规格化移位。
本实施例中,规格化处理模块位于执行栈的第四(E4)、第五(E5)、第六(E6)栈,在E3栈完成尾数结果的加法运算,在E4栈完成前导0预测操作数选择,执行前导0预测;在E5栈完成前导0预测后的指数修正及规格化移位操作;在E6栈完成结果尾数的例外判断和结果写回。
本实施例通过复用六级(E1~E6)流水的双精度通路和单精度通路执行双精度浮点乘法、SIMD单精度浮点乘法、双精度浮点融合乘加/减、SIMD单精度浮点乘加/减、单精度浮点点积和复数乘法运算的8种IEEE-754标准的浮点运算操作,浮点运算精度高且执行效率高,同时可采用一条复数指令代替传统浮点运算中的6条浮点指令,使浮点运算所需的代码量大大减少。
如图12所示,本实施例中GPDSP中多功能SIMD结构浮点融合乘加运算装置的具体结构,其中虚线表示六级(E1~E6)流水划分,尾数乘法模块2位于E1、E2栈(如图4所示),乘加计算模块3位于E1、E2、E3栈,规格化处理模块4位于E4、E5和E6栈。通过复用4个27位定点乘法器执行各类型操作的尾数乘法,输出四个乘法结果(mul_HH、mul_HL、mul_LH以及mul_LL),第一阶差计算子单元311、第二阶差计算子单元321复用阶差计算部件完成;双精度复用乘加计算单元31还包括161位对阶移位器和CSA4:2压缩单元,可通过复用传统浮点乘加部件中双精度运算通路实现,执行双精度操作、SIMD单精度操作中高位部分、复数乘法操作中虚部的尾数计算;单精度复用乘加计算单元32还包括尾数交换逻辑以及50位对阶移位器,可通过复用传统浮点乘加部件中单精度运算通路实现,执行SIMD单精度操作中低位部分、点积操作、复数乘法操作中实部的尾数计算;双精度、单精度操作的尾数结果的加法运算通过复用结果尾数加法单元33执行,并通过复用规格化处理模块4进行规格化移位以及舍入计算的规格化处理。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围的情况下,都可利用上述揭示的技术内容对本发明技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。
Claims (10)
1.GPDSP中多功能SIMD结构浮点融合乘加运算装置,其特征在于,包括:
操作数准备模块(1),用于将输入的各操作数的符号、指数和尾数进行分离,分别获取高位、低位乘法操作数的尾数并输出至尾数乘法模块(2),将各个操作数的指数以及加法操作数的尾数输出至乘加计算模块(3);
尾数乘法模块(2),用于接收操作数准备模块(1)输出的高位、低位乘法操作数的尾数并采用4个单精度乘法器并行执行各组尾数的尾数乘法,输出各尾数乘法结果至乘加计算模块;
乘加计算模块(3),用于根据所述各个操作数的指数执行对阶移位,并根据所述加法操作数的尾数以及所述各尾数乘法结果执行乘加运算的尾数计算,得到尾数结果并输出。
2.根据权利要求1所述GPDSP中多功能SIMD结构浮点融合乘加运算装置,其特征在于:所述乘加计算模块(3)包括双精度复用乘加计算单元(31)、单精度复用乘加计算单元(32)和结果尾数加法单元(33),所述双精度复用乘加计算单元(31)执行双精度乘加运算、SIMD单精度乘加运算中高位部分或复数乘法运算中实部的尾数计算,输出第一尾数中间结果;所述单精度复用乘加计算单元(32)执行SIMD单精度乘加运算中低位部分、点积运算或复数乘法运算中虚部的尾数计算,输出第二尾数中间结果;所述结果尾数加法单元(33)接收所述第一尾数中间结果、第二尾数中间结果分别执行尾数的加法运算,根据所执行的运算类型得到乘加运算的尾数结果。
3.根据权利要求2所述GPDSP中多功能SIMD结构浮点融合乘加运算装置,其特征在于:所述双精度复用乘加计算单元(31)包括依次连接的第一阶差计算子单元(311)、第一对阶移位子单元(312)以及结果压缩子单元(313),所述第一阶差计算子单元(311)输入双精度乘加运算、SIMD单精度乘加运算中高位部分或复数乘法运算中实部的各操作数的指数,根据所述各操作数的指数计算指数阶差;所述第一对阶移位子单元(312)根据计算出的所述指数阶差对所述加法操作数的尾数进行对阶移位,得到对阶移位后的结果;所述结果压缩子单元(313)接收所述对阶移位后的结果以及所述尾数乘法模块(2)输出的所述尾数乘法结果并执行一级部分积压缩,得到第一尾数中间结果并输出至结果尾数加法单元(33)。
4.根据权利要求3所述GPDSP中多功能SIMD结构浮点融合乘加运算装置,其特征在于:所述单精度复用乘加计算单元(32)包括依次连接的第二阶差计算子单元(321)、尾数交换子单元(322)以及第二对阶移位子单元(323);所述第二阶差计算子单元(321)输入SIMD单精度乘加运算中低位部分、点积运算或复数乘法运算中虚部的各操作数的指数,根据所述各操作数的指数计算指数阶差;所述尾数交换子单元(322)根据所述指数阶差将SIMD单精度乘加运算中低位部分对应的尾数乘法结果与加法操作数进行尾数交换,或所述尾数交换子单元(322)根据所述指数阶差将点积运算中两个尾数乘法结果进行尾数交换,或所述尾数交换子单元(322)根据所述指数阶差将复数乘法运算中虚部对应的两个尾数乘法结果进行尾数交换,将指数较小的尾数输出至所述第二对阶移位子单元(323)并根据所述指数阶差进行对阶移位,得到对阶移位后的结果,指数较大的尾数及所述对阶移位后的结果输出至结果尾数加法单元(33)。
5.根据权利要求4所述GPDSP中多功能SIMD结构浮点融合乘加运算装置,其特征在于:所述第一阶差计算子单元(311)、第二阶差计算子单元(321)复用一个阶差计算部件,所述阶差计算部件包括高位部分和低位部分,所述高位部分复用计算SIMD单精度乘加运算中高部分或复数乘法运算中虚部的指数阶差,所述低位部分复用计算双精度乘加运算、SIMD单精度乘加运算中低位部分、点积或复数乘法运算中实部的指数阶差。
6.根据权利要求4或5所述GPDSP中多功能SIMD结构浮点融合乘加运算装置,其特征在于:所述第一对阶移位子单元(312)采用161位对阶移位器,所述第二对阶移位子单元(323)采用50位对阶移位器。
7.根据权利要求3或4或5所述GPDSP中多功能SIMD结构浮点融合乘加运算装置,其特征在于:所述结果尾数加法单元(33)包括2个54位的复合加法器和一个54位的加法器;执行双精度乘加运算时,所述2个54位的复合加法器接收双精度复用乘加计算单元(31)输出的第一尾数中间结果的低108位,进行加法运算得到低108位的尾数结果,并由所述54位的加法器根据第108位的进位计算高54位的尾数结果,得到双精度乘加运算的尾数结果;执行SIMD单精度乘加运算时,所述2个54位的复合加法器分别接收双精度复用乘加计算单元(31)输出的第一尾数中间结果的低108位、单精度复用乘加计算单元(32)输出的指数较大的尾数及对阶移位后的结果,执行加法运算后得到SIMD单精度乘加运算的尾数结果。
8.根据权利要求1~5中任意一项所述GPDSP中多功能SIMD结构浮点融合乘加运算装置,其特征在于:所述尾数乘法模块(2)中每个所述单精度乘法器包括部分积产生单元、4级压缩单元以及尾数加法器单元;部分积产生单元接收一组尾数并通过Booth编码产生15个部分积,经2级压缩单元将所述15个部分积压缩成6个部分积,再经过2级压缩单元将所述6个部分积压缩成2个部分积,所述2个部分积输出至尾数加法器单元进行加法运算,得到尾数乘法结果。
9.根据权利要求1~5中任意一项所述GPDSP中多功能SIMD结构浮点融合乘加运算装置,其特征在于:还包括与乘加计算模块(3)连接的规格化处理模块(4),所述规格化处理模块(4)包括前导0预测单元(41)、规格化移位单元(42)、指数修正单元(43)以及舍入计算单元(44),所述前导0预测单元(41)计算出乘加计算模块(3)输出的尾数结果的前导0的个数,所述指数修正单元(43)根据所述前导0个数对所述尾数结果的指数进行修正,所述规格化移位单元(42)根据所述前导0个数对所述尾数结果进行规格化移位,规格化移位后的尾数结果由所述舍入计算单元(44)根据舍入模式进行舍入计算,得到最终的尾数结果并写回。
10.根据权利要求9所述GPDSP中多功能SIMD结构浮点融合乘加运算装置,其特征在于:所述前导0预测单元(41)包括108位前导0预测子单元与51位前导0预测子单元,规格化移位单元(42)包括108位规格化移位器和50位规格化移位器;双精度乘加运算、SIMD单精度乘加运算中低位部分、点积运算、复数乘法运算中实部复用108位前导0预测子单元计算前导0个数,根据前导0个数由108位规格化移位器进行移位;SIMD单精度运算中高位部分和复数乘法运算中虚部复用51位前导0预测子单元计算前导0的个数,根据前导0个数由50位规格化移位器进行规格化移位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410292856.0A CN104111816B (zh) | 2014-06-25 | 2014-06-25 | Gpdsp中多功能simd结构浮点融合乘加运算装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410292856.0A CN104111816B (zh) | 2014-06-25 | 2014-06-25 | Gpdsp中多功能simd结构浮点融合乘加运算装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104111816A true CN104111816A (zh) | 2014-10-22 |
CN104111816B CN104111816B (zh) | 2017-04-12 |
Family
ID=51708617
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410292856.0A Active CN104111816B (zh) | 2014-06-25 | 2014-06-25 | Gpdsp中多功能simd结构浮点融合乘加运算装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104111816B (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104991757A (zh) * | 2015-06-26 | 2015-10-21 | 浪潮(北京)电子信息产业有限公司 | 一种浮点处理方法及浮点处理器 |
CN106250098A (zh) * | 2015-06-12 | 2016-12-21 | Arm 有限公司 | 用于在执行浮点运算时控制舍入的装置及方法 |
CN108459840A (zh) * | 2018-02-14 | 2018-08-28 | 中国科学院电子学研究所 | 一种simd结构浮点融合点乘运算单元 |
CN108958705A (zh) * | 2018-06-26 | 2018-12-07 | 天津飞腾信息技术有限公司 | 一种支持混合数据类型的浮点融合乘加器及其应用方法 |
CN109032563A (zh) * | 2018-07-03 | 2018-12-18 | 中国人民解放军国防科技大学 | 一种加速桥接融合乘加的方法及装置 |
CN109977348A (zh) * | 2019-04-03 | 2019-07-05 | 加特兰微电子科技(上海)有限公司 | 数据压缩方法及装置、存储介质、雷达系统 |
WO2020015076A1 (zh) * | 2018-07-18 | 2020-01-23 | 平安科技(深圳)有限公司 | 人脸图像比对方法、装置、计算机设备及存储介质 |
WO2020015075A1 (zh) * | 2018-07-18 | 2020-01-23 | 平安科技(深圳)有限公司 | 人脸图像比对方法、装置、计算机设备及存储介质 |
CN110865792A (zh) * | 2018-08-28 | 2020-03-06 | 中科寒武纪科技股份有限公司 | 数据预处理方法、装置、计算机设备和存储介质 |
CN111142840A (zh) * | 2019-12-27 | 2020-05-12 | 深圳鲲云信息科技有限公司 | 基于fpga的数据计算方法和装置 |
CN112148371A (zh) * | 2019-06-27 | 2020-12-29 | 北京地平线机器人技术研发有限公司 | 基于单指令多数据流的数据运算方法、装置、介质和设备 |
CN112860220A (zh) * | 2021-02-09 | 2021-05-28 | 南方科技大学 | 一种适用于多精度计算的可重构浮点乘加运算单元及方法 |
CN113010146A (zh) * | 2021-03-05 | 2021-06-22 | 唐山恒鼎科技有限公司 | 一种混合信号乘法器 |
CN114327360A (zh) * | 2020-09-29 | 2022-04-12 | 华为技术有限公司 | 运算单元、浮点数计算的方法、装置、芯片和计算设备 |
CN116127255A (zh) * | 2022-12-14 | 2023-05-16 | 北京登临科技有限公司 | 卷积运算电路、及具有该卷积运算电路的相关电路或设备 |
WO2023231363A1 (zh) * | 2022-06-01 | 2023-12-07 | 寒武纪(西安)集成电路有限公司 | 乘累加操作数的方法及其设备 |
CN117251132A (zh) * | 2023-09-19 | 2023-12-19 | 上海合芯数字科技有限公司 | 定浮点simd乘加指令融合处理装置、方法及处理器 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101986264A (zh) * | 2010-11-25 | 2011-03-16 | 中国人民解放军国防科学技术大学 | 用于simd向量微处理器的多功能浮点乘加运算装置 |
-
2014
- 2014-06-25 CN CN201410292856.0A patent/CN104111816B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101986264A (zh) * | 2010-11-25 | 2011-03-16 | 中国人民解放军国防科学技术大学 | 用于simd向量微处理器的多功能浮点乘加运算装置 |
Non-Patent Citations (7)
Title |
---|
DAVID R. LUTZ 等: ""Fused Multiply-Add Microarchitecture Comprising Separate Early-Normalizing Multiply and Add Pipelines"", 《2011 20TH IEEE SYMPOSIUM ON COMPUTER ARITHMETIC》 * |
吴铁彬等: ""一种快速SIMD浮点乘加器的设计与实现"", 《计算机工程与科学》 * |
李秋亮: ""高性能128位浮点乘加部件优化设计技术研究"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
林宗华等: ""一种64位SIMD定点乘加器的设计与验证"", 《第十七届计算机工程与工艺年会暨第三届微处理器技术论坛论文集》 * |
田甜等: ""高性能浮点融合运算部件的设计与实现"", 《计算机科学》 * |
赵芮等: ""SIMD浮点乘加部件的设计与验证"", 《第十七届计算机工程与工艺年会暨第三届微处理器技术论坛论文集》 * |
黄立波等: ""一种低成本128位高精度浮点SIMD乘加单元的设计与实现"", 《计算机工程与科学》 * |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106250098A (zh) * | 2015-06-12 | 2016-12-21 | Arm 有限公司 | 用于在执行浮点运算时控制舍入的装置及方法 |
CN104991757A (zh) * | 2015-06-26 | 2015-10-21 | 浪潮(北京)电子信息产业有限公司 | 一种浮点处理方法及浮点处理器 |
CN108459840B (zh) * | 2018-02-14 | 2021-07-09 | 中国科学院电子学研究所 | 一种simd结构浮点融合点乘运算单元 |
CN108459840A (zh) * | 2018-02-14 | 2018-08-28 | 中国科学院电子学研究所 | 一种simd结构浮点融合点乘运算单元 |
CN108958705A (zh) * | 2018-06-26 | 2018-12-07 | 天津飞腾信息技术有限公司 | 一种支持混合数据类型的浮点融合乘加器及其应用方法 |
CN108958705B (zh) * | 2018-06-26 | 2021-11-12 | 飞腾信息技术有限公司 | 一种支持混合数据类型的浮点融合乘加器及其应用方法 |
CN109032563A (zh) * | 2018-07-03 | 2018-12-18 | 中国人民解放军国防科技大学 | 一种加速桥接融合乘加的方法及装置 |
CN109032563B (zh) * | 2018-07-03 | 2021-08-06 | 中国人民解放军国防科技大学 | 一种加速桥接融合乘加的方法及装置 |
WO2020015076A1 (zh) * | 2018-07-18 | 2020-01-23 | 平安科技(深圳)有限公司 | 人脸图像比对方法、装置、计算机设备及存储介质 |
WO2020015075A1 (zh) * | 2018-07-18 | 2020-01-23 | 平安科技(深圳)有限公司 | 人脸图像比对方法、装置、计算机设备及存储介质 |
CN110865792A (zh) * | 2018-08-28 | 2020-03-06 | 中科寒武纪科技股份有限公司 | 数据预处理方法、装置、计算机设备和存储介质 |
CN110865792B (zh) * | 2018-08-28 | 2021-03-19 | 中科寒武纪科技股份有限公司 | 数据预处理方法、装置、计算机设备和存储介质 |
CN109977348B (zh) * | 2019-04-03 | 2023-06-23 | 加特兰微电子科技(上海)有限公司 | 数据压缩方法及装置、存储介质、雷达系统 |
CN109977348A (zh) * | 2019-04-03 | 2019-07-05 | 加特兰微电子科技(上海)有限公司 | 数据压缩方法及装置、存储介质、雷达系统 |
CN112148371B (zh) * | 2019-06-27 | 2023-10-24 | 北京地平线机器人技术研发有限公司 | 基于单指令多数据流的数据运算方法、装置、介质和设备 |
CN112148371A (zh) * | 2019-06-27 | 2020-12-29 | 北京地平线机器人技术研发有限公司 | 基于单指令多数据流的数据运算方法、装置、介质和设备 |
CN111142840A (zh) * | 2019-12-27 | 2020-05-12 | 深圳鲲云信息科技有限公司 | 基于fpga的数据计算方法和装置 |
CN111142840B (zh) * | 2019-12-27 | 2023-06-09 | 深圳鲲云信息科技有限公司 | 基于fpga的数据计算方法和装置 |
CN114327360A (zh) * | 2020-09-29 | 2022-04-12 | 华为技术有限公司 | 运算单元、浮点数计算的方法、装置、芯片和计算设备 |
CN112860220A (zh) * | 2021-02-09 | 2021-05-28 | 南方科技大学 | 一种适用于多精度计算的可重构浮点乘加运算单元及方法 |
CN113010146B (zh) * | 2021-03-05 | 2022-02-11 | 唐山恒鼎科技有限公司 | 一种混合信号乘法器 |
CN113010146A (zh) * | 2021-03-05 | 2021-06-22 | 唐山恒鼎科技有限公司 | 一种混合信号乘法器 |
WO2023231363A1 (zh) * | 2022-06-01 | 2023-12-07 | 寒武纪(西安)集成电路有限公司 | 乘累加操作数的方法及其设备 |
CN116127255A (zh) * | 2022-12-14 | 2023-05-16 | 北京登临科技有限公司 | 卷积运算电路、及具有该卷积运算电路的相关电路或设备 |
CN116127255B (zh) * | 2022-12-14 | 2023-10-03 | 北京登临科技有限公司 | 卷积运算电路、及具有该卷积运算电路的相关电路或设备 |
CN117251132A (zh) * | 2023-09-19 | 2023-12-19 | 上海合芯数字科技有限公司 | 定浮点simd乘加指令融合处理装置、方法及处理器 |
CN117251132B (zh) * | 2023-09-19 | 2024-05-14 | 上海合芯数字科技有限公司 | 定浮点simd乘加指令融合处理装置、方法及处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN104111816B (zh) | 2017-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104111816A (zh) | Gpdsp中多功能simd结构浮点融合乘加运算装置 | |
CN106951211B (zh) | 一种可重构定浮点通用乘法器 | |
CN102629189B (zh) | 基于fpga的流水浮点乘累加方法 | |
CN103176767B (zh) | 一种低功耗高吞吐的浮点数乘累加单元的实现方法 | |
CN105335127A (zh) | Gpdsp中支持浮点除法的标量运算单元结构 | |
US20090113169A1 (en) | Reconfigurable array processor for floating-point operations | |
US20090198974A1 (en) | Methods for conflict-free, cooperative execution of computational primitives on multiple execution units | |
Sutikno | An efficient implementation of the non restoring square root algorithm in gate level | |
CN101916177B (zh) | 一种可配置多精度定点乘加装置 | |
CN105607889A (zh) | Gpdsp共享乘法器结构的定点浮点运算部件 | |
JP2012084142A5 (zh) | ||
CN105389157A (zh) | 基于Goldschmidt算法的浮点除法器 | |
JP2008250471A (ja) | 再構成可能なsimd型プロセッサ | |
CN103984521A (zh) | Gpdsp中simd结构浮点除法的实现方法及装置 | |
CN102360281B (zh) | 用于微处理器的多功能定点乘加单元mac运算装置 | |
CN104407836A (zh) | 利用定点乘法器进行级联乘累加运算的装置和方法 | |
CN101770355B (zh) | 兼容双精度和双单精度的浮点乘加器及其兼容处理方法 | |
CN103135960A (zh) | 一种基于fpga的集成浮点运算器的设计方法 | |
US8019805B1 (en) | Apparatus and method for multiple pass extended precision floating point multiplication | |
Vázquez et al. | Iterative algorithm and architecture for exponential, logarithm, powering, and root extraction | |
RU185346U1 (ru) | Векторный мультиформатный умножитель | |
CN202281998U (zh) | 一种标量浮点运算加速器 | |
KR20140138053A (ko) | 특히 함수 모델을 순수 하드웨어에 기초하여 연산하기 위한 함수 모델 유닛 내에서 사용하기 위한 fma 유닛 | |
US9575725B1 (en) | Specialized processing block with embedded pipelined accumulator circuitry | |
CN102693118A (zh) | 一种标量浮点运算加速器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |