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

如果我输入错误,请纠正我,但处理器必须具有静态固件才能与x64标准兼容?如果是这样,AMD是否不必为其处理器优化游戏(软件),这显然是不可能的吗?如果似乎无法看到基本情况,那该怎么办呢?

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

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

评论

您可能想用Google搜索“微码”一词。

已经在SO上:stackoverflow.com/questions/4366837/what-is-intel-microcode

固件可能是好事,也可能是坏事,或者仅仅是“对应用程序没有好处”。 x86没有定义指令时序,因此更新固件(微码)以改善指令时序不会破坏x86兼容性。这样做可行且有必要的原因有几个潜在原因:1)最初的微码是一项快速工作,并非最佳方法; 2)当为Ryzen编译程序时,初始微码性能良好,但如果是针对通用x86或intel的处理器(大多数现有软件)编译的程序,则微码效果不佳。

微代码更新可以缩短指令时间,但还有更多。现代CPU会执行诸如分支预测,推测执行,乱序执行之类的事情,并且可以极大地提高性能。所有这些都由微码控制。微码优化需要时间,而且在竞争激烈的业务中,商品通常很短缺。

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

#1 楼

现代处理器比人们想象的要复杂得多。它们非常复杂,几乎超出一个人的理解范围。用“ horta”简短地说明一下,可能具有以下所有功能:首先,几乎所有内部​​硬件都可以在很大程度上进行配置。为了使CPU运行,必须设置成千上万个带有成千上万个单独位的配置寄存器。 CPU高速缓存交互的所有几层都具有可配置的管道,并且各种定时延迟显然会影响整体性能。
有数百个高级功能由架构师提供,工程人员没有时间去验证它们,因此数百个功能被禁用或通过“鸡翅”设置为故障安全配置。但是,如果发现它们功能正常且有用,则可以对其进行调整和启用。这些增强功能通常会随着时间的流逝而得到深入验证,并且可以通过各种微代码补丁在处理器的整个生命周期内逐步启用。
所有最新的CPU都有多个内部单元,这些内部单元由独立的微处理器控制,这些独立的微处理器嵌入在处理器内部。 x86 CPU芯片。一个公开露面的单位是P单位。如果没有积极的电源管理,现代处理器将无法运行,否则它们将会融化。但是,深度电源管理与激进的进出时钟/电压策略相矛盾,并且策略中的更改会严重影响整体系统性能。所有细节都由P-Unit控制,并且可以通过加载另一个微代码补丁来进行优化/调整,如此处所述。
内部互连的许多其他方面由各种附加的嵌入式处理器控制,可以通过加载来进行纠正。微代码修补程序,或者如果可以访问这些配置资源,则升级BIOS。

简而言之,尽管CPU硬件确实是硬连线的,但所述硬件的配置几乎可以定义其性能,并且可以通过BIOS更新和嵌入式微代码补丁进行调整,以提高系统性能。

评论


我不确定应该接受哪个答案。 @bwDraco的答案很好,但您的答案更适合实际答案,即使他的答案提供特定于问题的信息也更为困难。

– Arthur P. R.
17 Mar 9 '17 at 15:18

好吧,你应该接受这个答案。您来自电子行业,因此您似乎对CPU固件感兴趣(没有Windows更改)。 @ ArthurP.R。

– AnoE
17-3-9在16:33



@ ArthurP.R。如果基准测试人员发现Windows不能正确地将任务调度到多线程处理器(将线程作为独立的内核进行处理),则意味着AMD某种程度上搞砸了处理器描述符或其他任何东西,因此Microsoft无法理解它们。如果描述符可以通过某种更新机制修补到Microsoft标准,那么这将是一个简单的一阶修复程序。您已经问了一个一般性问题,因此可以回答。 :-)

–.Ale..chenski
17 Mar 9 '17 at 19:39



这就是为什么即使@bwDraco适合的答案也在这里,我也接受了您的答案的原因

– Arthur P. R.
17 Mar 9 '17 at 19:44

#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产生的性能就会降低:



尽管事实上仅启用了一个CCX表示只有8 MB的L3缓存可用,而不是整个16 MB。从PC游戏硬件的文章中,通过Google Translate(添加了重点):


[...]更令人兴奋的是,认识到CCX数据传输相互干扰的事实无论如何-有时更多,有时不太清楚。较大的L3高速缓存(2 + 2配置)的优点在此测量系列中无处可寻。


此PC透视文章显示,不同CCX上的内核之间存在相当大的通信延迟,但是与同一CCX上的内核进行通信时,延迟却很小。请注意,本文建议Windows了解CCX设计,并避免在不同的CCX上调度线程,但是社区成员发现冲突的结果。


