開創(chuàng)DX11宏圖霸業(yè)!鐳HD5870權(quán)威評(píng)測(cè)
第一章/第五節(jié) Multi-threading多線程處理
如果一個(gè)軟件能夠?qū)Χ嗪诵亩嗑€程處理器進(jìn)行優(yōu)化的話,那么在使用雙核或四核處理器時(shí),其運(yùn)行效率將會(huì)提升2-4倍,遺憾的是如今的游戲都無(wú)法支持多核處理。
通過大量的游戲性能測(cè)試來看,GPU占絕對(duì)主導(dǎo),而CPU只是考驗(yàn)單核效能,通過對(duì)CPU極限超頻可以讓游戲性能提高不少,但使用四核或者帶HT技術(shù)的“八核”處理器幾乎不會(huì)有任何性能提升。在多核成為大勢(shì)所趨的情況下大量CPU資源被白白浪費(fèi),瓶頸可能依然卡在CPU上面。
DX11當(dāng)中新增的多線程處理技術(shù),則是專門針對(duì)多核應(yīng)用而生的,它通過引入“延遲執(zhí)行”的指令將一個(gè)渲染進(jìn)程拆分為多個(gè)線程,并根據(jù)處理器核心/線程數(shù)設(shè)定延遲執(zhí)行內(nèi)容的數(shù)目。多線程的涵義是非常廣的,每一幀畫面可以被分為幾個(gè)圖層,每個(gè)圖層又可以分為N個(gè)區(qū)塊,所有的這些都可以被并行調(diào)度到延遲執(zhí)行的線程之中。
這是一項(xiàng)很聰明的技術(shù),標(biāo)記為“立即執(zhí)行”的線程與傳統(tǒng)的渲染沒有區(qū)別,而標(biāo)記為“延遲執(zhí)行”的線程則可以在后臺(tái)將圖形生成所必須的資源做預(yù)先的存取,比如紋理拾取、像素生成、常數(shù)緩沖等操作都可以多線程并行處理,通過多核CPU富裕的資源來減少程序等待時(shí)間,從而使得渲染不再受到CPU的瓶頸制約。
多線程技術(shù)是非常靈活的,它既可以在游戲中通過程序代碼來控制,也可以通過DirectX自動(dòng)分配,還能夠通過驅(qū)動(dòng)程序進(jìn)行優(yōu)化。即便是驅(qū)動(dòng)沒有針對(duì)多核進(jìn)行優(yōu)化,DX11運(yùn)行庫(kù)也會(huì)通過模擬的方式提供新的功能,也就是說所有DX11游戲都將或多或少的從多核多線程CPU中獲益。
多線程技術(shù)的引入對(duì)于雙卡甚至多卡互聯(lián)系統(tǒng)更為重要,以往多顆GPU在DirectX中只能模擬成一個(gè)虛擬GPU,所有的GPU必須共享指令緩沖區(qū)并接受CPU調(diào)度,渲染線程的拆分與合并指令延遲都很大,GPU越多則效率越低!而在DX11當(dāng)中,如果用四核CPU搭配四路交火系統(tǒng)的話,每顆CPU都可以單獨(dú)控制一顆GPU的渲染線程,在均分CPU負(fù)擔(dān)的同時(shí),提高了GPU資源利用率,從而大幅提升游戲性能。
其實(shí)多線程技術(shù)也能應(yīng)用在DX9/DX10甚至是OpenGL上面,但由于API及函數(shù)指令的限制,開啟多線程會(huì)產(chǎn)生很多重復(fù)的指令,導(dǎo)致性能提升有限甚至不升反降,因此微軟并不建議在舊API模式開啟多線程模式,除非程序員做過嚴(yán)格的測(cè)試與優(yōu)化。
關(guān)注我們
