CN108459840B - 一种simd结构浮点融合点乘运算单元 - Google Patents

一种simd结构浮点融合点乘运算单元 Download PDF

Info

Publication number
CN108459840B
CN108459840B CN201810151553.5A CN201810151553A CN108459840B CN 108459840 B CN108459840 B CN 108459840B CN 201810151553 A CN201810151553 A CN 201810151553A CN 108459840 B CN108459840 B CN 108459840B
Authority
CN
China
Prior art keywords
mantissa
simd
bit
bits
carry
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
CN201810151553.5A
Other languages
English (en)
Other versions
CN108459840A (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.)
Institute of Electronics of CAS
University of Chinese Academy of Sciences
Original Assignee
Institute of Electronics of CAS
University of Chinese Academy of Sciences
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 Institute of Electronics of CAS, University of Chinese Academy of Sciences filed Critical Institute of Electronics of CAS
Priority to CN201810151553.5A priority Critical patent/CN108459840B/zh
Publication of CN108459840A publication Critical patent/CN108459840A/zh
Application granted granted Critical
Publication of CN108459840B publication Critical patent/CN108459840B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Landscapes

  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Nonlinear Science (AREA)
  • Complex Calculations (AREA)

Abstract

本公开提供了一种SIMD结构浮点融合点乘运算单元,其操作数提取与尾数准备模块将操作数的符号位、指数位和尾数位分离;指数与符号预处理模块比较指数位的大小,计算阶差和符号;SIMD部分积乘法与对齐运算单元对尾数进行相乘、补零和右移对齐等操作;SIMD双路加法树压缩模块对对齐后的尾数乘积结果进行四操作数的加法压缩;SIMD双加法舍入路径处理单元进行尾数求和、舍入、尾数乘积大小比较选择操作,得到尾数结果;规格化处理模块对尾数进行前导零检测、规格化左移,对指数位进行调整修正,计算符号位。本公开支持单通道单精度浮点点乘运算和双通道半精度浮点点乘运算,支持两种浮点精度可重构、实现面积小、工作速度高、计算精度高和浮点运算能效水平高。

Description

