一种基于FPGA设计的支持稀疏剪枝的卷积神经网络加速器的制作方法

专利2022-06-29  72


本申请属于深度学习领域,具体涉及一种基于fpga设计的支持稀疏剪枝的卷积神经网络加速器。



背景技术:

近年来,人工智能风靡全球,其中以计算机视觉及语音识别应用最为广泛,给人们的生活带来了极大的便利。计算机视觉及语音识别主要使用深度神经网络进行计算推理,因为深度神经网络在精确度方面有极佳的表现。

一般来说,神经网络层数越深、参数越多,推理的结果就越准确。但与此同时,网络越深、参数越多意味着所消耗的计算资源和存储资源也就越多。另一方面,神经网络的参数众多,但其中有些参数对最终的输出结果贡献不大而显得冗余。

卷积神经网络是深度神经网络的一类,其一方面具有深度神经网络高精确度的优势,但是也继承了其庞大计算量的缺点,因此如何减少卷神经网络计算量一直是人工智能领域的热门研究方向。卷积神经网络中卷积运算占总运算量90%以上,卷积运算和参数容量成正比,剪枝可以减少冗余的参数且保持相当的精度。剪枝通过减少总的运算量来加速神经网络的运算,但是剪枝后网络运算的不规则性增加了神经网络加速器硬件实现的复杂度,导致现有的加速器设计都不能充分利用权重稀疏带来的加速效果,不仅加速效果差,同时也存在计算资源利用率低的缺陷。



技术实现要素:

本申请的目的在于提供一种基于fpga设计的支持稀疏剪枝的卷积神经网络加速器,能够应对剪枝后网络计算的不规则性,有效跳过权重为零的乘累加运算,从而减少总运算量,加速神经网络运算。

为实现上述目的,本申请所采取的技术方案为:

一种基于fpga设计的支持稀疏剪枝的卷积神经网络加速器,所述基于fpga设计的支持稀疏剪枝的卷积神经网络加速器包括总线接口单元、权重存储及管理单元、输入缓存fifo阵列、mac计算阵列、中间结果缓存ram阵列、流水线加法器阵列及输出缓存及管理单元,其中:

所述总线接口单元用于从ddr内存向所述输入缓存fifo阵列传输特征图列,所述特征图列由特征图上大小等同于卷积核大小的数据按预设规则组成;

所述输入缓存fifo阵列包含n个fifo,各所述fifo接收所述总线接口单元输出的不同的特征图列,并按照先进先出原则向所述mac计算阵列输出特征图列中的待计算数据;

所述权重存储及管理单元用于向所述mac计算阵列中输出权重列,所述权重列由所有卷积核同一通道中相同位置的非零权重组成,并且每个非零权重具有与所在卷积核的编号相同的索引值;

所述mac计算阵列包含与各fifo对应的mac组,所述mac组中包含多个乘加器,各mac组接收从权重存储及管理单元输出的权重列、以及从对应fifo输出的一个待计算数据,mac组中各乘加器按序接收权重列中的一个非零权重,计算非零权重与待计算数据的乘积得到乘积结果,并向中间结果缓存ram阵列输出乘累加结果;

所述中间结果缓存ram阵列包含与各mac组对应的ram组,所述ram组中包含多个中间缓存ram,所述中间缓存ram接收对应乘加器输出的乘累加结果,并且该乘累加结果在中间缓存ram中存储的地址为用于计算该乘累加结果的非零权重对应的索引值,所述乘累加结果为乘加器本次计算的乘积结果与该乘加器对应的中间缓存ram中相同地址存储的中间结果累加后得到;

所述流水线加法器阵列包含与各ram组对应的加法器组,各加法器组中包含多个加法器,各加法器组用于对应ram组中存储的中间结果的求和运算,并将求和结果作为卷积运算结果向所述输出缓存及管理单元输出;

所述输出缓存及管理单元包含与各加法器组对应的多个输出缓存ram,各输出缓存ram用于存储对应加法器组输出的卷积运算结果。

作为优选,所述fifo、mac组、ram组、加法器组、输出缓存ram均为n个,所述n表示并列度,并且每个fifo、mac组、ram组、加法器组、输出缓存ram之间存在一一对应关系;

各所述mac组中包含m个乘加器,所述m为2的幂次,各所述ram组中包含2*m个中间缓存ram,并且每个乘加器对应连接两个中间缓存ram,乘加器输出的乘累加结果作为中间结果缓存在对应连接的两个中间缓存ram中的一个,针对同一特征图列计算的中间结果存储在同一中间缓存ram中,并且两个中间缓存ram采用乒乓工作方式进行存储。

作为优选,各所述加法器组中包含p个加法器,并且p=1 2 4 … 2q,q=q1-1,q1=log2m,每组加法器组在其对应的mac组完成一列特征图列和该特征图列对应的卷积核中的所有权重的运算后启动求和运算,并且求和运算采用流水线的方式进行。

作为优选,所述求和运算采用流水线的方式进行包括:

取m个中间缓存ram中一个相同的地址的数据,即得到m个数据;

将m个数据作为待累加数据,两两分组后分别输入2q个加法器中,得到m/2个数据,将m/2个数据作为新的待累加数据,两两分组后分别输入2q-1个加法器中,循环执行直至将待累加数据两两分组后输入20个加法器中,并将该加法器输出的结果作为该地址对应的卷积核与特征图列最终的卷积运算结果;

依次遍历m个中间缓存ram中相同的地址的数据,根据每次取得的m个数据进行求和,得到各个卷积核与特征图列最终的卷积运算结果。

作为优选,所述mac组中各乘加器按序接收权重列中的一个非零权重,计算非零权重与待计算数据的乘积得到乘积结果,并向中间结果缓存ram阵列输出乘累加结果,包括:

mac组中各乘加器接收待计算数据,并且按序接收权重列中的一个非零权重,待计算数据与各非零权重的位置对应,并且每个乘加器中待计算数据相同、非零权重不同;

计算非零权重与待计算数据的乘积,并从连接的中间缓存ram读取中间结果,该中间缓存ram用于缓存当前特征图列计算的中间结果,并且读取中间结果的地址为该乘加器本次计算使用的非零权重对应的索引值;

将中间结果与乘积结果累加后作为新的中间结果保存至对应的中间缓存ram中,并且新的中间结果存储的地址与原中间结果的地址相同,以更新中间结果。

作为优选,所述总线接口单元包括位于fpga读侧的总线接口单元和位于fpga写侧的总线接口单元,所述位于fpga读侧的总线接口单元用于从ddr内存读取特征图和卷积核,所述位于fpga写侧的总线接口单元用于将输出缓存及管理单元中的卷积运算结果写入ddr内存。

作为优选,所述输出缓存及管理单元包含一个轮询控制器和n个输出缓存ram,所述轮询控制器用于控制存储在n个输出缓存ram中的卷积运算结果按序通过位于fpga写侧的总线接口单元向ddr内存传输。

本申请提供的基于fpga设计的支持稀疏剪枝的卷积神经网络加速器,根据去除零值权重后的卷积核,形成由非零权重构成的权重列,并且每次按照权重列最大计算量将权重列中的非零权重按序动态分配给乘加器,使得本实施例的卷积神经网络加速器能够应对剪枝后网络计算的不规则性,有效跳过权重为零的乘累加运算,从而减少总运算量,加速神经网络运算。

附图说明

图1为本申请的基于fpga设计的支持稀疏剪枝的卷积神经网络加速器的结构示意图;

图2为本申请的卷积神经网络加速器的一种计算方式示意图;

图3为本申请的实施例1中特征图数据存储方式示意图;

图4为本申请的实施例1中权重数据存储方式示意图;

图5为本申请的实施例1中乘加器工作示意图;

图6为本申请的实施例1流水线加法器阵列工作示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是在于限制本申请。

如图1所示,其中一个实施例提供一种基于fpga设计的支持稀疏剪枝的卷积神经网络加速器,实现应对稀疏剪枝后的不规则计算,加速神经网络运算。

本实施例的基于fpga设计的支持稀疏剪枝的卷积神经网络加速器包括总线接口单元、权重存储及管理单元、输入缓存fifo阵列、mac计算阵列、中间结果缓存ram阵列、流水线加法器阵列及输出缓存及管理单元,其中:

1)总线接口单元:总线接口单元用于从ddr内存向输入缓存fifo阵列传输特征图列,特征图列由特征图上大小等同于卷积核大小的数据按预设规则组成。如图2所示,本实施例中所指的预设规则为按照通道顺序将等同于卷积核大小的数据从左上至右下取值并排成一列。

