CN110569970B - 一种应用于卷积神经网络中硬件加速器的数据传输方法 - Google Patents
一种应用于卷积神经网络中硬件加速器的数据传输方法 Download PDFInfo
- Publication number
- CN110569970B CN110569970B CN201910866944.XA CN201910866944A CN110569970B CN 110569970 B CN110569970 B CN 110569970B CN 201910866944 A CN201910866944 A CN 201910866944A CN 110569970 B CN110569970 B CN 110569970B
- Authority
- CN
- China
- Prior art keywords
- data
- ith layer
- address
- read
- layer
- 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
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/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
Abstract
本发明公开了一种应用于卷积神经网络中硬件加速器的数据传输方法,是通过动态随机存取存储器DDR3将数据流传输进入UI接口的读FIFO中,当FIFO中的输入数据剩余量到达阈值后,控制器通过片上网络将输入数据传输进入PE的存储中,PE中的计算模块将会根据计算过程读取存储中的数据量来进行计算,计算完成后,数据从计算结果缓存单元向编码模块传递并进行编码压缩,将数据发送进入UI接口中的写FIFO,最后传入动态随机存取存储器DDR3中。本发明能降低数据的存储以及读取功耗、数据的传输时间以及功耗、减少计算量、在降低计算功耗同时提高计算单元利用率并且减少存储空间的消耗。
Description
技术领域
本发明属于集成电路人工智能的硬件设计领域,具体的说是一种应用于卷积神经网络中硬件加速器的数据传输方法。
背景技术
近年来,智能设备迅速普及,“人工智能”掀起新的热潮。而作为人工智能领域的重要的一个方向,为了得到更高的识别精度,CNN的模型越来越大,数据量和计算量随之递增,计算的复杂性也在提升,这就为卷积神经网络硬件加速器的设计和发展带来了巨大的挑战。
卷积神经网络硬件加速器设计主要面临以下2个方面的挑战:1)超低功耗;2)超高性能。针对以上挑战,能效成为当前卷积神经网络硬件加速器设计的核心技术指标。而CPU和GPU工作需要很高的能耗,很难满足神经网络巨大的计算需求低能耗的需求;FPGA虽然具有较高的能效,但其受其成本、面积效率低、配置时间长等特点而并不适用于神经网络的设计平台。ASIC,专用集成电路芯片,设计时间短,面积小、功耗更低等特性使之成为了卷积神经网络加速器设计的重要的方法和手段。
在神经网络硬件化中,经过RELU激活函数后产生大量“0”数据,具有稀疏性;“0”数据在计算过程中,不会对结果产生任何影响,但是他需要大量的存储空间,读写功耗,消耗传输周期和计算周期。同时为了降低数据读取次数,采用数据复用的方式,目前多为输入复用、输出复用和权重复用。
MIT的Eyeriss采用行复用方法,采用单行权重复用方法以提高数据的使用次数,减少读写功耗。同时输入图片斜向加载进行PE中与对应的权重进行计算,每次仅计算几张输出特征图。但是该算法为了仅仅每次计算单张输出图片,而忽略了每一张输出图片需要加载大批量的输入图片;同时输入图片所含有的数据远远超过了权重的数据,因而权重复用导致更高的读取输入次数,导致功耗明显上升,而且该方法在计算的过程中耗费了很多的时间在“0”值的计算上面。
由多伦多大学以及哥伦比亚大学共同对寒武纪的DaDianNao[17]的结构做出调整之后可以通过输入数据以及偏移量来跳过输入数据中“0”值的计算,这种方法虽然在计算过程中可以节约很多计算周期,但是在数据存储以及传输上没有做很好的处理。
发明内容
本发明是为了解决上述现有技术存在的不足之处,提出一种应用于卷积神经网络中硬件加速器的数据传输方法,以期能对计算过程中的数据进行压缩,从而能降低数据的存储以及读取功耗、数据的传输时间以及功耗、减少计算量、在降低计算功耗同时提高计算单元利用率并且减少存储空间的消耗。
本发明为达到上述发明目的,采用如下技术方案:
本发明一种应用于卷积神经网络中硬件加速器的数据传输方法,所述卷积神经网络是包括I层卷积层和若干层池化层;其特点是,所述硬件加速器是由动态随机存取存储器DDR3、用户接口模块、主控器、片上网络以及卷积计算单元阵列组成;
所述用户接口模块由配置队列、地址生成器、读写控制单元、输入先入先出队列、输出先入先出队列;所述读写控制单元包含一个第一计数器;所述输入先入先出队是由输入编码先入先出队列rdbfifo、输入有效值先入先出队列rdififo、输入权重先入先出队列rdwfifo、输入地址先入先出队列rdafifo组成;所述输出先入先出队是由输出编码先入先出队列wrbfifo、输出有效值先入先出队列wrififo以及输出地址先入先出队列wrafifo构成;
所述主制器由参数配置单元、发送模块以及接收模块组成,所述发送模块由输入控制器、数据读取模块以及两个数据通道组成,所述输入控制器含有一个第二计数器;所述接收模块由输出控制器和片上暂存以及编码单元组成,所述输出控制器包含有一个ReLu激活函数;所述输出控制单元含有一个列计数器以及一个行计数器,所述编码单元中包含一个编码行计数信号以及一个有效值计数器;
所述卷积计算单元阵列由若干个卷积计算单元组成,每个卷积计算单元中包含n个乘法器、一个乘计数器、一个译码单元以及卷积先入先出队列,所述卷积先入先出队列包含卷积编码先入先出队列、卷积有效值先入先出队列、卷积权重先入先出队列以及卷积部分和先入先出队列;
所述数据传输方法是按如下步骤进行:
步骤1、所述用户接口模块中的配置队列接收并存储上位机发送过来的I层卷积计算的配置信息;
步骤2、初始化i=1;
步骤3、所述动态随机存取存储器DDR3接收所述上位机发送的开始信号时,同时存储所述上位机发送的第i层的写入数据,并在存储完所述写入数据后向所述用户接口模块的读写控制单元发送一个初始化完成信号;所述第i层的写入数据包括:第i层的N张输入图片的编码数据以及其有效值数据、第i层的权重数据、第i层的地址数据;
步骤4、所述硬件加速器在进行第i层卷积计算时,所述配置队列取出第i层的配置信息用于对所述读写控制单元、输入先入先出队列以及地址生成器进行参数配置,同时将第i层的配置信息发送给所述参数配置单元;所述第i层的配置信息包括:第i层的卷积核信息、第i层的池化信息、第i层的第i张输入图片的起始读取地址、第i层的输入图片信息和第i层的输出图片信息;
步骤5、所述参数配置单元对第i层的配置信息进行存储,并将第i层的卷积核信息以及第i层的输入图片信息传输给输入控制器;
步骤6、所述输入控制器接收并存储所述第i层卷积核信息以及第i层输入图片信息,并将所述第i层卷积核信息通过片上网络发送给相应的卷积计算单元用于存储,从而完成第i层卷积计算的配置;
步骤7、初始化n=1;
步骤8、所述读写控制单元根据所接收到的初始化完成信号,产生一个高电平的第i层的第n张读数据信号并分别传递给所述动态随机存取存储器DDR3和输入先入先出队列用于存储;
步骤9、述动态随机存取存储器DDR3所根据所述第i层的第n张读控制信号先将所述第i层的地址数据发送给所述输入地址先入先出队列rdafifo用于存储;
步骤10、所述读写控制单元从所述输入地址先入先出队列rdafifo中读取第i层的第n个地址数据作为第i层的第n张输入图片的末地址,并根据所述地址生成器中第i层的第n张输入图片的初始读取地址,获取动态随机存取存储器DDR3中第i层的第n张输入图片的编码数据并传递给所述输入编码先入先出队列rdbfifo用于存储,同时利用所述第一计数器对第i层的第n张输入图片的编码数据进行计数,得到第i层的编码计数值;
步骤11、所述读写控制单元控制所述地址生成器生成下一个读取地址,从而根据下一个读取地址继续读取所述第i层的第n张输入图片的编码数据,并利用所述第一计数器进行计数,直到所述第i层的编码计数等于第i层的第n张输入图片尺寸时,所述读写控制单元控制从动态随机存储器DDR3中读取第i层的第n张输入图片的有效值数据并存储所述输入有效值先入先出队列rdififo中,同时控制所述地址生成器生成下一个读取地址,直到所述地址生成器产生的当前地址等于第i层的第n张输入图片的末地址时,所述读写控制单元停止加载所述第i层的第n张输入图片的编码数据以及有效值数据,从而完成所述第i层的第n张输入图片的读取;
步骤12、所述读写控制单元将所述地址生成器生成的当前地址的下一地址作为第i层的第n+1张输入图片的初始读取地址;
步骤13、所述读写控制单元根据第i层的配置信息中的卷积核信息读取第i层的第n张输入图片对应的权重数据,并存入所述输入权重先入先出队列rdwfifo后,发送一个第i层第n次输入读取完成信号给所述输入控制器;
步骤14、所述输入控制器接收来所述第i层第n次输入读取完成信号,并根据第i层的输入图片信息以及卷积核信息从所述输入先入先出队列中读取第i层第n张输入图片对应的编码数据以及其有效值数据、权重数据并发送给所述片上网络;
步骤15、所述片上网络接收所述第i层第n张输入图片对应的编码数据以及其有效值数据、权重数据并发送给相应的卷积计算单元进行计算,得到第i层第n张输入图片所对应的M张部分和输出特征图并通过所述片上网络发送给所述片上暂存,同时产生一个第i层第n张输入图片的计算完成信号;
步骤16、所述片上暂存接收到所述第i层第n张输入图片所对应的M张特征图后,判断所述片上暂存中是否有数据,若有数据,则将所述片上暂存内的数据与所述第i层第n张输入图片所对应的M张部分和输出特征图相加后再存储,否则,直接存入片上暂存中;
步骤17、所述读写控制单元通过所述片上网络接收所述计算完成信号,并从所述输入地址先入先出队列rdafifo中读取第i层的第n+1个地址数据作为第i层的第n+1张输入图片的末地址;同时产生一个高电平的第i层的第n+1张读控制信号并分别传递给所述动态随机存取存储器DDR3和输入先入先出队列用于存储;
步骤18;将n+1赋值给n后,判断n>N是否成立,若成立,则表示得到第i层N张输入图片所对应的M张输出特征图,并执行步骤19;否则,返回步骤10;
步骤19、所述编码单元将有效值计数器初始化为0,所述输出控制器读取所述片上暂存中的第i层M张输出特征图分别输入所述ReLu激活函数中进行处理,得到第i层的M张激活特征图并存入片上暂存中;
步骤20、所述输出控制器根据参数配置中第i层的池化信息判断是否进行池化操作,若是,则执行步骤21,若否,执行步骤22;
步骤21、所述输出控制器将第i层的M张激活特征图按照第i层的池化信息中尺寸大小划分为若干个池化块,并将各个池化块中的最大值组成第i层的M张池化特征图存入片上暂存中;
步骤22、初始化r=1;
步骤23、所述编码单元读取片上暂存中的第i层第m张激活特征图或池化特征图的第r行数据,并按照从左到右的顺序一一遍历,判断遍历到的数据是否等于“0”,若等于0,则向输出编码先入先出队列wrbfifo中相应存入一个1bit的数据“0”;否则,向输出编码先入先出队列wrbfifo相应存入一个1bit的数据“1”,并且相应的非0值作为有效值存入输出有效值先入先出队列wrififo中,令所述有效值计数器加1;直到第r行遍历完成,从而将有效值计数器中的最终值存入输出编码先入先出队列wrbfifo中后清零;m=1,2,…M;
步骤24、将r+1赋值给r后,判断r>M×R是否成立,若成立,则表示第i层M张输出特征图全部编码完成,并得到第i层M张输出特征图的编码数据及其有效值,所述编码单元开始输出写操作,同时输出控制器向读写控制器发送一个第i层输出写信号,否则,返回步骤23;其中,R表示第m张输出特征图的总行数;
步骤25、初始化g=1;
步骤26、所述读写控制单元根据所述第i层的输出写信号,向所述动态随机存取存储器DDR3写入第i层第g张输出特征图的编码数据及其有效值,并在完成相应写入操作后,所述地址生成器产生第i层第g张输出特征图的末地址并存入输出地址先入先出队列wrafifo中;
步骤27、将g+1赋值给g,并判断g>M是否成立,若成立,则表示第i层的M张输出特征图的编码数据及其有效值全部存入所述动态随机存取存储器DDR3中并执行步骤28,否则,返回步骤26;
步骤28、所述输出地址先入先出队列wrafifo中所有末地址存入所述动态随机存取存储器DDR3中;
步骤29、将i+1赋值给i,并判断i>I是否成立,若成立,则表示所述硬件加速器内的I层卷积层和若干层池化层计算完成;否则,返回步骤4顺序执行。
与现有技术相比,本发明的有益效果在于:
1、本发明采用了非还原稀疏数据的编码方法对输出特征图进行压缩,对每行数据执行进行0/1编码,并记录每行非0数据个数,与0/1编码拼接在一起;同时保留了其中的非0数据,这样使得数据在传输的时间被大大缩减,且传输功耗也大大下降。
2、本发明在计算过程中,原输入图像在与权重进行卷积的计算过程中存在大量的稀疏“0”数据,而0乘累加的结果全都是0,对计算的结果不会有影响,故元计算中存在许多重复且无用的0计算,这不仅会浪费计算时间,而且还会增加功耗。但是经过本发明的译码电路之后,最终得到了每行图像压缩码的编码信息部分与非0数据,将这些数发往计算单元与权重进行乘累加。在计算单元中,该位置编码数据为0的位置,无需与权重进行乘累加,直接得到结果0,编码数据为1的位置再用相应的非0数据与权重进行计算。这样的计算方式相比于直接与原输入图像进行卷积计算可以减少很多计算时间的浪费以及降低很大的计算单元产生的功耗。
3、本发明在计算的过程中,加载下一次计算需要的数据,这样可以节省计算所需要的时间,提升数据传输的效率,而且因为卷积计算存在大量数据重复的情况,所以采用输入数据以及权重数据等数据的复用,可以将读取的输入以及权重数据同时传输给多个卷计算单元,从而减少了数据的加载量,降低了读取数据的功耗。
附图说明
图1为本发明卷积计算过程示意图;
图2为本发明整个硬件加速器的整体框图;
图3为本发明特征图在动态随机存储器中的存储情况示意图;
图4为本发明计算单元内部详细示意图;
图5为本发明压缩编码电路;
图6为本发明用户接口模块电路结构图;
图7为本发明配置链信息描述示意图;
图8为本发明数据压缩编码过程示意图。
具体实施方式
本实施例中,卷积神经网络是包括I层卷积层和若干层池化层,如图1所示,卷积层通过M组N×K×K的卷积核对N张像素为L×H的输入特征图按照S个像素点大小向右或向下滑动,从而生成M张像素为C×R的输出图片;M≥1,N≥1,L>1,H>1,K≥S≥1,C≥1,R≥1,min{L,H}>K>1;
如图2所示,卷积神经网络中硬件加速器是由动态随机存取存储器DDR3、用户接口模块、主控器、片上网络以及卷积计算单元阵列组成;
如图2所示,用户接口模块由配置队列、地址生成器、读写控制单元、输入先入先出队列、输出先入先出队列;读写控制单元包含一个第一计数器,用来在读写控制单元读取输入图片的编码数据以及有效值数据的时候对数据进行计数,以便区分编码数据以及有效值数据;输入先入先出队是由输入编码先入先出队列rdbfifo、输入有效值先入先出队列rdififo、输入权重先入先出队列rdwfifo、输入地址先入先出队列rdafifo组成;输出先入先出队是由输出编码先入先出队列wrbfifo、输出有效值先入先出队列wrififo以及输出地址先入先出队列wrafifo构成;
如图2所示,主制器由参数配置单元、发送模块以及接收模块组成,发送模块由输入控制器、数据读取模块以及两个数据通道组成,输入控制器含有一个第二计数器;接收模块由输出控制器和片上暂存以及编码单元组成,输出控制器包含有一个ReLu激活函数;输出控制单元含有一个列计数器以及一个行计数器,编码单元中包含一个编码行计数信号以及一个有效值计数器;
如图2所示,卷积计算单元阵列由若干个卷积计算单元组成,每个卷积计算单元中包含n个乘法器、一个乘计数器、一个译码单元以及卷积先入先出队列,卷积先入先出队列包含卷积编码先入先出队列、卷积有效值先入先出队列、卷积权重先入先出队列以及卷积部分和先入先出队列;
如图3所示,每一层的输入图片在动态随机存取存储器DDR3中都是将每一张输入特征图的编码数据以及有效值数据,存放在一起,然后再将每层的N张输入图片存在一起存储在动态随机存取存储器中,并且将每张输入图片的最后一个有效值对应的地址都取出并一起按照顺序存储在动态随机存取存储器中的地址存储区域中,当要读取输入图片的时候,先将地址存储区域中的数据取出,然后逐个取出,两个相邻的地址之间存储的就是一张输入图片的数据,每张输入图片的编码数据也是一个尺寸大小与输入图片尺寸大小相同,每个数据都是1bit的矩阵数据,而有效值数据则是一组数量不定的位宽与输入图片数据位宽相同的数组;
本实施例中,一种应用于卷积神经网络中硬件加速器的数据传输方法,是通过动态随机存取存储器DDR3将数据流传输进入UI接口的读FIFO中,其中图片地址、压缩码、压缩数据以及权重数据会分别传送到对应的FIFO中,加速器中的控制器会根据PE中的数据计算过程进行有序的读取FIFO中的输入数据,当FIFO中的输入数据剩余量到达阈值后将会重新启动读动态随机存取存储器DDR3的过程,控制器通过片上网络将输入数据传输进入PE的存储中,PE中的计算模块将会根据计算过程读取存储中的数据量来进行计算,计算完成后,数据从计算结果缓存单元向编码模块传递并进行编码压缩,将数据发送进入UI接口中的写FIFO,最后传入动态随机存取存储器DDR3中,具体的说,是按如下步骤进行:
步骤1、如图2所示,用户接口模块中的配置队列接收并存储上位机发送过来的I层卷积计算的配置信息;
步骤2、初始化i=1;
步骤3、用户接口模块中的输入先入先出队列分别接收上位机发送过来的第i层的第1部分的计算数据并进行存储,来达到提前加载计算数据,节省输入数据加载时间的目的,动态随机存取存储器DDR3接收上位机发送的开始信号时,同时存储上位机发送的第i层的写入数据,并在存储完写入数据后向用户接口模块的读写控制单元发送一个初始化完成信号;第i层的写入数据包括:第i层的N张输入图片的编码数据以及其有效值数据、第i层的权重数据、第i层的地址数据;
步骤4、硬件加速器在进行第i层卷积计算时,配置队列取出第i层的配置信息,其中的配置信息如图7中的配置链信息所示,并将其中的信息用于对读写控制单元、输入先入先出队列以及地址生成器进行参数配置,同时将第i层的配置信息发送给参数配置单元;第i层的配置信息包括:第i层的卷积核信息、第i层的池化信息(包括池化长度和池化使能)、第i层的第1张输入图片的起始读取地址、第i层的输入图片信息(包括输入大小和输入数量)和第i层的输出图片信息(包括输出大小和输出数量);
步骤5、参数配置单元对第i层的配置信息进行存储用于之后的输入数据传输以及输出数据传输,并将第i层的卷积核信息以及第i层的输入图片信息传输给输入控制器;
步骤6、输入控制器接收并存储第i层卷积核信息以及第i层输入图片信息,并将第i层卷积核信息通过片上网络发送给相应的卷积计算单元用于存储,从而完成第i层卷积计算的配置;
步骤7、初始化n=1;
步骤8、读写控制单元根据所接收到的初始化完成信号,产生一个高电平的第i层的第n张读数据信号并分别传递给动态随机存取存储器DDR3和输入先入先出队列用于存储;
步骤9、如图6所示,动态随机存取存储器DDR3根据第i层的第n张读控制信号先将第i层的地址数据发送给输入地址先入先出队列rdafifo,其中的地址数据包含动态随机存取存储器中本层所有输入图片的末地址;
步骤10、读写控制单元从输入地址先入先出队列rdafifo中读取第i层的第n个地址数据作为第i层的第n张输入图片的末地址,并根据地址生成器中第i层的第n张输入图片的初始读取地址,获取动态随机存取存储器DDR3中第i层的第n张输入图片的编码数据并传递给输入编码先入先出队列rdbfifo用于存储,同时利用第一计数器对第i层的第n张输入图片的编码数据进行计数,得到第i层的编码计数值;
步骤11、读写控制单元控制地址生成器生成下一个读取地址,从而根据下一个读取地址继续读取第i层的第n张输入图片的编码数据,并利用第一计数器进行计数,直到第i层的编码计数等于第i层的第n张输入图片尺寸时,表示已经将第i层第n张输入图片的编码信息都区完成了,接下来读取到的数据就是第i层第n张输入图片的有效值数据;读写控制单元控制从动态随机存储器DDR3中读取第i层的第n张输入图片的有效值数据并存储输入有效值先入先出队列rdififo中,同时控制地址生成器生成下一个读取地址,直到地址生成器产生的当前地址等于第i层的第n张输入图片的末地址时,读写控制单元停止加载第i层的第n张输入图片的编码数据以及有效值数据,从而完成第i层的第n张输入图片的读取;
步骤12、读写控制单元将地址生成器生成的当前地址的下一地址作为第i层的第n+1张输入图片的初始读取地址,用来下一次读取下一张输入图片;
步骤13、读写控制单元根据第i层的配置信息中的卷积核信息读取第i层的第n张输入图片对应的权重数据,并存入输入权重先入先出队列rdwfifo后,发送一个第i层第n次输入读取完成信号给输入控制器;
步骤14、输入控制器接收来第i层第n次输入读取完成信号,并根据第i层的输入图片信息以及卷积核信息从输入先入先出队列中读取第i层第n张输入图片对应的编码数据以及其有效值数据、权重数据并发送给片上网络;
步骤15、片上网络接收第i层第n张输入图片对应的编码数据以及其有效值数据、权重数据并发送给相应的卷积计算单元进行解码并计算,得到第i层第n张输入图片所对应的M张部分和输出特征图并通过片上网络发送给片上暂存,同时产生一个第i层第n张输入图片的计算完成信号;具体解码计算过程可以参考专利《一种应用于卷积神经网络的非还原稀疏数据编译码电路及其编译码方法》,图4为卷积计算单元内部详细示意图;
步骤16、片上暂存接收到第i层第n张输入图片所对应的M张特征图后,判断片上暂存中是否有数据,若有数据,则将片上暂存内的数据与第i层第n张输入图片所对应的M张部分和输出特征图相加后再存储,否则,直接存入片上暂存中;
步骤17、读写控制单元通过片上网络接收计算完成信号,并从输入地址先入先出队列rdafifo中读取第i层的第n+1个地址数据作为第i层的第n+1张输入图片的末地址;同时产生一个高电平的第i层的第n+1张读控制信号并分别传递给动态随机存取存储器DDR3和输入先入先出队列用于存储;
步骤18;将n+1赋值给n后,判断n>N是否成立,若成立,则表示得到第i层N张输入图片所对应的M张输出特征图,并执行步骤19;否则,返回步骤10;
步骤19、编码单元将有效值计数器初始化为0,输出控制器读取片上暂存中的第i层M张输出特征图分别输入ReLu激活函数中进行处理,得到第i层的M张激活特征图并存入片上暂存中,其中ReLu激活函数是将图片中的所有数据与0相比,若该数据大于0,则原数据大小不变,若该数据小于0,则原数据变为0;
步骤20、输出控制器根据参数配置中第i层的池化信息判断是否进行池化操作,若是,则执行步骤21,若否,执行步骤22;
步骤21、输出控制器将第i层的M张激活特征图按照第i层的池化信息中尺寸大小划分为若干个池化块,并将各个池化块中的最大值组成第i层的M张池化特征图存入片上暂存中;
步骤22、初始化r=1;
步骤23、编码单元读取片上暂存中的第i层第m张激活特征图或池化特征图的第r行数据,并按照从左到右的顺序一一遍历并对遍历到的数据进行编码,遍历编码的过程如图8所示,判断遍历到的数据是否等于“0”,若等于0,则向输出编码先入先出队列wrbfifo中相应存入一个1bit的数据“0”;否则,向输出编码先入先出队列wrbfifo相应存入一个1bit的数据“1”,并且相应的非0值作为有效值存入输出有效值先入先出队列wrififo中,令有效值计数器加1;直到第r行遍历完成,从而将有效值计数器中的最终值存入输出编码先入先出队列wrbfifo中后清零,具体编码电路如图5所示;m=1,2,…M;
步骤24、将r+1赋值给r后,判断r>M×R是否成立,若成立,则表示第i层M张输出特征图全部编码完成,并得到第i层M张输出特征图的编码数据及其有效值,编码单元开始输出写操作,同时输出控制器向读写控制器发送一个第i层输出写信号,否则,返回步骤23;其中,R表示第m张输出特征图的总行数;
步骤25、初始化g=1;
步骤26、读写控制单元根据第i层的输出写信号,向动态随机存取存储器DDR3写入第i层第g张输出特征图的编码数据及其有效值,并在完成相应写入操作后,地址生成器产生第i层第g张输出特征图的末地址并存入输出地址先入先出队列wrafifo中;
步骤28、初始化e=1;
步骤29、读写控制单元向动态随机存取存储器DDR3写入第i层第g张输出特征图的编码数据时,根据第i层的配置信息中第i层的输出图片信息中的输出图片尺寸,从输出编码先入先出队列wrbfifo中取出第e行编码数据并按照输出图片尺寸补“0”,得到第e行填充数据并存入动态随机存取存储器DDR3中,令编码行计数信号加1;比如第一层卷积层的输出经过池化之后,编码信息为一个27×27的每个元素大小为1bit的矩阵,其中的一行数据为27个1bit的数据,这样线将这27个数据拼接起来之后,再在后面拼接37个1bit的0之后组成一个64bit的数据;
步骤30、若编码行计数信号等于阈值,则将之前得到的8个64bits的数据拼接成一个512bits的数据,将这个512bits的数据传输进入动态随机存储器DDR3中,并将这个编码行计数信号重新置0;
步骤31、读写控制单元重复执行步骤29~步骤30,剩余不足8行数据为止,此时读写控制单元先将剩余几行的数据按照之前这样一行拼成64bits的数,然后剩下的不够就全部补0之后凑成一个512bits的数,并开始向动态随机存取存储器写入第i层第g张输出特征图的有效值数据;
步骤32、读写控制器开始传输有效值数据的时候,先将4个16bits的有效值数据拼接成一个64bits的数据,然后再由8个这样的数据拼凑成一个512bits的数据;
步骤33、读写控制器将上述生成的512bits的数据传输给动态随机存取存储器中,然后继续读取有效值进行取值拼凑,当剩余有效值数据不够拼凑成一个512bits的数据的时候,先将剩余数据全部拼凑起来,然后再在后面进行补0之后也拼接成一个512bits的数据,也继续传输给动态随机存储器;
步骤34、当读写控制器完成第i层第g张输出特征图的所有编码以及有效值数据的传输之后,将此时的地址生成器产生的地址数据保存进入输出地址先入先出队列中;
步骤35、读写控制单元继续读取第i层第g+1张输出特征图的编码数据以及有效值数据;
步骤36、将g+1赋值给g,并判断g>M是否成立,若成立,则表示第i层的M张输出特征图的编码数据及其有效值全部存入动态随机存取存储器DDR3中并执行步骤37,否则,返回步骤26;
步骤37、输出地址先入先出队列wrafifo中所有末地址存入动态随机存取存储器DDR3中;
步骤38、将i+1赋值给i,并判断i>I是否成立,若成立,则表示硬件加速器内的I层卷积层和若干层池化层计算完成;否则,返回步骤4顺序执行。
Claims (1)
1.一种应用于卷积神经网络中硬件加速器的数据传输方法,所述卷积神经网络是包括I层卷积层和若干层池化层;其特征是,所述硬件加速器是由动态随机存取存储器DDR3、用户接口模块、主控器、片上网络以及卷积计算单元阵列组成;
所述用户接口模块由配置队列、地址生成器、读写控制单元、输入先入先出队列、输出先入先出队列;所述读写控制单元包含一个第一计数器;所述输入先入先出队是由输入编码先入先出队列rdbfifo、输入有效值先入先出队列rdififo、输入权重先入先出队列rdwfifo、输入地址先入先出队列rdafifo组成;所述输出先入先出队是由输出编码先入先出队列wrbfifo、输出有效值先入先出队列wrififo以及输出地址先入先出队列wrafifo构成;
所述主控器由参数配置单元、发送模块以及接收模块组成,所述发送模块由输入控制器、数据读取模块以及两个数据通道组成,所述输入控制器含有一个第二计数器;所述接收模块由输出控制器和片上暂存以及编码单元组成,所述输出控制器包含有一个ReLu激活函数;所述输出控制单元含有一个列计数器以及一个行计数器,所述编码单元中包含一个编码行计数信号以及一个有效值计数器;
所述卷积计算单元阵列由若干个卷积计算单元组成,每个卷积计算单元中包含n个乘法器、一个乘计数器、一个译码单元以及卷积先入先出队列,所述卷积先入先出队列包含卷积编码先入先出队列、卷积有效值先入先出队列、卷积权重先入先出队列以及卷积部分和先入先出队列;
所述数据传输方法是按如下步骤进行:
步骤1、所述用户接口模块中的配置队列接收并存储上位机发送过来的I层卷积计算的配置信息;
步骤2、初始化i=1;
步骤3、所述动态随机存取存储器DDR3接收所述上位机发送的开始信号时,同时存储所述上位机发送的第i层的写入数据,并在存储完所述写入数据后向所述用户接口模块的读写控制单元发送一个初始化完成信号;所述第i层的写入数据包括:第i层的N张输入图片的编码数据以及其有效值数据、第i层的权重数据、第i层的地址数据;
步骤4、所述硬件加速器在进行第i层卷积计算时,所述配置队列取出第i层的配置信息用于对所述读写控制单元、输入先入先出队列以及地址生成器进行参数配置,同时将第i层的配置信息发送给所述参数配置单元;所述第i层的配置信息包括:第i层的卷积核信息、第i层的池化信息、第i层的第i张输入图片的起始读取地址、第i层的输入图片信息和第i层的输出图片信息;
步骤5、所述参数配置单元对第i层的配置信息进行存储,并将第i层的卷积核信息以及第i层的输入图片信息传输给输入控制器;
步骤6、所述输入控制器接收并存储所述第i层卷积核信息以及第i层输入图片信息,并将所述第i层卷积核信息通过片上网络发送给相应的卷积计算单元用于存储,从而完成第i层卷积计算的配置;
步骤7、初始化n=1;
步骤8、所述读写控制单元根据所接收到的初始化完成信号,产生一个高电平的第i层的第n张读数据信号并分别传递给所述动态随机存取存储器DDR3和输入先入先出队列用于存储;
步骤9、述动态随机存取存储器DDR3所根据所述第i层的第n张读控制信号先将所述第i层的地址数据发送给所述输入地址先入先出队列rdafifo用于存储;
步骤10、所述读写控制单元从所述输入地址先入先出队列rdafifo中读取第i层的第n个地址数据作为第i层的第n张输入图片的末地址,并根据所述地址生成器中第i层的第n张输入图片的初始读取地址,获取动态随机存取存储器DDR3中第i层的第n张输入图片的编码数据并传递给所述输入编码先入先出队列rdbfifo用于存储,同时利用所述第一计数器对第i层的第n张输入图片的编码数据进行计数,得到第i层的编码计数值;
步骤11、所述读写控制单元控制所述地址生成器生成下一个读取地址,从而根据下一个读取地址继续读取所述第i层的第n张输入图片的编码数据,并利用所述第一计数器进行计数,直到所述第i层的编码计数等于第i层的第n张输入图片尺寸时,所述读写控制单元控制从动态随机存储器DDR3中读取第i层的第n张输入图片的有效值数据并存储所述输入有效值先入先出队列rdififo中,同时控制所述地址生成器生成下一个读取地址,直到所述地址生成器产生的当前地址等于第i层的第n张输入图片的末地址时,所述读写控制单元停止加载所述第i层的第n张输入图片的编码数据以及有效值数据,从而完成所述第i层的第n张输入图片的读取;
步骤12、所述读写控制单元将所述地址生成器生成的当前地址的下一地址作为第i层的第n+1张输入图片的初始读取地址;
步骤13、所述读写控制单元根据第i层的配置信息中的卷积核信息读取第i层的第n张输入图片对应的权重数据,并存入所述输入权重先入先出队列rdwfifo后,发送一个第i层第n次输入读取完成信号给所述输入控制器;
步骤14、所述输入控制器接收来所述第i层第n次输入读取完成信号,并根据第i层的输入图片信息以及卷积核信息从所述输入先入先出队列中读取第i层第n张输入图片对应的编码数据以及其有效值数据、权重数据并发送给所述片上网络;
步骤15、所述片上网络接收所述第i层第n张输入图片对应的编码数据以及其有效值数据、权重数据并发送给相应的卷积计算单元进行计算,得到第i层第n张输入图片所对应的M张部分和输出特征图并通过所述片上网络发送给所述片上暂存,同时产生一个第i层第n张输入图片的计算完成信号;
步骤16、所述片上暂存接收到所述第i层第n张输入图片所对应的M张特征图后,判断所述片上暂存中是否有数据,若有数据,则将所述片上暂存内的数据与所述第i层第n张输入图片所对应的M张部分和输出特征图相加后再存储,否则,直接存入片上暂存中;
步骤17、所述读写控制单元通过所述片上网络接收所述计算完成信号,并从所述输入地址先入先出队列rdafifo中读取第i层的第n+1个地址数据作为第i层的第n+1张输入图片的末地址;同时产生一个高电平的第i层的第n+1张读控制信号并分别传递给所述动态随机存取存储器DDR3和输入先入先出队列用于存储;
步骤18;将n+1赋值给n后,判断n>N是否成立,若成立,则表示得到第i层N张输入图片所对应的M张输出特征图,并执行步骤19;否则,返回步骤10;
步骤19、所述编码单元将有效值计数器初始化为0,所述输出控制器读取所述片上暂存中的第i层M张输出特征图分别输入所述ReLu激活函数中进行处理,得到第i层的M张激活特征图并存入片上暂存中;
步骤20、所述输出控制器根据参数配置中第i层的池化信息判断是否进行池化操作,若是,则执行步骤21,若否,执行步骤22;
步骤21、所述输出控制器将第i层的M张激活特征图按照第i层的池化信息中尺寸大小划分为若干个池化块,并将各个池化块中的最大值组成第i层的M张池化特征图存入片上暂存中;
步骤22、初始化r=1;
步骤23、所述编码单元读取片上暂存中的第i层第m张激活特征图或池化特征图的第r行数据,并按照从左到右的顺序一一遍历,判断遍历到的数据是否等于“0”,若等于0,则向输出编码先入先出队列wrbfifo中相应存入一个1bit的数据“0”;否则,向输出编码先入先出队列wrbfifo相应存入一个1bit的数据“1”,并且相应的非0值作为有效值存入输出有效值先入先出队列wrififo中,令所述有效值计数器加1;直到第r行遍历完成,从而将有效值计数器中的最终值存入输出编码先入先出队列wrbfifo中后清零;m=1,2,…M;
步骤24、将r+1赋值给r后,判断r>M×R是否成立,若成立,则表示第i层M张输出特征图全部编码完成,并得到第i层M张输出特征图的编码数据及其有效值,所述编码单元开始输出写操作,同时输出控制器向读写控制器发送一个第i层输出写信号,否则,返回步骤23;其中,R表示第m张输出特征图的总行数;
步骤25、初始化g=1;
步骤26、所述读写控制单元根据所述第i层的输出写信号,向所述动态随机存取存储器DDR3写入第i层第g张输出特征图的编码数据及其有效值,并在完成相应写入操作后,所述地址生成器产生第i层第g张输出特征图的末地址并存入输出地址先入先出队列wrafifo中;
步骤27、将g+1赋值给g,并判断g>M是否成立,若成立,则表示第i层的M张输出特征图的编码数据及其有效值全部存入所述动态随机存取存储器DDR3中并执行步骤28,否则,返回步骤26;
步骤28、所述输出地址先入先出队列wrafifo中所有末地址存入所述动态随机存取存储器DDR3中;
步骤29、将i+1赋值给i,并判断i>I是否成立,若成立,则表示所述硬件加速器内的I层卷积层和若干层池化层计算完成;否则,返回步骤4顺序执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910866944.XA CN110569970B (zh) | 2019-09-12 | 2019-09-12 | 一种应用于卷积神经网络中硬件加速器的数据传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910866944.XA CN110569970B (zh) | 2019-09-12 | 2019-09-12 | 一种应用于卷积神经网络中硬件加速器的数据传输方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110569970A CN110569970A (zh) | 2019-12-13 |
CN110569970B true CN110569970B (zh) | 2022-03-15 |
Family
ID=68779863
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910866944.XA Active CN110569970B (zh) | 2019-09-12 | 2019-09-12 | 一种应用于卷积神经网络中硬件加速器的数据传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110569970B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112116071A (zh) * | 2020-09-07 | 2020-12-22 | 地平线(上海)人工智能技术有限公司 | 神经网络计算方法、装置、可读存储介质以及电子设备 |
FR3124636B1 (fr) | 2021-06-25 | 2024-04-26 | Commissariat Energie Atomique | Circuit de mémorisation de données parcimonieuses |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106447034A (zh) * | 2016-10-27 | 2017-02-22 | 中国科学院计算技术研究所 | 一种基于数据压缩的神经网络处理器、设计方法、芯片 |
CN106875012A (zh) * | 2017-02-09 | 2017-06-20 | 武汉魅瞳科技有限公司 | 一种基于fpga的深度卷积神经网络的流水化加速系统 |
CN107679620A (zh) * | 2017-04-19 | 2018-02-09 | 北京深鉴科技有限公司 | 人工神经网络处理装置 |
CN107862650A (zh) * | 2017-11-29 | 2018-03-30 | 中科亿海微电子科技(苏州)有限公司 | 加速计算二维图像cnn卷积的方法 |
CN108197705A (zh) * | 2017-12-29 | 2018-06-22 | 国民技术股份有限公司 | 卷积神经网络硬件加速装置及卷积计算方法及存储介质 |
CN109104197A (zh) * | 2018-11-12 | 2018-12-28 | 合肥工业大学 | 应用于卷积神经网络的非还原稀疏数据的编译码电路及其编译码方法 |
CN109284817A (zh) * | 2018-08-31 | 2019-01-29 | 中国科学院上海高等研究院 | 深度可分离卷积神经网络处理架构/方法/系统及介质 |
CN109409518A (zh) * | 2018-10-11 | 2019-03-01 | 北京旷视科技有限公司 | 神经网络模型处理方法、装置及终端 |
CN110050267A (zh) * | 2016-12-09 | 2019-07-23 | 北京地平线信息技术有限公司 | 用于数据管理的系统和方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8458635B2 (en) * | 2009-12-04 | 2013-06-04 | Synopsys, Inc. | Convolution computation for many-core processor architectures |
US11373266B2 (en) * | 2017-05-05 | 2022-06-28 | Intel Corporation | Data parallelism and halo exchange for distributed machine learning |
US11055604B2 (en) * | 2017-09-12 | 2021-07-06 | Intel Corporation | Per kernel Kmeans compression for neural networks |
-
2019
- 2019-09-12 CN CN201910866944.XA patent/CN110569970B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106447034A (zh) * | 2016-10-27 | 2017-02-22 | 中国科学院计算技术研究所 | 一种基于数据压缩的神经网络处理器、设计方法、芯片 |
CN110050267A (zh) * | 2016-12-09 | 2019-07-23 | 北京地平线信息技术有限公司 | 用于数据管理的系统和方法 |
CN106875012A (zh) * | 2017-02-09 | 2017-06-20 | 武汉魅瞳科技有限公司 | 一种基于fpga的深度卷积神经网络的流水化加速系统 |
CN107679620A (zh) * | 2017-04-19 | 2018-02-09 | 北京深鉴科技有限公司 | 人工神经网络处理装置 |
CN107862650A (zh) * | 2017-11-29 | 2018-03-30 | 中科亿海微电子科技(苏州)有限公司 | 加速计算二维图像cnn卷积的方法 |
CN108197705A (zh) * | 2017-12-29 | 2018-06-22 | 国民技术股份有限公司 | 卷积神经网络硬件加速装置及卷积计算方法及存储介质 |
CN109284817A (zh) * | 2018-08-31 | 2019-01-29 | 中国科学院上海高等研究院 | 深度可分离卷积神经网络处理架构/方法/系统及介质 |
CN109409518A (zh) * | 2018-10-11 | 2019-03-01 | 北京旷视科技有限公司 | 神经网络模型处理方法、装置及终端 |
CN109104197A (zh) * | 2018-11-12 | 2018-12-28 | 合肥工业大学 | 应用于卷积神经网络的非还原稀疏数据的编译码电路及其编译码方法 |
Non-Patent Citations (4)
Title |
---|
Hardware Accelerator of Convolution with Exponential Function for Image Processing Applications;Ivan Panchenko 等;《International Conference on Graphic and Image Processing》;20151231;第1-7页 * |
一种基于FPGA的卷积神经网络加速器设计与实现;仇越 等;《微电子学与计算机》;20180831;第35卷(第8期);第68-72、77页 * |
一种基于可编程逻辑器件的卷积神经网络协处理器设计;杨一晨 等;《西安交通大学学报》;20180731;第52卷(第7期);第153-159页 * |
基于异构多核可编程系统的大点FFT卷积设计与实现;张多利 等;《电子技术应用》;20171231;第43卷(第3期);第16-20页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110569970A (zh) | 2019-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11449576B2 (en) | Convolution operation processing method and related product | |
CN109104197B (zh) | 应用于卷积神经网络的非还原稀疏数据的编译码电路及其编译码方法 | |
CN109919311B (zh) | 生成指令序列的方法、执行神经网络运算的方法和装置 | |
US10938413B2 (en) | Processing core data compression and storage system | |
CN111382867B (zh) | 神经网络压缩的方法、数据处理的方法及相关装置 | |
CN103229180B (zh) | 利用优化的地球模型表示提高计算效率的系统和方法 | |
WO2022037257A1 (zh) | 卷积计算引擎、人工智能芯片以及数据处理方法 | |
CN110569970B (zh) | 一种应用于卷积神经网络中硬件加速器的数据传输方法 | |
CN111796796B (zh) | 基于稀疏矩阵乘法的fpga存储方法、计算方法、模块和fpga板 | |
CN113051216B (zh) | 一种基于FPGA加速的MobileNet-SSD目标检测装置及方法 | |
CN109840585B (zh) | 一种面向稀疏二维卷积的运算方法和系统 | |
CN111768458A (zh) | 一种基于卷积神经网络的稀疏图像处理方法 | |
CN113705775A (zh) | 一种神经网络的剪枝方法、装置、设备及存储介质 | |
CN114995782B (zh) | 数据处理方法、装置、设备和可读存储介质 | |
CN111553471A (zh) | 一种数据分析处理方法及装置 | |
CN111105007A (zh) | 用于目标检测的深度卷积神经网络的压缩加速方法 | |
Shahshahani et al. | Memory optimization techniques for fpga based cnn implementations | |
CN111240746A (zh) | 一种浮点数据反量化及量化的方法和设备 | |
CN109508782B (zh) | 基于神经网络深度学习的加速电路和方法 | |
CN112488287A (zh) | 卷积神经网络压缩方法、系统、设备及介质 | |
CN111008691A (zh) | 一种权值和激活值都二值化的卷积神经网络加速器架构 | |
CN113497627A (zh) | 一种数据压缩和解压缩方法、装置及系统 | |
KR20210136476A (ko) | 쿼드 트리 방법의 파라미터들을 이용하여 압축하는 장치 및 방법 | |
US20210224632A1 (en) | Methods, devices, chips, electronic apparatuses, and storage media for processing data | |
CN110490312B (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 |