计算机组成原理之指令流水
概念
指令流水是指为提高处理器执行指令的效率,把一条指令的操作分成多个细小的步骤,每个步骤由专门的电路完成。
原理
- 指令的串行执行
总有一个部件空闲 - 指令的二级流水
若取指和执行阶段时间上完全重叠,则指令周期减半,速度提高一倍
影响指令流水效率加倍的因素
- 执行时间>取指时间
解决办法:
在取指令部件和执行指令部件之间加上指令部件缓冲器,可将取出的多条指令放入指令部件缓冲器,执行部件在执行完成后直接从指令缓冲区中取指令,这样取指部件不用一直等待执行部件。 - 条件转移指令
必须等上条指令执行结束,才能确定下条指令的地址,造成了一定的时间损失
解决办法:分支预测
影响指令流水线性能的因素
- 结构相关
不同指令争用同一功能部件产生资源冲突
解决办法:
①停顿:把发生冲突的一个操作往后推
②指令存储器和数据存储器分开
③指令预取技术 - 数据相关
不同指令因操作重叠,可能改变操作数的读/写顺序
读/写顺序包括:
写后读相关
读后写相关
写后写相关
解决办法:
①后推法
②采用旁路技术 - 控制相关
由转移指令引起
流水线性能
- 吞吐率
单位时间内流水线所完成指令或输出结果的数量 - 加速比
m段的流水线速度与等功能的非流水线的速度之比 - 效率
流水线中各功能段的利用率
流水线的多发技术
- 超标量技术
- 每个时钟周期内可并发多条独立指令,配置多个功能部件
- 不在执行过程中调整指令的执行顺序,通过编译优化技术,把可并行执行的指令搭配起来
- 超流水线技术
- 在一个时钟周期内再分段
- 不在执行过程中调整指令的执行顺序,靠编译程序解决优化问题
- 超长指令字技术
- 由编译程序挖掘出指令字潜在的并行性,将多条能并行操作的指令组合成一条具有多个操作码字段的超长指令字
- 采用多个处理部件
流水线结构
-
指令流水线结构
完成一条指令分六段,每一段需要一个时钟周期
若流水线不出现断流,则一个时钟周期出一个结果
若不采用流水技术,六个时钟周期出一个结果
理想情况下,六级流水的速度是不采用流水技术的六倍
注意:流水段之间要加上锁存器,用于保存流水段前一段的操作结果,为下一段提供操作信息和操作数据 -
运算流水线
例如,完成浮点加减运算可分为对阶、尾数求和、规格化三段
分段原则:每段操作时间尽量一致