AMD RX 5700 és 5700 XT: navigáció felfelé

Vajon mire elég az új architektúra és a korábban már bizonyított, 7 nm-es gyártástechnológia?

Itt az új architektúra

Az AMD legutoljára 2011-ben mutatott be igazán új grafikus architektúrát. Az akkor leleplezett GCN, vagyis Graphics Core Next persze számos komoly változáson átesett az elmúlt évek során, a Vega termékcsaládon belül például igen sok újítást kapott, de sok tekintetében az alapvető működés nem módosult. Bizonyos szempontból nem is feltétlenül szükséges teljesen új alapokról indulni, hiszen a nagyjából egy évtizede bemutatott utasításarchitektúrákat az AMD, illetve tulajdonképpen az NVIDIA is eléggé skálázhatóra tervezte, vagyis pusztán a szálkezelés, valamint a memóriamodell terén még bőven jó az, amit az első GCN, illetve az NVIDIA Fermi letett az asztalra. Ezeket csak módosítgatni kell, de nagyon komolyan egyikbe sem érdemes belenyúlni, amíg működnek.

A fentiek azonban nem jelentik azt, hogy a mai grafikus vezérlőkkel minden rendben van. Az nyilván nagyszerű, hogy régebben bevezetett utasításarchitektúrák hardveres szálkezelésével és memóriamodelljével még nincs semmi probléma, de ettől a hardvereken belül lehetnek más limitek, amelyeket érdemes kezelni. Ezért is történnek az AMD, illetve az NVIDIA oldalán bizonyos időközönként olyan változások, amelyektől ugyan az utasításarchitektúra működése nem igazán módosul, de magán a dizájnon optimalizálnak a tervezők. Utóbbi két tényezőt több dolog is okozhatja: egyrészt elképzelhető, hogy bizonyos konfigurációk tekintetében már nem skálázódik jól az eredeti kialakítás, másrészt az alkalmazások is fejlődnek, így más jellegű kódokra számítanak a gyártók. A legtöbb esetben mindkét opció szerepet játszik a módosításokban, és ugyan az utasításarchitektúrához az AMD és az NVIDIA régóta nem nyúlt hozzá igazán, a hardverek kialakítása kisebb-nagyobb lépcsőkben fejlődik.

Az AMD-nél leginkább a kisebb lépcsők voltak megfigyelhetőek, míg az NVIDIA lépett nagyobbakat is. Persze nehéz meghatározni, hogy egy dizájnnak mekkora mértékű ugrás kell, hiszen például a GCN már 2011-ben is memóriaalapú (szakmai kifejezéssel pure bindless) architektúra volt, míg az NVIDIA hasonlót a Turinggal vezetett be (addig slot-alapú, bindless dizájnnal dolgoztak), de ahogy változik az API, illetve változnak a programok, úgy változtatni kell a hardver szintjén is, és ez régóta így van.

A GCN-t leváltó RDNA (Radeon DNS) architektúra egy nagyobb váltásnak tekinthető az AMD portáján belül, mondhatni gigantikusnak ahhoz képest, amit a korábbi években változtattak. A vállalat mérlegelhette a szokásos szempontokat, és kialakítottak egy új generációs dizájnt, ami reményeik szerint megfelel majd az új generációs alkalmazásoknak is.


[+]

Az RDNA az utasításarchitektúra szintjén a jól bevált alapokat használja, persze némileg módosítva. Ahogy fentebb említettük a hardveres szálkezelés, valamint a memóriamodell tekintetében nagyon előredolgoztak a cégek, így továbbra is messze vannak azoktól a határoktól, amelyeket nagyjából egy évtizeddel ezelőtt leraktak. A programok működése viszont megváltozott, illetve a jelenlegi előrejelzések szerint változni fog, amihez a feldolgozási modellel érdemes lehet igazodni.

Ha a GPU-kat általánosan értelmezzük, akkor tulajdonképpen olyan heterogén, több feldolgozót rejtő lapkákról van szó, amelyek az egyes fixfunkciós egységeket kifejezetten adatpárhuzamos végrehajtásra kialakított, úgynevezett multiprocesszorokkal egészítik ki. De már alapvetően a multiprocesszorok szintjén is úgy vannak tervezve a dizájnok, hogy a feldolgozás abszolút tolerálja a memóriaelérésből eredő, tipikusan magas késleltetést. Messze ez a GPU-k legnagyobb előnye, hiszen így kellően jól párhuzamosítható feladatokban, megfelelő adatmennyiség megléte esetén rendkívül gyorsak tudnak lenni. Ironikus módon viszont ez a legnagyobb hátrányuk is, ugyanis az aktuális dizájnok annyira az adatpárhuzamos végrehajtásra vannak kigyúrva, hogy vannak olyan helyzetek, amelyekben viszont egészen lassúak. Ilyenek például a divergens kódok, amelyeket ugyan lefuttatnak, csak nem lesz hatékony az eredmény, gyakorlatilag minimum a teljesítmény felezésével kell számolni.

Bár a magasabb szintű shader nyelvek az elágazásokat nem tiltják, de ezek a gépi kódban már nincsenek jelen. A GPU-k eleve nem rendelkeznek elágazásbecslővel, aminek a speciális feldolgozási forma miatt igazából haszna se lenne. A hardver tehát már előre meghatározott utasításokat kap, amelynél a feldolgozók fele a kód "if" feltételét hajtja végre, míg a másik fele gyakorlatilag addig nem dolgozik, amíg meg nem kapják a kód "else" feltételét, de ekkor meg a korábban aktívan munkálkodó részegységek fognak pihenni. Végül persze kiderül, hogy melyik elágazás volt a jó, csak elég nagy ennek az ára a tempót tekintve. Ezért van az, hogy a gyártók a divergens kódok kerülésére buzdítják a programozókat, mert ez hardveres szinten nem kezelhető komolyabb teljesítményvesztés nélkül. Igen ám, de ezt könnyebb mondani, mint betartani, vagyis végeredményben egy olyan hardveres megoldás kellene, ami magát a problémát próbálja, ha nem is megoldani, de minimum kezelni.

Az AMD szerint a processzornál használatos elgondolásoknak a GPU-knál nincs sok értelme, túlságosan különbözik a feldolgozási mód, hogy a spekulatív végrehajtás realitás legyen. Az egyetlen lehetőség az egyes csoportokban futó szálak végrehajtási késleltetését minimalizálni, ami szintén nem túl nagy erőssége a mai grafikus vezérlőknek, de legalább egy megoldható probléma.

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

  • Kapcsolódó cégek:
  • AMD

Azóta történt

Előzmények

Hirdetés