CN117787297A - 一种浮点乘加单元及其运算方法 - Google Patents
一种浮点乘加单元及其运算方法 Download PDFInfo
- Publication number
- CN117787297A CN117787297A CN202311845640.8A CN202311845640A CN117787297A CN 117787297 A CN117787297 A CN 117787297A CN 202311845640 A CN202311845640 A CN 202311845640A CN 117787297 A CN117787297 A CN 117787297A
- Authority
- CN
- China
- Prior art keywords
- index
- result
- shift
- partial
- shifting
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 49
- 238000009825 accumulation Methods 0.000 claims abstract description 44
- 238000004364 calculation method Methods 0.000 claims abstract description 18
- 238000004590 computer program Methods 0.000 claims description 21
- 230000006835 compression Effects 0.000 claims description 12
- 238000007906 compression Methods 0.000 claims description 12
- 241001442055 Vipera berus Species 0.000 description 65
- 238000010586 diagram Methods 0.000 description 16
- 238000010606 normalization Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000010977 unit operation Methods 0.000 description 1
Landscapes
- Complex Calculations (AREA)
Abstract
本发明公开了一种浮点乘加单元及其运算方法,该运算方法基于所有操作数的指数进行移位数计算,并基于移位数对加数操作数进行对齐移位处理,得到移位加数操作数,作为第一部分积;对两个乘法操作数进行布斯编码处理后得到的多个部分积进行压缩处理,得到三个中间结果;根据指数的数值关系对三个中间结果进行数据处理,得到三个第二部分积,将第一部分积和三个第二部分积输入到第一压缩器中,根据第一压缩器输出的第一部分积累计结果和第一部分积进位结果,得到第一前导零预测结果和第一加法结果,根据第一前导零预测结果对第一加法结果进行规范化移位和舍入处理,得到第一乘加结果;与现有技术相比,本发明的技术方案能提高乘加运算结果的准确性。
Description
技术领域
本发明涉及浮点乘加运算的技术领域,特别是涉及一种浮点乘加单元及其运算方法。
背景技术
在浮点乘法器中,乘加操作是将运算A*C+B作为一个不可分割的独立运算,这种操作可以通过同时进行乘法和加法的对阶移位来实现;现有的乘加操作,为了减小延迟,往往将加数操作数B提前左移,并在对阶之后对加数或乘积进行移位操作,并在得到加法结果后,对加法结果进行规格化移位和输入,得到最终结果。
然而,在PowerISA场景中,由于非规格化的结果需要进行规格化处理,当加数操作数B为大阶并且为非规格化数,最终的规格化操作会导致输出结果不再完全是加数的尾数,这是因为加数的左移会导致乘积的部分结果出现在高53位,即没有实现正确对阶操作,导致最后输出的乘加运算结果存在较大的误差。
发明内容
本发明要解决的技术问题是:提供一种浮点乘加单元及其运算方法,提高了乘加运算结果的准确性。
为了解决上述技术问题,本发明提供了一种浮点乘加单元的运算方法,包括:
获取所有操作数对应的指数,根据所述指数进行移位数计算,得到移位数,并基于所述移位数对加数操作数进行对齐移位处理,得到移位加数操作数,并将所述移位加数操作数作为第一部分积;
对两个乘法操作数进行布斯编码处理,得到多个部分积,并对所述多个部分积进行压缩处理,得到三个中间结果;
获取所述指数的数值关系,根据所述数值关系分别对所述三个中间结果进行数据处理,得到三个第二部分积,将所述第一部分积和所述三个第二部分积输入到第一压缩器中,以使所述第一压缩器输出第一部分积累计结果和第一部分积进位结果;
根据所述第一部分积累计结果和所述第一部分积进位结果,得到第一前导零预测结果,将所述部分积累计结果和所述部分积进位结果进行相加处理,得到第一加法结果,根据所述第一前导零预测结果对所述第一加法结果进行规范化移位和舍入处理,得到第一乘加结果。
在一种可能的实现方式中,基于所述移位数对加数操作数进行对齐移位处理前,还包括:
对加数操作数进行预移位处理,得到预移位加数操作数;
其中,所述对加数操作数进行预移位处理,得到预移位加数操作数,具体包括:
对所述加数操作数的尾数预左移56位,得到第一预移位加数操作数;
对所述加数操作数的尾数预左移108位,得到第二预移位加数操作数。
进一步地,通过设置左移位数为56位和108位,相比现有仅预左移56位的情况,能在第一加数操作数为非规格化数的情况下,保证53位的尾数域中所有的非规格化尾数都要能够正常的对阶。
在一种可能的实现方式中,获取所有操作数对应的指数,根据所述指数进行移位数计算,得到移位数,具体包括:
获取第一乘法操作数的第一指数、第二乘法操作数的第二指数,以及第一加数操作数的第三指数;
获取预设第一移位数,计算所述第一指数、所述第二指数和所述预设第一移位数的第一指数和;
获取预设第二移位数,计算所述第一指数、所述第二指数和所述预设第二移位数的第二指数和;
获取所述第三指数与所述第一指数和以及所述第二指数和之间的第一关系,基于所述第一关系,确定移位数。
进一步地,基于操作数的指数进行移位数计算,可以根据数据的特性和指数的差异,灵活地调整移位数,以优化浮点乘法器的计算过程和结果,这样可以提高计算的效率和精度,并更好地适应不同指数范围内的数据处理需求。
在一种可能的实现方式中,获取所述第三指数与所述第一指数和以及所述第二指数和之间的第一关系,基于所述第一关系,确定移位数,具体包括:
获取所述第三指数与所述第一指数和以及所述第二指数和之间的第一关系;
当所述第一关系为所述第三指数小于所述第一指数和时,计算所述第一指数和与所述第三指数的第一差值,并将所述第一差值作为移位数;
当所述第一关系为所述第三指数大于所述第一指数和,且所述第三指数小于所述第二指数和时,计算所述第二指数和与所述第三指数的第二差值,并将所述第二差值作为移位数;
当所述第一关系为所述第三指数大于所述第二指数和时,设置移位数为0。
进一步地,根据第三指数与操作数指数之间的关系,灵活地选择合适的移位数,以优化计算的效果和精度,能更好地适应不同场景下操作数的数据特性。
在一种可能的实现方式中,获取所述指数的数值关系,根据所述数值关系分别对所述三个中间结果进行数据处理,得到三个第二部分积,具体包括:
获取所述指数的数值关系,其中,所述数值关系为所述第三指数与所述第一指数和以及所述第二指数和之间的第一关系;
当所述数值关系为所述第三指数小于所述第一指数和时,分别输出所述三个中间结果对应的正常位宽的部分积,得到三个第二部分积;
当所述数值关系为所述第三指数大于所述第一指数和,且所述第三指数小于所述第二指数和时,分别对所述三个中间结果进行右移处理,得到三个第二部分积;
当所述数值关系为所述第三指数大于所述第二指数和时,将所述三个中间结果转换为全0,得到三个第二部分积。
进一步地,通过获取指数间的数值关系,并在不同的数值关系下,可以针对性地对中间结果进行不同的处理,从而优化中间结果,得到符合实际需求的数据。
本发明还提供了一种浮点乘加单元的运算方法,包括:
获取所有操作数对应的指数,根据所述指数进行移位数计算,得到移位数,并基于所述移位数对加数操作数进行对齐移位处理,得到移位加数操作数;
对两个乘法操作数进行布斯编码处理,得到多个部分积,并对所述多个部分积进行压缩处理,得到三个中间结果;
将所述三个中间结果输入到第二压缩器中,以使所述第二压缩器输出第二部分积累计结果和第二部分积进位结果,将所述第二部分积累计结果和所述第二部分积进位结果输入到全加器中,得到第一乘积结果,获取所述指数的数值关系,根据所述数值关系,对所述第一乘积结果进行数据处理,得到第二乘积结果;
基于所述移位加数操作数和所述第二乘积结果,得到第二前导零预测结果,将所述第二乘积结果和所述移位加数操作数进行相加处理,得到第二加法结果,根据所述第二前导零预测结果对所述第二加法结果进行规范化移位和舍入处理,得到第二乘加结果。
进一步地,通过直接计算出第一乘积结果,基于指数的数值关系对第一乘积结果进行处理,能避免对中间结果的形式进行数据处理可能导致的没有进位情况,提高后续乘加运算的精度。
本发明还提供了一种浮点乘加单元,应用于如上述所述的浮点乘加单元的运算方法,包括:第一浮点乘法器、4-2进位保留加法器、第一数据选择器、第一浮点加法器、第一对阶器、第一前导零预测器和第一规范化移位器;
其中,所述第一浮点乘法器与所述第一数据选择器相连接,所述第一数据选择器和所述第一对阶器分别与所述4-2进位保留加法器相连接,所述4-2进位保留加法器分别与所述第一前导零预测器和所述第一浮点加法器相连接,所述第一前导零预测器和所述第一浮点加法器分别与所述第一规范化移位器相连接。
本发明还提供了一种浮点乘加单元,应用于如上述所述的浮点乘加单元的运算方法,包括:第二浮点乘法器、3-2进位保留加法器、全加器、第二数据选择器、第二浮点加法器、第二对阶器、第二前导零预测器和第二规范化移位器;
其中,所述第二浮点乘法器与所述3-2进位保留加法器相连接,所述3-2进位保留加法器与所述全加器相连接,所述全加器与所述第二数据选择器相连接,所述第二数据选择器分别与所述第二前导零预测器和所述第二浮点加法器相连接,所述第二对阶器分别与所述第二前导零预测器和所述第二浮点加法器相连接;所述第二前导零预测器和所述第二浮点加法器分别与所述第二规范化移位器相连接。
本发明还提供了一种终端设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如上述任意一项所述的浮点乘加单元的运算方法。
本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如上述任意一项所述的浮点乘加单元的运算方法。
本发明实施例一种浮点乘加单元及其运算方法,与现有技术相比,具有如下有益效果:
通过获取所有操作数对应的指数,根据所述指数进行移位数计算,得到移位数,并基于所述移位数对加数操作数进行对齐移位处理,得到移位加数操作数,并将所述移位加数操作数作为第一部分积;对两个乘法操作数进行布斯编码处理,得到多个部分积,并对所述多个部分积进行压缩处理,得到三个中间结果;获取所述指数的数值关系,根据所述数值关系分别对所述三个中间结果进行数据处理,得到三个第二部分积,将所述第一部分积和所述三个第二部分积输入到第一压缩器中,以使所述第一压缩器输出第一部分积累计结果和第一部分积进位结果;根据所述第一部分积累计结果和所述第一部分积进位结果,得到第一前导零预测结果,将所述部分积累计结果和所述部分积进位结果进行相加处理,得到第一加法结果,根据所述第一前导零预测结果对所述第一加法结果进行规范化移位和舍入处理,得到第一乘加结果。与现有技术相比,本发明的技术方案通过采用布斯编码算法、压缩算法以及对阶技术等,可以减少浮点乘加运算所需的处理时间,提高浮点数运算性能,且通过指数的数值关系的计算,对加数操作数和三个中间结果进行数据处理,可以将加数操作数和中间结果调整到正确的位置,确保计算的准确性和精度,避免出现结果错误的情况,增强了浮点数运算的稳定性和安全性。
附图说明
图1是本发明提供的一种浮点乘加单元的运算方法的一种实施例的流程示意图;
图2是本发明提供的一种浮点乘加单元的运算方法的又一种实施例的流程示意图;
图3是本发明提供的一种浮点乘加单元的一种实施例的结构示意图;
图4是本发明提供的一种浮点乘加单元的又一种实施例的结构示意图;
图5是本发明提供的一种实施例的两个乘法操作数的乘法运算示意图;
图6是本发明提供的一种实施例的第一加数操作数预左移56位的示意图;
图7是本发明提供的一种实施例的第一加数操作数预左移108位的示意图;
图8是本发明提供的一种实施例的中间结果生成示意图;
图9是本发明提供的一种浮点乘加单元的一种元器件连接关系示意图;
图10是本发明提供的一种浮点乘加单元的一种元器件连接关系示意图。
具体实施方式
下面将结合本发明中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1,参见图1,图1是本发明提供的一种浮点乘加单元的运算方法的一种实施例的流程示意图,如图1所示,该方法包括步骤101-步骤104,具体如下:
步骤101:获取所有操作数对应的指数,根据所述指数进行移位数计算,得到移位数,并基于所述移位数对加数操作数进行对齐移位处理,得到移位加数操作数,并将所述移位加数操作数作为第一部分积。
一实施例中,由于在运算形式为A*C+B浮点乘加运算中,乘法操作数和加法操作数需要满足阶码相同的条件,即指数相同的条件,才能进行计算,因此,如果两个操作数的阶码不相同,需要进行对阶移位操作,将它们的阶码调整为相同的值;对阶移位需要在乘法计算完成之后,来对加数操作数或者乘积操作数进行移位操作,但是为了减小延迟,可以将加数操作数提前左移。
一实施例中,对加数操作数进行预移位处理,得到预移位加数操作数。
具体的,对所述加数操作数的尾数预左移56位,得到第一预移位加数操作数;对所述加数操作数的尾数预左移108位,得到第二预移位加数操作数。
一实施例中,设置第一乘法操作数、第二乘法操作数和第一加法操作数均为双精度的浮点数,且对于双精度浮点数,其尾数位宽为53位。
一实施例中,将所述第一尾数和所述第二尾数进行乘法运算,得到第一乘积时,由于第一尾数和第二尾数的位宽均为53位,因此,乘法运算完成后,得到的第一乘积的位宽为106位;如图5所示,图5是两个乘法操作数的乘法运算示意图。
现有的对阶方式,将所述将第一加数操作数提前左移,此时,仅设置左移位数为56位,此时总位宽为161位,多出来的两位是为了不需要对阶时保证舍入正确而保留的冗余位;如图6所示,图6是第一加数操作数预左移56位的示意图,由于将第一加数操作数提前左移56位,即将第一加数操作数B的指数减去56,但因为第一加数操作数B指数可能小于56,产生负数的情况,所以也可进一步理解为:对第一乘法操作数A和第二乘法操作数C乘积的指数加上56,即expA+expC+56,视为将乘积右移56位。
基于现有的对阶方式,如果加数为大阶,则不需要对阶的过程,最终的结果舍入后为高53位,即加数的尾数,如果加数为小阶,则对尾数进行右移,移位数为expA+expC+56-expB,但是此方案存在缺陷,在某些场景中,如PowerISA场景中,非规格化的结果需要进行规格化,先将指数位加上固定值,然后将尾数左移,在现有的对阶方式中,如果加数为大阶,并且加数为非规格化数,在最终的规格化操作中,输出的结果不再全是加数的尾数,因为左移,乘积的部分结果也会出现在高53位,因为没有进行对阶,所以此时输出的结果是错误的。
基于现有对阶方式中存在的缺陷,本实施例中,将所述将第一加数操作数提前左移时,在保留现有中对第一加数操作数左移56位,得到第一预移位加数操作数的基础上,还新增了设置左移位数为108位,得到第二预移位加数操作数,此时总位宽为213位。
设置左移位数为108位,是由于在第一加数操作数为非规格化数的情况下,要保证在53位的尾数域中所有的非规格化尾数都要能够正常的对阶,因此,通过直接分析最极端的情况,即加数尾数为0.00…001的情况,1位于上图中的第53位,此时做完规格化和舍入之后,1后面还有52位数据,因此需要空余52位,剩下2位与原本方案相同,即保证舍入正确而保留的冗余位。
由于左移位数为108位,相比于原有的左移56位,多空余了52位,所以整体数据位宽变大了52位,因此,还对所述第一乘积进行数据处理,得到第二乘积。
一实施例中,在左移位数为108位时,还对所述第一尾数和所述第二尾数进行乘法运算得到的所述第一乘积进行数据处理,得到第二乘积,所述数据处理主要是将第一乘积的后52位直接舍弃按位或成1位X位,得到第二乘积,如图7所示,图7是第一加数操作数预左移108位的示意图。
此时需要将第一加数操作数B的指数减去56,但因为第一加数操作数B指数可能小于56,产生负数的情况,所以可以改为对第一乘法操作数A和第一乘法操作数C得到的第一乘积的指数加上56,即expA+expC+56,视为将乘积右移56位。
一实施例中,由于在对阶之后,如果加数操作数的指数比乘积操作数的指数小,则需要右移加数操作数完成对阶移位,如果加数操作数比乘积操作数的指数大,则不需要进行移位,因为预先左移了加数之后,相当于对阶移位时右移了乘积;因此,在对第一加数操作数进行左移后,还获取所有操作数对应的指数,根据所述指数进行移位数计算,得到移位数,基于移位数,实现加数操作数和乘积操作数的对阶移位。
一实施例中,获取第一乘法操作数的第一指数、第二乘法操作数的第二指数,以及第一加数操作数的第三指数;获取预设第一移位数,计算所述第一指数、所述第二指数和所述预设第一移位数的第一指数和;获取预设第二移位数,计算所述第一指数、所述第二指数和所述预设第二移位数的第二指数和;获取所述第三指数与所述第一指数和以及所述第二指数和之间的第一关系,基于所述第一关系,确定移位数。
具体的,所述预设的第一移位数为56,所述预设的第二移位数为108。
具体的,所述第一指数和为:expA+expC+56;所述第二指数和为:expA+expC+108。
一实施例中,当所述第一关系为所述第三指数小于所述第一指数和时,计算所述第一指数和与所述第三指数的第一差值,并将所述第一差值作为移位数。
具体的,当expA+expC+56>expB时,移位数为expA+expC+56-expB。
一实施例中,当所述第一关系为所述第三指数大于所述第一指数和,且所述第三指数小于所述第二指数和时,计算所述第二指数和与所述第三指数的第二差值,并将所述第二差值作为移位数。
具体的,当expA+expC+56<expB<expA+expC+108时,移位数为expA+expC+108-expB。
一实施例中,当所述第一关系为所述第三指数大于所述第二指数和时,设置移位数为0。
具体的,当expA+expC+108<expB时,移位数为0。
一实施例中,基于所述移位数对加数操作数进行对齐移位处理时,主要基于移位数对预移位加数操作数进行右移处理,得到移位加数操作数,并将所述移位加数操作数作为第一部分积。
步骤102:对两个乘法操作数进行布斯编码处理,得到多个部分积,并对所述多个部分积进行压缩处理,得到三个中间结果。
一实施例中,采用基4的布斯算法booth对两个乘法操作数进行布斯编码处理;具体的,对于双精度的浮点数,尾数位宽为53位,因此在进行布斯booth编码时,需要将53位的尾数分成27组,每组包含两个连续的二进制位和一个符号位,共计81位,然后,对于每一组二进制位,根据其取值,产生一个3位的部分积。因此,在booth编码后,会产生27个部分积,每个部分积有3位。
一实施例中,基于多个压缩器形成进位保留加法器树,其中,所述多个压缩器为4-2压缩器。
优选的,所述多个压缩器也可以为3-2压缩器。
一实施例中,基于所述进位保留加法器树对所述多个部分积进行压缩处理,得到三个中间结果。
步骤103:获取所述指数的数值关系,根据所述数值关系分别对所述三个中间结果进行数据处理,得到三个第二部分积,将所述第一部分积和所述三个第二部分积输入到第一压缩器中,以使所述第一压缩器输出第一部分积累计结果和第一部分积进位结果。
一实施例中,获取所述指数的数值关系,其中,所述数值关系为所述第三指数与所述第一指数和以及所述第二指数和之间的第一关系。
具体的,当所述第三指数与所述第一指数和以及所述第二指数和之间的第一关系为expA+expC+108<expB时,所述数值关系为所述第三指数大于所述第二指数和。
具体的,当所述第三指数与所述第一指数和以及所述第二指数和之间的第一关系为expA+expC+56>expB时,所述数值关系为第三指数小于所述第一指数和。
具体的,当所述第三指数与所述第一指数和以及所述第二指数和之间的第一关系为expA+expC+56<expB<expA+expC+108时,所述数值关系为所述第三指数大于所述第一指数和,且所述第三指数小于所述第二指数和。
一实施例中,当所述数值关系为所述第三指数小于所述第一指数和时,分别输出所述三个中间结果对应的正常位宽的部分积,得到三个第二部分积。
具体的,所述正常位宽是指106位的乘积位宽,高位补0,补充到161位,得到第二部分积。
一实施例中,当所述数值关系为所述第三指数大于所述第一指数和,且所述第三指数小于所述第二指数和时,分别对所述三个中间结果进行右移处理,得到三个第二部分积。
具体的,对所述三个中间结果进行右移处理时,主要是对三个中间结果进行右移52位,并将三个中间结果的后52位直接舍弃或按位或成1位X位。
一实施例中,当所述数值关系为所述第三指数大于所述第二指数和时,将所述三个中间结果转换为全0,得到三个第二部分积。
具体的,输出的三个第二部分积全为0。
一实施例中,将所述第一部分积和所述三个第二部分积输入到第一压缩器中,以使所述第一压缩器输出第一部分积累计结果和第一部分积进位结果,其中,所述第一压缩器为4-2压缩器。
具体的,把对阶完成的加数作为乘法器的一个部分积加入,与三个中间结果再经过一级4-2压缩器,得到计算进位保留格式的第一部分积累计结果Psum和第一部分积进位结果Pcarry;如图8所示,图8为中间结果生成示意图。
步骤104:根据所述第一部分积累计结果和所述第一部分积进位结果,得到第一前导零预测结果,将所述部分积累计结果和所述部分积进位结果进行相加处理,得到第一加法结果,根据所述第一前导零预测结果对所述第一加法结果进行规范化移位和舍入处理,得到第一乘加结果。
一实施例中,对第一部分积累计结果和第一部分积进位结果进行中前导零数量推测,并将推测出来的前导零数量,作为第一前导零预测结果。
一实施例中,基于浮点加法器对所述部分积累计结果和所述部分积进位结果进行相加出来,得到第一加法结果。
一实施例中,基于为第一前导零预测结果,对第一加法结果的小数点位置进行移位操作,移动的方向取决于前导零的数量,如果有多个前导零,则向左移动,如果没有前导零,则无需移动,移位后,最高位将成为1,而后面的位数则可能包含有效数字和/或0。
一实施例中,将经过移位处理后的第一加法结果进行舍入处理,得到第一乘加结果。
本实施例提供的一种浮点乘加单元的运算方法,通过在保留第一加数操作数的预左移位数为56位的基础上,新增了对第一加数操作数与预左移108位,并在设置预左移位数为108位时,新增了判断expA+expC+108大小的情况,并基于指数计算出来的移位数,对得到的三个中间结果采用对应的处理方式进行数据处理,能在第一加数操作数为非规格化数的情况下,要保证在53位的尾数域中所有的非规格化尾数都要能够正常的对阶,提高了乘加运算的准确性。
实施例2,参见图2,图2是本发明提供的一种浮点乘加单元的运算方法的又一种实施例的流程示意图,如图2所示,该方法包括步骤201-步骤204,具体如下:
步骤201:获取所有操作数对应的指数,根据所述指数进行移位数计算,得到移位数,并基于所述移位数对加数操作数进行对齐移位处理,得到移位加数操作数。
一实施例中,基于所述移位数对加数操作数进行对齐移位处理前,还包括:对加数操作数进行预移位处理,得到预移位加数操作数。
一实施例中,所述对加数操作数进行预移位处理,得到预移位加数操作数,具体包括:对所述加数操作数的尾数预左移56位,得到第一预移位加数操作数;对所述加数操作数的尾数预左移108位,得到第二预移位加数操作数。
一实施例中,获取所有操作数对应的指数,根据所述指数进行移位数计算,得到移位数,具体包括:获取第一乘法操作数的第一指数、第二乘法操作数的第二指数,以及第一加数操作数的第三指数;获取预设第一移位数,计算所述第一指数、所述第二指数和所述预设第一移位数的第一指数和;获取预设第二移位数,计算所述第一指数、所述第二指数和所述预设第二移位数的第二指数和;获取所述第三指数与所述第一指数和以及所述第二指数和之间的第一关系,基于所述第一关系,确定移位数。
一实施例中,获取所述第三指数与所述第一指数和以及所述第二指数和之间的第一关系,基于所述第一关系,确定移位数,具体包括:获取所述第三指数与所述第一指数和以及所述第二指数和之间的第一关系;当所述第一关系为所述第三指数小于所述第一指数和时,计算所述第一指数和与所述第三指数的第一差值,并将所述第一差值作为移位数;当所述第一关系为所述第三指数大于所述第一指数和,且所述第三指数小于所述第二指数和时,计算所述第二指数和与所述第三指数的第二差值,并将所述第二差值作为移位数;当所述第一关系为所述第三指数大于所述第二指数和时,设置移位数为0。
本实施例中的步骤201与实施例1中的步骤101相比,两者采用了相同的执行方式,因此,在此不再具体叙述。
步骤202:对两个乘法操作数进行布斯编码处理,得到多个部分积,并对所述多个部分积进行压缩处理,得到三个中间结果。
一实施例中,本实施例中的步骤202与实施例1中的步骤102相比,两者采用了相同的执行方式,因此,在此不再具体叙述。
步骤203:将所述三个中间结果输入到第二压缩器中,以使所述第二压缩器输出第二部分积累计结果和第二部分积进位结果,将所述第二部分积累计结果和所述第二部分积进位结果输入到全加器中,得到第一乘积结果,获取所述指数的数值关系,根据所述数值关系对所述第一乘积结果进行数据处理,得到第二乘积结果。
一实施例中,所述第二压缩器为3-2压缩器。
一实施例中,将经过进位保留加法器树得到的三个中间结果再经过一级3-2压缩器,得到计算进位保留格式的第二部分积累计结果Psum和第二部分积进位结果Pcarry。
一实施例中,基于全加器直接对所述第二部分积累计结果和所述第二部分积进位结果进行相加处理,得到第一乘积结果。
一实施例中,获取所述指数的数值关系,其中,所述数值关系为所述第三指数与所述第一指数和以及所述第二指数和之间的第一关系。
具体的,当所述第三指数与所述第一指数和以及所述第二指数和之间的第一关系为expA+expC+108<expB时,所述数值关系为所述第三指数大于所述第二指数和。
具体的,当所述第三指数与所述第一指数和以及所述第二指数和之间的第一关系为expA+expC+56>expB时,所述数值关系为所述第三指数小于所述第一指数和。
具体的,当所述第三指数与所述第一指数和以及所述第二指数和之间的第一关系为expA+expC+56<expB<expA+expC+108时,所述数值关系为所述第三指数大于所述第一指数和,且所述第三指数小于所述第二指数和。
一实施例中,当所述数值关系为所述第三指数小于所述第一指数和时,输出所述第一乘积结果正常位宽的部分积,得到第二乘积结果。
具体的,所述正常位宽是指106位的乘积位宽,高位补0,补充到161位,得到第二乘积结果。
一实施例中,当所述数值关系为所述第三指数大于所述第一指数和,且所述第三指数小于所述第二指数和时,对所述第一乘积结果进行右移处理,得到第二乘积结果。
具体的,对所述第一乘积结果进行右移处理时,主要是对所述第一乘积结果进行右移52位,并将所述第一乘积结果的后52位直接舍弃或按位或成1位X位。
一实施例中,当所述数值关系为所述第三指数大于所述第二指数和时,将所述第一乘积结果转换为全0,得到第二乘积结果。
具体的,输出的所述第二乘积结果全为0。
步骤204:基于所述移位加数操作数和所述第二乘积结果,得到第二前导零预测结果,将所述第二乘积结果和所述移位加数操作数进行相加处理,得到第二加法结果,根据所述第二前导零预测结果对所述第二加法结果进行规范化移位和舍入处理,得到第二乘加结果。
一实施例中,基于移位加数操作数和第二乘积结果进行中前导零数量推测,并将推测出来的前导零数量,作为第二前导零预测结果。
一实施例中,基于浮点加法器对移位加数操作数和第二乘积结果进行相加出来,得到第二加法结果。
一实施例中,基于为第二前导零预测结果,对第二加法结果的小数点位置进行移位操作,移动的方向取决于前导零的数量,如果有多个前导零,则向左移动,如果没有前导零,则无需移动,移位后,最高位将成为1,而后面的位数则可能包含有效数字和/或0。
一实施例中,将经过移位处理后的第二加法结果进行舍入处理,得到第二乘加结果。
本实施例与实施例1的区别在于,不再将原本的加数作为乘法器的一个部分积,去计算中间结果,得到第一部分积累计结果Psum和第一部分积进位结果Pcarry,且不再基于指数的数值关系对所述三个中间结果进行数据处理,得到三个第二部分积;而是将4-2压缩器改为3-2压缩器,并通过全加器将得到的中间结果相加,即第二部分积累计结果Psum和第二部分积进位结果Pcarry相加,直接得到第一乘积结果,基于指数的数值关系直接对第一乘积结果进行处理,得到第二乘积结果。
这是由于,实施例1的技术方案中基于指数的数值关系对所述三个中间结果进行数据处理时,存在需要舍弃乘积的情况,且舍弃的乘积是按照部分积的时候就舍弃的,但如果把这些乘积加起来,则可能产生两位进位,对于大部分场景,这两位的进位并不影响最终结果,但是在特殊情况下,例如保留部分的乘积为全1,此时,这两位进位会导致全1,变为全0,并且往前进1,若在这种情况下没有进位,则会导致计算结果与实际的结果相差1,导致计算精度出错;基于此,本实施例中,直接计算出第一乘积结果,基于指数的数值关系对第一乘积结果进行截取处理,不再以中间结果的形式来做截取,能在各种情况下,提高后续乘加运算的精度。
实施例3,参见图3,图3是本发明提供的一种浮点乘加单元的一种实施例的结构示意图,如图3所示,该浮点乘加单元包括第一浮点乘法器301、4-2进位保留加法器302、第一数据选择器303、第一浮点加法器304、第一对阶器305、第一前导零预测器306和第一规范化移位器307,具体如下:
一实施例中,所述第一浮点乘法器301与所述第一数据选择器303相连接,所述第一数据选择器303和所述第一对阶器305分别与所述4-2进位保留加法器302相连接,所述4-2进位保留加法器302分别与所述第一前导零预测器306和所述第一浮点加法器304相连接,所述第一前导零预测器306和所述第一浮点加法器304分别与所述第一规范化移位器307相连接。
优选的,所述浮点乘加单元还包括第一粘滞位器308和第一舍入器309,其中,所述第一粘滞位器308和所述第一舍入器309相连接;所述第一规范化移位器307分别与所述第一粘滞位器308和第一舍入器309相连接。
如图9所示,图9是本实施例提供的一种浮点乘加单元的一种元器件连接关系示意图。
一实施例中,所述第一浮点乘法器301包括第一布斯编码器3011和第一进位保留加法器树器3012,其中,所述第一布斯编码器3011与所述第一进位保留加法器树器3012相连接。
一实施例中,所述第一浮点乘法器301通过所述第一进位保留加法器树器3012与所述第一数据选择器303相连接。
一实施例中,所述第一对阶器305包括第一移位数计算器3051和第一161对齐移位器3052,其中,所述第一移位数计算器3051与所述第一161对齐移位器3052相连接。
优选的,所述第一对阶器305还包括第一异或运算器3053和第一位反转器3054,其中,所述第一异或运算器3053和所述第一位反转器3054相连接,所述第一161对齐移位器3052与所述第一位反转器3054相连接。
优选的,所述第一对阶器305通过所述第一位反转器3054与所述4-2进位保留加法器302相连接。
一实施例中,所述第一数据选择器303的数量为3,其中,每个第一数据选择器303分别与所述4-2进位保留加法器302和所述第一浮点乘法器301相连接。
一实施例中,所述第一对阶器305,用于接收获取的所有操作数对应的指数,根据所述指数进行移位数计算,得到移位数,并基于所述移位数对加数操作数进行对齐移位处理,得到移位加数操作数,并将所述移位加数操作数作为第一部分积,并将所述第一部分积输入到所述4-2进位保留加法器302中。
具体的,所述第一移位数计算器3051,用于接收获取的所有操作数对应的指数,根据所述指数进行移位数计算,得到移位数,并将所述移位数输入到第一161对齐移位器3052中。
具体的,所述第一161对齐移位器3052,用于接收所述移位数,并基于所述移位数对加数操作数进行对齐移位处理,得到移位加数操作数,并将所述移位加数操作数作为第一部分积。
一实施例中,所述第一浮点乘法器301,用于接收两个乘法操作数,并对两个乘法操作数进行布斯编码处理,得到多个部分积,并对所述多个部分积进行压缩处理,得到三个中间结果,并将所述三个中间结果分别输入到对应的所述第一数据选择器303中。
具体的,所述第一布斯编码器3011,用于对两个乘法操作数进行布斯编码处理,得到多个部分积,并将所述多个部分积输入到所述第一进位保留加法器树器3012中。
具体的,所述第一进位保留加法器树器3012,用于接收所述多个部分积,并对所述多个部分积进行压缩处理,得到三个中间结果。
一实施例中,所述第一数据选择器303,用于接收所述三个中间结果,获取所述指数的数值关系,根据所述数值关系分别对所述三个中间结果进行数据处理,得到三个第二部分积,并将所述三个第二部分积输入到4-2进位保留加法器302。
一实施例中,所述4-2进位保留加法器302,用于接收所述三个中间结果和所述第一部分积,并对所述第一部分积和所述三个第二部分积进行压缩处理,得到第一部分积累计结果和第一部分积进位结果,并将所述第一部分积累计结果和所述第一部分积进位结果分别输入到所述第一前导零预测器306和所述第一浮点加法器304中。
一实施例中,所述第一前导零预测器306,用于接收所述第一部分积累计结果和所述第一部分积进位结果,根据所述第一部分积累计结果和所述第一部分积进位结果,得到第一前导零预测结果,并将所述第一前导零预测结果输入到所述第一规范化移位器307中。
一实施例中,所述第一浮点加法器304,用于接收所述第一部分积累计结果和所述第一部分积进位结果,将所述部分积累计结果和所述部分积进位结果进行相加处理,得到第一加法结果,并将所述第一加法结果输入到所述第一规范化移位器307中。
一实施例中,所述第一规范化移位器307,用于接收所述第一前导零预测结果和所述第一加法结果,并根据所述第一前导零预测结果对所述第一加法结果进行规范化移位处理,得到第一规范化移位乘加结果,并将所述第一规范化移位乘加结果输入到所述第一舍入器309中。
一实施例中,所述第一舍入器309,用于接收所述第一规范化移位乘加结果,并对所述第一规范化移位乘加结果进行舍入处理,得到第一乘加结果。
所属领域的技术人员可以清楚的了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例1中的对应过程,在此不再赘述。
实施例4,参见图4,图4是本发明提供的一种浮点乘加单元的一种实施例的结构示意图,如图4所示,该装置包括第二浮点乘法器401、3-2进位保留加法器402、全加器403、第二数据选择器404、第二浮点加法器405、第二对阶器406、第二前导零预测器407和第二规范化移位器408,具体如下:
其中,所述第二浮点乘法器404与所述3-2进位保留加法器402相连接,所述3-2进位保留加法器402与所述全加器403相连接,所述全加器403与所述第二数据选择器404相连接,所述第二数据选择器404分别与所述第二前导零预测器407和所述第二浮点加法器405相连接,所述第二对阶器406分别与所述第二前导零预测器407和所述第二浮点加法器405相连接;所述第二前导零预测器407和所述第二浮点加法器405分别与所述第二规范化移位器408相连接。
优选的,所述浮点乘加单元还包括第二粘滞位器409和第二舍入器410,其中,所述第二粘滞位器409和所述第二舍入器410相连接;所述第二规范化移位器408分别与所述第二粘滞位器409和第二舍入器410相连接。
如图10所示,图10是本实施例提供的一种浮点乘加单元的又一种元器件连接关系示意图。
一实施例中,所述第二浮点乘法器401包括第二布斯编码器4011和第二进位保留加法器树器4012,其中,所述第二布斯编码器4011与所述第二进位保留加法器树器4012相连接。
一实施例中,所述第二浮点乘法器401通过所述第二进位保留加法器树器4012与所述第二数据选择器403相连接。
一实施例中,所述第二对阶器406包括第二移位数计算器4061和第二161对齐移位器4062,其中,所述第二移位数计算器4061与所述第二161对齐移位器4062相连接。
优选的,所述第二对阶器406还包括第二异或运算器4063和第二位反转器4064,其中,所述第二异或运算器4063和所述第二位反转器4064相连接,所述第二161对齐移位器4062与所述第二位反转器4064相连接。
优选的,所述第二对阶器406通过所述第二位反转器4064与所述第二前导零预测器407和所述第二浮点加法器405相连接。
一实施例中,所述第二数据选择器303的数量为1。
一实施例中,所述第二对阶器406,用于接收获取的所有操作数对应的指数,根据所述指数进行移位数计算,得到移位数,并基于所述移位数对加数操作数进行对齐移位处理,得到移位加数操作数,并将所述第一部分积分别输入到所述第二前导零预测器407和所述第二浮点加法器405中。
具体的,所述第二移位数计算器4061,用于接收获取的所有操作数对应的指数,根据所述指数进行移位数计算,得到移位数,并将所述移位数输入到第二161对齐移位器4062中。
具体的,所述第二161对齐移位器4062,用于接收所述移位数,并基于所述移位数对加数操作数进行对齐移位处理,得到移位加数操作数。
一实施例中,所述第二浮点乘法器401,用于接收两个乘法操作数,对两个乘法操作数进行布斯编码处理,得到多个部分积,并对所述多个部分积进行压缩处理,得到三个中间结果,并将所述三个中间结果输入到所述3-2进位保留加法器402中。
具体的,所述第二布斯编码器4011,用于对两个乘法操作数进行布斯编码处理,得到多个部分积,并将所述多个部分积输入到所述第二进位保留加法器树器4012中。
具体的,所述第二进位保留加法器树器4012,用于接收所述多个部分积,并对所述多个部分积进行压缩处理,得到三个中间结果。
一实施例中,所述第二数据选择器402,用于接收所述三个中间结果,并对所述三个中间结果进行压缩处理,得到第二部分积累计结果和第二部分积进位结果,并将所述第二部分积累计结果和所述第二部分积进位结果输入到所述全加器403中。
一实施例中,所述全加器403,用于接收所述第二部分积累计结果和所述第二部分积进位结果,并对所述第二部分积累计结果和所述第二部分积进位结果进行相加处理,得到第一乘积结果,并将所述第一乘积结果输入到第二数据选择器404中。
一实施例中,所述第二数据选择器404,用于接收第一乘积结果,获取所述指数的数值关系,根据所述数值关系对所述第一乘积结果进行数据处理,得到第二乘积结果,并将所述第二乘积结果分别输到输入到所述第二前导零预测器407和所述第二浮点加法器405中。
一实施例中,所述第二前导零预测器407,用于接收所述第二乘积结果和所述移位加数操作数,基于所述移位加数操作数和所述第二乘积结果,得到第二前导零预测结果,并将所述第二前导零预测结果输入到第二规范化移位器408中。
一实施例中,所述第二浮点加法器405,用于接收所述第二乘积结果和所述移位加数操作数,将所述第二乘积结果和所述移位加数操作数进行相加处理,得到第二加法结果,并将所述第二加法结果输入到所述第二规范化移位器408中。
一实施例中,所述第二规范化移位器408,用于接收所述第二前导零预测结果和所述第二加法结果,根据所述第二前导零预测结果对所述第二加法结果进行规范化移位处理,得到第二规范化移位乘加结果,并将所述第二规范化移位乘加结果输入到所述第二舍入器410中。
一实施例中,所述第二舍入器410,用于接收所述第二规范化移位乘加结果,并对所述第二规范化移位乘加结果进行舍入处理,得到第二乘加结果。
所属领域的技术人员可以清楚的了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例2中的对应过程,在此不在再赘述。
在上述的浮点乘加单元的运算方法的实施例的基础上,本发明另一实施例提供了一种浮点乘加单元的运算终端设备,该浮点乘加单元的运算终端设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时,实现本发明任意一实施例的浮点乘加单元的运算方法。
示例性的,在这一实施例中所述计算机程序可以被分割成一个或多个器,所述一个或者多个器被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个器可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述浮点乘加单元的运算终端设备中的执行过程。
所述浮点乘加单元的运算终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述浮点乘加单元的运算终端设备可包括,但不仅限于,处理器、存储器。
所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述浮点乘加单元的运算终端设备的控制中心,利用各种接口和线路连接整个浮点乘加单元的运算终端设备的各个部分。
所述存储器可用于存储所述计算机程序和/或器,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或器,以及调用存储在存储器内的数据,实现所述浮点乘加单元的运算终端设备的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序等;存储数据区可存储根据手机的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
在上述浮点乘加单元的运算方法的实施例的基础上,本发明另一实施例提供了一种存储介质,所述存储介质包括存储的计算机程序,其中,在所述计算机程序运行时,控制所述存储介质所在的设备执行本发明任意一实施例的浮点乘加单元的运算方法。在这一实施例中,上述存储介质为计算机可读存储介质,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
综上,本发明提供的一种浮点乘加单元及其运算方法,该运算方法通过基于所有操作数的指数进行移位数计算,并基于移位数对加数操作数进行对齐移位处理,得到移位加数操作数,并将其作为第一部分积;对两个乘法操作数进行布斯编码处理后得到的多个部分积进行压缩处理,得到三个中间结果;获取所述指数的数值关系,根据所述数值关系对三个中间结果进行数据处理,得到三个第二部分积,将第一部分积和三个第二部分积输入到第一压缩器中,根据第一压缩器输出的第一部分积累计结果和第一部分积进位结果,得到第一前导零预测结果和第一加法结果,根据第一前导零预测结果对第一加法结果进行规范化移位和舍入处理,得到第一乘加结果;与现有技术相比,本发明的技术方案能提高乘加运算结果的准确性。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和替换,这些改进和替换也应视为本发明的保护范围。
Claims (10)
1.一种浮点乘加单元的运算方法,其特征在于,包括:
获取所有操作数对应的指数,根据所述指数进行移位数计算,得到移位数,并基于所述移位数对加数操作数进行对齐移位处理,得到移位加数操作数,并将所述移位加数操作数作为第一部分积;
对两个乘法操作数进行布斯编码处理,得到多个部分积,并对所述多个部分积进行压缩处理,得到三个中间结果;
获取所述指数的数值关系,根据所述数值关系分别对所述三个中间结果进行数据处理,得到三个第二部分积,将所述第一部分积和所述三个第二部分积输入到第一压缩器中,以使所述第一压缩器输出第一部分积累计结果和第一部分积进位结果;
根据所述第一部分积累计结果和所述第一部分积进位结果,得到第一前导零预测结果,将所述部分积累计结果和所述部分积进位结果进行相加处理,得到第一加法结果,根据所述第一前导零预测结果对所述第一加法结果进行规范化移位和舍入处理,得到第一乘加结果。
2.如权利要求1所述的一种浮点乘加单元的运算方法,其特征在于,基于所述移位数对加数操作数进行对齐移位处理前,还包括:
对加数操作数进行预移位处理,得到预移位加数操作数;
其中,所述对加数操作数进行预移位处理,得到预移位加数操作数,具体包括:
对所述加数操作数的尾数预左移56位,得到第一预移位加数操作数;
对所述加数操作数的尾数预左移108位,得到第二预移位加数操作数。
3.如权利要求1所述的一种浮点乘加单元的运算方法,其特征在于,获取所有操作数对应的指数,根据所述指数进行移位数计算,得到移位数,具体包括:
获取第一乘法操作数的第一指数、第二乘法操作数的第二指数,以及第一加数操作数的第三指数;
获取预设第一移位数,计算所述第一指数、所述第二指数和所述预设第一移位数的第一指数和;
获取预设第二移位数,计算所述第一指数、所述第二指数和所述预设第二移位数的第二指数和;
获取所述第三指数与所述第一指数和以及所述第二指数和之间的第一关系,基于所述第一关系,确定移位数。
4.如权利要求3所述的一种浮点乘加单元的运算方法,其特征在于,获取所述第三指数与所述第一指数和以及所述第二指数和之间的第一关系,基于所述第一关系,确定移位数,具体包括:
获取所述第三指数与所述第一指数和以及所述第二指数和之间的第一关系;
当所述第一关系为所述第三指数小于所述第一指数和时,计算所述第一指数和与所述第三指数的第一差值,并将所述第一差值作为移位数;
当所述第一关系为所述第三指数大于所述第一指数和,且所述第三指数小于所述第二指数和时,计算所述第二指数和与所述第三指数的第二差值,并将所述第二差值作为移位数;
当所述第一关系为所述第三指数大于所述第二指数和时,设置移位数为0。
5.如权利要求4所述的一种浮点乘加单元的运算方法,其特征在于,获取所述指数的数值关系,根据所述数值关系分别对所述三个中间结果进行数据处理,得到三个第二部分积,具体包括:
获取所述指数的数值关系,其中,所述数值关系为所述第三指数与所述第一指数和以及所述第二指数和之间的第一关系;
当所述数值关系为所述第三指数小于所述第一指数和时,分别输出所述三个中间结果对应的正常位宽的部分积,得到三个第二部分积;
当所述数值关系为所述第三指数大于所述第一指数和,且所述第三指数小于所述第二指数和时,分别对所述三个中间结果进行右移处理,得到三个第二部分积;
当所述数值关系为所述第三指数大于所述第二指数和时,将所述三个中间结果转换为全0,得到三个第二部分积。
6.一种浮点乘加单元的运算方法,其特征在于,包括:
获取所有操作数对应的指数,根据所述指数进行移位数计算,得到移位数,并基于所述移位数对加数操作数进行对齐移位处理,得到移位加数操作数;
对两个乘法操作数进行布斯编码处理,得到多个部分积,并对所述多个部分积进行压缩处理,得到三个中间结果;
将所述三个中间结果输入到第二压缩器中,以使所述第二压缩器输出第二部分积累计结果和第二部分积进位结果,将所述第二部分积累计结果和所述第二部分积进位结果输入到全加器中,得到第一乘积结果,并获取所述指数的数值关系,根据所述数值关系对所述第一乘积结果进行数据处理,得到第二乘积结果;
基于所述移位加数操作数和所述第二乘积结果,得到第二前导零预测结果,将所述第二乘积结果和所述移位加数操作数进行相加处理,得到第二加法结果,根据所述第二前导零预测结果对所述第二加法结果进行规范化移位和舍入处理,得到第二乘加结果。
7.一种浮点乘加单元,其特征在于,包括:第一浮点乘法器、4-2进位保留加法器、第一数据选择器、第一浮点加法器、第一对阶器、第一前导零预测器和第一规范化移位器;
其中,所述第一浮点乘法器与所述第一数据选择器相连接,所述第一数据选择器和所述第一对阶器分别与所述4-2进位保留加法器相连接,所述4-2进位保留加法器分别与所述第一前导零预测器和所述第一浮点加法器相连接,所述第一前导零预测器和所述第一浮点加法器分别与所述第一规范化移位器相连接。
8.一种浮点乘加单元,其特征在于,包括:第二浮点乘法器、3-2进位保留加法器、全加器、第二数据选择器、第二浮点加法器、第二对阶器、第二前导零预测器和第二规范化移位器;
其中,所述第二浮点乘法器与所述3-2进位保留加法器相连接,所述3-2进位保留加法器与所述全加器相连接,所述全加器与所述第二数据选择器相连接,所述第二数据选择器分别与所述第二前导零预测器和所述第二浮点加法器相连接,所述第二对阶器分别与所述第二前导零预测器和所述第二浮点加法器相连接;所述第二前导零预测器和所述第二浮点加法器分别与所述第二规范化移位器相连接。
9.一种终端设备,其特征在于,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至6任意一项所述的浮点乘加单元的运算方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如权利要求1至6中任意一项所述的浮点乘加单元的运算方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311845640.8A CN117787297A (zh) | 2023-12-28 | 2023-12-28 | 一种浮点乘加单元及其运算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311845640.8A CN117787297A (zh) | 2023-12-28 | 2023-12-28 | 一种浮点乘加单元及其运算方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117787297A true CN117787297A (zh) | 2024-03-29 |
Family
ID=90385409
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311845640.8A Pending CN117787297A (zh) | 2023-12-28 | 2023-12-28 | 一种浮点乘加单元及其运算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117787297A (zh) |
-
2023
- 2023-12-28 CN CN202311845640.8A patent/CN117787297A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105468331B (zh) | 独立的浮点转换单元 | |
CN102103479B (zh) | 浮点运算器及浮点运算的处理方法 | |
CN107305485B (zh) | 一种用于执行多个浮点数相加的装置及方法 | |
US8812575B2 (en) | Decimal floating-point square-root unit using Newton-Raphson iterations | |
US11294627B2 (en) | Floating point dot-product operator with correct rounding | |
CN106250098B (zh) | 用于在执行浮点运算时控制舍入的装置及方法 | |
US8751555B2 (en) | Rounding unit for decimal floating-point division | |
CN104899004A (zh) | 一种用于将浮点操作数相乘的数据处理装置和方法 | |
GB2421327A (en) | Calculating the number of digits in a quotient for integer division | |
US11550544B2 (en) | Fused Multiply-Add operator for mixed precision floating-point numbers with correct rounding | |
CN113625989B (zh) | 数据运算装置、方法、电子设备及存储介质 | |
CN108334304B (zh) | 数字递归除法 | |
US10459689B2 (en) | Calculation of a number of iterations | |
EP3977259A1 (en) | Multi-input floating-point adder | |
CN117787297A (zh) | 一种浮点乘加单元及其运算方法 | |
CN116974512A (zh) | 浮点运算装置、矢量处理装置、处理器及电子设备 | |
CN115544447A (zh) | 一种点积运算装置 | |
Lewis | Complex logarithmic number system arithmetic using high-radix redundant CORDIC algorithms | |
US20200133633A1 (en) | Arithmetic processing apparatus and controlling method therefor | |
CN112214196A (zh) | 浮点异常处理方法及装置 | |
CN113625990B (zh) | 浮点转定点装置、方法、电子设备及存储介质 | |
US20230289141A1 (en) | Operation unit, floating-point number calculation method and apparatus, chip, and computing device | |
TWI804043B (zh) | 多輸入多輸出的累加器及其執行方法 | |
KR20100071487A (ko) | 부동 소수점을 이용한 복소수 곱셈방법 | |
CN116521124A (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 |