过去二十年,开源软件对中国产业的发展发挥了革命性作用。很多产业比如云计算、移动互联网、大数据、人工智能、区块链都基于开源软件构建了产业核心技术,使得中国移动互联网产业处于世界领先水平。
开源软件成功降低了 App 的开发门槛,吸引和培养了大批人才,帮助企业建立了强大的自主研发能力。
开源软件的成功得益于它降低了互联网创新门槛,使得更多人能够参与到创新业务中。比如,现在开发手机 App 可能只需要3-5位开发人员花费几个月时间,其中大量甚至90%的工作基于开源代码实现,仅需在此基础上定制 10% 代码即可实现需要的功能。
另外,开源软件成功提高了互联网企业的自主能力。当年,阿里巴巴正是在“去IOE”的背景下打造了 OceanBase 数据库,目前OceanBase已是国际领先的数据库。
借鉴开源软件的成功经验,我们希望能够构建开源芯片生态,同时借助于硬件的敏捷开发,降低芯片设计的人力、 EDA 和 IP 等成本。我们希望 90% 资源来自于开源社区,用户只需付出 10% 的精力完成自定义代码,即可打造一款属于自己的芯片。
基于以上发展愿景,RISC-V行业和生态得到了极大的关注。
软件方面,目前国际开源社区积极投入RISC-V生态建设,比如Debian软件包对RISC-V的支持已经超过95%。
在硬件领域,高性能RISC-V处理器已经越来越多地进入国际竞赛阶段,RISC-V与顶尖处理器的性能差距在快速缩小。由阿里平头哥、北京开源芯片研究院等组成的RISC-V基金会数据中心工作组也已成立。
香山正是在此背景下诞生的开源项目,目标是做开源高性能的RISC-V处理器,以下是各版本介绍:
第一版名为雁栖湖架构,于2020年6月建立代码仓库,开始 RTL 实现工作;于2021年7月完成28nm流片,频率1.3GHz,实测SPEC CPU2006性能超过7分/GHz。
第二版名为南湖架构,于2021年5月开始 RTL 实现工作,持续进行设计讨论。预计将于22年底投片,预估SPEC CPU2006 20分,2GHz@14nm。
第三版名为昆明湖架构,已经开始设计规划,新增支持 RISC-V 向量(Vector, V)扩展指令集。
目前,香山在 github、gitee等平台均已开源,采用Mulan协议宽松版。主仓库在开源项目托管平台 github 已获得 3000 +star ,形成超过 370 个fork 。
香山处理器在开发过程中非常重视敏捷开发的基础流程和工具。处理器的开发流程可以分为以下几步:
第一步,新特性提出,针对特性完成设计和实现文档。
第二步, RTL 实现,我们采用了Chisel开发语言加速RTL实现过程。
第三步,功能验证,也就是需要确认实现在功能上是否正确。
第四步,性能分析和性能验证。
第五步,物理设计验证。
香山开发过程中搭建了大量工具用于加速处理器设计迭代,其中有十几个工具用于辅助加速验证流程。
我们将两年的敏捷开发经验和工具沉淀为论文,文章发表在今年的计算机体系结构领域顶级会议MICRO上,向国际学术界和工业界介绍我们针对处理器敏捷开发的观察与技术创新。
下面我介绍一部分我们创新提出的敏捷开发工具。
RISC-V体系结构的checkpoint 能够对程序在某一时刻的状态进行全局快照。有了快照之后,可支撑上层丰富的应用场景,支持用户像使用模拟器一样使用精确 RTL 模型。比如,我们可以在模拟器上完成 OS 启动,将 OS 启动后整个程序镜像进行 checkpoint并在 RTL 上实现快速恢复。即使 RTL 仿真很慢,也能够实现快速 OS 启动。其次,Checkpoint支持生成程序无关负载,因此,只要有足够多的程序,我们即可生成足够多的程序片段,并且在仿真环境下复现,快速助力处理器功能验证。另外,可以还可以从所挑选片段中进行采样,选取具有特征的片段,实现敏捷性能评估。
RISC-V Checkpoint 技术已经成为支撑香山处理器体系结构和微结构优化的基础性工作。
在 checkpoint 基础之上,我们搭建了 DiffTest 处理器系统级验证方案,基本流程为:处理器仿真产生指定提交和其他状态更新,让模拟器执行相同指令,并且在执行完成之后比较两者状态以进行报错或继续。
在MICRO的论文中,我们提出了敏捷验证方案 DRAV,能够支持更多的处理器、更复杂的场景和更快速的迭代。我们提出了Diff-rule机制,能够描述设计规范所允许的行为。同时,DiffTest基于 probe 完成了微结构信息的自动传递,加速Chisel到系统级验证的流程。
有了系统级验证之后,还需要单元级验证的支持。我们针对处理器验证中的核心难点L2cache和L3 cache,完成了 TL-Test,一个支持TileLink总线的缓存验证框架。
香山南湖架构是双核 SoC ,其设计复杂度相比于雁栖湖有了巨大提高。而 TL-Test 通过单元级验证、子系统级验证和SoC级验证共同支撑了南湖架构的缓存一致性验证。
有了处理器验证框架之后,我们还需要在仿真出现BUG 后进行调试。我们提出了 LightSSS 轻量级仿真调试技术,其原理为基于快照完成对仿真现场的快速重建,以支持后续调试。核心技术为通过fork 系统调用,能够帮助通过差分快照、高可移植性、高效率等角度共同实现了低开销的进程级快照。
我们实验中实测发现,LightSSS仅带来了小于 1% 的性能损失,这大幅提高了波形获取效率。现在,即使在仿真一周之后报错,我们也能够在两分钟之内完成报错现场的重现来辅助调试。
最后,面向香山的性能分析和性能验证问题,我们提出了 Top-Down模型,它能够支持性能建模、数据处理、结果分析、优化建模等完整的性能分析工作流程。基于公开的论文,我们做了几点创新。首先,原有工作均基于x86 ,不兼容 RISC-V结构,因此我们针对 RISC-V指令集完成了大量针对性的优化适配。其次,由于现有Top-Down工作主要针对另一微结构,而香山的微结构与原始论文中已经存在很大差异。因此,我们针对香山微结构的设计完成了大量优化。最后,香山处理器微结构复杂度相比于原有设计已经高出几个量级。因此我们进一步细化了Top-Down模型分层设计,从而支持更准确的性能分析。
刚才我介绍了一些香山开发过程中同步产出的基础开发工具。从这些内容中我们能看出,香山项目的整体不仅包括香山芯片,更重要的部分是底层支撑香山开发的敏捷基础设施和基础工具。在香山处理器设计开源的同时,我们还希望将开发香山的基础能力开源,赋能企业加速处理器的研发节奏,最终能够实现像软件生态一样,少量开发人员即可完成一款自定义芯片的开发,能够支持按需快速定制芯片。
在 2021 年底,在北京市和中科院的支持下,18 家企业联合发起了北京开源芯片研究院,将参与后续的“香山”处理器产品化改造和架构研发。
面向未来,我们希望通过快速迭代和流片验证,探索芯片开放、开源的开发模式和敏捷开发的基础设施,搭建一套敏捷开发的基础流程,像使用开源软件一样,快速实现从 idea 到实际芯片产品的落地。
我们希望建立规范的开源社区,并且基于北京开源芯片研究院的稳定资金源推动香山快速在工业界完成落地。同时,香山将继续成为学术界的创新平台,赋能更多学术界的研究者和工业界的开发人员。