5位本科生4个月造出芯片毕业 如何评价国科大‘一生一芯’计划?
踩坑、挖坑,再从坑里爬出来
其实,在他们们面前的,是一条未有人走过的路。
没有导航,他们需要自己打怪升级,自己试错尝试。
当然,他们也并非是在白纸上作画。
教师团队已经制定了总体方案,确定了技术路线,选择好了基础平台,搭建了开发环境,也选定了流片工艺和班车。
五位学生真正动手之前,一支实力强大的教师团队,为学生的乘风破浪,做好了保驾护航的准备。
做芯片,其实分为前端和后端。前端主要是做设计,用数字电路的方式实现处理器的功能;后端则是用物理元件来实现这些设计。
“要说芯片都是我们做的,并不准确。其实我们只是做了前端的逻辑设计部分。”王凯帆强调。
他尝试用最通俗的语言向科技日报记者解释设计芯片是怎么一回事——类似于画一张大楼的施工图纸。只不过,呈现这张图纸,用的不是线条,而是一种叫做Chisel的硬件语言。
此前,包云岗团队中的博士生余子濠为南京大学开发了一款教学用RISC-V处理器,“一生一芯”计划的学生要在此基础上进行改进,把师兄搭建的房子,改建得更舒服、更亮堂。
包云岗说,在实际产品研发和科研工作中,也往往不是从头开始,更多是在已有基础上,增加新功能,提高性能。“这培养的是学生‘理解—消化—创新’的能力。”
大家采用了当下流行的“敏捷开发”模式:每人负责一个或几个模块,齐头并进,多线推进,然后合龙。
芯片设计开发历程。图源:包云岗知乎问答
“一生一芯”计划的目标很明确:在芯片上运行Linux系统,支持基本的输入输出设备。
先解决“能不能”“对不对”的问题,再来看“快不快”“好不好”。
对新手施工设计团队来说,他们盖的第一栋房子,要保证的是屹立不倒。
从2019年8月正式动手设计,到12月中旬交付设计图纸,五人组踩过坑,给别人挖过坑,也挣扎着从坑里爬出来过。
他们曾熬夜和不知躲在哪里的错误死磕,还要对抗可能拖延队友进度的焦虑。
团队成员金越负责的是片上系统。
除了中央处理器,在系统内还有五个控制器来实现具体功能。
这些控制器的代码是由开源社区提供的,但团队并不清楚这些控制器是否适合他们设计的这款芯片。
金越需要编写驱动软件,测试外设控制器是否设置正确,能否正常工作。
“要是出现问题就很麻烦了。到底是我的软件写错了,还是外设控制器本身有问题?如果是外设控制器有问题,到底是哪个有问题?”
变量太多,排列组合下来,测试复杂得让人头疼。
“做验证的那几天,几乎没怎么睡过觉。”金越半夜对着电脑,查手册,查代码,查波形,怀着点“我就不信邪”的不忿:“我一定要把这个东西弄出来。”
寻找问题究竟出在哪,是几乎每个计划参与者都会提到的“痛苦”经历,常常是 “按下葫芦起了瓢”。
作为团队唯一的女将,张林隽负责的部分是预取器。
你进入了一间图书馆,想找到一本书。靠你最近的书架,能放的书最少;而更深处的书架,放的书更多,但你走过去的耗时也长。预取器好比那位了解你喜好的图书管理员,他提前将他认为你会拿的书放在离你最近的书架,节省你的查找时间。
“在实现这个功能的时候,我想当然地认为,预取器应该放在L1 Cache也就是一级缓存内。”