Bevezetés az NVIDIA Pascal architektúra rejtelmeibe

Visszatérés a Fermihez

Az NVIDIA a tegnapi napon bemutatta a Tesla P100 jelzésű gyorsítót, amelyről az alábbi hírben írtunk, és ígéretet tettünk arra, hogy később elemezzük magát a lapkát is. Bár a vállalat már a nyitóelőadáskor közzé tett egy részletesebb leírást a fejlesztésről, de az elemzéshez mindenképpen meg akartuk várni az NVIDIA erre kihegyezett prezentációját, hogy jobb képet kapjunk arról, milyen technikai alapokra épül az újítás.

A GP100
A GP100 [+]

A Pascal architektúra tulajdonképpen nem tekinthető alapvető reformnak, csupán az elődnek számító Maxwell architektúra és a Fermi örökségének egybegyúrásáról van szó. Ez viszont nagyon alapos, így nem csak apróbb kiegészítésekről beszélhetünk, hanem a rendszer alapvető működését befolyásoló módosítások történtek, amelyek az NVIDIA elmondása szerint a compute hatékonyság növelését célozzák meg. A GP100 kódnevű lapka esetében alapvető újdonság a 16 nm-es gyártástechnológia, így a 15,3 milliárd tranzisztorból felépülő, 610 mm²-es chipbe 60 darab streaming multiprocesszort sikerült beépíteni, amit az NVIDIA ezúttal szimplán SM-nek jelöl (bár bizonyos előadásokon az SMP tűnt fel), ami hivatalosan a Pascal streaming multiprocesszor rövidítése.

A streaming multiprocesszorok felépítése a második generációs Maxwell architektúrában ismert megoldáshoz képest jelentősen megváltozott. Ennek köszönhetően elmondható, hogy egy ilyen egységen belül már nem négy, hanem csak kettő nagyobb compute blokk került kialakításra, amelyek közös utasítás gyorsítótárat használnak. Mindegyik compute blokk rendelkezik egy utasítás pufferrel, ami nyilvánvalóan az utasítás gyorsítótárból szerzi be az aktuális munkához szükséges információkat. Az egész rendszer komplex ütemezést használ, amely a Kepler és a Maxwell architektúrával ellentétben már nagyrészt hardveres, így a szoftveres ütemezés mértéke jelentősen redukálva lett. A hardveres részért továbbra is GigaThread motor felel, ami jelentős átdolgozásra került a korábbi architektúrákhoz képest.

A változások nagyon egyszerűen értelmezhetők, mivel a streaming multiprocesszorokon belüli compute blokkok csökkentése, az ütemezés nagyrészt hardveressé tétele, ezen belül is a szoftveres ütemezés mértékének redukálása mind arra szolgál, hogy a lapka compute hatékonysága nőjön. Ebből a szempontból a Pascal visszatérés a Fermi koncepciójához. Utóbbinak nagyon egyszerű oka van, ugyanis az NVIDIA a Fermi után azért emelte ki folyamatosan a jó compute hatékonysághoz szükséges hardverelemeket, hogy csökkenjen a fogyasztás. A FinFET tranzisztorokkal azonban ez pusztán a gyártástechnológia oldaláról is hozható, így az amúgy eléggé fontos, jó compute hatékonyságot biztosító hardverelemek végre visszakerülhetnek, persze már megújult formában.

A compute blokkokra rátérve egy ilyen egységben két feladatirányító (dispatch) és egy warp ütemező található, amelyek 32 darab, úgynevezett CUDA magot etetnek, így az utasításszavak 2 darab, 16 utas feldolgozón hajtódnak végre párhuzamosan. Mindegyik CUDA mag rendelkezik egy IEEE754-2008-as szabványnak megfelelő, 32 bites lebegőpontos végrehajtóval, amelyek támogatják a MAD (Multiply-Add) és az FMA (Fused Multiply-Add) instrukciókat. Ráadásul ezek az új CUDA magok olyan 32 bites ALU-kat használnak, amelyek nem egy, hanem két darab 16 bites lebegőpontos operációt is képesek végrehajtani. Ez itt az a fő újítás, ami a gépi tanuláshoz szükséges, mivel így a felezett pontosságú tempó kétszerese lehet a szimpla pontosságú teljesítménynek. A compute blokkonon belül található még 8 darab speciális funkciókért felelő egység (SFU), amelyek a trigonometrikus és transzcendens utasítások mellett az interpoláció feladatát is elvégzik, továbbá a blokkok része még 16 darab dedikált FP64-es CUDA mag, amelyek nyilván a dupla pontosság végrehajtásáért felelnek.

