虽然亩日安最先进的预测器在大多数静态分支上几乎达到了完美的预测精度,但生于错误预测的修正仍能带来极大的性能提高。目前,错误预测主要来自于:(1)一部分系统上难以预测的分支(H2P);(2)动态执行次数很少的罕见分支。

使用来自SPECint 2017的数据和额外的大代码占用空间应用,文章中量化了这两种分支的出现和对IPC的影响,证明了增加资源提供给现有的分支预测器并不能单独解决大多数错误预测的根本原因

此外,文中提出新的研究方向,例如,部署机器学习以改进 H2P 的模式匹配,并使用片上相位学习(phase learning)来跟踪罕见分支的长期统计数据。

当前最先的预测器

  • PPM:历史长度的数量和每个长度下的表项数是其存储/准确性的主要驱动因素。
  • 感知器预测器:通过学习不同历史位置的权重来减轻 PPM 精确模式匹配的缺点。在预测时,权重乘以全局历史序列、求和并设置阈值以生成预测。
  • 针对特定程序执行行为的预测器:循环预测器,Wormhole预测器,Inner-Most Loop Iteration counter(IMLI),store/load 预测器。
  • Ensemble Models:例如TAGE-SC-L,其中统计校正器使用类似感知器的模型将权重应用于组成预测器的预测。

误预测特征

1. H2P分支

特征:在每个workload的30M-指令 slice中(1)在8KB TAGE-SC-L预测器下,低于99%的预测准确;(2)至少执行15000次;(3)在slice中至少生成1000次误预测。

选择标准是表现出与系统错误预测一致的行为,并产生足够的历史数据来训练机器学习模型的分支IP。

2. LCF(large code footprint)traces中的罕见分支

LCF分支的二进制文件中每30M指令片中都包含比SPECint 2017数据集更多的静态分支。

特征:(1)在TAGE-SC-L 8KB下的平均准确率(0.85)大大低于SPECintv 2017数据集的准确率(0.952);(2)对于每个应用程序中的大量静态分支(平均值:14,072),每个静态分支的平均动态执行次数很少(平均值:612.8)。

如图3所示,动态执行的分布(中间的图)向左倾斜, 85% 的静态分支 IP 执行不到 100 次。
此外,动态错误预测的分布(左图)偏向于零,即绝大多数分支都以高精度预测,预测准确度的分布(右图)证实了这一点,其中 55% 的分支的预测准确度为 0.99 或更高。但是,可以看到,仍存在一大部分(12%)静态分支IP以0.10或更低的准确率预测

3. CPU流水线规模对误预测的影响

当CPU流水线扩大是H2Ps和罕见分支对性能的影响并不一样显著。虽然H2Ps在现在CPU上对SEPCint 2017具有超大一部分的影响,但随着流水线扩大和应用规模的扩大,罕见分支对潜在性能的影响变得同等重要。

一味扩大BPU资源是不够的

由上图可以看出,在固定的流水线宽度和深度下,从TAGE-SC-L 8KB到TAGE-SC-L 64KB,后者带来的IPC的提高低的多(纵轴表示IPC得到的增益)。

