看点:这是我国处理器芯片设计人才培养极其有价值的一次教学实践。

7月27日消息,这两天,中国科学院大学(简称“国科大”)迎来一份特别的毕业礼物。

五位2016级国科大本科生主导完成一款64位RISC-V处理器SoC芯片“果壳(NutShell)”,与“国科”发音相同,并基于中芯国际 110nm工艺四个月实现流片。

这颗芯片能成功运行Linux操作系统以及学生自己编写的国科大教学操作系统UCAS-Core。

此消息一出,立刻引发社会广泛关注。

要知道,处理器芯片被公认为芯片产业皇冠上的明珠,设计复杂度高、难度大,而我国处理器芯片设计人才又极度稀缺。

国科大本科生能在本科毕业设计期间,用9个月时间合力完成一款处理器芯片设计,这是我国本科教育极其有意义的一次尝试——既是对学生本科所学的最佳检验,也鼓励和激发了学生对芯片的研究兴趣。

这不是国科大第一次在芯片教育上“出圈”了。去年国科大在本科新生录取通知书中嵌入了“龙芯三号”芯片,至今让人记忆犹新,今年,五位国科大毕业生已拿到了“超硬核毕业证书”。

当然,“果壳”芯片背后不止是五名本科生,还有强大的导师团队,和国科大对芯片人才培养的强力支持。

这五位本科生和他们的芯片成果,其实都是国科大“一生一芯”计划的“小白鼠”。

强大导师阵容:十余位大牛组队指导

2018年11月8日,在乌镇互联网大会期间,中国开放指令生态(RISC-V)联盟正式成立。

在中美贸易纷争不断的背景下,具备处理器芯片自主研发能力已是燃眉之急。

当前两大主流芯片指令集为x86和Arm,x86主宰PC/服务器市场,Arm则在智能手机等终端设备领域独大。但这两类指令集均由海外公司拥有,一旦被禁供,我国处理器芯片研发将面临巨大压力。

好在替代选择在近几年兴起,加州大学伯克利分校在2015年成立非营利组织RISC-V基金会,将其全新指令集RISC-V完全开源,并积极聚合全球创新力量共同打造RISC-V生态系统。

在此背景下,中科院计算所研究员、国科大教授包云岗开始思考一个问题:能不能让学生参与到开源芯片生态建设中?

这成为“一生一芯”计划的最初萌芽。

▲包云岗研究员展示学生成果

“一生一芯”计划目标是通过让本科生设计处理器芯片并完成流片,培养具有扎实理论与实践经验的处理器芯片设计人才。

在2017年时,包云岗曾安排学生统计了2008~2017十年体系结构顶级会议ISCA论文第一作者的情况,发现85%选择在美国就业,仅有 4%在中国就业。这和国内很多大学不开展处理器芯片设计相关教学与研究密切相关。

而美国也曾经历类似的人才危机,1982年,全美上千所大学中,只有不到100位教授和学生从事半导体相关研究 。

对此美国国防部高级研究计划署 (DARPA)启动 MOSIS项目,为大学提供流片服务,30余年来为大学和研究机构流了60000多款芯片,培养了数万名学生。

这些数据都体现加速芯片人才培养计划不能再耽误了。包云岗联系几位国科大本科生,询问他们愿不愿意参加这个“一生一芯”计划当小白鼠,这些学生欣然应允。

6月20日,“一生一芯”计划启动。

这并非研制产品级芯片,而是一次教学实践。很快唐丹老师为未来的芯片起好了内部代号“COOSCA”,随着项目进行,教学团队也在不断扩大:

唐丹老师和工程师刘彤负责SoC架构设计指导,博士生余子濠负责处理器核设计,张科老师负责项目协调、与国科大对接,并和常轶松老师、赵然老师一起在FPGA模拟仿真方面进行指导,解壁伟老师和李峄工程师在后端物理设计上给予支持,深圳大学蔡晔老师则参与帮助设计PCB板卡,另外蒋德钧老师和王卅老师是国科大本科操作系统任课老师,在操作系统方面给予支持,两位博士生王诲喆与徐易难也担任起助教的角色,帮助答疑解惑。包云岗说自己更像是一个啦啦队长,给大家打鸡血。

随即教学团队行动起来,讨论制定总体方案,确定技术路线,选择基础平台,搭建开发环境,选择流片工艺和班车……


参加首期“一生一芯”计划的同学分别是金越、王华强、王凯帆、张林隽和张紫飞,他们通过了计算所暑期夏令营面试,均被录取为中科院计算所研究生。

其中金越导师是陈明宇研究员,王华强导师是蒋德钧副研究员,王凯帆是孙凝晖院士,张林隽和张紫飞的导师是包云岗。

处理器研发团队组好后,8月20日,唐丹老师和解壁伟老师终于落实中芯国际110nm工艺的流片渠道,“一生一芯”计划一切准备就绪。

8月27日,“一生一芯”计划召开动员大会,制定基于教学处理器开发的技术路线。

4个月高强度开发,疫情中紧急测试

唐丹老师确定最合适流片班车是12月17日,距离动员大会不到4个月。对此,团队火速制定总体方案,做出两个决定:

