2012-01-15 33 views
7

我試圖找到更多的信息有效的平方根算法,最有可能在FPGA上實現。很多算法已經被發現,但是哪一個算法來自Intel或AMD? 有效率我的意思是它們要麼非常快,要麼不需要太多的記憶。編輯:我應該提到的問題是一般的浮點數,因爲大多數硬件實現了IEEE 754標準,其中數字表示爲:1符號位,8位偏置指數和23位尾數。平方根的硬件實現?

謝謝!

+0

http://stackoverflow.com/questions/1528727/why-is-sse-scalar-sqrtx-slower-than-rsqrtx-x有詳細的信息。 – 2012-01-15 17:07:09

+0

爲什麼不實施[this](http://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Binary_numeral_system_.28base_2.29)?你只需要進行輪班和追加,並且不需要像查找表那樣的額外內存。看起來很適合FPGA。 – 2012-01-15 18:36:21

+0

感謝評論@Alex。我會盡量找到更多的資源,因爲我仍然不知道如何以VHDL實現它。還有一個問題,是不是隻能找到sqrt的整數部分? – 2012-01-15 19:49:12

回答

5

不是一個完整的解決方案,而是一對指針。

我假設你在浮點工作,所以第1點記住浮點存儲爲尾數和指數。由於對數,平方根的指數大約是原始數的一半。

然後可以用查找表來近似尾數,然後可以使用幾個牛頓 - 拉弗森回合給LUT的結果提供一些準確性。

我大約8年沒有實施過這樣的事情,但我認爲這就是我如何做到的,並且能夠在3或4個週期內獲得結果。

+0

謝謝Paul!你能指點我特定的算法嗎?是的,我正在浮點工作,只是編輯我的問題......或者你可以擴大一點你的解釋,因爲我不太瞭解everyhing :) – 2012-01-16 14:40:02

+0

不幸的是,它已經很長,我不記得精確細節,這是以前的僱主,所以我也不能查看它。如果您有具體問題,我會盡我所能來回答他們。 – 2012-01-16 16:00:24

+0

謝謝@保羅。我將你的問題標記爲最佳答案,因爲這給了我一些想法,並指出了我(希望)朝着正確的方向。謝謝 – 2012-01-16 22:01:15

2

這是一個很好的快速反quare根。
看看它吧here。請注意,這幾乎是最初的猜測,相當驚人的文檔:)

+0

非常感謝!我已經看到了這一點,看起來很有衝擊力,但是「魔術數字」在一開始就讓我有點害怕。我會再看看:) – 2012-01-15 17:41:44

+0

我不覺得這個答案真的與問題有關。該算法僅計算平方根倒數的粗略近似值,並且絕對不是在FPGA的 – 2012-01-15 18:09:23

+0

上實現的謝謝Sven。 FPGA上的大多數實現是否只使用Newton-Raphson方法的一些變體?就像一些倒退擺脫分裂,這本身是一個昂貴的操作? – 2012-01-15 18:13:31