Computex ARM preview: Wat zit er in de smartphones van 2020? Een eerste blik op de Cortex-A77 CPU en Mali-G77 GPU!

Inhoudsopgave
  1. 1. Inleiding
  2. 2. Cortex-A77: 20% sneller is de belofte
  3. 3. Cortex-A77 in detail
  4. 4. Mali-G77 GPU: Eerste met Valhall architectuur
  5. 5. Dieper in de G77
  6. 6. Video en display
  7. 7. Conclusie
  8. 8. Reacties

Inleiding

Computex is traditiegetrouw het moment dat ARM nieuwe cpu- en gpu-cores aankondigt die een jaar later gebruikt worden in diverse nieuwe high-end chips voor smartphones en andere (mobiele) apparaten. Dit jaar is dat niet anders: met de Cortex-A77 cpu-cores en Mali-G77 gpu-cores belooft ARM opnieuw significante prestatiewinsten van ruim 20%. In dit artikel doen we de eigenschappen van de nieuwe ontwerpen uit de doeken.

Precies een jaar geleden tijdens Computex introduceerde ARM de Cortex-A76 cpu-cores en Mali-G76 gpu-cores. De A76 heeft inmiddels zijn weg gevonden naar de Qualcomm Snapdragon 855 (gebruikt in onder meer de OnePlus 7 Pro en de Xiaomi Mi 9) en de HiSilicon Kirin 980 (gebruikt in onder meer de Huawei Mate 20 (Pro) en Huawei P30). De Mali-G76 wordt gebruikt in diezelfde HiSilion Kirin 980, maar bijvoorbeeld ook in de Samsung Exynos 9820, die we kennen van de Galaxy S10(+).


ARM’s high-end chip-onderdelen voor 2020: de Cortex-A77 cpu, Mali-G77 GPU en Mali-D77 display-controller.

Vandaag kondigt ARM alweer de opvolgers aan, de Cortex-A77 cpu en Mali-G77 gpu. Daarnaast introduceert het in de vorm van de Mali-D77 een nieuwe display-controller. Het zal wel weer even duren eer apparaten met deze technologie in de winkel liggen. Het ligt voor de hand dat de Cortex-A77 de basis zal vormen voor de opvolger van de Qualcomm Snapdragon 855, die vermoedelijk eind dit jaar aangekondigd zal worden. De nieuwe Mali-GPU zal vermoedelijk door Samsung en Huawei gebruikt gaan worden voor de chips voor hun toekomstige Galaxy S11 en P40 smartphones.

Traditiegetrouw belooft ARM weer flinke prestatiewinsten: de afgelopen jaren zijn we gewend geraakt aan double-digit groei van prestaties en ook deze keer wordt ons een 20% prestatietoename bij de cpu-cores beloofd. ARM geeft aan dat het in zes jaar tijd – van 2013 tot 2019 – een verviervoudiging van de prestaties van haar snelste cpu-cores heeft bewerkstelligd, iets waar we in de wereld van PC- en laptopprocessors alleen maar van kunnen dromen.

Dit is waarom ARM belangrijk is

Voor wie het nieuws rond ARM niet dagelijks volgt een korte uitleg over de rol van het bedrijf. De chips in smartphones, wearables, maar ook in veel andere apparaten spreken een andere “taal” (architectuur in jargon) dan de Intel en AMD processors die we kennen van onze laptops en desktops. Waar die gebaseerd zijn op de x86-architectuur, maken alle moderne smartphone processors en die van menig ander type apparaat gebruik van de ARM-architectuur, vernoemd naar het bedrijf dat deze architectuur ontwikkelt. ARM ontwikkelt niet alleen de instructieset, maar ontwerpt ook implementaties van cpu-cores die volgens de eigen architectuur werken. ARM’s implementaties (micro-architectuur) van de eigen architectuur zijn de Cortex cpu-cores.

