移位操作码真的比移动快3倍吗?英特尔x86

Tyl*_*den 2 performance x86 assembly

在我的英特尔x86奔腾手册中,它表示ADD和SAL/SHR之间的转换需要1/3时钟,而JMP和MOV需要1个时钟.这是否真的是一堆添加和移位比一堆mov快3倍?

我想我更加困惑,因为网上显示"延迟"的表格显示"Pentium M"并且没有时间是1/3,尽管有几个是1/2.这是因为我的书很旧而且新的Pentiums班次与JMP的速度相同吗?

Mys*_*ial 9

不要将"延迟"与"互惠吞吐量"混淆.

  • 延迟是执行一个指令实例所需的周期数.
  • 倒数吞吐量是处理器可以维持的每个周期的指令数.

1/3你看到的是没有延迟.这是相互吞吐量.处理器每个周期可以维持3个ADD.(如果它们都是独立的)但每个仍然需要至少1个周期才能执行.

如果您有延迟1和倒数吞吐量1/3,则意味着处理器可以同时执行多达3个ADD.但每个人仍然需要1个周期.


从历史上看,大多数英特尔处理器(自奔腾?以来)都有3个主要执行单元,可以执行基本操作,如添加和移位.这就是为什么大多数都是1/3相互吞吐量的原因.

寄存器到寄存器的MOV也应该是1/3.但触摸存储器(即加载和存储)的MOV历史上只有1 /周期.(最近在Sandy Bridge和后来,这已经增加了.)