清华学霸直博简历火了!CPU、操作系统、编译器全自主写,刘知远点赞

全世界只有3.14 % 的人关注了

青少年数学之旅

清华大学直博面试的一则简历上了知乎热榜:“实现了在自己写的CPU上运行自己写的操作系统,以及自己实现的编译器生成的程序”。简历主人是清华计算机系本科生周聿浩同学,他顺利拿到直博名额,清华刘知远老师也表示赞赏。

最近,一个来自福州的男生突然火了,原因是知乎上一个热帖《清华大学计算机专业本科的这位同学是什么水平?》:

https://www.zhihu.com/question/345718537

提问者说,他在微博上看到清华刘知远教授的一条微博,对刘教授口中这个优秀同学产生了兴趣:

我看到微博很多人都说很牛逼,连刘知远老师都称赞,但是我好像不怎么能体会到(估计是我自身水平太低了),能有人做一个形象的比喻吗?

640?wx_fmt=png

来源:刘知远老师微博

这名同学网名Miskcoo,他简历中“实现了在自己写的CPU上运行自己写的操作系统,以及自己实现的编译器生成的程序”一句尤其引起讨论,很多对 Miskcoo 比较了解的用户纷纷跟帖回应。

Miskcoo 本名周聿浩,毕业于福州一中,目前在清华大学计算机系就读。他曾经是一名 OIer,第一次参赛就拿到了省一。在个人博客简介上,他描述自己“感兴趣的是人工智能中偏理论方面的内容,以及一部分分析方向的数学。”

而且他本人也非常低调虚心。面对大家的一片赞誉,自己则表示获得刘知远教授认可的项目,单靠自己是做不出来的,特别要感谢一起战斗的小伙伴,包括陈晟祺、刘晓义等。

除了rCore on MIPS这个项目外,Miskcoo简历中另一个受到好评的项目经历是“NonTrivialMIPS - 十级流水双发射 MIPS 处理器”,这是清华计算机系团队在第三届 “龙芯杯” 全国大学生系统能力培养大赛中获得特等奖的项目。这是一个系统类的比赛,要求自己设计一个 CPU,在其上设计 SoC,运行操作系统等。在这个项目中,miskcoo 负责写 CPU(这次称为 NonTrivialMIPS),刘晓义写 cache,陈晟祺负责 Vivado 和 CI ,最终成功夺得特等奖!

640?wx_fmt=jpeg

清华大学计算机系团队夺得第三届“龙芯杯”特等奖

清华硬核系统类课程,“奋战二十天造台计算机”

我们先看引起讨论的“在自己写的CPU上运行自己写的操作系统”这个项目:

rCore on MIPS - Rust 语言实现的 Linux 兼容操作系统  2019年4月-2019年6月

  • 操作系统课程项目。rCore 是用 rust 编写的操作系统。支持了x86_64,RISCV,AArch64 三个平台。本项目主要将其移植到 MIPS32上,最终可以在组成原理课程编写的 MIPS32处理器上运行。
  • 实现了在自己写的CPU上运行自己写的操作系统,以及自己实现的编译器生成的程序。

编译器、操作系统、CPU是三个几乎像无底洞一样大的方向,实现了“在自己写的CPU上运行自己写的操作系统,以及自己实现的编译器生成的程序”究竟有多厉害,知乎用户霍华德言简意赅地评价道:

差不多等于下面这四本书融会贯通吧。感兴趣的朋友可以买来挑战一下自己。
《深入理解计算机系统》、《编译原理》、《计算机组成与体系结构》、《操作系统概念》

miskcoo本人则在知乎回复,强调这些工作离不开与团队的合作:

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

清华大学刘知远老师补充道:
640?wx_fmt=png
640?wx_fmt=jpeg

刘知远老师提到的另一段项目经历,即“NonTrivialMIPS”这个项目,在第三届 “龙芯杯” 全国大学生计算机系统能力培养大赛,陈晟祺、周聿浩、刘晓义和陈嘉杰四位同学组成的清华大学计算机系代表队(指导教师:计算机系陈康、李山山)以性能分数和综合成绩第一的表现获大赛唯一的特等奖。

该大赛由龙芯中科公司提供技术支持,参赛队伍需在龙芯公司提供的 FPGA 开发板上,自行设计 CPU 核心及 SoC,并在上面运行测试程序。清华计算机系学生代表队设计并实现了双发射 10 级流水线 CPU,支持运行最新版 Linux 内核,启动 X11 图形界面,这在大赛历史上属于首次。现场答辩环节上,同学们的优异成果得到专家们的一致好评。

