计算机组织和体系结构|流水线|集合1(执行、阶段和吞吐量)

为了提高CPU的性能,我们有两种选择: 1) 通过引入更快的电路来改进硬件。 2) 安排硬件,以便可以同时执行多个操作。

null

由于硬件速度有限制,而且更快电路的成本相当高,我们不得不采用2 选项

管道: 流水线是一个安排CPU硬件元素的过程,以提高其整体性能。在流水线处理器中同时执行多条指令。

让我们来看一个关于流水线操作概念的实际例子。考虑一个水瓶包装厂。让瓶子经过三个阶段,插入瓶子( ),往瓶子里加水( F ),并密封瓶子( s 我们将这些阶段分别视为阶段1、阶段2和阶段3。让每个阶段用1分钟完成操作。 现在,在非管道操作中,首先将瓶子插入工厂,1分钟后将其移动到第2阶段,在第2阶段注水。现在,在第一阶段,什么都没有发生。同样,当瓶子移动到第3阶段时,第1阶段和第2阶段都处于空闲状态。但在流水线操作中,当瓶子处于第2阶段时,可以在第1阶段装入另一个瓶子。同样,当瓶子处于第3阶段时,第1阶段和第2阶段各有一个瓶子。所以,每过一分钟,我们就会在第三阶段结束时得到一个新瓶子。因此,制造一瓶的平均时间为:

没有管道 =9/3分钟=3米

I F S | | | | | |
| | | I F S | | |
| | | | | | I F S (9 minutes)

用流水线 =5/3分钟=1.67米

I F S | |
| I F S |
| | I F S (5 minutes)

因此,流水线操作提高了系统的效率。

基本管道的设计

  • 在流水线处理器中,流水线有两端,输入端和输出端。在这些端部之间,有多个级/段,这样一个级的输出连接到下一个级的输入,每个级执行特定的操作。
  • 接口寄存器用于保持两级之间的中间输出。这些接口寄存器也称为锁存器或缓冲区。
  • 管道中的所有级以及接口寄存器都由一个公共时钟控制。

流水线处理器中的执行 流水线处理器中指令的执行顺序可以用时空图来可视化。例如,考虑一个具有4个阶段的处理器,并让2个指令被执行。我们可以通过以下时空图来可视化执行顺序:

非重叠执行:

阶段/周期 1. 2. 3. 4. 5. 6. 7 8.
S1 1. 2.
S2 1. 2.
S3 1. 2.
S4 1. 2.

总时间=8个周期

重叠执行:

阶段/周期 1. 2. 3. 4. 5.
S1 1. 2.
S2 1. 2.
S3 1. 2.
S4 1. 2.

总时间=5个周期

管道阶段

RISC处理器有5级指令管道来执行RISC指令集中的所有指令。以下是RISC管道的5个阶段及其各自的操作:

  • 第一阶段(取指令) 在此阶段,CPU从内存中的地址读取指令,该地址的值存在于程序计数器中。
  • 第二阶段(指令解码) 在此阶段,对指令进行解码,并访问寄存器文件,以从指令中使用的寄存器中获取值。
  • 第3阶段(指令执行) 在这个阶段,ALU操作被执行。
  • 第4阶段(内存访问) 在此阶段,内存操作数从指令中存在的内存进行读写。
  • 第五阶段(回写) 在此阶段,计算/获取的值被写回指令中的寄存器。

流水线处理器的性能 考虑一个“K”段流水线,时钟周期时间为“TP”。让“n”个任务在流水线处理器中完成。现在,第一条指令需要’k’个周期才能从流水线中出来,但其他’n–1’条指令每个只需要’1’个周期,即总共需要’n–1’个周期。因此,在流水线处理器中执行“n”指令所需的时间:

                     ETpipeline = k + n – 1 cycles
                              = (k + n – 1) Tp

在相同的情况下,对于非流水线处理器,“n”指令的执行时间为:

                    ETnon-pipeline = n * k * Tp

因此,当“n”个任务在同一处理器上执行时,流水线处理器相对于非流水线处理器的加速比为:

    S = Performance of pipelined processor /
        Performance of Non-pipelined processor

由于处理器的性能与执行时间成反比,

   S = ETnon-pipeline / ETpipeline
    => S =  [n * k * Tp] / [(k + n – 1) * Tp]
       S = [n * k] / [k + n – 1]

当任务数“n”明显大于k时,即n>>k

    S = n * k / n
    S = k

其中“k”是管道中的阶段数。

而且 效率 =给定提速/最大提速=秒 最大值 Smak=我们知道

所以 效率 =S/k

吞吐量 =指令数量/完成指令的总时间

所以 吞吐量 =n/(k+n–1)*Tp

注:理想流水线处理器的每指令周期(CPI)值为1

请看 第二组 对于依赖关系和数据危害 第三组 用于管道类型和失速。

资料来源: 咕。gl/J9KVNt https://en.wikipedia.org/wiki/Hazard_(计算机体系结构) https://en.wikipedia.org/wiki/Data_dependency

本文由Saurabh Sharma撰稿。

如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写评论

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享