408答疑
文章目录
- 六、指令流水线
- 指令流水线的基本概念
- 流水线的基本实现
- 流水线设计的原则
- 流水线的逻辑结构
- 流水线的时空图表示
- 八、参考资料
- 鲍鱼科技课件
- 26王道考研书
六、指令流水线
- 前面介绍的指令都是在单周期处理机中采用串行方法执行的,同一时刻 CPU 中只有一条指令在执行,因此各功能部件的使用率不高。
- 现代计算机普遍采用指令流水线技术,同一时刻有多条指令在 CPU 的不同功能部件中并发执行,大大提高了功能部件的并行性和程序的执行效率。
指令流水线的基本概念
-
可以从两方面提高处理机的并行性:
- 时间上的并行技术:将一个任务分解为几个不同的子阶段,每个子阶段在不同的功能部件上并行执行,以便在同一时刻能够同时执行多个任务,进而提升系统性能,这种方法被称为流水线技术。
- 空间上的并行技术:在一个处理机内设置多个执行相同任务的功能部件,并让这些功能部件并行工作,这样的处理机被称为超标量处理机。
-
一条指令的执行过程可分解为若干阶段,每个阶段由相应的功能部件完成。若将各阶段视为相应的流水段,则指令的执行过程就构成了一条指令流水线。
-
假设一条指令的执行过程分为如下 5 个阶段(也称功能段或流水段):
- 取指(IF):从指令存储器或 Cache 中取指令。
- 译码/读寄存器(ID):操作控制器对指令进行译码,同时从寄存器堆中取操作数。
- 执行/计算地址(EX):执行运算操作或计算地址。
- 访存(MEM):对存储器进行读/写操作。
- 写回(WB):将指令执行结果写回寄存器堆。
-
把 k + 1 k+1 k+1 条指令的取指阶段提前到第 k k k 条指令的译码阶段,从而将第 k + 1 k+1 k+1 条指令的译码阶段与第 k k k 条指令的执行阶段同时进行,如下图所示。
-
理想情况下,每个时钟周期都有一条指令进入流水线,每个时钟周期都有一条指令完成,每条指令的时钟周期数(CPI)都为 1。
-
-
为了利于实现指令流水线,指令集应具有如下特征:
- 指令长度应尽量一致:有利于简化取指令和指令译码操作。否则,取指令所花的时间长短不一,使得取指部件极其复杂,并且也不利于指令译码。
- 指令格式应尽量规整:尽量保证源寄存器的位置相同,有利于在指令未知时就可取寄存器操作数,否则须译码后才能确定指令中各寄存器编号的位置。
- 采用 LOAD/STORE 型指令:其他指令都不能访问存储器,这样可把 LOAD/STORE 指令的地址计算和运算指令的执行步骤规整在同一个周期中,有利于减少操作步骤。
- 数据和指令在存储器中“按边界对齐”存放:这样,有利于减少访存次数,使所需数据在一个流水段内就能从存储器中得到。
流水线的基本实现
流水线设计的原则
-
在单周期实现中,虽然不是所有指令都必须经历完整的 5 个阶段,但只能以执行速度最慢的指令作为设计其时钟周期的依据,单周期 CPU 的时钟频率取决于数据通路中的最长路径。
-
流水线设计的原则:
- 指令流水线段个数以最复杂指令所用的功能段个数为准;
- 流水段的长度以最复杂的操作所花的时间为准。
-
假设某条指令的 5 个阶段所花的时间分别如下:① 取指:200 ps;② 译码:100 ps;③ 执行:150 ps;④ 访存:200 ps;⑤ 写回:100 ps。
- 该指令的总执行时间为 750 ps。
- 按照流水线设计原则,每个流水段的长度为 200 ps,所以每条指令的执行时间为 1ns,反而比串行执行时增加了 250 ps。
- 假设某程序有 N N N 条指令,单周期处理机所用的时间为 N × 750 p s N \times 750ps N×750ps,而流水线处理机所用的时间为 ( N + 4 ) × 200 p s (N + 4) \times 200ps (N+4)×200ps。
- 由此可见,流水线方式并不能缩短单条指令的执行时间,但对于整个程序来说,执行效率得到了大幅提高。
流水线的逻辑结构
- 每个流水段后面都要增加一个流水段寄存器,用于锁存本段处理完的所有数据,以保证本段的执行结果能在下个时钟周期给下一流水段使用,如下图所示。
- 各种寄存器和数据存储器均采用统一时钟 CLK 进行同步,每来一个时钟,各段处理完的数据都将锁存到段尾的流水段寄存器中,作为后段的输入。同时,当前段也会收到前段通过流水段寄存器传递过来的数据。
- 一条指令会依次进入 IF、ID、EX、MEM、WB 五个功能段进行处理,第一条指令进入 WB 段后,各流水段都包含一条不同的指令,流水线中将同时存在 5 条不同的指令并行执行。
在考试中,若没有明确说明,则可以不用考虑流水寄存器的时延。
流水线的时空图表示
-
通常用时空图来直观地描述流水线的执行情况,如下图所示。
- 在时空图中,横坐标表示时间,它被分割成长度相等的时间段 T T T;
- 纵坐标为空间,表示当前指令所处的功能部件。
-
在上图中,
- 第一条指令 I 1 I_1 I1 在时刻 0 进入流水线,在时刻 5T 流出流水线。
- 第二条指令 I 2 I_2 I2 在时刻 T T T 进入流水线,在时刻 6T 流出流水线。
- 以此类推,每隔一个时间 T T T 就有一条指令进入流水线,从时刻 5T 开始每隔一个时间 T T T 就有一条指令流出流水线。
-
从上图中可看出,在时刻 10T 时,流水线上便有 6 条指令流出。若采用串行方式执行,在时刻 10T 时,只能执行 2 条指令,可见使用流水线方式成倍地提高了计算机的速度。
只有大量连续任务不断输入流水线,才能充分发挥流水线的性能,而指令的执行正好是连续不断的,非常适合采用流水线技术。对于其他部件级流水线,如浮点运算流水线,同样也仅适合于提升浮点运算密集型应用的性能,对于单个运算是无法提升性能的。
八、参考资料
鲍鱼科技课件
b站免费王道课后题讲解:
网课全程班: