首页 > 最新动态 > 【香山双周报】20241125期
最新动态
【香山双周报】20241125期
2024-11-2718

【香山双周报 64】20241125

欢迎来到我们的双周报专栏,本次是香山双周报专栏的第 64 期。我们将通过这一专栏,定期介绍香山的开源进展,希望与大家共同学习、一起进步。

近期,昆明湖各组持续推进面积、时序、功耗的优化。此外,前端修复 BPU s2_fire 的赋值,后端调试模式完成 dcsr 剩余字段设计,访存和缓存部分修复前端取指出现 guest page fault 时,gpaddr 生成逻辑错误的 Bug。本期还更新了昆明湖架构近期性能。

近期进展

前端

  • ? Bug 修复

    • ? BPU s2_fire 赋值修复 (#3850)

    • ? 修复 xstatus.FS 关闭时 C 扩展 fp 指令报异常时 xtval 的值不正确的问题 (#3859)

    • ? 不允许顺序取指跨越 MMIO/非MMIO边界 (#3873)

    • ? 修复 H 扩展取指 Guest Page Fault 时 gpaddr 不正确的问题 (#3795)

    • ? 修复支持 Zcb 后剩余 16b 空间指令异常时 xtval 的值不正确的问题 (#3886)

  • ? 功能

    • ? L1 ICache 校验出错时从 L2 重新取指 (#3899)

  • ? 功耗

    • ? BPU 动态时钟门控率优化 (#3579#3670)

    • ? 增加 SRAM 时钟门控,前端功耗降低 10% (#3889)

后端流水线

  • ? Bug 修复

    • ? 修复 dret 返回到机器模式时,未清除虚拟特权级标志位 (#3898)

    • ? 修复 vstval 在访存 trigger 触发 breakpoint 异常时没有正确更新 (#3875)

    • ? 修复 fround/fcvtmod.w.d 指令实现问题 (#3816)

    • ? 修复 vnclip 立即数是无符号数问题 (#3894)

    • ? 修复 vlbusytable 向量浮点与整数混淆的问题 (#3909)

    • ? 修复 critical-error 信号传递过早导致 difftest 比对失败 (#3885)

    • ? 修复 flh/fsh 在 fs 关闭的时候应当报非法指令异常的问题 (#3841)

    • ? 修复 ase64ks1i 保留位未报非法指令异常的问题 (#3845)

    • ? 修复大量 NEMU 模拟器与 RTL 未对齐的问题 (#669#667#666#665#664)

  • ? 时序/面积优化

    • ? 完成去除 dispatch queue 的新版分派算法,正在评估性能

    • ? 评估裁剪浮点乘加流水线条数后的性能

  • ? RVA23 Profile

    • ? 调试模式完成 dcsr 剩余字段 stopcount, stoptime, nmip, certig, extcause 设计

    • ? 支持 critical error 进入 debug 模式 (#3786)

    • ? 完善 spike 对 smrnmi/dbltrp 拓展的支持 (#3870)

  • ? 工具

    • ? 在 verilog 代码中插入编译所用 RTL 版本的 commitID 信息 (#3818)

访存与缓存

  • ? RVA23 Profile

    • ? 实现完成支持 uncache outstanding 的初版 RTL 代码,正在完善自测用例并进行测试(#3900

    • ? 在 RTL 和 NEMU 中为验证 DCache ECC 添加硬件故障注入指令(#3923),正在本地 AM 环境中进行测试

    • ? 完成 RTL 和 NEMU 对 pointer masking(Ssnpm + Smnpm + Smmpm)扩展的支持,正在整理代码准备合入主线(XiangShan #3921NEMU #677

  • ? Bug 修复

    • ? 修复 NEMU 在虚拟化 G-stage 翻译中 GVPNi 生成逻辑错误,导致根页表的物理地址计算错误的 Bug(NEMU #673

    • ? 修复前端取指出现 guest page fault 时,gpaddr 生成逻辑错误的 Bug(#3871

    • ? 修复 load 指令首次进入 LoadQueueReplay 且需 redirect 时,enqMask 的生成逻辑(#3884

  • ? PPA 优化

    • ? 时序:MemBlock 优化 ECC 校验相关的关键路径,优化时序违例 -54ps -> -40ps (#3908)

    • ? 面积

      • 优化 L1 TLB 中寄存器多份复制导致的面积冗余,优化后 L1 TLB 面积降低约 24% (#3903)

      • DCache 容量不变的同时由 8-way 改为 4-way (#3849)

      • Directory 中合并 tagArray 与 eccArray (#3902)

      • 删除 MemBlock 中冗余的信号/逻辑以优化面积 (#3560)

    • ? 功耗:为 DCache SRAM 添加门控,MemBlock 总功耗降低 23.38% (#3824)

评估

我们采用 SimPoint 对程序进行采样,基于我们自定义的 Checkpoint 格式制作检查点镜像,Simpoint 聚类的覆盖率为 100%。SPEC CPU2006 使用 gcc 12 进行编译,开启 O3 优化,采用 jemalloc 内存库,设置 SPECfp 2006 的 -ffp-contraction 选项为 fast,指令集为 RV64GCB。我们使用 11 月 22 日 f12520c 版本的香山处理器(缓存大小配置为 64KB L1 ICache + 64KB L1 DCache + 1MB L2 + 16MB L3,访存单元为 3ld2st 流水线),在仿真环境下运行了 SPEC CPU2006 片段,使用 DRAMsim3 模拟 CPU 在 3GHz 情况下 DDR4-3200 内存的延迟。以下为 SPEC CPU2006 的分数估计情况:

上述分数为基于程序片段的分数估计,非完整 SPEC CPU2006 评估,和真实芯片实际性能可能存在偏差!

后记

香山开源处理器正在火热地开发中,新的功能与新的优化在持续添加中,我们将通过香山双周报专栏定期地同步我们的开源进展。感谢您的关注,欢迎在后台留言与我们交流!

在香山昆明湖架构研发后期,性能会每月公布一次,敬请期待!

相关链接

  • ? 香山技术讨论 QQ 群:879550595

  • ? 香山技术讨论网站:https://github.com/OpenXiangShan/XiangShan/discussions

  • ? 香山文档:https://xiangshan-doc.readthedocs.io/

编辑:李燕琴、林志达、满洋、刘泽昊、冯浩原、马月骁

审校:香山宣传工作组


点我访问原文链接