Bevezetés a fermis GeForce rejtelmeibe

Hirdetés

A Fermi architektúra mélylélektana

A 40 nm-es gyártástechnológiával készülő, 530 mm²-es GF100 az előző generációhoz képest rengeteg változást tartalmaz. A legnagyobb hangsúlyt a dupla pontos számítási teljesítmény drasztikus növelése kapta, ami a GT200 rákfenéje volt, hiszen rendkívül kevés dedikált feldolgozót alkalmazott az NVIDIA. Bár ennek a funkciónak a PC-s felhasználó gyakorlatilag nem, vagy csak nagyon ritkán veszi hasznát, a HPC és a professzionális piacon ez nagyon fontos szempont. A több mint 3 milliárd tranzisztorból felépülő lapka nem is okozott csalódást, mivel ebbe a pokolian magas számba 16 streaming multiprocesszort sikerült beépíteni, ezek a modulok felelnek a Fermi képességeiért. Ez az első olyan architektúra a világon, mely a szimpla pontosság esetén elérhető számítási kapacitás felét kínálja dupla pontosság mellett. A vállalat mérnökei tehát tényleg megrázták magukat, és elérték, hogy a GF100 lapka jelentősen jobb teljesítményt nyújtson a HPC piacon, mint a GT200. A GeForce sajnos a dupla pontosság forradalmából kimarad, ugyanis az NVIDIA mesterségesen korlátozza a rendszer képességeit, így a teljesítmény a szimpla pontossághoz viszonyítva nem a felére, hanem a nyolcadára esik vissza. Persze, ahogy azt az előbb említettük, ez nem befolyásolja a játékok alatt mérhető sebességet.


[+]

A streaming multiprocesszorok felépítése rendkívül komplex. Mindegyik ilyen egység 32 darab úgynevezett CUDA magot tartalmaz két csoportba rendezve. Ezeken a 16 utas feldolgozókon lesznek párhuzamosan végrehajtva az utasításszavak. Mindegyik CUDA mag rendelkezik egy 32 bites fixpontos és egy szintén 32 bites lebegőpontos végrehajtóval. Ez rögtön egy érdekes változás a konkurens és az előző generációs architektúrához viszonyítva. A Fermiben a fix- és a lebegőpontos számításokért külön feldolgozók felelnek, melyek támogatják az ADD és a MUL utasításokat, emellett az IEEE754-2008-as szabványnak megfelelő lebegőpontos egység a MAD (Multiply-Add) és az FMA (Fused Multiply-Add) instrukciót is kezeli. Ennek a felépítésnek számos előnye van a HPC piacon, ám a játékok nagyrészt lebegőpontos számításokat végeznek, így a GeForce kártyákban a fixpontos ALU-k többsége pihenni fog. A regiszterek szempontjából is komoly újítás történt, ugyanis a streaming multiprocesszorban található CUDA magok mostantól nem dedikált, hanem közös területet használnak az adatok átmeneti tárolására.

Nagymértékű átalakításon ment keresztül a speciális funkciókért felelő egység (SFU) is. A Fermiben már nincs jelen a ritkán kihasználható extra MUL utasítás, ám a streaming multiprocesszoronként fellelhető négy darab SFU biztos nem fog unatkozni, hiszen a trigonometrikus és transzcendens utasítások mellett az interpoláció feladatát is megkapták. Itt álljunk is meg egy pár mondat erejéig, hiszen a gyártók más koncepciót dolgoztak ki ebből a szempontból. A konkurens Cypress lapkáról írt cikkünkben már beszámoltunk róla, hogy az AMD – a mai játékok rendkívül eltérő igényeire hivatkozva – az interpoláció emulálása mellett döntött, míg az NVIDIA továbbra is a fix funkciós interpolátorok mellett kardoskodik. Igazából mindkét elgondolás járható út, egyaránt rendelkeznek előnyös és hátrányos hatásokkal. A fix funkciós egységek nyilvánvalóan gyorsabban végzik a feladatukat az emulált megoldáshoz viszonyítva, ám esetenként limitálhatják a feldolgozást. Ilyenkor az emulált interpoláció a nyerő, mivel a rendszer sokkal kiegyensúlyozottabban tud működni. Valójában azt érdemes látni, hogy az új Radeonok a nyers számítási kapacitás szempontjából erősebbek a fermis GeForce-oknál, így az AMD bevállalhatta az emulációt, mely a program igényeitől függően sokat hozhat a konyhára, de keveset bukhatnak vele.

