| 查看: 1831 | 回復(fù): 10 | |||
| 當(dāng)前主題已經(jīng)存檔。 | |||
yalefield金蟲 (文壇精英)
老漢一枚
|
[交流]
【分享】GPU為什么跑得快 [轉(zhuǎn)載]
|
||
|
去年底、今年初,老漢有兩篇關(guān)于GPU的帖子。 GPU文獻(xiàn)1篇:http://www.gaoyang168.com/bbs/viewthread.php?tid=702923 談?wù)凣PU吧:http://www.gaoyang168.com/bbs/viewthread.php?tid=672463 這里再轉(zhuǎn)載一篇: 作者:佚名 計(jì)算機(jī)能以每秒數(shù)十幀的速率,根據(jù)當(dāng)前的三維景物實(shí)時生成三維動畫。你所看到的圖像會隨著你視點(diǎn)的變化而即時改變,使人產(chǎn)生“身臨其境”的感覺。高的幀率可以得到更流暢的畫面。一般來說30fps就是可以接受的,但是將幀速增加至60fps則可以明顯提升交互感。這與計(jì)算機(jī)影視制作不同,電影特效可以通過很多臺工作站,花幾十個小時繪制出長度僅為幾秒的高質(zhì)量畫面,并不強(qiáng)調(diào)實(shí)時性。 渲染一個復(fù)雜的三維場景,需要在一秒內(nèi)處理幾千萬個三角形頂點(diǎn)和光柵化幾十億的像素。早期的3D游戲,顯卡只是為屏幕上顯示像素提供一個緩存,所有的圖形處理都是由CPU單獨(dú)完成。 圖形渲染適合并行處理,擅長于執(zhí)行串行工作的CPU實(shí)際上難以勝任這項(xiàng)任務(wù)。所以,那時在PC上實(shí)時生成的三維圖像都很粗糙。不過在某種意義上,當(dāng)時的圖形繪制倒是完全可編程的,只是由CPU來擔(dān)綱此項(xiàng)重任,速度上實(shí)在是達(dá)不到要求。 直到1995年,PC機(jī)領(lǐng)域第一款GPU (Graphical Processing Unit) 3dfx Voodoo出來以后,游戲的速度、畫質(zhì)才取得了一個飛躍。 3dfx Voodoo有兩個主要的特征:深度緩沖區(qū)(z-buffer)和紋理映射(texture mapping)。z-buffer執(zhí)行“隱藏面消除”這一工作,這樣可以避免渲染“不可視”的無效像素。利用紋理映射功能則可以十分逼真地表達(dá)物體表面細(xì)節(jié)。 1999年,第二代GPU (Nvidia GeForce256,GeForce 2和ATI Radeon 7500)包括了圖形的幾何變換與光照計(jì)算功能(T&L)。而在此之前T&L都是由CPU完成的,這對CPU來說是很復(fù)雜的計(jì)算。 第二代GPU解決了系統(tǒng)的一個瓶頸,減輕了CPU的負(fù)荷,速度明顯提高了。但是由于是固定的渲染流水線,缺乏靈活性,束縛了開發(fā)人員的創(chuàng)造性。 2001年,NIVIDA公司的GeForce 3首先引入了可編程的頂點(diǎn)著色器(Vertex Shader)單元。 2002年,可編程的像素著色器(Pixel Shader)單元也加入了GPU (見圖1)。 在繪制時,GPU首先接收CPU以三角形頂點(diǎn)形式的發(fā)送的幾何數(shù)據(jù)。然后由可編程的頂點(diǎn)著色器單元進(jìn)行處理,完成幾何變換與頂點(diǎn)屬性計(jì)算等功能。接著,這些三維空間的三角形由一個固定功能的光柵生成器轉(zhuǎn)換為二維屏幕上的像素。每個像素的最終顏色值都通過運(yùn)行在像素著色器上的小程序運(yùn)算而得。目前三維游戲借助于GPU,已經(jīng)能夠?qū)崟r生成十分細(xì)膩、逼真的畫面。 [ Last edited by xuefei06 on 2008-12-30 at 00:03 ] |
金蟲 (文壇精英)
老漢一枚
|
GPU的功能更新很迅速,平均每一年多便有新一代的GPU誕生,運(yùn)算速度也越來越快。 2004年推出的GPU Nvidia GeForce 6800 Ultra可達(dá)到峰值40 Gigaflops( 1 GigaFLOPS=1秒鐘進(jìn)行10億次的浮點(diǎn)運(yùn)算) 2005年發(fā)布的 Nvidia GeForce 7800 GTX更是將峰值提高至令人驚訝的169 Gigaflops。而Intel 3GHz Pentium 4采用SSE指令集也只能達(dá)到6 Gigaflops(見圖2)。 GPU的運(yùn)算速度如此之快,主要得益于GPU是對圖形實(shí)時渲染量身定制的,具有兩點(diǎn)主要特征:超長流水線與并行計(jì)算。 GPU、CPU浮點(diǎn)運(yùn)算速度對比圖: |
金蟲 (文壇精英)
老漢一枚
|
流水線技術(shù)與工廠里的裝配線在原理上類似。 如果裝配一臺汽車需要10個時間單元,將它分成10個流水線階段,每個階段分配一個時間單元,那么一條裝配線每一個時間單元就可以生產(chǎn)一輛汽車。顯然流水線模式的生產(chǎn)在理想狀況下要比串行方式快了十倍。 從這個例子中,可以看出為了提高流水線的速度,可以將任務(wù)劃分成更小的單元,這樣流水線的級數(shù)就增加了。CPU的設(shè)計(jì)中就使用了流水線原理,奔騰IV就有20級的流水線。但是流水線級數(shù)越多,一條指令從開始進(jìn)入流水線到最后被執(zhí)行完畢這之間的延遲間隔會相當(dāng)大。換句話說,當(dāng)流水線級數(shù)過多時,控制臺發(fā)出一條指令,會經(jīng)過很長時間才會真正生效,這不適用于快速反應(yīng)要求很高的場合。 打個比方,當(dāng)用消防水龍頭救火時,正常情況下打開閥門開關(guān)幾秒后水便噴射出來,立刻可用來撲滅火災(zāi)。但是如果延遲了十幾分鐘,才有水流出,即使這時水流速度(吞吐量)還是很快,不過這時火災(zāi)就會造成更大的損失了。 CPU的設(shè)計(jì)目標(biāo)是不僅要有很高的吞吐量,還要求很小的延遲,這是CPU并不采用過多流水線級數(shù)的原因之一。另外流水線只有在滿載時,才能發(fā)揮出最佳效率來。由于CPU執(zhí)行的代碼中有很多分支語句,因此長流水線需要用有效的技術(shù)來預(yù)測分支,盡量保持流水線在滿負(fù)荷狀態(tài)。但是一旦預(yù)測分支失敗,就會清除流水線中滯留的大量無用指令,同時將新指令流重新注入流水線。但是如果流水線階段過多的話,充滿整個流水線就需要很長的時間,這樣使流水線保持滿載的機(jī)會不多,速度反而下降了。所以權(quán)衡利弊,CPU不會使用深度流水線。 但是GPU卻采用了幾百級的流水線,比如GeForce 3的流水線有800個階段。 是什么原因,GPU的應(yīng)用為何可以忍受這么大的延遲呢?假設(shè)以每秒50幀的速率顯示畫面,那么只要求每幀在20ms以內(nèi)生成就行。而GeForce 3的時鐘頻率是200MHz(每個時鐘周期是5ns),5ns * 800 = 4μs < 20ms。所以對GPU來說這一些延遲根本不成問題,而且GPU中執(zhí)行的Shader程序中,分支語句用的很少(在早期的GPU中,甚至不提供動態(tài)的分支語句)。因此,GPU的流水線深度變大后,利大于弊,大大提升了整體性能。 GPU的執(zhí)行速度很快,但是當(dāng)運(yùn)行從內(nèi)存中獲取紋理數(shù)據(jù)這樣的指令時(由于內(nèi)存訪問是瓶頸,此操作比較緩慢),整個流水線便出現(xiàn)長時間停頓。在CPU內(nèi)部,使用多級Cache來提高訪問內(nèi)存的速度。GPU中也使用Cache,不過Cache命中率不高,只用Cache解決不了這個問題。所以,為了保持流水線保持忙碌,GPU的設(shè)計(jì)者使用了多線程機(jī)制(multi-threading),見圖3。 當(dāng)像素著色器針對某個像素的線程A遇到存取紋理的指令時,GPU會馬上切換到另外一個線程B,對另一個像素進(jìn)行處理。等到紋理從內(nèi)存中取回時,可再切換到線程A。但是使用這種方法有一個前提,線程A與線程B沒有數(shù)據(jù)依賴性,也就是說兩線程之間無需通訊。如果線程B需要線程A提供某些數(shù)據(jù),那么即使切換到線程B,線程B仍是無法運(yùn)行,流水線還是處于空閑狀態(tài)。不過幸運(yùn)的是,圖形渲染本質(zhì)上是一個并行任務(wù)。 無論是CPU送給GPU的頂點(diǎn)數(shù)據(jù),還是GPU光柵生成器產(chǎn)生的像素?cái)?shù)據(jù)都是互不相關(guān)的,可以并行地獨(dú)立處理。而且頂點(diǎn)數(shù)據(jù)(xyzw),像素?cái)?shù)據(jù)(RGBA)一般都用四元數(shù)表示,適合于并行計(jì)算。在GPU中專門設(shè)置了SIMD指令來處理向量,一次可同時處理四路數(shù)據(jù)。SIMD指令使用起來非常簡潔,可以看一個頂點(diǎn)矩陣變換的例子(見下代碼)。此外,紋理片要么只能讀取,要么只能寫入,不允許可讀可寫,從而解決了存貯器訪問的讀寫沖突。GPU這種對內(nèi)存使用的約束也進(jìn)一步保證了并行處理的順利完成。 GPU中的多線程機(jī)制: |
金蟲 (文壇精英)
老漢一枚
|
為了進(jìn)一步提高并行度,可以增加流水線的條數(shù)。 在GeForce 6800 Ultra中,有多達(dá)16組像素著色器流水線, 6組頂點(diǎn)著色器流水線。多條流水線可以在單一控制部件的集中控制下運(yùn)行,也可以獨(dú)立運(yùn)行。在單指令多數(shù)據(jù)流(SIMD)的結(jié)構(gòu)中,單一控制部件向每條流水線分派指令,同樣的指令被所有處理部件同時執(zhí)行。 另外一種控制結(jié)構(gòu)是多指令多數(shù)據(jù)流(MIMD),每條流水線都能夠獨(dú)立于其他流水線執(zhí)行不同的程序。GeForce 6800 Ultra的頂點(diǎn)著色器流水線使用MIMD方式控制,像素著色器流水線使用SIMD結(jié)構(gòu)。MIMD能比較有效率地執(zhí)行分支程序,而SIMD體系結(jié)構(gòu)運(yùn)行條件語句時會造成很低的資源利用率。不過SIMD需要硬件少,這是一個優(yōu)勢。 CPU中大部分晶體管主要用于構(gòu)建控制電路(象分支預(yù)測等)和Cache,只有少部分的晶體管來完成實(shí)際的運(yùn)算工作。而GPU的控制相對簡單,而且對Cache的需求小,所以大部分晶體管可以組成各類專用電路、多條流水線,使得GPU的計(jì)算速度有了突破性的飛躍,擁有了驚人的處理浮點(diǎn)運(yùn)算的能力。 現(xiàn)在CPU的技術(shù)進(jìn)步正在慢于摩爾定律,而GPU(視頻卡上的圖形處理器)的運(yùn)行速度已超過摩爾定律,每6個月其性能加倍。 雖然GPU最初專門是為圖形渲染設(shè)計(jì)的,但是GPU還可以有效地執(zhí)行多種通用計(jì)算,從線性代數(shù)和信號處理到數(shù)值仿真等等。有的專家甚至認(rèn)為GPU將進(jìn)入計(jì)算的主流。過去,學(xué)生們在課堂學(xué)習(xí)計(jì)算機(jī)體系結(jié)構(gòu)時,聽老師講解各類并行計(jì)算機(jī)時,仿佛覺得這些東西都是科學(xué)家才使用的尖端產(chǎn)品?捎趾卧氲,現(xiàn)在并行計(jì)算機(jī)(GPU) 就在我們的普通PC電腦內(nèi),觸手可及。 主要參考文獻(xiàn): [ Last edited by yalefield on 2008-4-26 at 02:37 ] |
金蟲 (文壇精英)
老漢一枚
|
孫永杰 如果說4月初上海的IDF,英特爾關(guān)于GPU(圖形顯示芯片)的一席話引發(fā)業(yè)內(nèi)關(guān)于GPU和CPU誰將替代誰的爭論的話,那么隨著NVIDIA(簡稱NV)首席執(zhí)行官黃仁勛(Jen-HsunHuang)炮轟英特爾的整合圖形芯片組完全是“一個笑話”,聲稱GPU比CPU更重要,人們應(yīng)該多花錢在GPU上面之后,NVIDIA的副總裁Roy Taylor(綽號Big Pipe)索性宣告英特爾的CPU已經(jīng)死亡。 筆者認(rèn)為,Roy Taylor的這番話確實(shí)太過極端了。先不要說NV的GPU要取代英特爾的CPU,其實(shí)目前在NV最擅長的GPU領(lǐng)域,NV也未占到絕對的優(yōu)勢。 眾所周知的事實(shí)是,目前的GPU市場是三足鼎立。 英特爾牢牢掌握著GPU市場的頭把交椅。在去年的第四季度,英特爾占據(jù)了GPU市場的41.1%,NV為31.8%,AMD為22.8%。具體到細(xì)分的臺式PC和筆記本市場,在臺式PC英特爾的發(fā)貨份額為37.7%,以0.6%的略微優(yōu)勢超過NV排名第一,NV的份額為37.1%屈居第二,AMD的份額為19%排第三名。 在筆記本圖形處理器市場,英特爾的份額從三季度的45%上升到46.8%,以壓倒優(yōu)勢高居榜首,AMD位居第二,它的份額從第三季度的21%上升到29%,NV從三季度的32%下降為22.8%排第三名。 從這個統(tǒng)計(jì)可以看出,目前NV即使是在獨(dú)立顯卡普及的臺式PC中也還沒有排在老大的位置上。而在筆記本市場,NV與英特爾的差距更大。而隨著超低價便攜筆記本市場的興起,鑒于功耗、體積和功能的原因,獨(dú)立顯卡在這塊市場中難有用武之地。換句話說,英特爾整合圖形芯片在未來相當(dāng)?shù)囊欢螘r間里還將將牢牢占據(jù)著這塊市場。 說到超低價便攜筆記本,除了英特爾日前發(fā)布的Atom(凌動)系列處理器外,NV也加入到了此陣營。據(jù)稱,NV與英特爾和AMD之外的唯一x86處理器供應(yīng)商—威盛電子欲建立一種PC平臺,被稱為“全球最經(jīng)濟(jì)的Vista高檔PC”,這個單價不到45美元的處理平臺,將結(jié)合威盛的Isaiah處理器與一個整合的NV繪圖芯片組。從這里也可以看出,即使是揚(yáng)言CPU已死的NV,還是未能脫離CPU而成為PC的核心。看來NV虛張聲勢的成分很大。倒是英特爾未來的Larrabee(一種可編程的多核心架構(gòu))讓NV感覺到了莫大的威脅。 Larrabee與AMD、NVIDIA的GPGPU(通用計(jì)算圖形處理器)技術(shù)不同,后兩者分別使用Stream Processing(流處理)和CUDA(統(tǒng)一計(jì)算設(shè)備架構(gòu))來滿足對GPGPU計(jì)算的需求。而Larrabee基于傳統(tǒng)的x86架構(gòu),它既可用在顯卡上,也可用作一個特殊的x86處理器,滿足一些高性能計(jì)算的需求。由此筆者認(rèn)為,英特爾的Larrabee進(jìn)可直接威脅到NV獨(dú)立顯卡市場的地位,退可以繼續(xù)鞏固自己在整合圖形芯片市場的優(yōu)勢,同時又不會讓自己的通用處理器CPU在未來失去現(xiàn)有的統(tǒng)治地位。為此,《連線》雜志在2007年初曾經(jīng)專門提及英特爾在這方面的表現(xiàn):即一旦這個龐然大物利用市場優(yōu)勢推出融合了通用處理和圖形處理的處理器,對整個產(chǎn)業(yè)鏈的打擊是相當(dāng)強(qiáng)烈的,甚至?xí)侵旅摹腘V近期近乎瘋狂的言論看,這種打擊的潛在效應(yīng)已經(jīng)開始顯現(xiàn)。 其實(shí)近期業(yè)內(nèi)所稱的未來GPU將會替代CPU,大多也是人云亦云,其論點(diǎn)無非是理論上GPU的浮點(diǎn)運(yùn)算性能要遠(yuǎn)遠(yuǎn)高于CPU,而且未來的應(yīng)用趨勢將以圖形和視頻為主,所以GPU會有更加廣闊的市場。但筆者認(rèn)為,依此就斷定GPU一定取代CPU的確有失偏頗。目前用同樣多的晶體管CPU浮點(diǎn)運(yùn)算性能之所以不如GPU,其根本原因并不在于CPU的設(shè)計(jì)落后,而是CPU內(nèi)有大量的緩存。在部分特別運(yùn)算要求下,GPU的性能可以發(fā)揮得淋漓盡致,但對于通用計(jì)算來說,保持?jǐn)?shù)據(jù)執(zhí)行過程中數(shù)據(jù)流的最大平行性與最小關(guān)聯(lián)度這就不是GPU架構(gòu)可以達(dá)到的了。此外,由于自身架構(gòu)的限制,GPU無法直接處理物理計(jì)算指令,這是其走向通用性最大的障礙。 說到這,筆者不得不引出技術(shù)之外的話題,那就是戰(zhàn)略。 業(yè)內(nèi)人士清晰記得,在2005年,英特爾低調(diào)收購了愛爾蘭的Havok公司,這是一家在圖形處理方面擁有強(qiáng)大技術(shù)實(shí)力的公司。業(yè)內(nèi)人士本以為此舉是英特爾彌補(bǔ)其在GPU技術(shù)上軟肋的舉措,但從近日IDF上英特爾公布的Larrabee仍然基于傳統(tǒng)的X86架構(gòu)的事實(shí)看,英特爾收購Havok公司完全是為了阻止NV和AMD-Ati利用Havok公司開發(fā)的Havok FX引擎,因?yàn)檫@一引擎,將會使得GPU的物理計(jì)算成為可能,即Havok將幫助AMD和NV的GPU進(jìn)入物理計(jì)算以及流計(jì)算領(lǐng)域,而一旦Havok FX引擎得到游戲的廣泛支持成為既定標(biāo)準(zhǔn),那么英特爾憑借Larrabee平臺來推行自己的流計(jì)算指令集的計(jì)劃將遭到嚴(yán)峻的挑戰(zhàn)。從這里可以看出,英特爾在戰(zhàn)略上的技高一籌。 眾多的事實(shí)證明,一個產(chǎn)業(yè)的興起,光有技術(shù)上的優(yōu)勢是遠(yuǎn)遠(yuǎn)不夠的,一個公司的發(fā)展戰(zhàn)略、產(chǎn)業(yè)鏈的影響和培養(yǎng)、市場和用戶的習(xí)慣和接受度等的任何一個因素都不亞于技術(shù)對于這個產(chǎn)業(yè)的影響。所以筆者認(rèn)為,從未來看,僅僅憑著理論上的技術(shù)優(yōu)勢就斷言某個產(chǎn)業(yè)的衰亡和興起實(shí)屬草率,而從現(xiàn)在看,CPU不可或缺,仍在PC系統(tǒng)中起著核心的作用。理由很簡單,現(xiàn)在哪個PC能夠離開CPU而只裝有GPU?即使NV稱CPU已經(jīng)消亡,并且有了只裝有GPU的PC,那么你敢買嗎?看來從現(xiàn)在到未來相當(dāng)?shù)臅r間里,CPU和GPU還是各司其職的好。 至于說到未來,憑借英特爾的實(shí)力,NV要想以GPU取而代之談何容易。 此外,從日前曝光的英特爾主板不支持微軟的Windows Vista的Vista Capable標(biāo)簽訴訟案中,英特爾在很大程度上為NV背了黑鍋。據(jù)微軟在此次訴訟中公布的一份長達(dá)158頁的微軟內(nèi)部郵件集中披露,在微軟初期收到的166萬份Vista系統(tǒng)崩潰報(bào)告中,由NV驅(qū)動引起的崩潰達(dá)到47.9萬次,占28.8%。微軟開發(fā)的驅(qū)動程序占17.9%居次席,此后分別是未知原因17%,ATi驅(qū)動9.3%,英特爾驅(qū)動8.83%。 從這個統(tǒng)計(jì)可以看出,當(dāng)時業(yè)內(nèi)以此評價英特爾創(chuàng)新乏力實(shí)在是有失公允。這多少讓NV的首席執(zhí)行官黃仁勛以此事炮轟英特爾的GMA3100圖形芯片顯得有些無力和尷尬。這也從一個側(cè)面反映出,NV在GPU領(lǐng)域依舊存有不少的問題。既然在自己的領(lǐng)域都未做到最好,就進(jìn)入人家擅長的領(lǐng)域,并談什么替代CPU,難免給人一種“芯”太軟和做秀的感覺。 |
木蟲 (著名寫手)

