高速分裂式乘累加器mac装置的制作方法

文档序号:6563373阅读:210来源:国知局
专利名称:高速分裂式乘累加器mac装置的制作方法
技术领域
本发明涉及一种用于解决多种乘累加算法的高速分裂式乘累加器MAC装置。
背景技术
在数字信号处理应用中,很多操作如FIR、IIR、卷积算法和FFT等,都涉及各种不同模式的乘法或乘累加操作,乘累加算法的处理能力直接影响到处理器的性能。乘累加运算的乘数和被乘数很可能在有些情况下是有符号数,另一些情况是无符号数,也有可能出现一个是有符号数,一个是无符号数的情况;另外,在某些场合,不只需要乘累加操作,还需要考虑不同位宽操作数的乘法操作,乘累加操作以及并行的先乘再加操作。同时,现代信号处理器的处理能力要求越来越高,包括对工作频率以及单周期信号处理能力的要求,这就需要乘累加运算满足高速并且能够单周期处理多个数据即SIMD指令。而现有的乘累加MAC装置的计算并行度不高,通常在一个周期内只可以进行一个乘法或者乘累加操作,这不能够满足多媒体流的需求。并且,高速的处理器要求乘累加单元也具有高速的性能,有些设计中为了实现高速要求而牺牲了流水线的深度,使得启动乘累加操作时需要多个周期才能输出一个结果。由于现有乘累加设计中存在的这些不足,本发明提出了一种高速分裂式乘累加器MAC装置,这种用于解决多种乘累加算法的乘累加装置实现了高速、流水线深度小并且单周期内可以处理多个数据即SIMD指令。

发明内容
本发明的主要目的在于克服现有技术中的不足,提供一种高速分裂式乘累加器MAC装置。
为了解决上述技术问题,本发明是通过以下技术方案实现的一种高速分裂式乘累加器MAC装置,包括输入和输出,该装置还包括四个功能单元功能单元I是数据选择单元,在输入中选择合适的乘数和被乘数输出;功能单元II是半字位宽的乘累加器,根据累加选择信号A_mul和符号选择信号U_mul将功能单元I输入的乘数和被乘数相乘得到乘累加器结果;功能单元III包含两部分电路,一是两个半字模式乘加结果的输出电路,二是全字模式乘法或乘累加运算的预处理电路;功能单元IV是全字模式乘法或乘累加运算的输出电路,其是一个进位选择结构,包含选择器和一个比特加法器。
作为本发明的高速分裂式乘累加器MAC装置的改进功能单元I为乘法器的数据选择逻辑,其接收多位乘数和被乘数数据以及颗粒度选择信号G_mul,根据颗粒度选择信号G_mul选择四组合适的数据输出到乘法器中。
作为本发明的高速分裂式乘累加器MAC装置的进一步改进功能单元II是由四个16比特乘累加器组成,分别对由功能单元I送来的信号根据累加选择信号A_mul信号的状态进行运算,输出四个并行的结果。
作为本发明的高速分裂式乘累加器MAC装置的进一步改进功能单元III包括两部分电路第一部分电路是由两个32比特加法器组成,为半字模式下的乘加操作服务,输出两个半字模式乘加操作结果;另一部分电路是由一个改进型的3输入48比特加法器组成,是全字模式乘法或乘累加操作的一个预处理电路,得到三个全字模式操作的中间结果;所述的功能单元III是根据颗粒度选择信号G_mul、符号选择信号U_mul和累加选择信号A_mul信号的状态来对输入数据进行累加。
作为本发明的高速分裂式乘累加器MAC装置的进一步改进功能单元IV包含了两个选择器和一个64比特加法器,其根据累加选择信号A_mul信号的状态对功能单元III送来的三个输出和先前的需要累加的数据进行运算,得到最终的全字模式乘法或乘累加结果。
作为本发明的高速分裂式乘累加器MAC装置的进一步改进功能单元II中还包含了一个基于不同位宽的先行进位加法器的压缩电路。该基于不同位宽的先行进位加法器的压缩电路是通过如下方法实现的当部分积的个数M是奇数时,采用 组位宽为 比特的先行进位加法器错位排列,将部分积的个数压缩为 ,压缩率为 ;当M是偶数时,采用 组位宽为 比特的先行进位加法器错位排列,将部分积的个数压缩为 ,压缩率为 。
功能单元II中所包含的混合型的部分积压缩电路方案,它是根据部分积的个数来选择合适的压缩电路对部分积进行压缩处理,以达到最大的压缩效率。这里使用的压缩电路包括全加器、4-2压缩器,5-2压缩器以及本发明提出的一种新型的基于不同位宽的先行进位加法器的压缩电路。具体实现方法为当部分积的个数是5的倍数并且为偶数时,采用5-2压缩器将部分积的个数由M压缩为2M/5。
当部分的个数是4的倍数时,采用4-2压缩器将部分积的个数由M压缩为M/2。
当部分积的个数是3的倍数时,采用全加器将部分积的个数由M压缩为2M/3。
当不是以上各种情况时,采用基于不同位宽的先行进位加法器来进行压缩。
与现有技术相比,本发明的有益效果是本发明提供的一种高速分裂式乘累加器MAC装置工作频率快、流水线深度不大、计算并行度高,能够解决多种模式的乘累加运算,其中包括不同位宽(半字、全字)的无符号/有符号乘法操作、乘累加操作以及半字模式下的乘加操作。本发明划分为若干个顺序执行单元,通过对这些单元的安排和组合以匹配处理器的流水线结构,同时它易于通过流水线重新划分以实现频率扩展满足不同频率处理器的要求。


