Math 平方根的硬件实现?

Math 平方根的硬件实现?,math,hardware,sqrt,Math,Hardware,Sqrt,我试图找到更多关于高效平方根算法的信息,这些算法最有可能在FPGA上实现。我们已经找到了很多算法,但哪一种算法是英特尔或AMD的? 我所说的高效是指它们要么非常快,要么不需要太多内存 编辑:我可能应该提到,问题通常是一个浮点数,因为大多数硬件实现IEEE 754标准,其中数字表示为:1符号位、8位偏置指数和23位尾数 谢谢 这是一个非常适合快速反平方根的方法。 看一看。请注意,这几乎是关于最初的猜测,相当惊人的文档:)不是一个完整的解决方案,而是几个指针 我假设您使用的是浮点运算,所以第1点是记

我试图找到更多关于高效平方根算法的信息,这些算法最有可能在FPGA上实现。我们已经找到了很多算法,但哪一种算法是英特尔或AMD的? 我所说的高效是指它们要么非常快,要么不需要太多内存

编辑:我可能应该提到,问题通常是一个浮点数,因为大多数硬件实现IEEE 754标准,其中数字表示为:1符号位、8位偏置指数和23位尾数


谢谢

这是一个非常适合快速反平方根的方法。

看一看。请注意,这几乎是关于最初的猜测,相当惊人的文档:)

不是一个完整的解决方案,而是几个指针

我假设您使用的是浮点运算,所以第1点是记住浮点存储为尾数和指数。由于对数的存在,平方根的指数大约是原始数字指数的一半

然后尾数可以用一个查找表来近似,然后你可以使用两个牛顿-拉斐逊圆来给LUT的结果提供一些准确性


我已经有8年没有实现过类似的功能了,但我认为我就是这样做的,并且能够在3到4个周期内得到结果。

有详细信息。为什么不实现呢?您只需要进行移位和加法,查找表之类的事情不需要额外的内存。看起来很适合FPGA。谢谢@Alex的评论。我将尝试寻找更多的资源,因为我仍然不知道如何用VHDL实现它。还有一个问题,这不就是sqrt的整数部分吗?你是想尽可能快地解一个平方根,还是尽可能快地解一个连续的平方根流?@DimitarPetrov:对,那段特殊的代码计算整数的整数平方根。但您也可以将其用于浮点值,因为sqrt(尾数*2^指数)=sqrt(尾数)*2^(指数/2),并且您可以始终将数字表示为整数尾数乘以2的偶数幂。您应该在问题中包含有关浮点平方根和VHDL的详细信息。实际上,VHDL可能需要一个单独的问题。非常感谢!我已经看到了这一点,看起来非常令人印象深刻,但是“神奇数字”一开始让我有点害怕。我再看一眼:)我觉得这个答案与这个问题并不相关。该算法只计算平方根逆的一个粗略近似值,并没有在FPGA的Hanks Sven上实现。FPGA上的大多数实现是否只使用牛顿-拉斐逊方法的一些变体?像一些从除法中去掉的倒数一样,除法本身是一个昂贵的运算?@DimitarPetrov,只有倒数平方根才需要幻数。平方根可以通过右移和几轮牛顿-拉斐逊来实现。谢谢保罗!你能告诉我具体的算法吗?是的,我在用浮点运算,刚刚编辑了我的问题。。。或者你能再详细解释一下你的解释吗,因为我不太明白每一件事:)不幸的是,时间太长了,我记不起确切的细节了,而且是以前的雇主写的,所以我也查不到。如果你有具体问题,我会尽力回答。谢谢@Paul。我把你的问题标记为最佳答案,因为这给了我一些想法,并(希望)为我指明了正确的方向。谢谢