ITTAGE分支预测器 “A 64-Kbytes ITTAGE indirect branch predictor”
ITTAGE:Indirect Target TAgged GEnometric legnth predictor。
provider component:最终提供预测。
ulternate prediction(altpred):provider component发生miss时提供预测。
原文:“We define the provider component as the predictor component that ultimately provides the prediction. We define the alternate prediction altpred as the prediction that would have occurred if there had been a miss on the provider component. If there are tag hits on T2 and T4 and tag misses on T1 and T3,T4 is the provider component and T2 provides altpred.”
预测规则:和TAGE一样,选择tag命中的具有最长历史的组件的预测结果。若没有tag命中则采用默认预测器的预测结果。
The optimization for weak confidence counters:当tag匹配的项的置信度计数器为0时,altpred有时比正常预测更准确。因此在实现中使用一个4-bit计数器(USE ALT ON NA)动态监测这一点。
原文:“Prediction computation summary Therefore the prediction computation algorithm is as follows:
1. Find the longest matching component and the alternate component.
2. if (the confidence counter is non-null ortor and a short path history (limited to 1 bit per USE ALT ON NA is negative) then the provider component provides the prediction else the prediction is provided by the alternate component.”
更新预测器
更新u-bit: 当实际预测正确而altpred不正确时,provider component的u-bit被set。
u-bit重置规则:分配新项时,动态监测在一次错误预测后试图分配新项时成功和失败的次数。该监测由一个8-bit计数器(TICK)表征,当失败的次数超过成功的次数时,计数器饱和,则重置该预测器的所有u-bit。
利用 target locality :在预测器的一项中,目标区域(target field)代表着主要的存储开销。分支目标地址可能比较分散,但所有的 benchmark 中的分支目标区域少于128 256Kbytes。因此,预测器每项中的目标区域(32 bits)被替换位一个区域偏移(Region offset ,18 bits)和一个区域指针(Region pointer,7 bits),从而每项节省了7 bits。此外,还需增加一个128项的目标区域表(region target table)以重构完整的地址,每项包括一个14-bit 的区域地址和一个有用位以进行替换。区域指针用于索引区域表,确定是128个中哪一个256 Kbytes区域,得到14位区域地址,再加上区域偏移量,从而构成完整的地址。
ITTAGE分支预测器 “A 64-Kbytes ITTAGE indirect branch predictor”相关推荐
- 针对间接分支的比特级感知预测器BLBP “Bit-level Perceptron Prediction for Indirect Branches”(2019 ISCA)
间接分支预测器:ITTAGE [3].基于VPC的分支预测器.TAP预测器 [4].call/return 堆栈预测过程返回目标地址 [2]. 背景:面向对象编程中存在许多间接分支指令.多态性(pol ...
- Cachegrind:缓存和分支预测分析器
目录 5.1.概观5.2.使用Cachegrind,cg_annotate和cg_merge 5.2.1.运行Cachegrind5.2.2.输出文件5.2.3.运行cg_annotate5.2.4. ...
- 第四章:动态分支预测
文章目录 一.分支预测 二.算法实现 一.分支预测 1)局部分支预测器: 利用自己过去的跳转状态来进行预测.程序过去执行时分支的信息被存放在一个长度为 2^n 的表中,表中的每一项为 2 bit.该表 ...
- 【linux】Valgrind工具集详解(十四):Cachegrind(缓存和分支预测分析器)
一.概述 Cachegrind,它模拟CPU中的一级缓存I1,Dl和二级缓存,能够精确地指出程序中cache的丢失和命中.如果需要,它还能够为我们提供cache丢失次数,内存引用次数,以及每行代码,每 ...
- 时序图 分支_BOOM微架构学习(1)——取指单元与分支预测
之前在RISC-V的"Demo"级项目--Rocket-chip一文中曾经简介过BOOM处理器的流水线,这次我们开始一个系列,深入学习一下BOOM的微架构,这样对于乱序执行的超标量 ...
- 慌!还不了解Java中的分支预测?!
点击上方"朱小厮的博客",选择"设为星标" 后台回复"1024"获取公众号专属1024GB资料 来源:rrd.me/fLHvf 1.引言 分 ...
- 经典问题之「分支预测」
问题 来源 :stackoverflow 为什么下面代码排序后累加比不排序快? public static void main(String[] args) {// Generate dataint ...
- Pentium 4处理器架构/微架构/流水线 (7) - NetBurst前端详解 - 分支预测
Branch Predication 对于使用深度指令流水线的处理器,分支预测能力至关重要.分支预测使得处理器可以在分支指令决断之前就开始执行(预测的)分支路径指令.分支延迟是由于分支预测错误导致的性 ...
- Pentium II Pentium III架构/微架构/流水线 (2) - P6详解 - 前端(指令预取/译码/动态分支预测静态分支预测)
Pentium II & III Instruction Pipeline Details Front-End Pipeline Details Pentium II & III处理器 ...
- CPU当中的分支预测
今天看到的一个有关cpu的问题,所以分享总结一下: 抛出一个问题 首先有一段代码 #include <algorithm> #include <ctime> #include ...
最新文章
- 【总结整理】数据可视化
- XamarinSQLite教程创建数据表
- 一文看懂深度学习AutoML和NAS
- ios 内存深度优化_iOS 25个性能优化/内存优化常用方法
- PHP正则表达式——匹配多行
- assetbundle能不能删除_Unity3d爬坑篇(2)之Assetbundle、Shader和Keyword
- 传感与检测实验报告,差动变压器的特性测定,江南大学物联网自动化
- 7-2 数组元素循环右移问题 (40 分)
- JVM类加载机制详解
- matlab figure 调整大小、字体、线宽
- ehlib的DBGridEh控件中使用过滤功能的方法
- 六万字最全总结Java数据库编程MyBatis(+收藏)
- Eclipse 反编译插件下载地址
- 深度学习-LeCun、Bengio和Hinton的联合综述
- linux系统手机助手,手机助手Linux版下载
- word文档doc格式转换成docx
- scratch传说之下素材_《故事新编》:在古老传说和寓言故事上丰富情节和赋予意义...
- 月球绘画软件测试,宇宙飞船简笔画:第一个登上月球的宇航员
- 历史性时刻,Python要成为TIOBE编程语言榜首?
- 吉多·范罗苏姆 --python创始人