Una semplice guida a ARM vs. RISC-V vs. x86
Introduzione
Abbiamo parlato molto di Raspberry Pi 5 qui a PiCockpit, naturalmente. L'altro giorno ho trovato una discussione sul Raspberry Pi 5 incentrata sull'architettura ARM del Pi e sulla sua compatibilità con l'architettura RISC-V. Per anni si è parlato della compatibilità del Raspberry Pi con l'architettura x86. Ma che dire di un Pi RISC-V?
Questo è particolarmente interessante, perché Raspberry Pi è un membro di RISC-V Internazionale.
Come Arduino, in realtà.
Quindi c'è potenzialmente un futuro per i chip con architettura RISC-V su Raspberry Pis. Tuttavia, non resterei con le mani in mano sperando in un Raspberry Pi x86.
Dopo tutto, in una recente discussione pubblicata da Raspberry PiGordon Hollingworth ha dichiarato: "La gente dice: 'Beh, potresti farlo? È possibile creare un Raspberry Pi x86?E' come dire: 'Oh, Dio, sarebbe un sacco di lavoro'. Si potrebbe, ma...".
Ho quindi pensato che fosse giunto il momento di esaminare alcune delle principali differenze e somiglianze tra le architetture RISC-V, ARM e x86. Ne ripercorrerò la storia, i vantaggi e gli svantaggi e gli elementi che le distinguono l'una dall'altra.
Alla fine, si capirà perché sarebbe così impegnativo realizzare un Raspberry Pi x86, ma perché un Raspberry Pi RISC-V non è da escludere.
Panoramica
RISC-V | BRACCIO | x86 | |
---|---|---|---|
Origine | RISC-V Internazionale | Arm Ltd. | Intel e AMD |
Set di istruzioni | RISC (Reduced Instruction Set Computing, calcolo a set di istruzioni ridotto) | RISC (Reduced Instruction Set Computing, calcolo a set di istruzioni ridotto) | CISC (Complex Instruction Set Computing) |
Ordine dei byte | Tipicamente little-endian (configurabile dall'utente) | Tipicamente bi-endiano (configurabile dall'utente) | Piccolo-endiano |
Applicazioni | Sistemi embedded, dispositivi IoT, soluzioni personalizzate | Dispositivi mobili, sistemi embedded, server | Desktop, laptop, server, stazioni di lavoro |
Modello di licenza | Licenza open-source e royalty-free | ARM concede in licenza i propri progetti ai produttori | Intel e AMD producono i propri chip |
Ecosistema | Sviluppo dell'ecosistema, iniziative open-source | Ampio ecosistema, ampio supporto di terze parti | Ampio ecosistema software e hardware |
Esaminiamo ora ciascuno di questi punti.
Origine
E vorrei iniziare con l'architettura x86, in quanto è la più vecchia delle tre. L'architettura x86 risale al 1978, quando Intel lanciò la famiglia 8086. L'architettura x86 era CISC, che all'epoca era molto popolare. Oggi l'architettura x86 continua a essere sotto il controllo di Intel, insieme ad AMD.
L'architettura ARM ha avuto inizio 7 anni dopo, quando Acorn Computers Ltd. ha rilasciato l'ARM1. Acorn Computers non esiste più oggi, ma la sua architettura ARM continua a vivere attraverso Arm Ltd.. Arm Ltd. ora concede in licenza l'architettura ARM ad altre aziende.
In confronto, RISC-V è estremamente recente, essendo nato solo nel 2010 presso l'Università della California, Berkeley. Nel 2015, un gruppo di aziende tecnologiche (da IBM a Google a Nvidia) si è riunito per fondare la RISC-V Foundation. Nel 2020, a causa di questioni geopolitiche, la RISC-V Foundation si è trasferita in Svizzera ed è diventata RISC-V International.
Set di istruzioni
Innanzitutto, vorrei chiarire la differenza tra RISC e CISC.
I processori RISC utilizzano un insieme ridotto e ottimizzato di istruzioni, ciascuna delle quali richiede un singolo ciclo di clock, consentendo un'esecuzione più rapida e prevedibile.
Al contrario, i processori CISC hanno un set di istruzioni più ampio e diversificato, che spesso include istruzioni complesse che possono richiedere più cicli di clock, portando a prestazioni potenzialmente più lente ma più versatili nella gestione di vari compiti.
RISC-V è ovviamente basato su RISC. Ma ciò che lo distingue è il fatto che è open-source.
Nel loro documento del 2014, Gli insiemi di istruzioni dovrebbero essere liberi: il caso di RISC-VKrste Asanović e David A. Patterson confrontano RISC-V con Linux. L'idea è che esista un'architettura di set di istruzioni completamente open-source. Quindi le persone dovrebbero essere in grado di manipolarla, giocarci e condividerla.
Asanović e Patterson sostengono che ciò potrebbe favorire l'innovazione, una maggiore trasparenza e una riduzione dei costi.
Va detto che, sebbene RISC-V sia di per sé open-source, le implementazioni specifiche di RISC-V possono essere sia open-source che proprietarie.
Anche le istruzioni ARM sono basate su RISC. Tuttavia, poiché Arm Ltd. concede in licenza l'architettura, sono tutt'altro che open-source. Come affermano Asanović e Patterson: "Una licenza ARM non ti permette nemmeno di progettare un core ARM; puoi solo usare i loro progetti". Anche se non è così semplice, in genere è così.
Sopra ho detto che l'architettura x86 è basata su CISC. È vero, ma devo dire che dagli anni '90 i processori x86 includono anche istruzioni SIMD (Single Instruction, Multiple Data) per l'elaborazione parallela. Ciò consente ai processori multicore di funzionare anche in modo rapido.
Dopo tutto, il supercomputer più veloce del mondo - Frontier - è basato su x86.
Ma il secondo supercomputer più veloce al mondo, Fugaku, è basato su ARM.
Molti sostengono che oggi la distinzione tra RISC e CISC non sia molto importante. Poiché i processori moderni sono così potenti, si dice che le differenze tra questi tipi di set di istruzioni sono praticamente scomparse. Tuttavia, nel loro appello a favore di RISC-V, Asanović e Patterson sostengono che "sono decenni che nessuna nuova ISA CISC ha avuto successo" e quindi ha più senso scegliere un'architettura basata su RISC.
Ordine dei byte
L'indianità si riferisce all'ordine dei byte in cui i tipi di dati multibyte vengono memorizzati nella memoria del computer.
Nei sistemi little-endian, il byte meno significativo viene memorizzato all'indirizzo di memoria più basso, mentre nei sistemi big-endian il byte più significativo viene memorizzato all'indirizzo più basso.
L'indianità è molto importante quando si vogliono scambiare dati tra processori. Se si inviano informazioni da un sistema big-endian a un sistema little-endian, è facile che i dati si corrompano se non vengono convertiti correttamente.
RISC-V è tipicamente little-endian. Tuttavia, è possibile configurare questo aspetto se si desidera che il RISC-V abbia un ordine di byte big-endian.
L'architettura ARM può essere little-endian o big-endian, a seconda dell'implementazione specifica. Come RISC-V, è possibile configurare un chip ARM in modo che sia big-endian.
I Raspberry Pis sono, per impostazione predefinita, little-endian. Potete verificarlo voi stessi andando sul vostro Raspberry Pi, aprendo il terminale ed eseguendo:
lscpu
L'architettura x86 è little-endian. Ma a differenza dell'architettura RISC-V e ARM, non è possibile cambiarla. Il fatto di essere little-endian è una caratteristica dell'architettura x86.
Applicazioni
Vorrei tornare per un attimo all'articolo di Asanović e Patterson. Sebbene l'articolo risalga al 2014, contiene un punto molto importante. Essi affermano che "mentre l'80×86 ha vinto la guerra dei PC, il RISC domina i tablet e gli smartphone dell'era post-PC; nel 2013 sono stati spediti più di 10 [miliardi] di ARM, rispetto a 0,3 [miliardi] di 80x86".
È una discrepanza enorme, ma dimostra anche che le applicazioni di un'architettura contribuiscono a definirne l'importanza. Ecco perché nel 2020 Apple ha fatto un gran parlare di sé quando ha presentato il chip M1 per i suoi nuovi computer. Se Apple stava passando da x86 ad ARM, cosa significa questo per il futuro di x86?
Tuttavia, x86 domina ancora il mercato dei computer. Desktop, laptop e server continuano a basarsi principalmente sull'architettura x86.
ARM, invece, è tipicamente presente negli smartphone e nei tablet. E, naturalmente, nell'umile Raspberry Pi. Tuttavia, sembra che ARM possa iniziare a conquistare anche il mondo dei computer.
RISC-V spera chiaramente di conquistare una fetta dello spazio dell'architettura ARM, ma rimane ancora aperta la possibilità di fare qualcosa in futuro. Sia le università che l'industria stanno investendo in RISC-V e ne osservano attentamente lo sviluppo.
Se ARM ha iniziato a intaccare x86, RISC-V inizierà a intaccare ARM?
Modello di licenza
La più restrittiva delle tre è l'architettura x86. Come ho già detto, solo due aziende producono chip con architettura x86: Intel e AMD. I chip non sono personalizzabili e l'architettura è completamente proprietaria.
L'architettura ARM funziona in modo diverso, a causa del modello di licenza. Una tipica licenza ARM non consente di creare un progetto di architettura ARM. Tuttavia, ci sono delle eccezioni, perché il chip M1 di Apple è stato prevedibilmente personalizzato in base ai suoi desideri.
L'architettura RISC-V è open-source e libera da royalty, consentendo a chiunque di progettare e produrre processori RISC-V senza pagare diritti di licenza. È davvero come il Linux delle ISA.
È interessante notare che Intel e AMD sono entrambi membri di RISC-V International. Quindi è chiaro che anche loro ritengono prezioso contribuire all'architettura RISC-V.
Ecosistema
L'ecosistema RISC-V sta crescendo rapidamente, con molte aziende e ricercatori che contribuiscono a progetti open-source e sviluppano prodotti basati su RISC-V.
Sebbene l'ecosistema software non sia enorme al momento, sta crescendo. È possibile vedere i suoi sviluppi con il progetto RISE (RISE sta per RISC-V Software Ecosystem).
Quando si parla di ARM e x86, entrambi dominano nei rispettivi mercati. Gli ecosistemi di entrambi sono ben consolidati e vasti.
Questo è uno degli svantaggi più evidenti di RISC-V. Semplicemente non ha l'ampia adozione degli altri due e la concorrenza in questo campo è feroce.
RISC e CISC in azione
In questo fantastico video di Il programmatore [Riempire il vuoto]È possibile vedere esattamente come funzionano RISC e CISC a livello di codice assembly.
Qui potete vedere in dettaglio la differenza tra RISC e CISC.
Su ARM e RISC-V, il codice Assembly ha linee più corte, ma più numerose. Su x86, le righe di Assembly sono più complesse, ma sono meno numerose.
Il video illustra come il compilatore GCC e il compilatore Clang trasformano il codice C++ in Assembly per ognuna delle tre ISA - ARM vs. RISC-V vs. x86_64. Date un'occhiata:
Conclusione
Abbiamo recentemente pubblicato un articolo che mette a confronto Orange Pi 5 Plus con Raspberry Pi 5 e Rock 5 Model B. È interessante notare che, mentre tutti e tre questi SBC sono basati su ARM, Radxa ha un modello x86 chiamato Rock Pi X.
Alcuni temono che una più ampia adozione di RISC-V provochi una maggiore frammentazione. Questo corrisponde perfettamente al paragone con Linux. Quante distribuzioni Linux esistono oggi? Tuttavia, la comunità RISC-V sta lavorando attivamente allo sviluppo di standard per ridurre al minimo la frammentazione e i problemi di compatibilità.
Molti (compresi alcuni detrattori) vedono RISC-V come un modo per spingere l'architettura dei chip verso il futuro.
Naturalmente, con l'inasprirsi delle guerre commerciali tra paesi, le cose si complicano notevolmente. Arm Ltd. ha sede nel Regno Unito, mentre Intel e AMD hanno sede negli Stati Uniti. Non sorprende che paesi come la Cina e la Russia si orientino verso RISC-V.
Ci sono tuttavia persone che pensano che RISC-V sia destinato a fallire. Sostengono che RISC-V non sarà semplicemente causa frammentazione, ma piuttosto che RISC-V già è frammentato. E quindi non decollerà.
Aggiornamentoe (Novem6 marzo 2023): Arm Holdings ha appena annunciato l'acquisto di una partecipazione di minoranza in Raspberry Pi Ltd. Non è chiaro cosa questo significhi per il futuro. Per saperne di più, leggete qui:
Cosa ne pensate? RISC-V è il futuro? Fatecelo sapere nei commenti!
Come ho già detto, solo tre aziende producono chip con architettura x86: Intel e AMD.
Cioè... solo due. 🙂
Proprio così - grazie, tozo!
Penso che sia un po' ingiusto contare l'età di RISC-V a partire dalla data in cui alcuni ricercatori universitari si sono trovati in un pub (o altro) nel 2010 e hanno deciso di iniziare a progettare la propria ISA, mentre gli altri vengono contati a partire da quando il primo chip commerciale è stato introdotto sul mercato.
L'ISA è passata attraverso molteplici versioni incompatibili, con l'evolversi delle idee, sia a livello di linguaggio assembly che di codifica binaria.
Il primo chip RISC-V acquistabile, l'FE310 di SiFive, è uscito a dicembre 2016 sulla scheda Arduino-clone HiFive1. È solo un microcontrollore, con solo le istruzioni in modalità User. Le istruzioni e i CSR della modalità Machine e Supervisor sono stati oggetto di sviluppo attivo e di modifiche incompatibili fino a poco tempo prima che l'ISA di base fosse ratificata (congelata, pubblicata) nel luglio 2019. SiFive ha messo in commercio un SBC Linux, HiFive Unleashed (con il SoC FU540) all'inizio del 2018, con circa 500 esemplari prodotti, ma si trattava di un progetto sperimentale ed erano pronti a renderlo orfano se fossero state apportate modifiche incompatibili all'ISA prima della ratifica.
Penso che la data giusta di "origine di RISC-V" sia da qualche parte tra la pubblicazione di Privileged Architecture 1.10 nel maggio 2017 e la ratifica nel luglio 2019. Di sicuro non il 2010.
Su un altro argomento, noto che l'8086 era di gran lunga il meno CISC dei chip CISC e questa è una grande ragione per cui è stato in grado di sopravvivere nell'era RISC (anche i miliardi del PC IBM e dei cloni hanno aiutato molto!). VAX, M68000, Z8000, NS 16032/32032 erano troppo complessi per essere veloci.
"Dagli anni '90, i processori x86 includono anche istruzioni SIMD (Single Instruction, Multiple Data) per le attività di elaborazione parallela. Ciò consente ai processori multicore di funzionare anche in modo rapido". Non sono assolutamente correlati.
"L'architettura RISC-V è open-source e libera da royalty, consentendo a chiunque di progettare e produrre processori RISC-V senza pagare diritti di licenza. È davvero come il Linux delle ISA". È vero, ma progettare in proprio costa molto di più che prendere in licenza un progetto da una delle decine di fornitori commerciali di core RISC-V (con modelli di business molto simili a quelli di Arm).