一种SIMD结构浮点融合点乘运算单元
技术领域
本公开涉及数字信号处理领域,尤其涉及一种SIMD结构浮点融合点乘运算单元。
背景技术
在高精度科学计算、高分辨率雷达成像和三维图像处理等高性能计算应用系统中通常涉及到大量的浮点运算操作,为满足此类应用的高通量处理需求,当前主流的图像处理器GPU和数字信号处理器DSP中都集成了同时支持符合IEEE754标准不同精度的专用浮点运算单元。
浮点点乘运算由两个浮点乘法和一个浮点加法构成,一个完整的浮点复数乘法需要执行两次浮点点乘操作。在某些信号处理算法中,如快速傅里叶变换FFT,浮点点乘作为蝶形运算中浮点复数乘法的核心操作,其运算性能也直接成为影响整个算法执行效率的关键。然而,与定点数运算相比,浮点数运算更加复杂,其需要额外执行多个操作步骤,如尾数对齐、移位和舍入等,使得单个浮点运算的实现要消耗更多的硬件资源和功耗。
采用传统分立浮点乘、加单元级联方式实现浮点点乘操作时,存在以下问题:
(1)浮点点乘运算由两个浮点乘法和一个浮点加法构成,因此需要三个独立的浮点单元,资源复用率低,需要较大的面积和功耗;
(2)分立的实现从操作数输入到计算结果输出至少要经过两级运算单元延迟,运算速度低;
(3)运算过程中至少存在两次舍入操作,使得计算精度降低。
综上所述,需要尽可能复用传统浮点运算单元内部的算术逻辑资源,提供一种同时支持单通道单精度浮点点乘运算和双通道半精度浮点点乘运算的高计算密度可重构运算单元,进一步提高面积利用率。
发明内容
(一)要解决的技术问题
有鉴于此,本公开提出了一种SIMD(Single Instruction Multiple Data) 结构浮点融合点乘运算单元FDPU(Fused Dot-Product Unit),通过大量复用单精度浮点运算过程中的算术逻辑,使其支持单通道单精度浮点点乘运算和双通道半精度浮点点乘运算,以克服现有技术中的面积大和速度慢等缺陷。
(二)技术方案
本公开提供了一种SIMD结构浮点融合点乘运算单元,支持单通道单精度浮点点乘和双通道半精度浮点点乘两种运算,包括:操作数提取与尾数准备模块,用于对四个操作数分别进行分离,得到操作数的符号位、指数位和尾数;指数与符号预处理模块,用于接收所述符号位和指数位,对指数位进行求和、作差得到阶差,得到指数求和大小标志信号、阶差信号和异号标志信号;SIMD部分积乘法与对齐运算单元,用于对所述尾数进行乘法运算,得到冗余CS对形式的尾数乘积结果;SIMD双路加法树压缩模块,用于接收冗余CS对并得到压缩后的冗余CS对;SIMD双加法舍入路径处理单元,用于进行尾数求和、舍入以及冗余CS对大小比较操作,得到尾数输出;规格化处理模块,用于对尾数输出进行前导零检测,输出最终的尾数位、指数位和符号位。
在本公开的一些实施例中,当工作于单精度模式时,所述操作数提取与尾数准备模块判断四个指数位是否为全0,如果不为全0,则在指数位对应的尾数位的最高位前面添“1”,否则在指数位对应的尾数位的最高位前面添“0”,形成四个尾数Ma[23:0]、Mb[23:0]、Mc[23:0]和Md[23:0];当工作于半精度模式时,所述操作数提取与尾数准备模块判断八个指数位是否为全0,如果不为全0,则在指数位对应的尾数位的最高位前面添“1”,否则在指数位对应的尾数位的最高位前面添“0”,将第一通道和第二通道的对应同一操作数的两个尾数位进行拼接,第一通道的尾数位占据高11 位,中间插入两个零,第二通道的尾数位占据低11位,形成四个尾数 Ma[23:0]、Mb[23:0]、Mc[23:0]和Md[23:0]。
在本公开的一些实施例中,当工作于单精度模式时,所述指数与符号预处理模块用于对操作数的两对8bit指数位分别进行求和,比较两个指数求和结果大小并输出指数求和大小标志信号exp_comp;根据exp_comp对指数求和结果进行作差,输出阶差exp_diff;将较大指数位的求和结果减去固定偏置后输出;对操作数的两对1bit符号位作“异或”操作,将得到的两个标志信号经过“异或”逻辑得到异号标志信号Sp_opsel信号;当工作于半精度模式时,指数与符号预处理模块用于对操作数的四对5bit指数位分别两两求和;比较第一通道和第二通道指数求和结果大小得到第一标志信号exp1_comp和第二标志信号exp2_comp;根据exp1_comp和 exp2_comp分别对第一通道和第二通道的指数求和结果进行作差,输出第一通道和第二通道的阶差exp1_diff、exp2_diff;将较大指数位的求和结果减去固定偏置后输出;对操作数的四对1bit符号位作“异或”操作,将得到的第一通道对应的两个标志信号经“异或”操作得到第一异号标志信号 Hp1_opsel,第二通道对应的两个标志信号经“异或”操作得到第二异号标志信号Hp2_opsel。
在本公开的一些实施例中,所述SIMD部分积乘法与对齐运算单元,当工作于单精度模式时,其第一SIMD部分积乘法器用于进行Ma[23:0] 和Mb[23:0]的乘法运算,第二SIMD部分积乘法器用于进行Mc[23:0]和 Md[23:0]的24bit乘法运算,输出两个CS对乘积结果;其尾数交换模块用于根据指数大小标志信号exp_comp对两个CS对乘积结果进行交换,第一支路输出较小CS对S_sum和S_carry,第二支路输出较大CS对G_sum 和G_carry;其Stick逻辑模块用于分别将S_sum、S_carry、G_sum和G_carry 的低位补3个“0”,对于较大的CS对G_sum和G_carry,直接将其作为 S2[50:0]和C2[50:0]输出;对于较小的CS对S_sum、S_carry,根据阶差 exp_diff对Sum和Carry进行SIMD算术右移和SIMD逻辑右移,得到的右移结果S1[50:0]和C1[50:0]作为尾数乘积结果。
在本公开的一些实施例中,所述SIMD部分积乘法与对齐运算单元,当工作于半精度模式时,其第一SIMD部分积乘法器用于进行Ma[23:12] 和Mb[23:12]、Ma[11:0]和Mb[11:0]两组乘法运算,第二SIMD部分积乘法器进行Mc[23:12]和Md[23:12]、Mc[11:0]和Md[11:0]两组乘法运算,输出四个的CS对乘积结果;其尾数交换模块用于根据两个指数大小标志信号exp1_comp和exp2_comp,分别对第一通道和第二通道的两个CS对乘积结果进行交换,第一支路输出较小CS对S1_sum和S1_carry、S2_sum 和S2_carry,第二支路输出较大CS对G1_sum和G1_carry、G2_sum和 G2_carry;其Stick逻辑模块用于将S1_sum和S1_carry、S2_sum和S2_carry、 G1_sum和G1_carry、G2_sum和G2_carry的低位补3个“0”后,对于较大的CS对,直接将补“0”后的G1_sum和G1_carry、G2_sum和G2_carry 作为S2[50:0]和C2[50:0]输出;对于较小的CS对,根据阶差exp1_diff、 exp2_diff分别对S1_sum和S1_carry、S2_sum和S2_carry进行SIMD算术右移和SIMD逻辑右移,得到的右移结果S1[50:0]和C1[50:0]作为尾数乘积结果。
在本公开的一些实施例中,所述SIMD双路加法树压缩模块,当工作于单精度模式时,其反相器分别对第一支路输入的S1[50:0]和C1[50:0]、第二支路输入的S2[50:0]和C2[50:0]进行取反;如果异号标志信号Sp_opsel 为0,其SIMD 4:2进位保留加法器对第一支路和第二支路的CS对进行求和;如果异号标志信号Sp_opsel为1,其SIMD 4:2进位保留加法器对第一支路和第二支路CS对作“差”,得到“差”的绝对值;当工作于半精度模式时,利用Hp1_opsel和Hp2_opsel分别独立控制S1和C1、S2和C2 的高25位、低25位位是否取反;如果Hp1_opsel为0,第一支路和第二支路中CS对的高25位均不取反,同时两个进位保留加法器的四个进位信号接Hp1_opsel,如果Hp1_opsel为1,对于第一支路,较大的CS对的高 25位按位取反,对于第二支路,较小的CS对的高25位按位取反,同时两个进位保留加法器的四个进位信号接Hp1_opsel。
在本公开的一些实施例中,所述SIMD双加法舍入路径处理单元包括:两个相同的SIMD加法舍入逻辑模块,所述SIMD加法舍入逻辑模块包括:四个加法器,冗余CS对按照从高位到低位的顺序被等分成13bit的子CS 对P1、子CS对P2、子CS对P3、子CS对P4,子CS对P1、子CS对 P2、子CS对P3、子CS对P4分别作为四个加法器的两个输入操作数;第二加法器的进位输出端连接至第四加法器的进位输入端,第一加法器进位输出端连接至第三加法器进位输入端;第一舍入逻辑模块、第二舍入逻辑模块、第三舍入逻辑模块,分别根据第二加法器、第四加法器和第一加法器的计算结果及其对应的子CS对,生成三个舍入标志信号,分别作为第四加法器、第一加法器和第三加法器的第三个操作数输入;模式配置信号取反后输入第二舍入逻辑模块;从高位到低位对第一、第二、第三和第四加法器运算结果的低12bit、13bit、13bit和13bit进行组合,得到51bit 的信号sum。
在本公开的一些实施例中,当工作于单精度模式时,第四加法器的进位输出端连接至第一加法器的进位输入端;51bit的信号sum作为求和舍入结果sum[50:0];当工作于半精度模式时,51bit的信号sum的高25位和低26位分别作为第一通道和第二通道的求和舍入结果sum[50:26]、 sum[25:0]。
在本公开的一些实施例中,第三加法器和第四加法器分别输出高位信号P1_msb和P3_msb;所述SIMD双加法舍入路径处理单元还包括:绝对值选择逻辑,用于根据两个SIMD加法舍入逻辑模块输出的高位信号进行组合逻辑判断,生成单精度模式一个选择信号与一个单比特最高位,半精度模式第一通道和第二通道的两个选择信号与两个单比特最高位,经过选择和与第一SIMD加法舍入逻辑模块或第二SIMD加法舍入逻辑模块的输出结果sum进行组合与替换逻辑,得到的结果作为尾数输出。
在本公开的一些实施例中,所述规格化处理模块包括:SIMD前导零检测模块,SIMD前导零检测模块包括:第一前导零检测器和第二前导零检测器,分别用于对尾数输出的高26位和低26位检测,产生半精度模式下第一通道和第二通道的前导零个数Hp1_Lshift[4:0]、Hp2_Lshift[4:0];第一前导零检测器同时输出尾数输出sum高26位是否全零的标志信号 Hp1-az,当Hp1-az为1时,尾数输出高26位为全零,单精度模式下的前导零个数Sp_Lshift的值等于Hp2_Lshift[4:0]加上26;当Hp1-az为0时,尾数输出高26位不全为零,Sp_Lshift的值等于Hp1_Lshift[4:0]。
(三)有益效果
从上述技术方案可以看出,本公开具有以下有益效果:
(1)利用运算融合和SIMD操作的设计思想,将两个单精度浮点乘法与一个单精度浮点加法进行融合设计,通过大量复用运算过程中的算术运算逻辑,使其同时支持双通道半精度点乘运算,从而实现较高的面积、功耗效率和运算精度。
(2)采用将两个SIMD部分积乘法器的结果进行对齐后,通过SIMD 双路加法树压缩单元实现同号“加”或异号“减”操作,节省了传统设计中采用进位传播加法器进行异号求补操作过程的延时开销,减少关键路径延时,从而提高工作速度。
(3)采用SIMD双加法舍入路径处理单元对SIMD双路加法树压缩单元输出结果的高、低比特位分别进行加法运算,在低位向高位进位的同时进行舍入运算,保证较高的工作速度。
附图说明
图1是本公开实施例SIMD结构浮点融合点乘运算单元整体结构示意图;
图2是本公开实施例操作数提取与尾数准备模块的结构示意图;
图3是本公共实施例SIMD部分积乘法与对齐运算单元的结构示意图;
图4是本公开实施例SIMD 4:2进位保留加法器的结构示意图;
图5是本公开实施例SIMD加法舍入逻辑模块的结构示意图;
图6是本公开实施例SIMD前导零检测模块的结构示意图。
具体实施方式
下面将结合实施例和实施例中的附图,对本公开实施例中的技术方案进行清楚、完整的描述。显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
本公开实施例提供了一种SIMD结构浮点融合点乘运算单元,可通过配置,支持单通道单精度浮点点乘或双通道半精度浮点点乘两种运算,参见图1,其包括:
操作数提取与尾数准备模块100,用于分别将输入的四个操作数A、 B、C和D中的符号位、指数位和尾数位进行分离,得到操作数的符号位、指数位和尾数。操作数提取与尾数准备模块的具体结构如图2所示。
当工作于单精度工作模式时,四个操作数A、B、C和D分别为单精度操作数SP-opa、SP-opb、SP-opc和SP-opd。对该四个单精度操作数进行分离,得到SP-opa的符号位S1a、指数位Sp_ea和尾数位Sp_ma,SP-opb 的符号位S1b、指数位Sp_eb和尾数位Sp_mb,SP-opc的符号位S1c、指数位Sp_ec和尾数位Sp_mc,SP-opd的符号位S1d、指数位Sp_ed、尾数位Sp_md。对于四个尾数位Sp_ma、Sp_mb、Sp_mc、Sp_md,通过规格数检查增加一个隐藏位。通过检查四个8bit指数位Sp_ea/Sp_eb/Sp_ec/ Sp_ed是否为全0,如果不为全0则在指数位对应的尾数位的最高位前面添“1”,否则添“0”,形成24bit的四个尾数。
当工作于半精度工作模式时,四个操作数A、B、C和D的每一个分别对应两个半精度操作数,形成两组半精度操作数,即通道1的四个操作数HP1-opa、HP1-opb、HP1-opc、HP1-opd和通道2的四个操作数HP2-opa、 HP2-opb、HP2-opc、HP2-opd。对上述半精度操作数进行分离,对于通道 1,得到操作数HP1-opa的符号位S1a、指数位Hp1_ea和尾数位Hp1_ma,操作数HP1-opb的符号位S1b、指数位Hp1_eb和尾数位Hp1_mb,操作数 HP1-opc的符号位S1c、指数位Hp1_ec和尾数位Hp1_mc,操作数HP1-opd 的符号位S1d、指数位Hp1_ed和尾数位Hp1_md。对于通道2,得到操作数HP2-opa的符号位S2a、指数位Hp2_ea、尾数位Hp2_ma,操作数HP2-opb 的符号位S2b、指数位Hp2_eb、尾数位Hp2_mb,操作数HP2-opc的符号位S2c、指数位Hp2_ec、尾数位Hp2_mc,操作数HP2-opd的符号位S2d、指数位Hp2_ed、尾数位Hp2_md。
对于尾数位,同样地,通过规格数检查增加一个隐藏位。通过检查八个5bit指数位Hp1_ea、Hp1_eb、Hp1_ec、Hp1_ed、Hp2_ea、Hp2_eb、 Hp2_ec、Hp2_ed是否为全0,如果不为全0则在指数位对应的尾数位的最高位前面添“1”,否则添“0”。
将通道1和2得到的对应同一个操作数的两个尾数位进行拼接,通道 1的尾数位占据高11位,中间插入两个零,通道2的尾数位占据低11位,形成24bit的四个尾数。
四个2:1多路选择器在工作模式配置信号sp_hp的控制下,对输出结果进行选择。在单精度模式(sp_hp等于0)时,分别选择Sp_ma、Sp_mb、 Sp_mc、Sp_md作为进行尾数乘法运算的操作数Ma、Mb、Mc、Md,输出至SIMD部分积乘法与对齐运算单元120;在半精度模式(sp_hp等于1) 时,分别选择通道1和2拼接的四个尾数作为进行尾数乘法运算的操作数 Ma、Mb、Mc、Md,输出至SIMD部分积乘法与对齐运算单元120。
指数与符号预处理模块110接收操作数提取与尾数准备模块100输出的符号位和指数位,用于对操作数A、B和C、D的指数位进行求和、作差得到阶差,指数求和大小标志信号、阶差信号输出至SIMD部分积乘法与对齐运算单元120;分别对两种工作模式下较大指数位的求和结果减去对应的固定偏置后输出至规格化处理模块150中。对操作数的指数位进行求和,按照下面两个公式进行:Exp(AB)=Exp(A)+Exp(B)、 Exp(CD)=Exp(C)+Exp(D)。分别比较单精度和半精度模式下Exp(AB)和 Exp(CD)的大小,对于较大的求和结果,减去固定偏置后输出。单精度工作模式和半精度工作模式的偏置值分别为125和13。
同时用于对操作数A和B、C和D的1bit符号位作“异或”逻辑,得到异号标志信号Sp_opsel、Hp1_opsel和Hp2_opsel并输出至SIMD双路加法树压缩模块130,其中Sp_opsel和Hp1_opsel为同一个信号。
当工作于单精度工作模式时,指数与符号预处理模块110用于对操作数A和B的一对8bit指数位、操作数C和D的一对8bit指数位分别进行求和,比较两个指数求和结果的大小并输出标志信号exp_comp至SIMD 部分积乘法与对齐运算单元120;根据exp_comp对指数求和结果进行作差,输出阶差exp_diff至SIMD部分积乘法与对齐运算单元120;对操作数A和B的一对1bit符号位、操作数C和D的一对1bit符号位作“异或”逻辑,分别输出两个标志信号。两个标志信号经过第三个“异或”逻辑输出Sp_opsel信号,其表示A*B和C*D是否异号。
当工作于半精度工作模式时,指数与符号预处理模块110用于对操作数A和B的两对5bit指数位、操作数C和D的两对5bit指数位分别进行求和;比较通道1两个指数求和结果的大小得到标志信号exp1_comp,比较通道2两个指数求和结果的大小得到标志信号exp2_comp,标志信号 exp1_comp、exp2_comp输出至SIMD部分积乘法与对齐运算单元120;
根据exp1_comp和exp2_comp分别对通道1和通道2的指数求和结果进行作差,输出通道1的阶差exp1_diff和通道2的阶差exp2_diff至SIMD 部分积乘法与对齐运算单元120;
对操作数A和B的两对1bit符号位、操作数C和D的两对1bit符号位作“异或”逻辑,输出四个标志信号。通道1对应的两个标志信号经“异或”逻辑得到Hp1_opsel,其表示通道1的A*B和C*D是否异号;通道2 对应的两个标志信号经“异或”逻辑得到Hp2_opsel,其表示通道2的A*B 和C*D是否异号。
SIMD部分积乘法与对齐运算单元120用于对操作数提取与尾数准备模块100输出的尾数进行乘法运算,以冗余CS对(Redundant Carry-and-Sum Pair)的形式来表示其尾数乘积结果。如图3所示,SIMD 部分积乘法与对齐运算单元120包括:两个并列的SIMD部分积乘法器210、 220、尾数交换模块230、Stick逻辑模块240、SIMD算数右移模块250和 SIM逻辑右移模块260,除Stick逻辑模块240外,均接收工作模式配置信号sp_hp以对工作模式进行切换。
当工作于单精度模式时,SIMD部分积乘法器210进行Ma[23:0]和 Mb[23:0]的24bit乘法运算,SIMD部分积乘法器220进行Mc[23:0]和 Md[23:0]的24bit乘法运算,分别输出一个48bit的CS对乘积结果至尾数交换模块230。
尾数交换模块230根据指数大小标志信号exp_comp对两个CS对乘积结果进行交换,第一支路输出较小CS对S_sum和S_carry,第二支路输出较大CS对G_sum和G_carry。
Stick逻辑模块240分别将S_sum、S_carry、G_sum和G_carry的低位补3个“0”,对于较大的CS对G_sum和G_carry,直接将其作为S2[50:0] 和C2[50:0]输出至SIMD双路加法树压缩模块130。对于较小的CS对 S_sum、S_carry,根据阶差exp_diff对Sum和Carry部分进行SIMD算术右移250和SIMD逻辑右移260,然后作为51bit的S1[50:0]和C1[50:0]输出至SIMD双路加法树压缩模块130。
当工作于半精度模式时,SIMD部分积乘法器210进行Ma[23:12]和 Mb[23:12]、Ma[11:0]和Mb[11:0]两组24bit乘法运算,SIMD部分积乘法器220进行Mc[23:12]和Md[23:12]、Mc[11:0]和Md[11:0]两组24bit乘法运算,输出四个24bit的CS对乘积结果至尾数交换模块230。
尾数交换模块230根据两个通道的标志信号exp1_comp和exp2_comp 分别对通道1和通道2的两个CS对乘积结果进行交换,第一支路输出较小CS对S1_sum和S1_carry、S2_sum和S2_carry,第二支路输出较大CS 对G1_sum和G1_carry、G2_sum和G2_carry。
Stick逻辑模块240分别将S1_sum和S1_carry、S2_sum和S2_carry、 G1_sum和G1_carry、G2_sum和G2_carry的低位补3个“0”后,对于较大的CS对,直接将补“0”后的G1_sum和G1_carry、G2_sum和G2_carry 作为S2[50:0]和C2[50:0]输出至SIMD双路加法树压缩模块130。对于较小的CS对,根据阶差exp1_diff、exp2_diff分别对S1_sum和S1_carry、 S2_sum和S2_carry部分进行SIMD算术右移250和SIMD逻辑右移260,然后输出51bit的S1[50:0]和C1[50:0]。
SIMD双路加法树压缩模块130,用于接收SIMD部分积乘法与对齐运算单元120输出的尾数乘积结果冗余CS对,得到压缩后的冗余CS对。
SIMD双路加法树压缩模块130包括:输入级的反相器、多组2:1多路选择器和两个并列的SIMD 4:2进位保留加法器(CSA,Carry Save Adder)。
在单精度模式下,通过Sp_opsel的控制,反相器分别对第一支路输入对齐后的S1和C1、第二支路输入对齐后的S2和C2进行取反,输出至后级两个SIMD 4:2进位保留加法器。
如果Sp_opsel为0,表示A*B和C*D乘积结果同号,对第一支路和第二支路的CS对进行求和,如果Sp_opsel为1,对第一支路和第二支路 CS对作“差”,得到“差”的绝对值。
即当乘积结果同号时,均不取反,两个支路加法树的输入相同,同时两个进位保留加法器的四个进位信号接Sp_opsel(置0),其实质上是都在进行两个CS对的加法。反之,当乘积结果异号时,对于第一支路,较大的CS对按位取反,对于第二支路,较小的CS对按位取反,同时两个进位保留加法器的四个进位信号接Sp_opsel(置1),其实质上是进行两个 CS对相互的减法。
在半精度模式下,同样地,利用Hp1_opsel和Hp2_opsel分别独立地控制S1和C1、S2和C2的高25位、低25位是否取反。具体来说,如果 Hp1_opsel为0,表示通道1中A*B和C*D乘积结果同号,第一支路和第二支路中CS对的高25位均不取反,同时两个进位保留加法器的四个进位信号接Hp1_opsel(置0),其实质上是进行通道1两个CS对的加法。反之,如果Hp1_opsel为1,表示通道1的乘积结果异号,对于第一支路,较大的CS对的高25位按位取反,对于第二支路,较小的CS对的高25 位按位取反,同时两个进位保留加法器的四个进位信号接Hp1_opsel(置1),其实质上是进行通道1中两个CS对相互的减法。对于通道2,运算方式与通道1相同,处理对象是S1和C1、S2和C2的低25位。SIMD双路加法树压缩模块130包含两个SIMD4:2进位保留加法器,每个SIMD 4:2进位保留加法器的实现原理如图4所示,其包括两个26bit的3:2进位保留加法器310和350、两个25bit的3:2进位保留加法器330和370、四个2:1多路选择器320、340、360和380。
SIMD双路加法树压缩模块中,每个SIMD 4:2进位保留加法器可输出一对52bit的CS对sum_o和carry_o至SIMD双加法舍入路径处理单元140。在单精度模式下,每个SIMD 4:2进位保留加法器可完成4个51bit数的加法压缩,在半精度模式下可完成双通道4个25bit数的加法压缩,通道1 和通道2压缩的结果分别对应CS对sum_o[51:26]与carry_o[51:26]和sum_o[25:0]与carry_o[25:0]。当处于双通道25bit位宽模式时,每列的两个3:2CSA310和350、330和370级联组合成一个独立的4:2CSA,左右两列的进位输入分别选择对应通道的进位信号,进行减法情况下的求补操作,两列多路选择器320和360、340和380分别独立地选择通道1和通道2的异号标志信号Hp1_opsel和Hp2_opsel作为进位输入;而当处于单通道51bit位宽模式时,中间的两个多路选择器320和360分别选择右边低位3:2CSA产生的进位输出,相应地作为左边高位3:2CSA的进位输入。右列低位3:2CSA的进位输入选择单精度模式下的异号标志信号Sp_opsel。
SIMD双加法舍入路径处理单元140包括左右两个相同的SIMD加法舍入逻辑模块141和142,SIMD加法舍入逻辑模块141和142用于完成两种工作模式下的尾数求和、舍入以及尾数乘积大小比较操作,得到两路求和舍入结果sum;绝对值选择逻辑143选择代表正确绝对值结果的一路求和舍入结果sum作为尾数输出。
SIMD加法舍入逻辑模块的具体结构如图5所示,包括:四个13bit 加法器410、420、430和460,以及三个舍入逻辑模块440、450和470。
对SIMD双路加法树压缩模块130输入的52bit CS对sum_i和carry_i,按照从高位到低位的顺序分别等分成13bit的四个子CS对P1(sum_i[51:39] 和carry_i[51:39])、P2(sum_i[38:26]和carry_i[38:26])、P3(sum_i[25:13]和 carry_i[25:13])和P4(sum_i[12:0]和carry_i[12:0])。子CS对P1、子CS对 P2、子CS对P3、子CS对P4分别作为加法器430、410、460和420的两个输入操作数。加法器420的进位输出端连接至加法器460的进位输入端,加法器410的进位输出端连接至加法器430的进位输入端,加法器460 的进位输出端仅在单精度工作模式时连接至加法器410的进位输入端。在模式配置信号sp_hp的控制下,舍入逻辑模块470、450和440分别根据加法器420、460和410的计算结果及其对应的子CS对,进行逻辑运算,生成向上三个舍入标志信号,分别作为加法器460、410和430的第三个操作数输入。模式配置信号sp_hp取反后输入舍入逻辑模块450,即舍入逻辑模块450的模式配置信号值与470和440相反。
从高位到低位对四个13bit加法器410、420、430和460运算结果的低12bit、13bit、13bit和13bit进行组合,得到51bit的信号sum。在单精度模式下,51bit的信号sum即为求和舍入结果sum[50:0];在半精度模式下,51bit的信号sum的高25位和低26位分别作为通道1和通道2的求和舍入结果sum[50:26]、sum[25:0]。
加法器430和460输出进位输出的2bit计算结果P1_msb和P3_msb,均作为绝对值选择逻辑143的输入以生成选择信号。P1_msb在单精度模式下有效;在半精度模式下,P1_msb和P3_msb分别对应通道1和通道2。绝对值选择逻辑143根据两个SIMD加法舍入逻辑模块输出的四个2bit高位信号(每个SIMD加法舍入逻辑模块输出P1_msb和P3_msb,两个SIMD 加法舍入逻辑模块共四个2bit高位信号)进行组合逻辑判断,生成分别对应单精度模式、半精度模式通道1和通道2的三个选择信号与三个单比特最高位,经过选择和与左SIMD加法舍入逻辑模块141或右SIMD加法舍入逻辑模块142的输出结果sum进行组合与替换逻辑,得到的结果作为尾数输出至规格化处理模块150中。
规格化处理模块150为SIMD前导零检测模块,用于对两种工作模式下SIMD双加法舍入路径处理单元140输出的尾数进行前导零检测、根据前导零个数进行规格化左移运算操作,对经过预处理的指数进行调整,以及结合相关信号进行符号逻辑运算,输出最终的尾数位、指数位和符号位。
图6所示为支持两种位宽模式的SIMD前导零检测模块,包括两个 26bit的前导零检测器510和520,两个2:1多路选择器530和540,以及一个5bit加法器550。来自SIMD双加法舍入路径处理单元140的尾数sum 的高26位和低26位分别经过前导零检测器510和520后产生半精度模式下通道1和通道2的前导零个数Hp1_Lshift[4:0]、Hp2_Lshift[4:0]。前导零检测器510同时输出标志尾数sum高26位是否全零的标志信号Hp1-az,当Hp1-az为1时,尾数sum高26位为全零,单精度模式下的前导零个数 Sp_Lshift的值等于Hp2_Lshift[4:0]加上26;当Hp1-az为0时,尾数sum 高26位不全为零,Sp_Lshift的值等于Hp1_Lshift[4:0]。
规格化操作包含根据前导零检测器的输出结果对尾数位进行规格化左移,对经过预处理的指数进行调整,以及结合相关信号进行符号逻辑运算,最后分别输出对应两个工作模式的尾数位、指数位和符号位。经过按照图2中操作数提取时两个工作模式下符号位、指数位和尾数位的排布规律,将对应的符号位、指数位和尾数位进行合并,输出最终符合IEEE754 浮点标准的单通道单精度或双通道半精度点乘结果。
至此,已经结合附图对本实施例进行了详细描述。依据以上描述,本领域技术人员应当对本公开有了清楚的认识。
需要说明的是,在附图或说明书正文中,未绘示或描述的实现方式,均为所属技术领域中普通技术人员所知的形式,并未进行详细说明。此外,上述对各元件的定义并不仅限于实施例中提到的各种具体结构、形状或方式,本领域普通技术人员可对其进行简单地更改或替换,例如:
(1)实施例中提到的方向用语,例如“上”、“下”、“前”、“后”、“左”、“右”等,仅是参考附图的方向,并非用来限制本公开的保护范围;
(2)上述实施例可基于设计及可靠度的考虑,彼此混合搭配使用或与其他实施例混合搭配使用,即不同实施例中的技术特征可以自由组合形成更多的实施例。
以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (10)

