De nieuwe gpu-architectuur die je terugvindt in de GTX 1080- en 1070-videokaart, heeft de codenaam 'Pascal' gekregen. De ontwikkeling die Pascal mogelijk heeft gemaakt, is de overstap van het 28nm- naar het 16nm-procedé voor het bakken van de chips. Nvidia (en AMD) is voor het maken van chips afhankelijk van halfgeleiderfabrikanten als TSMC. In 2011 begon TSMC met de massalevering van 28nm-chips en het heeft dus meer dan vier jaar geduurd voordat in 2016 de eerste 16nm-chips gemaakt werden.
Videokaart | GTX 970 | GTX 980 | GTX 980 Ti | GTX 1070 | GTX 1080 | Tesla P100 |
---|---|---|---|---|---|---|
Gpu | GM204 | GM204 | GM200 | GP104 | GP104 | GP100 |
Architectuur | Maxwell | Maxwell | Maxwell | Pascal | Pascal | Pascal |
Procedé | 28nm | 28nm | 28nm | 16nm | 16nm | 16nm |
Transistors | 5,2 miljard | 5,2 miljard | 8 miljard | 7,2 miljard | 7,2 miljard | 15,3 miljard |
Cudacores | 1664 | 2048 | 2816 | 1920 | 2560 | 3584 |
Baseclock | 1050MHz | 1126MHz | 1000MHz | 1506MHz | 1607MHz | 1328MHz |
Boostclock | 1178MHz | 1216MHz | 1075MHz | 1683MHz | 1733MHz | 1480MHz |
Vram | 4GB gddr5 | 4GB gddr5 | 6GB gddr5 | 8GB gddr5 | 8GB gddr5x | 16GB hbm2 |
Geheugenklok | 1750MHz | 1750MHz | 1750MHz | 2000MHz | 1250MHz | ?MHz |
Geheugenbus | 256bit | 256bit | 384bit | 256bit | 256bit | 4096bit |
Bandbreedte | 224GB/s | 224GB/s | 336,5GB/s | 256GB/s | 320GB/s | 720GB/s |
Tdp | 145W | 165W | 250W | 150W | 180W | 300W |
Door de gpu uit kleinere componenten op te bouwen, past er meer op hetzelfde oppervlak, terwijl het energiegebruik over het algemeen daalt. De gpu van de GTX 980 werd bijvoorbeeld op 28nm gebakken en bestaat uit 5,2 miljard transistors, die een oppervlakte van 398mm² beslaan. De nieuwe GTX1080-gpu bestaat uit maar liefst 7,2 miljard transistors, maar dankzij het 16nm-procedé is de die maar 314mm² groot.
Ten opzichte van de GTX 980 steeg de tdp wel iets; van 165 naar 180 watt. Voor die 15 watt extra zijn er echter een kwart meer cores actief en bovendien konden de kloksnelheden met een halve gigahertz opgeschroefd worden. Omdat de architectuur en het geheugen ook aangepast zijn, kun je Maxwell en Pascal niet een op een vergelijken, maar op papier lijkt de overstap naar 16nm tot gevolg te hebben dat Pascal een stuk meer prestaties uit iedere watt energie haalt.
GTX1080-gpu (links) en GTX980
Zoals gezegd heeft de GTX1080-gpu ten opzichte van de GTX 980 de beschikking over een kwart meer cores. De GP104-gpu bevat weliswaar nog steeds vier gpcs, maar iedere gpc bestaat nu uit vijf in plaats van vier sm-units, met per stuk 128 cores. Het totaal komt daarmee op 2560 cores, tegenover 2048 cores voor de GTX 980. Bij de GTX 1070 is een gpc uitgeschakeld, waardoor het totale aantal cores op 1920 uitkomt, tegenover 1664 cores voor de GTX 970. De kloksnelheden zijn bovendien behoorlijk opgeschroefd. Nu leiden een hogere kloksnelheid en een groter aantal cores op zich natuurlijk al tot meer snelheid, maar Nvidia heeft daarnaast de gpu op een aantal punten verbeterd.
Asynchronous compute
Een van die punten is de verbeterde ondersteuning voor asynchronous compute. Deze berekeningen kunnen bestaan uit physics- of audioprocessing, of postprocessing van gerenderde frames. Ze kunnen bijvoorbeeld ook asynchronous timewarp zijn, een techniek die Oculus voor de Rift gebruikt.
De eerste verbetering van asynchronous compute die Pascal toevoegt, is de dynamische verdeling van de grafische- en de compute-taken. Die verdeling was bij voorganger Maxwell statisch, wat betekent dat de ontwikkelaar verantwoordelijk was voor de juiste verdeling van de taken om de gpu aan het werk te houden. Was een van die taken eerder voltooid dan de andere, dan was een deel van de gpu idle, wat natuurlijk zonde is van de rekenkracht. Pascal regelt die verdeling zelf, waardoor de gpu efficiënter benut wordt.
Nvidia heeft ook de pre-emption van de Pascal-gpu verbeterd. Bij pre-emption wordt een taak met een lagere prioriteit afgebroken om een taak met een hoge prioriteit uit te voeren. Een voorbeeld hiervan is timewarping, dat onder andere bij de Oculus Rift gebruikt wordt. Daarbij wordt het perspectief van ieder frame gecorrigeerd voor de laatste beweging die je gemaakt hebt, voordat het naar de schermpjes in de bril wordt gestuurd.
Voorganger Maxwell ondersteunt pre-emption op het niveau van de draw call, wat vrij 'hoog' in de pipeline is. Iedere draw call kan namelijk honderden triangles bevatten, die op hun beurt weer honderden pixels kunnen bevatten, en die moeten allemaal gerenderd zijn voordat er overgeschakeld kan worden op een compute-taak. Pascal ondersteunt pre-emption op pixelniveau en kan in honderd microseconden van de ene naar de andere taak schakelen. Dat betekent dat het verzoek voor pre-emption later gedaan kan worden, waardoor de gpu langer aan een taak kan werken voordat de taak onderbroken wordt om de timewarp uit te voeren.
Hoewel asynchronous compute dus verbeterd is ten opzichte van Maxwell, is het nog de vraag hoe Nvidia's implementatie zich tot die van de concurrentie verhoudt. AMD pakt het anders aan en voorziet zijn op de gcn-architectuur gebaseerde gpu's van asynchronous compute engines, die in onze benchmark van Ashes of the Singularity prestatiewinst opleveren, terwijl Maxwell er juist op achteruitgaat. Pascal is wel een verbetering ten opzichte van Maxwell, maar laat geen winst zien zoals bij AMD-gpu's. Het zal echter per toepassing verschillen hoe goed de verschillende gpu's met asynchronous compute omgaan.
Simultaneous multi-projection engine
Een andere verbetering is de ondersteuning voor simultaneous multi-projection in de polymorph engines. Smp zorgt ervoor dat het beeld vanuit maximaal twee gezichtspunten in maximaal zestien perspectieven weergegeven kan worden. Een praktijkvoorbeeld is het gamen op drie monitors, die normaal gesproken door de videokaart als een breed scherm worden gezien. De meeste mensen draaien de buitenste monitoren iets naar binnen en verstoren daarbij het perspectief van de game. Een oplossing die het juiste perspectief behoudt, is de videokaart voor ieder scherm een apart frame te laten renderen, maar dat levert een behoorlijk zware belasting voor gpu, driver en game op. In plaats daarvan kan Pascal dankzij smp in een geometry pass de drie projecties renderen.
Links: juiste (platte) projectie, midden: vervormde projectie, rechts: juiste projectie dankzij Nvidia smp
Een andere mooie toepassing van smp kan bij vr-brillen gebruikt worden. Vr-brillen werken met positieve lenzen, die ervoor zorgen dat je het beeld, dat centimeters voor je oog wordt weergegeven, toch scherp kunt zien. Doordat de lenzen het beeld vervormen, moet de videokaart een omgekeerde vervorming toepassen op het beeld, zodat het er normaal uitziet als je de bril opzet. Een vervormd beeld dat op een Oculus Rift wordt weergegeven, bestaat uit 1,1 miljoen pixels per oog, maar was voor die vervorming 2,1 megapixels groot. Een groot deel van het beeld wordt dus weggegooid om de juiste output op de schermpjes te tonen.
Links: 'gewone' render voor vervorming, midden: Lens Matched Shading, rechts: uiteindelijk beeld na vervorming
Pascal kan besparen op het nutteloos renderen van pixels door gebruik te maken van smp. Het beeld dat naar ieder oog wordt gestuurd, wordt in vier projecties verdeeld, waardoor er minder nutteloze pixels gerenderd worden en het beeld in plaats van 2,1 maar 1,4 miljoen pixels groot is, iets wat Nvidia 'lens matched shading' noemt. Omdat je niet een maar twee ogen hebt, moet de gpu in totaal 2,8 megapixels renderen, maar doordat smp twee gezichtspunten per projectie ondersteunt, hoeft de geometry pass maar één keer gedaan te worden. Volgens Nvidia kan smp in vr dan ook een snelheidsverdubbeling opleveren. Nvidia heeft de ondersteuning voor de nieuwe smp aan zijn gameworks- en vrworks-sdk's toegevoegd en het is op het moment van schrijven dan ook nog een kwestie van afwachten totdat de eerste games smp zullen ondersteunen.