CN113222130A - 一种基于fpga的可重构卷积神经网络加速器 - Google Patents
一种基于fpga的可重构卷积神经网络加速器 Download PDFInfo
- Publication number
- CN113222130A CN113222130A CN202110382085.4A CN202110382085A CN113222130A CN 113222130 A CN113222130 A CN 113222130A CN 202110382085 A CN202110382085 A CN 202110382085A CN 113222130 A CN113222130 A CN 113222130A
- Authority
- CN
- China
- Prior art keywords
- data
- layer
- convolution
- buf
- fpga
- 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
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 10
- 238000004364 calculation method Methods 0.000 claims abstract description 38
- 238000012545 processing Methods 0.000 claims abstract description 31
- 238000000034 method Methods 0.000 claims abstract description 9
- 238000010586 diagram Methods 0.000 claims description 33
- 238000013527 convolutional neural network Methods 0.000 claims description 19
- 230000006870 function Effects 0.000 claims description 9
- 238000012805 post-processing Methods 0.000 claims description 7
- 230000000903 blocking effect Effects 0.000 claims description 5
- 238000011176 pooling Methods 0.000 claims description 5
- 238000009825 accumulation Methods 0.000 claims description 4
- 230000003213 activating effect Effects 0.000 claims description 4
- 230000001174 ascending effect Effects 0.000 claims description 3
- 230000003993 interaction Effects 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 claims description 2
- 230000008569 process Effects 0.000 abstract description 3
- 238000013507 mapping Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 3
- 235000019800 disodium phosphate Nutrition 0.000 description 3
- 125000004122 cyclic group Chemical group 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000013506 data mapping Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 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/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
- 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
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
本发明公开了一种基于FPGA的可重构卷积神经网络加速器,包括内存DDR、中央处理器CPU以及卷积处理单元;所述卷积处理单元包括内存接口生成器MIG、指令BUF、Idata BUF、Wdata BUF、Odata BUF、控制器和卷积计算模块;所述卷积计算模块具有五层结构,包括数据输入层、S形移位层、数据分享层、PE阵列层、输出数据层。本发明提供的加速器通过配置信息进行重构,能适应不同卷积网络的结构,充分利用FPGA片内计算资源加速卷积的计算过程,使得卷积计算模块所需的资源进一步减少。
Description
技术领域
本发明涉及电子信息与深度学习领域,具体涉及一种基于FPGA的可重构卷积神经网络加速器。
背景技术
卷积神经网络(Convolutional Neural Networks,CNN)是一种神经网络在视觉方面的应用,已经广泛应用到机器视觉、物体识别、视频监控等领域。然而,CNN计算所需庞大的计算量和数据搬运为加速器的计算功耗和性能带来巨大的挑战。目前,CNN一般在CPU或者GPU这样的通用平台上实现加速,但是CPU的性能不能满足嵌入式应用的实时处理需求,而GPU的运行功耗对于嵌入式来说又太高。FPGA(Field-Programmable Gate Array)在性能和功耗方面都优于前两者,而且在设计上提供了很高的灵活度。
按照卷积计算的展开方式,可以将处理单元(Processing Elememt)划分成两种结构:加法树结构和乘累加循环结构。加法树结构是一种先乘法后加法的树状结构,由多个乘法器和加法器构成。加法树结构具有结构简单、复杂度低等特点,但是所需要的资源高,灵活度不高;输出导向映射是一种乘累加的循环方法,是一种先乘法后加法、再乘法再加法的循环结构,通常由一个乘法器和加法器、若干多路复用器和寄存器构成。为了提高数据的复用,还会将处理单元组合成一个脉动阵列(Systolic Array)。输出导向映射的优点在于灵活性,从原理上来看可以支持任何卷积核大小。这种结构的数据带宽需求比较高,在处理步长大于1时会由于输出大小不能匹配处理阵列导致处理单元利用率不高。
发明内容
本发明的目的是提供一种基于FPGA的可重构卷积神经网络加速器,用以解决现有处理单元存在的利用率不高的问题。
为了实现上述任务,本发明采用以下技术方案:
一种基于FPGA的可重构卷积神经网络加速器,包括内存DDR、中央处理器CPU以及卷积处理单元;DDR用于存放指令和特征图/图片;CPU用于卷积前准备图片和权重、池化操作、激活函数和卷积网络的后处理;
所述卷积处理单元包括内存接口生成器MIG、指令BUF、Idata BUF、Wdata BUF、Odata BUF、控制器和卷积计算模块,其中:
MIG用于实现卷积处理单元、CPU、DDR3之间的数据交互;指令BUF、Idata BUF、Wdata BUF、Odata BUF分别用于缓存指令、输入特征图缓存、权重数据缓存和输出特征图或中间值数据的缓存;控制器协调整个卷积神经网络的工作,在完成一个卷积层之后产生中断告知CPU卷积完成;卷积计算模块负责卷积计算和加偏置值的操作;
所述卷积计算模块具有五层结构,包括数据输入层、S形移位层、数据分享层、PE阵列层、输出数据层;所述数据输入层负责数据输入;S形移位层将输入数据按照卷积的顺序进行遍历;数据分享层将输入数据和权重进行共享,提高数据的复用;PE阵列层进行乘法累加操作;输出数据层负责将数据输出到卷积计算模块之外。
进一步地,在FPGA上电初始化之后,CPU将预存在SD卡中的配置文件和图片/特征图写入DDR;图片/特征图写入DDR的顺序是:先将第1个通道的第1行按列写入DDR,接着将第2个通道的第1列写入DDR,然后写入第3个通道,以此类推,形成“列-行-通道”的摆放方式。
进一步地,CPU启动指令BUF工作后,指令BUF按照地址递增的顺序将指令从DDR中读出,等待控制器的指令读取请求;控制器将指令进行解析后,得到子指令,然后将子指令分发到卷积处理单元的各个模块,随后启动数据传输和卷积计算模块。
进一步地,所述Idata BUF由16条SRAM组成,数据在Idata BUF采用“列-行-通道”的顺序摆放。
进一步地,所述数据输入层为寄存器组,用于从Idata BUF读取数据;数据输入层一个时钟周期从Idata BUF读取一列输入数据,寄存器组向右移动一列的同时将这一列数据存放进寄存器组的第一列寄存器,直到读取入(W+K-1)列输入数据,W表示PE阵列的卷积核尺寸,K表示分块后对应的卷积核尺寸;用一个时钟周期将数据输入层的寄存器组的数据发送到S形移位层。
进一步地,所述S形移位层中包含多列寄存器,且比数据输入层多Kmax-1列寄存器,Kmax表示卷积计算模块支持的最大权重;S形移位层使一个PE只对应一个寄存器,而输入像素的选择,采取像素在S形移位层中寄存器间移动的方法来解决,即在卷积时输入特征图在S形移位层中以移动的方式实现像素间的切换操作;S形移位层的数据只有上、左、右三个移动方向。
进一步地,所述数据共享层采用数据广播的方式将S形移位层中的一个寄存器的数据输出到数据共享层的多个寄存器中;数据共享层的数据与S形移位层的数据是一一对应的关系。
进一步地,所述PE阵列层是由14*14个PE组成的脉动阵列,一个PE包括数据选择器、16位乘法器、32位加法器、算术移位器器件;其中,16位乘法器和32位加法器在DSP48中实现,用于实现乘法累加功能;数据选择器用于选择输入数据或者中间值进入DSP48;算术移位器在一个时钟周期实现0~15位的算术右移;输出卷积结果时,算术移位器将数据从Int32截断到Int16。
进一步地,中间值或者卷积结果在卷积结束之后用一个时钟将数据输出到数据输出层,然后数据输出层每个时钟周期将一列数据输出到Odata BUF,直到将整个数据输出层的数据输出到Odata BUF。
进一步地,Odata BUF存放的是中间值和输出结果,Odata BUF的Bram为真双端口RAM,即Odata BUF的Bram两个端口都支持读写功能;当Odata BUF中存放的是中间值,OdataBUF处于待命状态;当Odata BUF中存放的是输出特征图时,Odata BUF按照“列-行-通道”的方式将数据输出到DDR。
进一步地,控制器在完成一个卷积层的时候,发送中断信号给CPU;CPU将数据从DDR读出,进行池化、激活操作之后,将数据写回DDR;然后CPU再次启动指令BUF进行下一层卷积;当完成整个卷积神经网络的所有卷积层之后,CPU进行其他后处理,最后将识别或分类结果通过串口发送到上位机。
与现有技术相比,本发明具有以下技术特点:
1.本发明提供了一种基于FPGA的高性能可重构硬件加速器,该硬件加速器通过配置信息进行重构,能适应不同卷积网络的结构,充分利用FPGA片内计算资源加速卷积的计算过程,使得卷积计算模块所需的资源进一步减少。
2.本发明设计的五层结构的卷积计算模块,在卷积步长为2或输出特征图尺寸为7等复杂情况下,不仅实现了硬件加速器的可重构性,而且提高了PE的计算利用率;卷积计算模块中的S形数据移动阵列的构想降低了数据映射到脉动阵列的硬件复杂度,从而减少了资源消耗。
3.本发明设计的卷积处理单元(PE)将乘法器和加法器放在DSP48中实现,只通过控制消耗选择数据的计算模式。这种方法充分利用FPGA片内资源,使得卷积计算模块所需的资源进一步减少。
附图说明
图1为本发明提供的卷积神经网络加速器的整体构架图;
图2为输入特征图分块示意图;
图3为输入特征图分块在BUF中的摆放方式,其中(a)为分块示意图,(b)为数据的摆放方式;
图4为卷积计算模块的五层结构示意图;
图5为PE阵列层的内部结构示意图;
图6为S形移位层的数据移动顺序(K=3);
图7为数据广播方式,其中(a)为映射模式示意图,(b)为4个PE输出4个通道的示意图,(c)为4个通道的7*7输出特征图。
具体实施方式
如图1所示,本发明提供了一种基于FPGA的可重构卷积神经网络加速器,包括内存DDR、中央处理器CPU以及卷积处理单元;DDR用于存放特征图(或图片)和指令;CPU用于卷积前准备图片和权重、池化操作、激活函数和卷积网络的后处理,比如SoftMax计算等。本实施例中,内存DDR采用DDR3。
所述卷积处理单元包括内存接口生成器MIG(Memory Interface Generator)、指令BUF(指令缓存)、Idata BUF(寻址缓存)、Wdata BUF(输入缓存)、Odata BUF(输出缓存)、控制器和卷积计算模块,其中:
MIG用于实现卷积处理单元、CPU、DDR3之间的数据交互,指令BUF、Idata BUF、Wdata BUF、Odata BUF分别用于缓存指令、输入特征图缓存、权重数据缓存和输出特征图或中间值数据的缓存;控制器协调整个加速器的工作,在完成一个卷积层之后产生中断告知CPU卷积完成;卷积计算模块负责卷积计算和加偏置值的操作;
卷积计算模块具有五层结构,包括数据输入层、S形移位层、数据分享层、PE阵列层、输出数据层;数据输入层负责数据输入;S形移位层将输入数据按照卷积的顺序进行遍历;数据分享层将输入数据和权重进行共享,提高数据的复用;PE阵列层进行乘法累加操作;输出数据层负责将数据输出到卷积计算模块外。
图2给出了本发明采用的特征图分块示意图,分块策略将输入特征图H×L×N分割成Th×Tl×Tn,将输出特征图R×C×M分割成Tr×Tc×Tm,分块后对应的卷积核为Tm×Tn×K×K;在本发明中定义分块参数为{Tm,Tn,Tr,Tc};本发明所用参数定义如下表所示。
本发明提出的基于FPGA的可重构卷积神经网络加速器,其执行过程主要分为6个步骤:准备工作、载入指令、载入特征图数据、执行卷积、输出数据、卷积后处理。
步骤1,准备工作
FPGA上电初始化之后,CPU将预存在SD卡中的配置文件和图片/特征图写入DDR;图片/特征图写入DDR的顺序是:先将第1个通道的第1行按列写入DDR,接着将第2个通道的第1列写入DDR,然后写入第3个通道,……。需要注意的是,卷积处理单元输出到DDR的数据摆放顺序也跟图片的写入顺序一样;将这种数据摆放方式形象地称为“列-行-通道”摆放方式。
步骤2,载入指令
随后,CPU启动指令BUF工作;指令BUF按照地址递增的顺序将指令从DDR中读出,等待控制器的指令读取请求;控制器将指令进行必要的解析后,得到子指令,比如,特征图存取的地址、特征图分块尺寸、分块通道数等;然后将子指令分发到卷积处理单元的各个模块,随后启动数据传输和卷积计算模块。
步骤3,载入特征图数据
Idata BUF由16条SRAM组成,跟图片在DDR的摆放方式一样(步骤1),数据在IdataBUF也采用“列-行-通道”的顺序摆放,如图3所示,输入特征图经分块策略后得到的特征图分块大小为Th×Tl×Tn,例如分块输入通道数Tn=3时,第①个通道放在Bram的低地址,第1行放在Bram1,第2行放在Bram2,……,第16行放在Bram16,接着第17行放在Bram1的第1行后面,按照这个方式将第①个通道存入Bram;第②、③通道则存放在第①个通道后面。
步骤4,执行卷积
为了支持K=1~7的卷积核大小,并且提高S=2和R=7的PE利用率,卷积计算模块被设计成了5层结构,如图4所示,包括①数据输入层、②S形移位层、③数据分享层、④PE阵列层、⑤输出数据层。
①数据输入层。数据输入层为20*20大小的寄存器组,用于从Idata BUF读取数据。数据输入层寄存器组尺寸计算:PE阵列的尺寸是W*W=14*14,卷积计算模块支持最大Kmax=7的权重,所以数据输入层寄存器组大小为(W+Kmax-1)*(W+Kmax-1)=(14+7-1)*(14+7-1)=20*20。数据输入层一个时钟周期从Idata BUF读取一列输入数据,寄存器组向右移动一列的同时将这一列数据存放进寄存器组的第一列寄存器,直到读取入(W+K-1)列输入数据。通过图4所示的固定映射方式,用一个时钟周期将数据输入层的寄存器组的数据发送到S形移位层。
②S形移位层。输入像素从数据输入层到PE阵列层,需要支持不同尺寸的卷积核。一个PE在执行Kmax×Kmax=7*7=49的卷积操作时,每个时钟周期都需要从数据输入层的49个像素中选择一个像素;如果不对数据流作特殊设计和处理,一个PE则需要49输入的多路复用器,一共有14*14=196个PE,要支持如此大的可配置性必将消耗非常大的硬件资源。因此,本发明针对数据流的特征,设计了S形移位层,一个PE只对应一个寄存器,不需要多路复用器来选择。而输入像素的选择,采取像素在S形移位层中寄存器间移动的方法来解决,即在卷积时输入特征图在S形移位层中以移动(shift)的方式实现像素间的切换操作。
为了在进行S形移动的时候不损失数据,S形移位层要比数据输入层多Kmax-1=6列寄存器,所以S形移位层尺寸为20*26。S形移位层的数据只有“上”、“左”、“右”三个移动方向。图6显示了当K=3时,S形移位层的数据移动顺序。K=3时,有效数据区域大小为(14+3-1)*(14+3-1)=15*15,如图6斜线区域所示。而S形移位层输出到下一层(数据共享层)的有效区域大小14*14,为图6虚线区域。S形移位层在第1个周期从数据输入层读取入数据,同时将固定区域(图6虚线区域)的数据发送到下一层;第2个时钟周期整个寄存器组的数据向左移动一列,同时发送固定区域数据到下一层;第3个周期与第2个周期一样;第4个周期,数据往上移动一行,同时发送固定区域数据到下一层,这时S形移位层最上面一行数据将会被移出寄存器组并被丢弃;第5个时钟周期整个寄存器组的数据向右移动一列,同时发送固定区域数据到下一层;第6个周期与第5个周期一样;第7个周期,数据往上移动一行,同时发送固定区域数据到下一层,这时S形移位层最上面一行数据将会被移出寄存器组并被丢弃;第8个时钟周期整个寄存器组的数据向左移动一列,同时发送固定区域数据到下一层;第9个周期与第8个周期一样。这样,在K=3时,S形移位层用3*3=9个周期将数据输出到下一层。
需要注意的是,K=1时,有效数据区域为14*14,用1个周期将数据输出到下一层,不用进行数据移动;K=7时,有效数据区域为20*20,用7*7=49个周期将数据输出到下一层,需要48次移动,移动顺序为:左→左→左→左→左→左→上→右→右→右→右→右→右→上→左→左→左→左→左→左→上→右→右→右→右→右→上→左→左→左→左→左→左→上→右→右→右→右→右→右→上→左→左→左→左→左→左。
③数据共享层。如果将S形移位层的数据采用一一对应的方式直接映射到PE阵列的话,在某些情况会导致PE的利用率不高,比如,卷积步长S=2时,14*14的PE阵列的奇数行和列的乘累加结果都是无效的,即S=2的利用率为25%,此外,R=7时也会出项相似的问题。因此,数据共享层被设计出来提高PE的利用率,思路是:采用数据广播的方式将S形移位层中的一个寄存器的数据输出到数据共享层的多个寄存器中;数据共享层包括输入数据共享层和权重数据共享层,具体做法如图7所示。当S=2时,S形移位层1个寄存器的数据广播到数据共享层的输入数据共享层相邻的4个寄存器,而权重数据共享层相应的4个寄存器分别为4个输出通道权重,那么对应的4个PE将输出4个通道的输出数据,如图7的(b),此时PE利用率为100%;图7的(c)所示为针对输出特征图尺寸R=7时的情况,一个输入像素广播到数据共享层的输入共享层的4个寄存器中,同时输入四个通道的权重,可以得到4个通道的7*7输出特征图。此时PE利用率为100%。除了S=2、R=7这两种情况,其余的情况使用的映射模式如图7的(a)所示,数据共享层的数据与S形移位层的数据是一一对应的关系。
④PE阵列层。卷积计算模块的PE阵列层是由14*14个PE组成的脉动阵列。一个PE主要包括数据选择器、16位乘法器、32位加法器、算术移位器器件,PE的内部结构如图5所示。其中,16位乘法器和32位加法器在DSP48中实现,用于实现乘法累加功能。数据选择器用于选择(数据共享层)输入数据或者中间值进入DSP48。算术移位器在一个时钟周期实现0~15位的算术右移。输出卷积结果时,算术移位器将数据从Int32截断到Int16。
具体来说,PE阵列层输出一次14*14的中间值一共需要K*K*Tn次乘法和累加操作,1次算术右移;输出N/Tn次中间值之后,PE加载偏置进行加法运算,然后将最终结果输出到下一层。
⑤数据输出层。中间值或者卷积结果在卷积结束之后用一个时钟将数据输出到数据输出层,然后数据输出层每个时钟周期将一列数据输出到Odata BUF,直到将整个数据输出层的数据输出到Odata BUF。
步骤5,输出数据
Odata BUF存放的是中间值和输出结果,数据在Bram摆放的顺序与Idata BUF类似(图3)。与Idata BUF不同的是,Odata BUF的Bram为真双端口RAM(True Dual Port RAM),即Odata BUF的Bram两个端口都支持读写功能。当Odata BUF中存放的是中间值,Odata BUF处于待命状态;当Odata BUF中存放的是输出特征图(卷积结果),Odata BUF按照“列-行-通道”的方式将数据输出到DDR。
步骤6,卷积后处理
控制器在完成一个卷积层的时候,发送中断信号给CPU。CPU将数据从DDR读出,进行池化、激活等操作之后,将数据写回DDR。然后CPU再次启动指令BUF进行下一层卷积。当完成整个卷积神经网络的所有卷积层之后,CPU进行其他后处理,比如SoftMax、YOLO的NMS等;最后将识别或分类结果通过串口发送到上位机。
实施例:
本发明的卷积神经网络加速器在Xilinx Zynq XC7Z045进行实现和验证,开发板使用的是ZC706评估板,系统数据精度为Int16,实例化了2个卷积计算模块;系统在Vivado2018.3综合实现之后的资源用量如下:
Device | FF | LUTs | DSPs | Bram | Frequency |
XZ7045 | 108868(24.9%) | 106077(48.53%) | 392(43.55%) | 246(45.14%) | 200MHz |
与现有技术相比,本发明能将Yolov2-tiny网络的卷积层量化到Int16,在200MHz的时钟频率下,系统平均算力达到120GOPS,对416pixels*416pixels的输入视频流进行物体识别分类的任务,实时处理速度达到22~23FPS。同时,VGG16在224pixels*224pixel的图像识别任务中平均算力达到150GOPS,即处理帧率为4~5FPS。
以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种基于FPGA的可重构卷积神经网络加速器,其特征在于,包括内存DDR、中央处理器CPU以及卷积处理单元;DDR用于存放指令和特征图/图片;CPU用于卷积前准备图片和权重、池化操作、激活函数和卷积网络的后处理;
所述卷积处理单元包括内存接口生成器MIG、指令BUF、Idata BUF、Wdata BUF、OdataBUF、控制器和卷积计算模块,其中:
MIG用于实现卷积处理单元、CPU、DDR3之间的数据交互;指令BUF、Idata BUF、WdataBUF、Odata BUF分别用于缓存指令、输入特征图缓存、权重数据缓存和输出特征图或中间值数据的缓存;控制器协调整个卷积神经网络的工作,在完成一个卷积层之后产生中断告知CPU卷积完成;卷积计算模块负责卷积计算和加偏置值的操作;
所述卷积计算模块具有五层结构,包括数据输入层、S形移位层、数据分享层、PE阵列层、输出数据层;所述数据输入层负责数据输入;S形移位层将输入数据按照卷积的顺序进行遍历;数据分享层将输入数据和权重进行共享,提高数据的复用;PE阵列层进行乘法累加操作;输出数据层负责将数据输出到卷积计算模块之外。
2.根据权利要求1所述的基于FPGA的可重构卷积神经网络加速器,其特征在于,在FPGA上电初始化之后,CPU将预存在SD卡中的配置文件和图片/特征图写入DDR;图片/特征图写入DDR的顺序是:先将第1个通道的第1行按列写入DDR,接着将第2个通道的第1列写入DDR,然后写入第3个通道,以此类推,形成“列-行-通道”的摆放方式。
3.根据权利要求1所述的基于FPGA的可重构卷积神经网络加速器,其特征在于,CPU启动指令BUF工作后,指令BUF按照地址递增的顺序将指令从DDR中读出,等待控制器的指令读取请求;控制器将指令进行解析后,得到子指令,然后将子指令分发到卷积处理单元的各个模块,随后启动数据传输和卷积计算模块。
4.根据权利要求1所述的基于FPGA的可重构卷积神经网络加速器,其特征在于,所述Idata BUF由16条SRAM组成,数据在Idata BUF采用“列-行-通道”的顺序摆放。
5.根据权利要求1所述的基于FPGA的可重构卷积神经网络加速器,其特征在于,所述数据输入层为寄存器组,用于从Idata BUF读取数据;数据输入层一个时钟周期从Idata BUF读取一列输入数据,寄存器组向右移动一列的同时将这一列数据存放进寄存器组的第一列寄存器,直到读取入(W+K-1)列输入数据,W表示PE阵列的卷积核尺寸,K表示分块后对应的卷积核尺寸;用一个时钟周期将数据输入层的寄存器组的数据发送到S形移位层。
6.根据权利要求1所述的基于FPGA的可重构卷积神经网络加速器,其特征在于,所述S形移位层中包含多列寄存器,且比数据输入层多Kmax-1列寄存器,Kmax表示卷积计算模块支持的最大权重;S形移位层使一个PE只对应一个寄存器,而输入像素的选择,采取像素在S形移位层中寄存器间移动的方法来解决,即在卷积时输入特征图在S形移位层中以移动的方式实现像素间的切换操作;S形移位层的数据只有上、左、右三个移动方向。
7.根据权利要求1所述的基于FPGA的可重构卷积神经网络加速器,其特征在于,所述数据共享层采用数据广播的方式将S形移位层中的一个寄存器的数据输出到数据共享层的多个寄存器中;数据共享层的数据与S形移位层的数据是一一对应的关系。
8.根据权利要求1所述的基于FPGA的可重构卷积神经网络加速器,其特征在于,所述PE阵列层是由14*14个PE组成的脉动阵列,一个PE包括数据选择器、16位乘法器、32位加法器、算术移位器器件;其中,16位乘法器和32位加法器在DSP48中实现,用于实现乘法累加功能;数据选择器用于选择输入数据或者中间值进入DSP48;算术移位器在一个时钟周期实现0~15位的算术右移;输出卷积结果时,算术移位器将数据从Int32截断到Int16。
9.根据权利要求1所述的基于FPGA的可重构卷积神经网络加速器,其特征在于,中间值或者卷积结果在卷积结束之后用一个时钟将数据输出到数据输出层,然后数据输出层每个时钟周期将一列数据输出到Odata BUF,直到将整个数据输出层的数据输出到Odata BUF。
10.根据权利要求1所述的基于FPGA的可重构卷积神经网络加速器,其特征在于,OdataBUF存放的是中间值和输出结果,Odata BUF的Bram为真双端口RAM,即Odata BUF的Bram两个端口都支持读写功能;当Odata BUF中存放的是中间值,Odata BUF处于待命状态;当Odata BUF中存放的是输出特征图时,Odata BUF按照“列-行-通道”的方式将数据输出到DDR。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110382085.4A CN113222130A (zh) | 2021-04-09 | 2021-04-09 | 一种基于fpga的可重构卷积神经网络加速器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110382085.4A CN113222130A (zh) | 2021-04-09 | 2021-04-09 | 一种基于fpga的可重构卷积神经网络加速器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113222130A true CN113222130A (zh) | 2021-08-06 |
Family
ID=77086810
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110382085.4A Pending CN113222130A (zh) | 2021-04-09 | 2021-04-09 | 一种基于fpga的可重构卷积神经网络加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113222130A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113792868A (zh) * | 2021-09-14 | 2021-12-14 | 绍兴埃瓦科技有限公司 | 神经网络计算模块、方法和通信设备 |
CN114239816A (zh) * | 2021-12-09 | 2022-03-25 | 电子科技大学 | 一种卷积神经网络-图卷积神经网络可重构硬件加速架构 |
CN114723031A (zh) * | 2022-05-06 | 2022-07-08 | 北京宽温微电子科技有限公司 | 一种计算装置 |
CN115168284A (zh) * | 2022-07-06 | 2022-10-11 | 中国科学技术大学 | 面向深度学习的粗粒度可重构阵列系统及计算方法 |
WO2023041002A1 (zh) * | 2021-09-17 | 2023-03-23 | 华为技术有限公司 | 近内存计算加速器、双列直插式内存模块以及计算设备 |
CN116776945A (zh) * | 2023-06-26 | 2023-09-19 | 中国科学院长春光学精密机械与物理研究所 | 一种基于zynq平台的vgg16网络加速器设计实现方法 |
CN118364872A (zh) * | 2024-04-09 | 2024-07-19 | 大连理工大学 | 一种基于列重构卷积的点云目标检测网络硬件加速方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110852416A (zh) * | 2019-09-30 | 2020-02-28 | 成都恒创新星科技有限公司 | 基于低精度浮点数数据表现形式的cnn加速计算方法及系统 |
-
2021
- 2021-04-09 CN CN202110382085.4A patent/CN113222130A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110852416A (zh) * | 2019-09-30 | 2020-02-28 | 成都恒创新星科技有限公司 | 基于低精度浮点数数据表现形式的cnn加速计算方法及系统 |
Non-Patent Citations (3)
Title |
---|
曾宇航 等: "用FPGA实现卷积神经网络的人脸检测系统", 《单片机与嵌入式系统应用》 * |
胡湘宏: "基于FPGA的卷积神经网络及椭圆曲线算法的硬件加速研究", 《中国优秀博硕士学位论文全文数据库(博士)信息科技辑》 * |
黄宏敏: "基于FPGA的物体动态识别系统设计与实现", 《万方中国学位论文全文数据库》 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113792868A (zh) * | 2021-09-14 | 2021-12-14 | 绍兴埃瓦科技有限公司 | 神经网络计算模块、方法和通信设备 |
CN113792868B (zh) * | 2021-09-14 | 2024-03-29 | 绍兴埃瓦科技有限公司 | 神经网络计算模块、方法和通信设备 |
WO2023041002A1 (zh) * | 2021-09-17 | 2023-03-23 | 华为技术有限公司 | 近内存计算加速器、双列直插式内存模块以及计算设备 |
CN114239816A (zh) * | 2021-12-09 | 2022-03-25 | 电子科技大学 | 一种卷积神经网络-图卷积神经网络可重构硬件加速架构 |
CN114239816B (zh) * | 2021-12-09 | 2023-04-07 | 电子科技大学 | 一种卷积神经网络-图卷积神经网络可重构硬件加速架构 |
CN114723031A (zh) * | 2022-05-06 | 2022-07-08 | 北京宽温微电子科技有限公司 | 一种计算装置 |
CN114723031B (zh) * | 2022-05-06 | 2023-10-20 | 苏州宽温电子科技有限公司 | 一种计算装置 |
CN115168284A (zh) * | 2022-07-06 | 2022-10-11 | 中国科学技术大学 | 面向深度学习的粗粒度可重构阵列系统及计算方法 |
CN115168284B (zh) * | 2022-07-06 | 2024-09-10 | 中国科学技术大学 | 面向深度学习的粗粒度可重构阵列系统及计算方法 |
CN116776945A (zh) * | 2023-06-26 | 2023-09-19 | 中国科学院长春光学精密机械与物理研究所 | 一种基于zynq平台的vgg16网络加速器设计实现方法 |
CN118364872A (zh) * | 2024-04-09 | 2024-07-19 | 大连理工大学 | 一种基于列重构卷积的点云目标检测网络硬件加速方法 |
CN118364872B (zh) * | 2024-04-09 | 2024-10-01 | 大连理工大学 | 一种基于列重构卷积的点云目标检测网络硬件加速方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113222130A (zh) | 一种基于fpga的可重构卷积神经网络加速器 | |
CN108171317B (zh) | 一种基于soc的数据复用卷积神经网络加速器 | |
US20240256828A1 (en) | Neural processor | |
CN106940815B (zh) | 一种可编程卷积神经网络协处理器ip核 | |
CN109284817B (zh) | 深度可分离卷积神经网络处理架构/方法/系统及介质 | |
CN109409511B (zh) | 一种用于动态可重构阵列的卷积运算数据流调度方法 | |
CN107657581A (zh) | 一种卷积神经网络cnn硬件加速器及加速方法 | |
WO2020073211A1 (zh) | 运算加速器、处理方法及相关设备 | |
CN110222818B (zh) | 一种用于卷积神经网络数据存储的多bank行列交织读写方法 | |
CN108170640B (zh) | 神经网络运算装置及应用其进行运算的方法 | |
CN117933314A (zh) | 处理装置、处理方法、芯片及电子装置 | |
US20220179823A1 (en) | Reconfigurable reduced instruction set computer processor architecture with fractured cores | |
CN1519704A (zh) | 包括纯量算术逻辑单元的单指令多数据处理机 | |
CN112905530B (zh) | 片上架构、池化计算加速器阵列、单元以及控制方法 | |
CN110705702A (zh) | 一种动态可扩展的卷积神经网络加速器 | |
CN113869507B (zh) | 一种基于脉动阵列的神经网络加速器卷积计算装置与方法 | |
Huang et al. | IECA: An in-execution configuration CNN accelerator with 30.55 GOPS/mm² area efficiency | |
CN109948787B (zh) | 用于神经网络卷积层的运算装置、芯片及方法 | |
CN110414672B (zh) | 卷积运算方法、装置及系统 | |
CN111091181A (zh) | 卷积处理单元、神经网络处理器、电子设备及卷积运算方法 | |
CN113837922B (zh) | 计算装置、数据处理方法及相关产品 | |
CN114372012B (zh) | 一种通用、可配置的高能效池化计算单行输出系统和方法 | |
CN111047035A (zh) | 神经网络处理器、芯片和电子设备 | |
CN112862079B (zh) | 一种流水式卷积计算架构设计方法及残差网络加速系统 | |
CN114912596A (zh) | 面向稀疏卷积神经网络的多chiplet系统及其方法 |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20210806 |
|
WD01 | Invention patent application deemed withdrawn after publication |