Nvidia představila novou architekturu Fermi
Kapitoly článků
Úvodem nám dovolte pár slov, abychom si vše usadili do kontextu. Jak si vrabci na střeše štěbetali již dlouhé měsíce, nová architektura Nvidia Fermi bude primárně cílena na GPGPU segment trhu, přesněji tam, kam míří primárně výpočetní karty Tesla, sekundárně Quadro a až terciárně GeForce. Neznamená to, že by z této architektury měly vzejít Radeonům HD 5800 nekonkurenceschopné grafiky, to nikdo netvrdí a dokud nebudeme mít "GeForce GTX 380" (dočasné označení) v ruce, netroufáme si to ani odhadovat. Znamená to pouze, že Nvidia směřuje ke stejnému cíli jako Intel Larrabee, ale z opačného směru. Tím cílem je to, co si prozatímně nazveme UPU (Universal Processing Unit), tedy sjednocující logika určená pro mohutné počítání vysoce paralelizovaných úloh s vysokou přesností výpočtů a rychlostí v řádu mnoha TeraFLOPSů. Intel Larrabee směřuje od CPU k UPU, Nvidia pochopitelně od GPU k UPU. ATI také míří touto "GPU cestou", ale dnes si povídáme o Nvidii.
Takže tedy základní fakta: je tomu přibližně dva a půl roku od chvíle, kdy Nvidia přinesla finální verzi rozhraní CUDA (Compute Unified Device Architecture) pro svou první generaci GPU s unifikovanými shadery, GeForce 8800 GTS/GTX. Od té doby se počítá éra, kdy firma začala tlačit na využití GPU nejen na hry, ale právě na masivně paralelní výpočty. CUDA se za tu dobu prosadila ve formě mnoha různých aplikací, ale nebudeme zde opakovat mnohé již řečené, o CUDA jsme si povídali podrobně začátkem roku u příležitosti mezinárodní konference na FAV ZČU.
Postupem času dostávala CUDA k dispozici výkonnější a výkonnější GPU, aktuálně je to GT200b, 55nm kus křemíku s mírně vylepšenými 240 stream procesory. Po celou dobu od uvedení G80, které Nvidia průběžně proháněla pozvolným evolučním vývojem přes G92 po G200(b), probíhal v Nvidii vývoj nové generace, Fermi.
Firma se rozhodla zaměřit právě na optimalizaci architektury pro paralelní výpočty v double-precision, což byla slabina dosavadních GPU od G80 odvozený (ztráty výkonu oproti single-precision byly masivní). Pro Fermi platí, že výkon v double-precision klesá pouze na polovinu single-precison, nikoli osminu jako doposud. Další klíčové body pro Fermi jsou tyto:
- zavedení ECC pamětí pro bezproblémové nasazení mnoha GPU v datacentrech
- některé paralelní algoritmy nemohly využívat sdílenou paměť GPU, proto se přechází na systém vyrovnávacích pamětí (L1 a L2 cache)
- mnoho programátorů CUDA žádalo více než 16kB sdílené paměti
- uživatelé žádali rychlejší přepínání obsahu mezi aplikačními programy a grafikou a výpočetními operacemi
- uživatelé žádali rychlejší read-modify-write atomické operace
GPU, přesněji jeho architektura, tak bylo navrhováno a ve výsledku zkonfigurováno následovně:
-
3. generace Streaming Multiprocessoru (SM)
- 32 CUDA jader na každý SM, 4× více než GT200
- 8× tolik výkonu v double-precision floating point oproti GT200
- duální Warp Scheduler zvládající řídit 32 výpočetních vláken/takt
- 64 kB RAM konfigurovatelné jako sdílená paměť a L1 cache
-
2. generace Parallel Thread Execution ISA
- unifikovaný adresní prostor s plnou podporou jazyka C++
- optimalizované pro OpenCL a DirectCompute
- plná podpora IEEE 754-2008 s 32 (single) a 64bitovou (double) přesností - stejně jako HD 5800
- zvýšený výkon díky predikci - stejně jako HD 5800
-
Vylepšený paměťový subsystém
- Nvidia Parallel DataCache hiearchie s konfigurovatelnou L1 a unifikovanou L2 cache
- podpora ECC pamětí
- výrazně zlepešný výkon atomických paměťových operací
-
Nvidia GigaThread Engine
- 10× rychlejší přepínání aplikačního obsahu
- souběžné spouštění kernelů
- out of order spouštění bloků výpočetních vláken
- dualita překrývajících se engine paměťových přenosů