JDS*_*JDS 2 hardware x86 computer-architecture branch-prediction
因此,我理解流水线处理器的分支预测中使用的基本技术 - 例如2位饱和计数器,两级自适应预测器等.
这是我的问题:
1)分支目标预测:为什么这很重要,这里使用的机制是什么?当我想到一个分支时,我认为"bne r2,r3,LABEL"表示如果r2!= r3然后分支到LABEL,这意味着做PC(程序计数器)= PC + LABEL.在这里预测目标有什么神秘之处?你知道它将基于LABEL的编译值.我可能在某种程度上忽略了这一点.
2)为什么程序计数器值本身(例如0x4001000C)或至少其最后几位用作分支预测方案的一部分?我看到了一种方案,其中PC的最后4位连接到(4位)分支历史寄存器,并且该8位值用于访问模式历史表.我认为PC很随意!
感谢您帮助理解这些问题
在这里预测目标有什么神秘之处?你知道它将基于LABEL的编译值.
由于CPU流水线深度和缓存延迟,在获取指令,完全解码以识别分支目标以及能够获取该指令之间需要很多周期.所以你预测目标是为了先发制人地获取下一条指令.
为什么程序计数器值本身(例如0x4001000C),或者至少是它的最后几位,用作分支预测方案的一部分?
因此,PC可以唯一标识特定的分支指令!你怎么去索引分支预测表?