En närmare titt på arkitekturen RDNA 2

Med RDNA 2 har AMD enligt egen utsago fokuserat på tre huvudsakliga framsteg. Ökad prestanda, avsevärt förbättrad energieffektivitet och stöd för de moderna funktioner som ingår i DirectX 12 Ultimate. Storslagna löften som dubblerad prestanda mot fjolårets prestandakort Radeon RX 5700 XT och upp till 54 procent bättre prestanda per watt jämfört med RDNA antyder onekligen att AMD känner sig självsäkra med framstegen i RDNA 2.

Arkitektur med fokus på hastighet

I sin yttersta form utgörs RDNA 2 av 26,8 miljarder transistorer som tar plats på en kretsyta om 519,8 mm². Detta kan jämföras med Radeon RX 5700 XT och RDNA som huserar 10,3 miljarder transistorer på en yta om 251 mm². Dubblering mot Radeon RX 5000-serien återspeglas även i arkitekturens specifikationer, då RX 6000-serien erbjuder upp till 80 beräkningsenheter (Compute Unit, CU) ställt mot föregångarens 40.

RDNA2_trepelare.jpg
RDNA2_prestandadesign2.jpg
RDNA2_specslista.jpg
RDNA2_specslista2.jpg
RDNA2_prestandadesign.jpg
RDNA2_perfperwatt.jpg

Det medför maximalt antal streamprocessorer om 5 120 stycken, vilket sällskapas av 320 texturenheter (TU). Detta kan jämföras med RX 5000-serien som stannade vid 40 CU eller 2 560 streamprocessorer och 160 texturenheter. Helt nytt för RDNA 2 är som tidigare nämnt stödet för ray tracing, vilket sker i form av dedikerade hårdvaruenheter vid namn Ray Accelerator (RA). Dessa är 80 till antalet vilket beror på att en sådan enhet tar plats i vardera CU-enhet. Kapaciteten för ray tracing dikteras därmed av antalet CU.

Uppsättningen CU-enheter delas upp i kluster om maximalt fyra shader engines vilka bestyckas med egen kapacitet för att generera renderade bilder (rasterizer) och fyra RB+-enheter som gör grovarbetet med denna rastrering. Sett till cacheminne bestyckas RDNA 2 med 4 MB på L2-nivå och distribuerat L1-cache om 1 MB, vilket är tillgängligt för alla CU-enheter. En del som inte dubbleras ställt mot RDNA eller GCN är antalet exekveringsenheter för asynkrona beräkningar (ACE), vilka fortsatt är fyra till antalet.

Sett till anslutning utåt till resten av systemet kommunicerar grafikkretsen över PCI Express 4.0 med 16 banor (x16). Minnesgränssnittet in på 256 bitar och arbetar mot GDDR6-minne i hastigheten 16 000 MHz. Bildenheten stöder tekniker som ingår i HDMI 2.1 samt Displayport DSC och variabel bilduppdatering med Freesync. Mediaenheten stöder avkodning (decode) med moderna videocodecs som AV1 i upp till 8K-upplösning och även accelerering av HEVC-kodning (encode).

Ny struktur för beräkningsenheter

För att kunna uppnå målet med att göra RDNA 2 snabbare och samtidigt mer energieffektiva har dess CU-enheter strömlinjeformats och justerats på flertalet håll. Enligt AMD:s uppgifter kan en CU i RDNA 2 utföra 30 procent fler beräkningar per klockcykel (IPC) ställt mot RDNA vid samma energiförbrukning.

RDNA2_nyCU.jpg
RDNA2_nyCUspecs.jpg

En del i förbättringarna är att en CU besitter förmågan att utföra en bred repertoar av heltal och flyttal, med blandningar av olika precisionsgrader hos dessa. De kan exempelvis utföra paketerade flyttal med halvprecision (FP16) som tar 256 beräkningscykler att utföra, och dels blandad precision där FP16 kombineras med flyttal av full precision (FP32). Heltal (integer, INT) kan också blandas med flyttal av varierande precision.

Kapaciteten för blandad precision utgör RDNA 2-arkitekturens förmåga att hantera tensor-uppgifter, vilket används för beräkningar relaterade till maskininlärning (ML) och artificiell intelligens (AI). AMD sköter således tensor-kapaciteten genom beräkningsenheterna, medan Nvidia bestyckar såväl Turing (RTX 2000) som Ampere (RTX 3000) med dedikerade tensor-kärnor.

