在網吧硬件DIY中,最頭痛的是CPU和GPU選擇。想打造新亮點,就需要選高檔次CPU和GPU,但花費太大:低端配置雖然能減低投入,但難留住常客。如此兩難之選,往往讓網吧老板們舉棋不定。不過,新展露頭腳的GPGPU(通用處理器),已經為PC核心硬件整合帶來了燦爛曙光。或許,不久的一天,CPU和GPU真的就能合二為一,網吧隨意選一款就能滿足用戶需求,大家也就無須為CPU和GPU費盡愁思了。
GPGPU概念衍生于GPU技術
GPGPU是以GPU為基礎開發的,GPGPU字母組合就明確的昭示了這一信息。其前一個GP表示通用計算(General Purpose),后一個GP則表示圖形處理(Graphic Process)。因此有人形象地將GPGPU稱為GP2U,即GP的兩次方u。從完整的GPGPU定義來講,它不僅能夠進行圖形處理,而且能完成CPU的運算工作,更適合高性能計算,并能使用更高級別的編程語言,在性能和通用性上更加強大。從狹義的GPGPU應用來說,GPGPU就是功能強化的GPU,GPU的優勢也正是GPGPU的優勢。彌補了CPU浮點運算能力的嚴重不足。和GPU相比,CPU最大的軟肋就是浮點運算能力不足。無論是Intel的還是AMD的CPU產品,目前其浮點運算能力大多在10Gflops以下,而GPU的浮點運算能力,在2006年時就已經數倍于主流處理器了。現在的DX10顯卡浮點運算能力更達到了驚人的程度,例如HD 3850顯卡,浮點運算能力可達到474 Gigaflops(flops表示每秒鐘能夠完成的浮點運算次數,Gflops代表每秒10億次浮點運算)。
巨大的浮點運算能力有了用武之地,GPU和顯存之間的帶寬是CPU和內存的10倍以上,對巨大的浮點運算,既吃得下,也吐得出。隨著多媒體視頻的廣泛應用,CPU的輸入/輸出帶寬已經不堪重負。如果不能突破CPU輸入/輸出帶寬瓶頸,縱然內部性能再強,也是無法被系統利用起來的。而GPU卻可以通過紋理映射功能,解決GPU和顯存之間的輸入/輸出帶寬問題,提高場景真實度,從而讓巨大的浮點運算能力有了用武之地。
更適合重復的計算。GPU因為是專門為圖形運算而設計的,考慮到了圖形運算的特殊性。拿像素著色器(Pixel Shader)來說,當前批次所有的待處理像素,都會執行相同的像素著色程序,也就是說,相同或類似的運算會在海量的數據上重復運行。這恰恰符合SIMD(單指令多數據)的概念,讓GPU非常適合處理SIMD運算,科學計算、數據庫分析等高性能計算正是SIMD類型。因此不少在CPU上傷透腦筋的科研人員不得不將目標轉向GPU,試圖利用GPU的這種優化設計來進行圖形之外的通用計算。
擁有優秀的編程語言,以前程序員在編寫著色程序,需要使用匯編語言,難度大,效率低,如今GPU的高級著色語言能夠極大地提高程序員的編程效率。微軟的HLSL,OpenGL的GLSL、斯坦福大學的RTSL,以及NVIDIA的cg等高級著色語言都能夠隱藏掉底層硬件的技術細節,提高GPU的開發效率。在這一點上,盡管CPU的編程語言走在前列,但GPU也已經逐漸趕了上來,開發和利用GPU比以前容易得多了。
CPU和GPU群雄豪賭GPGPU
在電腦產業整合化和微型化大變革時期,誰搶先一步取得GPGPU的技術主導權,誰就能稱霸未來的Pc芯片市場。毋庸置疑,NVIDIA、Intel和AMD對芯片市場的微妙變化和GPGPU的技術發展前景都極為關注,并展開了激烈的技術競賽。GPU誕生于1999年,短短幾年就從單一的進行三維圖形渲染,變為以圖形渲染為主、兼顧其他運算、處理能力的芯片。毋庸置疑,如果在此基礎上繼續完善,完全可以達到GPGPU的技術要求,成為PC的主要計算引擎。不過,站在不同利益角度的Intel和NVIDIA,各有各的如意算盤,而在GPGPU發展理念上也可以說是背道而馳。
NVIDIA一馬當先
NVIDIA最早提出了GPGPU概念,其目前的主導理念是:CPU沒有必要用太好、太貴的,普通CPU搭配中檔獨立顯卡,綜合性能比高端CPU搭配整合顯卡要高很多。但NVIDIA的解決方案僅僅只是被“內行”們認可,這顯然不是NVIDIA的初衷。2007年2月,NVIDIA正式發布了CUDA架構(Compute Unified Devica Architecture統一計算設備架構),這也是NVIDIA確定的GPGPU產品的正式名稱。
CUDA是GPGPU產品的一個新的基礎架構,一個完整的GPGPU解決方案,它采用C語言作為編程語言提供大量的高性能計算指令開發能力,使開發者能夠在GPU的強大計算能力的基礎上建立起一種效率更高的密集數據計算解決方案:它提供了硬件的直接訪問接口,而不必像傳統方式一樣必須依賴圖形API接口來實現GPU的訪問。CUDA是世界上第一個針對GPU的C語言開發環境的GPGPU產品,其工具集的核心是一個c語言編譯器,利用它可以最大限度地提升流處理單元浮點運算能力。實際上,NVIDIA在G80顯卡開發中,就已經引入7CUDA架構,其內部包含的128或96個流處理單元,達成了通用計算和圖形處理兩大功能,并提供了足夠強大的可編程能力,使GPU性能有了質的提升。據NVIDIA測試,該顯卡在CUDA架構中的峰值運算能力可達520GFlops,如果構建SLI雙卡系統,可以達到1TFlops(即每秒運算1萬億次)的強大運算能力,在進行科學運算時相當于一個100顆左右CPU的大規模并行處理系統。NVIDIA采用G92核心的G80系列GeForce 8800GT顯卡,可以說是CUDA架構的成功嘗試,也為業界GPGPU的研發提供了寶貴的借鑒。
Intel力拔頭籌
雖然Intel的GPGPU技術開發起步并不早,但是在芯片領域擁有長期積聚的雄厚技術基礎,完全有希望開發出獨具特色的GPGPU,一舉超越Nvidia和AMD。
作為全球最大的CPU供應商,Intel其實早已經敏銳地意識到,GPU通用計算將給PC帶來革命性的變化,如果最終NVIDIA主導了GPGPU市場,CPU必然面臨滅頂之災。所以Intel采取了與NVIDIA以GPU為核心的截然不同的研發理念,將GPGPU納入了CPU的發展軌道,期望繼續稱霸未來處理器市場。同時,Intel還義無反顧地殺向獨立顯卡市場。
最近幾個月來,業界普遍對Intel首款Larrabee獨立顯卡充滿了期待。根據規劃,Intel將于2008年中期推出包含32個內核、45納米的第一代Larrabee芯片,并同時搭配大容量緩存,功耗約為150瓦左右。為了滿足多元化的需求,還將衍生出24內核的低端版本。大約在2009—2010年,英特爾還將推出具有48個內核、32納米工藝的第二代Larrabee芯片。
Larrabee在硬件設計上,采用微內核設計,內核邏輯采用順序執行結構(In Order),可同時執行4個線程。在指令體系上,Larrabee最大的優點就是與IA架構(X86)處理器的互換性,它使用經過調整的X86指令,使現行X86計算程序可以直接被Larrabee運算執行。
從多方消息來看,Intel這款顯卡的應用重點將是通用計算,而不是傳統的3D游戲。雖然Intel不擅長圖形驅動開發,目前也沒有獨立顯示核心,Larrabee的最終效率可能算不上優秀,但是其多年來的整合圖形芯片制造能力并不能令人小視。譬如,Intel將會在Larrabee中引入X86指令,使得編程更加簡單,同CPU之間的數據交換可以保持一致性,大大降低圖形應用程序的開發周期和難度。再加上其出色的編譯器,Larrabee的執行效率將非常出色。業界認為,Intel即將推出的Larrabee,是全球光線追蹤性能最強悍的芯片,也將是在面對許多科學運算領域最高速的處理器,它的完全可編程能力將會給全球帶來一次震撼。
在新的CPU研發方面,Intel已經確定開發基于Nehalem構架的GPGPU,并且將會推出Havendale和Auburndale兩個版本,兩者都將采用兩個CPU核心,圖形部分將基于G45的衍生版本。因為基于Nehalem構架,Intel這兩個版本的GPGPU將支持超線程技術,可同時處理4個線程。同時,Intel這兩個版本的GPGPU產品定位也不一樣,Havendale主要是面向桌面用戶,也就是PC;而Auburndale則主要面對筆記本用戶。
按照英特爾的觀點,可編程的顯示計算通用架構芯片會在未來應用中占據越來越重要的地位,隨著可編程的顯示計算通用架構芯片逐步取代GPU的地位,顯卡則會慢慢被集成化所取代,作為獨立硬件生存下去的空間會越來越小。不過在目前看來,這顯然是英特爾的一廂情愿的事。因為,畢竟目前GPU的運算處理能力已經遠遠超越了CPU。
AMD當仁不讓
AMD已經計劃,在其制程轉向45nm的時候,實現CPU和GPU的整合。前不久,AMD提出了以Fusion為研發代號的硅芯片整合計劃,聲稱已經聯合部分開發商提供了一整套GPGPU開發套件,GPU的效能在部分科學計算中達到了CPU的20倍。
早在2006年收購ATI之初,AMD就做出了一個重大舉動,這就是它所發布的GPGPU“Stream Processor”(流處理器),率先將GPGPU技術引入普通應用階段。實際上,Stream Processor相當于建立在R580核心基礎上的ATI X1900XTX級別的專業顯卡。它的實際用途已經是通用計算(GPGPU),而不僅僅是圖像處理。眾所周知,ATI X1800系列紋理單元僅僅是16個,而ATI X1900激活的像素單元則增加達到48個(每個內置兩個算術邏輯單元ALU、兩個標量ALU和一個分支執行單元)翻了三倍。同時AMD還為其配備了1GB GDDR3內存,頻率1300MHz,顯存控制器也經過調整,以優化流計算應用。它最高可同時執行512線程、512個指令緩存器、128個臨時緩存器及256個常規緩存器。
AMD 將在2008年底或是2009年初,推出與GPGPU技術息息相關的Fusion硅芯片,它不僅能將以單芯片的結構出現,而且還會以多芯片的架構出現。AMD營銷技術總監和市場EMEA Giuseppe Amato說,Fusion提供基于融合處理器的GPGPU平臺融合,二個Fusion處理器一起連接可以達到并行GPU的關系,更適合CPU的代碼將在Fusion處理器當中的CPU部分被執行,而更適合GPU的代碼也將在Fusion處理器的GPU部分被執行。
GPGPU就在我們的身邊
所謂GPGPU(General Purpose Computation on the GPU),其實就是流處理器,它兼有通用計算和圖形處理兩大功能,能夠將圖形數據流演繹得淋漓盡致。看上去很遙遠,但實際上GPGPU在DirectX 9時代就已經初現雛形,隨著DirectX 10時代的到來,GPU與CPU都會相繼加入相應的GPGPU技術,這就是我們通常所理解的GPGPU(廣義)。
在DirectX 10時代,將會有越來越多的視頻處理可以由GPU來完成,這是目前GPGPU最成熟、最廣泛的一種應用。例如,在浮點運算能力上,GeForce 8800 GTX的浮點運算能力達到了520 Gflops,是上一代頂級GPU的3倍以上;在輸入/輸出帶寬方面,上一代GPU只能最多訪問4個頂點紋理和16個像素紋理,而DirectX 10時代的GPU可以最多訪問128個紋理,紋理尺寸達到8192×8192,對于著色程序來說,這就等于“無限”,讓GPU和顯存可以實現充分地互訪。此外,GPU的通用計算主要是使用其像素著色器,上一代GPU的頂點著色器則毫無用武之地,而從NVIDIA的G80和AMD的R600開始,DirectX 10的GPU都會采用統一著色器,所有的著色器都能用于通用計算,不會造成資源的浪費。
Shader Model和著色語言的成熟也有力地助推了GPGPU的發展。早期的Shader Model 1.0和Shader Model 2.0不支持動態流控制,只能提供有限的靈活性,阻礙了GPU的通用化,而在Shader Model 3.0中,動態流控制和著色程序被賦予幾乎無限的資源訪問能力,從而減少了編程時的限制。在Shader Model4.0中,一個重大變化就是Intel在Vertex Shader和Pixel Shader之間引入了一個新的可編程圖形層——幾何著色器(Geometry Shader),進一步優化了動態流控制和著色程的資源訪問能力,讓程序員編程更加得心應手,幾乎不用再擔心編寫程序時有任何限制,這也將讓GPGPU在新時代的應用有了更多的可能性。
早在2004年的SIGGRAPH圖形大會上,就有科研人員在GPGPU論壇上預測,六年之內就會出現CPU和GPU整合在一起的產品。當時此語一出,四座嘩然。但是不過兩年,擔當CPU和GPU整合大任的GPGPU姍姍到到來了。這到底是必然還是偶然?那么,GPGPU最終會取代CPU嗎?雖然現在斷言恐怕為時還過早,但可以肯定的是,在未來計算系統中,高并行處理器將是不可或缺的角色。或許,CPU和GPU兩者依然會在不同的應用領域發揮各自的優勢或特長,只是兩者更密切了協作,最終誰也無法取代誰。