Spekuláció a Radeon RX Vega teljesítményéről

írta: gbors, 7 éve

Ahogy 2015-ben a Fury X-et, az AMD 2017-es high-end videokártyáját is igencsak nagy várakozás előzi meg. A Radeon RX Vega névre keresztelt VGA számos vélt határidő elmulasztása után várhatóan 2017. július végén kerül bejelentésre, viszont a lényegét adó GPU már korábban bemutatkozott a Radeon Vega Frontier Edition-ben, ami az nVidia Titan sorozatához hasonlóan egyfajta félprofesszionális kártya. A Vega FE kapcsán már napvilágot láttak játékos tesztek, azonban ezek a gyártó állítása szerint nem reprezentatívak, mert a driveres támogatás az RX változat megjelenésére lesz megfelelően kiforrott. Mivel a Vega FE megjelenésével a GPU főbb műszaki tulajdonságai ismertté váltak, alkalom nyílik egy jó kis spekulációra az RX várható játékos teljesítményéről. A következőkben megvizsgálom, hogy mire számíthatunk az ismert műszaki paraméterek, valamint a bejelentett architektúrális / funkcionális újítások alapján.

Ami mérhető - nyers erő, Polaris vs Fiji

Kezdjük azokkal a tényezőkkel, amelyeknek a teljesítménybeli hatása ismert. Vicces módon funkcionális egységek tekintetében a Vega GPU szinte megegyezik a Fijivel: a központi ütemezőre 4 Shader Engine csatlakozik, amelyek darabja egy setup motort, tesszelátort és raszterizálót tartalmaz, valamint 16 Compute Unitot. Egy CU-ban 64 ALU és 4 textúrázó található, így a teljes chip 4 háromszöget dolgoz fel órajelciklusonként, 64 pixelt tud raszterizálni, és rendelkezik 4096 ALU-val, valamint 256 textúrázóval. A hátsó traktusokban 4 render backend kapott helyett, egyenként 16, azaz összesen 64 ROP-pal, viszont a memória-elrendezésben különbség van a Fijihez képest - a 4db 1024-bites HBM stack helyett a Vega-ban 2db 1024-bites HBM2 "kocka" található.

Core órajel terén jelentős az előrelépés: míg a Fury X 1050MHz-en ketyegett, a Vega maximális órajele 1600MHz, az AMD által megadott tipikus órajel pedig 1400MHz. Ez elég nagy különbség - a spekuláció céljaira a PC Perspective tesztjében látott 1440MHz-es átlagot fogom használni.
A memória órajele a HBM2 lényegesen jobb lehetőségeiből adódóan sokkal magasabb, mint a Fury X esetében - a modulok 945MHz-en ketyegnek, ezáltal csaknem kompenzálva a felezett busz-szélességet.

A magasabb core órajelekből és az azonos egységszámokból adódóan a Vega funkcionális átbocsátó-képessége 37%-kal magasabb, mint a Fury X-é, míg a memória-sávszélessége 6%-kal alacsonyabb. Miután a Fury X esetében a memória problémája elsősorban az alacsony órajel (-> magas késleltetés) volt, én arra tippelek, hogy a közel 500GB/sec memóriasávszélesség nem fogja jelentősen visszatartani a Vega chipet, így a sebessége jellemzően 30-35%-kal lehet gyorsabb az elődjénél, nem számolva az architektúrás különbségeket.

Az architektúra változásainak tekintetében két lépcsőnk van: az első a Fiji -> Polaris ugrás, a második pedig a Polaris -> Vega. Az elsőt ismerjük - a Computerbase.de tesztje szerint átlagosan 7%-ot hozott a Polaris a Tongához képest (ami a Fijivel megegyező GCN verzió). A második lépcsőt a következő szakaszban taglalom.

A mérhető faktorok vizsgálatával tehát arra jutottunk, hogy a Vega magasabb órajele a gyengébb memóriával kombinálva 30-35% előrelépést hozhat, az architektúra javulásának első fele pedig 7%-ot. Ez eddig összesen 40-42% előny a Fury X-hez képest, ami azért nagyon érdekes szám, mert szinte pontosan a GTX 1080 teljesítménye. Fogalmazhatunk úgy is, hogy ha a Vega a Polaris architektúrán érkezne, akkor a sebessége átlagosan megegyezne az 1080-éval. Más szemszögből nézve - az RX Vega annyival lesz gyorsabb a GTX 1080-nál, amennyi extra teljesítményt tudnak hozni az architektúrás újítások a Polarishoz képest.

A Vega sematikus képe - GPU + memóriák (forrás: Guru3D.com)

Ami becsülhető - a Vega újításai

Az elemzés második részében megvizsgálom a Vega legjelentősebb újításait a teljesség igénye nélkül, és megpróbálom megbecsülni, milyen hatással lesznek a játékos teljesítményre. Előrebocsátanám, hogy a grafikus teljesítmény folyamatos növekedéséért elsősorban a nyers erő a felelős, az elmúlt 10 évből nem tudnék olyan architektúra-váltást mondani, ahol azonos funkcionális kapacitások és azonos órajelek mellett 10%-nál komolyabb előrelépést hozott maga az architektúra (legalábbis induláskor). De hátha a Vega lesz az első :)

Packed math: a 32-bites ALU-k a Vega-ban képes lesznek egy órajel-ciklus alatt 2db 16-bites operandussal rendelkező műveletet végrehajtani, azaz 16-bites operandusok használata esetén a számítási teljesítmény duplázódik. A feature számos compute funkcióban kiváló, viszont grafikai célokra igen limitáltan használható - a számítási teljesítmény legnagyobb részét lefoglaló pixel shaderekben szinte használhatatlan, mert képminőségbeli romlást okoz. Egyéb shader-típusokban (elsősorban compute) mérlegelhető a használata, de óvatosan kell vele bánni - ha látható minőségromlással jár, akkor könnyen lesz belőle hátrány. Célzott programozást igényel, ezért jó darabig nem várható belőle számottevő előny, esetleg egy-két izolált esetben.

Variable width SIMD: a Vega két igazán izgalmas újítása közül az egyik - ráadásul tovább fokozza az izgalmakat, hogy nem találtam bizonyítékot arra, hogy a feature valóban aktív lesz-e a Vega-ban :) Tegyük fel, hogy igen.
Egy kicsit vissza a CU-khoz és az ALU-khoz: a CU 64 ALU-ja 4db SIMD tömbre van osztva, SIMD-enként 16 ALU-val. A 16 ALU ugyanazt a műveletet hajtja végre egy adatcsoporton - ez értelemszerűen akkor hatékony, ha sok adaton (pl. sok pixelen) kell ugyanazt a shadert futtatni, mert ilyenkor kevés a kihasználatlan ALU. Ha az adatcsomagok kicsik (jelentősen kisebbek 16-nál), akkor számos ALU üresben fog pörögni - az áramot eszi, de érdemi munkát nem végez. A változó szélességű SIMD tömb ezt a problémát orvosolja - a workloadhoz igazítja a SIMD tömbök méretét. Ha sok az "üres" ALU, akkor legjobb esetben azokat befogja más munkára, kevésbé jó esetben pedig inaktiválja, ezáltal azonos sebesség mellett javítva a fogyasztást.
Ezt a képességet már a Polarisban is vártam, és kitűnőnek tartom - azonban jelentős teljesítménybeli javulást mégsem várok tőle a Vega esetében. Ennek oka, hogy a Fijihez hasonlóan a Vega is erősen ALU-túlsúlyos, és elsősorban a gyengébb backend lesz a szűk keresztmetszet - ha az ALU-k kihasználtsága javul is, az a teljes teljesítményre jelentős hatással aligha lesz. A fogyasztást viszont komolyan javíthatja - ezt kíváncsian várom.

Draw stream binning rasterizer: az igen hangzatos nevű feature lényegét tekintve nem más, mint egy (két) lépésnyi elmozdulás a tile-based renderelés irányába. Parasztosan fogalmazva, a Vega megpróbálja a kép egy adott (nem túl nagy) szegmensére összeszedni az összes raszterizációs (majd utána pixel shading) feladatot, és ezeket együtt végrehajtani. Ez két helyen hoz megtakarítást:
- Takarásban lévő pixeleket könnyebb azonosítani, ezekre nem kell elvégezni a vonatkozó műveleteket
- A tile adatai jó eséllyel elférnek az L2 cache-ben, ezzel könnyítve a memóriabusz terheit

Elméleti síkon ez jelentős előrelépést hoz mind a raszteres teljesítményben, mind a fogyasztásban - a gyakorlat azonban nem feltétlen fogja ugyanezt mutatni. Az nVidia igen hasonló dolgot csinál a Maxwellben, és bár az lehet, hogy az architektúra kitűnő fogyasztása sokban ennek köszönhető, a raszteres teljesítmény komoly növekedésében nem hiszek - ha ez így lenne, akkor nyilván nem akkor döntött volna az nVidia a ROP-ok és a raszterizáló-kapacitás megduplázása mellett. Ellenben az megintcsak könnyen lehet, hogy a sávszélesség relatív fogyásának a kompenzációját ez a feature nagyban elősegíti.
Mit jelent mindez a Vega esetében? A fogyasztás csökkenését itt is minden bizonnyal lehet realizálni, viszont miután a Vega ROP : memória aránya pont az ellenkező véglet, mint a Maxwell és a Pascal, azt nehezen tudom elképzelni, hogy drámaian megdobná a sebességet - hiszen a Maxwellnél sem tette.

High bandwidth cache: ezt intézzük el gyorsan, mert a HBC játékos szempontból csak egy marketing buzzword. Az AMD mostantól a VRAM-ot egyfajta cache-ként tekinti, amibe tetszőleges forrásból töltögetheti a rettentő mennyiségű adatot, és a szoftver fejlesztőjének (elvileg) nem kell foglalkoznia azzal, hogy mekkora a fizikai VRAM. A koncepció jó és előremutató, de a játékok terén a kvázi-realtime igények nagyon nehéz jól implementálni, és teljesítményelőnyt csak akkor hoz, ha a játékok sokkal több adattal akarnak bűvészkedni, mint a fizikai VRAM. Itt még a 8GB-os kártyákkal nem tartunk, szóval a HBC hozama pont 0% lesz az RX indulásakor.

Primitve shader: utolsónak hagytam a legizgalmasabbat, aminek akár forradalmi hatása is lehet - ha, amennyiben, feltéve hogy :) Egy modern játékmotor tipikus jelenete több tízmillió háromszöget tartalmaz, és ez a rettenet mennyiségű geometria még egy 4K-s kép esetén is csak 8 millió pixelre fordul le. Nyilvánvaló már csak statisztikai alapon is, hogy nagy mennyiségű olyan háromszög van minden egyes képkockában, amelyeknek nulla (nem kevés, hanem pontosan nulla) hatása van a végső képre. Ha ezeket a háromszögeket mind ki lehetne szűrni, akkor minden bizonnyal a kutya sem venné a high-end VGA-kat sokkal jobb FPS-értékeket lehetne elérni minden hardveren. Nyilván ez a szűrés nem túl egyszerű (hiszen akkor már régóta működésben lenne), azonban úgy tűnik, a primitive shaderrel az AMD arra ad eszközt a fejlesztők kezébe, hogy relatíve egyszerűen megszabaduljanak a felesleges háromszögeknek legalább egy részétől.
Tekintettel arra, hogy a funkció direkt támogatást igényel, azonnali világmegváltást nem lehet várni tőle - azonban a driveren belül megoldható shader-csereberével az AMD is felturbózhat néhány címet. Mivel a primitive shader segítségével felesleges háromszögeket már a renderelési folyamat legelején ki lehet hajítani, a velük kapcsolatos összes további munka megtakarítható, azaz ha mondjuk 50M háromszögnek a felét kidobjuk, akkor a framerate közel duplájára nő (feltéve, hogy bírja a dispatch). Persze itt nagyon kell vigyázni - ha az algoritmus túl aggresszív, akkor olyan háromszögeket is kidob, amelyeknek van hatása a képre (és romlik a minőség), ha pedig túl szelíd, akkor nem fog kidobni szinte semmit. Ha én lennék az AMD, akkor 2-3 cím fejlesztőit jól megfizetném, hogy az RX Vega launch-ra szállítsanak egy patchet primitive shaderrel. Gyanítom, hogy pl. egy Deus Ex: MD-ben könnyedén lehet 30-40% FPS-t nyerni, ha pár okos ember ráfekszik egy hónap erejéig.
A primitive shadertől sem várom, hogy az indulás napján minden játékot forradalmasít, viszont lehetőséget ad arra, hogy néhány esetben igazán nagyot villantson a Vega. Roppant kíváncsian várom.

