支持复数运算和子字并行的64位定浮点乘法器转让专利

申请号 : CN201010162368.X

文献号 : CN101840324B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王东琳张志伟尹志刚林啸谢少林闫寒薛晓军

申请人 : 中国科学院自动化研究所

摘要 :

本发明公开了一种支持复数运算和子字并行的64位定浮点乘法器,该乘法器由四个32位乘法器组合而成,其中每个32位乘法器均包含一个作为输出的“进位”串和一个作为输出的“和”串,四个32位乘法器共包含四个“进位”串和四个“和”串,该四个“进位”串和该四个“和”串通过一个8-2压缩器进行压缩,得到一个新的“进位”串和一个新的“和”串,然后求和作为该乘法器的输出。利用本发明,降低了关键通路延时,减小了运算资源开销。

权利要求 :

1.一种支持复数运算和子字并行的64位定浮点乘法器,其特征在于,该乘法器由四个

32位乘法器组合而成,其中每个32位乘法器均包含一个作为输出的“进位”串和一个作为输出的“和”串,四个32位乘法器共包含四个“进位”串和四个“和”串,该四个“进位”串和该四个“和”串通过一个8-2压缩器进行压缩,得到一个新的“进位”串和一个新的“和”串,然后求和作为该乘法器的输出。

2.根据权利要求1所述的支持复数运算和子字并行的64位定浮点乘法器,其特征在于,所述32位乘法器由四个16位乘法器组合而成,其中每个16位乘法器均包含一个作为输出的“进位”串和一个作为输出的“和”串,四个16位乘法器共包含四个“进位”串和该四个“和”串,该四个“进位”串和四个“和”串通过一个8-2压缩器进行压缩,得到一个新的“进位”串和一个新的“和”串,作为该32位乘法器的输出。

3.根据权利要求2所述的支持复数运算和子字并行的64位定浮点乘法器,其特征在于,所述16位乘法器由四个8位乘法器组合而成,其中每个8位乘法器均包含一个作为输出的“进位”串和一个作为输出的“和”串,四个8位乘法器共包含四个“进位”串和该四个“和”串,该四个“进位”串和四个“和”串通过一个8-2压缩器进行压缩,得到一个新的“进位”串和一个新的“和”串,作为该16位乘法器的输出。

4.根据权利要求2或3所述的支持复数运算和子字并行的64位定浮点乘法器,其特征在于,所述16位乘法器包括第一8位乘法器、第二8位乘法器、第三8位乘法器、第四8位乘法器、复数乘法运算单元、整合单元和乘累加单元,其中:第一8位乘法器、第二8位乘法器、第三8位乘法器和第四8位乘法器均用于对输入的

8位操作数进行乘法操作,分别得到一个16位乘法结果输出所述复数乘法运算单元,并分别得到一个“进位”串和一个“和”串输出所述整合单元;

复数乘法运算单元,用于接收来自第一8位乘法器、第二8位乘法器、第三8位乘法器和第四8位乘法器的4个16位乘法结果,将该4个16位 乘法结果相互交叉相加,完成复数乘法运算,并将运算结果输出到所述乘累加单元;

整合单元,用于将来自第一8位乘法器、第二8位乘法器、第三8位乘法器和第四8位乘法器的4个“进位”串和4个“和”串进行压缩,然后再相加,得到16位数据乘法运算的结果,并将该结果输出送到所述乘累加单元或者直接输出;

乘累加单元,用于支持1个16位复数运算的乘累加,或者4个8位的乘累加,或者1个

16位的乘累加运算。

5.根据权利要求4所述的支持复数运算和子字并行的64位定浮点乘法器,其特征在于,所述第一8位乘法器、第二8位乘法器、第三8位乘法器或第四8位乘法器均由部分积产生模块、华莱士树模块和加法器模块依次连接而成。

