CN113961878A - 可配置的bf16格式矩阵乘法数据通路实现方法、部件及装置 - Google Patents

可配置的bf16格式矩阵乘法数据通路实现方法、部件及装置 Download PDF

Info

Publication number
CN113961878A
CN113961878A CN202111241122.6A CN202111241122A CN113961878A CN 113961878 A CN113961878 A CN 113961878A CN 202111241122 A CN202111241122 A CN 202111241122A CN 113961878 A CN113961878 A CN 113961878A
Authority
CN
China
Prior art keywords
index
data
bit floating
multiplication
opa
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
Application number
CN202111241122.6A
Other languages
English (en)
Inventor
邓全
孙彩霞
隋兵才
王永文
倪晓强
郭维
郑重
黄立波
雷国庆
王俊辉
郭辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN202111241122.6A priority Critical patent/CN113961878A/zh
Publication of CN113961878A publication Critical patent/CN113961878A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/485Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Nonlinear Science (AREA)
  • Data Mining & Analysis (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开了一种可配置的BF16格式矩阵乘法数据通路实现方法、部件及装置,本发明可配置的BF16格式矩阵乘法数据通路实现方法包括:进行数据通路配置,包括数据通路数C,单个数据通路支持的数据宽度V的配置;选择一条数据通路,在该数据通路中选择处理器中计算部件所支持的计算粒度,将原有矩阵乘操作切分一个或多个微操作,并按照设定的连续微操作的流水线间隔执行。本发明基于现有典型数据执行通路提供一种灵活的BF16格式矩阵乘法数据通路实现方式,能够提升BF16设计的硬件设计效率,并提供更高的系统性能,支持多种数据的执行粒度。

Description

可配置的BF16格式矩阵乘法数据通路实现方法、部件及装置
技术领域
本发明涉及微处理器设计时的微处理器体系结构和执行部件设计,具体涉及一种可配置的BF16格式矩阵乘法数据通路实现方法、部件及装置。
背景技术
人工智能应用近年发展速度迅猛,被广泛应用在如图像识别、目标识别和自然语言处理等领域。以图像识别领域为例,2016年IMAGENET比赛的冠军的图像识别错误率已低于人类的错误率。人工智能领域同时吸引了学术界和工业界的关注,并正快速走向应用阶段。人工智能应用正成为新兴应用的代表之一。其应用同时表现出对计算和存储计算能力的强烈需求,考虑到此类应用具有一定的容错能力,其运算所使用的数据类型与传统应用不同,Google提出BF16格式,以此替代fp16或fp32。BF16格式可以保持与fp16相同的数据长度的同时,提高数据本身的表示范围,提高应用的精度。
BF16格式的数据长度为16位,其中符号位占1位,阶码占8位,尾数占7位,具有与fp32相同的阶码长度。基于BF16的指令主要服务于人工智能应用,计算类指令主要包括点乘和矩阵乘两种操作。矩阵乘指令的源操作数为三个矩阵,其矩阵大小分别2x4、4x2和2x2。矩阵数据以向量的形式在处理器中保存,基础向量的数据长度为128位。考虑到BF16的数据编码方式与FP32的重叠部分,BF16矩阵乘法操作的数据通路设计可以天然的依托原有fp32数据格式的数据通路,但是其数据执行通路的有效计算带宽取决于fp32,考虑到BF16的宽度为fp32的一半,上述方案的计算带宽将下降为理想设计的一半。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种可配置的BF16格式矩阵乘法数据通路实现方法、部件及装置,本发明基于现有典型数据执行通路提供一种灵活的BF16格式矩阵乘法数据通路实现方式,能够提升BF16设计的硬件设计效率,并提供更高的系统性能,支持多种数据的执行粒度。
为了解决上述技术问题,本发明采用的技术方案为:
一种可配置的BF16格式矩阵乘法数据通路实现方法,包括:
1)进行数据通路配置,包括数据通路数C,单个数据通路支持的数据宽度V的配置;
2)选择一条数据通路,在该数据通路中选择处理器中计算部件所支持的计算粒度,将原有矩阵乘操作切分一个或多个微操作,并按照设定的连续微操作的流水线间隔执行。
可选地,步骤2)包括:
A2.1)选择一条数据通路PATHi
A2.2)激活数据通路PATHi的16位浮点乘法模块fmul16和32位浮点加法模块fadd32;
A2.3)在该数据通路中以乘累加操作为计算粒度,将原有矩阵乘操作切分为基于乘累加操作的4个微操作,将每一个微操作通过数据通路PATHi的16位浮点乘法模块fmul16和32位浮点加法模块fadd32完成乘累加操作,且连续微操作的流水线间隔为3拍。
可选地,原有矩阵乘操作的输入第一个源操作数opa和第二个源操作数opb为两组矩阵数据,一组矩阵数据的尺寸为2×4,另一组矩阵数据的尺寸为4×2,输出的目的操作数res为尺寸为2×2的矩阵数据;步骤A2.3)中将每一个微操作通过数据通路PATHi的16位浮点乘法模块fmul16和32位浮点加法模块fadd32完成乘累加操作包括:依次针对n、j、k进行三个层次嵌套的循环遍历,且在第三层循环遍历中根据下式计算目的操作数的索引为n的子向量中索引为j的元素:
res[n][j]+=opa[n][k]*opb[j][k]
上式中,res[n][j]表示元素长度为32位的目的操作数res的索引为n的子向量中索引为j的元素,“+=”表示累加运算,opa[n][k]表示元素长度为16位的第一个源操作数opa的索引为n的子向量中索引为k的元素,opb[j][k]表示元素长度为16位的第二个源操作数opb的索引为j的子向量中索引为k的元素,其中n,j取值范围为[0,2),k取值范围为[0,4),n为操作元素对应的第一个源操作数opa的行号,j为操作元素对应的第二个源操作数opb的行号,k为操作元素对应的矩阵列号。
可选地,步骤2)包括:
B2.1)选择一条数据通路PATHi
B2.2)激活数据通路PATHi的16位浮点乘法模块fmul16、32位浮点加法模块fadd32和64位浮点加法模块fadd64,其中64位浮点加法模块fadd64支持两路并行32位浮点加法操作;
B2.3)在该数据通路中以乘累加操作为计算粒度,将原有矩阵乘操作切分为基于点乘操作的2个微操作,将每一个微操作通过数据通路PATHi的16位浮点乘法模块fmul16、32位浮点加法模块fadd32和64位浮点加法模块fadd64完成点乘操作,且连续微操作的流水线间隔为3拍。
可选地,原有矩阵乘操作的输入第一个源操作数opa和第二个源操作数opb为两组矩阵数据,一组矩阵数据的尺寸为2×4,另一组矩阵数据的尺寸为4×2,输出的目的操作数res为尺寸为2×2的矩阵数据;步骤B2.3)中将每一个微操作通过数据通路PATHi的16位浮点乘法模块fmul16、32位浮点加法模块fadd32和64位浮点加法模块fadd64完成点乘操作包括:依次针对n、j、k进行三个层次嵌套的循环遍历,且在第三层循环遍历中根据下式计算目的操作数的索引为n的子向量中索引为j的元素:
res[n][j]+=opa[n][2k]*opb[j][2k]+opa[n][2k+1]*opb[j][2k+1]
上式中,res[n][j]表示元素长度为32位的目的操作数res的索引为n的子向量中索引为j的元素,“+=”表示累加运算,opa[n][2k]表示元素长度为16位的第一个源操作数opa的索引为n的子向量中索引为2k的元素,opa[n][2k+1]表示元素长度为16位的第一个源操作数opa的索引为n的子向量中索引为2k+1的元素,opb[j][2k]表示元素长度为16位的第二个源操作数opb的索引为j的子向量中索引为2k的元素,opb[j][2k+1]表示元素长度为16位的第二个源操作数opb的索引为j的子向量中索引为2k+1的元素,其中n,j,k取值范围为[0,2),n为操作元素对应的第一个源操作数opa的行号,j为操作元素对应的第二个源操作数opb的行号,k为操作元素对应的矩阵列号。
可选地,步骤2)包括:
C2.1)选择两条数据通路;
C2.2)激活两个数据通路的16位浮点乘法模块fmul16、32位浮点加法模块fadd32和64位浮点加法模块fadd64,其中64位浮点加法模块fadd64支持两路并行32位浮点加法操作;
C2.3)在该数据通路中以矩阵乘操作为计算粒度,将原有矩阵乘操作转换为基于矩阵乘的1个微操作,且连续微操作的流水线间隔为1拍,输入包括8个源寄存器和目的寄存器;针对每一条数据通路,将8个输入数据两两输入到该数据通路的16位浮点乘法模块fmul16、乘法结果先在32位浮点加法模块fadd32中与目的寄存器完成乘法运算得到乘法结果,再将乘法结果送入本数据通路或另一条数据通路的64位浮点加法模块fadd64,在该64位浮点加法模块fadd64中与另一条数据通路的乘法结果完成累加以得到最终结果。
可选地,原有矩阵乘操作的输入第一个源操作数opa和第二个源操作数opb为两组矩阵数据,一组矩阵数据的尺寸为2×4,另一组矩阵数据的尺寸为4×2,输出的目的操作数res为尺寸为2×2的矩阵数据;步骤C2.3)中将8个输入数据两两输入到该数据通路的16位浮点乘法模块fmul16、乘法结果先在32位浮点加法模块fadd32中与目的寄存器完成乘法运算得到乘法结果,再将乘法结果送入本数据通路或另一条数据通路的64位浮点加法模块fadd64,在该64位浮点加法模块fadd64中与另一条数据通路的乘法结果完成累加以得到最终结果包括:依次针对n、j进行两个层次嵌套的循环遍历,且在第二层循环遍历根据下式计算目的操作数的索引为n的子向量中索引为j的元素:
res[n][j]+=opa[n][0]*opb[j][0]+opa[n][1]*opb[j][1]+opa[n][2]*opb[j][2]+opa[n][3]*opb[j][3]
上式中,res[n][j]表示元素长度为32位的目的操作数res的索引为n的子向量中索引为j的元素,“+=”表示累加运算,opa[n][0]表示元素长度为16位的第一个源操作数opa的索引为n的子向量中索引为0的元素,opb[j][0]表示元素长度为16位的第二个源操作数opb的索引为j的子向量中索引为0的元素,opa[n][1]表示元素长度为16位的第一个源操作数opa的索引为n的子向量中索引为1的元素,opb[j][1]表示元素长度为16位的第二个源操作数opb的索引为j的子向量中索引为1的元素,opa[n][2]表示元素长度为16位的第一个源操作数opa的索引为n的子向量中索引为2的元素,opb[j][2]表示元素长度为16位的第二个源操作数opb的索引为j的子向量中索引为2的元素,opa[n][3]表示元素长度为16位的第一个源操作数opa的索引为n的子向量中索引为3的元素,opb[j][3]表示元素长度为16位的第二个源操作数opb的索引为j的子向量中索引为3的元素。
本发明还提供一种可配置的BF16格式矩阵乘法数据通路实现部件,包括控制单元、多个数据通路以及用于配置所选数据通路及其数据宽度V的配置寄存器,所述控制单元分别与所述多个数据通路以及配置寄存器相连,每一个数据通路中包含16位浮点乘法模块fmul16、32位浮点加法模块fadd32和64位浮点加法模块fadd64,且64位浮点加法模块fadd64的数量为32位浮点加法模块fadd32的数量的两倍,32位浮点加法模块fadd32的数量为16位浮点乘法模块fmul16的数量的两倍,所述控制单元为被编程或配置以执行所述可配置的BF16格式矩阵乘法数据通路实现方法的步骤。
此外,本发明还提供一种计算机装置,包括相互连接的微处理器和存储器,该微处理器被编程或配置以执行所述可配置的BF16格式矩阵乘法数据通路实现方法的步骤。
此外,本发明还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,该计算机程序为被编程或配置以执行所述可配置的BF16格式矩阵乘法数据通路实现方法的计算机程序。
和现有技术相比,本发明具有下述优点:
1、本发明可配置的BF16格式矩阵乘法数据通路实现方法可面向BF16格式矩阵乘法数据通路设计,针对现有功能模块执行通路的特点,提供了多种不同数据执行宽度的设计方案,并提供对应数据通路的硬件升级方案;
2、本发明可配置的BF16格式矩阵乘法数据通路实现方法明确了不同设计方案对应的硬件性能,可服务于不同前端指令发射能力的微处理器设计,并降低型谱设计方案间移植的时间成本。
3、BF16格式是一种存储格式,无法独立使用,必须依靠FP32格式。BF16格式本身的特点决定了其对应的硬件设计为增量设计。另一方面,微处理器体系结构的一个隐藏要求前端指令分配能力和后端数据处理能力的平衡性。可配置的BF16格式矩阵乘法数据通路实现方法除了为BF16数据格式提供功能完备的设计方案外,为不同指令分派能力的微处理器体系结构提供了对应的后端数据通路设计方案,间接解耦了原有设计的前端和后端限制。
附图说明
图1为本发明实施例一方法的基本流程示意图。
图2为本发明实施例一中激活数据通路中的运算部件的示意图。
图3为本发明实施例二中激活数据通路中的运算部件的示意图。
图4为本发明实施例三中激活数据通路中的运算部件的示意图。
具体实施方式
下面通过具体实施案例和附图对本发明进行进一步详细阐述,此处描述的具体实施案例仅用于解释本发明而不用于限定本发明。
实施例一:
如图1所示,本实施例可配置的BF16格式矩阵乘法数据通路实现方法包括:
1)进行数据通路配置,包括数据通路数C,单个数据通路支持的数据宽度V的配置;
2)选择一条数据通路,在该数据通路中选择处理器中计算部件所支持的计算粒度,将原有矩阵乘操作切分一个或多个微操作,并按照设定的连续微操作的流水线间隔执行。
本实施例中,步骤1)进行数据通路配置时,基于数据通路数C以及单个数据通路支持的数据宽度V的配置,可得到支持的总数据宽度为C*V。对配置参数C和V的限制如下,数据通路数C大于等于2且为偶数,单个数据通路支持的数据宽度V大于等于128bits。为方便描述下面约定数据执行通道的数据宽度为128bit,数据通道数为2个,浮点乘法操作为3拍,浮点加法操作为2拍。
根据矩阵乘操作,任意输出矩阵的元素为5项元素累加的结果,其中四项为乘法结果。流水线中假定浮点乘法操作的时序为3拍,浮点加法操作的时序为3拍。考虑到目前处理器指令的设计思路,指令在处理器中可以细分为多个微操作,根据数据的计算粒度的不同,其具体实现也有所差异。本实施例以及后续实施将提出了3种支持BF16格式矩阵乘法的数据通路实现的示例,并给出对应的硬件执行效率和流水线间隙。
本实施例中,步骤2)包括:
A2.1)选择一条数据通路PATHi
A2.2)激活数据通路PATHi的16位浮点乘法模块fmul16和32位浮点加法模块fadd32,如图2中虚线框所示,图中16表示16位浮点乘法模块fmul1,32表示32位浮点加法模块fadd32;
A2.3)在该数据通路中以乘累加操作为计算粒度,将原有矩阵乘操作切分为基于乘累加操作的4个微操作,将每一个微操作通过数据通路PATHi的16位浮点乘法模块fmul16和32位浮点加法模块fadd32完成乘累加操作,且连续微操作的流水线间隔为3拍。
参见步骤A2.1)~A2.3)可知,本实施例步骤2)以乘累加操作(FMUL-FADD)为计算粒度切分原有矩阵乘操作,每个矩阵乘操作可以分为4个微操作,连续微操作的流水线间隔为3拍(FMUL-FADD数据旁路),以此保障乘累加操作源操作数的有效性。
BF16矩阵乘法的源操作数为三个,分别为:两个元素长度为16位的源操作数(opa和opb)一个元素长度为32的源操作数(acc);目的操作数为一个元素长度为32位的目的操作数(res)。源操作数Opa、Opb按照64位宽,各位分成两个子向量,每个子向量包含四个元素。为方便描述,对应源操作数的子向量标号为源操作数标号后加相对序号,如Opa的第一个子向量的第一个元素为Opa[0][0]。本实施例中的数据执行通路如图2所示,数据通路执行宽度为128位,数据通路数量为两条。考虑到数据通路中模块具有两种属性,即计算功能和支持数据位宽,图2的标识只列出了支持数据的位宽。比如PATH0中标记为16的模块代表支持16位数据宽度的功能模块,包括加法部件和乘法部件。
本实施例中,原有矩阵乘操作的输入第一个源操作数opa和第二个源操作数opb为两组矩阵数据,一组矩阵数据的尺寸为2×4,另一组矩阵数据的尺寸为4×2,输出的目的操作数res为尺寸为2×2的矩阵数据;步骤A2.3)中将每一个微操作通过数据通路PATHi的16位浮点乘法模块fmul16和32位浮点加法模块fadd32完成乘累加操作包括:依次针对n、j、k进行三个层次嵌套的循环遍历,且在第三层循环遍历中根据下式计算目的操作数的索引为n的子向量中索引为j的元素:
res[n][j]+=opa[n][k]*opb[j][k]
上式中,res[n][j]表示元素长度为32位的目的操作数res的索引为n的子向量中索引为j的元素,“+=”表示累加运算,opa[n][k]表示元素长度为16位的第一个源操作数opa的索引为n的子向量中索引为k的元素,opb[j][k]表示元素长度为16位的第二个源操作数opb的索引为j的子向量中索引为k的元素,其中n,j取值范围为[0,2),k取值范围为[0,4),n为操作元素对应的第一个源操作数opa的行号,j为操作元素对应的第二个源操作数opb的行号,k为操作元素对应的矩阵列号。本实施例中,依次针对n、j、k进行三个层次嵌套的循环遍历,且在第三层循环遍历中根据下式计算目的操作数的索引为n的子向量中索引为j的元素的伪代码如下:
Figure BDA0003319247820000061
需要说明的是,三个层次嵌套的顺序不限于上述示例。
以矩阵元素res[0][0]为例,本实施例中的粒度为矩阵元素中的“opa[0][0]*opb[0][0]”级别,将矩阵乘法操作拆分为4个微操作,每个微操作完成乘累加操作。BF16乘法操作生成对应的32位浮点数fp32,考虑到BF16尾数乘法后的有效位数仍小于32位浮点数fp32的尾数,所以BF16乘法的结果可以直接给32位浮点数fp32的正常数据通道(非融合指令通道)。
本实施例对应数据通道的流水线如表1所示。
表1:实施例一对应数据通道的流水线。
I1 I2 I3 M1 M2 M3 A1 A2 A3 W1
I1 I2 I3 M1 M2 M3 A1 A2 A3 W1
上表中,I1~I3表示指令发射阶段,M1~M3表示浮点乘法部件执行阶段,A1~A3表示浮点加法部件执行阶段,W1表示数据回写阶段。由于微操作中连续累加操作的数据依赖,该设计所形成的微操作流水线存在气泡,连续微操作间至少间隔两拍。
执行通路的硬件资源天然满足本实施例方法实现的要求,在执行矩阵乘操作过程中,每64位数据宽度包含一个64位宽的执行部件,2个32位宽的执行部件和4个16位宽的执行部件。硬件资源按照有效计算数据宽度的计算效率为(32+16)*V/32/V/3=50%,对应结构的矩阵乘计算吞吐率(平均每拍有效计算数据占理想计算数据的比例)为C*V/4/3/(C*V)=1/12。
此外,本实施例还提供一种可配置的BF16格式矩阵乘法数据通路实现部件,包括控制单元、多个数据通路以及用于配置所选数据通路及其数据宽度V的配置寄存器,所述控制单元分别与所述多个数据通路以及配置寄存器相连,每一个数据通路中包含16位浮点乘法模块fmul16、32位浮点加法模块fadd32和64位浮点加法模块fadd64,且64位浮点加法模块fadd64的数量为32位浮点加法模块fadd32的数量的两倍,32位浮点加法模块fadd32的数量为16位浮点乘法模块fmul16的数量的两倍,所述控制单元为被编程或配置以执行前述可配置的BF16格式矩阵乘法数据通路实现方法的步骤。
此外,本实施例还提供一种计算机装置,包括相互连接的微处理器和存储器,该微处理器被编程或配置以执行前述可配置的BF16格式矩阵乘法数据通路实现方法的步骤。
此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,该计算机程序为被编程或配置以执行前述可配置的BF16格式矩阵乘法数据通路实现方法的计算机程序。
实施例二:
本实施例与实施例一基本相同,其主要区别点为:选择处理器中计算部件所支持的计算粒度不同。本实施例中以点乘操作为计算粒度切分原有矩阵乘操作,每个矩阵乘操作可以分为2个微操作,连续微操作的流水线间隔为3拍(数据依赖通过浮点加法部件到浮点加法部件的数据旁路完成),以此保障乘累加操作源操作数的有效性并消除物理资源竞争风险。本实施例中,步骤2)包括:
B2.1)选择一条数据通路PATHi
B2.2)激活数据通路PATHi的16位浮点乘法模块fmul16、32位浮点加法模块fadd32和64位浮点加法模块fadd64,其中64位浮点加法模块fadd64支持两路并行32位浮点加法操作,如图3中虚线框所示,图中16表示16位浮点乘法模块fmul1,32表示32位浮点加法模块fadd32,64表示64位浮点加法模块fadd64;
B2.3)在该数据通路中以乘累加操作为计算粒度,将原有矩阵乘操作切分为基于点乘操作的2个微操作,将每一个微操作通过数据通路PATHi的16位浮点乘法模块fmul16、32位浮点加法模块fadd32和64位浮点加法模块fadd64完成点乘操作,且连续微操作的流水线间隔为3拍。
本实施例中,原有矩阵乘操作的输入第一个源操作数opa和第二个源操作数opb为两组矩阵数据,一组矩阵数据的尺寸为2×4,另一组矩阵数据的尺寸为4×2,输出的目的操作数res为尺寸为2×2的矩阵数据;步骤B2.3)中将每一个微操作通过数据通路PATHi的16位浮点乘法模块fmul16、32位浮点加法模块fadd32和64位浮点加法模块fadd64完成点乘操作包括:依次针对n、j、k进行三个层次嵌套的循环遍历,且在第三层循环遍历中根据下式计算目的操作数的索引为n的子向量中索引为j的元素:
res[n][j]+=opa[n][2k]*opb[j][2k]+opa[n][2k+1]*opb[j][2k+1]
上式中,res[n][j]表示元素长度为32位的目的操作数res的索引为n的子向量中索引为j的元素,“+=”表示累加运算,opa[n][2k]表示元素长度为16位的第一个源操作数opa的索引为n的子向量中索引为2k的元素,opa[n][2k+1]表示元素长度为16位的第一个源操作数opa的索引为n的子向量中索引为2k+1的元素,opb[j][2k]表示元素长度为16位的第二个源操作数opb的索引为j的子向量中索引为2k的元素,opb[j][2k+1]表示元素长度为16位的第二个源操作数opb的索引为j的子向量中索引为2k+1的元素,其中n,j,k取值范围为[0,2),n为操作元素对应的第一个源操作数opa的行号,j为操作元素对应的第二个源操作数opb的行号,k为操作元素对应的矩阵列号。本实施例中,依次针对n、j、k进行三个层次嵌套的循环遍历,且在第三层循环遍历中根据下式计算目的操作数的索引为n的子向量中索引为j的元素采用伪代码可表示为:
Figure BDA0003319247820000081
需要说明的是,三个层次嵌套的顺序不限于上述示例。
以矩阵元素res[0][0]为例,本实施例中的粒度为矩阵元素中的“opa[0][0]*opb[0][0]+opa[0][1]*opb[0][1]”级别,将矩阵乘法操作拆分为2个微操作,每个微操作完成点乘操作。本实施例对应数据通道的流水线如表2所示。
表2:实施例二对应数据通道的流水线。
I1 I2 I3 M1 M2 M3 A1 A2 A3 A1 A2 A3 W1
I1 I2 I3 M1 M2 M3 A1 A2 A3 A1 A2 A3 W1
上表中,I1~I3表示指令发射阶段,M1~M3表示浮点乘法部件执行阶段,A1~A3表示浮点加法部件执行阶段,W1表示数据回写阶段。由于微操作中连续累加操作的数据依赖,该设计所形成的微操作流水线存在气泡,连续微操作间至少间隔两拍。
点乘操作过程需要三步操作,分别为浮点乘法FMUL,浮点加法FADD和浮点加法FADD。按照给出的数据执行通路配置是无法支持该操作的,数据通路缺少32位浮点加法模块fadd32。本实施例中进一步提出将FADD64模块设计为兼容两路32位浮点的64位浮点加法模块fadd64,以此支持点乘操作。该种方法的微操作流水线间隔为3拍,硬件资源按照有效计算数据宽度的计算效率为(32+16+16+32)*V/32/V/3=100%,对应结构的矩阵乘计算吞吐率为C*V/2/3/(C*V)=1/6。
此外,本实施例还提供一种可配置的BF16格式矩阵乘法数据通路实现部件,包括控制单元、多个数据通路以及用于配置所选数据通路及其数据宽度V的配置寄存器,所述控制单元分别与所述多个数据通路以及配置寄存器相连,每一个数据通路中包含16位浮点乘法模块fmul16、32位浮点加法模块fadd32和64位浮点加法模块fadd64,且64位浮点加法模块fadd64的数量为32位浮点加法模块fadd32的数量的两倍,32位浮点加法模块fadd32的数量为16位浮点乘法模块fmul16的数量的两倍,所述控制单元为被编程或配置以执行前述可配置的BF16格式矩阵乘法数据通路实现方法的步骤。
此外,本实施例还提供一种计算机装置,包括相互连接的微处理器和存储器,该微处理器被编程或配置以执行前述可配置的BF16格式矩阵乘法数据通路实现方法的步骤。
此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,该计算机程序为被编程或配置以执行前述可配置的BF16格式矩阵乘法数据通路实现方法的计算机程序。
实施例三:
本实施例与实施例一基本相同,其主要区别点为:选择处理器中计算部件所支持的计算粒度不同。本实施例中,每个矩阵乘操作可以分为唯一的微操作,连续微操作的流水线间隔为1拍,不存在数据和资源的竞争和冒险。对于V大于256位的数据通道,其可支持128位宽的矩阵乘法操作。本实施例中,步骤2)包括:
C2.1)选择两条数据通路,例如PATHi和PATHj,优选为相邻的两条数据通路,以减少数据传输的距离;
C2.2)激活两个数据通路的16位浮点乘法模块fmul16、32位浮点加法模块fadd32和64位浮点加法模块fadd64,其中64位浮点加法模块fadd64支持两路并行32位浮点加法操作,如图4中虚线框所示,图中16表示16位浮点乘法模块fmul1,32表示32位浮点加法模块fadd32,64表示64位浮点加法模块fadd64;
C2.3)在该数据通路中以矩阵乘操作为计算粒度,将原有矩阵乘操作转换为基于矩阵乘的1个微操作,且连续微操作的流水线间隔为1拍,输入包括8个源寄存器和目的寄存器;针对每一条数据通路,将8个输入数据两两输入到该数据通路的16位浮点乘法模块fmul16、乘法结果先在32位浮点加法模块fadd32中与目的寄存器完成乘法运算得到乘法结果,再将乘法结果送入本数据通路或另一条数据通路的64位浮点加法模块fadd64,在该64位浮点加法模块fadd64中与另一条数据通路的乘法结果完成累加以得到最终结果。
本实施例中,原有矩阵乘操作的输入第一个源操作数opa和第二个源操作数opb为两组矩阵数据,一组矩阵数据的尺寸为2×4,另一组矩阵数据的尺寸为4×2,输出的目的操作数res为尺寸为2×2的矩阵数据;步骤C2.3)中将8个输入数据两两输入到该数据通路的16位浮点乘法模块fmul16、乘法结果先在32位浮点加法模块fadd32中与目的寄存器完成乘法运算得到乘法结果,再将乘法结果送入本数据通路或另一条数据通路的64位浮点加法模块fadd64,在该64位浮点加法模块fadd64中与另一条数据通路的乘法结果完成累加以得到最终结果包括:依次针对n、j进行两个层次嵌套的循环遍历,且在第二层循环遍历根据下式计算目的操作数的索引为n的子向量中索引为j的元素:
res[n][j]+=opa[n][0]*opb[j][0]+opa[n][1]*opb[j][1]+opa[n][2]*opb[j][2]+opa[n][3]*opb[j][3]
上式中,res[n][j]表示元素长度为32位的目的操作数res的索引为n的子向量中索引为j的元素,“+=”表示累加运算,opa[n][0]表示元素长度为16位的第一个源操作数opa的索引为n的子向量中索引为0的元素,opb[j][0]表示元素长度为16位的第二个源操作数opb的索引为j的子向量中索引为0的元素,opa[n][1]表示元素长度为16位的第一个源操作数opa的索引为n的子向量中索引为1的元素,opb[j][1]表示元素长度为16位的第二个源操作数opb的索引为j的子向量中索引为1的元素,opa[n][2]表示元素长度为16位的第一个源操作数opa的索引为n的子向量中索引为2的元素,opb[j][2]表示元素长度为16位的第二个源操作数opb的索引为j的子向量中索引为2的元素,opa[n][3]表示元素长度为16位的第一个源操作数opa的索引为n的子向量中索引为3的元素,opb[j][3]表示元素长度为16位的第二个源操作数opb的索引为j的子向量中索引为3的元素。本实施例中,依次针对n、j进行两个层次嵌套的循环遍历,且在第二层循环遍历根据下式计算目的操作数的索引为n的子向量中索引为j的元素采用伪代码可表示为:
Figure BDA0003319247820000111
需要说明的是,两个层次嵌套的顺序不限于上述示例。
以矩阵元素res[0][0]为例,本实施例中的粒度为矩阵元素中的“opa[0][0]*opb[0][0]+opa[0][1]*opb[0][1]+opa[0][2]*opb[0][2]+opa[0][3]*opb[0][3]”级别,将矩阵乘法操作转换为1个微操作。本实施例对应数据通道的流水线如表3所示。
表3:实施例三对应数据通道的流水线。
I1 I2 I3 M1 M2 M3 A1 A2 A3 A1 A2 A3 A1 A2 A3 W1
上表中,I1~I3表示指令发射阶段,M1~M3表示浮点乘法部件执行阶段,A1~A3表示浮点加法部件执行阶段,W1表示数据回写阶段。参见表3,本实施例中由于每个矩阵乘操作可以分为唯一的微操作,连续微操作的流水线间隔为1拍,不存在数据和资源的竞争和冒险。本实施例中,硬件资源按照有效计算数据宽度的计算效率为(32+16+16+32)*V/32/V/3=100%,对应结构的矩阵乘计算吞吐率为C*V/1/1/(C*V)=1。此种设计可能会激活多个数据通道,所以会引入额外的发射队列修改。
此外,本实施例还提供一种可配置的BF16格式矩阵乘法数据通路实现部件,包括控制单元、多个数据通路以及用于配置所选数据通路及其数据宽度V的配置寄存器,所述控制单元分别与所述多个数据通路以及配置寄存器相连,每一个数据通路中包含16位浮点乘法模块fmul16、32位浮点加法模块fadd32和64位浮点加法模块fadd64,且64位浮点加法模块fadd64的数量为32位浮点加法模块fadd32的数量的两倍,32位浮点加法模块fadd32的数量为16位浮点乘法模块fmul16的数量的两倍,所述控制单元为被编程或配置以执行前述可配置的BF16格式矩阵乘法数据通路实现方法的步骤。
此外,本实施例还提供一种计算机装置,包括相互连接的微处理器和存储器,该微处理器被编程或配置以执行前述可配置的BF16格式矩阵乘法数据通路实现方法的步骤。
此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,该计算机程序为被编程或配置以执行前述可配置的BF16格式矩阵乘法数据通路实现方法的计算机程序。
综上所述,本发明可配置的BF16格式矩阵乘法数据通路实现方法包括:进行数据通路配置,包括数据通路数C,单个数据通路支持的数据宽度V的配置;选择一条数据通路,在该数据通路中选择处理器中计算部件所支持的计算粒度,将原有矩阵乘操作切分一个或多个微操作,并按照设定的连续微操作的流水线间隔执行。本发明基于现有典型数据执行通路提供一种灵活的BF16格式矩阵乘法数据通路实现方式,能够提升BF16设计的硬件设计效率,并提供更高的系统性能,支持多种数据的执行粒度。对于以上实施例一~实施例三的三种设计,后两种需要在数据流水线中增加运算资源以满足计算的要求。因为矩阵乘法操作流水线对加法资源的需求是乘法资源的一倍。所以所提发明默认在后两种设计中映入了64位浮点加法模块fadd64,对应的64位浮点加法模块fadd64被修改为支持并行32bit的64位浮点加法模块fadd64,因为BF16运算不考虑异常,并指定固定的舍入模式,所以我们认为该修改的硬件开销可以接受。实施例一的优点在于不需要对原有执行通路进行较大修改,完全复用原有通路的乘累加数据通路即可完成对BF16矩阵乘法的设计。实施例二和实施例三的优点在于数据吞吐率较高,但需要定制化设计。微处理器可根据前端数据的发射能力采用合适的计算部件设计,以此达到均衡设计。本发明可配置的BF16格式矩阵乘法数据通路实现方法可以服务于不同处理器前端能力的微处理器设计,降低型谱设计移植的时间成本。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种可配置的BF16格式矩阵乘法数据通路实现方法,其特征在于,包括:
1)进行数据通路配置,包括数据通路数C,单个数据通路支持的数据宽度V的配置;
2)选择一条数据通路,在该数据通路中选择处理器中计算部件所支持的计算粒度,将原有矩阵乘操作切分成一个或多个微操作,并按照设定的连续微操作的流水线间隔执行。
2.根据权利要求1所述的可配置的BF16格式矩阵乘法数据通路实现方法,其特征在于,步骤2)包括:
A2.1)选择一条数据通路PATHi
A2.2)激活数据通路PATHi的16位浮点乘法模块fmul16和32位浮点加法模块fadd32;
A2.3)在该数据通路中以乘累加操作为计算粒度,将原有矩阵乘操作切分为基于乘累加操作的4个微操作,将每一个微操作通过数据通路PATHi的16位浮点乘法模块fmul16和32位浮点加法模块fadd32完成乘累加操作,且连续微操作的流水线间隔为3拍。
3.根据权利要求2所述的可配置的BF16格式矩阵乘法数据通路实现方法,其特征在于,原有矩阵乘操作的输入第一个源操作数opa和第二个源操作数opb为两组矩阵数据,一组矩阵数据的尺寸为2×4,另一组矩阵数据的尺寸为4×2,输出的目的操作数res为尺寸为2×2的矩阵数据;步骤A2.3)中将每一个微操作通过数据通路PATHi的16位浮点乘法模块fmul16和32位浮点加法模块fadd32完成乘累加操作包括:依次针对n、j、k进行三个层次嵌套的循环遍历,且在第三层循环遍历中根据下式计算目的操作数的索引为n的子向量中索引为j的元素:
res[n][j]+=opa[n][k]*opb[j][k]
上式中,res[n][j]表示元素长度为32位的目的操作数res的索引为n的子向量中索引为j的元素,“+=”表示累加运算,opa[n][k]表示元素长度为16位的第一个源操作数opa的索引为n的子向量中索引为k的元素,opb[j][k]表示元素长度为16位的第二个源操作数opb的索引为j的子向量中索引为k的元素,其中n,j取值范围为[0,2),k取值范围为[0,4),n为操作元素对应的第一个源操作数opa的行号,j为操作元素对应的第二个源操作数opb的行号,k为操作元素对应的矩阵列号。
4.根据权利要求1所述的可配置的BF16格式矩阵乘法数据通路实现方法,其特征在于,步骤2)包括:
B2.1)选择一条数据通路PATHi
B2.2)激活数据通路PATHi的16位浮点乘法模块fmul16、32位浮点加法模块fadd32和64位浮点加法模块fadd64,其中64位浮点加法模块fadd64支持两路并行32位浮点加法操作;
B2.3)在该数据通路中以乘累加操作为计算粒度,将原有矩阵乘操作切分为基于点乘操作的2个微操作,将每一个微操作通过数据通路PATHi的16位浮点乘法模块fmul16、32位浮点加法模块fadd32和64位浮点加法模块fadd64完成点乘操作,且连续微操作的流水线间隔为3拍。
5.根据权利要求4所述的可配置的BF16格式矩阵乘法数据通路实现方法,其特征在于,原有矩阵乘操作的输入第一个源操作数opa和第二个源操作数opb为两组矩阵数据,一组矩阵数据的尺寸为2×4,另一组矩阵数据的尺寸为4×2,输出的目的操作数res为尺寸为2×2的矩阵数据;步骤B2.3)中将每一个微操作通过数据通路PATHi的16位浮点乘法模块fmul16、32位浮点加法模块fadd32和64位浮点加法模块fadd64完成点乘操作包括:依次针对n、j、k进行三个层次嵌套的循环遍历,且在第三层循环遍历中根据下式计算目的操作数的索引为n的子向量中索引为j的元素:
res[n][j]+=opa[n][2k]*opb[j][2k]+opa[n][2k+1]*opb[j][2k+1]
上式中,res[n][j]表示元素长度为32位的目的操作数res的索引为n的子向量中索引为j的元素,“+=”表示累加运算,opa[n][2k]表示元素长度为16位的第一个源操作数opa的索引为n的子向量中索引为2k的元素,opa[n][2k+1]表示元素长度为16位的第一个源操作数opa的索引为n的子向量中索引为2k+1的元素,opb[j][2k]表示元素长度为16位的第二个源操作数opb的索引为j的子向量中索引为2k的元素,opb[j][2k+1]表示元素长度为16位的第二个源操作数opb的索引为j的子向量中索引为2k+1的元素,其中n,j,k取值范围为[0,2),n为操作元素对应的第一个源操作数opa的行号,j为操作元素对应的第二个源操作数opb的行号,k为操作元素对应的矩阵列号。
6.根据权利要求1所述的可配置的BF16格式矩阵乘法数据通路实现方法,其特征在于,步骤2)包括:
C2.1)选择两条数据通路;
C2.2)激活两个数据通路的16位浮点乘法模块fmul16、32位浮点加法模块fadd32和64位浮点加法模块fadd64,其中64位浮点加法模块fadd64支持两路并行32位浮点加法操作;
C2.3)在该数据通路中以矩阵乘操作为计算粒度,将原有矩阵乘操作转换为基于矩阵乘的1个微操作,且连续微操作的流水线间隔为1拍,输入包括8个源寄存器和目的寄存器;针对每一条数据通路,将8个输入数据两两输入到该数据通路的16位浮点乘法模块fmul16、乘法结果先在32位浮点加法模块fadd32中与目的寄存器完成乘法运算得到乘法结果,再将乘法结果送入本数据通路或另一条数据通路的64位浮点加法模块fadd64,在该64位浮点加法模块fadd64中与另一条数据通路的乘法结果完成累加以得到最终结果。
7.根据权利要求6所述的可配置的BF16格式矩阵乘法数据通路实现方法,其特征在于,原有矩阵乘操作的输入第一个源操作数opa和第二个源操作数opb为两组矩阵数据,一组矩阵数据的尺寸为2×4,另一组矩阵数据的尺寸为4×2,输出的目的操作数res为尺寸为2×2的矩阵数据;步骤C2.3)中将8个输入数据两两输入到该数据通路的16位浮点乘法模块fmul16、乘法结果先在32位浮点加法模块fadd32中与目的寄存器完成乘法运算得到乘法结果,再将乘法结果送入本数据通路或另一条数据通路的64位浮点加法模块fadd64,在该64位浮点加法模块fadd64中与另一条数据通路的乘法结果完成累加以得到最终结果包括:依次针对n、j进行两个层次嵌套的循环遍历,且在第二层循环遍历根据下式计算目的操作数的索引为n的子向量中索引为j的元素:
res[n][j]+=opa[n][0]*opb[j][0]+opa[n][1]*opb[j][1]+opa[n][2]*opb[j][2]+opa[n][3]*opb[j][3]
上式中,res[n][j]表示元素长度为32位的目的操作数res的索引为n的子向量中索引为j的元素,“+=”表示累加运算,opa[n][0]表示元素长度为16位的第一个源操作数opa的索引为n的子向量中索引为0的元素,opb[j][0]表示元素长度为16位的第二个源操作数opb的索引为j的子向量中索引为0的元素,opa[n][1]表示元素长度为16位的第一个源操作数opa的索引为n的子向量中索引为1的元素,opb[j][1]表示元素长度为16位的第二个源操作数opb的索引为j的子向量中索引为1的元素,opa[n][2]表示元素长度为16位的第一个源操作数opa的索引为n的子向量中索引为2的元素,opb[j][2]表示元素长度为16位的第二个源操作数opb的索引为j的子向量中索引为2的元素,opa[n][3]表示元素长度为16位的第一个源操作数opa的索引为n的子向量中索引为3的元素,opb[j][3]表示元素长度为16位的第二个源操作数opb的索引为j的子向量中索引为3的元素。
8.一种可配置的BF16格式矩阵乘法数据通路实现部件,其特征在于,包括控制单元、多个数据通路以及用于配置所选数据通路及其数据宽度V的配置寄存器,所述控制单元分别与所述多个数据通路以及配置寄存器相连,每一个数据通路中包含16位浮点乘法模块fmul16、32位浮点加法模块fadd32和64位浮点加法模块fadd64,且64位浮点加法模块fadd64的数量为32位浮点加法模块fadd32的数量的两倍,32位浮点加法模块fadd32的数量为16位浮点乘法模块fmul16的数量的两倍,所述控制单元为被编程或配置以执行权利要求1~7中任意一项所述可配置的BF16格式矩阵乘法数据通路实现方法的步骤。
9.一种计算机装置,包括相互连接的微处理器和存储器,其特征在于,该微处理器被编程或配置以执行权利要求1~7中任意一项所述可配置的BF16格式矩阵乘法数据通路实现方法的步骤。
10.一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其特征在于,该计算机程序为被编程或配置以执行权利要求1~7中任意一项所述可配置的BF16格式矩阵乘法数据通路实现方法的计算机程序。
CN202111241122.6A 2021-10-25 2021-10-25 可配置的bf16格式矩阵乘法数据通路实现方法、部件及装置 Pending CN113961878A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111241122.6A CN113961878A (zh) 2021-10-25 2021-10-25 可配置的bf16格式矩阵乘法数据通路实现方法、部件及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111241122.6A CN113961878A (zh) 2021-10-25 2021-10-25 可配置的bf16格式矩阵乘法数据通路实现方法、部件及装置