1.一种SIMD结构浮点融合点乘运算单元,支持单通道单精度浮点点乘和双通道半精度浮点点乘两种运算,包括:
操作数提取与尾数准备模块,用于对单通道单精度模式下的四个单精度操作数或双通道半精度模式下的八个半精度操作数分别进行分离,得到操作数的符号位、指数位和尾数;
指数与符号预处理模块,用于接收所述符号位和指数位,对指数位进行求和、作差得到阶差,得到指数求和大小标志信号、阶差信号和异号标志信号;
SIMD部分积乘法与对齐运算单元,用于对所述操作数提取与尾数准备模块输出的尾数进行乘法运算,得到尾数乘积结果冗余CS对;
SIMD双路加法树压缩模块,用于接收所述冗余CS对并得到压缩后的冗余CS对;
SIMD双加法舍入路径处理单元,用于对经过所述SIMD双路加法树压缩模块压缩后输出的冗余CS对形式的尾数进行求和、舍入以及所述压缩后的冗余CS对大小比较操作,得到表示求和舍入结果的尾数输出;
规格化处理模块,用于对所述SIMD双加法舍入路径处理单元输出的尾数输出进行前导零检测,根据前导零个数进行规格化左移运算,对经过预处理的指数进行调整,以及结合接收的信号进行符号逻辑运算输出尾数位、指数位和符号位。
2.如权利要求1所述的SIMD结构浮点融合点乘运算单元,
当工作于单精度模式时,所述操作数提取与尾数准备模块判断四个指数位是否为全0,如果不为全0,则在指数位对应的尾数位的最高位前面添“1”,否则在指数位对应的尾数位的最高位前面添“0”,形成四个尾数Ma[23:0]、Mb[23:0]、Mc[23:0]和Md[23:0];
当工作于半精度模式时,所述操作数提取与尾数准备模块判断八个指数位是否为全0,如果不为全0,则在指数位对应的尾数位的最高位前面添“1”,否则在指数位对应的尾数位的最高位前面添“0”,将第一通道和第二通道的对应同一操作数的两个尾数位进行拼接,第一通道的尾数位占据高11位,中间插入两个零,第二通道的尾数位占据低11位,形成四个尾数Ma[23:0]、Mb[23:0]、Mc[23:0]和Md[23:0]。
3.如权利要求1所述的SIMD结构浮点融合点乘运算单元,
当工作于单精度模式时,所述指数与符号预处理模块用于对操作数的两对8bit指数位分别进行求和,比较两个指数位求和结果大小并输出指数求和大小标志信号exp_comp;根据exp_comp对指数求和结果进行作差,输出阶差exp_diff;将较大指数位的求和结果减去固定偏置后输出;对操作数的两对1bit符号位作“异或”操作,将得到的两个标志信号经过“异或”逻辑得到异号标志信号Sp_opsel信号;
当工作于半精度模式时,指数与符号预处理模块用于对操作数的四对5bit指数位分别两两求和;比较第一通道输出的和第二通道输出的指数位求和结果大小得到第一标志信号exp1_comp和第二标志信号exp2_comp;根据exp1_comp和exp2_comp分别对第一通道和第二通道的指数求和结果进行作差,输出第一通道和第二通道的阶差exp1_diff、exp2_diff;将较大指数位的求和结果减去固定偏置后输出;对操作数的四对1bit符号位作“异或”操作,将得到的第一通道对应的两个标志信号经“异或”操作得到第一异号标志信号Hp1_opsel,第二通道对应的两个标志信号经“异或”操作得到第二异号标志信号Hp2_opsel。
4.如权利要求1所述的SIMD结构浮点融合点乘运算单元,所述SIMD部分积乘法与对齐运算单元,当工作于单精度模式时,
其第一SIMD部分积乘法器用于进行操作数A的尾数Ma[23:0]和操作数B的尾数Mb[23:0]的乘法运算,第二SIMD部分积乘法器用于进行操作数C的尾数Mc[23:0]和操作数D的尾数Md[23:0]的24bit乘法运算,输出两个CS对乘积结果;
其尾数交换模块用于根据指数大小标志信号exp_comp对两个CS对乘积结果进行交换,第一支路输出较小CS对S_sum和S_carry,第二支路输出较大CS对G_sum和G_carry;
其Stick逻辑模块用于分别将S_sum、S_carry、G_sum和G_carry的低位补3个“0”,对于较大的CS对G_sum和G_carry,直接将其作为S2[50:0]和C2[50:0]输出;对于较小的CS对S_sum、S_carry,根据阶差exp_diff对Sum和Carry进行SIMD算术右移和SIMD逻辑右移,得到的右移结果S1[50:0]和C1[50:0]作为尾数乘积结果。
5.如权利要求1所述的SIMD结构浮点融合点乘运算单元,所述SIMD部分积乘法与对齐运算单元,当工作于半精度模式时,
其第一SIMD部分积乘法器用于进行操作数A的尾数Ma[23:12]和操作数B的尾数Mb[23:12]、操作数A的尾数Ma[11:0]和操作数B的尾数Mb[11:0]两组乘法运算,第二SIMD部分积乘法器进行操作数C的尾数Mc[23:12]和操作数D的尾数Md[23:12]、操作数C的尾数Mc[11:0]和操作数D的尾数Md[11:0]两组乘法运算,输出四个的CS对乘积结果;
其尾数交换模块用于根据两个指数大小标志信号exp1_comp和exp2_comp,分别对第一通道和第二通道的两个CS对乘积结果进行交换,第一支路输出较小CS对S1_sum和S1_carry、S2_sum和S2_carry,第二支路输出较大CS对G1_sum和G1_carry、G2_sum和G2_carry;
其Stick逻辑模块用于将S1_sum和S1_carry、S2_sum和S2_carry、G1_sum和G1_carry、G2_sum和G2_carry的低位补3个“0”后,对于较大的CS对,直接将补“0”后的G1_sum和G1_carry、G2_sum和G2_carry作为S2[50:0]和C2[50:0]输出;对于较小的CS对,根据阶差exp1_diff、exp2_diff分别对S1_sum和S1_carry、S2_sum和S2_carry进行SIMD算术右移和SIMD逻辑右移,得到的右移结果S1[50:0]和C1[50:0]作为尾数乘积结果。
6.如权利要求4所述的SIMD结构浮点融合点乘运算单元,所述SIMD双路加法树压缩模块,
当工作于单精度模式时,其反相器分别对第一支路输入的S1[50:0]和C1[50:0]、第二支路输入的S2[50:0]和C2[50:0]进行取反;如果异号标志信号Sp_opsel为0,其SIMD 4:2进位保留加法器对第一支路和第二支路的CS对进行求和;如果异号标志信号Sp_opsel为1,其SIMD 4:2进位保留加法器对第一支路和第二支路CS对作“差”,得到“差”的绝对值;
当工作于半精度模式时,利用Hp1_opsel和Hp2_opsel分别独立控制S1和C1、S2和C2的高25位、低25位位是否取反;如果Hp1_opsel为0,第一支路和第二支路中CS对的高25位均不取反,同时两个进位保留加法器的四个进位信号接Hp1_opsel,如果Hp1_opsel为1,对于第一支路,较大的CS对的高25位按位取反,对于第二支路,较小的CS对的高25位按位取反,同时两个进位保留加法器的四个进位信号接Hp1_opsel。
7.如权利要求1所述的SIMD结构浮点融合点乘运算单元,所述SIMD双加法舍入路径处理单元包括:两个相同的SIMD加法舍入逻辑模块,所述SIMD加法舍入逻辑模块包括:
四个加法器,所述压缩后的冗余CS对按照从高位到低位的顺序被等分成13bit的子CS对P1、子CS对P2、子CS对P3、子CS对P4,子CS对P1、子CS对P2、子CS对P3、子CS对P4分别作为四个加法器的两个输入操作数;第二加法器的进位输出端连接至第四加法器的进位输入端,第一加法器进位输出端连接至第三加法器进位输入端;
第一舍入逻辑模块、第二舍入逻辑模块、第三舍入逻辑模块,分别根据第二加法器、第四加法器和第一加法器的计算结果及其对应的子CS对,生成三个舍入标志信号,分别作为第四加法器、第一加法器和第三加法器的第三个操作数输入;模式配置信号取反后输入第二舍入逻辑模块;
从高位到低位对第一、第二、第三和第四加法器运算结果的低12bit、13bit、13bit和13bit进行组合,得到51bit的信号sum。
8.如权利要求7所述的SIMD结构浮点融合点乘运算单元,
当工作于单精度模式时,第四加法器的进位输出端连接至第一加法器的进位输入端;51bit的信号sum作为求和舍入结果sum[50:0];
当工作于半精度模式时,51bit的信号sum的高25位和低26位分别作为第一通道和第二通道的求和舍入结果sum[50:26]、sum[25:0]。
9.如权利要求7所述的SIMD结构浮点融合点乘运算单元,第三加法器和第四加法器分别输出高位信号P1_msb和P3_msb;所述SIMD双加法舍入路径处理单元还包括:
绝对值选择逻辑,用于根据两个SIMD加法舍入逻辑模块输出的高位信号进行组合逻辑判断,生成单精度模式一个选择信号与一个单比特最高位,半精度模式第一通道和第二通道的两个选择信号与两个单比特最高位,经过选择和与第一SIMD加法舍入逻辑模块或第二SIMD加法舍入逻辑模块的输出结果sum进行组合与替换逻辑,得到的结果作为尾数输出。
10.如权利要求1所述的SIMD结构浮点融合点乘运算单元,所述规格化处理模块包括:SIMD前导零检测模块,SIMD前导零检测模块包括:
第一前导零检测器和第二前导零检测器,分别用于对尾数输出的高26位和低26位检测,产生半精度模式下第一通道和第二通道的前导零个数Hp1_Lshift[4:0]、Hp2_Lshift[4:0];
第一前导零检测器同时输出尾数输出sum高26位是否全零的标志信号Hp1-az,当Hp1-az为1时,尾数输出高26位为全零,单精度模式下的前导零个数Sp_Lshift的值等于Hp2_Lshift[4:0]加上26;当Hp1-az为0时,尾数输出高26位不全为零,Sp_Lshift的值等于Hp1_Lshift[4:0]。
CN201810151553.5A 2018-02-14 2018-02-14 一种simd结构浮点融合点乘运算单元 Active CN108459840B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810151553.5A CN108459840B (zh) 2018-02-14 2018-02-14 一种simd结构浮点融合点乘运算单元

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810151553.5A CN108459840B (zh) 2018-02-14 2018-02-14 一种simd结构浮点融合点乘运算单元

