ITBear旗下自媒體矩陣:

多核打游戲反而更慢?談CPU和游戲優(yōu)化那點(diǎn)事

   時(shí)間:2019-07-28 10:18:47 來源:太平洋電腦網(wǎng)編輯:星輝 發(fā)表評(píng)論無障礙通道

隨著AMD銳龍的橫空出世,電腦CPU進(jìn)入了多核震懾的時(shí)代。

同一系列的產(chǎn)品,核心翻倍已經(jīng)司空見慣,有爆料顯示Intel下一代CPU的i3將會(huì)配備4核8線程——這樣的CPU,三年前它的名字叫i7。

而在高端系列中,核戰(zhàn)更是令人心驚膽戰(zhàn),在售的AMD銳龍3900X的12核24線程已經(jīng)足以令人倒吸一口涼氣,而即將上市的3950X更是配備了16核24線程,數(shù)框框愛好者們紛紛表示把持不住,高呼yes根本停不下來。

然而多核CPU打游戲一定會(huì)更快嗎?不一定。排除頻率、架構(gòu)IPC的差異,某些情況下多核CPU打游戲甚至?xí)?mdash;—例如在某些情況下,AMD的12核新品3900X,某些游戲中要比8核的3700X更慢。

有測(cè)試顯示,核心更多、頻率更高的3900X在某些情況游戲表現(xiàn)不如3700X

有測(cè)試顯示,核心更多、頻率更高的3900X在某些情況游戲表現(xiàn)不如3700X

要知道從規(guī)格來看,3900X全面壓倒3700X,且不說核心多了四個(gè),連頻率也更高(3.8/4.6GHz vs 3.6/4.4GHz),3級(jí)緩存也翻了倍(64MBvs32MB),那為什么會(huì)出現(xiàn)多核玩游戲更慢的情況?

今天就從這個(gè)現(xiàn)象出發(fā),談?wù)凜PU和游戲優(yōu)化的那點(diǎn)事吧。

游戲的多核優(yōu)化有多難?

我們就先從游戲?qū)Χ嗪诵牡膬?yōu)化談起吧。談?dòng)螒虻膬?yōu)化,就繞不開對(duì)多核的支持。什么游戲?qū)Χ嗪藘?yōu)化好、什么游戲只能一核有難、多核圍觀,一直是玩家們津津樂道的話題。

為什么游戲在對(duì)多核心的優(yōu)化上會(huì)出問題,而視頻壓縮等應(yīng)用就能充分利用多核心?這和游戲的運(yùn)行機(jī)制有關(guān)。

為何游戲喜歡用單核心?

視頻壓縮這類任務(wù)可以輕易做到并行計(jì)算,例如一個(gè)線程壓縮某個(gè)片段,另一個(gè)線程壓縮另一個(gè)片段,多核一起運(yùn)作,最后壓縮完成所有片段,完整視頻也就壓縮完成了。

而游戲的運(yùn)行一般都是線性的,某一步的運(yùn)算往往會(huì)和上一步息息相關(guān),很難充分利用多個(gè)線程。

例如在FPS游戲中,某個(gè)玩家被擊中產(chǎn)生傷害,那么這個(gè)傷害結(jié)果和子彈運(yùn)行軌跡有關(guān),需要先計(jì)算出子彈軌跡然后才能計(jì)算出傷害,這只能在一條線程中先后完成,無法通過多線程同時(shí)計(jì)算子彈軌跡和傷害。

游戲想要充分利用多核,需要巧妙地將計(jì)算任務(wù)拆分成為多線程,例如不同的線程負(fù)責(zé)物理碰撞、AI行為等,技術(shù)門檻比較高,也得下更多功夫?;诖耍壳叭杂写罅坑螒蛭茨艹浞掷肅PU的所有核心。

支持多核心一定優(yōu)化好嗎?

隨著時(shí)代的發(fā)展,越來越多游戲愿意在多線程優(yōu)化上做出努力。

例如前幾年,我們經(jīng)??梢钥吹?ldquo;i3默秒全”的情況,而現(xiàn)在的游戲大作已經(jīng)將門檻提升至4核,雙核i3已經(jīng)難堪大任。

但盡管如此,仍會(huì)出現(xiàn)12核3900X表現(xiàn)不如8核3700X的情況,這又是為何?

出現(xiàn)這種情況,主要在于CPU核心調(diào)度不合理。銳龍的架構(gòu)比較特殊,每4個(gè)核心封裝成為一個(gè)CCX,每?jī)蓚€(gè)CCX封裝為一個(gè)CCD,核心和核心之間的通訊,可以跨CCX,乃至跨CCD,而無論是CCX還是CCD之間通信,都存在延遲。

換言之,如果一個(gè)程序能夠調(diào)用多個(gè)核心,會(huì)出現(xiàn)以下幾種情況。

1、調(diào)用的多核心處于同一CCX內(nèi),延遲最小;

2、調(diào)用的多核心跨CCX,但處于同一CCD內(nèi),有所延遲;

3、調(diào)用的多核心跨CCX、跨CCD,延遲最大

例如一個(gè)游戲可以調(diào)用4個(gè)核心,最理想的情況自然是調(diào)用同一CCX內(nèi)的4核,這樣能獲得最好的性能。

但實(shí)際上,代碼對(duì)多核心的調(diào)用不一定這么智能,很有可能不能辨認(rèn)出哪些核心位于同一CCX上。于是,游戲可能會(huì)調(diào)用位于不同CCX、CCD的多個(gè)核心,產(chǎn)生的額外延遲導(dǎo)致性能有所損失。

知道了這些,就可以解釋為什么有時(shí)候3900X的游戲表現(xiàn)有時(shí)候還要低于3700X了。3900X封裝了兩個(gè)CCD,每個(gè)CCD內(nèi)有兩個(gè)CCX,每個(gè)CCX有4核心,原生共4x2x2=16核心,屏蔽了4核心后得12核。

而3700X則只有一個(gè)CCD,內(nèi)含兩個(gè)CCX,共4x2=8核。可見,3900X比3700X多了一個(gè)CCD,多了一種可能產(chǎn)生額外延遲的情況,如果游戲不能發(fā)揮出3900X的多核心優(yōu)勢(shì),那么3900X表現(xiàn)略遜于3700X也就在情理之中了。

因此,即使游戲?qū)Χ嗪诉M(jìn)行了優(yōu)化,但在核心調(diào)度方面,也需要另外下更多功夫,才能取得最佳性能。

很高興的是,微軟已經(jīng)意識(shí)到了相關(guān)問題,在Windows 10 1903中做出了優(yōu)化,系統(tǒng)會(huì)優(yōu)先調(diào)度處于同一CCX內(nèi)的核心,避免跨CCX造成的延遲。

如果你想要更好地發(fā)揮AMD Ryzen處理器的性能,升級(jí)到Windows 10 1903還是很有必要的。

2CPU單核性能真的在擠牙膏?CPU單核性能真的在擠牙膏?有人認(rèn)為,目前CPU已經(jīng)很難從頻率上做性能突破,架構(gòu)亦難以進(jìn)一步提升效率,堆核是性能進(jìn)步的唯一之道。

有的朋友從Intel的“擠牙膏”中論證這一觀點(diǎn),認(rèn)為CPU的同頻性能已經(jīng)多年止步不前,而AMD的Zen2架構(gòu)盡管效率相對(duì)于前代大幅提升,但也只是追上競(jìng)爭(zhēng)對(duì)手的水平而已。

用數(shù)年前的4核CPU和現(xiàn)在的4核CPU玩游戲,體驗(yàn)似乎并沒有什么不同,也是一個(gè)有力的佐證。但事實(shí)是否如此?

實(shí)際上,這種觀點(diǎn)是片面的。之所以數(shù)年前的CPU在某些測(cè)試、某些游戲中表現(xiàn)尚可,是因?yàn)檫@些測(cè)試、游戲并沒有針對(duì)新CPU的指令集作出優(yōu)化。

近年來,新款CPU的一大價(jià)值在于增加了AVX、AVX2、TSX等指令集。

如果代碼調(diào)用了相應(yīng)指令集,能更高效地利用FMA這樣的浮點(diǎn)加乘混合單元,減少CPU流水線的閑置,性能表現(xiàn)可以獲得可觀的提升。

這些都可是近十年間陸續(xù)增加的指令集,不是說沒有堆核就是擠牙膏

