BTB结构分析

news2024/11/24 3:42:37

 

I-BTB

  • 每个entry对应一条指令;
  • IBTB相较于其他的结构,有最大的tag开销,因为每个entry都有tag域段;
  • entry内部没有冗余信息,每个信息都是必须的,同时每个entry的内容都不会有重复;
  • 每分配一个新的branch,都会替换掉原来的一个branch;(索引在相同的位置)
  • 一般会设计成多个port,interleave的结构,保证一个cycle可以读出所有的entry;

 R-BTB

  • 每个entry保存的是对齐的一块region,i.e. 32B,64B,对应的是多个指令;
  • 每个entry会有n个branch slots, 对应n个branch指令;
  • 通过region aligned pc来访问每个entry,可以拿到如下信息:
    • 有多少条连续的指令可以fetch,也就是通过一个BTB entry.可以得到多个fetch pc;
    • 每个branch指令的type;
    • 第一条跳转指令对应的target;
  • 可以多条branch指令,使用一个TAG(同一个region,使用一个);
  • 同样每个entry之间,没有相同的信息,也就是没有冗余;
  • if there exists an entry tracking the block with a free branch slot, no other branch gets displaced;
  • 访问RBTB的entry时,其确定的跳转地址由下面几个因素决定:
    • 该entry中分支指令的跳转地址;(比如,一个 32B 区域entry有两个slot,分别缓存 0x4和 0x1C 处的branch信息)
    • entry的结束地址;
    • 访问pc的偏移地址:
      • 例如,如果偏移地址是0,那么下一个取指地址可能是:0x4的tgt, 0x1c的tgt, 以及都不跳转,走到entry end的地址;
      • 如果偏移地址是0x10, 那么下一个取指地址只可能是:0x1c的tgt, 以及不跳转,走到entry end的地址;
  • 也就是说,必须将每个slot的offset和pc的offset进行比较,这会增加一些逻辑(IBTB/BBTB没有这个逻辑),可能会造成时序紧张;
  • 还有个问题,如果region过小,为了解决多取指令的问题,为了解决一条指令跨两个region的问题,BTB需要提供两个port(或者interleave), 才能满足该要求;

B-BTB

  • 从第一个地址开始,要么找到跳转指令,则结束当前block, 要不就直到block满,结束当前block;
  • which is a sequence of at most 𝐼 instructions (or bytes), 𝐵 of which can be observed taken before branches. So far always taken branches cause a block to end before 𝐼 instructions. 
  • 每个entry会有n个branch slots, 对应n个branch指令;
  • 同R-BTB, 访问单个entry, 可以拿到多个预取指令的pc;
  • 可以多条branch指令,使用一个TAG(同一个block, 也可以使用一个?把offset扩宽,使其能够指向下一条?或者tag保证两条fetchline的相同?);
  • 如上图所示,在B-BTB的结构中,不同entry之间,会存在相同的指令,也就是会有overlap, 所以在大量entry的场景下,建议不要使用B-BTB,这样会浪费很多entry;
  • 好处:B-BTB打通了fetchline的限制,可以尽可能的,在一次fetch的过程中,产生更多的可以读取的指令,而不会被fetchline的边界所打断;
  • if there exists an entry tracking the block with a free branch slot, no other branch gets displaced;

Micro-BTB

  • 可以理解为,也是一种I-BTB, 只是是一种变种,在相同的entry大小下,其可以存放多条分支指令的tag和target;
  • 提出这种结构的原因时,工艺增长比较慢,指令越来越多,BTB越来越大,对面积和时序的要求都很高;

  • 这种结构的核心是:
    • 将branch本身的pc做hash, 原来56bit只能放一个tag, 现在可以放2个hash后的tag;
    • 原来只能放一个target address, 现在hash后可以放两个,分别对应两条branch指令;
    • 将BTB的索引做一些算法,尽量不要让太多的branch都索引到一个entry上,减少conflict;
  • 这篇文章中,有两个观点比较有意思;

1. L1I的miss与BTB miss相比,谁带来的penaty更大?--BTB miss, 原因如下:

  • L1I miss后,在decoupled的FE种,分支预测还是在继续工作的,这些请求会继续送到L1I, 参与后续读取ram, 判断的流水线,可以将future instruction的latency给隐藏掉;
  • 而BTB miss之后,流水线要么被stall,要么流水线继续工作,但是是在错误的分支上;等到真正的结果计算出来以后,整条流水线会被flush掉;
    • 整个过程,会消耗很多个cycle;
    • 同时,flush之后,decode queue是空的,这中间也有一段时间,没有任何指令可以送给BE进行处理;
    • 而且,BTB miss之后,需要重新开始从L1I取指,这个取指过程(从L1/L2/L3/DDR中取指令),在L1I miss的时候,也会经历;
  • 综上,BTB miss带来的penalty更大;、

