CN109359735B - 深度神经网络硬件加速的数据输入装置与方法 - Google Patents

深度神经网络硬件加速的数据输入装置与方法 Download PDF

Info

Publication number
CN109359735B
CN109359735B CN201811403040.5A CN201811403040A CN109359735B CN 109359735 B CN109359735 B CN 109359735B CN 201811403040 A CN201811403040 A CN 201811403040A CN 109359735 B CN109359735 B CN 109359735B
Authority
CN
China
Prior art keywords
data
buffer
input
array
triple
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.)
Active
Application number
CN201811403040.5A
Other languages
English (en)
Other versions
CN109359735A (zh
Inventor
刘鹏
黄心忆
李宏亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CN201811403040.5A priority Critical patent/CN109359735B/zh
Publication of CN109359735A publication Critical patent/CN109359735A/zh
Application granted granted Critical
Publication of CN109359735B publication Critical patent/CN109359735B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations 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

本发明提供了一种深度神经网络硬件加速的数据输入装置,包括PE阵列组、三重输入缓冲、权重缓冲、输出缓冲和控制器;三重输入缓冲与PE阵列组一一对应的相连,且PE阵列组和输出缓冲一一对应的相连;每个三重输入缓冲通过总线与输入特征图存储区相连;控制器分别与输入特征图存储区以及每个三重输入缓冲相连;权重缓冲通过总线与权重存储区相连,且权重缓冲与每个PE阵列组相连;每个输出缓冲通过总线与输出特征图存储区相连。本发明还提供一种利用上述装置进行的深度神经网络硬件加速的数据输入方法,通过对三重输入缓冲的设计,实现数据传输时时延隐藏的目的的同时使数据重叠的部分可以直接复用,提高数据的复用率。

Description

深度神经网络硬件加速的数据输入装置与方法
技术领域
本发明涉及神经网络算法的硬件加速实现设计领域,具体为深度神经网络硬件加速的数据输入装置与方法。
背景技术
深度学习是机器学习的一个分支,相比于传统机器学习,深度学习可以从数据中学习更加复杂的特征表达,使得权重学习更加有效。深度学习目前推广到了机器学习的各个领域,在计算机视觉任务(如目标分类和识别、自动驾驶和手写识别)、大数据分析、自动语音识别等应用都接近了人类判别的性能。而深度神经网络具有更多的网络层数和参数个数,能够提取更加丰富的数据特征,从而使得机器学习获取更好的学习效果,卷积神经网络则是其中一种被广泛应用的结构。
卷积神经网络的基本结构由卷积层、池化层、非线性层以及全连接层组成,其中核心层级结构是卷积层,其最大的特点就是局部感知和权值共享。利用层间局部空间相关性将相邻每一层的神经元节点只与和它相近的上层神经元节点连接,即局部感知。权值共享则是在卷积神经网络中,卷积层的每一个卷积滤波器重复的作用于整个感受野中,对输入图像进行卷积,卷积结果构成了输入图像的特征图,提取出图像的局部特征。
卷积神经网络兼具高计算密集与访存密集的特点,而传统的通用计算平台CPU无法提供足够的计算算力,难以达到应用对实时性的要求。为解决上述问题,很多研究针对神经网络的特性,设计了相应的加速器,硬件平台包括FPGA(可编程逻辑阵列)、ASIC(专用集成电路)等。已有的神经网络加速器多采用二维空间结构,通过数据局部性和网络稀疏性来达到更高的能效,但未发掘片外存储到片上缓冲的数据复用。
发明内容
本发明要解决的技术问题是提供一种用于深度神经网络硬件加速的数据传输装置,以及利用该数据传输装置进行的数据传输方法,提高数据复用率,减小对带宽的需求,高效供给数据。
为解决上述技术问题,本发明提出一种深度神经网络硬件加速的数据输入装置,数据输入装置与外部存储相连;所述外部存储中存放用于计算的输入特征图存储区、权重存储区以及输出特征图存储区;
所述数据输入装置包括PE阵列组、三重输入缓冲、权重缓冲、输出缓冲和控制器;
所述PE阵列组、三重输入缓冲和输出缓冲的数量均至少为1;
所述三重输入缓冲与PE阵列组一一对应的相连,且PE阵列组和输出缓冲一一对应的相连;
每个三重输入缓冲通过总线与输入特征图存储区相连;
所述控制器分别与输入特征图存储区以及每个三重输入缓冲相连;
所述权重缓冲通过总线与权重存储区相连,且权重缓冲与每个PE阵列组相连;
每个输出缓冲通过总线与输出特征图存储区相连。
作为本发明深度神经网络硬件加速的数据输入装置的改进:
所述PE阵列组包括自适应移位取数单元Ⅰ、自适应移位取数单元Ⅱ、PE阵列Ⅰ、PE阵列Ⅱ以及累加单元;
所述自适应移位取数单元Ⅰ和自适应移位取数单元Ⅱ均与三重输入缓冲相连;
所述PE阵列Ⅰ分别与自适应移位取数单元Ⅰ、权重缓冲和累加单元相连;
所述PE阵列Ⅱ分别与自适应移位取数单元Ⅱ、权重缓冲和累加单元相连;
所述累加单元还与输出缓冲相连;
所述PE阵列Ⅰ和PE阵列Ⅱ的大小为mxn,其中m表示该PE阵列可同时计算的卷积核个数,对应m个通道的输入特征图数据;n表示该PE阵列可同时计算的输出单元数,对应输入特征图数据上同一行的相邻n个输出。
作为本发明深度神经网络硬件加速的数据输入装置的进一步改进:
所述三重输入缓冲由缓冲区Ⅰ、缓冲区Ⅱ和缓冲区Ⅲ组成;
所述缓冲区Ⅱ与的输入特征图存储区相连,用于读取输入特征图数据,并将其交错拷贝一份到缓冲区Ⅰ或缓冲区Ⅲ中;
所述缓冲区Ⅰ和缓冲区Ⅲ均与对应的PE阵列组相连,PE阵列组交错读取缓冲区Ⅰ和缓冲区Ⅲ的数据作为输入。
作为本发明深度神经网络硬件加速的数据输入装置的进一步改进:
所述自适应移位取数单元Ⅰ由控制单元Ⅰ、移位寄存器Ⅰ以及移位操作计数器Ⅰ组成;
所述控制单元Ⅰ分别与移位寄存器Ⅰ和移位操作计数器Ⅰ相连;
所述移位寄存器Ⅰ分别与三重输入缓冲、PE阵列Ⅰ和控制单元Ⅰ相连;
所述自适应移位取数单元Ⅱ由控制单元Ⅱ、移位寄存器Ⅱ以及移位操作计数器Ⅱ组成;
所述控制单元Ⅱ分别与移位寄存器Ⅱ和移位操作计数器Ⅱ相连;
所述移位寄存器Ⅱ分别与三重输入缓冲Ⅱ、PE阵列Ⅱ和控制单元Ⅱ相连。
为解决上述技术问题,本发明还提出一种利用上述数据输入装置进行深度神经网络硬件加速的数据输入方法,包括以下步骤:
S1、数据从外部存储传输到三重输入缓冲和权重缓冲;
S2、每个PE阵列组分别读取与其相连的三重输入缓冲和权重缓冲中数据进行计算;
S3、每个PE阵列组将步骤S2中计算结果存入输出缓冲,输出缓冲将其存入外部存储。
作为深度神经网络硬件加速的数据输入方法的改进:
所述数据包括权重数据和输入特征图数据;
所述权重数据从权重存储区传输到权重缓冲;
所述控制器控制输入特征图数据从输入特征图存储区传输到三重输入缓冲。
作为深度神经网络硬件加速的数据输入方法的进一步改进:
所述控制器控制输入特征图数据从输入特征图存储区传输到三重输入缓冲的步骤如下:
注:控制器、三重输入缓冲为上述深度神经网络硬件加速的数据输入装置中的控制器和三重输入缓冲,故不再对其构成及信号传递关系做详细介绍。
A、初始化源地址Rsrc、目标地址Rdst和取数行数寄存器Rline
所述三重输入缓冲的缓冲区Ⅱ首次访问输入特征图存储区时,控制器将源地址Rsrc和目标地址Rdst初始化为0,将取数行数寄存器Rline初始化为(K+1)/2;
所述源地址Rsrc的值表示此次取数对应输入特征图数据的位置,此时相对首地址的实际偏移量为(WxC)xRsrc
所述目标地址Rdst的值表示此次取数存放在三重输入缓冲中的位置,此时相对缓冲区Ⅱ首地址的实际偏移量为(WxC)xRdst
所述取数行数Rline的值表示此次读取数据块(WxC)的块数,一次取数为(WxC)xRline的一组数据;
注:输入特征图数据的尺寸为WxH,通道数为C。
W代表输入特征图数据的宽,H代表输入特征图数据的高;
三重输入缓冲总容量为3x(K x W x C/2),其中K表示卷积核尺寸。
B、从(WxC)x Rsrc处读取(WxC)xRline数据到三重输入缓冲的(WxC)x Rdst位置(取数操作):
所述控制器从相对输入特征图数据存储首地址偏移(WxC)x Rsrc处读取(WxC)xRline的数据到三重输入缓冲的缓冲区Ⅱ中相对首地址偏移(WxC)x Rdst的位置;
C、更新Rsrc数值为(Rsrc+Rline),更新Rdst数值为(Rdst+Rline)%K:
所述三重输入缓冲的缓冲区Ⅱ完成步骤B后,控制器将Rsrc的数值更新为(Rsrc+Rline),即下一组数据从上一组数据的结束处继续读取;
所述控制器还将Rdst的数值更新为(Rdst+Rline)%K,即下一组数据的存放位置从上一组数据的结束处开始;
D、判断是否为最后一组数:
所述控制器根据步骤C更新后Rsrc判断此次取数是否为最后一组数;
步骤C更新后的Rsrc=H,则判断结果为最后一组数,否则判断结果为非最后一组数;
①、当判断结果为最后一组数时,则下一组数为下一个输出特征图第一行对应的输入数据,此时控制器将Rsrc、Rdst重置为0,将Rline更新为(K+1)/2;
②、当判断结果为非最后一组数时,则进一步对Rsrc的数值进行判断,从而确定下一组输入数据需要读取的行数;
E、重复上述步骤B~D直到运行结束;
注:运行结束是指所有的输入特征图数据均计算完毕。
作为深度神经网络硬件加速的数据输入方法的进一步改进:
所述步骤D中,当判断结果为非最后一组数时,下一组输入数据需要读取的行数的确定方法如下;
所述控制器判断(Rsrc+S)是否大于输入特征图数据的高度H:
若Rsrc+S>H,则下一组需要读取的输入数据行数Rline为(H-Rsrc),即将取数行数Rline更新为(H-Rsrc);
若Rsrc+S≤H,则将Rline更新为步长S。
作为深度神经网络硬件加速的数据输入方法的进一步改进:
所述S2中每个PE阵列组分别读取与其相连的三重输入缓冲和权重缓冲中数据进行计算的方法如下;
所述PE阵列Ⅰ通过自适应移位取数单元Ⅰ从缓冲区Ⅰ或缓冲区Ⅲ取数,对前C/2通道的输入特征图数据进行计算,得到部分结果;
所述PE阵列Ⅱ通过自适应移位取数单元Ⅱ从缓冲区Ⅰ或缓冲区Ⅲ取数,对后C/2通道的输入特征图数据进行计算,得到另一部分结果;
所述累加单元将PE阵列Ⅰ和PE阵列Ⅱ所得结果进行累加,得到最终结果,并将最终结果存入输出缓冲;
作为深度神经网络硬件加速的数据输入方法的进一步改进:
所述自适应移位取数单元Ⅰ的从缓冲区Ⅰ或缓冲区Ⅲ取数供PE阵列Ⅰ计算的步骤如下:
注:自适应移位取数单元Ⅰ和自适应移位取数单元Ⅱ为上述深度神经网络硬件加速的数据输入装置中的自适应移位取数单元Ⅰ和自适应移位取数单元Ⅱ,故不再对其构成及信号传递关系做详细介绍。
1)、初始化移位操作计数器Ⅰ:
所述PE阵列Ⅰ开始计算时,自适应移位取数单元Ⅰ中的控制单元Ⅰ将移位操作计数器Ⅰ初始化为0;
2)、从三重输入缓冲读取数据到移位寄存器Ⅰ:
自适应移位取数单元Ⅰ中的移位寄存器Ⅰ从三重输入缓冲中读取相应位置的数据,读取的数据量为(n-1)x S+K,其中n表示阵列的列数;
注:相应位置指的是具体参与PE阵列运算的n个数的起始位置。
3)、从移位寄存器Ⅰ间隔S取数供PE阵列Ⅰ计算:
PE阵列Ⅰ从移位寄存器Ⅰ间隔S取数,取得的n个数据即为本周期PE阵列Ⅰ中参与运算的输入数据;
4)、判断移位操作数是否小于K:
控制单元Ⅰ读取移位操作计数器Ⅰ的值,判断该数值是否小于卷积核尺寸K;
若移位操作数<k,则将移位寄存器Ⅰ中的数分别左移到相邻的寄存器(即左移一位),移位操作计数器Ⅰ开始计数(即,移位操作数加1);
若移位操作数≥k,则控制单元Ⅰ将移位操作计数器Ⅰ置0,且移位寄存器Ⅰ从三重输入缓冲中读取下一部分的数据更新该移位寄存器Ⅰ的值;
以控制单元Ⅱ代替控制单元Ⅰ、移位寄存器Ⅱ代替移位寄存器Ⅰ,移位操作计数器Ⅱ代替移位操作计数器Ⅰ,PE阵列Ⅱ代替PE阵列Ⅰ,依次进行步骤1)~4);
注:自适应移位取数单元Ⅱ的工作步骤与自适应移位取数单元Ⅰ相同;
5)、重复步骤3)~4),直到PE阵列Ⅰ与PE阵列Ⅱ的计算结果于累加单元中累加得到最终结果。
针对现有技术,本发明的技术优势是:
1、本发明采用三重输入缓冲,通过三重缓冲机制,利用多块缓冲(缓冲区Ⅰ、缓冲区Ⅱ和缓冲区Ⅲ),实现数据传输时时延隐藏的目的。
2、本发明通过对三重输入缓冲的设计,使数据重叠的部分可以直接复用,即,仅需读取非重叠部分的新数据,从而还能提高数据的复用率。
3、本发明通过对自适应移位取数单元的设计,能够支持不同卷积核尺寸和不同步长下的数据高效读取,同时通过移位寄存器的形式可以最大限度复用从三重输入缓冲到处理单元(即,PE阵列Ⅰ和PE阵列Ⅱ)的数据。
附图说明
下面结合附图对本发明的具体实施方式作进一步详细说明。
图1为本发明深度神经网络硬件加速的数据输入装置的结构示意图;
图2为图1中PE阵列组110的结构示意图;
图3为本发明对输入特征图数据的分块示意图;
图4为图1中三重输入缓冲120的数据调度算法框图;
图5为本发明深度神经网络硬件加速的数据输入装置运行时的时序图;
图6为图2中自适应移位取数单元Ⅰ111(或自适应移位取数单元Ⅱ115)的算法框图;
图7为图1中PE阵列Ⅰ112(或PE阵列Ⅰ113)第1个时钟周期时输入数据实例图;
图8为图1中PE阵列Ⅰ112(或PE阵列Ⅰ113)第2个时钟周期时输入数据实例图;
图9为图1中PE阵列Ⅰ112(或PE阵列Ⅰ113)第3个时钟周期时输入数据实例图。
具体实施方式
下面结合具体实施例对本发明进行进一步描述,但本发明的保护范围并不仅限于此。
实施例1、深度神经网络硬件加速的数据输入装置,如图1~3所示,数据输入装置100与外部存储200相连;外部存储200中存放用于计算的输入特征图存储区210、权重存储区220以及输出特征图存储区230。
上述外部存储200属于现有技术,故不对其做详细介绍。
数据输入装置100包括PE阵列组110(二维PE阵列组)、三重输入缓冲120、权重缓冲130、输出缓冲140和控制器150。其中PE阵列组110、三重输入缓冲120和输出缓冲140的数量均为4;三重输入缓冲120与PE阵列组110一一对应的相连,且PE阵列组110和输出缓冲140一一对应的相连;每个输出缓冲140与输出特征图存储区230相连。
由于每个PE阵列组110、三重输入缓冲120、输出缓冲140的连接方式及工作内容相同,故本发明仅对一组依次相连的三重输入缓冲120、PE阵列组110和输出缓冲140进行详细介绍。
每个三重输入缓冲120通过总线与输入特征图存储区210相连(如图1中虚线所示),控制器150分别与输入特征图存储区210以及每个三重输入缓冲120相连;
输入特征图存储区210中的输入特征图数据通过总线传输到三重输入缓冲120中,且该输入特征图数据到三重输入缓冲120的数据传输逻辑由控制器150控制。
三重输入缓冲120由缓冲区Ⅰ、缓冲区Ⅱ和缓冲区Ⅲ组成,其中缓冲区Ⅱ与输入特征图存储区210相连,用于读取外存,并将读取的数据(输入特征图数据)交错拷贝一份到缓冲区Ⅰ或缓冲区Ⅲ中。另外缓冲区Ⅰ和缓冲区Ⅲ均与对应的PE阵列组110相连,PE阵列组110交错读取这缓冲区Ⅰ和缓冲区Ⅲ的数据作为输入,从而达到数据传输时延隐藏的效果。
权重缓冲130通过总线与权重存储区220相连。权重存储区220中的权重数据通过总线传输到权重缓冲130。
每个PE阵列组110与权重缓冲130相连(如图1中实线所示)、与三重输入缓冲120一一对应的相连、与输出缓冲140一一对应的相连;每个PE阵列组110并行对不同的输入特征图数据进行计算,且共享权重数据;输出缓冲140通过总线与输出特征图存储区230相连;
即,
PE阵列组110使用权重缓冲130和与其相连的三重输入缓冲120中的数据(即,输入特征图数据和权重数据)进行计算,将计算结果存入与其相连的输出缓冲140中;输出缓冲140通过总线将缓存的计算结果传输至输出特征图存储区230中。
注:图1中的箭头表示数据(即,输入特征图数据和权重数据)被计算的过程;图1中虚线仅为区分三重输入缓冲120和输入特征图存储区210、权重缓冲130和PE阵列组110之间的连接关系,避免产生歧义。
如图2所示(图2中的箭头表示数据被计算的过程),PE阵列组110包括自适应移位取数单元Ⅰ111、自适应移位取数单元Ⅱ115、PE阵列Ⅰ112、PE阵列Ⅱ113以及累加单元114。
自适应移位取数单元Ⅰ111和自适应移位取数单元Ⅱ115均与三重输入缓冲120相连;
PE阵列Ⅰ112分别与自适应移位取数单元Ⅰ111、权重缓冲130和累加单元114相连;
PE阵列Ⅱ113分别与自适应移位取数单元Ⅱ115、权重缓冲130和累加单元114相连;
累加单元114还与输出缓冲140相连。
自适应移位取数单元Ⅰ111由控制单元Ⅰ1111、移位寄存器Ⅰ1112以及移位操作计数器Ⅰ1113组成。控制单元Ⅰ1111分别与移位寄存器Ⅰ1112和移位操作计数器Ⅰ1113相连;移位寄存器Ⅰ1112分别与三重输入缓冲120、PE阵列Ⅰ112和控制单元Ⅰ1111相连。
其中移位寄存器Ⅰ1112是由64个寄存器组成的存储空间,用于寄存从三重输入缓冲120读取的数据,供PE阵列Ⅰ112计算使用;移位操作计数器Ⅰ1113用于记录移位寄存器Ⅰ1112中的数据移位次数;控制单元Ⅰ1111用于实现自适应移位取数逻辑。
自适应移位取数单元Ⅰ111和自适应移位取数单元Ⅱ115的结构及工作内容相同;
即,自适应移位取数单元Ⅱ115由控制单元Ⅱ、移位寄存器Ⅱ以及移位操作计数器Ⅱ组成。控制单元Ⅱ分别与移位寄存器Ⅱ和移位操作计数器Ⅱ相连;移位寄存器Ⅱ分别与三重输入缓冲Ⅱ、PE阵列Ⅱ113和控制单元Ⅱ相连。
本实施例中,PE阵列Ⅰ112对输入特征图数据的前半部分进行计算,得到部分结果,PE阵列Ⅱ113对输入特征图数据的后半部分进行计算,得到另一部分结果,累加单元114将PE阵列Ⅰ112和PE阵列Ⅱ113所得结果进行累加,得到最终结果,并将最终结果存入输出缓冲140。
输入特征图数据的分块方式如图3所示,对于尺寸为WxH,通道数为C的输入特征图数据,在高度H维度上进行分块。
注:W代表输入特征图数据的宽,H代表输入特征图数据的高;
PE阵列Ⅰ112对输入特征图数据的前半部分进行计算,即,PE阵列Ⅰ112对输入特征图数据的前半部分通道进行计算,故PE阵列Ⅰ112的输入数据为前C/2通道的输入特征图数据;
同理,PE阵列Ⅱ113对输入特征图数据的后半部进行计算,即,PE阵列Ⅱ113对输入特征图数据的后半部分通道进行计算,故PE阵列Ⅱ113的输入数据为后C/2通道的输入特征图数据。
PE阵列Ⅰ112及PE阵列Ⅱ113的大小用mxn表示,其中m表示该PE阵列可同时计算的卷积核个数,对应m个通道的输入特征图数据;n表示该PE阵列可同时计算的输出单元数,对应输入特征图数据上同一行的相邻n个输出。
每个PE阵列Ⅰ112(或PE阵列Ⅱ113)对应一组三重输入缓冲120,该三重输入缓冲120总容量为3x(K x W x C/2),其中K表示卷积核尺寸。我们对三重输入缓冲120中的这组输入数据与m个卷积核进行计算,输出结果为参与计算的卷积核对应的m个输出通道中,输入数据可计算的一行W个结果。不失一般性,以当前行输出特征图的下一行为下一组计算目标,对应的输入数据相当于当前输入数据窗向下滑动S行,其中S表示步长。因此当前计算所需的输入数据与下一组计算所需的输入数据之间存在(K-S)行的数据重叠(实际神经网络中的K均大于S),每个PE阵列Ⅰ112(或PE阵列Ⅱ113)对应的三重输入缓冲120仅需读取(S xW x C/2)的新数据,由此带来(K-S)/K的数据复用率。
实施例2、利用实施例1所提供的数据输入装置进行深度神经网络硬件加速的数据输入方法,如图4~7所示:
S1、数据从外部存储200传输到三重输入缓冲120和权重缓冲220;
所述数据指权重数据/输入特征图数据。
1)、权重数据从权重存储区220传输到权重缓冲220的具体传输步骤如下:
权重存储区220将权重数据发送至权重缓冲130,权重数据的传输量与对应PE阵列Ⅰ112(或PE阵列Ⅱ113)的尺寸匹配,对于尺寸为mxn的阵列,即,具有m个可同时计算的卷积核,此时权重存储区220一次传输mx(K x K x C)的权重数据。
2)、输入特征图数据从输入特征图存储区210传输到三重输入缓冲120的具体传输步骤如下:
在控制器150的控制下,根据如图4所示的三重缓冲数据调度算法将输入特征图存储区210中的输入特征图数据读取到三重输入缓冲120,具体包括以下步骤:
B、初始化源地址Rsrc、目标地址Rdst和取数行数寄存器Rline
三重输入缓冲120的缓冲区Ⅱ首次访问输入特征图存储区210时,控制器150将源地址Rsrc和目标地址Rdst初始化为0,将取数行数寄存器Rline初始化为(K+1)/2。
注:
源地址Rsrc的值表示此次取数对应输入特征图数据的位置,此时相对首地址的实际偏移量为(WxC)xRsrc
目标地址Rdst的值表示此次取数存放在三重输入缓冲120中的位置,此时相对缓冲区Ⅱ首地址的实际偏移量为(WxC)xRdst
取数行数Rline的值表示此次读取数据块(WxC)的块数,一次取数为(WxC)xRline的一组数据。
B、从(WxC)x Rsrc处读取(WxC)xRline数据到三重输入缓冲120的(WxC)x Rdst位置(取数操作):
控制器150从相对输入特征图数据存储首地址偏移(WxC)x Rsrc处读取(WxC)xRline的数据到三重输入缓冲120的缓冲区Ⅱ中相对首地址偏移(WxC)x Rdst的位置。
C、更新Rsrc数值为(Rsrc+Rline),更新Rdst数值为(Rdst+Rline)%K:
三重输入缓冲120的缓冲区Ⅱ完成步骤B取数操作后,控制器150将Rsrc的数值更新为(Rsrc+Rline),即下一组数据从上一组数据的结束处继续读取;控制器150还将Rdst的数值更新为(Rdst+Rline)%K,即下一组数据的存放位置从上一组数据的结束处开始。
F、判断是否为最后一组数:
控制器150对每个三重输入缓冲120的缓冲区Ⅱ的取数次数分别进行计数,当计数达到输出特征图的高时,此次取数即为最后一组数。
即,步骤C更新后的Rsrc=H,即判断其为最后一组数,否则判断其为非最后一组数;
①、当判断结果为最后一组数时,则下一组数为下一个输出特征图第一行对应的输入数据,此时控制器150将Rsrc、Rdst重置为0,将Rline更新为(K+1)/2。
②、当判断结果为非最后一组数时,则进一步对Rsrc的数值进行判断,从而确定下一组输入数据需要读取的行数。
此时控制器150判断(Rsrc+S)是否大于输入特征图数据的高度H:
若Rsrc+S>H,则下一组需要读取的输入数据行数Rline为(H-Rsrc),即将取数行数Rline更新为(H-Rsrc);
若Rsrc+S≤H,则将Rline更新为步长S。
G、重复上述步骤B~D直到所有的输入特征图数据均计算完毕,运行结束。
S2、PE阵列组110读取三重输入缓冲120和权重缓冲130中数据进行计算的具体步骤如下:
以一个PE阵列组110计算流程为例,运行开始时,先按照上述步骤S1读取第一组数据到缓冲区Ⅱ;读取完毕后将缓冲区Ⅱ中的数据复制到缓冲区Ⅰ中;下一阶段PE阵列组110将使用缓冲区Ⅰ中的输入数据进行计算。
同时继续按照步骤s1读取第二组数据到缓冲区Ⅱ的相应的位置,并将缓冲区Ⅱ中的所有数据复制到缓冲区Ⅲ;上述PE阵列组110将使用缓冲区Ⅰ中的输入数据进行计算完毕后,再使用缓冲区Ⅲ中的数据进行计算。
PE阵列组110交错使用缓冲区Ⅰ和缓冲区Ⅲ中的数据进行计算,直至完成计算。
本实施例中数据输入装置运行时的时序图如图5所示(图5为流水线充满后的时序图),其中bufA表示缓冲区Ⅰ、bufB表示缓冲区Ⅱ、bufC表示缓冲区Ⅲ,Block表述数据块,即,输入数据;输出缓冲由双缓冲实现,分别用buf0和buf1表示;
由图5可以看出本发明通过对三重输入缓冲120的应用,实现组与组(相邻两组数据)间的输入数据重用,同时隐藏数据传输时延,因此能在保持高计算性能的同时有效降低片外访存带宽需求,输入传输量是优化前的S/K。
对于本实施所采用尺寸为mxn的PE阵列,该阵列需要(W/n)组计算得到一组输入对应的所有输出。输出缓冲140采用双缓冲实现,通过两个缓冲区交替读写达到输出时延隐藏。
注:三重缓冲中的一个缓冲区数据量为(K x W x C/2),是整行W的输入特征图,而由于阵列尺寸的限制,这些数据无法同时进行计算,需要继续分块,阵列的一组运算中(K xn x C/2)的输入数据参与,得到输出特征图一行中的n个最终结果,因此需要W/n组才能完成对(K x W x C/2)的输入数据的计算。
双缓冲属于现有技术,故不对其进行详细介绍。
本实施例中PE阵列Ⅰ112通过自适应移位取数单元Ⅰ111从缓冲区Ⅰ或缓冲区Ⅲ取数,对前C/2通道的输入特征图数据进行计算,得到部分结果;
PE阵列Ⅱ113通过自适应移位取数单元Ⅱ115从缓冲区Ⅰ或缓冲区Ⅲ取数,对后C/2通道的输入特征图数据进行计算,得到另一部分结果;
累加单元114将PE阵列Ⅰ112和PE阵列Ⅱ113所得结果进行累加,得到最终结果,并将最终结果存入输出缓冲140。
注:PE阵列Ⅰ112和PE阵列Ⅱ113是两个独立的m x n阵列,取的数据没有相关性,只需将计算结果累加,因此PE阵列Ⅰ112和PE阵列Ⅱ113能同时运行。
自适应移位取数单元Ⅰ111和自适应移位取数单元Ⅱ115的工作内容一致,故此处仅对自适应移位取数单元Ⅰ111的工作内容进行详细介绍。
如图6所示,本发明通过移位寄存器的形式最大限度复用从三重输入缓冲120到PE阵列Ⅰ112(或PE阵列Ⅱ113)的数据。
以自适应移位取数单元Ⅰ111从缓冲区Ⅰ(或缓冲区Ⅲ)取数供PE阵列Ⅰ112计算为例,具体步骤如下:
1)、初始化移位操作计数器Ⅰ1113:
PE阵列Ⅰ112开始计算时,自适应移位取数单元Ⅰ111中的控制单元Ⅰ1111将移位操作计数器Ⅰ1113初始化为0;
2)、从三重输入缓冲120读取数据到移位寄存器Ⅰ1112:
自适应移位取数单元Ⅰ111中的移位寄存器Ⅰ1112从三重输入缓冲120中读取相应位置一定数量的数据,读取的数据量为(n-1)x S+K,其中n表示阵列的列数;
注:相应位置指:具体参与PE阵列运算的n个数的起始位置。
移位寄存器Ⅰ1112从三重输入缓冲120的缓冲区Ⅰ(或缓冲区Ⅲ)中读取数据。
3)、从移位寄存器Ⅰ1112间隔S取数供PE阵列Ⅰ112计算:
PE阵列Ⅰ112从移位寄存器Ⅰ1112间隔S取数,取得的n个数据即为本周期PE阵列Ⅰ112中参与运算的输入数据。
4)、判断移位操作数是否小于K:
控制单元Ⅰ1111读取移位操作计数器Ⅰ1113的值,判断该数值是否小于卷积核尺寸K;
若移位操作数<k,则将移位寄存器Ⅰ1112中的数分别左移到相邻的寄存器(即左移一位),移位操作计数器Ⅰ1113开始计数(即,移位操作数加1);
若移位操作数≥k,则控制单元Ⅰ1111将移位操作计数器Ⅰ1113置0,且移位寄存器Ⅰ1112从三重输入缓冲120中读取下一部分的数据更新该移位寄存器Ⅰ1112的值。
注:自适应移位取数单元Ⅱ的工作步骤与自适应移位取数单元Ⅰ相同;
即,以控制单元Ⅱ代替控制单元Ⅰ1111、移位寄存器Ⅱ代替移位寄存器Ⅰ1112,移位操作计数器Ⅱ代替移位操作计数器Ⅰ1113,PE阵列Ⅱ113代替PE阵列Ⅰ112,依次进行上述步骤1)~4)。
5)、重复步骤3)~4),直到PE阵列Ⅰ112与PE阵列Ⅱ113的计算结果与累加单元114中累加得到最终结果。
通过分析PE阵列Ⅰ112(或PE阵列Ⅱ113)在每个时钟周期参与计算的输入数据组织形式,发现在同一时钟周期内,输入每一列PE阵列的数据映射到输入特征图上以步长为间隔排列在同一行;而下一时钟周期输入每个PE数据与当前周期的输入数据在输入特征图上处于相同行的相邻位置,K个时钟周期后输入数据映射到输入特征图上为下一行数据。因此对于输入特征图上的一部分数据,在PE阵列Ⅰ112计算过程中存在两个维度的数据复用,分别为单个PE的累加维度和相邻列PE维度。输入数据复用程度与卷积核尺寸K以及步长S有关,(K/S)越大复用率越高。
图7~图9为三个时钟周期内PE阵列Ⅰ112输入数据实例。
卷积核i(i=1,…,m)的权重表示为ai,bi,ci,…,输入特征图一行的数据表示为0,1,2,…,则在第一个时钟周期,PE阵列Ⅰ112的n列输入数据分别为0,S,…,Sx(n-1),与之进行计算的m行权重分别为a1,a2,…,am,每一列PE的输入特征图数据相同,每一行PE的权重数据相同。
第二个时钟周期,PE阵列Ⅰ112的n列输入数据分别为1,S+1,…,Sx(n-1)+1,与之进行计算的m行权重分别为b1,b2,…,bm,每个PE的计算结果与上一周期计算结果累加。
第三个时钟周期,PE阵列Ⅰ112的n列输入数据分别为2,S+2,…,Sx(n-1)+2,与之进行计算的m行权重分别为c1,c2,…,cm,如此流水计算,经过(K x K x C/2)个时钟周期;
PE阵列Ⅰ112和PE阵列Ⅱ113并行完成一组数据的计算,两个阵列的计算结果进行累加,得到(m x n)个最终输出结果。
S3、PE阵列组110将步骤S2中计算结果存入输出缓冲140,输出缓冲140将其存入外部存储200。
本发明采用上述两种数据传输优化技术(指三重缓冲机制和对自适应移位取数单元的设计)可以实现多维度的数据复用,即通过多种数据并行方式来最大化数据重用,从而减少计算对数据访问带宽的需求。采用多路输入实现对权重数据的复用,三重缓冲机制实现对片外输入数据的复用,自适应移位取数单元实现对片上三重输入缓冲数据的复用。
具体访存优化效果如下表1所示:
表1
Figure BDA0001876701600000131
其中W、H、C表示输入特征图的宽、高以及通道数,K表示卷积核尺寸,S表示步长,M表示卷积核数量,m表示该PE阵列可同时计算的卷积核个数,n表示PE阵列列数。
对二维PE阵列完成全部输出特征图计算时,是否应用本发明的两种情况下片外以及片上的存储访问量进行统计对比,未应用三重缓冲机制时的片外访问数据量是应用后的K/S倍,未应用自适应移位取数单元的片上访问数据量是应用后的(nx K)/((n-1)x S+K)倍。
以VGG-16的第二层卷积层为例,输入特征图为W=H=224,C=64,卷积核尺寸K=3,步长S=1,数量M=64,PE阵列列数n=14。此时本发明片外访问数据量为优化前的1/3,片上访问数据量是优化前的38%,即本发明能够通过多种数据并行方式来最大化数据重用,减少计算对数据访问带宽的需求。
最后,还需要注意的是,以上列举的仅是本发明的若干个具体实施例。显然,本发明不限于以上实施例,还可以有许多变形。本领域的普通技术人员能从本发明公开的内容直接导出或联想到的所有变形,均应认为是本发明的保护范围。

