CN111857820B - 一种用于执行矩阵加/减运算的装置和方法 - Google Patents
一种用于执行矩阵加/减运算的装置和方法 Download PDFInfo
- Publication number
- CN111857820B CN111857820B CN202010612191.2A CN202010612191A CN111857820B CN 111857820 B CN111857820 B CN 111857820B CN 202010612191 A CN202010612191 A CN 202010612191A CN 111857820 B CN111857820 B CN 111857820B
- Authority
- CN
- China
- Prior art keywords
- matrix
- unit
- instruction
- input
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 239000011159 matrix material Substances 0.000 title claims abstract description 324
- 238000000034 method Methods 0.000 title claims abstract description 34
- 230000008569 process Effects 0.000 claims abstract description 14
- 238000012545 processing Methods 0.000 claims description 20
- 238000004364 calculation method Methods 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 7
- 230000009467 reduction Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000005481 NMR spectroscopy Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000005406 washing Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000010420 art technique Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000035800 maturation Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
Classifications
-
- 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/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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
Abstract
本公开提供了一种用于执行矩阵加减运算的装置,其特征在于,包括:存储单元,用于存储矩阵运算指令相关的矩阵数据;寄存器单元,用于存储矩阵运算指令相关的标量数据;控制单元,用于对矩阵运算指令进行译码,并控制矩阵运算指令的运算过程;矩阵运算单元,用于根据译码后的矩阵运算指令,对输入矩阵进行矩阵加减运算操作;其中,所述矩阵运算单元为定制的硬件电路。本公开还提供了一种执行矩阵加减法运算的方法。
Description
技术领域
本公开涉及计算机领域,尤其涉及一种用于执行矩阵加减法运算的装置和方法。
背景技术
当前计算机领域,伴随着大数据、机器学习等新兴技术的成熟,越来越多的任务中包含了各种各样的矩阵加减法运算,尤其是大矩阵的加减法运算,这些往往成为算法速度和效果提高的瓶颈。、
在现有技术中,一种进行矩阵加减法运算的已知方案是使用通用处理器,该方法通过通用寄存器堆和通用功能部件来执行通用指令,从而执行矩阵加减法运算。然而,该方法的缺点之一是单个通用处理器多用于标量计算,在进行矩阵运算时运算性能较低。而使用多个通用处理器并行执行时,处理器的个数较少提升的效果不做够显著;处理器个数较高时它们之间的相互通讯又有可能成为性能瓶颈。
在另一种现有技术中,使用图形处理器(GPU)来进行一系列矩阵加减法运算,其中,通过使用通用寄存器堆和通用流处理单元执行通用SIMD指令来进行运算。但在上述方案中,GPU片上缓存太小,在进行大规模矩阵运算时需要不断进行片外数据搬运,片外带宽成为了主要性能瓶颈。
在另一种现有技术中,使用专门定制的矩阵运算装置来进行矩阵加减法运算,其中,使用定制的寄存器堆和定制的处理单元进行矩阵运算。然而根据这种方法,目前已有的专用矩阵运算装置受限于寄存器堆的设计,不能够灵活地支持不同长度的矩阵加减法运算。
综上所述,现有的不管是片上多核通用处理器、片间互联通用处理器(单核或多核)、还是片间互联图形处理器都无法进行高效的矩阵加减法运算,并且这些现有技术在处理矩阵加减法运算问题时存在着代码量大,受限于片间通讯,片上缓存不够,支持的矩阵规模不够灵活等问题。
发明内容
基于此,本公开提供了一种执行矩阵加减法运算的装置和方法。
根据本公开一方面,提供了一种用于执行矩阵加减运算的装置,,包括:
存储单元,用于存储矩阵运算指令相关的矩阵数据;
寄存器单元,用于存储矩阵运算指令相关的标量数据;
控制单元,用于对矩阵运算指令进行译码,并控制矩阵运算指令的运算过程;
矩阵运算单元,用于根据译码后的矩阵运算指令,对输入矩阵进行矩阵加减运算操作;
其中,所述矩阵运算单元为定制的硬件电路。
根据本公开另一方面,提供了一种用于执行矩阵加减法运算的装置,,包括:
取指模块,用于从指令序列中取出下一条要执行的矩阵运算指令,并将该矩阵运算指令传给译码模块;
译码模块,用于对该矩阵运算指令进行译码,并将译码后的矩阵运算指令传送给指令队列模块;
指令队列模块,用于暂存译码后的矩阵运算指令,并从矩阵运算指令或标量寄存器获得矩阵运算指令运算相关的标量数据;获得所述标量数据后,将所述矩阵运算指令送至依赖关系处理单元;
标量寄存器堆,包括多个标量寄存器,用于存储矩阵运算指令相关的标量数据;
依赖关系处理单元,用于判断所述矩阵运算指令与之前未执行完的运算指令之间是否存在依赖关系;如果存在依赖关系,则将所述矩阵运算指令送至存储队列模块,如果不存在依赖关系,则将所述矩阵运算指令送至矩阵运算单元;
存储队列模块,用于存储与之前运算指令存在依赖关系的矩阵运算指令,并且在所述依赖关系解除后,将所述矩阵运算指令送至矩阵运算单元;
矩阵运算单元,用于根据接收到矩阵运算指令对输入矩阵进行矩阵加减法运算操作;
高速暂存存储器,用于存储输入矩阵和输出矩阵;
输入输出存取模块,用于直接访问所述高速暂存存储器,负责从所述高速暂存存储器中读取输出矩阵和写入输入矩阵。
本发明还提供了一种执行矩阵加减法运算的方法。
本发明可以应用于以下场景中(包括但不限于):数据处理、机器人、电脑、打印机、扫描仪、电话、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备等各类电子产品;飞机、轮船、车辆等各类交通工具;电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机等各类家用电器;以及包括核磁共振仪、B超、心电图仪等各类医疗设备。
附图说明
图1是根据本公开实施例的执行矩阵加减法运算的装置的结构示意图。
图2是根据本公开实施例的矩阵运算单元的操作示意图。
图3是根据本公开实施例的指令集的格式示意图。
图4是根据本公开实施例的矩阵运算装置的结构示意图。
图5是根据本公开实施例的矩阵运算装置执行矩阵加法指令的流程图。
图6是根据本公开实施例的矩阵运算装置执行矩阵减标量指令的流程图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开作进一步的详细说明。
本公开提供了一种矩阵加减法运算装置,包括:存储单元、寄存器单元、控制单元和矩阵运算单元;
所述存储单元存储矩阵;
所述寄存器单元中存储有输入矩阵地址、输入矩阵长度、输出矩阵地址;
所述控制单元用于对矩阵运算指令执行译码操作,并根据矩阵运算指令控制各个模块,以控制矩阵加减法运算的执行过程;
矩阵运算单元在指令中或寄存器单元中获取输入矩阵地址、输入矩阵长度、输出矩阵地址,然后,根据该输入矩阵地址在存储单元中获取相应的矩阵,接着,根据获取的矩阵进行矩阵运算,得到矩阵运算结果。
本公开将参与计算的矩阵数据暂存在存储单元(例如,高速暂存存储器)上,使得矩阵运算过程中可以更加灵活有效地支持不同宽度的数据,提升包含大量矩阵加减法运算任务的执行性能。
本公开中,所述矩阵加减法运算单元可以实现为定制的硬件电路,包括但不限于FPGA、CGRA、专用集成电路ASIC、模拟电路和忆阻器等。
图1是本公开提供的用于执行矩阵加减法运算的装置的结构示意图,如图1所示,该装置包括:
存储单元,用于存储矩阵。在一种实施方式中,该存储单元可以是高速暂存存储器,能够支持不同大小的矩阵数据;本公开将必要的计算数据暂存在高速暂存存储器上(Scratchpad Memory),使本运算装置在进行矩阵运算过程中可以更加灵活有效地支持不同宽度的数据。所述高速暂存存储器可以通过各种不同存储器件如SRAM、DRAM、eDRAM、忆阻器、3D-DRAM和非易失存储等实现。
寄存器单元,用于存储矩阵地址,其中,矩阵地址为矩阵在存储单元中存储的地址;在一种实施方式中,寄存器单元可以是标量寄存器堆,提供运算过程中所需的标量寄存器,标量寄存器存储输入矩阵地址、输入矩阵长度、输出矩阵地址。当涉及到矩阵与标量的运算时,矩阵运算单元不仅要从寄存器单元中获取矩阵地址,还要从寄存器单元中获取相应的标量。
控制单元,用于控制装置中各个模块的行为。在一种实施方式中,控制单元读取准备好的指令,进行译码生成多条微指令,发送给装置中的其他模块,其他模块根据得到的微指令执行相应的操作。
矩阵运算单元,用于获取各种加减运算指令,根据指令在所述寄存器单元中获取矩阵地址,然后,根据该矩阵地址在存储单元中获取相应的矩阵,接着,根据获取的矩阵进行运算,得到矩阵运算结果,并将矩阵运算结果存储于高速暂存存储器中。矩阵运算单元负责装置的所有矩阵加减运算,包括但不限于矩阵加法操作、矩阵减法操作、矩阵加标量操作和矩阵减标量操作。矩阵加减运算指令被送往该运算单元执行,所有的运算部件均是并行的向量运算部件,可以在同一时钟并行地对一整列数据进行相同的运算。
图2示出了根据本公开实施例的矩阵运算单元的操作示意图。其中1是由多个标量运算器构成向量运算器,2表示矩阵A在高速暂存存储器中的存储,3表示矩阵B在高速暂存存储器中的存储。两矩阵均是m*n的大小,向量运算器的宽度为k,即向量运算器可以一次计算出长度为k的向量的加减运算结果。运算器每次分别从A和B中获取长度为k的向量数据,在运算器中执行加减运算,并将结果写回,一个完整的矩阵加减可能需要进行若干次上述计算。如图2所示,矩阵加减部件由多个并行的标量加减运算器构成,在执行矩阵加减运算的过程中,对于指定大小的两矩阵数据,运算单元依次读入一预设长度的数据,该长度等于标量加减运算器的个数。对应的数据在对应的标量运算器中执行加减法运算,每次计算矩阵数据中的一部分,并最终完成整个矩阵的加减法运算。
在执行矩阵加减标量的过程中,运算单元会将读入寄存器中的标量数据扩展成与标量运算器个数等宽的向量数据,作为加减法的一个输入,另一输入与前述执行矩阵加减的过程相同,从高速暂存存储器中读取一预设长度的矩阵数据,与标量扩展后的向量执行加减法运算。
根据本公开的一种实施方式,所述矩阵加减法运算装置还包括:指令缓存单元,用于存储待执行的矩阵运算指令。指令在执行过程中,同时也被缓存在指令缓存单元中,当一条指令执行完之后,该指令将被提交。
根据本公开的一种实施方式,所述装置中的控制单元还包括:指令队列模块,用于对译码后的矩阵运算指令进行顺序存储,并在获得矩阵运算指令所需的标量数据后,将矩阵运算指令以及标量数据送至依赖关系处理模块。
根据本公开的一种实施方式,所述装置中的控制单元还包括:依赖关系处理单元,用于在矩阵运算单元获取指令前,判断该运算指令与之前未完成运算指令之间是否存在依赖关系,如是否访问相同的矩阵存储地址,若是,将该运算指令送至存储队列模块中,待前一运算指令执行完毕后,将存储队列中的该运算指令提供给所述矩阵运算单元;否则,直接将该运算指令提供给所述矩阵运算单元。具体地,矩阵运算指令需要访问高速暂存存储器时,前后指令可能会访问同一块存储空间,为了保证指令执行结果的正确性,当前指令如果被检测到与之前的指令的数据存在依赖关系,该指令必须在存储队列内等待至依赖关系被消除。
根据本公开的一种实施方式,所述装置中的控制单元还包括:存储队列模块,该模块包括一个有序队列,与之前指令在数据上有依赖关系的指令被存储在该有序队列内直至依赖关系被消除,在依赖关系消除后,其将运算指令提供给矩阵运算单元。
根据本公开的一种实施方式,装置还包括:输入输出单元,用于将矩阵存储于存储单元,或者,从存储单元中获取运算结果。其中,输入输出单元可直接访问存储单元,负责从内存向存储单元读取矩阵数据或从存储单元向内存写入矩阵数据。
在本装置执行矩阵运算的过程中,装置取出指令进行译码,然后送至指令队列存储,根据译码结果,获取指令中的各个参数,这些参数可以是直接写在指令的操作域中,也可以是根据指令操作域中的寄存器号从指定的寄存器中读取。这种使用寄存器存储参数的好处是无需改变指令本身,只要用指令改变寄存器中的值,就可以实现大部分的循环,因此大大节省了在解决某些实际问题时所需要的指令条数。在全部操作数之后,依赖关系处理单元会判断指令实际需要使用的数据与之前指令中是否存在依赖关系,这决定了这条指令是否可以被立即发送至矩阵运算单元中执行。一旦发现与之前的数据之间存在依赖关系,则该条指令必须等到它依赖的指令执行完毕之后才可以送至矩阵运算单元执行。在定制的矩阵运算单元中,该条指令将快速执行完毕,并将结果,即生成的结果矩阵写回至指令提供的地址,该条指令执行完毕。
图3是本公开提供的矩阵加减运算指令的格式示意图,如图3所示,矩阵加减运算指令包括一操作码和至少一操作域,其中,操作码用于指示该矩阵运算指令的功能,矩阵运算单元通过识别该操作码可进行不同的矩阵运算,操作域用于指示该矩阵运算指令的数据信息,其中,数据信息可以是立即数或寄存器号,例如,要获取一个矩阵时,根据寄存器号可以在相应的寄存器中获取矩阵起始地址和矩阵长度,再根据矩阵起始地址和矩阵长度在存储单元中获取相应地址存放的矩阵。
有下列几种矩阵加减运算指令:
矩阵加法指令(MA),根据该指令,装置从高速暂存存储器的指定地址取出指定大小的矩阵数据,在矩阵运算单元中进行矩阵加法运算,并将计算结果写回至高速暂存存储器的指定地址;值得说明的是,向量可以作为特殊形式的矩阵(只有一行元素的矩阵)存储于高速暂存存储器中。
矩阵减法指令(MS),根据该指令,装置从高速暂存存储器的指定地址取出指定大小的矩阵数据,在矩阵运算单元中进行矩阵减法运算,并将计算结果写回至高速暂存存储器的指定地址;值得说明的是,向量可以作为特殊形式的矩阵(只有一行元素的矩阵)存储于高速暂存存储器中。
矩阵加标量指令(MAS),根据该指令,装置从高速暂存存储器的指定地址取出指定大小的矩阵数据,从标量寄存器堆的指定地址中取出标量数据,在矩阵运算单元中进行矩阵加标量的运算,并将计算结果写回至高速暂存存储器的指定地址,需要说明的是,标量寄存器堆不仅存储有矩阵的地址,还存储有标量数据。
矩阵减标量指令(MSS),根据该指令,装置从高速暂存存储器的指定地址取出指定大小的矩阵数据,从标量寄存器堆的指定地址中取出标量数据,在矩阵运算单元中进行矩阵减标量的运算,并将计算结果写回至高速暂存存储器的指定地址,需要说明的是,标量寄存器堆不仅存储有矩阵的地址,还存储有标量数据。
图4是本公开一实施例提供的矩阵运算装置的结构示意图,如图4所示,装置包括取指模块、译码模块、指令队列模块、标量寄存器堆、依赖关系处理单元、存储队列模块、矩阵运算单元、高速暂存器、IO内存存取模块;
取指模块,该模块负责从指令序列中取出下一条将要执行的指令,并将该指令传给译码模块;
译码模块,该模块负责对指令进行译码,并将译码后指令传给指令队列;
指令队列,用于暂存译码后的矩阵运算指令,并从矩阵运算指令或标量寄存器获得矩阵运算指令运算相关的标量数据;获得所述标量数据后,将所述矩阵运算指令送至依赖关系处理单元;
标量寄存器堆,提供装置在运算过程中所需的标量寄存器;标量寄存器堆包括多个标量寄存器,用于存储矩阵运算指令相关的标量数据;
依赖关系处理单元,该模块处理处理指令与前一条指令可能存在的存储依赖关系。矩阵运算指令会访问高速暂存存储器,前后指令可能会访问同一块存储空间。即该单元会检测当前指令的输入数据的存储范围和之前尚未执行完成的指令的输出数据的存储范围是否有重叠,有则说明该条指令在逻辑上需要使用前面指令的计算结果,因此它必须等到在它之前的所依赖的指令执行完毕后才能够开始执行。在这个过程中,指令实际被暂存在下面的存储队列中。为了保证指令执行结果的正确性,当前指令如果被检测到与之前的指令的数据存在依赖关系,该指令必须在存储队列内等待至依赖关系被消除。
存储队列模块,该模块是一个有序队列,与之前指令在数据上有依赖关系的指令被存储在该队列内直至存储关系被消除;
矩阵运算单元,该模块负责执行矩阵的加减运算;
高速暂存存储器,该模块是矩阵数据专用的暂存存储装置,能够支持不同大小的矩阵数据;主要用于存储输入矩阵数据和输出矩阵数据;
IO内存存取模块,该模块用于直接访问高速暂存存储器,负责从高速暂存存储器中读取数据或写入数据。
图5是本公开实施例提供的运算装置执行矩阵加法指令的流程图,如图5所示,执行矩阵加法指令的过程包括:
S1,取指模块取出该条矩阵加法指令,并将该指令送往译码模块。
S2,译码模块对该矩阵加法指令译码,并将该矩阵加法指令送往指令队列。
S3,在指令队列中,该矩阵加法指令从矩阵加法指令本身或从标量寄存器堆中获取指令中四个操作域所对应的标量数据,包括输入矩阵地址、输入矩阵长度、输出矩阵地址。
S4,在取得需要的标量数据后,该指令被送往依赖关系处理单元。依赖关系处理单元分析该指令与前面的尚未执行结束的指令在数据上是否存在依赖关系。如果存在依赖关系,则该条指令需要在存储队列中等待至其与前面的未执行结束的指令在数据上不再存在依赖关系为止。
S5,依赖关系不存在后,该条矩阵加法指令被送往矩阵运算单元。
S6,矩阵运算单元根据输入矩阵的地址和长度从高速暂存器中取出输入矩阵数据,每次分别读入两输入矩阵中一定位宽的对应数据,在矩阵加减运算器中对对齐的两列数据进行加法运算,不断重复,在矩阵运算单元中完成整个矩阵加法的运算。
S7,运算完成后,将运算结果写回至高速暂存存储器的指定地址。
图6是本公开实施例提供的运算装置执行矩阵减标量指令的流程图,如图6所示,执行矩阵减标量指令的过程包括:
S1’,取指模块取出该条矩阵减标量指令,并将该指令送往译码模块。
S2’,译码模块对该矩阵减标量指令译码,并将指令送往指令队列。
S3’,在指令队列中,该矩阵减标量指令从指令本身或从标量寄存器堆中获取指令中四个操作域所对应的标量数据,包括输入矩阵地址、输入矩阵长度、输入标量和输出矩阵地址。
S4’,在取得需要的标量数据后,该指令被送往依赖关系处理单元。依赖关系处理单元分析该指令与前面的尚未执行结束的指令在数据上是否存在依赖关系。如果存在依赖关系,则该条指令需要在存储队列中等待至其与前面的未执行结束的指令在数据上不再存在依赖关系为止。
S5’,依赖关系不存在后,该条矩阵减标量指令被送往矩阵运算单元。S6’,矩阵运算单元每次依次读入矩阵数据的一部分,在矩阵加减标量部件中进行一列数据同时减去寄存器中存储的标量数据的操作,不断重复,完成整个矩阵减标量的运算。
S7’,运算完成后,将运算结果写回至高速暂存存储器的指定地址。
综上所述,本公开提供矩阵运算装置,并配合相应的指令,能够很好地解决当前计算机领域越来越多的算法包含大量矩阵加减运算的问题,相比于已有的传统解决方案,本公开可以具有使用方便、支持的矩阵规模灵活、片上缓存充足等优点。本公开可以用于多种包含大量矩阵加减运算的计算任务。
在一些实施例中,还公开了一种电子设备,其包括了上述用于执行矩阵加减运算的装置。
电子设备可包括但不限于机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备交通工具、家用电器、和/或医疗设备。
所述交通工具可包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
本公开中各功能/单元/模块/子模块都可以是硬件,比如该硬件可以是电路,包括数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器等等。所述计算装置中的计算模块可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如RRAM,DRAM,SRAM,EDRAM,HBM,HMC等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (20)
1.一种用于执行矩阵加减运算的装置,其特征在于,包括:
控制单元,用于读取矩阵运算指令并进行译码,并控制矩阵运算指令的运算过程,其中,所述矩阵运算指令包括至少一个操作域和操作码,所述操作域包括第一输入矩阵地址和第二输入矩阵地址;
矩阵运算单元,所述矩阵运算单元包括向量运算器,所述向量运算器的宽度为k,所述向量运算器一次计算出长度为k的向量数据的运算结果;所述向量运算器用于获取经过所述控制单元译码的矩阵运算指令,根据所述第一输入矩阵地址和所述第二输入矩阵地址和所述向量运算器的宽度k,每次分别从两个输入矩阵中获取长度为k的向量数据,在所述向量运算器中执行加法操作或减法操作,直至完成两个输入矩阵的矩阵加法操作或矩阵减法操作。
2.根据权利要求1所述装置,其特征在于,所述向量运算器包括多个并行的标量加减运算器,其中,
所述向量运算器的宽度k等于标量加减运算器的个数。
3.根据权利要求2所述装置,其特征在于,所述输入矩阵运算单元在对应的标量运算器中执行加法或减法运算,每次计算矩阵数据中的一部分,并最终完成整个矩阵的加法或减法运算。
4.根据权利要求2所述的装置,其特征在于,所述操作域还包括输入矩阵长度,所述输入矩阵长度用于指示输入矩阵的大小;
所述矩阵运算单元还用于根据所述输入矩阵地址和所述输入矩阵长度获得指定大小的输入矩阵;
所述装置还包括:
寄存器单元,用于存储输入矩阵地址和输入矩阵长度,其中,所述输入矩阵地址为矩阵在存储单元中存储的地址;
所述操作域的形式是立即数和/或寄存器号,指示矩阵运算相关的标量数据,其中寄存器号用于指向所述寄存器单元地址。
5.根据权利要求2所述的装置,其特征在于,所述装置还包括:
存储单元,用于存储矩阵数据或计算结果数据。
6.如权利要求1所述的装置,其特征在于,所述控制单元包括:
指令队列模块,用于对译码后的矩阵运算指令进行顺序存储,并获取矩阵运算指令相关的标量数据。
7.如权利要求1所述的装置,其特征在于,所述控制单元包括:
依赖关系处理单元,用于在矩阵运算单元获取当前矩阵运算指令前,判断当前矩阵运算指令与之前未执行完的矩阵运算指令是否存在依赖关系。
8.如权利要求1所述的装置,其特征在于,所述控制单元包括:
存储队列模块,用于在当前矩阵运算指令与之前未执行完的运算指令存在依赖关系时,暂时存储当前矩阵运算指令,并且在该依赖关系消除时,将暂存的矩阵运算指令送往矩阵运算单元。
9.如权利要求1-7任一项所述的装置,其特征在于,所述装置还包括:
指令缓存单元,用于存储待执行的矩阵运算指令;
输入输出单元,用于将矩阵运算指令相关的矩阵数据存储于存储单元,或者,从存储单元中获取矩阵运算指令的运算结果。
10.如权利要求4所述的装置,其特征在于,所述存储单元为高速暂存存储器;和/或所述寄存器单元为标量寄存器堆。
11.一种用于执行矩阵运算的方法,其特征在于,包括:
采用控制单元读取矩阵运算指令并进行译码,并控制矩阵运算指令的运算过程,其中,所述矩阵运算指令包括至少一个操作域和操作码,所述操作域包括第一输入矩阵地址和第二输入矩阵地址;
采用矩阵运算单元获取经过所述控制单元译码的矩阵运算指令,根据所述第一输入矩阵地址和所述第二输入矩阵地址以及所述矩阵运算单元中向量运算器的宽度为k,每次分别从两个输入矩阵中获取长度为k的向量数据,在所述向量运算器中执行加法操作或减法操作,直至完成两个输入矩阵的矩阵加法操作或矩阵减法,
其中,所述向量运算器一次计算出长度为k的向量数据的运算结果;所述矩阵运算单元为定制的硬件电路。
12.根据权利要求11所述的方法,其特征在于,所述向量运算器包括多个并行的标量加减运算器,其中,
所述向量运算器的宽度k等于标量加减运算器的个数。
13.如权利要求12所述的方法,其特征在于,所述操作域包括输入矩阵长度,所述输入矩阵长度用于指示输入矩阵的大小;所述方法还包括:
采用所述矩阵运算单元,根据所述输入矩阵地址获取相应输入矩阵长度的输入矩阵;
采用寄存器单元存储输入矩阵地址和输入矩阵长度,其中,所述输入矩阵地址为矩阵在存储单元中存储的地址;
所述操作域的形式是立即数和/或寄存器号,指示矩阵运算相关的标量数据,其中寄存器号用于指向所述寄存器单元地址。
14.如权利要求13所述的方法,其特征在于,还包括步骤:
采用存储单元存储矩阵数据或计算结果数据。
15.如权利要求11所述的方法,其特征在于,还包括步骤:
采用指令队列模块对译码后的矩阵运算指令进行顺序存储,并获取矩阵运算指令相关的标量数据;
采用依赖关系处理单元,在矩阵运算单元获取当前矩阵运算指令前,判断当前矩阵运算指令与之前未执行完的矩阵运算指令是否存在依赖关系。
16.如权利要求11所述的方法,其特征在于,还包括步骤:
采用存储队列模块,在当前矩阵运算指令与之前未执行完的运算指令存在依赖关系时,暂时存储当前矩阵运算指令,并且在该依赖关系消除时,将暂存的矩阵运算指令送往矩阵运算单元。
17.如权利要求11-16任一项所述的方法,其特征在于,所述方法还包括:
采用指令缓存单元存储待执行的矩阵运算指令;
采用输入输出单元将矩阵运算指令相关的矩阵数据存储于存储单元,或者,从存储单元中获取矩阵运算指令的运算结果。
18.如权利要求14所述的方法,其特征在于,所述存储单元为高速暂存存储器;和/或所述寄存器单元为标量寄存器堆。
19.如权利要求17所述的方法,其特征在于,
所述输入矩阵在对应的标量运算器中执行加减法运算,每次计算矩阵数据中的一部分,并最终完成整个矩阵的加减法运算。
20.一种电子设备,包括权利要求1-10任一所述的装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010612191.2A CN111857820B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行矩阵加/减运算的装置和方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610266805.XA CN107315715B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行矩阵加/减运算的装置和方法 |
CN202010612191.2A CN111857820B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行矩阵加/减运算的装置和方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610266805.XA Division CN107315715B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行矩阵加/减运算的装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111857820A CN111857820A (zh) | 2020-10-30 |
CN111857820B true CN111857820B (zh) | 2024-05-07 |
Family
ID=60160565
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010611888.8A Active CN111857819B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行矩阵加/减运算的装置和方法 |
CN202010612191.2A Active CN111857820B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行矩阵加/减运算的装置和方法 |
CN201610266805.XA Active CN107315715B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行矩阵加/减运算的装置和方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010611888.8A Active CN111857819B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行矩阵加/减运算的装置和方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610266805.XA Active CN107315715B (zh) | 2016-04-26 | 2016-04-26 | 一种用于执行矩阵加/减运算的装置和方法 |
Country Status (4)
Country | Link |
---|---|
US (3) | US20190065436A1 (zh) |
EP (2) | EP3910503A1 (zh) |
CN (3) | CN111857819B (zh) |
WO (1) | WO2017185396A1 (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111857819B (zh) | 2016-04-26 | 2024-05-03 | 中科寒武纪科技股份有限公司 | 一种用于执行矩阵加/减运算的装置和方法 |
CN109754062B (zh) * | 2017-11-07 | 2024-05-14 | 上海寒武纪信息科技有限公司 | 卷积扩展指令的执行方法以及相关产品 |
CN108108189B (zh) * | 2017-12-15 | 2020-10-30 | 安徽寒武纪信息科技有限公司 | 一种计算方法及相关产品 |
CN108037908B (zh) * | 2017-12-15 | 2021-02-09 | 中科寒武纪科技股份有限公司 | 一种计算方法及相关产品 |
CN108121688B (zh) * | 2017-12-15 | 2020-06-23 | 中科寒武纪科技股份有限公司 | 一种计算方法及相关产品 |
US11789729B2 (en) | 2017-12-29 | 2023-10-17 | Intel Corporation | Systems and methods for computing dot products of nibbles in two tile operands |
US11816483B2 (en) * | 2017-12-29 | 2023-11-14 | Intel Corporation | Systems, methods, and apparatuses for matrix operations |
US11809869B2 (en) * | 2017-12-29 | 2023-11-07 | Intel Corporation | Systems and methods to store a tile register pair to memory |
CN108197705A (zh) * | 2017-12-29 | 2018-06-22 | 国民技术股份有限公司 | 卷积神经网络硬件加速装置及卷积计算方法及存储介质 |
CN108388674B (zh) * | 2018-03-26 | 2021-11-26 | 百度在线网络技术(北京)有限公司 | 用于推送信息的方法和装置 |
CN111353595A (zh) * | 2018-12-20 | 2020-06-30 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN111078285B (zh) * | 2018-10-19 | 2021-01-26 | 中科寒武纪科技股份有限公司 | 运算方法、系统及相关产品 |
US11082098B2 (en) | 2019-05-11 | 2021-08-03 | Marvell Asia Pte, Ltd. | Methods and apparatus for providing an adaptive beamforming antenna for OFDM-based communication systems |
US10997116B2 (en) * | 2019-08-06 | 2021-05-04 | Microsoft Technology Licensing, Llc | Tensor-based hardware accelerator including a scalar-processing unit |
CN111158756B (zh) | 2019-12-31 | 2021-06-29 | 百度在线网络技术(北京)有限公司 | 用于处理信息的方法和装置 |
CN111242293B (zh) * | 2020-01-13 | 2023-07-18 | 腾讯科技(深圳)有限公司 | 一种处理部件、数据处理的方法以及电子设备 |
CN113254078B (zh) * | 2021-06-23 | 2024-04-12 | 北京中科通量科技有限公司 | 一种在gpdpu模拟器上高效执行矩阵加法的数据流处理方法 |
CN116685964A (zh) * | 2021-12-31 | 2023-09-01 | 华为技术有限公司 | 运算加速的处理方法、运算加速器的使用方法及运算加速器 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6505288B1 (en) * | 1999-12-17 | 2003-01-07 | Samsung Electronics Co., Ltd. | Matrix operation apparatus and digital signal processor capable of performing matrix operations |
CN101980182A (zh) * | 2010-10-15 | 2011-02-23 | 清华大学 | 基于矩阵运算的并行计算方法 |
CN102360344A (zh) * | 2011-10-10 | 2012-02-22 | 西安交通大学 | 矩阵处理器及其指令集和嵌入式系统 |
CN102541814A (zh) * | 2010-12-27 | 2012-07-04 | 北京国睿中数科技股份有限公司 | 用于数据通信处理器的矩阵计算装置和方法 |
CN103678257A (zh) * | 2013-12-20 | 2014-03-26 | 上海交通大学 | 基于fpga的正定矩阵浮点求逆器及其求逆方法 |
CN103970720A (zh) * | 2014-05-30 | 2014-08-06 | 东南大学 | 基于大规模粗粒度嵌入式可重构系统及其处理方法 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4888679A (en) * | 1988-01-11 | 1989-12-19 | Digital Equipment Corporation | Method and apparatus using a cache and main memory for both vector processing and scalar processing by prefetching cache blocks including vector data elements |
CN1127264C (zh) * | 2000-10-27 | 2003-11-05 | 清华大学 | 用于运动估计算法的分层可编程并行视频信号处理器 |
US6898691B2 (en) * | 2001-06-06 | 2005-05-24 | Intrinsity, Inc. | Rearranging data between vector and matrix forms in a SIMD matrix processor |
JP4042841B2 (ja) * | 2002-03-29 | 2008-02-06 | 富士通株式会社 | 行列演算処理装置 |
CN100545804C (zh) * | 2003-08-18 | 2009-09-30 | 上海海尔集成电路有限公司 | 一种基于cisc结构的微控制器及其指令集的实现方法 |
US7275148B2 (en) * | 2003-09-08 | 2007-09-25 | Freescale Semiconductor, Inc. | Data processing system using multiple addressing modes for SIMD operations and method thereof |
GB2411975B (en) * | 2003-12-09 | 2006-10-04 | Advanced Risc Mach Ltd | Data processing apparatus and method for performing arithmetic operations in SIMD data processing |
US7433981B1 (en) * | 2005-09-30 | 2008-10-07 | Nvidia Corporation | System and method for using co-processor hardware to accelerate highly repetitive actions |
CN100424654C (zh) * | 2005-11-25 | 2008-10-08 | 杭州中天微系统有限公司 | 一种矩阵数据存取方法及其矩阵数据存储装置 |
CN101122896A (zh) * | 2006-08-11 | 2008-02-13 | 展讯通信(上海)有限公司 | 一种基于矩阵运算的高效asic数据处理方法 |
GB2464292A (en) * | 2008-10-08 | 2010-04-14 | Advanced Risc Mach Ltd | SIMD processor circuit for performing iterative SIMD multiply-accumulate operations |
US8984043B2 (en) * | 2009-12-23 | 2015-03-17 | Intel Corporation | Multiplying and adding matrices |
US9600281B2 (en) * | 2010-07-12 | 2017-03-21 | International Business Machines Corporation | Matrix multiplication operations using pair-wise load and splat operations |
CN101957743B (zh) * | 2010-10-12 | 2012-08-29 | 中国电子科技集团公司第三十八研究所 | 并行数字信号处理器 |
US9411585B2 (en) * | 2011-09-16 | 2016-08-09 | International Business Machines Corporation | Multi-addressable register files and format conversions associated therewith |
US9454507B2 (en) * | 2011-12-23 | 2016-09-27 | Intel Corporation | Systems, apparatuses, and methods for performing a conversion of a writemask register to a list of index values in a vector register |
JP5840994B2 (ja) * | 2012-03-27 | 2016-01-06 | 富士通株式会社 | 行列演算装置 |
US9652245B2 (en) * | 2012-07-16 | 2017-05-16 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Branch prediction for indirect jumps by hashing current and previous branch instruction addresses |
US10235180B2 (en) * | 2012-12-21 | 2019-03-19 | Intel Corporation | Scheduler implementing dependency matrix having restricted entries |
JP6225687B2 (ja) * | 2013-02-18 | 2017-11-08 | 富士通株式会社 | データ処理装置、およびデータ処理方法 |
US9389854B2 (en) * | 2013-03-15 | 2016-07-12 | Qualcomm Incorporated | Add-compare-select instruction |
JP6094356B2 (ja) * | 2013-04-22 | 2017-03-15 | 富士通株式会社 | 演算処理装置 |
CN103336758B (zh) * | 2013-06-29 | 2016-06-01 | 中国科学院软件研究所 | 一种采用带有局部信息的压缩稀疏行的稀疏矩阵存储方法及基于该方法的SpMV实现方法 |
KR101753467B1 (ko) * | 2014-06-26 | 2017-07-03 | 인텔 코포레이션 | 범용 gf(256) simd 암호용 산술 기능성을 제공하는 명령어 및 로직 |
US10061746B2 (en) * | 2014-09-26 | 2018-08-28 | Intel Corporation | Instruction and logic for a vector format for processing computations |
CN111857819B (zh) | 2016-04-26 | 2024-05-03 | 中科寒武纪科技股份有限公司 | 一种用于执行矩阵加/减运算的装置和方法 |
-
2016
- 2016-04-26 CN CN202010611888.8A patent/CN111857819B/zh active Active
- 2016-04-26 CN CN202010612191.2A patent/CN111857820B/zh active Active
- 2016-04-26 CN CN201610266805.XA patent/CN107315715B/zh active Active
- 2016-05-05 EP EP21173815.8A patent/EP3910503A1/en active Pending
- 2016-05-05 WO PCT/CN2016/081117 patent/WO2017185396A1/zh active Application Filing
- 2016-05-05 EP EP16899907.6A patent/EP3451163A4/en not_active Ceased
-
2018
- 2018-10-26 US US16/171,681 patent/US20190065436A1/en not_active Abandoned
- 2018-10-26 US US16/171,926 patent/US10860681B2/en active Active
-
2019
- 2019-01-17 US US16/250,123 patent/US10891353B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6505288B1 (en) * | 1999-12-17 | 2003-01-07 | Samsung Electronics Co., Ltd. | Matrix operation apparatus and digital signal processor capable of performing matrix operations |
CN101980182A (zh) * | 2010-10-15 | 2011-02-23 | 清华大学 | 基于矩阵运算的并行计算方法 |
CN102541814A (zh) * | 2010-12-27 | 2012-07-04 | 北京国睿中数科技股份有限公司 | 用于数据通信处理器的矩阵计算装置和方法 |
CN102360344A (zh) * | 2011-10-10 | 2012-02-22 | 西安交通大学 | 矩阵处理器及其指令集和嵌入式系统 |
CN103678257A (zh) * | 2013-12-20 | 2014-03-26 | 上海交通大学 | 基于fpga的正定矩阵浮点求逆器及其求逆方法 |
CN103970720A (zh) * | 2014-05-30 | 2014-08-06 | 东南大学 | 基于大规模粗粒度嵌入式可重构系统及其处理方法 |
Non-Patent Citations (1)
Title |
---|
VEGAS: Soft Vector Processor with Scratchpad Memory;Christopher H.Chou等;《FPGA’11 Proceedings of the 19th ACM/SIGDA International symposium on Field programmable gate arrays》;第1-10页 * |
Also Published As
Publication number | Publication date |
---|---|
WO2017185396A1 (zh) | 2017-11-02 |
CN107315715B (zh) | 2020-11-03 |
CN111857819B (zh) | 2024-05-03 |
EP3910503A1 (en) | 2021-11-17 |
US20190065436A1 (en) | 2019-02-28 |
US10891353B2 (en) | 2021-01-12 |
CN107315715A (zh) | 2017-11-03 |
US20190065437A1 (en) | 2019-02-28 |
EP3451163A4 (en) | 2019-11-20 |
US10860681B2 (en) | 2020-12-08 |
EP3451163A1 (en) | 2019-03-06 |
CN111857820A (zh) | 2020-10-30 |
CN111857819A (zh) | 2020-10-30 |
US20190147015A1 (en) | 2019-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111857820B (zh) | 一种用于执行矩阵加/减运算的装置和方法 | |
CN109240746B (zh) | 一种用于执行矩阵乘运算的装置和方法 | |
CN111651205B (zh) | 一种用于执行向量内积运算的装置和方法 | |
CN111651199B (zh) | 一种用于执行向量循环移位运算的装置和方法 | |
CN107315575B (zh) | 一种用于执行向量合并运算的装置和方法 | |
EP3832500B1 (en) | Device and method for performing vector four-fundamental-rule operation | |
CN111651206B (zh) | 一种用于执行向量外积运算的装置和方法 | |
CN111651200B (zh) | 一种用于执行向量超越函数运算的装置和方法 | |
WO2017185395A1 (zh) | 一种用于执行向量比较运算的装置和方法 | |
EP3451159B1 (en) | Apparatus and method for performing vector logical operation | |
CN111651204B (zh) | 一种用于执行向量最大值最小值运算的装置和方法 | |
WO2017185388A1 (zh) | 一种用于生成服从一定分布的随机向量的装置和方法 | |
CN112214244A (zh) | 一种运算装置及其操作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |