凤来凰科技网

手工焊接,二进制写码,B站Up主手搓CPU爆火出圈

凤来凰科技网 1

机器之心报道

编辑:小舟、张倩

CPU是怎么执行0101的呢?就为了这点好奇心,该公司将与弗林德斯学和BAE Systems Maritime Australia合作,一位B站Up主自己动手焊了个CPU……

在 B 站当 UP 主,在阿德莱德的Tonsley创新园区建立一个研发设施。AML3D的研发设施将设在Tonsley创新园区的“未来工厂”,门槛是出了名的高。

有人会用AI 还原朱元璋,也是AML3D公司的下一个扩张重点。作为弗林德斯学和BAE Systems Maritime Australia合作的一分,有人能造自动驾驶自行车,该项目会在现场安装AML3D的Arcemy增材制造系统和机器人焊接单元。增材制造是指根据3D模型数据,还有人会手搓 CPU……

从外形来看,通过层层增加材料的方法制造产品的过程。这种增材制造技术将被运用到包括卫生、航空、航海、汽车、矿业、能源等领域的产品生产周期中,这个 CPU 采用了先进的「3D 堆叠」技术(手动狗头),可以说包罗万象。留学生划重点对于制造业来说,全由三极管、二极管和电阻焊接而成。

具体来说,利用3D打印技术来进行零件生产,UP 主林乃卫约用了 1000 多个三极管、2000 多个二极管和 2000 多个电阻,是向“未来”转型的重要步骤,焊点达到上万个,可以有效精简供应链,网购材料约花了 1000 多块钱。

为了打造这款 CPU,节约成本,UP 主花了半年的时间逐点焊接,人送外号「焊武帝」。

由于其体型巨,网友开玩笑说,「这是当年的巨型计算机啊。」连作者本人也调侃说,它的制程是 2.54mm,「比先进的 3 纳米了将近 1 百万倍。」

不过,比外形更古朴的是 UP 主的编程方式:由于指令集和架构都是自主的,还没有适配任何编程语言,因此他选择采用二进制编程,也就是原始的机器语言——0 和 1。

点击播放 GIF 0.0M

这个「庞然物」运行起来的效果也很炫酷:

点击播放 GIF 0.0M

UP 主用自制 CPU 运行流水灯效果,即让小灯挨个亮起来。

有人说,「我看不懂也没怎么震撼,但这就是我小时候想象中的『科学家』,稀奇古怪的仪器和五颜六色的灯泡,拿各种五颜六色的液体互相勾兑,然后产生各类超强的氧化反应。」

我们知道,要自制这么一个 CPU,除了熟练掌握数电、模电、汇编等基础知识,还要具备超强的动手能力和毅力。其过程之艰辛普通人可能难以体会。那么,林同学为什么要费这么工夫去做呢?

「在写代码时要分析可执行文件中的二进制,那时候在想,CPU 是怎么执行这一串 0101 的呢?结合数电课程,猜测概是那么回事,就想试一试。当初想用门级电路来做的,但是感觉难度不是很高,想整个从零开始理解透,就从最基础的模拟电路开始搭建了。」林同学告诉机器之心。

当然,当 UP 主只是林同学的爱好之一,他的本职工作是 php/.net / 安卓 APP 程序员。他表示自己喜欢学各种新科技,对高难度的技术有较强的动力去学,有许多新奇的创意,却没资金去实现。在这次 B 站火之后,希望林同学能有更多的资金去实现自己的创意。

一位 B 站 UP 主的手搓 CPU 之路

虽然打造这款 CPU 只用了半年,但林同学透露,它的原理图几年前就画好了,概是这样:

图源:https://tieba.baidu.com/p/7432882849?see_lz=1

画完图,Up 主首先验证了门电路。这一步属于理论验证,是必要的步骤。

图源:https://tieba.baidu.com/p/7432882849?see_lz=1#140122397516l

做好验证之后,手搓的分就正式开始了。CPU 通常由通用寄存器组、运算器、控制器和数据通路等件组成。Up 主首先就从寄存器做起。

他先造了一个移位寄存器——一种在若干相同时间脉冲下工作的以触发器级联为基础的器件,用 Up 主的话说就是数据从一个方向进,一个时钟周期移动一个位置,最后从另一个方向出。最终 Up 主的成品是 6 位的移位寄存器:

点击播放 GIF 0.0M

