设为书签 Ctrl+D将本页面保存为书签,全面了解最新资讯,方便快捷。 您也可下载桌面快捷方式。点击下载 | 新浪科技 | 新浪首页 | 新浪导航

B站焊武帝爆火出圈:纯手工拼晶体管自制CPU,耗时半年,可跑程序

2021-07-25 13:56:01    创事记 微博 作者: 量子位   
视频加载中,请稍候...

  欢迎关注“新浪科技”的微信订阅号:techsina

  文/金磊 博雯

  来源/量子位(ID:QbitAI)

  一个人,到底能肝到什么程度?

  最近B站上大火的一个视频,或许给了这个问题一个完美诠释:

  纯!手!工!自制CPU!

  手工做一个CPU能用么?

  当然可以,他还做了一个demo展示,来看一下效果吧。

  纯手工“肝”出一个CPU,还成功运行了流水灯效果,直接引发了一大波网友们的惊呼:

  肝帝!焊武帝!

  人长在肝上了!

  (感受下这满屏的Respect)

  接下来,让我们一同看下“肝帝”自制CPU的完整过程。

  纯手工自制CPU

  其实在发布这个视频之前,up主便在贴吧中“开玩笑”的说了句:

  CPU太贵了,买了显卡就买不起CPU,手工捏个出来……

  万万没想到,真的是说干就干。

  据这位up主介绍,他主要采用了3个原材料:

  二极管、三极管和电阻。

  通常来讲,CPU的结构可以大致分为运算逻辑部件、寄存器部件和控制部件等。

  而他最先“下手”的,就是CPU的寄存器部分。

  up主设计了一个6位的移位寄存器:

  它的作用不仅能是用来存储,还能在时钟信号的控制下,将数据进行进行逐次右移或左移。

  简单来说就像是一个交警叔叔,当数据从一个方向进来的时候,这个移位寄存器可以指挥它什么时候该往哪里走。

  up主处理的第二个结构,是程序计数器(PC)。

  它作用简单来说,就是记录程序运行的位置。

  而这也是整个项目下来最耗时、最复杂的部分,花了整整3个月之久。

  程序计数器涉及的功能那可就多了。

  像最基本的就是挨个字节读完指令后,计数要自动+1;而CPU重启之后,计数便会清零。

  而且在不同的条件之下,还要能实现直接跳转、调用函数、函数返回等功能。

  听着就有够复杂的了。

  奈何,除此之外,还时常伴随着各种各样的“玄学问题”。

  up主就举了个例子:

  花了一个多星期才在最深处找到一只焊反的二极管……

  但功夫不负有心人,在经历3个月令人头秃的时光之后,最复杂的模块还是被他搞定了。

  上电测试也没有问题:

  然后就是硬盘(ROM)和内存(RAM)。

  这是CPU外的比较庞大两个部分要手搓一个不太现实。

  因此,up主用上了比较容易操作的hm628512来做ROM和RAM:

△左:RAM和指针 右:ROM△左:RAM和指针 右:ROM

  再将ROM和RAM组装上去,现在CPU的基础模块已经基本完成了。

  接下来就是打造指令译码器。

  它主要是用于把传到这里的CPU指令,进行解析运行:

  再把做加减乘除的运算器(ALU)加上去:

  最后还得再焊一个通用缓存上去:

  现在,这个全部由三极管、二极管和电阻焊接而成的CPU就完成了!

  看到这密密麻麻的元件,工程量的浩大就不用多说。

  也难怪能让一众网友直呼“肝帝”了。

  还有纯手写最原始代码

  以为纯手工焊接就完了?

  不不不,还有更硬核的。

  因为这个CPU的指令集和架构都是自主研发的,所以没有适配的编程语言。

  那怎么能让它跑起来呢?

  这位up主的对策是:

  纯手写最原始代码——二进制编程!

  噫吁嚱!噫吁嚱!

  这一手露的,直接引发了网友们的第二波高潮:

  手写指令集,牛皮!这才是真·写代码!

  直接上机械码,太狠了吧!

  然后……然后……

  up主竟然就开启了上古编程模式——“扣”程序!

  面对此情此景,怎么一句“绝绝子”了得。

  ……

  一切准备工作就绪。

  接下来,便是见证奇迹的时刻。

  亮灯,跑起!

  但最开始,程序的运行并不是一帆风顺。

  即便大神重启了几次,跑马灯的效果偶尔还是出现问题。

  但bug很快被找到了:

  有个地方断开了。

  与此同时,因为还没有I/O接口,所以测试使用的灯是临时寄存器的灯。

  而且左移指令和跳转指令都使用了同一组灯。

  因此,流水灯的效果就不是非常明显。

  于是,大神重新编程,使CPU跳转到0X0F处运行。

  如此一来,在跳转时灯就是灭的,给左移指令让出了一条路。

  一切修改完毕,重新“扣”程序,启动!

  这一次,就没有任何的异常了。

  走进“肝帝”大神

  在看完这波“神级”操作之后,想必大家都想了解这位大神。

  量子位帮你实现这个梦想。

  大神原名林乃卫,广西北海人。

  做这个项目的灵感,来源于在他写代码时分析可执行文件中的二进制。

  那时候大神便萌生出了一想法:

  CPU是怎么执行这一串0101的?

  在结合数电课程的知识之后,大神猜测到了大致的原理,于是就想试一试。

  最初他想用门级电路来做的,但是感觉难度不是很高,又想把整个过程从零开始理解透。

  于是,便决定从最基础的模拟电路开始。

  而整个过程最难的部分,便是“器件每一级的连接”和“CPU的运行速度”:

  在此之前没有看过关于CPU原理方面的书籍,是靠自己对门电路的理解而设计的一套电路 ,想设计一套属于自己的架构。

  从最基础的三极管开关到门级电路,网上找的电路图根本没法用,需要自己设计。虽然设计好后理论通过了,但是门级之间组合成功能级器件就有新的问题,功能级的电路再多个 组合起来成为功能模块又会产生新的问题,模块与模块之间连接更会产生新的问题。

  这每一级的问题都很有可能要修改基础电路,然后又会从头开始产生新的问题。

  因为没有专业的设备去调试,我用的是一盏LED和蜂鸣器,想尽办法也将速度提高到100kHz左右 而已,这是十分慢的,过程也十分艰难。

  至于器件方面,大神均是从网上购得,然后再将它们一点一点地焊接成为模块。

  这个CPU大致耗费了1000多个三极管、2000多个二极管,电阻数量也达到了2000多,焊点近万。

  目前的费用大概花了1000多元。

  而网友在弹幕中调侃居多的,还有制程方面的问题。

  据大神介绍:

  要是非得给它定个工艺制程,那就是2.54mm,比先进的3纳米大了将近1百万倍。

  最后,up主还表示,将在接下来的工作中,持续完善CPU的功能,让它能够运行更加复杂的程序。

  对此,你期待了吗?

(声明:本文仅代表作者观点,不代表新浪网立场。)

分享到:
保存   |   打印   |   关闭