Arkitekturen Radeon DNA (RDNA)

Den arkitektoniska grundbulten i Radeon RX 5000-familjen är den nya arkitekturen Radeon DNA, förkortat RDNA. Att definiera RDNA är i skrivande stund inte helt självklart då första generationens RDNA-baserade produkter enligt våra uppgifter inte använder en komplett version av den nya arkitekturen.

David_Wang-Next_Horizon_Gaming-Radeon_Architecture_06092019-6.jpg
David_Wang-Next_Horizon_Gaming-Radeon_Architecture_06092019-4.jpg
Mike_Mantor-Next_Horizon_Gaming-Graphics_Architecture_06092019-3.jpg
Mike_Mantor-Next_Horizon_Gaming-Graphics_Architecture_06092019-4.jpg
Mike_Mantor-Next_Horizon_Gaming-Graphics_Architecture_06092019-5.jpg
Mike_Mantor-Next_Horizon_Gaming-Graphics_Architecture_06092019-6.jpg
Mike_Mantor-Next_Horizon_Gaming-Graphics_Architecture_06092019-7.jpg
Mike_Mantor-Next_Horizon_Gaming-Graphics_Architecture_06092019-8.jpg

Radeon RX 5000-serien använder en arkitektur som lånar in delar från RDNA och kombinerar detta med element från den tidigare arkitekturen Graphics Core Next (GCN). Detta till trots handlar det om en ny arkitektur där fokus ligger på att strömlinjeforma och skräddarsy komponenterna för en uppgift – effektiv prestanda för datorspelande.

Graphics Core Next byggdes för att kunna användas i ett flertal olika tillämpningar, i allt från datorspelande till generaliserade beräkningar. Denna bredd ledde till att arkitekturens kapacitet för just datorspelande hämmades av en icke-specialiserad. Även om Radeon RX 5000-serien behåller delar av GCN ska de spelfokuserade nyheterna i RDNA medföra signifikanta framsteg för just spelprestanda.

Arkitekturen i specifikationsform

Sett till uppsättningen komponenter består RDNA av 40 beräkningskluster (eng. Compute Units, CU). Dessa består i sin tur av 80 skalära processorenheter och 2 560 streamprocessorer. Beräkningsenheterna jobbar mot ett L2-cacheminne på 2 MB och ett L1-cache på 512 KB.

big_navi-stats.jpg
David_Wang-Next_Horizon_Gaming-Radeon_Architecture_06092019-7.jpg

Grafikprocessorn är vidare bestyckad med en geometrienhet (Geometry Engine) som kan ta emot 8 primitiva geometridata och skicka ut 4. Den är också bestyckad med 64 pixelberäkningsenheter och 4 asynkrona beräkningsenheter (ACE:s), vilket är samma antal som används i de GCN-baserade grafikarkitekturerna.

De olika klustren av komponenter på en RDNA-baserad grafikkrets vävs samman av kommunikationslagret Infinity Fabric. Denna kommunikationsväv används i allt från Ryzen- och Threadripper-processorer till fjolårets Vega-baserade grafikkort, och nu RDNA "Navi". Infinity Fabric ger AMD mer flexibilitet i hur olika komponenter kan kopplas samman i en krets, till skillnad från företagets tidigare mer monolitiska kretsbyggande.

Arkitekturen har utrustats med ett subsystem för GDDR6-minne, vilken ger högre bandbredd mellan grafikkretsen och grafikminnet jämfört med GDDR5. En större nyhet som inte kommer få någon omedelbar större påverkan på prestanda är RDNA-arkitekturens stöd för gränssnittet PCI Express 4.0. Detta ger grafikkorten bandbredd på 32 GB/s i kommunikation mot processorn, att jämföra med 16 GB/s hos PCI Express 3.0.

Den högre bandbredden kommer inledningsvis inte ge några markanta prestandamässiga fördelar för spelande, däremot kan det komma väl till pass för bandbreddskrävande tillämpningar som tung video- och bildredigering där grafikkortet används som accelerator.