Wat ARM niet doet, is het ontwerpen en/of produceren van uiteindelijke chips: het ontwerpt puur bouwblokken voor chips. De Cortex cpu-cores worden al dan niet gecombineerd met eigen gpu-cores (de Mali reeks) en andere technologie aan verschillende andere bedrijven gelicenseerd, die daarmee zogenaamde soc’s (system-on-a-chip) ontwerpen en (laten) produceren. Belangrijke afnemers van ARM cpu- en/of gpu-cores zijn Qualcomm, HiSilion (Huawei), Samsung en Mediatek. Daarnaast is het bij ARM mogelijk om een licentie op de architectuur te nemen en zélf een implementatie te ontwikkelen. Dat doet bijvoorbeeld Apple voor haar smartphone- en tablet-soc’s, maar tegenwoordig ook Samsung voor de snelste cores binnen hun nieuwste Exynos-chips.

Buiten de chips van Samsung en Apple maken alle smartphone en tablet soc’s gebruik van de ontwerpen van ARM. Wanneer ARM een nieuw core-ontwerp introduceert, is dat dus groot nieuws.

Cortex-A77: 20% sneller is de belofte

De Cortex-A76 van vorig jaar was een van de grootste stappen die cpu-ontwikkelaars van ARM de afgelopen jaren hebben bewerkstelligd. Het was een vrijwel volledig vernieuwde implementatie van de 64-bit ARMv8 architectuur, met een flinke prestatiewinst ten opzichte van voorloper Cortex-A75 tot gevolg. De nieuwe Cortex-A77 is in principe een doorontwikkeling van de A76, al geven we de nieuwe core met die omschrijving vermoedelijk wat te weinig eer. De beloofde 20% prestatiewinst, mocht die in de praktijk inderdaad zo hoog blijken te zijn, is immers alles behalve klein bier. Voor de duidelijkheid: die 20% ten opzichte van de A76 is met identieke klokfrequentie en een identiek productieprocedé.

Het verbeteren van een cpu-microarchitectuur is in de basis een iteratief proces van telkens een bottleneck opsporen, die oplossen en vervolgens bekijken wat de volgende bottleneck is. Zo kun je er bijvoorbeeld voor kiezen om het aantal rekeneenheden te verhogen, maar dan kan het bijvoorbeeld zijn dat bepaalde datapaden binnen een processor niet toereikend zijn om instructies of data snel genoeg tussen de verschillende chiponderdelen te verplaatsen. Zijn alle datapaden verbreed of versneld, dan zou het weer kunnen dat juist de onderdelen die instructies of data moeten ophalen uit het geheugen moeten worden verbeterd.

Chipoppervlak en stroomverbruik zijn heilig

In principe zou je kunnen denken dat het sneller maken van een cpu-microarchitectuur vrij simpel kan door simpelweg “van alles meer” te implementeren. In theorie is dat natuurlijk ook zo, maar in de praktijk zijn er twee beperkingen die juist voor ARM heilig zijn: chipoppervlak en stroomverbruik. Hoe groter een chip, hoe duurder deze is om de produceren en hoe lastiger deze is om te gebruiken in kleine, mobiele devices. En dat het beperken van stroomverbruik bij architecturen die primair bedoeld zijn voor mobiele toepassingen van extreem belang is, vergt natuurlijk geen verdere uitleg. ARM gebruikt zeer strikte marges. De exacte percentages wil men niet prijs geven, maar je mag er bijvoorbeeld van uitgaan dat een aanpassing die x % procent prestatiewinst oplevert, maximaal bijvoorbeeld x/4 % extra stroomverbruik kost. De heilige graal is natuurlijk het bedenken van optimalisaties die een microarchitectuur tegelijkertijd sneller én zuiniger maken.

