太牛了,国人纯手工自制CPU,耗时半年,用了3000多个晶体管
金磊 博雯 发自 凹非寺
量子位 报道 | 公众号 QbitAI
一个人,到底能肝到什么程度?
最近B站上大火的一个视频,或许给了这个问题一个完美诠释:
纯!手!工!自制CPU!
这位叫做“奶味的”Up主,耗时整整半年,用他那双勤劳的双手,“逐点”焊接,最终打造出了一个完整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
再将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的功能,让它能够运行更加复杂的程序。
对此,你期待了吗?
参考链接:
[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,这个小伙办到了
欢迎转发、留言、点赞、分享给你的朋友,感谢您的支持!
长按识别二维码关注我
你点的每个好看,我都认真当成了喜欢
太牛了,国人纯手工自制CPU,耗时半年,用了3000多个晶体管相关推荐
- 19岁天才少年纯手工自制CPU,直呼NB
点击上方"小麦大叔",选择"置顶/星标公众号" 福利干货,第一时间送达 大家好,我是小麦,19岁的时候,我在干什么呢?应该是读书,篮球,唱跳和Rap?但是这个少 ...
- 又一位纯手工打造CPU的牛人,并且汇编语言实现类Unix系统,支持文件系统
作者:安富莱电子,排版:晓宇 微信公众号:芯片之家(ID:chiphome-dy) 硬件设计: GR8CPU是在面包板上构建功能齐全的计算机.第一个版本GR8CPU Rev2拥有600多条电线 ...
- 自制 | 纯手工自制一个16位RISC架构CPU
这周和大家分享的这个项目来自hackaday. 从创作的日志来看,这个项目从2018年底开始,一直到陆陆续续更新到前俩天. 一个耗时又有趣的项目. 项目的起因是,作者在学习了MITx的 "计 ...
- 手工机器人的做法大全用易拉罐_纯手工自制黄油,做法简单详细易操作,蛋糕、饼干、面包都能用...
哈喽大家好我是老左,我想会有很多人和我一样会有很多的疑问,黄油到底是怎么来的?为什么黄油吃起来会那么的香,而且蛋糕.饼干.面包都能用得到,带着这些个疑问老左查询了一番,原来黄油是这样做的.今天老左就把 ...
- B站焊武帝爆火出圈:纯手工拼晶体管自制CPU,耗时半年,可跑程序
金磊 博雯 发自 凹非寺 量子位 报道 | 公众号 QbitAI 一个人,到底能肝到什么程度? 最近B站上大火的一个视频,或许给了这个问题一个完美诠释: 纯!手!工!自制CPU! 这位叫做" ...
- B 站焊武帝爆火出圈:纯手工拼晶体管自制 CPU,耗时半年,可跑程序
点击上方"Github爱好者社区",选择星标 回复"资料",获取小编整理的一份资料 转自:量子位 一个人,到底能肝到什么程度? 最近B站上大火的一个视频,或许给 ...
- 19岁「天才少年」自制CPU!1200个晶体管,纯手工打造
大家好,我是张巧龙,在推特上看到一个19岁的博主,耗时整整3年,纯手工自制1200个晶体管的CPU. 这位叫做 Sam Zeloof 的美国大学生,最终打造出1200个晶体管的CPU! 在10微米 ...
- 这个B站up主太硬核了!纯手工打造AI小电视:硬件自己焊接,驱动代码全手写...
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 晓查 发自 凹非寺 本文转自自:量子位(QbitAI) 一个低调的 ...
- 纯手工打造AI小电视,这个B站up主太硬核了!硬件自己焊接,驱动代码全手写...
点击上方"码农突围",马上关注 这里是码农充电第一站,回复"666",获取一份专属大礼包 真爱,请设置"星标"或点个"在看&quo ...
最新文章
- 全球AI技术开放日系列之(七):走进阿里业务中台
- 【跃迁之路】【531天】程序员高效学习方法论探索系列(实验阶段288-2018.07.21)...
- 四位专家谈:数字医学中的因果关系
- ppi 各代iphone_算算你的手机 高PPI屏幕显示强机推荐
- CSP认证201712-4	行车路线[C++题解]:单源最短路变型、拆点、好题!
- 全球IPv4地址正式耗尽,你知道吗?
- arcgis flexviewer中由Application向widget传值
- 面向对象编程(六):数据封装
- 共轭函数Fenchel不等式
- localhost和127.0.0.1有什么区别?(转载)
- CSS3弹性盒模型flexbox布局基础版
- avaya CM查看VDN指向的技能组
- 魔兽世界插件编写-第一个插件-空插件 EmptyAddOns
- python3查找元素在数组位置_Python:查找数组中元素的位置
- ESP32 nvs 加密
- Git, GitHub使用记录
- 2202年了,“小样本”还值得卷吗?
- 阿里最新秋招面经,腾讯/美团/字节1万道Java中高级面试题
- 连引用都答不上,凭什么说你是Java服务端开发
- 新泽西州BPU批准PSE&G33MW扩展光伏项目