Architektura Turing TU104
Grafické karty nové generace Turing společnosti NVIDIA jsou tu a my se po jejich nepříliš dobře vyvedeném vydání můžeme na GPUreport konečně podívat na jejich reálný výkon. A protože tato generace grafických karet je díky podpoře akcelerace real-time raytracingu ve hrách tak trochu přelomová, nebylo by od věci se Turingům podívat tak trochu pod kapotu a dopídit se toho, jak tyto grafické karty ke svým parametrům a specifikacím vlastně vůbec přišly.
Dnes se tedy podíváme na grafický čip TU104, který já zkladním stavebním kamenem každé grafické karty GeForce RTX 2080. K vysvětlení věcí kolem uarch tohoto čipu nám dobře poslouží jeho blokové schéma, no a jistě nezbytných bude také trochu těch znalostí kolem grafické pipeline.
Frontend
Stejně jako u předchozích generací, každý grafický čip musí nějaká data přijímat, následně rozdělovat úkoly a řídit práci podřízených jednotek. Tuto činnost má na starosti Frontend grafického čipu, který je již od dob architektury Fermi tvořen jednotkami Host Interface a GigaThread engine. Zatímco pomocí Host Interface jsou přenášeny příkazy z CPU pomocí PCI Express, Gigathread engine je zodpovědný za vlastní logiku přenosu dat z RAM do VRAM a především také za plánování a rozdělování práce na jednotlivé další podřízené jednotky. Vlastní řízení čipu je práce velmi sofistikovaná a ne nepodobná práci CPU. Každý výrobce se tedy o bližší informace jen nerad dělí a nejinak tomu je právě v případě NVIDIA.
Graphics Processing Cluster (GPC)
V hierarchii blokového schéma je první podřízenou jednotkou Gigathread engine jednotka s názvem Graphics Processing Cluster, neboli GPC. Grafický čip TU104 se skládá celkem ze šesti GPC, které mají obdobnou funkci jako Shader Engine v konkurenční architektuře GCN. Kdo četl popis grafické pipeline, jistě již ví, že se jedná o jakousi kompletní grafickou pipeline, kde se primitiva přeměňují v pixely, ze kterých je pak složen celý hotový snímek s zobrazen na vašem monitoru.
Každý GPC tedy obsahuje jednu rasterizační jednotku (Raster engine), která spolupracuje s celkem 4 bloky TPC (Texture/Processor Cluster), ve kterých jsou sdruženy jednotky Polymorph Engine a vždy po dvou jednotkách Streaming Multiprocessors (SM).
Zatímco Polymorph Engine obsahuje fixní jednotky, které se starají o geometrii (Vertex Fetch, Tessellator, Stream Output atd.), SM jednotky jsou jednotkami naopak programovatelnými, na kterých je možné spouštět shadery (programy běžící na GPU).
Streaming Multiprocessor
Každá jednotka SM se (krom jiného) skládá ze čtyř bloků po 16 výpočetních jednotkách FP32 (CUDA Core), 256 KB registru, 96 KB sdílené paměti, 96 KB L1 Cache a 4 jednotek TMU (Texture Mapping Units), které využívají právě shadery k bezstarostnější práci s texturami, nebo raději 2D obrázky obecně. Nově pak v SM každého Turingu naleznete také výpočetní jednotky typu INT32 pro práci s celočíselnými operacemi, Tensor Cores určené pro tensor/maticové operace strojového učení a konečně také jednu výpočetní jednotku RT Core, která je určena speciálně na výpočty Raytracingu, tedy na výpočty dráhy paprsku a detekci kolizí s 3D objekty scény.
Každá jednotka SM jako celek tedy disponuje 64x CUDA Cores, 8x Tensor Cores, 1x RT Core a 4x TMU. Pokud tedy GPC obsahuje celkem 4 bloky TPC, můžeme říci, že každý GPC obsahuje jeden rasterizér, 4x Polymorph Engine a 8x SM s 512x CUDA Cores, 32x TMUs, 64x Tensor Cores a konečně také 8x RT Cores.
Každý GPC se může na vstupu postarat v jednom taktu o jeden primitivní trojúhelník (Triangle) a jeho výstupem jsou pak pixely, které je ale třeba ještě nějakým způsobem finalizovat (Blending, Z buffering atd.) a následně zapsat do framebufferu (Render Target). O tuto finalizaci a ukládání se starají jednotky s názvem Raster Operations Pipeline (ROP), které však součástí GPC nejsou. ROP jednotky jsou totiž u Turingu, stejně jako u předchozích generací, napojeny na paměťový subsystém framebufferu.
Framebuffer (VRAM)
Grafický čip disponuje celkem osmi 32-bit řadiči paměti (256-bit celkem). Na každý paměťový řadič je navázáno 8x ROP jednotek a 512 KB L2 Cache, což v celku představuje 64 ROPs a 4096 KB L2 Cache. Paměťové řadiče podporují paměti typu GDDR6. Každá jednotka ROP se může v jednom taktu postarat o 1 pixel, což při celkovém počtu 64 ROPs představuje výkon 64 (32-bit) pixelů na takt.
Pokud tedy víme, co vše obsahuje jeden blok GPC, vlastně si již sami můžeme spočítat, co obsahuje celý grafický čip TU104, který má v plné konfiguraci takovýchto GPC bloků celkem 6.
- GPC: 6x
- SM: 48x
- CUDA Cores: 3072x
- Tensor Cores: 384
- RT Cores: 48
- TMUs: 192x
- ROPs: 64x
Bohužel, grafická karta GeForce RTX 2080 na trh nepřichází s čipem v plné konfiguraci. Grafický čip TU104-400A-A1 byl lehce oříznut o jeden blok TPC a tak ve finále musíme ze specifikací odečíst 128x Cuda Cores, 16x Tensor Cores, 2x RT Cores , 8x TMU a 1x Polymorph Engine. Jak tedy vypadají konečné specifikace grafické karty GeForce RTX 2080?
SPECIFIKACE NVIDIA GEFORCE RTX 2080 |
|
RTX 2080 |
GTX 1080 Ti |
GTX 1080 |
CUDA Cores |
2944 |
3584 |
2560 |
RT Cores |
46 |
0 |
0 |
Tensor Cores |
368 |
0 |
0 |
TMUs |
184 |
224 |
160 |
ROPs |
64 |
88 |
64 |
Base Clock |
1515 MHz |
1480 MHz |
1607 MHz |
Boost Clock |
1710*/1800** MHz |
1582** MHz |
1733** MHz |
Memory Clock |
14Gbps GDDR6 |
11Gbps GDDR5X |
10Gbps GDDR5X |
Memory Bus Width |
256-bit |
352-bit |
256-bit |
VRAM |
8GB |
8GB |
8GB |
TDP |
215*/225** W |
250** W |
180** W |
Transistors |
13.6B |
12B |
7.2B |
Architecture |
Turing |
Pascal |
Pascal |
Manufacturing Process |
TSMC 12nm FinFET |
TSMC 16nm FinFET |
TSMC 16nm FinFET |
* reference ** founders |
Jak z výše uvedených specifikací můžete vidět, grafický čip TU104 je ve finále nejpodobnější čipu GP102 z předchozí generace Pascal a tedy i grafické karty GeForce RTX 2080 by se svým výkonem měly nejvíce podobat grafickým kartám GeForce GTX 1080 Ti. Krom nižšího počtu paměťových řadičů, nižšího počtu TPC v každém GPC a pamětí typu GDDR6 je u grafické karty GeForce 2080 asi tou změnou nejmarkantnějí přítomnost výpočetních jednotek RT Cores a Tensor Cores, které ji na rozdíl od svého předchůdce zajišťují podporu real-time raytracingu ve hrách. Společně s novou architekturou grafických čipů Turing však přišly také některé nové technologie. Pojďme se na ně tedy podívat.