一种浮点数据处理方法、装置及存储介质制造方法及图纸

技术编号:30025648 阅读:66 留言:0更新日期:2021-09-11 06:56
本申请提出一种浮点数据处理方法及装置,方法包括:当浮点数据由除浮点运算部件和浮点寄存器堆部件之外的部件输入至浮点寄存器堆部件时,对所述浮点数据进行拆分处理以将所述浮点数据的格式由浮点原始格式转换为浮点内部格式;其中,浮点内部格式下浮点数据所指示的数值与浮点原始格式下浮点数据所指示的数值相等;利用浮点运算部件对浮点寄存器堆部件中格式为浮点内部格式的浮点数据进行浮点运算以得到运算结果,所述运算结果的格式为浮点内部格式,以及,所述浮点运算部件在对浮点数据进行运算时,所述浮点数据的格式均为浮点内部格式。本申请提供的方法效率较高、成本较低、复杂度较低、且可兼容多种浮点格式、处理效率也较高。也较高。也较高。

【技术实现步骤摘要】
一种浮点数据处理方法、装置及存储介质


[0001]本申请涉及计算机处理器领域,尤其涉及一种浮点数据处理方法及装置。

技术介绍

[0002]随着人工智能、物联网、区块链、数字信号处理等技术的发展,对处理器的计算能力的要求越来越高,在从移动设备、笔记本电脑、台式机到服务器的所有计算机系统中,浮点数的计算都是一个非常重要的组成部分。高性能处理器中通常会设置浮点运算部件以对浮点数进行浮点运算。其中,浮点数主要由符号位S、阶码Exp、以及尾数Mantissa三个部分组成,符号位用于表示浮点数的正负,阶码用于表示小数点在该数中的位置,它是一个带符号的整数,尾数用于表示数的有效数值。以及,浮点数据包括多种格式,例如包括IEEE 754标准数据格式、BF16数据格式(16位脑浮点,brain floating point)等。
[0003]其中,由于不同格式之间的浮点数据很难统一计算,因此现有的处理器通常在硬件上一般只支持一种特定的浮点数据格式。则当利用现有处理器处理不同格式的浮点数据时,处理效率较低,复杂度较高、耗时长。

技术实现思路

