Napsal: úte led 19, 2010 11:38 am
Termín geometrický výkon je velice široký.
To, co prudce rostlo u předchozích čipů, byl výkon vertex shaderu; tzn. schopnost zpracovávat programy přiřazené jednotlivým vertexům (vrcholům).
To, co rostlo pomalu, je triangle-rate, tzn. schopnost vůbec zpracovávat trojúhelníky. Tohle bylo omezeno výkonem CPU, protože vertexy generuje CPU. Bylo tedy zbytečné navyšovat výkon GPU, protože by stejně nebylo jak ho využít.
Přisla teselace = schopnost, díky níž je GPU schopno vertexy generovat samo. Tzn. možnost nárůstu počtu polygonů na mnohonásobek toho, co by zvládal CPU. Teoreticky. Praxe má dva zádrhely:
1. Triangle-rate. Triangle setup na to není dimenzovaný, byl dimenzovaný na množství polygonů, které stíhalo dodávat CPU. Triangle setup jako jednotka běží na základní frekvenci, za takt obvykle dokáže zpracovat 1 polygon. Tzn. frekvence v MHz obvykle = miliony trojúhelníků za sekundu. Má to ale výjimky - třeba R600 měla klasicky 1 trojúhelník za takt, ale RV670 v některých situacích potřebovala na 1 trojúhelník dva takty. Nebyl to moc problém, protože G80 a první generace G8x čipů měla poddimenzovaný (nebo zabugovaný) front-end čipu (tzn. buďto triangle setup, nebo rasterizér; detaily nevím), takže taky měla problémy s vysokým množstvím polygonů. Proto se zezačátku říkalo, že u G8x nefunguje unifikace jak by měl, protože výkon vertex shaderu při vysokém množství polygonů není o moc větší, než u starých čipů. Unifikace ve skutečnosti fungovala, ale pomalý front-end nezvládal unifikované jádro zásobovat polygony. Tohle ale pro nVidii nebyl problém; tehdejší hry - psané tak, aby běhaly i na unifikovaných čipech - náročné na geometrii nebyly, R6xx byla zabržděná bugy a drivery, takže do toho nikdo moc neryl.
Druhý limit je, že nVidia má základní frekvenci GPU nízkou, takže i triangle-setup běží na nižší frekvenci. Proto nVidia byla z tohohle hlediska víc limitovaná, než ATi a musela to začít řešit dříve.
ATi to zatím řešila tak nějak průběžně pozvolna - RV670 měla 1 polygon za 2 takty, RV770 zvládá 1 polygon za takt (tzn. dvojnásobek). RV870 má ještě dvojitý rasterizér, takže hrubý triangle-rate nevzrostl (resp. jen co se týče rozdílu frekvence), ale dokáže se ním nakládat o něco efektivněji.
Další řešení ATi je multi-GPU. AFR přes všechny své zápory má jeden velký klad a to je, že efektivně násobí triangle-rate. Tzn. zatímco nVidia se při návrhu velkého čipu musela pachtit s řešením problému, jak ho "nakrmit" dostatkem polygonů, tak ATi pro "nakrmení" menšího čipu stačil klasický způsob a high-end, který tradičně řeší přes AFR, které triangle-rate násobí, jako problém odpadl.
Nemůžu si pomoct, ale tahle genialita jednoduchosti se mi fakt líbí.
2. Zádrhel číslo dvě je, že když máme nějakou tu teselaci, kdy se zněkolikanásobí počet polygonů, není kladena zvýšená zátěž jen na teselátor a triangle-setup, ale na celý čip. Protože více polygonů = více stínů, které je třeba spočítat, složitější HDAO/SSAO (které je v módě a jehož obliba s DX11/compute-shadery poroste), několikanásobně více hran, které musí MSAA vyhladit. Tzn. s teselací rostou navíc nároky na unifikované jádro, texturovací jednotky i ROPs.
Nevím, jestli tohle nVidii uniklo, nebo co, ale dávat vlastní geometrickou jednotku do každého ze 16 bloků, ze kterých se čip skládá, je blbost. Výkon se projeví jen v syntetických testech; v reálných hrách bude návratnost mizivá - jak jsem zmínil, teselace není jen o polygonech navíc, stoupají nároky i na zbytek čipu. Takže zvýšit geometrický výkon o 800% je úplná zbytečnost, když výkon zbytku čipu jde nahoru jen o 40-100%.
ATi už se poučila z R5xx a R6xx a technologie, který se projevujou jen na papíře, nechala plavat (dynamic branching u R5xx atp...) a řeší věci, které mají vliv na 90% her. nVidia místo toho řeší nesmysly jako PhysX, "čistě" skalární architekturu a předimenzované geometrické jednotky, které se projeví v pár vybraných hrách, zatímco většinu titulů to neovlivní nijak...
To, co prudce rostlo u předchozích čipů, byl výkon vertex shaderu; tzn. schopnost zpracovávat programy přiřazené jednotlivým vertexům (vrcholům).
To, co rostlo pomalu, je triangle-rate, tzn. schopnost vůbec zpracovávat trojúhelníky. Tohle bylo omezeno výkonem CPU, protože vertexy generuje CPU. Bylo tedy zbytečné navyšovat výkon GPU, protože by stejně nebylo jak ho využít.
Přisla teselace = schopnost, díky níž je GPU schopno vertexy generovat samo. Tzn. možnost nárůstu počtu polygonů na mnohonásobek toho, co by zvládal CPU. Teoreticky. Praxe má dva zádrhely:
1. Triangle-rate. Triangle setup na to není dimenzovaný, byl dimenzovaný na množství polygonů, které stíhalo dodávat CPU. Triangle setup jako jednotka běží na základní frekvenci, za takt obvykle dokáže zpracovat 1 polygon. Tzn. frekvence v MHz obvykle = miliony trojúhelníků za sekundu. Má to ale výjimky - třeba R600 měla klasicky 1 trojúhelník za takt, ale RV670 v některých situacích potřebovala na 1 trojúhelník dva takty. Nebyl to moc problém, protože G80 a první generace G8x čipů měla poddimenzovaný (nebo zabugovaný) front-end čipu (tzn. buďto triangle setup, nebo rasterizér; detaily nevím), takže taky měla problémy s vysokým množstvím polygonů. Proto se zezačátku říkalo, že u G8x nefunguje unifikace jak by měl, protože výkon vertex shaderu při vysokém množství polygonů není o moc větší, než u starých čipů. Unifikace ve skutečnosti fungovala, ale pomalý front-end nezvládal unifikované jádro zásobovat polygony. Tohle ale pro nVidii nebyl problém; tehdejší hry - psané tak, aby běhaly i na unifikovaných čipech - náročné na geometrii nebyly, R6xx byla zabržděná bugy a drivery, takže do toho nikdo moc neryl.
Druhý limit je, že nVidia má základní frekvenci GPU nízkou, takže i triangle-setup běží na nižší frekvenci. Proto nVidia byla z tohohle hlediska víc limitovaná, než ATi a musela to začít řešit dříve.
ATi to zatím řešila tak nějak průběžně pozvolna - RV670 měla 1 polygon za 2 takty, RV770 zvládá 1 polygon za takt (tzn. dvojnásobek). RV870 má ještě dvojitý rasterizér, takže hrubý triangle-rate nevzrostl (resp. jen co se týče rozdílu frekvence), ale dokáže se ním nakládat o něco efektivněji.
Další řešení ATi je multi-GPU. AFR přes všechny své zápory má jeden velký klad a to je, že efektivně násobí triangle-rate. Tzn. zatímco nVidia se při návrhu velkého čipu musela pachtit s řešením problému, jak ho "nakrmit" dostatkem polygonů, tak ATi pro "nakrmení" menšího čipu stačil klasický způsob a high-end, který tradičně řeší přes AFR, které triangle-rate násobí, jako problém odpadl.
Nemůžu si pomoct, ale tahle genialita jednoduchosti se mi fakt líbí.
2. Zádrhel číslo dvě je, že když máme nějakou tu teselaci, kdy se zněkolikanásobí počet polygonů, není kladena zvýšená zátěž jen na teselátor a triangle-setup, ale na celý čip. Protože více polygonů = více stínů, které je třeba spočítat, složitější HDAO/SSAO (které je v módě a jehož obliba s DX11/compute-shadery poroste), několikanásobně více hran, které musí MSAA vyhladit. Tzn. s teselací rostou navíc nároky na unifikované jádro, texturovací jednotky i ROPs.
Nevím, jestli tohle nVidii uniklo, nebo co, ale dávat vlastní geometrickou jednotku do každého ze 16 bloků, ze kterých se čip skládá, je blbost. Výkon se projeví jen v syntetických testech; v reálných hrách bude návratnost mizivá - jak jsem zmínil, teselace není jen o polygonech navíc, stoupají nároky i na zbytek čipu. Takže zvýšit geometrický výkon o 800% je úplná zbytečnost, když výkon zbytku čipu jde nahoru jen o 40-100%.
ATi už se poučila z R5xx a R6xx a technologie, který se projevujou jen na papíře, nechala plavat (dynamic branching u R5xx atp...) a řeší věci, které mají vliv na 90% her. nVidia místo toho řeší nesmysly jako PhysX, "čistě" skalární architekturu a předimenzované geometrické jednotky, které se projeví v pár vybraných hrách, zatímco většinu titulů to neovlivní nijak...


