【香山双周报 65】20241209 期
欢迎来到我们的双周报专栏,本次是香山双周报专栏的第 65 期。我们将通过这一专栏,定期介绍香山的开源进展,希望与大家共同学习、一起进步。
近期,昆明湖各组持续推进面积、时序、功耗的优化。此外,前端修复 MMIO / 非 MMIO 边界跨越时全部报异常的问题,后端修复标量/向量半精度浮点拓展 (Zfh/Zvfh) 功能单元计算错误,访存和缓存部分修复 guest page fault 处理过程中,TLB 相应项被替换导致的卡死 Bug。本期还更新了昆明湖架构近期性能。
近期进展
前端
-
Bug 修复
-
面积
- ITTAGE target 地址高位拆分和缩减 (#3935)
后端流水线
-
Bug 修复
- 修复标量/向量半精度浮点拓展 (Zfh/Zvfh) 功能单元计算错误:(#3939, #3932)
- 修复 menvcfg.DTE 控制 xstatus.SDT 读写行为错误:(#3981, #3955)
- 修复 vstart 为 0 情况下,错误消除 old vd:(#3948)
- 修复 CSR 同步访问 IMSIC 的问题:(#3989)
- 修复 custom PMA CSR 寄存器读写问题:(#3966)
- 修复在中断时错误置位向量异常信息的问题:(#3990)
- 修复某些向量指令不应当置位 vs.dirty 的问题:(#3965)
- 修复 NEMU 中断代理模式的错误:(#708)
- 移除 XiangShan 在 VS 模式访问 S 模式自定义 CSR 报非法指令的的限制,对自定义内容的访问由 Smstateen 扩展进行控制:(#3978),NEMU 也完成了对应修改,并且修复在 Smstateen 扩展开启时的 CSR 权限检查:(#692)
-
时序/面积优化
-
RVA23 Profile
访存与缓存
- RVA23 Profile
- CMO:在 TileLink 总线中添加自定义的 CMO 操作,并完成 CMO 在 L1 DCache 与 L2 之间的处理通路 (#3968)
- RAS:
- Svpbmt:完成 Svpbmt 和 outstanding uncache 访问的代码实现,整理代码并已合入主线 (#3900)
-
Zicclsm:重构非对齐访存通路、完成向量非对齐访存的实现,正在整理代码准备合入主线 (#3994)
-
Bug 修复
- 修复 guest page fault 处理过程中,TLB 相应项被替换导致的卡死 Bug (#3964, #3985)
- 修复 vset 指令在 flushPipe 时无法处理中断的 Bug,将 vset 指令设置为不响应中断 (#3991)
-
修复 NEMU 处理跨页地址翻译时产生的 Bug (NEMU #710)
-
PPA 优化
- 时序:优化 DCache 命中路选择逻辑,优化 CMO 有关的时序路径(#3988)
- 面积:
- 功耗:完成单核关断 RTL 代码,正在测试单核关断流程
评估
我们采用 SimPoint 对程序进行采样,基于我们自定义的 Checkpoint 格式制作检查点镜像,Simpoint 聚类的覆盖率为 100%。SPEC CPU2006 使用 gcc 12 进行编译,开启 O3 优化,采用 jemalloc 内存库,设置 SPECfp 2006 的 -ffp-contraction 选项为 fast,指令集为 RV64GCB。我们使用 12 月 06 日 a60d667 版本的香山处理器(缓存大小配置为 64KB L1 ICache + 64KB L1 DCache + 1MB L2 + 16MB L3,访存单元为 3ld2st 流水线),在仿真环境下运行了 SPEC CPU2006 片段,使用 DRAMsim3 模拟 CPU 在 3GHz 情况下 DDR4-3200 内存的延迟。以下为 SPEC CPU2006 的分数估计情况:
| SPECint 2006 est. | @ 3GHz | SPECfp 2006 est. | @ 3GHz |
|---|---|---|---|
| 400.perlbench | 38.10 | 410.bwaves | 67.07 |
| 401.bzip2 | 25.53 | 416.gamess | 42.95 |
| 403.gcc | 47.17 | 433.milc | 45.29 |
| 429.mcf | 58.86 | 434.zeusmp | 56.75 |
| 445.gobmk | 30.30 | 435.gromacs | 37.44 |
| 456.hmmer | 40.79 | 436.cactusADM | 49.30 |
| 458.sjeng | 30.22 | 437.leslie3d | 45.29 |
| 462.libquantum | 124.56 | 444.namd | 34.65 |
| 464.h264ref | 57.72 | 447.dealII | 74.37 |
| 471.omnetpp | 40.11 | 450.soplex | 54.63 |
| 473.astar | 29.14 | 453.povray | 54.95 |
| 483.xalancbmk | 73.25 | 454.Calculix | 18.33 |
| GEOMEAN | 44.61 | 459.GemsFDTD | 40.22 |
| 465.tonto | 37.99 | ||
| 470.lbm | 102.47 | ||
| 481.wrf | 43.22 | ||
| 482.sphinx3 | 53.26 | ||
| GEOMEAN | 47.48 |
上述分数为基于程序片段的分数估计,非完整 SPEC CPU2006 评估,和真实芯片实际性能可能存在偏差!
后记
香山开源处理器正在火热地开发中,新的功能与新的优化在持续添加中,我们将通过香山双周报专栏定期地同步我们的开源进展。感谢您的关注,欢迎在后台留言与我们交流!
在香山昆明湖架构研发后期,性能会每月公布一次,敬请期待!
相关链接
- 香山技术讨论 QQ 群:879550595
- 香山技术讨论网站:https://github.com/OpenXiangShan/XiangShan/discussions
- 香山文档:https://xiangshan-doc.readthedocs.io/
编辑:李燕琴、林志达、满洋、刘泽昊、冯浩原、马月骁
审校:香山宣传工作组