王嘉贝

导航

指令流水线

流水线指令

如果可以一个重复的过程分解成若干个子过程,每个子过程可以和其他的子过程并行;

一条指令的执行可以分成多个阶段,根据计算机的不同,具体的分法也不同;

例如之前总结的一个指令的执行可能分成如下几个阶段

  1. 取址阶段

  2. 间址阶段

  3. 执行阶段

  4. 中断阶段

     举个例子,某个指令执行3个阶段,每个阶段执行都是时间t,执行n次
     顺序执行: 3*n*t
     一次重叠执行 t + 2*n*t 
     二次重叠执行:2t + n*t 
    

流水线方式的特点:
  1. 把一个任务分解成几个有联系的子任务,每个子仍无都是一个专门的功能部件来执行; 多个部件并行来缩短时间;
  2. 每个部件都要有一个缓冲寄存器,锁存器,用来保存流水线执行的指令结果;
  3. 各个功能端尽量时间相等,否则会引起堵塞,断流;
  4. 同一类任务,连续任务
    5.流水线有装入时间和排空时间,第一个任务进入到流水线道输出流水线的时间,排空时间是最后一个任务进入到排除流水线的时间;

根据不同的分类方式,流水线可以分成如下的不同种类:

    部件级别流水线:算术逻辑运算,例如浮点数加法-> 求阶差,对阶,尾数相加,规格化 4个流程
    处理器级别的流水:取指,译码,执行,访存,写回 
    处理间级别的流水:宏流水,每个处理机都完成一个单独的任务,结果存放在下一个处理器共享的储存器中 

按照功能种类分

    单功能流水:只能使用一种固定专门功能的流水线;
    多功能流水:不同连接方式可以同时或者不同时实现多种功能的流水线;

按照各个段之间的连接方式

    动态流水线:各段只能同一种功能连接方式工作
    静态流水线:某些段某种运算时,另一些段进行另一种运算 

按照是否有反馈信号

    线性流水线: 从输入到输出每个段只允许经过一次,不存在反馈回路
    非线性流水线:存在反馈回路,某些段数次通过流水线,线性递归运算 

流水线性能指标
  1. 流水线吞吐率

     单位时间内流水线完成的任务数量;  
     TP = n/Tk;  
     对于理想的流水线时间 Tk=(k+n-1)dT
    
  2. 流水线的加速比

     不使用流水线的时间和使用流水线的时间比值
     S=T0/Tk
     对于理想的流水线作业 S=kn/(k+n-1);  
    

3.流水线的效率
E=n个任务占用的时空有效面积/n个任务所用的时间和k个流水段围成时空区总面积;

影响流水线性能的因素
  1. 多条指令在同一时刻真多资源而形成的冲突叫做资源冲突

  2. 相关问题:相邻指令间存在关联,使得流水线停顿:

     2.1 数据冲突(数据冒险)
     下一条指令会用到这一条指令的结果,数据冒险指令,如果多条指令重叠会出现冲突;
     1)后续指令暂停一到两个时钟周期,硬件阻塞stall软件插入NOP方法; 
     2)专用通路,不写回寄存器直接结果作为输入数据,数据旁路技术
     3)指令编译优化,调整指令顺序
    
     2.2 控制冲突(控制冒险)
     指令在确定下一条指令位置,例如发生转移调用返回等会改变PC值,造成断流
     1)分支预测,今早生成转移目标地址,静态预测动态预测; 
     2)预取转移成功或者不成功的目标指令
     3)加快提前形成条件码
     4)提高转移方向的猜准率
     cache缺失处理过程也会造成流水线阻塞
    
超标量流水线
  1. 超标量流水线技术

     每个时钟周期并发多个独立指令,用并行的操作方式将两条或者多条指令编译并执行;需要多个功能部件
    
  2. 超流水线技术

     在一个时钟周期内,一个功能部件使用多次,不调整执行顺序,编译程序解决优化问题 
    
  3. 超长指令字:

     挖掘出指令间潜在的并行性,多个指令组合成一条具有多个操作码字段的超长指令字(多达几百位),需要多个处理部件
    

posted on 2021-07-05 20:58  toBeGeek  阅读(587)  评论(0编辑  收藏  举报