Nvidia: Končí éra grafických karet, přivítejte Fermi

Na GPU Tech představila Nvidia novou architekturu, o které už nemluví jako o architektuře pro grafické karty, ale jako o řešení pro GPU computing – výpočty na grafických procesorech.

S uvedením jádra G80 (GeForce 8800 GTX) s unifikovanými shadery začala Nvidia pracovat na tom, jak GPU využívat nejen k renderování her, ale také k obecným výpočtům. U GT200 přidala kvůli požadavkům zákazníků kvůli GPGPU další funkce. Zatímco GeForce 8800 GTX byla ještě primárně herní grafickou kartou, u GeForce GTX 280 už Nvidia kladla kromě herního výkonu důraz i na podporu CUDA a využití při GPGPU.

Samotné rozhraní DirectX směřuje k tomu, aby byly výpočetní jednotky v grafických kartách co nejuniverzálnější, což umožňuje vývojářům rozšiřovat schopnosti GPU pomocí programovatelných shaderů k obrazu svému a neomezovat se pouze na to, co přílušný hardware dokáže.

Fermi jde v tomto ohledu ještě dále – je první architekturou, u kterou Nvidia představila coby řešení pro GPU computing, aniž by se zároveň zmínila o tom, co od ní můžeme čekat jako od herní grafické karty. S výjimkou počtu stream procesorů a šířky sběrnice se tedy žádné pro hráče zajímavé údaje zatím nedozvíte.

Z celé architektury je zřejmé, že není Fermi primárně postaveno coby konkurent pro novou generaci Radeonů, ale míří do stejného segmentu, jako Larrabee. Při této příležitosti mi to nedá nevyšťourat starý snímek z prezentace Intelu k Larrabee:

Klepněte pro větší obrázek

Architektura Fermi je dalším krokem, díky kterému se Nvidia možná ocitne tam, kde je na prezentaci Intelu Larrabee. Pro běžného smrtelníka nemusí být v současnosti GPGPU segment pořád ještě tolik zajímavý, aplikací, u nichž lze vysoký výkon pro GPGPU smysluplně využít, je stále poskrovnu. Nová architektura se ale náramně hodí pro profesionální sféru.

Z prezentací výrobců superpočítačů, které se objevily na webcastech z GPU Tech konference, je zřejmé, že přestávají být spokojení se stávajícím vývojem v oblasti procesorů. Ty jsou optimalizované na vysoký výkon jednoho vlákna, přičemž se bere méně ohledu na spotřebu, resp. úspornost celého řešení. U GPU se naopak důsledně dbá nejen na to, aby se s každou generací čipů narostl výkon, s každou generací se výrazně zlepšuje i poměr výkon/watt. U procesorů přibývají další jádra jen velmi pomalu, což není pro nárůst výkonu při masivním paralelismus zrovna ideální. Proti klasickým CPU hovoří i skutečnost, že v posledních letech došlo na rozdíl od GPU k výraznému poklesu škálování výkonu.

Klepněte pro větší obrázek Klepněte pro větší obrázekKlepněte pro větší obrázek 

GPU mohou být právě pro segment superpočítačů výraznou vzpruhou. Cray vnímá GPU jako velkou příležitost – na rozdíl od specializovaných řešení pro high performance computing se mohou výrobci superpočítačů svézt na hardwaru, který se na rozdíl od speciálních čipů vyrábí v obrovském měřítku a je tudíž relativně levný.

Klíčové vlastnosti nové architektury, které zatím Nvidia prozradila, jsou následující:

Třetí Generace Streaming multiprocesorů (SM)

  • 32 CUDA jader na SM, čtyřnásobek oproti GT200
  • Osminásobný špičkový výkon v double precision floating point operacích oproti GT200
  • Dual Warp Scheduler, který zvládá během taktu rozdělit dva warpy se 32 vlákny na takt
  • 64 KB paměti s konfigurovatelným rozdělením na sdílenou a L1 cache

Druhá Generace Parallel Thread Execution ISA

  • Unifikovaný adresní prostor s plnou podporou C++
  • Optimalizace pro OpenCL a DirectCompute
  • Plná podpora IEEE 754-2008 se 32b a 64b přesností
  • Zlepšení výkonu díky predikci