Publications (2)

Publication Number Publication Date
CN108459840A CN108459840A (zh) 2018-08-28
CN108459840B true CN108459840B (zh) 2021-07-09

Family

ID=63216399

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810151553.5A Active CN108459840B (zh) 2018-02-14 2018-02-14 一种simd结构浮点融合点乘运算单元

Country Status (1)

Country Link
CN (1) CN108459840B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109298848B (zh) * 2018-08-29 2023-06-20 中科亿海微电子科技(苏州)有限公司 双模式浮点除法平方根的电路
CN112148371B (zh) * 2019-06-27 2023-10-24 北京地平线机器人技术研发有限公司 基于单指令多数据流的数据运算方法、装置、介质和设备
CN110489077B (zh) * 2019-07-23 2021-12-31 瑞芯微电子股份有限公司 一种神经网络加速器的浮点乘法运算电路和方法
US11256476B2 (en) * 2019-08-08 2022-02-22 Achronix Semiconductor Corporation Multiple mode arithmetic circuit
CN110413254B (zh) * 2019-09-24 2020-01-10 上海寒武纪信息科技有限公司 数据处理器、方法、芯片及电子设备
WO2021073512A1 (zh) * 2019-10-14 2021-04-22 安徽寒武纪信息科技有限公司 用于浮点运算的乘法器、方法、集成电路芯片和计算装置
CN113010148B (zh) * 2021-02-09 2022-11-11 南方科技大学 一种适用于混合精度神经网络的定点乘加运算单元及方法
CN115826910B (zh) * 2023-02-07 2023-05-02 成都申威科技有限责任公司 一种向量定点的alu处理系统
CN116643718B (zh) * 2023-06-16 2024-02-23 合芯科技有限公司 一种流水线结构的浮点融合乘加装置、方法及处理器
CN117251132B (zh) * 2023-09-19 2024-05-14 上海合芯数字科技有限公司 定浮点simd乘加指令融合处理装置、方法及处理器

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1831753A (zh) * 2005-03-08 2006-09-13 中国科学院计算技术研究所 一种浮点乘法器及其兼容双精度和双单精度计算的方法
CN104111816A (zh) * 2014-06-25 2014-10-22 中国人民解放军国防科学技术大学 Gpdsp中多功能simd结构浮点融合乘加运算装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8166091B2 (en) * 2008-11-10 2012-04-24 Crossfield Technology LLC Floating-point fused dot-product unit

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1831753A (zh) * 2005-03-08 2006-09-13 中国科学院计算技术研究所 一种浮点乘法器及其兼容双精度和双单精度计算的方法
CN104111816A (zh) * 2014-06-25 2014-10-22 中国人民解放军国防科学技术大学 Gpdsp中多功能simd结构浮点融合乘加运算装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Improved Architectures for a Floating-Point Fused Dot Product Unit;Jongwook Sohn等;《2013 IEEE 21st Symposium on Computer Arithmetic》;20131231;第42页第1栏第4段、第2栏、图1及第43页第1栏、图3 *

