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


120

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

如果我错了,请纠正我,但处理器必须有一个静态固件才能与x64标准兼容?如果是这样,AMD不会为他们的处理器优化游戏(软件),这显然是不可能的?如果看起来不可能看到潜在的条件,那么会发生什么事情呢?

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

是否有可能在不改变底层硬件的情况下实现处理器的加速? 如果有可能,这是怎么做到的?处理器的固件旁边是否有软件?


71
您可能想要谷歌术语“微代码”。
PlasmaHH


10
固件可能是好的,也可能是坏的,或者只是“不适合应用程序”。 x86没有定义指令时序,因此更新固件(微码)以改善指令时序不会破坏x86的兼容性。为什么这是可行的并且可能是必要的,有几个潜在的原因:1)初始微代码是一种快速的工作并且不是最佳的; 2)当为Ryzen编译程序时,初始微代码表现良好,但如果程序是针对通用x86或针对英特尔处理器(大多数现有软件)编译的话,则不会。
user3528438

15
微码更新可以改善指令时间,但还有更多。现代CPU执行分支预测,推测执行,乱序执行等可以显着提高性能的功能。所有这些都由微码控制。微码优化需要时间,而商品在竞争激烈的业务中往往供不应求。
LMiller7

4
想象一下,你正在跑步,出于某种原因,你拒绝弯曲你的左腿。这将使您变得笨拙和缓慢 - 您可以通过更有效地使用腿部的“相同硬件”并更有效地弯曲它来轻松提高您的跑步速度。将“大脑”指令改为腿部会大大提高性能。
enderland

Answers:


122

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

  1. 首先,几乎所有内部​​硬件都可以在很大程度上进行配置。有成千上万的配置寄存器,必须设置数以万亿的单个位才能使CPU运行。所有几层CPU缓存交互都具有可配置的流水线,各种时序延迟显然会对整体性能产生影响。

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

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

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

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


我不确定我应该接受哪个答案。 @ bwDraco的答案很好但你的实际答案更合适甚至更难他的答案是提供特定问题的信息。
Arthur P. R.

好吧,你应该接受 这个 回答。你来自电子背景,所以你似乎对它感兴趣 CPU固件 (不是一些Windows更改)。 @ ArthurP.R。
AnoE

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

这就是为什么我接受了你的答案,即使@bwDraco的答案也适合这里
Arthur P. R.

102

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

八核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 Games Hardware benchmark result: Battlefield 1

尽管只启用了一个CCX,但只有8 MB的L3缓存可用,而不是完整的16 MB。从PC游戏硬件文章,通过谷歌翻译(重点添加):

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

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


许多(但不是全部)游戏基准测试显示 增加 SMT禁用时的性能。然而, 谣言说Windows不正确地安排好像每个硬件线程都是不正确的 。根据AND,这是由于这一事实造成的 许多应用仅针对英特尔处理器进行了优化 (鉴于AMD已从高端处理器市场推出MIA约五年,这并不意外)。 AMD表示,他们正在与数百家游戏开发商合作,以提高Ryzen处理器的性能。但是,我怀疑Windows更新仍然有助于更好地调整调度程序的特性 建筑。

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

Tom's Hardware benchmark result: Ashes of the Singularity

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

TechSpot benchmark result: Deus Ex: Mankind Divided


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


12
我不确定我是否关注。 OP明确表示,由于Ryzen的游戏优化在这个阶段是不可能的,而Windows的错误甚至是一个更长的故事,这个答案如何有助于理解固件更新如何为任何性能改进带来希望?
Ale..chenski

11
他基本上说windows完全搞乱了分配线程的方式/位置 - 导致性能问题。
Journeyman Geek

2
@JourneymanGeek,任何体面的Windows(我不确定W10是否合格)总是能够明确控制核心与进程的关联,而使用亲和力进行模拟始终是基准测试中的第一个工具。什么是新的呢?
Ale..chenski

4
不幸的是,但内核更新正在进行中。您可能需要等待内核4.12; 4.11带来了一些修复,但它并不完全存在。 phoronix.com/scan.php?page=news_item&px=Ryzen-7-Linux-4.11
bwDraco

