香山是什么
2019 年,在中国科学院支持下,
由 中国科学院计算技术研究所 牵头发起 “香山” 高性能开源 RISC-V 处理器项目,研发出目前国际上性能最高的开源高性能 RISC-V 处理器核 “香山”,在全球最大的开源项目托管平台 GitHub 上获得超过 2500 个星标(Star),形成超过 277 个分支(Fork),成为国际上最受关注的开源硬件项目之一,得到国内外企业的积极支持——16 家企业联合发起开源芯片创新联合体,围绕“香山” 进一步联合开发,形成示范应用,加速 RISC-V 生态建设。
我们的目标是成为 面向世界的体系结构创新开源平台,服务于工业界、学术界、个人爱好者等的体系结构研究需求。此外,我们希望在香山的开发过程中,探索高性能处理器的敏捷开发流程,建立一套基于开源工具的高性能处理器设计、实现、验证流程,大幅提高处理器开发效率、降低处理器开发门槛。
香山将保持半年左右的微结构迭代周期、流片周期,持续进行微结构创新与敏捷开发方法实践。 香山处理器的正式开发从 2020 年 6 月开始,1e3fad1 是我们 第一个提交 的哈希值,代码仓库中在此之前的提交均属于 2019 年第一期一生一芯计划产出的果壳处理器。在香山处理器中,包括 CPU 流水线前端、后端、访存流水线、L1 Cache、L2/L3 Cache 等在内的关键代码均由香山团队独立实现,我们对代码的所有修改历史均在 Git 提交记录中可见。香山处理器的物理设计流程主要由我们在鹏城实验室的后端与 SoC 工程师团队完成。我们希望通过持续不断的优化与流片验证,逐步提高香山处理器的 PPA 水平,让香山成为一个开源的工业级别处理器,并成为面向世界的体系结构创新开源平台。
香山处理器第一版(雁栖湖架构) 支持 RV64GC 指令集,已在 2021 年 7 月投片,在 28nm 的工艺节点下达到 1.3GHz 的频率。2022 年 1 月,雁栖湖芯片回片并成功点亮,能够正确运行 Linux/Debian 等复杂操作系统,在 DDR4-1600 环境下初步实测 SPEC CPU2006 性能超过 7 分 @1GHz,更完整的 CPU 与 DDR 性能调优正在进行中。
香山处理器第二版(南湖架构) 支持 RV64GCBK 指令集,已在 2022 年 3 月完成 RTL 代码冻结,正在进行后端设计验证流程并将在 2022 年上半年完成投片,目标是在 14nm 工艺节点下频率达到 2GHz。
香山处理器第三版(昆明湖架构) 正在进行中,我们非常欢迎来自社区的贡献。
香山处理器将始终坚持开源,坚定地开源我们所有的设计、验证、基础工具代码。 我们非常感谢社区对香山的贡献,在硬件设计方面,香山处理器的部分模块设计受到了开源处理器、公开论文等的启发,曾参考了现有的开源 rocket-chip、berkeley-hardfloat、SiFive block-inclusivecache 等代码。我们在 Chisel 开源社区的现有总线工具、浮点运算单元、系统缓存等基础上,修改完善了它们的功能,同时优化了频率、吞吐等性能指标。与此同时,我们非常欢迎社区基于香山进行开发或者使用香山项目的代码。在众多开源协议中,我们选择了 木兰宽松许可证第 2 版,希望(1)始终保持香山处理器的开放性,木兰宽松许可证不具有传染性,用户可以放心使用;(2)立足中国国内、面向全世界,木兰宽松许可证以中英文双语表述,中英文版本具有同等法律效力。
香山处理器积极地拥抱开源社区,非常欢迎来自社区的贡献。 我们看到,一些开源 RISC-V 处理器项目很少接收外部代码提交,我们理解这一现象背后有观念与技术上的多重原因,如担心开发计划冲突、处理器设计需要兼顾多方面需求、难以评估外部贡献的质量等。对于香山项目来说,在观念方面,我们非常欢迎外部贡献,如提交问题、提交特性需求、提交代码等,每一条意见与建议我们都会认真考虑与评估。举例来说,Chisel 对工业界仍然是一个新东西,如果您更熟悉 Verilog/SystemVerilog、但希望为香山提交代码贡献,我们欢迎您向 这个仓库 提交 Pull Request。在技术层面,我们希望探索一套评估代码改动质量的流程与工具,由基础流程来确定是否接受一个代码提交。举例来说,我们希望在不久的未来,开放一套更快速、更准确的性能采样框架,来评估一个架构改动带来的性能收益,当代码提交满足不破坏已有的模块性和扩展性、具有较为一定性能收益、具有良好的代码风格等条件时,我们将接收这一代码修改。如果用一句话总结我们的开发者策略,我们非常欢迎任何对香山有益的讨论、问题提交、代码修改等。
除了微结构探索之外,香山项目还希望探索并建立一套高性能处理器的敏捷开发流程。 香山处理器的目标是成为面向世界的体系结构创新开源平台,基础能力、设施、流程的建立是香山处理器长期高质量发展的关键,我们将保持长期稳定的投入,不断努力建立处理器敏捷开发的基础设施、基础流程。在香山项目初期,我们沿用了果壳处理器的开发与验证框架。在香山项目的推进过程中,我们对其进行了大量改进,添加了包括仿真检查点、压缩文件加载、多核验证支持等功能。目前,香山处理器的验证环境相比果壳处理器已有大量改进,丰富的基础工具支撑起了香山这一复杂度量级的敏捷验证流程。此外,UCB 和 Chipyard 框架是我们学习的榜样,我们参考或使用了他们发起的很多开源项目。我们希望,随着香山项目的推进与深入,我们能够推动开源社区的不断进步,与开源社区一道,推动建立高性能处理器的敏捷开发流程与基础设施。
我们清楚地认识到,香山处理器距离业界主流水平还有很大的差距,比如在很多技术点的方案选择上,我们做的不够好。香山处理器的目标是成为面向世界的体系结构创新开源平台,我们非常欢迎来自业界前辈、高性能处理器爱好者、开源社区等提出建议和意见,只要对香山处理器项目是有益的,我们都会接受并且改进,同时,我们也欢迎并且鼓励更多的人一起加入香山处理器的开发,推动香山项目的持续创新。