Vylepšený paměťový subsystém

  • Nvidia Parallel DataCache s konfigurovatelnou L1 a unifikovanou L2 cache
  • První GPU s podporou ECC
  • Výrazně zlepšený výkon u atomických operací s pamětí

Nvidia GigaThread Engine

  • Desetkrát rychlejší přepínání kontextu aplikací
  • Souběžné spouštění kernelů
  • Out of order provádění bloků
  • Dual overlapped memory transfer engines

Jestliže jsme v případě Radeonů HD 5870 řešili, že je většina parametrů dvojnásobkem HD 4870, u Fermi jsou známé parametry dokonce více než dvojnásobkem toho, co nabízela předchozí generace. GT 200 měla 1,4 miliardy tranzistorů a vysloužila si za to přezdívku dinosaurus. Fermi má více než dvojnásobek – tři miliardy tranzistorů.

Klepněte pro větší obrázek

Takto vypadá samotné jádro:

Klepněte pro větší obrázek

Schéma celého čipu vypadá následovně:

Klepněte pro větší obrázek

Okolo L2 cache je šestnáct bloků, tzv. streaming multiprocesorů, zkráceně SM (zvýrazněn červeně). Uvnitř každého SM jsou stream procesory, Nvidií nově označované jako „Cuda cores“.Fermi jich má celkově 512, více než dvojnásobek GT200.

Sdílená paměť a cache

U starší GT200 na streaming multiprocesor připadalo pouze 16 kB sdílené paměti. U Fermi má každý streaming multiprocesor má k dispozici 64 kB SRAM paměti, do kterého může odkládat data. Ta se může rozdělit na dva bloky – paměť, kterou sdílí všechna jádra a L1 cache – dvěma způsoby: na 16 kB sdílené paměti a 48 kB L1 cache nebo na 48 kB sdílené paměti a 16 kB L1 cache.

Dlouhý blok uprostřed čipu je L2 cache s kapacitou 768 kB, kterou sdílí streaming multiprocesory. K ní jsou připojeny všechny streaming multiprocesory a přistupuje se přes ni k paměti karty.

384bitová sběrnice s GDDR5 (a možná i GDDR3)

Po stranách čipu je šest bloků pro komunikaci s pamětí, každý z nich má 64bitovou šířku – celkově tedy 384 bitů. To je méně, než v případě GT200, jenže u ní se používaly paměti typu GDDR3, které mají poloviční propustnost oproti GDDR5, které se mají objevit u Fermi. I v tomto ohledu si tedy čip polepší. Fermi podporuje až 6 GB paměti GDDR5 a můžeme-li věřit poznámce týkající se ECC kódů, která se objevila na TechReportu, můžeme čekat i karty s pamětmi typu GDDR3.

Cesta do superpočítačů – první GPU s ECC korekcí

Všechny paměti v čipu a na kartě – registry, sdílené paměti, L1 cache, L2 cache a DRAM jsou chráněné korekcí chyb ECC. Díky ní lze korigovat jednobitové chyby. U DRAM pamětí má ECC fungovat na GDDR3 i GDDR5 a mělo by jít o vlastnost specifickou pro produkty Tesla.

Právě absence ECC byla důvodem, proč se výrobci superpočítačů nehrnuli do stavby počítačových clusterů využívajících GPU. Díky přítomnosti ECC už se využívání Fermi u velkých superpočítačů výrobci nebrání.

Souběžné spouštění kernelů

Vylepšen byl i GigaThread Engine, který rozděluje úkoly streaming multiprocesorům a jednotlivým jádrům. Nově podporuje souběžné spouštění kernelů (fuknce nebo malý program) z jedné aplikace, díky čemuž lze využít celý GPU. U předchůdců se musely spouštět postupně a v případě, že jeden kernel neobsadil všechny streaming multiprocesory, zůstal zbytek čipu nevyužitelný. Toto zlepšení nemá být znát ani tak při práci s grafikou, jako spíš v GPGPU aplikacích.

Při spouštění kernelů z různých aplikací, kde se musí postupovat sériově, může těžit z desetkrát rychlejšího přepínání mezi GPU a CUDA módem, které je prý dostatečně rychlé na to, aby karta zvládala přepnout režimy i několikrát během jediného snímku – a tady by měli pocítit výhody i hráči.

 Klepněte pro větší obrázek 

