加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_扬州站长网 (https://www.0514zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 人物访谈 > 专访 > 正文

多核打游戏反而更慢?谈CPU和游戏优化那点事

发布时间:2019-12-23 13:38:35 所属栏目:专访 来源:站长网
导读:副标题#e# 1CPU的多核优化有多困难? 随着AMD锐龙的横空出世,电脑CPU进入了多核震慑的时代。同一系列的产品,核心翻倍已经司空见惯,有爆料显示Intel下一代CPU的i3将会配备4核8线程这样的CPU,三年前它的名字叫i7。而在高端系列中,核战更是令人心惊胆战,
副标题[/!--empirenews.page--]

多核打游戏反而更慢?谈CPU和游戏优化那点事

 1CPU的多核优化有多困难?

随着AMD锐龙的横空出世,电脑CPU进入了多核震慑的时代。同一系列的产品,核心翻倍已经司空见惯,有爆料显示Intel下一代CPU的i3将会配备4核8线程——这样的CPU,三年前它的名字叫i7。而在高端系列中,核战更是令人心惊胆战,在售的AMD锐龙3900X的12核24线程已经足以令人倒吸一口凉气,而即将上市的3950X更是配备了16核24线程,数框框爱好者们纷纷表示把持不住,高呼yes根本停不下来。

然而,多核CPU打游戏一定会更快吗?不一定。排除频率、架构IPC的差异,某些情况下多核CPU打游戏甚至会更慢——例如在某些情况下,AMD的12核新品3900X,某些游戏中要比8核的3700X更慢。

多核打游戏反而更慢?谈CPU和游戏优化那点事

有测试显示,核心更多、频率更高的3900X在某些情况游戏表现不如3700X

要知道从规格来看,3900X全面压倒3700X,且不说核心多了四个,连频率也更高(3.8/4.6GHz vs 3.6/4.4GHz),3级缓存也翻了倍(64MB vs 32MB),那为什么会出现多核玩游戏更慢的情况?今天,就从这个现象出发,谈谈CPU和游戏优化的那点事吧。

游戏的多核优化有多难?

我们就先从游戏对多核心的优化谈起吧。谈游戏的优化,就绕不开对多核的支持。什么游戏对多核优化好、什么游戏只能一核有难、多核围观,一直是玩家们津津乐道的话题。为什么游戏在对多核心的优化上会出问题,而视频压缩等应用就能充分利用多核心?这和游戏的运行机制有关。

·为何游戏喜欢用单核心?

视频压缩这类任务可以轻易做到并行计算,例如一个线程压缩某个片段,另一个线程压缩另一个片段,多核一起运作,最后压缩完成所有片段,完整视频也就压缩完成了。而游戏的运行一般都是线性的,某一步的运算往往会和上一步息息相关,很难充分利用多个线程。

多核打游戏反而更慢?谈CPU和游戏优化那点事

多核心在渲染、转码时好使,但游戏却不一定

例如在FPS游戏中,某个玩家被击中产生伤害,那么这个伤害结果和子弹运行轨迹有关,需要先计算出子弹轨迹然后才能计算出伤害,这只能在一条线程中先后完成,无法通过多线程同时计算子弹轨迹和伤害。游戏想要充分利用多核,需要巧妙地将计算任务拆分成为多线程,例如不同的线程负责物理碰撞、AI行为等,技术门槛比较高,也得下更多功夫。基于此,目前仍有大量游戏未能充分利用CPU的所有核心。

·支持多核心一定优化好吗?

随着时代的发展,越来越多游戏愿意在多线程优化上做出努力。例如前几年,我们经常可以看到“i3默秒全”的情况,而现在的游戏大作已经将门槛提升至4核,双核i3已经难堪大任。但尽管如此,,仍会出现12核3900X表现不如8核3700X的情况,这又是为何?

出现这种情况,主要在于CPU核心调度不合理。锐龙的架构比较特殊,每4个核心封装成为一个CCX,每两个CCX封装为一个CCD,核心和核心之间的通讯,可以跨CCX,乃至跨CCD,而无论是CCX还是CCD之间通信,都存在延迟。

多核打游戏反而更慢?谈CPU和游戏优化那点事

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比3700X多了一个CCD,多了一种可能产生额外延迟的情况,如果游戏不能发挥出3900X的多核心优势,那么3900X表现略逊于3700X也就在情理之中了。

多核打游戏反而更慢?谈CPU和游戏优化那点事

Windows 10 1903对Zen架构的优化之一,就是核心的调度逻辑,优先调用同一CCX内的核心

因此,即使游戏对多核进行了优化,但在核心调度方面,也需要另外下更多功夫,才能取得最佳性能。很高兴的是,微软已经意识到了相关问题,在Windows 10 1903中做出了优化,系统会优先调度处于同一CCX内的核心,避免跨CCX造成的延迟。如果你想要更好地发挥AMD Ryzen处理器的性能,升级到Windows 10 1903还是很有必要的。

2CPU单核性能真的在挤牙膏?

CPU单核性能真的在挤牙膏?

有人认为,目前CPU已经很难从频率上做性能突破,架构亦难以进一步提升效率,堆核是性能进步的唯一之道。有的朋友从Intel的“挤牙膏”中论证这一观点,认为CPU的同频性能已经多年止步不前,而AMD的Zen2架构尽管效率相对于前代大幅提升,但也只是追上竞争对手的水平而已。用数年前的4核CPU和现在的4核CPU玩游戏,体验似乎并没有什么不同,也是一个有力的佐证。但事实是否如此?

(编辑:应用网_扬州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读