2. FTQ/Decode Q的深度,对处理器性能的影响;

  • 先说结论:increasing the FTQ and decode queue size increases the branch resolution latency.
  • 原因如下:
  • 在decode阶段,每个cycle所能够decode的指令,或者说送给BE的指令,是固定的,如果queue size增加,则这条指令在queue中待的时间就越长;
    • 这就会导致resolve branch会带来更长的时间;
  • 同理,在FTQ/DQ中,存放了太多的指令,一旦预测错误,所有的指令都需要被flush;
  • 同时,队列大小的增加,会导致BE中的分支指令个数增加,而多个分支指令间,可能存在资源竞争,乱序,仲裁等问题,导致分支指令发现mismatch的时间增加;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2205738.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

过拟合 overfitting

from [Approaching Any Machine Learning Problem] 人话理解 过拟合的重点在于在训练集上的表现上升,而测试集的表现没有像在训练集上表现的这么好,就算过拟合。分的细的话可以分为测试集表现下降和保持稳定,或者小幅度上升。 详细上下文 …

PAT甲级-1013 Battle Over Cities

题目 题目大意 给定一个城市图,如果攻陷一个城市,该城市连接的所有路都要被销毁。要求计算出连通剩余的城市最少需要修建几条路。该图有n个顶点,m条边,k个重点城市。分别求出每个重点城市被攻陷,连通剩余城市需要修建…

ALV 和 导出 Excel 导出负号前置

CONVERSION_EXIT_Z0001_OUTPUT FUNCTION conversion_exit_z0001_output. *"---------------------------------------------------------------------- *"*"本地接口: *" IMPORTING *" REFERENCE(INPUT) *" EXPORTING *"…

javafx中root的invoke方法报错Method too large问题记录

问题描述   在使用javafx绘制PC桌面程序页面时&#xff0c;使用到了tableview&#xff0c;tableview可以很方便的维护一个可编辑的表&#xff0c;简易代码如下。 var bomList observableListOf<BomContent.BomsInfo>()tableview(bomList) {column("客户名称"…

虚拟内存及内存管理机制

图源自 小林coding 虚拟内存是什么&#xff1f; 虚拟内存是一种计算机系统管理内存的技术&#xff0c;它使操作系统能够将物理内存&#xff08;RAM&#xff09;和硬盘存储结合使用。虚拟内存的主要作用包括以下几点&#xff1a; 扩展物理内存的使用&#xff1a; 虚拟内存允许…

一种用于超稳激光的数字控制锁频电路

摘要 超稳激光具有超高的频率稳定度和极窄线宽等优点&#xff0c;广泛应用于各种精密测量物理实验。为了确保不引入额外开关噪声&#xff0c;其频率锁定电路通常采用模拟电路实现&#xff0c;但是模拟控制电路存在锁定参数调节不方便、难以实现自动锁定和远程控制等方面的不足。…

【技术】Jaskson的序列化与反序列化

文章目录 概念解释1.Jasksona.JSONJSON 的基本特点JSON 的基本结构JSON 示例 b.ObjectMapper类 2.序列化与反序列化a.序列化对象序列化集合序列化ListSetMap b.反序列化反序列化单个对象反序列化集合对象 概念解释 1.Jaskson Jackson 是一个用于处理 JSON 数据的 Java 库,所以…

大模型烧钱战,百度云亟需突围之路

百度云在人工智能大模型领域投入了大量资源&#xff0c;但高昂的研发、运营成本与压力使其在盈利方面遭遇了重大挑战&#xff0c;这成了百度集团必须正视的问题。 转载&#xff1a;科技新知 原创 作者丨萧维 编辑丨蕨影 上个月末&#xff0c;以“智能跃迁”为主题的百度云智大…

stm32 g0 使用内部flash读写

个别芯片存储空间为32k&#xff0c;注意使用范围&#xff0c;并且利用debug或者.map文件&#xff0c;避开程序占用的页。 g0hal库和其他系列有些不同&#xff0c;根据官方例程修改。 GO30F6P6是 32k FLASH.基地址0x8000000&#xff0c;长度0x8000。即0x8000000-0x8008000。在…

访问公司gitlab出现 502 Bad Gateway 错误,已经解决

