网站开发团队人数构成,编程除了做网站还能干什么,网站运行及维护,建筑企业网站408答疑 文章目录 六、指令流水线指令流水线的基本概念流水线的基本实现流水线设计的原则流水线的逻辑结构流水线的时空图表示 八、参考资料鲍鱼科技课件26王道考研书 六、指令流水线
前面介绍的指令都是在单周期处理机中采用串行方法执行的#xff0c;同一时刻 CPU 中只有一… 408答疑 文章目录 六、指令流水线指令流水线的基本概念流水线的基本实现流水线设计的原则流水线的逻辑结构流水线的时空图表示 八、参考资料鲍鱼科技课件26王道考研书 六、指令流水线
前面介绍的指令都是在单周期处理机中采用串行方法执行的同一时刻 CPU 中只有一条指令在执行因此各功能部件的使用率不高。现代计算机普遍采用指令流水线技术同一时刻有多条指令在 CPU 的不同功能部件中并发执行大大提高了功能部件的并行性和程序的执行效率。
指令流水线的基本概念 可以从两方面提高处理机的并行性 时间上的并行技术将一个任务分解为几个不同的子阶段每个子阶段在不同的功能部件上并行执行以便在同一时刻能够同时执行多个任务进而提升系统性能这种方法被称为流水线技术。空间上的并行技术在一个处理机内设置多个执行相同任务的功能部件并让这些功能部件并行工作这样的处理机被称为超标量处理机。 一条指令的执行过程可分解为若干阶段每个阶段由相应的功能部件完成。若将各阶段视为相应的流水段则指令的执行过程就构成了一条指令流水线。 假设一条指令的执行过程分为如下 5 个阶段也称功能段或流水段 取指IF从指令存储器或 Cache 中取指令。译码/读寄存器ID操作控制器对指令进行译码同时从寄存器堆中取操作数。执行/计算地址EX执行运算操作或计算地址。访存MEM对存储器进行读/写操作。写回WB将指令执行结果写回寄存器堆。 把 k 1 k1 k1 条指令的取指阶段提前到第 k k k 条指令的译码阶段从而将第 k 1 k1 k1 条指令的译码阶段与第 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 (N4)×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站免费王道课后题讲解:
网课全程班:
26王道考研书