本文经AI新媒体量子位(ID:QbitAI)请联系出处转载授权转载
金磊 博雯 发自 凹非寺
一个人,到底能到什么程度?
最近哔哩哔哩大火的视频可能给了这个问题一个完美的解释:
自制CPU!
这位叫做Up主,花了半年时间,用他勤劳的手一步一步焊接,最终创造了一个完整的CPU!
手工做一个CPU能用么?
当然,他也做了一个demo展示,看看效果。
纯手工肝出一个CPU,还成功运行了流水灯效果,直接引起了一大波网友的惊呼:
肝帝!焊武帝!
人长在肝上!
(感受这个全屏Respect)
接下来,让我们来看看肝帝的自制CPU完整过程。
纯手工自制CPU
其实在发布这个视频之前,Up主便在贴吧里开玩笑地说:
CPU太贵了,买不起显卡。CPU,手工捏出来……
没想到,真的是说干就干。
据这位Up他主要使用三种原料:
二极管、三极管和电阻。
通常来讲,CPU结构大致可分为运算逻辑部件、寄存器部件和控制部件。
而首先开始的是CPU的部分。
Up主设计了6位:
它的功能不仅可以用来存储,还可以在时钟信号的控制下逐次右移或左移数据。
简单地说,它就像一个交警叔叔。当数据从一个方向进来时,移位寄存器可以指挥它何时何地。
Up主处理的第二个结构是(PC)。
简单来说就是记录程序运行的位置。
而这也是整个项目下来最耗时、最复杂的部分,花了三个月的时间。
程序计数器涉及的功能更多。
最基本的例子是逐字节阅读指令后,计数应自动 1;而CPU重启后,计数将被清除。
而且在不同的条件下,还可以实现直接跳转、调用函数、函数返回等功能。
听起来很复杂。
除此之外,还经常伴随着各种玄学问题。
Up主就举了个例子:
在最深处找到焊反二极管花了一个多星期的时间……
但是努力是有回报的。经过三个月的秃顶,他完成了最复杂的模块。
上电测试没有问题:
然后是硬盘(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原理方面的书籍,是靠自己对门电路的理解而设计的一套电路 ,想设计一套属于自己的架构。
从最基础的三极管开关到门级电路,网上找的电路图根本没法用,需要自己设计。虽然设计好后理论通过了,但是门级之间组合成功能级器件就有新的问题,功能级的电路再多个 组合起来成为功能模块又会产生新的问题,模块与模块之间连接更会产生新的问题.
这每一级的问题都很有可能要修改基础电路,然后又会从头开始产生新的问题。
因为没有专业的设备去调试,我用的是一盏LED和蜂鸣器,想尽办法也将速度提高到100kHz左右 而已,这是十分慢的,过程也十分艰难。
至于器件方面,大神均是从网上购得,然后再将它们一点一点地焊接成为模块。
这个CPU大致耗费了多个三极管、多个二极管,电阻数量也达到了多,焊点近万。
目前的费用大概花了1000多元。
而网友在弹幕中调侃居多的,还有方面的问题。
据大神介绍:
要是非得给它定个工艺制程,那就是,比先进的3纳米大了将近1百万倍。
最后,Up主还表示,将在接下来的工作中,持续完善CPU的功能,让它能够运行更加复杂的程序。
对此,你期待了吗?
参考链接:
[1]https://www.bilibili.com/video/BV1sy4y1j7Ue[2]https://tieba.baidu.com/p/7432882849?see_lz=1
推荐阅读:
入门: 最全的零基础学Python的问题 | 零基础学了8个月的Python | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 | 从万众期待到口碑扑街!唐探3令人失望 | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏 | 九宫格 | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!| 再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|
1).卧槽!Pdf转Word用Python轻松搞定!
2).学Python真香!我用100行代码做了个网站,帮人PS旅行图片,赚个鸡腿吃
3).首播过亿,火爆全网,我分析了《乘风破浪的姐姐》,发现了这些秘密
4).80行代码!用Python做一个哆来A梦分身
5).你必须掌握的20个python代码,短小精悍,用处无穷
6).30个Python奇淫技巧集
7).我总结的80页《菜鸟学Python精选干货.pdf》,都是干货
8).再见Python!我要学Go了!2500字深度分析
9).发现一个舔狗福利!这个Python爬虫神器太爽了,自动下载妹子图片
点阅读原文,领AI全套资料!