一种浮点数平方根计算方法及浮点数计算模块与流程

    专利2026-07-27  17


    本技术涉及电子,尤其涉及一种浮点数平方根计算方法及浮点数计算模块。


    背景技术:

    1、浮点数平方根计算已经发展为一种处理器支持的基础运算。目前,在支持浮点数计算的处理器中都有着广泛的应用。例如,中央处理器(central processing unit,cpu)、图形处理器(graphics processing unit,gpu)、人工智能(artificial intelligence,ai)处理器等。浮点数平方根计算广泛地应用于数字信号处理,图形计算和高性能计算等多个领域。

    2、现有浮点数的平方根求解方法中,如巴比伦方法或者牛顿-拉夫森方法。利用平方根求解方程,以初始近似值作为输入,每次迭代计算后可以得到非精确的全位宽平方根值。通过多轮迭代获得满足高精度要求的全位宽的计算结果。现有浮点数平方根求解过程中,存在迭代次数较多,收敛速度较慢的缺陷。


    技术实现思路

    1、本技术提供一种浮点数平方根计算方法及浮点数计算模块,计算延迟较短,具有高吞吐率。

    2、第一方面,本技术提供一种浮点数平方根计算方法,可以由处理器、计算器、处理设备或者计算设备等执行或实施。下面以处理器执行本技术提供的浮点数平方根计算方法作为举例进行说明。处理器可以接收浮点数计算指令,该指令可以携带待计算浮点数(z)。处理器可以获取目标尾数(x),目标尾数(x)包括第一浮点数(w)的尾数,所述第一浮点数(w)为正常值化(normalized)的浮点数,且待计算浮点数的数值与第一浮点数(w)的数值相同。待计算浮点数(z)的尾数和阶码可以与第一浮点数(w)的尾数和阶码不同或者相同,也即待计算浮点数(z)的表达格式与第一浮点数(w)的表达格式可以不同或者相同。一些应用场景中,处理器接收的待计算浮点数(z)的格式与第一浮点数(w)的格式不同,处理器可以将待计算浮点数(z)处理为第一浮点数(w),这个过程中不改变接收的浮点数的数值,仅改变待计算浮点数(z)的格式。所述目标尾数(x)与第一浮点数(w)的尾数的关系可以为:若所述第一浮点数(w)的阶码为偶数,所述目标尾数(x)与所述第一浮点数(w)的尾数相同;若所述第一浮点数(w)的阶码为奇数,所述目标尾数(x)为所述第一浮点数(w)的尾数的q倍,其中q为浮点数的基数,q为正数,且q为偶数。例如,通过对第一浮点数(w)的尾数进行左移一位可以得到目标尾数(x)。

    3、处理器可以根据所述目标尾数(x)的全部或部分位宽,确定所述目标尾数(x)的平方根的第一位宽部分(fu),所述第一位宽部分(fu)包含所述目标尾数(x)的平方根的最高位。处理器可以基于第一关系,所述第一位宽部分(fu)和所述目标尾数(x)的全部或部分位宽,计算所述目标尾数(x)的平方根的第二位宽部分(fl),其中,所述第一关系表征所述目标尾数(x)的平方根的第一位宽部分(fu)、所述目标尾数(x)以及所述目标尾数(x)的平方根的第二位宽部分(fl)之间的关系。处理器可以基于所述第一位宽部分(fu)和所述第二位宽部分(fl),确定所述目标尾数(x)的平方根,并将所述目标尾数(x)的平方根的小数部分确定为所述待计算浮点数(z)的平方根的尾数。例如目标尾数(x)的平方根的小数部分的最高位可以确定为浮点数(z)的平方根的尾数的整数部分,目标尾数(x)的平方根的小数部分除最高位之外的位宽确定为浮点数(z)的平方根的尾数的小数部分。

    4、本技术实施例中,处理器计算待计算浮点数(z)的平方根的尾数部分,也是计算第一浮点数(w)的平方根的尾数,并且可以通过确定目标尾数(x)的平方根实现。处理器可以分别确定目标尾数(x)的平方根的高位部分和低位部分,也即第一位宽部分(fu)和第二位宽部分(fl)。处理器可以利用确定出的第一位宽部分(fu)和第二位宽部分(fl),确定目标尾数(x)的平方根。可见处理器确定目标尾数(x)的平方根过程中不需要迭代,从而计算延迟较短,具有高吞吐率。可选的,处理器可以并行确定所述第一位宽部分(fu)和所述第二位宽部分(fl)。或者处理器可以串行确定所述第一位宽部分(fu)和所述第二位宽部分(fl)。例如,处理器确定第一位宽部分(fu)后,确定第二位宽部分(fl)。

    5、可以理解的是,本技术实施例中,浮点数的尾数的部分位宽包括多个位宽时,多个位宽是连续的。也即部分位宽也指部分连续位宽。浮点数的部分可以为浮点数的尾数的一部分,尾数的一部分包括多个位宽时,多个位宽是连续的。

    6、一种可能的实施方式中,所述第一关系符合如下关系:其中,x为所述目标尾数,fu为所述第一位宽部分,fl为所述第二位宽部分。本技术实施例中,处理器可以通过软件或者硬件方式,实现利用第一关系确定第二位宽部分(fl)的操作。本技术实施例对此不作过多限定。

    7、一种可能的实施方式中,所述第二位宽部分(fl)包含所述目标尾数(x)的平方根的部分位宽,且包含所述目标尾数(x)的平方根的最低位,其中,所述第一位宽部分(fu)的位宽长度与所述第二位宽部分(fl)的位宽长度的总和大于或等于所述目标尾数(x)的平方根的全位宽长度。

    8、本技术实施例中,第一位宽部分(fu)可指包含目标尾数(x)平方根的最高位的部分连续位宽。第二位宽部分(fl)可以指包含目标尾数(x)平方根的最低位的部分连续位宽。第一位宽部分的位宽(fu)与第二位宽部分(fl)的位宽的总和大于或等于目标尾数(x)平方根的全位宽。

    9、一种可能的实施方式中,本技术实施例提供的浮点数计算方法还包括:处理器根据所述目标尾数(x)的全部或部分位宽,确定所述目标尾数(x)的平方根的第一位宽部分(fu)时,可以基于目标第一查询参数(r1)、目标第二查询参数(r2),确定预设的第一多项式拟合方程的系数,其中,所述目标第一查询参数(r1)为所述第一浮点数(w)的尾数的第一部分,所述目标第二查询参数(r2)为所述第一浮点数(w)的阶码的部分位宽,且包括所述第一浮点数(w)的阶码的最低位宽。处理器可以根据所述第一多项式拟合方程的系数和所述第一浮点数(w)的尾数的第二部分,计算所述第一位宽部分(fu),所述第一浮点数(w)的尾数的第二部分对应的位宽与所述第一浮点数(w)的尾数的第一部分对应的位宽不重叠。

    10、本技术实施例中,处理器根据所述第一多项式拟合方程的系数和所述第一浮点数(w)的部分位宽确定所述第一位宽部分(fu)时,第一浮点数(w)的部分可以指第一浮点数(w)的部分位宽、部分位宽比特或者部分位宽数据。目标第一查询参数(r1)可以为第一浮点数(w)的尾数的第一部分。第一浮点数(w)的尾数的第二部分可以用于计算所述第一位宽部分(fu)。可选的,第一浮点数(w)的尾数的第二部分为第一浮点数(w)中除所述第一部分之外的部分位宽比特或者部分位宽数据。所述目标第二查询参数(r2)为所述第一浮点数(w)的阶码的部分位宽,所述第一浮点数(w)的阶码的部分位宽包括所述第一浮点数(w)的阶码的最低位宽,可见目标第二查询参数(r2)可以反映第一浮点数(w)的阶码的奇偶性。

    11、一些示例中,处理器基于目标第一查询参数(r1)、目标第二查询参数(r2),确定预设的第一多项式拟合方程的系数时,可以若所述目标第二查询参数(r2)为奇数,从第一奇数查找子表中查询所述目标第一查询参数(r1)对应的第一多项拟合方程的系数,其中所述第一奇数查找子表包括所述第一浮点数(w)的阶码为奇数情形下多个第一查询参数与第一多项式拟合方程的系数对应关系。若所述目标第二查询参数(r2)为偶数,从第一偶数查找子表中查询所述目标第一查询参数(r1)对应的第一多项式拟合方程的系数,其中所述第一偶数查找子表包括所述第一浮点数(w)的阶码为偶数情形下多个第一查询参数与第一多项式拟合方程的系数对应关系。可选的,处理器可以获取或者配置所述第一奇数查找子表和所述第一偶数查找子表。这样的设计中可以减少处理器的处理开销。

    12、另一些示例中,处理器可以获取或者配置第一多项式查找表,第一多项式查找表可以包括多个第一查询参数组合和多个第一拟合参数组合的对应关系。其中,一个第一查询参数组合可以作为一个索引。一个索引对应一个第一拟合参数组合,一个第一拟合参数组合包括一组第一多项式拟合方程的系数。处理器可以将目标第一查询参数(r1)和目标第二查询参数(r2)作为一个索引。从第一多项式系数查找表中,查找该索引对应的第一拟合参数组合。从而实现确定目标第一查询参数(r1)和目标第二查询参数(r2)对应的第一多项式拟合方程的系数。

    13、一种可能的实施方式中,处理器可以利用第一浮点数(w)计算第一位宽部分(fu)的倒数。例如采用牛顿-拉夫森方法、斯维尼-罗伯森-托切尔算法(srt算法)等计算第一位宽部分(fu)的倒数。为提升计算速度,减少计算开销,本技术还提供几种计算第一位宽部分(fu)的倒数的设计方案。

    14、一种可能的设计中,处理器可以基于目标第三查询参数(h1)、目标第四查询参数(h2),确定预设的第二多项式拟合方程的系数,其中,所述目标第三查询参数(h1)为所述第一浮点数(w)的尾数的第三部分,所述目标第四查询参数(h2)为所述第一浮点数(w)的阶码的部分位宽,且包括所述第一浮点数(w)的阶码的最低位宽。根据所述第二多项式拟合方程的系数和所述第一浮点数(w)的尾数的第四部分,确定所述第一位宽部分(fu)的倒数,所述第一浮点数(w)的尾数的第三部分对应的位宽与所述第一浮点数(w)的尾数的第四部分对应的位宽不重叠。本设计中,处理器可以并行计算所述第一位宽部分(fu)、所述第二位宽部分(fl)。处理器可以利用目标尾数(x)的平方根的倒数逼近所述第一位宽部分(fu)的倒数。

    15、一些示例中,处理器若所述目标第四查询参数(h2)为奇数,从第二奇数查找子表中查询所述目标第三查询参数(h1)对应的第二多项拟合方程的系数,其中所述第二奇数查找子表包括所述第一浮点数(w)的阶码为奇数情形下多个第三查询参数与第二多项式拟合方程的系数对应关系。处理器若所述目标第四查询参数(h2)为偶数,从第二偶数查找子表中查询所述目标第三查询参数(h1)对应的第二多项式拟合方程的系数,其中所述第二偶数查找子表包括所述第一浮点数(w)的阶码为偶数情形下多个第三查询参数与第二多项式拟合方程的系数对应关系。

    16、另一些示例中,处理器可以获取或者配置第二多项式查找表,第二多项式查找表可以包括多个第二查询参数组合和多个第二拟合参数组合的对应关系。其中,一个第二查询参数组合可以作为一个索引。一个索引对应一个第二拟合参数组合,一个第二拟合参数组合包括一组第二多项式拟合方程的系数。处理器可以将目标第三查询参数(h1)和目标第四查询参数(h2)作为一个索引。从第二多项式系数查找表中,查找该索引对应的第二拟合参数组合。从而实现确定目标第三查询参数(h1)和目标第四查询参数(h2)对应的第二多项式拟合方程的系数。

    17、另一种可能的设计中,处理器可以基于目标第五查询参数(g1),确定预设的第三多项式拟合方程的系数,其中,所述目标第五查询参数(g1)为所述第一位宽部分(fu)的第五部分。根据所述第三多项式拟合方程的系数和所述第一位宽部分(fu)的第六部分,确定所述第一位宽部分(fu)的倒数,所述第一位宽部分(fu)的第五部分对应的位宽与所述第一位宽部分(fu)的第六部分对应的位宽不重叠。

    18、示例性的,处理器可以获取或配置第三多项式查找表,第三多项式查找表可以包括多个第五查询参数和多个第三拟合参数组合的对应关系。处理器可以利用目标第五查询参数(g1)作为索引,在第三多项式查找表中,查找目标第五查询参数(g1)对应的第三拟合参数组合。从而实现确定目标第五查询参数(g1)对应的第三多项式拟合方程的系数。

    19、一种可能的实施方式中,处理器基于所述第一位宽部分(fu)和所述第二位宽部分(fl),确定所述目标尾数(x)的平方根时,处理器可以对所述第一位宽部分(fu)和所述第二位宽部分(fl)加和处理,将加和处理后的结果确定为所述目标尾数(x)的平方根。处理器可以将所述目标尾数(x)的平方根的小数部分确定为所述第一浮点数(w)平方根的尾数。

    20、一种可能的实施方式中,处理器基于所述第一位宽部分(fu)和所述第二位宽部分(fl),确定所述目标尾数(x)的平方根时,可以基于配置的舍入方式,确定目标尾数(x)的平方根。

    21、处理器可以根据所述第一位宽部分(fu)、所述第二位宽部分(fl),确定两个待选结果;基于所述第一位宽部分(fu)、所述第二位宽部分(fl)、以及所述目标尾数(x)的部分位宽,计算第一舍入判别参数(ie),其中,所述第一舍入判别参数(ie)表征第一数值与所述目标尾数(x)之间的偏差,所述第一数值为所述目标尾数(x)的平方根的平方;根据所述第一舍入判别参数(ie)与预设数值的比较结果,从所述两个待选结果中选择一个待选结果确定为所述目标尾数(x)的平方根。

    22、一种可能的设计中,处理器可以基于所述第一位宽部分(fu)和所述第二位宽部分(fl),确定第一舍入判别参数(ie),其中第一舍入判别参数(ie)可以采用如下公式计算,ie=fu2+fl2+2×fu×fl-x,其中,ie为所述第一舍入判别参数,fu为所述第一位宽部分,fl为所述第二位宽部分,x为所述目标尾数。

    23、在实际应用场景中,第一舍入判别参数(ie)可以是极小的正数或者极小的负数。处理器可以利用第一舍入判别参数(ie)的有效符号位以及有效符号位之后的所有位,进行待选结果选择。可选的,处理器可以利用(fu2+fl2+2×fu×fl)的低位部分与目标尾数(x)低位部分计算第一舍入判别参数(ie),可以减少电路开销,减小电路占片面积。

    24、一个示例中,处理器可以执行向正值舍入(round toward positive,rp)方式。处理器可以基于所述第一位宽部分(fu)和所述第二位宽部分(fl),确定第一舍入判别参数(ie),确定第一舍入判别参数(ie)。处理器可以基于所述第一位宽部分(fu)和所述第二位宽部分(fl),确定多个待选结果,多个待选结果可以包括第一待选结果f1和第二待选结果f2。其中,f1=fu+fl,f2=f1+ulp。ulp表征目标尾数(x)的平方根的全位宽中能够表达的最小的有效的数。处理器可以根据第一舍入判别参数(ie)与预设数值的比较结果,从多个待选结果中选择一个待选结果,并将选择的待选结果确定为目标尾数(x)的平方根。示例性的,预设数值可以配置为0。其中,处理器可以根据第一舍入判别参数(ie)大于或等于0,确定第一待选结果f1为目标尾数(x)的平方根。处理器可以根据第一舍入判别参数(ie)小于0,确定第二待选结果f2为目标尾数(x)的平方根。

    25、另一个示例中,处理器可以执行向零舍入(round toward zero,rz)方式。处理器可以基于所述第一位宽部分(fu)和所述第二位宽部分(fl),确定第一舍入判别参数(ie)。处理器可以基于所述第一位宽部分(fu)和所述第二位宽部分(fl),确定多个待选结果,多个待选结果可以包括第一待选结果f1和第三待选结果f3。其中,f1=fu+fl,f3=f1-ulp。ulp表征目标尾数(x)的平方根的全位宽中能够表达的最小的有效的数。处理器可以根据第一舍入判别参数(ie)与预设数值的比较结果,从多个待选结果中选择一个待选结果,并将选择的待选结果确定为目标尾数(x)的平方根。示例性的,预设数值可以配置为0。其中,处理器可以根据第一舍入判别参数(ie)小于或等于0,确定第一待选结果f1为目标尾数(x)的平方根。处理器可以根据第一舍入判别参数(ie)大于0,确定第三待选结果f3为目标尾数(x)的平方根。

    26、一种可能的设计中,处理器基于所述第一位宽部分(fu)和所述第二位宽部分(fl),确定所述目标尾数(x)的平方根时,可以根据所述第一位宽部分(fu)、所述第二位宽部分(fl),确定多个待选结果,所述多个待选结果包括第一待选结果、第二待选结果以及第三待选结果,其中,所述第二待选结果大于所述第一待选结果,所述第一待选结果大于所述第三待选结果;基于所述第一位宽部分(fu)、所述第二位宽部分(fl)、以及所述目标尾数(x)的部分位宽,计算第二舍入判别参数(ien),其中,所述第二舍入判别参数(ien)表征第一距离的平方与第二距离的平方之间的偏差,所述第一距离为所述第一待选结果与所述目标尾数(x)的平方根的实数之间的距离,所述第二距离表征所述目标尾数(x)的平方根的实数与所述第三待选结果之间的距离;基于所述第一位宽部分(fu)、所述第二位宽部分(fl)、以及所述目标尾数(x)的部分位宽,计算第三舍入判别参数(iep),其中,所述第三舍入判别参数(iep)表征第三距离的平方与第四距离的平方之间的偏差,所述第三距离为所述第二待选结果与所述目标尾数(x)的平方根的实数之间的距离,所述第四距离表征所述目标尾数(x)的平方根的实数与所述第一待选结果之间的距离;根据所述第二舍入判别参数(ien)与预设数值的比较结果,以及所述第三舍入判别参数(iep)与预设数值的比较结果,从所述多个待选结果中选择一个待选结果确定为所述目标尾数(x)的平方根。

    27、可选的,所述第二待选结果与所述第一待选结果的差值小于或等于一个最小精度单位。所述第一待选结果与所述第三待选结果的差值小于或等于一个最小精度单位。

    28、本技术实施例中,处理器可以执行舍入到最接近值(round half,rh)方式。可选的,第二舍入判别参数(ien)与第一舍入判别参数(ie)之间的关系可以用ien=ie-ulp×f1,其中ie=fu2+fl2+2×fu×fl-x。第三舍入判别参数(iep)与第一舍入判别参数(ie)之间的关系可以用iep=ie+ulp×f1,其中,ie=fu2+fl2+2×fu×fl-x。处理器在舍入到最接近值(rh)方式中,可以基于公式确定目标尾数(x)的平方根,其中else可指iep≥0的情形,或者ien<0的情形。

    29、可选的,处理器可以计算前述第一舍入判别参数(ie),并利用第一舍入判别参数(ie)计算第二舍入判别参数(ien)和第三舍入判别参数(iep),可以减少电路开销,优化电路占片面积。

    30、第二方面,本技术实施例还提供一种浮点数计算模块,可以用于浮点数计算场景中,例如计算浮点数平方根。本技术实施例提供的浮点数计算模块可以应用在处理器或者计算器中,实现处理器或者计算器执行浮点数计算的功能。所述浮点数计算模块用于接收浮点数计算指令,所述指令携带待计算浮点数(z);获取目标尾数(x),所述目标尾数(x)包括第一浮点数(w)的尾数,所述第一浮点数(w)为正常值化的浮点数,所述第一浮点数(w)的数值与所述待计算浮点数(z)的数值相同;所述浮点数计算模块包括:高位计算单元,用于根据所述目标尾数(x)的全部或部分位宽,确定所述目标尾数(x)的平方根的第一位宽部分(fu),所述第一位宽部分(fu)包含所述目标尾数(x)的平方根的最高位;低位计算单元,用于基于第一关系,所述第一位宽部分(fu)和所述目标尾数(x)的全部或部分位宽,计算所述目标尾数(x)的平方根的第二位宽部分(fl),其中,所述第一关系表征所述目标尾数(x)的平方根的第一位宽部分(fu)、所述目标尾数(x)以及所述目标尾数(x)的平方根的第二位宽部分(fl)之间的关系;精确舍入单元,用于基于所述第一位宽部分(fu)和所述第二位宽部分(fl),确定所述目标尾数(x)的平方根,并将所述目标尾数(x)的平方根的小数部分确定为所述待计算浮点数(z)的平方根的尾数。

    31、本技术实施例中,浮点数计算模块计算第一浮点数(w)的平方根的尾数,可以通过确定目标尾数(x)的平方根实现。浮点数计算模块可以分别确定目标尾数(x)的平方根的第一位宽部分(fu)和第二位宽部分(fl),利用确定出的第一位宽部分(fu)和第二位宽部分(fl),确定目标尾数(x)的平方根。可见浮点数计算模块确定目标尾数(x)的平方根过程中不需要迭代,从而计算延迟较短,具有高吞吐率。可选的,高位计算单元和低位计算单元可以并行工作,或者高位计算单元和低位计算单元之间串行工作。

    32、一种可能的实施方式中,若所述第一浮点数(w)的阶码为偶数,所述目标尾数(x)与所述第一浮点数(w)的尾数相同;若所述第一浮点数(w)的阶码为奇数,所述目标尾数(x)为所述第一浮点数(w)的尾数的q倍,其中q为浮点数的基数,q为正数,且q为偶数。

    33、一种可能的实施方式中,所述第一关系符合如下关系:其中,x为所述目标尾数,fu为所述第一位宽部分,fl为所述第二位宽部分。

    34、一种可能的实施方式中,所述第二位宽部分(fl)包含所述目标尾数(x)的平方根的部分位宽,且包含所述目标尾数(x)的平方根的最低位,其中,所述第一位宽部分(fu)的位宽长度与所述第二位宽部分(fl)的位宽长度的总和大于或等于所述目标尾数(x)的平方根的全位宽长度。

    35、一种可能的实施方式中,所述高位计算单元具体用于:基于目标第一查询参数(r1)、目标第二查询参数(r2),确定预设的第一多项式拟合方程的系数,其中,所述目标第一查询参数(r1)为所述第一浮点数(w)的尾数的第一部分,所述目标第二查询参数(r2)为所述第一浮点数(w)的阶码的部分位宽,且包括所述第一浮点数(w)的阶码的最低位宽;根据所述第一多项式拟合方程的系数和所述第一浮点数(w)的尾数的第二部分,计算所述第一位宽部分(fu),所述第一浮点数(w)的尾数的第二部分对应的位宽与所述第一浮点数(w)的尾数的第一部分对应的位宽不重叠。

    36、示例性的,所述高位计算单元可以包括第一查表电路、第一平方运算电路、第一多项式求和电路。第一查表电路可以与存储模块耦合。存储模块或者存储电路,用于存储第一奇数查找子表和第一偶数查找子表,其中所述第一奇数查找子表包括所述第一浮点数(w)的阶码为奇数情形下多个第一查询参数与第一多项式拟合方程的系数对应关系,所述第一偶数查找子表包括所述第一浮点数(w)的阶码为偶数情形下多个第一查询参数与第一多项式拟合方程的系数对应关系。

    37、第一查表电路可以在所述目标第二查询参数(r2)为奇数的情形下,从第一奇数查找子表中查询所述目标第一查询参数(r1)对应的第一多项拟合方程的系数。或者第一查表电路可以在所述目标第二查询参数(r2)为偶数的情形下,从第一偶数查找子表中查询所述目标第一查询参数(r1)对应的第一多项式拟合方程的系数。

    38、第一平方运算电路可以基于第一浮点数(w)的尾数的第二部分,确定第一浮点数(w)的尾数的第二部分的平方。第一多项式求和电路可以利用第一查表电路查询到的第一多项式拟合方程的系数、第一浮点数(w)的尾数的第二部分、第一浮点数(w)的尾数的第二部分的平方,计算目标尾数(x)的第一位宽部分(fu)。

    39、一种可能的实施方式中,低位计算单元可以利用第一浮点数(w)计算第一位宽部分(fu)的倒数。例如采用牛顿-拉夫森方法、斯维尼-罗伯森-托切尔算法(srt算法)等计算第一位宽部分(fu)的倒数。为提升计算速度,减少计算开销,本技术还提供几种计算第一位宽部分(fu)的倒数的设计方案。

    40、一种可能的设计中,低位计算单元可以包括第一高位倒数计算电路和低位运算电路。第一高位倒数计算电路可以基于目标第三查询参数(h1)、目标第四查询参数(h2),确定预设的第二多项式拟合方程的系数,其中,所述目标第三查询参数(h1)为所述第一浮点数(w)的尾数的第三部分,所述目标第四查询参数(h2)为所述第一浮点数(w)的阶码的部分位宽,且包括所述第一浮点数(w)的阶码的最低位宽。根据所述第二多项式拟合方程的系数和所述第一浮点数(w)的尾数的第四部分,确定所述第一位宽部分(fu)的倒数,所述第一浮点数(w)的尾数的第三部分对应的位宽与所述第一浮点数(w)的尾数的第四部分对应的位宽不重叠。本设计中,第一高位倒数计算电路可以并行计算所述第一位宽部分(fu)、所述第二位宽部分(fl)。第一高位倒数计算电路可以利用目标尾数(x)的平方根的倒数逼近所述第一位宽部分(fu)的倒数。低位运算电路用于利用所述第一位宽部分(fu)、所述第一位宽部分(fu)的倒数、所述目标尾数(x)之间的关系,确定所述第二位宽部分(fl)。

    41、本技术实施例中,低位计算单元计算第一位宽部分(fu)的倒数的过程可以与高位计算单元计算第一位宽部分(fu)的过程是并行的。实现高位计算单元和低位计算单元并行工作。

    42、一些示例中,第一高位倒数计算电路在所述目标第四查询参数(h2)为奇数的情形中,从第二奇数查找子表中查询所述目标第三查询参数(h1)对应的第二多项拟合方程的系数,其中所述第二奇数查找子表包括所述第一浮点数(w)的阶码为奇数情形下多个第三查询参数与第二多项式拟合方程的系数对应关系。第一高位倒数计算电路在所述目标第四查询参数(h2)为偶数的情形中,从第二偶数查找子表中查询所述目标第三查询参数(h1)对应的第二多项式拟合方程的系数,其中所述第二偶数查找子表包括所述第一浮点数(w)的阶码为偶数情形下多个第三查询参数与第二多项式拟合方程的系数对应关系。

    43、另一些示例中,第一高位倒数计算电路可以获取或者配置第二多项式查找表,第二多项式查找表可以包括多个第二查询参数组合和多个第二拟合参数组合的对应关系。其中,一个第二查询参数组合可以作为一个索引。一个索引对应一个第二拟合参数组合,一个第二拟合参数组合包括一组第二多项式拟合方程的系数。第一高位倒数计算电路可以将目标第三查询参数(h1)和目标第四查询参数(h2)作为一个索引。从第二多项式系数查找表中,查找该索引对应的第二拟合参数组合。从而实现确定目标第三查询参数(h1)和目标第四查询参数(h2)对应的第二多项式拟合方程的系数。

    44、可见,第一高位倒数计算电路的执行过程可以与高位计算单元并行的,从而低位计算单元可以与高位计算单元并行。

    45、一种可能的设计中,低位计算单元可以包括第二高位倒数计算电路和低位运算电路。第二高位倒数计算电路可以基于目标第五查询参数(g1),确定预设的第三多项式拟合方程的系数,其中,所述目标第五查询参数(g1)为所述第一位宽部分(fu)的第五部分。根据所述第三多项式拟合方程的系数和所述第一位宽部分(fu)的第六部分,确定所述第一位宽部分(fu)的倒数,所述第一位宽部分(fu)的第五部分对应的位宽与所述第一位宽部分(fu)的第六部分对应的位宽不重叠。低位运算电路用于利用所述第一位宽部分(fu)、所述第一位宽部分(fu)的倒数、所述目标尾数(x)之间的关系,确定所述第二位宽部分(fl)。

    46、示例性的,第二高位倒数计算电路可以获取或配置第三多项式查找表,第三多项式查找表可以包括多个第五查询参数和多个第三拟合参数组合的对应关系。处理器可以利用目标第五查询参数(g1)作为索引,在第三多项式查找表中,查找目标第五查询参数(g1)对应的第三拟合参数组合。从而实现第二高位倒数计算电路确定目标第五查询参数(g1)对应的第三多项式拟合方程的系数。

    47、可见,第二高位倒数计算电路与高位计算单元为串行关系,从而低位计算单元可以与高位计算单元串行。

    48、一种可能的实施方式中,精确舍入单元可以对所述第一位宽部分和所述第二位宽部分加和处理,所述加和处理的结果为所述目标尾数(x)的平方根。

    49、一种可能的实施方式中,精确舍入单元可以根据所述第一位宽部分(fu)、所述第二位宽部分(fl),确定两个待选结果;基于所述第一位宽部分(fu)、所述第二位宽部分(fl)、以及所述目标尾数(x)的部分位宽,计算第一舍入判别参数(ie),其中,所述第一舍入判别参数(ie)表征第一数值与所述目标尾数(x)之间的偏差,所述第一数值为所述目标尾数(x)的平方根的平方;根据所述第一舍入判别参数(ie)与预设数值的比较结果,从所述两个待选结果中选择一个待选结果确定为所述目标尾数(x)的平方根。

    50、一种可能的设计中,精确舍入单元可以基于所述第一位宽部分(fu)和所述第二位宽部分(fl),确定第一舍入判别参数(ie),其中第一舍入判别参数(ie)可以采用如下公式计算,ie=fu2+fl2+2×fu×fl-x,其中,ie为所述第一舍入判别参数,fu为所述第一位宽部分,fl为所述第二位宽部分,x为所述目标尾数。

    51、在实际应用场景中,第一舍入判别参数(ie)可以是极小的正数或者极小的负数。精确舍入单元可以利用第一舍入判别参数(ie)的有效符号位以及有效符号位之后的所有位,进行待选结果选择。可选的,精确舍入单元可以利用(fu2+fl2+2×fu×fl)的低位部分与目标尾数(x)低位部分计算第一舍入判别参数(ie),可以减少电路开销,减小电路占片面积。

    52、一个示例中,精确舍入单元可以执行向正值舍入(rp)方式。精确舍入单元可以基于所述第一位宽部分(fu)和所述第二位宽部分(fl),确定第一舍入判别参数(ie),确定第一舍入判别参数(ie)。精确舍入单元可以基于所述第一位宽部分(fu)和所述第二位宽部分(fl),确定多个待选结果,多个待选结果可以包括第一待选结果f1和第二待选结果f2。其中,f1=fu+fl,f2=f1+ulp。ulp表征目标尾数(x)的平方根的全位宽中能够表达的最小的有效的数。精确舍入单元可以根据第一舍入判别参数(ie)与预设数值的比较结果,从多个待选结果中选择一个待选结果,并将选择的待选结果确定为目标尾数(x)的平方根。示例性的,预设数值可以配置为0。其中,精确舍入单元可以根据第一舍入判别参数(ie)大于或等于0,确定第一待选结果f1为目标尾数(x)的平方根。精确舍入单元可以根据第一舍入判别参数(ie)小于0,确定第二待选结果f2为目标尾数(x)的平方根。

    53、另一个示例中,精确舍入单元可以执行向零舍入(rz)方式。精确舍入单元可以基于所述第一位宽部分(fu)和所述第二位宽部分(fl),确定第一舍入判别参数(ie)。精确舍入单元可以基于所述第一位宽部分(fu)和所述第二位宽部分(fl),确定多个待选结果,多个待选结果可以包括第一待选结果f1和第三待选结果f3。其中,f1=fu+fl,f3=f1-ulp。ulp表征目标尾数(x)的平方根的全位宽中能够表达的最小的有效的数。精确舍入单元可以根据第一舍入判别参数(ie)与预设数值的比较结果,从多个待选结果中选择一个待选结果,并将选择的待选结果确定为目标尾数(x)的平方根。示例性的,预设数值可以配置为0。其中,精确舍入单元可以根据第一舍入判别参数(ie)小于或等于0,确定第一待选结果f1为目标尾数(x)的平方根。精确舍入单元可以根据第一舍入判别参数(ie)大于0,确定第三待选结果f3。为目标尾数(x)的平方根。

    54、一种可能的设计中,精确舍入单元基于所述第一位宽部分(fu)和所述第二位宽部分(fl),确定所述目标尾数(x)的平方根时,可以根据所述第一位宽部分(fu)、所述第二位宽部分(fl),确定多个待选结果,所述多个待选结果包括第一待选结果、第二待选结果以及第三待选结果,其中,所述第二待选结果大于所述第一待选结果,所述第一待选结果大于所述第三待选结果;基于所述第一位宽部分(fu)、所述第二位宽部分(fl)、以及所述目标尾数(x)的部分位宽,计算第二舍入判别参数(ien),其中,所述第二舍入判别参数(ien)表征第一距离的平方与第二距离的平方之间的偏差,所述第一距离为所述第一待选结果与所述目标尾数(x)的平方根的实数之间的距离,所述第二距离表征所述目标尾数(x)的平方根的实数与所述第三待选结果之间的距离;基于所述第一位宽部分(fu)、所述第二位宽部分(fl)、以及所述目标尾数(x)的部分位宽,计算第三舍入判别参数(iep),其中,所述第三舍入判别参数(iep)表征第三距离的平方与第四距离的平方之间的偏差,所述第三距离为所述第二待选结果与所述目标尾数(x)的平方根的实数之间的距离,所述第四距离表征所述目标尾数(x)的平方根的实数与所述第一待选结果之间的距离;根据所述第二舍入判别参数(ien)与预设数值的比较结果,以及所述第三舍入判别参数(iep)与预设数值的比较结果,从所述多个待选结果中选择一个待选结果确定为所述目标尾数(x)的平方根。

    55、可选的,所述第二待选结果与所述第一待选结果的差值小于或等于一个最小精度单位。所述第一待选结果与所述第三待选结果的差值小于或等于一个最小精度单位。

    56、本技术实施例中,精确舍入单元可以执行舍入到最接近值(rh)方式。可选的,第二舍入判别参数(ien)与第一舍入判别参数(ie)之间的关系可以用ien=ie-ulp×f1,其中ie=fu2+fl2+2×fu×fl-x。第三舍入判别参数(iep)与第一舍入判别参数(ie)之间的关系可以用iep=ie+ulp×f1,其中,ie=fu2+fl2+2×fu×fl-x。精确舍入单元在舍入到最接近值(rh)方式中,可以基于公式确定目标尾数(x)的平方根,其中else可指iep≥0的情形,或者ien<0的情形。

    57、可选的,精确舍入单元可以计算前述第一舍入判别参数(ie),并利用第一舍入判别参数(ie)计算第二舍入判别参数(ien)和第三舍入判别参数(iep),可以减少电路开销,优化电路占片面积。

    58、一些应用场景中,精确舍入单元预先配置多种舍入方式。精确舍入单元可以获取舍入方式配置参数;按照所述舍入方式配置参数对应的舍入方式,所述第一位宽部分(fu)、所述第二位宽部分(fl),确定多个待选结果;以及按照所述舍入方式配置参数对应的舍入方式,基于所述第一位宽部分(fu)、所述第二位宽部分(fl)、以及所述目标尾数(x),计算舍入判别参数;并基于所述判舍入判别参数与预设数值的比较结果,从所述多个待选结果选择一个待选结果作为所述目标尾数(x)的平方根。本示例中,精确舍入单元可以执行前述实施例中提供的任意一种舍入方式,此处不再赘述。

    59、第三方面,本技术实施例还提供一种处理装置,可以包括第一寄存器、第二寄存器以及如第二方面及其任一设计中的浮点数计算模块。所述第一寄存器存储有待计算浮点数。所述浮点数计算模块用于从所述第一寄存器中获取所述待计算浮点数;以及计算所述待计算浮点数的平方根的尾数。所述第二寄存器用于存储所述待计算浮点数的平方根的尾数。

    60、一种可能的设计中,所述处理装置还包括第三寄存器;所述第三寄存器存储有舍入方式配置参数;所述浮点数计算模块,还用于获取所述舍入方式配置参数,执行所述舍入方式配置参数对应的舍入方式。

    61、可以理解的是,为了实现上述方法实施例中功能,处理器或者计算器包括了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本技术中所公开的实施例描述的各示例的模块及方法步骤,本技术能够以硬件或硬件和计算机软件相结合的形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用场景和设计约束条件。


    技术特征:

    1.一种浮点数平方根计算方法,应用于处理器或者计算器,其特征在于,包括:

    2.如权利要求1所述的方法,其特征在于,

    3.如权利要求1或2所述的方法,其特征在于,所述第一关系符合如下关系:

    4.如权利要求1-3任一所述的方法,其特征在于,所述第二位宽部分(fl)包含所述目标尾数(x)的平方根的部分位宽,且包含所述目标尾数(x)的平方根的最低位,其中,所述第一位宽部分(fu)的位宽长度与所述第二位宽部分(fl)的位宽长度的总和大于或等于所述目标尾数(x)的平方根的全位宽长度。

    5.如权利要求2-4任一所述的方法,其特征在于,所述根据所述目标尾数(x)的全部或部分位宽,确定所述目标尾数(x)的平方根的第一位宽部分(fu),包括:

    6.如权利要求5所述的方法,其特征在于,基于目标第一查询参数(r1)、目标第二查询参数(r2),确定预设的第一多项式拟合方程的系数,包括:

    7.如权利要求1-6任一所述的方法,其特征在于,所述基于所述第一位宽部分(fu)和所述第二位宽部分(fl),确定所述目标尾数(x)的平方根,包括:

    8.如权利要求7所述的方法,其特征在于,所述第一舍入判别参数(ie)采用如下公式计算:

    9.如权利要求1-7任一所述的方法,其特征在于,所述基于所述第一位宽部分(fu)和所述第二位宽部分(fl),确定所述目标尾数(x)的平方根,包括:

    10.如权利要求9所述的方法,其特征在于,所述第二待选结果与所述第一待选结果的差值小于或等于一个最小精度单位;所述第一待选结果与所述第三待选结果的差值小于或等于一个最小精度单位。

    11.如权利要求9或10所述的方法,其特征在于,所述第二舍入判别参数(ien)采用如下公式计算:

    12.如权利要求9-11任一所述的方法,其特征在于,所述第三舍入判别参数(iep)采用如下公式计算:

    13.如权利要求1-6任一所述的方法,其特征在于,所述基于所述第一位宽部分(fu)和所述第二位宽部分(fl),确定所述目标尾数(x)的平方根,包括:

    14.一种浮点数计算模块,其特征在于,所述浮点数计算模块用于接收浮点数计算指令,所述指令携带待计算浮点数(z);获取目标尾数(x),所述目标尾数(x)包括第一浮点数(w)的尾数,所述第一浮点数(w)为正常值化的浮点数,所述第一浮点数(w)的数值与所述待计算浮点数(z)的数值相同;

    15.如权利要求14所述的浮点数计算模块,其特征在于,

    16.如权利要求14或15所述的浮点数计算模块,其特征在于,所述第一关系符合如下关系:

    17.如权利要求14-16任一所述的浮点数计算模块,其特征在于,所述第二位宽部分(fl)包含所述目标尾数(x)的平方根的部分位宽,且包含所述目标尾数(x)的平方根的最低位,其中,所述第一位宽部分(fu)的位宽长度与所述第二位宽部分(fl)的位宽长度的总和大于或等于所述目标尾数(x)的平方根的全位宽长度。

    18.如权利要求15-17任一所述的浮点数计算模块,其特征在于,所述高位计算单元,具体用于:

    19.如权利要求18所述的浮点数计算模块,其特征在于,所述高位计算单元,具体用于:

    20.如权利要求14-19任一所述的浮点数计算模块,其特征在于,所述精确舍入单元,具体用于:

    21.如权利要求20所述的浮点数计算模块,其特征在于,所述第一舍入判别参数(ie)采用如下公式计算:

    22.如权利要求14-19任一所述的浮点数计算模块,其特征在于,所述精确舍入单元,具体用于:

    23.如权利要求22所述的浮点数计算模块,其特征在于,所述第二待选结果与所述第一待选结果的差值小于或等于一个最小精度单位;所述第一待选结果与所述第三待选结果的差值小于或等于一个最小精度单位。

    24.如权利要求22或23所述的浮点数计算模块,其特征在于,所述第二舍入判别参数(ien)采用如下公式计算:

    25.如权利要求22-24任一所述的浮点数计算模块,其特征在于,所述第三舍入判别参数(iep)采用如下公式计算:

    26.如权利要求14-25任一所述的浮点数计算模块,其特征在于,精确舍入单元,具体用于:

    27.如权利要求14-26任一所述的浮点数计算模块,其特征在于,所述精确舍入单元,具体用于:

    28.如权利要求14-27任一所述的浮点数计算模块,其特征在于,所述第一关系包括所述第一位宽部分(fu)的倒数;所述低位计算单元,还用于:

    29.如权利要求28所述的浮点数计算模块,其特征在于,所述低位计算单元,具体用于:

    30.如权利要求14-27任一所述的浮点数计算模块,其特征在于,所述第一关系包括所述第一位宽部分(fu)的倒数;所述低位计算单元,还用于:


    技术总结
    本申请实施例提供一种浮点数平方根计算方法及浮点数计算模块,计算延迟较短,具有高吞吐率,及对应提供优化的舍入方法,可以输出满足IEEE754标准舍入方式的精确结果。浮点数平方根计算方法中通过确定目标尾数的平方根,确定第一浮点数的平方根的尾数,其中,目标尾数包括第一浮点数的尾数,所述第一浮点数为正常值化(normalized)的浮点数。分别计算目标尾数的平方根的高位位宽部分和低位位宽部分,确定目标尾数的平方根,所述目标尾数的平方根的小数部分为第一浮点数的平方根的尾数,从而实现确定第一浮点数的平方根的尾数。

    技术研发人员:罗元勇,谷志岩,王建峰,龙子超
    受保护的技术使用者:华为技术有限公司
    技术研发日:
    技术公布日:2024/4/29
    转载请注明原文地址:https://wp.8miu.com/read-99822.html

    最新回复(0)