转移猜测

转移猜测

转移指令的控制相关

以单发射为例:

  • 如果转移指令计算下一条指令地址在EX阶段计算,下一条指 令等2拍

  • 如果使用专门的地址运算部件把地址计算提前到译码阶段可以少等一拍

  • 使用一个delay slot可以不用等待

​ 但是多发射情况下延迟槽成为需要专门照顾的负担

转移指令对性能的影响

第10级产生结果,如果等待,前9级流水线stall-》4*9=36个气泡。总容量是:36+8(8是执行的8条指令,因为每8条遇到一个转移指令 )

如何减少控制相关

延迟槽与局限性

延迟槽局限性

循环展开

会造成代码膨胀

循环展开后数据相关又分为循环内相关和循环间相关。循环内相关导致一个循环体内的多 条指令不能并行执行,循环间相关 导致多个循环体不能并行执行。

软流水

新循环体的每个操作来自不同的循环体, 以分开数据相关的指令,相当于软件的 Tomasulo算法

符号级循环展开,比真正循环展开代码开销小,不会造成代码膨胀。

硬件转移预测

基本思想

精确例外的难点: 如何识别流水线中的指令哪些需要取消,哪些不要取消

例外取消一般在提交时,取消所有后续指令但是转移取消一般在执行后,只取消部分指令

预测思路:

局部转移预测

独立考虑单个循环的历史记录,寻找其中的重复性规律, 并根据该规律预测未来的转移行为 • 对于重复性特征明显的转移指令(如循环)效果好

bht

一位BHT

采用两位BHT(branch history table)

BHT