PPM (Prediction by Partial Matching)

TAGE是PPM的改进版本,两者在数据的更新方式(主要是u值)上有所区别,但是在总体架构上基本相似。

PPM架构: (Michaud Pierre 2005)
最为左边的部分(bimodal bank)是一个由部分PC直接索引的3-bits饱和计数器,充当本地预测器。与一般的饱和计数器不同,附带了一个m位(meta-predictor 代表全局预测器的有效性)。右边的四个部分是四个类似Gshare的预测器,把本地PC和全局分支历史通过Hash结合到一起。其中心思想在于构造一个竞争预测器以本地的预测作为基础,而使用带有全局分支信息的多个作用条件更强的预测器作为辅助,辅助预测器适用的作用条件越强,其预测的上下文越具体,其预测在和其他预测器竞争时可信度越高。这样就在进入和脱离特定上下文时减少了惯性,而在上下文具有典型的特征时作出准确的预测。
在预测时,PC和不同长度的全局分支历史通过索引Hash(此处是带折叠的XOR)得到索引值,而后得到饱和计数器ctr值,8-bit的tag值和u(useful 代表记录的有效性)值,同时PC和不同长度的全局分支历史通过校验Hash(随便起的名字,是图上右边的hash函数,用于校验的hash函数和用于索引的函数是不同的)得到8-bit校验值,比较该值和查找表中的tag值,如果两者相同则控制底部的Mux选择Mux右边输入(ctr高位的输出),如该不同则选择Mux左边输入的值(前一级传入输出)。这样预测器则总会选择tag和Hash输出命中的具有最长全局分支历史的预测器的预测结果,如果tag一个都没命中,则选择本地预测器结果。
在更新时,由于得到了预测是否正确的信息,需要更新预测器的状态。对于饱和计数器而言,只有在作出最终Prediction的那个Bank的3-bits饱和计数器会被更新,其余四个Bank的对应位置的3-bits饱和计数器不会被更新。如果预测错误,就表明在作出该预测时的上下文不具有典型性,预测器就需要对该上下文作出识别,即把该上下文的信息添加到更符合特殊情况(更右边)的预测器中,这样在再次遇到类似情形时就可以更准确的识别预测。其更新的策略为,选取比当前预测器更右的u为0(暗示该记录是过时无效的)的预测器加入记录并把对应u置1,如果所有u都为1,则随机更新。在更新是还需要设置饱和计数器ctr的值,在m位为1时根据真实结果更新为3或4,在m为0时更新为最左边预测器(本地预测器)的预测结果。更新m和u的值仅发生在本地预测器和最终预测结果不同时,如该最终正确则同时置1,否则同时置0。原因在原文中有所分析:如果最终结果正确那么全局预测自然有效(m),对应记录也有效(u)。

TAGE (partially TAgged GEometric history length branch prediction)


TAGE架构: (Seznec André & Michaud Pierre 2006)
TAGE明确的提出了使用几何级数(Geometric series)作为全局分支历史长度,由于PPM原理在于对不同规模上下文的分离预测,使用几何级数序列达到了较好的各级分离度。
在TAGE中u是一个2-bit饱和计数器,生成结果的预测器被称为provider component,当provider component无效时生成结果的预测器被称为altpred,u更新发生在provider component和altpred结果不同时,策略与PPM类似,当正确时增加,错误时降低。此外为了解决PPMu位不易变化的问题,会周期的重置u的高位和低位。在更新pred(ctr)值时,provider component的总是会被更新,而和PPM不同的是,在预测错误时需要更右侧(不包括最右侧)的被更新时,如果有u为0,则倾向更新较靠左边的,pred置为weak correct,u置0,这样可以对上下文匹配的抽象和具体之间可以达到更好的权衡,如果所有u非0,则不改变pred,所有u减去1。