640?wx_fmt=jpeg
图来自:清华大学新闻网

清华大学计算机系对系统原理非常重视,从教学到课程项目都非常硬核。而且近期清华计算机系的系统类课程(包括组成原理、网络原理、编译原理等)都在进行比较大的改革,miskcoo表示,团队能够写出这个项目的部分原因也是由于这些课程的安排较为合理。

下面是清华大学计算机科学与技术专业本科培养方案中的专业主修课程内容:

640?wx_fmt=png
640?wx_fmt=png

项目开源:rCore for MIPS32  - Linux 兼容的 rust 编写的操作系统

rCore for MIPS32这个项目已经在GitHub上开源,感兴趣的读者可以去研究一下:
Github:https://github.com/rcore-os/rCore

rCore for MIPS32 - Linux 兼容的 rust 编写的操作系统(with:陈晟祺)

这是操作系统的课程项目,rCore 是用 rust 编写的一个操作系统,也是由清华的同学编写的。在我们加入之前支持了 x86_64, RISCV32/64, AArch64 三个平台。我们主要将其移植到 MIPS32 上。它最终可以在组成原理课程编写的 MIPS32 处理器上运行。

640?wx_fmt=png

环境:
Rust toolchain at nightly-2019-03-05
Cargo tools: cargo-xbuild
QEMU >= 3.1.0
bootimage (for x86_64)
RISCV64 GNU toolchain (for riscv32/64)
AArch64 GNU toolchain (for aarch64)
musl-cross-make (for userland musl, or download prebuilt toolchain from musl.cc)
libfuse-dev (for userland image generation)
See Travis script for details.

如何运行:
$ rustup component add rust-src llvm-tools-preview	
$ cargo install cargo-binutils	
$ cargo install cargo-xbuild --force	
$ cargo install bootimage --version 0.5.7 --force
$ git clone https://github.com/rcore-os/rCore.git --recursive	
$ cd rCore/user	
$ make sfsimg arch={riscv32,riscv64,x86_64,aarch64,mipsel} # requires $(arch)-linux-musl-gcc	
$ cd ../kernel	
$ make run arch={riscv32,riscv64,x86_64,aarch64,mipsel} mode=release	
$ make run arch=x86_64 mode=release pci_passthru=0000:00:00.1 # for ixgbe real nic, find its pci (bus, dev, func) first

miskcoo的其他项目还包括:

  • NonTrivialMIPS - 十级双发射顺序 MIPS32 处理器
(with:陈晟祺,刘晓义,陈嘉杰)

这是参加 “龙芯杯” 的作品,获得特等奖。我们自己实现了一个十级双发射顺序 MIPS32 处理器,包含 32 位浮点单元和一个 AES 加速单元。在其上自行设计了 SoC 同时移植了 Linux 操作系统。可以运行图形界面(X 服务)以及 Python 等一大类程序,在 OpenSSL 上利用 AES 单元加速后吞吐率大约为 10MBps(CPU 主频 80MHz,在 i7-8750H 上不利用 AESNI 指令的实现吞吐率大约为 100MBps)。同时浮点单元能够较快地绘制 Mandelbrot 集的图像,我们还实现了通过变分自编码器(VAE)生成手写数字图像等。

Github: https://github.com/miskcoo/nontrivial-mips

  • TrivialMIPS - 五级双发射顺序 MIPS32 处理器
(with:陈晟祺,姚沛然)

这是大三上学期组成原理、软件工程的联合实验,在组成原理的 ThinPad 实验板上编写的 MIPS32 处理器。由于仅有 SRAM,处理器不带有 Cache,和 “龙芯杯” 的相比较为简陋。不过,加上之后操作系统和编译原理的成果,还是实现了在自己写的 CPU 上运行自己写的操作系统,同时运行自己写的编译器生成的程序。
Github: https://github.com/trivialmips/trivialmips

  • FPGA Console - 硬件实现的 VT220 兼容终端
(with:陈晟祺)

这是大二下学期数字逻辑设计的项目,也是我的第一个 FPGA 项目。主要是通过 FPGA 接受键盘的输入,将输入转化为控制命令通过串口输出给计算机。同时也通过串口接受计算机传回的控制命令名且解析、执行,修改对应位置的字符,再将字符进行渲染通过 VGA 输出到屏幕。支持 VT220 以及部分 xterm-256color 的控制序列。

Github: https://github.com/Harry-Chen/fpga-virtual-console

  • TrivialDB - 简易 SQL 数据库引擎