這些都可是近十年間陸續(xù)增加的指令集,不是說沒有堆核就是擠牙膏

以著名的渲染軟件Cinebench為例,這是DIY玩家都相當(dāng)熟悉的CPU測(cè)試工具。

最新版的Cinebench R20對(duì)比舊版的Cinebench R15,一大改進(jìn)就是加入了AVX指令集的支持。

在CPU對(duì)AVX指令集有較好支持的情況下,同樣的渲染項(xiàng)目,在Cinebench R20中跑,速度甚至要比Cinebench R15快一倍以上!新型指令集對(duì)性能的提升之巨,由此可見一斑。

Zen2的單核性能進(jìn)步如此大,很大程度上是因?yàn)锳VX2性能大幅提高

Zen2的單核性能進(jìn)步如此大,很大程度上是因?yàn)锳VX2性能大幅提高

支持AVX或更新的指令集已經(jīng)在渲染、視頻壓縮、科學(xué)計(jì)算等專業(yè)領(lǐng)域中漸漸成為常態(tài),著名的Linux發(fā)行版Fedora 32甚至計(jì)劃不支持沒有AVX指令集的CPU。

然而,仍有大量游戲未跟進(jìn)AVX等新指令集,只支持老的SSE,新CPU跑這些游戲自然和舊款CPU沒有太大區(qū)別。在指令集支持方面,游戲?qū)PU仍缺乏應(yīng)有的優(yōu)化。

著名的游戲性能測(cè)試組件3DMark已經(jīng)意識(shí)到了這點(diǎn)。在新的Time Spy Extreme測(cè)試項(xiàng)目當(dāng)中,加入了AVX、AVX2乃至AVX512指令集支持,調(diào)用AVX512指令集跑分,成績(jī)對(duì)比SSE3跑出來的分?jǐn)?shù)高了一倍有余。

AVX等新指令集在實(shí)際游戲中意義也變得越來越重大,例如《刺客信條:奧德賽》甚至不支持沒有AVX指令集的CPU(因?yàn)樘みM(jìn),后來不得不重新兼容老CPU)。

又例如某些使用了D加密的游戲需要FMA3指令集才能正確解密運(yùn)行,早年的“神U”E1230 v2只能干瞪眼;如果你是PS3模擬器玩家,也有切身體會(huì)過TSX指令集下性能的飛躍。

總體而言,大部分游戲在指令集方面的優(yōu)化做得依然不夠,在缺乏指令集優(yōu)化的情況下,舊CPU和新CPU的游戲表現(xiàn)拉不出太大差距。

但支持新指令集是游戲?qū)PU優(yōu)化中無法規(guī)避的環(huán)節(jié),活用新指令集才能彰顯新款CPU應(yīng)有的價(jià)值,希望有更多游戲?qū)π碌腃PU指令集作出優(yōu)化吧。

后話

無論是增加CPU核心多線程,還是使用新型指令集提升SIMD性能,都可以大大增強(qiáng)CPU的性能。

就消費(fèi)市場(chǎng)而言,AMD似乎更多地走了多核路線,而Intel則致力于推行新指令集。但無論是哪種發(fā)展方向,都需要相應(yīng)的軟件對(duì)此作出優(yōu)化,才能發(fā)揮出CPU應(yīng)有的性能。

現(xiàn)在早已經(jīng)不是不改一行代碼就能發(fā)揮出新CPU的全部性能的時(shí)代,多核心和先進(jìn)指令集,限于匱乏游戲支持的現(xiàn)狀,都不得不淪為“戰(zhàn)未來”。

CPU并沒有在“擠牙膏”,游戲?qū)PU的優(yōu)化也遠(yuǎn)未到盡頭,希望未來我們能看到更多能發(fā)揮出CPU真正功力的游戲吧。

舉報(bào) 0 收藏 0 打賞 0評(píng)論 0
 
 
更多>同類資訊
全站最新
熱門內(nèi)容
網(wǎng)站首頁  |  關(guān)于我們  |  聯(lián)系方式  |  版權(quán)聲明  |  網(wǎng)站留言  |  RSS訂閱  |  違規(guī)舉報(bào)  |  開放轉(zhuǎn)載  |  滾動(dòng)資訊  |  English Version