De nya beräkningsklustren – dubbelt så kompetenta som GCN

En nyckelkomponent i att göra RDNA bättre lämpad för spelprestanda är de nya beräkningsklustren (eng. Compute Unit, CU). En av de stora nyheterna i CU-enheterna är att AMD har dubblerat antalet instruktioner som kan bearbetas per klockcykel. Detta har åstadkommits genom att antalet skalära beräkningsenheter och tillhörande skalära register dubblerats.

David_Wang-Next_Horizon_Gaming-Radeon_Architecture_06092019-10.jpg
David_Wang-Next_Horizon_Gaming-Radeon_Architecture_06092019-11.jpg
David_Wang-Next_Horizon_Gaming-Radeon_Architecture_06092019-12.jpg
Mike_Mantor-Next_Horizon_Gaming-Graphics_Architecture_06092019-10.jpg
Mike_Mantor-Next_Horizon_Gaming-Graphics_Architecture_06092019-11.jpg
Mike_Mantor-Next_Horizon_Gaming-Graphics_Architecture_06092019-12.jpg
Mike_Mantor-Next_Horizon_Gaming-Graphics_Architecture_06092019-13.jpg
Mike_Mantor-Next_Horizon_Gaming-Graphics_Architecture_06092019-14.jpg
Mike_Mantor-Next_Horizon_Gaming-Graphics_Architecture_06092019-15.jpg
Mike_Mantor-Next_Horizon_Gaming-Graphics_Architecture_06092019-16.jpg
Mike_Mantor-Next_Horizon_Gaming-Graphics_Architecture_06092019-17.jpg
Mike_Mantor-Next_Horizon_Gaming-Graphics_Architecture_06092019-18.jpg
Mike_Mantor-Next_Horizon_Gaming-Graphics_Architecture_06092019-19.jpg
Mike_Mantor-Next_Horizon_Gaming-Graphics_Architecture_06092019-20.jpg
Mike_Mantor-Next_Horizon_Gaming-Graphics_Architecture_06092019-21.jpg

En skalär beräkningsenhet är en enkel processortyp som hanterar enskilda enkla uppgifter åt gången. Detta kan exempelvis vara heltals- eller flyttalsberäkningar. Det tillhörande registret är ett litet men snabbt minne som de skalära beräkningsenheterna använder för att temporärt lagra informationen som bearbetas.

Ett område där det blir tydligt att RDNA är mer spelfokuserad är exekveringen av instruktioner per klockcykel. Beräkningsenheterna i AMD:s grafikkort är så kallade SIMD-enheter, kort för Single Instruktion Multiple Data. Dessa enheter kan utföra beräkningar i grupper av trådar, så kallade wavefronts.

Där GCN använder fyra skalära processorer av SIMD16-kapacitet använder RDNA istället två skalära processorer med SIMD32-kapacitet. När en grupp arbetsuppgifter om 64 trådar (Wave64) ska utföras på GCN-arkitekturens skalära processorer kan dessa endast utföras i grupper om 16 trådar (Wave16) per SIMD-enhet och klockcykel, vilket innebär att det krävs fyra klockcykler för att en hel Wave64-grupp ska kunna exekveras.

Med RDNA har AMD breddat de skalära SIMD-processorerna till 32 trådar, och då RDNA bestyckas med två sådana kan 64 trådar exekveras per klockcykel. Uppdelningen på fyra SIMD16-enheter i GCN lämpar sig väl för komplexa kedjor av beräkningar som används för generaliserade beräkningar i exempelvis arbetsstationer, men för datorspel blir exekveringen ineffektiv.

Vad detta betyder i praktiken är att en CU-enhet i RDNA åtminstone i teorin är dubbelt så kraftfull per klockcykel som motsvarigheten i GCN. Ett RDNA-baserat grafikkort med 40 CU-enheter ser på pappret ut att vara betydligt svagare än ett Vega 64 med just 64 CU-enheter, men tack vare de arkitektoniska nyheterna kan AMD här baka in betydligt mer beräkningskraft i färre beräkningskluster.

Cache på flera nivåer

