第29页,共65页,星期日,2025年,2月5日3.超标量处理机:有两条或两条以上能同时工作的指令流水线先行指令窗口:能够从指令Cache中预取多条指令,能够对窗口内的指令进行数据相关性分析和功能部件冲突检测。例如:Intel公司的i860、i960、Pentium,Motolora公司的MC88110,IBM公司的Power6000,TI公司生产SuperSPARC等操作部件的个数一般多于每个周期发射的指令条数。通常为4个至16个操作部件。超标量处理机的指令级并行度:1<ILP<m第30页,共65页,星期日,2025年,2月5日第31页,共65页,星期日,2025年,2月5日5.5.3多流水线调度顺序发射(in-orderissue)与乱序发射(out-orderissue):指令发射顺序是按照程序中指令排列顺序进行的称为顺序发射顺序完成(in-ordercompletion)与乱序完成(out-ordercompletion):指令完成顺序是按照程序中指令排列顺序进行的称为顺序完成多流水线的调度主要有三种方法:顺序发射顺序完成顺序发射乱序完成乱序发射乱序完成第32页,共65页,星期日,2025年,2月5日以如下6条指令组成的程序为例,说明这三种调度方法I1:LOADR1,A;R1←(A)I2:FADDR2,R1;R2←(R2)+(R1)I3:FMULR3,R4;R3←(R3)×(R4)I4:FADDR4,R5;R4←(R4)+(R5)I5:DECR6;R6←(R6)-1I6:FMULR6,R7;R6←(R6)+(R7)6条指令中有4个数据相关,包括2个写读相关,1个读写相关和1个写写相关。第33页,共65页,星期日,2025年,2月5日1.顺序发射顺序完成共用10个时钟周期完成还有8个空闲的时钟周期第34页,共65页,星期日,2025年,2月5日2.顺序发射乱序完成总的执行时间为9个时钟周期,节省了一个时钟周期。少了5个空闲时钟周期。第35页,共65页,星期日,2025年,2月5日3.乱序发射乱序完成
没有空闲周期,功能部件得到充分利用。总的执行时间为8个周期,节省2个周期。第36页,共65页,星期日,2025年,2月5日5.5.4资源冲突如果操作部件采用流水线结构,发生资源冲突的可能性很小;如果不采用流水线结构,发生资源冲突的可能性就比较大。下面是一个由4条指令的程序例子: I1:FADDR0,R1;R0←(R0)+(R1) I2:FMULR2,R3;R2←(R2)×(R3) I3:FADDR4,R5;R4←(R4)+(R5) I4:FMULR6,R7;R6←(R6)+(R7)第37页,共65页,星期日,2025年,2月5日操作部件不采用流水线:做完4条指令总共用了11个周期,有5个空闲周期。第38页,共65页,星期日,2025年,2月5日操作部件采用流水线:做完4条指令共用8个周期,少用3个周期。第39页,共65页,星期日,2025年,2月5日操作部件采用流水线结构的原因分析假每个周期发射m条指令,操作部件的延迟时间为k个周期,如果操作部件不采用流水线结构,则使用同一个操作部件的两条指令应该至少相差m×k如果操作部件采用k段流水线结构,则使用同一个操作部件的两条指令只需相差m或m以上指令流水线的段数k一般在4至10之间,每个时钟周期发射的指令条数m在2至4之间。取中间值,k=7,m=3第40页,共65页,星期日,2025年,2月5日为了不发生资源冲突,如果操作部件不采用流水线结构,两条使用同一个功能部件的指令序号必须相差21或21以上。如果操作部件采用流水线结构,两条使用同一个功能部件的指令序号只需要相差3或3以上。因此,在超标量处理机中,操作部件一般要采用流水线结构。如果由于某种原因,操作部件不能采用流水线结构,则必须设置多个相同种类的操作部件第41页,共65页,星期日,2025年,2月5日普通标量处理机,希望相同操作连续出现。只有连续出现相同操作的指令序列时,流水线的效率才能得到充分发挥。超标量处理机则正好相反,希望相同操作不要连续出现。相同操作的指令序列连续出现时,会发生资源冲突;要求相同操作的指令能够相对均匀地分布在程序中。超标