文章目录 1、通过 WindTerm 连接 Ubuntu2、检查 GitLab 服务状态3、查看 Unicorn 日志4、检查 Unicorn 的 stderr 日志5、检查 PID6、停止当前运行的 Unicorn 服务7、确认 Unicorn 已停止8、删除陈旧的 .pid 文件9、重新启动 GitLab 服务10、检查状态11、查看 Unicorn 日志 我公…

会话好友区设计与开发(五)

会话好友区设计与开发&#xff08;五&#xff09; 前言 在上一集&#xff0c;我们完成了选中和切换item的颜色变化的功能&#xff0c;那么这一集&#xff0c;我们将开始封装一些必要的函数。 需求 我们需要封装一些逻辑&#xff0c;那么我们也要进行分析。 在上一集我们虽…

LeetCode:1518.换水问题(模拟 JAVA)

目录 1518.换水问题 题目描述&#xff1a; 实现代码与解析&#xff1a; 模拟 1518.换水问题 题目描述&#xff1a; 超市正在促销&#xff0c;你可以用 numExchange 个空水瓶从超市兑换一瓶水。最开始&#xff0c;你一共购入了 numBottles 瓶水。 如果喝掉了水瓶中的水&am…

coredump设置

coredump路径查看及设置 coredump路径查看 命令1&#xff1a; cat /proc/sys/kernel/core_pattern 命令2&#xff1a; /sbin/sysctl kernel.core_pattern coredump路径修改 临时修改&#xff1a;echo ‘/var/log/%e.core.%p’ > /proc/sys/kernel/core_pattern 永久修改…

基于Java的企业仓库管理系统的设计与实现(论文+源码)_kaic

摘 要 随着信息技术的不断发展&#xff0c;以及网络技术的广泛用&#xff0c;企业企业仓库存储的信息量也越来越大&#xff0c;信息变得复杂。基于人工的数据收集方式&#xff0c;在耗费大量人力的同时也降低了信息采集的效率&#xff0c;例如影响了信息正确率和信息的录入速度…

项目解决方案:连锁店视频监控接入汇聚联网解决方案

目录 一.项目背景 二.建设目标和详细需求分析 2.1建设总目标 2.2需求分析 三.系统特色 3.1数字&#xff0c;高清&#xff0c;网络化系统 3.2安全性 3.3可拓展性 3.4资源利旧&#xff0c;节约成本 四.系统实现 4.1系统方案设计 4.2拓扑组网说明 4.3用户权限管理实现…

Assignment 1 (10月12日截止)

Section 1.1 T12 &#x1f609; S o l v e &#x1f447; Solve&#x1f447; Solve&#x1f447; x x x 1 1 1- 3 x 3x 3x 2 2 2 4 x 4x 4x 3 3 3 − 4 -4 −4 3 x 3x 3x 1 1 1 − 7 x -7x −7x 2 2 2 7 x 7x 7x 3 3 3 − 8 -8 −8 − 4 x -4x −4x 1 1 1 6 x 6x 6x…

yarn install 报错 Expected version “>=18“,Got “16.20.0“

项目在初始化 (yarn install),一直报错以下信息&#xff0c;切换node 版本无法修改 1、首先使用命令检查&#xff0c;strict-ssl 是否为true和ignore-engines是否为false yarn config list2、如果不为 1 描述的值&#xff0c;使用以下命令设置 yarn config set strict-ssl t…

20241011给华硕的FX607JVCPU安装WIN10【intel的13代酷睿】

20241011给华硕的FX607JVCPU安装WIN10【intel的13代酷睿】 2024/10/11 17:55 缘起&#xff1a;同事新买的华硕笔记本电脑&#xff0c;WIN11的&#xff0c;需要降级为WIN10。 使用U盘安装WIN10的时候&#xff0c;常见现象&#xff1a;安装的时候找不到固态硬盘。 电脑使用的是&a…

推荐一个边缘物联网平台

AIoTedge是一个AIoT边缘物联网计算平台&#xff0c;它结合了边缘计算、物联网平台和泛协议软网关的功能。这个平台采用边云协同的架构&#xff0c;可以在多个点部署&#xff0c;与IoT云平台配合使用&#xff0c;提供分布式的AIoT处理能力。这种架构特别适用于需要AI云端训练和本…

HTTP代理的优点和局限性

在这个信息爆炸的时代&#xff0c;网络已成为我们获取知识、交流思想、开展商务的重要平台。但随之而来的隐私泄露、网络安全威胁、以及无处不在的网络监控&#xff0c;却让我们的每一次在线活动都充满了风险。 在这样的背景下&#xff0c;HTTP代理技术应运而生&#xff0c;它不…