本周,首届 RISC-V 中国峰会在上海科技大学举办。这是 RISC-V 第一次在北美以外地区举办等同规模的峰会。在本届大会上,中科院大学教授、中科院计算所研究员包云岗颁布了国产开源高性能 RISC-V 处理器外围——香山,其外围以“湖”来命名架构代号,第一代叫做“雁栖湖”,“雁栖湖”RTL代码于往年4月实现,打算于7月基于台积电28nm工艺流片。第二代架构叫做“南湖”,将采纳中芯国内14nm工艺,预计今年年底流片。北京微核芯参加了第一期的设计工作,目前团队正招募香山处理器二期联合开发合作伙伴,退出的企业已有字节跳动等公司。

作者 | 包云岗,2003年本科毕业于南京大学,2008年获中科院计算所博士学位,2010-2012年普林斯顿大学博士后,现为中科院计算所研究员,所长助理,先进计算机系统钻研核心主任,中国科学院大学岗位传授,博士生导师,中国凋谢指令生态(RISC-V)联盟秘书长。

22号下午对于香山的报告,因为Zoom直播呈现了技术故障,导致大家未能听到残缺的报告,稍有些遗憾。思考了一下,这里就把报告PPT间接贴出来,再加上咱们在香山开发过程中的一些思考和想法,跟大家分享。

这个报告次要答复四个问题:

  • 一、为什么要做香山?
  • 二、香山什么程度?
  • 三、香山怎么做的?
  • 四、香山将来如何倒退?

一、为什么要做香山?

2010年RISC-V诞生,迄今已有11年。现在,在RISC-V国内基金会网站上注销的各类商业或开源的RISC-V处理器核就有上百个(如下链接),为什么还要做一个开源的高性能RISC-V核?

RISC-V Exchange: Cores & SoCs - RISC-V International

对于这个问题,咱们和很多业界企业交换过,也做了很多调研与剖析,这都让咱们判断认为业界须要一个开源的高性能RISC-V核。另一方面,咱们也在思考一个问题——为什么CPU畛域还没有一个像Linux那样的开源主线?1991年开源的Linux诞生,到明天正好30年。现在,Linux不仅被工业界广泛应用,也成为学术界发展操作系统钻研的翻新平台。

RISC-V是凋谢开源的指令集,容许全世界任何人收费实现一个RISC-V处理器,能够是商用,也能够开源,这是和公司公有的X86/ARM指令集相比最大的区别之一。然而,十年过来了,到当初还未能造成一个像Linux那样的开源主线。Berkeley的BOOM指标是一个高性能开源RISC-V核,然而BOOM代码仓库绝对不凋谢,官网倡议其他人实现任何性能都要当时和他们沟通,以确保不要与他们的打算产生抵触。依据GitHub官网的统计页面显示,从2014年1月至今,为BOOM提交过超过100行代码批改的仅有8人。由此可见,肯定水平上因为BOOM严格的内部奉献政策,开源社区对BOOM的参与度并不高。

所以,团队的唐丹博士和我始终认为要建设一个像Linux那样的开源RISC-V核主线,既能被工业界广泛应用,又能反对学术界试验翻新想法。最要害的是,肯定要让它像Linux那样至多存活30年!

于是,“香山”诞生了。

咱们做了一年多的筹备工作——申请经费,启动“毕生一芯”打算培养人才,建设团队,寻找合作伙伴……这期间失去了太多太多人的反对和帮忙:计算所孙凝晖院士帮咱们多处找经费,国科大全力支持“毕生一芯”打算,鹏城实验室反对咱们建设起后端物理设计团队,多位计算所老所友毅然决定参加开源主线等等,就不一一列举了。

终于,香山正式启动了——2020年6月11日,香山在GitHub上建设了代码仓库。

短短的的一年工夫里,25位同学和老师参加了香山的开发。821次主分支代码合并,3296次代码提交(commit),5万余行代码,400多个文档,记录了香山的成长过程。咱们的理念是代码开源、流程凋谢、文档公开。这期间,有企业直接参与开发,也有企业表白参加动向,都因为认同开源理念,违心一起来共建开源的香山。这些来自工业界的踊跃反馈,给予咱们极大的鼓励和信念,让咱们更动摇地去践行“科研重工业模式”。

“科研重工业模式”,是 2020年1月我为《中国计算机学会通信(CCCF)》写了一篇卷首语《伯克利科研模式的启发》中提出的:

袁岚峰:CCCF卷首语 :伯克利科研模式的启发 | 包云岗

