5.4.2 单发射与多发射
单发射处理机的指令执行时空图如图5.48(a)所示,它在一个时钟周期内只从存储器中取出一条指令,并且只对一条指令进行译码,只执行一条指令,只写一个运算结果。
在单发射处理机中,取指令部件和指令译码部件只各设置一套,而操作部件可以只设置一个多功能操作部件,也可以设置多个独立的操作部件。例如,定点算术逻辑部件ALU、取数存数部件LSU、浮点加法部件FAD、乘除法部件MDU等。一个有4个操作部件组成的单发射处理机如图5.49(a)所示。单发射处理机在指令一级通常采用流水线结构;而在操作部件中,有的机器采用流水线结构,也有的机器不采用流水线结构。
单发射处理机的设计目标是每个时钟周期平均执行一条指令,即它的指令级并行度ILP的期望值1。如果从表5.2中看,相当于m=1。实际上,它就是一台有k段流水线的普通标量处理机。由于数据相关、条件转移和资源冲突等原因,实际的ILP不可能达到1。通过优化编译器对指令序列进行重组(recorganizer),以及采用软件与硬件相结合的方法处理数据相关、条件转移和资源冲突等,可以使ILP接近于1。但是,单发射处理机的ILP不可能大于1。
图5.48 单发射与多发射处理机的指令执行时空图
多发射处理机在一个基本时钟周期内同时从指令Cache中读出多条指令,同时对多条指令进行译码。一个同时发射三条指令的多发射处理机的指令执行时空图如图5.48(b)所示。为了实现在一个时钟周期同时多发射条指令,通常需要有多个取指令部件,多个指令译码部件和多个写结果部件。图6.53(b)是一个同时发射两条指令的多发射处理机的指令流水线。两个取指令部件同时从指令Cache中取出两条指令,两个指令译码部件同时对两条指令进行译码,指令的译码结果分别送往4个操作部件执行。