B 站焊武帝爆火出圈
本文转载自IT之家
一个人,到底能肝到什么程度?
最近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 的功能,让它能够运行更加复杂的程序。
对此,你期待了吗?
B 站焊武帝爆火出圈相关推荐
- B站焊武帝爆火出圈:纯手工拼晶体管自制CPU,耗时半年,可跑程序
金磊 博雯 发自 凹非寺 量子位 报道 | 公众号 QbitAI 一个人,到底能肝到什么程度? 最近B站上大火的一个视频,或许给了这个问题一个完美诠释: 纯!手!工!自制CPU! 这位叫做" ...
- B 站焊武帝爆火出圈:纯手工拼晶体管自制 CPU,耗时半年,可跑程序
点击上方"Github爱好者社区",选择星标 回复"资料",获取小编整理的一份资料 转自:量子位 一个人,到底能肝到什么程度? 最近B站上大火的一个视频,或许给 ...
- 「B站焊武帝」再出圈!孤身爆肝造CPU,软硬件全自研,可玩游戏,基础器件成本不到1000元...
杨净 Pine 发自 凹非寺 量子位 | 公众号 QbitAI 两年时间,一个90后体制内小哥下班之后只干三件私务,那就是: 手搓CPU!手搓CPU!还是***手搓CPU! 纯手工制作.全自主研发,于 ...
- ChatGPT爆火出圈,高质量文本标注数据成关键
"2022年11月30日,OpenAI发布了ChatGPT--一个对话式AI,上线仅五天,注册用户数突破100万,爆火出圈,成为社会热议话题.截止今年1月末,ChatGPT的月活用户数量破亿 ...
- 从 Python 可视化图表中探究王心凌爆火出圈的流量密码
作者 | 俊欣 来源 | 关于数据分析与可视化 疫情当下,"刘畊宏女孩"的余热尚在,"王心凌男孩"则是开始刷屏于各大社交媒体的头版头条.从上周五<乘风破浪 ...
- 从《后浪》争议声中,看B站到底该如何出圈? | Alfred数据室
5月4日青年节,国内知名视频弹幕网站哔哩哔哩(B站)与央视新闻等媒体联合发布了一个视频--献给新一代的演讲<后浪>.作为一个给年轻人的励志演讲视频,其一时间引起了巨大的反响:全站日排名第一 ...
- 《人生重开模拟器》爆火出圈,3天2亿流量却源于群内自嗨,网友:我提前看遍人生的无常...
杨净 丰色 发自 凹非寺 量子位 报道 | 公众号 QbitAI 有没有一款游戏,让你可以提前看遍人生的无常? 最近,就有一款游戏刷屏全网,它叫做人生重开模拟器. 它在短短3天就创造2亿访问量. 在这 ...
- 一款表现不佳的游戏,如何能爆火出圈?
根据<2022年中国游戏产业报告>,2022年中国游戏市场实际销售收入2658.84亿元,同比下降10.33%.游戏用户规模6.64亿,同比下降0.33%.继2021年规模增长明显放缓之后 ...
- 爆火出圈的chatGPT
最新文章
- 编写一个程序,打印输入中各个字符出现频度的直方图
- OGNL中的s:property /标签
- go web本地化资源
- python 文件操作 os.read() 方法 读文本文件 读取文字
- 使用 graphviz 形象化有向图
- android 生命周期 Activity/Fragment lifecycle
- Redis数据持久化之AOF持久化
- stm32f4 hs 电路_电动机控制电路识图一看就懂
- Visual Studio 2005 移植 (札记之一)
- 飞狐的日线 java_JAVA 版 ATX-Client
- Jmeter系列之常用组件(一)
- 蓝牙路由器系列产品:企业级Cassia E1000
- 使用适用于Windows的Ultimate Boot CD轻松地重置忘记的密码
- 微信wxp协议 服务器设置,微信支付
- php简历怎么写比较出彩,如何让简历出彩 简历吸引人有几个方面
- 解开Kafka神秘的面纱(二):Kafka的高效读写与消息安全
- GPFS各类排故日志收集汇总
- 通信原理_2 确定信号分析
- IntelliJ IDEA 2018.2.2 x64安装破解教程
- Navigation组件的使用详解
热门文章
- 不懂编程,不懂设计!4个AI工具可以让任何人免费创建自己的网站 AI Website Builders
- switch的四种散热方法分享
- 新手 Python-机器学习 四部曲资源汇总
- manjaro Linux上安装360浏览器的方法
- log4g2 ERROR Appenders contains an invalid element or attribute “appender“。 Caused by:strict
- VS2017开发activex
- Android-x86虚拟机
- GPIO I/O口——八种工作模式(总结)
- Android开源项目链接
- TI DSP28377D芯片上基于UDS的BOOT调试记录