Arkitekturen Turing – en helt ny skapelse

Många har försökt räkna ut hur den nya RTX-serien med arkitekturen Turing ska prestera med antagandet att det handlar om en vidareutveckling av Pascal, där Nvidia lagt till finesser som dedikerade Tensor- och Ray Tracing-kärnor. Andra har förbarmat sig över att Nvidia inte släpper Volta för vanliga konsumenter.

GeForce_EditorsDay_Aug2018_Updated090318_1536034900-9.jpg
GeForce_EditorsDay_Aug2018_Updated090318_1536034900-8.jpg

Faktum är att Volta var vidareutvecklingen av Pascal, där Nvidia lade till vissa funktioner som Tensor-kärnor som från början var tänkt att introduceras med Turing. Med andra ord är volta gårdagens nyhet och för spelande är Turing ut alla avseenden den arkitektur som är relevant.

Den som hängt med på nyhetsfronten och sociala medier kan ha lagt märke till att flera spelutvecklare fått det Volta-baserade grafikkortet Titan V av Nvidia. Syftet med detta var enligt Nvidia, utan att gå in på detaljer, att ge dem en "tjuvstart" för att kunna börja testa på och implementera några av de finesser som skulle introduceras med Turing.

Ny Streaming Multiprocessor (SM)

Vid sidan om RTX-funktionerna som vi kommer in på längre ned är den i särklass största nyheten med Turing upp till 50 procent bättre prestanda per CUDA-kärna. Det här möjliggörs framförallt av att arkitekturen Turing kan exekvera instruktioner med heltals- (INT32) och flyttalsberäkningar (FP32) parallellt.

GeForce_EditorsDay_Aug2018_Updated090318_1536034900-11.jpg

När Nvidia tittat på moderna speltitlar framgår att en majoritet av alla instruktioner är flyttal, men att en förhållandevis stor del också är heltal. På varje 100 flyttal ska det gå i snitt 36-heltalsinstruktioner och där instruktionerna i tidigare generationer exekverats seriellt kan de nu köras parallellt jämsides varandra.

GeForce_EditorsDay_Aug2018_Updated090318_1536034900-13.jpg

Den nya möjligheten att köra flyttals- och heltalsinstruktioner parallellt ger en motsvarande prestandaökning, nämligen i snitt 36 procent. Värt att trycka på är att det handlar om ett snittvärde, exempelvis i Battlefield V används närmare 50 instruktioner med heltal på 100 med flyttal medan det i The Witcher 3 handlar om ett avsevärt lägre värde på strax under 20 procent. Prestandalyft "per CUDA-kärna" bör därför också variera mellan olika speltitlar.

GeForce_EditorsDay_Aug2018_Updated090318_1536034900-10.jpg

Varje Streaming Multiprocessor-kluster (SM) huserar 64 kärnor för flyttal och 64 kärnor för heltal, men för enkelhetens skull klassas dessa tillsammans som 64 CUDA-kärnor. De här är i sin tur uppdelade i fyra beräkningsblock, vilka även huserar två Tensor-kärnor vardera eller totalt åtta i ett SM-kluster.

Grafikkretsen TU102 har totalt 72 SM-kluster, men endast 68 stycken är aktiverade när den används för Geforce RTX 2080 Ti vilket ger totalt 4 352 CUDA-kärnor. Därefter kommer TU104 med 48 SM-kluster varav 46 stycken är aktiva med RTX 2080 för totalt 2 944 CUDA-kärnor. Instegskretsen TU106 går ned till 36 SM-kluster där alla är aktiva med RTX 2070 som därmed har 2 304 CUDA-kärnor.

Nytt cacheminne

Den andra stora prestandahöjaren är ett nytt flexibelt L1-cacheminne på 96 KB för varje Streaming Multiprocessor (SM). För grafik kan detta delas upp i 64 KB för grafik-shaders och 32 KB som texturcache & register, medan det för beräkningar kan köras i 64 KB delat minne och 32 KB L1-cache eller vice-versa.

GeForce_EditorsDay_Aug2018_Updated090318_1536034900-12.jpg

L2-cacheminne – Pascal mot Turing

TU102

GP102

TU104

GP104

TU106

GP106

Turing

Pascal

