如何通过“软件”更新使处理器更快?

rea*_*prm 122 firmware cpu

新的 AMD 处理器 Ryzen 已上市,但不幸的是,它们似乎缺乏游戏功能。英特尔处理器显然在游戏方面仍然更快。人们当然不赞成这一点,AMD 发表声明说,他们正在更新固件或软件,以加快 Ryzen 的游戏速度。

如果我错了,请纠正我,但处理器必须具有与 x64 标准兼容的静态固件?如果是这样,AMD 是否不必为其处理器优化游戏(软件),这显然是不可能的?如果似乎不可能看到潜在的条件,那么在那里说这些话是怎么回事?

但我可能错了(我希望如此)所以问题是:

是否可以在不更改底层硬件的情况下实现处理器的加速?如果可能,这是如何完成的?除了处理器固件之外还有软件吗?

Ale*_*ski 123

现代处理器比人们想象的要复杂得多。它们非常复杂,几乎超出了一个人的理解范围。扩展“horta”的简短评论,人们可能拥有以下所有内容:

  1. 首先,几乎所有内部​​硬件在很大程度上都是可配置的。有成千上万个配置寄存器,其中包含无数个位,CPU 必须设置这些位才能运行。CPU-缓存交互的所有几层都有可配置的管道,各种时序延迟显然对整体性能有影响。

  2. 有数以百计的高级功能由架构师放置在那里,工程人员没有时间验证,因此数百个功能被禁用或设置为带有“鸡块”的故障安全配置。但是,如果发现它们有用且有用,则可以对其进行调整和启用。这些增强功能通常会随着时间的推移得到深入验证,并且可以通过各种微代码补丁在处理器的整个生命周期内逐渐启用。

  3. 所有最近的 CPU 都有几个内部单元,这些单元由嵌入在 x86 CPU 芯片中的独立微处理器控制。一个公开出现的单位是 P-Unit。如果没有积极的电源管理,现代处理器就无法运行,否则它们会融化。然而,深度电源管理与激进的进入-退出时钟/电压策略相矛盾,并且策略的变化会强烈影响整体系统性能。所有细节都由 P-Unit 控制,并且可以通过加载另一个微码补丁来优化/调整,如这里所回答。

  4. 内部互连的许多其他方面由各种附加的嵌入式处理器控制,可以通过将微代码补丁加载到其中来纠正这些问题,或者如果可以访问这些配置资源,则升级 BIOS。

简而言之,虽然 CPU 硬件确实是硬连线,但所述硬件的配置几乎决定了它的性能,并且可以通过 BIOS 更新和嵌入式微码补丁来调整以获得更好的系统性能。

  • @ArthurP.R. 如果基准测试人员发现 Windows 没有正确地将任务安排到多线程处理器(将线程视为独立的内核),则意味着 AMD 以某种方式搞砸了处理器描述符/其他任何东西,因此 Microsoft 无法理解它们。如果描述符可以通过某种更新机制修补到 Microsoft 标准,那么这将是一个简单的一阶修复。你问了一个普遍的问题,所以这回答了它。:-) (3认同)

bwD*_*aco 101

操作系统和应用程序级别的各种软件问题导致性能欠佳。

八核 Ryzen 处理器由两个核心复合体 (CCX) 组成,每个复合体具有四个内核和 8 MB 的 L3 缓存。由于需要沿 Infinity Fabric(AMD 专有的缓存一致性互连)将数据移动得更远,因此访问不同 CCX 上的 L3 缓存速度较慢,这意味着将线程从一个 CCX 移动到另一个 CCX 或在不同 CCX 上的内核之间进行通信会导致性能降低。这种惩罚让人想起在运行不支持NUMA的操作系统的多路服务器上会发生什么。

看起来Windows 倾向于简单地在不同的核心周围移动进程并且不承认 CCX 间通信损失。这意味着即使没有必要Windows 也可能将线程放在不同的 CCX 上,从而降低性能。

德国评论家 PC Games Hardware 测试了 Ryzen 7 1800X 并禁用了不同数量的内核,发现在每个启用两个内核的情况下,使用两个 CCX 产生的性能比启用一个 CCX 且所有内核都完好无损的性能要慢:

PC 游戏硬件基准测试结果:战地 1

尽管仅启用了一个 CCX 意味着只有 8 MB 的 L3 缓存可用,而不是完整的 16 MB,但这仍然存在。从 PC 游戏硬件文章,通过谷歌翻译(强调):

[...] 认识到 CCX 数据传输在任何情况下都会相互干扰这一事实令人兴奋得多 - 有时更多,有时不太清楚。更大的 L3 缓存(2 + 2 配置)的优势在本测量系列中无处可寻。

这篇 PC Perspective 文章表明,不同 CCX 上的内核之间存在大量通信延迟,但与同一 CCX 上的内核通信时延迟非常小。请注意,本文建议 Windows 了解 CCX 设计并避免在不同的 CCX 上调度线程,但社区成员发现了相互矛盾的结果。


