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

írta: gbors, 9 éve

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.