打造一台1997年雷神之锤PC:雷神之锤基准测试

Fabien Sanglard 新闻

摘要

针对各种1990年代CPU和配置下雷神之锤性能的详细技术分析,比较英特尔、Cyrix、AMD芯片以及DOS和Windows 95下的内存类型。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/05/16 03:34

# 打造一台 Quake 电脑:Quake 基准测试 来源:https://fabiensanglard.net/quake_pc/quake/index.html 打造一台 Quake 电脑:Quake 基准测试 --- 在深入软件渲染版 Quake 的基准测试时,我心中有太多想要解答的问题。 `quake.exe` 在 Windows 95 下是否和 DOS 下一样快?那 `winquake.exe` 在 Windows 下又如何?显卡总线的影响有多大?Intel 与 Cyrix 以及 AMD K5 相比表现如何?K6 是否比 K5 更好?内存方面,SDRAM 真的比 EDO 有显著提升吗?AGP 相比 PCI 是否真的带来了改进? 测试条件 --- 除非另有说明,所有基准测试均在游戏条件下运行。即:从 DOS 启动,开启音效,播放 CD 音乐,视图大小设置为 101(示例 (https://fabiensanglard.net/quake_pc/quake/quake_screen_101.png))。显卡始终是 Matrox Mystique 或 Matrox Millenium。所有 Socket 7 CPU 使用的主板均为 XA100[\[1\]](https://fabiensanglard.net/quake_pc/quake/index.html#footnote_1)。所有基准测试均使用 `demo1` 演示。 在 Quake v1.01 中运行命令 `timedemo demo1` 会失败。该命令从 v1.06 才开始引入。 [](https://fabiensanglard.net/quake_pc/quake/cpu_roaster.webp)*CPU 测试阵容的一部分。K5 缺席,右边那块丑陋的是 P200 (https://fabiensanglard.net/quake_pc/quake/p200.webp)。* Intel 基准测试 --- [](https://fabiensanglard.net/quake_pc/quake/chart_pentium.svg)Intel CPU 大约在 90MHz 时开始提供令人愉悦的体验(至少对我来说是这样),而 Pentium 120MHz 则是甜点级,帧率约为 30 fps。 查阅 96 年 6 月的杂志也表明,当时 Pentium 120MHz 是新机器的标准配置[\[2\]](https://fabiensanglard.net/quake_pc/quake/index.html#footnote_2),所以 id 的时机把握得不算太差。 即使是 Pentium 75MHz 也能提供 20 fps,按照 1996 年的标准,这已经是“流畅”了。稍微考古一下 Usenet 就会发现,当时玩家的期望与现在大相径庭。 > 我的配置是 p133、16mb 内存、4mb millenium,运行 Quake 在 512x384 分辨率下,能获得 17fps……运行良好,画面也好。 > – Matthew Lowth (rec.games.computer.quake.playing 1996)[\[3\]](https://fabiensanglard.net/quake_pc/quake/index.html#footnote_3) 九十年代末真是个好时代。在这些杂志里,经常能看到这样的广告:“到 2005 年,对计算机程序员的需求将翻倍。现在就接受培训,成为高薪的计算机程序员吧!”[\[4\]](https://fabiensanglard.net/quake_pc/quake/index.html#footnote_4) Intel MMX 基准测试 --- Pentium MMX 运行 *QUAKE* 更快,但这并非因为 MMX 指令(*QUAKE* 并未使用它们)。由于能够通过 SIMD 处理多达四倍的数据,MMX CPU 更容易出现指令饥饿。此外,为了解码 MMX 指令,流水线从五级扩展到六级。为了解决这两个问题,MMX 奔腾引入了以下改进。 - 将数据缓存和指令缓存大小加倍(各 16KiB),以减少在高核心时钟频率下缓存未命中造成的性能损失。 - 更长的流水线在分支预测错误时需要多消耗一个惩罚周期。为了减轻这一缺点,P55C 采用了增强型分支目标缓冲器,使用类似于 P6 的两级算法。 - 新流水线阶段还带来了其他好处:它提供了稍多的数据缓存访问时间(P54C 中的另一个关键路径),因此应能提高 200MHz 的良品率;并且在某些 P54C 不允许的情况下,允许非 MMX 指令配对双发射。 [](https://fabiensanglard.net/quake_pc/quake/chart_mmx.svg)因此,MMX CPU 运行 Quake 的速度比同频率的“普通”Intel CPU 快约 7%。 Cyrix 6x86 基准测试 --- Cyrix 6x86 的故事及其糟糕的性能如何导致公司倒闭是相当有名的。但它到底有多糟糕?事实证明,真的非常非常糟糕。 [](https://fabiensanglard.net/quake_pc/quake/chart_cyrix.svg)当时玩家们怨声载道,许多人到 Usenet 上表达他们的失望。当一篇帖子有 106 个感叹号(我数过)时,你就知道他们是认真的。 > 警告:不要购买 Cyrix。阅读此消息!!!(此处省略大量感叹号) > – – comp.sys.ibm.pc.games.action (1996)[\[5\]](https://fabiensanglard.net/quake_pc/quake/index.html#footnote_5) 问题因 Cyrix 使用性能评级(PR)来标注其处理器而加剧。6x86 P166+ 运行在 133MHz,但 Cyrix 自信地告诉消费者,它相当于 Intel Pentium 166MHz。这在整数运算上可能成立,但在 Quake 大量使用的浮点运算上则不然。结果,Cyrix CPU 运行 quake.exe 的速度只有 Intel CPU 的 50%。 > 我在完全相同的系统上对 Cyrix 6x86 P150+ 和 Intel P150 进行了广泛测试(我只更换了 CPU),只要不涉及使用 FP 数学的应用程序,P150+ 令人印象深刻(稍快一点)。然而,许多较新的应用程序和游戏都在利用 FP 数学,而 Cyrix 在这些应用上确实非常糟糕。 > – comp.sys.ibm.pc.games.action (1996)[\[6\]](https://fabiensanglard.net/quake_pc/quake/index.html#footnote_6) Cyrix 因其臭名昭著的“浮点性能摘要”[\[7\]](https://fabiensanglard.net/quake_pc/quake/index.html#footnote_7)而进一步损害了声誉,其中使用了 3D 加速器的基准测试,以及完全与游戏社区脱节的声明。 > 要实现流畅运动,帧率通常需要大于大约 13 帧/秒。 > – Cyrix 浮点性能摘要 (1996)[\[8\]](https://fabiensanglard.net/quake_pc/quake/index.html#footnote_8) 一年后,John Carmack 解释了这些糟糕表现的原因。 > 浮点问题确实伤害了 AMD 和 Cyrix。我们在开发 Quake 时邀请了 AMD 和 Cyrix 的人来,并告诉他们,“看,浮点运算将变得重要”,但由于当时没有他们使用的基准测试或应用程序,他们对此不以为意。AMD 和 Cyrix 都采用了非流水线的 FPU,这是它们的致命弱点。在整数性能方面,许多产品与 Intel 持平甚至在某些情况下更好,但我们为 Intel 进行了优化,因为 Pentium 利用 FXCH 变换技巧来流水线化所有这些东西。这相当取巧,但它贯穿了我们为 Quake 编写的所有汇编语言代码。所以我们对非 Intel 芯片进行了反优化,但这是唯一明智的做法。 > – John Carmack (1997)[\[9\]](https://fabiensanglard.net/quake_pc/quake/index.html#footnote_9) 如果你想了解更多关于 Cyrix 和 Quake 的故事,Nostalgia Nerd 制作了一个很酷的视频[\[10\]](https://fabiensanglard.net/quake_pc/quake/index.html#footnote_10)。 AMD K5 基准测试 --- AMD K5 遭受了与 Cyrix 6x86 类似的浮点缺陷。AMD 也使用了性能评级(PR)系统,这让玩家感到被欺骗。 [](https://fabiensanglard.net/quake_pc/quake/chart_k5.svg)AMD K5 运行 *Quake* 的帧率大约只有 Intel CPU 的 50%。 AMD K6 基准测试 --- 与 Cyrix 不同,AMD 在 Quake 灾难中幸存了下来。在 K5 之后不到一年,他们就成功推出了 K6。他们是否因为 K5 的惨败而不得不改进浮点性能,还是说早已在规划中,这不得而知,但他们确实做出了修正(尽管并未达到击败 Intel 的程度)。 [](https://fabiensanglard.net/quake_pc/quake/chart_k6.svg)如果你想了解更多关于 K6 内部结构的信息,*RTL Engineering* 制作了一个非常好的视频[\[11\]](https://fabiensanglard.net/quake_pc/quake/index.html#footnote_11)。 DOS 与 Windows 95 的性能对比 --- `quake.exe` 在 DOS 和 Windows 下运行的差异已在之前的文章(《WinQuake 为何存在及其工作原理》(https://fabiensanglard.net/winquake))中讨论过。 性能损失是明显的。Pentium MMX 233 MHz 在 DOS 下可以达到 48 fps,但在 Windows 95 下帧率下降至大约 38 fps。这大约慢了 25%。 我在使用 SB Live 启用 SB 模拟时遇到了问题。一直报出这个奇怪的错误。 `` 错误:配置文件不完整。 SBPort Creative SB16 模拟驱动程序未加载。 `` 问题在于我通过 FTP 以文件夹形式传输了驱动程序,这搞乱了文本文件的换行符格式。尽可能以 zip 归档或 iso 格式传输文件。 Windows 95 与 WinQuake 的性能对比 --- 同样,这已经在《WinQuake 为何存在及其工作原理》(https://fabiensanglard.net/winquake) 中讨论过。移植到 win32 大大缩小了性能差距。使用最快的后端,`winquake.exe` 将帧率提升到接近 DOS 下 `quake.exe` 的 6% 以内。 配置 | 帧率 (P233 MMX) --- | --- `quake.exe` 在 DOS 下 | 48 `quake.exe` 在 Windows 9X 下 | 38 `winquake.exe` (fastvid) 在 Windows 9X 下 | 45 AGP vs PCI --- 我想看看使用 AGP 显卡是否会有所改善,于是我搞到了一块 Matrox G200 SGRAM (798-02 (https://theretroweb.com/expansioncards/s/matrox-g200-sgram-798-02))。这不是一个完全公平的比较,因为它与 Matrox Mystique 220 4MB (644-03 (https://theretroweb.com/expansioncards/s/matrox-mystique-4mb-644-03)) 中的图形芯片不同,但我认为已经很接近了。 [](https://fabiensanglard.net/quake_pc/quake/pci_agp.webp)我几乎测量不到任何差异。有时性能会低 1 fps,有时会高 1 fps。 EDO vs SDRAM --- 我购买了一根 128 MiB 的 EDO DIMM 来与 SDRAM 进行比较。理论上,EDO 比 SDRAM 慢 33%,所以我很好奇这对 *Quake* 帧率的影响。 [](https://fabiensanglard.net/quake_pc/quake/ram.webp)差异几乎无法测量。使用 EDO 时,`winquake.exe` 在 `fastvid` 模式下运行在 44.6 fps。使用 SDRAM 时,我得到 45 fps。这只有 1% 的差异。我的假设是,L1 和 L2 缓存的命中率非常高,以至于 EDO 和 SDRAM 之间的差异并不明显。 Pentium Pro --- 这超出了我在这台机器上能测试的范围,但 TECHINFO.TXT (https://raw.githubusercontent.com/id-Software/Quake/refs/heads/master/WinQuake/data/TECHINFO.TXT#:~:text=The%20Pentium%20Pro%20is%20a%20very%20fast%20Quake%20platform) 中有一节关于 P6 的内容让我很感兴趣。 `` Pentium Pro 是一个运行 Quake 非常快的平台。 在 640x480 分辨率下,它非常流畅(而且看起来很棒!)。 `` 为了运行这些基准测试,一位同好使用了他的 W6-LI[\[12\]](https://fabiensanglard.net/quake_pc/quake/index.html#footnote_12) 主板,搭配 Matrox Mystique(使用 fastvid.exe 修复 440FX 芯片组视频错误)。 [](https://fabiensanglard.net/quake_pc/quake/chart_p6.svg)Pentium Pro 在相同频率下甚至比 Pentium MMX 还要快。这样的性能并不令人惊讶,因为 P6 完全脱离了 P5 架构,采用了乱序执行和巨大的板载 L2 缓存。它如此出色,以至于其架构成为了 Pentium II 的基础。 至于 640x480 分辨率,按 2026 年的标准是“很卡”,但按 1996 年的标准则是“丝般顺滑”[\[13\]](https://fabiensanglard.net/quake_pc/quake/index.html#footnote_13)。 [](https://fabiensanglard.net/quake_pc/quake/chart_p6_640x480.svg) 下一步 --- 对 VQuake (https://fabiensanglard.net/quake_pc/vquake/) 进行基准测试。 参考文献 --- ^ (https://fabiensanglard.net/quake_pc/quake/index.html#back_1)[ 1] 非 Socket 7 的基准测试在另一位同好的机器上运行。 ^ (https://fabiensanglard.net/quake_pc/quake/index.html#back_2)[ 2] 96 年 6 月的 PC 广告 (https://archive.org/details/home-pc-magazine-1996-07/page/54/mode/2up) ^ (https://fabiensanglard.net/quake_pc/quake/index.html#back_3)[ 3] Quake 在 P133 上运行效果如何?(https://groups.google.com/g/rec.games.computer.quake.playing/c/8xLgEdgN410/m/IUfM7MFqiJMJ) ^ (https://fabiensanglard.net/quake_pc/quake/index.html#back_4)[ 4] https://archive.org/details/home-pc-magazine-1996-07/page/172/mode/2up ^ (https://fabiensanglard.net/quake_pc/quake/index.html#back_5)[ 5] 警告:不要购买 Cyrix。阅读此消息!(https://groups.google.com/g/comp.sys.ibm.pc.games.action/c/dtrupvl11tk) ^ (https://fabiensanglard.net/quake_pc/quake/index.html#back_6)[ 6] 警告:不要购买 Cyrix。阅读此消息!(https://groups.google.com/g/comp.sys.ibm.pc.games.action/c/dtrupvl11tk) ^ (https://fabiensanglard.net/quake_pc/quake/index.html#back_7)[ 7] Cyrix 浮点性能摘要 (https://www.alaska.net/~akusedpc/pages/cyrix/fpu-summ.htm) ^ (https://fabiensanglard.net/quake_pc/quake/index.html#back_8)[ 8] Cyrix 浮点性能摘要:流畅帧率 (https://www.alaska.net/~akusedpc/pages/cyrix/fpu-summ.htm#:~:text=To%20achieve%20smooth%20motion%2C%20the%20frame%20rate%20typically%20needs%20to%20be%20greater%20than%20approximately%2013%20frames/second.) ^ (https://fabiensanglard.net/quake_pc/quake/index.html#back_9)[ 9] John Carmack – The Boot 访谈 (https://web.archive.org/web/19980130151620/www.bootnet.com/youaskedforit/lip_16_outtakes.html) ^ (https://fabiensanglard.net/quake_pc/quake/index.html#back_10)[10] Nostalgia Nerd: Cyrix 处理器发生了什么?(https://www.youtube.com/watch?v=iWGAdoMz1c0) ^ (https://fabiensanglard.net/quake_pc/quake/index.html#back_11)[11] RTL Engineering: Quake、浮点运算与 Intel Pentium (https://www.youtube.com/watch?v=DWVhIvZlytc) ^ (https://fabiensanglard.net/quake_pc/quake/index.html#back_12)[12] Micronics W6-LI (https://theretroweb.com/motherboards/s/micronics-w6-li-09-00288-xx) ^ (https://fabiensanglard.net/quake_pc/quake/index.html#back_13)[13] Quake 帧率对比 (https://www.soldcentralfl.com/quakecoop/compare1.htm#:~:text=The%20minimum%20acceptable%20frame%2Drate%20that%20allows%20an%20enjoyable%20game%20of%20Quake%20in%202D%2C%20running%20DOS%20Quake%20WinQuake%2C%20or%20QuakeWorld%2C%20is%2013%20%2D%2015%20FPS) ---

相似文章

打造一台1997年的Quake PC!

Fabien Sanglard

作者记录了打造一台1997-1998年古董PC的过程,用于运行所有版本的Quake,涵盖了硬件选择,如Pentium MMX、3dfx Voodoo2和Socket 7主板。

像1997年那样编译Quake!

Fabien Sanglard

一份详细的指南,介绍如何重现使用Windows NT 4和Visual C++ 6等老式工具编译Quake的win32二进制文件的过程(就像1997年所做的那样)。

WinQuake 存在的原因及其工作原理

Fabien Sanglard

深入探讨创建 WinQuake(Quake 的 Windows 原生版本)的历史原因,以及它如何在 Windows 95 和 NT 上实现接近 DOS 版本的性能。