指令流水线
流水线指令
如果可以一个重复的过程分解成若干个子过程,每个子过程可以和其他的子过程并行;
一条指令的执行可以分成多个阶段,根据计算机的不同,具体的分法也不同;
例如之前总结的一个指令的执行可能分成如下几个阶段
-
取址阶段
-
间址阶段
-
执行阶段
-
中断阶段
举个例子,某个指令执行3个阶段,每个阶段执行都是时间t,执行n次 顺序执行: 3*n*t 一次重叠执行 t + 2*n*t 二次重叠执行:2t + n*t
流水线方式的特点:
- 把一个任务分解成几个有联系的子任务,每个子仍无都是一个专门的功能部件来执行; 多个部件并行来缩短时间;
- 每个部件都要有一个缓冲寄存器,锁存器,用来保存流水线执行的指令结果;
- 各个功能端尽量时间相等,否则会引起堵塞,断流;
- 同一类任务,连续任务
5.流水线有装入时间和排空时间,第一个任务进入到流水线道输出流水线的时间,排空时间是最后一个任务进入到排除流水线的时间;
根据不同的分类方式,流水线可以分成如下的不同种类:
部件级别流水线:算术逻辑运算,例如浮点数加法-> 求阶差,对阶,尾数相加,规格化 4个流程
处理器级别的流水:取指,译码,执行,访存,写回
处理间级别的流水:宏流水,每个处理机都完成一个单独的任务,结果存放在下一个处理器共享的储存器中
按照功能种类分
单功能流水:只能使用一种固定专门功能的流水线;
多功能流水:不同连接方式可以同时或者不同时实现多种功能的流水线;
按照各个段之间的连接方式
动态流水线:各段只能同一种功能连接方式工作
静态流水线:某些段某种运算时,另一些段进行另一种运算
按照是否有反馈信号
线性流水线: 从输入到输出每个段只允许经过一次,不存在反馈回路
非线性流水线:存在反馈回路,某些段数次通过流水线,线性递归运算
流水线性能指标
-
流水线吞吐率
单位时间内流水线完成的任务数量; TP = n/Tk; 对于理想的流水线时间 Tk=(k+n-1)dT
-
流水线的加速比
不使用流水线的时间和使用流水线的时间比值 S=T0/Tk 对于理想的流水线作业 S=kn/(k+n-1);
3.流水线的效率
E=n个任务占用的时空有效面积/n个任务所用的时间和k个流水段围成时空区总面积;
影响流水线性能的因素
-
多条指令在同一时刻真多资源而形成的冲突叫做资源冲突
-
相关问题:相邻指令间存在关联,使得流水线停顿:
2.1 数据冲突(数据冒险) 下一条指令会用到这一条指令的结果,数据冒险指令,如果多条指令重叠会出现冲突; 1)后续指令暂停一到两个时钟周期,硬件阻塞stall软件插入NOP方法; 2)专用通路,不写回寄存器直接结果作为输入数据,数据旁路技术 3)指令编译优化,调整指令顺序 2.2 控制冲突(控制冒险) 指令在确定下一条指令位置,例如发生转移调用返回等会改变PC值,造成断流 1)分支预测,今早生成转移目标地址,静态预测动态预测; 2)预取转移成功或者不成功的目标指令 3)加快提前形成条件码 4)提高转移方向的猜准率 cache缺失处理过程也会造成流水线阻塞
超标量流水线
-
超标量流水线技术
每个时钟周期并发多个独立指令,用并行的操作方式将两条或者多条指令编译并执行;需要多个功能部件
-
超流水线技术
在一个时钟周期内,一个功能部件使用多次,不调整执行顺序,编译程序解决优化问题
-
超长指令字:
挖掘出指令间潜在的并行性,多个指令组合成一条具有多个操作码字段的超长指令字(多达几百位),需要多个处理部件