第五章 标量处理机

  方法二,转移目标地址缓冲栈

  用一个小容量的高速缓冲栈保存最近执行的k条转移指令的"转移历史表"和转移目标地址,如图5.36所示。"转移指令地址"字段采用全相联方式访问。当程序中执行到一条转移指令时,把当前指令地址与转移目标缓冲栈中的所有转移指令地址进行比较;如果发现有相等的,则根据同一行中的"转移历史表"所记录的历史信息预测本次转移的方向,同时用转移目标地址预取指令。在实际转移条件形成之后,可以根据某一种规则修改"转移历史表"

  方法三,转移目标指令缓冲栈

  当转移指令在指令分析部件中译码时,转移不成功方向上的指令已经被预取到指令缓冲栈中,或者已经存放在指令Cache中,为了能够在转移成功方向上也预取一部分指令,可以把图5.36中的转移目标地址部分改为存放转移目标地址之后的n条指令。设置转移目标指令缓冲栈的转移预测方法如图5.37所示,它的工作原理,预测转移方向的规则和修改"转移历史表"的方法与方法二相同。

  动态转移预测的方法有很多种,预测的准确性除了与程序本身的特性有关之外,还与记录的历史信息的复杂程度有关。一般来说,记录的历史信息愈复杂,其预测的准确性也愈高,当然,所需要的硬件代价也愈大。