神经网络处理装置及其执行矩阵向量乘指令的方法制造方法及图纸

技术编号:19694114 阅读:26 留言:0更新日期:2018-12-08 11:45
本发明专利技术提供一种处理装置,包括:存储器、寄存器单元、运算单元和控制单元;存储器存储向量;寄存器单元存储矩阵向量乘指令,控制单元获取矩阵向量乘指令,解析所述矩阵向量乘指令得到操作码和操作域;根据所述操作码从存储器中获取参与矩阵向量乘运算数据;运算单元对参与矩阵向量乘运算的数据进行矩阵向量乘运算。本发明专利技术提供的技术方案具有功耗低、计算开销小的优点。

【技术实现步骤摘要】
神经网络处理装置及其执行矩阵向量乘指令的方法
本专利技术涉及通信
,具体涉及一种神经网络处理装置及其执行矩阵向量乘指令的方法。
技术介绍
现代的通用和专用处理器中,越来越多地引入计算指令(例如向量指令)进行运算。向量指令是使处理器进行向量或者矩阵运算的指令,例如向量的加减、向量的内积、矩阵乘法、矩阵卷积等。向量指令中至少有一个输入为向量或者矩阵或运算结果是向量或矩阵。向量指令可以通过调用处理器内部的向量处理部件来进行并行计算,提高运算速度。现有的向量指令中,其操作数或结果中的向量或矩阵一般是固定规模的,例如ARM处理器中的向量扩展结构Neon中的向量指令一次可以处理长为4的32位浮点向量或者长为8的16位定点向量。所以现有的向量运算指令无法实现可变规模的向量或矩阵的运算。另一方面,神经网络作为一个高计算量和高访存的算法,权值越多,计算量和访存量都会增大。为了减小计算量和权值数量,从而降低访存量,因此提出了稀疏神经网络。稀疏神经网络的定义为:在神经网络中,值为0的权值的数目很多,并且值为非0的权值分布没有规律,则称该神经网络为稀疏神经网络。定义权值为0的元素数量与神经网络所有权值元素数量的比值为神经网络的稀疏度,如图1a所示。而现有的向量运算指令无法支持稀疏神经网络中的稀疏向量或稀疏矩阵的运算,更无法实现可变规模的稀疏向量或稀疏矩阵的运算,并且现在的向量运算指令只能实现一种运算,例如一条向量指令只能实现乘法、加法中的一种运算,一条向量指令无法实现二种以上的运算,所以现有的向量运算的运算开销大,能耗高。
技术实现思路
本专利技术实施例提供了一种神经网络处理装置及其执行矩阵向量乘指令的方法,可实现单条矩阵向量乘指令实现多种运算的目的,有利于减少运算开销,降低模块的功耗。第一方面,本专利技术实施例提供一种处理装置,该处理装置用于根据矩阵向量乘指令执行运算,其特征在于,所述处理装置包括:存储器、运算单元、控制单元和寄存器单元;所述寄存器单元,用于存储矩阵向量乘指令;所述矩阵向量乘指令包括操作码和操作域,所述操作码用于指示进行矩阵向量乘运算;所述操作域包括所述参与矩阵向量乘运算的数据的首地址和所述参与矩阵向量乘运算的数据中部分数据或者全部数据的索引的地址;所述存储器,用于存储参与矩阵向量乘运算的数据;所述控制单元,用于从所述寄存器单元中获取所述矩阵向量乘指令,解析所述矩阵向量乘指令,以得到所述操作码和操作域;根据所述操作域从所述存储器中获取所述参与矩阵向量乘运算的数据和所述参与矩阵向量乘运算的数据中部分数据或者全部数据的索引;并将所述参与矩阵向量乘运算的数据传输至所述运算单元;所述运算单元,用于对所述参与矩阵向量乘运算的数据进行矩阵向量乘运算。在一种可能的实施例中,当所述矩阵向量乘指令为第一矩阵向量乘指令时,所述操作码用于指示进行第一矩阵向量乘运算,所述操作域包括:稀疏向量X13的索引表示方式、第二矩阵的存储格式、所述矩阵A2的行数、所述矩阵A2的列数、矩阵A2的变换信息、第十一标量的首地址、第十二标量的首地址、稀疏向量X13中元素的首地址、稀疏向量X13的索引的首地址、向量Y13中元素的首地址、矩阵A2的首地址和所述矩阵A2的低维长度;其中,所述矩阵A2的存储格式为行主序时,所述矩阵A2的低维长度为相邻两个行向量之间的首地址间隔;当所述矩阵A2的存储格式为列主序时,所述矩阵A2的低维长度为相邻两个列向量之间的首地址间隔;所述控制单元具体用于:根据所述矩阵A2的首地址、所述第二矩阵的存储格式和所述矩阵A2的低维长度从所述存储器中获取所述矩阵A2,所述矩阵A2中元素的个数为所述矩阵A2的行数与所述矩阵A2的列数之积;根据所述矩阵转换信息对所述矩阵A2进行转换,以得到转换后的矩阵A2;根据所述稀疏向量X13中元素的首地址从所述存储器中获取所述稀疏向量X13;根据所述稀疏向量X13的索引的首地址从所述存储器获取所述稀疏向量X13的索引;根据所述向量Y13中元素的首地址从所述存储器中获取所述向量Y13;根据所述稀疏向量X13的索引表示方式和所述稀疏向量X13的索引对所述向量Y13中的元素进行筛选,以得到稀疏向量Y13;根据所述第十一标量的首地址和所述十二标量的首地址从所述存储器中分别获取所述第十一标量和第十二标量;将所述转换后的矩阵A2、所述稀疏向量X13、稀疏向量Y13、第十一标量和第十二标量传输至所述运算单元;所述运算单元具体用于:对所述转换后的矩阵A2、所述稀疏向量X13、稀疏向量Y13、第十一标量和第十二标量进行第一矩阵向量乘运算。进一步地,所述操作域还包括:所述稀疏向量X13中元素的个数、所述向量Y13中元素的个数和向量Y13中元素之间的地址间隔;所述控制单元根据所述稀疏向量X13中元素的首地址从所述存储器中获取所述稀疏向量X13,包括:根据所述稀疏向量X13中元素的首地址和所述稀疏向量X13中元素的个数从所述存储器中获取所述稀疏向量X13;所述控制单元根据所述向量Y13中元素的首地址从所述存储器中获取所述向量Y13,包括:根据所述向量Y13中元素的首地址、所述向量Y13中元素的个数和向量Y13中元素之间的地址间隔从所述存储器中获取所述向量Y13。在一种可能的实施例中,当所述矩阵向量乘指令为第二矩阵向量乘指令时,所述操作码用于指示进行第二矩阵向量乘运算,所述操作域包括:稀疏向量sX13的索引表示方式、第二矩阵的存储格式、稀疏矩阵sA2的行数、所述稀疏矩阵sA2的列数N1、稀疏矩阵sA2的变换信息、所述稀疏矩阵sA2各行元素的首地址、所述稀疏矩阵sA2各行索引的首地址、第十一标量的首地址、第十二标量的首地址、稀疏向量sX13中元素的首地址、稀疏向量sX13的索引的首地址、向量s13中元素的首地址、稀疏矩阵sA2的首地址和所述稀疏矩阵sA2的低维长度;其中,所述稀疏矩阵sA2的存储格式为行主序时,所述稀疏矩阵sA2的低维长度为相邻两个行向量之间的首地址间隔;当所述稀疏矩阵sA2的存储格式为列主序时,所述稀疏矩阵sA2的低维长度为相邻两个列向量之间的首地址间隔;所述控制单元具体用于:根据所述稀疏矩阵sA2各行元素的首地址、所述稀疏矩阵sA2的行数、所述第二矩阵的存储格式和所述矩阵A2的低维长度从所述存储器中获取所述稀疏矩阵sA2;根据所述稀疏矩阵sA2变换信息对所述稀疏矩阵sA2进行变换,以得到变换后的稀疏矩阵sA2;根据所述稀疏向量sX13中元素的首地址和向量Y13中元素的首地址分别从所述存储器中获取所述稀疏向量sX13和向量Y13;根据所述稀疏向量sX13的索引的首地址和稀疏矩阵sA2的各行索引的首地址分别从所述存储器获取所述稀疏向量sX13的索引和稀疏矩阵sA2的各行索引;根据所述稀疏向量sX13的索引表示方式、所述稀疏向量sX13的索引和稀疏矩阵sA2的每行索引得到第一中间索引;根据所述第一中间索引对所述稀疏向量sX13和变换后的稀疏矩阵sA2的每行元素进行筛选,以得到筛选后的稀疏向量sX13和筛选后的变换后的稀疏矩阵sA2;根据所述第十一标量的首地址和所述十二标量的首地址从所述存储器中分别获取所述第十一标量和第十二标量;将所述向量Y13、所述筛选后的稀疏向量sX13、筛选后的变换后的稀疏矩阵sA2、第十本文档来自技高网...

