跳转至

【香山双周报 87】20251013 期

欢迎来到香山双周报专栏,我们将通过这一专栏定期介绍香山的开发进展。我们期待您的贡献。

本次是第 87 期双周报。

在过去的两周,~~香山团队的大家度过了一个愉快的国庆假期~~前端继续修复 V3 BPU 重构后带来的性能 bug。后端整理现有代码,继续推进 V3 开发。访存缓存部分修复了数个 V2 的 bug,同时进行代码重构工作,为 V3 开发做准备。

同时向大家预告一则消息,香山团队将于 10 月 19 日在 MICRO 2025 会议上作 tutorial,我们非常期待与大家在首尔相见!

近期进展

前端

  • RTL 新特性
  • 移除 identifiedCfi (#5025
  • 合入 V3 SC 框架(#5062#5097
  • 支持 WriteBuffer 多端口写入(#5081
  • 优化 V3 ITTAGE,接入 WriteBuffer,支持 resolve 训练(#5099
  • Bug 修复
  • 修复 BPU fallthrough 预测时 cfiPosition 域有误的问题(#5058
  • 修复 TAGE 若干笔误(#5086#5090
  • 修复 MBTB 若干笔误(#5096
  • 修复 FTQ resolve queue 未被 redirect 冲刷导致 meta SRAM 读写冲突的问题(#5085#5104
  • 移除 FTQ-后端接口中 newest target 逻辑(#5101
  • 修复 ICache WayLookup 读写冲突断言条件有误的问题(#5082
  • 修复 Direct 类型分支被 IFU 修正,导致后端 JumpUnit 认为没有误预测,进而导致 BPU 无法训练的问题(#5103
  • 代码质量
  • 重构 BPU first taken branch 选择逻辑,换用 CompareMatrix 类(#5075
  • 修复 FTQ resolve queue 分支索引计算从 1 开始的问题(#5092
  • 重构 IFU MMIO 取指处理逻辑(#5021
  • 重构 IFU redirect 端口,将仲裁逻辑从 FTQ 挪到 IFU(#5064
  • 调试工具
  • 新增 BpTrace 及相关分析脚本(#5091

后端

  • Bug 修复
  • 修复了当 ROB 压缩关闭时,跨两个 FTQ 的融合指令不可压缩的问题(#5079
  • RTL 新特性
  • 在 ALU 中添加 jalr/jal/auipc 的新 uop 拆分实现
  • 代码质量
  • 优化 NewMgu 中 vialuf 的时序(#5078

访存与缓存

  • Bug 修复
  • (V2)修复发生异常时 TLB 层级重填错误、将大页错误记录为小页的问题(#5087
  • (V2)修复位图检查唤醒 l0BitmapReg 逻辑的问题(#5073
  • 将 NEMU 的 PMEMBASE 移至更高的地址空间,以防止在 mmap 以 MAP_FIXED 模式映射时发生冲突。未来可能会进一步消除对 MAP_FIXED 的依赖(NEMU #930
  • 时序优化
  • 旧版 MMU、LoadQueueReplay 时序修复进行中
  • RTL 新特性
  • MMU、LoadUnit、StoreQueue、L2 等模块重构持续推进中
  • L1 Acquire 时获取路信息以在 Release 时省去读目录获得路数的过程。正在修复 Bug

性能评估

SPECint 2006 est. @ 3GHz SPECfp 2006 est. @ 3GHz
400.perlbench 35.87 410.bwaves 67.22
401.bzip2 25.51 416.gamess 41.01
403.gcc 47.87 433.milc 45.07
429.mcf 60.18 434.zeusmp 51.83
445.gobmk 30.62 435.gromacs 33.65
456.hmmer 41.61 436.cactusADM 46.20
458.sjeng 30.62 437.leslie3d 47.80
462.libquantum 122.58 444.namd 28.87
464.h264ref 56.59 447.dealII 73.82
471.omnetpp 41.41 450.soplex 52.48
473.astar 29.30 453.povray 53.50
483.xalancbmk 72.81 454.Calculix 16.38
GEOMEAN 44.66 459.GemsFDTD 39.71
465.tonto 36.72
470.lbm 91.98
481.wrf 40.64
482.sphinx3 49.13
GEOMEAN 44.96

我们使用 SimPoint 对程序进行采样,基于我们自定义的 checkpoint 格式制作检查点镜像,Simpoint 聚类的覆盖率为 100%。上述分数为基于程序片段的分数估计,非完整 SPEC CPU2006 评估,和真实芯片实际性能可能存在偏差。

编译参数如下所示:

编译器 gcc12
编译优化 O3
内存库 jemalloc
-march RV64GCB
-ffp-contraction fast

处理器及 SoC 参数如下所示:

commit defcc01
日期 2025/10/10
L1 ICache 64KB
L1 DCache 64KB
L2 Cache 1MB
L3 Cache 16MB
访存单元 3ld2st
总线协议 TileLink
内存延迟 DDR4-3200

相关链接

编辑:徐之皓、吉骏雄、陈卓、余俊杰、李衍君