Een paar weken geleden, ARM introduceerde de negende generatie van de reeks registers en instructies die worden gebruikt in processors met de ISA met dezelfde naam. ARMv9 is de naam waaronder de nieuwe versie van deze ISA is gedoopt, die in toekomstige SoC's voor PostPC-apparaten zal worden gebruikt. Wat is ARMv9 en wat is er nieuw aan eerdere versies, hoe zullen de toekomstige ARM-CPU's eruitzien?
Een ISA is niets meer dan de taal die door de verschillende processors wordt begrepen en geeft daarom aan wat de reeks enen en nullen betekenen in de code die ze uitvoeren. Het binaire bestand voor een x86 CPU heeft niet dezelfde betekenis als het binaire bestand voor bijvoorbeeld een ARM-CPU.
De vooruitgang van de technologie maakt het echter noodzakelijk om nieuwe instructies aan de ISA's toe te voegen, waardoor ze nieuwe functionaliteiten kunnen toevoegen om hun prestaties en veiligheid bij het verwerken van gegevens te verbeteren of om nieuwe uitdagingen aan te gaan die hen worden voorgelegd.
In dit artikel gaan we het hebben over de negende generatie van de ISA ARM, die na jaren gericht op CPU's en microcontrollers met een laag verbruik heeft besloten ambitieuzer te zijn en de markt te betreden die de hoogste prestaties vereist, die van datacenters en hoge prestaties computergebruik of HPC.
Schaalbare vectoruitbreidingen 2
Het Japanse Fujitsu creëerde voor zijn ARM-kern een reeks eigen extensies genaamd SVE, wat staat voor Scalable Vector Extensions. Uit de naam heb je misschien al geraden dat we het hebben over een reeks SIMD-instructies. Laten we niet vergeten dat in CPU's met ISA ARM al jaren de Neon-instructies worden gebruikt. Die zal worden vervangen door de SVE2-instructies in ARMv9.
SVE is gemaakt door Fujitsu voor zijn Fugaku-supercomputer, die gebruik maakt van zijn A64-FX-kernen. De intentie? Profiteer van het gegevensparallellisme dat vereist is voor wetenschappelijk computergebruik, waarbij getallen met hogere precisie worden gebruikt. Dit vertaalt zich in veel grotere SIMD-eenheden en dus meer bits.
Omdat het ARM's interesse is om hun cores naar de high-performance computermarkt en servers te brengen, hebben ze besloten om SVE te adopteren en samen te voegen met Neon om SVE2 te creëren. Het grootste voordeel dat SVE toevoegt aan Neon? Dit zijn maatonafhankelijke instructies, dus het is niet nodig om een versie van elke instructie te hebben voor verschillende formaten, zoals het geval is met AVX-instructies op x86.
Geheugengebieden in ARMv9
Een interessant concept dat de ISA ARMv9 aan de vergelijking toevoegt, is het concept van realms, dat erin bestaat een deel van de geheugenadressering op zich te nemen en ervoor te zorgen dat de code die erin wordt uitgevoerd geen invloed heeft op de rest van het systeem, daarom is het totaal geïsoleerd. Dat is ideaal voor de implementatie van virtuele machines waarbij het ene besturingssysteem tegelijkertijd met het andere op dezelfde CPU draait.
Normaal gesproken hebben CPU's verschillende privileges, maar met het realms-concept dat is toegevoegd in ARMv9 zal het mogelijk zijn om gemakkelijker virtuele machines te laten draaien op een CPU met ARM ISA, maar de voordelen hiervan zijn niet alleen beperkt tot virtuele machines, maar kan ook in specifieke toepassingen worden gebruikt.
Dus ARMv9 lijkt een uitbreiding te zijn op de ISA die meer is voorbereid op datacenters en andere typen computers waar virtualisatie en beveiliging veel belangrijker zijn dan andere functionaliteiten. Het is niet verrassend dat ARM een oorlog voert tegen Intel en AMD in de server-CPU-markt, waar x86-processors tot nu toe de markt domineerden.
Extensies voor geheugentags
Ze zijn niet nieuw voor ARMv9, maar eerder voor versie 8.5. Het nut ervan? Het is een mechanisme dat verantwoordelijk is voor het bijhouden van alle illegale geheugentoegangen door programma's. Een illegale toegang is niets meer dan een toegang tot een geheugenadres waartoe het programma geen toegang heeft. Wat is het nut hiervan? Omdat het dient om de zogenaamde bufferoverloop te voorkomen, een veelvoorkomend beveiligingsprobleem bij alle processors dat optreedt wanneer de hoeveelheid gekopieerde gegevens de geheugenreserve overschrijdt, waardoor onverwachte code naar aangrenzende geheugenadressen wordt geschreven.
Als de geheugenoverloop succesvol is, wordt de oorspronkelijke code vervangen door nieuwe in-memory code, die door de CPU wordt uitgevoerd zodra deze het geheugen bereikt. Het is dus belangrijk om dit te vermijden, vooral als we het hebben over datacenters die de neiging hebben om miljoenen gebruikers tegelijkertijd te bedienen en waar een bufferoverloop kan worden gebruikt om gecompromitteerde gebruikersgegevens te stelen.
De MTE maakt geen deel uit van de ISA zelf, maar is een mechanisme geïmplementeerd in de Northbridge van ARMv9-CPU's dat alle geheugentoegangen volgt en waarvan de functionaliteit is om op een transparante manier geheugenoverloop te voorkomen.
ARMv9 alleen voor datacenters en servers?
De nieuwigheden van de ISA ARMv9 die we in de vorige paragrafen hebben beschreven, hebben een uitgesproken specifiek karakter en hebben niets te maken met het gebruik in de klassieke apparaten waarin de ISA ARM meestal wordt gezien. Van allemaal roept het de SVE krachtig op, omdat een van de redenen waarom je meestal geen grote SIMD-eenheden in CPU's voor PostPC-apparaten ziet, het enorme energieverbruik is dat hun gebruik veronderstelt.
Op dit moment zijn de enige twee cores die ARM heeft aangekondigd twee van de Neoverse-familie. Enerzijds de NeoVerse V1 onder de codenaam “Zeus” en anderzijds de Neoverse N2 onder de codenaam “Perseus”. Dit zijn geen cores die je in een toekomstige smartphone gaat zien, maar in de datacenters en servers voor high-performance computing van bedrijven als Amazon AWS, Oracle, Tencent, Google, etc.
ARM heeft nog geen kernel aangekondigd voor PostPC-apparaten zoals smartphones en tablets. Hoewel we niet mogen vergeten dat het doel van ARM is om x86 in verschillende markten te verdringen, niet alleen op servers, maar ook op de pc. De aankoop door NVIDIA en zijn grote invloed op de pc-videogamemarkt kan de komst van gaming-pc's met ARM's en NVIDIA GPU's met zich meebrengen, hoewel het een toekomst is die veel steun nodig heeft van de ontwikkelaars van videogames en niet van NVIDIA-ARM zelf.