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