7
@Crouchingkitten AMD只能提供驱动程序而非OS更新。这样的东西不在AMDS任务池中。
Arthur P. R.

9

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​​瘫痪


我很抱歉在错误的问题方面提问。我认为这很合适,特别是因为我对非平凡的信息也很感兴趣。

np,它可能足以留下来。我正在关注Ryzen,因为我计划进行重大改造,所以我正在关注所有的出牙问题。作为Linux用户,我也在关注特定于Linux的问题。 Ryzen(和zen核心)需要考虑的一件事是AMD的第一款SMT& amp;最初的迹象是,它报告的逻辑内核与英特尔的不同,当一半是逻辑内核时,BIOS / Windows可能会尝试将所有“内核”用作物理内核。这会对性能产生重大影响
Naib

关于这个问题的答案,评论和想法是非常重要的,我认为因为人们需要知道事情是否会变得更好,到目前为止我看到我现在可以再次希望。 BTW文章非常好!

有关更多Ryzen具体... forums.gentoo.org/viewtopic-t-1057910.html 我们在gentoo论坛上的一大堆发布并在我们获取信息时进行讨论。现在对于linux来说,主板音频驱动程序只是git,同样热监视器也不存在...... HPET和核心问题是一个直接关注的问题。现在,AMD完全将英特尔用于纯计算
Naib

1
在某种程度上是的。我支持我的声明,对于Ryzen而言,它正在瘫痪,因此BIOS /驱动程序将“加速”
Naib

6

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

所以是的,他们完全可以推出新的固件和时钟速度,或者是否启用了预取,或者某个核心或IIO是否可以获得某些优先级的缓存,这有可能提高游戏性能大多数游戏都是以单线程方式设计的。


这听起来很有趣,是否有可能找到任何参考?将它们中的一些证明给人们是非常好的:)

@ ArthurP.R。在pcode,ucode(微码)和BIOS之间,芯片的性能和功能可以大大改变。这些都是软件/固件。来源明智,不,我不能给你任何外部来源的信息(因为它都是内部的)。
horta

多么令人失望的@horta非常感谢这些信息。您可以随意调整答案以包含此信息。这是值得的!

4

软件更新并不会使处理器更快。每个人都期待的是,软件更新将使软件更适合Ryzen的架构,并能够更好地利用其性能。

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

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

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

然而,Ryzen是一个全新的设计,因此根据定义编写的所有适合其他CPU的内容都不适用于Ryzen。

为了大规模过度简化这种情况,请想象两个处理器:

  • 处理器One已经上市了一段时间,并且(无论出于何种原因)非常快速地添加数字。软件旨在尽可能地尝试和使用添加,以利用此功能。

  • 一个竞争的处理器落在市场上并且在此时更弱,但在乘法时更强。所有经过优化以使用更多加重指令的软件在新处理器上表现不佳,但未经过定制以使用大量添加的软件或多或少地执行相似的操作。有些软件可能已经进行了大量的乘法,并且在新的CPU上比在处理器One上做得更好,即使在发布日也是如此。

在发布后的一段时间内,开发人员将开始适应,在他们的软件中使用更多的乘法,或者甚至设计他们的软件以在加重代码路径之间切换,并且根据正在使用的CPU架构来增加繁重的代码路径。

这就是Ryzen正在发生的事情 - 它是一种新的架构,软件开发人员尚未针对其特性进行优化。考虑到时间,开发人员将开始调整他们的软件,以便在其上表现更好。由于大多数软件已经设计为在英特尔CPU上运行良好(毕竟它们非常流行!),它们可能不会从这些变化中受益匪浅。

有一些工作负载可以让英特尔保持更快的速度,而Ryzen已经更快(并且会更快),具体取决于潜在的行为。在我上面给出的情况中,一个只需要添加东西的软件在第一个处理器上总是表现得更好,而且必须繁殖的软件总是在第二个处理器上表现更好 - 但是大多数情况下软件很复杂,这些差异会有所不同。

如果是这样,AMD不会为他们的处理器优化游戏(软件),这显然是不可能的?

