Shader Cache: määritelmä ja kuinka se vaikuttaa pelin suorituskykyyn

Monta kertaa olet nähnyt väliaikaisten tiedostojen joukossa, joista voit poistaa Windows tai saada tilaa ns. DirectX Shader -välimuisti tai Shader Cache. Jos olet koskaan miettinyt, mikä se on ja miksi pelien suorituskyky romahtaa, kun poistat sen, sinun tarvitsee vain lukea tämä artikkeli.

GPU:t ovat prosessoreita aivan kuten CPU:t, mutta ne eroavat toisistaan ​​siinä, että niiden rinnakkaisuus on säiesuuntautunut. Tästä syystä sanotaan, että grafiikkaprosessori on TLP-tyyppinen, kun taas keskusprosessori on ILP-tyyppinen. Tähän on lisättävä, että vaikka graafin suoritussäikeet eivät ole suunnattu prosesseihin, vaan graafisiin primitiiveihin tai dataan.

Shader-välimuisti

Toisin sanoen jokaisella kolmiolla, pikselillä tai fragmentilla on oma varjostusohjelma 3D-liukuhihnan jokaiselle vaiheelle. Joka on kirjoitettu korkean tason kielellä, esimerkiksi HLSL, jos puhumme DirectX: stä tai GLSL, jos puhumme OpenGL: stä tai Vulkanista. Vaikka on myös joitain, jotka ovat vain tietyille järjestelmille, kuten SONY:n PSGL PlayStation konsolit. No, nämä ohjelmat on käännettävä ja siksi siirrettävä lähdekoodista binaariin.

Mikä on Shader Cache?

Shader Cache CoD

Ongelma syntyy, kun toisin kuin CPU:illa, joissa ne ovat kaikki x86, GPU:iden tapauksessa rekisteri- ja käskyjoukko ei ole yleinen, ei tuotemerkkien välillä, vaan myös saman tuotemerkin arkkitehtuurien välillä. Tämä tarkoittaa, että varjostimien koodia on käännettävä pelatessasi, mikä aiheuttaa pätkimistä ja suorituskykyongelmia. Siksi luotu binaari tallennetaan tiedostoon, joka kun peli ladataan uudelleen, ladataan uudelleen näytönohjaimen videomuistiin, jonka tunnemme Shader-välimuistina tai Shader-välimuistina.

Joten jos päivitämme näytönohjaimemme, ne on luotava jokaiselle pelillemme uudelleen, jos poistamme sen kiintolevyltä tai SSD yhtä hyvin. Lisäksi tämä on yksi syistä, miksi ei ole hyvä arvostella näytönohjainta, kun pelaamme peliä ensimmäistä kertaa. Varsinkin jos haluamme mitata heidän säännöllistä suorituskykyään.

VRAM vie myös tilaa

Cache Shader -ohjauspaneeli NVIDIA

- GPU näytönohjain käyttää vain järjestelmää RAM PCI Express -liitännän kautta ja sen DMA-yksikön avulla, joten Shader-välimuisti ladataan visuaalisten tietojen kanssa, joita tarvitaan kohtauksen muodostamiseen tallennusyksiköstä RAM-muistiin ja RAM-muistista videomuistiin. Vaikka DirectStoragen kanssa on odotettavissa, että grafiikkalaitteisto voi käyttää SSD-levyä suoraan, mikä vähentää pääsyn latenssia ja ongelmaa, joka on riippuvainen prosessori.

Monet pelit ovat hyvin kehittyneitä ja Shader-välimuisti vie vähän tilaa, mutta toiset eivät niin paljon ja se vie paljon grafiikkamuistia. Mikä tarkoittaa, että jos ajuriin liittyy raja tai itse peli, huomaamme yhtäkkiä, että uudet kokoelmat korvaavat vanhat ja alkuperäiset suorituskykyongelmat palaavat.

