GCN - AMD:s framtida trumfkort

Den ursprungliga GCN-arkitekturen i grafikkretsen Tahiti var utrustad med dubbla ACE-enheter som vardera kan utföra 8 beräkningsköer, för en total kapacitet om 16 samtida köer. Grafikkortet som bygger på den senare kretsen Hawaii ökade detta signifikant till 8 ACE-enheter och 64 beräkningsköer.

Med såväl Fiji som Polaris 10 och Polaris 11 skalade AMD istället ned antalet ACE-enheter till 4 stycken, men lade till 2 schemaläggare som tillsammans ska erbjuda motsvarande kapacitet som Hawaii men med större flexibilitet. Tanken är att beräkningsköer virtualiseras och att schemaläggarna sedan kan hantera ett obegränsat antal av dessa mellan ACE-enheterna.

Sonys samarbete med AMD ledde till att Playstation 4 fick 8 ACE-enheter, istället för 2 stycken som var aktuellt för den generationens grafikkort. Vid introduktion var det få som insåg vilka fördelar detta kunde medföra, inom såväl virtuell verklighet som nya utvecklargränssnitt.

När DirectX 12 introducerades med Windows 10 under sommaren 2015 markerade det ytterligare en plattform för AMD som levererar en liknande GCN-baserad systemkrets till Microsofts spelkonsol Xbox One, vars DirectX 11-derivat lånade in många av nyheterna i DirectX 12. Microsofts dito har 2 stycken ACE-enheter.

När Ashes of the Singularity, det första spelet skräddarsytt för nästa generations gränssnitt som Mantle och DirectX 12, lanserades hade det utvecklats i samarbete med AMD och resultaten reflekterades i just detta. Nvidias grafikkort ur Geforce GTX 900-serien fick se sig besegrade av betydligt enklare och billigare kort från AMD:s läger. Anledningen var att Nvidias Maxwell-arkitektur inte var byggd för att kunna utföra beräkningar asynkront.

Effektivare köhantering

På teknisk nivå är Asynchronous Compute en arkitektonisk funktion som behöver stöd i hårdvaran, men också i mjukvaran och gränssnitt som DirectX eller Vulkan. Tekniken går ut på att köer av beräkningar som kan utföras på grafikkretsen kan exekveras asynkront och parallellt med varandra, till skillnad från traditionella modeller där beräkningsköer utförs när föregående kö slutförts (synkront).

GPU_pipeline_asynch.jpg

Utvecklare kan sedan via gränssnitt skicka olika typer av beräkningsköer till grafikkretsen. I DirectX 12 kan köerna bestå av tre huvudsakliga uppgifter; grafikjobb för rendering, compute för beräkningar av saker som ljussättning och fysik, samt kopieringsjobb för överföring av data. Beräkningar i en kö måste exekveras seriellt, men olika köer kan exekveras parallellt och därmed också de beräkningar som ingår i dessa köer.

När beräkningar i en kö slutförts kan beräkningar från en annan "klämmas in" när det finns en lucka, och på så sätt maximeras utnyttjandet av beräkningsenheterna i grafikkretsen. Att AMD:s varit utrustade med dedikerade enheter för hantering av parallell köhantering har inneburit utvecklare kunnat utnyttja hårdvaran på ett sätt som helt enkelt inte är möjligt med traditionell köhantering, som tvingas förlita sig på så kallad kontextbyten.