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的速度相同吗?
不要将"延迟"与"互惠吞吐量"混淆.
那1/3你看到的是没有延迟.这是相互吞吐量.处理器每个周期可以维持3个ADD.(如果它们都是独立的)但每个仍然需要至少1个周期才能执行.
如果您有延迟1和倒数吞吐量1/3,则意味着处理器可以同时执行多达3个ADD.但每个人仍然需要1个周期.
从历史上看,大多数英特尔处理器(自奔腾?以来)都有3个主要执行单元,可以执行基本操作,如添加和移位.这就是为什么大多数都是1/3相互吞吐量的原因.
寄存器到寄存器的MOV也应该是1/3.但触摸存储器(即加载和存储)的MOV历史上只有1 /周期.(最近在Sandy Bridge和后来,这已经增加了.)