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

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

Door


Cortex-A75: High-performance 

Cortex-A55 is dus geoptimaliseerd voor code die bovenal efficiënt uitgevoerd moet worden. In sommige situaties is er echter behoefte aan veel single-threaded performance, bijvoorbeeld voor het renderen van verschillende lagen van een user-interface. Ook zijn er applicaties die simpelweg niet goed schalen over meerdere threads, of er niet voor zijn geoptimaliseerd. Voor deze gevallen heeft ARM een serie high-performance cores, waarvan de nieuwste de A75 is.

Laten we wederom beginnen met de getallen. Er zijn mooie verbeteringen geboekt, zo meldt ARM, met 22% vlottere integer-performance, 33% hogere floating point- en NEON-performance en 16% snellere geheugendoorvoer. Samen met een aantal andere optimalisaties, onder andere in de geheugenstructuur, resulteerde dit in 48% hogere Octane v2 en 34% hogere Geekbench v4 scores in vergelijking met die van het voorgaande Cortex-A73-ontwerp. Ook deze verbeteringen zijn puur architecturaal, dus zonder proces- of frequentie-aanpassingen.

De belangrijkste onderscheidende eigenschap aan ARM’s high-performance cores is dat het out-of-order ontwerpen zijn. In tegenstelling tot in-order kernen hoeven deze zich niet strikt aan de volgorde van instructies te houden. Als voor een instructie de data even niet beschikbaar is, kunnen andere instructies nog wel gewoon uitgevoerd worden. Belangrijke vereiste hiervoor is dat er moet worden bijgehouden welke data deze nieuwe instructies veranderen, en of dit geen conflict oplevert met de instructie die nog in de wachtrij is geplaatst.

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

Een groot deel van de verbeteringen die in de Cortex-A55 zijn doorgevoerd, zijn ook terug te vinden in de A75. Er is ook hier een eigen L2-cache aanwezig in plaats van een gedeelde; deze kan 512 kB groot zijn bij A75. De gedeelde cache is nu een L3-cache van maximaal 4 MB, de L1-cache is onveranderd met 64 kB voor data en eenzelfde hoeveelheid voor instructies, hoewel de bandbreedte naar de kern wel is verhoogd. Ook het A75-ontwerp heeft profijt van deze eigen L2-cache per core, de latency is van 19 klokcycli afgenomen naar slechts 8. Wederom is het compromis dat de clustercache iets verder weg is, nu 25 cycli i.p.v. 19.

Een andere, belangrijker verandering is dat ARM terug is gegaan naar een 3-wide core-ontwerp. Moderne superscalar processors kunnen meer dan één instructie per core tegelijk verwerken. Het maximale aantal instructies dat per cyclus kan worden verwerkt wordt vaak de width oftewel de breedte van een core genoemd, refererend aan de breedte van de pipeline. Hoe breder een processor wordt, hoe lastiger het is om alle data op tijd aan te voeren. Ook is het een uitdaging om interne data-conflicten te voorkomen, zeker omdat er ook nog out-of-order geopereerd mag worden.

De breedte van een ontwerp is vaak te herkennen aan de decoder. Dit is het onderdeel dat de binnengekomen instructies vertaalt naar machinecode waar de rekeneenheden mee overweg  kunnen. Dit is een van de meest efficiënte processen binnen een kern, met als gevolg dat hier zelden de bottleneck zit. Waar ARM na Cortex-A57 en -A72 met A73 voor een 2-wide decoder had gekozen, is het met A75 weer terug bij een decoder die drie instructies per cyclus kan decoderen.

Om de out-of-order mogelijkheid zo goed mogelijk te benutten is er een groot aantal rekeneenheden aanwezig. Twee voor load/store-operaties, twee voor NEON en floating point, twee voor integer en een voor branch-uitvoering. Mocht er een cache miss plaatsvinden en de data zich dus niet in de L1-cache bevinden, is er plaats om 12 integer, 8 load/store en 8 NEON/FP instructies op te slaan voordat er gewacht moet worden op de data voor de originele instructie. In vrijwel alle gevallen is als de data zich wel in de L2-cache bevond deze ondertussen al uitgevoerd en heeft de kern dus niet hoeven stilliggen. Als ook de L2-cache gemist wordt en er op zoek moet worden gegaan in L3 of zelfs het werkgeheugen, dan moet de processor wel even pauzeren.

De branch predictor is tevens verbeterd met dezelfde aanpassingen die we in de A55-kern zagen. De branch predictor is afgesteld zodat hij geen enkele klokcyclus achterloopt , en maakt ook gebruik van een neuraal netwerk.

Tot slot is er ondersteuning voor een aantal nieuwe instructies. Het is mogelijk om twee 16-bit floating point operaties uit te voeren in plaats van een 32-bit operatie, wat net als bij A55 de doorvoer verdubbeld. Daarnaast worden 8-bit dot-products nu als enkele instructie ondersteund, een matrix-operatie die voornamelijk nuttig is voor neurale netwerken.


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

*