Nem érted a lényeget. Időpontokba kapaszkodsz, amikor látható a programokon, hogy egyre komplexebb shadereket használnak, amelyek egyre rosszabban futnak a statikus erőforrás-allokációval. Márpedig a ma létező GPU-k nem valami okos jószágok, hírből sem ismerik a dinamikus allokáció lehetőségét, hardveres támogatás erre pedig lényegében nincsen. Azt nem állítom, hogy később nem lesz, de ez még nagyon a jövő zenéje. Ergo minden egyes új generációnál el kell gondolkodni azon, hogy az egyre komplexebb shadereket az alapvetően ugyanúgy működő GPU hogyan kezeli majd le. Emiatt láthatod manapság, hogy bár maga a statikus erőforrás-allokáció mint működési elv nem változott, de egyre jobban próbálják segíteni a rendszert. Ilyen volt például az AMD Polarisban és az Intel Gen9-ben érkező utasítás-előbetöltés. Ezekkel nem volt szükség annyi wave futtatására az optimális kihasználáshoz, mint korábban. Mert ugye maga az alapprobléma az, hogy az adott hardver számára szükséges xy wave, hogy a feldolgozók dolgozzanak is, de a komplexebb shaderekkel, ezen belül is az általánosan elterjedt übershaderes megközelítéssel a szükséges wave-ek esetlegesen csak fele futhat, vagyis a feldogozók egy jó része boci szemekkel néz a memória felé, hogy küldje már azt az adatot, mert anélkül nem tud dolgozni.
Maga a probléma hardverenként eltérő. Az Intel dizájnja például ki van tömve regiszterekkel, lényegében szinte mindig képes a maximális wave-számot futtatni, mert fizikailag úgy van megtervezve, hogy legyen erre elég regiszter. Ennek a hátránya az, hogy háromszor annyi tranzisztorba kerül az Intelnek egységnyi ALU teljesítmény beépítése, mint például az AMD-nek, és az LDS limitjeit ez nem oldja meg, mert azt a rendszer statikusan csippenti le az L3-ból, ami egyrészt helyhiányhoz vezet, másrészt messze van az ALU-któl. Ezért vezették be ők is az utasítás-előbetöltést, ahogy az AMD, hogy lejjebb tudjanak menni az optimálisan futtatható wave-ek számában.
A Vega és a Volta pusztán egy újabb lépés a történetben, mert látva a fejlesztők koncepcióit abszolút nem kérdés, hogy a shaderek bonyolultabbak lesznek, így nő a register/LDS pressure, ami az Intel, az AMD és az NV SIMT elven működő architektúráinak a halála. Az más kérdés, hogy a trükkös megoldás helyett a Vega és a Volta elment a brute force felé, mert annyi trükkre már nincs lehetőség hardveresen vezérelt erőforrás-allokációvaló nélkül, ami viszont komolyabb fejlesztést igényel, nem beszélve arról, hogy sokat növelne a fogyasztáson, ha most beraknának egy bonyolultabb hardvert erre a problémára, de előbb-utóbb ez is meg fog történni. A brute force koncepció is csak egy-két generációig életképes, aztán lépni kell tovább, mert több lesz a hátránya, mint az előnye.
A Vega és a Volta dinamikus LDS allokációja még abból a szempontból szerencsés, hogy lehetővé tesz pár szoftveres trükköt. Az AMD megoldása ugyan automatikusan működik, de készül a Vulkan API-hoz egy szoftveres kontrollt lehetővé tevő kiterjesztés, amivel a fejlesztő limitálhatja az egyes shadereknél a wave-ek számát, hogy jobb legyen a cache-hit, és ez működik az összes GCN-re, de a Vegán a leghatékonyabb. A Volta esetében az direkt optimalizálás nem igazán lehetőség, hanem egy kötelező elem, mert automatikusan nem sok dologra képes az a dizájn, viszont tranyók szintjén olcsó kezelést kínál az alapproblémára, ha a fejlesztő szán rá egy kis időt, hogy jól fusson a hardveren az adott shader.
A lényeg annyi, hogy az egyes architektúráknak van egy életciklusa. Ez akkor is tart, amikor már nem tudod őket megvásárolni a boltokban, és a gyártók nézőpontjából okvetlenül fontos, hogy erre az életciklusra rá legyen tervezve a hardver. És láthatóan nem egy gyártó gondolja így, mert ha úgy lenne, akkor csak egy cég vezette volna be az utasítás-előbetöltést, a dinamikus LDS allokációt, a wave-ek szoftveres kontrollját, de mit ad az ég lényegében mindegyik újítást minimum két gyártó kínálja már legalább egy, ma elérhető hardverben. Tehát nagyon egységes, amit a fejlesztőknél látnak.
[ Szerkesztve ]
Senki sem dől be a hivatalos szóvivőnek, de mindenki hisz egy meg nem nevezett forrásnak.