具有混合精度运算的处理单元制造技术

技术编号:30426139 阅读:15 留言:0更新日期:2021-10-24 17:00
一种图形处理单元(GPU)[100]实现具有相关联的运算码的运算[105]以执行混合精度数学运算。所述GPU包括具有不同执行路径[106、107]的算术逻辑单元(ALU)[104],其中每个执行路径执行不同的混合精度运算。通过响应于指定描述运算的运算码而实现ALU处的混合精度运算,GPU在减少执行开销的同时高效地提高了指定的数学运算的精度。学运算的精度。学运算的精度。

【技术实现步骤摘要】
【国外来华专利技术】具有混合精度运算的处理单元

技术介绍

[0001]处理器采用一个或多个处理单元,所述一个或多个处理单元被专门设计和配置成代表处理器执行指定的运算。例如,一些处理器采用通常实现多个处理元件(也称为处理器内核或计算单元)的图形处理单元(GPU)和其他并行处理单元,所述处理元件同时在多个数据集上执行单个程序的多个实例,以执行图形、矢量和其他计算处理运算。处理器的中央处理单元(CPU)向GPU提供命令,并且GPU的命令处理器(CP)将命令解码为一个或多个运算。GPU的执行单元,诸如一个或多个算术逻辑单元(ALU),执行运算以执行图形和矢量处理运算。
附图说明
[0002]通过参考附图,可更好地理解本公开,并且本公开的众多特征和优点对本领域技术人员来说变得显而易见。在不同附图中使用的相同附图标记指示相似或相同项。
[0003]图1是根据一些实施方案的采用用于混合精度运算的运算码的处理单元的一部分的框图。
[0004]图2是根据一些实施方案的图1的处理单元的混合精度浮点执行路径的框图。
[0005]图3是根据一些实施方案的图1的处理单元的另一混合精度浮点执行路径的框图。
[0006]图4是根据一些实施方案的图1的处理单元的混合精度整数执行路径的框图。
具体实施方式
[0007]图1至图4示出了技术,其中并行处理单元,在本示例中为图形处理单元(GPU),实现具有相关联的运算码的运算以执行混合精度数学运算。GPU包括具有不同执行路径的算术逻辑单元(ALU),其中每个执行路径执行不同的混合精度运算。通过响应于指定描述运算的运算码而实现ALU处的混合精度运算,GPU在减少执行开销的同时高效地提高了指定的数学运算的精度。
[0008]举例说明,在执行指令的过程中,GPU执行由与指令相关联的运算码指定的数学运算。运算码至少部分地通过指定用于数学运算的操作数的大小来指示数学运算的精度。例如,一些运算码指定将以16位操作数执行的16位浮点运算,而其他运算码指定将以32位操作数执行的32位运算。照惯例,该运算使用的所有操作数都具有相同的大小,并且因此具有相同的精度。然而,对于一些运算,诸如采用具有相同大小的操作数的一些矢量处理数学运算,会导致运算的总体精度损失。例如,其中所有操作数限制为16位的点积运算的结果对于一些应用具有相对较低的精度。使用本文所描述的技术,GPU响应于对应的运算码而以混合精度操作数执行数学运算,由此高效地支持增加的数学精度。
[0009]图1示出了根据一些实施方案的支持混合精度运算的GPU 100。出于描述的目的,假设GPU 100是执行指令集(例如,计算机程序)以代表电子装置实施任务的处理器的一部分。因此,在不同的实施方案中,GPU 100是诸如台式计算机、笔记本计算机、服务器、平板电脑、智能电话、游戏控制台等电子装置的一部分。此外,假设包括GPU100的处理器包括执行
指令集的中央处理单元(CPU)。
[0010]GPU 100被设计和制造成代表CPU实施指定的运算。特别地,GPU 100代表CPU执行图形和矢量处理运算。例如,在一些实施方案中,在执行指令的过程中,CPU生成与图形和矢量处理运算相关联的命令。CPU向GPU 100提供命令,该GPU采用命令处理器(未示出)将命令解码成指令集以在GPU 100处执行。
[0011]为了有助于指令的执行,GPU 100包括解码级102和ALU 104。在一些实施方案中,解码级102是包括支持指令执行的额外级的指令流水线(未示出)的一部分,包括从指令缓冲器提取指令的提取级、附加解码级、除ALU 104之外的执行单元、以及退出执行的指令的退出级。解码级102包括用于将从提取级接收到的指令(例如,指令101)解码为一个或多个运算(例如,运算105)并且根据运算的类型将这些运算分派到执行单元中的一个的电路。在一些实施方案中,由对应的运算码识别每个运算,并且解码级基于运算码而识别执行单元,并向执行单元提供指示运算码的信息。执行单元采用运算码或基于运算码的信息来确定要执行的运算的类型,并执行所指示的运算。
[0012]例如,一些运算和相关联的运算码指示算术运算。响应于识别出接收到的指令指示算术运算,解码级102确定用于该运算的运算码并将该运算码连同诸如要用于算术运算的操作数等其他信息一起提供给ALU 104。ALU 104使用存储在寄存器文件110处的指示的操作数来执行由运算码指示的运算。在一些实施方案中,由ALU 104提供的运算指示操作数的精度和要执行的运算。例如,在一些实施方案中,解码级102使用16位操作数为16位乘法运算提供一个运算(和对应的运算码),并使用32位操作数为32位乘法运算提供另一运算(和对应的运算码)。
[0013]另外,解码级102为混合精度数学运算生成具有对应运算码的运算,其中混合精度运算采用不同大小的操作数。例如,在一些实施方案中,解码级基于对应的指令而生成乘法

