一种基于深度学习芯片的数据存储优化方法和装置与流程

文档序号:15589339发布日期:2018-10-02 18:45阅读:246来源:国知局

本发明涉及计算机技术领域,特别涉及一种基于深度学习芯片的数据存储优化方法和装置。



背景技术:

随着人工智能产业的兴起,深度学习芯片也在快速发展。当前,深度学习芯片的最大问题之一就是存储空间占用大,具体是由于深度学习网络层次数量众多,而运算硬件资源有限,运算电路无法一次性全部运算完所有的结果,因而只能将运算中间结果存储到外存中,例如将每个神经网络层之间的数据甚至是一个大网络层内部的中间数据存在至外存中,这就导致深度学习芯片的数据吞吐量和存储空间占用量十分庞大。如果能从深度学习的特性出发,进一步的降低深度学习人工智能芯片的存储带宽和存储空间消耗,这将是非常有意义的一项研究内容。



技术实现要素:

为此,需要提供一种基于深度学习芯片的数据存储优化的技术方案,用以解决深度学习芯片在进行神经网络运算时存储带宽大、存储空间消耗大等问题。

为实现上述目的,发明人提供了一种基于深度学习芯片的数据存储优化装置,所述装置包括主存单元、特征数据读取单元、特征数据解压单元、特征数据缓存单元、卷积核读取单元、卷积核缓存单元、卷积运算单元、激活函数运算单元、非零数据统计单元、数据压缩单元、数据回写单元;

所述主存单元分别与特征数据读取单元、卷积核读取单元连接,所述特征数据读取单元与特征数据解压单元连接,所述特征数据解压单元与特征数据缓存单元连接,所述特征数据缓存单元与卷积运算单元连接;所述卷积核读取单元与卷积核缓存单元连接,所述卷积核缓存单元与卷积运算单元连接;

所述卷积运算单元与激活函数运算单元连接,所述激活函数运算单元与非零数据统计单元连接,所述非零数据统计单元与数据压缩单元连接,所述数据压缩单元与数据回写单元连接,所述数据回写单元与主存单元连接;

所述主存单元用于存储第一特征矩阵数据以及各个神经网络子层的卷积核数据;

所述特征数据读取单元用于从主存单元读取第一特征矩阵数据,并将其存储于特征数据缓存单元中;所述卷积核读取单元用于从主存单元读取当前神经网络子层对应的卷积核数据,并将其存储于卷积核缓存单元中;

所述卷积运算单元用于获取卷积核缓存单元中的卷积核数据以及特征数据缓存单元中的第一特征矩阵数据进行卷积运算,得到卷积特征数据,并将卷积特征数据传输给激活函数运算单元;

所述激活函数运算单元用于对卷积特征数据进行激活函数运算,得到第二特征矩阵数据;

所述非零数据统计单元用于统计第二特征矩阵数据中非零数据,所述特征数据压缩单元用于根据所有非零数据在整个第二特征矩阵数据占比情况,对第二特征数据进行压缩处理,得到压缩数据;

所述反向回写单元用于将压缩数据回写至主存单元中;当前神经网络子层的压缩数据为下一层神经网络子层的第一特征矩阵数据对应的压缩数据,所述特征数据解压单元用于对特征数据读取单元读取的压缩数据进行解压数据,并将解压得到的第一特征矩阵数据存储至特征数据缓存单元中。

进一步地,所述装置还包括非零比例阈值存储单元,所述非零比例阈值存储单元与特征数据压缩单元连接,用于存储非零比例阈值;

所述特征数据压缩单元用于判断非零数据统计单元提取出的非零数据在整个第二特征矩阵数据占比是否大于非零比例阈值,若是则提取出非零数据并进行压缩处理,得到压缩数据;否则不提取非零数据,直接对第二特征矩阵数据进行压缩处理,得到压缩数据。

进一步地,当特征数据压缩单元判定非零数据统计单元提取出的非零数据在整个第二特征矩阵数据占比大于非零比例阈值时,得到的压缩数据包括第一包头标识、各个非零数据以及每个非零数据在第二特征矩阵数据的位置信息,每个非零数据与其对应的位置信息对应存储;

当特征数据压缩单元判定非零数据统计单元提取出的非零数据在整个第二特征矩阵数据占比不大于非零比例阈值时,得到的压缩数据包括第二包头标识和各个第二特征数据,所述第二特征数据包括非零数据和零数据,各个第二特征数据根据其在第二特征矩阵数据中的位置信息对应存储。

