学习:BPU

图片来源:https://docs.xiangshan.cc/projects/design/zh-cn/kunminghu-v3/frontend/ICache/Array/

结合香山昆明湖 V3 的真实参数(64B 缓存行、8×8B DataArray、BPU 动态取指块),这张图本质是解释 BPU 如何用"32B 对齐边界"保证 ICache 无访问冲突。

以下是重新梳理的精准解释:

1. 图的抽象含义(非 8B 物理 Bank)

虽然 V3 默认物理 DataArray 是 8 个 8B Bank,但这张图是为了说明"跨 Set 冲突"而画的抽象逻辑模型。

  • 图中每行是一个 Set(缓存行,64B),分为 8 个格子(可理解为 8B 粒度的排布,或抽象为 32B 对齐的大块)。
  • set x 和 set x+1 纵向排列,代表 ICache 的 NumInterleaveBanks(交织物理 SRAM)。若一拍同时访问同列(如都访问 bank4),就会引发物理 SRAM 冲突。
  • startVAddr 落在 set x 的 bank6,意味着取指从非对齐位置开始,可能跨越到 set x+1。

2. 关键地址与对齐边界(图中箭头)

  • startVAddr :取指起始地址(图中在 set x 的 bank6)。
  • startVAddr+32 / +64:直观的地址偏移标记。
  • (startVAddr+64) aligned to 32 (核心红线):
    • 从起始地址加 64B 后,向下对齐到 32B 边界。
    • 图中该箭头指向 set x+1 的 bank3 与 bank4 之间。这定义了取指块的安全右极限。

3. takenCfiPosition 的强制约束

  • 定义:BPU 预测的分支跳转指令位置(取指块动态终点)。
  • 规则 :BPU 硬件设计强制 takenCfiPosition 必须落在上述"32B 对齐边界"之前。
  • 图中体现 :红色高亮的 takenCfiPosition 在 set x+1 的 bank6(靠近起点),但无论如何向右延伸,至多只能到 set x+1 的 bank3 末尾。
  • 绝对禁止 :不可能落到 bank4 及以后。

4. 为何这样能"保证不冲突"?

  1. 固定安全窗口 :起点 bank6(set x)+ 边界截断(set x+1 的 bank3 末),实际覆盖了连续的 64B 空间(跨两个 Set,但范围被锁死)。
  2. 避免同列碰撞 :若允许落到 bank4 及以后(如 bank4~bank7),取指范围会过度延伸,导致同一拍内对 set x 和 set x+1 的同名物理 Bank 产生双重访问(冲突)。
  3. ICache 无条件信任 :BPU 把非法的预测值消灭在源头,ICache 只需按 takenCfiPosition 激活对应的 8B 物理 Bank(V3 实际动作),无需动态拼接或冲突检查,实现"傻而快"。
  4. 跨页兜底:实际 V3 中,若此边界跨越 4KB 页,BPU/FTQ 会进一步截断到页尾,保证不跨页。

5. 一句话总结图示

这张图用抽象 Bank 证明:BPU 通过"+64B 对齐到 32B"的硬约束,把动态取指块锁死在 4 个逻辑块(64B)内,确保不越界到 bank4,从而从物理上杜绝了 ICache 的跨 Set 访问冲突。

相关推荐
AI职业加油站2 小时前
AI 校招现状:大模型应用工程师证书,助力简历能力证明
大数据·运维·人工智能·学习·职场发展
陈年老古董2 小时前
Hive 函数学习笔记(上):单行函数与炸裂函数
hive·笔记·学习
喜欢打篮球的普通人3 小时前
MiniMind 学习笔记(十八):速通强化学习——从 MDP 到 PPO 的概念与算法地图
笔记·深度学习·学习
老王爱玩车4 小时前
动态内存管理
c语言·开发语言·学习·面试
lvqinglou5 小时前
学习Sql-part1 for婷姐
sql·学习·性能优化
扶风ff6 小时前
练题簿在线免费刷题:创建个人任务,把刷题、听题和模考目标放到每天的学习中
开发语言·javascript·学习·小程序
SatanII7 小时前
MySQL 数据库学习总结|理论 + SQL 实训完整笔记
数据库·学习·mysql
~kiss~7 小时前
LangGraph 之 Human-in-the-loop,人机协作/在环
学习
陈年老古董7 小时前
Hive 分区表学习笔记:语法、操作、二级分区与动态分区
hive·笔记·学习
li星野7 小时前
The 3 Common Tenses — Notes & Supplements
学习