计算机系统结构复习(五):ILP指令集并行
指令集并行和两种方式
ILP定义:当指令之间不存在相关,他们在流水线中可以重叠起来 并行执行,这种潜在的并行性称为指令级并行。
开发ILP的两种方法:
1.静态调度:利用编译器对代码进行静态调度,以减少相关 和冲突。是在编译期间而不是执行期间进行调度和优化。
2.动态调度:在程序执行过程中依靠硬件对代码进行调度。
基本快
定义:除入口和出口外没有其他分支的线性指令序列。BB内 部的指令可能相互依赖,且每4-7条指令就会有分支。为明显提升性能,开发ILP更多是在BB之间。
比如循环级并行(loop-level parallelism)采用循环展开:
for (i=1; i<=1000; i=i+1) (共1000个BB,ILP就是使得这1000个BB能并行计算)
x[i] = x[i] + s //(一个循环中的不同循环体并行执行)
循环展开的两种方法:
1.静态循环展开:编译器静态调度指令
2.动态循环展开:动态分支预测
上一章的分支预测是静态
相关与从冲突的关系
相关:两条指令之间存在某种依赖关系(数据相关、名相关、 控制相关)
冲突: 在具体流水线中,由于相关的存在,使得指令流中下一 条指令不能在指定的时钟周期开始执行。
两者之间的关系:

最低0.47元/天 解锁文章
9781

被折叠的 条评论
为什么被折叠?



