Nvidias stora premiärfest för arkitekturen Ampere gjordes med avtäckandet av Geforce RTX 3000-serien, som fick ett och annat ögonbryn att höjas med dess utlovande prestandaskutt om mastodontiska antal CUDA-kärnor. De faktiska arkitektoniska uppgifterna var däremot något tunnsådda, något Nvidia nu råder bot på med en insyn i de tekniska förändringarna som Ampere tillför "under huven".

Ampere är här – Geforce RTX 3080 dubblerar prestandan hos RTX 2080

Utöver de rent arkitektoniska förändringarna illustrerar Nvidia också hur Ampere skiljer sig från både föregångaren Turing och äldre arkitektursyskonet Pascal, vilken sparkade igång den framgångsvåg företaget ridit på sedan dess introduktion år 2016. Exempel ges också på hur traditionell raster-rendering på CUDA-kärnor presterar ställt mot föregångarna, framstegen för ray tracing-prestanda och de nya möjligheterna som tillkommer där, samt en lite djupare genomgång av lagringstekniken RTX IO.

Ampere – SM-enheter sväller rejält

Både Ampere och dess föregångare Turing delar huvudsakligt upplägg för kretsarnas beräkningsenheter (SM), kluster av komponenter som tillsammans utgör en komplett beräkningsresurs. Dessa komponenter innefattar bland annat kluster av CUDA-kärnor, schemaläggare för hantering av trådar (Warp Scheduler), registerfiler, L1-cache, funktionsenheter (FMU), och mer därtill.

Ampere_depdive-21.jpg
Ampere_depdive-23.jpg
Ampere_depdive-28.jpg

När Geforce RTX 3000-serien avtäcktes dröjde det inte länge innan publiken häpnade över, och ifrågasatte, det rikliga antalet CUDA-kärnor Nvidia anger för samtliga medlemmar i grafikkortsserien. En dubblering mot förhandsspekulationerna lät för bra för att vara sant, men en granskning i Nvidias tekniska genomgång visar ett upplägg som i mångt och mycket representerar en dubblering av kapaciteten, även om en SM-enhet i Ampere inte innehåller en fullständig uppsättning av allt Turing besitter.

CUDA-kärnorna i ett SM-kluster har utökats till att nu kunna hantera antingen två flyttalsberäkningar (eng. floating point, FP32) eller en FP32- och en heltalsberäkning (eng. integer, INT32) per klockcykel. En SM-enhet bestyckas med fyra kluster av 32 CUDA-kärnor, och dessa kan nu alltså utföra totalt 128 matematiska beräkningar (FMA), upp från 64 för SM-enheterna i Turing. Även det delade L1-cacheminnet får dubblerad kapacitet, det växer förvisso endast med 33 procent sett till utrymme men enligt Nvidias uppgifter blir partitioneringen mellan de olika CUDA-klustren dubbelt så stora.

Ampere_depdive-27.jpg
Ampere_depdive-30.jpg
Ampere_depdive-33.jpg
Ampere_depdive-29.jpg
Ampere_depdive-34.jpg

Varje SM är dessutom bestyckad med en RT-kärna för beräkning av ray tracing och en Tensor-kärna för hantering av AI- och maskininlärning. Den förstnämnda får dubblerad kapacitet för att beräkna hur ljusstrålar korsar varandra (ray intersection) och den sistnämnda får dubblerad kapacitet för matematiska beräkningar av matriser (sparse matrices).

Gällande ray tracing går Nvidia också igenom en ny form av ray tracing som introduceras med Ampere i form av hårdvaruaccelererad rörelseoskärpa (eng. motion blur) i RT. När rörelseoskärpa ska beräknas med konventionella RT-metoder och hårdvara utförs beräkningar på hur en triangel sannolikt förflyttas över tid, och sedan beräknas ljussättningen på trianglarna över tid baserat på detta. Det är en tidsmässigt, och därmed prestandamässigt, krävande metod för visuellt avancerade spel med snabb bilduppdatering.

Med Ampere utförs ray tracing-beräkningar av flera trianglar, vid flera tidpunkter, samtidigt. Det genererar resultat för en triangel vid flera tidpunker (samples), vilket sedan kan användas för att skapa rörelseoskärpa (output) i ray tracing-scener. Enligt Nvidias uppgifter ger detta åtta gånger snabbare beräkningar av hur strålar färdas och interagerar i en scen (eng. ray traversal).

Ampere_depdive-24.jpg
Ampere_depdive-25.jpg

Sett till Tensorkärnorna har antalet per SM faktiskt halverats, från 8 i Turing-kretsen TU102 till 4 i Ampere-kretsarna. Detta till trots växer den totala kapaciteten då de här utförs av tredje generationens Tensorkärnor. Där Turings SM-enheter kan utföra 64 FMA-beräkningar av typen FP16 per Tensorkärna kan Ampere-kretsen GA102 utföra 128 om det handlar om beräkningar av glesa matriser (sparse), och 256 om det är stora matriser (dense).

