CN111652359A - 用于矩阵运算的乘法器阵列和用于卷积运算的乘法器阵列 - Google Patents
用于矩阵运算的乘法器阵列和用于卷积运算的乘法器阵列 Download PDFInfo
- Publication number
- CN111652359A CN111652359A CN202010447057.1A CN202010447057A CN111652359A CN 111652359 A CN111652359 A CN 111652359A CN 202010447057 A CN202010447057 A CN 202010447057A CN 111652359 A CN111652359 A CN 111652359A
- Authority
- CN
- China
- Prior art keywords
- matrix
- lookup table
- multiplier
- coding
- splitting
- 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
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- 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
Abstract
一种用于矩阵运算的乘法器阵列和用于卷积运算的乘法器阵列,用于将卷积核矩阵与待卷积矩阵进行卷积计算以获取卷积矩阵的乘法器阵列,包括编码器、查找表LUT、乘法器矩阵。其中,编码器先依次对卷积核矩阵的元素的部分积进行编码以获取部分积查找表,并存储至查找表LUT中。乘法器矩阵包括多个乘法单元,每个乘法单元对待卷积矩阵中的一个元素进行拆分,并将拆分获取的多个拆分单元输入给查找表LUT以获取对应的编码值,再将从查找表LUT中获取的多个编码值求和,最后将每个乘法单元获取的和累加以作为卷积矩阵的一个元素。由于采用LUT查表法乘法器代替用于卷积计算的乘加单元,将乘法计算转化为加法计算,可以大大降低乘法器阵列电路的面积和功耗。
Description
技术领域
本发明涉及电子信息以及深度学习技术领域,具体涉及用于矩阵运算的乘法器阵列和用于卷积运算的乘法器阵列。
背景技术
随着基于神经网络的人工智能解决方案的需求越来越多,在一些移动平台如无人机、机器人等都应用卷积神经网络构建,这些都正在深刻的改变人类的生产和生活方式。而对应在卷积神经网络专用硬件设计研究方面,已有基于CPU、GPU、FPGA、ASIC和RRAM等新型器件的实现方式。从云端到移动端,不同应用场景对卷积神经网络的计算能力提出了不同的需求,再加上卷积神经网络的结构多样、数据量大、计算量大,也给硬件实现神经网络算法设计提出了巨大挑战。其中,卷积神经网络的硬件架构的核心是卷积运算的硬件架构。
在现有技术中,一种是应用传统的数字电路进行卷积神经网络卷积运算的硬件架构的电路设计,如FPGA、ASIC、GPU和CPU等。但随着工艺尺寸的减小,电路节点漏电增大、电源电压降低。在一定的计算精度下,就要消耗大量的电路计算资源和存储资源。即整体电路的功耗、面积、速度和精度等性能不断受到限制。另一种是基于新器件进行CNN硬件电路设计实现,如RRAM等。其中,卷积神经网络(CNN)的卷积层在提取输入数据的特征信息方面非常有效,因此CNN具有很高的识别精度,已经在图像识别和自然语言处理等各个领域都有广泛的应用。自2012年AlexNet出现以来,出现了许多具有不同结构的CNN,以提高网络的识别精度。对于现在几乎所有的CNN加速结构都可以简单地分为乘加器阵列和片上存储器两个部分。乘法器是CNN加速芯片中最重要的计算单元,其消耗的功率在CNN加速器中占主导地位,因此如何对乘加器阵列进行优化以降低功耗和功耗面积积(PAP)是热点的研发方向。
发明内容
本申请提供了一种用于矩阵运算的乘法器阵列和用于卷积运算的乘法器阵列以对现有技术中乘加器阵列的不足。
本申请公开的用于矩阵运算的乘法器阵列和用于卷积运算的乘法器阵列具体实施方案如下:
根据第一方面,一种实施例中提供一种用于矩阵运算的乘法器阵列,用于获取被乘数a与乘数矩阵B相乘的积矩阵P,包括:
编码器,用于将被乘数a的部分积进行编码以获取部分积查找表;所述部分积查找表包括编码地址和编码值,每个所述编码地址对应一个所述编码值;每个所述编码值对应一个被乘数a的部分积;
查找表LUT,存储所述部分积查找表,并依据输入所述查找表LUT的编码地址输出所述编码地址相对应的所述编码值;
乘法器矩阵,包括多个乘法单元;每个所述乘法单元用于对所述乘数矩阵B中的一个元素进行拆分,并将拆分获取的多个拆分单元作为所述编码地址输入给所述查找表LUT以获取对应的编码值,再将从所述查找表LUT中获取的多个所述编码值累加求和,以作为所述积矩阵P的一个元素。
进一步,所述乘法单元包括拆分模块、查表模块和累加模块;
所述拆分模块用于对所述乘数矩阵B中的一个元素进行拆分,以获取多个拆分单元;每个所述拆分单元与所述部分积查找表中的一个所述编码地址相同;
所述查表模块用于将每个所述拆分单元作为编码地址输入给所述查找表LUT以获取相应的编码值;
所述累加模块用于获取并将所述查找表LUT输出的所述编码值进行累加求和,以作为所述积矩阵P的一个元素。
进一步,所述编码器基于基-4布什编码方式对输入所述乘法器阵列的被乘数a的部分积进行编码。
进一步,所述编码地址包括“000”、“001”、“010”、“011”、“100”、“101”、“110”、“111”,与所述编码地址对应的被乘数a的部分积包括“0×a”、“1×a”、“1×a”、“2×a”、“-2×a”、“-1×a”、“-1×a”、“0×a”。
进一步,所述拆分模块将所述乘数矩阵B中的一个元素连续的3位为一个拆分单元,每个拆分单元包括高位、本位和低位,其中低位是前一个拆分单元的高位。
根据第二方面,一种实施例中提供一种用于矩阵运算的乘法器阵列,用于获取被乘数矩阵A与乘数矩阵B相乘的积矩阵P,包括:
编码器,用于依次获取所述被乘数矩阵A的元素,并对所述被乘数矩阵A的元素的部分积进行编码以获取部分积查找表;所述部分积查找表包括编码地址和编码值,每个所述编码地址对应一个所述编码值,每个所述编码值对应一个元素的部分积;
查找表LUT,用于存储所述部分积查找表,并依据输入所述查找表LUT的编码地址输出所述编码地址相对应的所述编码值;
乘法器矩阵,包括多个乘法单元,每个所述乘法单元用于对所述乘数矩阵B中的一个元素进行拆分,并将拆分获取的多个拆分单元作为所述编码地址输入给所述查找表LUT以获取对应的编码值,再将从所述查找表LUT中获取的多个所述编码值累加求和,以作为所述积矩阵P的一个元素。
进一步,还包括积矩阵获取模块,用于将所述乘法器矩阵的乘法单元获取的所述积矩阵P的元素按预设规则组建成所述积矩阵P;所述预设规则与所述编码器获取所述被乘数矩阵A的元素的顺序相关。
根据第三方面,一种实施例中提供用于卷积运算的乘法器阵列,用于将卷积核矩阵H与待卷积矩阵X进行卷积计算以获取卷积矩阵P,包括:
编码器,用于依次获取所述卷积核矩阵H的元素,并对所述卷积核矩阵H的元素的部分积进行编码以获取部分积查找表;所述部分积查找表包括编码地址和编码值,每个所述编码地址对应一个所述编码值;每个所述编码值对应一个所述卷积核矩阵H的元素的部分积;
查找表LUT,用于存储所述部分积查找表,并依据输入所述查找表LUT的编码地址输出所述编码地址相对应的所述编码值;
乘法器矩阵,包括多个乘法单元,每个所述乘法单元用于对所述待卷积矩阵X中的一个元素进行拆分,并将拆分获取的多个拆分单元作为所述编码地址输入给所述查找表LUT以获取对应的编码值,再将从所述查找表LUT中获取的多个所述编码值求和;所述乘法器矩阵还用于将每个所述乘法单元获取的和累加以作为所述卷积矩阵P的一个元素。
进一步,所述编码器基于基-4布什编码方式对输入所述编码器的所述卷积核矩阵H的元素的部分积进行编码。
进一步,所述乘法单元包括拆分模块、查表模块和累加模块;
所述拆分模块用于对获取的所述待卷积矩阵X中的元素进行拆分以获取多个拆分单元;每个所述拆分单元与所述部分积查找表中的一个所述编码地址相同;
所述查表模块用于将每个所述拆分单元作为编码地址输入给所述查找表LUT;
所述累加模块用于获取所述查找表LUT输出的所述编码值,并将获取的所述编码值进行累加求和。
依据上述实施例的用于矩阵运算的乘法器阵列和用于卷积运算的乘法器阵列,包括编码器、查找表LUT、乘法器矩阵。其中编码器先依次对卷积核矩阵的元素的部分积进行编码以获取部分积查找表,并存储至查找表LUT中。乘法器矩阵包括多个乘法单元,每个乘法单元对待卷积矩阵中的一个元素进行拆分,并将拆分获取的多个拆分单元输入给查找表LUT以获取对应的编码值,再将从查找表LUT中获取的多个编码值求和,最后将每个乘法单元获取的和累加以作为卷积矩阵的一个元素。由于采用LUT查表法乘法器代替用于卷积计算的乘加单元,将乘法计算转化为加法计算,可以大大降低乘法器阵列电路的面积和功耗。另基于卷积核矩阵驻留乘法器阵列的时间长的特点,对卷积核矩阵的元素进行编码查表,减少了卷积核矩阵输入乘法器阵列的次数,从而提高了卷积计算的运算速度。
附图说明
图1为一种卷积神经网络的结构图;
图2为一种卷积运算示意图;
图3为一种脉动阵列示意图;
图4为一种脉动阵列的计算步骤示意图;
图5为一种实施例中乘法器阵列的结构示意图;
图6为一种实施例中乘法器矩阵的工作流程图;
图7为另一种实施例中乘法器阵列的结构示意图;
图8为另一种实施例中乘法器阵列的结构示意图。
具体实施方式
下面通过具体实施方式结合附图对本发明作进一步详细说明。其中不同实施方式中类似元件采用了相关联的类似的元件标号。在以下的实施方式中,很多细节描述是为了使得本申请能被更好的理解。然而,本领域技术人员可以毫不费力的认识到,其中部分特征在不同情况下是可以省略的,或者可以由其他元件、材料、方法所替代。在某些情况下,本申请相关的一些操作并没有在说明书中显示或者描述,这是为了避免本申请的核心部分被过多的描述所淹没,而对于本领域技术人员而言,详细描述这些相关操作并不是必要的,他们根据说明书中的描述以及本领域的一般技术知识即可完整了解相关操作。
另外,说明书中所描述的特点、操作或者特征可以以任意适当的方式结合形成各种实施方式。同时,方法描述中的各步骤或者动作也可以按照本领域技术人员所能显而易见的方式进行顺序调换或调整。因此,说明书和附图中的各种顺序只是为了清楚描述某一个实施例,并不意味着是必须的顺序,除非另有说明其中某个顺序是必须遵循的。
本文中为部件所编序号本身,例如“第一”、“第二”等,仅用于区分所描述的对象,不具有任何顺序或技术含义。而本申请所说“连接”、“联接”,如无特别说明,均包括直接和间接连接(联接)。
卷积神经网络是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,一般可以分为输入层、隐藏层和输出层,隐藏层又可分为卷积层和采样层。下面用一个具体的实例讲解下卷积神经网络的结构,请参考图1,为一种卷积神经网络的结构图。该卷积神经网络输入的是一张a*a分辨率的图像,例如28*28分辨率的图像。卷积层C1用M个n*n的卷积核对上述图像做卷积运算,获得M个b*b分辨率的图像,一般还会加偏置和激活的操作,便于理解卷积神经网络的结构省略了这两个步骤。采样层S2对卷积层C1获得的M个b*b分辨率的图像进行采样操作获得M个b/2*b/2分辨率的图像。卷积层C3用12个5*5的卷积核对采样层S2获得6个12*12分辨率的图像进行卷积运算,获得12个8*8分辨率的图像。采样层S3对卷积层C3获得的12个8*8分辨率的图像进行采样操作获得12个4*4分辨率的图像。输出层是对采样层S3获得的12个4*4分辨率的图像进行全连接输出,得到图像的12个特征信息。从上述例子中卷积神经网络采用两个卷积层,并且输出层的全连接输出也是一种特殊的卷积运算,所以卷积计算是卷积神经网络的运算的核心。
请参考图2,为一种卷积运算示意图,Xij为待卷积矩阵的元素,Wij为卷积核矩阵的元素,Yij为特征矩阵的元素。待卷积矩阵X与卷积核矩阵W卷积计算后获取特征矩阵Y。i和j为不小于0的整数,用于标记矩阵元素的行列信息,即位置信息。在卷积神经网络中称待卷积矩阵的元素Xij被称为特征值,卷积核矩阵的元素Wij称为权重,如图2所示,表示一个3×3卷积核与6×6的输入特征图进行卷积以获得4×4输出特征图的过程。卷积核中的9个值分别乘以输入特征图中的相应值,然后将获得的9个积求和作为输出特征图的一个元素。为了获得下一个输出特征图的元素,卷积窗口要在输入特征图上按一定的步长滑动,以重复求积取和的操作,最终获得完整的输出特征图。
脉动阵列是上世纪提出的一种结构,但时至今日仍被广泛使用于神经网络加速器中。请参考图3,为一种脉动阵列示意图,脉动阵列包括与卷积核矩阵W的元素Wij数目相同的乘加单元MAC。在每个计算周期中,特征值Xij会广播到脉动阵列中的每个乘加单元MAC中,每个乘加单元MAC中分别存储卷积核矩阵W的元素Wij,即权重值Wij。每个乘加单元MAC将特征值Xij和权重值Wij求积并将结果在下一个周期被发送到相邻的乘加单元MAC中。在每个周期中,每个乘加单元MAC将其自身生成的乘积和相邻乘加单元MAC生成的乘积相加。最终乘加单元MAC产生的结果被发送到FIFO(即图中所示的三角形),以等待下一轮计算。
请参考图4,为一种脉动阵列的计算步骤示意图。在第一个计算周期中,X00同时广播到所有的乘加单元MAC。乘加单元MAC1在第一个计算周期获得X00×W00的乘积P0_0。在下一个计算周期中,X01被广播到所有的乘加单元MAC。同时,在第一个计算周期,由乘加单元MAC1获取的P0_0移至乘加单元MAC2中。乘加单元MAC2将本周期计算出的X01×W01的乘积P0_1与P0_0相加,相加的结果在第三个计算周期移至乘加单元MAC3中。
综上所述,可以观察到脉动阵列进行卷积计算的特征,为了实现高的数据复用率,脉动阵列中的乘加单元中的一个输入(权重)在很长一段时间内保持恒定,另一个输入(特征值)被广播到每个乘加单元中,并与权重相乘。以这种方式,在图2所示的示例中,每个权重被重用16(4×4)次,特征值被重用9(3×3)次。
在本发明实施例中,公开了一种用于将卷积核矩阵与待卷积矩阵进行卷积计算以获取卷积矩阵的乘法器阵列,包括编码器、查找表LUT、乘法器矩阵。其中编码器先依次对卷积核矩阵的元素的部分积进行编码,以获取部分积查找表,并存储至查找表LUT中。乘法器矩阵包括多个乘法单元,每个乘法单元对待卷积矩阵中的一个元素进行拆分,并将拆分获取的多个拆分单元输入给查找表LUT以获取对应的编码值,再将从查找表LUT中获取的多个编码值求和,最后将每个乘法单元获取的和累加以作为卷积矩阵的一个元素。由于采用LUT查表法乘法器代替用于卷积计算的乘加单元,将乘法计算转化为加法计算,可以大大降低乘法器阵列电路的面积和功耗。另基于卷积核矩阵驻留乘法器阵列的时间长的特点,对卷积核矩阵的元素进行编码查表,减少了卷积核矩阵输入乘法器阵列的次数,从而提高了卷积计算的运算速度。
实施例一
请参考图5,为一种实施例中乘法器阵列的结构示意图,包括编码器1、查找表LUT2和乘法器矩阵3,用于获取被乘数a与乘数矩阵B相乘的积矩阵P。其中,编码器1用于将被乘数a的部分积进行编码以获取部分积查找表。部分积查找表包括编码地址和编码值,每个编码地址对应一个编码值,每个编码值对应一个被乘数a的部分积。编码器基于基-4布什编码方式对输入乘法器阵列的被乘数a的部分积进行编码,基-4布什编码被广泛用于有符号数乘法,以减少部分积的数量。假设“a”和“b”是乘数的输入,“p”和“P”分别是部分积和最终结果,则编码规则如下表1所示:
表1
其中,pi是被乘数a的部分积包括“0×a”、“1×a”、“1×a”、“2×a”、“-2×a”、“-1×a”、“-1×a”、“0×a”。编码地址包括“000”、“001”、“010”、“011”、“100”、“101”、“110”、“111”。每个编码地址对应一个被乘数a的部分积,编码地址包括高位bi+1、本位bi和低位bi-1。
查找表LUT2存储部分积查找表,并依据输入查找表LUT的编码地址输出编码地址相对应的编码值。乘法器矩阵3包括多个乘法单元31,;每个乘法单元31用于对乘数矩阵B中的一个元素进行拆分,并将拆分获取的多个拆分单元作为编码地址输入给查找表LUT2以获取对应的编码值,再将从查找表LUT2中获取的多个编码值累加求和,以作为积矩阵P的一个元素。其中,乘法单元31包括拆分模块、查表模块和累加模块。拆分模块用于对乘数矩阵B中的一个元素进行拆分,以获取多个拆分单元。每个拆分单元与部分积查找表中的一个编码地址相同。查表模块用于将每个拆分单元作为编码地址输入给查找表LUT以获取相应的编码值。累加模块用于获取并将查找表LUT2输出的编码值进行累加求和,以作为积矩阵P的一个元素。拆分模块将乘数矩阵B中的一个元素连续的3位为一个拆分单元,每个拆分单元包括高位、本位和低位,其中低位是前一个拆分单元的高位。
一实施例中,乘法器阵列中含有K×K个乘法器单元,为了便于说明,设定K值为3,则一个运算周期可以或取9个积。请参考图6,为一种实施例中乘法器矩阵的工作流程图,每个运算周期包括:
步骤一,输入被乘数a获取部分积查找表并存储在查找表LUT中。编码器根据布什编码产生5个与“a”相关的部分积,他们分别是{0,a,-a,2×a,-2×a},其中,p0=0,p1=a,p2=2×a,p-2=-2×a,p-1=-a。并将
步骤二,乘法器阵列中乘法器单元获取乘数矩阵B的一个元素bij,并进行拆分。如图6所示,如果元素bi会根据布什编码的规则拆分成3位为一组的编码。例如,当“b0”为“00011011”时将会划分成“000”,“011”,“101”和“110”这四组。如果拆分后如果最后一个拆分单元的位数不够,由0进行补位。当数据的位宽为其它值的时候,“bi”仍旧采用相同的方式进行划分,只是划分成组的个数会有所区别。上述拆分方法是元素bi位宽是3位时,当bi位宽为4时,我们需要将bi划分成2组,而位宽为16时,划分成8组。
步骤三,查表。将每个拆分单元输入到查找表LUT中,以获取多个编码值。
步骤四,累加输出。将获取的多个编码值进行累加求和。
在本实施例中,因为“a”是公共的被乘数,所以计算9个积也只需要一个编码器,由于乘法器单元不需进行乘法计算,只需寻址累加计算,大大减少了乘法器阵列的芯片面积和功率。一实施中,当有多个被乘数时,可包括多个编码器,每个编码器可对应一个被乘数。
在本实施例中,公开了一种用于获取被乘数a与乘数矩阵B相乘的积矩阵P,包括编码器、查找表LUT、乘法器矩阵。其中,编码器先将被乘数a的部分积进行编码以获取部分积查找表,并存储至查找表LUT中。乘法器矩阵包括多个乘法单元,每个乘法单元对乘数B矩阵中的一个元素进行拆分,并将拆分获取的多个拆分单元输入给查找表LUT以获取对应的编码值,再将从查找表LUT中获取的多个编码值求和,最后将每个乘法单元获取的和累加以作为积矩阵P的一个元素。由于采用LUT查表法乘法器代替用于矩阵运算的乘加单元,将乘法计算转化为加法计算,可以大大降低乘法器阵列电路的面积和功耗。
实施例二
请参考图7,为另一种实施例中乘法器阵列的结构示意图,本申请还公开了一种用于矩阵运算的乘法器阵列,以用于获取被乘数矩阵A与乘数矩阵B相乘的积矩阵P,包括编码器1、查找表LUT2和乘法器矩阵3。编码器1用于依次获取被乘数矩阵A的元素,并对被乘数矩阵A的元素的部分积进行编码以获取部分积查找表。部分积查找表包括编码地址和编码值,每个编码地址对应一个编码值,每个编码值对应一个元素的部分积。如图7所示,aij为依次输入乘法器阵列的被乘数矩阵A的一个元素。查找表LUT2用于存储部分积查找表,并依据输入查找表LUT的编码地址输出编码地址相对应的编码值。乘法器矩阵3,包括多个乘法单元31,每个乘法单元31用于对乘数矩阵B中的一个元素进行拆分,并将拆分获取的多个拆分单元作为编码地址输入给查找表LUT以获取对应的编码值,再将从查找表LUT中获取的多个编码值累加求和,以作为积矩阵P的一个元素。一实施例中乘法器阵列还包括积矩阵获取模块4,用于将乘法器矩阵3的乘法单元31获取的积矩阵P的元素按预设规则组建成积矩阵P。其中,预设规则与编码器1获取被乘数矩阵A的元素aij的顺序相关。
实施例三
请参考图8,为另一种实施例中乘法器阵列的结构示意图,用于将卷积核矩阵H与待卷积矩阵X进行卷积计算以获取卷积矩阵P,包括编码器1、查找表LUT2和乘法器矩阵3。编码器用于依次获取卷积核矩阵H的元素,并对卷积核矩阵H的元素的部分积进行编码以获取部分积查找表,部分积查找表包括编码地址和编码值,每个编码地址对应一个编码值,每个编码值对应一个卷积核矩阵H的元素的部分积。查找表LUT2用于存储部分积查找表,并依据输入查找表LUT的编码地址输出编码地址相对应的编码值。乘法器矩阵3包括多个乘法单元31,每个乘法单元用于对待卷积矩阵X中的一个元素进行拆分,并将拆分获取的多个拆分单元作为编码地址输入给查找表LUT2以获取对应的编码值,再将从查找表LUT2中获取的多个编码值求和。乘法器矩阵3还用于将每个乘法单元31获取的和累加以作为卷积矩阵P的一个元素。一实施例中,编码器1基于基-4布什编码方式对输入编码器1的卷积核矩阵H的元素的部分积进行编码。
乘法单元31包括拆分模块、查表模块和累加模块。其中,拆分模块用于对获取的待卷积矩阵X中的元素进行拆分以获取多个拆分单元,每个拆分单元与部分积查找表中的一个编码地址相同。查表模块用于将每个拆分单元31作为编码地址输入给查找表LUT2。累加模块用于获取查找表LUT2输出的编码值,并将获取的编码值进行累加求和。
在本实施例中,乘法器阵列的工作流程与实施例一中的步骤相同,区别仅在于编码器依次获取卷积核矩阵H的元素H(i,j),并对输入编码器的卷积核矩阵H的元素H(i,j)的部分积进行编码来获取部分积查找表,这里不再赘述。一实施例中,将乘法器阵列应用于卷积神经网络加速器中,则如图8所示,卷积核矩阵H的元素H(i,j)对应所有乘法单元共享的那个参数,对应CNN中的特征值。图中的Xi是在某一段时间内,固定在乘法单元中的那一个参数,对应CNN中的权重。在该乘法器阵列进行卷积运算的第一步中,每输入一个H(i,j)的值,就会对预先算出的部分积编码存放在查找表LUT中。每输入一个新的H(i,j)值,查找表LUT中的内容就会被更新。此外,为了节省面积,整个乘法器阵列只有一个查找表LUT。这9个乘法单元将共用这一个查找表LUT。在本实施例中,当乘法器阵列工作的时候,乘法器阵列一个周期可以产生9个积,由于H(i,j)是公共的被乘数,所以计算9个积也只需要一个编码器,如果待卷积矩阵X的元素数量与乘法单元的数量相同,则Xi的值会在结束当轮卷积运算之前都保持不动,因此在整个卷积计算的过程中,由Xi产生的各个编码地址都是固定的,也就是说每一次Xi的每一个组编码地址都会从固定的查找表LUT的地址读取编码值,这有效的降低了乘法器阵列的电路反转概率,从而达到降低功耗的目的。
应用本实施例的基于LUT的乘法器阵列,提前算出所有可能的部分积,并将其存放于查找表LUT中,而查找表LUT中存储的部分积会被多次复用,以减少电路的反转,降低电路功耗。一实施例中,在65nm工艺和不同的频率(10MHz至500MHz)要求下分别设计了4位宽,8位宽和16位宽的乘法器阵列,与现有的其他乘法器比较,我们的乘法器阵列可以降低功耗23.34%,功耗面积积(PAP)可降低33.26%。
以上应用了具体个例对本发明进行阐述,只是用于帮助理解本发明,并不用以限制本发明。对于本发明所属技术领域的技术人员,依据本发明的思想,还可以做出若干简单推演、变形或替换。
Claims (10)
1.一种用于矩阵运算的乘法器阵列,其特征在于,用于获取被乘数a与乘数矩阵B相乘的积矩阵P,包括:
编码器,用于将被乘数a的部分积进行编码以获取部分积查找表;所述部分积查找表包括编码地址和编码值,每个所述编码地址对应一个所述编码值;每个所述编码值对应一个被乘数a的部分积;
查找表LUT,存储所述部分积查找表,并依据输入所述查找表LUT的编码地址输出所述编码地址相对应的所述编码值;
乘法器矩阵,包括多个乘法单元;每个所述乘法单元用于对所述乘数矩阵B中的一个元素进行拆分,并将拆分获取的多个拆分单元作为所述编码地址输入给所述查找表LUT以获取对应的编码值,再将从所述查找表LUT中获取的多个所述编码值累加求和,以作为所述积矩阵P的一个元素。
2.如权利要求1所述的乘法器阵列,其特征在于,所述乘法单元包括拆分模块、查表模块和累加模块;
所述拆分模块用于对所述乘数矩阵B中的一个元素进行拆分,以获取多个拆分单元;每个所述拆分单元与所述部分积查找表中的一个所述编码地址相同;
所述查表模块用于将每个所述拆分单元作为编码地址输入给所述查找表LUT以获取相应的编码值;
所述累加模块用于获取并将所述查找表LUT输出的所述编码值进行累加求和,以作为所述积矩阵P的一个元素。
3.如权利要求1所述的乘法器阵列,其特征在于,所述编码器基于基-4布什编码方式对输入所述乘法器阵列的被乘数a的部分积进行编码。
4.如权利要求3所述的乘法器阵列,其特征在于,所述编码地址包括“000”、“001”、“010”、“011”、“100”、“101”、“110”、“111”,与所述编码地址对应的被乘数a的部分积包括“0×a”、“1×a”、“1×a”、“2×a”、“-2×a”、“-1×a”、“-1×a”、“0×a”。
5.如权利要求3所述的乘法器阵列,其特征在于,所述拆分模块将所述乘数矩阵B中的一个元素连续的3位为一个拆分单元,每个拆分单元包括高位、本位和低位,其中低位是前一个拆分单元的高位。
6.一种用于矩阵运算的乘法器阵列,其特征在于,用于获取被乘数矩阵A与乘数矩阵B相乘的积矩阵P,包括:
编码器,用于依次获取所述被乘数矩阵A的元素,并对所述被乘数矩阵A的元素的部分积进行编码以获取部分积查找表;所述部分积查找表包括编码地址和编码值,每个所述编码地址对应一个所述编码值,每个所述编码值对应一个元素的部分积;
查找表LUT,用于存储所述部分积查找表,并依据输入所述查找表LUT的编码地址输出所述编码地址相对应的所述编码值;
乘法器矩阵,包括多个乘法单元,每个所述乘法单元用于对所述乘数矩阵B中的一个元素进行拆分,并将拆分获取的多个拆分单元作为所述编码地址输入给所述查找表LUT以获取对应的编码值,再将从所述查找表LUT中获取的多个所述编码值累加求和,以作为所述积矩阵P的一个元素。
7.如权利要求6所述的乘法器阵列,其特征在于,还包括积矩阵获取模块,用于将所述乘法器矩阵的乘法单元获取的所述积矩阵P的元素按预设规则组建成所述积矩阵P;所述预设规则与所述编码器获取所述被乘数矩阵A的元素的顺序相关。
8.一种用于卷积运算的乘法器阵列,其特征在于,用于将卷积核矩阵H与待卷积矩阵X进行卷积计算以获取卷积矩阵P,包括:
编码器,用于依次获取所述卷积核矩阵H的元素,并对所述卷积核矩阵H的元素的部分积进行编码以获取部分积查找表;所述部分积查找表包括编码地址和编码值,每个所述编码地址对应一个所述编码值;每个所述编码值对应一个所述卷积核矩阵H的元素的部分积;
查找表LUT,用于存储所述部分积查找表,并依据输入所述查找表LUT的编码地址输出所述编码地址相对应的所述编码值;
乘法器矩阵,包括多个乘法单元,每个所述乘法单元用于对所述待卷积矩阵X中的一个元素进行拆分,并将拆分获取的多个拆分单元作为所述编码地址输入给所述查找表LUT以获取对应的编码值,再将从所述查找表LUT中获取的多个所述编码值求和;所述乘法器矩阵还用于将每个所述乘法单元获取的和累加以作为所述卷积矩阵P的一个元素。
9.如权利要求8所述的乘法器阵列,其特征在于,所述编码器基于基-4布什编码方式对输入所述编码器的所述卷积核矩阵H的元素的部分积进行编码。
10.如权利要求8所述的乘法器阵列,其特征在于,所述乘法单元包括拆分模块、查表模块和累加模块;
所述拆分模块用于对获取的所述待卷积矩阵X中的元素进行拆分以获取多个拆分单元;每个所述拆分单元与所述部分积查找表中的一个所述编码地址相同;
所述查表模块用于将每个所述拆分单元作为编码地址输入给所述查找表LUT;
所述累加模块用于获取所述查找表LUT输出的所述编码值,并将获取的所述编码值进行累加求和。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010447057.1A CN111652359B (zh) | 2020-05-25 | 2020-05-25 | 用于矩阵运算的乘法器阵列和用于卷积运算的乘法器阵列 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010447057.1A CN111652359B (zh) | 2020-05-25 | 2020-05-25 | 用于矩阵运算的乘法器阵列和用于卷积运算的乘法器阵列 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111652359A true CN111652359A (zh) | 2020-09-11 |
CN111652359B CN111652359B (zh) | 2023-05-02 |
Family
ID=72348281
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010447057.1A Active CN111652359B (zh) | 2020-05-25 | 2020-05-25 | 用于矩阵运算的乘法器阵列和用于卷积运算的乘法器阵列 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111652359B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112633489A (zh) * | 2020-12-30 | 2021-04-09 | 深圳大普微电子科技有限公司 | 一种查找表lut的合并方法、装置及设备 |
CN113032723A (zh) * | 2021-05-25 | 2021-06-25 | 广东省新一代通信与网络创新研究院 | 一种矩阵乘法器的实现方法及矩阵乘法器装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109102069A (zh) * | 2018-07-20 | 2018-12-28 | 西安邮电大学 | 一种基于查找表的快速图像卷积运算实现方法 |
CN109753268A (zh) * | 2017-11-08 | 2019-05-14 | 北京思朗科技有限责任公司 | 多粒度并行运算乘法器 |
CN110070178A (zh) * | 2019-04-25 | 2019-07-30 | 北京交通大学 | 一种卷积神经网络计算装置及方法 |
CN110580519A (zh) * | 2019-08-19 | 2019-12-17 | 中国科学院计算技术研究所 | 一种卷积运算结构及其方法 |
-
2020
- 2020-05-25 CN CN202010447057.1A patent/CN111652359B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109753268A (zh) * | 2017-11-08 | 2019-05-14 | 北京思朗科技有限责任公司 | 多粒度并行运算乘法器 |
CN109102069A (zh) * | 2018-07-20 | 2018-12-28 | 西安邮电大学 | 一种基于查找表的快速图像卷积运算实现方法 |
CN110070178A (zh) * | 2019-04-25 | 2019-07-30 | 北京交通大学 | 一种卷积神经网络计算装置及方法 |
CN110580519A (zh) * | 2019-08-19 | 2019-12-17 | 中国科学院计算技术研究所 | 一种卷积运算结构及其方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112633489A (zh) * | 2020-12-30 | 2021-04-09 | 深圳大普微电子科技有限公司 | 一种查找表lut的合并方法、装置及设备 |
CN112633489B (zh) * | 2020-12-30 | 2024-03-22 | 深圳大普微电子科技有限公司 | 一种查找表lut的合并方法、装置及设备 |
CN113032723A (zh) * | 2021-05-25 | 2021-06-25 | 广东省新一代通信与网络创新研究院 | 一种矩阵乘法器的实现方法及矩阵乘法器装置 |
CN113032723B (zh) * | 2021-05-25 | 2021-08-10 | 广东省新一代通信与网络创新研究院 | 一种矩阵乘法器的实现方法及矩阵乘法器装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111652359B (zh) | 2023-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11308406B2 (en) | Method of operating neural networks, corresponding network, apparatus and computer program product | |
CN107423816B (zh) | 一种多计算精度神经网络处理方法和系统 | |
CN111652360B (zh) | 一种基于脉动阵列的卷积运算装置 | |
CN110543939B (zh) | 一种基于fpga的卷积神经网络后向训练的硬件加速实现装置 | |
JPH0526229B2 (zh) | ||
CN111796796B (zh) | 基于稀疏矩阵乘法的fpga存储方法、计算方法、模块和fpga板 | |
CN111652359A (zh) | 用于矩阵运算的乘法器阵列和用于卷积运算的乘法器阵列 | |
CN112257844B (zh) | 一种基于混合精度配置的卷积神经网络加速器及其实现方法 | |
CN109389208B (zh) | 数据的量化装置及量化方法 | |
US7912891B2 (en) | High speed low power fixed-point multiplier and method thereof | |
CN111428863A (zh) | 一种基于近似乘法器的低功耗卷积运算电路 | |
Meher et al. | New systolic algorithm and array architecture for prime-length discrete sine transform | |
CN111275167A (zh) | 一种用于二值卷积神经网络的高能效脉动阵列架构 | |
CN111882028B (zh) | 用于卷积神经网络的卷积运算装置 | |
CN109389209B (zh) | 处理装置及处理方法 | |
CN115879530B (zh) | 一种面向rram存内计算系统阵列结构优化的方法 | |
CN110458277B (zh) | 适用于深度学习硬件加速器的可配置精度的卷积硬件结构 | |
CN116257210A (zh) | 一种基于概率计算的空间并行混合乘法器及其工作方法 | |
US11928176B2 (en) | Time domain unrolling sparse matrix multiplication system and method | |
CN115913245A (zh) | 数据编码方法、数据解码方法以及数据处理装置 | |
CN113988279A (zh) | 一种支持负值激励的存算阵列输出电流读出方法及系统 | |
CN112784971A (zh) | 基于数模混合神经元的神经网络运算电路 | |
CN114418104A (zh) | 一种量子应用问题的处理方法及装置 | |
RU2279132C2 (ru) | Нейронная сеть конечного кольца | |
CN111126580B (zh) | 采用Booth编码的多精度权重系数神经网络加速芯片运算装置 |
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 |