回顾伯克利的科研历程,能够发现他们在过来几十年研制了大量的原型零碎,不仅推动了技术提高甚至颠覆产业,也造就了一代代杰出人才(其中多位取得图灵奖):1950年代CALDIC零碎(Doug Englebart),1960年代Project Genie零碎(Butler Lampson与Chuck Thacker),1970年代BSD Unix操作系统与INGRES数据库系统(Michael Stonebraker),1980年代RISC处理器(David Patterson),1990年代RAID存储系统与NOW机群系统……如果用一句话来总结伯克利的科研模式,那就是——热衷于研制真正能改变现状的原型零碎,哪怕须要大量工程投入。国重主任孙凝晖院士称之为“科研重工业模式”。

“科研重工业模式”,咱们不想夸夸其谈,咱们要用口头去实际。

二、香山什么程度?

香山是一款开源RISC-V处理器核,它的架构代号以湖命名。第一版架构代号是“雁栖湖”,这是带有浓厚国科大情节的同学们起的名字,因为他们研一都在怀柔雁栖湖待了一年。“雁栖湖”RTL代码于2021年4月实现,打算于7月基于TSMC 28nm工艺流片,目前频率为1.3GHz。

第二版架构代号是“南湖”,这是向建党100周年致敬。“南湖”打算在今年年底流片,将采纳中芯国内14nm工艺,指标频率是2GHz。

香山抉择什么开源许可证?这个问题纠结了咱们好一阵子。起初,咱们专门向北京大学周明辉传授求教,小伙伴们制订了4种开源许可证计划。在重复比照衡量后,最终抉择了如下表格中的计划①——木兰宽松版许可证(MulanPSLv2)。在此,特别感谢北大周明辉老师的业余领导!

开源许可证计划比照(徐易难整顿)

“雁栖湖”架构是一个**11级流水、6发射、4个访存部件的乱序处理器核。**在发射宽度上曾经能够和一些ARM高端处理器核相当,但还未进行充沛优化,因而理论性能还有不小的差距。咱们心愿将来通过继续迭代优化(“南湖”-->"X湖"-->"Y湖"-->……),性能达到ARM A76的程度。

咱们基于GitHub CI构建了一套流程化的主动回归测试框架,并在过来大半年一直减少测试负载,从cputest,risc-tests到Linux,到SPECCPU workload。这套主动回归测试框架在保障和验证芯片的正确性。

每个大我的项目总会有一些激动人心的时刻,这段30秒的小视频记录了香山在FPGA上启动Linux/Debian的时刻,略带喜感。

视频链接:香山在FPGA上启动Linux/Debian

三、香山怎么做的?

香山开发初期速度十分快:6月11日建设代码仓库,7月6日乱序流水线便已实现,能正确运行CoreMark,不到一个月工夫;9月12日,Linux正确启动10月22日,Debian正确启动。

接下来便是大半年的构造优化、性能调优、时序优化工作,香山架构简直相当于重构了一遍。一个典型的例子,香山的第一版分支预测器(BPU)参考了BOOM的BPU,但后端评估频率只能达到800MHz(TSMC 28nm)。于是负责BPU设计的勾凌睿在几位老师的领导下,一直优化BPU构造,最终将频率晋升到了1.4GHz。

这期间,小伙伴们纷纷本人入手,开发了各种各样的优化和调试工具,大大地减速了优化和验证环节。这让我真心拜服这批90后——他们真是充斥了创造力,从工作到生存,而次要驱动力之一就是“省(tou)时(lan)”。比方宁肯本人写个程序主动点外卖,也懒得关上手机看菜单点。

香山的开发至多有两个重要的决策,第一个便是抉择麻利设计语言Chisel。很多人质疑Chisel,排挤Chisel,然而咱们在充沛评估后,还是决定应用Chisel。

咱们团队是在2016年开始应用Chisel,一开始组里也充斥质疑。2018年,咱们设计了两组定量的比照试验,找了2位同学用Chisel、1位工程师用Verilog别离设计一个L2 Cache模块。通过一系列量化比照,得出了如下三个论断:

  1. Chisel开发效率远高于Verilog;
  2. 实现雷同的性能,Chisel代码量仅为Verilog的1/5(因而香山的5万行Chisel代码相当于25万行Verilog代码);
  3. Chisel的开发品质不比Verilog差。

起初将试验后果发表在2019年1月的《计算机钻研与倒退》。最近去华为交换,才晓得这些比照后果也推动了华为外部组建了Chisel开发团队,现在华为也是Chisel的支持者。

2020年,咱们又基于Chisel实现了一款8核标签化RISC-V处理器的流片,这是基于Rocket处理器核进行了标签化体系结构革新,采纳TSMC 28nm工艺流片。尽管因为工夫缓和,并没有进行粗疏的后端优化,但芯片返回后也还能失常运行在1.2GHz。这是一颗有肯定复杂度的8核SoC芯片,但Chisel能应答。所以,咱们置信Chisel可用来开发简单芯片。

