跳转至

源码地图

本页把“想理解什么”映射到首要入口。链接固定到本站文档基线 commit,便于未来 对比;在本地阅读时仍应从当前 checkout 搜索符号。

顶层与参数

目标 首要入口 继续下钻
核内模块连接 XSCore.scala XSTile.scalaL2Top.scala
Core 默认参数 Parameters.scala 各模块 *Parameters.scala
SoC/config 组合 top/Configs.scala top/ArgParser.scala
构建入口 Makefile build.millscripts/

前端

问题 入口目录/文件
前端总连线、redirect frontend/Frontend.scala
分支预测器组合 frontend/bpu/Bpu.scala
预测组件 frontend/bpu
预测块排队与提交训练 frontend/ftq/Ftq.scala
ICache frontend/icache
取指/预译码 frontend/ifu
前后端弹性缓冲 frontend/ibuffer/IBuffer.scala

后端

问题 入口目录/文件
后端区域与连接 backend/Backend.scalabackend/Region.scala
控制块 backend/CtrlBlock.scala
译码 backend/decode
重命名与恢复 backend/rename
调度/发射 backend/issue
执行单元 backend/exubackend/fu
ROB/RAB 与退休 backend/rob
CSR/Trap/Interrupt backend/fu/NewCSR

访存、MMU 与 Cache

问题 入口目录/文件
MemBlock 总连线 mem/MemBlock.scala
Load/Store 流水 mem/pipeline
LSQ、replay、前递 mem/lsqueue
访存依赖预测 mem/mdp
预取 mem/prefetch
DCache cache/dcache
TLB/PTW/PMP/PMA cache/mmu
L2/L3 与 CHI XSCache

观测与验证

目标 入口
Top-down 归因 backend/TopDownGen.scalascripts/top-down
模块性能事件 在源码中搜索 XSPerfAccumulategeneratePerfEvent
差分测试 difftest
数据库/波形调试 scripts/xspdbdocs/XSPdb

本地搜索模板

# 找模块定义与实例化
rg -n 'class NewLoadUnit|new NewLoadUnit' src/main/scala

# 找一次 redirect 的生产者和消费者
rg -n 'redirect' src/main/scala/xiangshan/{frontend,backend,mem}

# 找所有性能事件
rg -n 'XSPerfAccumulate|generatePerfEvent' src/main/scala/xiangshan

# 找一个 CSR 的定义、许可检查和使用
rg -n '\bsatp\b' src/main/scala/xiangshan/backend/fu/NewCSR