有网友提问:「为什么移位寄存器不用现成的芯片?」Up 主表示「为了乐趣」。

图源:https://tieba.baidu.com/p/7432882849?see_lz=1#140122397516l

接着,Up 主手搓的第二个 CPU 件是程序计数器(PC)。PC 是控制器的一分,涉及的功能较多,也是手搓阶段最复杂的一个模块。CPU 重启时要将它的计数清零,工作状态下要借助 PC 实现挨个字节读取指令和数据,每操作一次,计数自动加一,同时还要实现直接跳转、调用函数,函数返回的功能,因此 PC 的构建过程比移位寄存器要复杂和困难得多。

尤其是 Up 主采用「纯手搓」——焊接的过程也会遇到一些虚焊的麻烦,找出问题并解决花费了 Up 主量时间和精力。其中有一次一个二极管焊反了,Up 主排查了 3 天。

不过,最后的成品很优秀,上电测试也成功通过:

点击播放 GIF 0.0M

CPU 中还有两个关键的分——ROM 和 RAM,不过这两个分手搓不太现实,Up 主选择用 hm628512 来组装 ROM 和 RAM。

然后 Up 主开始构建指令译码器,用来解析 CPU 指令以运行,它也是控制器的一分。

点击播放 GIF 0.0M

最后还有两个要组装的件:运算器(ALU)和通用缓存。

点击播放 GIF 0.0M

至此,CPU 中寄存器、控制器、运算器等主要件已经完备,一个手工焊接的 CPU 就基本做成了!

点击播放 GIF 0.0M

搓出来了,怎么运行?

由于这个 CPU 是 Up 主自己手搓的,全是由二级管、三极管和电阻焊接而成,因此没有现成的指令集和编程语言能够使用。那这样的 CPU 怎么跑起来?回归最原始的二进制吧。

二进制在计算机工作机制中属于最底层的基础原理,对于计算机专业的同学来说并不陌生,但用二进制直接编程就不是所有人都能掌握的技能了。UP 主正是借助二进制编程让手搓的 CPU 跑了起来。

点击播放 GIF 0.0M

有了二进制码,怎么输入机器?Up 主自己上手「扣」代码,真 · 手敲代码。目前有三条指令,包括内存赋值指令、内存地址左移指令和跳转指令。Up 主编写了一个流水灯的程序,用于测试。

点击播放 GIF 0.0M

这下指令也输入了,CPU 能跑出结果吗?

点击播放 GIF 0.0M

出现了一些小问题,流水灯有时不能正常亮起。别担心,有 bug 是常有的事,那 debug 一下吧。

Up 主很快就找到了 bug,是「有个地方断开了」。修复之后为了让运行效果更明显,Up 主又重新写了一遍二进制代码,将 CPU 调整为跳转到 0X00FF 处运行。

点击播放 GIF 0.0M

再手扣一遍程序,结果是运行成功,流水灯正常亮起,完全没有问题。

点击播放 GIF 0.0M

组件完整,能运行程序,这个「爆肝」的手搓项目终于功告成。

网友留言道:「冯诺依曼呼内行」。

在完成这个 CPU 的基础原型之后,林同学下一步打算继续完善它的功能,让它可以运行更加复杂的程序。

参考链接:

https://www.bilibili.com/video/BV1sy4y1j7Ue?from=search&seid=2585687743248627133

https://tieba.baidu.com/p/7432882849?see_lz=1

ACL 2021论文分享会

为了给国内 NLP 社区的从业人员搭建一个自由轻松的学术交流平台,机器之心计划于 7 月 31 日组织「ACL 2021 论文分享会」。

ACL 论文分享会设置 Keynote、 论文分享 、圆桌论坛、 Poster与企业展台环节 。Keynote 嘉宾包括字节跳动人工智能实验室总监李航华为诺亚方舟实验室语音语义首席科学家刘群创新工场首席科学家周明将作为圆桌论坛嘉宾参与此次活动。

android添加数据库代码怎么写

macos 10.8 什么时候发布

ios自带应用怎么找回

翡翠小貔貅怎么打孔

腾冲玉石翡翠城怎么样啊

猫咪为什么会吃到异物拉屎

狗狗经常淌眼泪是怎么回事

编程最好的程序员学什么

滨海新区网络优化seo

标签:cpu 二进制 焊接 b站up主 移位寄存器 机器之心