Panoramica
I computer progettati sulla base dei processori ARM e quelli sviluppati a partire da Intel o AMD non sono intercambiabili. ARM e x86 si distinguono nello specifico per il diverso approccio ai due quesiti fondamentali della progettazione di processori:
- Come trovare un equilibrio tra il numero di transistor e la complessità dei programmi?
- A quale aspetto dare la priorità tra velocità, consumo di energia e costi?
Le risposte a queste due domande hanno guidato l'innovazione tecnologica e lo sviluppo del software in qualunque ambito, dagli smartphone ai supercomputer, negli ultimi quarant'anni.
Processori x86 e processori ARM
Contestualizziamo dando una breve definizione di cosa sono i processori x86 e quelli ARM.
Noti a chi opera nel settore IT, i processori x86 sono quelli più utilizzati per i componenti hardware di computer e server. Dal punto di vista architetturale, tutti i componenti all'interno di un sistema x86, come schede grafiche, schede audio, memoria, storage e CPU, sono indipendenti gli uni dagli altri. Infatti la maggior parte dei componenti ha chip separati, chiamati controller, e si possono modificare o ampliare senza ripercussioni sulla connettività o sul funzionamento della piattaforma hardware.
I processori ARM invece non prevedono una CPU separata, ma l'unità di elaborazione si trova sullo stesso substrato fisico degli altri controller hardware (circuito integrato). Diversamente dalle CPU Intel o AMD, non esiste un vero produttore dei processori ARM: Arm Holdings concede in licenza i progetti per i chip ai diversi produttori di soluzioni hardware che li incorporano nei loro progetti. Inoltre, a differenza dei computer tradizionali basati su x86, i chip ARM non sono intercambiabili e sono chip per applicazioni specifiche. Quando i componenti come nel caso di questi processori si trovano sullo stesso circuito integrato si parla di SoC (System-on-a-chip).
RISC, CISC e le conseguenze sullo sviluppo
Un vecchio dibattito che risale agli albori dell'informatica ha portato alla nascita di due scuole di pensiero contrapposte: chi punta a semplificare il lavoro del programmatore e chi quello del microprocessore.
Perché un computer esegua una qualunque operazione, è necessario che il sistema operativo e i programmi che esegue interagiscano con la Central Processing Unit (CPU) e con gli altri componenti hardware come memoria, storage e schede di rete. La CPU funge da intermediario tra il sistema operativo, e i programmi in esecuzione, e i componenti hardware. Per semplificare il lavoro dei programmatori, la CPU dispone di un insieme di azioni e calcoli predefiniti chiamati set di istruzioni o ISA (Instruction Set Architecture). Il sistema operativo e i programmi in esecuzione, entrambi scritti dai programmatori, si basano su queste istruzioni per eseguire funzioni a basso livello come:
- Le interazioni fra la CPU e i componenti hardware (memoria, storage, rete, ecc.)
- Le operazioni aritmetiche (addizione, sottrazione, ecc.)
- La manipolazione dei dati (spostamenti binari, ecc.)
Le CPU x86 originali avevano, e hanno ancora oggi, un set di istruzioni complesso. Ad esempio una singola istruzione è in grado di completare un intero calcolo, come una moltiplicazione, o spostare un blocco di dati direttamente da una posizione all'altra della memoria. Potrebbero sembrare attività banali, ma sia la moltiplicazione che lo spostamento di dati tra due posizioni della memoria richiedono numerose istruzioni a basso livello, che nei sistemi x86 si possono eseguire in un solo ciclo. Le unità di elaborazione con un set di istruzioni di questo tipo sono chiamate Complex Instruction Set Computer (CISC).
Però, per quanto efficaci siano le loro istruzioni, le architetture CISC necessitano di un gran numero di transistor, che occupano spazio e consumano energia.
Per questo motivo nei primi anni '80 sono stati condotti diversi studi per capire se fosse possibile migliorare l'efficienza energetica e semplificare i set di istruzioni delle CPU. Questi studi hanno evidenziato che la maggior parte dei computer utilizza solo una piccola parte del vasto set di istruzioni fornito dai computer CISC. Questa scoperta ha portato alla nascita di un nuovo tipo di processori: i Reduced Instruction Set Computer (RISC), così chiamati perché prevedono un set di istruzioni ridotto in cui ciascuna istruzione rappresenta solo un'operazione semplice e richiede meno energia. I RISC complicano il lavoro del programmatore, ma semplificano il lavoro del processore. Nel caso dei processori RISC e delle macchine RISC avanzate, le operazioni complesse vengono svolte eseguendo più istruzioni o trasferendo la complessità al compilatore anziché ai core della CPU.
L'architettura perfetta non esiste, in entrambi i casi si tratta di prediligere determinati aspetti piuttosto che altri. Ad esempio, le CPU x86 hanno una potenza di calcolo più rapida e offrono maggiore chiarezza e semplicità nella programmazione e nel numero di istruzioni, ma richiedono anche un chip con molti transistor, più ingombrante e più costoso. I processori ARM invece si dimostrano sì veloci per certi tipi di operazioni, ma il fatto di dover svolgere più cicli per una singola istruzione finisce per rallentarli nel momento in cui le operazioni diventano più complesse. Il risultato è che il lavoro per la definizione e l'esecuzione delle operazioni ricade sulle spalle dei programmatori e non sul set di istruzioni.
Infine, poiché i vari tipi di processori richiedono diversi set di istruzioni per eseguire la stessa attività, risulta difficile calcolare il MIPS (milioni di istruzioni al secondo), ovvero una misura approssimativa della potenza grezza di un computer.
ARM e x86: il consumo di energia
L'architettura RISC è nata dalla necessità di realizzare chip di dimensioni ridotte che garantissero prestazioni elevate per computer più piccoli o microcomputer (i PC odierni). Ed è qui che si inserisce la seconda domanda fondamentale della progettazione di processori: è meglio concentrarsi sulle prestazioni del chip (velocità di elaborazione o velocità di clock) o sul consumo di energia (efficienza energetica)?
Integrati come SoC, i processori ARM sono pensati principalmente per ottimizzare le risorse, per cui in generale consumano meno energia e producono meno calore. Basti pensare che le architetture ARM (come ARMv8) di norma non prevedono sistemi di raffreddamento semplificati (non ci sono ventole sui telefoni cellulari). Le CPU x86 invece privilegiano la velocità di elaborazione rispetto alla riduzione del consumo energetico.
Sebbene entrambi i tipi di CPU possano garantire prestazioni elevate (sia ARM che x86 sono utilizzati su alcuni dei supercomputer più veloci al mondo), i progetti ARM tendono a concentrarsi su aspetti quali fattori di forma più piccoli, durata della batteria, dimensioni, riduzione del raffreddamento e, forse l'aspetto più importante di tutti, il costo. Per questo motivo i processori ARM sono prevalentemente adottati sui piccoli dispositivi elettronici e mobili come smartphone, tablet e persino sui sistemi Raspberry Pi. Le architetture x86 trovano invece larga diffusione su server, PC e persino laptop, ovvero in tutti quei contesti in cui la velocità e la flessibilità sono più importanti di raffreddamento e dimensioni.
Perché scegliere Red Hat Enterprise Linux for ARM?
I chip ARM vengono scelti sempre più spesso per l'High Performance Computing (HPC) e per gli scenari di utilizzo legati al cloud (come AWS Graviton e Azure). Due contesti in cui Red Hat Enterprise Linux offre una piattaforma in grado di garantire prestazioni ottimali per l'elaborazione, la compatibilità, lo sviluppo, l'ottimizzazione e l'implementazione di app.
Sono ormai anni che le architetture ARM utilizzano i sistemi operativi Linux, dai sistemi basati su Android per gli smartphone a quelli su misura per Raspberry Pi. Perfino uno dei supercomputer più veloci al mondo utilizza Red Hat Enterprise Linux su un'architettura ARM (Red Hat alla base di Fugaku).
A differenza delle CPU x86, l'hardware per ciascuna progettazione ARM è unico. Ed è questo contesto a denotare l'importanza di una vasta community open source come quella di Red Hat Enterprise Linux, che conta centinaia di fornitori di soluzioni hardware testate e certificate, tra cui figurano anche produttori e progettisti di hardware ARM. Red Hat dispone di un programma per l'accesso anticipato alle novità dei fornitori di soluzioni ARM grazie al quale gli utenti possono collaborare e valutare in anteprima lo sviluppo di nuove tecnologie ARM.
Red Hat Enterprise Linux è in grado di offrire prestazioni elevate in diversi footprint, cloud, server e perfino all'edge. La combinazione di tecnologia, ecosistema e stabilità costante permette alle organizzazioni di adattarsi alle evoluzioni dell'IT attraverso l'innovazione.