支持包级运算的浮点乘加单元及其应用方法技术

技术编号:38994676 阅读:5 留言:0更新日期:2023-10-07 10:25
本发明专利技术公开了一种支持包级运算的浮点乘加单元及其应用方法,本发明专利技术的浮点乘加单元,包括数据预处理模块、尾数乘法模块、指数差值模块、加数对阶移位模块、加法模块、前导零计算模块、规格化移位模块、尾数舍入模块、指数调整模块以及输出处理模块,其中为了支持包级运算和多种精度数据格式,乘加单元在传统的双精度浮点乘加单元结构进行了修改,主要对尾数乘法模块、指数差值模块以及加法模块进行了修改。本发明专利技术旨在不影响人工智能算力的基础上,减缓因迭代计算导致的高精度浮点数的性能损失,能够以更低硬件开销实现对高性能计算和人工智能应用的支持,不需要编译器做更多的适配支持。持。持。

【技术实现步骤摘要】
支持包级运算的浮点乘加单元及其应用方法


[0001]本专利技术属于微处理器设计
,具体涉及一种支持包级运算的浮点乘加单元及其应用方法。

技术介绍

[0002]随着高性能计算与人工智能技术的不断融合,高性能计算系统的算力形态也发生了相应的改变。传统的高性能计算通常使用双精度浮点数进行计算,它可以提供更高的精度和更大的取值范围以避免计算过程中的累积误差。相比之下,人工智能算法具有良好的鲁棒性,往往可以采用低精度浮点计算以降低计算和存储开销。为同时满足高性能计算和人工智能负载的多元化算力需求,当前主流的高性能计算系统往往支持多种数据格式计算,比如双精度浮点(Double

Precision,DP,64位),单精度浮点(Single

Precision,SP,32位),半精度浮点(Half

Precision,HP,16位)和脑精度浮点(BrainFloat,BF16,16位)等多种数据格式。设计支持多精度浮点运算的功能单元是实现高性能计算系统多元化算力的有效手段。多精度浮点运算单元通常复用尾数乘法器以降低硬件开销,即将多个尺寸较小的适用于低精度计算的乘法器单元组织成乘法器阵列以实现高精度乘法运算。尾数乘法器的规模与数据位宽的平方成正比,比如支持64位双精度浮点计算的乘法器能够同时支持4个32位的单精度乘法或16个16位的半精度乘法。但是,在多精度浮点运算单元中,每种精度的性能与其位宽成反比,这意味着即使支持双精度浮点的乘法器规模减半,依然不会影响单精度和半精度浮点数的计算性能。在实际的高性能计算和人工智能融合型应用中,人工智能算法对算力的需求远大于高性能计算。通过缩减多精度浮点运算单元的尾数乘法器规模可以显著的降低硬件开销,但是又不会降低适用于人工智能的低精度浮点数的性能,能够在有限的面积约束下实现性能最大化。但是,缩减乘法器规模会降低高精度(双精度)浮点计算的性能。

技术实现思路

