第239章 六十人垒故宫,三十七人造 CPU
  第236章 六十人垒故宫,三十七人造 cpu
  进度极慢。
  慢到令人髮指。
  光是午门的台基,十二个人就磨了整整四天。不是因为技术难度,而是鲁班七號这个完美主义的疯子,要求每一层汉白玉栏杆的望柱间距,必须严格按照《营造法式》里的记载换算。
  差一个方块都不行。
  ““x1247那根望柱歪了,往东挪一格。”
  ““哥,那是一个方块的事儿,肉眼根本看不出来。“”
  ““我看得出来。挪。“”
  没人跟他爭。建筑系的人都有这毛病。
  周三凌晨两点,午门的地基终於铺完了。从伺服器的高空俯瞰,一个巨大的“凹“字形轮廓,端端正正地卡在中轴线上。
  鲁班七號截了张图,发到群里。没说话,就一张图。
  群里安静了几秒,然后有人回了句:“操,像那么回事了。”
  这是他们收到的最高评价。
  每天都有新的截图流出来。午门的城墙开始往上长了,用深红色混凝土一层一层垒上去,顶上铺著黄色陶瓦。远看糊成一片马赛克,但轮廓和比例,已经有了那个味道。
  负责斗拱的哥们儿最惨。故宫的斗拱结构是中国古建筑里最变態的部分,层层叠叠,榫卵咬合。在mc里没有斜面方块,只能用楼梯、半砖和柵栏硬凑。
  他在语音频道里骂了三天娘,拆了建,建了拆,最后用橡木楼梯和云杉半砖的组合,勉强拼出了一个七铺作的斗拱截面。
  从正面看,居然有七八分神似。
  ““行了,就这样吧。““鲁班七號看了半天,说。
  那哥们儿如释重负,直接趴桌上睡著了。
  消息开始往外漏。
  不是官方宣传,就是有人在nga隨手发了个帖。標题很隨意:“有群疯子在mo
  里盖紫禁城,目前完成了午门的地基。”
  配了三张截图。半成品,糙得很,到处都是脚手架一样的临时方块没拆乾净。
  帖子沉得很快,没几个人看。
  评论区零零散散几条回復。
  ““这工程量————怕不是要肝到明年吧。”
  ““午门地基就这么大?后面太和殿怎么办?
  最底下有个人说:““等他们盖完,我第一个去参观。“”
  没人当回事。
  鲁班七號也没在意这些。他现在满脑子都是太和殿的屋顶怎么收。重檐廡殿顶,上下两层飞檐,四角翘起,脊上还得蹲一排脊兽。
  用方块怎么做弧线?
  他盯著故宫博物院官网上太和殿的侧面照片,在草稿纸上画了一晚上,铅笔芯断了两根。
  最后的方案是:用不同朝向的楼梯方块逐级递进,每隔三格抬高一格,形成视觉上的曲线错觉。远看是弧,近看是锯齿。
  但在mc里,远看就够了。
  ““就这么干。““他在群里说。
  没人反对。
  太和殿的柱子开始立了。三十六根金柱,用去皮的云杉原木一根根竖起来,间距严格按图纸。有人在语音里数著数,““三十四、三十五、三十六,齐了。”
  站在殿內往上看,密密麻麻的原木柱子撑起一片空旷的穹顶空间。虽然全是方块,但那种庄严肃穆的空间感,已经隱隱约约地透了出来。
  鲁班七號站在中轴线上,前后左右看了一圈,没说话。
  旁边有人问:““怎么样?”
  ““柱子没问题。“他顿了一下,“但地砖的顏色不对,太亮了。换成深色花岗岩试试。“”
  又是三天的返工。
  没人抱怨。这帮人已经疯了。
  与此同时,伺服器的另一个角落里,有个测绘专业的哥们儿,正拿著坐標在空地上跑来跑去。他在標定金水河的走向。
  故宫的金水河是弯的。
  方块世界里没有曲线。
  他蹲在电脑前,对著autocad里的河道矢量图,一个方块一个方块地在地图上点。每点一个,就在坐標本子上划一笔。
  点了六个小时,河道拐了第一个弯。
  他站起来活动了一下脖子,看著屏幕上那条由蓝色方块组成的锯齿状河流,自言自语:““凑合吧。”
  这条暗线,暂时就这么不声不响地往前推著。没有热搜,没有流量,只有六十多个人在一个没几个人知道的伺服器里,一块一块地垒。
  大洋彼岸。
  波士顿,麻省理工学院,计算机科学与人工智慧实验室。
  凌晨一点,32號楼三层的灯还亮著。
  一个留著络腮鬍、穿著洗到发白的mit连帽衫的博士生,盯著屏幕上mc红石系统的技术文档,已经保持这个姿势超过四十分钟了。
  他叫伊桑·科尔。计算机体系结构方向,博三,导师是搞risc—v的。
  屏幕上是他自己搭的一个红石测试存档。地面上铺满了密密麻麻的红石粉、
  中继器和比较器,像一块被拆开的印刷电路板。
  他刚刚用红石火把和中继器的延迟特性,成功搭出了一个rs锁存器。
  这不难。任何学过数电的本科生都能做到。
  但他在意的不是这个。
  他在意的是,当他把两个rs锁存器串联起来,加上时钟信號之后,它的行为和一个標准的d触发器完全一致。
  输入,时钟沿,输出。严丝合缝。
  伊桑靠回椅背,盯著天花板看了一会儿。
  然后他站起来,走到实验室角落那块满是公式残骸的白板前,拿起马克笔,在空白处写下一行字。
  ““project: redstone cpu.“”
  他在下面又加了一行小字,潦草得只有自己能看懂。
  ““if it“s turing complete, i can build a processor.“”
  笔帽没盖,他就这么拿著笔站在白板前,盯著那行字,眼睛越来越亮。
  伊桑没睡。
  白板上那行字写完之后,他直接回到工位,打开了一个空白存档,开始系统性地测试红石元件的每一种组合。
  红石火把的特性他已经摸清了:它本质上是一个非门。给它供电,它灭:断电,它亮。反直觉,但逻辑自洽。
  两个非门串一个,与门。並一个,或门。交叉反馈,锁存器。
  他花了三天时间,把七种基本逻辑门全搭了一遍,每一种都反覆验证了真值表。没有一个例外。
  第四天,他搭出了一个全加器。两个输入位,一个进位,输出一个和与一个进位。
  占地大概是游戏里六乘八的面积,用了四十多个红石元件。丑得要命,但跑起来严丝合缝。
  他盯著那个全加器看了很久。
  然后打开reddit,在mc板块发了个帖。
  標题很直接:““l“puter inside
  minecraft. who“sin?“”
  他在正文里没写太多废话。贴了全加器的截图,附了一张手绘的16位cpu架构草图,列了需要的模块清单:alu、寄存器组、程序计数器、指令解码器、ram。
  最后一行:““this is not a joke. i need people who know digital
  logic.“”
  帖子发出去四十分钟,三百条评论。
  一个小时,衝上了reddit全站热榜。
  评论区的画风跟游戏论坛完全不一样。没有臥槽牛逼“,全是极其冷静的技术討论。
  ““你的alu打算支持哪些运算?加减和位移够了,乘除用软体实现吧,不然面积爆炸。“”
  ““寄存器用rs锁存器还是d触发器?d触发器稳定但体积大一倍。”
  “ram怎么做?我之前试过用活塞阵列做可寻址存储,八位地址线,理论上能寻址256位元组。够不够?”
  伊桑一条一条回,回到凌晨四点。
  第二天,他建了个discord伺服器,取名““redstonecomputingproject““。
  人数在四十八小时內涨到了三十七人。
  mit的有六个,斯坦福三个,卡內基梅隆两个,剩下的散布在伯克利、乔治亚理工、普渡,还有几个已经在英特尔和amd上班的工程师,用的匿名號。
  分工是伊桑定的。他在discord里发了一张表格,简洁到近乎粗暴。
  alu组:八人。负责搭建16位算术逻辑单元,支持加法、减法、与、或、异或、移位六种运算。
  寄存器组:五人。四个通用寄存器,每个16位宽,用d触发器阵列实现。
  ram组:六人。256位元组可寻址內存,基於活塞状態存储。
  控制单元组:七人。指令解码器、程序计数器、时钟信號发生器。
  总线组:四人。负责把所有模块用红石数据总线连起来。
  测试组:七人。写测试用例,跑验证,排错。
  没有人討价还价。领了任务就开干。
  操。
  这阵仗,比他们实验室里流片前的rtl验证还正经。
  专用伺服器开在aws上,伊桑自己掏的钱。地图是一片被指令刷平的超平坦世界,白茫茫一片,像一块无限大的麵包板。
  alu组最先动工。
  组长是斯坦福的一个博二,网名“silicon““,研究方向是高性能计算。他把16位全加器的设计拆成了四个4位模块,每个模块由四个全加器级联,进位链串行传递。
  听起来简单。
  搭起来要命。
  一个全加器占六乘八的面积。四个级联,加上进位线的走线空间,一个4位模块就是一片小广场。四个模块再串起来,整个16位加法器铺开之后,从头走到尾要跑將近两分钟。
  ““这特么也太大了。““silicon在语音里说。
  ““红石的传输延迟是个问题,““伊桑回,““每十五格信號衰减一次,必须插中继器。中继器本身有一到四刻的延迟。加法器越长,延迟越高,时钟频率就越低。“”
  ““那能跑多快?“”
  伊桑算了一下。““乐观估计,一个时钟周期大概————四到五秒。”
  语音里安静了两秒。
  ““五秒一个周期。““silicon重复了一遍。
  ““对。“”
  ““我导师的实验室里那台测试晶片跑三个g赫兹。”
  ““我知道。“”
  ““行吧。““silicon说,““五秒就五秒。又不是不能用。“”
  他开始搭了。
  寄存器组那边更安静。五个人几乎不说话,各自认领了一个寄存器,埋头用d
  触发器阵列一位一位地垒。十六位宽的寄存器,十六个触发器,每个触发器由两个rs锁存器加时钟门控组成。
  一个寄存器搭完,占地面积相当於游戏里一栋两层小楼。
  四个寄存器並排放好,中间留出走线通道,看起来像一排整齐的伺服器机柜o
  只不过是用泥巴和红石粉搭的。