TAGE Predictor相关推荐

  1. TAGE-SC-L Branch Predictors

    [摘要] TAGE被认为是最有存储效率的全局历史信息分支预测器.Andre就指出TAGE加上statistical corrector(SC)和loop predictor会更加高效.CBP-4tra ...

  2. RISC-V BOOM核学习

    来源:RISC-V BOOM documentation RISC-V BOOM核学习 The Berkeley Out-of-Oder Machine INTRODUCTION RV64GC Fig ...

  3. IEEE-Micro 2021-2010年间CPU Micro-architecture方向文章总结

    2021 IBM's POWER10 Processor 服务器 特性概述 提升20%性能和30%core 吞吐量(相对于power9) 优化矩阵运算 1TB/s的跨系统存储集群带宽 模块化die,支 ...

  4. predictor = dlib.shape_predictor()关键点预测器用法

    predictor = dlib.shape_predictor('data/data_dlib/shape_predictor_68_face_landmarks.dat') 功能:标记人脸关键点 ...

  5. 成功解决 shape = predictor(img, dets[0]) IndexError: Index out of range

    成功解决    shape = predictor(img, dets[0]) IndexError: Index out of range 目录 解决问题 解决方法 解决问题 shape = pre ...

  6. matlab中predictor怎么填,在MATLAB中求解非線性有限元

    我嘗試在MATLAB中求解帶有節點熱源的四面體有限元的熱擴散問題,這個節點取決於解矢量.非線性方程系統如下:在MATLAB中求解非線性有限元 乙U」 + A U = Q(T) 與B是熱capactiy ...

  7. 【演化计算】【论文研读】Surrogate-Assisted Evolutionary DL Using E2E Random Forest-based Performance Predictor

    Surrogate-Assisted Evolutionary Deep Learning Using an End-to-End Random Forest-based Performance Pr ...

  8. 论文阅读:A Novel Graph based Trajectory Predictor with Pseudo Oracle

    A Novel Graph based Trajectory Predictor with Pseudo Oracle 摘要 1 引言 2 相关工作 3 PROPOSED METHOD IV. EXP ...

  9. dlib.get_frontal_face_detector(), Python format 格式化函数 predictor(img, dets[0])

    detector = dlib.get_frontal_face_detector() # 人脸检测dets = detector(img, 1)# len(dets) 即为检测到的人脸个数print ...

  10. JSTSP2016 Fully Deep Blind Image Quality Predictor

    这是一个直接用CNN做IQA的工作,直接输入图像不提取特征,借用FR-IQA方法解决了训练数据不足.大量图像没有MOS等问题. 文章首先提出NR-IQA与FR-IQA的区别--是否利用了原始图片信息: ...

最新文章

  1. Java 多线程编程(锁优化)
  2. VC2005中依然没有Refactoring和Code Expansion.
  3. 深入理解Hadoop集群和网络
  4. mysql log位置_MySql: log 位置
  5. 关于UAC执行级别的研究
  6. Java EE 8怎么了? (第2部分)
  7. com 组件调用不起来_Spring Cloud Alibaba,分布式服务调用(四)
  8. 错把女生的耍脾气当拒绝
  9. 资深大学老师告诉你:嵌入式、单片机开发必备软件有哪些
  10. UE4添加人物动画之前后左右移动
  11. Git和SVN区别和命令
  12. 处理24人!又一批科研不端案例被通报批评
  13. Python每输出n个换行
  14. 为什么编c语言总有一个错误,为什么程序最后总会显示有1个错误
  15. 无向有权图的建立(邻接链表法) 广度优先搜索 深度优先搜素
  16. 三种页面置换算法(详解)
  17. Intel无线网卡蓝牙功能失效解决思路分享
  18. hdu2191 买大米 多重背包 模板题
  19. Thread.currentThread.interrupt()
  20. 基于Python个人博客系统设计与实现 开题报告

热门文章

  1. asyncawait的前世今生
  2. Unity3D手游开发实践《腾讯桌球》客户端开发经验总结
  3. NMS中的 offset by class 是什么意思?
  4. 学习Unity3D是一件痛并快乐着的事
  5. maven的pom文件引入依赖报错:提示无法处理 Cannot resolve...
  6. Python零基础学习笔记(三十三)—— 窗体的控制...
  7. miktex报错:the remote package repository is outdated
  8. 拼图软件——texturepacker
  9. 七日杀服务器怎么设置家的位置,七日杀固定地图在哪儿建家好 | 手游网游页游攻略大全...
  10. Swift 网络请求——Moya的使用