以服务于中国广大创业者为己任,立志于做最好的创业网站。

标签云创业博客联系我们

导航菜单

组装手工活外发加工,电气柜组装外包活

  

  机器之心报道   

  

  编辑:小舟、张倩   

  

  CPU如何执行0101?出于这种好奇心,一个哔哩哔哩的老板自己焊接了一个中央处理器.   

  

  作为b站的UP主,门槛是出了名的高。   

  

  有人可以用AI还原朱元璋,有人可以造自动驾驶自行车,有人可以用手搓CPU…….   

  

     

  

  从外观上看,这款CPU采用了先进的“3D堆叠”技术(手动狗头),全部由三极管、二极管、电阻焊接而成。   

  

  具体来说,UP的拥有者林乃伟使用了约1000个三极管、2000个二极管、2000个电阻,焊点数以万计,网购材料花费约1000元。   

  

  为了打造这款CPU,UP主花了半年时间逐点焊接,人们给他起了个外号“焊帝武”。   

  

  因为体积巨大,网友开玩笑说:“这是当年的巨型电脑。就连作者本人也嘲讽其制造工艺为2.54mm,“比先进的3 nm大了近100万倍。」   

  

  但是,比外表更古灵精怪的是UP大师的编程方法:因为指令集和架构都是独立开发的,没有适应任何编程语言,所以他选择使用二进制编程,也就是原来的机器语言——0和0。   

  

  1。   

  

     

  

  这种“庞然大物”奔跑的效果也很酷:   

  

     

  

  UP用自制的CPU运行流水灯效果,即让小灯一个个点亮。   

  

  有人说:“我不懂,也不是很震撼,但这就是我小时候想象的“科学家”。奇怪的仪器和五颜六色的灯泡将各种五颜六色的液体相互混合,然后产生各种超强的氧化反应。」   

  

  我们知道,我们必须控制这个。   

  

  CPU,除了掌握数字电、模拟电、汇编等基础知识外。还应该有超强的动手能力和毅力。这个过程的艰辛可能普通人很难理解。那么,林为什么要费这么大的劲去做呢?   

  

  “在编写代码时,我们应该分析可执行文件中的二进制。当时我们在想,CPU是怎么执行0101这个字符串的?   

  

  怎么样?结合数字电的课程,我估计大概是这样,所以就想试一试。起初,我想用门级电路来做,但我并不觉得很难。如果我想从头开始了解整个事情,我开始从最基本的模拟电路开始构建它。”林告诉机器之心。   

  

  当然,当UP老板只是林的一个爱好时,他的工作就是php/。net/安卓APP。   

  

  程序员。他说自己喜欢学习各种新技术,学习高难度技术的动力很强,有很多新奇的想法,但是没有钱去实现。在这个B   

  

  火了之后,我希望林能有更多的资金来实现他的创造力。   

  

  一位 B 站 UP 主的手搓 CPU 之路   

  

  虽然只花了半年时间就造出了这款CPU,但林透露,它的原理图是几年前画的,大概是这样的:   

  

     

  

  _来源:https://tieba.baidu.com/p/7432882849?见_lz=1_   

  

  画图后,Up主先验证门电路。这一步属于理论验证,是必要的一步。   

  

     

  

  _来源:https://tieba.baidu.com/p/7432882849?见_lz=1#140122397516l_   

  

  经过验证,搓手部分正式开始。CPU通常由通用寄存器组、算术单元、控制器和数据通路组成。从寄存器开始。   

  

  他首先使用Up构建了一个移位寄存器——一个基于级联触发器的设备,可以在几个相同的时间脉冲下工作   

  

  换句话说,数据从一个方向进入,在一个时钟周期内移动一个位置,最后从另一个方向出来。上行主机的最终产品是一个6位移位寄存器:   

  

     

  

  有网友问:“为什么轮班送?   

存器不用现成的芯片?」Up 主表示「为了乐趣」。

  

  

_图源:https://tieba.baidu.com/p/7432882849?see_lz=1#140122397516l_

  

接着,Up 主手搓的第二个 CPU 部件是程序计数器(PC)。PC 是控制器的一部分,涉及的功能较多,也是手搓阶段最复杂的一个模块。CPU

  

重启时要将它的计数清零,工作状态下要借助 PC 实现挨个字节读取指令和数据,每操作一次,计数自动加一,同时还要实现直接跳转、调用函数,函数返回的功能,因此

  

PC 的构建过程比移位寄存器要复杂和困难得多。

  

尤其是 Up 主采用「纯手搓」――焊接的过程也会遇到一些虚焊的麻烦,找出问题并解决花费了 Up 主大量时间和精力。其中有一次一个二极管焊反了,Up 主排查了

  

3 天。

  

不过,最后的成品很优秀,上电测试也成功通过:

  

  

CPU 中还有两个关键的部分――ROM 和 RAM,不过这两个部分手搓不太现实,Up 主选择用 hm628512 来组装 ROM 和 RAM。

  

然后 Up 主开始构建指令译码器,用来解析 CPU 指令以运行,它也是控制器的一部分。

  

  

最后还有两个要组装的部件:运算器(ALU)和通用缓存。

  

  

至此,CPU 中寄存器、控制器、运算器等主要部件已经完备,一个手工焊接的 CPU 就基本做成了!

  

  

搓出来了,怎么运行?

  

由于这个 CPU 是 Up 主自己手搓的,全部是由二级管、三极管和电阻焊接而成,因此没有现成的指令集和编程语言能够使用。那这样的 CPU

  

怎么跑起来?回归最原始的二进制吧。

  

二进制在计算机工作机制中属于最底层的基础原理,对于计算机专业的同学来说并不陌生,但用二进制直接编程就不是所有人都能掌握的技能了。UP

  

主正是借助二进制编程让手搓的 CPU 跑了起来。

  

  

有了二进制码,怎么输入机器?Up 主自己上手「扣」代码,真 手敲代码。目前有三条指令,包括内存赋值指令、内存地址左移指令和跳转指令。Up

  

主编写了一个流水灯的程序,用于测试。

  

  

这下指令也输入了,CPU 能跑出结果吗?

  

  

出现了一些小问题,流水灯有时不能正常亮起。别担心,有 bug 是常有的事,那 debug 一下吧。

  

Up 主很快就找到了 bug,是「有个地方断开了」。修复之后为了让运行效果更明显,Up 主又重新写了一遍二进制代码,将 CPU 调整为跳转到 0X00FF

  

处运行。

  

  

再手扣一遍程序,结果是运行成功,流水灯正常亮起,完全没有问题。

  

  

组件完整,能运行程序,这个「爆肝」的手搓项目终于大功告成。

  

网友留言道:「冯诺依曼大呼内行」。

  

在完成这个 CPU 的基础原型之后,林同学下一步打算继续完善它的功能,让它可以运行更加复杂的程序。

  

_参考链接:_

  

_https://www.bilibili.com/video/BV1sy4y1j7Ue?from=search

  

&seid;=2585687743248627133_

  

_https://tieba.baidu.com/p/7432882849?see_lz=1_

  

_https://mp.weixin.qq.com/s/cUq8AXCkJ1EQTXSkBPYLmw_