CN111694544B - 多位复用乘加运算装置、神经网络运算系统以及电子设备 - Google Patents
多位复用乘加运算装置、神经网络运算系统以及电子设备 Download PDFInfo
- Publication number
- CN111694544B CN111694544B CN202010487031.XA CN202010487031A CN111694544B CN 111694544 B CN111694544 B CN 111694544B CN 202010487031 A CN202010487031 A CN 202010487031A CN 111694544 B CN111694544 B CN 111694544B
- Authority
- CN
- China
- Prior art keywords
- multiply
- bit multiplexing
- bit
- shift register
- module
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
- G06F7/575—Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Analysis (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供一种多位复用乘加运算装置、神经网络运算系统以及电子设备,该多位复用乘加运算装置包括:两个多位复用乘法模块、移位寄存模块以及累加模块;其中一个多位复用乘法模块的输出端连接该累加模块的第一输入端,另外一个多位复用乘法模块的输出端连接该移位寄存模块的输入端,该移位寄存模块的输出端连接该累加模块的第二输入端。通过移位寄存模块以及累加模块的运用,使两个多位复用乘法模块配合实现多位复用乘加运算,实现元件的复用,节约功耗,能够有效推动神经网络算法的推广,尤其适用于稀疏神经网络运算。
Description
技术领域
本发明涉及人工智能领域,尤其涉及一种多位复用乘加运算装置、神经网络运算系统以及电子设备。
背景技术
人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connection Model),它是一种类比生物神经网络行为特征,进行并行信息处理的算法模型。神经网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。
人工神经网络在智能控制、模式识别、图像/语音处理等领域中应用广泛。随着模型越来越复杂,参数越来越多,计算量也越来越大,导致硬件功耗过高。
发明内容
针对现有技术中的问题,本发明提供一种多位复用乘加运算装置、神经网络运算系统以及电子设备,能够至少部分地解决现有技术中存在的问题,充分利用存算一体技术与神经网络稀疏性方面的优势。
为了实现上述目的,本发明采用如下技术方案:
第一方面,提供一种多位复用乘加运算装置,包括:两个多位复用乘法模块、移位寄存模块以及累加模块;
其中一个多位复用乘法模块的输出端连接该累加模块的第一输入端,另外一个多位复用乘法模块的输出端连接该移位寄存模块的输入端,该移位寄存模块的输出端连接该累加模块的第二输入端。
进一步地,该多位复用乘法模块包括:两个乘法器、移位寄存器以及累加器;
其中一个乘法器的输出端连接该累加器的第一输入端,另外一个乘法器的输出端连接该移位寄存器的输入端,该移位寄存器的输出端连接该累加器的第二输入端。
进一步地,该乘法器的电路结构与该多位复用乘法模块的电路结构相同。
进一步地,多位复用乘加运算装置用于执行a×b乘加运算,两个多位复用乘法模块分别用于执行a×c乘法运算和a×d乘法运算,该移位寄存模块为c位移位寄存器或d位移位寄存器;
其中,c+d=b。
进一步地,a=8,b=8,c=d=4,该多位复用乘法模块包括:两个8×2乘法器、2位移位寄存器以及累加器;
其中一个8×2乘法器的输出端连接该累加器的第一输入端,另外一个8×2乘法器的输出端连接该2位移位寄存器的输入端,该2位移位寄存器的输出端连接该累加器的第二输入端,该累加器的输出端作为该多位复用乘法模块的输出端。
进一步地,工作模式包括:8×8模式、8×4模式以及8×2模式,由模式选择信号控制各元件实现模式切换;
其中,该模式选择信号根据乘数的有效位数确定。
进一步地,多位复用乘加运算装置应用于卷积运算。
第二方面,提供一种神经网络运算系统,包括:存算一体运算装置、如上述的多位复用乘加运算装置、移位寄存装置以及累加装置;
该存算一体运算装置的输入端接收输入数据,输出端连接该累加装置的第一输入端;该多位复用乘加运算装置的输入端接收该输入数据,输出端连接该移位寄存装置的输入端,输出端连接该累加装置的第二输入端。
第三方面,提供一种电子设备,包括如上述的多位复用乘加运算装置或如上述的神经网络运算系统。
本发明实施例提供的多位复用乘加运算装置、神经网络运算系统以及电子设备,该多位复用乘加运算装置包括:两个多位复用乘法模块、移位寄存模块以及累加模块;其中一个多位复用乘法模块的输出端连接该累加模块的第一输入端,另外一个多位复用乘法模块的输出端连接该移位寄存模块的输入端,该移位寄存模块的输出端连接该累加模块的第二输入端。通过移位寄存模块以及累加模块的运用,使两个多位复用乘法模块配合实现多位复用乘加运算,实现元件的复用,节约功耗,能够有效推动神经网络算法的推广,尤其适用于稀疏神经网络运算。
为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中多位复用乘加运算装置的结构框图一;
图2为本发明实施例中多位复用乘法器的结构框图;
图3为本发明实施例中多位复用8×8乘加运算装置的示意图;
图4示出了图3所示多位复用8×8乘加运算装置的端口;
图5示出了本发明实施例中的神经网络运算系统的结构框图;
图6示出了本发明实施例中的神经网络稀疏矩阵;
图7示出了图6中的稀疏矩阵用帧结构传输方式。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
以下在实施方式中详细叙述本发明的详细特征以及优点,其内容足以使任何本领域技术人员,了解本发明的技术内容并据以实施,且根据本说明书所揭露的内容、权利要求及图式,任何本领域技术人员可轻易地理解本发明相关的目的及优点。以下的实施例进一步详细说明本发明的观点,但非以任何观点限制本发明的范畴。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1为本发明实施例中多位复用乘加运算装置的结构框图一;如图1所示,该多位复用乘加运算装置包括:多位复用乘法模块1、多位复用乘法模块2、移位寄存模块3以及累加模块4;
多位复用乘法模块2的输出端连接该累加模块4的第一输入端,多位复用乘法模块1的输出端连接该移位寄存模块3的输入端,该移位寄存模块3的输出端连接该累加模块4的第二输入端。
具体地,该多位复用乘法模块1和2可采用普通的乘法器实现,也可以采用下述的多位复用乘法器实现,该累加模块可采用累加器实现;该多位复用乘法模块2的第一输入端用于输入乘数1,第二输入端用于输入乘数2的低n位,对乘数1以及乘数2的低n位进行乘法运算;该多位复用乘法模块1的第一输入端用于输入乘数1,第二输入端用于输入乘数2的高m位,对乘数1以及乘数2的高m位进行乘法运算;该移位寄存模块3可采用左移n位的移位寄存器实现,用于将多位复用乘法模块1的输出结果左移n位,累计模块4用于对该多位复用乘法模块2输出的乘数1以及乘数2的低n位的乘积和乘数1以及乘数2的高m位的乘积左移n位后的数值进行累加,得到乘数1和乘数2的运算结果,可作为乘法器使用。
其中,m和n可以相等也可以不等,乘数2为m+n位的二进制数。
值得说明的是,很多应用场合,比如神经网络运算(尤其是卷积运算),需要用到乘加运算,本发明实施例能够很好的实现乘加运算,举例来说,若需要实现a1×b1+a2×b2+a3×b3的运算,只需要先将a1和b1输入多位复用乘加运算装置,然后将a2和b2输入多位复用乘加运算装置,再将a2和b2输入多位复用乘加运算装置,累加模块4即可将a1×b1的结果、a2×b2的结果以及a3×b3的结果累加在一起,实现乘加运算。a1×b1的结果的运算过程如上所述,在此不再赘述。
需要说明的是,对于只有部分低位有效的乘数来说,比如“00000110”,高位为0,在计算时无需考虑,此时只需要低位参与计算即可,假设n=3或4或5或6,只需多位复用乘法模块2工作即可,多位复用乘法模块1则不需要参与工作,此时,通过模式选择信号控制多位复用乘法模块1待机,由多位复用乘法模块2工作,实现乘法运算,以此,能够减少多位复用乘法模块1的工作时间,节约硬件资源,减少功耗。
本发明实施例提供的多位复用乘加运算装置,通过移位寄存模块以及累加模块的运用,使两个多位复用乘法模块配合实现多位复用乘加运算,可以根据运算数据匹配多种位宽,即根据神经网络稀疏矩阵的实际位宽进行适配,节约功耗,提高适用性,提高芯片性能,有效推动神经网络算法的推广,尤其适用于稀疏神经网络运算。
在一个可选的实施例中,该多位复用乘法模块可采用多位复用乘法结构实现,其实现原理可与多位复用乘加运算装置的实现原理相同,利用多个乘法器分别对乘数的不同位执行运算,然后利用移位寄存与累加配合,实现乘法运算功能,具体地,参加图2,该多位复用乘法模块包括:乘法器1a、乘法器1b、移位寄存器1c以及累加器1d;
乘法器1b的输出端连接该累加器1d的第一输入端,乘法器1a的输出端连接该移位寄存器1c的输入端,该移位寄存器1c的输出端连接该累加器1d的第二输入端。其运算和实现原理参见上述,在此不再赘述。
值得说明的是,该乘法器1a和乘法器1b可以采用普通的乘法器实现,也可以采用多位复用乘法结构(其结构参见图2)实现,使得能够通过多个乘法器的拼套,用多个乘法器实现大规模复合的乘加运算装置。比如,一个64×64的多位复用乘加运算装置,可以通过32个64×2乘法器、16个64×4乘法器或8和64乘8乘法器配合需要数量的移位寄存器和累加器实现。
在一个可选的实施例中,该多位复用乘加运算装置用于执行a×b乘加运算,具体地,a和b分别表示两个乘数的位数,两个多位复用乘法模块分别用于执行a×c乘法运算和a×d乘法运算,该移位寄存模块为c位移位寄存器或d位移位寄存器;
其中,c+d=b,c与d可以相等也可以不等。
举例来说,假设a=8,b=8,c=d=4,参见图3,对于一个8x8乘加运算装置,先搭建8x2乘法器,然后用2个8x2乘法器搭建8x4乘法器,其中一个8x2乘法器计算低2位,另一个8x2乘法器计算高2位,最终的结果移位累加。然后用2个8x4乘法器搭建8x8乘法器,其中一个8x4乘法器计算低4位,另一个8x4乘法器计算高4位,最终的结果移位累加。
具体地,wt[7:0]表示位宽为8位的权重数据,dat[7:0]表示位宽为8位的输入数据,“<<”表示向左移位,⊕表示累加。
8x4乘法器20用于计算wt[7:0]的低4位与dat[7:0]的积1,8x4乘法器20用于计算wt[7:0]的高4位与dat[7:0]的积2,积2通过移位寄存器30左移4位得到结果1,累加器对积2和结果1进行累加。
本领域技术人员可以理解的是,当需要进行乘加运算时,只需要在8x8乘法器实现第一轮两个乘数的乘法运算后,再输入第二轮的两个乘数,然后累加器会对第一轮的结果和第二轮的结果进行累加,实现乘加运算。
8x2乘法器22用于计算wt[7:0]的第一位和第二位(即wt[1:0])与dat[7:0]的积3,8x2乘法器21用于计算wt[7:0]的第三位和第四位(即wt[3:2])与dat[7:0]的积4,积4通过移位寄存器23左移2位得到结果2,累加器对积3和结果3进行累加,得到wt[7:0]的低4位与dat[7:0]的积1。
8x2乘法器12用于计算wt[7:0]的第五位和第六位(即wt[5:4])与dat[7:0]的积5,8x2乘法器11用于计算wt[7:0]的第七位和第八位(即wt[7:6])与dat[7:0]的积6,积6通过移位寄存器13左移2位得到结果3,累加器对积5和结果3进行累加,得到wt[7:0]的高4位与dat[7:0]的积2。
本领域技术人员可以理解的是,当wt[7:0]的低2位有效,高6位无效时,如“00000001”或“00000010”,8x2乘法器22参与工作即可,8x2乘法器21、8x2乘法器11、8x2乘法器12、移位寄存器23、移位寄存器13、移位寄存器30以及累加器14均不需要参与工作;当wt[7:0]的低4位有效,高4位无效时,如“00001001”或“00001010”,8x4乘法器24参与工作即可,8x4乘法器10、移位寄存器3均不需要参与工作。
即,如图3所示装置的工作模式包括:8×8模式(即8x4乘法器10和8x4乘法器20均参与工作)、8×4模式(即8x4乘法器10、移位寄存器3均不需要参与工作)以及8×2模式(即8x2乘法器21、8x2乘法器11、8x2乘法器12、移位寄存器23、移位寄存器13、移位寄存器30以及累加器14均不需要参与工作),工作模式由模式选择信号sel控制各元件实现模式切换;电路中每个元件(如乘法器、移位寄存器、累加器)都具有控制端,控制端接收模式选择信号sel,根据该信号控制元件是否工作。
其中,该模式选择信号sel根据乘数的有效位数确定。
具体地,参加图4,sel是模式选择信号,wt是权重数据输入,在8x8模式时是1个参数,8x4模式时高低4位分别表示2个参数;8x2模式时表示4个参数。dat0/1/2/3是数据输入,表示同一个数据。最终结果按如下方式输出:
sel==0时,8x8模式:result=wt*dat0;
sel==1时,8x4模式,result=wt[3:0]*dat0+wt[7:4]*dat1;
sel==2时,8x2模式,
result=wt[1:0]*dat0+wt[3:2]*dat1+wt[5:4]*dat2+wt[7:6]*dat3;
其中,sel可由芯片状态机根据输入数据得到。
为了使本领域技术人员更好地理解本申请,以卷积运算为例,对本发明进行详细说明:
卷积运算的核心是矩阵乘加运算,对于一个2×2的卷积核,其核心运算为a1×b1+a2×b2+a3×b3+a4×b4,假设a1、b1、a2、b2、a3、b3、a4、b4均为8位二进制数,结合图3,首先将a1、b1输入该8×8乘法器,假设b1的低4位有效,此时,输入sel信号进行控制使得8x4乘法器10、移位寄存器3处于待机状态,8×2乘法器22接收a1和b1的低两位,8×2乘法器21接收a1和b1的第三位和第四位,移位寄存器24将8×2乘法器21的输出左移2位,累加器24对移位寄存器24的输出和8×2乘法器22的输出进行累加,并将结果输入累加器30;而后,将a2、b2输入该8×8乘法器,假设b2的低2位有效,此时,输入sel信号进行控制使得8x2乘法器21、8x2乘法器11、8x2乘法器12、移位寄存器23、移位寄存器13、移位寄存器30以及累加器14均不需要参与工作处于待机状态,8×2乘法器22接收a2和b2的低两位,累加器24将8×2乘法器22的输出传给累加器30,累加器30累加a1×b1的乘积和a2×b2的乘积;然后将a3、b3输入该8×8乘法器,计算结束后将a4、b4输入该8×8乘法器,最终使得累加器中累加a1×b1的结果和a2×b2的结果和a3×b3的结果和a4×b4的结果,实现矩阵乘加运算。
值得说明的是,申请人通过大量的研究和试验发现,神经网络虽然整体模型很大,但是在内部存在一定的稀疏性,通过压缩等手段可以大大简化模型复杂度。与此同时,存算一体技术可以满足高性能神经网络运算,但是存算一体阵列的规则性与神经网络的稀疏性特征不匹配,容易造成资源浪费。因此,可以通过结合神经网络模型特征来优化芯片设计,对神经网络模型进行分解,使得神经网络模型密集部分通过存算一体阵列来实现;对于稀疏部分的算术运算,由于神经网络模型分解的位宽不确定性,基于当前的乘加运算电路难以实现高效率低功耗实现,因此可以采用本发明实施例提供的多位复用乘加运算装置实现,从而可以分别进行优化。
本发明实施例还提供了一种神经网络运算系统,参见图5,该神经网络运算系统,包括:用于实现存算一体运算核运算的存算一体运算装置100、用于实现稀疏算术运算核运算的如上述的多位复用乘加运算装置200、用于移位的移位寄存装置300以及累加装置400;
该存算一体运算装置100的输入端接收输入数据,输出端连接该累加装置500的第一输入端;该多位复用乘加运算装置200的输入端接收该输入数据,输出端连接该移位寄存装置300的输入端,输出端连接该累加装置500的第二输入端。
具体地,在利用存算一体技术实现神经网络运算时,如果神经网络算法的权重分布过小或过大,或者输入信号过小或过大,都可能导致存储单元阵列的模拟电压/电流输出值过小或过大,可能会超出ADC的下限或上限量程;通常ADC对中间值的量化精度最高,对两边的值量化精度较差,当ADC的输入超过下限或上限量程时,对应的输出被直接截断成最小或最大值,从而降低了运算精度。为了解决这个问题,可以将整体分布不均匀的神经网络权重矩阵成倍增大或成倍缩小,以便使得将处理后的权重矩阵存储存储单元阵列进行存内计算后得到的信号处于ADC(ADC设置在存储单元阵列之后,用于将各存储单元列的输出转换为数字信号)的有效量程内,进而提高运算精度。对于权重分布比较不均匀的阵列来说,增大后的权重阵列中,有些较大的权重值可能会超过位数上限(也可以称为移位后存在溢出位),此时,将溢出位截取出来,未截取出来的部分形成权重矩阵(也可称为稀疏权重数据wt[7:0]),截取出来的部分补零后形成一个稀疏矩阵,此时,将权重矩阵输入存算一体运算装置100,存算一体运算装置100对权重矩阵和输入数据执行矩阵乘加预算,将稀疏矩阵输入多位复用乘加运算装置200,多位复用乘加运算装置200对稀疏矩阵和输入数据进行乘加运算(其运算原理参见上述,在此不再赘述),而后,由移位寄存装置300对多位复用乘加运算装置200的输出结果进行移位,累加装置500对存算一体运算装置100和多位复用乘加运算装置200的输出结果进行累加。
存算一体运算装置100在进行运算是,先将权重矩阵存入其内的存储单元阵列中,在应用阶段,向该存储单元阵列输入输入数据流,在存储单元阵列中,该输入数据流与权重阵列进行模拟向量-矩阵乘法运算,运算结果以存储单元阵列的输出模拟电压/电流形式传输至存储单元阵列后的ADC,ADC将模拟电压/电流转换为数字信号,该数字信号即为该存算一体运算装置100的输出。
值得说明的是,通过申请人大量研究发现,通常神经网络模型位数比较大且模型具有稀疏性,而芯片实现为了降低运算量,可以对模型精度进行压缩。例如假设神经网络模型精度是12比特,而存算一体芯片是8比特。那么在利用存算一体芯片实现神经网络运算时,无法用8比特芯片来完整地表达神经网络权重精度。如果强行将参数截位至8比特,则很可能会因为精度下降而造成推理结果不准确。为了解决这个问题,在保持存算一体芯片8比特运算能力的条件下,可以考虑将神经网络权重参数(权值)分解为两部分,一部分是低位8比特参数,另一部分是高4位参数。分解的方法有多种,本专利不作限定。然后把这两部分参数分别用存算一体芯片运算装置和稀疏算术运算装置进行处理后,再把结果进行适当的移位后累加,结果等同于原始参数直接运算的结果。通常来说,高精度参数的数量较少,绝大多数参数都可以用8比特来表示,所以大多数神经网络分解出来的高位参数可以看作是一个稀疏矩阵。分解后,神经网络非稀疏的权重参数直接存储于存算一体阵列当中;而稀疏权重矩阵(参加图6,相同填充的块表示同一列中的非0参数值)通常存储于主存里,通过总线传输到多位复用乘加运算装置200。
由于稀疏矩阵的稀疏性,只需要将矩阵中非0参数及其所对应的数据地址输入到多位复用乘加运算装置200。多位复用乘加运算装置200根据数据地址从输入缓存dac_fifo中取出输入数据data与权重数据wt进行卷积运算。稀疏权重数据及地址是以帧的形式通过AHB总线输入的。参见图7,一帧对应稀疏矩阵的一列,包含了帧头、数据段、地址段和帧尾。帧头包含了地址附加信息;数据段为传输的权重数据值;地址段传输权重对应输入数据在缓存中的地址,帧尾表示一列数据的完成,作为eoc信号输入给累加器。具体的传输方式不作限定。
通过采用上述技术方案,在提高运算精度的基础上,降低了能耗,即实现了神经网络运算的高精度低能耗运算。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅是本发明的较佳实施例而已,并非对本发明做任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何本领域技术人员,在不脱离本发明技术方案的范围内,当可利用上述揭示的技术内容做出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
Claims (8)
1.一种多位复用乘加运算装置,其特征在于,用于神经网络运算系统中实现神经网络模型运算,所述神经运算系统包括:多位复用乘加运算装置以及存算一体运算装置,所述存算一体运算装置的输出端连接累加装置,多位复用乘加运算装置的输出端连接移位寄存装置,移位寄存装置的输出端连接累加装置;所述神经网络模型分解后的密集部分通过所述存算一体阵列来实现,神经网络模型分解后的稀疏部分的算术运算由所述多位复用乘加运算装置实现;所述多位复用乘加运算装置根据神经网络稀疏矩阵的实际位宽进行适配,将稀疏矩阵中非0参数及其所对应的数据地址输入到所述多位复用乘加运算装置,所述多位复用乘加运算装置根据数据地址从输入缓存中取出输入数据与权重数据进行卷积运算,其中:所述多位复用乘加运算装置包括:两个多位复用乘法模块、移位寄存模块以及累加模块;
其中一个多位复用乘法模块的输出端连接所述累加模块的第一输入端,另外一个多位复用乘法模块的输出端连接所述移位寄存模块的输入端,所述移位寄存模块的输出端连接所述累加模块的第二输入端;
其中,多位复用乘加运算装置用于执行a×b乘加运算,两个多位复用乘法模块分别用于执行a×c乘法运算和a×d乘法运算,所述移位寄存模块为c位移位寄存器或d位移位寄存器,c+d=b。
2.根据权利要求1所述的多位复用乘加运算装置,其特征在于,所述多位复用乘法模块包括:两个乘法器、移位寄存器以及累加器;
其中一个乘法器的输出端连接所述累加器的第一输入端,另外一个乘法器的输出端连接所述移位寄存器的输入端,所述移位寄存器的输出端连接所述累加器的第二输入端。
3.根据权利要求2所述的多位复用乘加运算装置,其特征在于,所述乘法器的电路结构与所述多位复用乘法模块的电路结构相同。
4.根据权利要求1所述的多位复用乘加运算装置,其特征在于,a=8,b=8,c=d=4,所述多位复用乘法模块包括:两个8×2乘法器、2位移位寄存器以及累加器;
其中一个8×2乘法器的输出端连接所述累加器的第一输入端,另外一个8×2乘法器的输出端连接所述2位移位寄存器的输入端,所述2位移位寄存器的输出端连接所述累加器的第二输入端,所述累加器的输出端作为该多位复用乘法模块的输出端。
5.根据权利要求4所述的多位复用乘加运算装置,其特征在于,工作模式包括:8×8模式、8×4模式以及8×2模式,由模式选择信号控制各元件实现模式切换;
其中,所述模式选择信号根据乘数的有效位数确定。
6.根据权利要求1至5任一项所述的多位复用乘加运算装置,其特征在于,应用于神经网络运算。
7.一种神经网络运算系统,其特征在于,包括:存算一体运算装置、如权利要求1至5任一项所述的多位复用乘加运算装置、移位寄存装置以及累加装置;
所述存算一体运算装置的输入端接收输入数据,输出端连接所述累加装置的第一输入端;所述多位复用乘加运算装置的输入端接收所述输入数据,输出端连接所述移位寄存装置的输入端,输出端连接所述累加装置的第二输入端;
待运算神经网络模型分解后的密集部分通过所述存算一体阵列来实现,神经网络模型分解后的稀疏部分的算术运算由所述多位复用乘加运算装置实现;所述多位复用乘加运算装置根据神经网络稀疏矩阵的实际位宽进行适配,将稀疏矩阵中非0参数及其所对应的数据地址输入到所述多位复用乘加运算装置,所述多位复用乘加运算装置根据数据地址从输入缓存中取出输入数据与权重数据进行卷积运算。
8.一种电子设备,其特征在于,包括如权利要求1至6任一项所述的多位复用乘加运算装置或如权利要求7所述的神经网络运算系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010487031.XA CN111694544B (zh) | 2020-06-02 | 2020-06-02 | 多位复用乘加运算装置、神经网络运算系统以及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010487031.XA CN111694544B (zh) | 2020-06-02 | 2020-06-02 | 多位复用乘加运算装置、神经网络运算系统以及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111694544A CN111694544A (zh) | 2020-09-22 |
CN111694544B true CN111694544B (zh) | 2022-03-15 |
Family
ID=72479145
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010487031.XA Active CN111694544B (zh) | 2020-06-02 | 2020-06-02 | 多位复用乘加运算装置、神经网络运算系统以及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111694544B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113506589B (zh) * | 2021-06-28 | 2022-04-26 | 华中科技大学 | 一种稀疏矩阵存算系统及方法 |
CN113741858B (zh) * | 2021-09-06 | 2024-04-05 | 南京后摩智能科技有限公司 | 存内乘加计算方法、装置、芯片和计算设备 |
CN114997388B (zh) * | 2022-06-30 | 2024-05-07 | 杭州知存算力科技有限公司 | 存算一体芯片用基于线性规划的神经网络偏置处理方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1120696A (zh) * | 1994-05-26 | 1996-04-17 | 摩托罗拉公司 | 多位移位装置,利用多位移位装置的数据处理器及其方法 |
CN1963745A (zh) * | 2006-12-01 | 2007-05-16 | 浙江大学 | 高速分裂式乘累加器mac装置 |
CN104679474A (zh) * | 2015-03-16 | 2015-06-03 | 东南大学 | 有限域gf(2^227)上的乘法器及模乘算法 |
CN107168678A (zh) * | 2017-05-09 | 2017-09-15 | 清华大学 | 一种改进的浮点乘加器及浮点乘加计算方法 |
CN109344964A (zh) * | 2018-08-08 | 2019-02-15 | 东南大学 | 一种适用于神经网络的乘加计算方法和计算电路 |
CN111176609A (zh) * | 2018-11-12 | 2020-05-19 | 三星电子株式会社 | 乘法器及其操作的方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6381624B1 (en) * | 1999-04-29 | 2002-04-30 | Hewlett-Packard Company | Faster multiply/accumulator |
US6820106B1 (en) * | 2000-06-27 | 2004-11-16 | Intel Corporation | Method and apparatus for improving the performance of a floating point multiplier accumulator |
-
2020
- 2020-06-02 CN CN202010487031.XA patent/CN111694544B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1120696A (zh) * | 1994-05-26 | 1996-04-17 | 摩托罗拉公司 | 多位移位装置,利用多位移位装置的数据处理器及其方法 |
CN1963745A (zh) * | 2006-12-01 | 2007-05-16 | 浙江大学 | 高速分裂式乘累加器mac装置 |
CN104679474A (zh) * | 2015-03-16 | 2015-06-03 | 东南大学 | 有限域gf(2^227)上的乘法器及模乘算法 |
CN107168678A (zh) * | 2017-05-09 | 2017-09-15 | 清华大学 | 一种改进的浮点乘加器及浮点乘加计算方法 |
CN109344964A (zh) * | 2018-08-08 | 2019-02-15 | 东南大学 | 一种适用于神经网络的乘加计算方法和计算电路 |
CN111176609A (zh) * | 2018-11-12 | 2020-05-19 | 三星电子株式会社 | 乘法器及其操作的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111694544A (zh) | 2020-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111694544B (zh) | 多位复用乘加运算装置、神经网络运算系统以及电子设备 | |
CN110288086B (zh) | 一种基于Winograd的可配置卷积阵列加速器结构 | |
US11308406B2 (en) | Method of operating neural networks, corresponding network, apparatus and computer program product | |
CN111832719A (zh) | 一种定点量化的卷积神经网络加速器计算电路 | |
CN111814973B (zh) | 一种适用于神经常微分方程网络计算的存内计算系统 | |
CN109325590B (zh) | 用于实现计算精度可变的神经网络处理器的装置 | |
CN112434801B (zh) | 一种按照比特精度进行权重拆分的卷积运算加速方法 | |
CN111240746A (zh) | 一种浮点数据反量化及量化的方法和设备 | |
CN114399036B (zh) | 一种基于一维Winograd算法的高效卷积计算单元 | |
CN113283587A (zh) | 一种Winograd卷积运算加速方法及加速模块 | |
CN115018062A (zh) | 一种基于fpga的卷积神经网络加速器 | |
CN117521752A (zh) | 一种基于fpga的神经网络加速方法及系统 | |
CN117170623A (zh) | 面向神经网络计算的多位宽重构近似张量乘加方法与系统 | |
CN115879530B (zh) | 一种面向rram存内计算系统阵列结构优化的方法 | |
Neelima et al. | FIR Filter design using Urdhva Triyagbhyam based on Truncated Wallace and Dadda Multiplier as Basic Multiplication Unit | |
CN113283591B (zh) | 基于Winograd算法和近似乘法器的高效卷积实现方法及装置 | |
CN110555519A (zh) | 一种基于符号随机计算的低复杂度卷积神经网络 | |
Li et al. | FPGA implementation of LSTM based on automatic speech recognition | |
CN114970831A (zh) | 一种数模混合存算一体化设备 | |
CN114154631A (zh) | 一种基于fpga的卷积神经网络量化实现方法以及装置 | |
CN114065923A (zh) | 一种卷积神经网络的压缩方法、系统及加速装置 | |
CN113313253A (zh) | 神经网络压缩方法、数据处理方法、装置及计算机设备 | |
CN116402106B (zh) | 神经网络加速方法、神经网络加速器、芯片及电子设备 | |
CN112784971A (zh) | 基于数模混合神经元的神经网络运算电路 | |
CN112989269B (zh) | 加速器及加速器片内计算模块 |
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 |