GeForce GTX 460: Fermi jinak a lépe 1/2
14.7.2010, Petr Štefek, zpráva
Na uvedení levného Fermi čekal snad každý fanoušek herních technologií a samotných her. Nyní jsme se konečně po všech nesnázích dočkali. Pojďme se tedy podívat, jak si GeForce GTX 460 vede a co je nového.
Kapitoly článku:
- GeForce GTX 460: Fermi jinak a lépe 1/2
- GF104 vs. GF100 - evoluční krok
- Polymorph Engine - skryté eso architektury Fermi
- CSAA a jiné algortimy vyhlazování
- Závěr první části
Grafické jádro GF104 aka GeForce GTX 460 je zajímavé především tím, že se nejedná o osekané jádro GF100 (GeForce GTX 480/470), ale o zcela nový čip, kde byl kladen důraz na některá dílčí vylepšení v oblasti architektury Fermi, kde byl spatřován v původním návrhu high-endového čipu problém.
Abych byl přesný, tak GF100 jako takový nemá žádné podstatné vady, jen je směřován spíše do HPC segmentu, čemuž napovídá mnoho indicií. Pro běžné hraní a upotřebení v domácím PC zde ovšem pár problematických oblastí bylo. To se týká především počtu texturovacích jednotek, SFU (Special Function Unit) a práce s vlákny (warp shedulery). Dále byl kladen důraz na nižší výrobní náklady a spotřebu, která GF100 v oblasti herního hardware doslova láme vaz.
Schéma jádra GF100 - dohromady integruje 512 CUDA Cores a 3 mld. tranzistorů
První grafické jádro architektury Fermi (GF100) se vyznačuje 512 Stream Processory (Nvidia je nově nazývá CUDA Cores, aby zdůraznila, že se jedná o multi-funkční akcelerátor a nikoli pouze o grafickou kartu). Ve struktuře nadřazenou jednotkou je Streaming Multiprocessor (SM), čtvěřice těchto jednotek pak představuje Graphics Processing Cluster alias GPC. Čtveřice GPC zase tvoří již celistvý čip GF100.
Pokud bychom počty jednotek vynásobili, pak nám vyjde číslo 512, ale plný počet výpočetních jednotek u žádné produkční karty bohužel nenajdeme. Zbrusu nový čip GF104 disponuje 384 výpočetními jednotkami, což znamená, že na každý SM jich připadá rovných 48!
Schéma jádra GF104 - integruje 384 CUDA Cores a skoro 2 mld. tranzistorů
Každý SM v čipu GF104 má rovněž k dispozici 8 SFU (Special Function Unit) a 8 texturovacích jednotek (8 adresovacích, 8 mapovacích). To znamená, že architektura každého SM prodělala malé zemětřesení a nyní je zde více o 16 CUDA Cores (SP), 4 SFU a 4 texturovací jednotky. Na první pohled možná nepatrná událost ve zvýšení počtu zpracovávaných instrukcí v SM na dvojnásobek během dvou cyklů (zdvojnásobení warp shedulerů) znamená dramatické zvýšení teoretické efektivity zpracování dat v celém čipu.
Streaming Multiprocessor (SM) - disponuje o 16 CUDA Cores více než SM v jádru GF100
GF100 disponuje 64 TAU (Texture Adressing Unit) a rovnou 256 TFU (Texture Filtering Unit), což je stejný počet, jaký má k dispozici plně aktivovaný čip GF104. V jeho pracovní verzi v GeForce GTX 460 je to méně (56). I tak je zde patrný příklon k vyššímu surovému výkonu v oblasti texel fillrate, který je pro mnoho her stále stěžejní. V tabulce tak zcela zřetelně uvidíte podobné výkony v oblasti texturování u GeForce GTX 480 a GeForce GTX 460.
32 renderovacích jednotek není na první pohled mnoho, ale je třeba si uvědomit, že jednotky jsou podstatně vyspělejší než u předchozích grafických čipů a navíc v dnešní době nepředstavují problém ani pro FSAA (většina pokročilých algoritmů vyhlazování včetně později zmiňovaného CSAA využívá výkonu shaderů). GF104 je v podstatě duchovním nástupcem velmi úspěšného čipu G92, který byl evolucí prvního čipu G80 známého z GeForce 8. Zbrusu nová GF104 je dle mého názoru nejen nový mainstreamový čip, ale také Fermi čip druhé generace.
GeForce GTX 460 se do stanic Nvidia Tesla nepodívá díky absenci ECC
Nvidia chtěla vytvořit multi-funkční akcelerátor, který bude mít minimum omezení v každé oblasti, kde s jeho nasazením počítá a zároveň odstranit chyby GF100, které ji odborná veřejnost stále jen velmi těžko odpouští. Nvidia se musela poprat především s poměrně nepřesvědčivými výkony ve hrách na starších enginech (DirectX 9/10), kde nepomůže vysoký výkon geometrické části a ani pokročilý PhysX.
Stále zde ovšem máme velmi programovatelný grafických procesor, který zvládne cokoli, co jeho high-endový soukmenovec. Na rozdíl od něj ovšem nemá podporu ECC pamětí a také je jeho efektivita při práci s „double precision“ operacemi na rovné 1/12 oproti „single precision“ zpracování. S HPC (High Performance Computing) je zde evidentně na druhé koleji, ale to nám domácím uživatelům bez nároků na pracovní stanice Tesla zcela jistě vadit nebude.Jediná jednotka s pevně danou funkčností (když už mluvíme o té flexibilitě a programovatelnosti) je v celém čipu tzv. GigaThread Engine, což není nic jiného než plánovač úloh, které má čip vykonat. Efektivita této jednotky má stěžejní vliv na výkon celého čipu. Nvidia se ovšem o podrobnostech příliš nezmiňuje, což je s podivem, ale pravděpodobně se od vydání GF100 nic zásadního nezměnilo (ani při vydaní GF100 nebyla společnost o mnoho sdílnější).
Naopak se dozvíme vrchovatou měrou o součástech GPC a SM v podobě Raster Engine (RE) a Polymorph Engine (PE). Raster Engine je jednotka na úrovni celého GPC a Polymorph Engine je menší jednotkou na úrovni menších SM. Jejich počet je tedy logicky odpovídající samotným počtům GPC a SM.
Raster Engine (RE) má podobnou funkci jako dřívější jednotky ROP ve starších čipech Nvidie, což znamená, že zde v otázce funkčnosti můžeme najít triangle/edge setup, rasterizaci, z-culling. Každý RE zvládne zpracovat 8 pixelů za takt, což znamená 16 zpracovaných pixelů v rámci celého čipu. RE se odlišuje od architektury GT200 hlavně svým počtem, kdy jsou nyní přítomny 2 samostatné rasterizační oddíly (narozdíl od 4 v předešlém čipu GF100).
Tento počet je zvolen pravděpodobně s ohledem na multi-akceleraci nejen ve hrách a lepší plánování vytížení 2 samostatných jednotek oproti jediné v architektuře GT200. Poloviční počet oproti GF100 je dán jistými limity na straně architektury SM a GPC, kde již pravděpodobně není možné nějak výrazně dělit RE do více částí.
Polymorph Engine (PE) je přítomen v každém z 8 SM (Streaming Multiprocessor) a stará se o geometrii scény. Pokud jste hledali hardwarový testátor a doposud jste hledali marně, tak jeho funkčnost je právě součástí PE, který je zodpovědný mimo jiné i za funkčnost Vertex Fetch, Viewport Transform, Stream Output atd. Teselátor je jednou z hlavních deviz nového rozhraní DirectX 11 (vytváři komplexnější geometrii na základě původního modelu s jednodušší geometrií). V celém čipu GF 104 je tak přítomno 8 PE jednotek. Všechny PE podporují tzv.“out of order“ výpočty. Rozdělení do několika malých jednotek tak dostává své opodstatnění.
Out of order vykonávání instrukcí je známo již dlouho z klasických procesorů, které dosahují vyšších výkonů při vykonávání instrukcí mimo obvyklý pořádek. V případě GF100 a počtu výpočetních jednotek je tento úkol ještě mnohem obtížnější, neboť vykonání určitých stejných instrukcí před ostatními, které jsou v jakési frontě za nimi, může pozměnit výsledky výpočtů, které očekávate od daného procesu. Pokud například vykonáte dříve instrukci, která přímo závisí na předešlé operaci, máte naráz zaděláno na problém a dojde samozřejmě k chybě. GF104 ale podporuje out-of-order vykonávání jen na úrovni mezi jednotlivými PE jednotkami a vnitřně jsou již tyto jednotky opět starý dobrý in-order návrh.
Abych byl přesný, tak GF100 jako takový nemá žádné podstatné vady, jen je směřován spíše do HPC segmentu, čemuž napovídá mnoho indicií. Pro běžné hraní a upotřebení v domácím PC zde ovšem pár problematických oblastí bylo. To se týká především počtu texturovacích jednotek, SFU (Special Function Unit) a práce s vlákny (warp shedulery). Dále byl kladen důraz na nižší výrobní náklady a spotřebu, která GF100 v oblasti herního hardware doslova láme vaz.
Schéma jádra GF100 - dohromady integruje 512 CUDA Cores a 3 mld. tranzistorů
První grafické jádro architektury Fermi (GF100) se vyznačuje 512 Stream Processory (Nvidia je nově nazývá CUDA Cores, aby zdůraznila, že se jedná o multi-funkční akcelerátor a nikoli pouze o grafickou kartu). Ve struktuře nadřazenou jednotkou je Streaming Multiprocessor (SM), čtvěřice těchto jednotek pak představuje Graphics Processing Cluster alias GPC. Čtveřice GPC zase tvoří již celistvý čip GF100.
Pokud bychom počty jednotek vynásobili, pak nám vyjde číslo 512, ale plný počet výpočetních jednotek u žádné produkční karty bohužel nenajdeme. Zbrusu nový čip GF104 disponuje 384 výpočetními jednotkami, což znamená, že na každý SM jich připadá rovných 48!
Schéma jádra GF104 - integruje 384 CUDA Cores a skoro 2 mld. tranzistorů
Každý SM v čipu GF104 má rovněž k dispozici 8 SFU (Special Function Unit) a 8 texturovacích jednotek (8 adresovacích, 8 mapovacích). To znamená, že architektura každého SM prodělala malé zemětřesení a nyní je zde více o 16 CUDA Cores (SP), 4 SFU a 4 texturovací jednotky. Na první pohled možná nepatrná událost ve zvýšení počtu zpracovávaných instrukcí v SM na dvojnásobek během dvou cyklů (zdvojnásobení warp shedulerů) znamená dramatické zvýšení teoretické efektivity zpracování dat v celém čipu.
Streaming Multiprocessor (SM) - disponuje o 16 CUDA Cores více než SM v jádru GF100
GF100 disponuje 64 TAU (Texture Adressing Unit) a rovnou 256 TFU (Texture Filtering Unit), což je stejný počet, jaký má k dispozici plně aktivovaný čip GF104. V jeho pracovní verzi v GeForce GTX 460 je to méně (56). I tak je zde patrný příklon k vyššímu surovému výkonu v oblasti texel fillrate, který je pro mnoho her stále stěžejní. V tabulce tak zcela zřetelně uvidíte podobné výkony v oblasti texturování u GeForce GTX 480 a GeForce GTX 460.
32 renderovacích jednotek není na první pohled mnoho, ale je třeba si uvědomit, že jednotky jsou podstatně vyspělejší než u předchozích grafických čipů a navíc v dnešní době nepředstavují problém ani pro FSAA (většina pokročilých algoritmů vyhlazování včetně později zmiňovaného CSAA využívá výkonu shaderů). GF104 je v podstatě duchovním nástupcem velmi úspěšného čipu G92, který byl evolucí prvního čipu G80 známého z GeForce 8. Zbrusu nová GF104 je dle mého názoru nejen nový mainstreamový čip, ale také Fermi čip druhé generace.
GeForce GTX 460 se do stanic Nvidia Tesla nepodívá díky absenci ECC
Nvidia chtěla vytvořit multi-funkční akcelerátor, který bude mít minimum omezení v každé oblasti, kde s jeho nasazením počítá a zároveň odstranit chyby GF100, které ji odborná veřejnost stále jen velmi těžko odpouští. Nvidia se musela poprat především s poměrně nepřesvědčivými výkony ve hrách na starších enginech (DirectX 9/10), kde nepomůže vysoký výkon geometrické části a ani pokročilý PhysX.
Stále zde ovšem máme velmi programovatelný grafických procesor, který zvládne cokoli, co jeho high-endový soukmenovec. Na rozdíl od něj ovšem nemá podporu ECC pamětí a také je jeho efektivita při práci s „double precision“ operacemi na rovné 1/12 oproti „single precision“ zpracování. S HPC (High Performance Computing) je zde evidentně na druhé koleji, ale to nám domácím uživatelům bez nároků na pracovní stanice Tesla zcela jistě vadit nebude.Jediná jednotka s pevně danou funkčností (když už mluvíme o té flexibilitě a programovatelnosti) je v celém čipu tzv. GigaThread Engine, což není nic jiného než plánovač úloh, které má čip vykonat. Efektivita této jednotky má stěžejní vliv na výkon celého čipu. Nvidia se ovšem o podrobnostech příliš nezmiňuje, což je s podivem, ale pravděpodobně se od vydání GF100 nic zásadního nezměnilo (ani při vydaní GF100 nebyla společnost o mnoho sdílnější).
Naopak se dozvíme vrchovatou měrou o součástech GPC a SM v podobě Raster Engine (RE) a Polymorph Engine (PE). Raster Engine je jednotka na úrovni celého GPC a Polymorph Engine je menší jednotkou na úrovni menších SM. Jejich počet je tedy logicky odpovídající samotným počtům GPC a SM.
Raster Engine (RE) má podobnou funkci jako dřívější jednotky ROP ve starších čipech Nvidie, což znamená, že zde v otázce funkčnosti můžeme najít triangle/edge setup, rasterizaci, z-culling. Každý RE zvládne zpracovat 8 pixelů za takt, což znamená 16 zpracovaných pixelů v rámci celého čipu. RE se odlišuje od architektury GT200 hlavně svým počtem, kdy jsou nyní přítomny 2 samostatné rasterizační oddíly (narozdíl od 4 v předešlém čipu GF100).
Tento počet je zvolen pravděpodobně s ohledem na multi-akceleraci nejen ve hrách a lepší plánování vytížení 2 samostatných jednotek oproti jediné v architektuře GT200. Poloviční počet oproti GF100 je dán jistými limity na straně architektury SM a GPC, kde již pravděpodobně není možné nějak výrazně dělit RE do více částí.
Polymorph Engine (PE) je přítomen v každém z 8 SM (Streaming Multiprocessor) a stará se o geometrii scény. Pokud jste hledali hardwarový testátor a doposud jste hledali marně, tak jeho funkčnost je právě součástí PE, který je zodpovědný mimo jiné i za funkčnost Vertex Fetch, Viewport Transform, Stream Output atd. Teselátor je jednou z hlavních deviz nového rozhraní DirectX 11 (vytváři komplexnější geometrii na základě původního modelu s jednodušší geometrií). V celém čipu GF 104 je tak přítomno 8 PE jednotek. Všechny PE podporují tzv.“out of order“ výpočty. Rozdělení do několika malých jednotek tak dostává své opodstatnění.
Out of order vykonávání instrukcí je známo již dlouho z klasických procesorů, které dosahují vyšších výkonů při vykonávání instrukcí mimo obvyklý pořádek. V případě GF100 a počtu výpočetních jednotek je tento úkol ještě mnohem obtížnější, neboť vykonání určitých stejných instrukcí před ostatními, které jsou v jakési frontě za nimi, může pozměnit výsledky výpočtů, které očekávate od daného procesu. Pokud například vykonáte dříve instrukci, která přímo závisí na předešlé operaci, máte naráz zaděláno na problém a dojde samozřejmě k chybě. GF104 ale podporuje out-of-order vykonávání jen na úrovni mezi jednotlivými PE jednotkami a vnitřně jsou již tyto jednotky opět starý dobrý in-order návrh.