圖形硬件簡(jiǎn)史與可編程管線
GPU發(fā)展簡(jiǎn)史
GPU英文全稱(chēng)Graphic Processing Unit,中文翻譯為“圖形處理器”,在現(xiàn)代計(jì)算機(jī)系統(tǒng)中的作用變得越來(lái)越重要
20世紀(jì)六七十年代,受硬件條件的限制,圖形顯示器只是計(jì)算機(jī)輸出的一種工具,限于硬件發(fā)展水平。人們只是純粹從軟件實(shí)現(xiàn)的角度來(lái)考慮圖形用戶界面的規(guī)范問(wèn)題,此時(shí)還沒(méi)有GPU的概念
GPU概念在20世紀(jì)70年代末和80年代初被提出,使用單片集成電路作為圖形芯片,此時(shí)的GPU被用于視頻游戲和動(dòng)畫(huà)方面,它能夠很快的進(jìn)行幾張圖片的合成(僅限于此)。在20世紀(jì)80年代末到90年代初這段時(shí)間內(nèi),基于數(shù)字信號(hào)處理芯片的GPU被研發(fā)出來(lái),與前代相比速度更快,功能更強(qiáng),當(dāng)然價(jià)格是非常的昂貴。在1991年,S3 Graphics公司研制出第一個(gè)單芯片2D加速器,到了1995年,主流的PC圖形芯片廠商都在自己的芯片上增加了對(duì)2D加速器的支持
1998年NVIDA公司宣布modern GPU研發(fā)成功,標(biāo)志著GPU研發(fā)的歷史性突破成為現(xiàn)實(shí),通常將20世紀(jì)70年代末到1998年的這一段時(shí)間,稱(chēng)為pre-GPU時(shí)期,而自1998年往后的GPU稱(chēng)為modern GPU,在pre-GPU時(shí)期,一些圖形廠商如SGI、Evans & Sutherland,都研發(fā)了各自的GPu,這些GPU在現(xiàn)在并沒(méi)有被淘汰,依然在持續(xù)改進(jìn)和被廣泛的使用,當(dāng)然價(jià)格也是非常的高昂。modern GPU使用晶體管( transistors)進(jìn)行計(jì)算,在微芯片( microchip)中,GPU所使用的晶體管已經(jīng)遠(yuǎn)遠(yuǎn)超過(guò)CPU。例如,Intel在2.4GHz 的Pentium lV上使用5千5百萬(wàn)(55million)個(gè)晶體管;而NVIDIA在GeForce FX GPU上使用超過(guò)1億2千5百萬(wàn)( 125 million)個(gè)晶體管,在NVIDDIA 7800 GXT上的晶14體管達(dá)到3億2百萬(wàn)( 302 million)個(gè)。
回顧GPU的發(fā)展歷史,自1998年后可以分為4個(gè)階段。NVIDIA于1998年宣布Modern GPU研發(fā)成功,這標(biāo)志著第一代Modern GPU的誕生,第一代GPU包括NVIDIA TNT2,ATI 的Rage和3Dfx的Voodoo。這些GPU可以獨(dú)立于CPU進(jìn)行像素緩存區(qū)的更新,并可以光柵化三角面片以及進(jìn)行紋理操作,但是缺乏三維頂點(diǎn)的空間坐標(biāo)變換能力,這意味著“必須依賴(lài)于CPU執(zhí)行頂點(diǎn)坐標(biāo)變換的計(jì)算”。這一時(shí)期的GPU功能非常有限,只能用于紋理組合的數(shù)學(xué)計(jì)算或者像素顏色值的計(jì)算。
1999年,nvidia推出了一款可以用“驚變”來(lái)形容的顯示核心代號(hào)NV10的geforce 256。nVidia率先將硬體T&L整合到顯示核中。T&L原先由CPU負(fù)責(zé),或者由另一個(gè)獨(dú)立處理機(jī)處理。T&L是一大進(jìn)步,原因是顯視核心從CPU接管了大量工作。硬件T&L引擎帶來(lái)的效果是,3D模型可以用更多的多邊形來(lái)描繪,這樣就擁有了更加細(xì)膩的效果。而對(duì)于Lighting來(lái)說(shuō),CPU不必冉計(jì)算大重的光照數(shù)據(jù),直接通過(guò)顯卡就能獲得更好的效能。同時(shí),這一階段的GPU對(duì)于紋理的操作也擴(kuò)展到了立方體紋理(cube map) 。NVIDIA的GeForce MAX,ATI的Radeon 7500等都是在這一階段研發(fā)的。
2001年是第三代modern GPU的發(fā)展時(shí)期,這一時(shí)期研發(fā)的GPU提供vertex programmability (頂點(diǎn)編程能力),如GeForce 3,GeForce 4Ti,ATI的8500等。這些GPU允許應(yīng)用程序指定一個(gè)序列的指令進(jìn)行頂點(diǎn)操作控制(GPU編程的本質(zhì)! ),這同樣是一個(gè)具有開(kāi)創(chuàng)意義的時(shí)期,這一時(shí)期確立的GPU編程思想一直延續(xù)到今天,不但深入到工程領(lǐng)域幫助改善人類(lèi)日常生活(醫(yī)療、地質(zhì)勘探、游戲、電影等),而且開(kāi)創(chuàng)或延伸了計(jì)算機(jī)科學(xué)的諸多研究領(lǐng)域(體繪制、光照模擬、人群動(dòng)畫(huà)、通用計(jì)算等)。同時(shí),Direct8和OpenGL都本著與時(shí)俱進(jìn)的精神,提供了支持vertexprogrammability 的擴(kuò)展。不過(guò),這一時(shí)期的GPU還不支持像素級(jí)的編程能力,即fragment programmability (片段編程能力)。
所謂Vertex,就是我們熟悉的組成3D圖形的頂點(diǎn),由于設(shè)計(jì)3D模型是基于坐標(biāo)空間內(nèi)部設(shè)計(jì)的,所以Vertex信息包含了3D模型在空間內(nèi)的坐標(biāo)等信息。Vertex Shader則是對(duì)于Vertex信息的運(yùn)算編程器,可以通過(guò)賦予特定的算法而在工作中改變3D模型的外形,Vertex Shader頂點(diǎn)運(yùn)算單元可以直接檢索顯存中的材質(zhì)數(shù)據(jù)。現(xiàn)在的游戲場(chǎng)景越來(lái)越復(fù)雜了。所涉及到的材質(zhì)和多邊形數(shù)量都非常驚人。頂點(diǎn)材質(zhì)技術(shù)可以極大的提高GPU在處理復(fù)雜的游戲場(chǎng)景時(shí)的效率。并且游戲開(kāi)發(fā)人員還可以利用Vertex Shader的這一新的特性,充分發(fā)揮想象,實(shí)現(xiàn)很多非常漂亮的特效。例如在星際爭(zhēng)霸2demo片中展示的神族母艦黑洞的技能效果。
第四代GPU的發(fā)展時(shí)期從2002年末到2003年。NVIDIA的GeForceFX和ATI Radeon 9700同時(shí)在市場(chǎng)的舞臺(tái)上閃亮登場(chǎng),這兩種GPU都支持vertex programmability和fragmentProgrammability。同時(shí)DirectX和OpenGL也擴(kuò)展了自身的API,用以支持vertex programmability和fragment programmability。自2003年起,可編程圖形處理器正式誕生,并且由于DirectX和OpenGL鍥而不舍的追趕潮流,導(dǎo)致基于圖形硬件的編程技術(shù)簡(jiǎn)稱(chēng)GPU編程,也宣告誕生。
GPU的優(yōu)越性
由于GPU具有高并行結(jié)構(gòu),所以GPU在處理圖形數(shù)據(jù)和復(fù)雜算法方面擁有比CPU更高的效率。CPU大部分面積為控制器和寄存器,與之相比,GPU擁有更多的ALU (Arithmetic Logic Unit,邏輯運(yùn)算單元)用于數(shù)據(jù)處理,這樣的結(jié)構(gòu)適合對(duì)密集型數(shù)據(jù)進(jìn)行并行處理。
GPU采用流式并行計(jì)算模式,可對(duì)每個(gè)數(shù)據(jù)進(jìn)行獨(dú)立的并行計(jì)算,所謂“對(duì)數(shù)據(jù)進(jìn)行獨(dú)立計(jì)算”,即,流內(nèi)任意元素的計(jì)算不依賴(lài)于其它同類(lèi)型數(shù)據(jù),例如,計(jì)算一個(gè)頂點(diǎn)的世界位置坐標(biāo),不依賴(lài)于其他頂點(diǎn)的位置,所謂“并行計(jì)算”是指“多個(gè)數(shù)據(jù)可以同時(shí)被使用,多個(gè)數(shù)據(jù)并行運(yùn)算的時(shí)間和1個(gè)數(shù)據(jù)單獨(dú)執(zhí)行的時(shí)間是一樣的”。所以,在頂點(diǎn)處理程序中,可以同時(shí)處理N個(gè)頂點(diǎn)數(shù)據(jù)。
GPU的缺陷
由于“任意一個(gè)元素的計(jì)算不依賴(lài)于其它同類(lèi)型數(shù)據(jù)”,導(dǎo)致“需要知道數(shù)據(jù)之間相關(guān)性的”算法,在GPU上難以得到實(shí)現(xiàn),一個(gè)典型的例子是射線與物體的求交運(yùn)算。GPU中的控制器少于cPU,致使控制能力有限。另外,進(jìn)行GPU編程必須掌握計(jì)算機(jī)圖形學(xué)相關(guān)知識(shí),以及圖形處理APl,入門(mén)門(mén)檻較高,學(xué)習(xí)周期較長(zhǎng),尤其國(guó)內(nèi)關(guān)于GPU編程的資料較為匱乏,這些都導(dǎo)致了學(xué)習(xí)的難度。在早期,GPU編程只能使用匯編語(yǔ)言,開(kāi)發(fā)難度高、效率低,不過(guò),隨著高級(jí)Shader language的興起,在GPU上編程已經(jīng)容易多了。
GPU的更多應(yīng)用
科學(xué)可視化計(jì)算:由于人體CT、地質(zhì)勘探、氣象數(shù)據(jù)、流體力學(xué)等科學(xué)可視化計(jì)算處理的數(shù)據(jù)量極大,僅僅基于CPU進(jìn)行計(jì)算完全不能滿足實(shí)時(shí)性要求,而在GPU上進(jìn)行計(jì)算則可以任雙率上運(yùn)到質(zhì)的突破,許多在CPU上非常耗時(shí)的算法,如體繪制中的光線投射算法,都可以成功移植到GPu上,所以基于GPU的科學(xué)可視化研究目前已經(jīng)成為主流。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-825508.html
通用算法:基于GPU進(jìn)行通用計(jì)算的研究逐漸成為熱點(diǎn),被稱(chēng)之為GPGPU ( General-Purpose Computing on Graphics ProcessingUnits,也被稱(chēng)為GPGP,或GP2),很多數(shù)值計(jì)算等通用算法都已經(jīng)在GPU上得到了實(shí)現(xiàn),并有不俗的性能農(nóng)現(xiàn),日E,線t八效,物理仿真和光線跟蹤算法都已經(jīng)成功的移植到GPu上。在國(guó)內(nèi),中國(guó)科學(xué)院計(jì)算技術(shù)研究所進(jìn)行了基于GPU的串匹配算法的實(shí)現(xiàn)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-825508.html
到了這里,關(guān)于UnityShader——03圖形硬件簡(jiǎn)史與可編程管線的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!