H2Ps具有高历史变化:H2Ps的依赖分支出现在许多不同的位置,并且它再次出现在同一位置的可能性是高度不均匀的。基于特定位置相关性或精确模式重复出现的预测必须应对大量随机变化,而且这种变化会随着历史长度的增加而增加。在TAGE-SC-L 64KB中,具有高历史序列变异的 H2P 分支将导致异常高的重新分配率。TAGE-SC-L 的底层模式匹配机制难以对 H2P 历史数据中的预测统计数据进行分组,结果浪费了很大一部分存储资源。(好像懂了

罕见分支统计数据太少:对于LCF应用,96%的静态分支动态执行次数低于1000次,其中85%低于100次。由于 IPC 的很大一部分与动态执行少于 100 次的分支相关联,罕见的分支提供的统计数据太少,无法支持稳定的学习和以后在运行时的重用。即使在TAGE-SC-L 1024KB中也收效甚微,基本在TAGE-SC-L 64KB时已达到存储和效益的最佳平衡,再增大预测表容量也改进极小(如图7所示)。

分支预测的新方向

保留TAGE-SC-L预测绝大多数分支,同时增加额外的资源专门解决上述分支。

A.分支预测器设计中的一个关键假设是它们的部署方式

这可以根据预测统计数据是在线还是离线捕获(即,训练)进行分类,类似地,预测是在线还是离线生成(即,通过推理)。 在这里,我们将在线定义为在 BPU 上执行计算,将离线定义为使用需要将数据(例如分支历史或其他微架构状态信息)移动到其他地方的计算。离线训练使得预测器可以利用更多的数据,及应用如基于机器学习的更有效的模式识别算法。

B.使用更多的训练数据

C.使用机器学习模型

参考文献

[1] S. Tarsa, C.-K. Lin, G. Keskin, G. Chinya, and H. Wang, “Improving Branch Prediction By Modeling Global History with Convolutional Neural Networks,” ISCA AIDArc, 2019.

[2] S. Tarsa, C.-K. Lin, G. Keskin, G. Chinya, and H. Wang, “Improving Branch Prediction By Modeling Global History with Convolutional Neural Networks,” ISCA AIDArc, 2019.

[3] A. Seznec, J. S. Miguel, and J. Albericio, “The inner most loop iteration counter: a new dimension in branch history,” in MICRO, 2015.

[4] M. Farooq, Khubaib, and L. John, “Store-Load-Branch (SLB) Predictor:A Compiler Assisted Branch Prediction for Data Dependent Branches,”in HPCA 2013, 2013.

Branch Prediction Is Not A Solved Problem:Measurements, Opportunities, and Future Directions(IISWC)相关推荐

  1. Efficiently Solving the Practical Vehicle Routing Problem: A Novel Joint Learning Approach(GCN-NPEC)

    Efficiently Solving the Practical Vehicle Routing Problem: A Novel Joint Learning Approach(GCN-NPEC) ...

  2. 优化 | Pick and delivery problem的简介与建模实现(一)

    优化 | Pick and delivery problem的介绍与建模实现(一) Pick and delivery problem简介 多对多(M-M)问题 Python调用Gurobi实现 模型 ...

  3. 优化 | Pick and delivery problem的简介与建模实现(二)

    优化 | Pick and delivery problem的介绍与建模实现(二) One-to-many-to-one (1-M-1) problems Simultaneous Demands P ...

  4. bzoj 3407: [Usaco2009 Oct]Bessie's Weight Problem 贝茜的体重问题(DP)

    3407: [Usaco2009 Oct]Bessie's Weight Problem 贝茜的体重问题 Time Limit: 3 Sec  Memory Limit: 128 MB Submit: ...

  5. NBOJv2 Problem 1009 蛤玮的魔法(二分)

    Problem 1009: 蛤玮的魔法 Time Limits:  1000 MS   Memory Limits:  65536 KB 64-bit interger IO format:  %ll ...

  6. [YTU]_2535 (Problem I: C++复数运算符重载(+与))

    定义一个复数类Complex,重载运算符"+",使之能用于复数的加法运算与输出操作. (1)参加运算的两个运算量可以都是类对象,也可以其中有一个是实数,顺序任意.例如,c1+c2, ...

  7. Problem C: 类的初体验(III)

    Description 定义一个类Data,只有一个double类型的属性和如下4个方法: 1.   缺省构造函数,将属性初始化为0,并输出"Initialize a data 0" ...

  8. AbdomenCT-1K: Is Abdominal Organ Segmentation A Solved Problem?

    https://arxiv.org/abs/2010.14808 https://github.com/JunMa11/AbdomenCT-1K AbdomenCT-1K: Is Abdominal ...

  9. Problem G: 函数---判断日期(年月日)是否合法

    Problem G: 函数---判断日期(年月日)是否合法 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 566  Solved: 240 Descr ...

  10. Problem A: 判断操作是否合法(栈和队列)

    Problem A: 判断操作是否合法(栈和队列) Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 67  Solved: 22 Description ...

最新文章

  1. oracle update from多表性能优化一例
  2. swift闭包 notes http://www.gittielabs.com
  3. 各类JDBC数据库连接方式
  4. html div初始隐藏点击可见_3种CSS3移动手机隐藏菜单UI界面代码解析/附源码下载...
  5. python3.7.1使用_使用python3和pytorch1.7.1运行dface
  6. leetcode85. 最大矩形
  7. webinf目录下的没有什么_为什么你的减肥没有效果? 来看下这些习惯是否中招...
  8. CentOs6.x yum源停止维护,安装yum源
  9. Python3对IP进行查询
  10. scanf 与 scanf_s
  11. Prism初研究之使用Prism 5.0开发模块化应用
  12. 一帆风顺幼儿园管理软件 v3.01 bt
  13. ASIC设计流程相关
  14. 解决鼠标滚动时页面上下跳动的问题
  15. mongodb4.4 windows环境安装
  16. linux express 安装,linux下的node+express安装教程
  17. ubuntu中vim编辑模式退格键无法删除,方向键乱入ABCD解决方法
  18. python tkinter画布设置按钮对图片放大缩小_Tkinter可调整大小的对象Python画布
  19. spring boot网上购物系统毕业设计源码311236
  20. 于明:APU能否接力取代迟暮的X86?

热门文章

  1. unity5.6.5_5.6现在可用并完成了Unity 5周期
  2. 从unity3d官网下载教程
  3. 一个大一学生学习C语言的心得
  4. linux ringbuffer原理,linux内核 使用内核队列实现ringbuffer(续)
  5. 新西兰留学再移民,哪些专业好就业?
  6. SVN提交时出现remains in conflict错误
  7. 计算机组装与维护参考文献,计算机的组装与维护毕业论文.doc
  8. 全球及中国EOG放大器行业运行状况与投资前景建议报告2021-2027年版
  9. 前端基础知识--Document的常用属性和常用函数
  10. 什么是电感_共模电感和差模电感的区别