6.根据权利要求4所述的支持复数运算和子字并行的64位定浮点乘法器,其特征在于,所述第一8位乘法器、第二8位乘法器、第三8位乘法器和第四8位乘法器均有两种输出,一种输出是被送到所述整合单元的“进位”串和“和”串,用于构造16位乘法器,另一种输出是被送到所述复数乘法运算单元的16位乘法结果。

7.根据权利要求4所述的支持复数运算和子字并行的64位定浮点乘法器,其特征在于,所述复数乘法运算单元包含2个16位复数加法器。

8.根据权利要求4所述的支持复数运算和子字并行的64位定浮点乘法器,其特征在于,所述整合单元包含8-2压缩器和24位加法器。

9.根据权利要求4所述的支持复数运算和子字并行的64位定浮点乘法器,其特征在于,所述乘累加单元包括乘累加寄存器和加法器。

说明书 :

支持复数运算和子字并行的64位定浮点乘法器

技术领域

[0001] 本发明涉及高性能数字信号处理器技术领域,尤其涉及一种支持复数运算和子字并行(Single Instruction Multiple Data,SIMD)的64位定浮点乘法器。

背景技术

[0002] 在数字信号处理算法中(如FFT,FIR滤波,矩阵矢量点积等),乘法运算均占据很大的比例。因此,对乘法器的算法和结构进行优化设计,成为提高处理器性能的关键。
[0003] 不同的数字信号处理领域对乘法运算有不同的需求,在通信处理领域,多采用8位或者16位的定点数据;在影像和雷达信号处理领域,多采用单精度浮点甚至双精度浮点数据。同时,大量数字信号处理算法,如FFT等,均需要进行复数运算。
[0004] 为了保证数字信号处理器在不同处理领域的适用性,需要乘法器能够支持不同数据长度的定点运算、单精度和双精度的浮点运算以及复数运算。对于不同数据长度的运算,如果统一采用定长数据表示方式,则对于任何精度的运算过程,处理器的运算能力都受到最大精度运算能力的限制。因此,人们研究出了大量的增加操作并行性的硬件结构,以增加对低精度运算的并行操作支持。这些技术的共同特点是,将多个低精度操作数打包成一个整字送到运算单元进行并行的多个低精度的同质运算,使运算单元既能支持高精度的整字运算又能增加低精度计算的并行性。这种并行性增强方式,对取指令发送以及数据寄存器的维护没有任何影响,是在不改变体系结构的前提下最有效的增加处理器运算能力的方式,目前业界将这种并行性增强方式称为子字并行结构。
[0005] 复数乘法运算,需要完成四个乘法运算和2个加法运算,普通的数字信号处理器可能需要6个时钟周期才能完成复数乘法。然而如果乘法器支持复数运算,则可以在1个时钟周期之后得到结果,性能提高6倍。此外,通过支持指令级的复数运算,可以降低编程难度,提高代码效率。
[0006] 子字并行技术、复数乘法运算能够提高乘法器性能,然而这需要在乘法器的关键通路中增加配置部件,这会增大数据通路的延时,从而降低性能。此外,由于对不同数据长度和运算的支持,会导致乘法器运算资源迅速扩张,从而增大芯片面积和功耗。

发明内容

