Architektura Fermi - Nvidia GF100 se představuje
i Zdroj: PCTuning.cz
Hardware Článek Architektura Fermi - Nvidia GF100 se představuje

Architektura Fermi - Nvidia GF100 se představuje | Kapitola 5

Z. Obermaier

Z. Obermaier

18. 1. 2010 04:00 131

Seznam kapitol

1. Nekonečný příběh pokračuje .. 2. Úvod do architektury GF100 3. Geometric realism - Teselace 4. Teselace - slajdy, výkon a obrázky 5. Architektura GF100 6. Kvalita obrazu a vyhlazování
7. Výpočetní výkon a raytracing 8. GeForce 3D Vision Surround 9. Galerie - Supersonic Sled demo 10. Jak se tvoří hry 11. Závěr

Nová generace grafických karet Nvidia byla už několikrát odložena a každá novinka vzbudí rozruch. Velká většina dosavadních informací byla spíše spekulativního rázu, ale ve dnešním článku vám konečně můžeme nabídnou konkrétní fakta o architektuře a vlastnostech čipu. Získali jsme je přímo na konferenci Deep Dive v Las Vegas.

Reklama
Architektura Fermi - Nvidia GF100 se představuje
i Zdroj: PCTuning.cz

Jádro GF100 je založeno na škálovatelných GPC blocích, Stream procesorových blocích SM a paměťových řadičích. Jádro nese čtyři GPC bloky, šestnáct SM bloků a šest paměťových řadičů. S počtem těchto jednotek se může u finálních verzí karet na trhu hýbat, zde mluvíme o plném GF100 jádře. To znamená, že nejvyšší karta může nést plné jádro, ale také nemusí. Počet bloků u finálních karet bude zkrátka až do vydání stále nejasný, u karet Tesla to ale už víme, dva SM bloky budou vyplé a karta bude mít aktivních jen 448 CUDA Core. Jak to bude u GeForce nevíme, doufáme ale v plných 512 CUDA Core, NVIDIA se dušuje, že to tak bude. Výhody takovéto modulární architektury jsou asi jasné, umožní velice jednoduše vytvořit levnější čipy s menším výkonem.

Architektura Fermi - Nvidia GF100 se představuje
i Zdroj: PCTuning.cz

Instrukce od CPU jsou předávány GPU skrze PCIe rozhraní, GigaThread engine označí data, která se překopírují ze systémové paměti do paměti grafické karty (framebuffer). GF100 je vybaveno šesti 64-bitovými řadiči pamětí GDDR5. Celková šíře sběrnice je 384-bitů. To je dostatečná šířka pro komunikaci s pamětí. Dále GigaThread engine rozdělí úlohy jednotlivým SM blokům, v rámci SM bloků se dále rozštěpí do jednotlivých CUDA Core a vykonávacích jednotek.

O postup do resterizačních, teselačních a dalších jednotek se také postará GigaThread engine. Jak už víme, jádro je tvořeno šestnácti SM bloky, každé s 32 CUDA Core. To jest maximálně 512 CUDA Core. Každý tento procesor je schopen vykonat vertex, pixel nebo geometry operaci. K uchování textur a potřebných dat slouží L2 cache. Ta na rozdíl od předchozí generace akcelerátorů dokáže rozlišovat mezi typu uložených dat a navíc umožní programátorům i cíleně zapsat data, která se v danou dobu vyplatí mít uložená v cache. Jádro je dále vybaveno 48 ROP jednotkami, pro operace s pixely, atomické operace a vyhlazování. ROP jednotky jsou organizovány v šesti skupinách po osmi, ke každé skupině náleží jeden 64-bit paměťový řadič. Paměťový řadič, ROP jednotky a L2 cache jsou vzájemně propojeny.

Architektura Fermi - Nvidia GF100 se představuje
i Zdroj: PCTuning.cz

