x86 和 x64 处理器上的 CPU 指令延迟

x86 和 x64 处理器上的 CPU 指令延迟

我正在寻找一些可以帮助我计算汇编代码效率的表格或类似的东西。

据我所知,位移位需要 1 个 CPU 时钟,但我真正想知道的是加法需要多少时间(减法应该需要相同的时间)、乘法需要多少时间,以及如果我知道除法的值,如何计算除法时间。

我确实需要有关整数值的信息,但也欢迎浮点执行时间。

答案1

一般来说,如果参数位于管道各个阶段的寄存器中,则每个操作都需要一个时钟周期来执行。

您的延迟是什么意思?

您可能会发现此表很有用: http://www.agner.org/optimize/instruction_tables.pdf

由于现代处理器是超级标量的,并且可以执行订单,因此您通常可以每周周期的总指令超过1。宏命令的参数最为重要,但是操作也很重要,因为分隔的时间比XOR更长(<1个周期延迟)。

如果 x86 指令很复杂(例如 REP 命令或更糟糕的 MWAIT),许多 x86 指令可能需要多个周期才能完成某些阶段。

答案2

在乱序执行超标量流水线时代,计算汇编代码的效率并不是最好的方法。它会因处理器类型而异。它会因指令前后而异(你可以添加额外的代码,有时可以让它运行得更快!)。某些操作(尤其是除法)即使在较旧的更可预测的芯片上也可能有一系列的执行时间。实际上,对大量迭代进行计时是唯一的方法。

答案3

您可以在以下位置找到有关英特尔 CPU 的信息英特尔软件开发人员手册

我不懂乘法,但我认为加法总是需要一个循环。

相关内容