[0007] (一)要解决的技术问题
[0008] 有鉴于此,本发明的主要目的在于提供一种支持复数运算和子字并行的64位定浮点乘法器,以降低关键通路延时,减小运算资源开销。
[0009] (二)技术方案
[0010] 为达到上述目的,本发明提供了一种支持复数运算和子字并行的64位定浮点乘法器,该乘法器由四个32位乘法器组合而成,其中每个32位乘法器均包含一个作为输出的“进位”串和一个作为输出的“和”串,四个32位乘法器共包含四个“进位”串和四个“和”串,该四个“进位”串和该四个“和”串通过一个8-2压缩器进行压缩,得到一个新的“进位”串和一个新的“和”串,然后求和作为该乘法器的输出。
[0011] 上述方案中,所述32位乘法器由四个16位乘法器组合而成,其中每个16位乘法器均包含一个作为输出的“进位”串和一个作为输出的“和”串,四个16位乘法器共包含四个“进位”串和该四个“和”串,该四个“进位”串和四个“和”串通过一个8-2压缩器进行压缩,得到一个新的“进位”串和一个新的“和”串,作为该32位乘法器的输出。
[0012] 上述方案中,所述16位乘法器由四个8位乘法器组合而成,其中每个8位乘法器均包含一个作为输出的“进位”串和一个作为输出的“和”串,四个8位乘法器共包含四个“进位”串和该四个“和”串,该四个“进位”串和四个“和”串通过一个8-2压缩器进行压缩,得到一个新的“进位”串和一个新的“和”串,作为该16位乘法器的输出。
[0013] 上述方案中,所述16位乘法器包括第一8位乘法器、第二8位乘法器、第三8位乘法器、第四8位乘法器、复数乘法运算单元、整合单元和乘累加单元,其中:
[0014] 第一8位乘法器、第二8位乘法器、第三8位乘法器和第四8位乘法器均用于对输入的8位操作数进行乘法操作,分别得到一个16位乘法结果输出所述复数乘法运算单元,并分别得到一个“进位”串和一个“和”串输出所述整合单元;
[0015] 复数乘法运算单元,用于接收来自第一8位乘法器、第二8位乘法器、第三8位乘法器和第四8位乘法器的4个16位乘法结果,将该4个16位乘法结果相互交叉相加,完成复数乘法运算,并将运算结果输出到所述乘累加单元;
[0016] 整合单元,用于将来自第一8位乘法器、第二8位乘法器、第三8位乘法器和第四8位乘法器的4个“进位”串和4个“和”串进行压缩,然后再相加,得到16位数据乘法运算的结果,并将该结果输出送到所述乘累加单元或者直接输出;
[0017] 乘累加单元,用于支持1个16位复数运算的乘累加,或者4个8位的乘累加,或者1个16位的乘累加运算。
[0018] 上述方案中,所述第一8位乘法器、第二8位乘法器、第三8位乘法器或第四8位乘法器均由部分积产生模块、华莱士树模块和加法器模块依次连接而成。
[0019] 上述方案中,所述第一8位乘法器、第二8位乘法器、第三8位乘法器和第四8位乘法器均有两种输出,一种输出是被送到所述整合单元的“进位”串和“和”串,用于构造16位乘法器,另一种输出是被送到所述复数乘法运算单元的16位乘法结果.
[0020] 上述方案中,所述复数乘法运算单元包含2个16位复数加法器。
[0021] 上述方案中,所述整合单元包含8-2压缩器和24位加法器。
[0022] 上述方案中,所述乘累加单元包括乘累加寄存器和加法器。
[0023] (三)有益效果
[0024] 本发明提供的这种支持复数运算和子字并行的64位定浮点乘法器,降低了关键通路延时,减小了运算资源开销。

附图说明

[0025] 图1是本发明子字整合方案的原理图;
[0026] 图2是传统子字整合结构与优化的子字整合结构原理图,其中:
[0027] 图2(a)是传统的子字整合结构原理图;
[0028] 图2(b)是本发明优化的子字整合结构原理图;
[0029] 图3是传统的可重构乘法器的8-2压缩示意图;
[0030] 图4是本发明优化的可重构乘法器的8-2压缩示意图;
[0031] 图5是本发明复数运算算法的电路结构示意图;
[0032] 图6是本发明提供的支持复数运算和子字并行的64位定浮点乘法器的结构示意图;
[0033] 图7是本发明8位乘法器整合成16位乘法器的示意图。

具体实施方式

