我正在尝试查找各种操作大约需要多少个 CPU 周期的参考。
我不需要确切的数字(因为这会因 CPU 的不同而有所不同),但我想要一些相对可信的数据来提供大概的数字,我可以在与朋友讨论时引用这些数字。
举个例子,我们都知道浮点除法比移位需要更多的 CPU 周期。
我猜差异在于除法约为 100 个周期,其中班次为 1,但我正在寻找可以引用的内容来支持这一点。
谁能推荐这样的资源吗?
对于 x86 处理器,请参阅 Intel® 64 和 IA-32 架构优化参考手册,可能是附录 C。
但是,要计算出一条指令在现代 x86 处理器上执行需要多少个周期绝非易事,因为它过多地取决于例如访问缓存中的数据、对齐访问、分支预测是否失败、指令管道中是否有停顿以及很多其他事情。
我做了一个小应用程序来测试这一点。一个使用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 的地方。
这将取决于硬件。最好的办法是在您想要测试的特定硬件上运行一些基准测试。
基准大致如下: