内存太贵,前微软工程师直接让AI帮忙造,给1970年古董电脑扩容4MB RAM,成功跑起UNIX
如今内存价格一路疯涨,不少人直呼「买不起内存了」,该怎么办?
自己造一个,似乎也不是不行。
这听起来像是硬件发烧友才会干的事,但最近,一位前微软工程师真的动手了。
Dave Plummer 曾参与开发 Windows 任务管理器和 Windows 弹球游戏。退休后,他依然没有闲下来,继续折腾各种计算机项目。
这一次,他借助 ChatGPT,从零设计了一块内存板,准备给一台诞生于 1970 年代的老电脑扩容 4MB RAM。
更有意思的是,Plummer 此前从未尝试过 FPGA 编程。从电路设计、PCB 布局,到 FPGA 控制器开发和实际硬件测试,他几乎是一路摸索着完成了整个项目。这番折腾,也让人看到了 AI 辅助开发在软件之外的另一种可能。
老电脑内存太贵,他决定自己造一个
Dave Plummer 这次折腾的对象,是一台 D
这是一款诞生于 1970 年的经典小型计算机,在计算机发展史上有着相当重要的地位。UNIX 操作系统的早期发展,也与 PDP-11 密切相关。
不过,几十年过去,这些老电脑的配件早已不像现代硬件那样容易购买。尤其是内存。
Plummer 在社交平台 X 上发帖吐槽,“如果你觉得普通内存已经够贵了,那不妨试试 PDP-11 的内存。只要能买到,价格差不多是每 MB 1000 美元。”
换句话说,想给这台老电脑配齐 4MB 内存,光内存本身就可能花掉 4000 美元。
这价格,别说给老电脑升级了,拿去买一台相当不错的现代电脑都绰绰有余。
于是,Plummer 决定换个思路:既然这么贵,那不如自己动手造一块。
从原理图到 PCB,ChatGPT 帮他一步步设计
这次项目并不是简单地把几颗内存芯片焊在一起。
Dave Plummer 借助 ChatGPT 和在线电路设计工具 EasyEDA,从原理图开始,一步步完成电路设计、PCB 布局和布线,甚至连生产所需的物料清单也准备好了。
Dave Plummer 坦言自己此前做过 PCB,但从未尝试过如此复杂的项目。
要让这块自制内存真正运行起来,还得先了解 PDP-11 的硬件架构。
不分 PDP-11 机型采用 Q-Bus 总线连接各类功能板卡。因此,Dave Plummer 将这块自制内存设计成一张独立板卡,再与搭载 M8190 处理器的板卡一同插入背板,进行实际测试。
这块内存板的核心是一颗 Lattice MachXO2 FPGA 芯片(型号为 2000HC),负责充当内存控制器,外接 4 颗 ISSI 的 1MB 存储芯片。此外,板卡还配备了 U2S 输入输出芯片、DIP 拨码开关、通信接口及若干电容,共同组成完整的电路。
在地址空间方面,M8190 所在系统采用 22 位地址寻址,支持最高 4MB 的寻址空间,其中顶部 256KB 地址空间预留给输入输出设备和只读存储器(ROM)。这也意味着,自制内存板不仅要提供足够的存储容量,还必须遵循原有系统的地址映射规则。
简单来说,FPGA 负责协调现代存储芯片与 PDP-11 之间的数据传输,让这台老电脑能够按照原有的方式访问内存。
设计完成后,Dave Plummer 一口气订购了 5 块 PCB,准备开始实际测试。
至此,一块自制内存板的硬件设计基本完成。但真正的挑战,才刚刚开始。
第一次给 FPGA 刷程序,折腾了好几轮,最终成功跑起了 Unix
电路板做好了,不代表它就能正常工作。
Dave Plummer 接下来需要把自己编写的 FPGA 程序烧录进去。问题是,他此前从未对 FPGA 芯片进行烧录编程。
于是,他又买了一块 FT232H 转接板,把它连接起来。后来又安装了 openFPGALoader,开始摸索整个烧录流程。
中间没少踩坑。经历几次失败后,他终于成功把程序写进 FPGA。“这对我来说完全是一个全新的领域!”Dave Plummer 说道。
随后,他把新做的 RAM 板插入 PDP-11 的背板,与搭载 M8190 CPU 的主板一起进行测试。
这时候,好消息来了。
电脑已经能够识别这块新内存板,系统也显示出了 4MB RAM,以及预留给 ROM 的地址空间。对于一个第一次尝试如此复杂硬件项目、此前甚至没给 FPGA 刷过程序的人来说,这已经是相当不错的进展。
但 Dave Plummer 很快发现,事情还没完。
在测试过程中,Dave Plummer 遇到了一个相当基础、却又容易踩坑的问题:这块 RAM 无法正常访问奇数地址。
问题出在内存控制器对数据的处理方式上。
PDP-11 采用 16 位数据总线,一次可以传输两个字节。读取数据时,CPU 会根据地址,自动从这两个字节中选出自己需要的那个。
但 Dave Plummer 设计的内存控制器,仍然需要一次返回完整的两个字节。写入时也一样:CPU 需要通过位选择信号,告诉内存控制器究竟要修改哪一个字节。否则,整个 16 位数据都可能被写入,导致另一个字节的数据也遭到覆盖。
显然,Dave Plummer 最初的 FPGA 代码没有正确处理这一逻辑,导致内存访问出现问题。
一位网友对此开玩笑说,他「造出了 4MB 内存,结果最后只有 2MB」。
Dave Plummer 则回应称,这块内存「只能返回每隔一个字」,也印证了问题出在数据访问逻辑上。
好在,这并不意味着内存板本身出了大问题。在后续发布的 X 内容中,Plummer 更新了项目进展,其表示:「我搞定了!修改了 FPGA 代码……现在已经通过了所有测试!」
更让人兴奋的是,他不仅修复了内存访问问题,还成功让这台 PDP-11 启动了 UNIX 多用户模式。
其中,多用户模式意味着系统需要同时管理多个用户和进程,对内存的稳定性和完整性提出了更高要求。
相比普通内存测试,能够启动 UNIX 多用户模式,显然是更有说服力的验证。而这次成功,也让整个项目从「看起来能用」变成了真正意义上的可用。
有人建议用树莓派,他说自己早就试过了
对于一台诞生于 1970 年的老电脑来说,能够用一块现代自制内存板实现 4MB 扩容,本身就相当有意思。随着 Dave Plummer 将自己的这次尝试分享出来,也引发了不少的讨论。
也有网友提出了另一种思路:既然老电脑的内存接口这么麻烦,为什么不直接用树莓派连接 PDP-11 的总线,通过软件模拟内存?
Plummer 的回答倒是很干脆:他上周基本已经这么做过了。
此前,他使用了一块现代 QBone D
也就是说,这次 FPGA 内存板并不是他解决老电脑内存问题的唯一方案,而是一次更接近传统硬件实现的尝试。
回头看这次折腾,最有意思的地方或许并不是 ChatGPT 一次性设计出了一块完美的 RAM。
从原理图、PCB 布局到 FPGA 编程,AI 帮 Dave Plummer跨过了不少陌生领域的门槛,但实际测试中遇到的问题,仍然需要他自己一
而现在,这块自制 RAM 已经不只是「看起来能用」了。它通过了测试,还让一台诞生于 1970 年代的老电脑成功启动了 UNIX 多用户模式。
对于一位第一次尝试 FPGA 编程的老工程师来说,这场折腾显然还挺值。
参考:
https://x.com/davepl1968/status/2115871903114260528
https://www.tomshardware.com/pc-components/ram/veteran-microsoft-engineer-makes-his-own-ram-from-scratch-using-ai-attempts-to-build-4mb-of-1970s-pdp-11-ram-from-scratch
本文来自微信公众号“CSDN”,整理:屠敏 ,36氪经授权发布。















