CN109753268A - 多粒度并行运算乘法器 - Google Patents
多粒度并行运算乘法器 Download PDFInfo
- Publication number
- CN109753268A CN109753268A CN201711089785.4A CN201711089785A CN109753268A CN 109753268 A CN109753268 A CN 109753268A CN 201711089785 A CN201711089785 A CN 201711089785A CN 109753268 A CN109753268 A CN 109753268A
- Authority
- CN
- China
- Prior art keywords
- array
- partial product
- bits
- granularity
- bit
- 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
- 235000019580 granularity Nutrition 0.000 claims abstract description 46
- 238000013507 mapping Methods 0.000 claims abstract description 29
- 238000012545 processing Methods 0.000 claims abstract description 27
- 230000006835 compression Effects 0.000 claims abstract description 14
- 238000007906 compression Methods 0.000 claims abstract description 14
- 239000000047 product Substances 0.000 claims description 114
- 238000003491 array Methods 0.000 claims description 12
- 239000012467 final product Substances 0.000 claims description 5
- 238000012163 sequencing technique Methods 0.000 claims description 3
- 238000006073 displacement reaction Methods 0.000 claims description 2
- 239000004744 fabric Substances 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 13
- 238000000034 method Methods 0.000 description 9
- 238000013461 design Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000011056 performance test Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Advance Control (AREA)
Abstract
本发明提供了一种多粒度并行乘法器,其支持粒度包含比特位为32bit的word类型、16bit的short类型或8bit的byte类型的源操作数的并行运算,其包括:乘法部分积生成器、部分积压缩器及加法器;乘法部分积生成器包括:用于对源操作数进行比特位扩展并生成对应的待操作数的比特位扩展单元、用于根据布思编码及待操作数的粒度对待操作数进行编码并生成对应的第一部分积阵列的编码单元、以及用于根据上述粒度将第一部分积阵列进行映射和排序,对映射和排序后的全部粒度的第一部分积阵列取并集以使多粒度并行运算以生成第二部分积阵列的阵列处理单元;部分积压缩器用于对第二部分积阵列进行压缩处理以得到中间部分积;加法器用于对上述中间部分积进行相加以得到最终乘积。
Description
技术领域
本发明涉及数字信号处理技术领域,具体涉及一种多粒度并行运算乘法器。
背景技术
目前,随着数据信号处理技术领域的不断发展和突破,对数据的运算能力的需求也在不断增长。例如在视频图像处理、无线通信以及超算等领域对数据运算能力的需求不断增长,而且这些数据的处理中包含大量乘法操作,因此乘法运算单元的速度和数量成为整个处理器程序执行时间的关键因素。并且,不同的数字信号领域对乘法运算的需求不同,例如在通信领域,采用8位、16位或者32位的数据,大量的数字信号处理算法如FFT等需要进行复数运算。
在实现本发明实施例的过程中,发明人发现现有技术中至少存在如下问题:传统的大部分的子字并行算法思想可分为两类,用小位宽操作的结果生成大位宽,用最大位宽操作的硬件复用产生小位宽。现有技术中如图1所示,TI6678的M单元是采用小位宽的结果生成大位宽的结果,先计算16个16位乘法的32位结果,再以4个结果为一组计算出4个32位的乘法结果,再利用4个32位的乘法结果计算出64位乘法最终结果,最后通过多路选择器选择输出的数值,这样在计算上会产生较大延时。用最大位宽操作的硬件复用产生小位宽如图2所示,乘法运算阵列由16个乘法单元组成,以4x4的方式进行排列,每个乘法单元与16x16乘法器类似,每个乘法单元内部包含布思编码和部分积压缩。采用64位乘法器的硬件资源,当执行小位宽乘法操作时,多余的部分编码成无效,因此不会影响最终的结果。运算单元0_0~3_3组成一个64位乘法。执行32位乘法时,运算单元0_0、0_1、1_0、1_1组成乘法通路1;执行8位乘法时,每个运算单元为一个运算通路。这种方法会出现不同SIMD(SingleInstruction Multiple Data,单指令多数据流)通路之间的重叠情况,需要标示运算单元在整个运算的位置来得到编码结果,在结构设计上增加了复杂性。并且,目前的乘法器所采用的算法虽然能够实现数据的高速处理,但是其针对不同粒度的数据(例如上述8位、16位或者32位)无法有效实现数据的并行处理,给数据的并行复用处理过程带来诸多不便。
发明内容
本发明的目的是针对现有技术的缺陷,提供了一种多粒度并行运算乘法器,用于解决现有技术中乘法器无法支持多种数据类型的并行处理操作,从而无法实现对不同粒度的数据进行并行处理的问题。
依据本发明的一个方面,提供了一种多粒度并行运算乘法器,该乘法器支持粒度包含比特位为32bit的word类型、比特位为16bit的short类型和/或比特位为8bit的byte类型的源操作数的并行运算,乘法器包括:乘法部分积生成器、部分积压缩器以及加法器;其中,该乘法部分积生成器包括:比特位扩展单元,用于根据源操作数的粒度对源操作数进行比特位扩展,生成与粒度对应的待操作数;编码单元,用于根据布思编码以及待操作数的粒度对待操作数进行编码,生成与所待操作数的粒度对应的第一部分积阵列;阵列处理单元,用于根据第一部分积阵列的粒度将每个粒度的第一部分积阵列进行映射得到映射阵列,并分别对所送映射阵列的每一列进行排序,将所述每一列的有效位移动到该列的最上面,然后对排序后的全部粒度的第一部分积阵列取并集以使多粒度并行运算,生成对应的第二部分积阵列;部分积压缩器用于对第二部分积阵列进行压缩处理,得到中间部分积;加法器用于对压缩处理得到的中间部分积进行相加,得到最终乘积。
本发明提供的多粒度并行运算乘法器能够根据源操作数的粒度对源操作数进行比特位扩展,并通过布思编码对待操作数进行编码,以有效减少部分积数量,然后通过编码后的获取的第一部分积阵列进行映射得到对应的第二部分积阵列,并通过部分积压缩器对第二部分积阵列进行压缩得到中间部分积,最后通过加法器对上述得到中间部分积进行快速相加来获取对应的乘积。本发明能够实现数据的多粒度并行乘法运算,能够支持粒度包含比特位为32bit的word类型、比特位为16bit的short类型和/或比特位为8bit的byte类型的源操作数的并行运算,实现了一种速度块、带宽大并且面积小的高效能乘法矩阵运算。
附图说明
图1为低位宽乘法结果生成高位宽乘法结果的运算示意图;
图2为最大位宽操作的硬件复用产生小位宽的运算示意图;
图3为本发明提供的多粒度并行运算乘法器的功能结构示意图;
图4为本发明提供的多粒度并行运算乘法器的乘法阵列的体系结构示意图;
图5为本发明提供的无符号乘法的ES编码的示意图;
图6本发明提供的有/无符号乘法的ES编码的示意图;
图7为本发明提供的比特位为32bit的word类型的第一部分积阵列;
图8为本发明提供的比特位为16bit的short类型的第一部分积阵列;
图9为本发明提供的比特位为16bit的short类型进行映射后的第一部分积阵列;
图10为本发明提供的比特位为8bit的byte类型的第一部分积阵列;
图11为本发明提供的比特位为8bit的byte类型进行映射后的第一部分积阵列;
图12为本发明提供的多粒度并行的第二部分积阵列的树形结构示意图;
图13为本发明提供的华莱士乘法器的结构示意图。
具体实施方式
为充分了解本发明之目的、特征及功效,借由下述具体的实施方式,对本发明做详细说明,但本发明并不仅仅限于此。
图3为本发明一个实施例提供的一种多粒度并行运算乘法器100的功能结构示意图,如图3所示,该多粒度并行运算乘法器100包括:乘法部分积生成器110、部分积压缩器120以及加法器130。其中,乘法部分积生成器110包括:比特位扩展单元111,编码单元112以及阵列处理单元113。
其中,比特位扩展单元111用于根据源操作数的粒度对源操作数进行比特位扩展,生成与粒度对应的待操作数。编码单元112用于根据布思编码以及待操作数的粒度对待操作数进行编码,生成与粒度对应的第一部分积阵列。阵列处理单元113用于根据第一部分积阵列的粒度将每个粒度的第一部分积阵列进行映射得到映射阵列,并分别对所送映射阵列的每一列进行排序,将所述每一列的有效位移动到该列的最上面,然后对排序后的全部粒度的第一部分积阵列取并集以使多粒度并行运算,生成对应的第二部分积阵列;部分积压缩器120用于对第二部分积阵列进行压缩处理,得到两项中间部分积结果;加法器130用于对压缩处理得到的两项中间部分积进行相加,得到最终乘积。
图4为本发明提供的多粒度并行乘法器的乘法阵列的体系结构示意图。如图4所示,本发明采用两级流水操作,在获取源操作数X、Y之后,首先用改进的布思编码(编码表详见下述表1)对源操作数X、Y进行编码,以对应减少第二部分积阵列中部分积的数量,然后通过部分积压缩器对上述得到的第二部分积阵列进行压缩得到对应的中间部分积,最后通过一个快速的加法器对上述中间部分积进行相加,以得到最终乘积。具体实施中,部分积压缩器采用华莱士树结构并行将得到的第二部分积阵列压缩到只剩两项中间部分积,以减小加法器运算的数据量,提升运算速度。
本发明提供的多粒度并行乘法器支持粒度包含比特位为32bit的word类型、比特位为16bit的short类型和/或比特位为8bit的byte类型的源操作数的并行运算。具体地,在实数乘法运算中,本发明提供的多粒度并行乘法器支持执行1个比特位为32bit的word类型的有符号/无符号的乘法运算操作、同时执行2个比特位为16bit的short类型的有符号/无符号的乘法运算操作、以及同时执行4个比特位为8bit的byte类型的有符号/无符号的乘法运算操作;在复数乘法操作中,支持执行1个比特位为16bit的short类型的乘法运算操作、以及支持执行2个比特位为8bit的byte类型的乘法运算操作。本发明提供的多粒度并行乘法器在实现多粒度并行运算的基础上,还能够进一步提升资源复用率,减少硬件开销并降低功耗。
下面通过一个具体的实施例来详细介绍本发明提供的多粒度并行乘法器所实现的乘法阵列的运算过程。
具体地,在多粒度并行乘法器中,由于布思编码增加了对不同粒度的数据的处理,因此需要对源操作数进行扩展以完成数据拼接,以对数据进行对应的布思编码操作。因此,在接收到源操作数时,首先需要通过对源操作数进行比特位扩展。比特位扩展单元111根据源操作数的粒度对源操作数进行比特位扩展,生成与源操作数X和Y的粒度对应的长度为36bit的待操作数X’和Y’,并将扩展后的待操作数发送给编码单元112,以供编码单元112对上述长度为36bit的X’和Y’进行布思编码。
具体地,将位宽为32位(即32bit)的源操作数X和Y分别分成四段{X/Y3,X/Y2,X/Y1,X/Y0},对于每一段来说,(右边为低位,左边为高位),如果该段的最右位是比特位为32bit的word类型、比特位为16bit的short类型或比特位为8bit的byte类型的最低位,则在最低处添加一个0,否则将在最低边添加前一段的最高位,进而得到36位的X’和Y’。其过程如下:
比特位为32bit的word类型:
{X3’,X2’,X1’,X0’}={X3,X2[7],X2,X1[7],X1,X0[7],X0,0}
比特位为16bit的short类型:
{X3’,X2’}={X3,X2[7],X2,0},{X1’,X0’}={X1,X0[7],X0,0}
比特位为8bit的byte类型:
X3’={X3,0},X2’={X2,0},X1’={X1,0},X0’={X0,0}
其中,源操作数的粒度包括:比特位为32bit的word类型、比特位为16bit的short类型和比特位为8bit的byte类型的源操作数。具体实施中,比特位扩展单元111对各个粒度源操作数的扩展结果如下所示:
比特位为32bit的word类型的扩展结果:
X/Y[31:24] | X/Y[[23] | X/Y[23:16] | X/Y[[15] | X/Y[15:8] | X/Y[[7] | X/Y[7:0] | 0 |
比特位为16bit的short类型的扩展结果:
X/Y[31:24] | X/Y[[23] | X/Y[23:16] | 0 | X/Y[15:8] | X/Y[[7] | X/Y[7:0] | 0 |
比特位为8bit的byte类型的扩展结果:
X/Y[31:24] | 0 | X/Y[23:16] | 0 | X/Y[15:8] | 0 | X/Y[7:0] | 0 |
编码单元112根据上述扩展结果,将上述各个粒度的待操作数X’平均分为4段数据长度为9bit的待操作数,以及将Y’平均分为4段数据长度为9bit的待操作数,并分别针对每段进行基4-布思编码。其中,以Y’中的第1段Y0’为例,其对应的基4-布思编码的编码表如表1所示。
表1
X’ | PP<sub>i</sub> | BoothBit | OBit | EBit | SBit |
000 | 0 | 0 | 0 | 0 | 0 |
001 | Y | Y’[8:1] | S&Y’[8] | S&Y’[8] | 0 |
010 | Y | Y’[8:1] | S&Y’[8] | S&Y’[8] | 0 |
011 | 2Y | Y’[7:0] | Y’[8] | S&Y’[8] | 0 |
100 | -2Y | ~Y’[7:0] | ~Y’[8] | ~(S&Y’[8]) | 1 |
101 | -Y | ~Y’[8:1] | ~(S&Y’[8]) | ~(S&Y’[8]) | 1 |
110 | -Y | ~Y’[8:1] | ~(S&Y’[8]) | ~(S&Y’[8]) | 1 |
111 | 0 | 0 | 0 | 0 | 0 |
表1中的BoothBit代表根据集合{0,2Y,Y,-Y,-2Y,}中的一项,比如Y’[8:1]’代表Y0’,Y’[7:0]代表2Y0’;OBit表示部分积的最高位,其中S对于有符号数是1,无符号数是0;Ebit表示部分积的扩展符号位;当布思编码项是负数(即-2Y,-Y)时SBit为1;当操作数为无符号数时,Sbit=Ebit。其中,部分积是由Obit和Boothbit组成,并且有对应的Ebit和Sbit。
首先介绍符号位的编码过程。具体地,在对符号位进行编码时,编码单元112采用ES编码进行编码。具体地,以16乘8为例,如图5和图6所示,在无符号乘法器中,用基4-布思编码得到9个部分积,将部分积进行累加求和,必须对最高位进行符号位扩展。传统的符号扩展算法中过多的符号位会导致较多的硬件资源的浪费,也会增加计算的功耗。这里对符号位进行有限符号扩展,从而有效解决上述问题。如图5和图6所示,图5为无符号乘法的基4-布思编码后的部分积阵列示意图,图6有无符号乘法的基4-布思编码后的部分积阵列示意图。其中,每行部分积由符号扩展位E和一个符号位补充S(当该项部分积为负时取1,当该项部分积不为负时取0,对于无符号数E=S)。最后一行只在无符号乘法时才会有效。
将ES编码和部分积编码分开是因为ES编码的划分对于不同操作位宽的区别较大,若将其与布思编码一起编码的话会造成关键路径上的延时增大,但是单独编码并在压缩阵列时将ES编码结果加入不会增加延时。
其中,对于比特位为32bit的word类型的源操作数,编码单元112在进行基4-布思编码后,生成总共为19行的第一部分积阵列,如图7所示。对于比特位为16bit的short类型的源操作数,编码单元112在进行基4-布思编码后,生成总共为22行的第一部分积阵列,如图8所示。对于比特位为8bit的byte类型的源操作数,编码单元112具体用于生成总共为14行的第一部分积阵列,如图10所示。
其中,在对待操作进行基4-布思编码获取对应的第一部分积阵列的过程中,编码单元进一步为每个第一部分积阵列对应构造一个等长的有效位阵列,用于标识第一部分积阵列上的每一位数据是否有效,以为后续模块(对应阵列处理单元113)中的排序和自动压缩的操作提供判断依据。
对于上述得到的第一部分积阵列,阵列处理单元113根据第一部分积阵列的粒度对每个第一部分积阵列进行映射。其执行映射过程如下:
针对word类型中1个32bit乘32bit的实数乘法,结果(即1个32bit乘32bit的实数乘法的第一部分积阵列)不作映射;
针对short类型中2个16bit乘16bit的实数乘法,32bit分为高16bit和低16bit分别进行乘法操作,根据布思编码得到对应的阵列。其中,由于结果由独立两部分{H*H,L*L}组成,即block1和block3有效而其它部分无效,为防止block1和block3产生重叠,对应进行如下映射操作:
对应阵列的上半部分,只有低位[31:0](即block1)有效,则将高位(即block2)赋值为0,映射操作如下:
orgdatamap={32’h0,orgdata[31:0]};
阵列的下半部分,只有低位[31:0](即block3)有效,则将block3放于结果的高位,低位(即block4)赋值为0,映射操作如下:
orgdatamap={orgdata[31:0],32’h0};
其中,orgdata如图8所示,orgdatamap如图9所示。图8和图9中①-④所在阵列分别对应子阵列block1-block4。
对于1个16bit乘16bit的复数乘法,16bit的低位为实数部分,高位为虚数部分。如式1.1的复数运算,得到四个部分结果。如图8所示,第一部分积阵列中的block1、block2、block3和block4有效,分别代表L*L,H*L,L*H,H*H。
(L+Hj)*(L+Hj)=(H*L+L*H)j+(L*L-H*H)1.1
其中,上述结果的实数部分值为L*L-H*H(block1+block4),其结果的虚数部分值为H*L+L*H(block2+block3)。在这里,要说明的是-H*H,block4需要取反,而且仅当该位有效时取反,同样做映射操作。
其中,复数乘法运算需要完成四个乘法操作和两个加法操作,在不支持复数运算的情况下,普通的数字信号处理器需要六个时钟周期才能完成复数乘法。然而本发明提供的乘法器支持复数运算,因此可以在1个时钟周期之后得到结果,性能提高六倍。另一方面,本发明还支持指令级的复数运算,以降低编程难度,提高编程效率。
针对byte类型中4个8bit乘8bit的实数乘法,如图10所示,block1,block3,block6和block8有效,映射操作如下:
[47:32]段block3(即图10中③所在的阵列)有效,[15:0]段block1(即图10中①所在的阵列)有效,其中,上述阵列的上半部分由block1和block3两部分组成,对应映射操作如下:
orgdatamap={16’h0,orgdata[47:32],16’h0,orgdata[15:0]};
[47:32]段block8(即图10中⑧所在的阵列)有效,[15:0]段block6(即图10中⑥所在的阵列)有效,上述阵列的下半部分由block6和block8两部分组成,对应映射操作如下:
orgdatamap={orgdata[47:32],16’h0,orgdata[15:0],16’h0};
其中,orgdata如图10所示,orgdatamap如图11所示。图10和图11中①-⑧所在阵列分别对应子阵列block1-block8。
针对byte类型中2个8bit乘8bit的复数乘法,block1-block 8都有效,其中block6和block8需要取反,同样做映射操作。
19*64、22*64(实数、复数)、以及14*64(实数、复数)这三个粒度映射后的第一部分积阵列分别根据有效位重新排序,将所有有效位挪到每一列的最上面,得到树型结构,然后五个阵列取并集得到如图12所示图形的第二部分积阵列,第二部分积阵列是18*64(有些位是无效的,所以得到最后是18行)。具体地,将上述得到的18行部分积记为PP0、PP1、PP2、PP3…...PP17。
在进行部分积压缩时,根据华莱士树结构对上述第二部分积阵列进行并行压缩处理,直至得到两行中间部分积。乘法器的关键路径包括在每一列中各点的求和操作,其中,采用CSA(carry-save adder,进位保留加法器),由于其列相加的速度很慢,每次只有一个CSA在工作,因此采用华莱士树结构加速列相加,华莱士树结构可以将乘法的时间复杂度变成log(2/3)N。图13为华莱士树结构的乘法器示意图,如图13所示,华莱士树结构是并行地对第二部分积阵列进行压缩,以生成新的第二部分积阵列,然后再次对生成新的第二部分积阵列并行压缩,直至剩下两行中间部分积。
具体地,如图13所示,经过第一级压缩阵列包括6组3-2压缩器,得到12项部分积。第二级压缩阵列包括3组4-2压缩器,将部分及压缩成6项。第三级包括2组3-2压缩器,得到4项部分积。在经过最后一级4-2压缩器,部分积阵列被压缩成最终的两项,这两项直接作为最终快速加法器的输入,可以得到乘法运算的积值。华莱士树形乘法器经过4级CSA就可以将部分积压缩至两项。
最后,通过加法器130用于对压缩处理得到的中间部分积进行相加,得到最终乘积。
最后,对本发明提供多粒度并行乘法器的进行性能测试,获得测试结果如表2所示。
表2
其中,在表2中,现有1来自Wang,D.,et al.MaPU:A novel mathematicalcomputing architecture.in High Performance Computer Architecture(HPCA),2016IEEE International Symposium on.2016.IEEE.(《MaPU:一种新型的代数运算架构》,高性能计算架构会议.2016);现有2来自Li Guoqiang.FT_SIMD:Design of A High-Performance Multiplier Computer Engineering&Science Vol.34,no.1,2012(《一种高性能的乘法器设计》,计算机工程与科学)
由上述测试结果可以看出,本发明提供的多粒度并行乘法器不仅能够支持1个32x32-bit,2个16x16-bit或者4个8x8-bit的有符号/无符号乘法操作,1个16x16-bit或者2个8x8-bit的复数乘法操作,还进一步降低了运算过程的时延及功耗,有效提升了乘法器的运算性能。
本发明中所提到的各种模块、电路均为由硬件实现的电路,虽然其中某些模块、电路集成了软件,但本发明所要保护的是集成软件对应的功能的硬件电路,而不仅仅是软件本身。
本领域技术人员应该理解,附图或实施例中所示的装置结构仅仅是示意性的,表示逻辑结构。其中作为分离部件显示的模块可能是或者可能不是物理上分开的,作为模块显示的部件可能是或者可能不是物理模块。
最后,需要注意的是:以上列举的仅是本发明的具体实施例子,当然本领域的技术人员可以对本发明进行改动和变型,倘若这些修改和变型属于本发明权利要求及其等同技术的范围之内,均应认为是本发明的保护范围。
Claims (10)
1.一种多粒度并行乘法器,其特征在于,所述乘法器支持粒度包含比特位为32bit的word类型、比特位为16bit的short类型和/或比特位为8bit的byte类型的源操作数的并行运算,所述乘法器包括:乘法部分积生成器、部分积压缩器以及加法器;
其中,所述乘法部分积生成器包括:
比特位扩展单元,用于根据源操作数的粒度对所述源操作数进行比特位扩展,生成与所述粒度对应的待操作数;
编码单元,用于根据布思编码以及待操作数的粒度对所述待操作数进行编码,生成与所待操作数的粒度对应的第一部分积阵列;
阵列处理单元,用于根据所述第一部分积阵列的粒度将每个粒度的第一部分积阵列进行映射得到映射阵列,并分别对所述映射阵列的每一列进行排序,将所述每一列的有效位移动到该列的最上面,然后对排序后的全部粒度的第一部分积阵列取并集以使多粒度并行运算,生成对应的第二部分积阵列;
所述部分积压缩器用于对所述第二部分积阵列进行压缩处理,得到两项中间部分积;
所述加法器用于对压缩处理得到的两项中间部分积进行相加,得到最终乘积。
2.根据权利要求1所述的乘法器,其特征在于,所述比特位扩展单元进一步用于:根据源操作数的粒度对所述源操作数进行比特位扩展,生成与所述粒度对应的长度为36bit的待操作数。
3.根据权利要求2所述的乘法器,其特征在于,所述编码单元进一步用于:将所述长度为36bit的待操作数平均分为4段长度为9bit的待操作数,并分别针对每段长度为9bit的待操作数进行基4-布思编码。
4.根据权利要求1所述的乘法器,其特征在于,对于比特位为32bit的word类型的源操作数,所述编码单元具体用于生成总共为19行的第一部分积阵列。
5.根据权利要求1所述的乘法器,其特征在于,对于比特位为16bit的short类型的源操作数,所述编码单元具体用于生成总共为22行的第一部分积阵列。
6.根据权利要求1所述的乘法器,其特征在于,对于比特位为8bit的byte类型的源操作数,所述编码单元具体用于生成总共为14行的第一部分积阵列。
7.根据权利要求4-6中任一项所述的乘法器,其特征在于,所述编码单元进一步用于:为每个第一部分积阵列对应构造一个等长的有效位阵列,用于标识所述第一部分积阵列上的每一位数据是否有效。
8.根据权利要求1所述的乘法器,其特征在于,所述根据所述第一部分积阵列的粒度将每个粒度的第一部分积阵列进行映射得到映射阵列的具体步骤包括:
针对word类型中32bit乘32bit的实数乘法的第一部分积阵列不作映射;
针对short类型中2个16bit乘16bit的实数乘法的第一部分积阵列,对应划分得到子阵列block1、block2、block3以及block4;其中,
对子阵列block1和block2,执行映射操作如下:
orgdatamap={32’h0,OrgData[31:0]};
对子阵列block3和block4,执行映射操作如下:
orgdatamap={orgdata[31:0],32’h0};
针对byte类型中4个8bit乘8bit的实数乘法的第一部分积阵列,对应划分得到子阵列block1-block8,其中,
对子阵列block1和block3,执行映射操作如下:
orgdatamap={16’h0,orgdata[47:32],16’h0,orgdata[15:0]};
对子阵列block5和block7,执行映射操作如下:
orgdatamap={orgdata[47:32],16’h0,orgdata[15:0],16’h0}。
9.根据权利要求8所述的乘法器,其特征在于,所述阵列处理单元还用于:
针对short类型中1个16bit乘16bit的复数乘法,对其实数乘法中乘积为正值的部分直接映射,乘积为负值的部分做取反操作;
针对byte类型中2个8bit乘8bit的复数乘法,block1-block 8都有效,block5和block7位结果的虚数部分作取反操作。
10.根据权利要求1所述的乘法器,其特征在于,所述部分积压缩器进一步用于:根据华莱士树结构对所述第二部分积阵列进行并行压缩处理,直至得到两行中间部分积。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711089785.4A CN109753268B (zh) | 2017-11-08 | 2017-11-08 | 多粒度并行运算乘法器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711089785.4A CN109753268B (zh) | 2017-11-08 | 2017-11-08 | 多粒度并行运算乘法器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109753268A true CN109753268A (zh) | 2019-05-14 |
CN109753268B CN109753268B (zh) | 2021-02-02 |
Family
ID=66401474
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711089785.4A Active CN109753268B (zh) | 2017-11-08 | 2017-11-08 | 多粒度并行运算乘法器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109753268B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110196709A (zh) * | 2019-06-04 | 2019-09-03 | 浙江大学 | 一种基于RRAM的非易失性8位Booth乘法器 |
CN110362293A (zh) * | 2019-08-30 | 2019-10-22 | 上海寒武纪信息科技有限公司 | 乘法器、数据处理方法、芯片及电子设备 |
CN111652359A (zh) * | 2020-05-25 | 2020-09-11 | 北京大学深圳研究生院 | 用于矩阵运算的乘法器阵列和用于卷积运算的乘法器阵列 |
CN112596699A (zh) * | 2020-12-30 | 2021-04-02 | 海光信息技术股份有限公司 | 乘法器、处理器及电子设备 |
WO2022178861A1 (zh) * | 2021-02-26 | 2022-09-01 | 清华大学 | 并行乘法器及其工作方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1821951A (zh) * | 2005-02-17 | 2006-08-23 | 松下电器产业株式会社 | 算术单元 |
CN1998012A (zh) * | 2003-10-16 | 2007-07-11 | 佳能株式会社 | 积和运算电路和方法 |
US20100125620A1 (en) * | 2008-11-20 | 2010-05-20 | Advanced Micro Devices, Inc. | Arithmetic processing device and methods thereof |
CN101739231A (zh) * | 2010-01-04 | 2010-06-16 | 西安电子科技大学 | 布斯-华莱士树型乘法器 |
CN102999311A (zh) * | 2012-12-10 | 2013-03-27 | 张友能 | 基于Booth算法的48x30位乘法器 |
US20150347090A1 (en) * | 2011-09-06 | 2015-12-03 | Advanced Micro Devices, Inc. | Floating point multiply accumulator multi-precision mantissa aligner |
US9411554B1 (en) * | 2009-04-02 | 2016-08-09 | Xilinx, Inc. | Signed multiplier circuit utilizing a uniform array of logic blocks |
-
2017
- 2017-11-08 CN CN201711089785.4A patent/CN109753268B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1998012A (zh) * | 2003-10-16 | 2007-07-11 | 佳能株式会社 | 积和运算电路和方法 |
CN1821951A (zh) * | 2005-02-17 | 2006-08-23 | 松下电器产业株式会社 | 算术单元 |
US20100125620A1 (en) * | 2008-11-20 | 2010-05-20 | Advanced Micro Devices, Inc. | Arithmetic processing device and methods thereof |
US9411554B1 (en) * | 2009-04-02 | 2016-08-09 | Xilinx, Inc. | Signed multiplier circuit utilizing a uniform array of logic blocks |
CN101739231A (zh) * | 2010-01-04 | 2010-06-16 | 西安电子科技大学 | 布斯-华莱士树型乘法器 |
US20150347090A1 (en) * | 2011-09-06 | 2015-12-03 | Advanced Micro Devices, Inc. | Floating point multiply accumulator multi-precision mantissa aligner |
CN102999311A (zh) * | 2012-12-10 | 2013-03-27 | 张友能 | 基于Booth算法的48x30位乘法器 |
Non-Patent Citations (1)
Title |
---|
DONGLIN WANG ET AL.: "MaPU: A Novel Mathematical Computing Architecture", 《2016 IEEE INTERNATIONAL SYMPOSIUM ON HIGH PERFORMANCE COMPUTER ARCHITECTURE (HPCA)》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110196709A (zh) * | 2019-06-04 | 2019-09-03 | 浙江大学 | 一种基于RRAM的非易失性8位Booth乘法器 |
CN110362293A (zh) * | 2019-08-30 | 2019-10-22 | 上海寒武纪信息科技有限公司 | 乘法器、数据处理方法、芯片及电子设备 |
CN110362293B (zh) * | 2019-08-30 | 2023-12-19 | 上海寒武纪信息科技有限公司 | 乘法器、数据处理方法、芯片及电子设备 |
CN111652359A (zh) * | 2020-05-25 | 2020-09-11 | 北京大学深圳研究生院 | 用于矩阵运算的乘法器阵列和用于卷积运算的乘法器阵列 |
CN111652359B (zh) * | 2020-05-25 | 2023-05-02 | 北京大学深圳研究生院 | 用于矩阵运算的乘法器阵列和用于卷积运算的乘法器阵列 |
CN112596699A (zh) * | 2020-12-30 | 2021-04-02 | 海光信息技术股份有限公司 | 乘法器、处理器及电子设备 |
WO2022178861A1 (zh) * | 2021-02-26 | 2022-09-01 | 清华大学 | 并行乘法器及其工作方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109753268B (zh) | 2021-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109753268B (zh) | 多粒度并行运算乘法器 | |
CN110163359B (zh) | 一种计算装置及方法 | |
CN110383300B (zh) | 一种计算装置及方法 | |
CN109543140B (zh) | 一种卷积神经网络加速器 | |
US20210349692A1 (en) | Multiplier and multiplication method | |
CN112540743B (zh) | 面向可重构处理器的有无符号乘累加器及方法 | |
Wang et al. | DSP-efficient hardware acceleration of convolutional neural network inference on FPGAs | |
CN110362293B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN116450217A (zh) | 一种多功能定点乘法和乘累加运算装置及方法 | |
CN110531954B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN101840324B (zh) | 支持复数运算和子字并行的64位定浮点乘法器 | |
CN114327640A (zh) | Simd乘法器及数字处理器 | |
Sharma et al. | Modified booth multiplier using wallace structure and efficient carry select adder | |
CN116205244B (zh) | 一种数字信号处理结构 | |
Kumar et al. | VLSI architecture of pipelined booth wallace MAC unit | |
CN211577939U (zh) | 一种神经网络专用计算阵列 | |
CN209879493U (zh) | 乘法器 | |
Yao et al. | Design of pipeline multiplier based on modified booth’s algorithm and wallace tree | |
Sasidharan et al. | Comparison of Multipliers Based on Modified Booth Algorithm | |
Jing et al. | A reconfigurable high-performance multiplier based on multi-granularity design and parallel acceleration | |
Liu et al. | Implementation of a dynamic wordlength SIMD multiplier | |
Chen et al. | A reconfigurable digital signal processor architecture for high-efficiency MPEG-4 video encoding | |
US20240220202A1 (en) | Multi-Modal Systolic Array For Matrix Multiplication | |
Christopher Vishal et al. | Design of Reconfigurable Multiply-Accumulate Unit with Computational Optimization | |
Lahari et al. | BCD Approach Based High Performance Floating Point Multiplier for DSP Applications |
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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 201306 building C, No. 888, Huanhu West 2nd Road, Lingang New District, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai Patentee after: Shanghai Silang Technology Co.,Ltd. Address before: 102400 floor 402, building 11, No.1 Yanfu Road, Yancun Town, Fangshan District, Beijing Patentee before: Beijing Si Lang science and Technology Co.,Ltd. |