进一步地,所述非零数据统计单元包括比较器、计数器和存储器,所述比较器分别与计数器、存储器连接,所述存储器用于存储零值;

所述比较器用于将第二特征矩阵数据中的各个特征数据与零值进行比较,当比较器判定当前特征数据的数值不为零值时,则计算器值加1;

当所有第二特征矩阵数据中的特征数据全部比较完成后,非零数据统计单元将当前计数器的值传输给特征数据压缩单元。

发明人还提供了一种基于深度学习芯片的数据存储优化方法,所述方法应用于基于深度学习芯片的数据存储优化装置,所述装置包括主存单元、特征数据读取单元、特征数据解压单元、特征数据缓存单元、卷积核读取单元、卷积核缓存单元、卷积运算单元、激活函数运算单元、非零数据统计单元、数据压缩单元、数据回写单元;

所述主存单元分别与特征数据读取单元、卷积核读取单元连接,所述特征数据读取单元与特征数据解压单元连接,所述特征数据解压单元与特征数据缓存单元连接,所述特征数据缓存单元与卷积运算单元连接;所述卷积核读取单元与卷积核缓存单元连接,所述卷积核缓存单元与卷积运算单元连接;

所述卷积运算单元与激活函数运算单元连接,所述激活函数运算单元与非零数据统计单元连接,所述非零数据统计单元与数据压缩单元连接,所述数据压缩单元与数据回写单元连接,所述数据回写单元与主存单元连接;

所述方法包括以下步骤:

主存单元存储第一特征矩阵数据以及各个神经网络子层的卷积核数据;

特征数据读取单元从主存单元读取第一特征矩阵数据,并将其存储于特征数据缓存单元中;

卷积核读取单元从主存单元读取当前神经网络子层对应的卷积核数据,并将其存储于卷积核缓存单元中;

卷积运算单元获取卷积核缓存单元中的卷积核数据以及特征数据缓存单元中的第一特征矩阵数据进行卷积运算,得到卷积特征数据,并将卷积特征数据传输给激活函数运算单元;

激活函数运算单元对卷积特征数据进行激活函数运算,得到第二特征矩阵数据;

非零数据统计单元统计第二特征矩阵数据中非零数据,所述特征数据压缩单元根据所有非零数据在整个第二特征矩阵数据占比情况,对第二特征数据进行压缩处理,得到压缩数据;

反向回写单元将压缩数据回写至主存单元中;当前神经网络子层的压缩数据为下一层神经网络子层的第一特征矩阵数据对应的压缩数据;

特征数据解压单元对特征数据读取单元读取的压缩数据进行解压数据,并将解压得到的第一特征矩阵数据存储至特征数据缓存单元中。

进一步地,所述装置还包括非零比例阈值存储单元,所述非零比例阈值存储单元与特征数据压缩单元连接,用于存储非零比例阈值;所述方法包括以下步骤:

特征数据压缩单元判断非零数据统计单元提取出的非零数据在整个第二特征矩阵数据占比是否大于非零比例阈值,若是则提取出非零数据并进行压缩处理,得到压缩数据;否则不提取非零数据,直接对第二特征矩阵数据进行压缩处理,得到压缩数据。

进一步地,当特征数据压缩单元判定非零数据统计单元提取出的非零数据在整个第二特征矩阵数据占比大于非零比例阈值时,得到的压缩数据包括第一包头标识、各个非零数据以及每个非零数据在第二特征矩阵数据的位置信息,每个非零数据与其对应的位置信息对应存储;

当特征数据压缩单元判定非零数据统计单元提取出的非零数据在整个第二特征矩阵数据占比不大于非零比例阈值时,得到的压缩数据包括第二包头标识和各个第二特征数据,所述第二特征数据包括非零数据和零数据,各个第二特征数据根据其在第二特征矩阵数据中的位置信息对应存储。

进一步地,所述非零数据统计单元包括比较器、计数器和存储器,所述比较器分别与计数器、存储器连接,所述存储器用于存储零值;

所述方法包括:

比较器将第二特征矩阵数据中的各个特征数据与零值进行比较,当比较器判定当前特征数据的数值不为零值时,则计算器值加1;

当所有第二特征矩阵数据中的特征数据全部比较完成后,非零数据统计单元将当前计数器的值传输给特征数据压缩单元。

