重生之超级医尊 在我的世界打造一台计算机有多难?复旦大神花了一年
欢迎关注“创事记”微信订阅号:sinachuangshiji
文/栗子 晓查
来源:量子位(ID:QbitAI)
一块小小的CPU里有多少个晶体管?几十亿个。
单枪匹马造出一个CPU乃至完整的电脑需要多长时间?有位大牛在《我的世界》游戏里用实际行动回答了这个问题:可能要花费一年多。
这篇造计算机的教程一经转载就在知乎上火了。
这并不是一篇游戏攻略,而是来自复旦大学的季文瀚,写的一篇课程论文。他在大二时就有了大胆的设想,经过一年的精心营造,建起了一个计算机雏形,取名Alpha21016。
虽然它不能与现实中的计算机相比,只能实现一些简单的功能,但这台计算机体积惊人,光看它复杂的结构就已经能感受工程量的巨大。
有网友感叹,发课程论文可惜了,简直可以发学术论文啊。
这台计算机能做什么
季文瀚计算机使用的是哈佛结构,而非更常见的冯·诺依曼结构。程序储存器和数据储存器分开放置。程序储存器1kb,数据储存器0.5kb。
它可以实现各种函数运算:加减乘除、三角函数还有矩阵运算。它包含一个16bit的CPU和一个32bit的浮点运算单元 (FPU) 。
从硬件上看,它是个超大规模集成电路,逻辑门总数大概在5万-10万门之间。光是存储器堆叠起来就有8层。
要造出这样一台计算机,数字电路、微机原理、汇编语言、编译原理都不能少。想想你挂过哪几门课,从学会到熟练运用就更难了。
有了专业知识的支持,就能将计算机拆解成基本的部件。
我们都知道计算机的基础是数字电路,数字电路的基础是“门”,季文瀚用游戏里基本的“红石电路”搭建出了逻辑门。
从逻辑门出发,再搭建出组合电路、时序电路、触发器,有了这些就能组成CPU的一些基本单元,最终造出整个计算机。
现实世界中,晶体管是数字电路的基础;在《我的世界》中,红石电路是构成复杂电路的基本单元。
红石电路玩家,只用火把和方块,就能造出基本的逻辑门:或门和非门。或门和非门的组合可以造出与门、异或门等任意逻辑门。
但仅仅知道怎么制造逻辑门离造出计算机还很远,可能大致相当于造出汉字笔画到写出《红楼梦》的距离。
季文瀚先给自己的CPU架构画了一个草图:
其中每一个方框都代表一个或若干个硬件单元,小一点的大约一两百个门电路,大的有几千个门电路。这个密密麻麻的部分,也只是架构的右半部分而已:
知道了CPU的基本架构,再按照架构图分别造出每个部分,比如CPU的重要模块“算数逻辑单元”(ALU)和“指令寄存器”(IR),工程量很大。
算数逻辑单元还能进一步拆解,它的加法器由数个全加器组成,上面基本的逻辑门可以组成加法器中最基本的全加器 (下图) 。
全加器也是计算机的一个核心部件。
同时,《我的世界》还提供的基于活塞机械的断路,用信号控制电路的通断,也就是继电器。利用继电器和逻辑门的组合可以造出存储器。
计算器→单片机→计算机
大概是因为太复杂,季文瀚一开始也没想直接搭个计算机。
最初,他的目标是造出一台16 bit的简单计算器。
但做到一半,他就觉得可以实现更复杂的东西,于是想改成单片机:这是具有“图灵完备性”,可以执行一切计算机程序的简单计算机。
他规划了指令集架构,储存器架构,以及指令发射方式等等。
