负责人解释:国科大“一生一芯”背后有哪些故事?
扫描二维码
随时随地手机看文章
作者:包云岗
来源:中国科学院大学
知乎地址:https://www.zhihu.com/question/409298856/answer/1363569013
编 者 按
7月25日,中国科学院大学正式公布首期“一生一芯”计划成果——5位本科毕业生主导完成一款64位RISC-V处理器SoC芯片设计并实现流片。
如何评价中国科学院大学“一生一芯”计划?这一问题在知乎引发热议。27日,该计划负责人、国科大计算机学院教授、中科院计算所先进计算机系统研究中心主任包云岗现身知乎,详细介绍了“一生一芯”背后的故事。
包云岗介绍说,这项计划源于对“如何将教学和开源芯片结合起来”这一问题的思考,更启发于中国通讯科技巨头华为面临的芯片困境。
包云岗曾与华为专家交流,了解到短期内的需求华为自己基本能应对,而最需要的是处理器芯片设计人才。
在当天的发布会上,团队也介绍了“一生一芯”计划的愿景目标:在国科大实践经验的基础上向全国辐射,力争实现3年后在全国每年能培养500名学生,5年后实现每年培养1000名学生,10年达到每年培养1万名学生。
以下为包云岗在知乎的回答全文,科学网公号经授权转载。
2018年11月8日,乌镇,世界互联网大会,经过9个月筹备工作,中国开发指令生态(RISC-V)联盟正式成立。晚上在乌镇的一家餐馆庆祝时,坐在我边上的一位老师问了个问题:“以后打算怎么做开源芯片生态?”
其实这也是在2018年期间我经常问自己的一个问题,我有一个很粗的想法——能不能让学生参与到开源芯片生态建设中——经常会浮现出来。
听了那位老师的问题,我在脑海中又浮现出这个想法,然后就在饭桌上一边整理思路一边介绍如何将教学和开源芯片结合起来。这应该是“一生一芯”计划的最初萌芽。
那时还没想到“一生一芯”这个名字,但已经大致形成了这样的目标——让本科生也能做处理器芯片,让本科生能带着自己设计的处理器芯片毕业。但联盟成立后,这个想法并没有实质性推动。
2019年5月16日华为被美国列入实体名单,全国震惊。各界都在想能为华为做些什么,我们也在思考。
但是,我们是做开源芯片,华为暂时还用不上;我们采用的是开放的RISC-V指令集,而华为的主力芯片都是基于ARM。看起来我们是无法帮助华为解决燃眉之急了。
但和华为专家交流后,他们说短期内的需求华为自己基本能应对,他们更需要的是中长期的先进技术,而最需要的是处理器芯片设计人才。
因为华为的芯片架构设计团队很多在美国硅谷,由于美国的出口管制,虽然是华为的全资子公司,但其技术也不能输入到华为总部。这导致华为在美国的芯片设计人才不能再发挥作用,但在国内又招不到这样的人才。这才是华为的心腹之患。
华为在国内找不到处理器芯片设计人才的情况是在意料之中。
2017年,我曾安排组里的学生统计过2008~2017十年的体系结构顶级会议ISCA论文第一作者的情况,最后统计数据发现这些优秀人才 85%选择在美国就业,仅有 4%在中国就业,差距巨大。这和国内很多大学不开展处理器芯片设计相关教学与研究密切相关。
事实上,类似的人才危机美国也曾经历过,1982 年全美上千所大学中只有不到100 位教授和学生从事半导体相关的研究 。
为了应对人才危机,美国国防部高级研究计划署 (DARPA) 在1981年启动MOSIS 项目,为大学提供流片服务,通过MPW模式大幅降低芯片设计门槛。
30 余年来MOSIS为大学和研究机构流了60000多款芯片,培养了数万名学生。
由此可见,降低芯片设计门槛,让学生能设计自己的芯片并流片,可大幅提高人才培养效率。这和我此前的构想和目标完全一致。我们不能再耽误了,要加速人才培养计划。
我自作主张地给这个计划起了个名字:“一生一芯”。
初衷是希望有一天能让每一个学生都能带着自己设计的芯片毕业,不管未来是不是真得能实现,这至少听起来是一个美好的理想,而且还有一点烂漫——后来很多人听到这个名字,第一印象大多是“一辈子做一颗芯片”。还有女生有更浪漫地理解:“一生一心一意爱一人”。不管如何,看来大家对这个名字似乎还都不反感。
然后,我又联系了几位国科大本科生,询问他们愿不愿意参加这个“一生一芯”计划当小白鼠。出于意料地是,这些准00后(98/99出生)都表示愿意挑战一下,愿意当小白鼠。
6月20日,我在开源芯片工作组群向大家宣布:启动“一生一芯”计划!这并不是研制产品级芯片,而是一次教学实践。很快唐丹老师为未来的芯片起好了内部代号“COOSCA”,三门课Computer Organization/Operating System/Computer Architecture的缩写。
随后开始组建教学团队,随着项目的进行教学团队也在不断扩大:唐丹老师和工程师刘彤负责SoC架构设计指导,余子濠老师负责处理器核设计(其实子濠还是博士生,但因为在国内计算机系统教学领域很有名,所以我们也半开玩笑地叫他老师),张科老师负责项目协调、与国科大对接,并和常轶松老师、赵然老师一起在FPGA模拟仿真方面进行指导,解壁伟老师和李峄工程师在后端物理设计上给予支持,深圳大学蔡晔老师则参与帮助设计PCB板卡,另外蒋德钧老师和王卅老师是国科大本科操作系统任课老师,在操作系统方面给予支持,两位博士生王诲喆与徐易难也担任起助教的角色,帮助答疑解惑。而我自己,则更像是一个啦啦队长,给大家打鸡血。
教学团队开始行动起来了,大家讨论制定总体方案,确定技术路线,选择基础平台,搭建开发环境,选择流片工艺和班车……参加首期“一生一芯”计划的同学也最终确定,一共有五位,他们是金越、王华强、王凯帆、张林隽和张紫飞。
这五位同学通过了计算所暑期夏令营面试,均被录取为计算所研究生,其中金越导师是陈明宇研究员,王华强导师是蒋德钧副研究员,王凯帆是孙凝晖院士,张林隽和张紫飞的导师则是我。但接下来的时间,他们将组成一个团队,一起挑战带着自己设计的处理器芯片毕业这个任务。
8月20日,当唐丹老师和解壁伟老师终于落实中芯国际110nm工艺的流片渠道后,“一生一芯”计划一切准备就绪。
8月27日,参加“一生一芯”计划的首批五位同学和教学团队一起在我的办公室开了一次简单但意义重大的动员大会。
“一生一芯”计划正式启动!
项目分工
三、四个月高强度开发
开弓没有回头箭。唐丹老师确定了最合适的流片班车是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芯片版图冻结。当唐丹老师告知版图已经正式提交,大家就如高考交卷,终于舒了一口气,却又悬起了一颗心。
四、疫情中的测试验证
等待芯片返回是一种既期盼又担忧的感觉。这种感觉又进一步被突如其来的疫情放大了。
当1月23日宣布武汉封城后疫情不断发展,我们也越来越担忧正在流片中的那颗COOSCA芯片还能不能按时回来,还能不能赶上毕业答辩。出乎意外的是芯片基本按照预期时间返回了,在这里我们要对中芯国际和封测企业的员工们表达深深的敬意!
然而疫情还是对测试工作产生了影响,因为学生不能返校,无法到在现场调试与测试。余子濠、蔡晔和刘彤三位挺身而出,协助调试测试工作。测试验证工作其实也是非常具有挑战性,因为从底层PCB版图、内存颗粒到中间处理器设计、到上层操作系统、应用软件,每个层次都可能出问题。哪怕一个小问题,都会造成芯片无法正常工作。
经过大约1个月的调试测试,终于证明芯片一切正常,可以启动Linux操作系统。但也发现了芯片的I/O模块存在bug,影响了SD卡的读写。
测试验证也是充满了戏剧性。一开始调试时比较保守,将芯片降到了50MHz,没想到系统出现了很多问题。后来把芯片频率从50MHz跳到了200MHz,结果原来很多问题都消失了,能稳定地运行Linux。
又进一步把频率提高到了350MHz,启动Linux出现了问题,但是可以稳定地运行RT-Thread。这个频率和后端仿真基本一致。这也验证了用Chisel开发和Verilog开发对后端物理设计并没有很大的影响。
五、毕业答辩演示
2020年6月2日,国科大本科生毕业设计答辩日。五位同学分别介绍了他们基于COOSCA处理器核的进一步优化工作:
-
王华强:《基于RISC-V的乱序多发射处理器设计》 -
张紫飞:《基于RISC-V的向量处理单元设计》 -
张林隽:《开源处理器分支预测器的设计与性能优化》 -
金越:《基于敏捷开发语言的开源处理器非阻塞缓存的设计与实现》 -
王凯帆:《RISC-V平台下的二进制翻译与优化》
六、“果壳”公开亮相
七、收获与体会
-END-
推荐阅读
免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!