组成原理(十三):指令流水
目录
学习重点
- 并行等级
- 指令流水原理
- 指令二级流水
- 指令六级流水
- 影响流水线性能的因素
- 结构相关:资源冲突
- 数据相关:指令重排序
- 控制相关:转移指令
- 流水线能指标:
- 吞吐率
- 加速比
- 效率
- 流水线多发技术:
- 超标量技术
- 超流水技术
- 超长指令字
- 流水线结构:
- 指令流水结构
- 运算流水结构
- 锁存器
1.提高机器速度
1.1 提高访存速度
高速芯片;Cache;多体并行
1.2 提高IO和主机之间的传送速度
中断, DMA, 通道, IO处理机, 多总线
1.3 提高运算器速度
高速芯片; 改进算法; 快速进位链
1.4 提高整机处理能力
高速器件;改进系统结构,开发系统并行性
2.系统的并行性
1.并行的概念:
- 并发:两个或两个以上事件在同一事件段发生
- 同时(并行):两个或两个以上事件在同一时刻发生,时间上相互重叠
2.并行性的等级
- 过程级(程序、进程):粗粒度 ,软件实现
- 指令级(指令之间,内部):细粒度,硬件实现
3.指令流水原理
3.1 串行指令与二级流水
指令的串行执行:
指令的二级流水:
3.2 影响指令流水效率加倍的因素
-
执行时间 > 取指时间
通过指令部件缓冲区解决:
-
条件转移指令 对指令流水的影响
- 必须等上条指令执行结束才能确定下条指令的地址,等待时间
- 分支预测法:猜测法
3.3 指令六级流水
- FI:取指令
- DI:指令译码
- CO:形成操作数
- FO:取操作数
- EI:执行
- WO:结果写回(寄存器或内存)
4.影响指令流水线性能的因素
4.1 结构相关
不同指令争用同一功能部件产生资源冲突:FI,FO,WO
对寄存器,运算器的访问也会发生冲突
解决:
- 停顿:加入气泡,往后移
- 分立缓存:指令存储器和数据存储器分开,half结构
- 指令预取:取指部件利用空闲时间将指令取到缓冲队列
4.2 数据相关
不同指令因重叠操作,可能改变操作数的 读/写 访问顺序
- 写后读:(RAW)
- 读后写:(WAR)
- 写后写:(WAW)
解决方法:
- 后推法:推后指令的读或写,等到另一个指令的操作执行完毕再执行
- 旁路技术(前向通道):前一个指令执行完后,不写回主存或寄存器,直接送入第二个指令
4.3 控制相关
条件转移指令引起:
示例:第三条指令是转移指令
- 指令3 执行(EI)时,直接转移到指令15
- 导致中间 4~15 的指令全都不执行,造成损失
5.流水线性能(指标)
5.1 吞吐率
单位时间内 流水线 所完成指令 或 输出结果 的数量
m*Δt
:第一条流水线执行完毕时间- 之后每个时间段都有一条指令执行完毕
- 示意图见5.3
5.2 加速比
阿姆达尔定律
加速比=未用指令流水时间/使用了指令流水时间
示意图见5.3
5.3 效率
流水线各功能段的利用率
6.流水线多发技术
6.1 超标量技术
- 每个时钟周期内可并发多条独立指令,配置多个功能部件
- 不能调整指令的执行顺序:通过编译优化技术,把可并行执行的指令搭配起来
示意图:
6.2 超流水技术
一个时钟周期内再分段(3段)
一个时钟周期内一个功能部件使用多次(3次)
不能调整指令的执行顺序:靠编译程序解决优化问题
每个时钟之间都有锁存器:
- 保存前一阶段结果
- 为下一阶段提供操作数据和信号
6.4 超长指令字技术
- 由编译程序 将多条能并行操作的指令组合成一条
- 具有多个操作码字段的 超长指令字 (几百位)
7.流水线结构
7.1 指令流水
完成一条指令分为6段,每段需要一个时钟周期(不同CPU不同)
每段之间需要加上锁存器,理想情况下提高6倍速度
7.2 运算流水
完成 浮点加减运算,大致可分为对阶,尾数求和,规格化三个阶段