CN114327676A - 一种面向卷积神经网络的高可靠加速器 - Google Patents
一种面向卷积神经网络的高可靠加速器 Download PDFInfo
- Publication number
- CN114327676A CN114327676A CN202111632984.1A CN202111632984A CN114327676A CN 114327676 A CN114327676 A CN 114327676A CN 202111632984 A CN202111632984 A CN 202111632984A CN 114327676 A CN114327676 A CN 114327676A
- Authority
- CN
- China
- Prior art keywords
- module
- data
- input
- output
- convolution
- 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
- 238000013527 convolutional neural network Methods 0.000 title claims abstract description 39
- 238000004364 calculation method Methods 0.000 claims abstract description 71
- 238000012545 processing Methods 0.000 claims abstract description 42
- 230000001133 acceleration Effects 0.000 claims abstract description 15
- 230000001537 neural effect Effects 0.000 claims abstract description 14
- 238000011176 pooling Methods 0.000 claims description 48
- 238000007781 pre-processing Methods 0.000 claims description 36
- 230000004913 activation Effects 0.000 claims description 14
- 230000002159 abnormal effect Effects 0.000 claims description 6
- 238000013528 artificial neural network Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 230000000903 blocking effect Effects 0.000 description 4
- 238000000034 method Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 238000003745 diagnosis Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000007596 consolidation process Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 230000005855 radiation Effects 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Images
Landscapes
- Complex Calculations (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明涉及一种面向卷积神经网络的高可靠加速器,包括指令分发模块和与其连接、受其控制的加载模块、路由模块、计算模块、冗余控制模块、和卸载模块;在指令分发控制模块的控制下,所述加载模块从外部加载输入特征数据和卷积核数据;路由模块将加载的数据分配给计算模块;所述计算模块中包括多个并列的计算核心,每个计算核心均用于接收分配数据进行卷积神经网络加速处理,输出处理结果;冗余控制模块将所述计算模块输出的多路计算结果输出到所述卸载模块,通过卸载模块将卷积神经网络加速处理结果卸载输出。本发明实现了卷积神经网络的加速处理,并兼顾卷积神经网络的高速处理和高可靠性处理的要求。
Description
技术领域
本发明属于深度学习加速电路技术领域,具体涉及一种面向卷积神经网络的高可靠加速器。
背景技术
目前,卷积神经网络(Convolutional Neural Network,CNN)在图像分类、目标检测、故障诊断等方面表现卓越,在航天型号中具有广泛的应用需求。部分计算任务(如目标检测算法)的计算量巨大,且具有强实时的需求,需要高性能的CNN加速器对其进行实时推理;而部分计算任务(如故障诊断算法)的计算量较小,但要求计算结果具有很高的可信度,需要高可靠的CNN加速器对其进行可靠计算。一般高空的电磁环境恶劣,航天型号中的计算***需进行抗辐射加固处理,以降低单粒子翻转的概率。但加固处理影响***微结构和电路时序,会限制***的性能。
发明内容
鉴于上述的分析,本发明旨在公开了一种面向卷积神经网络的高可靠加速器,解决卷积神经网络的加速处理问题,并兼顾满足卷积神经网络的高速处理和高可靠性处理的要求。
本发明公开了一种面向卷积神经网络的高可靠加速器,包括指令分发模块和与其连接、受其控制的加载模块、路由模块、计算模块、冗余控制模块、和卸载模块;在指令分发控制模块的控制下,
所述加载模块从外部加载输入特征数据和卷积核数据;路由模块将加载的数据分配给计算模块;
所述计算模块中包括多个并列的计算核心,每个计算核心均用于接收分配数据进行卷积神经网络加速处理,输出处理结果;
冗余控制模块将所述计算模块输出的多路计算结果输出到所述卸载模块,通过卸载模块将卷积神经网络加速处理结果卸载输出。
进一步地,指令分发控制模块包括以高可靠性为要求的控制模式一和以高性能为要求的控制模式二和控制模式三;并通过控制指令以锁步方式实现控制模式的相互切换;其中,
在控制模式一下,路由模块将加载模块加载的多路卷积核数据进行冗余处理后共享给多个计算核心,将输入特征数据直接共享给多个计算核心;冗余控制模块对多个计算核心的计算结果进行冗余处理后输出到特征卸载模块;
在控制模式二下,路由模块将加载模块加载的不同位置的输入特征数据和相同卷积核数据共享给多个计算核心,冗余控制模块对多个计算核心的技术结果直接输出到特征卸载模块;
在控制模式三下,路由模块将加载模块加载的一个位置的输入特征数据和多个卷积核数据共享给多个计算核心;冗余控制模块对多个计算核心的技术结果直接输出到特征卸载模块。
进一步地,所述加载模块包括一个特征加载器、一个权重加载器和两个数据加载器;所述计算模块中包括三个并列的计算核心;
在控制模式一下,特征加载器用于加载输入特征数据;权重加载器和两个数据加载器用于加载相同的卷积核数据;
在控制模式二下,特征加载器和两个数据加载器用于分别加载不同位置的输入特征数据;权重加载器用于加载卷积核数据;
在控制模式三下,特征加载器用于加载输入特征数据;权重加载器和两个数据加载器用于加载不同的卷积核数据。
进一步地,所述路由模块包括数据复制器U0~U3,数据寄存器R0~R12,数据选择器S0~S4,以及一个三取二数据冗余器;
其中,复制器U0输入端连接特征加载器输出端,复制器U1和U2输入端分别连接一个数据加载器输出端,复制器U3输入端连接权重加载器输出端;
复制器U0输出端分别连接数据寄存器R0、R1和R6输入端;复制器U1输出端分别连接数据寄存器R2、R3输入端和三取二数据冗余器第一输入端;复制器U2输出端分别连接数据寄存器R7、R8输入端和三取二数据冗余器第二输入端;复制器U3输出端分别连接数据寄存器R5、R10和R12输入端;三取二数据冗余器的输出端分别连接数据寄存器R4、R11;
寄存器R1、R2输出端分别连接数据选择器S0的第一输入端、第二输入端;
寄存器R3、R4、R5输出端分别连接数据选择器S1的第一输入端、第二输入端和第三输入端;
寄存器R6、R7输出端分别连接数据选择器S2的第一输入端、第二输入端;
寄存器R8、R9、R10输出端分别连接数据选择器S3的第一输入端、第二输入端和第三输入端;
寄存器R11、R12输出端分别连接数据选择器S4的第一输入端、第二输入端;
寄存器R0的输出端和数据选择器S0~S4作为路由模块的输出端。
进一步地,在控制模式一下,控制数据选择器S0、S2、S4选择第一输入端的数据进行输出,控制数据选择器S1、S3选择第二输入端的数据进行输出;
在控制模式二下,控制数据选择器S0、S2、S4选择第二输入端的数据进行输出,控制数据选择器S1、S3选择第三输入端的数据进行输出;
在控制模式三下,控制数据选择器S0~S3选择第一输入端的数据进行输出,数据选择S4选择第二输入端的数据输出。
进一步地,所述冗余控制模块包括数据复制器U4~U6,数据选择器S6,以及一个三取二数据冗余器;
数据复制器U4~U6的输入端分别连接三个计算核心的输出端;
数据复制器U4的输出端分别连接数据选择器S6的第一输入端和三取二数据冗余器的第一输入端;数据复制器U5的输出端连接三取二数据冗余器的第二输入端;数据复制器U6的输出端连接三取二数据冗余器的第三输入端;所述三取二数据冗余器的输出端连接数据选择器S6的第二输入端;
所述数据选择器S6的输出端、数据复制器U5、U6的输出端作为冗余模块的输出端。
进一步地,在控制模式一下,三个计算核心的数据经过三取二数据冗余器冗余处理后输出一路计算结果数据;
在控制模式二和控制模式二下,三个计算核心的数据直接输出。
进一步地,所述三取二数据冗余器的工作方式为:当输入的三个数据均相等时,则将任一数据输出;当输入数据中有两个相等,一个异常时,则将相等数据是可靠的,并将之输出;当输入的三个数据各不相等时,则向指令分发控制模块产生数据异常中断,从中断位置重启计算。
进一步地,所述计算核心包括预处理模块、卷积模块、池化模块、第一FIFO-B、第二FIFO-B、第三FIFO-B、第四FIFO-B、FIFO-A、第一旁路、第二旁路和第三旁路;
所述第一FIFO-B与第二FIFO-B的输入端作为计算核心的输入端与对应的冗余模块的输出端连接;第一FIFO-B的输出端分别连接预处理模块和第一旁路的输入端;第二FIFO-B的输处端与卷积模块的第一输入端连接;
预处理模块和第一旁路的输出端同时与第三FIFO-B的输入端连接;第三FIFO-B的输出端与卷积模块的第二输入端连接;第二旁路连接在卷积模块的第二输入端和输出端之间;
卷积模块的输出端与第四FIFO-B的输入端连接,第四FIFO-B的输出端连接池化模块和第三旁路的输入端;
池化模块和第叁旁路的输出端同时与FIFO-A的输入端连接;FIFO-A的输出端作为计算核心的输出端与冗余模块的输入端连接;
所述预处理模块,用于在指令分发控制模块的控制下加载输入特征执行卷积神经网络的预处理;
所述卷积模块,用于在指令分发控制模块的控制下加载卷积核数据以及输入特征执行卷积层、全连接层或非线性激活层的计算;
所述池化模块,用于指令分发控制模块的控制下加载卷积模块的计算结果执行池化层的计算输出;
所述第一旁路、第二旁路和第三旁路在在指令分发控制模块的控制下进行接通或断开。
进一步地,在指令分发控制模块的控制下计算核心的预处理模块、卷积模块和池化模块进行动态的流式结构连接;实现按照卷积神经网络的结构,对输入数据的卷积神经网络加速处理;
流式结构连接中,包括;
1)将预处理模块与卷积模块连接,通过第三旁路将池化模块旁路的结构;并将预处理模块配置为预处理层,卷积模块配置为卷积层或卷积层+非线性激活层;
2)将卷积模块与池化模块连接,通过第一旁路将预处理模块旁路的结构;并将卷积模块配置为卷积层或卷积层+非线性激活层,将池化模块配置为池化层;
3)保留卷积模块,通过第一旁路和第三旁路将预处理模块与池化模块旁路的结构,将卷积模块配置为卷积层、全连接层、卷积层+非线性激活层或全连接层+非线性激活层。
本发明至少可实现以下有益效果之一:
本发明实现了卷积神经网络的加速处理,并兼顾卷积神经网络的高速处理和高可靠性处理的要求,利用多核冗余的方式提高CNN加速器的可靠性,同时通过路由模块和冗余控制模块实现高可靠模式和高性能模式在运行时的动态切换,使得CNN加速器能够满足航天型号中高性能计算任务和高可靠计算任务的多方面需求。
附图说明
附图仅用于示出具体实施例的目的,而并不认为是对本发明的限制,在整个附图中,相同的参考符号表示相同的部件。
图1为本发明实施例中的卷积神经网络高可靠加速器原理框图;
图2为本发明实施例中的路由模块组成连接原理框图;
图3为本发明实施例中的冗余控制模块组成连接原理框图;
图4为本发明实施例中的计算核心组成连接原理框图;
图5为本发明实施例中的典型CNN网络结构示意图。
具体实施方式
下面结合附图来具体描述本发明的优选实施例,其中,附图构成本申请一部分,并与本发明的实施例一起用于阐释本发明的原理。
本发明的一个实施例公开了一种面向卷积神经网络的高可靠加速器,如图1所示,包括指令分发模块和与其连接、受其控制的加载模块、路由模块、计算模块、冗余控制模块、和卸载模块;在指令分发控制模块的控制下,
所述加载模块从外部加载输入特征数据和卷积核数据;路由模块将加载的数据分配给计算模块;所述卷积核数据包括卷积的权重和偏置数据;
所述计算模块中包括多个并列的计算核心,每个计算核心均用于接收分配数据进行卷积神经网络加速处理,输出处理结果;
冗余控制模块将所述计算模块输出的多路计算结果输出到所述卸载模块,通过卸载模块将卷积神经网络加速处理结果卸载输出。
其中,所述加载模块通过AXI接口从外部DDR加载数据;指令分发控制模块通过AXI-Lite接口从主控(或外部存储)获取指令字,实现了数据和指令的分离;指令分发控制模块根据指令标志字分发给各被控模块,以配置整个***的控制模式。此外,该模块负责接收主控的启动信号,向主控发出中断信号、结束信号等。
具体的,指令分发控制模块包括以高可靠性为要求的控制模式一和以高性能为要求的控制模式二和控制模式三;并通过控制指令以锁步方式实现控制模式的相互切换;其中,
在控制模式一下,路由模块对加载的多路卷积核数据进行冗余处理后共享给多个计算核心,将输入特征数据直接共享给多个计算核心;冗余控制模块对多个计算核心的计算结果进行冗余处理后输出到特征卸载模块;通过多个计算核心的计算结果的冗余处理,提高计算的可靠性。
在控制模式二下,路由模块将加载器加载的不同位置的输入特征数据和相同卷积核数据共享给多个计算核心,冗余控制模块对多个计算核心的技术结果直接输出到特征卸载模块;控制模式二适用于当前卷积层的输入通道数较小而特征图面积较大的情况,可提高卷积的效率;
在控制模式三下,路由模块将加载器加载的一个位置的输入特征数据和多个卷积核数据共享给多个计算核心;冗余控制模块对多个计算核心的技术结果直接输出到特征卸载模块;控制模式三适用于当前卷积层的输入通道数较大而特征图面积较小的情况,可提高卷积的效率。
优选的,所述加载模块包括一个特征加载器、一个权重加载器和两个数据加载器;所述计算模块中包括三个并列的计算核心;所述卸载模块包括三个并列的卸载器;
在控制模式一下,特征加载器用于加载输入特征数据;权重加载器和两个数据加载器用于加载相同的卷积核数据;
在控制模式二下,特征加载器和两个数据加载器用于分别加载不同位置的输入特征数据;权重加载器用于加载卷积核数据;
在控制模式三下,特征加载器用于加载输入特征数据;权重加载器和两个数据加载器用于加载不同的卷积核数据。
加载器和卸载器的功能类似于专用的DMA(Direct Memory Access),即从源位置将一定量的数据自动搬运到目标位置。可根据实际需求配置成要求传输的数据类型。
加载器运行前,从指令分发模块中获取2类配置信息:1.目标数据在外部DDR中的地址;2.数据的传输量。运行中,加载器会通过AXI接口从外部DDR加载数据至其下级FIFO-A,当FIFO-A为满状态时,加载器暂时进入阻塞状态;卸载器会将其上级FIFO-A中的数据写入外部DDR中,当FIFO-A为空时,卸载器暂时进入阻塞状态。
具体的,如图2所示,所述路由模块包括数据复制器U0~U3,数据寄存器R0~R12,数据选择器S0~S4,以及一个三取二数据冗余器;
其中,复制器U0输入端连接特征加载器输出端,用于对输入特征数据F进行复制,复制器U1和U2输入端分别连接一个数据加载器输出端,用于对输入特征数据F/卷积核数据W进行复制,复制器U3输入端连接权重加载器输出端用于对卷积核数据W进行复制;
复制器U0输出端分别连接数据寄存器R0、R1和R6输入端;复制器U1输出端分别连接数据寄存器R2、R3输入端和三取二数据冗余器第一输入端;复制器U2输出端分别连接数据寄存器R7、R8输入端和三取二数据冗余器第二输入端;复制器U3输出端分别连接数据寄存器R5、R10和R12输入端;三取二数据冗余器的输出端分别连接数据寄存器R4、R11;
寄存器R1、R2输出端分别连接数据选择器S0的第一输入端、第二输入端;
寄存器R3、R4、R5输出端分别连接数据选择器S1的第一输入端、第二输入端和第三输入端;
寄存器R6、R7输出端分别连接数据选择器S2的第一输入端、第二输入端;
寄存器R8、R9、R10输出端分别连接数据选择器S3的第一输入端、第二输入端和第三输入端;
寄存器R11、R12输出端分别连接数据选择器S4的第一输入端、第二输入端;
寄存器R0的输出端和数据选择器S0~S4作为路由模块的输出端;其中,寄存器R0和数据选择器S1的输出端输出的特征数据F0和卷积核数据W0输出到第一计算核心的输入端;寄存器S0和数据选择器S3的输出端输出的特征数据F1和卷积核数据W1输出到第二计算核心的输入端;寄存器S2和数据选择器S4的输出端输出的特征数据F2和卷积核数据W2输出到第三计算核心的输入端。
具体的,在控制模式一下,控制数据选择器S0、S2、S4选择第一输入端的数据进行输出,控制数据选择器S1、S3选择第二输入端的数据进行输出;
在控制模式二下,控制数据选择器S0、S2、S4选择第二输入端的数据进行输出,控制数据选择器S1、S3选择第三输入端的数据进行输出;
在控制模式三下,控制数据选择器S0~S3选择第一输入端的数据进行输出,数据选择S4选择第二输入端的数据输出。
具体的,如图3所示,所述冗余控制模块包括数据复制器U4~U6,数据选择器S6,以及一个三取二数据冗余器;
数据复制器U4~U6的输入端分别连接三个计算核心的输出端接收数据F0、F1、F2;
数据复制器U4的输出端分别连接数据选择器S6的第一输入端和三取二数据冗余器的第一输入端;数据复制器U5的输出端连接三取二数据冗余器的第二输入端;数据复制器U6的输出端连接三取二数据冗余器的第三输入端;所述三取二数据冗余器的输出端连接数据选择器S6的第二输入端;
所述数据选择器S6的输出端、数据复制器U5、U6的输出端作为冗余模块的输出端。
在控制模式一下,三个计算核心的数据经过三取二数据冗余器冗余处理后输出一路计算结果数据;
在控制模式二下,三个计算核心的数据直接输出,由对应的数据卸载器分别完成数据卸载。
具体的,所述三取二数据冗余器的工作方式为:当输入的三个数据均相等时,则将任一数据输出;当输入数据中有两个相等,一个异常时,则将相等数据是可靠的,并将之输出;当输入的三个数据各不相等时,则向指令分发控制模块产生数据异常中断,从中断位置重启计算。
具体的,如图4所示,计算模块的每个计算核心均包括两个输入端和一个输出端,包括预处理模块、卷积模块、池化模块、第一FIFO-B、第二FIFO-B、第三FIFO-B、第四FIFO-B、FIFO-A、第一旁路、第二旁路和第三旁路;
所述第一FIFO-B与第二FIFO-B的输入端作为计算核心的输入端与对应的冗余模块的输出端连接;第一FIFO-B的输出端分别连接预处理模块和第一旁路的输入端;第二FIFO-B的输处端与卷积模块的第一输入端连接;
预处理模块和第一旁路的输出端同时与第三FIFO-B的输入端连接;第三FIFO-B的输出端与卷积模块的第二输入端连接;第二旁路连接在卷积模块的第二输入端和输出端之间;
卷积模块的输出端与第四FIFO-B的输入端连接,第四FIFO-B的输出端连接池化模块和第三旁路的输入端;
池化模块和第叁旁路的输出端同时与FIFO-A的输入端连接;FIFO-A的输出端作为计算核心的输出端与冗余模块的输入端连接;
所述预处理模块,用于在指令分发控制模块的控制下加载输入特征执行卷积神经网络的预处理;
所述卷积模块,用于在指令分发控制模块的控制下加载卷积核数据以及输入特征执行卷积层、全连接层或非线性激活层的计算;
所述池化模块,用于指令分发控制模块的控制下加载卷积模块的计算结果执行池化层的计算输出;
所述第一旁路、第二旁路和第三旁路在在指令分发控制模块的控制下进行接通或断开。
具体的,在指令分发控制模块的控制下计算核心的预处理模块、卷积模块和池化模块进行动态的流式结构连接;实现按照卷积神经网络的结构,对输入数据的卷积神经网络加速处理;
流式结构连接中,包括;
1)将预处理模块与卷积模块连接,通过第三旁路将池化模块旁路的结构;并将预处理模块配置为预处理层,卷积模块配置为卷积层或卷积层+非线性激活层;
2)将卷积模块与池化模块连接,通过第一旁路将预处理模块旁路的结构;并将卷积模块配置为卷积层或卷积层+非线性激活层,将池化模块配置为池化层;
3)保留卷积模块,通过第一旁路和第三旁路将预处理模块与池化模块旁路的结构,将卷积模块配置为卷积层、全连接层、卷积层+非线性激活层或全连接层+非线性激活层。
由于,CNN网络模型中,卷积层和全连接层的计算方式基本一致,均可抽象为矩阵向量乘运算,可复用FPGA中同一套硬件电路实现;非线性激活层一般紧跟在卷积层或全连接层之后,且计算过程简单,可将其与卷积层或全连接层融合在一起。因此在本实施例的卷积模块中布置可实现卷积层、全连接层、卷积层+非线性激活层或全连接层+非线性激活层的硬件电路,在所述指令分发模块的控制模式配置和控制下,选择现实卷积层、全连接层、卷积层+非线性激活层或全连接层+非线性激活层的功能。
由于,池化层的计算模式种类较多,如最大池化、平均池化,且不同层的池化窗口大小和池化步长也不尽相同,因此不宜与卷积模块融合,否则影响加速器的可扩展性。因此,在本实施例的加速器中单独设置池化模块实现池化层功能;
由于,CNN网络通常输入图像的尺寸较大(常见的尺寸有224×224、416×416、1024×1024等),因此预处理功能的计算量较大,在CPU中的计算耗时较长,宜在FPGA中进行硬件加速,但预处理功能因算法和应用场景各异,为提高***的可扩展性,在本实施例的加速器中单独设置预处理模块。
而,CNN网络的后处理功能的计算量较小且存在大量的浮点运算,因此不宜在FPGA硬件中实现;本实施例通过对应接口将本加速器的最终输出数据输出到DSP或其他适用于浮点运算的模块中进行对应的处理。
在实施例中的计算核心中,用FIFO等结构将数据传输模块与***内的其它模块隔离,可实现数据传输模块的异时钟域工作,从而提高数据带宽与计算速率的匹配程度;可在数据传输模块中添加数据缓冲区,为计算模块提供高于物理带宽上限的瞬时带宽。
其中,所述FIFO-A和FIFO-B均为流式结构FIFO。模块之间通过流式结构FIFO联接;由指令分发模块配置完各被控模块的控制模式后,各模块的运行或阻塞状态由数据驱动;当对应模块的上级FIFO不为空、下级FIFO不为满时,所述模块进入运行状态;否则,便进入阻塞状态。
通过在各模块之间布置FIFO,加速器内部各模块之间的数据接口均为FIFO接口,控制接口为握手协议接口。***与外部的接口依硬件平台的片内总线协议而定,常见的数据传输接口有AXI接口,指令传输接口有AXI-Lite接口。总之,***内各模块的接口简洁而统一,为增添、删减模块,或调整模块之间的顺序提供了便利,从而可进一步提高***的可扩展性。并且,通过配置和控制,使各计算模块按要求排列在数据流的上下游,并且模块之间还可以“流水化作业”的方式并行工作,从而使***具有更高的整体性能。
本实施例还公开了一个具体的方案来实现,如图5所示的VGG-16的网络结构,并在指令分发模块的配置和控制下,执行VGG-16的网络结构进行卷积神经网络计算。设定本实施例输入图像为RGB格式,尺寸大小为224×224,卷积层的步长均为1,池化层的步长和窗口尺寸均为2。本实施例中的CNN加速器共有3个计算核心(s=3),计算核心的输入通道并行度m=32,输出通道并行度n=32。
如果当前算法为非关键算法,则采用CNN加速器的高性能模式进行计算,具体实施步骤为:
计算预处理层和第一卷积层时,输出通道数均小于n,特征图尺寸很大(224×224)。因此,采用以高性能为要求的控制模式二,路由模块将加载器加载的不同位置的输入特征数据和相同卷积核数据共享给三个计算核心,冗余控制模块对多个计算核心的技术结果直接输出到特征卸载模块;
在每个计算核心中,采用流式结构连接中,将预处理模块与卷积模块连接,通过第三旁路将池化模块旁路的结构;并将预处理模块配置为预处理层,卷积模块配置为卷积层或卷积层+非线性激活层;同时处理预处理层和第一卷积层。
同样地,采用以高性能为要求的控制模式二,计算第二卷积层和第一池化层;在每个计算核心中,采用流式结构连接中,将卷积模块与池化模块连接,通过第一旁路将预处理模块旁路的结构;并将卷积模块配置为卷积层或卷积层+非线性激活层,将池化模块配置为池化层;同时处理第二卷积层和第一池化层。
计算第三卷积层时,输出通道数大于3n。因此,采用控制模式三,路由模块将加载器加载的一个位置的输入特征数据和多个卷积核数据共享给多个计算核心;冗余控制模块对多个计算核心的技术结果直接输出到特征卸载模块;
计算之后各层时,均采用控制模式三,路由模块将加载器加载的一个位置的输入特征数据和多个卷积核数据共享给多个计算核心;冗余控制模块对多个计算核心的技术结果直接输出到特征卸载模块;其中,当计算到全连接层时,将卷积模块配置为全连接层或全连接层+非线性激活层进行计算;流式结构连接为方式2)和3)交替的方式。直到完成卷积神经网络的处理。
以高性能为要求的控制模式二和三的工作过程中,如果判断当前算法为关键算法可靠性要求高,则控制切换为以高可靠性为要求的控制模式一进行计算,具体实施步骤为:
在控制模式一下,两个数据加载器和一个权重加载器从DDR中加载相同的权重数据到路由模块。通过路由模块和冗余模块的控制实现冗余处理,提高处理的可靠性,各计算核心的处理过程与上述以高性能为要求的控制模式二和控制模式三的计算方式相同。
综上所述,本发明实施例实现了卷积神经网络的加速处理,并兼顾卷积神经网络的高速处理和高可靠性处理的要求,利用多核冗余的方式提高CNN加速器的可靠性,同时通过路由模块和冗余控制模块实现高可靠模式和高性能模式在运行时的动态切换,使得CNN加速器能够满足航天型号中高性能计算任务和高可靠计算任务的多方面需求。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
Claims (10)
1.一种面向卷积神经网络的高可靠加速器,其特征在于,包括指令分发模块和与其连接、受其控制的加载模块、路由模块、计算模块、冗余控制模块、和卸载模块;在指令分发控制模块的控制下,
所述加载模块从外部加载输入特征数据和卷积核数据;路由模块将加载的数据分配给计算模块;
所述计算模块中包括多个并列的计算核心,每个计算核心均用于接收分配数据进行卷积神经网络加速处理,输出处理结果;
冗余控制模块将所述计算模块输出的多路计算结果输出到所述卸载模块,通过卸载模块将卷积神经网络加速处理结果卸载输出。
2.根据权利要求1所述的面向卷积神经网络的高可靠加速器,其特征在于,指令分发控制模块包括以高可靠性为要求的控制模式一和以高性能为要求的控制模式二和控制模式三;并通过控制指令以锁步方式实现控制模式的相互切换;其中,
在控制模式一下,路由模块将加载模块加载的多路卷积核数据进行冗余处理后共享给多个计算核心,将输入特征数据直接共享给多个计算核心;冗余控制模块对多个计算核心的计算结果进行冗余处理后输出到特征卸载模块;
在控制模式二下,路由模块将加载模块加载的不同位置的输入特征数据和相同卷积核数据共享给多个计算核心,冗余控制模块对多个计算核心的技术结果直接输出到特征卸载模块;
在控制模式三下,路由模块将加载模块加载的一个位置的输入特征数据和多个卷积核数据共享给多个计算核心;冗余控制模块对多个计算核心的技术结果直接输出到特征卸载模块。
3.根据权利要求2所述的面向卷积神经网络的高可靠加速器,其特征在于,所述加载模块包括一个特征加载器、一个权重加载器和两个数据加载器;所述计算模块中包括三个并列的计算核心;
在控制模式一下,特征加载器用于加载输入特征数据;权重加载器和两个数据加载器用于加载相同的卷积核数据;
在控制模式二下,特征加载器和两个数据加载器用于分别加载不同位置的输入特征数据;权重加载器用于加载卷积核数据;
在控制模式三下,特征加载器用于加载输入特征数据;权重加载器和两个数据加载器用于加载不同的卷积核数据。
4.根据权利要求3所述的面向卷积神经网络的高可靠加速器,其特征在于,所述路由模块包括数据复制器U0~U3,数据寄存器R0~R12,数据选择器S0~S4,以及一个三取二数据冗余器;
其中,复制器U0输入端连接特征加载器输出端,复制器U1和U2输入端分别连接一个数据加载器输出端,复制器U3输入端连接权重加载器输出端;
复制器U0输出端分别连接数据寄存器R0、R1和R6输入端;复制器U1输出端分别连接数据寄存器R2、R3输入端和三取二数据冗余器第一输入端;复制器U2输出端分别连接数据寄存器R7、R8输入端和三取二数据冗余器第二输入端;复制器U3输出端分别连接数据寄存器R5、R10和R12输入端;三取二数据冗余器的输出端分别连接数据寄存器R4、R11;
寄存器R1、R2输出端分别连接数据选择器S0的第一输入端、第二输入端;
寄存器R3、R4、R5输出端分别连接数据选择器S1的第一输入端、第二输入端和第三输入端;
寄存器R6、R7输出端分别连接数据选择器S2的第一输入端、第二输入端;
寄存器R8、R9、R10输出端分别连接数据选择器S3的第一输入端、第二输入端和第三输入端;
寄存器R11、R12输出端分别连接数据选择器S4的第一输入端、第二输入端;
寄存器R0的输出端和数据选择器S0~S4作为路由模块的输出端。
5.根据权利要求4所述的面向卷积神经网络的高可靠加速器,其特征在于,在控制模式一下,控制数据选择器S0、S2、S4选择第一输入端的数据进行输出,控制数据选择器S1、S3选择第二输入端的数据进行输出;
在控制模式二下,控制数据选择器S0、S2、S4选择第二输入端的数据进行输出,控制数据选择器S1、S3选择第三输入端的数据进行输出;
在控制模式三下,控制数据选择器S0~S3选择第一输入端的数据进行输出,数据选择S4选择第二输入端的数据输出。
6.根据权利要求3所述的面向卷积神经网络的高可靠加速器,其特征在于,所述冗余控制模块包括数据复制器U4~U6,数据选择器S6,以及一个三取二数据冗余器;
数据复制器U4~U6的输入端分别连接三个计算核心的输出端;
数据复制器U4的输出端分别连接数据选择器S6的第一输入端和三取二数据冗余器的第一输入端;数据复制器U5的输出端连接三取二数据冗余器的第二输入端;数据复制器U6的输出端连接三取二数据冗余器的第三输入端;所述三取二数据冗余器的输出端连接数据选择器S6的第二输入端;
所述数据选择器S6的输出端、数据复制器U5、U6的输出端作为冗余模块的输出端。
7.根据权利要求6所述的面向卷积神经网络的高可靠加速器,其特征在于,
在控制模式一下,三个计算核心的数据经过三取二数据冗余器冗余处理后输出一路计算结果数据;
在控制模式二和控制模式二下,三个计算核心的数据直接输出。
8.根据权利要求4-6任一项所述的面向卷积神经网络的高可靠加速器,其特征在于,
所述三取二数据冗余器的工作方式为:当输入的三个数据均相等时,则将任一数据输出;当输入数据中有两个相等,一个异常时,则将相等数据是可靠的,并将之输出;当输入的三个数据各不相等时,则向指令分发控制模块产生数据异常中断,从中断位置重启计算。
9.根据权利要求1所述的面向卷积神经网络的高可靠加速器,其特征在于,所述计算核心包括预处理模块、卷积模块、池化模块、第一FIFO-B、第二FIFO-B、第三FIFO-B、第四FIFO-B、FIFO-A、第一旁路、第二旁路和第三旁路;
所述第一FIFO-B与第二FIFO-B的输入端作为计算核心的输入端与对应的冗余模块的输出端连接;第一FIFO-B的输出端分别连接预处理模块和第一旁路的输入端;第二FIFO-B的输处端与卷积模块的第一输入端连接;
预处理模块和第一旁路的输出端同时与第三FIFO-B的输入端连接;第三FIFO-B的输出端与卷积模块的第二输入端连接;第二旁路连接在卷积模块的第二输入端和输出端之间;
卷积模块的输出端与第四FIFO-B的输入端连接,第四FIFO-B的输出端连接池化模块和第三旁路的输入端;
池化模块和第叁旁路的输出端同时与FIFO-A的输入端连接;FIFO-A的输出端作为计算核心的输出端与冗余模块的输入端连接;
所述预处理模块,用于在指令分发控制模块的控制下加载输入特征执行卷积神经网络的预处理;
所述卷积模块,用于在指令分发控制模块的控制下加载卷积核数据以及输入特征执行卷积层、全连接层或非线性激活层的计算;
所述池化模块,用于指令分发控制模块的控制下加载卷积模块的计算结果执行池化层的计算输出;
所述第一旁路、第二旁路和第三旁路在在指令分发控制模块的控制下进行接通或断开。
10.根据权利要求9所述的面向卷积神经网络的高可靠加速器,其特征在于,在指令分发控制模块的控制下计算核心的预处理模块、卷积模块和池化模块进行动态的流式结构连接;实现按照卷积神经网络的结构,对输入数据的卷积神经网络加速处理;
流式结构连接中,包括;
1)将预处理模块与卷积模块连接,通过第三旁路将池化模块旁路的结构;并将预处理模块配置为预处理层,卷积模块配置为卷积层或卷积层+非线性激活层;
2)将卷积模块与池化模块连接,通过第一旁路将预处理模块旁路的结构;并将卷积模块配置为卷积层或卷积层+非线性激活层,将池化模块配置为池化层;
3)保留卷积模块,通过第一旁路和第三旁路将预处理模块与池化模块旁路的结构,将卷积模块配置为卷积层、全连接层、卷积层+非线性激活层或全连接层+非线性激活层。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111632984.1A CN114327676B (zh) | 2021-12-28 | 2021-12-28 | 一种面向卷积神经网络的高可靠加速器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111632984.1A CN114327676B (zh) | 2021-12-28 | 2021-12-28 | 一种面向卷积神经网络的高可靠加速器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114327676A true CN114327676A (zh) | 2022-04-12 |
CN114327676B CN114327676B (zh) | 2024-07-19 |
Family
ID=81015754
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111632984.1A Active CN114327676B (zh) | 2021-12-28 | 2021-12-28 | 一种面向卷积神经网络的高可靠加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114327676B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009042898A (ja) * | 2007-08-07 | 2009-02-26 | Seiko Epson Corp | 並列演算装置および並列演算方法 |
CN110516801A (zh) * | 2019-08-05 | 2019-11-29 | 西安交通大学 | 一种高吞吐率的动态可重构卷积神经网络加速器架构 |
CN111178519A (zh) * | 2019-12-27 | 2020-05-19 | 华中科技大学 | 卷积神经网络加速引擎、卷积神经网络加速***及方法 |
CN112149814A (zh) * | 2020-09-23 | 2020-12-29 | 哈尔滨理工大学 | 一种基于fpga的卷积神经网络加速*** |
CN113033765A (zh) * | 2019-12-24 | 2021-06-25 | 英特尔公司 | 用于实现卷积神经网络的可配置处理器元件阵列 |
CN113269299A (zh) * | 2020-02-14 | 2021-08-17 | 辉达公司 | 使用深度学习的机器人控制 |
CN113361695A (zh) * | 2021-06-30 | 2021-09-07 | 南方电网数字电网研究院有限公司 | 卷积神经网络加速器 |
-
2021
- 2021-12-28 CN CN202111632984.1A patent/CN114327676B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009042898A (ja) * | 2007-08-07 | 2009-02-26 | Seiko Epson Corp | 並列演算装置および並列演算方法 |
CN110516801A (zh) * | 2019-08-05 | 2019-11-29 | 西安交通大学 | 一种高吞吐率的动态可重构卷积神经网络加速器架构 |
CN113033765A (zh) * | 2019-12-24 | 2021-06-25 | 英特尔公司 | 用于实现卷积神经网络的可配置处理器元件阵列 |
CN111178519A (zh) * | 2019-12-27 | 2020-05-19 | 华中科技大学 | 卷积神经网络加速引擎、卷积神经网络加速***及方法 |
CN113269299A (zh) * | 2020-02-14 | 2021-08-17 | 辉达公司 | 使用深度学习的机器人控制 |
CN112149814A (zh) * | 2020-09-23 | 2020-12-29 | 哈尔滨理工大学 | 一种基于fpga的卷积神经网络加速*** |
CN113361695A (zh) * | 2021-06-30 | 2021-09-07 | 南方电网数字电网研究院有限公司 | 卷积神经网络加速器 |
Also Published As
Publication number | Publication date |
---|---|
CN114327676B (zh) | 2024-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110610236B (zh) | 一种用于执行神经网络运算的装置及方法 | |
US11995027B2 (en) | Neural processing accelerator | |
CN109102065B (zh) | 一种基于PSoC的卷积神经网络加速器 | |
EP1864296A2 (en) | Programmable pipeline array | |
JPH07219919A (ja) | 数値演算処理装置 | |
US20230128529A1 (en) | Acceleration system, method and storage medium based on convolutional neural network | |
US20210326078A1 (en) | Machine perception and dense algorithm integrated circuit | |
CN110059797B (zh) | 一种计算装置及相关产品 | |
US20210166156A1 (en) | Data processing system and data processing method | |
US10476492B2 (en) | Structures and operations of integrated circuits having network of configurable switches | |
CN107678781B (zh) | 处理器以及用于在处理器上执行指令的方法 | |
CN114327676B (zh) | 一种面向卷积神经网络的高可靠加速器 | |
US20070198811A1 (en) | Data-driven information processor performing operations between data sets included in data packet | |
CN112862079B (zh) | 一种流水式卷积计算架构设计方法及残差网络加速*** | |
CN116088940A (zh) | 硬件加速***、控制方法、芯片及电子设备 | |
GB2608791A (en) | Neural network comprising matrix multiplication | |
CN112346704A (zh) | 一种用于卷积神经网络的全流水线型乘加单元阵列电路 | |
WO2011144965A1 (en) | Integrated circuit device, signal processing system and method for managing power resources of a signal processing system | |
Suvorova | An approach for development of RISC-V based transport layer controller | |
CN111309265A (zh) | 基于神经网络的节点存储方法、***、服务器及存储介质 | |
CN114358266A (zh) | 一种数据流驱动的卷积神经网络加速器 | |
EP4254790A1 (en) | Filter unit and filter array | |
CN114330658A (zh) | 一种动态可重构的卷积神经网络多核加速器 | |
CN115421788B (zh) | 寄存器堆***、方法及使用该寄存器堆的汽车控制处理器 | |
CN117319373A (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 |