5.6.3 超标量超流水线处理机性能
在一台指令级并行度为(m,n)的超标量超流水线处理机上,连续执行N条指令所需要的时间为:
T(m,n)=(k+ )Dt
其中,k是指令流水线的时钟周期数,而不是流水线级数。上式中的第一项是执行开始m条指令所需要的时间,第二项是执行其余N-m条指令所需要的时间,这时,每一个时钟周期执行完成m
n条指令,也就是每一个流水线周期执行完成n条指令。
超标量超流水线处理机相对于单流水线标量处理机的加速比为:
S(m,n)=
当执行的指令条数N→∞时,在理想情况下,超标量超流水线处理机相对于单流水线普通标量处理机的加速比的最大值为:
S(m,n)MAX=m n
图5.63给出超标量处理机、超流水线处理机和超标量超流水线处理机相对于单流水线普通标量处理机的性能曲线。横坐标是三种处理机的指令级并行度。在前面,曾经用(m,n)来表示指令级并行度,而在图5.34中用m与n的乘积m
n表示指令级并行度。纵坐标给出三种处理机的相对性能,也可以认为是三种处理机相对于单流水线普通标量处理机的实际加速比,或者认为是这三种处理机所能达到的实际指令级并行度。实际上,也可以这样来理解图5.63中的曲线,横坐标表示处理机的设计指令级并行度,或最大指令级并行度,而纵坐标表示处理机所能达到的实际指令级并行度。
图5.63 三种指令级并行处理机的相对性能
从图5.63中,可以得出如下有关结论:
第一,超标量处理机的相对性能最高,其次是超标量超流水线处理机,超流水线处理机的相对性能最低,主要原因如下:
1、超标量处理机在每个时钟周期的一开始就同时发射多条指令,而超流水线处理机则要把一个时钟周期平均分成多个流水线周期,每个流水线周期发射一条指令;因此,超流水线处理机的启动延迟比超标量处理机大。
2、条件转移造成的损失,超流水线处理机要比超标量处理机大。
3、在指令执行过程中的每一个流水段,超标量处理机都重复设置有多个相同的指令执行部件,而超流水线处理机只是把同一个指令执行部件分解为多个流水级,因此,超标量处理机指令执行部件的冲突要比超流水线处理机小。
第二,当横坐标给出的理想指令级并行度比较低时,处理机实际指令级并行度的提高比较快,但是,当理想指令级并行度进一步增加时,处理机实际指令级并行度提高的速度越来越慢。因此,在实际设计超标量、超流水线、超标量超流水线处理机的指令级并行度时要适当,否则,有可能造成花费了大量的硬件,但实际上处理机所能达到的指令级并行度并不高。目前,一般认为,m和n都不要超过4。
第三,一个特定程序由于受到本身的数据相关和控制相关的限制,它的指令级并行度的最大值是确定的。这个最大值是由程序自身的语义决定的,与这个程序运行在那一种处理机上无关。因此,图5.63中的三条曲线,对于某一个特定的程序,最终都要收拢到同一个点上。当然,对于各个不同程序,这个收拢点的位置也是不同的。
一个程序能够达到的实际指令级并行度还与所采用的调度算法有关。目前,国际上已经提出了多种开发指令级并行性的优化调度算法,对于没有条件转移操作,没有输入输出,没有程序调用和程序中断,单入口单出口的基本块程序,实现最优调度并不十分困难。但是,对于一般程序,要充分开发程序中的指令级并行性,实现最优调度非常复杂。已经证明,这是一个NP完全问题。另外,实现最优调度所需要的代价很大,包括硬件代价和软件代价,通常需要编译器和硬件的结合才能获得比较好的调度效果。目前,开发程序指令级并行性的许多优化调度算法及编译技术还在进一步研究中。