ARMv9, set di registri e istruzioni per CPU non x86

Poche settimane fa, ARM ha introdotto la nona generazione dell'insieme di registri e istruzioni utilizzati nei processori con l'omonimo ISA. ARMv9 è il nome con cui è stata battezzata la nuova versione di questo ISA, che verrà utilizzato nei futuri SoC per dispositivi PostPC. Che cos'è ARMv9 e quali sono le novità rispetto alle versioni precedenti, come saranno le future CPU ARM?

Un ISA non è altro che il linguaggio compreso dai diversi processori e quindi contrassegna cosa significano l'insieme di uno e zero nel codice che eseguono. Il binario per un x86 CPU non ha lo stesso significato del binario per una CPU ARM, ad esempio.

ARMv9

Tuttavia, il progresso della tecnologia rende necessario aggiungere nuove istruzioni agli ISA, il che dà loro la possibilità di aggiungere nuove funzionalità per aumentare le prestazioni, la sicurezza durante l'elaborazione dei dati o per affrontare le nuove sfide che si presentano loro.

In questo articolo parleremo della nona generazione dell'ISA ARM, che dopo anni puntati su CPU e microcontrollori a basso consumo hanno deciso di essere più ambiziosi ed entrare nel mercato che richiede le massime prestazioni, quello dei data center e delle alte prestazioni informatica o HPC.

Estensioni vettoriali scalabili 2

SVE ARMv9

La giapponese Fujitsu ha creato per il suo core ARM una serie di estensioni proprietarie chiamate SVE, che sta per Scalable Vector Extensions. Dal nome avrete intuito che si tratta di un insieme di istruzioni SIMD. Non dimentichiamo che nelle CPU con ISA ARM da anni si usano le istruzioni Neon. Che sarà sostituito dalle istruzioni SVE2 in ARMv9.

SVE è stato creato da Fujitsu per il suo supercomputer Fugaku, che utilizza i suoi core A64-FX. L'intenzione? Approfitta del parallelismo dei dati richiesto dal calcolo scientifico, che utilizza numeri di precisione più elevati. Questo si traduce in unità SIMD molto più grandi e quindi più bit.

Poiché l'interesse di ARM è quello di portare i propri core nel mercato e nei server dei computer ad alte prestazioni, hanno deciso di adottare SVE e fonderlo con Neon per creare SVE2. Il più grande vantaggio che SVE aggiunge a Neon? Queste sono istruzioni indipendenti dalle dimensioni, quindi non è necessario avere una versione di ciascuna istruzione per dimensioni diverse come nel caso delle istruzioni AVX su x86.

Regni di memoria in ARMv9

reinos ARMv9

Un concetto interessante che l'ISA ARMv9 aggiunge all'equazione è il concetto di realms, che consiste nel poter prendere parte all'indirizzamento della memoria e fare in modo che il codice che viene eseguito in essa non influenzi il resto del sistema, quindi è totalmente isolato. Che è l'ideale per l'implementazione di macchine virtuali in cui un sistema operativo viene eseguito contemporaneamente a un altro sulla stessa CPU.

Normalmente le CPU hanno diversi livelli di privilegio, ma con il concetto di realm che è stato aggiunto in ARMv9 sarà possibile eseguire più facilmente macchine virtuali in esecuzione su una CPU con ARM ISA, ma i vantaggi di questo non sono solo limitati alle macchine virtuali, ma può essere utilizzato anche in applicazioni specifiche.

Quindi ARMv9 sembra essere un'estensione dell'ISA più preparata per data center e altri tipi di computer in cui la virtualizzazione e la sicurezza sono molto più importanti di altre funzionalità. Non sorprende che ARM stia facendo una guerra contro Intel ed AMD nel mercato delle CPU per server, dove i processori x86 hanno dominato il mercato fino ad ora.

Estensioni tag memoria

Estensioni tag memoria ARM

Non sono nuovi ad ARMv9, ma piuttosto alla versione 8.5. La sua utilità? È un meccanismo incaricato di tenere traccia di tutti gli accessi illegali alla memoria effettuati dai programmi. Un accesso illegale non è altro che un accesso a un indirizzo di memoria a cui il programma non ha il permesso di accedere. Qual è l'utilità di questo? Poiché serve ad evitare il cosiddetto buffer overflow, un problema di sicurezza comune a tutti i processori che si verifica quando la quantità di dati copiati supera la riserva di memoria, scrivendo codice imprevisto negli indirizzi di memoria adiacenti.

Se l'overflow di memoria ha esito positivo, il codice originale verrà sostituito da un nuovo codice in memoria, che verrà eseguito dalla CPU non appena raggiunge la memoria. Quindi è importante evitarlo, soprattutto se parliamo di data center che tendono a servire milioni di utenti contemporaneamente e dove un buffer overflow può essere utilizzato per rubare dati utente compromessi.

L'MTE non fa parte dell'ISA in sé, ma è un meccanismo implementato nel Northbridge delle CPU ARMv9 che tiene traccia di tutti gli accessi alla memoria e la cui funzionalità è quella di evitare overflow di memoria in modo trasparente.

ARMv9 solo per data center e server?

Banca dati

Le novità dell'ISA ARMv9 che abbiamo descritto nelle sezioni precedenti hanno un marcato carattere specifico e non hanno nulla a che vedere con l'utilizzo nei dispositivi classici in cui solitamente si vede l'ISA ARM. Di tutti loro, chiama SVE in modo potente, poiché uno dei motivi per cui di solito non si vedono grandi unità SIMD nelle CPU per i dispositivi PostPC è l'enorme consumo di energia che suppone il loro utilizzo.

Al momento gli unici due core annunciati da ARM sono due della famiglia Neoverse. Da un lato il NeoVerse V1 con il nome in codice "Zeus" e dall'altro il Neoverse N2 con il nome in codice "Perseus". Questi non sono core che vedrai in un futuro smartphone, ma nei data center e nei server per il calcolo ad alte prestazioni di aziende come Amazon AWS, Oracle, Tencent, Google, ecc.

ARM non ha ancora annunciato alcun kernel per dispositivi PostPC come smartphone e tablet. Anche se non possiamo dimenticare che l'obiettivo di ARM è quello di sostituire x86 in vari mercati, non solo sui server, ma anche sui PC. L'acquisto da NVIDIA e la sua grande influenza sul mercato dei videogiochi per PC potrebbe portare l'arrivo di PC da gioco con ARM e GPU NVIDIA, anche se è un futuro che avrà bisogno di molto supporto dagli sviluppatori di videogiochi e non da NVIDIA-ARM stessa.