【香山双周报 98】20260316 期
欢迎来到香山双周报专栏,我们将通过这一专栏定期介绍香山的开发进展。本次是第 98 期双周报。
昆明湖 V2 已经回片!目前正在进行紧张刺激的测试工作,更多的信息将在后续披露,敬请期待!
关于香山近期开发进展,前端修复了一些 BPU 的性能 bug,后端优化了部分模块的时序,访存继续进行模块的重构与测试。
前端 TAGE 分配策略 bug 定位与修复
不久前,某关注香山进展的神秘团队向我们反馈了一个性能 bug。他们在 FPGA 上运行昆明湖 V3 时发现, V3 的性能甚至不如 V2。经过简单的定位,在 libquantum 这个测试程序中,V3 的分支预测准确率随着运行时间的增加有着显著的下降,从而导致 IPC 下降。
收到这个反馈后,我们立即展开了复现与定位。其实最先怀疑的是环境问题,因为 V3 在我们的切片性能评估流程中一切正常,但最终证明各项配置均正确。这一现象在 FPGA 上执行 30 分钟后才较为显著,但 FPGA 上调试手段有限。然而,如果要在仿真环境中运行,需要至少一个月才能复现。因此,我们最终决定在 Palladium 上进行复现,折算过来需要运行约一天左右。
一天后,我们成功复现了这个问题,下图是 libquantum 测试程序中 IPC 随时间的变化曲线,可以看到 IPC 在运行一段时间后有明显的下降。
而在众多性能计数器中,我们发现了 allocate_failure 这个计数器,它的变化趋势竟然与 IPC 的变化趋势高度相关!这个计数器统计了TAGE表项分配失败的次数,按照设计预期不应当有这么多。
经过定位,我们发现TAGE的分配条件有误,会导致已有表项无法被替换,从而导致新的分支训练不进TAGE。具体代码修改可以参考这个 PR。修改后的 IPC 与 allocate_failure 的趋势如下图所示。
多么漂亮的两个曲线!我们非常感谢这个神秘团队的持续关注与积极反馈,也欢迎更多关注香山的朋友与我们一起将香山越做越好。
近期进展
前端
? RTL 新特性 ? Bug 修复 ? 修复 MBTB 中 baseTable 在正确预测时饱和计数器未更新的问题(#5602) ? 修复历史信息寄存器在遇到 s3 override 的处理逻辑(#5625) ? 修复 TAGE 表项分配逻辑,解决持续运行一段时间后分配失败率飙升的问题(#5677) ? 时序/面积优化 ? 修复 SC 训练逻辑时序(#5648) ? 代码质量 ? 调试工具 ? 重构预测来源性能计数器(#5639)
后端
? RTL 新特性 ? (V2) 添加 hartIDDmodeWidth 以选择 debug mode 可读的 mhartid 位数(#5627) ? Bug 修复 ? 修复 v0 在 vldMergeUnit 中的数据输出问题(#5675) ? 时序优化 ? 减少 BJU IssueQueue 的大小,修复 IssueQueue 的 ready 时序,修复 interrupt 选择的时序(#5636) ? 将 RatWrapper 从 RegRename 中移到 Rename 中以检查 Rename 时序(#5637) ? 代码质量 ? 改善包含 Issue 部分在内的多处代码质量问题(#5652)
访存与缓存
? RTL 新特性 ? MMU、LoadUnit、StoreQueue、L2 等模块重构与测试持续推进中 ? 将 mmioBridgeSize 调整到 16 以提升 NC 性能(CoupledL2 #475) ? Bug 修复 ? 将部分 V2 的改动同步到 V3 ? CoupledL2 在重新写回时保持 LikelyShared(CoupledL2 #474) ? 时序修复 ? 通过或操作而非加法生成 gpaddr(#5644) ? 性能修复 ? 修复异步桥深度为 4 时的性能(CoupledL2 #472)
性能评估
处理器及 SoC 参数如下所示:
性能数据如下所示:
编译参数如下所示:
注:我们使用 SimPoint 对程序进行采样,基于我们自定义的 checkpoint 格式制作检查点镜像,Simpoint 聚类的覆盖率为 100%。上述分数为基于程序片段的分数估计,非完整 SPEC CPU2006 评估,和真实芯片实际性能可能存在偏差。
相关链接
? 香山技术讨论 QQ 群:879550595 ? 香山技术讨论网站:https://github.com/OpenXiangShan/XiangShan/discussions ? 香山文档:https://xiangshan-doc.readthedocs.io/ ? 香山用户手册:https://docs.xiangshan.cc/projects/user-guide/ ? 香山设计文档:https://docs.xiangshan.cc/projects/design/
编辑:徐之皓、吉骏雄、陈卓、余俊杰、李衍君
