第240章 他们在 MC 里,造了一台能算数的机器
  第237章 他们在 mc 里,造了一台能算数的机器
  ram组是最疯的。
  组长是个卡內基梅隆的硕士,网名“內存泄漏”,名字就很有自知之明。他的方案是用粘性活塞的伸缩状態来存储比特:活塞伸出代表1,缩回代表0。
  一个字节八个活塞,256位元组就是2048个活塞。加上寻址电路、读写控制线、数据总线接口,整个ram模块铺开之后,面积相当於一个足球场。
  “我觉得我在盖数据中心。”“內存泄漏”在discord里发了条消息,配了张俯瞰截图。
  截图里,密密麻麻的活塞阵列排列成整齐的矩阵,红石线像血管一样在其间蜿蜒。从高空看,確实像一块巨大的內存晶片的版图。
  只不过解析度是一米见方的方块。
  伊桑每天晚上都会飞到伺服器上空,俯瞰整个工地。
  alu在西边,寄存器在北边,ram在东边,控制单元在南边。四个模块之间留著宽阔的空地,那是给总线组预留的走线通道。
  整个布局像一张展开的晶片版图。
  他截了张图,没发到任何社交媒体上。存在本地,文件名是“day—12.png”。
  第十五天,alu组完成了加法和减法功能的搭建与验证。
  “硅”在语音里报告:“16位加法,全部真值表通过。减法用补码实现,也没问题。
  延迟大概三秒半一个周期。”
  “比预期快。”伊桑说。
  【写到这里我希望读者记一下我们域名 101 看书网伴你读,101??????.?????超顺畅 】
  “走线优化了一下,省了几个中继器。”
  “位运算呢?”
  “与、或做完了,异或还差两天。移位器————”“硅”顿了一下,“移位器有点麻烦。桶形移位器的面积太大了,我在想要不要改成逐位移位,用时钟周期换面积。”
  “用时钟换。面积不够了。”
  “收到。”
  第二十天,寄存器组完成。四个16位寄存器,读写功能正常,时钟同步没有毛刺。
  第二十五天,ram组完成了前64位元组的搭建和验证。“內存泄漏”说剩下的192位元组是重复劳动,结构一样,就是体力活。
  “我现在右手食指按滑鼠按出了腱鞘炎的前兆。”他在discord里说。
  没人回復。大家都差不多。
  第三十天。
  控制单元组交付了指令解码器的初版。支持八条指令:加、减、与、或、载入、存储、跳转、停机。
  极其精简。但够了。
  伊桑看著指令集表格,在白板上又加了一行字。
  “第三十天。所有模块功能正常。开始整合。”
  总线组开始动了。
  这是最脏最累的活。把四个独立的模块用16位宽的红石数据总线连起来,每一根线都要手动铺设,穿过预留的通道,接入每个模块的接口端。
  十六根数据线,加上地址线、控制线,总共將近五十根红石线並排铺设。
  从空中看,像一条红色的高速公路。
  铺到一半,有根线出了问题。信號传到第三十格的时候衰减了,中继器漏放了一个。
  排查花了四个小时。
  “找到了,”总线组的人在语音里说,声音疲惫得像三天没睡,“x坐標负1847那个位置,少了个中继器。”
  “补上。”
  “补了。通了。”
  没有人欢呼。只是继续铺下一根线。
  第三十八天。
  凌晨三点,波士顿时间。
  伊桑一个人坐在实验室里,面前的屏幕上是mc的伺服器。
  所有模块已经连接完毕。从出生点飞到整个计算机的上空,需要將近一分钟。
  它太大了。
  占地面积超过了游戏里一个中型村庄。密密麻麻的红石线、中继器、活塞和方块,组成了一个极其壮观的矩阵。
  伊桑在ram里手动写入了一段程序。
  很简单:把寄存器a设为3,寄存器b设为5,执行加法,结果存入寄存器c,停机。
  3+5=8。
  小学数学。
  但要让一堆泥巴和红石粉算出这个结果,需要信號穿过上万个逻辑门,经过几十个时钟周期的流水线处理。
  他深吸了一口气,按下了时钟信號发生器旁边的那个石制按钮。
  红石信號亮了。
  暗红色的光芒从时钟发生器出发,沿著总线向四面八方扩散。中继器一级一级地接力,活塞开始有节奏地伸缩,发出沉闷的“咔、咔、咔”声。
  整台计算机活了过来。
  伊桑盯著屏幕,一动不动。
  信號在alu里穿行,全加器的进位链逐级传递。寄存器的触发器在时钟沿翻转状態。
  控制单元的解码器把指令拆解成控制信號,精確地驱动著每一个模块。
  二十秒。
  三十秒。
  四十五秒。
  “咔嗒。”
  停机指令执行。时钟信號停止。整台机器安静下来。
  伊桑飞到寄存器c的位置,低头看那十六个d触发器的输出端。
  从低位到高位:亮、亮、亮、灭、灭、灭、灭、灭、灭、灭、灭、灭、灭、灭、灭、
  灭。
  二进位:0000000000001000。
  十进位:8。
  他盯著那几个亮著的红石火把,坐在椅子上,一动没动,大概有十秒钟。
  然后他摘下耳机,靠回椅背,对著空荡荡的实验室天花板,说了一句话。
  “跑通了。”
  声音很轻,像是说给自己听的。
  他拿起手机,在discord群里打了一行字。
  “3+5=8。首次计算成功。所有模块各项指標正常。”
  凌晨三点十二分。
  群里陆续亮起了绿点。
  “臥槽。”
  “我们居然真的做到了。
  “截图呢?”
  伊桑把俯瞰图发了上去。
  从五百格的高空往下看,整台红石计算机像一块被放大了一百万倍的集成电路,铺满了整个视野。红色的信號线纵横交错,活塞阵列排列成整齐的矩阵,在方块世界的白色平原上,构成了一幅极其震撼的图景。
  discord里安静了大概三十秒。
  然后“內存泄漏”发了条消息:“我要把这张图列印出来贴在我导师办公室门上。”
  “硅”跟了一条:“附议。”
  伊桑没有把这张截图发到reddit上。
  他只是保存在本地,文件名改成了“day—38—first—run.png”。
  t
  然后关掉电脑,去睡觉了。
  闹钟定的早上七点。他还有一篇论文的截止日期在下周。
  但纸包不住火。
  团队三十七个人,总有管不住嘴的。
  第二天下午,一个伯克利的组员在自己的推特小號上,发了一张红石计算机局部特写的截图。没加任何说明,只配了一个表情符號:。
  转发量在两个小时內破了一万。
  因为任何一个学过数字电路的人,一眼就能看出那张截图里的东西是什么。
  那不是什么花里胡哨的红石机关。
  那是一个標准的16位算术逻辑单元。
  评论区的画风跟普通游戏帖完全不同。
  “这是桶形移位器还是逐位移位?看结构像是后者。”
  “右下角那个是进位选择加法器?谁设计的?走线很乾净。”
  “等等,这东西的规模————你们是在造cpu?”
  截图被转到了hackernews。
  標题被编辑改成了:“mit的学生似乎正在《我的世界》里用红石逻辑搭建一台功能完备的16位处理器。”
  四个小时,八百条评论,衝上了hn首页第一。
  伊桑看到的时候,正在食堂吃三明治。
  他嚼了两下,把三明治放下,打开discord。
  “谁发的推特?”
  沉默了十秒。
  伯克利那哥们儿弱弱地冒了个泡:“————我的锅。”
  伊桑没发火。他想了一下,说:“算了。反正迟早的事。但从现在开始,所有对外信息由我统一发布。”
  “收到。”
  “收到。”
  “抱歉,老大。”
  伊桑关掉discord,把三明治吃完了。
  他知道这件事瞒不住。三十七个人的项目,涉及六所高校,保密本来就是奢望。
  但他没想到会这么快。
  更没想到的是,这条消息传回大洋彼岸的速度。
  知乎热榜,当天下午。
  “如何评价mit博士生团队在《我的世界》中用红石搭建16位cpu?”
  问题下面,那个之前提出“图灵完备”猜想的清华微电子系id,第一个写了回答。
  “我之前的猜想被证实了。红石系统是图灵完备的。这意味著,《我的世界》不仅仅是一个游戏,它是一个可编程的物理模擬器。
  陆云,或者说他的团队,在一个面向大眾的沙盒游戏里,埋了一套完整的计算基础设施。这件事的意义,远超游戏本身。”
  回答很短,但赞数在一小时內破了两万。
  评论区里,平时只潜水的技术大佬们纷纷冒头。
  “说个更恐怖的事实:这台红石cpu的指令集架构,和早期的risc处理器高度相似。
  也就是说,如果有人愿意花时间,理论上可以在mc里跑一个极简的作业系统。”
  “楼上別嚇人了。”
  “我没嚇人。我在认真分析可行性。”
  b站这边反应更直接。
  有up主连夜做了个科普视频,標题是《mit疯子在马赛克游戏里造了台电脑,这意味著什么?》。
  视频里用动画演示了红石逻辑门的工作原理,从与门讲到全加器,再到cpu的基本架构。最后放出了那张泄露的截图。
  弹幕在alu特写出现的那一刻彻底失控。
  “我特么大学数电掛了两次,现在在游戏里看懂了。
  “陆云:我做了个游戏。mit:我们在你的游戏里做了台电脑。”
  “所以这游戏的上限到底在哪???”
  播放量一夜破五百万。
  而在海城陆达总部,陆云刷到这条新闻的时候,正靠在沙发上喝茶。
  他看著屏幕上那张红石cpu的俯瞰图,嘴角微微勾了一下。
  没说话。
  把茶杯放下,切回了工作邮箱。
  沈妙妙从旁边探过头来,瞄了一眼他的屏幕。“你不激动吗?mit在你的游戏里造电脑误。”
  “意料之中。”陆云说。
  “切,装。”沈妙妙白了他一眼,缩回去继续挖她的矿洞。