CN111047021B - 一种计算装置及相关产品 - Google Patents
一种计算装置及相关产品 Download PDFInfo
- Publication number
- CN111047021B CN111047021B CN201811193714.3A CN201811193714A CN111047021B CN 111047021 B CN111047021 B CN 111047021B CN 201811193714 A CN201811193714 A CN 201811193714A CN 111047021 B CN111047021 B CN 111047021B
- Authority
- CN
- China
- Prior art keywords
- data
- instruction
- unit
- neural network
- processing circuit
- 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
- 238000013528 artificial neural network Methods 0.000 claims abstract description 151
- 238000004364 calculation method Methods 0.000 claims abstract description 85
- 238000007667 floating Methods 0.000 claims abstract description 44
- 238000012545 processing Methods 0.000 claims description 232
- 230000015654 memory Effects 0.000 claims description 38
- 238000000034 method Methods 0.000 claims description 34
- 230000006870 function Effects 0.000 claims description 11
- 210000002569 neuron Anatomy 0.000 claims description 10
- 239000000284 extract Substances 0.000 claims description 5
- 230000005540 biological transmission Effects 0.000 claims description 4
- 238000012544 monitoring process Methods 0.000 claims description 3
- 238000003062 neural network model Methods 0.000 claims description 3
- 239000011159 matrix material Substances 0.000 description 15
- 238000010586 diagram Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 11
- 238000009825 accumulation Methods 0.000 description 10
- 210000004027 cell Anatomy 0.000 description 8
- 210000002364 input neuron Anatomy 0.000 description 7
- 239000010410 layer Substances 0.000 description 7
- 238000004806 packaging method and process Methods 0.000 description 6
- 230000004913 activation Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000010365 information processing Effects 0.000 description 3
- 238000003909 pattern recognition Methods 0.000 description 3
- 241000699670 Mus sp. Species 0.000 description 2
- 238000005481 NMR spectroscopy Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000005406 washing Methods 0.000 description 2
- 241001465754 Metazoa Species 0.000 description 1
- 102100029469 WD repeat and HMG-box DNA-binding protein 1 Human genes 0.000 description 1
- 101710097421 WD repeat and HMG-box DNA-binding protein 1 Proteins 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000008187 granular material Substances 0.000 description 1
- 230000020169 heat generation Effects 0.000 description 1
- 238000010438 heat treatment Methods 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 230000013011 mating Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 210000005036 nerve Anatomy 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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
Abstract
本申请提供了一种神经网络计算装置及相关产品,所述计算装置包括:控制单元以及运算单元,所述运算单元包括逻辑运算器以及浮点运算器;所述控制单元,用于获取计算指令,解析所述计算指令得到多个运算指令,将该多个运算指令以及所述输入数据发送给所述运算单元;所述运算单元,用于根据所述运算指令,获取输入数据,在所述输入数据部分为离散数据的情况下,利用浮点定点运算器以及所述逻辑运算器完成神经网络运算,得到所述运算结果;在所述输入数据全部为离散数据的情况下,利用所述逻辑运算器完成神经网络运算,得到所述运算结果。本申请揭露的计算装置,可减少神经网络计算中的运算量,提高效率,降低功耗。
Description
技术领域
本申请涉及信息处理技术领域,具体涉及一种神经网络计算装置及相关产品。
背景技术
神经网络是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型,这种网络由大量的节点(或称神经元)之间相互连接构成,通过调整内部大量节点之间相互连接的关系,利用输入数据、权值产生输出数据模拟人脑的信息处理过程处理信息并生成模式识别之后的结果。
随着神经网络技术特别是人工神经网络中深度学习(deep learning)技术的发展,当前用于智能识别领域的神经网络模型规模越来越大,随之而来的运算量也呈现几何倍数增长。运算量的几何倍数增长带来了运算装置的功耗、发热量的增长。智能识别装置的功耗过大、发热量过大直接限制了其在终端产品例如可穿戴设备、无线设备等设备上的应用。
发明内容
本申请实施例提供了一种神经网络计算装置及相关产品,可减少神经网络计算中的运算量,提高效率,降低功耗。
第一方面,提供一种计算装置,所述计算装置用于执行神经网络计算,所述计算装置包括:运算单元以及控制单元所述控制单元包括逻辑运算器以及浮点定点运算器;
所述控制单元,用于获取计算指令;
所述控制单元,还用于解析所述计算指令得到多个运算指令,将所述多个运算指令发送给所述运算单元;
所述运算单元,用于根据所述控制单元下发的所述运算指令,获取输入数据,所述输入数据包括神经元数据以及权值数据,所述输入数据的部分或者全部为离散数据;在所述输入数据部分为离散数据的情况下,利用浮点定点运算器以及所述逻辑运算器完成神经网络运算,得到所述运算结果,其中,所述输入数据中的非离散数据包括浮点数据和/或定点数据;在所述输入数据全部为离散数据的情况下,利用所述逻辑运算器完成神经网络运算,得到所述运算结果。
本申请提供的计算装置支持输入数据包括离散数据的神经网络运算,在所述输入数据部分为离散数据的情况下,利用浮点定点运算器以及所述逻辑运算器完成神经网络运算;在所述输入数据全部为离散数据的情况下,利用所述逻辑运算器完成神经网络运算,本申请提供的计算装置通过逻辑运算器支持离散数据的运算,可以减少存储数据所需的存储空间,有效减少运算量大的乘法运算,从而提高神经网络运算速度,降低功耗。
第二方面,本申请实施例提供一种神经网络运算装置,所述神经网络运算装置包括一个或多个如上述第一方面所述的计算装置,用于从其他处理装置中获取待运算输入数据和控制信息,并执行指定的神经网络运算,将执行结果通过I/O接口传递给其他处理装置;
当所述神经网络运算装置包含多个所述计算装置时,所述多个所述计算装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述计算装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算;多个所述计算装置共享同一控制系统或拥有各自的控制系统;多个所述计算装置共享内存或者拥有各自的内存;多个所述计算装置的互联方式是任意互联拓扑。
第三方面,本申请实施例提供了一种组合处理装置,所述组合处理装置包括如第二方面所述的神经网络运算装置,通用互联接口和其他处理装置;所述神经网络运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。该组合装置还可以包括存储装置,该存储装置分别与所述神经网络运算装置和所述其他处理装置连接,用于保存所述神经网络运算装置和所述其他处理装置的数据。
第四方面,本申请实施例提供了一种神经网络芯片,该神经网络芯片包括上述第一方面所述的计算装置、上述第二方面所述的神经网络运算装置或者上述第三方面所述的组合处理装置。
第五方面,本申请实施例提供了一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述第四方面所述的神经网络芯片;
第六方面,本申请实施例提供了一种板卡,该板卡包括上述第五方面所述的神经网络芯片封装结构。
第七方面,本申请实施例提供了一种电子装置,该电子装置包括上述第六方面所述的神经网络芯片或者上述第六方面所述的板卡。
第八方面,本申请实施例还提供一种执行神经网络模型的计算方法,所述计算方法应用于计算装置,所述计算装置用于执行神经网络计算;所述计算装置包括:所述计算装置包括:运算单元以及控制单元,所述控制单元包括逻辑运算器以及浮点定点运算器;
所述控制单元获取计算指令;
所述控制单元解析所述计算指令得到多个运算指令,将所述多个运算指令发送给所述运算单元;
所述运算单元根据所述控制单元下发的所述运算指令,获取输入数据,所述输入数据包括神经元数据以及权值数据,所述输入数据的部分或者全部为离散数据;在所述输入数据部分为离散数据的情况下,利用浮点定点运算器以及所述逻辑运算器完成神经网络运算,得到所述运算结果,其中,所述输入数据中的非离散数据包括浮点数据和/或定点数据;在所述输入数据全部为离散数据的情况下,利用所述逻辑运算器完成神经网络运算,得到所述运算结果。
在一些实施例中,所述电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
在一些实施例中,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种计算装置的结构示意图。
图2是本申请的一个实施例提供的计算装置的结构示意图。
图3是本申请实施例提供的指令处理单元的结构示意图。
图4是本申请实施例提供的另一种计算装置的结构示意图。
图5是本申请实施例提供的主处理电路的结构示意图。
图6是本申请实施例提供的另一种计算装置的结构示意图。
图7是本申请实施例提供的树型模块的结构示意图。
图8是本申请实施例提供的另一种计算装置的结构示意图。
图9是本申请实施例提供的一种神经网络运算方法的流程示意图。
图10是本申请实施例提供的另一种神经网络运算方法的流程示意图。
图11是本申请实施例提供的一种组合处理装置的结构示意图。
图12是本申请实施例提供的另一种组合处理装置的结构示意图。
图13是本申请实施例提供的一种板卡的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
在对本发明进行介绍之前,首先对神经网络中的数据进行说明,神经网络数据包括通用神经网络数据以及离散神经网络数据。其中,通用神经网络数据(非离散数据)指代的是通用的计算机数据,也就是计算机中常用的数据类型,通用神经网络数据是指取指个数未知的连续浮点数和/或定点数,例如32位浮点数据、16位浮点数据、32位定点数据等等。离散神经网络数据是指部分数据或全部数据是用离散数据表示的计算机数据。不同于通用神经网络数据中32位浮点、16位浮点的数据表示,离散神经网络数据指参与运算的数据只是某几个离散的实数组成的集合。
参阅图1,图1是本申请使用的一种计算装置,该计算装置用于执行神经网络计算,该计算装置包括:控制单元11和运算单元12,所述运算单元包括逻辑运算器以及浮点定点运算器,其中,控制单元11与运算单元12连接,其中,
所述控制单元11,用于获取计算指令;
在一种可选方案中,具体的,获取计算指令方式可以通过数据输入输出单元得到,该数据输入输出单元具体可以为一个或多个数据I/O接口或I/O引脚。
上述计算指令包括但不限于:正向运算指令或反向训练指令,或其他神经网络运算指令等等,例如卷积运算指令,本申请具体实施方式并不限制上述计算指令的具体表现形式。
所述控制单元11,还用于解析上述计算指令得到多个运算指令,将所述多个运算指令发送给所述运算单元12;
所述运算单元12,用于根据所述控制单元下发的所述运算指令,获取输入数据,所述输入数据包括神经元数据以及权值数据,对所述神经元数据以及与所述神经元数据对应的权值数据进行神经网络运算,得到运算结果,所述输入数据包括神经元数据以及权值数据,所述输入数据的部分或者全部为离散数据,在所述输入数据部分为离散数据的情况下,所述输入数据中的非离散数据部分包括浮点数据和/或定点数据。
在所述输入数据部分为离散数据的情况下,利用所述浮点定点运算器以及所述逻辑运算器完成神经网络运算,得到所述运算结果。在所述输入数据全部为离散数据的情况下,利用所述逻辑运算器完成神经网络运算,得到所述运算结果。
本申请实施例中,所述运算单元12包括主处理电路101以及多个从处理电路102,所述主处理电路101,用于对所述输入数据执行前序处理以及与所述多个从处理电路之间传输数据以及运算指令;
多个从处理电路102,用于依据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;
主处理电路101,用于对所述多个中间结果执行后续处理得到所述计算指令的计算结果。
本申请实施例中,所述运算单元12还包括浮点定点运算器,用于浮点数以及定点数的乘法、加法以及除法等算数运算,主要用于执行神经网络中浮点数以及定点数的乘加、卷积运算等;所述浮点定点运算器包括乘法器以及加法器等,其中,所述主处理电路101中包括浮点定点加法器,所述每个从处理电路102中包括乘法器以及加法器。当输入所述从处理电路中的输入数据全部为非离散数据或者部分为非离散数据,部分为离散数据的情况下,所述从处理电路采用所述乘法器完成待运算数据的乘法运算得到中间结果,并将得到的中间结果发送给所述主处理电路,所述主处理电路采用浮点定点加法器完成加法运算得到运算结果。可以理解,本申请对所述浮点定点运算器的具体拓扑结构不做限制。
本申请实施例中,所述运算单元包括逻辑运算器,用于执行逻辑运算、加法、减法等简单的算数运算,主要用于执行神经网络中离散数据的移位、异或、计数等运算。所述逻辑运算器包括移位运算电路、异或电路、与或非电路以及计数器等,所述逻辑运算器可以使用移位运算电路实现加法以及减法运算,而不需要使用浮点定点加法器来实现,所述逻辑运算器可以使用移位运算电路和异或电路实现离散数据的乘法与加法运算。其中,所述主处理电路101以及所述多个从处理电路中的每个从处理电路102中均包括所述逻辑运算器,在输入所述从处理电路中的待运算数据全部为离散数据的情况下,所述从处理电路采用所述逻辑运算器完成待运算数据的乘法运算得到中间结果,并将得到的中间结果发送给所述主处理电路,所述主处理电路采用逻辑运算器完成加法运算得到运算结果。可以理解,本申请对所述逻辑运算器的具体拓扑结构不做限制。
本申请实施例中,所述运算单元还包括判断数据格式单元,所述判断数据格式单元用于对不同数据类型进行判断,并根据不同的数据类型调度不同的计算指令,具体的,运算单元从高速暂存存储器中取出需要的输入数据;所述判断数据格式单元执行神经网络每一层的神经元数据以及权值数据等不同输入数据的判断,在输入数据为通用神经网络数据(即非离散数据)的情况下,根据浮点定点数据的计算指令控制浮点定点运算器完成浮点定点数据的乘法加法等运算过程,在输入数据全部为离散数据的情况下,根据离散数据的计算指令控制逻辑运算器使用移位、异或等逻辑运算,在输入数据部分为离散数据部分为非离散数据的情况下,利用所述浮点定点运算器以及所述逻辑运算器完成神经网络运算。其中,所述主处理电路中包括所述判断数据格式单元,或者,所述主处理电路以及每个从处理电路中均包括所述判断数据格式单元。
本申请实施例中,所述运算单元12即可执行非离散数据(浮点数据以及定点数等)表示的神经网络运算,也可执行离散数据表示的神经网络运算。如图2所示,所述控制单元11配置非离散数据以及离散数据的运算方式以及两种数据运算的配合,在对输入数据进行运算之前,输入数据首先进入缓存中供后续运算器12使用,在对所述输入数据进行运算之前,由所述判断数据格式单元对数据进行类型进行判断,根据判断出的数据类型,所述运算单元12通过逻辑运算器负责离散数据的数据的移位、异或、计数等运算过程,通过浮点定点运算单元负责浮点数和/或定点数的加减乘除操作,之后通过输出缓存返回运算结果。
上述计算装置还可以包括:存储单元10和直接内存访问单元50,存储单元10可以包括:寄存器201、缓存202中的一个或任意组合,具体的,所述缓存,用于存储所述计算指令以及所述输入数据;所述寄存器,用于存储所述神经网络运算的操作码以及神经网络运算的操作数,所述操作码用于指示所述计算指令的功能,所述操作数用于指示所述计算指令的数据信息,所述数据信息包括所述计算指令所需数据的存储地址;在一种可能的实施方式中,所述缓存包括高速暂存存储器,所述寄存器包括标量寄存器堆。直接内存访问单元50用于从所述存储单元10读取数据或向所述存储单元10存储数据。其中,所述存储单元10与所述直接内存访问单元50通过数据输入输出单元203交互数据。
在一可选的方案中,所述控制单元11包括:指令缓存单元110、指令处理单元111和存储队列单元113;其中,
所述指令缓存单元110,用于存储所述人工神经网络运算关联的计算指令,在第零计算指令在被执行的过程中,同时将未被提交执行的其他指令缓存在所述指令缓存单元110中,当所述第零计算指令执行完之后,如果第一计算指令是指令缓存单元110中未被提交指令中最早的一条指令,则所述第一计算指令将被提交,一旦提交,所述第一计算指令进行的操作对装置状态的改变将无法撤销。在一种可能的实施方式中,所述指令缓存单元可以是重排序缓存。
所述指令处理单元111,用于从所述指令缓存单元获取所述计算指令,并对所述计算指令解析得到多个运算指令;
存储队列单元113,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
在一种可选方案中,该计算指令的结构可以如下表所示。
操作码 | 寄存器或立即数 | 寄存器/立即数 | ... |
上表中的省略号表示可以包括多个寄存器或立即数。
在另一种可选方案中,该计算指令可以包括:一个或多个操作域以及一个操作码。该计算指令可以包括神经网络运算指令。以神经网络运算指令为例,如表1所示,其中,寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以为操作域。其中,每个寄存器号0、寄存器号1、寄存器号2、寄存器号3、寄存器号4可以是一个或者多个寄存器的号码。
上述寄存器可以为片外存储器,当然在实际应用中,也可以为片内存储器,用于存储数据,该数据具体可以为n维数据,n为大于等于1的整数,例如,n=1时,为1维数据,即向量,如n=2时,为2维数据,即矩阵,如n=3或3以上时,为多维张量。
在一可选的方案中,该控制单元11还可以包括:依赖关系处理单元112,用于在具有多个运算指令时,在所述运算单元12获取第一运算指令之前,确定所述第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如果所述第一运算指令与所述第零运算指令存在关联关系,则将所述第一运算指令缓存在所述指令队列单元113内,在所述第零运算指令执行完毕后,从所述指令队列单元113中提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需数据(例如矩阵)的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需矩阵的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第零运算指令不具有关联关系。
进一步的,如图3所示,所述指令处理单元111包括:取指模块、译码模块以及指令队列。其中,所述取指模块,用于从所述指令缓存单元110中获取神经网络的计算指令;所述译码模块用于对所述取指模块获取的计算指令进行译码,得到神经网络的运算指令;所述指令队列用于对译码后得到的运算指令,按照待执行的前后顺序进行顺序存储。
本申请实施例中,所述控制单元11中指令处理单元111的取指模块从指令缓存中获取神经网络计算指令,译码单元对获取到的计算指令进行译码,得到一个或者多个运算指令,并将所述一个或者多个运算指令送往指令队列进行顺序存储,所述控制单元11还用于从标量寄存器堆获取所述一个或者多个运算指令对应的操作码以及操作数,并将所述操作码以及操作数据发送给所述运算单元12,所述控制单元11中的依赖关系处理单元112确定所述运算指令与之前尚未执行完的指令在数据上是否存在关联关系,如果存在,则将所述运算指令发送至指令队列单元113中以等待所述运算指令与之前尚未执行完的指令之间的关联关系解除为止,然后将所述运算指令发送至所述运算单元12,所述运算单元12根据操作数中的数据信息从高速暂存存储器中获取输入数据以及神经网络模型数据等所需数据,并根据所述操作码以及所述运算指令,在所述运算单元中完成所述运算指令对应的神经网络运算,并将运算结果写入存储单元中。
对于神经网络运算指令来说,其实际需要执行的公式可以为:s=s(∑wxi+b),,其中,ω为权值,xi为输入数据,b为偏置标量,即将权值ω乘以输入数据xi,进行求和,然后加上偏置b后做激活运算s(h),得到最终的运算结果s。
本申请实施例中,所述运算单元在执行所述运算指令对应的神经网络运算时,若根据所述判断数据格式单元120判断出输入数据部分为非离散数据,部分为离散数据,以输入为一般浮点数表示,权值为离散数据+1、-1、+1/2以及-1/2的单层全连接神经网络为例,假如输入数据的个数是n,输出数据的个数是m,则运算单元按照每个输出数据的方向对所有n个输入数据以及与每个数据对应的权值数据做判断移位运算,具体的,如果权值是+1得到输入数据,如果权值是-1得到输入数据的反,如果权值是1/2则将输入浮点数据指数位数据减1(如果输入为整数或带小数点的整数数据,则输入数据右移1位),如果权值是-1/2则将输入浮点数据指数数据减1后取反(如果输入为整数或带小数点的整数数据,则输入数据右移1位后取反),之后求和得到该运算结果,这样共做m*n次判断移位操作与m*n次加法操作。而传统的运算方法需要对所有输入数据和与每个输入数据对应的权值数据先做乘法之后再对积求和,共需做m*n次乘法与m*n次加法,即上述运算过程只需使用运算单元中的移位运算电路和异或电路即可实现离散数据的乘法与加法运算,相对于传统的运算方法,本申请中的方法减少了运算量大的乘法操作从而减少了计算装置的运算量。
若根据所述判断数据格式单元120判断出输入数据全部为离散数据,例如对于一个输入输出均使用+1,-1表示,输入数据个数是n,输出数据个数是m的单层全连接神经网络,运算单元按照每个输出数据的方向对所有的n个输入数据以及与每个输入数据对应的权值数据进行异或操作之后对结果对1计数,得到运算结果,这样需要共做m*n次异或与m次计数操作,即当全部数据为离散数据而且离散数据均为一比特数据时,只需使用逻辑运算器中的异或电路即可实现离散数据的乘法和加法运算,相对于上述传统的运算方法,同样减少了运算量大的乘法操作。
本申请提供的技术方案对于含有离散数据的神经网络,在涉及离散数据的运算时使用移位、异或、与或非以及计数等逻辑运算实现原来的乘法操作,可以减少神经网络运算过程中运算量大的乘法运算的数量,从而降低计算装置的功耗,减少大量运算产生的热量,同时提高了运算效率以及装置的使用寿命。
本申请提供的计算装置可以应用于语音识别、图像识别、数据模式识别等领域的设备中,可以通过对全部离散神经网络、部分离散神经网络以及非离散神经网络的支持,实现低功耗的模式识别任务,从而能够使得智能识别装置能够运用于可穿戴设以及无线设备,例如智能手机、智能手表、智能眼睛等。
本申请实施例中,所述运算单元设置成一主多从结构,对于正向运算的计算指令,其可以将依据正向运算的计算指令将数据进行拆分,这样通过多个从处理电路即能够对计算量较大的部分进行并行运算,从而提高运算速度,节省运算时间,进而降低功耗。
在一种可能的实施方式中,所述运算单元12如图4所示,可以包括一个主处理电路101和多个从处理电路102。所述多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个从处理电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路,需要说明的是,如图4所示的k个从处理电路仅包括第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路,即该k个从处理电路为多个从处理电路中直接与主处理电路连接的从处理电路。
k个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发。
可选的,如图5所示,所述主处理电路还可以包括:转换处理电路、激活处理电路、加法处理电路中的一种或任意组合;
转换处理电路,用于将主处理电路接收的数据块或中间结果执行第一数据结构与第二数据结构之间的互换(例如连续数据与离散数据的转换);或将主处理电路接收的数据块或中间结果执行第一数据类型与第二数据类型之间的互换(例如定点类型与浮点类型的转换);
激活处理电路,用于执行主处理电路内数据的激活运算;
加法处理电路,用于执行加法运算或累加运算。
所述主处理电路,用于将确定所述输入神经元为广播数据,权值为分发数据,将分发数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述从处理电路;
所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述主处理电路;
所述主处理电路,用于将多个从处理电路发送的中间结果进行处理得到该计算指令的结果,将该计算指令的结果发送给所述控制单元。
所述从处理电路包括:乘法处理电路;
所述乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果;
转发处理电路,用于将接收到的数据块或乘积结果转发。
累加处理电路,所述累加处理电路,用于对该乘积结果执行累加运算得到该中间结果。
另一个实施例里,该运算指令为矩阵乘以矩阵的指令、累加指令、激活指令等等计算指令。
在另一种可选的实施方式中,如图6所示,所述运算单元包括:树型模块40,所述树型模块包括:一个根端口401和多个支端口402,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口中的每个支端口分别连接多个从处理电路中的一个从处理电路,所述树型模块具有收发功能,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令,即可以将主处理电路的数据传送给各个从处理电路,也可以将各个从处理电路的数据传送给主处理电路。
可选的,该树型模块为计算装置的可选择结果,其可以包括至少1层节点,该节点为具有转发功能的线结构,该节点本身可以不具有计算功能。如树型模块具有零层节点,即无需该树型模块。
可选的,该树型模块可以为n叉树结构,例如,如图7所示的二叉树结构,当然也可以为三叉树结构,该n可以为大于等于2的整数。本申请具体实施方式并不限制上述n的具体取值,上述层数也可以为2,从处理电路可以连接除倒数第二层节点以外的其他层的节点,例如可以连接如图7所示的倒数第一层的节点。
在另一种可选实施方式中,运算单元12如图8所示,可以包括分支处理电路103;其具体的连接结构如图8所示,其中,
主处理电路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得到最终结果,将该最终结果发送至该控制单元。
另外,加法运算和乘法运算的顺序可以调换。
本申请提供的技术方案通过一个指令即神经网络运算指令即实现了神经网络的乘法运算以及偏置运算,在神经网络计算的中间结果均无需存储或提取,减少了中间数据的存储以及提取操作,所以其具有减少对应的操作步骤,提高神经网络的计算效果的优点。
基于上述实施例提供的计算装置,本申请还提供一种通用神经网络数据(输入数据为浮点数和/或定点数)的运算方法,用于根据运算指令执行通用神经网络数据表示的神经网络运算,如图9所示,本申请提供的通用神经网络的运算方法包括:
步骤401,取指模块从指令缓存单元取出一条神经网络运算指令,并将所述神经网络运算指令送往译码模块;
步骤402,译码模块对所述神经网络运算指令进行译码,得到分别对应各个功能单元或模块的微指令,并将微指令送往指令队列;
步骤403,从标量寄存器堆里获取所述微指令对应的神经网络运算操作码和神经网络运算操作数,并将所述微指令送往给依赖关系处理单元;
步骤404,依赖关系处理单元分析所述微指令与之前尚未执行完的微指令在数据上是否存在关联关系,如果存在,则所述微指令需要在存储队列中等待至其与之前未执行完的微指令在数据上不再存在关联关系为止,然后将所述微指令送往运算单元;
步骤405,运算单元根据所需数据的地址和大小从高速暂存存储器中取出需要的输入数据;
步骤406,在运算单元中完成所述微指令对应的神经网络运算,并将神经网络运算得到的结果写回存储单元。
基于上述实施例提供的计算装置,本申请还提供一种包含离散数据的神经网络的运算方法,用于根据运算指令执行离散数据表示的神经网络运算,如图10所示,本申请提供离散神经网络的运算方法包括:
步骤501,取指模块从指令缓存单元取出一条神经网络运算指令,并将所述神经网络运算指令送往译码模块;
步骤502,译码模块对所述神经网络运算指令进行译码,得到分别对应各个功能单元或模块的微指令,并将各微指令送往指令队列;
步骤503,从标量寄存器堆里获取所述微指令对应的神经网络运算操作码和神经网络运算操作数,并将所述各微指令送给依赖关系处理单元;
步骤504,依赖关系处理单元分析所述微指令与之前尚未执行完的微指令在数据上是否存在关联关系,如果存在,则所述微指令需要在存储队列中等待至其与之前未执行完的微指令在数据上不再存在关联关系为止,然后将所述微指令送往运算单元;
步骤505,判断数据格式单元通过判断本层输入数据是否是离散数据、权值数据是否是离散数据,进而控制运算单元采用逻辑运算运算单元和/或浮点定点运算单元完成运算;
步骤506,运算单元根据所需数据的地址和大小从高速暂存存储器中取出需要的输入数据,然后根据相应的微指令对包含离散数据的输入数据采用浮点定点运算器以及逻辑运算实现神经网络运算;
步骤507,在运算单元中完成所述微指令对应的子神经网络的运算,并将各子神经网络的运算结果相加,将神经网络运算得到的最终结果写回存储单元。
需要说明的是,上述步骤中涉及到离散数据的神经网络运算的具体过程可以参照上述装置实施例中运算单元的计算过程,在此不再赘述。
可以理解,此外,上述对各元件和方法的定义并不仅限于实施例中提到的各种具体结构、形状或方式,本领域普通技术人员可对其进行简单地更改或替换,例如:离散数据还可以用二值化数据、三值化数据、2比特数据、3比特数据等形式代替只有两个取值的数据或只有三个取值的数据或2个比特可以表示的数据或3个比特可以表示的数据。计算单元还可以用异或单元、逻辑单元等形式代替,既只有逻辑运算器没有浮点定点运算器单元,严格意义说逻辑运算器的概念包括运算器,本申请只是为了突出对离散数据的专门化处理。
本申请还揭露了一个神经网络运算装置,其包括一个或多个在本申请中提到的计算装置,用于从其他处理装置中获取待运算数据和控制信息,执行指定的神经网络运算,执行结果通过I/O接口传递给外围设备。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上计算装置时,计算装置间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
该神经网络运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
本申请还揭露了一个组合处理装置,其包括上述的神经网络运算装置,通用互联接口,和其他处理装置。神经网络运算装置与其他处理装置进行交互,共同完成用户指定的操作。图11为组合处理装置的示意图。
其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为神经网络运算装置与外部数据和控制的接口,包括数据搬运,完成对神经网络神经网络运算装置的开启、停止等基本控制;其他处理装置也可以和神经网络运算装置协作共同完成运算任务。
通用互联接口,用于在所述神经网络运算装置与其他处理装置间传输数据和控制指令。该神经网络运算装置从其他处理装置中获取所需的输入数据,写入神经网络运算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入神经网络运算装置片上的控制缓存;也可以读取神经网络运算装置的存储模块中的数据并传输给其他处理装置。
可选的,该结构如图12所示,还可以包括存储装置,存储装置分别与所述神经网络运算装置和所述其他处理装置连接。存储装置用于保存在所述神经网络运算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本神经网络运算装置或其他处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
本申请还揭露了一种芯片,其包括了上述神经网络运算装置或组合处理装置。
本申请还揭露了一种芯片封装结构,其包括了上述芯片。
本申请还揭露了一种板卡,其包括了上述芯片封装结构。参阅图13,图13提供了一种板卡,上述板卡除了包括上述芯片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.0X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,所述接口装置还可以是其他的接口,本申请并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
本申请还揭露了一种电子设备,其包括了上述板卡。
电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器、随机存取器、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (16)
1.一种计算装置,其特征在于,所述计算装置用于执行神经网络计算,所述计算装置包括:控制单元以及运算单元,所述运算单元包括逻辑运算器以及浮点定点运算器;
所述控制单元,用于获取计算指令;
所述控制单元,还用于解析所述计算指令得到多个运算指令,将所述多个运算指令发送给所述运算单元;
所述运算单元,用于根据所述控制单元下发的所述运算指令,获取输入数据,所述输入数据包括神经元数据以及权值数据,所述输入数据的部分或者全部为离散数据;在所述输入数据的部分为离散数据的情况下,利用浮点定点运算器以及所述逻辑运算器完成神经网络运算,得到运算结果,其中,所述输入数据中的非离散数据包括浮点数据和/或定点数据;在所述输入数据全部为离散数据的情况下,利用所述逻辑运算器完成神经网络运算,得到所述运算结果;
其中,所述运算单元包括:一个主处理电路、多个从处理电路及分支处理电路;所述主处理电路与所述分支处理电路连接,所述分支处理电路与所述多个从处理电路连接;
所述主处理电路,用于对所述输入数据执行前序处理以及与所述多个从处理电路之间传输数据和运算指令;
所述多个从处理电路,用于根据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将所述多个中间结果传输给所述主处理电路;
所述主处理电路,用于对所述多个中间结果执行后续处理得到所述计算指令的运算结果;
所述分支处理电路,用于执行转发所述主处理电路与所述从处理电路之间的数据或指令。
2.根据权利要求1所述的装置,其特征在于,所述主处理电路以及所述多个从处理电路中的每个从处理电路均包括所述逻辑运算器。
3.根据权利要求2所述的装置,其特征在于,所述运算单元还包括:判断数据格式单元;
所述判断数据格式单元,用于判断所述输入数据的数据类型,并根据不同数据类型执行对不同数据类型数据指令的调度任务;其中,所述数据类型包括浮点数据、定点数据以及离散数据;所述判断数据格式单元位于所述主处理电路;或者,所述判断数据格式单元位于所述主处理电路以及所述多个从处理电路中的每个从处理电路中。
4.根据权利要求1至3任一项所述的装置,其特征在于,所述计算装置还包括:存储单元和直接内存访问单元,所述存储单元包括:寄存器、缓存中任意组合;
所述缓存,用于存储所述输入数据;
所述寄存器,用于存储神经网络运算的操作码以及神经网络运算的操作数,所述操作码用于指示所述神经网络运算指令的功能,所述操作数用于指示所述神经网络运算指令的数据信息;
所述缓存包括高速暂存存储器;
所述直接内存访问单元用于从存储单元读取数据或向所述存储单元写入数据。
5.根据权利要求4所述的装置,其特征在于,所述控制单元包括:指令缓存单元、指令处理单元、存储队列单元以及依赖关系处理单元;
所述指令缓存单元,用于存储所述神经网络运算关联的计算指令;
所述指令处理单元,用于从所述指令缓存单元获取所述计算指令,并对所述计算指令解析得到多个运算指令;
所述存储队列单元,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令;
所述依赖关系处理单元,用于确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,将所述第一运算指令缓存在所述指令队列中,在所述第零运算指令执行完毕后,从所述指令队列中提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需数据的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需数据的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,确定所述第一运算指令与所述第零运算指令不具有关联关系。
6.根据权利要求5所述的装置,其特征在于,所述指令处理单元包括:取指模块、译码模块以及指令队列;
所述取指模块,用于从所述指令缓存单元中获取所述计算指令;
所述译码模块,用于对获取的所述计算指令进行译码,得到多个运算指令;
所述指令队列,用于对所述运算指令进行顺序存储。
7.一种组合处理装置,其特征在于,所述组合处理装置包括一个或多个如权利要求1-6任一项所述的计算装置、通用互联接口、存储装置和其他处理装置,所述计算装置用于从其他处理装置中获取待运算输入数据和控制信息,并执行指定的神经网络运算,将执行结果通过通用互联接口传递给其他处理装置;
当所述组合处理装置包含多个所述计算装置时,所述多个所述计算装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述计算装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算;多个所述计算装置共享同一控制系统或拥有各自的控制系统;多个所述计算装置共享内存或者拥有各自的内存;多个所述计算装置的互联方式是任意互联拓扑;
存储装置,所述存储装置分别与所述多个所述计算装置和所述其他处理装置连接,用于保存所述组合处理装置和所述其他处理装置的数据。
8.一种神经网络芯片,其特征在于,所述神经网络芯片包括如权利要求7所述的组合处理装置。
9.一种电子设备,其特征在于,所述电子设备包括如所述权利要求8所述的芯片。
10.一种板卡,其特征在于,所述板卡包括:存储器件、接口装置和控制器件以及如权利要求8所述的神经网络芯片;
其中,所述神经网络芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述芯片与外部设备之间的数据传输;
所述控制器件,用于对所述芯片的状态进行监控。
11.一种执行神经网络模型的计算方法,其特征在于,所述计算方法应用于计算装置,所述计算装置用于执行神经网络计算;所述计算装置包括:所述计算装置包括:运算单元以及控制单元,所述控制单元包括逻辑运算器以及浮点定点运算器;
所述控制单元获取计算指令;
所述控制单元解析所述计算指令得到多个运算指令,将所述多个运算指令发送给所述运算单元;
所述运算单元根据所述控制单元下发的所述运算指令,获取输入数据,所述输入数据包括神经元数据以及权值数据,所述输入数据的部分或者全部为离散数据;在所述输入数据部分为离散数据的情况下,利用浮点定点运算器以及所述逻辑运算器完成神经网络运算,得到运算结果,其中,所述输入数据中的非离散数据包括浮点数据和/或定点数据;在所述输入数据全部为离散数据的情况下,利用所述逻辑运算器完成神经网络运算,得到所述运算结果;
其中,所述运算单元包括:一个主处理电路、多个从处理电路及分支处理电路;所述主处理电路与所述分支处理电路连接,所述分支处理电路与所述多个从处理电路连接;
所述主处理电路对所述输入数据执行前序处理以及与所述多个从处理电路之间传输数据和运算指令;
所述多个从处理电路根据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将所述多个中间结果传输给所述主处理电路;
所述主处理电路对所述多个中间结果执行后续处理得到所述计算指令的运算结果;
所述分支处理电路执行转发所述主处理电路与所述从处理电路之间的数据或指令。
12.根据权利要求11所述的方法,其特征在于,所述主处理电路以及所述多个从处理电路中的每个从处理电路均包括逻辑运算器。
13.根据权利要求11所述的方法,其特征在于,所述运算单元还包括:判断数据格式单元;
所述判断数据格式单元判断神经网络中输入数据的数据类型,并根据不同数据类型执行对不同数据类型数据指令的调度任务;
其中,所述数据类型包括浮点数据、定点数据以及离散数据;所述判断数据格式单元位于所述主处理电路;或者,所述判断数据格式单元位于所述主处理电路以及所述多个从处理电路中的每个从处理电路中。
14.根据权利要求11至13任一项所述的方法,其特征在于,所述计算装置还包括:存储单元和直接内存访问单元,所述存储单元包括:寄存器、缓存中任意组合;
所述缓存存储所述输入数据;
所述寄存器存储神经网络运算的操作码以及神经网络运算的操作数,所述操作码用于指示所述神经网络运算指令的功能,所述操作数用于指示所述神经网络运算指令的数据信息;
所述缓存包括高速暂存存储器;
所述直接内存访问单元从存储单元读取数据或向所述存储单元写入数据。
15.根据权利要求13所述的方法,其特征在于,所述控制单元包括:指令缓存单元、指令处理单元、存储队列单元以及依赖关系处理单元;
所述指令缓存单元存储所述神经网络运算关联的计算指令;
所述指令处理单元从所述指令缓存单元获取所述计算指令,并对所述计算指令解析得到多个运算指令;
所述存储队列单元存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令;
所述依赖关系处理单元确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,将所述第一运算指令缓存在所述指令队列中,在所述第零运算指令执行完毕后,从所述指令队列中提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需数据的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需数据的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,确定所述第一运算指令与所述第零运算指令不具有关联关系。
16.根据权利要求15所述的方法,其特征在于,所述指令处理单元包括:取指模块、译码模块以及指令队列;
所述取指模块从所述指令缓存单元中获取所述计算指令;
所述译码模块对获取的所述计算指令进行译码,得到多个运算指令;
所述指令队列对所述运算指令进行顺序存储。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811193714.3A CN111047021B (zh) | 2018-10-12 | 2018-10-12 | 一种计算装置及相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811193714.3A CN111047021B (zh) | 2018-10-12 | 2018-10-12 | 一种计算装置及相关产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111047021A CN111047021A (zh) | 2020-04-21 |
CN111047021B true CN111047021B (zh) | 2023-11-24 |
Family
ID=70230225
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811193714.3A Active CN111047021B (zh) | 2018-10-12 | 2018-10-12 | 一种计算装置及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111047021B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111857834A (zh) * | 2020-07-16 | 2020-10-30 | 中国科学院计算技术研究所 | 分形计算智能处理器、分形计算智能处理方法 |
CN113535637B (zh) * | 2021-07-20 | 2022-11-15 | 珠海市一微星科技有限公司 | 一种运算加速单元及其运行方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103959236A (zh) * | 2011-11-30 | 2014-07-30 | 英特尔公司 | 用于提供向量横向多数表决功能的指令和逻辑 |
CN107301453A (zh) * | 2016-04-15 | 2017-10-27 | 北京中科寒武纪科技有限公司 | 支持离散数据表示的人工神经网络正向运算装置和方法 |
CN107451658A (zh) * | 2017-07-24 | 2017-12-08 | 杭州菲数科技有限公司 | 浮点运算定点化方法及系统 |
CN107833176A (zh) * | 2017-10-30 | 2018-03-23 | 上海寒武纪信息科技有限公司 | 一种信息处理方法及相关产品 |
CN107977229A (zh) * | 2016-11-30 | 2018-05-01 | 上海寒武纪信息科技有限公司 | 一种指令生成过程的复用方法及装置、处理装置 |
-
2018
- 2018-10-12 CN CN201811193714.3A patent/CN111047021B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103959236A (zh) * | 2011-11-30 | 2014-07-30 | 英特尔公司 | 用于提供向量横向多数表决功能的指令和逻辑 |
CN107301453A (zh) * | 2016-04-15 | 2017-10-27 | 北京中科寒武纪科技有限公司 | 支持离散数据表示的人工神经网络正向运算装置和方法 |
CN107977229A (zh) * | 2016-11-30 | 2018-05-01 | 上海寒武纪信息科技有限公司 | 一种指令生成过程的复用方法及装置、处理装置 |
CN107451658A (zh) * | 2017-07-24 | 2017-12-08 | 杭州菲数科技有限公司 | 浮点运算定点化方法及系统 |
CN107833176A (zh) * | 2017-10-30 | 2018-03-23 | 上海寒武纪信息科技有限公司 | 一种信息处理方法及相关产品 |
CN107844832A (zh) * | 2017-10-30 | 2018-03-27 | 上海寒武纪信息科技有限公司 | 一种信息处理方法及相关产品 |
CN107895191A (zh) * | 2017-10-30 | 2018-04-10 | 上海寒武纪信息科技有限公司 | 一种信息处理方法及相关产品 |
CN107993206A (zh) * | 2017-10-30 | 2018-05-04 | 上海寒武纪信息科技有限公司 | 一种信息处理方法及相关产品 |
Also Published As
Publication number | Publication date |
---|---|
CN111047021A (zh) | 2020-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111047022B (zh) | 一种计算装置及相关产品 | |
CN109543832B (zh) | 一种计算装置及板卡 | |
CN109740739B (zh) | 神经网络计算装置、神经网络计算方法及相关产品 | |
CN109522052B (zh) | 一种计算装置及板卡 | |
CN110163363B (zh) | 一种计算装置及方法 | |
CN110383300B (zh) | 一种计算装置及方法 | |
CN111045728B (zh) | 一种计算装置及相关产品 | |
CN111488963B (zh) | 神经网络计算装置和方法 | |
CN111930681B (zh) | 一种计算装置及相关产品 | |
CN111488976B (zh) | 神经网络计算装置、神经网络计算方法及相关产品 | |
CN109670581B (zh) | 一种计算装置及板卡 | |
CN111047021B (zh) | 一种计算装置及相关产品 | |
CN110059809B (zh) | 一种计算装置及相关产品 | |
CN111079908B (zh) | 片上网络数据处理方法、存储介质、计算机设备和装置 | |
CN111368967B (zh) | 一种神经网络计算装置和方法 | |
CN111047024B (zh) | 一种计算装置及相关产品 | |
CN110472734B (zh) | 一种计算装置及相关产品 | |
CN111368990B (zh) | 一种神经网络计算装置和方法 | |
CN111368987B (zh) | 一种神经网络计算装置和方法 | |
CN111368986B (zh) | 一种神经网络计算装置和方法 | |
CN111047023B (zh) | 一种计算装置及相关产品 | |
CN111367567A (zh) | 一种神经网络计算装置和方法 | |
CN111738429B (zh) | 一种计算装置及相关产品 | |
CN111222632B (zh) | 计算装置、计算方法及相关产品 | |
CN111368985B (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 |