Paper reading of Branch Prediction
文章平均质量分 77
一只甜皮鸭
这个作者很懒,什么都没留下…
展开
-
The Agree Predictor(1997)
旨在减少分支干扰/别名/混叠。以前减少干扰的三种方法:(1)增大预测器大小;(2)选取一种更有效利用PHT项的索引方法(如gshare);(3)分离不同类别的分支,对其使用不同的预测方案,从而避免发生干扰。上述三种方法都侧重于减少整体干扰以减少负面干扰,agree预测器不同于上述方法,而是试图将负面干扰转换为其他干扰。在agree预测器(如图8所示)中,我们向每个分支(例如,在指令缓存或BTB中)附加一个偏置位,以预测分支最可能的结果。2位计数器不是预测给定分支的方向,而是预测分支是否会朝偏置位原创 2022-01-25 10:31:53 · 2885 阅读 · 0 评论 -
Piecewise Linear Branch Prediction(2005)
一种理想化的分支预测器,它开发一组线性函数,每一条程序路径都对应一个被预测的分支,将“taken”的分支与“not taken”的分支分开。所有这些线性函数合在一起构成了一个分段线性决策曲面。...原创 2022-01-24 21:29:37 · 2173 阅读 · 0 评论 -
2bc-gskew:De-aliased hybrid branch predictors(1999)
混合预测器:包括 X 个预测器和一个元预测器,每个预测器组件提供一个预测,元预测器选择一个作为最终预测。理想情况下,一个混合预测器应由于其所有组件。2bc-gskew branch predictor:将e-gskew和一个双模态分支预测器相结合,包括四个同样的 bank,即e-gskew中的3个bank加上一个元预测器。1 分支别名/混叠(aliasing)1.1 什么是分支别名/混叠(aliasing)多组分支信息向量共享预测表中的同一项,导致这些分支预测相互干扰。1...原创 2022-01-23 17:25:23 · 543 阅读 · 0 评论 -
The YAGS Branch Prediction Scheme(1998)
YAGS:Yet Another Global Scheme在PHT中引入了 tags ,在不牺牲关键分支结果信息的前提下减少混叠。两级自适应的全局预测策略对整数程序效果最好,因为整数程序中由大量的 if-else 指令,而这些if-else指令通常高度相关。限制上述策略预测率的主要问题是通过历史和地址位映射到PHT中同一项,即混叠。本文中将混叠分为如下两种:中性混叠:具有相同信息但结果不同的分支发生混叠。 破坏性混叠:具有不同信息且结果不同的分支发生混叠。1 之前的工作中降低混叠的方.原创 2022-01-22 12:15:04 · 3322 阅读 · 0 评论 -
Store-Load-Branch (SLB) Predictor:A Compiler Assisted Branch Prediction for Data Dependent Branches
本文(2013 HPCA)的工作基于如下观察:H2P分支通常与一些程序数据结构如数组、链表、树有关,且遵循类似于清单1中所示的 store-load-branch 执行顺序,即当新建或更新数据结构时,一系列存储空间被些(store),遍历数据结构时,这些位置被访问(load),然后被用于判断条件分支(branch)。Critical Tips1.不依赖于分支历史信息预测,而是直接根据数据计算一个分支跳转方向标志。2. load指令的数据在分支指令取指前不可获取,因此直接用store指令的数..原创 2021-09-08 17:02:59 · 311 阅读 · 0 评论 -
Fast Path-Based Neural Branch Prediction(2003 MICRO)
提出该预测器的原因:以往的神经分支预测器由于复杂计算导致访问延迟过高。该预测器的优势:延迟远低于以前的神经预测器;预测准确率高于以前的预测器。该预测器的特点:由于分支结果与路径历史和模式历史都具有强相关性,因此该预测器使用沿到该分支的路径动态选择的神经元(权重)来预测分支。A Path-Based Neuran PredictorA. 基于感知器的预测器变量符说明::所用历史长度;:权重表项数;:权重表;:历史移位寄存器,其中每一项为taken或not_taken;原创 2021-09-06 20:37:22 · 244 阅读 · 0 评论 -
Bias-Free Branch Predictor(2014 MICRO)
文章主要工作从分支历史中剔除有偏向支 从分支历史中剔除同一分支的大量实例 Bias-Free Neural Predictor(BF-Neural) Bias-Free TAGE Predictor(BF-TAGE)剔除有偏分支的原因一个分支若要与另一个分支建立有效关联,则该分支方向的变化一定对另一个分支的方向有所影响。对于有偏分支,这类分支总是朝着一个方向预测(taken或not-taken),因此不存在由于其方向变化而对某个分支方向产生影响,也就不能与某个无偏分支建立相关性。限制预.原创 2021-09-01 21:29:34 · 326 阅读 · 0 评论 -
A Survey of Techniques for Dynamic Branch Prediction(2018)
1 分支预测的基础知识分支预测的tradeoff:准确率、延迟、存储开销、功耗(power)分支的分类:条件分支和非条件分支、直接或非直接(直接指目标地址在指令中指出,非直接指目标地址在内存或寄存器中)Aliasing(混叠):当大量不相关分支使用预测器表中的同一表项时,就会造成干扰,称为aliasing(有的地方翻译成分支别名,如下图所示例。有正混叠(positive aliasing)和负混叠(negative aliasing),负混叠会造成错误预测,通常负混叠的频率和幅度都高于正混叠,尤原创 2021-08-31 10:06:25 · 573 阅读 · 0 评论 -
Wormhole: Wisely Predicting Multidimensional Branches(2014 MICRO)
wormhole side-predictor 针对的是嵌套循环中难以预测的分支。这类循环分支的特点是其方向和外层循环先前迭代中的分支结果有关,而不是内部循环中最近的分支结果。因此这样一个分支的方向流看起来是不规则的,把模式看作连续的时难以预测。这种交叉迭代行为激发了对分支预测器如何管理局部历史的重新思考:作者建议将历史表示为多维矩阵而不是线性向量。WH所针对的分支特点图1是对这类分支的举例:B1每次执行的方向与上次外循环迭代中该次内循环的分支方向相同(因为外循环没有影响内循环的判断条..原创 2021-08-25 22:12:08 · 167 阅读 · 0 评论 -
The Inner Most Loop Iteration counter: a new dimension inbranch history(2015 MICRO)
global branch historyglobal path history文献 [1] 中描述了这两种历史与分支结果的相关性。IMLI-based 预测器组件(The Inner Most Loop Iteration):利用多维循环中分支结果的相关性。可以使用最内层循环迭代 (IMLI) 计数器在取指令时有效地监视应用程序中最内层循环的迭代索引。而一些分支的结果与IMLI计数器的数值强相关。The Wormhole Predictor(WH)循环预测器[4]:对于由确定迭代次.原创 2021-08-25 11:14:48 · 208 阅读 · 0 评论 -
“Branch prediction using both global and local branch history information”(2002)
分支预测策略分为静态分支预测和动态分支预测,静态分支预测通过检查程序行为和利用程序早期执行收集到的信息预测分支;动态分支预测使用程序执行时的执行历史进行预测。饱和计数器预测器两级自适应预测器PAg(基于local history),GAg(基于global history),gshare [1](基于global history)第一级历史存储在branch history register(BHR),记录最近执行分支的结果;第二层存储在pattern history table(PHT.原创 2021-08-23 21:34:06 · 88 阅读 · 0 评论 -
Branch Prediction Is Not A Solved Problem:Measurements, Opportunities, and Future Directions(IISWC)
虽然亩日安最先进的预测器在大多数静态分支上几乎达到了完美的预测精度,但生于错误预测的修正仍能带来极大的性能提高。目前,错误预测主要来自于:(1)一部分系统上难以预测的分支(H2P);(2)动态执行次数很少的罕见分支。使用来自SPECint 2017的数据和额外的大代码占用空间应用,文章中量化了这两种分支的出现和对IPC的影响,证明了增加资源提供给现有的分支预测器并不能单独解决大多数错误预测的根本原因。此外,文中提出新的研究方向,例如,部署机器学习以改进 H2P 的模式匹配,并使用片上相位学习(ph.原创 2021-08-17 18:04:18 · 359 阅读 · 0 评论 -
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 predi...原创 2021-08-15 21:21:12 · 820 阅读 · 0 评论 -
针对间接分支的比特级感知预测器BLBP “Bit-level Perceptron Prediction for Indirect Branches”(2019 ISCA)
间接分支预测器:ITTAGE[3]、基于VPC的分支预测器、call/return 堆栈预测过程返回目标地址[2]。背景:面向对象编程中存在许多间接分支指令。多态性(polymorphism)使用通过间接分支实现的动态分派函数调用来支持动态子类型,间接分支在虚函数调用中是必要的。大约28%的分支误预测是来自间接分支[1]。除了虚函数调用, 间接分支在switch-case语句、跳转表、函数指针调用、过程返回和接口调用中也广泛使用。其本质上比条件分支(conditional branch)更难预.原创 2021-08-12 18:01:16 · 1177 阅读 · 0 评论 -
TAGE-SC-L预测器 “TAGE-SC-L Branch Predictors”(2016)
TAGE-SC-L是将TAGE和简单的辅助预测器统计校正器(statistical corrector简称SC)和循环预测器(loop predictor简称L)相关联,比单个的TAGE更为有效。存储预算在32Kbits存储预算下,TAGE预测器使用大部分存储预算,只有非常有限的存储预算可以给辅助预测器。在CBP-4 trace下性能达到3.315MPKI。 在256Kbits存储预算下,可以实现具有TAGE预测器循环预测其LP和相当复杂的统计校正器SC。在CBP-4 trace下性能达到2.36原创 2021-08-11 19:54:53 · 3795 阅读 · 0 评论 -
基于CNN的预测器 “BranchNet: A Convolutional Neural Network to Predict Hard-To-Predict Branches”(2020)
基于CNN的预测器原创 2021-08-11 19:53:03 · 370 阅读 · 0 评论 -
基于感知器的预测器 “Dynamic Branch Prediction with Perceptrons”(2000)
Aliasing:发生在两个不相关的分支通过使用相同的预测资源破坏性地干扰时。为什么采用感知器:基于感知器的预测器适用于线性可分分支类别,程序往往有许多线性可分的分支,这种预测器适合作为混合预测方案的一个组成部分,与传统预测器一起工作。 相比传统预测器:两级方案,使用快速感知器代替两位计数器。理想情况下,每个静态分支都分配有自己的感知器来预测其结果。传统的两级自适应方案使用两位饱和计数器的模式历史表(PHT),由存储先前分支结果的全局历史移位寄存器索引。该结构将历史寄存器的长度限制为计数器数量的对数。原创 2021-08-11 19:50:56 · 753 阅读 · 0 评论 -
L-TAGE预测器 “A 256 Kbits L-TAGE branch predictor”
在实际中,预测器使用的历史长度集首先通过几何级数来获得,然后再通过细化确定,不过这些改进能获得的精度方面的益处有限。结构特点由一个13-component TAGE预测器和一个256-entry 循环预测器(loop predictor)组成。 预测器组件由以下信息索引:PC,全局分支历史ghist(包括无条件分支),16-bit路径历史phist(包括每个分支1地址位)。 对于256Kbits的预测器,13-component达到了最大精度。 循环预测器用于识别具有恒定次数迭代的规则循环。当原创 2021-08-11 19:47:02 · 615 阅读 · 0 评论 -
TAGE预测器 “A case for (partially) TAgged GEometric history length branch prediction”
结构特点使用几何级数的历史长度和部分标记。 T0是基础预测器,Ti由3-bit计数器(pred)、2-bit u、tag-bit组成。 USE_ALT_ON_NA:在部分程序中,对新分配的项使用altpred预测更有效,使用该4-bit计数器在全局上动态监测这一特性。 若一项的预测计数器是弱的则认为它是新分配的。预测如果预测计数器不是弱的或者USE_ALT_ON_NA是无效的,则采用正常最长匹配的组件进行预测,否则使用altpred。预测器更新Provider compone...原创 2021-08-11 19:46:35 · 1167 阅读 · 0 评论 -
O-GEHL预测器 “Analysis of the O-GEometric History Length branch predictor”
结构特点由多个预测表组成,每个表由PC和不同长度的历史和指令地址共同索引。其中历史长度呈几何级数,即。 最终的预测通过加法树得出。 在GEHL的基础上增加动态历史长度自适应和阈值调整预测预测器表将预测结果存储为符号饱和计数器 。 预测跳转取决于计数器之和S的符号,若S≥0则跳转,否则不跳转。 预测器更新在预测错误或|S|小于阈值时更新 。 预测正确时 递增,否则递减。...原创 2021-08-11 19:44:11 · 557 阅读 · 0 评论 -
PPM-like 预测器 “A PPM-like, tag-based branch predictor”
结构由多个banks组成。 第一个bank是一个基础预测器(一个双模态预测器),单由PC索引,包括3位的饱和计数器和1位的m bit,m表示meta-predictor即元预测器。 其余banks由PC和不同长度的全局历史位共同索引,每一项包括3位饱和计数器、8位tag和1位的u bit。u bit表示useful entry, 其余banks中PC和全局历史一方面hash确定索引哪个bank(图中的10bit),另一方面hash确定索引bank中的哪一项(图中的8bit)。 当全局历史位...原创 2021-08-11 19:35:11 · 645 阅读 · 0 评论