中国如何发展自己的芯片 来看中国科学院大学一生一芯计划

一、酝酿
2018年11月8日,乌镇,世界互联网大会,经过9个月筹备工作,中国开发指令生态(RISC-V)联盟正式成立 。晚上在乌镇的一家餐馆庆祝时,坐在我边上的一位老师问了个问题:“以后打算怎么做开源芯片生态?”其实这也是在2018年期间我经常问自己的一个问题,我有一个很粗的想法——能不能让学生参与到开源芯片生态建设中——经常会浮现出来 。听了那位老师的问题,我在脑海中又浮现出这个想法,然后就在饭桌上一边整理思路一边介绍如何将教学和开源芯片结合起来 。这应该是“一生一芯”计划的最初萌芽 。  那时还没想到“一生一芯”这个名字,但已经大致形成了这样的目标——让本科生也能做处理器芯片,让本科生能带着自己设计的处理器芯片毕业 。但联盟成立后,这个想法并没有实质性推动 。  2019年5月16日华为被美国列入实体名单,全国震惊 。各界都在想能为华为做些什么,我们也在思考 。但是,我们是做开源芯片,华为暂时还用不上;我们采用的是开放的RISC-V指令集,而华为的主力芯片都是基于ARM 。看起来我们是无法帮助华为解决燃眉之急了 。但和华为专家交流后,他们说短期内的需求华为自己基本能应对,他们更需要的是中长期的先进技术,而最需要的是处理器芯片设计人才 。因为华为的芯片架构设计团队很多在美国硅谷,由于美国的出口管制,虽然是华为的全资子公司,但其技术也不能输入到华为总部 。这导致华为在美国的芯片设计人才不能再发挥作用,但在国内又招不到这样的人才 。这才是华为的心腹之患 。

  华为在国内找不到处理器芯片设计人才的情况是在意料之中 。2017年,我曾安排组里的学生统计过2008~2017十年的体系结构顶级会议ISCA论文第一作者的情况,最后统计数据发现这些优秀人才 85%选择在美国就业,仅有 4%在中国就业,差距巨大 。但如果看一作国籍,其实中国人才并不少,占全世界的20%(美国本土也只有25%) 。只是中国学生基本上都去美国深造了,然后留在美国工作 。这和以前中国芯片设计人才需求不足有关 。但是现在人才需求已经在快速增长,人才供给却远远跟不上 。这和国内很多大学不开展处理器芯片设计相关教学与研究密切相关 。 

中国如何发展自己的芯片 来看中国科学院大学一生一芯计划

文章插图
  7月22日,王华强又收到了“果壳”被RISC-V Global Forum被接收的通知 。9月3日,王华强同学将代表团队向全球业界介绍“果壳”的设计,这也是“果壳”首次在国际舞台上亮相 。看了一下这次RISC-V全球论坛的日程,报告均来自世界各地的业界资深专家,还包括图灵奖得主David Patterson教授 。国科大本科生能登上RISC-V全球论坛介绍他们设计的处理器核,这在国际上也是非常难得了 。作为教学团队成员,我们内心也有一份自豪 。
中国如何发展自己的芯片 来看中国科学院大学一生一芯计划
文章插图

中国如何发展自己的芯片 来看中国科学院大学一生一芯计划
文章插图
七、收获与体会
我们在调研中发现和“一生一芯”计划目标最接近的是2017年春季开始UC Berkeley开了一门新课 EE194/290C “28nm SoC for IoT”,目标是设计一个SoC芯片,集成各种IP模块,包括一个Berkeley开发的RISC-V Rocket处理器核 。这门课以流片为目标,2017年春由9位本科生与1位研究生参加,通过1学期完成了流片,但未提供信息证明芯片能正常工作 。  伯克利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. 引导学生正确认识探索过程中的不确定性 。在一款功能完整的芯片,有一些关键模块的原理是课堂上没有详细介绍的,学生要正确地实现这些模块,需要一个探索的过程 。这意味着学生不能像课程作业那样按部就班地完成,而是会经历设计方案的调整,甚至是整个方案的推倒重来 。这容易导致学生感到焦虑或沮丧,因此教师需要对学生的心态进行正确的引导,告诉他们不确定性是探索过程中的客观规律,然后引导学生去总结探索失败的经验,去深刻地分析当前方案不可行的原因,从而加深对问题的理解,让学生正确认识到探索失败的意义 。 
八、花絮
最后有彩蛋   同学们自己设计“一生一芯”logo的过程  
中国如何发展自己的芯片 来看中国科学院大学一生一芯计划
文章插图

中国如何发展自己的芯片 来看中国科学院大学一生一芯计划
文章插图

中国如何发展自己的芯片 来看中国科学院大学一生一芯计划
文章插图

中国如何发展自己的芯片 来看中国科学院大学一生一芯计划
文章插图

中国如何发展自己的芯片 来看中国科学院大学一生一芯计划
文章插图

中国如何发展自己的芯片 来看中国科学院大学一生一芯计划
文章插图

中国如何发展自己的芯片 来看中国科学院大学一生一芯计划
文章插图
“一生一芯”Logo 最终版  
作者:包云岗(已获作者授权转载)
来源:知乎
【中国如何发展自己的芯片 来看中国科学院大学一生一芯计划】 原文标题:中国科学院大学「一生一芯」计划对国产芯片的发展意味着什么?

    推荐阅读