Terug naar de A77. Zoals geschreven is de cpu-core gebaseerd op de Cortex-A76. Net als deze is de A77 gebaseerd op versie 8.2 van de ARM-architectuur en geschikt voor zowel 32-bit (AArch32) als 64-bit (AArch64) software. Zoals bekend kunnen ARM’s snelle cores binnen een SoC gecombineerd worden met langzamere, maar ook zuinigere cores in zogenaamde big.LITTLE danwel DynamiQ configuraties. ARM heeft voor komend jaar geen nieuwe “kleine” core op de rol, wat betekent dat de Cortex-A76 net als voorlopers A75 en A73 gecombineerd kan worden met Cortex-A55 kernen. Net als bij de A76 is het aan de uiteindelijke SoC-ontwikkelaar om te kiezen hoeveel cachegeheugen de cores tot hun beschikking krijgen. Voor L2-cache kan er gekozen worden tussen 256 kB of 512 kB en de door meerdere cores gedeelde L3-cache kan variëren van 1 MB tot 4 MB.

De A77 is op “honderden” plekken verbeterd ten opzichte van de A76, maar een aantal zaken springt eruit. Zo heeft ARM in de zogenaamde front-end van de cpu voor het eerst een macro-op cache toegevoegd, een onderdeel waarin gedecodeerde instructies opgeslagen worden voor het geval dat ze later nog een keer gebruikt worden. De pipeline van de processor heeft ARM verder verbreed, zodat er iedere klokslag zes in plaats van vier macro-ops van het ene naar het volgende onderdeel van de chip kunnen gaan. Verder is het aantal instructies waarvan de micro-architectuur de volgorde kan omwisselen om deze geoptimaliseerd uit te voeren verder verhoogd. Bij de execution units, de uiteindelijke onderdelen waar daadwerkelijke berekeningen worden uitgevoerd, zijn er twee toegevoegd.

Is dit voor jou Chinees? Op de volgende pagina bespreken we deze verbeteringen in detail.

Cortex-A77 in detail

Als er één belangrijk adagium is om processors zo snel en efficiënt mogelijk te krijgen, dan is het ervoor zorgen dat alle chip-onderdelen op ieder moment nuttig werk kunnen verrichten. Dat is makkelijker gezegd dan gedaan. Zo heeft een processor bijvoorbeeld meerdere execution units, onderdelen die daadwerkelijk berekeningen kunnen uitvoeren, die elk slechts een beperkt aantal taken kunnen uitvoeren.

Zo zijn er specifieke execution units voor berekeningen met integers (gehele getallen), berekeningen met floating point getallen (getallen met komma) en voor instructies die met geheugen van doen hebben. De truc is ervoor zorgen dat deze execution units altijd bezig zijn. Mocht een programma op een bepaald moment echter niet voldoende variëteit aan instructies hebben of mochten de instructies die op dit moment uitgevoerd moeten worden wachten op data uit het geheugen, dan zijn er twee belangrijke trucs die moderne processors toepassen om toch bezig te blijven. Allereerst worden instructies niet noodzakelijkerwijs in de oorspronkelijke volgorde uitgevoerd: out of order execution in jargon. Om er maar een analogie bij te pakken: een moderne processor zou de Ikea-handleiding voor het in elkaar zetten van een dressoir erbij pakken en daarna zélf de optimale volgorde van alle handelingen bepalen. Wat een processor ook kan doen, is alvast vooruit werken: is er even geen werk dat nu direct moet gebeuren, dan bekijkt een processor welke instructies voor later klaar staan.

De uitdagingen van vooruitwerken

