CN109634558A - 可编程的混合精度运算单元 - Google Patents
可编程的混合精度运算单元 Download PDFInfo
- Publication number
- CN109634558A CN109634558A CN201811514918.2A CN201811514918A CN109634558A CN 109634558 A CN109634558 A CN 109634558A CN 201811514918 A CN201811514918 A CN 201811514918A CN 109634558 A CN109634558 A CN 109634558A
- Authority
- CN
- China
- Prior art keywords
- precision
- extended
- adder
- numerical value
- product
- 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.)
- Granted
Links
- 239000013598 vector Substances 0.000 description 12
- 238000000034 method Methods 0.000 description 10
- 238000004364 calculation method Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 4
- 238000013528 artificial neural network Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
Classifications
-
- 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/53—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
-
- 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/50—Adding; Subtracting
- G06F7/505—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3812—Devices capable of handling different types of numbers
- G06F2207/3824—Accepting both fixed-point and floating-point numbers
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
本申请提供了一种可编程的混合精度运算单元,能够支持多种精度的浮点或定点乘和/或加运算,既可以实现多路并发的低精度运算,又可以整体实现一个高精度的运算,因此,具有较高能效比。
Description
技术领域
本申请涉及电子信息领域,尤其涉及一种可编程的混合精度运算单元。
背景技术
深度神经网络在人工智能领域被广泛应用,其应用场景可以大致分为训练(Training)和推断(Inference)两种类型。其中推断算法对运算精度要求相对较低,多使用8位、16位定点精度;训练算法则大多要求达到16位或32位浮点精度。
而现有的运算单元,或者仅支持8位或16位定点运算,仅适用于推断;或者,支持浮点运算,适用于训练和推断,但硬件成本高且耗能高,应用于推断场景下的能效比偏低。
发明内容
本申请提供了一种可编程的混合精度运算单元,目的在于解决既兼容定点和浮点运算、又具有较高能效比的问题。
为了实现上述目的,本申请提供了以下技术方案:
一种可编程的混合精度运算单元,包括:
四个扩展的半精度乘法器、以及四个扩展的单精度加法器;
任意一个所述扩展的半精度乘法器用于将输入数值扩展到X位,并计算第一数值和第二数值之积,其中,第一数值为一个输入数值扩展后的数值中的高位数值或低位数值,第二数值为另一个输入数值扩展后的数值中的高位数值或低位数值,X为预设数值;
任意一个所述扩展的单精度加法器用于将输入数值扩展到Y位,并计算扩展后的数值之和,Y为预设数值;
其中,所述四个扩展的半精度乘法器和所述四个扩展的单精度加法器以第一方式或第二方式连接;
所述第一方式为:所述四个扩展的半精度乘法器与所述四个扩展的单精度加法器一一对应级联,构成四个并联的半精度乘加器;
所述第二方式为:第一扩展的单精度加法器与第一扩展的半精度乘法器和第二扩展的半精度乘法器分别级联;
第二扩展的单精度加法器与第三扩展的半精度乘法器和第四扩展的半精度乘法器分别级联;
第三扩展的单精度加法器与第一扩展的单精度加法器和第二扩展的单精度加法器分别级联。
可选的,所述扩展的半精度乘法器中包括:
并联的一个单精度指数乘法器和一个扩展的半精度尾数乘法器;
所述扩展的半精度尾数乘法器用于将输入数值扩展到X位,并计算所述第一数值和所述第二数值之积。
可选的,所述扩展的单精度加法器中包括:
并联的一个单精度指数加法器和一个扩展的单精度尾数加法器;
所述扩展的单精度尾数加法器用于将输入数值扩展到Y位,并计算扩展后的数值之和。
一种可编程的混合精度运算单元,包括:
四个扩展的单精度乘法器、以及四个扩展的双精度加法器;
所述扩展的单精度乘法器为前述任一项所述的可编程的混合精度运算单元;
所述扩展的双精度加法器用于将输入数值扩展到M位,并计算扩展后的数值之和,M为预设数值;
其中,所述四个扩展的单精度乘法器和四个扩展的双精度加法器以第一方式或第二方式连接;
所述第一方式为:所述四个扩展的单精度乘法器与所述四个扩展的双精度加法器一一对应级联,构成四个并联的单精度乘加器;
所述第二方式为:第一扩展的双精度加法器与第一扩展的单精度乘法器和第二扩展的单精度乘法器分别级联;
第二扩展的双精度加法器与第三扩展的单精度乘法器和第四扩展的单精度乘法器分别级联;
第三扩展的双精度加法器与第一扩展的双精度加法器和第二扩展的双精度加法器分别级联。
可选的,所述扩展的双精度加法器中包括:
并联的一个双精度指数加法器和一个扩展的双精度尾数加法器;
所述扩展的双精度尾数加法器用于将输入数值扩展到M位,并计算扩展后的数值之和。
一种可编程的混合精度运算单元,包括:
并联的、前述任一项的可编程的混合精度运算单元。
一种可编程的混合精度运算单元,包括:
四个扩展的半精度乘法器、以及三个扩展的单精度加法器;
第一扩展的半精度乘法器用于将输入数值扩展到X位后,计算MSBa*MSBb,得到第一乘积;
第二扩展的半精度乘法器用于将所述输入数值扩展到X位后,计算MSBa*LSBb,得到第二乘积;
第三扩展的半精度乘法器用于将所述输入数值扩展到X位后,计算LSBa*MSBb,得到第三乘积;
第四扩展的半精度乘法器用于将所述输入数值扩展到X位后,计算LSBa*LSBb,得到第四乘积;其中,所述输入数值为第一数值和第二数值,MSBa为扩展后的第一数值的高位,MSBb为扩展后的第二数值的高位,LSBa为所述扩展后的第一数值的低位,LSBb为所述扩展后的第二数值的低位;
第一扩展的单精度加法器用于将所述第一乘积和所述第二乘积扩展到Y位后,计算扩展后的第一乘积和扩展后的第二乘积之和,得到第一相加结果;
第二扩展的单精度加法器用于将所述第三乘积和所述第四乘积扩展到Y位后,计算扩展后的第三乘积和扩展后的第四乘积之和,得到第二相加结果;
第三扩展的单精度加法器用于将所述第一相加结果和所述第二相加结果扩展到Y位后,计算扩展后的第一相加结果和扩展后的第二相加结果之和。
可选的,还包括:
第四扩展的单精度加法器,用于将两个单精度数值扩展到Y位后,计算扩展后的两个单精度数值之和,任意一个所述单精度数值为所述第一相加结果和所述第二相加结果之和。
一种可编程的混合精度运算单元,包括:
四个扩展的单精度乘法器、以及三个扩展的双精度加法器;
所述扩展的单精度乘法器用于实现前述的可编程的混合精度运算单元的功能;
第一扩展的双精度加法器用于将第一乘积和第二乘积扩展到M位后,计算扩展后的第一乘积和扩展后的第二乘积之和,得到第一相加结果;所述第一乘积为第一扩展的单精度乘法器的输出结果,所述第二乘积为第二扩展的单精度乘法器的输出结果;
第二扩展的双精度加法器用于将第三乘积和第四乘积扩展到M位后,计算扩展后的第三乘积和扩展后的第四乘积之和,得到第二相加结果;所述第三乘积为第三扩展的单精度乘法器的输出结果,所述第四乘积为第四扩展的单精度乘法器的输出结果;
第三扩展的双精度加法器用于将所述第一相加结果和所述第二相加结果扩展到M位后,计算扩展后的第一相加结果和第二相加结果之和。
可选的,还包括:
第四扩展的双精度加法器,用于将两个双精度数值扩展到M位后,计算扩展后的两个双精度数值之和,任意一个所述双精度数值为所述第一相加结果和所述第二相加结果之和。
本申请所述的可编程的混合精度运算单元能够支持多种精度的浮点或定点乘和/或加运算,既可以实现多路并发的低精度运算,又可以整体实现一个高精度的运算,因此,具有较高能效比。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例公开的一种可编程的混合精度运算单元的结构示意图;
图2为本申请实施例公开的又一种可编程的混合精度运算单元的结构示意图;
图3为本申请实施例公开的可编程的混合精度运算单元通连接方式的切换实现不同运算的示意图;
图4为本申请实施例公开的又一种可编程的混合精度运算单元的结构示意图;
图5为本申请实施例公开的又一种可编程的混合精度运算单元的结构示意图;
图6为本申请实施例公开的又一种可编程的混合精度运算单元的结构示意图。
具体实施方式
本申请实施例公开的可编程的混合精度运算单元,可以应用在但不限于深度神经网络中,从运算类型而言,适用于训练和推断过程;从硬件而言,可以设置在通用中央处理器(CPU,如Intel/AMD x86 CPU)、图形处理器(GPU,如NVidia V100)、神经元处理器(如Google TPU)、现场可编程门阵列(FPGA和专用集成电路(ASIC)中。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为本申请实施例公开的一种可编程的混合精度运算单元,包括:四个扩展的半精度乘法器1、以及四个扩展的单精度加法器2。
任意一个扩展的半精度乘法器用于将输入数值扩展到X位,并计算第一数值和第二数值之积,其中,第一数值为一个输入数值扩展后的数值中的高位数值或低位数值,第二数值为另一个输入数值扩展后的数值中的高位数值或低位数值,X为预设数值。
任意一个扩展的单精度加法器用于将输入数值扩展到Y位,并计算扩展后的数值之和,Y为预设数值。
需要说明的是,本申请实施例中“扩展的”是指具有将数值的位数扩展到预设数值位的功能,但如果输入数值已满预设数值位,则不进行扩展。
具体的,任意一个扩展的半精度乘法器1中包括:并联的一个单精度指数乘法器11和一个扩展的半精度尾数乘法器12。
其中,扩展的半精度尾数乘法器用于将输入数值扩展到X位,并计算所述第一数值和所述第二数值之积。
具体的,X的取值范围包括:1、16~22位,这里超过16位(输入)的部分作为精度将用来保持中间结果的精度,不影响本发明的实施。2、11~15位,相比1,仅缺失对定点32位计算的支持,同样是本发明涵盖的内容。
具体的,单精度指数乘法器用于计算单精度浮点数的指数之积。单精度指数乘法器支持单精度数值的乘法运算,并可以向下兼容半精度数值的乘法运算。
基于扩展的半精度乘法器的结构,扩展的半精度乘法器可以实现半精度浮点数的乘法运算,以及8位或16位定点数的乘法运算。举例说明:
对于半精度浮点乘法:假设两个半精度浮点数为C和D:
C=1.Mc*2^Ec,D=1.Md*2^Ed,其中1.Mc为C的尾数,2^Ec为C的指数,1.Md为D的尾数,2^Ed为D的指数。
则C与D的乘积为:C*D=(1.Mc*1.Md)*2^(Ec+Ed)。
在将1.Mc和1.Md分别通过低位扩展(补零)以从11位扩展到16位后,假设1.Ma扩展后为:
1.Mc’=Mc*2^-15。
1.Md扩展后为:
1.Md’=Md*2^-15。
令X=C*D=1.Mx*2^Ex;
则有Ex=Ec+Ed;
1)如果Mc*Md*2^-30>=2
1.Mx=Mc*Md*2^-31(Mx舍入到10位)
Ex=Ec+Ed+1
2)如果Mc*Md*2^-30<2
1.Mx=Mc*Md*2^-30(Mx舍入到10位)
Ex=Ec+Ed。
可见,两个半精度浮点数的乘法,包括乘法运算、移位运算和加法运算,因此,可以使用单精度指数乘法器进行加法运算、使用半精度尾数乘法器进行乘法运算,移位运算使用现有的移位运算模块实现。
对于8位定点乘法:假设两个8位的定点数为A和B,令1.Ma=A(有符号或无符号扩展到16位),1.Mb=B,则A*B=1.Ma*1.Mb(截取低16位),利用一个扩展的半精度尾数乘法器即可完成该运算。
任意一个扩展的单精度加法器2中包括:并联的一个单精度指数加法器21和一个扩展的单精度尾数加法器22。
其中,扩展的单精度尾数加法器用于将输入数值扩展到Y位,并计算扩展后的数值之和。
具体的,Y的取值范围包括:32~44位,这里超过32位(输出)的部分作为精度将用来保持中间结果的精度,不影响本发明的实施。2、22~30位,相比1,仅缺失对定点32位计算的支持,同样是本发明涵盖的内容。
具体的,单精度指数加法器用于计算单精度或半精度浮点数的指数之和。
基于上述结构,任意一个扩展的单精度加法器可以支持:
1、单精度加法;
2、半精度加法,其中半精度的被扩展成单精度完成加法后再转换成半精度;
3、定点32位加法,直接利用扩展的尾数加法器实现,加法操作数的指数部分默认为相同的常数;
4、定点16位和8位加法,扩展为32位定点进行运算,并将结果转换为16位或8位(取低位)。
四个扩展的半精度乘法器1、以及四个扩展的单精度加法器2具有两种连接方式:
图1为第一种连接方式:四个扩展的半精度乘法器与四个扩展的单精度加法器一一对应级联,构成四个并联的半精度乘加器。
基于上述具体结构,任意一个半精度乘加器能够实现以下运算:
1、一个半精度乘法或加法运算;
2、一个半精度乘加运算;
3、一个定点8位16位乘或加法运算;
4、一个定点8位16位乘加运算;
5、一个单精度加法运算;
6、一个定点32位加法运算。
可见,第一种连接方式能够构成4个半精度乘加器,4个半精度乘加器可以并行进行上述6种运算(一个半精度乘加器同时可进行一种运算)。
需要说明的是,本申请的实施例中,依据已有的结构和已知的运算类型,本领域技术人员能够知晓如何使用已有的结构实现已知类型的运算,这里不再一一举例赘述。其它结构能够也类似,本申请实施例中不再穷举示例。
图2为第二种连接方式:
将四个扩展的半精度乘法器分别称为:第一扩展的半精度乘法器、第二扩展的半精度乘法器、第三扩展的半精度乘法器和第四扩展的半精度乘法器。将四个扩展的单精度加法器分别称为第一扩展的单精度加法器、第二扩展的单精度加法器、第三扩展的单精度加法器和第四扩展的单精度加法器。则第一扩展的单精度加法器与第一扩展的半精度乘法器和第二扩展的半精度乘法器分别级联。第二扩展的单精度加法器与第三扩展的半精度乘法器和第四扩展的半精度乘法器分别级联。第三扩展的单精度加法器与第一扩展的单精度加法器和第二扩展的单精度加法器分别级联。第四扩展的单精度加法器不与其它扩展的单精度加法器或扩展的半精度乘法器相连。
基于上述具体结构,图2中所示的第二种连接关系实现乘加运算的示例为:
具体的,假设两个单精度浮点数分别为A和B:
A=1.Ma*2^Ea,B=1.Mb*2^Eb,其中1.Ma为A的尾数,2^Ea为A的指数,1.Mb为B的尾数,2^Eb为B的指数。
则A与B的乘积为:A*B=(1.Ma*1.Mb)*2^(Ea+Eb)。
在将1.Ma和1.Mb分别通过低位扩展(补零)以从23位扩展到32位后,假设1.Ma扩展后为:
1.Ma’=MSBa*2^-15+LSBa*2^-31。
1.Mb扩展后为:
1.Mb’=MSBb*2^-15+LSBb*2^-31。
其中,MSB表示高位,LSB表示低位,MSBa表示1.Ma扩展后得到的尾数的高位,LSBa表示1.Ma扩展后得到的尾数的低位,MSBb表示1.Mb扩展后得到的尾数的高位,LSBb表示1.Mb扩展后得到的尾数的低位。MSB和LSB分别为16位定点数。
则尾数之积为:
X=1.Ma*1.Mb=1.Ma’*1.Mb’
=(MSBa*2^-15+LSBa*2^-31)*(MSBb*2^-15+LSBb*2^-31)
=2^-15*((MSBa*MSBb)+2^-16*(MSBa*LSBb+LSBa*MSBb)+2^-32*(LSBa*LSBb))。(1)
可见,式(1)中包括四个乘积,尾数之积为四个乘积之和,因此,基于式(1),图2中的4个扩展的半精度乘法器(具体的,为扩展的半精度乘法器中的扩展的半精度尾数乘法器)中,依次用于计算式(1)中的4个乘积,3个加法器用于计算4个乘积之和。
即:图2从上到下包括3层:第一层中,从左到右的扩展的半精度乘法器中,第一个扩展的半精度乘法器用于计算MSBa*MSBb,第二个扩展的半精度乘法器用于计算MSBa*LSBb,第三个扩展的半精度乘法器用于计算LSBa*MSBb,第四个扩展的半精度乘法器用于计算LSBa*LSBb。第二层中的两个扩展的单精度加法器,按照从左到右的顺序,第一个扩展的单精度加法器用于计算MSBa*MSBb与MSBa*LSBb之和(以下将MSBa*MSBb与MSBa*LSBb之和称为第一相加结果),第二个扩展的单精度加法器用于计算LSBa*MSBb与LSBa*LSBb之和(以下将LSBa*MSBb与LSBa*LSBb称为第二相加结果)。第三层的扩展的单精度加法器用于计算第一相加结果和第二相加结果之和。
需要说明的是,式(1)中的2^-15、2^-16和2^-32通过移位运算实现,可以使用现有的移位运算模块实现移位运算,具体可参见现有技术,这里不再赘述,移位运算模块未在图2中画出。
在涉及移位运算的情况下,半精度浮点乘法器对于尾数的扩展,可以实现精度保护的目的。
从上述说明可以看出,图2所示的结构中,联合4次半精度尾数(定点)乘法运算和3次扩展的单精度尾数(定点)加法运算,合成一个单精度浮点乘法运算中的尾数运算。
A与B的乘积中的指数运算2^Ea*2^Eb,可以通过任意一个单精度指数乘法器实现,尾数相乘结果与指数相乘结果的乘加,可以通过移位运算(移位模块为现有技术,在图2中未画出)得到,可见,图2所示的连接关系具有实现浮点数的乘法运算的功能。
再结合第四扩展的单精度加法器,可以将两次浮点数的乘法运算的结果作为第四扩展的单精度加法器的输入,实现乘加运算。即:联合4次扩展的半精度尾数(定点)乘法运算和3次扩展的单精度尾数(定点)加法,以及一个扩展的单精度浮点加法运算,可以合成一个单精度浮点乘加运算。也就是说,4个扩展的半精度乘法器和4个扩展的单精度加法器可以构成一个单精度浮点乘加单元,并向下兼容半精度的浮点乘加运算。
因为定点运算可以利用浮点运算的尾数部分实现,相当于浮点运算的指数运算部分被跳过,因此,图2所示的连接方式也可以实现定点乘法运算,基于扩展的半精度乘法器的精度,图2所示的连接方式可以实现8位或16位或32位的定点乘法运算。32位的定点乘法运算的实现过程,与上述尾数相乘的运算过程相同(因为输入扩展的半精度乘法器的数值已经是32位,所以半精度乘法器无需对数值做扩展)。对于8位或16位的定点乘法运算,半精度乘法器对数值做扩展后,与上述尾数相乘的运算过程相同,这里不再赘述。
这里对于图2所示的连接关系进行32位定点的乘加运算进行举例:
假设两个32位定点数分别为A和B:
A=MSBa*2^16+LSBa,B=MSBa*2^16+LSBb,其中MSBa为A的高16位,LSBa为A的低16位;MSBb为B的高16位,LSBb为B的低16位。
则A与B的乘积为:A*B=(MSBa*2^16+LSBa)*(MSBa*2^16+LSBb)
=2^32*(MSBa*MSBb)+2^16*(MSBa*LSBb+LSBa*MSBb)+(LSBa*LSBb)。
类似单精度浮点运算,使用4个扩展的半精度尾数乘法器,三个移位器和三个扩展的单精度尾数加法器完成A*B的运算。结果截取低32位,截取时如果结果大于32位能表示的最大值,需要根据算法需要做饱和或上溢处理。
最后再级联一个扩展的单精度尾数加法器可完成一个32位定点乘加运算。
综上所述,四个扩展的半精度乘法器以及四个扩展的单精度加法器构成可重构的运算单元(图1和图2),能够支持多种精度,例如半精度、单精度的浮点数的乘和/或加运算,并且还能够支持8位、16位和32位的定点数乘和/或加运算,即能够支持混合精度的浮点和定点乘和/或加运算。
更为重要的是,运算单元中一部分运算器可支持较低精度的运算,例如单精度指数乘法器与任意一个扩展的半精度乘法器实现半精度浮点乘法,整个运算单元支持精度更高的运算。并且,在一部分运算器的运算,并不影响并联的其它运算器的运算,因此,既可以实现多路并发的低精度运算,又可以整体作为一个高精度的运算单元。
而现有技术中,如果采用独立的单精度和半精度运算器,则在执行具体某种精度运算任务时,只会使用到其中一种运算器,从而造成晶体管利用率和能效比较低,并且,如果只采用最高精度的运算器,把低精度和运算转换成高精度运算,则在进行低精度运算时,运算的能效比较低(相当于高精度计算)。
因此,图1和图2所示的运算单元能够实现较高的晶体管利用率和能耗比。
需要说明的是,上述对于低精度乘法、加法的支持,不只限定于浮点半精度、8位和16位定点。任意指数不大于8位且小数部分不大于10位非标准的浮点数据格式(例如BFloat16),以及不大于16位的非标准定点数据格式,例如2位、4位、12位定点,都可以利用该结构支持。
需要说明的是,针对上述两种连接方式,可以通过指令(控制)不同连接关系的切换(即可编程)。这种切换通过MUX(选通开关)实现。
图3为使用选择器在以上第一种连接方式和第二种连接方式之间切换,以实现不同运算的可编程混合精度运算单元的原理示意图:
其中,
1、实线通路表示浮点单精度的标量乘加:
D=A*B+C=(AM+AL)*(BM+BL)+C。AM表示单精度乘数A尾数的高12位以扩展的半精度浮点数(8位指数及16位尾数)表示,AL表示单精度乘数A尾数低12位以扩展的浮点数表示(注意此处AL指数需要在A的指数上乘2^-12调整),BM表示单精度乘数B尾数的高12位以扩展的半精度浮点数(8位指数及16位尾数)表示,BL表示单精度乘数B尾数低12位以扩展的浮点数表示(注意此处BL指数需要在B的指数上乘2^-12调整),C表示单精度浮点乘累加数。
2、虚线通路表示(4x16)浮点半精度的向量乘法/乘加:di=ci+ai*bi,di表示向量{d0,d1,d2,d3}对应的元素,i=0,1,2,3,ci表示向量{c0,c1,c2,c3}对应的元素,ai表示向量{a0,a1,a2,a3}对应的元素,bi表示向量{b0,b1,b2,b3}对应的元素。
3、选择器a、b选择虚线通路,其余选择器选择实线通路表示(4x16)浮点半精度的向量点积:A表示向量A,BT表示向量B的转置,ak表示向量A{a0,a1,a2,a3}的对应元素,bk表示向量B{b0,b1,b2,b3}的对应元素。
图4为本申请实施例公开的又一种可编程的混合精度运算单元,包括四个扩展的单精度乘法器、以及四个扩展的双精度加法器。
扩展的双精度加法器用于将输入数值扩展到M位,并计算扩展后的数值之和。
具体的,M的范围包括:1、63~100位,这里超过64位(加法)的部分作为精度将用来保持中间结果的精度,不影响本发明的实施。2、46~62位,相比1,仅缺失对定点64位计算的支持,同样是本发明涵盖的内容。
图4中的运算单元,与图1所示的运算单元的区别在于:1、扩展的单精度指数乘法/加法器替换为扩展的双精度指数乘法/加法器;2、扩展的半精度尾数乘法器替换为扩展的单精度尾数乘法器;3、扩展的单精度尾数加法器替换为扩展的双精度尾数加法器。图4所示的运算单元中的连接关系同图1所示。
图4中所示的运算单元中的扩展的单精度乘法器,可以为图2中所示的可编程的混合精度运算单元中除单独的一个扩展的单精度加法器(即第四扩展的单精度加法器)之外的部分。因此,扩展的单精度乘法器位数的扩展范围为:1、32~50位,这里超过32位(乘法)的部分作为精度将用来保持中间结果的精度,不影响本发明的实施。2、23~31位,相比1,仅缺失对定点64位计算的支持,同样是本发明涵盖的内容。
图5所示为四个扩展的单精度乘法器、以及四个扩展的双精度加法器的另一种连接关系,图5与图2的区别为:1、扩展的单精度指数乘法/加法器替换为扩展的双精度指数乘法/加法器;2、扩展的半精度尾数乘法器替换为扩展的单精度尾数乘法器;3、扩展的单精度尾数加法器替换为扩展的双精度尾数加法器。
图5中所示的运算单元中的扩展的单精度乘法器,可以为图2中所示的可编程的混合精度运算单元中除单独的一个扩展的单精度加法器(即第四扩展的单精度加法器)之外的部分。相应的,四个扩展的单精度乘法器、以及四个扩展的双精度加法器组成的可重构结构,支持以下运算类型:
1、1个双精度浮点乘加运算;
2、1个64位定点乘加运算;
3、4个并发的定点8位、16位或32位乘加运算;
4、4个并发的64位定点加法运算;
5、4个并发的双精度加法运算。
图4或图5所示的运算单元实现乘法、加法以及乘加的过程,可以参见图1或图2中所示的过程,区别在于参与运算的数值的精度不同,例如,上述运算公式中的高位数值为扩展后的尾数的高32位,这里不再赘述。
图6为本申请实施例公开的又一种可编程的混合精度运算单元(也可以称为乘加运算算子),包括并联的可编程的混合精度运算单元(图6中Kernel表示),其中,可编程的混合精度运算单元可以为图1、图2所示或图4、图5所示的运算单元。需要说明的是,图6仅为并联的一个示例,本实施例中并不限定并联方式以及维度。
图6所示的可编程的混合精度运算单元,可以适用于向量的乘加运算,向量可以为一维、二维等维度,这里不做限定。
本申请实施例方法所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本申请实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种可编程的混合精度运算单元,其特征在于,包括:
四个扩展的半精度乘法器、以及四个扩展的单精度加法器;
任意一个所述扩展的半精度乘法器用于将输入数值扩展到X位,并计算第一数值和第二数值之积,其中,第一数值为一个输入数值扩展后的数值中的高位数值或低位数值,第二数值为另一个输入数值扩展后的数值中的高位数值或低位数值,X为预设数值;
任意一个所述扩展的单精度加法器用于将输入数值扩展到Y位,并计算扩展后的数值之和,Y为预设数值;
其中,所述四个扩展的半精度乘法器和所述四个扩展的单精度加法器以第一方式或第二方式连接;
所述第一方式为:所述四个扩展的半精度乘法器与所述四个扩展的单精度加法器一一对应级联,构成四个并联的半精度乘加器;
所述第二方式为:第一扩展的单精度加法器与第一扩展的半精度乘法器和第二扩展的半精度乘法器分别级联;
第二扩展的单精度加法器与第三扩展的半精度乘法器和第四扩展的半精度乘法器分别级联;
第三扩展的单精度加法器与第一扩展的单精度加法器和第二扩展的单精度加法器分别级联。
2.根据权利要求1所述的可编程的混合精度运算单元,其特征在于,所述扩展的半精度乘法器中包括:
并联的一个单精度指数乘法器和一个扩展的半精度尾数乘法器;
所述扩展的半精度尾数乘法器用于将输入数值扩展到X位,并计算所述第一数值和所述第二数值之积。
3.根据权利要求1所述的可编程的混合精度运算单元,其特征在于,所述扩展的单精度加法器中包括:
并联的一个单精度指数加法器和一个扩展的单精度尾数加法器;
所述扩展的单精度尾数加法器用于将输入数值扩展到Y位,并计算扩展后的数值之和。
4.一种可编程的混合精度运算单元,其特征在于,包括:
四个扩展的单精度乘法器、以及四个扩展的双精度加法器;
所述扩展的单精度乘法器为权利要求1-3任一项所述的可编程的混合精度运算单元;
所述扩展的双精度加法器用于将输入数值扩展到M位,并计算扩展后的数值之和,M为预设数值;
其中,所述四个扩展的单精度乘法器和四个扩展的双精度加法器以第一方式或第二方式连接;
所述第一方式为:所述四个扩展的单精度乘法器与所述四个扩展的双精度加法器一一对应级联,构成四个并联的单精度乘加器;
所述第二方式为:第一扩展的双精度加法器与第一扩展的单精度乘法器和第二扩展的单精度乘法器分别级联;
第二扩展的双精度加法器与第三扩展的单精度乘法器和第四扩展的单精度乘法器分别级联;
第三扩展的双精度加法器与第一扩展的双精度加法器和第二扩展的双精度加法器分别级联。
5.根据权利要求4所述的可编程的混合精度运算单元,其特征在于,所述扩展的双精度加法器中包括:
并联的一个双精度指数加法器和一个扩展的双精度尾数加法器;
所述扩展的双精度尾数加法器用于将输入数值扩展到M位,并计算扩展后的数值之和。
6.一种可编程的混合精度运算单元,其特征在于,包括:
并联的、权利要求1-3任一项或4-5任一项所述的可编程的混合精度运算单元。
7.一种可编程的混合精度运算单元,其特征在于,包括:
四个扩展的半精度乘法器、以及三个扩展的单精度加法器;
第一扩展的半精度乘法器用于将输入数值扩展到X位后,计算MSBa*MSBb,得到第一乘积;
第二扩展的半精度乘法器用于将所述输入数值扩展到X位后,计算MSBa*LSBb,得到第二乘积;
第三扩展的半精度乘法器用于将所述输入数值扩展到X位后,计算LSBa*MSBb,得到第三乘积;
第四扩展的半精度乘法器用于将所述输入数值扩展到X位后,计算LSBa*LSBb,得到第四乘积;其中,所述输入数值为第一数值和第二数值,MSBa为扩展后的第一数值的高位,MSBb为扩展后的第二数值的高位,LSBa为所述扩展后的第一数值的低位,LSBb为所述扩展后的第二数值的低位;
第一扩展的单精度加法器用于将所述第一乘积和所述第二乘积扩展到Y位后,计算扩展后的第一乘积和扩展后的第二乘积之和,得到第一相加结果;
第二扩展的单精度加法器用于将所述第三乘积和所述第四乘积扩展到Y位后,计算扩展后的第三乘积和扩展后的第四乘积之和,得到第二相加结果;
第三扩展的单精度加法器用于将所述第一相加结果和所述第二相加结果扩展到Y位后,计算扩展后的第一相加结果和扩展后的第二相加结果之和。
8.根据权利要求7所述的可编程的混合精度运算单元,其特征在于,还包括:
第四扩展的单精度加法器,用于将两个单精度数值扩展到Y位后,计算扩展后的两个单精度数值之和,任意一个所述单精度数值为所述第一相加结果和所述第二相加结果之和。
9.一种可编程的混合精度运算单元,其特征在于,包括:
四个扩展的单精度乘法器、以及三个扩展的双精度加法器;
所述扩展的单精度乘法器用于实现权利要求7所述的可编程的混合精度运算单元的功能;
第一扩展的双精度加法器用于将第一乘积和第二乘积扩展到M位后,计算扩展后的第一乘积和扩展后的第二乘积之和,得到第一相加结果;所述第一乘积为第一扩展的单精度乘法器的输出结果,所述第二乘积为第二扩展的单精度乘法器的输出结果;
第二扩展的双精度加法器用于将第三乘积和第四乘积扩展到M位后,计算扩展后的第三乘积和扩展后的第四乘积之和,得到第二相加结果;所述第三乘积为第三扩展的单精度乘法器的输出结果,所述第四乘积为第四扩展的单精度乘法器的输出结果;
第三扩展的双精度加法器用于将所述第一相加结果和所述第二相加结果扩展到M位后,计算扩展后的第一相加结果和第二相加结果之和。
10.根据权利要求9所述的可编程的混合精度运算单元,其特征在于,还包括:
第四扩展的双精度加法器,用于将两个双精度数值扩展到M位后,计算扩展后的两个双精度数值之和,任意一个所述双精度数值为所述第一相加结果和所述第二相加结果之和。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811514918.2A CN109634558B (zh) | 2018-12-12 | 2018-12-12 | 可编程的混合精度运算单元 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811514918.2A CN109634558B (zh) | 2018-12-12 | 2018-12-12 | 可编程的混合精度运算单元 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109634558A true CN109634558A (zh) | 2019-04-16 |
CN109634558B CN109634558B (zh) | 2020-01-14 |
Family
ID=66073086
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811514918.2A Active CN109634558B (zh) | 2018-12-12 | 2018-12-12 | 可编程的混合精度运算单元 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109634558B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110389746A (zh) * | 2019-07-29 | 2019-10-29 | 中国电子科技集团公司第二十四研究所 | 硬件加速电路、微控制芯片及*** |
CN111626414A (zh) * | 2020-07-30 | 2020-09-04 | 电子科技大学 | 一种动态多精度神经网络加速单元 |
CN111666077A (zh) * | 2020-04-13 | 2020-09-15 | 北京百度网讯科技有限公司 | 算子处理方法、装置、电子设备及存储介质 |
CN111784489A (zh) * | 2020-06-28 | 2020-10-16 | 广东金宇恒软件科技有限公司 | 一种基于大数据的财政核算管理*** |
CN112506468A (zh) * | 2020-12-09 | 2021-03-16 | 上海交通大学 | 支持高吞吐多精度乘法运算的risc-v通用处理器 |
WO2021073512A1 (zh) * | 2019-10-14 | 2021-04-22 | 安徽寒武纪信息科技有限公司 | 用于浮点运算的乘法器、方法、集成电路芯片和计算装置 |
WO2021116799A1 (en) * | 2019-12-12 | 2021-06-17 | International Business Machines Corporation | Mixed precision floating-point multiply-add operation |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1279781A (zh) * | 1997-11-26 | 2001-01-10 | 阿塔迈尔公司 | 用于多精度整数算术运算的装置 |
CN101916177A (zh) * | 2010-07-26 | 2010-12-15 | 清华大学 | 一种可配置多精度定点乘加装置 |
CN104778028A (zh) * | 2014-01-15 | 2015-07-15 | Arm有限公司 | 乘加器 |
CN107153522A (zh) * | 2017-04-21 | 2017-09-12 | 东南大学 | 一种面向人工神经网络计算的动态精度可配近似乘法器 |
CN107967132A (zh) * | 2017-11-27 | 2018-04-27 | 中国科学院计算技术研究所 | 一种用于神经网络处理器的加法器和乘法器 |
CN108564168A (zh) * | 2018-04-03 | 2018-09-21 | 中国科学院计算技术研究所 | 一种对支持多精度卷积神经网络处理器的设计方法 |
CN108694038A (zh) * | 2017-04-12 | 2018-10-23 | 英特尔公司 | 专用处理块中的混合精度浮点运算电路 |
CN108958705A (zh) * | 2018-06-26 | 2018-12-07 | 天津飞腾信息技术有限公司 | 一种支持混合数据类型的浮点融合乘加器及其应用方法 |
-
2018
- 2018-12-12 CN CN201811514918.2A patent/CN109634558B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1279781A (zh) * | 1997-11-26 | 2001-01-10 | 阿塔迈尔公司 | 用于多精度整数算术运算的装置 |
CN101916177A (zh) * | 2010-07-26 | 2010-12-15 | 清华大学 | 一种可配置多精度定点乘加装置 |
CN104778028A (zh) * | 2014-01-15 | 2015-07-15 | Arm有限公司 | 乘加器 |
CN108694038A (zh) * | 2017-04-12 | 2018-10-23 | 英特尔公司 | 专用处理块中的混合精度浮点运算电路 |
CN107153522A (zh) * | 2017-04-21 | 2017-09-12 | 东南大学 | 一种面向人工神经网络计算的动态精度可配近似乘法器 |
CN107967132A (zh) * | 2017-11-27 | 2018-04-27 | 中国科学院计算技术研究所 | 一种用于神经网络处理器的加法器和乘法器 |
CN108564168A (zh) * | 2018-04-03 | 2018-09-21 | 中国科学院计算技术研究所 | 一种对支持多精度卷积神经网络处理器的设计方法 |
CN108958705A (zh) * | 2018-06-26 | 2018-12-07 | 天津飞腾信息技术有限公司 | 一种支持混合数据类型的浮点融合乘加器及其应用方法 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110389746A (zh) * | 2019-07-29 | 2019-10-29 | 中国电子科技集团公司第二十四研究所 | 硬件加速电路、微控制芯片及*** |
CN110389746B (zh) * | 2019-07-29 | 2021-04-23 | 中国电子科技集团公司第二十四研究所 | 硬件加速电路、微控制芯片及*** |
WO2021073512A1 (zh) * | 2019-10-14 | 2021-04-22 | 安徽寒武纪信息科技有限公司 | 用于浮点运算的乘法器、方法、集成电路芯片和计算装置 |
WO2021116799A1 (en) * | 2019-12-12 | 2021-06-17 | International Business Machines Corporation | Mixed precision floating-point multiply-add operation |
US11275561B2 (en) | 2019-12-12 | 2022-03-15 | International Business Machines Corporation | Mixed precision floating-point multiply-add operation |
CN111666077A (zh) * | 2020-04-13 | 2020-09-15 | 北京百度网讯科技有限公司 | 算子处理方法、装置、电子设备及存储介质 |
CN111784489A (zh) * | 2020-06-28 | 2020-10-16 | 广东金宇恒软件科技有限公司 | 一种基于大数据的财政核算管理*** |
CN111626414A (zh) * | 2020-07-30 | 2020-09-04 | 电子科技大学 | 一种动态多精度神经网络加速单元 |
CN111626414B (zh) * | 2020-07-30 | 2020-10-27 | 电子科技大学 | 一种动态多精度神经网络加速单元 |
CN112506468A (zh) * | 2020-12-09 | 2021-03-16 | 上海交通大学 | 支持高吞吐多精度乘法运算的risc-v通用处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN109634558B (zh) | 2020-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109634558B (zh) | 可编程的混合精度运算单元 | |
JP7476175B2 (ja) | 乗算累積回路 | |
CN114402289B (zh) | 多模式运算电路 | |
EP3835942B1 (en) | Systems and methods for loading weights into a tensor processing block | |
JPH02196328A (ja) | 浮動小数点演算装置 | |
US4949296A (en) | Method and apparatus for computing square roots of binary numbers | |
US9274750B2 (en) | System and method for signal processing in digital signal processors | |
US10776078B1 (en) | Multimodal multiplier systems and methods | |
US20210011686A1 (en) | Arithmetic operation device and arithmetic operation system | |
US20160350078A1 (en) | Efficient modulo calculation | |
CN112988656A (zh) | 用于将权重加载到张量处理块中的***和方法 | |
CN114341796A (zh) | 带符号多字乘法器 | |
CN112712172A (zh) | 用于神经网络运算的计算装置、方法、集成电路和设备 | |
JP4273071B2 (ja) | 除算・開平演算器 | |
WO2001046796A1 (fr) | Systeme de calcul utilisant la methode de newton-raphson | |
US5999962A (en) | Divider which iteratively multiplies divisor and dividend by multipliers generated from the divisors to compute the intermediate divisors and quotients | |
US20220075598A1 (en) | Systems and Methods for Numerical Precision in Digital Multiplier Circuitry | |
TW202219839A (zh) | 神經網絡處理單元及系統 | |
Kuo et al. | Configurable Multi-Precision Floating-Point Multiplier Architecture Design for Computation in Deep Learning | |
JPH04172526A (ja) | 浮動小数点除算器 | |
KR102338863B1 (ko) | 연산을 제어하기 위한 장치 및 방법 | |
US20240069864A1 (en) | Hardware accelerator for floating-point operations | |
Hsiao et al. | Multi-Precision Table-Addition Designs for Computing Nonlinear Functions in Deep Neural Networks | |
EP4231134A1 (en) | Method and system for calculating dot products | |
CN115374904A (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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 200120 room a-522, 188 Yesheng Road, Lingang xinpian District, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai Patentee after: Shanghai Suiyuan Technology Co.,Ltd. Address before: 201203 Room 302, building 2, zhangrun building, Lane 61, shengxia Road, Pudong New Area, Shanghai Patentee before: SHANGHAI ENFLAME TECHNOLOGY Co.,Ltd. |