GPC blok - Jak už jsem řekl před okamžikem, jádro tvoří čtveřice GPC bloků. Tento blok nese Raster engine a čtyři SM bloky. Hlavními novinkami je právě přítomnost rasterizačního enginu nad SM bloky a PolyMorph enginu v každém SM bloku. V GPC bloku najdeme všechny nejdůležitější grafické jednotky jádra. Ve vzájemném vyváženém svazku najdeme vertex, geometry, raster i pixel procesing jednotky. Kdyby v této části byly i samostatné ROP jednotky, jednalo by se o kompletní a životaschopné GPU se vším všudy. Jde v podstatě o kompletní GPU, jichž jsou v GF100 čtyři. SM bloky a texturovací jednotky jsou také v blocích, nazývajících se TPC. Ke každému SM bloku náleží čtyři vyhrazené texturovací jednotky.

Architektura Fermi - Nvidia GF100 se představuje
i Zdroj: PCTuning.cz

PolyMorph engine

Starší generace GPU používají monolitický frontend k práci s trojúhelníky. Fixní pipeline ale umožňuje pouze fixní výkon, který nelze dále škálovat ani při vysokém počtu výpočetních jader. V různých situacích se může pipeline přetížit nebo naopak zůstat nevyužitá, což činí problém pro geometrické operace a jejich výkon. Teselace totiž dramaticky mění rozložení zátěže jádra GPU a sériová pipeline by nestačila na její potřeby. Bylo potřeba strukturu pipeline změnit., k čemuž vznikl PolyMorph engine.

Architektura Fermi - Nvidia GF100 se představuje
i Zdroj: PCTuning.cz

Každý ze šestnácti PolyMorph enginů má vlastní vertex jednotku a teselátor. Čtyři Raster enginy v každém GPC bloku mohou naráz poslat ke zpracování čtyři trojúhelníky. Společně lze dosáhnout velkého Teselačního a rasterizačního výkonu.

Samotný PolyMorph engine má pět fází zpracování. Vertex fetch, teselace, viewport transformce, attribute setup a Stream Out. Výsledek každé z fází je posílán do SM bloku, ten provede shader operaci a pošle data zpět do PolyMorph enginu k další fázi zpracování. Když jsou všechny fáze hotové, pošle se výsledek do Raster enginu v nadřazeném GPC bloku. Ještě krátký popis fází:

V první fázi se načtou vrcholy z globálního vertex bufferu, jsou pak poslány do SM bloku k provedení vertex a hull shading operace. Během této fáze se objekty transformují a určí se teselační faktor, ten je poté jako LOD poslán do Teselátoru.

V druhé fázi si Teselátor přečte teselační faktor a přenese ho na model z polygonů. Upraví odchylky a pošle informaci o vrcholcích do SM bloku. Tam se aplikuje Domain shader operace, která z hodnot Teselátoru a Hull shaderu vypočítá pozici každého vertexu objektu. V tuto chvíli se také na objekt aplikuje Displacement mapa. Geometry shader upraví model, odebere nebo přidá chybějící nebo přebývající části a pošle data zpět do Teselátoru k finálnímu zpracování.

Ve třetí fázi,Viewpoint transformaci, se vytváří korekce perspektivy a vzhledu. V dalších dvou fázích jsou jsou data přepočítána k další operaci. Když je vše hotovo uloží se data do paměti a jsou k dispozici dalším jednotkám, zde nastupuje Raster engine v GPC bloku.

Architektura Fermi - Nvidia GF100 se představuje
i Zdroj: PCTuning.cz

Raster engine

Poté co objekt opustí PolyMorph engine, putuje z paměti do Raster enginu. V GF100 jsou samozřejmě operace paralelní, Raster engine je v každém GPC bloku. Ten je rozdělen na tři další fáze - Edge setup, Rasterizer a Z-Cull. V Edge setup se počítají napříč trojúhelníky s vertex pozicemi, ty jež nejsou vidět odstraní culling. Každá Edge setup jednotka dokáže provést jednu operaci s bodem, čárou nebo trojúhelníkem za takt.

Rasterizer podle výsledku Edge setup pokryje každý objekt pixely. Pokud je požadavek na vyhlazování, připraví jednotka i potřebné krycí samply. Za jeden takt dokáže Rasterizer zpracovat až osm pixelů.

