CN109753268A - 多粒度并行运算乘法器 - Google Patents

多粒度并行运算乘法器 Download PDF

Info

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
granularity
bit
operand
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
Application number
CN201711089785.4A
Other languages
English (en)
Other versions
CN109753268B (zh
Inventor
冯静
刘子君
王东琳
郭阳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Silang Technology Co ltd
Original Assignee
Beijing Si Lang Science And Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Si Lang Science And Technology Co Ltd filed Critical Beijing Si Lang Science And Technology Co Ltd
Priority to CN201711089785.4A priority Critical patent/CN109753268B/zh
Publication of CN109753268A publication Critical patent/CN109753268A/zh
Application granted granted Critical
Publication of CN109753268B publication Critical patent/CN109753268B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Advance Control (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (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所述的乘法器,其特征在于,所述部分积压缩器进一步用于:根据华莱士树结构对所述第二部分积阵列进行并行压缩处理,直至得到两行中间部分积。
CN201711089785.4A 2017-11-08 2017-11-08 多粒度并行运算乘法器 Active CN109753268B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (7)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
DONGLIN WANG ET AL.: "MaPU: A Novel Mathematical Computing Architecture", 《2016 IEEE INTERNATIONAL SYMPOSIUM ON HIGH PERFORMANCE COMPUTER ARCHITECTURE (HPCA)》 *

Cited By (7)

* Cited by examiner, † Cited by third party
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
CN109753268A (zh) 多粒度并行运算乘法器
CN109740739B (zh) 神经网络计算装置、神经网络计算方法及相关产品
CN110383300B (zh) 一种计算装置及方法
CN110163353B (zh) 一种计算装置及方法
Eckhardt et al. 591 TFLOPS multi-trillion particles simulation on SuperMUC
CN109740754B (zh) 神经网络计算装置、神经网络计算方法及相关产品
Kim et al. FPGA-based CNN inference accelerator synthesized from multi-threaded C software
Zhang et al. Algorithm-hardware co-design of attention mechanism on fpga devices
CN112540743B (zh) 面向可重构处理器的有无符号乘累加器及方法
CN105373517A (zh) 基于Spark的分布式稠密矩阵求逆并行化运算方法
CN111047022A (zh) 一种计算装置及相关产品
Agullo et al. Dynamically scheduled Cholesky factorization on multicore architectures with GPU accelerators.
Kerbyson et al. A performance comparison of current HPC systems: Blue Gene/Q, Cray XE6 and InfiniBand systems
Maggioni et al. CoAdELL: Adaptivity and compression for improving sparse matrix-vector multiplication on GPUs
Waidyasooriya et al. FPGA implementation of heterogeneous multicore platform with SIMD/MIMD custom accelerators
CN105824601A (zh) 一种支持多模式乘法器的部分积复用方法
Jin et al. Efficient parallel implementation of multilayer backpropagation networks on SpiNNaker
CN111047021A (zh) 一种计算装置及相关产品
CN112052042B (zh) 一种数据流水线处理器系统
Yang et al. Processing dependent tasks on a Heterogeneous GPU resource architecture
Chen et al. Edge FPGA-based Onsite Neural Network Training
Liu et al. Implementation of a dynamic wordlength SIMD multiplier
Ferreira et al. Static process mapping heuristics evaluation for MPI processes in multi-core clusters
CN105844040B (zh) 一种支持多模式乘加器的数据运算方法
Ai et al. GTA: a new General Tensor Accelerator with Better Area Efficiency and Data Reuse

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.