【香山双周报 110】20260902 期
欢迎来到香山双周报专栏,我们将通过这一专栏定期介绍香山的开发进展。本次是第 110 期双周报。
关于香山近期开发进展,前端修复了多个分支预测与取指问题,并优化了 uBTB 训练及 IFU/ICache 时序;后端推进了 V3 寄存器堆相关重构;访存与缓存修复了多个问题,并继续推进 V3 开发;XSAI 修复了矩阵译码、访存和操作数唤醒问题,并完善了 DiffTest 与 CI;基础设施方面,增强了 FPGA DiffTest、NEMU/QEMU checkpoint 以及 GSIM 构建和仿真能力,并持续推进 XS-GEM5 模型对齐和性能探索。
社区贡献者 muke101 通过 GitHub Issue 向我们提供了 PHAST 内存依赖预测算法的 gem5 开源实现,在此特别致谢。XS-GEM5 在该实现基础上进行了进一步的重构与优化。
同时向大家预告一则消息:香山团队将联合新加坡国立大学的 Trevor E. Carlson 教授,在希腊举行的 MICRO 2026 会议期间举办题为 Agile Development and Verification for Chips 的专题研讨会(workshop)。研讨会定于 10 月 31 日举行,现面向社区公开征稿。欢迎访问投稿网站(https://workshop.xiangshan.cc)了解详情并投稿,期待届时与大家相聚希腊,共同交流与探讨!
近期进展
前端
? Bug 修复 ? 修复前端对 canonical PC 地址的检查,并增加相关仿真测试(#6340) ? 在 IFU redirect 的 canTrain条件中补充notCfiTaken信号(#6398)? 在 TAGE 重置 useful counter 时清空待处理的写请求,避免旧请求覆盖重置结果(#6377) ? 修复 TAGE 使用 base prediction 时重复读取预测表的问题(#6356) ? 修复 BPU S1 和 S3 均预测 not taken 时可能误触发 s3_override的问题(#6417)? 使用训练访问而非预测访问更新 BTB 替换状态(#6348) ? 性能优化 ? 按预测表的训练状态维护 UseAltOnNa,降低分支别名干扰和寄存器开销(#6328)? 同时使用 resolve 和 fast train 路径训练 uBTB,减少错误预测重定向后的额外气泡(#6237) ? PPA 优化 ? 提前计算 t0_firstMispredictMask,优化 FTQ 到 BPU train cache 的写入时序(#6375)? 移动 pre-decode 和 maybeRvc逻辑并寄存 ICache 数据,优化 IFU/ICache 指令对齐路径时序(#6220)? 代码重构
后端
? 代码重构
访存与缓存
? RTL 新特性 ? 将 openLLC 容量配置扩大到 32 MB(#6401) ? 实现并集成独立的 L3 stash 预取路径,包括 L1 侧桥接、CHI StashOnceShared 请求及 openLLC stash refill 处理(XSCache #25、#6274) ? 新增 TLB、请求过滤器、PTW 和 L2TLB 完成路径的性能计数器,并修正 PageCache 命中统计条件(#6383) ? 新增 F-POP L2 预取反馈控制器,根据命中、延迟、污染和竞争反馈调节各类预取器(XSCache #24) ? Bug 修复 ? 对齐前端与 MemBlock 的 CSR 变更 TLB flush 延迟,避免旧 epoch 的 PTW 请求跨越 flush 边界(#6421) ? 修复 L3 预取接收端口的生成条件,并在编码前检查普通 MSHR TxnID 是否侵入 stash 预留空间(XSCache #28) ? 修复非最老的跨页非对齐 store 注入 tail 请求后持续阻塞最老请求所导致的死锁(#6382) ? 补齐预取请求使能向量,使六个预取器的请求使能保持同步(XSCache #27) ? 仅在 MissEntry 请求有效时允许 secondary miss 合并(#6308) ? (V2)在 VSegment 接管 DCache load port 0 时终止尚未完成的硬件预取请求(#6389) ? 时序优化 ? 将 DCache WritebackQueue 的 release 仲裁从轮询策略改为最低索引优先策略(#6379)
XSAI
? Bug 修复 ? 修复 MLCT 转置数据布局和 MSC/MSCT 的 C MatrixReg 读地址(XSAI #106、CUTE #38) ? 修复 msetcfg/mgetcfg误译码(XSAI #107)? 修复矩阵访存 AccessAckData响应与 HintQueue 状态不同步问题(XSAI #110、XSAICache #6)? 修复 Mx 操作数延迟写回漏唤醒导致 MLS 指令永久阻塞的问题(XSAI #111) ? 代码质量 ? 调试工具
基础设施
? FPGA DiffTest ? 支持运行时动态配置 CPU AXI 各通道延迟(difftest #950) ? 修复 DiffTest Squash 数据通路重复握手问题(difftest #946) ? 支持 FPGA 过滤调试价值低、面积开销大的验证信号(difftest #948) ? FPGA 划片约束支持 OpenLLC,并更新昆明湖 flash 初始化固件(env-scripts #162) ? 修复 FPGA 跨片路径及时钟异步路径约束,支持按固定 CPU/RTC 比例调整运行时钟频率(env-scripts #159、env-scripts #161) ? NEMU 参考模型 ? 在 CI 中增加 nexus-am RVH 裸机回归测试(NEMU #1162) ? 修复 RVH final TLB 命中时未恢复 MBMC 页表层级的问题(NEMU #1171) ? 修复 Linux 开启 THP 时,按地址执行 SFENCE.VMA未完整失效大页对应 HostTLB 条目的问题(NEMU #1175)? 切片 ? 开启 Linux THP 透明大页模式,提升部分 workload 的性能(workload-builder #54) ? QEMU 支持 UART16550 串口,并与香山平台的串口地址及参数对齐(qemu #17) ? libcheckpoint 支持配置串口地址(LibCheckpoint #27) ? 改进 QEMU profilingv2 插件,通过 nemu_trap显式启动 profiling,提速 23%(qemu #16)? 优化 NEMU SimPoint profiling 热路径,提速约 20%(NEMU #1178) ? GSIM 仿真器
XS-GEM5
? 模拟器对齐 ? CDP 预取配置对齐(XS-GEM5 #1060) ? BPU S1 行为对齐(XS-GEM5 #980) ? 2-fetch 对齐(XS-GEM5 #1072) ? Virtual StoreQueue 对齐实现(XS-GEM5 #991) ? LSU 可参数化配置代码重构(XS-GEM5 #1042) ? 新特性探索 ? MDP 算法 PHAST(XS-GEM5 #1008) ? SMT:一拍同时预测两个线程的 fetch_block(XS-GEM5 #1052) ? PairTAGE(2Taken)实现(XS-GEM5 #830) ? 基础设施
性能评估
处理器及 SoC 参数如下所示:
性能数据如下所示:
编译参数如下所示:
注:我们使用 SimPoint 对程序进行采样,基于我们自定义的 checkpoint 格式制作检查点镜像,Simpoint 聚类的覆盖率为 100%。上述分数为基于程序片段的分数估计,非完整 SPEC CPU2006 评估,和真实芯片实际性能可能存在偏差。
相关链接
? 香山技术讨论 QQ 群:879550595 ? 香山技术讨论网站:https://github.com/OpenXiangShan/XiangShan/discussions ? 香山文档:https://docs.xiangshan.cc/ ? 香山用户手册:https://docs.xiangshan.cc/projects/user-guide/ ? 香山设计文档:https://docs.xiangshan.cc/projects/design/
编辑:李衍君、曾锦鸿、杨泽辰、张韩乐、游昆霖、甄好、燕翼鸣