[0034] 为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
[0035] 本发明提供的64位定浮点乘法器是一种支持子字并行、复数运算的定浮点乘法器,该乘法器支持8、16、32和64的定点乘法运算,支持精简的IEEE754标准的单/双精度浮点运算,并支持32、64位复数乘法运算。
[0036] 下面首先介绍本发明的实现原理,主要包括子字整合方案、优化的子字整合结构和复数乘法运算。
[0037] 1)、子字整合方案
[0038] 子字整合是指采用位宽较小的乘法器组合成位宽较大的乘法器,从而保证乘法器能够支持不同位宽的运算。本发明的乘法器子字整合方案的原理如图1所示,以8位乘法运算为最小单位,以此为基础构造成16位的乘法器;然后以16位乘法器为单位,构造32位乘法器,最后以32位乘法器位基础,构造64位乘法器。32位乘法器和部分指数通路组可完成单精度浮点运算,64位乘法器和部分指数通路可完成双精度浮点运算。
[0039] 2)、优化的子字整合结构
[0040] 采用传统的子字整合结构如图2(a)所示(以4个8位乘法器整合为1个16位乘法器为例),16位的可重构乘法器的关键路径上包括8位部分积生成、8位乘法器华莱士树、16位加法器、移位对齐/4-2压缩和32位加法器。在这些部件中,加法器是延时最大的部件,而该路径中包含1个16位加法器和1个32位加法器,这对于乘法器的性能损失很大,需要进行优化,将加法器尽可能的从关键路径中去掉。
[0041] 本发明提出一种新的结构,如图2(b)所示,每个8位乘法器的华莱士的“进位”串(C)和“和”串(S),直接参与8-2压缩,从而将16位的加法器从关键路径中去掉,代价只是将4-2压缩替换为8-2压缩,由于压缩器延时非常短,而且面积较小,所以这种改进是非常值得的。
[0042] 此外由公式(1)可得到16位乘法运算公式
[0043] A×B=(A1×28+A0)×(B1×28+B0) (1)
[0044] =A1×B1×216+(A1×B0+A0×B1)×28+A0×B0
[0045] 该公式的图形化如图3所示,可见8-2压缩器低8位实际上就是两个操作数的加法,这部分运算可以通过已经存在的16位加法器结果的低8位得到,因此,可以将8-2压缩器最低8位的压缩部分去掉,仅仅需要提供低8位加法运算的进位信号,如图4所示。
[0046] 通过上述分析可见,优化的算法将16位加法器从关键路径中去掉,去掉8-2压缩树的低8位,将32位加法器转换为24位加法器,代价是仅仅增加上图中的灰色部分的4-2压缩器的面积和延时。由于加法器的延时相比压缩器而言都大的多,因此,创新的算法可以大大提高乘法器速度。
[0047] 3)、复数乘法运算
[0048] 32位复数(实部和虚部均为16位)运算算法为
[0049] (A1j+A0)*(B1j+B0)=(A1B0+A0B1)j+(A0B0-A1B1) (2)
[0050] 其对应的电路结构如图5所示,在4个16为的乘法器中,分别计算A1B1、A1B0、A0B1和A0B0,然后将对应的两个实部和虚部分别做加减运算,得到最终的复数乘积结果。
[0051] 本发明描述的可重构乘法器可以并行执行4个16位复数(实部虚部各为8位)、2个32位复数(实部虚部各为16位)或者1个64位复数(实部虚部各为32位)的乘累加运算。
[0052] 基于上述实现原理,图6示出了本发明提供的支持复数运算和子字并行的64位定浮点乘法器结构,该乘法器由四个32位乘法器组合而成,其中每个32位乘法器均包含一个作为输出的“进位”串和一个作为输出的“和”串,四个32位乘法器共包含四个“进位”串和四个“和”串,该四个“进位”串和该四个“和”串通过一个8-2压缩器进行压缩,得到一个新的“进位”串和一个新的“和”串,然后求和作为该乘法器的输出。
[0053] 所述32位乘法器由四个16位乘法器组合而成,其中每个16位乘法器均包含一个作为输出的“进位”串和一个作为输出的“和”串,四个16位乘法器共包含四个“进位”串和该四个“和”串,该四个“进位”串和四个“和”串通过一个8-2压缩器进行压缩,得到一个新的“进位”串和一个新的“和”串,作为该32位乘法器的输出。
[0054] 所述16位乘法器由四个8位乘法器组合而成,其中每个8位乘法器均包含一个作为输出的“进位”串和一个作为输出的“和”串,四个8位乘法器共包含四个“进位”串和该四个“和”串,该四个“进位”串和四个“和”串通过一个8-2压缩器进行压缩,得到一个新的“进位”串和一个新的“和”串,作为该16位乘法器的输出。
[0055] 再参照图6,在构造该64位定浮点乘法器过程中,每个8位的乘法器均包含两个输出(“进位”串和“和”串)。这样四个8位乘法器共包含8个输出(4个“进位”串和4个“和”串),将这8个数据通过8-2压缩器进行压缩,得到新的“进位”串和“和”串,以供16位乘法器扩展为32位乘法器使用。16位扩展为32位乘法器过程与上述相似,即每个16位的乘法器均包含两个输出(“进位”串和“和”串)。这样四个16位乘法器共包含8个输出(4个“进位”串和4个“和”串),将这8个数据通过8-2压缩器进行压缩,得到新的“进位”串和“和”串,以供32位乘法器扩展为64位乘法器使用。32位扩展为64位乘法器过程与上述相似,即每个32位的乘法器均包含两个输出(“进位”串和“和”串)。这样四个32位乘法器共包含8个输出(4个“进位”串和4个“和”串),将这8个数据通过8-2压缩器进行压缩,然后将压缩器得到的两个数据进行相加,就可以得到64乘法运算的最终结果。
[0056] 下面以8位乘法器整合为16位乘法器为例,详细描述本发明乘法器由位数较短的乘法器组合成位数较宽的乘法器的原理和结构,如图7所示。
[0057] 16位乘法器包括第一8位乘法器、第二8位乘法器、第三8位乘法器、第四8位乘法器、复数乘法运算单元、整合单元和乘累加单元,其中:
[0058] 第一8位乘法器、第二8位乘法器、第三8位乘法器和第四8位乘法器均均由部分积产生模块、华莱士树模块和加法器模块依次连接而成,用于对输入的8位操作数进行乘法操作,分别得到一个16位乘法结果输出所述复数乘法运算单元,并分别得到一个“进位”串和一个“和”串输出所述整合单元;第一8位乘法器、第二8位乘法器、第三8位乘法器和第四8位乘法器均有两种输出,一种输出是被送到所述整合单元的“进位”串和“和”串,用于构造16位乘法器,另一种输出是被送到所述复数乘法运算单元的16位乘法结果。
[0059] 复数乘法运算单元包含2个16位复数加法器,用于接收来自第一8位乘法器、第二8位乘法器、第三8位乘法器和第四8位乘法器的4个16位乘法结果,将该4个8位乘法结果相互交叉相加,完成复数乘法运算,并将运算结果输出到所述乘累加单元;
[0060] 整合单元包含8-2压缩器和24位加法器,用于将来自第一8位乘法器、第二8位乘法器、第三8位乘法器和第四8位乘法器的4个“进位”串和4个“和”串进行压缩,然后再相加,得到16位数据乘法运算的结果,并将该结果输出送到所述乘累加单元或者直接输出;
[0061] 乘累加单元包括乘累加寄存器和加法器,用于支持1个16位复数运算的乘累加,或者4个8位的乘累加,或者1个16位的乘累加运算。
[0062] 在由16位乘法器整合为32位乘法器,以及由32位乘法器整合为64位乘法器时,同样采用上述方法进行优化,作为比较,表1列出了传统方法与本文方法关键路径的延时比较。
[0063]
[0064] 表1
[0065] 通过表1可以看出,本发明提供的这种支持复数运算和子字并行的64位定浮点乘法器,降低了关键通路延时,减小了运算资源开销。
[0066] 以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。