Also Published As

Publication number Publication date
CN108459840A (zh) 2018-08-28

Similar Documents

Publication Publication Date Title
CN108459840B (zh) 一种simd结构浮点融合点乘运算单元
CN108287681B (zh) 一种单精度浮点融合点乘运算装置
US9639326B2 (en) Floating-point adder circuitry
JP2508912B2 (ja) 浮動小数点加算装置
US8626813B1 (en) Dual-path fused floating-point two-term dot product unit
US6401194B1 (en) Execution unit for processing a data stream independently and in parallel
KR101603471B1 (ko) 디지털 신호 프로세서들에서의 신호 처리를 위한 시스템 및 방법
US5148386A (en) Adder-subtracter for signed absolute values
JPH02196328A (ja) 浮動小数点演算装置
Kaivani et al. Floating-point butterfly architecture based on binary signed-digit representation
JPH0542013B2 (zh)
EP2435904B1 (en) Integer multiply and multiply-add operations with saturation
US9317478B2 (en) Dual-path fused floating-point add-subtract
US8495121B2 (en) Arithmetic processing device and methods thereof
US20100125621A1 (en) Arithmetic processing device and methods thereof
WO2020191417A2 (en) Techniques for fast dot-product computation
CN117111881A (zh) 支持多输入多格式的混合精度乘加运算器
CN116594590A (zh) 一种浮点数据的多功能运算装置及方法
US20050228844A1 (en) Fast operand formatting for a high performance multiply-add floating point-unit
US9904514B1 (en) Fused floating-point arithmetic circuitry
CN116627379A (zh) 可重构的支持多精度浮点或定点运算的方法及系统
CN116450085A (zh) 一种可扩展的BFloat16点乘运算器及微处理器
US11366638B1 (en) Floating point multiply-add, accumulate unit with combined alignment circuits
US9575725B1 (en) Specialized processing block with embedded pipelined accumulator circuitry
US5206826A (en) Floating-point division cell

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