CN110210610A - 卷积计算加速器、卷积计算方法及卷积计算设备 - Google Patents
卷积计算加速器、卷积计算方法及卷积计算设备 Download PDFInfo
- Publication number
- CN110210610A CN110210610A CN201810259875.1A CN201810259875A CN110210610A CN 110210610 A CN110210610 A CN 110210610A CN 201810259875 A CN201810259875 A CN 201810259875A CN 110210610 A CN110210610 A CN 110210610A
- Authority
- CN
- China
- Prior art keywords
- computing unit
- convolutional calculation
- input data
- row
- clock cycle
- 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
- 238000004364 calculation method Methods 0.000 title claims abstract description 282
- 239000011159 matrix material Substances 0.000 claims abstract description 112
- 238000000034 method Methods 0.000 claims description 18
- 230000001186 cumulative effect Effects 0.000 claims description 14
- 238000009825 accumulation Methods 0.000 claims description 6
- 235000013399 edible fruits Nutrition 0.000 claims description 3
- 230000003111 delayed effect Effects 0.000 claims description 2
- 239000000872 buffer Substances 0.000 abstract description 40
- 238000010586 diagram Methods 0.000 description 28
- 235000019800 disodium phosphate Nutrition 0.000 description 26
- 238000013527 convolutional neural network Methods 0.000 description 20
- 238000012545 processing Methods 0.000 description 12
- 238000013461 design Methods 0.000 description 10
- 230000035508 accumulation Effects 0.000 description 5
- 239000000203 mixture Substances 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 210000000352 storage cell Anatomy 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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
- G06F17/153—Multidimensional correlation or convolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/08—Clock generators with changeable or programmable clock frequency
-
- 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)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Molecular Biology (AREA)
- Mathematical Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Optimization (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
Abstract
本申请是关于一种卷积计算加速器、卷积计算方法及卷积计算设备,涉及电子电路技术领域。该卷积计算加速器包括:控制器、计算矩阵以及第一缓存,计算矩阵中包含至少一行计算单元,每行计算单元中包含至少两个计算单元;控制器,用于控制将载入至第一缓存的输入数据输入至对应行的计算单元中,由对应行的计算单元将输入数据在对应行的计算单元中进行传输;对应行的计算单元中的每一个计算单元将接收到的输入数据与预先存储的卷积核进行卷积计算,处于同一行的至少两个计算单元复用同一份输入数据,且只需要一个输入通道,从而降低了计算矩阵的缓存容量和输入带宽需求,提高了计算矩阵的可扩展性。
Description
技术领域
本申请涉及电子电路技术领域,特别涉及一种卷积计算加速器、卷积计算方法及卷积计算设备。
背景技术
在数据处理领域,很多数据处理过程,比如通过卷积神经网络(ConvolutionalNeural Network,CNN)进行图像处理过程,需要进行大量的卷积计算步骤。
在相关技术中,计算机设备可以借助于通过硬件加速的方式来加快卷积计算的计算速度,具体比如,计算机设备可以连接专用的卷积计算加速器,该卷积计算加速器中包含有计算矩阵、控制器以及输入缓存,该计算矩阵中包含若干个计算单元,其中,每个计算单元对应的输入数据独立缓存,并在进行卷积计算时,由控制器直接控制输送至对应的计算单元,由该计算单元将该输入数据与卷积核进行卷积计算。
在相关技术中,由于计算矩阵中的各个计算单元的输入数据各自独立缓存,且由控制器直接控制输送至对应的计算单元,这就需要为卷积计算加速器设计较高的缓存容量和输入带宽,影响计算矩阵的扩展性。
发明内容
本申请实施例提供了一种卷积计算加速器、卷积计算方法及卷积计算设备,可以解决相关技术中计算矩阵中的各个计算单元的输入数据各自独立缓存,且由控制器直接控制输送至对应的计算单元,需要为卷积计算加速器设计较高的缓存容量和输入带宽,影响计算矩阵的扩展性的问题,技术方案如下:
一方面,提供了一种卷积计算加速器,所述卷积计算加速器包括:控制器、计算矩阵以及第一缓存,所述计算矩阵中包含至少一行计算单元,每行计算单元中包含至少两个计算单元,且每行计算单元中的相邻两个计算单元相连;
所述控制器,用于控制将每一行计算单元的输入数据载入至所述第一缓存;
所述控制器,还用于控制将载入至所述第一缓存的输入数据输入至对应行的计算单元中,由所述对应行的计算单元将所述输入数据在所述对应行的计算单元中进行传输;
所述对应行的计算单元中的每一个计算单元,用于将接收到的输入数据与预先存储的卷积核进行卷积计算。
另一方面,提供了一种卷积计算方法,
用于卷积计算加速器中,所述卷积计算加速器包括控制器、计算矩阵以及第一缓存,所述计算矩阵中包含至少一行计算单元,每行计算单元中包含至少两个计算单元,且每行计算单元中的相邻两个计算单元相连,所述方法包括:
输入数据对应行的计算单元将所述输入数据在所述对应行的计算单元中进行传输,所述输入数据由所述控制器控制输入至所述对应行的计算单元;
所述对应行的计算单元中的每一个计算单元,将接收到的输入数据与预先存储的卷积核进行卷积计算。
另一方面,提供了一种现场可编程门阵列(Field-Programmable Gate Array,FPGA),所述FPGA包括:至少一个上述的卷积计算加速器。
又一方面,提供了一种卷积计算设备,所述卷积计算设备包括:至少一个上述的卷积计算加速器。
又一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由控制器加载并执行以实现如上所述的卷积计算方法。
本申请提供的技术方案可以包括以下有益效果:
计算矩阵中的每一行包含的至少两个计算单元中的相邻两个计算单元相连,在进行卷积计算时,控制器控制每一个计算单元对应的输入数据通过流水线方式依次输入该行计算单元中的每一个计算单元中,由同一行的计算单元根据该输入数据与预存的卷积核进行卷积计算,也就是说,处于同一行的至少两个计算单元复用同一份输入数据,且只需要一个输入通道,从而降低了计算矩阵的缓存容量和输入带宽需求,提高了计算矩阵的可扩展性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1是根据一示例性实施例示出的一种卷积计算加速器的结构示意图;
图2是图1所示实施例涉及的卷积计算示意图;
图3是根据一示例性实施例示出的一种卷积计算加速器的结构示意图;
图4是图3所示实施例涉及的一种卷积计算加速器的输入输出示意图;
图5是图3所示实施例涉及的一种卷积计算加速器内部实现示意图;
图6是图3所示实施例涉及的一种的计算单元的电路连接示意图;
图7是图3所示实施例涉及的第三计算单元的电路连接示意图;
图8是图3所示实施例涉及的第二计算单元的电路连接示意图;
图9是图3所示实施例涉及的第四计算单元的电路连接示意图;
图10是图3所示实施例涉及的另一种卷积计算加速器的结构示意图;
图11是根据一示例性实施例示出的一种FPGA的结构示意图;
图12是图11所示实施例涉及的一种FPGA的划分示意图;
图13是图11所示实施例涉及的一种CNN模型的网络结构图;
图14是图11所示实施例涉及的一种FPGA的硬件结构图;
图15是根据一示例性实施例示出的一种卷积计算设备的结构示意图;
图16是根据一示例性实施例示出的一种卷积计算方法的方法流程图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
本申请实施例所示的方案,通过硬件电路实现卷积计算的加速,即在数据处理过程中,将涉及到的卷积计算,通过驱动程序发送给硬件电路进行计算,硬件电路计算获得卷积计算结果后,再将卷积计算结果提供给其它硬件电路或者软件程序使用。
具体的,在本申请实施例中,可以通过FPGA来实现上述硬件电路。具体的,可以基于FPGA上的DSP组成计算矩阵,每个FPGA根据包含的DSP的数量的不同以及计算矩阵的规格的不同,可以划分出至少一个计算矩阵,多个计算矩阵并行的进行卷积计算。
进一步的,上述FPGA可以设置在与运行有数据处理软件程序的计算机设备相连接的卷积计算设备(相当于计算机设备的外设设备)中,由数据处理软件程序通过外设设备的驱动程序进行调用以实现卷积计算的加速。
图1是根据一示例性实施例示出的一种卷积计算加速器的结构示意图,如图1所示,该卷积计算加速器包括:控制器101、计算矩阵102以及第一缓存103。该计算矩阵102中包含至少一行计算单元,每行计算单元中包含至少两个计算单元102a,且每行计算单元中的相邻两个计算单元102a相连。
其中,控制器101,用于控制每一行计算单元的输入数据载入至第一缓存103;
控制器101,还用于控制将载入至第一缓存的输入数据输入至对应行的计算单元102a中,由对应行的计算单元102a将输入数据在对应行的计算单元102a中进行传输;
该对应行的计算单元102a中的每一个计算单元102a,用于将接收到的输入数据与预先存储的卷积核进行卷积计算。
其中,上述卷积计算获得的卷积计算结果可以提供给其它硬件电路或者软件程序进行后续处理。
在本申请实施例中,每一份输入数据和每一份卷积核可以分别是一个二维的数据矩阵。比如,以上述卷积计算加速器用于在通过CNN进行图像处理过程进行卷积计算,输入数据是从图像中提取出的特征数据,卷积核是CNN模型中的特征权重为例,每一份输入数据可以是一个10×10的数据矩阵,即该数据矩阵分为10行,每行包含10个数据元素,每个数据元素是从图像中提取出的一个特征数据;相应的,每一份卷积核可以是一个3×3的权重矩阵,即该权重矩阵分为3行,每行包含3个权重元素,每个权重元素是用于与数据元素相乘的权重数值。需要说明的是,上述输入数据和卷积核仅以二维数据进行举例说明,在实际应用中,上述输入数据和卷积核也可以是三维数据。
在本申请实施例所示的卷积计算加速器中,一行计算单元中的每一个计算单元中分别预先存储有各自的卷积核,计算矩阵102在进行卷积计算时,一行计算单元对应的输入数据可以按照流水线(pipeline)方式依次被输入到该行计算单元中的每一个计算单元中,并在各个计算单元中分别与对应的卷积核进行卷积计算。
比如,请参考图2,其示出了本申请实施例涉及的卷积计算示意图。如图2所示,D1、D2、……、Dm为m份输入数据,H1x、H2x、……、Hmx为m行计算单元中预先存储的卷积核,其中,H11为第1行计算单元的第1个计算单元中预先存储的卷积核,H12为第1行计算单元的第2个计算单元中预先存储的卷积核,H1n为第1行计算单元的第n个计算单元中预先存储的卷积核,相应的,H21为第2行计算单元的第1个计算单元中预先存储的卷积核,H22为第2行计算单元的第2个计算单元中预先存储的卷积核,H2n为第2行计算单元的第n个计算单元中预先存储的卷积核,以此类推。
在进行卷积计算的过程中,计算矩阵102中各个卷积核对应的计算单元将D1分别与H11、H12、……、H1n进行卷积计算,即图2中的 相应的,将D2分别与H21、H22、……、H2n进行卷积计算,即图2中的将Dm分别与Hm1、Hm2、……、Hmn进行卷积计算,即图2中的以此类推。
需要说明的是,图2所示的卷积计算过程示意性的示出了每一行中的同一份输入数据与该行中的各个计算单元预存的卷积核进行卷积计算的方案,但并不限制输入数据与卷积核进行卷积计算的时序,比如,在实际应用中,对于第一行计算单元来说,第一行中的第一个计算单元执行的卷积计算时,第一行中的第二个计算单元此时可能尚未执行的卷积计算,类似的,第一行中的第一个计算单元执行的卷积计算时,第二行中的第一个计算单元此时也可能尚未执行的卷积计算。
综上所述,本申请实施例所示的卷积计算加速器,计算矩阵中的每一行包含的至少两个计算单元中的相邻两个计算单元相连,在进行卷积计算时,控制器控制每一行计算单元对应的输入数据输入该行计算单元,由该行计算单元中的各个计算单元在对应行内进行传输以及进行卷积计算,也就是说,处于同一行的至少两个计算单元复用同一份输入数据,且只需要一个输入通道,从而降低了计算矩阵的缓存容量和输入带宽需求,提高了计算矩阵的可扩展性。
图3是根据一示例性实施例示出的一种卷积计算加速器的结构示意图,如图3所示,该卷积计算加速器中,计算矩阵102包含m行n列计算单元102a,m为≥1的整数,n为≥2的整数,每个计算单元102a中预先存储有一份卷积核,第一缓存103包含m个输入缓存器103a(即每一行计算单元对应一个输入缓存器),卷积计算加速器中还包含第二缓存104,且第二缓存104中包含n个输出缓存器104a(即每一行计算单元对应一个输出缓存器)。
如图3所示,计算矩阵102的每一行中的第一个计算单元102a分别连接一个输入缓存器103a,计算矩阵102的每一列中的相邻两个计算单元102a相连,且计算矩阵102的每一列中的最后一个计算单元102a分别连接一个输出缓存器104a。
其中,在控制每一行计算单元的输入数据载入至第一缓存103时,控制器101,具体用于将控制每一份输入数据载入至与该输入数据一一对应的输入缓存器103a。
在控制将载入至第一缓存103的输入数据输入至对应行的计算单元102a中时,该控制器101,具体用于在一个第一时钟周期内,将该输入数据输送至该对应行中的第一个计算单元的寄存器中;该对应行的计算单元中的第一计算单元,用于将接收到的该输入数据在下一个第一时钟周期内输送至对应行的下一个计算单元的寄存器中,该第一计算单元是对应行中除了最后一个计算单元之外的任意计算单元。
其中,上述第一时钟周期是卷积计算加速器中的各个元件之间(比如缓存与计算单元之间,或者计算单元与计算单元之间)进行一次数据传递的时钟周期。
在本申请实施例中,对于任意一行计算单元,各个计算单元以第一时钟周期(比如2ns)为节拍进行输入数据的依次传递,比如,该行计算单元对应的某个输入数据为数据A,假设在第1个2ns内,控制器将数据A输送至该行计算单元中的第1个计算单元的寄存器中,在第2个2ns内,该行计算单元中的第1个计算单元将上一个2ns内寄存的数据A输送至该行计算单元中的第2个计算单元的寄存器中,以此类推。
可选的,在将输入的输入数据与预先存储的卷积核进行卷积计算时,计算矩阵102中的每一个计算单元102a,用于在一个第一时钟周期内接收输入数据,并在下一个第一时钟周期内,将接收到的输入数据与预先存储的卷积核进行卷积计算。
在本申请实施例中,每个计算单元在一个第一时钟周期内向同一行的下一个计算单元传输上一个第一时钟周期内寄存的输入数据的同时,可以执行将上一个第一时钟周期内寄存的输入数据与本地预先存储的卷积核进行卷积计算的步骤。比如,接上面的举例,对于任意一行计算单元,各个计算单元以第一时钟周期(2ns)为节拍进行输入数据的依次传递,比如,该行计算单元对应的某个第一输入数据为数据A,假设在第1个2ns内,控制器将数据A输送至该行计算单元中的第1个计算单元的寄存器中,在第2个2ns内,该行计算单元中的第1个计算单元除了将上一个2ns内寄存的数据A输送至该行计算单元中的第2个计算单元的寄存器中之外,还将该数据A与该行计算单元中的第1个计算单元中预存的卷积核进行卷积计算,以此类推。
对于上述每个计算单元,该计算单元在处理完一个输入数据的卷积计算后,可以继续执行下一个输入数据的乘加计算,比如,接上面的举例,对于任意一行计算单元,各个计算单元以第一时钟周期(2ns)为节拍进行输入数据的依次传递,比如,该行计算单元对应的某个第一输入数据为数据A,该第一输入数据的后一个输入数据为数据B,则在第2个2ns内,在该行计算单元中的第1个计算单元将上一个2ns内寄存的数据A输送至该行计算单元中的第2个计算单元的寄存器中,同时将该数据A与该行计算单元中的第1个计算单元中预存的卷积核进行计算,同时,控制器还将数据B输送至该行计算单元中的第1个计算单元的寄存器中,在第3个2ns内,该行计算单元中的第1个计算单元将上一个2ns内寄存的数据B送至该行计算单元中的第2个计算单元的寄存器中,同时将该数据B与该行计算单元中的第1个计算单元中预存的卷积核进行卷积计算,也就是说,该行计算单元中的第1个计算单元将数据B与卷积核进行卷积计算,并将数据B传递给下一个计算单元的步骤,与该行计算单元中的第2个计算单元将数据A与卷积核进行卷积计算,并将数据A传递给下一个计算单元的步骤是同步进行的。
通过上述方案,对于每一行计算单元,该行计算单元的所有乘法计算共享一份输入数据,具体的,在对一份输入数据进行卷积计算时,控制器控制第一缓存将该输入数据发送至对应一行计算单元中的第一个计算单元后,该第一个计算单元可以向第二个计算单元发送该输入数据,与此同时,第一个计算单元开始启动卷积计算步骤,相应的,输入数据被发送至对应一行计算单元中的第二个计算单元后,第二个计算单元向第三个计算单元发送该输入数据,与此同时,第二个计算单元开始启动卷积计算步骤,以此类推。
通过上述方案,在本申请实施例中,每一行计算单元复用一条数据输入通路,一份输入数据流水通过该通路,通过流水线(pipeline)方式共享给该行计算单元中的所有计算单元,这样简化了卷积计算加速器中的输入数据走线布局,同时,由于同一份输入数据共享给至少两个计算单元,不需要分别向每一个计算单元独立发送输入数据,减小了输入数据所需要的输入带宽。
在本申请实施例中,当计算矩阵120中包含至少两行计算单元(即上述m≥2)时,该至少两行计算单元组成至少两列,每一列中的相邻两个计算单元相连。计算矩阵102中的第二计算单元,还用于将累加后的卷积计算结果存储至第二缓存,该累加后的卷积计算结果是对应列中的各个计算单元的卷积计算结果的累加结果;该第二计算单元是计算矩阵的最后一行中的任意计算单元。
在本申请实施例中,通过设置专用的硬件电路,根据使用场景的不同,在硬件电路中的各个计算单元中预先设置对应的卷积核,硬件电路的控制器在数据处理过程中,将需要与卷积核进行卷积计算的输入数据通过驱动程序或者其它硬件逻辑发送至硬件电路中的输入缓存器,由输入缓存器将每一行对应的输入数据输入对应行中,由对应行中的各个计算单元之间传递该输入数据,并将该输入数据与预存的卷积核进行卷积计算,输出各列累加后的卷积计算结果,并存储至输出缓存器,由输出缓存器提供给其它硬件算法电路进行后续处理,不需要占用内存资源和处理器的计算资源,且通过硬件电路进行计算的速率更快,从而达到提高数据处理速率的效果。
可选的,上述计算单元可以是数字信号处理器(Digital Signal Processing,DSP)。当m≥2时,卷积计算加速器中的计算矩阵可以视为由DSP构成的二维矩阵。
比如,以通过32×16(即m为32,n为16)个DSP组成的二维计算矩阵进行CNN过程中的卷积计算为例,请参考图4,其示出了本申请实施例涉及的一种卷积计算加速器的输入输出示意图。在图4中左边一列是输入特征图(in Feature Map,IFM)缓存器,相当于上述输入缓存器,上边一行是输出特征图(out Feature Map,OFM)缓存器,相当于上述输出缓存器;其中,特征图是通过CNN对图像进行处理的过程中,从当前处理图像中提取出的特征所构成的图片数据。
在图4中,输入特征图缓存器具体可以实现为32片块随机存储器(block ram),用来存储CNN网络中特征图数据,其中每一片块随机存储器存储深度方向上的一幅特征图数据。块随机存储器的数据按照行存储的方式进行存储,每一片块随机存储器可以缓存kernal_size+1行的数据(其中,存储kernal_size+1行的数据的好处是只存储最小需要的数据,可以降低存储资源的消耗)。其中,kernal_size为CNN中的卷积核的尺寸。比如,假设卷积核是一个3*3的矩阵,则kernal_size即为3。
在图4中,输出特征图缓存器具体可以实现为32片块随机存储器,用来存储卷积之后的数据,其中每个块随机存储器缓存一组卷积核计算之后的输出。块随机存储器的深度设计可以按照CNN中网络实际输出大小情况具体选择。在图4中,输出特征图缓存器中的每两个块随机存储器对应上述一个输出缓存器,即最后一行计算单元可以输出两组不同的卷积核对应的卷积结果到对应的块随机存储器。
可选的,在本申请实施例中,每个计算单元102a可以包含至少一个乘法器,该乘法器用于将接收到的输入数据与预先存储的卷积核进行卷积计算。
可选的,每个计算单元102a还可以包含一个加法器,该加法器用于将该计算单元中的乘法器的卷积计算结果与上一行计算单元中的对应同一列的计算单元发送过来的卷积计算结果进行加和后,获得更新后的卷积计算结果,并将更新后的卷积计算结果输出给下一行计算单元中对应同一列的计算单元,在最后一行进行卷积和所有数据累加后,输出给对应连接的输出缓存器104a。
比如,请参考图5,其示出了本申请实施例涉及的一种卷积计算加速器内部实现示意图。以通过32*16(即m为32,n为16)个DSP进行CNN过程中的卷积计算为例,如图5所示,水平方向,不同列的计算单元(row,0)~计算单元(row,15)的输入特征图数据共享,第一个计算单元读一次输入特征图后,通过流水线共享给相同行的其他计算单元使用,这样设计有两个好处:一个是对于同一行计算单元,只需要存储一份输入特征图数据,由同一行计算单元中的所有卷积核共享,减少资源(缓存资源和功耗)的消耗和输入数据带宽;另一个是数据流更加规整,通过流水线布局降低了走线的复杂度,提高设计频率。
在图5中,垂直方向,不同行的计算单元(0,column)~计算单元(31,column)的卷积计算结果进行级联,从而实现卷积和的计算;垂直方向每一列(column)的32个卷积累加并行计算,总延迟:(32+kernal_size*kernal_size)个周期,吞吐量:每kernal_size*kernal_size个周期列方向会输出一个卷积和结果。
可选的,该计算矩阵102中每个计算单元中预先存储有至少两个卷积核;计算矩阵102中的每一个计算单元102a,用于在一个第一时钟周期内,将接收到的输入数据与该至少两个卷积核依次进行卷积计算。
在实际应用中,由于数据输入逻辑和计算单元(比如FPGADSP)计算逻辑的工作时钟频率存在差异,往往计算单元的工作时钟频率会更高,计算单元进行一次数据寄存所需要的时长(即上述第一时钟周期),可以是进行一次卷积计算所需要的时长的数倍,如果在一次数据寄存过程中,计算单元只执行一次卷积计算,则可能会发生计算单元在执行完卷积计算后,需要等待下一输入数据寄存完成的情况。为了进一步提高计算矩阵的卷积计算效率,在本申请实施例中,一个计算单元中可以预先存储两个或两个以上的卷积核,在计算单元完成一份输入数据的寄存的过程中,计算单元可以将该输入数据与两个或两个以上的卷积核依次进行卷积计算,从而提高卷积计算的运算效率。
可选的,上述第一时钟周期的周期长度不小于预设数量个第二时钟周期的周期长度之和,该预设数量为计算单元102a内预先存储的卷积核的数量,每个卷积核对应一个第二时钟周期;该计算矩阵中的每一个计算单元102a,用于在每个卷积核对应的第二时钟周期内,将接收到的输入数据与该卷积核进行卷积计算。
在本申请实施例中,计算单元中可以设置两种时钟周期,一种时钟周期是计算单元接收一次输入数据的周期(即上述第一时钟周期),另一种时钟周期是计算单元将一份输入数据与一个卷积核进行卷积计算所需的周期(即上述第二时钟周期),并且,第一时钟周期必须要不小于第二时钟周期的q倍(其中,q为上述预设数量,q为大于或者等于2的整数),也就是说,在一个第一时钟周期内,计算单元可以足够执行至少q次卷积计算。在一个第一时钟周期内,计算单元在每一个第二时钟周期内,将上一个第一时钟周期内寄存到本地寄存器的输入数据与本地存储的一个卷积核进行卷积计算,直至预先存储的q个卷积核都分别与该输入数据执行过卷积计算。
比如,以第一时钟周期为2ns,第二时钟周期为1ns为例,假设上一个2ns寄存至某个计算单元的输入数据为数据A,该计算单元中预先存储有两个卷积核,则在当前的2ns中的前1ns内,该计算单元将数据A与两个卷积核中的第一个卷积核进行卷积计算,在当前的2ns中的后1ns内,该计算单元将数据A与两个卷积核中的第二个卷积核进行卷积计算。
可选的,请参考图6,其示出了本申请实施例涉及的一种的计算单元的电路连接示意图。如图6所示,一个计算单元102a中包含乘法器102a1、加法器102a2之外,还包含缓存控制器102a3和q个缓存器102a4,q个缓存器102a4分别缓存q个卷积核中的一个卷积核,并且,缓存控制器102a3分别与q个缓存器102a4相连,且q个缓存器102a4分别与乘法器102a1直接或间接相连(图6中q个缓存器102a4分别与乘法器102a1间接相连),且乘法器102a1和加法器102a2相连;其中,缓存控制器102a3,用于在一个第二时钟周期内控制q个缓存器102a4中的一个缓存器向乘法器102a1输出存储的卷积核。
比如,在第一个第二时钟周期内,缓存控制器102a3控制第一个缓存器102a4中缓存的卷积核输入乘法器102a1,在第二个第二时钟周期内,缓存控制器102a3控制第二个缓存器102a4中缓存的卷积核输入乘法器102a1,以此类推。
具体的,假设在图5中,DSP的工作频率为550MHz,而输入的特征图的更新频率为275MHz,即特征图的更新周期(即上述第一时钟周期)是DSP的工作周期(即上述第二时钟周期)的两倍,此时,为了避免DSP计算资源的浪费,每个DSP里面可以有两个卷积核的存储,两个卷积核时分复用,这样设计是因为控制输入特征图在每一列里面会保存2个第二时钟周期,因此两个卷积核可以时分复用此数据,达到了DSP的“全速工作”,从而增加DSP时间利用率,只要输入数据连续,DSP可以实现100%的时间利用,提高乘法以及加法电路的工作效率。
根据计算单元在计算矩阵中的位置的不同,卷积计算加速器中需要实现3种类型的计算单元,3种计算单元的基本电路是一样的,只在输出上存在差异,即二维计算矩阵的每一column列上,第一行计算单元,最后一行计算单元(即上述第二计算单元),以及中间行计算单元的加法器输入有所不同。具体如下:
可选的,计算矩阵102中的第三计算单元,还用于将在上一个第一时钟周期内进行卷积计算获得的卷积计算结果输出给对应列中的下一个计算单元;该第三计算单元是计算矩阵102的第一行中的任意计算单元。
比如,请参考图7,其示出了本申请实施例涉及的第三计算单元的电路连接示意图;如图7所示,对于计算矩阵中的每个第三计算单元,第三计算单元是第一行计算单元中的任意计算单元,除了缓存控制器102a3和q个缓存器102a4之外,第三计算单元包括:第一输入接口102a5、乘法器102a1以及第一输出接口102a6;
第一输入接口102a5,用于接收第一行计算单元对应的输入缓存器或者同一行中前一个计算单元发送的输入数据;
乘法器102a1,用于将第一输入接口102a5在上一个第一时钟周期内接收到的输入数据与预先存储的卷积核进行卷积计算;
第一输出接口102a6,用于将乘法器102a1计算获得的卷积计算结果输出给同一列计算单元中的下一个计算单元。
可选的,第三计算单元,还用于将在上一个第一时钟周期内进行卷积计算获得的卷积计算结果输出给对应列中的下一个计算单元之前,将在上一个第一时钟周期内进行卷积计算获得的卷积计算结果,与初始累加数据进行加和计算,获得加和计算结果;该第三计算单元,用于将在上一个第一时钟周期内进行卷积计算获得的卷积计算结果输出给对应列中的下一个计算单元时,在下一个第一时钟周期内,将上述加和计算结果作为更新后的卷积计算结果输出给对应列中的下一个计算单元。
比如,如图7所示,第三计算单元还包括:第二输入接口102a7和加法器102a2;
第二输入接口102a7,用于接收初始累加数据;
加法器102a2,用于在第一输出接口102a6将乘法器在上一个第一时钟周期内计算获得的卷积计算结果输出给同一列计算单元中的下一个计算单元之前,在当前第一时钟周期内,将乘法器102a1在上一个第一时钟周期内计算获得的卷积计算结果与初始累加数据进行加和计算;
第一输出接口102a6,用于将加法器102a2的加和计算结果作为更新后的卷积计算结果,并在下一个第一时钟周期内输出给同一列计算单元中的下一个计算单元。
在本申请实施例中,计算矩阵中的第一行(对应第三计算单元)计算单元不存在级联输入(即上一行中的计算单元输入的卷积计算结果),因此,在本申请实施例中,计算矩阵中的第一行的加法器输入有个初始值bias,该初始值(即上述初始累加数据)的值可以为0。
可选的,上述计算矩阵102中第二计算单元,还用于在将累加后的卷积计算结果存储至第二缓存之前,将在上一个第一时钟周期内进行卷积计算获得的卷积计算结果,与对应列中的上一个计算单元在上一个第一时钟周期内发送的卷积计算结果进行加和计算,获得累加后的卷积计算结果。
比如,请参考图8,其示出了本申请实施例涉及的第二计算单元的电路连接示意图;如图8所示,对于计算矩阵中的每个第二计算单元,第二计算单元是计算矩阵的最后一行计算单元中的任意计算单元,除了缓存控制器102a3和q个缓存器102a4之外,第二计算单元包括:第三输入接口102a8、乘法器102a1、第四输入接口102a9、加法器102a2以及第二输出接口102a10;
第三输入接口102a8,用于接收最后一行计算单元对应的输入缓存器或者同一行中前一个计算单元发送的输入数据;
乘法器102a1,用于将第三输入接口在上一个第一时钟周期内接收到的输入数据与第二计算单元预先存储的卷积核进行卷积计算;
第四输入接口102a9,用于接收同一列中的上一个计算单元的卷积计算结果;
加法器102a2,用于将乘法器102a1在上一个第一时钟周期内计算获得的卷积计算结果与同一列中的上一个计算单元在上一个第一时钟周期内发送的卷积计算结果进行加和计算,获得加和计算结果;
第二输出接口102a10,用于将加法器的加和计算结果作为累加后的卷积计算结果,并将加法器102a2在上一个第一时钟周期内获得的累加后的卷积计算结果输出给与第二计算单元相连接的输出缓存器。
在本申请实施例中,计算矩阵中的最后一行(对应第二计算单元)的加法器输入增加累加结果输入,以完成累加功能。
可选的,当q≥2时,加法器对多组不同的卷积核的卷积计算结果分别进行累加,将各组卷积核对应的累加后的卷积计算结果一并发送至与之相连的输出缓存器中。
可选的,计算矩阵102中的第四计算单元,还用于将在上一个时钟周期内进行卷积计算获得的卷积计算结果,与对应列中的上一个计算单元在上一个时钟周期内发送的卷积计算结果进行加和计算,获得加和计算结果;并在下一个第一时钟周期内,将该加和计算结果作为更新后的卷积计算结果输出给对应列中的下一个计算单元;其中,该第四计算单元是计算矩阵102中除了第一行和最后一行之外的其它任意计算单元。
比如,请参考图9,其示出了本申请实施例涉及的第四计算单元的电路连接示意图;如图9所示,当m≥3时,对于计算矩阵102中的每个第四计算单元,第四计算单元是第p行计算单元中的任意计算单元,2≤p≤m-1,也就是说,第四计算单元是计算矩阵中除了第一行和最后一行之外的其它任意计算单元,除了缓存控制器102a3和q个缓存器102a4之外,第四计算单元包括:第五输入接口102a11、乘法器102a1、第六输入接口102a12、加法器102a2以及第三输出接口102a13;
第五输入接口102a11,用于接收第p行计算单元对应的输入缓存器或者同一行中的前一个计算单元发送的输入数据;
乘法器102a1,用于将第五输入接口102a11在上一个第一时钟周期内接收到的输入数据与第四计算单元预先存储的卷积核进行卷积计算;
第六输入接口102a12,用于接收同一列中的上一个计算单元(也就是第p-1行计算单元中与第四计算单元相连的计算单元)发送的卷积计算结果;
加法器102a2,用于将乘法器102a1在上一个第一时钟周期内计算获得的卷积计算结果与同一列中的上一个计算单元在上一个第一时钟周期内发送的卷积计算结果进行加和计算,获得加和计算结果;
第三输出接口102a13,用于将加法器102a12在上一个第一时钟周期内获得的加和计算结果作为更新后的卷积计算结果输出给同一列中的下一个计算单元(也就是第p+1行计算单元中与第四计算单元相连的计算单元)。
在本申请实施例中,计算矩阵中除了第一行和最后一行之外的中间行(对应第四计算单元)的加法器存在级联输入,是来自上一行计算单元的输出,此时,中间行计算单元中的加法器将本计算单元在在上一个第一时钟周期内的卷积计算结果与上一个第一时钟周期内来自上一行计算单元的输出进行累加后,在下一个第一时钟周期内输出给下一行对应的计算单元。
可选的,在本申请实施例中,由于一个计算矩阵中包含的计算单元数量有限,即单元行数以及每行计算单元中包含的计算单元的数量固定,当某个卷积计算任务中,需要进行卷积计算的输入数据数量较大时,可以对输入数据进行拆分,将输入数据拆分成数据量较小的两组或两组以上数据,以便将每一组数据分别输入卷积计算加速器进行计算,并对卷积计算结果进行组合。
比如,在用于CNN处理时,对于不同的CNN模型,可以根据CNN内部的不同层次以及相同层次中每一次卷积计算的分辨率和深度,采用合理的输入数据拆分,以实现将不同CNN模型的输入数据输入至相同的卷积计算加速器,达到同一卷积架构适应不同的卷积计算。
可选的,对于一个计算单元102a来说,该计算单元102a在一次卷积计算任务中,其预先存储的卷积核不变。控制器101,还用于在执行本次卷积计算任务的过程中,向每一个计算单元102a输入下一次卷积计算任务对应的卷积核。而每一个计算单元102a中存储的本次卷积计算任务的卷积核,在上一次卷积计算任务时,就已经由控制器101输入。
比如,请参考图10,其示出了本申请实施例涉及的另一种卷积计算加速器的结构示意图,如图10所示,每一个计算单元102a分别与控制器101相连接。
其中,该控制器101,用于在卷积计算加速器执行当前卷积计算任务时,向每一个计算单元102a输入下一次卷积计算任务对应的卷积核。
在本申请实施例中,在卷积计算加速器开始执行一个卷积计算任务之前,控制器101向每一个计算单元中预先存储好本次卷积计算任务所使用的卷积核。为了缩短执行卷积计算任务之前的准备时间(包括存储卷积核的时间),在本申请实施例中,在卷积计算加速器执行本次卷积计算任务时,控制器101也可以同步向各个计算单元分别存储下一次卷积计算任务所使用的卷积核,以缩短卷积计算任务之前的卷积核载入的时间,提高计算效率。
具体比如,以每次卷积计算任务中,每一个计算单元在一个第一时钟周期内,通过时分方式将输入数据与预先存储的q个卷积核中的每一个卷积核分别进行卷积计算为例,在本申请实施例中,每个计算单元中可以设置有两组缓存器,每组缓存器分别包含q个缓存器102a4;若本次卷积计算任务使用两组缓存器中的第1组缓存器时,则在卷积计算加速器根据第2组缓存器中的q个缓存器102a4中的卷积核执行上一个卷积计算任务时,控制器101即向该第1组缓存器存储q个卷积核;相应的,在卷积计算加速器根据第1组缓存器中的q个缓存器102a4中的卷积核执行本次卷积计算任务时,控制器101向该第2组缓存器存储下一次卷积计算任务对应的q个卷积核。
综上所述,在本申请实施例所示的卷积计算加速器中,计算矩阵中的每一行包含的至少两个计算单元中的相邻两个计算单元相连,在进行卷积计算时,每一行计算单元对应的输入数据通过流水线方式依次输入该行计算单元中的每一个计算单元中,由同一行的计算单元根据该输入数据与预存的卷积核进行卷积计算,也就是说,处于同一行的至少两个计算单元复用同一份输入数据,且只需要一个输入通道,从而降低了计算矩阵的缓存容量和输入带宽需求,提高了计算矩阵的可扩展性。
此外,本申请实施例所示的卷积计算加速器,一个计算单元中,根据输入数据的寄存的第一时钟周期和计算单元进行卷积计算的第二时钟周期之间的倍数关系,可以设置两组或者两组以上的卷积核,在一个第一时钟周期内,计算单元可以将输入数据与两组或者两组以上的卷积核依次进行卷积计算,从而提高了计算单元的资源利用率,提高卷积计算的效率,进一步提高数据处理速率。
另外,本申请实施例所示的卷积计算加速器中,控制器在卷积计算加速器执行本次卷积计算任务之前的一个卷积计算任务时,向每一个计算单元输入本次卷积计算任务对应的卷积核,缩短卷积计算任务之前的准备时间,从而提高卷积计算效率。
图11是根据一示例性实施例示出的一种现场可编程门阵列FPGA的结构示意图。如图11所示,在本申请实施例中,一个FPGA 110中可以包含至少一个上述图1所示的卷积计算加速器111。
在本申请实施例中,上述卷积计算加速器可以通过现场可编程门阵列FPGA来实现,即一个FPGA中可以包含至少一个上述卷积计算加速器。
比如,以m=32,n=26为例,请参考图12,其示出了本申请实施例涉及的一种FPGA的划分示意图,如图12所示,FPGA是两个芯片裸片封装在一个芯片里面,两个芯片裸片呈上下布局。逻辑上在一片FPGA里设计了8个包含32x16个DSP的二维计算矩阵(即上述计算矩阵中的m*n个计算单元),每个芯片裸片上安排4个二维计算矩阵,实际上,由于FPGA的DSP物理布局限制,可以将逻辑上8个二维计算矩阵拆分成12个物理二维计算矩阵,每个芯片裸片上6个物理二维计算矩阵,其中3个32x16的物理二维计算矩阵分别构成一个卷积计算矩阵,一个32x4个DSP组成的物理二维计算矩阵和两个32x6个DSP组成的物理二维计算矩阵构成1个卷积计算矩阵。图11所示的设计利用FPGA里面的4096(赞比73%)个DSP,拆分出8个卷积计算矩阵并行完成加速,每个卷积计算矩阵设计成512个DSP,其中每个计算矩阵都是一个2维的计算矩阵,形状类似矩形,由32x16个DSPs节点构成,每一个DSPs节点构成一个计算单元,此计算单元由数据存储单元(即上述缓存器)和一个DSP计算单元(即上述乘法器和加法器)构成,完成最基本的卷积以及加和计算功能,计算单元实现16bit定点计算。
本申请实施例可以应用于图片检测业务的FPGA硬件加速中,比如,某图片检测业务使用的CNN模型为***net V1,用于业务上传图片的过滤加速。其中,请参考图13,其示出了本申请实施例涉及的一种CNN模型的网络结构图。其中,图13所示的网络结构为***net V1的网络结构,该网络结构与其它深度神经网络类似,包含有多个层(layers),每一层有多个卷积计算,而卷积计算是整个网络里面占比最大的计算部分,对此,以上述FPGA实现为***net V1的硬件架构为例,请参考图14,其实示出了本申请实施例涉及的一种FPGA的硬件结构图(包含一个FPGA芯片裸片),如图14所示,FPGA芯片裸片0中若干个卷积计算矩阵,FPGA芯片裸片0通过缓冲队列向每个卷积计算矩阵输入32个特征图(即图14中的IFM0~IFM31),并输出32个特征图(即图14中的OFM0~OFM31),各个卷积计算矩阵并行完成CNN乘累加计算输出给上层业务软件。
通过本申请所示的方案,可以基于FPGA乘累加计算架构实现CNN推断中的卷积运算硬件加速,通过合理的数据通路和存储设计,可以实现输入数据的高度复用,降低了整个运算引擎的数据输入带宽;此外,本申请充分考虑了FPGA物理资源以及DSP的物理走线,使得DSP工作频率可以达到550M;此外,本申请提供的方案可以在DSP中预先存储多个卷积核,只要输入不是瓶颈,内部DSP资源时间利用率能达到100%;本申请提供的FPGA架构可以根据FPGA中的DSP资源的多少进行扩展设计,实现不同要求的峰值计算能力。
图15是根据一示例性实施例示出的一种卷积计算设备的结构示意图。如图15所示,该卷积计算设备1500包括:至少一个如上述图1所示的卷积计算加速器1520。
其中,上述至少一个卷积计算加速器1520可以分布在至少一个现场可编程门阵列FPGA中,也就是说,每个FPGA包含至少一个卷积计算加速器1520。
可选的,在本申请实施例中,该卷积计算设备包括总线接口1540;且该卷积计算设备通过总线接口1540与计算机设备1510相连。
可选的,上述总线接口1540可以为外设部件互连标准(Peripheral ComponentInterconnect,PCI)接口或者外设部件快速互连标准(PCI Express,PCI-E)接口。
其中,上述卷积计算设备可以实现为一个板卡设备,该板卡设备通过总线接口,比如PCI或者PCI-E接口连接至服务器或者个人电脑的主板上,通过驱动程序提供给上层业务软件使用。
图16是根据一示例性实施例示出的一种卷积计算方法的方法流程图,该方法可以应用于上述图1所示的卷积计算加速器中;如图16所示,该卷积计算方法可以包括如下步骤:
步骤1601,控制器控制将每一行计算单元的输入数据载入至该第一缓存。
步骤1602,控制器控制将载入至该第一缓存的输入数据输入至对应行的计算单元中,由该对应行的计算单元将该输入数据在该对应行的计算单元中进行传输。
步骤1603,该对应行的计算单元中的每一个计算单元,用于将接收到的输入数据与预先存储的卷积核进行卷积计算。
可选的,该控制器在控制将载入至该第一缓存的输入数据输入至对应行的计算单元中时,在一个第一时钟周期内,将该输入数据输入至该对应行中的第一个计算单元的寄存器中;
该对应行的计算单元中的第一计算单元将接收到的该输入数据在下一个第一时钟周期内输入至该对应行的下一个计算单元的寄存器中,该第一计算单元是该对应行中除了最后一个计算单元之外的任意计算单元。
可选的,该计算矩阵中的每一个计算单元在一个第一时钟周期内接收输入数据,并在下一个第一时钟周期内,将接收到的输入数据与预先存储的卷积核进行卷积计算。
可选的,该计算矩阵中每个计算单元中预先存储有至少两个卷积核;
该计算矩阵中的每一个计算单元在一个第一时钟周期内,将接收到的输入数据与该至少两个卷积核依次进行卷积计算。
可选的,该第一时钟周期的周期长度不小于预设数量个第二时钟周期的周期长度之和,该预设数量为计算单元内预先存储的卷积核的数量,每个卷积核对应一个第二时钟周期;
该计算矩阵中的每一个计算单元在每个卷积核对应的第二时钟周期内,将接收到的输入数据与该卷积核进行卷积计算。
可选的,该卷积计算加速器还包括第二缓存,该计算矩阵中包含至少两行计算单元,且该至少两行计算单元组成至少两列,每一列中的相邻两个计算单元相连;
该计算矩阵中的第二计算单元将累加后的卷积计算结果存储至该第二缓存,该累加后的卷积计算结果是对应列中的各个计算单元的卷积计算结果的累加结果;该第二计算单元是该计算矩阵的最后一行中的任意计算单元。
可选的,该第二计算单元还在将累加后的卷积计算结果存储至该第二缓存之前,将在上一个第一时钟周期内进行卷积计算获得的卷积计算结果,与对应列中的上一个计算单元在上一个第一时钟周期内发送的卷积计算结果进行加和计算,获得该累加后的卷积计算结果。
可选的,该计算矩阵中的第三计算单元,还将在上一个第一时钟周期内进行卷积计算获得的卷积计算结果输出给对应列中的下一个计算单元;该第三计算单元是该计算矩阵的第一行中的任意计算单元。
可选的,该第三计算单元还将在上一个第一时钟周期内进行卷积计算获得的卷积计算结果输出给对应列中的下一个计算单元之前,将在上一个第一时钟周期内进行卷积计算获得的卷积计算结果,与初始累加数据进行加和计算,获得加和计算结果;
该第三计算单元将在上一个第一时钟周期内进行卷积计算获得的卷积计算结果输出给对应列中的下一个计算单元时,在下一个第一时钟周期内,将该加和计算结果作为更新后的卷积计算结果输出给对应列中的下一个计算单元。
可选的,该计算矩阵中的第四计算单元,还将在上一个时钟周期内进行卷积计算获得的卷积计算结果,与对应列中的上一个计算单元在上一个时钟周期内发送的卷积计算结果进行加和计算,获得加和计算结果;并在下一个第一时钟周期内,将该加和计算结果作为更新后的卷积计算结果输出给对应列中的下一个计算单元;其中,该第四计算单元是该计算矩阵中除了第一行和最后一行之外的其它任意计算单元。
可选的,计算单元为数字信号处理器DSP。
其中,上述各个步骤的执行过程可以参考上述图1或图3所示的卷积计算加速器进行卷积计算并累加的过程,此处不再赘述。
在一示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括至少一条指令、至少一段程序、代码集或指令集的存储器,上述至少一条指令、至少一段程序、代码集或指令集可由控制器执行以完成上述图16对应实施例所示的方法中,由控制器或者计算单元执行的全部或者部分步骤。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (17)
1.一种卷积计算加速器,其特征在于,所述卷积计算加速器包括:控制器、计算矩阵以及第一缓存,所述计算矩阵中包含至少一行计算单元,每行计算单元中包含至少两个计算单元,且每行计算单元中的相邻两个计算单元相连;
所述控制器,用于控制将每一行计算单元的输入数据载入至所述第一缓存;
所述控制器,还用于控制将载入至所述第一缓存的输入数据输入至对应行的计算单元中,由所述对应行的计算单元将所述输入数据在所述对应行的计算单元中进行传输;
所述对应行的计算单元中的每一个计算单元,用于将接收到的输入数据与预先存储的卷积核进行卷积计算。
2.根据权利要求1所述的卷积计算加速器,其特征在于,
所述控制器,用于在控制将载入至所述第一缓存的输入数据输入至对应行的计算单元中时,在一个第一时钟周期内,将所述输入数据输入至所述对应行中的第一个计算单元的寄存器中;
所述对应行的计算单元中的第一计算单元,用于将接收到的所述输入数据在下一个第一时钟周期内输入至所述对应行的下一个计算单元的寄存器中,所述第一计算单元是所述对应行中除了最后一个计算单元之外的任意计算单元。
3.根据权利要求2所述的卷积计算加速器,其特征在于,
所述计算矩阵中的每一个计算单元,用于在一个第一时钟周期内接收输入数据,并在下一个第一时钟周期内,将接收到的输入数据与预先存储的卷积核进行卷积计算。
4.根据权利要求3所述的卷积计算加速器,其特征在于,所述计算矩阵中每个计算单元中预先存储有至少两个卷积核;
所述计算矩阵中的每一个计算单元,用于在一个第一时钟周期内,将接收到的输入数据与所述至少两个卷积核依次进行卷积计算。
5.根据权利要求4所述的卷积计算加速器,其特征在于,所述第一时钟周期的周期长度不小于预设数量个第二时钟周期的周期长度之和,所述预设数量为计算单元内预先存储的卷积核的数量,每个卷积核对应一个第二时钟周期;
所述计算矩阵中的每一个计算单元,用于在每个卷积核对应的第二时钟周期内,将接收到的输入数据与所述卷积核进行卷积计算。
6.根据权利要求1至5任一所述的卷积计算加速器,其特征在于,所述卷积计算加速器还包括第二缓存,所述计算矩阵中包含至少两行计算单元,且所述至少两行计算单元组成至少两列,每一列中的相邻两个计算单元相连;
所述计算矩阵中的第二计算单元,还用于将累加后的卷积计算结果存储至所述第二缓存,所述累加后的卷积计算结果是对应列中的各个计算单元的卷积计算结果的累加结果;所述第二计算单元是所述计算矩阵的最后一行中的任意计算单元。
7.根据权利要求6所述的卷积计算加速器,其特征在于,所述第二计算单元,还用于在将累加后的卷积计算结果存储至所述第二缓存之前,将在上一个第一时钟周期内进行卷积计算获得的卷积计算结果,与对应列中的上一个计算单元在上一个第一时钟周期内发送的卷积计算结果进行加和计算,获得所述累加后的卷积计算结果。
8.根据权利要求7所述的卷积计算加速器,其特征在于,所述计算矩阵中的第三计算单元,还用于,
将在上一个第一时钟周期内进行卷积计算获得的卷积计算结果输出给对应列中的下一个计算单元;所述第三计算单元是所述计算矩阵的第一行中的任意计算单元。
9.根据权利要求8所述的卷积计算加速器,其特征在于,
所述第三计算单元,还用于将在上一个第一时钟周期内进行卷积计算获得的卷积计算结果输出给对应列中的下一个计算单元之前,将在上一个第一时钟周期内进行卷积计算获得的卷积计算结果,与初始累加数据进行加和计算,获得加和计算结果;
所述第三计算单元,用于将在上一个第一时钟周期内进行卷积计算获得的卷积计算结果输出给对应列中的下一个计算单元时,在下一个第一时钟周期内,将所述加和计算结果作为更新后的卷积计算结果输出给对应列中的下一个计算单元。
10.根据权利要求7所述的卷积计算加速器,其特征在于,所述计算矩阵中的第四计算单元,还用于,
将在上一个时钟周期内进行卷积计算获得的卷积计算结果,与对应列中的上一个计算单元在上一个时钟周期内发送的卷积计算结果进行加和计算,获得加和计算结果;
在下一个第一时钟周期内,将所述加和计算结果作为更新后的卷积计算结果输出给对应列中的下一个计算单元;其中,所述第四计算单元是所述计算矩阵中除了第一行和最后一行之外的其它任意计算单元。
11.一种卷积计算方法,其特征在于,所述方法包括:
控制器控制将每一行计算单元的输入数据载入至所述第一缓存;
所述控制器控制将载入至所述第一缓存的输入数据输入至对应行的计算单元中,由所述对应行的计算单元将所述输入数据在所述对应行的计算单元中进行传输;
所述对应行的计算单元中的每一个计算单元,用于将接收到的输入数据与预先存储的卷积核进行卷积计算。
12.根据权利要求11所述的方法,其特征在于,
所述控制器在控制将载入至所述第一缓存的输入数据输入至对应行的计算单元中时,在一个第一时钟周期内,将所述输入数据输入至所述对应行中的第一个计算单元的寄存器中;
所述对应行的计算单元中的第一计算单元将接收到的所述输入数据在下一个第一时钟周期内输入至所述对应行的下一个计算单元的寄存器中,所述第一计算单元是所述对应行中除了最后一个计算单元之外的任意计算单元。
13.根据权利要求12所述的方法,其特征在于,
所述计算矩阵中的每一个计算单元在一个第一时钟周期内接收输入数据,并在下一个第一时钟周期内,将接收到的输入数据与预先存储的卷积核进行卷积计算。
14.根据权利要求13所述的方法,其特征在于,所述计算矩阵中每个计算单元中预先存储有至少两个卷积核;
所述计算矩阵中的每一个计算单元在一个第一时钟周期内,将接收到的输入数据与所述至少两个卷积核依次进行卷积计算。
15.根据权利要求14所述的方法,其特征在于,所述第一时钟周期的周期长度不小于预设数量个第二时钟周期的周期长度之和,所述预设数量为计算单元内预先存储的卷积核的数量,每个卷积核对应一个第二时钟周期;
所述计算矩阵中的每一个计算单元在每个卷积核对应的第二时钟周期内,将接收到的输入数据与所述卷积核进行卷积计算。
16.一种卷积计算设备,其特征在于,所述卷积计算设备包括:至少一个如权利要求1至10任一所述的卷积计算加速器。
17.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由控制器加载并执行以实现如权利要求11至15任一所述的卷积计算方法中由计算单元执行的步骤。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810259875.1A CN110210610B (zh) | 2018-03-27 | 2018-03-27 | 卷积计算加速器、卷积计算方法及卷积计算设备 |
PCT/CN2019/075431 WO2019184619A1 (zh) | 2018-03-27 | 2019-02-19 | 卷积计算加速器、卷积计算方法及卷积计算设备 |
US16/888,918 US11200092B2 (en) | 2018-03-27 | 2020-06-01 | Convolutional computing accelerator, convolutional computing method, and computer-readable storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810259875.1A CN110210610B (zh) | 2018-03-27 | 2018-03-27 | 卷积计算加速器、卷积计算方法及卷积计算设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110210610A true CN110210610A (zh) | 2019-09-06 |
CN110210610B CN110210610B (zh) | 2023-06-20 |
Family
ID=67778806
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810259875.1A Active CN110210610B (zh) | 2018-03-27 | 2018-03-27 | 卷积计算加速器、卷积计算方法及卷积计算设备 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11200092B2 (zh) |
CN (1) | CN110210610B (zh) |
WO (1) | WO2019184619A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110930290A (zh) * | 2019-11-13 | 2020-03-27 | 东软睿驰汽车技术(沈阳)有限公司 | 一种数据处理方法及装置 |
CN111199273A (zh) * | 2019-12-31 | 2020-05-26 | 深圳云天励飞技术有限公司 | 卷积计算方法、装置、设备及存储介质 |
CN112614040A (zh) * | 2020-12-16 | 2021-04-06 | 上海壁仞智能科技有限公司 | 用于卷积计算的方法、计算设备和计算机可读存储介质 |
WO2021073053A1 (zh) * | 2019-10-15 | 2021-04-22 | 百度在线网络技术(北京)有限公司 | 用于卷积运算的装置和方法 |
WO2023004762A1 (zh) * | 2021-07-30 | 2023-02-02 | 华为技术有限公司 | 计算机***和数据处理方法 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12014505B2 (en) * | 2019-01-31 | 2024-06-18 | Samsung Electronics Co., Ltd. | Method and apparatus with convolution neural network processing using shared operand |
CN110991632B (zh) * | 2019-11-29 | 2023-05-23 | 电子科技大学 | 一种基于fpga的异构神经网络计算加速器设计方法 |
US11372752B2 (en) | 2019-12-17 | 2022-06-28 | Google Llc | Topological scheduling |
CN111898743A (zh) * | 2020-06-02 | 2020-11-06 | 深圳市九天睿芯科技有限公司 | 一种cnn加速方法及加速器 |
CN115146767B (zh) * | 2021-03-31 | 2024-05-28 | 广东高云半导体科技股份有限公司 | 一种二维卷积加速器及其实现加速二维卷积的方法 |
CN113485836B (zh) * | 2021-07-21 | 2024-03-19 | 瀚博半导体(上海)有限公司 | 一种基于张量切分的张量处理方法和张量处理*** |
CN114724595B (zh) * | 2022-03-18 | 2023-03-10 | 华中科技大学 | 一种卷积运算加速器及卷积运算方法 |
CN114638352B (zh) * | 2022-05-18 | 2023-05-30 | 成都登临科技有限公司 | 一种处理器架构、处理器及电子设备 |
CN116756472B (zh) * | 2023-08-17 | 2024-03-29 | 深圳云天励飞技术股份有限公司 | 卷积算子计算装置及方法 |
CN116861149B (zh) * | 2023-09-05 | 2024-01-09 | 之江实验室 | 卷积运算的优化方法、装置及处理器 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102592258B (zh) * | 2012-01-04 | 2014-07-09 | 复旦大学 | 一种适用于指纹图像增强的可配置Gabor滤波硬件加速单元 |
US9384168B2 (en) * | 2013-06-11 | 2016-07-05 | Analog Devices Global | Vector matrix product accelerator for microprocessor integration |
US9747546B2 (en) | 2015-05-21 | 2017-08-29 | Google Inc. | Neural network processor |
US10438117B1 (en) * | 2015-05-21 | 2019-10-08 | Google Llc | Computing convolutions using a neural network processor |
US10049322B2 (en) * | 2015-05-21 | 2018-08-14 | Google Llc | Prefetching weights for use in a neural network processor |
CN104915322B (zh) * | 2015-06-09 | 2018-05-01 | 中国人民解放军国防科学技术大学 | 一种卷积神经网络硬件加速方法 |
CN107463990A (zh) * | 2016-06-02 | 2017-12-12 | 国家计算机网络与信息安全管理中心 | 一种卷积神经网络的fpga并行加速方法 |
CN106126481B (zh) * | 2016-06-29 | 2019-04-12 | 华为技术有限公司 | 一种计算***和电子设备 |
US9858636B1 (en) * | 2016-06-30 | 2018-01-02 | Apple Inc. | Configurable convolution engine |
CN106203621B (zh) * | 2016-07-11 | 2019-04-30 | 北京深鉴智能科技有限公司 | 用于卷积神经网络计算的处理器 |
CN107239824A (zh) * | 2016-12-05 | 2017-10-10 | 北京深鉴智能科技有限公司 | 用于实现稀疏卷积神经网络加速器的装置和方法 |
CN106844294B (zh) * | 2016-12-29 | 2019-05-03 | 华为机器有限公司 | 卷积运算芯片和通信设备 |
CN106875011B (zh) * | 2017-01-12 | 2020-04-17 | 南京风兴科技有限公司 | 二值权重卷积神经网络加速器的硬件架构及其计算流程 |
CN108304922B (zh) * | 2017-01-13 | 2020-12-15 | 华为技术有限公司 | 用于神经网络计算的计算设备和计算方法 |
CN106875012B (zh) * | 2017-02-09 | 2019-09-20 | 武汉魅瞳科技有限公司 | 一种基于fpga的深度卷积神经网络的流水化加速*** |
KR102414583B1 (ko) * | 2017-03-23 | 2022-06-29 | 삼성전자주식회사 | 머신 러닝을 수행하는 전자 장치 및 머신 러닝 수행 방법 |
KR102415508B1 (ko) * | 2017-03-28 | 2022-07-01 | 삼성전자주식회사 | 컨볼루션 신경망 처리 방법 및 장치 |
CN106970896B (zh) * | 2017-03-30 | 2020-05-12 | 中国人民解放军国防科学技术大学 | 面向向量处理器的二维矩阵卷积的向量化实现方法 |
US10990648B2 (en) * | 2017-08-07 | 2021-04-27 | Intel Corporation | System and method for an optimized winograd convolution accelerator |
EP3605402B1 (en) * | 2017-08-31 | 2022-08-31 | Cambricon (Xi'an) Semiconductor Co., Ltd. | Chip device and related product |
US10929746B2 (en) * | 2017-11-27 | 2021-02-23 | Samsung Electronics Co., Ltd. | Low-power hardware acceleration method and system for convolution neural network computation |
US11630997B2 (en) * | 2018-01-23 | 2023-04-18 | Samsung Electronics Co., Ltd. | Method and apparatus with bit-serial data processing of a neural network |
US10678508B2 (en) * | 2018-03-23 | 2020-06-09 | Amazon Technologies, Inc. | Accelerated quantized multiply-and-add operations |
CN109409511B (zh) * | 2018-09-25 | 2020-07-28 | 西安交通大学 | 一种用于动态可重构阵列的卷积运算数据流调度方法 |
EP3654247A1 (en) * | 2018-11-15 | 2020-05-20 | IMEC vzw | Convolution engine for neural networks |
US11669733B2 (en) * | 2019-12-23 | 2023-06-06 | Marvell Asia Pte. Ltd. | Processing unit and method for computing a convolution using a hardware-implemented spiral algorithm |
-
2018
- 2018-03-27 CN CN201810259875.1A patent/CN110210610B/zh active Active
-
2019
- 2019-02-19 WO PCT/CN2019/075431 patent/WO2019184619A1/zh active Application Filing
-
2020
- 2020-06-01 US US16/888,918 patent/US11200092B2/en active Active
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021073053A1 (zh) * | 2019-10-15 | 2021-04-22 | 百度在线网络技术(北京)有限公司 | 用于卷积运算的装置和方法 |
US11556614B2 (en) | 2019-10-15 | 2023-01-17 | Apollo Intelligent Driving Technology (Beijing) Co., Ltd. | Apparatus and method for convolution operation |
CN110930290A (zh) * | 2019-11-13 | 2020-03-27 | 东软睿驰汽车技术(沈阳)有限公司 | 一种数据处理方法及装置 |
CN111199273A (zh) * | 2019-12-31 | 2020-05-26 | 深圳云天励飞技术有限公司 | 卷积计算方法、装置、设备及存储介质 |
CN111199273B (zh) * | 2019-12-31 | 2024-03-26 | 深圳云天励飞技术有限公司 | 卷积计算方法、装置、设备及存储介质 |
CN112614040A (zh) * | 2020-12-16 | 2021-04-06 | 上海壁仞智能科技有限公司 | 用于卷积计算的方法、计算设备和计算机可读存储介质 |
CN112614040B (zh) * | 2020-12-16 | 2021-09-21 | 上海壁仞智能科技有限公司 | 用于卷积计算的方法、计算设备和计算机可读存储介质 |
WO2023004762A1 (zh) * | 2021-07-30 | 2023-02-02 | 华为技术有限公司 | 计算机***和数据处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110210610B (zh) | 2023-06-20 |
WO2019184619A1 (zh) | 2019-10-03 |
US20200293379A1 (en) | 2020-09-17 |
US11200092B2 (en) | 2021-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110210610A (zh) | 卷积计算加速器、卷积计算方法及卷积计算设备 | |
CN107886167B (zh) | 神经网络运算装置及方法 | |
CN104899182B (zh) | 一种支持可变分块的矩阵乘加速方法 | |
CN105681628B (zh) | 一种卷积网络运算单元及可重构卷积神经网络处理器和实现图像去噪处理的方法 | |
CN106951926A (zh) | 一种混合架构的深度学习***方法及装置 | |
CN108564168A (zh) | 一种对支持多精度卷积神经网络处理器的设计方法 | |
CN108875958A (zh) | 使用外积单元的原生张量处理器 | |
KR20170133364A (ko) | 신경망 프로세서에서의 배치 프로세싱 | |
CN107679620A (zh) | 人工神经网络处理装置 | |
CN107632965B (zh) | 可重构的s型运算装置及运算方法 | |
KR20130090147A (ko) | 신경망 컴퓨팅 장치 및 시스템과 그 방법 | |
CN110348571A (zh) | 一种神经网络模型训练方法、装置、芯片和*** | |
CN110348574A (zh) | 一种基于zynq的通用卷积神经网络加速结构及设计方法 | |
US10706353B2 (en) | Integrated circuit | |
EP3104309B1 (en) | Spiking neural network with reduced memory access and reduced in-network bandwidth consumption | |
CN115880132B (zh) | 图形处理器、矩阵乘法任务处理方法、装置及存储介质 | |
CN103049241A (zh) | 一种提高cpu+gpu异构装置计算性能的方法 | |
CN108780524A (zh) | 用于神经网络的运算装置、电路及相关方法 | |
WO2021121274A1 (zh) | 一种神经网络加速电路和方法 | |
CN104461748A (zh) | 一种基于MapReduce的最优本地化任务调度方法 | |
CN109993301A (zh) | 神经网络训练装置及相关产品 | |
CN106776466A (zh) | 一种fpga异构加速计算装置及*** | |
CN117933327A (zh) | 处理装置、处理方法、芯片及电子装置 | |
CN102799564A (zh) | 基于多核dsp平台的fft并行方法 | |
CN113298241B (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 |