我正在尝试查找各种操作需要多少 CPU 周期的参考。
我不需要确切的数字(因为这在 CPU 之间会有所不同),但我想要一些相对可信的东西,它可以提供我可以在与朋友讨论时引用的大致数字。
举个例子,我们都知道浮点除法比移位要花费更多的 CPU 周期。
我猜想不同之处在于除法大约是 100 个周期,而 shift 是 1,但我正在寻找可以引用的东西来支持它。
谁能推荐这样的资源?
我正在尝试查找各种操作需要多少 CPU 周期的参考。
我不需要确切的数字(因为这在 CPU 之间会有所不同),但我想要一些相对可信的东西,它可以提供我可以在与朋友讨论时引用的大致数字。
举个例子,我们都知道浮点除法比移位要花费更多的 CPU 周期。
我猜想不同之处在于除法大约是 100 个周期,而 shift 是 1,但我正在寻找可以引用的东西来支持它。
谁能推荐这样的资源?
对于 x86 处理器,请参阅Intel® 64 and IA-32 Architectures Optimization Reference Manual,可能是附录 C。
但是,要弄清楚一条指令在现代 x86 处理器上执行需要多少个周期并不容易,因为它过多地依赖于例如访问缓存中的数据、对齐访问、分支预测是否失败、是否出现停顿指令管道和很多其他的东西。
我做了一个小应用程序来测试这个。一个使用合成器免费版的非常近似的应用程序......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 变化很大,通常是预期量的单倍或两倍,这些是代表平均值的数字,循环分析器是一个非常粗糙的工具,但它给出了公平的结果,用户制作指数编码的解决方法在以音频速率计算 exp 和 base 的 ASM 中,例如大约 800 个周期,所以我想说上述数字至少接近 50%。我认为分歧更大!似乎是两倍。如果你想让我制作的文件在 SM 免费版中运行,请发邮件给我,我打算保存一个 exe,这就是我这样做的原因,但你不能保存在免费版中,我很傻!我不打算从 1.17 版中的第一格开始编码它:/ ant.stewart 在 yahoo dotty com 的地方。
这将取决于硬件。最好的办法是在您要测试的特定硬件上运行一些基准测试。
基准测试大致如下: