2012-04-02 158 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

相关问题