【体系结构】转移预测器设计与比较

本文探讨了不同类型的分支预测器,包括[10,2]关联预测器、Tournament预测器和分支历史表预测器。[10,2]预测器利用10位全局历史记录进行预测,而Tournament预测器结合全局和局部预测器,通过选择器决定使用哪个预测结果。分支历史表预测器则基于更长的历史记录。各预测器的硬件需求和状态转移情况也进行了详细描述。" 136916361,917800,Go语言常量与枚举深入解析,"['golang', 'go从入门到精通', '常量', '枚举']
摘要由CSDN通过智能技术生成

关联预测器

一个[m,n]预测器表示使用前m个分支行为去从2^m个分支预测中进行选择,每一个预测是对应于单个分支的n位预测器。这种相关分支预测器的吸引人之处,即在于它与两位预测器相比可以取得更高的预测率,并且只需要少量的额外硬件支持。其硬件的简单性表现在:最近m个分支的全局历史记录可以记录在一个m位移位寄存器中,每一位记录着该分支是被执行还是未被执行。对分支预测缓冲站的访问可由分支地址的低位拼接上m位全局历史记录而得到。以下是一个[2,2]预测器及如何访问预测器的例子。


下面具体实现一个[10,2]的关联预测器

[10,2]关联预测器表示使用前10个分支行为去从2^10个分支预测中进行选择,每一个预测是对应于单个分支的2位预测器。最近10个分支的全局历史可以记录在一个10位移位寄存器中,每一位记录着该分支是被执行还是未被执行。实验要求限制30K空间,即2^10*2*分支选择的入口数目=30K,得到分支选择的入口数目是15,为方便编程,近似使用16bit入口数目,即用低4位地址作为入口地址。于是,对分支预测缓冲站可由分支地址的低4位拼接上10位全局历史记录而得到。[10,2]关联预测器设计如下图所示。


2位预测期可以表示4种状态,计数器在分支执行时加1,不执行时减1;计数器在00或11时处于饱和状态。2位预测器状态转移情况如下图。


所设计的[10,2]关联预测器大小为: 2^10×2 ×16=32K bit。

Tournament预测器

Tournament预测器使用两个预测期:一个基于全局信息的Global Predictor,以及一个基于局部信息的Local Predictor,并使用一个选择器在局部预测器与全局预测器中做出选择。具体设计如下:


全局预测器:使用最后12个分支跳转情况进行索引,即全局预测器也有2^12=4K个入口,每个入口都是一个标准的两位预测器。
局部预测器:设计为两层,上面一层是一个局部历史记录,使用指令地址的低10位进行地址索引,即有2^10=1K个入口,每个入口10位,分别对应这个入口最近的10个分支,即最近10次分支的跳转情况,这种10位历史记录允许对10个分支进行记录和预测,从局部历史记录选择出的入口对一个1K的入口表进行索引,这些入口由3位计数器构成,以提供本地预测。
选择器:使用分支局部地址的低12位分支局部地址索引,即有2^12=4K个选择器,每个索引得到一个两位计数器,用来选择使用局部预测器还是使用全局预测器的预测结果。在设计时默认使用局部预测器,当两个预测器都正确或都不正确时,不改变计数器;当全局预测器正确

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值