指令集并行的概念
指令集并行ILP:指令之间存在的一种并行性,利用它,计算机可以并行执行两条或者两条以上的指令。
开发ILP方法分类
- 基于硬件的动态开发
- 基于软件的静态开发
流水线处理机的实际CPI
CPI流水线=CPI理想状态+停顿结构冲突+停顿数据冲突+停顿控制冲突
IPC:每个时钟周期完成的指令条数=CPI的倒数
基本程序块
编译中提到的只有出入口,没有别的分支和跳转的代码块。
循环级并行
使一个循环的不同循环体并行执行。
指令的动态调度
静态调度
编译器减少相关和冲突
动态调度
执行过程通过计算机硬件减少停顿。
动态调度的基本思想
将译码阶段ID拆分为两个阶段:
- 流出IS:指令译码检查是否存在结果冲突
- 读操作数RO:等待时间冲突消失,后读操作数
不同的动态调度算法
记分牌动态调度
在没有结构冲突时,尽可能早的执行没有数据冲突的指令,实现每个周期都执行一条指令(把等待的空闲时间用来干活)
Tomasulo算法
记录和检测指令相关。操作数一旦就绪就立即执行,把发生RAW冲突的可能性降低。
通过寄存器换名消除WAR冲突和WAW冲突。
Q.E.D.