如何通过“软件”更新来提高处理器的速度?

如何通过“软件”更新来提高处理器的速度?

新的 AMD 处理器 Ryzen 已经上市,但不幸的是,它们似乎在游戏方面表现不佳。英特尔处理器显然在游戏方面仍然更快。人们当然不赞成这种做法,AMD 发表声明称,他们正在更新固件或软件,以加快 Ryzen 的游戏速度。

如果我错了,请纠正我,但处理器必须具有静态固件才能与 x64 标准兼容?如果是这样,AMD 是否必须针对其处理器优化游戏(软件),这显然是不可能的?如果从根本条件来看似乎是不可能的,那么他们为什么要说这样的话?

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

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

答案1

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

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

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

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

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

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

答案2

操作系统和应用程序层面的各种软件问题都导致性能不佳。

八核 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 Games Hardware 文章,通过 Google 翻译(重点已添加):

[...] 更令人兴奋的是,认识到 CCX 数据传输在任何情况下都会相互干扰 - 有时明显,有时不太明显。更大的 L3 缓存(2 + 2 配置)的优势在这一测量系列中毫无体现。

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


许多(但不是全部)游戏基准测试显示增加禁用 SMT 时的性能。但是,有传言称 Windows 错误地将每个硬件线程都当作自己的核心进行调度,这种说法是不正确的据 AMD 称,这是因为许多应用程序仅针对英特尔处理器进行了优化(考虑到 AMD 已经退出高端处理器市场五年了,这并不意外)。AMD 表示,他们正在与数百家游戏开发商合作,以提高 Ryzen 处理器的性能。不过,我怀疑 Windows 更新仍然可以通过更精细地调整调度程序来满足游戏玩家的需求。建筑学。

下列Tom's Hardware 的示例启用 SMT 后性能下降:

Tom's Hardware 基准测试结果:《奇点灰烬》

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

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


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

答案3

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

1) 早期主板 BIOS 确实存在问题:禁用不相关的功能会关闭核心。在某些主板上设置内存超频会禁用加速。某些 BIOS 修订版会普遍抑制性能。

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

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

因此,真正的问题不是 BIOS/固件更新如何让处理器运行得更快(它可以做到,优化微代码等...),而是... 有缺陷的 BIOS/固件对 CPU 的损害有多大

答案4

与其说软件更新会让处理器更快,不如说大家期待的是软件更新会让软件更适合Ryzen的架构,能够更好地发挥其性能。

如果我错了,请纠正我,但是处理器必须具有静态固件才能兼容 x64 标准?

几乎。CPU 中有软件(如上所述的微代码),它可以影响性能。基本上,X86 仅指定操作结果,CPU 如何实现这些结果是工程师的问题。不过,微代码调整在 Ryzen 中发挥重要作用的可能性很小,因为性能差距似乎主要适用于游戏,这表明 CPU 性能良好,但有些游戏尤其不能很好地利用它。

操作系统负责确保程序有效地分布在 CPU 上,这可能会影响性能,但从广义上讲,这两个因素都不是新架构的主要问题。在这种情况下,大多数性能改进都是由于开发人员编写了更适合新架构的代码。这种情况往往不会发生在英特尔 CPU 的各代之间,因为设计变化并不大,所以在一种 CPU 上运行良好的东西很可能在另一种 CPU 上运行良好。

然而,Ryzen 是一种全新的设计,因此,从定义上来说,所有为适合其他 CPU 而编写的东西并不都是为适合 Ryzen 而编写的。

为了大大简化情况,请想象两个处理器:

  • Processor One 已经上市一段时间了,并且(无论出于什么原因)加法速度非常快。软件的设计目标是尽可能多地使用加法,以充分利用这一能力。

  • 一款竞争性处理器上市后,其加法能力较弱,但乘法能力较强。所有针对使用较多加法指令而优化的软件在新处理器上的表现都不佳,但未针对大量加法进行定制的软件的表现或多或少类似。一些软件可能已经进行了大量乘法运算,即使在发布当天,它们在新 CPU 上的表现也会比在 Processor One 上更好。

发布一段时间后,开发人员将开始适应,在他们的软件中使用更多的乘法,甚至设计他们的软件以根据所使用的 CPU 架构在加法密集的代码路径和乘法密集的代码路径之间切换。

Ryzen 的情况就是这样——它是一种新架构,软件开发人员尚未针对其特性进行优化。假以时日,开发人员将开始调整他们的软件,使其在其上表现更好。由于大多数软件已经设计为在英特尔 CPU 上表现良好(毕竟它们很受欢迎!),因此它们可能不会从这些变化中受益太多。

有些工作负载英特尔会保持更快,而有些工作负载 Ryzen 已经更快(并且会变得更快),具体取决于底层行为。在我上面给出的情况下,只需要添加东西的软件在第一个处理器上总是表现更好,而只需要乘以东西的软件在第二个处理器上总是表现更好 - 但大多数软件都很复杂,这些差异会有所趋于平稳。

如果是这样,AMD 是否必须针对其处理器优化游戏(软件),这显然是不可能的?

值得注意的是,AMD 就游戏性能发表的言论是,他们正在与开发人员合作优化游戏。他们向公司发送开发系统(目前有 300 家公司,他们的目标是到今年年底达到 1000 家),并与游戏性能不佳的公司交谈,以帮助解决这一问题。据我所知,AMD 尚未声明自己正在优化游戏。

在这个特定情况下,Ryzen 也在某些情况下受到限制,因为 Windows 在决定哪些核心应该加载工作方面做得不好,而且当前的 BIOS 存在问题,原因我根本不会假装知道。然而,这些问题不能成为造成所有性能差距的原因,因为在某些工作负载下,Ryzen 的表现已经令人信服地优于英特尔,这表明问题至少部分(如果不是主要)归因于正在运行的特定程序,而不是整个操作系统或 BIOS。

相关内容