CN111738433B - 一种可重配置的卷积硬件加速器 - Google Patents
一种可重配置的卷积硬件加速器 Download PDFInfo
- Publication number
- CN111738433B CN111738433B CN202010442619.3A CN202010442619A CN111738433B CN 111738433 B CN111738433 B CN 111738433B CN 202010442619 A CN202010442619 A CN 202010442619A CN 111738433 B CN111738433 B CN 111738433B
- Authority
- CN
- China
- Prior art keywords
- input
- data
- convolution
- unit
- module
- 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
Links
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
-
- 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
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
本发明公开了一种可重配置的卷积硬件加速器,所述加速器包括输入缓存模块,可重配置的卷积计算模块和自定义计算模式模块;所述自定义计算模式模块根据配置信息中的自定义输入信息和卷积层结构参数信息,控制加速器的数据流从而使卷积硬件加速器运行在不同的计算模式,将数据流输入输入缓存模块;所述输入缓存模块对输入的数据进行缓存的同时,根据配置信息中的特征图参数信息生成对应的有效窗口输入卷积计算模块;所述可重配置的卷积计算模块根据配置信息中的卷积核参数信息,对输入的有效窗口完成对应的卷积运算,实现可重配置的卷积硬件加速器。本发明支持可自定义配置的不同输入、输出并行方案,极大提高了灵活性。
Description
技术领域
本发明涉及卷积神经网络硬件加速器领域,属于集成电路硬件加速技术领域,具体涉及一种可重配置的卷积硬件加速器。
背景技术
卷积神经网络(Convolutional Neural Network,CNN)已经广泛应用与各种计算机视觉的应用中,如图像分类、目标检测、视频监控等。然而,算法中大量的数据移动与其计算复杂性对终端设备的功耗以及性能带来的巨大的挑战,阻碍了CNN算法在智能手机、智能汽车、智能家居领域的应用部署。
目前已经出现许多对于CNN算法进行硬件加速的方法,设计均是针对一种或者一类网络设计了一种或者两种高效的计算模式,但是由于CNN层参数的差异性,当模型变化时,固定的计算模式会造成能耗与性能的损失。此外,它们的计算单元并没有考虑对各种卷积参数的可配置性、可扩展性,当网络结构与参数与计算单元配置不符合时会带来资源利用率的下降与性能的降低。
本发明设计了一种可重配置的卷积硬件加速器设计方法,所述方法可根据配置信息对卷积硬件加速器进行重配置,使得所设计的卷积加速器适用多种不同的卷积层结构。卷积硬件加速器包括:输入缓存模块,可重配置的卷积计算模块和自定义计算模式模块;所述输入缓存模块对输入数据缓存的同时,可根据配置的输入特征图参数信息生成对应有效窗口;可重配置的卷积计算模块根据配置的卷积核参数信息,对输入的有效窗口完成对应的卷积运算;自定义计算模式模块可以根据自定义输入的配置信息与卷积层结构信息,通过数据重排单元控制加速器的数据流从而使卷积硬件加速器运行在不同的计算模式。文献Angel-Eye(Guo K,Sui L,Qiu J,et al.Angel-Eye:A Complete Design Flow forMapping CNN onto Customized Hardware[C]//2016IEEE Computer Society AnnualSymposium on VLSI(ISVLSI).IEEE,2016.)使用计算单元阵列进行计算,每个计算单元包括一组卷积、加法树等,所有的计算单元共享同一个输入特征图。针对不同的卷积尺寸,该文献采用“拼接”与“填充”的方式对非标准卷积核尺寸运算进行适配。而这种方法对于非标准卷积核尺寸来说,会产生一定数量的无效运算,对时间以及硬件资源都有所浪费。
文献SysArrayAccel(Wei X,Yu C H,Zhang P,et al.Automated Systolic ArrayArchitecture Synthesis for High Throughput CNN Inference on FPGAs[C]//DesignAutomation Conference.ACM,2017.)使用脉动阵列的实现运算加速卷积层,计算单元只与相邻的计算单元相连,简化了路由,省去了大型选择器。但是采用的脉动阵列由于尺寸配置是相对固定的,当输入数据尺寸较脉动阵列尺寸较小时,会造成时间上的停顿浪费。
以上硬件加速器设计实现一定通用性的过程中对于硬件资源的可复用性没有充分考虑,从会造成硬件资源的闲置以及性能的损失。
发明内容
本发明克服现有卷积神经网络加速器方案在可配置性、可扩展性方面的不足,提出了一种可重配置的卷积硬件加速器。
本发明的目的至少通过如下技术方案之一实现。
一种可重配置的卷积硬件加速器,其特征在于,包括输入缓存模块,可重配置的卷积计算模块和自定义计算模式模块;
所述自定义计算模式模块根据配置信息中的自定义输入信息和卷积层结构参数信息,控制加速器的数据流从而使卷积硬件加速器运行在不同的计算模式,将数据流输入输入缓存模块;
所述输入缓存模块对输入的数据进行缓存的同时,根据配置信息中的特征图参数信息生成对应的有效窗口输入卷积计算模块;
所述可重配置的卷积计算模块根据配置信息中的卷积核参数信息,对输入的有效窗口完成对应的卷积运算,实现可重配置的卷积硬件加速器。
进一步地,自定义计算模式模块中,首先对源输入数据进行块状划分得到若干数据块;之后以数据块为基本单位,根据配置信息中的自定义输入信息,对数据块的输入顺序进行排序,并根据该排序将数据块中的数据以串行输入的方式输出至输入缓存模块;根据不同的配置信息,按照卷积计算时所使用的滑窗,生成与之匹配的数据流;不同的数据块排序方式就是不同的输入数据流,不同数据流意味着不同的计算模式;
所述自定义输入信息包括输入数据长度即输入特征图的高度H、输入数据宽度即输入特征图的宽度W、输入通道数Ni、输出通道数No和卷积核尺寸的参数K。
进一步地,所述块状划分具体如下:
将H与W分别除以一个固定尺寸Z,得到的结果按照向上取整的原则得到两个数即为可以划分出的数据块的行个数L与列个数J;
除了最后一行与最后一列的数据块尺寸外,首先将其余块都划分为边长为Z的正方形块;最后一行的宽度等于剩余未划分区域的行宽度,最后一列的高度等于剩余未划分区域的列高度;
为了保证不会遗漏所有的卷积窗口,所有相邻的数据块之间共享部分数据,横方向上所有相邻的数据块之间共享列数据,纵方向所有相邻的数据块之间也会共享K-1行数据;从而保证了不论是行相邻还是列相邻,划分后的数据块内数据所括的有效窗口与划分前完全相同。
进一步地,所述输入缓存模块包括移位存储单元即移位寄存器LINE_IN、二维存储单元即一组二维寄存器LINE_VEC以及控制单元;控制单元对移位存储单元和二维存储单元的上移与有效输出操作进行使能控制;所述特征图参数信息包括输入特征图的高度H与宽度W,有效窗口的高度h与宽度w,以及卷积的步长S;将特征图参数信息输入至控制单元,完成输入缓存模块的配置
输入缓存模块中,输入的数据以串行输入的方式输入至移位存储单元的最右侧,每个周期移位存储单元内的数据都会向左移动一位;根据输入特征图的高度H与宽度W,利用上移操作,将串行输入的数据转换为对应具有行坐标和列坐标的二维数据存储在二维存储单元;根据有效窗口的高度h与宽度w,确定有效窗口内数据的起始坐标,将起始坐标映射到二维存储单元的对应位置,有效窗口按照从左到右,再至上而下的顺序移动,有效窗口内数据的坐标也随之也不断移动,每个周期有效窗口整体移动的步长为S,从而不断并行输出各个有效窗口内的数据至输入卷积计算模块。
进一步地,所述卷积计算模块包括全并行的乘法单元、可配置的加法树单元以及权重缓存单元;所述卷积核参数信息包括卷积核尺寸K以及步长S;
卷积计算模块中,将输入缓存模块输出的各个有效窗口内的数据依次分配到全并行乘法单元的各输入,根据步长S的不同,窗口生成的顺序也不同,输入数据使用全并行乘法单元内部的乘法器与储存在权重缓存单元中的权重数据进行乘法操作,得到一组乘法结果并输入至可配置的加法树单元,根据卷积核尺寸K,选择不同的加法树单元运算结果,得到的加法树单元运算结果与权重缓存单元中的偏置数据相加即为卷积运算结果;K的取值范围根据常用卷积参数取值范围为1、3、5、7;所述权重数据和偏置数据通过外部存储器获取。
进一步地,所述乘法单元包括54个并行的乘法器;所述可配置的加法树单元由6个9输入的改进性加法树为基础单元组成,根据卷积核尺寸K值的不同可重配置为不同的运算模式,具体如下:
当K=1时,此时为特殊情况,后续不需要加法运算,所以乘法单元的输出直接可以与偏置数据相加;
当K=3时,加法树单元运算结果有6个,分别为6个改进型加法树的输出;
当K=5时,加法树单元运算结果有2个,分别为前3个改进型加法树输出的和以及后3个改进型加法树输出的和;
当K=7时,加法树单元运算结果只有一个,为6个改进型加法树的输出进一步相加的和;
在得到加法树单元的结果后,进一步使用加法器与偏置数据相加。
进一步地,所述改进型加法树为多层结构,具体如下:
改进型加法树的第一层的输入为所有待计算数据;对于其余层,当前层的输入为前一层的输出;直到输出的个数为1,得到的结果即为所有数的和;
如果当前层的输入个数是偶数,输入的数按照顺序两两配对后相加;
如果当前层的输入个数是奇数,那么先对偶数个数使用按照顺序两两配对相加进行并行计算,而剩下的一个数直接输出到下一层;
乘法单元中乘法器的输出依次连接到改进型加法树的输入。
与现有技术对比,本发明的优点与积极效果在于:
1.本发明可配置的卷积层硬件器基于对输入特征图进行划分后,采用可以重配置的卷积计算模式,支持可自定义配置的不同输入、输出并行方案,极大提高了灵活性;
2.本发明设计了高效的输入缓存单元,来实现不同输入尺寸以及不同卷积核尺寸下输入窗口的生成,实现了硬件加速器的适用性;
3.本发明设计了可重配置的乘法-加法单元,在支持不同尺寸的卷积核的同时,提高了硬件加速器的通用性同时,获得较高的平均资源利用率;
附图说明
图1是本发明实施例中的输入特征图块状划分方法示意图。
图2是本发明实施例中可配置计算模式示意图。
图3是本发明实施例中输入缓存模块硬件结构三示意图。
图4是本发明实施例中输入缓存模块在不同K值下输出窗口示意图。
图5是本发明实施例中卷积运算单元结构示意图。
图6是本发明实施例中改进型加法树示意图。
图7是本发明实施例中不同K值下加法树的映射情况以及有效输出示意图。
图8是本发明实施例中一种可重配置的卷积硬件加速器示的意图。
具体实施方式
下面结合附图和实施例对本发明具体实施做进一步说明。但本发明的实施方式并不限于此。
实施例:
一种可重配置的卷积硬件加速器,如图8所示,包括输入缓存模块,可重配置的卷积计算模块和自定义计算模式模块;
所述自定义计算模式模块根据配置信息中的自定义输入信息和卷积层结构参数信息,通过控制加速器的数据流从而使卷积硬件加速器运行在不同的计算模式,将数据流输入输入缓存模块;
所述输入缓存模块对输入的数据进行缓存的同时,根据配置信息中的特征图参数信息生成对应的有效窗口输入卷积计算模块;
所述可重配置的卷积计算模块根据配置信息中的卷积核参数信息,对输入的有效窗口完成对应的卷积运算,实现可重配置的卷积硬件加速器。
所述自定义输入信息包括输入数据长度即输入特征图的高度H、输入数据宽度即输入特征图的宽度W、输入通道数Ni、输出通道数No和卷积核尺寸的参数K。
自定义计算模式模块中,首先对源输入数据进行块状划分得到若干数据块;如图1所示,所述块状划分具体如下:
将H与W分别除以一个固定尺寸Z,得到的结果按照向上取整的原则得到两个数即为可以划分出的数据块的行个数L与列个数J,具体如下:
本实施例中Z取18;
除了最后一行与最后一列的数据块尺寸外,首先将其余块都划分为边长为Z的正方形块;最后一行的宽度等于剩余未划分区域的行宽度,最后一列的高度等于剩余未划分区域的列高度;
为了保证不会遗漏所有的卷积窗口,所有相邻的数据块之间共享部分数据,横方向上所有相邻的数据块之间共享列数据,纵方向所有相邻的数据块之间也会共享K-1行数据;从而保证了不论是行相邻还是列相邻,划分后的数据块内数据所括的有效窗口与划分前完全相同。
本实施例中,当K=3时,Block[0,0]的17,18列与Block[0,1]的前两列一样,这样可以保证卷积窗口在横向上的连续性。同理,Block[0,0]的17,18行与Block[1,0]的前两列一样;
对于前面的(L-1)列,(J-1)行范围内所有数据块的尺寸都为[18,18];第K列的前(J-1)行的数据块尺寸为[W-(L-1)*18+K-1,18];第(J-1)列的前(L-1)行的划分的尺寸为[18,H-(J-1)*18+K-1];第K列J行,即最后一个数据块的尺寸为[W-(L-1)*18+2,H-(J-1)*18+K-1]。
之后以数据块为基本单位,根据配置信息中的自定义输入信息,对数据块的输入顺序进行排序,并根据该排序将数据块中的数据以串行输入的方式输出至输入缓存模块;根据不同的配置信息,按照卷积计算时所使用的滑窗,生成与之匹配的数据流;不同的数据块排序方式就是不同的输入数据流,不同数据流意味着不同的计算模式。
划分得到的数据块可以作为可重配置的计算模式中的基本块。可重配置的计算模式指的是可以通过配置不同的参数,加速器采用不同的计算流程。
影响计算模式的可配置参数设置主要为以下4个参数:
[输入通道个数,输出通道个数,输入数据长度,输入数据宽度];
对于一个相同的输入,配置不同的参数就可以映射出不同的计算模式,从而满足不同的需求。
如图2所示,一个输入通道个数为3,卷积核个数为3的卷积层,输入特征图尺寸为48*48,可划分为9个数据块的卷积层。其中,以数据块为基本单位,可将第i个输入通道的第j行第k列的数据块记为Block(i,j,k),则第一个输入通道第一个数据块表示为Block(0,0,0)。同时,可将第m个卷积核的第n个通道记为M_mn。
本实施例中,若配置参数为[3,3,48,48]。在该参数配置下,数据块输出的顺序如下:
S1、首先输出Block(0,0,0),在块内部则按照行顺序以“Z”型依次序输入到输出到后续的缓存单元;
S2、在Block(0,0,0)输入结束后,根据“输入通道个数”为3的配置,后续输出的块为Block(1,0,0)与Block(2,0,0);
S3、在Block(2,0,0)后,Block(0,1,0)、Block(1,1,0)、Block(2,1,0)相继输出;按照这种顺序直到数据块Block(2,2,0);
S4、Block(2,2,0)之后的输入为Block(0,0,1),按照这种的顺序直到最后一个数据块Block(2,2,2);
S5、根据配置的“输出通道个数”为3,按照步骤S1到步骤S4,输出还需要再进行两次循环。
如图3所示,所述输入缓存模块包括移位存储单元即移位寄存器LINE_IN、二维存储单元即一组二维寄存器LINE_VEC以及控制单元;控制单元对移位存储单元和二维存储单元的上移与有效输出操作进行使能控制;移位寄存器和二维寄存器的深度均为Z,因此LINE_VEC的存储空间为7*Z;
所述特征图参数信息包括输入特征图的高度H与宽度W,有效窗口的高度h与宽度w,以及卷积的步长S;将特征图参数信息输入至控制单元,完成输入缓存模块的配置;
本实施例中,输入缓存模块中,输入的数据以串行输入的方式输入至移位存储单元LINE_IN的最右侧第一个位置LINE_IN[1],每个周期移位存储单元LINE_IN内的数据都会向左移动一位,而控制单元会开始对输入数据从0开始进行计数,可将其称为列计数C1;
启动后V个时刻后,控制单元中列计数器值C1=W,根据输入特征图的高度H与宽度W,利用上移操作,将串行输入的数据转换为对应具有行坐标和列坐标的二维数据存储在二维存储单元,即LINE_IN中的所有数据移动到LINE_VEC的第一行,同时LINE_VEC的所有行也会向上移动,而列计数器C1进行置零,重新开始计数;而控制单元对行计数器C2进行加1的操作,记录下输入行数;
根据有效窗口的高度h与宽度w,确定有效窗口内数据的起始坐标,将起始坐标映射到二维存储单元的对应位置,有效窗口按照从左到右,再至上而下的顺序移动,有效窗口内数据的坐标也随之也不断移动,从而不断并行输出各个有效窗口内的数据至输入卷积计算模块。
本实施例中,启动后V*h个时刻后,控制单元中的两个计数值C1=V且C2=h;此时,控制单元执行输出操作,开始输出有效窗口v1,之后的下一个时钟周期,有效窗口坐标会向左移动一位,输出有效窗口v2;此后直到下一次C1=H,控制器执行上移操作的同时会将有效窗口坐标重置。
有效窗口的坐标信息根据输入配置参数[h,w]的不同,如图4所示,展示了[h,w]在[3,3]与[5,5]下第一个有效窗口的区别。有效窗口坐标每个周期整体向左移动一个步长S位,有效窗口的滑动是通过读取输入缓存的方式不同实现的,也即是可以每一个周期生成一个有效窗口。本发明充分利用了输入特征图在行列两个方向上的数据复用性,高效地生成输出窗口,同时支持配置输出不同尺寸的输出窗口。
所述卷积计算模块包括全并行的乘法单元、可配置的加法树单元以及权重缓存单元;所述卷积核参数信息包括卷积核尺寸K以及步长S;
乘法单元包括54个并行的乘法器;无论卷积核尺寸K的值为多少,乘法单元都是共用的。区别在于根据输入K的值,对乘法器的输入值进行不同的分配;
卷积计算模块中,将输入缓存模块输出的各个有效窗口内的数据依次分配到全并行乘法单元的各输入,根据步长S的不同,窗口生成的顺序也不同,输入数据使用全并行乘法单元内部的乘法器与储存在权重缓存单元中的权重数据进行乘法操作,得到一组乘法结果并输入至可配置的加法树单元,根据卷积核尺寸K,选择不同的加法树单元运算结果,得到的加法树单元运算结果与权重缓存单元中的偏置数据相加即为卷积运算结果;K的取值范围根据常用卷积参数取值范围为1,3、5、7;所述权重数据和偏置数据通过外部存储器获取。
加法树单元由6个9输入的改进性加法树为基础单元组成,根据卷积核尺寸K值的不同可重配置为不同的运算模式,具体如下:
当K=1时,此时为特殊情况,后续不需要加法运算,所以乘法单元的输出直接可以与偏置数据相加;
当K=3时,加法树单元运算结果有6个,分别为6个改进型加法树的输出;
当K=5时,加法树单元运算结果有2个,分别为前3个改进型加法树输出的和以及后3个改进型加法树输出的和;
当K=7时,加法树单元运算结果只有一个,为6个改进型加法树的输出进一步相加的和。
在得到加法树结果后,进一步使用加法器与偏置数据相加。
如图6所示,所述改进型加法树为多层结构,其中A表示存储数据的寄存器,A[19]~A[11]为9个加数,A[0]为加法树最终输出,具体如下:
改进型加法树的第一层的输入为所有待计算数据;对于其余层,当前层的输入为前一层的输出;直到输出的个数为1,得到的结果即为所有数的和;
如果当前层的输入个数是偶数,输入的数可以按照顺序两两配对后相加;
如果当前层的输入个数是奇数,那么先对偶数个数使用按照顺序两两配对相加进行并行计算,而剩下的一个数直接输出到下一层。
乘法单元中乘法器的输出依次连接到改进型加法树的输入。
本实施例中,以乘法单元中包括了27个乘法器,3个第一层输入个数为9的输入改进型加法树的卷积计算模块为例,说明如何实现K=3,5的运算流程,具体的工作流程如下:
如图5所示为卷积计算模块的硬件结构图,27个乘法器的输入为{A1,A2,…,A27}与{B1,B2,…,B27},前者输入为输入缓存模块输出的有效窗口数据,后者输入为权重缓存单元中的权重值;乘法单元的输出为{C1,C2,…,C27},得到这27个输出分别对应连接到后续的3个改进型加法树,即{C1,…,C9},{C10,…,C18}与{C19,…,C27}分别连接到{D11,…,D19},{D21,…,D29}与{D31,…,D39}。每个加法树对应输出为E1,E2,E3,这3个输出连接到一个3输入加速器中得到它们的和为F1。如图7所示,分别为K=5,K=3时加法树的映射情况以及有效输出,具体如下:
A)当K=3时,输入卷积核与输入窗口的尺寸为3*3。为了提高对乘法器的利用率,对于一个二维卷积的输入窗口X1,其映射方式如图7a所示,输入X1映射到{A1,…,A9},{A10,…,A18},{A19,…,A27}。而{B1,…,B9},{B10,…,B18},{B19,…,B27}分别被3个卷积核W11,W12,W13映射,此时乘法单元并行进行计算的是X1的3个卷积核的乘法部分。得到乘法结果经过后续3个并行的加法树,加法树的输出E1,E2,E3即为二维卷积结果;后续的F1被配置为无效输出。
B)当K=5时输入卷积核与输入窗口的尺寸为5*5。与K=3不同,对于该模式下的一个二维卷积输入X2,一次卷积运算所需要的乘法次数为25。其映射方式如图7b示,将X1映射到了{A1,…,A25},而A26,A27则利用“零乘以任何数为零,零加不影响等式结果”的特性进行补零处理,在硬件上表现为此配置模式下A26,A27的输入为“0”值。对应地,卷积核W21分为3份,对应映射到{B1,…,B25}中,对应相乘后的结果通过3个加法树进行加法运算后得到的值并不是最终的卷积结果。此时的无效输出变为了E1,E2,E3,最终结果需要进一步相加的得到的F1才是最终卷积结果。即为此时有效输出配置为F1。
本实施例中的卷积计算模块可以支持K=7的卷积运算,硬件结构上的变化则在于此时K=5下的两组有效输出需要再经过一次相加,得到的结果就为有效输出。同时在映射方式上与K=5时类似,多余的输入采用“补零”进行处理。
以上所述,仅为本发明较佳的实施例,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明所公开的范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都属于本发明的保护范围。
Claims (4)
1.一种可重配置的卷积硬件加速器,其特征在于,包括输入缓存模块,可重配置的卷积计算模块和自定义计算模式模块;
所述自定义计算模式模块根据配置信息中的自定义输入信息和卷积层结构参数信息,控制加速器的数据流从而使卷积硬件加速器运行在不同的计算模式,将数据流输入输入缓存模块;
所述输入缓存模块对输入的数据进行缓存的同时,根据配置信息中的特征图参数信息生成对应的有效窗口输入卷积计算模块;
所述可重配置的卷积计算模块根据配置信息中的卷积核参数信息,对输入的有效窗口完成对应的卷积运算,实现可重配置的卷积硬件加速器;
所述卷积计算模块包括全并行的乘法单元、可配置的加法树单元以及权重缓存单元;所述卷积核参数信息包括卷积核尺寸K以及步长S;
卷积计算模块中,将输入缓存模块输出的各个有效窗口内的数据依次分配到全并行乘法单元的各输入,根据步长S的不同,窗口生成的顺序也不同,输入数据使用全并行乘法单元内部的乘法器与储存在权重缓存单元中的权重数据进行乘法操作,得到一组乘法结果并输入至可配置的加法树单元,根据卷积核尺寸K,选择不同的加法树单元运算结果,得到的加法树单元运算结果与权重缓存单元中的偏置数据相加即为卷积运算结果;K的取值范围根据常用卷积参数取值范围为1、3、5、7;所述权重数据和偏置数据通过外部存储器获取;
所述乘法单元包括54个并行的乘法器;所述可配置的加法树单元由6个9输入的改进性加法树为基础单元组成,根据卷积核尺寸K值的不同可重配置为不同的运算模式,具体如下:
当K=1时,乘法单元的输出直接与偏置数据相加;
当K=3时,加法树单元运算结果有6个,分别为6个改进型加法树的输出;
当K=5时,加法树单元运算结果有2个,分别为前3个改进型加法树输出的和以及后3个改进型加法树输出的和;
当K=7时,加法树单元运算结果只有一个,为6个改进型加法树的输出进一步相加的和;
在得到加法树单元的结果后,进一步使用加法器与偏置数据相加;所述改进型加法树为多层结构,具体如下:
改进型加法树的第一层的输入为所有待计算数据;对于其余层,当前层的输入为前一层的输出;直到输出的个数为1,得到的结果即为所有数的和;
如果当前层的输入个数是偶数,输入的数按照顺序两两配对后相加;
如果当前层的输入个数是奇数,那么先对偶数个数使用按照顺序两两配对相加进行并行计算,而剩下的一个数直接输出到下一层;
乘法单元中乘法器的输出依次连接到改进型加法树的输入。
2.根据权利要求1所述的一种可重配置的卷积硬件加速器,其特征在于,自定义计算模式模块中,首先对源输入数据进行块状划分得到若干数据块;之后以数据块为基本单位,根据配置信息中的自定义输入信息,对数据块的输入顺序进行排序,并根据该排序将数据块中的数据以串行输入的方式输出至输入缓存模块;根据不同的配置信息,按照卷积计算时所使用的滑窗,生成与之匹配的数据流;不同的数据块排序方式就是不同的输入数据流,不同数据流意味着不同的计算模式;
所述自定义输入信息包括输入数据长度即输入特征图的高度H、输入数据宽度即输入特征图的宽度W、输入通道数Ni、输出通道数No和卷积核尺寸的参数K。
3.根据权利要求2所述的一种可重配置的卷积硬件加速器,其特征在于,所述块状划分具体如下:
将H与W分别除以一个固定尺寸Z,得到的结果按照向上取整的原则得到两个数即为划分出的数据块的行个数L与列个数J;
除了最后一行与最后一列的数据块尺寸外,首先将其余块都划分为边长为Z的正方形块;最后一行的宽度等于剩余未划分区域的行宽度,最后一列的高度等于剩余未划分区域的列高度;
为了保证不会遗漏所有的卷积窗口,所有相邻的数据块之间共享部分数据,横方向上所有相邻的数据块之间共享列数据,纵方向所有相邻的数据块之间也会共享K-1行数据;从而保证了不论是行相邻还是列相邻,划分后的数据块内数据所括的有效窗口与划分前完全相同。
4.根据权利要求1所述的一种可重配置的卷积硬件加速器,其特征在于,所述输入缓存模块包括移位存储单元即移位寄存器LINE_IN、二维存储单元即一组二维寄存器LINE_VEC以及控制单元;控制单元对移位存储单元和二维存储单元的上移与有效输出操作进行使能控制;所述特征图参数信息包括输入特征图的高度H与宽度W,有效窗口的高度h与宽度w,以及卷积的步长S;将特征图参数信息输入至控制单元,完成输入缓存模块的配置
输入缓存模块中,输入的数据以串行输入的方式输入至移位存储单元的最右侧,每个周期移位存储单元内的数据都会向左移动一位;根据输入特征图的高度H与宽度W,利用上移操作,将串行输入的数据转换为对应具有行坐标和列坐标的二维数据存储在二维存储单元;根据有效窗口的高度h与宽度w,确定有效窗口内数据的起始坐标,将起始坐标映射到二维存储单元的对应位置,有效窗口按照从左到右,再至上而下的顺序移动,有效窗口内数据的坐标也随之也不断移动,每个周期有效窗口整体移动的步长为S,从而不断并行输出各个有效窗口内的数据至输入卷积计算模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010442619.3A CN111738433B (zh) | 2020-05-22 | 2020-05-22 | 一种可重配置的卷积硬件加速器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010442619.3A CN111738433B (zh) | 2020-05-22 | 2020-05-22 | 一种可重配置的卷积硬件加速器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111738433A CN111738433A (zh) | 2020-10-02 |
CN111738433B true CN111738433B (zh) | 2023-09-26 |
Family
ID=72648164
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010442619.3A Active CN111738433B (zh) | 2020-05-22 | 2020-05-22 | 一种可重配置的卷积硬件加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111738433B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112614040B (zh) * | 2020-12-16 | 2021-09-21 | 上海壁仞智能科技有限公司 | 用于卷积计算的方法、计算设备和计算机可读存储介质 |
CN112686377B (zh) * | 2021-03-18 | 2021-07-02 | 北京地平线机器人技术研发有限公司 | 利用卷积硬件对特征数据进行反卷积处理的方法和装置 |
CN115145839B (zh) * | 2021-03-31 | 2024-05-14 | 广东高云半导体科技股份有限公司 | 一种深度卷积加速器及其实现加速深度卷积的方法 |
CN115146767B (zh) * | 2021-03-31 | 2024-05-28 | 广东高云半导体科技股份有限公司 | 一种二维卷积加速器及其实现加速二维卷积的方法 |
CN113159295B (zh) * | 2021-04-27 | 2022-07-01 | 瀚博半导体(上海)有限公司 | 基于硬件加速器的张量处理方法和系统 |
CN113537482B (zh) * | 2021-09-14 | 2021-12-28 | 绍兴埃瓦科技有限公司 | 神经网络计算模块、方法和通信设备 |
CN113901746B (zh) * | 2021-10-09 | 2024-06-18 | 北京大学 | 一种用于向量代数的硬件加速器的设计方法 |
CN114330656B (zh) * | 2021-12-24 | 2024-07-23 | 杭州菲数科技有限公司 | 一种卷积运算硬件加速器及数据处理方法 |
US20240220315A1 (en) * | 2022-12-30 | 2024-07-04 | Advanced Micro Devices, Inc. | Dynamic control of work scheduling |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108647773A (zh) * | 2018-04-20 | 2018-10-12 | 复旦大学 | 一种可重构卷积神经网络的硬件互连架构 |
CN108805266A (zh) * | 2018-05-21 | 2018-11-13 | 南京大学 | 一种可重构cnn高并发卷积加速器 |
CN109032781A (zh) * | 2018-07-13 | 2018-12-18 | 重庆邮电大学 | 一种卷积神经网络算法的fpga并行系统 |
CN109740731A (zh) * | 2018-12-15 | 2019-05-10 | 华南理工大学 | 一种自适应卷积层硬件加速器设计方法 |
CN109993297A (zh) * | 2019-04-02 | 2019-07-09 | 南京吉相传感成像技术研究院有限公司 | 一种负载均衡的稀疏卷积神经网络加速器及其加速方法 |
CN110516801A (zh) * | 2019-08-05 | 2019-11-29 | 西安交通大学 | 一种高吞吐率的动态可重构卷积神经网络加速器架构 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180046903A1 (en) * | 2016-08-12 | 2018-02-15 | DeePhi Technology Co., Ltd. | Deep processing unit (dpu) for implementing an artificial neural network (ann) |
CN110058883B (zh) * | 2019-03-14 | 2023-06-16 | 梁磊 | 一种基于opu的cnn加速方法及系统 |
-
2020
- 2020-05-22 CN CN202010442619.3A patent/CN111738433B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108647773A (zh) * | 2018-04-20 | 2018-10-12 | 复旦大学 | 一种可重构卷积神经网络的硬件互连架构 |
CN108805266A (zh) * | 2018-05-21 | 2018-11-13 | 南京大学 | 一种可重构cnn高并发卷积加速器 |
CN109032781A (zh) * | 2018-07-13 | 2018-12-18 | 重庆邮电大学 | 一种卷积神经网络算法的fpga并行系统 |
CN109740731A (zh) * | 2018-12-15 | 2019-05-10 | 华南理工大学 | 一种自适应卷积层硬件加速器设计方法 |
CN109993297A (zh) * | 2019-04-02 | 2019-07-09 | 南京吉相传感成像技术研究院有限公司 | 一种负载均衡的稀疏卷积神经网络加速器及其加速方法 |
CN110516801A (zh) * | 2019-08-05 | 2019-11-29 | 西安交通大学 | 一种高吞吐率的动态可重构卷积神经网络加速器架构 |
Non-Patent Citations (4)
Title |
---|
Yu-Hsin Chen等.Eyeriss: An Energy-Efficient Reconfigurable Accelerator for Deep Convolutional Neural Networks.《ISSCC2016》.2016,全文. * |
仇越 ; 马文涛 ; 柴志雷 ; .一种基于FPGA的卷积神经网络加速器设计与实现.微电子学与计算机.2018,(08),全文. * |
王春林 ; 谭克俊 ; .基于脉动阵列的卷积计算模块硬件设计.电子技术应用.2020,(01),全文. * |
陈怡然 ; 谢源 ; 宋凌皓 ; 陈凡 ; 唐天琪 ; .深度神经网络加速器体系结构概述.Engineering.2020,(03),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111738433A (zh) | 2020-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111738433B (zh) | 一种可重配置的卷积硬件加速器 | |
CN110458279B (zh) | 一种基于fpga的二值神经网络加速方法及系统 | |
US10691464B1 (en) | Systems and methods for virtually partitioning a machine perception and dense algorithm integrated circuit | |
US10943167B1 (en) | Restructuring a multi-dimensional array | |
Yin et al. | A high energy efficient reconfigurable hybrid neural network processor for deep learning applications | |
CN111898733B (zh) | 一种深度可分离卷积神经网络加速器架构 | |
US11775430B1 (en) | Memory access for multiple circuit components | |
EP3855367A1 (en) | Operation accelerator, processing method, and related device | |
KR101788829B1 (ko) | 콘볼루션 신경망 컴퓨팅 장치 | |
CN111667051A (zh) | 适用边缘设备的神经网络加速器及神经网络加速计算方法 | |
CN108170640B (zh) | 神经网络运算装置及应用其进行运算的方法 | |
CN104899182A (zh) | 一种支持可变分块的矩阵乘加速方法 | |
US11803508B2 (en) | Systems and methods for implementing a machine perception and dense algorithm integrated circuit and enabling a flowing propagation of data within the integrated circuit | |
US20220083857A1 (en) | Convolutional neural network operation method and device | |
CN117933327A (zh) | 处理装置、处理方法、芯片及电子装置 | |
CN111768458A (zh) | 一种基于卷积神经网络的稀疏图像处理方法 | |
Liu et al. | WinoCNN: Kernel sharing Winograd systolic array for efficient convolutional neural network acceleration on FPGAs | |
CN113837922B (zh) | 计算装置、数据处理方法及相关产品 | |
JP2022137247A (ja) | 複数の入力データセットのための処理 | |
CN111475461B (zh) | 面向ai应用的片上网络映射方法 | |
Benedetti et al. | A novel system architecture for real-time low-level vision | |
CN116090518A (zh) | 基于脉动运算阵列的特征图处理方法、装置以及存储介质 | |
CN115906930A (zh) | 一种神经网络加速方法、加速器、电子设备及存储介质 | |
CN113627587A (zh) | 一种多通道式卷积神经网络加速方法及装置 | |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |