CN111047022A - 一种计算装置及相关产品 - Google Patents
一种计算装置及相关产品 Download PDFInfo
- Publication number
- CN111047022A CN111047022A CN201811194270.5A CN201811194270A CN111047022A CN 111047022 A CN111047022 A CN 111047022A CN 201811194270 A CN201811194270 A CN 201811194270A CN 111047022 A CN111047022 A CN 111047022A
- Authority
- CN
- China
- Prior art keywords
- data
- instruction
- unit
- neural network
- discrete
- 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.)
- Granted
Links
- 238000013528 artificial neural network Methods 0.000 claims abstract description 137
- 238000004364 calculation method Methods 0.000 claims abstract description 50
- 238000006243 chemical reaction Methods 0.000 claims abstract description 36
- 238000012545 processing Methods 0.000 claims description 198
- 230000015654 memory Effects 0.000 claims description 34
- 238000000034 method Methods 0.000 claims description 32
- 210000002569 neuron Anatomy 0.000 claims description 19
- 238000007667 floating Methods 0.000 claims description 15
- 230000006870 function Effects 0.000 claims description 13
- 230000005540 biological transmission Effects 0.000 claims description 6
- 239000000284 extract Substances 0.000 claims description 5
- 238000003062 neural network model Methods 0.000 claims description 4
- 230000002093 peripheral effect Effects 0.000 claims description 4
- 238000012544 monitoring process Methods 0.000 claims description 3
- 238000000205 computational method Methods 0.000 claims 2
- 239000011159 matrix material Substances 0.000 description 16
- 210000002364 input neuron Anatomy 0.000 description 15
- 238000009825 accumulation Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 9
- 210000004205 output neuron Anatomy 0.000 description 8
- 230000004913 activation Effects 0.000 description 7
- 210000004027 cell Anatomy 0.000 description 6
- 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
- 238000005516 engineering process Methods 0.000 description 3
- 230000010365 information processing Effects 0.000 description 3
- 238000004806 packaging method and process Methods 0.000 description 3
- 238000003909 pattern recognition Methods 0.000 description 3
- 238000005481 NMR spectroscopy Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 230000020169 heat generation Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000005406 washing Methods 0.000 description 2
- 241001465754 Metazoa Species 0.000 description 1
- 241000699666 Mus <mouse, genus> Species 0.000 description 1
- 241000699670 Mus sp. Species 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
- 230000008859 change Effects 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本申请提供了一种神经网络计算装置及相关产品,所述计算装置包括:控制单元、数据转换单元以及运算单元,所述运算单元包括逻辑运算器;所述控制单元,用于获取计算指令,解析所述计算指令得到多个运算指令,并将该多个运算指令以及所述输入数据发送给所述运算单元;所述数据转换单元,用于将非离散类型的输入数据转换为离散类型的输入数据;所述运算单元,用于根据所述控制单元下发的所述运算指令,获取离散类型的输入数据,利用逻辑运算器执行离散数据表示的神经网络运算,得到运算结果。本申请揭露的计算装置,可减少神经网络计算中的运算量,提高效率,降低功耗。
Description
技术领域
本申请涉及信息处理技术领域,具体涉及一种神经网络计算装置及相关产品。
背景技术
神经网络是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型,这种网络由大量的节点(或称神经元)之间相互连接构成,通过调整内部大量节点之间相互连接的关系,利用输入数据、权值产生输出数据模拟人脑的信息处理过程处理信息并生成模式识别之后的结果。
随着神经网络技术特别是人工神经网络中深度学习(deep learning)技术的发展,当前用于智能识别领域的神经网络模型规模越来越大,随之而来的运算量也呈现几何倍数增长。运算量的几何倍数增长带来了运算装置的功耗、发热量的增长。智能识别装置的功耗过大、发热量过大直接限制了其在终端产品例如可穿戴设备、无线设备等设备上的应用。
发明内容
本申请实施例提供了一种神经网络计算装置及相关产品,可减少神经网络计算中的运算量,提高效率,降低功耗。
第一方面,提供一种计算装置,所述计算装置用于执行神经网络计算,所述计算装置包括:控制单元、数据转换单元以及运算单元;
所述控制单元,用于获取计算指令;
所述控制单元,还用于解析所述计算指令得到多个运算指令,将该多个运算指令发送给所述运算单元;
所述数据转换单元,用于将非离散类型的输入数据转换为离散类型的输入数据,其中,所述输入数据包括神经元数据以及权值数据,所述输入数据的部分或者全部为离散类型的数据,在所述输入数据的部分为离散类型的数据的情况下,所述非离散类型的数据包括浮点数据和/或定点数据;
所述运算单元,用于根据所述控制单元下发的所述运算指令,获取所述离散类型的输入数据,并根据所述离散类型的输入数据以及所述运算指令利用逻辑运算器执行离散数据表示的神经网络运算,得到运算结果,其中,所述离散输入数据包括离散神经元数据以及离散权值数据。
本申请提供的计算装置,通过数据转换单元将输入数据中的非离散类型的数据转换为所述逻辑运算器可以处理的离散类型的数据,进而由所述逻辑运算器完成离散数据表示的神经网络运算,可以减少存储数据所需的存储空间,减少运算量大的乘法运算,从而提高神经网络运算速度,降低功耗。
第二方面,本申请实施例提供一种神经网络运算装置,所述神经网络运算装置包括一个或多个如上述第一方面所述的计算装置,用于从其他处理装置中获取待运算输入数据和控制信息,并执行指定的神经网络运算,将执行结果通过I/O接口传递给其他处理装置;
当所述神经网络运算装置包含多个所述计算装置时,所述多个所述计算装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述计算装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算;多个所述计算装置共享同一控制系统或拥有各自的控制系统;多个所述计算装置共享内存或者拥有各自的内存;多个所述计算装置的互联方式是任意互联拓扑。
第三方面,本申请实施例提供了一种组合处理装置,所述组合处理装置包括如第二方面所述的神经网络运算装置,通用互联接口和其他处理装置;所述神经网络运算装置与所述其他处理装置进行交互,共同完成用户指定的计算操作。该组合装置还可以包括存储装置,该存储装置分别与所述神经网络运算装置和所述其他处理装置连接,用于保存所述神经网络运算装置和所述其他处理装置的数据。
第四方面,本申请实施例提供了一种神经网络芯片,该神经网络芯片包括上述第一方面所述的计算装置、上述第二方面所述的神经网络运算装置或者上述第三方面所述的组合处理装置。
第五方面,本申请实施例提供了一种神经网络芯片封装结构,该神经网络芯片封装结构包括上述第四方面所述的神经网络芯片;
第六方面,本申请实施例提供了一种板卡,该板卡包括上述第五方面所述的神经网络芯片封装结构。
第七方面,本申请实施例提供了一种电子装置,该电子装置包括上述第六方面所述的神经网络芯片或者上述第六方面所述的板卡。
第八方面,本申请实施例还提供一种执行神经网络模型的计算方法,所述计算方法应用于计算装置,所述计算装置用于执行神经网络计算;所述计算装置包括:控制单元、数据转换单元以及运算单元;
所述控制单元获取计算指令;
所述控制单元解析所述计算指令得到多个运算指令,将该多个运算指令发送给所述运算单元;
所述数据转换单元将非离散类型的输入数据转换为离散类型的输入数据,其中,所述输入数据包括神经元数据以及权值数据,所述输入数据的部分或者全部为离散类型的数据,在所述输入数据的部分为离散类型的数据的情况下,所述非离散类型的数据包括浮点数据和/或定点数据;
所述运算单元根据所述控制单元下发的所述运算指令,获取所述离散类型的输入数据,并根据所述离散类型的输入数据以及所述运算指令利用逻辑运算器执行离散数据表示的神经网络运算,得到运算结果,其中,所述离散输入数据包括离散神经元数据以及离散权值数据。
在一些实施例中,所述电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
在一些实施例中,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种计算装置的结构示意图。
图2是本申请实施例提供的指令处理单元的结构示意图。
图3是本申请实施例提供的另一种计算装置的结构示意图。
图4是本申请实施例提供的主处理电路的结构示意图。
图5是本申请实施例提供的另一种计算装置的结构示意图。
图6是本申请实施例提供的树型模块的结构示意图。
图7是本申请实施例提供的另一种计算装置的结构示意图。
图8是本申请实施例提供的一种神经网络运算方法的流程示意图。
图9是本申请实施例提供的一种组合处理装置的结构示意图。
图10是本申请实施例提供的另一种组合处理装置的结构示意图。
图11是本申请实施例提供的一种板卡的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
在对本发明进行介绍之前,首先对神经网络中的数据进行说明,神经网络数据包括通用神经网络数据以及离散神经网络数据。其中,通用神经网络数据(非离散数据)指代的是通用的计算机数据,也就是计算机中常用的数据类型,通用神经网络数据是指取指个数未知的连续浮点数和/或定点数,例如32位浮点数据、16位浮点数据、32位定点数据等等。离散神经网络数据是指部分数据或全部数据是用离散数据表示的计算机数据。不同于通用神经网络数据中32位浮点、16位浮点的数据表示,离散神经网络数据指参与运算的数据只是某几个离散的实数组成的集合。
参阅图1,图1是本申请使用的一种计算装置,该计算装置用于执行神经网络计算,该计算装置包括:控制单元11、运算单元12以及数据转换单元13,所述运算单元包括逻辑运算器,其中,控制单元11与运算单元12连接,所述数据转换单元13与所述控制单元11与所述数据转换单元12分别连接,其中,
所述控制单元11,用于获取计算指令,在一种可选方案中,具体的,获取输入数据以及计算指令方式可以通过数据输入输出单元得到,该数据输入输出单元具体可以为一个或多个数据I/O接口或I/O引脚。
所述控制单元11,还用于解析上述计算指令得到多个运算指令,将该多个运算指令发送给所述运算单元12;
所述数据转换单元13,用于将非离散类型的输入数据转换为离散类型的输入数据,其中,所述输入数据包括神经元数据以及权值数据,所述输入数据的部分或者全部为离散类型的数据,在所述输入数据的部分为离散类型的数据的情况下,所述非离散类型的数据包括浮点数据和/或定点数据。
具体的,所述离散类型的数据为采用2的幂次表示的数据,所述数据转换单元13用于将所述非离散类型的输入数据转换为2的幂次表示的输入数据,,并将转换后的离散数据发送给所述运算单元。
所述运算单元12,用于根据所述控制单元下发的所述运算指令,获取所述离散类型的输入数据,并根据所述离散类型的输入数据以及所述运算指令利用逻辑运算器执行离散数据表示的神经网络运算,得到运算结果,其中,所述离散类型的输入数据包括离散神经元数据以及离散权值数据。
具体的,所述逻辑运算器用于对输入的离散神经元数据以及与所述离散神经元数据对应的离散权值数据进行逻辑运算,实现神经网络运算中的乘法运算和加法运算,若所述离散神经元数据与所述离散权值数据均为一比位的离散数据,所述逻辑运算器可以采用异或电路实现神经网络运算中的乘法和加法运算。
本申请实施例中,所述运算单元还包括判断数据格式单元,所述判断数据格式单元用于判断神经网络中所述输入数据的数据类型,并根据不同数据类型执行对不同数据类型数据指令的调度任务,所述数据类型包括浮点数据、定点数据以及离散数据。具体的,所述判断数据格式单元执行神经网络每一层输入的神经元数据以及权值数据等进行判断,在输入数据中包括非离散类型的数据的情况下,将所述非离散类型的输入数据发送给所述数据转换单元13,所述数据转换单元将所述非离散类型的输入数据转换为离散类型的输入数据发送给所述运算单元12,所述运算单元中的逻辑运算器根据离散类型的输入数据的计算指令完成神经网络运算。
可选地,所述数据转换单元13还用于将离散类型的数据转换为非离散类型的数据,具体的,在所述运算单元执行完离散数据表示的神经网络运算得到离散形式的运算结果之后,若所述运算结果需要以非离散类型的形式存储,则将所述运算结果转换为非离散类型的数据。
在一种可能的实施方式中,所述运算单元12包括主处理电路101以及多个从处理电路102,所述主处理电路101,用于对所述输入数据执行前序处理以及与所述多个从处理电路之间传输数据以及运算指令;
多个从处理电路102,用于依据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;
主处理电路101,用于对所述多个中间结果执行后续处理得到所述计算指令的计算结果。
本申请实施例中,所述主处理电路以及所述多个从处理电路中的每个从处理电路均包括所述逻辑运算器,所述主处理电路中包括所述判断数据格式单元,或者,所述主处理电路与所述从处理电路中的每个从处理电路均包括所述判断数据格式单元。
本申请实施例中,采用逻辑运算器替换所述运算单元中的乘法器与加法器,从而可以降低运算单元的面积,采用所述数据转换单元将输入数据中的非离散类型的数据转换为所述逻辑运算器可以处理的离散类型的数据,进而由所述逻辑运算器完成神经网络运算中离散数据的乘法运算和加法运算。本申请提供的技术方案对于含有非离散类型的神经网络运算,通过将非离散类型的数据转换为离散类型的数据后使用逻辑运算器进行加法、移位、与或非、异或以及计数等逻辑运算实现神经网络运算,可以减少神经网络运算过程中运算量大的乘法运算的数量,从而降低计算装置的功耗,减少大量运算产生的热量,同时提高了运算效率以及装置的使用寿命。
可选地,上述计算指令包括但不限于:正向运算指令或反向训练指令,或其他神经网络运算指令等等,例如卷积运算指令,本申请具体实施方式并不限制上述计算指令的具体表现形式。
对于神经网络中的运算可以为神经网络中的一层的运算,对于多层神经网络,其实现过程是,在正向运算中,当上一层人工神经网络执行完成之后,下一层的运算指令会将运算单元中计算出的输出神经元作为下一层的输入神经元进行运算(或者是对该输出神经元进行某些操作再作为下一层的输入神经元),同时,将权值也替换为下一层的权值;在反向运算中,当上一层人工神经网络的反向运算执行完成后,下一层运算指令会将运算单元中计算出的输入神经元梯度作为下一层的输出神经元梯度进行运算(或者是对该输入神经元梯度进行某些操作再作为下一层的输出神经元梯度),同时将权值替换为下一层的权值。
对于神经网络运算,如果该神经网络运算具有多层运算,多层运算的输入神经元和输出神经元并非是指整个神经网络的输入层中神经元和输出层中神经元,而是对于网络中任意相邻的两层,处于网络正向运算下层中的神经元即为输入神经元,处于网络正向运算上层中的神经元即为输出神经元。以卷积神经网络为例,设一个卷积神经网络有L层,K=1,2,……,L-1,对于第K层和第K+1层来说,我们将第K层称为输入层,其中的神经元为所述输入神经元,第K+1层称为输出层,其中的神经元为所述输出神经元。即除最顶层外,每一层都可以作为输入层,其下一层为对应的输出层。
上述计算装置还可以包括:存储单元10和直接内存访问单元50,存储单元10可以包括:寄存器201、缓存202中的一个或任意组合,具体的,所述缓存,用于存储所述计算指令以及所述输入数据;所述寄存器,用于存储所述神经网络运算的操作码以及神经网络运算的操作数,所述操作码用于指示所述神经网络运算指令的功能,所述操作数用于指示所述神经网络运算指令的数据信息;在一种可能的实施方式中,所述缓存包括高速暂存存储器,所述寄存器包括标量寄存器堆。直接内存访问单元50用于从所述存储单元10读取数据或向所述存储单元10存储数据。其中,所述存储单元10与所述直接内存访问单元50通过数据输入输出单元203交互数据。
在一可选的方案中,所述控制单元11包括:指令缓存单元110、指令处理单元111和存储队列单元113;其中,
所述指令缓存单元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获取第一运算指令之前,确定所述第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如果所述第一运算指令与所述第零运算指令存在关联关系,则将所述第一运算指令缓存在所述指令存储单元内,在所述第零运算指令执行完毕后,从所述指令存储单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需数据(例如矩阵)的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需矩阵的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第零运算指令不具有关联关系。
进一步的,如图2所示,所述指令处理单元111包括:取指模块、译码模块以及指令队列。其中,所述取指模块,用于从所述指令缓存单元110中获取神经网络的计算指令;所述译码模块用于对所述取指模块获取的计算指令进行译码,得到神经网络的运算指令;所述指令队列用于对译码后得到的运算指令,按照待执行的前后顺序进行顺序存储。
本申请实施例中,所述控制单元11中指令处理单元111的取指模块从指令缓存中获取神经网络计算指令,译码单元对获取到的计算指令进行译码,得到一个或者多个运算指令,并将所述一个或者多个运算指令送往指令队列进行顺序存储,所述控制单元11还用于从标量寄存器堆获取所述一个或者多个运算指令对应的操作码以及操作数,并将所述操作码以及操作数发送给所述运算单元12,所述控制单元11中的依赖关系处理单元112确定所述运算指令与之前尚未执行完的指令在数据上是否存在关联关系,如果存在,则将所述运算指令发送至存储队列中以等待所述运算指令与之前尚未执行完的指令之间的关联关系解除为止,然后将所述运算指令发送至所述运算单元12,所述运算单元12根据操作数中的数据信息从高速暂存存储器中获取输入数据以及神经网络模型数据等所需数据,并根据所述操作码以及所述运算指令,在所述运算单元中完成所述运算指令对应的神经网络运算,并将运算结果写入存储单元中。
对于神经网络运算指令来说,其实际需要执行的公式可以为:s=s(Σwxi+b),,其中,ω为权值,xi为输入数据,b为偏置标量,即将权值ω乘以输入数据xi,进行求和,然后加上偏置b后做激活运算s(h),得到最终的运算结果s。
本申请实施例中,所述运算单元12在完成所述运算指令对应的神经网络运算时,若根据所述判断数据格式单元判断出输入数据部分为非离散数据,部分为离散数据,则将非离散数据发送给所述数据转换单元13,所述数据转换单元13将非离散数据转换为2的幂次表示的数据,具体的,所述数据转换单元13将一个非离散数据通过取整的方式找到距离该数据最近的2的幂次数据并输出给所述运算单元12,从而实现非离散数据和幂次数据(即离散数据)之间的转换。
在神经网络中的数据全部为离散数据之后,所述运算单元12中的逻辑运算器执行神经网络中离散数据的移位、异或、计数以及加法等运算,得到运算结果。举例来讲,对于一个输入输出均使用+1,-1表示,输入数据个数是n,输出数据个数是m的单层全连接神经网络,运算单元按照每个输出数据的方向对所有的n个输入数据以及与每个输入数据对应的权值数据进行异或操作之后对结果对1计数,得到运算结果,这样需要共做m*n次异或与m次计数操作,而传统的运算方法需要对所有输入数据和与每个输入数据对应的权值数据先做乘法之后再对积求和,共需做m*n次乘法与m*n次加法,相对于传统的运算方法,本申请中的方法减少了运算量大的乘法操作。
本申请提供的计算装置可以应用于语音识别、图像识别、数据模式识别等领域的设备中,可以通过对全部离散神经网络、部分离散神经网络以及非离散神经网络的支持,实现低功耗的模式识别任务,从而能够使得智能识别装置能够运用于可穿戴设以及无线设备,例如智能手机、智能手表、智能眼睛等。
本申请实施例中,所述运算单元设置成一主多从结构,对于正向运算的计算指令,其可以将依据正向运算的计算指令将数据进行拆分,这样通过多个从处理电路即能够对计算量较大的部分进行并行运算,从而提高运算速度,节省运算时间,进而降低功耗。
在一种可能的实施方式中,所述运算单元12如图3所示,可以包括一个主处理电路101和多个从处理电路102。所述多个从处理电路呈阵列分布;每个从处理电路与相邻的其他从处理电路连接,主处理电路连接所述多个从处理电路中的k个从处理电路,所述k个从处理电路为:第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路,需要说明的是,如图3所示的k个从处理电路仅包括第1行的n个从处理电路、第m行的n个从处理电路以及第1列的m个从处理电路,即该k个从处理电路为多个从处理电路中直接与主处理电路连接的从处理电路。
k个从处理电路,用于在所述主处理电路以及多个从处理电路之间的数据以及指令的转发。
可选的,如图4所示,所述主处理电路还可以包括:转换处理电路、激活处理电路、加法处理电路中的一种或任意组合;
转换处理电路,用于将主处理电路接收的数据块或中间结果执行第一数据结构与第二数据结构之间的互换(例如连续数据与离散数据的转换);或将主处理电路接收的数据块或中间结果执行第一数据类型与第二数据类型之间的互换(例如定点类型与浮点类型的转换);
激活处理电路,用于执行主处理电路内数据的激活运算;
加法处理电路,用于执行加法运算或累加运算。
所述主处理电路,用于将确定所述输入神经元为广播数据,权值为分发数据,将分发数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述从处理电路;
所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述主处理电路;
所述主处理电路,用于将多个从处理电路发送的中间结果进行处理得到该计算指令的结果,将该计算指令的结果发送给所述控制单元。
所述从处理电路包括:乘法处理电路;
所述乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果;
转发处理电路,用于将接收到的数据块或乘积结果转发。
累加处理电路,所述累加处理电路,用于对该乘积结果执行累加运算得到该中间结果。
本申请实施例中,所述乘法处理电路与所述累加处理电路均采用逻辑运算器实现乘法运算与加法运算。
另一个实施例里,该运算指令为矩阵乘以矩阵的指令、累加指令、激活指令等等计算指令。
在另一种可选的实施方式中,如图5所示,所述运算单元包括:树型模块40,所述树型模块包括:一个根端口401和多个支端口402,所述树型模块的根端口连接所述主处理电路,所述树型模块的多个支端口中的每个支端口分别连接多个从处理电路中的一个从处理电路,所述树型模块具有收发功能,用于转发所述主处理电路与所述多个从处理电路之间的数据块、权值以及运算指令,即可以将主处理电路的数据传送给各个从处理电路,也可以将各个从处理电路的数据传送给主处理电路。
可选的,该树型模块为计算装置的可选择结果,其可以包括至少1层节点,该节点为具有转发功能的线结构,该节点本身可以不具有计算功能。如树型模块具有零层节点,即无需该树型模块。
可选的,该树型模块可以为n叉树结构,例如,如图6所示的二叉树结构,当然也可以为三叉树结构,该n可以为大于等于2的整数。本申请具体实施方式并不限制上述n的具体取值,上述层数也可以为2,从处理电路可以连接除倒数第二层节点以外的其他层的节点,例如可以连接如图7所示的倒数第一层的节点。
在另一种可选实施方式中,运算单元12如图7所示,可以包括分支处理电路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得到最终结果,将该最终结果发送至该控制单元。
本申请实施例中,上述运算过程中的数据均采用数据转换单元转换为离散数据,上述乘法运算与累加运算均采用逻辑运算器完成。
基于上述实施例提供的计算装置,本申请还提供一种离散数据表示的神经网络的运算方法,用于根据运算指令执行离散数据表示的神经网络运算,如图8所示,本申请提供离散神经网络的运算方法包括:
步骤501,取指模块从指令缓存单元取出一条神经网络运算指令,并将所述神经网络运算指令送往译码模块;
步骤502,译码模块对所述神经网络运算指令进行译码,得到分别对应各个功能单元或模块的微指令,并将各微指令送往指令队列;
步骤503,从标量寄存器堆里获取所述微指令对应的神经网络运算操作码和神经网络运算操作数,并将所述各微指令发送给依赖关系处理单元;
步骤504,依赖关系处理单元分析所述微指令与之前尚未执行完的微指令在数据上是否存在关联关系,如果存在,则所述微指令需要在存储队列中等待至其与之前未执行完的微指令在数据上不再存在关联关系为止,然后将所述微指令送往运算单元;
步骤505,判断数据格式单元通过判断本层输入数据是否是离散数据、权值数据是否是离散数据;
步骤506,在所述输入数据或所述权值数据部分或者全部不是离散数据的情况下,将非离散数据发送给数据转换单元,所述数据转换单元将所述非离散数据转换为离散数据,将离散数据发送给运算单元;
步骤507,运算单元根据相应的微指令对离散数据采用逻辑运算实现神经网络运算;
步骤508,在运算单元中完成所述微指令对应的子神经网络的运算,并将各子神经网络的运算结果相加,将神经网络运算得到的最终结果写回存储单元。
需要说明的是,上述步骤中涉及到离散数据的神经网络运算的具体过程可以参照上述装置实施例中运算单元的计算过程,在此不再赘述。
可以理解,此外,上述对各元件和方法的定义并不仅限于实施例中提到的各种具体结构、形状或方式,本领域普通技术人员可对其进行简单地更改或替换,例如:离散数据还可以用二值化数据、三值化数据、2比特数据、3比特数据等形式代替只有两个取值的数据或只有三个取值的数据或2个比特可以表示的数据或3个比特可以表示的数据。计算单元还可以用异或单元、逻辑单元等形式代替,既只有逻辑运算器没有浮点定点运算器单元,严格意义说逻辑运算器的概念包括运算器,本申请只是为了突出对离散数据的专门化处理。
本申请还揭露了一个神经网络运算装置,其包括一个或多个在本申请中提到的计算装置,用于从其他处理装置中获取待运算数据和控制信息,执行指定的神经网络运算,执行结果通过I/O接口传递给外围设备。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上计算装置时,计算装置间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
该神经网络运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
本申请还揭露了一个组合处理装置,其包括上述的神经网络运算装置,通用互联接口,和其他处理装置。神经网络运算装置与其他处理装置进行交互,共同完成用户指定的操作。图9为组合处理装置的示意图。
其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为神经网络运算装置与外部数据和控制的接口,包括数据搬运,完成对神经网络神经网络运算装置的开启、停止等基本控制;其他处理装置也可以和神经网络运算装置协作共同完成运算任务。
通用互联接口,用于在所述神经网络运算装置与其他处理装置间传输数据和控制指令。该神经网络运算装置从其他处理装置中获取所需的输入数据,写入神经网络运算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入神经网络运算装置片上的控制缓存;也可以读取神经网络运算装置的存储模块中的数据并传输给其他处理装置。
可选的,该结构如图10所示,还可以包括存储装置,存储装置分别与所述神经网络运算装置和所述其他处理装置连接。存储装置用于保存在所述神经网络运算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本神经网络运算装置或其他处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
本申请还揭露了一种芯片,其包括了上述神经网络运算装置或组合处理装置。
本申请还揭露了一种芯片封装结构,其包括了上述芯片。
本申请还揭露了一种板卡,其包括了上述芯片封装结构。参阅图11,图11提供了一种板卡,上述板卡除了包括上述芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392;
所述存储器件390与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate 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盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (22)
1.一种计算装置,其特征在于,所述计算装置用于执行神经网络计算,所述计算装置包括:控制单元、数据转换单元以及运算单元,所述运算单元包括逻辑运算器;
所述控制单元,用于获取计算指令,解析所述计算指令得到多个运算指令,并将该多个运算指令发送给所述运算单元;
所述数据转换单元,用于将非离散类型的输入数据转换为离散类型的输入数据,其中,所述输入数据包括神经元数据以及权值数据,所述输入数据的部分或者全部为离散类型的数据,在所述输入数据的部分为离散类型的数据的情况下,所述非离散类型的数据包括浮点数据和/或定点数据;
所述运算单元,用于根据所述控制单元下发的所述运算指令,获取所述离散类型的输入数据,并根据所述离散类型的输入数据以及所述运算指令利用逻辑运算器执行离散数据表示的神经网络运算,得到运算结果。
2.根据权利要求1所述的装置,其特征在于,所述离散类型的数据为采用2的幂次表示的数据;
所述数据转换单元具体用于:
将所述非离散类型的输入数据转换为2的幂次表示的输入数据。
3.根据权利要求1所述的装置,其特征在于,所述运算单元包括:一个主处理电路和多个从处理电路;
所述主处理电路,用于对所述输入数据执行前序处理以及与所述多个从处理电路之间传输数据和运算指令;
所述多个从处理电路,用于根据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将所述多个中间结果传输给所述主处理电路;
所述主处理电路,用于对所述多个中间结果执行后续处理得到所述计算指令的运算结果。
4.根据权利要求3所述的装置,其特征在于,所述运算单元包括:判断数据格式单元;
所述判断数据格式单元,用于判断神经网络中所述输入数据的数据类型,并根据不同数据类型执行对不同数据类型数据指令的调度任务,其中,所述数据类型包括浮点数据、定点数据以及离散数据。
5.根据权利要求4所述的装置,其特征在于,所述判断数据格式单元位于所述主处理电路;或者,所述判断数据格式单元位于所述主处理电路以及所述多个从处理电路中的每个从处理电路中。
6.根据权利要求5所述的装置,其特征在于,所述数据转换单元还用于:将离散类型的数据转换为非离散类型的数据。
7.根据权利要求6所述的装置,其特征在于,所述计算装置还包括:存储单元和直接内存访问单元,所述存储单元包括:寄存器、缓存中任意组合;
所述缓存,用于存储所述输入数据;
所述寄存器,用于存储神经网络运算的操作码以及神经网络运算的操作数,所述操作码用于指示所述神经网络运算指令的功能,所述操作数用于指示所述神经网络运算指令的数据信息,所述数据信息用于指示所述输入数据的存储地址;
所述缓存包括高速暂存存储器;
所述直接内存访问单元用于从存储单元读取数据或向所述存储单元写入数据。
8.根据权利要求7所述的装置,其特征在于,所述控制单元包括:指令缓存单元、指令处理单元、存储队列单元以及依赖关系处理单元;
所述指令缓存单元,用于存储所述神经网络运算关联的计算指令;
所述指令处理单元,用于从所述指令缓存单元获取所述计算指令,并对所述计算指令解析得到多个运算指令;
所述存储队列单元,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令;
所述依赖关系处理单元,用于确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,将所述第一运算指令缓存在所述指令队列中,在所述第零运算指令执行完毕后,从所述指令队列中提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需数据的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需数据的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,确定所述第一运算指令与所述第零运算指令不具有关联关系。
9.根据权利要求8所述的装置,其特征在于,所述指令处理单元包括:取指模块、译码模块以及指令队列;
所述取指模块,用于从所述指令缓存单元中获取所述计算指令;
所述译码模块,用于对获取的所述计算指令进行译码,得到多个运算指令;
所述指令队列,用于对所述运算指令进行顺序存储。
10.一种组合处理装置,其特征在于,所述组合处理装置包括一个或多个如权利要求1-9任一项所述的计算装置、通用互联接口、存储装置和其他处理装置,所述计算装置用于从其他处理装置中获取待运算输入数据和控制信息,并执行指定的神经网络运算,将执行结果通过通用互联接口传递给其他处理装置;
当所述组合处理装置包含多个所述计算装置时,所述多个所述计算装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述计算装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算;多个所述计算装置共享同一控制系统或拥有各自的控制系统;多个所述计算装置共享内存或者拥有各自的内存;多个所述计算装置的互联方式是任意互联拓扑;
存储装置,所述存储装置分别与所述多个所述计算装置和所述其他处理装置连接,用于保存所述组合处理装置和所述其他处理装置的数据。
11.一种神经网络芯片,其特征在于,所述神经网络芯片包括如权利要求10所述的组合处理装置。
12.一种电子设备,其特征在于,所述电子设备包括如所述权利要求11所述的芯片。
13.一种板卡,其特征在于,所述板卡包括:存储器件、接口装置和控制器件以及如权利要求11所述的神经网络芯片;
其中,所述神经网络芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述芯片与外部设备之间的数据传输;
所述控制器件,用于对所述芯片的状态进行监控。
14.一种执行神经网络模型的计算方法,其特征在于,所述计算方法应用于计算装置,所述计算装置用于执行神经网络计算;所述计算装置包括:控制单元、数据转换单元以及运算单元,所述运算单元包括逻辑运算器;
所述控制单元获取计算指令,解析所述计算指令得到多个运算指令,并将该多个运算指令发送给所述运算单元;
所述数据转换单元将非离散类型的输入数据转换为离散类型的输入数据,其中,所述输入数据包括神经元数据以及权值数据,所述输入数据的部分或者全部为离散类型的数据,在所述输入数据的部分为离散类型的数据的情况下,所述非离散类型的数据包括浮点数据和/或定点数据;
所述运算单元根据所述控制单元下发的所述运算指令,获取所述离散类型的输入数据,并根据所述离散类型的输入数据以及所述运算指令利用逻辑运算器执行离散数据表示的神经网络运算,得到运算结果。
15.根据权利要求14所述的方法,其特征在于,所述离散类型的数据为采用2的幂次表示的数据;
所述数据转换单元将非离散类型的输入数据转换为离散类型的输入数据,包括:
所述数据转换单元将所述非离散类型的输入数据转换为2的幂次表示的输入数据。
16.根据权利要求14所述的方法,其特征在于,所述运算单元包括:一个主处理电路和多个从处理电路;
所述主处理电路对所述输入数据执行前序处理以及与所述多个从处理电路之间传输数据和运算指令;
所述多个从处理电路根据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将所述多个中间结果传输给所述主处理电路;
所述主处理电路对所述多个中间结果执行后续处理得到所述计算指令的运算结果。
17.根据权利要求16所述的方法,其特征在于,所述运算单元包括:判断数据格式单元;
所述判断数据格式单元判断神经网络中所述输入数据的数据类型,并根据不同数据类型执行对不同数据类型数据指令的调度任务,其中,所述数据类型包括浮点数据、定点数据以及离散数据。
18.根据权利要求17所述的方法,其特征在在于,所述判断数据格式单元位于所述主处理电路,或者,所述判断数据格式单元位于所述主处理电路以及所述多个从处理电路中的每个从处理电路中。
19.根据权利要求18所述的方法,其特征在于,所述数据转换单元还用于:将离散类型的数据转换为非离散类型的数据。
20.根据权利要求19所述的方法,其特征在于,所述计算装置还包括:存储单元和直接内存访问单元,所述存储单元包括:寄存器、缓存中任意组合;
所述缓存存储所述输入数据;
所述寄存器存储神经网络运算的操作码以及神经网络运算的操作数,所述操作码用于指示所述神经网络运算指令的功能,所述操作数用于指示所述神经网络运算指令的数据信息,所述数据信息用于指示所述的输入数据的存储地址;
所述缓存包括高速暂存存储器;
所述直接内存访问单元用于从存储单元读取数据或向所述存储单元写入数据。
21.根据权利要求20所述的方法,其特征在于,所述控制单元包括:指令缓存单元、指令处理单元、存储队列单元以及依赖关系处理单元;
所述指令缓存单元存储所述神经网络运算关联的计算指令;
所述指令处理单元从所述指令缓存单元获取所述计算指令,并对所述计算指令解析得到多个运算指令;
所述存储队列单元存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令;
所述依赖关系处理单元确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,将所述第一运算指令缓存在所述指令队列中,在所述第零运算指令执行完毕后,从所述指令队列中提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需数据的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需数据的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,确定所述第一运算指令与所述第零运算指令不具有关联关系。
22.根据权利要求21所述的方法,其特征在于,所述指令处理单元包括:取指模块、译码模块以及指令队列;
所述取指模块从所述指令缓存单元中获取所述计算指令;
所述译码模块对获取的所述计算指令进行译码,得到多个运算指令;
所述指令队列对所述运算指令进行顺序存储。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811194270.5A CN111047022B (zh) | 2018-10-12 | 2018-10-12 | 一种计算装置及相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811194270.5A CN111047022B (zh) | 2018-10-12 | 2018-10-12 | 一种计算装置及相关产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111047022A true CN111047022A (zh) | 2020-04-21 |
CN111047022B CN111047022B (zh) | 2023-11-24 |
Family
ID=70230193
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811194270.5A Active CN111047022B (zh) | 2018-10-12 | 2018-10-12 | 一种计算装置及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111047022B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111930671A (zh) * | 2020-08-10 | 2020-11-13 | 中国科学院计算技术研究所 | 异构智能处理器、处理方法及电子设备 |
CN111930674A (zh) * | 2020-08-10 | 2020-11-13 | 中国科学院计算技术研究所 | 乘累加运算装置及方法、异构智能处理器及电子设备 |
WO2021223639A1 (zh) * | 2020-05-08 | 2021-11-11 | 安徽寒武纪信息科技有限公司 | 数据处理装置以及相关产品 |
CN113687816A (zh) * | 2020-05-19 | 2021-11-23 | 杭州海康威视数字技术股份有限公司 | 算子的可执行代码的生成方法及装置 |
WO2022222756A1 (zh) * | 2021-04-22 | 2022-10-27 | 华为技术有限公司 | 芯片、处理数据的方法和计算机设备 |
CN117389512A (zh) * | 2023-12-06 | 2024-01-12 | 摩尔线程智能科技(北京)有限责任公司 | 一种算术逻辑单元alu系统、电子设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107301453A (zh) * | 2016-04-15 | 2017-10-27 | 北京中科寒武纪科技有限公司 | 支持离散数据表示的人工神经网络正向运算装置和方法 |
CN107451658A (zh) * | 2017-07-24 | 2017-12-08 | 杭州菲数科技有限公司 | 浮点运算定点化方法及系统 |
CN107833176A (zh) * | 2017-10-30 | 2018-03-23 | 上海寒武纪信息科技有限公司 | 一种信息处理方法及相关产品 |
CN108238094A (zh) * | 2016-12-27 | 2018-07-03 | 株式会社捷太格特 | 转向操纵控制装置 |
-
2018
- 2018-10-12 CN CN201811194270.5A patent/CN111047022B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107301453A (zh) * | 2016-04-15 | 2017-10-27 | 北京中科寒武纪科技有限公司 | 支持离散数据表示的人工神经网络正向运算装置和方法 |
CN108238094A (zh) * | 2016-12-27 | 2018-07-03 | 株式会社捷太格特 | 转向操纵控制装置 |
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 | 上海寒武纪信息科技有限公司 | 一种信息处理方法及相关产品 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021223639A1 (zh) * | 2020-05-08 | 2021-11-11 | 安徽寒武纪信息科技有限公司 | 数据处理装置以及相关产品 |
CN113687816A (zh) * | 2020-05-19 | 2021-11-23 | 杭州海康威视数字技术股份有限公司 | 算子的可执行代码的生成方法及装置 |
CN113687816B (zh) * | 2020-05-19 | 2023-09-01 | 杭州海康威视数字技术股份有限公司 | 算子的可执行代码的生成方法及装置 |
CN111930671A (zh) * | 2020-08-10 | 2020-11-13 | 中国科学院计算技术研究所 | 异构智能处理器、处理方法及电子设备 |
CN111930674A (zh) * | 2020-08-10 | 2020-11-13 | 中国科学院计算技术研究所 | 乘累加运算装置及方法、异构智能处理器及电子设备 |
CN111930674B (zh) * | 2020-08-10 | 2024-03-05 | 中国科学院计算技术研究所 | 乘累加运算装置及方法、异构智能处理器及电子设备 |
WO2022222756A1 (zh) * | 2021-04-22 | 2022-10-27 | 华为技术有限公司 | 芯片、处理数据的方法和计算机设备 |
CN117389512A (zh) * | 2023-12-06 | 2024-01-12 | 摩尔线程智能科技(北京)有限责任公司 | 一种算术逻辑单元alu系统、电子设备和存储介质 |
CN117389512B (zh) * | 2023-12-06 | 2024-02-23 | 摩尔线程智能科技(北京)有限责任公司 | 一种算术逻辑单元alu系统、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111047022B (zh) | 2023-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109543832B (zh) | 一种计算装置及板卡 | |
CN109522052B (zh) | 一种计算装置及板卡 | |
CN109740739B (zh) | 神经网络计算装置、神经网络计算方法及相关产品 | |
CN109740754B (zh) | 神经网络计算装置、神经网络计算方法及相关产品 | |
CN110163363B (zh) | 一种计算装置及方法 | |
CN111047022A (zh) | 一种计算装置及相关产品 | |
TWI795519B (zh) | 計算裝置、機器學習運算裝置、組合處理裝置、神經網絡芯片、電子設備、板卡及執行機器學習計算的方法 | |
CN111045728B (zh) | 一种计算装置及相关产品 | |
CN110059797B (zh) | 一种计算装置及相关产品 | |
CN109711540B (zh) | 一种计算装置及板卡 | |
CN109753319B (zh) | 一种释放动态链接库的装置及相关产品 | |
CN111488963A (zh) | 神经网络计算装置和方法 | |
CN111488976A (zh) | 神经网络计算装置、神经网络计算方法及相关产品 | |
CN111930681A (zh) | 一种计算装置及相关产品 | |
CN111047021B (zh) | 一种计算装置及相关产品 | |
CN110059809B (zh) | 一种计算装置及相关产品 | |
CN111368987B (zh) | 一种神经网络计算装置和方法 | |
CN111368990B (zh) | 一种神经网络计算装置和方法 | |
CN111368986B (zh) | 一种神经网络计算装置和方法 | |
CN111367567B (zh) | 一种神经网络计算装置和方法 | |
CN111368967B (zh) | 一种神经网络计算装置和方法 | |
CN111047024A (zh) | 一种计算装置及相关产品 | |
CN111382848A (zh) | 一种计算装置及相关产品 | |
CN111078625B (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 |