CN114519425A - 一种规模可扩展的卷积神经网络加速系统 - Google Patents
一种规模可扩展的卷积神经网络加速系统 Download PDFInfo
- Publication number
- CN114519425A CN114519425A CN202210159557.4A CN202210159557A CN114519425A CN 114519425 A CN114519425 A CN 114519425A CN 202210159557 A CN202210159557 A CN 202210159557A CN 114519425 A CN114519425 A CN 114519425A
- Authority
- CN
- China
- Prior art keywords
- data
- unit
- input
- module
- weight
- 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.)
- Withdrawn
Links
- 230000001133 acceleration Effects 0.000 title claims abstract description 39
- 238000013528 artificial neural network Methods 0.000 title abstract description 10
- 238000013527 convolutional neural network Methods 0.000 claims abstract description 35
- 238000004364 calculation method Methods 0.000 claims abstract description 34
- 238000000034 method Methods 0.000 claims abstract description 14
- 230000008569 process Effects 0.000 claims abstract description 7
- 239000000872 buffer Substances 0.000 claims description 78
- 230000006870 function Effects 0.000 claims description 14
- 238000012805 post-processing Methods 0.000 claims description 10
- 238000009825 accumulation Methods 0.000 claims description 9
- 230000004913 activation Effects 0.000 claims description 9
- 238000011176 pooling Methods 0.000 claims description 9
- 238000005070 sampling Methods 0.000 claims description 7
- 230000005540 biological transmission Effects 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 3
- 230000001360 synchronised effect Effects 0.000 claims 1
- 238000013461 design Methods 0.000 abstract description 7
- 230000007547 defect Effects 0.000 abstract description 4
- 239000010410 layer Substances 0.000 description 7
- 210000002569 neuron Anatomy 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000013135 deep learning Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003058 natural language processing Methods 0.000 description 2
- 230000016776 visual perception Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000004438 eyesight Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000011229 interlayer Substances 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000012549 training 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/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种规模可扩展的卷积神经网络加速系统,包括XDMA模块、存储器接口模块、同步模块、控制模块、外部存储器以及至少一个加速核;发明卷积神经网络最主要的运算为乘加计算,这些计算采用专用电路来实现,无论在性能和功耗上相比处理器皆有较大的提升;本发明提出了多通道并行运算的架构,克服了脉动阵列架构闲置率高、可扩展性差的缺点;将输入数据、权值参数分别存储于输入缓存单元、权值缓存单元中,以便于运算过程中高效地存取数据;按照既定规则切换权值参数缓存和输入缓存单元缓存的地址,依次将输入缓存单元和权值参数输入运算单元进行卷积运算,统一了不同尺寸、不同步长的卷积运算流程,简化了硬件设计结构。
Description
技术领域
本发明涉及卷积神经网络加速领域,具体涉及一种规模可扩展的卷积神经网络加速系统。
背景技术
卷积神经网络(Convolutional Neural Networks,CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(deeplearning)的代表算法之一。卷积神经网络具有表征学习(representation learning)能力,能够按其阶层结构对输入信息进行平移不变分类(shift-invariantclassification),因此也被称为“平移不变人工神经网络(Shift-Invariant ArtificialNeural Networks,SIANN)。
对卷积神经网络的研究始于二十世纪80至90年代,时间延迟网络和LeNet-5是最早出现的卷积神经网络;在二十一世纪后,随着深度学习理论的提出和数值计算设备的改进,卷积神经网络得到了快速发展,并被应用于计算机视觉、自然语言处理等领域。
卷积神经网络仿造生物的视知觉(visual perception)机制构建,可以进行监督学习和非监督学习,其隐含层内的卷积核参数共享和层间连接的稀疏性使得卷积神经网络能够以较小的计算量对格点化(grid-like topology)特征,例如像素和音频进行学习、有稳定的效果且对数据没有额外的特征工程(feature engineering)要求。
近年来,卷积神经网络因其优越的性能而广泛部署在物联网智能终端,自动驾驶以及数据中心。依靠大量的训练数据,网络算法可应用于图像分类与检测、人机博弈以及自然语言处理等诸多领域。
但是随着卷积神经网络结构变得复杂而且深度不断增加,网络计算量也随之而增大,导致通用硬件平台计算效率较低或者功耗较大等问题,人们开始设计专用硬件来加速卷积神经网络的计算。各种规模和结构的卷积加速器的设计层出不穷,其中软硬件协作的方式加快了设计效率并使系统更加通用且可灵活配置。
作为前馈网络,卷积神经网络为分层结构,最主要的则是卷积层的计算。卷积操作用来提取图像特征,由于卷积核共享权重,每一层的神经元只与上一层部分神经元相连接。
其中卷积操作最主要的算子为乘加计算,可设计专用的乘加模块来并行实现。同时,还可以通过数据复用和分块技术来提高卷积加速器的性能。
卷积神经网络采用了局部感受域和共享参数两个重要概念,计算量和参数量大大低于全连接结构的网络。其中,当前层的神经元并非和前一层所有的神经元连接,而只与局部感受域中的神经元连接。这种局部感受域称之为卷积核,卷积核作为一个滑动窗口在整个输入图像中以一定步长由上至下、从左到右移动扫描,并将相应的数据加权求和,从而得到当前层所有神经元的结果。
目前,卷积神经网络加速器通常采用脉动阵列结构。该结构由功能相同的运算单元(PE)组成矩阵形式,每个运算单元的功能为进行乘加运算,并设计相应的缓存和控制逻辑。
脉动阵列结构具有设计简单而规则、容易实现高并行性,且运算单元间通信比较简单的优势,但这种结构也存在明显的缺点,运算单元易出现闲置率较高的情况,进而导致降低加速器的效率;以及的可扩展性差的问题。
发明内容
为解决上述技术问题,本发明提供一种规模可扩展的卷积神经网络加速系统,包括XDMA模块、存储器接口模块、同步模块、控制模块、外部存储器以及至少一个加速核;
XDMA模块用于上位机与FPGA的数据传输;
存储器接口模块用于实现控制外部存储器读写逻辑功能;
同步模块用于解决XDMA模块与加速核和存储器接口模块之间的跨时钟域数据传输问题;
控制模块用于控制各个功能模块的运行;
片外主存储器用于存储加速核运算所需的数据以及其运算过程完毕之后所产生的数据。
加速核包括运算单元、输入缓存单元、权值缓存单元、输出缓存单元和后处理单元。
优选的:运算单元采用多级流水的运算模式,运算单元用于接收输入缓存单元和权值缓存单元的数据进行卷积运算。
优选的:运算单元设置有多组,各运算单元并行。
优选的:运算单元包括n个乘法器、一组累加器和两组片上缓存,一组片上缓存用于接收缓存输入缓存单元和权值缓存单元输入的数据,乘法器用于将输入特征和权值参数相乘,累加器用于将前一级乘法器相乘的结果累加,另一组片上缓存用于缓存运算单元的计算结果。
优选的:输入缓存单元和权值缓存单元均按照从左到右,从上到下的顺序存储输入数据,输入通道为n,输入缓存单元的每个地址空间存储输入特征一个位置的n通道数据
优选的:后处理单元包括累加模块、激活函数、池化模块和上采样模块,后处理单元接收运算单元的运算结果,并选择进行累加、激活函数、池化或上采样操作。
优选的:控制模块的控制信息由处理器通过AXI总线给出,所述处理器为ARM处理器。
优选的:处理器与各模块之间采用AXI总线连接,所述加速核集成于SOC中,卷积计算之外的其他计算,在不影响卷积加速的情况下用处理器来执行。
优选的:规模的扩展方法为:扩展运算单元,并根据实际情况,有选择的扩展输入缓存单元、权值缓存单元及片上缓存。
一种规模可扩展的卷积神经网络加速方法,
S1:XDMA模块从PCIe接口接收来自上位机的原始数据(包括图像数据和权值参数数据)并经同步模块将其存储到外部存储器的相应地址空间中;
S2:准备好运算所需的原始数据后,控制模块启动加速核进行运算,控制模块控制输入缓存单元和权值缓存单元从外部存储器中读取并存储第一组数据。
S3:乘法器将从输入缓存单元和权值缓存单元中读取一组数据进行相乘运算,并将计算出的结果存储在片上缓存中,在进行计算的同时,输入缓存单元和权值缓存单元从外部存储器中读取并存储第二组数据,接下来,乘法器进行第二组数据的运算,输入缓存单元和权值缓存单元从外部存储器中读取并存储第三组运算所需的数据,依次类推,接下来累加器用于将各组相乘结果依次累加并暂存在片上缓存中;
S4:后处理单元接收运算单元的运算结果,由控制模块选择进行累加、激活函数、池化或者上采样操作;
S5:最后将计算完成的输出特征存储到输出缓存单元中,由控制模块控制将计算出的输出特征经同步模块存储到外部存储器中。
S6:XDMA模块经同步模块从外部存储器取出计算出的输出数据,经PCIe送给上位机进行处理。
本发明的技术效果和优点:本发明卷积神经网络最主要的运算为卷积,而卷积操作的本质为乘加计算,这些计算采用专用电路来实现,无论在性能和功耗上相比处理器皆有较大的提升;
提出了多通道并行运算的架构,克服了脉动阵列架构闲置率高、可扩展性差的缺点;将输入数据、权值参数分别存储于输入缓存单元、权值缓存单元中,以便于运算过程中高效地存取数据;按照既定规则切换权值参数缓存和输入缓存单元缓存的地址,依次将输入缓存单元和权值参数输入运算单元进行卷积运算,统一了不同尺寸、不同步长的卷积运算流程,简化了硬件设计结构;
本发明提出了可扩展的卷积神经网络加速系统,当扩大卷积计算单元规模时,片上缓存不会等倍的扩大,而且控制模块无需修改,一定程度上有很大的资源复用,而且这种软硬件协作的方式可以更好的支持各种网络算法,同时可以比较方便的移植到不同资源FPGA器件或者ASIC芯片平台,具有很好的灵活性。
附图说明
图1为本发明提出的一种规模可扩展的卷积神经网络加速系统的组成示意图。
图2为本发明提出的一种规模可扩展的卷积神经网络加速系统中数据流向示意图。
图3为本发明提出的一种规模可扩展的卷积神经网络加速系统中输入缓存单元通道为n的4x4输入特征谱的存储方式的示意图。
图4为本发明提出的一种规模可扩展的卷积神经网络加速系统中权值参数存储单元通道为n的3x3卷积核在权值缓存单元中的存储方式的示意图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步详细的说明。本发明的实施例是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显而易见的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。
实施例1
参考图1,在本实施例中提出了一种规模可扩展的卷积神经网络加速系统,包括XDMA模块、存储器接口模块、同步模块、控制模块、外部存储器以及至少一个加速核;
XDMA模块用于上位机与FPGA的数据传输;
存储器接口模块用于实现控制外部存储器读写逻辑功能;
同步模块用于解决XDMA模块与加速核和存储器接口模块之间的跨时钟域数据传输问题;
控制模块用于控制各个功能模块的运行;
片外主存储器用于存储加速核运算所需的数据以及其运算过程完毕之后所产生的数据。
加速核包括运算单元、输入缓存单元、权值缓存单元、输出缓存单元和后处理单元。
运算单元采用多级流水的运算模式,运算单元用于接收输入缓存单元和权值缓存单元的数据进行卷积运算。
运算单元设置有多组,各运算单元并行。
运算单元包括n个乘法器、一组累加器和两组片上缓存,一组片上缓存用于接收缓存输入缓存单元和权值缓存单元输入的数据,乘法器用于将输入特征和权值参数相乘,累加器用于将前一级乘法器相乘的结果累加,另一组片上缓存用于缓存运算单元的计算结果。
输入缓存单元和权值缓存单元均按照从左到右,从上到下的顺序存储输入数据,输入通道为n,输入缓存单元的每个地址空间存储输入特征一个位置的n通道数据。
后处理单元包括累加模块、激活函数、池化模块和上采样模块,后处理单元接收运算单元的运算结果,并选择进行累加、激活函数、池化或上采样操作。
控制模块的控制信息由处理器通过AXI总线给出,所述处理器为ARM处理器。
处理器与各模块之间采用AXI总线连接,所述加速核集成于SOC中,卷积计算之外的其他计算,在不影响卷积加速的情况下用处理器来执行。
规模的扩展方法为:扩展运算单元,并根据实际情况,有选择的扩展输入缓存单元、权值缓存单元及片上缓存。
输入缓存单元和权值缓存单元均按照从左到右,从上到下的顺序存储输入数据,输入通道为n,输入缓存单元的每个地址空间存储输入特征一个位置的n通道数据。
参考图3,输入缓存单元按照从左到右,从上到下的顺序存储输入数据,输入通道为n,输入缓存单元的每个地址空间存储输入特征一个位置的n通道数据。
地址0,存储p11位置c1,c2,...,cn n个通道的数据(p11_c1,p11_c2,...,p11_cn);
地址1,存储p12位置c1,c2,...,cn n个通道的数据(p12_c1,p12_c2,...,p12_cn);
地址2,存储p13位置c1,c2,...,cn n个通道的数据(p13_c1,p13_c2,...,p13_cn);
地址3,存储p14位置c1,c2,...,cn n个通道的数据(p14_c1,p14_c2,...,p14_cn);
地址4,存储p21位置c1,c2,...,cn n个通道的数据(p21_c1,p21_c2,...,p21_cn);
地址5,存储p22位置c1,c2,...,cn n个通道的数据(p22_c1,p22_c2,...,p22_cn);
地址6,存储p23位置c1,c2,...,cn n个通道的数据(p23_c1,p23_c2,...,p23_cn);
地址7,存储p24位置c1,c2,...,cn n个通道的数据(p24_c1,p24_c2,...,p24_cn);
地址8,存储p31位置c1,c2,...,cn n个通道的数据(p31_c1,p31_c2,...,p31_cn);
地址9,存储p32位置c1,c2,...,cn n个通道的数据(p32_c1,p32_c2,...,p32_cn);
地址10,存储p33位置c1,c2,...,cn n个通道的数据(p33_c1,p33_c2,...,p33_cn);
地址11,存储p34位置c1,c2,...,cn n个通道的数据(p34_c1,p34_c2,...,p34_cn);
地址12,存储p41位置c1,c2,...,cn n个通道的数据(p41_c1,p41_c2,...,p41_cn);
地址13,存储p42位置c1,c2,...,cn n个通道的数据(p42_c1,p42_c2,...,p42_cn);
地址14,存储p43位置c1,c2,...,cn n个通道的数据(p43_c1,p43_c2,...,p43_cn);
地址15,存储p44位置c1,c2,...,cn n个通道的数据(p44_c1,p44_c2,...,p44_cn)。
参考图4,卷积核按从左到右,从上到下的顺序依次存储到权值参数缓存单元中,卷积核尺寸为3x3,输入通道数变为n,卷积核在权值缓存单元中的存储方式为:
地址0,存储k1位置c1,c2,...,cn n个通道的数据(k1_c1,k1_c2,...,k1_cn);
地址1,存储k2位置c1,c2,...,cn n个通道的数据(k2_c1,k2_c2,...,k2_cn);
地址2,存储k3位置c1,c2,...,cn n个通道的数据(k3_c1,k3_c2,...,k3_cn);
地址3,存储k4位置c1,c2,...,cn n个通道的数据(k4_c1,k4_c2,...,k4_cn);
地址4,存储k5位置c1,c2,...,cn n个通道的数据(k5_c1,k5_c2,...,k5_cn);
地址5,存储k6位置c1,c2,...,cn n个通道的数据(k6_c1,k6_c2,...,k6_cn);
地址6,存储k7位置c1,c2,...,cn n个通道的数据(k7_c1,k7_c2,...,k7_cn);
地址7,存储k8位置c1,c2,...,cn n个通道的数据(k8_c1,k8_c2,...,k8_cn);
地址8,存储k9位置c1,c2,...,cn n个通道的数据(k9_c1,k9_c2,...,k9_cn)。
以3x3卷积核的运算过程为例:
卷积核尺寸为3x3,卷积步长为1,输入通道为n。
时段1,将卷积核k1位置上n个通道的数据(即权值缓存单元地址0存储的权值)输入到PE运算单元中,k1位置的权值所滑过的输入缓缓存单元的区域为p11,p12,p21,p22四个位置上n个通道的数据(即输入缓缓存单元地址0,1,4,5中存储的数据),依次将输入缓存单元缓存地址0,1,4,5中的数据输入PE运算单元中,与k1位置上n个通道的数据进行卷积运算,得到时段1的计算结果t1_po(由t1_po11,t1_po12,t1_po21,t1_po22组成)。
时段2,将卷积核k2位置上n个通道的数据(即权值缓存单元地址1中存储的权值)输入到PE运算单元中,k2位置的权值所滑过的输入缓存单元区域为p12,p13,p22,p23四个位置上n个通道的数据(即输入缓存单元缓存地址1,2,5,6中存储的数据),依次将输入缓存单元缓存地址1,2,5,6中的数据输入PE运算单元中,与k2位置上n个通道的数据进行卷积运算,并将计算结果与t1_po对应位置的数据进行累加,得到时段2的计算结果t2_po(由t2_po11,t2_po12,t2_po21,t2_po22组成)。
时段3,将卷积核k3位置上n个通道的数据(即权值缓存单元地址2中存储的权值)输入到PE运算单元中,k3位置的权值所滑过的输入缓存单元区域为p13,p14,p23,p24四个位置上n个通道的数据(即输入缓存单元缓存地址2,3,6,7中存储的数据),依次将输入缓存单元缓存地址2,3,6,7中的数据输入PE运算单元中,与k3位置上n个通道的数据进行卷积运算,并将计算结果与t2_po对应位置的数据进行累加,得到时段3的计算结果t3_po(由t3_po11,t3_po12,t3_po21,t3_po22组成)。
时段4,将卷积核k4位置上n个通道的数据(即权值缓存单元地址3中存储的权值)输入到PE运算单元中,k4位置的权值所滑过的输入缓存单元区域为p21,p22,p31,p32四个位置上n个通道的数据(即输入缓存单元缓存地址4,5,8,9中存储的数据),依次将输入缓存单元缓存地址4,5,8,9中的数据输入PE运算单元中,与k4位置上n个通道的数据进行卷积运算,并将计算结果与t3_po对应位置的数据进行累加,得到时段4计算结果t4_po(由t4_po11,t4_po12,t4_po21,t4_po22组成)。
时段5,将卷积核k5位置上n个通道的数据(即权值缓存单元地址4中存储的权值)输入到PE运算单元中,k5位置的权值所滑过的输入缓存单元区域为p22,p23,p32,p33四个位置上n个通道的数据(即输入缓存单元缓存地址5,6,9,10中存储的数据),依次将输入缓存单元缓存地址5,6,9,10中的数据输入PE运算单元中,与k5位置上n个通道的数据进行卷积运算,并将计算结果与t4_po对应位置的数据进行累加,得到时段5计算结果t5_po(由t5_po11,t5_po12,t5_po21,t5_po22组成)。
时段6,将卷积核k6位置上n个通道的数据(即权值缓存单元地址5中存储的权值)输入到PE运算单元中,k6位置的权值所滑过的输入缓存单元区域为p23,p24,p33,p34四个位置上n个通道的数据(即输入缓存单元缓存地址6,7,10,11中存储的数据),依次将输入缓存单元缓存地址6,7,10,11中的数据输入PE运算单元中,与k6位置上n个通道的数据进行卷积运算,并将计算结果与t5_po对应位置的数据进行累加,得到时段6计算结果t6_po(由t6_po11,t6_po12,t6_po21,t6_po22组成)。
时段7,将卷积核k7位置上n个通道的数据(即权值缓存单元地址6中存储的权值)输入到PE运算单元中,k7位置的权值所滑过的输入缓存单元区域为p31,p32,p41,p42四个位置上n个通道的数据(即输入缓存单元缓存地址8,9,12,13中存储的数据),依次将输入缓存单元缓存地址8,9,12,13中的数据输入PE运算单元中,与k7位置上n个通道的数据进行卷积运算,并将计算结果与t6_po对应位置的数据进行累加,得到时段7计算结果t7_po(由t7_po11,t7_po12,t7_po21,t7_po22组成)。
时段8,将卷积核k8位置上n个通道的数据(即权值缓存单元地址7中存储的权值)输入到PE运算单元中,k8位置的权值所滑过的输入缓存单元区域为p32,p33,p42,p43四个位置上n个通道的数据(即输入缓存单元缓存地址9,10,13,14中存储的数据),依次将输入缓存单元缓存地址9,10,13,14中的数据输入PE运算单元中,与k8位置上n个通道的数据进行卷积运算,并将计算结果与t7_po对应位置的数据进行累加,得到时段8计算结果t8_po(由t8_po11,t8_po12,t8_po21,t8_po22组成)。
时段9,将卷积核k9位置上n个通道的数据(即权值缓存单元地址8中存储的权值)输入到PE运算单元中,k9位置的权值所滑过的输入缓存单元区域为p33,p34,p43,p44四个位置上n个通道的数据(即输入缓存单元缓存地址10,11,14,15中存储的数据),依次将输入缓存单元缓存地址10,11,14,15中的数据输入PE运算单元中,与k9位置上n个通道的数据进行卷积运算,并将计算结果与t8_po对应位置的数据进行累加,得到时段9计算结果t9_po(由t9_po11,t9_po12,t9_po21,t9_po22组成)。
时段9计算出的t9_po(由t9_po11,t9_po12,t9_po21,t9_po22组成)即为该卷积核与输入缓存单元卷积计算的最终结果po(由po11,po12,po21,po22组成)。
实施例2
参考图1和图2,在本实施例中提出了一种规模可扩展的卷积神经网络加速方法,
S1:XDMA模块从PCIe接口接收来自上位机的原始数据(包括图像数据和权值数据)并经同步模块将其存储到外部存储器的相应地址空间中;
S2:准备好运算所需的原始数据后,控制模块启动加速核进行运算,控制模块控制输入缓存单元和权值缓存单元从外部存储器中读取并存储第一组数据。
S3:乘法器将从输入缓存单元和权值缓存单元中读取一组数据进行相乘运算,并将计算出的结果存储在片上缓存中,在进行计算的同时,输入缓存单元和权值缓存单元从外部存储器中读取并存储第二组数据,接下来,乘法器进行第二组数据的运算,输入缓存单元和权值缓存单元从外部存储器中读取并存储第三组运算所需的数据,依次类推,接下来累加器用于将各组相乘结果依次累加并暂存在片上缓存中;
S4:后处理单元接收运算单元的运算结果,由控制模块选择进行累加、激活函数、池化或者上采样操作;
S5:最后将计算完成的输出特征存储到输出缓存单元中,由控制模块控制将计算出的输出特征经同步模块存储到外部存储器中。
S6:XDMA模块经同步模块从外部存储器取出计算出的输出数据,经PCIe送给上位机进行处理。
本发明卷积神经网络最主要的运算为卷积,而卷积操作的本质为乘加计算,这些计算采用专用电路来实现,无论在性能和功耗上相比处理器皆有较大的提升;
提出了多通道并行运算的架构,克服了脉动阵列架构闲置率高、可扩展性差的缺点;将输入数据、权值参数分别存储于输入缓存单元、权值缓存单元中,以便于运算过程中高效地存取数据;按照既定规则切换权值参数缓存和输入缓存单元缓存的地址,依次将输入缓存单元和权值参数输入运算单元进行卷积运算,统一了不同尺寸、不同步长的卷积运算流程,简化了硬件设计结构;
本发明提出了可扩展的卷积神经网络加速系统,当扩大卷积计算单元规模时,片上缓存不会等倍的扩大,而且控制模块无需修改,一定程度上有很大的资源复用,而且这种软硬件协作的方式可以更好的支持各种网络算法,同时可以比较方便的移植到不同资源FPGA器件或者ASIC芯片平台,具有很好的灵活性。
显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域及相关领域的普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。本发明中未具体描述和解释说明的结构、装置以及操作方法,如无特别说明和限定,均按照本领域的常规手段进行实施。
Claims (10)
1.一种规模可扩展的卷积神经网络加速系统,其特征在于,包括XDMA模块、存储器接口模块、同步模块、控制模块、外部存储器以及至少一个加速核;
所述XDMA模块用于上位机与FPGA的数据传输;
所述存储器接口模块用于实现控制外部存储器读写逻辑功能;
所述同步模块用于解决XDMA模块与加速核和存储器接口模块之间的跨时钟域数据传输问题;
所述控制模块用于控制各个功能模块的运行;
所述片外主存储器用于存储加速核运算所需的数据以及其运算过程完毕之后所产生的数据。
所述加速核包括运算单元、输入缓存单元、权值缓存单元、输出缓存单元和后处理单元。
2.根据权利要求1所述的一种规模可扩展的卷积神经网络加速系统,其特征在于,所述运算单元采用多级流水的运算模式,运算单元用于接收输入缓存单元和权值缓存单元的数据进行卷积运算。
3.根据权利要求1所述的一种规模可扩展的卷积神经网络加速系统,其特征在于,所述运算单元设置有多组,各运算单元并行。
4.根据权利要求2所述的一种规模可扩展的卷积神经网络加速系统,其特征在于,所述运算单元包括n个乘法器、一组累加器和两组片上缓存,一组片上缓存用于接收缓存输入缓存单元和权值缓存单元输入的数据,乘法器用于将输入特征和权值参数相乘,累加器用于将前一级乘法器相乘的结果累加,另一组片上缓存用于缓存运算单元的计算结果。
5.根据权利要求1所述的一种规模可扩展的卷积神经网络加速系统,其特征在于,所述输入缓存单元和权值缓存单元均按照从左到右,从上到下的顺序存储输入数据,输入通道为n,输入缓存单元的每个地址空间存储输入特征一个位置的n通道数据。
6.根据权利要求1所述的一种规模可扩展的卷积神经网络加速系统,其特征在于,所述后处理单元包括累加模块、激活函数、池化模块和上采样模块,后处理单元接收运算单元的运算结果,并选择进行累加、激活函数、池化或上采样操作。
7.根据权利要求1所述的一种规模可扩展的卷积神经网络加速系统,其特征在于,所述控制模块的控制信息由处理器通过AXI总线给出,所述处理器为ARM处理器。
8.根据权利要求7所述的一种规模可扩展的卷积神经网络加速系统,其特征在于,所述处理器与各模块之间采用AXI总线连接,所述加速核集成于SOC中,卷积计算之外的其他计算,在不影响卷积加速的情况下用处理器来执行。
9.根据权利要求1所述的一种规模可扩展的卷积神经网络加速系统,其特征在于,所述规模的扩展方法为:扩展运算单元,并根据实际情况,有选择的扩展输入缓存单元、权值缓存单元及片上缓存。
10.一种规模可扩展的卷积神经网络加速方法,其特征在于,
S1:XDMA模块从PCIe接口接收来自上位机的原始数据(包括图像数据和权值参数数据)并经同步模块将其存储到外部存储器的相应地址空间中;
S2:准备好运算所需的原始数据后,控制模块启动加速核进行运算,控制模块控制输入缓存单元和权值缓存单元从外部存储器中读取并存储第一组数据。
S3:乘法器将从输入缓存单元和权值缓存单元中读取一组数据进行相乘运算,并将计算出的结果存储在片上缓存中,在进行计算的同时,输入缓存单元和权值缓存单元从外部存储器中读取并存储第二组数据,接下来,乘法器进行第二组数据的运算,输入缓存单元和权值缓存单元从外部存储器中读取并存储第三组运算所需的数据,依次类推,接下来累加器用于将各组相乘结果依次累加并暂存在片上缓存中;
S4:后处理单元接收运算单元的运算结果,由控制模块选择进行累加、激活函数、池化或者上采样操作;
S5:最后将计算完成的输出特征存储到输出缓存单元中,由控制模块控制将计算出的输出特征经同步模块存储到外部存储器中。
S6:XDMA模块经同步模块从外部存储器取出计算出的输出数据,经PCIe送给上位机进行处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210159557.4A CN114519425A (zh) | 2022-02-21 | 2022-02-21 | 一种规模可扩展的卷积神经网络加速系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210159557.4A CN114519425A (zh) | 2022-02-21 | 2022-02-21 | 一种规模可扩展的卷积神经网络加速系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114519425A true CN114519425A (zh) | 2022-05-20 |
Family
ID=81599706
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210159557.4A Withdrawn CN114519425A (zh) | 2022-02-21 | 2022-02-21 | 一种规模可扩展的卷积神经网络加速系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114519425A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114202067A (zh) * | 2021-11-30 | 2022-03-18 | 山东产研鲲云人工智能研究院有限公司 | 面向卷积神经网络加速器的带宽优化方法及相关设备 |
CN117291240A (zh) * | 2023-11-24 | 2023-12-26 | 芯来智融半导体科技(上海)有限公司 | 卷积神经网络加速器及电子设备 |
-
2022
- 2022-02-21 CN CN202210159557.4A patent/CN114519425A/zh not_active Withdrawn
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114202067A (zh) * | 2021-11-30 | 2022-03-18 | 山东产研鲲云人工智能研究院有限公司 | 面向卷积神经网络加速器的带宽优化方法及相关设备 |
CN117291240A (zh) * | 2023-11-24 | 2023-12-26 | 芯来智融半导体科技(上海)有限公司 | 卷积神经网络加速器及电子设备 |
CN117291240B (zh) * | 2023-11-24 | 2024-03-15 | 芯来智融半导体科技(上海)有限公司 | 卷积神经网络加速器及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111684473B (zh) | 提高神经网络阵列的性能 | |
CN111242289B (zh) | 一种规模可扩展的卷积神经网络加速系统与方法 | |
CN109325591B (zh) | 面向Winograd卷积的神经网络处理器 | |
WO2020073211A1 (zh) | 运算加速器、处理方法及相关设备 | |
CN108090560A (zh) | 基于fpga的lstm递归神经网络硬件加速器的设计方法 | |
CN111459877A (zh) | 基于FPGA加速的Winograd YOLOv2目标检测模型方法 | |
CN110543939B (zh) | 一种基于fpga的卷积神经网络后向训练的硬件加速实现装置 | |
CN108090565A (zh) | 一种卷积神经网络并行化训练加速方法 | |
KR20150016089A (ko) | 신경망 컴퓨팅 장치 및 시스템과 그 방법 | |
CN111626403B (zh) | 一种基于cpu-fpga内存共享的卷积神经网络加速器 | |
CN109993293B (zh) | 一种适用于堆叠式沙漏网络的深度学习加速器 | |
CN110580519B (zh) | 一种卷积运算装置及其方法 | |
CN110766128A (zh) | 卷积计算单元、计算方法及神经网络计算平台 | |
CN114519425A (zh) | 一种规模可扩展的卷积神经网络加速系统 | |
CN115423081A (zh) | 一种基于fpga的cnn_lstm算法的神经网络加速器 | |
KR102396447B1 (ko) | 파이프라인 구조를 가지는 인공신경망용 연산 가속 장치 | |
CN113792621B (zh) | 一种基于fpga的目标检测加速器设计方法 | |
WO2022062391A1 (zh) | 一种加速rnn网络的系统、方法及存储介质 | |
CN114462587A (zh) | 一种用于光电混合计算神经网络的fpga实现方法 | |
CN112836793B (zh) | 浮点可分离卷积计算加速装置、系统以及图像处理方法 | |
CN113627587A (zh) | 一种多通道式卷积神经网络加速方法及装置 | |
WO2021238734A1 (zh) | 一种神经网络的训练方法及相关设备 | |
CN115222028A (zh) | 基于fpga的一维cnn-lstm加速平台及实现方法 | |
KR20240036594A (ko) | 인-메모리 연산을 위한 부분 합 관리 및 재구성가능 시스톨릭 플로우 아키텍처들 | |
CN117063182A (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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20220520 |
|
WW01 | Invention patent application withdrawn after publication |