程序是由一系列指令组成的,如果要节省执行的时间,最直接的方法就是将指令并行起来执行。在处理器内部通常有很多的执行单元,如加法单元、乘法单元、内存访问单元、浮点运算单元等等,每种执行单元负责一类具体的指令。在前面介绍的乱序执行内核中,每个cycle最多只发射一条指令,即使有时很多指令并行执行,平均的指令执行效率也最多只有每个cycle一条指令。如果发射单元一次能发射多条指令,那么就有更多指令能并行处理了,因此指令并行也称为multi-issue(多发射)。
哪些指令需要并行处理,这需要做判决,根据判决的地方不同,multi-issue又分成了2个阵营:Superscalar和VLIW。
世上没有无缘无故的爱,也没有无缘无故的恨,没有无缘无故的Superscalar,也没有无缘无故的VLIW。Superscalar和VLIW也是随着历史趋势慢慢发展起来的。
Superscalar是由super(超)+ scalar(标量)组成,标量处理器时代的指令都是串行执行的,处理器为了兼容原有的程序,但同时又要提高程序执行效率,就在处理器内部做了指令的并行化处理。这就是超标量处理器的基本原型。