giovedì 24 novembre 2016 di Michele Nasi 5280 Letture

Differenza tra processori ARM e x86

Dalla "notte dei tempi" esistono diverse architetture per i processori. Alcune di esse erano e sono ancor'oggi utilizzate sui sistemi embedded, altre su workstation e server, altre ancora sui sistemi mainframe (qui è possibile trovarne una lista piuttosto esaustiva).

I processori destinati ai microcomputer sono quelli che la maggior parte degli utenti usa a livello mondiale. In questa categoria, infatti, ricadono i processori basati su architettura x86 Intel e AMD (IA-32, altrimenti nota come x86-32 di Intel e x86-64 che a sua volta "racchiude" le due differenti implementazioni AMD64 e Intel 64) e quelli che sfruttano l'architettura ARM, di cui tanto si parla soprattutto lato "mobile".

Differenza tra processori ARM e x86

Ma quali sono le differenze tra processori ARM e x86? Perché gli uni monopolizzano di fatto il mercato dei dispositivi mobili mentre feudo dei secondi sono desktop e notebook?


L'architettura ARM

ARM è la società inglese, fondata nel lontano 1990, che ha ideato gli omonimi processori. Nacque come joint venture tra Acorn Computers, Apple Computer e VLSI Technology e oggi vanta uffici e centri di ricerca in tutto il mondo. Di recente ARM è stata acquisita per la somma di 30 miliardi di dollari dalla giapponese SoftBank che ha potuto così mettere le mani sull'immenso tesoro in termini di brevetti che l'azienda di Cambridge detiene (vedere ARM comprata dalla giapponese SoftBank).

ARM, infatti, non ha mai avviato una produzione di massa dei suoi processori ma ha concesso in licenza i suoi progetti e i suoi brevetti ad altre aziende che poi hanno realizzato le CPU e costruito il proprio business. I nomi delle società che hanno attinto all'inesauribile fonte ARM sono note: Qualcomm, MediaTek, Samsung e HiSilicon (quest'ultima direttamente controllata da Huawei).

Qualcomm è leader indiscussa nel mercato dei processori per dispositivi mobili (si chiamano SoC, System-on-a-Chip perché - diversamente dalle CPU tradizionali - in un solo chip contengono processore centrale, chipset e controller accessori come quello per la memoria RAM, la circuiteria input/output, il sottosistema video, i moduli per la connettività - si pensi, a tal proposito alle "versioni" migliorate di LTE supportate nelle ultime versioni dei SoC Snapdragon: Qualcomm, primo modem 5G a 5 Gbps. Accordo con Netgear -,...).
Con i suoi SoC Snapdragon, Qualcomm è accreditata (fonte: Strategy Analytics, ottobre 2016) del 39% del mercato mentre MediaTek segue al secondo posto con il 23%.

Differenza tra processori ARM e x86

Differenza tra ARM e x86

Quali sono le principali differenze tra processori ARM e x86?

Iniziamo col dire che le difformità affondano le loro radici sulla filosofia di progettazione: i processori ARM sono RISC (Reduced instruction set computer) mentre le CPU x86 sono CISC (Complex instruction set computer).

I SoC ARM di tipo RISC poggiano su un set di istruzioni limitato che permettono la realizzazione di un'architettura semplice e lineare.
Le architetture RISC vengono definite load-store perché permettono di accedere alla memoria unicamente tramite delle istruzioni specifiche. Esse provvedono a leggere e scrivere i dati nei registri del microprocessore, mentre tutte le altre istruzioni manipolano i dati contenuti all'interno del microprocessore.
Nei processori CISC, che prevedono un set esteso di istruzioni con metodi di indirizzamento complessi, tutte le istruzioni possono accedere ai registri o alla memoria in modo indifferente.

Con il paradigma RISC si usano insiemi ottimizzati di istruzioni che permettono di eseguire le operazioni con un ridotto consumo energetico rispetto all'approccio CISC ma, ovviamente, con una minore dinamicità. Le istruzioni, infatti, riducono le operazioni da espletare in attività le più semplici possibile cosicché la maggior parte delle stesse venga eseguito in egual tempo.
Esse hanno poi la stessa lunghezza in bit e usano metodi di indirizzamento non complessi aumentando la velocità di esecuzione.

I chip x86 inizialmente poggiavano su un design CISC puro ma, con il trascorrere degli anni, si è parzialmente abbracciato il paradigma RISC così come gli ARM hanno cominciato a integrare caratteristiche che erano originariamente "prerogativa" dei CISC. Così, le differenze oggi più importanti risiedono nella microarchitettura dei processori.

Nessun processore x86 Intel per sistemi desktop potrebbe essere ovviamente utilizzato in campo mobile. Consumi energetici e sviluppo di calore sono tali da impedire la loro adozione sui dispositivi mobili.
Basti pensare che i processori Intel Core i7 ultra-low power sono contraddistinti da un TDP (thermal design power) medio di 45W mentre un SoC ARM - compresa la GPU - non va oltre i 3W.
Intel ha provato a miniaturizzare i transistor e a progettare processori efficienti per il segmento mobile ricorrendo a processi costruttivi notevolmente più "spinti". La società di Santa Clara, tuttavia, non è riuscita neppure lontanamente a scalfire il predominio di ARM in ambito mobile gettando poi la spugna, almeno parzialmente.

Differenza tra processori ARM e x86

Il brand Intel Atom è "vivo e vegeto" ma - come ha spiegato Intel ad aprile 2016 - non verrà più utilizzato nel mercato mobile. In altre parole, Intel non realizzerà più processori destinati a smartphone e tablet fatta eccezione per Cherry Trail Atom x5 e x7.
Intel, inoltre, continuerà a realizzare processori basati su Apollo Lake e destinati ai prodotti "2-in-1" oltre, evidentemente, ai Core M.


