简答题
为了改进由于条件转移指令引起的流水线断续现象、减少条件转移指令造成的执行部件停顿时间,一般有哪几种措施?
正确答案
A.猜测法。指令部件发现条件转移指令后,在等待执行部件执行完指令队列中的指令并产生条件码后的这一段时间里,指令部件仍按固定的方向继续预取指令,或者按转移成功的方向预取,或者按转移不成功的方向预取。等到产生条件码后,如果同猜测的转移方向一致,指令缓冲寄存器组中预先取出的指令可以用,流水线停顿的时间可以缩短。如果未猜对,则指令缓冲寄存器组中的指令和已做的工作全部作废,重新按另一个方向读取指令,然后开始分析。这时流水线损失的时间仍较长。
B.预取转移目标。在发现条件转移指令后,同时向两个分支方向预取指令。即除了继续按原来方向预取指令外,还按转移成功方向预取指令,最后根据真正的方向取其中一个分支的指令继续运行,有的还可以对于原来分支内指令进行带条件执行(即译码、取数、运算,但不送结果)进一步提高转移指令效率
C.加快和提前形成条件码,有的指令的条件码并不一定要等执行完毕得到运算结果后才能形成。
D.推迟转移。在编译一个程序时,编译程序自动地调整条件转移指令的位置,把条件转移指令从原来的位置向后移一条或若干条,而把无关指令先运行,这样作可以改进流水线的效率,不影响结果。一般可采用以下三种调度方法:A.将转移指令前的那条指令调度到延迟槽中;B.将转移目标处的那条指令调度到延迟槽中;C.将转移不发生时该执行的那条指令调度到延迟槽中。
E.加快短循环程序的处理。循环是一种特殊的条件转移,它通常是按循环计数器内内容是否为0来判断是否已达到应有的循环次数,决定是否需要“向后”转移。短循环程序是指循环段的指令数目少于(或等于)指令缓冲寄存器组中可存放的指令数时的循环程序段。如果在执行这种短循环时,能把整个短循环程序段放在指令缓冲寄存器组中,让指令部件停止预取新的指令,重复使用这段短循环程序,就可减少访问主存次序,提高机器的效率。