结构特点

  • 使用几何级数的历史长度和部分标记。
  • T0是基础预测器,2-bit 计数器表,Ti由3-bit计数器(pred)、2-bit u、tag-bit组成。
  • USE_ALT_ON_NA在部分程序中,对新分配的项使用altpred预测更有效,使用该4-bit计数器在全局上动态监测这一特性。
  • 若一项的预测计数器是弱的则认为它是新分配的。

预测

  • 如果预测计数器不是弱的或者USE_ALT_ON_NA是无效的,则采用正常最长匹配的组件进行预测,否则使用altpred。

预测器更新

  • Provider component:历史最长的匹配组件;
  • Alternate predictor(altpred):例如如果T2和T4的tag都匹配,则T2为altpred。
  • 更新u-bit:当altpred不同于最终预测时,更新provider component的u-bit,实际预测正确时递增否则递减(即最终预测采用的是provider的预测,因此要更新provider的u-bit )。此外,需周期性重置u-bit(作为age counter),以避免一些项被一直标记为有效,最高位列全部置为0,一段时间后,最低位列全部置为0(文中周期是每256K个分支)。
  • USE_ALT_ON_NA:部分程序中使用altpred预测更为有效。
  • 周期性重置u-bit:先重置整列最高位,经过一段时间再重置最低位,以防止使用率不高的项一直保存再预测器中。
  • 更新预测计数器:提供预测的组件的预测计数器被更新。
  • 分配新项:预测错误时需分配新项;如果provider component Ti不是使用最长历史长度的,则选择在一个Tk(k>M)上分配新项。读取所有Tj(i<j<M)的u-bit,如果存在某个Tk的u-bit=0,则分配新项给组件Tk,否则将Tj的u-bit全部递减,不分配新项。新项初始化为预测计数器为弱相关,u-bit 初始化为0。

分支历史管理:TAGE依赖于使用非常长的全局分支历史(几百位),全局分支历史和路径历史是推测性更新的,因此在错误预测时需要恢复。通过循环缓冲区(circular buffer)存储分支历史来实现。恢复分支历史和路径历史包括恢复头指针。

具体实现中的问题

A. 预测响应时间:正常需要3个周期

预测响应时间 = 索引计算时间 + 查表时间 + 预测计算逻辑时间

  • 索引计算:使用单级 3 项异或门的非常简单的索引函数可用于索引预测器组件,而不会显着影响预测精度。(VS 全散列函数)
  • 读预测表:延迟取决于表的大小,tag 计算可以在索引计算和读表取期间执行而不影响整体预测计算时间。
  • 预测计算逻辑:标签匹配,预测选择,标签匹配计算是对从标签组件流出的标签并行执行的。

B. 解决预测响应时间大于一个周期的问题:提前流水线

在周期 T0-X 处,使用 X 块提前程序计数器和 X 块提前全局历史读取预测表。同时计算得到个预测结果,最后X块用于选择最后的预测。

预测计算:假设预测计算过程需要 X-1 个周期,预测计算需如下两步。

  1. T0-X 周期:预测计算用 T0-X 周期时可用的信息初始化,即 此时的地址和历史h。除此之外还需要从 T0-X 到 T0 的路径上的信息。 X 位的向量 V 包含路径上的信息,在T0-X时向量V的值还不知道,因此有种可能,同时计算个预测。
  2. T0 周期:在T0-1周期结束的时候,个预测都已经得到,且在T0时,向量V的实际值已经知道,用实际的V去选择对应的预测结果。

性能评估

8-组件的预测器,一个64 Kbits的O-GEHL预测器是2.83MPKI,TAGE是2.61;1Mbit 8-组件的O-GEHL是2.27,1 Mbit 8-组件的TAGE是2.05。

一个128 Kbits 8-组件的TAGE(2.36)和一个512 Kbits 8-组件的O-GEHL(2.34)的准组起来差不多。

 历史长度和TAG宽度的影响:

