2024. április 25., csütörtök

Gyorskeresés

AMD vs nVidia - mit várhatunk a DX12-től?

Írta: | Kulcsszavak: AMD . nVidia . DX12 . Mantle . GTX980 . R9-290X

[ ÚJ BEJEGYZÉS ]

Mint az új megoldások hajnalán mindig, a DX12 kapcsán is izzanak a jósgömbök, és mindenkinek van véleménye arról, mi fog történni. Megpróbáltam higgadtan végigelemezni, hogy a rózsaszínű álmoktól és az élénkpiros flame-ektől elvonatkoztatva ténylegesen mire lehet számítani a DX12-ben a két gyártótól.

Az egyszerűség kedvéért a GTX980 vs R9-290X viszonylatot néztem, és abból indultam ki, hogy a jelenlegi erőegyensúly esetleges változása milyen forrásokból táplálkozhat. 4 jelentősebb területet látok:

1. Fizikai erőforrások
Végigsétálva a chip egészén, az látható, hogy a 290X lényegesen komolyabb erőforrások felett rendelkezik. Az egyetlen igazán kérdőjeles terület a frontend, mert egyfelől a 980 háromszögekkel kapcsolatos képességei (setup, kihajítás, tesszeláció) lényegesen jobbak, másrészt a 290X 8 ACE-je dispatch terén erősebbnek tűnik, mint a 980 4 GPC-je. Erre még visszatérek a #3-es szakszban.
ALU egységekben 37.5%-kal erősebb a 290X. Textúrázóból is 37.5%-kal több van benne, de ez csalós, mert FP16-os színformátum esetén a Maxwell chip teljes sebességű, míg a Hawaii csak fél, tehát itt az nVidia közel 50% előnyben van. Ennek valószínűleg jelentős hatása jelenleg nincs - de később lehet, ld. #3-es téma.
A ROP-oknál fordított a helyzet - egyforma a számuk, és a sima pixel / z teljesítmény is egyforma, viszont blending mellett a 980 csak fele sebességű, míg a 290X teljes. Miután a műveletek mixe játékról játékra más, ennek a pontos hatását nehéz megmondani, de az jól látható, hogy nem elhanyagolható - leginkább emiatt van, hogy a felbontás növelésével csökken a 980 előnye.
Memória-sávszélességben 50%-kal erősebb a 290X.

Mi jön ki a fentiekből? Ideális optimalizáció mellett az ALU teljesítmény lehet a domináns faktor, erre ráerősíthet a blending teljesítmény és a sávszélesség, kis mértékben pedig tompíthatja a háromszögek kezelése és a textúrázás. Az egész katyvaszból az jön ki, hogy azonos órajelek mellett 35-40%-kal több a lóerő a 290X-ben. A 980 21%-kal magasabb core órajelét figyelembe véve, a real-world teljesítményben a 290X-nek 10-15%-kal előrébb kellene lennie. Mivel kb. ennyivel van hátrébb, minden bizonnyal az utilizáció a 980-nál ennyivel jobb. A 290X szemszögéből nézve, ezen 20-30% potenciál egy részét már egy olyan alacsony szintű megközelítéssel is meg lehet nyerni, ami nem igazán optimalizált egyik architektúrára sem.

2. Teljesítmény / fogyasztás
Az előző pontban látottak alapján érdekes, hogy a 980 magasabb kihasználtság mellett is jóval kevesebbet fogyaszt. Ennek két oka lehet:
- Tényleg ennyivel kevesebbet eszik az architektúra (azaz maximális kihasználtság mellett a fogyasztás-különbség növekedni fog)
- A Hawaii GPU fogyasztása a kihasználtság esésével sokkal kisebb mértékben csökken (azaz maximális kihasználtság mellett a fogyasztás-különbség csökkenni fog)

Az igazság minden bizonnyal a kettő között van valahol, szerintem jelenleg nemigen lehet megjósolni, hogy maximum közeli kihasználtság esetén melyik chip mennyit eszik. Ez a kérdés mindkét gyártónak kockázat, és érzésem szerint lesznek is még kellemetlen meglepetések ebből - ugyanis a kártyák nem egyszerűen többet fognak fogyasztani, hanem a saját power targetjük elérésekor elkezdik csökkenteni a feszültséget és az órajelet, azaz csökkenni fog a sebesség.

3. Hangsúlyváltozások a DX12-ben (scene-szerkezet)
A Mantle és a DX12 kapcsán a csapból is az 5-10x nagyobb draw call throughput folyik. Az ezzel kapcsolatos mérések arra utalnak, hogy nyersen ezen a területen az AMD valamekkora előnyben van - azonban a potenciálisan 5-10x mennyiségű poligon lényeges változást kell hozzon a motorokban, hacsak nem azt akarják a fejlesztők, hogy DX12-ben 4 VGA legyen a standard. Itt képbe fog jönni a 290X erősebb dispatch tudása, de előfordulhat, hogy a 980 jobb textúrázási képességeinek is szerepe lesz, hiszen a textúrázásnál nem lehet megúszni az összes poligon figyelembevételét, míg a többi művelet jellemzően tud csoportokkal dolgozni.
Fontos még megemlíteni az aszinkron compute által hozott változást - ez egyrészt az #1-es pontban emlegetett hatékonysági különbség eltüntetésében segít, másrészt a #4-es szakaszban leírtak lehetnek rá kritikusak.

4. Programozhatóság
A 290X legnagyobb reménysége, egyszersmind a legnehezebben megfogható különbség a két chip között a programozhatósági fókusz. Tudott dolog, hogy a GCN-t az AMD igyekezett direkt programozhatóságra minél jobban felkészíteni, míg az nVidia ebben a kérdésben mélyen hallgat. Azt gondolom, hogy az olyan adatok, mint az előszeretettel emlegetett UAV-ok száma, csak a jéghegy csúcsát jelentik. A jobb direkt programozhatóság egyrészt jelenthet jobb utilizációt (az aszinkron compute esetében pl. ez szinte biztosan így lesz) - de ez egy viszonylag jól mérhető dolog (ld. #1-es pont), az egyedüli veszélyforrás az, ha a pipeline valamelyik szakasza bedugul. Ezt nagyrészben lehet majd kezelni specifikus optimalizációkkal - a szívás csak az, hogy eddig ez a driverben megoldható volt, és a gyártó saját hatáskörben megcsinálta, míg most minden egyes motorban külön le kell programozni.
Nekem a nagyobb kérdés a programozhatóság terén az, hogy vannak-e olyan feature-ök a GCN-ben, amik az adott eredmény eléréséhez szükséges műveletszámot csökkentik (jellemzően ALU-műveletekre gondolok). Igazán nagyot nyerni ezekkel lehet(ne).

Összegzés
Az első DX12-re designolt motoroktól várok 10-20% eltolódást a 290X javára (#1-es pont). A scene szerkezet megváltozása (#3-as pont) igazából jelentős elmozdulást nem fog hozni, de itt van arra lehetőség, hogy valaki nVidia-irányba hajló scene-eket gyártson (pl. földalatti óceán, ezúttal textúrázott hullámokkal ;] ) - ez azonban veszélyes játék, mert a másik oldal a generálisabb, kevesebb szűk keresztmetszetet tartalmazó architektúra miatt nagyon könnyen vissza tud csapni. Ha az idióta politizálást kivesszük a képből, akkor a #4-es szakasz kapcsán az az architektúra fog többet profitálni, aki arányosan több QA-mérnököt ültet a fejlesztők mellé - várhatóan azonos eredmény elérése az nVidia oldaláról komolyabb erőforrást fog igényelni, és nem is feltétlen fog mindig sikerülni.
Ha a GCN jobb programozhatósága műveletszám-csökkentésre is használható, az rendesen megkavarhatja a dolgokat - ez azonban bizonytalan, és erősen architektúrára optimalizált kódot feltételez. Ilyesmikre a DX12 életének korai szakaszában én nem építenék.

Végül kakukktojásként ott van a teljesítmény/fogyasztás kérdés (#2) - itt nagyon jó volna mielőbb méréseket látni, hogy melyik architektúra fogyasztása mennyit ugrik felfelé maximum-közeli kihasználtság esetén - ill. melyik veszít több tempót a TDP-limit elérése miatt. A számok pillanatnyilag az nVidia előnyét mutatják, és azt gondolom, ez a 980 és a 290X viszonylatában nem is fog változni - érdekes lehet viszont, hogy a 390X-szel Fury-val az AMD rágyúr az extrém fogyasztás kezelésére is.

Hozzászólások

(#1) tailor74


tailor74
őstag

Végre valaki számomra is érthetően ( :B ), logikusan levezette ezt a sok x,y változós témát...
Köszönöm szépen az írást... :)

Az én következtetésem ezek alapján az, hogy optimális esetben a 290X utólérheti a 980-at, rossz esetben meg semmi változás...
Ugyanakkor, ha a 380X egy órajeleiben megspékelt 290X lesz, ráadásul fejlettebb GCN-el, és fennáll az optimális eset, akkor az akár rá is verhet kicsit a 980-ra... Így akár az is jó választás lehet a piros oldalról, főleg emberi áron...
Tudom, sok a ha... :) , na meg aztán jövőre jön a Pascal is...

Még egyszer köszi, érdekes volt..

Aminek kerekei, vagy mellei vannak, azzal előbb-utóbb gond lesz.

(#2) proci985


proci985
MODERÁTOR
LOGOUT blog (1)

egy apro megjegyzes: a Maxwell tartja a power targetjet, tehat a Hawaii 300+Wos fogyasztasat nem fogja elerni. vissza fog venni az orajelebol (a "ref" 970 biztosan declockol mar most is a 145Wos hatar miatt), kerdes mennyit, de a 290x uber modjaban / gyari OC kartyaival megfigyelt 300+W max OC kartyakkal fog bekovetkezni.

pl a 970 G1 alapbol 200W korul eszik (meg 20%al boostol a default boost fole jatek alatt), 250 a power targetje szoval amig meg van hutve addig eljuthat a 290 kornyekere. leghutok kozul is nagyon keves birja el a 300Wot a 84fokos declock hatar alatt.

plusz meg egy aprosag: ha 16:9re / 1080pre optimizalnak, akkor surround/eyefinity // 4Kban lehetnek meg vicces dolgok.

[ Szerkesztve ]

Don't dream it, be it. // Lagom amount.

(#3) Laja333


Laja333
őstag

Star Swarm DX12 mérésnél mérték a 980-at. Elég látványosan megnőtt az étvágya, mondhatni beérte a 290x-et.

(#4) gbors válasza proci985 (#2) üzenetére


gbors
nagyúr

Igen, ez jogos, ezt egy kicsit jobban kifejtettem :R

(#3) Laja333: nem nőtt meg az étvágya, sőt, kevesebbet fogyasztott a gép, mint a Crysis 3-mal. A 290X étvágya csökkent le - ami nem meglepő annak tükrében, hogy a 980 50%-kal gyorsabb volt.

Pedro... amigo mio... ma is konzervvért iszunk! Kár lenne ezért a tehetséges gyerekért...

(#5) Loha


Loha
veterán

Remek írás! :R

Eddig ez a driverben megoldható volt, és a gyártó saját hatáskörben megcsinálta, míg most minden egyes motorban külön le kell programozni.

Azt honnan tudjuk, hogy a drivernek kisebb szerepe lesz DX12-ben, mint amilyen jelenleg DX11-ben van?

Mert számomra csak annyi látszik, hogy az eddigi Kernel és User Mode Driver helyett, csak User Mode -ban fog futni a VGA driver, viszont egy szál helyett több szálon, tehát akár több CPU erőforrás is rendelkezésére állhat. Azt kizártnak tartom, hogy a jövőben majd a játékfejlesztők fogják azokat GPU specifikus optimalizációkat elvégezni, amiket most a VGA driver végez.

(#6) gbors válasza Loha (#5) üzenetére


gbors
nagyúr

Köszi :)

Azért gondolom, hogy kevesebb szerepe lesz a drivernek (sokkal), mert:
Az összes korábbi DX fekete dobozként működött. Fejlesztőként beledobáltad a mesh-t, a textúrákat, a shadereket, meg még nemtommit, és a végén kijött egy képkocka. Minimális ráhatásod volt (van), hogy hogyan történik az egyes feladatok ütemezése, az adatátadás, stb. Driveres ráhatással egy adott programnál jelentősen át lehetett variálni, hogy mi történik, anélkül, hogy a programod tudott volna róla.
Ha jól értem, akkor az új API-k ennek a kontrollnak a nagy részét átadják a programnak. Lesznek standard adatstruktúrák, talán valami vázlatos pipeline is (bár jobb lenne, ha ez minél vékonyabb maradna), ill. shader-fordítás - és akár ki is fújt. Itt a driver a shader-fordításba valóban bele tud szólni (tehát a shader-cserebere továbbra is opció lehet), de az egész műsor levezénylése a program feladata.

(#1) tailor74: Örülök, ha érdekes volt :)

Pedro... amigo mio... ma is konzervvért iszunk! Kár lenne ezért a tehetséges gyerekért...

(#7) letepem


letepem
aktív tag

Nekem szimplán az lenne a kérdésem, hogy az AMD miért nem ír olyan utilizációt (vagy nem tud?) mint az nV? Hisz hardverben erősebb vagy csak kevésbé programozható (ellentmondás)? Miért nem ír olyan agresszív szálkezelést az AMD, mint a vidia, ha látja hogy eredményekben az kifizetődő?

Grat a cikkhez, korrekt, összeszedett! :C

[ Szerkesztve ]

látok, hallok, érzek és gondolkodom.

(#8) gbors válasza letepem (#7) üzenetére


gbors
nagyúr

Köszi :)

Igen, a nagy kérdés, hogy miért ennyivel gyengébb a GCN utilizációja DX11 alatt. A kutya valahol az ALU-blokkok felépítésében lehet elásva, de pontosabbat nem tudok (és a neten sem sikerült erről semmit találnom).

Pedro... amigo mio... ma is konzervvért iszunk! Kár lenne ezért a tehetséges gyerekért...

(#9) Loha válasza gbors (#6) üzenetére


Loha
veterán

Igen, a fejlesztőknek sokkal nagyobb kontrollja lesz a saját programjuk felett, de ugyan akkor a driveres optimalizációs lehetőségek sem csökkennek, tehát amit esetleg a fejlesztők elmulasztanak, azt a driver még bepótolhatja.

[ Szerkesztve ]

(#10) gbors válasza Loha (#9) üzenetére


gbors
nagyúr

A drivernek csak pár belépési pontja lesz a javításhoz (konkrétan kettőt látok, a draw callok elkapása és a shaderek cseréje), ez szerintem messze van attól, amire a DX11-ben lehetőség volt.

Pedro... amigo mio... ma is konzervvért iszunk! Kár lenne ezért a tehetséges gyerekért...

További hozzászólások megtekintése...
Copyright © 2000-2024 PROHARDVER Informatikai Kft.