图1为本发明实施例的高速分裂式MAC结构装置系统构架图。
图2为传统的基于全加器的部分积压缩原理图。
图3为本发明实施例提出的基于先行进位加法器的压缩原理图。
图4为16比特乘累加器的结构框图。
图5为本发明实施例的基于各种压缩电路的混合型部分积累加方案图。
具体实施例方式
结合附图,下面对本发明进行详细说明。
在图1中,本发明实例将高速分裂式乘累加器MAC装置分为4个顺序执行的功能单元,每个功能单元分别完成MAC装置的部分功能。
I为功能单元I,其为乘法器的数据选择逻辑。其接收多位乘数和被乘数数据以及颗粒度选择信号,它根据颗粒度选择信号选择合适的数据输出到四个乘法器中。其具体逻辑为G_mul置高执行全字(32bit)运算。
乘法器1的操作数为AH,BH乘法器2的操作数为AL,BL乘法器3的操作数为AH,BL乘法器4的操作数为AL,BHG_mul置低执行半字(16bit)运算。
乘法器1的操作数为A1,B1乘法器2的操作数为A2,B2乘法器3的操作数为A3,B3
乘法器4的操作数为A4,B4II为功能单元II,它是由四个16比特乘累加器组成,分别对由功能单元I送来的四组信号根据累加选择信号A_mul信号的状态决定是进行乘法还是乘累加运算,输出四个并行的结果。其具体逻辑为A_mul置高执行16bit乘累加操作,将这次乘法运算结果与之前的结果进行累加。
A_mul置低执行16bit乘法操作。
当为全字模式,即G_mul=1时,四个结果将作为四个部分积累加得到最终的全字乘法或乘累加的结果。
R20=AH×BH,R21=AL×BL,R22=AH×BL,R23=AL×BH。
当为半字模式,即G_mul=0时,四个结果作为四个16比特乘累加器的结果输出半字模式下乘法或乘累加操作的最终结果。
R20=A1×B1,R21=A2×B2,R22=A3×B3,R23=A4×B4。
III为功能单元III,其接受功能单元II送来的四个32bit乘法或乘累加运算结果,根据颗粒度选择信号G_mul、符号选择信号U_mul和累加选择信号A_mul信号的状态来进行累加得到需要的结果。这一功能单元可以划分为两部分电路,分别执行不同的功能。第一部分电路是由两个32比特加法器组成,为半字模式的乘加操作服务,输出两个半字模式的乘加操作结果R32、R33;另一部分电路是由一个改进型的3输入48比特加法器组成,是全字模式乘法或乘累加操作的一个预处理电路,得到三个全字模式操作的中间结果R30、R31a和R31b。其具体逻辑如下所示第一部分电路当为半字模式,即G_mul=0时,将两个相邻的乘法结果相加,得到两个并行的乘加操作的结果并作为整个高速分裂式MAC的结果输出。
R32=R20+R21=A1×B1+A2×B2,R33=R22+R23=A3×B3+A4×B4。
当为半字模式,即G_mul=0时,这两个加法器的结果没有意义。
第二部分电路将功能单元II得到的四个结果移位相加得到三个中间结果,并送到下一个功能单元中进行运算得到最后的全字模式乘法或乘累加结果。
由于全字模式的乘法操作结果为A×B=AH×BH×232+sign_ext(AH×BL+AL×BH)×216+AL×BL=R20×232+sign_ext(R22+R23)×216+R21={R20,R21}+sign_ext(R22+R23)×216由于R20×232和R21没有重叠,所以R20×232+R21的结果实际上就是将R20、R21两个数直接连接即可。所以A×B实际上是三个数的累加。又由于A×B的低16位就是R21的低16位,无需进行累加,所以一个3输入48比特的加法器就可以得到A×B的结果。
这一部分电路得到的三个结果为R3041比特数据,3输入数据累加结果的低40比特和一个进位位,作为功能单元3的一个输出;R31a24比特数据,假设进位为1时的高24比特累加结果,作为功能单元3的一个输出;
R31b24比特数据,假设进位为0时的高24比特累加结果,作为功能单元3的一个输出。
IV为功能单元IV,其接收功能单元III送来三个输出和先前的需要累加的数据,根据A_mul信号的状态得到最终的全字模式乘法或乘累加结果。在功能单元IV中包含了两个选择器和一个64比特加法器。
选择器1接收来自功能单元三的三个输出数据,经过选择得到AH×BH的结果。其具体逻辑为AH×BH[39:0]=R30[39:0],AH×BH[63:40]由低40比特累加的进位选择而成。当进位R30[40]为高电平时,AH×BH[63:40]=R31a;当进位R30[40]为低电平时,AH×BH[63:40]=R31b。
选择器2接收的数据一个来自输出寄存器R4,是上一个节拍的累加数据,另一个是64比特的零,并且由累加选择信号A_mul确定输出结果。
当A_mul为低电平时,不需要进行累加操作,Racc=64’h0;当A_mul为高电平时,需要进行累加操作,Racc=R4。
64比特加法器将两个选择器的选择结果相加,得到最终的全字模式下乘法或乘累加结果,将结果通过R4输出。这个64比特加法器的结构是基于4比特先行进位加法器的进位选择结构。
由于受高速分裂式乘累加器MAC装置的物理性质限制,其很难在一个DSP处理器时钟周期内完成,因此在本发明具体实施例中,将整个结构划分为四级流水实现,使之与流水线匹配。将功能单元I和功能单元II安排在前两个流水级中,根据其电路实现关键时延均匀的其功能单元分配在各流水级中。将功能单元III安排在第3级流水中,功能单元IV在最后一个流水级中。这样,四个平行的半字模式乘法或乘累加操作结果将在第2级流水中输出,两个并行的半字模式乘加操作结果在第3级流水中输出,一个全字模式乘法或乘累加操作在第4级流水中输出。本发明具体实施的性能如表1~3所示(实验条件130nm标准单元CMOS工艺技术)表1、逻辑综合后的时延信息