Mentre quindi, su desktop e notebook, i processori x86 restano leader incontrastati su desktop e notebook per la loro versatilità e potenza (le istruzioni dinamiche disponibili non sono neppure paragonabili con quelle offerte dall'architettura ARM), ARM ha ampliato ulteriormente il "gap" con Intel presentando big.LITTLE, architettura eterogenea che consente di combinare core meno prestazionali e più parsimoniosi in termini di consumi energetici con core più performanti e, ovviamente, più famelici di batteria.

Differenza tra processori ARM e x86

Quando l'utente richiederà l'effettuazione di operazioni "ordinarie", il SoC ARM userà i core "meno potenti" mentre nel caso in cui dovesse esservi la necessità di avviare elaborazioni pesanti in tempi brevi, l'architettura passerà all'impiego dei core ad alte prestazioni.

64 bit

L'aggettivo 64 bit indica la dimensione dei registri interni del processore usata per una specifica architettura.
Quali sono le più significative differenze tra l'architettura a 64 bit su piattaforma x86 e quella su piattaforma ARM?

Come accennato a inizio articolo, è chiamata x86-64 la versione a 64 bit del set di istruzioni x86. L'estensione x86-64 non è stata ideata da Intel bensì da AMD (che la battezzò originariamente AMD64) e viene ad essa oggi fatto riferimento, spesso, con il termine x64.
Lo spazio di memoria indirizzabile, dai 4 GB dei processori a 32 bit passa a 16 exabyte (264 byte) e il processore è capace di gestire interi a 64 bit in modo nativo (ne abbiamo parlato nell'articolo 32 bit vs. 64 bit: le differenze tra le due architetture).

Le specifiche x86-64 furono presentate da AMD nel 2000; Intel era determinata a passare ai 64 bit ma sapeva che trasformare i suoi processori x86 a 32 bit sarebbe stato inefficiente.
Così, Intel diede il via al progetto IA64 per la produzione di processori Itanium a 64 bit.
AMD, da parte sua, rilevò di non essere in grado di produrre processori compatibili IA64 così decise di estendere le specifiche x86 per includere indirizzamento e registri a 64 bit.
L'architettura che fu concepita da AMD - AMD64 o x86-64 - divenne lo standard de facto per la produzione di CPU x86 a 64 bit.


E se il progetto IA64 non ottenne mai successo, Intel decise quindi di adottare x86-64 utilizzando il set di istruzioni concepito da AMD, seppur con alcune differenze minori.

Nel caso di ARM, la storia è diversa. Il "bisogno" di passare a un'architettura a 64 bit è stato sentito molto più di recente: soltanto nel 2011, infatti, ARM annunciò ARMv8 64-bit. Si tratta del risultato di anni di lavoro che ha portato al rilascio di un'implementazione a 64 bit "pura" che però non disconosce i principi e il set di istruzioni già esistenti.
L'architettura ARM-v8, infatti, usa due execution states: AArch32 e AArch64.

Differenza tra processori ARM e x86

Come suggerito dal nome stesso, il primo viene usato per eseguire codice a 32 bit mentre l'altro per il codice a 64 bit. La scelta di design "geniale" è che il processore può in questo modo passare senza problemi da una modalità all'altra durante il normale funzionamento.
Il decoder che si occupa dell'elaborazione delle istruzioni a 64 bit sfrutta un design tutto nuovo che non implica la necessità di mantenere la compatibilità con i 32 bit. Nel suo complesso, tuttavia, il processore ARM resta pienamente compatibile con l'"era 32 bit".

Nell'articolo Android a 32 o 64 bit, ecco cosa cambia abbiamo descritto i principali motivi che hanno spinto ARM alla "migrazione" verso i 64 bit.

Compatibilità delle applicazioni

Sebbene Android (la stragrande maggioranza dei dispositivi mobili basati sul sistema operativo di Google usa SoC ARM) faccia leva principalmente su Java come linguaggio di programmazione, gli sviluppatori possono comunque riutilizzare codice esistente (ad esempio C/C++) per realizzare le loro app. Queste app "native" sono generalmente compilate per i processori ARM e non per Intel.


Quando si prova a scaricare manualmente un file APK, infatti, ci si imbatterà spesso nelle versioni ARM e Intel di una stessa applicazione Android (vedere Scaricare app Android senza passare per Play Store).
Le versioni per dispositivi basati su processore Intel, ovviamente, non funzioneranno sui device che poggiano su SoC ARM e viceversa.

A beneficio degli sviluppatori, Microsoft sta investendo molto sulle soluzioni per portare le proprie applicazioni su quante più piattaforme possibile, Android e iOS comprese, riutilizzando al massimo il codice già realizzato: Azure e le app che funzionano su tutti i dispositivi mobili.

Inoltre, con il rilascio di Windows 10 Redstone 3, previsto per l'autunno 2017, Microsoft dovrebbe rilasciare un emulatore x86 per la piattaforma ARM64 permettendo così di eseguire applicazioni Win32 sui dispositivi mobili non-x86: Nel 2017 l'emulatore x86 per i dispositivi ARM64.

Per quanto riguarda Apple, che già utilizza i SoC ARM su iPhone e iPad, in molti hanno previsto un imminente arrivo dei processori ARM anche sui dispositivi come il MacBook Air che sino ad oggi hanno sempre usato processori Intel Core: Processori Apple, come tengono testa alla concorrenza.

Infine, ARM potrebbe presto dimostrare di essere un'ottima scelta anche in ambito server e supercomputer. È infatti appena di qualche mese fa la notizia della collaborazione avviata con Fujitsu: L'architettura ARM è pronta anche per i supercomputer.