Vooruitwerken brengt echter weer een extra uitdaging mee. Software heeft namelijk vertakkingen: op basis van bepaalde zaken (de uitkomst van een berekening, de waarde van bepaalde data, etc.) kan een reeks instructies ofwel op de ene manier ofwel op de andere manier verder gaan. Wanneer een processor vooruit werkt en bij zo’n vertakking (een branch in jargon) uitkomt, moet gegokt worden welke vertakking vermoedelijk de juiste is, branch prediction in jargon. Een goede voorspelling is cruciaal: mocht uiteindelijk blijken dat de verkeerde bessissing is genomen, dan kan het zijn dat allerhande instructies voor niets zijn uitgevoerd: zonde van de energie, maar bovenal een flinke vertraging, want op zo’n moment moeten alsnog halsoverkop de juiste instructies uit het geheugen worden opgehaald en door de hele pipeline geloodst worden. Geen wonder dat het verbeteren van de branch predictor iets is waarover we steevast horen bij iedere nieuwe microarchitectuur, niet alleen bij ARM, maar ook bij Intel, AMD en anderen. De branch predictor is misschien wel het belangrijkste ingrediënt van de secret sauce van chip-ontwikkelaars, vandaar dat men nooit prijs wil geven hoe deze precies werkt en wat de gemiddelde hit-rate in de praktijk is. Wat ARM ons wel laat weten, is dat men de snelheid waarop de branch predictor data uit de cache kan halen heeft verdubbeld naar 64 bytes per klokslag, waardoor deze sneller kan werken. Daarnaast is het buffergeheugen van de branchpredictor verhoogd.

Het nut van de macro-op cache

Verderop in de front-end vinden we één van de opvallendste vernieuwingen binnen de Cortex-A77: de komst van een macro-op cache. Even een beetje uitleg: een processor werkt volgens een bepaalde taal ofwel architectuur (ARMv8 in het geval van de cores waar we het nu over hebben) en die architectuur bevat allerhande instructies die door de processor uitgevoerd kunnen worden. In het geval van ARM zijn dat er al 1000’en dat valt nog in het niet bij het aantal x86-instructies die Intel en AMD processors kunnen verwerken. Een aantal van die instructies zijn echter te groot en complex om in één keer door de processor verwerkt te worden. Vandaar de zogenaamde decoder binnen de processor-pipeline deze instructies verwerkt en waar nodig opdeelt tot één of meerdere macrop-ops, die door de rest van cpu verwerkt kunnen worden. Nu is verhouding instructies tot macro-ops bij ARM zeer beperkt; gemiddeld wordt iedere instructie 1,1 à 1,2 macro-ops, maar desalniettemin is dit een belangrijke stap. In de nieuwe macro-op cache kunnen instructies en hun macro-op afgeleiden opgeslagen worden, zodat wanneer dezelfde instructie nogmaals gebruikt wordt deze niet opnieuw gedecodeerd hoeft te worden. De nieuwe cache heeft ruimte voor zo’n 1500 macro-ops en behaalt daarmee volgens de ontwikkelaars een hit-rate van zo’n 85%. Het voordeel van een hit is dus dat een gedeelte van de pipeline overgeslagen kan worden en een bijkomende voordeel is dan ook dat wanneer de branch-predictor een verkeerde beslissing neemt, de gemiddelde penalty ook lager is, aangezien in de juiste branch vaak dezelfde instructies worden gebruikt, maar dan met andere data. 

Verder heeft ARM in de front-end een dynamische code optimizer opgenomen, die bijdraagt aan het in slimmere volgorde zetten van instructies. Hoe deze precies werkt wil men niet kwijt, wel dat deze significant bijdraagt aan de prestatiewinst én dat deze in toekomstige Cortex-varianten vermoedelijk een nóg belangrijkere rol zal gaan spelen.

In het middelste gedeelte van de processor heeft ARM de datapaden aangepast, zodat er per klokslag niet vier, maar zes instructies kunnen voortvloeien van de ene stap in het proces naar de volgende. Dat is niet zonder reden: zoals we verderop zullen zien is het aantal execution units verhoogd en om ervoor te zorgen dat de weg richting de execution units niet dichtslibt, moest deze verbreed worden. Daarnaast heeft men het zogenaamde out-of-order window vergroot met 25%, tot 160 instructies. Zoals we al schreven optimaliseren moderne processors de volgorde van binnenkomende instructies om deze sneller en efficiënter uit te kunnen voeren. Om maar bij de analogie van zojuist te blijven: door dit window te vergroten, kan de Cortex-A77 in de spreekwoordelijke Ikea-catalogus de stappen van 160 pagina’s vooruit lezen en in slimmere volgorde doen.

