在我的Intel x86 Pentium手册中,它说ADD和shift之类的SAL / SHR需要1/3的时钟,而JMP和MOV之类的则需要1个时钟。一堆的添加和移动是否比一堆的动作快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和更高版本中,此功能得到了增强。)关于performance - 移位操作码真的比移动速度快3倍吗?英特尔x86,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12749331/