NGC是任天堂的電視游戲機,NCG是核動力導(dǎo)彈巡洋艦,那么GCN是又是什么呢?這是AMD下一代的顯示核心架構(gòu)的暫用名稱,全稱是“Graphics Core Next”,直譯也就是“下一個圖形核心”。這就是我們接下來要介紹的主角,號稱是對3D和并行計算的平衡性架構(gòu)。
回顧歷史,在DirectX 9之前的時代,AMD和NVIDIA兩家總是在顯示核心頂點渲染引擎和像素渲染引擎上做文章。進入DirectX 10時代后,AMD和NVIDIA的產(chǎn)品則徹底分道揚鑣。AMD選擇了傳統(tǒng)的4D+1D的流處理器架構(gòu),而對手NVIDIA,在G80時代后,就徹底走向了1D統(tǒng)一流處理器的大道,并在每次更換架構(gòu)的同時,大幅度加強GPU的通用計算和并行計算能力。
目前的GPU市場,純3D圖形的利潤并不高,并且這部分市場還要受到越來越強大的集成顯卡、APU的擠壓。因此,NVIDIA很早就轉(zhuǎn)向了利潤更為肥厚,發(fā)展前景更為廣闊的專業(yè)市場,依靠Quadro專業(yè)卡和Tesla計算卡,攫取了相當(dāng)多的專業(yè)市場利潤。而AMD也必須積極轉(zhuǎn)向這個市場,才能在未來的競爭中占據(jù)一席之地。最近,AMD公布了其下一代全新圖形架構(gòu)“Graphics Core Next”(下一代圖形核心,簡稱為GCN)的詳細(xì)資料和規(guī)格,這次AMD的改革可謂翻天覆地。
傳統(tǒng)VLIW無法適應(yīng)新的需求
傳統(tǒng)的AMD GPU采用的是VLIW(超長指令流)架構(gòu)。比如之前的Radeon HD 5800系列,使用的是VLIW 5,也就是每一個流處理器組中擁有四個ALU單元和一個多功能處理單元。在新的Radeon HD 6900系列中,AMD又將它調(diào)整為VLIW 4,每一個流處理器組中設(shè)計了四個對等的ALU單元。AMD這種VLIW架構(gòu)的滿載理論值相當(dāng)高。
理論歸理論,問題在于實際應(yīng)用中VLIW架構(gòu)效能表現(xiàn)距理論值有相當(dāng)大的差距。AMD的這種設(shè)計要求每次處理的指令組恰好滿足一組流處理器的需求,比如每次都來4D+1D的指令,這樣可以令Radeon HD5800滿載吞吐,或者每次都是4D指令,這樣Radeon HD6900系列也可以滿載,計算效率可以達(dá)到100%。但實際上,大量的指令都是隨機到來的,有些只需要1個ALU計算,有些需要2個ALU計算,在這樣的情況下,AMD的這種設(shè)計最差的情況下只能發(fā)揮20%的計算效能(平均也不到70%),大量的晶體管在等待中被浪費了。再加上VLIW本身需要編譯器的很好優(yōu)化,對于那些時常涌現(xiàn)的新應(yīng)用、新計算,編譯器肯定難以跟上,架構(gòu)效率就更難令人滿意了。
而VLIW架構(gòu)在通用計算方面的弱點在于本身沒有預(yù)調(diào)度機制,在指令執(zhí)行過程中無法進行動態(tài)調(diào)度。除此之外,VLIW對編譯器的依賴相當(dāng)大,需要強大的編譯器進行非常完美的編譯工作才能良好運行。可是VLIW命令又較為復(fù)雜,進行人工優(yōu)化和手工調(diào)試難度也相當(dāng)高。這樣的“特點”令它在通用計算的程序編寫上變得相當(dāng)困難。通用計算和圖形計算在程序編寫上有很大不同,程序員往往需要多次編譯、調(diào)整、優(yōu)化代碼才能最終達(dá)到較好的效果,但VLIW無疑是通用計算程序員的惡夢,困難的編譯和反匯編工作讓其始終難以大規(guī)模發(fā)展,并且很難預(yù)測實際性能表現(xiàn),進一步對程序做出優(yōu)化也在這些困難面前變得更為遙遠(yuǎn)。
現(xiàn)在,AMD對GPU架構(gòu)做出了徹底改進,改用全新的non-VLIW SIMD。這個架構(gòu)將之前VLIW的指令級并行改成了線程級并行。雖然從字面來看只是將“指令”改成了“線程”,但背后的意義相當(dāng)深刻。
全新non-VLIW SIMD架構(gòu)
在non-VLIW SIMD架構(gòu)中,傳統(tǒng)的流處理單元被新的計算單元(Compute Unit,簡稱CU)替代。每一個CU中有四個SIMD單元,每個SIMD單元又由16個標(biāo)量ALU組成。AMD還為每一個CU配備硬件分支單元、16KB的紋理和數(shù)據(jù)L1緩存,64KB本地數(shù)據(jù)存儲單元。
傳統(tǒng)的VLIW由于過于依賴編譯器,很難在通用計算上有良好的表現(xiàn),新的硬件控制單元則可以在各種情況下不過于依賴編譯器,從而讓核心達(dá)到很高的效率。比如在遇到完全不相關(guān)的指令時,效率可以保證100%,而遇到VLIW很難處理的有相關(guān)性的指令時,硬件調(diào)度可以允許一定的亂序執(zhí)行存在,因此效率并不會有太大的下降。
新架構(gòu)的優(yōu)勢還不止于此。除了提升效率,加強靈活性外,新架構(gòu)的適應(yīng)性也大大提升,特別是對編譯器要求的降低,使得編譯器從繁重的調(diào)度任務(wù)中轉(zhuǎn)移出來;另外,新架構(gòu)可以讓程序員更為從容地優(yōu)化指令,進行細(xì)致的性能調(diào)節(jié)和優(yōu)化。這些對AMD未來在通用計算上的發(fā)展都是相當(dāng)有利的。
并行計算的新特性
新架構(gòu)為GCN帶來了并行計算方面強大的性能和功能。GCN將會全面支持C/C++以及其他高級語言,包括指針、虛擬函數(shù)、異常處理、遞歸循環(huán)等都會得到良好支持。CPU和GPU程序?qū)谕瑯拥某绦蛳戮幊蹋褂玫囊彩浅绦騿T最為熟悉的C++等,并且大部分特性都可以支持,有效提高AMD產(chǎn)品在通用計算方面的接受程度。而對消費者來說,這意味著未來可以有大量直接使用GPU加速的程序涌現(xiàn)。
另外,新架構(gòu)還加入了系統(tǒng)的統(tǒng)一內(nèi)存尋址空間,并且改用了X86 64位的尋址空間。這就可以讓CPU和GPU的尋址空間統(tǒng)一起來,互相調(diào)用數(shù)據(jù)不再是難題。這令程序員在編寫程序時不用特意區(qū)分CPU和GPU,因為它們都在同一內(nèi)存空間中,因此也可以隨時隨地應(yīng)用系統(tǒng)內(nèi)存,更為輕松方便。
圖形方面大幅度改進
圖形部分AMD也進行了大刀闊斧的改革。AMD對緩存設(shè)計進行了調(diào)整。傳統(tǒng)的AMD緩存設(shè)計依舊維持著最傳統(tǒng)的圖形緩存方案,一般都設(shè)計了只讀緩存,靈活性相當(dāng)差,而新的架構(gòu)中,AMD設(shè)計了只讀的L1緩存和容量更大、自由度更高的L2緩存,并將緩存和顯存控制器、ROP等單元進行搭配。這樣不同檔次的顯卡搭配不同的顯存控制器位寬和ROP數(shù)量,就能有效控制緩存的大小,節(jié)約晶體管。
在任務(wù)分配和效率執(zhí)行方面,AMD新設(shè)計了全新的異步計算引擎,這個引擎的作用類似之前的超線程分發(fā)器,主要作用都是接受任務(wù),并自動調(diào)配給不同的CU單元進行處理。這種新的架構(gòu)更注重并行處理的操作,對資源分配、任務(wù)切換以及不同的任務(wù)優(yōu)先級排序等擁有更好的性能,并且還具有一定亂序執(zhí)行能力。核心可以通過調(diào)整優(yōu)先級別進行任務(wù)排序,從而減少等待時間,節(jié)省資源。
在很多用戶最為關(guān)心的幾何能力部分,包括曲面細(xì)分、幾何轉(zhuǎn)換等,還有置換貼圖等部分,AMD的GCN架構(gòu)由于彈性和擴展能力更出色,處理能力會有明顯的增強。
AMD的新未來
GCN在架構(gòu)改進上的力度可謂空前。之前AMD都是在一個架構(gòu)上進行調(diào)整,補充,以不斷適應(yīng)未來的發(fā)展。而這次的全新架構(gòu)讓人們充滿了期待。目前,顯示領(lǐng)域圖形和計算的區(qū)分已經(jīng)不再涇渭分明,NVIDIA在DirectX 11后,一步一步的更為接近計算,同時在圖形上也帶來了大幅度的提升。現(xiàn)在AMD也在走這樣的道路,這也是AMD未來的希望。我們應(yīng)該希望AMD的新架構(gòu)帶來一個更為有力、競爭更為激烈的未來。