“如何评价中国科学院大学(以下简称国科大)‘一生一芯’计划?”
在某问答网站上,这个问题获得了超千万的关注热度。
五位本科生,主导完成了一款64位RISC-V处理器SoC芯片设计并实现流片。这款芯片,被称作他们的 “最硬核毕业证书”。
和芯片有关的新闻,总能牵动国人的心。
而当主角成为几个“带芯毕业”二十出头的年轻人,就更加引人好奇。
网上的声音多种多样,有人鼓掌,有人唱衰,有人将它和中国芯片产业联系起来,写了洋洋洒洒长篇分析。
如今,五位学生已经开始了新的工作。他们正在深圳,参与新的更高性能芯片的设计。
8月中旬,他们还多了个新身份——第二期“一生一芯”计划的助教。
本科生做芯片,天方夜谭吗?
芯片是今年五月底快递到王华强家的。
它大概一元硬币大小,上面刻着 “COOSCA-01”和“一生一芯”的字样,还有国科大的Logo。
COOSCA是一个内部代号,是国科大计算机科学与技术学院的三门课程——计算机组成原理、操作系统和计算机架构的缩写。“一生一芯”则是计划的名字,意思是让每位本科生带着自己设计的处理器芯片毕业。
受新冠肺炎疫情影响,今年国科大的本科毕业答辩在线上进行。
学生王华强代表“一生一芯”团队,向答辩委员会的老师远程展示了芯片。
他把芯片装上测试板,用串口线将测试板与电脑连接,打开电脑上的终端软件,按下测试板上的复位键,运行了几个简单的程序——Linux系统跑起来了。
王华强在远程毕业答辩时展示芯片运行过程。图源:包云岗知乎回答
然而,去年夏天,“一生一芯”计划参与者张紫飞第一次听到该计划时的第一反应却是“天方夜谭吧”。
让几个本科生用几个月时间,设计出一枚能够运行Linux这样复杂操作系统的芯片,可能吗?
“一生一芯”计划负责人、国科大计算机学院教授、中国科学院计算技术研究所先进计算机系统研究中心主任包云岗则觉得,在开源时代,将芯片设计的门槛降下来,是可能的。
包云岗对2008年至2017年计算机体系结构国际顶级会议论文第一作者做过分析,只有4%来自中国的高校和科研院所。
中国的处理器芯片设计界,缺人。
开放指令集RISC-V与芯片敏捷开发语言Chisel,能使开发效率数量级提升。
RISC-V,正是包云岗近几年的研究重心。这一指令集可以自由地用于任何目的,允许任何人设计、制造和销售RISC-V芯片和软件。
2018年时,包云岗就隐约意识到,RISC-V对人才培养会有帮助。2019年5月,华为被美国商务部列入实体名单,人才危局必须尽快找到出路。包云岗迅速将他模糊的想法细化:让学生学习并实践芯片敏捷设计方法,通过大学流片计划完成芯片制造。
2019年8月,“一生一芯”计划正式启动。这是一次教学实践。
国科大校领导认为,它会掀起本科教学改革的新篇章。
五位参与的学生是金越、王华强、王凯帆、张林隽和张紫飞。
他们都是国科大计算机科学与技术学院2016级本科生,那时也都已通过了中国科学院计算技术研究所的保研夏令营,成为首批吃螃蟹的人。
踩坑、挖坑,再从坑里爬出来
其实,在他们们面前的,是一条未有人走过的路。
没有导航,他们需要自己打怪升级,自己试错尝试。
当然,他们也并非是在白纸上作画。
教师团队已经制定了总体方案,确定了技术路线,选择好了基础平台,搭建了开发环境,也选定了流片工艺和班车。
五位学生真正动手之前,一支实力强大的教师团队,为学生的乘风破浪,做好了保驾护航的准备。
做芯片,其实分为前端和后端。前端主要是做设计,用数字电路的方式实现处理器的功能;后端则是用物理元件来实现这些设计。
“要说芯片都是我们做的,并不准确。其实我们只是做了前端的逻辑设计部分。”王凯帆强调。
他尝试用最通俗的语言向科技日报记者解释设计芯片是怎么一回事——类似于画一张大楼的施工图纸。只不过,呈现这张图纸,用的不是线条,而是一种叫做Chisel的硬件语言。
此前,包云岗团队中的博士生余子濠为南京大学开发了一款教学用RISC-V处理器,“一生一芯”计划的学生要在此基础上进行改进,把师兄搭建的房子,改建得更舒服、更亮堂。
包云岗说,在实际产品研发和科研工作中,也往往不是从头开始,更多是在已有基础上,增加新功能,提高性能。“这培养的是学生‘理解—消化—创新’的能力。”
大家采用了当下流行的“敏捷开发”模式:每人负责一个或几个模块,齐头并进,多线推进,然后合龙。
芯片设计开发历程。图源:包云岗知乎问答
“一生一芯”计划的目标很明确:在芯片上运行Linux系统,支持基本的输入输出设备。
先解决“能不能”“对不对”的问题,再来看“快不快”“好不好”。
对新手施工设计团队来说,他们盖的第一栋房子,要保证的是屹立不倒。
从2019年8月正式动手设计,到12月中旬交付设计图纸,五人组踩过坑,给别人挖过坑,也挣扎着从坑里爬出来过。
他们曾熬夜和不知躲在哪里的错误死磕,还要对抗可能拖延队友进度的焦虑。
团队成员金越负责的是片上系统。
除了中央处理器,在系统内还有五个控制器来实现具体功能。
这些控制器的代码是由开源社区提供的,但团队并不清楚这些控制器是否适合他们设计的这款芯片。
金越需要编写驱动软件,测试外设控制器是否设置正确,能否正常工作。
“要是出现问题就很麻烦了。到底是我的软件写错了,还是外设控制器本身有问题?如果是外设控制器有问题,到底是哪个有问题?”
变量太多,排列组合下来,测试复杂得让人头疼。
“做验证的那几天,几乎没怎么睡过觉。”金越半夜对着电脑,查手册,查代码,查波形,怀着点“我就不信邪”的不忿:“我一定要把这个东西弄出来。”
寻找问题究竟出在哪,是几乎每个计划参与者都会提到的“痛苦”经历,常常是 “按下葫芦起了瓢”。
作为团队唯一的女将,张林隽负责的部分是预取器。
你进入了一间图书馆,想找到一本书。靠你最近的书架,能放的书最少;而更深处的书架,放的书更多,但你走过去的耗时也长。预取器好比那位了解你喜好的图书管理员,他提前将他认为你会拿的书放在离你最近的书架,节省你的查找时间。
“在实现这个功能的时候,我想当然地认为,预取器应该放在L1 Cache也就是一级缓存内。”
一级缓存,相当于那个离你更近的但是容量更少的书架。但奇怪的是,加入预取器后,芯片的性能反而受到了影响,芯片的信息处理速度变慢了。
她花了一个月的时间来找问题,一个一个排查、修改和调试。后来,张林隽被提醒说,可能是预取器放置的位置不对。“哎,很崩溃,之前写的东西就没用了,又要重来。”将预取器挪到二级缓存后,困扰她一个月的问题终于消失了。
在真正动手之前,没人想过,问题竟然会在这等着他们。
参与“一生一芯”计划的五位学生,从左至右依次为王华强、张林隽、金越、王凯帆和张紫飞
“我们只是知道了从山底到半山腰的路怎么走”
2019年12月,这款芯片的设计版图正式提交,基于中芯国际110nm工艺完成投片。
平时上课或者比赛,学生也需要从零开始完成一次芯片设计。但在课堂实践中,并不需要测试得太完备,只要设计出的芯片能通过老师给的几个测试点,就算成功。在“一生一芯”计划中,没有这些被预先设计好的“测试点”。你必须考虑全面,细心谨慎。
无可否认的是,压力更大。
此前的芯片设计,更像是“纸上谈兵”,成功了固然好,失败了好像也无所谓。但是这次,投入真金白银去流片,能不能用,几个月的努力会不会打水漂,流片后就能见分晓。
这是第一期“一生一芯”计划,大家都希望能开个好头。等待的日子,他们忐忑又兴奋。
2020年4月23日,学生们从微信群里得知,他们亲手设计的处理器芯片返回了。
但这并不是终点,还需要进行测试验证。
“从底层PCB版图、内存颗粒到中间处理器设计、再到上层操作系统、应用软件,每个层次都可能出问题。哪怕一个小问题,都会造成芯片无法正常工作。”包云岗说。
这段测试经历,同样也是一波三折,甚至有点戏剧性。
芯片回来后,团队里的老师们上手测试了几颗,结果芯片真的就是块“砖”,没有任何输出。一阵忙乱后他们才发现,原来是主板上的一根电源线接错了,芯片“出师未捷身先死”,被烧坏了。
后来,又因为一个串口时钟频率设置问题,芯片性能始终不正常。折腾了一段时间,芯片才被调整到最佳状态。
6月2日,在毕业答辩现场,王华强展示了芯片的工作流程。
后来,王凯帆还将国科大操作系统课程上同学们自己编写的UCAS-Core移植到了COOSCA核上,用自己写的CPU,运行了自己写的操作系统。
到深圳后,张紫飞才第一次看到自己设计的芯片。
“第一次看到时就觉得,这芯片比我们想象得小啊,好像还有点简陋。”张紫飞开玩笑道,“但是母不嫌儿丑嘛。”
国科大的学生将自己的母校简称为“果壳”,所以,果壳(nutshell)也就成了“一生一芯”计划首款芯片的正式名字。
王华强在今年7月RISC-V年中技术研讨会上介绍了果壳的设计细节和开发过程中的经验体会。
9月3日,王华强将代表团队向全球同行介绍“果壳”的设计,这也将是“果壳”首次在国际舞台上亮相。
“国科大学生硬核毕业证书”一度成为网上的热议话题,但被当成“大神”膜拜的几位学生,无意将这一项目做过多拔高。
金越打了个比方:“现在,我们只是知道了从山底到半山腰的路有多难走,还不知道从半山腰到山顶的路有多难走。”
也正是因为攀过山、爬过坡,学生们知道自己都是新兵,经验和能力上都有欠缺,还需淬炼。
“一生一芯”计划负责人、中科院计算所研究员包云岗在讲解芯片。受访者供图
他们的平均年龄,只有21.8岁。
包云岗说,等他们30岁时,就可以说已经是处理器芯片和计算机系统设计领域的“老兵”了。无论他们是进入业界还是学界,创造力会得到更大的发挥和展现。“我对这批年轻人的未来充满期待。”
“一生一芯”计划二期已经启动。
据包云岗介绍,二期的学生增加到13位。除了国科大外,还有来自浙江大学、南京大学、西北工业大学、哈尔滨工业大学(深圳)和美国密歇根州立大学等五所高校的同学。