设为首页收藏本站

天空语文 如皋  九华 作文  教学

 找回密码
 我要加入(register注册)

QQ登录

只需一步,快速开始

快捷登录

最近看过此主题的会员

天空新人

我是文化人

欲绘诗

77翔子

41BCDD

顾佳瑞七六阅读

小燕子

李白202091

蓝兰的花朵

嘿嘿嘿

joycy

颂颂.g

酷土土土

用户已注销

Jeremy

ʚ贴贴ɞ

果子黑

H·princess

李苏楠

方大金

依灵灵灵.

金川兰

lulululu

lisunan18795762

清风拂过

楠大人

查看: 1286|回复: 4
收起左侧

第171夜,在《我的世界》里打造一台计算机有多难?这位...

  [复制链接] TA的其它主题
来自- 中国江苏南通

Ta在天空论坛排行

积分:NO. 1 名

发帖:NO. 1 名

在线:NO. 1 名

gwp! 发表于 2019-5-20 10:33:11 | 显示全部楼层 |阅读模式 来自- 中国江苏南通
来自- 中国江苏南通

加入天空更多精彩

您需要 登录 才可以下载或查看,没有帐号?我要加入(register注册)

x
    第171夜  ,有视频,谨慎打开
    一块小小的CPU里有多少个晶体管?
    几十亿个。
    单枪匹马造出一个CPU乃至完整的电脑需要多长时间?
    有位大牛在《我的世界》游戏里用实际行动回答了这个问题:可能要花费一年多。
     这篇造计算机的教程一经转载就在知乎上火了。
龚老师

2019  05  20  自修后










这并不是一篇游戏攻略,而是来自复旦大学的季文瀚,写的一篇课程论文。他在大二时就有了大胆的设想,经过一年的精心营造,建起了一个计算机雏形,取名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旋转迭代算法:




需要多次迭代,所以运算比较慢,大概花了两分钟。
相比之下开根号就快许多,用的是快速平方根算法:




20秒 (就) 开好了。
计算能力就展示到这里。
而机智的你可能已经也感受到了,显示器对于一台计算机有多重要。那么:
显示器怎么做?
游戏空间太狭窄,造显卡是不现实的:2×2个红石灯,就是游戏能控制的最小像素了。
所以,季文翰做了字符显示器
首先,用七段显示器来表示数字。




一个“日”字,是7根小棒组成的
比如,“4”就有左上、右上、中、右下,一共四根小棒。
每根小棒又由三个方块组成。把这些方块的活塞往回抽,就显示出凹陷的“4”了。
而每个十进制数,都可以对应二进制的四位数,比如3是0011,9是1001。输入二进制数,屏幕就能显示成十进制。
数字搞定了,还有其他字符。季文翰用了自己设计的缩减版ASCII码,只有不到64个字符:



给每个字符编个号:0,1,2,…,63。每个号码,都可以转成二进制数00000-111111。
然后,显示出来长这样:




打开夜视,萤火一般,美不胜收。
其实,这些字是“印”在了显示器的键盘上,白天长这样:




也就是说,计算机有了,显示器有了,键盘也有了。
而这样的杰作,居然来自一位“业余选手”。
“我学的不是计算机”
现在来回顾一下,从逻辑门到计算机,都要经历什么:
或门,非门
→与门,异或门
→全加器,信号长度转换器,多态选择器,储存器单元,译码器单元,求补码单元,移位器单元
→可读写储存器,译码器,加法器,移位器,时钟发生器
→加减法器,乘法器,除法器,可读写储存器阵列,寄存器,程序计数器
→总线,ALU,CU
→计算机
令人意外的是,造出这项复杂工程的季文瀚,是复旦大学2011级生命科学学院的本科生,没有受过系统地计算机科学专业教育。他说,看到国外玩家的作品很感兴趣,才自学了一些专业课。




大二便启动了Alpha21016计算机的开发,作为《网络虚拟环境与计算机应用》这门课的项目来做的。


从他对技术细节的解读来看,那时的季文翰,已经硬件和软件上拥有无比充分的准备。
普通人的话,可能了解逻辑电路的基础。普通红石玩家的话,可以把逻辑电路的基础知识,用来搭建简单或复杂的红石电路。
高阶红石玩家,也曾经在季文瀚的项目开始之前,造出过计算器。
但制造一台计算机,并没有多少人敢想。季文翰不但想到,还用了一整年去实现,几近完成。
毕竟,如果有个容量惊人的大脑,总归要拿来用的吧。




技术博客原文传送门:
http://blog.renren.com/blog/263123705/911088369
一期视频传送门:
https://v.youku.com/v_show/id_XNTkyNTg0NTEy.html

二期视频传送门:
https://www.bilibili.com/video/av4221161/

— 完 —







我知道答案 本帖寻求最佳答案回答被采纳后将获得系统奖励10 天空金币 , 目前已有1人回答

最近访客

谁来看过你
此贴被TA们浏览了1286次
来自- 中国江苏南通
回复
天空论坛,有你有我,明天更好!
来自- 中国江苏南通
点评回复 来自- 中国江苏南通

使用道具 举报 私信管理员来自- 中国江苏南通

来自- 中国浙江杭州

Ta在天空论坛排行

积分:NO. 145 名

发帖:NO. 133 名

在线:NO. 1 名

星梦 发表于 2020-7-1 07:52:24 | 显示全部楼层 来自- 中国浙江杭州
来自- 中国浙江杭州
文章的结构简洁合理,作者对原文的理解也十分深刻透彻。全文语言铿锵有力,掷地有声,读来令人热血沸腾,心潮澎湃。
来自- 中国浙江杭州
回复
天空论坛,有你有我,明天更好!
来自- 中国浙江杭州
点评回复 支持 反对 来自- 中国浙江杭州

使用道具 举报 私信管理员来自- 中国浙江杭州

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

×天空论坛发帖友情提示:
1、注册用户在本论坛发表、转载的任何作品仅代表其个人观点,不代表本论坛认同其观点。
2、如果存在违反国家相关法律、法规、条例的行为,我们有权在不经作者准许的情况下删除其在本论坛所发表的文章。
3、所有网友不要盗用有明确版权要求的作品,转贴请注明来源,否则文责自负。
4、本论坛保护注册用户个人资料,但是在自身原因导致个人资料泄露、丢失、被盗或篡改,本论坛概不负责,也不承担相应法律责任。

QQ|手机版|我们的天空 ( 苏ICP备18048761号 ) |苏公网安备32068202000215号 |网站地图

GMT+8, 2024-11-29 18:21 , Processed in 0.230600 second(s), 58 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表