许多(但不是全部)游戏基准禁用SMT时,显示性能提高。但是,有谣言指出Windows不正确地将每个硬件线程作为其自己的核心进行调度。根据AMD的说法,这是由于许多应用程序仅针对Intel处理器进行了优化而引起的(考虑到AMD一直是高端处理器市场上的MIA已有5年之久,这并不意外)。 AMD表示,他们正在与数百家游戏开发商合作,以提高Ryzen处理器的性能。但是,我怀疑Windows更新仍然可以通过更精细地调整调度程序以适应Zen架构的特性来提供帮助。

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



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




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

评论


我不确定我要关注。 OP明确表示,由于在此阶段对Ryzen进行游戏优化是毫无疑问的,而Windows错误的故事还更长,因此,此答案如何帮助您了解固件更新如何为性能改进带来希望?

–.Ale..chenski
17 Mar 8 '17 at 1:29

他本质上是在说Windows完全弄乱了其分配线程的方式/位置-导致性能问题。

–游侠怪胎♦
17年8月8日在2:00

@JourneymanGeek,任何不错的Windows(我不确定W10是否合格)始终对进程的核心亲和力具有明确的控制权,而具有亲和力的模拟始终是基准测试中的第一个工具。那有什么新东西?

–.Ale..chenski
17 Mar 8 '17 at 2:52

不幸的是,但是内核更新正在进行中。您可能需要等待4.12内核。 4.11带来了一些修复程序,但还不足够。 phoronix.com/scan.php?page=news_item&px=Ryzen-7-Linux-4.11

–bwDraco
17 Mar 8 '17 at 6:41

@Crouchingkitten AMD只能提供驱动程序,不能提供操作系统更新。这样的东西不在AMDS任务池中。

– Arthur P. R.
17 Mar 8 '17 at 14:28

#3 楼

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


1)早期的主板BIOS确实遇到了麻烦:禁用
不相关的功能将关闭内核。在某些主板上设置内存超频
将禁用升压。某些BIOS修订版本会
产生普遍抑制的性能。

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

3)Ryzen受益于启用高性能电源配置文件。
这将覆盖核心停放。最终,我们将提供一个驱动程序,使人们能够保持平衡并始终禁用核心停车。
玩家也已经这样做了一段时间。我猜错了,在这里。我想
阐明其好处:高性能模式允许CPU在1ms内更新其电压/时钟速度,而平衡模式下则为30ms。这就是我们的驾驶员将要完成的任务。抱歉造成困惑!



因此,真正的问题不是BIOS /固件更新如何使处理器更快(它可以做到,微码优化等)。 。)它的更多信息……错误的BIOS /固件严重削弱了CPU的工作能力

评论


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

– Arthur P. R.
17 Mar 7 '17 at 22:06

np,它可能足够抽象了。我正计划进行重大重建时关注Ryzen,所以我关注所有可能出现的问题。作为Linux用户,我还关注特定于Linux的问题。 Ryzen(和zen核心)需要考虑的一件事是这是AMD的第一个SMT,最初迹象是它报告的逻辑核心与Intel和BIOS / Windows可能会尝试使用所有“核心”作为物理核心(而一半是逻辑的)不同核心。这会明显影响性能

– Naib
17年7月7日在22:10

我认为关于这个问题的答案,评论和想法非常重要,因为人们需要知道事情是否还会好起来,到目前为止,我看到的现在我可以再次希望。顺便说一句,这篇文章非常非常好!

– Arthur P. R.
17年7月7日在22:12

有关特定于Ryzen的更多信息... forums.gentoo.org/viewtopic-t-1057910.html在gentoo论坛上的很多人都在讨论如何获取信息。现在,对于Linux,mobo音频驱动程序仅在git中存在,同样不存在热监控器... HPET和核心问题已成为当务之急。现在,AMD完全将英特尔淘汰出局,进行纯计算

– Naib
17年7月7日在22:17

在一定程度上是。我坚持说,对于Ryzen来说,它已经瘫痪了,因此BIOS /驱动程序将“加快速度”

– Naib
17年7月7日在22:19

#4 楼

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

所以是的,对于他们来说,推出新的固件以及时钟速度,是否启用预取等完全可行。某个内核(或IIO)是否可以对缓存具有某些优先选择,由于大多数游戏都是以单线程方式设计的,因此有可能提高游戏性能。

评论


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

– Arthur P. R.
17年7月7日在21:56

@ ArthurP.R。在pcode,ucode(微码)和bios之间,芯片的性能和功能可以大大改变。这些都是软件/固件。从源头上讲,不,我不能为您提供任何外部信息来源(因为这些都是内部的)。