累加(MACC)运算,该运算将一种大小(例如,16位)的操作数相乘并将结果与不同大小(例如,32位)的操作数相加。在一些实施方案中,这些运算包括:1)混合精度点积运算(定名为DOT4_F32_F16),将两组四个16位浮点操作数相乘,并将乘法结果彼此相加并与32位浮点操作数相加;2)混合精度点积运算(定名为DOT2_F32_F16),将两组两个16位浮点操作数相乘,并将乘法结果彼此相加并与32位浮点操作数相加;以及3)混合精度点积运算(定名为DOT_I32_I16),将两组四个16位整数操作数相乘,并将乘法结果彼此相加并与32位整数操作数相加。
[0014]ALU 104包括不同的执行路径来执行每个混合精度运算。在一些实施方案中,不同的执行路径共享电子部件或模块,诸如寄存器、加法器、乘法器等。在其他实施方案中,一些或所有不同的执行路径是独立的并且不共享算术电路或模块。在绘示的实施方案中,ALU 104包括执行DOT4_F32_F16运算的路径106、执行DOT2_F32_F16运算的路径107和执行DOT4_I32_I16运算的路径108。响应于接收到用于混合精度运算的运算码或其他指示符,ALU 104使用对应的执行路径来执行运算,并将结果存储在寄存器文件110的寄存器处。在一些实施方案中,每个混合精度运算由单个运算码指定。也就是说,ALU104不需要多个运算码或运算来执行混合精度运算,从而在支持提高精度的同时减少了处理开销。
[0015]图2图示了根据一些实施方案的DOT4_F32_F16执行路径106。如上所述,DOT4_F32_F16运算将一组四个16位操作数(出于描述的目的定名为A0、A1、A2和A3)与另一组四个16位
操作数(出于描述目的定名为B0、B1、B2和B3)中的对应操作数相乘,并将结果与第三个32位操作数(定名为C)相加。因此,DOT4_F32_F16运算由以下公式表示:
[0016]D.f32=A.f16[0]*B.f16[0]+A.f16[1]*B.f16[本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种方法,其包括:在处理单元[100]处解码第一指令[101]以识别第一多精度运算[105];以及通过使用不同精度的操作数执行第一数学运算来在算术逻辑单元(ALU)[104]处执行所述第一多精度运算。2.如权利要求1所述的方法,其中所述第一数学运算包括浮点乘法

累加运算。3.如权利要求2所述的方法,其中所述浮点乘法

累加运算将两组N个第一精度的操作数相乘,并将与所述第一精度不同的第二精度的操作数相加。4.如权利要求3所述的方法,其中N至少为二。5.如权利要求4所述的方法,其中N至少为四。6.如权利要求1所述的方法,其中所述第一数学运算包括整数乘法

累加运算。7.如权利要求1所述的方法,其还包括:在所述处理单元处解码第二指令以识别与所述第一多精度运算不同的第二多精度运算;以及通过使用不同精度的操作数执行第二数学运算来在所述ALU处执行所述第二多精度运算,所述第二数学运算与所述第一数学运算不同。8.如权利要求7所述的方法,其中:执行所述第一多精度运算包括在所述ALU的第一执行路径[106]处执行所述第一多精度运算;并且执行所述第二多精度运算包括在所述ALU的第二执行路径[107]处执行所述第二多精度运算,所述第二执行路径与所述第一执行路径不同。9.一种处理单元[100],其包括:解码级[102],用于解码第一指令[101]以识别第一多精度运算[105];以及算术逻辑单元(ALU)[104],用于通过使用不同精度的操作数执行第一数学运算来执行所述第一多精度运算。10.如权利要求9所述的处理单元,其中所述第一数学运算包括浮点乘法

累加运算。11.如权利要求10所述的处理单元,其中所述浮点乘法

累加运算将两组N个第一精度的操作数相乘,并将与所述第一精度...

【专利技术属性】
技术研发人员:何斌迈克尔
申请(专利权)人:超威半导体公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1