本发明提供了一种基于深度学习芯片的数据存储优化方法和装置,所述方法在激活函数运算单元对卷积特征数据进行激活函数运算,得到第二特征矩阵数据之后,通过非零数据统计单元统计第二特征矩阵数据中非零数据,以及通过特征数据压缩单元根据所有非零数据在整个第二特征矩阵数据占比情况,对第二特征数据进行压缩处理,得到压缩数据,并将压缩数据回写至主存单元中。相较于现有技术中将激活函数运算得到的全部数据回写至主存的方式,本发明可以有效降低存储带宽和运算数据对存储空间的占用。

附图说明

图1为本发明一实施方式涉及的基于深度学习芯片的数据存储优化装置的示意图;

图2为本发明一实施方式涉及的压缩数据的数据包格式示意图;

图3为本发明另一实施方式涉及的压缩数据的数据包格式示意图;

图4为本发明另一实施方式涉及的非零数据统计单元的示意图;

图5为本发明一实施方式涉及的基于深度学习芯片的数据存储优化方法的流程图。

附图标记说明:

101;主存单元;

102、特征数据读取单元;

103、特征数据解压单元;

104、特征数据缓存单元;

105、卷积核读取单元;

106、卷积核缓存单元;

107、卷积运算单元;

108、激活函数运算单元;

109、非零数据统计单元;119、比较器;129、计数器;

110、数据压缩单元;

111、数据回写单元;

112、非零比例阈值存储单元。

具体实施方式

为详细说明技术方案的技术内容、构造特征、所实现目的及效果,以下结合具体实施例并配合附图详予说明。

请参阅图1,本发明一实施方式所述的基于深度学习芯片的数据存储优化装置,所述装置包括主存单元101、特征数据读取单元102、特征数据解压单元103、特征数据缓存单元104、卷积核读取单元105、卷积核缓存单元106、卷积运算单元107、激活函数运算单元108、非零数据统计单元109、数据压缩单元110、数据回写单元111;

所述主存单元101分别与特征数据读取单元102、卷积核读取单元105连接,所述特征数据读取单元102与特征数据解压单元103连接,所述特征数据解压单元103与特征数据缓存单元104连接,所述特征数据缓存单元104与卷积运算单元107连接;所述卷积核读取单元105与卷积核缓存单元106连接,所述卷积核缓存单元106与卷积运算单元107连接;

所述卷积运算单元107与激活函数运算单元108连接,所述激活函数运算单元108与非零数据统计单元109连接,所述非零数据统计单元109与数据压缩单元110连接,所述数据压缩单元110与数据回写单元111连接,所述数据回写单元111与主存单元101连接;

所述主存单元101用于存储第一特征矩阵数据以及各个神经网络子层的卷积核数据。所述第一特征矩阵数据可以是原始的图像数据,也可以是由反向回写单元回写至主存单元的压缩数据,当第一特征矩阵数据为压缩数据时,特征数据解压单元用于对所述压缩数据进行解压后存储至特征数据缓存单元中。

所述特征数据读取单元102用于从主存单元读取第一特征矩阵数据,并将其存储于特征数据缓存单元104中;所述卷积核读取单元105用于从主存单元读取当前神经网络子层对应的卷积核数据,并将其存储于卷积核缓存单元106中。卷积运算是神经网络运算过程中的重要一项,简单的说,其是通过对应的卷积核模板(即卷积核数据)对特征数据进行卷积运算,因而进行卷积运算所需的输入参数为卷积核数据和特征矩阵数据(即待进行卷积运算的数据),为了保证卷积运算数据获取的同步性,先将这两者分别存储于卷积核缓存单元和特征数据缓存单元中。

所述卷积运算单元107用于获取卷积核缓存单元106中的卷积核数据以及特征数据缓存单元104中的第一特征矩阵数据进行卷积运算,得到卷积特征数据,并将卷积特征数据传输给激活函数运算单元108。卷积运算过程为神经网络运算领域常用的算法,相关原理可以参考以下链接:

https://www.cnblogs.com/nsnow/p/4562308.html

https://blog.csdn.net/nicajonh/article/details/53142449?locationnum=2&fps=1

所述激活函数运算单元108用于对卷积特征数据进行激活函数运算,得到第二特征矩阵数据。激活运算,也是神经网络运算领域一个常见的运算,简单的说,其是通过一个激活阈值对卷积运算后的卷积特征数据进行激活,从而得到一个大多数位置数值为0的矩阵来尝试表达特征数据,关于激活函数运算的相关原理可以参考以下链接:

https://blog.csdn.net/huahuazhu/article/details/74188288