[0004]本申请提供一种浮点数据处理方法及浮点数据处理装置,以至少解决相关技术中的浮点数据处理效率低、耗时长、复杂度高的技术问题。
[0005]本申请第一方面实施例提出一种浮点数据处理方法,包括:当浮点数据由除浮点运算部件和浮点寄存器堆部件之外的部件输入至浮点寄存器堆部件时,对所述浮点数据进行拆分处理以将所述浮点数据的格式由浮点原始格式转换为浮点内部格式;其中,浮点内部格式下浮点数据所指示的数值与浮点原始格式下浮点数据所指示的数值相等;利用浮点运算部件对浮点寄存器堆部件中格式为浮点内部格式的浮点数据进行浮点运算以得到运算结果,所述运算结果的格式为浮点内部格式,以及,所述浮点运算部件在对浮点数据进行运算时,所述浮点数据的格式均为浮点内部格式;其中,当所述浮点原始格式为规格化数时,所述拆分处理包括:从所述浮点原始格式的浮点数据中拆分出符号位、阶码、和尾数,并对所述阶码增加一位数,且增加一位后的阶码与增加一位前的阶码所指示的数值相等,以及将所述阶码转换为原码。
[0006]本申请第二方面实施例提出一种浮点数据处理装置,包括:拆分模块,用于当将浮点数据由除浮点运算部件和浮点寄存器堆部件之外的部件输入至浮点寄存器堆部件时,对所述浮点数据进行拆分处理以将所述浮点数据的格式由浮点原始格式转换为浮点内部格式;其中,浮点内部格式下浮点数据所指示的数值与浮点原始格式下浮点数据所指示的数值相等;浮点寄存器堆部件,与所述拆分模块连接,用于存储浮点内部格式的浮点数据;浮点运算部件,与所述浮点寄存器堆部件连接,用于对浮点寄存器堆部件中存储
的浮点数据进行浮点运算以得到运算结果,并将运算结果输入至浮点寄存器堆部件中存储,其中,所述运算结果的格式为浮点内部格式,所述浮点运算部件在对浮点数据进行运算时,所述浮点数据的格式均为浮点内部格式;以及,当运算结果由浮点运算部件传输至浮点寄存器堆部件存储时,所述运算结果的格式不进行转换;其中,所述拆分模块用于:当所述浮点原始格式为规格化数时,从所述浮点原始格式的浮点数据中拆分出符号位、阶码、和尾数,并对所述阶码增加一位数,且增加一位后的阶码与增加一位前的阶码所指示的数值相等,以及将所述阶码转换为原码;以及,所述浮点寄存器堆部件还用于:利用不同域分别存储经所述拆分模块拆分得到的浮点数符号位、浮点数阶码原码、浮点数尾数原码。
[0007]本申请的实施例提供的技术方案至少带来以下有益效果:第一、本申请提供的兼容多种浮点数据格式的处理方法中,在将浮点数据由除浮点运算部件和浮点寄存器堆部件之外的部件输入至浮点寄存器堆部件之前,会将浮点数据拆分成浮点数符号位、浮点数阶码原码和浮点数尾数原码分别存储,以及在将浮点寄存器堆部件中的浮点数据输出至除浮点运算部件和浮点寄存器堆部件之外的部件时,将浮点数据的浮点数符号位、浮点数阶码原码、浮点数尾数原码进行合并,转换成目标浮点数据要求的格式。由此,使得浮点寄存器堆部件中的浮点数据以及浮点运算部件中的浮点数据的格式一直为浮点数符号位、浮点数阶码原码、浮点数尾数原码分开存储的格式,从而实现对于不同浮点数据格式在浮点运算部件中都可以统一处理,不需要在浮点运算部件中额外进行格式转换,从而可以提高浮点运算的效率。
[0008]第二、本申请中在将浮点原始格式的数据拆分为浮点数符号位、浮点数阶码原码、浮点数尾数原码以转换为浮点内部格式的数据,以及在将浮点内部格式的数据由浮点数符号位、浮点数阶码原码、浮点数尾数原码分开的格式合并为浮点原始格式的数据时,均不需要阻塞流水线,从而可以减少执行时间,且可以实现全流水处理,降低了控制复杂度,提高了浮点运算的效率。
[0009]第三、本申请中仅需在进出浮点寄存器堆部件的时候进行浮点数的格式拆分处理或合并处理,以及对于存在规格化数与非规格化数的浮点格式,仅需在进出浮点寄存器堆部件进行拆分处理或合并处理的同时进行规格化或非规格化,而由于浮点寄存器堆部件内部和浮点运算部件内部的浮点数据的格式一直为浮点数符号位、浮点数阶码原码和浮点数尾数原码分开,无需进行格式转换以及进行浮点数的符号位、阶码、尾数的拆分和合并,从而无需在各个浮点运算部件的出入端设置格式转换模块,而仅需在浮点寄存器堆的出入端设置拆分和合并模块即可,则提高了性能、减小了功耗和硬件面积,降低了实现资源和成本。
[0010]第四、本申请中支持浮点数据用不同的浮点格式(即浮点原始格式和浮点内部格式)存储,而且浮点原始格式也可以支持多种浮点格式,并且支持浮点运算部件运算前做拆分的浮点原始格式,与运算后合并成的浮点原始格式不是同一种浮点格式,从而在处理器中灵活实现对多种浮点数据格式的支持和处理。
[0011]第五、本申请提供的兼容多种浮点数据格式的处理方法中,对于存在规格化数和非规格化数的浮点格式,在将浮点数据由除浮点运算部件和浮点寄存器堆部件之外的部件输入至浮点寄存器堆部件之前进行拆分,浮点数据的符号位和尾数位的位数都不变,会将
浮点数据的阶码增加一位,其中浮点符号位不变,浮点阶码和尾数变为原码,以及在将浮点寄存器堆部件中的浮点数据输出至除浮点运算部件和浮点寄存器堆部件之外的部件时进行合并,合并后的浮点数据的符号位和尾数位的位数都不变,会将浮点数据的阶码去除一位,其中浮点符号位不变,浮点阶码和尾数从原码变为需要的浮点数据格式的阶码和尾数要求的格式,从而合并成需要格式的浮点数据。由于在拆分时浮点数据的阶码增加了一位,从而其所能指示的值的范围较大,则即使浮点运算部件基于浮点寄存器堆部件中的浮点数据符号位、阶码原码和尾数原码运算所得的运算结果数值较小,同样可以利用符号位、阶码原码和尾数原码分离的格式来表示该运算结果,无需再转换该运算结果的格式,从而可以提高浮点运算的效率。
[0012]本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
[0013]本申本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种浮点数据处理方法,其特征在于,包括:当浮点数据由除浮点运算部件和浮点寄存器堆部件之外的部件输入至浮点寄存器堆部件时,对所述浮点数据进行拆分处理以将所述浮点数据的格式由浮点原始格式转换为浮点内部格式;其中,浮点内部格式下浮点数据所指示的数值与浮点原始格式下浮点数据所指示的数值相等;利用浮点运算部件对浮点寄存器堆部件中格式为浮点内部格式的浮点数据进行浮点运算以得到运算结果,所述运算结果的格式为浮点内部格式,以及,所述浮点运算部件在对浮点数据进行运算时,所述浮点数据的格式均为浮点内部格式;其中,当所述浮点原始格式为规格化数时,所述拆分处理包括:从所述浮点原始格式的浮点数据中拆分出符号位、阶码、和尾数,并对所述阶码增加一位数,且增加一位后的阶码与增加一位前的阶码所指示的数值相等,以及将所述阶码转换为原码。2.根据权利要求1所述的浮点数据处理方法,所述浮点原始格式满足IEEE 754标准数据格式和BF16数据格式。3.根据权利要求2所述的浮点数据处理方法,其特征在于,当所述浮点原始格式为规格化数,所述拆分处理包括:从所述浮点原始格式的浮点数据中拆分出符号位、阶码、和尾数,以及,先对所述阶码增加一位数,且增加一位后的阶码对应的原码所指示的数值与增加一位前的阶码对应的原码所指示的数值相等,之后,再将增加一位后的阶码转换为原码。4.根据权利要求2所述的浮点数据处理方法,其特征在于,当所述浮点原始格式为规格化数时,所述拆分处理包括:从所述浮点原始格式的浮点数据中拆分出符号位、阶码、和尾数,以及,先将所述阶码转换为原码,再在原码格式下的阶码的最高位之前增加一位数,以将阶码原码转换为增加一位后的阶码原码,且增加一位前的阶码原码与增加一位后的阶码原码表示的数值相等。5.根据权利要求2所述的浮点数据处理方法,其特征在于,当所述浮点原始格式为非规格化数,所述拆分处理包括:对所述浮点原始格式的浮点数据进行规格化处理,从规格化处理后的浮点数据中拆分出符号位、阶码、和尾数,并将所述阶码转换为原码。6.根据权利要求5所述的浮点数据处理方法,其特征在于,所述规格化处理包括:将所述浮点原始格式的尾数用0进行第一预设位数的左移位,并将差值所对应的二进制数作为所述浮点内部格式下浮点数据的阶码,且所述浮点内部格式下浮点数据的阶码的位宽为浮点原始格式的浮点数据的阶码位宽加一;其中,所述差值由设定值与第一预设位数相减得出;所述第一预设位数为所述浮点原始格式的尾数从首位数的第一个1之前的零的个数加一;其中,所述设定值和所述第一预设位数均为十进制数,所述设定值的取值规则包括:当所述浮点数据为单精度时,所述设定值等于129;当所述浮点数据为双精度时,所述设定值等于1025;当所述浮点数据为半精度时,所述设定值等于17。7.根据权利要求2所述的浮点数据处理方法,其特征在于,所述方法还包括:浮点运算部件将运算结果传输至所述浮点寄存器堆部件中存储,所述运算结果的格式不进行转换;浮点寄存器堆部件输出所述运算结果至除所述浮点运算部件和浮点寄存器堆部件之外的部件时,对所述运算结果进行合并处理以将所述浮点内部格式转换为所述浮点原始格
式;其中,浮点原始格式下运算结果所指示的数值与浮点内部格式下运算结果所指示的数值相等。8.根据权利要求7所述的浮点数据处理方法,其特征在于,所述合并处理包括:将所述浮点内部格式的阶码去除一位,并将所述符号位、去除一位后的阶码、和尾数进行合并。9.根据权利要求8所述的浮点数据处理方法,其特征在于,所述合并处理包括:判断所述浮点内部格式下的运算结果的阶码是否落入从浮点原始格式的规格化数转换成浮点内部格式后,且位数比所述运算结果的阶码位数少一位的阶码所对应的范围内;当落入所述范围时,先将所述运算结果的阶码去除一位,且去除一位后的阶码所指示的数值与去除一位前的阶码所指示的数值相等,再将所述去除一位后的阶码转换为移码,之后,将浮点内部格式的运算结果的符号位、转换为移码之后的阶码、以及浮点内部格式的运算结果的尾数进行合并,将合并后的数据作为所述运算结果对应的浮点原始格式的浮点数据。10.根据权利要求8所述的浮点数据处理方法,其特征在于,所述合并处理包括:判断所述浮点内部格式下的运算结果的阶码是否落入从浮点原始格式的规格化数转换成浮点内部格式后,且位数比所述运算结果的阶码位数少一位的阶码所对应的范围内;当落入所述范围时,先将所述阶码转换为移码,再将转化为移码之后的阶码去除一位,且去除一位后的阶码对应的原码所指示的数值与去除一位前的阶码对应的原码所指示的数值相等,之后,将浮点内部格式的运算结果的符号位、去除一位后的阶码、以及浮点内部格式的运算结果的尾数进行合并,将合并后的数据作为所述运算结果对应的浮点原始格式的浮点数据。11.根据权利要求9所述的浮点数据处理方法,其特征在于,所述合并处理还包括:判断所述浮点内部格式下的运算结果的阶码是否落入从浮点原始格式的规格化数转换成浮点内部格式后,且位数比所述运算结果的阶码位数少一位的阶码所对应的范围内;当不落入所述范围时,将所述阶码变为全0并去除一位数以得到新的阶码,并对所述浮点内部格式的运算结果的尾数进行右移位转换,得到新的尾数;将浮点内部格式的运算结果的符号位、新的阶码、以及新的尾数进行合并,将合并后的数据作为所述运算结果对应的浮点原始格式的浮点数据。12.根据权利要求11所述的浮点数据处理方法,其特征在于,所述右移位转换包括:对所述尾数进行第二预设位数的右移位,其中,在进行右移位时先用一位1进行右移位之后全部用0进行右移位;所述第二预设位数=设定值

执行合并处理前浮点内部格式的运算结果的阶码的移码所对应的十进制数值;所述设定值的取值规则包括:当所述浮点数据为单精度时,所述设定值等于129;当所述浮点数据为双精度时,所述设定值等于1025;当所述浮点数据为半精度时,所述设定值等于17;所述第二预设位数和所述设定值为十进制数。13.一种浮点数据处理装置,其特征在于,包括:拆分模块,用于当将浮点数据由除浮点运算部件和浮点寄存器堆部件之外的部件输入至浮点寄存器堆部件时,对所述浮点数据进行拆分处理以将所述浮点数据的格式由浮点原始格式转换为浮点内部格式;其中,浮点内部格式下浮点数据所指示的数值与浮点原始格...

【专利技术属性】
技术研发人员:郇丹丹赵继业李祖松
申请(专利权)人:北京微核芯科技有限公司
类型:发明
国别省市:

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

1