可作CPU的GPU NV GT300顯卡架構(gòu)詳細解紹
著AMD在北京時間9月23日正式推出了Cypress(RV870),從而拉開了DX11時代的序幕《三大至尊特性 HD5800顯卡發(fā)布會報道》,而作為老競爭對手,NVIDIA全新支持DX11技術(shù)的顯卡Fermi(GT300)也在10月3日的國慶假期內(nèi)在國外GPU技術(shù)會議上曝光《黃仁勛親展示NV Fermi GT300實物卡》,那么這款NVIDIA的新一代顯卡究竟有什么跨時代的技術(shù)呢,今天就讓我們一起來看看。
相信大家已經(jīng)了解了有關(guān)Fermi(GT300)——NVDIA下一代GPU架構(gòu)的一些概況,我們已經(jīng)知道,新的GPU核心,是在現(xiàn)有的GT200架構(gòu)上進行升級,并且在早期已經(jīng)公布了某些重要的新設(shè)計。
雖然Fermi(GT300)和早前的GT200系列有很多相同的功能,但是Fermi(GT300)完全是一個全新的產(chǎn)品。 NVIDIA的技術(shù)白皮書描述了新的結(jié)構(gòu)如下:“GT300是一個統(tǒng)一的圖形和計算并行處理器。GT300的功能是GT200最初設(shè)想性能的擴展。我們已經(jīng)采取了一切我們之前兩個處理器的技術(shù)和所有那些為他們編寫的應(yīng)用程序,并采用了全新的方法來設(shè)計,以創(chuàng)造世界上第一個可以實現(xiàn)處理器運算的GPU。“
“計算圖形處理器”,“一個數(shù)字處理能手”都可以很恰當(dāng)?shù)姆Q呼Fermi(GT300)。將Fermi(GT300)制造成一個擁有512個流媒體處理器,ECC內(nèi)存保護,以及IEEE 754-2008浮點算法(Cypress也是如此)和完整的32位整數(shù)算法。
關(guān)于下一代Fermi(GT300)芯片的關(guān)鍵設(shè)計包括以下內(nèi)容:
晶體管個數(shù)超過30億
使用臺積電40納米工藝
512個著色處理器(NVIDIA 公司可稱之為“CUDA技術(shù)核心”)
32個CUDA cores per Shader Cluster
384 bit GDDR5顯存
1 MB的L1緩存,768 KB二級高速緩存
最多達到6GB顯存,1.5GB的消費級顯存
IEEE 754二進制浮點數(shù)算術(shù)標(biāo)準(zhǔn)
本地支持執(zhí)行CUDA技術(shù)、C ++,F(xiàn)ortran語言,支持DirectCompute 11,DirectX 11,OpenGL3.1和OpenCL
從數(shù)據(jù)上我們知道NVIDIA 公司宣稱Fermi(GT300)為“最重要的跨越式發(fā)展的GPU架構(gòu)”確實相當(dāng)?shù)膹姾?,但是試想,晶體管個數(shù)超過30億,512著色處理器的核心,那會是多么大的一個核心,要知道相比之下同樣工藝的AMD Cypress也才不過21.5億個。如果二者核心面積是等比例的(當(dāng)然這不可能),那么GT300將有大約500平方毫米,至少比GT200 576平方毫米小多了,所以可想而知Fermi(GT300)的體積。



Fermi(GT300)采用的NVIDIAGPU無疑在運算上要垮一大步,這顯然是新架構(gòu)的主要目標(biāo)。我們將會看到,NVIDIA公司已經(jīng)在實現(xiàn)諸如二進制浮點數(shù)算術(shù)的重點項目,如支持ECC和高速緩存、切換GPU應(yīng)用程序之間上下功夫,同時甚至開始了CUDA技術(shù)體系結(jié)構(gòu),同時NVIDIA 公司認為內(nèi)存技術(shù)是并行計算的未來趨勢,那么除去性能不說,F(xiàn)ermi(GT300)在某種程度上就像是處理器行業(yè)當(dāng)時的雙核心技術(shù),代表著一個行業(yè)的未來趨勢。
附GT200架構(gòu)圖:
Fermi(GT300)架構(gòu)詳細介紹(一)CUDA技術(shù)
如果往高了看,F(xiàn)ermi(GT300)架構(gòu)的目的直接反映出目前NVIDIA的CUDA技術(shù)在向前發(fā)展。在這個程序中的執(zhí)行模式有threads, thread blocks,和grids of thread blocks ,所有都是一種與眾不同的內(nèi)存訪問和內(nèi)核技術(shù),完全和目前的技術(shù)不同。

