解密!超1000万关注热度的“一生一芯”计划背后的故事
编者按
2020年7月25日,中国科学院大学(以下简称“国科大”)在玉泉路校区礼堂报告厅举行新闻发布会,公布了首期“一生一芯”计划成果——在国内首次以流片为目标,由五位2016级本科生主导完成一款64位RISC-V处理器SoC芯片设计并实现流片,芯片能成功运行Linux操作系统以及学生自己编写的国科大教学操作系统UCAS-Core。7月27日,“如何评价中国科学院大学「一生一芯」计划?对国产芯片的发展意味着什么?”这一问题一度登上了知乎热榜第五位,关注度超过1300万。接下来跟请随国晓薇一起来看该话题下破7000赞的答主分享。
答主:包云岗(中国科学院计算技术研究所 研究员)
01
酝酿
由此可见,降低芯片设计门槛,让学生能设计自己的芯片并流片,可大幅提高人才培养效率。这和我此前的构想和目标完全一致。我们不能再耽误了,要加速人才培养计划。
02
正式启动
我给这个计划起了个名字:“一生一芯”,初衷是希望有一天能让每一个学生都能带着自己设计的芯片毕业,不管未来是不是真的能实现,这至少听起来是一个美好的理想,而且还有一点浪漫——后来很多人听到这个名字,第一印象大多是“一辈子做一颗芯片”。还有女生有更浪漫的理解:“一生一心一意爱一人”。不管如何,看来大家对这个名字似乎还都不反感。
然后,我又联系了几位国科大本科生,询问他们愿不愿意参加这个“一生一芯”计划。出乎意料的是,这些准00后(98/99出生)都表示愿意挑战一下。
6月20日,我在开源芯片工作组群向大家宣布:启动“一生一芯”计划!这并不是研制产品级芯片,而是一次教学实践。很快唐丹老师为未来的芯片起好了内部代号“COOSCA”,三门课Computer Organization、Operating System、Computer Architecture的缩写。
8月27日,参加“一生一芯”计划的首批五位同学和教学团队一起在我的办公室开了一次简单但意义重大的动员大会。“一生一芯”计划正式启动!
项目分工
03
四个月高强度开发
开弓没有回头箭。唐丹老师确定了最合适的流片班车是12月17日,距离动员大会不到4个月!这样芯片能在4月份完成封装,返回进行测试。如果一切顺利,那就可以赶上五月底或六月初的国科大本科毕业答辩,到时可以在答辩现场展示芯片。但是如果错过这趟班车,那就需要再等2个月赶下一趟班车,这就意味着芯片不可能在毕业答辩时返回。“一生一芯”团队需要跟时间赛跑。
我们在确定总体方案时有两个决定:
一是用Chisel开发,此前我们实验室做过Chisel与Verilog在开发效率和开发质量上的对比实验,证明Chisel能数倍提升开发速度,同时开发质量不比Verilog差,相关结果发表在论文《芯片敏捷开发实践:标签化RISC-V》。
二是以余子濠为南大开发的一款教学RISC-V处理器核为基础进行改进,这主要是因为余子濠在开发这款处理器的过程中构建了丰富的工具,包括NEMU软件模拟器、指令差分测试框架等,这些都有助于加速开发。而教学处理器功能还很基础,要能运行Linux并且支持流片,需要新增大量新功能,包括RV64IM/RVC/RVA等指令扩展、时钟中断、硬件填充的TLB、M/S/U特权级、缺页异常、Cache预取、SDRAM控制器、外围I/O设备……这是一种贴近实战的开发模式——实际的产品研发和科研工作中,往往不是总是从头开始,更多的是在已有的基础上,增加新的功能,提高性能等等。这就需要培养学生“理解-消化-创新”的能力。
接下来是4个月高强度的开发,然而有些关键模块的工作原理是课堂上没有介绍过的,同学们还需要进行一些探索性的尝试,有时甚至需要将此前的设计推倒重来,他们会因此感到焦虑或沮丧,这对他们的心态也是很大的考验。教学团队不仅仅需要给予技术指导,还需要对学生的心态进行正确的引导,告诉他们不确定性是探索过程中的客观规律,然后引导他们去总结探索失败的经验,去深刻地分析当前方案不可行的原因,从而加深对问题的理解,让他们正确认识到探索失败的意义。
12月19日,COOSCA 1.0芯片版图冻结。当唐丹老师告知版图已经正式提交,大家就如高考交卷,终于舒了一口气,却又悬起了一颗心。
04
疫情中的测试验证
05
毕业答辩演示
06
“果壳”公开亮相
五位同学开始一起为“果壳”的首次亮相做了大量准备工作:王凯帆整理了代码以及相应的文档,并在Github上开源,王华强整理了一份介绍“果壳”设计的报告PPT。7月18日,王华强在技术研讨会第二个出场,介绍了果壳的设计细节和一些开发过程中的经验体会。这是报告视频:
《NutShell-本科生设计的可运行Linux的RISC-V芯片》
“果壳”设计开源链接:https://github.com/OSCPU/NutShell
7月22日,王华强又收到了“果壳”被RISC-V Global Forum接收的通知。9月3日,王华强同学将代表团队向全球业界介绍“果壳”的设计,这也是“果壳”首次在国际舞台上亮相。看了一下这次RISC-V全球论坛的日程,报告均来自世界各地的业界资深专家,还包括图灵奖得主David Patterson教授。国科大本科生能登上RISC-V全球论坛介绍他们设计的处理器核,这在国际上也是非常难得了。作为教学团队成员,我们内心也有一份自豪。
日程:https://events.linuxfoundation.org/riscv-global-forum/program/schedule/
07
收获与体会
伯克利EE194/290C这门课是根据已有的RISC-V核和其他IP核进行SoC集成。而“一生一芯”与EE194/290C课程的区别在于要让本科生直接设计一款64位RISC-V处理器,然后在这个核的基础上,学生们需进一步集成与验证一系列外围IP,最终形成一个能运行Linux操作系统的SoC芯片,这极具挑战。
一年前,我们不知道这个目标是不是可行,最终能不能成功。但如今,我们探了回路,并且把路走通了,证明是可行的。这个摸索的过程积累了不少经验,也充满了教训。五位同学作为“小白鼠”参与首期“一生一芯”计划,成长了很多。他们不仅在项目中掌握了处理器芯片设计所需的专业知识,也锻炼出了优秀人才所具备的出色心理素质。一起来看看他们的感悟:
如今,这五位同学正在参与一个更有挑战的项目,开发一款高性能乱序多发射RISC-V处理器核的设计。一年前,他们在做“果壳”时还有些吃力,现在已是这个新团队中的骨干,和其他博士生和工程师们一起攻坚克难。去掉团队中蔡晔、唐丹和我这三位40岁以上的中年人,这支队伍平均年龄只有23.1岁,但他们表现出来的战斗力却是惊人的——不到三个星期就从头开始完成了乱序处理器主流水线的设计与实现,并且通过CoreMark测试。等到他们30岁时,就可以说已经是处理器芯片和计算机系统设计领域的“老兵”了。那时,他们将进入各自的工作岗位,也许去工业界研发产品,也许在学术界做科研。相信那时他们的创造力会得到更大的发挥和展现。我对这批年轻人的未来充满期待。
1.项目规划和分工学生在开发初期不一定能完全掌握芯片中各个模块之间的关系,此时需要教师对学生的工作进行较为细致的分工,让学生通过一些初期的任务来认识芯片的全貌。随着项目的进行,学生对芯片的认识逐渐清晰之后,教师进行的分工可以向粗略的方向转变,向学生提出清晰的任务目标,并让学生尝试提出自己的解决方案。
2.引导学生了解项目中的每一处细节芯片是一个复杂的系统,学生需对芯片每一个模块的行为都有所了解,还需要了解程序在芯片上运行的每一处细节。但是学生一开始往往不能从课程设计的模式中转变过来,认为只需要了解自己任务相关的模块即可,不去主动了解其它模块,不去了解软件层次的行为。这导致他们在遇到问题会想不出解决的思路。此时教师需要对学生进行引导,让他们主动去认识芯片甚至是软件行为的每一处细节。在遇到困难的时候,这些认识就会成为解决问题的线索,顺着线索去追溯问题的过程又会进一步加深学生对这些认识的理解,从而形成良性循环。
3.指导学生使用在课堂学习的知识解决开发中遇到的实际问题芯片开发过程中可能会遇到各种困难,一些表面上看像是硬件设计的问题,最终可能是软件配置错误造成的。解决这些困难需要学生站在全局的视角来分析问题,并与课堂上学习到的知识建立联系,从中寻找解决问题的可能性。教师需要引导学生根据观测到的现象进行思维的发散,主动思考可能与哪些学过的知识建立联系。如果学生面对一些比较困难的问题,也会需要教师进行点拨。
4.引导学生正确认识探索过程中的不确定性在一款功能完整的芯片,有一些关键模块的原理是课堂上没有详细介绍的,学生要正确地实现这些模块,需要一个探索的过程。这意味着学生不能像课程作业那样按部就班地完成,而是会经历设计方案的调整,甚至是整个方案的推倒重来。这容易导致学生感到焦虑或沮丧,因此教师需要对学生的心态进行正确的引导,告诉他们不确定性是探索过程中的客观规律,然后引导学生去总结探索失败的经验,去深刻地分析当前方案不可行的原因,从而加深对问题的理解,让学生正确认识到探索失败的意义。
08
花絮
为国科大发布会准备的视频,“一生一芯”Logo 最终版
包云岗:“一生一芯”计划负责人、国科大计算机学院教授、中科院计算所先进计算机系统研究中心主任
(本文已获得包云岗老师授权)
相关阅读
| |||
| |||
| |||
| |||
| |||
| |||
| |||
| |||
| |||
| |||
| |||
| |||
| |||
|
看官可有什么想与国晓薇分享的?
投个稿告诉我吧~
投稿邮箱:wechat@ucas.ac.cn
观微之光,可明远方
文图/包云岗
美编/薛祺
责编/张通珊