一种算术逻辑单元、浮点数处理方法、GPU芯片、电子设备技术

技术编号:33406837 阅读:15 留言:0更新日期:2022-05-11 23:31
本公开提供了一种算术逻辑单元,包括特定乘加器以及浮点数控制电路;所述特定乘加器是对单精度浮点数乘加器改造得到的;所述浮点数控制电路,用于接收待乘加计算的三个双精度浮点数,所述三个双精度浮点数中包括两个乘数以及一个加数,针对所述两个乘数的尾数确定特定乘加器的计算对象,将计算对象输入至所述特定乘加器;特定乘加器,用于对输入的计算对象进行乘法计算,将计算结果返回至所述浮点数控制电路;浮点数控制电路,用于接收特定乘加器的计算结果,根据所述计算结果得到所述两个乘数的乘积结果;将所述乘积结果与所述加数进行相加,得到所述三个双精度浮点数的乘加结果,所述乘加结果为双精度浮点数。述乘加结果为双精度浮点数。述乘加结果为双精度浮点数。

【技术实现步骤摘要】
一种算术逻辑单元、浮点数处理方法、GPU芯片、电子设备


[0001]本公开涉及计算机
,尤其涉及一种算术逻辑单元、浮点数处理方法、GPU芯片、电子设备。

技术介绍

[0002]图形处理器GPU芯片是用于处理图像和图形相关运算工作的微处理器,其需要具备很强的浮点数计算的能力,其中,对于浮点数的计算中最常见也最常用的计算即为乘加计算,随着技术的不断发展,目前需要图形处理器GPU具备对双精度浮点数进行乘加的计算能力,然而目前业界的图形处理器仅具备对单精度浮点数进行乘加的能力,如果需要GPU具备对双精度浮点数进行乘加的计算能力,则需要设计和开发针对双精度浮点数的乘加器,并将开发的针对双精度浮点数的乘加器部署在GPU芯片上,采用这种方式会面临较高的设计难度,同时也需要较长的研发周期,另外将完整的双精度浮点数的乘法器部署在GPU芯片上,也大大占用了GPU芯片的面积。

技术实现思路

