1/134▲4.1指令级并行的概念4.2指令的动态调度4.3动态分支预测技术4.4多指令流出技术4.5循环展开和指令调度第4章指令级并行本章研究:如何通过各种可能的技术,获得更多的指令级并行性。硬件+软件技术2/134▲几乎所有的现代处理机都利用流水线来使指令重叠执行,达到提高处理机性能的目的。这种指令之间存在的潜在并行性称为指令级并行ILP(Instruction-LevelParallelism)。开发ILP的方法基于软件的静态方法:在编译阶段静态地发现并行。基于硬件的动态方法:在执行阶段动态地发现并行。必须要硬件技术和软件技术互相配合,才能够最大限度地挖掘出程序中存在的指令级并行。4.1指令级并行4.1.1指令级并行的概念3/134▲4.1指令级并行1.流水线处理机的实际CPI理想流水线的CPI加上各类停顿的时钟周期数:CPI流水线=CPI理想+停顿结构冲突+停顿数据冲突+停顿控制冲突理想CPI是衡量流水线最高性能的一个指标。2.基本程序块基本程序块:一段除了入口和出口以外不包含其他分支的线性代码段。程序平均每4~7条指令就会有一个分支。由于数据相关,基本块内的并行性非常有限比基本块的平均大小要小的多4/134▲4.1指令级并行3.循环级并行为了提高指令级并行,使一个循环中的不同循环体并行执行是最常见、最基本的方法也是指令级并行研究的重点之一例如,考虑下述循环:for(i=1;i<=500;i=i+1)a[i]=a[i]+s;在每一次循环的内部没有任何的并行性;但每一次循环都可以与其他的循环重叠并行执行。开发循环级并行的最基本技术采用向量指令和向量数据表示循环展开(loopunrolling)技术5/134▲4.1指令级并行4.相关与流水线冲突相关性是程序固有的一种属性,它反映了程序中指令之间的相互依赖关系。数据相关、名相关、控制相关流水线冲突是指对于具体的流水线来说,由于相关的存在,使得指令流中的下一条指令不能在指定的时钟周期执行。结构冲突数据冲突控制冲突具体的一次相关是否会导致实际冲突的发生以及该冲突会带来多长的停顿,则是流水线的属性。6/134▲4.1指令级并行5.可以从两个方面来解决相关性问题:保持相关,但避免发生冲突。指令调度:静态调度、动态调度通过代码变换,消除相关。6.程序顺序:由源程序确定的、在完全串行方式下指令的执行顺序。开发并行性,必须保持程序顺序7.控制相关并不是一个必须严格保持的关键属性。当存在控制相关时,如果不遵守控制相关的依赖关系、执行本来不该执...