金蟲 (正式寫手)
銀蟲 (小有名氣)
金蟲 (文壇精英)
老漢一枚
銀蟲 (小有名氣)
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 279求調(diào)劑 +4 | 蝶舞輕繞 2026-03-29 | 4/200 |
|
|---|---|---|---|---|
|
[考研] 356求調(diào)劑 +3 | gysy?s?a 2026-03-28 | 3/150 |
|
|
[考研] 070305高分子化學(xué)與物理 304分求調(diào)劑 +7 | c297914 2026-03-28 | 7/350 |
|
|
[考研] 一志愿哈爾濱工業(yè)大學(xué)材料與化工方向336分 +9 | 辰沐5211314 2026-03-26 | 9/450 |
|
|
[考研] 壓國家一區(qū)線,求導(dǎo)師收留,有恩必謝! +7 | 迷人的哈哈 2026-03-28 | 7/350 |
|
|
[考研] 一志愿中南大學(xué)化學(xué)0703總分337求調(diào)劑 +5 | niko- 2026-03-27 | 5/250 |
|
|
[考研] 0703一志愿9,初試成績:338,四六級已過,有科研經(jīng)歷,求調(diào)劑! +4 | Zuhui0306 2026-03-25 | 4/200 |
|
|
[考研] 一志愿南京航空航天大學(xué)材料學(xué)碩求調(diào)劑 +3 | @taotao 2026-03-28 | 3/150 |
|
|
[考研] 一志愿南師大0703化學(xué) 275求調(diào)劑 +4 | Ripcord上岸 2026-03-27 | 4/200 |
|
|
[考研] 085600,材料與化工321分,求調(diào)劑 +9 | 大饞小子 2026-03-27 | 9/450 |
|
|
[考研] 305求調(diào)劑 +5 | 哇盧卡庫 2026-03-26 | 5/250 |
|
|
[考研] 315調(diào)劑 +4 | 0860求調(diào)劑 2026-03-26 | 5/250 |
|
|
[考研] 一志愿吉大071010,316分求調(diào)劑 +3 | xgbiknn 2026-03-27 | 3/150 |
|
|
[考研] 284求調(diào)劑 +11 | junqihahaha 2026-03-26 | 12/600 |
|
|
[考研] 0703化學(xué)求調(diào)劑 +3 | 丹青奶蓋 2026-03-26 | 5/250 |
|
|
[考研] 086000生物與醫(yī)藥292求調(diào)劑 +6 | 小小陳小小 2026-03-22 | 9/450 |
|
|
[考研] 一志愿南航材料專317分求調(diào)劑 +5 | 炸呀炸呀炸薯?xiàng)l 2026-03-23 | 5/250 |
|
|
[考研] 292求調(diào)劑 +4 | 鵝鵝鵝額額額額?/a> 2026-03-24 | 4/200 |
|
|
[基金申請] 請教下大家 2026年國家基金申請是雙盲審嗎? +3 | lishucheng1 2026-03-22 | 5/250 |
|
|
[考研] 284求調(diào)劑 +3 | yanzhixue111 2026-03-23 | 6/300 |
|