CN109032670B - 神经网络处理装置及其执行向量复制指令的方法 - Google Patents
神经网络处理装置及其执行向量复制指令的方法 Download PDFInfo
- Publication number
- CN109032670B CN109032670B CN201810914646.9A CN201810914646A CN109032670B CN 109032670 B CN109032670 B CN 109032670B CN 201810914646 A CN201810914646 A CN 201810914646A CN 109032670 B CN109032670 B CN 109032670B
- Authority
- CN
- China
- Prior art keywords
- vector
- index
- sparse
- copy instruction
- instruction
- 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/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供一种处理装置,包括:存储器、寄存器单元、运算单元和控制单元;存储器存储向量;寄存器单元存储向量复制指令,控制单元获取向量复制指令,解析所述向量复制指令得到操作码和操作域;根据所述操作码从存储器中获取参与向量复制运算数据;运算单元对参与向量复制运算的数据进行向量复制运算。本发明提供的技术方案具有功耗低、计算开销小的优点。
Description
技术领域
本发明涉及通信技术领域,具体涉及一种神经网络处理装置及其执行向量复制指令的方法。
背景技术
现代的通用和专用处理器中,越来越多地引入计算指令(例如向量指令)进行运算。向量指令是使处理器进行向量或者矩阵运算的指令,例如向量的加减、向量的内积、矩阵乘法、矩阵卷积等。向量指令中至少有一个输入为向量或者矩阵或运算结果是向量或矩阵。向量指令可以通过调用处理器内部的向量处理部件来进行并行计算,提高运算速度。现有的向量指令中,其操作数或结果中的向量或矩阵一般是固定规模的,例如ARM处理器中的向量扩展结构Neon中的向量指令一次可以处理长为4的32位浮点向量或者长为8的16位定点向量。所以现有的向量运算指令无法实现可变规模的向量或矩阵的运算。
另一方面,神经网络作为一个高计算量和高访存的算法,权值越多,计算量和访存量都会增大。为了减小计算量和权值数量,从而降低访存量,因此提出了稀疏神经网络。稀疏神经网络的定义为:在神经网络中,值为0的权值的数目很多,并且值为非0的权值分布没有规律,则称该神经网络为稀疏神经网络。定义权值为0的元素数量与神经网络所有权值元素数量的比值为神经网络的稀疏度,如图1a所示。
而现有的向量运算指令无法支持稀疏神经网络中的稀疏向量或稀疏矩阵的运算,更无法实现可变规模的稀疏向量或稀疏矩阵的运算,并且现在的向量运算指令只能实现一种运算,例如一条向量指令只能实现乘法、加法中的一种运算,一条向量指令无法实现二种以上的运算,所以现有的向量运算的运算开销大,能耗高。
发明内容
本发明实施例提供了一种神经网络处理装置及其执行向量复制指令的方法,可实现单条向量复制指令实现多种运算的目的,有利于减少运算开销,降低模块的功耗。
第一方面,本发明实施例提供一种处理装置,该处理装置用于根据向量复制指令执行运算,该处理装置包括:存储器、运算单元控制单元和寄存器单元;
所述寄存器单元,用于存储向量复制指令;所述向量复制指令包括操作码和操作域,所述操作码用于指示进行向量复制运算;所述操作域包括所述参与向量复制运算的数据的首地址和所述参与向量复制运算的数据中部分数据或者全部数据的索引的地址;
所述存储器,用于存储参与向量复制运算的数据;
所述控制单元,用于从所述寄存器单元中获取所述向量复制指令,解析所述向量复制指令,以得到所述操作码和操作域;根据所述操作域从所述存储器中获取所述参与向量复制运算的数据和所述参与向量复制运算的数据中部分数据或者全部数据的索引;并将所述参与向量复制运算的数据传输至所述运算单元;
所述运算单元,用于对所述参与向量复制运算的数据进行向量复制运算。
在一种可能的实施例中,所述操作域包括:稀疏向量sX5中元素的首地址、稀疏所述向量sX5的索引的首地址、稀疏向量sY5中元素的首地址和稀疏向量sY5的索引的首地址;所述控制单元具体用于:
根据所述向量sX5中元素的首地址从所述存储器中获取所述向量sX5;根据所述向量sX5的索引的首地址从所述存储器中获取所述向量sX5的索引;并将所述稀疏向量sX5及其索引传输至所述运算单元;
所述运算单元具体用于:
将所述稀疏向量sX5中的元素复制到所述稀疏向量sY5中元素的首地址对应的存储空间中;将所述稀疏向量sX5的索引复制到所述稀疏向量sY5的索引的首地址对应的存储空间中。
进一步地,所述操作域还包括:所述稀疏向量sX5的索引表示方式和所述稀疏向量sY5的索引表示方式,且稀疏向量sX5的索引表示方式和稀疏向量sY5的索引表示方式不一致;所述控制单元具体用于:
在获取所述稀疏向量sX5的索引后,将所述稀疏向量sX5的索引转换为以所述稀疏向量sY5的索引表示方式表的索引,以得到第三索引;并将所述第三索引传输至所述运算单元;
所述运算单元将所述第三索引复制至所述稀疏向量sY5的索引的首地址对应的存储空间。
进一步地,所述操作域还包括:所述稀疏向量sX5中元素的个数;所述控制单元还用于:
根据所述稀疏向量sX5中元素的个数和所述稀疏向量sX5中元素的首地址从所述存储器中获取所述稀疏向量sX5;并将所述稀疏向量sX5传输至所述运算单元;
所述运算单元还用于:
将所述稀疏向量sX5中的元素复制到所述稀疏向量sY5中元素的首地址对应的存储空间中。
在一种可能的实施例中,输入数据的索引表示方式包括:直接索引表示方式或步长索引表示方式,所述输入数据包括:稀疏向量sX5或稀疏向量sY5;
当所述输入数据的索引表示方式为直接索引表示方式时,所述输入数据的索引为由0和1组成的字符串,0表示所述输入数据中元素不满足预设条件,1表示所述输入数据中的元素满足所述预设条件,或者;
当所述输入数据的索引表示方式为步长索引表示方式时,所述输入数据的索引为所述输入数据中满足所述预设条件的元素与上一个满足所述预设条件的元素之间的距离值组成的字符串;其中,所述预设条件为:所述输入数据中的元素的绝对值大于或者小于预设阈值。
在一种可能的实施例中,所述运算单元还包括向量加法电路、向量乘法电路、大小比较电路、非线性运算电路和向量标量乘法电路;所述运算单元为多流水级结构;
其中,所述向量乘法电路和所述向量标量乘法电路处于第一流水级,所述大小比较电路和所述向量加法电路处于第二流水级,所述非线性运算部件处于第三流水级,其中所述第一流水级的输出数据为所述第二流水级的输入数据,所述第二流水级的输出数据为所述第三流水级的输入数据。
在一种可能的实施例中,所述控制单元还包括:
指令存储单元,用于存储所述向量复制指令;
指令处理单元,用于对所述向量复制指令进行解析,以得到所述操作码和操作域;
存储队列单元,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个向量复制指令。
在一种可能的实施例中,所述处理装置还包括:
依赖关系处理单元,用于确定第s个向量复制指令与所述第s个向量复制指令之前的第s-1个向量复制指令是否存在关联关系,如所述第s个向量复制指令与所述第s-1个向量复制指令存在关联关系,将所述第s个向量复制指令缓存在所述指令存储单元内,在所述第s-1个向量复制指令执行完毕后,从所述指令存储单元提取所述第s个向量复制指令传输至所述运算单元;
所述确定该第s个向量复制指令与第s个向量复制指令之前的第s-1个向量复制指令是否存在关联关系包括:
依据所述第s个向量复制指令提取所述第s个向量复制指令中所需数据的第一存储地址区间,依据所述第s-1个向量复制指令提取所述第s-1个向量复制指令中所需数据的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,确定所述第s个向量复制指令与所述第s-1个向量复制指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,确定所述第s个向量复制指令与所述第s-1个向量复制指令不具有关联关系。
第二方面,本发明实施例提供了一种运算装置,该运算装置包括一个或多个如第一方面所述的处理装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的运算,将执行结果通过I/O接口传递给其他处理装置;
当所述运算装置包含多个所处理装置时,所述多个所述处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述处理装置通过快速外部设备互连总线或PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算;多个所述处理装置共享同一控制系统或拥有各自的控制系统;多个所述处理装置共享内存或者拥有各自的内存;多个所述处理装置的互联方式是任意互联拓扑。
第三方面,本发明实施例提供了一种组合处理装置,该组合处理装置包括如第二方面所述的运算装置,通用互联接口和其他处理装置;
所述运算装置与所述其他处理装置进行交互,共同完成用户指定的操作。
第四方面,本发明实施例提供了一种神经网络芯片,该神经网络芯片包括上述第一方面所述的处理装置、上述第二方面所述的运算装置或者上述第三方面所述的组合处理装置。
第五方面,本发明实施例提供了一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述第四方面所述的神经网络芯片;
第六方面,本发明实施例提供了一种电子装置,该电子装置包括上述第四方面所述的神经网络芯片或者第五方面所述的神经网络芯片封装结构。
第七方面,本发明实施例提供了一种执行向量复制指令的方法,该方法包括:
获取向量复制指令,并解析所述向量复制指令,以得到所述向量复制指令的操作码和操作域。
根据所述操作域获取参与向量复制运算的数据。
对所述参与向量复制运算的数据进行向量复制运算。
在一种可能的实施例中,所述操作域包括:稀疏向量sX5中元素的首地址、稀疏所述向量sX5的索引的首地址、稀疏向量sY5中元素的首地址和稀疏向量sY5的索引的首地址;所述根据所述操作域获取参与向量复制运算的数据,包括:
根据所述向量sX5中元素的首地址获取所述向量sX5;根据所述向量sX5的索引的首地址获取所述向量sX5的索引;
所述对所述参与向量复制运算的数据进行向量复制运算,包括:
将所述稀疏向量sX5中的元素复制到所述稀疏向量sY5中元素的首地址对应的存储空间中;将所述稀疏向量sX5的索引复制到所述稀疏向量sY5的索引的首地址对应的存储空间中。
进一步地,所述操作域还包括:所述稀疏向量sX5的索引表示方式和所述稀疏向量sY5的索引表示方式,且稀疏向量sX5的索引表示方式和稀疏向量sY5的索引表示方式不一致;所述根据所述操作域获取参与向量复制运算的数据,还包括:
在获取所述稀疏向量sX5的索引后,将所述稀疏向量sX5的索引转换为以所述稀疏向量sY5的索引表示方式表的索引,以得到第三索引;
所述对所述参与向量复制运算的数据进行向量复制运算,还包括:
将所述第三索引复制至所述稀疏向量sY5的索引的首地址对应的存储空间。
进一步地,所述操作域还包括:所述稀疏向量sX5中元素的个数;所述根据所述向量sX5中元素的首地址获取所述向量sX5;包括:
根据所述稀疏向量sX5中元素的个数和所述稀疏向量sX5中元素的首地址获取所述稀疏向量sX5。
进一步地,输入数据的索引表示方式包括:直接索引表示方式或步长索引表示方式,所述输入数据包括:稀疏向量sX5或稀疏向量sY5;
当所述输入数据的索引表示方式为直接索引表示方式时,所述输入数据的索引为由0和1组成的字符串,0表示所述输入数据中元素不满足预设条件,1表示所述输入数据中的元素满足所述预设条件,或者;
当所述输入数据的索引表示方式为步长索引表示方式时,所述输入数据的索引为所述输入数据中满足所述预设条件的元素与上一个满足所述预设条件的元素之间的距离值组成的字符串;其中,所述预设条件为:所述输入数据中的元素的绝对值大于或者小于预设阈值。
可以看出,通过本发明实施例提供的向量复制指令,强化了指令的功能,用一条指令代替了原来的多条指令。这样减少了复杂向量、矩阵操作所需的指令数量,简化了向量指令的使用;与多条指令相比,不需要存储中间结果,既节约了存储空间,又避免了额外的读写开销。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a为本发明实施例提供的一种稀疏神经网络的结构示意图;
图1b为本发明实施提供的一种处理装置的结构示意图;
图2为本发明实施例提供的一种处理装置的局部结构示意图;
图3为本发明实施例提供的另一种处理装置的局部结构示意图;
图4为本发明实施例提供的一种处理装置中的运算单元流水级的示意图;
图5a为本发明实施例提供的一种运算装置的结构示意图;
图5b为本发明实施例提供的另一种运算装置的结构示意图;
图6为本发明实施例流提供的一种执行向量复制指令的方法的流程示意图。
附图中的虚线部件表现可选。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。文中的“/”可以表示“或”。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
参见图1b,图1b为本发明实施例提供的一种处理装置的结构示意图。该处理装置100用于根据向量复制指令进行运算。如图1b所示,该处理装置100包括:存储器101、寄存器单元102(可选地)、运算单元104和控制单元103。
其中,上述寄存器单元102,用于存储向量复制指令;该向量复制指令包括操作码和操作域,该操作码用于指示进行向量复制运算;
上述存储器101,用于存储参与向量复制运算的数据;
上述控制单元103,用于从上述寄存器单元102中获取上述向量复制指令,并解析该向量复制指令,以得到上述操作码和操作域;所述操作域包括所述参与向量复制运算的数据的首地址和所述参与向量复制运算的数据中部分数据或者全部数据的索引的地址;根据该操作域从上述存储器101中获取所述参与向量复制运算的数据和参与向量复制运算的数据中部分数据或者全部数据的索引;并将上述参与向量复制运算的数据传输至上述运算单元104;
所述运算单元104,用于对所述参与向量复制运算的数据进行向量复制运算。
在一种可能的实施例中,所述操作域包括:稀疏向量sX5中元素的首地址、稀疏所述向量sX5的索引的首地址、稀疏向量sY5中元素的首地址和稀疏向量sY5的索引的首地址;
所述控制单元103具体用于:根据所述向量sX5中元素的首地址从所述存储器101中获取所述向量sX5;根据所述向量sX5的索引的首地址从所述存储器101中获取所述向量sX5的索引;并将所述稀疏向量sX5及其索引传输至所述运算单元104;
所述运算单元104具体用于:
将所述稀疏向量sX5中的元素复制到所述稀疏向量sY5中元素的首地址对应的存储空间中;将所述稀疏向量sX5的索引复制到所述稀疏向量sY5的索引的首地址对应的存储空间中。
具体地,上述向量复制指令可表示为:COPY(I_TYPEsX5,ValsX5,InsX5,ValsY5,InsY5),其中,上述向量复制指令的操作码为COPY,用于指示进行向量复制运算;该向量复制指令的操作域包括I_TYPEsX5,ValsX5,InsX5,ValsY5和InsY5,其对应的含义描述见下表1。
操作域 | 功能描述 |
I_TYPEsX5 | 稀疏向量sX5的索引表示方式 |
ValsX5 | 稀疏向量sX5中元素的首地址 |
InsX5 | 稀疏向量sX5的索引的首地址 |
ValsY5 | 稀疏向量sY5中元素的首地址 |
InsY5 | 稀疏向量sY5的索引的首地址 |
表1
上述控制单元103获取上述向量复制指令后,解析该向量复制指令,以得到该向量复制指令的操作码和操作域。上述控制单元103根据上述稀疏向量sX5中元素的首地址从上述存储器101中获取上述稀疏向量sX5;根据上述稀疏向量sX5的索引的首地址从上述存储器101中获取上述稀疏向量sX5的索引。然后上述运算单元104将上述稀疏向量sX5中元素复制到上述稀疏向量sY5中元素的首地址对应的存储空间中;将上述稀疏向量sX5的索引复制到上述稀疏向量sY5的索引的首地址对应的存储空间中。
需要指出的是,上述稀疏向量sX5是按照默认长度在上述存储器101进行存储的,因此上述控制单元103可以只根据上述稀疏向量sX5中元素的首地址从上述存储器101中获取上述稀疏向量sX5。
进一步地,所述操作域还包括:所述稀疏向量sX5的索引表示方式和所述稀疏向量sY5的索引表示方式,且稀疏向量sX5的索引表示方式和稀疏向量sY5的索引表示方式不一致;所述控制单元具体用于:
在获取所述稀疏向量sX5的索引后,将所述稀疏向量sX5的索引转换为以所述稀疏向量sY5的索引表示方式表的索引,以得到第一索引;并将所述第一索引传输至所述运算单元;
所述运算单元将所述第一索引复制至所述稀疏向量sY5的索引的首地址对应的存储空间。
具体地,上述向量复制指令还可表示为:COPY(I_TYPEsX5,ValsX5,InsX5,ValsY5,InsY5),其中,上述向量复制指令的操作码为COPY,用于指示进行向量复制运算;该向量复制指令的操作域包括I_TYPEsX5,I_TYPEsY5,ValsX5,InsX5,ValsY5和InsY5,其对应的含义描述见下表2。
操作域 | 功能描述 |
I_TYPEsX5 | 稀疏向量sX5的索引表示方式 |
I_TYPEsY5 | 稀疏向量sY5的索引表示方式 |
ValsX5 | 稀疏向量sX5中元素的首地址 |
InsX5 | 稀疏向量sX5的索引的首地址 |
ValsY5 | 稀疏向量sY5中元素的首地址 |
InsY5 | 稀疏向量sY5的索引的首地址 |
表2
在获取上述稀疏向量sX5及其索引后,当上述稀疏向量sX5的索引表示方式为直接索引表示方式,且上述稀疏向量sY5的索引表示方式为步长索引表示方式时,上述控制单元103将上述稀疏向量sX5的索引转换为以步长索引表示方式表示的索引,以得到第一索引。上述运算单元104将该第一索引复制到上述稀疏向量sY5的索引的首地址对应的存储空间中,将上述稀疏向量sX5中的元素复制待上述稀疏向量sY5中元素的首地址对应的存储空间中。
当上述稀疏向量sX5的索引表示方式为直接索引表示方式,且上述稀疏向量sY5的索引表示方式为步长索引表示方式时,上述稀疏向量sX5的索引为由0和1组成的字符串,0表示稀疏向量sX5对应的稠密向量中元素不满足上述预设条件,1表示上述稀疏向量sX5对应的稠密向量中元素满足上述预设条件。比如索引为“101101”,表示上述稀疏向量sX5对应的稠密向量中第1个元素、第3个元素、第4个元素和第6个元素的中每个元素满足上述预设条件,第2个元素和第5个元素均不满足上述预设条件,不满足预设条件的元素不参与后续运算。将上述以直接索引表示方式表示的索引“101101”转换为以步长索引表示方式表示的索引为“0212”。
当上述稀疏向量sX5的索引表示方式为步长索引表示方式,且上述稀疏向量sY5的索引表示方式为直接索引表示方式时,上述稀疏向量sX5的索引为该稀疏向量sX5对应的稠密向量中满足上述预设条件的元素与上一个满足上述预设条件的元素之间的距离值组成的字符串。比如上述稀疏向量sX5的索引为“0212”,表示上述稀疏向量sX5对应的稠密向量中第1个元素、第3个元素、第4个元素和第6个元素的中每个元素满足上述预设条件,其他元素不满足上述预设条件。将上述以步长索引表示方式表示的索引为“0212转换为”以直接索引表示方式表示的索引“101101”。
其中,上述预设条件为上述稠密向量中元素的绝对值大于或者小于某一预设阈值的;或者上述满足预设条件的元素为上述稠密向量中某一区域的元素,比如稠密向量中位置为奇数的元素、或者位置为偶数的元素、或者稠密向量中位置连续多个元素。
进一步地,所述操作域还包括:所述操作域还包括:所述稀疏向量sX5中元素的个数;所述控制单元根据所述稀疏向量sX5中元素的个数和所述稀疏向量sX5中元素的首地址从所述存储器中获取所述稀疏向量sX5;并将所述稀疏向量sX5传输至所述运算单元104;
所述运算单元104将所述稀疏向量sX5中的元素复制到所述稀疏向量sY5中元素的首地址对应的存储空间中。
具体地,上述向量复制指令还可表示为:COPY(D_TYPE5,I_TYPEsX5,Nnz5,ValsX5,InsX5,ValsY5,InsY5),其中,上述向量复制指令的操作码为COPY,用于指示进行向量复制运算;该向量复制指令的操作域包括D_TYPE5,I_TYPEsX5,Nnz5,ValsX5,InsX5,ValsY5和InsY5,其对应的含义描述见下表3。
操作域 | 功能描述 |
D_TYPE5 | 进行操作的数据类型,支持实数和虚数 |
I_TYPEsX5 | 稀疏向量sX5的索引表示方式 |
Nnz5 | 稀疏向量sX5中元素的个数 |
ValsX5 | 稀疏向量sX5中元素的首地址 |
InsX5 | 稀疏向量sX5的索引的首地址 |
ValsY5 | 稀疏向量sY5中元素的首地址 |
InsY5 | 稀疏向量sY5的索引的首地址 |
表3
需要指出的是,上述表3中的操作域D_TYPE5表征参与上述向量复制运算的数据的类型。
上述控制单元103根据上述稀疏向量sX5中元素的个数和稀疏向量sX5中元素的首地址从上述存储器101中获取上述稀疏向量sX5,然后按照上述对表1的相关描述进行后续处理,在此不再叙述。
可选地,上述向量复制指令还可表示为:COPY(D_TYPE5,I_TYPEsX5,I_TYPEsY5,Nnz5,ValsX5,InsX5,ValsY5,InsY5),其中,上述向量复制指令的操作码为COPY,用于指示进行向量复制运算;该向量复制指令的操作域包括D_TYPE5,I_TYPEsX5,I_TYPEsY5,Nnz5,ValX5,InX5,ValsY5和InsY5,其对应的含义描述见下表4。
操作域 | 功能描述 |
D_TYPE5 | 进行操作的数据类型,支持实数和虚数 |
I_TYPEsX5 | 稀疏向量sX5的索引表示方式 |
I_TYPEsY5 | 稀疏向量sY5的索引表示方式 |
Nnz5 | 稀疏向量sX5中元素的个数 |
ValsX5 | 稀疏向量sX5中元素的首地址 |
InsX5 | 稀疏向量sX5的索引的首地址 |
ValsY5 | 稀疏向量sY5中元素的首地址 |
InsY5 | 稀疏向量sY5的索引的首地址 |
表4
需要指出的是,上述表4中的操作域D_TYPE5表征参与上述向量复制运算的数据的类型。
上述控制单元103根据上述稀疏向量sX5中元素的个数和稀疏向量sX5中元素的首地址从上述存储器101中获取上述稀疏向量sX5,然后按照上述对表2的相关描述进行后续处理,在此不再叙述。
上表1-表4所示的向量复制指令的格式分别表示待进行运算的向量为稀疏向量的情况。其中,两个向量的长度可变,可以减少指令数量,简化指令的使用。
上述向量复制指令还支持多种索引表示方式,兼容性更高。支持复数的运算,扩充了指令功能。更有助于扩大其指令的适用范围
可选地,输入数据的索引表示方式可为直接索引表示方式和步长索引表示方式,其中该输入数据可为上述稀疏向量sX5或稀疏向量sY5。
其中,当所述索引表示方式为直接索引表示方式时,所述输入数据的索引为由0和1组成的字符串,0表示所述输入数据中元素不满足预设条件,1表示所述输入数据中的元素满足所述预设条件,或者;
当所述输入数据的索引表示方式为步长索引表示方式时,所述输入数据的索引为所述输入数据中满足所述预设条件的元素与上一个满足所述预设条件的元素之间的距离值组成的字符串;
其中,所述预设条件为:所述输入数据中的元素的绝对值大于(>)或者小于或者等于(≤)预设阈值。
举例说明,假设上述输入数据为向量(3,0,6,4,0.1,0.9)时,预设阈值为0.5,由于向量中元素0和元素0.1的绝对值均小于上述预设阈值,则以直接索引表示方式表示的输入数据的索引为101101。
举例说明,假设上述输入数据为向量(3,0,6,4,0.1,0.9)时,预设阈值为0.5,由于向量中元素0和元素0.1的绝对值均小于上述预设阈值,则以步长索引表示方式表示的输入数据的索引为0212。
可选地,上述输入数据的索引的表示方式还可为坐标列表(Coordinate list,COO)表示方式、压缩稀疏行(Compressed Sparse Row,CSR)表示方式。
具体地,上述输入数据为稀疏数据,且该输入数据以矩阵形式表示的,当上述输入数据的索引为COO表示方式时,该输入数据的索引由至少一个元组组成,所述元组包括输入数据矩阵中绝对值大于预设阈值的元素在所述输入数据矩阵中的行号、列号和该绝对值大于上述预设阈值的元素的值。
具体地,上述输入数据为稀疏数据,且该输入数据以矩阵形式表示的,当上述输入数据的索引表示方式为CSR表示方式时,该输入数据的索引包括三个数组,分别为第一数组,第二数组和第三数组,该第一数组存储上述输入数据矩阵中的绝对值大于预设阈值的元素的值,上述第二数组存储所述输入数据矩阵中的绝对值大于所述预设阈值的元素在该输入数据矩阵中的列索引,上述第三数组用于累加存储上述输入数据矩阵中每一行绝对值大于所述预设阈值的元素的个数,并且该第三数组中的最后一个元素存储上述输入数据矩阵中绝对值大于所述预设阈值的元素的个数。
采用CSR表示方式是把上述输入数据矩阵的行的信息压缩存储了,只显式保留每行第一个绝对值大于上述预设阈值的元素的位置。将上述输入数据的索引通过三个数组表示:
上述第一数组存储上述输入数据矩阵中的所有绝对值大于上述预设阈值的元素的值,其顺序按照从左至右、从上到下的行遍历方式排列元素,该第一数组记作A。该第一数组的长度即输入数据矩阵中绝对值大于上述预设阈值的元素的个数;
上述第二数组存储上述第一数组A中的每个元素分别在输入数据矩阵中的列索引(即列号),因而第二数组的长度与数组A的长度相同,记此数组为JA。
上述第三数组记作IA,该数组IA的长度为输入数据矩阵的行数加1。该数组IA中的元素累加存储上述输入数据矩阵中每一行绝对值大于上述预设阈值的元素的个数,具体可通过如下递归方法获取,并在该数组IA中的最后一个元素中保存整个输入数据矩阵中绝对值大于上述预设阈值的元素的个数
若上述三个数组的序号与输入数据矩阵的序号从0开始,可以用如下的递归方法定义数组IA:
IA[0]=0
IA[i]=IA[i-1]+输入数据矩阵中第i-1行的绝对值大于上述预设阈值的元素的个数(i>0)。
式表示输入数据的索引为:由于上述第一数组A存储上述矩阵中的所有绝对值大于0.5的元素的值,其顺序按照从左到右,从上到下的行遍历方式排列元素,故该第一数组A=[5,8,3,6];第二数组JA存储上述数组A中每个元素分别在上述矩阵中的列索引(即列号),则该数组JA=[0,1,2,1]。在第三数组IA中的第i个元素为该第三数组I中的第i-1个元素与上述矩阵中第i-1行的绝对值大于0.5的元素的个数之和,i=1,2,3,4,5,根据上述递归方式确定该数组IA=[0,0,2,3,4]。
进一步地,上述控制单元103对上述稀疏向量索引或者稀疏矩阵的行索引或者列索引进行索引转换可根据转换指令进行转换。该转换指令包括第一转换指令、第二转换指令、第三转换指令。
其中,上述第一转换指令用于将以直接索引表示方式表示的索引转换为以步长索引表示方式表示的索引。具体地,上述第一转换指令为:DIRECT2STTP(InX,InY)。该第一转换指令的操作码为DIRECT2STTP,操作域包括:InX和InY,该指令中各操作域的功能描述见下表5。
变量 | 功能描述 |
InX | 待转换数据的直接索引的首地址 |
InY | 转换后数据的步长索引的首地址 |
表5
上述控制单元103解析上述第一转换指令后,得到该指令的操作码和操作域;根据上述待转换数据的直接索引的首地址从上述存储器101中,获取该待转换数据的直接索引;然后将该待转换数据的直接索引转换为步长索引,然后将该步长索引存储到上述转换后数据的步长索引的首地址对应的存储空间中。
比如上述直接索引为100101,则对应的步长索引为035。
具体地,上述第一转换指令还可为:DIRECT2STTP(D_TYPE,Nnz,InX,ValX,InY,ValY)。该第一转换指令的操作码为DIRECT2STTP,操作域包括:D_TYPE,Nnz,InX,ValX,InY和ValY,该指令中各操作域的功能描述见下表6。
操作域 | 功能描述 |
D_TYPE | 进行操作的数据类型,支持实数和复数 |
Nnz | 待转换数据中元素的个数 |
InX | 待转换数据的直接索引的首地址 |
ValX | 待转换数据中元素的首地址 |
InY | 转换后数据的步长索引的首地址 |
ValY | 转换后数据中元素的首地址 |
表6
需要指出的是,上述表6中的D_TYPE用于表征进行索引转换的数据的类型。
上述控制单元103解析上述第一转换指令后,得到该指令的操作码和操作域;根据上述待转换数据的直接索引的首地址从上述存储器101中,获取该待转换数据的直接索引;根据上述根据待转换数据中元素的个数和上述待转换数据的首地址从上述存储器101中获取上述待转换数据。
上述控制单元103将上述待转换数据的直接索引转换为步长索引;根据该步长索引对上述待转换数据中的元素进行筛选,以得到转换后的数据,并将该转换后的数据存储到上述转换后数据中元素的首地址对应的存储空间中;将该步长索引存储到上述转换后数据的步长索引的首地址对应的存储空间中。
比如上述待转换数据为向量Mx1=(3,7,5,9,0.4,2.3),上述待转换数据的直接索引为“101101”,上述控制单元103将直接索引转换为步长索引为“0235”,根据该步长索引“0235”对上述向量Mx1中的元素进行筛选,以得到转换后数据为向量(3,5,9,2.3)。
其中,上述第二转换指令用于将以COO索引表示方式表示的矩阵的索引转换为以步长索引表示方式表示的索引。具体地,上述第二转换指令为:COO2STTP(D_TYPE,LAYOUT,Nnz,InXi,InYi,ValX,InY,ValY)。该第二转换指令的操作码为:COO2STTP,操作域包括:D_TYPE,LAYOUT,Nnz,InXi,InYi,ValX,InY和ValY。该指令中各操作域的功能描述见下表7。
操作域 | 功能描述 |
D_TYPE | 进行操作的数据类型,支持实数和复数 |
LAYOUT | 表示矩阵存储格式(包括行主序或列主序) |
Nnz | 待转换数据中绝对值大于预设阈值的数据的数量 |
InXi | 待转换数据的行坐标的首地址 |
InYj | 待转换数据列坐标的首地址 |
ValX | 待转换数据中元素的首地址 |
InY | 转换后数据的步长索引的首地址 |
ValY | 转换后数据中元素的首地址 |
表7
需要指出的是,上述表7中的D_TYPE用于表征进行索引转换的数据的类型。
其中,上述第三转换指令用于将以CSR索引表示方式表示的矩阵的索引转换为以步长索引表示方式表示的索引。具体地,上述第三转换指令为:CSR2STTP(D_TYPE,Nnz,InXr,InYc,ValX,InY,ValY)。该第二转换指令的操作码为:COO2STTP,操作域包括:D_TYPE,Nnz,InXr,InYc,ValX,InY和ValY。该指令中各操作域的功能描述见下表8。
表8
需要指出的是,上述表8中的D_TYPE用于表征进行索引转换的数据的类型。
可选地,上述运算单元104执行指令对输入数据进行运算操作可以包括:直接对稀疏输入数据进行运算,或者根据稀疏输入数据的索引对另一个的待运算数据进行处理后再进行运算等。
具体地,当向量复制指令的输入数据包括标量和向量/矩阵,即该向量复制指令用于执行标量与向量/矩阵之间的运算,上述运算单元104则直接对标量和向量/矩阵进行运算;当向量复制指令为对至少两个向量/矩阵进行运算的指令时,且至少两个向量/矩阵中的至少一个为稀疏向量/矩阵时,则上述运算单元104根据稀疏矩阵/向量的索引对非稀疏矩阵/向量进行数据筛选后再进行运算;当稀疏向量/矩阵的索引的表示方式不是硬件运算部分对应的索引的表示方式(即稀疏向量/矩阵的索引的表示方式不是默认索引表示方式)时,上述运算单元104将以非默认索引表示方式表示的稀疏向量/矩阵的索引转换为以默认索引表示方式的索引,后续再进行相应的运算操作。
举例说明,对于一个标量和稀疏矩阵进行运算,如F=αA,其中,α为一个标量,A为稀疏矩阵,则上述运算单元104可以直接对稀疏数据A的元素进行运算。又如F=AB,其中,A为稀疏矩阵,B为稠密矩阵,则上述运算单元104根据稀疏矩阵A的索引对稠密矩阵B的元素进行筛选,以筛选出与稀疏矩阵A进行运算的元素,然后进行后续运算操作。
在一种可行的实施例中,上述存储器101为高速暂存存储器。
在一种可行的实施例中,如图2所示,上述控制单元103包括:
指令存储单元1031,用于存储所述向量复制指令;
指令处理单元1032,用于对所述向量复制指令进行解析,以得到所述操作码和操作域;
存储队列单元1033,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个向量复制指令。
在一种可行的实施例中,如图3所示,上述运算单元104包括:向量加法电路1041、向量乘法电路1042、大小比较电路1043、非线性运算电路1044和向量标量乘法电路1045。上述运算单元104内部的电路单元可以为多流水级结构,具体的如图4所示,该运算单元104内部的电路单元可分为三个流水级。
其中,第一流水级包括但不限于:向量乘法电路1042和向量标量乘法1045电路等等;第二流水级包括但不限于:大小比较电路1043(例如比较器)和向量加法电路1041等等;第三流水级包括但不限于:非线性运算电路1044(例如激活电路或超越函数计算电路等等)等等。其中上述第一流水级的输出数据为上述第二流水级的输入数据,上述第二流水级的输出数据为上述第三流水级的输入数据。
在一种可行的实施例中,上述运算单元104可包括但不限定于三个部分,分别为乘法器、一个或多个加法器(可选地,多个加法器组成加法树)和激活函数单元/激活函数运算器。上述乘法器将第一输入数据(in1)和第二输入数据(in2)相乘得到第一输出数据(out1),过程为:out1=in1*in2;上述加法树将第三输入数据(in3)通过加法树逐级相加得到第二输出数据(out2),其中in3是一个长度为N的向量,N大于1,过称为:out2=in3[1]+in3[2]+...+in3[N],和/或将第三输入数据(in3)通过加法树累加之后得到的结果和第四输入数据(in4)相加得到第二输出数据(out2),过程为:out2=in3[1]+in3[2]+...+in3[N]+in4,或者将第三输入数据(in3)和第四输入数据(in4)相加得到第二输出数据(out2),过称为:out2=in3+in4;上述激活函数单元将第五输入数据(in5)通过激活函数(active)运算得到第三输出数据(out3),过程为:out3=active(in5),激活函数active可以是sigmoid、tanh、relu、softmax等函数,除了做激活操作,激活函数单元可以实现其他的非线性函数运算,可将输入数据(in)通过函数(f)运算得到输出数据(out),过程为:out=f(in)。
上述运算单元104还可以包括池化单元,池化单元将输入数据(in)通过池化运算得到池化操作之后的输出数据(out),过程为out=pool(in),其中pool为池化操作,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据。
在一种可行的实施例中,上述处理装置100还包括:
依赖关系处理单元105,用于确定第s个向量复制指令与所述第s个向量复制指令之前的第s-1个向量复制指令是否存在关联关系,如所述第s个向量复制指令与所述第s-1个向量复制指令存在关联关系,将所述第s个向量复制指令缓存在所述指令存储单元内,在所述第s-1个向量复制指令执行完毕后,从所述指令存储单元提取所述第s个向量复制指令传输至所述运算单元;
所述确定该第s个向量复制指令与第s个向量复制指令之前的第s-1个向量复制指令是否存在关联关系包括:
依据所述第s个向量复制指令提取所述第s个向量复制指令中所需数据的第一存储地址区间,依据所述第s-1个向量复制指令提取所述第s-1个向量复制指令中所需数据的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,确定所述第s个向量复制指令与所述第s-1个向量复制指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,确定所述第s个向量复制指令与所述第s-1个向量复制指令不具有关联关系。
需要说明的是,上述任意一个表中的同一条指令中的向量或矩阵可以是不同的数据类型,包括浮点定点,位宽,复数等。指令中的变换除了转置和复数求共轭外,还可以包含其它的操作如求逆矩阵等,而且这些变换可以相互组合。对于向量操作可把运算符换成其它的操作类型,例如向量加换成乘、除等,求MAX换成求中间值等等。
对于如图1b所示的处理装置,其实现向量复制指令运算时计算出该向量复制指令的具体结构,即通过一个向量复制指令执行实现多条计算指令执行的组合,需要说明的是,对于处理装置执行该向量复制指令时并未将该向量复制指令拆分成多条计算指令。
需要指出的是,将上述处理装置应用到神经网络运算中,本发明实施例中所提到的矩阵或向量可以看成输入神经元和输出神经元,并且该输入神经元和输出神经元并非是指整个神经网络的输入层中的神经元和输出层中的神经元,而是对于神经网络中任意相邻的两层神经元,处于网络前馈运算下层中的神经元即为输入神经元,处于网络前馈运算上层中的神经元即为输出神经元。以卷积神经网络为例,假设一个卷积神经网络有L层,K=1,2,3…L-1,对于第K层和第K+1层来说,第K层被称为输入层,该层中的神经元为上述输入神经元,第K+1层被称为输入层,该层中的神经元为上述输出神经元,即除了顶层之外,每一层都可以作为输入层,其下一层为对应的输出层。
上述处理装置中各单元可以是硬件电路包括数字电路,模拟电路等等。硬件电路的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器等等。上述处理装置中的运算单元可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。上述存储器均可以是任何适当的磁存储介质或者磁光存储介质,比如RRAM,DRAM,SRAM,EDRAM,HBM,HMC等等。
在一种可行的实施例中,本发明实施例提供了一种运算装置,该运算装置包括一个或多个如图1b所示实施例所述的处理装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的神经网络运算,将执行结果通过I/O接口传递给其他处理装置;
当所述运算装置包含多个所述处理装置时,所述多个所述处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述处理装置通过PCIE总线进行互联并传输数据,以支持更大规模的运算;多个所述处理装置共享同一控制系统或拥有各自的控制系统;多个所述处理装置共享内存或者拥有各自的内存;多个所述处理装置的互联方式是任意互联拓扑。
该运算装置具有较高的兼容性,可通过pcie接口与各种类型的服务器相连接。
在一种可行的实施例中,本发明实施例提供了一种组合处理装置,该组合装置包括如上述运算装置,通用互联接口和其他处理装置。
上述运算装置与上述其他处理装置进行交互,共同完成用户指定的操作。参见图5a,图5a为本发明实施例提供的一种组合处理装置的结构示意图。如图5a所示,该组合处理装置包括上述运算装置501、通用互联接口502和其他处理装置503。
其中,上述其他处理装置503包括中央处理器(Central Processing Unit)、图形处理器(Graphics Processing Unit,GPU)、处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置503所包括的处理器数量不做限制。其他处理装置503作为运算装置501与外部数据和控制的接口,包括数据搬运,完成对本运算装置的开启、停止等基本控制;其他处理装置503也可以和运算装置501协作共同完成运算任务。
上述通用互联接口502,用于在所述运算装置501与其他处理装置503间传输数据和控制指令。该运算装置501从其他处理装置503中获取所需的输入数据,写入运算装置501片上的存储装置;可以从其他处理装置503中获取控制指令,写入运算装置501片上的控制缓存;也可以读取运算装置501的存储模块中的数据并传输给其他处理装置503。
可选的,如图5b所示,上述组合处理装置还包括存储装置504,用于保存在本运算单元/运算装置或其他运算单元所需要的数据,尤其适用于所需要运算的数据在本运算装置501或其他处理装置503的内部存储中无法全部保存的数据。
上述组合装置可以作为手机、机器人、无人机等智能设备的片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。
在一种可行的实施例中,本发明实施例提供了一种神经网络芯片,该神经网络芯片包括如图1b所示实施例所述的处理装置,或者上述运算装置或者上述组合处理装置。
在一种可行的实施例中,本发明实施例提供了一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述神经网络芯片。
在一种可行的实施例中,本发明实施例提供了一种板卡,该板卡包括上述神经网络芯片封装结构。该板卡可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、智能家居、家电、多处理器系统、基于微处理器的系统、机器人、可编程的消费电子设备、网络个人计算机(personalcomputer,PC)、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
在一个实施例里,本公开公开了一个电子装置,其包括了上述板卡或神经网络芯片封装结构11。
电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
参见图6、图6为本发明实施例提供的一种执行向量复制指令的方法的流程示意图。如图6所示,该方法包括:
S601、处理装置获取向量复制指令,并解析所述向量复制指令,以得到所述向量复制指令的操作码和操作域。
S602、处理装置根据所述操作域获取参与向量复制运算的数据。
S603、处理装置对所述参与向量复制运算的数据进行向量复制运算。
在一种可能的实施例中,所述操作域包括:稀疏向量sX5中元素的首地址、稀疏所述向量sX5的索引的首地址、稀疏向量sY5中元素的首地址和稀疏向量sY5的索引的首地址;所述根据所述操作域获取参与向量复制运算的数据,包括:
根据所述向量sX5中元素的首地址获取所述向量sX5;根据所述向量sX5的索引的首地址获取所述向量sX5的索引;
所述对所述参与向量复制运算的数据进行向量复制运算,包括:
将所述稀疏向量sX5中的元素复制到所述稀疏向量sY5中元素的首地址对应的存储空间中;将所述稀疏向量sX5的索引复制到所述稀疏向量sY5的索引的首地址对应的存储空间中。
进一步地,所述操作域还包括:所述稀疏向量sX5的索引表示方式和所述稀疏向量sY5的索引表示方式,且稀疏向量sX5的索引表示方式和稀疏向量sY5的索引表示方式不一致;所述根据所述操作域获取参与向量复制运算的数据,还包括:
在获取所述稀疏向量sX5的索引后,将所述稀疏向量sX5的索引转换为以所述稀疏向量sY5的索引表示方式表的索引,以得到第三索引;
所述对所述参与向量复制运算的数据进行向量复制运算,还包括:
将所述第三索引复制至所述稀疏向量sY5的索引的首地址对应的存储空间。
进一步地,所述操作域还包括:所述稀疏向量sX5中元素的个数;所述根据所述向量sX5中元素的首地址获取所述向量sX5;包括:
根据所述稀疏向量sX5中元素的个数和所述稀疏向量sX5中元素的首地址获取所述稀疏向量sX5。
在一种可能的实施例中,输入数据的索引表示方式包括:直接索引表示方式或步长索引表示方式;其中所述输入数据包括:稀疏向量sX5或稀疏向量sY5。
进一步地,当所述索引表示方式为直接索引表示方式时,所述输入数据的索引为由0和1组成的字符串,0表示所述输入数据中元素不满足预设条件,1表示所述输入数据中的元素满足所述预设条件,或者;
当所述输入数据的索引表示方式为步长索引表示方式时,所述输入数据的索引为所述输入数据中满足所述预设条件的元素与上一个满足所述预设条件的元素之间的距离值组成的字符串;
其中,所述预设条件为:所述输入数据中的元素的绝对值大于或者小于预设阈值。
需要说明的是,上述方法实施例的具体描述可参见图1b所示实施例的相关描述,在此不再叙述。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (14)
1.一种处理装置,用于根据向量复制指令执行运算,其特征在于,所述处理装置包括:存储器、运算单元、控制单元和寄存器单元;
所述寄存器单元,用于存储向量复制指令;所述向量复制指令包括操作码和操作域,所述操作码用于指示进行向量复制运算;所述操作域包括:稀疏向量sX5中元素的首地址、所述稀疏向量sX5的索引的首地址、稀疏向量sY5中元素的首地址和稀疏向量sY5的索引的首地址;
所述存储器,用于存储参与向量复制运算的数据;
所述控制单元,用于从所述寄存器单元中获取所述向量复制指令,解析所述向量复制指令,以得到所述操作码和操作域;根据所述操作域从所述存储器中获取所述参与向量复制运算的数据和所述参与向量复制运算的数据中部分数据或者全部数据的索引;并将所述参与向量复制运算的数据传输至所述运算单元;具体用于:根据所述稀疏向量sX5中元素的首地址从所述存储器中获取所述稀疏向量sX5;根据所述稀疏向量sX5的索引的首地址从所述存储器中获取所述稀疏向量sX5的索引;并将所述稀疏向量sX5及其索引传输至所述运算单元;
所述运算单元,用于对所述参与向量复制运算的数据进行向量复制运算,具体用于:将所述稀疏向量sX5中的元素复制到所述稀疏向量sY5中元素的首地址对应的存储空间中;将所述稀疏向量sX5的索引复制到所述稀疏向量sY5的索引的首地址对应的存储空间中;
其中,所述处理装置还包括:
依赖关系处理单元,用于确定第s个向量复制指令与所述第s个向量复制指令之前的第s-1个向量复制指令是否存在关联关系,如所述第s个向量复制指令与所述第s-1个向量复制指令存在关联关系,将所述第s个向量复制指令缓存在指令存储单元内,在所述第s-1个向量复制指令执行完毕后,从所述指令存储单元提取所述第s个向量复制指令传输至所述运算单元;
所述确定该第s个向量复制指令与第s个向量复制指令之前的第s-1个向量复制指令是否存在关联关系包括:
依据所述第s个向量复制指令提取所述第s个向量复制指令中所需数据的第一存储地址区间,依据所述第s-1个向量复制指令提取所述第s-1个向量复制指令中所需数据的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,确定所述第s个向量复制指令与所述第s-1个向量复制指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,确定所述第s个向量复制指令与所述第s-1个向量复制指令不具有关联关系。
2.根据权利要求1所述的处理装置,其特征在于,所述操作域还包括:所述稀疏向量sX5的索引表示方式和所述稀疏向量sY5的索引表示方式,且稀疏向量sX5的索引表示方式和稀疏向量sY5的索引表示方式不一致;所述控制单元具体用于:
在获取所述稀疏向量sX5的索引后,将所述稀疏向量sX5的索引转换为以所述稀疏向量sY5的索引表示方式表的索引,以得到第三索引;并将所述第三索引传输至所述运算单元;
所述运算单元将所述第三索引复制至所述稀疏向量sY5的索引的首地址对应的存储空间。
3.根据权利要求1或2所述的处理装置,其特征在于,所述操作域还包括:所述稀疏向量sX5中元素的个数;所述控制单元还用于:
根据所述稀疏向量sX5中元素的个数和所述稀疏向量sX5中元素的首地址从所述存储器中获取所述稀疏向量sX5;并将所述稀疏向量sX5传输至所述运算单元;
所述运算单元还用于:
将所述稀疏向量sX5中的元素复制到所述稀疏向量sY5中元素的首地址对应的存储空间中。
4.根据权利要求1或2所述的处理装置,其特征在于,输入数据的索引表示方式还包括:直接索引表示方式或步长索引表示方式;
当所述输入数据的索引表示方式为直接索引表示方式时,所述输入数据的索引为由0和1组成的字符串,0表示所述输入数据中元素不满足预设条件,1表示所述输入数据中的元素满足所述预设条件,或者;
当所述输入数据的索引表示方式为步长索引表示方式时,所述输入数据的索引为所述输入数据中满足所述预设条件的元素与上一个满足所述预设条件的元素之间的距离值组成的字符串;
其中,所述预设条件为:所述输入数据中的元素的绝对值大于或者小于预设阈值。
5.根据权利要求1或2所述的处理装置,其特征在于,所述运算单元还包括向量加法电路、向量乘法电路、大小比较电路、非线性运算电路和向量标量乘法电路;所述运算单元为多流水级结构;
其中,所述向量乘法电路和所述向量标量乘法电路处于第一流水级,所述大小比较电路和所述向量加法电路处于第二流水级,所述非线性运算电路处于第三流水级,其中所述第一流水级的输出数据为所述第二流水级的输入数据,所述第二流水级的输出数据为所述第三流水级的输入数据。
6.根据权利要求1或2所述的处理装置,其特征在于,所述控制单元还包括:
指令存储单元,用于存储所述向量复制指令;
指令处理单元,用于对所述向量复制指令进行解析,以得到所述操作码和操作域;
存储队列单元,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个向量复制指令。
7.一种运算装置,其特征在于,所述运算装置包括一个或多个如权利要求1-6任一项所述的处理装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的运算,将执行结果通过I/O接口传递给其他处理装置;
当所述运算装置包含多个所处理装置时,所述多个所述处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述处理装置通过快速外部设备互连总线或PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算;多个所述处理装置共享同一控制系统或拥有各自的控制系统;多个所述处理装置共享内存或者拥有各自的内存;多个所述处理装置的互联方式是任意互联拓扑。
8.一种组合处理装置,其特征在于,所述组合处理装置包括如权利要求7所述的运算装置,通用互联接口和其他处理装置;
所述运算装置与所述其他处理装置进行交互,共同完成用户指定的操作。
9.一种神经网络芯片,其特征在于,所述神经网络芯片包括如权利要求7所述的运算装置或如权利要求8所述的组合处理装置。
10.一种电子装置,其特征在于,所述电子装置包括如权利要求9所述的神经网络芯片。
11.一种执行向量复制指令的方法,其特征在于,包括:
获取向量复制指令,并解析所述向量复制指令,以得到所述向量复制指令的操作码和操作域;所述操作域包括:稀疏向量sX5中元素的首地址、所述稀疏向量sX5的索引的首地址、稀疏向量sY5中元素的首地址和稀疏向量sY5的索引的首地址;
根据所述操作域获取参与向量复制运算的数据,包括:根据所述稀疏向量sX5中元素的首地址获取所述稀疏向量sX5;根据所述稀疏向量sX5的索引的首地址获取所述稀疏向量sX5的索引;
对所述参与向量复制运算的数据进行向量复制运算,包括:将所述稀疏向量sX5中的元素复制到所述稀疏向量sY5中元素的首地址对应的存储空间中;将所述稀疏向量sX5的索引复制到所述稀疏向量sY5的索引的首地址对应的存储空间中;
所述方法还包括:
确定第s个向量复制指令与所述第s个向量复制指令之前的第s-1个向量复制指令是否存在关联关系,如所述第s个向量复制指令与所述第s-1个向量复制指令存在关联关系,将所述第s个向量复制指令缓存在所述指令存储单元内,在所述第s-1个向量复制指令执行完毕后,从指令存储单元提取所述第s个向量复制指令传输至运算单元;
所述确定该第s个向量复制指令与第s个向量复制指令之前的第s-1个向量复制指令是否存在关联关系包括:
依据所述第s个向量复制指令提取所述第s个向量复制指令中所需数据的第一存储地址区间,依据所述第s-1个向量复制指令提取所述第s-1个向量复制指令中所需数据的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,确定所述第s个向量复制指令与所述第s-1个向量复制指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,确定所述第s个向量复制指令与所述第s-1个向量复制指令不具有关联关系。
12.根据权利要求11所述的方法,其特征在于,所述操作域还包括:所述稀疏向量sX5的索引表示方式和所述稀疏向量sY5的索引表示方式,且稀疏向量sX5的索引表示方式和稀疏向量sY5的索引表示方式不一致;所述根据所述操作域获取参与向量复制运算的数据,包括:
在获取所述稀疏向量sX5的索引后,将所述稀疏向量sX5的索引转换为以所述稀疏向量sY5的索引表示方式表的索引,以得到第三索引;
所述对所述参与向量复制运算的数据进行向量复制运算,还包括:
将所述第三索引复制至所述稀疏向量sY5的索引的首地址对应的存储空间。
13.根据权利要求12所述的方法,其特征在于,所述操作域还包括:所述稀疏向量sX5中元素的个数;所述根据所述稀疏向量sX5中元素的首地址获取所述稀疏向量sX5,包括:
根据所述稀疏向量sX5中元素的个数和所述稀疏向量sX5中元素的首地址获取所述稀疏向量sX5。
14.根据权利要求11-13任一项所述的方法,其特征在于,输入数据的索引表示方式包括:直接索引表示方式或步长索引表示方式,所述输入数据包括:稀疏向量sX5或稀疏向量sY5;
当所述输入数据的索引表示方式为直接索引表示方式时,所述输入数据的索引为由0和1组成的字符串,0表示所述输入数据中元素不满足预设条件,1表示所述输入数据中的元素满足所述预设条件,或者;
当所述输入数据的索引表示方式为步长索引表示方式时,所述输入数据的索引为所述输入数据中满足所述预设条件的元素与上一个满足所述预设条件的元素之间的距离值组成的字符串;
其中,所述预设条件为:所述输入数据中的元素的绝对值大于或者小于预设阈值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810914646.9A CN109032670B (zh) | 2018-08-08 | 2018-08-08 | 神经网络处理装置及其执行向量复制指令的方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810899812.2A CN109062609A (zh) | 2018-02-05 | 2018-08-08 | 神经网络处理装置及其执行运算指令的方法 |
CN201810914646.9A CN109032670B (zh) | 2018-08-08 | 2018-08-08 | 神经网络处理装置及其执行向量复制指令的方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810899812.2A Division CN109062609A (zh) | 2018-02-05 | 2018-08-08 | 神经网络处理装置及其执行运算指令的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109032670A CN109032670A (zh) | 2018-12-18 |
CN109032670B true CN109032670B (zh) | 2021-10-19 |
Family
ID=64469365
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810914646.9A Active CN109032670B (zh) | 2018-08-08 | 2018-08-08 | 神经网络处理装置及其执行向量复制指令的方法 |
CN201810913978.5A Pending CN108960418A (zh) | 2018-08-08 | 2018-08-08 | 神经网络处理装置及其执行矩阵向量乘指令的方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810913978.5A Pending CN108960418A (zh) | 2018-08-08 | 2018-08-08 | 神经网络处理装置及其执行矩阵向量乘指令的方法 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN109032670B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111381871B (zh) * | 2018-12-28 | 2022-12-09 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN109886394B (zh) * | 2019-03-05 | 2021-06-18 | 北京时代拓灵科技有限公司 | 嵌入式设备中三值神经网络权值处理方法及装置 |
CN109919311B (zh) * | 2019-03-13 | 2020-04-10 | 北京地平线机器人技术研发有限公司 | 生成指令序列的方法、执行神经网络运算的方法和装置 |
US12118056B2 (en) * | 2019-05-03 | 2024-10-15 | Micron Technology, Inc. | Methods and apparatus for performing matrix transformations within a memory array |
CN112396186B (zh) * | 2019-08-12 | 2024-05-03 | 上海寒武纪信息科技有限公司 | 执行方法、装置及相关产品 |
CN111949318B (zh) * | 2019-05-17 | 2024-07-23 | 上海寒武纪信息科技有限公司 | 指令处理方法、装置及相关产品 |
CN112394985B (zh) * | 2019-08-12 | 2024-07-26 | 上海寒武纪信息科技有限公司 | 执行方法、装置及相关产品 |
CN112446007A (zh) * | 2019-08-29 | 2021-03-05 | 上海华为技术有限公司 | 一种矩阵运算方法、运算装置以及处理器 |
CN110598175B (zh) * | 2019-09-17 | 2021-01-01 | 西安邮电大学 | 一种基于图计算加速器的稀疏矩阵列向量比较装置 |
CN113836481B (zh) * | 2020-06-24 | 2024-07-02 | 广州希姆半导体科技有限公司 | 矩阵计算电路、方法、电子设备及计算机可读存储介质 |
CN112799635B (zh) * | 2021-02-08 | 2022-11-15 | 算筹(深圳)信息科技有限公司 | 一种新型外积累加求解稠密矩阵与稀疏矩阵内积的方法 |
CN114546251B (zh) * | 2021-05-27 | 2024-08-16 | 北京灵汐科技有限公司 | 权重矩阵数据存储方法、数据获取方法和装置、电子设备 |
CN116795432B (zh) * | 2023-08-18 | 2023-12-05 | 腾讯科技(深圳)有限公司 | 运算指令的执行方法、装置、电路、处理器及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013028739A1 (en) * | 2011-08-25 | 2013-02-28 | Complete Genomics | Phasing of heterozygous loci to determine genomic haplotypes |
CN107680036A (zh) * | 2017-08-15 | 2018-02-09 | 湖北工业大学 | 基于卷积深度堆叠网络的联合稀疏向量并行重建方法 |
CN108121688A (zh) * | 2017-12-15 | 2018-06-05 | 北京中科寒武纪科技有限公司 | 一种计算方法及相关产品 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69132495T2 (de) * | 1990-03-16 | 2001-06-13 | Texas Instruments Inc., Dallas | Verteilter Verarbeitungsspeicher |
US20150067273A1 (en) * | 2013-08-30 | 2015-03-05 | Microsoft Corporation | Computation hardware with high-bandwidth memory interface |
CN107704433A (zh) * | 2016-01-20 | 2018-02-16 | 南京艾溪信息科技有限公司 | 一种矩阵运算指令及其方法 |
CN107315575B (zh) * | 2016-04-26 | 2020-07-31 | 中科寒武纪科技股份有限公司 | 一种用于执行向量合并运算的装置和方法 |
CN109240746B (zh) * | 2016-04-26 | 2020-12-18 | 安徽寒武纪信息科技有限公司 | 一种用于执行矩阵乘运算的装置和方法 |
CN108154228B (zh) * | 2016-12-28 | 2022-04-12 | 上海寒武纪信息科技有限公司 | 一种人工神经网络计算装置和方法 |
CN107729990B (zh) * | 2017-07-20 | 2021-06-08 | 上海寒武纪信息科技有限公司 | 支持离散数据表示的用于执行正向运算的装置及方法 |
CN107861757B (zh) * | 2017-11-30 | 2020-08-25 | 上海寒武纪信息科技有限公司 | 运算装置以及相关产品 |
-
2018
- 2018-08-08 CN CN201810914646.9A patent/CN109032670B/zh active Active
- 2018-08-08 CN CN201810913978.5A patent/CN108960418A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013028739A1 (en) * | 2011-08-25 | 2013-02-28 | Complete Genomics | Phasing of heterozygous loci to determine genomic haplotypes |
CN107680036A (zh) * | 2017-08-15 | 2018-02-09 | 湖北工业大学 | 基于卷积深度堆叠网络的联合稀疏向量并行重建方法 |
CN108121688A (zh) * | 2017-12-15 | 2018-06-05 | 北京中科寒武纪科技有限公司 | 一种计算方法及相关产品 |
Non-Patent Citations (1)
Title |
---|
流体系结构指令管理及系统虚拟化仿真技术研究;何义;《中国博士学位论文全文数据库 (信息科技辑)》;20110815;I137-4 * |
Also Published As
Publication number | Publication date |
---|---|
CN109032670A (zh) | 2018-12-18 |
CN108960418A (zh) | 2018-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109165732B (zh) | 神经网络处理装置及其执行向量乘加指令的方法 | |
CN109032670B (zh) | 神经网络处理装置及其执行向量复制指令的方法 | |
CN109086075B (zh) | 人工智能处理器及使用处理器执行矩阵乘向量指令的方法 | |
CN110825434B (zh) | 计算装置及计算方法 | |
CN110163361B (zh) | 一种计算装置及方法 | |
KR102252137B1 (ko) | 계산 장치 및 방법 | |
WO2018113597A1 (zh) | 矩阵乘加运算装置、神经网络运算装置和方法 | |
CN110163350B (zh) | 一种计算装置及方法 | |
CN111626413A (zh) | 一种计算装置及方法 | |
CN111045728B (zh) | 一种计算装置及相关产品 | |
CN111368987B (zh) | 一种神经网络计算装置和方法 | |
CN109542837B (zh) | 运算方法、装置及相关产品 | |
CN111047024A (zh) | 一种计算装置及相关产品 | |
CN111222632B (zh) | 计算装置、计算方法及相关产品 | |
CN113867686A (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 |