Cos'è AArch64? Cosa devi sapere su questa architettura della CPU

click fraud protection

Anche se probabilmente hai utilizzato un dispositivo con un processore AArch64 all'interno, potresti non sapere cosa significa. Ecco cosa devi sapere.

Ci sono molte CPU architetture là fuori, con i più grandi x86 E BRACCIO. Detto questo, AArch64 è probabilmente volato sotto il tuo radar. Anche l'appassionato di tecnologia abbastanza colto potrebbe non averne mai sentito parlare, nonostante sia presente in milioni di dispositivi. Bene, il fatto è che AArch64 non è tanto misterioso quanto è un termine tecnico molto confuso. Ecco cosa devi sapere su AArch64.

AArch64 è ARM64, più o meno

Fonte: Braccio

In breve, AArch64 è il nome ufficiale dell'architettura del set di istruzioni (ISA) a 64 bit di Arm introdotta con l'aggiornamento Armv8-A. Si riferisce quasi sempre ad AArch64. Non è chiaro esattamente perché ARM64 sia spesso usato al posto di AArch64, ma parte della confusione sembra derivare da due punti. Parte di ciò è dovuto al fatto che l'estensione a 64 bit di x86 è x86-64, quindi naturalmente l'estensione a 64 bit di ARM dovrebbe essere ARM64. Apple sembrava certamente pensarla così e si riferiva ad AArch64 come ARM64 fino al 2014. Per la maggior parte delle persone, "AArch64 è ARM64" è una spiegazione molto soddisfacente.

Se vuoi diventare davvero tecnico, AArch64 non è l'ISA, ma piuttosto il stato di esecuzione che consente alle CPU ARM di utilizzare (e utilizzare solo) il set di istruzioni A64 dell'ISA ARMv8, introdotto per la prima volta con l'architettura Armv8-A. Se questo suona confuso, è perché lo è. Anche se hai familiarità con l'architettura del computer, questo può essere difficile da capire, quindi lo spiegherò passo dopo passo.

Quindi, tecnicamente, AArch64 è uno stato, non un ISA, ma a nessuno importa, nemmeno lo stesso Arm.

ARM è una famiglia di ISA correlati e sebbene ISA diversi di solito implichino incompatibilità, ciò non è strettamente vero. Diverse versioni di ARM ISA sono denominate ARMv1, ARMv2 e così via, ma questi ISA contengono quelli che sono essenzialmente sub-ISA: profilo A, profilo M e profilo R. La differenza fondamentale tra questi sub-ISA è la quantità minima di istruzioni che ciascuno utilizza, con il profilo A che ne utilizza di più e il profilo M che ne utilizza di meno. Pertanto, ARM ISA è suddiviso in singole versioni come ARMv8, quindi tali versioni sono ulteriormente suddivise in diverse implementazioni dell'ISA.

Armv8-A è l'implementazione iniziale del profilo A dell'ISA ARMv8, che ha aggiunto due nuove cose: AArch32 e AArch64. Questi sono indicati come stati o modalità e consentono alle CPU ARM di accedere a diversi set di istruzioni, con AArch32 contenente le istruzioni A32 e T32 a 32 bit e AArch64 contenente le istruzioni A64 a 64 bit Istruzioni. Ad esempio, se un processore è attualmente nello stato AArch64 e desidera utilizzare le istruzioni A32, deve modificare il proprio stato in AArch32. Inoltre, in modalità AArch64, sono accessibili sia i registri a 32 bit che a 64 bit, mentre in modalità AArch32 sono utilizzabili solo i registri a 32 bit. La parte più confusa di tutto questo è che tutte queste cose sono indicate in modo variabile come ISA e persino Arm (la società che sviluppa ARM ISA) è colpevole di questo.

Ma se vogliamo essere super tecnici, ecco com'è in realtà: l'ottava versione di ARM ISA, ARMv8, è stata implementata per la prima volta con Armv8-A, che contiene due stati chiamati AArch32 e AArch64. Quando una CPU è nello stato AArch64, può eseguire istruzioni A64 a 64 bit. Quindi, tecnicamente, AArch64 è uno stato, non un ISA, ma a nessuno importa, nemmeno lo stesso Arm.

Perché sia ​​​​a 32 bit che a 64 bit sono importanti per ARM

Quindi AArch64 è in realtà piuttosto complicato e dover cambiare stato solo per usare istruzioni a 32 e 64 bit sembra ingombrante. Il fatto è che il supporto sia per 32 bit che per 64 bit era troppo importante per lasciarlo perdere, quindi deve essere così. In realtà si trattava di due problemi principali: la necessità di supportare il vecchio software a 32 bit e il perseguimento di un calcolo moderno e ad alte prestazioni.

Se Arm non avesse incluso il supporto nativo per il software a 32 bit nel suo primo ISA a 64 bit, sarebbe potuto essere un disastro perché, in parole povere, nessuno vuole riscrivere il codice. Se ARMv8 richiedesse a tutti di scrivere un nuovo software da zero, avrebbe potuto far precipitare l'ISA in una spirale mortale, dove nessuno produce o acquista Dispositivi ARMv8 a causa della mancanza di software, e quindi gli sviluppatori non creano app a causa della mancanza di utenti, all'infinito fino a quando Arm non deve chiamarlo si chiude. Quindi, il supporto a 32 bit non era negoziabile.

D'altra parte, nemmeno l'implementazione del calcolo a 64 bit era un'opzione. Intel e AMD, le società dietro x86, utilizzavano architetture a 64 bit sin dai primi anni 2000 per i loro CPU straordinarie, sebbene all'epoca non vi fosse alcuna richiesta di chip ARM a 64 bit poiché i telefoni non ne avevano bisogno. Ma l'invenzione dello smartphone ha cambiato tutto e tutti volevano che i loro telefoni facessero più cose. Il supporto a 64 bit non solo aiuterebbe gli smartphone a diventare più potenti, ma aprirebbe anche la porta per le aziende di realizzare chip ARM per mercati in cui x86 dominava tradizionalmente, come laptop e server.

Fondamentalmente, tutta questa confusione di denominazione è nata dal bisogno di Arm di modernizzare la sua tecnologia in risposta alle mutevoli priorità. Forse Arm non aveva bisogno di implementare il supporto a 64 bit in questo modo, ma lo ha fatto, ed è così che è nato AArch64. Sebbene AArch64 non sia un ISA, è così che la maggior parte delle persone usa il termine, nel bene e nel male.