In het laatste stuk van de pipeline vinden we de exection units, de onderdelen van de processor waar daadwerkelijk instructies worden uitgevoerd. In het integer gedeelte heeft ARM twee rekenaanheden aan de core toegevoegd. Allereerst is een vierde ALU (arithmetic logic unit), ofwel een rekenunit voor gehele getallen, toegevoegd. Deze is geschikt voor relatief simpele integer-berekeningen die in één of twee klokslagen verwerkt kunnen worden. Daarnaast is er een twee branch unit geplaatst, die vertakkingen in programmacode kan verwerken.

Minstens net zo belangrijk is dat ARM een tweede AES-pipeline heeft toegevoegd. AES is het meest gebruikte encryptieprotocol ter wereld. Het is bijvoorbeeld de basis voor bijvoorbeeld https, maar wordt ook op ontelbare andere plekken gebruikt. In de nieuwste versies van Android wordt binnen het OS zo’n beetje alle data versleuteld en dus is de afgelopen jaren de hoeveelheid AES-rekenwerk die cpu-cores te verwerken krijgen gigantisch toegenomen. De laatste generaties Cortex-kernen hadden al een specieke, hardwarematige AES-rekeneenheid en door nu een tweede toe te voegen kan de snelheid waarop data versleuteld of ontsleuteld kan worden in theorie verdubbelen.

Ten slotte heeft ARM om de core gebalanceerd te houden ook de communicatiewegen tussen de execution cores en de caches (en daarmee het geheugen) versneld. Zo hebben de load en store units (die specifiek bedoeld zijn om data van of naar het geheugen te schrijven) nu eigen verbindingen met de L1-cache, waar die tot aan de Cortex-A76 gedeeld werden met een datapad vanaf de ALU’s. Bovenal heeft ARM de prefetching verbeterd, de technologie die voorspelt welke data uit het geheugen op korte termijn benodigd is door de CPU en die data alvast ophaalt naar het cache geheugen. Net als bij branch predictors geldt dat processorfabrikanten nooit exact vertellen hoe hun prefetchers werken, maar het is evident dat hoe beter deze geoptimaliseerd worden, hoe hoger de algehele processorprestaties kunnen zijn.

Waar leidt dit nu allemaal toe? Zoals al geschreven belooft ARM een gemiddelde prestatietoename van zo’n 20% bij identieke klokfrequentie en identiek productieprocedé. Onderstaande slide moet nog iets meer context geven. Hierbij geeft ARM de te verwachten prestatiewinst bij een aantal low-level cpu-benchmarks weer. We zien dat voornamelijk bij floating point workloads de te verwachten prestatiewinst het grootst is, tot of zelfs over de 30%. Bij interer workloads ligt het rond de 20%. Wanneer een benchmark wat meer leunt op geheugenbandbreedte zijn de te verwachten winsten iets lager.

ARM stelt dat het met deze prestatiewinst nu op een vergelijkbare of soms zelfs hogere IPC zit dan Intel bij haar nieuwste generatie processors.

Laat nogmaals gezegd zijn: double digit IPC-prestatiewinsten binnen één jaar bij een microarchitectuur die in de basis een optimalisatie is van de vorige, is iets waar we in de desktop- en laptopwereld alleen maar van kunnen dromen. Over die wereld gesproken: tussen neus en lippen door meldde ARM dat het met deze prestatiewinst nu op een vergelijkbare of soms zelfs hogere IPC zit dan Intel bij haar nieuwste generatie processors. Nu is daar voldoende op af te dingen – algehele systeemprestaties zijn van veel meer afhankelijk dan de gemiddelde IPC van de processor – maar het geeft wel aan dat ARM ondanks de slechts zeer beperkte successen tot nu toe (understatement) nog steeds vertrouwen heeft om met Intel te kunnen gaan concurreren in de markt voor laptops.

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.