Beräkningsenheternas utökade kapacitet för ML/AI ska också användas till hårdvaruaccelererad uppskalning av upplösning, likt vad Nvidia tillhandahåller med DLSS i Geforce RTX-familjen. AMD kallar den egna lösningen Super Resolution, men till skillnad från Nvidia används alltså inte dedikerade tensor-kärnor för uppgiften. Precis som i situationen med ray tracing bygger AMD:s stöd på enklare avlastning i befintliga enheter i arkitekturen.

DXII ULT.png

AI-uppskalningen blir troligtvis enklare än den i DLSS som förlitar sig på förhållandevis avancerade tensor-kärnor som upptar en stor del av grafikkretsens totala transistorbudget. Super Resolution ska publiceras som en öppen standard fri att implementera av andra företag, men lösningen är inte redo för skarp drift när Radeon RX 6000-serien lanseras utan tillkommer som del av en mjukvaruppdatering i efterhand.

Minneshantering – den hemliga såsen

De största nyheterna i RDNA 2 stavas inte ray tracing eller ökat antal hårdvarukomponenter. Revolutionen har istället skett i minneshantering, där allt från cache till kommunikation med grafikminne ingår. På den djupaste nivån består detta bland annat i att lokalt L0-cache kan lyftas in i det globala L1-cacheminnet, vilket förbättrar återanvändning av data i cache och minskar därmed kostsamma förflyttning av data. Det ger i sin tur sänkta latenser och minskad energiförbrukning.

RDNA2_Cachehierarki.jpg
RDNA2_cachenivåer.jpg
RDNA2_InfinityCache.jpg
RDNA2_Epyc_bandbreddL3.jpg
RDNA2_InfinityCache_fördelar.jpg
RDNA2_InfinityCache_fördelar3.jpg
RDNA2_InfinityFabric_BW.jpg

Den arkitektoniskt största nyheten är dock Infinity Cache, vilket är ett 128 MB stort cacheminne på grafikkretsen. Här lånar AMD in en lösning från företagets serverprocessorer i Epyc-familjen, där 32 MB L3-cache paketeras in med hög densitet. Genom att använda samma högdensitetscache lyckas AMD bädda in 128 MB som ett enormt stort L3-cacheminne, med fyra gånger högre transistordensitet ställt mot L2-cache i RDNA.

Med globalt L1-cache som har direkt åtkomst till L2 och ett stort Infinity Cache kan RDNA 2-kretsar behålla och bearbeta stora mängder data utan att flytta ut denna till primärminnet, eller slösa tid på kostsamma kontroller av om data finns någon annanstans i cache-hierarkin. Grafikkretsen kommunicerar med Infinity Cache-utrymmet genom Infinity Fabric, AMD:s kommunikationsväv som även används för att låta företagets Ryzen-processorer kommunicera med primärminnet. Då mindre data behöver skyfflas ut medför detta även lägre strömförbrukning.

Med Infinity Fabric kan grafikkretsen kommunicera med Infinity Cache via 16 minneskanaler om 64 byte storlek i hastigheter upp till 1,94 GHz. Detta är av särskild vikt då RDNA 2 använder en förhållandevis smal minnesbuss om 256 bitar. Med Infinity Fabric når grafikkretsen fyra gånger högre minnesbandbredd mot GDDR6-minne än vad ett 256-bitars minnesgränssnitt ger i dess standardutförande.

AMD anger att kombinationen Infinity Cache och GDDR6 ger 2,4 gånger högre bandbredd per watt ställt mot när GDDR6-minne används med en 256-bitars minnebuss. Företaget jämför också förhållandet mot när bredare minnesbussar används, där högre bandbredd med 384 och 512 bitar också följs med högre strömförbrukning. Med Infinity Cache anger företaget att RDNA 2 når högre bandbredd över 256 bitar med halverad strömförbrukning jämfört mot en 384 bitar bred minnesbuss.

Sett till rå minnesbandbredd kan grafikkorten anpassa bandbredd och strömförbrukning efter kraven som spel ställer just för stunden. AMD anger här att GDDR6 med standardbandbredd ger 500 GB/s i rå minnesbandbredd. Med Infinity Cache stiger detta till 1 500 GB/s (Base F), vilket tillfälligt kan ökas med ytterligare 2 050 GB/s när spelet kräver det (Boost F).

Förmågan att snabbt gå från basnivå till boost som ändå ligger tre gånger högre än standardnivå för GDDR6 ger tillsammans med Infinity Cache förklaringen till hur AMD väntar sig kunna konkurrera med Nvidias Ampere-grafikkort, trots smalare minnesbuss och lägre teoretisk bandbredd.

