Nvidia GF100 alias Fermi - bližší informace
21.1.2010, Petr Štefek, technologie
Dnešní článek přináší bližší informace o nové architektuře GF100 společnosti Nvidia. Nemusíte se bát, protože se nebude jednat pouze o kopírování PR informací, ale nad vším se řádně zamyslíme a vše si rozebereme.
Kapitoly článku:
Grafické jádro GF100 se vyznačuje 512 Stream Processory (Nvidia je nově nazývá CUDA core, 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 logicky vyjde číslo 512.
Dokonce již víme, že čip GF100 bude disponovat 64 TAU (Texture Adressing Unit) a rovnou 256 TFU (Texture Filtering Unit). 48 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 (shadery). GF100 je v mnoha ohledech odlišná od minulé architektury GT200 a pokud vezmeme v úvahu její funkčnost na úrovni herního akcelerátoru, pak je zde odklon od struktury a funkčnosti minulých čipů ještě patrnější. 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á. To velmi dobře ilustruje celková rozdrobenost čipu, kde každý malý SM má svůj rasterizační a texturovací engine.
V podstatě jediná jednotka s pevně danou funkčností je tzv. GigaThread Engine, což není nic jiného než plánovač úloh, které má čip vykonat. Jeho funkčnost a efektivita má stěžejní vliv na výkon celého čipu. Nvidia se ovšem o podrobnostech již dále nezmiňuje. Naopak se dozvíme o součástech GPC a SM v podobě Raster Engine (RE) a Polymorph Engine (PE). RE je jednotka na úrovni celého GPC a PE je menší jednotkou na úrovní menších SM. Jejich počet je tedy logicky odpovídající 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á 32 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 4 samostatné rasterizační oddíly (narozdíl od jediného v předešlém čipu). Proč tomu tak je? Velmi pravděpodobně s ohledem právě na multi-akceleraci nejen ve hrách a lepší plánování vytížení 4 samostatných jednotek. Bižší informace o tom, co Nvidii vedlo udělat zdánlivý krok vzad, prozatím nejsou.
Polymorph Engine (PE) je přítomen v každém ze 16 SM (Streaming Multiprocessor) a stará se o geometrii scény. Pokud jste hledali hardwarový teselátor, tak jste hledali marně, neboť 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 100 je tak přítomno 16 PE jednotek. Celé kouzlo tkví ovšem v tom, že všechny PE podporují tzv.“out of order“ výpočty. Rozdělení do mnoha 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ě. GF100 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.
Dokonce již víme, že čip GF100 bude disponovat 64 TAU (Texture Adressing Unit) a rovnou 256 TFU (Texture Filtering Unit). 48 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 (shadery). GF100 je v mnoha ohledech odlišná od minulé architektury GT200 a pokud vezmeme v úvahu její funkčnost na úrovni herního akcelerátoru, pak je zde odklon od struktury a funkčnosti minulých čipů ještě patrnější. 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á. To velmi dobře ilustruje celková rozdrobenost čipu, kde každý malý SM má svůj rasterizační a texturovací engine.
V podstatě jediná jednotka s pevně danou funkčností je tzv. GigaThread Engine, což není nic jiného než plánovač úloh, které má čip vykonat. Jeho funkčnost a efektivita má stěžejní vliv na výkon celého čipu. Nvidia se ovšem o podrobnostech již dále nezmiňuje. Naopak se dozvíme o součástech GPC a SM v podobě Raster Engine (RE) a Polymorph Engine (PE). RE je jednotka na úrovni celého GPC a PE je menší jednotkou na úrovní menších SM. Jejich počet je tedy logicky odpovídající 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á 32 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 4 samostatné rasterizační oddíly (narozdíl od jediného v předešlém čipu). Proč tomu tak je? Velmi pravděpodobně s ohledem právě na multi-akceleraci nejen ve hrách a lepší plánování vytížení 4 samostatných jednotek. Bižší informace o tom, co Nvidii vedlo udělat zdánlivý krok vzad, prozatím nejsou.
Polymorph Engine (PE) je přítomen v každém ze 16 SM (Streaming Multiprocessor) a stará se o geometrii scény. Pokud jste hledali hardwarový teselátor, tak jste hledali marně, neboť 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 100 je tak přítomno 16 PE jednotek. Celé kouzlo tkví ovšem v tom, že všechny PE podporují tzv.“out of order“ výpočty. Rozdělení do mnoha 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ě. GF100 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.