[0003]针对上述技术问题,本公开提供一种算术逻辑单元、浮点数处理方法、GPU芯片、电子设备,技术方案如下。
[0004]根据本公开的第一方面,提供了一种算术逻辑单元包括:特定乘加器以及浮点数控制电路;所述特定乘加器是对单精度浮点数乘加器改造得到的;所述特定乘加器的输入要求为:乘数的尾数位宽为不小于双精度浮点数尾数位宽的1/2,且不大于双精度浮点数尾数位宽的预定位宽;所述浮点数控制电路,用于接收待乘加计算的三个双精度浮点数,所述三个双精度浮点数中包括两个乘数以及一个加数,针对所述两个乘数的尾数确定特定乘加器的计算对象,将计算对象输入至所述特定乘加器;特定乘加器,用于对输入的计算对象进行乘法计算,将计算结果返回至所述浮点数控制电路;所述浮点数控制电路,用于接收特定乘加器的计算结果,根据所述计算结果得到所述两个乘数的乘积结果;将所述乘积结果与所述加数进行相加,得到所述三个双精度浮点数的乘加结果,所述乘加结果为双精度浮点数。
[0005]在一个实施例中,所述算术逻辑单元还包括格式解析电路;所述格式解析电路,用于接收待进行乘加计算的浮点数;确定所接收的浮点数的类型;若所接收的浮点数为双精度浮点数,则将待进行乘加计算的双精度浮点数发送至所述浮点数控制器。
[0006]在一个实施例中,所述格式解析电路,还用于在所接收的浮点数为单精度浮点数的情况下,对每个作为乘数的单精度浮点数进行预处理,以使预处理后的单精度浮点数的尾数满足所述特定乘加器的输入要求;将处理后的单精度浮点数发送至所述特定乘法器;
任一所述特定乘加器,还用于对一组处理后的单精度浮点数进行乘加计算得到乘加结果,所述乘加结果为单精度浮点数。
[0007]在一个实施例中,所述特定乘加器输入要求具体为:乘数的尾数位宽为不小于双精度浮点数尾数位宽的1/2,且小于双精度浮点数尾数位宽的预定位宽;所述浮点数控制电路,具体用于针对两个乘数中的每一乘数,将其尾数进行处理得到两个子尾数;其中任一子尾数满足所述特定乘加器的输入要求;将两个乘数对应的子尾数进行交叉组合得到四组组合结果,每组组合结果中包括两个对应于不同乘数的子尾数;将一组组合结果确定为特定乘加器的计算对象,将四组组合结果输入至所述特定乘法器;所述特定乘加器,具体用于对接收到的每组组合结果中的两个子尾数相乘,得到一个子乘积;将子乘积发送至浮点数控制电路;所述浮点数控制电路,具体用于对接收到的四个子乘积进行移位相加,得到尾数乘积结果;对所述两个乘数的阶码相加,得到阶码乘积结果;将尾数乘积结果与阶码乘积结果组合得到所述两个乘数的乘积结果;将所述乘积结果与所述加数进行相加,得到所述三个双精度浮点数的乘加结果,所述乘加结果为双精度浮点数。
[0008]在一个实施例中,所述浮点数控制电路,具体用于针对每一乘数,将其尾数从最高位截取预设位数作一子尾数,并且将剩余尾数补位后作为子尾数,其中两个子尾数的位宽相同且满足所述特定乘法器的输入要求。
[0009]在一个实施例中,所述浮点数控制电路,具体用于对所述三个双精度浮点数的符号进行异或,基于异或结果确定所述两个乘数的乘积结果与所述加数的计算方式;比较乘积结果的阶码与加数的阶码大小;在确定乘积结果与所述加数的计算方式为相加且乘积结果的阶码大的情况下,根据加数与乘积结果的阶码差对加数的尾数进行相应的右移,得到调整后加数的尾数;将调整后的加数的尾数与乘积结果的尾数相加,得到相加结果的尾数,以乘积结果的阶码为相加结果的阶码得到相加结果,对相加结果进行截取得到临时乘加结果,对临时乘加结果进行舍入得到最终乘加结果,所述最终乘加结果的符号与加数的符号一致。
[0010]在一个实施例中,所述浮点数控制电路,还用于在确定乘积结果与所述加数的计算方式为相加且乘积结果的阶码小的情况下,根据加数与乘积结果的阶码差对加数的尾数进行相应的左移,得到调整后加数的尾数;将调整后加数的尾数与乘积结果的尾数相加,对相加结果进行对应于所述左移的右移,得到相加结果的尾数,以加数的阶码为相加结果的阶码,得到相加结果,对相加结果进行截取得到临时乘加结果,对临时乘加结果进行舍入得到最终乘加结果,所述乘加结果的符号与加数的符号一致。
[0011]在一个实施例中,所述浮点数控制电路,还用于在确定乘积结果与所述加数的计算方式为相减且乘积结果的阶码大的情况下,将乘积结果的阶码调整为所述加数的阶码,并对乘积结果的尾数进行左移,得到调整后的乘积结果;调整后的乘积结果与调整前的乘积结果数值不变;将调整后的乘积结果减去加数,得到相减结果,对相减结果进行截取得到临时乘加结果,对临时乘加结果进行舍入得到最终乘加结果,所述最终乘加结果的符号与加数的符号相反。
[0012]在一个实施例中,所述浮点数控制电路,还用于在确定乘积结果与所述加数的计算方式为相减且乘积结果的阶码小的情况下,将加数的阶码调整为所述乘积结果的阶码,并对加数的尾数进行左移,得到调整后的加数;调整后的加数与调整前的加数数值不变;将调整后的加数与乘积结果相减,得到相减结果;对相减结果进行截取得到临时乘加结果,对临时乘加结果进行舍入得到最终乘加结果,所述最终乘加结果的符号与加数的符号一致。
[0013]在一个实施例中,所述浮点数控制电路,还用于在将所述乘积结果与所述加数进行相加前,确定所述乘积结果阶码与所述加数的阶码的差值;在所述差值大于预设阈值,且所述乘积结果大的情况下,基于所述乘积结果确定最终乘加结果;在所述加数大的情况下,基于所述加数确定最终乘加结果。
[0014]在一个实施例中,所述浮点数控制电路,还用于在接收到待乘加计算的三个双精度浮点数后,确定所述三个双精度浮点数的合法性,在所述三个双精度浮点数均合法的情况下,对所述三个双精度浮点数进行处理和计算。
[0015]根据本公开实施例的第二个方面,提供了一种浮点数处理方法,应用于算术逻辑单元,所述算术逻辑单元包括特定乘加器以及浮点数控制电路;所述特定乘加器是对单精度浮点数乘加器改造得到的;所述特定乘加器的输入要求为:乘数的尾数位宽为不小于双精度浮点数尾数位宽的1/2,且不大于双精度浮点数本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种算术逻辑单元,其特征在于,包括特定乘加器以及浮点数控制电路;所述特定乘加器是对单精度浮点数乘加器改造得到的;所述特定乘加器的输入要求为:乘数的尾数位宽为不小于双精度浮点数尾数位宽的1/2,且不大于双精度浮点数尾数位宽的预定位宽;所述浮点数控制电路,用于接收待乘加计算的三个双精度浮点数,所述三个双精度浮点数中包括两个乘数以及一个加数,针对所述两个乘数的尾数确定特定乘加器的计算对象,将计算对象输入至所述特定乘加器;所述特定乘加器,用于对输入的计算对象进行乘法计算,将计算结果返回至所述浮点数控制电路;所述浮点数控制电路,用于接收特定乘加器的计算结果,根据所述计算结果得到所述两个乘数的乘积结果;将所述乘积结果与所述加数进行相加,得到针对所述三个双精度浮点数的乘加结果,所述乘加结果为双精度浮点数。2.根据权利要求1所述的算术逻辑单元,其特征在于,所述算术逻辑单元还包括格式解析电路;所述格式解析电路,用于接收待进行乘加计算的浮点数;确定所接收的浮点数的类型;若所接收的浮点数为双精度浮点数,则将待进行乘加计算的双精度浮点数发送至所述浮点数控制器。3.根据权利要求2所述的算术逻辑单元,其特征在于,所述格式解析电路,还用于在所接收的浮点数为单精度浮点数的情况下,对每个作为乘数的单精度浮点数进行预处理,以使预处理后的单精度浮点数的尾数满足所述特定乘加器的输入要求;将预处理后的单精度浮点数发送至所述特定乘法器;任一所述特定乘加器,还用于对一组预处理后的单精度浮点数进行乘加计算得到乘加结果,所述乘加结果为单精度浮点数。4.根据权利要求1所述的算术逻辑单元,其特征在于,所述特定乘加器输入要求具体为:乘数的尾数位宽为不小于双精度浮点数尾数位宽的1/2,且小于双精度浮点数尾数位宽的预定位宽;所述浮点数控制电路,具体用于针对两个乘数中的每一乘数,将其尾数进行处理得到两个子尾数;其中任一子尾数满足所述特定乘加器的输入要求;将两个乘数对应的子尾数进行交叉组合得到四组组合结果,每组组合结果中包括两个对应于不同乘数的子尾数;将一组组合结果确定为特定乘加器的计算对象,将所述四组组合结果输入至所述特定乘法器;所述特定乘加器,具体用于对接收到的每组组合结果中的两个子尾数相乘,得到一个子乘积;将子乘积发送至浮点数控制电路;所述浮点数控制电路,具体用于对接收到的四个子乘积进行移位相加,得到尾数乘积结果;对所述两个乘数的阶码相加,得到阶码乘积结果;将尾数乘积结果与阶码乘积结果组合得到所述两个乘数的乘积结果;将所述乘积结果与所述加数进行相加,得到所述三个双精度浮点数的乘加结果,所述乘加结果为双精度浮点数。5.根据权利要求4所述的算术逻辑单元,其特征在于,所述浮点数控制电路,具体用于针对每一乘数,将其尾数从最高位截取预设位数作一子尾数,并且将剩余尾数补位后作为子尾数,其中两个子尾数的位宽相同且满足所述特定
乘法器的输入要求。6.根据权利要求5所述的算术逻辑单元,其特征在于,所述浮点数控制电路,具体用于对所述三个双精度浮点数的符号进行异或,基于异或结果确定所述两个乘数的乘积结果与所述加数的计算方式;比较乘积结果的阶码与加数的阶码大小;在确定乘积结果与所述加数的计算方式为相加且乘积结果的阶码大的情况下,根据加数与乘积结果的阶码差对加数的尾数进行相应的右移,得到调整后加数的尾数;将调整后的加数的尾数与乘积结果的尾数相加,得到相加结果的尾数,以乘积结果的阶码为相加结果的阶码得到相加结果,对相加结果进行截取得到临时乘加结果,对临时乘加结果进行舍入得到最终乘加结果,所述最终乘加结果的符号与加数的符号一致。7.根据权利要求6所述的算术逻辑单元,其特征在于,所述浮点数控制电路,还用于在确定乘积结果与所述加数的计算方式为相加且乘积结果的阶码小的情况下,根据加数与乘积结果的阶码差对加数的尾数进行相应的左移,得到调整后加数的尾数;将调整后加数的尾数与乘积结果的尾数相加,对相加结果进行对应于所述左移的右移,得到相加结果的尾数,以加数的阶码为相加结果的阶码,得到相加结果,对相加结果进行截取得到临时乘加结果,对临时乘加结果进行舍入得到最终乘加结果,所述乘加结果的符号与加数的符号一致。8.根据权利要求7所述的算术逻辑单元, 其特征在于,所述浮点数控制电路,还用于在确定乘积结果与所述加数的计算方式为相减且乘积结果的阶码大的情况下,将乘积结果的阶码调整为所述加数的阶码,并对乘积结果的尾数进行左移,得到调整后的乘积结果;调整后的乘积结果与调整前的乘积结果数值不变;将调整后的乘积结果减去加数,得到相减结果,对相减结果进行截取得到临时乘加结果,对临时乘加结果进行舍入得到最终乘加结果,所述最终乘加结果的符号与加数的符号相反。9.根据权利要求8所述的算术逻辑单元,其特征在于,所述浮点数控制电路,还用于在确定乘积结果与所述加数的计算方式为相减且乘积结果的阶码小的情况下,将加数的阶码调整为所述乘积结果的阶码,并对加数的尾数进行左移,得到调整后的加数;调整后的加数与调整前的加数数值不变;将调整后的加数与乘积结果相减,得到相减结果;对相减结果进行截取得到临时乘加结果,对临时乘加结果进行舍入得到最终乘加结果,所述最终乘加结果的符号与加数的符号一致。10.根据权利要求4所述的算术逻辑单元,其特征在于,所述浮点数控制电路,还用于在将所述乘积结果与所述加数进行相加前,确定所述乘积结果阶码与所述加数的阶码的差值;在所述差值大于预设阈值,且所述乘积结果大的情况下,基于所述乘积结果确定最终乘加结果;在所述加数大的情况下,基于所述加数确定最终乘加结果。11.根据权利要求1所述的算术逻辑单元,其特征在于,所述浮点数控制电路,还用于在接收到待乘加计算的三个双精度浮点数后,确定所述三个双精度浮点数的合法性,在所述三个双精度浮点数均合法的情况下,对所述三个双精度浮点数进行处理和计算。
12.一种浮点数处理方法,其特征在于,应用于算术逻辑单元,所述算术逻辑单元包括特定乘加器以及浮点数控制电路;所述特定乘加器是对单精度浮点数乘加器改造得到的;所述特定乘加器的输入要求为:乘数的尾数位宽为不小于双精度浮点数尾数位宽的1/2,且不大于双精度浮点数尾数位宽的预定位宽;所述方法...

【专利技术属性】
技术研发人员:梁洪崑
申请(专利权)人:北京象帝先计算技术有限公司
类型:发明
国别省市:

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

1