最核心的流處理器(Streaming Processor/SP)現(xiàn)在不但數(shù)量大增,而且還有了個全新的名字CUDA核心(CUDA cores per Shader Cluster)。而線程塊(thread block)就是有能力相互合作和溝通的線程(thread)集合,通過每塊共享內(nèi)存組。每塊可支持多達1536并發(fā)線程,各自有獨立通道,獨立記憶,計數(shù)器,etc等;其實每一個控制極(grids of thread blocks)都是一個線程塊停止后在運行另外一個相同的線程塊,但有能力從整個內(nèi)存中陣列讀寫(但只有在內(nèi)核范圍同步)。
這些軟件技術(shù)與 NVIDIA目前流體處理器和CUDA內(nèi)核的GPU的形式匹配,在GPU本身對線程塊控制極起到調(diào)配,每個SM(也可以說是SMs)的組合操作執(zhí)行一個或多個線程塊和CUDA核心(如NVIDIA 公司他們現(xiàn)在所稱的那樣)執(zhí)行線程。將32個線程組稱為一個“Warp”,這樣有助于提高GPU的效率。

這一架構(gòu)的首次實施,讓我們相當(dāng)盼望GT300的到來,并且會出現(xiàn)一些令人印象深刻的規(guī)格: GPU是由30億個晶體管組成,并采用512個CUDA技術(shù)核心(也就是著色處理器)為16組32個流媒體處理器組。該記憶體架構(gòu)是圍繞一個新的GDDR5顯存實施的,有6通道64bits,總數(shù)為384bits的顯存帶寬。新的顯存系統(tǒng)可以在技術(shù)上支持的高達6GB的顯存容量——這是高性能計算應(yīng)用的關(guān)鍵#p#page_title#e#
Fermi(GT300)架構(gòu)詳細介紹(二)雙精度浮點
每個SP都包括了32個CUDA技術(shù)處理內(nèi)核(相當(dāng)于GT200的4倍),可以看到上面也引入了一些新功能,以幫助提高性能。每個處理器包括一個完全流水線整數(shù)和浮點單元,它實現(xiàn)了都符合IEEE 754-2008浮點算法和完整的32位整數(shù)算法,。AMD公司的Cypress核心也實現(xiàn)了這一標(biāo)準(zhǔn),因為它增加了對積和熔加運算(Fused Multiply-Add/FMA)的支持,每循環(huán)操作數(shù)單精度512個、單精度256個(G200僅支持單精度FMA)。所有一切都符合業(yè)界標(biāo)準(zhǔn),計算結(jié)果不會產(chǎn)生意外偏差。

此外,在每個SM包括16個加載和存儲單元和4個特殊功能單元處理正弦和余弦計算(圖形計算領(lǐng)域,所有可見圖像都是由無數(shù)個三角形組成,所以正弦和余弦計算的能力也就是反映出了GPU的處理能力)。
NVIDIA 公司聲稱GT300架構(gòu)雙精度性能將大大超過現(xiàn)有GT200的設(shè)計改進。
與NVIDIA 聲稱Fermi(GT300)將要比GT200快4.25倍,這使其雙精度預(yù)計可達660 GFLOPS的雙精度性能的GT300,雙精度浮點(FP64)性能大大提升,峰值執(zhí)行率可以達到單精度浮點(FP32)的1/2,而過去只有1/8,AMD現(xiàn)在也不過1/5,比如Radeon HD 5870分別為單精度2.72TFlops、雙精度544GFlops。由于最終核心頻率未定,所以暫時還不清楚Fermi的具體浮點運算能力。
Fermi(GT300)架構(gòu)詳細介紹(三)“Warp”
先前我們提到的“warps”——將32個線程組稱為一個“Warp”。我們知道,CPU和GPU執(zhí)行的都是被稱作線程的指令集合。而目前高端CPU現(xiàn)在每次最多只能執(zhí)行8個線程(Intel Core i7),而這樣看來,GPU的并行計算能力就是天文數(shù)字了,像G80可實現(xiàn)12288個、GT200可實現(xiàn)30720個、而Fermi(GT300)可實現(xiàn)24576個。