在开发香山的过程中,咱们团队积攒了丰盛Chisel开发教训。小伙伴们(徐易难、王凯帆、蔺嘉炜、余子濠、金越)筹备了6个报告,将会在6月25日的CCC Workshop上和大家分享。

另一个重要决策就是高度重视构建反对麻利设计的流程与工具。

咱们在开发香山的过程中,始终在强调流程、平台、基础设施的重要性。我更多是表演了啦啦队队长的角色,而小伙伴们则真正将理念落实到了具体口头。

为了更好地反对Chisel开发与调试,为了更快地捕获、复现和定位bug,为了更精确地评估优化技术的性能收益,小伙伴们开发十余种各具特色的工具。这些工具撑持起了一套处理器芯片麻利开发的流程。当然,这套流程还比拟高级,尚不系统化。咱们也期待更多的开源开发者退出,一起欠缺这套麻利设计流程。

上面举几个工具的例子。NEMU是由余子濠在南大本科时便开始开发的一款教学模拟器。在计算所读博期间,他凭借一人之力始终在继续改良和优化NEMU,使NEMU成为一个效率靠近QEMU的高性能解释器——启动Debian甚至比QEMU还要快18.2%(9.87s vs. 12.07s)。

更重要的是NEMU是指令解释器,能够针对每一条指令进行动态分析;相比而言,QEMU的翻译粒度是基本块,无奈跟踪每一条指令。事实上,NEMU的这种指令解释器机制,成为了香山开发中正确性验证框架Difftest的根底。(余子濠将会在6月23日下午介绍NEMU)

Cache是处理器中十分外围的模块,尤其是要反对一致性协定的Cache更为简单。为此,小伙伴们开发了一套专门验证反对TileLink一致性协定的Cache模块测试框架Agent Faker,发现了好几个Cache模块的bug。(张传奇将会在6月25日上午介绍这个工作)

Difftest是一个基于NEMU的指令集在线差分验证框架。它的一端是模拟器,提供处理器执行的黄金规范;另一端是运行RTL的仿真器,在仿真过程中会将指令数、中断、MMIO、微结构状态等信息发送给NEMU进行比对,从而判断RTL实现的正确性。

Difftest最早是由余子濠实现,起初王凯帆进行优化,其中一个最重要的改良就是SMP-Difftest,反对多核SMP的全零碎仿真,并且反对Cache一致性、内存一致性等须要软硬件协同的问题。(王凯帆将会在6月24日下午介绍Difftest)

如何疾速捕获、复现、定位bug是调试过程中十分要害的步骤,很多工夫都是耗费在这个阶段。小伙伴们提出了一种翻新的轻量级仿真快照技术——把整个仿真程序看成是一个过程,利用fork机制创立子过程。而后父过程继续执行,子过程暂停。当父过程出错时,则能够复原到子过程进行调试。LightSSS这个机制和Verilator仿真器自带的Savable机制相比,单次快照工夫缩短了近7000倍!(余子濠将会在6月23日下午介绍LightSSS)

很多人质疑Chisel不不便调试。小伙伴们则充沛利用了Chisel的能够自定义Firrtl Transform的特点,设计了一套新型的硬件麻利调试栈,可将基于波形的调试转换为基于事件的调试。咱们设计了一套工具,能够间接将高层语义新型从波形中提取进去,并进行可视化。为此,还专门设计了一个Xiang语言。(蔺嘉炜将在6月23日下午介绍该工作)

处理器性能优化环节最要害是要疾速精确地评估优化技术带来的性能收益。如果评估过程须要几天工夫,那将会重大影响迭代优化效率。小伙伴们设计了一个麻利性能评估框架BetaPoint,它利用了三个机制——Sampling机制、Generic Full System Checkpoint机制和Functional Warmup机制,实现了能够在10个小时内估算出处理器的SPEC分数。(周耀阳将会在6月23日黄昏介绍BetaPoint)

整个香山开发团队将在这次峰会上和大家分享22个技术报告。这些报告都是清一色的90后,很多都是95后:勾凌睿、胡博涵、金越、李昕、刘志刚、蔺嘉炜、王华强、王诲喆、王凯帆、徐易难、余子濠、张传奇、张发旺、张林隽、张紫飞、张梓悦、周耀阳、周意可、邹江瑞;此外还有多位参加香山开发的同学这次并没有投稿。这些小伙伴们在香山的开发过程中做出了不可代替的奉献。

四、香山将来如何倒退?

