X86 为什么在现代cpu中某些指令可以在一个时钟周期内执行?

X86 为什么在现代cpu中某些指令可以在一个时钟周期内执行?,x86,cpu,cpu-architecture,cpu-cycles,X86,Cpu,Cpu Architecture,Cpu Cycles,许多相关的问题说,例如 然而,据我所知(从《计算机系统:程序员的观点》一书中),管道中有许多步骤,如获取、解码、执行、存储等。每个步骤至少需要一个周期。如果是这样,为什么任何指令都可以在一个时钟周期内执行?链接的问题区分了吞吐量和延迟。e、 g.在dec eax之后,另一个dec eax多久才能执行?它只需要在到达简单顺序管道的EXEC阶段时准备好EAX值。将执行单元本身的延迟保持在1个周期内,是支持对相关指令进行背对背执行的原因 从fetch到exec的管道总延迟仅与预测失误的分支有关 在流水

许多相关的问题说,例如


然而,据我所知(从《计算机系统:程序员的观点》一书中),管道中有许多步骤,如获取、解码、执行、存储等。每个步骤至少需要一个周期。如果是这样,为什么任何指令都可以在一个时钟周期内执行?

链接的问题区分了吞吐量和延迟。e、 g.在
dec eax
之后,另一个
dec eax
多久才能执行?它只需要在到达简单顺序管道的EXEC阶段时准备好EAX值。将执行单元本身的延迟保持在1个周期内,是支持对相关指令进行背对背执行的原因

从fetch到exec的管道总延迟仅与预测失误的分支有关

在流水线中有多条指令是流水线的整个要点;如果在开始获取另一条指令之前,需要一条指令通过管道,则不会将其称为管道

另请参见和

或者继续阅读你的CS:APP教科书

同样相关的是,对于现代CPU,如当前的x86和高端ARM(超标量故障):

  • -即使在现代CPU上,性能也不是这样工作的,没有固定的周期成本,您只需将指令相加,即可计算出总时间。前端成本、延迟和后端执行单元吞吐量是可能成为循环主要瓶颈的三个主要方面
  • -没有,但我的答案解释了一个现代内核如何包含多个执行单元,以找到指令级并行性并并行运行多条指令

尽管获取解码执行指令通常需要若干个周期,但对于简单指令,执行部分通常可以是1个周期,从吞吐量角度看,这才是真正重要的部分-其余部分只是延迟。谢谢!这个答案对我很有帮助lot@scottxiao:添加了一些链接到其他现有的关于超标量无序CPU的Q&A。