前言:GPU大百科的連載已經(jīng)持續(xù)了6個(gè)月了,6個(gè)月前我們向你承諾過,雖然這是一本不算厚,不算舊,并未囊括古今天下之事,甚至還可能充滿了各種謬誤的“大百科全書”。但是我們相信,我們所撰寫的這本GPU大百科全書一定會像ZOL顯卡探索與發(fā)現(xiàn)欄目的其他內(nèi)容一樣,能夠?qū)δ懔私釭PU和圖形世界的各種現(xiàn)象,以及它們背后的本源提供一定的幫助,甚至還能引起你與我們思想的共鳴。 6個(gè)月后的今天,我們來完結(jié)這份承諾了。 GPU大百科的連載已經(jīng)進(jìn)行到終點(diǎn)了,在這6個(gè)月的悠長歲月里,我們帶你游歷了GPU的所有組成部分,或深或淺的了解了它們的作用、特色和意義,我們甚至還展現(xiàn)了每個(gè)單元的趣聞、軼事甚至是歷史。我們?yōu)槟阏宫F(xiàn)了GPU的方方面面,現(xiàn)在只缺一樣?xùn)|西了,那就是總結(jié)。 來吧,是時(shí)候總結(jié)一下了。在這終章的時(shí)刻,我們會將為你再次梳理GPU每個(gè)組成部分的作用,將它們串聯(lián)在一起的結(jié)果還有GPU本身的意義,如果你已經(jīng)熟諳之前的各章GPU大百科全書的話,也可以選擇直接跳轉(zhuǎn)到文章的結(jié)尾部分,我們將在本章的第八頁和第九頁為你帶來完美GPU的衡量標(biāo)準(zhǔn)以及是否存在的答案。 OK,Let's begin。 ● 視覺的頌歌 我們首先要做的是梳理,長達(dá)6個(gè)月的連載時(shí)間不論是對你還是對我們來說都是一個(gè)艱苦而漫長的過程,我們會被這半年的生活所填滿,被180余天流逝的時(shí)光剪裁,因此遺忘會讓我們丟失掉很多有趣的細(xì)節(jié)——比如說,GPU執(zhí)行圖形流水線操作這個(gè)順序的過程。 GPU大百科全書的連載順序,基本上是按照圖形過程在硬件中的執(zhí)行次序來完成的。GPU在執(zhí)行圖形操作時(shí)所必經(jīng)的步驟,是一個(gè)從幾何過程開始,經(jīng)由光柵化之后在完成材質(zhì)及像素特效處理,最后由ROP混合輸出的in order過程,我們把這個(gè)過程稱作“33毫秒的詠嘆調(diào)”。既然我們把GPU的執(zhí)行過程比作了一曲關(guān)于視覺的頌歌,那么這個(gè)完整的in order過程中的每一個(gè)步驟,就是構(gòu)成詠嘆調(diào)的一篇篇樂章。 我們的梳理,將從第一樂章的幾何部分開始。 ● 第一樂章:幾何處理 既然是“3D圖形應(yīng)用”,那么圖形的幾何處理就自然成了整個(gè)GPU流水線過程的第一步。幾何處理實(shí)干什么的呢?很簡單,就是幫你把描述圖形的數(shù)學(xué)方程們轉(zhuǎn)化成虛擬空間的“實(shí)在”的物體。 編程是一個(gè)與數(shù)學(xué)打交道的過程,程序員們并不能直接將腦海中物體和場景的形態(tài)畫成一幅宮版畫放在我們的面前,他們能夠做的只能是將需要描述的物體表面的特殊關(guān)鍵點(diǎn)以空間坐標(biāo)的形式加以描述,將物體外形的改變轉(zhuǎn)化成這些點(diǎn)的坐標(biāo)位置改變,再通過方程對這些坐標(biāo)的運(yùn)動加以描述,這樣才能以一行行代碼的形式完成游戲程序的編寫。
將這些代碼和方程轉(zhuǎn)化成“可見”的圖形,就是GPU進(jìn)行幾何處理的意義。 當(dāng)游戲之類應(yīng)用開始執(zhí)行時(shí),GPU中首先“動作”的便是幾何部分。CPU會根據(jù)程序的內(nèi)容將程序員們準(zhǔn)備好的程序語言翻譯成虛擬的點(diǎn),幾何單元?jiǎng)t通過將這些點(diǎn)描述到虛擬空間中,再通過將這些點(diǎn)相連來構(gòu)成要描述物體的外形特征。 在完成了模型確定之后,GPU還會根據(jù)程序需求以及自身能力不同對模型表面進(jìn)行處理,包括Vertex Shader、Geometry Shader以及Tesselation等等諸多操作,他們的作用都是幫助確定模型的最終形態(tài)以及對其進(jìn)行表面細(xì)節(jié)的修飾。在完成這些修飾之后,物體和場景的幾何外觀就確定下來了。
幾何處理時(shí)圖形化的開端,它歡快,雀躍,充滿著變化的活力和律動。我們有關(guān)幾何單元的故事寫在遙遠(yuǎn)的初夏, 所以點(diǎn)擊這里應(yīng)該有助于幫你回憶起其中的點(diǎn)點(diǎn)滴滴。● 中場的獨(dú)角戲:光柵化 我們說過,雖然3D圖形應(yīng)用是圍繞著創(chuàng)造立體感視覺體驗(yàn)來進(jìn)行的,但在GPU里能夠稱得上是立體空間中進(jìn)行操作,只有幾何單元一部而已。之所以幾何之后再無幾何,只因?yàn)槲覀兯械钠聊?,全部都是“平面”的…?/P>
透視特效,是作畫過程中常用的在平面范圍內(nèi)表達(dá)立體視覺感的基本手法之一。既然我們面前的屏幕都是“平面”的,無法用來“真正”表現(xiàn)景深等視覺信息,那么將空間立體物體圖形轉(zhuǎn)變成具有透視特效的平面圖形,就成了在目前的顯示設(shè)備中表達(dá)立體感的唯一出路了。 而這,也就是光柵化過程最根本的目的。 當(dāng)然,除了達(dá)到平面透視效果的目的之外,針對顏色處理所需要的像素化需求也是光柵化操作的主要原因。所以當(dāng)幾何單元完成了對物體及景物模型的確立以及修飾之后,GPU中的Rasterizer會將立體模型進(jìn)行一次三維坐標(biāo)向二維坐標(biāo)的變換,物體經(jīng)由Rasterizer的處理,被從虛擬的立體空間“投影”到了平面空間,其原本所具備的Z值也就是景深值,將僅以數(shù)據(jù)的形式臨時(shí)存放在Z-buffer中以備后續(xù)處理使用。完成這一步之后,原本空間存在的物體將完成與屏幕中像素的對應(yīng),其后的材質(zhì)及像素操作也將隨之展開。 Rasterizer是收割生命的死神,因?yàn)樗鼘⒛處缀文P?,令其失去活力并變得不再可以進(jìn)行操作。Rasterizer又是創(chuàng)造新生命的天使,因?yàn)榻?jīng)它處理之后的模型才能進(jìn)行后面關(guān)于顏色的豐富多彩的操作。光柵化所進(jìn)行的坐標(biāo)變換同時(shí)兼具了萬物歸于寂靜的沉重莊嚴(yán)以及預(yù)示新開始的平和與期盼,如果你想再次領(lǐng)略死神的鐮刀和天使的羽翼,可以點(diǎn)擊這里。 ● 第三樂章:材質(zhì)操作 在完成了坐標(biāo)變換操作之后,平面化的圖形將迎來關(guān)于顏色的相關(guān)處理,這些操作中首當(dāng)其沖的自然關(guān)于表面色彩的部分了。因此GPU執(zhí)行的圖形過程便來到了相當(dāng)傳統(tǒng)同時(shí)也是必不可少的環(huán)節(jié)——材質(zhì)操作。
材質(zhì)操作的本質(zhì)其實(shí)非常簡單,依舊是由于編程本質(zhì)的原因,程序員們并不能用意念直接為我們呈現(xiàn)畫面,所以他們會將自己想要表達(dá)的東西以代碼的形式分開描寫,GPU將這些代碼翻譯出來之后再根據(jù)要求進(jìn)行“組裝”操作。材質(zhì)的操作,就好像服裝店將分開運(yùn)過來的大小款式不同的衣服穿到尺寸各異的模型人偶身上一樣。 程序員們會事先制作包含很多色彩和圖案的材質(zhì)庫,每片材質(zhì)都會有規(guī)則的可以坐標(biāo)度量的尺寸。接下來,他們還會在程序中為物體表面規(guī)定好特定的色彩和圖案特征以及適應(yīng)類別范圍。當(dāng)光柵化完成之后,每個(gè)多邊形新具備的坐標(biāo)將成為確定它“形狀”的新參數(shù),材質(zhì)單元根據(jù)事先規(guī)定好的特征范圍去材質(zhì)庫中進(jìn)行查詢,然后再根據(jù)形狀參數(shù)確定預(yù)制材質(zhì)中截取的部分,最后把這些材質(zhì)拷貝出來覆蓋到對應(yīng)區(qū)域之上,這就是材質(zhì)操作的全部內(nèi)容。 這種通過預(yù)先烘焙材質(zhì),然后以材質(zhì)庫尋址—定址—拾取來完成為物體賦予色彩及圖案細(xì)節(jié)的操作方式不僅簡潔,而且為硬件高效的賦予物體表面細(xì)節(jié)創(chuàng)造了條件。GPU不需要“生成”新的東西,只需要把原來準(zhǔn)備好的東西找出來放到合適的位置上去即可,這種明快的操作方式讓材質(zhì)單元成了3D圖形應(yīng)用的“開國元?jiǎng)住薄?/P> 材質(zhì)操作一改光柵化的沉重,再次將圖形處理的樂章引入了輕快悠揚(yáng)的旋律中。但伴隨著人們視覺需求的不斷增加,對光影真實(shí)度的要求將單純材質(zhì)操作死板、不可能預(yù)測并制作出所有鏡頭可能性從而無法反映實(shí)時(shí)動態(tài)效果的弊端暴露了出來。于是,人們?yōu)椴馁|(zhì)操作引入了宏亮的和聲——Pixel Shader。 ● 宏亮的和聲:Pixel Shader Pixel Shader單元出現(xiàn)的原因其實(shí)非常直接——光柵化處理過程并沒有真正的光線存在,那么對光線與物體作用特效的描述,就只有通過創(chuàng)造“被光照射后顏色發(fā)生變化”的像素這樣的方式來完成了。材質(zhì)的本質(zhì),其實(shí)就是像素的集合,既然我們預(yù)先制作的材質(zhì)并不能充分地反映出現(xiàn)場真實(shí)的光影效果,那對其進(jìn)行修改不就好了。
我們面前的所有顏色,歸根結(jié)底可以通過紅綠藍(lán)三原色以及它們的混合來表達(dá),而三原色的深淺以及混合程度,又可以通過三組數(shù)字以及它們之間的關(guān)系來表示。因此對顏色本身、它們與光線以及他們彼此間相互影響的描述,完全可以被直接看做是對數(shù)字的近身纏斗。 想要控制并且實(shí)時(shí)正確的描述顏色說起來似乎不難,做起來卻并非易事。在傳統(tǒng)的不可編程渲染流水線中,一旦像素進(jìn)入了流水線,程序員們就失去了對它們的控制。為了能夠?qū)⒄_的帶有交互關(guān)系的顏色以程序的形式表達(dá)出來,程序員們發(fā)明了可以根據(jù)場景需要在光柵化之后用實(shí)時(shí)演算的數(shù)學(xué)方式改變像素顏色的方法——Pixel Shader。 當(dāng)空間模型完成坐標(biāo)變換及像素化之后,材質(zhì)單元進(jìn)行動作的同時(shí)Pixel Shader也在全力開動。根據(jù)shader programe的需求,ALU會按照程序員提供的數(shù)學(xué)關(guān)系以及要求對特定像素的RGB值進(jìn)行對應(yīng)的計(jì)算和更改,這些數(shù)學(xué)關(guān)系和要求基本上都涉及對原始材質(zhì)進(jìn)行“更改的部分”。透過改變這些像素的最終顏色,人類在Pixel Shader單元出現(xiàn)之后終于達(dá)成了實(shí)現(xiàn)表面光照反應(yīng)、次表面/界面間發(fā)生的半反射、散射以及折射等等傳統(tǒng)貼圖很難實(shí)時(shí)隨意且正確呈現(xiàn)的視覺效果的目的。 讀到這里,相信各位不難看出材質(zhì)操作與shader之間的關(guān)系了。對物體表面的描繪來自shader/ALU與材質(zhì)單元共同作用的結(jié)果,材質(zhì)操作無法對高自由度場景以及物體的光影以及光線關(guān)系等效果進(jìn)行實(shí)時(shí)正確的描述,而Pixel Shader又只能對像素進(jìn)行修飾而非實(shí)時(shí)的創(chuàng)造,要想實(shí)現(xiàn)正確真實(shí)的視覺效果,兩者在目前來說顯然是缺一不可的。如果說材質(zhì)單元是圖形過程中重歸輕快悠揚(yáng)的第三樂章,那么Pixel Shader就是該樂章中宏亮同時(shí)感人至深的和聲部分。 ● 詠嘆:ROP 我們說過,圖形處理就是通過編程將一個(gè)圖像拆分成若干個(gè)基本組成部分,再交由硬件進(jìn)行合并和表達(dá)的流水線作業(yè)過程。從幾何處理開始,到后面的光柵化,再到材質(zhì)操作和Pixel Shader操作,圖形流水線按照嚴(yán)格的順序一步一步的完成了構(gòu)成圖像的基本組成部分的“制造”過程。當(dāng)所有有需求的像素都被處理完畢之后,最后的工作就是把它們合并在一起了。從事這個(gè)合并工作的,就是位于圖形流水線最末端的ROP。
ROP單元對圖形元素的“組裝合成”過程分為以下幾步:首先,拾取好的材質(zhì)以及由shader處理完成的像素會被傳送到對應(yīng)的z/stencil buffer,ROP單元會對這些紋理和像素進(jìn)行z/stencil檢查,盡管經(jīng)由光柵化處理之后的模型已經(jīng)不具備實(shí)際存在的Z軸了,但其深度信息依舊會被保存在Z-buffer中,對于深度和模板信息的判斷能夠讓ROP做出讓哪些像素被顯示出來的決定,這不僅能夠避免完全遮擋的像素被錯(cuò)誤的顯示在前面,同時(shí)也能夠減少后續(xù)的color output部分的壓力。 當(dāng)所有像素都完成了深度檢查等操作之后,特定范圍深度值的像素將被輸送到alpha單元進(jìn)行透明度檢查。根據(jù)程序的需要,ROP會以Blend單元對特定的像素進(jìn)行alpha Blending操作。經(jīng)過上述步驟之后,剩下的像素將會被填充進(jìn)2D化模型需要的范圍內(nèi),也就是我們常見的Pixel Fillrate過程。 由于像素上的效果已經(jīng)被shader以數(shù)學(xué)的形式處理完畢了,因此如果沒有AA操作,那么到這里為止圖形渲染工作就算徹底完成了,所有效果的混合及填充將會讓正確的畫面最終得以呈現(xiàn),這幅完成處理的畫面會被送入output buffer等待輸出。而如果程序要求進(jìn)行AA操作,比如MSAA,那么ROP中的AA單元還需要對填充完畢的畫面進(jìn)行若干次多重采樣,然后再對采樣出來的像素點(diǎn)進(jìn)行color Blending操作,完成之后的畫面才會被送入幀緩存等待輸出到屏幕上。 ROP單元對于GPU來說是不可或缺的組成部分,它負(fù)責(zé)著圖形過程中圖像元素向畫面的最終跨越?;旌舷袼夭⑤敵鲞@一特性,讓它的性能直接決定了畫面輸出的速率,進(jìn)而影響到整個(gè)GPU的實(shí)際性能表現(xiàn),它甚至還是桌面GPU維持自身地位和榮耀的重要標(biāo)志。作為整個(gè)圖形流水線的最后一步,ROP完全是圖形樂章最高超的詠嘆調(diào)。 ● 串場:緩沖體系 作為GPU大百科全書中唯一出現(xiàn)的非處理性單元,緩沖分布在整個(gè)GPU內(nèi)外,雖然它們并不直接參與任何運(yùn)算和控制動作,但卻擔(dān)負(fù)著提升GPU執(zhí)行效率的重要使命。 現(xiàn)代GPU的緩沖體系十分龐大,它包含了由體積、延遲及位置決定的4個(gè)主要的組成部分,分別是顯存(Memory)、紋理緩存(Texture cache)、共享緩存(shared)及寄存器(Register)。顯存置于GPU芯片外部,通過GPU內(nèi)部的顯存控制器進(jìn)行控制和操作。紋理緩存、共享緩存及寄存器則集成在GPU內(nèi)部,分別供TMU和ALU控制及使用。
顯存作為緩沖材質(zhì)等大尺寸信息的場合,一直以來都是顯卡中最引人注目的性能指標(biāo)之一。幾乎與顯卡同時(shí)出現(xiàn)的顯存在經(jīng)歷了上古時(shí)代的EDO-RAM(Extend Data Output DRAM)甚至是FP-DRAM(Fast Page DRAM)向SDRAM的轉(zhuǎn)變之后,其發(fā)展進(jìn)入了GDDR的快車道。目前的中高端顯卡多采用GDDR5顯存,頻率維持在4000MHz~5000MHz的范圍內(nèi)。充足的顯存容量和顯存帶寬,是保證GPU材質(zhì)性能以及最終渲染性能的重要要素之一。 和顯存不同,由于顯卡最初的工作并不涉及材質(zhì)工作,所以紋理緩存的歷史遠(yuǎn)沒有顯存來的悠久,它是在圖形效果發(fā)展帶來的紋理尺寸迅速增加之后才應(yīng)需求出現(xiàn)的。諸如mip-mapping以及Generating Lightmaps之類的復(fù)雜紋理和操作也被更多的使用在了圖形效果的表達(dá)過程中,這些操作讓TMU獲得一套更加快速有效的暫存系統(tǒng)的愿望變的迫切起來,于是紋理緩存便開始充當(dāng)顯存到TMU單元的有效緩沖了。 Shared的出現(xiàn)則要更晚一些。當(dāng)圖形API進(jìn)化到DirectX 10之后,ALU面對的運(yùn)算環(huán)境發(fā)生了本質(zhì)的變化,大幅增加的運(yùn)算靈活度要求硬件能夠?yàn)锳LU提供一個(gè)方便調(diào)用且獨(dú)立操作的臨時(shí)暫存空間,于是Shared便應(yīng)運(yùn)而生了。Shared只讀不可寫,它只需要為ALU臨時(shí)釋放結(jié)果提供服務(wù)即可。Shared的出現(xiàn)對Shader的執(zhí)行有一定意義,但更多的作用還是在于通用計(jì)算及通用計(jì)算參與的后效處理領(lǐng)域。 寄存器同顯存和cache一樣,都是發(fā)源于CPU的重要緩沖組成部分。長期以來,寄存器都伴隨在運(yùn)算單元旁邊,以最及時(shí)的延遲和最大的帶寬為運(yùn)算單元提供著指令寄存空間(IR)、程序計(jì)數(shù)緩沖(PC)以及累加器(ACC)等多方面的服務(wù)。寄存器具備最高的運(yùn)行速度以及0t延遲的特性,其極高的晶體管成本令其在體系中的總量非常少。 緩沖體系雖然不是直接的運(yùn)算及控制單元,但它們扮演著通過緩沖數(shù)據(jù)流來掩蓋體系延遲的重要角色。它們并不是歌者,不具備一展歌喉并博得滿堂喝彩的能力,但它們穿插在歌者之間的串場卻能將演出的氣氛很好的維持下去。無論是顯存的溢出或者帶寬不足、紋理緩沖的拖沓還是Shared的表現(xiàn)不佳,都會給不同圖形過程的執(zhí)行平添更大的延遲。 ● 33毫秒的詠嘆調(diào) 在腦海中創(chuàng)造完美的事物并予以表達(dá)是人類思維重要的組成部分,雖然我們的整體想象力近乎于無限,但如何將這些想象以具相的形式表達(dá)出來卻一直都是困擾著全人類的難題。我們并不具備心靈感應(yīng)、意念力或者其他什么英雄漫畫中經(jīng)常會露臉的能力,為了表達(dá)想象中的景物,我們一直都只能通過雙手在各種地方作畫、雕刻、堆砌乃至是構(gòu)建了一個(gè)又一個(gè)宏偉的建筑。這種狀態(tài)持續(xù)了幾萬甚至幾十萬年,從我們剛剛從樹上爬下來的上古祖先開始,一直到計(jì)算機(jī)圖形學(xué)的出現(xiàn)為止。
在計(jì)算機(jī)圖形學(xué)以及圖形流水線中,一切的一切均與數(shù)學(xué)有關(guān),它們的出現(xiàn)讓人類第一次擁有了將想象力以數(shù)學(xué)這一通用語言的形式表達(dá)出來的可能。而GPU的出現(xiàn),則將數(shù)學(xué)、想象與現(xiàn)實(shí)這三者直接的聯(lián)系在了一起。有了這一實(shí)際的執(zhí)行者,在程序中以數(shù)學(xué)的形式去表達(dá)想象力以及背后的藝術(shù),然后借由GPU的動作將之最終展現(xiàn)出來,成了人類延展自身思維極限的一大重要途徑。 那么GPU究竟在做什么呢? 人類的視覺系統(tǒng)相當(dāng)特殊,當(dāng)眼前的畫面以大于每秒24幅的速度更新時(shí),視覺殘留現(xiàn)象會讓我們認(rèn)為這些單幅的畫面變成了連貫存在的動畫。在現(xiàn)代顯示設(shè)備中,這一數(shù)值被進(jìn)一步放寬到了每秒30幅的速度。換句話說,如果我們希望將腦海中想象的東西以連貫的形式表現(xiàn)出來,或者我們希望接收別人傳遞給我們的想象時(shí),如果能夠達(dá)到每秒30幅畫面的更新速度,我們就能夠看到與自然發(fā)生的事物并無二致的連貫表達(dá)。 要輸出每秒30幅畫面,每幅畫面的創(chuàng)作時(shí)間不能高于33毫秒。一切圖形的美或者說想象之美,都必須在這33毫秒內(nèi)完成。 隨著數(shù)學(xué)手段和編程水平的不斷提升,我們能夠?qū)崿F(xiàn)的圖形元素,以及由它們組成的單幅畫面的正確度和真實(shí)度正變得越來越高,但如果想讓這些畫面變成流暢的連貫表達(dá),GPU必須以低于平均33毫秒的延遲來完成這些畫面。我們前面提到的所有圖形元素,它們從數(shù)學(xué)語言中被翻譯出來,分別搭建完成并組裝在一起的過程,總用時(shí)不可以超過33毫秒。
這就是GPU的詠嘆調(diào),一曲不斷豐富和強(qiáng)化著每一個(gè)樂章,但卻永遠(yuǎn)不能超過33毫秒的詠嘆調(diào);一曲我們用了6個(gè)月時(shí)間,耗費(fèi)無數(shù)精力希望展現(xiàn)給你的詠嘆調(diào);一曲將持續(xù)到計(jì)算機(jī)虛擬現(xiàn)實(shí)消亡那一天為止的詠嘆調(diào)。 ● 拒絕被打斷的華彩的樂章 我們已經(jīng)知道了圖形處理過程的特色和諸多細(xì)節(jié),那么接下來的問題就很自然的顯現(xiàn)出來了——究竟怎樣的GPU才算是優(yōu)秀的GPU呢?為何不同的GPU構(gòu)架執(zhí)行圖形的效率不同呢?為什么我們經(jīng)常提及的先進(jìn)以及落后的圖形構(gòu)架,在游戲中的實(shí)際測試差距并沒有理論上那么巨大呢? GPU的最終目的,在于順序的執(zhí)行幾何處理、光柵化、材質(zhì)、Pixel Shader以及混合輸出這5個(gè)部分的操作,每一個(gè)操作都會帶來相應(yīng)的長短不一的延遲,而這些操作的總延遲被限定在了小于平均33毫秒的狹小時(shí)間范圍內(nèi)。如果某一幀畫面中某個(gè)組成部分的渲染延遲過大,導(dǎo)致該幀畫面的總執(zhí)行時(shí)間大幅超越了這一范圍,而其他畫面的執(zhí)行過程帶來的時(shí)間差又無法彌補(bǔ)這個(gè)損失的話,最終反映到我們面前的最直觀體現(xiàn),就是畫面更新速度的瞬時(shí)大幅下降,也就是最低幀(min FPS)的出現(xiàn)。
這種忽然放慢節(jié)奏的畫面更新狀態(tài)雖然持續(xù)時(shí)間通常很短,但卻能因最低幀程度的不同直接影響我們感受到的畫面流暢度。被忽然打斷這件事,相信對任何一個(gè)人來說都不會是愉快的體驗(yàn)。也正因?yàn)樽畹蛶某掷m(xù)時(shí)間通常很短,才導(dǎo)致了在以收集平均幀數(shù)為目標(biāo)的常規(guī)游戲測試中很難得到充分體現(xiàn)這個(gè)結(jié)局。 依想象力和表達(dá)能力不同,對于特定的編程者來說,構(gòu)成圖形處理過程的5個(gè)組成部分的意義和所占比重也不盡相同。有些編程者傾向于完美的模型修飾,有些編程者則喜歡真實(shí)、復(fù)雜同時(shí)靈活的光影效果表達(dá),還有些編程者喜歡精雕細(xì)琢每一個(gè)細(xì)節(jié),最后通過巨量的圖形元素來構(gòu)筑完美的圖像,這些風(fēng)格上的差異,為編程者帶來了不同的硬件需求。 如果這些編程者的需求如果無法從硬件中得到滿足,所產(chǎn)生的必然結(jié)果便是最小幀的出現(xiàn)。因此,具備廣泛的適應(yīng)性,能夠迎合編程者表達(dá)真實(shí)視覺體驗(yàn)的需求,以均衡的構(gòu)架搭配來盡可能地消滅總執(zhí)行延遲大幅超越33毫秒的最低幀事件發(fā)生的GPU構(gòu)架,才能被稱作是優(yōu)秀的GPU構(gòu)架。 均衡二字并不復(fù)雜,但要想真正做到卻又談何容易。幾何單元的配比和構(gòu)成、材質(zhì)的拾取速度、Shader的總吞吐能力以及靈活執(zhí)行能力、ROP單元的輸出效率還有緩沖體系和構(gòu)架宏觀結(jié)構(gòu)提供的延遲掩蓋能力等等要素必須同時(shí)得到照顧,如果其中任何一個(gè)甚至是多個(gè)要素出現(xiàn)了偏差,都會影響到我們或的連貫畫面的過程。
這世界上有完美的GPU構(gòu)架么?很遺憾,沒有,即便是最新的GPU中也沒有。NVIDIA的Fermi在幾何端、ALU靈活度、高速片上緩沖體系以及構(gòu)架的宏觀并行度等方面非常均衡甚至接近完美,但并不出眾的材質(zhì)資源密度以及相對較小的顯存體系影響了它進(jìn)一步釋放性能的張力。AMD的Cayman在吞吐能力,材質(zhì)處理能力以及顯存體系尺寸方面十分出色,但其他方面卻又乏善可陳。再加上家用機(jī)平臺干擾導(dǎo)致的極度魚龍混雜的PC游戲編程界現(xiàn)狀,我們所能夠做的,似乎就只有在較小的最低幀以及較大的最低幀之間進(jìn)行選擇而已了。
當(dāng)然,雖然現(xiàn)狀并不完美,但我們也無需因此而失望甚至絕望。GPU用十余年時(shí)間譜寫出了宏大的發(fā)展史詩,期間雖然存在諸多錯(cuò)誤甚至是倒退,但在追求完美視覺享受這一方向的指引下,其整體前進(jìn)的步伐是沒有改變的。每經(jīng)歷一次發(fā)展和更新,我們距離能夠消滅最低幀的均衡圖形構(gòu)架都會更進(jìn)一步,相信在不久的將來,我們一定能夠看到真正完美的GPU的出現(xiàn)。 ● 尾聲:百科的最后一頁,余音悠長 6個(gè)月前的那個(gè)初夏的夜晚,當(dāng)我敲擊鍵盤打出GPU大百科全書這幾個(gè)字時(shí),包括我在內(nèi)的所有人都不會想到這幾個(gè)字將會成為一次綿延近200天的漫長旅程。其實(shí)最開始我們籌備GPU大百科全書時(shí)的想法非常簡單,其目的僅僅是為了糾正大量網(wǎng)上資料中對于GPU各部件注釋以及介紹里出現(xiàn)的荒謬錯(cuò)誤。“GPU這玩意很簡單啊,不就是幾個(gè)單元放在一起通上電就能在屏幕上顯示圖像的東西么,介紹起來很簡單啦”。但當(dāng)我們敲擊起手中的鍵盤,想要“簡單的介紹一下”GPU時(shí),我們發(fā)現(xiàn)自己錯(cuò)了。 第一期GPU大百科全書的“封面” 我們創(chuàng)作和閱讀了無數(shù)篇關(guān)于GPU的功能、GPU的性能、GPU的構(gòu)架、GPU的性價(jià)比甚至是GPU大小的文章,我們從GPU中獲得了游戲娛樂的享受,我們每天好像都在為了自己喜愛的產(chǎn)品與別人在網(wǎng)絡(luò)中爭吵,我們購買了無數(shù)塊GPU,同時(shí)也丟棄了無數(shù)塊GPU,但我們似乎從來沒有問過自己這樣一個(gè)問題—— GPU,究竟是什么。 我們?yōu)榫烤篂楹尾少廏PU而迷茫,因?yàn)槲覀儾⒉涣私釭PU,我們只知道它是一個(gè)可以用來娛樂的工具。我們?yōu)镚PU高昂的售價(jià)而彷徨,因?yàn)槲覀儾⒉焕斫釭PU,我們只知道它在掏空著我們的荷包。我們在為了GPU的爭吵中不斷地撒謊,甚至不惜以捏造和謾罵的方式去盡情的攻擊與我們意見向左的人,因?yàn)槲覀儾⒉皇浅鲇谧鹬谿PU的存在,僅僅是為了滿足自己的被認(rèn)同感而已。我們甚至不認(rèn)為GPU是我們生活的組成部分,它只是一個(gè)一閃而過的電子產(chǎn)品。 GPU,究竟是什么? GPU是人類想象力的延伸,它越過了大自然對人類表述能力的束縛和限制,將我們腦海中任意奔放的涌動轉(zhuǎn)化成了眼前真切存在著圖形。在它創(chuàng)造和主宰的空間中,我們可以看到綺麗的風(fēng)景、看到驚險(xiǎn)和刺激,看到一幕幕交織在一起的愛恨情仇,甚至看到我們內(nèi)心的丑惡和陰暗。憑借GPU,游戲制造者們將他們內(nèi)心深處的激情和想象完美的呈現(xiàn)在了世人的面前,并且張開了雙臂歡迎所有愿意的人們加入到這激情當(dāng)中。如果沒有GPU的存在,我們甚至可能永遠(yuǎn)都無法與自己想象中的畫卷發(fā)生哪怕一毫秒的直接聯(lián)系。
GPU是凝聚了無數(shù)人的無數(shù)汗水、勞碌、挫折和雀躍而產(chǎn)生的產(chǎn)品,創(chuàng)造者們?nèi)诵詫用娴奶刭|(zhì)像烙印一般深深地刻在了GPU的靈魂深處。GPU各部件的工作需要完美的團(tuán)隊(duì)配合協(xié)作才能完成,GPU的高效工作需要緩沖作為調(diào)整才能得以實(shí)現(xiàn),甚至GPU之間的爭斗,也如同我們彼此的爭斗那樣充滿了爾虞我詐和你死我活。 GPU是一名歌者,它用自己33毫秒的詠嘆調(diào)向造物主展現(xiàn)著人們挑戰(zhàn)自然并展露自我本性的決心。GPU又是一面鏡子,它讓我們在使用的沉淀和回味中重新審視了自我。 正因?yàn)镚PU有這樣多不為人知的內(nèi)涵,我們才決定將一個(gè)原本非常簡單的說明書式的小科普選題一口氣放大成了一組十余萬字,綿延6個(gè)月的長篇連載。我們在每一期的大百科全書中都會竭盡所能為你展現(xiàn)最真實(shí)的GPU部件,不僅包括它們的功能和特點(diǎn),更包含了它們彼此之間的聯(lián)系,它們的歷史和未來,甚至還有它們的故事和傳奇。我們這樣做的目的,就是為了在向你介紹GPU的同時(shí),給你“GPU究竟是什么”的答案。我們覺得GPU有資格讓人們了解這一切,人們也應(yīng)該了解這一切。 GPU大百科全書完結(jié)了,盡管數(shù)不盡的不可抗力讓它留下了很多未能言盡的遺憾,作者膚淺的水平和拙劣的表達(dá)方式也給不少人的閱讀造成了困擾,但我們?nèi)匀幌嘈胚@本妄自尊大,敢于自命為“大百科全書”的東西最終替GPU說了一些該說的話,同時(shí)也讓更多的人了解了GPU的方方面面。我們做到了當(dāng)初的承諾,可以長長地出一口氣了。感謝所有陪伴我們走過這6個(gè)月艱苦歲月的人們,沒有你們的支持,這個(gè)連載幾乎不可能進(jìn)行下去。謝謝你們。 一千個(gè)人眼中有一千個(gè)哈姆雷特,我們眼中的GPU,未必就是你眼中的GPU。所以GPU大百科全書的完結(jié),并不代表著GPU傳奇的完結(jié)。它們正躺在你的機(jī)箱里,靜靜地等待著你的發(fā)掘更多的故事呢。 |
|