当前位置: 首页 > news >正文

RIDECORE学习记录之二

一、总体架构分为六个阶段

二、fetch阶段

这是取指阶段。

看上图,IMEM存储指令。PC模块根据Gsahre分支预测结果发出要取的指令地址。

功能好理解,就是取指令。不过,加了个分支预测。

三、看实现细节


首先看PC,PC是32位的,其中的高28位给了IMEM,从IMEM中一次取出4条指令,一条指令是32bit,4个字节,那么一次性从IMEM也就是取出16个字节。

然后,由select logic负责从中挑选出两条指令,其实质是个选择器,控制信号是PC[3:2]这两位。

四、再来看select logic的实现细节,也就是4选2的规则是什么?


首先看到4条指令分别进入了两个选择器,选择器是4选1的,也就是输入4个指令输出一条指令。

然后分别看两个选择器的控制逻辑。

左边的选择器的控制信号是select 2bit,也就是上边的PC[3:2];

而右边的选择器的控制信号是select 2bit + 1,也就是PC[3:2}+1

所以,

当PC[3:2] = 00时,左边输出4条指令中第0个;右边输出4条指令中第1个。

当PC[3:2] = 01时,左边输出4条指令中第1个;右边输出4条指令中第2个

当PC[3:2] = 10时,左边输出4条指令中第2个;右边输出4条指令中第3个

当PC[3:2] = 11时,左边输出4条指令中第3个;右边输出4条指令中第0个(回滚)

五、输出的两条指令中第二条是不是有效?需要判断

最明显的情况就是:

当PC[3:2] = 11时,左边输出4条指令中第3个;右边输出4条指令中第0个(回滚)

第0个指令已经执行过了,显然此时输出的insn 2是无效的

还有一种情况就是:

当PC[3:2] = 01时,左边输出4条指令中第1个;右边输出4条指令中第2个。

这种情况下输出的insn 2也是无效的。

所以,当PC[3:2] = 2’b*1时,有invalid insn2,见中的图的下半部分

六、到这里思路还是清晰的,总结下就是取指,不过是取四个选两个

七、下面学习fetch阶段的重点–Gshare分支预测

八、Gshare 分支预测器组成

  1. BHR(Branch History Register,分支历史寄存器)
    记录最近一段时间分支“跳/不跳”的历史。

  2. PHT(Pattern History Table,模式历史表)
    表中每个项是2-bit 饱和计数器,用来给出 Taken / Not Taken 预测。

  3. PC
    取当前分支指令地址中的一部分位,与 BHR 一起生成索引。

  4. BTB(Branch Target Buffer)
    存放分支源地址和目标地址,用来在预测跳转时给出预测目标地址。

用一话总结:Gshare = BHR + PHT + PC异或索引 + BTB。

九、Gshare 的工作方式就是:先用PC XOR BHR查 PHT 做方向预测,再在预测为 Taken 时用 BTB 给出目标地址;之后由执行结果来校正 PC、恢复/确认 BHR,并更新 PHT 和 BTB。

http://www.jsqmd.com/news/1101307/

相关文章:

  • Linux 等保三员账号 sudo 配置速查手册(精简总结版)国产银河麒麟通用
  • 元器件IC测试治具是什么?
  • 浮点运算在MCU上的坑,新手十个踩九个
  • 别再死记硬背了!用一张图+大白话彻底搞懂RocketMQ的Topic、Queue和Tag
  • JD-GUI 反编译软件
  • Dism++:Windows系统维护的完整解决方案与高效优化指南
  • Mac剪贴板只能存一条?Paste v6.5.2 帮你管理历史记录
  • 给你100万,你会做一个什么样的网站?
  • Windows风扇控制神器:FanControl中文版完全指南
  • 2026年上海新风系统品牌优选指南,清新空气从这里开始
  • 5分钟零基础入门:ServerPackCreator轻松创建Minecraft服务器包终极指南
  • 别再只会用H5跳转了!Android Scheme协议从配置到实战避坑全指南
  • VMware虚拟机跨平台迁移不求人:从Windows物理机→Mac M3芯片宿主机的完整适配路径(含UEFI固件补丁包)
  • AI视觉交互项目部署指南:从环境配置到API集成实战
  • Jmeter怎么实现接口关联
  • ChatGPT写方案全流程拆解(从Prompt工程到合规审查):央企数字化转型团队内部培训手册首次公开
  • 校园社团物资管理系统源码 Java+SpringBoot+Vue 前后分离
  • 网站关键词如何优化?
  • 如何在3分钟内实现跨平台远程桌面控制?BilldDesk开源解决方案深度解析
  • OpenMontage:全链路AI视频自动化工具,如何从脚本到视频一键生成?
  • ARM多核开发避坑指南:spinlock里用WFE还是WFI?一个真实性能调优案例
  • 计算机毕业设计之基于决策树的路面情况推测方法设计与性能分析
  • Hi3D+Codex:从图像到代码,AI驱动3D场景自动化生成实战
  • AI Agent开发实战:从零构建智能体应用的全流程指南
  • 别再死记硬背了!用这5个真实场景,彻底搞懂Cisco ASA防火墙的NAT配置
  • 小心烧板!为什么你的DC-DC电路里,一体成型电感耐压可能只有50V?
  • 5个必装的Illustrator自动化脚本:提升设计效率300%
  • 别再被APC模型绕晕了!用Stata实操带你搞定年龄、时期、队列效应分离
  • # 同一句提示词,DeepSeek和豆包谁更适合你的任务?我们做了一个「AI裁判」
  • 面试被问为什么不留在国外发展?留学生用这三步回答稳拿好评「蒸汽求职分享」