CN110597558A - 一种神经网络任务处理系统 - Google Patents
一种神经网络任务处理系统 Download PDFInfo
- Publication number
- CN110597558A CN110597558A CN201911057705.6A CN201911057705A CN110597558A CN 110597558 A CN110597558 A CN 110597558A CN 201911057705 A CN201911057705 A CN 201911057705A CN 110597558 A CN110597558 A CN 110597558A
- Authority
- CN
- China
- Prior art keywords
- data
- matrix
- unit
- instruction
- operation instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 105
- 238000012545 processing Methods 0.000 title claims abstract description 48
- 239000011159 matrix material Substances 0.000 claims abstract description 254
- 230000015654 memory Effects 0.000 claims abstract description 125
- 238000004364 calculation method Methods 0.000 claims abstract description 86
- 210000002569 neuron Anatomy 0.000 claims description 73
- 238000000034 method Methods 0.000 claims description 59
- 239000013598 vector Substances 0.000 claims description 44
- 238000006243 chemical reaction Methods 0.000 claims description 30
- 239000000872 buffer Substances 0.000 claims description 19
- 210000004205 output neuron Anatomy 0.000 claims description 19
- 210000002364 input neuron Anatomy 0.000 claims description 17
- 230000006870 function Effects 0.000 claims description 7
- 230000003139 buffering effect Effects 0.000 claims description 4
- 239000000284 extract Substances 0.000 claims description 3
- 238000003672 processing method Methods 0.000 claims description 3
- 230000001419 dependent effect Effects 0.000 claims description 2
- 238000011410 subtraction method Methods 0.000 claims description 2
- 239000010410 layer Substances 0.000 description 32
- 238000010586 diagram Methods 0.000 description 30
- 230000008569 process Effects 0.000 description 26
- 238000013500 data storage Methods 0.000 description 8
- 238000012549 training Methods 0.000 description 5
- 230000003993 interaction Effects 0.000 description 4
- 229910002056 binary alloy Inorganic materials 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 3
- 230000001186 cumulative effect Effects 0.000 description 3
- 238000011176 pooling Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 210000000225 synapse Anatomy 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 238000005481 NMR spectroscopy Methods 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000000694 effects Effects 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
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Classifications
-
- 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
- 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/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 or 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- Mathematical Optimization (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Neurology (AREA)
- Probability & Statistics with Applications (AREA)
- Algebra (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请提供了一种神经网络任务处理系统,其特征在于,所述系统包括:n个计算装置,m个反向计算模块、控制模块和互联装置,所述计算装置包括:存储器、寄存器单元、矩阵计算单元和控制单元。
Description
技术领域
本申请属于神经网络运算领域,尤其涉及一种神经网络任务处理系统。
背景技术
数据处理是大部分算法需要经过的步骤或阶段,在计算机引入数据处理领域后,越来越多的数据处理通过计算机来实现,现有的算法中有计算设备在进行神经网络的数据计算时速度慢,效率低。
申请内容
有鉴于此,本申请提供一种神经网络任务处理系统,可提升神经网络任务处理系统的处理速度,提高效率。
本申请提供一种神经网络任务处理系统,其特征在于,所述系统包括:n个计算装置,m个反向计算模块、控制模块和互联装置;
所述控制模块通过所述互联装置与所述n个计算装置和m个反向计算模块连接和通信;
所述计算装置,用于在执行神经网络正向计算;
所述反向计算模块,用于执行神经网络反向计算;
所述计算装置包括:存储器、寄存器单元、矩阵计算单元和控制单元;
所述存储器,用于存储矩阵;
所述寄存器单元,用于存储标量数据,所述标量数据至少包括:所述矩阵在所述存储器内的存储地址;
所述控制单元,用于控制所述矩阵计算单元获取第一运算指令,所述第一运算指令包括执行所述指令所需的矩阵读取指示,所述所需的矩阵为至少一个矩阵,所述至少一个矩阵为长度相同的矩阵或长度不相同的矩阵;
所述运算单元,用于依据所述矩阵读取指示向所述存储器发送读取命令;依据采用批量读取方式读取所述矩阵读取指示对应的矩阵,对该矩阵执行所述第一运算指令。
附图说明
图1-1是一种计算装置结构示意图。
图1-2是另一种计算装置结构示意图。
图1-3是本申请实施例提供的计算装置的结构示意图。
图1-4是本申请实施例提供的矩阵计算单元的结构示意图。
图1-5是本申请实施例提供的流水级的结构示意图。
图1-6是本申请实施例公开的一种矩阵计算方法的流程示意图。
图1-7是本申请实施例提供的指令集的格式示意图。
图1-8是本申请实施例提供的另一种计算装置的结构示意图。
图1-9是本申请实施例提供的计算装置执行矩阵乘向量指令的流程图。
图2-1示意性示出了根据本申请实施例的多处理器的一种实施例示意图。
图2-2示意性示出了根据本申请实施例的多处理器的另一种实施例示意图。
图2-3示出了根据本申请实施例的用于训练和推理的神经网络计算系统结构示意图。
图2-4示出了根据本申请实施例的计算处理器共享存储单元的计算系统结构示意图。
图2-5示出了根据本申请实施例的计算处理器,控制处理器共享存储单元的神经网络计算系统的结构示意图。
图2-6示出了根据本申请实施例的用于复杂神经网络任务的系统的示例框图。
图3-1示出了根据本申请实施例的用于执行支持离散数据表示的人工神经网络正向运算的装置中主运算模块结构的示例框图;
图3-2示出了根据本申请实施例的用于执行支持离散数据表示的人工神经网络正向运算的装置中从运算模块结构的示例框图;
图3-3示出了根据本申请实施例的运算单元示例结构;
图3-4示出了根据本申请实施例的连续数据和离散数据转化的连续离散转化模块的示例结构;
图4-1为依据本公开的神经网络运算装置的结构示意图;
图4-2为依据本公开的神经网络运算装置的结构示意图;
图4-3为依据本公开的神经网络运算方法流程图;
图4-3.1为依据本公开的编码表的示意图;
图4-3.2为依据本公开的编码表的另一示意图;
图4-3.3为依据本公开的编码表的另一示意图;
图4-3.4为依据本公开的编码表的另一示意图;
图4-3.5为依据本公开的幂次数据的表示方法示意图;
图4-3.6为依据本公开的神经元与幂次权值的乘法操作示意图;
图4-3.7为依据本公开的神经元与幂次权值的乘法操作示意图。
具体实施方式
参阅图1-1,图1-1为一种计算装置,在如图1-1所示的矩阵的计算装置中,其包含多个通用处理器101(CPU),每个CPU均包含自身的内存,其处理的方法可以为,多个CPU并行处理矩阵的计算,此方案虽在在矩阵的计算中采用并行处理的方式,但是其并不能有效的提高效率,因为对于矩阵运算中,第二矩阵运算的结果可能需要使用第一矩阵运算的结果,具体的,第一矩阵运算为f(1)=A+B,第二矩阵运算为:f(2)=f(1)+C,对于第二矩阵运算来说,其需要提取第一矩阵运算的结果f(1)才能够进行实际的矩阵计算处理,此种情况在神经网络计算中尤为突出,由于多个CPU并行处理矩阵运算,那么在矩阵计算的分配时,很有可能CPU1执行第一矩阵运算,CPU2执行第二矩阵运算,那么对于CPU2来说,其需要从CPU1提取第一矩阵运算的结果f(1),所以对于多CPU并行处理矩阵来说,多个CPU之间的通讯成为矩阵运算的瓶颈,影响矩阵计算的速度。
参阅图1-2,图1-2为另一种计算装置,在如图1-2所示的计算装置中,其包含有图形处理器(GPU)102,通过GPU102来执行矩阵的运算,对于GPU来说,其本身也包含内存1021,GPU102在处理矩阵运算时,GPU102需要从内存1021中提取矩阵运算所需的矩阵,矩阵由于其数据量大,单个矩阵所占用的存储空间比标量要大很多,对于GPU102来说,虽然其运算能够非常强,但是GPU102的内存的容量不够,无法存储大量的矩阵,为了解决这个问题,图1-2配置了片外数据库103,GPU102可以从片外数据库103中读取矩阵,具体的读取方式为,GPU102从片外数据库103中提取待计算的矩阵,将该矩阵存储在内存1021中,在执行矩阵运算时,进行矩阵指令的译码处理,然后从内存1021中提取该矩阵进行计算。此技术方案在执行矩阵计算中,GPU102进行矩阵指令的译码会占用GPU很大部分的计算能力,影响矩阵的计算速度,效率低。
本申请中提到的输入神经元和输出神经元并非是指整个神经网络的输入层中神经元和输出层中神经元,而是对于网络中任意相邻的两层,处于网络前馈运算下层中的神经元即为输入神经元,处于网络前馈运算上层中的神经元即为输出神经元。以卷积神经网络为例,设一个卷积神经网络有L层,K=1,2,...,L-1,对于第K层和第K+1层来说,我们将第K层称为输入层,其中的神经元为所述输入神经元,第K+1层称为输出层,其中的神经元为所述输出神经元。即除最顶层外,每一层都可以作为输入层,其下一层为对应的输出层。
本申请具体实施方式提供一种矩阵计算方法,该矩阵计算方法在如图1-3所示的计算装置内完成,如图1-3所示,该计算装置包括:
存储器201、用于存储矩阵。优选该存储器可以为高速暂存存储器,能够支持不同长度的矩阵数据;本申请将必要的计算数据暂存在存储器(优选的高速暂存存储器)上(Scratchpad Memory),使本计算装置在进行矩阵运算过程中可以更加灵活有效地支持不同长度的数据。上述存储器还可以为片外数据库、数据库或其他的能够存储的介质等等。
标量数据存储单元202(例如标量寄存器单元),用于存储标量数据,其中,该标量数据包括但不限于:矩阵数据在存储介质201的地址以及矩阵与标量运算时的标量。在一种实施方式中,标量寄存器单元可以是标量寄存器堆,提供运算过程中所需的标量寄存器,标量寄存器不只存放矩阵地址,还存放有标量数据。当涉及到矩阵与标量的运算时,运算单元不仅要从寄存器单元中获取矩阵地址,还要从寄存器单元中获取相应的标量。
运算单元203,用于获取并执行第一运算指令。如图1-4所示,该运算单元包括多个运算器,该运算器包括但不限于:矩阵加法运算器231、矩阵乘法运算器232、大小比较运算器233、非线性运算器234和矩阵标量乘法运算器235。
该矩阵计算方法如图1-6所示,包括如下步骤:
步骤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中批量读取方式具体可以为,每次读取均为多个的数据,,即无论其所需的数据量是多少,其每次读取的均为多个的数据,此批量读取的数据方式非常适合大数据的读取,对于矩阵来说,由于其所占用的容量大,如果采用单个读取方式,其读取的速度会非常慢,所以这里采用批量读取方式来获取多个的数据从而快速读取矩阵数据,避免因为读取矩阵数据过慢影响矩阵计算速度的问题。
本申请提供的技术方案的计算装置设置有标量数据存储单元和存储器,其分别存储标量数据以及矩阵数据,并且本申请为两种存储器分配了单位读取方式以及批量读取方式,通过对矩阵数据的特点分配匹配其特征的数据读取方式,能够很好的利用带宽,避免因为带宽的瓶颈对矩阵计算速度的影响,另外,对于标量数据存储单元来说,由于其存储的为标量数据,设置了标量数据的读取方式,提高了带宽的利用率,所以本申请提供的技术方案能够很好的利用带宽,避免带宽对计算速度的影响,所以其具有计算速度快,效率高的优点。
可选的,上述对该矩阵执行所述第一运算指令具体可以为:
对该矩阵执行n级流水级计算,具体的,对该矩阵执行第一流水级的计算得到第一结果,将第一结果输入到第二流水级执行第二流水级的计算得到第二结果,将第二结果输入到第三流水级执行第三流水级计算得到第三结果,一级一级向下执行后,将所述第n-1结果输入到第n流水级执行第n流水级的计算得到第n结果,将所述第n结果输入到所述存储器。n可以为大于等于2的整数。如n=3为例,上述流水级的操作流程图如图1-5所示。
上述第一流水级包括但不限于:矩阵加法计算器、矩阵乘法计算器等等。
上述第二流水级包括但不限于:大小比较计算器等等。
上述第三流水级包括但不限于:非线性运算器、矩阵标量乘法器等等。
将矩阵分三个流水级运算主要是为了提高运算的速度,对于矩阵的计算来说,例如采用如图1-1所示的通用处理器在计算时,其运算的步骤具体可以为,处理器对矩阵进行计算得到第一结果,然后将第一结果存储在内存中,处理器从内存读取第一结果执行第二次计算得到第二结果,然后将第二结果存储在内存中,处理器从内从读取第二结果执行第三次计算得到第三结果,然后将第三结果存储在内存中。从上述计算的步骤可以看出,在通用处理器进行矩阵计算时,其并没有分流水级进行计算,那么每次计算完毕后均需要将计算完的数据进行保存,下次计算时需要再次读取,所以此方案需要重复存储读取多次数据,对于本申请的技术方案来说,第一流水级计算的第一结果直接进入第二流水级进行计算,第二流水级计算的第二结果直接进入到第三流水级进行计算,第一流水级与第二流水级计算的第一结果和第二结果无需存储,首先其减少了内存的占用空间,其次,其避免了结果的多次存储以及读取,提高了带宽的利用率,进一步提高了计算效率。
在本申请另一实施例中,可以自由组合各流水部件或者采取一级流水级。例如将第二个流水级和第三个流水级合并,或者将第一和第二以及第三个流水线都合并或者各个流水级负责不同的运算可以排列组合。例如,第一级流水负责比较运算,部分乘法运算,第二级流水负责非线性运算和矩阵标量乘法等组合。
可选的,上述计算装置还可以包括:缓存单元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】,所以第二运算指令的存储区域与第一运算指令的存储区域不具有重叠区域,所以第一运算指令与第二运算指令无关联关系。
图1-7是本申请提供的指令集的格式示意图,图1-7中的省略号表示可以包括多个寄存器或立即数。如图1-7所示,运算指令包括一操作码和至少一操作域,其中,操作码用于指示该运算指令的功能,运算单元通过识别该操作码可进行不同的矩阵运算,操作域用于指示该运算指令的数据信息,其中,数据信息可以是立即数或寄存器号,例如,要获取一个矩阵时,根据寄存器号可以在相应的寄存器中获取矩阵起始地址和矩阵长度,再根据矩阵起始地址和矩阵长度在存储介质中获取相应地址存放的矩阵。
指令集包含有不同功能的运算指令:
矩阵乘向量指令(MMV),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出设定长度的矩阵数据和向量数据,在运算单元中进行矩阵乘向量的乘法运算,并将结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址;值得说明的是,向量可以作为特殊形式的矩阵(只有一行元素的矩阵)存储于存储器(优选的高速暂存存储器或者标量寄存器堆)中。
向量乘矩阵指令(VMM),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出设定长度的向量数据和矩阵数据,在运算单元中进行向量乘矩阵的乘法运算,并将结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址;值得说明的是,向量可以作为特殊形式的矩阵(只有一行元素的矩阵)存储于存储器(优选的高速暂存存储器或者标量寄存器堆)中。
矩阵乘标量指令(VMS),根据该指令,装置存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出设定长度的矩阵数据,从标量寄存器堆的指定地址中取出指定大小的矩阵数据,在运算单元中进行标量乘矩阵的乘法运算,并将计算结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址,需要说明的是,标量寄存器堆不仅存储有矩阵的地址,还存储有标量数据。
张量运算指令(TENS),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的两个指定地址取出分别取出设定长度的两块矩阵数据,在运算单元中对两矩阵数据进行张量运算,并将计算结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址。
矩阵加法指令(MA),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的两个指定地址取出分别取出设定长度的两块矩阵数据,在运算单元中对两矩阵进行加法运算,并将计算结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址。
矩阵减法指令(MS),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的两个指定地址取出分别取出设定长度的两块矩阵数据,在运算单元中对两矩阵进行减法运算,并将计算结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址。
矩阵检索指令(MR),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出设定长度的向量数据,从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出指定大小的矩阵数据,在运算单元中,该向量是索引向量,输出的向量中的第i个元素是以索引向量的第i个元素作为索引,在矩阵的第i列中找到的数,该输出向量写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址。
矩阵加载指令(ML),根据该指令,装置从指定外部源地址载入设定长度的数据至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址。
矩阵存储指令(MS),根据该指令,装置将存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址的设定长度的矩阵数据存至外部目的地址处。
矩阵搬运指令(MMOVE),根据该指令,装置将存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址的设定长度的矩阵数据存至存储器(优选的高速暂存存储器或者标量寄存器堆)的另一指定地址处。
上述指令中的设定长度可以由用户自行设定,在一个可选的实施方案中,用户可以将该设置长度设置为一个值,当然在实际应用中,用户也可以将该设置长度设置为多个值。本申请具体实施方式并不限定该设定长度的具体值以及个数。为使本申请的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本申请进一步详细说明。
参阅图1-8,图1-8为本申请具体实施方式提供的另一种计算装置50,如图所示的实施例中的具体实施方案、细化方案或技术效果可以参见如图1-3或图1-6所示实施例中的描述,这里不再赘述。图1-8所示,计算装置50包括:存储器501、标量数据存储单元502(优选的为标量寄存器单元)、矩阵计算单元503和控制单元504;
存储器501,用于存储矩阵;
标量数据存储单元502,用于存储标量数据,所述标量数据至少包括:所述矩阵在所述存储器内的存储地址;
控制单元504,用于控制所述矩阵计算单元获取第一运算指令,所述第一运算指令包括执行所述指令所需的矩阵读取指示;
运算单元503,用于依据所述矩阵读取指示向所述存储器发送读取命令;依据采用批量读取方式读取所述矩阵读取指示对应的矩阵,对该矩阵执行所述第一运算指令。
可选的,上述矩阵读取指示包括:所述指令所需的矩阵的存储地址或所述指令所需矩阵的标识。
可选的如所述矩阵读取指示为所述指令所需矩阵的标识时,
控制单元504,用于控制所述运算单元依据所述标识从所述寄存器单元出采用单位读取方式读取所述标识对应的存储地址,控制所述运算单元向所述存储器发送读取所述存储地址的读取命令并采用批量读取方式获取所述矩阵。
可选的,运算单元503,具体用于对该矩阵执行第一流水级的计算得到第一结果,将第一结果输入到第二流水级执行第二流水级得到第二结果,将所述第二结果输入到第三流水级执行第三流水级得到第三结果,一级一级向下执行后,将所述第n-1结果输入到第n流水级执行第n流水级的计算得到第n结果,将所述第n结果输入到所述存储器。n可以为大于等于2的整数。
可选的,所述计算装置还包括:
缓存单元505,用于缓存待执行的运算指令;
所述控制单元504,用于将待执行的运算指令缓存于所述缓存单元504内。
可选的,控制单元504,用于确定所述第一运算指令与所述第一运算指令之前的第二运算指令是否存在关联关系,如所述第一运算指令与所述第二运算指令存在关联关系,则将所述第一运算指令缓存与所述缓存单元内,在所述第二运算指令执行完毕后,从所述缓存单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第二运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需矩阵的第一存储地址区间,依据所述第二运算指令提取所述第二运算指令中所需矩阵的第二存储地址区间,如所述第一存储地址区间与所述第二存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第二运算指令具有关联关系,如所述第一存储地址区间与所述第二存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第二运算指令不具有关联关系。
可选的,上述控制单元503,可以用于从指令缓存单元获取运算指令,并对该运算指令进行处理后,提供给所述运算单元。其中,控制单元503可以划分为三个模块,分别为:取指模块5031、译码模块5032和指令队列模块5033,
取指模5031,用于从指令缓存单元中获取运算指令;
译码模块5032,用于对获取的运算指令进行译码;
指令队列5033,用于对译码后的运算指令进行顺序存储,考虑到不同指令在包含的寄存器上有可能存在依赖关系,用于缓存译码后的指令,当依赖关系被满足之后发射指令。
参阅图1-9,图1-9是本申请实施例提供的计算装置执行矩阵乘向量指令的流程图,如图1-9所示,该计算装置的硬件结构参阅图1-8所示的结构,如图1-8所示的存储器以高速暂存存储器为例,执行矩阵乘向量指令的过程包括:
步骤S601,计算装置控制取指模块取出矩阵乘向量指令,并将该矩阵乘向量指令送往译码模块。
步骤S602,译码模块对该矩阵乘向量指令译码,并将该矩阵乘向量指令送往指令队列。
步骤S603,在指令队列中,该矩阵乘向量指令需要从标量寄存器堆中获取指令中五个操作域所对应的标量寄存器里的数据,该数据包括输入向量地址、输入向量长度、输入矩阵地址、输出向量地址和输出向量长度。
步骤S604,控制单元确定所述矩阵乘向量指令与矩阵乘向量指令之前的运算指令是否存在关联关系,如存在关联关系,将矩阵乘向量指令存入到缓存单元,如不存在关联管理,将该矩阵乘向量指令传输至运算单元。
步骤S605,运算单元根据五个操作域所对应的标量寄存器里的数据从高速暂存器中取出需要的矩阵和向量数据,然后在运算单元中完成乘法运算。
步骤S606,运算单元运算完成后,将结果写入存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址,重排序缓存中的该矩阵乘向量指令被提交。
上述图1-9中的矩阵计算指令以矩阵乘向量指令为例,在实际应用中,如图1-9所示实施例中的矩阵乘向量指令可以用向量乘矩阵指令、矩阵乘标量指令、张量运算指令、矩阵加法指令、矩阵减法指令、矩阵检索指令、矩阵加载指令、矩阵存储指令或矩阵搬运指令替换,这里不一一赘述。
图2-1、图2-2显示了一种可能的实施方案。图2-1中,包含三个模块:控制模块,包含了如CPU的控制处理器,用于进行逻辑控制,生成指令,以及调用其他的处理器;其次,正向处理模块,包含n个(n大于等于1)正向计算模块(人工神经网络专用正向计算装置),用于神经网络正向的计算;以及,m个(n大于等于1)个反向计算模块(使用通用处理器,比如GPU/DSP/FPGA等)用于进行神经网络的反向计算。控制模块和计算模块之间通过互联装置1进行连接和通信,正向处理模块和反向处理模块之间通过互联装置2进行连接和通信。
或者正向计算模块和反向计算模块使用人工神经网络专业处理器,权值更新使用通用处理器,比如GPU、DSP或FPGA。
图2-2中展示了一种当n=1,m=1时的多处理器协同装置,其中包括了CPU,神经网络处理器,以及GPU三个处理器。该装置可以用于进行神经网络的推理和训练。
图2-3为一种更具体的,用于神经网络的训练和推理的多处理器协同装置。其中,1为控制模块,即用于控制整个执行过程的控制,包含控制处理器,常见情况下是CPU;3为正向处理模块,其中包含了n个用于进行正向计算的正向处理模块,用于进行训练和推理过程中的正向神经元的计算,常见情况下为人工神经网络正向运算装置;2为反向处理模块,包含m个反向计算模块,包括了反向处理器,常见情况下为GPU/FPGA/DSP,用于进行训练过程中的反向梯度传递,和权值更新的操作;5为存储器,正向处理模块从存储单元1中获取数据,包括神经元,权值等,控制处理器从存储单元3中获得数据,包括指令,网路模型等,反向处理器从存储单元2中获得数据,包括目标标签,权值,梯度等。
正向计算模块之间通过互联模块1进行连接,反向计算模块之间通过互连模块2进行连接。控制模块则通过互联模块3连接正向处理模块和反向处理模块进行通信。
图2-4是图2-3装置的变换。由于神经网络算法中,反向计算中需要用到的神经元,突触,偏置数据是正向过程计算出来的,如果将正向数据和反向数据分开存储会导致额外的数据传输开销,即反向计算开始之前,数据要从正向处理模块传输到反向处理模块可以访问的存储单元中,导致整体处理速度下降,功率增加。因此,我们设计一种正向处理模块和反向处理模块共享同一存储单元的装置。其中,正向处理模块和反向处理模块在运算过程中所需要的数据(包括输入原始数据,神经元,突触,梯度,标签等)都存放在存储单元1中。存储单元1的介质可以是之前所述的类型。
图2-5是另一种存储器组织结构。其中,控制模块,正向处理模块和反向处理模块共享同一个存储单元1。这样的好处是,省去了从控制处理器(CPU)存储器移动数据到其他处理器存储器的过程。
图2-5示出本公开中提出的人工神经网络正向处理模块的整体结构的示例框图。
如图2-5所示,该装置包括指令缓存单元1、控制器单元2、直接内存访问单元3、树型模块4、主运算模块5和多个从运算模块6。指令缓存单元1、控制器单元2、直接内存访问单元3、树型模块4、主运算模块5和从运算模块6均可以通过硬件电路(例如专用集成电路ASIC)实现。
指令缓存单元1通过直接内存访问单元3读入指令并缓存读入的指令。
控制器单元2从指令缓存单元1中读取指令,将指令译成控制其他模块行为的微指令,所述其他模块例如直接内存访问单元3、主运算模块5和从运算模块6等。
直接内存访问单元3能够访存外部地址空间,直接向装置内部的各个缓存单元读写数据,完成数据的加载和存储。
如图2-6所示的系统可以包括:控制模块1,存储单元模块2,互联模块3,神经网络计算模块4。控制模块一般为CPU,存储单元1是其内存;神经网络计算模块为若干神经网络处理器组成的计算模块,用于处理任务中的神经网络算法的计算,如卷积,pooling或上述神经网络专用指令中的一种或多种等。控制处理器和神经网络计算模块的连接和通信通过互连模块2实现;神经网路计算模块中各处理器之间通过互连模块1进行连接和通信;神经网络计算模块从存储单元2中读取计算所需要的数据(权值,输入数据等)
本申请通过将设置多种类,多个处理器,保证神经网络处理装置的灵活性,高效性,以及可扩展性。即可以高效完成朴素的神经网络算法,通过多处理器的写作,也可以完成复杂的如目标识别这类任务。通过将不同特点的计算任务划分给不同的处理器,可以在让神经网络处理器发挥出其最大效率的同时,保证装置的可扩展性,兼容性,以及保证计算精度,和计算效率。上述如图2-1、图2-2、图2-3、图2-4、图2-5、图2-6的结构可以应用到任何的神经网络计算指令的计算中或神经网络应用中。本申请并不限制该图2-1、图2-2、图2-3、图2-4、图2-5结构的应用场景,另外,对于不同的神经网络计算指令的执行可能需要添加或扩展其他的功能模块,本申请也不限于添加或扩展的其他的功能模块的具体形式。
本申请一些实施例中,公开了一种加速装置,包括:存储器:存储有可执行指令;处理器:用于执行存储单元中的可执行指令,在执行指令时依照上述处理方法进行操作。
其中,处理器可以是单个处理单元,但也可以包括两个或更多个处理单元。另外,处理器还可以包括通用处理器(CPU)或者图形处理器(GPU);还可以包括在现场可编程逻辑门阵列(FPGA)或者专用集成电路(ASIC),以对神经网络进行设置和运算。处理器还可以包括用于缓存用途的片上存储器(即包括处理装置中的存储器)。
如图1-3所示的计算装置还包括:可以添加连续离散转换模块,用于将连续数据与离散数据的互换,其与数据访问单元连接实现数据互通。
连续离散转换模块均可以通过硬件电路(例如包括但不限于FPGA、CGRA、专用集成电路ASIC、模拟电路和忆阻器等)实现。特别的,本装置可以对离散数据提供存储和运算支持。
图3-1示出了根据本申请实施例的用于执行人工神经网络正向运算的装置中主运算模块5的结构的示例框图。如图3-1所示,主运算模块5包括运算单元51、数据依赖关系判断单元52和支持离散数据表示的神经元缓存单元53。
支持离散数据表示的神经元缓存单元53用于缓存主运算模块5在计算过程中用到的输入数据和输出数据。
运算单元51完成主运算模块5的各种运算功能。对于运算因子全是离散数据的情况,可以通过查表实现离散数据与离散数据的加减乘除运算。例如2位的离散数据,可以表示4个连续数据值。对于4个连续数据共有4*4=16种组合。对于每种加减乘除运算的操作,可以制作并维护该4*4的索引表,通过索引表找到对应的计算值。4种运算共需要4张4*4的索引表。
对于运算因子包含离散数据和连续数据的情况,可以针对不同离散数据,为加、减、乘、除运算预先设定相应的位操作。例如,可以采取按位异或后乘2的相应位次幂之后累加求和的方式代替离散数据与连续数据的点积运算。例如,对于乘法操作,乘法因子数据如果存在离散表示的,可以通过离散数据索引相应的操作(例如,对相应数据的按位异或、取非、移位等操作)代替和该离散数据表示的连续数据的乘法操作,从而减少了乘法器部件数量。例如对于连续数据与离散数据的乘法操作,-1/2乘以16。传统的乘法器部件会将-1/2与16直接做乘法。在运算单元51中,由于离散数据的可能性较少,可以通过查找索引这样一种开关判断的方法代替了运算单元的功能。例如,可以规定-1/2的离散数据表示方法为01。如果一个运算因子是-1/2,则运算单元51接收到的离散数据为01。运算单元51便采用离散数据01对应的操作。通过对于16的8位定点数表示00010000符号位取反,向右移1位得到10001000,十进制表示为-8。对于除法操作,16除以-2。其中16是连续数据,-2是离散数据。如果规定离散数据-2二进制表示为10。运算单元便采用离散数据10对应的除法操作。通过对16的8位定点数表示0001000右移1位之后符号位取反得到10001000,十进制表示为-8得到结果。加法和减法操作与上述过程类似。根据离散数据的二进制作为一个索引,索引到按位左移、右移、异或等操作。经过该操作后实现了与离散数据表示的真实数据的相加或者相减操作。
依赖关系判断单元52是运算单元51读写神经元缓存单元53的端口,同时能够保证神经元缓存单元中数据的读写一致性。同时,数据依赖关系判断单元52也负责将读取数据通过互联模块4发送给从运算模块,而从运算模块6的输出数据通过互联模块4直接发送给运算单元51。控制器单元2输出的指令发送给计算单元51和数据依赖关系判断单元52,来控制其行为。
图3-2示出了根据本申请实施例的用于执行支持离散数据表示的人工神经网络正向运算的装置中从运算模块6的结构的示例框图。如图3-2所示,每个从运算模块6包括运算单元61、数据依赖关系判定单元62、支持离散数据表示的神经元缓存单元63和支持离散数据表示的权值缓存单元64。
运算单元61接收控制器单元2发出的微指令并进行算数逻辑运算。对于运算因子全是离散数据的情况,可以通过查表实现离散数据与离散数据的加减乘除运算。例如2位的离散数据,可以表示4个连续数据值。对于4个连续数据共有4*4=16种组合。对于每种加减乘除运算的操作,可以制作并维护该4*4的索引表,通过索引表找到对应的计算值。4种运算共需要4张4*4的索引表。
对于运算因子包含离散数据和连续数据的情况,可以针对不同离散数据,为加、减、乘、除运算预先设定相应的位操作。例如,可以采取按位异或后乘2的相应位次幂之后累加求和的方式代替离散数据与连续数据的点积运算。例如,对于乘法操作,乘法因子数据如果存在离散表示的,可以通过离散数据索引相应的操作(例如,对相应数据的按位异或、取非、移位等操作)代替和该离散数据表示的连续数据的乘法操作,从而减少了乘法器部件数量。例如对于连续数据与离散数据的乘法操作,-1/2乘以16。传统的乘法器部件会将-1/2与16直接做乘法。在运算单元51中,由于离散数据的可能性较少,可以通过查找索引这样一种开关判断的方法代替了运算单元的功能。例如,可以规定-1/2的离散数据表示方法为01。如果一个运算因子是-1/2,则运算单元51接收到的离散数据为01。运算单元51便采用离散数据01对应的操作。通过对于16的8位定点数表示00010000符号位取反,向右移1位得到10001000,十进制表示为-8。对于除法操作,16除以-2。其中16是连续数据,-2是离散数据。如果规定离散数据-2二进制表示为10。运算单元便采用离散数据10对应的除法操作。通过对16的8位定点数表示0001000右移1位之后符号位取反得到10001000,十进制表示为-8得到结果。加法和减法操作与上述过程类似。根据离散数据的二进制作为一个索引,索引到按位左移、右移、异或等操作。经过该操作后实现了与离散数据表示的真实数据的相加或者相减操作。
数据依赖关系判断单元62负责计算过程中对神经元缓存单元的读写操作。数据依赖关系判断单元62执行读写操作之前会首先保证指令之间所用的数据不存在读写一致性冲突。例如,所有发往数据依赖关系单元62的微指令都会被存入数据依赖关系单元62内部的指令队列里,在该队列中,读指令的读取数据的范围如果与队列位置靠前的写指令写数据的范围发生冲突,则该指令必须等到所依赖的写指令被执行后才能够执行。
支持离散数据表示的神经元缓存单元63缓存该从运算模块6的输入神经元向量数据和输出神经元值数据。该数据可以以离散数据的形式存储和传输。
支持离散数据表示的权值缓存单元64缓存该从运算模块6在计算过程中需要的权值数据。该数据根据用户定义可以是离散表示的或不是。对于每一个从运算模块6,都只会存储全部输入神经元与部分输出神经元之间的权值。以全连接层为例,输出神经元按照从运算单元的个数N进行分段,每段的第n个输出神经元对应的权值存放在第n个从运算单元中。
从运算模块6实现每层人工神经网络正向运算过程中可以并行的前半部分。该模块中的数据存储以及运算都支持离散数据表示。以人工神经网络全连接层(MLP)为例,过程为y=f(wx+b),其中权值矩阵w和输入神经元向量x的乘法可以划分为不相关的并行计算子任务,out与in是列向量,每个从运算模块6只计算in中相应的部分标量元素与权值矩阵w对应的列的乘积,得到的每个输出向量都是最终结果的一个待累加的部分和,这些部分和在互联模块4中逐级两两相加得到最后的结果。这个结果可以是离散数据表示的。所以计算过程变成了并行的计算部分和的过程和后面的累加的过程。每个从运算模块6计算出输出神经元值,所有的输出神经元值在互联模块4中拼成得到中间结果向量。每个从运算模块6只需要计算出中间结果向量y中与本模块对应的输出神经元值即可。互联模块4对所有从运算模块6输出的神经元值求和,得到最终的中间结果向量y。主运算模块5基于中间结果向量y进行后续计算,比如加偏置、池化(例如最大值池化(MAXPOOLING)或平均值池化(AVGPOOLING)等)、做激活和做采样等。
图3-3示出了运算单元的结构框图,其可用于主运算模块中的运算单元51或从运算模块中的运算单元61。运算过程中输入数据可以是离散数据或连续数据。数据类型判断单元71判断输入数据全是连续数据、全是离散数据或是既包含连续数据又包含离散数据的混合数据。当输入数据全是连续数据时,连续数据运算单元72执行相应运算。
当输入数据全是离散数据时,离散数据运算单元73执行相应运算。对于运算因子全是离散数据的情况,可以通过查表实现离散数据与离散数据的加减乘除运算。例如2位的离散数据,可以表示4个连续数据值。对于4个连续数据共有4*4=16种组合。对于每种加减乘除运算的操作,我们制作并维护该4*4的索引表,通过索引表找到对应的计算值。4种运算共需要4张4*4的索引表。
当输入数据是混合数据时,运算决定单元74根据其中的离散数据决定应对其执行何种操作。可以针对不同的离散数据分别预先设置相应操作。然后,混合数据运算单元75根据运算决定单元74的决定结果,执行相应操作。对于运算因子包含离散数据和连续数据的情况,可以针对不同离散数据,为加、减、乘、除运算预先设定相应的位操作。例如,可以采取按位异或后乘2的相应位次幂之后累加求和的方式代替离散数据与连续数据的点积运算。例如,对于乘法操作,乘法因子数据如果存在离散表示的,可以通过离散数据索引相应的操作(例如,对相应数据的按位异或、取非、移位等操作)代替和该离散数据表示的连续数据的乘法操作,从而减少了乘法器部件数量。例如对于连续数据与离散数据的乘法操作,-1/2乘以16。传统的乘法器部件会将-1/2与16直接做乘法。在运算单元51中,由于离散数据的可能性较少,可以通过查找索引这样一种开关判断的方法代替了运算单元的功能。例如,可以规定-1/2的离散数据表示方法为01。如果一个运算因子是-1/2,则运算单元51接收到的离散数据为01。运算单元51便采用离散数据01对应的操作。通过对于16的8位定点数表示00010000符号位取反,向右移1位得到10001000,十进制表示为-8。对于除法操作,16除以-2。其中16是连续数据,-2是离散数据。如果规定离散数据-2二进制表示为10。运算单元便采用离散数据10对应的除法操作。通过对16的8位定点数表示0001000右移1位之后符号位取反得到10001000,十进制表示为-8得到结果。加法和减法操作与上述过程类似。根据离散数据的二进制作为一个索引,索引到按位左移、右移、异或等操作。经过该操作后实现了与离散数据表示的真实数据的相加或者相减操作。
图3-4示出了连续离散转换单元。用户可以定义采用该模块将连续数据转换为离散数据或不采用。输入连续数据,输出离散数据。该单元包括随机数产生模块、判断模块、运算模块。对于输入的连续数据通过运算模块得到运算后的结果,经由判断模块用随机数与运算后的结果比较,判断随机数落在哪一个区间,从而决定出输出的离散数据的具体值。例如用户定义产生二元离散数据。对于输入的任意连续数据x。经由运算模块计算出结果y=abs(clip(-1,1))。之后通过判断模块,如果随机数大于y,则输出的离散数据是1,反之输出的离散数据是0。离散数据1和0分别代表了连续数据的-1和+1。将得到的离散数据存储回内存中。等待主从运算模块中的运算单元使用,产生相应的操作。
正向过程中的权值数据、输出输入数据可以采用离散数据表示或不采用。对于连续数据的乘法操作,可以通过基于离散数据的异或、取非、位移等方式代替连续数据的乘法操作。例如权值用1比特离散数据表示,0代表+1,1代表-1,通过对与权值相乘数据的符号位异或,实现了对权值的乘法运算。
根据本申请实施例,还提供了在前述装置上执行人工神经网络正向运算的指令集。指令集中包括CONFIG指令、COMPUTE指令、IO指令、NOP指令、JUMP指令和MOVE指令等,其中:
CONFIG指令在每层人工神经网络计算开始前配置当前层计算需要的各种常数;
COMPUTE指令完成每层人工神经网络的算术逻辑计算;
IO指令实现从外部地址空间读入计算需要的输入数据以及在计算完成后将数据存回至外部空间,该数据支持离散化表示;
NOP指令负责清空当前装置内部所有微指令缓存队列中的微指令,保证NOP指令之前的所有指令全部指令完毕。NOP指令本身不包含任何计算操作;
JUMP指令负责控制器将要从指令缓存单元读取的下一条指令地址的跳转,用来实现控制流的跳转;
MOVE指令负责将装置内部地址空间某一地址的数据搬运至装置内部地址空间的另一地址,该过程独立于运算单元,在执行过程中不占用运算单元的资源。
在如图1-3所示的计算装置内,可以添加在幂次转换单元,该幂次转换单元与存储介质(片上存储介质)连接,用于将神经网络输入数据中非幂次权值数据转换为幂次权值数据。
可选的,上述计算装置还可以包括:控制单元以及运算单元等等,控制单元以及运算单元的具体描述可以参见如图1-3所示实施例的描述,这里不再赘述,另外,上述如图1-3所示的计算装置还可以增加或扩展如图4-1所示的神经网络运算装置。另一种可选实施例中,神经网络运算装置的结构如图4-1,包括:
存储单元1,用于存储数据和运算指令;
控制单元,与所述存储单元连接,用于控制数据和运算指令的交互,其接收该存储单元发送的数据和运算指令,并将运算指令译码成运算微指令;
运算单元7,与所述控制单元连接,接收该控制单元发送的数据和运算微指令,并根据运算微指令对其接收的神经元数据及权值数据执行神经网络运算;
幂次转换单元9,其与所述存储单元连接,用于将神经网络运算的输入神经元数据和/或输出神经元数据转换为幂次神经元数据。
具体的,所述控制单元包括:
数据控制模块2,与所述存储单元连接,用于存储单元和各缓存模块之间的数据和运算指令交互;
指令缓存模块3,与所述数据控制模块连接,用于接收数据控制模块发送的运算指令;
译码模块4,与所述指令缓存模块连接,用于从指令缓存模块中读取运算指令,并将其译码成各运算微指令;
输入神经元缓存模块5,与所述数据控制模块连接,用于接收数据控制模块发送的神经元数据;
权值缓存模块6,与所述数据控制模块连接,用于接收从数据控制模块发送的权值数据。
进一步的,所述运算单元7,分别与所述译码模块、输入神经元缓存模块及权值缓存模块连接,接收运算微指令、神经元数据及权值数据,用于根据运算微指令对其接收的神经元数据和权值数据执行相应的运算。所述输出神经元缓存单元8,与所述运算单元连接,用于接收运算单元输出的神经元数据;并将其发送至所述控制单元的数据控制模块2。由此可作为下一层神经网络运算的输入数据。
其中,存储单元从外部地址空间接收数据和指令,该数据包括神经网络权值数据、神经网络输入数据等。
进一步的,幂次转换操作有多种可选方式。下面列举本实施例所采用的三种幂次转换操作:
第一种幂次转换方法:
sout=sin
其中,din为幂次转换单元的输入数据,dout为幂次转换单元的输出数据,sin为输入数据的符号,sout为输出数据的符号,din+为输入数据的正数部分,din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout,表示对数据x做取下整操作。
第二种幂次转换方法:
sout=sin
其中,
sout=sin
其中,din为幂次转换单元的输入数据,dout为幂次转换单元的输出数据,sin为输入数据的符号,sout为输出数据的符号,din+为输入数据的正数部分,din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout,表示对数据x做取上整操作。
第三种幂次转换方法:
Sout=Sin
dout+=[log2(din+)]
其中,
sout=sin
其中,din为幂次转换单元的输入数据,dout为幂次转换单元的输出数据;sin为输入数据的符号,sout为输出数据的符号;din+为输入数据的正数部分,din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout;[x]表示对数据x做四舍五入操作。
本公开还提供了另一种神经网络运算装置。图4-2为依据本实施例神经网络运算装置的示意图。请参照图4-2,本实施例神经网络运算装置,包括:
存储单元101,用于存储数据和运算指令;该存储单元从外部地址空间接收数据和运算指令,该数据包括神经网络权值数据、神经网络输入数据等。
控制单元,与所述存储单元连接,用于控制数据和运算指令的交互,其接收该存储单元发送的数据和指令,并将运算指令译码成运算微指令;
运算单元107,与所述控制单元连接,接收该控制单元发送的数据和运算微指令,并根据运算微指令对其接收的权值数据和神经元数据执行神经网络运算;
输出神经元缓存单元108,与所述运算单元连接,用于接收运算单元输出的神经元数据,并将其发送至所述控制单元;
幂次转换单元109,其与所述存储单元连接,用于将神经网络运算的输入神经元数据和/或输出神经元数据转换为幂次神经元数据;以及
幂次转换单元110,其与所述输出神经元缓存单元108连接,用于将神经网络运算后的神经元数据转换为幂次神经元数据,并发送至所述控制单元。
进一步的,所述控制单元包括:
数据控制模块102,与所述存储单元连接,用于存储单元和各缓存模块之间的数据和运算指令交互;
指令缓存模块103,与所述数据控制模块连接,用于接收数据控制模块发送的运算指令;
译码模块104,与所述指令缓存模块连接,用于从指令缓存模块中读取运算指令,并将其译码成各运算微指令;
输入神经元缓存模块105,与所述数据控制模块连接,用于接收数据控制模块发送的神经元数据;
权值缓存模块106,与所述数据控制模块连接,用于接收从数据控制模块发送的权值数据。
具体的,所述运算单元107,分别与所述译码模块、输入神经元缓存模块及权值缓存模块连接,接收各运算微指令、神经元数据及权值数据,用于根据各运算微指令对其接收的神经元数据和权值数据执行相应的运算。
所述幂次转换单元110,与所述数据控制模块连接,用于将神经网络运算后的神经元数据转换为幂次神经元数据,并发送至所述控制单元的数据控制模块102。通过幂次转换单元110获得的幂次神经元数据可作为神经网络运算下一层的输入神经元。
另外,所述幂次转换的具体操作方法与前述实施例相同,此处不再赘述。
另外,本公开实施例还提供了一种神经网络运算方法,图4-3为本实施例神经网络运算方法的流程图。具体而言,本公开实施例的神经网络为多层神经网络,对于每层神经网络可按图4-3所示的运算方法进行运算,其中,神经网络第一层输入幂次权值数据可通过存储单元从外部地址读入,若外部地址读入的权值数据已经为幂次权值数据则直接传入存储单元,否则先通过幂次转换单元转换为幂次权值数据。请参照图4-3,本实施例单层神经网络运算方法,包括:
步骤S1,获取指令、神经元数据及幂次权值数据。
其中,所述步骤S1包括以下子步骤:
S11,将运算指令、神经元数据及权值数据输入存储单元;其中,对幂次权值数据直接输入存储单元,对非幂次权值数据经过幂次转换单元转换后输入存储单元;
S12,数据控制模块接收该存储单元发送的指令、神经元数据及幂次权值数据;
S13,指令缓存模块、输入神经元缓存模块及权值缓存模块分别接收所述数据控制模块发送的运算指令、神经元数据及幂次权值数据并分发给译码模块或运算单元。
所述幂次权值数据表示权值数据的数值采用其幂指数值形式表示,具体为,幂次权值数据包括符号位和幂次位,符号位用一位或多位比特位表示权值数据的符号,幂次位用m位比特位表示权值数据的幂次位数据,m为大于1的正整数。存储单元预存有编码表,提供幂次权值数据的每个幂次位数据对应的指数数值。编码表设置一个或者多个幂次位数据(即置零幂次位数据)为指定对应的幂次权值数据为0。也就是说,当幂次权值数据的幂次位数据是编码表里的置零幂次位数据时候,表示该幂次权值数据为0。其中,所述编码表可以有灵活的存储方式,既可以是表格形式进行存储,还可以是通过函数关系进行的映射。
编码表的对应关系可以是任意的。
例如,编码表的对应关系可以是乱序的。如图4-3.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。
在一种实施方式中,如图4-3.2所示,一种m为5,x为0,y为1的编码表的部分内容,幂次位数据为00000的时候对应指数数值为0。幂次位数据为00001的时候对应指数数值为1。幂次位数据为00010的时候对应指数数值为2。幂次位数据为00011的时候对应指数数值为3。幂次位数据为11111的时候对应幂次权值数据为0。如图4-3.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。
如图4-3.4所示,一种m为5的编码表的部分内容,幂次位数据为11111的时候对应数数值为0。幂次位数据为11110的时候对应指数数值为1。幂次位数据为11101的时候对应指数数值为2。幂次位数据为11100的时候对应指数数值为3。幂次位数据为00000的时候对应幂次权值数据为0。
编码表的对应关系可以是幂次位数据最高位代表置零位,幂次位数据其他m-1位对应指数数值。当幂次位数据最高位为0时,对应幂次权值数据为0;当幂次位数据最高位为1时,对应幂次权值数据不为0。反之亦可,即当幂次位数据最高位为1时,对应幂次权值数据为0;当幂次位数据最高位为0时,对应幂次权值数据不为0。用另一种语言来描述,即幂次权值数据的幂次位被分出一个比特来指示幂次权值数据是否为0。
在一个具体实例图4-3.5所示,符号位为1位,幂次位数据位为7位,即m为7。编码表为幂次位数据为11111111的时候对应幂次权值数据为0,幂次位数据为其他数值的时候幂次权值数据对应相应的二进制补码。当幂次权值数据符号位为0,幂次位为0001001,则其表示具体数值为29,即512;幂次权值数据符号位为1,幂次位为1111101,则其表示具体数值为-2-3,即-0.125。相对于浮点数据,幂次数据只保留数据的幂次位,极大减小了存储数据所需的存储空间。
通过幂次数据表示方法,可以减小存储权值数据所需的存储空间。在本实施例所提供示例中,幂次数据为8位数据,应当认识到,该数据长度不是固定不变的,在不同场合下,根据数据权值的数据范围采用不同的数据长度。
步骤S2,根据运算指令对神经元数据及幂次权值数据进行神经网络运算。其中,所述步骤S2包括以下子步骤:
S21,译码模块从指令缓存模块中读取指令,并将其译码成各运算指令;
S22,运算单元分别接收所述译码模块、输入神经元缓存模块及权值缓存模块发送的运算指令、幂次权值数据以及神经元数据,并根据运算指令对神经元数据及幂次表示的权值数据进行神经网络运算。
所述神经元与幂次权值乘法操作具体为,神经元数据符号位与幂次权值数据符号位做异或操作;编码表的对应关系为乱序的情况下查找编码表找出幂次权值数据幂次位对应的指数数值,编码表的对应关系为正相关的情况下记录编码表的指数数值最小值并做加法找出幂次权值数据幂次位对应的指数数值,编码表的对应关系为负相关的情况下记录编码表的最大值并做减法找出幂次权值数据幂次位对应的指数数值;将指数数值与神经元数据幂次位做加法操作,神经元数据有效位保持不变。
具体实例一如图4-3.6所示,神经元数据为16位浮点数据,符号位为0,幂次位为10101,有效位为0110100000,则其表示的实际数值为1.40625*26。幂次权值数据符号位为1位,幂次位数据位为5位,即m为5。编码表为幂次位数据为11111的时候对应幂次权值数据为0,幂次位数据为其他数值的时候幂次位数据对应相应的二进制补码。幂次权值为000110,则其表示的实际数值为64,即26。幂次权值的幂次位加上神经元的幂次位结果为11011,则结果的实际数值为1.40625*212,即为神经元与幂次权值的乘积结果。通过该运算操作,使得乘法操作变为加法操作,减小计算所需的运算量。
具体实例二如图4-3.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,可以调整神经网络运算装置所能表示的幂次神经元数据范围。
另外,所述幂次转换的具体操作方法与前述实施例相同,此处不再赘述。
在一些实施例里,公开了一种芯片,其包括了上述神经网络处理器。
在一些实施例里,公开了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,公开了一种板卡,其包括了上述芯片封装结构。
在一些实施例里,公开了一种电子装置,其包括了上述板卡。
电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
以上所述的具体实施例,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施例而已,并不用于限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (13)
1.一种神经网络任务处理系统,其特征在于,所述系统包括:n个计算装置,m个反向计算模块、控制模块和互联装置;
所述控制模块通过所述互联装置与所述n个计算装置和m个反向计算模块连接和通信;
所述计算装置,用于在执行神经网络正向计算;
所述反向计算模块,用于执行神经网络反向计算;
所述计算装置包括:存储器、寄存器单元、矩阵计算单元和控制单元;
所述存储器,用于存储矩阵;
所述寄存器单元,用于存储标量数据,所述标量数据至少包括:所述矩阵在所述存储器内的存储地址;
所述控制单元,用于控制所述矩阵计算单元获取第一运算指令,所述第一运算指令包括执行所述指令所需的矩阵读取指示,所述所需的矩阵为至少一个矩阵,所述至少一个矩阵为长度相同的矩阵或长度不相同的矩阵;
所述运算单元,用于依据所述矩阵读取指示向所述存储器发送读取命令;依据采用批量读取方式读取所述矩阵读取指示对应的矩阵,对该矩阵执行所述第一运算指令。
2.根据权利要求1所述的神经网络任务处理系统,其特征在于,
所述反向计算模块为通用处理器,所述通用处理器为:GPU、DSP或FPGA;
所述反向计算模块与所述存储器连接,所述反向计算模块与所述计算装置共享所述存储器。
3.根据权利要求1所述的神经网络任务处理系统,其特征在于,所述矩阵读取指示包括:所述指令所需的矩阵的存储地址或所述指令所需矩阵的标识;所述控制单元,用于控制所述运算单元依据所述标识从所述寄存器单元出采用单位读取方式读取所述标识对应的存储地址,控制所述运算单元向所述存储器发送读取所述存储地址的读取命令并采用批量读取方式获取所述矩阵。
4.根据权利要求1-3任意一项所述的神经网络任务处理系统,其特征在于,
所述运算单元,具体用于对该矩阵执行第一流水级的计算得到第一结果,将第一结果输入到第二流水级执行第二流水级得到第二结果,将所述第二结果输入到第三流水级执行第三流水级得到第三结果,将所述第三结果输入到所述存储器进行存储。
5.根据权利要求1-3任意一项所述的神经网络任务处理系统,其特征在于,所述计算装置还包括:
缓存单元,用于缓存待执行的运算指令;
所述控制单元,用于将待执行的运算指令缓存于所述缓存单元内。
6.根据权利要求1-3任意一项所述的神经网络任务处理系统,其特征在于,
所述控制单元,用于确定所述第一运算指令与所述第一运算指令之前的第二运算指令是否存在关联关系,如所述第一运算指令与所述第二运算指令存在关联关系,则将所述第一运算指令缓存与所述缓存单元内,在所述第二运算指令执行完毕后,从所述缓存单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第二运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需矩阵的第一存储地址区间,依据所述第二运算指令提取所述第二运算指令中所需矩阵的第二存储地址区间,如所述第一存储地址区间与所述第二存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第二运算指令具有关联关系,如所述第一存储地址区间与所述第二存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第二运算指令不具有关联关系。
7.根据权利要求1-3任意一项所述的神经网络任务处理系统,其特征在于,
所述矩阵为m*n矩阵、1*n矩阵或m*1矩阵,其中m、n为大于等于2的整数。
8.根据权利要求1所述的计算装置,其特征在于,
所述运算单元包括:一个主运算单元和多个从运算单元,所述互联模块连接所述主运算单元和多个从运算单元,所述互联模块为:树状结构、环状结构、网格状结构、分级互连或总线结构;
所述计算装置还包括:连续离散转换模块,用于将连续数据与离散数据的互换
所述主运算单元包括:运算模块、数据依赖关系判断单元和支持离散数据表示的神经元缓存单元;
所述运算模块,用于完成所述主运算单元的各种运算功能;具体包括:对于运算因子全是离散数据的情况,通过查表实现离散数据与离散数据的加减乘除运算;对于运算因子包含离散数据和连续数据的情况,可以针对不同离散数据,为加、减、乘、除运算预先设定相应的位操作;
所述数据依赖关系单元,用于将接收的微指令存入所述数据依赖关系单元内部的指令队列里,在该队列中,读指令的读取数据的范围如果与队列位置靠前的写指令写数据的范围发生冲突,则该指令必须等到所依赖的写指令被执行后才能够执行;
支持离散数据表示的神经元缓存单元,用于缓存从运算模块的输入神经元向量数据和输出神经元值数据。
9.根据权利要求1所述的计算装置,其特征在于,所述计算装置还包括:幂次转换单元,
所述幂次转换单元与所述存储器连接,用于用于将神经网络输入数据中非幂次权值数据转换为幂次权值数据;
所述运算单元,具体用于将神经元数据符号位与幂次权值数据符号位做异或操作;编码表的对应关系为乱序的情况下查找编码表找出幂次权值数据幂次位对应的指数数值,编码表的对应关系为正相关的情况下记录编码表的指数数值最小值并做加法找出幂次权值数据幂次位对应的指数数值,编码表的对应关系为负相关的情况下记录编码表的最大值并做减法找出幂次权值数据幂次位对应的指数数值;将指数数值与神经元数据幂次位做加法操作,神经元数据有效位保持不变。
10.一种神经网络任务处理方法,其特征在于,所述方法应用于神经网络任务处理系统,所述系统包括:n个计算装置,m个反向计算模块、控制模块和互联装置;所述控制模块通过所述互联装置与所述n个计算装置和m个反向计算模块连接和通信;所述计算装置包括:存储器、寄存器单元、矩阵计算单元和控制单元;所述方法包括:
所述计算装置执行神经网络正向计算;所述反向计算模块执行神经网络反向计算;具体的:所述存储器存储矩阵;
所述寄存器单元存储标量数据,所述标量数据至少包括:所述矩阵在所述存储器内的存储地址;
所述控制单元控制所述矩阵计算单元获取第一运算指令,所述第一运算指令包括执行所述指令所需的矩阵读取指示,所述所需的矩阵为至少一个矩阵,所述至少一个矩阵为长度相同的矩阵或长度不相同的矩阵;
所述运算单元依据所述矩阵读取指示向所述存储器发送读取命令;依据采用批量读取方式读取所述矩阵读取指示对应的矩阵,对该矩阵执行所述第一运算指令。
11.根据权利要求10所述的方法,其特征在于,所述方法包括:所述反向计算模块为通用处理器,所述通用处理器为:GPU、DSP或FPGA;所述反向计算模块与所述存储器连接,所述反向计算模块与所述计算装置共享所述存储器。
12.根据权利要求10或11所述的方法,所述方法包括:
所述矩阵读取指示包括:所述指令所需的矩阵的存储地址或所述指令所需矩阵的标识;所述控制单元,用于控制所述运算单元依据所述标识从所述寄存器单元出采用单位读取方式读取所述标识对应的存储地址,控制所述运算单元向所述存储器发送读取所述存储地址的读取命令并采用批量读取方式获取所述矩阵;
所述运算单元对该矩阵执行第一流水级的计算得到第一结果,将第一结果输入到第二流水级执行第二流水级得到第二结果,将所述第二结果输入到第三流水级执行第三流水级得到第三结果,将所述第三结果输入到所述存储器进行存储。
13.根据权利要求10或11所述的方法,所述方法包括:
所述控制单元确定所述第一运算指令与所述第一运算指令之前的第二运算指令是否存在关联关系,如所述第一运算指令与所述第二运算指令存在关联关系,则将所述第一运算指令缓存与所述缓存单元内,在所述第二运算指令执行完毕后,从所述缓存单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第二运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需矩阵的第一存储地址区间,依据所述第二运算指令提取所述第二运算指令中所需矩阵的第二存储地址区间,如所述第一存储地址区间与所述第二存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第二运算指令具有关联关系,如所述第一存储地址区间与所述第二存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第二运算指令不具有关联关系。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2017105959511 | 2017-07-20 | ||
CN201710595951.1A CN107992329B (zh) | 2017-07-20 | 2017-07-20 | 一种计算方法及相关产品 |
CN201880004680.0A CN110036369B (zh) | 2017-07-20 | 2018-07-13 | 一种计算方法及相关产品 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880004680.0A Division CN110036369B (zh) | 2017-07-20 | 2018-07-13 | 一种计算方法及相关产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110597558A true CN110597558A (zh) | 2019-12-20 |
CN110597558B CN110597558B (zh) | 2021-11-12 |
Family
ID=61067110
Family Applications (18)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710928261.3A Active CN107729990B (zh) | 2017-07-20 | 2017-07-20 | 支持离散数据表示的用于执行正向运算的装置及方法 |
CN201710927526.8A Active CN107844322B (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 | 一种神经网络运算装置及方法 |
CN201710927336.6A Active CN107729989B (zh) | 2017-07-20 | 2017-07-20 | 一种用于执行人工神经网络正向运算的装置及方法 |
CN201710927307.XA Active CN109284130B (zh) | 2017-07-20 | 2017-07-20 | 神经网络运算装置及方法 |
CN201710927267.9A Active CN107832082B (zh) | 2017-07-20 | 2017-07-20 | 一种用于执行人工神经网络正向运算的装置和方法 |
CN201710927338.5A Active CN107608715B (zh) | 2017-07-20 | 2017-07-20 | 用于执行人工神经网络正向运算的装置及方法 |
CN201911058840.2A Active CN110825434B (zh) | 2017-07-20 | 2018-07-13 | 计算装置及计算方法 |
CN201880004680.0A Active CN110036369B (zh) | 2017-07-20 | 2018-07-13 | 一种计算方法及相关产品 |
CN202010189417.2A Active CN111221578B (zh) | 2017-07-20 | 2018-07-13 | 计算装置以及计算方法 |
CN201911069248.2A Active CN110597559B (zh) | 2017-07-20 | 2018-07-13 | 计算装置以及计算方法 |
CN201911057705.6A Active CN110597558B (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 | 一种计算装置及计算方法 |
CN202010189355.5A Active CN111176727B (zh) | 2017-07-20 | 2018-07-13 | 计算装置以及计算方法 |
CN201911058836.6A Active CN110688158B (zh) | 2017-07-20 | 2018-07-13 | 计算装置以及神经网络的处理系统 |
Family Applications Before (13)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710928261.3A Active CN107729990B (zh) | 2017-07-20 | 2017-07-20 | 支持离散数据表示的用于执行正向运算的装置及方法 |
CN201710927526.8A Active CN107844322B (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 | 一种神经网络运算装置及方法 |
CN201710927336.6A Active CN107729989B (zh) | 2017-07-20 | 2017-07-20 | 一种用于执行人工神经网络正向运算的装置及方法 |
CN201710927307.XA Active CN109284130B (zh) | 2017-07-20 | 2017-07-20 | 神经网络运算装置及方法 |
CN201710927267.9A Active CN107832082B (zh) | 2017-07-20 | 2017-07-20 | 一种用于执行人工神经网络正向运算的装置和方法 |
CN201710927338.5A Active CN107608715B (zh) | 2017-07-20 | 2017-07-20 | 用于执行人工神经网络正向运算的装置及方法 |
CN201911058840.2A Active CN110825434B (zh) | 2017-07-20 | 2018-07-13 | 计算装置及计算方法 |
CN201880004680.0A Active CN110036369B (zh) | 2017-07-20 | 2018-07-13 | 一种计算方法及相关产品 |
CN202010189417.2A Active CN111221578B (zh) | 2017-07-20 | 2018-07-13 | 计算装置以及计算方法 |
CN201911069248.2A Active CN110597559B (zh) | 2017-07-20 | 2018-07-13 | 计算装置以及计算方法 |
Family Applications After (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911058837.0A Active CN110688159B (zh) | 2017-07-20 | 2018-07-13 | 神经网络任务处理系统 |
CN201911058620.XA Active CN110688157B (zh) | 2017-07-20 | 2018-07-13 | 一种计算装置及计算方法 |
CN202010189355.5A Active CN111176727B (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) | CN107729990B (zh) |
WO (1) | WO2019015541A1 (zh) |
Families Citing this family (194)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018214913A1 (zh) * | 2017-05-23 | 2018-11-29 | 上海寒武纪信息科技有限公司 | 处理方法及加速装置 |
CN110413551B (zh) | 2018-04-28 | 2021-12-10 | 上海寒武纪信息科技有限公司 | 信息处理装置、方法及设备 |
CN109214616B (zh) | 2017-06-29 | 2023-04-07 | 上海寒武纪信息科技有限公司 | 一种信息处理装置、系统和方法 |
CN110619390A (zh) * | 2018-06-20 | 2019-12-27 | 上海寒武纪信息科技有限公司 | 用于执行生成对抗网络的处理装置及应用其进行机器创作的方法 |
EP3637272A4 (en) | 2017-06-26 | 2020-09-02 | Shanghai Cambricon Information Technology Co., Ltd | DATA-SHARING SYSTEM AND RELATED DATA-SHARING PROCESS |
CN109426553A (zh) | 2017-08-21 | 2019-03-05 | 上海寒武纪信息科技有限公司 | 任务切分装置及方法、任务处理装置及方法、多核处理器 |
CN107729990B (zh) * | 2017-07-20 | 2021-06-08 | 上海寒武纪信息科技有限公司 | 支持离散数据表示的用于执行正向运算的装置及方法 |
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 | 上海寒武纪信息科技有限公司 | 一种网络模型的计算方法及装置 |
EP3651079B1 (en) * | 2018-02-13 | 2021-10-27 | Shanghai Cambricon Information Technology Co., Ltd | Computation device and method |
US12073215B2 (en) | 2018-02-13 | 2024-08-27 | Shanghai Cambricon Information Technology Co., Ltd | Computing device with a conversion unit to convert data values between various sizes of fixed-point and floating-point data |
CN110163350B (zh) * | 2018-02-13 | 2021-06-08 | 上海寒武纪信息科技有限公司 | 一种计算装置及方法 |
CN110276447B (zh) * | 2018-03-14 | 2024-09-24 | 上海寒武纪信息科技有限公司 | 一种计算装置及方法 |
CN110163360B (zh) * | 2018-02-13 | 2021-06-25 | 上海寒武纪信息科技有限公司 | 一种计算装置及方法 |
US11106598B2 (en) | 2018-02-13 | 2021-08-31 | Shanghai Cambricon Information Technology Co., Ltd. | Computing device and method |
US11630666B2 (en) | 2018-02-13 | 2023-04-18 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
CN116991225A (zh) | 2018-02-14 | 2023-11-03 | 上海寒武纪信息科技有限公司 | 处理器的控制装置、方法及设备 |
CN110197272B (zh) * | 2018-02-27 | 2020-08-25 | 上海寒武纪信息科技有限公司 | 集成电路芯片装置及相关产品 |
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 | 上海寒武纪信息科技有限公司 | 一种神经网络计算装置和方法 |
CN110503179B (zh) * | 2018-05-18 | 2024-03-01 | 上海寒武纪信息科技有限公司 | 计算方法以及相关产品 |
EP3796189A4 (en) | 2018-05-18 | 2022-03-02 | Cambricon Technologies Corporation Limited | VIDEO RECOVERY METHOD, AND METHOD AND APPARATUS FOR GENERATING A VIDEO RECOVERY MAPPING RELATION |
CN110147873B (zh) * | 2018-05-18 | 2020-02-18 | 中科寒武纪科技股份有限公司 | 卷积神经网络的处理器及训练方法 |
EP3624020A4 (en) | 2018-05-18 | 2021-05-05 | Shanghai Cambricon Information Technology Co., Ltd | CALCULATION PROCEDURES AND RELATED PRODUCTS |
WO2020029018A1 (zh) | 2018-08-06 | 2020-02-13 | 华为技术有限公司 | 矩阵的处理方法、装置及逻辑电路 |
CN109032670B (zh) * | 2018-08-08 | 2021-10-19 | 上海寒武纪信息科技有限公司 | 神经网络处理装置及其执行向量复制指令的方法 |
CN109189715B (zh) * | 2018-08-16 | 2022-03-15 | 北京算能科技有限公司 | 可编程人工智能加速器执行单元及人工智能加速方法 |
EP3640810A4 (en) * | 2018-08-28 | 2021-05-05 | Cambricon Technologies Corporation Limited | DATA PRE-PROCESSING PROCESS AND APPARATUS, COMPUTER DEVICE AND STORAGE MEDIA |
CN109242091B (zh) * | 2018-09-03 | 2022-03-22 | 郑州云海信息技术有限公司 | 图像识别方法、装置、设备及可读存储介质 |
KR20200026455A (ko) * | 2018-09-03 | 2020-03-11 | 삼성전자주식회사 | 인공 신경망 시스템 및 인공 신경망의 고정 소수점 제어 방법 |
US20200082269A1 (en) * | 2018-09-12 | 2020-03-12 | Nvidia Corporation | Memory efficient neural networks |
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 | 上海寒武纪信息科技有限公司 | 数据传输方法及相关产品 |
WO2020070916A1 (ja) * | 2018-10-02 | 2020-04-09 | 日本電信電話株式会社 | 算出装置、算出方法及び算出プログラム |
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 |
CN110096310B (zh) * | 2018-11-14 | 2021-09-03 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN110096309B (zh) * | 2018-11-14 | 2020-04-14 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111047028A (zh) * | 2018-10-12 | 2020-04-21 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN111353125B (zh) * | 2018-12-20 | 2022-04-22 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111061507A (zh) * | 2018-10-16 | 2020-04-24 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111047027A (zh) * | 2018-10-12 | 2020-04-21 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
WO2020073925A1 (zh) * | 2018-10-09 | 2020-04-16 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111353595A (zh) * | 2018-12-20 | 2020-06-30 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN111045729A (zh) * | 2018-10-12 | 2020-04-21 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN111026440B (zh) * | 2018-10-09 | 2022-03-29 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111222633A (zh) * | 2018-11-23 | 2020-06-02 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN111275197B (zh) * | 2018-12-05 | 2023-11-10 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN110096283A (zh) * | 2018-10-12 | 2019-08-06 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111290788B (zh) * | 2018-12-07 | 2022-05-31 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111124497B (zh) * | 2018-10-11 | 2022-03-29 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
WO2020073923A1 (zh) * | 2018-10-09 | 2020-04-16 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111047030A (zh) * | 2018-10-11 | 2020-04-21 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111290789B (zh) * | 2018-12-06 | 2022-05-27 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111047005A (zh) * | 2018-10-11 | 2020-04-21 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111353124A (zh) * | 2018-12-20 | 2020-06-30 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN111047023B (zh) * | 2018-10-12 | 2023-11-24 | 上海寒武纪信息科技有限公司 | 一种计算装置及相关产品 |
CN111047024B (zh) * | 2018-10-12 | 2023-05-23 | 上海寒武纪信息科技有限公司 | 一种计算装置及相关产品 |
CN111078624B (zh) * | 2018-10-18 | 2022-03-25 | 上海寒武纪信息科技有限公司 | 片上网络处理系统和片上网络数据处理方法 |
CN111079908B (zh) * | 2018-10-18 | 2024-02-13 | 上海寒武纪信息科技有限公司 | 片上网络数据处理方法、存储介质、计算机设备和装置 |
CN111209230B (zh) * | 2018-11-21 | 2021-08-31 | 上海寒武纪信息科技有限公司 | 数据处理装置、方法及相关产品 |
CN111078623B (zh) * | 2018-10-18 | 2022-03-29 | 上海寒武纪信息科技有限公司 | 片上网络处理系统和片上网络数据处理方法 |
CN111209245B (zh) * | 2018-11-21 | 2021-11-16 | 上海寒武纪信息科技有限公司 | 数据处理装置、方法及相关产品 |
CN111210012B (zh) * | 2018-11-21 | 2022-12-09 | 上海寒武纪信息科技有限公司 | 数据处理方法、装置及相关产品 |
CN111209231B (zh) * | 2018-11-21 | 2021-05-11 | 上海寒武纪信息科技有限公司 | 数据处理方法、装置及相关产品 |
US20220035762A1 (en) | 2018-10-18 | 2022-02-03 | Shanghai Cambricon Information Technology Co., Ltd. | Network-on-chip data processing method and device |
CN111078625B (zh) * | 2018-10-18 | 2022-03-29 | 上海寒武纪信息科技有限公司 | 片上网络处理系统和片上网络数据处理方法 |
CN111209243B (zh) * | 2018-11-21 | 2022-12-02 | 上海寒武纪信息科技有限公司 | 数据处理装置、方法及相关产品 |
CN111210011B (zh) * | 2018-11-21 | 2022-12-02 | 上海寒武纪信息科技有限公司 | 数据处理装置及相关产品 |
CN111209244B (zh) * | 2018-11-21 | 2022-05-06 | 上海寒武纪信息科技有限公司 | 数据处理装置及相关产品 |
CN111079909B (zh) * | 2018-10-19 | 2021-01-26 | 安徽寒武纪信息科技有限公司 | 运算方法、系统及相关产品 |
CN111078284B (zh) * | 2018-10-19 | 2021-02-05 | 中科寒武纪科技股份有限公司 | 运算方法、系统及相关产品 |
CN111078291B (zh) * | 2018-10-19 | 2021-02-09 | 中科寒武纪科技股份有限公司 | 运算方法、系统及相关产品 |
CN111079913B (zh) * | 2018-10-19 | 2021-02-05 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN111078286B (zh) * | 2018-10-19 | 2023-09-01 | 上海寒武纪信息科技有限公司 | 数据通信方法、计算系统和存储介质 |
CN111079912B (zh) * | 2018-10-19 | 2021-02-12 | 中科寒武纪科技股份有限公司 | 运算方法、系统及相关产品 |
CN111078280B (zh) * | 2018-10-19 | 2021-01-26 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN111078282B (zh) * | 2018-10-19 | 2020-12-22 | 安徽寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN109669773B (zh) * | 2018-11-12 | 2024-03-08 | 平安科技(深圳)有限公司 | 金融数据处理方法、装置、设备和存储介质 |
CN111191774B (zh) * | 2018-11-14 | 2023-04-07 | 上海富瀚微电子股份有限公司 | 面向精简卷积神经网络的低代价加速器架构及其处理方法 |
CN111258641B (zh) * | 2018-11-30 | 2022-12-09 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN111258935B (zh) * | 2018-11-30 | 2022-01-25 | 上海寒武纪信息科技有限公司 | 数据传输装置和方法 |
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 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
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 | 西安交通大学 | 一种稀疏卷积神经网络加速器及实现方法 |
CN111368967B (zh) * | 2018-12-25 | 2023-04-07 | 上海寒武纪信息科技有限公司 | 一种神经网络计算装置和方法 |
CN111367567B (zh) * | 2018-12-25 | 2023-03-07 | 上海寒武纪信息科技有限公司 | 一种神经网络计算装置和方法 |
CN111368990B (zh) * | 2018-12-25 | 2023-03-07 | 上海寒武纪信息科技有限公司 | 一种神经网络计算装置和方法 |
CN111368985B (zh) * | 2018-12-25 | 2023-11-28 | 上海寒武纪信息科技有限公司 | 一种神经网络计算装置和方法 |
CN111383637A (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 | 上海寒武纪信息科技有限公司 | 地址分配方法及装置 |
CN111723920B (zh) * | 2019-03-22 | 2024-05-17 | 中科寒武纪科技股份有限公司 | 人工智能计算装置及相关产品 |
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 |
US20200334522A1 (en) | 2019-04-18 | 2020-10-22 | Cambricon Technologies Corporation Limited | Data processing method and related products |
CN111832739B (zh) | 2019-04-18 | 2024-01-09 | 中科寒武纪科技股份有限公司 | 一种数据处理方法及相关产品 |
WO2020220935A1 (zh) * | 2019-04-27 | 2020-11-05 | 中科寒武纪科技股份有限公司 | 运算装置 |
CN111860798A (zh) * | 2019-04-27 | 2020-10-30 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN111966402A (zh) * | 2019-05-20 | 2020-11-20 | 上海寒武纪信息科技有限公司 | 指令处理方法、装置及相关产品 |
CN111966401A (zh) * | 2019-05-20 | 2020-11-20 | 上海寒武纪信息科技有限公司 | 指令处理方法、装置及相关产品 |
CN110298441B (zh) * | 2019-05-24 | 2022-01-11 | 深圳云天励飞技术有限公司 | 一种数据处理方法、电子装置及计算机可读存储介质 |
CN112068799B (zh) * | 2019-06-11 | 2022-08-02 | 云南大学 | 一种最优带符号二进制快速计算方法以及椭圆曲线标量乘法 |
CN112085191B (zh) | 2019-06-12 | 2024-04-02 | 上海寒武纪信息科技有限公司 | 一种神经网络的量化参数确定方法及相关产品 |
US11676028B2 (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 | 湖北亿咖通科技有限公司 | 基于命名实体模型的字符串识别方法、电子设备、存储介质 |
WO2021022441A1 (zh) * | 2019-08-05 | 2021-02-11 | 华为技术有限公司 | 数据传输方法、装置、电子设备及可读存储介质 |
CN112346707A (zh) * | 2019-08-07 | 2021-02-09 | 上海寒武纪信息科技有限公司 | 指令处理方法、装置及相关产品 |
CN112346784A (zh) * | 2019-08-07 | 2021-02-09 | 上海寒武纪信息科技有限公司 | 指令处理方法、装置及相关产品 |
CN112395006B (zh) * | 2019-08-13 | 2024-07-26 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
JP7146952B2 (ja) | 2019-08-23 | 2022-10-04 | 安徽寒武紀信息科技有限公司 | データ処理方法、装置、コンピュータデバイス、及び記憶媒体 |
CN110728365B (zh) * | 2019-09-12 | 2022-04-01 | 东南大学 | 多位宽pe阵列计算位宽的选择方法及计算精度控制电路 |
US11579802B2 (en) * | 2019-10-04 | 2023-02-14 | Fungible, Inc. | Pipeline using match-action blocks |
WO2021073188A1 (zh) * | 2019-10-15 | 2021-04-22 | 北京希姆计算科技有限公司 | 数据运算电路、数据处理装置、芯片、卡板及电子设备 |
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 | 苏州浪潮智能科技有限公司 | 一种判断存储容量变化量异常的方法、系统及存储介质 |
US12039432B2 (en) * | 2020-03-18 | 2024-07-16 | 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 | 安徽寒武纪信息科技有限公司 | 数据处理方法及装置以及相关产品 |
CN113807507B (zh) * | 2020-06-16 | 2024-09-27 | 安徽寒武纪信息科技有限公司 | 数据处理方法及装置以及相关产品 |
CN111832718B (zh) * | 2020-06-24 | 2021-08-03 | 上海西井信息科技有限公司 | 芯片架构 |
CN113867799A (zh) * | 2020-06-30 | 2021-12-31 | 上海寒武纪信息科技有限公司 | 计算装置、集成电路芯片、板卡、电子设备和计算方法 |
CN113867800A (zh) * | 2020-06-30 | 2021-12-31 | 上海寒武纪信息科技有限公司 | 计算装置、集成电路芯片、板卡、电子设备和计算方法 |
CN113867793A (zh) * | 2020-06-30 | 2021-12-31 | 上海寒武纪信息科技有限公司 | 计算装置、集成电路芯片、板卡、电子设备和计算方法 |
CN111783954B (zh) * | 2020-06-30 | 2023-05-02 | 安徽寒武纪信息科技有限公司 | 一种用于确定神经网络的性能的方法、电子设备和存储介质 |
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 | 北京百度网讯科技有限公司 | 语音处理系统、语音处理方法、电子设备和可读存储介质 |
US20220101110A1 (en) * | 2020-09-25 | 2022-03-31 | Advanced Micro Devices, Inc. | Persistent weights in training |
CN112257859B (zh) * | 2020-10-30 | 2024-07-05 | 地平线(上海)人工智能技术有限公司 | 特征数据处理方法及装置、设备、存储介质 |
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 | 上海寒武纪信息科技有限公司 | 在神经网络模型中执行剪枝优化的集成电路装置及板卡 |
CN113806285B (zh) * | 2021-09-18 | 2024-06-25 | 北京爱芯科技有限公司 | 一种数据处理模组、芯片和数据处理方法 |
CN114281874A (zh) * | 2021-11-19 | 2022-04-05 | 北京大学 | 一种基于昇腾ai处理器的索引转换方法及装置 |
CN114237612B (zh) * | 2021-12-03 | 2024-09-17 | 龙芯中科技术股份有限公司 | 程序代码的编译方法、装置、电子设备及存储介质 |
CN114139693B (zh) * | 2021-12-03 | 2024-08-13 | 安谋科技(中国)有限公司 | 神经网络模型的数据处理方法、介质和电子设备 |
CN114296798B (zh) * | 2021-12-10 | 2024-08-13 | 龙芯中科技术股份有限公司 | 向量移位方法、处理器及电子设备 |
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 | 广东齐芯半导体有限公司 | 一种卷积计算电路、神经网络处理器以及卷积计算方法 |
CN114612996A (zh) * | 2022-03-31 | 2022-06-10 | 安谋科技(中国)有限公司 | 神经网络模型的运行方法、介质、程序产品以及电子设备 |
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 | 摩尔线程智能科技(北京)有限责任公司 | 数据的处理方法、图形处理器、电子设备及存储介质 |
KR102653745B1 (ko) * | 2023-06-02 | 2024-04-02 | 라이프앤사이언스주식회사 | 최적화된 연산속도를 가지는 교육용 로봇제어기 |
CN117992396B (zh) * | 2024-03-29 | 2024-05-28 | 深存科技(无锡)有限公司 | 流式张量处理器 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1034078A (zh) * | 1988-01-09 | 1989-07-19 | 北京信通电脑技术公司 | 直接处理接近数学公式的“机器表达式”的计算机系统 |
CN1672128A (zh) * | 2002-07-26 | 2005-09-21 | 皇家飞利浦电子股份有限公司 | 用于并行访问多个矢量元素的方法和设备 |
CN101833441A (zh) * | 2010-04-28 | 2010-09-15 | 中国科学院自动化研究所 | 并行向量处理引擎结构 |
CN102880341A (zh) * | 2012-08-29 | 2013-01-16 | 北京集创北方科技有限公司 | 触摸屏数据处理系统、方法及专用alu |
CN103246541A (zh) * | 2013-04-27 | 2013-08-14 | 中国人民解放军信息工程大学 | 自动并行化多级并行代价评估方法 |
US20130212714A1 (en) * | 2010-10-12 | 2013-08-15 | ST Electronics (Info-Software Systems) Pte Ltd. | Information Management System And Device |
CN104145281A (zh) * | 2012-02-03 | 2014-11-12 | 安秉益 | 神经网络计算装置和系统及其方法 |
CN105630680A (zh) * | 2015-12-28 | 2016-06-01 | 中国科学院微电子研究所 | 一种随机测试程序生成方法 |
CN105844330A (zh) * | 2016-03-22 | 2016-08-10 | 华为技术有限公司 | 神经网络处理器的数据处理方法及神经网络处理器 |
CN106909971A (zh) * | 2017-02-10 | 2017-06-30 | 华南理工大学 | 一种面向多核计算环境的bp神经网络并行化方法 |
Family Cites Families (85)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US7236995B2 (en) * | 2002-12-27 | 2007-06-26 | Arm Limited | Data processing apparatus and method for converting a number between fixed-point and floating-point representations |
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 | 上海芯盛电子科技有限公司 | 图像智能模式识别搜索方法 |
US20080184011A1 (en) * | 2007-01-30 | 2008-07-31 | 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 | 田耕 | 一种利用动态矢量矩阵的加密通信方法 |
US9129220B2 (en) * | 2010-07-07 | 2015-09-08 | Qualcomm Incorporated | Methods and systems for digital neural processing with discrete-level synapes and probabilistic STDP |
CN101916180B (zh) * | 2010-08-11 | 2013-05-29 | 中国科学院计算技术研究所 | Risc处理器中执行寄存器类型指令的方法和其系统 |
CN101963983A (zh) * | 2010-09-28 | 2011-02-02 | 江苏瑞蚨通软件科技有限公司(中外合资) | 一种粗集优化神经网络的数据挖掘方法 |
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 | 中国科学院空间科学与应用研究中心 | 一种时间分辨单光子计数二维成像系统及方法 |
CN103975302B (zh) * | 2011-12-22 | 2017-10-27 | 英特尔公司 | 矩阵乘法累加指令 |
CN102609378B (zh) * | 2012-01-18 | 2016-03-30 | 中国科学院计算技术研究所 | 一种消息式内存访问装置及其访问方法 |
CN103377033B (zh) * | 2012-04-12 | 2016-01-13 | 无锡江南计算技术研究所 | 运算核心及其指令管理方法 |
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 |
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 |
US9805303B2 (en) * | 2015-05-21 | 2017-10-31 | Google Inc. | Rotating data for neural network computations |
US10083395B2 (en) * | 2015-05-21 | 2018-09-25 | Google Llc | Batch processing in a neural network processor |
CN104915322B (zh) * | 2015-06-09 | 2018-05-01 | 中国人民解放军国防科学技术大学 | 一种卷积神经网络硬件加速方法 |
US9973194B2 (en) * | 2015-09-01 | 2018-05-15 | Flex Logix Technologies, Inc. | Block memory layout and architecture for programmable logic IC, and method of operating same |
US10776690B2 (en) * | 2015-10-08 | 2020-09-15 | Via Alliance Semiconductor Co., Ltd. | Neural network unit with plurality of selectable output functions |
CN106485318B (zh) * | 2015-10-08 | 2019-08-30 | 上海兆芯集成电路有限公司 | 具有混合协处理器/执行单元神经网络单元的处理器 |
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 |
CN105512723B (zh) * | 2016-01-20 | 2018-02-16 | 南京艾溪信息科技有限公司 | 一种用于稀疏连接的人工神经网络计算装置和方法 |
US10762164B2 (en) * | 2016-01-20 | 2020-09-01 | Cambricon Technologies Corporation Limited | Vector and matrix computing device |
CN105843775B (zh) * | 2016-04-06 | 2018-12-04 | 中国科学院计算技术研究所 | 片上数据划分读写方法、系统及其装置 |
CN105912476A (zh) * | 2016-04-06 | 2016-08-31 | 中国科学院计算技术研究所 | 片上重复寻址的方法及装置 |
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 |
US20170337156A1 (en) * | 2016-04-26 | 2017-11-23 | Onnivation Llc | Computing machine architecture for matrix and array processing |
CN105930281B (zh) * | 2016-05-12 | 2019-01-15 | 清华大学 | 以配置信息驱动数据访存模式匹配的片上缓存预取机制 |
CN106022614A (zh) * | 2016-05-22 | 2016-10-12 | 广州供电局有限公司 | 一种基于最近邻聚类的神经网络数据挖掘方法 |
CN106066783A (zh) * | 2016-06-02 | 2016-11-02 | 华为技术有限公司 | 基于幂次权重量化的神经网络前向运算硬件结构 |
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 | 南京工业大学 | 递归神经网络的多计算单元粗粒度可重构系统及方法 |
CN106940815B (zh) * | 2017-02-13 | 2020-07-28 | 西安交通大学 | 一种可编程卷积神经网络协处理器ip核 |
CN106951961B (zh) * | 2017-02-24 | 2019-11-26 | 清华大学 | 一种粗粒度可重构的卷积神经网络加速器及系统 |
CN109121435A (zh) * | 2017-04-19 | 2019-01-01 | 上海寒武纪信息科技有限公司 | 处理装置和处理方法 |
CN107729990B (zh) * | 2017-07-20 | 2021-06-08 | 上海寒武纪信息科技有限公司 | 支持离散数据表示的用于执行正向运算的装置及方法 |
US10223114B1 (en) * | 2017-09-29 | 2019-03-05 | Intel Corporation | Fixed point to floating point conversion |
US11210063B2 (en) * | 2019-03-27 | 2021-12-28 | Intel Corporation | Machine learning training architecture for programmable devices |
US11983530B2 (en) * | 2020-03-27 | 2024-05-14 | Intel Corporation | Reconfigurable digital signal processing (DSP) vector engine |
-
2017
- 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 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
- 2017-07-20 CN CN201710927336.6A patent/CN107729989B/zh active Active
- 2017-07-20 CN CN201710927307.XA patent/CN109284130B/zh active Active
- 2017-07-20 CN CN201710927267.9A patent/CN107832082B/zh active Active
- 2017-07-20 CN CN201710927338.5A patent/CN107608715B/zh active Active
-
2018
- 2018-07-13 CN CN201911058840.2A patent/CN110825434B/zh active Active
- 2018-07-13 CN CN201880004680.0A patent/CN110036369B/zh active Active
- 2018-07-13 CN CN202010189417.2A patent/CN111221578B/zh active Active
- 2018-07-13 CN CN201911069248.2A patent/CN110597559B/zh active Active
- 2018-07-13 CN CN201911057705.6A patent/CN110597558B/zh active Active
- 2018-07-13 CN CN201911058837.0A patent/CN110688159B/zh active Active
- 2018-07-13 WO PCT/CN2018/095706 patent/WO2019015541A1/zh unknown
- 2018-07-13 CN CN201911058620.XA patent/CN110688157B/zh active Active
- 2018-07-13 CN CN202010189355.5A patent/CN111176727B/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
-
2020
- 2020-01-17 US US16/745,743 patent/US11481215B2/en active Active
-
2022
- 2022-09-05 US US17/929,730 patent/US11983534B2/en active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1034078A (zh) * | 1988-01-09 | 1989-07-19 | 北京信通电脑技术公司 | 直接处理接近数学公式的“机器表达式”的计算机系统 |
CN1672128A (zh) * | 2002-07-26 | 2005-09-21 | 皇家飞利浦电子股份有限公司 | 用于并行访问多个矢量元素的方法和设备 |
CN101833441A (zh) * | 2010-04-28 | 2010-09-15 | 中国科学院自动化研究所 | 并行向量处理引擎结构 |
US20130212714A1 (en) * | 2010-10-12 | 2013-08-15 | ST Electronics (Info-Software Systems) Pte Ltd. | Information Management System And Device |
CN104145281A (zh) * | 2012-02-03 | 2014-11-12 | 安秉益 | 神经网络计算装置和系统及其方法 |
CN102880341A (zh) * | 2012-08-29 | 2013-01-16 | 北京集创北方科技有限公司 | 触摸屏数据处理系统、方法及专用alu |
CN103246541A (zh) * | 2013-04-27 | 2013-08-14 | 中国人民解放军信息工程大学 | 自动并行化多级并行代价评估方法 |
CN105630680A (zh) * | 2015-12-28 | 2016-06-01 | 中国科学院微电子研究所 | 一种随机测试程序生成方法 |
CN105844330A (zh) * | 2016-03-22 | 2016-08-10 | 华为技术有限公司 | 神经网络处理器的数据处理方法及神经网络处理器 |
CN106909971A (zh) * | 2017-02-10 | 2017-06-30 | 华南理工大学 | 一种面向多核计算环境的bp神经网络并行化方法 |
Non-Patent Citations (1)
Title |
---|
于玉龙: "大规模并行处理器上资源与性能优化的调度方法研究", 《中国博士学位论文全文数据库 信息科技辑》 * |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110597558B (zh) | 一种神经网络任务处理系统 | |
CN111310910B (zh) | 一种计算装置及方法 | |
CN109284823B (zh) | 一种运算装置及相关产品 | |
CN109358900B (zh) | 支持离散数据表示的人工神经网络正向运算装置和方法 | |
CN110163363B (zh) | 一种计算装置及方法 | |
CN110163334B (zh) | 集成电路芯片装置及相关产品 | |
JP2017107579A (ja) | リードマスク及びライトマスクにより制御されるベクトル移動命令 | |
CN111626413A (zh) | 一种计算装置及方法 | |
CN111045728B (zh) | 一种计算装置及相关产品 | |
WO2017177446A1 (zh) | 支持离散数据表示的人工神经网络反向训练装置和方法 | |
CN104823153B (zh) | 用于执行指令的处理器、归一化加法运算的方法、通信设备、机器可读介质、用于处理指令的设备和设备 | |
CN113570053A (zh) | 一种神经网络模型的训练方法、装置以及计算设备 | |
US12131250B2 (en) | Inner product convolutional neural network accelerator |
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 |