徐昌宇
3DMark是大家耳熟能詳?shù)娘@卡和系統(tǒng)游戲性能基準(zhǔn)測(cè)試軟件,一直以來(lái)其主要測(cè)試內(nèi)容都偏向圖形性能。不過(guò)近期3DMark推出了全新的CPU Profile測(cè)試模塊,專門用于考察CPU性能。這個(gè)測(cè)試包含哪些內(nèi)容?它是如何反映CPU性能的?又和CPU日常應(yīng)用的性能有多少相關(guān)性呢?今天本文就和你一起來(lái)了解這些內(nèi)容。
2014年,獨(dú)立產(chǎn)品安全認(rèn)證機(jī)構(gòu)Underwriters Laboratories(下簡(jiǎn)稱為UL)收購(gòu)了Futuremark。在收購(gòu)之后,U L宣布將加大在產(chǎn)品性能和測(cè)試領(lǐng)域的投入。隨后我們看到了3DMark、PCMark家族不但衍生出Android、iOS等不同版本,還擴(kuò)展到A I推理、照片編輯、視頻編輯、VR測(cè)試等大量不同類型的測(cè)試領(lǐng)域。而這次我們關(guān)注的目標(biāo)是新近推出的CPU Pr ofil e,它是3D M a rk家族中首次出現(xiàn)的專門針對(duì)CPU性能的測(cè)試模塊,它的一些算法和測(cè)試內(nèi)容非常有趣,值得探究。
價(jià)值29.99美元的測(cè)試模塊
目前3DMark已成為一個(gè)龐大的測(cè)試模塊的組合,UL宣稱其為“適合所有硬件的基準(zhǔn)測(cè)試”。3DMark現(xiàn)有3個(gè)版本,其中免費(fèi)版本只包含Tim eSpy、Night Raid和Fire Strike三個(gè)測(cè)試模塊,內(nèi)容非常有限。如果要體驗(yàn)最新推出的CPU Profile,用戶需要花費(fèi)29.99美元購(gòu)買進(jìn)階版3D Mark,該版本除了有前面提到的三個(gè)加上P o r tRoyal、Wild Life共五個(gè)圖形相關(guān)的測(cè)試模塊外,還包含一個(gè)壓力測(cè)試模塊以及5個(gè)獨(dú)立測(cè)試功能區(qū)域的功能測(cè)試組合,再就是CPU Profile了。第三個(gè)版本是面向商業(yè)用戶的,費(fèi)用較高,本文在這里就不贅述了。
用戶在購(gòu)買了進(jìn)階版的3DMark后,完成安裝并運(yùn)行它,就可在主界面點(diǎn)擊“更多測(cè)試”來(lái)選擇想要運(yùn)行的項(xiàng)目,其中就包含了本文的主角CPU Profile。但用戶還需要點(diǎn)擊下載并安裝這個(gè)測(cè)試模塊,才可以進(jìn)行相關(guān)測(cè)試。
3DMark CPU Profile:怎么測(cè)?
在CPU Profile的頁(yè)面可以看到一些簡(jiǎn)單的說(shuō)明,比如其提到“每個(gè)CPU Profile測(cè)試都是物理計(jì)算和自定義模擬的組合。為了避免測(cè)試受到渲染性能的限制,我們測(cè)量每幀的平均模擬時(shí)間,而不是幀率。這個(gè)指標(biāo)會(huì)被轉(zhuǎn)換為每個(gè)測(cè)試的分?jǐn)?shù)”。由此可知,CPU Profile和3DMark中的GPU測(cè)試有所不同。GPU測(cè)試一般是考察GPU每一秒鐘能夠輸出多少幀畫(huà)面,而CPU Profile則是考察CPU計(jì)算每一幀需要花費(fèi)多少時(shí)間。這個(gè)時(shí)間會(huì)通過(guò)算法轉(zhuǎn)換成統(tǒng)一的分?jǐn)?shù)。
在測(cè)試方式上,CPU Profile一共包含了6個(gè)測(cè)試項(xiàng)目,其內(nèi)容都是一樣的,差別在于每次測(cè)試啟用的CPU線程數(shù)量不同。它們所支持的C P U線程數(shù)量分別是當(dāng)前處理器支持的“最多線程”、16線程、8線程、4線程、2線程和1線程。其中,“最多線程”考察的是處理器的最強(qiáng)性能,如果是8核心16線程的CPU,那么這個(gè)測(cè)試的成績(jī)就和16線程測(cè)試的成績(jī)基本相同。從實(shí)際測(cè)試情況來(lái)看,由于測(cè)試內(nèi)容都是固定的,所以CPU所擁有的核心數(shù)量以及線程數(shù)量越多,測(cè)試速度就越快,測(cè)試分?jǐn)?shù)就越高。最慢的則是單線程測(cè)試,用一個(gè)CPU線程來(lái)渲染所有的測(cè)試畫(huà)面,需要等待較長(zhǎng)時(shí)間才能完成。
接下來(lái)看看CPU Profile的核心測(cè)試內(nèi)容和算法本質(zhì)。它的測(cè)試包含了150幀畫(huà)面,都是來(lái)自現(xiàn)實(shí)的游戲場(chǎng)景,但是完全不采用任何GPU渲染,而是全部通過(guò)CPU渲染。由于CPU相對(duì)G P U較小的計(jì)算規(guī)模和較低的計(jì)算能力,因此畫(huà)面分辨率被大幅度降低。CPU Profile主要涉及的是一個(gè)名為“Boids”,也就是類鳥(niǎo)群體的計(jì)算框架,這個(gè)框架很容易被并行化計(jì)算,因此較為適合考察單線程到多線程的性能變化情況。
在計(jì)算機(jī)科學(xué)中,Boi ds類鳥(niǎo)群模擬是一個(gè)經(jīng)典算法,它主要模擬大量物體的運(yùn)動(dòng),且包含一定規(guī)則。一般來(lái)說(shuō),B oid s模擬中的每個(gè)個(gè)體必須遵循三個(gè)規(guī)則:首先是個(gè)體不能離開(kāi)群體超過(guò)一定距離(不分離);其次是個(gè)體的運(yùn)動(dòng)模式相對(duì)群體中的其他單位是基本相近的(對(duì)齊);第三則是個(gè)體能夠充分顯示向群體移動(dòng)的平均位置移動(dòng)的期望(凝聚)。三個(gè)規(guī)則有些拗口,簡(jiǎn)而言之,就是我們經(jīng)常在天空中看到的群鳥(niǎo),呈現(xiàn)多變而有一定規(guī)律的運(yùn)動(dòng),單個(gè)鳥(niǎo)兒并不會(huì)輕易離開(kāi)鳥(niǎo)群,并且鳥(niǎo)群的整體移動(dòng)方向呈現(xiàn)隨機(jī)性。
Boids在實(shí)際的物理模擬中非常有用,除了鳥(niǎo)群外,魚(yú)群也基本遵循這一運(yùn)動(dòng)規(guī)律,因此它也常被游戲用來(lái)模擬魚(yú)群運(yùn)動(dòng)。如果對(duì)Boids模擬的數(shù)學(xué)參數(shù)中針對(duì)分離、對(duì)齊和凝聚的一些參數(shù)進(jìn)行調(diào)整的話,它還可以準(zhǔn)確地調(diào)整整個(gè)群體的運(yùn)動(dòng)狀態(tài),這也是其受歡迎的重要原因之一。
從模擬計(jì)算的角度來(lái)說(shuō),Boids模擬中的每個(gè)個(gè)體實(shí)際上都是獨(dú)立的,因此它可以和其他個(gè)體進(jìn)行并行計(jì)算。但是每個(gè)個(gè)體都需要了解周圍的環(huán)境以及其他個(gè)體的方向和位置,才能準(zhǔn)確地給出自己的下一步運(yùn)行方向。這意味著如果Boids模擬中個(gè)體數(shù)量越多,那么它們需要找到影響自己下一步運(yùn)動(dòng)方向和趨勢(shì)的其他個(gè)體也就越多。計(jì)算量會(huì)變得更大,并且這些數(shù)據(jù)也比較復(fù)雜,包含了不同個(gè)體之間的數(shù)據(jù)、運(yùn)動(dòng)的趨勢(shì)等,需要從緩存、內(nèi)存的多個(gè)存儲(chǔ)區(qū)域多次輪詢,并且?guī)缀跏请S機(jī)的,這相當(dāng)考驗(yàn)整個(gè)系統(tǒng)的計(jì)算能力。
由于Boids模擬的獨(dú)特性,它應(yīng)用的場(chǎng)合很多,這也使得其源代碼有多個(gè)版本。不過(guò)目前絕大部分Boids模擬都不采用CPU計(jì)算,因?yàn)镚 PU對(duì)這種并行計(jì)算擁有先天優(yōu)勢(shì),一些面向個(gè)人的Boids模擬GPU算法最大可以擴(kuò)展至65000個(gè)單位。在CPU Profile的Boids模擬中,一半個(gè)體采用了SSE3優(yōu)化的指令,另一半個(gè)體采用了AVX2優(yōu)化的指令。如果CPU不支持AVX2的話,那么會(huì)全部使用SSE3。
最后再來(lái)看看測(cè)試成績(jī)。由于所有測(cè)試都只模擬150幀,因此3DMark CPU Profile的總分算法是:總分=35000/平均幀時(shí)間。最終的成績(jī)報(bào)告和前文描述的6個(gè)測(cè)試一樣,CPUProfile將提供6個(gè)成績(jī)數(shù)據(jù),覆蓋不同線程的情況。
測(cè)試結(jié)果:數(shù)據(jù)全面還帶“激勵(lì)”
在運(yùn)行完相關(guān)測(cè)試后,CPU有多個(gè)版本。不過(guò)目前絕大部分Boids模擬都不采用CPU計(jì)算,因?yàn)镚 PU對(duì)這種并行計(jì)算擁有先天優(yōu)勢(shì),一些面向個(gè)人的Boids模擬GPU算法最大可以擴(kuò)展至65000個(gè)單位。在CPU Profile的Boids模擬中,一半個(gè)體采用了SSE3優(yōu)化的指令,另一半個(gè)體采用了AVX2優(yōu)化的指令。如果CPU不支持AVX2的話,那么會(huì)全部使用SSE3。
Profile會(huì)展示最終的性能結(jié)果頁(yè)面。頁(yè)面頂端分為三個(gè)部分,左側(cè)是處理器型號(hào),用戶可以在線比較自己的CPU和同樣使用該型號(hào)CPU的其他用戶所測(cè)得的性能。中間的6個(gè)數(shù)據(jù)則是6個(gè)不同測(cè)試的成績(jī)。右側(cè)則標(biāo)明了測(cè)試軟件名稱和版本號(hào)。下方還有溫度、CPU頻率、系統(tǒng)信息等內(nèi)容。
測(cè)試成績(jī)部分非常有趣。每個(gè)測(cè)試成績(jī)除了分?jǐn)?shù)外,還顯示一個(gè)灰色、綠色的數(shù)據(jù)條。這個(gè)數(shù)據(jù)條的綠色部分是當(dāng)前處理器的成績(jī),黑色的標(biāo)記豎線表示所有同型號(hào)處理器的中位數(shù)成績(jī),灰色的部分表示用戶可以通過(guò)超頻獲得的性能預(yù)期,可以看作“激勵(lì)”部分。
分?jǐn)?shù)中的常數(shù)“35000”是怎么來(lái)的?根據(jù)3DMark的說(shuō)明,“35000”是“時(shí)間常數(shù)70ms”乘以“分?jǐn)?shù)常數(shù)5000”。如果幀時(shí)間為70ms,那么最終結(jié)果可以得到5000分,實(shí)際上整個(gè)測(cè)試分?jǐn)?shù)就是CPU實(shí)際完成的時(shí)間相對(duì)70ms的倍數(shù)值,再和5000這個(gè)常數(shù)相乘的結(jié)果。其次,對(duì)游戲來(lái)說(shuō),應(yīng)該參考2線程、4線程或者8線程的性能(根據(jù)官方的描述),這樣復(fù)雜的機(jī)制增加了一般用戶考察處理器性能的難度:用戶究竟如何在這些數(shù)據(jù)中快速選擇自己想要的數(shù)據(jù)來(lái)考察最終的游戲性能呢?如果不是詳細(xì)閱讀本文的話,可能一般用戶都沒(méi)法看懂這個(gè)測(cè)試結(jié)果。
其他方面,3DMark CPU Profile還是做得不錯(cuò)的,包括提供了CPU溫度、頻率和不同測(cè)試的細(xì)節(jié)信息等,便于用戶比較和參考。
對(duì)3DMark CPU Profile的一些疑問(wèn):真的能反映游戲性能?
在了解了測(cè)試內(nèi)容、相關(guān)算法和測(cè)試結(jié)果后,本文對(duì)CPU Profile還有一些疑問(wèn):這個(gè)測(cè)試真的能反應(yīng)CPU在游戲中的性能嗎?
從3D Mar k的說(shuō)明來(lái)看,CPUProfile測(cè)試中不同的線程指代不同的應(yīng)用場(chǎng)景。比如1線程是原始的C P U性能考察;2線程和4線程適合《DOTA 2》《CS:GO》等DirectX9游戲;8線程則適合考察CPU在DiretcX12游戲中的性能情況,這一點(diǎn)和3D Mark TimeSpy相關(guān)聯(lián);16線程和更多的線程(如果有)考察的是計(jì)算性能,和游戲無(wú)關(guān)了。
從上述描述來(lái)看,CPU Profile似乎和游戲性能是相關(guān)的,正如3DMark中其他的圖形測(cè)試項(xiàng)目一樣,比如TimeSpy或者Fire Strike測(cè)試模塊。不過(guò)關(guān)鍵問(wèn)題在于,TimeSpy、Fire Strike的確是模擬現(xiàn)實(shí)世界游戲運(yùn)行方式的測(cè)試模塊,它們的技術(shù)應(yīng)用和性能呈現(xiàn)都和最終游戲性能高度相關(guān)。但在CPU Profile上,這一點(diǎn)卻存在疑問(wèn)。
CPU Profile中的CPU測(cè)試算法也就是Boids模擬實(shí)際上更傾向底層工作負(fù)載模擬而不是游戲工作負(fù)載模擬。在計(jì)算負(fù)載方面,一般來(lái)說(shuō),對(duì)Boids模擬這種計(jì)算,至少需要2000個(gè)未經(jīng)優(yōu)化的個(gè)體才能使得CPU的一個(gè)線程飽和,那么針對(duì)目前比較高端的8核心16線程處理器而言,如果需要使用Boids模擬來(lái)填充CPU算力的話,在算法盡可能優(yōu)化的情況下,則需要模擬50000~100000個(gè)個(gè)體。在實(shí)際的CPU Profile測(cè)試中,3DMark沒(méi)有給出模擬的個(gè)體數(shù)量,但是目測(cè)應(yīng)該在300個(gè)左右,這個(gè)數(shù)量顯然是不能充分填充CPU計(jì)算負(fù)荷的。另外,目前絕大部分游戲也不太使用Boids模擬來(lái)構(gòu)建游戲世界。即使使用了類似的模擬,一般也不會(huì)和人物角色進(jìn)行互動(dòng)。如果有互動(dòng)的話,不會(huì)使用這么多個(gè)體,這也從側(cè)面證明了CPU Profile在很大程度上不太能反映游戲中CPU的計(jì)算情況。
另外在測(cè)試方式的選擇上,CPUProfile選擇了150幀畫(huà)面進(jìn)行測(cè)試,無(wú)論CPU有多少線程,都是150幀畫(huà)面。這里存在另一個(gè)問(wèn)題,那就是如果CPU線程很多,并且支持類似頻率Boost的技術(shù),那么對(duì)多核心多線程的CPU而言,CPU Profile很難穩(wěn)定地反映一個(gè)處理器的性能。因?yàn)閷?duì)這類多核心處理器而言,150幀畫(huà)面可能幾秒鐘就完成了,這意味著CPU可以在非常短的時(shí)間窗口內(nèi)完成所有測(cè)試—這個(gè)時(shí)間窗口可以充分提高CPU頻率,甚至由于時(shí)間太短,CPU溫度還沒(méi)提升起來(lái)。但是在實(shí)際的游戲運(yùn)行中,C P U長(zhǎng)期處于高負(fù)載、高溫度的狀態(tài)下,CPU頻率應(yīng)該會(huì)穩(wěn)定在一個(gè)較低且比較小的范圍內(nèi),而不是較高的Boost頻率下。這意味著不同的測(cè)試條件、散熱溫度、測(cè)試時(shí)機(jī)都會(huì)影響到CPU Profile最后的性能呈現(xiàn),這使得CPU Profile的測(cè)試成績(jī)可重復(fù)性降低了。
3DMark官方也對(duì)這個(gè)問(wèn)題進(jìn)行了回復(fù)。他們認(rèn)為設(shè)計(jì)CPU Profil e的目的是降低測(cè)試流程的長(zhǎng)度,他們希望CPU Profile中8個(gè)線程的測(cè)試結(jié)果和Time Spy Extreme相關(guān),并且固定150幀的畫(huà)面意味著計(jì)算量是一致的。如果采用目前比較常見(jiàn)的固定測(cè)試時(shí)間來(lái)考察系統(tǒng)的計(jì)算數(shù)量的話(CPU Profile是固定計(jì)算數(shù)量考察計(jì)算完成時(shí)間),3DMark認(rèn)為可能性能較差的系統(tǒng)的計(jì)算量過(guò)少。但是這其實(shí)也說(shuō)不通,對(duì)于測(cè)試而言,只要多次重復(fù)穩(wěn)定且可以取得平均值計(jì)算的話,計(jì)算固定時(shí)間自然也是沒(méi)問(wèn)題的。對(duì)于為什么只設(shè)置150幀,3DMark認(rèn)為他們?cè)谶@個(gè)范圍內(nèi)可以保證工作負(fù)載能夠均衡地布置在所有的CPU線程上,如果超過(guò)的話可能會(huì)影響結(jié)果一致性。但實(shí)際上在游戲中,計(jì)算負(fù)載是不可能均衡地被放置在所有線程上的,這也是CPU Profil e的一個(gè)問(wèn)題。
所以,3DMark CPU Profile和游戲性能的相關(guān)性是存疑的。如果以更合理的角度來(lái)判斷,CPU Profile是3DMark建立的一個(gè)可以用于游戲性能評(píng)價(jià)的模擬機(jī)制,而不是一個(gè)識(shí)別CPU在游戲中性能呈現(xiàn)情況的測(cè)試工具。畢竟從“模擬機(jī)制”到“測(cè)試工具”,還有很長(zhǎng)的道路要走。
總的來(lái)說(shuō),3DMark CPU Profile的現(xiàn)有版本在CPU性能測(cè)試方面給出了不錯(cuò)的模擬機(jī)制,但是其采用的算法和測(cè)試方法,和它想要反映出的CPU游戲性能可能還存在差距,并且分?jǐn)?shù)結(jié)構(gòu)設(shè)計(jì)也讓人難以直接地了解到CPU的游戲性能。希望UL公司和3DMark開(kāi)發(fā)團(tuán)隊(duì)能在未來(lái)的時(shí)間中注意到這些問(wèn)題,并予以有針對(duì)性的改進(jìn)。