Claims (6)

1.深度神经网络硬件加速的数据输入装置,数据输入装置(100)与外部存储(200)相连;所述外部存储(200)中存放用于计算的输入特征图存储区(210)、权重存储区(220)以及输出特征图存储区(230);其特征在于:
所述数据输入装置(100)包括PE阵列组(110)、三重输入缓冲(120)、权重缓冲(130)、输出缓冲(140)和控制器(150);
所述PE阵列组(110)、三重输入缓冲(120)和输出缓冲(140)的数量均至少为1;
所述三重输入缓冲(120)与PE阵列组(110)一一对应的相连,且PE阵列组(110)和输出缓冲(140)一一对应的相连;
每个三重输入缓冲(120)通过总线与输入特征图存储区(210)相连;
所述控制器(150)分别与输入特征图存储区(210)以及每个三重输入缓冲(120)相连;
所述权重缓冲(130)通过总线与权重存储区(220)相连,且权重缓冲(130)与每个PE阵列组(110)相连;每个输出缓冲(140)通过总线与输出特征图存储区(230)相连;
所述PE阵列组(110)包括自适应移位取数单元Ⅰ(111)、自适应移位取数单元Ⅱ(115)、PE阵列Ⅰ(112)、PE阵列Ⅱ(113)以及累加单元(114);
所述自适应移位取数单元Ⅰ(111)和自适应移位取数单元Ⅱ(115)均与三重输入缓冲(120)相连;
所述PE阵列Ⅰ(112)分别与自适应移位取数单元Ⅰ(111)、权重缓冲(130)和累加单元(114)相连;
所述PE阵列Ⅱ(113)分别与自适应移位取数单元Ⅱ(115)、权重缓冲(130)和累加单元(114)相连;所述累加单元(114)还与输出缓冲(140)相连;
所述PE阵列Ⅰ(112)和PE阵列Ⅱ(113)的大小为m x n,其中m表示该PE阵列可同时计算的卷积核个数,对应m个通道的输入特征图数据;n表示该PE阵列可同时计算的输出单元数,对应输入特征图数据上同一行的相邻n个输出;
所述三重输入缓冲(120)由缓冲区Ⅰ、缓冲区Ⅱ和缓冲区Ⅲ组成;
所述缓冲区Ⅱ与的输入特征图存储区(210)相连,用于读取输入特征图数据,并将其交错拷贝一份到缓冲区Ⅰ或缓冲区Ⅲ中;
所述缓冲区Ⅰ和缓冲区Ⅲ均与对应的PE阵列组(110)相连,PE阵列组(110)交错读取缓冲区Ⅰ和缓冲区Ⅲ的数据作为输入。
2.根据权利要求1所述的深度神经网络硬件加速的数据输入装置,其特征在于:
所述自适应移位取数单元Ⅰ(111)由控制单元Ⅰ(1111)、移位寄存器Ⅰ(1112)以及移位操作计数器Ⅰ(1113)组成;
所述控制单元Ⅰ(1111)分别与移位寄存器Ⅰ(1112)和移位操作计数器Ⅰ(1113)相连;
所述移位寄存器Ⅰ(1112)分别与三重输入缓冲(120)、PE阵列Ⅰ(112)和控制单元Ⅰ(1111)相连;
所述自适应移位取数单元Ⅱ(115)由控制单元Ⅱ、移位寄存器Ⅱ以及移位操作计数器Ⅱ组成;所述控制单元Ⅱ分别与移位寄存器Ⅱ和移位操作计数器Ⅱ相连;
所述移位寄存器Ⅱ分别与三重输入缓冲Ⅱ、PE阵列Ⅱ(113)和控制单元Ⅱ相连。
3.利用如权利要求1或2所述的数据输入装置进行深度神经网络硬件加速的数据输入方法,其特征在于包括以下步骤:
S1、数据从外部存储(200)传输到三重输入缓冲(120)和权重缓冲(130);
S2、每个PE阵列组(110)分别读取与其相连的三重输入缓冲(120)和权重缓冲(130)中数据进行计算;
S3、每个PE阵列组(110)将步骤S2中计算结果存入输出缓冲(140),输出缓冲(140)将其存入外部存储(200);
所述数据包括权重数据和输入特征图数据;
所述权重数据从权重存储区(220)传输到权重缓冲(130);
所述控制器(150)控制输入特征图数据从输入特征图存储区(210)传输到三重输入缓冲(120);
所述控制器(150)控制输入特征图数据从输入特征图存储区(210)传输到三重输入缓冲(120)的步骤如下:
A、初始化源地址Rsrc、目标地址Rdst和取数行数寄存器Rline
所述三重输入缓冲(120)的缓冲区Ⅱ首次访问输入特征图存储区(210)时,控制器(150)将源地址Rsrc和目标地址Rdst初始化为0,将取数行数寄存器Rline初始化为(K+1)/2;
所述源地址Rsrc的值表示此次取数对应输入特征图数据的位置,此时相对首地址的实际偏移量为(WxC)xRsrc
所述目标地址Rdst的值表示此次取数存放在三重输入缓冲(120)中的位置,此时相对缓冲区Ⅱ首地址的实际偏移量为(WxC)xRdst
所述取数行数Rline的值表示此次读取数据块(WxC)的块数,一次取数为(WxC)xRline的一组数据;
B、从(WxC)x Rsrc处读取(WxC)xRline数据到三重输入缓冲(120)的(WxC)x Rdst位置:
所述控制器(150)从相对输入特征图数据存储首地址偏移(WxC)x Rsrc处读取(WxC)xRline的数据到三重输入缓冲(120)的缓冲区Ⅱ中相对首地址偏移(WxC)x Rdst的位置;
C、更新Rsrc数值为(Rsrc+Rline),更新Rdst数值为(Rdst+Rline)%K:
所述三重输入缓冲(120)的缓冲区Ⅱ完成步骤B后,控制器(150)将Rsrc的数值更新为(Rsrc+Rline);所述控制器(150)还将Rdst的数值更新为(Rdst+Rline)%K;
D、判断是否为最后一组数:
所述控制器(150)根据步骤C更新后Rsrc判断此次取数是否为最后一组数;
步骤C更新后的Rsrc=H,则判断结果为最后一组数,否则判断结果为非最后一组数;
①、当判断结果为最后一组数时,则下一组数为下一个输出特征图第一行对应的输入数据,此时控制器(150)将Rsrc、Rdst重置为0,将Rline更新为(K+1)/2;
②、当判断结果为非最后一组数时,则进一步对Rsrc的数值进行判断,从而确定下一组输入数据需要读取的行数;
E、重复上述步骤B~D直到运行结束。
4.根据权利要求3所述深度神经网络硬件加速的数据输入方法,其特征在于:
所述步骤D中,当判断结果为非最后一组数时,下一组输入数据需要读取的行数的确定方法如下;
所述控制器(150)判断(Rsrc+S)是否大于输入特征图数据的高度H:
若Rsrc+S>H,则下一组需要读取的输入数据行数Rline为(H-Rsrc),即将取数行数Rline更新为(H-Rsrc);
若Rsrc+S≤H,则将Rline更新为步长S。
5.根据权利要求3或4所述深度神经网络硬件加速的数据输入方法,其特征在于:
所述S2中每个PE阵列组(110)分别读取与其相连的三重输入缓冲(120)和权重缓冲(130)中数据进行计算的方法如下;
所述PE阵列Ⅰ(112)通过自适应移位取数单元Ⅰ(111)从缓冲区Ⅰ或缓冲区Ⅲ取数,对前C/2通道的输入特征图数据进行计算,得到部分结果;
所述PE阵列Ⅱ(113)通过自适应移位取数单元Ⅱ(115)从缓冲区Ⅰ或缓冲区Ⅲ取数,对后C/2通道的输入特征图数据进行计算,得到另一部分结果;
所述累加单元(114)将PE阵列Ⅰ(112)和PE阵列Ⅱ(113)所得结果进行累加,得到最终结果,并将最终结果存入输出缓冲(140)。
6.根据权利要求5所述深度神经网络硬件加速的数据输入方法,其特征在于:
所述自适应移位取数单元Ⅰ(111)的从缓冲区Ⅰ或缓冲区Ⅲ取数供PE阵列Ⅰ(112)计算的步骤如下:
1)、初始化移位操作计数器Ⅰ(1113):
所述PE阵列Ⅰ(112)开始计算时,自适应移位取数单元Ⅰ(111)中的控制单元Ⅰ(1111)将移位操作计数器Ⅰ(1113)初始化为0;
2)、从三重输入缓冲(120)读取数据到移位寄存器Ⅰ(1112):
自适应移位取数单元Ⅰ(111)中的移位寄存器Ⅰ(1112)从三重输入缓冲(120)中读取相应位置的数据,读取的数据量为(n-1)x S+K,其中n表示阵列的列数;
3)、从移位寄存器Ⅰ(1112)间隔S取数供PE阵列Ⅰ(112)计算:
PE阵列Ⅰ(112)从移位寄存器Ⅰ(1112)间隔S取数,取得的n个数据即为本周期PE阵列Ⅰ(112)中参与运算的输入数据;
4)、判断移位操作数是否小于K:
控制单元Ⅰ(1111)读取移位操作计数器Ⅰ(1113)的值,判断该值是否小于卷积核尺寸K;
若移位操作数<k,则将移位寄存器Ⅰ(1112)中的数分别左移到相邻的寄存器,移位操作计数器Ⅰ(1113)开始计数;
若移位操作数≥k,则控制单元Ⅰ(1111)将移位操作计数器Ⅰ(1113)置0,且移位寄存器Ⅰ(1112)从三重输入缓冲(120)中读取下一部分的数据更新该移位寄存器Ⅰ(1112)的值;
以控制单元Ⅱ代替控制单元Ⅰ(1111)、移位寄存器Ⅱ代替移位寄存器Ⅰ(1112),移位操作计数器Ⅱ代替移位操作计数器Ⅰ(1113),PE阵列Ⅱ(113)代替PE阵列Ⅰ(112),依次进行步骤1)~4);
5)、重复步骤3)~4),直到PE阵列Ⅰ(112)与PE阵列Ⅱ(113)的计算结果于累加单元(114)中累加得到最终结果。
CN201811403040.5A 2018-11-23 2018-11-23 深度神经网络硬件加速的数据输入装置与方法 Active CN109359735B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811403040.5A CN109359735B (zh) 2018-11-23 2018-11-23 深度神经网络硬件加速的数据输入装置与方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811403040.5A CN109359735B (zh) 2018-11-23 2018-11-23 深度神经网络硬件加速的数据输入装置与方法

