CN117932200A - 一种浮点数平方根计算方法及浮点数计算模块 - Google Patents

一种浮点数平方根计算方法及浮点数计算模块 Download PDF

Info

Publication number
CN117932200A
CN117932200A CN202211250294.4A CN202211250294A CN117932200A CN 117932200 A CN117932200 A CN 117932200A CN 202211250294 A CN202211250294 A CN 202211250294A CN 117932200 A CN117932200 A CN 117932200A
Authority
CN
China
Prior art keywords
target
mantissa
bit
floating point
point number
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
Application number
CN202211250294.4A
Other languages
English (en)
Inventor
罗元勇
谷志岩
王建峰
龙子超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202211250294.4A priority Critical patent/CN117932200A/zh
Priority to PCT/CN2023/104073 priority patent/WO2024078033A1/zh
Publication of CN117932200A publication Critical patent/CN117932200A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/145Square transforms, e.g. Hadamard, Walsh, Haar, Hough, Slant transforms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

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

Description

一种浮点数平方根计算方法及浮点数计算模块
技术领域
本申请涉及电子技术领域,尤其涉及一种浮点数平方根计算方法及浮点数计算模块。
背景技术
浮点数平方根计算已经发展为一种处理器支持的基础运算。目前,在支持浮点数计算的处理器中都有着广泛的应用。例如,中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)、人工智能(artificial intelligence,AI)处理器等。浮点数平方根计算广泛地应用于数字信号处理,图形计算和高性能计算等多个领域。
现有浮点数的平方根求解方法中,如巴比伦方法或者牛顿-拉夫森方法。利用平方根求解方程,以初始近似值作为输入,每次迭代计算后可以得到非精确的全位宽平方根值。通过多轮迭代获得满足高精度要求的全位宽的计算结果。现有浮点数平方根求解过程中,存在迭代次数较多,收敛速度较慢的缺陷。
发明内容
本申请提供一种浮点数平方根计算方法及浮点数计算模块,计算延迟较短,具有高吞吐率。
第一方面,本申请提供一种浮点数平方根计算方法,可以由处理器、计算器、处理设备或者计算设备等执行或实施。下面以处理器执行本申请提供的浮点数平方根计算方法作为举例进行说明。处理器可以接收浮点数计算指令,该指令可以携带待计算浮点数(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)。
处理器可以根据所述目标尾数(X)的全部或部分位宽,确定所述目标尾数(X)的平方根的第一位宽部分(fu),所述第一位宽部分(fu)包含所述目标尾数(X)的平方根的最高位。处理器可以基于第一关系,所述第一位宽部分(fu)和所述目标尾数(X)的全部或部分位宽,计算所述目标尾数(X)的平方根的第二位宽部分(fl),其中,所述第一关系表征所述目标尾数(X)的平方根的第一位宽部分(fu)、所述目标尾数(X)以及所述目标尾数(X)的平方根的第二位宽部分(fl)之间的关系。处理器可以基于所述第一位宽部分(fu)和所述第二位宽部分(fl),确定所述目标尾数(X)的平方根,并将所述目标尾数(X)的平方根的小数部分确定为所述待计算浮点数(Z)的平方根的尾数。例如目标尾数(X)的平方根的小数部分的最高位可以确定为浮点数(Z)的平方根的尾数的整数部分,目标尾数(X)的平方根的小数部分除最高位之外的位宽确定为浮点数(Z)的平方根的尾数的小数部分。
本申请实施例中,处理器计算待计算浮点数(Z)的平方根的尾数部分,也是计算第一浮点数(W)的平方根的尾数,并且可以通过确定目标尾数(X)的平方根实现。处理器可以分别确定目标尾数(X)的平方根的高位部分和低位部分,也即第一位宽部分(fu)和第二位宽部分(fl)。处理器可以利用确定出的第一位宽部分(fu)和第二位宽部分(fl),确定目标尾数(X)的平方根。可见处理器确定目标尾数(X)的平方根过程中不需要迭代,从而计算延迟较短,具有高吞吐率。可选的,处理器可以并行确定所述第一位宽部分(fu)和所述第二位宽部分(fl)。或者处理器可以串行确定所述第一位宽部分(fu)和所述第二位宽部分(fl)。例如,处理器确定第一位宽部分(fu)后,确定第二位宽部分(fl)。
可以理解的是,本申请实施例中,浮点数的尾数的部分位宽包括多个位宽时,多个位宽是连续的。也即部分位宽也指部分连续位宽。浮点数的部分可以为浮点数的尾数的一部分,尾数的一部分包括多个位宽时,多个位宽是连续的。
一种可能的实施方式中,所述第一关系符合如下关系:其中,X为所述目标尾数,fu为所述第一位宽部分,fl为所述第二位宽部分。本申请实施例中,处理器可以通过软件或者硬件方式,实现利用第一关系确定第二位宽部分(fl)的操作。本申请实施例对此不作过多限定。
一种可能的实施方式中,所述第二位宽部分(fl)包含所述目标尾数(X)的平方根的部分位宽,且包含所述目标尾数(X)的平方根的最低位,其中,所述第一位宽部分(fu)的位宽长度与所述第二位宽部分(fl)的位宽长度的总和大于或等于所述目标尾数(X)的平方根的全位宽长度。
本申请实施例中,第一位宽部分(fu)可指包含目标尾数(X)平方根的最高位的部分连续位宽。第二位宽部分(fl)可以指包含目标尾数(X)平方根的最低位的部分连续位宽。第一位宽部分的位宽(fu)与第二位宽部分(fl)的位宽的总和大于或等于目标尾数(X)平方根的全位宽。
一种可能的实施方式中,本申请实施例提供的浮点数计算方法还包括:处理器根据所述目标尾数(X)的全部或部分位宽,确定所述目标尾数(X)的平方根的第一位宽部分(fu)时,可以基于目标第一查询参数(r1)、目标第二查询参数(r2),确定预设的第一多项式拟合方程的系数,其中,所述目标第一查询参数(r1)为所述第一浮点数(W)的尾数的第一部分,所述目标第二查询参数(r2)为所述第一浮点数(W)的阶码的部分位宽,且包括所述第一浮点数(W)的阶码的最低位宽。处理器可以根据所述第一多项式拟合方程的系数和所述第一浮点数(W)的尾数的第二部分,计算所述第一位宽部分(fu),所述第一浮点数(W)的尾数的第二部分对应的位宽与所述第一浮点数(W)的尾数的第一部分对应的位宽不重叠。
本申请实施例中,处理器根据所述第一多项式拟合方程的系数和所述第一浮点数(W)的部分位宽确定所述第一位宽部分(fu)时,第一浮点数(W)的部分可以指第一浮点数(W)的部分位宽、部分位宽比特或者部分位宽数据。目标第一查询参数(r1)可以为第一浮点数(W)的尾数的第一部分。第一浮点数(W)的尾数的第二部分可以用于计算所述第一位宽部分(fu)。可选的,第一浮点数(W)的尾数的第二部分为第一浮点数(W)中除所述第一部分之外的部分位宽比特或者部分位宽数据。所述目标第二查询参数(r2)为所述第一浮点数(W)的阶码的部分位宽,所述第一浮点数(W)的阶码的部分位宽包括所述第一浮点数(W)的阶码的最低位宽,可见目标第二查询参数(r2)可以反映第一浮点数(W)的阶码的奇偶性。
一些示例中,处理器基于目标第一查询参数(r1)、目标第二查询参数(r2),确定预设的第一多项式拟合方程的系数时,可以若所述目标第二查询参数(r2)为奇数,从第一奇数查找子表中查询所述目标第一查询参数(r1)对应的第一多项拟合方程的系数,其中所述第一奇数查找子表包括所述第一浮点数(W)的阶码为奇数情形下多个第一查询参数与第一多项式拟合方程的系数对应关系。若所述目标第二查询参数(r2)为偶数,从第一偶数查找子表中查询所述目标第一查询参数(r1)对应的第一多项式拟合方程的系数,其中所述第一偶数查找子表包括所述第一浮点数(W)的阶码为偶数情形下多个第一查询参数与第一多项式拟合方程的系数对应关系。可选的,处理器可以获取或者配置所述第一奇数查找子表和所述第一偶数查找子表。这样的设计中可以减少处理器的处理开销。
另一些示例中,处理器可以获取或者配置第一多项式查找表,第一多项式查找表可以包括多个第一查询参数组合和多个第一拟合参数组合的对应关系。其中,一个第一查询参数组合可以作为一个索引。一个索引对应一个第一拟合参数组合,一个第一拟合参数组合包括一组第一多项式拟合方程的系数。处理器可以将目标第一查询参数(r1)和目标第二查询参数(r2)作为一个索引。从第一多项式系数查找表中,查找该索引对应的第一拟合参数组合。从而实现确定目标第一查询参数(r1)和目标第二查询参数(r2)对应的第一多项式拟合方程的系数。
一种可能的实施方式中,处理器可以利用第一浮点数(W)计算第一位宽部分(fu)的倒数。例如采用牛顿-拉夫森方法、斯维尼-罗伯森-托切尔算法(SRT算法)等计算第一位宽部分(fu)的倒数。为提升计算速度,减少计算开销,本申请还提供几种计算第一位宽部分(fu)的倒数的设计方案。
一种可能的设计中,处理器可以基于目标第三查询参数(h1)、目标第四查询参数(h2),确定预设的第二多项式拟合方程的系数,其中,所述目标第三查询参数(h1)为所述第一浮点数(W)的尾数的第三部分,所述目标第四查询参数(h2)为所述第一浮点数(W)的阶码的部分位宽,且包括所述第一浮点数(W)的阶码的最低位宽。根据所述第二多项式拟合方程的系数和所述第一浮点数(W)的尾数的第四部分,确定所述第一位宽部分(fu)的倒数,所述第一浮点数(W)的尾数的第三部分对应的位宽与所述第一浮点数(W)的尾数的第四部分对应的位宽不重叠。本设计中,处理器可以并行计算所述第一位宽部分(fu)、所述第二位宽部分(fl)。处理器可以利用目标尾数(X)的平方根的倒数逼近所述第一位宽部分(fu)的倒数。
一些示例中,处理器若所述目标第四查询参数(h2)为奇数,从第二奇数查找子表中查询所述目标第三查询参数(h1)对应的第二多项拟合方程的系数,其中所述第二奇数查找子表包括所述第一浮点数(W)的阶码为奇数情形下多个第三查询参数与第二多项式拟合方程的系数对应关系。处理器若所述目标第四查询参数(h2)为偶数,从第二偶数查找子表中查询所述目标第三查询参数(h1)对应的第二多项式拟合方程的系数,其中所述第二偶数查找子表包括所述第一浮点数(W)的阶码为偶数情形下多个第三查询参数与第二多项式拟合方程的系数对应关系。
另一些示例中,处理器可以获取或者配置第二多项式查找表,第二多项式查找表可以包括多个第二查询参数组合和多个第二拟合参数组合的对应关系。其中,一个第二查询参数组合可以作为一个索引。一个索引对应一个第二拟合参数组合,一个第二拟合参数组合包括一组第二多项式拟合方程的系数。处理器可以将目标第三查询参数(h1)和目标第四查询参数(h2)作为一个索引。从第二多项式系数查找表中,查找该索引对应的第二拟合参数组合。从而实现确定目标第三查询参数(h1)和目标第四查询参数(h2)对应的第二多项式拟合方程的系数。
另一种可能的设计中,处理器可以基于目标第五查询参数(g1),确定预设的第三多项式拟合方程的系数,其中,所述目标第五查询参数(g1)为所述第一位宽部分(fu)的第五部分。根据所述第三多项式拟合方程的系数和所述第一位宽部分(fu)的第六部分,确定所述第一位宽部分(fu)的倒数,所述第一位宽部分(fu)的第五部分对应的位宽与所述第一位宽部分(fu)的第六部分对应的位宽不重叠。
示例性的,处理器可以获取或配置第三多项式查找表,第三多项式查找表可以包括多个第五查询参数和多个第三拟合参数组合的对应关系。处理器可以利用目标第五查询参数(g1)作为索引,在第三多项式查找表中,查找目标第五查询参数(g1)对应的第三拟合参数组合。从而实现确定目标第五查询参数(g1)对应的第三多项式拟合方程的系数。
一种可能的实施方式中,处理器基于所述第一位宽部分(fu)和所述第二位宽部分(fl),确定所述目标尾数(X)的平方根时,处理器可以对所述第一位宽部分(fu)和所述第二位宽部分(fl)加和处理,将加和处理后的结果确定为所述目标尾数(X)的平方根。处理器可以将所述目标尾数(X)的平方根的小数部分确定为所述第一浮点数(W)平方根的尾数。
一种可能的实施方式中,处理器基于所述第一位宽部分(fu)和所述第二位宽部分(fl),确定所述目标尾数(X)的平方根时,可以基于配置的舍入方式,确定目标尾数(X)的平方根。
处理器可以根据所述第一位宽部分(fu)、所述第二位宽部分(fl),确定两个待选结果;基于所述第一位宽部分(fu)、所述第二位宽部分(fl)、以及所述目标尾数(X)的部分位宽,计算第一舍入判别参数(ie),其中,所述第一舍入判别参数(ie)表征第一数值与所述目标尾数(X)之间的偏差,所述第一数值为所述目标尾数(X)的平方根的平方;根据所述第一舍入判别参数(ie)与预设数值的比较结果,从所述两个待选结果中选择一个待选结果确定为所述目标尾数(X)的平方根。
一种可能的设计中,处理器可以基于所述第一位宽部分(fu)和所述第二位宽部分(fl),确定第一舍入判别参数(ie),其中第一舍入判别参数(ie)可以采用如下公式计算,ie=fu 2+fl 2+2×fu×fl-X,其中,ie为所述第一舍入判别参数,fu为所述第一位宽部分,fl为所述第二位宽部分,X为所述目标尾数。
在实际应用场景中,第一舍入判别参数(ie)可以是极小的正数或者极小的负数。处理器可以利用第一舍入判别参数(ie)的有效符号位以及有效符号位之后的所有位,进行待选结果选择。可选的,处理器可以利用(fu 2+fl 2+2×fu×fl)的低位部分与目标尾数(X)低位部分计算第一舍入判别参数(ie),可以减少电路开销,减小电路占片面积。
一个示例中,处理器可以执行向正值舍入(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)的平方根。
另一个示例中,处理器可以执行向零舍入(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)的平方根。
一种可能的设计中,处理器基于所述第一位宽部分(fu)和所述第二位宽部分(fl),确定所述目标尾数(X)的平方根时,可以根据所述第一位宽部分(fu)、所述第二位宽部分(fl),确定多个待选结果,所述多个待选结果包括第一待选结果、第二待选结果以及第三待选结果,其中,所述第二待选结果大于所述第一待选结果,所述第一待选结果大于所述第三待选结果;基于所述第一位宽部分(fu)、所述第二位宽部分(fl)、以及所述目标尾数(X)的部分位宽,计算第二舍入判别参数(ien),其中,所述第二舍入判别参数(ien)表征第一距离的平方与第二距离的平方之间的偏差,所述第一距离为所述第一待选结果与所述目标尾数(X)的平方根的实数之间的距离,所述第二距离表征所述目标尾数(X)的平方根的实数与所述第三待选结果之间的距离;基于所述第一位宽部分(fu)、所述第二位宽部分(fl)、以及所述目标尾数(X)的部分位宽,计算第三舍入判别参数(iep),其中,所述第三舍入判别参数(iep)表征第三距离的平方与第四距离的平方之间的偏差,所述第三距离为所述第二待选结果与所述目标尾数(X)的平方根的实数之间的距离,所述第四距离表征所述目标尾数(X)的平方根的实数与所述第一待选结果之间的距离;根据所述第二舍入判别参数(ien)与预设数值的比较结果,以及所述第三舍入判别参数(iep)与预设数值的比较结果,从所述多个待选结果中选择一个待选结果确定为所述目标尾数(X)的平方根。
可选的,所述第二待选结果与所述第一待选结果的差值小于或等于一个最小精度单位。所述第一待选结果与所述第三待选结果的差值小于或等于一个最小精度单位。
本申请实施例中,处理器可以执行舍入到最接近值(round half,RH)方式。可选的,第二舍入判别参数(ien)与第一舍入判别参数(ie)之间的关系可以用ien=ie-ulp×f1,其中ie=fu 2+fl 2+2×fu×fl-X。第三舍入判别参数(iep)与第一舍入判别参数(ie)之间的关系可以用iep=ie+ulp×f1,其中,ie=fu 2+fl 2+2×fu×fl-X。处理器在舍入到最接近值(RH)方式中,可以基于公式确定目标尾数(X)的平方根,其中else可指iep≥0的情形,或者ien<0的情形。
可选的,处理器可以计算前述第一舍入判别参数(ie),并利用第一舍入判别参数(ie)计算第二舍入判别参数(ien)和第三舍入判别参数(iep),可以减少电路开销,优化电路占片面积。
第二方面,本申请实施例还提供一种浮点数计算模块,可以用于浮点数计算场景中,例如计算浮点数平方根。本申请实施例提供的浮点数计算模块可以应用在处理器或者计算器中,实现处理器或者计算器执行浮点数计算的功能。所述浮点数计算模块用于接收浮点数计算指令,所述指令携带待计算浮点数(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)的平方根的尾数。
本申请实施例中,浮点数计算模块计算第一浮点数(W)的平方根的尾数,可以通过确定目标尾数(X)的平方根实现。浮点数计算模块可以分别确定目标尾数(X)的平方根的第一位宽部分(fu)和第二位宽部分(fl),利用确定出的第一位宽部分(fu)和第二位宽部分(fl),确定目标尾数(X)的平方根。可见浮点数计算模块确定目标尾数(X)的平方根过程中不需要迭代,从而计算延迟较短,具有高吞吐率。可选的,高位计算单元和低位计算单元可以并行工作,或者高位计算单元和低位计算单元之间串行工作。
一种可能的实施方式中,若所述第一浮点数(W)的阶码为偶数,所述目标尾数(X)与所述第一浮点数(W)的尾数相同;若所述第一浮点数(W)的阶码为奇数,所述目标尾数(X)为所述第一浮点数(W)的尾数的Q倍,其中Q为浮点数的基数,Q为正数,且Q为偶数。
一种可能的实施方式中,所述第一关系符合如下关系:其中,X为所述目标尾数,fu为所述第一位宽部分,fl为所述第二位宽部分。
一种可能的实施方式中,所述第二位宽部分(fl)包含所述目标尾数(X)的平方根的部分位宽,且包含所述目标尾数(X)的平方根的最低位,其中,所述第一位宽部分(fu)的位宽长度与所述第二位宽部分(fl)的位宽长度的总和大于或等于所述目标尾数(X)的平方根的全位宽长度。
一种可能的实施方式中,所述高位计算单元具体用于:基于目标第一查询参数(r1)、目标第二查询参数(r2),确定预设的第一多项式拟合方程的系数,其中,所述目标第一查询参数(r1)为所述第一浮点数(W)的尾数的第一部分,所述目标第二查询参数(r2)为所述第一浮点数(W)的阶码的部分位宽,且包括所述第一浮点数(W)的阶码的最低位宽;根据所述第一多项式拟合方程的系数和所述第一浮点数(W)的尾数的第二部分,计算所述第一位宽部分(fu),所述第一浮点数(W)的尾数的第二部分对应的位宽与所述第一浮点数(W)的尾数的第一部分对应的位宽不重叠。
示例性的,所述高位计算单元可以包括第一查表电路、第一平方运算电路、第一多项式求和电路。第一查表电路可以与存储模块耦合。存储模块或者存储电路,用于存储第一奇数查找子表和第一偶数查找子表,其中所述第一奇数查找子表包括所述第一浮点数(W)的阶码为奇数情形下多个第一查询参数与第一多项式拟合方程的系数对应关系,所述第一偶数查找子表包括所述第一浮点数(W)的阶码为偶数情形下多个第一查询参数与第一多项式拟合方程的系数对应关系。
第一查表电路可以在所述目标第二查询参数(r2)为奇数的情形下,从第一奇数查找子表中查询所述目标第一查询参数(r1)对应的第一多项拟合方程的系数。或者第一查表电路可以在所述目标第二查询参数(r2)为偶数的情形下,从第一偶数查找子表中查询所述目标第一查询参数(r1)对应的第一多项式拟合方程的系数。
第一平方运算电路可以基于第一浮点数(W)的尾数的第二部分,确定第一浮点数(W)的尾数的第二部分的平方。第一多项式求和电路可以利用第一查表电路查询到的第一多项式拟合方程的系数、第一浮点数(W)的尾数的第二部分、第一浮点数(W)的尾数的第二部分的平方,计算目标尾数(X)的第一位宽部分(fu)。
一种可能的实施方式中,低位计算单元可以利用第一浮点数(W)计算第一位宽部分(fu)的倒数。例如采用牛顿-拉夫森方法、斯维尼-罗伯森-托切尔算法(SRT算法)等计算第一位宽部分(fu)的倒数。为提升计算速度,减少计算开销,本申请还提供几种计算第一位宽部分(fu)的倒数的设计方案。
一种可能的设计中,低位计算单元可以包括第一高位倒数计算电路和低位运算电路。第一高位倒数计算电路可以基于目标第三查询参数(h1)、目标第四查询参数(h2),确定预设的第二多项式拟合方程的系数,其中,所述目标第三查询参数(h1)为所述第一浮点数(W)的尾数的第三部分,所述目标第四查询参数(h2)为所述第一浮点数(W)的阶码的部分位宽,且包括所述第一浮点数(W)的阶码的最低位宽。根据所述第二多项式拟合方程的系数和所述第一浮点数(W)的尾数的第四部分,确定所述第一位宽部分(fu)的倒数,所述第一浮点数(W)的尾数的第三部分对应的位宽与所述第一浮点数(W)的尾数的第四部分对应的位宽不重叠。本设计中,第一高位倒数计算电路可以并行计算所述第一位宽部分(fu)、所述第二位宽部分(fl)。第一高位倒数计算电路可以利用目标尾数(X)的平方根的倒数逼近所述第一位宽部分(fu)的倒数。低位运算电路用于利用所述第一位宽部分(fu)、所述第一位宽部分(fu)的倒数、所述目标尾数(X)之间的关系,确定所述第二位宽部分(fl)。
本申请实施例中,低位计算单元计算第一位宽部分(fu)的倒数的过程可以与高位计算单元计算第一位宽部分(fu)的过程是并行的。实现高位计算单元和低位计算单元并行工作。
一些示例中,第一高位倒数计算电路在所述目标第四查询参数(h2)为奇数的情形中,从第二奇数查找子表中查询所述目标第三查询参数(h1)对应的第二多项拟合方程的系数,其中所述第二奇数查找子表包括所述第一浮点数(W)的阶码为奇数情形下多个第三查询参数与第二多项式拟合方程的系数对应关系。第一高位倒数计算电路在所述目标第四查询参数(h2)为偶数的情形中,从第二偶数查找子表中查询所述目标第三查询参数(h1)对应的第二多项式拟合方程的系数,其中所述第二偶数查找子表包括所述第一浮点数(W)的阶码为偶数情形下多个第三查询参数与第二多项式拟合方程的系数对应关系。
另一些示例中,第一高位倒数计算电路可以获取或者配置第二多项式查找表,第二多项式查找表可以包括多个第二查询参数组合和多个第二拟合参数组合的对应关系。其中,一个第二查询参数组合可以作为一个索引。一个索引对应一个第二拟合参数组合,一个第二拟合参数组合包括一组第二多项式拟合方程的系数。第一高位倒数计算电路可以将目标第三查询参数(h1)和目标第四查询参数(h2)作为一个索引。从第二多项式系数查找表中,查找该索引对应的第二拟合参数组合。从而实现确定目标第三查询参数(h1)和目标第四查询参数(h2)对应的第二多项式拟合方程的系数。
可见,第一高位倒数计算电路的执行过程可以与高位计算单元并行的,从而低位计算单元可以与高位计算单元并行。
一种可能的设计中,低位计算单元可以包括第二高位倒数计算电路和低位运算电路。第二高位倒数计算电路可以基于目标第五查询参数(g1),确定预设的第三多项式拟合方程的系数,其中,所述目标第五查询参数(g1)为所述第一位宽部分(fu)的第五部分。根据所述第三多项式拟合方程的系数和所述第一位宽部分(fu)的第六部分,确定所述第一位宽部分(fu)的倒数,所述第一位宽部分(fu)的第五部分对应的位宽与所述第一位宽部分(fu)的第六部分对应的位宽不重叠。低位运算电路用于利用所述第一位宽部分(fu)、所述第一位宽部分(fu)的倒数、所述目标尾数(X)之间的关系,确定所述第二位宽部分(fl)。
示例性的,第二高位倒数计算电路可以获取或配置第三多项式查找表,第三多项式查找表可以包括多个第五查询参数和多个第三拟合参数组合的对应关系。处理器可以利用目标第五查询参数(g1)作为索引,在第三多项式查找表中,查找目标第五查询参数(g1)对应的第三拟合参数组合。从而实现第二高位倒数计算电路确定目标第五查询参数(g1)对应的第三多项式拟合方程的系数。
可见,第二高位倒数计算电路与高位计算单元为串行关系,从而低位计算单元可以与高位计算单元串行。
一种可能的实施方式中,精确舍入单元可以对所述第一位宽部分和所述第二位宽部分加和处理,所述加和处理的结果为所述目标尾数(X)的平方根。
一种可能的实施方式中,精确舍入单元可以根据所述第一位宽部分(fu)、所述第二位宽部分(fl),确定两个待选结果;基于所述第一位宽部分(fu)、所述第二位宽部分(fl)、以及所述目标尾数(X)的部分位宽,计算第一舍入判别参数(ie),其中,所述第一舍入判别参数(ie)表征第一数值与所述目标尾数(X)之间的偏差,所述第一数值为所述目标尾数(X)的平方根的平方;根据所述第一舍入判别参数(ie)与预设数值的比较结果,从所述两个待选结果中选择一个待选结果确定为所述目标尾数(X)的平方根。
一种可能的设计中,精确舍入单元可以基于所述第一位宽部分(fu)和所述第二位宽部分(fl),确定第一舍入判别参数(ie),其中第一舍入判别参数(ie)可以采用如下公式计算,ie=fu 2+fl 2+2×fu×fl-X,其中,ie为所述第一舍入判别参数,fu为所述第一位宽部分,fl为所述第二位宽部分,X为所述目标尾数。
在实际应用场景中,第一舍入判别参数(ie)可以是极小的正数或者极小的负数。精确舍入单元可以利用第一舍入判别参数(ie)的有效符号位以及有效符号位之后的所有位,进行待选结果选择。可选的,精确舍入单元可以利用(fu 2+fl 2+2×fu×fl)的低位部分与目标尾数(X)低位部分计算第一舍入判别参数(ie),可以减少电路开销,减小电路占片面积。
一个示例中,精确舍入单元可以执行向正值舍入(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)的平方根。
另一个示例中,精确舍入单元可以执行向零舍入(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)的平方根。
一种可能的设计中,精确舍入单元基于所述第一位宽部分(fu)和所述第二位宽部分(fl),确定所述目标尾数(X)的平方根时,可以根据所述第一位宽部分(fu)、所述第二位宽部分(fl),确定多个待选结果,所述多个待选结果包括第一待选结果、第二待选结果以及第三待选结果,其中,所述第二待选结果大于所述第一待选结果,所述第一待选结果大于所述第三待选结果;基于所述第一位宽部分(fu)、所述第二位宽部分(fl)、以及所述目标尾数(X)的部分位宽,计算第二舍入判别参数(ien),其中,所述第二舍入判别参数(ien)表征第一距离的平方与第二距离的平方之间的偏差,所述第一距离为所述第一待选结果与所述目标尾数(X)的平方根的实数之间的距离,所述第二距离表征所述目标尾数(X)的平方根的实数与所述第三待选结果之间的距离;基于所述第一位宽部分(fu)、所述第二位宽部分(fl)、以及所述目标尾数(X)的部分位宽,计算第三舍入判别参数(iep),其中,所述第三舍入判别参数(iep)表征第三距离的平方与第四距离的平方之间的偏差,所述第三距离为所述第二待选结果与所述目标尾数(X)的平方根的实数之间的距离,所述第四距离表征所述目标尾数(X)的平方根的实数与所述第一待选结果之间的距离;根据所述第二舍入判别参数(ien)与预设数值的比较结果,以及所述第三舍入判别参数(iep)与预设数值的比较结果,从所述多个待选结果中选择一个待选结果确定为所述目标尾数(X)的平方根。
可选的,所述第二待选结果与所述第一待选结果的差值小于或等于一个最小精度单位。所述第一待选结果与所述第三待选结果的差值小于或等于一个最小精度单位。
本申请实施例中,精确舍入单元可以执行舍入到最接近值(RH)方式。可选的,第二舍入判别参数(ien)与第一舍入判别参数(ie)之间的关系可以用ien=ie-ulp×f1,其中ie=fu 2+fl 2+2×fu×fl-X。第三舍入判别参数(iep)与第一舍入判别参数(ie)之间的关系可以用iep=ie+ulp×f1,其中,ie=fu 2+fl 2+2×fu×fl-X。精确舍入单元在舍入到最接近值(RH)方式中,可以基于公式确定目标尾数(X)的平方根,其中else可指iep≥0的情形,或者ien<0的情形。
可选的,精确舍入单元可以计算前述第一舍入判别参数(ie),并利用第一舍入判别参数(ie)计算第二舍入判别参数(ien)和第三舍入判别参数(iep),可以减少电路开销,优化电路占片面积。
一些应用场景中,精确舍入单元预先配置多种舍入方式。精确舍入单元可以获取舍入方式配置参数;按照所述舍入方式配置参数对应的舍入方式,所述第一位宽部分(fu)、所述第二位宽部分(fl),确定多个待选结果;以及按照所述舍入方式配置参数对应的舍入方式,基于所述第一位宽部分(fu)、所述第二位宽部分(fl)、以及所述目标尾数(X),计算舍入判别参数;并基于所述判舍入判别参数与预设数值的比较结果,从所述多个待选结果选择一个待选结果作为所述目标尾数(X)的平方根。本示例中,精确舍入单元可以执行前述实施例中提供的任意一种舍入方式,此处不再赘述。
第三方面,本申请实施例还提供一种处理装置,可以包括第一寄存器、第二寄存器以及如第二方面及其任一设计中的浮点数计算模块。所述第一寄存器存储有待计算浮点数。所述浮点数计算模块用于从所述第一寄存器中获取所述待计算浮点数;以及计算所述待计算浮点数的平方根的尾数。所述第二寄存器用于存储所述待计算浮点数的平方根的尾数。
一种可能的设计中,所述处理装置还包括第三寄存器;所述第三寄存器存储有舍入方式配置参数;所述浮点数计算模块,还用于获取所述舍入方式配置参数,执行所述舍入方式配置参数对应的舍入方式。
可以理解的是,为了实现上述方法实施例中功能,处理器或者计算器包括了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本申请中所公开的实施例描述的各示例的模块及方法步骤,本申请能够以硬件或硬件和计算机软件相结合的形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用场景和设计约束条件。
附图说明
图1为一种浮点数的格式示意图;
图2A为一种五级流水线的示意图;
图2B为本申请实施例提供的一种处理装置的结构示意图;
图3为本申请实施例提供的浮点数平方根计算方法;
图4为一种对浮点数处理的示意图;
图5为一种浮点数计算模块的结构示意图;
图6为一种尾数的高位部分和低位部分的示意图;
图7为一种存储模块与拟合参数的关系示意图;
图8为加和处理的示意图;
图9为多个待选结果间关系的示意图;
图10为一种浮点数计算模块的具体结构示意图;
图11为一种精确舍入单元的具体结构示意图;
图12为另一种精确舍入单元的具体结构示意图;
图13为另一种浮点数计算模块的结构示意图;
图14为另一种浮点数计算模块的具体结构示意图;
图15为又一种浮点数计算模块的结构示意图;
图16为又一种浮点数计算模块的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述。方法实施例中的具体操作方法也可以应用于装置实施例或系统实施例中。
在计算机中,以近似表示任意某个实数称之为浮点数。浮点数通常由尾数(mantissa)和指数偏移值(也称阶码,exponent)作为组合来表示。例如,浮点数可以通过尾数与某个基数的整数次指数的乘积进行标识。
电子与电气工程师协会(institute of electrical and electronicsengineers,IEEE)754标准定义浮点运算标准和表达形式,也是目前最为广泛支持和使用的二进制浮点数算数标准。其中,标准IEEE 754中规定了浮点数由符号位(sign bit),指数偏移值(exponent bits)和尾数值(mantissa bits)组合而成。标准IEEE 754中,浮点数具有多种类型,如单精确度(single precision,SP)浮点数、双精确度(double precision,DP)浮点数、延伸单精确度浮点数、延伸双精确度浮点数等。不同类型的浮点数具有不同的位宽,浮点数的全位宽可包括符号位、指数偏移值的全部位宽、尾数值的全部位宽。示例性的,单精确度浮点数的位宽为32位(bit),双精确度浮点数的位宽为64位,延伸单精确度浮点数的位宽为43位,延伸双精确度浮点数的位宽为79位。作为示例,图1中示出单精确度浮点数,单精确度浮点数的全位宽为32位。其中,第0位至第22位表征尾数数值,第23位至第30位表征指数偏移值,第31位表征符号位。
目前计算浮点数的平方根的方法可以包括两类方法,一类方法为按方程迭代方法求解浮点数的平方根,如巴比伦方法或者牛顿-拉夫森方法。利用平方根求解方程,以初始近似值作为输入,每次迭代计算后可以得到非精确的全位宽平方根值。通过多轮迭代获得满足高精度要求的全位宽的计算结果。但是有着迭代次数较多,收敛速度较慢的缺陷。
另一类方法为按位迭代求解浮点数的平方根。这类方法中,每次迭代计算的结果是固定比特位精确的非全位宽结果。其中,固定比特位数有斯维尼-罗伯森-托切尔算法(Sweeney-Robertson-Tocher algorithm,SRT)基础迭代运算器件所选择的基值(radix)有关,如果基值为4(=22),意味着迭代运算器件每次得出的精确结果为2位。如果最终精确要求双精度浮点要求,那么运算迭代次数至少是26次。按位迭代求解浮点数的平方根方式,吞吐率较低,难以实现流水化处理。
有鉴于此,本申请实施例提供一种浮点数平方根计算方法及浮点数计算模块,计算延迟较短,具有高吞吐率。
本申请实施例提供一种浮点数平方根计算方法可以由浮点数计算模块实施。浮点数计算模块可以应用于处理器(或者计算器)中。例如,应用于CPU、GPU或者数字信号处理器(digital signal processor,DSP)中。
示例性的,通常CPU采用五级流水线100执行计算任务。如图2A所示,五级流水线可以包括取指101、译码102、执行103、访存104和写回105,共五个阶段。取指101阶段可以提取指令。译码102阶段可以将提取的指令转译为可识别运算的指令和参数。执行103阶段可指逻辑运算和数学运算阶段。一些场景中,由CPU实施本申请实施例提供的浮点数平方根计算方法的情形下,CPU可以在执行103阶段实施本申请实施例提供的浮点数平方根计算方法。访存104阶段中CPU可以与存储模块之间交互指令,例如从存储模块中读取或者由存储模块存储数据。写回105阶段可以将最终的输出结果更新到寄存器中。图2B示出一种本申请实施例处理装置的结构示意图,所述处理装置可以实施为CPU、GPU、AI处理器等。处理装置200可以包括寄存器组201和本申请提供的浮点数计算模块202。寄存器组201可以包括多个寄存器。多个寄存器中第一寄存器可以存储有待计算浮点数。浮点数计算模块202可以从第一寄存器中获取待计算浮点数,以及计算待计算浮点数的平方根。多个寄存器中第二寄存器可以存储待计算浮点数的平方根。
一种可能的设计中,多个寄存器中可以包括第三寄存器。第三寄存器可以存储舍入配置方式。浮点数计算模块202可以从第三寄存器获取舍入方式配置参数,执行舍入方式配置参数对应的舍入方式,得到待计算浮点数的平方根。
可选的,处理装置200可以包括控制模块203。控制模块203可以执行前述取指101、译码102等过程。可选的,处理装置200可以包括存储模块204,存储模块204可以包括缓存,用于存储数据。可选的,处理装置200可以包括整数计算模块205,用于处理整数运算。可选的,处理装置200还可以包括其它运算模块206,可以执行逻辑运算,例如逻辑移位运算。一些场景中,其它运算模块206可以实施为图像专用计算模块。或者其它运算模块206可以执行大型阵列的乘加法运算。本申请对此不作具体限定。可选的,处理装置200还可以包括I/O接口207。
图3示出本申请实施例提供的浮点数平方根计算方法,可以由处理器(或者计算器)执行。本申请实施例提供的浮点数平方根计算方法,可以包括如下步骤:
步骤S100,接收浮点数计算指令,所述指令携带待计算浮点数。
步骤S101,获取目标尾数,目标尾数包括第一浮点数的尾数,所述第一浮点数为正常值化的浮点数所述第一浮点数的数值与所述待计算浮点数的数值相同。
待计算浮点数与第一浮点数仅表达形式不同,也即浮点数的尾数和阶码不同。由此可见,计算浮点数Z的平方根,也是计算浮点数W的平方根。处理器可以获取或者接收待计算平方根结果的浮点数Z(也即前述待计算浮点数),浮点数Z可以为正常值化的浮点数,也可以为非正常值化的浮点数。便于介绍,将目标尾数记为目标尾数X,第一浮点数记为浮点数W。本申请实施例中,一个“尾数”的全位宽可以包括整数部分和小数部分。便于介绍,尾数的整数部分和小数部分依次排列。其中,在整数部分中,由最高位至最低位排列;在小数部分中,由最高位至最低位排列。
处理器可以对浮点数Z进行正常值化(或者称规格化),得到第一浮点数,也即浮点数W。浮点数W与浮点数Z是相同数值,仅表达形式不同。通常对一个浮点数正常值化处理,可使该浮点数的尾数的整数部分不为0。其中,第一浮点数W的尾数记为尾数M1,阶码记为E0。
一般来说,浮点数W的平方根的符号与该浮点数相同。浮点数W平方根的计算包括两个部分,分别为浮点数W平方根的尾数计算和浮点数W平方根的阶码计算。浮点数W平方根的阶码与浮点数W的阶码EW的关系为,浮点数W平方根的阶码为在计算机中,通常用浮点数的指数偏移值指示浮点数的阶码。/> 其中,指数偏移量与浮点数W的精度类型有关。示例性的,浮点数W为单精度浮点数,则指数偏移量为127;浮点数W为双精度浮点数,则指数偏移量为1023。由此可见,求解浮点数W的平方根的关键路径(critical path)在于求解浮点数W的尾数的平方根。
本申请实施例中,处理器获取的目标尾数X与浮点数W的关系为目标尾数X包括浮点数W的尾数,目标尾数X可以包括浮点数W的尾数的全部数据。若所述第一浮点数W的阶码为偶数,所述目标尾数X与所述第一浮点数W尾数相同;若所述第一浮点数W的阶码为奇数,所述目标尾数X为所述第一浮点数W的尾数的Q倍,其中Q为浮点数的基数,Q为正数,且Q为偶数。例如,通过对第一浮点数W的尾数进行左移一位可以得到目标尾数X。
下面以浮点数的基数为2作为举例介绍,若浮点数W的阶码EW为偶数,且为正数,则浮点数W平方根的阶码为在此情形中,目标尾数X与浮点数W的尾数相同。也即目标尾数X的整数部分与浮点数W的尾数的整数部分相同,且目标尾数X的小数部分与浮点数W的小数部分相同。目标尾数X的平方根的小数部分为浮点数W平方根的尾数。
若浮点数W的阶码EW为奇数,且为正数,则浮点数W平方根的阶码为在此情形中,目标尾数X为浮点数W的尾数的2倍,其中2为浮点数的基数。通过对浮点数W的尾数左移一位可以得到目标尾数X。目标尾数X的平方根的小数部分为浮点数W平方根的尾数。
处理器可以对浮点数W进行阶码奇偶判定处理、阶码变换处理、尾数变换处理中的一种或多种,得到目标尾数X。下面举例介绍,处理器可以对接收的待计算浮点数也即浮点数Z进行正常值化处理,转化为浮点数W。浮点数W的阶码记为阶码EW和尾数M1。便于介绍,下面以处理器执行浮点数计算处理时,浮点数的基数为2的场景作为举例进行说明。
如图4中的(a)所示,处理器可以对浮点数W的阶码EW进行阶码奇偶判定处理。一种可能的情形中,若阶码EW为奇数,处理器可以对尾数M1进行第一尾数变换处理,如对尾数M1进行乘Q操作,得到尾数M2。示例性的,Q为2。如图4中的(b)所示,尾数M1包括整数部分和小数部分。黑色方框示出整数部分的比特,白色方框示出小数部分的比特。浮点数W的尾数M1的整数部分为1个比特,尾数M1的整数部分为第s1位示出的比特,尾数M1的小数部分为第0位至第v位示出的比特。此时尾数M1的数值范围为[1,2)。
处理器对尾数M1进行乘2操作,也即将尾数M1的各比特的向左移一位,得到尾数M2。此时尾数M2的整数部分为2个比特,尾数M2的整数部分为第s1位和第s2位示出的比特,尾数M2的小数部分为第0位至第v位示出的比特。此时尾数M2的数值范围为[2,4)。可以理解的是,尾数M2的整数部分相比于尾数M1的整数部分额外增添一个比特,补齐IEEE754格式缺省的整数位。
在此情形中,也即浮点数W的阶码EW为奇数的情形中,目标尾数X为浮点数W的尾数M1的2倍,也即目标尾数X与尾数M2相同。目标尾数X的整数部分可以包括2个比特。此时目标尾数X的数值范围为[2,4)。
另一种可能的情形中,浮点数W的阶码EW为偶数的情形中,目标尾数X与浮点数W的尾数M1相同。如图4中的(c),浮点数W的尾数M1的整数部分为1个比特,尾数M1的整数部分为第s1位示出的比特,尾数M1的小数部分为第0位至第v位示出的比特。此时尾数M1的数值范围为[1,2)。浮点数W的尾数与浮点数Z正常值化后的尾数M1相同,则浮点数W的尾数的数值范围为[1,2)。从而目标尾数X的数值范围为[1,2)。可选的,目标尾数X的整数部分相比于尾数M1的整数部分可以额外增添一个比特,配置为0,补齐IEEE754格式缺省的整数位。如增加第s2位比特,且数值配置为0。这样的操作不改变目标尾数X的数值范围。
可见,在浮点数W的阶码EW为奇数时,或者浮点数W的阶码EW为偶数时,目标尾数X均包括浮点数W的尾数M1。
通过上述介绍可以明晰处理器执行浮点数计算处理时,浮点数的基数为2的场景中,目标尾数X可以为预设集合内的任意一个数值。示例性的,所述预设集合可以为[1,4)。所述预设集合的最小数值可以为1,预设集合的最大数值可以接近4,但预设集合不包括4。
本申请实施例提供的浮点数平方根计算方法中,目标尾数X的平方根的小数部分为浮点数W的平方根中的尾数。通过确定目标尾数X的平方根,实现确定浮点数W的平方根的尾数,从而得到浮点数W的平方根的计算结果。便于介绍,将目标尾数X的平方根也即记为f。f可以为定点数,包括整数部分和小数部分。处理器可以通过确定出的目标尾数X的平方根的小数部分,即f的小数部分,实现确定浮点数W的平方根/>的尾数部分。
虽然图3中示出步骤S102和步骤S103为并行关系,但并不意味着处理器只能并行执行步骤S102和步骤S103中的操作。在一些应用场景中,处理器可以串行地执行步骤S102和步骤S103中的操作。在另一些应用场景中,处理器可以并行执行步骤S102和步骤S103中的操作。可以理解的是并行执行可以包括但不限于同时开始执行、同步开始执行。在预设时长内,同步或者异步地开始执行步骤S102中的操作和步骤S103中的操作,也可以视为并行执行步骤S102和步骤S103中的操作。
步骤S102,根据所述目标尾数的全部或部分位宽,确定所述目标尾数的平方根的第一位宽部分,所述第一位宽部分包含所述目标尾数的平方根的最高位。
便于区分的实数与处理器确定的目标尾数X的平方根,本申请中目标尾数X的平方根记为f可以表征处理器确定出的目标尾数X的平方根。目标尾数X的平方根f的第一位宽部分包括目标尾数X的平方根f的最高位。由于目标尾数X的平方根f为定点数,包括整数部分和小数部分。整数部分和小数部分可以依次排列,目标尾数X的平方根f的最高位也是目标尾数X的平方根f的整数部分的最高位。
示例性的,目标尾数X的数值范围为[1,4),目标尾数X的平方根f的数值范围为[1,2),目标尾数X的平方根f的整数部分小于2,则目标尾数X的平方根f的整数部分的全位宽可以为1。本申请中,目标尾数X的平方根f的全位宽可以理解为平方根f的有效数据部分的全位宽。目标尾数X的平方根f的整数部分的最高位也可以理解为目标尾数X的平方根f的整数部分有效部分的最高位。所述第一位宽部分可以称为目标尾数X的平方根f的高位部分,也可以简称为f的高位部分fu。f的高位部分fu可以指f的高m位,高m位可指f的全位宽中由最高位向最低位方向上的前m位,也可以理解为f的全位宽中最高m位。可见,目标尾数X的平方根的第一位宽部分的位宽为m。f的高位部分fu可以理解为目标尾数X的平方根的近似计算结果。可选的,m为正整数,且m为小于或等于f的全位宽的数值。
一种可能的实现方式中,处理器可以配置有预设的尾数全部或部分位宽与尾数的平方根的第一位宽部分的对应关系。处理器可以基于目标尾数X的全部或部分位宽,预设的尾数全部或部分位宽与第一位宽部分的对应关系,将所述目标尾数X的全部或部分位宽所对应的第一位宽部分,作为所述目标尾数X的平方根f的第一位宽部分,也即f的高位部分fu。但预设尾数全部或部分位宽与尾数的平方根的第一位宽部分的对应关系通常需要占用较大存储资源,处理器查询速度较慢。
另一种可能的实现方式中,处理器可以基于多项式近似的方式,根据目标尾数X的全部或部分位宽,确定目标尾数X的平方根f的高位部分fu。由于目标尾数X包括浮点数W的尾数M1的全部位宽,处理器可以根据浮点数W的尾数M1的全部位宽或部分位宽,确定目标尾数X的平方根f的高位部分fu
一种可能的设计中,处理器可以基于浮点数W的尾数M1确定目标第一查询参数r1,处理器可以基于浮点数W的阶码EW确定目标第二查询参数r2。本申请实施例中,目标第一查询参数可以为浮点数W的尾数M1小数部分中的第一部分(第一部分位宽)。示例性的,目标第一查询参数可以为浮点数W的尾数M1小数部分的高nr1位(或者低nr1位),nr1为正整数,且nr1小于或等于浮点数W的尾数M1小数部分的全位宽。所述目标第二查询参数为浮点数W阶码EW的部分位宽,且包括浮点数W的阶码EW的最低位宽。目标第二查询参数r2可以为浮点数W的阶码EW的低nr2位,nr2为正整数,且nr2为小于或等于阶码EW的全部位宽,可见阶码EW的低nr2位包括阶码EW的最低位。可选的,目标第二查询参数r2可以为浮点数W的阶码EW的低1位比特的数据,该数据可以反映出阶码EW为奇数或者偶数。
处理器可以基于目标第一查询参数r1和目标第二查询参数r2,确定目标第一查询参数r1和目标第二查询参数r2对应的第一多项式拟合方程的系数,第一多项式拟合方程的系数可以包括第一拟合参数a1、第二拟合参数b1、第三拟合参数c1。
处理器可以根据第一多项式拟合方程的系数和浮点数W的尾数M1小数部分中全部或部分位宽,计算f的高位部分fu。示例性的,处理器可以根据第一多项式拟合方程的系数,浮点数W的尾数M1小数部分中第二部分(第二部分位宽),计算f的高位部分fu,其中,fu=a1×(X1)2+b1×X1+c1。X1为浮点数W的尾数M1小数部分的第二部分(第二部分位宽),并且所述浮点数W的尾数M1小数部分中的第二部分对应的位宽与所述浮点数W的尾数M1小数部分中第一部分对应的位宽不重叠。可选的,X1为浮点数W的尾数M1小数部分中除前述第一部分的位宽之外其它位宽中的高t1位,t1为正整数。本申请实施例中,处理器利用浮点数W的尾数M1小数部分的第一部分确定多项式拟合方程的系数,利用浮点数W的尾数M1小数部分的第二部分参与多项式拟合方程的计算,确定目标尾数X的平方根的近似解,即f的高位部分fu
处理器可以获取或者配置有第一多项式系数查找表。第一多项式系数查找表可以包括多个第一拟合参数组合与多个第一查询参数组合的对应关系。每个第一拟合参数组合可以包括第一拟合参数a1、第二拟合参数b1、第三拟合参数c1。处理器可以采用包括但不限于如下示例A1、A2中任一示例中方式,确定目标第一查询参数r1和目标第二查询参数r2对应的第一多项式拟合方程的系数。
示例A1、
一种可能的实施方式中,第一多项式系数查找表可以包括第一奇数查找子表和第一偶数查找子表。第一奇数查找子表中表征第二查询参数为奇数时第一查询参数对应的第一拟合参数组合。第一偶数查找子表中包括第二查询参数为偶数时第一查询参数对应的第一拟合参数组合。
处理器可以根据目标第二查询参数r2为偶数,从第一偶数查找子表中,查找目标第一查询参数r1对应的第一拟合参数组合。或者,处理器可以根据目标第二查询参数r2为奇数,从第一奇数查找子表中,查找目标第一查询参数r1对应的第一拟合参数组合。实现处理器从第一多项式系数查找表中查找出目标第一查询参数组合对应的第一拟合参数组合,从而实现确定目标第一查询参数r1和目标第二查询参数r2对应的第一多项式拟合方程的系数。
可见,本实施方式中,处理器可以利用目标第二查询参数r2作为第一索引,确定第一偶数查找子表或者第一奇数查找子表。并能利用目标第二查询参数r1作为第二索引,从确定出的子表中,查找对应的第一拟合参数组合。
示例A2、
另一种可能的实施方式中,第一多项式系数查找表可以包括多个第一拟合参数组合与多个第一查询参数组合的对应关系,其中,一个第一查询参数组合可以作为一个索引。一个索引对应一个第一拟合参数组合。处理器可以将目标第一查询参数r1和目标第二查询参数r2作为一个索引,从第一多项式系数查找表中,查找该索引对应的第一拟合参数组合。从而实现确定目标第一查询参数r1和目标第二查询参数r2对应的第一多项式拟合方程的系数。
步骤S103,基于第一关系,所述第一位宽部分和所述目标尾数的全部或部分位宽,计算所述目标尾数的平方根的第二位宽部分,其中,所述第一关系表征所述目标尾数的平方根的第一位宽部分、所述目标尾数以及所述目标尾数的平方根的第二位宽部分之间的关系。
本申请实施例中,所述第二位宽部分可以包含所述目标尾数X的平方根尾数的最低位,且所述第二位宽部分的位数与所述第一位宽部分的位数的总和,大于或等于所述目标尾数X的平方根的位数,其中,第一位宽部分的位宽与第二位宽部分的位宽的总和大于或等于目标尾数X的平方根的全位宽。
本申请实施例中,目标尾数X的平方根的第二位宽部分,也可以称为目标尾数X的平方根的低位部分fl。f的低位部分fl可指f的低n位,低n位可指f的全位宽中由最高位开始向最低位方向上后n位。可见,目标尾数X的平方根的第二位宽部分的位宽为n。可选的,n为正整数,且n为小于f的全位宽的数值。m与n的总和大于或等于f的全位宽。
f的低位部分fl、f的高位部分fu以及f的之间的关系为f2=(fu+fl)2,结合f的低位部分fl、f的高位部分fu以及目标尾数X的关系为/>简化f的低位部分fl的计算过程,利用已知量和有限个数的变量求解。本申请实施例中的第一关系,也即f的低位部分fl、f的高位部分fu以及目标尾数X的第一关系可以配置为/>
处理器可以基于f的低位部分fl、f的高位部分fu以及目标尾数X的第一关系,以及步骤S101中的目标尾数X,步骤S102中确定出的f的高位部分fu,计算得到f的低位部分fl
可选的,若处理器利用第一关系计算得到的的位宽大于n,处理器可以保留高n位作为f的低位部分fl。也即对处理器利用第一关系计算得到的fl的位宽的高n+1位进行四舍五入。例如,处理器可以将/>的高n+1位与“1”进行加和处理,并保留加和处理的结果高n位,作为f的低位部分fl
本申请实施例中,f的高位部分fu的倒数可以通过/>近似逼近。下面对处理器确定f的高位部分fu的倒数/>的过程进行举例说明。处理器可以采用包括但不限于如下方式一和方式二中的任一操作,确定f的高位部分fu的倒数/>
方式一、
为提升计算速度,处理器可以并行确定f的高位部分fu以及确定f的高位部分fu的倒数处理器可以确定f的高位部分fu可以参见步骤S102中的相关介绍,此处不再赘述。处理器可以基于多项式近似的方式,根据目标尾数X的全部或部分位宽,确定目标尾数X的平方根f的高位部分fu的倒数/>
处理器可以基于浮点数W的尾数M1确定目标第三查询参数h1,处理器可以基于浮点数W的阶码EW确定目标第四查询参数h2。本申请实施例中,所述目标第三查询参数为浮点数W的尾数M1的第三部分(第三部分位宽)。示例性的,目标第三查询参数h1可以指浮点数W的尾数M1小数部分的高nh1位(或者低nh1位),nh1为正整数,且nh1小于或等于浮点数W的尾数M1的小数部分的全位宽。所述目标第四查询参数h2为浮点数W的阶码EW的部分位宽,并且包括浮点数W的阶码EW的最低位宽。示例性的,目标第四查询参数可以指浮点数W的阶码EW的高nh2位(或者低nh2位),h2为正整数,且nh2为小于或等于浮点数W的阶码EW的全部位宽。可选的,目标第四查询参数h2可以为浮点数W的阶码EW的低1位比特的数据,该数据可以反映出阶码EW为奇数或者偶数。
处理器可以基于目标第三查询参数h1和目标第四查询参数h2,确定目标第三查询参数h1和目标第四查询参数h2对应的第二多项式拟合方程的系数,第二多项式拟合方程的系数可以包括第四拟合参数a2、第五拟合参数b2、第六拟合参数c2。
处理器可以根据第二多项式拟合方程的系数,浮点数W的小数部分的全部或部分位宽,计算得到f的高位部分fu的倒数示例性的,处理器可以根据第二多项式拟合方程的系数,浮点数W的小数部分的第四部分(第四部分位宽),计算得到f的高位部分fu的倒数/>其中,/>处理器可以输出f的高位部分fu的倒数/>X2为浮点数W的尾数小数部分的第四部分(第四部分位宽),并且所述浮点数W的小数部分的第四部分对应的位宽与所述浮点数W的小数部分的第三部分对应的位宽不重叠。可选的,X2为浮点数W的小数部分中除前述第三部分位宽之外的位宽中的高t2位,t2为正整数。本申请实施例中,处理器利用浮点数W的小数部分的第三部分确定多项式拟合方程的系数,利用浮点数W的小数部分的第四部分参与多项式拟合方程的计算,确定f的高位部分fu的倒数/>
处理器可以获取或者配置有第二多项式系数查找表。第二多项式系数查找表可以表征多个第二拟合参数组合与多个第二查询参数组合的对应关系。每个第二拟合参数组合可以包括第四拟合参数a2、第五拟合参数b2、第六拟合参数c2。处理器可以采用包括但不限于如下示例B1、B2中任一示例中方式,确定目标第三查询参数h1和目标第四查询参数h2对应的第二多项式拟合方程的系数。
示例B1、
一种可能的实施方式中,第二多项式系数查找表可以包括第二奇数查找子表和第二偶数查找子表。第二奇数查找子表中表征第四查询参数为奇数时第三查询参数对应的第二拟合参数组合。第二偶数查找子表中包括第四查询参数为偶数时第三查询参数对应的第二拟合参数组合。
处理器可以根据目标第四查询参数h2为偶数,从第二偶数查找子表中,查找目标第三查询参数h1对应的第二拟合参数组合。或者,处理器可以根据目标第四查询参数h2为奇数,从第二奇数查找子表中,查找目标第三查询参数h1对应的第二拟合参数组合。实现处理器从第二多项式系数查找表中查找出目标第二查询参数组合对应的第二拟合参数组合,从而实现确定目标第三查询参数h1和目标第四查询参数h2对应的第二多项式拟合方程的系数。
可见,本实施方式中,处理器可以利目标第四查询参数h2作为第三索引,确定第二偶数查找子表或者第二奇数查找子表。并能利用目标第三查询参数h1作为第四索引,从确定出的子表中,查找对应的第二拟合参数组合。
示例B2、
另一种可能的实施方式中,第二多项式系数查找表可以包括多个第二拟合参数组合与多个第二查询参数组合的对应关系,其中,一个第二查询参数组合可以作为一个索引,且一个索引对应一个第二拟合参数组合。处理器可以将目标第三查询参数h1和目标第四查询参数h2作为一个索引,从第二多项式系数查找表中,查找该索引对应的第二拟合参数组合。从而实现确定目标第三查询参数h1和目标第四查询参数h2对应的第二多项式拟合方程的系数。
方式二、
为简化处理器中的计算电路,处理器可以串行地确定f的高位部分fu以及确定f的高位部分fu的倒数处理器可以确定f的高位部分fu可以参见步骤S102中的相关介绍,此处不再赘述。处理器可以基于多项式近似的方式,根据f的高位部分fu的全部或部分位宽,确定目标尾数X的平方根f的高位部分fu的倒数/>
处理器可以基于目标尾数X的平方根f的高位部分fu,确定目标第五查询参数g1。处理器可以基于目标第五查询参数g1,确定预设的第三多项式拟合方程的系数,其中,所述目标第五查询参数g1为f的高位部分fu的第五部分(第五部分位宽)。示例性的,目标第五查询参数g1可以为f的高位部分fu的小数部分的高g1位(或者低g1位),g1为正整数,且g1小于或等于f的高位部分fu的小数部分的全位宽。
处理器可以根据所述第三多项式拟合方程的系数和所述第一位宽部分的第六部分(第六位宽部分),确定f的高位部分fu的倒数f的高位部分fu的第五部分对应的位宽与f的高位部分fu的第六部分对应的位宽不重叠。示例性的,处理器可以根据第三多项式拟合方程的系数,f的高位部分fu的全部或部分位宽,计算得到f的高位部分fu的倒数/>其中,可选的,g2为f的高位部分fu小数部分中除前述第五部分位宽之外的位宽中的高g2位,g2为正整数。
处理器可以基于目标第五查询参数g1,确定目标第五查询参数g1对应的第三多项式拟合方程的系数,第三多项式拟合方程的系数可以包括第七拟合参数a3、第八拟合参数b3、第九拟合参数c3。下面以处理器基于目标第五查询参数g1,确定目标第五查询参数g1对应的第三多项式拟合方程的系数,第三多项式拟合方程的系数可以包括第七拟合参数a3、第八拟合参数b3、第九拟合参数c3。作为举例进行介绍。
处理器可以采用包括但不限于如下示例C1中方式,确定目标第五查询参数g1对应的第三多项式拟合方程的系数。
示例C1、
一种可能的实施方式中,处理器可以获取或者配置有第三多项式系数查找表。第三多项式系数查找表可以表征多个第三拟合参数组合与多个第五查询参数的对应关系。其中,各第五查询参数具有对应的第三拟合参数组合。每个第三拟合参数组合可以包括第七拟合参数a3、第八拟合参数b3、第九拟合参数c3。处理器可以从第三多项式系数查找表中查找出目标第五查询参数对应的第三拟合参数组合,从而实现目标第五查询参数g1对应的第三多项式拟合方程的系数。
f的低位部分fl、f的高位部分fu以及目标尾数X的关系可以配置为处理器可以基于f的低位部分fl、f的高位部分fu以及目标尾数X的关系,以及步骤S101中的目标尾数X,步骤S102中确定出的f的高位部分fu,计算得到f的低位部分fl
可以理解的是,处理器可以采用包括但不限于前述方式一、方式二中提供的方式计算f的高位部分fu的倒数,还可以采用现有技术计算f的高位部分fu的倒数。例如,处理器可以采用SRT方法计算f的高位部分fu的倒数。本申请对此不作过多限定。
步骤S104,基于所述第一位宽部分和所述第二位宽部分,确定所述目标尾数的平方根,并将所述目标尾数的平方根的小数部分确定为所述待计算浮点数的平方根的尾数。
一种可能的实施方式中,处理器可以将第一位宽部分和第二位宽部分进行加和操作,得到目标尾数X的平方根,并将所述目标尾数X的平方根的小数部分确定为所述浮点数W的平方根的尾数。
另一种可能的实施方式中,处理器可以基于配置的舍入方式、所述目标尾数X、所述第一位宽部分、所述第二位宽部分,计算所述舍入方式对应的舍入判别参数;以及基于所述第一位宽部分、所述第二位宽部分,计算所述舍入方式对应的多个待选结果;并根据所述舍入判别参数与预设数值的比较结果,从所述多个待选结果中选择一个待选结果作为所述目标尾数X的平方根。
一些场景中,处理器可以配置一种舍入方式,其中,所述配置的舍入方式可以为如下中的任意一种:舍入到最接近值RH,向正值舍入RP,向零舍入RZ中任意一种舍入方式。可选的,RH方式、RP方式、RZ方式可以为IEEE 754中规定的舍入方式。
另一些场景中,处理器可以配置多种舍入方式,其中,所述多个舍入方式可以为RP方式、RH方式、RZ方式中的至少两种。所述多种舍入方式与多个舍入方式配置参数一一对应,例如,第一舍入配置参数表征(或者对应)的舍入方式为RP方式。第二舍入配置参数对应的舍入方式为RZ方式。第三舍入配置参数对应的舍入方式为RH方式。
处理器可以根据接收的舍入方式配置参数,执行接收的舍入方式配置参数对应的舍入方式。一个示例中,处理器可以根据接收到的舍入配置参数为第一舍入配置参数,执行RP方式。另一种示例中,处理器可以根据接收到的舍入配置参数为第二舍入配置参数,执行RZ方式。又一种示例中,处理器可以根据接收到的舍入配置参数为第三舍入配置参数,执行RH方式。
下面介绍处理器执行RP方式的过程。处理器可以基于所述第一位宽部分(也即fu)、所述第二位宽部分(也即fl)以及目标尾数X的部分位宽,确定第一舍入判别参数ie。第一舍入判别参数ie可以表征第一数值与目标尾数X的偏差,所述第一数值为所述目标尾数X的平方根的平方,也即f。
示例性的,第一舍入判别参数ie可以采用公式ie=fu 2+fl 2+2×fu×fl-X计算得到。其中,X为目标尾数X。
处理器可以基于所述第一位宽部分(也即fu)、所述第二位宽部分(也即fl),确定多个待选结果,多个待选结果可以包括第一待选结果f1和第二待选结果f2。其中,其中,f1=fu+fl,f2=f1+ulp。ulp表征的计算结果的全位宽中能够表达的最小的有效的数。
处理器可以根据第一舍入判别参数ie与预设数值的比较结果,从多个待选结果中选择一个待选结果,并将选择的待选结果确定为目标尾数X的平方根。示例性的,预设数值可以配置为0。
处理器可以根据第一舍入判别参数ie大于或等于0,确定第一待选结果f1为目标尾数X的平方根。处理器可以根据第一舍入判别参数ie小于0,确定第二待选结果f2为目标尾数X的平方根。
下面介绍处理器执行RZ方式的过程。处理器可以基于所述第一位宽部分(也即fu)和所述第二位宽部分(fl),确定第一舍入判别参数ie,其中ie=fu 2+fl 2+2×fu×fl-X。其中,X为目标尾数X。
处理器可以基于所述第一位宽部分和所述第二位宽部分,确定多个待选结果,多个待选结果可以包括第一待选结果f1和第三待选结果f3。其中,f1=fu+fl,f3=f1-ulp。ulp表征的计算结果的全位宽中能够表达的最小的有效的数。
处理器可以根据第一舍入判别参数ie与预设数值的比较结果,从多个待选结果中选择一个待选结果,并将选择的待选结果确定为目标尾数X的平方根。示例性的,预设数值可以配置为0。
处理器可以根据第一舍入判别参数ie小于或等于0,确定第一待选结果f1为目标尾数X的平方根。处理器可以根据第一舍入判别参数ie大于0,确定第三待选结果f3。为目标尾数X的平方根。
假设目标尾数X无精度损失的实数平方根为fr,在RZ和RP方式中,通常根据f和fr比较结果,从多个待选结果中选择一个待选结果。但是考虑计算的便利性和比较值大小的目的性,通过比较f2和fr2也可以获得相同的比较结果,即可以计算f2和目标尾数X之间的差值,这样只需要计算f2。第一舍入判别参数ie可以表征f2和目标尾数X之间的差值。
在RP方式中,处理器可以基于公式确定目标尾数X的平方根f。在RZ方式中,处理器可以基于公式/>确定目标尾数X的平方根f。
下面介绍处理器执行RH方式的过程。处理器可以根据第一位宽部分(也即fu)和所述第二位宽部分(fl),确定多个待选结果,所述多个待选结果包括前述第一待选结果f1、第二待选结果f2以及第三待选结果f3。通过前述介绍可知f1=fu+fl,f2=f1+ulp,f3=f1-ulp。可见第二待选结果f2大于第一待选结果f1,第一待选结果f1大于第三待选结果f3。
假设目标尾数X无精度损失的实数平方根为fr,在RH方式时,可以通过比较可能取到两个待选结果分别到fr之间的距离,将这两个待选结果到fr之间的距离最小的待选结果确定为目标尾数X的平方根。
在第一舍入参数ie大于0的情形中,此时,有f1>fr>f3。将fr与前述f1之间的偏差记为第一距离(f1-fr),f3与fr之间的偏差记为第二距离(fr-f3)。第一距离与第二距离的偏差为(f1-fr)-(fr-f3),记为第一偏差。舍入判别参数ie1可以为第一距离的平方与第二距离的平方的差值,则有ie1=[(f1-fr)-(fr-f3)]×[(f1-fr)+(fr-f3)],也即ie1=(f1-fr)2-(fr-f3)2
(f1-fr)+(fr-f3)的结果为正数,第一偏差的正负性(也即第一偏差为正数、0、负数的情况),与舍入判别参数ie1的正负性(ie1为正数、0、负数的情况)相同。对ie1进行等式变换,有ie1=[(2f1-ulp)2-4fr2]/4=ie-ulp×f1+ulp2/4。可见,舍入判别参数ie1可以基于第一舍入判别参数ie和f1进行计算得到。考虑到第一舍入判别参数ie的位宽以及ulp×f1运算后的位宽,其中最小的有效数字是在小数点后2N位,N为目标尾数X的小数部分的位宽。而ulp2/4的有效数字是在小数点后2N+2位,可见ulp2/4位于第一舍入判别参数ie以及计算ulp×f1这两个运算的有效数据范围之外,从ie1中去掉ulp2/4的结果,与ie1的符号相同,并且不为零。由此处理器可以确定第二舍入判别参数ien用于RH方式,其中第二舍入判别参数ien与第一舍入判别参数ie之间的关系可以用ien=ie-ulp×f1。第二舍入判别参数ien可以表征第一距离的平方与第二距离平方之间的偏差。
在第一舍入参数ie小于0的情形中,此时有f2>fr>f1。将fr与前述f2之间的偏差记为第三距离(f2-fr),前述f1与fr之间的偏差记为第四距离(fr-f1)。第三距离与第二距离的偏差为(f2-fr)-(fr-f1),记为第二偏差。舍入判别参数ie2可以为第三距离的平方与第四距离的平方的差值,则有ie2=[(f2-fr)-(fr-f1)]×[(f2-fr)+(fr-f1)],也即ie2=(f2-fr)2-(fr-f1)2
(f2-fr)+(fr-f1)的结果为整数,第二偏差的正负性(也即第二偏差为正数、0、负数的情况),与舍入判别参数ie2的正负性(ie2为正数、0、负数的情况)相同。对ie2进行等式变换,有ie2=[(2f1+ulp)2-4fr2]/4=ie+ulp×f1+ulp2/4。可见,舍入片别参数ie2可以基于第一舍入判别参数ie和f1进行计算得到。考虑到ie的位宽以及ulp×f1运算后的位宽,其中最小的有效数字是在小数点后2N位,N为目标尾数X的小数部分的位宽。而ulp2/4的有效数字是在小数点后2N+2位,可见ulp2/4位于确定ie以及计算ulp×f1这两个运算的有效数据范围之外,从ie2中去掉ulp2/4的结果,与ie2的符号相同,并且不为零。由此处理器可以确定第三舍入判别参数iep用于RH方式,其中第三舍入判别参数iep与第一舍入判别参数ie之间的关系可以用iep=ie+ulp×f1。第三舍入判别参数iep可以表征第三距离的平方与第四距离的平方的差值。
可见,处理器可以基于所述第一位宽部分(也即fu)和所述第二位宽部分(fl),确定第二舍入判别参数ien和第三舍入判别参数iep,其中,ien=ie-ulp×f1,iep=ie+ulp×f1,ie=fu 2+fl 2+2×fu×fl-X。其中,X为目标尾数X。
处理器可以根据第二舍入判别参数ien与预设数值的比较结果以及第三舍入判别参数iep与预设数值的比较结果,从多个待选结果中选择一个待选结果,并将选择的待选结果确定为目标尾数X的平方根。示例性的,预设数值可以配置为0。
处理器可以根据第三舍入判别参数iep小于0,确定第二待选结果f2为目标尾数X的平方根。处理器可以根据第二舍入判别参数ien大于或等于0,确定第三待选结果f3为目标尾数X的平方根。处理器可以根据第三舍入判别参数iep大于或等于0,或者第二舍入判别参数ien小于0,确定第一待选结果f1为目标尾数X的平方根。
本申请实施例中,处理器确定出的第一舍入判别参数ie、第二舍入判别参数ien、第三舍入判别参数iep,可以保障目标尾数X的平方根与的实数之间的误差小于1ulp(2-N),其中N为目标尾数X的小数部分的位宽,也即/>ulp为最小精度单位(unitof least precision,ulp),ulp表征目标尾数X的平方根(/>的计算结果)的全位宽中能够表达的最小的有效的数。在RP方式中,确定出的目标尾数X的平方根f是从第一待选结果f1和第二待选结果f2中进行选择。在RZ方式中,定出的目标尾数X的平方根f是从第一待选结果f1和第三待选结果f3中进行选择。在RH方式中,确定出的目标尾数X的平方根f是从第一待选结果f1、第二待选结果f2和第三待选结果f3中进行选择。
在第一舍入参数ie=0的情形中,可以直接选择f1作为目标尾数X的平方根f。
处理器可以基于第二舍入判别参数ien的正负性,从第一待选结果f1和第三待选结果f3中选择一个作为目标尾数X的平方根f。处理器可以基于公式确定目标尾数X的平方根f。
处理器可以基于第三舍入判别参数iep的正负性,从第一待选结果f1和第二待选结果f2中选择一个作为目标尾数X的平方根f。处理器可以基于公式确定目标尾数X的平方根f。
由于iep<0时,ie是小于0的。ien≥0时,ie是大于0的。处理器在RH方式中,可以基于公式确定目标尾数X的平方根f,其中else可指iep≥0的情形,或者ien<0的情形。
本申请实施例中处理器确定出的第二舍入判别参数ien和第三舍入判别参数iep可以保障计算精度,并且具有更小的计算量。
通过上述对处理器可以执行的舍入方式的介绍可知,利用目标尾数X的平方根的高位部分和低位部分计算目标尾数X的平方根f时,不会出现IEEE754的舍入标准中的tieto even以及tie to away的情况。从而处理器可以不需要配置执行tie to even以及tieto away的舍入方式的电路,可以减小处理器电路面积。
处理器可以基于所述阶码EW,确定浮点数W的平方根的指数偏移值。示例性的,若浮点数W的阶码EW为偶数,且为正数,则处理器可以将确定为浮点数W的平方根的指数偏移值。若浮点数W的阶码EW为奇数,且为正数,则处理器可以将确定为浮点数W的平方根的指数偏移值。
处理器可以输出浮点数W的平方根其中,/>的符号位与所述浮点数W的符号位相同,/>的尾数与所述目标尾数X的平方根的小数部分相同。
为保障处理器确定的目标尾数X的平方根与的实数之间的误差小于1ulp,目标尾数X的小数部分的位宽可以被配置为N位,第一位宽部分的全位宽可以被配置为d+2位,此时第一位宽部分的小数部分的位宽为d+1位,其中,d与N的关系可以符合预设条件,预设条件可以为/>
下面结合确定目标尾数X的平方根过程中的误差进行说明。一种可能的实施方式中,处理器利用目标尾数X的部分位宽,例如,目标尾数X小数部分的高t4位(记为Xt),确定所述第一位宽部分(即fu),其中t4为正整数,且t4小于目标尾数X的全位宽。此时fu的小数部分的位宽为d+1位。此时目标尾数X与Xt的关系为,X=Xt+Xr,Xr表征目标尾数X除了高t4位的部分,由于X∈[1,4),此时Xr∈[0,2-(d+1))。处理器采用前述方式一中的操作,基于Xt确定所述第一位宽部分的倒数(即),此时/>的小数部分的位宽为d+1位。/>
处理器确定第一位宽部分(即fu)过程中产生的误差为其中,|ε1|<2-(d+1)。处理器确定第一位宽部分的倒数/>过程中产生的误差为/>其中,|ε2|<2-(d+1)。处理器确定第二位宽部分的过程中,基于f的低位部分fl、f的高位部分fu以及目标尾数X的关系,即/>在实际场景中,/>的位宽可能超过n位,而第二位宽部分的位宽为n,则处理器保留/>的高n位作为第二位宽部分(即fl),会产生误差eRH也即eRH为2-(N+1)。处理器在确定第二位宽部分的过程中产生的误差包括计算/>与/>乘法过程产生的误差ec以及保留操作中产生的误差eRH
此时,确定的误差err可以表达为|e+eRH|,并且/> 为使确定/>的误差err小于1ulp,则有|err|<2-N。结合|err|<2-N,可以得到前述预设条件/>
基于前面的介绍,目标第一查询参数r1可以为目标尾数X的小数部分中的第一部分(第一部分位宽)。示例性的,目标第一查询参数可以为目标尾数X的小数部分的高nr1位(或者低nr1位),nr1为正整数,且nr1小于或等于目标尾数X的小数部分的全位宽。在一些可能的设计中,所述预设条件可以配置为处理器可以利用目标尾数X的小数部分中除前述第一部分位宽之外的位宽中的高t5位,以及目标尾数X的小数部分中的第一部分(即目标尾数X的小数部分的高nr1位),确定所述第一位宽部分(即fu)和所述第一位宽部分的倒数(即/>),其中,t5为正整数。可见,处理器利用目标尾数X的小数部分的高nr1+t5位,也即前述t4=nr1+t5。Xt的小数部分的位宽t4的数值为d+2位(即/>),并且第一位宽部分(即fu)的小数部分的位宽为d+1位,可以实现目标尾数X的平方根与/>的实数之间的误差小于1ulp(即/>)。可见,本申请实施例中,处理器可以利用目标尾数X的小数部分的高位的数据计算第一位宽部分(即fu)。其中,目标尾数X的小数部分的高/>位中的高nr1位可以作为索引位,用于确定目标第一查询参数r1,便于确定第一多项式拟合方程的系数。目标尾数X的小数部分的高/>位中除了高nr1位之外的其它位可以作为计算位,用于作为第一多项式拟合方程中的变量值,参与计算第一位宽部分(即fu)。
可以理解的是,为了实现上述方法实施例中步骤(或功能),处理器可以包括执行各个步骤(或功能)相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本申请中所公开的实施例描述的各示例的模块及方法步骤,本申请能够以硬件或硬件和计算机软件相结合的形式来实现。某个步骤(或功能)究竟以硬件还是计算机软件驱动硬件的方式来执行,可以取决于技术方案的特定应用场景和设计约束条件。
基于相同发明构思,本申请还提供一种浮点数计算模块。下面结合浮点数计算模块的结构进行介绍。图5根据一示例性实施例示出一种浮点数计算模块。浮点数计算模块可以包括高位计算单元、低位计算单元、精确舍入单元。高位计算单元、低位计算单元、精确舍入单元可以获取目标尾数X的全部或部分位宽。
可选的,浮点数计算模块还可以包括前处理单元。前处理单元可以接收待计算的浮点数Z,并将浮点数Z通过前处理方式,转换为浮点数W。下面结合浮点数表示形式进行介绍。输入到前处理单元的浮点数Z表示形式为Z=S×M0×QEk-指数偏移量,其中,S表征浮点数的符号位,M0表征浮点数的尾数,Q表征浮点数的基数,Ek表征浮点数的指数偏移值,(Ek-指数偏移量)表征浮点数Z的阶码值EZ。指数偏移量为预设的数,且与浮点数Z的类型有关。示例性的,浮点数Z为单精度浮点数,指数偏移量为127;浮点数为双精度浮点数,指数偏移量为1023。
前处理单元可以通过多个信号线接收浮点数Z。每个信号线中,第一电平的信号可以表征“0”,第二电平的信号可以表征“1”。可选的,第一电平可以为高电平,第二电平可以为低电平。或者第一电平可以为低电平,第二电平可以为高电平。一个信号线可以对应浮点数Z的全位宽中的一个位宽。本申请实施例提供的浮点数计算模块中各单元之间的连线表征单元之间的交互,并不表征单元之间的实际连线方式。
前处理单元可以具有对浮点数Z进行前处理的能力。前处理单元可以包括但不限于如下功能,正常值化处理功能、阶码奇偶判定功能、阶码变换处理功能、尾数变换处理功能,实现支持前处理单元对浮点数Z进行前处理。
前处理单元接收的浮点数Z可以为正常值化(normalized)的浮点数,也即规则化的浮点数。前处理单元也可以接收到的浮点数Z也可以为非正常值化的浮点数,也即非规则化(denormalized)的浮点数。
图4中的(a)根据一示例性实施例示出浮点数Z的前处理过程。前处理单元具有对非正常值化的浮点数进行正常值化处理的能力。前处理单元的正常值化处理中,正常值化处理后的浮点数Z可以记为浮点数W,浮点数W可以表征为S×M1×QEW。其中S为符号位、Q为基数、EW为阶码值,其中M1为尾数,并且M1中每一位的数值介于0和基数Q之间,M1的最高位的数字不为零。尾数M1为定点数,其中最高位为整数部分,除最高位之外的部分为小数部分,正常值化后的浮点数的尾数M1的整数部分不为0。
前处理单元的阶码奇偶判定功能中,前处理单元对浮点数W(浮点数Z正常值化处理后的表达格式)的阶码EW进行奇偶判定过程中,前处理单元可以根据阶码EW的最低位为0,反映浮点数W的阶码EW为奇数。浮点数W的阶码EW的最低位为1,可以反映浮点数W的阶码EW为偶数。
一种可能的情形中,如图4中的(b)所示,前处理单元可以根据浮点数W的阶码EW为奇数,对浮点数W的尾数M1进行尾数变换处理,以及对浮点数W的阶码EW进行阶码变换处理。
在浮点数W的阶码EW为奇数的情形中,前处理单元可以根据浮点数W的阶码EW为奇数,对浮点数W的尾数M1进行第一尾数变换处理,得到尾数M2。示例性的,第一尾数变换处理可以为乘Q操作。前处理单元可以根据浮点数W的阶码EW为奇数,对尾数M1进行乘Q操作,得到尾数M2。
示例性的,Q为2。如图4中的(b)所示,尾数M1包括整数部分和小数部分。黑色方框示出整数部分的比特,白色方框示出小数部分的比特。浮点数W的尾数M1的整数部分为1个比特,尾数M1的整数部分为第s1位示出的比特,尾数M1的小数部分为第0位至第v位示出的比特。此时尾数M1的数值范围为[1,2)。
前处理单元对尾数M1进行乘2操作,也即将尾数M1的各比特的向左移一位,得到尾数M2。此时尾数M2的整数部分为2个比特,尾数M2的整数部分为第s1位和第s2位示出的比特,尾数M2的小数部分为第0位至第v位示出的比特。此时尾数M2的数值范围为[2,4)。可以理解的是,尾数M2的整数部分相比于尾数M1的整数部分额外增添一个比特,补齐IEEE754格式缺省的整数位。在浮点数W的阶码EW为奇数的情形中,目标尾数X为浮点数W的尾数M1的2倍,也即目标尾数X与尾数M2相同。目标尾数X的整数部分可以包括2个比特。此时目标尾数X的数值范围为[2,4)。
上述介绍中,前处理单元对尾数M1执行第一尾数变换处理得到尾数M2,从而得到目标尾数X,用于明晰浮点数W的阶码EW为奇数的情形中,前处理单元由尾数M1得到目标尾数X的过程。在一些应用场景中,前处理单元可以基于预设的尾数变换处理方式,由尾数M1直接得到目标尾数X,并输出目标尾数X。
在浮点数W的阶码EW为奇数的情形下,求解浮点数Z的平方根(也即得到的计算结果)可以转化为计算/>其中,/>
浮点数计算模块还可以包括指数处理单元。如图4中的(b)所示,前处理单元可以根据浮点数W的阶码EW为奇数,对浮点数W的阶码EW进行阶码变换处理,将阶码EW的全位宽中的最低位进行减1操作,得到阶码EW-1,阶码EW-1为偶数。前处理单元可以根据浮点数W的阶码EW为奇数,向指数处理单元输出阶码值EW-1,以便于指数处理单元确定浮点数W的平方根的阶码或者指数偏移值。
前处理单元可以根据浮点数W的阶码EW为奇数,向指数处理单元提供阶码值EW-1。前处理单元可以对阶码值EW-1进行移位,如向阶码位宽的低位方向移动一位,得到的阶码为/>也是/>的阶码。指数处理单元可以基于/>的阶码/>与预设的指数偏移量的总和,计算/>的指数偏移值并输出,其中/>的指数偏移值为/> 预设的指数偏移量与浮点数Z的类型有关。示例性的,浮点数Z为单精度浮点数,指数偏移量可以为127;浮点数为双精度浮点数,指数偏移量可以为1023。
另一种可能的情形中,浮点数W的阶码EW为偶数的情形中,目标尾数X与浮点数W的尾数M1相同。前处理单元可以输出目标尾数X,且目标尾数与浮点数W的尾数M1相同。如图4中的(c),浮点数W的尾数M1的整数部分为1个比特,尾数M1的整数部分为第s1位示出的比特,尾数M1的小数部分为第0位至第v位示出的比特。此时尾数M1的数值范围为[1,2)。浮点数W的尾数与浮点数Z正常值化后的尾数M1相同,则浮点数W的尾数的数值范围为[1,2)。从而目标尾数X的数值范围为[1,2)。可选的,目标尾数X的整数部分相比于尾数M1的整数部分可以额外增添一个比特,配置为0,补齐IEEE754格式缺省的整数位。如增加第s2位比特,且数值配置为0。这样的操作不改变目标尾数X的数值范围。
在浮点数W的阶码EW为偶数的情形下,求解浮点数Z的平方根(也即得到的计算结果)可以转化为计算/>其中,/>前处理单元可以根据浮点数W的阶码EW为偶数,向指数处理单元提供阶码值EW。指数处理单元可以基于/>的阶码/>与预设的指数偏移量的总和,计算/>的指数偏移值并输出,其中/>的指数偏移值为预设的指数偏移量与浮点数Z的类型有关。示例性的,浮点数Z为单精度浮点数,指数偏移量可以为127;浮点数为双精度浮点数,指数偏移量可以为1023。
下面对浮点数计算模块确定目标尾数X的平方根f的过程进行介绍。f一般为定点数。若目标尾数X的小数部分的全位宽是p位,则f的全位宽为p+1位,其中f的全位宽中,最高位为第p位,最低位为第0位,其中第p-1位至第0位,为定点数的小数点后的小数部分。
本申请实施例提供的浮点数计算模块,可以分别确定f的高m位的数据(简称为f的高位部分),以及低n位的数据(简称为f的低位部分)。浮点数计算模块可以基于确定出的f的高位部分和低位部分,确定出的计算结果。高m位可指f的全位宽中由最高位向最低位方向上的前m位。低n位可指f的全位宽中由最高位开始向最低位方向上后n位。可选的,f的高m位与f的低n位可以存在重叠的位,如图6中的(a)所示,假设浮点数Z为单精确度浮点数,尾数的全位宽为23位,则f的全位宽为24位,最高位为第23位,最低位为第0位。f的高m位为第23位向第0位方向上的前m位,f的低n位为第23位向第0位方向上的后n位。如图6中的(b)所示,f的高m位可以与f的后n位不存在重叠的位。前述f的高m位和f的低n位中,m和n的数值可以是预先配置的。一些应用场景中,m和n可以根据浮点数Z的类型配置。
本申请实施例中,便于介绍,“A”的高w位,可指由“A”的最高位向最低位方向上的前w个位的数据。“A”的低w位,可指“A”的最高位向最低位方向上的后w个位的数据。
便于介绍,f的高m位用fu表示,f中低n位用fl表示,则X=f2=(fu+fl)2。此时,f的高位部分fu和低位部分fl之间的关系为简化f的计算过程,高位部分fu和低位部分fl之间的关系可以近似为/>本申请实施例中,f的高位部分fu表征/>的近似值,也即f的近似值。(fu+fl)可以表征/>的精确值,也即f的精确值。
前处理单元可以输出目标尾数X,以便于其它单元使用目标尾数X的全位宽或者部分位宽。本申请实施例中,目标尾数X表征浮点数Z前处理后的尾数,下面简称为浮点数Z的目标尾数X。EW表征浮点数Z正常值处理后的阶码,下面简称为浮点数Z的阶码EW。
请继续参见图5,高位计算单元可以与前处理单元连接。高位计算单元可以接收前处理单元输出的目标尾数X的全部或部分位宽。高位计算单元可以接收前处理单元输出的浮点数W的尾数M1的全部或部分位宽,浮点数W的阶码EW的全部或部分位宽。
高位计算单元可以利用多项式近似的方法,基于第一多项式拟合方程、目标尾数X的全部或部分位宽,确定目标尾数X的平方根f的高位部分fu
高位计算单元可以基于浮点数W的尾数M1确定目标第一查询参数r1,高位计算单元可以基于浮点数W的阶码EW确定目标第二查询参数r2。本申请实施例中,目标第一查询参数可以为浮点数W的尾数M1小数部分中的第一部分(第一部分位宽)。示例性的,目标第一查询参数可以为浮点数W的尾数M1小数部分的高nr1位(或者低nr1位),nr1为正整数,且nr1小于或等于浮点数W的尾数M1小数部分的全位宽。所述目标第二查询参数为浮点数W阶码EW的部分位宽,且包括浮点数W的阶码EW的最低位宽。目标第二查询参数r2可以为浮点数W的阶码EW的低nr2位,nr2为正整数,且nr2为小于或等于阶码EW的全部位宽,可见阶码EW的低nr2位包括阶码EW的最低位。可选的,目标第二查询参数r2可以为浮点数W的阶码EW的低1位比特的数据,该数据可以反映出阶码EW为奇数或者偶数。
高位计算单元可以基于目标第一查询参数r1和目标第二查询参数r2,确定目标第一查询参数r1和目标第二查询参数r2对应的第一多项式拟合方程的系数,第一多项式拟合方程的系数可以包括第一拟合参数a1、第二拟合参数b1、第三拟合参数c1。
高位计算单元可以根据第一多项式拟合方程的系数和浮点数W的尾数M1小数部分中全部或部分位宽,计算f的高位部分fu。示例性的,高位计算单元可以根据第一多项式拟合方程的系数,浮点数W的尾数M1小数部分中第二部分(第二部分位宽),计算f的高位部分fu,其中,fu=a1×(X1)2+b1×X1+c1。X1为浮点数W的尾数M1小数部分的第二部分(第二部分位宽),并且所述浮点数W的尾数M1小数部分中的第二部分对应的位宽与所述浮点数W的尾数M1小数部分中第一部分对应的位宽不重叠。可选的,X1为浮点数W的尾数M1小数部分中除前述第一部分的位宽之外其它位宽中的高t1位,t1为正整数。本申请实施例中,高位计算单元利用浮点数W的尾数M1小数部分的第一部分确定多项式拟合方程的系数,利用浮点数W的尾数M1小数部分的第二部分参与多项式拟合方程的计算,确定目标尾数X的平方根的近似解,即f的高位部分fu
在一些应用场景中,目标尾数X小数部分的位宽为N位,高位计算单元可以接收目标尾数X的小数部分除去前述第一部分位宽之外的位宽中高t1位,以及接收目标第一查询参数r1,用于计算f的高位部分fu,其中,前述X1的全位宽为t1位,目标第一查询参数r1的全位宽为nr1位。其中,t1,nr1与N的关系为示例性的,浮点数Z为DP浮点数,前处理后的浮点数Z的目标尾数X小数部分的位宽为N=52位。高位计算单元可以利用目标尾数X的小数部分高29(也即/>)位,计算f的高位部分fu。其中,目标尾数X的小数部分高29位中的高nr1位可以作为目标第一查询参数r1,其它部分作为前述X1,并且nr1的数值可以灵活配置。可选的,浮点数Z为DP浮点数,f的高位部分fu的全位宽可以为29位。
一种可能的设计中,高位计算单元可以获取或者配置有第一多项式系数查找表。第一多项式系数查找表可以表征多个第一拟合参数组合与多个第一查询参数组合的对应关系。其中,各第一查询参数组合具有对应的第一拟合参数组合。每个第一拟合参数组合可以包括第一拟合参数a1、第二拟合参数b1、第三拟合参数c1。每个第一查询参数组合可以包括第一查询参数和第二查询参数。目标第一查询参数r1和目标第二查询参数r2可以构成目标第一查询参数组合。
高位计算单元可以从第一多项式系数查找表中查找出目标第一查询参数组合对应的第一拟合参数组合,其中,从而实现确定目标第一查询参数r1和目标第二查询参数r2对应的第一多项式拟合方程的系数。
示例性的,浮点数Z为DP浮点数,目标第二查询参数可以为浮点数W(浮点数Z正常值化后的)的阶码EW的低1位(最小位),目标第一查询参数可以为目标尾数X的小数部分的高7位,也即目标尾数X除最高位之外的部分中的高7位,也即目标尾数X的小数部分中第11位至第18位。高位计算单元可以利用8位数据进行查表。可选的,第一多项式系数查找表中可以具有256个表项,分别为256个第一查询参数组合与各第一查询组合对应的第一拟合参数a1、第二拟合参数b1、第三拟合参数c1。
另一种可能的设计中,第一多项式系数查找表可以包括每个第一查询参数对应的多个第一拟合参数组合。一个第一查询参数可以具有在第二查询参数为奇数情形下对应的第一拟合参数组合,以及在第二查询参数为偶数情形下对应的第一拟合参数组合。第一多项式系数查找表可以包括第一奇数查找子表和第一偶数查找子表。其中,第一奇数查找子表中包括在第二查询参数为奇数情形下第一查询参数对应的第一拟合参数组合。第一偶数查找子表中包括在第二查询参数为偶数情形下第一查询参数对应的第一拟合参数组合。
高位计算单元可以根据目标第二查询参数r2为偶数,从第一偶数查找子表中查找目标第一查询参数r1对应的第一拟合参数组合。或者,高位计算单元可以根据目标第二查询参数r2为奇数,从第一奇数查找子表中查找目标第一查询参数r1对应的第一拟合参数组合。从而实现确定目标第一查询参数r1和目标第二查询参数r2对应的第一多项式拟合方程的系数。
示例性的,浮点数Z为DP浮点数,目标第二查询参数可以为浮点数W(浮点数Z正常值化后的)的阶码EW的低1位(最小位),目标第一查询参数可以为目标尾数X的小数部分的高7位,也即目标尾数X除最高位之外的部分中的高7位,也即目标尾数X的小数部分中第11位至第18位。高位计算单元可以利用8位数据进行查表。第一多项式系数查找表可以包括第一奇数查找子表和第一偶数查找子表。第一奇数查找子表可以包括128个表项,各表项表征浮点数W的阶码为奇数情形下,各目标第一查询参数对应的第一多项式拟合方程的系数。类似地,第一偶数查找子表可以包括128个表项,各表项表征浮点数W的阶码为偶数的情形下,各目标第一查询参数对应的第一多项式拟合方程的系数。
高位计算单元可以根据目标第二查询参数r2为奇数,从第一奇数查找子表中查询目标第一查询参数r1对应的第一多项式拟合方程的系数。或者,高位计算单元可以根据目标第二查询参数r2为偶数,从第一偶数查找子表中查询目标第一查询参数r1对应的第一多项式拟合方程的系数。
一种可能的实施方式中,本申请实施例中,预先配置的第一多项式系数查找表,也即第一拟合参数a1、第二拟合参数b1、第三拟合参数c1、以及第一查询参数组合的对应关系中,第一拟合参数a1、第二拟合参数b1、第三拟合参数c1可以存储在同一个第一存储模块中,如图7中的(a)所示。或者,第一拟合参数a1、第二拟合参数b1、第三拟合参数c1可以分别存储在三个第一存储模块中,如图7中的(b)所示。又或者,第一拟合参数a1、第二拟合参数b1、第三拟合参数c1中的任意两种参数存储在同一个第一存储模块中,如图7中的(c)所示,第一拟合参数a1和第二拟合参数b1存储在同一个第一存储模块中,第三拟合参数c1存储在另一个第一存储模块中。其中,第一多项式系数查找表中可以包括预设数量个第一查询参数组合分别对应的第一拟合参数a1、第二拟合参数b1、以及第三拟合参数c1。
低位计算单元可以包括第一高位倒数计算电路和低位运算电路。其中,第一高位倒数计算电路可以与高位计算单元可以并行运行,从而低位计算单元可以与高位计算单元并行运行。
第一高位倒数计算电路可以与前处理单元连接。第一高位倒数计算电路可以接收前处理单元所输出的目标尾数X的全部或部分位宽。第一高位倒数计算电路可以接收前处理单元所输出的阶码EW的全部或部分位宽。
第一高位倒数计算电路可以基于浮点数W的尾数M1确定目标第三查询参数h1,第一高位倒数计算电路可以基于浮点数W的阶码EW确定目标第四查询参数h2。本申请实施例中,所述目标第三查询参数为浮点数W的尾数M1的第三部分(第三部分位宽)。示例性的,目标第三查询参数h1可以指浮点数W的尾数M1小数部分的高nh1位(或者低nh1位),nh1为正整数,且nh1小于或等于浮点数W的尾数M1的小数部分的全位宽。所述目标第四查询参数h2为浮点数W的阶码EW的部分位宽,并且包括浮点数W的阶码EW的最低位宽。示例性的,目标第四查询参数可以指浮点数W的阶码EW的高nh2位(或者低nh2位),h2为正整数,且nh2为小于或等于浮点数W的阶码EW的全部位宽。可选的,目标第四查询参数h2可以为浮点数W的阶码EW的低1位比特的数据,该数据可以反映出阶码EW为奇数或者偶数。
第一高位倒数计算电路可以基于目标第三查询参数h1和目标第四查询参数h2,确定目标第三查询参数h1和目标第四查询参数h2对应的第二多项式拟合方程的系数,第二多项式拟合方程的系数可以包括第四拟合参数a2、第五拟合参数b2、第六拟合参数c2。
第一高位倒数计算电路可以根据第二多项式拟合方程的系数,浮点数W的小数部分的全部或部分位宽,计算得到f的高位部分fu的倒数示例性的,第一高位倒数计算电路可以根据第二多项式拟合方程的系数,浮点数W的小数部分的第四部分(第四部分位宽),计算得到f的高位部分fu的倒数/>其中,/>第一高位倒数计算电路可以输出f的高位部分fu的倒数/>X2为浮点数W的尾数小数部分的第四部分(第四部分位宽),并且所述浮点数W的小数部分的第四部分对应的位宽与所述浮点数W的小数部分的第三部分对应的位宽不重叠。可选的,X2为浮点数W的小数部分中除前述第三部分位宽之外的位宽中的高t2位,t2为正整数。
在一些应用场景中,目标尾数X小数部分的全位宽为N位,第一高位倒数计算电路可以接收目标第三查询参数h1,以及接收目标尾数X的小数部分中除前述第三部分位宽之外的位宽中的高t2位,用于计算f的高位部分fu的倒数目标第三查询参数h1的全位宽为nh1,X2的全位宽为t2位。其中,nh1,t2与N的关系为/>示例性的,浮点数Z为DP浮点数,目标尾数X小数部分全位宽为N=52位。第一高位倒数计算电路可以利用目标尾数X的小数部分高29/>位,计算f的高位部分fu的倒数/>其中,目标尾数X的小数部分高29位中的高nh1位可以作为目标第三查询参数h1,其它部分作为前述X2,并且nh1的数值可以灵活配置。可选的,浮点数Z为DP浮点数,第一高位倒数计算电路可以输出f的高位部分fu的倒数/>的全位宽为29位。
一种可能的设计中,第一高位倒数计算电路可以配置有第二多项式系数查找表,第二多项式系数查找表可以表征多个第二拟合参数组合与多个第二查询参数组合的对应关系。其中,各第二查询参数组合具有对应的第二拟合参数组合。每个第二拟合参数组合可以包括第四拟合参数a2、第五拟合参数b2、第六拟合参数c2。第一高位倒数计算电路可以从第二多项式系数查找表中查找出目标第二查询参数组合对应的第二拟合参数组合,其中,目标第二查询参数组合对应的第二拟合参数组合中的拟合参数用于作为目标第二查询参数组合对应的第二多项式拟合方程的系数。
示例性的,浮点数Z为DP浮点数,第四查询参数可以指浮点数W的阶码EW的低1位(最小位),第三查询参数可以指目标尾数X小数部分的高8位。或者,第四查询参数可以指浮点数W的阶码EW的低2位,第三查询参数可以指目标尾数X小数部分的高7位。可见,第一高位倒数计算电路可以利用第三查询参数、第四查询参数,共9位数据进行查表。可选的,第二多项式系数查找表中可以具有29,即512个表项,分别为512个第二查询组合与各第二查询组合对应的第四拟合参数a2、第五拟合参数b2、第六拟合参数c2。
另一种可能的设计中,第二多项式系数查找表可以包括每个第三查询参数对应的多个第二拟合参数组合。一个第三查询参数可以具有在第四查询参数为奇数情形下对应的第二拟合参数组合,以及在第四查询参数为偶数情形下对应的第二拟合参数组合。第二多项式系数查找表可以包括第二奇数查找子表和第二偶数查找子表。其中,第二奇数查找子表中表征第四查询参数为奇数时第三查询参数对应的第二拟合参数组合。第二偶数查找子表中包括第四查询参数为偶数时第三查询参数对应的第二拟合参数组合。
第一高位倒数计算电路可以根据目标第四查询参数h2为偶数,从第二偶数查找子表中查找目标第三查询参数h1对应的第二拟合参数组合。或者,第一高位倒数计算电路可以根据目标第四查询参数h2为奇数,从第二奇数查找子表中查找目标第三查询参数h1对应的第二拟合参数组合。实现第一高位倒数计算电路从第二多项式系数查找表中查找出目标第二查询参数组合对应的第二拟合参数组合,从而实现确定目标第三查询参数h1和目标第四查询参数h2对应的第一多项式拟合方程的系数。
一种可能的实施方式中,预先配置的第二多项式系数查找表,也即第四拟合参数a2、第五拟合参数b2、第六拟合参数c2、以及第二查询参数组合的对应关系中,第二拟合参数a2、第五拟合参数b2、第六拟合参数c2可以存储在同一个第二存储模块中。或者,第二拟合参数a2、第五拟合参数b2、第六拟合参数c2可以分别存储在三个第二存储模块中。又或者,第二拟合参数a2、第五拟合参数b2、第六拟合参数c2中的任意两种参数存储在同一个第二存储模块中,其它参数存储在另一个第二存储模块中。其中,第二多项式系数查找表中可以包括预设数量个第二查询参数组合分别对应的第四拟合参数a2、第五拟合参数b2、第六拟合参数c2。
低位运算电路可以与第一高位倒数计算电路连接,与前处理单元连接、以及与高位计算单元连接。低位运算电路可以接收到用第一高位倒数计算电路输出f的高位部分fu的倒数(即),前处理单元输出的目标尾数X,以及高位计算单元输出的f的高位部分fu。低位计算单元可以根据f的高位部分fu和低位部分fl之间的关系/>计算得到f的低位部分fl。低位运算电路可以输出f的低位部分fl,也是实现低位计算单元输出f的低位部分fl
精确舍入单元可以接收到高位计算单元输出的f的高位部分fu,低位计算单元输出的输出f的低位部分fl。精确舍入单元可以支持多种舍入方式的情形中,精确舍入单元可以预先获取到舍入方式配置参数,根据舍入方式配置参数对应的舍入方式,目标尾数X的平方根的计算结果。可选的,RH方式、RP方式、RZ方式可以为IEEE 754中规定的舍入方式。
精确舍入单元可以根据高位计算单元输出的fu,以及接收到低位计算单元输出的fl确定多个待选计算结果。精确舍入单元可以基于预先配置的舍入方式,计算多个待选结果。或者基于获取到的舍入方式配置参数,计算多个待选结果。可选的,多个待选计算结果可以包括如下中的至少两个:第一待选结果f1,第二待选结果f2以及第三待选结果f3。
示例性的,精确舍入单元可以基于RP方式,计算第一待选结果f1和第二待选结果f2。精确舍入单元可以基于RZ方式,计算第一待选结果f1和第三待选结果f3。精确舍入单元可以基于RH方式,计算第一待选结果f1,第二待选结果f2以及第三待选结果f3。
精确舍入单元计算第一待选结果f1的过程进行介绍。根据高位计算单元输出的fu,以及接收到低位计算单元输出的fl,得到第一待选结果f1,可以简记为f1=fu+fl。下面对确定f1的过程进行介绍,也即对fu与fl的加和处理(fu+fl)的含义进行说明。
一种可能的情形中,目标尾数X的平方根f的高m位与目标尾数X的平方根f的低n位不存在重叠位,且m与n的总和等于目标尾数X的平方根f的计算结果的全位宽。精确舍入单元接收到高位计算单元输出的fu,以及接收到低位计算单元输出的fl后,将fu与fl进行拼接处理,可以得到f1。示例性的,如图8中的(a)所示,精确舍入单元得到的f1的高m位与fu相同,f1的低n位与fl相同。
另一种可能的情形中,目标尾数X的平方根f的高m位与目标尾数X的平方根f的低n位存在重叠位,便于介绍将假设目标尾数X的平方根f的高m位中位数最低的q位与目标尾数X的平方根f的低n位中位数最高的q位重叠。例如,图8中的(b)虚线椭圆框示出高m位与低n位重叠位,其中高m位中位数最低的2位,与低n位中位数最高的2位是重叠的。在此情形中,精确舍入单元接收到高位计算单元输出的fu,以及接收到低位计算单元输出的fl后,将fu与fl进行加和处理。示例性的,精确舍入单元得到的第一待选结果f1的低n-q位,与fl的低n-q位相同。fu与fl的高q位加和处理后的结果是精确舍入单元得到的第一待选结果f1的高m+q位。
精确舍入单元可以根据第一待选结果f1与ulp确定(或者得到)第二待选结果f2,其中,f2=f1+ulp。ulp表征目标尾数X的平方根f的全位宽中能够表达的最小的有效的数。如图9中的(a)所示,假设目标尾数X的平方根f的全位宽为24位,最低位为第0位,最高位为第23位,则ulp表征的数为第0位为1,其它位均为0。目标尾数X的小数部分的全位宽为Nt,则ulp为Q-Nt。示例性的,现有计算机执行浮点数计算时浮点数的基数Q一般为2。下面对确定f2的过程进行介绍,也即对f2=f1+ulp的含义进行说明。如图9中的(b)所示,精确舍入单元可以将第一待选结果f1与ulp加和处理,得到第二待选结果f2。精确舍入单元可以根据第一待选结果f1与ulp确定(或者得到)第三待选结果f3,其中f3=f1-ulp。如图9中的(c)所示,精确舍入单元可以将第一待选结果f1与ulp做减法处理,得到第三待选结果f3。
一个示例中,精确舍入单元可以根据fu和fl,计算第一舍入判别参数ie。第一舍入判别参数ie表征(fu+fl)2与X之间的偏差。具体的,ie=(fu+fl)2-X,也即ie=fu 2+fl 2+2×fu×fl-X。其中,X为目标尾数。可选的,浮点数Z为DP浮点数时,t3的数值可以为3。可选的,精确舍入单元可以利用(fu 2+fl 2+2×fu×fl)的低位部分与目标尾数(X)低位部分计算第一舍入判别参数(ie),可以减少电路开销,减小电路占片面积。
精确舍入单元执行RP方式时,可以根据第一舍入判别参数ie大于或等于0,输出第一待选结果f1,也即的计算结果为第一待选结果f1。或者根据第一舍入判别参数ie小于0,输出第二待选结果f2,也即/>的计算结果为f2。
精确舍入单元执行RZ方式时,可以根据第一舍入判别参数ie小于或等于0,输出第一待选结果f1,也即的计算结果为第一待选结果f1。或者根据第一舍入判别参数ie大于0,输出第三待选结果f3,也即/>的计算结果为第三待选结果f3。
另一个示例中,精确舍入单元可以根据第一待选结果f1和第一舍入判别参数ie,确定第二舍入判别参数ien。这样的设计中,可以复用计算第一舍入判别参数ie的电路,减少电路开销,优化电路占片面积。的实数fr与前述f1之间的偏差记为第一距离(f1-fr),前述f3与/>的真实结果fr之间的偏差记为第二距离(fr-f3)。第二舍入判别参数ien可以表征第一距离的平方与第二距离的平方的偏差。
精确舍入单元可以利用将第一待选结果f1的有效数字的最高位与第一舍入判别参数ie的有效数字的最高位对齐,可以通过ulp与第一待选结果f1相乘实现,第一待选结果f1的有效数字的最高位与第一舍入判别参数ie的有效数字的最高位对齐后的数据可以用ulp×f1表达。精确舍入单元可以将第一舍入判别参数ie与数据ulp×f1做减法处理,得到第二舍入判别参数ien。可见,第二舍入判别参数ien与第一舍入判别参数ie之间的关系可以用ien=ie-ulp×f1表示。
精确舍入单元可以根据第一待选结果f1和第一舍入判别参数ie,确定第三舍入判别参数iep。的实数fr与前述f2之间的偏差记为第三距离(f2-fr),前述f1与/>的实数fr之间的偏差记为第四距离(fr-f1)。第三舍入判别参数iep可以表征第三距离的平方与第四距离的平方的偏差。精确舍入单元可以将第一舍入判别参数ie与数据ulp×f1做加和处理,得到第三舍入判别参数iep。也即,第三舍入判别参数iep与第一舍入判别参数ie之间的关系可以用iep=ie+ulp×f1表示。
精确舍入单元执行RH方式时,精确舍入单元可以根据第三舍入判别参数iep小于0,输出第二待选结果f2,也即的计算结果为第二待选结果f2。精确舍入单元可以根据第二舍入判别参数ien大于或等于0,输出第三待选结果,也即/>的计算结果为前述f3。精确舍入单元可以根据第三舍入判别参数iep大于或等于0,或者第二舍入判别参数ien小于0,输出第一待选结果f1,也即/>的计算结果为前述第一待选结果f1。
本申请实施例中,浮点数计算模块可以输出的浮点数Z的平方根的计算结果其中,浮点数Z的平方根的计算结果/>中,符号位与浮点数Z的符号位相同,尾数为精确舍入单元输出的/>的计算结果的小数部分,计算结果/>的指数偏移值为指数处理单元输出的指数偏移量。若浮点数W(浮点数Z正常值化后的浮点数)的阶码EW为偶数的情形下,指数处理单元可以输出/>若浮点数W(浮点数Z正常值化后的浮点数)的阶码EW为奇数的情形下,指数处理单元可以输出/>
图10示例性的示出浮点数计算模块中部分单元的具体结构示意图。本申请实施例提供的浮点数计算模块中,高位计算单元可以包括第一查表电路、第一平方运算电路以及第一多项式求和电路。
第一查表电路可以接收前处理单元输出的目标第一查询参数r1和目标第二查询参数r2,输出目标第一查询参数r1和目标第二查询参数r2对应的第一拟合参数a1、第二拟合参数b1、第三拟合参数c1。第一查表电路可以具有多种实现方式。
一个示例中,如图10所示,第一查表电路可以与存储有多个第一拟合参数a1、多个第二拟合参数b1、多个第三拟合参数c1的第一存储模块连接。第一查表电路可以与前处理单元连接,第一查表电路可以接收前处理单元输出的目标第一查询参数r1和目标第二查询参数r2。目标第一查询参数可以为浮点数W的尾数M1小数部分中的第一部分(第一部分位宽)。所述目标第二查询参数为浮点数W阶码EW的部分位宽,且包括浮点数W的阶码EW的最低位宽。
可选的,第一多项式系数查找表可以包括第一奇数查找子表和第一偶数查找子表。第一奇数查找子表中表征第二查询参数为奇数时第一查询参数对应的第一拟合参数组合。第一偶数查找子表中包括第二查询参数为偶数时第一查询参数对应的第一拟合参数组合。第一查表电路可以根据目标第二查询参数r2为偶数,从第一偶数查找子表中,查找目标第一查询参数r1对应的第一拟合参数组合。或者,第一查表电路可以根据目标第二查询参数r2为奇数,从第一奇数查找子表中,查找目标第一查询参数r1对应的第一拟合参数组合。实现第一查表电路从第一多项式系数查找表中查找出目标第一查询参数组合对应的第一拟合参数组合,从而实现确定目标第一查询参数r1和目标第二查询参数r2对应的第一多项式拟合方程的系数。
第一平方运算电路可以与前处理单元连接,可以接收前处理单元输出的浮点数W的尾数M1小数部分中除前述第一部分位宽之外的位宽中的高t1位(也是前述目标尾数X的部分位宽)。第一平方运算电路可以计算浮点数W的尾数M1的第二部分X1的平方(X1)2,并输出X12
第一多项式求和电路可以与第一查表电路连接、与前处理单元连接,以及与第一平方运算电路连接。第一多项式求和电路可以接收到第一查表电路输出的目标第一查询参数r1和目标第二查询参数r2对应的第一多项式拟合方程的系数。第一多项式求和电路可以接收到前处理单元输出的浮点数W的尾数M1的第二部分X1。第一多项式求和电路可以接收到第一平方运算电路输出的(X1)2
第一多项式求和电路可以根据接收到的目标第一查询参数组合对应的第一拟合参数a1、第二拟合参数b1、第三拟合参数c1、浮点数W的尾数M1的第二部分X1,以及目标尾数X的第二部分X1的平方(X1)2,计算得到f的高部分fu,并输出,其中fu=a1×(X1)2+b1×X1+c1。可选的,第一多项式求和电路可以包括乘法器和加法器,或者第一多项式求和电路可以包括乘加器。
本申请实施例提供的浮点数计算模块中,低位计算单元可以包括第一高位倒数计算电路和低位运算电路。其中,第一高位倒数计算电路可以包括第二查表电路、第二平方运算电路以及第二多项式求和电路。
第二查表电路可以接收前处理单元输出的目标第三查询参数h1和目标第四查询参数h2,输出目标第三查询参数h1和目标第四查询参数h2对应的第四拟合参数a2、第五拟合参数b2、第六拟合参数c2。第二查表电路可以具有多种实现方式。
一个示例中,如图10所示,第二查表电路可以与存储有多个第四拟合参数a2、多个第五拟合参数b2、多个第六拟合参数c2的第二存储模块连接。第二查表电路可以与前处理单元连接,第二查表电路可以接收前处理单元输出的目标第三查询参数h1和目标第四查询参数h2。所述目标第三查询参数为浮点数W的尾数M1的第三部分(第三部分位宽)。所述目标第四查询参数h2为浮点数W的阶码EW的部分位宽,并且包括浮点数W的阶码EW的最低位宽。
可选的,第二多项式系数查找表可以包括第二奇数查找子表和第二偶数查找子表。第二奇数查找子表中表征第四查询参数为奇数时第三查询参数对应的第二拟合参数组合。第二偶数查找子表中包括第四查询参数为偶数时第三查询参数对应的第二拟合参数组合。
第二查表电路可以根据目标第四查询参数h2为偶数,从第二偶数查找子表中,查找目标第三查询参数h1对应的第二拟合参数组合。或者,第二查表电路可以根据目标第四查询参数h2为奇数,从第二奇数查找子表中,查找目标第三查询参数h1对应的第二拟合参数组合。实现第二查表电路从第二多项式系数查找表中查找出目标第二查询参数组合对应的第二拟合参数组合,从而实现确定目标第三查询参数h1和目标第四查询参数h2对应的第二多项式拟合方程的系数。
第二平方运算电路可以与前处理单元连接,可以接收前处理单元输出的浮点数W的尾数M1的第四部分X2。可选的,X2为浮点数W的尾数M1的小数部分中除前述第三部分位宽之外的位宽中的高t2位,t2为正整数。第二平方运算电路可以计算浮点数W的尾数M1的第四部分X2的平方(X2)2,并输出(X2)2
第二多项式求和电路可以与第二查表电路连接、与前处理单元连接,以及与第二平方运算电路连接。第二多项式求和电路可以接收到第二查表电路输出的目标第二查询参数组合对应的第二多项式方程的系数。第二多项式求和电路可以接收到前处理单元输出的浮点数W的尾数M1的第四部分X2。
第二多项式求和电路可以接收到第二平方运算电路输出的(X2)2。第二多项式求和电路可以根据接收到的目标第二查询参数组合对应的第四拟合参数a2、第五拟合参数b2、第六拟合参数c2、目标尾数X的第四部分X2,以及目标尾数X的第四部分X2的平方(X2)2,计算得到f的高部分fu的倒数其中/>可选的,第二多项式求和电路可以包括乘法器和加法器。或者,第二多项式求和电路可以包括乘加器。
本申请实施例提供的浮点数计算模块中,低位计算单元中的低位运算电路可以包括第三平方运算电路、减法器、第一乘法器以及舍入电路。
第三平方运算电路可以与第一多项式求和电路连接。第三平方运算电路可以接收第一多项式求和电路输出的f的高部分fu。第三平方运算电路可以计算f的高部分fu的平方fu 2,并输出f的高部分fu的平方fu 2
减法器可以与第三平方运算电路连接,以及与前处理单元连接。减法器可以接收第三平方运算电路输出的f的高部分fu的平方fu 2。减法器可以接收前处理单元输出的目标尾数X。减法器可以根据目标尾数X与f的高部分fu的平方fu 2的差值X-fu 2,计算得到并输出。一些可能的应用场景中,低位运算电路中可以采用加法器实现前述减法器的功能,本申请对此不作过多限定。
第一乘法器可以与第二多项式求和电路连接,以及与减法器连接。第一乘法器可以接收减法器输出的第一乘法器可以接收第二多项式求和电路输出的f的高部分fu的倒数/>第一乘法器可以计算得到/>
舍入电路可以与第一乘法器连接,舍入电路可以接收第一乘法器输出的并基于对第一乘法器输出的/>进行四舍五入的操作,得到f的低位部分fl。示例性的,舍入电路可以对第一乘法器输出的/>的高n+1位与“1”进行加和处理,并保留加和处理的结果高n位,作为f的低位部分fl
本申请实施例提供的浮点数计算模块中,精确舍入单元可以包括舍入判别参数计算电路、待选结果计算电路、计算结果选择电路。
舍入判别参数计算电路可以与第一多项式求和电路连接,与舍入电路连接、以及与第三平方运算电路连接。舍入判别参数计算电路可以接收第一多项式求和电路输出的f的高部分fu。舍入判别参数计算电路可以接收舍入电路输出的f的低位部分fl。舍入判别参数计算电路可以接收第三平方运算电路输出的f的高部分fu的平方fu 2。舍入判别参数计算电路可以具有计算至少一种舍入方式对应的舍入判别参数的能力。
可选的,舍入判别参数计算电路可以根据f的低位部分fl、f的高部分fu、f的高部分fu的平方fu 2、目标尾数X,计算得到前述第一舍入判别参数ie。或者,舍入判别参数计算电路可以根据f的低位部分fl、f的高部分fu、f的高部分fu的平方fu 2,计算得到前述第二舍入判别参数ien以及第三舍入判别参数iep。
本申请实施例中,舍入判别参数计算电路输出第一舍入判别参数ie的符号位,可以表征第一舍入判别参数ie是正负性。换句话说,第一舍入判别参数ie的符号位可以指示ie是正数(ie大于),或者ie是负数(ie小于0),或者,ie等于0。类似地,舍入判别参数计算电路可以输出第二舍入判别参数ien的符号位,用于指示第二舍入判别参数ien的正负性。舍入判别参数计算电路可以输出第三舍入判别参数iep的符号位,用于指示第三舍入判别参数iep的正负性。
待选结果计算电路可以与舍入电路连接,以及与第一多项式求和电路连接。待选结果计算电路可以接收舍入电路输出的f的低位部分fl。待选结果计算电路可以接收f的高部分fu。待选结果计算电路可以根据f的低位部分fl以及f的高部分fu,计算得到多个待选结果,并输出。
可选的,多个待选结果包括第一待选结果f1和第二待选结果f2。其中,第一待选结果f1与f的低位部分fl以及f的高部分fu的关系为f1=fu+fl。第二待选结果f2与f的低位部分fl以及f的高部分fu的关系为f2=f1+ulp,ulp为最小精度单位。或者,多个待选结果包括第一待选结果f1和第三待选结果f3。其中,第三待选结果f3与f的低位部分fl以及f的高部分fu的关系为f3=f1-ulp。又或者,多个待选结果包括第一待选结果f1、第二待选结果f2、以及第三待选结果f3。
一些场景中,精确舍入单元可以支持多种舍入方式的情形中,待选结果计算电路可以输出第一待选结果f1、第二待选结果f2、以及第三待选结果f3。
计算结果选择电路可以与舍入判别参数计算电路连接,以及与待选结果计算电路连接。计算结果选择电路可以接收舍入判别参数计算电路输出的舍入判别参数的符号位。计算结果选择电路可以接收待选结果计算电路输出的多个待选结果。
一种可能的设计中,精确舍入单元可以支持一种舍入方式的情形中,计算结果选择电路可以根据预先配置的舍入方式,根据接收的舍入判别参数,从接收的多个待选结果中选择一个待选结果作为的计算结果,并输出。其中,预先配置的舍入方式可以为RH方式、RP方式、RZ方式中的任意一种。
另一种可能的设计中,精确舍入单元可以支持多种舍入方式的情形中,计算结果选择电路可以接收到舍入方式配置参数,并根据舍入方式配置参数对应的舍入方式,结合该舍入方式相应的舍入判别参数,从多个待选结果中选择一个待选结果作为目标尾数X的平方根,并输出。便于介绍,本申请实施例中,第一舍入配置参数表征的舍入方式为RP方式。第二舍入配置参数表征的舍入方式为RZ方式。第三舍入配置参数表征的舍入方式为RH方式。
一个示例中,计算结果选择电路接收到的舍入方式配置参数为第一舍入方式配置参数,计算结果选择电路可以根据第一舍入判别参数ie为e大于或等于0,输出第一待选结果f1。计算结果选择电路可以根据第一舍入判别参数ie为小于0,输出第二待选结果f2。
另一个示例中,计算结果选择电路接收到的舍入方式配置参数为第二舍入配置参数,计算结果选择电路可以根据第一舍入判别参数ie小于或等于0,输出第一待选结果f1。计算结果选择电路可以根据第一舍入判别参数ie大于0,输出第二待选结果f2。
又一个示例中,计算结果选择电路接收到的舍入方式配置参数为第三舍入配置参数,计算结果选择电路可以根据第三舍入判别参数iep小于0,输出第二待选结果f2。计算结果选择电路可以根据第二舍入判别参数ien大于或等于0,输出第三待选结果f3。计算结果选择电路可以根据第三舍入判别参数iep大于或等于0,或者第二舍入判别参数ien小于0,输出第一待选结果f1。
图11示例性的示出一种精确舍入单元的具体结构示意图。本申请实施例中,精确舍入单元中,舍入判别参数计算电路可以包括第二乘法器、第一加法器、第二加法器、第三加法器、第四平方运算电路。
第二乘法器可以与第一多项式求和电路连接,与舍入电路连接。第二乘法器可以接收第一多项式求和电路输出的f的高部分fu。第二乘法器可以接收到舍入电路输出的f的低位部分fl。第二乘法器可以根据接收的f的高部分fu与f的低位部分fl进行乘法运算,计算得到第一中间参数k1,其中第一中间参数k1=2×fu×fl,并输出第一中间参数。
第四平方运算电路可以与舍入电路连接。第四平方运算电路可以接收到舍入电路输出的f的低位部分fl。第四平方运算电路可以计算接收到的f的低位部分fl的平方,得到f的低位部分fl的平方fl 2,并输出。
第一加法器可以与前处理单元连接、与第二乘法器连接,与第三平方运算电路连接,以及与第四平方运算电路连接。第一加法器可以接收到前处理单元输出的浮点数Z的尾数的高t3位X3。第一加法器可以接收到第二乘法器输出的第一中间参数k1。第一加法器可以接收到第三平方运算电路输出的f的高部分fu的平方fu 2。第一加法器可以接收到第四平方运算电路输出的f的低位部分fl的平方fl 2
第一加法器可以基于接收到的f的低位部分fl的平方fl 2、第一中间参数k1(其中k1=2×fu×fl)、f的高部分fu的平方fu 2、目标尾数X,计算第一舍入判别参数ie,其中,ie=(fu+fl)2-X,也即ie=fu 2+fl 2+2×fu×fl-X。第一加法器可以输出第一舍入判别参数ie的符号位。
第二加法器可以与前处理单元连接、与第二乘法器连接,与第三平方运算电路连接,以及与第四平方运算电路连接。第二加法器可以接收到前处理单元输出的浮点数Z的尾数的高t3位X3。第一加法器可以接收到第二乘法器输出的第一中间参数k1。第二加法器可以接收到第三平方运算电路输出的f的高部分fu的平方fu 2。第二加法器可以接收到第四平方运算电路输出的f的低位部分fl的平方fl 2
第二加法器可以基于接收到的f的低位部分fl的平方fl 2、第一中间参数k1(其中k1=2×fu×fl)、f的高部分fu的平方fu 2、浮点数Z的尾数的高t3位X3,计算第二舍入判别参数ien,其中,ien=ie-ulp×f1。第二加法器可以输出第二舍入判别参数ien的符号位。
第三加法器可以与前处理单元连接、与第二乘法器连接,与第三平方运算电路连接,以及与第四平方运算电路连接。第三加法器可以接收到前处理单元输出的浮点数Z的尾数的高t3位X3。第三加法器可以接收到第二乘法器输出的第一中间参数k1。第三加法器可以接收到第三平方运算电路输出的f的高部分fu的平方fu 2。第三加法器可以接收到第四平方运算电路输出的f的低位部分fl的平方fl 2
第三加法器可以基于接收到的f的低位部分fl的平方fl 2、第一中间参数k1(其中k1=2×fu×fl)、f的高部分fu的平方fu 2、浮点数Z的尾数的高t3位X3,计算第三舍入判别参数iep,其中,iep=ie+ulp×f1。第三加法器可以输出第三舍入判别参数iep的符号位。
本申请实施例中,精确舍入单元中,待选结果计算电路可以包括第四加法器、第五加法器以及第六加法器。待选结果计算电路可以具有多种实现方式。
一种可能的设计中,第四加法器可以与第一多项式求和电路连接,与舍入电路连接。如图11所示,第四加法器可以接收第一多项式求和电路输出的f的高部分fu。第四加法器可以接收到舍入电路输出的f的低位部分fl。第四加法器可以根据接收的f的高部分fu与f的低位部分fl进行加和运算,计算得到第一待选结果f1,其中f1=fu+fl,并输出第一待选结果f1。
第五加法器可以与第一多项式求和电路连接,与舍入电路连接。第五加法器可以接收第一多项式求和电路输出的f的高部分fu。第五加法器可以接收到舍入电路输出的f的低位部分fl。第五加法器可以根据接收的f的高部分fu,f的低位部分fl,以及ulp,计算得到第二待选结果f2,其中f2=f1+ulp,f1=fu+fl,并输出第二待选结果f2。
第六加法器可以与第一多项式求和电路连接,与舍入电路连接。第六加法器可以接收第一多项式求和电路输出的f的高部分fu。第六加法器可以接收到舍入电路输出的f的低位部分fl。第六加法器可以根据接收的f的高部分fu,f的低位部分fl,以及ulp进行运算,计算得到第三待选结果f3,其中f3=f1-ulp,并输出第三待选结果f3。
另一种可能的设计中,如图12所示,第四加法器可以与第一多项式求和电路连接,与舍入电路连接。第四加法器可以接收第一多项式求和电路输出的f的高部分fu。第四加法器可以接收到舍入电路输出的f的低位部分fl。第四加法器可以根据接收的f的高部分fu与f的低位部分fl进行加和运算,计算得到第一待选结果f1,其中f1=fu+fl,并输出第一待选结果f1。图12示出的精确舍入单元与图11示出的精确舍入单元的相同之处可以参见图11输出的精确舍入单元的相关介绍,此处不再赘述。
第五加法器可以与第一多项式求和电路连接,与舍入电路连接。第五加法器可以接收第一多项式求和电路输出的f的高部分fu。第五加法器可以接收到舍入电路输出的f的低位部分fl。第五加法器可以根据接收的f的高部分fu,f的低位部分fl,以及ulp进行运算,计算得到第二待选结果f2,其中f2=f1+ulp,并输出第二待选结果f2。
第六加法器可以与第四加法器连接。第六加法器可以接收第四加法器输出的第一待选结果f1。第六加法器可以根据接收的第一待选结果f1以及ulp进行减法运算,计算得到第三待选结果f3,其中f3=f1-ulp,并输出第三待选结果f3。
基于上述任意一种待选结果计算电路,本申请实施例中,精确舍入单元中计算结果选择电路可以与第一加法器连接,与第二加法器连接,与第三加法器连接,与第四加法器连接,与第五加法器连接,与第六加法器连接。计算结果选择电路可以接收第一加法器输出的第一输入判别参数ie的符号位。计算结果选择电路可以接收第二加法器输出的第二舍入判别参数ien的符号位。计算结果选择电路可以接收第三加法器输出的第三舍入判别参数iep的符号位。计算结果选择电路可以接收第四加法器输出的第一待选结果f1。计算结果选择电路可以接收第五加法器输出的第二待选结果f2。计算结果选择电路可以接收第六加法器输出第三待选结果f3。
可选的,计算结果选择电路可以接收舍入方式配置参数。计算结果选择电路输出目标尾数X的平方根的计算结果的过程可以参见前述实施例中的相关介绍,此处不再赘述。
图13根据一示例性实施例示出一种浮点数计算模块。浮点数计算模块可以包括前处理单元、高位计算单元、低位计算单元、精确舍入单元。其中,低位计算单元包括第二高位倒数计算电路和前述低位运算电路。本申请实施例中,由第二高位倒数计算电路计算得到f的高位部分fu的倒数,也即其中,第二高位倒数计算电路可以与高位计算单元可以串行运行,从而低位计算单元可以与高位计算单元串行运行。
下面对第二高位倒数计算电路的连接关系以及工作过程进行介绍。图13示出的浮点数计算模块与图5示出的浮点数计算模块的相同之处不再赘述。
第二高位倒数计算电路可以与前处理单元连接,以及与高位计算单元连接。第二高位倒数计算电路可以接收高位计算单元所输出的f的高位部分fu的全部或部分位宽。可选的,第二高位倒数计算电路可以接收前处理单元输出的浮点数Z正常值化后的阶码EZ的全部或部分位宽。
第二高位倒数计算电路可以基于目标尾数X的平方根f的高位部分fu,确定目标第五查询参数g1。其中,所述目标第五查询参数g1为f的高位部分fu的部分位宽(记为第五部分位宽)。示例性的,目标第五查询参数g1可以为f的高位部分fu的小数部分的高g1位(或者低g1位),g1为正整数,且g1小于或等于f的高位部分fu的小数部分的全位宽。
第二高位倒数计算电路可以基于目标第五查询参数g1,确定目标第五查询参数g1对应的第三多项式拟合方程的系数,第三多项式拟合方程的系数可以包括第七拟合参数a3、第八拟合参数b3、第九拟合参数c3。
第二高位倒数计算电路可以根据第三多项式拟合方程的系数,目标尾数X的平方根f的高位部分fu的部分位宽,计算得到f的高位部分fu的倒数其中,/> 第二高位倒数计算电路可以输出f的高位部分fu的倒数g2为f的高位部分fu小数部分中除前述第五部分位宽之外的位宽中的高g2位,g2为正整数。
一种可能的设计中,第二高位倒数计算电路可以获取或者配置有第三多项式系数查找表。第三多项式系数查找表可以表征多个第三拟合参数组合与多个第三查询参数组合的对应关系。其中,各第三查询参数组合具有对应的第三拟合参数组合。每个第三拟合参数组合可以包括第七拟合参数a3、第八拟合参数b3、第九拟合参数c3。第三查询参数组合可以包括第五查询参数。第二高位倒数计算电路接收的目标第五查询参数g1可以构成目标第三查询参数组合,第二高位倒数计算电路可以从第三多项式系数查找表中查找出目标第三查询参数组合对应的第三拟合参数组合,从而实现目标第五查询参数g1对应的第三多项式拟合方程的系数。
一种可能的实施方式中,类似地,预先配置的第三多项式系数查找表,也即第七拟合参数a3、第八拟合参数b3、第九拟合参数c3、以及第三查询参数组合的对应关系中,第七拟合参数a3、第八拟合参数b3、第九拟合参数c3可以存储在同一个第三存储模块中。或者,第七拟合参数a3、第八拟合参数b3、第九拟合参数c3可以分别存储在三个第三存储模块中。又或者,第七拟合参数a3、第八拟合参数b3、第九拟合参数c3中的任意两种参数存储在同一个第三存储模块中,其它参数存储在另一个第三存储模块中。其中,第三多项式系数查找表中可以包括预设数量个第三查询参数组合分别对应的第七拟合参数a3、第八拟合参数b3、第九拟合参数c3。
低位运算电路可以与第二高位倒数计算电路连接,与前处理单元连接、以及与高位计算单元连接。低位运算电路可以接收到用第二高位倒数计算电路输出f的高位部分fu的倒数(即),前处理单元输出的目标尾数X,以及高位计算单元输出的f的高位部分fu。低位运算电路可以根据f的高位部分fu和低位部分fl之间的关系/>计算得到f的低位部分fl。低位运算电路可以输出f的低位部分fl,也实现低位计算单元输出f的低位部分fl。精确舍入单元的相关介绍可以参见前述实施例,此处不再赘述。
本申请实施例中,第二高位倒数计算电路利用fu的全部或部分位宽,得到高位部分fu的倒数相比于第一高位倒数计算电路利用目标尾数X的全部或部分位宽,电路规模较小,具有更小的占片面积。
图14示例性的示出浮点数计算模块中部分单元的具体结构示意图。本申请实施例提供的浮点数计算模块中,高位计算单元的具体结构可以参见图10示出的高位计算单元,此处不再赘述。本申请实施例中,低位计算单元中的第二高位倒数计算电路可以包括第三查表电路、第五平方运算电路以及第三多项式求和电路。
第三查表电路可以接收前处理单元输出的目标第五查询参数g1,输出目标第五查询参数g1对应的第七拟合参数a3、第八拟合参数b3、第九拟合参数c3。第三查表电路可以具有多种实现方式。
一个示例中,如图14所示,第三查表电路可以与存储有第七拟合参数a3、第八拟合参数b3、第九拟合参数c3的第三存储模块连接。第三查表电路可以接收高位计算单元输出的目标第五查询参数g1。第三查找电路可以利用目标第三查询参数组合在连接的第三存储模块中查询目标第五查询参数g1对应的第七拟合参数a3、第八拟合参数b3、第九拟合参数c3。第二查找电路可以输出查找到的目标第五查询参数g1对应的第七拟合参数a3、第八拟合参数b3、第九拟合参数c3。
第五平方运算电路可以与高位计算单元连接,可以接收高位计算单元输出的f的高部分fu小数部分的高g2位(也即前述g2)。第五平方运算电路可以计算f的高部分fu小数部分的高g2位的平方(g2)2,并输出(g2)2
第三多项式求和电路可以与第三查表电路连接、与前处理单元连接,以及与第二平方运算电路连接。第三多项式求和电路可以接收到第三查表电路输出的目标第三查询参数组合对应的第七拟合参数a3、第八拟合参数b3、第九拟合参数c3。第三多项式求和电路可以接收到高位计算单元输出的f的高部分fu小数部分的高g2位g2。第三多项式求和电路可以接收到第五平方运算电路输出的(g2)2。第三多项式求和电路可以包括乘法器和加法器,使得第三多项式求和电路可以根据接收到的目标第三查询参数组合对应的第七拟合参数a3、第八拟合参数b3、第九拟合参数c3、高部分fu小数部分的高g2位g2,以及(g2)2,计算得到f的高部分fu的倒数其中/>
低位计算单元中低位运算电路的具体结构可以参见图10示出的低位计算单元,低位运算电路可以包括第三平方运算电路、减法器、第一乘法器以及舍入电路。其中,第一乘法器可以与第三多项式求和电路连接,以及与减法器连接。第一乘法器可以接收减法器输出的第一乘法器可以接收第三多项式求和电路输出的f的高部分fu的倒数/>第一乘法器可以计算得到/>可选的,低位运算电路中减法器的功能可以通过加法器实现。
精确舍入单元的具体结构可以参见前述任意一个实施例提供的精确舍入单元,此处不再赘述。
图15示例性的示出一种浮点数计算模块。浮点数计算模块可以包括前处理单元、高位计算单元、低位计算单元以及加和处理单元。其中,低位计算单元可以包括前述第一高位倒数计算电路和低位运算电路。可选的,浮点数计算模块还可以包括指数处理单元。本申请实施例中,前处理单元、高位计算单元、低位计算单元、指数处理单元中,各单元的功能可以参见前述任意实施例中的相关介绍,此处不再赘述。
其中,加和处理单元可以与高位计算单元连接,接收高位计算单元所输出的f的高位部分fu。加和处理单元可以与低位计算单元连接,接收低位计算单元所输出的f的低位部分fl。加和处理单元可以对f的高位部分fu和f的低位部分fl进行加和处理,实现确定fu+fl,得到目标尾数X的平方根。加和处理单元可以对f的高位部分fu和f的低位部分fl进行加和处理过程可以参见图8中的相关介绍。可选的,加和处理单元可以包括前述精确舍入单元中的第四加法器,或者本申请实施例中精确舍入单元可以执行加和处理单元的功能。
图16示例性的示出一种浮点数计算模块。浮点数计算模块可以包括前处理单元、高位计算单元、低位计算单元以及加和处理单元。其中,低位计算单元您可以包括前述第二高位倒数计算电路和低位运算电路。可选的,浮点数计算模块还可以包括指数处理单元。本申请实施例中,前处理单元、高位计算单元、低位计算单元、指数处理单元中,各单元的功能可以参见前述任意实施例中的相关介绍,此处不再赘述。
其中,加和处理单元可以与高位计算单元连接,接收高位计算单元所输出的f的高位部分fu。加和处理单元可以与低位计算单元连接,接收低位计算单元所输出的f的低位部分fl。加和处理单元可以对f的高位部分fu和f的低位部分fl进行加和处理,实现确定fu+fl,得到目标尾数X的平方根。加和处理单元可以对f的高位部分fu和f的低位部分fl进行加和处理过程可以参见图8中的相关介绍。可选的,加和处理单元可以包括前述精确舍入单元中的第四加法器,或者本申请实施例中精确舍入单元可以执行加和处理单元的功能。
可以理解的是,为了实现上述方法实施例中功能,处理器或者计算器包括了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本申请中所公开的实施例描述的各示例的模块及方法步骤,本申请能够以硬件或硬件和计算机软件相结合的形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用场景和设计约束条件。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (30)

