浮点平方根的硬件实现如何工作?他们会使用哪种算法,任何人都可以提供verilog / vhdl实现的链接吗?
答案 0 :(得分:3)
AFAIK,数字递归算法(小资源)或倒数平方根上的牛顿迭代(需要其他算子:加法器,乘法器或FMA)。
关于牛顿迭代,初始近似的选择并不明显。参见Kornerup和Muller的文章Choosing starting values for certain Newton–Raphson iterations。
答案 1 :(得分:2)
通过在硬件中实现1 / sqrt(x)的近似值,可以得到最好的收益,可以提供10或12位的精度,就像英特尔处理器那样。然后使用良好的旧牛顿迭代来仅使用加/减/乘法来改进该近似,并将最后的近似值乘以x。
或者,考虑计算x的平方根与x除以x的平方根相同。你可以实现一个非常类似于除法的东西,每次都给出一点精度,除了你在每次迭代中除以变化的数字。