总线接口单元为通用aximaster接口,用于ddr内存与fpga片两者之间数据的传输,包括权重及特征图;特征图数据一次burst传输的内容为所有通道相同位置的一个像素点;权重一次burst传输一层的数据。

并且为了保证结构的完整性,在一实施例中总线接口单元包括位于fpga读侧的总线接口单元和位于fpga写侧的总线接口单元,位于fpga读侧的总线接口单元用于从ddr内存读取特征图和卷积核,即卷积核中的权重;位于fpga写侧的总线接口单元用于将输出缓存及管理单元输出的多个求和结果写入ddr内存。

2)输入缓存fifo阵列包含n个fifo,各fifo接收总线接口单元输出的不同的特征图列,并按照先进先出原则向mac计算阵列输出特征图列中的待计算数据,所有fifo非空时读使能有效。

3)权重存储及管理单元用于权重数据的缓存、读取及分配,最终向mac计算阵列中输出权重列,权重列由所有卷积核同一通道中相同位置的非零权重组成,并且每个非零权重具有与所在卷积核的编号相同的索引值。

在一实施例中,所有权重列按照链式结构连续存储,存储格式为非零权重 索引值 结束标示,索引值即该非零权重在所有卷积核中的位置,即卷积核的编号,结束标识用于间隔不同的权重列。连续读取权重的方式为判断当前地址存储的结束标识来确定是否立即读取下一个地址中的权重。

权重存储及管理单元由输入缓存fifo阵列读使能触发权重的读取,在读取到有效的结束标识后停止,权重读取后按照排列顺序分配并且分配的都是非零权重,零值权重不进行任何计算。

4)mac计算阵列包含与各fifo对应的mac组,所述mac组中包含多个乘加器,各mac组接收从权重存储及管理单元输出的权重列、以及从对应fifo输出的一个待计算数据,mac组中各乘加器按序接收权重列中的一个非零权重,计算非零权重与待计算数据的乘积得到乘积结果,并向中间结果缓存ram阵列输出乘累加结果。

5)中间结果缓存ram阵列包含与各mac组对应的ram组,所述ram组中包含多个中间缓存ram,所述中间缓存ram接收对应乘加器输出的乘累加结果,并且该乘累加结果在中间缓存ram中存储的地址为用于计算该乘累加结果的非零权重对应的索引值,所述乘累加结果为乘加器本次计算的乘积结果与该乘加器对应的中间缓存ram中相同地址存储的中间结果累加后得到。

对于一个卷积核而言,卷积运算为一个乘累加运算的过程,而经过稀疏剪枝后的权重列中权重的数量不一定与卷积核数量相等,故权重存储及管理单元按排列顺序分配权重会存在一个乘加器每次计算被分配的权重可能来自于不同卷积核的情况,即权重动态分配于乘加器,保证每次都是最大效率计算。

为了应对权重动态分配,本实施例借助中间缓存ram实现乘累加运算如下:

mac组中各乘加器接收待计算数据,并且按序接收权重列中的一个非零权重,待计算数据与各非零权重的位置对应,并且每个乘加器中待计算数据相同、非零权重不同。

计算非零权重与待计算数据的乘积,并从连接的中间缓存ram读取中间结果,该中间缓存ram用于缓存当前特征图列计算的中间结果,并且读取中间结果的地址为该乘加器本次计算使用的非零权重对应的索引值。

将中间结果与乘积结果累加后作为新的中间结果保存至对应的中间缓存ram中,并且新的中间结果存储的地址与原中间结果的地址相同,以更新中间结果。

6)流水线加法器阵列包含与各ram组对应的加法器组,各加法器组中包含多个加法器,各加法器组用于对应ram组中存储的中间结果的求和运算,并将求和结果作为卷积运算结果向所述输出缓存及管理单元输出。

7)输出缓存及管理单元包含与各加法器组对应的多个输出缓存ram,各输出缓存ram用于存储对应加法器组输出的卷积运算结果。

为了提高并行计算效率,在一实施例中,设置fifo、mac组、ram组、加法器组、输出缓存ram均为n个,所述n表示并列度,并且每个fifo、mac组、ram组、加法器组、输出缓存ram之间存在一一对应关系。

各所述mac组中包含m个乘加器,所述m为2的幂次,各所述ram组中包含2*m个中间缓存ram,并且每个乘加器对应连接两个中间缓存ram,乘加器输出的乘累加结果作为中间结果缓存在对应连接的两个中间缓存ram中的一个,针对同一特征图列计算的中间结果存储在同一中间缓存ram中,并且两个中间缓存ram采用乒乓工作方式进行存储。