En skärskådning av vad SM-enheterna i Turing och Ampere kan hantera, sett till den totala kapaciteten för FMA-beräkningar av FP16-typ, landar då i samma 512 för glesa matriser. För stora glesa matriser dubbleras däremot kapaciteten till 1 024 för Ampere. Enligt Nvidias uppgifter ger den uppgraderade Tensor-strukturen en förbättring om 1,9× sett till prestanda per watt ställt mot Turing.

Med allt detta i åtanke förefaller det som att Nvidia inte förskönar sanningen allt för mycket med vad SM-enheterna är kapabla till i Geforce RTX 3000-serien, trots att komponenterna de huserar i inte växer i takt med antalet CUDA-kärnor.

Ampere ställt mot Turing och även Pascal

För att vidare belysa hur Ampere är ett stort steg fram ställer Nvidia specifikationerna för den nya arkitekturen sida vid sida med motsvarigheten för föregångaren Turing. Här används Turing-generationens Geforce RTX 2080 Super som motpol till Ampere och Geforce RTX 3080. Båda grafikkort bestyckas med sex processorkluster (GPC). Antalet SM-enheter i RTX 3080 landar i 68, vilket alltså inte är en dubblering av de 48 SM-enheter RTX 2080 Super besitter.

Trots detta anges alltså antalet CUDA-kärnor av ovan nämnda anledningar till det dubblerade antalet 8 704 CUDA-kärnor, vilket enligt uppgift ger en total raster-prestanda om 30 TFLOPS, att jämföra med 11 hos RTX 2080 Super. Steget i Tensorkärnornas flyttalsberäkningar blir än större, med 238 FP16 DL kontra blott 89 i RTX 2080 Super. Även integerberäkningar växer imponerande med 476 TOPS kontra föregångarens 178.

Även GA102-kretsens kapacitet för att rendera pixlar på skärm och till grafikminnet, mätt i gigapixlar per sekund (Gpixels/s), växer stadigt till 164 från 116 i TU102. Gällande texturrendering, som mäts i gigatexels per sekund (Gtexels/s), når Ampere-kretsen ett resultat om 465 Gtexels/s kontra 248 Gtexels/s i Turing-motsvarigheten. Slutligen jämförs minnesbandbredden som i GA102 landar i 760 GB/s, cirka 25 procent över TU102.

Den ack så viktiga latensfrågan

En hörnsten i hur bra ett grafikkort presterar är hur pass snabbt dess streamprocessorer kan rendera en bildruta (eng. frame). För att illustrera hur Ampere sköter sig i detta avseende ger Nvidia exempel på latenser i rendering ställt mot resultaten för både Turing och Pascal. I det sistnämnda fallet anges resultat för dess prestandakort Geforce GTX 1080 Ti, en för sin tid mycket kapabel krets utan hårdvara för ray tracing.

Ampere_depdive-12.jpg
Ampere_depdive-13.jpg
Ampere_depdive-16.jpg

Enligt exemplet tillbringar GTX 1080 Ti cirka 12 ms med att rendera en bildruta med traditionell rendering (eng. shading), och om ray tracing-beräkningar ska utföras på dess CUDA-kärnor sticker renderingstiden iväg till 92 ms. När kombinationen av CUDA-, RT- och Tensorkärnor i Turing-arkitekturen utsätts för samma arbetsuppgift dras renderingstiden ned till 12 ms. Nvidia passar även på att jämföra hur Turing presterar med shader-baserad hantering av RT, där tiden sjunker från 92 till 51 ms.

När jämförelsen kommer till Turing mot Ampere visar nykomlingen imponerande resultat. Det handlar förvisso inte om en halverad renderingstid, men inte heller ett allt för avlägset resultat. Där Turing kräver 19 ms för att rendera en ray tracing-bildruta avhandlar Ampere samma bildruta på 11 ms. När ray tracing kombineras med uppskalningstekniken DLSS blir tidsåtgången 13 ms för Turing medan Ampere når mållinjen på 7,5 ms. När RT och Tensorkärnor kombineras med vanliga shaderenheter simultant blir Ampere klar redan vid 6,7 ms.

Ampere_depdive-14.jpg

I en avslutande översiktjämförelse illustrerar Nvidia hur prestanda utvecklats över tid, från GTX 1080 Ti till RTX 2080 och med avslut i RTX 3080. Sett till ray tracing beräknat i mjukvara är Ampere cirka 1,4× snabbare än arkitekturen i Turing, och cirka 3,5× snabbare än Pascal. För hårdvarubaserad ray tracing är Ampere istället 1,7× snabbare än Turing, vilket saknar resultat för Pascal då den också saknar hårdvaruaccelererad ray tracing. När ray tracing och DLSS kombineras är framsteget i Ampere 1,7× ställt mot Turing.