Joka tapauksessa meidän on pidettävä mielessä, että jos pelaamamme peli vaatii tilaa video-RAM-muistissa, se suosii nykyisen kehyksen renderöintiä. Joten se yrittää noutaa väliaikaisesti järjestelmämuistiin tallennetun Shader-välimuistin. Muista myös, että kaatopaikat tallennusyksikköön tehdään jatkuvasti, koska kun graafisen primitiivin varjostin on luotu, sitä ei tarvitse tehdä uudelleen.

Säteen jäljitys ja Shader-välimuisti

Säteenseurannassa GPU:sta useimmin kysytty kysymys on Boolen tyyppinen. Leikkaako tämä säde tämän primitiivisen graafin? Vastaus ei ole aina kyllä, ja siksi on olemassa ehto, joka tapahtuu tai ei olosuhteista riippuen. Siksi, kun suoritat tämän varjostimen ensimmäistä kertaa, on tarpeen kääntää ja luoda välimuistivarjostin kaikkia mahdollisia tuloksia varten.

Shader Cache konsoleissa

XSX, XSS, PS5 konsolit

Videopelikonsolissa on aina samat komponentit ensimmäisestä tehtaalta lähtevästä mallista viimeiseen. Vaikka useita vuosia on kulunut, sen tekniset tiedot eivät muutu. Esimerkiksi nykyään voit löytää vanhempia malleja kuin vanhin näytönohjain. Yksi tapa hyödyntää sen laitteiston muuttumattomuutta on käyttää ns. shadereita, jotka on jo koottu pelin asennukseen. Tämä tekee tarpeettomaksi luoda Shader-välimuistia jokaiselle pelille, mutta se on myös kaksiteräinen miekka.

Jos esimerkiksi haluat tehdä tehokkaamman ja taaksepäin yhteensopivan konsolin, sinulla on seuraavat vaihtoehdot:

  • Vie ISA uuden järjestelmän grafiikkasuorittimeen, jolloin se toimii vanhan supersarjana. Näin AMD on tehnyt PlayStation 5- ja Xbox-sarjoissa RDNA 2 -arkkitehtuurilla ajaakseen sujuvasti edellisen sukupolven pelejä, jotka on suunniteltu GCN:lle.
  • Integroi kaikki edellisen järjestelmän graafiset piirit uuteen järjestelmään. Tämän Nintendo teki konsoleissaan 3DS- ja SONY-konsoleissaan toisella PlayStationillaan ja joillakin kolmannen malleilla.

Emulaattoritasolla monissa tapauksissa tehdään jo käännetyt varjostimet ja tehdään käänteinen prosessi, jolloin luodaan välikoodi, joka voi luoda näytönohjaimesi kanssa luodun Shader-välimuistin. Se ei kuitenkaan ole tarkkaa tiedettä ja saatat kohdata tiettyjä graafisia häiriöitä ajaessasi pelejä.

Optimoinnit GPU-valmistajille

Lovelace Hopper Organisaatio

molemmat NVIDIA ja AMD sisältävät yleensä optimoinnit uusimpiin ohjaimiinreuna pelejä. Nämä eivät sisällä vain optimaalisia asetuksia parempaa suorituskykyä varten, vaan myös jo optimoidun Shader-välimuistin jokaiselle pelille ja paremmat tiedot kuin peruspelissä. Ja molemmat valmistajat ovat kiinnostuneita siitä, että heidän edistyksellisimmällä näytönohjaimellaan on paras mahdollinen suorituskyky nykypäivän tehokkaimmassa pelissä.

Nämä jättävät rahaa eri kehitysstudioihin, jotka optimoivat shader-ohjelmat tietyille grafiikkaarkkitehtuureille ja luovat Shader-välimuistin, joka toimii paremmin kuin peruspelin mukana tuleva. Tällä pyritään kannustamaan uusien mallien hankintaan ja luomaan ohjelman vanhenemista, mikä on välttämätöntä alaa ylläpitävän kulutuksen syntymiselle. Tästä syystä monet pelit, joissa on tuskin mitään visuaalisia muutoksia edellisiin osiin, päätyvät huonompaan suorituskykyyn.