CN108171317B - 一种基于soc的数据复用卷积神经网络加速器 - Google Patents
一种基于soc的数据复用卷积神经网络加速器 Download PDFInfo
- Publication number
- CN108171317B CN108171317B CN201711207259.3A CN201711207259A CN108171317B CN 108171317 B CN108171317 B CN 108171317B CN 201711207259 A CN201711207259 A CN 201711207259A CN 108171317 B CN108171317 B CN 108171317B
- Authority
- CN
- China
- Prior art keywords
- image
- address
- data
- weight
- state machine
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- 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/60—Memory management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Life Sciences & Earth Sciences (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Image Input (AREA)
- Image Processing (AREA)
Abstract
本发明提供了一种基于SOC的数据复用卷积神经网络加速器,本方法提出对卷积神经网络的图像输入、权重参数以及偏置参数等输入数据进行分组,将大量的输入数据划分为可复用的块数据,并通过控制状态机实现复用数据块的读取。卷积神经网络参数量大、所需计算能力强,因此卷积神经网络加速器需要提供很大的数据带宽以及计算能力。本发明对大负载进行了可复用切分,并通过控制单元以及地址产生单元实现数据的复用,减小了卷积神经网络运算的延迟以及所需带宽,提高了运算效率。
Description
技术领域
本发明涉及一种基于SOC的数据复用卷积神经网络加速器,特别涉及嵌入式设备对卷积神经网络,属于嵌入式应用领域。
背景技术
随着卷积神经网络CNN(Convolutional Neural Network)的不断发展与优化,其在模式识别领域得到了广泛应用,包括图像识别、目标识别,图像分割,目标跟踪等领域,并且取得了显著的效果,展现了卷积神经网络在模式识别算法中的主导地位。
然而深度卷积神经网络十分耗费计算资源和存储资源,无法直接应用在嵌入式端。用于图像识别的卷积神经网络AlexNet,卷积和全连接操作一共包括1.45G个操作,参数量为58M,如果每个参数占用4个字节,则模型参数需要232M个字节,这对于片上存储是十分庞大的,如果将这些参数存储在外存中,会显著降低处理速率,而一幅图像的处理就需要1.5G个操作,这还仅包括卷积和全连接的操作,不包括池化和正则化操作。虽然卷积神经网络参数量大,但其运算比较规律且大量数据需要重复使用,因此需要通过数据复用提高卷积神经网络运算效率,降低整个系统所需能耗。
发明内容
本发明的技术解决的问题是:克服了现有卷积神经网络运算效率低和大量访问外存导致的时延和功耗浪费的不足之处,提供了一种基于SOC的数据复用卷积神经网络加速器,充分利用输入数据、卷积核数据的重复利用特点,提高了嵌入式设备对卷积神经网络的运算性能。
本发明的技术解决方案是:一种基于SOC的数据复用卷积神经网络加速器,该加速器包括图像地址生成器、图像缓存区、移位逻辑、权重地址生成器、权重缓存区、偏置地址生成器、偏置缓存区、控制单元和计算单元阵列,控制单元接收外部输入的启动控制信号,之后,根据预设时序,控制偏置地址生成器、权重地址生成器和图像地址生成器产生偏置写控制信号、权重写控制信号和图像写控制信号,将偏置、权重和图像数据分块存入相应的缓冲区,之后,再控制偏置地址生成器、权重地址生成器和图像地址生成器产生相应缓冲区的读写地址,权重缓存区、偏置缓存区分别将相应地址内的权重、偏置数据输出至计算单元阵列;图像缓冲区将相应地址内的图像数据输出至移位逻辑,移位逻辑根据控制单元发送的移位控制信号和层运算序号,将图像数据进行移位处理之后输出至计算单元阵列,计算单元阵列,根据权重数据、偏置数据、图像数据,采用分块运算的方法,对图像数据进行多层卷积、池化以及多层全连接运算。
所述控制单元包括主控制模块、权重控制状态机,偏置控制状态机、图像控制状态机和写控制状态机,其中:
主控制模块主控制模块,接收外部输入的启动控制信号,之后,根据预设的卷积神经网络加速器各层卷积运算的时间和全连接运算时间,按照预设时序,将卷积、池化和全连接运算过程都分成多个层运算,每个层运算分为多个块运算,在层运算开始之前,向写控制状态机发送写控制启动指令,当前层运算所需数据全部写入相应的缓冲区后,向写控制状态机发出写控制停止信号;在层运算开始时刻,向权重读控制状态机、偏置读控制状态机、图像读控制状态机发送权重读控制启动信号,向移位逻辑发送移位控制信号和层运算序号;在层运算结束时刻和块运算结束时刻,向权重读控制状态机、偏置读控制状态机、图像读控制状态机,发送层运算结束标志和块运算结束标志信号,向移位逻辑发送的移位控制信号和层运算序号;
权重控制状态机、偏置控制状态机、图像控制状态机和写控制状态机,在主控制模块的控制下,分别向权重缓存区、偏置缓存区、图像缓存区输出相应的读使能信号、写使能信号和片选信号,向权重地址生成器、偏置地址生成器、图像地址生成器输出相应的地址控制信号,权重地址生成器、偏置地址生成器、图像地址生成器根据地址控制信号产生相应的读写地址。
所述图像缓存以及权重缓存均为分组存储结构,图像缓存区和权重缓存区分成M个子缓存区,M个子缓存区的片选控制端、读写使能端并联连接,地址线相互独立,各子缓存区相对应地址用来存储一个一次块运算所需要的图像数据或者权重数据,同时写入或读出,M为一次块运算所对应的最大图像数据大小。
权重地址生成器、偏置地址生成器包括计数器,计数器的计数值作为地址输出至相应的缓冲区,当地址复位信号“有效”时,计数器的计数值清零;当地址保持信号有效时,计数器的计数值不变;当地址递增信号有效时,计数器的计数值加1。
图像地址生成器,包括读地址生成模块、写地址生成模块、读写地址选通模块;
写地址生成模块,包括计数器,计数器的计数值作为图像写地址输出至读写地址选通模块,当地址复位信号“有效”时,计数器的计数值清零;当地址保持信号有效时,计数器的计数值不变;当地址递增信号有效时,计数器的计数值加1。
读地址生成模块,包括R个读地址生成子模块,所述R为层数。每个读地址生成子模块用来控制产生一次层运算中的所有块运算所需要的地址,根据层序号选通相应层的读地址生成子模块,对于某一层的处理,输入为三维图像数据,首先沿图像通道方向递增地址,当图像通道方向数据读取完成,按图像二维平面换列方向递增地址后,继续沿图像通道方向递增地址,当图像二维平面换列方向和图像通道方向数据均读取完成,按图像二维平面换行方向递增地址,继续沿图像通道方向递增地址,直到整块数据处理完成。
所述图像数据包括X*Y*N块,X表示在行方向的块数,X表示在列方向的块数,N表示在通道方向的块数;每次从外部读取一块三维图像数据存入M个子缓冲区内,每个子缓冲区对应存入三维数据块中的一个元素,提取数据块的顺序如下:
(1)、初始化数据块的行序号i为1,列序号j为1,通道序号k为1;
(2)、依次读取行序号为i,列序号j,通道序号为k的数据块;
(3)、将k加1更新k,重复执行步骤(2)~(3),直到k大于等于N,进入步骤(4);
(4)、将j加1更新j,令k等于1,重复执行步骤(2)~(4),直到j大于等于Y,k大于等于N进入步骤(5);
(5)、将i加1更新i,k=1,j=1,重复执行步骤(2)~(5),直到i大于等于X,j大于等于Y,k大于等于N,结束。
卷积运算时,移位逻辑根据卷积层序号,由此确定卷积运算时二维平面方向两个维度的大小,根据这两个维度的大小变更图像数据组成的序列顺序,并根据控制单元发出的移位控制信号确定图像数据序列移位的多少,使得进入至计算单元阵列的每次块运算的图像数据与权重数据对齐,在池化或者全连接处理时,移位逻辑直接将缓冲区中的图像数据输出到计算单元阵列。
所述计算单元阵列包括乘法器阵列、加法器树、累加器、非线性单元和选通输出单元,其中:
乘法器阵列,将图像数据与权重相乘;
加法器树,将乘法器阵列的所有乘积项相加,结果输出到累加器;
累加器,块运算结束时清零,对加法器树输出的结果进行累加,并将累加结果作为卷积结果输出至非线性单元
非线性单元,对卷积结果进行池化处理,并输出,例如:比较累加结果与0,取较大值输出;
选通输出单元,接收控制单元发送的输出选通信号,选通卷积结果或者池化结果输出。
本发明与现有技术相比的有益效果是:
(1)、本发明通过多次读取数据量更小的卷积权重和偏置参数保证了数据量巨大的图像输入数据只需从外存读取一次,降低了外存访问总时延以及相应功耗,并且提高了卷积神经网络的运算效率;
(2)、本发明采用主控单元和地址产生单元分开的方式,分别负责卷积神经网络当前运算数据块状态的产生以及当前运算数据块中每个数据具体地址的产生,采用分开的控制结构使得整个地址控制状态机分为两个部分,相对于采用一个地址控制单元,其状态机更精简,面积开销以及功耗更小。
附图说明
图1是本发明卷积神经网络加速器的整体结构框图;
图2是本发明控制单元的时序示意图;
图3是本发明计算单元阵列的结构框图;
图4是本发明图像读地址生成状态机;
图5是本发明图像数据的具体分块存储方式;
图6是本发明图像读地址生成中y方向地址递增的具体示意图;
图7是本发明图像读地址生成中x方向地址递增的具体示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。
如图1所示,本发明提供的一种基于SOC(片上系统)的数据复用卷积神经网络加速器,包括图像地址生成器、图像缓存区、移位逻辑、权重地址生成器、权重缓存区、偏置地址生成器、偏置缓存区、控制单元和计算单元阵列,控制单元接收外部输入的启动控制信号,之后,根据预设时序,控制偏置地址生成器、权重地址生成器和图像地址生成器产生偏置写控制信号、权重写控制信号和图像写控制信号,将偏置、权重和图像数据分块存入相应的缓冲区,之后,再控制偏置地址生成器、权重地址生成器和图像地址生成器产生相应缓冲区的读写地址,权重缓存区、偏置缓存区分别将相应地址内的权重、偏置数据输出至计算单元阵列;图像缓冲区将相应地址内的图像数据输出至移位逻辑,移位逻辑根据控制单元发送的移位控制信号和层运算序号,将图像数据进行移位处理之后输出至计算单元阵列,计算单元阵列,根据权重数据、偏置数据、图像数据,采用分块运算的方法,对图像数据进行多层卷积、池化以及多层全连接运算。所述预设时序如图2所示。
下面分别介绍各组成部分:
1、控制单元
控制单元包括主控制模块、权重控制状态机,偏置控制状态机、图像控制状态机和写控制状态机。
1.1主控制模块
主控制模块主控制模块,接收外部输入的启动控制信号,之后,根据预设的卷积神经网络加速器各层卷积运算的时间和全连接运算时间,按照预设时序,将卷积、池化和全连接运算过程都分成多个层运算,每个层运算分为多个块运算,在层运算开始之前,向写控制状态机发送写控制启动指令,当前层运算所需数据全部写入相应的缓冲区后,向写控制状态机发出写控制停止信号;在层运算开始时刻,向权重读控制状态机、偏置读控制状态机、图像读控制状态机发送权重读控制启动信号,向移位逻辑发送移位控制信号和层运算序号;在层运算结束时刻和块运算结束时刻,向权重读控制状态机、偏置读控制状态机、图像读控制状态机,发送层运算结束标志和块运算结束标志信号,向移位逻辑发送的移位控制信号和层运算序号。
权重控制状态机、偏置控制状态机、图像控制状态机和写控制状态机,,在主控制模块的控制下,分别向权重缓存区、偏置缓存区、图像缓存区输出相应的读使能信号、写使能信号和片选信号,向权重地址生成器、偏置地址生成器、图像地址生成器输出相应的地址控制信号,权重地址生成器、偏置地址生成器、图像地址生成器根据地址控制信号产生相应的读写地址。
卷积神经网络加速器共包含多个阶段,分别对应idle阶段、第1~第N1卷积层运算阶段和池化层运算阶段,以及第1~第N2全连接层运算阶段,控制单元开始时处于idle阶段,当外部给加速器启动信号后进入第1卷积层运算阶段,待第一卷积层运算阶段处理完成进入第2卷积层运算阶段,依次进行,直到处理完成。除idle阶段,每个阶段控制单元都采用相似的模式控制四个主要的子状态机,分别为写控制状态机、权重读控制状态机,偏置读控制状态机、图像读控制状态机,控制相应数据的地址产生以及读写。
1.2、权重读控制状态机
权重地址控制信号包括权重读地址复位信号、权重读地址保持信号、权重读地址递增信号,所述权重读控制状态机包括3个状态,分别为RW_state0、RW_state1、RW_state2,初始化为RW_state0,状态机的具体操作为:
RW_state0:读取读控制启动信号,当读控制启动信号有效时,发出“有效”权重读地址复位信号,一个时钟周期之后,向权重缓存区发出产生“有效”的权重片选信号,并将和置为“读使能”状态的权重读写使能信号,进入RW_state1,否则,继续保持RW_state0状态;
RW_state1:将权重地址复位信号置为“无效”,产生“有效”的权重地址保持信号;读取块运算结束标志信号和层运算结束标志信号,当块运算结束标志信号“有效”时,进入状态RW_state2;当层运算结束标志信号“有效”时,则回到RW_state0;
RW_state2:将权重地址保持信号置为“无效”,产生“有效”的权重地址递增信号,一个时钟周期后跳转回RW_state1。
1.3偏置读控制状态机
偏置读控制信号包括偏置读地址复位信号、偏置读地址保持信号、偏置读地址递增信号,所述偏置读控制状态机与权重读控制状态机设计相同,偏置读控制状态机包括3个状态,分别为RB_state0、RB_state1、RB_state2,初始化为RB_state0,状态机的具体操作为:
RB_state0:读取读控制启动信号,当读控制启动信号有效时,发出“有效”偏置读地址复位信号,一个时钟周期之后,向偏置缓存区发出“有效”的偏置片选信号和置为“读使能”状态的偏置读写使能信号,进入RB_state1,否则,继续保持RB_state0状态;
RB_state1:将偏置地址复位信号置为“无效”,产生“有效”的偏置地址保持信号;读取块运算结束标志信号和层运算结束标志信号,当块运算结束标志信号“有效”时,进入状态RB_state2;当层运算结束标志信号“有效”时,则回到RB_state0;
RB_state2:将偏置地址保持信号置为“无效”,产生“有效”的偏置地址递增信号,一个时钟周期后跳转回RB_state1。
1.4图像读控制状态机
图像读地址控制信号包括图像读地址复位信号、图像读地址保持信号、图像读地址递增信号,所述图像读控制状态机包括3个状态,分别为RP_state0、RP_state1、RP_state2,具体操作为:
RP_state0:读取读控制启动信号,当读控制启动信号有效时,发出“有效”图像读地址复位信号,一个时钟周期之后,向图像缓冲区发出产生“有效”的图像片选信号和,并将读写使能信号置为“读使能”状态的将读写使能信号,进入RP_state1,否则,继续保持RP_state0状态;
RP_state1:将图像读地址复位信号置为“无效”,产生“有效”的图像读地址递增信号,读取块运算结束标志信号和层运算结束标志信号,当读取块运算结束标志信号“有效”时,跳转到RP_state2状态;当层运算结束标志信号“有效”时,则回到RP_state0;
RP_state2:发出“有效”图像读地址复位信号,一个时钟周期之后,跳转到RP_state1。
1.5写控制状态机
写控制信号包括写地址复位信号、写地址保持信号、写地址递增信号、片选信号,写控制状态机包括:两个状态,分别为wr_state0、wr_state1,具体操作为:
wr_state0:读取写控制启动信号,当写控制启动信号有效时,发出“有效”的写地址复位信号,一个时钟周期之后,产生“有效”的片选信号,并将读写使能信号置为“写使能”状态,进入wr_state1,否则,继续保持wr_state0状态;
wr_state1:将写地址复位信号置为“无效”,产生“有效”的写地址递增信号,读取写控制停止信号,当写控制停止信号“有效”,跳转到wr_state0。
2、图像缓存区、权重缓存区、偏置缓存区
为了节约存储空间提高读取速度,本发明图像缓存以及权重缓存均为分组存储结构,图像缓存区和权重缓存区分成M个子缓存区,M个子缓存区的片选控制端、读写使能端并联连接,地址线相互独立,各子缓存区相对应地址用来存储一个一次块运算所需要的图像数据或者权重数据,同时写入或读出。M为一次块运算所对应的最大图像数据大小。
偏置缓存为普通的SRAM,存储数据深度大于加速器内运算的通道数即可。
3、地址生成器
为了方便存取数据,假设三维图像包括X*Y*N块,X表示在行方向的块数,X表示在列方向的块数;N表示在通道方向的块数;每次从外部读取一块三维图像数据存入M个子缓冲区内,每个子缓冲区对应存入三维数据块中的一个元素,提取数据块的顺序如下:
(1)、初始化数据块的行序号i为1,列序号j为1,通道序号k为1;
(2)、依次读取行序号为i,列序号j,通道序号为k的数据块;
(3)、将k加1更新k,重复执行步骤(2)~(3),直到k大于等于N,进入步骤(4);
(4)、将j加1更新j,令k等于1,重复执行步骤(2)~(4),直到j大于等于Y,k大于等于N进入步骤(5);
(5)、将i加1更新i,k=1,j=1,重复执行步骤(2)~(5),直到i大于等于X,j大于等于Y,k大于等于N,结束。
权重地址生成器、偏置地址生成器包括计数器,计数器的计数值作为地址输出至相应的缓冲区,当地址复位信号“有效”时,计数器的计数值清零;当地址保持信号有效时,计数器的计数值不变;当地址递增信号有效时,计数器的计数值加1。
图像地址生成器,包括读地址生成模块、写地址生成模块、读写地址选通模块;
写地址生成模块,包括计数器,计数器的计数值作为图像写地址输出至读写地址选通模块,当地址复位信号“有效”时,计数器的计数值清零;当地址保持信号有效时,计数器的计数值不变;当地址递增信号有效时,计数器的计数值加1。
读地址生成模块,包括R个读地址生成子模块,所述R为层数。如图4所示,每个读地址生成子模块用来控制产生一次层运算中的所有块运算所需要的地址,根据层序号选通相应层的读地址生成子模块。,对于某一层的处理,输入为三维图像数据,首先沿图像通道方向递增地址,当图像通道方向数据读取完成,按图像二维平面换列方向递增地址后,继续沿图像通道方向递增地址,当图像二维平面换列方向和图像通道方向数据均读取完成,按图像二维平面换行方向递增地址,继续沿图像通道方向递增地址,直到整块数据处理完成。图5给出了本发明图像数据的具体分块存储方式,图6给出了本发明图像读地址生成中y方向地址递增的具体示意图;图7给出了本发明图像读地址生成中x方向地址递增的具体示意图。每个读地址生成子模块的具体实现:
当层序号为r,定义层内块运算序号为y,y从0开始,步长为1,层内每个块运算的图像数据块数据大小为ar×br×cr时,其中,ar表示图像数据块在行方向上的数据个数,br表示图像数据块在列方向上的数据个数,cr表示图像数据块在通道方向上的数据个数,图像数据块的数据按照逐行、逐列、逐通道的顺序依次存放的第1~第M个子缓冲区中同一地址中。
当y等于0时,所有M个子缓冲区地址为初始地址,其值为1,否则,M个子缓冲区地址按照下列原则确定:
当y不能被cr整除时,所有M个子缓冲区的地址递增;
当y能被cr和ar的乘积整除时,令y除以ar、br、cr的乘积的余数为rem,那么,当w%(ar×br)∈[1+(rem-1)×ar,ar×rem]时,第w个子缓冲区的地址为原地址加1;否则,第w个子缓冲区的地址为原地址减去cr×ar加1;
当y能被cr整除时,令(y/cr)%ar为re,当w除以ar的余数为re时,第w个子缓冲区的地址为原地址加1;否则,第w个子缓冲区的地址为原地址减去cr×ar加1。
5、移位逻辑
由于卷积运算需要卷积核数据在图像数据滑动窗口进行运算,因此需要移位逻辑对图像数据进行相应的移位操作,移位逻辑读取当前卷积运算层序号,由此确定卷积运算时二维平面方向两个维度的大小,根据这两个维度的大小变更图像数据组成的序列顺序,并根据控制单元发出的移位控制信号确定图像数据序列移位的多少,使得进入至计算单元阵列的每次块运算的图像数据与权重数据对齐。在池化或者全连接处理时,移位逻辑直接将缓冲区中的图像数据输出到计算单元阵列。
6、计算单元阵列
如图3所示,计算单元阵列包括乘法器阵列、加法器树、累加器、非线性单元和选通输出单元,其中:
乘法器阵列,将图像数据与权重相乘;
加法器树,将乘法器阵列的所有乘积项相加,结果输出到累加器;
累加器,块运算结束时清零,对加法器树输出的结果进行累加,并将累加结果作为卷积结果输出至非线性单元
非线性单元,对卷积结果进行池化处理,并输出,例如:比较累加结果与0,取较大值输出;
选通输出单元,接收控制单元发送的输出选通信号,选通卷积结果或者池化结果输出;由于卷积运算与全连接运算在运算形式上相同,因此乘法器阵列、加法器树以及累加器共同完成了卷积操作以及全连接操作。
实施例:
卷积神经网络的运算负载主要包括图像输入、卷积神经网络模型本身的权重参数以及偏置参数。图像输入的特点是二维平面方向两个维度较大,范围在1到107,且随着卷积神经网络的层数加深,通道数也逐渐增多,由3增大到512;权重参数一般为卷积核数据,二维平面方向维度为7×7,5×5,3×3,1×1,通道数为3到512;偏置参数每个通道只有一个,因此每层参数只有3到512个。针对这些特点,本发明对不同数据分别存储,并采取分块的方式,即对二维平面方向维度较大的图像输入以及权重参数进行分组存储,将图像存储以及权重存储分为150个组,以提供足够的数据带宽,每组字长为16位,图像缓存位宽为9位,权重缓存位宽为7位。偏置缓存区为常规的一读一写SRAM,位宽为11位,字长为16位。
分组存储的数据需要通过灵活的地址控制实现数据复用,地址控制通过控制单元和地址生成单元共同完成。控制单元负责输出当前正在计算数据块的状态,地址生成单元根据当前数据块的状态生成150组数据的具体地址。如图2所示,控制单元控制加速器依次读取所有的输入,包括权重、偏置和图像,在输入准备好后开始计算并输出。控制单元读取权重时要将DRAM中的数据读取到权重缓存中。控制单元首先要使能权重缓存的片选信号,并且使权重缓存处于写入状态。但是写入权重缓存还需要地址,权重缓存是整块的,不存在多个通道卷积核复用的情况,因此控制单元只需给出地址顺序递增的信号即可,令权重地址生成器产生顺序递增的地址。与此同时,控制单元向其他模块发送无效信号,输出此时也为无效。整个读取权重的过程都处于上述的控制状态下,直到所需权重读取完成进入下一状态。读取偏置与读取权重时类似,只不过控制信号发送有效信号的对象是偏置缓存和偏置地址发生器。
读取图像数据的过程要比读取权重和偏置复杂。片选信号和读写状态信号是一致的,不同在于地址产生。当图像数据恰好分为150个数据的小块时,图像数据的边界非常齐整,所有的小数据块都恰好是150,即没有不完整的数据块,这时的写入地址顺序递增即可,与权重和偏置的地址产生相同。
分组完全的数据存储:分组完全是指输入参数与权重参数恰好可以分为150个组,如图5所示,输入图像大小为25×25×96,首先将输入图像按照卷积核的大小进行分块,卷积核大小为5×5×96,但是图像缓存只有150个分组,无法一次存储2400个数据,因此对每个卷积核大小的图像数据进行进一步拆解,变为5×5×6的小块,这样输入图像被分成了16×5×5=400块,然后将每个5×5×6的小块存到图像缓存的150个组,这个过程一般是从DRAM取数存到SRAM中,而DRAM每次取数的位数一般是32位,因此顺序取出小块的数据依次放到缓存的150个小组中,第一个图像数据块就占用了图像缓存的所有地址为1的缓存,接下来再存储第二个图像数据块,占用图像缓存所有小组的地址为2的缓存,以此类推。
但是第二个数据块从哪个方向选取仍然是一个问题,这个方向的选择对性能有着很大的影响。如果我们从x方向选取第二个数据块,那么计算时最方便的方式就是处理完第一个数据块然后接着处理第二个数据块,这样就会产生一个问题,卷积核一共包含了16个小块的数据,每处理一个小块并没有产生最终的结果,而是中间结果,这样就需要额外的存储,下一次处理的输入就需要11个寄存器存储中间结果,如果是先x方向,后y方向,最后z方向就需要121个寄存器存储中间结果,121个寄存器规模还不是很大,但是如果是对于224×224的图像输入,使用3×3的卷积核,这样的方向选择就需要224×224=50176个寄存器,这样庞大的寄存器阵列非常耗费资源,与此同时控制逻辑也随之更加复杂,如果是对50k个寄存器每个要采取单独的控制,这样的代价是不可承受的。因此对于通道数很多的卷积核应该选择z方向作为第一个存储数据的方向,这样就算通道数很多,只需要一个累加寄存器就可以得到最终的结果,接下来继续处理下一个输出即可。对于x和y方向的选择对于最终的性能几乎没有差别,因此我们就按照习惯设置了x方向优先。
总的来说,本发明通过对负载切分,将易于复用部分缓存到片上,提高了片上存储数据的利用效率,降低了频繁读写外存的延时和功耗,提高了卷积神经网络的运算效率。
本发明说明书中未进行详细描述部分属于本领域技术人员的公知常识。
Claims (7)
1.一种基于SOC的数据复用卷积神经网络加速器,其特征在于包括图像地址生成器、图像缓存区、移位逻辑、权重地址生成器、权重缓存区、偏置地址生成器、偏置缓存区、控制单元和计算单元阵列,控制单元接收外部输入的启动控制信号,之后,根据预设时序,控制偏置地址生成器、权重地址生成器和图像地址生成器产生偏置写控制信号、权重写控制信号和图像写控制信号,将偏置、权重和图像数据分块存入相应的缓冲区,之后,再控制偏置地址生成器、权重地址生成器和图像地址生成器产生相应缓冲区的读写地址,权重缓存区、偏置缓存区分别将相应地址内的权重、偏置数据输出至计算单元阵列;图像缓冲区将相应地址内的图像数据输出至移位逻辑,移位逻辑根据控制单元发送的移位控制信号和层运算序号,将图像数据进行移位处理之后输出至计算单元阵列,计算单元阵列,根据权重数据、偏置数据、图像数据,采用分块运算的方法,对图像数据进行多层卷积、池化以及多层全连接运算;
所述控制单元包括主控制模块、权重控制状态机,偏置控制状态机、图像控制状态机和写控制状态机,其中:
主控制模块,接收外部输入的启动控制信号,之后,根据预设的卷积神经网络加速器各层卷积运算的时间和全连接运算时间,按照预设时序,将卷积、池化和全连接运算过程都分成多个层运算,每个层运算分为多个块运算,在层运算开始之前,向写控制状态机发送写控制启动指令,当前层运算所需数据全部写入相应的缓冲区后,向写控制状态机发出写控制停止信号;在层运算开始时刻,向权重读控制状态机、偏置读控制状态机、图像读控制状态机发送权重读控制启动信号,向移位逻辑发送移位控制信号和层运算序号;在层运算结束时刻和块运算结束时刻,向权重读控制状态机、偏置读控制状态机、图像读控制状态机,发送层运算结束标志和块运算结束标志信号,向移位逻辑发送的移位控制信号和层运算序号;
权重控制状态机、偏置控制状态机、图像控制状态机和写控制状态机,在主控制模块的控制下,分别向权重缓存区、偏置缓存区、图像缓存区输出相应的读使能信号、写使能信号和片选信号,向权重地址生成器、偏置地址生成器、图像地址生成器输出相应的地址控制信号,权重地址生成器、偏置地址生成器、图像地址生成器根据地址控制信号产生相应的读写地址。
2.根据权利要求1所述的一种基于SOC的数据复用卷积神经网络加速器,其特征在于所述图像缓存以及权重缓存均为分组存储结构,图像缓存区和权重缓存区分成M个子缓存区,M个子缓存区的片选控制端、读写使能端并联连接,地址线相互独立,各子缓存区相对应地址用来存储一个一次块运算所需要的图像数据或者权重数据,同时写入或读出,M为一次块运算所对应的最大图像数据大小。
3.根据权利要求1所述的一种基于SOC的数据复用卷积神经网络加速器,其特征在于权重地址生成器、偏置地址生成器包括计数器,计数器的计数值作为地址输出至相应的缓冲区,当地址复位信号“有效”时,计数器的计数值清零;当地址保持信号有效时,计数器的计数值不变;当地址递增信号有效时,计数器的计数值加1。
4.根据权利要求1所述的一种基于SOC的数据复用卷积神经网络加速器,其特征在于图像地址生成器,包括读地址生成模块、写地址生成模块、读写地址选通模块;
写地址生成模块,包括计数器,计数器的计数值作为图像写地址输出至读写地址选通模块,当地址复位信号“有效”时,计数器的计数值清零;当地址保持信号有效时,计数器的计数值不变;当地址递增信号有效时,计数器的计数值加1;
读地址生成模块,包括R个读地址生成子模块,所述R为层数; 每个读地址生成子模块用来控制产生一次层运算中的所有块运算所需要的地址,根据层序号选通相应层的读地址生成子模块,对于某一层的处理,输入为三维图像数据,首先沿图像通道方向递增地址,当图像通道方向数据读取完成,按图像二维平面换列方向递增地址后,继续沿图像通道方向递增地址,当图像二维平面换列方向和图像通道方向数据均读取完成,按图像二维平面换行方向递增地址,继续沿图像通道方向递增地址,直到整块数据处理完成。
5.根据权利要求1所述的一种基于SOC的数据复用卷积神经网络加速器,其特征在于所述图像数据包括X*Y*N块,X表示在行方向的块数,X表示在列方向的块数,N表示在通道方向的块数;每次从外部读取一块三维图像数据存入M个子缓冲区内,每个子缓冲区对应存入三维数据块中的一个元素,提取数据块的顺序如下:
(1)、初始化数据块的行序号i为1,列序号j为1,通道序号k为1;
(2)、依次读取行序号为i,列序号j,通道序号为k的数据块;
(3)、将k加1更新k,重复执行步骤(2)~(3),直到k大于等于N,进入步骤(4);
(4)、将j加1更新j,令k等于1,重复执行步骤(2)~(4),直到j大于等于Y,k大于等于N进入步骤(5);
(5)、将i加1更新i,k=1,j=1,重复执行步骤(2)~(5),直到i大于等于X,j大于等于Y,k大于等于N,结束。
6.根据权利要求1所述的一种基于SOC的数据复用卷积神经网络加速器,其特征在于卷积运算时,移位逻辑根据卷积层序号,由此确定卷积运算时二维平面方向两个维度的大小,根据这两个维度的大小变更图像数据组成的序列顺序,并根据控制单元发出的移位控制信号确定图像数据序列移位的多少,使得进入至计算单元阵列的每次块运算的图像数据与权重数据对齐,在池化或者全连接处理时,移位逻辑直接将缓冲区中的图像数据输出到计算单元阵列。
7.根据权利要求1所述的一种基于SOC的数据复用卷积神经网络加速器,其特征在于所述计算单元阵列包括乘法器阵列、加法器树、累加器、非线性单元和选通输出单元,其中:
乘法器阵列,将图像数据与权重相乘;
加法器树,将乘法器阵列的所有乘积项相加,结果输出到累加器;
累加器,块运算结束时清零,对加法器树输出的结果进行累加,并将累加结果作为卷积结果输出至非线性单元
非线性单元,对卷积结果进行池化处理,并输出;
选通输出单元,接收控制单元发送的输出选通信号,选通卷积结果或者池化结果输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711207259.3A CN108171317B (zh) | 2017-11-27 | 2017-11-27 | 一种基于soc的数据复用卷积神经网络加速器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711207259.3A CN108171317B (zh) | 2017-11-27 | 2017-11-27 | 一种基于soc的数据复用卷积神经网络加速器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108171317A CN108171317A (zh) | 2018-06-15 |
CN108171317B true CN108171317B (zh) | 2020-08-04 |
Family
ID=62524477
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711207259.3A Active CN108171317B (zh) | 2017-11-27 | 2017-11-27 | 一种基于soc的数据复用卷积神经网络加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108171317B (zh) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108985449B (zh) * | 2018-06-28 | 2021-03-09 | 中国科学院计算技术研究所 | 一种对卷积神经网络处理器的控制方法及装置 |
WO2020019174A1 (zh) * | 2018-07-24 | 2020-01-30 | 深圳市大疆创新科技有限公司 | 数据存取的方法、处理器、计算机系统和可移动设备 |
CN108681984B (zh) * | 2018-07-26 | 2023-08-15 | 珠海一微半导体股份有限公司 | 一种3*3卷积算法的加速电路 |
CN109146072B (zh) * | 2018-08-01 | 2021-03-23 | 上海天数智芯半导体有限公司 | 基于卷积神经网络加速器的数据重用方法 |
CN109141403B (zh) * | 2018-08-01 | 2021-02-02 | 上海航天控制技术研究所 | 一种星敏感器小窗口访问的图像处理系统及其方法 |
CN109086875A (zh) * | 2018-08-16 | 2018-12-25 | 郑州云海信息技术有限公司 | 一种基于宏指令集的卷积网络加速方法及装置 |
CN109284824B (zh) * | 2018-09-04 | 2021-07-23 | 复旦大学 | 一种基于可重构技术的用于加速卷积和池化运算的装置 |
CN109460813B (zh) * | 2018-09-10 | 2022-02-15 | 中国科学院深圳先进技术研究院 | 卷积神经网络计算的加速方法、装置、设备及存储介质 |
US20220004856A1 (en) * | 2018-11-06 | 2022-01-06 | Genesys Logic, Inc. | Multichip system and data processing method adapted to the same for implementing neural network application |
CN109581185B (zh) * | 2018-11-16 | 2021-11-09 | 北京时代民芯科技有限公司 | SoC芯片激光模拟单粒子辐照检测及故障定位方法及系统 |
CN109359735B (zh) * | 2018-11-23 | 2020-12-04 | 浙江大学 | 深度神经网络硬件加速的数据输入装置与方法 |
CN111340201A (zh) * | 2018-12-19 | 2020-06-26 | 北京地平线机器人技术研发有限公司 | 卷积神经网络加速器及其执行卷积运算操作的方法 |
CN109740732B (zh) * | 2018-12-27 | 2021-05-11 | 深圳云天励飞技术有限公司 | 神经网络处理器、卷积神经网络数据复用方法及相关设备 |
CN111382094B (zh) * | 2018-12-29 | 2021-11-30 | 深圳云天励飞技术有限公司 | 一种数据处理方法及装置 |
CN109886400B (zh) * | 2019-02-19 | 2020-11-27 | 合肥工业大学 | 基于卷积核拆分的卷积神经网络硬件加速器系统及其计算方法 |
CN109886395B (zh) * | 2019-03-06 | 2020-11-24 | 上海熠知电子科技有限公司 | 一种面向多核图像处理卷积神经网络的数据读取方法 |
CN111667046A (zh) * | 2019-03-08 | 2020-09-15 | 富泰华工业(深圳)有限公司 | 深度学习加速方法及用户终端 |
CN111832585B (zh) * | 2019-04-16 | 2023-04-18 | 杭州海康威视数字技术股份有限公司 | 图像处理的方法和装置 |
CN110222819B (zh) * | 2019-05-13 | 2021-04-20 | 西安交通大学 | 一种用于卷积神经网络加速的多层数据分区域联合计算方法 |
CN111985628B (zh) * | 2019-05-24 | 2024-04-30 | 澜起科技股份有限公司 | 计算装置及包括所述计算装置的神经网络处理器 |
CN110390383B (zh) * | 2019-06-25 | 2021-04-06 | 东南大学 | 一种基于幂指数量化的深度神经网络硬件加速器 |
CN110598858A (zh) * | 2019-08-02 | 2019-12-20 | 北京航空航天大学 | 基于非易失性存内计算实现二值神经网络的芯片和方法 |
CN110516801B (zh) * | 2019-08-05 | 2022-04-22 | 西安交通大学 | 一种高吞吐率的动态可重构卷积神经网络加速器 |
CN110458285B (zh) * | 2019-08-14 | 2021-05-14 | 中科寒武纪科技股份有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN110533177B (zh) * | 2019-08-22 | 2023-12-26 | 安谋科技(中国)有限公司 | 一种数据读写装置、方法、设备、介质及卷积加速器 |
CN110956258B (zh) * | 2019-12-17 | 2023-05-16 | 深圳鲲云信息科技有限公司 | 一种神经网络加速电路和方法 |
CN111340224B (zh) * | 2020-02-27 | 2023-11-21 | 浙江芯劢微电子股份有限公司 | 适用于低资源嵌入式芯片的cnn网络的加速设计方法 |
WO2021179289A1 (zh) * | 2020-03-13 | 2021-09-16 | 深圳市大疆创新科技有限公司 | 卷积神经网络的运算方法、装置、设备和存储介质 |
CN111753962B (zh) * | 2020-06-24 | 2023-07-11 | 国汽(北京)智能网联汽车研究院有限公司 | 一种加法器、乘法器、卷积层结构、处理器及加速器 |
CN111651378B (zh) * | 2020-07-06 | 2023-09-19 | Oppo广东移动通信有限公司 | 一种数据存储方法、SoC芯片及计算机设备 |
CN111915001B (zh) * | 2020-08-18 | 2024-04-12 | 腾讯科技(深圳)有限公司 | 卷积计算引擎、人工智能芯片以及数据处理方法 |
CN112070217B (zh) * | 2020-10-15 | 2023-06-06 | 天津大学 | 一种卷积神经网络加速器的内部存储带宽优化方法 |
CN112559046A (zh) * | 2020-12-09 | 2021-03-26 | 清华大学 | 数据处理装置及人工智能处理器 |
CN112950656A (zh) * | 2021-03-09 | 2021-06-11 | 北京工业大学 | 一种基于fpga平台的按通道进行预读取数据的分块卷积方法 |
CN113128688B (zh) * | 2021-04-14 | 2022-10-21 | 北京航空航天大学 | 通用型ai并行推理加速结构以及推理设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106875011A (zh) * | 2017-01-12 | 2017-06-20 | 南京大学 | 二值权重卷积神经网络加速器的硬件架构及其计算流程 |
-
2017
- 2017-11-27 CN CN201711207259.3A patent/CN108171317B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106875011A (zh) * | 2017-01-12 | 2017-06-20 | 南京大学 | 二值权重卷积神经网络加速器的硬件架构及其计算流程 |
Also Published As
Publication number | Publication date |
---|---|
CN108171317A (zh) | 2018-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108171317B (zh) | 一种基于soc的数据复用卷积神经网络加速器 | |
CN108805266B (zh) | 一种可重构cnn高并发卷积加速器 | |
CN111667051B (zh) | 适用边缘设备的神经网络加速器及神经网络加速计算方法 | |
WO2020258528A1 (zh) | 一种可配置的通用卷积神经网络加速器 | |
CN109598338B (zh) | 一种基于fpga的计算优化的卷积神经网络加速器 | |
CN111445012B (zh) | 一种基于fpga的分组卷积硬件加速器及其方法 | |
CN108985450B (zh) | 面向向量处理器的卷积神经网络运算向量化方法 | |
CN109409512B (zh) | 一种可灵活配置的神经网络计算单元、计算阵列及其构建方法 | |
CN108537331A (zh) | 一种基于异步逻辑的可重构卷积神经网络加速电路 | |
CN111242289A (zh) | 一种规模可扩展的卷积神经网络加速系统与方法 | |
TWI634489B (zh) | 多層人造神經網路 | |
CN111105023B (zh) | 数据流重构方法及可重构数据流处理器 | |
CN113222130A (zh) | 一种基于fpga的可重构卷积神经网络加速器 | |
CN112487750A (zh) | 一种基于存内计算的卷积加速计算系统及方法 | |
CN110222818A (zh) | 一种用于卷积神经网络数据存储的多bank行列交织读写方法 | |
CN110580519B (zh) | 一种卷积运算装置及其方法 | |
CN116710912A (zh) | 一种矩阵乘法器及矩阵乘法器的控制方法 | |
CN114003201A (zh) | 矩阵变换方法、装置及卷积神经网络加速器 | |
CN109948787B (zh) | 用于神经网络卷积层的运算装置、芯片及方法 | |
CN113191493B (zh) | 一种基于fpga并行度自适应的卷积神经网络加速器 | |
US20230047364A1 (en) | Partial sum management and reconfigurable systolic flow architectures for in-memory computation | |
CN112346704B (zh) | 一种用于卷积神经网络的全流水线型乘加单元阵列电路 | |
Li et al. | FPGA Accelerated Real-time Recurrent All-Pairs Field Transforms for Optical Flow | |
CN113610221A (zh) | 一种基于fpga的可变膨胀卷积运算硬件系统 | |
CN113627587A (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 |