Architetture ARM e x86 sullo stesso dispositivo: non è così semplice

Sappiamo quanto Apple abbia investito sulla migrazione all'architettura ARM per sostituire i processori x86 sui suoi Mac. In futuro è lecito attendersi computer basati su doppio SoC-processore ARM-x86?

L’architettura ARM è da anni punto di riferimento ormai sui dispositivi mobili come smartphone e tablet mentre più di recente ha cominciato a farsi strada nel mercato dei PC e in ambito data center.
La mossa di Apple che sui Mac di nuova generazione ha preferito montare un chip M1 di derivazione ARM mettendo da parte i processori Intel x86 (Apple Silicon: perché il nuovo chip M1 è così veloce?) ha letteralmente contribuito a smuovere l’intera industria. La stessa società di Sunnyvale, storicamente legata all’architettura x86 e inventrice delle specifiche originali x86-64, sta lavorando a un SoC AMD basato su design ARM.

Con il futuro arrivo sul mercato di PC basati su ARM è lecito chiedersi se vedremo processori “ibridi” ARM-x86. Lo scenario ideale sarebbe infatti quello di disporre di un computer in grado di eseguire programmi e sistemi operativi compatibili con entrambe le architetture, ARM e x86.
Gli ingegneri software di Apple hanno lavorato moltissimo su Rosetta 2 che con il sistema operativo macOS Big Sur preinstallato nei nuovi Mac con chip M1 svolge il ruolo di “sistema di traduzione delle applicazioni x86”. Permette infatti agli sviluppatori di applicazioni x86 di rendere i loro programmi compatibili con i Mac basati su chip M1 con un solo clic.

Ma sarebbe possibile avere a disposizione un sistema basato su chip ibrido ARM-x86? Premettiamo subito che AMD e Intel non sono interessate a farlo, almeno per il momento. Perché?

AMD e Intel sono le uniche società che detengono i diritti di licenza sull’ISA (instruction set architecture) x86: lo abbiamo spiegato nell’articolo x86, le origini dell’architettura: perché è feudo di Intel e AMD. Sono quindi le uniche imprese che possono realizzare processori in grado di gestire ed eseguire file binari x86.

Senza chiamare in causa emulazione e virtualizzazione è di fatto impossibile eseguire in modo nativo sia applicazioni x86 che ARM sullo stesso sistema.

La vecchia console di gioco PlayStation 4 introdusse il concetto di doppio processore ARM-x86: il principale è infatti un SoC AMD basato su ISA x86 mentre il secondo sfrutta appunto il design ARM. Questo processore viene attivato solo quando la console è in modalità stand-by, esegue un sistema operativo in parallelo e usa la propria RAM.
L’idea più semplice per unire i due mondi è quindi nelle case di tante famiglie da anni: in futuro si potrebbero creare computer che a seconda delle necessità venga abilitato l’utilizzo di un SoC o di un altro.
Sullo stesso dispositivo dovrebbero comunque essere presenti e in esecuzione due sistemi operativi, ciascuno di essi supportato da un efficiente sistema per la gestione dei consumi energetici.

L’altro problema deriverebbe dall’uso delle periferiche che dovrebbero essere disponibili per i SoC su entrambe le architetture: o si duplica l’hardware o si crea un elemento di collegamento in comune.

Nel caso dei SoC tutti i componenti sono sullo stesso chip e condividono le stesse modalità di accesso alla memoria. Ma cosa succede quando due processori su un sistema “ibrido” non capiscono la stessa “lingua”?
La soluzione consiste nell’annotare in maniera puntuale il corretto indirizzamento della memoria indicando quale parte è utilizzabile dal SoC ARM, quale dal processore x86.

In realtà non è così semplice perché x86 usa lo schema Little Endian: la memorizzazione/trasmissione inizia dal byte meno significativo (estremità più piccola) per finire col più significativo. L’approccio usato da ARM è in generale di tipo Big Endian: la memorizzazione/trasmissione comincia dal byte più significativo (estremità più grande) per finire col meno significativo.
In linea di principio sarebbe facile associare un’estremità a ogni ISA ma ci sono comunque sistemi operativi per ARM che lavorano in Little Endian. Un aspetto di cui tenere conto.

Un’ulteriore difficoltà ha a che fare con la struttura stessa della memoria RAM progettata per servire un processore allo stesso tempo.
Se si avessero due SoC o processori che accedono allo stesso tempo si contenderebbero l’utilizzo della RAM quindi le applicazioni progettate per entrambe le ISA non funzionerebbero in maniera semplice senza contare le problematiche legate alla gestione delle altre risorse condivise.

Creare un sistema operativo in grado di lavorare allo stesso tempo (quindi in maniera nativa) con entrambe le architetture è di fatto impossibile. A meno, come detto, di non ottimizzare le già esistenti soluzioni per l’emulazione e la virtualizzazione. Rimane questa la strada più sicura che gli sviluppatori di sistemi operativi continueranno a battere in futuro.

Molto difficile, invece, che Intel e AMD possano mettere al vaglio soluzioni ibride ARM-x86. Posto che AMD sta effettivamente lavorando su SoC di derivazione ARM che possano rappresentare un’efficiente alternativa ad Apple M1 e ai chip che arriveranno nei prossimi mesi dagli stabilimenti cui si affida “la Mela”, “il pallino” passerà poi ad aziende come Microsoft.

Come ipotizzato da Jean-Louis Gassée, ex capo della divisione Mac di Apple, quando i SoC ARM evolveranno a tal punto da essere più facilmente utilizzato in ambito mainstream unendo consumi energetici ridotti a prestazioni convincenti, allora anche Microsoft inizierà a investire in maniera più convincente sull’architettura ARM, molto di più rispetto a quanto fatto finora con Windows on ARM e con l’alleanza formata con Qualcomm: L’architettura x86 è ormai obsoleta secondo l’ex capo della divisione Mac di Apple.

Nell’articolo Differenza tra processori ARM e x86 abbiamo voluto fotografare le principali differenze tra “i due mondi”.

Ti consigliamo anche

Link copiato negli appunti