转自公众号:香山开源处理器
http://mp.weixin.qq.com/s?__biz=Mzg5MTY4MjgyNg==&mid=2247486660&idx=1&sn=b01cbd5827da3985bd22323992a5844e
【香山双周报 62】20241028 期
欢迎来到我们的双周报专栏,本次是香山双周报专栏的第 62 期。我们将通过这一专栏,定期介绍香山的开源进展,希望与大家共同学习、一起进步。
近期,昆明湖各组持续推进面积、时序、功耗的优化。此外,前端修复了 ECC 到 Bus Error Unit 路径上的 Mux1H,后端 VS/S/M 模式双重陷入拓展 (Ss/mdbltrp) 正在合入主线,访存和缓存部分修复了向量异常相关的 Bug。本期还更新了昆明湖架构近期性能。
近期进展
前端
? Bug 修复
? ECC 到 Bus Error Unit 路径上的 Mux1H 修复 (#3784)
? 时序
? FTQ -> FDIP 预取的时序优化 (#3499)
? 将 io.flush 从预取的关键路径上移除 (#3542)
? s2_finish 到预取的时序优化 (#3545)
? Code Style
? 打开了 scalafmt 自动格式化,并在 CI 加入自动检查 (#3370)
? 移除了未使用的 import,手动格式化一些 scalafmt 处理得不好的折行 (#3791)
后端流水线
? Bug 修复
? 修复 H 拓展 gpa 获取不一致的问题以及修复 Misalign 访存相关 TLB 的问题 (#3681, #3679)
? 修复向量访存异常在写回时,如果有更老的异常时,isEnqExcp 应置零的问题 (#3778)
? 修复 ebreak 指令触发 breakpoint 异常时,以及压缩指令发生非法指令异常时,xtval 更新错误的问题 (#3769, #3762),NEMU 也完成了对应修改 (#599)
? 修复向量访存 trigger 相关问题 (#3772, #3745)
? 修复 CSR 异常分开存储导致的错误拉高问题 (#3771)
? 修复 xcause 的中断选择策略与 xtopi 不一致的问题(#3753)
? 修复 NEMU 在部分指令设置 xstatus.FS 为 Dirty 时的行为与 RTL 不一致的问题 (#606, #605, #598, #595, #591, #588)
? 修复 Misalign 访存相关 TLB 的问题 (#3731)
? 时序/功耗优化
? 优化唤醒,取消以及访存依赖时序 (#3737)
? 评估后端面积优化点以及潜在收益
? RVA23 Profile
? 计数溢出和基于特权级的过滤拓展 (Sscofpmf): 添加 RTL 指导 NEMU overflow 更新,RTL 支持基于特权级的过滤(#3771),NEMU 完成 mhpmevent 实现以及相应修改 (#574)
? VS/S/M 模式双重陷入拓展 (Ss/mdbltrp) 正在合入主线 (#3789)
? NEMU 实现 A 拓展的 trigger 支持 (#592)
访存与缓存
? CHI 总线
? CHI-L3: OpenLLC + OpenNCB 合入主线(配置:KunminghuV2Config)(#3672)
? Bug 修复
? 修复连续的两条 MMIO 访存,均发生 non-data error 异常时导致的卡死问题 (#3728)
? 修复对非对齐的 HLV(hypervisor load)指令进行拆分后,丢失虚拟化相关信息的 Bug (#3759)
? 修复未执行完毕一条非对齐指令前,StoreQueue 误提交该指令的 Bug (#3758)
? 修复向量异常相关的 Bug,保证向量访存指令在乱序执行后,能够保留按顺序最早的一项异常 (#3733)
? 修复由向量访存单元无法接收 uop 发射导致的卡死问题 (#3741)
? PPA 优化
? MemBlock 内部和端口时序持续优化,目前内部违例优化至 -45ps,近期优化包括:去除 Dcache s2tag 到 dataArray 之间的关键路径、优化 MemBlock 向 L2 Cache 发送 CMO 请求的时序、优化 LoadUnit 写回端口的选择逻辑,以及非对齐访存的异常写回逻辑等 (#3748)
? 对 DCache SRAM 添加 clock gating,memory 的内部功耗降低 51%
? 工具
? CHIron:实现以二进制形式存储 CHI Log 信息,相较于文本格式存储,解析速度快 6 倍,文件空间占用减少 83%
? TL-test-new:添加 OpenLLC 的 CI 流程,支持 MMIO 测试
? L2 HPM(性能计数器):根据物理设计调整连线 (#3747)
评估
我们采用 SimPoint 对程序进行采样,基于我们自定义的 Checkpoint 格式制作检查点镜像,Simpoint 聚类的覆盖率为 100%。SPEC CPU2006 使用 gcc 12 进行编译,开启 O3 优化,采用 jemalloc 内存库,设置 SPECfp 2006 的-ffp-contraction 选项为 fast,指令集为 RV64GCB。我们使用 10 月 26 日 b3c3582 版本的香山处理器(缓存大小配置为 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/
编辑:李燕琴、林志达、满洋、刘泽昊、冯浩原、马月骁
审校:香山宣传工作组