三、流水线
1.基本概念
1.1 流水线
流水线:程序执行时多条指令重叠操作的并行处理技术。
1.2 指令执行过程
取指令-分析指令-执行指令,有可能多于三步,据题意.
取指:根据PC内容访问主存储器,取出一条指令送到IR中。
分析:对指令操作码进行译码,按照给定的寻址方式和地址字段中从内容形式形成操作数的有效地址EA,从EA中取出操作数。
执行:根据操作码,完成指令规定的功能,把运算结果存在主存或寄存器中。
设取指耗时 t,n 条指令顺序执行耗时为 T,若取指、分析和执行三个子过程的时间消耗一样
顺序执行
按指令的先后顺序执行,执行完一条指令后方可启动下一条指令。
T=(t+t+t)*n=3nt
一次重叠执行方式
当前指令的执行阶段和下一条指令的取指阶段同时进行,在时间轴上存在了一次重叠
T=3t+(n-1)*2t=(2n+1)t
当第一条指令完成,需要3t,但是从第二条指令开始,每2t就可以完成一条指令
二次重叠执行方式
T=3t+(n-1)t=(2+n)t
1.3 流水线的表示方法
指令执行过程图
主要用于分析指令的执行过程以及影响流水线的因素
时空图
分析流水线的性能
1.4 流水线性能指标
吞吐率
装入时间:第一条指令取指到执行结束的时间
排空时间:最后一条指令从取指到最后结束的时间。
加速比
效率
通过移动块来形成矩形做比例算效率
所有步骤花费时间相等的指令执行的效率最高
1.5 流水线常见计算
流水线周期
流水线周期:步骤中执行时间最长的一段
流水线执行时间
(1)理论公式:1条指令完整执行的时间;
(2)实践公式:一个完整指令的步骤数;
注:计算时优先用理论公式
解答如下:
理论:
流水线周期为 max(2ns、2ns、1ns)=2ns
一条指令完成需要5nt,100条指令执行需要5nt+(100-1)2nt=203nt
实践:
一条指令完成需要三个步骤。
100条指令执行需要(3+100-1)2nt=1022nt=204nt
吞吐率
TP=100/203
流水线最大吞吐率=1/流水线周期
加速比
不使用流水线的100条指令执行时间为:T0=(2nt+2nt+1nt)*100=500nt.
使用流水线的100条指令执行时间Tk=203nt
加速比:S=500nt/203nt
效率
T0:顺序执行总时间
TK:流水线执行时间,K指令数量