A GF100 a legnagyobb meglepetéssel a textúrázási képességek területén szolgált. Az egyes streaming multiprocesszorok csak egy textúrázó blokkot tartalmaznak, melyben négy textúracímző és textúraszűrő található, és ezekhez csatornánként négy mintavételező tartozik. Ezzel a felépítéssel az NVIDIA visszalépett az előző generációs lapkához viszonyítva, de a cég hangsúlyozza, hogy az új textúrázó csatornák okosabbak lettek. Ez alapvetően igaz is, hiszen a DirectX 11 megköveteli a Gather4 utasítás támogatását, aminek következtében a mintavételezési kapacitás a megfelelő programok futtatása esetén négyszeresére emelkedhet. Ez azonban nem az egyetlen változás a Fermiben, hiszen bemutatkozik az úgynevezett accelerated jittered sampling. Maga a jittered sampling algoritmus egy régóta ismert eljárás, amelyet többnyire lágy szélű árnyékok kreálásához és különböző post-process effektekhez használnak a fejlesztők. Az accelerated (gyorsított) jelzőt az NVIDIA azért alkalmazza, mert a számításokra vektoros utasítást használnak, ami a hagyományos elgondoláshoz viszonyítva elméletben kétszer gyorsabb. Ez a teljes képkocka számítási idejére levetítve 3-8%-kal javíthat a sebességen, amennyiben a futtatott alkalmazás használ jittered samplinget. A jelenleg fellelhető programok közül a 3DMark sorozat új változatai és a Tom Clancy's HAWX biztosan kamatoztatja az algoritmus előnyeit.

Memóriahierarchia szempontjából a GF100 egy 768 kB kapacitású megosztott L2 gyorsítótárat alkalmaz, mely minden streaming multiprocesszornak elérhető. Az utóbbi modulok 64 kB-os L1 gyorsítótárral rendelkeznek, mely a feladatnak megfelelően dinamikusan szétosztható egy 16 és egy 48 kB-os részre, attól függően, hogy mekkora megosztott memóriát igényelnek a CUDA magok. A grafikus feldolgozás során a DirectX 11 specifikációinak megfelelően kötelező a nagyobb szeletet kapniuk, mivel 32 kB-os helyi adatmegosztást (Local Data Share) ír elő a szabvány. A megújult textúrázó csatornák egyenként 12 kB-os gyorsítótárat alkalmaznak. Komoly változás, hogy a másodlagos gyorsítótárat írhatják is a CUDA magok, azaz egymás számára közzétehető bármilyen adat. Fontos azonban megjegyezni, hogy a grafikus processzor rengeteg szálat vezérel, aminek hatására a rendszer csak a streaming multiprocesszorokon belül képes a koherenciát biztosítani, azaz felügyelni, hogy az egyes programszálak ne írjanak ugyanarra a címre. Az L2 tárban gyakorlatilag felmerül a félkoherencia problémája, így semmi sem garantálja, hogy az egyes címeket ne írja felül más-más mag egymás után. Erre a programozóknak kell majd ügyelniük, mivel a jelenségre nincs hatásos gyógyír. Az írható másodlagos gyorsítótár egyébként rendkívül előnyös a HPC piacon, sőt a chip ECC-támogatással is rendelkezik, ami ellenőrzi a memóriában és a lapka gyorsítótáraiban tárolt adatok hibátlanságát, ezzel fokozva a megbízhatóságot. A memóriahierarchia egyébként kifejezetten illik a ray-tracinghez. Utóbbi a korábban bemutatott OptiX motor szempontjából játszik főszerepet, mely a professzionális grafikai megjelenítést kívánó iparágakban lehet a vállalatok segítségére.

A lapka crossbar memóriavezérlője 384 bit szélességű, és 64 bites csatornákra van szétosztva. Egy-egy csatornához két ROP-blokk tartozik. Utóbbiból összesen 12 darab van, ami 48 blending és 384 Z mintavételező egységet eredményez. Látható, hogy az NVIDIA a GT200 lapka nyolcszoros élsimítás esetén fellépő sebességproblémáit a Z mintavételezők megduplázásával orvosolta, ám a blokkok hatékonysága sajnos nem javult, így várható, hogy a GF100 a felbontás növelésével veszti el az erejét. Ez kifejezetten káros egy felsőházba tervezett termék esetében, hiszen a Full HD vagy annál nagyobb felbontás egyre elterjedtebb.

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

Azóta történt

Előzmények

Hirdetés