各种操作的近似CPU周期数

时间:2010-04-23 22:50:28

标签: reference citations cpu-cycles

我正在尝试查找各种​​操作所需的大约CPU周期的参考。

我不需要确切的数字(因为这会在各个CPU之间有所不同)但我想要一些相对可信的东西给出了我可以引用与朋友讨论的大概数字。

作为一个例子,我们都知道浮点除法比执行比特移位需要更多的CPU周期。

我猜不同之处在于,除法是大约100个周期,其中一个班次为1,但我正在寻找一些东西来引用它。

有人可以推荐这样的资源吗?

4 个答案:

答案 0 :(得分:4)

我做了一个小应用来测试这个。使用synthmaker免费版... e的非常近似的应用程序是空的,数字是非常近似的周期

  divide|e:115|10
    mult|e: 48|10
     add|e: 48|10
    subs|e: 50|10
compare>|e: 50|10
     sin|e:135:10

循环分析仪中的读数差异很大,从50到100,通常是预期量的一倍或两倍,这些是代表平均值的数字,循环分析仪是一个非常粗略的工具,但它给出了公平的结果,一个变通方的用户在ASM中进行指数编码,以音频速率计算exp和base,例如大约800个周期,所以我说上面的数字接近至少50%。我认为分歧更多了!它似乎大约两倍。如果你想让我在SM免费版本中运行的文件给我发邮件,我打算保存一个exe,这就是为什么我这样做但你不能保存在免费版本中傻我!我不会在版本1.17中从方块1编码:/ ant.stewart在这个地方yahoo dotty com。

答案 1 :(得分:3)

对于x86处理器,请参阅Intel® 64 and IA-32 Architectures Optimization Reference Manual,可能是附录C.

然而,在现代x86处理器上执行指令需要多少周期并不容易,因为它在很大程度上取决于例如访问缓存中的数据,对齐访问,分支预测是否失败,指令管道中是否存在停顿以及其他很多事情。

答案 2 :(得分:1)

这将取决于硬件。最好的办法是在要测试的特定硬件上运行一些基准测试。

基准将大致如下:

  • 运行一百万次原始操作(例如,添加两个整数)
  • 记录运行时间(例如,以秒为单位)
  • 乘以您的机器每秒执行的周期数 - 这将为您提供所花费的周期总数。
  • 将1000000除以上一步中的数字 - 这将为您提供每个周期的指令数。请记住,使用流水线操作时,这可能会少于1。

答案 3 :(得分:0)

Agner Fog 制作了research

<块引用>
  1. 指令表

指令表:指令延迟、吞吐量和 Intel、AMD 和 VIA CPU 的微操作故障。

上次更新时间为 2021-03-22