2012-04-02 160 views
3

我在想什麼是實施32位IEEE-754浮點除法時的折衷:使用LUT和通過Newton-Raphson方法?LUT與Newton-Raphson Division對於IEEE-754 32位浮點

當我說的權衡我的意思是在內存的大小,指令計數的條件等

我有一個小的存儲器(130個字(每個16位))。我將尾數12位的尾數(包括隱藏位)存儲在一個存儲單元中,而尾數12位的尾數存儲在另一個存儲單元中。

目前,我正在使用牛頓 - 拉夫森分部,但我正在考慮如果我改變了我的方法是什麼折衷。這裏是我的算法鏈接:Newton's Method for finding the reciprocal of a floating point number for division

謝謝你,請解釋你的推理。

+2

這也不是一個折衷。 – harold 2012-04-02 17:57:12

+0

它取決於平臺,以及所需的準確度水平。 – 2012-04-02 17:57:40

+0

這是爲什麼標記爲[tag:c]和[tag:C++]?除非在程序集中進行編程,否則幾乎不必考慮這些基本的東西,對嗎? – leftaroundabout 2012-04-02 17:59:43

回答

3

每個Newton-Raphson步驟大致使精度位數增加一倍,因此如果能夠計算出您對特定大小的LUT期望的精度位數,則應該能夠計算出有多少個NR你需要達到你想要的精度的步驟。 Cray-1使用NR作爲其相互計算的最後階段。尋找這個,我發現了一個相當詳細的文章:第九屆IEEE計算機算術研討會(1989年9月6 - 8日)的An Accurate, High Speed Implementation of Division by Reciprocal Approximation

+2

是的,查特與牛頓 - 拉夫森不是一個/或者,它是一個既/和。 – comingstorm 2012-04-02 22:07:11

+1

我同意這樣的觀點,即一個小LUT的初始近似值和一個收斂迭代值的組合(不一定是牛頓的)通常效果最好。正如我在回答你之前關於FP分割的問題時所指出的,牛頓迭代(其具有二次收斂性)可能不是最佳選擇。因此,我建議查看一個256字節的查找表加上立體收斂迭代的單精度divison的組合:http://stackoverflow.com/questions/9011161/how-to-implement-floating-point-division-in-binary -with-no-division-hardware- – njuffa 2012-04-03 18:25:11

+0

@mcdowella我試過鏈接,但網頁不可用。你能否給出文件的名稱,以便我可以閱讀它? – chitranna 2014-05-20 22:58:38

4

這個折衷很簡單。 LUT使用額外的內存,希望減少指令數量以節省一些時間。它是否有效將取決於處理器的細節 - 特別是緩存。

對於Newton-Raphson,您將X/Y更改爲X *(1/Y)並使用您的迭代來查找1/Y。至少在我的經驗中,如果你需要全面的精確度,那麼它很少有用 - 它的主要優勢在於讓你更快地找到某種東西(比如說)16位精度。

通常的劃分方法是bit-by-bit method。雖然這個特定的答案涉及整數,但對於浮點而言,你做的基本上是相同的,除了與它一起減去指數。浮點數基本上是A * 2 N,其中A是有效數,N是數的指數部分。所以,你取兩個數字A * 2 N/B * 2 M,並進行除法A/B * 2 N-M,其中A和B在這種情況下被視爲(基本上)整數。唯一真正的區別是,對於浮點而言,您通常需要舍入而不是截斷結果。這基本上意味着執行除法(至少)一個額外的精度,然後如果額外的一位是四捨五入的。

使用查找表最常用的方法是SRT分割。這通常是用硬件完成的,所以我可能會使用Google的「Verilog SRT」或「VHDL SRT」。用C++渲染它不應該是非常困難的。如果我在鏈接答案中列出的方法在每次迭代中按位生成,則可以將其寫爲做2,4等等。如果內存服務,則表中的大小隨着每次迭代生成的位數的增加按照二次方增長,所以很少在實踐中看到遠遠超過4個。

+1

SRT要求N Veridian 2012-04-02 18:23:19

+0

@starbox:通過標準化N和D可以很容易地達到這個目的。 – 2012-04-02 18:27:11

+0

@OliCharlesworth,我相信會出現精度損失。你能規範化並保證100%符合ieee-754標準的32位數的結果嗎? – Veridian 2012-04-02 18:53:53

相關問題