System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及浮点乘加运算的,特别是涉及一种浮点乘加单元及其运算方法。
技术介绍
1、在浮点乘法器中,乘加操作是将运算a*c+b作为一个不可分割的独立运算,这种操作可以通过同时进行乘法和加法的对阶移位来实现;现有的乘加操作,为了减小延迟,往往将加数操作数b提前左移,并在对阶之后对加数或乘积进行移位操作,并在得到加法结果后,对加法结果进行规格化移位和输入,得到最终结果。
2、然而,在powerisa场景中,由于非规格化的结果需要进行规格化处理,当加数操作数b为大阶并且为非规格化数,最终的规格化操作会导致输出结果不再完全是加数的尾数,这是因为加数的左移会导致乘积的部分结果出现在高53位,即没有实现正确对阶操作,导致最后输出的乘加运算结果存在较大的误差。
技术实现思路
1、本专利技术要解决的技术问题是:提供一种浮点乘加单元及其运算方法,提高了乘加运算结果的准确性。
2、为了解决上述技术问题,本专利技术提供了一种浮点乘加单元的运算方法,包括:
3、获取所有操作数对应的指数,根据所述指数进行移位数计算,得到移位数,并基于所述移位数对加数操作数进行对齐移位处理,得到移位加数操作数,并将所述移位加数操作数作为第一部分积;
4、对两个乘法操作数进行布斯编码处理,得到多个部分积,并对所述多个部分积进行压缩处理,得到三个中间结果;
5、获取所述指数的数值关系,根据所述数值关系分别对所述三个中间结果进行数据处理,得到三个第二部分积,将所述第一部
6、根据所述第一部分积累计结果和所述第一部分积进位结果,得到第一前导零预测结果,将所述部分积累计结果和所述部分积进位结果进行相加处理,得到第一加法结果,根据所述第一前导零预测结果对所述第一加法结果进行规范化移位和舍入处理,得到第一乘加结果。
7、在一种可能的实现方式中,基于所述移位数对加数操作数进行对齐移位处理前,还包括:
8、对加数操作数进行预移位处理,得到预移位加数操作数;
9、其中,所述对加数操作数进行预移位处理,得到预移位加数操作数,具体包括:
10、对所述加数操作数的尾数预左移56位,得到第一预移位加数操作数;
11、对所述加数操作数的尾数预左移108位,得到第二预移位加数操作数。
12、进一步地,通过设置左移位数为56位和108位,相比现有仅预左移56位的情况,能在第一加数操作数为非规格化数的情况下,保证53位的尾数域中所有的非规格化尾数都要能够正常的对阶。
13、在一种可能的实现方式中,获取所有操作数对应的指数,根据所述指数进行移位数计算,得到移位数,具体包括:
14、获取第一乘法操作数的第一指数、第二乘法操作数的第二指数,以及第一加数操作数的第三指数;
15、获取预设第一移位数,计算所述第一指数、所述第二指数和所述预设第一移位数的第一指数和;
16、获取预设第二移位数,计算所述第一指数、所述第二指数和所述预设第二移位数的第二指数和;
17、获取所述第三指数与所述第一指数和以及所述第二指数和之间的第一关系,基于所述第一关系,确定移位数。
18、进一步地,基于操作数的指数进行移位数计算,可以根据数据的特性和指数的差异,灵活地调整移位数,以优化浮点乘法器的计算过程和结果,这样可以提高计算的效率和精度,并更好地适应不同指数范围内的数据处理需求。
19、在一种可能的实现方式中,获取所述第三指数与所述第一指数和以及所述第二指数和之间的第一关系,基于所述第一关系,确定移位数,具体包括:
20、获取所述第三指数与所述第一指数和以及所述第二指数和之间的第一关系;
21、当所述第一关系为所述第三指数小于所述第一指数和时,计算所述第一指数和与所述第三指数的第一差值,并将所述第一差值作为移位数;
22、当所述第一关系为所述第三指数大于所述第一指数和,且所述第三指数小于所述第二指数和时,计算所述第二指数和与所述第三指数的第二差值,并将所述第二差值作为移位数;
23、当所述第一关系为所述第三指数大于所述第二指数和时,设置移位数为0。
24、进一步地,根据第三指数与操作数指数之间的关系,灵活地选择合适的移位数,以优化计算的效果和精度,能更好地适应不同场景下操作数的数据特性。
25、在一种可能的实现方式中,获取所述指数的数值关系,根据所述数值关系分别对所述三个中间结果进行数据处理,得到三个第二部分积,具体包括:
26、获取所述指数的数值关系,其中,所述数值关系为所述第三指数与所述第一指数和以及所述第二指数和之间的第一关系;
27、当所述数值关系为所述第三指数小于所述第一指数和时,分别输出所述三个中间结果对应的正常位宽的部分积,得到三个第二部分积;
28、当所述数值关系为所述第三指数大于所述第一指数和,且所述第三指数小于所述第二指数和时,分别对所述三个中间结果进行右移处理,得到三个第二部分积;
29、当所述数值关系为所述第三指数大于所述第二指数和时,将所述三个中间结果转换为全0,得到三个第二部分积。
30、进一步地,通过获取指数间的数值关系,并在不同的数值关系下,可以针对性地对中间结果进行不同的处理,从而优化中间结果,得到符合实际需求的数据。
31、本专利技术还提供了一种浮点乘加单元的运算方法,包括:
32、获取所有操作数对应的指数,根据所述指数进行移位数计算,得到移位数,并基于所述移位数对加数操作数进行对齐移位处理,得到移位加数操作数;
33、对两个乘法操作数进行布斯编码处理,得到多个部分积,并对所述多个部分积进行压缩处理,得到三个中间结果;
34、将所述三个中间结果输入到第二压缩器中,以使所述第二压缩器输出第二部分积累计结果和第二部分积进位结果,将所述第二部分积累计结果和所述第二部分积进位结果输入到全加器中,得到第一乘积结果,获取所述指数的数值关系,根据所述数值关系,对所述第一乘积结果进行数据处理,得到第二乘积结果;
35、基于所述移位加数操作数和所述第二乘积结果,得到第二前导零预测结果,将所述第二乘积结果和所述移位加数操作数进行相加处理,得到第二加法结果,根据所述第二前导零预测结果对所述第二加法结果进行规范化移位和舍入处理,得到第二乘加结果。
36、进一步地,通过直接计算出第一乘积结果,基于指数的数值关系对第一乘积结果进行处理,能避免对中间结果的形式进行数据处理可能导致的没有进位情况,提高后续乘加运算的精度。
37、本专利技术还提供了一种浮点乘加单元,应用于如上述所述的浮点乘加单元的运算方法,包括:第一浮点乘法器、4-2进位保留加法器、第一数据选择器、第一浮点加法器、第一对阶器、第本文档来自技高网...
【技术保护点】
1.一种浮点乘加单元的运算方法,其特征在于,包括:
2.如权利要求1所述的一种浮点乘加单元的运算方法,其特征在于,基于所述移位数对加数操作数进行对齐移位处理前,还包括:
3.如权利要求1所述的一种浮点乘加单元的运算方法,其特征在于,获取所有操作数对应的指数,根据所述指数进行移位数计算,得到移位数,具体包括:
4.如权利要求3所述的一种浮点乘加单元的运算方法,其特征在于,获取所述第三指数与所述第一指数和以及所述第二指数和之间的第一关系,基于所述第一关系,确定移位数,具体包括:
5.如权利要求4所述的一种浮点乘加单元的运算方法,其特征在于,获取所述指数的数值关系,根据所述数值关系分别对所述三个中间结果进行数据处理,得到三个第二部分积,具体包括:
6.一种浮点乘加单元的运算方法,其特征在于,包括:
7.一种浮点乘加单元,其特征在于,包括:第一浮点乘法器、4-2进位保留加法器、第一数据选择器、第一浮点加法器、第一对阶器、第一前导零预测器和第一规范化移位器;
8.一种浮点乘加单元,其特征在于,包括:第二浮点
9.一种终端设备,其特征在于,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至6任意一项所述的浮点乘加单元的运算方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如权利要求1至6中任意一项所述的浮点乘加单元的运算方法。
...【技术特征摘要】
1.一种浮点乘加单元的运算方法,其特征在于,包括:
2.如权利要求1所述的一种浮点乘加单元的运算方法,其特征在于,基于所述移位数对加数操作数进行对齐移位处理前,还包括:
3.如权利要求1所述的一种浮点乘加单元的运算方法,其特征在于,获取所有操作数对应的指数,根据所述指数进行移位数计算,得到移位数,具体包括:
4.如权利要求3所述的一种浮点乘加单元的运算方法,其特征在于,获取所述第三指数与所述第一指数和以及所述第二指数和之间的第一关系,基于所述第一关系,确定移位数,具体包括:
5.如权利要求4所述的一种浮点乘加单元的运算方法,其特征在于,获取所述指数的数值关系,根据所述数值关系分别对所述三个中间结果进行数据处理,得到三个第二部分积,具体包括:
6.一种浮点乘加单元的运算方法,其特征在于,包括:
...
【专利技术属性】
技术研发人员:马思杰,刘洋,张稚,
申请(专利权)人:上海合芯数字科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。