Floating point CPU中常用的浮点运算使用哪些算法?

Floating point CPU中常用的浮点运算使用哪些算法?,floating-point,cpu,cpu-architecture,Floating Point,Cpu,Cpu Architecture,我正在写一篇关于CPU设计和实现不同数学运算的论文,比如加法、乘法、除法、平方根和对数。本文还进行了数值分析。然而,我似乎已经走到了死胡同。因此,我有一些问题 是否有任何阅读材料(其他论文、书籍)可以将一些操作分解为更简单的步骤 我的印象是牛顿的方法用于平方根(有时是除法),泰勒级数用于对数。这是假的吗?使用什么 软件实现的浮点支持是否不同 我意识到这可能取决于CPU体系结构,因此对于一个普通的CPU,如一个较新的Intel i7处理器(一般为x86体系结构),我将不胜感激。 非常感谢 对于加法

我正在写一篇关于CPU设计和实现不同数学运算的论文,比如加法、乘法、除法、平方根和对数。本文还进行了数值分析。然而,我似乎已经走到了死胡同。因此,我有一些问题

  • 是否有任何阅读材料(其他论文、书籍)可以将一些操作分解为更简单的步骤
  • 我的印象是牛顿的方法用于平方根(有时是除法),泰勒级数用于对数。这是假的吗?使用什么
  • 软件实现的浮点支持是否不同
  • 我意识到这可能取决于CPU体系结构,因此对于一个普通的CPU,如一个较新的Intel i7处理器(一般为x86体系结构),我将不胜感激。
    非常感谢

    对于加法,您需要了解进位先行加法器(特别是

    高性能乘法器的设计是一个相当复杂的主题,如果你不是一个研究生,那么它可能超出了你想为一个学校项目考虑的范围。 牛顿方法通常不用于硬件平方根或除法器;Goldschmidt的方法有时也会被使用(参考Peter Markstein关于该主题的论文,获取资料;可读性很强),因为它更适合硬件,但教科书方法的变体也经常被使用(通常基数大于2;查看有符号数字除法算法)


    软件实现往往完全不同。

    对数不再在硬件中实现。他们在x87 FPU中有它,但不是在所有的现代产品中。有趣的是,我会去搜索一下。你知道有没有依赖于泰勒级数的运算吗?我假设实现trig函数的硬件将使用泰勒级数+参数约简中的一种或某种。以防万一,就硅房地产而言,它们都很昂贵。所以它们并没有被包括在像SSE这样的现代扩展中。@Mysticial:它们只是在硅房地产中很昂贵,如果你想让它们更快的话;如果速度不是问题的话,你可以使用很少的晶体管来实现CORDIC=)即使是x87 FPU也通常通过称为微码的低级软件来实现超越功能(我为AMD的Athlon处理器设计/实现了该微码,也在其他x86处理器上工作)。核心近似值通常是多项式的,有时是有理的。通常是极小极大近似,而不是泰勒级数。根据准确度和性能要求,通过Horner方案或Estrin方案进行评估。斯蒂芬·卡农(Stephen Canon)已经在下面提到了J.-M.Muller等人的《浮点算术手册》,这是一个很好的起点,可以解释所有相关概念。上一次我从事软件实现工作是在20世纪80年代,我们主要使用的是参数约简和基于级数的多项式近似。你是说这本书吗:那本书看起来很完美,我看看能不能找到一个有它的图书馆。谢谢!哦,我猜你指的是这张报纸:看起来也不错,我来看看@贾尼尔斯:是的,马克斯坦的书也很好,但我说的是报纸。你可能还想找一本Jean-Michel Muller的《浮点算术手册》。我已经订购了其中一些书。同时,我想要一些关于整数运算的资料,比如x86上的“add”“mul”“div”。但我很难知道该搜索什么。你能帮助我吗?