CN105302519A - 用于执行浮点平方根运算的装置和方法 - Google Patents
用于执行浮点平方根运算的装置和方法 Download PDFInfo
- Publication number
- CN105302519A CN105302519A CN201510423618.3A CN201510423618A CN105302519A CN 105302519 A CN105302519 A CN 105302519A CN 201510423618 A CN201510423618 A CN 201510423618A CN 105302519 A CN105302519 A CN 105302519A
- Authority
- CN
- China
- Prior art keywords
- value
- radicand
- square root
- floating
- mantissa
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/552—Powers or roots, e.g. Pythagorean sums
- G06F7/5525—Roots or inverse roots of single operands
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Analogue/Digital Conversion (AREA)
- Complex Calculations (AREA)
Abstract
本发明涉及用于执行浮点平方根运算的装置和方法。该数据处理装置具有用于对被开方数值R执行浮点平方根运算以生成结果值的处理电路。处理电路具有用于处理并非是二的精确乘方的被开方数值R的第一平方根处理电路,以及用于处理作为2的精确乘方的被开方数值的第二平方根处理电路。二的乘方检测电路检测被开方数值是否是二的精确乘方并适当地选择第一平方根处理电路的输出或第二平方根处理电路的输出。这使得当被开方数是2的乘方时能够以较少的处理循环生成结果。
Description
技术领域
本技术涉及数据处理领域。更加具体地,本技术涉及用于执行浮点平方根运算的装置和方法。
背景技术
在浮点表示法中,通过使用尾数(也被称为有效数字(significand))1.F或0.F、指数E和符号位S来表示数字。符号位表示浮点数是正的或负的,尾数表示浮点数的有效位,指数表示相对于尾数的小数点(也被称为二进制小数点)的位置。通过改变指数的值,小数点可以在尾数内向左或向右“浮动”。这表明对于预定数量的位数,相较于固定点表示法(其中小数点在尾数内具有固定的位置),浮点表示法可表示更宽范围的数字。然而,额外的范围是以降低精度为代价达到的,这是由于有些位被用于存储指数。
浮点算术运算的一个示例是浮点平方根运算,其采用具有被开方数指数和被开方数尾数的被开方数的值,并确定被开方数的值的平方根或被开方数的值的倒数的平方根以生成具有结果指数和结果尾数的结果值。本技术试图改进对于此类型的运算的处理性能。
发明内容
从一个方面来看,本技术提供的一种数据处理装置包括:
处理电路,该处理电路被配置成执行浮点平方根运算,用于确定具有被开方数指数和被开方数尾数的被开方数值R的平方根以生成具有结果指数和结果尾数的结果值;
其中所述处理电路包括:
第一平方根处理电路,该第一平方根处理电路被配置成对于并非是二的精确乘方的被开方数值执行浮点平方根运算。
第二平方根处理电路,该第二平方根处理电路被配置成对于作为二的精确乘方的被开方数值执行浮点平方根运算,其中第二平方根处理电路被配置成以比第一平方根处理电路更少的处理循环生成结果值;以及
二的乘方检测电路,该二的乘方检测电路被配置成检测被开方数值是否是二的精确乘方,如果该被开方数值不是二的精确乘方,则控制该处理电路输出由第一平方根处理电路生成的结果值,如果该被开方数值是二的精确乘方,则控制该处理电路输出由第二平方根处理电路生成的结果值。
从另一方面来看,本技术提供的一种数据处理设备包括:
处理装置,用于执行确定具有被开方数指数和被开方数尾数的被开方数值R的平方根的浮点平方根运算,以生成具有结果指数和结果尾数的结果值;
其中处理装置包括:
第一平方根处理装置,用于对于并非是二的精确乘方的被开方数值执行浮点平方根运算;
第二平方根处理装置,用于对于作为二的精确乘方的被开方数值执行浮点平方根运算,其中第二平方根处理电路被配置成通过比第一平方根处理电路的处理循环少的处理循环生成结果值;以及
用于检测被开方数值是否是二的精确乘方的二的乘方检测电路,如果该被开方数值不是二的精确乘方,则控制处理装置输出由第一平方根处理装置生成的结果值,如果该被开方数值是二的精确乘方,则控制该处理装置输出由第二平方根处理装置生成的结果值。
从又一方面来看,本技术提供了一种用于执行浮点平方根运算的方法,用于确定具有被开方数指数和被开方数尾数的被开方数值R的平方根,以生成具有结果指数和结果尾数的结果值;该方法包括:
检测被开方数是否为二的精确乘方;
如果被开方数值不是二的精确乘方,则输出由第一平方根处理电路所生成的结果值,其中该第一平方根处理电路被配置成对于并非二的精确乘方的被开方数值执行浮点平方根运算;以及
如果被开方数值是二的精确乘方,则输出由第二平方根处理电路所生成的结果值,其中该第二平方根处理电路被配置成对于作为二的精确乘方的被开方数值执行浮点平方根运算,其中第二平方根处理电路被配置成通过比第一平方根处理电路的处理循环少的处理循环生成结果值。
通过下面对说明性实施例的详细描述并结合附图,上述内容和其他对象、特征及优点将是显而易见的。
附图说明
在下面对示例的描述中对本技术的更多的方面、特征和优点进行了描述,其中:
图1示出了浮点数表示法;
图2示出了数据处理装置的示例;
图3示出了用于执行浮点平方根运算的部分处理电路的示例;
图4示出了对于倒数浮点平方根运算和非倒数浮点平方根运算,以及对于二的偶数次方和二的奇数次方的值,如何计算结果尾数和结果指数。
图5示出了如何检测被开方数值是否是2的精确乘方的方法;
图6示出了用于检测非规格化值(subnormalvalue)的尾数是否仅包括一位等于一的电路的示例;
图7示出了用于对作为二的精确乘方的被开方数值执行平方根运算的第二平方根处理电路的示例;
图8示出了对作为2的偶数次方的规格化被开方数(normalradicand)值执行浮点平方根运算的示例;
图9示出了被开方数是规格化的2的奇数次方的示例;
图10示出了被开方数是非规格化的并且是2的偶数次方的示例;
图11示出了被开方数是非规格化的并且是2的奇数次方的示例。
具体实施方式
本技术发现数据处理装置执行浮点平方根运算从花费的时间和所消耗的能源的角度来说可能是相当高昂的。通常,平方根是通过迭代过程得到的,该迭代过程花费许多处理循环并需要相当复杂的电路。本技术的发明者认识到当被开方数值是二的精确乘方时,执行全平方根确定过程的成本可被避免,这是因为在这种情况下结果指数和结果尾数可以相对快速地被确定而不调用全平方根处理电路。因此,除了用于对并非二的精确乘方的被开方数值执行浮点平方根运算的第一平方根处理电路之外,该装置还设有第二平方根处理电路,其对作为二的精确乘方的被开方数值执行浮点平方根运算。当被开方数是二的乘方时,第二平方根处理电路可以通过比第一平方根处理电路的循环少的循环生成结果。二的乘方检测电路检测被开方数值是否是二的精确乘方,并且如果被开方数值不是二的精确乘方,则控制处理电路输出由第一平方根处理电路生成的结果,如果被开方数值是二的精确乘方,则控制处理电路输出由第二平方根处理电路生成的结果值。
由于用于处理作为非二的乘方的任意被开方数值的第一平方根处理电路通常也能够执行作为二的乘方的被开方数值的平方根运算,提供用于对被开方数值是二的精确乘方这种特殊情况进行处理的附加处理电路看起来是违反直觉的。然而,多出来的一点附加电路区域,其多出来的开销被大大地补偿了,这是由于第二平方根处理电路可通过比第一平方根处理电路的处理循环更少的处理循环生成结果值。由于非常多地发生被开方数是二的乘方的值的情况,并且在有可能是二的精确乘方的情况下,许多循环可通过使用第二平方根处理电路被省去,因此本方法提供了显著的性能改进。
第一平方根处理电路可通过使用任意已知的技术(诸如,牛顿-拉夫森方法或SRT方法等等)执行浮点平方根运算。因此,第一平方根处理电路可以是能够确定任意被开方数值的通用电路。另一方面,第二平方根处理电路可以是较小的电路,该电路仅能够为作为二的精确乘方的被开方数值生成平方根结果。在一些系统中,第一平方根处理电路和第二平方根处理电路可以被完全分开。在其他情况下,第二平方根处理电路可与第一平方根处理电路或处理电路的另一部分共享部分电路。
在一些实施方式中,二的乘方检测电路能够在第一或第二平方根处理电路被触发开始执行浮点平方根运算之前检测被开方数值R是否是二的精确乘方。这种方法可减少动态功率消耗,这是因为仅触发第一和第二平方根处理电路中实际上所需的那一个来处理被开方数值。然而,由于这种方法会花费一些时间来检测被开方数值是否是二的精确乘方,因而它可能延迟获取结果值,当被开方数不是二的乘方时,这种方法可能进一步延迟平方根运算。
因此,为了改进性能,二的乘方检测电路可与第一平方根处理电路开始对被开方数值执行浮点平方根运算并行地检测被开方数值是否是二的精确乘方。通过这种方式,二的乘方检测不会延迟第一平方根处理电路所执行的浮点平方根运算。如果二的乘方检测电路检测到被开方数值是二的精确乘方,则能够忽略第一平方根处理电路所生成的结果,而可以使用第二平方根处理电路的输出。在一些系统中,二的乘方检测还可与第二平方根处理电路开始执行浮点平方根运算并行地被执行。
二的乘方检测电路可取决于被开方数值是规格化的或非规格化的而通过不同的方式检测被开方数值是否是二的精确乘方。对于规格化的值,如果被开方数的尾数具有1.0的值,则被开方数值是二的精确乘方。在大部分的浮点数字表示法中,尾数的前导一是隐含的,并且所存储的被开方数的尾数的表示法将仅包括该尾数的小数位,因此对于二的精确乘方,所存储的尾数值将使它的全部数位被设置为0。例如,或非门可被用于检查尾数是否等于0。另一方面,对于非规格化的值,如果被开方数的尾数仅包括一位具有1值而其他位具有零值,则被开方数值是二的精确乘方。这可通过使用例如或门和异或门的网络来进行检测。因此,可以提供少量附加逻辑门来执行二的乘方检测。
处理电路可能能够执行不同类型的浮点平方根运算。一个示例是非倒数浮点平方根运算,用于生成等于被开方数值的平方根的结果值,即另一示例是倒数浮点平方根运算,用于生成等于被开方数值的倒数的平方根的结果值,即,除非另有说明,否则本发明中所提到的浮点平方根运算应当被理解为指代非倒数版或倒数版的浮点平方根运算中的任一项。在实践中,一个运算的结果可通过获得另一运算的结果的倒数来获得。
通常,第二平方根处理电路可生成这样的结果值:它的结果尾数具有预定尾数值,而结果指数具有对应于经调整的指数(其对应于被开方数指数的经调整形式)的一半的值。预定尾数值和经调整的指数可基于被开方数值R是等于二的偶数次方还是等于二奇数次方来进行选择。经调整的指数还可取决于所执行的运算的类型(该运算是非倒数方根运算还是倒数平方根运算)。在所有二的乘方的情况下,这避免了对执行迭代或逐位循环处理来确定平方根值的需要。第二平方根处理电路可仅仅将结果尾数设置为有限数量的预定值中的一个,并且通过使用相对简单的被开方数指数变换来确定结果指数。由于对于2的精确乘方来说,取平方根使指数减半,所以经调整的指数被减半。对指数的这种调整考虑了被开方数是二的奇数次方的情况或执行倒数平方根运算的情况。通常,这些运算能够在相对少的循环中被执行,比使用第一平方根处理电路进行全浮点平方根运算所用的循环少得多。
对于被开方数值2N,其中N是偶数,结果尾数被设置为对应于1.0的值(即,所存储尾数为0)。另一方面,如果N是奇数,则结果尾数被设置为对应于的值。因为是无理数,所以结果尾数可被舍入到用所用的具体浮点表达式所能表达的最接近的值。不同的舍入模式可向上或向下舍入值,因而第二处理电路可取决于针对当前运算所选择的舍入模式在不同版本的尾数之间选择。
另一方面,经调整的指数可以既取决于所执行的运算的类型,又取决于被开方数值是二的奇数次方还是偶数次方。经调整的指数可基于被开方数的指数E被如下设置:
·对于经调整的指数=E。
·对于经调整的指数=E-1。
·对于经调整的指数=-E。
·对于经调整的指数=-1-E。
无论经调整的指数是如何获得的,其后该经调整的指数可被减半,并且这可通过使用右移来相对高效地实现,以使得第二平方根处理电路能够比第一平方根处理电路更快生成结果。
上面针对被开方数的指数所示出的E值表示该被开方数的真实的、无偏移的指数值。对于规格化值,所存储的指数值通常是经偏移的指数值,该经偏移的指数值等于真实指数值减去偏移值。因此,对于规格化值,通过加上偏移值可相对简单地确定真实指数值E。在实践中,可能没有必要真的加上偏移值,而是可对经偏移的指数值应用一组运算,这组运算给出与下述步骤相同的结果:实际加上偏移值以产生真实指数,如上面所指出的确定经调整的指数,将经调整的指数减半,然后再次减去偏移量以得到经偏移的结果指数。
对于被开方数是非规格化值的情况,所存储的指数通常具有0值,这并非表示该非规格化值的真实指数。而对于非规格化的2的精确乘方的情况,被开方数的尾数仅具有一位等于1,由此该“1”的数位位置确定了被开方数值的真实指数E。因此,在应用上面所描述的运算之前,对于非规格化被开方数,第二平方根处理电路可首先基于被开方数的尾数中“1”位的数位位置来确定该被开方数的真实(有效)指数。例如,对于尾数为0.000100....的非规格化值,真实指数(如果非规格化值被表示为1×10N,则指数为N)通常是-1×(bias+CLZ),其中“bias”是所使用的浮点表达式所用的偏移值,CLZ表示在尾数中的“1”位前面的前导零的数量(在0.0001的示例中为3)。因此,对于该示例,CLZ是3,并且对于双精度浮点来说偏移值为1023,从而得到真实指数-1026。一旦真实指数E被确定,可对其进行调整以得到如上面所讨论的经调整的指数,然后将该经调整的指数减半以得到结果指数。再次强调,对于第二平方根处理电路来说,真正确定非规格化值的真实指数E不是必需的,作为替代,它可对被开方数的尾数执行一系列运算,这将得到与通过真正确定真实指数E,然后像规格化被开方数值一样进行运算所获得的结果一样的结果。
更加具体来说,通过使用一组简单的运算可相对高效地执行浮点平方根运算,其中所述的一组简单的运算因运算是倒数或非倒数、被开平方数值是规格化的或非规格化的、以及被开平方数值R是二的偶数次方(等于二的偶数次幂)或二的奇数次方(等于二的奇数次幂)而异。
对于被应用到规格化被开方数值R的非倒数运算,其中R是二的偶数次方,通过生成具有对应于1.0的值的结果尾数,并且通过使经偏移的被开方数的指数值(其等于真实被开方数的指数减去偏移值)的最高有效位(MSB)反置(invert),将结果右移一位的位置(通过符号扩展),然后对经移动的值的最高有效位反置来生成结果指数,可生成结果值。对于等于二的奇数次方的规格化被开方数值,非倒数运算是通过类似的方式执行的,只是结果尾数值具有对应于的值,并且在对经偏移的被开方数的指数值的最高有效位反置之后,在对此值应用右移之前从中减去一。附加的减法反映了一个事实,即相乘以得到由指数值所指示的二的乘方的多个二中的一个经过开平方根得到结果尾数的的值。
对于对非规格化被开方数所执行的非倒数平方根运算,其中被开方数是二的偶数次方,结果尾数可通过将结果尾数设置成对应于1.0或的值(取决于该值表示二的偶数次方还是奇数次方)来生成。对于二的奇数/偶数次方,通过确定前导零计数值(CLZ)(其中CLZ表示在被开方数的尾数的小数位中的前导零的个数)、对CLZ反置、对经反置的CLZ值的最高有效位反置、然后将结果右移一位的位置以生成经偏移的结果指数值,可确定结果指数。对CLZ反置的步骤有效地确定了非规格化值的真实指数。CLZ值可被生成为具有对应于指数数位的数量的多个数位,对于不同的浮点表示法(例如,单精度或双精度),CLZ值可能也不相同。因此,CLZ值的字长可以与指数的字长匹配。
除了在非倒数的情况所执行的运算之前或之后得到倒数之外,倒数平方根运算可通过与非倒数平方根运算相似的方式来执行。在其他方面,运算与非倒数的情况下的运算相同。
附图中的图1示出了浮点数如何被存储在寄存器或存储器内。在单精度表示法中,32位被用于存储浮点数。一位被用作符号位S,八位被用于存储指数E,23位被用于存储尾数的小数部分F。对于规格化的值,小数部分F的23位与具有“一”值的隐含位一起组成了24位的尾数1.F。最初假设小数点被置于隐含位和尾数的23个存储位之间。所存储的指数(或“经偏移的指数”)E被偏移了固定偏移值127,以使得在所表示的浮点数中,如果E-127是负的,尾数从其初始位置相对于小数点被向右移动了E-127个位置(例如,如果E-127=-2,则1.01的尾数表示0.0101),而如果E-127是正的,则从其初始位置向左移动E-127个位置(例如,如果E-127=2,则1.01的尾数表示101)。偏移被用来使比较两个浮点值的指数更加简单,因为小数点的负移和正移均可通过所存储的指数E的正值来表示。如图1所示,所存储的表达式S[31],E[30:23],F[22:0]表示值为(-1)S*1.F*2(E-127)的数。在此形式中的单精度浮点数被认为是“规格化的”。如果所计算的浮点值并非规格化的(例如,它被生成为小数点并非处于尾数的最左两位之间),则通过将尾数左移或右移并且相应地调整指数直到该数符合形式(-1)S*1.F*2(E-127)来进行规格化。
双精度格式还可被用于使用64个存储位来表示尾数和指数的情况。64个存储位包括一个符号位、11位指数和53位尾数1.F中的52位小数部分F。在双精度格式中,指数E被移动了1023的值。因此,在双精度格式中,所存储的表达式S[63],E[62:52],F[51:0]表示浮点值(-1)S*1.F*2(E- 1023)。应当理解的是本技术可被应用于单精度格式、双精度格式或对浮点表达式使用不同数量的数位或不同偏移值的任意其他浮点格式。
除了规格化浮点值,浮点表示法还可表示其他量。如果一个值的指数E使其所有数位被设置为1,则这表示特殊值,诸如无穷和“非数”值(NaN),特殊值是无法通过使用实数来表示的结果,诸如,负数的平方根、除式0/0、使用无穷来表示的计算结果和对函数的定义域以外的值应用的该函数的结果(例如,对小于-1大于+1的数应用反正弦或反余弦)。当指数使其所有数位等于1时,通常通过尾数数位F全部等于0来表示无穷,而通过尾数的非零值来表示其他NaN值。用于处理无穷和NaN值的技术是已知的,并且可使用任意现有技术。因此,在此将不对这些数的处理作详细讨论。
当指数E使其所有数位等于零时表示零或非规格化(也被称为“denormal”)数中的任一种。如果浮点值的尾数位F全为零,则该浮点值等于零。如果尾数中的任一位等于1,则该数是非规格化数。非规格化数使其尾数的隐含位等于零而不是规格化数情况下的一。这允许值小于使用规格化数所表示的最小数。例如,在单精度情况下,使用规格化数所能表示的最小值为1.0*2-126,而如果使用非规格化数,由于前导一现在可处于23位尾数域F的最低有效位,则可表示的最小值为2-149(0.00000000000000000000001*2-126)。
图2示出了数据处理装置2的示例,其中数据处理装置2具有用于处理数据的处理流水线4。在此示例中的流水线4包括用于从存储器8(其可包括缓存)提取指令的提取(fetch)阶段6,用于解码所提取的指令的解码阶段10,用于检查指令所需的操作数是否可用并且当操作数变为可用时发出用于执行的指令的发布(issue)阶段12,以及用于执行指令的执行阶段14。应当理解的是流水线可包括其他阶段并且例如可允许乱序执行。装置2可包括出于简明的目的未在图2中示出许多其他元件。
图3示出了处理阶段14中的一部分处理电路,该部分处理电路用于执行浮点平方根运算。处理电路包括第一平方根处理电路16,其接收包括被开方数的指数ER和被开方数的尾数FR的被开方数值,并生成包括结果指数Eres被结果尾数Fres的结果值。在下面的示例中,表示法ER或Eres表示所存储的(经偏移的)指数,其等于被开方数的真实指数E或结果值减去偏移值,表示法FR或Fres表示尾数的小数部分,不包括真实尾数1.F(对于规格化值)或0.F(对于非规格化值)的隐含1或0位。
第一平方根处理电路16可生成任意被开方数值的平方根结果,并且可使用任意已知的技术来得出浮点平方根。例如,第一平方根处理电路16可使用迭代法,该迭代法对平方根做出初步估计,然后在一系列步骤中对该初步估计求精,直到它接近该被开方数的实际平方根,或者第一平方根处理电路16可使用逐位循环(逐位)法,该方法每次计算平方根值的一位或一个数字。平方根计算方法的示例可包括SRT方法,其使用一系列除法以确定平方根,或牛顿-拉夫森方法,该方法使用一系列乘法。一般来说,第一平方根处理电路16可采用相对大量的循环来生成其结果。
当被开方数是二的精确乘方时,通过使用第二平方根处理电路18可以更快地生成平方根结果。当被开方数R是二的乘方时,如下面所讨论的,结果尾数Fres可被设置为固定值,诸如1或结果指数Eres可仅通过将被开方数指数或经调整的被开方数指数二等分来形成。
因此,与向第一平方根处理电路16提供被开方数指数ER和尾数FR并行,也向第二平方根处理电路18和二的乘方检测电路20提供它们。二的乘方检测电路20检测被开方数是否是二的精确乘方。如果是,则二的乘方检测电路20控制复用器22输出第二平方根处理电路18所生成的结果,而如果被开方数R不是二的精确乘方,则复用器22输出第一平方根处理电路16所生成的结果。因此,尽管第二平方根处理电路18和二的乘方检测电路20需要一点额外的电路,但是这可被视为仅仅复制了在第一平方根处理电路16中可用的功能,发明人认识到在被开方数是二的乘方的情况下,第二平方根处理电路18能够远比第一平方根处理电路16更早地生成结果,这一事实很大地补偿了该附加开销。
图4示出了概括第二平方根处理电路18如何生成结果尾数和结果指数的表格。对于被开方数是规格化值(即,所存储的被开方数指数值ER并非全为0也不是全为1)的情况,有效(真实)被开方数指数Eeff等于经偏移的指数值ER减去对所使用的浮点表示法适当的偏移值(参见图1)。对于非规格化值(其是二的精确乘方)的情况,有效指数Eeff等于-bias-CLZ(FR),其中“bias”是偏移值,函数CLZ对所存储的尾数FR中的前导零的个数计数(不计算尾数的隐含0位)。例如,对于尾数0.01,前导零的个数为1。
图4的表格示出了如何从真实指数Eeff中确定结果指数,并且还示出了根据真实指数是奇数或偶数以及运算是非倒数平方根运算或倒数平方根运算如何确定结果尾数。
图5示出了二的乘方检测电路20如何检测被开方数值是否是二的精确乘方。在步骤30处,二的乘方检测电路检查经偏移的被开方数指数ER。如果指数ER并非全为1也不是全为0,则被开方数值是规格化的,然后在步骤32处,二的乘方检测电路检测所存储的尾数值FR是否使其所有位全等于0(即,包括隐含位的真实尾数是1.0000...)。如果不是,则被开方数不是二的精确乘方,然后在步骤34处,二的乘方检测电路控制复用器22选择第一平方根处理电路16的输出。如果尾数FR全为0,则在步骤36处,二的乘方检测电路20控制复用器22选择第二平方根处理电路18的输出,其中第二平方根处理电路18的输出将比第一平方根处理电路16的输出更早得到。这允许使用平方根结果的后续运算更早开始,从而改进了装置2的处理性能。
另一方面,如果在步骤30处,所存储的被开方数指数ER全为0,则该值是非规格化的(假设尾数并非全为0指示0值——这种情况可通过任意已知的技术来处理)。如果被开方数是非规格化的,则在步骤38处,二的乘方检测电路20检测尾数FR是否仅具有一位等于1,而所有其他位等于0。如果不是,则该被开方数R不是二的精确乘方,从而在步骤34处,第一平方根处理电路16被复用器22选择。如果尾数FR仅有一位等于1,则在步骤36处,第二平方根处理电路18的输出被选择,同样地,第二平方根处理电路18的输出将比第一电路16的结果更早得到。通过这种方式,当被开方数是二的乘方时,能够更快地完成浮点平方根运算。在步骤30和32处用以检查指数ER或尾数FR是否使其所有位被设置成0或使其所有位被设置成1的运算可通过使用一系列逻辑门(例如,与门、或非门或与非门)来相对简单地执行。
图6示出了在二的乘方检测电路20中用于检查被开方数尾数FR是否仅包括一位等于1的电路的示例。电路20包括逻辑门,这些逻辑门形成了二输入异或和或门的二叉树,还包括将每个二叉树的输出作为其输入的3路与门。换句话说,仅当所示出的三个二叉树均生成1值时,才能确定唯一的位条件(即,被开方数尾数FR仅包含一个被置位的数位)并且生成输出信号,表示该非规格化值是二的精确乘方。如图6中所能看到的,第一二叉树包括位于其层级中的第一级的异或门、位于其层级中的第二级的或门以及位于其层级中的第三级的单个或门。第二二叉树包括位于其层级中的第一级的或门、位于其层级中的第二级的异或门以及位于其层级中的第三级的最终一个或门。第三二叉树包括位于其层级中的第一级的或门、位于其层级中的第二级的或门以及位于其层级中的第三级的最终异或门。如果第一二叉树的输出被置位,则这表明在尾数中至少一位被置位,并且该位与它的成对邻居相异,即它的成对邻居未被置位。如果第二二叉树的输出被置位,则这表明尾数中的至少一位被置位,并且该至少一位被置位处的位所在的一对位置与和它相邻的一对位置相异,即,该相邻的一对位没有被置位的数位。最后,如果第三二叉树的输出被置位,则这表明与尾数中至少一位被置位的一半不同的另一半尾数(四位)不包含任何被置位的数位。如果所有这些二叉树输出均被置位,则这表明尾数中仅有一位被置位。因此,输出信号被与门断言(assert)以指示被开方数是二的精确乘方。尽管图6出于简明的目的示出了使用8位尾数的示例,然而,相同的技术可通过包括用于检查尾数的其他部分的类似的二叉树而被扩展用于更大的尾数。
因此,二的乘方检测电路20可检测被开方数是否是二的精确乘方,并且对复用器22进行相应控制。二的乘方检测电路20还控制第二平方根处理电路18,其中取决于所执行的运算的类型和真实的被开方数指数是奇数还是偶数,第二平方根处理电路18可以不同的方式处理被开方数。
图7示出了第二平方根处理电路18中的一些电路的示例。应当理解的是这仅仅是示例,通过使用不同的电路或对相同功能的不同布置可实现相同的结果。在一些情况下,第二平方根处理电路18可与处理电路14的其他部分共享一些组件,诸如移位器或反相器。
如图7所示,第二平方根处理电路18包括复用器50,该复用器接收来自二的乘方检测电路20的控制信号52,并且作为响应,选择若干预定尾数值中的一个用于作为结果尾数Fres输出。在这种情况下,可用值为1.0值、向上舍入版的和向下舍入版的如果被开方数具有偶数真实指数值,则结果尾数可被设置为1.0,而当被开方数具有奇数真实指数值时,则可选择对于双精度的情况,例如,经舍入的值被分别表示为十六进制的1.6A09E667F3BCD和1.6A09E667F3BCC,并且下一个有效十六进制数字将为9。类似的的向上舍入和向下舍入值可被提供用于单精度或其他浮点格式。应当注意的是值1.0和表示真尾数值——针对结果尾数Fres所选择的实际存储的尾数值将不包括前导1位,所以将对应于尾数的小数部分(例如,1.0的.0000...以及的.6A09)。
为了生成结果指数值Eres,在此示例中的第二平方根处理电路18包括求反器(negator)54,其中该求反器54用于生成表示被开方数指数的相反符号的指数的指数值;反相器(inverter)56,其中该反相器56用于对最高有效位反置;减量器58,该减量器58用于减去一;右移器60,该右移器60用于右移一个位置(通过符号扩展)以及另一反相器62,该反相器62用于对最高有效位反置。由求反器54、反相器56、减量器58、移位器60和反相器62组成的流水线可被用于被开方数是规格化的情况。求反器54和减量器56可以选择性地被忽略。当被开方数的真实指数是偶数时忽略减量器58,而当被开方数的真实指数是奇数时使用减量器58。
当浮点平方根运算是倒数平方根运算时使用求反器54以确定运算而对于非倒数平方根运算忽略求反器54。一般来说,求反器54可生成表示与被开方数指数ER相反符号的真实指数的指数值。例如,如果真实指数是+57,则求反器将生成表示-57的指数值。在实践中,这可通过若干方式来实现。由求反器执行的运算可对应于移除偏移值、对结果求反以产生相反符号的值,然后再次应用偏移值。在实践中,可能不需要实际执行这些运算。例如,偏移值被定义的方式实际上意味着这些运算可等效于简单地反置指数被开方数ER的所有位,然后减去一,以产生表示相反符号的经偏移的指数值。
类似地,对于处理非规格值,第二平方根处理电路18包括具有以下各项的流水线:前导零计数器64,该前导零计数器64用于生成前导零计数值CLZ;反相器66,该反相器66用于反置CLZ值的所有位;反相器72,该反相器72用于反置最高有效位;以及右移器74,该右移器74用于向右移动一个位置(通过符号扩展)。
乘法器76根据情况选择规格化流水线的输出或非规格化流水线的输出。尽管图7示出的规格化流水线和非规格化流水线是完全分开的,但是在其他实施方式中,这些流水线之间可以共享单元。例如,可以仅提供一个移位器,然后根据情况该移位器可被选择作为移位器60或74。
图8至11示出了通过使用第二平方根处理电路18来计算结果尾数和指数的各种示例。
如图8所示,对于规格化被开方数R的非倒数平方根,其中该被开方数R是二的偶数次方,该运算可如下被执行:
·针对结果尾数Fres选择1.0。
·用反相器56将经偏移的指数ER的最高有效位反置。
·通过使用移位器60将反相器56的输出向右移动一个位置(通过符号扩展)。
·用反相器62将移位器的输出的最高有效位再次反置,以得到经偏移的结果指数Eres。
图8示出了这种方法的两个示例,这表明该方法对正指数和负指数均有效。因为向右移动具有将指数除以二的效果,并且反置和再次反置最高有效位实质上移除了偏移然后再次应用偏移以使得移动对未经偏移的真实指数值起作用,所以这种方法有效。
图9示出了类似的示例,其中对规格化被开方数应用非倒数平方根运算,该规格化被开方数是二的奇数次幂。这意味着未偏移的指数是奇数,即,经偏移的指数是偶数。在这种情况下,该运算可如下被执行:
·将结果尾数Fres设置为适当的字长小数(根据所使用的是双精度浮点还是单精度浮点,该字长小数可以是52位或24位),如上面所讨论的,根据当前活动的舍入模式进行舍入。
·通过使用反相器56将经偏移的被开方数指数ER的最高有效位反置。
·通过使用减量器58减去1。
·通过使用移位器60将减量器58的输出向右移动一个数位位置(同样,通过符号扩展)。
·将移位器的输出的最高有效位再次反置,以得到经偏移的结果指数Eres。
同样,图9表明该方法对正真实指数值和负真实指数值均给出了正确结果。当真实指数是奇数时,使用减量器58的减法步骤被用于将该真实指数减少至最接近的偶数值,源于指数的乘数二被开平方以给出尾数的值(例如, )。
倒数平方根运算可通过与图8或图9中所示的技术类似的方式来执行。除了与上面所讨论的使用求反器54来改变指数的符号不同外,所执行的其他运算与非倒数的情况相同。由于对真实指数为“E”的二的精确乘方执行的倒数平方根运算等效于对真实指数为“-E”的二的精确乘方执行的非倒数平方根运算,因而这种方法有效。
图10示出了使用第二平方根处理电路18处理非规格化值的示例。当值为非规格化的时候,所存储的指数值ER为全0并且尾数等于0.????,其中通过问号表示的数位可以是0或1中的任一项。如果在小数点后面的这些数位中仅有一位等于1,则该值将是二的精确乘方。在这种情况下,基于偏移值和尾数的前导零计数来确定真实指数Eeff。例如,对于1.0×2-1034,尾数是0.0000_0000_0001,从而偏移减去前导零计数=-1023-11=-1034。
如果非规格化值的真实指数是偶数,而所执行的运算是非倒数平方根运算,则结果可如下被生成:
·将结果尾数Fres设置为1.0。
·通过使用前导零计数器64确定被开方数尾数FR的前导零计数CLZ。
·通过使用反相器66将CLZ的所有位反置以给出具有与当前浮点表示法中的指数数量相同的数位的值(在这种情况下为11位)。
·通过使用反相器72将最高有效位反置。
·使用移位器74、通过符号扩展右移一个位置以给出经偏移的结果指数Eres,该结果指数将表示规格化的浮点值。
如图10所示,其给出了正确的结果。反置CLZ值实质上与将偏移值加到CLZ值相同,均给出了真实指数的量值(经反置的CLZ值的最后一位可能是不正确的,但在下面的移位步骤中,它将从最终结果中移出,因此这不会影响到最后的结果)。然后,将此值右移一个位置实质上是将真实指数二等分以给出平方根指数的结果。
类似地,图11示出了非规格化的情况,其中被开方数具有奇数真实指数。在这种情况下,结果指数通过与偶数真实指数相同的方式被计算,但给尾数选择部分。因此,在这种情况下,所执行的运算为:
·给结果尾数Fres选择
·通过使用CLZ计数器64生成CLZ计数。
·通过使用反相器66将CLZ计数的所有位反置。
·通过使用反相器72将最高有效位反置。
·使用移位器74右移一个位置以给出经偏移的结果指数Eres(同样,通过符号扩展)。
如图11所示,这同样给出了正确的结果。
下面的示例表明本技术对双精度非规格化值和单精度非规格化值均有效(每个数字的基数由跟在该数字后面的下标表示):
双精度-CLZ值具有11位
1.0*2-1034->e(经偏移)=0,f=0.0010...16(DP),CLZ(f)=00B16=000_0000_10112inv(CLZ(f))=7F416=111_1111_01002;
√(1.0*2-1034)=1.0*2-517->e(经偏移)=(-517+1023)10=1FA16=001_1111_10102
f=0(DP)
1.0*2-1033->e(经偏移)=0,f=0.0020...16(DP),CLZ(f)=00A16=000_0000_10102inv(CLZ(f))=7F516=111_1111_01012;
√(1.0*2-1033)=√(2.0*2-1034)=1.414...*2-517->e(经偏移)=(-517+1023)10=1FA16=001_1111_10102f=1.6A09E667F3BCC_916(DP,g位和st位置位)(DP)
单精度-CLZ值具有8位
1.0*2-134->e(经偏移)=0,f=0.010...16(SP),CLZ(f)=0716=0000_01112inv(CLZ(f))=F816=1111_10002;
√(1.0*2-134)=1.0*2-67->e(经偏移)=(-67+127)10=3C16=001111002f=0(SP)
1.0*2-133->e(经偏移)=0,f=0.020...16(SP),CLZ(f)=0616=0000_01102inv(CLZ(f))=F916=1111_10012;
√(1.0*2-133)=√(2.0*2-134)=1.414...*2-67->e(经偏移)(-67+127)10=3C16=0011_11002
f=1.6A09E6_616(SP,g位未置位,sticky置位)
对于非规格化值的倒数平方根,非倒数平方根可以通过确定值X的常规方式来确定,然后可得到倒数1/X。对于如图10的示例中的二的偶数次方的非规格化值,这可通过与上面针对求反器54所讨论的运算相似的方式对结果指数求反来实现(例如,将图10中所生成非倒数结果1.0*2-517转换成倒数平方根结果1.0*2517)。对于如图11的示例中的二的奇数次方的非规格化值,这可通过对结果指数求反再减去一来实现(例如,将非倒数结果转换为它的倒数)。此外,倒数平方根运算可通过与非倒数平方根运算相似的方式来执行。
尽管本文结合附图已经详细描述了本发明的说明性的实施例,应当理解的是本发明不局限于那些确切的实施例,并且在不背离本发明的由所附权利要求所定义的范围和精神的情况下,本领域技术人员能够对其做出各种变化和修改。
Claims (19)
1.一种数据处理装置,包括:
处理电路,该处理电路被配置成执行用于确定具有被开方数指数和被开方数尾数的被开方数值R的平方根的浮点平方根运算,以生成具有结果指数和结果尾数的结果值;
其中所述处理电路包括:
第一平方根处理电路,该第一平方根处理电路被配置成执行并非作为二的精确乘方的被开方数值的所述浮点平方根运算;
第二平方根处理电路,该第二平方根处理电路被配置成执行作为二的精确乘方的被开方数值的所述浮点平方根运算,其中所述第二平方根处理电路被配置成通过比所述第一平方根处理电路的处理循环少的处理循环生成所述结果值;以及
二的乘方检测电路,该二的乘方检测电路被配置成检测所述被开方数值是否是二的精确乘方,如果所述被开方数值不是二的精确乘方,则控制所述处理电路输出由所述第一平方根处理电路生成的所述结果值,而如果所述被开方数值是二的精确乘方,则控制所述处理电路输出由所述第二平方根处理电路生成的所述结果值。
2.根据权利要求1所述的数据处理装置,其中所述二的乘方检测电路被配置成:与所述第一平方根处理电路开始对所述被开方数值执行所述浮点平方根运算并行地检测所述被开方数值是否是二的精确乘方。
3.根据权利要求1所述的数据处理装置,其中如果所述被开方数值是规格化值,则所述二的乘方检测电路被配置成:如果所述被开方数尾数具有1.0的值,则检测到所述被开方数值是二的精确乘方。
4.根据权利要求1所述的数据处理装置,其中如果所述被开方数值是非规格化值,则所述二的乘方检测电路被配置成:如果所述被开方数尾数仅包括一位具有1的值,则检测到所述被开方数值是二的精确乘方。
5.根据权利要求1所述的数据处理装置,其中所述浮点平方根运算包括以下各项之一:
(i)用于生成所述结果值等于的非倒数浮点平方根运算;以及
(ii)用于生成所述结果值等于的倒数浮点平方根运算。
6.根据权利要求1所述的数据处理装置,其中所述第二平方根处理电路被配置成将所述结果值生成为:
所述结果尾数具有预定的尾数值;以及
所述结果指数具有对应于经调整的指数的一半的值。
7.根据权利要求6所述的数据处理装置,其中所述预定尾数值和所述经调整的指数是根据所述被开方数值R等于二的偶数次方还是等于二的奇数次方来选择的。
8.根据权利要求7所述的数据处理装置,其中如果所述被开方数值R等于二的偶数次方,则所述预定尾数具有对应于1.0的值。
9.根据权利要求7所述的数据处理装置,其中如果所述被开方数值R等于二的奇数次方,则所述预定尾数具有对应于二的平方根的值。
10.根据权利要求7所述的数据处理装置,其中如果所述浮点平方根运算是用于生成所述结果值等于的非倒数浮点平方根运算,并且所述被开方数值R等于二的偶数次方,则所述经调整的指数等于所述被开方数指数。
11.根据权利要求7所述的数据处理装置,其中如果所述浮点平方根运算是用于生成所述结果值等于的非倒数浮点平方根运算,并且所述被开方数值R等于二的奇数次方,则所述经调整的指数等于所述被开方数指数减去一。
12.根据权利要求7所述的数据处理装置,其中如果所述浮点平方根运算是用于生成所述结果值等于的倒数浮点平方根运算,并且所述被开方数值R等于二的偶数次方,则所述经调整的指数等于-E,其中E是所述被开方数指数。
13.根据权利要求7所述的数据处理装置,其中如果所述浮点平方根运算是用于生成所述结果值等于的倒数浮点平方根运算,并且所述被开方数值R等于二的奇数次方,则所述经调整的指数等于-E-1,其中E是所述被开方数指数。
14.根据权利要求7所述的数据处理装置,其中如果所述被开方数值是二的精确乘方的非规格化值,则所述被开方数尾数仅有一位等于1,而所述被开方数指数值等于0,并且所述第二平方根处理电路被配置成基于所述被开方数尾数值内的所述等于1的位的位置确定所述被开方数指数E。
15.根据权利要求1所述的数据处理装置,其中如果所述浮点平方根运算是用于生成所述结果值等于的非倒数浮点平方根运算,并且所述被开方数值R是等于二的偶数次方的规格化值,则所述第二平方根处理电路被配置成通过以下各项生成所述结果值:
生成具有对应于1.0的值的所述结果尾数;
将经偏移的被开方数指数值的最高有效位反置以生成第一中间值,其中所述经偏移的被开方数指数值等于所述被开方数指数减去偏移值;
将所述第一中间值向右移动一位的位置以生成第二中间值;并且
将所述第二中间值的所述最高有效位反置以生成经偏移的结果指数值,其中所述经偏移的结果指数值等于所述结果指数减去所述偏移值。
16.根据权利要求1所述的数据处理装置,其中如果所述浮点平方根运算是用于生成所述结果值等于的非倒数浮点平方根运算,并且所述被开方数值R是等于二的奇数次方的规格化值,则所述第二平方根处理电路被配置成通过以下各项生成所述结果值:
生成具有对应于二的平方根的值的所述结果尾数;
将经偏移的被开方数指数值的最高有效位反置以生成第一中间值,其中所述经偏移的被开方数指数值等于所述被开方数指数减去偏移值;
从所述第一中间值减去一以生成第二中间值;
将所述第二中间值向右移动一位的位置以生成第三中间值;并且
将所述第三中间值的所述最高有效位反置以生成经偏移的结果指数值,其中所述经偏移的结果指数值等于所述结果指数减去所述偏移值。
17.根据权利要求1所述的数据处理装置,其中如果所述浮点平方根运算是用于生成所述结果值等于的非倒数浮点平方根运算,并且所述被开方数值R是等于二的偶数次方的非规格化值,则所述第二平方根处理电路被配置成通过以下各项生成所述结果指数:
确定表示被开方数尾数值中的前导零个数的前导零计数值,其中所述被开方数尾数值包括所述被开方数尾数的小数位;
将所述前导零计数值反置以生成经反置的前导零计数值;
将所述经反置的前导零计数值的最高有效位反置以生成调整后的经反置的前导零计数值;并且
将所述调整后的经反置的前导零计数值向右移动一位的位置以生成经偏移的结果指数值,所述经偏移的结果指数值等于所述结果指数减去偏移值。
18.一种数据处理设备,包括:
处理装置,用于执行确定具有被开方数指数和被开方数尾数的被开方数值R的平方根的浮点平方根运算,以生成具有结果指数和结果尾数的结果值;
其中所述处理装置包括:
用于执行并非作为二的精确乘方的被开方数值的所述浮点平方根运算的第一平方根处理装置;
用于执行作为二的精确乘方的被开方数值的所述浮点平方根运算的第二平方根处理装置,其中所述第二平方根处理装置被配置成通过比所述第一平方根处理装置的处理循环少的处理循环生成所述结果值;以及
用于检测所述被开方数值是否是二的精确乘方的二的乘方检测装置,如果所述被开方数值不是二的精确乘方,则控制所述处理装置输出由所述第一平方根处理装置生成的所述结果值,而如果所述被开方数值是二的精确乘方,则控制所述处理装置输出由所述第二平方根处理装置生成的所述结果值。
19.一种用于执行浮点平方根运算的方法,所述浮点平方根运算用于确定具有被开方数指数和被开方数尾数的被开方数值R的平方根,以生成具有结果指数和结果尾数的结果值;所述方法包括:
检测所述被开方数值是否是二的精确乘方;
如果所述被开方数值不是二的精确乘方,则输出由第一平方根处理电路生成的所述结果值,所述第一平方根处理电路被配置成执行并非作为二的精确乘方的被开方数值的所述浮点平方根运算;以及
如果所述被开方数值是二的精确乘方,则输出由第二平方根处理电路生成的所述结果值,所述第二平方根处理电路被配置成执行作为二的精确乘方的被开方数值的所述浮点平方根运算,其中所述第二平方根处理电路被配置成通过比所述第一平方根处理电路的处理循环少的处理循环生成所述结果值。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1413127.0A GB2528497B (en) | 2014-07-24 | 2014-07-24 | Apparatus And Method For Performing Floating-Point Square Root Operation |
GB1413127.0 | 2014-07-24 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105302519A true CN105302519A (zh) | 2016-02-03 |
CN105302519B CN105302519B (zh) | 2019-07-12 |
Family
ID=51587177
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510423618.3A Active CN105302519B (zh) | 2014-07-24 | 2015-07-17 | 用于执行浮点平方根运算的装置和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9710229B2 (zh) |
KR (1) | KR102412746B1 (zh) |
CN (1) | CN105302519B (zh) |
GB (1) | GB2528497B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108021180A (zh) * | 2016-11-03 | 2018-05-11 | 三星电子株式会社 | 产生起始估计的方法、计算机设备及制造和测试的方法 |
CN110147218A (zh) * | 2019-04-09 | 2019-08-20 | 珠海市杰理科技股份有限公司 | 基于Cordic算法的运算电路与方法 |
CN110199256A (zh) * | 2016-12-01 | 2019-09-03 | 索尼半导体解决方案公司 | 计算设备、计算方法、以及计算机程序 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2528497B (en) * | 2014-07-24 | 2021-06-16 | Advanced Risc Mach Ltd | Apparatus And Method For Performing Floating-Point Square Root Operation |
CN112732223B (zh) * | 2020-12-31 | 2024-04-30 | 上海安路信息科技股份有限公司 | 半精度浮点数除法器数据处理方法及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5157624A (en) * | 1990-12-13 | 1992-10-20 | Micron Technology, Inc. | Machine method to perform newton iterations for reciprocal square roots |
CN1280682A (zh) * | 1997-09-26 | 2001-01-17 | 艾利森公司 | 用于累加对数数值的方法、装置和计算机程序产品 |
US20070083587A1 (en) * | 2005-07-29 | 2007-04-12 | Samsumg Electronics Co., Ltd. | Apparatus and method for calculating square root |
CN101216753A (zh) * | 2008-01-04 | 2008-07-09 | 清华大学 | 一种用于浮点除法和平方根运算的预处理电路结构 |
CN101317152A (zh) * | 2005-10-05 | 2008-12-03 | 高通股份有限公司 | 具有可选择的子精确度的浮点处理器 |
CN102566967A (zh) * | 2011-12-15 | 2012-07-11 | 中国科学院自动化研究所 | 一种采用多级流水线结构的高速浮点运算器 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4336599A (en) * | 1980-06-09 | 1982-06-22 | Sperry Corporation | Circuit for performing a square root calculation |
US6542963B2 (en) * | 2001-01-10 | 2003-04-01 | Samsung Electronics Co., Ltd. | Partial match partial output cache for computer arithmetic operations |
WO2007063601A1 (ja) * | 2005-12-02 | 2007-06-07 | Fujitsu Limited | 浮動小数点数の除算または平方根演算を行う演算装置及び演算方法 |
US8812575B2 (en) * | 2010-07-06 | 2014-08-19 | Silminds, Llc, Egypt | Decimal floating-point square-root unit using Newton-Raphson iterations |
GB2528497B (en) * | 2014-07-24 | 2021-06-16 | Advanced Risc Mach Ltd | Apparatus And Method For Performing Floating-Point Square Root Operation |
-
2014
- 2014-07-24 GB GB1413127.0A patent/GB2528497B/en active Active
-
2015
- 2015-06-02 US US14/728,085 patent/US9710229B2/en active Active
- 2015-07-15 KR KR1020150100155A patent/KR102412746B1/ko active IP Right Grant
- 2015-07-17 CN CN201510423618.3A patent/CN105302519B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5157624A (en) * | 1990-12-13 | 1992-10-20 | Micron Technology, Inc. | Machine method to perform newton iterations for reciprocal square roots |
CN1280682A (zh) * | 1997-09-26 | 2001-01-17 | 艾利森公司 | 用于累加对数数值的方法、装置和计算机程序产品 |
US20070083587A1 (en) * | 2005-07-29 | 2007-04-12 | Samsumg Electronics Co., Ltd. | Apparatus and method for calculating square root |
CN101317152A (zh) * | 2005-10-05 | 2008-12-03 | 高通股份有限公司 | 具有可选择的子精确度的浮点处理器 |
CN101216753A (zh) * | 2008-01-04 | 2008-07-09 | 清华大学 | 一种用于浮点除法和平方根运算的预处理电路结构 |
CN102566967A (zh) * | 2011-12-15 | 2012-07-11 | 中国科学院自动化研究所 | 一种采用多级流水线结构的高速浮点运算器 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108021180A (zh) * | 2016-11-03 | 2018-05-11 | 三星电子株式会社 | 产生起始估计的方法、计算机设备及制造和测试的方法 |
CN108021180B (zh) * | 2016-11-03 | 2023-06-02 | 三星电子株式会社 | 产生起始估计的方法、计算机设备及制造和测试的方法 |
CN110199256A (zh) * | 2016-12-01 | 2019-09-03 | 索尼半导体解决方案公司 | 计算设备、计算方法、以及计算机程序 |
CN110199256B (zh) * | 2016-12-01 | 2023-09-12 | 索尼半导体解决方案公司 | 计算设备、计算方法、以及计算机程序 |
CN110147218A (zh) * | 2019-04-09 | 2019-08-20 | 珠海市杰理科技股份有限公司 | 基于Cordic算法的运算电路与方法 |
CN110147218B (zh) * | 2019-04-09 | 2021-05-11 | 珠海市杰理科技股份有限公司 | 基于Cordic算法的运算电路与方法 |
Also Published As
Publication number | Publication date |
---|---|
GB201413127D0 (en) | 2014-09-10 |
KR102412746B1 (ko) | 2022-06-24 |
US20160026437A1 (en) | 2016-01-28 |
KR20160012916A (ko) | 2016-02-03 |
GB2528497A (en) | 2016-01-27 |
CN105302519B (zh) | 2019-07-12 |
US9710229B2 (en) | 2017-07-18 |
GB2528497B (en) | 2021-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9703531B2 (en) | Multiplication of first and second operands using redundant representation | |
US9703529B2 (en) | Exception generation when generating a result value with programmable bit significance | |
US9733899B2 (en) | Lane position information for processing of vector | |
CN107769791B (zh) | 用于定点到浮点的转换的装置和方法及2的负幂检测器 | |
CN105302519A (zh) | 用于执行浮点平方根运算的装置和方法 | |
US9720646B2 (en) | Redundant representation of numeric value using overlap bits | |
CN104899004A (zh) | 一种用于将浮点操作数相乘的数据处理装置和方法 | |
Raveendran et al. | A novel parametrized fused division and square-root POSIT arithmetic architecture | |
US9928031B2 (en) | Overlap propagation operation | |
CN106997284B (zh) | 实现浮点运算操作的方法和装置 | |
US10459689B2 (en) | Calculation of a number of iterations | |
KR20210122828A (ko) | 앵커 데이터 요소에서의 특수 값 인코딩 | |
CN108153513B (zh) | 前导零预测 | |
KR20210124347A (ko) | 앵커 데이터 요소 변환 | |
US20090094308A1 (en) | Relaxed remainder constraints with comparison rounding | |
US8924447B2 (en) | Double precision approximation of a single precision operation | |
CN117420981A (zh) | 二进制数基础运算检错方法及装置、存储介质和终端 | |
Arnold | Fundamentals of Floating-Point Arithmetic | |
JP2011090623A (ja) | 浮動小数点検索演算装置、浮動小数点検索演算方法及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |