流水线延迟和停滞的类型

2024 年 8 月 28 日 | 3 分钟阅读

在本节中,我们将首先学习流水线停顿。之后,我们将学习流水线延迟的类型。

流水线停顿

流水线停顿可以被描述为RISC中的一个错误。由于停顿,指令的处理将被延迟。这种类型的错误和用户错误是不一样的。停顿基本上是由于设计不良的处理器产生的。RISC处理器使用流水线,这意味着使用特定的顺序来执行指令。

如果有一个程序提供给我们分支指令,它们将不会以有序的方式出现。在开始时,指令通过流水线工作,但在进行到下一个指令之前,它必须丢弃未被选择的选项。因此,会产生延迟。如果丢弃的选项越多,延迟就越大。如果存在大量延迟,性能方面的差距将会很大。

流水线停顿的常见用途

  • 通过实现分支预测,可以解决流水线停顿。
  • 流水线停顿的潜力由RISC处理器的缺点决定。

流水线停顿的误用

  • 当用户同时执行多个函数时,在这种情况下,会发生流水线停顿。

流水线延迟的类型

流水线延迟有两种类型,描述如下

1. 均匀延迟流水线

均匀延迟流水线中的所有阶段都将在相同的时间内完成其操作。此流水线中的周期时间描述如下

Cycle Time (Tp) = Stage Delay

如果阶段之间存在缓冲区,则循环时间描述如下

Cycle time (Tp) = Stage Delay + Buffer Delay

2. 非均匀延迟流水线

非均匀延迟流水线中的所有阶段都将在不同的时间内完成其操作。此流水线中的周期时间描述如下

Cycle Time (Tp) = Maximum (Stage Delay)

例如: 假设我们有四个阶段,它们包含的阶段延迟分别为1 ns、2 ns、3 ns和4 ns。 在这种情况下,周期时间将是

Tp = Maximum (1 ns, 2 ns, 3 ns, 4 ns) = 4 ns

如果阶段之间存在缓冲区,则循环时间描述如下

Cycle time (Tp) = Maximum (Stage Delay + Buffer Delay)

示例: 在此示例中,我们将假设一个4段流水线,其中阶段延迟为2 ns、8 ns、3 ns、10 ns。 在这里,我们必须确定在上述流水线中执行100个任务所花费的时间。

解决方案

正如我们所看到的,上面的流水线是一种非线性流水线。因此,对于此流水线,周期时间描述如下

Tp = max(2, 8, 3, 10) = 10 ns
As we know that ET pipeline = (k + n - 1) Tp = (4 + 100 -1) 10 ns = 1030 ns

注意:MIPS代表每秒百万条指令

带停顿的流水线的性能

我们可以借助以下公式找出带有停顿的流水线的性能

Speed up (S) = Performance pipeline / Performance non-pipeline
       S = Average Execution Time nonpipeline / Average Execution Time pipeline
       S = CPI non-pipeline * Cycle Time non-pipeline / CPI pipeline * Cycle Time pipeline

在流水线处理器中,理想的CPI为1。但是由于停顿,这些CPI变得大于1。

S = CPI non-pipeline * Cycle Time non-pipeline / (1 + Number of stalls per Instruction) * Cycle Time pipeline
As Cycle Time non-pipeline = Cycle Time pipeline
Speed Up (S) = CPI non-pipeline / (1 + Number of stalls per instruction)

RISC处理器使用流水线,这意味着借助特定的顺序,我们可以执行指令。


下一个主题MOV指令的时序图