系列目录
前言
上一讲 简单五级流水线设计与性能 讲到了流水线相比于多周期实现的优势, 同时也提到了流水化带来的3种冲突:控制冲突,数据冲突,结构冲突。这一讲我们主要会关注:
- 数据冲突以及如何降低它的影响。
- 增加流水线宽度以提升指令级并行性(ILP)
这一章及往后将会开始会涉及到乱序执行,长度会较长所以将分成上下两节。
数据冲突的形式
这其实就是数据相关性可能有哪些表现形式,在这里我们用指令编码顺序来命名这些相关性(dependency):
- RAW: 在 Ix 写某寄存器后有指令 Iy 读取该寄存器
如果 Iy 提前执行,Iy会读不到正确数据- WAR: 在 Ix 读某寄存器后有指令 Iy 写该寄存器
如果 Iy 提前执行, Ix 会读不到正确数据- WAW: 在 Ix 写某寄存器后有指令 Iy 写该寄存器
如果 Iy<