... és ha lassul? Eddig azt elemeztem, hogy milyen gyorsulási lehetőségek vannak a Vega-ban, de legyünk prudensek, és nézzük meg annak a lehetőségét, hogy a Vega mint architektúra nem gyorsul a Polarishoz képest, hanem lassul. Ez ugyan nem jellemző, de volt már rá példa - a Fermi generáció az nVidiánál azonos unitszám és azonos órajel mellett nem teljesített annyit, mint a megelőző Tesla. Abban az esetben volt egy jól körülhatárolható oka ennek - a 4 GPC kialakítása a korábbi, jelentősen monolitikusabb struktúra helyett. A Vega esetében ilyen tényezőt nem látok. Az órajel-potenciál növeléséhez ugyan van szükség komoly átalakításokra, azonban ezek nagyobb része a chip fizikai felépítésébe szól bele, ami pedig a logikai szerkezetet befolyásolja (pl. hosszabb pipeline-ok), azok egy ilyen erősen párhuzamos rendszer esetében aligha bírnak jelentős hatással. Szóval röviden: nem félek attól, hogy a Vega az architektúrája miatt veszít értékes %-okat a teljesítményéből.

Íme a Deus Ex: Mankind Divided egy jelenete háromszögekben - ki mennyit tud megszámolni?

Konklúzió - akkor mit is várhatunk a Vegától?

Sajátos módon a konklúzió is kétlépcsős lesz: először összegzem, hogy mit várhatunk az RX Vega kártyától primitive shader nélkül, majd ebbe a képbe kombinálom bele a meglehetősen bizonytalan kimenetelű wunderfeature-t.

Elnézve a PS-en kívüli újításokat, az AMD több olyan területen is hozott fejlesztéseket, amelyek a játékos teljesítményre jól látható hatással vannak. Ezek közül kettő, a DSBR és a variable width SIMD akkor tudna ütni, ha az ALU-kapacitás lenne a GPU szűk keresztmetszete - ezért azt saccolom, hogy az újítások megintcsak nem fognak forradalmat csinálni, és összességében a jelentősebb változásokkor megszokott 5-10%-os javulást hozzák a Polarishoz képest.
Összekombinálva a nyers erőt és a két ugrást (Fijihez -> Polaris -> Vega), a Fury X-hez képest 50-55%-os előrelépésre számítok, ami a GTX 1080-nál kb. 10%-kal jobb teljesítmény. Ez meglehetősen messze van az 1080Ti-től, és igencsak rosszul néz ki teljesítmény / fogyasztás téren is, különösen, ha belekalkuláljuk, hogy a HBM2-nek köszönhetően a memória jóval kevesebbet tesz hozzá a W-okhoz, mint az 1080 GDDR5X-e. A PCPernél látott fogyasztási adatokat és a GTX 1080 + 10% teljesítményt összevetve, a GPU teljesítmény / fogyasztása gyengébb a Polarisnál is - ha feltételezzük, hogy a DSBR és a VWS ebben komoly javulást hoz, akkor talán annyit tudunk mondani, hogy az olló nem nyílik tovább a konkurenciához képest. Ez semmiképpen nem jó hír, az AMD technológiai lemaradása továbbra is jelentős.

Mennyiben változtat ezen a képen a primitive shader? A technológiai lemaradás szempontjából semennyire, mert ebből a szempontból "csal" a Vega - nem ugyanazt a munkát végzi el hatékonyabban a chip, hanem ugyanazt az eredményt éri el kevesebb munkával. Ez természetesen felhasználói szempontból mindegy, de nem árt tisztában lenni vele.
Teljesítmény szempontjából sajnos nem lehet okosan jósolni. Az összes többi feature latolgatása korábbi tapasztalatokra, ökölszabályokra épül, viszont a primitive shader által nyújtott megtakarítási lehetőség teljesen új, és őszintén szólva fogalmam sincs, mekkora eredményt tud elérni az AMD driverből megoldott shader-cserékkel (és közben nem szúrják-e tökön magukat a nagy igyekezetben, ld. minőségromlás), és mennyit lesznek ebbe hajlandóak beletenni a fejlesztők. Ami biztos - indulásra nem lesz nagy tömegű játék primitive shaderekkel felszerelve, de én nagyon csalódott leszek, ha legalább 1-2 címben nem villantják meg a potenciált.

Összességében tehát egy GTX 1080 + 10%-os átlagsebességet várnék az RX Vega-tól, amit néhány ügyesen behozott primitive shaderes címmel felmehet átlagosan 15%-ra. Ez a tudás megfelelő árazással akár sikeres is lehet - különösen, ha a feature-ökkel kapcsolatos szép ígéretekre néhány ütős példa is születik, lehetőleg már a launch napján.

gbors