CN111045728B - 一种计算装置及相关产品 - Google Patents

一种计算装置及相关产品 Download PDF

Info

Publication number
CN111045728B
CN111045728B CN201811194911.7A CN201811194911A CN111045728B CN 111045728 B CN111045728 B CN 111045728B CN 201811194911 A CN201811194911 A CN 201811194911A CN 111045728 B CN111045728 B CN 111045728B
Authority
CN
China
Prior art keywords
data
instruction
unit
conversion
operation 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
Application number
CN201811194911.7A
Other languages
English (en)
Other versions
CN111045728A (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 CN201811194911.7A priority Critical patent/CN111045728B/zh
Publication of CN111045728A publication Critical patent/CN111045728A/zh
Application granted granted Critical
Publication of CN111045728B publication Critical patent/CN111045728B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • 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

Abstract

本申请提供了一种计算装置及相关产品,所述计算装置包括:控制单元,用于获取计算指令;解析所述计算指令得到多个操作指令,将所述多个操作指令发送给所述运算单元,其中,所述操作指令包括操作码以及至少一个操作域,所述操作码用于指示所述操作指令的功能,所述操作域用于指示所述操作指令所指向的输入数据的数据信息,所述操作指令包括转换指令以及运算指令,运算单元,用于根据所述操作指令获取输入数据,并根据操作指令以及所述输入数据执行神经网络运算,所述输入数据包括神经元数据以及权值数据。本申请提供的操作指令能够控制计算装置实现数据类型的转换,减小存储资源和计算资源的开销,提高了运算速度。

Description

一种计算装置及相关产品
技术领域
本申请涉及信息处理技术领域,具体涉及一种计算装置及相关产品。
背景技术
神经网络是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型,这种网络由大量的节点(或称神经元)之间星湖连接构成,通过调整内部大量节点之间相互连接的关系,利用输入数据、权值产生输出数据模拟人脑的信息处理过程处理信息并生成模式识别之后的结果。
随着神经网络技术特别是人工神经网络中深度学习(deep learning)技术的发展,神经网络模型规模越来越大,随之而来的运算量也呈现几何倍数增长,这意味着神经网络需要大量的计算资源和存储资源,大量的计算资源和存储资源的开销会降低神经网络的运算速度,对硬件的传输带宽以及运算器的要求也大大提高了,因此,降低神经网络运算中数据的存储量以及计算量变得十分重要。
发明内容
本申请实施例提供了一种计算装置及相关产品,可以通过操作指令控制计算装置实现数据类型的转换,降低神经网络运算中数据的存储量以及计算量,提高效率、节省功耗。
第一方面,本申请提供了一种计算装置,所述计算装置用于执行神经网络计算,所述计算装置包括:控制单元以及运算单元;
所述控制单元,用于获取计算指令;
所述控制单元,还用于解析所述计算指令得到多个操作指令,将所述多个操作指令发送给所述运算单元,其中,所述操作指令包括操作码以及至少一个操作域,所述操作码用于指示所述操作指令的功能,所述操作域用于指示所述操作指令所指向的输入数据的数据信息,所述数据信息包括寄存器号;所述操作指令包括转换指令以及运算指令,所述转换指令用于控制非幂次格式数据与幂次格式数据之间的相互转换,所述运算指令用于控制神经网络运算,其中,所述输入数据包括神经元数据以及权值数据;
所述运算单元,用于根据所述操作指令获取输入数据,并根据操作指令以及所述输入数据执行神经网络运算。
本申请提供的技术方案,可以通过转换指令指定数据转换类型,利用数据转换电路将非幂次格式数据转换为幂次格式数据,从而可以减少神经网络运算中数据所需的存储空间,减少神经网络运算中的运算量,从而提高运算速度,节省运算时间,降低功耗。
第二方面,本申请实施例提供了一种神经网络运算装置,该神经网络运算装置包括一个或者多个第一方面所述的计算装置。该神经网络运算装置用于从其他处理装置中获取待运算数据和控制信息,并执行指定的神经网络运算,将执行结果通过I/O接口传递给其他处理装置;
当所述神经网络运算装置包含多个所述计算装置时,所述多个所述计算装置间可以通过特定的结构进行链接并传输数据;
其中,多个所述计算装置通过PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算;多个所述计算装置共享同一控制系统或拥有各自的控制系统;多个所述计算装置共享内存或者拥有各自的内存;多个所述计算装置的互联方式是任意互联拓扑。
第三方面,本申请实施例提供了一种组合处理装置,该组合处理装置包括如第三方面所述的神经网络处理装置、通用互联接口,和其他处理装置。该神经网络运算装置与上述其他处理装置进行交互,共同完成用户指定的操作。该组合处理装置还可以包括存储装置,该存储装置分别与所述神经网络运算装置和所述其他处理装置连接,用于保存所述神经网络运算装置和所述其他处理装置的数据。
第四方面,本申请实施例提供了一种神经网络芯片,该神经网络芯片包括上述第一方面所述的计算装置、上述第二方面所述的神经网络运算装置或者上述第三方面所述的组合处理装置。
第五方面,本申请实施例提供了一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述第四方面所述的神经网络芯片;
第六方面,本申请实施例提供了一种板卡,该板卡包括上述第五方面所述的神经网络芯片封装结构。
第七方面,本申请实施例提供了一种电子装置,该电子装置包括上述第六方面所述的神经网络芯片或者上述第六方面所述的板卡。
第八方面,本申请实施例还提供一种执行神经网络运算的计算方法,其特征在于,所述计算方法应用于计算装置,所述计算装置用于执行神经网络计算;所述计算装置包括:控制单元以及运算单元;
所述控制单元获取计算指令;
所述控制单元解析所述计算指令得到多个操作指令,将所述多个操作指令发送给所述运算单元,其中,所述操作指令包括操作码以及至少一个操作域,所述操作码用于指示所述操作指令的功能,所述操作域用于指示所述操作指令所指向的输入数据的数据信息,所述数据信息包括寄存器号;所述操作指令包括转换指令以及运算指令,所述转换指令用于控制非幂次格式数据与幂次格式数据之间的相互转换,所述运算指令用于控制神经网络运算,其中,所述输入数据包括神经元数据以及权值数据;
所述运算单元接收所述输入数据和操作指令,并根据操作指令以及输入数据执行神经网络运算。
在一些实施例中,所述电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
在一些实施例中,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种计算装置的结构示意图。
图2是本申请实施例提供的幂次数据的表示方法示意图。
图3是本申请实施例提供的一种控制单元的结构示意图。
图4是本申请实施例提供的X位定点数据的数据结构示意图。
图5-图6是本申请实施例提供的一种神经网络运算的流程示意图。
图7-图8是本申请实施例提供的一种神经元数据与幂次权值数据的乘法操作示意图。
图9是本申请实施例提供的一种乘法器的结构示意图。
图10是本申请实施例提供一种幂次神经元数据与幂次权值数据的乘法操作示意图。
图11是本申请实施例提供的另一种乘法器的结构示意图。
图12是本申请实施例提供的另一种计算装置的结构示意图。
图13是本申请实施例提供的主处理电路的结构示意图。
图14是本申请实施例提供的另一种计算装置的结构示意图。
图15是本申请实施例提供的树型模块的结构示意图。
图16是本申请实施例提供的另一种计算装置的结构示意图。
图17是本申请实施例提供的一种组合处理装置的结构图。
图18是本申请实施例提供的另一种组合处理装置的结构图。
图19是本申请实施例提供的一种板卡的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本申请提供了一种操作指令,所述操作指令包括但不限于转换指令以及运算指令,其中,转换指令用于控制非幂次格式数据与幂次格式数据之间的相互转换,例如,控制浮点数、定点数以及动态位宽定点数等非幂次格式数据转换为幂次格式数据,控制幂次格式数据转换为指定格式的非幂次数据等。所述运算指令包括卷积运算、池化运算等神经网络特有的层级运算,也可以包括向量内积、向量外积、矩阵乘向量、矩阵乘矩阵等神经网络中常见的基础运算。本申请具体实施方式并不限制上述指令的具体表现形式。所述操作指令用于神经网络计算中,具体地,用于执行神经网络计算的计算装置中,下面结合所述计算装置对本申请进行介绍。
首先介绍本申请使用的计算装置。参阅图1,图1是本申请实施例提供法人一种计算装置结构示意图,该计算装置用于执行神经网络计算,该计算装置包括:控制单元11和运算单元12,其中,控制单元11与运算单元12连接。
所述控制单元11,用于获取计算指令;在一种可选方案中,具体的,获取计算指令方式可以通过数据输入输出单元得到,该数据输入输出单元具体可以为一个或多个数据I/O接口或I/O引脚。
所述控制单元11,还用于解析所述计算指令得到多个操作指令,将所述多个操作指令发送给所述运算单元以及存储单元,其中,所述多个操作指令中每个操作指令包括操作码以及至少一个操作域,所述操作码用于指示所述操作指令的功能,所述操作域用于指示所述操作指令所指向的输入数据的数据信息,所述操作指令包括转换指令以及运算指令,所述转换指令用于控制非幂次格式数据与幂次格式数据之间的相互转换,所述运算指令用于控制神经网络运算,其中,所述输入数据包括神经元数据以及权值数据;
所述运算单元12,用于根据每个所述操作指令获取对应的所述输入数据,并根据所述操作指令以及所述输入数据执行神经网络运算。
所述运算单元12包括主处理电路101以及多个从处理电路102,所述主处理电路101,用于对所述输入数据执行前序处理以及与所述多个从处理电路之间传输数据以及运算指令;
多个从处理电路102,用于依据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;
主处理电路101,用于对所述多个中间结果执行后续处理得到所述计算指令的计算结果。
所述运算单元12包括第一数据转换电路,用于在所述转换指令的作用下将所述输入数据中的非幂次格式的神经元数据和/或非幂次格式的权值数据转换为幂次格式的数据;
所述运算单元12还包括第二数据转换电路,所述第二数据转换电路用于在所述转换指令的作用下将幂次格式数据转换为非幂次格式数据,例如,将所述主处理电路101得到的计算结果转换为指定格式的非幂次格式数据。
可以理解,本申请实施例中,所述第一数据转换电路即可位于主处理电路中,也可位于每个从处理电路中,所述第二数据转换电路即可位于主处理电路中,也可位于每个从处理电路中,本申请实施例不做具体限定,图1是所述第一数据转换电路位于从处理电路中,所述第二数据转换电路位于主处理电路中的示意图。
可选的,上述输入数据具体可以包括:神经元数据和权值数据。上述计算结果具体可以为:神经网络运算的结果即输出神经元数据。
上述计算装置还可以包括:存储单元10和直接内存访问单元50,存储单元10可以包括:寄存器、缓存中的一个或任意组合,具体的,所述缓存,用于存储所述计算指令;所述寄存器,用于存储所述输入数据和标量;所述缓存为高速暂存缓存。直接内存访问单元50用于从存储单元10读取数据或向所述存储单元10存储数据。
本申请实施例中,如图2所示,所述控制单元11包括:指令缓存单元110、指令处理单元111、依赖关系处理单元112以及存储队列单元113;
指令缓存单元110,用于存储所述人工神经网络运算关联的计算指令,在第零计算指令在被执行的过程中,同时将未被提交执行的其他指令缓存在所述指令缓存单元110中,当所述第零计算指令执行完之后,如果第一计算指令是指令缓存单元110中未被提交指令中最早的一条指令,则所述第一计算指令将被提交,一旦提交,该指令进行的操作对装置状态的改变将无法撤销;
所述指令处理单元111,用于从所述指令缓存单元获取所述计算指令,并对所述计算指令解析得到多个操作指令;
所述依赖关系处理单元112,用于在具有多个操作指令时,确定第一操作指令与所述第一操作指令之前的第零操作指令是否存在关联关系,如所述第一操作指令与所述第零操作指令存在关联关系,则将所述第一操作指令存储到指令队列单元113内,在所述第零操作指令执行完毕后,所述第一操作指令与所述第零操作指令的关联关系解除,则从所述指令队列单元113中提取所述第一操作指令传输至所述运算单元;
所述确定该第一操作指令与第一操作指令之前的第零操作指令是否存在关联关系包括:
依据所述第一操作指令提取所述第一操作指令中所需数据(例如矩阵)的第一存储地址区间,依据所述第零操作指令提取所述第零操作指令中所需矩阵的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一操作指令与所述第零操作指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,则确定所述第一操作指令与所述第零操作指令不具有关联关系。
存储队列单元113,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个操作指令或计算指令。
本申请实施例中,如图2所示,所述指令处理单元111包括取指模块、译码模块以及指令队列,其中,所述取指模块,用于从所述指令缓存单元110中获取神经网络的计算指令;所述译码模块用于对所述取指模块获取的计算指令进行译码,得到神经网络的操作指令;所述指令队列用于对译码后得到的操作指令,按照待执行的先后顺序进行顺序存储。
本申请实施例中,该运算装置的操作指令包括但不限于:转换指令以及运算指令等,其中,转换指令用于控制非幂次格式数据与幂次格式数据之间的相互转换,例如,控制第一数据转换电路将浮点数、定点数以及动态位宽定点数等非幂次格式数据转换为幂次格式数据,控制第二数据转换电路将幂次格式数据转换为指定格式的非幂次数据等。所述运算指令包括卷积运算、池化运算等神经网络特有的层级运算,也可以包向量内积、向量外积、矩阵乘向量、矩阵乘矩阵等神经网络中常见的基础运算。本申请具体实施方式并不限制上述指令的具体表现形式。
本申请实施例中,所述操作指令包括操作码,所述操作指令还可以包括至少一个操作域,其中,操作码用于指示该指令的功能,运算单元通过识别该操作码可进行不同的指令类型,操作域用于指示该指令的数据信息,其中,数据信息可以是立即数或寄存器号,通过数据信息可以获取一个数据值或一组数据的地址。
在一种可选方案中,该计算指令的结构可以如下表1所示。
表1
操作码 寄存器或立即数 寄存器/立即数 ...
上表中的省略号表示可以包括多个寄存器或立即数。
在另一种可选方案中,该计算指令可以包括:一个或多个操作域以及一个操作码。该计算指令可以包括神经网络运算指令。以神经网络运算指令为例,如表2所示,其中,寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以为操作域。其中,每个寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以是一个或者多个寄存器的号码。
表2
Figure BDA0001827366900000051
上述寄存器可以为片外存储器,当然在实际应用中,也可以为片内存储器,用于存储数据,该数据具体可以为n维数据,n为大于等于1的整数,例如,n=1时,为1维数据,即向量,如n=2时,为2维数据,即矩阵,如n=3或3以上时,为多维张量。
本申请实施例中,在操作指令为转换指令的情况下,所述转换指令中的操作码可以包括主操作码和子操作码,所述主操作码用于标记数据转换类型,具体包括浮点数据转换为幂次数据(FLM),定点数据转换为幂次数据(FXM),幂次数据转换为浮点数据(MFL)以及幂次数据转换为定点数据(MFX)等,所述定点数据可以是动态位宽定点数,所述子操作码用于标记数据转换时具体的转换要求,具体包括对数据做取上整操作,对数据做取下整操作,对数据做四舍五入操作,对数据做归零操作以及对数据做随机向上向下取整操作等。
在一种可能的实施方式中,上述定点数据的结构如图3所示,图3所示为有符号的定点数据,该定点数据占X比特位,因此该定点数据可称为X位定点数据。其中,对于有符号的定点数据,该X位定点数据包括占1比特的符号位、M比特的整数位和N比特的小数位,即X-1=M+N。对于无符号的定点数据,只包括M比特的整数位和N比特的小数位,即X=M+N。
相比于32位浮点数据表示形式,本发明采用的短位定点数据表示形式除了占用比特位数更少外,对于网路模型中同一层、同一类型的数据,如第一个卷积层的所有卷积核、输入神经元或者偏置数据,还另外设置了一个标志位(Point Location)记录定点数据的小数点位置,这样可以根据输入数据的分布来调整上述标志位的位置,从而达到调整定点数据的精度与定点数据可表示范围。
下面举例说明转换指令中操作码的作用,若操作码为FLM-A,其中,FLM为主操作码,A为子操作码,表示对数据做取下整操作,则根据操作码FLM-A执行如下转换操作:
sout=sin
Figure BDA0001827366900000061
其中,din为数据转换电路的输入数据,dout为数据转换电路的输出数据,sin为输入数据的符号,sout为输出数据的符号,din+为输入数据的正数部分,din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout
Figure BDA0001827366900000062
表示对数据x做取下整操作。
若操作码为FLM-B,其中,FLM为主操作码,B为子操作码,表示对数据做取上整操作,则根据操作码FLM-B执行如下转换操作:
sout=sin
Figure BDA0001827366900000063
其中,din为数据转换电路的输入数据,dout为数据转换电路的输出数据,sin为输入数据的符号,sout为输出数据的符号,din+为输入数据的正数部分,din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout
Figure BDA0001827366900000064
表示对数据x做取上整操作。
若操作码为FLM-C,其中,FLM为主操作码,C为子操作码,表示对数据做四舍五入操作,则根据操作码FLM-C执行如下转换操作:
sout=sin
dout+=[log2(din+)]
其中,din为数据转换电路的输入数据,dout为数据转换电路的输出数据;sin为输入数据的符号,sout为输出数据的符号;din+为输入数据的正数部分,din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout;[x]表示对数据x做四舍五入操作。
若操作码为FLM-D,其中,FLM为主操作码,D为子操作码,表示对数据做归零操作,则根据操作码FLM-D执行如下转换操作:
dout={din}
其中,din为数据转换电路的输入数据,dout为数据转换电路的输出数据;{x}表示对数据x做归0操作。
若操作码为FLM-E,其中,FLM为主操作码,E为子操作码,表示对数据做随机向上向下取整操作,则根据操作码FLM-E执行如下转换操作:
Sout=Sin
dout+=[[log2(din+)]]
其中,din为数据转换电路的输入数据,dout为数据转换电路的输出数据;sin为输入数据的符号,sout为输出数据的符号;din+为输入数据的正数部分,din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout;[[x]]表示对数据x做随机向上向下取整操作。
本申请实施例中,所述转换指令的操作域用于指示所述转换指令的数据信息,所述数据信息包括所述转换指令所指向的数据对应的寄存器号,可选的,所述操作域还可以包括所述转换指令需要读取的数据的个数信息和/或转换后的数据的存储地址信息。在一具体的实施例中,所述转换指令可以如下表3所示:
表3
Figure BDA0001827366900000071
执行上表所示的转换指令时,运算单元从寄存器Reg1中读取待转换数据的地址addr1,然后从addr1中读取Num个带转换的非幂次数据,再将待转换的非幂次数据传送至运算单元中的第一数据转换电路中执行取下整操作,待转换完成后,将转换后得到的幂次数据传送至寄存器2中指定的地址中保存。
可选地,若所述转换指令的操作域中没有需要读取的数据的个数信息,则表示需要读取的数据为固定的数据个数,可以是一个数据、一行数据或者是一列数据等,本申请实施例不做具体限制。
可选地,若所述转换指令的操作域中没有转换后的数据的存储地址信息,则表示将转换后的数据传送至寄存器Reg1指定的地址中保存。
通过上述转换指令,可以将非幂次数据转换为幂次数据,从而可以减少神经网络计算存储数据所需的存储空间。在本实施例所提供示例中,幂次数据为8位数据,应当认识到,该数据长度不是固定不变的,在不同场合下,根据数据的数据范围采用不同的数据长度。
在操作指令为运算指令的情况下,所述运算指令的操作码可以包括主操作码以及子操作码,所述主操作码用于标记运算类型,具体包括:卷积运算(CONV),池化运算(POOL)、激活运算(ACT)等,还包括向量点积(DOT)、向量外积(OPT)、矩阵乘向量(MMV)、矩阵乘矩阵(MMM)等。子操作码用于标记数据类型,例如标记参与运算的数据是否为幂次数据。具体的,例如,参与运算的数据有两个(第一输入数据和第二输入数据)。子操作码标记第一输入数据是幂次数据,第二输入数据是非幂次数据,该运算指令即执行第一输入数据和第二输入数据的运算。再例如,子操作码标记第一输入数据是幂次数据,第二输入数据是浮点数据(即具体指定是什么格式的非幂次数据)。再例如,子操作码标记第一输入数据是幂次数据,第二输入数据是定点数据。所述运算指令的操作域用于指示所述运算指令的数据信息,所述数据信息包括所述运算指令所指向的数据对应的寄存器号,可选的,所述操作域还可以包括所述转换指令需要读取的数据的个数信息和/或转换后的数据的存储地址信息。
在一具体的实施例中,所述运算指令可以如下表4所示:
表4
Figure BDA0001827366900000081
执行上表所示的运算指令时,控制单元执行从寄存器Reg1中指定的地址中读取Num1个神经元数据,从寄存器Reg2中指定的地址中读取Num2个权值数据,将数据传送到运算单元执行卷积操作。子操作码S标记权值数据为幂次格式数据,神经元数据为非幂次幂次数据。待运算单元运算完毕后,得到运算结果,将运算结果存入寄存器Reg3中指定的地址空间中。
在另一具体的实施例中,所述运算指令可以如下表5所示:
表5
Figure BDA0001827366900000082
执行上表所示的运算指令时,控制单元执行从寄存器Reg1中指定的地址中读取Num1个矩阵数据,从寄存器Reg2中指定的地址中读取Num2个向量数据,将数据传送到运算单元执行矩阵乘向量的操作。子操作码T标记矩阵数据和向量数据均为幂次格式数据。待运算完毕后,得到运算结果,将运算结果存入寄存器Reg3指定的地址空间中。
可选地,若所述运算指令的操作域中没有需要读取的数据的个数信息,则表示需要读取的数据为固定的数据个数,可以是一个数据、一行数据或者是一列数据等,本申请实施例不做具体限制。
在一种可能的实施方式中,运算单元12在进行所述神经网络运算时,可以通过上述转换指令将输入数据中的权值数据转换为幂次格式数据进行运算,还可以将输入数据中的神经元数据和权值数据转换为幂次根式数据进行运算。
所述幂次格式数据表示数据的数值采用其幂指数值形式表示,具体为,幂次数据包括符号位和幂次位,符号位用一位或多位比特位表示数据的符号,幂次位用m位比特位表示数据的幂次位数据,m为大于1的正整数。存储单元预存有编码表,提供幂次数据的每个幂次位数据对应的指数数值。编码表设置一个或者多个幂次位数据(即置零幂次位数据)为指定对应的幂次数据为0。也就是说,当幂次数据的幂次位数据是编码表里的置零幂次位数据时候,表示该幂次数据为0。
其中,所述编码表的对应关系可以是任意的。例如,所述编码表的对应关系可以是乱序的。如表6所示,一种m为5的编码表的部分内容,幂次位数据为00000的时候对应指数数值为0。幂次位数据为00001的时候对应指数数值为3。幂次位数据为00010的时候对应指数数值为4。幂次位数据为00011的时候对应指数数值为1。幂次位数据为00100的时候对应幂次数据为0。
表6
幂次位数据 00000 00001 00010 00011 00100
指数数值 0 3 4 1 置零
可选地,所述编码表的对应关系也可以是正相关的,存储单元预存一个整数值x和一个正整数值y,最小的幂次位数据对应指数数值为x,其他任意一个或多个幂次位数据对应幂次数据为0。x表示偏置值,y表示步长。在一种实施例情况下,最小的幂次位数据对应指数数值为x,最大的幂次位数据对应幂次数据为0,最小和最大的幂次位数据之外的其他的幂次位数据对应指数数值为(幂次位数据+x)*y。通过预设定不同的x和y以及通过改变x和y的数值,幂次的表示范围变得可配,可以适用于需要不同数值范围的不同的应用场景。因此,本神经网络运算装置的应用范围更加广泛,使用更加灵活可变,可根据用户需求来做调整。
在一种实施方式中,y为1,x的数值等于-2m-1。由此幂次数据所表示的数值的指数范围为-2m-1~2m-1-1。
在一种实施方式中,如表7所示,一种m为5,x为0,y为1的编码表的部分内容,幂次位数据为00000的时候对应指数数值为0。幂次位数据为00001的时候对应指数数值为1。幂次位数据为00010的时候对应指数数值为2。幂次位数据为00011的时候对应指数数值为3。幂次位数据为11111的时候对应幂次数据为0。如表8所示,另一种m为5,x为0,y为2的编码表的部分内容,幂次位数据为00000的时候对应指数数值为0。幂次位数据为00001的时候对应指数数值为2。幂次位数据为00010的时候对应指数数值为4。幂次位数据为00011的时候对应指数数值为6。幂次位数据为11111的时候对应幂次数据为0。
表7
幂次位数据 00000 00001 00010 00011 11111
指数数值 0 1 2 3 置零
表8
幂次位数据 00000 00001 00010 00011 11111
指数数值 0 2 4 6 置零
可选地,编码表的对应关系可以是负相关的,存储单元预存一个整数值x和一个正整数值y,最大的幂次位数据对应指数数值为x,其他任意一个或多个幂次位数据对应幂次数据为0。x表示偏置值,y表示步长。在一种实施例情况下,最大的幂次位数据对应指数数值为x,最小的幂次位数据对应幂次数据为0,最小和最大的幂次位数据之外的其他的幂次位数据对应指数数值为(幂次位数据-x)*y。通过预设定不同的x和y以及通过改变x和y的数值,幂次的表示范围变得可配,可以适用于需要不同数值范围的不同的应用场景。因此,本神经网络运算装置的应用范围更加广泛,使用更加灵活可变,可根据用户需求来做调整。
在一种实施方式中,y为1,x的数值等于2m-1。由此幂次数据所表示的数值的指数范围为-2m-1-1~2m-1
如表9所示,一种m为5的编码表的部分内容,幂次位数据为11111的时候对应数数值为0。幂次位数据为11110的时候对应指数数值为1。幂次位数据为11101的时候对应指数数值为2。幂次位数据为11100的时候对应指数数值为3。幂次位数据为00000的时候对应幂次数据为0。
表9
幂次位数据 11111 11110 11101 11100 00000
指数数值 0 1 2 3 置零
可选地,编码表的对应关系可以是幂次位数据最高位代表置零位,幂次位数据其他m-1位对应指数数值。当幂次位数据最高位为0时,对应幂次数据为0;当幂次位数据最高位为1时,对应幂次数据不为0。反之亦可,即当幂次位数据最高位为1时,对应幂次数据为0;当幂次位数据最高位为0时,对应幂次数据不为0。用另一种语言来描述,即幂次数据的幂次位被分出一个比特来指示幂次数据是否为0。
在一种实施方式中,如图4所示,符号位为1位,幂次位数据位为7位,即m为7。编码表为幂次位数据为11111111的时候对应幂次权值数据为0,幂次位数据为其他数值的时候幂次权值数据对应相应的二进制补码。当幂次权值数据符号位为0,幂次位为0001001,则其表示具体数值为29,即512;幂次权值数据符号位为1,幂次位为1111101,则其表示具体数值为-2-3,即-0.125。相对于浮点数据,幂次数据只保留数据的幂次位,极大减小了存储数据所需的存储空间。
通过上述转换指令,运算单元可以根据所述转换指令读取待转换数据,进而根据所述转换指令将非幂次数据转换为幂次数据,从而可以减少存储数据所需的存储空间。通过上述运算指令,运算单元可以根据所述运算指令从存储单元读取输入数据,其中,所述输入数据根据所述转换指令转换后得到的幂次数据,并根据所述运算指令以及所述输入数据完成包含幂次数据的神经网络运算,幂次数据的运算可以减少神经网络运算中的运算量,提高运算速度,进而降低功耗。本实施例所提供示例中,幂次数据为8位数据,应当认识到,该数据长度不是固定不变的,在不同场合下,根据数据权值的数据范围采用不同的数据长度。
本申请实施例中,所述计算装置执行所述神经网络运算的过程如图5所示,包括:
S1,控制单元读取计算指令,并将所述计算指令译码解析为运算指令。
所述控制单元从所述存储单元读取所述计算指令之后,将所述计算指令解析为操作指令,并将所述操作指令发送至运算单元。具体的,所述控制单元11中指令处理单元111的取指模块从指令缓存单元110中获取计算指令,并将该指令传送至译码模块,所述译码模块对所述计算指令进行译码,得到操作指令,并将所述操作指令根据预设指令规则拆分为操作码和各个不同的操作域,其中,操作码和操作域的组成与作用可参照前文,在此不再赘述。所述译码模块将译码后得到的操作指令传送至指令队列中进行顺序存储,在所述指令队列中,根据所述运操作指令的操作码和操作与获取该指令对应的待处理数据的数据地址,并将所述数据地址传送是依赖关系处理单元112中,依赖关系处理单元分析该指令与正在执行的指令是否存在关联关系,若存在,则将该操作指令存储到存储队列单元113中直至所述关联关系解除,若不存在关联关系,则将该操作指令发送至运算单元中执行对应的操作。
S2,运算单元接收所述控制单元的操作指令,并根据从存储单元中读取的待运算数据进行神经网络运算。
其中,所述待运算数据包括神经网络数据以及权值数据,具体的,所述运算单元进行神经网络运算的步骤如图6所示,包括:
步骤S21,运算单元从存储单元中读取权值数据。
在一种可能的实施方式中,所述第一数据转换电路位于主处理电路,所述运算单元的所述主处理电路从存储单元读取权值数据之后,如果所述权值数据为幂次数据,则所述主处理电路将所述权值数据传送给所述多个从处理电路,如果所述权值数据不是幂次格式数据,则所述主处理电路根据操作指令中的转换指令,利用所述第一数据转换电路将所述权值数据转换为幂次格式数据,即幂次权值数据,然后将所述幂次权值数据传送给所述多个从处理电路。
可选地,所述主处理电路利用所述第一数据转换单元将所述权值数据转换为幂次权值数据之后,可以将所述幂次权值数据传送至所述存储单元中保存。
在一种可能的实施方式中,所述第一数据转换电路位于从处理电路中,即所述多个从处理电路中每个从处理电路都包括第一数据转换电路,所述主处理电路从所述存储单元中读取权值数据之后,将所述权值数据传送给所述多个从处理电路,所述多个从处理电路接收所述权值数据之后,如果所述权值数据不是幂次格式数据,则所述多个从处理电路根据操作指令中的转换指令,利用所述第一数据转换电路将所述权值数据转换为幂次格式数据,即幂次权值数据。
可选地,所述主处理电路或者所述每个从处理电路可以包括缓存或者寄存器,例如权值缓存模块,用于暂存所述幂次权值数据和/或其他数据,从而可以减少从处理电路每次进行运算时需要传输的数据,节省带宽。
步骤S22,主处理电路读取相对应的神经元数据,并将所述神经元数据按照指定顺序依次广播给各个从处理电路。
其中,所述神经元数据可以只广播一次,从处理电路接收该数据后暂存到缓存或寄存器中,便于对其进行复用。所述神经元数据也可以进行多次广播,从处理电路接收到数据之后直接使用,无需复用。
在一种可能的实施方式中,所述主处理电路读取所述神经元数据之后,直接将所述神经元数据进行广播。
在一种可能的实施方式中,所述运算单元也可以将所述神经元数据转换为幂次数据,所述第一数据转换电路位于主处理电路,所述运算单元的所述主处理电路从存储单元读取神经元数据之后,如果所述神经元数据为幂次格式数据,则所述主处理电路按照指定顺序将幂次神经元数据依次广播给各个从处理电路,如果所述神经元数据不是幂次格式数据,则所述主处理电路根据操作指令中的转换指令,利用所述第一数据转换电路将所述神经元数据转换为幂次格式数据,即幂次神经元数据,然后将所述幂次神经元数据按照指定顺序依次广播给各个从处理电路。
可选地,所述主处理电路利用所述第一数据转换单元将所述神经元数据转换为幂次神经元数据之后,可以将所述幂次神经元数据传送至所述存储单元中保存。
在一种可能的实施方式中,所述运算单元也可以将所述神经元数据转换为幂次数据,所述第一数据转换电路位于从处理电路中,即所述多个从处理电路中每个从处理电路都包括第一数据转换电路,所述主处理电路从所述存储单元中读取神经元数据之后,将所述神经元数据按照指定顺序依次广播给各个从处理电路,所述多个从处理电路接收所述神经元数据之后,如果所述神经元数据不是幂次格式数据,则所述多个从处理电路根据操作指令中的转换指令,利用所述第一数据转换电路将所述神经元数据转换为幂次格式数据,即幂次神经元数据。
可选地,所述主处理电路或者所述每个从处理电路可以包括缓存或者寄存器,例如神经元缓存模块,用于暂存所述幂次神经元数据和/或其他数据,从而可以减少从处理电路每次进行运算时需要传输的数据,节省带宽。
在本实施例所提供示例中,幂次数据为8位数据,可以理解,该数据长度不是固定不变的,在不同场合下,根据神经元数据及权值数据的数据范围采用不同的数据长度。
可选地,上述步骤S21以及步骤S22中,主处理电路或者从处理电路可以根据待处理任务的特点,判断是否需要进行数据转换,例如根据待处理任务的任务复杂度确定是否对数据进行转换,具体的,任务复杂度根据任务的类型和数据的规模进行定义,譬如,对于神经网络卷积层的反向运算,复杂度=α*C*kW*kW*M*N*W*C*H,其中,α为卷积系数,取值范围为大于1;C、kW、kW、M为卷积核四个维度的值,N、W、C、H为卷积输入数据四个维度的值;对于矩阵乘矩阵运算的反向运算,其复杂度=β*F*G*E*F;其中,β为矩阵系数,取值范围为大于等于1,F、G为输入数据的行、列值,E、F为权值的行、列值。
步骤S23,每个从处理电路将读入的神经元数据和权值数据根据运算指令进行内积运算,而后将内积结果传递回主处理电路。
在一种可能的实施方式中,所述运算单元可以通过所述运算指令中操作码的子操作码获知所述神经元数据为非幂次格式数据,权值数据为幂次格式的幂次权值数据,所述运算单元可以经所述神经元数据与幂次权值数据的乘法操作用移位和加法完成。具体为,神经元数据符号位与幂次权值数据符号位做异或操作,在编码表的对应关系为乱序的情况下,查找编码表找出幂次权值数据幂次位对应的指数数值,在编码表的对应关系为正相关的情况下,记录编码表的指数数值最小值并做加法找出幂次权值数据幂次位对应的指数数值,在编码表的对应关系为负相关的情况下,记录编码表的最大值并做减法找出幂次权值数据幂次位对应的指数数值;然后将指数数值与神经元数据幂次位做加法操作,神经元数据有效位保持不变。
举例来讲,如图7所示,若神经元数据为16位浮点数据,符号位为0,幂次位为10101,有效位为0110100000,则其表示的实际数值为1.40625*26。幂次权值数据符号位为1位,幂次位数据位为5位,即m为5。编码表为幂次位数据为11111的时候对应幂次权值数据为0,幂次位数据为其他数值的时候幂次位数据对应相应的二进制补码。幂次权值为000110,则其表示的实际数值为64,即26。幂次权值的幂次位加上神经元的幂次位结果为11011,则结果的实际数值为1.40625*212,即为神经元数据与幂次权值数据的乘积结果。通过该运算操作,可以使得乘法操作变为移位操作和加法操作,减小计算所需的运算量。如图8所示,若神经元数据为32位浮点数据,符号位为1,幂次位为10000011,有效位为10010010000000000000000,则其表示的实际数值为-1.5703125*24。幂次权值数据符号位为1位,幂次位数据位为5位,即m为5。编码表为幂次位数据为11111的时候对应幂次权值数据为0,幂次位数据为其他数值的时候幂次位数据对应相应的二进制补码。幂次神经元为111100,则其表示的实际数值为-2-4,神经元的幂次位加上幂次权值的幂次位结果为01111111,则结果的实际数值为1.5703125*20,即为神经元与幂次权值的乘积结果。
在该实施方式中,乘法器结构如图9所示,将输入数据1和数据数据2的符号位进行异或操作,得到输出数据的符号位,输入数据1和输入数据2的幂次位数据相加得到输出数据的幂次位数据,输入数据2的有效位保留。
在另一种可能的实施方式中,所述运算单元可以通过所述运算指令中操作码的子操作码获知所述神经元数据为幂次格式的幂次神经元数据,权值数据为幂次格式的幂次权值数据,所述运算单元可以将所述幂次神经元数据与幂次权值数据的乘法操作用移位和加法完成,具体为,幂次神经元数据符号位与幂次权值数据符号位做异或操作;在编码表的对应关系为乱序的情况下,查找编码表找出幂次神经元数据及幂次权值数据幂次位对应的指数数值,在编码表的对应关系为正相关的情况下,记录编码表的指数数值最小值并做加法找出幂次神经元数据及幂次权值数据幂次位对应的指数数值,在编码表的对应关系为负相关的情况下,记录编码表的最大值并做减法找出幂次神经元数据及幂次权值数据幂次位对应的指数数值;然后将幂次神经元数据对应的指数数值与幂次权值数据对应的指数数值做加法操作。
举例来讲,如图10所示,幂次神经元数据和幂次权值数据符号位为1位,幂次位数据位为4位,即m为4。编码表为幂次位数据为1111的时候对应幂次权值数据为0,幂次位数据为其他数值的时候幂次位数据对应相应的二进制补码。幂次神经元数据为00010,则其表示的实际数值为22。幂次权值为00110,则其表示的实际数值为64,即26。幂次神经元数据和幂次权值数据的乘积为01000,其表示的实际数值为28
在该实施方式中,乘法器结构如图11所示,将输入数据1和数据数据2的符号位进行异或操作,得到输出数据的符号位,输入数据1和输入数据2的幂次位数据相加得到输出数据的幂次位数据。
其中,在一种可选方案中,从处理电路可以将每次执行内积运算得到的部分和传输回主处理电路进行累加;在一种可选方案中,也可以将每次从处理电路执行的内积运算得到的部分和保存在从处理电路的寄存器和/或片上缓存中,累加结束之后传输回主处理电路;在一种可选方案中,也可以将每次从处理电路执行的内积运算得到的部分和在部分情况下保存在从处理电路的寄存器和/或片上缓存中进行累加,部分情况下传输到主处理电路进行累加,累加结束之后传输回主处理电路。
步骤S24,主处理电路将各从处理电路的结果进行累加、激活等操作后,得到运算结果。
可选的,如果要求最终结果为浮点数或者定点数,在一种可选的方案中,若所述第一数据转换电路以及所述第二数据转换电路均位于所述主处理电路,则在主处理电路利用第二数据转换电路将运算结果转换为指定数据格式后得到最终运算结果,并将所述最终运算结果传递回存储单元进行保存。若所述第二数据转换单元位于从处理电路中,则各个从处理电路将从处理电路中计算得到的结果转换为指定格式的数据后,传送给所述主处理电路,由主处理电路将各从处理电路的结果进行累加、激活等操作后,得到最终运算结果。
步骤S25,重复步骤S21到步骤S24,直到完成神经网络的正向运算过程,得到预测结果和实际结果间的误差值,即最后一层的神经元梯度数据,保存到存储单元。
步骤S26,运算单元从存储单元中读取出权值数据。
其中,反向运算包括计算输出梯度向量的过程和计算权值梯度的过程。
所述运算单元从存储单元中读取权值数据之后对所述权值数据的处理过程可参照上述步骤S21,在此不再赘述。
步骤S27,主处理电路读取相对应的输入神经元梯度数据,并将所述输入神经元梯度数据按照指定顺序广播给各个从处理电路。
所述主处理电路在读取所述输入神经元梯度数据之后,运算单元对所述输入神经元梯度数据的的处理过程可参照上述步骤S22中对神经元数据的处理过程,在此不再赘述。
步骤S28,每个从处理电路利用输入神经元梯度数据和幂次权值数据进行运算,将结果直接传回主处理电路或在每个从处理电路内部完成部分累加后传递回主处理电路,得到前一层神经元对应的输出神经元梯度数据。
其中,所述输入神经元梯度数据相当于上述步骤S23中的神经元数据,所述从处理电路对所述输入神经元梯度数据和权值数据的运算过程可以参照上述步骤S23,在此不再赘述。
步骤S29,运算单元从存储单元中读取前一层的神经元数据以及相对应的输入神经元梯度数据进行运算,得到权值梯度,利用所述权值梯度对权值数据进行更新。
其中,所述运算单元在读取所述前一层的神经元数据以及相对应的输入神经元梯度数据之后,对上述数据的处理方式可参照步骤S22,在此不再赘述。
所述运算单元中的各个从处理电路对所述前一层的神经元数据以及对应的输入神经元梯度数据进行运算得到权值梯度之后,主处理电路读取从存储单元读取幂次权值数据,将幂次权值数据传递给从处理电路,利用权值梯度对权值数据进行更新。得到的更新结果传递回主处理电路。如果需要,利用第二数据转换单元将所述更新结果转换为幂次数据,而后再传递回存储单元进行保存。
本申请提供的技术方案将运算单元设置成一主多从结构,对于正向运算的计算指令,其可以将依据正向运算的计算指令将数据进行拆分,这样通过多个从处理电路即能够对计算量较大的部分进行并行运算,从而提高运算速度,节省运算时间,进而降低功耗。
进一步的,本申请提供的技术方案,可以通过设计的转换指令,指定数据转换类型,利用数据转换电路将非幂次格式的权值数据和/或非幂次格式的神经元数据转换为幂次格式数据表示,从而可以减少神经网络正向运算以及反向运算中存储神经元数据及权值数据所需的存储空间,同时根据运算指令从存储单元和/或数据转换单元中获取需要的输入数据之后,可以用异或和加法运算完成乘法运算,减少了神经网络运算中的运算量,从而提高运算速度,节省运算时间,降低功耗。
本申请实施例中,对于神经网络中的运算可以为神经网络中的一层的运算,对于多层神经网络,其实现过程是,在正向运算中,当上一层人工神经网络执行完成之后,下一层的运算指令会将运算单元中计算出的输出神经元作为下一层的输入神经元进行运算(或者是对该输出神经元进行某些操作再作为下一层的输入神经元),同时,将权值替换为下一层待运算的权值;在反向运算中,当上一层人工神经网络的反向运算执行完成后,下一层运算指令会将运算单元中计算出的输入神经元梯度作为下一层的输出神经元梯度进行运算(或者是对该输入神经元梯度进行某些操作再作为下一层的输出神经元梯度),同时将权值替换为下一层的权值。
对于人工神经网络运算,如果该人工神经网络运算具有多层运算,多层运算的输入神经元和输出神经元并非是指整个神经网络的输入层中神经元和输出层中神经元,而是对于网络中任意相邻的两层,处于网络正向运算下层中的神经元即为输入神经元,处于网络正向运算上层中的神经元即为输出神经元。以卷积神经网络为例,设一个卷积神经网络有L层,K=1,2,……,L-1,对于第K层和第K+1层来说,我们将第K层称为输入层,其中的神经元为所述输入神经元,第K+1层称为输出层,其中的神经元为所述输出神经元。即除最顶层外,每一层都可以作为输入层,其下一层为对应的输出层。
本申请实施例中,运算单元12设置成一主多从结构,在一种可选实施例中,运算单元12如图12所示,可以包括一个主处理电路101和多个从处理电路102。所述多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个从处理电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路,需要说明的是,如图12所示的k个从处理电路仅包括第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路,即该k个从处理电路为多个从处理电路中直接与主处理电路连接的从处理电路。
k个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发。
可选的,如图13所示,所述主处理电路还可以包括:转换处理电路、激活处理电路、加法处理电路中的一种或任意组合;
转换处理电路,用于将主处理电路接收的数据块或中间结果执行第一数据结构与第二数据结构之间的互换(例如连续数据与离散数据的转换);或将主处理电路接收的数据块或中间结果执行第一数据类型与第二数据类型之间的互换(例如定点类型与浮点类型的转换);
激活处理电路,用于执行主处理电路内数据的激活运算;
加法处理电路,用于执行加法运算或累加运算。
所述主处理电路,用于将确定所述输入神经元为广播数据,权值为分发数据,将分发数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述从处理电路;
所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述主处理电路;
所述主处理电路,用于将多个从处理电路发送的中间结果进行处理得到该计算指令的结果,将该计算指令的结果发送给所述控制单元。
所述从处理电路包括:乘法处理电路;
所述乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果;
转发处理电路(可选的),用于将接收到的数据块或乘积结果转发。
累加处理电路,所述累加处理电路,用于对该乘积结果执行累加运算得到该中间结果。
另一个实施例里,该运算指令为矩阵乘以矩阵的指令、累加指令、激活指令等等计算指令。
在一种可选的实施方案中,如图14所示,所述运算单元包括:树型模块40,所述树型模块包括:一个根端口401和多个支端口402,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口中的每个支端口分别连接多个从处理电路中的一个从处理电路,所述树型模块具有收发功能,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令,即可以将主处理电路的数据传送给各个从处理电路,也可以将各个从处理电路的数据传送给主处理电路。
可选的,该树型模块为计算装置的可选择结果,其可以包括至少1层节点,该节点为具有转发功能的线结构,该节点本身可以不具有计算功能。如树型模块具有零层节点,即无需该树型模块。
可选的,该树型模块可以为n叉树结构,例如,如图15所示的二叉树结构,当然也可以为三叉树结构,该n可以为大于等于2的整数。本申请具体实施方式并不限制上述n的具体取值,上述层数也可以为2,从处理电路可以连接除倒数第二层节点以外的其他层的节点,例如可以连接如图15所示的倒数第一层的节点。
在一种可选实施例中,运算单元12如图16所示,可以包括分支处理电路103;其具体的连接结构如图16所示,其中,
主处理电路101与分支处理电路103(一个或多个)连接,分支处理电路103与一个或多个从处理电路102连接;
分支处理电路103,用于执行转发主处理电路101与从处理电路102之间的数据或指令。
在一种可选实施例中,以神经网络运算中的全连接运算为例,所述神经网络运算过程可以为:y=f(wx+b),其中,x为输入神经元矩阵,w为权值矩阵,b为偏置标量,f为激活函数,具体可以为:sigmoid函数,tanh函数、relu函数、softmax函数中的任意一个。这里假设为二叉树结构,具有8个从处理电路,其实现的方法可以为:
控制单元从存储单元内获取输入神经元矩阵x,权值矩阵w以及全连接运算指令,将输入神经元矩阵x,权值矩阵w以及全连接运算指令传输给主处理电路;
主处理电路确定该输入神经元矩阵x为广播数据,确定权值矩阵w为分发数据,将权值矩阵w拆分成8个子矩阵,然后将8个子矩阵通过树型模块分发给8个从处理电路,将输入神经元矩阵x广播给8个从处理电路,
从处理电路并行执行8个子矩阵与输入神经元矩阵x的乘法运算和累加运算得到8个中间结果,将8个中间结果发送给主处理电路;
主处理电路,用于将8个中间结果排序得到wx的运算结果,将该运算结果执行偏置b的运算后执行激活操作得到最终结果y,将最终结果y发送至控制单元,控制单元将该最终结果y输出或存储至存储单元内。
如图1所示的计算装置执行神经网络正向运算指令的方法具体可以为:
控制单元从指令缓存单元内提取神经网络正向运算指令、神经网络运算指令对应的操作域以及至少一个操作码,控制单元将该操作域传输至数据访问单元,将该至少一个操作码发送至运算单元。
控制单元从存储单元内提取该操作域对应的权值w和偏置b(当b为0时,不需要提取偏置b),将权值w和偏置b传输至运算单元的主处理电路,控制单元从存储单元内提取输入数据Xi,将该输入数据Xi发送至主处理电路。
主处理电路依据该至少一个操作码确定为乘法运算,确定输入数据Xi为广播数据,确定权值数据为分发数据,将权值w拆分成n个数据块;
控制单元的指令处理单元依据该至少一个操作码确定乘法指令、偏置指令和累加指令,将乘法指令、偏置指令和累加指令发送至主处理电路,主处理电路将该乘法指令、输入数据Xi以广播的方式发送给多个从处理电路,将该n个数据块分发给该多个从处理电路(例如具有n个从处理电路,那么每个从处理电路发送一个数据块);多个从处理电路,用于依据该乘法指令将该输入数据Xi与接收到的数据块执行乘法运算得到中间结果,将该中间结果发送至主处理电路,该主处理电路依据该累加指令将多个从处理电路发送的中间结果执行累加运算得到累加结果,依据该偏置指令将该累加结果执行加偏置b得到最终结果,将该最终结果发送至该控制单元。
另外,加法运算和乘法运算的顺序可以调换。
本申请提供的技术方案通过一个指令即神经网络运算指令即实现了神经网络的乘法运算以及偏置运算,在神经网络计算的中间结果均无需存储或提取,减少了中间数据的存储以及提取操作,所以其具有减少对应的操作步骤,提高神经网络的计算效果的优点。
本申请还揭露了一个神经网络运算装置,其包括一个或多个在本申请中提到的计算装置,用于从其他处理装置中获取待运算数据和控制信息,执行指定的神经网络运算,执行结果通过I/O接口传递给外围设备。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上计算装置时,计算装置间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
该神经网络运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
本申请还揭露了一个组合处理装置,其包括上述的神经网络运算装置,通用互联接口,和其他处理装置。神经网络运算装置与其他处理装置进行交互,共同完成用户指定的操作。图17为组合处理装置的示意图。
其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为神经网络运算装置与外部数据和控制的接口,包括数据搬运,完成对本神经网络运算装置的开启、停止等基本控制;其他处理装置也可以和神经网络运算装置协作共同完成运算任务。
通用互联接口,用于在所述神经网络运算装置与其他处理装置间传输数据和控制指令。该神经网络运算装置从其他处理装置中获取所需的输入数据,写入神经网络运算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入神经网络运算装置片上的控制缓存;也可以读取神经网络运算装置的存储模块中的数据并传输给其他处理装置。
可选的,该结构如图18所示,还可以包括存储装置,存储装置分别与所述神经网络运算装置和所述其他处理装置连接。存储装置用于保存在所述神经网络运算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本神经网络运算装置或其他处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
在一些实施例里,还申请了一种芯片,其包括了上述神经网络运算装置或组合处理装置。
在一些实施例里,申请了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,申请了一种板卡,其包括了上述芯片封装结构。参阅图19,图19提供了一种板卡,上述板卡除了包括上述芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392;
所述存储器件390与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是双倍速率同步动态随机存储器(Double Data RateSDRAM,DDR SDRAM)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。可以理解,当每一组所述存储单元中采用DDR4-3200颗粒时,数据传输的理论带宽可达到25600MB/s。
在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用于实现所述芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片,实现数据转移。优选的,当采用PCIE 3.0 X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,所述接口装置还可以是其他的接口,本申请并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
在一些实施例里,申请了一种电子设备,其包括了上述板卡。
电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器、随机存取器、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (22)

1.一种计算装置,其特征在于,所述计算装置用于执行神经网络计算,所述计算装置包括:控制单元以及运算单元;
所述控制单元,用于获取计算指令;
所述控制单元,还用于解析所述计算指令得到多个操作指令,将所述多个操作指令发送给所述运算单元,其中,所述操作指令包括操作码以及至少一个操作域,所述操作码用于指示所述操作指令的功能,所述操作域用于指示所述操作指令所指向的输入数据的数据信息,所述操作指令包括转换指令以及运算指令,所述转换指令用于控制非幂次格式数据与幂次格式数据之间的相互转换,所述运算指令用于控制神经网络运算,其中,所述输入数据包括神经元数据以及权值数据,所述转换指令的操作码包括第一主操作码以及第一子操作码,所述第一主操作码用于指示数据转换类型,所述第一子操作码用于指示数据转换时的转换需求;其中,所述数据转换类型包括浮点数据转换为幂次数据、定点数据转换为幂次数据、幂次数据转换为浮点数据以及幂次数据转换为定点数据;所述转换需求包括对数据做取上整操作,对数据做取下整操作,对数据做四舍五入操作,对数据做归零操作以及对数据做随机向上向下取整操作;
所述运算单元,用于根据所述操作指令获取所述输入数据,并根据所述操作指令以及所述输入数据执行神经网络运算。
2.根据权利要求1所述的装置,其特征在于,所述运算指令的操作码包括第二主操作码以及第二子操作码,所述第二主操作码用于指示运算类型,所述第二子操作码用于指示参与运算的数据类型;其中,所述运算类型包括卷积运算、池化运算、激活运算以及矩阵乘矩阵运算。
3.根据权利要求2所述的装置,其特征在于,所述操作指令的操作域包括第一寄存器号,所述第一寄存器号用于指示所述操作指令所指向的输入数据的存储地址信息;
所述操作域还包括:第二寄存器号和/或所述输入数据的数量信息,所述数量信息用于指示所述运算单元获取的所述输入数据的个数,所述第二寄存器号用于指示运算结果的存储地址信息,所述运算结果为所述运算单元对所述输入数据执行完所述操作指令指定的操作后得到的结果。
4.根据权利要求3所述的装置,其特征在于,所述运算单元具体用于:
根据所述转换指令的操作域获取待转换数据,并根据所述转换指令的操作码对所述待转换数据进行转换。
5.根据权利要求3所述的装置,其特征在于,所述运算单元具体用于:
根据所述运算指令的操作域获取神经元数据以及权值数据,并根据所述运算指令的操作码对所述神经元数据以及所述权值数据进行运算,得到运算结果。
6.根据权利要求5所述的装置,其特征在于,所述运算单元包括:一个主处理电路和多个从处理电路;
所述主处理电路,用于对所述输入数据执行前序处理以及与所述多个从处理电路之间传输数据和运算指令;
所述多个从处理电路,用于根据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将所述多个中间结果传输给所述主处理电路;
所述主处理电路,用于对所述多个中间结果执行后续处理得到所述计算指令的计算结果。
7.根据权利要求6所述的装置,其特征在于,所述运算单元还包括:第一数据转换电路与第二数据转换电路;
所述第一数据转换电路,用于在所述转换指令的控制下将非幂次格式的数据转换为幂次格式的数据,所述第一数据转换电路位于所述主处理电路或所述多个从处理电路;
所述第二数据转换电路,用于在所述转换指令的控制下将幂次格式的数据转换为非幂次格式的数据,所述第二数据转换电路位于所述主处理电路或所述多个从处理电路。
8.根据权利要求1至7任一项所述的装置,其特征在于,所述计算装置还包括:存储单元和直接内存访问单元,所述存储单元包括:寄存器、缓存中任意组合;
所述缓存,用于存储所述输入数据以及计算指令,所述缓存包括高速暂存缓存;
所述寄存器,用于存储所述输入数据中的标量数据;
所述直接内存访问单元用于从存储单元读取数据或向所述存储单元写入数据;
所述控制单元包括:指令缓存单元、指令处理单元和存储队列单元;
所述指令缓存单元,用于存储所述神经网络运算关联的计算指令;
所述指令处理单元,用于对所述计算指令解析得到多个操作指令;
所述存储队列单元,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个操作指令或计算指令;
所述控制单元还包括:依赖关系处理单元;
所述依赖关系处理单元,用于确定第一操作指令与所述第一操作指令之前的第零操作指令是否存在关联关系,如所述第一操作指令与所述第零操作指令存在关联关系,将所述第一操作指令缓存在所述存储队列单元内,在所述第零操作指令执行完毕后,从所述存储队列单元提取所述第一操作指令传输至所述运算单元;
所述确定所述第一操作指令与所述第一操作指令之前的第零操作指令是否存在关联关系包括:
依据所述第一操作指令提取所述第一操作指令中所需数据的第一存储地址区间,依据所述第零操作指令提取所述第零操作指令中所需数据的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,确定所述第一操作指令与所述第零操作指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,确定所述第一操作指令与所述第零操作指令不具有关联关系。
9.根据权利要求7所述的装置,其特征在于,所述第一数据转换电路具体用于:
在任务复杂度大于预设阈值的情况下,将所述输入数据中的非幂次数据转换为幂次数据。
10.一种组合处理装置,其特征在于,所述组合处理装置包括通用互联接口、存储装置、其他处理装置以及一个或多个如权利要求1-9任一项所述的计算装置,所述计算装置用于从其他处理装置中获取待运算输入数据和控制信息,并执行指定的神经网络运算,将执行结果通过通用互联接口传递给其他处理装置;
当所述组合处理装置包含多个所述计算装置时,所述多个所述计算装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述计算装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算;多个所述计算装置共享同一控制系统或拥有各自的控制系统;多个所述计算装置共享内存或者拥有各自的内存;多个所述计算装置的互联方式是任意互联拓扑;
存储装置,所述存储装置分别与所述多个所述计算装置和所述其他处理装置连接,用于保存所述组合处理装置和所述其他处理装置的数据。
11.一种神经网络芯片,其特征在于,所述神经网络芯片包括如权利要求10所述的组合处理装置。
12.一种电子设备,其特征在于,所述电子设备包括如所述权利要求11所述的芯片。
13.一种板卡,其特征在于,所述板卡包括:存储器件、接口装置和控制器件以及如权利要求11所述的神经网络芯片;
其中,所述神经网络芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述芯片与外部设备之间的数据传输;
所述控制器件,用于对所述芯片的状态进行监控。
14.一种执行神经网络运算的计算方法,其特征在于,所述计算方法应用于计算装置,所述计算装置用于执行神经网络计算;所述计算装置包括:控制单元以及运算单元;
所述控制单元获取计算指令;
所述控制单元解析所述计算指令得到多个操作指令,将所述多个操作指令发送给所述运算单元,其中,所述操作指令包括操作码以及至少一个操作域,所述操作码用于指示所述操作指令的功能,所述操作域用于指示所述操作指令所指向的输入数据信息,所述操作指令包括转换指令以及运算指令,所述转换指令用于控制非幂次格式数据与幂次格式数据之间的相互转换,所述运算指令用于控制神经网络运算,其中,所述输入数据包括神经元数据以及权值数据,所述转换指令的操作码包括第一主操作码以及第一子操作码,所述第一主操作码用于指示数据转换类型,所述第一子操作码用于指示数据转换时的转换需求;其中,所述数据转换类型包括浮点数据转换为幂次数据、定点数据转换为幂次数据、幂次数据转换为浮点数据以及幂次数据转换为定点数据;所述转换需求包括对数据做取上整操作,对数据做取下整操作,对数据做四舍五入操作,对数据做归零操作以及对数据做随机向上向下取整操作;
所述运算单元根据所述操作指令获取所述输入数据,并根据所述操作指令以及所述输入数据执行神经网络运算,所述输入数据包括神经元数据以及权值数据。
15.根据权利要求14所述的方法,其特征在于,所述运算指令的操作码包括第二主操作码以及第二子操作码,所述第二主操作码用于指示运算类型,所述第二子操作码用于指示参与运算的数据类型;其中,所述运算类型包括卷积运算、池化运算、激活运算以及矩阵乘矩阵运算。
16.根据权利要求15所述的方法,其特征在于,所述操作指令的操作域包括第一寄存器号,所述第一寄存器号用于指示所述操作指令所指向的输入数据的存储地址信息;
所述操作域还包括:第二寄存器号和/或所述输入数据的数量信息,所述数量信息用于指示所述运算单元获取的所述输入数据的个数,所述第二寄存器号用于指示运算结果的存储地址信息,所述运算结果为所述运算单元对所述输入数据执行完所述操作指令指定的操作得到的结果。
17.根据权利要求16所述的方法,其特征在于,所述运算单元用于根据所述操作指令获取输入数据,并根据操作指令以及所述输入数据执行神经网络运算,包括:
所述运算单元根据所述转换指令的操作域获取待转换数据,并根据所述转换指令的操作码对所述待转换数据进行转换。
18.根据权利要求17所述的方法,其特征在于,所述运算单元用于根据所述操作指令获取输入数据,并根据操作指令以及所述输入数据执行神经网络运算,包括:
根据所述运算指令的操作域获取神经元数据以及权值数据,并根据所述运算指令的操作码对所述神经元数据以及所述权值数据进行运算,得到运算结果。
19.根据权利要求18所述的方法,其特征在于,所述运算单元包括:一个主处理电路和多个从处理电路;
所述主处理电路对所述输入数据执行前序处理以及与所述多个从处理电路之间传输数据和运算指令;
所述多个从处理电路根据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将所述多个中间结果传输给所述主处理电路;
所述主处理电路对所述多个中间结果执行后续处理得到所述计算指令的计算结果。
20.根据权利要求19所述的方法,其特征在于,所述运算单元还包括:第一数据转换电路与第二数据转换电路;
所述第一数据转换电路在所述转换指令的控制下将非幂次格式的数据转换为幂次格式的数据,所述第一数据转换电路位于所述主处理电路或所述多个从处理电路;
所述第二数据转换电路在所述转换指令的控制下将幂次格式的数据转换为非幂次格式的数据,所述第二数据转换电路位于所述主处理电路或所述多个从处理电路。
21.根据权利要求14-20任一项所述的方法,其特征在于,所述计算装置还包括:存储单元和直接内存访问单元,所述存储单元包括:寄存器、缓存中任意组合;
所述缓存存储所述输入数据以及所述计算指令,所述缓存包括高速暂存缓存;
所述寄存器存储所述输入数据中的标量数据;
所述直接内存访问单元从存储单元读取数据或向所述存储单元写入数据;
所述控制单元包括:指令缓存单元、指令处理单元和存储队列单元;
所述指令缓存单元存储所述神经网络运算关联的计算指令;
所述指令处理单元对所述计算指令解析得到多个运算指令;
所述存储队列单元存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令;
所述控制单元还包括:依赖关系处理单元;
所述依赖关系处理单元确定第一操作指令与所述第一操作指令之前的第零操作指令是否存在关联关系,如所述第一操作指令与所述第零操作指令存在关联关系,将所述第一操作指令缓存在所述存储队列单元内,在所述第零操作指令执行完毕后,从所述存储队列单元提取所述第一操作指令传输至所述运算单元;
所述确定所述第一操作指令与所述第一操作指令之前的第零操作指令是否存在关联关系包括:
依据所述第一操作指令提取所述第一操作指令中所需数据的第一存储地址区间,依据所述第零操作指令提取所述第零操作指令中所需数据的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,确定所述第一操作指令与所述第零操作指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,确定所述第一操作指令与所述第零操作指令不具有关联关系。
22.根据权利要求20所述的方法,其特征在于,所述第一数据转换电路具体用于:
在任务复杂度大于预设阈值的情况下,将所述输入数据中的非幂次数据转换为幂次数据。
CN201811194911.7A 2018-10-12 2018-10-12 一种计算装置及相关产品 Active CN111045728B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811194911.7A CN111045728B (zh) 2018-10-12 2018-10-12 一种计算装置及相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811194911.7A CN111045728B (zh) 2018-10-12 2018-10-12 一种计算装置及相关产品

Publications (2)

Publication Number Publication Date
CN111045728A CN111045728A (zh) 2020-04-21
CN111045728B true CN111045728B (zh) 2022-04-12

Family

ID=70230615

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811194911.7A Active CN111045728B (zh) 2018-10-12 2018-10-12 一种计算装置及相关产品

Country Status (1)

Country Link
CN (1) CN111045728B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111783954B (zh) * 2020-06-30 2023-05-02 安徽寒武纪信息科技有限公司 一种用于确定神经网络的性能的方法、电子设备和存储介质
CN111930672B (zh) * 2020-08-10 2024-03-01 中国科学院计算技术研究所 异构智能处理器及电子设备
CN113704804B (zh) * 2021-10-27 2022-02-22 浙江数秦科技有限公司 一种基于异构神经网络模型的隐私计算方法
TWI804043B (zh) * 2021-11-08 2023-06-01 財團法人工業技術研究院 多輸入多輸出的累加器及其執行方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9148473B1 (en) * 2012-08-27 2015-09-29 Amazon Technologies, Inc. Dynamic resource expansion of mobile devices
CN106066783A (zh) * 2016-06-02 2016-11-02 华为技术有限公司 基于幂次权重量化的神经网络前向运算硬件结构
CN107395211A (zh) * 2017-09-12 2017-11-24 郑州云海信息技术有限公司 一种基于卷积神经网络模型的数据处理方法及装置
CN107844832A (zh) * 2017-10-30 2018-03-27 上海寒武纪信息科技有限公司 一种信息处理方法及相关产品

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10001993B2 (en) * 2013-08-08 2018-06-19 Linear Algebra Technologies Limited Variable-length instruction buffer management
CN108564169B (zh) * 2017-04-11 2020-07-14 上海兆芯集成电路有限公司 硬件处理单元、神经网络单元和计算机可用介质
CN108501944A (zh) * 2018-05-14 2018-09-07 吕杉 汽车爆胎安全稳定控制方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9148473B1 (en) * 2012-08-27 2015-09-29 Amazon Technologies, Inc. Dynamic resource expansion of mobile devices
CN106066783A (zh) * 2016-06-02 2016-11-02 华为技术有限公司 基于幂次权重量化的神经网络前向运算硬件结构
CN107395211A (zh) * 2017-09-12 2017-11-24 郑州云海信息技术有限公司 一种基于卷积神经网络模型的数据处理方法及装置
CN107844832A (zh) * 2017-10-30 2018-03-27 上海寒武纪信息科技有限公司 一种信息处理方法及相关产品

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Cambricon: An Instruction Set Architecture for Neural Networks;S. Liu;《2016 ACM/IEEE 43rd Annual International Symposium on Computer Architecture (ISCA)》;20160825;393-405 *
基于DSP的水下机器人嵌入式控制系统设计;史文韬;《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》;20110615(第06期);I140-203 *

Also Published As

Publication number Publication date
CN111045728A (zh) 2020-04-21

Similar Documents

Publication Publication Date Title
CN109543832B (zh) 一种计算装置及板卡
CN110163356B (zh) 一种计算装置及方法
CN111045728B (zh) 一种计算装置及相关产品
TWI827432B (zh) 計算裝置、機器學習運算裝置、組合處理裝置、神經網絡芯片、電子設備、板卡、及計算方法
CN110163350B (zh) 一种计算装置及方法
CN111047022A (zh) 一种计算装置及相关产品
CN111626413A (zh) 一种计算装置及方法
CN111353598A (zh) 一种神经网络压缩方法、电子设备及计算机可读介质
CN111930681A (zh) 一种计算装置及相关产品
CN111488976A (zh) 神经网络计算装置、神经网络计算方法及相关产品
CN111488963A (zh) 神经网络计算装置和方法
CN109740730B (zh) 运算方法、装置及相关产品
CN110059809B (zh) 一种计算装置及相关产品
CN111368967B (zh) 一种神经网络计算装置和方法
CN111047021A (zh) 一种计算装置及相关产品
CN111198714B (zh) 重训练方法及相关产品
CN111368987B (zh) 一种神经网络计算装置和方法
CN111047024B (zh) 一种计算装置及相关产品
CN111368986B (zh) 一种神经网络计算装置和方法
CN111368990B (zh) 一种神经网络计算装置和方法
CN111367567B (zh) 一种神经网络计算装置和方法
CN111382835A (zh) 一种神经网络压缩方法、电子设备及计算机可读介质
CN111291884A (zh) 神经网络剪枝方法、装置、电子设备及计算机可读介质
CN111222632A (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