Az új SM
Az új SM

A compute blokkokban fontos változás még a közös regiszterterület növekedése, aminek kapacitása már 128 kB lesz. Utoljára a Fermi rendelkezett ennyi regiszterrel 32 darab shader processzorra levetítve, így az NVIDIA ezen a ponton is lépdel visszafelé az alaparchitektúra irányába. Itt megint az a változás történik, amiről fentebb írtunk az ütemezés kapcsán. Az új gyártástechnológiával már nem szükséges olyan kompromisszumokat kötni, amelyekre a vállalat a Kepler és a Maxwell architektúrában kényszerült, így visszatérhet az az eredeti dizájn, amit a mérnökök a Fermivel álmodtak meg, és ez szintén növeli a compute hatékonyságot.

A GP100 a textúrázási képességek területén nem újít igazán. Az egyes streaming multiprocesszorok egy darab textúrázó blokkot tartalmaznak, amelyet két compute blokk használ egyszerre. Ehhez a textúrázó blokkhoz tartozik egy ismeretlen kapacitású írható és olvasható L1 gyorsítótár, amelyet természetesen a CUDA magok is használhatnak. Az NVIDIA arra nem tért ki, hogy a GP100 textúrázócsatornái képesek-e szűrt mintákkal visszatérni, vagy csupán mintavételezők vannak benne. Ez azért lenne fontos adat, mert utóbbi tényező fennállása mellett a GP100 csakis egy szerverekbe szánt termék lehet, míg előbbi esetben jó lenne más piacokra is. Hasonlóan titkolózik a vállalat azzal kapcsolatban is, hogy a GP100 rendelkezik-e egyáltalán setup motorokkal, illetve ROP blokkokkal. Nyilván ezek hiánya is azt jelentené, hogy a rendszer csak egy szerverekbe való gyorsító.

A Pascal architektúra némileg módosít a helyi adatmegosztáson is. Az új shader multiprocesszor mostantól 64 kB-os helyi adatmegosztással (Local Data Share) rendelkezik, vagyis egy compute blokkra 32 kB-nyi terület jut. Ez többek között a DirectX API DirectCompute specifikációi szempontjából lesz fontos változás, ugyanis a Maxwell architektúra esetében problémát jelentett, hogy a négy compute blokkra nem jutott akkora helyi adatmegosztás, amely minden compute blokknak biztosított volna egy 32 kB-os területet. Ilyen formában a Maxwell itt is compute teljesítményt vesztett, mivel nem mindig lehetett aktív a shader multiprocesszoron belül az összes compute blokk. A Pascal architektúra esetében azonban az NVIDIA orvosolta ezt a problémát, így ezen a területen is előrelépés történt.

Az NVIDIA ugyan nem részletezte mélységeiben, de lényeges újítás még, hogy a Pascal esetében a preempció a korábbi architektúrákhoz képest finomabb szemcsézettségű lesz. Arról nincs adat, hogy ez egészen konkrétan mit jelent, de az már biztos, hogy a korábbi rajzolási szintű preempciót egy új modell váltja fel. Ennek részleteiről azonban a vállalat még nem szeretne beszélni. Megújulnak a GMU-k, azaz a Grid Management Unitok is, így a Pascal jobb Hyper-Q képességekkel fog rendelkezni, mint a Maxwell. Sajnos a konkrétumokat a cég itt sem fejtette ki, de nagyon valószínű, hogy az új GMU-k már támogatni fogják az erőforrás-korlátozást, ami az aszinkron compute szempontjából nagyon hasznos lesz.

A cikk még nem ért véget, kérlek, lapozz!

Azóta történt

Előzmények

Hirdetés