多发射处理机在一个基本时钟周期内同时从指令Cache中读出多条指令,同时对多条指令进行译码。一个同时发射三条指令的多发射处理机的指令执行时空图如图8.33(b)所示。为了实现在一个时钟周期同时多发射条指令,通常需要有多个取指令部件,多个指令译码部件和多个写结果部件。图8.34(b)是一个同时发射两条指令的多发射处理机的指令流水线。两个取指令部件同时从指令Cache中取出两条指令,两个指令译码部件同时对两条指令进行译码,指令的译码结果分别送往4个操作部件执行。
  通常,把一个时钟周期内能够同时发射多条指令的处理机称为超标量处理机。其最基本的要求是必须有两套或两条以上完整的指令执行部件。图8.34(b)是典型超标量处理机的指令流水线,为了能够在一个时钟周期内同时发射多条指令,超标量处理机必须有两条或两条以上能够同时工作的指令流水线。
  高性能超标量处理机通常还有一个先行指令窗口,这个先行指令窗口能够从指令Cache中预取多条指令,并且能够对这些指令进行数据相关性分析和功能部件冲突的检测。超标量处理机的基本的要求是在一个时钟周期内能够同时发射两条或两条以上指令。这里应当特别强调同时发射,因为在一个时钟周期内分时发射多条指令的不属于超标量处理机,而是将要在下面介绍的超流水线处理机。

  目前,在多数超标量处理机中,每个时钟周期发射两条指令,通常不超过4条。由于存在有数据相关和条件转移等问题,采用一般的指令调度技术,理论上的最佳情况是每个时钟周期发射3条指令。对大量程序的模拟统计结果也表明,每个时钟周期发射2至4条指令比较合理。例如,Intel公司的i860、i960、Pentium处理机,Motolora公司的MC88110处理机,IBM公司的Power 6000处理机等每个时钟周期都发射两条指令,美国德州仪器公司(TI)为SUN公司生产SuperSPARC处理机每个时钟周期发射三条指令。
图8.34 单发射与多发射处理机的指令流水线


 

  在有些超标量处理机中,操作部件的个数要多于每个周期发射的指令条数。例如,在许多每个时钟周期发射两条指令的超标量处理机中,通常都有4个或4个以上独立的操作部件,在有的超标量处理机中有16个独立的操作部件。与单发射处理机相同,多发射处理机的操作部件可以采用流水线结构,也可以不采用流水线结构,每个操作部件的时间延迟可以多于一个时钟周期。
  在一个时钟周期内发射多条指令的实现方法可以有多种,使用最多的是在一个存储字中安排两条指令。目前,先进微处理机的字长多数是64位,而一条指令的长度一般只有32位或更短,因此,在一个存储字中可以安排两条指令或两条以上指令。即使在32位处理机中,虽然主存储器的字长是32位,但处理机芯片内的指令Cache的字长可以是64位,或者更长。