这是数据库系统概论的课程项目,用 C++ 实现的一个 SQL 数据库引擎。实现了大部分常见的 SQL 语句和类型。同时支持多表连接、复杂表达式运算、多主键约束、外键约束、CHECK 约束、UNIQUE 和 DEFAULT 约束、聚集查询、利用 B + 树索引的查询优化,同时,它支持任意长度的 VARCHAR 类型。

Github: https://github.com/miskcoo/TrivialDB

  • rubik-cube - 快速魔方解算器

大学后的第一个课程项目,利用 Kociemba 算法实现的三阶魔方求解器。大约能够在 1 秒内通过不多于 32 步复原一个三阶魔方。另外,还实现了 Krof 算法,可以计算最少复原方案,不过这需要很长的时间。同时,我利用 OpenGL 对复原过程进行了动画展示。

Github: https://github.com/miskcoo/rubik-cube

其它项目(较为简单,部分没有公开。有需要代码可以联系我)
  • Mandelbrot-Render,一个高精度 Mandelbrot 渲染器。
  • SimpleTomasulo - Tomasulo 算法模拟器。
  • SimilaritySearch - 近似查找 / 近似连接算法,以及一个 “互联网打车” 应用。
  • OfficeOnline - 在线审批系统。
  • RIPRouter - 支持 RIP 协议的路由器。
  • TrivialNews - Java 实现的 Android 新闻阅读器。
  • 数独 - Qt 编写的数独,可生成及求解不同难度数独。
  • 国际跳棋 - Qt 编写的双人国际跳棋游戏。
  • 人物信息检索 - Python 编写的爬虫,可以抓取 Wikipedia 的人物信息并且显示。

最后,Miskcoo同学的主页请收好:
Miskcoo’s Space - 一个数学和计算机爱好者的博客
blog.miskcoo.com

转载来源:新智元
论文链接:https://www.zhihu.com/question/345718537
部分素材源于网络,版权归原作者所有
如有侵权请留言联系删除,感谢合作

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

写在最后

微信公众号“少年数学家”
提供丰富的数学课外知识
数学人物、数学趣谈、科技与数学

想让孩子懂得更多有趣的数学
记得关注“少年数学家”
640?wx_fmt=png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/300707.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql索引有几种使用索引的好处_mysql索引的类型和优缺点

mysql索引的类型和优缺点索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。注:[1]索引不是万能的!索引可以加快数据检索操作,但会使数据修改操作变慢。每修改数据记录…

使用Blazor开发内部后台(一):认识Blazor

转载技术社区中一位朋友最新的文章,介绍自己为公司的 WebForm 遗留系统使用 Blazor 重写前端 UI 的经历。前言啊,又好久没写文章了,这一年一直在接触新的领域,扩展了一下技术面,学了很多新东西。前阵子发现公司内部有个…

[新手学go]关于go语言中的变量重复声明

