CN109032669B - 神经网络处理装置及其执行向量最小值指令的方法 - Google Patents

神经网络处理装置及其执行向量最小值指令的方法 Download PDF

Info

Publication number
CN109032669B
CN109032669B CN201810912880.8A CN201810912880A CN109032669B CN 109032669 B CN109032669 B CN 109032669B CN 201810912880 A CN201810912880 A CN 201810912880A CN 109032669 B CN109032669 B CN 109032669B
Authority
CN
China
Prior art keywords
vector
instruction
minimum
sparse
data
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
Application number
CN201810912880.8A
Other languages
English (en)
Other versions
CN109032669A (zh
Inventor
王秉睿
周聖元
张尧
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to CN201810912880.8A priority Critical patent/CN109032669B/zh
Publication of CN109032669A publication Critical patent/CN109032669A/zh
Application granted granted Critical
Publication of CN109032669B publication Critical patent/CN109032669B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明提供一种处理装置,包括:存储器、寄存器单元、运算单元和控制单元;存储器存储向量;寄存器单元存储向量最小值指令,控制单元获取向量最小值指令,解析所述向量最小值指令得到操作码和操作域;根据所述操作码从存储器中获取参与向量最小值运算数据;运算单元对参与向量最小值运算的数据进行向量最小值运算。本发明提供的技术方案具有功耗低、计算开销小的优点。

Description

神经网络处理装置及其执行向量最小值指令的方法
技术领域
本发明涉及通信技术领域,具体涉及一种神经网络处理装置及其执行向量最小值指令的方法。
背景技术
现代的通用和专用处理器中,越来越多地引入计算指令(例如向量指令)进行运算。向量指令是使处理器进行向量或者矩阵运算的指令,例如向量的加减、向量的内积、矩阵乘法、矩阵卷积等。向量指令中至少有一个输入为向量或者矩阵或运算结果是向量或矩阵。向量指令可以通过调用处理器内部的向量处理部件来进行并行计算,提高运算速度。现有的向量指令中,其操作数或结果中的向量或矩阵一般是固定规模的,例如ARM处理器中的向量扩展结构Neon中的向量指令一次可以处理长为4的32位浮点向量或者长为8的16位定点向量。所以现有的向量运算指令无法实现可变规模的向量或矩阵的运算。
另一方面,神经网络作为一个高计算量和高访存的算法,权值越多,计算量和访存量都会增大。为了减小计算量和权值数量,从而降低访存量,因此提出了稀疏神经网络。稀疏神经网络的定义为:在神经网络中,值为0的权值的数目很多,并且值为非0的权值分布没有规律,则称该神经网络为稀疏神经网络。定义权值为0的元素数量与神经网络所有权值元素数量的比值为神经网络的稀疏度,如图1a所示。
而现有的向量运算指令无法支持稀疏神经网络中的稀疏向量或稀疏矩阵的运算,更无法实现可变规模的稀疏向量或稀疏矩阵的运算,并且现在的向量运算指令只能实现一种运算,例如一条向量指令只能实现乘法、加法中的一种运算,一条向量指令无法实现二种以上的运算,所以现有的向量运算的运算开销大,能耗高。
发明内容
本发明实施例提供了一种神经网络处理装置及其执行向量最小值指令的方法,可实现单条向量最小值指令实现多种运算的目的,有利于减少运算开销,降低模块的功耗。
第一方面,本发明实施例提供一种处理装置,该处理装置用于根据向量最小值指令执行运算,所述处理装置包括:存储器、运算单元、控制单元和寄存器单元;
所述寄存器单元,用于存储向量最小值指令;所述向量最小值指令包括操作码和操作域,所述操作码用于指示进行向量最小值运算;所述操作域包括所述参与向量最小值运算的数据的首地址和所述参与向量最小值运算的数据中部分数据或者全部数据的索引的地址;
所述存储器,用于存储参与向量最小值运算的数据;
所述控制单元,用于从所述寄存器单元中获取所述向量最小值指令,解析所述向量最小值指令,以得到所述操作码和所述操作域;根据所述操作域从所述存储器中获取所述参与向量最小值运算的数据和所述参与向量最小值运算的数据中部分数据或者全部数据的索引;并将所述参与向量最小值运算的数据传输至所述运算单元;
所述运算单元,用于对所述参与向量最小值运算的数据进行向量最小值运算。
在一种可能的实施例中,所述操作码包括:稀疏向量sX11中元素的首地址和第九标量的首地址;所述控制单元具体用于:
根据所述稀疏向量sX11中元素的首地址从所述存储器中获取所述稀疏向量sX11;并将所述稀疏向量sX11传输至所述运算单元;
所述运算单元具体用于:
获取所述稀疏向量sX11所有元素中最小元素的位置,并将所述最小元素的位置存储至所述第九标量的首地址对应的存储空间中。
进一步地,所述操作域还包括:稀疏向量sX11中元素的个数;
所述控制单元根据所述向量稀疏sX11中元素的首地址从所述存储器中获取所述稀疏向量sX11,包括:
根据所述稀疏向量sX11中元素的首地址和所述稀疏向量sX11中元素的个数从所述存储器中获取所述稀疏向量sX11。
在一种可能的实施例中,所述运算单元还包括向量加法电路、向量乘法电路、大小比较电路、非线性运算电路和向量标量乘法电路;所述运算单元为多流水级结构;
其中,所述向量乘法电路和所述向量标量乘法电路处于第一流水级,所述大小比较电路和所述向量加法电路处于第二流水级,所述非线性运算部件处于第三流水级,其中所述第一流水级的输出数据为所述第二流水级的输入数据,所述第二流水级的输出数据为所述第三流水级的输入数据。
在一种可能的实施例中,所述控制单元还包括:
指令存储单元,用于存储所述向量最小值指令;
指令处理单元,用于对所述向量最小值指令进行解析,以得到所述操作码和操作域;
存储队列单元,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个向量最小值指令。
在一种可能的实施例中,所述处理装置还包括:
依赖关系处理单元,用于确定第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总线进行互联并传输数据,以支持更大规模的神经网络的运算;多个所述处理装置共享同一控制系统或拥有各自的控制系统;多个所述处理装置共享内存或者拥有各自的内存;多个所述处理装置的互联方式是任意互联拓扑。
第三方面,本发明实施例提供了一种组合处理装置,该组合处理装置包括如第二方面所述的运算装置,通用互联接口和其他处理装置;
所述运算装置与所述其他处理装置进行交互,共同完成用户指定的操作。
第四方面,本发明实施例提供了一种神经网络芯片,该神经网络芯片包括上述第一方面所述的处理装置、上述第二方面所述的运算装置或者上述第三方面所述的组合处理装置。
第五方面,本发明实施例提供了一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述第四方面所述的神经网络芯片;
第六方面,本发明实施例提供了一种电子装置,该电子装置包括上述第四方面所述的神经网络芯片或者第五方面所述的神经网络芯片封装结构。
第七方面,本发明实施例提供的一种执行向量最小值指令的方法,包括:
获取向量最小值指令,并解析所述向量最小值指令,以得到所述向量最小值指令的操作码和操作域;
根据所述操作域获取参与向量最小值运算的数据;
对所述参与向量最小值运算的数据进行向量最小值运算。
在一种可能的实施例中,所述操作码包括:稀疏向量sX11中元素的首地址和第九标量的首地址;所述根据所述操作域获取参与向量最小值运算的数据,包括:
根据所述稀疏向量sX11中元素的首地址获取所述稀疏向量sX11;
所述对所述参与向量最小值运算的数据进行向量最小值运算,包括:
获取所述稀疏向量sX11所有元素中最小元素的位置,并将所述最小元素的位置存储至所述第九标量的首地址对应的存储空间中。
进一步地,所述操作域还包括:稀疏向量sX11中元素的个数;
所述根据所述向量稀疏sX11中元素的首地址获取所述稀疏向量sX11,包括:
根据所述稀疏向量sX11中元素的首地址和所述稀疏向量sX11中元素的个数获取所述稀疏向量sX11。
可以看出,通过本发明实施例提供的向量最小值指令,强化了指令的功能,用一条指令代替了原来的多条指令。这样减少了复杂向量、矩阵操作所需的指令数量,简化了向量指令的使用;与多条指令相比,不需要存储中间结果,既节约了存储空间,又避免了额外的读写开销。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a为本发明实施例提供的一种稀疏神经网络的结构示意图;
图1b为本发明实施提供的一种处理装置的结构示意图;
图2为本发明实施例提供的一种处理装置的局部结构示意图;
图3为本发明实施例提供的另一种处理装置的局部结构示意图;
图4为本发明实施例提供的一种处理装置中的运算单元流水级的示意图;
图5a为本发明实施例提供的一种运算装置的结构示意图;
图5b为本发明实施例提供的另一种运算装置的结构示意图;
图6为本发明实施例流提供的一种执行向量最小值指令的方法的流程示意图。
附图中的虚线部件表现可选。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。文中的“/”可以表示“或”。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
参见图1b,图1b为本发明实施例提供的一种处理装置的结构示意图。该处理装置100用于根据向量最小值指令进行运算。如图1b所示,该处理装置100包括:存储器101、寄存器单元102(可选地)、运算单元104和控制单元103。
其中,上述寄存器单元102,用于存储向量最小值指令;该向量最小值指令包括操作码和操作域,该操作码用于指示所述向量最小值指令对应的运算方式;
上述存储器101,用于存储参与向量最小值运算的数据;
上述控制单元103,用于从上述寄存器单元102中获取上述向量最小值指令,并解析该向量最小值指令,以得到上述操作码和操作域;所述操作域包括所述参与向量最小值运算的数据的首地址和所述参与向量最小值运算的数据中部分数据或者全部数据的索引的地址;根据该操作域从上述存储器101中获取所述参与向量最小值运算的数据和所述参与向量最小值运算的数据中部分数据或者全部数据的索引;并将所述参与向量最小值运算的数据传输至所述运算单元104;
所述运算单元104,用于对所述参与向量最小值运算的数据进行向量最小值运算。
在一种可能的实施例中,所述操作码包括:稀疏向量sX11中元素的首地址和第九标量的首地址;所述控制单元具体用于:
根据所述稀疏向量sX11中元素的首地址从所述存储器中获取所述稀疏向量sX11;并将所述稀疏向量sX11传输至所述运算单元;
所述运算单元具体用于:
获取所述稀疏向量sX11所有元素中最小元素的位置,并将所述最小元素的位置存储至所述第九标量的首地址对应的存储空间中。
具体地,上述向量最小值指令用于确定向量中值最小的元素的位置;该向量最小值指令可表示为:AMIN(I_TYPEsX11,ValsX11,C9)。其中,上述向量最小值指令的操作码为AMIN,用于指示进行向量最小值运算;该向量最小值指令的操作域包括I_TYPEsX11,ValsX11和C9,其对应的含义描述见下表1。
操作域 功能描述
I_TYPEsX11 稀疏向量sX11的索引表示方式
ValsX11 稀疏向量sX11中元素的首地址
C9 第九标量c9的首地址
表1
上述控制单元103获取上述向量最小值指令后,解析该向量最小值指令,以得到该向量最小值指令的操作码和操作域。上述控制单元103根据上述稀疏向量sX11中元素的首地址从上述存储器101中获取上述稀疏向量sX11。
需要指出的是,上述稀疏向量sX11是按照默认长度在上述存储器101进行存储的,因此上述控制单元103可以只根据上述稀疏向量sX11中元素的首地址从上述存储器101中获取上述稀疏向量sX11。
上述控制单元103将上述稀疏向量sX11传输至上述运算单元104。该运算单元104遍历该稀疏向量sX11中的每个元素,获取该稀疏向量sX11中值最小的元素在该稀疏向量sX11中的位置,并将该位置存储到上述第九标量c9的首地址对应的存储空间中。
比如上述稀疏向量sX11中的第i个元素的值最小,则上述运算单元104将i存储至上述第九标量c9的首地址对应的存储空间中。
进一步地,所述操作域还包括:稀疏向量sX11中元素的个数;
所述控制单元103根据所述稀疏向量sX11中元素的首地址从所述存储器101中获取所述稀疏向量sX11,包括:
根据所述稀疏向量sX11中元素的首地址和所述稀疏向量sX11中元素的个数从所述存储器101中获取所述稀疏向量sX11。
具体地,上述向量最小值指令还可表示为:AMIN(D_TYPE11,I_TYPEsX11,Nnz11,ValsX11,C9)。其中,上述向量最小值指令的操作码为AMIN,用于指示进行向量最小值运算;该向量最小值指令的操作域包括D_TYPE11,I_TYPEsX11,Nnz11,ValsX11和C9,其对应的含义描述见下表2。
表2
需要指出的是,上述表2中操作域D_TYPE11表征参与上述向量最小值运算的数据的类型。
上述控制单元103根据上述稀疏向量sX11中元素的首地址和稀疏向量sX11中元素的个数从上述存储器101中获取上述稀疏向量sX11。在获取上述稀疏向量sX11后,上述控制单元103按照对上述表1的相关描述对上述稀疏向量sX11进行后续处理,在此不再叙述。
如表1和表2所示的指令的格式表示待进行运算的向量为稀疏向量的情况。其中,向量的长度可变,可以减少指令数量,简化指令的使用;并支持按一定间隔存储的向量格式,避免了对向量格式进行变换的执行开销和存储中间结果的空间占用,和支持多种稀疏向量的索引表示方式,兼容性更高,有利于扩大其指令的适用范围。
可选地,上述运算单元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、处理装置对所述参与向量最小值运算的数据进行向量最小值运算。
在一种可能的实施例中,所述操作码包括:稀疏向量sX11中元素的首地址和第九标量的首地址;所述根据所述操作域获取参与向量最小值运算的数据,包括:
根据所述稀疏向量sX11中元素的首地址获取所述稀疏向量sX11;
所述对所述参与向量最小值运算的数据进行向量最小值运算,包括:
获取所述稀疏向量sX11所有元素中最小元素的位置,并将所述最小元素的位置存储至所述第九标量的首地址对应的存储空间中。
进一步地,所述操作域还包括:稀疏向量sX11中元素的个数;
所述根据所述向量稀疏sX11中元素的首地址获取所述稀疏向量sX11,包括:
根据所述稀疏向量sX11中元素的首地址和所述稀疏向量sX11中元素的个数获取所述稀疏向量sX11。
需要说明的是,上述方法实施例的具体描述可参见图1b所示实施例的相关描述,在此不再叙述。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (11)

1.一种处理装置,用于根据向量最小值指令执行运算,其特征在于,所述处理装置包括:存储器、运算单元、控制单元和寄存器单元;
所述寄存器单元,用于存储向量最小值指令;所述向量最小值指令包括操作码和操作域,所述操作码用于指示进行向量最小值运算;所述操作域包括参与向量最小值运算的数据的首地址和所述参与向量最小值运算的数据中部分数据或者全部数据的索引的地址;
所述存储器,用于存储所述参与向量最小值运算的数据;
所述控制单元,用于从所述寄存器单元中获取所述向量最小值指令,解析所述向量最小值指令,以得到所述操作码和所述操作域;根据所述操作域从所述存储器中获取所述参与向量最小值运算的数据和所述参与向量最小值运算的数据中部分数据或者全部数据的索引;并将所述参与向量最小值运算的数据传输至所述运算单元;
所述运算单元,用于对所述参与向量最小值运算的数据进行向量最小值运算;
其中,所述操作域包括:稀疏向量sX11中元素的首地址和第九标量的首地址;所述控制单元具体用于:
根据所述稀疏向量sX11中元素的首地址从所述存储器中获取所述稀疏向量sX11;并将所述稀疏向量sX11传输至所述运算单元;
所述运算单元具体用于:
获取所述稀疏向量sX11所有元素中最小元素的位置,并将所述最小元素的位置存储至所述第九标量的首地址对应的存储空间中。
2.根据权利要求1所述的处理装置,其特征在于,所述操作域还包括:稀疏向量sX11中元素的个数;
所述控制单元根据所述稀疏向量sX11中元素的首地址从所述存储器中获取所述稀疏向量sX11,包括:
根据所述稀疏向量sX11中元素的首地址和所述稀疏向量sX11中元素的个数从所述存储器中获取所述稀疏向量sX11。
3.根据权利要求1-2任一项所述的处理装置,其特征在于,所述运算单元还包括向量加法电路、向量乘法电路、大小比较电路、非线性运算电路和向量标量乘法电路;所述运算单元为多流水级结构;
其中,所述向量乘法电路和所述向量标量乘法电路处于第一流水级,所述大小比较电路和所述向量加法电路处于第二流水级,所述非线性运算电路处于第三流水级,其中所述第一流水级的输出数据为所述第二流水级的输入数据,所述第二流水级的输出数据为所述第三流水级的输入数据。
4.根据权利要求3所述的处理装置,其特征在于,所述控制单元还包括:
指令存储单元,用于存储所述向量最小值指令;
指令处理单元,用于对所述向量最小值指令进行解析,以得到所述操作码和操作域;
存储队列单元,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个向量最小值指令。
5.根据权利要求4所述的处理装置,其特征在于,所述处理装置还包括:
依赖关系处理单元,用于确定第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个向量最小值指令不具有关联关系。
6.一种运算装置,其特征在于,所述运算装置包括一个或多个如权利要求1-5任一项所述的处理装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的运算,将执行结果通过I/O接口传递给其他处理装置;
当所述运算装置包含多个所述处理装置时,所述多个所述处理装置间通过特定的结构进行连接并传输数据;
其中,多个所述处理装置通过快速外部设备互连总线或PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算;多个所述处理装置共享同一控制系统或拥有各自的控制系统;多个所述处理装置共享内存或者拥有各自的内存;多个所述处理装置的互联方式是任意互联拓扑。
7.一种组合处理装置,其特征在于,所述组合处理装置包括如权利要求6所述的运算装置,通用互联接口和其他处理装置;
所述运算装置与所述其他处理装置进行交互,共同完成用户指定的操作。
8.一种神经网络芯片,其特征在于,所述神经网络芯片包括如权利要求6所述的运算装置或如权利要求7所述的组合处理装置。
9.一种电子装置,其特征在于,所述电子装置包括如权利要求8所述的神经网络芯片。
10.一种执行向量最小值指令的方法,其特征在于,包括:
获取向量最小值指令,并解析所述向量最小值指令,以得到所述向量最小值指令的操作码和操作域;
根据所述操作域获取参与向量最小值运算的数据;
对所述参与向量最小值运算的数据进行向量最小值运算;
其中,所述操作域包括:稀疏向量sX11中元素的首地址和第九标量的首地址;所述根据所述操作域获取参与向量最小值运算的数据,包括:
根据所述稀疏向量sX11中元素的首地址获取所述稀疏向量sX11;
所述对所述参与向量最小值运算的数据进行向量最小值运算,包括:
获取所述稀疏向量sX11所有元素中最小元素的位置,并将所述最小元素的位置存储至所述第九标量的首地址对应的存储空间中。
11.根据权利要求10所述的方法,其特征在于,所述操作域还包括:稀疏向量sX11中元素的个数;
所述根据所述向量稀疏sX11中元素的首地址获取所述稀疏向量sX11,包括:
根据所述稀疏向量sX11中元素的首地址和所述稀疏向量sX11中元素的个数获取所述稀疏向量sX11。
CN201810912880.8A 2018-02-05 2018-08-08 神经网络处理装置及其执行向量最小值指令的方法 Active CN109032669B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810912880.8A CN109032669B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量最小值指令的方法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201810110875.5A CN108388446A (zh) 2018-02-05 2018-02-05 运算模块以及方法
CN201810899812.2A CN109062609A (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行运算指令的方法
CN201810912880.8A CN109032669B (zh) 2018-02-05 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
CN109032669A CN109032669A (zh) 2018-12-18
CN109032669B true CN109032669B (zh) 2023-08-29

Family

ID=63075199

Family Applications (14)

Application Number Title Priority Date Filing Date
CN201810110875.5A Pending CN108388446A (zh) 2018-02-05 2018-02-05 运算模块以及方法
CN201810914599.8A Active CN109086076B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量点积指令的方法
CN201810912901.6A Pending CN109189473A (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量交换指令的方法
CN201810914420.9A Active CN109101273B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量最大值指令的方法
CN201810912880.8A Active CN109032669B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量最小值指令的方法
CN201810914647.3A Active CN109062611B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量缩放指令的方法
CN201810914598.3A Active CN109165041B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量范数指令的方法
CN201810914419.6A Pending CN109117186A (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量外积指令的方法
CN201810912904.XA Active CN109062610B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行吉文斯旋转指令的方法
CN201810914596.4A Active CN109189474B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量加和指令的方法
CN201810914648.8A Active CN109062612B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行平面旋转指令的方法
CN201810914600.7A Active CN109165732B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量乘加指令的方法
CN201810912879.5A Pending CN109101272A (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行矩阵相乘指令的方法
CN201810899812.2A Pending CN109062609A (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行运算指令的方法

Family Applications Before (4)

Application Number Title Priority Date Filing Date
CN201810110875.5A Pending CN108388446A (zh) 2018-02-05 2018-02-05 运算模块以及方法
CN201810914599.8A Active CN109086076B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量点积指令的方法
CN201810912901.6A Pending CN109189473A (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量交换指令的方法
CN201810914420.9A Active CN109101273B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量最大值指令的方法

Family Applications After (9)

Application Number Title Priority Date Filing Date
CN201810914647.3A Active CN109062611B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量缩放指令的方法
CN201810914598.3A Active CN109165041B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量范数指令的方法
CN201810914419.6A Pending CN109117186A (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量外积指令的方法
CN201810912904.XA Active CN109062610B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行吉文斯旋转指令的方法
CN201810914596.4A Active CN109189474B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量加和指令的方法
CN201810914648.8A Active CN109062612B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行平面旋转指令的方法
CN201810914600.7A Active CN109165732B (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行向量乘加指令的方法
CN201810912879.5A Pending CN109101272A (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行矩阵相乘指令的方法
CN201810899812.2A Pending CN109062609A (zh) 2018-02-05 2018-08-08 神经网络处理装置及其执行运算指令的方法

Country Status (3)

Country Link
US (1) US11836497B2 (zh)
CN (14) CN108388446A (zh)
WO (1) WO2019148781A1 (zh)

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110968285A (zh) * 2018-09-28 2020-04-07 上海寒武纪信息科技有限公司 信号处理装置及相关产品
WO2020062392A1 (zh) 2018-09-28 2020-04-02 上海寒武纪信息科技有限公司 信号处理装置、信号处理方法及相关产品
CN111047027A (zh) * 2018-10-12 2020-04-21 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111353125B (zh) * 2018-12-20 2022-04-22 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN111026440B (zh) * 2018-10-09 2022-03-29 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN110096310B (zh) * 2018-11-14 2021-09-03 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN111353595A (zh) * 2018-12-20 2020-06-30 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111353124A (zh) * 2018-12-20 2020-06-30 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN111079907B (zh) * 2018-10-19 2021-01-26 安徽寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111258644B (zh) * 2018-11-30 2022-08-09 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质
CN111813537A (zh) * 2019-04-12 2020-10-23 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111382390B (zh) * 2018-12-28 2022-08-12 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111381872A (zh) * 2018-12-28 2020-07-07 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
WO2020108471A1 (zh) * 2018-11-30 2020-06-04 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111813376A (zh) * 2019-04-12 2020-10-23 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111382850A (zh) * 2018-12-28 2020-07-07 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111813448A (zh) * 2019-04-12 2020-10-23 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111401536A (zh) * 2018-12-28 2020-07-10 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111400341B (zh) * 2019-01-02 2022-12-09 上海寒武纪信息科技有限公司 标量查找指令处理方法、装置及相关产品
CN111382851A (zh) * 2018-12-28 2020-07-07 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111381871B (zh) * 2018-12-28 2022-12-09 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111813450A (zh) * 2019-04-12 2020-10-23 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111381873A (zh) * 2018-12-28 2020-07-07 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111399905B (zh) * 2019-01-02 2022-08-16 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111813449A (zh) * 2019-04-12 2020-10-23 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN109919311B (zh) * 2019-03-13 2020-04-10 北京地平线机器人技术研发有限公司 生成指令序列的方法、执行神经网络运算的方法和装置
CN111723919A (zh) * 2019-03-21 2020-09-29 中科寒武纪科技股份有限公司 数据处理方法、装置及相关产品
CN111723916A (zh) * 2019-03-21 2020-09-29 中科寒武纪科技股份有限公司 数据处理方法、装置及相关产品
CN111723920A (zh) * 2019-03-22 2020-09-29 中科寒武纪科技股份有限公司 人工智能计算装置及相关产品
CN111767995B (zh) * 2019-04-02 2023-12-05 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111949318A (zh) * 2019-05-17 2020-11-17 上海寒武纪信息科技有限公司 指令处理方法、装置及相关产品
CN112395008A (zh) * 2019-08-13 2021-02-23 上海寒武纪信息科技有限公司 运算方法、装置、计算机设备和存储介质
CN112394997A (zh) * 2019-08-13 2021-02-23 上海寒武纪信息科技有限公司 八位整形转半精度浮点指令处理装置、方法及相关产品
CN112394995A (zh) * 2019-08-13 2021-02-23 上海寒武纪信息科技有限公司 半精度浮点转短整形指令处理装置、方法及相关产品
CN112394988A (zh) * 2019-08-13 2021-02-23 上海寒武纪信息科技有限公司 无符号转半精度浮点指令处理装置、方法及相关产品
CN110598175B (zh) * 2019-09-17 2021-01-01 西安邮电大学 一种基于图计算加速器的稀疏矩阵列向量比较装置
CN110647234B (zh) * 2019-09-27 2021-08-17 联想(北京)有限公司 一种指令处理方法及电子设备
CN112765541B (zh) * 2019-11-01 2024-02-23 中科寒武纪科技股份有限公司 数据处理方法、装置、计算机设备和存储介质
CN112784207B (zh) * 2019-11-01 2024-02-02 中科寒武纪科技股份有限公司 运算方法及相关产品
CN111124500B (zh) * 2019-12-12 2022-03-08 浪潮(北京)电子信息产业有限公司 一种指令执行方法、装置、设备及存储介质
CN111027018B (zh) * 2019-12-20 2023-03-31 支付宝(杭州)信息技术有限公司 加速计算设备建模的方法、装置、计算设备及介质
CN111783954B (zh) * 2020-06-30 2023-05-02 安徽寒武纪信息科技有限公司 一种用于确定神经网络的性能的方法、电子设备和存储介质
CN113867797A (zh) * 2020-06-30 2021-12-31 上海寒武纪信息科技有限公司 计算装置、集成电路芯片、板卡、电子设备和计算方法
CN112259071A (zh) * 2020-09-22 2021-01-22 北京百度网讯科技有限公司 语音处理系统、语音处理方法、电子设备和可读存储介质
CN114692847B (zh) * 2020-12-25 2024-01-09 中科寒武纪科技股份有限公司 数据处理电路、数据处理方法及相关产品
CN112835552A (zh) * 2021-01-26 2021-05-25 算筹信息科技有限公司 一种外积累加求解稀疏矩阵与稠密矩阵内积的方法
CN112947908A (zh) * 2021-02-26 2021-06-11 上海商汤智能科技有限公司 代码生成方法、装置、设备及存储介质
CN113076083B (zh) * 2021-06-04 2021-08-31 南京后摩智能科技有限公司 数据乘加运算电路
CN115708090A (zh) * 2021-08-20 2023-02-21 华为技术有限公司 一种计算装置、方法、系统、电路、芯片及设备
CN115437602A (zh) * 2021-10-20 2022-12-06 中科寒武纪科技股份有限公司 任意精度计算加速器、集成电路装置、板卡及方法
WO2023230255A1 (en) * 2022-05-26 2023-11-30 Google Llc Instruction set architecture for matrix operations
CN115248701B (zh) * 2022-09-21 2022-12-20 进迭时空(杭州)科技有限公司 一种处理器寄存器堆之间的零拷贝数据传输装置及方法
CN115576895B (zh) * 2022-11-18 2023-05-02 摩尔线程智能科技(北京)有限责任公司 计算装置、计算方法及计算机可读存储介质

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102750127A (zh) * 2012-06-12 2012-10-24 清华大学 一种协处理器
CN106991077A (zh) * 2016-01-20 2017-07-28 南京艾溪信息科技有限公司 一种矩阵计算装置
CN106990940A (zh) * 2016-01-20 2017-07-28 南京艾溪信息科技有限公司 一种向量计算装置
WO2017185418A1 (zh) * 2016-04-29 2017-11-02 北京中科寒武纪科技有限公司 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法
CN107315574A (zh) * 2016-04-26 2017-11-03 北京中科寒武纪科技有限公司 一种用于执行矩阵乘运算的装置和方法
CN107315567A (zh) * 2016-04-26 2017-11-03 北京中科寒武纪科技有限公司 一种用于执行向量最大值最小值运算的装置和方法
CN107861757A (zh) * 2017-11-30 2018-03-30 上海寒武纪信息科技有限公司 运算装置以及相关产品
WO2018058427A1 (zh) * 2016-09-29 2018-04-05 北京中科寒武纪科技有限公司 神经网络运算装置及方法
CN107957975A (zh) * 2017-12-15 2018-04-24 北京中科寒武纪科技有限公司 一种计算方法及相关产品
CN107992329A (zh) * 2017-07-20 2018-05-04 上海寒武纪信息科技有限公司 一种计算方法及相关产品
CN108009126A (zh) * 2017-12-15 2018-05-08 北京中科寒武纪科技有限公司 一种计算方法及相关产品
CN108197705A (zh) * 2017-12-29 2018-06-22 国民技术股份有限公司 卷积神经网络硬件加速装置及卷积计算方法及存储介质

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL283190A (zh) 1961-09-13
JPH0623977B2 (ja) * 1984-10-17 1994-03-30 株式会社日立製作所 ベクトル処理装置
EP0446721B1 (en) 1990-03-16 2000-12-20 Texas Instruments Incorporated Distributed processing memory
US5721892A (en) 1995-08-31 1998-02-24 Intel Corporation Method and apparatus for performing multiply-subtract operations on packed data
US6115812A (en) 1998-04-01 2000-09-05 Intel Corporation Method and apparatus for efficient vertical SIMD computations
JP4933693B2 (ja) 1998-08-24 2012-05-16 マイクロユニティ システムズ エンジニアリング インコーポレイテッド ワイド・オペランド・アーキテクチャを含むシステムおよび方法
CN100545804C (zh) 2003-08-18 2009-09-30 上海海尔集成电路有限公司 一种基于cisc结构的微控制器及其指令集的实现方法
EP1891515A2 (en) * 2005-05-12 2008-02-27 Cambridge Consultants Limited Processor and interface
US7676647B2 (en) 2006-08-18 2010-03-09 Qualcomm Incorporated System and method of processing data using scalar/vector instructions
JP4755129B2 (ja) 2007-03-16 2011-08-24 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US8281109B2 (en) * 2007-12-27 2012-10-02 Intel Corporation Compressed instruction format
CN101217304B (zh) 2008-01-10 2013-01-30 北京邮电大学 一种多子信道的多输入多输出预编码处理方法
CN102012802B (zh) 2010-11-25 2013-01-16 中国人民解放军国防科学技术大学 面向向量处理器数据交换的方法及装置
GB2502936A (en) * 2011-04-01 2013-12-11 Intel Corp Vector friendly instruction format and execution thereof
CN102360344B (zh) * 2011-10-10 2014-03-12 西安交通大学 矩阵处理器及其指令集和嵌入式系统
US8892851B2 (en) * 2011-11-02 2014-11-18 International Business Machines Corporation Changing opcode of subsequent instruction when same destination address is not used as source address by intervening instructions
US8898516B2 (en) 2011-12-09 2014-11-25 Toyota Jidosha Kabushiki Kaisha Fault-tolerant computer system
JP5834997B2 (ja) * 2012-02-23 2015-12-24 株式会社ソシオネクスト ベクトルプロセッサ、ベクトルプロセッサの処理方法
GB2513105A (en) * 2013-03-15 2014-10-22 Deepmind Technologies Ltd Signal processing systems
US9384168B2 (en) 2013-06-11 2016-07-05 Analog Devices Global Vector matrix product accelerator for microprocessor integration
US20150067273A1 (en) 2013-08-30 2015-03-05 Microsoft Corporation Computation hardware with high-bandwidth memory interface
US9367519B2 (en) 2013-08-30 2016-06-14 Microsoft Technology Licensing, Llc Sparse matrix data structure
US9552205B2 (en) * 2013-09-27 2017-01-24 Intel Corporation Vector indexed memory access plus arithmetic and/or logical operation processors, methods, systems, and instructions
CN103678257B (zh) 2013-12-20 2016-09-28 上海交通大学 基于fpga的正定矩阵浮点求逆器及其求逆方法
CN105468335B (zh) * 2015-11-24 2017-04-12 中国科学院计算技术研究所 流水级运算装置、数据处理方法及片上网络芯片
US20170177360A1 (en) * 2015-12-21 2017-06-22 Intel Corporation Instructions and Logic for Load-Indices-and-Scatter Operations
CN111651205B (zh) * 2016-04-26 2023-11-17 中科寒武纪科技股份有限公司 一种用于执行向量内积运算的装置和方法
CN107315716B (zh) 2016-04-26 2020-08-07 中科寒武纪科技股份有限公司 一种用于执行向量外积运算的装置和方法
CN107315564B (zh) 2016-04-26 2020-07-17 中科寒武纪科技股份有限公司 一种用于执行向量超越函数运算的装置和方法
CN107341547B (zh) * 2016-04-29 2021-04-20 中科寒武纪科技股份有限公司 一种用于执行卷积神经网络训练的装置和方法
US20180074824A1 (en) 2016-09-13 2018-03-15 Apple Inc. Outer Product Engine
CN107239824A (zh) 2016-12-05 2017-10-10 北京深鉴智能科技有限公司 用于实现稀疏卷积神经网络加速器的装置和方法
WO2018107476A1 (zh) * 2016-12-16 2018-06-21 华为技术有限公司 访存设备、计算设备和应用于卷积神经网络运算的设备
US10489063B2 (en) 2016-12-19 2019-11-26 Intel Corporation Memory-to-memory instructions to accelerate sparse-matrix by dense-vector and sparse-vector by dense-vector multiplication
WO2018121472A1 (zh) 2016-12-28 2018-07-05 上海寒武纪信息科技有限公司 一种运算方法
US10474458B2 (en) * 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
US10776699B2 (en) * 2017-05-05 2020-09-15 Intel Corporation Optimized compute hardware for machine learning operations
CN107844832A (zh) 2017-10-30 2018-03-27 上海寒武纪信息科技有限公司 一种信息处理方法及相关产品
CN107943756B (zh) * 2017-12-15 2021-03-23 中科寒武纪科技股份有限公司 一种计算方法及相关产品
US10459866B1 (en) * 2018-06-30 2019-10-29 Intel Corporation Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102750127A (zh) * 2012-06-12 2012-10-24 清华大学 一种协处理器
CN106991077A (zh) * 2016-01-20 2017-07-28 南京艾溪信息科技有限公司 一种矩阵计算装置
CN106990940A (zh) * 2016-01-20 2017-07-28 南京艾溪信息科技有限公司 一种向量计算装置
CN107315567A (zh) * 2016-04-26 2017-11-03 北京中科寒武纪科技有限公司 一种用于执行向量最大值最小值运算的装置和方法
CN107315574A (zh) * 2016-04-26 2017-11-03 北京中科寒武纪科技有限公司 一种用于执行矩阵乘运算的装置和方法
CN107329936A (zh) * 2016-04-29 2017-11-07 北京中科寒武纪科技有限公司 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法
WO2017185418A1 (zh) * 2016-04-29 2017-11-02 北京中科寒武纪科技有限公司 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法
WO2018058427A1 (zh) * 2016-09-29 2018-04-05 北京中科寒武纪科技有限公司 神经网络运算装置及方法
CN107992329A (zh) * 2017-07-20 2018-05-04 上海寒武纪信息科技有限公司 一种计算方法及相关产品
CN107861757A (zh) * 2017-11-30 2018-03-30 上海寒武纪信息科技有限公司 运算装置以及相关产品
CN107957975A (zh) * 2017-12-15 2018-04-24 北京中科寒武纪科技有限公司 一种计算方法及相关产品
CN108009126A (zh) * 2017-12-15 2018-05-08 北京中科寒武纪科技有限公司 一种计算方法及相关产品
CN108197705A (zh) * 2017-12-29 2018-06-22 国民技术股份有限公司 卷积神经网络硬件加速装置及卷积计算方法及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
二维矩阵卷积的并行计算方法;张军阳等;《浙江大学学报(工学版)》;20180315(第03期);全文 *

Also Published As

Publication number Publication date
CN109062609A (zh) 2018-12-21
CN109189474B (zh) 2023-08-29
CN109189473A (zh) 2019-01-11
CN108388446A (zh) 2018-08-10
CN109165041A (zh) 2019-01-08
WO2019148781A1 (zh) 2019-08-08
CN109189474A (zh) 2019-01-11
CN109086076A (zh) 2018-12-25
CN109062611A (zh) 2018-12-21
CN109165732A (zh) 2019-01-08
CN109062610A (zh) 2018-12-21
CN109062612A (zh) 2018-12-21
US11836497B2 (en) 2023-12-05
CN109062610B (zh) 2023-05-26
CN109101273A (zh) 2018-12-28
CN109032669A (zh) 2018-12-18
CN109101273B (zh) 2023-08-25
CN109062612B (zh) 2023-06-27
CN109086076B (zh) 2023-08-25
CN109101272A (zh) 2018-12-28
CN109165732B (zh) 2022-05-31
CN109165041B (zh) 2023-06-30
CN109062611B (zh) 2023-05-23
US20220091849A1 (en) 2022-03-24
CN109117186A (zh) 2019-01-01

Similar Documents

Publication Publication Date Title
CN109032669B (zh) 神经网络处理装置及其执行向量最小值指令的方法
CN109032670B (zh) 神经网络处理装置及其执行向量复制指令的方法
CN108229654B (zh) 神经网络卷积运算装置及方法
CN109284823B (zh) 一种运算装置及相关产品
CN109543832B (zh) 一种计算装置及板卡
CN109522052B (zh) 一种计算装置及板卡
CN110163363B (zh) 一种计算装置及方法
CN111047022B (zh) 一种计算装置及相关产品
KR20190107091A (ko) 계산 장치 및 방법
CN109711540B (zh) 一种计算装置及板卡
CN111488963A (zh) 神经网络计算装置和方法
CN111488976A (zh) 神经网络计算装置、神经网络计算方法及相关产品
CN111047021B (zh) 一种计算装置及相关产品
CN109740730B (zh) 运算方法、装置及相关产品
CN111368967A (zh) 一种神经网络计算装置和方法
CN111368987B (zh) 一种神经网络计算装置和方法
CN111368990B (zh) 一种神经网络计算装置和方法
CN110472734B (zh) 一种计算装置及相关产品
CN111047024A (zh) 一种计算装置及相关产品
CN111290788B (zh) 运算方法、装置、计算机设备和存储介质
CN113934678A (zh) 一种计算装置、集成电路芯片、板卡、设备和计算方法
CN111368985A (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