CN109284130B - 神经网络运算装置及方法 - Google Patents
神经网络运算装置及方法 Download PDFInfo
- Publication number
- CN109284130B CN109284130B CN201710927307.XA CN201710927307A CN109284130B CN 109284130 B CN109284130 B CN 109284130B CN 201710927307 A CN201710927307 A CN 201710927307A CN 109284130 B CN109284130 B CN 109284130B
- Authority
- CN
- China
- Prior art keywords
- data
- matrix
- power
- instruction
- neuron
- 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 title claims abstract description 141
- 238000000034 method Methods 0.000 title claims description 54
- 210000002569 neuron Anatomy 0.000 claims abstract description 216
- 238000004364 calculation method Methods 0.000 claims abstract description 79
- 238000006243 chemical reaction Methods 0.000 claims abstract description 54
- 239000011159 matrix material Substances 0.000 claims description 364
- 230000015654 memory Effects 0.000 claims description 139
- 239000013598 vector Substances 0.000 claims description 99
- 210000002364 input neuron Anatomy 0.000 claims description 27
- 210000004205 output neuron Anatomy 0.000 claims description 26
- 230000003993 interaction Effects 0.000 claims description 8
- 239000000126 substance Substances 0.000 claims description 8
- 239000010410 layer Substances 0.000 description 43
- 238000010586 diagram Methods 0.000 description 26
- 230000008569 process Effects 0.000 description 7
- 238000013500 data storage Methods 0.000 description 6
- 230000000295 complement effect Effects 0.000 description 5
- 238000013527 convolutional neural network Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000002356 single layer Substances 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000011410 subtraction method Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- 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/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30079—Pipeline control instructions, e.g. multicycle NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N7/00—Computing arrangements based on specific mathematical models
- G06N7/01—Probabilistic graphical models, e.g. probabilistic networks
-
- 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/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- 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/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Abstract
本披露提供了一种神经网络运算装置,包括第一幂次转换单元,用于将神经网络输入数据中的非幂次数据转换为幂次数据;运算单元,用于接收神经网络运算的数据和指令并根据运算指令对其接收的神经元数据及权值数据执行神经网络运算;其中,所述运算单元接收的所述数据包括经第一幂次转换单元转换的幂次数据。本披露提供的技术方案具有计算速度快,效率高的优点。
Description
技术领域
本披露涉及一种神经网络运算装置及方法。
背景技术
数据处理是大部分算法需要经过的步骤或阶段,在计算机引入数据处理领域后,越来越多的数据处理通过计算机来实现,现有的算法中有计算设备在进行神经网络的数据计算时速度慢,效率低。
披露内容
本披露实施例提供了一种神经网络运算装置及方法,可提升计算装置的处理速度,提高效率。
第一方面,提供一种神经网络运算装置,包括:第一幂次转换单元,用于将神经网络输入数据中的非幂次数据转换为幂次数据;运算单元,用于接收神经网络运算的数据和指令并根据运算指令对其接收的神经元数据及权值数据执行神经网络运算;其中,所述运算单元接收的所述数据包括经第一幂次转换单元转换的幂次数据;所述指令为矩阵运算指令,包括:操作码和操作域;所述操作码,用于识别不同的矩阵运算指令;所述操作域,用于指示所述矩阵运算指令的数据信息,所述数据信息为指定大小的立即数或指定大小的数据对应的寄存器号。
可选的,还包括:存储单元,用于存储数据和指令;其中,该存储单元与所述第一幂次转换单元连接以接收所述幂次数据。
可选的,还包括:控制单元及输出神经元缓存单元;其中
所述控制单元,与所述存储单元连接,用于控制数据和指令的交互,其接收该存储单元发送的数据和指令,并将指令译码成运算指令;
所述运算单元,与所述控制单元连接,接收该控制单元发送的数据和运算指令,并根据运算指令对其接收的神经元数据及权值数据执行神经网络运算;以及
所述输出神经元缓存单元,与所述运算单元连接,用于接收运算单元输出的神经元数据并发送至所述控制单元作为下一层神经网络运算的输入数据。
可选的,所述控制单元,包括:
数据控制模块,与所述存储单元连接,用于实现存储单元和各缓存模块之间的数据和指令交互;
指令缓存模块,与所述数据控制模块连接,用于接收该数据控制模块发送的指令;
译码模块,与所述指令缓存模块连接,用于从指令缓存模块中读取指令,并将其译码成运算指令;
输入神经元缓存模块,与所述数据控制模块连接,用于从该数据控制模块获取相应的输入神经元数据;
权值缓存模块,与所述数据控制模块连接,用于从数据控制模块获取相应的权值数据;其中,
所述运算单元,分别与所述译码模块、输入神经元缓存模块及权值缓存模块连接,接收各运算指令、神经元数据及权值数据,根据运算指令对其接收的神经元数据和权值数据执行相应的神经网络运算。
可选的,所述第一幂次转换单元用于将神经网络输入数据中的非幂次权值数据转换为幂次权值数据。
可选的,还包括:第二幂次转换单元;其中,
所述第一幂次转换单元用于将神经网络输入数据中的非幂次神经元数据及非幂次权值数据分别转换为幂次神经元数据及幂次权值数据,并发送至所述存储单元;
所述第二幂次转换单元与所述输出神经元缓存单元连接,用于将其接收的神经元数据转换为幂次神经元数据并发送至所述控制单元作为下一层神经网络运算的输入数据。
可选的,若神经网络输入数据为幂次数据则直接存入神经网络运算装置。
可选的,幂次数据包括幂次神经元数据、幂次权值数据;其中,
所述幂次神经元数据表示神经元数据的数值采用其幂指数值形式表示,其中,所述幂次神经元数据包括符号位和幂次位,符号位采用一位或多位比特位表示神经元数据的符号,幂次位采用m位比特位表示神经元数据的幂次位数据,m为大于1的正整数;
所述幂次权值数据表示权值数据的数值采用其幂指数值形式表示,其中,所述幂次权值数据包括符号位和幂次位,符号位采用一位或多位比特位表示权值数据的符号,幂次位采用m位比特位表示权值数据的幂次位数据,m为大于1的正整数。
可选的,该神经网络运算装置的存储单元预存有编码表,用于提供幂次神经元数据及幂次权值数据的每个幂次位数据对应的指数数值。
可选的,所述编码表设置一个或者多个幂次位数据为置零幂次位数据,其对应的幂次神经元数据及幂次权值数据为0。
可选的,所述矩阵运算指令为:矩阵乘向量指令MMV、向量乘矩阵指令VMM、矩阵乘标量指令VMS、张量运算指令TENS、矩阵加法指令MA、矩阵减法指令MS、矩阵检索指令MR、矩阵加载指令ML或矩阵搬运指令MMOVE中的一个或任意组合;
所述操作域存储所述MMV的矩阵数据和向量数据的立即数或寄存器号;所述MMV,用于从存储器的指定地址取出指定大小的矩阵数据和向量数据,并将该矩阵数据和向量数据执行矩阵乘向量计算,将该计算结果写回至所述存储器;
或所述操作域存储所述MMV的矩阵数据和向量数据;所述VMM,用于从存储器的指定地址取出指定长度的向量数据和矩阵数据,进行向量乘矩阵的乘法运算,将该计算结果写回至存储器;
或所述操作域存储所述VMS的矩阵数据;所述VMS,用于从存储器的指定地址取出指定长度的矩阵数据,从标量寄存器堆的指定地址中取出标量数据,进行标量乘矩阵数据的乘法运算,将计算结果写回存储器;
或所述操作域存储所述TENS的两块矩阵数据,所述TENS,用于从存储器的两个指定地址分别取出指定大小的两块矩阵数据,对两矩阵数据进行张量运算,并将计算结果写回至存储器;
或所述操作域存储两块矩阵数据;所述MA,用于从存储器的两个指定地址取出分别取出指定大小的两块矩阵数据,对两矩阵进行加法运算,并将计算结果写回至存储器;
或所述操作域存储两块矩阵数据;所述MS,用于从存储器的两个指定地址取出分别取出指定大小的两块矩阵数据,对两矩阵进行减法运算,并将计算结果写回至存储器;
或所述操作域包括:向量数据以及矩阵数据;所述MR,用于从存储器的指定地址取出指定大小的向量数据以及指定大小的矩阵数据,所述向量数据是索引向量,输出的向量中的第i个元素是以索引向量的第i个元素作为索引,在矩阵数据的第i列中找到的数,将所述输出向量写回至存储器;
或所述ML,用于从指定外部源地址载入指定大小的数据至存储器的指定地址;
或所述MS,用于将存储器的指定地址的指定大小的矩阵数据存至外部目的地址;
所述MMOVE,用于将存储器的指定地址的指定大小的矩阵数据存至存储器的另一指定地址。
第二方面,提供一种神经网络运算方法,所述方法包括:
获取指令、幂次神经元数据及幂次权值数据;
根据运算指令对幂次神经元数据及幂次权值数据进行神经网络运算;
所述指令为矩阵运算指令,包括:操作码和操作域;
所述操作码,用于识别不同的矩阵运算指令;
所述操作域,用于指示所述矩阵运算指令的数据信息,所述数据信息为指定大小的立即数或指定大小的数据对应的寄存器号。
可选的,所述方法还包括:
将神经网络运算后的神经元数据输出并作为下一层神经网络运算的输入数据;重复神经网络运算步骤直到神经网络最后一层运算结束。
可选的,所述获取指令、权值数据及神经元数据,包括:
将指令、神经元数据及权值数据输入存储单元;
数据控制模块接收该存储单元发送的指令、神经元数据及权值数据;
指令缓存模块、输入神经元缓存模块及权值缓存模块分别接收该数据控制模块发送的指令、神经元数据及权值数据;其中,若输入存储单元的权值数据为非幂次权值数据则经第一幂次转换单元转换为幂次权值数据输入所述存储单元;若输入存储单元的权值数据为幂次权值数据则直接输入所述存储单元;输出神经元缓存单元接收所述计算单元发送的神经网络运算后得到的神经元数据并发送至所述数据控制模块作为下一层神经网络运算的输入数据。
可选的,所述获取指令、权值数据及神经元数据,包括:
将指令、神经元数据及权值数据输入存储单元;
数据控制模块接收该存储单元发送的指令、神经元数据及权值数据;
指令缓存模块、输入神经元缓存模块及权值缓存模块分别接收该数据控制模块发送的指令、神经元数据及权值数据;其中,若输入存储单元的神经元数据及权值数据为非幂次神经元数据及非幂次权值数据则经第一幂次转换单元转换为幂次神经元数据及幂次权值数据输入所述存储单元;若输入存储单元的神经元数据及权值数据为幂次神经元数据及幂次权值数据则直接输入所述存储单元;出神经元缓存单元接收所述计算单元发送的神经网络运算后得到的神经元数据;第二幂次转换单元接收输出神经元缓存单元发送的神经元数据将其转换为幂次神经元数据,并发送至所述数据控制模块作为下一层神经网络运算的输入数据。
可选的,所述方法包括:
译码模块从指令缓存模块中读取指令,并将其译码成各运算指令;
运算单元分别接收所述译码模块、输入神经元缓存模块及权值缓存模块发送的运算指令、神经元数据以及权值数据,并根据运算指令对神经元数据和权值数据进行神经网络运算。
可选的,所述矩阵运算指令为:矩阵乘向量指令MMV、向量乘矩阵指令VMM、矩阵乘标量指令VMS、张量运算指令TENS、矩阵加法指令MA、矩阵减法指令MS、矩阵检索指令MR、矩阵加载指令ML或矩阵搬运指令MMOVE中的一个或任意组合;
所述操作域存储所述MMV的矩阵数据和向量数据的立即数或寄存器号;所述MMV,用于从存储器的指定地址取出指定大小的矩阵数据和向量数据,并将该矩阵数据和向量数据执行矩阵乘向量计算,将该计算结果写回至所述存储器;
或所述操作域存储所述MMV的矩阵数据和向量数据;所述VMM,用于从存储器的指定地址取出指定长度的向量数据和矩阵数据,进行向量乘矩阵的乘法运算,将该计算结果写回至存储器;
或所述操作域存储所述VMS的矩阵数据;所述VMS,用于从存储器的指定地址取出指定长度的矩阵数据,从标量寄存器堆的指定地址中取出标量数据,进行标量乘矩阵数据的乘法运算,将计算结果写回存储器;
或所述操作域存储所述TENS的两块矩阵数据,所述TENS,用于从存储器的两个指定地址分别取出指定大小的两块矩阵数据,对两矩阵数据进行张量运算,并将计算结果写回至存储器;
或所述操作域存储两块矩阵数据;所述MA,用于从存储器的两个指定地址取出分别取出指定大小的两块矩阵数据,对两矩阵进行加法运算,并将计算结果写回至存储器;
或所述操作域存储两块矩阵数据;所述MS,用于从存储器的两个指定地址取出分别取出指定大小的两块矩阵数据,对两矩阵进行减法运算,并将计算结果写回至存储器;
或所述操作域包括:向量数据以及矩阵数据;所述MR,用于从存储器的指定地址取出指定大小的向量数据以及指定大小的矩阵数据,所述向量数据是索引向量,输出的向量中的第i个元素是以索引向量的第i个元素作为索引,在矩阵数据的第i列中找到的数,将所述输出向量写回至存储器;
或所述ML,用于从指定外部源地址载入指定大小的数据至存储器的指定地址;
或所述MS,用于将存储器的指定地址的指定大小的矩阵数据存至外部目的地址;
所述MMOVE,用于将存储器的指定地址的指定大小的矩阵数据存至存储器的另一指定地址。
可以看出,通过本披露实施例,计算装置设置有寄存器单元了存储介质,其分别存储标量数据以及矩阵数据,并且本披露为两种存储器分配了单位读取方式以及批量读取方式,通过对矩阵数据的特点分配匹配其特征的数据读取方式,能够很好的利用带宽,避免因为带宽的瓶颈对矩阵计算速度的影响,另外,对于寄存器单元来说,由于其存储的为标量数据,设置了标量数据的读取方式,提高了带宽的利用率,所以本披露提供的技术方案能够很好的利用带宽,避免带宽对计算速度的影响,所以其具有计算速度快,效率高的优点。
附图说明
图1A是一种计算装置结构示意图。
图1B是另一种计算装置结构示意图。
图2是本披露实施例提供的计算装置的结构示意图。
图2A是本披露实施例提供的矩阵计算单元的结构示意图。
图2B是本披露实施例提供的流水级的结构示意图。
图3是本披露实施例披露的一种矩阵计算方法的流程示意图。
图4是本披露实施例提供的指令集的格式示意图。
图5是本披露实施例提供的另一种计算装置的结构示意图。
图6是本披露实施例提供的计算装置执行矩阵乘向量指令的流程图。
图6A是本披露实施例提供的计算装置的另一种结构示意图。
图7为依据本公开的神经网络运算装置的结构示意图。
图8为依据本公开的神经网络运算装置的结构示意图。
图9为依据本公开的神经网络运算方法流程图。
图9.1为依据本公开的编码表的示意图。
图9.2为依据本公开的编码表的另一示意图。
图9.3为依据本公开的编码表的另一示意图。
图9.4为依据本公开的编码表的另一示意图。
图9.5为依据本公开的幂次数据的表示方法示意图。
图9.6为依据本公开的神经元与幂次权值的乘法操作示意图。
图9.7为依据本公开的神经元与幂次权值的乘法操作示意图。
图10为依据本公开的神经网络运算方法流程图。
图10.1为依据本公开的编码表的示意图。
图10.2为依据本公开的编码表的另一示意图。
图10.3为依据本公开的编码表的另一示意图。
图10.4为依据本公开的编码表的另一示意图。
图10.5为依据本公开的幂次数据的表示方法示意图。
图10.6为依据本公开的幂次神经元与幂次权值的乘法操作示意图。
具体实施方式
本披露提供一种矩阵计算装置,包括存储单元、寄存器单元和矩阵运算单元,存储单元中存储有矩阵,寄存器单元中存储有矩阵存储的地址矩阵运算单元根据矩阵运算指令在寄存器单元中获取矩阵地址,然后,根据该矩阵地址在存储单元中获取相应的矩阵,接着,根据获取的矩阵进行矩阵运算,得到矩阵运算结果。本披露将参与计算的矩阵数据暂存在高速暂存存储器上,使得矩阵运算过程中可以更加灵活有效地支持不同宽度的数据,提升包含大量矩阵计算任务的执行性能。
需要说明的是,本披露具体实施方式中的矩阵具体可以为m*n矩阵、1*n矩阵或m*1矩阵,其中m、n为大于等于2的整数。当矩阵为1*n矩阵或m*1矩阵时,也可以称为向量,下述矩阵均可以为上述三种类型矩阵中的任意一种,下面不在赘述。以人工神经网络算法为例,多种神经网络算法中都含有大量的矩阵运算。在神经网络中,输出神经元的运算表达式为y=f(wx+b),其中w是第一矩阵,x是第二矩阵、b是第三矩阵,计算输出矩阵y的过程为矩阵w与矩阵x相乘,加上矩阵b。因此,矩阵运算成为目前各种计算装置在设计时需要考虑的问题,现有的矩阵的计算速度慢,无法满足用户对计算装置的要求,效率低。
参阅图1A,图1A为一种计算装置,在如图1A所示的矩阵的计算装置中,其包含多个通用处理器101(CPU),每个CPU均包含自身的内存,其处理的方法可以为,多个CPU并行处理矩阵的计算,此方案虽在在矩阵的计算中采用并行处理的方式,但是其并不能有效的提高效率,因为对于矩阵运算中,第二矩阵运算的结果可能需要使用第一矩阵运算的结果,具体的,第一矩阵运算为f(1)=A+B,第二矩阵运算为:f(2)=f(1)+C,对于第二矩阵运算来说,其需要提取第一矩阵运算的结果f(1)才能够进行实际的矩阵计算处理,此种情况在神经网络计算中尤为突出,由于多个CPU并行处理矩阵运算,那么在矩阵计算的分配时,很有可能CPU1执行第一矩阵运算,CPU2执行第二矩阵运算,那么对于CPU2来说,其需要从CPU1提取第一矩阵运算的结果f(1),所以对于多CPU并行处理矩阵来说,多个CPU之间的通讯成为矩阵运算的瓶颈,影响矩阵计算的速度。
参阅图1B,图1B为另一种计算装置,在如图1B所示的计算装置中,其包含有图形处理器(GPU)102,通过GPU102来执行矩阵的运算,对于GPU来说,其本身也包含内存1021,GPU102在处理矩阵运算时,GPU102需要从内存1021中提取矩阵运算所需的矩阵,矩阵由于其数据量大,单个矩阵所占用的存储空间比标量要大很多,对于GPU102来说,虽然其运算能够非常强,但是GPU102的内存的容量不够,无法存储大量的矩阵,为了解决这个问题,图1B配置了片外数据库103,GPU102可以从片外数据库103中读取矩阵,具体的读取方式为,GPU102从片外数据库103中提取待计算的矩阵,将该矩阵存储在内存1021中,在执行矩阵运算时,进行矩阵指令的译码处理,然后从内存1021中提取该矩阵进行计算。此技术方案在执行矩阵计算中,GPU102进行矩阵指令的译码会占用GPU很大部分的计算能力,,影响矩阵的计算速度,效率低。
本披露中提到的输入神经元和输出神经元并非是指整个神经网络的输入层中神经元和输出层中神经元,而是对于网络中任意相邻的两层,处于网络前馈运算下层中的神经元即为输入神经元,处于网络前馈运算上层中的神经元即为输出神经元。以卷积神经网络为例,设一个卷积神经网络有L层,K=1,2,...,L-1,对于第K层和第K+1层来说,我们将第K层称为输入层,其中的神经元为所述输入神经元,第K+1层称为输出层,其中的神经元为所述输出神经元。即除最顶层外,每一层都可以作为输入层,其下一层为对应的输出层。
本披露具体实施方式提供一种矩阵计算方法,该矩阵计算方法在如图2所示的计算装置内完成,如图2所示,该计算装置包括:
存储介质201、用于存储矩阵。优选的该存储介质可以是存储器(优选的高速暂存存储器),能够支持不同长度的矩阵数据;本披露将必要的计算数据暂存在存储器(优选的高速暂存存储器)上(Scratchpad Memory),使本运算装置在进行矩阵运算过程中可以更加灵活有效地支持不同长度的数据。上述存储介质还可以为片外数据库、数据库或其他的能够存储的介质等等。
标量数据存储单元202(例如标量寄存器单元),用于存储标量数据,其中,该标量数据包括但不限于:矩阵数据在存储介质201的地址以及矩阵与标量运算时的标量。在一种实施方式中,标量寄存器单元可以是标量寄存器堆,提供运算过程中所需的标量寄存器,标量寄存器不只存放矩阵地址,还存放有标量数据。当涉及到矩阵与标量的运算时,运算单元不仅要从寄存器单元中获取矩阵地址,还要从寄存器单元中获取相应的标量。
运算单元203,用于获取并执行第一运算指令。如图2A所示,该运算单元包括多个运算器,该运算器包括但不限于:矩阵加法运算器231、矩阵乘法运算器232、大小比较运算器233、非线性运算运算器234和矩阵标量乘法运算器235。
该方法如图3所示,包括如下步骤:
步骤S301、运算单元203获取第一运算指令,所述第一运算指令包括:执行该指令所需的矩阵读取指示。
在步骤S301中,上述执行该指令所需的矩阵读取指示具体可以为多种,例如,在本披露一个可选的技术方案中,上述执行该指令所需的矩阵读取指示可以为所需矩阵的存储地址。又如,在本披露另一个可选的技术方案中,上述执行该指令所需的矩阵读取指示可以为所需矩阵的标识,该标识的表现形式可以为多种,例如,矩阵的名称,又如,矩阵的识别号,再如该矩阵在寄存器单元的寄存器号或地址,标识还可以包括矩阵的大小。
下面通过一个实际的例子来说明上述第一运算指令包含的执行该指令所需的矩阵读取指示,这里假设该矩阵运算公式为f(x)=A+B,其中,A、B均为矩阵。那么在第一运算指令中除了携带该矩阵运算公式外,还可以携带该矩阵运算公式所需矩阵的存储地址,具体的,例如A的存储地址为0000-0FFF,B的存储地址为1000-1FFF。又如,可以携带A以及B的标识,例如A的标识为0101,B的标识为1010。
步骤S302、运算单元203依据该矩阵读取指示向所述存储介质201发送读取命令。
上述步骤S302的实现方法具体可以为:
如该矩阵读取指示可以为所需矩阵的存储地址,运算单元203向该存储介质201发送该读取该存储地址的读取命令并采用批量读取方式获取对应的矩阵。
又如该矩阵读取指示可以为所需矩阵的标识时,运算单元203依据该标识从标量数据存储单元处采用单个读取方式读取该标识对应的存储地址,然后运算单元203向该存储介质201发送该读取该存储地址的读取命令并采用批量读取方式获取对应的矩阵。
上述单个读取方式具体可以为,每次读取均为单个的数据,例如1bit或者多bit,1字节,4字节,8字节数据。此时设置单个读取方式的原因为,对于标量数据来说,其占用的容量非常小,如果采用批量数据读取方式,那么读取的数据量容易大于所需的数据的容量,这样会导致带宽的浪费,所以对于标量的数据这里采用单个读取方式来读取以减少带宽的浪费。
步骤S303、运算单元203采用批量读取方式读取该指示对应的矩阵,对该矩阵执行所述第一运算指令。
上述步骤S303中批量读取方式具体可以为,每次读取均为多个的数据,,即无论其所需的数据量是多少,其每次读取的均为多个的数据,此批量读取的数据方式非常适合大数据的读取,对于矩阵来说,由于其所占用的容量大,如果采用单个读取方式,其读取的速度会非常慢,所以这里采用批量读取方式来获取多个的数据从而快速读取矩阵数据,避免因为读取矩阵数据过慢影响矩阵计算速度的问题。
本披露提供的技术方案的计算装置设置有标量数据存储单元和存储介质,其分别存储标量数据以及矩阵数据,并且本披露为两种存储器分配了单位读取方式以及批量读取方式,通过对矩阵数据的特点分配匹配其特征的数据读取方式,能够很好的利用带宽,避免因为带宽的瓶颈对矩阵计算速度的影响,另外,对于寄存器单元来说,由于其存储的为标量数据,设置了标量数据的读取方式,提高了带宽的利用率,所以本披露提供的技术方案能够很好的利用带宽,避免带宽对计算速度的影响,所以其具有计算速度快,效率高的优点。
可选的,上述对该矩阵执行所述第一运算指令具体可以为:
对该矩阵执行第一流水级的计算得到第一结果,将第一结果输入到第二流水级执行第二流水级的计算得到第二结果,将第二结果输入到第三流水级执行第三流水级计算得到第三结果,将第三结果存储至存储介质201。上述流水级的操作流程图如图2B所示。
上述第一流水级包括但不限于:矩阵加法计算器、矩阵乘法计算器等等。
上述第二流水级包括但不限于:大小比较计算器等等。
上述第三流水级包括但不限于:非线性运算器、矩阵标量乘法器等等。
将矩阵分三个流水级运算主要是为了提高运算的速度,对于矩阵的计算来说,例如采用如图1A所示的通用处理器在计算时,其运算的步骤具体可以为,处理器对矩阵进行计算得到第一结果,然后将第一结果存储在内存中,处理器从内存读取第一结果执行第二次计算得到第二结果,然后将第二结果存储在内存中,处理器从内从读取第二结果执行第三次计算得到第三结果,然后将第三结果存储在内存中。从上述计算的步骤可以看出,在通用处理器进行矩阵计算时,其并没有分流水级进行计算,那么每次计算完毕后均需要将计算完的数据进行保存,下次计算时需要再次读取,所以此方案需要重复存储读取多次数据,对于本披露的技术方案来说,第一流水级计算的第一结果直接进入第二流水级进行计算,第二流水级计算的第二结果直接进入到第三流水级进行计算,第一流水级与第二流水级计算的第一结果和第二结果无需存储,首先其减少了内存的占用空间,其次,其避免了结果的多次存储以及读取,提高了带宽的利用率,进一步提高了计算效率。
在本披露另一实施例中,可以自由组合各流水部件或者采取一级流水级。例如将第二个流水级和第三个流水级合并,或者将第一和第二以及第三个流水线都合并或者各个流水级负责不同的运算可以排列组合。例如,第一级流水负责比较运算,部分乘法运算,第二级流水负责非线性运算和矩阵标量乘法等组合。
可选的,上述计算装置还可以包括:缓存单元204,用于缓存第一运算指令。指令在执行过程中,同时也被缓存在指令缓存单元中,当一条指令执行完之后,如果该指令同时也是指令缓存单元中未被提交指令中最早的一条指令,该指令将背提交,一旦提交,该条指令进行的操作对装置状态的改变将无法撤销。在一种实施方式中,指令缓存单元可以是重排序缓存。
可选的,上述方法在步骤S301之前还可以包括:
确定该第一运算指令与第一运算指令之前的第二运算指令是否存在关联关系,如第一运算指令与第一运算指令之前的第二运算指令存在关联关系,则在第二运算指令执行完毕以后,从缓存单元中提取出该第一运算指令传递至运算单元203。如第一运算指令与该第一运算指令之前的指令无关联关系,则直接将第一运算指令传递至运算单元。
上述确定该第一运算指令与第一运算指令之前的第二运算指令是否存在关联关系的具体实现方法可以为:
依据该第一运算指令提取该第一运算指令中所需矩阵的第一存储地址区间,依据该第二运算指令提取该第二运算指令中所需矩阵的第二存储地址区间,如第一存储地址区间与第二存储地址区间具有重叠的区域,则确定第一运算指令与第二运算指令具有关联关系。如第一存储地址区间与第二存储地址区间无重叠的区域,则确定第一运算指令与第二运算指令不具有关联关系。
此存储地区区间中有重叠区域出现说明第一运算指令与第二运算指令访问了相同的矩阵,对于矩阵来说,由于其存储的空间比较大,比如采用相同的存储区域作为判断是否为关联关系的条件,可能出现的情况是,第二运算指令访问的存储区域包含了第一运算指令访问的存储区域,例如,第二运算指令访问A矩阵存储区域、B矩阵存储区域和C矩阵存储区域,如果A、B存储区域相邻或A、C存储区域相邻,则第二运算指令访问的存储区域为,A、B存储区域以及C存储区域,或A、C存储区域以及B存储区域。这种情况下,如果第一运算指令访问的为A矩阵与D矩阵的存储区域,那么第一运算指令访问的矩阵的存储区域无法与第二运算指令范文的矩阵的存储区域相同,如果采用相同的判断条件,则确定第一运算指令与第二运算指令不关联,但是实践证明,此时第一运算指令与第二运算指令属于关联关系,所以本披露通过是否有重叠区域来判断是否为关联关系的条件,能够避免上述情况的误判。
下面以一个实际的例子来说明何种情况属于关联关系,何种情况属于非关联关系。这里假设第一运算指令所需的矩阵为A矩阵和D矩阵,其中A矩阵的存储区域为【0001,0FFF】,D矩阵的存储区域为【A000,AFFF】,对于第二运算指令所需的矩阵为A矩阵、B矩阵和C矩阵,其分别对应的存储区域为【0001,0FFF】、【1000,1FFF】、【B000,BFFF】,对于第一运算指令来说,其对应的存储区域为:【0001,0FFF】、【A000,AFFF】,对于第二运算指令来说,其对应的存储区域为:【0001,1FFF】、【B000,BFFF】,所以第二运算指令的存储区域与第一运算指令的存储区域具有重叠区域【0001,0FFF】,所以第一运算指令与第二运算指令具有关联关系。
这里假设第一运算指令所需的矩阵为E矩阵和D矩阵,其中A矩阵的存储区域为【C000,CFFF】,D矩阵的存储区域为【A000,AFFF】,对于第二运算指令所需的矩阵为A矩阵、B矩阵和C矩阵,其分别对应的存储区域为【0001,0FFF】、【1000,1FFF】、【B000,BFFF】,对于第一运算指令来说,其对应的存储区域为:【C000,CFFF】、【A000,AFFF】,对于第二运算指令来说,其对应的存储区域为:【0001,1FFF】、【B000,BFFF】,所以第二运算指令的存储区域与第一运算指令的存储区域不具有重叠区域,所以第一运算指令与第二运算指令无关联关系。
图4是本披露提供的指令集的格式示意图,如图4所示,运算指令包括一操作码和至少一操作域,其中,操作码用于指示该运算指令的功能,运算单元通过识别该操作码可进行不同的矩阵运算,操作域用于指示该运算指令的数据信息,其中,数据信息可以是立即数或寄存器号,例如,要获取一个矩阵时,根据寄存器号可以在相应的寄存器中获取矩阵起始地址和矩阵长度,再根据矩阵起始地址和矩阵长度在存储介质中获取相应地址存放的矩阵。
指令集包含有不同功能的运算指令:
矩阵乘向量指令(MMV),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出设定长度的矩阵数据和向量数据,在运算单元中进行矩阵乘向量的乘法运算,并将结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址;值得说明的是,向量可以作为特殊形式的矩阵(只有一行元素的矩阵)存储于存储器(优选的高速暂存存储器或者标量寄存器堆)中。
向量乘矩阵指令(VMM),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出设定长度的向量数据和矩阵数据,在运算单元中进行向量乘矩阵的乘法运算,并将结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址;值得说明的是,向量可以作为特殊形式的矩阵(只有一行元素的矩阵)存储于存储器(优选的高速暂存存储器或者标量寄存器堆)中。
矩阵乘标量指令(VMS),根据该指令,装置存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出设定长度的矩阵数据,从标量寄存器堆的指定地址中取出指定大小的矩阵数据,在运算单元中进行标量乘矩阵的乘法运算,并将计算结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址,需要说明的是,标量寄存器堆不仅存储有矩阵的地址,还存储有标量数据。
张量运算指令(TENS),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的两个指定地址取出分别取出设定长度的两块矩阵数据,在运算单元中对两矩阵数据进行张量运算,并将计算结果写回。优选的,并将计算结果写回至存储器(优选的存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址。
矩阵加法指令(MA),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的两个指定地址取出分别取出设定长度的两块矩阵数据,在运算单元中对两矩阵进行加法运算,并将计算结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址。
矩阵减法指令(MS),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的两个指定地址取出分别取出设定长度的两块矩阵数据,在运算单元中对两矩阵进行减法运算,并将计算结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址。
矩阵检索指令(MR),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出设定长度的向量数据,从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出指定大小的矩阵数据,在运算单元中,该向量是索引向量,输出的向量中的第i个元素是以索引向量的第i个元素作为索引,在矩阵的第i列中找到的数,该输出向量写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址。
矩阵加载指令(ML),根据该指令,装置从指定外部源地址载入设定长度的数据至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址。
矩阵存储指令(MS),根据该指令,装置将存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址的设定长度的矩阵数据存至外部目的地址处。
矩阵搬运指令(MMOVE),根据该指令,装置将存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址的设定长度的矩阵数据存至存储器(优选的高速暂存存储器或者标量寄存器堆)的另一指定地址处。
上述指令中的设定长度可以由用户自行设定,在一个可选的实施方案中,用户可以将该设置长度设置为一个值,当然在实际应用中,用户也可以将该设置长度设置为多个值。本披露具体实施方式并不限定该设定长度的具体值以及个数。为使本披露的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本披露进一步详细说明。
参阅图5,图5为本披露具体实施方式提供的另一种计算装置50,如图所示的实施例中的具体实施方案、细化方案或技术效果可以参见如图2或图3所示实施例中的描述,这里不再赘述。图5所示,计算装置50包括:存储介质501、标量数据存储单元单元502(优选的为标量寄存器单元)、矩阵计算单元503和控制单元504;
存储介质501,用于存储矩阵;
标量数据存储单元502,用于存储标量数据,所述标量数据至少包括:所述矩阵在所述存储介质内的存储地址;
控制单元504,用于控制所述矩阵计算单元获取第一运算指令,所述第一运算指令包括执行所述指令所需的矩阵读取指示;
运算单元503,用于依据所述矩阵读取指示向所述存储介质发送读取命令;依据采用批量读取方式读取所述矩阵读取指示对应的矩阵,对该矩阵执行所述第一运算指令。
可选的,上述矩阵读取指示包括:所述指令所需的矩阵的存储地址或所述指令所需矩阵的标识。
可选的如所述矩阵读取指示为所述指令所需矩阵的标识时,
控制单元504,用于控制所述运算单元依据所述标识从所述寄存器单元出采用单位读取方式读取所述标识对应的存储地址,控制所述运算单元向所述存储介质发送读取所述存储地址的读取命令并采用批量读取方式获取所述矩阵。
可选的,运算单元503,具体用于对该矩阵执行第一流水级的计算得到第一结果,将第一结果输入到第二流水级执行第二流水级得到第二结果,将所述第二结果输入到第三流水级执行第三流水级得到第三结果,将所述第三结果输入到所述矩阵存储器进行存储。
可选的,所述计算装置还包括:
缓存单元505,用于缓存待执行的运算指令;
所述控制单元504,用于将待执行的运算指令缓存于所述缓存单元504内。
可选的,控制单元504,用于确定所述第一运算指令与所述第一运算指令之前的第二运算指令是否存在关联关系,如所述第一运算指令与所述第二运算指令存在关联关系,则将所述第一运算指令缓存与所述缓存单元内,在所述第二运算指令执行完毕后,从所述缓存单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第二运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需矩阵的第一存储地址区间,依据所述第二运算指令提取所述第二运算指令中所需矩阵的第二存储地址区间,如所述第一存储地址区间与所述第二存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第二运算指令具有关联关系,如所述第一存储地址区间与所述第二存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第二运算指令不具有关联关系。
可选的,上述控制单元503,可以用于从指令缓存单元获取运算指令,并对该运算指令进行处理后,提供给所述运算单元。其中,控制单元503可以划分为三个模块,分别为:取指模块5031、译码模块5032和指令队列模块5033,
取指模5031,用于从指令缓存单元中获取运算指令;
译码模块5032,用于对获取的运算指令进行译码;
指令队列5033,用于对译码后的运算指令进行顺序存储,考虑到不同指令在包含的寄存器上有可能存在依赖关系,用于缓存译码后的指令,当依赖关系被满足之后发射指令。
参阅图6,图6是本披露实施例提供的计算装置执行矩阵乘向量指令的流程图,如图6所示,该计算装置的硬件结构参阅图5所示的结构,如图5所示的存储介质以高速暂存存储器为例,执行矩阵乘向量指令的过程包括:
步骤S601,计算装置控制取指模块取出矩阵乘向量指令,并将该矩阵乘向量指令送往译码模块。
步骤S602,译码模块对该矩阵乘向量指令译码,并将该矩阵乘向量指令送往指令队列。
步骤S603,在指令队列中,该矩阵乘向量指令需要从标量寄存器堆中获取指令中五个操作域所对应的标量寄存器里的数据,该数据包括输入向量地址、输入向量长度、输入矩阵地址、输出向量地址和输出向量长度。
步骤S604,控制单元确定所述矩阵乘向量指令与矩阵乘向量指令之前的运算指令是否存在关联关系,如存在关联关系,将矩阵乘向量指令存入到缓存单元,如不存在关联管理,将该矩阵乘向量指令传输至运算单元。
步骤S605,运算单元根据五个操作域所对应的标量寄存器里的数据从高速暂存器中取出需要的矩阵和向量数据,然后在运算单元中完成乘法运算。
步骤S606,运算单元运算完成后,将结果写入存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址,重排序缓存中的该矩阵乘向量指令被提交。
上述图6中的矩阵计算指令以矩阵乘向量指令为例,在实际应用中,如图6所示实施例中的矩阵乘向量指令可以用向量乘矩阵指令、矩阵乘标量指令、张量运算指令、矩阵加法指令、矩阵减法指令、矩阵检索指令、矩阵加载指令、矩阵存储指令或矩阵搬运指令替换,这里不一一赘述。
参阅图6A,图6A提供了一种计算装置,该计算装置包括:存储介质611(可选的)、寄存器单元612、互联模块613、运算单元614、控制单元615和数据访问单元616;
其中,运算单元614包括:加法计算器、乘法计算器、比较器、激活运算器中至少二种。
互联模块613,用于控制运算单元614中计算器的连接关系使得该至少二种计算器组成不同的计算拓扑结构。
指令存储单元(可以是寄存器单元,指令缓存,高速暂存存储器)612,用于存储该运算指令、数据块的在存储介质的地址、运算指令对应的计算拓扑结构。
该运算指令可以包括:操作域以及操作码,以卷积计算指令为例,如表1所示,其中,寄存器0、寄存器1、寄存器堆2、寄存器3、寄存器4可以为操作域。其中,每个寄存器0、寄存器1、寄存器2、寄存器3、寄存器4可以是一个或者多个寄存器。
存储介质611可以为片外存储器,当然在实际应用中,也可以为片内存储器,用于存储数据块,该数据块具体可以为n维数据,n为大于等于1的整数,例如,n=1时,为1维数据,即向量,如n=2时,为2维数据,即矩阵,如n=3或3以上时,为多维数据。
控制单元615,用于从寄存器单元612内提取运算指令、该运算指令对应的操作域以及该运算指令对应的第一计算拓扑结构,将该运算指令译码成执行指令,该执行指令用于控制运算单元执行运算操作,将该操作域传输至数据访问单元616,将该计算拓扑结构传输至互联模块613。
数据访问单元616,用于从存储介质611中提取该操作域对应的数据块,并将该数据块传输至互联模块613。
互联模块613、用于接收第一计算拓扑结构和数据块。一个实施例里,互联模块613还根据第一计算拓扑结构对数据块重新摆放。
运算单元614,用于该执行指令调用运算单元614的计算器对该数据块执行运算操作得到运算结果,将该运算结果传输至数据访问单元存储在存储介质内。一个实施例里,运算单元614,用于按第一计算拓扑结构以及该执行指令调用计算器对重新摆放的数据块执行运算操作得到运算结果,将该运算结果传输至数据访问单元存储在存储介质内。
另一个实施例里,互联模块613、用于依据控制运算单元614中计算器的连接关系形成第一计算拓扑结构。
本披露提供的计算装置设置了互联模块,此互联模块能够根据运算指令的需要将运算单元内的计算器组合连接得到与该运算指令对应的计算拓扑结构,进而在后续的运算单元运算时无需对计算的中间数据执行存储或提取操作,此结构实现单一指令即能实现一次输入即能够进行多次计算器的运算得到计算结果的优点,提高了计算效率。
本披露还提供了一种神经网络运算装置。图7为依据本实施例神经网络运算装置的示意图。在一种可选实施例中,该神经网络运算装置可以为如图6A所示的计算装置,在如图6A所示的计算装置内,可以添加在幂次转换单元,该幂次转换单元与存储介质连接,用于将神经网络输入数据中非幂次权值数据转换为幂次权值数据。可选的,上述计算装置还可以包括:控制单元以及运算单元等等,控制单元以及运算单元的具体描述可以参见如图6A所示实施例的描述,这里不再赘述,另外,上述如图6A所示的计算装置还可以增加或扩展如图7所示的神经网络运算装置。另一种可选实施例中,神经网络运算装置的结构如图7,,包括:
存储单元1,用于存储数据和指令;
控制单元,与所述存储单元连接,用于控制数据和指令的交互,其接收该存储单元发送的数据和指令,并将指令译码成运算指令;
运算单元7,与所述控制单元连接,接收该控制单元发送的数据和运算指令,并根据运算指令对其接收的神经元数据及权值数据执行神经网络运算;
输出神经元缓存单元8,与所述运算单元连接,用于接收运算单元输出的神经元数据;并将其发送至所述控制单元。由此可作为下一层神经网络运算的输入数据;以及
幂次转换单元9,其与所述存储单元连接,用于将神经网络输入数据中非幂次权值数据转换为幂次权值数据,并发送至所述存储单元。而对于神经网络输入数据中的幂次权值数据,则直接存入存储单元。
具体的,所述控制单元包括:
数据控制模块2,与所述存储单元连接,用于存储单元和各缓存模块之间的数据和指令交互;
指令缓存模块3,与所述数据控制模块连接,用于接收数据控制模块发送的指令;
译码模块4,与所述指令缓存模块连接,用于从指令缓存模块中读取指令,并将其译码成各运算指令;
输入神经元缓存模块5,与所述数据控制模块连接,用于接收数据控制模块发送的神经元数据;
权值缓存模块6,与所述数据控制模块连接,用于接收从数据控制模块发送的权值数据。
进一步的,所述运算单元7,分别与所述译码模块、输入神经元缓存模块及权值缓存模块连接,接收各运算指令、神经元数据及权值数据,用于根据各运算指令对其接收的神经元数据和权值数据执行相应的运算。所述输出神经元缓存单元8,与所述运算单元连接,用于接收运算单元输出的神经元数据;并将其发送至所述控制单元的数据控制模块2。由此可作为下一层神经网络运算的输入数据
其中,存储单元从外部地址空间接收数据和指令,该数据包括神经网络权值数据、神经网络输入数据等。
进一步的,幂次转换操作有多种可选方式。下面列举本实施例所采用的三种幂次转换操作:
第一种幂次转换方法:
其中,din为幂次转换单元的输入数据,dout为幂次转换单元的输出数据,sin为输入数据的符号,sout为输出数据的符号,din+为输入数据的正数部分,din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout,表示对数据x做取下整操作。
第二种幂次转换方法:
dout+=|log2(din+)|
其中,din为幂次转换单元的输入数据,dout为幂次转换单元的输出数据,sin为输入数据的符号,sout为输出数据的符号,din+为输入数据的正数部分,din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout,表示对数据x做取上整操作。
第三种幂次转换方法:
其中,din为幂次转换单元的输入数据,dout为幂次转换单元的输出数据;sin为输入数据的符号,sout为输出数据的符号;din+为输入数据的正数部分,din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout;[x]表示对数据x做四舍五入操作。
本披露还提供了另一种神经网络运算装置。图8为依据本实施例神经网络运算装置的示意图。请参照图8,本实施例神经网络运算装置,包括:
存储单元101,用于存储数据和指令;该存储单元从外部地址空间接收数据和指令,该数据包括神经网络权值数据、神经网络输入数据等。
控制单元,与所述存储单元连接,用于控制数据和指令的交互,其接收该存储单元发送的数据和指令,并将指令译码成运算指令;
运算单元107,与所述控制单元连接,接收该控制单元发送的数据和运算指令,并根据运算指令对其接收的权值数据和神经元数据执行神经网络运算;
输出神经元缓存单元108,与所述运算单元连接,用于接收运算单元输出的神经元数据,并将其发送至所述控制单元;
幂次转换单元109,其与所述存储单元连接,用于将神经网络输入数据中非幂次神经元数据及非幂次权值数据分别转换为幂次神经元数据及幂次权值数据,并发送至所述存储单元。而对于神经网络输入数据中的幂次神经元数据及幂次权值数据,则直接存入存储单元;以及
幂次转换单元110,其与所述输出神经元缓存单元108连接,用于将神经网络运算后的神经元数据转换为幂次神经元数据,并发送至所述控制单元。
进一步的,所述控制单元包括:
数据控制模块102,与所述存储单元连接,用于存储单元和各缓存模块之间的数据和指令交互;
指令缓存模块103,与所述数据控制模块连接,用于接收数据控制模块发送的指令;
译码模块104,与所述指令缓存模块连接,用于从指令缓存模块中读取指令,并将其译码成各运算指令;
输入神经元缓存模块105,与所述数据控制模块连接,用于接收数据控制模块发送的神经元数据;
权值缓存模块106,与所述数据控制模块连接,用于接收从数据控制模块发送的权值数据。
具体的,所述运算单元107,分别与所述译码模块、输入神经元缓存模块及权值缓存模块连接,接收各运算指令、神经元数据及权值数据,用于根据各运算指令对其接收的神经元数据和权值数据执行相应的运算。
所述幂次转换单元110,与所述数据控制模块连接,用于将神经网络运算后的神经元数据转换为幂次神经元数据,并发送至所述控制单元的数据控制模块102。通过幂次转换单元110获得的幂次神经元数据可作为神经网络运算下一层的输入神经元。
另外,所述幂次转换的具体操作方法与前述实施例相同,此处不再赘述。
另外,本披露实施例还提供了一种神经网络运算方法,图9为本实施例神经网络运算方法的流程图。具体而言,本披露实施例的神经网络为多层神经网络,对于每层神经网络可按图9所示的运算方法进行运算,其中,神经网络第一层输入幂次权值数据可通过存储单元从外部地址读入,若外部地址读入的权值数据已经为幂次权值数据则直接传入存储单元,否则先通过幂次转换单元转换为幂次权值数据。请参照图9,本实施例单层神经网络运算方法,包括:
步骤S1,获取指令、神经元数据及幂次权值数据。
其中,所述步骤S1包括以下子步骤:
S11,将指令、神经元数据及权值数据输入存储单元;其中,对幂次权值数据直接输入存储单元,对非幂次权值数据经过幂次转换单元转换后输入存储单元;
S12,数据控制模块接收该存储单元发送的指令、神经元数据及幂次权值数据;
S13,指令缓存模块、输入神经元缓存模块及权值缓存模块分别接收所述数据控制模块发送的指令、神经元数据及幂次权值数据并分发给译码模块或运算单元。
所述幂次权值数据表示权值数据的数值采用其幂指数值形式表示,具体为,幂次权值数据包括符号位和幂次位,符号位用一位或多位比特位表示权值数据的符号,幂次位用m位比特位表示权值数据的幂次位数据,m为大于1的正整数。存储单元预存有编码表,提供幂次权值数据的每个幂次位数据对应的指数数值。编码表设置一个或者多个幂次位数据(即置零幂次位数据)为指定对应的幂次权值数据为0。也就是说,当幂次权值数据的幂次位数据是编码表里的置零幂次位数据时候,表示该幂次权值数据为0。
编码表的对应关系可以是任意的。
例如,编码表的对应关系可以是乱序的。如图9.1所示一种m为5的编码表的部分内容,幂次位数据为00000的时候对应指数数值为0。幂次位数据为00001的时候对应指数数值为3。幂次位数据为00010的时候对应指数数值为4。幂次位数据为00011的时候对应指数数值为1。幂次位数据为00100的时候对应幂次权值数据为0。
编码表的对应关系也可以是正相关的,存储单元预存一个整数值x和一个正整数值y,最小的幂次位数据对应指数数值为x,其他任意一个或多个幂次位数据对应幂次权值数据为0。x表示偏置值,y表示步长。在一种实施例情况下,最小的幂次位数据对应指数数值为x,最大的幂次位数据对应幂次权值数据为0,最小和最大的幂次位数据之外的其他的幂次位数据对应指数数值为(幂次位数据+x)*y。通过预设定不同的x和y以及通过改变x和y的数值,幂次的表示范围变得可配,可以适用于需要不同数值范围的不同的应用场景。因此,本神经网络运算装置的应用范围更加广泛,使用更加灵活可变,可根据用户需求来做调整。
在一种实施方式中,y为1,x的数值等于-2m-1。由此幂次权值数据所表示的数值的指数范围为-2m-1~2m-1-1。
在一种实施方式中,如图9.2所示,一种m为5,x为0,y为1的编码表的部分内容,幂次位数据为00000的时候对应指数数值为0。幂次位数据为00001的时候对应指数数值为1。幂次位数据为00010的时候对应指数数值为2。幂次位数据为00011的时候对应指数数值为3。幂次位数据为11111的时候对应幂次权值数据为0。如图9.3所示,另一种m为5,x为0,y为2的编码表的部分内容,幂次位数据为00000的时候对应指数数值为0。幂次位数据为00001的时候对应指数数值为2。幂次位数据为00010的时候对应指数数值为4。幂次位数据为00011的时候对应指数数值为6。幂次位数据为11111的时候对应幂次权值数据为0。
编码表的对应关系可以是负相关的,存储单元预存一个整数值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.4所示,一种m为5的编码表的部分内容,幂次位数据为11111的时候对应数数值为0。幂次位数据为11110的时候对应指数数值为1。幂次位数据为11101的时候对应指数数值为2。幂次位数据为11100的时候对应指数数值为3。幂次位数据为00000的时候对应幂次权值数据为0。
编码表的对应关系可以是幂次位数据最高位代表置零位,幂次位数据其他m-1位对应指数数值。当幂次位数据最高位为0时,对应幂次权值数据为0;当幂次位数据最高位为1时,对应幂次权值数据不为0。反之亦可,即当幂次位数据最高位为1时,对应幂次权值数据为0;当幂次位数据最高位为0时,对应幂次权值数据不为0。用另一种语言来描述,即幂次权值数据的幂次位被分出一个比特来指示幂次权值数据是否为0。
在一个具体实例图9.5所示,符号位为1位,幂次位数据位为7位,即m为7。编码表为幂次位数据为11111111的时候对应幂次权值数据为0,幂次位数据为其他数值的时候幂次权值数据对应相应的二进制补码。当幂次权值数据符号位为0,幂次位为0001001,则其表示具体数值为29,即512;幂次权值数据符号位为1,幂次位为1111101,则其表示具体数值为-2-3,即-0.125。相对于浮点数据,幂次数据只保留数据的幂次位,极大减小了存储数据所需的存储空间。
通过幂次数据表示方法,可以减小存储权值数据所需的存储空间。在本实施例所提供示例中,幂次数据为8位数据,应当认识到,该数据长度不是固定不变的,在不同场合下,根据数据权值的数据范围采用不同的数据长度。
步骤S2,根据运算指令对神经元数据及幂次权值数据进行神经网络运算。其中,所述步骤S2包括以下子步骤:
S21,译码模块从指令缓存模块中读取指令,并将其译码成各运算指令;
S22,运算单元分别接收所述译码模块、输入神经元缓存模块及权值缓存模块发送的运算指令、幂次权值数据以及神经元数据,并根据运算指令对神经元数据及幂次表示的权值数据进行神经网络运算。
所述神经元与幂次权值乘法操作具体为,神经元数据符号位与幂次权值数据符号位做异或操作;编码表的对应关系为乱序的情况下查找编码表找出幂次权值数据幂次位对应的指数数值,编码表的对应关系为正相关的情况下记录编码表的指数数值最小值并做加法找出幂次权值数据幂次位对应的指数数值,编码表的对应关系为负相关的情况下记录编码表的最大值并做减法找出幂次权值数据幂次位对应的指数数值;将指数数值与神经元数据幂次位做加法操作,神经元数据有效位保持不变。
具体实例一如图9.6所示,神经元数据为16位浮点数据,符号位为0,幂次位为10101,有效位为0110100000,则其表示的实际数值为1.40625*26。幂次权值数据符号位为1位,幂次位数据位为5位,即m为5。编码表为幂次位数据为11111的时候对应幂次权值数据为0,幂次位数据为其他数值的时候幂次位数据对应相应的二进制补码。幂次权值为000110,则其表示的实际数值为64,即26。幂次权值的幂次位加上神经元的幂次位结果为11011,则结果的实际数值为1.40625*212,即为神经元与幂次权值的乘积结果。通过该运算操作,使得乘法操作变为加法操作,减小计算所需的运算量。
具体实例二如图9.7所示,神经元数据为32位浮点数据,符号位为1,幂次位为10000011,有效位为10010010000000000000000,则其表示的实际数值为-1.5703125*24。幂次权值数据符号位为1位,幂次位数据位为5位,即m为5。编码表为幂次位数据为11111的时候对应幂次权值数据为0,幂次位数据为其他数值的时候幂次位数据对应相应的二进制补码。幂次神经元为111100,则其表示的实际数值为-2-4。(神经元的幂次位加上幂次权值的幂次位结果为01111111,则结果的实际数值为1.5703125*20,即为神经元与幂次权值的乘积结果。
可选的,还包括步骤S3,将神经网络运算后的神经元数据输出并作为下一层神经网络运算的输入数据。
其中,所述步骤S3可包括以下子步骤:
S31,输出神经元缓存单元接收所述计算单元发送的神经网络运算后得到的神经元数据。
S32,将输出神经元缓存单元接收的神经元数据传输给数据控制模块,通过输出神经元缓存单元获得的神经元数据可作为神经网络运算下一层的输入神经元,再重复步骤S1至步骤S3直到神经网络最后一层运算结束。
另外,通过幂次转换单元获得的幂次神经元数据可作为神经网络运算下一层的输入幂次神经元,再重复步骤1至步骤3直到神经网络最后一层运算结束。通过改变存储单元预存的整数值x和正整数值y,可以调整神经网络运算装置所能表示的幂次神经元数据范围。
另外,所述幂次转换的具体操作方法与前述实施例相同,此处不再赘述。
另外,本披露实施例还提供了另一种神经网络运算方法,图10为本实施例神经网络运算方法的流程图。
具体而言,本披露实施例的神经网络为多层神经网络,对于每层神经网络可按图10所示的运算方法进行运算,其中,神经网络第一层输入幂次权值数据可通过存储单元从外部地址读入,若外部地址读入的数据已经为幂次权值数据则直接传入存储单元,否则先通过幂次转换单元转换为幂次权值数据;而神经网络第一层输入幂次神经元数据可通过存储单元从外部地址读入,若外部地址读入的数据已经为幂次数据则直接传入存储单元,否则先通过幂次转换单元转换为幂次神经元数据,此后各层神经网络的输入神经元数据可由在该层之前的一层或多层神经网络的输出幂次神经元数据提供。请参照图10,本实施例单层神经网络运算方法,包括:
步骤S4,获取指令、幂次神经元数据及幂次权值数据。
其中,所述步骤S4包括以下子步骤:
S41,将指令、神经元数据及权值数据输入存储单元;其中,对幂次神经元数据及幂次权值数据直接输入存储单元,对非幂次神经元数据及非幂次权值数据则经过所述第一幂次转换单元转换为幂次神经元数据及幂次权值数据后输入存储单元;
S42,数据控制模块接收该存储单元发送的指令、幂次神经元数据及幂次权值数据;
S43,指令缓存模块、输入神经元缓存模块及权值缓存模块分别接收所述数据控制模块发送的指令、幂次神经元数据及幂次权值数据并分发给译码模块或运算单元。
所述幂次神经元数据及幂次权值数据表示神经元数据及权值数据的数值采用其幂指数值形式表示,具体为,幂次神经元数据及幂次权值数据均包括符号位和幂次位,符号位用一位或多位比特位表示神经元数据及权值数据的符号,幂次位用m位比特位表示神经元数据及权值数据的幂次位数据,m为大于1的正整数。存储单元的存储单元预存有编码表,提供幂次神经元数据及幂次权值数据的每个幂次位数据对应的指数数值。编码表设置一个或者多个幂次位数据(即置零幂次位数据)为指定对应的幂次神经元数据及幂次权值数据为0。也就是说,当幂次神经元数据及幂次权值数据的幂次位数据是编码表里的置零幂次位数据时候,表示该幂次神经元数据及幂次权值数据为0。
编码表的对应关系可以是任意的。
例如,编码表的对应关系可以是乱序的。如图10.1所示一种m为5的编码表的部分内容,幂次位数据为00000的时候对应指数数值为0。幂次位数据为00001的时候对应指数数值为3。幂次位数据为00010的时候对应指数数值为4。幂次位数据为00011的时候对应指数数值为1。幂次位数据为00100的时候对应幂次神经元数据及幂次权值数据为0。
编码表的对应关系也可以是正相关的,存储单元预存一个整数值x和一个正整数值y,最小的幂次位数据对应指数数值为x,其他任意一个或多个幂次位数据对应幂次神经元数据及幂次权值数据为0。x表示偏置值,y表示步长。在一种实施例情况下,最小的幂次位数据对应指数数值为x,最大的幂次位数据对应幂次神经元数据及幂次权值数据为0,最小和最大的幂次位数据之外的其他的幂次位数据对应指数数值为(幂次位数据+x)*y。通过预设定不同的x和y以及通过改变x和y的数值,幂次的表示范围变得可配,可以适用于需要不同数值范围的不同的应用场景。因此,本神经网络运算装置的应用范围更加广泛,使用更加灵活可变,可根据用户需求来做调整。
在一种实施例方式中,y为1,x的数值等于-2m-1。由此幂次神经元数据及幂次权值数据所表示的数值的指数范围为-2m-1~2m-1-1。
在一种实施例方式中,如图10.2所示一种m为5,x为0,y为1的编码表的部分内容,幂次位数据为00000的时候对应指数数值为0。幂次位数据为00001的时候对应指数数值为1。幂次位数据为00010的时候对应指数数值为2。幂次位数据为00011的时候对应指数数值为3。幂次位数据为11111的时候对应幂次神经元数据及幂次权值数据为0。如图10.3所示另一种m为5,x为0,y为2的编码表的部分内容,幂次位数据为00000的时候对应指数数值为0。幂次位数据为00001的时候对应指数数值为2。幂次位数据为00010的时候对应指数数值为4。幂次位数据为00011的时候对应指数数值为6。幂次位数据为11111的时候对应幂次神经元数据及幂次权值数据为0。
编码表的对应关系可以是负相关的,存储单元预存一个整数值x和一个正整数值y,最大的幂次位数据对应指数数值为x,其他任意一个或多个幂次位数据对应幂次神经元数据及幂次权值数据为0。x表示偏置值,y表示步长。在一种实施例情况下,最大的幂次位数据对应指数数值为x,最小的幂次位数据对应幂次神经元数据及幂次权值数据为0,最小和最大的幂次位数据之外的其他的幂次位数据对应指数数值为(幂次位数据-x)*y。通过预设定不同的x和y以及通过改变x和y的数值,幂次的表示范围变得可配,可以适用于需要不同数值范围的不同的应用场景。因此,本神经网络运算装置的应用范围更加广泛,使用更加灵活可变,可根据用户需求来做调整。
在一种实施例方式中,y为1,x的数值等于2m-1。由此幂次神经元数据及幂次权值数据所表示的数值的指数范围为-2m-1-1~2m-1。
如图10.4所示一种m为5的编码表的部分内容,幂次位数据为11111的时候对应数数值为0。幂次位数据为11110的时候对应指数数值为1。幂次位数据为11101的时候对应指数数值为2。幂次位数据为11100的时候对应指数数值为3。幂次位数据为00000的时候对应幂次神经元数据及幂次权值数据为0。
编码表的对应关系可以是幂次位数据最高位代表置零位,幂次位数据其他m-1位对应指数数值。当幂次位数据最高位为0时,对应幂次神经元数据及幂次权值数据为0;当幂次位数据最高位为1时,对应幂次神经元数据及幂次权值数据不为0。反之亦可,即当幂次位数据最高位为1时,对应幂次神经元数据及幂次权值数据为0;当幂次位数据最高位为0时,对应幂次神经元数据及幂次权值数据不为0。用另一种语言来描述,即幂次神经元数据及幂次权值数据的幂次位被分出一个比特来指示幂次神经元数据及幂次权值数据是否为0。
在一个具体实例方式中,如图10.5所示,符号位为1位,幂次位数据位为7位,即m为7。编码表为幂次位数据为11111111的时候对应幂次神经元数据及幂次权值数据为0,幂次位数据为其他数值的时候幂次神经元数据及幂次权值数据对应相应的二进制补码。当幂次神经元数据及幂次权值数据符号位为0,幂次位为0001001,则其表示具体数值为29,即512;幂次神经元数据及幂次权值数据符号位为1,幂次位为1111101,则其表示具体数值为-2-3,即-0.125。相对于浮点数据,幂次数据只保留数据的幂次位,极大减小了存储数据所需的存储空间。
通过幂次数据表示方法,可以减小存储神经元数据及权值数据所需的存储空间。在本实施例所提供示例中,幂次数据为8位数据,应当认识到,该数据长度不是固定不变的,在不同场合下,根据神经元数据及权值数据的数据范围采用不同的数据长度。
步骤S5,根据运算指令对幂次神经元数据及幂次权值数据进行神经网络运算。其中,所述步骤S5包括以下子步骤:
S51,译码模块从指令缓存模块中读取指令,并将其译码成各运算指令;
S52,运算单元分别接收所述译码模块、输入神经元缓存模块及权值缓存模块发送的运算指令、幂次神经元数据及幂次权值数据,并根据运算指令对幂次神经元数据及幂次权值数据进行神经网络运算。
所述幂次神经元与幂次权值乘法操作具体为,幂次神经元数据符号位与幂次权值数据符号位做异或操作;编码表的对应关系为乱序的情况下查找编码表找出幂次神经元数据及幂次权值数据幂次位对应的指数数值,编码表的对应关系为正相关的情况下记录编码表的指数数值最小值并做加法找出幂次神经元数据及幂次权值数据幂次位对应的指数数值,编码表的对应关系为负相关的情况下记录编码表的最大值并做减法找出幂次神经元书记及幂次权值数据幂次位对应的指数数值;将幂次神经元数据对应的指数数值与幂次权值数据对应的指数数值做加法操作。
具体实例一如图10.6所示,幂次神经元数据和幂次权值数据符号位为1位,幂次位数据位为4位,即m为4。编码表为幂次位数据为1111的时候对应幂次权值数据为0,幂次位数据为其他数值的时候幂次位数据对应相应的二进制补码。幂次神经元数据为00010,则其表示的实际数值为22。幂次权值为00110,则其表示的实际数值为64,即26。幂次神经元数据和幂次权值数据的乘积为01000,其表示的实际数值为28。
可以看到,幂次神经元数据和幂次权值的乘法运算相比于浮点数据的乘法以及浮点数据和幂次数据的乘法都更加的简单方便。
本实施例方法还可进一步包括,步骤S6,将神经网络运算后的神经元数据输出并作为下一层神经网络运算的输入数据。
其中,所述步骤S6包括以下子步骤:
S61,输出神经元缓存单元接收所述计算单元发送的神经网络运算后得到的神经元数据。
S62,将输出神经元缓存单元接收的神经元数据传输给数据控制模块,通过输出神经元缓存单元获得的神经元数据可作为神经网络运算下一层的输入神经元,再重复步骤S4至步骤S6直到神经网络最后一层运算结束。
由于神经网络运算后得到的神经元数据也为幂次数据,将其传输给数据控制模块所需带宽相比于浮点数据所需带宽大大减少,因此进一步减小了神经网络存储资源和计算资源的开销,提高了神经网络的运算速度。
另外,所述幂次转换的具体操作方法与前述实施例相同,此处不再赘述。
所披露的实施例的所有的模块都可以是硬件结构,硬件结构的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器,DNA计算机。
以上所述的具体实施例,对本披露的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本披露的具体实施例而已,并不用于限制本披露,凡在本披露的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本披露的保护范围之内。
Claims (16)
1.一种神经网络运算装置,其特征在于,包括:
第一幂次转换单元,用于将神经网络输入数据中的非幂次数据转换为幂次数据;
运算单元,用于接收神经网络运算的数据和指令并根据运算指令对其接收的神经元数据及权值数据执行神经网络运算;其中,所述运算单元接收的所述数据包括经第一幂次转换单元转换的幂次数据;
所述指令为矩阵运算指令,包括:操作码和操作域;
所述操作码,用于识别不同的矩阵运算指令;
所述操作域,用于指示所述矩阵运算指令的数据信息,所述数据信息为指定大小的立即数或指定大小的数据对应的寄存器号;还包括:存储单元,用于存储数据和指令;其中,该存储单元与所述第一幂次转换单元连接以接收所述幂次数据。
2.根据权利要求1所述的神经网络运算装置,其特征在于,还包括:控制单元及输出神经元缓存单元;其中
所述控制单元,与所述存储单元连接,用于控制数据和指令的交互,其接收该存储单元发送的数据和指令,并将指令译码成运算指令;
所述运算单元,与所述控制单元连接,接收该控制单元发送的数据和运算指令,并根据运算指令对其接收的神经元数据及权值数据执行神经网络运算;以及
所述输出神经元缓存单元,与所述运算单元连接,用于接收运算单元输出的神经元数据并发送至所述控制单元作为下一层神经网络运算的输入数据。
3.根据权利要求2所述的神经网络运算装置,其特征在于,所述控制单元,包括:
数据控制模块,与所述存储单元连接,用于实现存储单元和各缓存模块之间的数据和指令交互;
指令缓存模块,与所述数据控制模块连接,用于接收该数据控制模块发送的指令;
译码模块,与所述指令缓存模块连接,用于从指令缓存模块中读取指令,并将其译码成运算指令;
输入神经元缓存模块,与所述数据控制模块连接,用于从该数据控制模块获取相应的输入神经元数据;
权值缓存模块,与所述数据控制模块连接,用于从数据控制模块获取相应的权值数据;其中,
所述运算单元,分别与所述译码模块、输入神经元缓存模块及权值缓存模块连接,接收各运算指令、神经元数据及权值数据,根据运算指令对其接收的神经元数据和权值数据执行相应的神经网络运算。
4.根据权利要求1至3中任一项所述的神经网络运算装置,其特征在于,所述第一幂次转换单元用于将神经网络输入数据中的非幂次权值数据转换为幂次权值数据。
5.根据权利要求3所述的神经网络运算装置,其特征在于,还包括:第二幂次转换单元;其中,
所述第一幂次转换单元用于将神经网络输入数据中的非幂次神经元数据及非幂次权值数据分别转换为幂次神经元数据及幂次权值数据,并发送至所述存储单元;
所述第二幂次转换单元与所述输出神经元缓存单元连接,用于将其接收的神经元数据转换为幂次神经元数据并发送至所述控制单元作为下一层神经网络运算的输入数据。
6.根据权利要求1至3中任一项所述的神经网络运算装置,其特征在于,若神经网络输入数据为幂次数据则直接存入神经网络运算装置。
7.根据权利要求1至3中任一项所述的神经网络运算装置,其特征在于,幂次数据包括幂次神经元数据、幂次权值数据;其中,
所述幂次神经元数据表示神经元数据的数值采用其幂指数值形式表示,其中,所述幂次神经元数据包括符号位和幂次位,符号位采用一位或多位比特位表示神经元数据的符号,幂次位采用m位比特位表示神经元数据的幂次位数据,m为大于1的正整数;
所述幂次权值数据表示权值数据的数值采用其幂指数值形式表示,其中,所述幂次权值数据包括符号位和幂次位,符号位采用一位或多位比特位表示权值数据的符号,幂次位采用m位比特位表示权值数据的幂次位数据,m为大于1的正整数。
8.根据权利要求7所述的神经网络运算装置,其特征在于,该神经网络运算装置的存储单元预存有编码表,用于提供幂次神经元数据及幂次权值数据的每个幂次位数据对应的指数数值。
9.根据权利要求8所述的神经网络运算装置,其特征在于,所述编码表设置一个或者多个幂次位数据为置零幂次位数据,其对应的幂次神经元数据及幂次权值数据为0。
10.根据权利要求1所述的装置,其特征在于,
所述矩阵运算指令为:矩阵乘向量指令MMV、向量乘矩阵指令VMM、矩阵乘标量指令VMS、张量运算指令TENS、矩阵加法指令MA、矩阵减法指令MS、矩阵检索指令MR、矩阵加载指令ML或矩阵搬运指令MMOVE中的一个或任意组合;
所述操作域存储所述MMV的矩阵数据和向量数据的立即数或寄存器号;所述MMV,用于从存储器的指定地址取出指定大小的矩阵数据和向量数据,并将该矩阵数据和向量数据执行矩阵乘向量计算,将该计算结果写回至所述存储器;
或所述操作域存储所述MMV的矩阵数据和向量数据;所述VMM,用于从存储器的指定地址取出指定长度的向量数据和矩阵数据,进行向量乘矩阵的乘法运算,将该计算结果写回至存储器;
或所述操作域存储所述VMS的矩阵数据;所述VMS,用于从存储器的指定地址取出指定长度的矩阵数据,从标量寄存器堆的指定地址中取出标量数据,进行标量乘矩阵数据的乘法运算,将计算结果写回存储器;
或所述操作域存储所述TENS的两块矩阵数据,所述TENS,用于从存储器的两个指定地址分别取出指定大小的两块矩阵数据,对两矩阵数据进行张量运算,并将计算结果写回至存储器;
或所述操作域存储两块矩阵数据;所述MA,用于从存储器的两个指定地址取出分别取出指定大小的两块矩阵数据,对两矩阵进行加法运算,并将计算结果写回至存储器;
或所述操作域存储两块矩阵数据;所述MS,用于从存储器的两个指定地址取出分别取出指定大小的两块矩阵数据,对两矩阵进行减法运算,并将计算结果写回至存储器;
或所述操作域包括:向量数据以及矩阵数据;所述MR,用于从存储器的指定地址取出指定大小的向量数据以及指定大小的矩阵数据,所述向量数据是索引向量,输出的向量中的第i个元素是以索引向量的第i个元素作为索引,在矩阵数据的第i列中找到的数,将所述输出向量写回至存储器;
或所述ML,用于从指定外部源地址载入指定大小的数据至存储器的指定地址;
或所述MS,用于将存储器的指定地址的指定大小的矩阵数据存至外部目的地址;
所述MMOVE,用于将存储器的指定地址的指定大小的矩阵数据存至存储器的另一指定地址。
11.一种神经网络运算方法,其特征在于,所述方法包括:
将神经网络输入数据中的非幂次数据转换为幂次数据,将幂次数据存储,获取指令、幂次神经元数据及幂次权值数据;
根据运算指令对幂次神经元数据及幂次权值数据进行神经网络运算;
所述指令为矩阵运算指令,包括:操作码和操作域;
所述操作码,用于识别不同的矩阵运算指令;
所述操作域,用于指示所述矩阵运算指令的数据信息,所述数据信息为指定大小的立即数或指定大小的数据对应的寄存器号。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:
将神经网络运算后的神经元数据输出并作为下一层神经网络运算的输入数据;重复神经网络运算步骤直到神经网络最后一层运算结束。
13.根据权利要求11所述的方法,其特征在于,所述获取指令、权值数据及神经元数据,包括:
将指令、神经元数据及权值数据输入存储单元;
数据控制模块接收该存储单元发送的指令、神经元数据及权值数据;
指令缓存模块、输入神经元缓存模块及权值缓存模块分别接收该数据控制模块发送的指令、神经元数据及权值数据;其中,若输入存储单元的权值数据为非幂次权值数据则经第一幂次转换单元转换为幂次权值数据输入所述存储单元;若输入存储单元的权值数据为幂次权值数据则直接输入所述存储单元;输出神经元缓存单元接收计算单元发送的神经网络运算后得到的神经元数据并发送至所述数据控制模块作为下一层神经网络运算的输入数据。
14.根据权利要求11所述的方法,其特征在于,所述获取指令、权值数据及神经元数据,包括:
将指令、神经元数据及权值数据输入存储单元;
数据控制模块接收该存储单元发送的指令、神经元数据及权值数据;
指令缓存模块、输入神经元缓存模块及权值缓存模块分别接收该数据控制模块发送的指令、神经元数据及权值数据;其中,若输入存储单元的神经元数据及权值数据为非幂次神经元数据及非幂次权值数据则经第一幂次转换单元转换为幂次神经元数据及幂次权值数据输入所述存储单元;若输入存储单元的神经元数据及权值数据为幂次神经元数据及幂次权值数据则直接输入所述存储单元;出神经元缓存单元接收计算单元发送的神经网络运算后得到的神经元数据;第二幂次转换单元接收输出神经元缓存单元发送的神经元数据将其转换为幂次神经元数据,并发送至所述数据控制模块作为下一层神经网络运算的输入数据。
15.根据权利要求11所述的方法,其特征在于,所述方法包括:
译码模块从指令缓存模块中读取指令,并将其译码成各运算指令;
运算单元分别接收所述译码模块、输入神经元缓存模块及权值缓存模块发送的运算指令、神经元数据以及权值数据,并根据运算指令对神经元数据和权值数据进行神经网络运算。
16.根据权利要求11所述的方法,其特征在于,
所述矩阵运算指令为:矩阵乘向量指令MMV、向量乘矩阵指令VMM、矩阵乘标量指令VMS、张量运算指令TENS、矩阵加法指令MA、矩阵减法指令MS、矩阵检索指令MR、矩阵加载指令ML或矩阵搬运指令MMOVE中的一个或任意组合;
所述操作域存储所述MMV的矩阵数据和向量数据的立即数或寄存器号;所述MMV,用于从存储器的指定地址取出指定大小的矩阵数据和向量数据,并将该矩阵数据和向量数据执行矩阵乘向量计算,将该计算结果写回至所述存储器;
或所述操作域存储所述MMV的矩阵数据和向量数据;所述VMM,用于从存储器的指定地址取出指定长度的向量数据和矩阵数据,进行向量乘矩阵的乘法运算,将该计算结果写回至存储器;
或所述操作域存储所述VMS的矩阵数据;所述VMS,用于从存储器的指定地址取出指定长度的矩阵数据,从标量寄存器堆的指定地址中取出标量数据,进行标量乘矩阵数据的乘法运算,将计算结果写回存储器;
或所述操作域存储所述TENS的两块矩阵数据,所述TENS,用于从存储器的两个指定地址分别取出指定大小的两块矩阵数据,对两矩阵数据进行张量运算,并将计算结果写回至存储器;
或所述操作域存储两块矩阵数据;所述MA,用于从存储器的两个指定地址取出分别取出指定大小的两块矩阵数据,对两矩阵进行加法运算,并将计算结果写回至存储器;
或所述操作域存储两块矩阵数据;所述MS,用于从存储器的两个指定地址取出分别取出指定大小的两块矩阵数据,对两矩阵进行减法运算,并将计算结果写回至存储器;
或所述操作域包括:向量数据以及矩阵数据;所述MR,用于从存储器的指定地址取出指定大小的向量数据以及指定大小的矩阵数据,所述向量数据是索引向量,输出的向量中的第i个元素是以索引向量的第i个元素作为索引,在矩阵数据的第i列中找到的数,将所述输出向量写回至存储器;
或所述ML,用于从指定外部源地址载入指定大小的数据至存储器的指定地址;
或所述MS,用于将存储器的指定地址的指定大小的矩阵数据存至外部目的地址;
所述MMOVE,用于将存储器的指定地址的指定大小的矩阵数据存至存储器的另一指定地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710927307.XA CN109284130B (zh) | 2017-07-20 | 2017-07-20 | 神经网络运算装置及方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710927307.XA CN109284130B (zh) | 2017-07-20 | 2017-07-20 | 神经网络运算装置及方法 |
CN201710595951.1A CN107992329B (zh) | 2017-07-20 | 2017-07-20 | 一种计算方法及相关产品 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710595951.1A Division CN107992329B (zh) | 2017-07-20 | 2017-07-20 | 一种计算方法及相关产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109284130A CN109284130A (zh) | 2019-01-29 |
CN109284130B true CN109284130B (zh) | 2021-03-23 |
Family
ID=61067110
Family Applications (18)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710927307.XA Active CN109284130B (zh) | 2017-07-20 | 2017-07-20 | 神经网络运算装置及方法 |
CN201710927338.5A Active CN107608715B (zh) | 2017-07-20 | 2017-07-20 | 用于执行人工神经网络正向运算的装置及方法 |
CN201710927336.6A Active CN107729989B (zh) | 2017-07-20 | 2017-07-20 | 一种用于执行人工神经网络正向运算的装置及方法 |
CN201710928261.3A Active CN107729990B (zh) | 2017-07-20 | 2017-07-20 | 支持离散数据表示的用于执行正向运算的装置及方法 |
CN201710927526.8A Active CN107844322B (zh) | 2017-07-20 | 2017-07-20 | 用于执行人工神经网络正向运算的装置和方法 |
CN201710927267.9A Active CN107832082B (zh) | 2017-07-20 | 2017-07-20 | 一种用于执行人工神经网络正向运算的装置和方法 |
CN201710928125.4A Active CN107807819B (zh) | 2017-07-20 | 2017-07-20 | 一种支持离散数据表示的用于执行人工神经网络正向运算的装置及方法 |
CN201710595951.1A Active CN107992329B (zh) | 2017-07-20 | 2017-07-20 | 一种计算方法及相关产品 |
CN201710927144.5A Active CN109284822B (zh) | 2017-07-20 | 2017-07-20 | 一种神经网络运算装置及方法 |
CN201911058840.2A Active CN110825434B (zh) | 2017-07-20 | 2018-07-13 | 计算装置及计算方法 |
CN202010189355.5A Active CN111176727B (zh) | 2017-07-20 | 2018-07-13 | 计算装置以及计算方法 |
CN202010189417.2A Active CN111221578B (zh) | 2017-07-20 | 2018-07-13 | 计算装置以及计算方法 |
CN201911058837.0A Active CN110688159B (zh) | 2017-07-20 | 2018-07-13 | 神经网络任务处理系统 |
CN201911058620.XA Active CN110688157B (zh) | 2017-07-20 | 2018-07-13 | 一种计算装置及计算方法 |
CN201911057705.6A Active CN110597558B (zh) | 2017-07-20 | 2018-07-13 | 一种神经网络任务处理系统 |
CN201911069248.2A Active CN110597559B (zh) | 2017-07-20 | 2018-07-13 | 计算装置以及计算方法 |
CN201880004680.0A Active CN110036369B (zh) | 2017-07-20 | 2018-07-13 | 一种计算方法及相关产品 |
CN201911058836.6A Active CN110688158B (zh) | 2017-07-20 | 2018-07-13 | 计算装置以及神经网络的处理系统 |
Family Applications After (17)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710927338.5A Active CN107608715B (zh) | 2017-07-20 | 2017-07-20 | 用于执行人工神经网络正向运算的装置及方法 |
CN201710927336.6A Active CN107729989B (zh) | 2017-07-20 | 2017-07-20 | 一种用于执行人工神经网络正向运算的装置及方法 |
CN201710928261.3A Active CN107729990B (zh) | 2017-07-20 | 2017-07-20 | 支持离散数据表示的用于执行正向运算的装置及方法 |
CN201710927526.8A Active CN107844322B (zh) | 2017-07-20 | 2017-07-20 | 用于执行人工神经网络正向运算的装置和方法 |
CN201710927267.9A Active CN107832082B (zh) | 2017-07-20 | 2017-07-20 | 一种用于执行人工神经网络正向运算的装置和方法 |
CN201710928125.4A Active CN107807819B (zh) | 2017-07-20 | 2017-07-20 | 一种支持离散数据表示的用于执行人工神经网络正向运算的装置及方法 |
CN201710595951.1A Active CN107992329B (zh) | 2017-07-20 | 2017-07-20 | 一种计算方法及相关产品 |
CN201710927144.5A Active CN109284822B (zh) | 2017-07-20 | 2017-07-20 | 一种神经网络运算装置及方法 |
CN201911058840.2A Active CN110825434B (zh) | 2017-07-20 | 2018-07-13 | 计算装置及计算方法 |
CN202010189355.5A Active CN111176727B (zh) | 2017-07-20 | 2018-07-13 | 计算装置以及计算方法 |
CN202010189417.2A Active CN111221578B (zh) | 2017-07-20 | 2018-07-13 | 计算装置以及计算方法 |
CN201911058837.0A Active CN110688159B (zh) | 2017-07-20 | 2018-07-13 | 神经网络任务处理系统 |
CN201911058620.XA Active CN110688157B (zh) | 2017-07-20 | 2018-07-13 | 一种计算装置及计算方法 |
CN201911057705.6A Active CN110597558B (zh) | 2017-07-20 | 2018-07-13 | 一种神经网络任务处理系统 |
CN201911069248.2A Active CN110597559B (zh) | 2017-07-20 | 2018-07-13 | 计算装置以及计算方法 |
CN201880004680.0A Active CN110036369B (zh) | 2017-07-20 | 2018-07-13 | 一种计算方法及相关产品 |
CN201911058836.6A Active CN110688158B (zh) | 2017-07-20 | 2018-07-13 | 计算装置以及神经网络的处理系统 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11481215B2 (zh) |
EP (1) | EP3686734A4 (zh) |
CN (18) | CN109284130B (zh) |
WO (1) | WO2019015541A1 (zh) |
Families Citing this family (180)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018214913A1 (zh) * | 2017-05-23 | 2018-11-29 | 上海寒武纪信息科技有限公司 | 处理方法及加速装置 |
WO2019001418A1 (zh) | 2017-06-26 | 2019-01-03 | 上海寒武纪信息科技有限公司 | 数据共享系统及其数据共享方法 |
CN110413551B (zh) | 2018-04-28 | 2021-12-10 | 上海寒武纪信息科技有限公司 | 信息处理装置、方法及设备 |
CN110619390A (zh) * | 2018-06-20 | 2019-12-27 | 上海寒武纪信息科技有限公司 | 用于执行生成对抗网络的处理装置及应用其进行机器创作的方法 |
CN109214616B (zh) | 2017-06-29 | 2023-04-07 | 上海寒武纪信息科技有限公司 | 一种信息处理装置、系统和方法 |
CN109426553A (zh) | 2017-08-21 | 2019-03-05 | 上海寒武纪信息科技有限公司 | 任务切分装置及方法、任务处理装置及方法、多核处理器 |
CN109284130B (zh) * | 2017-07-20 | 2021-03-23 | 上海寒武纪信息科技有限公司 | 神经网络运算装置及方法 |
US11437032B2 (en) | 2017-09-29 | 2022-09-06 | Shanghai Cambricon Information Technology Co., Ltd | Image processing apparatus and method |
CN109902810B (zh) | 2017-12-11 | 2020-05-22 | 中科寒武纪科技股份有限公司 | 神经网络运算设备和方法 |
WO2019114842A1 (zh) * | 2017-12-14 | 2019-06-20 | 北京中科寒武纪科技有限公司 | 一种集成电路芯片装置 |
CN108229671B (zh) * | 2018-01-16 | 2022-03-04 | 华南理工大学 | 一种降低加速器外部数据存储带宽需求的系统和方法 |
CN108388446A (zh) * | 2018-02-05 | 2018-08-10 | 上海寒武纪信息科技有限公司 | 运算模块以及方法 |
CN110147249B (zh) * | 2018-02-12 | 2021-02-09 | 上海寒武纪信息科技有限公司 | 一种网络模型的计算方法及装置 |
CN110163349B (zh) * | 2018-02-12 | 2021-03-23 | 上海寒武纪信息科技有限公司 | 一种网络模型的计算方法及装置 |
US11630666B2 (en) | 2018-02-13 | 2023-04-18 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
CN110163350B (zh) * | 2018-02-13 | 2021-06-08 | 上海寒武纪信息科技有限公司 | 一种计算装置及方法 |
US11106598B2 (en) | 2018-02-13 | 2021-08-31 | Shanghai Cambricon Information Technology Co., Ltd. | Computing device and method |
CN110163357B (zh) * | 2018-02-13 | 2021-06-25 | 上海寒武纪信息科技有限公司 | 一种计算装置及方法 |
EP3651075B1 (en) * | 2018-02-13 | 2021-10-27 | Shanghai Cambricon Information Technology Co., Ltd | Computation device and method |
US11663002B2 (en) | 2018-02-13 | 2023-05-30 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
CN116991226A (zh) | 2018-02-14 | 2023-11-03 | 上海寒武纪信息科技有限公司 | 处理器的控制装置、方法及设备 |
CN110197272B (zh) * | 2018-02-27 | 2020-08-25 | 上海寒武纪信息科技有限公司 | 集成电路芯片装置及相关产品 |
CN111626413A (zh) * | 2018-03-14 | 2020-09-04 | 上海寒武纪信息科技有限公司 | 一种计算装置及方法 |
CN108520296B (zh) * | 2018-03-20 | 2020-05-15 | 福州瑞芯微电子股份有限公司 | 一种基于深度学习芯片动态cache分配的方法和装置 |
CN110363279B (zh) * | 2018-03-26 | 2021-09-21 | 华为技术有限公司 | 基于卷积神经网络模型的图像处理方法和装置 |
CN110413255B (zh) * | 2018-04-28 | 2022-08-19 | 赛灵思电子科技(北京)有限公司 | 人工神经网络调整方法和装置 |
CN108647184B (zh) * | 2018-05-10 | 2022-04-12 | 杭州雄迈集成电路技术股份有限公司 | 一种动态比特位卷积乘法实现方法 |
CN110472734B (zh) * | 2018-05-11 | 2024-03-29 | 上海寒武纪信息科技有限公司 | 一种计算装置及相关产品 |
CN111368987B (zh) * | 2018-12-25 | 2023-03-24 | 上海寒武纪信息科技有限公司 | 一种神经网络计算装置和方法 |
EP3624020A4 (en) | 2018-05-18 | 2021-05-05 | Shanghai Cambricon Information Technology Co., Ltd | CALCULATION PROCEDURES AND RELATED PRODUCTS |
CN110147872B (zh) * | 2018-05-18 | 2020-07-17 | 中科寒武纪科技股份有限公司 | 编码存储装置及方法、处理器及训练方法 |
CN110503179B (zh) * | 2018-05-18 | 2024-03-01 | 上海寒武纪信息科技有限公司 | 计算方法以及相关产品 |
CN111010883B (zh) * | 2018-08-06 | 2022-07-12 | 华为技术有限公司 | 矩阵的处理方法、装置及逻辑电路 |
CN108960418A (zh) * | 2018-08-08 | 2018-12-07 | 上海寒武纪信息科技有限公司 | 神经网络处理装置及其执行矩阵向量乘指令的方法 |
CN109189715B (zh) * | 2018-08-16 | 2022-03-15 | 北京算能科技有限公司 | 可编程人工智能加速器执行单元及人工智能加速方法 |
WO2020042739A1 (zh) * | 2018-08-28 | 2020-03-05 | 中科寒武纪科技股份有限公司 | 数据预处理方法、装置、计算机设备和存储介质 |
CN109242091B (zh) * | 2018-09-03 | 2022-03-22 | 郑州云海信息技术有限公司 | 图像识别方法、装置、设备及可读存储介质 |
CN110929838B (zh) * | 2018-09-19 | 2023-09-26 | 杭州海康威视数字技术股份有限公司 | 神经网络中位宽定点化方法、装置、终端和存储介质 |
CN110941789B (zh) * | 2018-09-21 | 2023-12-15 | 北京地平线机器人技术研发有限公司 | 张量运算方法和装置 |
WO2020062392A1 (zh) | 2018-09-28 | 2020-04-02 | 上海寒武纪信息科技有限公司 | 信号处理装置、信号处理方法及相关产品 |
CN110968532B (zh) * | 2018-09-29 | 2021-09-21 | 上海寒武纪信息科技有限公司 | 数据传输方法及相关产品 |
EP3839781A4 (en) * | 2018-10-02 | 2022-04-06 | Nippon Telegraph And Telephone Corporation | CALCULATION DEVICE, METHOD AND PROGRAM |
US11494625B2 (en) | 2018-10-03 | 2022-11-08 | Maxim Integrated Products, Inc. | Systems and methods for energy-efficient analog matrix multiplication for machine learning processes |
WO2020073925A1 (zh) * | 2018-10-09 | 2020-04-16 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111222633A (zh) * | 2018-11-23 | 2020-06-02 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN111047028A (zh) * | 2018-10-12 | 2020-04-21 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN111047027A (zh) * | 2018-10-12 | 2020-04-21 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN111353595A (zh) * | 2018-12-20 | 2020-06-30 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN111353124A (zh) * | 2018-12-20 | 2020-06-30 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
WO2020073923A1 (zh) * | 2018-10-09 | 2020-04-16 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111047005A (zh) * | 2018-10-11 | 2020-04-21 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111124497B (zh) * | 2018-10-11 | 2022-03-29 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111026440B (zh) * | 2018-10-09 | 2022-03-29 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111047030A (zh) * | 2018-10-11 | 2020-04-21 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN110096309B (zh) * | 2018-11-14 | 2020-04-14 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111353125B (zh) * | 2018-12-20 | 2022-04-22 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111045729A (zh) * | 2018-10-12 | 2020-04-21 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN111275197B (zh) * | 2018-12-05 | 2023-11-10 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN110096283A (zh) * | 2018-10-12 | 2019-08-06 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN110096310B (zh) * | 2018-11-14 | 2021-09-03 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111290789B (zh) * | 2018-12-06 | 2022-05-27 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111290788B (zh) * | 2018-12-07 | 2022-05-31 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111061507A (zh) * | 2018-10-16 | 2020-04-24 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111047024B (zh) * | 2018-10-12 | 2023-05-23 | 上海寒武纪信息科技有限公司 | 一种计算装置及相关产品 |
CN111047023B (zh) * | 2018-10-12 | 2023-11-24 | 上海寒武纪信息科技有限公司 | 一种计算装置及相关产品 |
CN111079908B (zh) * | 2018-10-18 | 2024-02-13 | 上海寒武纪信息科技有限公司 | 片上网络数据处理方法、存储介质、计算机设备和装置 |
CN111209243B (zh) * | 2018-11-21 | 2022-12-02 | 上海寒武纪信息科技有限公司 | 数据处理装置、方法及相关产品 |
CN111210011B (zh) * | 2018-11-21 | 2022-12-02 | 上海寒武纪信息科技有限公司 | 数据处理装置及相关产品 |
EP4009183A1 (en) | 2018-10-18 | 2022-06-08 | Shanghai Cambricon Information Technology Co., Ltd | Network-on-chip data processing method and device |
CN111210012B (zh) * | 2018-11-21 | 2022-12-09 | 上海寒武纪信息科技有限公司 | 数据处理方法、装置及相关产品 |
CN111078624B (zh) * | 2018-10-18 | 2022-03-25 | 上海寒武纪信息科技有限公司 | 片上网络处理系统和片上网络数据处理方法 |
CN111209245B (zh) * | 2018-11-21 | 2021-11-16 | 上海寒武纪信息科技有限公司 | 数据处理装置、方法及相关产品 |
CN111078623B (zh) * | 2018-10-18 | 2022-03-29 | 上海寒武纪信息科技有限公司 | 片上网络处理系统和片上网络数据处理方法 |
CN111209230B (zh) * | 2018-11-21 | 2021-08-31 | 上海寒武纪信息科技有限公司 | 数据处理装置、方法及相关产品 |
CN111078625B (zh) * | 2018-10-18 | 2022-03-29 | 上海寒武纪信息科技有限公司 | 片上网络处理系统和片上网络数据处理方法 |
CN111209244B (zh) * | 2018-11-21 | 2022-05-06 | 上海寒武纪信息科技有限公司 | 数据处理装置及相关产品 |
CN111209231B (zh) * | 2018-11-21 | 2021-05-11 | 上海寒武纪信息科技有限公司 | 数据处理方法、装置及相关产品 |
CN111078291B (zh) * | 2018-10-19 | 2021-02-09 | 中科寒武纪科技股份有限公司 | 运算方法、系统及相关产品 |
CN111078282B (zh) * | 2018-10-19 | 2020-12-22 | 安徽寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN111078284B (zh) * | 2018-10-19 | 2021-02-05 | 中科寒武纪科技股份有限公司 | 运算方法、系统及相关产品 |
CN111079912B (zh) * | 2018-10-19 | 2021-02-12 | 中科寒武纪科技股份有限公司 | 运算方法、系统及相关产品 |
CN111079909B (zh) * | 2018-10-19 | 2021-01-26 | 安徽寒武纪信息科技有限公司 | 运算方法、系统及相关产品 |
CN111078280B (zh) * | 2018-10-19 | 2021-01-26 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN111079913B (zh) * | 2018-10-19 | 2021-02-05 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN111078286B (zh) * | 2018-10-19 | 2023-09-01 | 上海寒武纪信息科技有限公司 | 数据通信方法、计算系统和存储介质 |
CN109669773B (zh) * | 2018-11-12 | 2024-03-08 | 平安科技(深圳)有限公司 | 金融数据处理方法、装置、设备和存储介质 |
CN111191774B (zh) * | 2018-11-14 | 2023-04-07 | 上海富瀚微电子股份有限公司 | 面向精简卷积神经网络的低代价加速器架构及其处理方法 |
CN111260070B (zh) * | 2018-11-30 | 2022-11-29 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN109583579B (zh) * | 2018-11-30 | 2021-04-09 | 上海寒武纪信息科技有限公司 | 计算装置及相关产品 |
CN109558110B (zh) * | 2018-11-30 | 2021-06-01 | 上海寒武纪信息科技有限公司 | 数据转换装置及相关产品 |
CN111381871B (zh) * | 2018-12-28 | 2022-12-09 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN111258935B (zh) * | 2018-11-30 | 2022-01-25 | 上海寒武纪信息科技有限公司 | 数据传输装置和方法 |
CN111258641B (zh) * | 2018-11-30 | 2022-12-09 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
US11573765B2 (en) * | 2018-12-13 | 2023-02-07 | Advanced Micro Devices, Inc. | Fused convolution and batch normalization for neural networks |
CN109684087B (zh) * | 2018-12-17 | 2020-01-10 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN109635944B (zh) * | 2018-12-24 | 2020-10-27 | 西安交通大学 | 一种稀疏卷积神经网络加速器及实现方法 |
CN111368985B (zh) * | 2018-12-25 | 2023-11-28 | 上海寒武纪信息科技有限公司 | 一种神经网络计算装置和方法 |
CN111368990B (zh) * | 2018-12-25 | 2023-03-07 | 上海寒武纪信息科技有限公司 | 一种神经网络计算装置和方法 |
CN111368967B (zh) * | 2018-12-25 | 2023-04-07 | 上海寒武纪信息科技有限公司 | 一种神经网络计算装置和方法 |
CN111367567B (zh) * | 2018-12-25 | 2023-03-07 | 上海寒武纪信息科技有限公司 | 一种神经网络计算装置和方法 |
CN111385462A (zh) | 2018-12-28 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 信号处理装置、信号处理方法及相关产品 |
CN111488976B (zh) * | 2019-01-28 | 2023-06-30 | 中科寒武纪科技股份有限公司 | 神经网络计算装置、神经网络计算方法及相关产品 |
CN111506522B (zh) * | 2019-01-31 | 2023-04-18 | 阿里巴巴集团控股有限公司 | 数据处理设备及方法 |
CN111523652B (zh) * | 2019-02-01 | 2023-05-02 | 阿里巴巴集团控股有限公司 | 处理器及其数据处理方法、摄像装置 |
CN109902819B (zh) * | 2019-02-12 | 2023-04-18 | Oppo广东移动通信有限公司 | 神经网络计算方法、装置、移动终端及存储介质 |
US20200264891A1 (en) * | 2019-02-20 | 2020-08-20 | Nanjing Iluvatar CoreX Technology Co., Ltd. (DBA “Iluvatar CoreX Inc. Nanjing”) | Constant scalar register architecture for acceleration of delay sensitive algorithm |
CN109993293B (zh) * | 2019-02-28 | 2021-04-13 | 中山大学 | 一种适用于堆叠式沙漏网络的深度学习加速器 |
CN109885407B (zh) * | 2019-03-05 | 2021-09-21 | 上海商汤智能科技有限公司 | 数据处理方法和装置、电子设备、存储介质 |
CN111695686B (zh) * | 2019-03-15 | 2022-11-01 | 上海寒武纪信息科技有限公司 | 地址分配方法及装置 |
CN111723920A (zh) * | 2019-03-22 | 2020-09-29 | 中科寒武纪科技股份有限公司 | 人工智能计算装置及相关产品 |
WO2020192587A1 (zh) * | 2019-03-22 | 2020-10-01 | 中科寒武纪科技股份有限公司 | 人工智能计算装置及相关产品 |
WO2020200250A1 (zh) * | 2019-04-02 | 2020-10-08 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
US10698842B1 (en) * | 2019-04-10 | 2020-06-30 | Xilinx, Inc. | Domain assist processor-peer for coherent acceleration |
CN111832737B (zh) | 2019-04-18 | 2024-01-09 | 中科寒武纪科技股份有限公司 | 一种数据处理方法及相关产品 |
US20200334522A1 (en) | 2019-04-18 | 2020-10-22 | Cambricon Technologies Corporation Limited | Data processing method and related products |
WO2020220935A1 (zh) * | 2019-04-27 | 2020-11-05 | 中科寒武纪科技股份有限公司 | 运算装置 |
CN111860799A (zh) * | 2019-04-27 | 2020-10-30 | 中科寒武纪科技股份有限公司 | 运算装置 |
CN110298441B (zh) * | 2019-05-24 | 2022-01-11 | 深圳云天励飞技术有限公司 | 一种数据处理方法、电子装置及计算机可读存储介质 |
CN112068799B (zh) * | 2019-06-11 | 2022-08-02 | 云南大学 | 一种最优带符号二进制快速计算方法以及椭圆曲线标量乘法 |
CN112085184B (zh) | 2019-06-12 | 2024-03-29 | 上海寒武纪信息科技有限公司 | 量化参数调整方法、装置及相关产品 |
US11676029B2 (en) | 2019-06-12 | 2023-06-13 | Shanghai Cambricon Information Technology Co., Ltd | Neural network quantization parameter determination method and related products |
CN110245750B (zh) * | 2019-06-14 | 2022-07-15 | 西南科技大学 | 一种基于fpga的神经网络数值模拟方法 |
CN110390383B (zh) * | 2019-06-25 | 2021-04-06 | 东南大学 | 一种基于幂指数量化的深度神经网络硬件加速器 |
CN112168140B (zh) * | 2019-07-05 | 2021-07-13 | 山东大学齐鲁医院 | 基于人工智能芯片的穿戴式生物信息监测设备及方法 |
WO2021004076A1 (zh) * | 2019-07-05 | 2021-01-14 | 山东大学 | 基于人工智能芯片的适形穿戴式生物信息监测设备及系统 |
CN110348021B (zh) * | 2019-07-17 | 2021-05-18 | 湖北亿咖通科技有限公司 | 基于命名实体模型的字符串识别方法、电子设备、存储介质 |
CN114144793A (zh) * | 2019-08-05 | 2022-03-04 | 华为技术有限公司 | 数据传输方法、装置、电子设备及可读存储介质 |
CN112346707A (zh) * | 2019-08-07 | 2021-02-09 | 上海寒武纪信息科技有限公司 | 指令处理方法、装置及相关产品 |
CN110728365B (zh) * | 2019-09-12 | 2022-04-01 | 东南大学 | 多位宽pe阵列计算位宽的选择方法及计算精度控制电路 |
US11579802B2 (en) * | 2019-10-04 | 2023-02-14 | Fungible, Inc. | Pipeline using match-action blocks |
CN112667288A (zh) * | 2019-10-15 | 2021-04-16 | 北京希姆计算科技有限公司 | 数据运算电路、数据处理装置、芯片、卡板及电子设备 |
CN114365147A (zh) * | 2019-10-22 | 2022-04-15 | 深圳鲲云信息科技有限公司 | 神经网络计算压缩方法、系统及存储介质 |
CN111080400B (zh) * | 2019-11-25 | 2023-04-18 | 中山大学 | 一种基于门控图卷积网络的商品推荐方法及系统、存储介质 |
CN110989970B (zh) * | 2019-11-27 | 2023-04-11 | 广州海格通信集团股份有限公司 | 一种双精度浮点矩阵运算处理器及方法 |
CN111091181B (zh) * | 2019-12-09 | 2023-09-05 | Oppo广东移动通信有限公司 | 卷积处理单元、神经网络处理器、电子设备及卷积运算方法 |
CN111124500B (zh) * | 2019-12-12 | 2022-03-08 | 浪潮(北京)电子信息产业有限公司 | 一种指令执行方法、装置、设备及存储介质 |
CN111104513B (zh) * | 2019-12-13 | 2023-05-02 | 中山大学 | 一种游戏平台用户问答业务的短文本分类方法 |
CN111026445A (zh) * | 2019-12-17 | 2020-04-17 | 湖南长城银河科技有限公司 | 一种智能识别方法及芯片 |
CN111242293B (zh) * | 2020-01-13 | 2023-07-18 | 腾讯科技(深圳)有限公司 | 一种处理部件、数据处理的方法以及电子设备 |
CN111221479B (zh) * | 2020-01-19 | 2022-08-05 | 苏州浪潮智能科技有限公司 | 一种判断存储容量变化量异常的方法、系统及存储介质 |
US20210295134A1 (en) * | 2020-03-18 | 2021-09-23 | Infineon Technologies Ag | Artificial neural network activation function |
CN111507473B (zh) * | 2020-04-20 | 2023-05-12 | 上海交通大学 | 一种基于Crossbar架构的剪枝方法及系统 |
US11450672B2 (en) * | 2020-04-27 | 2022-09-20 | Intel Corporation | Ultra-deep compute static random access memory with high compute throughput and multi-directional data propagation |
CN111522776B (zh) * | 2020-04-27 | 2022-04-05 | 西安交通大学 | 一种计算架构 |
CN113626080B (zh) * | 2020-05-08 | 2023-10-03 | 安徽寒武纪信息科技有限公司 | 数据处理装置以及相关产品 |
CN113626082A (zh) * | 2020-05-08 | 2021-11-09 | 安徽寒武纪信息科技有限公司 | 数据处理方法及装置以及相关产品 |
CN113807507A (zh) * | 2020-06-16 | 2021-12-17 | 安徽寒武纪信息科技有限公司 | 数据处理方法及装置以及相关产品 |
CN111832718B (zh) * | 2020-06-24 | 2021-08-03 | 上海西井信息科技有限公司 | 芯片架构 |
CN111783954B (zh) * | 2020-06-30 | 2023-05-02 | 安徽寒武纪信息科技有限公司 | 一种用于确定神经网络的性能的方法、电子设备和存储介质 |
CN113867793A (zh) * | 2020-06-30 | 2021-12-31 | 上海寒武纪信息科技有限公司 | 计算装置、集成电路芯片、板卡、电子设备和计算方法 |
CN113867799A (zh) * | 2020-06-30 | 2021-12-31 | 上海寒武纪信息科技有限公司 | 计算装置、集成电路芯片、板卡、电子设备和计算方法 |
CN113867800A (zh) * | 2020-06-30 | 2021-12-31 | 上海寒武纪信息科技有限公司 | 计算装置、集成电路芯片、板卡、电子设备和计算方法 |
US11823035B2 (en) | 2020-07-07 | 2023-11-21 | Qualcomm Incorporated | Power-efficient compute-in-memory pooling |
CN111651207B (zh) * | 2020-08-06 | 2020-11-17 | 腾讯科技(深圳)有限公司 | 一种神经网络模型运算芯片、方法、装置、设备及介质 |
CN111930506A (zh) * | 2020-08-13 | 2020-11-13 | 山东云海国创云计算装备产业创新中心有限公司 | 一种矩阵调度方法及相关装置 |
WO2022040643A1 (en) * | 2020-08-21 | 2022-02-24 | Fu Zhi Sing | Processing unit architectures and techniques for reusable instructions and data |
KR20220034542A (ko) * | 2020-09-11 | 2022-03-18 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
CN112259071A (zh) * | 2020-09-22 | 2021-01-22 | 北京百度网讯科技有限公司 | 语音处理系统、语音处理方法、电子设备和可读存储介质 |
CN112257859A (zh) * | 2020-10-30 | 2021-01-22 | 地平线(上海)人工智能技术有限公司 | 特征数据处理方法及装置、设备、存储介质 |
CN112036554B (zh) * | 2020-11-04 | 2021-04-06 | 深圳追一科技有限公司 | 神经网络模型的处理方法、装置、计算机设备和存储介质 |
CN112711218B (zh) * | 2020-12-08 | 2022-03-15 | 杭州电子科技大学上虞科学与工程研究院有限公司 | 一种工业设备数据采集的方法 |
CN112506436B (zh) * | 2020-12-11 | 2023-01-31 | 西北工业大学 | 用于卷积神经网络加速器的高效率数据动态存储分配方法 |
CN112783556B (zh) * | 2021-01-06 | 2023-04-07 | 南阳理工学院 | 信息处理方法、信息处理装置及终端设备 |
CN115271047A (zh) * | 2021-04-29 | 2022-11-01 | 华为技术有限公司 | 一种数据处理方法及装置 |
CN113469326B (zh) * | 2021-06-24 | 2024-04-02 | 上海寒武纪信息科技有限公司 | 在神经网络模型中执行剪枝优化的集成电路装置及板卡 |
CN113806285A (zh) * | 2021-09-18 | 2021-12-17 | 北京爱芯科技有限公司 | 一种数据处理模组、芯片和数据处理方法 |
CN114237612A (zh) * | 2021-12-03 | 2022-03-25 | 龙芯中科技术股份有限公司 | 程序代码的编译方法、装置、电子设备及存储介质 |
CN114296798A (zh) * | 2021-12-10 | 2022-04-08 | 龙芯中科技术股份有限公司 | 向量移位方法、处理器及电子设备 |
CN114372012B (zh) * | 2021-12-21 | 2024-02-20 | 中国科学院深圳先进技术研究院 | 一种通用、可配置的高能效池化计算单行输出系统和方法 |
CN114265872B (zh) * | 2022-02-24 | 2022-05-24 | 苏州浪潮智能科技有限公司 | 一种用于总线的互联装置 |
CN114726512B (zh) * | 2022-03-08 | 2024-03-26 | 支付宝(杭州)信息技术有限公司 | 数据处理方法和装置 |
CN114692833B (zh) * | 2022-03-30 | 2023-11-21 | 广东齐芯半导体有限公司 | 一种卷积计算电路、神经网络处理器以及卷积计算方法 |
CN114818803A (zh) * | 2022-04-25 | 2022-07-29 | 上海韶脑传感技术有限公司 | 基于神经元优化的单侧肢体患者运动想象脑电建模方法 |
CN115390654A (zh) * | 2022-08-11 | 2022-11-25 | Oppo广东移动通信有限公司 | 降低功耗的方法、处理器、电子设备及存储介质 |
KR20240033565A (ko) * | 2022-09-05 | 2024-03-12 | 리벨리온 주식회사 | 뉴럴 프로세싱 장치, 그에 포함되는 프로세싱 엘리먼트 및 뉴럴 프로세싱 장치의 다양한 포맷 연산 방법 |
CN115203126B (zh) * | 2022-09-15 | 2023-04-18 | 太初(无锡)电子科技有限公司 | 一种算子融合处理方法、装置、设备及存储介质 |
CN115934768A (zh) * | 2022-12-01 | 2023-04-07 | 摩尔线程智能科技(北京)有限责任公司 | 数据的处理方法、显示适配器、电子设备及存储介质 |
CN115826910B (zh) * | 2023-02-07 | 2023-05-02 | 成都申威科技有限责任公司 | 一种向量定点的alu处理系统 |
CN116055049B (zh) * | 2023-04-03 | 2023-07-04 | 富算科技(上海)有限公司 | 多方安全计算方法、装置、系统、电子设备和存储介质 |
CN116360858B (zh) * | 2023-05-26 | 2023-08-29 | 摩尔线程智能科技(北京)有限责任公司 | 数据的处理方法、图形处理器、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101916180A (zh) * | 2010-08-11 | 2010-12-15 | 中国科学院计算技术研究所 | Risc处理器中执行寄存器类型指令的方法和其系统 |
CN105512723A (zh) * | 2016-01-20 | 2016-04-20 | 南京艾溪信息科技有限公司 | 一种用于稀疏连接的人工神经网络计算装置和方法 |
CN106066783A (zh) * | 2016-06-02 | 2016-11-02 | 华为技术有限公司 | 基于幂次权重量化的神经网络前向运算硬件结构 |
Family Cites Families (89)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1013070B (zh) * | 1988-01-09 | 1991-07-03 | 北京信通电脑技术公司 | 直接处理接近数学公式的″机器表达式″的计算机系统 |
US5083285A (en) * | 1988-10-11 | 1992-01-21 | Kabushiki Kaisha Toshiba | Matrix-structured neural network with learning circuitry |
US5327537A (en) * | 1990-03-13 | 1994-07-05 | At&T Bell Laboratories | Apparatus for controlling instruction execution in a pipelined processor |
GB2288521B (en) * | 1994-03-24 | 1998-10-14 | Discovision Ass | Reconfigurable process stage |
US5956703A (en) * | 1995-07-28 | 1999-09-21 | Delco Electronics Corporation | Configurable neural network integrated circuit |
US5717891A (en) | 1995-10-12 | 1998-02-10 | Analog Devices, Inc. | Digital signal processor with caching of instructions that produce a memory conflict |
US5889985A (en) * | 1996-08-07 | 1999-03-30 | Elbrus International | Array prefetch apparatus and method |
CN1302403A (zh) * | 1998-05-22 | 2001-07-04 | 弗兰普顿·E·埃利斯三世 | 全球网络计算机 |
US6941289B2 (en) * | 2001-04-06 | 2005-09-06 | Sas Institute Inc. | Hybrid neural network generation system and method |
JP2005534120A (ja) * | 2002-07-26 | 2005-11-10 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 並列に複数のベクトル要素にアクセスするための装置及び方法 |
US9555052B2 (en) * | 2003-06-13 | 2017-01-31 | Sumathi Paturu | Intrauterine fetal growth restriction—the biochemical rationale of treatment modalities including extraperitoneal transamniotic fetal supplements |
US7539714B2 (en) * | 2003-06-30 | 2009-05-26 | Intel Corporation | Method, apparatus, and instruction for performing a sign operation that multiplies |
US7020769B2 (en) * | 2003-09-30 | 2006-03-28 | Starcore, Llc | Method and system for processing a loop of instructions |
CN101211341A (zh) * | 2006-12-29 | 2008-07-02 | 上海芯盛电子科技有限公司 | 图像智能模式识别搜索方法 |
EP2115583A2 (en) * | 2007-01-30 | 2009-11-11 | Nema Labs Ab | Speculative throughput computing |
CN101021832A (zh) * | 2007-03-19 | 2007-08-22 | 中国人民解放军国防科学技术大学 | 支持局部寄存和条件执行的64位浮点整数融合运算群 |
CN101399977A (zh) * | 2007-09-29 | 2009-04-01 | 智多微电子(上海)有限公司 | 解码装置中控制片内存储器的数据并行读写的方法及装置 |
US8181003B2 (en) * | 2008-05-29 | 2012-05-15 | Axis Semiconductor, Inc. | Instruction set design, control and communication in programmable microprocessor cores and the like |
US20100047768A1 (en) * | 2008-08-18 | 2010-02-25 | J. Craig Venter Institute, Inc. | Amplification of single viral genomes |
US20100122070A1 (en) * | 2008-11-07 | 2010-05-13 | Nokia Corporation | Combined associative and distributed arithmetics for multiple inner products |
CN101644921B (zh) * | 2009-08-05 | 2011-07-20 | 无锡信捷电气有限公司 | 一种改进型板料数控折弯设计方法 |
US8577950B2 (en) * | 2009-08-17 | 2013-11-05 | International Business Machines Corporation | Matrix multiplication operations with data pre-conditioning in a high performance computing architecture |
CN101667114B (zh) * | 2009-09-30 | 2012-07-04 | 西安电子科技大学 | 适于矩阵求逆的超长指令集微处理系统 |
CN101770515B (zh) * | 2010-01-18 | 2012-01-11 | 杭州顺网科技股份有限公司 | 一种基于数据块比较的数据更新方法 |
CN101783805B (zh) * | 2010-03-01 | 2013-04-17 | 田耕 | 一种利用动态矢量矩阵的加密通信方法 |
CN101833441B (zh) * | 2010-04-28 | 2013-02-13 | 中国科学院自动化研究所 | 并行向量处理引擎结构 |
US9129220B2 (en) * | 2010-07-07 | 2015-09-08 | Qualcomm Incorporated | Methods and systems for digital neural processing with discrete-level synapes and probabilistic STDP |
CN101963983A (zh) * | 2010-09-28 | 2011-02-02 | 江苏瑞蚨通软件科技有限公司(中外合资) | 一种粗集优化神经网络的数据挖掘方法 |
SG180028A1 (en) * | 2010-10-12 | 2012-05-30 | St Electronics Info Software Systems Pte Ltd | Information management system and device |
US8515885B2 (en) * | 2010-10-29 | 2013-08-20 | International Business Machines Corporation | Neuromorphic and synaptronic spiking neural network with synaptic weights learned using simulation |
CN102541814B (zh) * | 2010-12-27 | 2015-10-14 | 北京国睿中数科技股份有限公司 | 用于数据通信处理器的矩阵计算装置和方法 |
CN102637157B (zh) * | 2011-02-15 | 2014-12-03 | 郑磊 | 一种片上数字模板系统dtsoc |
US8843425B2 (en) * | 2011-07-29 | 2014-09-23 | International Business Machines Corporation | Hierarchical routing for two-way information flow and structural plasticity in neural networks |
US9916538B2 (en) * | 2012-09-15 | 2018-03-13 | Z Advanced Computing, Inc. | Method and system for feature detection |
FR2980905B1 (fr) * | 2011-09-29 | 2014-03-14 | Continental Automotive France | Procede d'effacement d'informations memorisees dans une memoire reinscriptible non volatile, support de memorisation et calculateur de vehicule automobile |
CN102510282B (zh) * | 2011-10-25 | 2014-07-09 | 中国科学院空间科学与应用研究中心 | 一种时间分辨单光子计数二维成像系统及方法 |
US9960917B2 (en) * | 2011-12-22 | 2018-05-01 | Intel Corporation | Matrix multiply accumulate instruction |
CN102609378B (zh) * | 2012-01-18 | 2016-03-30 | 中国科学院计算技术研究所 | 一种消息式内存访问装置及其访问方法 |
KR20130090147A (ko) * | 2012-02-03 | 2013-08-13 | 안병익 | 신경망 컴퓨팅 장치 및 시스템과 그 방법 |
CN103377033B (zh) * | 2012-04-12 | 2016-01-13 | 无锡江南计算技术研究所 | 运算核心及其指令管理方法 |
CN102880341B (zh) * | 2012-08-29 | 2015-08-05 | 北京集创北方科技有限公司 | 触摸屏数据处理系统、方法及专用alu |
CN103699360B (zh) * | 2012-09-27 | 2016-09-21 | 北京中科晶上科技有限公司 | 一种向量处理器及其进行向量数据存取、交互的方法 |
CN103023839B (zh) * | 2012-12-04 | 2016-12-28 | 温州大学 | 基于输出反馈偏置型复连续反馈神经网络结构的无线光通信系统盲均衡方法 |
US9171029B2 (en) * | 2013-01-31 | 2015-10-27 | International Business Machines Corporation | Performing batches of selective assignments in a vector friendly manner |
CN103246541B (zh) * | 2013-04-27 | 2016-03-23 | 中国人民解放军信息工程大学 | 一种自动并行化多级并行代价评估方法 |
CN103399486B (zh) * | 2013-07-05 | 2016-04-06 | 杭州电子科技大学 | 塑料烘干器温度优化节能控制方法 |
EP2858024A1 (en) * | 2013-10-01 | 2015-04-08 | Enyx SA | An asset management device and method in a hardware platform |
US9582248B2 (en) * | 2014-09-26 | 2017-02-28 | Arm Limited | Standalone floating-point conversion unit |
US20160124651A1 (en) * | 2014-11-03 | 2016-05-05 | Texas Instruments Incorporated | Method for performing random read access to a block of data using parallel lut read instruction in vector processors |
US9996350B2 (en) * | 2014-12-27 | 2018-06-12 | Intel Corporation | Hardware apparatuses and methods to prefetch a multidimensional block of elements from a multidimensional array |
US20170061279A1 (en) * | 2015-01-14 | 2017-03-02 | Intel Corporation | Updating an artificial neural network using flexible fixed point representation |
US10223635B2 (en) * | 2015-01-22 | 2019-03-05 | Qualcomm Incorporated | Model compression and fine-tuning |
US11544214B2 (en) * | 2015-02-02 | 2023-01-03 | Optimum Semiconductor Technologies, Inc. | Monolithic vector processor configured to operate on variable length vectors using a vector length register |
CN104699629B (zh) * | 2015-03-16 | 2017-09-22 | 清华大学 | 共享片上缓存划分装置 |
CN104778026A (zh) * | 2015-04-28 | 2015-07-15 | 浪潮电子信息产业股份有限公司 | 一种带simd的高速数据格式转换部件及转换方法 |
US9633306B2 (en) * | 2015-05-07 | 2017-04-25 | Siemens Healthcare Gmbh | Method and system for approximating deep neural networks for anatomical object detection |
US10083395B2 (en) * | 2015-05-21 | 2018-09-25 | Google Llc | Batch processing in a neural network processor |
US9805303B2 (en) * | 2015-05-21 | 2017-10-31 | Google Inc. | Rotating data for neural network computations |
CN104915322B (zh) * | 2015-06-09 | 2018-05-01 | 中国人民解放军国防科学技术大学 | 一种卷积神经网络硬件加速方法 |
WO2017040049A1 (en) * | 2015-09-01 | 2017-03-09 | Flex Logix Technologies, Inc. | Block memory layout and architecture for programmable logic ic, and method of operating same |
CN106447035B (zh) * | 2015-10-08 | 2019-02-26 | 上海兆芯集成电路有限公司 | 具有可变率执行单元的处理器 |
CN106570559A (zh) * | 2015-10-09 | 2017-04-19 | 阿里巴巴集团控股有限公司 | 一种基于神经网络的数据处理方法和装置 |
CN105224505B (zh) * | 2015-10-29 | 2018-05-25 | 中国人民解放军国防科学技术大学 | 基于矩阵转置操作的fft加速器装置 |
CN105550749A (zh) * | 2015-12-09 | 2016-05-04 | 四川长虹电器股份有限公司 | 一种新型网络拓扑结构的卷积神经网络的构造方法 |
WO2017105517A1 (en) * | 2015-12-18 | 2017-06-22 | Hewlett Packard Enterprise Development Lp | Memristor crossbar arrays to activate processors |
CN105630680B (zh) * | 2015-12-28 | 2018-12-18 | 中国科学院微电子研究所 | 一种随机测试程序生成方法 |
US10762164B2 (en) * | 2016-01-20 | 2020-09-01 | Cambricon Technologies Corporation Limited | Vector and matrix computing device |
CN105844330B (zh) * | 2016-03-22 | 2019-06-28 | 华为技术有限公司 | 神经网络处理器的数据处理方法及神经网络处理器 |
CN105843775B (zh) * | 2016-04-06 | 2018-12-04 | 中国科学院计算技术研究所 | 片上数据划分读写方法、系统及其装置 |
CN105912476A (zh) * | 2016-04-06 | 2016-08-31 | 中国科学院计算技术研究所 | 片上重复寻址的方法及装置 |
US20170337156A1 (en) * | 2016-04-26 | 2017-11-23 | Onnivation Llc | Computing machine architecture for matrix and array processing |
US11740903B2 (en) * | 2016-04-26 | 2023-08-29 | Onnivation, LLC | Computing machine using a matrix space and matrix pointer registers for matrix and array processing |
CN105930281B (zh) * | 2016-05-12 | 2019-01-15 | 清华大学 | 以配置信息驱动数据访存模式匹配的片上缓存预取机制 |
CN106022614A (zh) * | 2016-05-22 | 2016-10-12 | 广州供电局有限公司 | 一种基于最近邻聚类的神经网络数据挖掘方法 |
CN105976024B (zh) * | 2016-06-03 | 2018-12-25 | 福州大学 | 基于rbf的模式分类器及其工作方法 |
CN106203622B (zh) * | 2016-07-14 | 2018-12-25 | 杭州华为数字技术有限公司 | 神经网络运算装置 |
CN106250103A (zh) * | 2016-08-04 | 2016-12-21 | 东南大学 | 一种卷积神经网络循环卷积计算数据重用的系统 |
CN106650922B (zh) * | 2016-09-29 | 2019-05-03 | 清华大学 | 硬件神经网络转换方法、计算装置、软硬件协作系统 |
US10175980B2 (en) * | 2016-10-27 | 2019-01-08 | Google Llc | Neural network compute tile |
CN106599840A (zh) * | 2016-12-13 | 2017-04-26 | 郑州云海信息技术有限公司 | 一种图像识别协处理器、图像识别系统及方法 |
CN106845631B (zh) * | 2016-12-26 | 2020-05-29 | 上海寒武纪信息科技有限公司 | 一种流执行方法及装置 |
CN106775599B (zh) * | 2017-01-09 | 2019-03-01 | 南京工业大学 | 递归神经网络的多计算单元粗粒度可重构系统及方法 |
CN106909971A (zh) * | 2017-02-10 | 2017-06-30 | 华南理工大学 | 一种面向多核计算环境的bp神经网络并行化方法 |
CN106940815B (zh) * | 2017-02-13 | 2020-07-28 | 西安交通大学 | 一种可编程卷积神经网络协处理器ip核 |
CN106951961B (zh) * | 2017-02-24 | 2019-11-26 | 清华大学 | 一种粗粒度可重构的卷积神经网络加速器及系统 |
EP3786786B1 (en) * | 2017-04-19 | 2023-06-07 | Shanghai Cambricon Information Technology Co., Ltd | Processing device, processing method, chip, and electronic apparatus |
CN109284130B (zh) * | 2017-07-20 | 2021-03-23 | 上海寒武纪信息科技有限公司 | 神经网络运算装置及方法 |
US11210063B2 (en) * | 2019-03-27 | 2021-12-28 | Intel Corporation | Machine learning training architecture for programmable devices |
US20200225947A1 (en) * | 2020-03-27 | 2020-07-16 | Sumeet Singh Nagi | Reconfigurable digital signal processing (dsp) vector engine |
-
2017
- 2017-07-20 CN CN201710927307.XA patent/CN109284130B/zh active Active
- 2017-07-20 CN CN201710927338.5A patent/CN107608715B/zh active Active
- 2017-07-20 CN CN201710927336.6A patent/CN107729989B/zh active Active
- 2017-07-20 CN CN201710928261.3A patent/CN107729990B/zh active Active
- 2017-07-20 CN CN201710927526.8A patent/CN107844322B/zh active Active
- 2017-07-20 CN CN201710927267.9A patent/CN107832082B/zh active Active
- 2017-07-20 CN CN201710928125.4A patent/CN107807819B/zh active Active
- 2017-07-20 CN CN201710595951.1A patent/CN107992329B/zh active Active
- 2017-07-20 CN CN201710927144.5A patent/CN109284822B/zh active Active
-
2018
- 2018-07-13 CN CN201911058840.2A patent/CN110825434B/zh active Active
- 2018-07-13 CN CN202010189355.5A patent/CN111176727B/zh active Active
- 2018-07-13 CN CN202010189417.2A patent/CN111221578B/zh active Active
- 2018-07-13 CN CN201911058837.0A patent/CN110688159B/zh active Active
- 2018-07-13 CN CN201911058620.XA patent/CN110688157B/zh active Active
- 2018-07-13 CN CN201911057705.6A patent/CN110597558B/zh active Active
- 2018-07-13 CN CN201911069248.2A patent/CN110597559B/zh active Active
- 2018-07-13 CN CN201880004680.0A patent/CN110036369B/zh active Active
- 2018-07-13 EP EP18835662.0A patent/EP3686734A4/en active Pending
- 2018-07-13 CN CN201911058836.6A patent/CN110688158B/zh active Active
- 2018-07-13 WO PCT/CN2018/095706 patent/WO2019015541A1/zh unknown
-
2020
- 2020-01-17 US US16/745,743 patent/US11481215B2/en active Active
-
2022
- 2022-09-05 US US17/929,730 patent/US20230024840A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101916180A (zh) * | 2010-08-11 | 2010-12-15 | 中国科学院计算技术研究所 | Risc处理器中执行寄存器类型指令的方法和其系统 |
CN105512723A (zh) * | 2016-01-20 | 2016-04-20 | 南京艾溪信息科技有限公司 | 一种用于稀疏连接的人工神经网络计算装置和方法 |
CN106066783A (zh) * | 2016-06-02 | 2016-11-02 | 华为技术有限公司 | 基于幂次权重量化的神经网络前向运算硬件结构 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109284130B (zh) | 神经网络运算装置及方法 | |
CN111310910B (zh) | 一种计算装置及方法 | |
US11249761B2 (en) | Systems and methods for performing matrix compress and decompress instructions | |
CN106990940B (zh) | 一种向量计算装置及运算方法 | |
CN108628807B (zh) | 浮点数矩阵的处理方法、装置、设备及计算机可读存储介质 | |
US20200097799A1 (en) | Heterogeneous multiplier | |
US11175891B2 (en) | Systems and methods to perform floating-point addition with selected rounding | |
US20200210516A1 (en) | Apparatuses, methods, and systems for fast fourier transform configuration and computation instructions | |
US20210318874A1 (en) | Systems for performing instructions to quickly convert and use tiles as 1d vectors | |
KR20100090751A (ko) | 곱셈 기능을 수행하기 위한 방법 및 장치 | |
US20230070579A1 (en) | Systems and methods to skip inconsequential matrix operations | |
US10394930B2 (en) | Binary vector factorization | |
US20230315450A1 (en) | Apparatuses, methods, and systems for 8-bit floating-point matrix dot product instructions | |
KR20210028075A (ko) | 범위-특정 계수 세트를 사용하여 단항 함수를 수행하는 시스템 | |
US20190004997A1 (en) | Binary Multiplier for Binary Vector Factorization | |
US20210279038A1 (en) | Using fuzzy-jbit location of floating-point multiply-accumulate results | |
CN113570053A (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 |