代码一: package mainimport ("fmt" )func main() {a,b :1,2 a,b : 3,4fmt.Println(a, b) } 代码二: package mainimport ("fmt" )func main() {a, b : 1, 2k, b : 3, 4fmt.Println(a, b, k) //1,4,2 } 代码…

全球科技界最鼓舞人心领袖揭晓!马斯克第一,马云第五

全世界只有3.14 % 的人关注了青少年数学之旅谁是科技界最鼓舞人心的领袖?最近技术招聘网站Hired对3600多名技术人员进行了调查,最终马斯克击败贝佐斯、纳德拉、扎克伯格等人成功当选,马云排名第五。SpaceX被评为全球私人公司中第二大最受欢迎…

设置mysql表myisam_mysql myisam 优化设置设置

mysql myisam 优化设置设置更新时间:2010年03月16日 21:28:24 作者:mysql myisam 优化设置设置,需要的朋友可以参考下。myisam_max_[extra]_sort_file_size足够大delay_key_write减少io,提高写入性能bulk_insert_buffer_sizeconcurrent_ins…

隐藏文件始终不能显示的完美解决方法

我的电脑"——“工具”——“文件夹选项”——设置“显示所有文件和文件夹”后,系统仍然自动设置为“不显示隐藏的文件和文件夹”,无法看到隐藏文件。解决方法: 打开注册表hkey_local_machine\softwaer\microsoft\windows\currentversio…

NET问答: 为什么 String.IndexOf 在 .net5 和 netcore3 中返回值不一样?

咨询区 Farhad Zamani:当我在 .NET Core 3.1 中运行下面代码的时候,程序会返回 6。class Program{static void Main(string[] args){// .NET Core 3.1string s "Hello\r\nworld!";int idx s.IndexOf("\n");Console.WriteLine(idx)…

vSpere虚拟网卡介绍

在一个物理网络拓扑中,通常都是路由器-交换机-PC机的连接,不同的服务器和PC机,通过交换机的连接而相互连通。在VMwarevSphere架构下服务器会虚拟出交换机来供ESXHost虚拟机来使用,虚拟交换机有两种,vSwitch虚拟交换机和…

快速掌握MATLAB应用,只要从这一步开始!

有人说,“MATLAB除了不会生孩子,什么都会。”矩阵运算、数据可视化、GUI(用户界面)设计、甚至是连接其他编程语言,MATLAB都能轻松实现!那么,MATLAB到底有多厉害?MATLAB拥有丰富的算法…

如何查看 .NET Core 3.1 源代码

背景在 .NET 走向开源后,我们可以方便的查看 .NET 内部的实现方式,学习和寻找问题,甚至参与到 .NET 的开发中。前段时间,同事需要查看 C# 的 Task 类 (System.Threading.Tasks) 的一些实现和内部的原理,想找 Task 类的…

也感山西黑窑洞

也感山西黑窑洞——代腾飞 2007年6月21日 于成都黑窑奴工十年痛屠龙刀下敢不从朗朗乾坤岂纵容敢问苍天谁枭雄转载于:https://www.cnblogs.com/daitengfei/archive/2007/06/22/792794.html

tcl mysql_MySQL·TCL语言

TCL语言就是我们所说的事务控制语言。首先事务的定义就是:一条或者多条SQL语句所组成的一个执行单位,且该组sql语句要么执行要么都不执行。事务有四大特性(ACID),分别为:(1).原子性(A):一个事务是不可再分割的整体&…

[原创]互联网金融App测试介绍

[原创]互联网金融App测试介绍 前端时间非常忙,终于非常忙的时间过去了,抽时间总结下我现在所在公司理财软件App测试,也各位分享下,也欢迎大家提建议,谢谢! 先介绍下我所在公司的产品特点,公司所…

装×失败的后果。。。 | 今日最佳

世界只有3.14 % 的人关注了青少年数学之旅传说中的“虎口夺食”摄像头留下了垃圾桶欺负我的证据用力过猛扯淡还是扯底裤装失败二进洗脚盆玻璃太干净了,注意左边这个傻子哎呀,这个傻子真的是傻中奖的感觉还是要量力而行滑的还真溜。。。电动车此刻注入了灵…

.net core 下的HttpClient、WebClient性能测试

有许多服务需要拉取api接口数据,因此后端开发少不了对Http访问请求进行封装,最主要的应用方式莫过于采用WebClient进行封装,简单易用;而.net core微软官方推荐的是HttpClient和HttpClientFactory,到底哪个性能更加强劲…

北京一公交车发生爆炸 疑为乘客携带药品起反应

勘察人员从公交车里取出可疑爆炸物。薛珺摄点击查看其它图片昨日下午,一辆850路公交车行驶在阜成路时发生爆炸。5名乘客经检查均无大碍。   警方怀疑是乘客所携类似血清的药品引发化学反应所致。   事故现场在八里庄桥上,昨日下午5时许,一…

mysql 常用权限_MySQL的权限有哪些

2015-09-04 回答不知道你问的什么意思,mysql中用户的权如下:select_priv。确定用户是否可以通过select命令选择数据。insert_priv。确定用户是否可以通过insert命令插入数据。update_priv。确定用户是否可以通过update命令修改现有数据。delete_priv。确…

给定两个二叉树T和S,判断S是否为T的子树

2019独角兽企业重金招聘Python工程师标准>>> #include<iostream> #include <stdlib.h> using namespace std; struct node{int data;node* leftchild;node* rightchild; };bool isSubtree(node* root1,node* root2){if(root2NULL)return true;if(root1N…

ABP Framework 为什么好上手,不好深入?探讨最佳学习姿势!

离写上一篇经验总结 ABP Framework 研习社经验总结&#xff08;6.28-7.2&#xff09;&#xff0c;已经过去两周。ABP Framework 研习社&#xff08;QQ群&#xff1a;726299208&#xff09; 最近两周&#xff0c;又迎来了很多新伙伴&#xff0c;成员数量上升至300。从大家的关注…

见识过世界的强大,才能拥有掌握世界的力量

▲ 点击查看在假期的时候&#xff0c;很多家长会选择带孩子一起出去旅游玩耍。在这个过程当中&#xff0c;家长们可能经常都会被孩子各种稀奇古怪的问题给包围住。“这个车为什么能跑的那么快&#xff1f;“这棵树是什么树&#xff0c;为什么它长得比其他树要高&#xff1f;”…