CN111931918A - 神经网络加速器 - Google Patents
神经网络加速器 Download PDFInfo
- Publication number
- CN111931918A CN111931918A CN202011012850.5A CN202011012850A CN111931918A CN 111931918 A CN111931918 A CN 111931918A CN 202011012850 A CN202011012850 A CN 202011012850A CN 111931918 A CN111931918 A CN 111931918A
- Authority
- CN
- China
- Prior art keywords
- data
- convolution operation
- module
- processing
- neural network
- 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
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 81
- 238000012545 processing Methods 0.000 claims abstract description 193
- 239000000872 buffer Substances 0.000 claims abstract description 69
- 238000009825 accumulation Methods 0.000 claims abstract description 36
- 238000011176 pooling Methods 0.000 claims description 41
- 230000004913 activation Effects 0.000 claims description 38
- 238000012805 post-processing Methods 0.000 claims description 16
- 238000004458 analytical method Methods 0.000 claims description 12
- 230000008520 organization Effects 0.000 claims description 10
- 230000011218 segmentation Effects 0.000 claims description 6
- 230000003213 activating effect Effects 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 abstract description 10
- 238000005520 cutting process Methods 0.000 abstract description 9
- 238000009826 distribution Methods 0.000 abstract description 3
- 238000013473 artificial intelligence Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 10
- 239000011159 matrix material Substances 0.000 description 7
- 238000003860 storage Methods 0.000 description 5
- 238000013527 convolutional neural network Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 238000000034 method Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 238000005111 flow chemistry technique Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本申请涉及人工智能技术领域,提供了一种神经网络加速器。该神经网络加速器以层为基本单位进行简化设计,各模块可并行运行实现神经网络的各层能在硬件上同时运行以大幅度提升处理速度,而且可由主控模块完成各层运算任务和相应数据的切割分配,再由各模块执行相应层的运算任务即可。而且,该神经网络加速器架构内部还实现了三维乘积累加阵列,由此可大规模并行运行乘法和累加操作,有效地提高卷积计算效率,通过第一第二缓存区还实现卷积运算参数和卷积运算数据在各模块之间的数据复用和高效流转,实现了神经网络的各层之间的数据复用以减少对外的数据访问,从而在提升数据处理效率的同时,也降低了功耗,该神经网络加速器可提高算力功耗比。
Description
技术领域
本申请涉及人工智能技术领域,特别是涉及一种神经网络加速器。
背景技术
随着卷积神经网络在应用上的爆发,对具有高性能、低功耗的神经网络加速器的需求越来越强烈。然而,在对目前的神经网络加速器进行实测过程中发现,这些神经网络加速器的实测算力通常远低于其所标的的峰值算力,而且运算时功耗过大,存在算力功耗比较低的技术问题,影响其在例如嵌入式平台端的应用。
发明内容
基于此,有必要针对传统技术的神经网络加速器存在的算力功耗比较低的技术问题,提供一种神经网络加速器。
一种神经网络加速器,包括:主控模块、数据读写模块和卷积运算模块;所述卷积运算模块包括第一缓存区、第二缓存区和乘积累加阵列;其中,
所述主控模块,用于通过所述数据读写模块读取神经网络各层对应的层解析内容并生成所述卷积运算模块对应的卷积运算操作指令和卷积运算数据读取指令;
所述数据读写模块,用于根据所述卷积运算数据读取指令读取卷积运算输入源数据和卷积运算参数源数据并发送至所述卷积运算模块;
所述卷积运算模块,用于将所述卷积运算输入源数据存储到所述第一缓存区和将所述卷积运算参数源数据存储到第二缓存区,响应于所述主控模块的卷积运算操作指令,由所述第一缓存区从所述卷积运算输入源数据中输出第一预设规模的卷积运算输入数据至乘积累加阵列,由所述第二缓存区从所述卷积运算参数源数据中输出第二预设规模的卷积运算参数数据至所述乘积累加阵列,以使所述乘积累加阵列依据所述卷积运算输入数据和卷积运算参数数据进行乘积累加运算输出卷积运算结果;
其中,所述第二预设规模的第一维度数据规模与所述神经网络的卷积层输出通道数对应,所述第二预设规模的第二维度数据规模和第一预设规模的第三维度数据规模均与卷积核尺寸对应;所述第一预设规模的第四维度数据规模与单次卷积并行数对应;所述乘积累加阵列的第一维度输入规模与所述卷积层输出通道数对应、第二维度输入规模与所述卷积核尺寸对应以及第三维度输入规模与所述单次卷积并行数对应。
在一个实施例中,所述神经网络加速器还包括:卷积后处理模块;其中,所述卷积后处理模块包括:具有预设数据处理带宽的激活处理模块和池化处理模块;所述激活处理模块,用于响应于所述主控模块的激活处理指令,将所述卷积运算模块的卷积运算结果进行激活处理并传输至所述池化处理模块;所述池化处理模块,用于响应于所述主控模块的池化处理指令,将所述激活处理模块输出的激活处理结果进行池化处理并通过所述数据读写模块将所述激活处理结果写入内存。
在一个实施例中,进一步的,所述卷积后处理模块还包括:数据切分模块;其中,所述数据切分模块,用于从所述卷积运算模块接收所述卷积运算结果,并将所述卷积运算结果按照所述数据处理带宽切分后再交由所述激活处理模块进行激活处理。
在一个实施例中,进一步的,所述数据处理带宽与所述乘积累加阵列的输出规模对应;所述乘积累加阵列的输出规模根据所述卷积层输出通道数和所述单次卷积并行数确定。
在一个实施例中,进一步的,所述神经网络加速器还包括:具有所述数据处理带宽的多源数据处理模块;所述多源数据处理模块包括第一数据输入端和第二数据输入端;所述第一数据输入端,用于从所述卷积运算模块、卷积后处理模块和/或内存中读取数据;所述第二数据输入端,用于从内存中读取数据;其中,所述多源数据处理模块,用于响应于所述主控模块的多源数据处理指令,将通过所述第一数据输入端读取的数据作为第一待处理数据,将通过所述第二数据输入端读取的数据作为第二待处理数据,并对所述第一待处理数据和所述第二待处理数据进行由所述多源数据处理指令所指示的相应处理。
在一个实施例中,进一步的,所述由所述多源数据处理指令所指示的相应处理包括数据拼接处理、数据相加处理和/或全连接处理。
在一个实施例中,进一步的,所述由所述多源数据处理指令所指示的相应处理包括所述全连接处理时,所述第一待处理数据和第二待处理数据均来源于内存。
在一个实施例中,所述第一缓存区包括写对齐单元、第一缓冲单元和读对齐单元;其中,所述写对齐单元,用于将所述卷积运算输入源数据按照预设数据处理带宽进行对齐后写入所述第一缓冲单元;所述读对齐单元,用于将从所述第一缓冲单元中读取的数据按照所述预设数据处理带宽对齐后再输出至所述乘积累加阵列。
在一个实施例中,进一步的,所述第一缓存区还包括数据组织单元;所述数据组织单元,用于将从所述读对齐单元输出的卷积运算输入数据组织成与所述单次卷积并行数匹配的卷积运算输入数据后输出至所述乘积累加阵列。
在一个实施例中,所述第二缓存区包括多个规格与所述神经网络的卷积层输出通道数对应的第二缓冲单元,用于按照所述规格存储所述卷积运算参数源数据。
上述神经网络加速器以层为基本单位进行简化设计,各模块可并行运行实现神经网络的各层能在硬件上同时运行以大幅度提升处理速度,而且可由主控模块完成各层运算任务和相应数据的切割分配,再由各模块执行相应层的运算任务即可。而且,该神经网络加速器架构内部还实现了三维乘积累加阵列,由此可大规模并行运行乘法和累加操作,有效地提高卷积计算效率,通过第一第二缓存区还实现卷积运算参数和卷积运算数据在各模块之间的数据复用和高效流转,实现了神经网络的各层之间的数据复用以减少对外的数据访问,从而在提升数据处理效率的同时,也降低了功耗,该神经网络加速器可提高算力功耗比。
附图说明
图1为一个实施例中神经网络加速器的架构示意图;
图2为一个实施例中层解析内容在内存中的排列示意图;
图3为一个实施例中主控模块的架构示意图;
图4为一个实施例中卷积运算模块的架构示意图;
图5为一个实施例中第二缓冲单元的结构示意图;
图6为一个实施例中第一缓冲单元的结构示意图;
图7为一个实施例中卷积后处理模块的架构示意图;
图8为一个实施例中池化处理模块的架构示意图;
图9为一个实施例中多源数据处理模块的架构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供了一种神经网络加速器,该神经网络加速器采用以神经网络的层为基本单位进行设计,即把“层”作为基本的处理单元,基于硬件实现对神经网络各层的处理以实现对例如卷积神经网络(CNN,Convolutional Neural Networks)等神经网络的加速。如图1所示,图1为一个实施例中神经网络加速器的架构示意图,该神经网络加速器可以包括主控模块、数据读写模块、卷积运算模块,在此基础之上,还可以进一步包括激活处理模块、池化处理模块和多源数据处理模块等。其中,卷积运算模块可以主要负责卷积操作,激活处理模块负责非线性操作等,而这些模块都可以并行运行,以实现神经网络的各层都能在器硬件同时运行,大幅度提升处理速度。
对于该神经网络加速器在内存中的数据组织方式,获取到神经网络架构文件后,神经网络加速器的驱动程序会解析该架构文件并把解析的内容存储在内存中的指定位置。其中,解析的内容包括神经网络各层对应的层解析内容,每层对应的层解析内容会在内存中占用同样大小的内存空间,而激活处理模块和池化处理模块可与上一层即卷积运算模块对应的层合并而无需额外占用一层,各层对应的层解析内容在内存中连续排放,最后一层对应的层解析内容可设置结束标记,用于表示该神经网络的结束。如图2所示为层解析内容在内存中的排列示意图,每次处理器发起神经网络计算任务时,会将层解析内容在内存中的首地址传给该神经网络加速器,神经网络加速器的主控模块可通过数据读写模块根据该首地址从内存指定位置逐层读取层解析内容,该层解析内容可以包括各层所需执行的操作指令和执行相应操作时所需数据的数据存储地址,依据该数据存储地址可读取到执行相应操作时所需数据,而无需将这些数据都存储到内存当中。
具体的,神经网络加速器的主控模块通过数据读写模块读取到神经网络各层对应的层解析内容后,可生成卷积运算模块对应的卷积运算操作指令和卷积运算数据读取指令,该卷积运算数据读取指令可发送至数据读写模块,以使该数据读写模块根据该卷积运算数据读取指令读取卷积运算输入源数据和卷积运算参数源数据,该卷积运算输入源数据可以是需要进行卷积运算的图像数据,卷积运算参数源数据可以是神经网络的权重参数等数据,数据读写模块读取到这些卷积运算输入源数据和卷积运算参数源数据后,进一步将该卷积运算输入源数据和卷积运算参数源数据发送给卷积运算模块进行卷积运算。
参考图1,卷积运算模块包括第一缓存区、第二缓存区和乘积累加阵列。其中,卷积运算模块可用于将数据读写模块传入的卷积运算输入源数据存储到第一缓存区,将数据读写模块传入的卷积运算参数源数据存储到第二缓存区。如前所述,主控模块还需要将卷积运算操作指令发送至卷积运算模块,该卷积运算模块响应于该主控模块发送的卷积运算操作指令,由第一缓存区从卷积运算输入源数据中输出具有第一预设规模的卷积运算输入数据至乘积累加阵列,并且由第二缓存区从卷积运算参数源数据中输出具有第二预设规模的卷积运算参数数据至乘积累加阵列,以使该乘积累加阵列依据卷积运算输入数据和卷积运算参数数据进行乘积累加运算输出卷积运算结果。
其中,第一预设规模包括第三维度数据规模和第四维度数据规模,该第三、第四维度可以对应于用于组织卷积运算输入数据的二维矩阵的行和列,相应的,第二预设规模包括第一维度数据规模和第二维度数据规模,该第一、第二维度也可以对应于用于组织卷积运算参数数据的二维矩阵的行和列。其中,第一维度数据规模与神经网络的卷积层输出通道数对应,例如对于卷积层输出通道数为32的神经网络,该第一维度数据规模也为32;第二维度数据规模与第三维度数据规模相同,且与卷积核尺寸对应,例如对于卷积核尺寸为2×2的神经网络,则第二维度数据规模与第三维度数据规模均为4;最后,第四维度数据规模与单次卷积并行数对应,例如每次需要同时对图像上的两个卷积框的图像数据进行卷积运算的情况下,第四维度数据规模为2。另外,乘积累加阵列采用三维矩阵,该三维矩阵具有三个维度输入规模,第一维度输入规模与卷积层输出通道数对应,即卷积层输出通道数为32时第一维度输入规模为32,第二维度输入规模与卷积核尺寸对应,即卷积核尺寸为2×2时第二维度输入规模为4,第三维度输入规模与单次卷积并行数对应,即单次卷积并行数为2时第三维度输入规模为2。
对于乘积累加阵列主要是完成卷积运算输入数据与卷积运算参数数据的乘积累加,该乘积累加阵列在运算过程中可以一直累加计算,直到对应点的最终计算结果得到才会结束输出卷积运算结果,采用这种模式的好处是省去了中间半成品累加数据的处理,降低复杂度,而这种模式也对应了在内存中对神经网络各层数据的组织是以卷积层输出通道数为最低维度进行的。示例性的,乘积累加阵列可采用32×4×2矩阵模式,32为卷积层输出通道数,4为线性累加中4个不同的数据点,也就是说,从单次卷积运算来看,每次只能计算与该次卷积运算相关的四次乘积,2表示可以每次运算两个卷积框。从该矩阵的组织方式可以看出,第二缓存区每次需要输出第二预设规模为32×4的卷积运算参数数据给乘积累加阵列,因为卷积运算参数在两个卷积操作之间是共享的,而第一缓存区则每次需要输出第一预设规模为4×2的卷积运算输入数据至乘积累加阵列,因为输入数据在不同卷积层输出通道数对应的卷积运算中是共享的。而乘积累加阵列可通过乘积阵列计算乘积结果后寄存起来,再将乘积结果通过累加阵列完成一次卷积运算的四个数据之间的累加,然后可以再寄存起来跟前期计算结果完成累加得到卷积运算结果。
本实施例提供的神经网络加速器以层为基本单位进行简化设计,各模块可并行运行实现神经网络的各层能在硬件上同时运行以大幅度提升处理速度,而且可由主控模块完成各层运算任务和相应数据的切割分配,再由各模块执行相应层的运算任务即可。而且,该神经网络加速器架构内部还实现了三维乘积累加阵列,由此可大规模并行运行乘法和累加操作,有效地提高卷积计算效率,通过第一第二缓存区还实现卷积运算参数和卷积运算数据在各模块之间的数据复用和高效流转,实现了神经网络的各层之间的数据复用以减少对外的数据访问,从而在提升数据处理效率的同时,也降低了功耗,该神经网络加速器可提高算力功耗比。
在一些实施例中,本申请提供的神经网络加速器可采用强顶层/弱子模块的模式,具体的,可以以主控模块作为顶层,其他模块可视作相应的子模块,作为顶层的主控模块可完成所有运算任务的切割和分配并解决数据依赖性问题,各子模块完成特定的运算功能即可。
结合图1和图3对主控模块的主要功能进行具体说明,主控模块可向其他模块发送如下指令或请求:卷积参数源数据读取请求,用于对读取卷积运算参数源数据任务的切割,该读取任务会发给数据读写模块以使数据读写模块读取卷积运算参数源数据;第二缓存区指令下发,用于完成对卷积运算模块中针对第二缓存区的操作任务的切割,该任务会发给卷积运算模块中的第二缓存区以指示其将卷积运算参数数据组织输出;第一缓存区指令下发,用于完成卷积运算模块中针对第一缓存区的操作任务的切割,该任务会发给卷积运算模块中的第一缓存区以指示其将卷积运算输入数据组织输出,其中,该第一缓存区可以包括两个子缓存区:第一子缓存区和第二子缓存区,用于实现乒乓操作;卷积输入数据读取请求,用于对读取卷积运算输入源数据的任务的切割,该读取任务会发给数据读写模块以使数据读写模块读取输入卷积运算输入源数据,在一些实施例中,该卷积运算输入源数据可以被分成两部分,一部分只给第一子缓存区供应数据,另一部分给第二子缓存区供应数据;卷积输出数据写出请求,用于对存储卷积运算输出结果数据的任务的切割,该任务会发给数据读写模块以将存储的卷积运算输出数据进行写出;卷积输出指令下发请求,用于指示卷积运算模块输出的卷积运算结果数据写出到外部存储区域中。
另外,主控模块还可以具有针对多源数据处理模块的多个指令和请求,其中,多源数据处理模块可以包括数据拼接处理模块、数据相加处理模块和/或全连接处理模块等,这些模块可以分别用于进行数据拼接处理、数据相加处理和全连接处理,这些处理一般需要至少两个输入数据,主控模块针对多源数据处理模块的多个指令和请求中可以包括多源模块第一数据读取请求和多源模块第二数据读取请求,该多源模块第一、第二数据读取请求均可以发送至数据读写模块以使数据读写模块从相应数据源读取数据后发送至多源数据处理模块进行处理,而多源模块指令下发则用于主控模块将多源模块所需执行的指令下发至多源数据处理模块,多源模块数据输出则是发送至数据读写模块,以指示数据读写模块将多源数据处理模型执行指令后得到的数据处理结果进行存储。
对于卷积运算模块,如图4所示,第一缓存区和第二缓存区均可接收来自主控模块的请求和指令,第一缓存区当中可以包括第一子缓存区和第二子缓存区,用于乒乓操作以组织卷积运算输入数据输出给乘积累加阵列;而第二缓存区的内部也可以采用乒乓操作以组织卷积运算参数数据输出给乘积累加阵列。
在一些实施例中,如图5所示,第二缓存区中包括多个规格与神经网络的卷积层输出通道数对应的第二缓冲单元,用于按照规格存储卷积运算输入源数据。具体的,第二缓存区中可以包括例如第二缓冲单元A至第二缓冲单元D四个缓冲单元,这四个缓冲单元的规格是相同的,都用于存储写入的卷积运算参数源数据,并可以在需要读出数据时将卷积运算参数数据输出至乘积累加阵列。
示例性的,第二缓存区可把例如对应于卷积层输出通道数为32的32个卷积运算参数数据存在一起,写入缓冲单元的一个地址中,然后对于一次卷积运算来说,卷积运算参数数据在缓冲单元中的存放位置是线性地址,而考虑到每次卷积运算需要第二缓存区的数据输出速率达到32×8×4bits,因此可以划分出四个缓冲单元(RAM),各缓冲单元的规格为32×8,其中,第二缓冲单元A中存地址(address)满足address%4 ==0这一条件的卷积运算参数数据,以此类推,第二缓冲单元D中存地址满足address%4 ==3这一条件的卷积运算参数数据。当需要输出卷积运算参数数据时,可一次读取出4个缓冲单元(RAM)。在具体实现中,第二缓存区还可以设置一个独立运行的读模块,该读模块可接收主控模块来的请求并判断是否还有存储空间,若有则读取卷积运算参数数据,存入缓冲单元(RAM)存完了就接收下一个请求,而第二缓存区还可以设有一个独立运行的输出模块,它也可接收主控模块来的请求,判断缓冲单元(RAM)存储的数据是否就绪,若是则从缓冲单元(RAM)中读数据输出,输出完了就开始接受下一个请求。
在一个实施例中,如图6所示,第一缓存区可以包括写对齐单元、第一缓冲单元和读对齐单元。其中,写对齐单元可以用于将卷积运算输入源数据按照预设数据处理带宽进行对齐后写入第一缓冲单元;读对齐单元,则可以用于将从第一缓冲单元中读取的数据按照预设数据处理带宽对齐后再输出至乘积累加阵列。
本实施例中,写对齐单元读取得到的卷积运算输入源数据并不一定都是与总线位宽例如8位(该总线位宽可对应于预设数据处理带宽)对齐的,所以灌入到第一缓存区的数据都需要先写入写对齐单元进行对齐,该写对齐单元的作用就是对于长短不一的输入数据,输出都是例如8位对齐的数据,该对齐后的数据可存入第一缓冲单元。而对于读对齐的问题,因为需要读取的卷积运算输入数据并不一定的8位对齐的数据(神经网络第一层一般是通道数为1或者3),所以当取一个卷积核尺寸的卷积运算输入数据时,虽然每次从第一缓冲单元中读到的都是8位对齐的数据,但是出于卷积核尺寸范围内的有效数据可能小于8位,从而出现不对齐的情况,因此,需要设置读对齐单元来解决该问题,该读对其单元的作用就是对于长短不一的输入数据,输出都是8位对齐的数据,然后输出到乘积累加阵列。
在一些实施例中,进一步的,第一缓存区还可以包括数据组织单元;该数据组织单元可以用于将从读对齐单元输出的卷积运算输入数据组织成与单次卷积并行数匹配的卷积运算输入数据后输出至乘积累加阵列。
本实施例中,通过设置数据组织单元可解决需要同时输出两个卷积框(也即单次卷积并行数为2)的数据的问题。具体的,由于乘积累加阵列的设置,第一缓存区需要同时输出两个卷积框的数据,但是读对齐单元通常是一个卷积框接着一个卷积框的数据输出的,由此,本实施例中,数据组织单元会在接收到从读对齐单元输出的卷积运算输入数据时(也即接收到第一个卷积框的数据时),先缓存该第一个卷积框的数据,等从读对齐单元获取到第二个卷积框的数据之后,才一起输出给乘积累加阵列。
在一些实施例中,如图7所示,神经网络加速器还可以包括:卷积后处理模块。其中,该卷积后处理模块可以包括:具有预设数据处理带宽的激活处理模块和池化处理模块;激活处理模块可以用于响应于主控模块的激活处理指令,将卷积运算模块的卷积运算结果进行激活处理并传输至池化处理模块;池化处理模块可以用于响应于主控模块的池化处理指令,将激活处理模块输出的激活处理结果进行池化处理并通过数据读写模块将激活处理结果写入内存。
本实施例中,卷积后处理模块采用流式结构,即激活处理模块和池化处理模块的处理带宽都保持一致,且与总线带宽相同,链路上不会存在瓶颈。
进一步的,卷积后处理模块还可以包括数据切分模块。其中,该数据切分模块用于从卷积运算模块接收卷积运算结果,并将卷积运算结果按照前述数据处理带宽切分后再交由激活处理模块进行激活处理。
具体的,由于激活处理模块和池化处理模块的数据处理带宽需要与总线带宽保持一致,其中,总线带宽与乘积累加阵列的输出规模一致,而该乘积累加阵列的输出规模可以根据卷积层输出通道数和单次卷积并行数确定,例如卷积层输出通道数为32,单次卷积并行数为2,则乘积累加阵列的输出规模为64。示例性的,当总线位宽为64bit,而单个激活处理模块和池化处理模块的数据位宽为8bit,那么激活处理模块和池化处理模块在每轮卷积运算时的数据处理带宽需要均为8Data,因此数据切分模块需要对输入数据进行切分,把卷积运算模块输入过来的数据即卷积运算结果切分成以8个数据为一组供激活处理模块和池化处理模块处理,而激活处理模块需要同时例化8个比较模块,并行完成8个数据的比较。
对于池化处理模块,如图8所示,池化处理模块主要用于实现池化功能,池化处理可分为两个阶段,先由行池化处理单元进行行池化处理,然后再由列池化处理单元对行池化处理后的数据进行列池化处理,行池化处理单元与列池化处理单元结构基本一致,需要并行完成8次比较,以匹配带宽需求。其中,行池化处理完成了同一行数据的两两比较,列池化处理则完成两行数据之间的比较,两者配合实现池化处理的功能。
在一些实施例中,上述神经网络加速器还可以包括:具有前述数据处理带宽的多源数据处理模块。其中,该多源数据处理模块可以包括第一数据输入端和第二数据输入端;该第一数据输入端用于从卷积运算模块、卷积后处理模块和/或内存中读取数据;第二数据输入端,则用于从内存中读取数据;其中,该多源数据处理模块,可以用于响应于主控模块的多源数据处理指令,将通过第一数据输入端读取的数据作为第一待处理数据,将通过第二数据输入端读取的数据作为第二待处理数据,并对第一待处理数据和第二待处理数据进行由多源数据处理指令所指示的相应处理。
如图9所示,多源数据处理模块可以具有两个输入源或称两个数据输入端,分别是第一数据输入端和第二数据输入端,其中,第一数据输入端输入的数据可以来源于卷积运算模块、卷积后处理模块或从内存中读取,而第二数据输入端来源于内存。与前述的卷积后处理模块一样,多源数据处理模块的数据处理带宽也需要与总线带宽保持一致。
其中,由多源数据处理指令所指示的相应处理可以包括数据拼接处理、数据相加处理和/或全连接处理。相应的,多源数据处理模块可以包括三个组成单元,分别实现不同的功能,该多源数据处理模块可以包括数据拼接处理单元、数据相加处理单元和全连接处理单元。其中,数据拼接处理单元用于实现数据拼接功能,可支持卷积层输出通道数不相同的数据之间的拼接。数据相加处理单元则用于实现相加的功能,要求两个数据源输入的数据的尺寸必须一致。全连接处理单元用于实现全连接功能。
具体的,对于数据拼接处理单元,该数据拼接处理单元可通过轮转读取第一数据输入端和第二数据输入端输入的数据得到第一待处理数据和第二待处理数据,例如可以先从第一数据输入端读取N个数据,然后再从第二数据输入端读取M个数据,循环往复),然后输出,以此来实现拼接功能。
对于数据相加处理单元,该数据相加处理可通过同时第一数据输入端和第二数据输入端中读取得到第一待处理数据和第二待处理数据,然后分别相加得到输出结果,该数据相加处理单元采用流水线的结构使得模块的处理带宽与总线带宽保持一致。
对于全连接处理单元,该全连接处理单元用于实现全连接功能,在该全连接处理模式下,第一数据输入端对应于卷积运算输入数据,第二数据输入端对应于卷积运算参数数据,而为了减少本地RAM开销,全连接处理单元每次运算都需要得到一个完备的点。为了减少消耗,该第一待处理数据和第二待处理数据均来源于内存,也即全连接处理单元每次进行全连接运算是,都从外部的DDR(Double Data Rate,双倍速内存)读取卷积运算输入数据和卷积运算参数数据,虽然这样没有复用卷积运算模块中的卷积运算输入数据,但是大大减少了面积,该全连接处理单元还可采用8倍加速比和流水线结构使得该模块的处理带宽与总线带宽保持一致。
本申请提供的神经网络加速器具有如下有益效果:
第一,所采用的指令集简单,使得整个神经网络加速器的设计简单化,有利于简化主控模块的复杂度,从而减少它的面积以及功耗;
第二,架构高度的并行性,神经网络加速器架构内部实现了三维乘法器矩阵,大规模并行运行乘法操作,有效地提高了卷积计算的效率。同时,该神经网络加速器采用了数据读写模块负责数据读写处理,卷积运算模块负责卷积操作,激活处理模块负责非线性操作等,各模块采用流式处理,所有模块并行运行,实现不同的深度神经网络层能在硬件中同时运行,大幅度提升了整个系统的处理速度;
第三,数据高度复用。该神经网络加速器架构通过第一缓存区暂存卷积运算输入数据,帮助卷积运算输入数据复用,同时通过第二缓存区暂存卷积运算参数数据,帮助卷积运算参数数据复用,并且神经网络加速器各模块之间的数据可以高效流转,实现了不同神经网络层之间的数据复用,减少了对外的数据访问,提升了整个系统的处理效率的同时也降低了功耗。
本申请提供的神经网络加速器提升了数据运算的并行运行能力同时降低了运算功耗,提高了神经网络加速器在算力功耗比。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种神经网络加速器,其特征在于,包括:主控模块、数据读写模块和卷积运算模块;所述卷积运算模块包括第一缓存区、第二缓存区和乘积累加阵列;其中,
所述主控模块,用于通过所述数据读写模块读取神经网络各层对应的层解析内容并生成所述卷积运算模块对应的卷积运算操作指令和卷积运算数据读取指令;
所述数据读写模块,用于根据所述卷积运算数据读取指令读取卷积运算输入源数据和卷积运算参数源数据并发送至所述卷积运算模块;
所述卷积运算模块,用于将所述卷积运算输入源数据存储到所述第一缓存区和将所述卷积运算参数源数据存储到第二缓存区,响应于所述主控模块的卷积运算操作指令,由所述第一缓存区从所述卷积运算输入源数据中输出第一预设规模的卷积运算输入数据至乘积累加阵列,由所述第二缓存区从所述卷积运算参数源数据中输出第二预设规模的卷积运算参数数据至所述乘积累加阵列,以使所述乘积累加阵列依据所述卷积运算输入数据和卷积运算参数数据进行乘积累加运算输出卷积运算结果;
其中,所述第二预设规模的第一维度数据规模与所述神经网络的卷积层输出通道数对应,所述第二预设规模的第二维度数据规模和第一预设规模的第三维度数据规模均与卷积核尺寸对应;所述第一预设规模的第四维度数据规模与单次卷积并行数对应;所述乘积累加阵列的第一维度输入规模与所述卷积层输出通道数对应、第二维度输入规模与所述卷积核尺寸对应以及第三维度输入规模与所述单次卷积并行数对应。
2.根据权利要求1所述的神经网络加速器,其特征在于,所述神经网络加速器还包括:卷积后处理模块;其中,所述卷积后处理模块包括:具有预设数据处理带宽的激活处理模块和池化处理模块;
所述激活处理模块,用于响应于所述主控模块的激活处理指令,将所述卷积运算模块的卷积运算结果进行激活处理并传输至所述池化处理模块;
所述池化处理模块,用于响应于所述主控模块的池化处理指令,将所述激活处理模块输出的激活处理结果进行池化处理并通过所述数据读写模块将所述激活处理结果写入内存。
3.根据权利要求2所述的神经网络加速器,其特征在于,所述卷积后处理模块还包括:数据切分模块;其中,
所述数据切分模块,用于从所述卷积运算模块接收所述卷积运算结果,并将所述卷积运算结果按照所述数据处理带宽切分后再交由所述激活处理模块进行激活处理。
4.根据权利要求3所述的神经网络加速器,其特征在于,所述数据处理带宽与所述乘积累加阵列的输出规模对应;所述乘积累加阵列的输出规模根据所述卷积层输出通道数和所述单次卷积并行数确定。
5.根据权利要求2至4任一项所述的神经网络加速器,其特征在于,所述神经网络加速器还包括:具有所述数据处理带宽的多源数据处理模块;所述多源数据处理模块包括第一数据输入端和第二数据输入端;所述第一数据输入端,用于从所述卷积运算模块、卷积后处理模块和/或内存中读取数据;所述第二数据输入端,用于从内存中读取数据;其中,
所述多源数据处理模块,用于响应于所述主控模块的多源数据处理指令,将通过所述第一数据输入端读取的数据作为第一待处理数据,将通过所述第二数据输入端读取的数据作为第二待处理数据,并对所述第一待处理数据和所述第二待处理数据进行由所述多源数据处理指令所指示的相应处理。
6.根据权利要求5所述的神经网络加速器,其特征在于,所述由所述多源数据处理指令所指示的相应处理包括数据拼接处理、数据相加处理和/或全连接处理。
7.根据权利要求6所述的神经网络加速器,其特征在于,所述由所述多源数据处理指令所指示的相应处理包括所述全连接处理时,所述第一待处理数据和第二待处理数据均来源于内存。
8.根据权利要求1所述的神经网络加速器,其特征在于,所述第一缓存区包括写对齐单元、第一缓冲单元和读对齐单元;其中,
所述写对齐单元,用于将所述卷积运算输入源数据按照预设数据处理带宽进行对齐后写入所述第一缓冲单元;
所述读对齐单元,用于将从所述第一缓冲单元中读取的数据按照所述预设数据处理带宽对齐后再输出至所述乘积累加阵列。
9.根据权利要求8所述的神经网络加速器,其特征在于,所述第一缓存区还包括数据组织单元;所述数据组织单元,用于将从所述读对齐单元输出的卷积运算输入数据组织成与所述单次卷积并行数匹配的卷积运算输入数据后输出至所述乘积累加阵列。
10.根据权利要求1所述的神经网络加速器,其特征在于,所述第二缓存区包括多个规格与所述神经网络的卷积层输出通道数对应的第二缓冲单元,用于按照所述规格存储所述卷积运算参数源数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011012850.5A CN111931918B (zh) | 2020-09-24 | 2020-09-24 | 神经网络加速器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011012850.5A CN111931918B (zh) | 2020-09-24 | 2020-09-24 | 神经网络加速器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111931918A true CN111931918A (zh) | 2020-11-13 |
CN111931918B CN111931918B (zh) | 2021-02-12 |
Family
ID=73334109
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011012850.5A Active CN111931918B (zh) | 2020-09-24 | 2020-09-24 | 神经网络加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111931918B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112784970A (zh) * | 2020-12-31 | 2021-05-11 | 深圳大普微电子科技有限公司 | 一种硬件加速器、数据处理方法、系统级芯片及介质 |
CN112836803A (zh) * | 2021-02-04 | 2021-05-25 | 珠海亿智电子科技有限公司 | 一种提高卷积运算效率的数据摆放方法 |
CN113159285A (zh) * | 2021-04-14 | 2021-07-23 | 广州放芯科技有限公司 | 神经网络加速器 |
CN113570033A (zh) * | 2021-06-18 | 2021-10-29 | 北京百度网讯科技有限公司 | 神经网络处理单元、神经网络的处理方法及其装置 |
CN113642724A (zh) * | 2021-08-11 | 2021-11-12 | 西安微电子技术研究所 | 一种高带宽存储的cnn加速器 |
CN113743587A (zh) * | 2021-09-09 | 2021-12-03 | 苏州浪潮智能科技有限公司 | 一种卷积神经网络池化计算方法、系统、及存储介质 |
CN114638352A (zh) * | 2022-05-18 | 2022-06-17 | 成都登临科技有限公司 | 一种处理器架构、处理器及电子设备 |
CN115130672A (zh) * | 2022-06-08 | 2022-09-30 | 武汉大学 | 一种软硬件协同优化卷积神经网络计算的方法及装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170135752A (ko) * | 2016-05-31 | 2017-12-08 | 삼성전자주식회사 | 효율적인 스파스 병렬 위노그래드 기반 컨볼루션 체계 |
US20180075338A1 (en) * | 2016-09-12 | 2018-03-15 | International Business Machines Corporation | Convolutional neural networks using resistive processing unit array |
CN108133270A (zh) * | 2018-01-12 | 2018-06-08 | 清华大学 | 卷积神经网络加速方法及装置 |
CN108805267A (zh) * | 2018-05-28 | 2018-11-13 | 重庆大学 | 用于卷积神经网络硬件加速的数据处理方法 |
WO2019079217A1 (en) * | 2017-10-17 | 2019-04-25 | Xilinx, Inc. | NEURAL NETWORK PROCESSING SYSTEM HAVING HOST CONTROLLED CORE ACCELERATORS |
CN109740733A (zh) * | 2018-12-27 | 2019-05-10 | 深圳云天励飞技术有限公司 | 深度学习网络模型优化方法、装置及相关设备 |
CN110738308A (zh) * | 2019-09-23 | 2020-01-31 | 陈小柏 | 一种神经网络加速器 |
US10572409B1 (en) * | 2018-05-10 | 2020-02-25 | Xilinx, Inc. | Sparse matrix processing circuitry |
CN111667051A (zh) * | 2020-05-27 | 2020-09-15 | 上海赛昉科技有限公司 | 适用边缘设备的神经网络加速器及神经网络加速计算方法 |
-
2020
- 2020-09-24 CN CN202011012850.5A patent/CN111931918B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170135752A (ko) * | 2016-05-31 | 2017-12-08 | 삼성전자주식회사 | 효율적인 스파스 병렬 위노그래드 기반 컨볼루션 체계 |
US20180075338A1 (en) * | 2016-09-12 | 2018-03-15 | International Business Machines Corporation | Convolutional neural networks using resistive processing unit array |
WO2019079217A1 (en) * | 2017-10-17 | 2019-04-25 | Xilinx, Inc. | NEURAL NETWORK PROCESSING SYSTEM HAVING HOST CONTROLLED CORE ACCELERATORS |
CN108133270A (zh) * | 2018-01-12 | 2018-06-08 | 清华大学 | 卷积神经网络加速方法及装置 |
US10572409B1 (en) * | 2018-05-10 | 2020-02-25 | Xilinx, Inc. | Sparse matrix processing circuitry |
CN108805267A (zh) * | 2018-05-28 | 2018-11-13 | 重庆大学 | 用于卷积神经网络硬件加速的数据处理方法 |
CN109740733A (zh) * | 2018-12-27 | 2019-05-10 | 深圳云天励飞技术有限公司 | 深度学习网络模型优化方法、装置及相关设备 |
CN110738308A (zh) * | 2019-09-23 | 2020-01-31 | 陈小柏 | 一种神经网络加速器 |
CN111667051A (zh) * | 2020-05-27 | 2020-09-15 | 上海赛昉科技有限公司 | 适用边缘设备的神经网络加速器及神经网络加速计算方法 |
Non-Patent Citations (1)
Title |
---|
方程 等: "一种基于GPU的高性能稀疏卷积神经网络优化", 《计算机工程与科学》 * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112784970A (zh) * | 2020-12-31 | 2021-05-11 | 深圳大普微电子科技有限公司 | 一种硬件加速器、数据处理方法、系统级芯片及介质 |
CN112784970B (zh) * | 2020-12-31 | 2023-08-15 | 深圳大普微电子科技有限公司 | 一种硬件加速器、数据处理方法、系统级芯片及介质 |
WO2022142479A1 (zh) * | 2020-12-31 | 2022-07-07 | 深圳大普微电子科技有限公司 | 一种硬件加速器、数据处理方法、系统级芯片及介质 |
CN112836803A (zh) * | 2021-02-04 | 2021-05-25 | 珠海亿智电子科技有限公司 | 一种提高卷积运算效率的数据摆放方法 |
CN113159285A (zh) * | 2021-04-14 | 2021-07-23 | 广州放芯科技有限公司 | 神经网络加速器 |
CN113159285B (zh) * | 2021-04-14 | 2023-09-05 | 广州放芯科技有限公司 | 神经网络加速器 |
CN113570033A (zh) * | 2021-06-18 | 2021-10-29 | 北京百度网讯科技有限公司 | 神经网络处理单元、神经网络的处理方法及其装置 |
CN113570033B (zh) * | 2021-06-18 | 2023-04-07 | 北京百度网讯科技有限公司 | 神经网络处理单元、神经网络的处理方法及其装置 |
CN113642724A (zh) * | 2021-08-11 | 2021-11-12 | 西安微电子技术研究所 | 一种高带宽存储的cnn加速器 |
WO2023035557A1 (zh) * | 2021-09-09 | 2023-03-16 | 苏州浪潮智能科技有限公司 | 一种卷积神经网络池化计算方法、系统、及存储介质 |
CN113743587A (zh) * | 2021-09-09 | 2021-12-03 | 苏州浪潮智能科技有限公司 | 一种卷积神经网络池化计算方法、系统、及存储介质 |
CN113743587B (zh) * | 2021-09-09 | 2024-02-13 | 苏州浪潮智能科技有限公司 | 一种卷积神经网络池化计算方法、系统、及存储介质 |
CN114638352A (zh) * | 2022-05-18 | 2022-06-17 | 成都登临科技有限公司 | 一种处理器架构、处理器及电子设备 |
CN115130672A (zh) * | 2022-06-08 | 2022-09-30 | 武汉大学 | 一种软硬件协同优化卷积神经网络计算的方法及装置 |
CN115130672B (zh) * | 2022-06-08 | 2024-03-08 | 武汉大学 | 一种软硬件协同优化卷积神经网络计算的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111931918B (zh) | 2021-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111931918B (zh) | 神经网络加速器 | |
CN110516801B (zh) | 一种高吞吐率的动态可重构卷积神经网络加速器 | |
CN111199273B (zh) | 卷积计算方法、装置、设备及存储介质 | |
CN112840356A (zh) | 运算加速器、处理方法及相关设备 | |
CN111898733B (zh) | 一种深度可分离卷积神经网络加速器架构 | |
CN110738308B (zh) | 一种神经网络加速器 | |
CN106846235B (zh) | 一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法及系统 | |
CN111897579A (zh) | 图像数据处理方法、装置、计算机设备和存储介质 | |
CN109993293B (zh) | 一种适用于堆叠式沙漏网络的深度学习加速器 | |
US9378533B2 (en) | Central processing unit, GPU simulation method thereof, and computing system including the same | |
US20060161720A1 (en) | Image data transmission method and system with DMAC | |
CN110705702A (zh) | 一种动态可扩展的卷积神经网络加速器 | |
CN111047008A (zh) | 一种卷积神经网络加速器及加速方法 | |
CN110991619A (zh) | 神经网络处理器、芯片和电子设备 | |
CN113516236A (zh) | 基于zynq平台的vgg16网络并行加速处理方法 | |
US20220113944A1 (en) | Arithmetic processing device | |
CN111091181A (zh) | 卷积处理单元、神经网络处理器、电子设备及卷积运算方法 | |
CN116167419A (zh) | 一种兼容N:M稀疏的Transformer加速器的架构及加速方法 | |
CN113191491A (zh) | 多维度并行的人工智能处理器架构 | |
US20230376733A1 (en) | Convolutional neural network accelerator hardware | |
CN111047037B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN111047035A (zh) | 神经网络处理器、芯片和电子设备 | |
CN101399978B (zh) | 硬件解码器中参考帧数据的读取方法及其装置 | |
CN114330687A (zh) | 数据处理方法及装置、神经网络处理装置 | |
KR20220124530A (ko) | 뉴럴 프로세싱 장치 및 뉴럴 프로세싱 장치의 동작 방법 |
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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: Floor 25, Block A, Zhongzhou Binhai Commercial Center Phase II, No. 9285, Binhe Boulevard, Shangsha Community, Shatou Street, Futian District, Shenzhen, Guangdong 518000 Patentee after: Shenzhen Youjia Innovation Technology Co.,Ltd. Address before: 518051 1101, west block, Skyworth semiconductor design building, 18 Gaoxin South 4th Road, Gaoxin community, Yuehai street, Nanshan District, Shenzhen City, Guangdong Province Patentee before: SHENZHEN MINIEYE INNOVATION TECHNOLOGY Co.,Ltd. |