表2、物理综合后的时延信息

表3、布线后的时延信息

此MAC装置在最坏情况下可以与主频为480MHZ的DSP匹配,在一般工作情况下可以与主频为610MHz的DSP匹配。并且,本发明实施例提出的功能单元与流水级匹配方法可以进一步扩展,通过功能单元内外的子逻辑模块层次的进一步细分和重组,可以实现与高频或低频各种不同的处理器之间的良好匹配。例如将流水线细分为8级,就可以达到最坏情况下的890MHz和一般工作情况下的1.18GHz。其各流水级的时延如表4所示表4、8级流水划分设计逻辑综合后的各级时延信息


图2为传统的基于全加器的部分积压缩原理,以5个部分积为例。部分积压缩电路是乘法器或乘累加器中的主要组成部分,它的性能可以直接影响到乘法器或乘累加器的性能好坏,由于大部分的时延和面积都消耗在这一部分。这一部分输入信号为5个部分积A、B、C、D和E。首先利用全加器的3∶2压缩特性,通过一组全加器将三个部分积A、B和E压缩为两个,这样部分积的个数由5减少为4;在通过一组全加器将其中的三个部分积压缩为两个,这样部分积的个数由4减少为3;最后一组全加器后就可以得到2个部分积,完成压缩电路功能。这样,基于全加器的压缩电路的关键路径上有3个全加器,时延T=3×Delay(全加器)。
图3为本发明实施例提出的基于先行进位加法器的压缩原理图。其分为两部分,第一部分接受5个部分积A、B、C、D和E,输出3个部分积a、b和c;第二部分接收a、b和c,输出最终累加结果sum和carry。
第一部分首先采用两组位宽为2比特的先行进位加法器将5个部分积压缩为3个,这两组加法器是移位排列的,即第二组加法器相对第一组左移了一位。具体实现方法是将部分积B和C分成若干个子串,每个子串位宽为2比特,将这些子串作为输入送到若干个位宽为2比特的先行进位加法器中进行加法运算,这就是第一组加法器。同样的,将D和E也分为2比特位宽的子串送到2比特的加法器中形成第二组加法器。最后一个部分A是作为两组加法器的进位来累加的,由于两组加法器是错开1比特排列的,所以A的每一个比特位都会得到累加。累加后的结果是a、b和c。a是由第一组加法器的结果输出组成的,b是由第二组加法器的结果输出组成的,c是由两组加法器的进位输出位组成的。
第二部分采用一组全加器将3个部分积累加为sum和carry。所以,这种基于不同位宽的先行进位加法器的累加电路的关键路径包括一个2bit加法器和一个全加器。由于一个2bit加法器的延时小于两个级联的全加器的延时,所以这种压缩电路的时间性能优于传统的基于全加器的Wallace树型结构。
将这种压缩电路推广到一般场合下,假设部分积的个数为M,当M是奇数时,采用 组位宽为 比特的先行进位加法器,将部分积的个数压缩为 ,压缩率为 。当M是偶数时,采用 组位宽为 比特的先行进位加法器,将部分积的个数压缩为 ,压缩率为 。可以看出这种压缩电路的压缩率大于全加器。
图4为16比特乘累加器的结构框图。其接收两个16比特操作数,累加选择信号A_mul和符号选择信号U_mul,输出一个无符号/有符号乘法或乘累加结果。本单元可分为三部分,部分积产生模块,部分积压缩树和加法器。部分积产生模块接收两个操作数,输出9个部分积;部分积压缩树模块接收部分积产生模块输出的9个部分积和一个额外的部分积,这个额外的部分积是先前的结果经过由A_mul信号选择后再送到部分积压缩树中。
当A_mul=0时,不需要进行累加,将0送入部分积压缩模块中。
当A_mul=1时,需要进行累加,将先前的结果送入部分积压缩模块中。本发明中的16比特乘累加器将先前的结果作为一个部分积返回到部分积压缩树模块中,而不是在最后进行累加,这样可以节省一级加法器。其输出压缩后的两个部分积sum,carry。加法器将压缩模块产生的两个部分积加起来,得到乘法或乘累加结果。这里采用的是基于8bit先行进位加法器的进位选择结构。
图5为本发明实施例的基于各种压缩电路的混合型部分积累加方案在16bit乘累加器中的应用。这种基于各种压缩电路的混合型部分积方案是合理利用现存的各种压缩电路和本发明实施例中提出的一个基于不同位宽的先行进位加法器的压缩电路,将其应用于最佳场合,使其压缩率达到最大。具体实现方法在前面已经提到。
表5给出了采用这种基于各种压缩电路的混合型部分积方案与传统的全加器Wallace tree结构的时延对比,取得了11.6%到32.1%的改善。
表5、性能对比表