Publications (1)

Publication Number Publication Date
CN113961878A true CN113961878A (zh) 2022-01-21

Family

ID=79466774

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111241122.6A Pending CN113961878A (zh) 2021-10-25 2021-10-25 可配置的bf16格式矩阵乘法数据通路实现方法、部件及装置

Country Status (1)

Country Link
CN (1) CN113961878A (zh)

Similar Documents

Publication Publication Date Title
US10445451B2 (en) Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US10469397B2 (en) Processors and methods with configurable network-based dataflow operator circuits
US10380063B2 (en) Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator
US11086816B2 (en) Processors, methods, and systems for debugging a configurable spatial accelerator
US10467183B2 (en) Processors and methods for pipelined runtime services in a spatial array
US10416999B2 (en) Processors, methods, and systems with a configurable spatial accelerator
US10558575B2 (en) Processors, methods, and systems with a configurable spatial accelerator
US8595280B2 (en) Apparatus and method for performing multiply-accumulate operations
US10817291B2 (en) Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US9075651B2 (en) Methods and apparatus for efficient complex long multiplication and covariance matrix implementation
US9600281B2 (en) Matrix multiplication operations using pair-wise load and splat operations
US20070271325A1 (en) Matrix multiply with reduced bandwidth requirements
US20070011441A1 (en) Method and system for data-driven runtime alignment operation
US20040098556A1 (en) Superior misaligned memory load and copy using merge hardware
US20190347099A1 (en) Arithmetic operation with shift
CN107533460B (zh) 紧缩有限冲激响应(fir)滤波处理器、方法、系统和指令
US9965275B2 (en) Element size increasing instruction
WO2015114305A1 (en) A data processing apparatus and method for executing a vector scan instruction
JP2004342102A (ja) スーパースカラ・プロセッサにおける複合命令のマルチパイプ・ディスパッチおよび実行
US7558816B2 (en) Methods and apparatus for performing pixel average operations
Huang et al. SIF: Overcoming the limitations of SIMD devices via implicit permutation
EP1323031B1 (en) Single instruction multiple data processing
KR102586259B1 (ko) 레지스터 기반의 복소수 처리
Rupley et al. The floating-point unit of the jaguar x86 core
US11106465B2 (en) Vector add-with-carry instruction

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