Uusimmat

AMD avasi asynkronisten varjostimien saloja

31.03.2015 18:32 Petrus Laine

AMD on julkaissut lisää tietoa asynkronisten varjostimien toiminnasta moderneilla matalan tason rajapinnoilla. Vaikka AMD:n dioissa keskitytään DirectX 12 -rajapintaan, ovat asynkroniset varjostimet käytettävissä myös Mantle- ja Vulkan-rajapinnoilla. Asynkroniset varjostimet tarkoittavat yksinkertaisimmillaan perinteisten grafiikkaan liittyvien varjostimien ja laskentaan liittyvien varjostimien suorittamista samanaikaisesti toisistaan riippumattomina.

DirectX 11 -rajapinta toi mukanaan laskentaan keskittyvät compute shaderit eli laskenta varjostimet. Rajapinnan rajoitusten vuoksi näitä ei voida kuitenkaan ajaa samanaikaisesti grafiikkaan liittyvien varjostimien kanssa, vaikka käytännössä laskenta varjostimia käytetään myös grafiikkaan. Poikkeuksen sääntöön tekee virtuaalitodellisuus, jossa asynkronisten varjostimien käyttö esimerkiksi kuvan muokkaamiseen renderöinnin jälkeen onnistuu myös DirectX 11 -rajapinnalla, koska näytönohjain tekee sen rajapinnan ”ohi”.

DirectX 12 sen sijaan antaa käyttöön kolme erillistä komentojonotyyppiä: grafiikka, laskenta ja kopiointi, joita voidaan suorittaa toisistaan riippumatta samanaikaisesti. Samanaikainen suorittaminen auttaa pitämään koko grafiikkapiirin potentiaalin aiempaa paremmin käytössä.

Yksinkertaistettuna asynkronisten varjostimien toimintaa verrattuna vanhempien rajapintojen synkronisiin varjostimiin voidaan kuvata tielle liittymisellä. Ilman asynkronisia varjostimia jonoja tulee useammasta eri suunnasta ja ne haluavat kaikki samalle kaistalle. Liikennevalot ohjaavat jonoja, mutta aiheuttavat ylimääräisiä katkoksia liikenteeseen. Asynkronisten varjostimien kanssa erityyppiset käskyjonot voivat liittyä samalle kaistalle ns. vetoketjumaisesti aina, kun sopiva väli vain löytyy.

AMD:n LiquidVR-demossa suorituskyky ilman asynkronisia varjostimia ja jälkikäsittelyefektejä oli 245 FPS. Jälkikäsittelyefektit tiputtivat demon suorituskyvyn 158 FPS:ään. Kun varjostimien suorittaminen muutettiin asynkroniseksi, nousi suorituskyky 230 FPS:ään. Kyse on tietenkin ominaisuuden esittelyn kannalta optimaalinen tilanne, eikä samankaltaisia suorituskyvyn parannuksia luultavasti tulla vain tämän ominaisuuden vuoksi näkemään käytännössä. Asynkronisia varjostimia on käytetty tähän mennessä neljässä pelissä. PlayStation 4 -konsolilla niitä on käytetty Battlefield 4-, InFAMOUS: Second Son- ja The Tomorrow Children -peleissä ja PC:llä puolestaan Thief-pelissä Mantle-rajapinnalla.

AMD:n tapauksessa asynkroniset varjostimet ovat olleet mahdollisia aina GCN-arkkitehtuurilla. GCN 1.0 -sukupolven näytönohjaimissa on maksimissaan kaksi Asynchronous Compute Engineä (ACE) ja 1.1- ja 1.2-sukupolvien näytönohjaimissa maksimissaan kahdeksan ACE:a. GCN 1.1- ja 1.2-arkkitehtuurien ACE-yksiköt kykenevät kahdeksaan jonoon, eli maksimissaan jonoja voisi olla 64, kun ACE-yksikköjä on kahdeksan. GCN 1.0:lla jonojen määrä on ilmeisesti maksimissaan kaksi per ACE-yksikkö, mutta tämä odottaa vielä lopullista varmistusta. GCN-arkkitehtuurissa on myös erillinen DMA-yksikkö, joka hoitaa kopiointitehtävät muista riippumatta.

NVIDIAn puolella asynkronisiin varjostimiin kykenevät vain tuoreimmat toisen Maxwell-sukupolven näytönohjaimet, joiden käytössä on maksimissaan 32 laskentajonoa tai 1 grafiikkajono ja 31 laskentajonoa. Fermi- (maks. 1 jono), Kepler- (maks. 1 jono, pl. GK110 maks. 32 jonoa) ja ensimmäisen sukupolven Maxwell-arkkitehtuurit (maks. 32 jonoa) eivät kykene grafiikka- ja laskentajonojen samanaikaiseen suorittamiseen.

Päivitys klo 19.55: AnandTechin artikkelin virheeliset tiedot on korjattu, uutisesta poistettu viitteet virheellisiin tietoihin.

AnandTech, AMD Dives Deep On Asynchronous Shading