各种操作的大致 CPU 周期数

问题描述 投票:0回答:4

我正在尝试查找各种操作大约需要多少个 CPU 周期的参考。

我不需要确切的数字(因为这会因 CPU 的不同而有所不同),但我想要一些相对可信的数据来提供大概的数字,我可以在与朋友讨论时引用这些数字。

举个例子,我们都知道浮点除法比移位需要更多的 CPU 周期。

我猜差异在于除法约为 100 个周期,其中班次为 1,但我正在寻找可以引用的内容来支持这一点。

谁能推荐这样的资源吗?

reference citations cpu-cycles
4个回答
4
投票

对于 x86 处理器,请参阅 Intel® 64 和 IA-32 架构优化参考手册,可能是附录 C。

但是,要计算出一条指令在现代 x86 处理器上执行需要多少个周期绝非易事,因为它过多地取决于例如访问缓存中的数据、对齐访问、分支预测是否失败、指令管道中是否有停顿以及很多其他事情。


3
投票

我做了一个小应用程序来测试这一点。一个使用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 版本的第一个方块开始编码:/ ant.stewart 在 yahoo dotty com 的地方。


1
投票

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

基准大致如下:

  • 运行原始操作一百万次(例如,将两个整数相加)
  • 记录运行所花费的时间(例如,以秒为单位)
  • 乘以机器每秒执行的周期数 - 这将得出所花费的周期总数。
  • 将 1000000 除以上一步中的数字 - 这将得出每个周期的指令数。请记住,使用管道传输时,该值可能小于 1。

1
投票

Agner Fog 进行了研究

  1. 说明表

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

最后更新于2022年11月4日

© www.soinside.com 2019 - 2024. All rights reserved.