Pixely vytvořené v Rasterizeru pak putují do Z-Cull jednotky. Ta poté porovnáním s framebufferem a pixely v něm zjistí, které pixely nepůjdou vidět a odstraní je z finálního zporacování.

Streaming Multiprocesor

Architektura Fermi - Nvidia GF100 se představuje
i Zdroj: PCTuning.cz

V jádru GF100 se nachází třetí generace SM bloku, proti první a druhé generaci v jádrech G80 a G200 došlo k mnohým změnám. V SM bloku se nachází 32 CUDA procesorů, každý z nich obsahuje aritmeticko logickou (ALU) jednotku a výpočetní jednotku v plovoucí čárce (FPU). Novinkou je podpora standardu IEEE 754-2008 přidáním FMA instrukcí. Díky této změně pro single i double precision operace, narostl také výrazně výpočetní výkon a minimalizovaly se chyby. ALU jednotka podporuje 32-bitovou přesnost pro všechny instrukce, pro některé lze využít i 64-bitové. Podporována je celá škála matematických instrukcí.

Každý SM blok je dále vybaven šestnácti store/load jednotkami, umožňující provádět až šestnáct vláken za takt. V SM bloku se nachází také čtveřice speciálních jednotek (SFU), vykonávající speciální instrukce (cos, sin). Každá z jednotek umí vykonat jednu funkci  v jednom vlákně za takt, v režimu Warp je vykonáno 32 vláken na osm taktů. Pipeline je u těchto jednotek nezávislá na dispatch unit v SM bloku a je možné pokud budou v jednom SM jednotky zaneprázdněné přesunout úlohu do jiného, méně vytíženého  SM bloku.

Texturovací jednotky

Každý SM blok má čtyři texturovací jednotky. Každá z nich dokáže zpracovat čtyři operace nad texturou za jeden takt. Výsledek se může vrátit jako filtrovaný nebo nefiltrovaný. Filtrování je podporováno bilineární, trilineární a anisotropické. Větší efektivity texturovacích jednotek bylo dosaženo umístěním do SM bloku, včetně texture cache a navýšením pracovních frekvencí. U jádra G200 každé tři SM bloky sdílely osm texturovacích jednotek. U jádra GF100 má každý SM blok své čtyři jednotky. Také vnitřní struktura jednotek byla výrazně vylepšena. Nárůst výkonu by měl být hlavně patrný v práci se stíny a ambient occlusion. Díky přítomnosti L1 a L2 cache stoupl výkon jednotek až třikrát proti jádru G200. Důležitou změnou je pracovní frekvence, která byla u G200 stejná jako takt GPU. U GF100 ale pracují texturovací jednotky na frekvenci shaderů, to znamená na dvojnásobné frekvenci a vyšší. Mezi další inovace patří podpora DirectX 11 komprese BC6H a BC7, redukující nároky na paměť.

Architektura Fermi - Nvidia GF100 se představuje
i Zdroj: PCTuning.cz

Obrázek ukazuje vylepšení texturovacích jednotek u jádra GF100 proti G200. Nárůst je od 40 procent do více než 60 procent proti staršímu jádru. Čísla jsou z reálných her, tedy s pozitivním vlivem na hry můžeme jistě počítat. I přesto, že jádro G200 má texturovacích jednotek 80, bylo počtem 64 u jádra GF100 výkonově překonáno.

Cache

Architektura Fermi - Nvidia GF100 se představuje
i Zdroj: PCTuning.cz

Architektura Fermi - Nvidia GF100 se představuje
i Zdroj: PCTuning.cz

U jádra G200 bylo z L2 cache možné jen číst, GF100 může i zapisovat. Architektura pamětí cache optimalizuje komunikaci mezi pipeline a redukuje přístupy do hlavního framebufferu karty. Rozdíly mezi starým a novým jádrem ukazuje tabulka na druhém obrázku.

Předchozí
Další
Reklama
Reklama

Komentáře naleznete na konci poslední kapitoly.

Reklama
Reklama