2020 第一周工作总结:TAGE分支预测器算法
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分支预测器算法相关推荐
- 第一周工作总结及计划表
部 门 理工大学 姓 名 张三 入 职 时 间 2.17 本周已完成工作内容及总结 1.进行了c语言的课程设计的三道题万年历,total求和和小型商品管理系统 2.自学Java,目前掌握了 ...
- 实验室第一周工作周报
姓 名 张艳超 学 号 11303080137 入 职 时 间 2014.9.16 本周已完成工作内容及总结 本周已完成工作: 这周是实验室实习的第一周,大部分时间都在做课程设计和复习基 ...
- 2016第一周工作日志
按照整的一周来说,这是2016年的第一周,大那是这个第一周并不好玩儿,每天纠结于树和图,但是想通了会觉得树和图其实都不难,但是,难点在于如何去用,好吧,着个应该也不算是想通了.器是在代码的开发中使用到 ...
- 第一周工作周报-刘婉
部门 重庆理工大学 姓名 刘婉 入职时间 1.23 本周已完成工作内容及总结 1. 完成了用C语言编写24点游戏.源程序简单处理器.杂志订 阅管理系统. 2. ...
- 项目实训第一周工作(3)
项目实训题目:饮食健康管理系统设计与实现 我的工作:数据清洗 具体工作事项:数据清洗:错误数据处理:图片大小归一化:图片存放位置归并:与数据库同学沟通:不对应(冗余或缺失)图片的删除与处理等. 本博客 ...
- 第一周工作总结——BLE: PHY MAC
1. 总述 苹果的IBeacon协议基于蓝牙4.0协议中的BLE实现,因此在分析IBeacon之前,适当学习BLE协议是必要的,其中最重要的就是BLE的PHY层和MAC层协议.在PHY层,BLE采用了 ...
- 时序图 分支_BOOM微架构学习(1)——取指单元与分支预测
之前在RISC-V的"Demo"级项目--Rocket-chip一文中曾经简介过BOOM处理器的流水线,这次我们开始一个系列,深入学习一下BOOM的微架构,这样对于乱序执行的超标量 ...
- Cachegrind:缓存和分支预测分析器
目录 5.1.概观5.2.使用Cachegrind,cg_annotate和cg_merge 5.2.1.运行Cachegrind5.2.2.输出文件5.2.3.运行cg_annotate5.2.4. ...
- Pentium II Pentium III架构/微架构/流水线 (2) - P6详解 - 前端(指令预取/译码/动态分支预测静态分支预测)
Pentium II & III Instruction Pipeline Details Front-End Pipeline Details Pentium II & III处理器 ...
- 针对间接分支的比特级感知预测器BLBP “Bit-level Perceptron Prediction for Indirect Branches”(2019 ISCA)
间接分支预测器:ITTAGE [3].基于VPC的分支预测器.TAP预测器 [4].call/return 堆栈预测过程返回目标地址 [2]. 背景:面向对象编程中存在许多间接分支指令.多态性(pol ...
最新文章
- Eclipse快捷键详细解析
- 电脑磁盘空间不足怎么办_IT干货 丨 电脑C盘存储空间不足怎么办?
- GSM —— 商业蜂窝通信系统
- 【生活】 戴尔XPS 插上耳机之后,说话没声音,麦克风失效 window10 系统
- python数据导出excel_python 数据生成excel导出(xlwt,wlsxwrite)代码实例
- JavaScript prototype constructor __proto__
- Weblogic EJB 学习笔记(2)精
- 前端2018年12月9日 前端开发路上的小白心得--励志当个领路人
- php mysql异常捕获_PHP中try{}catch{}的用法及异常处理.对数据库的事物支持
- go gorm 关联模式_Beego 结合 GORM 操作 Mysql 数据库
- 产品升级|1-2月合刊:多款产品来袭
- HDFView的闪退问题
- php root进程保存文件夹,thinkphp5日志文件夹及文件权限问题的解决
- UWB 三边测量定位原理及最小二乘法和三角形质心法的应用—通俗解析
- HTML,多行文本输入框textarea
- ips细胞技术治疗尿毒症最新进展
- C1任务-修改游戏存档
- 视频编辑软件编辑星海外英文网站上线
- python前端——HTML超文本标记语言、CSS层叠样式表
- PTA 1100 校庆(Python3)
热门文章
- excel 数组公式
- 利用js文件获取视频文件详细信息 如帧速率、总比特率等
- 【XGantt教程】为甘特图分组添加舒适排序选项的三个步骤
- 电脑屏幕亮度调节器-护目镜
- Unity Rect.OverLaps(Rect other) 改进
- jQuery-对联广告
- Abbyy FineReader PDF转word不乱码
- 解决vue项目运行出现warnings potentially fixable with the `--fix` option.的报错问题
- Windows Server 2003 AGP纹理加速无法打开问题可行的解决方案
- IoT产品安全基线(一)硬件安全