Na Fermi může běžet souběžně maximálně 24 576 vláken, což je zlepšení ve srovnání s G80, která zvládala 12 280 vláken, ale zhoršení oproti GT200, která zvládala – 30 720 vláken. Důvodem bylo zjištění, že možnosti GT200 nelze většinou stejně využít kvůli malé sdílené paměti, a tak u fermi došlo k redukci vláken a navýšení velikosti paměti.Nexus GT 200 měla 1,4 miliardy tranzistorů a vysloužila si za to přezdívku dinosaurus. Fermi má více než dvojnásobek – tři miliardy tranzistorů.

Nexus pro vývojáře

Spolu s Fermi představila Nvidia i vývojové prostředí Nexus, speciálně navžené pro podporu masivní paralelizace v aplikacích pro CUDA C, OpenCL a DirectCompute. Nexus má umožnit ladění kódu a analýzu výkonu přímo v MS Visual Studio. Díky tomu mhou programátoři ladit kód v prostředí, na které jsou zvyklí.

Klepněte pro větší obrázek 

Podrobnější představení Nexusu by mělo proběhnout na probíhající konferenci.

A co teda ten herní výkon?

I když to možná z prezentace i článků vypadá trochu děsivě, Fermi bude stále dost dobře použitelná jako grafický akcelerátor (a většina z vyrobených čipů bude nejspíš plnit právě tuto úlohu). Jen bude o poznání univerzálnější. Přestože toho Nvidia k nové generaci GPU prozradila docela dost, z dostupných informací se pořád můžeme jen dohadovat, jak na tom budou grafické karty ohledně výkonu, a kdy vlastně a za kolik se objeví. Ostatně neví to ani sama Nvidia. Pomalu už se distancuje od přímého souboje s Radeony HD 5000, protože prý chce nabízet jiný produkt, než AMD, a s jeho uvedením nespěchá. Odhady výkonu se pohybují okolo 20-30 % nad úrovní nových Radeonů, Nvidia ale jedním dechem dodává, že vyšší herní výkon rozhodně nebyl u Fermi primárním cílem. S ohledem na to, že práce na nové architektuře započaly před několika lety, zatímco AMD razí strategii kratičkých vývojových cyklů a generačních obměn, se dá věřit tomu, že Nvidia nemohla tušit, kde by mohlo být ATI za několik let.

Právě vyšší herní výkon byl tím, co nabízejí nové Radeony. V oblasti herních grafik se ale dostáváme do svízelné situace. Většina her se vyvíjí primárně pro nepříliš výkonné konzole. Zatímco dříve byl rostoucí výkon grafik nutný kvůli postupné migraci hráčů z běžného rozlišení 800×600 bodů na klasické 19" LCD s 1 280×1 024 na 20" LCD s rozlišením 1 680×1 050 bodů, dnes už narážíme na bariéru v podobě 22-24" LCD s full HD rozlišením 1 920×1 200 bodů, jež má přemožitele jen v pro většinu lidí nedostupných 30" LCD s rozlišením 2 560× 1 600 bodů. Je jen hrstka herních titulů, pro které je HD 5870 ideální a ještě méně těch, pro které je slabý. Pro drtivou většinu (i nových) her je až zbytečně výkonný. Právě příliš vysoký výkon je možná důvodem, proč se AMD rozhodlo zužitkovat a odůvodnit jeho výkon alespoň při Eyefinity a konfiguracích s více monitory.

Za pár let uvidíme, která cesta byla lepší. V krátkodobém horizontu je pro běžné smrtelníky zajímavější právě ten vyšší herní výkon, v případě Nvide a jejích GPU architektury Fermi je ale zřejmé, že jde spíše o další investici do budoucna a přípravu na válku, která už se bude odehrávat jinde, než v oblasti 3D akcelerace her pod DirectX, a nebude v ní bojovat jen ATI se svými Radeony.

Témata článku: Hardware, Programování, Brick, Floating, Sram

16 komentářů

Nejnovější komentáře

  • satai 21. 10. 2009 9:52:29
    Prosta aplikace A. zakona. Zisk z paralelizace zavisi od ulohy. Na ulohy s...
  • Mi.Chal 21. 10. 2009 7:50:09
    Co s nim?
  • Mi.Chal 21. 10. 2009 7:49:39
    Opravdu si myslis, ze umet programovat paralelne znamena, ze nekde vyrobis...
Určitě si přečtěte