科技狐 昨天
用手搓 CPU 放《黑客帝国》,果然高手还得看民间
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_keji1.html

 

用一把烙铁,花三个月时间,你能搞出什么名堂?

这位网名叫 MINT 的小哥,从零纯手搓了个 CPU 出来,从设计、布线到编程,全程都是他一人包揽。

而且用的还是 8 位时代(上世纪七八十年代)的旧内存芯片和逻辑元件。

为了秀一波肌肉,小哥自己写了点代码,用这个手搓的 CPU 再 VFD 屏幕上放起了《黑客帝国》。

分辨率是低了点,但能流畅播放已经是相当厉害了。

纯手搓 CPU 的终极形态

这个手搓的 CPU 名叫 EPROMINT,从外观来看,整个 CPU 用了四块穿孔板,总重量有 500 来克。如果要把线路全部铺开,总长度大概能有一千米。

在配置上,EPROMINT 还是 8 位,跟现在 64 位的性能肯定没得比(具体如下)。

但要和好几十年前的 8 位 CPU 比,它还是可圈可点的。既能根据真实的指令集运行,也能执行自己的汇编代码,还能像商用处理器一样对硬件中断做出反应。

甚至它的运算速度,比当时的复古偶像产品还要更强劲。

比如驱动 Apple I/II 、任天堂红白机的 MOS 6502 ,或者主导 CP/M 系统的 Z80,在这个手搓的 CPU 面前,可能都要稍稍逊色一筹, 能流畅播《黑客帝国》就是很好的证据。

EPROMINT 是怎么造出来的?

最早有纯手搓 CPU 这个想法,来自 MINT 小哥之前做过的一个实验,他用过时的 EPROM 存储芯片,搞了个能控制小型系统的开发板。

像是调节电机的转速,或者控制消息显示屏。

这个实验一下子就激发了他内心深处的 DIY 灵魂,既然内存能用来模拟基本逻辑,那用它搞个完整的 CPU 也不是不可能。

于是手搓 CPU 的计划就这么水灵灵地提上日程了。

手搓 CPU,主要就四个模块

算术逻辑运算单元(ALU):负责执行算术和逻辑运算

内存控制模块:用来数据存储和地址寻址

IO 接口与程序存储模块:给 CPU 提供和外部交互的能力

控制模块:读取指令,并协调前面三个模块

虽然听着挺简单,但实际手搓起来可就是另外一回事了。

就拿 ALU 来说,怎么设计就是一大难题,刚开始他搞出来的 ALU 还只能处理最简单的加法运算,用他本人的原话来说就是个玩具,而且性能也不可靠。

后来不断摸索才决定把 ALU 设计成全插槽式的,主打一个方便调试,这对手搓 CPU 来说也算是一个相当大的优势。

而在手搓 CPU 的过程中,MINT 小哥偏偏又是个完美主义者,一个模块没做到最好,就会一直修改一直修改。。。

当然,硬件设计出来后还不算完,还得有对应的指令集,这决定了 CPU 之后都能干什么。

在这块儿,MINT 小哥也是从 0 开始,写了将近 2000 行的代码,好定义 CPU 怎么处理指令,顺带简化了数据在系统中的传输方式。

而且相较于 Z80 这些老式 CPU 的能力,EPROMINT 还支持它们没有的乘法、除法、三角运算等等。

这还不算完,一个合格的 CPU 处理器,还需要学会中断任务。

就比如 CPU 本来在放《黑客帝国》,突然来了个电话,这时 CPU 得学会停下来,等人接完电话后再回来继续放。

而 EPROMINT ,遇到中断时会亮起第二个 LED 灯,紧接着把当前的程序计数器(PC)压入栈堆,等别的任务处理完后,在从栈堆里回复数据,好继续任务。

目前,EPROMINT 已经完全开源,电路图、设计文档、指令集等等都能在 GitHub 上获取,链接放在结尾了。

手搓 CPU 的意义是什么?

手搓 CPU,MINT 小哥不算是第一人,前些年 B 站就有 up 出过自己手搓 CPU 的视频,热度也是相当之高。

但可能还会有人纳闷,现在造 CPU 的技术已经相当成熟了,为啥还要费力从零手搓 CPU 呢?

借用一句网友的话," 或许这才是 DIY 的精神所在 "。从零手搓 CPU 不会像现代 CPU,把所有的执行路径都隐藏在硅片之下,它的每个时钟周期、所有寄存器的更改,都是可见、可追溯的。

同时,在某称程度上手搓 CPU 也能通过深度实践,推动开源硬件文化。

无论最后手搓出的 CPU 性能如何,就光是这个行为本身,就已经够令人敬佩了。

宙世代

宙世代

ZAKER旗下Web3.0元宇宙平台

一起剪

一起剪

ZAKER旗下免费视频剪辑工具

相关标签

黑客帝国 分辨率 任天堂 芯片
相关文章
评论
没有更多评论了
取消

登录后才可以发布评论哦

打开小程序可以发布评论哦

12 我来说两句…
打开 ZAKER 参与讨论