Publications (2)

Publication Number Publication Date
CN109359735A CN109359735A (zh) 2019-02-19
CN109359735B true CN109359735B (zh) 2020-12-04

Family

ID=65338513

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811403040.5A Active CN109359735B (zh) 2018-11-23 2018-11-23 深度神经网络硬件加速的数据输入装置与方法

Country Status (1)

Country Link
CN (1) CN109359735B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110390383B (zh) * 2019-06-25 2021-04-06 东南大学 一种基于幂指数量化的深度神经网络硬件加速器
CN110705687B (zh) * 2019-09-05 2020-11-03 北京三快在线科技有限公司 卷积神经网络硬件计算装置及方法
CN112257859A (zh) * 2020-10-30 2021-01-22 地平线(上海)人工智能技术有限公司 特征数据处理方法及装置、设备、存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106875011A (zh) * 2017-01-12 2017-06-20 南京大学 二值权重卷积神经网络加速器的硬件架构及其计算流程
CN107704916A (zh) * 2016-08-12 2018-02-16 北京深鉴科技有限公司 一种基于fpga实现rnn神经网络的硬件加速器及方法
CN107836001A (zh) * 2015-06-29 2018-03-23 微软技术许可有限责任公司 硬件加速器上的卷积神经网络
CN108171317A (zh) * 2017-11-27 2018-06-15 北京时代民芯科技有限公司 一种基于soc的数据复用卷积神经网络加速器
CN108241890A (zh) * 2018-01-29 2018-07-03 清华大学 一种可重构神经网络加速方法及架构
CN108805274A (zh) * 2018-05-28 2018-11-13 重庆大学 基于FPGA的Tiny-yolo卷积神经网络硬件加速方法及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10698657B2 (en) * 2016-08-12 2020-06-30 Xilinx, Inc. Hardware accelerator for compressed RNN on FPGA

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107836001A (zh) * 2015-06-29 2018-03-23 微软技术许可有限责任公司 硬件加速器上的卷积神经网络
CN107704916A (zh) * 2016-08-12 2018-02-16 北京深鉴科技有限公司 一种基于fpga实现rnn神经网络的硬件加速器及方法
CN106875011A (zh) * 2017-01-12 2017-06-20 南京大学 二值权重卷积神经网络加速器的硬件架构及其计算流程
CN108171317A (zh) * 2017-11-27 2018-06-15 北京时代民芯科技有限公司 一种基于soc的数据复用卷积神经网络加速器
CN108241890A (zh) * 2018-01-29 2018-07-03 清华大学 一种可重构神经网络加速方法及架构
CN108805274A (zh) * 2018-05-28 2018-11-13 重庆大学 基于FPGA的Tiny-yolo卷积神经网络硬件加速方法及系统