本实施例中一个乘加器对应的两个中间缓存ram在完成一列特征图列的计算后才会切换,并且在切换本次用于存储的中间缓存ram时,mac组先判断目标中间缓存ram是否处于连续读取状态,本实施例中的连续读取状态应理解为从起始地址依次读取到末尾地址,若是则mac组处于等待状态,若否则对目标中间缓存ram进行读写操作。

本实施例中每个中间缓存ram的每个地址对应一个标识位,用于标识该地址存储的数据是否有效,当该地址被写后置为有效。

在一实施例中,各所述加法器组中包含p个加法器,并且p=1 2 4 … 2q,q=q1-1,q1=log2m,每组加法器组在其对应的mac组完成一列特征图列和该特征图列对应的卷积核中的所有权重的运算后启动求和运算,并且求和运算采用流水线的方式进行。

进一步,提供一种流水线求和运算如下:

取m个中间缓存ram中一个相同的地址的数据,即得到m个数据。

将m个数据作为待累加数据,两两分组后分别输入2q个加法器中,得到m/2个数据,将m/2个数据作为新的待累加数据,两两分组后分别输入2q-1个加法器中,循环执行直至将待累加数据两两分组后输入20个加法器中,并将该加法器输出的结果作为该地址对应的卷积核与特征图列最终的卷积运算结果。

依次遍历m个中间缓存ram中相同的地址的数据,根据每次取得的m个数据进行求和,得到各个卷积核与特征图列最终的卷积运算结果。

流水线求和运算中循环执行的过程例如pipe0时刻m个数据两两求和,pipe1时刻m/2个数据两两求和,pipe2时刻m/4个数据两两求和,以此类推,最终输出一个求和结果。并且加法器组对每一地址的数据执行完加法后直接向输出缓存ram输出求和结果。

为了保证输出缓存及管理单元中数据的有序输出,输出缓存及管理单元包含一个轮询控制器和n个输出缓存ram,所述轮询控制器用于控制存储在n个输出缓存ram中的卷积运算结果按序通过位于fpga写侧的总线接口单元向ddr内存传输,即轮询控制器的输出方式为一次将一个输出缓存ram中存储的含有所有输出通道相同位置的一个像素点数据全部输出。

为了便于对本申请的理解,以下通过实施例进一步说明。

实施例1

本实施例以输入缓存fifo阵列含有4个fifo,mac计算阵列含有4*8个乘加器,中间结果缓存ram阵列含有4*16个中间缓存ram,输入图片规格为8*8*3,卷积核大小3*3,卷积核数量为32,步进为1为例进行说明,则本实施例的卷积神经网络加速器的工作方式如下:

主机按照图3所示的方式将特征图的数据写入ddr内存的区域0,并且按照图4所示的方式将权重数据写入ddr区域1,如果fpga片上有足够ram空间将剪枝后的权重存储在fpga片上,则区域1可省略。

总线接口单元先将权重数据从外部ddr区域1读取到加速器内部的ram中,读取的方式可以是一次突发传输一层的权重数据,如果权重存储在片上,此步可省略;然后将特征图数据从外部ddr区域0读取到加速器内部,因为有4个输入缓存fifo且步进为1,因此一次读取4个像素点(像素点0~3,每个像素点包含3个通道),像素点0的数据写入fifo0,像素点1的数据写入fifo1和fifo0,以此类推,像素点3的数据写入fifo3、fifo2和fifo1。读取的先后顺序是第1行4个点,第2行4个点,第3行4个点,然后读取像素点4~7(每个点包含3个通道),读取的先后顺序仍然是第1行,第2行,第3行。

需要说明的是,在读取像素点时,读取的行数由卷积核大小确定,并且一行中哪个像素点数据写入哪个fifo由卷积核大小及步进决定。

输入缓存fifo阵列4个fifo都非空时,读取一次fifo,并将各fifo的数据传输给与其对应的4组mac组;与此同时,权重存储及管理单元读取与该像素点数据对应的权重列分发给所有的mac组,mac计算阵列中的各mac组共享一套权重;重复此操作直至卷积运算结束。

