2010-04-23 78 views
9

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

我不需要确切的数字(因为这在CPU之间会有所不同),但我想要一些相对可信的东西,这些东西给出了我可以在与朋友讨论时引用的球形数字。作为一个例子,我们都知道浮点除法需要更多的CPU周期而不是做一个bitshift。

我猜测不同的是,这个分区大约是100个周期,其中一个移位是1,但我正在寻找一些引用来支持它的东西。

任何人都可以推荐这样的资源吗?

+2

哪个处理器? – nos 2010-04-23 23:10:01

回答

1

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

基准测试会去大致是这样的:

  • 运行一个基本操作一百万次(比如说,增加了两个整数)
  • 记录需要运行的时间(比方说,以秒为单位)
  • 乘以您的机器每秒执行的周期数 - 这会给您花费的总周期数。
  • 将1000000除以前一步的数字 - 这会给你每个循环的指令数量。请记住,与流水线,这可能是小于1
3

对于x86处理器,见Intel® 64 and IA-32 Architectures Optimization Reference Manual,大概附录C.

然而,这是不以任何方式容易找出多少个周期的指令需要在现代x86处理器上执行,因为它太依赖于例如访问缓存中的数据,对齐访问,分支预测是否失败,指令管道中是否存在停顿以及其他许多事情。

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中的方形代码:/ ant.stewart在yahoo dotty com的地方。