TAGE分支预测是综合O-GEHL分支预测和PPM-like分支预测所设计的分支预测算法。


O-GEHL(Optimized GEometric History Length) branch prediction:

是在第一届CBP提出的算法,并且取得了最佳实践奖(best practice award),64Kbits的O-GEHL预测器准确率比其他在第一届CBP提出的预测器更高或相等。特别的,比在这一届CBP提出的其他唯一完备的预测器------PPM-like预测器更出色。

采用M个table, 各个表是通过PC和不同的历史(或路径)长度哈希索引的signed counter。预测结果由各个表预测结果通过加法树给出。

历史长度关系:

加法:

阈值:, 初始值为M

最终预测结果由 的关系,以及一些其他参数综合给出

对于阈值,有adaptative threshold fitting算法进行调整

对于历史长度,有dynamic history length fitting算法进行调整

例如M = 8, 历史长度会算11项,即T8,T9,T10备用

根据T7的path aliasing程度选择T2,T4,T6采用长历史长度还是短历史长度

混淆程度高则采用短历史长度,低就用高历史长度

由于TAGE已经不涉及到加法树以及O-GEHL的更新策略,我并没有详细阅读论文其他部分。

该部分参考自论文:

A. Seznec. Analysis of the o-gehl branch predictor. In Proceedings of the 32nd Annual International Symposium on Computer Architecture,June 2005.


PPM branch prediction:

PPM-like在第一届CBP取得了第五名的成绩。

PPM设计起初是用于数据压缩,之后才用于分支预测。

最左边的是一个bimodal predictor,记作bank 0。有4K项,是由PC的低12位索引的。每一项包含一个3bit的饱和计数器和一个1bit的m(代表meta-predictor)。所以该部分占用4K * (3+1) = 16K bits。

4个其他的bank是由PC和一些全局历史bits索引的:bank 1,2,3,4分别由10,20,40,80最近全局历史长度索引。每个bank有1K项,每一项由3bit饱和计数器ctr,8bit的tag,和1bit的u(useful entry)组成。即占用4 * 1K * (3+8+1) = 48K bits。

所以图示预测器占用64Kbits的空间。

在获取预测时,五个bank同时运行,找到各个bank中的对应项,对于bank0之外的bank,取对应项的tag跟当前branch pc与当前bank所采用的历史长度哈希出的8bit进行对比,相同则算命中,当前bank预测taken。最终的prediction 采用命中的bank中最高历史长度的预测结果,若都未命中,则采用bank0的预测结果。

更新策略:

当指令执行完毕,我们将会获取到预测来自bank X,以及预测结果是否正确。

更新3-bit counter: 只更新bank X中命中的那一项的ctr,预测正确+1,预测错误-1,边界则不变(饱和计数器)

分配新项:

若预测正确则不必分配新项。

预测错误取bank X+1 到 bank 4的对应项的u bit, 替换其中u=0的项,若无,从中任意选取一项替换。

填充规则:tag填充该bank哈希出的8bit tag;u填充0;ctr填充100或011,选择规则如下:

读取bank0对应项的m,

若为1,看bank X预测结果是taken还是not taken,taken填充100,not taken填充011。

若为0,看bank 0预测结果是taken还是not taken,taken填充100,not taken填充011。

更新u和m: 只更新bank X的对应项的u和bank 0的对应项的m。预测结果正确则都置为1,错误则都置为0。

论文参考自:

