一种定点乘累加器的制作方法与工艺

文档序号:12008554阅读:295来源:国知局
一种定点乘累加器的制作方法与工艺
本发明属于集成电路设计领域,尤其涉及一种多功能字并行的定点乘累加器。

背景技术:
当今,多媒体播放、视频会议、卫星导航等应用都需要实时完成数字信号处理任务,因此,针对这些应用的电子产品越来越多的采用数字信号处理器及其相关算法的解决方案。各种数字信号处理算法的重要子运算主要为傅立叶变换、相关、卷积等,而这些运算都可分解为大量的乘法、乘累加、复数乘加等运算。同时,不同应用领域有着不同位宽的数据运算需求。因而一个多粒度、并行度高、集成多种功能的高性能乘累加单元对提高数字信号处理的吞吐量有着非常重要的意义并且适用范围广泛。数字信号处理算法如视频解码,音频解码一般是实时的,对运算性能和数据吞吐量要求高。同时,数字信号领域的运算数据类型多,可以是实数或复数,数据位宽有8位宽、16位宽甚至32位宽等多种格式,并且可以是无符号数或有符号数。操作类型也繁多,可能是乘法、加法,或是乘累加,并且由于应用的实时性,对运算的速度有着较高的要求。

技术实现要素:
有鉴于此,本发明的主要目的在于提供一种高性能多功能的乘累加器装置,通过深入研究数字信号处理领域广泛使用的运算和数据格式,分析其所需资源,采用巧妙的资源复用方式,以较小的代价实现多粒度、子字并行、多种功能的乘累加器。本发明公开了一种定点乘累加器,其支持数据的累加、乘法、乘加和乘累加操作,其包括:指令译码和数据分配单元,其用于对操作指令进行译码,并在译码结果为执行累加操作时将输入数据输出至数据准备单元,否则输出至编码压缩单元;X个编码压缩单元,其用于将输入数据进行Booth编码和Wallace树压缩,得到输入数据的两个压缩结果;X个第一加法器,其用于在数据位宽小于4N时,分别对每一个所述编码压缩单元输出的两个压缩结果求和,得到输入数据的乘法结果;其中,N为所述定点乘累加器所支持的最小位宽;压缩树单元,其用于在数据位宽为4N时,对所述多个编码压缩单元输出的压缩结果进一步压缩,得到两个压缩结果;第二加法器,其用于对所述压缩树单元输出的两个压缩结果进行求和,得到数据位宽为4N时的输入数据的乘法结果;第三加法器,其用于在复数操作时,根据第一加法器输出的乘法结果计算复数乘法结果的实部和虚部;数据准备单元,其用于在累加操作时,对输入数据和用于累加的第三位数据扩展为可重构加法器能够接受的数据位宽;在乘累加操作时,用于对第一加法器、第二加法器或第三加法器输出的乘法结果和用于累加的第三位数据扩展为可重构加法器能够接受的数据位宽;可重构加法器,其用于将输入的数据进行求和,得到最终的累加操作结果或者乘累加操作结果。从上述技术方案可以看出,本发明具有以下有益效果:支持多种粒度的运算:支持4N、2N、N位宽的运算,低位宽的运算可以同时并行多个。结构灵活:209和210两个大的部分可以相互并行,即同时分别做乘法操作和加法/累加操作,充分利用了该微体系结构中的计算资源。支持多种数据类型:有符号、无符号,整数、小数,实数、复数。数字信号处理领域的算法因而可以十分高效的在该装置上实现。计算精度高:累加器最高支持4M位宽的长度,并且流水寄存器用4M长度的保存中间结果,其中M大于2N,使得乘累加操作时,乘法结果可以精确的被保留。例如,在计算两个100×100的矩阵乘法时,每个计算结果需要100次乘法,99次加法,假设前50个乘法结果是正数,后50个乘法结果是负数,最终结果相加是接近于0的数。使用传统的乘法器和加法器分别计算,中间结果则会超出能保存的范围,造成最终结果不准确。而使用该装置,中间结果在装置内部的长位宽寄存器内,并且加法位宽相应较长,因而可以保证最终结果的准确性。附图说明图1是本发明中定点乘累加器的结构框图。图2是本发明中另一实施例中定点乘累加器的结构框图。具体实施方式为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明作进一步的详细说明。本发明公开了一种定点乘累加器。该定点累加器支持实数和复数操作,对于实数操作,其支持数据位宽为N、2N和4N位,对于复数操作,其支持数据位宽为2N位。本发明公开了一种定点乘累加装置,可以实现数字信号处理领域常用的多种运算,如乘法,累加,乘累加,支持资源复用,同一数据,假设位宽为4N,可将数据看成4个N位宽、2个2N位宽或1个4N位宽的数据,可以并行一次计算多个相同运算,如并行计算4个N位宽的乘法,运算的数据格式也可为实数、复数,整数、小数等多种形式。该定点乘累加装置十分灵活,对数字信号处理领域的算法有着较广的适用范围。该定点累加器支持的数据类型包括有符合、无符号数、小数及整数,其支持的操作类型包括乘、乘累加、乘加和累加操作。本发明中假定A、B、C是三个4N位宽的输入数据,Mr是4M位宽的累加寄存器,其对4M可重构加法器的结果进行保存。本发明公开的定点乘累加器,对于同一位宽如4N的数据,可看成4个N位宽、2个2N位宽或1个4N位宽的数据,可以并行一次计算多个相同运算,如并行计算4个N位宽的乘法,运算的数据格式也可为实数、复数,整数、小数等多种形式。图1示出了本发明中公开的定点乘累加器的结构框图。如图1所示,该定点乘累加器包括:乘法部件209和加法部件210,其中乘法部件包括指令译码、数据分配单元201、编码压缩单元202、多路输入选通器203、加法器204-1、加法器204-2、加法器204-3、Wallace压缩树单元205和多路输出选通器206;所述加法部件210包括数据准备单元207和可重构加法器208。该定点乘累加器支持N位宽、2N位宽和4N位宽的数据格式。所述指令译码、数据分配单元201,其用于完成对输入指令的译码和输入数据的分配。具体为:如果指令译码的结果为累加操作,则输入数据直接送给数据准备单元207进行累加操作前的数据准备,否则输入数据送入编码压缩单元202。其中,对于非累加操作即乘法、乘累加和乘加操作,假如输入操作数为4N位宽的实数A[4N-1:0]和B[4N-1:0]当指令指定的数据位宽为4N时,则将A[4N-1:2N]和B[4N-1:2N]、A[4N-1:2N]和B[2N-1:0]、A[2N-1:0]和B[4N-1:2N]、A[2N-1:0]和B[2N-1:0]分别分配到四个编码压缩单元202的2N位Booth编码器中,当指令指定的数据位宽为2N位时,则将A[4N-1:2N]和B[4N-1:2N],A[2N-1:0]和B[2N-1:0]分别分配到对应的两个编码压缩单元202的Booth编码器中,当指令指定的数据位宽为N位宽时,则将A[4N-1:3N]和B[4N-1:3N],A[3N-1:2N]和B[3N-1:2N],A[2N-1:N]和B[2N-1:N],A[N-1:0]和B[N-1:0]分别进入四个Booth编码器中。当输入数据为复数时,假定A[4N-1:2N]表示复数的虚部,A[2N-1:0]表示复数的实部,B、C与此一致,高位部分表示虚部,低位部分表示实部,则依次将A[4N-1:2N]和B[4N-1:2N],A[2N-1:0]和B[2N-1:0],A[4N-1:2N]和B[2N-1:0],A[2N-1:0]和B[4N-1:2N]送给四个编码压缩单元202的Booth编码器。编码压缩单元202包括多个,其用于将指令译码、数据分配单元201输入的数据进行Booth编码和Wallace树压缩。该编码压缩单元202的功能为:对于输入的两个数如a、b,其输出为两个部分积结果s和c,其中,s和c的求和结果即为a与b的乘法结果。Booth编码可以简化部分积的数量,Wallace压缩树将这些部分积进行压缩,降低了延迟。完成了数据的Booth编码和Wallace树压缩后的结果分别送入相应的多路器203中,每个编码压缩单元202的处理位宽是2N位宽,其支持无符号、有符号,小数、整数的运算。这几类数据仅对Booth编码有影响,并且仅用非常少的额外控制逻辑,即可复用大多数模块中的资源,达到高效、节省面积等效果。多路器203包括多个,其与编码压缩单元202一一对应,用于将编码压缩单元202输入的数据进行路径选通。当指令指定的数据位宽是4N位时,则选通输入数据到Wallace压缩树单元205中,以进行进一步压缩,否则分别传递给加法器204-1,以完成上一步乘法结果部分积的求和。加法器204-1包括多个,与所述多路器203一一对应,其用于对编码压缩单元202的压缩结果输出进行求和,得到数据位宽小于4N时的乘法结果,并将乘法结果输出给多路器206。Wallace压缩树单元205从多路器203接收编码压缩单元输出的8个部分积压缩结果,以将该8个部分积压缩结果做进一步压缩,得到两个部分积压缩结果,并将压缩结果输出给加法器204-3。多路器206包括多个,其与加法器204-1一一对应,其从加法器204-1接收输入,并完成数据路径的选通。具体选通过程为:当做复数乘法、乘累加和乘加操作时,将数据选通到加法器204-2,即复数的实部输入到一个加法器204-2,复数的虚部输入到另一个加法器204-2,而在实数操作时,直接将数据选通输出到数据准备单元207。两个加法器204-2,其是4N位宽加法器,其分别用于计算复数操作时乘法结果的实部和虚部。一个加法器204-3,其是8N位宽的加法器,用于从Wallace压缩树单元205接收压缩结果,并根据压缩结果计算数据位宽为4N位宽时的乘法结果。数据准备单元207用于累加操作前的数据准备。如果进行乘累加或累加操作,则需进行以下处理:数据准备单元207对进行求和的数据进行处理,主要是位宽的处理,即将数据进行符号位扩展;假如M为可重构加法器208接受数据的最小位宽,为保证精度,一般选M>2N,则数据准备单元207将求和数据扩展为M的倍数。由于N位乘法计算结果最高是2N位,采用长度大的加法器可以保证运算结果的准确性。在数字信号处理算法中,如做N位宽FFT运算,可能是需要多次(如500次)加法得到最终结果,单独使用N位宽乘法器和N位宽加法器,由于中间结果过大,舍入误差或者饱和处理造成最终计算误差较大。而本发明的定点乘累加装置内部使用M(M>2N)位宽的寄存器和加法器,使得在一定程度上可以保证最终结果的准确性,M的选取可以根据芯片具体的应用场合和算法特性灵活地在速度、准确性、面积等因素折衷考虑,M优选为2.5N左右。数据准备单元207还完成进行累加操作的第三个输入数据的符号扩展,并根据操作类型,选通到208可重构加法器的输入。具体为:如果是累加操作,则将第三个输入数据C进行符号位扩展后送入可重构加法器208中,与内部4M位的Mr寄存器做加法操作,其中Mr寄存器中的数值为数据准备单元207从可重构加法器208接收到的求和结果。如果是乘累加,则将A×B的乘法结果送入可重构加法器208中,另一个输入可能是C或Mr,由指令指定。位宽扩展规则如下:根据有、无符号数和数据位宽进行扩展,乘法结果可以是1个8N扩展为1个4M、2个4N扩展为2个2M、4个2N扩展为4个M的位宽扩展,第三个输入数据扩展到同样的位宽,即1个4N扩展为4M、2个2N扩展为2个2M、4个N扩展为4个M。可重构加法器208可以用于对数据准备单元207输入的数据进行求和,其中根据指令译码结果将所输入的数据看成4个M位宽、2个2M位宽或是1个4M的数据进行求和;在累加操作时,所述可重构加法器208还将求和结果送入数据准备单元207。复数的表示方式如下:N位宽的复数实际使用两个N位宽的实数分别表示其实部和虚部,因此本发明公开的上述定点乘累加装置支持N位宽复数或2N位宽复数,并且由于两个复数相乘表示为:(a+bi)*(c+di)=ac-bd+(ad+bc)i,所以一次复数乘法需进行四次乘法和两次加法。另外,本装置可以互不干扰的实现乘法和加法操作。如图1所示,乘法部件209和累加部件210的操作由于不需要资源共享和数据相关性,可以并行操作,即该装置可以并行的完成乘法和累加操作,乘累加在乘法和累加部分相互配合下完成,实现了运算资源的最大化利用。在实数域运算时,可以实现多粒度子字并行,即做乘法、累加、乘累加操作时,可以同时完成4个N位宽或是2个2N位宽数据的计算,或是1个4N位宽的数据运算。以下用N=8,M=20的定点乘累加器设计为例,其中N为输入最小位宽,M为内部累加器的最小位宽,对本发明提出的定点乘累加器做进一步详细说明,其结构如图2所示。其中,输入数据为A、B、C,位宽为4N即32位,表示为A[31:0]B[31:0]C[31:0],内部累加寄存器Mr[79:0],为80位位宽。指令译码、数据分配单元301用于对指令进行译码,并对输入数据进行分配。做实数操作时,当指令指定操作类型是32位即4N位宽的乘法、乘累加时,将输入数据A和B分为以下四组:A[31:16]和B[31:16],A[31:16]和B[15:0],A[15:0]和B[31:16],A[15:0]和B[15:0],并分别分配到四个编码压缩单元302的16位Booth编码器中;如果指令指定操作类型是16位即2N位宽的乘法、乘累加时,其将输入数据A和B分为两组,即A[31:16]和B[31:16],A[15:0]和B[15:0],并分别分配到对应的两个编码压缩单元302的16位Booth编码器中;如果指令指定操作类型是8位即N位宽时,则将输入数据A和B分为四细,即A[31:24]和B[31:24],A[24:16]和B[24:16],A[15:8]和B[15:8],A[7:0]和B[7:0]分别进入四个编码压缩单元302的16位Booth编码器中。当进行复数操作时,假定A[31:16]表示复数的虚部,A[15:0]表示复数的实部,B、C与此一致,高部分表示虚部,低部分表示实部,则依次将A[31:16]和B[31:16],A[15:0]和B[15:0],A[31:16]和B[15:0],A[15:0]和B[31:16]送给四个编码压缩单元302的16位Booth编码器。多路器303对编码压缩单元302的部分积压缩结果进行选通。如果指令指定的操作类型为32位操作时,则将部分积压缩结果选通输出到64位Wallace压缩树单元305,否则选通输出到相应的32位加法器304-1,以进行乘法结果的最终运算。加法器304-1将从多路器303输出A、B对应的相应数据进行相加并输出相加结果;选通器306用于将加法器304-1输出的相加结果选通输出到累加部分310或者加法器304-2。如果是复数运算,则实部和虚部需要再进行一次加法运算,因此将相加结果选通输出到加法器304-2进行相加运算,否则直接选通输出到累加部件310的数据准备单元307中。加法器304-2用于实现复数实部和虚部的计算,并将相加结果输出到累加部件310的数据准备单元307中;Wallance树压缩单元305用于将八个部分积压缩结果进一步压缩为两个,并将结果输出到加法器304-3。加法器304-3进一步对输入的部分积压缩结果进行求和,并输出到累加部件310的数据准备单元307中。数据准备单元307用于做累加之前的数据准备。具体地,其用于将乘法结果的16位扩展为20位或是32位扩展为40位或是64位扩展为80位,扩展时,如果是无符号数则直接在乘法前面补零,有符号数时则复制符号位。同时,根据操作类型,在第三输入数据C的扩展和Mr之间根据指令类型选择其一与上一步的乘法结果求和,结果保存到Mr寄存器中。以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1