问答题
无条件转移指令的执行为什么要提前到流水线开始的指令分析阶段?为什么要对条件转移指令的转移方向进行预测?有哪些转移预测的方法?
【正确答案】转移指令对流水线的性能影响很大,如果转移发生在流水线即将结束的执行阶段,那么对于那些跟在转移指令后面进入流水线提前执行的指令而言,将会因为程序发生了转移,它们已不是将要执行的指令,必须将它们在流水线中的执行结果(中间结果)全部作废。为了解决这个问题必须将转移指令的执行提前到流水线开始的指令分析阶段,只有这样才能避免上述情况的发生。
但这种方法往往解决不了条件转移指令的执行问题,因为在流水线中,转移条件常常因前面产生条件的指令还没有执行完毕而无法确定。为了解决这个问题,必须在流水线开始的指令分析阶段对条件转移指令的转移方向进行预测,即估计它是否会发生转移。转移预测的方法主要有以下两种。
(1)静态预测:根据条件转移指令自身的特点作出推测。
(2)动态预测:根据曾经发生转移的历史记录来判断条件转移是否会发生。
【答案解析】