[TOC]
流水线技术
流水线基础概念
• 指令的执行过程是,对每一条指令做取指令,分析指令,执行指令。
• 取指–移码–执行–访存–写回
• 流水执行是,取指令时间上一条指令的执行阶段,执行指令阶段可能是下一条指令的取指令阶段。
• 抽象概念:把一个重复过程分为若干个子过程,每个子部件由专门的部件实现。多个处理过程在时间上错开错开,依次通过各个部件。
• 流水的段:每个子过程。
• 流水的深度:子过程的个数。例如: 入-取指令-指令译码-执行-存结果-出–》浮点加法:入-求阶差-对阶-尾数相加-规格化-出
• 流水时间是每一个段时间的总和,需要注意的是通过一个段的时间最长的段为流水线设计的瓶颈。流水线中各段的时间应尽可能相等,否则将引起流水线堵塞、断流。时间长的段将成为流水线的瓶颈
• 时空图:从时间和空间两个方面来描述指令流水执行
• 流水线的性能指标–吞吐率。即单位时间内完成任务的数量或者输出结果的数 量。
相关
• 数据相关
• 名相关
○ 输出相关–写写操作
○ 反相关–先读后写,读的名和写的名一致
• 控制相关
每条指令访问读写的寄存器称为名
输出相关–写写操作,两条指令的
反相关—先读后写,读的名和写的名一致
换名技术
流水线冒险(冲突)
1. 结构冒险–硬件不支持多条指令在同一时间周期执行–重复,细分部件
2. 数据冒险–一条指令需要等待另外一条指令完成而造成流水线暂停。(所以设计的段的时候时间应尽量保持一致–前推旁路–写后读冲突–在写入i之前,j先读取,会造成读取错误。
为避免数据等待的问题,在每个段之间设计了一个缓冲寄存器(也叫锁存器)
3.控制冒险 (分支冒险)–决策依赖于另外一条指令的结果,但其他指令正在执行当中。