查看原文
其他

三周造台计算机!不难?!

思佳 苑洁 思彤 清华大学 2021-04-09


11月某天的清晨

许多清华人的朋友圈

被一张照片刷屏



就是它!

传说中的贵系

三周…造台计算机…




此“机”非彼“机”


“我们造的计算机不是你们想象的计算机。”


原来,流传甚广的那张图是清华大学计算机系“计算机组成原理”课程开课时的照片。该课程的实验课老师计算机系李山山实验员介绍说,“对你们而言,计算机等于台式机或者笔记本电脑,但对我们而言,计算机只是一个能执行程序的装置。”


“贵系”眼中的计算机

“计算机组成原理”是计算机系本科三年级必修课,包括理论课和实验课。理论课主要讲解计算机各组件的基本工作原理和其协同运行关系,以及程序是如何在计算机硬件上运行的。而在实验方面,同学们需要完成5次小实验,以及最终的大作业——“奋战三星期 做台计算机”!


计算机系刘卫东教授正在讲理论课


这项大作业要求同学们小组合作(通常3人一组),在三周时间内写出一个功能完整的CPU(Central Processing Unit,中央处理器),并将其“烧写”进老师提供的实验板中,从而能够执行一套程序。


实验装置功能部件说明


CPU 是可以运行用户代码的硬件电路设计,而“烧写”是指同学们用硬件描述语言Verilog给实验板编程,改变实验板上FPGA(Field Programmable Gate Array,现场可编程逻辑门列阵)内部电路元件之间的连接关系,从而造出CPU。在如今的在线云实验条件下,同学们只要点击“上传”按钮就能实现自动“烧写”。


而有了CPU的写入,一块实验板就变成了一台真正的计算机。


提问:这里有几台计算机?



为什么要“造机”


“‘计算机组成原理’课程就是学习计算机的组成部分、工作原理等。我们希望学生能够通过这个大作业将以前学的‘数字逻辑电路’‘硬件描述语言’‘编译原理’和现在学的‘计算机组成原理’等知识都融会贯通、学以致用。”李山山说,要完成造机任务需要对这些基础知识和CPU非常了解,但是他认为这个作业“不难”


“我们的基本要求是同学们做出的CPU能运行一套监控程序,它是用来协助运行程序的程序,导入实验板内存后,可以通过运行测试程序检测同学们做出的CPU运行是否正确。同学们造出的CPU需要通过性能测试、额外指令测试等各类测试才算成功。”李山山介绍到,同学们也可以自己再增加一些扩展功能,比如流水线、处理异常中断、输出视频和图像等。每一年的作业展示中都会有同学带来“惊喜”



三周,造机+惊喜


经过三周轰轰烈烈的“造机”运动

激动人心的时刻到来了

同学们迎来了作业答辩


贵系同学再一次证明

他们不仅能成功“造机”

还风趣

幽默

浪漫

……

接下来

让我们一起走进答辩现场


内容丰富的PPT


滑动看古风和科技结合的答辩PPT


一起欣赏

新鲜出炉的计算机

扩展功能演示环节


上学人,加油!

1


我们组实现了输出图片。”肖同学介绍说,“和大家一起配合完成这个任务太有趣了,每次跑通一个功能都好开心。” 


Langton’ant

2


“我们组实现的是Langton’ant,这是一只在黑白格子上的、逻辑简单却拥有极复杂表现的蚂蚁。”刘同学说,“我们选择它是因为这个程序能动态展现出CPU和VGA(视频信号)的联动。”    


猜这个投篮男孩是谁?

3


“我们组实现了视频输出。就是把许多图片写到flash里,每隔一段时间播放一张,放快一些就变成了视频。”吕同学说,“但是由于我们实验平台的flash大小有限,无法存储很多高像素的图片,因此只能存储低像素的图片。我们的CPU在读取到这些数据后,会上采样到800*600的图片,因此在我们展示的视频中像素块就会非常明显。”


来啊,走迷宫啊

4


“我们做了一个迷宫小游戏,相当于在自己造的计算机上跑自己写的游戏。黄同学说,“我们加入了人机交互元素,玩家可以通过控制实验板上的四个按钮来控制蓝色块上下左右移动,最终绕过障碍到达终点完成游戏。”


理工科的浪漫—生命诞生

5