Nästa större förändring som introduceras med RDNA är något som kallas Multi-Level Cache-hierarki. Denna förändring har inspirerats av syskonen i processorfamiljen Ryzen och introducerar ett dedikerat L1-cacheminne till alla aritmetiska enheter (ALU:s) samt att bandbredden mellan ALU-enheterna och deras egna L0-cacheminne har dubblerats. Enligt AMD ska detta ge 21 procent lägre latens för L0-cacheminne medan kommunikationen mellan L1 och L2-cache ska vara 24 procent lägre.

David_Wang-Next_Horizon_Gaming-Radeon_Architecture_06092019-14.jpg
David_Wang-Next_Horizon_Gaming-Radeon_Architecture_06092019-13.jpg
Mike_Mantor-Next_Horizon_Gaming-Graphics_Architecture_06092019-22.jpg
Mike_Mantor-Next_Horizon_Gaming-Graphics_Architecture_06092019-23.jpg
Mike_Mantor-Next_Horizon_Gaming-Graphics_Architecture_06092019-24.jpg

En annan optimering som kanske inte låter signifikant men som har stor effekt på spelprestanda är färgkomprimeringen, som ska vara mer effektiv i RDNA. Syftet med färgkomprimeringen är att spara in på bandbredd, något som behöver göras i flertalet steg i grafikkretsens beräkningsprocess (eng. pipeline). Shader-enheter kan nu läsa och skriva komprimerad färgdata direkt utan att packa upp informationen, och display-enheten kan också läsa komprimerad data direkt från grafikkretsens minne.

Utöver de prestandamässiga fördelarna med det förbättrade stödet för färgkomprimering medför det också lägre belastning på grafikkretsen då den inte behöver komprimera och avkomprimera data, vilket i sin tur leder till lägre energiförbrukning.

Strömlinjeformad beräkningsprocess

AMD har även reducerat mängder kretsar och transistorer som används för att implementera grafikkretsens olika funktioner, något som inneburit att grafikprocessorn kan köras i högre klockfrekvenser jämfört med GCN-generationerna. Enligt AMD:s uppskattningar ska detta tillsammans med den mer effektiva arkitekturen medföra en ökning på 50 procent i spelprestanda per watt jämfört med GCN.

Mike_Mantor-Next_Horizon_Gaming-Graphics_Architecture_06092019-26.jpg
David_Wang-Next_Horizon_Gaming-Radeon_Architecture_06092019-15.jpg
David_Wang-Next_Horizon_Gaming-Radeon_Architecture_06092019-16.jpg
David_Wang-Next_Horizon_Gaming-Radeon_Architecture_06092019-17.jpg
Mike_Mantor-Next_Horizon_Gaming-Graphics_Architecture_06092019-27.jpg

Av dessa 50 procent representerar förbättringarna i exekvering per klockcykel nästan 60 procent av framstegen. Användningen av den krympta tillverkningsprocessen på 7 nanometer står för cirka en fjärdedel av framstegen medan justeringarna av klockfrekvenser och generella optimeringar av energieffektivitet står för lite mer än 10 procent.

En av de stora nyheterna i GCN-arkitekturen, som avtäcktes först när åttonde generationens spelkonsoler lanserades, var stöd för asynkron exekvering via dedikerade hårdvarukomponenter. Dessa kallades Asynchronous Compute Engines (ACE:s), den som vill läsa mer om detta kan fördjupa sig i ämnet i SweClockers artikel på ämnet.

AMD har utökat ACE-enheternas förmåga att styra pågående uppgifter i beräkningsköerna i vad som kallas Asynchronous Compute Tunneling. Det mer finmaskiga precisionen i den asynkrona exekveringen ska leda till bättre utnyttjande av de hårdvaruresurser som finns i grafikkretsens beräkningsenheter.

Utöver generella prestandaförbättringar ska det även ge bättre flyt för virtuell verklighet (VR), ett område där effektiv hantering av asynkrona beräkningar blir extra viktigt. Effektiv minimering av latenser är kritiskt för VR-upplevelsen och mer finmaskig styrning av exekveringsköerna ska leda till färre bortslösade resurser, och därmed förbättrad responstid i renderingen.

