当前位置: 首页 > news >正文

20世纪60年代UNIVAC计算机运行Minecraft服务器等程序,如何突破性能极限?

1. 项目成果展示

2026年4月17日,有人在一台20世纪60年代的UNIVAC 1219B计算机上运行Minecraft服务器,还展示了NES模拟器渲染出的《弹珠台》游戏第一帧画面、用“叠印”技术打印的自拍。此外,还运行了OCaml程序、Web服务器、Curve25519 + AES加密程序、BASIC解释器、ELIZA程序以及《俄勒冈之旅》《Wordle》《海战棋》等游戏。所有这些都是在主频仅250kHz、内存90KB的计算机上完成的,该项目花了大约8个月时间,源代码可在特定位置找到,也可看TheScienceElf关于此项目的视频。

2. UNIVAC是奇特机器

UNIVAC 1219B在各方面对现代编程充满挑战,如18位字长、类似反码运算、寄存器数量有限、内存容量小且分块等。它最初为海军设计,用于读取雷达信号并指挥火炮,世上仅存两台,这台是唯一可正常运行的。此前程序用UNIVAC汇编语言手写,现在打算实现C语言编译。

3. 2025年VCF East上的邂逅

2025年4月参加VCF East活动时,有人第一次见到这台计算机,当时Bill和Steven在运行演示程序。Duane、Bill和Steven为抢救和修复它付出大量努力。看到计算机后,有人决定要运行超酷代码,如NES模拟器和OCaml程序,不禁追问能把硬件性能发挥到什么程度。

4. 需要模拟器和汇编器

首先需要UNIVAC汇编语言的汇编器和运行汇编程序的模拟器。多年前Duane用BASIC编写了汇编器,用VB.NET编写了模拟器。VCF活动结束后,TheScienceElf用Rust编写了新的汇编器和模拟器,该模拟器速度极快,对模糊测试必不可少,虽硬件模拟不够精确,但足够开始工作。

5. 首次尝试wee作为C编译器

有了模拟器后,验证C编译器最快方法是用wee,但效果差,一个简单FizzBuzz程序占用约27000个字,约占总内存67%,计算前100行结果需一分钟,显然无法实现运行真实复杂程序的目标。

6. 采用RISC - V模拟器是关键

要实现运行真实、大型且有趣程序和保持理智的目标,需要使用真正编译器,如LLVM或GCC,要具备完整C标准库、软浮点和其他合法化处理、死代码消除和大小优化、支持其他语言等条件。但直接编译到UNIVAC行不通,因为会违背保持理智的目标,且现成程序可能出错。所以采用模拟GCC已支持的目标,如RISC - V,这种方法有一劳永逸、可进行模糊测试、能逐步获得成就感、二进制代码紧凑等优点,虽模拟速度慢,但能实现最佳空间效率。

7. 构建工具链

工具链流程为编写C代码,用GCC编译成RISC - V代码,将指令重新编码为适合UNIVAC的格式,添加到模拟器源代码中,汇编成磁带文件加载到机器上。编写RISC - V模拟器的UNIVAC汇编代码需良好工具支持,如Emacs主模式、OCaml工具、差异模糊测试器、高效测试用例缩减器等。Claude Code无法编写UNIVAC汇编代码,因为它无法理解UNIVAC的特殊之处,但有人能编写,敲出约1000行代码实现38条基础RISC - V指令。第一个C程序运行时出现小错误,修复后所有C程序都能正常运行,不过在真实计算机上渲染《弹珠台》第一帧需20小时,需要大量优化。

8. 让速度提升30倍

UNIVAC模拟器记录运行时间,可作为优化指标。主要关注优化模糊测试程序运行时间和NES演示程序运行时间。最重要的优化是将RISC - V指令重新编码为对UNIVAC最有效率的格式,提前对立即数位进行解扰,为指令分配操作码编号,将一些操作嵌入指令中,对于特殊指令如SRLI和SRAI,可提前打包UNIVAC指令。那么,经过这些优化后,NES模拟器能否在可接受时间内运行呢?

http://www.jsqmd.com/news/680988/

相关文章:

  • 别再只会用delay()了!用Arduino定时器中断实现OLED、电机、蓝牙多任务并行(附完整巡线小车代码)
  • 如何高效使用本地AI助手:开发者的完整实战指南
  • 分享艾克斯振动盘性价比情况,看看费用是否合理? - 工业推荐榜
  • Zotero插件市场:一站式插件管理解决方案,让学术研究更高效
  • 337微机原理-基于8086多种波形发生器系统
  • 2026各个行业都能考的经济学专业证书
  • Windows PDF处理终极指南:Poppler零依赖工具包完全解析
  • Scroll Reverser:如何为macOS多输入设备创建个性化滚动体验
  • 茉莉花插件终极指南:3步解决Zotero中文文献管理难题
  • 深蓝词库转换:3分钟搞定30+输入法词库迁移的完整指南
  • 从Java转行大模型应用,多模态模型,多模态模型的部署
  • SQL Server查询怎么优化?数据处理效率怎么提升?
  • 最全武商一卡通回收指南,这样做还能多赚一笔! - 团团收购物卡回收
  • Windows Cleaner实战指南:如何科学管理系统空间与内存资源
  • 3步搞定OBS多平台同时直播:obs-multi-rtmp插件终极配置指南
  • 2026年降AI率必备指南:别再删「综上所述」了 - 降AI实验室
  • RimSort终极指南:5个技巧让你彻底告别RimWorld模组冲突的烦恼
  • NVIDIA Profile Inspector终极指南:解锁显卡隐藏性能的完整实用教程
  • 终极Windows任务栏透明美化指南:TranslucentTB让你的桌面焕然一新
  • SQL中INNER JOIN与LEFT JOIN的区别_通过实际场景对比分析
  • 3个必知技巧:用ComfyUI-Manager高效管理你的AI工作流节点
  • 如何在 SciPy 中实现 NumPy 数组的重叠拼接与平均融合
  • Bili2Text:智能B站视频转文字的高效解决方案
  • 5分钟掌握无损视频剪辑神器LosslessCut:终极完整指南
  • 2026年推荐商用净菜加工设备品牌,苏州德赛斯值得关注 - 工业设备
  • C++如何读取YAML配置并动态生成UI界面_反射机制模拟用法【进阶】
  • 新概念英语第二册22_A glass envelope
  • 运营岗最需要哪些数据分析技能?
  • VMware Unlocker:逆向工程视角下的macOS虚拟化突破
  • Helix并行架构:突破超长上下文推理的工程挑战