Preview: ARM's nieuwe CPU- en GPU-architecturen

Cortex-A55, -A75 & Mali-G72: Sneller, efficiënter en klaar voor de toekomst

Door


Cortex-A55: Efficiëntie

ARM’s Cortex-A53 is sinds de introductie van ARMv8 een van de succesvolste ontwerpen van het bedrijf geweest. De processorkern is in honderden miljoenen apparaten terecht gekomen, waaronder auto’s, TV’s, netwerkapparatuur en zelfs satellieten. In totaal zijn er 1,7 miljard A53-cores verscheept. Dit succes moet nu voortgezet worden met Cortex-A55, de volgende generatie mid-range core.

Voordat we ingaan op de architecturale veranderingen, eerst wat getallen. Cortex-A55 blijft gericht op redelijke performance bij een zo laag mogelijk verbruik en is dus geen alternatief voor high-performance cores zoals de A72 en A73. Toch zijn er mooie verbeteringen geboekt voor een ontwerp dat al behoorlijk geoptimaliseerd is. Integer-performance, het rekenen met hele getallen, is 18% sneller, terwijl floating point, het bewerken van kommagetallen, 38% sneller gaat. In benchmarks leidt dit tot 14% hogere prestaties in Google’s Octane v2 en 21% meer in Geekbench v4. De core is zo'n 3% meer stroom gaan verbruiken, maar door de hogere prestaties opereert hij alsnog rond de 15% efficiënter. Deze verbeteringen zijn puur architecturaal, dus zonder proces- of frequentieaanpassingen.

Een belangrijk punt bij alle ARM-ontwerpen is dat niet alle cores gelijk zijn, zelfs al hebben ze dezelfde naam. Een A55-kern kan bijvoorbeeld op heel veel manieren geïmplementeerd worden. Verschillende hoeveelheden L2- en L3-cache, wel of geen floating point- en wel of geen cryptografie-eenheid behoren allemaal tot de opties. Zo zijn er bij de A55-core meer dan 3000 verschillende configuraties, net zoals er bij de A75-CPU en Mali-G72-GPU veel verschillende implementaties mogelijk zijn.

Core A32 A35 A53 A55 A57 A72 A73 A75
Cores per cluster 4 4 4 8 4 4 4 8
Pipeline length 8 8 8 8 15-19 15-19 11-15 ?
Decode width 2 2 3 3 3 3 2 3
Structuur In order In order In order In order Out of order Out of order Out of Order Out of Order
Max. L1-cache (I/D) 32 / 32 kB 64 / 64 kB 64 / 64 kB 64 / 64 kB 48 / 32 kB 48 / 32 kB 64 / 64 kB 64 / 64 kB
Max. L2-cache - - - 256 kB - - - 512 kB
Max. Cluster cache 1 MB 1 MB 2 MB 4MB 2 MB 4 MB 8 MB 4MB
Verschillende CPU's in cluster Nee Nee Nee Ja Nee Nee Nee Ja

Globaal gezien verschillen Cortex-A53 en -A55 niet veel van elkaar. Beide zijn in-order CPU’s: ze verwerken instructies in de volgorde waarop ze binnenkomen. Een nadeel daarvan is dat als de data niet in de cache te vinden is, de processor soms erg lang moet wachten tot deze data uit een hogere cache of het werkgeheugen is gehaald. In-order CPU’s zijn relatief simpel, compact en efficiënt, zolang ze maar hun data op tijd krijgen.

De lengte van de pipeline, het aantal stapjes wat een instructie moet doorlopen voordat hij verwerkt is, is ook gelijk gebleven. Met een 8-stage pipeline is hij vrij kort en in lijn met andere in-order ontwerpen. Een korte pipeline heeft als voordeel dat als twee opvolgende instructies dezelfde data moeten bewerken er minder lang op elkaar gewacht hoeft te worden.

 

Wat wel veranderd is, is hoe de core aan zijn data komt. Je kan een processor nog zo veel rekeneenheden geven, maar als deze de benodigde data niet op tijd krijgen kunnen ze nog altijd niets doen en worden klokcycli verspild. Een van de belangrijkste aspecten bij moderne processors is het op tijd krijgen van de juiste data bij de juiste core. Deze data wordt opgeslagen in caches, waarvan moderne processors meerdere lagen bevatten.

