清华学霸直博简历:CPU、操作系统、编译器全自主写

来源: 投稿
2019-09-17 07:57:00

最近,知乎上有一条帖子火了,该帖子题为“清华大学计算机专业本科这位在「自己写的 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 也将他们的项目开源,希望能让更多人看到并提出意见。

展开阅读全文
点击加入讨论🔥(97) 发布并加入讨论🔥
本篇精彩评论
什么时候去美国?
2019-09-17 09:03
75
举报
写一个ARMv7内核HDL大概900多行,网上有很多种。写一个MIPS32的大概1200行到2000行,这个在自制CPU书里面就有例子。
这个学生自己做了,并且在流水线设计上有了自己的工作或者说见解,已经很可以了。毕竟不是一个工业的东西,而且,学生也接触不到工业的很多设计思路。

对于普通的985学生来讲,可能是一个毕业设计的水平。但是对于清华的学生,可能是一个大作业或者两三个月的成果。
CPU、编译器和操作系统三者整合里面,感觉复杂的是能让整个cpu跑起来其他软件和一些外设,这里面复杂的corner case可能对学生来说,真的很花时间。至少说明这个学生很勤奋而且工程能力不错。
2019-09-17 10:44
21
举报
用HDL语言确实可以模拟出CPU电路,配合相应的FPGA芯片,将电路写进芯片里,这样就得到了(或者说“写出了”)一个CPU。当然这只是一个简易的、理论性大于实用性的、低性能的CPU,真正的商业CPU开发比这复杂得多。
2019-09-17 08:32
21
举报
我也写过一个简单的16位五级流水MIPS处理器 虽然比不上文中的 但是能跑 MIPS资料很多不是太难 操作系统也写过简单的在嵌入式平台运行的 编译器学了一会 还没搞成 可能大部分人觉得CPU很难 但他这些项目在这个专业还是能做出来的 还有一点这是CPU设计 可以FPGA上验证 CPU制造又是另外一回事 要光刻机什么的
2019-09-17 09:31
19
举报
至少说明了学霸是勤奋来的,比一般人都要勤奋。
2019-09-17 08:52
19
举报
97 评论
67 收藏
分享
返回顶部
顶部