数学列表按指令周期长度按计算负载排序的操作?

时间:2013-04-27 11:38:02

标签: performance

在某个地方列出了不同数学运算所需的周期数,对于像intel q6600这样的典型处理器,性能会因处理器之间的不同而有所不同,尽管拥有图表/列表会非常有用,有没有人看到一个人?

即:

math.sqr = 27 cycles
math.sin = 22 cycles
divide = 8 cycles
modulo = 4 cycles
compare a>b = 2 cycles
multiply = 1 cycles

那样的东西?

不同的比较使用了多少个周期?

2 个答案:

答案 0 :(得分:4)

可以找到Kentsfield(包括Q6600)的完整列表here

但是,这还不够。一系列指令所花费的时间并不(通常)只是其各部分的总和 - 一些事情通常可以同时执行,并确定它们需要付出一些努力。我建议您阅读Microarchitecture (by Agner Fog)的相关章节,您需要this才能看到说明可以转到哪些执行端口。

如果您只是在寻找经验法则,那么它们就是(1c .33t意味着1个周期的延迟和.33的倒数吞吐量,即3个独立的吞吐量可以在一个周期内执行:

  • 整数加/减/比较/按位:1c .33t
  • 整数乘法:5c 1t
  • 整数除法32位:30-60c 20-40t
  • 整数除法64位:40-70c 30-40t
  • 整数移位:1c 0.5t
  • float add:3c 1t
  • float multiply:5c 1t
  • 平方根:6-70c
  • 正弦,余弦:100c

答案 1 :(得分:1)