B 站焊武帝爆火出圈:纯手工拼晶体管自制 CPU,
时间:2021-07-29 12:09 来源:未知 作者:admin 点击:次
|
一个人,到底能肝到什么程度? 最近B站上大火的一个视频,或许给了这个问题一个完美诠释: 纯!手!工!自制 CPU!
这位叫做“奶味的”Up 主,耗时整整半年,用他那双勤劳的双手,“逐点”焊接,最终打造出了一个完整 CPU! 手工做一个 CPU 能用么? 当然可以,他还做了一个 demo 展示,来看一下效果吧。
纯手工“肝”出一个 CPU,还成功运行了流水灯效果,直接引发了一大波网友们的惊呼:
(感受下这满屏的 Respect)
接下来,让我们一同看下“肝帝”自制 CPU 的完整过程。 纯手工自制 CPU其实在发布这个视频之前,Up 主便在贴吧中“开玩笑”的说了句:
万万没想到,真的是说干就干。 据这位 Up 主介绍,他主要采用了 3 个原材料: 二极管、三极管和电阻。 通常来讲,CPU 的结构可以大致分为运算逻辑部件、寄存器部件和控制部件等。 而他最先“下手”的,就是 CPU 的寄存器部分。 Up 主设计了一个 6 位的移位寄存器:
它的作用不仅能是用来存储,还能在时钟信号的控制下,将数据进行进行逐次右移或左移。 简单来说就像是一个交警叔叔,当数据从一个方向进来的时候,这个移位寄存器可以指挥它什么时候该往哪里走。 Up 主处理的第二个结构,是程序计数器(PC)。 它作用简单来说,就是记录程序运行的位置。 而这也是整个项目下来最耗时、最复杂的部分,花了整整 3 个月之久。
程序计数器涉及的功能那可就多了。 像最基本的就是挨个字节读完指令后,计数要自动 + 1;而 CPU 重启之后,计数便会清零。 而且在不同的条件之下,还要能实现直接跳转、调用函数、函数返回等功能。 听着就有够复杂的了。 奈何,除此之外,还时常伴随着各种各样的“玄学问题”。 Up 主就举了个例子:
但功夫不负有心人,在经历 3 个月令人头秃的时光之后,最复杂的模块还是被他搞定了。 上电测试也没有问题:
然后就是硬盘(ROM)和内存(RAM)。 这是 CPU 外的比较庞大两个部分要手搓一个不太现实。 因此,Up 主用上了比较容易操作的 hm628512 来做 ROM 和 RAM:
▲左:RAM 和指针 右:ROM 再将 ROM 和 RAM 组装上去,现在 CPU 的基础模块已经基本完成了。 接下来就是打造指令译码器。 它主要是用于把传到这里的 CPU 指令,进行解析运行:
再把做加减乘除的运算器(ALU)加上去:
最后还得再焊一个通用缓存上去:
现在,这个全部由三极管、二极管和电阻焊接而成的 CPU 就完成了! 看到这密密麻麻的元件,工程量的浩大就不用多说。 也难怪能让一众网友直呼“肝帝”了。 还有纯手写最原始代码以为纯手工焊接就完了? 不不不,还有更硬核的。 因为这个 CPU 的指令集和架构都是自主研发的,所以没有适配的编程语言。 那怎么能让它跑起来呢? 这位 Up 主的对策是: 纯手写最原始代码 —— 二进制编程!
噫吁嚱!噫吁嚱! 这一手露的,直接引发了网友们的第二波高潮:
然后…… 然后…… Up 主竟然就开启了上古编程模式 ——“扣”程序!
面对此情此景,怎么一句“绝绝子”了得。 …… 一切准备工作就绪。 接下来,便是见证奇迹的时刻。 亮灯,跑起!但最开始,程序的运行并不是一帆风顺。 即便大神重启了几次,跑马灯的效果偶尔还是出现问题。
但 bug 很快被找到了:
与此同时,因为还没有 I/O 接口,所以测试使用的灯是临时寄存器的灯。 而且左移指令和跳转指令都使用了同一组灯。 因此,流水灯的效果就不是非常明显。 于是,大神重新编程,使 CPU 跳转到 0X0F 处运行。 如此一来,在跳转时灯就是灭的,给左移指令让出了一条路。
一切修改完毕,重新“扣”程序,启动! 这一次,就没有任何的异常了。
走进“肝帝”大神在看完这波“神级”操作之后,想必大家都想了解这位大神。 量子位帮你实现这个梦想。 大神原名林乃卫,广西北海人。 做这个项目的灵感,来源于在他写代码时分析可执行文件中的二进制。 那时候大神便萌生出了一想法:
在结合数电课程的知识之后,大神猜测到了大致的原理,于是就想试一试。 最初他想用门级电路来做的,但是感觉难度不是很高,又想把整个过程从零开始理解透。 于是,便决定从最基础的模拟电路开始。 而整个过程最难的部分,便是“器件每一级的连接”和“CPU 的运行速度”:
至于器件方面,大神均是从网上购得,然后再将它们一点一点地焊接成为模块。 这个 CPU 大致耗费了 1000 多个三极管、2000 多个二极管,电阻数量也达到了 2000 多,焊点近万。 目前的费用大概花了 1000 多元。 而网友在弹幕中调侃居多的,还有制程方面的问题。 据大神介绍:
最后,Up 主还表示,将在接下来的工作中,持续完善 CPU 的功能,让它能够运行更加复杂的程序。 对此,你期待了吗? (责任编辑:sgxyc888) |