【技术保护点】
1.一种处理装置,用于根据矩阵向量乘指令执行运算,其特征在于,所述处理装置包括:存储器、运算单元、控制单元和寄存器单元;所述寄存器单元,用于存储矩阵向量乘指令;所述矩阵向量乘指令包括操作码和操作域,所述操作码用于指示进行矩阵向量乘运算;所述操作域包括所述参与矩阵向量乘运算的数据的首地址和所述参与矩阵向量乘运算的数据中部分数据或者全部数据的索引的地址;所述存储器,用于存储参与矩阵向量乘运算的数据;所述控制单元,用于从所述寄存器单元中获取所述矩阵向量乘指令,解析所述矩阵向量乘指令,以得到所述操作码和操作域;根据所述操作域从所述存储器中获取所述参与矩阵向量乘运算的数据和所述参与矩阵向量乘运算的数据中部分数据或者全部数据的索引;并将所述参与矩阵向量乘运算的数据传输至所述运算单元;所述运算单元,用于对所述参与矩阵向量乘运算的数据进行矩阵向量乘运算。

【技术特征摘要】
1.一种处理装置,用于根据矩阵向量乘指令执行运算,其特征在于,所述处理装置包括:存储器、运算单元、控制单元和寄存器单元;所述寄存器单元,用于存储矩阵向量乘指令;所述矩阵向量乘指令包括操作码和操作域,所述操作码用于指示进行矩阵向量乘运算;所述操作域包括所述参与矩阵向量乘运算的数据的首地址和所述参与矩阵向量乘运算的数据中部分数据或者全部数据的索引的地址;所述存储器,用于存储参与矩阵向量乘运算的数据;所述控制单元,用于从所述寄存器单元中获取所述矩阵向量乘指令,解析所述矩阵向量乘指令,以得到所述操作码和操作域;根据所述操作域从所述存储器中获取所述参与矩阵向量乘运算的数据和所述参与矩阵向量乘运算的数据中部分数据或者全部数据的索引;并将所述参与矩阵向量乘运算的数据传输至所述运算单元;所述运算单元,用于对所述参与矩阵向量乘运算的数据进行矩阵向量乘运算。2.根据权利要求1所述的处理装置,其特征在于,当所述矩阵向量乘指令为第一矩阵向量乘指令时,所述操作码用于指示进行第一矩阵向量乘运算,所述操作域包括:稀疏向量X13的索引表示方式、第二矩阵的存储格式、所述矩阵A2的行数、所述矩阵A2的列数、矩阵A2的变换信息、第十一标量的首地址、第十二标量的首地址、稀疏向量X13中元素的首地址、稀疏向量X13的索引的首地址、向量Y13中元素的首地址、矩阵A2的首地址和所述矩阵A2的低维长度;其中,所述矩阵A2的存储格式为行主序时,所述矩阵A2的低维长度为相邻两个行向量之间的首地址间隔;当所述矩阵A2的存储格式为列主序时,所述矩阵A2的低维长度为相邻两个列向量之间的首地址间隔;所述控制单元具体用于:根据所述矩阵A2的首地址、所述第二矩阵的存储格式和所述矩阵A2的低维长度从所述存储器中获取所述矩阵A2,所述矩阵A2中元素的个数为所述矩阵A2的行数与所述矩阵A2的列数之积;根据所述矩阵转换信息对所述矩阵A2进行转换,以得到转换后的矩阵A2;根据所述稀疏向量X13中元素的首地址从所述存储器中获取所述稀疏向量X13;根据所述稀疏向量X13的索引的首地址从所述存储器获取所述稀疏向量X13的索引;根据所述向量Y13中元素的首地址从所述存储器中获取所述向量Y13;根据所述稀疏向量X13的索引表示方式和所述稀疏向量X13的索引对所述向量Y13中的元素进行筛选,以得到稀疏向量Y13;根据所述第十一标量的首地址和所述十二标量的首地址从所述存储器中分别获取所述第十一标量和第十二标量;将所述转换后的矩阵A2、所述稀疏向量X13、稀疏向量Y13、第十一标量和第十二标量传输至所述运算单元;所述运算单元具体用于:对所述转换后的矩阵A2、所述稀疏向量X13、稀疏向量Y13、第十一标量和第十二标量进行第一矩阵向量乘运算。3.根据权利要求2所述的处理装置,其特征在于,所述操作域还包括:所述稀疏向量X13中元素的个数、所述向量Y13中元素的个数和向量Y13中元素之间的地址间隔;所述控制单元根据所述稀疏向量X13中元素的首地址从所述存储器中获取所述稀疏向量X13,包括:根据所述稀疏向量X13中元素的首地址和所述稀疏向量X13中元素的个数从所述存储器中获取所述稀疏向量X13;所述控制单元根据所述向量Y13中元素的首地址从所述存储器中获取所述向量Y13,包括:根据所述向量Y13中元素的首地址、所述向量Y13中元素的个数和向量Y13中元素之间的地址间隔从所述存储器中获取所述向量Y13。4.根据权利要求1所述的处理装置,其特征在于,当所述矩阵向量乘指令为第二矩阵向量乘指令时,所述操作码用于指示进行第二矩阵向量乘运算,所述操作域包括:稀疏向量sX13的索引表示方式、第二矩阵的存储格式、稀疏矩阵sA2的行数、所述稀疏矩阵sA2的列数N1、稀疏矩阵sA2的变换信息、所述稀疏矩阵sA2各行元素的首地址、所述稀疏矩阵sA2各行索引的首地址、第十一标量的首地址、第十二标量的首地址、稀疏向量sX13中元素的首地址、稀疏向量sX13的索引的首地址、向量s13中元素的首地址、稀疏矩阵sA2的首地址和所述稀疏矩阵sA2的低维长度;其中,所述稀疏矩阵sA2的存储格式为行主序时,所述稀疏矩阵sA2的低维长度为相邻两个行向量之间的首地址间隔;当所述稀疏矩阵sA2的存储格式为列主序时,所述稀疏矩阵sA2的低维长度为相邻两个列向量之间的首地址间隔;所述控制单元具体用于:根据所述稀疏矩阵sA2各行元素的首地址、所述稀疏矩阵sA2的行数、所述第二矩阵的存储格式和所述矩阵A2的低维长度从所述存储器中获取所述稀疏矩阵sA2;根据所述稀疏矩阵sA2变换信息对所述稀疏矩阵sA2进行变换,以得到变换后的稀疏矩阵sA2;根据所述稀疏向量sX13中元素的首地址和向量Y13中元素的首地址分别从所述存储器中获取所述稀疏向量sX13和向量Y13;根据所述稀疏向量sX13的索引的首地址和稀疏矩阵sA2的各行索引的首地址分别从所述存储器获取所述稀疏向量sX13的索引和稀疏矩阵sA2的各行索引;根据所述稀疏向量sX13的索引表示方式、所述稀疏向量sX13的索引和稀疏矩阵sA2的每行索引得到第一中间索引;根据所述第一中间索引对所述稀疏向量sX13和变换后的稀疏矩阵sA2的每行元素进行筛选,以得到筛选后的稀疏向量sX13和筛选后的变换后的稀疏矩阵sA2;根据所述第十一标量的首地址和所述十二标量的首地址从所述存储器中分别获取所述第十一标量和第十二标量;将所述向量Y13、所述筛选后的稀疏向量sX13、筛选后的变换后的稀疏矩阵sA2、第十一标量和第十二标量传输至所述运算单元;所述运算单元具体用于:对所述向量Y13、所述筛选后的稀疏向量sX13、筛选后的变换后的稀疏矩阵sA2、第十一标量和第十二标量进行第二矩阵向量乘运算。5.根据权利要求4所述的处理装置,其特征在于,所述操作域还包括所述稀疏矩阵sA2的索引表示方式;所述控制单元还用于:在获取所述稀疏向量sX13及其索引和所述变换后的稀疏矩阵sA2及其各行索引之后,根据所述稀疏向量sX13的索引、所述稀疏向量sX13的索引表示方式、所述稀疏矩阵sA2的每行索引和所述稀疏矩阵sA2的索引表示方式,得到第二中间索引;根据所述第二中间索引对所述稀疏向量sX13和变换后的稀疏矩阵sA2中各行的元素进行筛选,以得到所述筛选后的稀疏向量sX13和筛选后的变换后的稀疏矩阵sA2;并将所述筛选后的稀疏向量sX13和筛选后的变换后的稀疏向量sY13传输至所述运算单元。6.根据权利要求4或5所述的处理装置,其特征在于,所述操作域还包括:所述稀疏向量sX13中元素的个数、所述向量Y13中元素的个数、向量Y13中元素之间的地址间隔和所述稀疏矩阵sA2各行元素的个数;所述控制单元根据所述稀疏矩阵sA2各行元素的首地址、所述稀疏矩阵sA2的行数、所述第二矩阵的存储格式和所述稀疏矩阵sA2的低维长度从所述存储器中获取所述稀疏矩阵sA2,包括:根据所述稀疏矩阵sA2各行元素的首地址、所述稀疏矩阵sA2各行元素的个数、所述稀疏矩阵sA2的行数、所述第二矩阵的存储格式和所述稀疏矩阵sA2的低维长度从所述存储器中获取所述稀疏矩阵sA2;所述控制单元根据所述稀疏向量sX13中元素的首地址和向量Y13的首地址分别从所述存储器中获取所述稀疏向量sX13和向量Y13,包括:根据所述稀疏向量sX13中元素的首地址和所述稀疏向量sX13中元素的个数从所述存储器中获取所述稀疏向量sX13;根据所述向量Y13中元素的首地址、向量Y13中元素的个数和向量Y13中元素之间的地址间隔从所述存储器中获取所述向量Y13。7.根据权利要求2-6任一项所述的处理装置,其特征在于,输入数据的索引表示方式包括:直接索引表示方式或步长索引表示方式;其中所述输入数据包括:稀疏向量X13、稀疏向量sX13或稀疏矩阵sA2的各行元素;当所述输入数据的索引表示方式为直接索引表示方式时,所述输入数据的索引为由0和1组成的字符串,0表示所述输入数据中元素不满足预设条件,1表示所述输入数据中的元素满足所述预设条件,或者;当所述输入数据的索引表示方式为步长索引表示方式时,所述输入数据的索引为所述输入数据中满足所述预设条件的元素与上一个满足所述预设条件的元素之间的距离值组成的字符串;其中,所述预设条件为:所述输入数据中的元素的绝对值大于或者小于预设阈值。8.根据权利要求1-7任一项所述的处理装置,其特征在于,所述运算单元还包括向量加法电路、向量乘法电路、大小比较电路、非线性运算电路和向量标量乘法电路;所述运算单元为多流水级结构;其中,所述向量乘法电路和所述向量标量乘法电路处于第一流水级,所述大小比较电路和所述向量加法电路处于第二流水级,所述非线性运算部件处于第三流水级,其中所述第一流水级的输出数据为所述第二流水级的输入数据,所述第二流水级的输出数据为所述第三流水级的输入数据。9.根据权利要求1-8任一项所述的处理准直,其特征在于,所述控制单元还包括:指令存储单元,用于存储所述矩阵向量乘指令;指令处理单元,用于对所述矩阵向量乘指令进行解析,以得到所述操作码和操作域;存储队列单元,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个矩阵向量乘指令。10.根据权利要求9所述的处理装置,其特征在于,所述处理装置还包括:依赖关系处理单元,用于确定第s个矩阵向量乘指令与所述第s个矩阵向量乘...

【专利技术属性】
技术研发人员:王秉睿周聖元张尧
申请(专利权)人:上海寒武纪信息科技有限公司
类型:发明
国别省市:上海,31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1