流水线:架构,优点和缺点

增加该程序的执行速度,因此增加了速度处理器。提高执行速度的方法有很多,包括硬件实现和软件架构。据观察,通过并发执行指令,执行所需的时间可以减少。并行的概念编程提出。据此,每个时钟周期可以执行多个指令。该概念可以通过程序员通过各种技术进行实践流水线,多个执行单元和多个核心。在所有这些平行方法中,流水线最常见。那么如何在流水线方法中执行指令?它如何增加执行速度?

什么是流水线?

为了掌握管道的概念,让我们看看程序是如何执行的根级别。指令是程序中最小的执行包。每条指令包含一个或多个操作。简单的标量处理器在每个时钟周期执行一条或多条指令,每条指令只包含一个操作。指令作为阶段序列执行,以产生预期的结果。这个顺序如下所示


指令执行序列
指令执行序列
  • IF:取指令到指令寄存器中。
  • ID:指令解码,对操作码的指令进行解码。
  • AG:地址生成器,生成地址。
  • DF:数据提取,将操作数提取到数据寄存器中。
  • ex:执行,执行指定的操作。
  • WB:回写,将结果回写到寄存器。

并非所有指令都需要所有上述步骤,但大多数情况下。这些步骤使用不同的硬件功能。在流水线中,这些不同的阶段同时进行。在流水线中,这些阶段被认为是独立的不同操作,并且可以重叠。因此,可以在每个操作中同时执行多个操作,每个操作处于自己的独立阶段。

指令流水线

让我们看看管道中处理指令的方式。下面的图可以很容易地理解这一点。

指令流水线
指令流水线

假设说明是独立的。在简单的流水处理器中,在给定时间,每个阶段只有一个操作。初始阶段是IF阶段。因此,在第一个时钟周期中,一个操作被提取。当下一个时钟脉冲到达时,第一操作进入ID阶段,离开IF相位。现在,将该空相分配给下次操作。因此,在第二时钟脉冲期间,第一操作处于ID相位,第二操作处于IF阶段。

对于第三个循环,第一个操作将在AG阶段,第二个操作将在ID阶段,第三个操作将在IF阶段。这样,指令被并发执行,六个周期后处理器将在每个时钟周期输出一个完全执行的指令。


这条指令是按顺序执行的吗?首先,第一条指令必须经历所有阶段,然后才会取下一条指令?因此,对于每条指令的执行,处理器需要6个时钟周期。但在流水线处理器中,由于指令的执行是并行的,只有初始指令需要6个周期,所有剩余的指令都按每个周期执行,从而减少了执行时间,提高了处理器的速度。

流水线建筑

并行性可以通过硬件、编译器和软件技术实现。利用流水线的概念计算机架构许多处理器单元都是互连的,并同时运行。在流水线处理器架构中,还提供了用于整数和浮点指令的分离处理单元。虽然在顺序架构中,提供单个功能单元。

管线式处理器单元
管线式处理器单元

在静态管道中,处理器应该通过管道的所有阶段来传递指令,而不管指令的要求。在动态流水线处理器中,指令可以根据自己的需要绕过各个阶段,但必须按顺序移动。在复杂的动态流水线处理器中,指令可以绕过相位,也可以无序地选择相位。

在RISC处理器中的流水线

最受欢迎RISC架构ARM处理器采用3级和5级流水线。在三个阶段的流水线中,这三个阶段是:获取、解码和执行。这个管道有3个周期的延迟,因为单个指令需要3个时钟周期才能完成。

手臂3阶段管制
手臂3阶段管制

对于正确实现流水线硬件架构也应该升级。3级流水线的硬件包括寄存器组,ALU,桶形移位器,地址发生器,递增器,指令解码器和数据寄存器。

arm3阶段管道数据路径
arm3阶段管道数据路径

在5个阶段流水线阶段是:获取,解码,执行,缓冲区/数据并回写。

管制危险

在一个典型的计算机程序中,除了简单指令外,还有分支指令、中断操作、读写指令。流水线操作并不适用于所有的指令。当一些指令在管道中执行时,它们可能会暂停管道或完全清空管道。这种在流水线过程中引起的问题称为流水线危险。

在大多数计算机程序中,一条指令的结果被另一条指令用作操作数。当这类指令在流水线中执行时,当第2条指令开始收集操作数时,第1条指令的结果不可用,就会发生中断。因此,指令2必须暂停,直到指令1执行并生成结果。这种类型的危险称为“写后读流水线危险”。

写入流水线危险后阅读
写入流水线危险后阅读

分支指令的执行也会导致管道危险。在执行时转移指令在流水线上影响下一个指令的获取阶段。

流水线分支行为
流水线分支行为

流水线的优点

  • 指令吞吐量增加。
  • 管道阶段数量的增加会增加同时执行的指令数量。
  • 当使用流水线时,可以设计更快的ALU。
  • 流水线CPU的工作时钟频率高于RAM。
  • 流水线操作提高了CPU的整体性能。

缺点的流水线

  • 流水线处理器的设计很复杂。
  • 管道处理器的指令延迟增加。
  • 流水线处理器的吞吐量是很难预测的。
  • 管道越长,分支指令的危险问题就越严重。

流水线操作对所有遵循类似步骤顺序的执行指令都有好处。如果处理器有复杂的指令,其中每个指令的行为都不同,那么很难用流水线来处理。处理器有合理的3或5个阶段的管道实现,因为随着管道深度的增加,与之相关的危险也会增加。用流水线阶段命名一些流水线处理器?

添加评论