小弟最近研究分支预测方面的东西,看了几篇国外的论文对一些东西还是不理解,网上也很难找到其他的资料。目前对bi-mode和yags这两个分支预测器有几个疑问,还望知道的大侠指点一二。
1.BI-MODE分支预测中选择模式历史表(choice PHT)和有向模式历史表(direction PHT)在结构上有什么区别?
2.BI-MODE分支预测中有向模式历史表(direction PHT)分为跳转(direction PHT T)和不跳转(direction PHT NT)两部分,请问这两部分是不是采用的静态预测方式,即有向跳转模式历史表(direction PHT T)始终预测跳转,有向不跳转模式历史表(direction PHT NT)始终预测不跳转?
3.选择模式历史表(choice PHT)是如何从(direction PHT T)和(direction PHT NT)中选择的?
4.YAGS分支预测器中的跳转缓存(T cache/NT cache)分为标签(tag)和2BC两部分请问这两部分具体是什么?
方向PHT的两个部分被GHR和PC异或以后的值索引
选择PHT是由PC索引的
区别就很明显了吧,方向PHT是一个两级的预测器,包含一组PHT表,选择PHT包含一个PHT表
第二个问题,我的理解是不是静态预测,都是在不断更新的,只是根据更新原则,渐渐的两个表就会一个趋向于预测跳转,一个预测不跳转
第三个问题,选择模式历史表(choice PHT)结果为跳转就是选择direction PHT T ,否则direction PHT NT