Shader Cache: definitie en hoe dit de spelprestaties beïnvloedt

Vaak heb je een van de tijdelijke bestanden gezien om uit te verwijderen Dakramen en raamkozijnen of om ruimte te winnen de zogenaamde DirectX shader cache of Shader Cache. Als je je ooit hebt afgevraagd wat het is en waarom de prestaties van de games dalen wanneer je het verwijdert, moet je dit artikel gewoon lezen.

GPU's zijn processors, net als CPU's, maar ze verschillen doordat hun parallellisme thread-georiënteerd is. Daarom wordt er gezegd dat een grafische processor van het TLP-type is en een centrale van het ILP-type. Hieraan moeten we toevoegen dat terwijl de uitvoeringsdraden in de grafiek niet gericht zijn op de processen maar op de grafische primitieven of de gegevens.

Shader-cache

Met andere woorden, elke driehoek, pixel of fragment heeft zijn eigen shader-programma voor elke fase van de 3D-pijplijn. Die is geschreven in een taal op hoog niveau, bijvoorbeeld HLSL als we het hebben over DirectX of GLSL als we het hebben over OpenGL of Vulkan. Hoewel er ook enkele zijn die exclusief zijn voor bepaalde systemen, zoals de PSGL van SONY's PlayStation consoles. Welnu, deze programma's moeten worden gecompileerd en daarom van broncode naar binair worden doorgegeven.

Wat is Shader-cache?

Shader Cache CoD

Het probleem ontstaat wanneer, in tegenstelling tot wat er gebeurt met CPU's waar ze allemaal x86 zijn, in het geval van GPU's, de reeks registers en instructies niet gebruikelijk is, niet tussen merken, maar ook tussen architecturen van hetzelfde merk. Dit betekent dat de code van de shaders moet worden gecompileerd terwijl we spelen, waardoor stotteren en prestatieproblemen ontstaan. Daarom wordt het gegenereerde binaire bestand opgeslagen in een bestand dat, wanneer het spel opnieuw wordt geladen, opnieuw wordt geladen in het videogeheugen van de grafische kaart, dat we kennen als de shader-cache of shader-cache.

Dus als we onze grafische kaart bijwerken, moeten deze voor elk van onze games opnieuw worden gegenereerd, als we deze van de harde schijf of de SSD ook. Dit is bovendien een van de redenen waarom het niet goed is om een ​​grafische kaart te beoordelen als we voor het eerst een game spelen. Zeker als we hun reguliere prestaties willen meten.

VRAM neemt ook ruimte in beslag

Cache Shader Configuratiescherm NVIDIA

De GPU van uw grafische kaart heeft alleen toegang tot het systeem RAM via de PCI Express-interface en met behulp van de DMA-eenheid, zodat de shader-cache wordt geladen samen met de visuele informatie die nodig is om de scène samen te stellen van de opslageenheid naar RAM en van RAM naar videogeheugen. Hoewel met DirectStorage wordt verwacht dat de grafische hardware rechtstreeks toegang heeft tot de SSD, waardoor de toegangslatentie en het probleem van afhankelijk zijn van de CPU.

Veel games zijn goed ontwikkeld en de shader-cache neemt weinig ruimte in beslag, maar andere niet zo veel en het neemt uiteindelijk een grote hoeveelheid grafisch geheugen in beslag. Wat betekent dat als de driver een bijbehorende limiet heeft of het spel zelf, we plotseling ontdekken dat de nieuwe compilaties de oude vervangen en dat de initiële prestatieproblemen terugkeren.

We moeten in elk geval in gedachten houden dat als het spel dat we spelen ruimte nodig heeft in het video-RAM, het de voorkeur zal geven aan de weergave van het huidige frame. Het zal dus proberen de shader-cache tijdelijk op te halen die in het systeemgeheugen is opgeslagen. Onthoud ook dat de dumps naar de opslageenheid continu worden gemaakt, aangezien zodra de shader van een grafische primitief is gegenereerd, het niet nodig is om dit nog een keer te doen.

Ray tracing en de shader cache

Bij ray tracing is de meest gestelde vraag aan de GPU van het Booleaanse type. Snijdt deze straal deze primitieve grafiek? Het antwoord is niet altijd ja en daarom is er een voorwaarde die al dan niet zal plaatsvinden, afhankelijk van de omstandigheden. Daarom zal het, wanneer deze shader voor de eerste keer wordt uitgevoerd, nodig zijn om de cache shader te compileren en te genereren voor alle mogelijke resultaten.

Shader-cache op consoles

XSX, XSS, PS5-consoles

Een videogameconsole heeft altijd dezelfde componenten, van het eerste model dat de fabriek verlaat tot het laatste. Hoewel er al enkele jaren zijn verstreken, zullen de specificaties niet veranderen. Tegenwoordig kun je bijvoorbeeld oudere modellen vinden dan de oudste grafische kaart. Een manier om te profiteren van de onveranderlijkheid van de hardware is om gebruik te maken van zogenaamde shaders die al in de game-installatie zijn gecompileerd. Dit maakt het niet nodig om voor elk spel een shader-cache te genereren, maar het is ook een tweesnijdend zwaard.

Als je bijvoorbeeld een krachtigere en achterwaarts compatibele console wilt maken, heb je de volgende opties:

  • Exporteer de ISA naar de GPU van het nieuwe systeem, zodat het werkt als een superset van het oude. Dit is wat AMD heeft gedaan in PlayStation 5 en Xbox-serie met RDNA 2-architectuur om games van de vorige generatie die zijn ontworpen voor GCN, soepel te laten draaien.
  • Integreer alle grafische circuits van het vorige systeem in het nieuwe systeem. Dit is iets dat Nintendo deed op zijn consoles tot 3DS en SONY met zijn tweede PlayStation en sommige modellen van de derde.

Op emulatorniveau wordt in veel gevallen gedaan door de reeds gecompileerde shaders te nemen en het omgekeerde proces uit te voeren, waarbij een tussenliggende code wordt gegenereerd die een Shader-cache kan genereren die wordt gegenereerd om met uw grafische kaart te werken. Het is echter geen exacte wetenschap en u kunt bepaalde grafische problemen tegenkomen bij het uitvoeren van de spellen.

Optimalisaties voor GPU-fabrikanten

Lovelace Hopper Organisatie

Te gebruiken zowel NVIDIA en AMD bevatten meestal optimalisaties in de nieuwste stuurprogramma's voor de meestrand spellen. Deze omvatten niet alleen de optimale instellingen voor hogere prestaties, maar ook de reeds geoptimaliseerde shader-cache voor elke game en betere specificaties dan de basisgame. En het is dat beide fabrikanten geïnteresseerd zijn in hun meest geavanceerde grafische kaart met de maximaal mogelijke prestaties in het krachtigste spel van alles dat vandaag bestaat.

Dus deze laten geld over aan de verschillende ontwikkelingsstudio's, die de shader-programma's optimaliseren voor bepaalde grafische architecturen en een shader-cache genereren die beter werkt dan degene die bij het basisspel wordt geleverd. Dit wordt gedaan om de aankoop van nieuwe modellen aan te moedigen en een programma-veroudering te creëren, wat nodig is om een ​​consumptiestroom op gang te brengen die de industrie ondersteunt. Dat is de reden waarom veel games met nauwelijks visuele veranderingen in hun vorige afleveringen uiteindelijk slechter presteren.