AMD: asynchrone shaders in GCN-architectuur nuttig voor DirectX 12

16 reacties
Inhoudsopgave
  1. 1. Inleiding
  2. 2. Asynchrone shaders
  3. 3. Voordelen voor VR en gaming
  4. 4. Video's
  5. 16 reacties

Asynchrone shaders

AMD's GCN-videokaarten bestaan uit 'asynchrone shaders', die dus onafhankelijk van elkaar bewerkingen kunnen doen. Tot nu toe werden alle berekeningen in een wachtrij gezet en in de vooraf vastgestelde volgorde uitgevoerd, terwijl de asynchrone shaders drie verschillende wachtrijen kennen: één voor grafische en rendertaken, één voor compute-taken (physics, belichting, post-processing) en één voor kopieeropdrachten, bijvoorbeeld van taken die door de CPU worden gegeven. Onderstaand voorbeeld is een schematische weergave van hoe dat er nu bij consoles uitziet en met DirectX 12 en een geschikte GPU ook in de PC-wereld uit kan gaan zien. Overigens biedt ook Vulkan, de nieuwe OpenGL, ondersteuning voor deze feature.

Hoewel het ingewikkelde materie is, probeert AMD het duidelijk te maken door middel van voorbeelden met verkeerslichten. In het verleden was het simpel: instructies werden altijd op volgorde van binnenkomst verwerkt. Inmiddels is er wel 'pre-emption', waarbij er prioriteit wordt toegekend aan taken. Opdrachten met een hoge prioriteit zorgen er zo voor dat er andere taken tijdelijk worden stilgelegd. Door die overhead neemt de efficiëntie soms zelfs af - een oplossing is het in ieder geval niet.


Oorspronkelijk werden de taken op volgorde van binnenkomst verwerkt.


Opdrachten met prioriteit voorrang geven kon wel, maar dan wordt de rest stilgelegd.

Alle videokaarten op basis van de GCN-architectuur kunnen meerdere commandostromen tegelijk verwerken, mogelijk gemaakt door de zogenaamde asynchrone compute-engines ofwel ACE's. Elke queue kan commando's doorgeven zonder te hoeven wachten tot andere taken klaar zijn. Dat helpt om het GPU-gebruik op 100% te houden, omdat alle opdrachten altijd direct beschikbaar zijn.


Met asynchrone shaders kunnen er meerdere 'streams' tegelijkertijd worden verwerkt.

Per GPU zijn er maximaal acht ACE's, waarvan elke engine tot acht verschillende wachtrijen kan bijhouden. Er is directe toegang tot L2-cache en de zogenaamde 'global data share'.

0
*