【技术实现步骤摘要】
一种数据流驱动的卷积神经网络加速器
[0001]本专利技术属于深度学习加速电路
,具体涉及一种数据流驱动的卷积神经网络加速器。
技术介绍
[0002]目前,以卷积神经网络(Convolutional Neural Network,CNN)为代表的深度学习技术得到了学术界和工业界的广泛关注。一系列深度更深、拓扑结构更复杂、精度更高的CNN模型相继被提出。而已有的基于控制流驱动的深度学习处理器架构的控制逻辑相对复杂,且可扩展性不足,难以适应CNN在算子类型、拓扑结构、网络深度等方面的快速变迁。比如,MobileNet中出现的深度分离卷积层,与普通的卷积层的计算过程具有较大差异;ResNet中提出的ShortCut层,使得CNN的网络拓扑不再是简单的串联结构。因此,设计一种在提高可扩展性的同时可进一步增强系统的计算性能的卷积神经网络加速器架构成为需求。
技术实现思路
[0003]鉴于上述的分析,本专利技术旨在公开了一种数据流驱动的卷积神经网络加速器,将不同的网络层及各类数据传输功能实现于不同的模块,并通过流式结构连接;在提高CNN加速器的可扩展性的同时,进一步提升了加速器的整体性能。
[0004]本专利技术公开了一种数据流驱动的卷积神经网络加速器,包括:预处理模块、卷积模块、池化模块和指令分发模块;
[0005]所述预处理模块,用于加载输入特征执行卷积神经网络的预处理;
[0006]所述卷积模块,用于加载权重、偏置数据以及输入特征执行卷积层、全连接层或非线性激活层的计算; />[0007]所述池化模块,用于加载卷积模块的计算结果执行池化层的计算输出;
[0008]所述指令分发模块,用于在外部主控指令的控制下,对所述预处理模块、卷积模块和池化模块进行工作模式的配置和控制;
[0009]在所述指令分发模块的工作模式配置和控制下,根据卷积神经网络结构,将预处理模块、卷积模块和池化模块进行动态的流式结构连接;实现对输入数据的卷积神经网络加速处理。
[0010]进一步地,在指令分发模块的配置和控制下,所述动态的流式结构连接包括:
[0011]将预处理模块与卷积模块连接并旁路池化模块的结构;将卷积模块与池化模块连接并旁路预处理模块的结构;或保留卷积模块旁路预处理模块与池化模块的结构。
[0012]进一步地,在将预处理模块与卷积模块连接并旁路池化模块的结构中,将预处理模块配置为预处理模式,卷积模块配置为卷积层或卷积层+非线性激活层的处理模式;
[0013]将卷积模块与池化模块连接并旁路预处理模块的结构中,将卷积模块配置为卷积层或卷积层+非线性激活层的处理模式,将池化模块配置为特定的池化模式;
[0014]在保留卷积模块旁路预处理模块与池化模块的结构中,将卷积模块配置为卷积层、全连接层、卷积层+非线性激活层或全连接层+非线性激活层的处理模式。
[0015]进一步地,还包括特征加载器、权重加载器、特征卸载器和外部DRAM存储器;
[0016]所述特征加载器,用于从外部DRAM存储器获取输入特征,并加载到被接入的预处理模块或卷积模块;
[0017]所述权重加载器,用于从外部DRAM存储器获取权重、偏置数据加载到卷积模块;
[0018]所述特征卸载器,用于从接入的池化模块或卷积模块中获取特征数据进行卸载到外部DRAM存储器。
[0019]进一步地,所述特征加载器与预处理模块之间连接有第一FIFO
‑
A,所述预处理模块的输出端与卷积模块的第二输入端之间连接有第一FIFO
‑
B;
[0020]所述权重加载器的输出端与卷积模块的第一输入端之间连接有第二FIFO
‑
A,所述卷积模块的输出端与池化模块的输入端之间连接有第二FIFO
‑
B;
[0021]所述特征卸载器的输入端与池化模块输出端之间连接有第三FIFO
‑
A。
[0022]进一步地,所述第一FIFO
‑
A的输出端与第一FIFO
‑
B的输入端之间连接有第一旁路;在指令分发模块的控制下接通;
[0023]所述第一FIFO
‑
B的输出端与卷积模块的输出端之间连接有第二旁路;在指令分发模块的控制下接通;
[0024]所述第二FIFO
‑
B的输出端与池化模块的输出端之间连接有第三旁路;在指令分发模块的控制下接通。
[0025]进一步地,FIFO
‑
A具有数据缓冲功能;FIFO
‑
B具有模块间数据传输功能;FIFO
‑
A数据深度大于FIFO
‑
B。
[0026]进一步地,所述FIFO
‑
A和FIFO
‑
B均为流式结构FIFO。
[0027]进一步地,模块之间通过流式结构FIFO联接;由指令分发模块配置完各被控模块的工作模式后,各模块的运行或阻塞状态由数据驱动;当对应模块的上级FIFO不为空、下级FIFO不为满时,所述模块进入运行状态;否则,便进入阻塞状态。
[0028]进一步地,在指令分发模块的配置和控制下,执行VGG
‑
16的网络结构进行卷积神经网络计算;在进行动态的流式结构连接的过程中,包括以下步骤:
[0029]1)通过配置使预处理模块与卷积模块连接,旁路池化模块;
[0030]特征加载器从外部DRAM存储器中获取输入图像特征,加载到预处理模块进行预处理后输出到卷积模块进行一层卷积层处理后,特征卸载器将卷积结果卸载到外部DRAM存储器中;
[0031]2)通过配置使卷积模块与池化模块连接,旁路预处理模块;
[0032]特征加载器从外部DRAM存储器中获取上一卷积层输出的卷积结果,加载到卷积模块进行一层卷积处理层后输出到池化模块进行池化层处理后,特征卸载器将池化结果卸载到外部DRAM存储器中;
[0033]3)通过配置保留卷积模块,旁路预处理模块与池化模块;
[0034]特征加载器从外部DRAM存储器中获取上一卷积层输出的卷积结果,加载到卷积模块进行一层卷积层处理后,特征卸载器将卷积结果卸载到外部DRAM存储器中;
[0035]4)通过配置使卷积模块与池化模块连接,旁路预处理模块;
[0036]特征加载器从外部DRAM存储器中获取上一卷积层输出的卷积结果,加载到卷积模块进行一层卷积处理层后输出到池化模块进行池化层处理后,特征卸载器将池化结果卸载到外部DRAM存储器中;
[0037]5)重复执行步骤3)
‑
4)直执行到VGG
‑
16的网络结构的全连接层;
[0038]6)通过配置保留卷积模块,旁路预处理模块与池化模块;并将卷积模块配置为全连接层;
[0039]特征加载器从外部DRAM存储器中获取上一层输出的结果,加载到卷积模块进行本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种数据流驱动的卷积神经网络加速器,其特征在于,包括:预处理模块、卷积模块、池化模块和指令分发模块;所述预处理模块,用于加载输入特征执行卷积神经网络的预处理;所述卷积模块,用于加载权重、偏置数据以及输入特征执行卷积层、全连接层或非线性激活层的计算;所述池化模块,用于加载卷积模块的计算结果执行池化层的计算输出;所述指令分发模块,用于在外部主控指令的控制下,对所述预处理模块、卷积模块和池化模块进行工作模式的配置和控制;在所述指令分发模块的工作模式配置和控制下,根据卷积神经网络结构,将预处理模块、卷积模块和池化模块进行动态的流式结构连接;实现对输入数据的卷积神经网络加速处理。2.根据权利要求1所述的卷积神经网络加速器,其特征在于,在指令分发模块的配置和控制下,所述动态的流式结构连接包括:将预处理模块与卷积模块连接并旁路池化模块的结构;将卷积模块与池化模块连接并旁路预处理模块的结构;或保留卷积模块旁路预处理模块与池化模块的结构。3.根据权利要求2所述的卷积神经网络加速器,其特征在于,在将预处理模块与卷积模块连接并旁路池化模块的结构中,将预处理模块配置为预处理模式,卷积模块配置为卷积层或卷积层+非线性激活层的处理模式;将卷积模块与池化模块连接并旁路预处理模块的结构中,将卷积模块配置为卷积层或卷积层+非线性激活层的处理模式,将池化模块配置为特定的池化模式;在保留卷积模块旁路预处理模块与池化模块的结构中,将卷积模块配置为卷积层、全连接层、卷积层+非线性激活层或全连接层+非线性激活层的处理模式。4.根据权利要求1
‑
3任一项所述的卷积神经网络加速器,其特征在于,还包括特征加载器、权重加载器、特征卸载器和外部DRAM存储器;所述特征加载器,用于从外部DRAM存储器获取输入特征,并加载到被接入的预处理模块或卷积模块;所述权重加载器,用于从外部DRAM存储器获取权重、偏置数据加载到卷积模块;所述特征卸载器,用于从接入的池化模块或卷积模块中获取特征数据进行卸载到外部DRAM存储器。5.根据权利要求4所述的卷积神经网络加速器,其特征在于,所述特征加载器与预处理模块之间连接有第一FIFO
‑
A,所述预处理模块的输出端与卷积模块的第二输入端之间连接有第一FIFO
‑
B;所述权重加载器的输出端与卷积模块的第一输入端之间连接有第二FIFO
‑
A,所述卷积模块的输出端与池化模块的输入端之间连接有第二FIFO
‑
B;所述特征卸载器的输入端与池化模块输出端之间连接有第三FIFO
‑
A。6.根据权利要求5所述的卷积神经网络加速器,其特征在于,所述第一FIFO
‑
A的输出端与第一FIFO
‑
B的输入端之间连接有第一旁路;在指令分发模块的控制下接通;所述第一FIFO
‑
...
【专利技术属性】
技术研发人员:王晓峰,周辉,盖一帆,赵雄波,蒋彭龙,李悦,吴松龄,李超然,李山山,刘国明,
申请(专利权)人:北京航天自动控制研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。