锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

太牛了,国人纯手工自制CPU,耗时半年,用了3000多个晶体管

时间:2023-07-15 07:07:00 三极管bv88sy4二极管三极管1y1

金磊 博雯 发自 凹非寺
量子位 报道 | 公众号 QbitAI

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

最近哔哩哔哩大火的视频可能给了这个问题一个完美的解释:

纯手!手!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!工!自制CPU!

这位叫做“奶味的”Up主,花了半年时间,用他勤劳的手一步一步焊接,最终创造了一个完整的CPU!

手工做一个CPU能用么?

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

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

肝帝!焊武帝!

人长在肝上!

(感受这个全屏Respect)

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

纯手工自制CPU

其实在发布这个视频之前,Up主便在贴吧里开玩笑地说:

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

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

据这位Up他主要使用三种原料:

二极管、三极管和电阻。

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

而首先开始的是CPU的寄存器部分。

Up主设计了6位移位寄存器

它的功能不仅可以用来存储,还可以在时钟信号的控制下逐次右移或左移数据。

简单地说,它就像一个交警叔叔。当数据从一个方向进来时,移位寄存器可以指挥它何时何地。

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

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

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

程序计数器涉及的功能更多。

基本的例子是逐字节阅读指令后,计数应自动 1;而CPU重启后,计数将被清除。

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

听起来很复杂。

除此之外,还经常伴随着各种玄学问题。

Up举个例子:

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

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

上电测试没有问题:

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

这是CPU外面比较大的两部分用手搓一个是不现实的。

因此,Up主用更容易操作hm628512来做ROM和RAM:

左:RAM和指针 右:ROM

再将ROM和RAM组装,现在CPU基本模块已基本完成。

下一步是建造指令译码器

它主要用于传输到这里CPU指令、分析操作:

然后加减乘除运算器(ALU)加上去:

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

现在,这一切都是由三极管、二极管和电阻焊接而成的CPU就完成了!

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

难怪所有网友都能叫肝帝。

还有最原始的纯手写代码

以为纯手工焊接就完了?

不不不不不,还有更多硬核的。

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

怎样才能让它跑起来?

这位Up主要对策是:

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

唉!

这只手直接引起了网民第二波高潮

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

直接上机械码,太狠了!

然后……然后……

Up主居然开了古代编程模式——“扣”程序

面对这一幕,怎么说绝子?

……

一切准备就绪。

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

灯,跑!

但一开始,程序的运行并非一帆风顺。

即使大神重启了几次,跑马灯的效果偶尔也会出现问题。

但bug很快被找到了:

有个地方断了。

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

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

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

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

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

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

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

走进“肝帝”大神

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

据大神介绍:

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

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

对此,你期待了吗?

参考链接:

[1]https://www.bilibili.com/video/BV1sy4y1j7Ue
[2]https://tieba.baidu.com/p/7432882849?see_lz=1

本文系网易新闻•网易号特色内容激励计划签约账号【量子位】原创内容,未经账号授权,禁止随意转载。

—— The End ——

推荐好文  点击蓝色字体即可跳转

☞ 一个超级好用的插件—EIDE,在VSCODE下快速创建ARM工程

☞ 如何在GitHub上白嫖代码?先学会Git吧

☞ ARM与RISC-V的恩爱情仇

☞ 强!自制CPU,这个小伙办到了

欢迎转发、留言、点赞、分享给你的朋友,感谢您的支持!

长按识别二维码关注我

你点的每个好看,我都认真当成了喜欢

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章