Turing

Pascal

Turing

Pascal

6 MB

3 MB

4 MB

2 MB

4 MB

1,5 MB

Till detta hör också ett dubblerat L2-cacheminne i samtliga segment. Nvidias stora grafikkrets TU102 som används för Geforce RTX 2080 Ti har 6 144 KB (6 MB) L2-cacheminne, att jämföra med 3 072 KB för GP102 i GTX 1080 Ti. Både TU104 och TU106 som används för RTX 2080 respektive RTX 2070 har 4 096 KB (4 MB). Detta att jämföra med 2 048 KB (2 MB) för GP104 och 1 536 KB (1,5 MB) i GP106 som utgör GTX 1060.

Tensor-kärnor

När Nvidia introducerade arkitekturen Volta var den stora nyheten Tensor-kärnor för maskininlärning. Maskininlärning eller på engelska Deep learning är till för sånt som inte passar mänskliga algoritmer, som exempelvis att avgöra vad en bild visar. Nvidia använder som exempel att "if cat" inte fungerar för att avgöra om det på bilden är en katt eller någonting annat.

GeForce_EditorsDay_Aug2018_Updated090318_1536034900-16.jpg
GeForce_EditorsDay_Aug2018_Updated090318_1536034900-17.jpg
GeForce_EditorsDay_Aug2018_Updated090318_1536034900-18.jpg
GeForce_EditorsDay_Aug2018_Updated090318_1536034900-19.jpg
GeForce_EditorsDay_Aug2018_Updated090318_1536034900-20.jpg

Med Tensor-kärnor tillkommer möjligheten att utföra matrisoperationer, vilka ökar prestandan mångfaldigt mot Pascal. Turings Tensor-kärnor uppges vara åtta gånger mer energieffektiva än om samma samma matrismultiplikationer skulle utföras seriellt med arkitekturen Pascal.

Nvidia har gett Turings Tensor-kärnor stöd för en rad olika precisioner, från FP16 som väntas bli vanligast i spel men stöd finns även för FP8 och FP4. Varje kärna kan utföra 128 FP16-operationer/klockfrekvens, ett värde som dubbleras till 256 vid FP8 och 512 vid FP4.

Något många undrar är varför Nvidia valt att lägga resurser och transistorer på en sak som Tensor-kärnor för spelinriktade grafikkretsar. Bolaget tar upp många exempel på hur det kan användas för att leverera bättre spel framöver, där spelutvecklare kan använda tekniken för att kvalitetstesta titlar istället för att ha en myriad av mänskliga betatestare. Ett annat exempel är att tekniken kan användas för att ta fram bättre antifusksystem.

För vanliga användare ser Nvidia framför sig hur kärnorna kan användas för att förbättra AI-motståndare i spel och låta datorn lära sig av spelaren, för att sedan bli en bättre motståndare. Under presentationen tillägger Nvidia skämtsamt att utvecklare måste sätta in gränser för hur bra datorn får bli, annars kommer den på sikt att lära sig spelarens mönster utan och innan och sopa banan med denna.

Något konkret Nvidia slår på stora trumman för kallar de Neural Graphics, som kan användas för att rendera spel i låg upplösning och genom maskininlärning skala upp detta till något mer högupplöst. Nvidia talar om alltifrån 1080p upp till 4K, 8K och rentutav 16K med resultat som ser bra ut även inzoomat.

Deep Learning Super-Sampling (DLSS)

Deep Learning Super-Sampling (DLSS) är Nvidias nya teknik för AI-driven uppskalning, som använder sig av just maskininlärning för att producera ett resultat som enligt företaget ska vara likvärdigt med en fullupplöst scen. För att möjliggöra detta använder sig Nvidia av sin egen superdator Saturn V, som därutöver används internt för att förbättra algoritmer för självkörande bilar.

GeForce_EditorsDay_Aug2018_Updated090318_1536034900-72.jpg
GeForce_EditorsDay_Aug2018_Updated090318_1536034900-73.jpg
GeForce_EditorsDay_Aug2018_Updated090318_1536034900-74.jpg
GeForce_EditorsDay_Aug2018_Updated090318_1536034900-75.jpg
GeForce_EditorsDay_Aug2018_Updated090318_1536034900-76.jpg
GeForce_EditorsDay_Aug2018_Updated090318_1536034900-77.jpg
GeForce_EditorsDay_Aug2018_Updated090318_1536034900-78.jpg
GeForce_EditorsDay_Aug2018_Updated090318_1536034900-79.jpg

