【香山双周报 97】20260302 期
欢迎来到香山双周报专栏,我们将通过这一专栏定期介绍香山的开发进展。本次是第 97 期双周报。
关于香山近期开发进展,香山的同学们度过了一个快乐的春节。不多的细节请见近期进展一节。但是都不白来,我们还为大家准备了一个香山开发中的小花絮。
与 verilator 搏斗的一周
在香山的开发过程中,仿真器是非常重要的基础设施。为了贯彻开源理念,在香山的开发与一部分验证工作中,我们一直使用的是开源仿真器 verilator。即使现在有了属于香山自己的仿真器 gsim,verilator 在功能验证方面仍然具有不可替代的作用,因为 gsim 现在还不支持打波形。此外,在 gsim 的开发过程中,verilator 一直作为重要的参考平台,帮助我们验证 gsim 的正确性和性能。
在平平无奇的一天,L 同学突然被抓去背了一个锅,前端 FTQ 模块触发了一个 assertion。这本来不是什么大问题,如果这个 assert 不是在已经冻结交付的 master 上触发的话。L 同学愉快地打开了出错波形,看了半天越看越觉得不对,因为 commitStateQueueReg_42_5 这个信号奇迹般地没有发生变化,这导致 FTQ 对提交状态的判断出错。
L 同学觉得一定是锅背太多了导致出现了幻觉。他拉上 X 同学和他一起人肉执行了 verilog 代码。然而不幸的是 X 同学也和他出现了一样的幻觉,似乎按照 verilog 代码的逻辑,commitStateQueueReg_42_5 应当在虚线后由 1 变为 2。
这时 L 和 X 判断一定是 verilator 的 bug,但另一位 X 总表示即使是 verilator 的 bug 也得再确定一下,不然怎么让人相信迄今为止的验证是正确的呢。
由于香山设置了 --trace 选项,verilator 不会将 _GEN_350234 这样的以下划线开头的信号打印在波形中。L 同学决定先将 FTQ 模块中所有的 _GEN_350234 这样的信号替换成 GEN_350234,这样就能在波形中看到他们了。当他再次生成波形后,他发现 commitStateQueueReg_42_5 再次奇迹般地发生了变化,在虚线处从 1 变成了 2。
L 同学有点麻。他将 --trace 选项改为 --trace-underscore,在不改变代码的情况下,将所有的下划线信号打印在波形中,发现 commitStateQueueReg_42_5 同样正确地变化了。
L 同学彻底麻了,他不想去看 verilator 生成的 C++ 代码,并且觉得这个锅不应当继续由他背。他将这个问题扔给了 verilator 社区,并且更新了 verilator 版本。这个问题确实消失了,然而到底是真的消失了,还是悄悄隐藏到了更深处,就等到下次遇到再说吧,L 只觉得盯着波形看了一周眼睛要瞎了。
近期进展
前端
因春节放假,进展较少。部分进展已经在 96 期双周报提到,本期对状态变化的部分进行补充介绍。
? 上期提到,目前已合入 ? Bug 修复 ? 修复 SC 训练条件未判断 MBTB 是否命中,导致用无效数据训练的问题(#5601) ? 时序/面积优化 ? 调整 BPU s2 流水级,MBTB 部分信息提前给到 TAGE(#5614) ? 新合入 ? Bug 修复 ? 修改 BPU s1 级预测生成逻辑,只要 utage 命中就全部使用 utage 修正后的预测(#5611) ? 进行中
从下期开始将回归仅介绍已合入 PR 的方式。
后端
访存与缓存
? RTL 新特性 ? MMU、LoadUnit、StoreQueue、L2 等模块重构与测试持续推进中 ? 代码重构 ? (V2)对向量 store 的 difftest 进行了重构(#5587) ? 调试工具 ? 开发用于新版 L2 Cache 的验证工具 CHI Test。持续推进中
性能评估
处理器及 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/
编辑:徐之皓、吉骏雄、陈卓、余俊杰、李衍君