可以看到,F(xiàn)ermi(GT300)的線程還沒有GT200多,這是因為NVIDIA 發(fā)現(xiàn)GPU計算的瓶頸在于共享內(nèi)存大小,而不是線程數(shù),所以將共享內(nèi)存從16KB翻兩番達到64KB,而將線程減少了20%,每個SM經(jīng)調(diào)度和指派可以控制兩個“Warp”,使被命令的CUDA技術(shù)核心可同時進行工作。換句話說,就像是一條雙車道,16個核心控制和16個加載/存儲單元一起工作,然后在執(zhí)行的情況下實現(xiàn)獨立調(diào)度和援助。這種雙重結(jié)構(gòu)的設(shè)計顯然讓Fermi(GT300)將達到接近其理論性能極限的標(biāo)準(zhǔn)。
而在G80和GT200上,每個時鐘周期只有一半Warp被送至SM,換言之SM需要兩個循環(huán)才能完整執(zhí)行32個線程;同時SM分配邏輯和執(zhí)行硬件緊密聯(lián)系在一起,向SFU發(fā)送線程的時候整個SM都必須等待這些線程執(zhí)行完畢,嚴(yán)重影響整體效率。如果說要論真實水平的話,F(xiàn)ermi(GT300)的線程可實現(xiàn)24576*2個,性能提升相當(dāng)?shù)目捎^。
這種線程架構(gòu)也不是沒有缺點,就是要求Warp的每個線程都必須同時執(zhí)行同樣的指令,否則會有部分單元空閑。每組SM每個循環(huán)內(nèi)可以執(zhí)行的不同操作數(shù):FP32 32個、FP64 16個、INT 32個、SFU 4個、LD/ST 16個。#p#page_title#e#
Fermi(GT300)架構(gòu)詳細介紹(四)GPU緩存
上圖可以看到總數(shù)為64KB的共享內(nèi)存和L1緩存,此內(nèi)存是獨一無二的,它是可配置為16KB共享內(nèi)存和48KB的L1緩存或者48KB共享內(nèi)存和16KB的L1緩存自由靈活組成的。此功能是為了保證100%兼容現(xiàn)有的基于GPU的應(yīng)用技術(shù),同時還還提供了靈活性。
GT200的每組TPC還有一個一級紋理緩存,不過當(dāng)GPU出于計算模式的時候就沒什么用了,故而Fermi并未在這方面進行增強。
整個芯片擁有一個容量768KB的共享二級緩存,執(zhí)行原子內(nèi)存操作(AMO)的時候比GT200快5-20倍。

在這里你可以看到新的GPU架構(gòu)和G80和GT200的規(guī)范對比。此時來看NVIDIA確實有和AMD新推出的產(chǎn)品競爭的實力,但是光從參數(shù)上看沒有意義,至于市場如何還需要時間檢驗。
Fermi(GT300)架構(gòu)詳細介紹(五)指令集架構(gòu)
除了這些原始的計算能力,當(dāng)然NVIDIA 公司希望Fermi(GT300)還有一些別的競爭優(yōu)勢。第一個就是是新的ISA(指令集架構(gòu)),這是一個全新的技術(shù),以支持目前最流行的編程語言C++。通過包括建立統(tǒng)一的尋址空間,簡化為一種指令,內(nèi)存地址取決于存儲位置:最低位是本地,然后是共享,剩下的是全局。這種統(tǒng)一尋址空間是支持C++的必需前提。NVIDIA的架構(gòu)可以支持對象和不受限制的無限指針位置面向?qū)ο缶幊棠P偷闹С?。僅此功能就可以幫助到CUDA和GPU計算的許多開發(fā)者。
NVIDIA 公司還指出,這一新的ISA完全是為了OpenCL和DirectCompute準(zhǔn)備的。并且像線程,線程塊和線程塊控制器以及共享內(nèi)存等等,都是為這些即將到來的計算語言做支持的。而且NVIDIA 宣布了一個名為“Nexus”的插件,可以在Visual Studio里執(zhí)行CUDA代碼的硬件調(diào)試,相當(dāng)于把GPU當(dāng)成CPU看待,難度大大降低。能提高游戲和GPU計算代碼的性能。該功能聽起來非常類似于分支預(yù)測單元
Fermi(GT300)架構(gòu)詳細介紹(六)內(nèi)存子系統(tǒng)創(chuàng)新
前面我們已經(jīng)討論了共享內(nèi)存和L1緩存的好處,其實從其他應(yīng)用程序上來說共享內(nèi)存有很大的靈活性。另外,L1將存儲臨時數(shù)據(jù),從而可以提高整體內(nèi)存訪問時間。

NVIDIA 也包括了768KB的二級緩存,在16個SM中。二級緩存可改善了應(yīng)用程序在32個CUDA技術(shù)核心和各個SM中連接的作用,工作效率大大提高。
NVIDIA還采取新的技術(shù),以執(zhí)行ECC內(nèi)存錯誤校驗。雖然不是普通消費者的問題,但是對與服務(wù)器的處理有非常大的作用,ECC是一個穩(wěn)定環(huán)境的重要組成部分。L1和L2緩存、和GDDR5內(nèi)存控制器中都支持ECC
Fermi(GT300)架構(gòu)詳細介紹(七)GigaThread調(diào)度
同時更新的線程調(diào)度是Fermi(GT300)值得討論的新功能。首先是將切換功能低至10-20微秒。切換功能可以應(yīng)用在GPU使用需要上,還可以應(yīng)用在程序之間的交換,例如渲染和PhysX物理處理圖形之間的轉(zhuǎn)換上。這可能讓開發(fā)人員可以使用GPU來做更多的計算能力應(yīng)用這些非圖形的目的。
第二個主要的更新是與內(nèi)核同時執(zhí)行的,可以稱為GPU的超線程。其實就是允許一個程序,只使用一個內(nèi)核(以及它們控制的SMs和CUDA核心),超線程技術(shù)讓GPU增加稍許的裸晶面積,就可以換來較高的效能提升。這樣確實是對GPU技術(shù)的顛覆。