转移猜测
转移猜测
转移指令的控制相关
以单发射为例:
如果转移指令计算下一条指令地址在EX阶段计算,下一条指 令等2拍
如果使用专门的地址运算部件把地址计算提前到
译码阶段
可以少等一拍使用一个delay slot可以不用等待
但是多发射情况下延迟槽成为需要专门照顾的负担
转移指令对性能的影响
第10级产生结果,如果等待,前9级流水线stall-》4*9=36个气泡。总容量是:36+8(8是执行的8条指令,因为每8条遇到一个转移指令 )
如何减少控制相关
延迟槽与局限性

循环展开
会造成代码膨胀
循环展开后数据相关又分为循环内相关和循环间相关。循环内相关导致一个循环体内的多 条指令不能并行执行,循环间相关 导致多个循环体不能并行执行。
软流水
新循环体的每个操作来自不同的循环体, 以分开数据相关的指令,相当于软件的 Tomasulo算法
符号级循环展开,比真正循环展开代码开销小,不会造成代码膨胀。
硬件转移预测
基本思想
精确例外的难点: 如何识别流水线中的指令哪些需要取消,哪些不要取消
例外取消一般在提交时,取消所有后续指令但是转移取消一般在执行后,只取消部分指令
预测思路:
局部转移预测
独立考虑单个循环的历史记录,寻找其中的重复性规律, 并根据该规律预测未来的转移行为 • 对于重复性特征明显的转移指令(如循环)效果好
bht

采用两位BHT(branch history table)