一是用Chisel开发,二是以余子濠为南大开发的一款教学RISC-V处理器核为基础进行改进。

“这是一种贴近实战的开发模式——实际的产品研发和科研工作中,往往不是总是从头开始,更多的是在已有的基础上,增加新的功能,提高性能等等。这就需要培养学生“理解-消化-创新”的能力。”包云岗说。

国科大各方给了很大的支持,从校领导到本科部、计算机学院各级都很关心和重视:在中科院计算所,所长孙凝晖院士、主管教学的陈熙霖副所长、教育处李琳老师等都给予全方位的保障与支持。

这也赋予了“一生一芯”团队某种使命感。经过4个月高强度开发,在教学团队的技术指导下,同学们不断总结探索失败的经验,去深刻地分析当前方案不可行的原因,优化设计方案,然后在12月19日,64位RISC-V处理器SoC芯片COOSCA 1.0版图冻结,版图正式提交流片。

一个月后,新冠疫情爆发,这支研究团队忐忑的心绪开始放大——芯片还能不能如期流片完成?能否赶得上毕业答辩?

还好,虚惊一场,COOSCA芯片在4月23日按时归来。

由于学生们不能返校做现场调试与测试,余子濠、蔡晔和刘彤三位挺身而出,协助调试测试工作。

起初经过约1个月调试测试后,芯片可以启动Linux操作系统,但也发现了芯片的I/O模块存在bug,影响了SD卡的读写,又经过频率调试解决了问题。

6月2日,国科大本科生毕业设计答辩日,五位同学分别介绍了他们基于COOSCA处理器核的进一步优化工作:

王华强:《基于RISC-V的乱序多发射处理器设计》

张紫飞:《基于RISC-V的向量处理单元设计》

张林隽:《开源处理器分支预测器的设计与性能优化》

金越:《基于敏捷开发语言的开源处理器非阻塞缓存的设计与实现》

王凯帆:《RISC-V平台下的二进制翻译与优化》

其中王凯帆的毕业设计中使用了COOSCA核,也是他们自己设计的核首次在科研中得到应用。

王华强代表“一生一芯”团队展示了COOSCA芯片的功能。他进一步又将这个核改进为乱序多发射,在FPGA上进行了测试验证,结果显示比COOSCA核的IPC提升了一倍。他的毕业设计也获得了国科大校级优秀毕业设计。

后来,王凯帆又将国科大操作系统课程上同学们自己编写的UCAS-Core移植到了COOSCA核上,实现了用自己写的CPU运行自己写的操作系统这个小目标。

“果壳”芯片公开亮相

7月18日,CRVA联盟召开RISC-V年中技术研讨会,“一生一芯”团队决定让王华强提交一份设计报告,正式向社区介绍COOSCA核的设计,并将芯片更名为“果壳(NutShell)”,与“国科”同音。

王华强在技术研讨会第二个出场,介绍了果壳的设计细节和一些开发过程中的经验体会。


报告视频链接:

https://www.bilibili.com/video/BV1c54y1B7ay?share_medium=android&share_plat=android&share_source=WEIXIN&share_tag=s_i&timestamp=1595371668&unique_k=slzWhJ

包云岗研究员透露说,“果壳”的设计源代码已经向国际社区开源。“

果壳”开源链接:

https://github.com/OSCPU/NutShell

7月22日,团队又迎来新的佳讯。

王华强收到“果壳”被RISC-V Global Forum被接收的通知。他将代表团队,在9月3日向全球业界介绍“果壳”的设计,这也是“果壳”首次在国际舞台上亮相。

此次RISC-V全球论坛的报告,大多来自世界各地的业界资深专家,包括计算机体系架构宗师、图灵奖得主David Patterson教授。国科大本科生能登上RISC-V全球论坛介绍他们设计的处理器核,这在国际上亦属难得。

如今,这五位同学正在参与一个更有挑战的项目,开发一款高性能乱序多发射RISC-V处理器核的设计。

一年前做“果壳”芯片还有些吃力的他们,已成为新团队的骨干。

去掉团队中蔡晔、唐丹和包云岗三位40岁以上的中年人,这支队伍平均年龄只有23.1岁,战斗力却十分惊人——不到三个星期就从头开始完成了乱序处理器主流水线的设计与实现,并且通过CoreMark测试。

“我对这批年轻人的未来充满期待。”包云岗相信,等到他们30岁时,就可以说已经是处理器芯片和计算机系统设计领域的“老兵”了。“那时,他们将进入各自的工作岗位,也许去工业界研发产品,也许在学术界做科研。相信那时他们的创造力会得到更大的发挥和展现。”

“一生一芯”计划也在继续推进中。

据中科院计算所所长孙凝晖院士介绍,“一生一芯”计划的愿景目标是在国科大实践经验的基础上向全国辐射,帮助更多高校形成从处理器芯片设计到流片并运行操作系统的实践课程,提高我国处理器芯片设计人才培养规模,缩短人才从培养阶段到投入科研与产业一线的周期。

孙凝晖院士说,“一生一芯”力争实现3年后在全国每年能培养500名学生,5年后实现每年培养1000名学生,10年达到每年培养1万名学生。

发表评论

邮箱地址不会被公开。 必填项已用*标注