当前位置: 首页 > 知识库问答 >
问题:

sqrt和div指令以相同的速度运行

谷梁嘉运
2023-03-14

我漫不经心地阅读了英特尔架构参考手册,http://www.cs.princeton.edu/courses/archive/spr12/cos217/reading/ia32opt.pdf,当我阅读指令延迟和吞吐量附录时,我发现sqrt指令的延迟(执行核心完成所有构成指令的μops的执行所需的时钟周期数。)与除法(第C-28页)指令的延迟完全相同——至少对于某些微架构来说。数字分别是30、40和44个时钟周期,用于单精度、双精度和扩展精度。

我的问题是,sqrt指令的处理器接收器如何能与div指令一样大?我一直认为sqrt指令在任何语言中都是昂贵的。

共有2个答案

苍温文
2023-03-14

理论上,除法与许多函数(包括平方根)的阶数渐近相同,可以通过http://en.wikipedia.org/wiki/Newton的s\u方法。牛顿法的迭代次数很小,因为每次正确的位数都会翻倍。早期迭代的成本很低,因为您不必完全精确地进行迭代-您只需要迭代的预期精度-渐进结果是,每个迭代的成本都与单个全精度除法一样高-请参见http://en.wikipedia.org/wiki/Computational_complexity_of_mathematical_operations

在芯片上,他们可能会对这两种方法都使用一些高度优化的专用方法,但如果对成本的最大贡献是在快速查表或其他近似解决方案之后通过芯片的乘法管道获得全精度结果的次数,那么这两种方法的成本可能是相同的。

丁翊歌
2023-03-14

这并不广为人知,但有一些计算平方根的算法在移位运算方面与除法一样快。这些不是牛顿近似。

请参阅(Sqrt in)二进制数字系统(基数2)。我第一次在Knuth的半数值算法书中看到这一点,并在20世纪70年代初用它在16位微型计算机上编写SQRT,速度与除法相同。循环的核心移出两位,计算一个平方根位,然后重复。所以,总移位==位数,这与经典除法相同。

如果他们在芯片上用移位比较法除法,他们可以很容易地实现平方根。

 类似资料:
  • 问题内容: 我有2个div并排。我不知道它们的高度,它根据内容而改变。有没有一种方法可以确保它们始终保持相同的高度,即使其中一个拉伸时也只能使用CSS? 我做了一个小提琴来展示。我希望红色和蓝色的div高度相同… 这是CSS: 问题答案: 您可以尝试使用float来代替使用float。但是,您可能会发现某些较旧的浏览器不了解此规则。见下文:

  • 28.1 整型指令 注释: 操作数: r = 寄存器(register), m = 内存(memory), i = 立即数(immediate data), sr = 段寄存器(segment register) m32 = 32位内存操作数(32 bit memory operand), 等等。 时钟周期: 表上列出的是最小值。 cache失效,未对齐和异常都可能会大幅增加时钟周期。 配对: u

  • 问题内容: 在下面的代码中,我希望带有“ y”的div将div的高度与3个“ x”相匹配。 需要注意的是内部div是浮动的。 问题答案: 如果您不反对使用jQuery,可以使用EqualHeight,它应该做您想要的

  • 指令速查列出了每个指令的用法、默认值、状态和作用域。更详细的说明可以查阅指令字典。 第一列是指令的名称和用法; 第二列是指令的默认值(如果存在),如果很长写不下,则后面跟有"+"表示截断。 第三和第四列是指令允许出现的位置和状态,其中缩略语如下表所示:  A  |  B  |  C  |  D  |  E  |  F  |  G  |  H  |  I  |  K  |  L  |  M  |  

  • 问题内容: 我有一个带有变量类型的指令myDirective。如果我运行,我希望指令使用templateUrl:x-template.html。如果我愿意,指令可以使用templateUrl:y-template.html。 这是我目前的指令。 我通过stackoverflow和angular文档阅读,但是没有找到我需要的任何东西。 我现在正在尝试按照以下方式进行操作: 但是不知道在哪里做。 你们

  • 问题内容: 为了找到两个数据库之间的所有更改,我将pk上的表联接在一起,并使用date_modified字段选择最新记录。由于表具有相同的架构,因此将使用提高的性能。我想用重写它,但是我不确定在每种情况下for的实现是否都可以执行。希望有人对何时使用有更多的技术说明。 问题答案: 任何人都无法告诉您,它永远或永远不会超过同等产品。无论您如何编写意图,优化器都会选择合适的执行计划。 就是说,这是我的