将这种方案应用到16bit乘累加器中,需要将9个部分积和一个额外的部分积累加压缩为2个,并且用两级流水实现,而这个额外的部分积要送到第2级流水中。
首先,三组全加器组将9个部分积压缩为6个。
其次,由于6是3的倍数,两组全加器组将这6个部分积压缩为4个。
这作为第一级流水,在第二级流水中,首先,两组2比特先行进位加法器将5个部分积压缩为3个,这5个部分积包括从第一级流水输出的四个部分积和一个额外的经过选择的部分积。其次,一组全加器将3个部分积压缩为2个。这样,部分积压缩电路完成。表6给出了本发明的各级及总门数。
表6、各级逻辑门信息

综上所述,本发明实施例提出了一种高速分裂式乘累加器MAC装置,用于解决多种模式的乘法和乘累加运算,其中包括32位模式下的有符号/无符号的乘法或乘累加运算,16位模式有符号/无符号的乘法或乘累加运算,16位模式下的乘加运算。将MAC装置划分成顺序的四个结构单元,对每个结构单元分别处理和优化;提出了一种基于不同位宽的先行进位加法器的压缩电路和利用各种压缩电路以取得最优压缩效果的压缩方案。这样不但从面积和时延方面都有较好的改善,为高速设计奠定了基础。提出了一种MAC装置和DSP处理器流水级匹配的方法,可以通过重新安排各功能模块和流水线,来实现MAC的频率扩展,使MAC设计可以和各种频率的处理器相匹配。本发明实施例所提出的方法可以组合使用,也可以分别单独使用,可以在DSP处理器中使用,也可以在面向各种需要MAC功能装置的电路实现中使用。
最后,还需要注意的是,以上列举的仅是本发明的若干个具体实施例。显然,本发明不限于以上实施例,还可以有许多变形。本领域的普通技术人员能从本实用新型公开的内容直接导出或联想到的所有变形,均应认为是本发明的保护范围。
权利要求
1.一种高速分裂式乘累加器MAC装置,包括输入和输出,其特征在于,该装置还包括四个功能单元功能单元I是数据选择单元,在输入中选择合适的乘数和被乘数输出;功能单元II是半字位宽的乘累加器,根据累加选择信号A_mul和符号选择信号U_mul将功能单元I输入的乘数和被乘数相乘得到乘累加器结果;功能单元III包含两部分电路,一是两个半字模式乘加结果的输出电路,二是全字模式乘法或乘累加运算的预处理电路;功能单元IV是全字模式乘法或乘累加运算的输出电路,其是一个进位选择结构,包含选择器和一个比特加法器。
2.根据权利要求1所述的一种高速分裂式乘累加器MAC装置,其特征在于,所述的功能单元I为乘法器的数据选择逻辑,其接收多位乘数和被乘数数据以及颗粒度选择信号G_mul,根据颗粒度选择信号G_mul选择四组合适的数据输出到乘法器中。
3.根据权利要求2所述的一种高速分裂式乘累加器MAC装置,其特征在于,所述的功能单元II是由四个16比特乘累加器组成,分别对由功能单元I送来的信号根据累加选择信号A_mul信号的状态进行运算,输出四个并行的结果。
4.根据权利要求3所述的一种高速分裂式乘累加器MAC装置,其特征在于,所述的功能单元III包括两部分电路第一部分电路是由两个32比特加法器组成,为半字模式下的乘加操作服务,输出两个半字模式乘加操作结果;另一部分电路是由一个改进型的3输入48比特加法器组成,是全字模式乘法或乘累加操作的一个预处理电路,得到三个全字模式操作的中间结果;所述的功能单元III是根据颗粒度选择信号G_mul、符号选择信号U_mul和累加选择信号A_mul信号的状态来对输入数据进行累加。
5.根据权利要求4所述的一种高速分裂式乘累加器MAC装置,其特征在于,所述的功能单元IV包含了两个选择器和一个64比特加法器,其根据累加选择信号A_mul信号的状态对功能单元III送来的三个输出和先前的需要累加的数据进行运算,得到最终的全字模式乘法或乘累加结果。
6.根据权利要求5所述的一种高速分裂式乘累加器MAC装置,其特征在于,所述的功能单元II中还包含了一个基于不同位宽的先行进位加法器的压缩电路。
7.根据权利要求6所述的一种高速分裂式乘累加器MAC装置,其特征在于,所述的一个基于不同位宽的先行进位加法器的压缩电路是通过如下方法实现的当部分积的个数M是奇数时,采用 组位宽为 比特的先行进位加法器错位排列,将部分积的个数压缩为 压缩率为 当M是偶数时,采用 组位宽为 比特的先行进位加法器错位排列,将部分积的个数压缩为 压缩率为
全文摘要
本发明公开了一种高速分裂式乘累加器MAC装置,包括输入和输出,该装置还包括四个功能单元功能单元I是数据选择单元,在输入中选择合适的乘数和被乘数输出;功能单元II是半字位宽的乘累加器,根据累加选择信号A_mul和符号选择信号U_mul将功能单元I输入的乘数和被乘数相乘得到乘累加器结果;功能单元III包含两部分电路,一是两个半字模式乘加结果的输出电路,二是全字模式乘法或乘累加运算的预处理电路;功能单元IV是全字模式乘法或乘累加运算的输出电路,其是一个进位选择结构,包含选择器和一个比特加法器。本发明的高速分裂式乘累加器MAC装置,工作频率快、流水线深度不大、计算并行度高,能够解决多种模式的乘累加运算。
文档编号G06F7/48GK1963745SQ200610154979
公开日2007年5月16日 申请日期2006年12月1日 优先权日2006年12月1日
发明者刘鹏, 夏冰洁, 姚庆栋 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1