学习: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 访问冲突。

相关推荐
小嘉丶学长7 小时前
Day14 · 字典与集合
java·开发语言·网络·python·学习·1024程序员节
小李不想当小白8 小时前
SPI通信外设与W25Q64 (硬件SPI)(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
adinnet202612 小时前
电商客服对话知识库的自学习闭环与质量演进机制
学习
lazy H12 小时前
【计算机网络】第 13 篇:NAT 和端口映射是什么?为什么本地服务外网访问不了?
java·网络·网络协议·学习·计算机网络·408
试剂界的爱马仕13 小时前
α-Cyano-4-hydroxycinnamic acid(CHCA)用作 MALDI-TOF 基质的配制与使用
大数据·人工智能·深度学习·学习
小向是个Der14 小时前
嵌入式进阶——编译与链接
汇编·单片机·学习·编译原理·交叉编译
学网安的肆伍14 小时前
认证机制攻防学习|PortSwigger Authentication 靶场复现总结(二):用户名枚举进阶
学习·web安全·网络安全·burpsuite·portswigger·认证安全·靶场复现
海绵宝宝转agent14 小时前
Leetcode二叉树算法个人理解
笔记·学习·算法·leetcode·深度优先
小oo呆14 小时前
【学习心得】MCP工具开发学习笔记
笔记·学习
kyrie_sakura14 小时前
大模型学习19 大模型学习 - LangChain2_Retrieval(RAG-文档处理-向量处理检索-Milvus)
学习·langchain·milvus