CN1632740A - 乘累加装置 - Google Patents
乘累加装置 Download PDFInfo
- Publication number
- CN1632740A CN1632740A CN 200410084483 CN200410084483A CN1632740A CN 1632740 A CN1632740 A CN 1632740A CN 200410084483 CN200410084483 CN 200410084483 CN 200410084483 A CN200410084483 A CN 200410084483A CN 1632740 A CN1632740 A CN 1632740A
- Authority
- CN
- China
- Prior art keywords
- module
- logic module
- logic
- decode
- partial product
- 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
Images
Landscapes
- Complex Calculations (AREA)
Abstract
本发明公开了一种微处理器及计算机系统,旨在提供一种用于解决处理器中需要多种乘累加模式支持的乘累加装置。该乘累加装置包括预译码单元模块、部分积产生单元模块、Wallace树型加法单元模块、累加单元模块和最终结果单元模块,并按顺序依次连接。与现有技术相比。本发明的有益效果是:提出了一种不需要产生BOOTH编码系数的部分积联合产生方法,可以将部分积产生逻辑减少一个环节,降低部分积产生电路的时延和门数,在保证功能同时减小电路实现的代价,可以均衡各个流水级的时延,满足DSP高工作频率要求。
Description
技术领域
本发明涉及微处理器及计算机系统,更具体地说,本发明涉及一种用于解决处理器中需要多种乘累加模式支持的乘累加装置。
背景技术
在信号处理处理应用中,有很多操作涉及到乘累加运算,而且乘累加运算的乘数和被乘数很可能在有些情况下当成有符号数处理,另一些情况下当成无符号数处理,甚至可能出现一个为有符号数,一个为无符号数的情况,另外,在某些场合,需要考虑对乘累加运算的结果进行舍入,以保持计算的精度,因此这带来了如何设计乘累加装置(MAC)以满足各种可能情况的要求。
同时,现代信号处理器(DSP)的工作频率要求越来越高,而乘累加装置(MAC)的电路时延由于具体物理性质的限制,即使随着半导体工艺的不断改进,也很难跟上DSP工作频率的要求,因此将MAC电路分为若干时钟周期执行成为一种折衷,同时这也带来了如何划分MAC的功能结构以与DSP流水线匹配的问题。
发明內容
本发明的主要目的在于克服现有技术中的不足,提供一种新的解决处理器中需要多种乘累加模式支持的乘累加装置。
为了解决上述技术问题,本发明是通过以下技术方案实现的:
本发明提供了一种乘累加装置,包括:预译码单元模块10、部分积产生单元模块20、Wallace树型加法单元模块30、累加单元模块40和最终结果单元模块50,所述预译码单元模块10、部分积产生单元模块20、Wallace树型加法单元模块30、累加单元模块40和最终结果单元模块50按顺序依次连接。
本发明所述预译码单元模块10包括多位乘数输入模块101、多位被乘数输入模块102、多位乘累加算法选择器模块104、平方标志位模块105、乘法数据类型标志位模块106和预译码逻辑模块103,多位乘数输入模块101、多位被乘数输入模块102、多位乘累加算法选择器模块104、平方标志位模块105、乘法数据类型标志位模块106分别连接至预译码逻辑模块103。
本发明所述部分积产生单元模块20包括符号扩展逻辑模块201和部分积产生逻辑模块202,符号扩展逻辑模块201与部分积产生逻辑模块202连接,同时分别与预译码单元模块10中的预译码逻辑模块103连接。
本发明所述Wallace树型加法单元模块30包括一个Wallace树型加法模块301,以多路形式连接于部分积产生逻辑模块202,并以两路形式连接于预译码逻辑模块103。
本发明所述累加单元模块40包括累加逻辑模块401和二选一逻辑模块402,其中累加逻辑模块401以两路形式连接于Wallace树型加法单元模块301,二选一逻辑模块402连接于预译码逻辑模块103和累加逻辑模块401。
本发明所述最终结果单元模块50包括一个最终结果选择逻辑模块501,与累加逻辑模块401、二选一逻辑模块402和预译码逻辑模块103相连。
本发明所述预译码单元模块10包括多位乘数输入模块101、多位被乘数输入模块102、多位乘累加算法选择器模块104、平方标志位模块105、乘法数据类型标志位模块106和预译码逻辑模块103,多位乘数输入模块101、多位被乘数输入模块102、多位乘累加算法选择器模块104、平方标志位模块105、乘法数据类型标志位模块106分别连接至预译码逻辑模块103;所述部分积产生单元模块20包括符号扩展逻辑模块201和部分积产生逻辑模块202,符号扩展逻辑模块201与部分积产生逻辑模块202连接,同时分别与预译码单元模块10中的预译码逻辑模块103连接;所述Wallace树型加法单元模块30包括一个Wallace树型加法模块301,以多路形式连接于部分积产生逻辑模块202,并以两路形式连接于预译码逻辑模块103;所述累加单元模块40包括累加逻辑模块401和二选一逻辑模块402,其中累加逻辑模块401以两路形式连接于Wallace树型加法单元模块301,二选一逻辑模块402连接于预译码逻辑模块103和累加逻辑模块401;所述最终结果单元模块50包括一个最终结果选择逻辑模块501,与累加逻辑模块401、二选一逻辑模块402和预译码逻辑模块103相连。
与现有技术相比,本发明的有益效果是:综上所述,本发明实例提出了一种MAC结构装置,用于解决多种模式的乘法和乘累加运算,将MAC结构装置划分成顺序的五个结构单元,对每个结构单元分别处理和优化;提出了一种不需要产生BOOTH编码系数的部分积联合产生方法,可以将部分积产生逻辑减少一个环节,降低部分积产生电路的时延和门数;提出了一种利用Wallace树来处理舍入运算(舍入运算前置)的方法,其不影响Wallace树型加法的实现,并可以省去最终结果产生单元中由于舍入进位引入的额外加法模块,在保证功能同时减小电路实现的代价;提出了一种MAC功能装置和DSP处理器流水级匹配的方法,可以均衡各个流水级的时延,满足DSP高工作频率要求;本发明实例所提出的方法可以组合使用,也可以分别单独使用,可以在DSP处理器中使用,也可以在面向各种需要MAC功能装置的电路实现中使用。
附图说明
图1为本发明实例指向的乘累加装置系统构架图。
图2为传统的BOOTH编码和部分积产生原理图。
图3为本发明实例提出的BOOTH编码和部分积产生原理图。
图4为本发明实例以16位乘法为例的Wallace树型加法的具体实现图。
图5为本发明实例的乘累加装置最终结果产生图。
图6为本发明实例所描述的乘累加装置与DSP流水线的一种匹配关系图。
具体实施方式
参考附图1~6,下面将对本发明具体实施例1进行详细描述。
本实施例中的乘累加装置包括:预译码单元模块10、部分积产生单元模块20、Wallace树型加法单元模块301、累加单元模块40和最终结果单元模块501,所述预译码单元模块10、部分积产生单元模块20、Wallace树型加法单元模块30、累加单元模块40和最终结果选择逻辑模块501按顺序依次连接。预译码单元模块10包括多位乘数输入模块101、多位被乘数输入模块102、多位乘累加算法选择器模块104、平方标志位模块105、乘法数据类型标志位模块106和预译码逻辑模块103,多位乘数输入模块101、多位被乘数输入模块102、多位乘累加算法选择器模块104、平方标志位模块105、乘法数据类型标志位模块106分别连接至预译码逻辑模块103;所述部分积产生单元模块20包括符号扩展逻辑模块201和部分积产生逻辑模块202,符号扩展逻辑模块201与部分积产生逻辑模块202连接,同时分别与预译码单元模块10中的预译码逻辑模块103连接;所述Wallace树型加法模块301以多路形式连接于部分积产生逻辑模块202,并以两路形式连接于预译码逻辑模块103;所述累加单元模块40包括累加逻辑模块401和二选一逻辑模块402,其中累加逻辑模块401以两路形式连接于Wallace树型加法单元模块301,二选一逻辑模块402连接于预译码逻辑模块103和累加逻辑模块401;所述最终结果选择逻辑模块501与累加逻辑模块401、二选一逻辑模块402和预译码逻辑模块103相连。
图1中:
多位数据A、B,两位数据R,一位数据sign_A、sign_B MAC、accumulation_en、round_en、mode为预译码单元模块10的输出。
多位数据A*0、A*1、A*m-2、A*m-1、A*m和sub_carry为部分积产生单元模块20的输出。
多位数据sum和carry为Wallace树型加法单元模块301的输出。
多位数据mux_product和accu_product为累加单元模块40的输出。
多位数据product为最终结果单元模块501的输出。
图2中:
B*多位数据,作为多路选择器case的输入,
2n+1 B*的某奇数位,
2n-1 B*的某奇数位,
Booth_encoder Booth编码逻辑,
2x Booth编码的系数之一,
1x Booth编码的系数之一,
0x Booth编码的系数之一,
sign Booth编码的符号位,
partial_product_gen部分积产生逻辑,
A多位数据,部分积产生逻辑partial_product_gen的一个输入,
PnA*多位数据,部分积产生逻辑partial_product_gen的输出。
图3中:
B*多位数据,作为多路选择器case的输入,
2n+1 B*的某奇数位,
2n-1 B*的某奇数位,
case 多路选择器事件逻辑,
000 多路选择器事件逻辑的一个事件,
001 多路选择器事件逻辑的一个事件,
010 多路选择器事件逻辑的一个事件,
011 多路选择器事件逻辑的一个事件,
100 多路选择器事件逻辑的一个事件,
101 多路选择器事件逻辑的一个事件,
110 多路选择器事件逻辑的一个事件,
多路选择器事件逻辑的一个事件,
Booth_partial_product_gen Booth编码和部分积产生联合产生逻辑,
A多位数据,Booth编码和部分积联合产生逻辑Booth_partial_product_gen的一个输入,
PnA*多位数据,Booth编码和部分积联合产生逻辑Booth_partial_product_gen的输出。
图4中:
Pxy部分积的具体位,其中x表示部分积的标识号,0≤x≤8,y表示此部分积的具体位,0≤y≤17,
Pxy部分积的具体位的相反数,其中x表示部分积的标识号,0≤x≤8,y表示此部分积的具体位,0≤y≤17,
Si部分积进位结果的具体位,0≤i≤7。
图5中:
accumulator多位数据,作为判据逻辑的输入,
accumulator[16:0]==17’b10000 判据逻辑,
{accumulator[39:17],17’b0}多位数据,判据逻辑的输出结果之一,
{accumulator[39:16],16’b0}多位数据,判据逻辑的输出结果之一,
YES判据逻辑的真指向,
NO判据逻辑的假指向。
图6中:
interface 处理器流水级界面,
clock 处理器时钟,
EX1 处理器的可扩展的执行级的第一级,
EX2 处理器的可扩展的执行级的第二级,
MAC_in_EX1 MAC功能装置在可扩展执行级的第一级的部分,
MAC_in_EX2 MAC功能装置在可扩展执行级的第二级的部分,
PART I(10) MAC功能装置的预译码单元模块10,
PART II(20) MAC功能装置的部分积产生单元模块20,
PART III(30) MAC功能装置的Wallace树型加法单元模块301,
PART IV(40) MAC功能装置的累加单元模块40,
PART V(50) MAC功能装置的最终结果单元模块501。
从本质上讲,MAC的作用就是接收两个多位数据(乘数和被乘数),完成特定的乘法,并且根据要求确定是否将这个结果和先前的结果相加。对于MAC装置接收的多位数据,有符号数和无符号数的乘法处理过程是有区别的,因此这就涉及到乘数和被乘数的数据类型问题。同时,此次乘法的结果可能需要和先前的结果进行相加或相减以得到最终的结果,由于FIR、IIR等数字信号处理算法中先前一段时域或频域的输入数据需要和相应的系数相乘,并这些相乘结果再进行累加和累减以得到当前时域或频域的最终运算结果,因此乘累加或乘累减功能对DSP处理器实现数字信号处理程序非常必要。另外,处理器特别是定点处理器总是有位宽的限制,故在乘累加或乘累减运算中需要有处理精度的考虑和平衡,因此需要有舍入功能,舍弃精度保证外的数据位,以最大限度的保证系统的精度。
对于具体的乘法运算,为获得最佳的性能和最小的电路实现,可以采用打破规整的乘法结构形式,采用特殊算法或专门的优化结构。在这方面,BOOTH编码算法以被乘数的每连续三位进行编码,根据这些编码得到系数和符号位决定产生相应的部分积,这样以来就等效为被乘数每两位决定一个部分积结果,通过这种方法可以将乘法运算所需的部分积减少一半。
BOOTH编码对应的算法如表1所示。
对于部分积相加,可以采用Wallace树型加法结构实现,它把若干个部分积结果通过3:2全加器或4:2/5:2 Compressor等算法实现各列垂直相加,Wallace树型加法最终得到两个结果,一个是和数(sum),一个进位数(carry)。通过Wallace树型加法可以大大减少部分积相加的次数,以由3:2全加器构成的一个四级Wallace树为例,它可以同时接收九个部分积输入向量,同时产生两个输出向量(和数向量和进位数向量),这样可以大大减少部分积相加的复杂度和时间消耗。
表1
BOOTH编码逻辑表
B(2n+1,2n-1) | BOOTH编码系数 | BOOTH编码符号 | ||
2x | 1x | 0x | ||
000 | 0 | 0 | 1 | 0 |
001 | 0 | 1 | 0 | 0 |
010 | 0 | 1 | 0 | 0 |
011 | 1 | 0 | 0 | 0 |
100 | 1 | 0 | 0 | 1 |
101 | 0 | 1 | 0 | 1 |
110 | 0 | 1 | 0 | 1 |
111 | 0 | 0 | 0 | 1 |
对于MAC装置和DSP处理器的匹配关系,将MAC结构装置划分在多个流水级中并以若干时钟周期执行可以满足DSP高工作频率要求。
本实施例中的乘累加装置包括:
预译码单元模块10,其接受多位乘数输入模块101,多位被乘数输入模块102,多位乘累加算法选择器模块104,平方标志位模块105以及乘法数据类型标志位模块106的信号作为输入,其中多位乘累加算法选择器模块104用于选择当前的运算为乘法运算还是乘累加运算,同时选择参与运算乘数mltiplicand和被乘数mltiplicator的符号类型,以及当前运算结构是否需要舍入;平方标志位模块105用于选择当前运算是否是平方乘法或乘累加;乘法数据类型标志位模块106用于选择当前的mltiplicand和mltiplicator的数据类型,本文MAC装置支持整型数(例如:16.0格式)和分数乘法(例如:1.15),在本发明实例中,整型数指数据的小数点定标在数据的最低位的后一位,这样数据所有位均在小数点之前,分数指数据的小数点定标在数据的最高位的后一位,这样数据除最高位在小数点之前,其余各位均在小数点之后。
预译码单元模块10内的逻辑是乘法预处理逻辑模块103,在本发明实例中它的作用是根据MF,SQUARE、MODE信号的指示输出参与乘法操作的多位数据A和B,同时输出它们的符号类型位sign_A和sign_B,其逻辑如下所示:
A=mltiplicand;
MF选择乘数为无符号数:sign_A=1;
MF选择乘数为无符号数:sign_A=0;
SQUARE置高:B=mltiplicand;
SQUARE置低:B=mltiplicantor;
MF选择乘数为无符号数:sign_B=1;
MF选择乘数为无符号数:sign_B=0;
另外,乘法预处理逻辑模块103还输出乘累加使能信号accumulation,舍入使能信号round_en,模式选择信号mode以及两位舍入标志信号R,R的逻辑由如下决定:
舍入乘法禁止:R=00;
舍入乘法使能:整数乘法模式下R=10,在分数乘法模式下R=01;
系统保留:则R=11;
部分积产生单元模块20,其接受预译码单元模块10输出的多位数据A和B以及对应的符号位sign_A和sign_B,其符号扩展逻辑模块201以B和sign_B作为输入,根据符号类型位sign_B对B进行扩展输出多位数据B*(假定B*有s位),其扩展逻辑为:
B的位数为偶数(j=2n,n=0,1,2..,j表示B的位数,以下均同):
sign_B=1:B*={0,0,B},其中{}表示连接符,即B在最高位向左扩展两位0;
sign_B=0:B*={B[j-1],B[j-1],B},其中{}表示连接符,B[j-1]表示B的最高位的数值,即B在最高位以其值向左扩展两位(s=j+2);
B的位数为奇数(j=2n十1,n=0,1,2..,j表示B的位数):
sign_B=1:B*={0,B},其中{}表示连接符,即B在最高位向左扩展一位0;
sign_B=0:B*={B[j-1],B},其中{}表示连接符,B[j-1]表示B的最高位的数值,即B在最高位以其值向左扩展一位(s=j+1);
在部分积产生单元模块20中部分积产生逻辑模块202产生部分积结果,对于此逻辑,本发明实例提出了一种不需要产生BOOTH编码系数的部分积联合产生方法;以图2、3为例,本发明实例阐述了所提出方法的原理和与传统BOOTH编码系数和部分积分别产生方法的不同点。
图2为传统BOOTH编码系数和部分积分别产生逻辑的原理图,可以将BOOTH编码系数和部分积分别产生逻辑模块分成Booth_encoder和partial_product_gen两个子逻辑模块,其中Booth_encoder为Booth编码逻辑,其以多位数据B的2n-1位到2n+1位这三位信号作为输入,产生2x、1x、0x等三个系数输出标志位和一个sign符号输出,通过这种方式可以得到多位数据B的以奇数位置开始和结束的连续三位的Booth编码信息,此编码逻辑如表1所示。partial_product_gen为部分积产生逻辑,其以Booth_encoder的四个输出为输入,同时输入多位数据A,并由Booth_encoder传递过来的输入信号作为选择信号对多位数据A(假定A有k位)进行处理,从而输出一个部分积PnA*,具体逻辑如下:
2x 1x 0x sign PnA*
0 0 1 0 0
0 1 0 0 {0,0,A}
1 0 0 0 {0,A[k-1],A}
0 0 1 1 0
0 1 0 1 {1,1,~A}
1 0 0 1 {1,~A[k-1],~A}
其中~A表示多位数据A的反码。
传统BOOTH编码系数和部分积分别产生逻辑的流程可以归纳为:
case(B*[2n+1,2n-1])→BOOTH编码→PnA*
图3为本发明实例提出的不需要产生BOOTH编码系数的部分积联合产生逻辑的原理图,可以将其分为case和Booth_partial_product_gen两个子逻辑模块,其中case为多路选择器逻辑,它以多位数据B的2n-1位到2n+1位这三位信号作为输入,产生000、001、010、011、100、101、110、111等八个事件,Booth_partial_product_gen为Booth编码和部分积产生联合产生逻辑,它以case输出的八个事件作为输入对多位数据A(假定A有k位)进行处理,从而输出一个部分积PnA*,具体逻辑如表2所示:
表2为不需要产生BOOTH编码系数的部分积联合产生逻辑对应表。
表2 BOOTH编码和部分积联合产生逻辑表
case(B*[2n+1,2n-1]) | PnA* | sub_carray[n] |
000,111: | 0 | 0 |
001,010: | {0,0,A} | 0 |
011: | {0,A[k-1],A} | 0 |
100: | {1,~A[k-1],~A} | 1 |
101,110: | {1,1,~A} | 1 |
通过合并PnA*结果相同,多路选择器逻辑case实际只要输出五路即可。
本发明实例提出的不需要产生BOOTH编码系数的部分积联合产生逻辑的流程可以归纳为:
case(B*[2n+1,2n-1])→PnA*
因此本发明实例提出的方法可以省略BOOTH编码过程,直接建立输入多位数据B(被乘数)到部分积PnA*的映射,在保证功能的前提下尽可能减小其电路实现。
在部分积产生单元模块20中的部分积产生逻辑partial_generator还需要产生部分积进位结果sub_carry,采用本发明实例提出的不需要产生BOOTH编码系数的部分积联合产生逻辑模块可以同时解决此需求,具体逻辑亦如表2所示。
Wallace树型加法单元模块30包括一个Wallace树型加法模块301,接收部分积产生单元模块20输出的多位部分积结果A*0,A*1,…,A*m-2,A*m-1,A*m(其中m的取值与B*的位数有关,m=s/2),以及多位进位结果sub_carry,同时接收预译码单元模块10输出的两位舍入标志信号R和模式选择信号mode,其包含一个Wallace_tree逻辑,对于此逻辑,本发明实例提出了一种利用Wallace树来处理舍入运算(舍入运算前置)的方法,以图4为例,本说明书阐述了本发明提出的利用Wallace树来处理舍入运算的实施过程。
图4为一个16位乘法的Wallace树型加法逻辑图,16位乘法需要产生九个部分积,这九个部分积依次错开两位叠和在一起组成Wallace树,如果将此Wallace树视为行列式,从垂直方向看,每列由若干个分布在各个部分积上的特定位组成,可以采用3∶2全加器将此列中的每3位加起来,产生一个结果位和一个进位位,通过此类组合,则此Wallace树可以用四级全加器以实现九个部分积累加,其最终产生一个和数和一个进位数。在不影响实现Wallace树加法所需全加器级数之前提下,本发明实例在第九级部分积的最低位向右扩展两位,此两位可以恰好容纳两位舍入标志信号R,这样就可以将舍入运算从最终结果产生单元提前到Wallace树型加法逻辑中处理,同时不影响Wallace树型加法的实现,这样可以省去在最终结果产生单元由于舍入进位带来的额外加法模块,在保证功能同时减小电路实现的代价。
此Wallace树型加法单元模块301还包含一个数据类型处理逻辑,此模块根据模式选择信号mode的真伪决定最终的和数和进位数,其具体逻辑如下:
mode=1:和数和进位数分别为Wallace树型加法的两个结果
mode=0:和数和进位数分别为Wallace树型加法的两个结果各左移一位
累加单元模块40接收Wallace树型加法单元模块301输出的多位和数sum和进位数carry,同时接收预译码单元模块10输出的累加使能信号accumulation_en以及最终结果单元模块501输出的MAC装置先前运算结果数据product,产生多位累加结果数据accu_product。
它包括两个子逻辑模块,其中MUX子逻辑模块为二选一选择器,其接收最终结果单元模块501输出的MAC装置先前运算结果数据product和零数据,通过累加使能信号accumulation_en选择二者之一输送到多位输出数据mux_product,具体逻辑为:
accumulation_en=1:mux_product=product;
accumulation_en=0:mux_product=0;
accumulator为累加逻辑模块401,其接收Wallace树型加法单元模块301输出的多位和数sum和进位数carry,同时接收二选一逻辑模块402的多位输出数据mux_product,产生多位输出结果数据accu_product。
最终结果单元模块50包括一个最终结果选择逻辑模块501,接收累加单元模块4输出的多位累加结果accu_product,产生最终的MAC装置运算结果fihal_product_generator。它包含一个最终结果选择逻辑模块,这个模块的逻辑与先前本发明实例提出利用Wallace树来处理舍入运算(舍入运算前置)的方法有关。图5以十六位乘法或乘累加为例,并假定最终的累加结果为四十位,阐述其具体实施过程。
在图5中,判据逻辑接收多位累加运算结果数据accumulator,,通过判据逻辑accumulator[16:0]==17’b10000的真伪从两个输出候选{accumulator[39:17],17’b0}和{accumulator[39:16],16’b0}中选择特定的输出,具体逻辑如下:
accumulator[16:0]==17’b10000为真,对于本发明实例采用的无偏差舍入运算,则在Wallace树型加法中没有加入R标志位得到的原结果应为:accumulator[16:0]=17’h08000,此情况属于标志位(accumulator[16])为偶数的中值舍弃,因此低十六位数值被忽略,最终运算结果如图4中的YES指向所示;
accumulator[16:0]==17’b10000为假,则不加入舍入标志的原运算结果第十五位accumulator[15]无论为1(此种情况下要做进位)或0(此种情况下要做舍弃),图4中NO指向所示为该舍入运算的实际结果。
本发明实例提出了一种MAC功能装置和DSP处理器流水级匹配的方法,以图6为例,本说明书阐述了MAC功能划分、功能单元组合与DSP流水线的匹配关系。
假定DSP处理器在EX(execute)执行级进行乘法或乘累加运算,由于MAC功能装置的物理性质限制,其很难在一个DSP处理器时钟周期内完成,因此在本发明实例中,DSP处理器采用了扩展EX级结构,即EX流水级是可伸缩的,其根据功能模块运行所需时钟周期自动收缩。
对于MAC结构装置,由于本发明实例将其分为五个顺序的功能单元,因此可以此为基础,建立若干连续功能单元组合,通过其电路实现关键时延与DSP各流水级允许时延匹配关系的分析,将MAC功能装置的各功能单元及其组合均匀分配在各流水级中,本发明实例提出的按MAC装置功能单元的组合与DSP流水线匹配关系尝试方法来界定各功能单元在流水级中的分布有助于平衡各流水级时延,从而实现DSP处理器的均衡设计。更进一步,本发明实例提出的功能单元与流水级匹配方法还可以进一步扩展,可以将各功能单元继续细分成连续的若干子逻辑模块,通过功能单元内外的子逻辑模块层次的组合与DSP流水线匹配关系的尝试,不仅可以满足处理器更高工作频率要求,而且更有助于流水级的均衡。以图5为例,本发明实例根据目标DSP处理器的流水级时延要求以及功能单元组合与DSP流水线匹配关系的尝试,将MAC功能装置划分为电路时延大体相等的MAC_in_EX1和MAC_in_EX2两部分,其中MAC_in_EX1包括预译码单元模块10、部分积产生单元模块20、Wallace树型加法单元模块30三个功能单元模块,安排在EX1流水级执行;MAC_in_EX2包括累加单元模块40和最终结果单元模块50两个功能单元模块,安排在EX2流水级执行;由于MAC两部分执行所得结果均通过由时钟(clock)锁存的各流水级界面(interface)输出,因此不会产生处理器时延的串绕,同时对于连续的MAC运算,由于采用EX2-EX1的反馈机制,因此在连续的两个时钟周期可以完成两次MAC运算,从而利用的流水线的特点,等效为单周期的MAC运算,进而达到了MAC模块和DSP系统构架的最佳匹配。
最后,还需要注意的是,以上列举的仅是本发明的具体实施例。显然,本发明不限于以上实施例,还可以有许多变形。本领域的普通技术人员能从本发明公开的内容直接导出或联想到的所有变形,均应认为是本发明的保护范围。
Claims (7)
1、一种乘累加装置,其特征在于包括:预译码单元模块(10)、部分积产生单元模块(20)、Wallace树型加法单元模块(30)、累加单元模块(40)和最终结果单元模块(50),所述预译码单元模块(10)、部分积产生单元模块(20)、Wallace树型加法单元模块(30)、累加单元模块(40)和最终结果单元模块(50)按顺序依次连接。
2、根据权利要求1所述的乘累加装置,其特征在于,所述预译码单元模块(10)包括多位乘数输入模块(101)、多位被乘数输入模块(102)、多位乘累加算法选择器模块(104)、平方标志位模块(105)、乘法数据类型标志位模块(106)和预译码逻辑模块(103),多位乘数输入模块(101)、多位被乘数输入模块(102)、多位乘累加算法选择器模块(104)、平方标志位模块(105)、乘法数据类型标志位模块(106)分别连接至预译码逻辑模块(103)。
3、根据权利要求2所述的乘累加装置,其特征在于,所述部分积产生单元模块(20)包括符号扩展逻辑模块(201)和部分积产生逻辑模块(202),符号扩展逻辑模块(201)与部分积产生逻辑模块(202)连接,同时分别与预译码单元模块(10)中的预译码逻辑模块(103)连接。
4、根据权利要求3所述的乘累加装置,其特征在于,所述Wallace树型加法单元模块(30)包括一个Wallace树型加法逻辑模块(301),以多路形式连接于部分积产生逻辑模块(202),并以两路形式连接于预译码逻辑模块(103)。
5、根据权利要求4所述的乘累加装置,其特征在于,所述累加单元模块(40)包括累加逻辑模块(401)和二选一逻辑模块(402),其中累加逻辑模块(401)以两路形式连接于Wallace树型加法逻辑模块(301),二选一逻辑模块(402)连接于预译码逻辑模块(103)和累加逻辑模块(401)。
6、根据权利要求5所述的乘累加装置,其特征在于,所述最终结果单元模块(50)包括一个最终结果选择逻辑模块(501),与累加逻辑模块(401)、二选一逻辑模块(402)和预译码逻辑模块(103)相连。
7、根据权利要求1所述的乘累加装置,其特征在于,所述预译码单元模块(10)包括多位乘数输入模块(101)、多位被乘数输入模块(102)、多位乘累加算法选择器模块(104)、平方标志位模块(105)、乘法数据类型标志位模块(106)和预译码逻辑模块(103),多位乘数输入模块(101)、多位被乘数输入模块(102)、多位乘累加算法选择器模块(104)、平方标志位模块(105)、乘法数据类型标志位模块(106)分别连接至预译码逻辑模块(103);
所述部分积产生单元模块(20)包括符号扩展逻辑模块(201)和部分积产生逻辑模块(202),符号扩展逻辑模块(201)与部分积产生逻辑模块(202)连接,同时分别与预译码单元模块(10)中的预译码逻辑模块(103)连接;
所述Wallace树型加法单元模块(30)包括一个Wallace树型加法逻辑模块(301),以多路形式连接于部分积产生逻辑模块(202),并以两路形式连接于预译码逻辑模块(103);
所述累加单元模块(40)包括累加逻辑模块(401)和二选一逻辑模块(402),其中累加逻辑模块(401)以两路形式连接于Wallace树型加法模块(301),二选一逻辑模块(402)连接于预译码逻辑模块(103)和累加逻辑模块(401);
所述最终结果单元模块(50)包括一个最终结果选择逻辑模块(501),与累加逻辑模块(401)、二选一逻辑模块(402)和预译码逻辑模块(103)相连。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100844834A CN100363885C (zh) | 2004-11-19 | 2004-11-19 | 乘累加装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100844834A CN100363885C (zh) | 2004-11-19 | 2004-11-19 | 乘累加装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1632740A true CN1632740A (zh) | 2005-06-29 |
CN100363885C CN100363885C (zh) | 2008-01-23 |
Family
ID=34847351
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100844834A Expired - Fee Related CN100363885C (zh) | 2004-11-19 | 2004-11-19 | 乘累加装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100363885C (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100465877C (zh) * | 2006-12-01 | 2009-03-04 | 浙江大学 | 高速分裂式乘累加器mac装置 |
CN103677739A (zh) * | 2013-11-28 | 2014-03-26 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种可配置的乘累加运算单元及其构成的乘累加运算阵列 |
CN103984520A (zh) * | 2014-04-22 | 2014-08-13 | 浙江大学 | 面向无损音频解码算法的自调乘累加装置 |
CN106897046A (zh) * | 2017-01-24 | 2017-06-27 | 青岛朗思信息科技有限公司 | 一种定点乘累加器 |
CN108108150A (zh) * | 2017-12-19 | 2018-06-01 | 北京云知声信息技术有限公司 | 乘累加运算方法及装置 |
CN109634556A (zh) * | 2018-11-06 | 2019-04-16 | 海南大学 | 一种乘累加器及累加输出方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE4317074C1 (de) * | 1993-05-21 | 1994-06-23 | Itt Ind Gmbh Deutsche | Multiplizierer für reelle und komplexe Zahlen |
US6611856B1 (en) * | 1999-12-23 | 2003-08-26 | Intel Corporation | Processing multiply-accumulate operations in a single cycle |
US6557022B1 (en) * | 2000-02-26 | 2003-04-29 | Qualcomm, Incorporated | Digital signal processor with coupled multiply-accumulate units |
US7080111B2 (en) * | 2001-06-04 | 2006-07-18 | Intel Corporation | Floating point multiply accumulator |
-
2004
- 2004-11-19 CN CNB2004100844834A patent/CN100363885C/zh not_active Expired - Fee Related
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100465877C (zh) * | 2006-12-01 | 2009-03-04 | 浙江大学 | 高速分裂式乘累加器mac装置 |
CN103677739A (zh) * | 2013-11-28 | 2014-03-26 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种可配置的乘累加运算单元及其构成的乘累加运算阵列 |
CN103677739B (zh) * | 2013-11-28 | 2016-08-17 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种可配置的乘累加运算单元及其构成的乘累加运算阵列 |
CN103984520A (zh) * | 2014-04-22 | 2014-08-13 | 浙江大学 | 面向无损音频解码算法的自调乘累加装置 |
CN106897046A (zh) * | 2017-01-24 | 2017-06-27 | 青岛朗思信息科技有限公司 | 一种定点乘累加器 |
CN106897046B (zh) * | 2017-01-24 | 2019-04-23 | 青岛专用集成电路设计工程技术研究中心 | 一种定点乘累加器 |
CN108108150A (zh) * | 2017-12-19 | 2018-06-01 | 北京云知声信息技术有限公司 | 乘累加运算方法及装置 |
CN108108150B (zh) * | 2017-12-19 | 2021-11-16 | 云知声智能科技股份有限公司 | 乘累加运算方法及装置 |
CN109634556A (zh) * | 2018-11-06 | 2019-04-16 | 海南大学 | 一种乘累加器及累加输出方法 |
Also Published As
Publication number | Publication date |
---|---|
CN100363885C (zh) | 2008-01-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101082860A (zh) | 一种乘累加装置 | |
CN1735880A (zh) | 用于执行计算操作的系统、方法及设备 | |
CN1961284A (zh) | 使用n位乘加操作实现不变量除数的整数除法的方法和系统 | |
CN1173501C (zh) | 用于产生定点数据的电路和方法 | |
CN1845213A (zh) | 一种实现sms4密码算法中加解密处理的方法 | |
CN1100541A (zh) | 神经网络及其使用方法 | |
CN1821951A (zh) | 算术单元 | |
CN1632740A (zh) | 乘累加装置 | |
CN1489726A (zh) | 模乘方法及装置及模乘计算单元 | |
CN1031613A (zh) | 二—十进制加法器电路 | |
CN1391345A (zh) | 在csd滤波器中处理信号的方法及适用于该方法的电路 | |
CN1831753A (zh) | 一种浮点乘法器及其兼容双精度和双单精度计算的方法 | |
CN1021004C (zh) | 在剩余数系统中用于编码和译码数据的方法和装置 | |
CN1059042A (zh) | 采用子域GF(2m/2)对GF(2m)的计算方法及装置 | |
CN1905383A (zh) | 一种同频小区信道估计装置及方法 | |
CN1492313A (zh) | 用于数字扫描变换装置的坐标转换方法及处理器 | |
CN1816144A (zh) | 一种二维离散余弦变换装置及方法 | |
CN1347028A (zh) | 处理器指令集 | |
CN1082207C (zh) | 高速动态二进制加法器 | |
Wen et al. | A contig-based strategy for the genome-wide discovery of microRNAs without complete genome resources | |
CN1733915A (zh) | 水稻全基因组假基因数据库构建方法 | |
CN1829957A (zh) | 长整数乘法器 | |
CN1869982A (zh) | 一种报表数据采集系统和方法 | |
CN1247035C (zh) | 一种用可编程门阵列实现的第三代移动通信标准协议中的Turbo码内交织器 | |
CN112685001A (zh) | 一种Booth乘法器及其运算方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080123 Termination date: 20101119 |