[0003]本专利技术要解决的技术问题:针对现有技术的上述问题,提供一种支持包级运算的浮点乘加单元及其应用方法,本专利技术旨在不影响人工智能算力的基础上,减缓因迭代计算导致的高精度浮点数的性能损失,能够以更低硬件开销实现对高性能计算和人工智能应用的支持,不需要编译器做更多的适配支持。
[0004]为了解决上述技术问题,本专利技术采用的技术方案为:
[0005]一种支持包级运算的浮点乘加单元,包括:
[0006]数据预处理模块,用于对输入的浮点操作数进行预处理,根据操作类型指定的数据格式,提取输入的浮点操作数的符号位,指数位域和尾数位域,并补上尾数的隐藏位,同时进行对输入数据进行异常检测;
[0007]尾数乘法模块,用于对补上隐藏位后得到的无符号尾数进行相乘得到乘法结果,所述尾数乘法模块为由2个支持单精度乘法的乘法器组成且采用迭代的方式实现的乘法器
阵列;
[0008]指数差值模块,用于在尾数乘法模块迭代计算的前后两拍需要对不同的操作数计算指数差值;
[0009]加数对阶移位模块,用于根据指数差值模块得到的指数差值对加数进行移位;
[0010]加法模块,用于将尾数乘法模块、加数对阶移位模块两则输出的结果执行支持包级运算的加法运算;
[0011]前导零计算模块,用于计算加法模块合并输出的尾数中前导零的个数,以用于控制后续的尾数规格化移位和指数调整;
[0012]规格化移位模块,用于对加法模块合并输出的尾数进行向左的逻辑移位,具体左移的数据量为前一步中计算得到的前导零个数;
[0013]尾数舍入模块,用于根据输出数据格式的尾数位宽,对移位后的尾数进行舍入得到最终的尾数;
[0014]指数调整模块,用于结合前导零的数量和尾数舍入的进位对指数进行调整,得到最终的指数;
[0015]输出处理模块,用于根据输出数据格式,将符号位,最终的尾数和最终的指数进行组合,形成最终输出结果,同时对输出数据进行异常检测。
[0016]可选地,所述由2个支持单精度乘法的乘法器组成且采用迭代的方式实现的乘法器阵列包括:两个数据选择模块、乘法器、4

2压缩树、进位寄存器以及和寄存器,所述乘法器包括乘法器1和乘法器0共两个尺寸为27
×
27的乘法器,两个乘法器和两个数据选择模块一一对应,所述数据选择模块用于选择乘数0和乘数1送入对应的一个乘法器,对于单精度计算,两个乘法器每个时钟周期完成2次乘法运算;对于双精度运算,则通过迭代的方式实现53
×
53的乘法;前一个时钟周期通过两个乘法器完成53
×
27运算,得到加法Sum和进位Carry结果,锁存到进位寄存器以及和寄存器;后一时钟周期完成53
×
26的计算并与前一时钟周期锁存的结果相加得到最终结果。
[0017]可选地,所述指数差值模块包括数据选择器、指数差计算模块和加数对阶移位模块,所述数据选择器用于选择加数1和乘积指数和作为指数差计算模块的一路输入,所述指数差计算模块的另一路输入为加数2,所述指数差计算模块与加数对阶移位模块的输入端相连;在进行双精度浮点运算时,采用迭代实现的方式,前后两个周期对指数的操作并不相同,第一个时钟周期完成加法,通过数据选择器选择加数1以通过指数差计算模块计算加数1和加数2两个加数的指数差值,后一个时钟周期与传统的乘加单元相同,通过数据选择器选择乘积指数和以通过指数差计算模块计算乘积和加数的指数差值,且前后两次计算需要通过数据选择器复用指数差计算模块;单精度浮点数计算时和双精度浮点数计算的后一个时钟周期的操作完全一致,数据选择器选择乘积指数和以通过指数差计算模块计算乘积和加数的指数差值。
[0018]可选地,所述加法模块包括:
[0019]数据选择器,用于在尾数乘法的和Sum、尾数乘法的进位Carry和对阶后的加数1中选择;
[0020]4‑
2压缩树,用于将输入压缩合并,其输入包括数据选择器的输出、对阶后的加数2以及第二选择器;
[0021]加法模块,用于将4

2压缩树的输出执行加法运算;
[0022]使能信号生成模块DP&Pack,用于生成双精度计算使能信号DP和包级运算使能信号Pack;
[0023]第一选择器,用于在包级运算使能信号Pack的控制下在加法模块的输出、对阶后的加数2两者中择一输出;
[0024]第二选择器,用于在双精度计算使能信号DP的控制下,将0和前一时钟周期锁存的对阶加数两者中择一输出到4