TAGE预测器 “A case for (partially) TAgged GEometric history length branch prediction”相关推荐

  1. TAGE-SC-L预测器 “TAGE-SC-L Branch Predictors”(2016)

    TAGE + 简单的辅助预测器统计校正器(statistical corrector简称SC)+ 循环预测器(loop predictor简称L) 为什么要用不同长度的历史? 既适用于有较长历史的分支 ...

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

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

  3. R语言使用R基础安装中的glm函数构建乳腺癌二分类预测逻辑回归模型、分类预测器(分类变量)被自动替换为一组虚拟编码变量、summary函数查看检查模型、使用table函数计算混淆矩阵评估分类模型性能

    R语言使用R基础安装中的glm函数构建乳腺癌二分类预测逻辑回归模型(Logistic regression).分类预测器(分类变量)被自动替换为一组虚拟编码变量.summary函数查看检查模型.使用t ...

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

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

  5. scikit-learn学习笔记(一)快速入门数据集格式和预测器

    1.数据集: 数据集都是2维的,第一维度是"样本维",第二维度是"特征维". >>> from sklearn import datasets ...

  6. TypeWriter: Neural Type Prediction with Search-based Validation基于搜索的神经网络预测器

    ABSTRACT 维护使用动态类型语言(JavaScript,Python等)写的大型数据库是非常有挑战性的.简单 数据兼容性错误激增,缺乏IDE支持和API 难理解.最近的一些工作尝试用静态分析或概 ...

  7. 运用PyTorch动手搭建一个共享单车预测器

    本文摘自 <深度学习原理与PyTorch实战> 我们将从预测某地的共享单车数量这个实际问题出发,带领读者走进神经网络的殿堂,运用PyTorch动手搭建一个共享单车预测器,在实战过程中掌握神 ...

  8. C++小程序——“靠谱”的预测器

    文章目录 内容简介 一.使用方法 二.具体代码实现 1.调试环境 2.代码实现 3.运行演示 小结 内容简介 本文介绍了一个作者原创的有趣的预测器. 重要免责声明:本文和文中程序仅供娱乐,对预测结果概 ...

  9. 【AI—pytorch学习】项目实战-单车预测器

    Pytorch实战项目学习笔记--单车预测器 1.数据 原书中给出的地址好像有些问题或者被修改了,下载的数据与书中提到的数据不一致.查阅后可在 http://archive.ics.uci.edu/m ...

  10. LncLocator 2.0:具有可解释深度学习的长链非编码RNA的细胞特异性亚细胞定位预测器

    Motivation:长链非编码RNA ( lncRNA )通常以组织特异性的方式表达,lncRNA的亚细胞定位取决于它们表达的组织或细胞系. <特色> 以前用于预测lncRNA亚细胞定位 ...

最新文章

  1. 为什么Jedis操作后要主动归还?
  2. [Linux基础环境/软件]Linux下安装resin web服务器(涉及gcc、jdk环境部署)
  3. 登录文件传输服务器,生信小技巧之:在本地与服务器间快速传输文件,无密码登录远端服务器...
  4. C# Invoke 使用 异步委托
  5. [转]如何使用消息系统避免分布式事务?
  6. 中文核心期刊与科技核心期刊区别?
  7. Postman安装教程及汉化
  8. 视频处理中各个分辨率/数字电视系统显示格式 的介绍(QCIF,CIF,4CIF,D1,720P,1080I,1080P等)
  9. Java程序设计基础学习
  10. SQL语句中查找字符的位置
  11. iOS13的暗黑模式
  12. 方舟建立服务器显示cmd,家庭电脑建方舟服务器
  13. sql 累计占比_sql中查询占百分比percent和通配符的使用
  14. 【OC】JSONModel基本使用
  15. 忘记电子商务吧,很快一切都将与元宇宙有关
  16. Linux 文件授权
  17. 代理模式-Proxy Pattern
  18. php源码怎么加密一点见解
  19. 项目推进计划表_项目计划表:项目管理利器「产品必备技能」
  20. Android删除UIM卡联系人

热门文章

  1. python猫狗大战代码_猫狗大战
  2. 第4节:alphapose项目运行和参数
  3. element-ui的el-menu路由模式下选中无颜色
  4. SYZOJ - sxy的书包(背包)
  5. 那一年我是如何从功能测试跨入自动化测试的,绝对让你不虚此行!
  6. 基于PHP+MySQL客户信息管理系统的设计与实现
  7. 下载官方 Win11、Win10 镜像 ISO 的方法
  8. Moya、RxMoya基本使用
  9. MongoDB 认证、添加用户、用户权限控制
  10. C#连接服务器超时解决方法