Mali-G77 GPU: Eerste met Valhall architectuur
Naast de Cortex-A77 cpu-core heeft ARM ook een nieuwe high-end gpu voor soc’s geïntroduceerd, de Mali-G77. Het is de opvolger van de Mali-G76 en puur op basis van de naamgeving lijkt ook dit een relatief beperkte optimalisatie van een bestaand product. Niet is minder waar: waar de voorgaande drie high-end ARM gpu’s (Mali-G71, -G72 en -G76) alle waren gebaseerd op de zogenaamde Bifrost architectuur, is de Mali-G77 de eerste gpu op basis van een geheel nieuwe architectuur, genaamd Valhall.
Om maar eens te beginnen met wat we van deze gpu mogen verwachten. Het is geen nieuws dat de gpu is smartphones steeds zwaardere workloads voor de kiezen krijgt: de resolutie van smartphone displays is de afgelopen jaren fors toegenomen; tegelijkertijd neemt de beeldkwaliteit van smartphonegames ook hand over hand toe en is de grafische kwaliteit van consoles van de vorige generatie in zicht. Het zijn niet alleen 3D-games die veel grafische rekenkracht vereisen: meer en meer apps maken gebruik van vormen van augmented reality en daarnaast zijn er steeds meer apps die de gpu inzetten voor vormen van machine learning ofwel kunstmatige intelligentie.
Sneller en zuiniger
ARM belooft dat de nieuwe Mali-G77 gemiddeld zo’n 40% sneller is dan voorloper Mali-G76, die we onder andere kennen van de Huawei P30 (Pro) en Samsung Galaxy S10(+). Voor machine learning zouden de prestaties gemiddeld zelfs met 60% omhoog gaan. Zoals we in de inleiding al schreven is prestatiewinst alleen niet genoeg voor ARM: deze moet altijd gepaard gaan met stappen op het vlak van efficiëntie en/of chip-oppervlak. Volgens de makers weet de G77 met hetzelfde energieverbruik zo’n 30% betere prestaties neer te zetten als de G76 en wanneer de prestaties per mm² chipoppervlak worden berekend is er ook een winst van zo’n 30%. Voor de duidelijkheid: beide met identiek productieprocedé. Beide zijn van extreem belang, aangezien soc-ontwikkelaars alsmede fabrikanten van uiteindelijke smartphones in de regel niet genegen zijn om een hoger stroombudget beschikbaar te stellen aan de gpu. Fabrikanten maken hun toestellen immers liever lichter en dunner, dan dat ze grotere accu’s moeten plaatsen om betere prestaties te kunnen bieden.
De opbouw van Valhall is duidelijk anders dan bij de voorlopers. Bij de Mali-G72 en -G76 bestond iedere core uit drie zogenaamde engines die semi-onafhankelijk instructies konden uitvoeren, maar periferie binnen de core moesten delen. Elk van die engines had vier (G72) respectievelijk acht (G76) rekenkernen met daarin een floating-point rekeneenheid. Bij de Valhall heeft ARM het concept van meerdere engines per core laten varen: binnen iedere core vinden we er slechts één, maar wel met twee clusters van elk 16 datapaden, 32 in totaal dus. Het totaal aantal rekeneenheden per core stijgt zo van 24 (3 x 8) bij de Mali-G76 naar 32 bij de Mali-G77.
De clusters van 16 datapaden werken zoals alle moderne GPU’s met zogenaamde warps, combinaties van identieke instructies die dezelfde taak uitvoeren op andere data. Zoals bekend zijn gpu’s geoptimaliseerd om relatief simpele taken met een hoge mate van parallelliteit snel uit voeren, bijvoorbeeld dezelfde soort berekening op vele pixels. Het hele idee van warps is daarop gestoeld.
De instructieset van Valhall is duidelijk anders dan bij de voorloper en “sluit meer aan bij moderne api’s”, waarbij ARM concreet doelt op Vulkan. Navraag leert ons dat Mali-G77 (nog) niet geschikt is voor DirectX, volgens ARM omdat Microsoft zich voor het Windows-op-ARM programma vooralsnog op slechts één vendor wil richten, te weten Qualcomm diens eigen Adreno gpu’s.
Bovenal is de nieuwe architectuur volgens ARM een stuk flexibeler. Bij Bifrost was het bijvoorbeeld nodig om bepaalde soorten instructies te combineren in zogenaamde tuples om de maximale prestaties te behalen. Waren er niet voldoende instructies van beide typen beschikbaar binnen een (game) workload, dan konden optimale prestaties niet worden behaald. Die restricties zijn er bij Valhall niet meer.
Een andere belangrijke aanpassing is dat ARM het aantal texture units per core heeft verhoogd van twee naar vier. Moderne mobiele games maken meer en meer gebruik van complexe textures en het verdubbelen van de prestaties op dit vlak was nodig om de core in evenwicht te houden, aldus ARM. Met slechts twee texture units zoals bij de Mali-G76 zouden deze relatief vaak de bottleneck voor prestaties gaan vormen, waardoor de execution units geregeld zonder werk zouden komen te zitten.