当前位置: 首页 > Linux

中科院发布国产RISC-V处理器“香山”:已成功运行Linux-Debian

时间:2023-04-06 19:42:56 Linux

本周,首届RISC-V中国峰会在上海科技大学召开。这是RISC-V首次在北美以外举办规模如此之大的峰会。在本次大会上,中国科学院大学教授、中国科学院计算技术研究所研究员包云刚公布了国产开源高性能RISC-V处理器的核心——象山.Lake”,《雁栖湖》RTL代码今年4月完成,计划7月流片,基于台积电28nm工艺。第二代架构名为“南湖”,将采用中芯国际14nm工艺预计今年年底流片,北京微核参与了一期的设计工作,团队目前正在招募合作伙伴,共同开发象山处理器二期,已加入的企业包括字节跳动等公司。作者|包云刚,2003年毕业于南京大学,2008年获中科院计算技术研究所博士学位,2010-2012年在普林斯顿大学从事博士后研究。现任先进计算机系统研究中心研究员、主任助理、主任,中国科学院大学教授,博士生导师,中国开放指令生态(RISC-V)联盟秘书长。关于22日下午的香山报道,由于Zoom直播出现技术故障,大家未能听到完整的报道,有点遗憾。想了想,就直接把报告的PPT贴在这里,加上香山开发过程中的一些思考和想法,分享给大家。本报告主要回答四个问题:一、为什么要建香山?2、香山是什么等级?3、香山是怎么做到的?4、香山未来将如何发展?1.为什么要做香山?RISC-V诞生于2010年,到现在已经11年了。如今,RISC-V国际基金会网站(链接如下)上注册了数百个商业或开源RISC-V处理器内核,为什么我们需要做一个开源的高性能RISC-V内核?RISC-VExchange:Cores&SoCs-RISC-VInternational对于这个问题,我们和业内多家公司进行了交流,做了很多研究和分析,这让我们判断业界需要一个开源的高-性能RISC-V内核。另一方面,我们也在思考一个问题——为什么CPU领域没有像Linux这样的开源主线?开源Linux诞生于1991年,到今天正好30年。如今,Linux不仅在工业界得到广泛应用,而且还是学术界操作系统研究的创新平台。RISC-V是一个开放和开源的指令集,它允许世界上任何人免费实现一个RISC-V处理器,可以是商业的也可以是开源的。这是与公司私有的X86/ARM指令集相比最大的区别之一。然而十年过去了,像Linux这样的开源主线还没有形成。Berkeley的BOOM目标是高性能开源RISC-V核心,但BOOM代码库相对封闭。官方建议其他人实现任何功能,并提前与他们沟通,以确保他们不会与他们的计划发生冲突。根据GitHub官方统计页面,从2014年1月至今,只有8人为BOOM提交了超过100行的代码修改。可以看出,在一定程度上,由于BOOM严格的外部贡献政策,开源社区对BOOM的参与度不高。因此,我和团队的唐丹博士一直认为,我们应该像Linux一样,建立一条开源的RISC-V核心主线,不仅可以在工业界得到广泛应用,也可以支持学术界进行创新实验。想法。最重要的是,我们必须让它像Linux一样生存至少30年!于是,“香山”诞生了。我们做了一年多的准备工作——申请基金、启动“一芯一生”人才培养计划、组建团队、寻找合作伙伴……期间,我们得到了来自各方的支持和帮助人太多了:计算所孙宁辉院士多处帮我们找资金,国科大全力支持“一生一个芯片”计划,鹏城实验室支持我们建立后端物理设计团队,和很多计算院的老朋友决定参与开源主线,等一一上市。香山终于正式上线了——2020年6月11日,香山在GitHub上建立了代码仓库。仅一年时间,就有25名师生参与香山的开发。821次主分支代码合并,3296次代码提交(commit),5万多行代码,400多份文档,记录着香山的成长历程。我们的理念是开放源代码、开放流程和开放文档。这期间,有的公司直接参与开发,有的公司表示有参与的意向,因为他们认同开源的理念,愿意携手共建开源象山。这些来自业界的积极反馈给了我们极大的鼓舞和信心,让我们更加坚定地践行“研研重工模式”。“研研重工模式”是2020年1月我给《中国计算机学会通讯(CCCF)》写信《伯克利科研模式的启发》时提出的:袁兰峰:CCCF前言:来自伯克利科研模式的启示|包云刚回顾了伯克利的科研历程,可以发现他们在过去几十年里开发了大量的原型系统,不仅推动了技术进步甚至颠覆了行业,还培养了一代又一代的优秀人才(其中不乏获得图灵奖的人):50年代的CALDIC系统(DougEnglebart),60年代的TheProjectGenie系统(ButlerLampson和ChuckThacker),70年代的BSDUnix操作系统和INGRES数据库系统(MichaelStonebraker)、80年代的RISC处理器(DavidPatterson)、90年代的RAID存储系统和NOW集群系统……如果用一句话来概括伯克利的科研模式,那就是——热衷于开发原型系统,真正能够改变现状,即使需要大量的工程投资。国家重工所长孙宁辉院士称之为“研重工模式”。“科研重工模式”,我们不想纸上谈兵,我们要用行动去践行。2、香山是什么等级?象山是一个开源的RISC-V处理器核心,其架构代号以湖命名。第一版结构的代号是“雁栖湖”,这是国科背景很强的同学起的名字,因为他们都在怀柔雁栖湖做过一年的研究。《雁栖湖》RTL代码将于2021年4月完成,计划7月基于台积电28nm工艺流片。当前频率为1.3GHz。第二版结构的代号为“南湖”,是对中国共产党成立100周年的献礼。“南湖”计划今年年底流片,将采用中芯国际14nm工艺,目标频率2GHz。象山选择什么开源许可证?这个问题困扰了我们一段时间。后来我们专门请教了北京大学的周明辉教授,小伙伴们制定了四种开源许可方案。经过反复比较和权衡,最终选择了下表中的方案①——木兰松散版许可(MulanPSLv2)。在此,感谢北京大学周明辉教授的专业指导!开源许可方案对比(许毅很难整理)“雁栖湖”架构是乱序处理器核心,11级流水线,6次发射,4次内存访问组件。**发射宽度已经可以媲美一些ARM高端处理器核心,但还没有完全优化,所以在实际性能上还有很大的差距。我们希望未来通过不断的迭代优化(“SouthLake”-->“XLake”-->“YLake”-->…),性能达到ARMA76的水平。我们基于GitHubCI构建了一套基于流程的自动回归测试框架,并且在过去的半年里不断增加测试负载,从cputest、risc-tests到Linux,再到SPECCPU工作负载。这套自动回归测试框架保证和验证了芯片的正确性。每个大项目总会有一些激动人心的时刻。这段30秒的短视频,记录了香山在FPGA上启动Linux/Debian的瞬间,心情愉悦。视频链接:象山在FPGA3上启动Linux/Debian,象山是怎么做的?象山初期的发展非常快:6月11日建立代码仓库,7月6日完成乱序流水线,不到一个月就正确运行了CoreMark;9月12日,Linux正常启动;10月22日,Debian正常启动。接下来是结构优化、性能调优、时序优化等半年多时间。象山架构几乎等同于重构。一个典型的例子,象山的第一版branchpredictor(BPU)参考了BOOM的BPU,但是后端评估频率只能达到800MHz(台积电28nm)。于是,负责BPU设计的苟令睿在几位老师的指导下不断优化BPU结构,最终将频率提升到了1.4GHz。这期间小伙伴们自己开发了各种优化调试工具,大大加快了优化验证的进程。这让我真的很佩服这些90后——他们真的是充满了创造力,从工作到生活,其中一个主要驱动力就是“tou(tou)time(lan)”。比如我宁愿写个程序自动叫外卖,也不愿打开手机看菜单。香山的发展至少有两个重要的决定。首先是选择敏捷的设计语言Chisel。很多人质疑Chisel,拒绝Chisel,但我们在充分评估后决定使用Chisel。我们团队从2016年开始使用Chisel,一开始团队充满了疑惑。2018年我们设计了两组量化对比实验,找了两个学生用Chisel和一个工程师用Verilog设计了一个L2Cache模块。通过一系列的量化对比,得出以下三个结论:Chisel的开发效率远高于Verilog;实现同样的功能,Chisel代码量仅为Verilog的1/5(所以象山5万行Chisel代码相当于25万行Verilog代码);Chisel的开发质量并不比Verilog差。实验结果随后于2019年1月发表在《计算机研究与发展》上。最近去华为交流,了解到这些对比结果也促进了华为内部组建了Chisel开发团队,现在华为也是Chisel的支持者。2020年,我们完成了基于Chisel的8核标记RISC-V处理器的流片。这是基于Rocket处理器核心的标记架构改造,采用台积电28nm工艺流片。虽然由于时间关系没有进行详细的后端优化,但归来后芯片依然可以正常运行在1.2GHz。它是一个8核SoC芯片,具有一定的复杂性,但Chisel可以处理它。因此,我们认为Chisel可以用来开发复杂的芯片。在开发象山的过程中,我们的团队积累了丰富的Chisel开发经验。小伙伴们(许一楠、王开凡、林家伟、于子豪、金越)准备了6份报告,将在6月25日的CCCWorkshop上与大家分享。另外一个重要的决定就是把构建流程和工具放在首位支持敏捷设计。在发展象山的过程中,我们一直在强调流程、平台和基础设施的重要性。我更多的是扮演啦啦队的角色,而小伙伴们则真正把想法付诸行动。为了更好地支持Chisel开发调试,更快地捕获、重现和定位bug,更准确地评估优化技术的性能收益,合作伙伴开发了十余种独特的工具。这些工具支持一套敏捷的处理器芯片开发流程。当然,这个过程还比较初级,还不系统。我们也期待更多的开源开发者加入进来,共同完善这个敏捷设计流程。以下是一些工具示例。NEMU是余子豪在南大读本科时开发的教学模拟器。在他的博士期间。在计算学院学习期间,他一直在不断地自己改进和优化NEMU,使NEMU成为一个效率接近QEMU的高性能解释器——启动Debian甚至比QEMU快18.2%(9.87svs.12.07s)。更重要的是,NEMU是一个指令解释器,可以动态分析每条指令;相比之下,QEMU的翻译粒度是基本块,无法跟踪每条指令。事实上,NEMU的这种指令解释器机制已经成为象山开发的正确性验证框架Difftest的基础。(于子豪6月23日下午介绍NEMU)Cache是??处理器中非常核心的一个模块,尤其是支持一致性协议的Cache更加复杂。为此,合作伙伴开发了一套专门验证对TileLink一致性协议支持的Cache模块测试框架AgentFaker,发现了多个Cache模块的bug。(6月25日上午张传启将介绍这项工作)Difftest是一个基于NEMU的指令集在线差分验证框架。它的一端是仿真器,它为处理器执行提供了黄金标准;另一端是运行RTL的仿真器,在仿真过程中将指令数、中断、MMIO、微结构状态等信息发送给NEMU进行比较,从而判断RTL实现的正确性。Difftest最先由于子豪实现,后由王开凡优化。最重要的改进之一是SMP-Difftest,支持全系统模拟多核SMP,支持缓存一致性、内存一致性等需要软硬件协同的问题。(6月24日下午王凯凡将为大家介绍Difftest)如何快速捕捉、重现、定位bug,是调试过程中非常关键的一步,大量的时间消耗在这个阶段。小伙伴们提出了一种创新的轻量级模拟快照技术——把整个模拟程序当作一个进程,使用fork机制创建子进程。然后父进程继续执行,子进程暂停。当父进程出现错误时,可以还原给子进程进行调试。与Verilator模拟器自带的Savable机制相比,LightSSS机制将单次快照时间缩短近7000倍!(于子豪6月23日下午介绍LightSSS)很多人质疑Chisel不方便调试。小伙伴们充分利用Chisel自定义FirrtlTransform的能力,设计了一套新的硬件敏捷调试栈,可以将基于波形的调试转化为基于事件的调试。我们设计了一套工具,可以直接从波形中提取高级语义新颖性并将其可视化。为此,专门设计了一种湘语。(林嘉伟将于6月23日下午介绍这项工作。)处理器性能优化的关键是快速准确地评估优化技术带来的性能收益。如果评估过程耗时数天,将严重影响迭代优化的效率。小伙伴们设计了一个敏捷的性能评估框架BetaPoint,利用三种机制——Sampling机制、GenericFullSystemCheckpoint机制和FunctionalWarmup机制,实现了10小时内可以预估处理器的SPEC分数。(6月23日晚周耀阳将为大家介绍BetaPoint)整个香山开发团队将在本次峰会上与大家分享22篇技术报告。这些报道的都是90后,其中不乏95后:苟令瑞、胡博涵、金越、李昕、刘志刚、林家伟、王华强、王火哲、王开凡、许一楠、于子豪、张传奇、张法旺、张林军、张子飞、张子越、周耀扬、周宜可、邹江瑞;另外,很多参与香山开发的同学,这次都没有出力。这些小伙伴为香山的发展做出了不可替代的贡献。4、香山未来将如何发展?目前,象山正在开发下一代建筑“南湖”。目标是在今年年底前完成流片。基于中芯国际14nm工艺,频率将达到2GHz,SPECCPU得分达到10分/GHz。这是一个具有挑战性的目标,需要对架构进行大量优化和改进。前几天,小伙伴们去嘉兴南湖,讨论香山的未来发展。除了技术,我们再次关注流程和平台。之前搭建的敏捷设计流程和平台,支撑20多人的开发团队,远远不够。现在我们需要考虑的是如何构建一个开源的、开放的、标准化的开放流程,能够支撑一个2000人的开源社区的发展。支持数万人开发开源软件取得成功。但是如何支持上千人开发开源处理器,目前还没有案例可以参考,只能自己摸索。也期待各界专家给予更多的指导和建议。我们有一个心愿——希望“香山”能活三十年;我们有一个约定——30年后我们相聚,看看香山会变成什么样子。但是,要实现这个愿望,还有很多很多的问题和挑战需要解决。真诚期待更多的伙伴加入象山的开发团队!在中国科学院计算技术研究所和鹏城实验室的支持下,象山通过中国开放指令生态(RISC-V)联盟和行业公司开发了开源高性能RISC-V处理器内核,并也得到了北京致远人工智能的支持。由情报研究所支持。在此,感谢北京微核公司资深专家对香山发展的大力支持。他们非常认同开源的理念,也是第一家与象山联合开发的公司。很高兴在“南湖”构筑的发展中有更多的合作伙伴,感谢大家对香山的支持。欢迎联系我们加入象山开源社区!五、花絮一本关于香山的书。很多人认为CPU设计难度很高,而且要求很高。我们希望降低这个门槛——所以我们打算出一本类似伯克利的《TCP/IP协议栈详解》和毛德操的《Linux内核源代码场景分析》的书,结合象山的Sourcecode来分析CPU的设计细节和know-how。本书也可以开源方式由社区编写,欢迎感兴趣的朋友参与。“一生一颗芯片”计划回归。“终身一芯”项目第一期的5名学生(金越、王华强、王开凡、张林军、张子飞)本科一毕业就加入象山发展,成为技术骨干。很多人问什么时候毕业,可能还需要一段时间。他们现在才读研究生一年级,还要再等两年才能让他们的同学毕业。大流行中的封闭发展。2020年6月初,北京新发地突然出现新冠疫情,学生返京受阻。得益于深圳鹏城实验室的大力支持,整个团队一直集中在深圳,封闭开发在鹏城实验室集中进行了三个月。那段时间基本上每周commit超过150次,成为开发效率最高的时间段。香山标志。我们尝试了很多象山的标志设计,经过大家的投票,最终选择了左下角的那个。不过朋友好心告知香山,红叶主要是漆树叶。好在象山也有五角枫,暂时就定下这个标志。最后几句话,很荣幸能和阿里巴巴的齐老师(齐晓宁)一起担任首届RISC-V中国峰会的联合主席,但其实幕后的都是软件院的老师们中国科学院和上海科技大学共同为峰会筹备和保障。很努力。由于疫情带来的巨大不确定性,组委会始终保持着高度紧张:起初只允许约1500名线下参赛者参赛,但很快就满员;后来又开了两次补报名机会,但每次只开了200个名额,最后一共2600人(有的主会和分会都报名了)。但即便如此,最终还是因为广东的疫情,不得不安排大家远程参与。在此,向未能报名的朋友们说声抱歉,感谢报名后因疫情选择放弃现场参与的朋友们。不过本次峰会提供了4个直播频道,直播101场报告,后续还会有视频回放。很抱歉,我在直播的过程中也遇到了一些技术上的问题(上午调试后下午出现的一些错误),在这里再次表示歉意。特别鸣谢中国科学院软件研究所吴伟老师和吴彦军老师。他们为这次峰会付出了很多努力,付出的实在是太多了。感谢上海科技大学信息学院周平强院长统筹上海本地资源,全力支持和保障峰会的顺利举办。也感谢所有为峰会默默付出的筹备组成员和志愿者们!大家因为RISC-V走到一起,正是因为RISC-V带来的开源、开放、共享、共治是大家的共识,也因为RISC-V给我们带来了无限的想象空间。如今,RISC-V在中国蓬勃发展,中国也在为RISC-V生态贡献越来越多的力量——首届RISC-V中国峰会就是最好的写照。