1CPU的多核优化有多困难?
[PConline talk]随着AMD Ryzen的出现,计算机CPU进入了多核冲击时代。同一系列产品的核心倍增是司空见惯的。据透露,英特尔下一代CPU的i3将配备4核和8线程-这样的CPU,三年前被命名为i7。在高端系列中,核战争更加令人恐惧。出售的AMD Ryzen 3900X的12核和24线程足以让人喘口气,而即将推出的3950X配备16核和24线程。数码相框的粉丝都表示他们无法控制它,而且他们也无法停止喊是的。
但是,多核CPU玩游戏会更快吗?不必要。如果不考虑频率和架构IPC的差异,则在某些情况下,多核CPU玩游戏会更慢-例如,在某些情况下,AMD的新型12核3900X,某些游戏要比8核3700X慢。

测试表明,具有更多内核和更高频率的3900X在某些情况下的性能不如3700X。
请注意,从规格的角度来看,3900X完全压倒了3700X,更不用说还有四个内核甚至更高的频率(3. 8 / 4. 6GHz与3. 6 / 4. 4GHz),三级缓存也增加了一倍(64MB与32MB),那么为什么会有多核游戏玩起来更慢的情况?今天,从这种现象开始,让我们谈谈CPU和游戏优化。
游戏的多核优化有多难?
让我们从游戏的多核优化开始。在游戏优化方面,支持多核是不可避免的。哪些游戏针对多核进行了优化,哪些游戏只有一个内核才能解决,多核围观者一直是玩家谈论的话题。为什么游戏在优化多核时会遇到问题,而视频压缩等应用程序可以充分利用多核?这与游戏的操作机制有关。
·为什么游戏喜欢使用单核?
诸如视频压缩之类的任务可以轻松地并行执行。例如,一个线程压缩一个段,另一个线程压缩另一个段,并且多个内核一起工作。最后,所有片段均被压缩,完整视频被压缩。游戏的操作通常是线性的,并且某个步骤的计算通常与上一步紧密相关,并且很难充分利用多个线程。

多核适用于渲染和转码,但不一定适用于游戏

例如,在FPS游戏中,如果玩家被击中造成伤害,则伤害结果与轨迹有关。需要先计算轨迹,然后才能计算出损坏程度。这只能在一个线程中一个接一个地完成。无法通过多个线程同时计算的轨迹和损伤。为了充分利用多个内核,游戏需要将计算任务巧妙地划分为多个线程。例如,不同的线程负责物理冲突,AI行为等。技术阈值相对较高,需要进行更多工作。基于此,仍然有大量游戏无法充分利用CPU的所有内核。
·支持多核必须优化吗?
随着时代的发展,越来越多的游戏愿意为多线程优化而努力。例如,在过去的几年中,我们经常可以看到“每秒i3默默无声”的情况,但是现在游戏杰作已经将门槛提高到了4核,双核i3已经很尴尬了。但是,尽管如此,在某些情况下,12核3900X的性能仍不如8核3700X。为什么?
发生这种情况的主要原因是CPU内核调度不合理。 Ryzen的架构非常特别。每4个内核被包装为一个CCX,每两个CCX被包装为一个CCD。内核与内核之间的通信可以跨CCX甚至跨CCD,而无论它是CCX还是CCD之间的通信。 ,会有延迟。

Zen2体系结构,您可以看到核心CCX-CCD拓扑
换句话说,如果一个程序可以调用多个内核,则会发生以下情况。
1、调用的多个内核在同一个CCX中,并且延迟最小;
2、调用的多核穿过CCX,但在同一CCD中,并且存在延迟;
3、跨CCX和CCD调用的多核,延迟最大
例如,一个游戏可以调用4个核心。理想的情况是自然地在同一CCX中调用4个内核,以便获得最佳性能。但是实际上,代码对多个内核的调用不一定那么聪明,并且它可能无法识别同一CCX上的哪些内核。结果,游戏可能会调用位于不同CCX和CCD上的多个内核,从而导致额外的延迟,从而导致性能损失。

知道了这一点,您可以解释为什么3900X的游戏性能有时会比3700X的游戏性能低。 3900X封装了两个CCD。每个CCD都有两个CCX。每个CCX具有4个核心。原始的4x2x2 = 16核。屏蔽4芯后,共有12芯。 3700X只有一个CCD,包含两个CCX,共4x2 = 8核。可以看出,3900X的CCD比3700X多一幅,并且可能会导致额外的延迟。如果游戏无法利用3900X的多核优势,那么3900X的性能稍逊于3700X是合理的。

