最近,知乎上有一条帖子火了,该帖子题为“清华大学计算机专业本科这位在「自己写的 CPU 上运行自己写的操作系统」的同学是什么水平?”,提问者对清华大学计算机系副教授、博士生导师刘知远(主要研究方向为表示学习、知识图谱和社会计算)的一条微博感兴趣,在知乎上进行了提问。

具体情况是清华大学某位计算机专业的本科生,在他的一份院系直博面试简历上,一个用 Rust 语言实现的 Linux 兼容操作系统项目非常抓人眼球,该项目实现了在自己写的 CPU 上运行自己写的操作系统。这条帖子引起了热议,大多数人对此表示惊叹和赞许,刘知远教授也是十分称赞。

根据刘知远在知乎上的回答表述,清华大学计算系有三门必修课分别是计算机组成原理、操作系统和编译原理,这三门课是分在几个学期上的,各自有一套大作业体系。然而,这位面试的同学却融会贯通了这三门课的知识,在同一套体系下完成了三门课的大作业。虽然对于常年浸淫这些领域的专家不算什么,但是对于一名大三的本科生,在这一个忙碌的学期里,愿意主动折腾这些硬核内容,完成了一个项目,这是很难得的事情。刘知远认为该同学简历上的这句“在自己写的CPU上运行自己写的操作系统,以及自己实现的编译器生成的程序”,反映的是一位热爱计算机技术少年的浪漫情怀。

“最怕聪明的人还比你努力”,据刘知远的帖子,这位同学的简历上不单单只有这个项目出彩,还有其他吸引人的内容,例如在“龙芯杯”比赛获得特等奖,该大赛由龙芯中科公司提供技术支持,参赛队伍需在龙芯公司提供的 FPGA 开发板上,自行设计 CPU 核心及 SoC,并在上面运行测试程序。他的参赛作品是自行实现的十级双发射顺序 MIPS32 处理器,支持运行最新版 Linux 内核,启动 X11 图形界面以及 Python、GCC 等程序,该作品得到龙芯公司 IP 组负责人高度评价,受邀在“2019 年高等院校计算机系统类课程研讨会”进行报告,如下图:

根据知乎上的讨论,话题的 C 位是清华计算机系本科生周聿浩同学(miskcoo),他曾经是一名 OIer,第一次参赛就拿到了省一。在个人博客简介上,他描述自己“感兴趣的是人工智能中偏理论方面的内容,以及一部分分析方向的数学”。miskcoo 仅仅作为一名大学生,就自行完成了这些很有难度的项目,不得不令人瞠目结舌。

本以为 miskcoo 自可默不作声,沉浸在众人的赞赏中,没想到他在知乎上回帖,从技术角度介绍他所做的项目以及清华系统类课程的细节情况。

我想多说一句,因为刘老师打码的原因可能大家没有注意到,这些东西实际上是我和另外几个同学一起做的。他们都十分厉害,在前面一个龙芯杯的参赛作品的 CPU、SoC、Linux 移植以及其它一些东西里面我主要做的是 CPU 的部分。如果没有他们的话一个暑假完成这样一件事情在我的能力范围内是不太可能的。

他表示这些项目实际上是他和另外几个同学一起完成的,单靠自己是做不出来的。另外这个“在自己写的 CPU 上运行自己写的操作系统”项目,也是多人共同努力的结果,他还详细介绍了每个人的分工情况。关于“自己实现的编译器”部分,miskcoo 表示,本质上是基于编译原理课程的 Decaf 编译器修改而来,完成的情况比较丑陋。

他还贴出了一张 Git 统计出来的项目上每个人的提交时间图:

miskcoo 表示上了热搜是一件很意外的事,他认为这并不是一件值得拿来吹捧的事情,如果正常按照计算机系的培养方案来走的话,上完组成原理之后就能够拥有一个自己写的 CPU,而他们的所作所为只是在某些部分做的比正常值高了一些,这些多出来的部分也极其耗费时间,他们曾在这个过程中遇到很多近乎要让人放弃的 bug,最终能完成项目对他们来说收获的是一份成就感和喜悦,而且项目还有很多不足的地方,很多部分还是处于比较低的水平。

miskcoo 称这件事在传播过程出现了一些信息错误,所以有必要出来澄清,他不希望他们所做的东西被过分地抬高,清华大学里优秀的人很多,还有很多地方需要去学习。miskcoo 也将他们的项目开源,希望能让更多人看到并提出意见。