Also Published As

Publication number Publication date
CN109359735A (zh) 2019-02-19

Similar Documents

Publication Publication Date Title
CN111684473B (zh) 提高神经网络阵列的性能
CN109359735B (zh) 深度神经网络硬件加速的数据输入装置与方法
US11775430B1 (en) Memory access for multiple circuit components
US10445638B1 (en) Restructuring a multi-dimensional array
US20180189643A1 (en) Convolution circuit, application processor including the same, and operating method thereof
CN106844294B (zh) 卷积运算芯片和通信设备
CN106228240B (zh) 基于fpga的深度卷积神经网络实现方法
CN108985450B (zh) 面向向量处理器的卷积神经网络运算向量化方法
CN104915322B (zh) 一种卷积神经网络硬件加速方法
CN108416327B (zh) 一种目标检测方法、装置、计算机设备及可读存储介质
JP6960700B2 (ja) マルチキャストネットワークオンチップに基づいた畳み込みニューラルネットワークハードウェアアクセラレータおよびその動作方式
CN107533459A (zh) 使用电阻存储器阵列的数据处理
CN107239824A (zh) 用于实现稀疏卷积神经网络加速器的装置和方法
CN110766127B (zh) 神经网络计算专用电路及其相关计算平台与实现方法
WO2019136764A1 (zh) 卷积器及其所应用的人工智能处理装置
CN110580519B (zh) 一种卷积运算装置及其方法
CN111105023B (zh) 数据流重构方法及可重构数据流处理器
CN111738433A (zh) 一种可重配置的卷积硬件加速器
JP7492555B2 (ja) 複数の入力データセットのための処理
CN108881254A (zh) 基于神经网络的入侵检测系统
WO2022062391A1 (zh) 一种加速rnn网络的系统、方法及存储介质
CN113313252A (zh) 一种基于脉动阵列的深度可分离卷积实现方法
CN111191774B (zh) 面向精简卷积神经网络的低代价加速器架构及其处理方法
CN113592075B (zh) 卷积运算装置、方法和芯片
CN113762480B (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
GR01 Patent grant