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

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

Neural Network Processing Unit and Its Method of Executing Vector Outer Product Instruction

The invention provides a processing device, which includes: memory, register unit, operation unit and control unit; memory storage vector; register unit storage vector outer product instruction, control unit acquiring vector outer product instruction, parsing the vector outer product instruction to obtain operation code and operation domain; acquiring participating vector outer product operation data from memory according to the operation code; The unit carries on the vector outer product operation according to the data that participates in the vector outer product operation. The technical scheme provided by the invention has the advantages of low power consumption and low calculation cost.

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

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

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

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

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

1