“我们组完成的是康威生命游戏(Conway’s Game of Life),每一个时刻细胞都会根据当前周围八个格子内有无细胞,按照某一规则确认下一个时刻这个细胞是否存活。”夏同学说,“这个游戏本身的规则很简单,但正是从0和1的变化之中演化出世间万物,是一种理工科的浪漫,也以此纪念今年去世的数学家John Horton Conway。”


Jerrrrrry

6


“我们组最有挑战性的工作其实是完成了一个基于RISC-V的五级流水线CPU,实验过程中经历了长时间痛苦的Debug,但最终还是完成了,并且性能也相对不错。”李同学说,“除此之外,出于兴趣我们还做了VGA外设的扩展支持,以便可视化我们计算机的功能。为了完成这件事情,首先在硬件上,我们编写了一个扩展模块用以操控VGA屏幕。另外我们使用RISC-V汇编编写了播放gif动画的程序,并将程序写入我们造出的计算机中运行。”


Windows操作系统……的logo

7


“之前觉得造机是不可能完成的任务,但最后还是把它啃下来了。”数学系黄同学说,他和来自土木系、航院的另外两名队员都选修了计算机专业课程,组建了这个全员外系“造机”团队。“编译原理、硬件描述语言、数字逻辑电路等造机知识基本都是现学的压力确实挺大。不仅是造机,之前的每次小实验都不知该如何下手,全靠自己一点点钻研和微信求助老师助教,非常感谢他们。”黄同学说,“我们组实现了Windows 的logo图片输出,四舍五入就相当于造出了一个Windows系统吧。”


造机结束,同学们收到了这份纪念礼物


“和之前学习的软件相比,硬件调试真的很痛苦。”刘同学介绍到,他们3人一组做出CPU一般需要200-300小时,一共写了3560行代码。但当整个团队共同完成这份自己创意的大作业时,一切都值了。


“大作业艰难却值得留念,提高了我们的团队合作能力,提高了我们Debug的技巧和耐心,还教育了我们不要好高骛远”柴同学和张同学答辩时共同表示。


“Debug时压力会比较大,特别是花2-3h都找不出哪里出错的时候,但我内心一直相信自己能做出来。”吕同学说,“其实我在大一刚入学时就听说了这个大作业,当时就特别期待,这可能是每个计算机系同学必须经受的一次历练,会是很难忘的经历。”


在阳台上“凉快凉快”的计算机


造机期间,许多同学妙招频出。比如买来冰块给CPU降温,“温度越低,CPU工作越稳定,但是室内暖气太旺盛了!所以我们会用冰块靠近开发板,还会经常去阳台上调试。”刘同学说。


实验期间同学们的外卖单



“造机”背后的故事


计算机系计网联合小班同学和助教


2020年秋季学期一共有242位同学选修了“计算机组成原理”,课程安排了计算机系刘卫东教授、陈康副研究员、陆游游副教授三位理论课老师,实验课老师李山山,以及六位助教。


同学在实验课上向助教介绍本组构思


在实验课上,每位同学都会介绍自己对计算机的构思,老师们、助教们以及上一届的热心同学都会在课上及课后和同学们一起讨论其构思的可行性。


虚拟实验板:Thinpad-Cloud教学计算机


为了同学们操作方便,老师们还开发了“虚拟实验板”,“它是真实实验板的简化版本,上面的按钮都可以用鼠标点击控制。真实的实验板在系里,我们通过在线平台把写好的代码‘烧写’到其中某一块实验板上。”计算机系的肖同学说。


“实验器材是老师们为这门课专门开发的”,李山山介绍到,从早期的小规模芯片连线,到后来的可编程器件FPGA,再到现在的在线云实验。这项大作业的实验模式和内容都在持续更新。



老师鼓励同学们开拓创新

努力理解同学们的想法

为同学们提供尽可能好的实验条件

同学们在承受着DDL压力的同时

也在自由探索

既巩固了知识

又收获了满满的成就感和友情


或许

这就是“三周造台计算机”的

魅力所在


往期报道

110年,纪念这位“人民的数学家”

揭秘清华“0304”

10000000000,节日快乐!

点击查看👆


策划&统筹 | 苑洁 周思佳

采写 | 周思佳

视频拍摄&剪辑 | 陈思彤

主持人|魏明伦

表情包绘制|蔡雨欣

图片来源 | 计算机系 周思佳 陈思彤

排版 | 潘雯菲

编辑 | 苑洁

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存