Som DLSS fungerar i nuläget får Nvidia ett tidigt exemplar av ett spel, varpå de skapar ett "träningsprogram" som körs internt hos Nvidia på sin superdator och hos utvecklarna. På så vis lär sig datorn hur den ska kunna skala upp en lågupplöst bild till samma nivå som ett fullupplöst dito. Fördelarna med detta är att vinna prestanda genom att köra spelet i en lägre upplösning utan att för den delen tappa bildkvalitet.

RT-kärnor – hårdvaruaccelererad Ray Tracing

Den tredje delen beräkningsenheten att utgöra Turing är splitternya RT Core, som är särskilt framtagen för att möjliggöra strålspårning (eng. ray tracing) i realtid. Strålspårning är långtifrån en ny teknik och har flera decennier på nacken, men det har alltid varit för krävande att kunna köra i realtid.

GeForce_EditorsDay_Aug2018_Updated090318_1536034900-22.jpg
GeForce_EditorsDay_Aug2018_Updated090318_1536034900-23.jpg

När Nvidia forskade på strålspårning kom de snabbt fram till att råstyrka inte skulle räcka till, utan att hårdvaruacceleration skulle behövas. Fördelen med den typen av specialiserad hårdvara är att de gör det snabbt och energieffektivitet, men de saknar flexibilitet att användas för annat än mycket specifika algoritmer.

Efter att ha testat flera olika acceleratorer landade Nvidia för fem år sedan i vad som kallas Bounding Volume Hierarchy (BVH), som enligt bolaget är det vanligaste sättet som strålspårning görs på idag. Tanken är att inte uppfinna hjulet på nytt utan att bygga på något redan är etablerat inom industrin.

GeForce_EditorsDay_Aug2018_Updated090318_1536034900-24.jpg
GeForce_EditorsDay_Aug2018_Updated090318_1536034900-25.jpg
GeForce_EditorsDay_Aug2018_Updated090318_1536034900-26.jpg
GeForce_EditorsDay_Aug2018_Updated090318_1536034900-27.jpg
GeForce_EditorsDay_Aug2018_Updated090318_1536034900-28.jpg
GeForce_EditorsDay_Aug2018_Updated090318_1536034900-29.jpg

Strålspårning går ut på att få ljus att på ett realistiskt sätt studsa mot ytor och därigenom skapa realistiska reflektioner, ljusbrytningar och skuggor. Att hitta vilken triangel ljuset ska studsa mot är enligt Nvidia som att hitta en nål i en höstack och med BVH återfinns denna nål genom att dela in objektet i olika lådor, för att till slut ringa in var triangeln är.

GeForce_EditorsDay_Aug2018_Updated090318_1536034900-30.jpg
GeForce_EditorsDay_Aug2018_Updated090318_1536034900-31.jpg
GeForce_EditorsDay_Aug2018_Updated090318_1536034900-32.jpg
GeForce_EditorsDay_Aug2018_Updated090318_1536034900-33.jpg
GeForce_EditorsDay_Aug2018_Updated090318_1536034900-34.jpg

Att göra detta i mjukvara kräver enligt Nvidia tusentals instruktioner för varje ljusstråle, vilket gör att tidigare grafikkort gått på knä när det ska ske i realtid. Det är det här Nvidia menar att de löst med RT-kärnorna, som är särskilt gjorda för detta och samtidigt avlastar de traditionella CUDA-kärnorna som kan användas för det de är bra på.

RTX är samlingsnamnet för funktioner

Ett vanligt missförstånd med nya Geforce RTX-serien är att RTX som suffix exklusivt pekar på stödet för strålspårning. Nvidia menar dock att det är ett samlingsnamn för alla kärnor, från de traditionella till Tensor- och RT-kärnor, som arbetar tillsammans för att rendera scener. Något Nvidia kallar hybrid rendering.

GeForce_EditorsDay_Aug2018_Updated090318_1536034900-62.jpg