https://blog.csdn.net/shuzfan/article/details/71125457

所述非零数据统计单元109用于统计第二特征矩阵数据中非零数据,所述特征数据压缩单元110用于根据所有非零数据在整个第二特征矩阵数据占比情况,对第二特征数据进行压缩处理,得到压缩数据。

在某些实施例中,所述装置还包括非零比例阈值存储单元112,所述非零比例阈值存储单元112与特征数据压缩单元110连接,用于存储非零比例阈值;所述特征数据压缩单元110用于判断非零数据统计单元112提取出的非零数据在整个第二特征矩阵数据占比是否大于非零比例阈值,若是则提取出非零数据并进行压缩处理,得到压缩数据;否则不提取非零数据,直接对第二特征矩阵数据进行压缩处理,得到压缩数据。例如,非零比例阈值为80%,某一个第二特征矩阵数据中有1000个数值,其中有900个为0,说明该第二特征矩阵数据的非零数据占比超过了非零比例阈值,因而会提取出100个非零数据并进行压缩存储;反之,如果第二特征矩阵数据1000个数值中只有200个非零数据,此时如果提取出800个非零数据进行压缩效果将不那么明显,反而还需要记录每一个非零数据在第二特征矩阵数据中的位置信息,因而本发明所采用的方案是不对非零数据进行提取,直接按照顺序提取出第二特征矩阵数据中的各个数据(包括零和非零),按照预定格式直接进行存储,以便后续解压。

如图2、3所示,当特征数据压缩单元110判定非零数据统计单元提取出的非零数据在整个第二特征矩阵数据占比大于非零比例阈值时,得到的压缩数据包括第一包头标识、各个非零数据以及每个非零数据在第二特征矩阵数据的位置信息,每个非零数据与其对应的位置信息对应存储。当特征数据压缩单元判定非零数据统计单元提取出的非零数据在整个第二特征矩阵数据占比不大于非零比例阈值时,得到的压缩数据包括第二包头标识和各个第二特征数据,所述第二特征数据包括非零数据和零数据,各个第二特征数据根据其在第二特征矩阵数据中的位置信息对应存储。第一包头标识和第二包头标识设置于压缩数据开头,用于表征当前压缩数据的格式类型,例如可以在压缩数据的开头增加1bit数据来表征当前压缩数据的格式类型,当1bit数据为1时,表示需要对第二特征数据矩阵中的非零数据进行提取存储;当1bit数据为0时,表示不需要对第二特征数据矩阵中的非零数据进行提取,而是直接将第二特征矩阵数据中的所有数据按照顺序进行存储。

如图4所示,所述非零数据统计单元109包括比较器119、计数器129和存储器,所述比较器分别与计数器、存储器连接,所述存储器用于存储零值。所述比较器119用于将第二特征矩阵数据中的各个特征数据与零值进行比较,当比较器判定当前特征数据的数值不为零值时,则计算器值加1;当所有第二特征矩阵数据中的特征数据全部比较完成后,非零数据统计单元将当前计数器的值传输给特征数据压缩单元。

具体地,经过激活运算后的第二特征矩阵数据按照z字顺序(从左到右、从上到下)送到非零数据统计单元109,比较器119负责将输入的激活运算后的第二特征矩阵数据依次与存储器中存储的零值进行比较,如果进行比较的数据数字不等于零,则发送累加记数有效信号给计数器,计数器在每个矩阵计算前初始值为零,收到累加记数有效信号后就自己累加1。当第二特征矩阵数据全部统计完成后,计数器将非零数据个数送往数据压缩单元,然后将计数器清零。

所述反向回写单元111用于将压缩数据回写至主存单元101中,从而完成一次循环。当前神经网络子层的压缩数据为下一层神经网络子层的第一特征矩阵数据对应的压缩数据,所述特征数据解压单元用于对特征数据读取单元读取的压缩数据进行解压数据,并将解压得到的第一特征矩阵数据存储至特征数据缓存单元中。

如图5所示,一种基于深度学习芯片的数据存储优化方法,所述方法应用于基于深度学习芯片的数据存储优化装置,所述装置包括主存单元、特征数据读取单元、特征数据解压单元、特征数据缓存单元、卷积核读取单元、卷积核缓存单元、卷积运算单元、激活函数运算单元、非零数据统计单元、数据压缩单元、数据回写单元;

