Shader Cache: definition og hvordan det påvirker spilydelsen

Mange gange vil du have set blandt de midlertidige filer, du skal slette fra Windows eller for at få plads den såkaldte DirectX shader cache eller Shader Cache. Hvis du nogensinde har undret dig over, hvad det er, og hvorfor spillenes ydeevne, når du sletter det, falder, skal du bare læse denne artikel.

GPU'er er processorer ligesom CPU'er, men de er forskellige ved, at deres parallelitet er trådorienteret. Det er derfor, man siger, at en grafisk processor er af TLP-typen, mens en central er af ILP-typen. Til dette skal vi tilføje, at mens udførelsestrådene i grafen ikke er orienteret mod processerne, men til de grafiske primitiver eller dataene.

Shader-cache

Med andre ord har hver trekant, pixel eller fragment sit eget shader-program for hvert trin i 3D-pipelinen. Som er skrevet på et højt niveau sprog, for eksempel HLSL hvis vi taler om DirectX eller GLSL hvis vi taler om OpenGL eller Vulkan. Selvom der også er nogle, der er eksklusive for visse systemer, såsom PSGL fra SONY's PlayStation konsoller. Nå, disse programmer skal kompileres og derfor overføres fra kildekode til binær.

Hvad er Shader Cache?

Shader Cache CoD

Problemet kommer, når, i modsætning til hvad der sker med CPU'er, hvor de alle er x86, i tilfælde af GPU'er, er sættet af registre og instruktioner ikke fælles, ikke mellem mærker, men også mellem arkitekturer af samme mærke. Det betyder, at shaders-koden skal kompileres, mens vi spiller, hvilket forårsager hakken og ydeevneproblemer. Derfor bliver den genererede binære fil gemt i en fil, der, når spillet indlæses igen, vil blive genindlæst på grafikkortets videohukommelse, som vi kender som shader-cachen eller shader-cachen.

Så hvis vi opdaterer vores grafikkort, skal disse genereres for hvert af vores spil igen, hvis vi sletter det fra harddisken eller SSD såvel. Det er desuden en af ​​grundene til, at det ikke er godt at bedømme et grafikkort, når vi spiller et spil for første gang. Især hvis vi vil måle deres regelmæssige præstationer.

VRAM fylder også

Cache Shader Kontrolpanel NVIDIA

GPU af dit grafikkort har kun adgang til systemet RAM gennem PCI Express-grænsefladen og ved at bruge dens DMA-enhed, så shader-cachen vil blive indlæst sammen med den visuelle information, der er nødvendig for at komponere scenen fra lagerenheden til RAM og fra RAM til videohukommelsen. Selvom det med DirectStorage forventes, at grafikhardwaren vil være i stand til at få direkte adgang til SSD'en, hvilket reducerer adgangsforsinkelsen og problemet med at skulle afhænge af CPU.

Mange spil er veludviklede, og shader-cachen fylder lidt, men andre ikke så meget, og det ender med at optage en stor mængde grafikhukommelse. Hvad betyder, at hvis driveren har en tilknyttet grænse eller selve spillet, opdager vi pludselig, at de nye kompilationer erstatter de gamle, og de indledende præstationsproblemer vender tilbage.

Under alle omstændigheder skal vi huske på, at hvis spillet, vi spiller, kræver plads i video-RAM, vil det give fortrinsret til gengivelsen af ​​det aktuelle billede. Så det vil søge at hente shader-cachen, der er gemt i systemhukommelsen midlertidigt. Husk også, at dumperne til lagerenheden foretages kontinuerligt, da når shaderen af ​​en grafisk primitiv først er blevet genereret, vil det ikke være nødvendigt at gøre det igen.

Strålesporing og shader-cachen

Inden for ray tracing er det oftest stillede spørgsmål til GPU'en af ​​den boolske type. Skærer denne stråle denne primitive graf? Svaret er ikke altid ja, og derfor er der en tilstand, der vil ske eller ej, afhængigt af omstændighederne. Derfor, når du udfører denne shader for første gang, vil det være nødvendigt at kompilere og generere cache shader for alle mulige resultater.

Shader Cache på konsoller

XSX, XSS, PS5 konsoller

En videospilkonsol vil altid have de samme komponenter, fra den første model, der forlader fabrikken, til den sidste. Selvom der er gået flere år, vil dens specifikationer ikke ændre sig. Eksempelvis kan du i dag finde ældre modeller end det ældste grafikkort. En måde at drage fordel af dens hardware-uforanderlighed er at gøre brug af såkaldte shaders, der allerede er kompileret i spilinstallationen. Dette gør det unødvendigt at generere en shader-cache for hvert spil, men det er også et tveægget sværd.

Hvis du for eksempel vil lave en mere kraftfuld og bagudkompatibel konsol, har du følgende muligheder:

  • Eksporter ISA til det nye systems GPU, så det fungerer som et supersæt af det gamle. Dette er, hvad AMD har gjort i PlayStation 5 og Xbox Series med RDNA 2-arkitektur for at køre den tidligere generation af spil, der er designet til GCN.
  • Integrer alle de grafiske kredsløb fra det tidligere system i det nye system. Dette er noget, som Nintendo gjorde på sine konsoller op til 3DS og SONY med sin anden PlayStation og nogle modeller af den tredje.

På emulatorniveau er det, der gøres i mange tilfælde, at tage de allerede kompilerede shaders og gøre den omvendte proces, der genererer en mellemkode, der kan generere en Shader Cache, der er genereret til at arbejde med dit grafikkort. Det er dog ikke en eksakt videnskab, og du kan støde på visse grafiske fejl, når du kører spillene.

Optimeringer for GPU-producenter

Lovelace Hopper Organization

Både NVIDIA og AMD inkluderer normalt optimeringer i de nyeste drivere for den mest skærende-kant spil. Disse inkluderer ikke kun de optimale indstillinger for højere ydeevne, men også den allerede optimerede shader-cache for hvert spil og bedre specifikationer end basisspillet. Og det er, at begge producenter er interesserede i, at deres mest avancerede grafikkort har den maksimalt mulige ydeevne i det mest kraftfulde spil af alt, der findes i dag.

Så disse overlader penge til de forskellige udviklingsstudier, som optimerer shader-programmerne til bestemte grafikarkitekturer og genererer en shader-cache, der fungerer bedre end den, der følger med basisspillet. Dette gøres for at tilskynde til indkøb af nye modeller og skabe en programforældelse, som er nødvendig for, at der kan være en strøm af forbrug, der opretholder branchen. Det er grunden til, at mange spil med næsten ingen visuelle ændringer til deres tidligere afdrag ender med at have dårligere ydeevne.