1 指令流水线的基本概念

1.1 流水线基本原理

流水线技术是一种显著提高指令执行速度与效率的技术。方法是:指令取指完成后,不等该指令执行完毕即可取下一条指令。如果把一条指令的解释过程进一步细分,例如分成取指、译码、访存、执行和写回五个子过程,并用五个子部件分别处理这五个子过程。

这样只需在上一指令的第一子过程处理完毕进入第二子过程处理时,在第一子部件中就开始对第二条指令的第一子过程进行处理。随着时间推移,这种重叠操作最后可达到五个子部件同时对五条指令的子过程进行操作。

1.2 典型的五级流水线的数据通路

1.3 流水线方式的特点

与传统的串行执行方式相比,采用流水线方式具有如下特点:

  1. 把一个任务(一条指令或一个操作)分解为几个有联系的子任务,每个子任务由一个专门的功能部件来执行,并依靠多个功能部件并行工作来缩短程序的执行时间。
  2. 流水线每个功能段部件后面都要有一个缓冲寄存器,或称锁存器,其作用是保存本流水段的执行结果,供给下一流水段使用。
  3. 流水线中各功能段的时间应尽量相等,否则将引起堵塞、断流。
  4. 只有连续不断地提供同一种任务时才能发挥流水线的效率,所以在流水线中处理的必须是连续任务。在采用流水线方式工作的处理机中,要在软件和硬件设计等多方面尽量为流水线提供连续的任务。
  5. 流水线需要有装入时间排空时间。装入时间是指第一个任务进入流水线到输出流水线的时间。排空时间是指最后一个任务进入流水线到输出流水线的时间。

1.4 影响流水线性能的因素

结构相关是当多条指令同一时刻争用同一资源形成冲突。

解决方案:

  1. 暂停一个时钟周期
  2. 单独设置数据存储器和指令存储器

数据相关是指令在流水线中重叠执行时,当后继指令需要用到前面指令的执行结果时发生的。

解决方案:

  1. 暂停一个时钟周期
  2. 数据旁路:把前一条指令的ALU计算结果直接输入到下一条指令

控制相关是当流水线遇到分支指令和其他改变PC值的指令时引起的。

解决方案:

  1. 延迟转移技术。将转移指令与其前面的与转移指令无关的一条或几条指令对换位置,让成功转移总是在紧跟的指令被执行之后发生,从而使预取的指令不作废
  2. 转移预测技术

2 CISC和RISC的对比


3 CPU 的功能

中央处理器(CPU)由运算器和控制器组成。其中,控制器的功能是负责协调并控制计算机各部件执行程序的指令序列,包括取指令、分析指令和执行指令;运算器的功能是对数据进行加工。

CPU 的具体功能包括:

  1. 指令控制:完成取指令、分析指令和执行指令的操作,即程序的顺序控制。
  2. 操作控制:一条指令的功能往往由若干操作信号的组合来实现。CPU 管理并产生由内存取出的每条指令的操作信号,把各种操作信号送往相应的部件,从而控制这些部件按指令的要求进行动作。
  3. 时间控制:对各种操作加以时间上的控制。时间控制要为每条指令按时间顺序提供应有的控制信号。
  4. 数据加工:对数据进行算术和逻辑运算。
  5. 中断处理:对计算机运行过程中出现的异常情况和特殊请求进行处理。

4 是否流水段越多,指令执行越快?

错误,原因如下:

  1. 流水段缓冲之间的额外开销增大。每个流水段有一些额外开销用于缓冲间传送数据、进行各种准备和发送等功能,这些开销加长了一条指令的整个执行时间,当指令间逻辑上相互依赖时,开销更大
  2. 流水段间控制逻辑变多、变复杂。用于流水线优化和存储器(或寄存器)冲突处理的控制逻辑

将随流水段的增加而大增,这可能导致用于流水段之间控制的逻辑比段本身的控制逻辑更复杂。


5 有关指令相关、数据相关的几个概念

  1. 两条连续的指令读取相同的寄存器时,会产生读后读(Read After Read,RAR)相关,这种相关不会影响流水线。
  2. 某条指令要读取上一条指令所写入的寄存器时,会产生写后读(Read After Write, RAW)相关,它称数据相关或真相关,影响流水线。按序流动的流水线只可能出现RAW 相关。
  3. 某条指令的上条指令要读/写该指令的输出寄存器时,会产生读后写(Write After Read,WAR)相关写后写(Write After Write,WAW)相关。在非按序流动的流水线中,既可能发生RAW 相关,又可能发生WAR 相关和WAW 相关。

对流水线影响最严重的指令相关是数据相关