Dieper in de G77

Duiken we iets dieper in de architectuur, dan zien we dat de front-end, het gedeelte van de gpu waar instructies binnen komen en voor verwerking worden voorbereid, in totaal 1024 threads in het vizier kan houden en maximaal 64 warps kan klaarzetten voor de processing units. Die zijn op hun beurt zoals geschreven dubbel uitgevoerd en werken beide met 16 datapaden en kunnen dus elk op ieder moment dezelfde instructie op 16 verschillende stuks data uitvoeren.

De processing unit bevat in de basis drie onderdelen, een floating point rekeneenheid (FMA), een convert unit en een special fuction unit. Die eerste is waar het écht om gaat. Dankzij de 16 datapaden kan deze per klokslag 16 single-precision (32-bit) berekeningen uitvoeren. Het is verder ook mogelijk om per klokslag 32 half-precision (16-bit floating point) of zelfs 64 8-bit integer berekeningen uit te voeren. Dat laatste is van belang voor machine learning en AI workloads, die veelal van integers gebruikt maken.

Met de twee processing units per core komen we zo op in totaal 32 FP32, 64 FP16 of 128 Int8 berekeningen per core per klokslag. Dat is in alle gevallen aanzienlijk meer dan bij de Mali-G76. Belangrijk om hierbij in het achterhoofd te houden is dat de een G77 core qua afmetingen vrijwel niet verschilt van zijn voorloper. De “prestaties per mm²” nemen dus aanzienlijk toe.

Wat we bovenaan deze pagina al schreven is dat ARM per core het aantal texture units heeft verdubbeld van twee naar vier, want de snelheid waarop texture data op 3D-objecten kan worden geplakt is ook verdubbeld. De aanpassing is nodig omdat mobiele games steeds meer en grotere textures gebruiken, maar vooral ook om te zorgen dat dit onderdeel van de gpu niet de bottleneck wordt nu de snelheid van de shadercores is verhoogd. Met de nieuwe texture units kunnen er elke klokslag vier bilineair gefilterde texels of twee trilineair gefilterde textures verwerkt worden.

Ten slotte nog kort over machine learning. De meest AI-workloads zijn onderliggende matrix multiply berekeningen. Doordat een Mali-G77 kern 33% meer floating point units heeft dan een Mali-G76, is er in theorie sowieso al een presentatiewinst van 33% voor dergelijke taken. Daar komt bij dat de Int8-instructies versneld zijn én een snellere cache is, wat maakt dat onder de streep de prestaties bij machine learning workloads zelfs ruim 50% is aldus de ontwikkelaars.

Video en display

Waar ARM vorig jaar ook een nieuwe video-decoder, de Mali-V76, introduceerde, is daar nog geen opvolger voor aangekondigd. ARM kon of wilde ons ook nog niet zeggen of en wanneer er een opvolger te verwachten valt. Op zich is die V76 nog helemaal bij de tijd: H.264, H.265, VP9, 10-bit, hdr, en zo verder. Wat we echter vorig jaar ook a schreven is dat ondersteuning voor de open-source AV1 codec niet gek zou zijn. Daar moeten we dus iets langer op wachten.

Een bouwblok dat wél is aangepakt is de ARM’s display engine, een onderdeel dat het scherm van smartphones of andere devices aanstuurt. De Mali-D77 is de opvolger van de Mali-D71, maar als we wat dieper in de materie duiken dan mogen we eigenlijk concluderen dat de D77 niets meer en niets minder is dan een D71 met betere ondersteuning voor VR-toepassingen. Voor devices waar VR geen rol speelt, denk aan tablets of televisies, raadt ARM dan ook voor 2020 aan om gewoon de D71 te blijven gebruiken.

