Shader Cache: definition och hur det påverkar spelprestanda

Många gånger kommer du att ha sett bland de tillfälliga filerna att ta bort från Windows eller för att få utrymme den så kallade DirectX shader cache eller Shader Cache. Om du någonsin har undrat vad det är och varför prestandan för spelen sjunker när du tar bort den, måste du bara läsa den här artikeln.

GPU:er är processorer precis som processorer, men de är olika genom att deras parallellitet är trådorienterad. Det är därför man säger att en grafisk processor är av TLP-typ medan en central är av ILP-typ. Till detta måste vi lägga till att medan exekveringstrådarna i grafen inte är orienterade mot processerna utan till de grafiska primitiverna eller data.

Shader-cache

Med andra ord har varje triangel, pixel eller fragment sitt eget skuggningsprogram för varje steg i 3D-pipelinen. Som är skrivet på ett högnivåspråk, till exempel HLSL om vi pratar om DirectX eller GLSL om vi pratar om OpenGL eller Vulkan. Även om det också finns några som är exklusiva för vissa system, som PSGL från SONY's PlayStation konsoler. Tja, dessa program måste kompileras och därför skickas från källkod till binär.

Vad är Shader Cache?

Shader Cache CoD

Problemet kommer när, i motsats till vad som händer med CPU:er där de alla är x86, i fallet med GPU:er, uppsättningen av register och instruktioner inte är vanliga, inte mellan märken, utan också mellan arkitekturer av samma märke. Detta innebär att koden för shaders måste kompileras medan vi spelar, vilket orsakar stamning och prestandaproblem. Därför lagras den genererade binära filen i en fil som, när spelet laddas igen, kommer att laddas om på grafikkortets videominne, som vi känner som shader-cache eller shader-cache.

Så om vi uppdaterar vårt grafikkort måste dessa genereras för vart och ett av våra spel igen, om vi tar bort det från hårddisken eller SSD också. Dessutom är detta en av anledningarna till att det inte är bra att bedöma ett grafikkort när vi spelar ett spel för första gången. Speciellt om vi vill mäta deras vanliga prestationer.

VRAM tar också plats

Cache Shader Kontrollpanel NVIDIA

Smakämnen GPU på ditt grafikkort kommer bara åt systemet RAM genom PCI Express-gränssnittet och med dess DMA-enhet, så kommer shader-cachen att laddas tillsammans med den visuella information som krävs för att komponera scenen från lagringsenheten till RAM och från RAM till videominne. Även om det med DirectStorage förväntas att grafikhårdvaran kommer att kunna komma åt SSD direkt, vilket minskar åtkomstfördröjningen och problemet med att behöva vara beroende av CPU.

Många spel är välutvecklade och shader-cachen tar lite plats, men andra inte så mycket och det slutar med att det tar upp en stor mängd grafikminne. Vad betyder att om drivrutinen har en tillhörande gräns eller själva spelet, upptäcker vi plötsligt att de nya kompileringarna ersätter de gamla och de initiala prestandaproblemen kommer tillbaka.

I alla fall måste vi komma ihåg att om spelet vi spelar kräver utrymme i video-RAM, kommer det att ge företräde åt renderingen av den aktuella ramen. Så den kommer att försöka hämta shader-cachen som är lagrad i systemminnet tillfälligt. Kom också ihåg att dumpningarna till lagringsenheten görs kontinuerligt, eftersom när skuggningen av en grafisk primitiv har genererats kommer det inte att vara nödvändigt att göra det igen.

Strålspårning och shader-cachen

Inom ray tracing är den vanligaste frågan om GPU:n av boolesk typ. Skär denna stråle denna primitiva graf? Svaret är inte alltid ja och därför finns det ett tillstånd som kommer att inträffa eller inte beroende på omständigheterna. Därför, när du kör den här skuggningen för första gången, kommer det att vara nödvändigt att kompilera och generera cache-skuggningen för alla möjliga resultat.

Shader Cache på konsoler

XSX, XSS, PS5 Consolas

En spelkonsol kommer alltid att ha samma komponenter, från den första modellen som lämnar fabriken till den sista. Även om flera år har gått, kommer dess specifikationer inte att ändras. Till exempel kan man idag hitta äldre modeller än det äldsta grafikkortet. Ett sätt att dra fördel av dess oföränderlighet i hårdvaran är att använda sig av så kallade shaders som redan är kompilerade i spelinstallationen. Detta gör det onödigt att generera en shader-cache för varje spel, men det är också ett tveeggat svärd.

Om du till exempel vill göra en mer kraftfull och bakåtkompatibel konsol har du följande alternativ:

  • Exportera ISA till det nya systemets GPU, vilket gör att den fungerar som en superset av den gamla. Detta är vad AMD har gjort i PlayStation 5 och Xbox-serien med RDNA 2-arkitektur för att smidigt köra tidigare generations spel designade för GCN.
  • Integrera alla grafiska kretsar från det tidigare systemet i det nya systemet. Detta är något som Nintendo gjorde på sina konsoler upp till 3DS och SONY med sin andra PlayStation och några modeller av den tredje.

På emulatornivå är vad som görs i många fall att ta de redan kompilerade shaders och göra den omvända processen, generera en mellankod som kan generera en Shader Cache som genereras för att fungera med ditt grafikkort. Det är dock ingen exakt vetenskap och du kan stöta på vissa grafiska fel när du kör spelen.

Optimering för GPU-tillverkare

Lovelace Hopper Organización

Både NVIDIA och AMD inkluderar vanligtvis optimeringar i de senaste drivrutinerna för de mest skärandekanten spel. Dessa inkluderar inte bara de optimala inställningarna för högre prestanda, utan också den redan optimerade shader-cachen för varje spel och bättre specifikationer än basspelet. Och det är att båda tillverkarna är intresserade av att deras mest avancerade grafikkort ska ha högsta möjliga prestanda i det mest kraftfulla spelet av allt som finns idag.

Så dessa lämnar pengar till de olika utvecklingsstudiorna, som optimerar shader-programmen för vissa grafikarkitekturer och genererar en shader-cache som fungerar bättre än den som följer med basspelet. Detta görs för att uppmuntra inköp av nya modeller och skapa en programföråldrad, vilket är nödvändigt för att det ska finnas ett konsumtionsflöde som upprätthåller branschen. Det är därför många spel med knappt några visuella förändringar av sina tidigare omgångar får sämre prestanda.