【发布时间】:2018-08-24 16:35:42
【问题描述】:
我正在查看Intel Architectures Optimization Reference Manual 2017(第 759 页)。我正在寻找 Haswell 和 Skylake 架构。该表中有意省略了MOV, PUSH, JMP, CALL 指令。没有给出延迟信息。这是为什么?不过,这些指令延迟是在第 776 页上针对 Atom 处理器给出的。
有趣的是,来自 Intel 的 2012 optimization manual 具有 MOV、PUSH 和 CALL 指令延迟。
Agner 的instruction tables 为MOV 和PUSH 提供延迟,但跳过JMP 和CALL 等控制指令。知道这是为什么吗?
【问题讨论】:
-
分支预测+推测执行使得延迟的概念对于控制指令毫无意义。没有数据依赖性。延迟从什么到什么?如果您指的是
call中从 RSP 到 RSP 的延迟,则堆栈引擎会将其设为 0。 -
好的,这对于控制指令是有意义的。然而,对于控制指令,可能已经给出了较长时间段内的平均延迟以及一些吞吐量值。我知道这在某种意义上也是有限的信息。但我预计控制指令会有一些延迟数据。
-
Agner Fog 具有控制指令的吞吐量和 uop 计数,但 延迟将毫无意义。我不知道您认为“较长时间内的平均延迟”是什么意思。
标签: x86 intel machine-code micro-architecture