本发明专利技术公开了一种应用于卷积神经网络中硬件加速器的数据传输方法,是通过动态随机存取存储器DDR3将数据流传输进入UI接口的读FIFO中,当FIFO中的输入数据剩余量到达阈值后,控制器通过片上网络将输入数据传输进入PE的存储中,PE中的计算模块将会根据计算过程读取存储中的数据量来进行计算,计算完成后,数据从计算结果缓存单元向编码模块传递并进行编码压缩,将数据发送进入UI接口中的写FIFO,最后传入动态随机存取存储器DDR3中。本发明专利技术能降低数据的存储以及读取功耗、数据的传输时间以及功耗、减少计算量、在降低计算功耗同时提高计算单元利用率并且减少存储空间的消耗。
A data transmission method for hardware accelerator in convolutional neural network
【技术实现步骤摘要】
一种应用于卷积神经网络中硬件加速器的数据传输方法
本专利技术属于集成电路人工智能的硬件设计领域,具体的说是一种应用于卷积神经网络中硬件加速器的数据传输方法。
技术介绍
近年来,智能设备迅速普及,“人工智能”掀起新的热潮。而作为人工智能领域的重要的一个方向,为了得到更高的识别精度,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、所述读写控制单元将所述地本文档来自技高网...
【技术保护点】
1.一种应用于卷积神经网络中硬件加速器的数据传输方法,所述卷积神经网络是包括I层卷积层和若干层池化层;其特征是,所述硬件加速器是由动态随机存取存储器DDR3、用户接口模块、主控器、片上网络以及卷积计算单元阵列组成;/n所述用户接口模块由配置队列、地址生成器、读写控制单元、输入先入先出队列、输出先入先出队列;所述读写控制单元包含一个第一计数器;所述输入先入先出队是由输入编码先入先出队列rdbfifo、输入有效值先入先出队列rdififo、输入权重先入先出队列rdwfifo、输入地址先入先出队列rdafifo组成;所述输出先入先出队是由输出编码先入先出队列wrbfifo、输出有效值先入先出队列wrififo以及输出地址先入先出队列wrafifo构成;/n所述主控制器由参数配置单元、发送模块以及接收模块组成,所述发送模块由输入控制器、数据读取模块以及两个数据通道组成,所述输入控制器含有一个第二计数器;所述接收模块由输出控制器和片上暂存以及编码单元组成,所述输出控制器包含有一个ReLu激活函数;所述输出控制单元含有一个列计数器以及一个行计数器,所述编码单元中包含一个编码行计数信号以及一个有效值计数器;/n所述卷积计算单元阵列由若干个卷积计算单元组成,每个卷积计算单元中包含n个乘法器、一个乘计数器、一个译码单元以及卷积先入先出队列,所述卷积先入先出队列包含卷积编码先入先出队列、卷积有效值先入先出队列、卷积权重先入先出队列以及卷积部分和先入先出队列;/n所述数据传输方法是按如下步骤进行:/n步骤1、所述用户接口模块中的配置队列接收并存储上位机发送过来的I层卷积计算的配置信息;/n步骤2、初始化i=1;/n步骤3、所述动态随机存取存储器DDR3接收所述上位机发送的开始信号时,同时存储所述上位机发送的第i层的写入数据,并在存储完所述写入数据后向所述用户接口模块的读写控制单元发送一个初始化完成信号;所述第i层的写入数据包括:第i层的N张输入图片的编码数据以及其有效值数据、第i层的权重数据、第i层的地址数据;/n步骤4、所述硬件加速器在进行第i层卷积计算时,所述配置队列取出第i层的配置信息用于对所述读写控制单元、输入先入先出队列以及地址生成器进行参数配置,同时将第i层的配置信息发送给所述参数配置单元;所述第i层的配置信息包括:第i层的卷积核信息、第i层的池化信息、第i层的第i张输入图片的起始读取地址、第i层的输入图片信息和第i层的输出图片信息;/n步骤5、所述参数配置单元对第i层的配置信息进行存储,并将第i层的卷积核信息以及第i层的输入图片信息传输给输入控制器;/n步骤6、所述输入控制器接收并存储所述第i层卷积核信息以及第i层输入图片信息,并将所述第i层卷积核信息通过片上网络发送给相应的卷积计算单元用于存储,从而完成第i层卷积计算的配置;/n步骤7、初始化n=1;/n步骤8、所述读写控制单元根据所接收到的初始化完成信号,产生一个高电平的第i层的第n张读数据信号并分别传递给所述动态随机存取存储器DDR3和输入先入先出队列用于存储;/n步骤9、述动态随机存取存储器DDR3所根据所述第i层的第n张读控制信号先将所述第i层的地址数据发送给所述输入地址先入先出队列rdafifo用于存储;/n步骤10、所述读写控制单元从所述输入地址先入先出队列rdafifo中读取第i层的第n个地址数据作为第i层的第n张输入图片的末地址,并根据所述地址生成器中第i层的第n张输入图片的初始读取地址,获取动态随机存取存储器DDR3中第i层的第n张输入图片的编码数据并传递给所述输入编码先入先出队列rdbfifo用于存储,同时利用所述第一计数器对第i层的第n张输入图片的编码数据进行计数,得到第i层的编码计数值;/n步骤11、所述读写控制单元控制所述地址生成器生成下一个读取地址,从而根据下一个读取地址继续读取所述第i层的第n张输入图片的编码数据,并利用所述第一计数器进行计数,直到所述第i层的编码计数等于第i层的第n张输入图片尺寸时,所述读写控制单元控制从动态随机存储器DDR3中读取第i层的第n张输入图片的有效值数据并存储所述输入有效值先入先出队列rdififo中,同时控制所述地址生成器生成下一个读取地址,直到所述地址生成器产生的当前地址等于第i层的第n张输入图片的末地址时,所述读写控制单元停止加载所述第i层的第n张输入图片的编码数据以及有效值数据,从而完成所述第i层的第n张输入图片的读取;/n步骤12、所述读写控制单元将所述地址生成器生成的当前地址的下一地址作为第i层的第n+1张输入图片的初始读取地址;/n步骤13、所述读写控制单元根据第i层的配置信息中的卷积核信息读取第i层的第n张输入图片对应的权重数据,并存入所述输入权重先入先出队列rdwfifo后,发送一个第i层第n次输入读取完成...
【技术特征摘要】
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张输入...
【专利技术属性】
技术研发人员:杜高明,陈邦溢,任宇翔,张多利,宋宇鲲,尹勇生,
申请(专利权)人:合肥工业大学,
类型:发明
国别省市:安徽;34
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。