隨著進入DX10時代以來統一渲染技術的引入,顯卡在整個電腦中的重要性已經逐漸超越了CPU。並行架構上的優勢讓GPU可以完成大規模的計算需求,而 NVIDIA CUDA與AMD的Stream技術更是給GPU完成大規模計算賦予了靈魂,之前本來只用CPU來計算的應用現在可以使用GPU進行計算,大幅度減輕了 CPU的負擔,也正是如此GPU就顯得越來越重要了。
其實CPU與GPU莫非都是晶體管製成的產物,但是架構上確有很大的區別。GPU採用的是並行計算架構,可以在同一單位時間內處理多條任務。比如一個擁有 240個流處理器的GPU,理論上同一時間內可以處理240個任務,而單核心的CPU同一時間內只能處理一條任務。近幾年,CPU也在朝著並行計算方向發 展,比如超執行緒技術、雙核甚至多核心處理技術等等。但是由於架構的限制,CPU想要發展成超多核的可能性並不大。
現在各行各業都已經開始逐漸採用GPU作為計算核心,與CPU相比,GPU的計算能力可以達到CPU的數倍甚至數十倍,在一些特殊的場合下甚至可以達到數 百倍。而成本上GPU卻和CPU差不多,甚至比CPU成本更低。這也是為什麼國產超級電腦“天河一號”採用了5120顆GPU作為加速處理器的原因。
除了在大規模計算應用環境下需要GPU之外,對於普通的個人電腦來說,GPU也非常重要。現在NVIDIA和AMD的GPU中都支援並行計算,都擁有專門 的視頻解碼模組。比如在看高清視頻的時候,使用GPU進行“硬解碼”可以讓CPU的佔用率非常低,甚至可以忽略不計。而在日常的一些應用比如 Photoshop影像處理、視頻轉碼中,使用GPU進行加速也可以讓效率得到很大程度上的提高,這些內容我們之前都有過很多的測試,這裡就不再贅述。
21世紀是互連網與資訊的時代,很多的應用都要在互連網上完成,比如通過Youtube我們可以看到來自全世界網友分享的視頻,通過Facebook我們 可以與全球的互連網使用者交朋友,通過Twitter我們可以直接給奧巴馬總統留言甚至聊天,通過Flickr我們可以瀏覽全世界網友分享的照片。
從目前來看,互連網上一切的應用都是由CPU來處理。但是隨著應用的複雜度越來越高,對計算量的要求也同樣正在增長。同時,網頁中的多媒體應用也越來越 多,越來越複雜,比如高清圖片渲染、高清視頻播放等等,甚至未來在網頁中玩3D遊戲等等,這些應用顯然只依靠CPU是很不靠譜的,GPU必然要參與其中。
全球最大的視頻分享網站Youtube從今年11月就開始就陸續提供1080P的高清視頻了,要想流暢播放,對於CPU來說顯然是一個巨大的挑 戰,Youtube要想普及這一項功能,也必須要得到GPU的全面支援。前段時間,Adobe發布了FlashPlayer 10.1測試版,支援Flash視頻GPU硬體加速,給1080P高清網路視頻的普及做出了鋪墊。
除了視頻圖片之外,網頁文字的處理也同樣需要GPU加速。我們知道,作業系統以及網頁上的每一個文字都是經過渲染才能產生,而在渲染的過程中是需要消耗 CPU資源的。如果文字渲染不好就會導致文字模糊、字型難看等問題。雖然我們現在還沒有感受到這樣的問題,但是在未來基於Web的辦公套件中,文字的渲染 就會變得非常重要。
絕大部分的Web內容都是通過瀏覽器呈現給使用者,前面我們說到Web應用的複雜度越來越高,已經迫切需要GPU加速的支援。就在上個月底微軟舉辦的PDC09大會上,透露了微軟下一代瀏覽器產品IE9將支援GPU硬體加速。
然而,另一大瀏覽器廠商FireFox則直接在最近的FireFox 3.7中加入了對GPU硬體加速的支援。由於IE9的測試版都至少需要明年下半年才會面世,這難免讓微軟非常尷尬。同時,也體現出了GPU加速已經成為了未來網路瀏覽器必備的功能。
IE9與FireFox中的硬體加速功能都是通過DirectWrite與Direct2D實現的,對於網頁開發人員來說,這兩項技術都不需要重新編寫網頁代碼,直接就可以支援GPU硬體加速。
DirectWrite是一種全新的文字渲染引擎,主要作用是讓文本更加平滑美觀,而不會出現鋸齒、雜邊等現象。相對於GDI文字渲染來 說,DirectWrite可以提供水平與垂直兩個方向的消除鋸齒功能,而前者只能提供水平方向的平滑功能。Direct2D則是一種新的圖形API,主要 是使用GPU來加速網頁中的圖形繪製,包括網頁映像的縮放等等。
其實除了FireFox與IE9之外,Google的瀏覽器產品Chrome早在10月份就計劃加入DirectWrite功能,但由於與Chrome的Sandbox(沙箱)技術存在一定的相容性問題,故該項目還在研發階段。
絕大部分的網路視頻都基於Adobe公司推出的Flash技術,該技術對視頻的壓縮率相當高,但畫質也還能說得過去。但隨著人們對網路視頻清晰度的要求越 來越高,比如前面我們所說的Youtube已經推出了1080P的網路視頻,這樣高清晰的網路視頻播放必然需要GPU進行渲染。
實際上Flash Player 10.0就已經開始支援GPU加速,但並不是完全依靠GPU,甚至很大一部分處理仍然是依靠CPU來完成的。
Web Flash的處理過程主要分為三個部分:目標視頻處理——合成處理——螢幕渲染。在Flash 10.0中,目標視頻處理與合成處理這兩大部分仍然依靠CPU來完成,GPU只是完成了最後一個步驟——螢幕渲染。顯然,這還是很大程度上依賴 CPU,GPU的效能並沒有得到完全的利用。
而在最新發行的Flash 10.1測試版中,Adobe加入了對Flash完全硬解碼的支援,Web Flash的三個部分全部都使用GPU加速,NVIDIA和AMD的顯卡都可以支援,這樣就可以大大的降低CPU的佔用率。
對Web開發人員來說Silverlight是一個非常熟悉的技術,Silverlight是一個跨瀏覽器、跨客戶平台的技術,能夠設計、開發和發布有多媒 體體驗與富互動(RIA,Rich Interface Application)的網路互動程式。其本質和Adobe的Flash差不多,但開發方面更加具有靈活性。目前Silverlight的主要競爭者 就是Adobe Flash。
微軟在Silverlight 3中加入了幾個關鍵技術的支援,包括支援更多的媒體編碼格式,如H.264,AAC等等;圖形計算採用GPU加速,有效減輕CPU的負擔;透視化3D技 術,也就是把2D對象放到3D空間中去;Shader概念的引入,同樣採用GPU進行加速。
Silverlight對GPU加速的支援也體現出了微軟對於未來Web應用中GPU重要性的認可,作為微軟近兩年來極力打造的一個Web媒體標 准,Silverlight能否成功其實很大程度上取決於更加簡化代碼以及如何更好的調用使用者的硬體資源,而GPU加速則正好可以滿足後者。
事實上,微軟的其他產品也非常注重GPU加速,包括前面我們提到的IE9瀏覽器,還有Windows 7作業系統中的Direct Compute以及世人皆知的DirectX應用程式介面,這一切都是微軟重視GPU的表現。
前面我們主要講到的是Web中的2D與網路視頻播放需要用到GPU加速,相信大家都已經有所瞭解。但2D與Flash加速相對於我們接下來要說的內容簡直就是小巫見大巫。接下來的技術將會讓在Web中玩3D遊戲變成現實,當然還是需要GPU進行加速。
首先我們來看看網路巨頭Google推出的O3D API,O3D是一個基於網頁的開源的3D應用程式介面,該技術可以獨立的工作在作業系統之外,完全基於Web。也就是說該API不受平台的限制,不管你 是使用Windows、Linux還是Mac作業系統都可以支援,因為它本身並不是依靠作業系統來運行。
如所示,通過O3D應用程式介面可以直接在瀏覽器中實現3D渲染,渲染的流暢度完全取決與你GPU的計算能力。筆者經過簡單的測試,使用筆記本中的8400M GS顯卡渲染情境就非常卡,然而使用筆者台式機中的9800GTX顯卡進行渲染時,整個情境就非常流暢。
目前,Google O3D還是通過外掛程式的形式安裝到瀏覽器中,感興趣的朋友可以通過這裡安裝,Windows和Mac平台的外掛程式都已經直接可以使用,而Linux平台的外掛程式則需要手動編譯。同時,Google還提供了大量的O3D示範DEMO,大家可以自行測試。
和前面介紹的O3D類似,WebGL也是一種基於Web的圖形應用程式介面,目前Webkit核心的瀏覽器包括Safari、Google Chrome以及Mozilla公司的FireFox都內建了WebGL技術。
WebGL是一種3D繪表徵圖准,這種繪圖技術標準允許把JavaScript和OpenGL ES 2.0結合在一起,通過增加OpenGL ES 2.0的一個JavaScript綁定,WebGL可以為HTML5 Canvas提供硬體3D加速渲染,這樣Web開發人員就可以藉助系統顯卡來在瀏覽器裡更流暢地展示3D情境和模型了,還能建立複雜的導航和資料視覺化。 顯然,WebGL技術標準免去了開發網頁專用渲染外掛程式的麻煩,可被用於建立具有複雜3D結構的網站頁面,甚至可以用來設計3D網頁遊戲等等。
WebGL完美地解決了現有的Web互動式三維動畫的兩個問題:第一,它通過HTML指令碼本身實現Web互動式三維動畫的製作,無需任何瀏覽器外掛程式支援;第二,它利用底層的圖形硬體加速功能進行的圖形渲染,是通過統一的、標準的、跨平台的OpenGL介面實現的。
不管是Google的O3D還是Khronos的WegGL都無疑是要將3D內容從本地搬到網頁上來運行,兩者都需要GPU加速才能獲得更好的效果。從目 前來看這兩者似乎存在著一些競爭的關係,但我們完全可以相信在未來的兩三年之內,在網頁上運行大型3D遊戲將不再是夢想。
大量的技術以及未來的應用都充分的反映出了一個趨勢,那就是GPU將會在未來的互連網應用中扮演著非常重要的角色,正如我們文章標題所說的那樣,即使是上 上網,有GPU的電腦和沒有GPU的電腦可能得到的體驗都完全不一樣。因為互連網的內容會隨著技術的發展而更新,到時候電腦中沒有GPU都不行。
反過來說,正是由於GPU提供了更加優秀的計算效能和更低的成本,才使得這一系列技術有發展的根本。我們才有理由相信未來互連網上的內容將會越來越精 彩,1080P的線上視頻、瀏覽器中暢玩3D遊戲、Linux平台不再為不支援3D遊戲而發愁、網頁文字的表現更加多樣化等等都將實現,而這一切都歸功於 GPU與3D Web技術的軟硬結合使用GPU加速Web內容不僅僅可以互連網內容更加豐富,而且從很大程度上降低了CPU的負擔,使用者在選購電腦的時候就可以直接搭配較低規格的CPU,但 是至少需要配備一塊獨立顯卡。而對於選購中高端CPU的使用者來說也同樣不算浪費,使用GPU加速閑置的CPU資源可以用來處理更多其它的應用,比如一邊欣 賞著互連網上的高清視頻,一邊使用閑置的CPU執行大檔案壓縮等等。
隨著GPU的應用範圍越來越廣,在未來的互連網應用中大規模的採用GPU加速已經成為了一種必然,我們要做的僅僅是等待GPU創造的全新互連網時代的到來。