【计算机系统】指令流水线

分手后的思念是犯贱 2021-08-19 20:37 553阅读 0赞

前言

  1. **流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术**。各部件同时处理是针对不同指令而言的,比如说,指令流水线把一条指令**分为取指、分析和执行**3部分,可以同时处理取指和分析,但是不能同时处理一个部分,如不能同时处理取指操作。
  2. 指令流水线是将指令执行分成几个子过程,每一个子过程对应一个工位,我们称之为**流水级或流水节拍**,如下图所示。该工位在计算机中就是可以重叠工作(**相同时间同时工作)的功能部件,称为流水部件**。流水线要求所有指令在每个部件上执行的时间是一样的。**在流水线中,机器周期的长度由最慢的流水级部件处理子过程所需的时间来决定**。
  3. IF部件、ID部件、EX部件、WD部件可同时都执行有操作,每条指令按图中一步步执行。在部件执行操作的过程中,允许上一个指令进入,它只能等待当前指令操作执行完成后方可进入此部件。

Center

  1. 流水线这种可同时为多条指令的不同部件进行工作的方式,提高了各部件的利用率和指令的平均执行速度。它是怎么提高利用率的呢?下面看两个图来分析。

Center 1Center 2

  1. 从图2可以看到,任意一个系统时间都有大量的设备处于空闲状态,例如第一个时间段有IDEXWB空闲,则第二个时间段有IFEXWB空闲。
  2. 从图3可以看到,系统空闲的时间只是执行第一条指令的时候有,后面就都没有了,大大提升系统资源的利用率及整个系统的吞吐量。

计算流水线执行时间: Nt+(k-1)*▲t。

  1. 假定有某种类型的任务,共分成N个子任务,执行每个子任务需要时间t,则完成该任务所需时间为Nt。若以传统的串行方式,则完成K个任务所需时间为KNt;而使用流水线技术执行,时间是Nt+(k-1t。我们可以根据图3加以理解,第一个任务需要完整的时间,余下任务开始周期执行,然后根据最慢的流水部件得出周期,再乘以(总指令数-1)就得到任务的执行总时间了。

两个术语

  1. **流水线的吞吐率:任务数/完成时间**。如:在流水线执行方式下,完成3个任务花费了6s,则此流水线的吞吐率为3/6,等于0.5
  2. **加速比:不采用流水线的执行时间/采用流水线的执行时间**。如:图2和图3,执行两个任务,采用流水线的执行时间为5s,不采用流水线的执行时间为8s,则加速比为8/5

影响流水线的主要因素

  1. 流水线的**关键在于同一时间轴,多个部件同时执行,因此如果这个条件不能得到满足,则流水线就会被破坏。**这种破坏主要来自以下3种情况:**转移指令、共享资源访问的冲突、响应中断。**

思考

  1. 在学习流水线的时候,不太明白为什么是最慢的那一个决定流水线的周期,所以我做了一个假设来判断周期,步骤如下:

Center 3

  1. 我们先假设t2所需时间最长,第一条指令用F表示,第二条指令用S表示,则有:
  2. F执行完A阶段后,S开始执行A阶段,此时历时为t1 秒。
  3. F执行B阶段执行了t1秒后,S等待。F执行完B阶段后,S开始执行B阶段,此时已经历时t1+t2秒。
  4. F执行完C阶段后,S执行了在B阶段执行了t3秒,此时已经历时t1+t2+t3秒。
  5. S执行又执行了(t2-t3)+ t3 = t2秒后,完成整个过程。
  6. 可知,因为流水线是同一时间轴的,S执行完后的时间点减去F执行完后的时间点就是周期,也就是我们得出来的t2。所以说,周期还得看最慢的流水部件。

总结

  1. 计算时间的时候要清楚一点,就是时间轴就同一个,就能看明白计算的过程了。注意两个术语的意思,吞吐率和加速比。

————————————————
版权声明:本文为CSDN博主「琚建飞」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/gnd15732625435/article/details/53034354

发表评论

表情:
评论列表 (有 0 条评论,553人围观)

还没有评论,来说两句吧...

相关阅读

    相关 指令流水线的分类

    文章目录 指令流水线的分类 1.部件功能级、处理机级和处理机间级流水线 2.单功能流水线和多功能流水线 3.动态流水线和静态

    相关 计算机组成原理-指令系统

    计算机能解题是由于机器本身存在一种语言,它能理解人的意图,又能被机器自身识别。机器是由一条条语句构成的,每一条语句又能准确表达某种语义。计算机就是连续执行每一条机器语句而实现全

    相关 指令流水线

    指令流水线 > 指令流水线是为了提高处理器执行指令的效率,把一条指令的操作分成多个细小的步骤,每个步骤由专门的电路完成的方式。 > > 比如:一条指令执行要经过三个阶段:取