Nästa generations strömmad lagring med RTX IO

Microsoft lyfte nyligen locket på vad mjukvarugränssnittet Directstorage kommer leda till avsevärt förbättrad lagringsprestanda för NVME-ansluten SSD-lagring när tekniken letar sig över till Windows 10 under år 2021. Avtäckandet skedde blott dagar efter Nvidia presenterat den relaterade tekniken RTX IO under Geforce RTX 3000-evenemanget. De båda teknikerna är relaterade och RTX IO kommer också vara kompatibel med Directstorage när denna blir tillgänglig.

Microsoft tar högpresterande lagring till PC-spelare med Directstorage

I Nvidias genomgång av RTX IO ger företaget exempel på hur hämtande och skrivande av data till både lagring och grafikminne, kollektivt kallat IO, har förändrats på senare år och varför befintliga lagringsgränssnitt inte är utformade för moderna behov. Som exempel på detta anges Crysis, som år 2007 upptog blott 10 GB på spelares hårddiskar. Idag upptar spel ofta storlekar om 100 GB, och detta är dessutom oftast komprimerad data som ska packas upp av processorn.

Ampere_depdive-8.jpg
Ampere_depdive-4.jpg
Ampere_depdive-5.jpg
Ampere_depdive-9.jpg
Ampere_depdive-6.jpg
Ampere_depdive-7.jpg
Ampere_depdive-3.jpg

När anropen till lagringsenheter mäter in i tiotusental blir operativsystemets befintliga lagringsgränssnitt en flaskhals, och nya lösningar som Directstorage och RTX IO introducerar därför en ny modell anpassad för strömmande av stora mängder små datamängder över moderna kommunikationsgränssnitt som NVME. I Nvidias exempel levererar en hårddisk typiskt 50 till 100 MB/s ihållande överföringshastighet. För en SATA-ansluten SSD tar detta steget upp till 500 MB/s.

Med steget över till NVME-gränssnittet och PCI Express 3.0-protokollet växer bandbredden till 3 500 MB/s, och med PCI Express 4.0 når det hela 7 500 MB/s. När dagens mjukvarugränssnitt ska hantera dessa hastigheter över exempelvis PCI Express 4.0 kräver processen med avkomprimering av data mellan primärminne till grafikminne flera processorkärnor. Med RTX IO flyttas avkomprimeringen från processorns till grafikkortets kärnor och utförs där asynkront i större utsträckning än vad som är möjligt på processorn.

Som ett konkret prestandaexempel anges laddningstiden för en nivå i ett spel, dels när okomprimerad data läses in och dels där processorn hanterar komprimerad data. Okomprimerad data läses in på 63 sekunder, vilket sjunker till 38 sekunder när processorn avlastar. När ett testsystem med den 24-kärniga processorn Ryzen Threadripper 2970WX avkomprimerar datan sjunker tiden till 5 sekunder, och när RTX IO blandas in sjunker det ytterligare till 1,5 sekunder.

RTX IO blir tillgängligt i samband med att Directstorage tar plats i Microsofts utvecklargränssnitt DirectX 12, vilket är planerat att ske någon gång under år 2021 med start i en testversion för utvecklare. Nvidia meddelar att RTX IO ska kunna användas med grafikkort ur Turing- och Ampere-generationerna, det vill säga Geforce RTX 2000- och RTX 3000-kort.

Summering – inte allt för förskönade skrytsiffror

Vad Nvidias genomgång skvallrar om är att företagets påståenden om dubblerad kapacitet i Ampere-arkitekturens SM-enheter inte är tagna ur luften. I många av de relevanta tillämpningarna överträffar Ampere föregångaren Turing dubbelt upp, och i de fall där det inte sker är kapaciteten, på pappret, ofta nära det utlovade utfallet.

Vi skriver "på pappret" medvetet, för det återstår fortfarande att se hur SM-enheterna i Ampere levererar i praktiken, i olika scenarion. Ampere är i slutändan inte en dubblering av alla de komponenter som utgör en SM-enhet, och det annorlunda upplägget lär sannolikt passa olika scenarion olika bra. Om 8 704 CUDA-kärnor i RTX 3080 motsvarar övertaget över RTX 2080 Ti och dess 4 352 CUDA-kärnor i praktiken återstår alltså att se.

Slutligen ser RTX IO i teorin ut att kunna medföra den största förändringen i lagringsrelaterad prestanda spelfantaster har sett, kanske någonsin. Konkurrenten AMD lär sannolikt också ge stöd för Directstorage i någon form längre fram. När Microsoft sjösätter Directstorage nästa år bör utbredningen av tekniken alltså accelereras, och då kan spelare som äger en NVME-ansluten SSD över PCI Express potentiellt sett uppleva ett sjumilakliv i lagringsprestanda.

Läs mer om "Ampere" och Geforce RTX 3000: