广告

“爆肝”纯手工自制CPU:纯手写最原始代码,可运行程序

2021-07-28 15:08:54 综合报道 阅读:
随着挖矿的兴趣,显卡价格一路水涨船高,再加上CPU也价格不菲,因此很多爱好组装电脑的网友表示买了显卡就买不起CPU,那么能否用手工做一个能用的CPU呢?B站UP主@奶味的 说:可以!这位Up主,耗时整整半年,手工“逐点”焊接,最终打造出了一个完整CPU,并且纯手写最原始代码,成功让这块“自主研发”的CPU跑了起来……

随着挖矿的兴趣,显卡价格一路水涨船高,再加上CPU也价格不菲,因此很多爱好组装电脑的网友表示买了显卡就买不起CPU,那么能否用手工做一个能用的CPU呢?Phxednc

B站UP主@奶味的 说:可以!Phxednc

这位Up主,耗时整整半年,手工“逐点”焊接,最终打造出了一个完整CPU,并且纯手写最原始代码,成功让这块“自主研发”的CPU跑了起来。Phxednc

Phxednc

详细视频:Phxednc

Phxednc

据这位Up主介绍,他主要采用了3个原材料:Phxednc

二极管、三极管和电阻。Phxednc

Phxednc

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

@奶味的 首先工作是验证门电路Phxednc

Phxednc

Phxednc

理论通过之后,先从最容易的做起,先造一个移位寄存器,数据从一个方向进,一个时钟周期移动一个位置,最后从另一个方向出。这个就像是现在马路中间的交警,指挥着数据什么时候该往哪里走.Phxednc

@奶味的 设计了一个6位的移位寄存器:Phxednc

Phxednc

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

它作用简单来说,就是记录程序运行的位置。Phxednc

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

Phxednc

程序计数器涉及的功能那可就多了。Phxednc

CPU重启就是要将它的计数清零。用它来实现挨个字节读取指令和数据,每操作一次,计数自动加一,还可实现直接跳转、调用函数,函数返回的功能。Phxednc

@奶味的 表示:同时它也是最容易出问题的一个模块,造了一个月的时间,修了一个多月,虚焊特别多。焊反过一个二极管,结果看起来正常,用手机拍下来慢放之后发现执行速度忽快忽慢,找了一个星期才找到那倒过来的玩意,在最深处。还有各种玄学性的问题,造出这个,简直是用了半个脑袋的头发,不过当结果正常显示之后,特别开心,感觉一切都是值得的。Phxednc

上电测试也没有问题:Phxednc

Phxednc

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

这是CPU外的比较庞大两个部分要手搓一个不太现实。Phxednc

因此,Up主用上了比较容易操作的hm628512来做ROM和RAM:Phxednc

Phxednc

左:RAM和指针 右:ROMPhxednc

再将ROM和RAM组装上去,现在CPU的基础模块已经基本完成了。Phxednc

接下来就是打造指令译码器。Phxednc

它主要是用于把传到这里的CPU指令,进行解析运行:Phxednc

Phxednc

再把做加减乘除的运算器(ALU)加上去:Phxednc

Phxednc

最后还得再焊一个通用缓存上去:Phxednc

Phxednc

现在,这个全部由三极管、二极管和电阻焊接而成的CPU就完成了!Phxednc

看到这密密麻麻的元件,工程量的浩大就不用多说。Phxednc

还有纯手写最原始代码

@奶味的 表示因为这个CPU的指令集和架构都是自主研发的,所以没有适配的编程语言。Phxednc

Phxednc

那怎么能让它跑起来呢?@奶味的 选择纯手写最原始代码——二进制编程!Phxednc

Phxednc

随后,@奶味的 开启了上古编程模式——“扣”程序!Phxednc

Phxednc

一切准备工作就绪。Phxednc

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

亮灯,跑起!Phxednc

但最开始,程序的运行并不是一帆风顺。Phxednc

重启了几次,跑马灯的效果偶尔还是出现问题。Phxednc

Phxednc

但bug很快被找到了:Phxednc

有个地方断开了。Phxednc

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

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

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

于是,@奶味的 重新编程,使CPU跳转到0X0F处运行。Phxednc

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

Phxednc

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

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

Phxednc

走进“肝帝”大神

UP主@奶味的 原名林乃卫,广西北海人。Phxednc

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

据大神介绍:Phxednc

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

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

参考链接:Phxednc

https://mp.weixin.qq.com/s/cUq8AXCkJ1EQTXSkBPYLmwPhxednc

https://www.bilibili.com/video/BV1sy4y1j7Ue?from=search&seid=11054197044995782468Phxednc

https://tieba.baidu.com/p/7432882849?see_lz=1Phxednc

责编:DemiPhxednc

  • 他是从0到1,你是1到2。如果你们PK,谁会赢?
  • 就是人家自己做着玩的,不要给予太多意义。
  • 所以说设计cpu不难,难的是怎么制造出来
  • 这个事价值不大,不如用这些时间去学习点更先进的技术,比如用FPGA等搭建CPU。
    只能说有时间,耐心,毅力,和动手能力
  • 我觉得制作费用比买CPU还高,有如此能力,完全可用淘汰下来的显卡,CPU做一个更好的!
  • 这篇文章几年前就在一本日本翻译的书上看到了,就像现在人不用现成的音响偏要自己通过三极管放大电路做一个一样的意思。
  • 微信扫一扫
    一键转发
  • 最前沿的电子设计资讯
    请关注“电子技术设计微信公众号”
  • iPhone电池容量降至80%性能受限?手动换个电池“抢救” 在大约 500 次充电循环后,iPhone 的电池容量将会下降至 80% 左右,这一过程对于大多数的用户来说大约为 18 - 24 个月。在这之后,你的 iPhone 也许需要更频繁的充电,且 iOS 可能会提示你手机的性能受到了影响(换句话说,你的手机运行变慢了)。使用本指南来更换新的电池,使你的手机像刚买时一样流畅。
  • 如何在MCU上快速部署TinyML 你对人工智能(AI)和机器学习(ML)感到好奇吗?你想知道如何在你已经使用过的MCU上使用它吗?在本文中,我们将向你介绍MCU上的机器学习。本主题也称为微型机器学习(TinyML)。请准备好在剪刀石头布游戏中输给ESP-EYE开发板。你将了解数据收集和处理、如何设计和训练AI以及如何让它在MCU上运行。此示例为你提供了从头到尾完成你自己的TinyML项目所需的一切。
  • 华强北改造美版iPhone 14 Pro,eSIM也能双卡槽 今年苹果iPhone 14系列美版直接全系都取消了实体SIM卡,全部使用eSIM,让许多想买“便宜北美机”的朋友望而却步。但神奇的华强北总能做出让消费者出乎意料的操作。华强北魔改美版eSIM版的iPhone 14 Pro,在原机中框上直接开了SIM卡槽……
  • 儿童电子学(九):简单的晶体管实验 在物理层面,晶体管的内部功能非常复杂,但是在实践中,在一些简单的实验中使用它却非常容易,每个人都可以负担得起。
  • 儿童电子学(八):七段LED显示器 在本文中,我们将分析一种由单个LED二极管所构成的更复杂有用的器件,即7段LED显示器。它的功能是再现十个数字和字母表中的一些字母。
  • 儿童电子学(七):电位器 在本文中,我们将了解如何使用最重要的可调节电子元件之一——电位器(电位计)——来创建具有可变强度的光。
  • 儿童电子学(六):降低电源电压 随着时间的推移,电池和电芯可提供固定的恒定电源。但在某些情况下,电路却经常要在较低的电源电压下工作,从而避免烧毁安装在其上的电子元器件。在本文中,我们将探讨一种将电源电压降低到所需值的简单技术。
  • 儿童电子学(五):生产清洁能源 宇宙充满了免费的能量。可悲的是,我们地球人却很乐意为开灯、启动汽车和使用电子设备所需的能量付费。说实话,宇宙是一个巨大的电池,可以以完全免费而又干净的方式产生不可估量的能量。应该让小朋友更加意识到这一点,因为使用清洁能源表明了人们的意识,并能为子孙后代享有更清洁的地球铺平道路。
  • 波兰网友玩中国产四位LED电子时钟套件,是否物有所值? 本文要介绍的是一款中国产电子时钟套件。购买的主要原因是希望获得一个MCU——目前在波兰市场上它并不比整个套件便宜多少——并检查与它相关的一件事,但最后却检查了更多。
  • 儿童电子学(四):连接电路 在儿童电子系列的第1部分中,我们研究了LED;在第2部分中,我们探讨了电容器;在第3部分中,我们深入研究了电气测量。在本文中,我们将重点介绍各种组件间的多种电气连接,串联和并联是最重要的两个连接方式。
  • 儿童电子学(三):电气测量 在本系列儿童电子学的第1部分中,我们研究了LED;在第2部分中,我们探讨了电容器。现在在第3部分中,我们将深入了解电气测量。
  • DIY一个简单的特斯拉音乐线圈 我一直想制作一个音乐特斯拉线圈,但我被互联网上的复杂结构示意图所淹没。前段时间,我发现了一个基于单个晶体管的线圈的示意图,并决定对其进行改进,以便它可以播放声音。我决定分享这个项目,以便其他人可以制作这样一个简单的线圈。
广告
热门推荐
广告
广告
EE直播间
在线研讨会
广告
广告
面包芯语
广告
向右滑动:上一篇 向左滑动:下一篇 我知道了