Cortex-A53 had een kleine, maar zeer snelle L1-cache van 64 kB. De grotere L2-cache van maximaal 2 MB was gedeeld met alle cores van het cluster en daarbij verder van de core geplaatst. Om iets uit de L1-cache te halen vereiste 3 klokcycli, terwijl de L2-cache 13 cycli nodig had. Omdat we het hier over in-order CPU’s hebben, kunnen ze al die klokcycli geen andere instructies uitvoeren.

Cortex-A55 is dit anders aangepakt: deze beschikt over een eigen L2-cache. Elke core heeft naast 64 kB L1-cache ook nog een eigen, ongedeelde, L2-cache van maximaal 256 kB. Daarbij kost het nu maar 2 klokcycli om data uit L1 te halen en slechts 6 voor de L2-cache, minder dan de helft. Er is ook nog steeds een gedeelde cache tussen alle cores van het cluster aanwezig, die nu dus een L3-cache is geworden. Deze is maximaal 4 MB groot en heeft een latency van 21 cycli. Dat is dus het compromis wat gemaakt is: de gedeelde cache staat verder weg dan bij het oude ontwerp. De bandbreedte vanuit L3 is dan wel weer 2 maal zo groot.

Mocht de juiste data dus niet op tijd in het register staan, dan kost het over het algemeen minder klokcycli om deze data uit een cache te halen. Om te zorgen dat zo vaak mogelijk de goede data in de caches staat, wordt een branch predictor gebruikt. Deze probeert te voorspellen welke code uitgevoerd gaat worden, zodat het alvast de benodigde data uit het werkgeheugen kan halen of van een hoger cache level naar een lagere cache kan plaatsen. Branch predictors zijn een van de elementen van processors waar nog steeds veel vooruitgang geboekt wordt.  De laatste jaren zien we de opkomst van kleine neurale netwerken om deze voorspellingen te doen. Onder andere AMD’s Zen-kernen gebruiken zo’n neuraal netwerk voor branch prediction en nu integreert ook ARM dit in haar cores. Verder is de branch predictor gefinetuned om precies gelijk te lopen met de rest van de rekenkern, zodat er geen enkele klokcyclus latency is en de branch predictor dus precies weet waar de rekenkern zich in de code bevindt en welke data het daarvoor gebruikt.

Om verdere bottlenecks uit het ontwerp te halen zijn de eenheden die data laden en opslaan uit elkaar getrokken. Waar Cortex-A53 een gezamenlijke load/store-pipeline had, is deze bij A55 gesplitst. Hierdoor kan er tegelijk data geladen en opgeslagen worden. In sommige gevallen kan dit tot flinke prestatieverbeteringen leiden.

Tot slot zijn er nog een aantal geavanceerde instructies toegevoegd. Net zoals we recent bij een aantal andere CPU- en GPU-ontwerpen hebben gezien, kunnen nu twee 16-bit floating point operaties uitgevoerd worden in plaats van een 32-bit FP-operatie. Dit is vooral geïmplementeerd voor het trainen van neurale netwerken; deze hebben niet de precisie nodig die 32-bits operaties bieden, maar kunnen wel meer performance gebruiken. Het splitsen van een 32-bits operatie in twee 16-bits operaties is dan een relatief makkelijke manier om performance te verdubbelen.


Dossier

Lees ook deze processor artikelen op Hardware.Info

Vond je deze review nuttig?

Lees dan voortaan onze uitgebreidste reviews als eerste én steun deze site, met een abonnement op Hardware.Info Magazine - nu ook alleen digitaal beschikbaar!

Hardware.Info is volledig onafhankelijk. Onze reviews zijn puur gebaseerd op objectieve testresultaten en onze eigen ervaring met de producten. Deze reviews kan je hier gratis lezen, maar dat is alleen mogelijk dankzij de steun van onze trouwe lezers. Met een abonnement op Hardware.Info Magazine steun je deze site en lees je de uitgebreidste 100% hardware reviews als eerste. Neem dus nu een abonnement, je hebt er al een voor 26,50 euro!

Neem nu een abonnement en steun Hardware.Info

*