適者生存!顯卡 DirectX API 進(jìn)化論
★ 哺乳動(dòng)物時(shí)代:Radeon 9700
當(dāng)NVIDIA沉浸于GeForce 4 Ti大獲全勝的DX8時(shí)代時(shí),ATI在DX9標(biāo)準(zhǔn)正式確立之前就提前發(fā)布了Radeon 9700顯卡,打得NVIDIA措手不及。這款產(chǎn)品來(lái)得如此突然,以至于ATI發(fā)布之時(shí)甚至沒(méi)有提供相關(guān)技術(shù)PPT/PDF。
由于DX9相比DX8并沒(méi)有改變3D渲染流程,僅僅是強(qiáng)化了ShaderModel指令集,因此R300的架構(gòu)相比R200改進(jìn)并不大,主要的變化是規(guī)模的擴(kuò)充與外圍控制模塊的加強(qiáng)。比如:首次使用256bit顯存控制器、類(lèi)似CPU的FCBGA封裝、更先進(jìn)的紋理壓縮技術(shù)以及后期處理單元。
R300的頂點(diǎn)和像素著色單元結(jié)構(gòu)
當(dāng)然,R300的Shader單元經(jīng)過(guò)了重新設(shè)計(jì),定址、色彩和紋理單元都支持浮點(diǎn)運(yùn)算精度,這是它能夠完美運(yùn)行DX9程序的關(guān)鍵。R300核心擁有8條像素渲染管線(xiàn)及4個(gè)頂點(diǎn)著色單元,每條像素管線(xiàn)中只有1個(gè)紋理單元。至此ATI的像素與紋理的比例從1:3到1:2再到1:1,在DX9C時(shí)代將會(huì)進(jìn)一步拉大至3:1,也就是風(fēng)靡一時(shí)的3:1架構(gòu),當(dāng)然這是后話(huà)了。
★ NVIDIA遭遇滑鐵盧——GeForce FX 5800
NV30核心采用了業(yè)界非常先進(jìn)的0.13微米工藝制造,并使用了最高頻率的GDDR2顯存,而且發(fā)布時(shí)間較晚,理應(yīng)占盡優(yōu)勢(shì)才對(duì)。但是這一次NVIDIA沒(méi)能跟上微軟的步伐,不僅在時(shí)間上晚于ATI,而且在DX9技術(shù)方面也未能超越。NV30的架構(gòu)存在較大的缺陷,NVIDIA艱難的完成了從DX8到DX9的過(guò)渡,但結(jié)果很不理想。
從宏觀上說(shuō),NV30的整體架構(gòu)更像是一個(gè)DX7(固定功能TRUE T&L單元)、DX8(FX12combiner整數(shù)處理單元)、DX9(浮點(diǎn)像素單元)的混合體。而在DX9的應(yīng)用中,不能出現(xiàn)非浮點(diǎn)精度的運(yùn)算,所以前兩者是不起作用的,造成了NV30晶體管資源的浪費(fèi),同時(shí)也影響了性能。
NV30的PiexlShader單元沒(méi)有Co-issue(標(biāo)量指令+矢量指令并行處理)能力,而在DX9中,單周期3D+1D是最常見(jiàn)指令處理方式,即在很多情況下RGB+A是需要非綁定執(zhí)行的,這時(shí)候NV30就無(wú)法并行執(zhí)行,指令吞吐量大大降低。其次,NV30沒(méi)有miniALU單元,也限制了NV30的浮點(diǎn)運(yùn)算能力(在NV35中DX8整數(shù)單元被替換為miniALU)。
另外,NV30在寄存器設(shè)計(jì)(數(shù)量及調(diào)用方式)、指令存儲(chǔ)方式(讀寫(xiě)至顯存)等方面也有缺陷。NV30的寄存器數(shù)量較少,不能滿(mǎn)足實(shí)際程序的需要。而且,用微軟的HLSL語(yǔ)言所編寫(xiě)的pixel shader2.0代碼可以說(shuō)NV30的“天敵”,這些shader代碼會(huì)使用大量的臨時(shí)寄存器,并且將材質(zhì)指令打包成塊,但是NV30所采用的顯存是DDR-SDRAM,不具備塊操作能力。同時(shí),NV30材質(zhì)數(shù)據(jù)的讀取效率低下,導(dǎo)致核心的Cache命中率有所下降,對(duì)顯存帶寬的消耗進(jìn)一步加大。
由于NV30是VILW(超長(zhǎng)指令,可同時(shí)包含標(biāo)量和SIMD指令)設(shè)計(jì)類(lèi)型的處理器,對(duì)顯卡驅(qū)動(dòng)的Shader編譯器效率有較高的要求。排列順序恰當(dāng)?shù)膕hader代碼可以大幅度提升核心的處理能力。在早期的一些游戲中,這種優(yōu)化還是起到了一定的作用。但對(duì)于后期Shader運(yùn)算任務(wù)更為繁重的游戲則效果不大。
最終,雖然NV30與上代的NV25相比架構(gòu)變化很大,但性能方面全面落后與對(duì)手的R300。不過(guò)NV30的架構(gòu)還是有一定的前瞻性,ATI的R600在Shader設(shè)計(jì)方面與NV30有很多相似之處。
★ 小結(jié):非“真DX9架構(gòu)”導(dǎo)致NV30失敗
現(xiàn)在再來(lái)看看,相信沒(méi)人會(huì)認(rèn)為DX9的改進(jìn)有限了。正是由于NVIDIA沒(méi)能適應(yīng)DX9所帶來(lái)ShaderModel指令的諸多改進(jìn),采用DX8+DX9混合式的架構(gòu),才導(dǎo)致NV30存在很大缺陷,在運(yùn)行DX9游戲時(shí)效率很低。另外冒險(xiǎn)采用先進(jìn)工藝、不成熟的GDDR2顯存、128bit位寬這些都極大的限制了NV30的性能,即便在DX8游戲中都無(wú)法勝過(guò)R300。
而ATI則占據(jù)天時(shí)地利人和等一切優(yōu)勢(shì),完全按照DX9標(biāo)準(zhǔn)而設(shè)計(jì),甚至在DX9標(biāo)準(zhǔn)確立之前就早早的發(fā)布了DX9顯卡,這不免讓人懷疑微軟的動(dòng)機(jī)和做法,顯然他不希望NVIDIA成為第二個(gè)Intel。
關(guān)注我們
