⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 量子位(QbitAI) 「量子位」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注**微信公众号:【芋道源码】**有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

我还记得前年的时候,分享过一个 B 站的 UP 主:奶味的,当时这位被粉丝称为「焊武帝」的牛人,硬是利用「二极管+三极管+电阻」这些原材料,手搓了一个 CPU。

但 UP 主在这个初次手搓 CPU 的视频发出后,大佬一度失联,本以为大佬燃尽了激情,没想到是憋了 2 年的大招。

嗯,焊武帝卷土重来。


两年时间,一个 90 后体制内小哥下班之后只干三件私务,那就是:

手搓 CPU!手搓 CPU!还是***手搓 CPU!

纯手工制作、全自主研发,于是一个名叫“初芯”的 CPU 终极形态终于诞生。

据 UP 主估计,整个 CPU 共计两万多个器件、10 万多个焊点,全都是一个个手动组装上去的,网友给他“焊武帝”的称号果然名副其实。

光是看这些密密麻麻的线和接口,就已经头大了有没有!

视频一出即登上热门,网友们纷纷赶来,佩服他的勇气和毅力。

他以前的粉丝也闻声而来:神又发视频了!他活了!

毕竟据他上一次更新视频,已经过了20个月之久了。

而这个小哥也不陌生,他名叫林乃卫,时隔一年半,如今千呼万唤始出来,就来康康这爆肝两年的自研CPU终极形态到底是什么?

“底层逻辑、架构、指令集均是自主研发”

话不多说,直接先来看手搓出来的“CPU 终极形态”的参数如何:

频率:13kHz,超频最大 33kHz;

ROM:64kB,支持热更新,16 位 ROM 寻址、16 位静态数据寻址;

内存:系统内存 256B、应用内存 64kB;

IO 口数量:78bit(48 支持位操作);

103 条指令,功耗 10 瓦。

做成这样,成本统共算下来只有 2000 元左右,若是再刨去电烙铁、示波器这类工具,花在基础器件上的钱还不到 1000 块。

整体性能方面,小哥表示它和 70 年代初期的 CPU 差不多,并且在指令上还要优于当时的 CPU。

形象点来说,目前它可以简单刷个屏幕,显示文字、图像,甚至一些小游戏(类似贪吃蛇)也能跑起来。

其实在去年 7 月份,小哥就已经在 B 站更新过一个“纯手工自制 CPU”的视频,搭建的是 CPU 雏形,耗时 6 个月。

不过当时的 CPU 还仅处于能跑起来的阶段,要运行更复杂的程序还比较困难。

△夜间运行,跑个灯

于是小哥就开始了他的手搓“进阶版 CPU”历程,在刚制作好的 CPU 雏形上进行调试维修,这一步他的计划是:

把指令增加到 100 多条;

增加了堆栈、 IO 口,运算器的这些比较复杂一点的部件,还有内存管理;

可以满足一些复杂的运算;

……

这一把调试维修,直接就整了小哥一年半的时间。

为了有效提高 CPU 的性能,期间小哥下了“血本”购入了示波器这类专业器材,用来检测整个 CPU 每一个节点的信号。

然后小哥以最简易的方式去拆除了一些器件,直接把 CPU 的频率从 1kHz 提升到 33kHz,性能翻了 33 倍。

话说回来,徒手搓出 CPU,小哥可是完全是依靠自己本科就已经掌握的电子领域、IT 领域的知识,实打实开发出来的。

从前期的电路仿真、PCB 设计到中后期的焊接、调试以及软件编程……小哥一个人独揽一条“CPU 生产线”。

(听起来就很头疼对吧)不过这对“爱好技术类手工制作”的小哥来说可就不一样了。

独创技术了解一下~

看过视频的盆友或许都知道,小哥在视频中特别提到了自己的独创双通道内存。

现有的双通道内存技术虽然也是使用了两个内存控制器,但并没有将全局变量和局部变量(变量的两种分法)分隔开来,它们依旧在混在一个内存中,这样要访问内存就只能一次性全部访问。

而小哥的“独创技术”就不一样了,直接把全局变量和局部变量物理上分割开来,放在不同的内存控制器上。

这样一来,全局变量可以直接用作系统内存(256B),局部变量直接用作应用内存(64kB)。

如果要跑个大一点儿的游戏,直接访问局部变量所在的应用内存,一条指令就能访问到 64kB 的内存。

曾花两个月伙食费买设备

光看 CPU 这个体量,就知道是个不小的工程,可能即便专业人士也很难有这样的能力和心力从头做起。

不少网友纷纷表示佩服 UP 主的勇气和毅力。但也有冷静的网友质疑:为何要做这个呢?

正如这个高赞评论所言,实现方式与实际 CPU 还是有很大差距,恐怕很难谈得上对现有架构有太大贡献。

在与量子位的交流中,Up 主跟我们坦言:做这个东西完全就是为了不留遗憾。

视频也介绍,他是在 2016 年萌生出开发 CPU 的想法。

当时电子工程专业的他正在读大三,日常喜欢写写单片机来玩,时不时就在思考:“为何一串 0101 的数字能变成程序?”再结合已有的数电知识,对 CPU 的底层运行机制有了了解,自制 8 位 CPU 的想法也就油然而生。

不过他也有个私心:成功的话也比较好找工作。(很真实了)

很快,他就完成了电路设计仿真、PCB 设计以及打印电路板等工序。光买一堆器件和设备就花了两个月的伙食费。

一切准备就绪时,就到大四毕业设计时候了,他也就只能将 CPU 的项目搁置。

结果这一放就是五年,此时他回到了北海,工作内容基本上与本科专业没有太大关系,趁着业余时间又重新拾起当年的兴趣。

他向我们坦言:

这个想法如果一直没有实现,就像手里面扎了一颗小刺,没拔出来就会一直隐隐作痛。

回头再去看当年大学时候的设计,他表示有的设计显得十分“愚蠢”。比如像程序计数器设计得复杂,浪费器件的同时还限制了 CPU 的运行速度。

于是不得不如前所述,从最底层的分立元件开始打造。要知道这种方式速度很慢,稳定性也很差,还会经常出问题。

但 UP 主表示正是这种从底层出发的过程,就会有更多时间去思考和解决那些问题,也会迸发出创新性的灵感出来。

比如,这不就是芯片发展的一个缩影嘛!(Doge)

(咳咳正经一点) 有心的读者或许在视频结尾注意到,他有一个「创作中的小发现」还不便展示。

帮大家刺探到了一些消息,这个小发现是关于储存逻辑电路方面的,小哥表示:

由更少的器件组成,性能更高,响应速度更快,并且具有替代现有储存逻辑单元的潜力。

最后,小哥还略微向我们透露了些他未来的计划:

这次手搓 CPU,是为了进行一场自主研发可商用 CPU 的可行性论证,为下一步研发商用 cpu 提供理论和实践支持。

(可以期待一波了~~~)

参考链接:

[1]https://space.bilibili.com/28026515

[2]https://www.bilibili.com/read/cv12035591?spm_id_from=333.999.0.0

文章目录
  1. 1. “底层逻辑、架构、指令集均是自主研发”
  2. 2. 曾花两个月伙食费买设备