所述主存单元分别与特征数据读取单元、卷积核读取单元连接,所述特征数据读取单元与特征数据解压单元连接,所述特征数据解压单元与特征数据缓存单元连接,所述特征数据缓存单元与卷积运算单元连接;所述卷积核读取单元与卷积核缓存单元连接,所述卷积核缓存单元与卷积运算单元连接;

所述卷积运算单元与激活函数运算单元连接,所述激活函数运算单元与非零数据统计单元连接,所述非零数据统计单元与数据压缩单元连接,所述数据压缩单元与数据回写单元连接,所述数据回写单元与主存单元连接;

所述方法包括以下步骤:

首先进入步骤s501主存单元存储第一特征矩阵数据以及各个神经网络子层的卷积核数据;

而后进入步骤s502特征数据读取单元从主存单元读取第一特征矩阵数据,并将其存储于特征数据缓存单元中;

而后进入步骤s503卷积核读取单元从主存单元读取当前神经网络子层对应的卷积核数据,并将其存储于卷积核缓存单元中;

而后进入步骤s504卷积运算单元获取卷积核缓存单元中的卷积核数据以及特征数据缓存单元中的第一特征矩阵数据进行卷积运算,得到卷积特征数据,并将卷积特征数据传输给激活函数运算单元;

而后进入步骤s505激活函数运算单元对卷积特征数据进行激活函数运算,得到第二特征矩阵数据;

而后进入步骤s506非零数据统计单元统计第二特征矩阵数据中非零数据,所述特征数据压缩单元根据所有非零数据在整个第二特征矩阵数据占比情况,对第二特征数据进行压缩处理,得到压缩数据;

而后进入步骤s507反向回写单元将压缩数据回写至主存单元中。当前神经网络子层的压缩数据为下一层神经网络子层的第一特征矩阵数据对应的压缩数据;特征数据解压单元对特征数据读取单元读取的压缩数据进行解压数据,并将解压得到的第一特征矩阵数据存储至特征数据缓存单元中。

在某些实施例中,所述装置还包括非零比例阈值存储单元,所述非零比例阈值存储单元与特征数据压缩单元连接,用于存储非零比例阈值;所述方法包括以下步骤:

特征数据压缩单元判断非零数据统计单元提取出的非零数据在整个第二特征矩阵数据占比是否大于非零比例阈值,若是则提取出非零数据并进行压缩处理,得到压缩数据;否则不提取非零数据,直接对第二特征矩阵数据进行压缩处理,得到压缩数据。

在某些实施例中,当特征数据压缩单元判定非零数据统计单元提取出的非零数据在整个第二特征矩阵数据占比大于非零比例阈值时,得到的压缩数据包括第一包头标识、各个非零数据以及每个非零数据在第二特征矩阵数据的位置信息,每个非零数据与其对应的位置信息对应存储;

当特征数据压缩单元判定非零数据统计单元提取出的非零数据在整个第二特征矩阵数据占比不大于非零比例阈值时,得到的压缩数据包括第二包头标识和各个第二特征数据,所述第二特征数据包括非零数据和零数据,各个第二特征数据根据其在第二特征矩阵数据中的位置信息对应存储。

在某些实施例中,所述非零数据统计单元包括比较器、计数器和存储器,所述比较器分别与计数器、存储器连接,所述存储器用于存储零值;所述方法包括:

比较器将第二特征矩阵数据中的各个特征数据与零值进行比较,当比较器判定当前特征数据的数值不为零值时,则计算器值加1;

当所有第二特征矩阵数据中的特征数据全部比较完成后,非零数据统计单元将当前计数器的值传输给特征数据压缩单元。

本发明提供了一种基于深度学习芯片的数据存储优化方法和装置,所述方法在激活函数运算单元对卷积特征数据进行激活函数运算,得到第二特征矩阵数据之后,通过非零数据统计单元统计第二特征矩阵数据中非零数据,以及通过特征数据压缩单元根据所有非零数据在整个第二特征矩阵数据占比情况,对第二特征数据进行压缩处理,得到压缩数据,并将压缩数据回写至主存单元中。相较于现有技术中将激活函数运算得到的全部数据回写至主存的方式,本发明可以有效降低存储带宽和运算数据对存储空间的占用。

需要说明的是,尽管在本文中已经对上述各实施例进行了描述,但并非因此限制本发明的专利保护范围。因此,基于本发明的创新理念,对本文所述实施例进行的变更和修改,或利用本发明说明书及附图内容所作的等效结构或等效流程变换,直接或间接地将以上技术方案运用在其他相关的技术领域,均包括在本发明的专利保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1