权重存储及管理单元读取一列权重列分发给所有的mac组,假设经过剪枝后,其中一列权重列的长度是16(非零权重的数量),那么总共分两次分发给mac组进行乘累加计算,每次将8个权重分别分配给8个乘加器;假设不做剪枝,那么一列权重列的长度为32(因为卷积核的数量为32),需要分4次每次8个权重分发给8个乘加器;由此可见,本实施例的加速器通过支持剪枝、跳过权重为零的运算提升了卷积神经网络的计算速度。

mac计算阵列中的乘加器工作示意图如图5所示,乘法运算后进行加法运算,加法运算针对的是乘法的乘积结果及中间缓存ram相应地址存储的中间结果,其运算结果作为中间结果写回该中间缓存ram相应的地址中,中间缓存ram中用于存储的地址为权重的索引值;采用如此方式能够提高乘加器的利用率,不必将乘加器与卷积核绑定,一旦乘加器与卷积核绑定,势必会使得那些权重为零的卷积核对应的乘加器空闲,浪费计算资源。

当完成一列权重列与特征图列的乘累加运算时,启动流水线加法器阵列对与其连接的一组中间缓存ram(8个)之间的存储数据进行求和运算,同时为不阻塞mac计算阵列继续工作,后续的中间结果缓存在另一组中间缓存ram中,这就是每个乘加器对应2个中间缓存ram的原因,可显著提高卷积运算的效率。

从0地址开始同时读取8个中间缓存ram中的数据直至将中间缓存ram中的数据全部输出到对应的加法器组中。

流水线加法器按照图6的方式工作,取8个中间缓存ram中的同一地址的8个数据,在累加时pipe0时刻8个数据两两相加,pipe1时刻4个数据两两相加,pipe2时刻2个数据相加得到针对该地址的最终的卷积运算结果,即得到一个输出通道的一个像素点。

输出缓存及管理单元接收4组加法器组输出的卷积运算结果,并按照输出缓存ram排列次序将卷积运算结果通过总线接口单元输出到外部ddr中,每个输出缓存ram一次传输的长度为32(卷积核数量为32),即所有输出通道相同位置的一个像素点。

以上涉及的输入图片大小、卷积核大小及数量、步进对于本申请提出的加速器都是可配置的内容。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。


技术特征:

1.一种基于fpga设计的支持稀疏剪枝的卷积神经网络加速器,其特征在于,所述基于fpga设计的支持稀疏剪枝的卷积神经网络加速器包括总线接口单元、权重存储及管理单元、输入缓存fifo阵列、mac计算阵列、中间结果缓存ram阵列、流水线加法器阵列及输出缓存及管理单元,其中:

所述总线接口单元用于从ddr内存向所述输入缓存fifo阵列传输特征图列,所述特征图列由特征图上大小等同于卷积核大小的数据按预设规则组成;

所述输入缓存fifo阵列包含n个fifo,各所述fifo接收所述总线接口单元输出的不同的特征图列,并按照先进先出原则向所述mac计算阵列输出特征图列中的待计算数据;

所述权重存储及管理单元用于向所述mac计算阵列中输出权重列,所述权重列由所有卷积核同一通道中相同位置的非零权重组成,并且每个非零权重具有与所在卷积核的编号相同的索引值;

所述mac计算阵列包含与各fifo对应的mac组,所述mac组中包含多个乘加器,各mac组接收从权重存储及管理单元输出的权重列、以及从对应fifo输出的一个待计算数据,mac组中各乘加器按序接收权重列中的一个非零权重,计算非零权重与待计算数据的乘积得到乘积结果,并向中间结果缓存ram阵列输出乘累加结果;

所述中间结果缓存ram阵列包含与各mac组对应的ram组,所述ram组中包含多个中间缓存ram,所述中间缓存ram接收对应乘加器输出的乘累加结果,并且该乘累加结果在中间缓存ram中存储的地址为用于计算该乘累加结果的非零权重对应的索引值,所述乘累加结果为乘加器本次计算的乘积结果与该乘加器对应的中间缓存ram中相同地址存储的中间结果累加后得到;

所述流水线加法器阵列包含与各ram组对应的加法器组,各加法器组中包含多个加法器,各加法器组用于对应ram组中存储的中间结果的求和运算,并将求和结果作为卷积运算结果向所述输出缓存及管理单元输出;

所述输出缓存及管理单元包含与各加法器组对应的多个输出缓存ram,各输出缓存ram用于存储对应加法器组输出的卷积运算结果。

