给他跪了,B站这哥们手搓了一个CPU!

一个星期前,我刷 B 站的时候,瞅到了个视频,标题为「(爆肝)纯手工自制 CPU」。

我丢,早前听说过有手搓操作系统的,听说过游戏「我的世界」里有手搓电脑的,这个现实中手搓 CPU 又是个什么鬼?

抱着极大的好奇,我点了进去,也让我有幸认识了一位「焊武帝」,一个肝上长个人的牛人。

先给大家提个醒,他手搓的 CPU 大概和我们想象中的 CPU 不一样,是一副「老古董」的样子。

可不是我瞎说,这个手搓版 CPU 的成品俯拍图是这样的:

没错,就是只利用「二极管 + 三极管 + 电阻」这些原材料,纯手工,逐点焊接,耗时半年,UP 主「奶味的」肝了个 CPU 出来。

其实我看到这玩意第一反应是觉得简陋,但更多的,是一种我看不懂,但大受震撼的既视感。

在视频中,UP 主用这个自制的 CPU 跑了个流水灯,效果感人:

好了,又到了喜闻乐见的讲故事环节,我们来讲讲这位 UP 主到底是谁,在手搓 CPU 的背后到底又做了什么。

他是谁

UP 主原名林乃卫,乃卫,乃卫,大概这就是他 B 站名字(奶味的)的由来了吧。

林同学没有什么耀眼的身份背书,就是一个普普通通的电子工程本科学生,而手搓 CPU 的基础知识自然大多来自学校。

让我们把目光回到林同学大三的时候,如往常一般敲代码的他,心里一直纳闷一件事:

为啥一串串的 01 代码就能让 CPU 执行指令了呢?

可不要小瞧了好奇心,最少林同学心里的好奇,成了他探索 CPU 「秘密」的动力源,为了满足好奇,他结合着已经学过的数电知识,开始对着编译后的二进制文件掉头发。

渐渐的,他搞懂了问题,也让自己的好奇心升级成了野心:要不,自己搞个 CPU 试试?

按林同学自己的话说,自己折腾 CPU,不仅可以打发时间,还能经常动脑防止老年痴呆,更关键的是,毕业以后可凭此经历给找工作加分。

一举三得,何乐而不为呢。

不过我想,林同学当时之所以做这个决定,更多的是为了满足自己的好奇,探索欲旺盛是他身上如何也躲不过去的优点。

不管怎样,林同学放弃了最开始用门级电路实现的想法,主动给自己提高难度,准备从最基础的模拟电路开始,把制作过程拆分后再逐步实现。

此后的一年里,林同学把课余生活贡献给了设计电路,做足了准备后才忍痛花上两个月的伙食费,入手了一批芯片和设备。

万事俱备,只差动手了,可林同学好像忘了一件事,原来自己马上就要毕业了。

众所周知,对于一个大四毕业生,天大地大,没有毕设大,所以他只能暂时封存了自己的手搓大计,只待未来再重启自己的计划。

可谁又能想,这一等,就等了 5 年。

毕业后的日子是忙碌的,忙工作,忙生存,忙着过日子,再也不能像上学那会专心搓自己的计划了。

5 年后,以程序员身份在外打拼的小林都快熬成老林了,但他一直没能忘掉自己的手搓计划。

上一年,由于疫情的来势汹汹,回到了广西北海老家的林同学,意外发现没有了深圳的喧嚣,自己终于再次拥有了追梦的机会。

手搓 CPU 项目,重启!

他做了什么

时隔 5 年,林同学重新再次审视起了自己所设计的电路,我猜那时的他心里估计跟我看自己写的屎山一样,是想笑又笑不出的。

不过既然决定重来,何不推翻最初的设计,另起炉灶从旁边翻过那座山。

说干就干,林同学重新设计了电路:

然后从网上买来了所需的器件,一个点一个点的把二极管 + 三极管 + 电阻的原材料焊成模块。

其实我们惊叹的并非林同学创意如何,而是强大到令人生草的动手能力和执行能力。

他焊了两个通用寄存器串联实现的多功能控制器:

这玩意有啥用,说白了就是来充当交警的,它指挥着数据的转向。

有一件事我记得很清,有人评论说寄存器这东西是有现成的芯片卖,本来几毛钱就能搞定的事,为啥要费那老劲自己焊?

林同学的回答是,为了兴趣。

还焊有程序计数器(PC),前前后后忙了 3 个月:

程序计数器这玩意又有啥用?

可以说程序跳转、调用函数、函数返回这样的功能都要依靠它来实现,毕竟它是 CPU 用来记录程序运行位置的模块。

至于计数器为啥能让肝帝林同学花上 3 个月的时间,他有一次为了 debug,足足找了一个星期,才从模块最深处那个被焊反的二极管发现了问题所在。

也不要怀疑我说的「深」,你瞅瞅林同学拍的这张图,我是品出来了点理科男浪漫那味。

不过林同学并非没有妥协,比如实在无法手焊的硬盘(ROM)和内存(RAM),就是用的成品、

无奈的妥协,不足以掩盖林同学的努力,有了这四大模块,就构成了 CPU 的雏形。

为了能让 CPU 正常「跑」起来,林同学还焊了译码器和运算器,备了个通用缓存,前前后后,一共用了 1000+ 的三极管、2000+ 的二极管、2000+ 的电阻。

为啥称他「汉武帝」,你想想把 5000 多的零件焊到板子上得费多少功夫。

「焊武帝」,绝非浪得虚名。

但焊不是最终目的,让 CPU 跑起来才是。

跑之前还有个问题没有解决,因为指令集和架构都是林同学自己设计的,编程语言不适配啊。

怎么办?

手搓二进制代码:

这耐心,这热情,没话说了,心甘情愿的三连了。

本想着再过过眼瘾,去翻了翻林同学的 B 站投稿,发现一共也就 4 个视频:

但我相信,他的故事还远没有结束,不管是优化 CPU 的速度,还是减少 CPU 的面积,林同学有的肝咯。

总结

害,其实我挑中这个选题,是想和大家大谈理想、热爱、梦想、追求的,但写着写着,我发现,其实把林同学的故事告诉给大家就够了。

咱也不用去评判林同学的理论能力、动手强度,人家在热爱的道路上大步走着,我有嘛?你有嘛?

如果有,请务必留言区凡尔赛一下,让我再羡慕羡慕。

不过话说,现在 B 站门槛都这么高了吗?

前有稚晖君自动驾驶自行车,后有林同学手搓 CPU。

嗯,不要说什么两人难度不一样,对于作为观众的我来说,同一般的过瘾。

(0)

相关推荐