目前香山正在进行下一代架构“南湖”的开发,指标是今年年底流片,基于中芯国内的14nm工艺频率达到2GHz,SPECCPU分值达到10分/GHz。这是一个很有挑战的指标,须要对架构进行大幅度的优化改良。

前几天,小伙伴们专门去了一趟嘉兴南湖,研究香山将来的倒退。除了技术,咱们再一次聚焦到流程与平台。此前构建的麻利设计流程与平台撑持了20多人的开发团队,这远远不够。当初咱们须要思考的是该如何构建一套开源、凋谢、标准的凋谢流程,能撑持2000人的开源社区一起开发。

反对成千上万人一起开发开源软件,这曾经有胜利的教训。然而如何反对数千人一起开发开源处理器,目前还没有能够参考的案例,只能靠咱们本人摸索。也期待各界专家给咱们更多的领导和倡议。

咱们有一个欲望——心愿“香山”能存活30年;咱们有一个约定——30年后再一起聚聚,到时再看看香山会变成什么样。然而,要实现这个欲望,还有很多很多问题和挑战须要去解决。

真诚地期待有更多搭档退出香山的开发队伍!

香山是在中科院计算所、鹏城实验室的反对下,通过中国凋谢指令生态(RISC-V)联盟联结业界企业一起开发一款开源高性能RISC-V处理器核,也失去了北京智源人工智能研究院的反对。在此,要特别感谢北京微核芯公司的资深专家给予香山的开发强力的反对,他们十分认同开源理念,也是第一家与香山联合开发的企业。很快乐“南湖”架构的开发有了更多的合作伙伴,感激对香山的反对。

欢送分割咱们一起退出香山开源社区!

五、花絮

  • 一本对于香山的书。很多人感觉CPU设计很难,很高大上,咱们倒是心愿能把这个门槛给降一降——所以打算出一本相似伯克利的《TCP/IP协定栈详解》和毛德操老师的《Linux内核源代码场景剖析》那样的书,联合香山的源代码来剖析CPU设计细节和窍门(know-how)。这本书也能够用开源的形式由社区一起撰写,欢送感兴趣的敌人一起加入。
  • “毕生一芯”打算的回报。首期“毕生一芯”打算的五位同学(金越、王华强、王凯帆、张林隽、张紫飞)在本科一毕业便退出了香山的开发,成为了技术骨干。很多人都问他们什么时候毕业,可能须要再等等了。他们当初才研一,还要再等两年才会有同学毕业。
  • 疫情中的关闭开发。2020年6月初,北京新发地突然呈现了新冠疫情,导致同学们都无奈回到北京。感激深圳鹏城实验室的大力支持,整个团队全副集中到深圳,在鹏城实验室集中了三个月的关闭开发。那段时间基本上每周都有超过150个commit,反而成为开发效率最高的一个时间段。
  • 香山的Logo。咱们尝试了很多个香山logo设计,最初通过大家投票抉择了左下角的那个计划。不过有敌人善意告知香山的红叶次要是黄栌叶。好在香山也有五角枫,临时就先定这个logo了。


最初几句

有幸和阿里巴巴的戚总(戚肖宁)一起负责首届RISC-V中国峰会的联席大会主席,但其实幕后是中科院软件所和上海科技大学的老师们为这次峰会的筹备和保障工作付出了微小的致力。

因为疫情带来极大的不确定性,组委会始终保持高度紧张状态:一开始只凋谢了大概1500位线下参会名额,但很快就报满了;起初又凋谢了两次补报机会,但每次也只凋谢了200个名额,最初一共是2600人次(有的同时报名加入主会和分会)。

但即使如此,最初因为广东那边的疫情起因,不得不安顿大家近程参会。在此,对未能报上名的敌人说声道歉,对报上名但因为疫情而抉择放弃现场参会的敌人道声感激。不过这次峰会提供了4个直播渠道,全程直播101个报告,并在后续会有视频回放。很道歉直播两头也遇到了一些技术问题(有些上午调试好了下午还出错),在此再说声道歉。

特别感谢中科院软件所的吴伟老师和武延军老师,他们为筹备这次峰会而殚精竭虑,真的付出太多了。感激上海科技大学信息学院周平强院长,协调上海本地各方资源,全力支持和保障峰会的顺利召开。也要感激所有为峰会默默付出的筹备组成员和志愿者们!

大家因RISC-V而汇聚到一起,正是因为RISC-V所带来的开源、凋谢、共享、共治是大家的共识,也是因为RISC-V为咱们带来了有限的设想空间。现在,RISC-V已在中国蓬勃发展,中国也在RISC-V生态中奉献越来越多的力量——首届RISC-V中国峰会就是最好的写照。