首页 > 其他分享 >Two-level adaptive predictor

Two-level adaptive predictor

时间:2024-09-28 13:49:53浏览次数:1  
标签:set pattern Two per table adaptive history predictor 分支

论文:

Yeh T Y, Patt Y N. Alternative implementations of two-level adaptive branch prediction[J]. ACM SIGARCH Computer Architecture News, 1992, 20(2): 124-134.

Tse-Yu Yeh and Yale N. Patt. A Comparison of Dynamic Branch Predictors that use Two Levels of Branch History. ISCA 1993.
感觉这篇文章讲得太简略了,建议先看一下上面那篇1992年的文章。

预测器分为两层,第一层记录前k个分支执行的历史,如果是taken就是1,如果是not taken就是0。根据"前k个分支"的定义,分为三个scheme。对于global history scheme,第一层就记录全局的前k个分支的执行历史,对于per-address history scheme,第一层就记录每个分支的前面k次的执行历史,对于per-set history scheme,第一层就记录每个组中的分支的前面k次的执行历史。分支所在的组可以由分支类型决定,也可以由分支的地址决定。

将前k个分支执行的结果的取值看作一个pattern,第二层就是用来决定在每个parttern下,应该怎么预测的。一般来讲,第二层由很多2-bit FSM组成(来源:https://en.wikipedia.org/wiki/Branch_predictor)。跟第一层一样,第二层也可以分成三类:global, per-address, per-set。Global时,第二层就是一个长度为$2^k$的pattern history table,然后通过第一层拿到pattern之后,就直接用这个pattern作为下标访问这个pattern history table,拿出2-bit FSM来作出预测。Per-address时,每个address都有一个对应的长度为$2^k$的pattern history table,通过第一层拿到pattern之后,到当前分支对应的那个pattern history table,用这个pattern做下标,拿到2-bit FSM来作出预测。Per-set则是每个set都有一个长度为$2^k$的pattern history table。

第一层和第二层各三种结构,一共有九种。

第一层里的分支执行历史的更新是speculative的,即拿到预测结果之后直接假装它是对的,来更新这个执行历史,如果有必要再修正,这样预测下一个分支的时候才能找到比较正确的第二层的2-bit FSM。但是第二层里的2-bit FSM的更新是拿到真正的分支执行的结果之后,才更新的(预测的时候要把pattern记下来)。

Global history scheme对integer programs来说表现比较好,因为这类程序里有很多if-then-else的逻辑,这种逻辑里,各条分支语句一般是有联系的。而global history scheme就很擅长发现这种分支语句之间的联系。但是不同的分支可能会共享同一个pattern,然后就跑到同一个pattern history table里了,所以要达到好的效果,要追踪更长的全局历史(即更长的pattern,更长的pattern history table),或者弄更多的pattern history table(毕竟不可能每个分支或者set都配一个pattern history table,应该是用类似于哈希表的方式做的,那就增加哈希表的长度)。

Per-address history scheme比较适合floating point programs,因为这类程序里循环比较多,分支之间比较独立,分支本身的周期性比较强。我觉得Per-address history scheme是基本不能发现指令之间的关系的,因为虽然在PAg(即第一层是per-address,第二层是global)和PAs(即第一层是per-address,第二层是per-set)中,很多个分支可能会共用一个pattern history table,但是下标用的是这个分支自己的执行历史,也就是pattern,这种关系与其说是体现了指令之间的关系,不如说是一种类似于哈希冲突的有害的关系。

Per-set history scheme结合了前两者的优点,但是要达到好的效果,其成本很高。我觉得SAp(第一层是per-set,第二层是per-address)和PAs(第一层是per-address,第二层是per-set)是不同的,因为SAp中,是先拿到了所处set的pattern,即执行历史,然后再到这个分支对应的pattern history table里拿2-bit FSM的。而PAs中,用的历史是这个分支的历史。

总的来说,如果要求开销低,那么PAs最好,8Kb时能达到96.3%的准确度,如果可以接受高开销,那么GAs最好,128Kb时能达到97%的准确度。

没看懂的地方

在这里插入图片描述
为什么Per-set history scheme里,好像每个set都有一个自己的pattern history table?那SAs里,第二层的set是怎么定义的?

标签:set,pattern,Two,per,table,adaptive,history,predictor,分支
From: https://www.cnblogs.com/searchstar/p/18437558

相关文章

  • Pruning Large Language Models with Semi-Structural Adaptive Sparse Training
    本文是LLM系列文章,针对《PruningLargeLanguageModelswithSemi-StructuralAdaptiveSparseTraining》的翻译。通过半结构化自适应稀疏训练修剪大型语言模型摘要1引言2相关工作3方法4实验5结论摘要大型语言模型(LLM)在各种复杂任务中的巨大成功在很......
  • Stargazers Ghost Network在GitHub平台上的隐性威胁
    CheckPointResearch近期曝光了一个名为StargazersGhostNetwork的分发即服务(DaaS)网络,该网络利用GitHub这一全球知名的代码托管平台,通过精心设计的“幽灵账户”来隐秘地传播恶意软件。这一发现再次凸显了IP地址查询在识别和阻断网络威胁中的重要作用。StargazersGhostNetwork的......
  • 题解:UVA1456 Cellular Network
    UVA1456CellularNetwork题解夭寿了!30行写完紫题了!更新:已联系管理员修改难度,现在是绿题题意很简单,不再赘述。首先一个小贪心,将概率\(u​\)进行从大到小的排序,优先查看概率大的区域,显然这样能够保证访问数量期望最小。接着考虑如何将区域分组。一个显而易见的思路是动态......
  • COMP3331/9331 Computer Networks and Applications
    COMP3331/9331ComputerNetworksandApplicationsAssignmentforTerm3,2024BitTrickleFileSharing System1. Goal and Learning ObjectivesIn this assignment you will have the opportunity to implement BitTrickle, apermissioned,peer-to- pee......
  • 【深度学习基础模型】径向基函数网络(Radial Basis Function Networks, RBFN)详细理解并
    【深度学习基础模型】径向基函数网络(RadialBasisFunctionNetworks,RBFN)【深度学习基础模型】径向基函数网络(RadialBasisFunctionNetworks,RBFN)文章目录【深度学习基础模型】径向基函数网络(RadialBasisFunctionNetworks,RBFN)1.算法原理介绍:径向基函数网络(R......
  • Elasticsearch7.7修改network.host IP地址 start启动失败及Elasticsearch7的配置项详
    一、Elasticsearch7.7修改network.hostIP地址start启动失败    使用的是最新的Elasticsearch7.7版本,启动后默认是绑到127.0.0.1上的,这肯定不是我们需要的,所以修改配置文件将network.host配置选改成我们的服务器局域网IP地址。Elasticsearch7.7版本安装后配置文件elastic......
  • 日新月异 PyTorch - pytorch 基础: 通过卷积神经网络(Convolutional Neural Networks,
    源码https://github.com/webabcd/PytorchDemo作者webabcd日新月异PyTorch-pytorch基础:通过卷积神经网络(ConvolutionalNeuralNetworks,CNN)做图片分类-通过ResNet50做图片分类的学习(对cifar10数据集做训练和测试),保存训练后的模型,加载训练后的模型并评估指定的......
  • qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed加
    qDebug()<<"QSslSocket="<<QSslSocket::sslLibraryBuildVersionString();qDebug()<<"OpenSSL支持情况:"<<QSslSocket::supportsSsl();打印需要的版本和当前openssl的支持情况如果显示false,不支持就是说明,不支持加密对应下载版本的openssl进行重新编译即可原因......
  • TikTok提示“Network is out of reach”怎么处理?
    当TikTok提示“Networkisoutofreach”时,意味着应用无法连接到互联网。导致这一问题的常见原因包括网络连接不稳定、地理限制或网络设置与应用不兼容等。解决方法有:拔除手机卡、关闭手机定位服务、切换至稳定的海外IP网络等。使用TikTok专用网络也可以帮助解决连接问题,从而......
  • 【论文阅读笔记】【Hand Pose Estimation-Interacting Hand】 Interacting Attention
    CVPR2022(Oral)读论文思考的问题论文试图解决什么问题?写作背景是什么?问题:如何将图卷积神经网络(GCN)结构应用到双手交互识别上,且能很好地解决双手的遮挡、相似和交互的问题?背景:双手识别的挑战:1.严重的相互遮挡,双手形状类似。2.难以有效地建模交互的上下文信息......