多核處理器有利於玩遊戲?用數據測試說話!
前些天的文章里不少人覺得關於處理器核心數量和遊戲之間關係這個話題比較有意思,但或許你心裡也有這樣的疑問:究竟當代遊戲對多線程有多麼的不依賴?空口無憑,用軟體跑一跑處理器佔用率來試試吧。
小胖選擇了文明6、最終幻想15、刺客信條起源這三款玩家應該都不少的遊戲(其實我是想多跑幾個遊戲的,但我們的華碩FX80在跑了這三個之後,無論如何都無法再穩定運行測試程序,只好作罷,當然,這只是調侃,不一定是筆記本的問題),其中文明6、刺客信條起源坊間傳聞對處理器要求很高,而在AMD新Ryzen處理器的測試里,刺客信條起源的核心利用率似乎也相當給力,那到底在i7 8750H這種6核12線程遊戲里,它們的表現是有多厲害呢?一款款來分析吧:
文明6,在小胖之前的測試里它的確算是多核心優化很好的一款遊戲,從2到4,再從4到6也都有相應的提升,但性能提升幅度並沒有與核心數量的增加呈線性關係,這說明優化並沒與想像中那麼好,實際上它在Benchmark中的負載如下:
圖1:柱狀圖橫軸表示線程數量,0就是空載,12就是6核12線程全負載。縱軸是負載時間,可以看到在文明6的243秒測試里,負載時間最長的是9-10線程,也就是4-5核,總計57秒左右。12線程全滿的時間幾乎可以忽視(1.18秒)。
圖2:內存綁定度總體高,但對多通道並不太敏感,內存吞吐多在7~8GB/s,測試用的單條8GB DDR4-2666勉強夠用。
圖3:向量指令利用率低,只有15.8%,主要也還是128bit的SSE,說明在文明6對8750H能提供的指令集並沒有特別感興趣。反倒是SISD(單指令單數據流)的標量指令佔用率很高,多線程優化的方式看來是比較簡單粗暴。
接下來是刺客信條起源,使用的依然是內置Benchmark:
圖1:200秒的測試里,2~4線程佔了50秒,9~12線程總計時間60秒,走勢很平,從這方面來看刺客信條起源也並不算一款多線程優化特別好的遊戲。
圖2:內存綁定度更高了,單通道已經成為瓶頸被標紅,內存吞吐量達到12GB/s以上
圖3:處理器的向量指令集使用率增加了,刺客信條起源的處理器指令優化相對要更現代一點。
但如果是使用AMD Ryzen 5 2600X測試刺客信條起源benchmark,可以用盡6核12線程(如上圖),成績驚人,但這裡其實是有作弊嫌疑的,因為在正常遊戲而非benchmark中,8核並不會比6核甚至4核來得更有優勢。這主要因為Benchmark的場景是固定編程,只要做好先期優化,分支預測命中率非常高,邏輯單元可以完全發揮性能。
其實這也是處理器很難在遊戲中發揮多線程的原因之一,畢竟一個數學教授做8道題的速度不一定會比8個中學生同時做8道題慢,因為預測、解碼、回寫、指令發送、I/O等等都需要精細度很高的優化,很容易前一發動全身,一步走錯全盤打亂……再加上遊戲公司哪有那麼多工夫做線程優化,跳票了誰負責?所以大多都只是做了個基本的多線程優化差不多就行了,而且隨著核心數量越多,優化就越困難。對於遊戲而言最重要的秘訣其實英特爾已經告訴你了:狂刷單雙四核睿頻,現階段這思路無疑是正確的。
AMD取了個巧,只在刺客信條起源這麼短短不到3分鐘的Benchmark里做了多核優化,所以跑出來成績上了天,但對實際遊戲卻沒有意義。
GPU不同,作為非常純粹的SIMD叢集,要做的工作就是最簡單粗暴的並行計算——這自然需要堆積多內核。遊戲最重要的畫面渲染是由GPU完成,而這個過程也是遊戲研發的核心之一,所以GPU在遊戲中權重更高。玩遊戲第一是看GPU,CPU方面只要保證四核,睿頻夠高就OK!
第三個遊戲:最終幻想15。之前小胖測了它其實四核成績最好,但缺乏數據解讀,那麼接下來就是:
圖1:因為跑的是Benchmark版,所以其實它不需要經歷前面兩款「進遊戲、打開Benchmark」的這段閑置過程,直接跑的就是測試全程,可以看到處理器數量的佔用率是非常低的,410秒的測試里足足有近200秒是雙線程在跑,3線程有46秒,除此之外最多的就是8線程的28秒了,換句話說最終幻想15就是不折不扣的頻率大過天。
這兒還可以簡單說說測試軟體的問題:因為任務管理器或HWinfo等軟體只能讀取線程佔用率,打開它們看到的是全部線程都在工作,只是幅度不同。但這是在整個Windows系統下的負載,無法分析具體的遊戲應用里主要負載計算工作的線程數有多少,也沒有辦法查到它所使用的具體指令集,因此只看這些軟體是無法獲知正確信息的。
圖2:最終幻想15的內存綁定呈山脊狀,分布比較均勻,但8GB內存顯然還是拖了後腿,盡量上更大容量更多通道吧。
圖3:向量指令使用率尚可,作為主機移植大作,最終幻想15的優化策略其實依然可以看出主機思維——少數線程高頻刷整數、單精度浮點最大化。
雖然沒有列舉一些最新的例子,比如遠哭5之類的,但結果應該也都差不多,這些遊戲對CPU的優化方向,與CPU自身的發展方向存在差異,所以多核很難在遊戲中真正體現出與規模增長相對應的性能增幅。
此前也提到了Cinebench,R15雖然是最新版,但實際上也是很久都沒更新了,因為有CPU渲染測試,所以經常被各種媒體視為評判處理器性能高下的核心成績,實際看看它的CPU和內存佔用:
首先,確實可以讓8750H的11~12個線程基本跑滿,所以在負載調用上是沒問題的。但它的緩存綁定卻存在一定的問題,L2L3有大量時鐘都處於等待取回數據的掛起狀態,這有一種可能就是Cinebench R15的測試數據塊偏大,指令步長又偏長,已經接近緩存本身大小(L2=6X256KB,L3=6X1.5MB),因為共用寄存器,所以數據塊和指令形成空間衝突,需要調用更低級別的存儲單元,形成性能浪費……
Cinebench R15的處理器測試只調用了25.1%的向量指令,而且主要是128bit的SSE,標量倒是上到了95.8%,這說明它的測試方法比較老,讓新指令集無處發揮。
那麼能用到新指令集的測試程序有哪些呢?簡單介紹一個:y-cruncher,支持多線程和最新指令集的圓周率計算器。它的數據量非常大,10億位小數點的計算需要4.81GB的空閑內存,我跑了5億位的測試,核心佔有率和內存吞吐如下:
單通道8GB內存還是太捉急了,但基本能用盡11~12線程,所以跟R15一樣至少是可以讓全部核心真正忙起來的。但都是忙起來,用的工具不同自然性能表現不同,對於英特爾處理器來說,y-cruncher的意義在於向量指令的利用率:
100%!而且全是256位AVX和FMA,2.2~2.4GHz運行的8750H加單通道8GB DDR4-2666內存,5億位的成績是66.79秒,這個頻率說實話發揮不出8750H的全部實力,但也比較有代表性了。4核8線程,2.9GHz的至強E3-1535M v5搭配16GB內存參考成績是56.56秒左右。
總結:衡量性能沒有統一的標準,即便是對於GPU來說,遊戲也是更看重單精度浮點,這是當年Maxwell砍雙精度提單精度的原因,而科學計算就更需要雙精度,深度學習甚至有用到半精度。雖然遊戲性能一貫是NVIDIA領先,但如果論挖礦,峰值浮點和Hash性能AMD又可以超越NVIDIA。所以只用一個R15就決定處理器性能高低?這種說法顯然是不負責的。
對於當下,甚至可以說是未來很長一段時間的PC遊戲來說,多核都無法直接轉化為幀速上的優勢,一則GPU才是決定幀速的核心;二則多線程優化的時間、人力、經濟成本都太高,頂多是固定渲染的Benchmark優化一下,正常遊戲里滿打滿算就是四核優化,未來也很難會發生改變。不過現在的多核處理器也伴隨高睿頻而來,比如8750H的雙核在遊戲中可跑到近4GHz,四核也能接近3.9GHz,這是7700HQ不能比的,所以在散熱不是問題的前提下,頻率可以高數值穩定才是選8代的理由,如果單純按核心就說49年入國軍的話,那今年咱們都別買了,因為英特爾8核就要來了,但看完本文的你還會這樣想么?
PS:遊戲之外的日常應用,6個以上的核心也不會有特別大的作用,但如果有同時多開應用程序、視頻渲染、RAW照片後期、各類工科設計需求,那多核還是有用的。
推薦閱讀: