指令集并行的概念

指令集并行ILP:指令之间存在的一种并行性,利用它,计算机可以并行执行两条或者两条以上的指令。

开发ILP方法分类

  1. 基于硬件的动态开发
  2. 基于软件的静态开发

流水线处理机的实际CPI

CPI流水线=CPI理想状态+停顿结构冲突+停顿数据冲突+停顿控制冲突

IPC:每个时钟周期完成的指令条数=CPI的倒数

基本程序块

编译中提到的只有出入口,没有别的分支和跳转的代码块。

循环级并行

使一个循环的不同循环体并行执行。

指令的动态调度

静态调度

编译器减少相关和冲突

动态调度

执行过程通过计算机硬件减少停顿。

动态调度的基本思想

将译码阶段ID拆分为两个阶段:

  1. 流出IS:指令译码检查是否存在结果冲突
  2. 读操作数RO:等待时间冲突消失,后读操作数
    不同的动态调度算法

记分牌动态调度

在没有结构冲突时,尽可能早的执行没有数据冲突的指令,实现每个周期都执行一条指令(把等待的空闲时间用来干活)

Tomasulo算法

记录和检测指令相关。操作数一旦就绪就立即执行,把发生RAW冲突的可能性降低。
通过寄存器换名消除WAR冲突和WAW冲突。

Q.E.D.


寄蜉蝣于天地,渺沧海之一粟