1.一种浮点数平方根计算方法,应用于处理器或者计算器,其特征在于,包括:
接收浮点数计算指令,所述指令携带待计算浮点数(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)的平方根的尾数。
2.如权利要求1所述的方法,其特征在于,
若所述第一浮点数(W)的阶码为偶数,所述目标尾数(X)与所述第一浮点数(W)的尾数相同;
若所述第一浮点数(W)的阶码为奇数,所述目标尾数(X)为所述第一浮点数(W)的尾数的Q倍,其中Q为浮点数的基数,Q为正数,且Q为偶数。
3.如权利要求1或2所述的方法,其特征在于,所述第一关系符合如下关系:
其中,X为所述目标尾数,fu为所述第一位宽部分,fl为所述第二位宽部分。
4.如权利要求1-3任一所述的方法,其特征在于,所述第二位宽部分(fl)包含所述目标尾数(X)的平方根的部分位宽,且包含所述目标尾数(X)的平方根的最低位,其中,所述第一位宽部分(fu)的位宽长度与所述第二位宽部分(fl)的位宽长度的总和大于或等于所述目标尾数(X)的平方根的全位宽长度。
5.如权利要求2-4任一所述的方法,其特征在于,所述根据所述目标尾数(X)的全部或部分位宽,确定所述目标尾数(X)的平方根的第一位宽部分(fu),包括:
基于目标第一查询参数(r1)、目标第二查询参数(r2),确定预设的第一多项式拟合方程的系数,其中,所述目标第一查询参数(r1)为所述第一浮点数(W)的尾数的第一部分,所述目标第二查询参数(r2)为所述第一浮点数(W)的阶码的部分位宽,且包括所述第一浮点数(W)的阶码的最低位宽;
根据所述第一多项式拟合方程的系数和所述第一浮点数(W)的尾数的第二部分,计算所述第一位宽部分(fu),所述第一浮点数(W)的尾数的第二部分对应的位宽与所述第一浮点数(W)的尾数的第一部分对应的位宽不重叠。
6.如权利要求5所述的方法,其特征在于,基于目标第一查询参数(r1)、目标第二查询参数(r2),确定预设的第一多项式拟合方程的系数,包括:
若所述目标第二查询参数(r2)为奇数,从第一奇数查找子表中查询所述目标第一查询参数(r1)对应的第一多项拟合方程的系数,其中所述第一奇数查找子表包括所述第一浮点数(W)的阶码为奇数情形下多个第一查询参数与第一多项式拟合方程的系数对应关系;
若所述目标第二查询参数(r2)为偶数,从第一偶数查找子表中查询所述目标第一查询参数(r1)对应的第一多项式拟合方程的系数,其中所述第一偶数查找子表包括所述第一浮点数(W)的阶码为偶数情形下多个第一查询参数与第一多项式拟合方程的系数对应关系。
7.如权利要求1-6任一所述的方法,其特征在于,所述基于所述第一位宽部分(fu)和所述第二位宽部分(fl),确定所述目标尾数(X)的平方根,包括:
根据所述第一位宽部分(fu)、所述第二位宽部分(fl),确定两个待选结果;
基于所述第一位宽部分(fu)、所述第二位宽部分(fl)、以及所述目标尾数(X)的部分位宽,计算第一舍入判别参数(ie),其中,所述第一舍入判别参数(ie)表征第一数值与所述目标尾数(X)之间的偏差,所述第一数值为所述目标尾数(X)的平方根的平方;
根据所述第一舍入判别参数(ie)与预设数值的比较结果,从所述两个待选结果中选择一个待选结果确定为所述目标尾数(X)的平方根。
8.如权利要求7所述的方法,其特征在于,所述第一舍入判别参数(ie)采用如下公式计算:
ie=fu 2+fl 2+2×fu×fl-X
其中,ie为所述第一舍入判别参数,fu为所述第一位宽部分,fl为所述第二位宽部分,X为所述目标尾数。
9.如权利要求1-7任一所述的方法,其特征在于,所述基于所述第一位宽部分(fu)和所述第二位宽部分(fl),确定所述目标尾数(X)的平方根,包括:
根据所述第一位宽部分(fu)、所述第二位宽部分(fl),确定多个待选结果,所述多个待选结果包括第一待选结果、第二待选结果以及第三待选结果,其中,所述第二待选结果大于所述第一待选结果,所述第一待选结果大于所述第三待选结果;
基于所述第一位宽部分(fu)、所述第二位宽部分(fl)、以及所述目标尾数(X)的部分位宽,计算第二舍入判别参数(ien),其中,所述第二舍入判别参数(ien)表征第一距离的平方与第二距离的平方之间的偏差,所述第一距离为所述第一待选结果与所述目标尾数(X)的平方根的实数之间的距离,所述第二距离表征所述目标尾数(X)的平方根的实数与所述第三待选结果之间的距离;
基于所述第一位宽部分(fu)、所述第二位宽部分(fl)、以及所述目标尾数(X)的部分位宽,计算第三舍入判别参数(iep),其中,所述第三舍入判别参数(iep)表征第三距离的平方与第四距离的平方之间的偏差,所述第三距离为所述第二待选结果与所述目标尾数(X)的平方根的实数之间的距离,所述第四距离表征所述目标尾数(X)的平方根的实数与所述第一待选结果之间的距离;
根据所述第二舍入判别参数(ien)与预设数值的比较结果,以及所述第三舍入判别参数(iep)与预设数值的比较结果,从所述多个待选结果中选择一个待选结果确定为所述目标尾数(X)的平方根。
10.如权利要求9所述的方法,其特征在于,所述第二待选结果与所述第一待选结果的差值小于或等于一个最小精度单位;所述第一待选结果与所述第三待选结果的差值小于或等于一个最小精度单位。
11.如权利要求9或10所述的方法,其特征在于,所述第二舍入判别参数(ien)采用如下公式计算:
ien=fu 2+fl 2+2×fu×fl-X-ulp×(fu+fl)
其中,ien为所述第二舍入判别参数,fu为所述第一位宽部分,fl为所述第二位宽部分,X为所述目标尾数,ulp为最小精度单位。
12.如权利要求9-11任一所述的方法,其特征在于,所述第三舍入判别参数(iep)采用如下公式计算:
iep=fu 2+fl 2+2×fu×fl-X+ulp×(fu+fl)
其中,iep为所述第三舍入判别参数,fu为所述第一位宽部分,fl为所述第二位宽部分,X为所述目标尾数,ulp为最小精度单位。
13.如权利要求1-6任一所述的方法,其特征在于,所述基于所述第一位宽部分(fu)和所述第二位宽部分(fl),确定所述目标尾数(X)的平方根,包括:
对所述第一位宽部分(fu)和所述第二位宽部分(fl)加和处理,将加和处理后的结果确定为所述目标尾数(X)的平方根。
14.一种浮点数计算模块,其特征在于,所述浮点数计算模块用于接收浮点数计算指令,所述指令携带待计算浮点数(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)的平方根的尾数。
15.如权利要求14所述的浮点数计算模块,其特征在于,
若所述第一浮点数(W)的阶码为偶数,所述目标尾数(X)与所述第一浮点数(W)的尾数相同;
若所述第一浮点数(W)的阶码为奇数,所述目标尾数(X)为所述第一浮点数(W)的尾数的Q倍,其中Q为浮点数的基数,Q为正数,且Q为偶数。
16.如权利要求14或15所述的浮点数计算模块,其特征在于,所述第一关系符合如下关系:
其中,X为所述目标尾数,fu为所述第一位宽部分,fl为所述第二位宽部分。
17.如权利要求14-16任一所述的浮点数计算模块,其特征在于,所述第二位宽部分(fl)包含所述目标尾数(X)的平方根的部分位宽,且包含所述目标尾数(X)的平方根的最低位,其中,所述第一位宽部分(fu)的位宽长度与所述第二位宽部分(fl)的位宽长度的总和大于或等于所述目标尾数(X)的平方根的全位宽长度。
18.如权利要求15-17任一所述的浮点数计算模块,其特征在于,所述高位计算单元,具体用于:
基于目标第一查询参数(r1)、目标第二查询参数(r2),确定预设的第一多项式拟合方程的系数,其中,所述目标第一查询参数(r1)为所述第一浮点数(W)的尾数的第一部分,所述目标第二查询参数(r2)为所述第一浮点数(W)的阶码的部分位宽,且包括所述第一浮点数(W)的阶码的最低位宽;
根据所述第一多项式拟合方程的系数和所述第一浮点数(W)的尾数的第二部分,计算所述第一位宽部分(fu),所述第一浮点数(W)的尾数的第二部分对应的位宽与所述第一浮点数(W)的尾数的第一部分对应的位宽不重叠。
19.如权利要求18所述的浮点数计算模块,其特征在于,所述高位计算单元,具体用于:
若所述目标第二查询参数(r2)为奇数,从第一奇数查找子表中查询所述目标第一查询参数(r1)对应的第一多项拟合方程的系数,其中所述第一奇数查找子表包括所述第一浮点数(W)的阶码为奇数情形下多个第一查询参数与第一多项式拟合方程的系数对应关系;
若所述目标第二查询参数(r2)为偶数,从第一偶数查找子表中查询所述目标第一查询参数(r1)对应的第一多项式拟合方程的系数,其中所述第一偶数查找子表包括所述第一浮点数(W)的阶码为偶数情形下多个第一查询参数与第一多项式拟合方程的系数对应关系。
20.如权利要求14-19任一所述的浮点数计算模块,其特征在于,所述精确舍入单元,具体用于:
根据所述第一位宽部分(fu)、所述第二位宽部分(fl),确定两个待选结果;
基于所述第一位宽部分(fu)、所述第二位宽部分(fl)、以及所述目标尾数(X)的部分位宽,计算第一舍入判别参数(ie),其中,所述第一舍入判别参数(ie)表征第一数值与所述目标尾数(X)之间的偏差,所述第一数值为所述目标尾数(X)的平方根的平方;
根据所述第一舍入判别参数(ie)与预设数值的比较结果,从所述两个待选结果中选择一个待选结果确定为所述目标尾数(X)的平方根。
21.如权利要求20所述的浮点数计算模块,其特征在于,所述第一舍入判别参数(ie)采用如下公式计算:
ie=fu 2+fl 2+2×fu×fl-X
其中,ie为所述第一舍入判别参数,fu为所述第一位宽部分,fl为所述第二位宽部分,X为所述目标尾数。
22.如权利要求14-19任一所述的浮点数计算模块,其特征在于,所述精确舍入单元,具体用于:
根据所述第一位宽部分(fu)、所述第二位宽部分(fl),确定多个待选结果,所述多个待选结果包括第一待选结果、第二待选结果以及第三待选结果,其中,所述第二待选结果大于所述第一待选结果,所述第一待选结果大于所述第三待选结果;
基于所述第一位宽部分(fu)、所述第二位宽部分(fl)、以及所述目标尾数(X)的部分位宽,计算第二舍入判别参数(ien),其中,所述第二舍入判别参数(ien)表征第一距离的平方与第二距离的平方之间的偏差,所述第一距离为所述第一待选结果与所述目标尾数(X)的平方根的实数之间的距离,所述第二距离表征所述目标尾数(X)的平方根的实数与所述第三待选结果之间的距离;
基于所述第一位宽部分(fu)、所述第二位宽部分(fl)、以及所述目标尾数(X)的部分位宽,计算第三舍入判别参数(iep),其中,所述第三舍入判别参数(iep)表征第三距离的平方与第四距离的平方之间的偏差,所述第三距离为所述第二待选结果与所述目标尾数(X)的平方根的实数之间的距离,所述第四距离表征所述目标尾数(X)的平方根的实数与所述第一待选结果之间的距离;
根据所述第二舍入判别参数(ien)与预设数值的比较结果,以及所述第三舍入判别参数(iep)与预设数值的比较结果,从所述多个待选结果中选择一个待选结果确定为所述目标尾数(X)的平方根。
23.如权利要求22所述的浮点数计算模块,其特征在于,所述第二待选结果与所述第一待选结果的差值小于或等于一个最小精度单位;所述第一待选结果与所述第三待选结果的差值小于或等于一个最小精度单位。
24.如权利要求22或23所述的浮点数计算模块,其特征在于,所述第二舍入判别参数(ien)采用如下公式计算:
ien=fu 2+fl 2+2×fu×fl-X-ulp×(fu+fl)
其中,ien为所述第二舍入判别参数,fu为所述第一位宽部分,fl为所述第二位宽部分,X为所述目标尾数,ulp为最小精度单位。
25.如权利要求22-24任一所述的浮点数计算模块,其特征在于,所述第三舍入判别参数(iep)采用如下公式计算:
iep=fu 2+fl 2+2×fu×fl-X+ulp×(fu+fl)
其中,iep为所述第三舍入判别参数,fu为所述第一位宽部分,fl为所述第二位宽部分,X为所述目标尾数,ulp为最小精度单位。
26.如权利要求14-25任一所述的浮点数计算模块,其特征在于,精确舍入单元,具体用于:
对所述第一位宽部分(fu)和所述第二位宽部分(fl)加和处理,将加和处理后的结果确定为所述目标尾数(X)的平方根。
27.如权利要求14-26任一所述的浮点数计算模块,其特征在于,所述精确舍入单元,具体用于:
获取舍入方式配置参数;
按照所述舍入方式配置参数对应的舍入方式,所述第一位宽部分(fu)、所述第二位宽部分(fl),确定多个待选结果;
以及按照所述舍入方式配置参数对应的舍入方式,基于所述第一位宽部分(fu)、所述第二位宽部分(fl)、以及所述目标尾数(X),计算舍入判别参数;
并基于所述判舍入判别参数与预设数值的比较结果,从所述多个待选结果选择一个待选结果作为所述目标尾数(X)的平方根。
28.如权利要求14-27任一所述的浮点数计算模块,其特征在于,所述第一关系包括所述第一位宽部分(fu)的倒数;所述低位计算单元,还用于:
基于目标第三查询参数(h1)、目标第四查询参数(h2),确定预设的第二多项式拟合方程的系数,其中,所述目标第三查询参数(h1)为所述第一浮点数(W)的尾数的第三部分,所述目标第四查询参数(h2)为所述第一浮点数(W)的阶码的部分位宽,且包括所述第一浮点数(W)的阶码的最低位宽;
根据所述第二多项式拟合方程的系数和所述第一浮点数(W)的尾数的第四部分,确定所述第一位宽部分(fu)的倒数,所述第一浮点数(W)的尾数的第三部分对应的位宽与所述第一浮点数(W)的尾数的第四部分对应的位宽不重叠。
29.如权利要求28所述的浮点数计算模块,其特征在于,所述低位计算单元,具体用于:
若所述目标第四查询参数(h2)为奇数,从第二奇数查找子表中查询所述目标第三查询参数(h1)对应的第二多项拟合方程的系数,其中所述第二奇数查找子表包括所述第一浮点数(W)的阶码为奇数情形下多个第三查询参数与第二多项式拟合方程的系数对应关系;
若所述目标第四查询参数(h2)为偶数,从第二偶数查找子表中查询所述目标第三查询参数(h1)对应的第二多项式拟合方程的系数,其中所述第二偶数查找子表包括所述第一浮点数(W)的阶码为偶数情形下多个第三查询参数与第二多项式拟合方程的系数对应关系。
30.如权利要求14-27任一所述的浮点数计算模块,其特征在于,所述第一关系包括所述第一位宽部分(fu)的倒数;所述低位计算单元,还用于:
基于目标第五查询参数(g1),确定预设的第三多项式拟合方程的系数,其中,所述目标第五查询参数(g1)为所述第一位宽部分(fu)的第五部分;
根据所述第三多项式拟合方程的系数和所述第一位宽部分(fu)的第六部分,确定所述第一位宽部分(fu)的倒数,所述第一位宽部分(fu)的第五部分对应的位宽与所述第一位宽部分(fu)的第六部分对应的位宽不重叠。
CN202211250294.4A 2022-10-13 2022-10-13 一种浮点数平方根计算方法及浮点数计算模块 Pending CN117932200A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202211250294.4A CN117932200A (zh) 2022-10-13 2022-10-13 一种浮点数平方根计算方法及浮点数计算模块
PCT/CN2023/104073 WO2024078033A1 (zh) 2022-10-13 2023-06-29 一种浮点数平方根计算方法及浮点数计算模块

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211250294.4A CN117932200A (zh) 2022-10-13 2022-10-13 一种浮点数平方根计算方法及浮点数计算模块