Smart Access Memory och löften om framtiden

En annan del av smartare minnesanvändning kommer i form av Smart Access Memory (SAM), en teknik där processorns anrop ges tillgång till större delar av grafikkortets minne. Tekniken bygger på en del i specifikationen PCI Expressvid vid namn Resizable BAR, som definierar gränsen för de minnesblock som görs åtkomliga över PCI Express-anslutningar. Tidigare har dessa block begränsats till storlekar om 256 MB, en begränsning som ursprungligen härrör från kompatibilitet med 32-bitars operativsystem.

RDNA2_SAMlegacy.jpg
RDNA2_SAM.jpg
RDNA2_SAMperf.jpg
RDNA2_Directstorage.jpg

Enligt AMD:s ska den utökade minnesåtkomst ge RDNA 2-grafikkort en genomsnittligt förbättrad prestanda om 6 procent när den aktiverats, ställt mot samma grafikkort med den inaktiv. Trots att funktionen i sig ingår i PCI Express-specifikationen har AMD valt att begränsa kompatibilitet till processorer i Ryzen 5000-serien och grafikkort i Radeon RX 6000-serien. I samtal med SweClockers bekräftar AMD att det i dagsläget inte finns planerat stöd för kombinationer av äldre hårdvara.

Utöver funktionsutbudet i DirectX 12 Ultimate tillkommer stöd för framtida ännu inte lanserade funktioner, som lagringstekniken Directstorage. Microsofts lagringsgränssnitt låter grafikkortet läsa data snabbt från SSD-lagring via NVME-gränssnittets parallella kommunikation, en funktion det redan fyller i bolagets spelkonsoler Xbox Series X/S. Det innebär överföring av speldata i gigabyte-hastigheter med avsevärt sänkt latens ställt mot dagens lagringsgränssnitt, som i Windows och DirectX fortfarande bygger på en modell som togs fram när mekaniska hårddiskar var standard.

Ray tracing gör efterlängtad entré

Till skillnad från Nvidias RTX-familj väljer AMD inte att införa stöd för ray tracing med stora hårdvarublock helt dedikerade uppgiften. Istället utförs RT-beräkningar av dedikerade enheter i varje CU-enhet, där RT-enheterna i fråga kallas Ray Accelerator (RA). Här beräknas hur ljusstrålar påverkar omgivningen via "lådor" eller utrymme i en scen, där strukturen för scenerna lagras i en trädstruktur (Bounding Volume Hierarchy, BVH).

RDNA2_RayTracing-1.jpg

RA-enheterna är betydligt enklare än Nvidias RTX-kärnor och kan beräkna antingen hur fyra strålar interagerar i dessa "kuber" eller en ljusstrålar mot en triangel per klockcykel. Att AMD inte jämför sig med konkurrentens kapacitet för uppgiften blir tydligt då företaget endast jämför RT-prestanda med hur den står sig mot att beräkningarna utförs i mjukvara istället för hårdvara. AMD anger RA-enheterna accelererar ray tracing-beräkningar tio gånger snabbare än om de skulle utföras i mjukvara.

I en enklare grafikkrets med få CU-enheter, och därmed färre RA-enheter, behöver utvecklare därmed vara smarta med hur den mer begränsade ray tracing-kapaciteten används. Hantering av ray tracing är ett annat område som drar nytta av Infinity Cache. Då det 128 MB stora cacheutrymmet kan hålla stora mängder data från BVH-träd i minne per klockcykel minskas antalet anrop som behöver göras till cacheutrymme. Då ray tracing i realtid är extremt krävande har Infinity Cache stor potential för att reducera den latens som uppstår när RA-enheterna behöver slå upp data i cacheutrymme.

Variabel bildkvalitet på hårdvarunivå

Oavsett hur stora framsteg som görs i en grafikarkitektur kämpar den alltid med att prestera så god bildkvalitet som möjligt med så hög upplösning som möjligt, där båda ska uppnås med så hög och jämn bilduppdatering som möjligt. En lösning är att låta kvaliteten i olika delar av bilden variera efter hur viktig just den delen är för betraktarens ögon, eller hur troligt det är att den sänkta kvaliteten märks.

Läs också: Teknikfokus: Flexibel bildkvalitet med Variable Rate Shading

Variable Rate Shading (VRS) ger utvecklare möjlighet att styra just bildkvalitet i olika delar av bilden. VRS tillhandahåller ett antal olika upplägg för hur pixlar färgsätts (shading), där 1×1 är standardupplägget där alla pixlar i en upplösning färgsätts individuellt. Detta ger bäst bildkvalitet, men också högst belastning på hårdvaran. Genom att färgsätta horisontella pixlar likadant per rad (2×1) eller detsamma för vertikala pixelkolumner (1×2) kan belastningen på hårdvaran reduceras med hälften.