许多(但不是全部)游戏基准测试显示禁用 SMT 时性能提高。然而,有传言称 Windows 调度不当,好像每个硬件线程都作为自己的核心是不正确的。据 AMD 称,这是因为许多应用程序仅针对英特尔处理器进行了优化(鉴于 AMD 已经成为高端处理器市场的 MIA 大约五年,这并不意外)。AMD 表示,他们正在与数百名游戏开发商合作,以提高 Ryzen 处理器的性能。但是,我怀疑 Windows 更新仍然可以通过针对Zen架构的特性更精细地调整调度程序来提供帮助。

以下来自 Tom's Hardware 的示例演示了启用 SMT 时性能下降的情况:

Tom 的硬件基准测试结果:奇点的灰烬

TechSpot 对启用和禁用 SMT 的游戏性能进行了深入分析,并得出了非常相似的结果:

TechSpot 基准测试结果:杀出重围:人类分裂


这些测试还涉及电源管理问题。同样的 AMD 声明指出,Windows 并不完全了解 Ryzen 中的新功能,例如核心停放和快速时钟频率切换。这与 Tom's Hardware 在使用高性能电源计划时报告的性能改进一致(见上表,HP = 高性能)。Windows 更新可以添加对这些功能的支持并提高性能。

  • 我不确定我是否在关注。OP 明确表示,由于现阶段对 Ryzen 的游戏优化是不可能的,而且 Windows 错误甚至是一个更长的故事,这个答案如何有助于了解固件更新如何为任何性能改进带来希望? (12认同)
  • 他本质上是在说 Windows 完全搞乱了它分配线程的方式/位置 - 导致性能问题。 (11认同)
  • @Crouchingkitten AMD 只能提供驱动程序而不是操作系统更新。这些东西不在 AMDS 任务池中。 (7认同)
  • 不幸的是,是的,但内核更新正在进行中。您可能需要等待内核 4.12;4.11 带来了一些修复,但还没有完全到位。https://www.phoronix.com/scan.php?page=news_item&px=Ryzen-7-Linux-4.11 (4认同)
  • @JourneymanGeek,任何体面的 Windows(我不确定 W10 是否符合条件)总是明确控制与进程的核心关联,并且使用关联模拟始终是基准测试中的第一个工具。那有什么新鲜事呢? (2认同)
  • 您可以添加第三个元素:Ryzen 在 Windows 下默认为糟糕的省电设置,因此 CPU 处于“束缚”状态。您可以手动更改它 - 但它显然是一个“错误”(可能更多:如果处理器未知,则为默认值)并且它确实保持了性能。https://www.reddit.com/r/Amd/comments/5x6cy8/windows_power_profile_maximum_vs_balanced_boosts/ (2认同)
  • AMD 在驱动程序方面的记录特别糟糕。我猜这应该是有责任的:英特尔知道他们将运行 Windows,因此构建了他们的 CPU 以与 Windows 兼容。AMD 可能试图成为一个纯粹主义者,并没有在必要的程度上对他们的主要工作负载操作系统进行测试。当 Windows 修复当前采用的这些任意管理方法时,它会变得更好,而 AMD 可能需要编写更好的微代码和驱动程序。 (2认同)
  • 我不明白这与固件更新有什么关系...... (2认同)
  • 也很符合这个问题。我不能接受这两个答案,所以再次感谢 bwdraco。非官方您的问题也被接受:p (2认同)

小智 9

http://wccftech.com/amd-ryzen-launch-aftermath-gaming-performance-amd-response/

1) 早期的主板 BIOS 肯定有问题:禁用不相关的功能会关闭内核。在某些主板上设置内存超频会禁用升压。某些 BIOS 修订版会明显地产生普遍抑制的性能。

2) Ryzen 受益于禁用高精度事件计时器 (HPET)。HPET 的计时器分辨率会导致观察者效应,从而降低性能。这是一个 BIOS 选项,或者可以从 Windows 命令外壳禁用的功能。

3) Ryzen 受益于启用高性能电源配置文件。这将覆盖核心停车。最终我们将有一个驱动程序,允许人们保持平衡并无论如何禁用核心停车。游戏玩家也已经这样做了一段时间。我说错了,在这里。我想澄清一下好处:高性能模式允许 CPU 在 1 毫秒内更新其电压/时钟速度,而平衡模式则需要 30 毫秒。这就是我们的驱动程序将要完成的任务。对混淆表示歉意!

所以真正的问题不是 BIOS/固件更新如何使处理器更快(它可以做,微码优化等......)它更多......有缺陷的 BIOS/固件如何使 CPU 瘫痪


hor*_*rta 6

BIOS通常被认为是固件。BIOS 可以调整硬件中的各种位来改变系统的运行方式

因此,是的,他们推出新固件和时钟速度等内容是完全可行的,或者是否启用了预取,或者某个核心或 IIO 是否可以获得对缓存的某些偏好,这有可能提高游戏性能由于大多数以单线程方式设计的游戏。