当必须首先向其添加偏移量时,是否需要额外的周期来取消引用内存地址?

时间:2012-09-21 12:02:01

标签: assembly x86

mov 0x10(%esp),%esi在现代CPU上花费的时间是否比mov (%ebx),%esi更长?

1 个答案:

答案 0 :(得分:5)

根据英特尔优化手册表2-8,在Sandy Bridge上,仅基准寄存器或基准的负载延迟加上小于2048的偏移是4个周期,而基数加索引加上偏移或基数加2048或更大的偏移量是5个周期。因此,在您的示例中,两条指令应该花费相同的时间。如果您使用的偏移量为2048或更高,则需要更长时间。

当然,如果内存不在你的L1缓存中,这并不重要,因为内存访问的成本会使其他所有内容的成本相形见绌。