P. Michaud, A ppm-like, tag-based predictor. Journal of Instruction Level Parallelism(http://www.jilp.org/vo17), April 2005

TAGE(TAgged GEometric history length branch prediction:

TAGE分支预测器直接源于PPM-like基于tag的分支预测器。由base predictor T0,和一序列(partially)tagged predictor components Ti组成,tagged predictor components Ti所采用索引历史长度是不同的,成几何长度关系,例如

base predictor T0就是简单的PC索引的2-bit饱和计数器。

tagged predictor components Ti 由3 bit的signed ctr,tag,以及2bit的unsigned useful counter u组成。

预测计算方法跟PPM-like相似,若tag命中则取其中历史长度最长的component的预测结果,若未命中,则取base predictor的预测结果。

一些有用的概念:

provider component: tag命中则取其中历史长度最长的conponent,若无,即base predictor。

alternate component: 次一级tag命中的component,若无,即base predictor。

更新策略:

更新useful counter u:

if provider pred != altpred,  更新provider component中对应项的u(即预测正确+1,预测错误-1,在边界则不变)

此外,周期性重置所有的u,先重置高位,再重置低位。文中周期为256K branch。

预测正确时:更新provider component的ctr

预测错误时:

1. 更新provider component的ctr

2. 分配新项(至多分配一项):

若provider component 为 Ti,

读T(i+1)至T(M-1)的对应项的u,若有u = 0,替换其中最低历史长度的entry。若无,这些u = u -1。

填充的ctr为weak correct, u为0。

论文参考自:

A case for (partially) TAgged GEometric history length branch preddiction

2020 第一周工作总结:TAGE分支预测器算法相关推荐

  1. 第一周工作总结及计划表

    部    门 理工大学 姓    名 张三 入 职 时 间 2.17 本周已完成工作内容及总结 1.进行了c语言的课程设计的三道题万年历,total求和和小型商品管理系统 2.自学Java,目前掌握了 ...

  2. 实验室第一周工作周报

     姓   名 张艳超 学   号 11303080137 入 职 时 间 2014.9.16 本周已完成工作内容及总结 本周已完成工作: 这周是实验室实习的第一周,大部分时间都在做课程设计和复习基 ...

  3. 2016第一周工作日志

    按照整的一周来说,这是2016年的第一周,大那是这个第一周并不好玩儿,每天纠结于树和图,但是想通了会觉得树和图其实都不难,但是,难点在于如何去用,好吧,着个应该也不算是想通了.器是在代码的开发中使用到 ...

  4. 第一周工作周报-刘婉

    部门 重庆理工大学 姓名 刘婉 入职时间 1.23 本周已完成工作内容及总结 1.              完成了用C语言编写24点游戏.源程序简单处理器.杂志订   阅管理系统. 2.       ...

  5. 项目实训第一周工作(3)

    项目实训题目:饮食健康管理系统设计与实现 我的工作:数据清洗 具体工作事项:数据清洗:错误数据处理:图片大小归一化:图片存放位置归并:与数据库同学沟通:不对应(冗余或缺失)图片的删除与处理等. 本博客 ...

  6. 第一周工作总结——BLE: PHY MAC

    1. 总述 苹果的IBeacon协议基于蓝牙4.0协议中的BLE实现,因此在分析IBeacon之前,适当学习BLE协议是必要的,其中最重要的就是BLE的PHY层和MAC层协议.在PHY层,BLE采用了 ...

  7. 时序图 分支_BOOM微架构学习(1)——取指单元与分支预测

    之前在RISC-V的"Demo"级项目--Rocket-chip一文中曾经简介过BOOM处理器的流水线,这次我们开始一个系列,深入学习一下BOOM的微架构,这样对于乱序执行的超标量 ...

  8. Cachegrind:缓存和分支预测分析器

    目录 5.1.概观5.2.使用Cachegrind,cg_annotate和cg_merge 5.2.1.运行Cachegrind5.2.2.输出文件5.2.3.运行cg_annotate5.2.4. ...

  9. Pentium II Pentium III架构/微架构/流水线 (2) - P6详解 - 前端(指令预取/译码/动态分支预测静态分支预测)

    Pentium II & III Instruction Pipeline Details Front-End Pipeline Details Pentium II & III处理器 ...

  10. 针对间接分支的比特级感知预测器BLBP “Bit-level Perceptron Prediction for Indirect Branches”(2019 ISCA)

    间接分支预测器:ITTAGE [3].基于VPC的分支预测器.TAP预测器 [4].call/return 堆栈预测过程返回目标地址 [2]. 背景:面向对象编程中存在许多间接分支指令.多态性(pol ...

最新文章

  1. Eclipse快捷键详细解析
  2. 电脑磁盘空间不足怎么办_IT干货 丨 电脑C盘存储空间不足怎么办?
  3. GSM —— 商业蜂窝通信系统
  4. 【生活】 戴尔XPS 插上耳机之后,说话没声音,麦克风失效 window10 系统
  5. python数据导出excel_python 数据生成excel导出(xlwt,wlsxwrite)代码实例
  6. JavaScript prototype constructor __proto__
  7. Weblogic EJB 学习笔记(2)精
  8. 前端2018年12月9日 前端开发路上的小白心得--励志当个领路人
  9. php mysql异常捕获_PHP中try{}catch{}的用法及异常处理.对数据库的事物支持
  10. go gorm 关联模式_Beego 结合 GORM 操作 Mysql 数据库
  11. 产品升级|1-2月合刊:多款产品来袭
  12. HDFView的闪退问题
  13. php root进程保存文件夹,thinkphp5日志文件夹及文件权限问题的解决
  14. UWB 三边测量定位原理及最小二乘法和三角形质心法的应用—通俗解析
  15. HTML,多行文本输入框textarea
  16. ips细胞技术治疗尿毒症最新进展
  17. C1任务-修改游戏存档
  18. 视频编辑软件编辑星海外英文网站上线
  19. python前端——HTML超文本标记语言、CSS层叠样式表
  20. PTA 1100 校庆(Python3)

热门文章

  1. excel 数组公式
  2. 利用js文件获取视频文件详细信息 如帧速率、总比特率等
  3. 【XGantt教程】为甘特图分组添加舒适排序选项的三个步骤
  4. 电脑屏幕亮度调节器-护目镜
  5. Unity Rect.OverLaps(Rect other) 改进
  6. jQuery-对联广告
  7. Abbyy FineReader PDF转word不乱码
  8. 解决vue项目运行出现warnings potentially fixable with the `--fix` option.的报错问题
  9. Windows Server 2003 AGP纹理加速无法打开问题可行的解决方案
  10. IoT产品安全基线(一)硬件安全