RDNA2_RBplus.jpg
RDNA2_VRS_tiers.jpg
RDNA2_VRS_exempel.jpg

Olika färger markerar olika nivåer av bildkvalitet, där röd markerar lägst bildkvalitet i detta exempel.

RDNA 2 stöder även upplägget 2×2 där resultatet av en färgsättning appliceras på fyra pixlar, och därmed en fjärdedel av belastningen på streamprocessorerna. Avsevärt lägre inverkan på prestanda kommer också med baksidan att bildkvaliteten blir markant sämre. Tanken är här att VRS-upplägget med störst påverkan används på de delar av bilden som spelaren minst sannolikt lägger märke till. Utvecklare som är smarta i hur VRS-upplägg används i renderade bilder kan se stora vinster i prestanda, med liten märkbar påverkan på bildkvalitet.

En del i den uppgraderade VRS-kapaciteten är att shader engine-sektionernas rastreringsblock sblock RB+ fått dubblerad kapacitet för färgsättning av 32-bitars färgdjup per pixel (32 bpp). Med RDNA 2 kan åtta beräkningar av 32-bitars färgdjup utföras per pixel och klockcykel. Den expanderade kapaciteten i RB+-enheterna innebär att det hårdvaruaccelererade VRS-stödet kan beräkna kvalitet för pixlar i uppställningarna 2×1, 1×2 och 2×2.

Komplex och effektiv geometri med mesh shaders

En annan nyhet som tillkommer i senaste generationens grafikarkitekturer och DirectX 12 Ultimate är vad som kallas mesh shaders. Detta är den funktion som beräknar de geometriska figurer som utgör en 3D-miljö. Beräkningar av 3D-geometri är egentligen ganska enkel, men de senaste tio årens utveckling har introducerat flera geometristeg i grafikkortens exekveringskö (eng. pipeline).

RDNA2_MeshShading.jpg

Exempel på dessa steg är geometry shaders och tessellation-shaders som introducerade manipulering av trianglar under exekvering respektive generering av en finmaskig geometrisk "väv" i tesselering. Tanken med dessa steg var god, men har med tiden gjort processen med att generera geometri mer komplex och mindre flexibel. Mesh shaders är lösningen på problemet, där den ersätter flera tidigare steg med en programmerbar mer strömlinjeformad struktur.

Med mesh shaders kan samma beräkningar på vertex-element (geometriska hörn) utföras på stora arbetsgrupper (workgroup). Återanvändningen av beräkningar förbättrar prestanda då dessa inte behöver gå igenom dedikerade steg likt tidigare. Andra optimeringar kommer från det faktum att färgsättning (shading) endast utförs på enkla geometriska element (primitives) som spelaren kan se, en process som kallas culling.

Att mesh shader är mer flexibel innefattar också att fysiken för partikeleffekter kan beräknas tillsammans med geometri på samma streamprocessor. Tillsammans med övriga effektivisering i RDNA 2 ger mesh shaders utvecklare en större verktygslåda för att höja den visuella komplexiteten och kvaliteten, samtidigt som de mer finmaskigt kan styra balansen mellan visuell kvalitet och prestanda.

Energieffektivitet med arv i Zen

Med RDNA 2 lyfter AMD fram att bolaget lyckats öka energieffektiviteten med 4,1 gånger vad RX Vega 64 med GCN 5.0 levererade år 2017. På hårdvarunivå består det bland annat i att Radeon RX 6000-korten använder högeffektiva strömfaser, vilka mäter in på upp till 15 stycken. För grafikminnet används två strömfaser som driver åtta minnesmoduler.

RDNA2_GPU_strömfaser.jpg
RDNA2_kylarlager.jpg

AMD jämför sig här med Nvidias flaggskeppskort Geforce RTX 3080 och RTX 3090. Geforce RTX 3080 använder 3 strömfaser till 10 minnesmoduler, medan RTX 3090 använder 4 strömfaser till 24 minnesmoduler. Fler strömfaser och minnesmoduler innebär högre energiförbrukning. Här menar AMD att mer återhållsamt bruk av dessa i kombination med minnesoptimeringen i Infinity Cache sammantaget ger RDNA 2-grafikkort konkurrenskraftig prestanda till lägre effektbudget ställt mot Nvidias prestandakort.