De D77 is geoptimaliseerd voor 120 fps VR-toepassingen en neemt sommige trucs over van de gpu. Zo is het nu de display unit die lenscorrectie kan toepassen, correctie voor chromatische aberratie kan doen én zogenaamde asynchronous timewarps kan toepassen. Hierbij wordt een bestaand frame verplaatst in de virtuele ruimte op basis van de meest recente input van de bewegingssensors wanneer er niet op tijd een nieuw frame berekend kan worden. Dergelijke timewarps zijn essentieel om bij VR beelden altijd vloeiend te houden en motion sickness tegen te gaan. Door deze taak over te hevelen van de gpu naar de display controller ,wordt er energie bespaard en kan de rekenkracht van de gpu puur ingezet worden voor het daadwerkelijk berekenen van nieuwe frames. Het haalt volgens ARM een belasting van meer dan 15% weg bij de gpu en zorgt voor meer dan 180 mW energiebesparing.

Het ontwerpen van chips is een proces dat minimaal een jaar of drie in beslag neemt. Drie jaar geleden was de hele markt er nog van overtuigd dat VR the next big thing zou worden, vermoedelijk de reden waarom ARM bij de ontwikkeling van de D77 dit gebruiksmodel in de punt zette. Inmiddels weten we dat de interesse vanuit de consument voor VR bijna tot het vriespunt gedaald is. SoC fabrikanten zullen vermoedelijk dus niet heel warm lopen voor de verbeteringen in de D77 ten opzichte van de bestaande D71 en mocht de D77 ook maar iets groter, duurder en/of energiebehoeftiger zijn, zou het ons niet verbazen dat ook in de volgende generatie high-end smartphones SoC’s vaker voor een D71 dan voor een D77 gekozen gaat worden.

Wanneer we ARM het dilemma voorleggen, geeft men aan er nog altijd vertrouwen in te hebben dat VR gaat doorbreken zodra de technologie beter én goedkoper wordt. Waarvan akte.

Conclusie

ARM beloofde ons vorig jenaar de komende jaren steevast gpu-prestatiewinsten van meer dan 10% te zullen leveren. Als de uiteindelijke benchmarks van de Cortex-A77 overeen komen met wat ARM deze week presenteert, vult men die belofte in 2020 inderdaad ruimschoots in. De Cortex-A77 zal vermoedelijk de basis gaan vorm van menig high-end Android smartphone volgend jaar, maar daarnaast ook gaandeweg zijn weg vinden naar andere devices. De grote stappen die ARM maakt, zorgen ervoor dat de architectuur ook meer en meer geschikt wordt voor laptops, al blijkt dat vooralsnog een markt die ARM niet weet te bestormen. ARM en diens partner Qualcomm zijn echter nog steeds vastberaden om van hun Windows laptops een succes te gaan maken.

Was het vorig jaar het cpu-team dat de grootste veranderingen introduceerde, komt dit jaar het belangrijke nieuws van het gpu-team. De Mali-G77 is de eerste GPU gebaseerd op de nieuwe Valhall architectuur. De te verwachten prestatiewinst van zo’n 40% ten opzichte van voorloper G76 is een gigantische stap en voor de komende jaren heeft ARM naar eigen zeggen nog voldoende mogelijkheden om de architectuur verder te optimaliseren.

Dat ARM dit jaar geen nieuw video-bouwblok introduceert is jammer, maar geen ramp. De bestaande Mali-V76 biedt eigenlijk alles wat je je kunt wensen, behalve ondersteuning voor de AV1-codec, maar de adoptie daarvan loopt sowieso niet bepaald snel, ook niet bij andere ontwikkelaars van video-engines als Qualcomm, Nvidia, AMD en Intel. De nieuwe display engine maakt eigenlijk de minste indruk; het is fijn dat ARM investeert om VR beter te maken, maar de interesse van het grote publiek is inmiddels verdwenen.

0