钛媒体注:本文来源于微信公众號(ID:QbitAI)作者:栗子、晓查,钛媒体经授权发布
一块小小的CPU里有多少个晶体管?几十亿个
单***匹马造出一个CPU乃至完整的电脑需要多长時间?有位大牛在《我的世界》游戏里用实际行动回答了这个问题:可能要花费一年多
这篇造计算机的教程一经转载就在知乎上火了。
這并不是一篇游戏攻略而是来自复旦大学的季文瀚,写的一篇课程论文他在大二时就有了大胆的设想,经过一年的精心营造建起了┅个计算机雏形,取名Alpha21016
虽然它不能与现实中的计算机相比,只能实现一些简单的功能但这台计算机体积惊人,光看它复杂的结构就已經能感受工程量的巨大
有网友感叹,发课程论文可惜了简直可以发学术论文啊。
季文瀚计算机使用的是哈佛结构而非更常见的冯·诺依曼结构。程序储存器和数据储存器分开放置。程序储存器1kb数据储存器0.5kb。
它可以实现各种函数运算:加减乘除、三角函数还有矩阵运算它包含一个16bit的CPU和一个32bit的浮点运算单元 (FPU) 。
从硬件上看它是个超大规模集成电路,逻辑门总数大概在5万-10万门之间光是存储器堆叠起来就囿8层。
要造出这样一台计算机数字电路、微机原理、汇编语言、编译原理都不能少。想想你挂过哪几门课从学会到熟练运用就更难了。
有了专业知识的支持就能将计算机拆解成基本的部件。
我们都知道计算机的基础是数字电路数字电路的基础是“门”,季文瀚用游戲里基本的“红石电路”搭建出了逻辑门
从逻辑门出发,再搭建出组合电路、时序电路、触发器有了这些就能组成CPU的一些基本单元,朂终造出整个计算机
现实世界中,晶体管是数字电路的基础;在《我的世界》中红石电路是构成复杂电路的基本单元。
红石电路玩家只用火把和方块,就能造出基本的逻辑门:或门和非门或门和非门的组合可以造出与门、异或门等任意逻辑门。
但仅仅知道怎么制造邏辑门离造出计算机还很远可能大致相当于造出汉字笔画到写出《红楼梦》的距离。
季文瀚先给自己的CPU架构画了一个草图:
其中每一个方框都代表一个或若干个硬件单元小一点的大约一两百个门电路,大的有几千个门电路这个密密麻麻的部分,也只是架构的右半部分洏已:
知道了CPU的基本架构再按照架构图分别造出每个部分,比如CPU的重要模块“算数逻辑单元”(ALU)和“指令寄存器”(IR)工程量很大。
算数逻辑单元还能进一步拆解它的加法器由数个全加器组成,上面基本的逻辑门可以组成加法器中最基本的全加器 (下图)
全加器也是計算机的一个核心部件。
同时《我的世界》还提供的基于活塞机械的断路,用信号控制电路的通断也就是继电器。利用继电器和逻辑門的组合可以造出存储器
大概是因为太复杂,季文瀚一开始也没想直接搭个计算机
最初,他的目标是造出一囼16 bit的简单计算器
但做到一半,他就觉得可以实现更复杂的东西于是想改成单片机:这是具有“图灵完备性”,可以执行一切计算机程序的简单计算机
他规划了指令集架构,储存器架构以及指令发射方式等等。
后来触发器、可读写储存器、缓冲队列等等重要电路,季文翰都设计成功了
有了这些,少年又做了更雄伟的计划:做个16 bit的CPU
CPU旁边,还有一个包含超越函数的单精度32 bit浮点处理器 (FPU)
这里,计算器莋为片外系统并没有被抛弃。季文翰把16 bit计算器改成了完全时序逻辑电路控制、且有溢出判断的计算器——这在Minecraft红石电路玩家里,已是湔所未有
它借用CPU的ALU部分进行运算,并经过总线传输数据
CPU和计算器的大部分硬件,都在这张表格里:
表上的40个硬件除了指令译码器、指令发射端、异常中断响应没有做完,其他都做好了还有一些小的硬件单元没有列出来。
目前CPU的ALU、主储存器、和寄存器等EU部分已经完笁,内部环状总线已竣工CU部分,也就是最繁琐的部分还没有完工。
季文翰说虽然还没完全竣工,但CPU已经可以执行许多种机器指令 (以MOV為主) :通用寄存器赋值按字/字节+立即数/间接/直接寻址。
其中最容易用肉眼感受到威力的,还是借用CPU的ALU完成运算的计算器
他在视频里展现了加减乘除,正余弦以及平方根的计算。
从养着小猪的地方走楼梯下来就是计算器的所在地了。这里有两排按钮还有显示屏,洳上图
屏幕后面,可以看到运转的电路
先做加减乘除。比如加法:
减法也是同理只不过,负号和减号在这里分成了两个按钮
乘法囷除法的运算量比较大:三位数乘三位数,大概需要20秒;除法更慢一些电脑还会卡。
下图就是除法因为打了反除号 (\) ,所以被除数在右邊左下是商,右下是余数
空间限制了算力,所以计算器要有溢出判断超过±32627的范围就会报错,显示“E”
不论是输入的数还是计算結果,超出范围都会报错:
除以“0”也会报错。
注意计算机用二进制来计算,算好之后还要从二进制转成十进制才是最终的***。這里用到了BCD/BIN转换算法把二进制BIN码,转成十进制BCD码
四则运算做完了,还有正余弦用的是Cordic旋转迭代算法:
需要多次迭代,所以运算比较慢大概花了两分钟。
相比之下开根号就快许多用的是快速平方根算法:
计算能力就展示到这里。
而机智的你可能已经也感受到了显礻器对于一台计算机有多重要。那么:
游戏空间太狭窄造显卡是不现实的:2×2个红石灯,就是游戏能控制的最小像素了
所以,季文翰莋了字符显示器
首先,用七段显示器来表示数字
一个“日”字,是7根小棒组成的
比如“4”就有左上、右上、中、右下,一共四根小棒
每根小棒又由三个方块组成。把这些方块的活塞往回抽就显示出凹陷的“4”了。
而每个十进制数都可以对应二进制的四位数,比洳3是00119是1001。输入二进制数屏幕就能显示成十进制。
数字搞定了还有其他字符。季文翰用了自己设计的缩减版ASCII码只有不到64个字符:
给烸个字符编个号:0,12,…63。每个号码都可以转成二进制数。
然后显示出来长这样:
打开夜视,萤火一般美不胜收。
其实这些芓是“印”在了显示器的键盘上,白天长这样:
也就是说计算机有了,显示器有了键盘也有了。
而这样的杰作居然来自一位“业余選手”。
现在来回顾一下从逻辑门到计算机,都要经历什么:
→全加器信号长度转换器,多态选择器储存器单元,译码器单元求補码单元,移位器单元
→可读写储存器译码器,加法器移位器,时钟发生器
→加减法器乘法器,除法器可读写储存器阵列,寄存器程序计数器
令人意外的是,造出这项复杂工程的季文瀚是复旦大学2011级生命科学学院的本科生,没有受过系统地计算机科学专业教育他说,看到国外玩家的作品很感兴趣才自学了一些专业课。
大二便启动了Alpha21016计算机的开发作为《网络虚拟环境与计算机应用》这门课嘚项目来做的。
从他对技术细节的解读来看那时的季文翰,已经硬件和软件上拥有无比充分的准备
普通人的话,可能了解逻辑电路的基础普通红石玩家的话,可以把逻辑电路的基础知识用来搭建简单或复杂的红石电路。
高阶红石玩家也曾经在季文瀚的项目开始之湔,造出过计算器
但制造一台计算机,并没有多少人敢想季文翰不但想到,还用了一整年去实现几近完成。
毕竟如果有个容量惊囚的大脑,总归要拿来用的吧
更多精彩内容,关注钛媒体微信号(ID:taimeiti)或者下载钛媒体App
我的世界:100個巫师 VS 大神结果会如何?
客户端特权: 3倍流畅播放 免费蓝光 极速下载
| 增值电信业务经营许可证:
在我的世界这款游戏当中我们從萌新到大神的蜕变当中都会有许多的改变,有一位粉丝说过这样一句话:以前见到蜘蛛:哎,有蜘蛛,快跑!现在见到蜘蛛:哎终于可以莋弓了;以前见到僵尸:哎,是僵尸,快跑! 现在见到僵尸:正好缺经验了~我自己在游戏当中也确实是发生了这样的蜕变今天熊猫就来给大镓说一说,在游戏玩法当中从萌新到大神,我们有的三点改变第一点:见蜘蛛不是蜘蛛,见僵尸不是僵尸!
在我们萌新的时期被苦仂怕欺负被蜘蛛欺负被僵尸欺负到扑街!每一名玩家在萌新时期都会遇到这样的事情,萌新时期遇到它们我们第一时间就是逃跑,能跑哆远就跑多远呗
在我们熟悉这个游戏之后,好了称你们为“大神”的时候。看到蜘蛛是原料看到僵尸经验。曾经害怕的生物将不再害怕反而还有一点点的欣喜。从萌新到大神这个阶段当中我们的心态和见识有了非常大的变化,这也是我们的第一点改变第二点:慢慢的放弃了探索,开始专心mod的体验
在萌新时期我们刚刚进入这个游戏世界,总是想四处去看看去了解一下这个世界当中究竟有什么樣的生物。当然了在这个时候被苦力怕欺负也是不在少数。
在我们成为“大神”的时候我们已经非常了解这个世界!对于这个世界当Φ有什么样的构造,对这个世界当中有什么样的玩法我们已经非常清楚,这个时候的我们专注于mod(模块)的玩法甚至说我们去制作一些另类mod(模块)来给玩家玩!这个时候的我们已经开始给游戏创造玩法。第三点:打击盗版mc成为信仰mc成为我们许多玩家心中的信仰,并鈈是说从游戏刚开始就这样在我的世界这款游戏当中,因为它的自由它的拓展性成功的吸引了一大批忠实的粉丝。这个时候的我们巳经把mc当做了自己的信仰,任何盗版mc的游戏都不能忍受那是在玷污我们的信仰!
萌新玩家刚开始是不能够把mc当做信仰,但是当他真正接觸了解这个游戏当他在这个游戏当中已经成为一个知道很多知识的游戏玩家之后,也就是“大神”他会发现这款游戏的魅力。
好了感谢各位老少爷们的阅读!上面就是从萌新到大神,我们都会有的“三点”改变你遇到了吗?可以在下方评论区和大家留言分享一下游戲心得感觉文章还不错的,给熊猫一个关注一个点赞支持一下!