流水线停顿

编辑
本词条由“匿名用户” 建档。

在流水线计算机处理器的设计中,流水线停顿是为了解决危险而延迟执行指令。 在标准的五级流水线中,在译码阶段,控制单元会判断译码指令是否从当前执行指令写入的寄存器中读取。如果这种情况成立,控制单元将指令暂停一个时钟周期。它还会暂停取指阶段的指令,以防止该阶段的指令被程序中的下一条指令覆盖。 在使用程序计数器(PC)寄存器来确定流水线中正在获取的当前指令的冯诺依曼体系结构中,为了防止在解码阶段的指令被停...

流水线停顿

编辑

流水线计算机处理器的设计中,流水线停顿是为了解决危险而延迟执行指令。

详情

编辑

在标准的五级流水线中,在译码阶段,控制单元会判断译码指令是否从当前执行指令写入的寄存器中读取。 如果这种情况成立,控制单元将指令暂停一个时钟周期。 它还会暂停取指阶段的指令,以防止该阶段的指令被程序中的下一条指令覆盖。

在使用程序计数器 (PC) 寄存器来确定流水线中正在获取的当前指令的冯诺依曼体系结构中,为了防止在解码阶段的指令被停顿时获取新指令,PC 寄存器中的值和 提取阶段的指令被保留以防止更改。 这些值会一直保留到导致冲突的指令通过执行阶段为止。 这种事件通常被称为气泡,类似于流体管道中的气泡。

在某些架构中,管道的执行阶段必须始终在每个周期执行一个操作。 在这种情况下,通过向执行阶段提供 NOP(无操作)指令来实现气泡,直到气泡被冲走。

例子

编辑

时间轴

以下是通过 4 级流水线两次执行相同的 4 条指令,但无论出于何种原因,在周期 #2 中提取紫色指令的延迟会导致创建气泡,从而延迟其后的所有指令。

指令处理

经典 RISC 流水线

下面的例子显示了一个气泡被插入到一个经典的 RISC 流水线中,有五个阶段(IF = 指令获取,ID = 指令解码,EX = 执行,MEM = 内存访问,WB = 寄存器回写)。 在此示例中,第二条指令的 EX 阶段(第三阶段)需要输入xxx条指令的 MEM 阶段(第 4 阶段)之后可用的数据。 没有气泡,EX 阶段(第 3 阶段)只能访问前一个 EX 阶段的输出。 因此,添加气泡可以解决时间依赖性,而无需及时向后传播数据(这是不可能的)。

内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/196082/

(1)
词条目录
  1. 流水线停顿
  2. 详情
  3. 例子
  4. 时间轴
  5. 经典 RISC 流水线

轻触这里

关闭目录

目录