2

我随便阅读了英特尔架构参考手册http://www.cs.princeton.edu/courses/archive/spr12/cos217/reading/ia32opt.pdf,当我阅读指令延迟和吞吐量附录时,我发现 sqrt 指令的延迟(执行核心完成执行构成指令的所有微操作所需的时钟周期数。)与除法的延迟完全相同(在第C-28) 指令——至少对于某些微架构而言。对于单精度、双精度和扩展精度,数字分别为 30、40 和 44 个时钟周期。

我的问题是 sqrt 指令如何与 div 指令一样大的处理器接收器?我一直认为 sqrt 指令在任何语言中都是昂贵的。

4

2 回答 2

4

这并不为人所知,但有一些计算平方根的算法在移位运算方面与除法一样快。这些不是牛顿近似。

请参见(Sqrt in) 二进制数字系统(以 2 为底)。我第一次在 Knuth 的半数字算法书中看到了这一点,并在 1970 年代初期用它在 16 位小型计算机上以与除法相同的速度对 sqrts 进行编码。循环的核心移出两位,计算平方根位,然后重复。因此,总移位 == 位数,这与经典除法相同。

如果他们确实通过芯片上的移位和比较方法进行划分,他们可以很容易地实现平方根。

于 2013-02-16T06:39:10.307 回答
3

从理论上讲,除法与许多函数(包括平方根)的顺序相同,可以通过http://en.wikipedia.org/wiki/Newton%27s_method计算得出。牛顿法的迭代次数很少,因为每次正确数字的数量都会增加一倍。早期迭代很便宜,因为您不必以全精度进行它们-您只需要迭代的期望精度-渐近结果是每个迭代都与单个全精度除法一样昂贵-请参阅http: //en.wikipedia.org/wiki/Computational_complexity_of_mathematical_operations

在一个芯片上,他们可能对两者都使用了一些高度调整的专用方法,但如果对成本的最大贡献是最终通过芯片的乘法流水线获得全精度结果,那么它们可能是相同的成本在快速查表或其他近似解决方案之后。

于 2013-02-16T05:43:31.457 回答