Mac Mini M6:使用86Box进行复古PC模拟(600MHz PII?!)
86Box 模拟老 PC 时几乎只吃单核性能,M6 Mac Mini 跑 650MHz Pentium II 时音频欠载,600MHz 才是稳定结果。
中文
复制

86Box 为什么在意单核性能
86Box 在硬件层面模拟一台老 PC。CPU 时序、芯片组行为、ISA 和 PCI 总线、图形芯片组、声音设备、磁盘控制器,全都关系到当年的软件能否正常运行。这并不保证性能与原硬件一致,下面的 Cinebench 成绩就说明了这一点。说实话,这个项目很有意思,它的投入让我佩服,但这份精确是要付出代价的,而代价几乎全部落在宿主机的单个线程上。
实际后果很直接:核心数在这里基本不重要。真正重要的是单核能跑多快,以及能在不降频的前提下维持多久。对这台 Mac Mini 来说,这恰好是 Apple Silicon 一直最强的地方,也是 M6 发光的地方。

小超一点……M6 在我自己编译的 86Box 6.0 上跑 650MHz Pentium II,同时开着 Cinebench 2000 和 Winamp。有一两次音频欠载,650MHz 没能通过,所以 600MHz 仍是稳定结果。
测试机器
每次 86Box 测试都用相同的机器配置、相同的磁盘镜像和模拟硬件。对比组是:
- Mac Mini M6(12 核 CPU,24GB,本次评测机)
- Mac Mini M4(基础款 10 核 CPU,16GB)
测试使用的是略作修改的 86Box 6.0 构建版,发布于 2026 年 5 月 31 日。团队提升了 ARM 宿主机上的 CPU 模拟性能,并为 Voodoo 显卡加入了 ARM64 即时重编译器。第二项改动在这里尤其相关,因为 Windows 98 那台机器跑的是模拟的 Voodoo 3。功劳当然有一部分属于软件——Apple Silicon 的核心很快,但 86Box 也越来越会用它们了。
我没有测过旧版 86Box 到这一版的提升幅度,毕竟这是 M6 的评测,不是 86Box 的。
为什么 100% 是唯一可接受的数字
86Box 会以目标速度的百分比形式报告实际模拟速度。100% 意味着宿主机跟得上模拟器的时序模型,所以低于这个数就是真有问题。它并不保证基准测试的得分与同频物理 CPU 完全一致。
在这里,稳定性也比平均值更重要。哪怕只是短暂掉速,也会产生可听见的杂音,因为音频硬件是实时喂数据的,缓冲区被饿死就会表现为短暂的爆音,听起来很烦人。基本上,任何经常掉到 100% 以下的 86Box 配置用起来都不对劲,而系统留出足够的余量、能轻松模拟目标速度,体验会稳定得多。
结果是,每台宿主机给出的不是分数,而是上限:对任意给定的模拟配置,都存在一个宿主机能稳定维持 100% 的最高 CPU 频率。由于这些工作几乎全落在单个线程上,单线程性能会大幅推动这个上限——这正是 M6 在这里值得关注的原因。
测试方法
为了找到这个上限,我用与 6.0 发布版相同的 commit(build 9001)做了一个自定义构建,把频率表以 50MHz 为步进扩展到 800MHz。如果你想在那个 tagged release 上自己试试,Deschutes 频率表补丁可以下载。它加入了 500–800MHz 的条目,内存和缓存时序按比例缩放,以保持大致相同的访问延迟,同时让 AT 总线维持在 8.33MHz。除此之外,模拟代码没有改动。两台 Mac 在扩展测试中都使用了这个构建。
有人可能会说,这个速度的 Pentium II 不符合年代。我的看法是:这不过是稍微超了点频!
除此之外,模拟的机器在每次运行中都固定不变:
- Slot 1 主板,配 Pentium II(Deschutes),频率每次运行不同
- 256MB 内存
- Voodoo 3 模拟 VGA,16MB 显存(2 线程)
- Windows 98 SE


用于模拟 Pentium II 机器的 86Box CPU 配置
这个负载是故意设置得有点别扭:Cinebench 2000 跑 CPU 测试,同时后台用 Winamp 2.76 播放一段 16-bit 44,100Hz PCM WAV。音频算是个锚点,因为它实时消耗模拟硬件资源,一旦跟不上,立刻就能听出来。
通过标准归根结底是主观的,但很严格。只要我听到一次断音,或者模拟速度在任何时刻掉到 100% 以下,这次运行就算失败。
结果
基础情况下 M4 Mac Mini 能稳住 500MHz,两台 Mac 在这个速度下跑完整个 Cinebench 2000 和 3DMark 2000 SE 都极其稳定。到了 550MHz,M4 开始卡顿。在 Cinebench 里只是轻微中断,但在 3DMark 演示中更明显,足以判定失败。
M6 通过了 550MHz 和 600MHz,这相当惊人。在 600MHz 下,它跑完两轮 Cinebench 2000 和 3DMark 2000 SE 演示全程稳定在 100%,后者给了它 7–8 分钟不间断的测试。也就是说,在这套配置下,最高通过频率比 M4 高出 20%。
CB2000 分数,给关心的人:
按模拟 Pentium II 频率排列的 Cinebench 2000
| 模拟频率 | Cinebench 2000 | M6 | M4 |
|---|---|---|---|
| 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 | 失败 | 失败 |
在自定义 86Box 6.0 构建上每个频率跑一次。通过要求全程模拟速度稳定在 100% 且没有可听见的断音。悬停查看结果详情。
这些分数描述的是各频率下模拟 CPU 的表现。渲染完成并不足以通过,650MHz 下的 10.08 CB 结果伴随着一两次可听见的欠载。实际上,我觉得自己对那次运行可能过于严格了,后台活动也可能导致了卡顿。但严格遵循方法学,600MHz 就是结果,还留了一点余量。800MHz 选项是为了扩展测试范围,但显然两台 Mac 都维持不了这个速度。
把这些分数和真实硬件对比时,有个耐人寻味的细节。一个收集 Cinebench 2000 成绩的 Ars Technica 论坛帖里有这样一些用户自报的数据:
同期硬件,用户自报的 Cinebench 2000 成绩
| 同期硬件 | Cinebench 2000 |
|---|---|
| Pentium II 300MHz | 2.38 |
| Pentium II 450MHz | 4.35 |
| Celeron 800MHz | 7.52 |
| Celeron 533MHz 超频至 760MHz(95 x 8) | 8.03 |
| Pentium III Coppermine 800MHz | 9.25 |
| Athlon Classic 600MHz | 7.66 |
数据来自 Ars Technica 的 Cinebench 2000 帖中用户自报的成绩。系统、内存和操作系统各不相同,只能作为同期背景参考,而非受控对比。
我们模拟的 450MHz Pentium II 得分是 7.02 CB,比那台实机 PII 450MHz 的结果高约 61%。到 300MHz 差距更大,4.62 CB 对 2.38 CB。奇怪的是,我们 600MHz 的 9.28 CB 几乎正好和那台 800MHz Coppermine 持平。这些只是不同系统上的论坛个人提交,只能提供同期背景,而非受控对比,但差距确实不小。另外值得一提的是,这个版本的 benchmark 非常老,远早于它成为今天这个流行测试。
原因我还不清楚,可能和模拟机内的内存带宽与缓存时序有关。86Box 的 v3.0 发布说明里有一些相关历史,其中解释 P6 模拟之所以不够准确,是因为乱序执行和 L2 缓存行为过于复杂。Deschutes 的时序经过调校,以尽量接近真实硬件。不过说实话,我也不确定。
这个差距在 300MHz 和 450MHz 就已经存在,而这两个频率都低于我的补丁新增的档位。就本次评测而言,600MHz 仍是这套 86Box 配置下通过测试的最高档位,稳定频率比 M4 高 20%。CB2000 分数有助于说明这套配置如何随频率扩展,但我不会用它来声称在真实 Pentium II 或 Pentium III 上跨软件性能相当。
即便是 M4 的 500MHz,与我用作参照的超频 9950X3D 演示放在一起也相当可观。这台定制机器上我没有可比的 x86 运行数据,但基础款 M4 已经是一台强得多的复古机器,远不止最初 450MHz 的上限让我确认的那点水平。
下面的视频来自早先在 M6 上进行的 450MHz 测试,当时 OBS 还同时在做 720p30 H.264 的合成与编码。它记录的是那次运行,而不是新的 600MHz 结果。
3DMark 2000 SE 在 Mac Mini M6 上的 86Box 中运行,模拟 450MHz Pentium II 配 Voodoo 3。OBS 编码采集画面时,模拟速度稳定保持在 100%。
主机实际在做什么
86Box 把工作压在两个“超级”核心上,即 cpu6 和 cpu7,封装内其余部分基本空闲。在 M6 上,450MHz 的 Cinebench 2000 运行期间这两个核心平均约 4,483MHz,600MHz 运行时约 4,710MHz,峰值达 4,788MHz。核心活动率也随模拟频率上升,每个繁忙核心从 450MHz 时的约 41% 升到 600MHz 时的 45% 至 49%,也就是说在通过测试的最高频率下仍有实打实的余量。整个封装的占用率从未超过 26%。
同样配置下,M4 的繁忙核心更接近 3.7GHz,这一差距很可能就是它止步于 500MHz 的主要原因。
86Box:Pentium II 主机遥测
通过 powermetrics 以约 1 秒间隔采集。cpu6 和 cpu7 是 86Box 正在使用的性能核心。此 M6 版本上 CPU 封装功耗报告为零,因此 M6 只绘制频率和占用率。
这对 Mini 意味着什么
就这一具体用途而言,最便宜的新款 Mac 台式机是一台异常出色的机器。基础款 M4 已经能给我稳定的 500MHz Pentium II,M6 把它推到 600MHz,音频完好,3DMark 演示全程 100%。对于一台不到 €1,600 的小巧静音机器来说,这是相当出色的结果。在我目前找到的案例中,这是最清楚的一个:M6 的单核领先转化成了你真正能感受到的东西,而不只是图表上的一个数字。
从跑分数据以及网上那个年代对应的实测反馈来看,我这套虚拟系统的水平大致落在 Pentium III 这一档。哪天有空,我想在 86box 里试试跑 XP 模拟。
功耗与散热等 powermetrics 能报出 M6 CPU 封装功耗再说。回头见。 游戏跑分《赛博朋克 2077》原生 1080p,看 12 核 GPU 接管后的表现。