–horta
17年7月7日在22:11

非常遗憾@ho​​rta,非常感谢您提供此信息。随时调整您的答案以包括此信息。这是值得的!

– Arthur P. R.
17年7月7日在22:13

#5 楼

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


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


差不多。 CPU中有软件(如上所述,微码),它可能会影响性能。基本上X86仅指定运算结果,CPU如何准确地获得这些结果是工程师的问题。微代码调整在Ryzen中起主要作用的几率很小,因为性能差距似乎主要适用于游戏,这表明CPU性能良好,但是某些游戏尤其不能充分利用它。

操作系统负责确保程序有效地分布在CPU上,这可能会影响性能,但从广义上讲,这两个因素都不是新体系结构的主要问题。在这种情况下,大多数性能改进来自开发人员编写的代码更适合新体系结构的结果。由于设计更改的意义不大,因此在几代Intel CPU之间往往不会发生这种情况,因此在一个设计上行之有效的做法在另一个设计上可能行之有效。

Ryzen是一种全新的设计,因此,根据定义,为适应其他CPU而编写的所有内容均未针对Ryzen进行编写。

为了大大简化这种情况,请描绘两个处理器:


处理器一已经投放市场了一段时间,并且(无论出于何种原因)在增加数量方面非常快。该软件旨在尽可能地尝试使用附加功能,以充分利用此功能。
竞争的处理器降落在市场上,附加功能较弱,而乘法功能较强。所有经过优化以使用更多加法运算指令的软件在新处理器上的性能均较差,但尚未经过定制以使用大量加法运算的软件或多或少具有相似的性能。某些软件可能已经进行了大量乘法运算,并且即使在发布当天,在新CPU上也比在处理器1上做得更好。

启动后一段时间,开发人员将开始适应并使用更多功能。在他们的软件中进行乘法运算,甚至设计其软件,以根据使用的CPU架构在加法繁重的代码路径和乘法相繁的代码路径之间进行切换。

Ryzen就是这种情况-这是软件开发人员尚未优化以适应其特性的新体系结构。如果有时间,开发人员将开始调整其软件以使其性能更好。由于大多数软件已经被设计为可以在Intel CPU上很好地运行(毕竟它们非常受欢迎!),所以它们可能不会从这些更改中受益良多。

有些工作负载英特尔只会保持更快的速度,而有些人认为Ryzen已经更快(并且还会变得更快),具体取决于基本行为。在上面我给出的情况下,只需要添加内容的软件在第一个处理器上始终会表现更好,而仅需相乘的软件在第二个处理器上就会始终表现更好-但在大多数情况下,软件非常复杂且这些差异将有所消除。


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


值得注意的是,AMD实际上对游戏性能的评价是,他们正在与开发人员合作以优化游戏。他们正在将开发系统发送给公司(目前有300个公司在野外,并且他们的目标是到今年年底达到1000个),并与游戏效果不佳的人进行交流,以解决该问题。据我所知,还没有人说AMD会自行优化游戏。

在这种情况下,Windows在某些情况下也无法决定Ryzen加载哪个内核的决定。可以正常工作,而当前的BIOS却因我根本不会假装知道的原因而出现问题。但是,这些问题并不是造成所有性能差距的原因,因为在某些工作负载中Ryzen已经令人信服地胜过Intel,这表明问题至少部分(如果不是主要的话)归结于正在运行的特定程序,而不是整个操作系统或BIOS。

评论


这个答案也很有趣。谢谢。

– Arthur P. R.
17 Mar 10 '17 at 5:34

#6 楼

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

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

也有其他选择,但是大多数都涵盖了。
基本上,只要您知道问题所在,并且可以以编程方式操纵数据的处理方式(例如引入一些智能解码算法,以替代“强力”解决方案)或操纵处理器对其性能的不同关键因素的反应(例如,在过热的情况下更积极地增加散热或监视应用程序的资源需求,并在更多情况下动态超频自身)需要强大的处理能力),您可以做很多事情来改善(或降低)处理单元的性能。

在AMD的情况下,这可能是对其提升机制或冷却效率的优化灵解。这些中的一个或两个都可能已更改为对增加的负载或温度做出更积极的反应。

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

#7 楼

软件更新绝对可以使系统(包括处理器)运行得更快。

一个非常极端的例子是大型IBM大型机:您可以在线购买更多的CPU时间,而获得的只是许可证您必须输入到操作系统中的“金钥”,然后繁荣!您的系统运行速度更快。诀窍很简单:OS调度程序有时会拒绝调度任务,而是让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”。