CN115545157A - 二维卷积计算硬件构架及基于其的流水式二维卷积计算方法 - Google Patents
二维卷积计算硬件构架及基于其的流水式二维卷积计算方法 Download PDFInfo
- Publication number
- CN115545157A CN115545157A CN202211167129.2A CN202211167129A CN115545157A CN 115545157 A CN115545157 A CN 115545157A CN 202211167129 A CN202211167129 A CN 202211167129A CN 115545157 A CN115545157 A CN 115545157A
- Authority
- CN
- China
- Prior art keywords
- calculation
- dimensional convolution
- data
- convolution
- input
- 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
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
-
- 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)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种二维卷积计算硬件构架及基于其的流水式二维卷积计算方法,包括权重寄存器和二维卷积计算流水线;二维卷积计算流水线内含P级计算单元,每一级计算单元包含一维卷积硬件和中间结果寄存器组;一维卷积硬件包括N组乘累加单元,其中每组乘累加单元包含Q个乘法器和1个加法树;权重寄存器设置于每一级计算单元内部,前一级计算单元的N个计算结果寄存于中间结果寄存器组中,并在下一周期累加至后一级计算单元的中间结果寄存器组中,最后经最后一级计算单元的中间结果寄存器组输出。基于本发明提出的二维卷积计算硬件构架,可以高效利用输入特征图数据和卷积核权重,极大地提高了二维卷积计算的数据复用率。
Description
技术领域
本发明涉及深度学习技术领域,尤其是一种二维卷积计算硬件构架及基于其的流水式二维卷积计算方法。
背景技术
卷积神经网络是近年来流行的神经网络模型,在图像智能处理、计算机视觉等领域有着非常广泛地应用。在嵌入式及边缘侧应用中,对神经网络模型推理能效与性能要求非常高,使用CPU、GPU等传统器件已经无法满足这些应用场景的需求。因此,使用专门针对深度学习模型推理而设计的人工智能处理器成为必须,而专用人工智能处理器也成为近年来研究与创新的热点。而卷积神经网络是目前深度学习模型中应用最为广泛的神经网络,人工智能处理器的设计必须高效支持卷积神经网络的推理。
目前,专用人工智能推理处理器,大多设计为SOC的形式,其中包含CPU和深度学习加速核。CPU和深度学习加速核之间通过片上总线相连,CPU作为主控核心,可以控制深度学习加速核的执行。CPU用来执行通用软件,具有很高的灵活性,可以运行操作系统以及操作系统之上的各种软件;而深度学习加速核仅用于执行数值计算密集的深度学习模型推理。CPU执行驱动软件,根据模型的配置,生成计算命令,并把计算命令发送至深度学习加速核,配置权重数据、输入数据、结果数据的存储地址,由深度学习加速核完成深度学习模型的推理。
为了高效支持深度学习模型的推理,深度学习加速核内部设置大量硬件计算单元,如乘法器、加法树等。这些计算器件可以同时并行工作,因而可以高效支持数值密集的深度学习模型推理。
与此同时,深度学习加速核还要利用深度学习模型的计算特点,尽量使导入深度学习加速核的数据被多次利用,提高数据的复用率,减少数据的流动;这是因为,消耗在数据流动上的能量远大于消耗在数据计算上的能量,参照图1所示。而在以卷积神经网络为代表的深度学习模型推理过程中,同一个数据大概率会在多次计算中使用,若不能提高数据的复用率,数据将在深度学习加速核与DDR中反复导入导出,造成大量能量的浪费,增加人工智能芯片的功耗,降低人工智能芯片的效能。
发明内容
针对上述技术问题,本发明提出一种二维卷积计算硬件构架及基于其的流水式二维卷积计算方法,可以高效利用数据,极大地提高数据复用率。
本发明保护一种二维卷积计算硬件构架,输入特征图尺寸为Hx×Wx,卷积核尺寸R×C,其特征在于,包括权重寄存器和二维卷积计算流水线;
二维卷积计算流水线内含P级计算单元,每一级计算单元包含一维卷积硬件和中间结果寄存器组;一维卷积硬件包括N组乘累加单元,其中每组乘累加单元包含Q个乘法器和1个加法树,其中P=R或C;当P=R时则Q=C,当P=C时则Q=R;N等于每一级计算单元输出的计算结果的个数,中间结果寄存器组中的寄存器数量等于N;
权重寄存器设置于每一级计算单元内部,前一级计算单元的N个计算结果寄存于中间结果寄存器组,并在下一周期对应累加至后一级计算单元的中间结果寄存器组中,最后经最后一级计算单元的中间结果寄存器组输出。
优选的,二维卷积计算硬件构架还包括由机器指令配置的数据填充单元,当需要进行边缘数据填充时,由数据填充单元根按照机器指令的配置给出填充数据后,与输入特征图一同送入二维卷积计算流水线。
优选的,当输出通道数量大于1时,二维卷积计算硬件构架内含多个二维卷积计算流水线,多输出通道二维卷积运算中不同输出通道的卷积核权重存入对应二维卷积计算流水线的对应权重寄存器中,输入特征图广播至所有二维卷积计算流水线,每个二维卷积计算流水线的输出结果存储至累加存储器,用于多个输出通道卷积运算的并行处理。
优选的,乘法器采用电路复用的方式,同时支持8位计算和16位计算的乘法器;当乘法器复用为同时计算多个8位计算时,同时传入多个输入通道的特征图数据,权重寄存器同时存储针对多个输入通道的权重数据,乘法器同时计算多个输入通道的二维卷积,加法树分别对同一位置的多个输入通道卷积结果进行累加,得到多个输入通道的二维卷积结果累加和。
本发明还保护基于上述二维卷积计算硬件构架的流水式二维卷积计算方法,
当P=C时,卷积核权重以列为单位分别输入对应级计算单元,输入特征图以列为单位依序按周期广播至所有计算单元,即每个周期将一列N+R-1个数据广播至所有计算单元,直至完成整个二维卷积运算;当Hx+T>N+R-1时,将输入特征图以N+R-1行为单位划分为多个横向条带,进行分批处理,其中T为填充数据行数,由具体二维卷积计算填充方式确定;相邻横向条带存在R-1行数据的重复。
当P=R时,卷积核权重以行为单位分别输入对应级计算单元,输入特征图以行为单位依序按周期广播至所有计算单元,即每个周期将一行N+C-1个数据广播至所有计算单元,直至完成二维卷积运算;当Wx+T>N+C-1时,将输入特征图以N+C-1列为单位划分为多个纵向条带,进行分批处理,其中T为填充数据列数,由具体二维卷积计算填充方式确定;相邻纵向条带存在C-1列数据的重复。
基于本发明提出的二维卷积计算硬件构架,可以高效实现二维卷积计算时输入特征图数据和卷积核权重的数据复用,极大地提高了二维卷积计算的数据复用率;对于多输入通道多输出通道的二维卷积计算,在计算不同输出通道的卷积结果时,极大限度地实现输入特征图数据的复用,提高了数据复用率。
附图说明
图1为现有技术中不同类型数据计算操作或传输的能量消耗比例示意图;
图2为实施例1公开的二维卷积计算硬件构架示意图;
图3为尺寸为2×3的卷积核窗口在尺寸为4×6的输入特征图上滑动示意图;
图4为尺寸为4×6的输入特征图与尺寸为2×3的卷积核进行卷积运算得到3×4输出特征图的示意图;
图5为实施例2公开的二维卷积计算硬件构架示意图;
图6为二维卷积计算硬件架构在N=6时的单个计算单元内部结构示意图;
图7为针对实施例1的二维卷积计算硬件构架,当输入特征图Hx=7时的划分示意图;
图8为针对实施例2的二维卷积计算硬件构架,当输入特征图Wx=10时的划分示意图;
图9为带有数据填充单元的二维卷积硬件构架示意图;
图10为卷积核尺寸为3×3时,进行边缘数据填充的输入特征图按行划分示意图;
图11为卷积核尺寸为3×3时,进行边缘数据填充的输入特征图按列划分示意图;
图12为现有技术中多输入通道多输出通道的二维卷积计算的输入特征图和卷积核的表述方式示意图;
图13为现有技术中多输入通道多输出通道的二维卷积计算的计算过程示意图;
图14为利用单个二维卷积计算流水线进行多输入通道多输出通道二维卷积计算的硬件构架示意图;
图15为利用多个二维卷积计算流水线进行多输入通道多输出通道二维卷积计算的硬件构架示意图;
图16为现有技术中由4个8位乘法器组合起来完成的16位乘法电路图;
图17为乘法器复用为4个8位乘法器时,输入特征图传入硬件架构某级计算单元的数据流动示意图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步详细的说明。本发明的实施例是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显而易见的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。
实施例1
一种二维卷积计算硬件构架,包括权重寄存器和二维卷积计算流水线。本实施例设定卷积核尺寸为2×3(即R=2,C=3),二维卷积计算流水线内含3级计算单元(P=C),每一级计算单元包含一维卷积硬件和中间结果寄存器组,一维卷积硬件包括3组乘累加单元(根据每一级计算单元输出的计算结果的个数设定,本实施例N=3),其中每组乘累加单元包含2个乘法器(Q=R)和1个加法树;权重寄存器设置于每一级计算单元内部,前一级计算单元的中间结果寄存器组中存储的N个计算结果,在下一周期累加至后一级计算单元的中间结果寄存器组中,经最后一级计算单元的中间结果寄存器组输出,参照图2。
基于卷积概念可知,在不进行边缘数据填充的情况下,尺寸为4×6的输入特征图与尺寸为2×3的卷积核进行卷积运算,会得到尺寸为3×4的输出特征图,如图3-4所示。下面就以尺寸为4×6的输入特征图为例,对上述二维卷积计算硬件构架如何实现流水式二维卷积计算方法进行展开阐述。
首先明确,在本发明的二维卷积计算过程中,卷积核权重固定存储于本发明提出的硬件构架内的寄存器中,输入特征图数据存储在二维卷积硬件架构外的某片上存储器中,根据实际需求送入对应乘累加单元的对应乘法器,卷积核权重对应送入每组乘累加单元的对应乘法器。
第一周期,输入特征图的第一列数据X1,1、X2,1、X3,1、X4,1输入该构架,并广播至三级计算单元,第一级计算单元计算第一列卷积核权重W1,1、W2,1在输入特征图第一列数据上滑动的计算结果并存入第一级寄存器组。
X1,1*W1,1+X2,1*W2,1
X2,1*W1,1+X3,1*W2,1
X3,1*W1,1+X4,1*W2,1
第二周期,输入特征图的第二列数据X1,2、X2,2、X3,2、X4,2输入该构架,并广播至三级计算单元,第二级计算单元计算第二列卷积核权重W1,2、W2,2在输入特征图第二列数据上滑动的计算结果。
X1,2*W1,2+X2,2*W2,2
X2,2*W1,2+X3,2*W2,2
X3,2*W1,2+X4,2*W2,2
上述计算结果与第一级寄存器组寄存的第一周期的计算结果相加,并存入第二寄存器组。
X1,1*W1,1+X2,1*W2,1+X1,2*W1,2+X2,2*W2,2
X2,1*W1,1+X3,1*W2,1+X2,2*W1,2+X3,2*W2,2
X3,1*W1,1+X4,1*W2,1+X3,2*W1,2+X4,2*W2,2
与此同时,第一级计算单元计算第一列卷积核权重W1,1、W2,1在输入特征图第二列数据上滑动的计算结果并存入第一级寄存器组。
X1,2*W1,1+X2,2*W2,1
X2,2*W1,1+X3,2*W2,1
X3,2*W1,1+X4,2*W2,1
第三周期,输入特征图的第三列数据X1,3、X2,3、X3,3、X4,3输入该构架,并广播至三级计算单元,第三级计算单元计算第三列卷积核权重W1,3、W2,3在输入特征图第三列数据上滑动的计算结果。
X1,3*W1,3+X2,3*W2,3
X2,3*W1,3+X3,3*W2,3
X3,3*W1,3+X4,3*W2,3
上述计算结果与第二级寄存器组寄存的第二周期的计算结果相加,继而得到输出特征图的第一列数据Y1,1、Y2,1、Y3,1,存入第三寄存器组并从该硬件架构输出。
Y1,1=X1,1*W1,1+X2,1*W2,1+X1,2*W1,2+X2,2*W2,2+X1,3*W1,3+X2,3*W2,3
Y2,1=X2,1*W1,1+X3,1*W2,1+X2,2*W1,2+X3,2*W2,2+X2,3*W1,3+X3,3*W2,3
Y3,1=X3,1*W1,1+X4,1*W2,1+X3,2*W1,2+X4,2*W2,2+X3,3*W1,3+X4,3*W2,3
与此同时,第二级计算单元计算第二列卷积核权重W1,2、W2,2在输入特征图第三列数据上滑动的计算结果。
X1,3*W1,2+X2,3*W2,2
X2,3*W1,2+X3,3*W2,2
X3,3*W1,2+X4,3*W2,2
上述计算结果与第一级寄存器组寄存的第二周期的计算结果相加,并存入第二寄存器组。
X1,2*W1,1+X2,2*W2,1+X1,3*W1,2+X2,3*W2,2
X2,2*W1,1+X3,2*W2,1+X2,3*W1,2+X3,3*W2,2
X3,2*W1,1+X4,2*W2,1+X3,3*W1,2+X4,3*W2,2
与此同时,第一级计算单元计算第一列卷积核权重W1,1、W2,1在输入特征图第三列数据上滑动的计算结果并存入第一级寄存器组。
X1,3*W1,1+X2,3*W2,1
X2,3*W1,1+X3,3*W2,1
X3,3*W1,1+X4,3*W2,1
第四周期,输入特征图的第四列数据X1,4、X2,4、X3,4、X4,4输入该构架,并广播至三级计算单元,第三级计算单元计算第三列卷积核权重W1,3、W2,3在输入特征图第四列数据上滑动的计算结果。
X1,4*W1,3+X2,4*W2,3
X2,4*W1,3+X3,4*W2,3
X3,4*W1,3+X4,4*W2,3
上述计算结果与第二级寄存器组寄存的第三周期的计算结果相加,继而得到输出特征图的第二列数据Y1,2、Y2,2、Y3,2,存入第三寄存器组并从该硬件架构输出。
Y1,2=X1,2*W1,1+X2,2*W2,1+X1,3*W1,2+X2,3*W2,2+X1,4*W1,3+X2,4*W2,3
Y2,2=X2,2*W1,1+X3,2*W2,1+X2,3*W1,2+X3,3*W2,2+X2,4*W1,3+X3,4*W2,3
Y3,2=X3,2*W1,1+X4,2*W2,1+X3,3*W1,2+X4,3*W2,2+X3,4*W1,3+X4,4*W2,3
与此同时,第二级计算单元计算第二列卷积核权重W1,2、W2,2在输入特征图第四列数据上滑动的计算结果。
X1,4*W1,2+X2,4*W2,2
X2,4*W1,2+X3,4*W2,2
X3,4*W1,2+X4,4*W2,2
上述计算结果与第一级寄存器组寄存的第三周期的计算结果相加,并存入第二寄存器组。
X1,3*W1,1+X2,3*W2,1+X1,4*W1,2+X2,4*W2,2
X2,3*W1,1+X3,3*W2,1+X2,4*W1,2+X3,4*W2,2
X3,3*W1,1+X4,3*W2,1+X3,4*W1,2+X4,4*W2,2
与此同时,第一级计算单元计算第一列卷积核权重W1,1、W2,1在输入特征图第四列数据上滑动的计算结果并存入第一级寄存器组。
X1,4*W1,1+X2,4*W2,1
X2,4*W1,1+X3,4*W2,1
X3,4*W1,1+X4,4*W2,1
第五周期,输入特征图的第五列数据X1,5、X2,5、X3,5、X4,5输入该构架,并广播至三级计算单元,第三级计算单元计算第三列卷积核权重W1,3、W2,3在输入特征图第五列数据上滑动的计算结果。
X1,5*W1,3+X2,5*W2,3
X2,5*W1,3+X3,5*W2,3
X3,5*W1,3+X4,5*W2,3
上述计算结果与第二级寄存器组寄存的第四周期的计算结果相加,继而得到输出特征图的第三列数据Y1,3、Y2,3、Y3,3,存入第三寄存器组并从该硬件架构输出。
Y1,3=X1,3*W1,1+X2,3*W2,1+X1,4*W1,2+X2,4*W2,2+X1,5*W1,3+X2,5*W2,3
Y2,3=X2,3*W1,1+X3,3*W2,1+X2,4*W1,2+X3,4*W2,2+X2,5*W1,3+X3,5*W2,3
Y3,3=X3,3*W1,1+X4,3*W2,1+X3,4*W1,2+X4,4*W2,2+X3,5*W1,3+X4,5*W2,3
与此同时,第二级计算单元计算第二列卷积核权重W1,2、W2,2在输入特征图第五列数据上滑动的计算结果。
X1,5*W1,2+X2,5*W2,2
X2,5*W1,2+X3,5*W2,2
X3,5*W1,2+X4,5*W2,2
上述计算结果与第一级寄存器组寄存的第四周期的计算结果相加,并存入第二寄存器组。
X1,4*W1,1+X2,4*W2,1+X1,5*W1,2+X2,5*W2,2
X2,4*W1,1+X3,4*W2,1+X2,5*W1,2+X3,5*W2,2
X3,4*W1,1+X4,4*W2,1+X3,5*W1,2+X4,5*W2,2
与此同时,第一级计算单元计算第一列卷积核权重W1,1、W2,1在输入特征图第五列数据上滑动的计算结果并存入第一级寄存器组。
X1,5*W1,1+X2,5*W2,1
X2,5*W1,1+X3,5*W2,1
X3,5*W1,1+X4,5*W2,1
第六周期,输入特征图的第六列数据X1,6、X2,6、X3,6、X4,6输入该构架,并广播至三级计算单元,第三级计算单元计算第三列卷积核权重W1,3、W2,3在输入特征图第六列数据上滑动的计算结果。
X1,6*W1,3+X2,6*W2,3
X2,6*W1,3+X3,6*W2,3
X3,6*W1,3+X4,6*W2,3
上述计算结果与第二级寄存器组寄存的第五周期的计算结果相加,继而得到输出特征图的第四列数据Y1,4、Y2,4、Y3,4,存入第三寄存器组并从该硬件架构输出。
Y1,4=X1,4*W1,1+X2,4*W2,1+X1,5*W1,2+X2,5*W2,2+X1,6*W1,3+X2,6*W2,3
Y2,4=X2,4*W1,1+X3,4*W2,1+X2,5*W1,2+X3,5*W2,2+X2,6*W1,3+X3,6*W2,3
Y3,4=X3,4*W1,1+X4,4*W2,1+X3,5*W1,2+X4,5*W2,2+X3,6*W1,3+X4,6*W2,3
至此,得到3×4的输出特征图,完成尺寸为4×6的输入特征图与尺寸为2×3的卷积核的二维卷积计算。
从以上二维卷积计算过程可以看出,本发明提出的二维卷积计算硬件构架的突出优势为数据复用率高。以本实施例为例,虽然输入特征图数据和卷积核权重都需要反复多次参与最终卷积结果的计算,但输入特征图和卷积核权重均仅导入硬件构架一次,不需要反复导入计算单元,因此本发明提出的二维卷积计算硬件构架在设计上已经达到了数据复用上的极限。
实施例2
一种二维卷积计算硬件构架,包括权重寄存器和二维卷积计算流水线。本实施例同样设定卷积核尺寸为2×3(即R=2,C=3),但二维卷积计算流水线内含2级计算单元(P=R),每一级计算单元包含一维卷积硬件和中间结果寄存器组,一维卷积硬件包括4组乘累加单元(根据每一级计算单元输出的计算结果的个数设定,本实施例中N=4),其中每组乘累加单元包含3个乘法器(Q=C)和1个加法树;权重寄存器设置于每一级计算单元内部,前一级计算单元的中间结果寄存器组中存储的N个计算结果,在下一周期累加至后一级计算单元的中间结果寄存器组中,经最后一级计算单元的中间结果寄存器组输出,参照图5。
基于上述二维卷积计算硬件构架,同样进行尺寸为4×6的输入特征图与尺寸为2×3的卷积核的卷积运算,区别在于,实施例1的流水式卷积计算过程中,输入特征图数据和卷积核权重的划分均以列为单位,而本实施例均以行为单位,但计算过程及其原理基本一致,在此不再赘述。
结合实施例1,容易得出,如图5所示,从第一周期开始,每周期输入一行6个数据至该硬件架构,在第三周期计算出输出特征图的第一行数据Y1,1、Y1,2、Y1,3、Y1,4,在第四周期计算出输出特征图的第二行数据Y2,1、Y2,2、Y2,3、Y2,4,在第五周期计算出输出特征图的第三行数据Y3,1、Y3,2、Y3,3、Y3,4,至此得到3×4的输出特征图,完成尺寸为4×6的输入特征图与尺寸为2×3的卷积核的二维卷积计算。
实施例3
通过实施例1、实施例2,能够领会一维卷积硬件中乘累加单元的数量N的设定原则。由于硬件限制,当芯片流片后,N即为一个固定值,而不同输入特征图尺寸是变化的。
图6为二维卷积计算硬件架构在N=6时,单个计算单元的内部结构示意图。该硬件架构可以同时计算6个一维卷积计算的中间结果;显然,N的数值不同对应不同硬件架构的具体实现,且流片后无法改变。
实施例1和实施例2列举的是最理想的状态,但当实施例1中输入特征图的行数超过4,实施例2中输入特征图中的列数超过6,均将无法一次性完成同一列/同一行输出特征图的计算,而需要以一定数量的行数或列数为单位对输入特征图进行划分,进行分批处理。
每批处理的行数或列数,根据卷积核尺寸与N来确定。例如,在实施例1中,R=2,N=3,那么一批最多能够处理N+R-1=4行数据;又如,在实施例2中,C=3,N=4,那么一批最多能够处理N+C-1=6列数据。
因此,对于实施例1提出的二维卷积计算硬件构架,当输入特征图添加边缘填充数据后的行数大于N+R-1=4时,应当以4行为单位对输入特征图进行划分,进行分批处理;对于实施例2提出的二维卷积计算硬件构架,当输入特征图添加边缘填充数据后的列数大于N+C-1=6时,应当以6列为单位对输入特征图进行划分,进行分批处理。当进行边缘数据填充时,还需要将填充的行数和列数考虑在内,即以边缘填充后的实际输入构架中的特征图行数和列数为准。
由于卷积计算过程中,卷积核窗口需要在输入特征图上连续滑动完成卷积运算,因此相邻两批特征图需要有重叠行或重叠列,具体重叠行或重叠列根据卷积核尺寸确定。
以卷积核大小为3×3为例,当以实施例1示意的方式实施该硬件架构时,每周期输入一列若干个数据进入硬件架构,N+2行输入特征图作为一批数据连续输入硬件架构进行处理,此时输入特征图送入硬件架构的方式如图10所示。
当以实施例2示意的方式实施硬件架构时,每周期输入一行若干个数据进入硬件架构,N+2列输入特征图作为一批数据连续输入硬件架构进行处理,此时输入特征图送入硬件架构的方式如图11所示。
以实施例1提出的二维卷积计算硬件构架为例,每周期输入一列若干个数据进入硬件架构,4行输入特征图作为一批数据连续输入硬件架构进行处理,若输入特征图Hx=7,由于R=2,在进行输入特征图划分时,相邻两批数据仅一行重叠即可,如图7所示。图7中左侧图为完整的输入特征图,右侧图中两个虚线包围的输入特征图表示将左侧完整的输入特征图划分为两个批次,每个虚线框包围的区域作为一个批次连续输入硬件架构,左侧图中的阴影部分区域为两批输入数据的重叠部分。
以实施例2提出的二维卷积计算硬件构架为例,每周期输入一行若干个数据进入硬件架构,6列输入特征图作为一批数据连续输入硬件架构进行处理,若输入特征图Wx=10,由于C=3,在进行输入特征图划分时,相邻两批数据需两列重叠,如图8所示。图8中上方图为完整的输入特征图,下方图中两个虚线包围的输入特征图表示将上方完整的输入特征图划分为两个批次,每个虚线框包围的区域作为一个批次连续输入硬件架构,上方图中的阴影部分区域为两批输入数据的重叠部分。
实施例1和实施例2为了明确区分两种情况,因此选择2×3尺寸的卷积核作为示例。然而,最常用的卷积核尺寸为3×3,则若要每一级计算单元一次输出N个计算结果,则进行输入特征图划分时,按照N+2行/列进行即可,相邻的条带会有2行/列数据的重复,重复的2行/列数据会在相邻的两个条带中均被导入硬件构架中。
对于卷积核尺寸为3×3的二维卷积计算,在步长为1的情况下,每个输入特征图实际需要参与9次计算,而利用本发明提出的硬件架构,输入特征图仅需要导入硬件架构1次,可见本发明提出的二维卷积计算硬件构架可以达到非常高的数据复用率。若以数据参与计算次数与导入硬件构架的次数的比例来表示数据复用率,本发明提出的二维卷积计算硬件构架的数据复用率计算公式为(9×N)/(N+2)。当N取64时,数据复用率为(9*64)/66=8.73,已经非常接近数据完全复用时的数据复用率。
实施例4
在二维卷积计算过程中,在图像边缘处通常需要进行数据填充(PADDING),存在多种填充(PAD)模式,如不填充、填充0、填充1、根据输入特征图的数据对称填充等。为此,本实施例主要涉及使用硬件进行二维卷积计算时,如何实现输入特征图的边缘数据填充。
方法一是常规的做法,通过软件,在存储器中摆放输入特征图数据时,在输入特征图边缘处增加PAD。然而,此方法需要额外进行软件操作,不仅耗费时间,而且效率低下。
方法二是本发明提出的方法,在硬件构架中设置PAD单元,即数据填充单元,并通过机器指令的方式配置PAD单元的选通及输出,从而使得PAD单元在需要时进行数据填充。
参照图9-11所示,默认卷积核尺寸为3×3,在二维卷积计算流水线之外,设置PAD单元。当从片上存储器读取输入特征图的边缘条带数据时,仅读取N+1行/列、当填充模式为0、1填充时,填充的1行/列数据通过PAD单元根据配置固定输出为0或1;当填充模式为对称填充时,PAD单元接收N+1行/列数据中的1行/列,并作为填充输出。当从片上存储器读取输入特征图的中间条带数据时,PAD单元不工作。
基于此方法,输入特征图在存储器中仍然按照常规模式排列,不需要加入填充数据。卷积指令需要指定填充模式,由PAD单元负责输出填充数据。
实施例5
实施例1-4均在探讨单输入通道单输出通道二维卷积运算的情形,并未提及多输入通道多输出通道二维卷积运算的情况。对于多输入通道多输出通道的二维卷积计算,情况更为复杂,图12描述了现有技术中多输入通道多输出通道的二维卷积计算的输入特征图和卷积核的表述方式,基于这种表述方式,卷积结果的计算式为:
其中R为卷积核高度、C为卷积核宽度、CI为输入通道数、CO为输出通道数、X代表输入特征图数据、W代表卷积运算权重数据、Y代表输出特征图数据、b为批(batch)数据索引号、co为输出特征图索引号、ci为输入特征图索引号、i为某个输出特征图数据的行号、j为某个输出特征图数据的列号、r为某个卷积核权重的行号、c为某个卷积核权重的列号。
以上公式仅代表横轴方向与纵轴方向步长均为1且不是空洞卷积的卷积计算方式。对于步长不为1的卷积计算,输出特征图数据的索引需要按一定方式映射到输入特征图的索引,现有技术中这种二维卷积计算方式示意图如图13所示。
对每个输入通道分别作卷积,各个输入通道卷积核权重不同,然后将所有输入通道的卷积结果加在一起,构成一个输出通道的卷积计算结果;计算不同输出通道的卷积结果时,输入特征图相同,卷积核权重不同。
对于多输入通道多输出通道的二维卷积计算,首先逐输入特征图计算二维卷积结果,每个输入特征图的二维卷积计算结果存储于一个累加存储器中,需注意这里的二维卷积计算结果并不是最终计算结果,将多个输入通道特征图的计算结果累加在一起,才是最终计算结果。
基于本发明提出的二维卷积计算硬件构架在进行流水式卷积计算工作时,其输出结果与累加存储器中的中间结果累加后,再送回累加存储器中。当一个输入特征图的二维卷积计算完成后,再将权重寄存器中的权重切换为同一输出通道针对下一个输入特征图的权重,重新开始二维卷积计算。当所有输入特征图都处理完成,即完成了一个输出通道的二维卷积计算,此时累加存储器中存储的,就是一个输出通道的完整卷积计算结果。
参照图14所示,针对一个输入特征图的二维卷积结果与累加存储器中存储的部分计算结果累加(计算第一个输入特征图时,该部分计算结果为0),再存储回累加存储器;当所有输入特征图都处理完成时,累加存储器中存储的就是一个输出通道的完整卷积计算结果。
经过上述分析可知,计算多输入通道多输出通道二维卷积的不同输出通道结果时,输入通道数据是可以复用的,也就是说,虽然不同输出通道的卷积权重不同,但它们针对的都是相同的输入通道数据。记输出通道数为CO个,针对高为R、宽为C的卷积核,卷积计算步长为1,则每个输入数据需要参与CO*R*C次计算。
针对计算不同输出通道结果时,输入特征图可以复用的特点,设计硬件构架,进一步提高多输入通道多输出通道二维卷积的数据复用率。参照图15所示,卷积计算单元内部设置多个二维卷积计算流水线,每个流水线内部存储的是不同输出通道的权重。输入通道数据进入构架后,广播至所有二维卷积计算流水线中,达到数据一次导入多次使用的效果,提高了数据复用率。每个二维卷积计算流水线的计算结果与一个输出通道的累加存储器中的部分计算结果累加,再存储回该累加存储器,一个这样的累加存储器存储一个输出通道的卷积计算结果。各个二维卷积计算流水线与累加存储器独立并行工作。
以卷积核大小为3×3为例,假设二维卷积计算硬件构架中共设置M个二维卷积计算流水线,根据前述数据复用率的定义,此构架数据复用率为(CO*R*C*N)/((N+2)*(CO/M)),即(M*R*C*N)/(N+2)。显然,M越接近输出通道个数CO,此构架的数据复用率越高。
实施例6
在实际深度学习模型的推理中,常常使用低比特量化技术。由深度学习模型的冗余性,将权重及各层的激活度量化为8bit或16bit,并不会明显降低模型的准确率。
目前,常见的人工智能芯片都支持数据位宽为8bit的深度学习模型推理。最先进的人工智能芯片甚至还支持4bit深度学习模型推理。一般,人工智能芯片不会仅仅支持一种数据位宽的计算。例如,常见的人工智能芯片一般同时支持8bit与16bit深度学习模型的推理。
为了实现硬件计算单元的复用,通常使得一套硬件电路能够同时支持不同位宽的数据计算,例如图16公开了现有技术中由4个8位乘法器组合起来完成一个16位乘法的电路。
对于实施例1-5提出的卷积计算硬件架构,同样需要同时支持8位计算和16位计算。因此,本发明提出的二维卷积计算硬件构架需要同时支持8位与16位计算时,其中的乘法器均采用图16所示电路。当配置为8位计算时,输出4个8位计算结果;当配置为16位计算时,输出1个16位计算结果即可。
当乘法器配置为同时计算4个8位计算时,输入特征图数据、权重数据的传输与配置方式同样发生改变,乘累加单元内部的加法树的工作方式也发生改变。
沿输入通道维度对输入特征图和权重数据进行并行处理,即一个计算单元的权重寄存器先存储4个8位的权重,分别对应针对同一输出通道4个不同输入通道的权重;送入计算单元的输入特征图是4个输入通道的相同位置的输入特征图。每个周期,该硬件架构实际完成4×N个一维卷积计算,由N个乘累加单元中的加法树分别完成相同位置的4个卷积结果的加法,得到N个卷积计算中间结果。每完成一个二维卷积计算,实际上是同时处理完4个输入通道的二维卷积计算,并将4个输入通道的卷积计算结果累加起来,得到多输入通道多输出通道二维卷积计算的中间结果,在输出特征图存储器中暂存,参与后续输入通道卷积结果的累加。这种情况下,一级计算单元内的数据流动方式如图17所示。此时,整体二维卷积流水线架构不变,流水线式工作后,每个周期可以计算4×N个二维卷积结果,对应4个输入通道的各N个卷积结果,并得到对应位置累加之后的N个卷积计算中间结果。二维卷积计算硬件架构仍然可以采用图15所示硬件架构,设计M个针对不同输出通道的二维卷积计算流水线,实现对4个输入特征图的数据复用,得到同时并行计算M个输出通道的结果中4个输入通道卷积结果的累加和效果。
显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域及相关领域的普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
Claims (8)
1.一种二维卷积计算硬件构架,输入特征图尺寸为Hx×Wx,卷积核尺寸R×C,其特征在于,包括权重寄存器和二维卷积计算流水线;
二维卷积计算流水线内含P级计算单元,每一级计算单元包含一维卷积硬件和中间结果寄存器组;一维卷积硬件包括N组乘累加单元,其中每组乘累加单元包含Q个乘法器和1个加法树,其中P=R或C;当P=R时则Q=C,当P=C时则Q=R;N等于每一级计算单元输出的计算结果的个数,中间结果寄存器组中的寄存器数量等于N;
权重寄存器设置于每一级计算单元内部,前一级计算单元的N个计算结果寄存于中间结果寄存器组,并在下一周期累加至后一级计算单元的中间结果寄存器组中,最后经最后一级计算单元的中间结果寄存器组输出。
2.根据权利要求1所述的二维卷积计算硬件构架,其特征在于,还包括由机器指令配置的数据填充单元,当需要进行边缘数据填充时,由数据填充单元根按照机器指令的配置给出填充数据后,与输入特征图一同送入二维卷积计算流水线。
3.根据权利要求2所述的二维卷积计算硬件构架,其特征在于,当输出通道数量大于1时,二维卷积计算硬件架构内含多个二维卷积计算流水线,多输出通道二维卷积运算中不同输出通道的卷积核权重存入对应二维卷积计算流水线的对应权重寄存器中,输入特征图广播至所有二维卷积计算流水线,每个二维卷积计算流水线的输出结果存储至累加存储器,用于多个输出通道卷积运算的并行处理。
4.根据权利要求1-3任意一项所述的二维卷积计算硬件构架,其特征在于,乘法器采用电路复用的方式,同时支持8位计算和16位计算的乘法器;
当乘法器复用为同时计算多个8位计算时,同时传入多个输入通道的特征图数据,权重寄存器同时存储针对多个输入通道的权重数据,乘法器同时计算多个输入通道的二维卷积,加法树分别对同一位置的多个输入通道卷积结果进行累加,得到多个输入通道的二维卷积结果累加和。
5.基于权利要求1所述的二维卷积计算硬件构架的流水式二维卷积计算方法,其特征在于,
当P=C时,卷积核权重以列为单位分别输入对应级计算单元,输入特征图以列为单位依序按周期广播至所有计算单元,即每个周期将一列N+R-1个数据广播至所有计算单元,直至完成整个二维卷积运算。
6.根据权利要求5所述的流水式二维卷积计算方法,其特征在于,当Hx+T>N+R-1时,将输入特征图以N+R-1行为单位划分为多个横向条带,进行分批处理,其中T为填充数据行数,由具体二维卷积填充方法确定;相邻横向条带存在R-1行数据的重复。
7.基于权利要求1所述的流水式二维卷积计算方法,其特征在于,当P=R时,卷积核权重以行为单位分别输入对应级计算单元,输入特征图以行为单位依序按周期广播至所有计算单元,即每个周期将一行N+C-1个数据广播至所有计算单元,直至完成整个二维卷积运算。
8.根据权利要求7所述的流水式二维卷积计算方法,其特征在于,当Wx+T>N+C-1时,将输入特征图以N+C-1列为单位划分为多个纵向条带,进行分批处理,其中T为填充数据列数,由具体二维卷积填充方法确定;相邻纵向条带存在C-1列数据的重复。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211167129.2A CN115545157A (zh) | 2022-09-23 | 2022-09-23 | 二维卷积计算硬件构架及基于其的流水式二维卷积计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211167129.2A CN115545157A (zh) | 2022-09-23 | 2022-09-23 | 二维卷积计算硬件构架及基于其的流水式二维卷积计算方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115545157A true CN115545157A (zh) | 2022-12-30 |
Family
ID=84729806
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211167129.2A Pending CN115545157A (zh) | 2022-09-23 | 2022-09-23 | 二维卷积计算硬件构架及基于其的流水式二维卷积计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115545157A (zh) |
-
2022
- 2022-09-23 CN CN202211167129.2A patent/CN115545157A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11809514B2 (en) | Expanded kernel generation | |
CN110458279B (zh) | 一种基于fpga的二值神经网络加速方法及系统 | |
CN110073359B (zh) | 用于卷积神经网络的有效数据布局 | |
CN111062472B (zh) | 一种基于结构化剪枝的稀疏神经网络加速器及其加速方法 | |
CN106970896B (zh) | 面向向量处理器的二维矩阵卷积的向量化实现方法 | |
CN109409511B (zh) | 一种用于动态可重构阵列的卷积运算数据流调度方法 | |
CN109948774B (zh) | 基于网络层捆绑运算的神经网络加速器及其实现方法 | |
CN109409512B (zh) | 一种可灵活配置的神经网络计算单元、计算阵列及其构建方法 | |
US20230004624A1 (en) | High throughput matrix processor with support for concurrently processing multiple matrices | |
KR20220129107A (ko) | 행렬 곱셈기 | |
CN111898733B (zh) | 一种深度可分离卷积神经网络加速器架构 | |
CN110674927A (zh) | 一种用于脉动阵列结构的数据重组方法 | |
CN111340198B (zh) | 基于fpga的数据高度复用的神经网络加速器 | |
TW202123093A (zh) | 實行卷積運算的系統及方法 | |
WO2022110386A1 (zh) | 数据处理方法及人工智能处理器 | |
Liu et al. | WinoCNN: Kernel sharing Winograd systolic array for efficient convolutional neural network acceleration on FPGAs | |
JP2023014091A (ja) | 効率的な畳み込みエンジン | |
CN112257844A (zh) | 一种基于混合精度配置的卷积神经网络加速器及其实现方法 | |
CN111767994A (zh) | 一种神经元计算模块 | |
CN115238863A (zh) | 一种卷积神经网络卷积层的硬件加速方法、系统及应用 | |
CN113313252B (zh) | 一种基于脉动阵列的深度可分离卷积实现方法 | |
US20230376733A1 (en) | Convolutional neural network accelerator hardware | |
CN110766136B (zh) | 一种稀疏矩阵与向量的压缩方法 | |
CN115545157A (zh) | 二维卷积计算硬件构架及基于其的流水式二维卷积计算方法 | |
CN108415881A (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 |