Windows 10 1903中Zen架构的优化之一是核心调度逻辑,优先考虑在同一CCX中调用核心
因此,即使游戏针对多核进行了优化,在核心调度方面仍需要做更多工作才能获得最佳性能。我非常高兴Microsoft意识到了相关问题并在Windows 10 1903中进行了优化。系统将优先考虑同一CCX中的内核,以避免交叉CCX引起的延迟。如果您想更好地利用AMD Ryzen处理器的性能,仍然有必要升级到Windows 10 1903。
2CPU单核性能真的挤牙膏了吗?
CPU单核性能真的挤牙膏了吗?
有人认为,CPU很难在频率方面取得性能突破,并且架构很难进一步提高效率。核心是提高性能的唯一方法。一些朋友从英特尔的“牙膏挤压”论证了这种观点,并认为CPU的同频性能多年来一直停滞不前,与上一代相比,AMD的Zen2架构大大提高了其效率,但只是在追赶与竞争对手。仅级别。几年前使用4核CPU玩游戏与当前的4核CPU似乎没有什么不同,这也是有力的证明。但这是真的吗?
实际上,这种观点是单方面的。几年前的CPU在某些测试和游戏中表现良好的原因是,这些测试和游戏并未针对新CPU的指令集进行优化。近年来,新CPU的主要价值是增加了AVX,AVX 2、 TSX和其他指令集。如果代码调用相应的指令集,则可以更有效地使用FMA等浮点加乘混合单元,从而减少了CPU流水线的空闲时间,并且可以显着提高性能。

这些是过去十年中添加的指令集。这并不意味着没有核心或挤压牙膏。
以著名的渲染软件Cinebench为例。这是DIY玩家非常熟悉的CPU测试工具。与旧版本的Cinebench R15相比,最新版本的Cinebench R20具有重大改进,增加了对AVX指令集的支持。如果CPU更好地支持AVX指令集,则在Cinebench R20中运行的同一渲染项目的速度是Cinebench R15的两倍甚至更多!由此可见,新指令集的巨大性能提升。


Zen2的单核性能提高了很多,很大程度上是因为AVX2的性能有了显着提高
支持AVX或更高版本的指令集已逐渐成为领域的标准,例如渲染,视频压缩和科学计算。著名的Linux发行版Fedora 32甚至没有计划在没有AVX指令集的情况下支持CPU。但是,仍然有大量游戏没有跟上新的指令集,例如AVX,仅支持旧的SSE。自然,在新CPU上运行这些游戏与旧CPU并没有太大区别。在指令集支持方面,游戏仍然缺乏适当的CPU优化。
著名的游戏性能测试组件3DMark实现了这一点。在新的Time Spy Extreme测试项目中,添加了AVX,AVX2甚至AVX512指令集支持。调用AVX512指令集来运行得分,该得分是SSE3得分的两倍多。
诸如AVX之类的新指令集在实际游戏中变得越来越重要。例如,“刺客信条:奥德赛”甚至不支持没有AVX指令集的CPU(因为它过于激进,因此以后必须与旧CPU兼容)。例如,某些使用D加密的游戏要求FMA3指令集解密并正确运行。早期的“上帝U” E1230 v2只能凝视;如果您是PS3播放器,则可能已经在TSX指令集下体验了性能。跳跃。

育碧的新刺客信条在没有AVX指令的情况下不支持处理器。新游戏将越来越重视高级指令集。
通常,大多数游戏在指令集中仍然没有进行足够的优化。在没有指令集优化的情况下,旧CPU和新CPU的游戏性能不会相差太远。但是,支持新指令集是游戏CPU优化中不可避免的一部分。仅当使用新指令集时,才能显示新CPU的值。我希望更多游戏可以优化新的CPU指令集。
以下单词
无论是增加CPU内核多线程,还是使用新的指令集来提高SIMD性能,都可以大大增强CPU的性能。就消费市场而言,AMD似乎采取了更多的多核路线,而英特尔则致力于实施新的指令集。但是无论是哪种开发方向,都需要为此优化相应的软件,以发挥CPU的应有性能。
现在不是在不更改任何一行代码的情况下就可以发挥新CPU的全部性能的时候了。限于当前缺乏游戏支持的情况下,多核和高级指令集必须简化为“未来之战”。 CPU不是“挤牙膏”,并且游戏对CPU的优化还远远没有结束。我希望将来我们能够看到更多能够发挥CPU真正功能的游戏。
报告/反馈
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shoujiruanjian/article-368521-1.html
不要一天都在自己近海训练
小王子配音~我爱您
老成持重并不优于年轻热血