CN116522967A - 乘法器与芯片 - Google Patents
乘法器与芯片 Download PDFInfo
- Publication number
- CN116522967A CN116522967A CN202310316246.9A CN202310316246A CN116522967A CN 116522967 A CN116522967 A CN 116522967A CN 202310316246 A CN202310316246 A CN 202310316246A CN 116522967 A CN116522967 A CN 116522967A
- Authority
- CN
- China
- Prior art keywords
- period
- data
- multiplier
- vector
- weight matrix
- 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.)
- Pending
Links
- 239000013598 vector Substances 0.000 claims abstract description 83
- 239000011159 matrix material Substances 0.000 claims abstract description 71
- 238000009825 accumulation Methods 0.000 claims description 15
- 230000000295 complement effect Effects 0.000 claims description 9
- 238000004422 calculation algorithm Methods 0.000 claims description 6
- 230000003139 buffering effect Effects 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 abstract description 23
- 239000000047 product Substances 0.000 description 95
- 238000000034 method Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 8
- 238000013528 artificial neural network Methods 0.000 description 4
- 238000013135 deep learning Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000012467 final product Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06G—ANALOGUE COMPUTERS
- G06G7/00—Devices in which the computing operation is performed by varying electric or magnetic quantities
- G06G7/12—Arrangements for performing computing operations, e.g. operational amplifiers
- G06G7/16—Arrangements for performing computing operations, e.g. operational amplifiers for multiplication or division
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06G—ANALOGUE COMPUTERS
- G06G7/00—Devices in which the computing operation is performed by varying electric or magnetic quantities
- G06G7/12—Arrangements for performing computing operations, e.g. operational amplifiers
- G06G7/14—Arrangements for performing computing operations, e.g. operational amplifiers for addition or subtraction
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Power Engineering (AREA)
- Complex Calculations (AREA)
Abstract
本发明涉及芯片技术领域,公开一种乘法器与芯片。所述乘法器包括:存储阵列,用于存储权重矩阵;输入模块,用于按多个周期依次输入一向量中的每个元素中的多个数据块;编码器,用于对每个周期输入的每个数据块进行编码,以获得每个元素在每个周期内的编码数据;部分积生成模块,用于将编码数据与权重矩阵相乘,以得到每个周期内的多组部分积;加法模块,用于将每个周期内的每组部分积相加,以得到每个周期内的每组部分积的总和;以及累加器,用于将每组部分积的总和进行移位相加,由此实现了数字存算一体电路,消除存储器与处理器之间的数据搬移,极大地提高能效与算力。
Description
技术领域
本发明涉及芯片技术领域,具体地涉及一种乘法器与芯片。
背景技术
近年来,为了解决器件尺寸微缩挑战与冯诺依曼计算架构瓶颈,存算一体技术得到人们的广泛关注,其基本思想是存储与计算融合在同一个芯片,从而直接利用存储器进行计算,减少存储器与处理器之间的数据传输,降低功耗的同时提高性能。
存算一体技术目前被认为是后摩尔时代解决大数据实时智能处理的高效硬件方案之一,也是目前深度学习神经网络高效实施方案之一。对于深度学习神经网络应用,其最频繁的运算是乘积累加运算(Multiply Accumulate,简称MAC),通过存算一体的方式可以高效的实现MAC运算,从而在大幅度提高性能的同时降低功耗。
现有的存算一体处理器通常依赖模拟存算一体技术,以实现具有低精度整数乘法累加(MAC)支持的高效神经网络推理。尽管大多数先前的工作集中于基于模拟的存算一体技术以利用位线(BL)的充电/放电操作,但晶体管的变化和模数转换器(ADC)导致的精度不足仍然是一个问题。与边缘深度学习不同,云端深度学习对神经网络推理和训练有更高的精度要求,因此,模拟方法可能不适合于要求高精度的一些应用。
发明内容
本发明的目的是提供一种乘法器与芯片,其对输入数据进行分周期-分块输入,从而减少运算周期以及累加器的存储空间,实现了数字存算一体电路,从而消除存储器与处理器之间的数据搬移,极大地提高能效与算力,进而可实现高精度计算任务。
为了实现上述目的,本发明第一方面提供一种乘法器,所述乘法器包括:存储阵列,用于存储权重矩阵;输入模块,用于按照多个周期依次输入一向量中的每个元素中的多个数据块,其中,所述数据块包括多个相邻的数据位;编码器,用于对每个周期输入的所述向量中的所述每个元素中的每个数据块进行编码,以获得所述每个元素在所述每个周期内的编码数据;部分积生成模块,用于将所述向量中的所述每个元素在所述每个周期内的编码数据与所述权重矩阵的相应元素相乘,以得到所述每个周期内的多组部分积,其中,每组部分积与所述向量的所有元素相关联,以及所述多组部分积的组数等于所述向量与所述权重矩阵的乘法结果中的所有元素的数目;加法模块,用于将所述每个周期内的所述每组部分积相加,以得到所述每个周期内的所述每组部分积的总和;以及累加器,用于将所述每个周期内的所述每组部分积的总和进行移位相加。
优选地,所述编码器包括波兹编码器。
优选地,所述编码器用于对每个周期输入的所述向量中的所述每个元素中的每个数据块进行编码包括:对每个周期输入的所述向量中的所述每个元素中的每个数据块进行基4波兹编码。
优选地,所述累加器包括多个累加单元,其中,所述累加单元包括:寄存器,用于存储第i+1周期内的所述每组部分积的总和,其中,i为0到N-1之间的整数,以及N为所述多个周期的数目;移位器,用于将所述第i+1周期内的所述每组部分积的总和左移m位,其中,m为所述第i+1周期输入的数据块与包括最低数据位的数据块之间的位差;以及加法器,用于将移位后的所述第i+1周期内的所述总和与所述寄存器存储的第i周期内的所述加法器的输出结果相加,其中,所述第0周期内的所述加法器的输出结果为0,所述寄存器还用于,存储所述第i+1周期内的所述加法器的输出结果。
优选地,所述加法模块包括多个加法单元,其中,所述加法单元为采用加法树算法的单元。
优选地,所述多个加法单元与所述多个累加单元的数目等于所述向量与所述权重矩阵的乘法结果中的所有元素的数目。
优选地,所述部分积生成模块包括:多个部分积生成单元,其中,所述部分积生成单元包括:移位器,用于对所述权重矩阵中的元素进行移位;反相器,用于对所述权重矩阵中的元素取补码;以及多路复用器,用于根据所述向量中的相应元素在所述每个周期内的编码数据,从所述权重矩阵中的所述元素的移位、取补码或者未操作的结果中选择一者,并输出所选择的一者。
优选地,所述多个部分积生成单元的数目等于所述权重矩阵中的所有元素的数目。
优选地,所述多个周期的数目根据所述向量中的每个元素的比特数目确定。
优选地,所述存储阵列包括SRAM阵列,每个SRAM单元存储1比特数据。
优选地,所述乘法器还包括:缓存器,用于对按照所述多个周期依次输入的所述向量中的所述每个元素中的所述多个数据块进行缓存。
通过上述技术方案,本发明创造性地通过存储阵列存储权重矩阵;通过输入模块按照多个周期依次输入一向量中的每个元素中的多个数据块;通过编码器对每个周期输入的所述向量中的所述每个元素中的每个数据块进行编码,以获得所述每个元素在所述每个周期内的编码数据;通过部分积生成模块将所述向量中的所述每个元素在所述每个周期内的编码数据与所述权重矩阵的相应元素相乘,以得到所述每个周期内的多组部分积,其中,每组部分积与所述向量的所有元素相关联,以及所述多组部分积的组数等于所述向量与所述权重矩阵的乘法结果中的所有元素的数目;通过加法模块将所述每个周期内的所述每组部分积相加,以得到所述每个周期内的所述每组部分积的总和;以及通过累加器将所述每个周期内的所述每组部分积的总和进行移位相加。由此,本发明可对输入数据进行分周期-分块输入,从而减少运算周期以及累加器的存储空间,实现了数字存算一体电路,从而消除存储器与处理器之间的数据搬移,极大地提高能效与算力,进而可实现高精度计算任务。
本发明第二方面提供一种芯片,所述芯片包括:所述的乘法器。
本发明的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明实施例,但并不构成对本发明实施例的限制。在附图中:
图1是本发明一实施例提供的乘法器的结构示意图;
图2是本发明一实施例提供的存储阵列的示意图;
图3是本发明一实施例提供的输入数据的示意图;
图4是本发明一实施例提供的加法树的示意图;
图5是本发明一实施例提供的累加单元的示意图;以及
图6是本发明一实施例提供的融合波兹编码的乘法器的数字存算一体架构的示意图。
具体实施方式
以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
图1是本发明一实施例提供的乘法器的结构示意图。如图1所示,所述乘法器可包括:存储阵列10,用于存储权重矩阵;输入模块20,用于按照多个周期依次输入一向量中的每个元素中的多个数据块,其中,所述数据块包括多个相邻的数据位;编码器30,用于对每个周期输入的所述向量中的所述每个元素中的每个数据块进行编码,以获得所述每个元素在所述每个周期内的编码数据;部分积生成模块40,用于将所述向量中的所述每个元素在所述每个周期内的编码数据与所述权重矩阵的相应元素相乘,以得到所述每个周期内的多组部分积,其中,每组部分积与所述向量的所有元素相关联,以及所述多组部分积的组数等于所述向量与所述权重矩阵的乘法结果中的所有元素的数目;加法模块50,用于将所述每个周期内的所述每组部分积相加,以得到所述每个周期内的所述每组部分积的总和;以及累加器60,用于将所述每个周期内的所述每组部分积的总和进行移位相加。
其中,所述存储阵列10包括SRAM阵列,每个SRAM单元存储1比特数据。如图2所示,存储阵列可存储64×64规模的矩阵(该矩阵为权重矩阵,即存储阵列可提前存储权重矩阵B),每个元素为4比特,即每个元素由4个SRAM存储。
其中,所述向量可包括行向量或者列向量。在所述向量为行向量的情况下,乘法器的运算为向量×权重矩阵;或者在所述向量为列向量的情况下,乘法器的运算为权重矩阵×向量。
其中,所述多个周期的数目根据所述向量中的每个元素的比特数目确定。
具体地,假设所述行向量或所述列向量中的每个元素的比特数目为n,若n为偶数,则所述多个周期的数目为n/2;若n为奇数,则所述多个周期的数目为所述每个元素的比特数目的(n+1)/2。如图3所示,输入一组向量数据,每个元素都是8比特,需要分4个周期输入,例如每个周期输入各元素的3比特。在现有技术中,8比特输入按每1比特逐一输入,需要8个周期才能完成所有部分积的累加;而本实施例对8比特进行分块输入,所以8比特数据只需要4个周期就可以完成所有部分积的累加,节省了一半的开销。
如图3所示,所述输入模块20可分4个周期(t0、t1、t2、t3)输入各个元素;每个周期输入各个元素中的一个数据块(其包括3比特的数据),例如,t0周期内,输入I[i-1]、I[i]、I[i+1]。每个周期内,输入每个元素中的3比特数据(共64×3比特),图3示出从高数据位开始按周期依次输入,当然也可从低数据位开始按周期依次输入。
在一实施例中,所述编码器30可包括波兹编码器。
更进一步地,所述编码器30用于对每个周期输入的所述向量中的所述每个元素中的每个数据块进行编码包括:对每个周期输入的所述向量中的所述每个元素中的每个数据块进行基4波兹编码。
如图3所示,根据基4波兹编码,例如需在每个元素最低位后面再补个0(即9比特),每个时钟周期输入各元素的3比特(3比特仅用于示例的目的,从波兹编码的角度来说,每周期可输入大于3的奇数个比特都是利于编码的,也就是说,每周期还可输入5比特、7比特等)。如表1所示,根据波兹编码表可以将系数生成归纳如下:假设输入码字为A[2k+1,2k,2k-1],其中A[2k+1]决定了输出系数的符号位,定义为neg;当输入码字为011和100时,输出绝对值为2,定义为two;当输入码字为000和111时,输出绝对值为0,定义为zero;除了以上码字,输出绝对值为1,定义为one。
以输入数据A为64×1的列向量且权重矩阵B为64×64的矩阵为例,根据表1所示的波兹编码表,这些数据分别通过64个编码单元32(即64个编码单元32构成编码器)将得到64个选择信号(选择信号即选择对权重B进行取补码\左移1位\不操作,将于下文进行说明)。
表1波兹编码器的编码表的示意图
A2k+1 | A2k | A2k-1 | -2*(A2k+1)+A2k+A2k-1 |
0 | 0 | 0 | +0 |
0 | 0 | 1 | +1 |
0 | 1 | 0 | +1 |
0 | 1 | 1 | +2 |
1 | 0 | 0 | -2 |
1 | 0 | 1 | -1 |
1 | 1 | 0 | -1 |
1 | 1 | 1 | -0 |
在现有的乘法器中,通常对存储器内存储的数据进行编码,由此需要存储器具有较大的存储空间来存储编码前后的数据;而本实施例对输入数据进行编码(而不是对存储阵列所存储的数据进行编码),由此,可采用存储空间较小的存储阵列即可实现数字存算一体的目标。
本实施例融合波兹编码,所以现在8比特数编码成4比特数,并且只需要4个周期就可以完成所有部分积的累加,节省了一半的开销,由此可以极大地减少在数字电路中的部分积的计算个数,在该架构中减少了运算周期以及累积器的存储空间。
所述部分积生成模块40用于将每个元素在所述每个周期内的编码数据与所述权重矩阵的相应元素相乘,以得到所述每个周期内的多组部分积。每组部分积与所述向量的所有元素相关联,以及所述多组部分积的组数等于所述向量与所述权重矩阵的乘法结果中的所有元素的数目。也就是说,在所述向量为列向量(k×1)的情况下,每组部分积包括列向量中的各个元素与权重矩阵中的每行上的相应元素的乘积,并且,所述多组部分积的组数等于所述向量与所述权重矩阵(s×k)的乘法结果中的所有元素的数目(s×1=s)。或者,在所述向量为行向量(1×k)的情况下,每组部分积包括行向量中的各个元素与权重矩阵中的每列上的相应元素的乘积,并且,所述多组部分积的组数等于所述向量与所述权重矩阵(k×s)的乘法结果中的所有元素的数目(1×s=s)
如表2所示,以B×A为例,在通过编码器对A进行波兹编码之后,将编码数据与权重矩阵B相乘,以生成部分积:如果编码器输出的zero为1,则输出部分积为0;如果编码器输出的one为1,则输出部分积为B;如果编码器输出的two为1,则输出部分积为B左移1位;如果是负数,则生成补码输出。
以输入数据A为64×1的列向量且权重矩阵B为64×64的矩阵为例,在每个周期内,通过部分积生成模块40可得到B中的每行元素与A中的对应元素中的一个数据块的64个乘积。
所述部分积生成模块40巧妙地利用了多路复用器、移位器、反相器等简单逻辑电路来实现从波兹编码到对权重矩阵操作的映射。
在一实施例中,所述部分积生成模块包括:多个部分积生成单元42,其中,所述部分积生成单元42包括:移位器(未示出),用于对所述权重矩阵中的元素进行移位;反相器(未示出),用于对所述权重矩阵中的元素取补码;以及多路复用器(未示出),用于根据所述向量中的相应元素在所述每个周期内的编码数据,从所述权重矩阵中的所述元素的移位、取补码或者未操作的结果中选择一者,并输出所选择的一者。
其中,所述多个部分积生成单元的数目等于所述权重矩阵中的所有元素的数目。以输入数据A为64×1的列向量且权重矩阵B为64×64的矩阵为例,所述多个部分积生成单元的数目等于64×64。
具体地,如图6所示,通过64个编码单元32(即64个编码单元32构成编码器)得到64个选择信号(选择信号即选择对权重B进行取补码\左移1位\不操作)之后,64个选择信号sign[1:0]和每行上的64×4比特的权重数据同时传入部分积生成模块40(其包括64×64个部分积生成单元42,各个部分积生成单元42与权重矩阵中的元素一一对应)。针对每个部分积生成单元42,通过移位器对权重矩阵的一元素进行移位,得到移位后的元素;通过反相器对权重矩阵的一元素进行取补码,得到取补码后的元素,然后通过多路复用器根据权重矩阵中的相应元素的选择信号从移位后的元素、取补码后的元素、未操作的元素中选择一者,并将选择的元素进行输出以作为与所述相应元素相对应的部分积。由此,通过64×64个部分积生成单元42可得到共64×64个乘积。其中,所述选择信号可通过sign[1:0]表示:sign[1]控制是否对权重取补码,sign[0]控制对权重是否左移1位。
表2部分积生成示意图
在一实施例中,所述加法模块50包括多个加法单元52,其中,所述加法单元52可为采用加法树算法的单元,如图4所示。
其中,所述多个加法单元的数目等于所述向量与所述权重矩阵的乘法结果中的所有元素的数目。以输入数据A为64×1的列向量且B为64×64的矩阵为例,所述列向量的元素的总数目为64,故所述多个加法单元的数目为64。具体地,在每个周期内,通过部分积生成模块40可得到B中的每行元素与A中的对应元素中的一个数据块的64个乘积,加法单元52需要对部分积生成模块40输出的64个乘积求和,在此基础上,由于矩阵B包括64行元素,故需要64个加法单元分别针对每行进行求和,以得到64个元素。
如图4所示,加法树算法的整个结构类似于二叉树,每一级将待加数据分成2组,通过递归最后分解为单个数,每个节点插入寄存器。每个节点都对其两个子节点的输出进行求和。每一层中间插入寄存器,实现流水作业。在现有算法中,需等待其他数据的求和结果出来之后,再将求和结果与其他待加数据进行求和;与现有算法相比,本实施例融合加法树,基于流水线的并行结构,能在尽可能少的时钟周期内实现多个数据相加,以实现高速运算的目的。
在一实施例中,所述累加器60可包括多个累加单元62(如图5所示)。
其中,所述多个累加单元的数目等于所述向量与所述权重矩阵的乘法结果中的所有元素的数目。也就是说,所述多个累加单元与所述多个加法单元一一相连。
以输入数据A为64×1的列向量且B为64×64的矩阵为例,由于输入模块20将输入数据分成多个周期进行输入,故需要对通过加法单元52得到每个周期内的64个元素进行错位相加,故需要设置64个累加单元。下文将针对每个累加单元的具体结构以及功能进行详细说明。
其中,所述累加单元62可包括:寄存器620,用于存储第i+1周期内的所述每组部分积的总和,其中,i为0到N-1之间的整数,以及N为所述多个周期的数目;移位器622,用于将所述第i+1周期内的所述每组部分积的总和左移m位,其中,m为所述第i+1周期输入的数据块与包括最低数据位的数据块之间的位差;以及加法器624,用于将移位后的所述第i+1周期内的所述总和与所述寄存器存储的第i周期内的所述加法器的输出结果相加,其中,所述第0周期内的所述加法器的输出结果为0,所述寄存器620还用于,存储所述第i+1周期内的所述加法器的输出结果,如图5所示。
以输入数据A为64×1的列向量且B为64×64的矩阵为例,对B×A中的第m行元素的计算过程进行说明。其中,可分别按照图3所示的四个周期从高数据位到低数据位依次输入数据A中的各个元素中的相应数据块,每相邻数据块之间的位差为2,并且下文中的累加单元62(由寄存器620、移位器622以及加法器624三者构成)对应于第m行元素。
如图5所示,在第1周期(t0)内,寄存器620存储从加法单元52输出的第1周期内的每组部分积的总和;移位器622将第1周期内的总和左移3*2(即,所述第1周期输入的数据块与包括最低数据位的数据块之间的位差)位;然后,加法器624将移位后的第1周期内的总和与寄存器存储的初始值0相加,所述寄存器将存储第1周期内的加法器624的输出结果。在第2周期(t1)内,寄存器620存储从加法单元52输出的第2周期内的每组部分积的总和;移位器622将第2周期内的总和左移2*2(即,所述第2周期输入的数据块与包括最低数据位的数据块之间的位差)位;然后,加法器624将移位后的第2周期内的总和与寄存器存储的第1周期内的加法器624的输出结果相加,所述寄存器将存储第2周期内的加法器624的输出结果。在第3周期(t2)内,寄存器620存储从加法单元52输出的第3周期内的每组部分积的总和;移位器622将第3周期内的总和左移1*2(即,所述第3周期输入的数据块与包括最低数据位的数据块之间的位差)位;然后,加法器624将移位后的第3周期内的总和与寄存器存储的第2周期内的加法器624的输出结果相加,所述寄存器将存储第3周期内的加法器624的输出结果。在第4周期(t3)内,寄存器620存储从加法单元52输出的第4周期内的每组部分积的总和;移位器622将第4周期内的总和左移0*2位(即,不移位);然后,加法器624将第4周期内的总和与寄存器存储的第3周期内的加法器624的输出结果相加,所述寄存器将存储第4周期内的加法器624的输出结果,即B×A中的第m行元素。由此,可结合输入模块的分周期-分块输入与累加器的移位相加,来通过时间换取累加单元中的寄存器的存储空间,即本实施例对寄存器的存储空间的要求非常低。
当然,上述实施例也可适用于分别按照图3所示的四个周期从低数据位到高数据位依次输入数据A中的各个元素中的相应数据块的情形。
上述实施例的作用是将权重矩阵×每个周期输入所产生的部分积存储起来并移位到对应位置,然后与下个周期计算所产生的部分积进行叠加,直至所有周期的部分积均相加完成为止。这种方法类似于列竖式乘法:从乘数的低位开始,每次取一位与权重矩阵相乘,其乘积作为部分积暂存,乘数的全部有效位都乘完后,再将所有部分积根据对应乘数数位的权值错位累加,得到最后的乘积。
在一实施例中,所述乘法器还可包括:缓存器70,用于对按照所述多个周期依次输入的所述向量中的所述每个元素中的所述多个数据块进行缓存。
通过上述实施例可知,在波兹编码过程中,在每相邻的两个周期会对同一比特进行两次编码(如图3所示),因此这些比特会被重复利用两次,将输入数据放在缓存器中(而不是从外部直接输入)是为了便于读取这些重复使用的比特。如果从外部直接输入,这些比特流就算完一个周期就流失了,下个周期要重复使用前一个周期输入的比特时无法得到相应的比特,由此无法保证计算的连续性。
上述各个实施例中,输入模块即缓存输入的一列向量元素。波兹编码器即利用基4波兹编码将输入数据进行编码。部分和生成模块是根据从波兹编码器那边输出的编码结果,将权重数据转化成对应的部分积。加法树的作用是将输入×权重的结果相加,即完成向量×向量中的累加运算。累加器的作用是通过移位将部分和累加,完成整个乘法过程。也即是说,本发明各个实施例提出一种融合波兹编码乘法器的数字存算一体架构,将逐位数字乘法累加直接集成到存储阵列中,利用波兹编码减少部分积的数目,用来计算有符号乘法,提高乘法运算的速度,由此可解决模拟存算一体技术的局限性,可以实现高精度的计算任务。
具体而言,以图6为例对融合波兹编码的乘法器的运算过程进行解释和说明。其中,所述乘法器为数字存算一体架构。
存储阵列10的规模为64×64的矩阵B(例如,各元素精度为4比特)。输入模块20输入的数据规模为64×1的向量A,各元素的精度为8比特,每个周期输入各元素中的3比特数据(共64×3比特)。根据表1所示的波兹编码表,这些数据分别通过64个编码单元32(即64个编码单元32构成编码器)将得到64个选择信号(选择信号即选择对权重B进行取补码\左移1位\不操作),选择信号可通过sign[1:0]表示:sign[1]控制是否对权重取补码,sign[0]控制对权重是否左移1位。64个选择信号sign[1:0]和每行上的64×4比特的权重数据同时传入部分积生成模块40,得到每行上的64个权重与相应的64个输入的“第一部分编码”乘积(即部分积),共64×64个乘积;每行上的64个乘积同时传入加法器50中的一个加法单元52,加法单元52将64个乘积加为一个结果再传入累加器60中的相应的累加单元62移位相加。以此类推,通过4个周期、4次编码、4次部分积生成、4次乘积相加,所得到的4个部分积(最终结果的部分积)在累加单元中移位累加将输出(矩阵×向量)MAC运算的最终结果(包括64个元素的列向量)。
本实施例对输入数据进行“分割-分周期”与波兹编码,能更加充分的利用编码器,且不影响数字存算一体电路的流水线结构。使用数字存算一体电路,消除存储器与处理器之间的数据搬移,极大地提高能效与算力,且可以实现高精度计算任务,结构灵活可变。
上述各个实施例均以输入数据A为64×1的列向量且权重矩阵B为64×64的矩阵为例,对B×A的计算过程进行说明。当然,本发明的乘法器也可适用于输入数据A为1×64的行向量且权重矩阵B为64×64的矩阵的相乘过程(即A×B的计算过程)。
综上所述,本发明创造性地通过存储阵列存储权重矩阵;通过输入模块按照多个周期依次输入一向量中的每个元素中的多个数据块;通过编码器对每个周期输入的所述向量中的所述每个元素中的每个数据块进行编码,以获得所述每个元素在所述每个周期内的编码数据;通过部分积生成模块将所述向量中的所述每个元素在所述每个周期内的编码数据与所述权重矩阵的相应元素相乘,以得到所述每个周期内的多组部分积,其中,每组部分积与所述向量的所有元素相关联,以及所述多组部分积的组数等于所述向量与所述权重矩阵的乘法结果中的所有元素的数目;通过加法模块将所述每个周期内的所述每组部分积相加,以得到所述每个周期内的所述每组部分积的总和;以及通过累加器将所述每个周期内的所述每组部分积的总和进行移位相加。由此,本发明可对输入数据进行分周期-分块输入,从而减少运算周期以及累加器的存储空间,实现了数字存算一体电路,从而消除存储器与处理器之间的数据搬移,极大地提高能效与算力,进而可实现高精度计算任务。
本发明一实施例提供一种芯片,所述芯片包括:所述的乘法器。
以上结合附图详细描述了本发明的优选实施方式,但是,本发明并不限于上述实施方式中的具体细节,在本发明的技术构思范围内,可以对本发明的技术方案进行多种简单变型,这些简单变型均属于本发明的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。
本领域技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得单片机、芯片或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
此外,本发明的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明的思想,其同样应当视为本发明所公开的内容。
Claims (12)
1.一种乘法器,其特征在于,所述乘法器包括:
存储阵列,用于存储权重矩阵;
输入模块,用于按照多个周期依次输入一向量中的每个元素中的多个数据块,其中,所述数据块包括多个相邻的数据位;
编码器,用于对每个周期输入的所述向量中的所述每个元素中的每个数据块进行编码,以获得所述每个元素在所述每个周期内的编码数据;
部分积生成模块,用于将所述向量中的所述每个元素在所述每个周期内的编码数据与所述权重矩阵的相应元素相乘,以得到所述每个周期内的多组部分积,其中,每组部分积与所述向量的所有元素相关联,以及所述多组部分积的组数等于所述向量与所述权重矩阵的乘法结果中的所有元素的数目;
加法模块,用于将所述每个周期内的所述每组部分积相加,以得到所述每个周期内的所述每组部分积的总和;以及
累加器,用于将所述每个周期内的所述每组部分积的总和进行移位相加。
2.根据权利要求1所述的乘法器,其特征在于,所述编码器包括波兹编码器。
3.根据权利要求2所述的乘法器,其特征在于,所述编码器用于对每个周期输入的所述向量中的所述每个元素中的每个数据块进行编码包括:
对每个周期输入的所述向量中的所述每个元素中的每个数据块进行基4波兹编码。
4.根据权利要求1-3中任一项所述的乘法器,其特征在于,所述累加器包括多个累加单元,其中,所述累加单元包括:
寄存器,用于存储第i+1周期内的所述每组部分积的总和,其中,i为0到N-1之间的整数,以及N为所述多个周期的数目;
移位器,用于将所述第i+1周期内的所述每组部分积的总和左移m位,其中,m为所述第i+1周期输入的数据块与包括最低数据位的数据块之间的位差;以及
加法器,用于将移位后的所述第i+1周期内的所述总和与所述寄存器存储的第i周期内的所述加法器的输出结果相加,其中,所述第0周期内的所述加法器的输出结果为0,
所述寄存器还用于,存储所述第i+1周期内的所述加法器的输出结果。
5.根据权利要求4所述的乘法器,其特征在于,所述加法模块包括多个加法单元,其中,所述加法单元为采用加法树算法的单元。
6.根据权利要求5所述的乘法器,其特征在于,所述多个加法单元与所述多个累加单元的数目等于所述向量与所述权重矩阵的乘法结果中的所有元素的数目。
7.根据权利要求1所述的乘法器,其特征在于,所述部分积生成模块包括:多个部分积生成单元,其中,所述部分积生成单元包括:
移位器,用于对所述权重矩阵中的元素进行移位;
反相器,用于对所述权重矩阵中的元素取补码;以及
多路复用器,用于根据所述向量中的相应元素在所述每个周期内的编码数据,从所述权重矩阵中的所述元素的移位、取补码或者未操作的结果中选择一者,并输出所选择的一者。
8.根据权利要求7所述的乘法器,其特征在于,所述多个部分积生成单元的数目等于所述权重矩阵中的所有元素的数目。
9.根据权利要求1-3中任一项所述的乘法器,其特征在于,所述多个周期的数目根据所述向量中的每个元素的比特数目确定。
10.根据权利要求1-3中任一项所述的乘法器,其特征在于,所述存储阵列包括SRAM阵列,每个SRAM单元存储1比特数据。
11.根据权利要求1-3中任一项所述的乘法器,其特征在于,所述乘法器还包括:
缓存器,用于对按照所述多个周期依次输入的所述向量中的所述每个元素中的所述多个数据块进行缓存。
12.一种芯片,其特征在于,所述芯片包括:根据权利要求1-11中任一项所述的乘法器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310316246.9A CN116522967A (zh) | 2023-03-28 | 2023-03-28 | 乘法器与芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310316246.9A CN116522967A (zh) | 2023-03-28 | 2023-03-28 | 乘法器与芯片 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116522967A true CN116522967A (zh) | 2023-08-01 |
Family
ID=87403730
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310316246.9A Pending CN116522967A (zh) | 2023-03-28 | 2023-03-28 | 乘法器与芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116522967A (zh) |
-
2023
- 2023-03-28 CN CN202310316246.9A patent/CN116522967A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112567350A (zh) | 可配置的存储器内计算引擎、平台、位单元及其布局 | |
CN110705703B (zh) | 基于脉动阵列的稀疏神经网络处理器 | |
US9933998B2 (en) | Methods and apparatuses for performing multiplication | |
US7912891B2 (en) | High speed low power fixed-point multiplier and method thereof | |
CN115145536A (zh) | 一种低位宽输入-低位宽输出的加法器树单元及近似乘加方法 | |
CN118034643B (zh) | 一种基于sram的无进位乘法存算阵列 | |
Yang et al. | GQNA: Generic quantized DNN accelerator with weight-repetition-aware activation aggregating | |
US6728745B1 (en) | Semiconductor circuit for arithmetic operation and method of arithmetic operation | |
CN114548387A (zh) | 神经网络处理器执行乘法运算的方法和神经网络处理器 | |
CN110766136B (zh) | 一种稀疏矩阵与向量的压缩方法 | |
CN116522967A (zh) | 乘法器与芯片 | |
CN115629734A (zh) | 并行向量乘加器的存内计算装置和电子设备 | |
CN116543808A (zh) | 一种基于sram单元的全数字域存内近似计算电路 | |
CN113723044B (zh) | 一种基于数据稀疏性的超额行激活存算一体加速器设计方法 | |
CN111126580B (zh) | 采用Booth编码的多精度权重系数神经网络加速芯片运算装置 | |
CN210006029U (zh) | 数据处理器 | |
CN209879493U (zh) | 乘法器 | |
CN113887697A (zh) | 半导体器件、其数据生成方法及其控制方法 | |
CN114239818B (zh) | 基于tcam和lut的存内计算架构神经网络加速器 | |
CN110647307A (zh) | 数据处理器、方法、芯片及电子设备 | |
CN115658012B (zh) | 向量乘加器的sram模拟存内计算装置和电子设备 | |
CN118312134B (zh) | 用于sram阵列内乘法的部分积生成电路和乘法器 | |
CN118657181A (zh) | 基于复用Booth计算单元和6T-SRAM的可重构数字存内计算装置 | |
CN116991359B (zh) | Booth乘法器、混合Booth乘法器及运算方法 | |
Karunakaran et al. | Exploration on Power Delay Product of various VLSI Multiplier Architectures |
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 |