Minimalt uppgraderad display-kontroller

På pappret har display-kontrollern uppdaterats till RDNA, men i praktiken finns här inte mycket nyheter att lyfta fram. Precis som föregångaren Vega stöds Displayport 1.4 och HDMI 2.0b. Stöd för HDMI 2.1 med variabel bilduppdatering (variable refresh rate) saknas. AMD:s egna Freesync över HDMI-teknik stöds förvisso, vilket ger inbyggt stöd för bildsynkronisering, men detta är alltså inte HDMI-standardens officiella implementation.

Mike_Mantor-Next_Horizon_Gaming-Graphics_Architecture_06092019-5.jpg

Den enda nämnvärda skillnaden mot tidigare implementationer sett till display-kontrollern är att tekniken Displayport 1.4 Display Stream Compression (DSC) stöds. Denna komprimerar bilden som skickas ut till bildskärmen för att spara in på bandbredden, vilket är ett viktigt tillägg för den som vill spela i 4K-upplösningar med bilduppdatering runt 144 Hz. Detta då Displayport 1.4 inte har tillräcklig bandbredd för denna upplösning och frekvens.

På pappret ger stödet för DSC alltså RDNA bättre kapacitet för 4K och 144 Hz bilduppdatering, men detta kräver stöd för DSC i bildskärmarna som ska användas och detta stöd är obefintligt i dagsläget. Det är osäkert om utbudet av skärmar med DSC-stöd hinner växa till sig innan nästa generations RDNA når marknaden med ett sannolikt moderniserat stöd för bildanslutningar.

Vidare detaljer om display-kontrollern anger ett stöd för HDR med 10-bitars färgbredd. Internt kan display-kontrollern också behandla 30 bitars färgdjup (30 bpp). AMD har även lagt till stöd för ett lågenergiläge för rendering av grafiklager ovanpå 3D-rendering, så kallad multi-plane overlay protocol (MPO). Detta ska i teorin reducera grafikkortets energikonsumtion vid låg belastning eller när video spelas upp.

AMD har även uppdaterat media-stödet i form av Radeon Media Engine. Denna har uppgraderats med bredare stöd för mediacodecs. Mediaenheten är kapabel att avkoda video i VP9-formatet med upp till 4K-upplösning vid 90 bilder per sekund. Vidare kan den avkoda 8K-upplösningar vid 24 bilder per sekund.

Utöver detta har även implementationen av H.265/HEVC-avkodning i hårdvaran förstärkt substantiellt. Med RDNA breddas HEVC/H.265-avkodningen till att spänna från 8K vid 24 FPS till 4K vid 90 FPS och 1080p vid 360 FPS. Även codec-formatet H.264 får en skjuts till 4K vid 150 FPS och 1080p vid 600 FPS. Videokodning utökas också till 4K vid 90 FPS och 1080p vid 150 FPS för H.264.

Kvasi-RDNA nu – hela RDNA nästa år

Den variant av RDNA som når marknaden i år är alltså ett första steg in i arkitekturen, medan den funktionskompletta versionen av arkitekturen kommer först nästa år. Exakt vad denna kommer tillföra som inte ingår i första vågen är inte känt i skrivande stund, men mycket tyder på att hårdvarubaserat stöd för ray tracing blir en av dessa nyheter.

David_Wang-Next_Horizon_Gaming-Radeon_Architecture_06092019-18.jpg
David_Wang-Next_Horizon_Gaming-Radeon_Architecture_06092019-19.jpg

Jämförelsevis saknar årets upplaga av RDNA hårdvarubaserat stöd för ray tracing, även om utvecklare kan välja att implementera detta i mjukvara. AMD har aviserat att hårdvarubaserat stöd för ray tracing ska tillkomma i nästa generations RDNA, vilket troligtvis handlar om RDNA 2 som ska tillverkas på TSMC:s andra generations 7 nanometer (7nm+).