RISC-V64 · Kunminghu V3 · Source-guided
从软件现象,走进乱序 CPU 内部
这是一套面向 Bring-up、性能分析与优化工程师的中文学习手册。
它不试图替代香山官方文档,而是把 ISA 语义、软件可见行为、性能现象和
kunminghu-v3 源码路径连接成一张可以反复查阅的地图。
文档基线
kunminghu-v3 @ c7b373b
中文为本站唯一内容源;上游中英文文档保持原样。
Instruction journey
一条指令从预测到提交的主路径
- 01 · FRONTEND 预测与取指 BPU · FTQ · ICache · IFU
- 02 · RENAME 译码与重命名 Decode · RAT · FreeList
- 03 · SCHEDULE 调度与执行 Issue Queue · EXU · Bypass
- 04 · MEMORY 访存与缓存 LSQ · MMU · DCache · L2
- 05 · COMMIT 提交与恢复 ROB · RAB · Redirect
恢复路径:分支预测错误、异常和访存违例会触发 redirect, 清理错误路径并恢复到可提交的架构状态。
先看版本边界
当前默认分支正在快速演进。本站的“当前默认配置”均指本仓库
DefaultConfig,
不是流片规格,也不能直接套用到 BackendV2Config、FPGA 配置或旧版南湖文档。
按问题进入¶
01 · ISA → RTL
一条指令在核内经历什么?
从预测取指、译码与重命名,到乱序执行、精确异常和顺序退休。
02 · FRONTEND 前端为什么会饿死后端?理解 BPU、FTQ、ICache、IFU 和 IBuffer,以及分支错误的恢复代价。
03 · OUT-OF-ORDER 乱序窗口怎样隐藏延迟?追踪 Rename、ROB/RAB、Issue Queue、唤醒、旁路和写回。
04 · MEMORY 一次 Load 为什么会重放?串联 LSU、LSQ、TLB、DCache、前递、违例预测和一致性请求。
05 · BRING-UP 从 reset vector 到第一个用户进程用硬件路径理解 CSR、异常/中断、页表、PMP/PMA、Fence 和 Difftest。
06 · PERFORMANCE 把 IPC 下降归因到结构瓶颈建立计数器、Top-down、源码事件和可复现实验之间的证据链。
这套文档怎样读¶
文中用三种证据层级避免“看起来像事实”的推测:
- 当前源码:可由固定 commit 的 Scala/配置直接确认。
- 上游设计说明:用于解释设计意图;若版本不同会明确标注。
- 软件推导:从硬件行为推导出的调试或优化假设,需要用计数器、波形或实验验证。
如果只想快速建立全局图景,按“学习路线”的前两阶段阅读; 如果手上已有问题,直接从上面的六个入口进入,再沿每页末尾的源码路径下钻。