2026 年 9 月 22 日,复古计算博客 nyaa.sh 站主 petaleverbloom 发布了一项并不寻常的硬核测试:在 Mac Mini M6 上运行 86Box,周期精确地模拟 1998 年的 Pentium II 处理器与 Voodoo 3 显卡。 86Box 这类工具会把主板芯片组、ISA/PCI 总线甚至存储控制器的时序全盘压在主机的少数线程上。 测试结果打破了原有的性能天花板,M6 能将模拟 Pentium II 的稳定运行上限推高到 600MHz。 在这个吃透单核算力的测试场景中,日常评测里那点干瘪的单核领先,被直接转化成了跨代际的硬指标。
单线程扛下全部状态同步重担
86Box 的定位与今天常见的虚拟机软件截然不同,它的核心生命线在于周期精确。 在 86Box 内部,CPU 的每一个时钟节拍、主板芯片组的响应机制、ISA 与 PCI 总线的资源仲裁,甚至显卡和声卡的中断时序,都需要在软件层面一比一地复现真实硬件的物理行为。 老软件、老系统甚至那些对硬件时序敏感的早期病毒,在模拟机内的运行状态与物理实机毫无二致。 相应的工程代价异常高昂,这种细粒度的状态同步逻辑极难被拆分并行,模拟机的绝大部分计算开销最终都死死地落在了主机侧的一个核心线程上。
主机的多核阵列在这里成了摆设,瓶颈只取决于那一颗核心能跑多快。 这颗核心不仅瞬时的突发频率要高,它还必须在长达数十分钟的高压下维持住这个峰值而不触发降频机制。 对于主机的单核能力,周期精确模拟器扮演了一个残忍但真实的炼金炉。
图:86Box 中 Windows 98 模拟机的 CPU 配置界面。来源:nyaa.sh
500MHz 与 600MHz 划开性能断层
测试平台搭建在两代机器上:搭载 12 核 CPU 与 24GB 内存的 Mac Mini M6,以及 10 核 CPU 加 16GB 内存的 Mac Mini M4。 两台机器运行的是相同的 86Box 6.0 自定义构建,版本号定格在 build 9001。 模拟硬件的搭配锁定为 Slot 1 接口主板、Pentium II Deschutes 核心处理器、256MB 内存,以及占用两个额外线程的 16MB 显存版 Voodoo 3。
为了逼出处理器的物理极限,Deschutes 的默认频率表被以 50MHz 为步进一直扩展到 800MHz。 模拟的内存与缓存时序被按比例调整以维持原有的访问延迟,AT 总线被严苛地锁定在标准的 8.33MHz。 其余模拟代码未作任何修改,仅仅测试基础算力的推演边界。
稳定性判定有一套苛刻的主观标准:在虚拟机内运行 Cinebench 2000 的 CPU 压榨测试,同时后台开启 Winamp 2.76 循环播放 16-bit 44.1kHz 的 PCM WAV 音频文件。 只要在整个高压测试周期内听到任何一次音频爆音,或者模拟速度在某一刻跌破了百分之百的及格线,该次跑分即判失败。
两代芯片在这里交出了泾渭分明的成绩单。 M4 Mac Mini 在 500MHz 时可以稳跑两次完整的 Cinebench 2000 与 3DMark 2000 SE 测试,但到了 550MHz 运行 3DMark 演示动画时出现了明显卡顿。 M6 不仅无伤通过了 550MHz,更在 600MHz 的高压下完成了全部测试。 在 3DMark 2000 SE 长达七八分钟的演示场景中,M6 全程死死咬住百分百的模拟速度。 即便在 650MHz 下跑出了分数,由于出现了一两处听觉可察觉的音频欠载,M6 也被按原定规则淘汰。
图:650MHz 模拟 Pentium II 下运行 Cinebench 2000 与 Winamp 的画面。来源:nyaa.sh
主机侧的行为数据给出了这一代差的直接解释。 根据 powermetrics 工具约 1 秒间隔的采样报告,86Box 的负载主要集中在 M6 的 cpu6 和 cpu7 这两个性能核心上,其余核心基本处于闲置状态。 在 450MHz 的模拟频率下,这两个核心的平均主频约 4,483MHz,活跃度约为百分之四十一。
当负载拉高到 600MHz 时,这两颗核心的平均运行频率被顶到了 4,710MHz。 瞬时峰值甚至摸到了 4,788MHz,活跃度上升至百分之四十五到四十九之间。 而 M6 整包的中央处理器使用率从未越过百分之二十六的红线。 相比之下,M4 忙碌核心的频率天花板卡在约 3.7GHz,这道频率墙是它无法突破 500MHz 模拟上限的根本阻碍。
图:Mac Mini M6 上 86Box 运行 3DMark 2000 SE(模拟 450MHz Pentium II + Voodoo 3,同时 OBS 编码 720p30 抓屏,模拟速度仍保持 100%)。来源:nyaa.sh
虚高跑分暴露底层架构谜团
模拟频率被推到了新高,但随后记录的跑分成绩揭开了一个存在于模拟器界的时序错位问题。 在这组 Cinebench 2000 的处理器跑分数据中:300MHz 成绩为 4.62 CB,350MHz 为 5.34 CB,400MHz 达到 6.16 CB。 跨入高频段后,450MHz 跑出 7.02 CB,500MHz 拿到 7.73 CB,550MHz 是 8.54 CB。 600MHz 高达 9.28 CB,而未通过稳定性测试的 650MHz 更是达到了 10.08 CB。 将这些数字投入 1998 年真实硬件的坐标系中,我们会发现模拟机跑出了不合常理的成绩。
| 硬件配置来源 | 测试对象 | 主频频率 | Cinebench 2000 得分 |
|---|---|---|---|
| Ars Technica 论坛 | 真实 Pentium II | 300MHz | 2.38 CB |
| Ars Technica 论坛 | 真实 Pentium II | 450MHz | 4.35 CB |
| Ars Technica 论坛 | 真实 Celeron | 800MHz | 7.52 CB |
| Ars Technica 论坛 | 真实 Pentium III Coppermine | 800MHz | 9.25 CB |
| nyaa.sh (86Box) | 模拟 Pentium II | 450MHz | 7.02 CB |
| nyaa.sh (86Box) | 模拟 Pentium II | 600MHz | 9.28 CB |
如上表所示,物理世界中的真实 Pentium II 450MHz 只能艰难跑出 4.35 CB。 86Box 模拟出的 450MHz 奔腾二代成绩高达 7.02 CB,溢价了约百分之六十一。 更反直觉的是,模拟器在 600MHz 下跑出的 9.28 CB,实际上贴平了当年架构更先进且频率更高的真实 Pentium III Coppermine 800MHz 的 9.25 CB。
造成这一反差的根源,在于底层架构的不可知边界。 86Box 团队曾在 3.0 版本的发布记录中披露,由于 P6 架构内部乱序执行引擎与二级缓存行为的庞杂设计,当前的开发技术无法做到百分百周期精确。 模拟机里跑着的 Deschutes 核心时序,仅仅是开发者们在性能与精度之间反复妥协后,手动调到接近实物的近似值。 当 M6 用 4.7GHz 的算力强行驱动这些近似逻辑时,内部的内存带宽与缓存响应在虚拟环境中产生了额外的执行红利。 跑分仅仅扮演衡量主机端性能释放尺子的角色,拿去反推特定年份特定芯片的绝对性能在方法学上是行不通的。
社区基建打通指令集瓶颈
硬件层面的暴力拉升,离不开开源社区在指令集适配上的底层基建。 早在 2026 年 5 月发布的 86Box 6.0 版本中,开发团队就专门改善了 ARM 架构主机上的处理器模拟性能。 该版本为 Voodoo 显卡加入了专属的 ARM64 动态重编译器。 Windows 98 虚拟机里运行的模拟 Voodoo 3 直接吃到了这波架构红利。 如果不打通指令集层面的动态翻译,无论 M6 的主频推到多高,算力都会被非原生架构带来的转换损耗吞噬殆尽。
在海外技术社区的评论区里,许多技术极客为这种硬件底座与软件优化的结合背书。 开发者 kar1181 表示,他正在为 1997 年发布的初代雷神之锤编写一款专供 Pentium II 与 ISA 总线环境的自制类 Unix 系统。 86Box 惊人的还原度直接为他扫清了开发障碍,免去了反复将测试代码拷贝到陈旧物理机上的工程折磨。 活跃用户 hncbw02z5a 留下了一条关键的实战经验:在苹果自研芯片设备上跑 86Box,必须反复确认动态重编译功能处于开启状态。 他此前在 M2 平台上曾因为误用了解释器核心,导致运行老游戏虚幻时遭遇到灾难性的卡顿。 面对网友调侃这套配置能不能跑得动硬件杀手孤岛危机,原作者给出的反驳直接而精准:这套模拟硬件比那款游戏还要早出生十年,压根跑不动。
M6 Mac Mini 能把这种吃尽单核性能的模拟上限推到 600MHz,并且保证音频输出完整以及 3DMark 演示全程满速,给那些需要周期精确测试的开发者提供了明确的坐标系。 这台标价在一千六百欧元以内的小型无风扇设备,将微小的指令吞吐量涨幅和几百兆赫兹的频率提升,变成了能被肉眼和耳朵感受到的稳定性跨度。 在 86Box 这个不存在多核捷径的严苛沙盒里,M6 用纯粹的单线程算力,把 1998 年的顶级个人电脑等效拉平到了 Pentium III 的世代级别。
参考链接:
- Mac Mini M6 Emulation Review
- HN 社区关于 86Box 性能测试的讨论