值得注意的是,AMD实际上对游戏性能的评价是,他们正在与开发人员合作以优化游戏。他们正在向公司发送开发系统(目前在野外有300个,他们的目标是在年底前达到1000个)并与那些游戏表现糟糕的人交谈以帮助解决这个问题。据我所知,没有声明AMD正在自行优化游戏。

在这个特殊情况下,Ryzen在某些情况下也被Windows拒绝做出关于哪些内核加载工作的错误决定,而且当前的BIOS出于问题,我原本不会假装知道。然而,这些问题不能解决所有性能差距,因为有些工作负载Ryzen已经令人信服地超越英特尔,这表明该问题至少部分(如果不是大部分)归结为正在运行的特定程序,而不是操作系统或BIOS整体。


这个答案也很有趣,也很有用。谢谢。
Arthur P. R.

1

当然,软件可以提高CPU甚至GPU的性能。

一种方法绝对是超频或其他一些时钟改变机制。 其次可以是驱动程序优化。这些包括更好的数据压缩方法,更快的解码算法等...基本上有助于更好地利用更多硬件的功能。这些功能也可以通过固件更新进行更新,这不是真正的(常规)软件。 然后有软件可以控制您的计算机的冷却解决方案。这对于利用英特尔Turbo boost和Nvidia GPU增强等性能提升技术的CPU和GPU非常有用。像这样的硬件具有一定的温度限制,因此当它们运行过热和动态超频时,当应用程序需要更高的计算能力时,只要它们没有达到最大功耗并且它们足够冷却它们就会降低它们的性能。

还有其他选择,但这些选项主要涵盖它。 基本上,只要您知道问题并且可以以编程方式操纵数据的处理方式(例如引入一些替代“强力”解决方案的智能解码算法)或操纵处理器对不同关键因素对其性能的反应(如果在过热或监控应用程序的资源需求时更积极地增加冷却,并在需要更多处理能力时动态超频),您可以做很多事情来改善(或恶化)处理单元的性能。

在AMD的情况下,它可能是其增压机制或冷却解决方案的优化。这些中的一个或两个可能已被改变以更积极地对增加负载或温度作出反应。

TL; DR:是的,软件可以提高处理器的性能。有许多方法可以完成,例如驱动程序和固件优化,超频等。任何软件更改都可以准备数据,以便更容易处理或使硬件对负载做出更好的反应或其局限性很可能会提高性能。


-1

软件更新肯定会使系统(包括处理器)运行得更快。

一个非常极端的例子是大型IBM大型计算机:你可以在线购买更多的CPU时间,而你所得到的只是一个许可证密钥,你必须输入你的操作系统,并且繁荣!,你的系统运行得更快。诀窍很简单:操作系统调度程序有时会拒绝安排任务并让CPU进入休眠状态,甚至只是短时间运行NO-OP循环,以实现给定的总体平均吞吐量。如果您支付更昂贵的许可证,则调度程序会删除这些NO-OP。

或者,甚至更严重:如果您购买的系统只有4或6或8个CPU,那么实际安装的通常会有大约16-32个。操作系统只关闭其中一些,并通过输入许可证密钥,您可以打开它们。

类似地,IBM大型机区分不同类型的处理器:Linux处理器,Java处理器,事务处理器等。它们实际上都是相同的处理器,但OS调度程序将拒绝将事务任务(这是最重要的)安排到Java或Linux处理器。只有Java VM将被安排到Java处理器,并且只有Linux VM将被安排到Linux处理器。如果你想获得更高的事务性能,你必须为更多的事务处理器购买许可证:再次,那些是完全相同的处理器,唯一的区别是调度程序中的配置标志“不要将事务任务安排到那些处理器”。

另一个例子,不是那么极端,是不同版本的Windows。不同版本的Windows支持不同数量的CPU内核和不同的内存量。如果您拥有大容量内存和大量CPU,只需升级到“更大”的Windows版本,就可以加快系统速度。请注意,版本具有完全相同的代码;只有一些配置开关说“你是一个家庭版,你只支持1个CPU和128个GiByte”。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.