2.如权利要求1所述的基于fpga设计的支持稀疏剪枝的卷积神经网络加速器,其特征在于,所述fifo、mac组、ram组、加法器组、输出缓存ram均为n个,所述n表示并列度,并且每个fifo、mac组、ram组、加法器组、输出缓存ram之间存在一一对应关系;

各所述mac组中包含m个乘加器,所述m为2的幂次,各所述ram组中包含2*m个中间缓存ram,并且每个乘加器对应连接两个中间缓存ram,乘加器输出的乘累加结果作为中间结果缓存在对应连接的两个中间缓存ram中的一个,针对同一特征图列计算的中间结果存储在同一中间缓存ram中,并且两个中间缓存ram采用乒乓工作方式进行存储。

3.如权利要求2所述的基于fpga设计的支持稀疏剪枝的卷积神经网络加速器,其特征在于,各所述加法器组中包含p个加法器,并且p=1 2 4 … 2q,q=q1-1,q1=log2m,每组加法器组在其对应的mac组完成一列特征图列和该特征图列对应的卷积核中的所有权重的运算后启动求和运算,并且求和运算采用流水线的方式进行。

4.如权利要求3所述的基于fpga设计的支持稀疏剪枝的卷积神经网络加速器,其特征在于,所述求和运算采用流水线的方式进行包括:

取m个中间缓存ram中一个相同的地址的数据,即得到m个数据;

将m个数据作为待累加数据,两两分组后分别输入2q个加法器中,得到m/2个数据,将m/2个数据作为新的待累加数据,两两分组后分别输入2q-1个加法器中,循环执行直至将待累加数据两两分组后输入20个加法器中,并将该加法器输出的结果作为该地址对应的卷积核与特征图列最终的卷积运算结果;

依次遍历m个中间缓存ram中相同的地址的数据,根据每次取得的m个数据进行求和,得到各个卷积核与特征图列最终的卷积运算结果。

5.如权利要求3所述的基于fpga设计的支持稀疏剪枝的卷积神经网络加速器,其特征在于,所述mac组中各乘加器按序接收权重列中的一个非零权重,计算非零权重与待计算数据的乘积得到乘积结果,并向中间结果缓存ram阵列输出乘累加结果,包括:

mac组中各乘加器接收待计算数据,并且按序接收权重列中的一个非零权重,待计算数据与各非零权重的位置对应,并且每个乘加器中待计算数据相同、非零权重不同;

计算非零权重与待计算数据的乘积,并从连接的中间缓存ram读取中间结果,该中间缓存ram用于缓存当前特征图列计算的中间结果,并且读取中间结果的地址为该乘加器本次计算使用的非零权重对应的索引值;

将中间结果与乘积结果累加后作为新的中间结果保存至对应的中间缓存ram中,并且新的中间结果存储的地址与原中间结果的地址相同,以更新中间结果。

6.如权利要求2所述的基于fpga设计的支持稀疏剪枝的卷积神经网络加速器,其特征在于,所述总线接口单元包括位于fpga读侧的总线接口单元和位于fpga写侧的总线接口单元,所述位于fpga读侧的总线接口单元用于从ddr内存读取特征图和卷积核,所述位于fpga写侧的总线接口单元用于将输出缓存及管理单元中的卷积运算结果写入ddr内存。

7.如权利要求6所述的基于fpga设计的支持稀疏剪枝的卷积神经网络加速器,其特征在于,所述输出缓存及管理单元包含一个轮询控制器和n个输出缓存ram,所述轮询控制器用于控制存储在n个输出缓存ram中的卷积运算结果按序通过位于fpga写侧的总线接口单元向ddr内存传输。

技术总结
本发明公开了一种基于FPGA设计的支持稀疏剪枝的卷积神经网络加速器,总线接口单元、权重存储及管理单元、输入缓存FIFO阵列、MAC计算阵列、中间结果缓存RAM阵列、流水线加法器阵列及输出缓存及管理单元。本发明根据去除零值权重后的卷积核,形成由非零权重构成的权重列,并且每次按照权重列最大计算量将权重列中的非零权重按序动态分配给乘加器,使得本发明的卷积神经网络加速器能够应对剪枝后网络计算的不规则性,有效跳过权重为零的乘累加运算,从而减少总运算量,加速神经网络运算。

技术研发人员:邱蔚;丁永林;曹学成;廖湘萍;李炜
受保护的技术使用者:中国电子科技集团公司第五十二研究所
技术研发日:2019.12.27
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-52676.html

最新回复(0)