Publications (1)

Publication Number Publication Date
CN117932200A true CN117932200A (zh) 2024-04-26

Family

ID=90668661

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211250294.4A Pending CN117932200A (zh) 2022-10-13 2022-10-13 一种浮点数平方根计算方法及浮点数计算模块

Country Status (2)

Country Link
CN (1) CN117932200A (zh)
WO (1) WO2024078033A1 (zh)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104598197B (zh) * 2015-01-26 2017-05-31 中国科学院自动化研究所 一种浮点倒数和/或平方根倒数运算方法及其装置
CN109901813B (zh) * 2019-03-27 2023-07-07 北京市合芯数字科技有限公司 一种浮点运算装置及方法
US11934797B2 (en) * 2019-04-04 2024-03-19 Intel Corporation Mechanism to perform single precision floating point extended math operations

Also Published As

Publication number Publication date
WO2024078033A1 (zh) 2024-04-18

Similar Documents

Publication Publication Date Title
US5010508A (en) Prenormalization for a floating-point adder
KR20080055985A (ko) 선택가능 준정밀도를 가진 부동―소수점 프로세서
WO2022170809A1 (zh) 一种适用于多精度计算的可重构浮点乘加运算单元及方法
US11294627B2 (en) Floating point dot-product operator with correct rounding
JP7115211B2 (ja) 演算処理装置および演算処理装置の制御方法
US5132925A (en) Radix-16 divider using overlapped quotient bit selection and concurrent quotient rounding and correction
US5023827A (en) Radix-16 divider using overlapped quotient bit selection and concurrent quotient rounding and correction
Murillo et al. Energy-efficient MAC units for fused posit arithmetic
US8019805B1 (en) Apparatus and method for multiple pass extended precision floating point multiplication
US11550544B2 (en) Fused Multiply-Add operator for mixed precision floating-point numbers with correct rounding
US5623435A (en) Arithmetic unit capable of performing concurrent operations for high speed operation
US20070055723A1 (en) Method and system for performing quad precision floating-point operations in microprocessors
CN116450085A (zh) 一种可扩展的BFloat16点乘运算器及微处理器
US6598065B1 (en) Method for achieving correctly rounded quotients in algorithms based on fused multiply-accumulate without requiring the intermediate calculation of a correctly rounded reciprocal
CN117932200A (zh) 一种浮点数平方根计算方法及浮点数计算模块
JPH09146924A (ja) 演算方法、演算装置及びマイクロプロセッサ
Villalba-Moreno Digit recurrence floating-point division under HUB format
US6055553A (en) Apparatus for computing exponential and trigonometric functions
US8185723B2 (en) Method and apparatus to extract integer and fractional components from floating-point data
RU2276805C2 (ru) Способ и устройство для выделения целой и дробных компонент из данных с плавающей точкой
Villalba-Moreno et al. Floating Point Square Root under HUB Format
Chen et al. Decimal floating-point antilogarithmic converter based on selection by rounding: Algorithm and architecture
Villalba-Moreno Digit recurence division under HUB format
JP2761145B2 (ja) 開平演算装置
GB2615774A (en) Method and system for calculating dot products

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication