• 内容讲解

为了进一步提高指令流水线的性能,可以设法在一个时钟周期内启动多条指令,使得每个周期平均能完成多条指令,这样就构成了多重指令启动(Multi-Launch,也称多发射)的流水方式。

多重指令启动的方法有两种:动态多重指令启动和静态多重指令启动。

1.动态多重指令启动

动态多重指令启动方法是指由硬件在每个时钟周期内启动可变数量的指令,这些指令可以采用静态指令调度,也可以采用动态指令调度,常见的技术有超标量技术、超流水线技术。

1)超标量技术

超标量(Superscalar)技术就是在每个时钟周期内同时并发多条独立指令,即将两条或两条以上的指令并行编译、执行。

超标量处理器支持指令级并行,每个时钟周期可以发射多条指令(2-4条居多),这样可以使得CPU的IPC(Instruction Per Clock,每时钟指令数)> 1,从而提高CPU的处理速度。

超标量流水计算机具有两条或两条以上指令流水线,当流水线满载时,每一个时钟周期可以执行2条以上指令。采用超标量流水线工作方式,机器速度更高,但硬件也更为复杂。

2)超流水线技术

超流水线(Superpipeline)技术是使指令周期的各个子过程内部的流水线进一步细化,使其工作速度加倍,从而在一个时钟周期中执行两条或更多条指令。

超流水线技术通过将一些流水线寄存器插入到流水线各个过程段中,对流水线再分,使每段的长度近似相等,以便现有的硬件在每个周期内使用多次,即每个超流水线段都以数倍于基本时钟频率的速度运行。

在超流水结构中,由于时钟频率提高了,而功能部件的速度不变,实际上使得流水线的周期数更多,这样会使得指令相关性对流水线性能的影响更大,从而对分支预测等部件提出更高的要求,而且由于并行执行的指令数量更多,要求具有更多的功能部件或者功能部件的流水速度更高。

图5-28是四种标量流水技术执行指令的时空比较。

523.gif

从图中可见,

①在一般标量流水中,每个时钟周期启动1条指令,如图5-28(a)所示;

②在超标量流水中,每个时钟周期启动2条指令,如图5-28(b)所示;

③在超流水技术中,每个时钟周期启动2次,每次1条指令,如图5-28(c)所示;

④在超标量超流水技术中,每个时钟周期启动2次,每次启动2条指令,每个周期共启动4条指令,如图5-28(d)所示。

2.静态多重指令启动

静态多重指令启动方法是指每次启动固定数量的指令,这些指令由编译程序组合成一条超长指令(或指令包),常见的技术有超长指令字技术。

超长指令字(Very Long Instruction Word,VLIW)技术将多条指令放入一个指令字,可以有效提高CPU各个功能部件的使用效率,提高程序性能。

首先由编译程序在编译时挖掘出指令间潜在的并行性,然后把多条能并行执行的指令组合成一条具有多个操作段的超长指令,再由这条超长指令的超长指令字来控制机器中多个独立工作的部件,每个操作段控制一个部件,相当于同时执行多条指令。

VLIW计算机使用多个独立的功能部件,所有功能部件由同一个机器时钟来驱动,一般具有以下特点:

(1)单一控制流。机器中只有一个程序计数器、一个控制单元,每个时钟周期启动一条VLIW指令;

(2)指令被划分为许多字段,每段控制一个特定的功能部件;

(3)机器中设置大量的数据通路和功能部件,功能部件的操作可采用流水技术来进一步提高机器性能,每个操作的执行周期数是已知的,编译器在对操作进行调度时已经考虑了可能出现的数据相关和资源冲突,控制硬件比较简单。

在动态多重指令启动方式下,随着启动数量的增加,确定多个指令是否可同时启动的硬件的复杂性越来越大,而VLIW则可以减少实现多重启动处理所需要的硬件数量。VLIW使用多个独立的功能部件完成多个操作,并将多个操作命令包装在一个很长的指令中,将选择同时启动的多个操作的工作交给了编译程序,因此,提高VLIW计算机性能的关键在于其编译器。