2压缩树;
[0025]寄存器站台,用于将第一选择器的输出寄存后输出,以及将前一时钟周期锁存的对阶加数输出到第二选择器;
[0026]对于单精度计算,所述加法模块的加法阶段的数据流和传统的浮点乘加单元完全相同,具体为将对阶后的加数、零输入、尾数乘法的和Sum与进位Carry通过4

2压缩树进行合并本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种支持包级运算的浮点乘加单元,其特征在于,包括:数据预处理模块,用于对输入的浮点操作数进行预处理,根据操作类型指定的数据格式,提取输入的浮点操作数的符号位,指数位域和尾数位域,并补上尾数的隐藏位,同时进行对输入数据进行异常检测;尾数乘法模块,用于对补上隐藏位后得到的无符号尾数进行相乘得到乘法结果,所述尾数乘法模块为由2个支持单精度乘法的乘法器组成且采用迭代的方式实现的乘法器阵列;指数差值模块,用于在尾数乘法模块迭代计算的前后两拍需要对不同的操作数计算指数差值;加数对阶移位模块,用于根据指数差值模块得到的指数差值对加数进行移位;加法模块,用于将尾数乘法模块、加数对阶移位模块两则输出的结果执行支持包级运算的加法运算;前导零计算模块,用于计算加法模块合并输出的尾数中前导零的个数,以用于控制后续的尾数规格化移位和指数调整;规格化移位模块,用于对加法模块合并输出的尾数进行向左的逻辑移位,具体左移的数据量为前一步中计算得到的前导零个数;尾数舍入模块,用于根据输出数据格式的尾数位宽,对移位后的尾数进行舍入得到最终的尾数;指数调整模块,用于结合前导零的数量和尾数舍入的进位对指数进行调整,得到最终的指数;输出处理模块,用于根据输出数据格式,将符号位,最终的尾数和最终的指数进行组合,形成最终输出结果,同时对输出数据进行异常检测。2.根据权利要求1所述的支持包级运算的浮点乘加单元,其特征在于,所述由2个支持单精度乘法的乘法器组成且采用迭代的方式实现的乘法器阵列包括:两个数据选择模块、乘法器、4

2压缩树、进位寄存器以及和寄存器,所述乘法器包括乘法器1和乘法器0共两个尺寸为27
×
27的乘法器,两个乘法器和两个数据选择模块一一对应,所述数据选择模块用于选择乘数0和乘数1送入对应的一个乘法器,对于单精度计算,两个乘法器每个时钟周期完成2次乘法运算;对于双精度运算,则通过迭代的方式实现53
×
53的乘法;前一个时钟周期通过两个乘法器完成53
×
27运算,得到加法Sum和进位Carry结果,锁存到进位寄存器以及和寄存器;后一时钟周期完成53
×
26的计算并与前一时钟周期锁存的结果相加得到最终结果。3.根据权利要求2所述的支持包级运算的浮点乘加单元,其特征在于,所述指数差值模块包括数据选择器、指数差计算模块和加数对阶移位模块,所述数据选择器用于选择加数1和乘积指数和作为指数差计算模块的一路输入,所述指数差计算模块的另一路输入为加数2,所述指数差计算模块与加数对阶移位模块的输入端相连;在进行双精度浮点运算时,采用迭代实现的方式,前后两个周期对指数的操作并不相同,第一个时钟周期完成加法,通过数据选择器选择加数1以通过指数差计算模块计算加数1和加数2两个加数的指数差值,后一个时钟周期与传统的乘加单元相同,通过数据选择器选择乘积指数和以通过指数差计算模块计算乘积和加数的指数差值,且前后两次计算需要通过数据选择器复用指数差计算模
块;单精度浮点数计算时和双精度浮点数计算的后一...

【专利技术属性】
技术研发人员:黄立波谭弘兵王永文郭辉郑重雷国庆王俊辉郭维邓全隋兵才孙彩霞常俊胜沈俊忠
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:

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

1