CN112612521A - 一种用于执行矩阵乘运算的装置和方法 - Google Patents
一种用于执行矩阵乘运算的装置和方法 Download PDFInfo
- Publication number
- CN112612521A CN112612521A CN202011394971.0A CN202011394971A CN112612521A CN 112612521 A CN112612521 A CN 112612521A CN 202011394971 A CN202011394971 A CN 202011394971A CN 112612521 A CN112612521 A CN 112612521A
- Authority
- CN
- China
- Prior art keywords
- matrix
- instruction
- data
- multiplication
- module
- 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.)
- Pending
Links
- 239000011159 matrix material Substances 0.000 title claims abstract description 366
- 238000000034 method Methods 0.000 title claims abstract description 42
- 230000008569 process Effects 0.000 claims abstract description 20
- 239000013598 vector Substances 0.000 claims description 91
- 238000012545 processing Methods 0.000 claims description 30
- 238000009825 accumulation Methods 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000001737 promoting effect Effects 0.000 description 2
- 238000005481 NMR spectroscopy Methods 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 210000004205 output neuron Anatomy 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
Images
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/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
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- 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/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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
-
- 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/76—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
- G06F7/78—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data for changing the order of data flow, e.g. matrix transposition or LIFO buffers; Overflow or underflow handling therefor
-
- 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
-
- 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/355—Indexed addressing
- G06F9/3557—Indexed addressing using program counter as base address
-
- 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/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
- Image Analysis (AREA)
Abstract
本公开公开了一种用于执行矩阵乘运算的装置,其特征在于,包括控制单元和矩阵运算单元,其中,控制单元用于对矩阵运算指令进行译码,并控制矩阵运算指令的运算过程;矩阵运算单元用于根据译码后的矩阵运算指令,对输入矩阵进行矩阵乘运算操作。
Description
技术领域
本公开涉及计算机领域,尤其涉及一种用于执行矩阵乘运算的装置和方法。
背景技术
当前计算机领域,伴随着大数据、机器学习等新兴技术的成熟,越来越多的任务中包含了各种各样的矩阵乘运算,尤其是大矩阵的乘运算,这些往往成为算法速度和效果提高的瓶颈。以目前火热的深度学习为例,其中就包含着大量的矩阵乘运算。在深度学习的人工神经网络全连接层中,输出神经元的运算表达式为y=f(wx+b),其中w是权值矩阵,x是输入向量,b是偏置向量,计算输出矩阵y的过程为矩阵w与向量x相乘,加上向量b,然后对得到的向量进行激活函数运算(即对矩阵中的每个元素进行激活函数运算)。在这个过程中,矩阵乘向量运算的复杂度远高于之后的加偏置和做激活的操作,高效的实现前者对于整个运算过程有着最重要的影响。由此可见,高效实现矩阵乘运算是提升许多计算机算法的有效方法。
在现有技术中,一种进行矩阵运算的已知方案是使用通用处理器,该方法通过通用寄存器堆和通用功能部件来执行通用指令,从而执行矩阵乘运算。然而,该方法的缺点之一是单个通用处理器多用于标量计算,在进行矩阵运算时运算性能较低。而使用多个通用处理器并行执行时,处理器的个数较少提升的效果不做够显著;处理器个数较高时它们之间的相互通讯又有可能成为性能瓶颈。
在另一种现有技术中,使用图形处理器(GPU)来进行一系列矩阵乘计算,其中,通过使用通用寄存器堆和通用流处理单元执行通用SIMD指令来进行运算。但在上述方案中,GPU片上缓存太小,在进行大规模矩阵运算时需要不断进行片外数据搬运,片外带宽成为了主要性能瓶颈。
在另一种现有技术中,使用专门定制的矩阵运算装置来进行矩阵乘运算,其中,使用定制的寄存器堆和定制的处理单元进行矩阵运算。然而根据这种方法,目前已有的专用矩阵运算装置受限于寄存器堆的设计,不能够灵活地支持不同长度的矩阵运算。
综上所述,现有的不管是片上多核通用处理器、片间互联通用处理器(单核或多核)、还是片间互联图形处理器都无法进行高效的矩阵乘运算,并且这些现有技术在处理矩阵乘运算问题时存在着代码量大,受限于片间通讯,片上缓存不够,支持的矩阵规模不够灵活等问题。
发明内容
基于此,本公开提供了一种执行矩阵乘运算的装置和方法。
根据本公开一方面,提供了一种用于执行矩阵乘运算的装置,包括:控制单元,用于对矩阵运算指令进行译码,并控制矩阵运算指令的运算过程;矩阵运算单元,与控制单元相连接;所述矩阵运算单元用于接收译码后的矩阵运算指令和输入矩阵,并用于根据译码后的矩阵运算指令,对输入矩阵进行矩阵乘运算操作;其中,所述矩阵运算单元为定制的硬件电路。
根据本公开另一方面,提供了一种用于执行矩阵乘运算的装置,包括:取指模块,用于从指令序列中取出下一条要执行的矩阵运算指令,并将该矩阵运算指令传给译码模块;译码模块,用于对该矩阵运算指令进行译码,并将译码后的矩阵运算指令传送给指令队列模块;指令队列模块,用于暂存译码后的矩阵运算指令,并从矩阵运算指令或标量寄存器获得矩阵运算指令运算相关的标量数据;获得所述标量数据后,将所述矩阵运算指令送至依赖关系处理单元;标量寄存器堆,包括多个标量寄存器,用于存储矩阵运算指令相关的标量数据;依赖关系处理单元,用于判断所述矩阵运算指令与之前未执行完的运算指令之间是否存在依赖关系;如果存在依赖关系,则将所述矩阵运算指令送至存储队列模块,如果不存在依赖关系,则将所述矩阵运算指令送至矩阵运算单元;存储队列模块,用于存储与之前运算指令存在依赖关系的矩阵运算指令,并且在所述依赖关系解除后,将所述矩阵运算指令送至矩阵运算单元;矩阵运算单元,用于根据接收到矩阵运算指令对输入矩阵进行矩阵乘运算操作;高速暂存存储器,用于存储输入矩阵和输出矩阵;输入输出存取模块,用于直接访问所述高速暂存存储器,负责从所述高速暂存存储器中读取输出矩阵和写入输入矩阵。
本公开还提供了执行矩阵乘向量和矩阵乘标量的方法。
本公开可以应用于以下(包括但不限于)场景中:数据处理、机器人、电脑、打印机、扫描仪、电话、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备等各类电子产品;飞机、轮船、车辆等各类交通工具;电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机等各类家用电器;以及包括核磁共振仪、B超、心电图仪等各类医疗设备。
附图说明
图1是根据本公开实施例的执行矩阵乘运算的装置的结构示意图。
图2是根据本公开实施例的矩阵运算单元的操作示意图。
图3是根据本公开实施例的指令集的格式示意图。
图4是根据本公开实施例的矩阵运算装置的结构示意图。
图5是根据本公开实施例的矩阵运算装置执行矩阵乘向量指令的流程图。
图6是根据本公开实施例的矩阵运算装置执行矩阵乘标量指令的流程图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开作进一步的详细说明。
本公开提供了一种矩阵乘运算装置,包括:存储单元、寄存器单元、控制单元和矩阵运算单元;
所述存储单元存储矩阵;
所述寄存器单元中存储有向量地址、向量长度、矩阵地址、矩阵长度以及其他计算过程中需要的标量数据;
所述控制单元用于对矩阵运算指令执行译码操作,并根据矩阵运算指令控制各个模块,以控制矩阵乘运算的执行过程;
矩阵运算单元在指令中或寄存器单元中获取向量地址、向量长度、矩阵地址、矩阵长度以及其他计算需要的标量数据,然后,根据该输入矩阵地址在存储单元中获取相应的矩阵,接着,根据获取的矩阵进行矩阵乘运算,得到运算结果。
本公开将参与计算的矩阵数据暂存在存储单元(例如,高速暂存存储器)上,使得矩阵运算过程中可以更加灵活有效地支持不同宽度的数据,提升包含大量矩阵乘运算任务的执行性能。
本公开中,所述矩阵乘运算单元可以实现为定制的硬件电路(例如包括但不限于FPGA、CGRA、专用集成电路ASIC、模拟电路和忆阻器等)。
图1是本公开提供的用于执行矩阵乘运算的装置的结构示意图,如图1所示,该装置包括:
存储单元,用于存储矩阵。在一种实施方式中,该存储单元可以是高速暂存存储器,能够支持不同大小的矩阵数据;本公开将必要的计算数据暂存在高速暂存存储器上(Scratchpad Memory),使本运算装置在进行矩阵运算过程中可以更加灵活有效地支持不同宽度的数据,存储单元可以通过各种不同存储器件(SRAM、eDRAM、DRAM、忆阻器、3D-DRAM或非易失存储等)实现。
寄存器单元,用于存储矩阵地址,其中,矩阵地址为矩阵在存储单元中存储的地址;在一种实施方式中,寄存器单元可以是标量寄存器堆,提供运算过程中所需的标量寄存器,标量寄存器存储输入矩阵地址、输入矩阵长度、输出矩阵地址。当涉及到矩阵与标量的运算时,矩阵运算单元不仅要从寄存器单元中获取矩阵地址,还要从寄存器单元中获取相应的标量。
控制单元,用于控制装置中各个模块的行为。在一种实施方式中,控制单元读取准备好的指令,进行译码生成控制信号,发送给装置中的其他模块,其他模块根据得到的控制信号执行相应的操作。
矩阵运算单元,用于获取各种矩阵乘运算指令,根据指令在所述寄存器单元中获取矩阵地址,然后,根据该矩阵地址在存储单元中获取相应的矩阵,接着,根据获取的矩阵进行运算,得到矩阵运算结果,并将矩阵运算结果存储于存储单元中。矩阵运算单元负责装置的所有矩阵乘运算,包括但不限于矩阵乘向量操作、向量乘矩阵操作、矩阵乘法操作和矩阵乘标量操作。矩阵乘运算指令被送往该运算单元执行。
图2示出了根据本公开实施例的矩阵运算单元的示意框图。如图所示,矩阵乘运算单元由一个主运算模块和多个从运算模块组成。其中,每个从运算模块均可以实现向量点积的运算,包括两向量的对位相乘以及的对乘结果的求和。每个从运算模块由三个部分组成,依次是向量对位乘模块,加法树模块以及累加模块。对位乘模块完成两向量的对位相乘,加法树模块将对位相乘的结果向量加成一个数,累加模块则是将加法树的结果累加在之前的部分和上。在实际计算两矩阵A和B的乘运算过程中,矩阵B的数据按列依次存储在各从运算模块中,即第一列存储在从运算模块1中,第二列存储在从运算模块2中,…,第N+1列存储在从运算模块1中,依次类推。而矩阵A的数据则存储在主运算模块中。在计算过程中,主运算模块每次取出A的一行数据,并广播给所有的从运算模块,每个从运算模块完成A中行数据与自己存储的列数据的点积运算,并将结果返回至主运算模块,主运算模块获得所有从运算模块返回的数据,最终得到结果矩阵中的一行。具体到每个从运算模块的计算过程,从运算模块每次取出两向量的一部分,该宽度等于从运算模块的计算位宽,也就是从运算模块对位乘法器可以同时执行的对位乘的个数。经过对位乘后的结果通过加法树得到一个值,该值被暂存在累加模块中,当下一段向量的加法树结果送至累加模块时,被累加在该值上。通过这种分段运算的方法完成向量内积的运算。
矩阵乘标量的运算则在主运算模块中完成,即主运算模块中也有同样的对位乘法器,其输入一来自于矩阵数据,另一输入来自于标量扩展成的向量。
上文所述对位乘法器即多个并行的标量乘单元,这些乘单元同时读取向量中不同位置中的数据并计算出相应的乘积。
根据本公开的一种实施方式,所述矩阵乘运算装置还包括:指令缓存单元,用于存储待执行的矩阵运算指令。指令在执行过程中,同时也被缓存在指令缓存单元中,当一条指令执行完之后,该指令将被提交。
根据本公开的一种实施方式,所述装置中的控制单元还包括:指令队列模块,用于对译码后的矩阵运算指令进行顺序存储,并在获得矩阵运算指令所需的标量数据后,将矩阵运算指令以及标量数据送至依赖关系处理模块。
根据本公开的一种实施方式,所述装置中的控制单元还包括:依赖关系处理单元,用于在矩阵运算单元获取指令前,判断该运算指令与之前未完成运算指令之间是否存在依赖关系,如是否访问相同的矩阵存储地址,若是,将该运算指令送至存储队列模块中,待前一运算指令执行完毕后,将存储队列中的该运算指令提供给所述矩阵运算单元;否则,直接将该运算指令提供给所述矩阵运算单元。具体地,矩阵运算指令需要访问高速暂存存储器时,前后指令可能会访问同一块存储空间,为了保证指令执行结果的正确性,当前指令如果被检测到与之前的指令的数据存在依赖关系,该指令必须在存储队列内等待至依赖关系被消除。
根据本公开的一种实施方式,所述装置中的控制单元还包括:存储队列模块,该模块包括一个有序队列,与之前指令在数据上有依赖关系的指令被存储在该有序队列内直至依赖关系被消除,在依赖关系消除后,其将运算指令提供给矩阵运算单元。
根据本公开的一种实施方式,装置还包括:输入输出单元,用于将矩阵存储于存储单元,或者,从存储单元中获取运算结果。其中,输入输出单元可直接访问存储单元,负责从内存向存储单元读取矩阵数据或从存储单元向内存写入矩阵数据。
在本装置执行矩阵运算的过程中,装置取出指令进行译码,然后送至指令队列存储,根据译码结果,获取指令中的各个参数,这些参数可以是直接写在指令的操作域中,也可以是根据指令操作域中的寄存器号从指定的寄存器中读取。这种使用寄存器存储参数的好处是无需改变指令本身,只要用指令改变寄存器中的值,就可以实现大部分的循环,因此大大节省了在解决某些实际问题时所需要的指令条数。在全部操作数之后,依赖关系处理单元会判断指令实际需要使用的数据与之前指令中是否存在依赖关系,这决定了这条指令是否可以被立即发送至矩阵运算单元中执行。一旦发现与之前的数据之间存在依赖关系,则该条指令必须等到它依赖的指令执行完毕之后才可以送至矩阵运算单元执行。在定制的矩阵运算单元中,该条指令将快速执行完毕,并将结果,即生成的结果矩阵写回至指令提供的地址,该条指令执行完毕。
图3是本公开提供的矩阵乘运算指令的格式示意图,如图3所示,矩阵乘运算指令包括一操作码和至少一操作域,其中,操作码用于指示该矩阵运算指令的功能,矩阵运算单元通过识别该操作码可进行不同的矩阵运算,操作域用于指示该矩阵运算指令的数据信息,其中,数据信息可以是立即数或寄存器号,例如,要获取一个矩阵时,根据寄存器号可以在相应的寄存器中获取矩阵起始地址和矩阵长度,再根据矩阵起始地址和矩阵长度在存储单元中获取相应地址存放的矩阵。
有下列几种矩阵乘运算指令:
矩阵乘向量指令(MMV),根据该指令,装置从高速暂存存储器的指定地址取出指定大小的矩阵数据和向量数据,在矩阵运算单元中进行矩阵乘向量的乘法运算,并将计算结果写回至高速暂存存储器的指定地址;值得说明的是,向量可以作为特殊形式的矩阵(只有一行元素的矩阵)存储于高速暂存存储器中。
向量乘矩阵指令(VMM),根据该指令,装置从高速暂存存储器的指定地址取出指定长度的向量数据和矩阵数据,在矩阵运算单元中进行向量乘矩阵的乘法运算,并将计算结果写回至高速暂存存储器的指定地址;值得说明的是,向量可以作为特殊形式的矩阵(只有一行元素的矩阵)存储于高速暂存存储器中。
矩阵乘法指令(MM),根据该指令,装置从高速暂存存储器的指定地址取出指定大小的矩阵数据,在矩阵运算单元中进行矩阵乘法运算,并将计算结果写回至高速暂存存储器的指定地址。
矩阵乘标量指令(MMS),根据该指令,装置从高速暂存存储器的指定地址取出指定大小的矩阵数据,从标量寄存器堆的指定地址中取出标量数据,在矩阵运算单元中进行矩阵乘标量的乘法运算,并将计算结果写回至高速暂存存储器的指定地址,需要说明的是,标量寄存器堆不仅存储有矩阵的地址,还存储有标量数据。
图4是本公开一实施例提供的矩阵运算装置的结构示意图,如图4所示,装置包括取指模块、译码模块、指令队列模块、标量寄存器堆、依赖关系处理单元、存储队列模块、矩阵运算单元、高速暂存器、IO内存存取模块;
取指模块,该模块负责从指令序列中取出下一条将要执行的指令,并将该指令传给译码模块;
译码模块,该模块负责对指令进行译码,并将译码后指令传给指令队列;
指令队列,用于暂存译码后的矩阵运算指令,并从矩阵运算指令或标量寄存器获得矩阵运算指令运算相关的标量数据;获得所述标量数据后,将所述矩阵运算指令送至依赖关系处理单元;
标量寄存器堆,提供装置在运算过程中所需的标量寄存器;标量寄存器堆包括多个标量寄存器,用于存储矩阵运算指令相关的标量数据;
依赖关系处理单元,该模块处理处理指令与前一条指令可能存在的存储依赖关系。矩阵运算指令会访问高速暂存存储器,前后指令可能会访问同一块存储空间。即该单元会检测当前指令的输入数据的存储范围和之前尚未执行完成的指令的输出数据的存储范围是否有重叠,有则说明该条指令在逻辑上需要使用前面指令的计算结果,因此它必须等到在它之前的所依赖的指令执行完毕后才能够开始执行。在这个过程中,指令实际被暂存在下面的存储队列中。为了保证指令执行结果的正确性,当前指令如果被检测到与之前的指令的数据存在依赖关系,该指令必须在存储队列内等待至依赖关系被消除。
存储队列模块,该模块是一个有序队列,与之前指令在数据上有依赖关系的指令被存储在该队列内直至存储关系被消除;
矩阵运算单元,该模块负责执行矩阵的乘运算;
高速暂存存储器,该模块是矩阵数据专用的暂存存储装置,能够支持不同大小的矩阵数据;主要用于存储输入矩阵数据和输出矩阵数据;
IO内存存取模块,该模块用于直接访问高速暂存存储器,负责从高速暂存存储器中读取数据或写入数据。
本公开提供的矩阵运算装置,将参与计算的矩阵数据暂存在存储单元(例如,高速暂存存储器(Scratchpad Memory))上,使得矩阵运算过程中可以更加灵活有效地支持不同宽度的数据,同时定制的矩阵运算模块能够更加高效地实现各种矩阵乘运算,提升包含大量矩阵计算任务的执行性能,本公开采用的指令集使用方便、支持的矩阵长度灵活。
图5是本公开实施例提供的运算装置执行矩阵乘向量指令的流程图,如图5所示,执行矩阵乘向量指令的过程包括:
S1,取指模块取出该条矩阵乘向量指令,并将该指令送往译码模块。
S2,译码模块对指令译码,并将指令送往指令队列。
S3,在指令队列中,该矩阵乘向量指令需要从标量寄存器堆中获取指令中五个操作域所对应的标量寄存器里的数据,包括输入向量地址、输入向量长度、输入矩阵地址、输出向量地址、输出向量长度。
S4,在取得需要的标量数据后,该指令被送往依赖关系处理单元。依赖关系处理单元分析该指令与前面的尚未执行结束的指令在数据上是否存在依赖关系。该条指令需要在存储队列中等待至其与前面的未执行结束的指令在数据上不再存在依赖关系为止。
S5,依赖关系不存在后,该条矩阵乘向量指令被送往矩阵运算单元。
S6,矩阵运算单元根据所需数据的地址和长度从高速暂存器中取出需要的矩阵和向量数据,然后在矩阵运算单元中完成矩阵乘向量的运算。
S7,运算完成后,将结果写回至高速暂存存储器的指定地址。
图6是本公开实施例提供的运算装置执行矩阵乘标量指令的流程图,如图6所示,执行矩阵乘标量指令的过程包括:
S1’,取指模块取出该条矩阵乘标量指令,并将该指令送往译码模块。
S2’,译码模块对指令译码,并将指令送往指令队列。
S3’,在指令队列中,该矩阵乘标量指令需要从标量寄存器堆中获取指令中四个操作域所对应的标量寄存器里的数据,包括输入矩阵地址、输入矩阵大小、输入标量、输出矩阵地址。
S4’,在取得需要的标量数据后,该指令被送往依赖关系处理单元。依赖关系处理单元分析该指令与前面的尚未执行结束的指令在数据上是否存在依赖关系。该条指令需要在存储队列中等待至其与前面的未执行结束的指令在数据上不再存在依赖关系为止。
S5’,依赖关系不存在后,该条矩阵乘标量指令被送往矩阵运算单元。
S6’,矩阵运算单元根据所需数据的地址和长度从高速暂存器中取出需要的矩阵数据,然后在矩阵运算单元中完成矩阵乘标量的运算。
S7’,运算完成后,将结果矩阵写回至高速暂存存储器的指定地址。
综上所述,本公开提供矩阵运算装置,并配合相应的指令,能够很好地解决当前计算机领域越来越多的算法包含大量矩阵乘运算的问题,相比于已有的传统解决方案,本公开可以具有使用方便、支持的矩阵规模灵活、片上缓存充足等优点。本公开可以用于多种包含大量矩阵乘运算的计算任务,包括目前表现十分出色的人工神经网络算法的反向训练和正向预测,以及传统的如求解不可规约矩阵最大特征值的幂乘法的数值计算方法。
本公开中各功能单元/模块/子模块都可以是硬件,比如该硬件可以是电路,包括数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器等等。所述计算装置中的计算模块可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如RRAM,DRAM,SRAM,EDRAM,HBM,HMC等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (20)
1.一种用于执行矩阵乘运算的装置,其特征在于,包括:
控制单元,用于对矩阵运算指令进行译码,并控制矩阵运算指令的运算过程;其中,所述矩阵运算指令包括操作码和至少一个操作域,所述操作域包括输入矩阵地址、输入矩阵长度和输出矩阵地址;以及
矩阵运算单元,用于接收译码后的矩阵运算指令,并根据所述译码后的矩阵运算指令中的输入矩阵地址和输入矩阵长度获取指定大小的矩阵数据,根据所述译码后的矩阵运算指令进行矩阵乘运算得到结果矩阵,并将所述结果矩阵存储至所述输出矩阵地址指示的存储空间中。
2.根据权利要求1所述的装置,其特征在于,所述输入矩阵地址包括第一矩阵地址和第二矩阵地址,所述输入矩阵长度包括所述第一矩阵长度和所述第二矩阵长度;
所述矩阵运算单元根据所述第一矩阵地址、第二矩阵地址、所述第一矩阵长度和所述第二矩阵长度,分别获取指定大小的第一矩阵数据和第二矩阵数据,将所述第一矩阵数据和所述第二矩阵数据进行矩阵乘法运算,并将所述矩阵运算结果存储至所述输出矩阵地址指示的存储空间中。
3.根据权利要求2所述的装置,其特征在于,所述矩阵乘运算单元包括主运算模块和多个从运算模块;
所述主运算模块用于分多次将所述第一矩阵数据的行向量广播给所述多个从处理模块;其中,每个所述从处理模块中分别存储所述第二矩阵数据的列向量;
每个所述从处理模块用于根据接收到行向量以及所述从处理模块中存储的列向量进行点积运算,并将点积运算结果返回至所述主运算模块;
所述主运算模块用于获得所述多个从运算模块返回的点积运算结果,得到结果矩阵中的相应各行。
4.根据权利要求3所述的装置,其特征在于,所述从处理模块包括:
第一向量对位乘法模块,用于每次取出所述行向量和所述列向量的一部分,获得相应的子行向量和子列向量,并对所述子行向量和所述子列向量进行对位乘法;
第一加法树模块,用于根据对位乘法后的结果得到中间结果;以及
第一累加模块,用于对所述中间结果进行累加,得到所述点积运算结果。
5.根据权利要求4所述的装置,其特征在于,所述向量对位乘法模块用于每次取出特定宽度的子行数据和子列数据进行运算,获得相应的子行向量和子列向量;其中,所述特定位宽等于所述从运算模块的计算位宽。
6.根据权利要求2-5任一项所述的装置,其特征在于,所述矩阵运算指令为矩阵乘法指令;或者,
所述矩阵运算指令为向量乘矩阵指令,所述第一矩阵数据为向量数据;或者,
所述矩阵运算指令为矩阵乘向量指令,所述第二矩阵数据为向量数据。
7.根据权利要求1-5任一项所述的装置,其特征在于,所述矩阵运算指令为矩阵乘标量指令;
所述矩阵运算单元的主运算模块用于根据所述矩阵乘标量指令,获取标量数据,并将所述标量数据扩展为向量,并将所述向量和所述矩阵数据进行对位乘法运算,以获得所述结果矩阵。
8.根据权利要求6或7所述的装置,其特征在于,所述主运算模块包括:
第二向量对位乘法模块,用于完成两向量的对位相乘;
第二加法树模块,用于将对位相乘的结果向量加成一个数;以及
第二累加模块,用于将加法树的结果进行累加。
9.根据权利要求8所述的装置,其特征在于,所述第一向量对位乘模块和所述第二向量对位乘模块包括多个并行的标量乘单元;
所述多个标量乘单元同时读取向量中不同位置中的数据并计算出相应的乘积。
10.根据权利要求1-9任一项所述的装置,其特征在于,所述装置还包括:
存储单元,用于存储矩阵运算指令相关的矩阵数据;以及
输入输出单元,用于将所述矩阵运算指令相关的数据存储于所述存储单元,或者,从所述存储单元中获取矩阵运算指令的运算结果;
其中,所述存储单元为能够支持不同大小的矩阵数据的高速暂存存储器。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括:
寄存器单元,用于存储矩阵运算指令相关的标量数据;其中,所述标量数据包括输入矩阵地址、输入矩阵长度、输出矩阵地址。
12.根据权利要求1-11任一项所述的装置,其特征在于,所述控制单元包括:
取指模块,用于从指令序列中取出下一条要执行的矩阵运算指令;
译码模块,用于对所述取指模块传送的矩阵运算指令进行译码,获得译码后的矩阵运算指令;
指令队列模块,用于对译码后的矩阵运算指令进行顺序存储,并获取矩阵运算指令相关的标量数据;
依赖关系处理单元,用于在矩阵运算单元获取当前矩阵运算指令前,判断当前矩阵运算指令与之前未执行完的矩阵运算指令是否存在依赖关系;
存储队列模块,用于在当前矩阵运算指令与之前未执行完的运算指令存在依赖关系时,暂时存储当前矩阵运算指令,并且在该依赖关系消除时,将暂存的矩阵运算指令送往矩阵运算单元。
13.一种电子设备,其特征在于,包括权利要求1-12任一项所述的用于执行矩阵乘运算的装置。
14.一种矩阵乘运算方法,其特征在于,所述方法包括:
对矩阵运算指令进行译码,并控制矩阵运算指令的运算过程;其中,所述矩阵运算指令包括操作码和至少一个操作域,所述操作域包括输入矩阵地址、输入矩阵长度和输出矩阵地址;
根据所述译码后的矩阵运算指令中的输入矩阵地址和输入矩阵长度获取指定大小的矩阵数据;
根据所述译码后的矩阵运算指令进行矩阵乘运算得到结果矩阵,并将所述结果矩阵存储至所述输出矩阵地址指示的存储空间中。
15.根据权利要求14所述的方法,其特征在于,所述输入矩阵地址包括第一矩阵地址和第二矩阵地址,所述输入矩阵长度包括所述第一矩阵长度和所述第二矩阵长度;
所述的根据所述译码后的矩阵运算指令进行矩阵乘运算得到结果矩阵,并将所述结果矩阵存储至所述输出矩阵地址指示的存储空间中,包括:
根据所述第一矩阵地址、第二矩阵地址、所述第一矩阵长度和所述第二矩阵长度,分别获取指定大小的第一矩阵数据和第二矩阵数据;
将所述第一矩阵数据和所述第二矩阵数据进行矩阵乘法运算,并将所述矩阵运算结果存储至所述输出矩阵地址指示的存储空间中。
16.根据权利要求15所述的方法,其特征在于,所述方法用于包含包括主运算模块和多个从运算模块的装置中,所述将所述第一矩阵数据和所述第二矩阵数据进行矩阵乘法运算,包括:
主运算模块分多次将所述第一矩阵数据的行向量广播给所述多个从处理模块;其中,每个所述从处理模块中分别存储所述第二矩阵数据的列向量;
每个所述从处理模块根据接收到行向量以及所述从处理模块中存储的列向量进行点积运算,并将点积运算结果返回至所述主运算模块;
所述主运算模块获得所述多个从运算模块返回的点积运算结果,得到结果矩阵中的相应各行。
17.根据权利要求16所述的方法,其特征在于,所述每个所述从处理模块根据接收到行向量以及所述从处理模块中存储的列向量进行点积运算,包括:
每次取出所述行向量和所述列向量的一部分,获得相应的子行向量和子列向量,并对所述子行向量和所述子列向量进行对位乘法;
根据对位乘法后的结果得到中间结果;以及
对所述中间结果进行累加,得到所述点积运算结果。
18.根据权利要求17所述的方法,其特征在于,所述每次取出所述行向量和所述列向量的一部分,获得相应的子行向量和子列向量,还包括:
每次取出特定宽度的子行数据和子列数据进行运算,获得相应的子行向量和子列向量;其中,所述特定位宽等于所述从运算模块的计算位宽。
19.根据权利要求14所述的方法,其特征在于,所述矩阵运算指令为矩阵乘法指令;或者,
所述矩阵运算指令为向量乘矩阵指令,所述第一矩阵数据为向量数据;或者,
所述矩阵运算指令为矩阵乘向量指令,所述第二矩阵数据为向量数据。
20.根据权利要求14所述的方法,其特征在于,所述矩阵运算指令为矩阵乘标量指令;
所述的根据所述译码后的矩阵运算指令进行矩阵乘运算得到结果矩阵,并将所述结果矩阵存储至所述输出矩阵地址指示的存储空间中,包括:
根据所述矩阵乘标量指令,获取标量数据,并将所述标量数据扩展为向量,并将所述向量和所述矩阵数据进行对位乘法运算,以获得所述结果矩阵。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011394971.0A CN112612521A (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行矩阵乘运算的装置和方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610266627.0A CN107315574B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行矩阵乘运算的装置和方法 |
CN202011394971.0A CN112612521A (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行矩阵乘运算的装置和方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610266627.0A Division CN107315574B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行矩阵乘运算的装置和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112612521A true CN112612521A (zh) | 2021-04-06 |
Family
ID=60160570
Family Applications (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011394971.0A Pending CN112612521A (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行矩阵乘运算的装置和方法 |
CN201610266627.0A Active CN107315574B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行矩阵乘运算的装置和方法 |
CN201811233425.1A Active CN109240746B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行矩阵乘运算的装置和方法 |
CN201911203822.9A Pending CN111104164A (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行矩阵乘运算的装置和方法 |
CN201911203825.2A Pending CN111090467A (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行矩阵乘运算的装置和方法 |
Family Applications After (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610266627.0A Active CN107315574B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行矩阵乘运算的装置和方法 |
CN201811233425.1A Active CN109240746B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行矩阵乘运算的装置和方法 |
CN201911203822.9A Pending CN111104164A (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行矩阵乘运算的装置和方法 |
CN201911203825.2A Pending CN111090467A (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行矩阵乘运算的装置和方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10592241B2 (zh) |
EP (1) | EP3451162B1 (zh) |
CN (5) | CN112612521A (zh) |
WO (1) | WO2017185389A1 (zh) |
Families Citing this family (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112612521A (zh) | 2016-04-26 | 2021-04-06 | 安徽寒武纪信息科技有限公司 | 一种用于执行矩阵乘运算的装置和方法 |
CN109754061B (zh) * | 2017-11-07 | 2023-11-24 | 上海寒武纪信息科技有限公司 | 卷积扩展指令的执行方法以及相关产品 |
CN109754062B (zh) * | 2017-11-07 | 2024-05-14 | 上海寒武纪信息科技有限公司 | 卷积扩展指令的执行方法以及相关产品 |
WO2019114842A1 (zh) | 2017-12-14 | 2019-06-20 | 北京中科寒武纪科技有限公司 | 一种集成电路芯片装置 |
CN109960673B (zh) * | 2017-12-14 | 2020-02-18 | 中科寒武纪科技股份有限公司 | 集成电路芯片装置及相关产品 |
CN109961133B (zh) * | 2017-12-14 | 2020-04-24 | 中科寒武纪科技股份有限公司 | 集成电路芯片装置及相关产品 |
CN108037908B (zh) * | 2017-12-15 | 2021-02-09 | 中科寒武纪科技股份有限公司 | 一种计算方法及相关产品 |
CN108108190B (zh) * | 2017-12-15 | 2020-01-24 | 中科寒武纪科技股份有限公司 | 一种计算方法及相关产品 |
CN112463115A (zh) * | 2017-12-15 | 2021-03-09 | 安徽寒武纪信息科技有限公司 | 一种计算方法及相关产品 |
CN107957977B (zh) * | 2017-12-15 | 2020-04-24 | 中科寒武纪科技股份有限公司 | 一种计算方法及相关产品 |
CN108108189B (zh) * | 2017-12-15 | 2020-10-30 | 安徽寒武纪信息科技有限公司 | 一种计算方法及相关产品 |
CN108121688B (zh) * | 2017-12-15 | 2020-06-23 | 中科寒武纪科技股份有限公司 | 一种计算方法及相关产品 |
EP3719712B1 (en) * | 2017-12-27 | 2022-09-07 | Cambricon Technologies Corporation Limited | Integrated circuit chip device |
CN109992743B (zh) * | 2017-12-29 | 2020-06-16 | 华为技术有限公司 | 矩阵乘法器 |
CN109993292B (zh) | 2017-12-30 | 2020-08-04 | 中科寒武纪科技股份有限公司 | 集成电路芯片装置及相关产品 |
CN109993290B (zh) | 2017-12-30 | 2021-08-06 | 中科寒武纪科技股份有限公司 | 集成电路芯片装置及相关产品 |
CN113807510B (zh) * | 2017-12-30 | 2024-05-10 | 中科寒武纪科技股份有限公司 | 集成电路芯片装置及相关产品 |
EP3624019A4 (en) | 2017-12-30 | 2021-03-24 | Cambricon Technologies Corporation Limited | CHIP DEVICE WITH INTEGRATED CIRCUIT AND ASSOCIATED PRODUCT |
CN108280161A (zh) * | 2018-01-17 | 2018-07-13 | 新联智慧信息技术(深圳)有限公司 | 大数据的分析方法及*** |
CN108388446A (zh) * | 2018-02-05 | 2018-08-10 | 上海寒武纪信息科技有限公司 | 运算模块以及方法 |
US10970078B2 (en) | 2018-04-05 | 2021-04-06 | Apple Inc. | Computation engine with upsize/interleave and downsize/deinterleave options |
US10642620B2 (en) | 2018-04-05 | 2020-05-05 | Apple Inc. | Computation engine with strided dot product |
US10657442B2 (en) * | 2018-04-19 | 2020-05-19 | International Business Machines Corporation | Deep learning accelerator architecture with chunking GEMM |
CN109086244A (zh) * | 2018-07-11 | 2018-12-25 | 中国人民解放军国防科技大学 | 一种基于向量处理器的矩阵卷积向量化实现方法 |
US10754649B2 (en) | 2018-07-24 | 2020-08-25 | Apple Inc. | Computation engine that operates in matrix and vector modes |
CN109032670B (zh) * | 2018-08-08 | 2021-10-19 | 上海寒武纪信息科技有限公司 | 神经网络处理装置及其执行向量复制指令的方法 |
US10831488B1 (en) | 2018-08-20 | 2020-11-10 | Apple Inc. | Computation engine with extract instructions to minimize memory access |
CN109471612B (zh) * | 2018-09-18 | 2020-08-21 | 中科寒武纪科技股份有限公司 | 运算装置及方法 |
CN112328208A (zh) * | 2018-09-18 | 2021-02-05 | 安徽寒武纪信息科技有限公司 | 运算装置及方法 |
CN110941789B (zh) * | 2018-09-21 | 2023-12-15 | 北京地平线机器人技术研发有限公司 | 张量运算方法和装置 |
CN111353595A (zh) * | 2018-12-20 | 2020-06-30 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN111079911B (zh) * | 2018-10-19 | 2021-02-09 | 中科寒武纪科技股份有限公司 | 运算方法、***及相关产品 |
CN109740744A (zh) * | 2018-12-13 | 2019-05-10 | 南京邮电大学 | 基于忆阻器矩阵的指定元素权值运算方法 |
US11429555B2 (en) * | 2019-02-26 | 2022-08-30 | Apple Inc. | Coprocessors with bypass optimization, variable grid architecture, and fused vector operations |
JP7298210B2 (ja) * | 2019-03-14 | 2023-06-27 | オムロン株式会社 | 設定情報生成装置、設定情報生成方法、及び制御プログラム |
US10942738B2 (en) * | 2019-03-29 | 2021-03-09 | Intel Corporation | Accelerator systems and methods for matrix operations |
CN112579971B (zh) * | 2019-09-29 | 2024-04-16 | 广州希姆半导体科技有限公司 | 矩阵运算电路、矩阵运算装置及矩阵运算方法 |
CN112579042B (zh) * | 2019-09-29 | 2024-04-19 | 广州希姆半导体科技有限公司 | 计算装置及方法、芯片、电子设备及计算机可读存储介质 |
CN112711738A (zh) * | 2019-10-25 | 2021-04-27 | 安徽寒武纪信息科技有限公司 | 用于向量内积的计算装置、方法和集成电路芯片 |
CN111124360B (zh) * | 2019-12-23 | 2022-08-16 | 中国电子科技集团公司第五十八研究所 | 一种可配置矩阵乘法的加速器 |
US20210200711A1 (en) * | 2019-12-28 | 2021-07-01 | Intel Corporation | System and Method for Configurable Systolic Array with Partial Read/Write |
CN111242293B (zh) * | 2020-01-13 | 2023-07-18 | 腾讯科技(深圳)有限公司 | 一种处理部件、数据处理的方法以及电子设备 |
CN113536221B (zh) * | 2020-04-21 | 2023-12-15 | 中科寒武纪科技股份有限公司 | 运算方法、处理器以及相关产品 |
CN111581595B (zh) * | 2020-04-24 | 2024-02-13 | 科大讯飞股份有限公司 | 一种矩阵乘法计算方法及计算电路 |
CN114692075A (zh) * | 2020-12-30 | 2022-07-01 | 中科寒武纪科技股份有限公司 | 用于矩阵乘操作的集成电路装置、计算设备、***和方法 |
CN113076521B (zh) * | 2021-06-03 | 2021-09-21 | 沐曦集成电路(上海)有限公司 | 一种基于gpgpu可重构架构的方法及计算*** |
KR20230046356A (ko) | 2021-09-29 | 2023-04-06 | 삼성전자주식회사 | 메모리 장치, 메모리 장치의 동작 방법, 그리고 메모리 장치를 포함하는 전자 장치 |
CN116685964A (zh) * | 2021-12-31 | 2023-09-01 | 华为技术有限公司 | 运算加速的处理方法、运算加速器的使用方法及运算加速器 |
CN116795432B (zh) * | 2023-08-18 | 2023-12-05 | 腾讯科技(深圳)有限公司 | 运算指令的执行方法、装置、电路、处理器及设备 |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5226171A (en) * | 1984-12-03 | 1993-07-06 | Cray Research, Inc. | Parallel vector processing system for individual and broadcast distribution of operands and control information |
DE4036455C1 (zh) * | 1990-11-15 | 1992-04-02 | Siemens Ag, 8000 Muenchen, De | |
JPH06342450A (ja) * | 1993-06-01 | 1994-12-13 | Fujitsu Ltd | 行列乗算装置 |
EP0845741B1 (en) * | 1996-11-29 | 2003-04-16 | Matsushita Electric Industrial Co., Ltd. | Processor which can favorably execute a rounding process |
DE10050371A1 (de) * | 2000-10-11 | 2002-05-02 | Siemens Ag | Vorrichtung mit im kryogenen Temperaturbereich ferromagnetischem und mechanisch belastbarem Bauteil |
US6898691B2 (en) * | 2001-06-06 | 2005-05-24 | Intrinsity, Inc. | Rearranging data between vector and matrix forms in a SIMD matrix processor |
US20040122887A1 (en) * | 2002-12-20 | 2004-06-24 | Macy William W. | Efficient multiplication of small matrices using SIMD registers |
CN100545804C (zh) * | 2003-08-18 | 2009-09-30 | 上海海尔集成电路有限公司 | 一种基于cisc结构的微控制器及其指令集的实现方法 |
US7107436B2 (en) * | 2003-09-08 | 2006-09-12 | Freescale Semiconductor, Inc. | Conditional next portion transferring of data stream to or from register based on subsequent instruction aspect |
US7275148B2 (en) * | 2003-09-08 | 2007-09-25 | Freescale Semiconductor, Inc. | Data processing system using multiple addressing modes for SIMD operations and method thereof |
WO2005059738A2 (en) * | 2003-12-16 | 2005-06-30 | Koninklijke Philips Electronics N.V. | Memory-efficient instruction compressing scheme |
US8028015B2 (en) * | 2007-08-10 | 2011-09-27 | Inside Contactless S.A. | Method and system for large number multiplication |
CN101620524B (zh) * | 2009-07-03 | 2011-08-10 | 中国人民解放军国防科学技术大学 | 支持矩阵整体读写操作的矩阵寄存器文件 |
US8458442B2 (en) * | 2009-08-26 | 2013-06-04 | International Business Machines Corporation | Method and structure of using SIMD vector architectures to implement matrix multiplication |
US7959061B2 (en) * | 2009-09-25 | 2011-06-14 | Multi Packaging Solutions, Inc. | Folded pot cover |
GB2476800A (en) * | 2010-01-07 | 2011-07-13 | Linear Algebra Technologies Ltd | Sparse matrix vector multiplier using a bit map of non-zero elements to control scheduling of arithmetic operations |
CN101833468B (zh) * | 2010-04-28 | 2013-05-08 | 中国科学院自动化研究所 | 在高性能计算***中生成向量处理指令集结构的方法 |
US20120113133A1 (en) * | 2010-11-04 | 2012-05-10 | Shpigelblat Shai | System, device, and method for multiplying multi-dimensional data arrays |
CN102214160B (zh) * | 2011-07-08 | 2013-04-17 | 中国科学技术大学 | 一种基于龙芯3a的单精度矩阵乘法优化方法 |
CN102360344B (zh) * | 2011-10-10 | 2014-03-12 | 西安交通大学 | 矩阵处理器及其指令集和嵌入式*** |
CN103699360B (zh) * | 2012-09-27 | 2016-09-21 | 北京中科晶上科技有限公司 | 一种向量处理器及其进行向量数据存取、交互的方法 |
US9384168B2 (en) * | 2013-06-11 | 2016-07-05 | Analog Devices Global | Vector matrix product accelerator for microprocessor integration |
CN103929199A (zh) * | 2014-04-23 | 2014-07-16 | 荣成市鼎通电子信息科技有限公司 | Dtmb中全并行输入的循环左移准循环矩阵乘法器 |
FR3021428B1 (fr) * | 2014-05-23 | 2017-10-13 | Kalray | Multiplication de matrices de bits utilisant des registres explicites |
US10430169B2 (en) * | 2014-05-30 | 2019-10-01 | Apple Inc. | Language, function library, and compiler for graphical and non-graphical computation on a graphical processor unit |
US9886418B2 (en) * | 2015-04-28 | 2018-02-06 | Intel Corporation | Matrix operands for linear algebra operations |
US10324730B2 (en) * | 2016-03-24 | 2019-06-18 | Mediatek, Inc. | Memory shuffle engine for efficient work execution in a parallel computing system |
CN112612521A (zh) * | 2016-04-26 | 2021-04-06 | 安徽寒武纪信息科技有限公司 | 一种用于执行矩阵乘运算的装置和方法 |
-
2016
- 2016-04-26 CN CN202011394971.0A patent/CN112612521A/zh active Pending
- 2016-04-26 CN CN201610266627.0A patent/CN107315574B/zh active Active
- 2016-04-26 CN CN201811233425.1A patent/CN109240746B/zh active Active
- 2016-04-26 CN CN201911203822.9A patent/CN111104164A/zh active Pending
- 2016-04-26 CN CN201911203825.2A patent/CN111090467A/zh active Pending
- 2016-05-05 WO PCT/CN2016/081067 patent/WO2017185389A1/zh active Application Filing
- 2016-05-05 EP EP16899900.1A patent/EP3451162B1/en active Active
-
2018
- 2018-10-25 US US16/171,291 patent/US10592241B2/en active Active
-
2019
- 2019-10-17 US US16/655,688 patent/US11080049B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP3451162A1 (en) | 2019-03-06 |
CN107315574A (zh) | 2017-11-03 |
US20190065190A1 (en) | 2019-02-28 |
CN111104164A (zh) | 2020-05-05 |
CN109240746B (zh) | 2020-12-18 |
CN111090467A (zh) | 2020-05-01 |
US10592241B2 (en) | 2020-03-17 |
US11080049B2 (en) | 2021-08-03 |
CN107315574B (zh) | 2021-01-01 |
EP3451162B1 (en) | 2021-12-29 |
CN109240746A (zh) | 2019-01-18 |
US20200050453A1 (en) | 2020-02-13 |
WO2017185389A1 (zh) | 2017-11-02 |
EP3451162A4 (en) | 2020-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107315574B (zh) | 一种用于执行矩阵乘运算的装置和方法 | |
CN111291880B (zh) | 计算装置以及计算方法 | |
CN107315715B (zh) | 一种用于执行矩阵加/减运算的装置和方法 | |
KR102123633B1 (ko) | 행렬 연산 장치 및 방법 | |
US10140251B2 (en) | Processor and method for executing matrix multiplication operation on processor | |
CN107315718B (zh) | 一种用于执行向量内积运算的装置和方法 | |
KR102486029B1 (ko) | 비트폭이 다른 연산 데이터를 지원하는 연산 유닛, 연산 방법 및 연산 장치 | |
CN107315717B (zh) | 一种用于执行向量四则运算的装置和方法 | |
CN111580866A (zh) | 一种向量运算装置及运算方法 | |
CN109754062B (zh) | 卷积扩展指令的执行方法以及相关产品 | |
CN107315716B (zh) | 一种用于执行向量外积运算的装置和方法 | |
CN107315575B (zh) | 一种用于执行向量合并运算的装置和方法 | |
CN107315563B (zh) | 一种用于执行向量比较运算的装置和方法 | |
CN107315568B (zh) | 一种用于执行向量逻辑运算的装置 | |
CN107305486B (zh) | 一种神经网络maxout层计算装置 | |
CN107315567B (zh) | 一种用于执行向量最大值最小值运算的装置和方法 | |
CN111857821A (zh) | 一种用于生成服从一定分布的随机向量装置和方法 | |
TW201805802A (zh) | 一種運算裝置及其操作方法 | |
CN109754061B (zh) | 卷积扩展指令的执行方法以及相关产品 | |
CN117093263A (zh) | 处理器、芯片、板卡及方法 | |
CN113934678A (zh) | 一种计算装置、集成电路芯片、板卡、设备和计算方法 | |
CN115438778A (zh) | 执行Winograd卷积的集成电路装置 |
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 |