推测执行技术
基本块程序可划分成数个基本块,基本块包含多条顺序执行的指令,且只有一个入口和一个出口。一个入口意味着整个程序中不能有跳转类指令进入基本块第一条指令后的指令,一个出口意味着基本块最后一条指令才能是跳转指令。上图给出了一段高级语言程序,其包含多个基本块。
前面在讨论乱序执行时,使用到的汇编程序完全由算术指令构成,不包含跳转指令。所以说前面讨论的乱序执行仅适用于基本块内部,这有较大的局限性,因为实际程序中的基本块通常都很短,且基本块间不一定能并行。所以乱序执行只有跨越基本块边界才能有更大效果。而跨越基本块则意味着执行可能不应该执行的指令,这种不知道是否需要执行就提前执行的技术统称为推测执行技术。对于很多硬件来说,其无法支持跨越基本块的乱序执行,所以这部分工作也会交给编译器完成,称为指令重排。
… 阅读全文