【发布时间】:2012-11-12 19:43:46
【问题描述】:
我正在写一篇关于 CPU 设计和实现不同数学运算(例如加法、乘法、除法、平方根和对数)的论文。这篇论文也是关于数值分析的。然而,我似乎走到了尽头。因此,我有一些问题
- 是否有任何阅读材料(其他论文、书籍)可以将某些操作分解为更简单的步骤?
- 我的印象是牛顿法用于平方根(有时是除法),泰勒级数用于对数。这是假的吗?用什么?
- 软件实现的浮点支持是否有所不同?
我意识到这可能取决于 CPU 架构,因此我们将不胜感激提供常见 CPU 的答案,例如较新的 Intel i7 处理器(通常是 x86 架构)。 非常感谢!
【问题讨论】:
-
对数不再在硬件中实现。他们在 x87 FPU 中有它,但不是在所有现代的东西中。
-
有意思,那我去搜一下。不知道有没有依赖泰勒级数的运算?
-
我假设实现三角函数的硬件将使用CORDIC 或某种泰勒级数+参数缩减。以防万一,就硅房地产而言,它们都很昂贵。因此它们没有包含在 SSE 等现代扩展中。
-
@Mysticial:如果您希望它们快,它们只会在硅房地产中很昂贵;如果速度不是问题,您可以使用很少的晶体管实现 CORDIC =)
-
即使是 x87 FPU 通常也通过称为微码的低级软件实现超越功能(我为 AMD 的 Athlon 处理器设计/实现了这个微码,也适用于其他 x86 处理器)。核心近似通常是多项式的,有时是有理数的。通常是极小极大近似,而不是泰勒级数。根据准确性和性能的要求,评估是通过霍纳方案或埃斯特林方案进行的。 J.-M 的“浮点算术手册”。穆勒等。 al.,Stephen Canon 下面已经提到过,是一个很好的起点,可以解释所有相关概念。
标签: floating-point cpu cpu-architecture