N/A之戰(zhàn)新領(lǐng)地 DirectX 12初窺解析
- 來(lái)源:微型計(jì)算機(jī) smarty:if $article.tag?>
- 關(guān)鍵字:DirectX 12,黑盒,《魔獸世界》 smarty:/if?>
- 發(fā)布時(shí)間:2015-12-25 14:48
DirectX 12發(fā)布已經(jīng)有一段時(shí)間了,隨著Windows 10的快速推進(jìn),DirectX 12成為很多玩家電腦上的標(biāo)配。那么DirectX 12到底有哪些改進(jìn),哪些顯卡才能支持DirectX 12,目前N卡和A卡對(duì)DirectX 12的支持力度如何?今天我們就和大家一起來(lái)探討一下這個(gè)問(wèn)題。
DirectX 12新特性技術(shù)解析
微軟的DirectX幾乎是整個(gè)3D圖形業(yè)界的基石,在3D游戲上這一點(diǎn)表現(xiàn)得更為明顯。在之前的發(fā)展過(guò)程中,DirectX經(jīng)歷了多次功能升級(jí),帶來(lái)了T&L、頂點(diǎn)和像素流水線、統(tǒng)一流水線、幾何處理器、通用計(jì)算API、曲面細(xì)分等等大量全新的功能,DirectX在發(fā)展中不斷地解除GPU的應(yīng)用限制并將GPU的功能性和應(yīng)用范圍推向一個(gè)全新的高度?,F(xiàn)在,程序員和美術(shù)人員更多考慮的不是采用哪些方法來(lái)實(shí)現(xiàn)圖形圖像,而是哪些方法可以更好地呈現(xiàn)畫面,因?yàn)镈irectX的“工具庫(kù)”有太多的選擇(當(dāng)然最常用、最值得宣傳的就那么幾種),比如AO就有SSAO、HBAO、HDAO等多種計(jì)算方式。
在大量的資源面前,人們發(fā)現(xiàn)這樣一個(gè)問(wèn)題:GPU已經(jīng)能做很多事情了,但是它不能很有效率地做這些事情。這樣GPU最多算是“多面手”而不是“高效多面手”。由于之前的技術(shù)限制等原因,DirectX在和硬件配合時(shí),很難徹底展示出硬件的效能。于是,微軟在2013年宣布,DirectX將升級(jí)到最新的版本DirectX 12,并加入大量改善底層效率的設(shè)計(jì),不再將重點(diǎn)放在改善圖形效果上。當(dāng)然,全新的DirectX 12肯定會(huì)在各大廠商的游戲引擎中帶來(lái)很多新的應(yīng)用,不過(guò)從硬件角度來(lái)說(shuō),沒(méi)有太多的新圖形效果出現(xiàn)。
好了,言歸正傳,下面我們來(lái)看看,新的DirectX 12能在圖形上帶來(lái)哪些特別重要的改進(jìn)。
DirectX 12的核心變化——全新的底層渲染改進(jìn)
說(shuō)起“底層渲染”,就不得不提到一個(gè)問(wèn)題—多線程化。
目前的CPU都是多核心的,支持多線程運(yùn)作。在DirectX中,GPU接受CPU傳輸過(guò)來(lái)的數(shù)據(jù),在計(jì)算后再將這些數(shù)據(jù)返還給CPU,這個(gè)過(guò)程可看做一個(gè)“黑盒”:用戶從盒子的一端輸入數(shù)據(jù),API幫用戶處理完成后從盒子的另一端輸出數(shù)據(jù),至于中間發(fā)生了什么,那只有API自己知道—因?yàn)檫@個(gè)過(guò)程只受API本身控制,圖形程序、游戲引擎都無(wú)法染指??雌饋?lái)這個(gè)過(guò)程比較簡(jiǎn)單明了,但關(guān)鍵之處來(lái)了:這個(gè)“黑盒”過(guò)程多線程化目前來(lái)看非常糟糕,由于存在相關(guān)性等問(wèn)題,程序無(wú)法判斷哪些應(yīng)用在前,哪些應(yīng)用無(wú)關(guān),哪些可以并行化,因此絕大部分情況下都只能以單線程的方式運(yùn)作。在之前DirectX 9甚至DirectX 10時(shí)代還好,因?yàn)镃PU的性能依舊處于快速增長(zhǎng)中,無(wú)論是頻率還是單核心性能。但是隨著技術(shù)發(fā)展,并行化的GPU的性能增長(zhǎng)速度遠(yuǎn)遠(yuǎn)超過(guò)了串行化的CPU單核心性能的增長(zhǎng)速度,這就導(dǎo)致很多情況下GPU受制于單線程的CPU,性能無(wú)法全部發(fā)揮。
這樣一來(lái),我們看到GPU性能在快速增長(zhǎng),但是其接受到的從CPU端發(fā)出的Draw Call繪制指令卻一直沒(méi)有爆發(fā)性、突破性的增長(zhǎng)。只是慢吞吞的隨著每代CPU增長(zhǎng)一部分。這種情況對(duì)一些重GPU負(fù)載的游戲來(lái)說(shuō),還不算太難受,因?yàn)橹谿PU負(fù)載的游戲大量的時(shí)間都耗費(fèi)在GPU的各個(gè)部分中,還算可以接受。但是對(duì)重CPU負(fù)載的游戲來(lái)說(shuō),就變得非常難平衡—大量的負(fù)載壓在CPU上,多核心的CPU只有單線程在和GPU溝通,整個(gè)CPU- GPU溝通開銷非常大,典型的例子就是《魔獸世界》這樣的網(wǎng)游,在人和物體太多的場(chǎng)景下,CPU根本無(wú)法做到多核心滿載,龐大的計(jì)算量使得CPU少數(shù)幾個(gè)線程的壓力暴增,最終幀數(shù)跌落至甚至只有20fps。
現(xiàn)在問(wèn)題很清楚了,DirectX目前在CPU- GPU體系的計(jì)算開銷方面出現(xiàn)了問(wèn)題,“黑盒”模式是主要原因。這個(gè)時(shí)候就需要底層渲染出場(chǎng)了。
什么是底層渲染呢?這個(gè)時(shí)候需要拿出游戲主機(jī)來(lái)舉例。很多玩家看到游戲機(jī)就會(huì)想到,雖然主流游戲機(jī)價(jià)格只有不到3000元,配置也只是兩三前的電腦配置,為何其畫面質(zhì)量和效果都和當(dāng)期的PC游戲持平?這里面存在兩個(gè)原因,其中一個(gè)原因是游戲機(jī)可以在畫面上做很多“取巧”的手段,使得畫面“看起來(lái)”很精美,另外,游戲機(jī)所使用的底層渲染方式,使得游戲機(jī)不太存在CPU- GPU的計(jì)算開銷。游戲主機(jī)往往使用不一樣的API來(lái)溝通CPU和GPU,程序開發(fā)人員需要在更接近硬件底層的層面來(lái)調(diào)配CPU和GPU,這里程序自動(dòng)處理的部分就會(huì)少很多。這樣就很明確了—所謂底層渲染,就是將“黑盒”模式放棄,將這個(gè)過(guò)程開放給程序員,使得程序員來(lái)判斷任務(wù)應(yīng)該如何執(zhí)行,同時(shí)CPU多線程就能被很好地運(yùn)作起來(lái)。比如在大量單位的場(chǎng)景中,不同分組的單位之間不存在交互的話,那么這些不同的分組可以被分派在不同的CPU上,大幅度提高GPU的處理速度和效率。
底層渲染的出現(xiàn),使得程序員能夠更為接近CPU和GPU本身,能夠更為徹底地釋放CPU和GPU的潛能。在目前的很多測(cè)試中,底層渲染的都帶來(lái)了CPU-GPU系統(tǒng)繪制執(zhí)行幾倍甚至數(shù)十倍的提升。雖然,這樣的提升最終不太可能反映在游戲中,只能是紙面上的數(shù)據(jù),但是這也從一個(gè)側(cè)面說(shuō)明DirectX12對(duì)資源的利用效率更高了。
DirectX 12的計(jì)算改進(jìn)—異步計(jì)算的出現(xiàn)相比之前比較難以理解的底層渲染而言,異步計(jì)算(Async Compute)算是一個(gè)比較方便理解的概念。
提起異步計(jì)算,那么肯定有所謂的“同步計(jì)算”。在之前的DirectX中,當(dāng)數(shù)據(jù)或者指令進(jìn)入GPU時(shí),GPU或者驅(qū)動(dòng)程序需要先為這些任務(wù)分類,比如分成“數(shù)據(jù)組1”和“指令組1”等其他什么名稱,然后根據(jù)先來(lái)后到將一樣類型的任務(wù)排在一組隊(duì)列中,不同的任務(wù)組成不同的隊(duì)列,再進(jìn)行“搶占式”的處理—搶到了就先處理,搶不到就后面等著吧。
之所以將數(shù)據(jù)類型或者指令類型的任務(wù)排在一起處理,是因?yàn)镚PU在不同的任務(wù)模式下需要切換,切換過(guò)程需要耗費(fèi)一定的時(shí)間。如果所有的任務(wù)不加以排序和處理,GPU不斷地切換過(guò)來(lái)切換過(guò)去,效率會(huì)大幅度下降。
“同步計(jì)算”解決了GPU計(jì)算不同任務(wù)時(shí)的效率問(wèn)題,不過(guò)也帶來(lái)了任務(wù)的互相等待問(wèn)題。因?yàn)橐獙?duì)不同的任務(wù)進(jìn)行排序、搶占,那么一些緊急卻數(shù)量較少的任務(wù)有可能難以搶到GPU資源,不得不被迫等待,降低了系統(tǒng)效率。在這種情況下,異步計(jì)算就做得很好。異步計(jì)算不需要排隊(duì)也不需要等待,數(shù)據(jù)或者指令來(lái)了直接根據(jù)先來(lái)后到處理就好,核心原因是GPU不再需要切換數(shù)據(jù)狀態(tài)或者指令狀態(tài)。既然不需要切換,那么來(lái)了就處理就變得理所應(yīng)當(dāng)。
異步計(jì)算的出現(xiàn),在很大程度上減輕了GPU端處理數(shù)據(jù)的延遲,使得所有數(shù)據(jù)能夠基本做到“隨來(lái)隨走”,提高了效率。
DirectX 12的功能增強(qiáng)—大量全新功能
底層渲染和異步計(jì)算,可以算是DirectX 12的核心改進(jìn)。除此之外,DirectX還帶來(lái)了大量的全新功能。
DirectX 12支持無(wú)綁定(bindless)功能。這個(gè)功能實(shí)際上在DirectX 11.1中就存在,不過(guò)在DirectX 12中大幅度提升了應(yīng)用范圍。無(wú)綁定功能主要是指之前著色和紋理的綁定功能,一組著色代碼只能針對(duì)128組紋理。不過(guò)在DirectX 12中,這個(gè)限定被取消了,一組著色代碼可以針對(duì)任意組紋理,這就提升了可以被同事處理的紋理數(shù)據(jù),并且降低了著色代碼被重復(fù)執(zhí)行的幾率,也降低了CPU占用了,提升了GPU占用率。
除了無(wú)綁定這個(gè)比較重要的特性外,DirectX 12還加入了諸如平鋪資源(Tiled Resoure)、歸類UAV訪問(wèn)、立體平鋪資源(Volume Tiled Resources)、保守光柵(Conservative Rasterization)、光柵順序視圖(Raster Order Views)等功能,這些功能主要是用于提高計(jì)算效率,降低計(jì)算瓶頸,本身并沒(méi)有帶來(lái)太多圖形特效,因此簡(jiǎn)單了解即可。此外,DirectX 12還加入了對(duì)不同GPU的并行計(jì)算支持,也是目前的一大亮點(diǎn)。
英偉達(dá)和AMD顯卡對(duì)DirectX 12的支持情況
大概了解了DirectX 12的相關(guān)技術(shù)改進(jìn)后,我們?cè)賮?lái)看看顯卡對(duì)DirectX 12的支持情況。
目前DirectX 12有兩個(gè)支持等級(jí),分別是DirectX 12Feature Level 12_1和DirectX 12Feature Level 12_0。其中前者支持DirectX 12全部特效,后者支持部分特效。需要注意的是,每個(gè)等級(jí)中每個(gè)支持的特效又有等級(jí)之分。比如資源綁定有Tier 1、Tier 2和Tier 3之分,等級(jí)越高肯定越好,比如Feature Level 12_0就需要資源綁定的Tier2、平鋪資源的Tier 2以及歸類UAV訪問(wèn)的Tier 1。Feature Level 12_1需要光柵的Tier 1和光柵順序貼圖的支持,后者是為VR時(shí)代所準(zhǔn)備的。
從顯卡角度來(lái)說(shuō),由于DirectX 12核心的底層渲染只是軟件架構(gòu)上的改進(jìn),因此只要GPU支持DirectX 11基本上就可以完整支持,這也是能夠帶來(lái)性能提升最主要的部分。但是對(duì)一些特殊的內(nèi)容則支持情況各異。實(shí)際上,大家不必太過(guò)于在乎DirectX 12顯卡的功能支持問(wèn)題,因?yàn)镈irectX 12中很多功能內(nèi)容都是可選支持,并且只是改善性項(xiàng)目,并非強(qiáng)制支持和功能性項(xiàng)目,這就意味著無(wú)論顯卡支持還是不支持,理論上來(lái)說(shuō)對(duì)最終呈現(xiàn)的游戲畫面并沒(méi)有太大影響,當(dāng)然,如果游戲引擎或者開發(fā)商做出了特殊的選擇,那就很難預(yù)計(jì)了。
我們可以根據(jù)顯卡圖形核心的分類等級(jí)來(lái)判斷自己的顯卡是否支持DirectX 12。
目前,對(duì)DirectX 12支持等級(jí)最高、最完善的顯卡只有Maxwell2.0架構(gòu)的諸如GTX 980 Ti、TITAN X、GTX 960等顯卡了,其支持等級(jí)為DirectX 12Feature Level 12_1,其余的顯卡包括Maxwel 1.0、GCN 2.0都只能支持到DirectX 12Feature Level 12_0,再老舊一些的顯卡包括Fermi、Kepler、GCN 1.0等,都只能支持DirectX 12Feature Level 11_1。不過(guò)也不要小看GCN 1.0架構(gòu),它完整支持11_1,也就意味著,這些相對(duì)老舊的顯卡事實(shí)上也能完整支持底層渲染,也就是說(shuō),這些顯卡在運(yùn)行DirectX 12游戲時(shí),整體效率上會(huì)有很大提升。
Tips:英偉達(dá)顯卡對(duì)異步計(jì)算的支持
最近有一件事情鬧得沸沸揚(yáng)揚(yáng),就是英偉達(dá)支持DirectX 12的顯卡對(duì)異步計(jì)算支持的問(wèn)題。一些消息稱(主要消息來(lái)源是游戲開發(fā)商),英偉達(dá)旗下Maxwell架構(gòu)顯卡不能支持DirectX 12中很重要的異步計(jì)算功能。
從驅(qū)動(dòng)以及游戲開發(fā)角度來(lái)看,Maxwell架構(gòu)可能對(duì)異步計(jì)算支持不夠完善,因?yàn)樽钚孪@示,在開發(fā)過(guò)程中Maxwell架構(gòu)并不能直接開啟異步計(jì)算功能并實(shí)現(xiàn)完整的支持,而是建議游戲開發(fā)商使用傳統(tǒng)模式(雖然這樣對(duì)性能也沒(méi)有太大影響)。反觀AMD,GCN 架構(gòu)對(duì)異步計(jì)算支持很到位,硬件和軟件都完全符合DirectX 12規(guī)范,程序員可以直接調(diào)用。對(duì)這個(gè)問(wèn)題,目前英偉達(dá)官方?jīng)]有明確的回應(yīng),只是說(shuō)硬件架構(gòu)上Maxwell完全支持異步計(jì)算,驅(qū)動(dòng)方面尚未做好準(zhǔn)備。這樣的解釋其實(shí)并沒(méi)有什么用處,因?yàn)榧词褂布С忠惨饬x不大,反正還是用不了,唯一留下了就是驅(qū)動(dòng)未來(lái)增強(qiáng)或者“修復(fù)”的可能,算是希望。
從另一個(gè)角度來(lái)看,異步計(jì)算是DirectX 12中比較重要的功能了,按理說(shuō)應(yīng)該早就支持完善才是,現(xiàn)在出現(xiàn)這樣一個(gè)大問(wèn)題,還要等未來(lái)的驅(qū)動(dòng)修復(fù)—當(dāng)然我們承認(rèn)英偉達(dá)驅(qū)動(dòng)的確很棒,但未來(lái)能否及時(shí)修復(fù)或者是會(huì)等一段時(shí)間風(fēng)平浪靜新顯卡業(yè)上市了,那個(gè)時(shí)候再一并“修復(fù)”,就不得而知了。
DirectX 12離我們還有多遠(yuǎn)?N卡/A卡實(shí)戰(zhàn)DX12游戲Demo《Ashes of the Singularity》
雖然DirectX 12看起來(lái)足夠美好,在微軟和眾多上游廠商的強(qiáng)勢(shì)力推之下也必然會(huì)成為未來(lái)的主流圖形API。但是,現(xiàn)在是不是已經(jīng)是到了我們享受DirectX 12的時(shí)候了呢?現(xiàn)在的主流圖形顯卡是不是能夠完美地支持DirectX 12的各種特效呢?稍后讓我們用一個(gè)詳細(xì)的測(cè)試來(lái)為你答疑。
遺憾的是,目前市面上公開發(fā)售的游戲中,尚沒(méi)有任何一款能真正支持DirectX 12,包括公認(rèn)最權(quán)威的圖形性能測(cè)試軟件3DMark也沒(méi)有單獨(dú)針對(duì)GPU的DirectX 12性能進(jìn)行測(cè)試的補(bǔ)丁包(僅有CPU的DirectX 12計(jì)算性能測(cè)試補(bǔ)丁)。還好,游戲廠商聯(lián)合圖形芯片廠商,還是為我們放出了一個(gè)用于DirectX 12圖形性能測(cè)試的游戲Demo,它就是《Ashes of the Singularity》(翻譯過(guò)來(lái)就是《奇點(diǎn)灰燼》)。
目前的《Ashes of the Singularity》還是一個(gè)基于DirectX 11及DirectX 12的雙API配置測(cè)試用Demo,通過(guò)它可以直觀地測(cè)試圖形核心的DirectX 11及DirectX 12性能。而在顯卡的選擇上,考慮到目前的圖形芯片對(duì)DirectX 12的支持情況,我們選擇了AMD Radeon R9 Fury X、Fury以及NVIDIA GeForce GTX 980Ti、GTX 980這四款分別對(duì)位的高端顯卡作為測(cè)試對(duì)象,以此可以通過(guò)測(cè)試明確地看到目前主流顯卡對(duì)DirectX 12API的支持情況。
測(cè)試分別選擇AMD CATALYST 15.11 Beta和NVIDIA GeForce 358.91 Beta這兩個(gè)目前官網(wǎng)最新的驅(qū)動(dòng)版本作為主要測(cè)試驅(qū)動(dòng),以便消除可能存在的老版本驅(qū)動(dòng)對(duì)DirectX 12支持力度不夠的隱患。同時(shí),為了考察AMD和NVIDIA是否一直以來(lái)都在為DirectX 12進(jìn)行了特別的驅(qū)動(dòng)優(yōu)化,我們還特別加入了兩個(gè)相對(duì)較老的驅(qū)動(dòng)版本作為參考對(duì)比。
《Ashes of the Singularity》的測(cè)試Demo包含有DX 11和DX 12兩個(gè)程序,在本次測(cè)試中我們將分別針對(duì)這四款支持DirectX 12的顯卡進(jìn)行測(cè)試,以考察它們各自在DX 11和DX 12下的表現(xiàn)。
DirectX 11,N卡表現(xiàn)稍占優(yōu)
首先來(lái)看四款顯卡在DirectX 11下的表現(xiàn)。其實(shí)細(xì)心的讀者如果之前有仔細(xì)看本刊的文章,應(yīng)該比較清楚,我們之前在多個(gè)測(cè)試中也已經(jīng)證實(shí),在DirectX 11模式下,NVIDIA GTX 980Ti在1920×1080及2560×1440分辨率下都領(lǐng)先AMD Fury X,尤其是在1920×1080分辨率下領(lǐng)先的優(yōu)勢(shì)還較為明顯。不過(guò)在2560×1440分辨率下,GTX 980Ti相較Fury X的領(lǐng)先幅度大為削減,優(yōu)勢(shì)被削弱。而從我們之前的測(cè)試經(jīng)驗(yàn)知道,如果在4K分辨率下,GTX 980Ti相比Fury X在游戲測(cè)試中就基本沒(méi)有了任何優(yōu)勢(shì),甚至Fury X還能以些許的領(lǐng)先而勝出。在這之前我們也說(shuō)過(guò),AMD新一代顯卡在4K分辨率下的表現(xiàn)非常搶眼,從1080p到4K的游戲性能衰減幅度遠(yuǎn)低于NVIDIA的GTX 900系列顯卡。
而AMD Fury的表現(xiàn)則一直以來(lái)都略強(qiáng)于與之對(duì)位的GTX 980(事實(shí)上,GTX 980的絕對(duì)對(duì)位競(jìng)爭(zhēng)產(chǎn)品應(yīng)該是R9 390X而非Fury,不過(guò)在AMD的產(chǎn)品線中,也只有GTX 980與Fury的定位最為接近,因此我們?cè)谶@里也將其作為比較對(duì)象。特此說(shuō)明),在DirectX 11模式下兩種分辨率設(shè)置的測(cè)試中,F(xiàn)ury的表現(xiàn)都明顯好于GTX 980。
DirectX 12,AMD顯卡越“忙”越厲害
這算是本次測(cè)試的核心重點(diǎn)之一。我們的主要目的是想要知道,在DirectX 12模式下,AMD和NVIDIA的顯卡誰(shuí)的表現(xiàn)更好一點(diǎn)呢?
在1920×1080分辨率下,輕載場(chǎng)景的測(cè)試中,GTX 980Ti的平均幀率略領(lǐng)先于AMD Fury X,但是領(lǐng)先的幅度很小。不過(guò)到了中負(fù)載和重負(fù)載的DirectX 12場(chǎng)景測(cè)試時(shí),F(xiàn)ury X又略略反超了GTX 980Ti,但幅度同樣非常小。結(jié)合可能存在的測(cè)試誤差,我們基本可以判斷二者在1920×1080分辨率下的三種負(fù)載場(chǎng)景測(cè)試中的成績(jī)基本是持平的,不分高低。
在2560×1440的2.5K分辨率下,F(xiàn)ury X又以較小的優(yōu)勢(shì)在中等負(fù)載和重負(fù)載測(cè)試中領(lǐng)先GTX 980Ti,幅度大約在5%之內(nèi)。這和我們之前所說(shuō)的,在高分辨率下,AMD Fur y X的表現(xiàn)更好的結(jié)論基本是一致的。而且完全可以相信,在4K分辨率下,如果我們繼續(xù)測(cè)試《Ashes of the Singularity》Benchmark的DirectX 12模式,相信Fury X的領(lǐng)先幅度會(huì)進(jìn)一步擴(kuò)大。
再來(lái)看Fury與GTX 980。DirectX 12模式下的測(cè)試結(jié)果與DirectX 11模式下測(cè)試結(jié)果基本保持了一致,F(xiàn)ury都以較為明顯的優(yōu)勢(shì)領(lǐng)先于GTX 980。
縱向比較,從DirectX 11到DirectX 12的進(jìn)步與退步
如果把四款顯卡的DirectX 11與DirectX 12成績(jī)拿來(lái)做縱向比較,你會(huì)發(fā)現(xiàn)一個(gè)很有意思的現(xiàn)象。AMD Fury X與Fury顯卡,在從DirectX 11模式轉(zhuǎn)到DirectX 12模式時(shí),其平均幀率的提升非常明顯,尤其是在重負(fù)載的場(chǎng)景中,提升更為明顯,從DirectX 11到DirectX 12,無(wú)論是Fury X還是Fury,其整體提升幅度都超過(guò)了20%,這足以證明Fiji內(nèi)部構(gòu)建了8個(gè)獨(dú)立ACE硬件處理模塊的實(shí)用性。這顯著提高了AMDGCN架構(gòu)在DX12時(shí)代的運(yùn)行效率,充分挖掘出了計(jì)算資源占優(yōu),但計(jì)算資源利用效率一向偏低的GCN架構(gòu)顯卡的潛力??梢灶A(yù)見包含R9 390系列和R9 290系列在內(nèi)的搭配了多達(dá)8個(gè)ACE硬件處理模塊的顯卡,都將因DX12的異步計(jì)算機(jī)制而受益。
再看NVIDIA GTX 980Ti和GTX 980。我們能清晰地看到,在輕負(fù)載下,無(wú)論是1080p還是2.5K分辨率設(shè)置,從DirectX 11到DirectX 12,它們都表現(xiàn)出了較小的上升趨勢(shì),DirectX 12模式下輕負(fù)載場(chǎng)景表現(xiàn)都略領(lǐng)先于DirectX 11模式。不過(guò)在中負(fù)載和重負(fù)載場(chǎng)景下,NVIDIA的兩款顯卡都不約而同地表現(xiàn)出了“不升反降”的現(xiàn)象,尤其是在2560×1440分辨率下,其下降的趨勢(shì)更加明顯。正如我們之前在評(píng)測(cè)AMD Fury Nano時(shí)做DirectX 12的對(duì)比測(cè)試時(shí)所說(shuō)的一樣,“NVIDIA顯卡的糟糕表現(xiàn)不得不讓我們懷疑,Maxwell架構(gòu)壓根就沒(méi)有設(shè)計(jì)獨(dú)立的ACE硬件處理模塊??紤]到《奇點(diǎn)灰燼》的開發(fā)商Oxide多年來(lái)一直都是AMD的合作伙伴,從Mantle問(wèn)世時(shí)就在合作。所以難免會(huì)有人懷疑這個(gè)基準(zhǔn)測(cè)試的公正性,所以開發(fā)商Oxide也不得不作出做出公開回應(yīng),并指出了NVIDIA顯卡在游戲中表現(xiàn)不佳是因?yàn)椴荒芡晟浦С諥CE異步運(yùn)算,這也側(cè)面印證了我們的猜疑”。
以前我們就曾經(jīng)指出過(guò),NVIDIA的Maxwell架構(gòu)并不是真的完全不支持ACE機(jī)制,而是不同于AMD的獨(dú)立硬件設(shè)計(jì),需要軟硬件結(jié)合實(shí)現(xiàn)。而當(dāng)前軟件方面又沒(méi)有準(zhǔn)備就緒,就讓該架構(gòu)顯卡在測(cè)試中顯得非常被動(dòng)。Maxwell硬件架構(gòu)中,AWS(Asynchronous Warp Scheduler,異步彎曲調(diào)度器)是硬件功能單元,每個(gè)SMM單元配備4個(gè)AWS單元。與GCN架構(gòu)從隊(duì)列、任務(wù)分配到異步計(jì)算使用純硬件手段不同,Maxwell架構(gòu)中的調(diào)度器模塊是軟件控制的。之后再交給AWS、DMA引擎、CUDA核心來(lái)完成硬件部分的計(jì)算。這就有些像早年關(guān)于軟、硬件解碼高清視頻一樣,軟件方案在效率上應(yīng)該有先天不足。NVIDIA的ACE解決方案因?yàn)楦洠辽倌壳翱雌饋?lái)效率不及AMD的純硬件方案。
一直在努力,AMD與NVIDIA的DirectX 12爭(zhēng)奪戰(zhàn)還未全面開始由于NVIDIA Maxwell架構(gòu)核心采用了軟硬結(jié)合的方式來(lái)支持ACE機(jī)制,所以相比AMD Fiji核心的內(nèi)置獨(dú)立ACE硬件模塊的設(shè)計(jì)在執(zhí)行效率上肯定有所不如。越是在前期,NVIDIA這種軟硬結(jié)合的DirectX 12支持方式落后就愈發(fā)明顯。不過(guò)NVIDIA明顯也意識(shí)到了自己的不足,長(zhǎng)時(shí)間以來(lái)也一直在通過(guò)驅(qū)動(dòng)補(bǔ)丁的更新來(lái)實(shí)現(xiàn)對(duì)DIrectX 12模式的更好支持。同樣是基于《Ashes of the Singularity》Benchmark的測(cè)試,如果我們用GeForce 355.60、358.50以及最新的358.91這三個(gè)間隔時(shí)間約3個(gè)月左右的不同版本進(jìn)行的話,你就能很清楚地看到,DirectX 11模式下,三個(gè)版本驅(qū)動(dòng)給GTX 980Ti及GTX 980帶來(lái)的游戲性能進(jìn)步并不算太大,基本都在5%或更低的程度。但在DirectX 12模式下,三個(gè)版本驅(qū)動(dòng)之間的差距就被拉開了。即使在輕載場(chǎng)景的測(cè)試中,從355.60版驅(qū)動(dòng)到358.91版驅(qū)動(dòng),性能的提升都在10%以上,而我們知道輕載場(chǎng)景是壓力最小的DirectX 12測(cè)試。在中負(fù)載和重負(fù)載場(chǎng)景下,新版驅(qū)動(dòng)的DirectX 12性能提升更為明顯,基本達(dá)到了20%~30%甚至更高。無(wú)疑,NVIDIA也一直在為Maxwell顯卡準(zhǔn)備著“雞血針”,想要逐漸縮小與AMD顯卡之間的差距。
但不得不說(shuō)的是,從游戲角度來(lái)看,很多玩家很關(guān)心目前測(cè)試的DirectX 12游戲性能是否表現(xiàn)了顯卡對(duì)DirectX 12的支持情況。實(shí)際上,除了之前曾提到的算是“特殊情況”的異步計(jì)算外,其余的游戲測(cè)試結(jié)果,更多的反應(yīng)的是游戲廠商在技術(shù)和應(yīng)用上的差異。原因很簡(jiǎn)單,游戲開發(fā)面臨著太多的內(nèi)容和選擇,尤其是目前的AAA級(jí)大作,圖形部分的內(nèi)容瀚如星海,用什么效果、走什么路徑、開發(fā)平臺(tái)情況、利用哪種特效、顯卡驅(qū)動(dòng)支持情況如何,都是非常值得研究的。尤其是驅(qū)動(dòng)程序,所謂的驅(qū)動(dòng)優(yōu)化,在很多情況下會(huì)替換游戲本身的執(zhí)行路徑,而走自己獨(dú)特的、更高效率的執(zhí)行路徑,即使游戲廠商不提供源碼,但是通過(guò)一些工具和手段,依舊可以改變執(zhí)行情況。這樣一來(lái),游戲測(cè)試的結(jié)果究竟反映的是顯卡執(zhí)行API的效能,還是游戲本身在某款顯卡上“優(yōu)化”的效能,就是完全不同的兩件事情了。
雖然只是一個(gè)小小的游戲測(cè)試Demo,但DirectX 12的腳步已經(jīng)越來(lái)越近,對(duì)此NVIDIA、AMD與游戲廠商都在各自努力著,而且目前市場(chǎng)上Maxwell核心的NVIDIA GPU以及AMD GCN 1.1以上架構(gòu)的圖形核心都提供了相對(duì)完整的DirectX 12支持(具體支持DirectX 12的圖形核心型號(hào)請(qǐng)參考前文)。不過(guò)就目前一款《Ashes of the Singularity》Benchmark測(cè)試來(lái)看,對(duì)ACE異步計(jì)算機(jī)制純硬件支持的AMD GCN 1.1以上架構(gòu)GPU,其表現(xiàn)更加值得玩家們期待一些。而在目前的情況下,從測(cè)試結(jié)果來(lái)看,盡管NVIDIA一直都在不斷優(yōu)化驅(qū)動(dòng)為DirectX 12做著各種努力,但似乎仍然還沒(méi)能完全適應(yīng)DirectX 12節(jié)奏,現(xiàn)在看來(lái)還沒(méi)有完全吃透ACE機(jī)制,從DirectX 11到DirectX 12仍有幀率下降的問(wèn)題存在。二者相較之下,從GCN架構(gòu)上硬件支持ACE的AMD顯卡無(wú)疑贏得了先機(jī),取得了初戰(zhàn)DirectX 12領(lǐng)地的勝利。至于NVIDIA會(huì)不會(huì)在將來(lái)迎頭趕上,而AMD又會(huì)不會(huì)繼續(xù)強(qiáng)化自己的固有優(yōu)勢(shì),在DirectX 12的應(yīng)用與游戲尚未正式開始普及的現(xiàn)在,都還言之過(guò)早,就留待市場(chǎng)與玩家們?cè)趯?lái)去檢驗(yàn)吧!
Tisp
《Ashes of the Singularity》Benchmark 的出現(xiàn),讓我們有機(jī)會(huì)首次體驗(yàn)DX12游戲的魅力。這款DX12游戲的測(cè)試Demo 有許多讓人能明顯感覺(jué)到的變化。首先是多單位的個(gè)性處理,在以往DX11的游戲中,遇到大量單位同時(shí)出現(xiàn)的游戲場(chǎng)景時(shí),難免出現(xiàn)動(dòng)作、運(yùn)行軌跡和角度的重復(fù)性,也就是簡(jiǎn)化計(jì)算資源,一資源多用的典型。而在《Ashes of the Singularity》中,你仔細(xì)觀察會(huì)發(fā)現(xiàn),在多單位同時(shí)出境的場(chǎng)景中,每個(gè)單位的動(dòng)作、軌跡、會(huì)顯得更加個(gè)性,重復(fù)性大幅降低。而且同屏煙霧、火焰效果變得相當(dāng)豐富,層次感大幅提升。這在以往的DX11 游戲中是比較難想象的,資源耗費(fèi)無(wú)疑非常巨大。而DX12更接近底層設(shè)計(jì)的優(yōu)勢(shì),讓硬件的潛力被充分挖掘,讓以往的一些不可能變得有可能實(shí)現(xiàn)。這其中,ACE 異步計(jì)算無(wú)疑是尤為值得一提的功臣,也是DX12整體效率更高的一個(gè)重要原因。
《微型計(jì)算機(jī)》評(píng)測(cè)室
