TAGE-SC-L Branch Predictors

【摘要】

TAGE被认为是最有存储效率的全局历史信息分支预测器。Andre就指出TAGE加上statistical corrector(SC)和loop predictor会更加高效。CBP-4traces下,32Kbits:3.315MPKI,256Kbits:2.365MPKI,no-limit budget(<2G):1.782MPKI。

【整体结构】

TAGE-SC-L预测器如上图,由a TAGE predictor, a statistical corrector predictor, a loop Predictor三部分构成。

【TAGE conditional branch predictor】

   TAGE预测器由一个base 预测和M个tagged预测表Ti(1<i<M)构成,base是PC索引的2位计数器双峰预测。

  索引Ti的历史长度满足几何级数序列L(i) = (int)(alpha^(i-1)*L(1)+0.5)。Ti中的一个entry包括3个域: ctr(提供预测值、带符号,3bit)、tag、u(有用位计数器、无符号,2bit)

  Provider:tage hit中,由最长历史索引的部件。

  Alternate:provider以外的 tag hit的部件。Tage表中没有,就是base表。

【预测计算】给pc,计算taken/not taken

Base 和taged同时计算。使用taged表命中里面,历史信息最长的;如果没有,就用base。存在alternate可能比provider更准确的情况。用4 bit计数器(USE ALT ON NA)来捕获这种全局现象。


1. Find the longest matching component and the alternate component

2. if (the confidence counter is not weak or USE ALT ON NA is negative)

    then the provider component provides the prediction

  else

    the prediction is provided by the alternate component

【更新TAGE】

--预测正确时

更新ctr,当预测的置信度低的时候,alt也需要更新。

--预测错误时

1.更新provider的ctr

2.分配新entry

--更新u

预测正确自增,

周期性重置。

【Statistical Corrector Predictor】

TAGE在预测非常相关的branch时很有效。但是,TAGE在预测统计偏好的branch时效果较差,例如一些branch的相关性较差,但都有偏好一个方向。这种情况下,TAGE性能比简单PC-index计数器性能还差。

矫正的目标是侦测不大可能的预测值,做翻转处理。输入有:来自tage的pred,分支的其他信息(address, global history, global path, local history)。Tage的正确率一般都很高,SC就可以做得小一点。

【32Kbits predictor: The Corrector Filter】

在存储限制下,SC做成一个相连表来监视来自TAGE的mispred。Mispred包括PC和preddirection被存下来(置一个低的可能性水平)。当在SC中命中后,可能性水平高的话,就翻转。Entry的换出策略是替换低可能性水平的entry。

时间: 2024-12-11 18:26:04

TAGE-SC-L Branch Predictors的相关文章

Learn Branch Prediction From SimpleScalar Source (1)

作为一名CSer,最好的学习方式之一无疑是tracing code,看源代码--不知你此时是否与我一样想起了Linus那句名言「talk is cheap, show me the fucking code!」? 可是对计算机体系结构来说,很多技术直接是由硬件实现的,因而也被蒙上一层神秘的面纱. 好在还有一些模拟器(simulator)软件,例如SimpleScalar(http://www.simplescalar.com/)就是这样一套模拟处理器性能的工具集. 之前我有幸通过做一些proje

coffeescript 1.8.0 documents

CoffeeScript is a little language that compiles into JavaScript. Underneath that awkward Java-esque patina, JavaScript has always had a gorgeous heart. CoffeeScript is an attempt to expose the good parts of JavaScript in a simple way. The golden rule

oracle面试经典题

1.sql面试题(学生表_课程表_成绩表_教师表) 2. 问题描述: 本题用到下面三个关系表: CARD 借书卡. CNO 卡号,NAME 姓名,CLASS 班级 BOOKS 图书. BNO 书号,BNAME 书名,AUTHOR 作者,PRICE 单价,QUANTITY 库存册数 BORROW 借书记录. CNO 借书卡号,BNO 书号,RDATE 还书日期 备注:限定每人每种书只能借一本:库存册数随借书.还书而改变. 3. 问题描述: 为管理岗位业务培训信息,建立3个表: S (S#,SN,S

50个常用的sql语句

50个常用的sql语句 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 问题: 1.查询"001"课程比"002"课程成绩高的所有学生的学号: select a.S# from (select s#,score from SC where C#='001') a,(select s#,score from SC wher

c#笔试基础(转载)

技术类面试.笔试题汇总 注:标明*的问题属于选择性掌握的内容,能掌握更好,没掌握也没关系. 下面的参考解答只是帮助大家理解,不用背,面试题.笔试题千变万化,不要梦想着把题覆盖了,下面的题是供大家查漏补缺用的,真正的把这些题搞懂了,才能“以不变应万变”.回答问题的时候能联系做过项目的例子是最好的,有的问题后面我已经补充联系到项目中的对应的案例了. 1.简述 private. protected. public. internal 修饰符的访问权限. private : 私有成员, 在类的内部才可以

欢迎技术爱好者来到我的博客

经典SQL语句大全.50个常用的sql语句 作者:西西 50个常用的sql语句 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 问题: 1.查询"001"课程比"002"课程成绩高的所有学生的学号: select a.S# from (select s#,score from SC where C#='001') a,(

学生表 课程表 成绩表 教师表 50个常用sql语句

原文:http://www.cnblogs.com/zengxiangzhan/archive/2009/09/23/1572276.html Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表   create table Student(S# varchar(20),Sname varchar(10),Sage int,Ssex varchar(2)

CPU 分支预测

去年在安宁庄的时候, 有个同事阐述了一个观点:php中的if else  在执行时考虑到效率的原因,不会按我们的代码的顺序一条一条去试,而是随机找出一个分支,执行,如果不对,再随机找到一个分支 当时由于种种原因,也没过多去想这个问题,最近查了下资料,发现里面的学问还挺大的 php解释器是由c编写的,是个经编译生成的二进制文件, 我们编写的PHP代码相当于这个C程序的参数,只不过这个参数是个一个的文件, 这个C程序要解析这个php文件,产生相应的opcode,再去执行opcode对应的函数,每一部

C++ 基础知识复习(五)

UML建模部分 70. 什么是UML: 答: Unified Modeling Language, 统一建模语言,是一种标准的图形化建模语言.是面向对象分析和设计的标准表示. 71. UML有哪些图: 答: 类图.对象图,用例图,序列图.协作图,状态图.活动图,构件图和部署图. 72. UML图中的符号: 答: 类图 - 三个部分, 类名,属性和方法,三个符号+public - private #protected 包图- 接口 - 可以是一个原点,也可以类似类图,里面用尖括号说明interfa