[TOC]

流水线技术

流水线基础概念

​ • 指令的执行过程是,对每一条指令做取指令,分析指令,执行指令。

​ • 取指–移码–执行–访存–写回

​ • 流水执行是,取指令时间上一条指令的执行阶段,执行指令阶段可能是下一条指令的取指令阶段。

​ • 抽象概念:把一个重复过程分为若干个子过程,每个子部件由专门的部件实现。多个处理过程在时间上错开错开,依次通过各个部件。

​ • 流水的段:每个子过程。

​ • 流水的深度:子过程的个数。例如: 入-取指令-指令译码-执行-存结果-出–》浮点加法:入-求阶差-对阶-尾数相加-规格化-出

​ • 流水时间是每一个段时间的总和,需要注意的是通过一个段的时间最长的段为流水线设计的瓶颈。流水线中各段的时间应尽可能相等,否则将引起流水线堵塞、断流。时间长的段将成为流水线的瓶颈

​ • 时空图:从时间和空间两个方面来描述指令流水执行

​ • 流水线的性能指标–吞吐率。即单位时间内完成任务的数量或者输出结果的数 量。

相关

​ • 数据相关

​ • 名相关

​ ○ 输出相关–写写操作

​ ○ 反相关–先读后写,读的名和写的名一致

​ • 控制相关

​ 每条指令访问读写的寄存器称为名

​ 输出相关–写写操作,两条指令的

​ 反相关—先读后写,读的名和写的名一致

​ 换名技术

流水线冒险(冲突)

​ 1. 结构冒险–硬件不支持多条指令在同一时间周期执行–重复,细分部件

​ 2. 数据冒险–一条指令需要等待另外一条指令完成而造成流水线暂停。(所以设计的段的时候时间应尽量保持一致–前推旁路–写后读冲突–在写入i之前,j先读取,会造成读取错误。

​ 为避免数据等待的问题,在每个段之间设计了一个缓冲寄存器(也叫锁存器)

​ 3.控制冒险 (分支冒险)–决策依赖于另外一条指令的结果,但其他指令正在执行当中。