CN112199119B - 向量运算装置 - Google Patents
向量运算装置 Download PDFInfo
- Publication number
- CN112199119B CN112199119B CN202011132750.6A CN202011132750A CN112199119B CN 112199119 B CN112199119 B CN 112199119B CN 202011132750 A CN202011132750 A CN 202011132750A CN 112199119 B CN112199119 B CN 112199119B
- Authority
- CN
- China
- Prior art keywords
- general
- instruction
- register
- arithmetic logic
- logic unit
- 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 claims abstract description 80
- 238000004364 calculation method Methods 0.000 claims abstract description 39
- 238000000034 method Methods 0.000 claims abstract description 23
- 238000009825 accumulation Methods 0.000 claims abstract description 14
- 230000008569 process Effects 0.000 description 6
- 238000013473 artificial intelligence Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 101100534223 Caenorhabditis elegans src-1 gene Proteins 0.000 description 3
- 230000004888 barrier function Effects 0.000 description 3
- 238000012884 algebraic function Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 230000000694 effects Effects 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
- 238000005192 partition Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/16—Constructional details or arrangements
-
- 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
- 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/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical 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/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/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- 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/3802—Instruction prefetching
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Advance Control (AREA)
Abstract
本发明涉及一种统合矩阵连乘和累加计算的向量运算装置和方法,该装置包括:流多处理器和通用矩阵连乘计算单元。流多处理器包含通用寄存器,而通用矩阵连乘计算单元包含指令队列和算术逻辑单元。算术逻辑单元耦接通用寄存器,依据指令队列中的通用矩阵连乘指令执行矩阵连乘和累加计算,并且将计算结果存储到通用寄存器。本发明通过如上所述的流多处理器和通用矩阵连乘计算单元的统合架构,可避免耗费时间和总线带宽在通用矩阵连乘计算单元中的本地缓存和流多处理器的通用寄存器之间迁移数据。
Description
技术领域
本发明涉及向量运算领域,尤指一种统合矩阵连乘和累加的计算的向量运算装置和方法。
背景技术
向量计算机是一种配备了专门的向量指令,用于提高向量处理速度的计算机。向量计算机能够同时处理多个线程束(Warp)的数据计算,因此,向量计算机就处理线程束的数据而言,比标量计算机快得多。为了计算多个线程束的数据,向量计算机通常配备流多处理器集群(Streaming Multiprocessor Cluster,SMC)。另外,为了大数据和人工智能的计算应用,向量计算机配置矩阵连乘和累加的计算的需求高度增加。因此,本发明提出一种向量运算装置和方法,用于统合矩阵连乘和累加的计算。
发明内容
有鉴于此,为了大数据和人工智能的计算应用,向量计算机架构的重新设计是个重要的课题。
本发明的实施例涉及一种向量运算装置,包括:流多处理器和通用矩阵连乘计算单元。流多处理器包含通用寄存器,而通用矩阵连乘计算单元包含指令队列和算术逻辑单元。算术逻辑单元耦接通用寄存器,依据指令队列中的通用矩阵连乘指令执行矩阵连乘和累加计算,并且将计算结果存储到通用寄存器。
本发明的实施例还涉及一种向量运算方法,由流多处理器和通用矩阵连乘计算单元协力执行,其中,流多处理器包含第一算术逻辑单元,通用矩阵连乘计算单元包含第二算术逻辑单元,所述方法包括:第一算术逻辑单元当提取的指令是通用矩阵连乘指令时,从流多处理器中的通用寄存器读取来源数据,将通用矩阵连乘指令和来源数据推入通用矩阵连乘计算单元中的指令队列;以及第二算术逻辑单元依据指令队列中的通用矩阵连乘指令执行矩阵连乘和累加计算,并且将计算结果存储到流多处理器中的通用寄存器或者通用矩阵连乘计算单元中的本地缓存。
上述实施例的优点之一,通过以上所述的流多处理器和通用矩阵连乘计算单元的统合架构,可避免耗费时间和总线带宽在通用矩阵连乘计算单元中的本地缓存和流多处理器的通用寄存器之间迁移数据。
本发明的其他优点将配合以下的说明和附图进行更详细的解说。
附图说明
此处所说明的附图用于提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1为向量运算系统的框图。
图2为矩阵连乘和累加的示意图。
图3为依据本发明实施例的统合流多处理器集群和通用矩阵连乘计算单元的装置的框图。
图4为依据本发明实施例的流多处理器中的算术逻辑单元的框图。
图5为依据本发明实施例的统合矩阵连乘和累加计算的向量运算的方法流程图。
其中,附图中符号的简单说明如下:
10:向量运算系统;100:流多处理器;210:mxn的矩阵;220:nxp的矩阵;230:mxp的矩阵;30:向量运算系统;310:流多处理器;320:通用矩阵连乘计算单元;311:算术逻辑单元;312:线程束指令调度器;313:通用寄存器;314:指令缓存;315:屏障寄存器;316:各线程束资源寄存器;321:算术逻辑单元;322:指令队列;323:本地缓存;324:寄存器;410:流水线;420:GEMM操作码对照表;432:操作码寄存器;434:来源寄存器;目的地寄存器436;440:比较器;450:解复用器;460:读取电路;S510~S570:方法步骤。
具体实施方式
以下将配合相关附图来说明本发明的实施例。在这些附图中,相同的标号表示相同或类似的组件或方法流程。
必须了解的是,使用于本说明书中的“包含”、“包括”等词,是用于表示存在特定的技术特征、数值、方法步骤、作业处理、组件和/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、组件、组件,或以上的任意组合。
本发明中使用如“第一”、“第二”、“第三”等词是用于修饰权利要求中的组件,并非用于表示之间具有优先权顺序,先行关系,或者是一个组件先于另一个组件,或者是执行方法步骤时的时间先后顺序,仅用于区别具有相同名字的组件。
必须了解的是,当组件描述为“连接”或“耦接”至另一组件时,可以是直接连结、或耦接至其他组件,可能出现中间组件。相反地,当组件描述为“直接连接”或“直接耦接”至另一组件时,其中不存在任何中间组件。用于描述组件之间关系的其他词语也可以类似方式解读,例如“介于”相对于“直接介于”,或者“邻接”相对于“直接邻接”等等。
参考图1。向量运算系统10中可设置流多处理器集群(Streaming MultiprocessorCluster,SMC),包含多个流多处理器(Streaming Multiprocessor,SM)100,不同流多处理器100之间的指令执行可使用信号彼此同步。流多处理器100被编程后可执行各种应用任务,包含但不限于:线性和非线性数据转化、数据库操作、大数据运算、人工智能计算、音频、视频数据的编码、解码、建模操作、图像渲染操作等。每个流多处理器100可同时执行多个线程束(Warps),每个线程束是由一群线程(Group of Threads)组成,而线程是一个使用硬件运行的最小单位,并具有自己的生命周期。线程束可关联于单指令多数据流(SingleInstruction Multiple Data,SIMD)指令、单指令多线程(Single Instruction MultipleThread,SIMT)技术等。不同线程束之间的执行可以是独立的,也可以是顺序性的。线程可代表关联于一条或多条指令的任务。举例来说,每个流多处理器100可同时执行8个线程束,每个线程束包含32个线程。虽然图1描述了4个流多处理器100,所属技术领域人员可依据不同需要在向量运算系统中设置更多或更少的流多处理器,本发明并不因此受限。
在一些实施例中,除了流多处理器100外,向量计算机还可提供矩阵连乘和累加(Matrix Multiply and Accumulation,MMA)的运算功能。矩阵连乘和累加在线性代数、机器学习、大数据统计、人工智能等领域是常见的算法。矩阵连乘和累加可以如下的方程式表示:
C=AxB,
代表从两个矩阵A和矩阵B产生一个矩阵C,其中,矩阵A的列数必须等于矩阵B的行数。例如,参考图2,矩阵A是mxn的矩阵210,矩阵B是nxp的矩阵220,表示如下:
矩阵C是矩阵A和矩阵B的乘积,计算结果是一个mxp的矩阵230,表示如下:
计算公式为:
i为从1至m的任意正整数,而j为从1至p的任意正整数,m、n和p可以是动态调整的常数。
在一些实施方式中,向量计算机可在每个流多处理器100中配置矩阵连乘和累加的计算单元,用于无缝地在流多处理器100中提供矩阵连乘和累加的功能。然而,每个流多处理器100中提供矩阵运算的能力会受限于原来流多处理器100的运算能力。例如,当流多处理器100包含64个处理32位浮点数(32-bit Floating-point,fp32)的流水线,和256千字节(Kilo Byte,KB)的通用寄存器(General-Purpose Registers,GPRs)时,其提供1024个16位B型浮点数(16-bit BFloat,BF16)的乘法累加单元(Multiplier-Accumulator Unit,MAC)的计算能力。当配置显著超过1024个BF16的计算能力的乘法累加单元时,将造成乘法累加单元和原来向量运算处理之间的能力不平衡。
在另一些实施方式中,向量计算机可配置独立的通用矩阵连乘(GEneral MatrixMultiply,GEMM)的处理器,作为协处理器(Coprocessor),用于提供矩阵连乘和累加的功能。然而,其需要为GEMM处理器定义新的指令集架构(Instruction Set Architecture,ISA),而不能获得现有向量计算ISA的生态系统(Ecosystem)的优点。另一个缺点是,由于流多处理器100和协处理器之间彼此独立,GEMM处理器的本地缓存和流多处理器100的通用寄存器之间的通信需要耗费大量的运算能力。
为了改善如上所述的缺点,本发明实施例提出一种向量运算系统,包含多个流多处理器和一个GEMM计算单元,GEMM计算单元提供矩阵连乘和累加的计算能力。在计算过程中,GEMM计算单元可从任何一个流多处理器中的通用寄存器(来源地址)读取数据,并且可直接将计算结果输出至任何一个流多处理器中的通用寄存器(目的地址)或者GEMM计算单元中的本地缓存。
参考图3,向量运算系统30可实施于大型主机、工作站、个人计算机、笔记本计算机(Laptop PC)、平板计算机、移动电话、数字相机、数字摄影机等电子产品之中。向量运算系统30包含多个流多处理器310和一个GEMM计算单元320,GEMM计算单元320耦接每个流多处理器310。每个流多处理器310包含指令缓存(Instruction Cache)314,用于存储程序核(Kernel)的多条指令。每个流多处理器310还包含线程束指令调度器(Warp InstructionScheduler)312,用于为每个线程束提取一系列指令并存储至指令缓存314,依据程序计数器为每个线程束从指令缓存314获取待执行的指令。每个线程束可拥有独立的程序计数器(Program Counter,PC)寄存器,或者共享一个PC寄存器,用于记录现在正执行的指令位置(也就是指令地址)。每当为一个线程束从指令缓存314提取一条指令后,相应程序计数器加一。线程束指令调度器312在适当的时间点将指令送到算术逻辑单元(Arithmetic LogicalUnit,ALU)311来执行,这些指令在特定计算系统的指令集架构(Instruction SetArchitecture,ISA)中定义。算术逻辑单元311可执行各式各样的操作,例如,整数、浮点数的加法和乘法计算、比较操作、布尔(Boolean)运算、比特位移、代数函数(如平面插值、三角函数、指数函数、对数函数)等。算术逻辑单元311在执行的过程中,可从通用寄存器(General-Purpose Registers,GPRs)313的指定位置(又可称为来源地址)读取数据,和回写执行结果到通用寄存器313的指定位置(又可称为目的地地址)。通用寄存器313包含多个通用寄存器文件(GPR Files),每个通用寄存器文件以通用寄存器标识符识别(GPR id)。每个流多处理器310还包含屏障寄存器(Barriers Register)315,可用于让软件同步不同线程束间的执行,以及各线程束资源寄存器(Resource-per-warp Register)316,可用于让软件在执行时动态配置每个线程束能够使用的通用寄存器313的空间范围。虽然图3的流多处理器310只列出组件311至316,但这只是用于简要说明本发明的技术特征,所属技术领域人员理解每个流多处理器310还包含更多组件。
在程序核中,除了包含原本由指令集架构定义的指令外,还可包含GEMM指令。当流多处理器310中的算术逻辑单元311提取到一个GEMM指令时,算术逻辑单元311不执行GEMM指令,只从通用寄存器313读取必要的数据,接着将GEMM指令和读取数据推入指令队列322。在一些实施例中,向量运算系统30只让一个流多处理器310(可称为主要流多处理器)中的算术逻辑单元311拥有耦接到指令队列322的路径。由于向量计算的生态系统已经合适地建立在现存的应用程序编程接口(Application Programming Interface,API)上,例如OpenCL等,当程序员能够编写GEMM指令到程序核时,将让编写程序更为容易。以下是MMA指令的示例:
MMA dest,src0,src1;//matrix multiply and accumulation
其中,参数“src0”和“src1”分别代表来源矩阵A和B的地址,参数“dest”代表目的矩阵的地址。目的矩阵存储AxB的计算结果。参数“src0”和“src1”可使用通用寄存器标识符以指向特定的通用寄存器文件。参数“dest”可指向通用寄存器文件或本地缓存323的地址。类似的,如果参数“dest”指向特定通用寄存器文件,可使用通用寄存器标识符表示。
当算术逻辑单元311执行MMA指令时,算术逻辑单元311根据参数“src0”和“src1”从通用寄存器313的特定通用寄存器文件读取数据(又称来源数据),接着,此MMA指令的操作码(Operation Code,Opcode)和来源数据会传送到GEMM计算单元320中的指令队列322。
在一些实施例中,参考图4,算术逻辑单元311包含操作码寄存器432、来源寄存器434和目的地寄存器436,用于分别存储从线程束指令调度器312传来的指令的操作码、来源地址和目的地址。算术逻辑单元311还包含GEMM操作码对照表420和比较器440,GEMM操作码对照表420用于存储多个GEMM指令的操作码,而比较器440比较操作码寄存器432中存储的操作码和GEMM操作码对照表420中的每一个操作码。算术逻辑单元311还包含解复用器(DeMUX)450,其输入端连接操作码寄存器432和目的地寄存器436,并且两个输出端分别连接流水线410和指令队列322。算术逻辑单元311还包含读取电路460,其输入端连接通用寄存器313,并且其输出端连接本地缓存323。针对每个指令,当比较器440发现操作码寄存器432中的操作码不相符于GEMM操作码对照表420中的所有操作码的时候,发出控制信号给解复用器450以让解复用器450输出操作码寄存器432、来源寄存器434和目的地寄存器436的内容给流水线410,用于执行此指令。当比较器440发现操作码寄存器432中的操作码相符于GEMM操作码对照表420中的任何一个的时候,发出控制信号给解复用器450以让解复用器450输出操作码寄存器432和目的地寄存器436的内容给指令队列322,用于将GEMM指令推入指令队列322。此外,当比较器440发现操作码寄存器432中的操作码相符于GEMM操作码对照表420中的任何一个的时候,发出控制信号给读取电路460以驱动读取电路460根据来源寄存器434中存储的通用寄存器标识符从特定通用寄存器文件读取来源数据,并存储至指令队列322中的指定位置。虽然图4描述了将操作码寄存器432、来源寄存器434和目的地寄存器436设置在算术逻辑单元311之中,所属技术领域人员也可将操作码寄存器432、来源寄存器434和目的地寄存器436设置在算术逻辑单元311之外,本发明并不因此受限。
参考回图3,GEMM计算单元320包含算术逻辑单元321、指令队列322、本地缓存323和寄存器324。指令队列322以先进先出的方式存储从指定流多处理器310中的算术逻辑单元311传来的MMA指令和来源数据。算术逻辑单元321可先从指令队列322的指定位置获取来源数据,并存储到本地随机存取存储器(Local RAM,未显示于图3)。一旦数据准备完毕,算术逻辑单元321执行矩阵连乘和累加计算,并且依据MMA指令中的目的地址的信息将计算结果存储于本地缓存323或通用寄存器313的特定位置。当算术逻辑单元321将计算结果直接存储到通用寄存器313中的特定文件时,可避免耗费时间和总线带宽让数据在本地缓存323和通用寄存器313之间迁移。虽然图4的GEMM计算单元320只列出组件321至324,但这只是用于简要说明本发明的技术特征,所属技术领域人员理解GEMM计算单元320还包含更多组件。
算术逻辑单元311还可执行跨区存储指令(Cross-domain Store Command)指令和跨区加载指令(Cross-domain Load Command),用于在通用寄存器313和本地缓存323之间迁移数据。以下是跨区存储指令的示例:
Store dest,src;//data from a GPR file into an address of the localcache
其中,参数“src”包含特定通用寄存器文件的标识符,参数“dest”包含本地缓存323的特定地址。
以下是跨区加载指令的示例:
Load dest,src;//data from an address of the local cache into a GPRfile
其中,参数“src”包含本地缓存323的特定地址,参数“dest”包含特定通用寄存器文件的标识符。
参考图4。当比较器440发现跨区存储指令的操作码不相符于GEMM操作码对照表420中的所有操作码的时候,发出控制信号给解复用器450以让解复用器450输出操作码寄存器432、来源寄存器434和目的地寄存器436的内容给流水线410,用于在执行跨区存储指令时读取参数“src”所指出的特定通用寄存器文件的来源数据,并且存储来源数据至参数“dest”所指出的本地缓存323的特定地址。
当比较器440发现跨区加载指令的操作码不相符于GEMM操作码对照表420中的所有操作码的时候,发出控制信号给解复用器450以让解复用器450输出操作码寄存器432、来源寄存器434和目的地寄存器436的内容给流水线410,用于在执行跨区加载指令时读取参数“src”所指出的本地缓存323的特定地址的来源数据,并且存储来源数据至参数“dest”所指出的特定通用寄存器文件。
此外,应用如上所述的架构可达成GEMM指令和向量计算指令的并行计算,让GEMM计算单元320工作的同时,流多处理器310也在工作。具体来说,算术逻辑单元311将GEMM指令推入指令队列322并判断下个向量计算指令不需要等待GEMM指令的执行结果时,算术逻辑单元311可立即执行向量计算指令,使得算术逻辑单元321在执行GEMM指令的同时算术逻辑单元311也并行执行向量计算指令,提升向量运算系统30的整体效能。
在一些实施例中,GEMM计算单元320在每个时钟周期执行16K(也就是16x1024)的矩阵连乘和累加的计算,并且耦接到16个流多处理器310。这样的配置可在人工智能的应用上,让GEMM计算能力和向量计算能力达成较好的平衡。
在一些实施例中,参考如图5所示的向量运算方法,用于统合矩阵连乘和累加的计算。该方法由流多处理器310和GEMM计算单元320协力执行,反复执行一个循环,直到程序核中的所有指令都处理完毕为止,详细说明如下:
步骤S510:流多处理器310中的算术逻辑单元311(以下又可称为第二算术逻辑单元)获取程序核中的第一个或下一个指令。
步骤S520:第二算术逻辑单元判断获取的指令是否为GEMM指令。如果是,流程继续进行步骤S540的处理;否则,流程继续进行步骤S530的处理。
步骤S530:第二算术逻辑单元中的流水线执行获取的指令,例如,上述跨区存储指令和跨区加载指令。
步骤S540:第二算术逻辑单元依据指令的来源参数从流多处理器310的通用寄存器313中的特定通用寄存器文件读取来源数据。
步骤S550:第二算术逻辑单元将获取的指令和来源数据推入GEMM计算单元320中的指令队列322,其中,指令包含操作码和目的参数。
步骤S560:GEMM计算单元320中的算术逻辑单元321(又可称为第一算术逻辑单元)从指令队列322获取指令和来源数据并执行矩阵连乘和累加的计算。其计算结果可依据目的参数的内容存储于本地缓存323的特定地址或者通用寄存器313中的特定通用寄存器文件。
步骤S570:第二算术逻辑单元判断程序核中的所有指令是否都处理完毕。如果是,结束整个流程;否则,流程继续进行步骤S510的处理。
虽然图3、图4中包含了以上描述的组件,但不排除在不违反发明的精神下,使用更多其他的附加组件,以达成更佳的技术效果。此外,虽然图5的流程图采用指定的顺序来执行,但是在不违反发明精神的情况下,所属技术领域的技术人员可以在达到相同效果的前提下,修改这些步骤之间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。此外,所属技术领域的技术人员也可以将若干步骤整合为一个步骤,或者是除了这些步骤外,循序或并行地执行更多步骤,本发明也不应因此而局限。
以上所述仅为本发明较佳实施例,然其并非用以限定本发明的范围,任何熟悉本项技术的人员,在不脱离本发明的精神和范围内,可在此基础上做进一步的改进和变化,因此本发明的保护范围当以本申请的权利要求书所界定的范围为准。
Claims (14)
1.一种向量运算装置,用于统合矩阵连乘和累加的计算,其特征在于,包括:
流多处理器,包含通用寄存器;以及
通用矩阵连乘计算单元,包含指令队列和第一算术逻辑单元,其中,所述第一算术逻辑单元耦接所述通用寄存器,依据所述指令队列中的通用矩阵连乘指令执行矩阵连乘和累加计算,并且将计算结果存储到所述通用寄存器;
所述流多处理器包含第二算术逻辑单元,所述第二算术逻辑单元耦接所述指令队列,用于当提取的指令是所述通用矩阵连乘指令时,从所述通用寄存器获取来源数据,将所述通用矩阵连乘指令和所述来源数据推入所述指令队列。
2.如权利要求1所述的向量运算装置,其特征在于,所述第二算术逻辑单元包含:
通用矩阵连乘操作码对照表,存储所述通用矩阵连乘指令的第一操作码;
解复用器,包含输入端、第一输出端和第二输出端,所述输入端耦接操作码寄存器和来源寄存器,所述操作码寄存器存储第二操作码,所述来源寄存器存储指向所述通用寄存器中的一第一地址,所述第一输出端耦接流水线,所述第二输出端耦接所述指令队列;
读取电路,耦接所述通用寄存器和所述指令队列;以及
比较器,耦接所述通用矩阵连乘操作码对照表和所述解复用器,用于判断所述第一操作码是否相符于所述第二操作码;当所述第一操作码相符于所述第二操作码时,输出第一控制信号给所述解复用器,用于将所述第二操作码输出到所述指令队列,以及输出第二控制信号给所述读取电路,用于驱动所述读取电路从所述通用寄存器中的所述第一地址读取所述来源数据,并且将所述来源数据输出到所述指令队列。
3.如权利要求2所述的向量运算装置,其特征在于,所述输入端耦接目的地寄存器,所述目的地寄存器存储指向所述通用寄存器中的一第二地址;所述比较器当所述第一操作码相符于所述第二操作码时,输出所述第一控制信号给所述解复用器,用于将所述第二地址输出到所述指令队列;所述第一算术逻辑单元将所述计算结果存储至所述通用寄存器中的所述第二地址。
4.如权利要求2和3中任一项所述的向量运算装置,其特征在于,所述第一地址和第二地址为代表通用寄存器文件的通用寄存器标识符。
5.如权利要求2所述的向量运算装置,其特征在于,所述输入端耦接目的地寄存器,所述目的地寄存器存储第二地址;所述第二算术逻辑单元包含所述流水线;所述比较器当所述第一操作码不相符于所述第二操作码时,输出所述第一控制信号给所述解复用器,用于输出所述第二操作码、所述第一地址和所述第二地址给所述流水线。
6.如权利要求5所述的向量运算装置,其特征在于,所述第一操作码关联于跨区存储指令,所述流水线在执行所述跨区存储指令时读取所述通用寄存器的通用寄存器文件中的来源数据,并且存储所述来源数据至所述通用矩阵连乘计算单元中的本地缓存。
7.如权利要求5所述的向量运算装置,其特征在于,所述第一操作码关联于跨区加载指令,所述流水线在执行所述跨区加载指令时读取所述通用矩阵连乘计算单元中的本地缓存的来源数据,并且存储所述来源数据至所述通用寄存器中的通用寄存器文件。
8.如权利要求1所述的向量运算装置,其特征在于,所述第二算术逻辑单元当提取的指令不是所述通用矩阵连乘指令时,使用所述第二算术逻辑单元中的流水线执行所述提取的指令。
9.如权利要求1所述的向量运算装置,其特征在于,所述通用矩阵连乘计算单元在每个时钟周期执行16K的矩阵连乘和累加的计算,并且耦接到16个所述流多处理器。
10.如权利要求1所述的向量运算装置,其特征在于,所述流多处理器和所述通用矩阵连乘计算单元并行执行不同的计算。
11.一种向量运算方法,由流多处理器和通用矩阵连乘计算单元协力执行,其中,所述流多处理器包含第一算术逻辑单元,所述通用矩阵连乘计算单元包含第二算术逻辑单元,其特征在于,所述方法包括:
所述第一算术逻辑单元当提取的指令是通用矩阵连乘指令时,从所述流多处理器中的通用寄存器读取来源数据,将所述通用矩阵连乘指令和所述来源数据推入所述通用矩阵连乘计算单元中的指令队列;以及
所述第二算术逻辑单元依据所述指令队列中的通用矩阵连乘指令执行矩阵连乘和累加计算,并且将计算结果存储到所述流多处理器中的所述通用寄存器或者所述通用矩阵连乘计算单元中的本地缓存。
12.如权利要求11所述的向量运算方法,其特征在于,其中所述通用矩阵连乘指令包含目的参数,所述方法包括:
所述第二算术逻辑单元依据所述目的参数的内容将计算结果存储到所述通用寄存器中的指定通用寄存器文件或者所述本地缓存中的指定地址。
13.如权利要求11所述的向量运算方法,其特征在于,包括:
所述第一算术逻辑单元当提取的指令是跨区存储指令时,所述第一算术逻辑单元中的流水线执行所述跨区存储指令,用于从所述通用寄存器读取数据,并且存储所述读取数据至所述本地缓存。
14.如权利要求11所述的向量运算方法,其特征在于,包括:
所述第一算术逻辑单元当提取的指令是跨区加载指令时,所述第一算术逻辑单元中的流水线执行所述跨区加载指令,用于从所述本地缓存读取数据,并且存储所述读取数据至所述通用寄存器。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011132750.6A CN112199119B (zh) | 2020-10-21 | 2020-10-21 | 向量运算装置 |
TW110113315A TWI794789B (zh) | 2020-10-21 | 2021-04-14 | 向量運算裝置和方法 |
US17/366,485 US11809516B2 (en) | 2020-10-21 | 2021-07-02 | Apparatus and method for vector computing incorporating with matrix multiply and accumulation calculation |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011132750.6A CN112199119B (zh) | 2020-10-21 | 2020-10-21 | 向量运算装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112199119A CN112199119A (zh) | 2021-01-08 |
CN112199119B true CN112199119B (zh) | 2022-02-01 |
Family
ID=74008718
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011132750.6A Active CN112199119B (zh) | 2020-10-21 | 2020-10-21 | 向量运算装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11809516B2 (zh) |
CN (1) | CN112199119B (zh) |
TW (1) | TWI794789B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230067810A1 (en) * | 2021-08-31 | 2023-03-02 | Intel Corporation | Bfloat16 fused multiply instructions |
US20230069000A1 (en) * | 2021-08-31 | 2023-03-02 | Intel Corporation | Bfloat16 arithmetic instructions |
US20240168762A1 (en) * | 2022-11-21 | 2024-05-23 | Nvidia Corporation | Application programming interface to wait on matrix multiply-accumulate |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108805795A (zh) * | 2017-05-05 | 2018-11-13 | 英特尔公司 | 用于机器学习的硬件实现的点对点通信原语 |
CN110415157A (zh) * | 2018-04-26 | 2019-11-05 | 华为技术有限公司 | 一种矩阵乘法的计算方法及装置 |
US20200293867A1 (en) * | 2019-03-12 | 2020-09-17 | Nvidia Corp. | Efficient neural network accelerator dataflows |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3035828B2 (ja) * | 1989-12-28 | 2000-04-24 | 甲府日本電気株式会社 | 情報処理装置 |
AUPO648397A0 (en) * | 1997-04-30 | 1997-05-22 | Canon Information Systems Research Australia Pty Ltd | Improvements in multiprocessor architecture operation |
US20140258680A1 (en) * | 2013-03-05 | 2014-09-11 | Qualcomm Incorporated | Parallel dispatch of coprocessor instructions in a multi-thread processor |
US11023231B2 (en) * | 2016-10-01 | 2021-06-01 | Intel Corporation | Systems and methods for executing a fused multiply-add instruction for complex numbers |
US10360034B2 (en) * | 2017-04-18 | 2019-07-23 | Samsung Electronics Co., Ltd. | System and method for maintaining data in a low-power structure |
US10643297B2 (en) * | 2017-05-05 | 2020-05-05 | Intel Corporation | Dynamic precision management for integer deep learning primitives |
CN109871236A (zh) * | 2017-12-01 | 2019-06-11 | 超威半导体公司 | 具有低功率并行矩阵乘法流水线的流处理器 |
CN108845828B (zh) * | 2018-05-29 | 2021-01-08 | 深圳市国微电子有限公司 | 一种协处理器、矩阵运算加速方法及系统 |
US11138009B2 (en) * | 2018-08-10 | 2021-10-05 | Nvidia Corporation | Robust, efficient multiprocessor-coprocessor interface |
CN111124492B (zh) * | 2019-12-16 | 2022-09-20 | 成都海光微电子技术有限公司 | 指令生成方法、装置、指令执行方法、处理器及电子设备 |
US11409839B2 (en) * | 2020-08-21 | 2022-08-09 | Alibaba Group Holding Limited | Programmable and hierarchical control of execution of GEMM operation on accelerator |
US11861337B2 (en) * | 2020-08-26 | 2024-01-02 | Micron Technology, Inc. | Deep neural networks compiler for a trace-based accelerator |
-
2020
- 2020-10-21 CN CN202011132750.6A patent/CN112199119B/zh active Active
-
2021
- 2021-04-14 TW TW110113315A patent/TWI794789B/zh active
- 2021-07-02 US US17/366,485 patent/US11809516B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108805795A (zh) * | 2017-05-05 | 2018-11-13 | 英特尔公司 | 用于机器学习的硬件实现的点对点通信原语 |
CN110415157A (zh) * | 2018-04-26 | 2019-11-05 | 华为技术有限公司 | 一种矩阵乘法的计算方法及装置 |
US20200293867A1 (en) * | 2019-03-12 | 2020-09-17 | Nvidia Corp. | Efficient neural network accelerator dataflows |
Non-Patent Citations (1)
Title |
---|
细粒度任务并行GPU通用矩阵乘;张帅等;《计算机工程与科学》;20150515(第05期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
US20220121727A1 (en) | 2022-04-21 |
CN112199119A (zh) | 2021-01-08 |
US11809516B2 (en) | 2023-11-07 |
TWI794789B (zh) | 2023-03-01 |
TW202217600A (zh) | 2022-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111310910B (zh) | 一种计算装置及方法 | |
CN112199119B (zh) | 向量运算装置 | |
US11714875B2 (en) | Apparatuses, methods, and systems for instructions of a matrix operations accelerator | |
US20240078285A1 (en) | Systems and methods of instructions to accelerate multiplication of sparse matrices using bitmasks that identify non-zero elements | |
EP3391195B1 (en) | Instructions and logic for lane-based strided store operations | |
US7487338B2 (en) | Data processor for modifying and executing operation of instruction code according to the indication of other instruction code | |
JP2021057004A (ja) | 行列演算アクセラレータの命令のための装置、方法、及びシステム | |
JPH10134036A (ja) | マルチメディア信号プロセッサの単一命令多重データ処理 | |
US20200210174A1 (en) | Apparatuses, methods, and systems for stencil configuration and computation instructions | |
US10990397B2 (en) | Apparatuses, methods, and systems for transpose instructions of a matrix operations accelerator | |
CN107315717B (zh) | 一种用于执行向量四则运算的装置和方法 | |
US10152321B2 (en) | Instructions and logic for blend and permute operation sequences | |
US20220121444A1 (en) | Apparatus and method for configuring cooperative warps in vector computing system | |
EP3974966A1 (en) | Large scale matrix restructuring and matrix-scalar operations | |
US6934938B2 (en) | Method of programming linear graphs for streaming vector computation | |
EP4020169A1 (en) | Apparatuses, methods, and systems for 8-bit floating-point matrix dot product instructions | |
EP3391235A1 (en) | Instructions and logic for even and odd vector get operations | |
US6785743B1 (en) | Template data transfer coprocessor | |
JPH10143494A (ja) | スカラ/ベクトル演算の組み合わせられた単一命令複数データ処理 | |
EP3757822B1 (en) | Apparatuses, methods, and systems for enhanced matrix multiplier architecture | |
US11630667B2 (en) | Dedicated vector sub-processor system | |
US20210042127A1 (en) | Group Load Register of a Graph Streaming Processor |
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 | ||
CP03 | Change of name, title or address |
Address after: 201114 room 1302, 13 / F, building 16, 2388 Chenhang Road, Minhang District, Shanghai Patentee after: Shanghai Bi Ren Technology Co.,Ltd. Country or region after: China Address before: 201114 room 1302, 13 / F, building 16, 2388 Chenhang Road, Minhang District, Shanghai Patentee before: Shanghai Bilin Intelligent Technology Co.,Ltd. Country or region before: China |
|
CP03 | Change of name, title or address |