Een eenvoudige gids voor ARM vs. RISC-V vs. x86

RISC-V vs ARM vs x86 Titelafbeelding

Inleiding

We hebben het veel gehad over Raspberry Pi 5 hier bij PiCockpit, natuurlijk. Onlangs vond ik een discussie over de Raspberry Pi 5 die ging over de ARM-architectuur van de Pi en hoe die zich verhoudt tot de RISC-V-architectuur. Jarenlang hebben mensen gesproken over de compatibiliteit van de Raspberry Pi met x86. Maar hoe zit het met een RISC-V Pi?

Dit is vooral interessant omdat Raspberry Pi lid is van RISC-V Internationaal.

Net als Arduino, eigenlijk.

Dus er is mogelijk een toekomst voor chips met RISC-V-architectuur op Raspberry Pis. Ik zou mijn adem echter niet inhouden in de hoop op een x86 Raspberry Pi.

Per slot van rekening, in een recente discussie geplaatst door Raspberry PiGordon Hollingworth zei: "Mensen hebben zoiets van: 'Nou, zou je dat kunnen doen? Kun je een x86 Raspberry Pi maken?Het is als, 'Oh, God, het zou een hoop werk zijn. Dat zou kunnen, maar..."

Een Intel-chip

Daarom vond ik het tijd om enkele van de belangrijkste verschillen en overeenkomsten tussen RISC-V, ARM en x86 architecturen te bespreken. Ik bespreek hun geschiedenis, hun voor- en nadelen en wat ze van elkaar onderscheidt.

Aan het eind krijg je een idee waarom het zoveel werk zou zijn om een x86 Raspberry Pi te maken, maar waarom een RISC-V Raspberry Pi niet uitgesloten is.

Overzicht

RISC-VARMx86
OorsprongRISC-V InternationaalArm Ltd.Intel en AMD
InstructiesetRISC (computer met beperkte instructieset)RISC (computer met beperkte instructieset)CISC (Complex Instruction Set Computing)
BytevolgordeMeestal little-endian (instelbaar door gebruiker)Typisch bi-endiaans (instelbaar door gebruiker)Little-endian
ToepassingenIngebedde systemen, IoT-apparaten, aangepaste oplossingenMobiele apparaten, ingebedde systemen, serversDesktops, laptops, servers, werkstations
LicentiemodelOpen-source, royalty-vrije licentiesARM geeft zijn ontwerpen in licentie aan fabrikantenIntel en AMD produceren hun eigen chips
EcosysteemOntwikkelen van ecosysteem, open-source initiatievenGroot ecosysteem, uitgebreide ondersteuning door derdenGroot software- en hardware-ecosysteem

Laten we nu elk van deze punten doornemen.

Oorsprong

En laat ik beginnen met x86, de oudste van de drie. De x86 architectuur gaat terug tot 1978, toen Intel de 8086 familie lanceerde. De x86 architectuur was CISC, wat in die tijd erg populair was. Vandaag de dag is de x86-architectuur nog steeds in handen van Intel, samen met AMD.

De ARM-architectuur begon 7 jaar later, toen Acorn Computers Ltd. de ARM1 uitbracht. Acorn Computers bestaat vandaag de dag niet meer, maar hun ARM-architectuur leeft voort via Arm Ltd. Arm Ltd. geeft de ARM-architectuur nu in licentie aan andere bedrijven.

Ter vergelijking, RISC-V is extreem nieuw en is pas in 2010 begonnen aan de University of California, Berkeley. In 2015 kwamen een aantal techbedrijven (van IBM tot Google tot Nvidia) samen om de RISC-V Foundation op te richten. In 2020 verhuisde de RISC-V Foundation vanwege geopolitieke problemen naar Zwitserland en werd RISC-V International.

RISC-V-logo

Instructieset

Laat me eerst het verschil tussen RISC en CISC verduidelijken.

RISC-processors gebruiken een kleine, geoptimaliseerde set instructies die elk een enkele klokcyclus in beslag nemen, waardoor ze sneller en voorspelbaarder kunnen worden uitgevoerd.

CISC-processoren daarentegen hebben een grotere en meer diverse instructieset, waaronder vaak complexe instructies die meerdere klokcycli kunnen vereisen, wat leidt tot mogelijk langzamere maar veelzijdigere prestaties bij het uitvoeren van verschillende taken.

RISC-V is dus duidelijk gebaseerd op RISC. Maar wat het onderscheidt is het feit dat het open-source is.

In hun artikel uit 2014, Instructiesets moeten vrij zijn: de argumenten voor RISC-VKrste Asanović en David A. Patterson vergelijken RISC-V met Linux. Het idee is dat er een volledig open-source Instructieset-architectuur is. Dus mensen zouden het moeten kunnen manipuleren, ermee spelen en het delen.

Asanović en Patterson stellen dat dit innovatie, betere transparantie en lagere kosten kan stimuleren.

Nu moet ik vermelden dat, hoewel RISC-V zelf open-source is, specifieke implementaties van RISC-V zowel open-source als propriëtair kunnen zijn.

ARM instructies zijn ook op RISC gebaseerd. Maar omdat Arm Ltd. licenties uitgeeft op de architectuur, zijn ze allesbehalve open-source. Zoals Asanović en Patterson het zeggen: "Met een ARM-licentie kun je niet eens een ARM-kern ontwerpen; je mag alleen hun ontwerpen gebruiken." Hoewel het niet helemaal zo eenvoudig is, is dat over het algemeen wel het geval.

Hierboven zei ik dat de x86-architectuur op CISC is gebaseerd. Dat is waar, maar ik moet vermelden dat sinds de jaren '90 x86 processoren ook SIMD (Single Instruction, Multiple Data) instructies bevatten voor parallelle verwerkingstaken. Hierdoor kunnen multicore processoren ook snel werken.

Per slot van rekening is 's werelds snelste supercomputer - Frontier - gebaseerd op x86.

Maar de op één na snelste supercomputer ter wereld - Fugaku - is gebaseerd op ARM.

Veel mensen beweren dat het onderscheid tussen RISC en CISC tegenwoordig niet meer zo belangrijk is. Omdat moderne processoren zo krachtig zijn, zeggen ze dat de verschillen tussen deze typen instructiesets vrijwel verdwenen zijn. In hun pleidooi voor RISC-V stellen Asanović en Patterson echter dat "het tientallen jaren geleden is dat een nieuwe CISC ISA succesvol is geweest" en dat het dus logischer is om voor een RISC-gebaseerde architectuur te kiezen.

Bytevolgorde

Endianness verwijst naar de bytevolgorde waarin multibyte gegevenstypen worden opgeslagen in het computergeheugen.

In little-endian systemen wordt de minst significante byte opgeslagen op het laagste geheugenadres, terwijl in big-endian systemen de meest significante byte wordt opgeslagen op het laagste adres.

Endianness is super belangrijk wanneer je gegevens wilt uitwisselen tussen processoren. Als je informatie van een big-endian systeem naar een little-endian systeem stuurt, dan kunnen je gegevens gemakkelijk corrupt raken als je ze niet goed converteert.

RISC-V is typisch little-endian. Dat is echter iets dat je kunt instellen als je wilt dat je RISC-V een big-endian bytevolgorde heeft.

ARM-architectuur kan little-endian of big-endian zijn, afhankelijk van de specifieke implementatie. Net als bij RISC-V kan een ARM chip geconfigureerd worden als big-endian.

Raspberry Pis zijn standaard little-endian. Je kunt dit zelf controleren door naar je Raspberry Pi te gaan, de terminal te openen en te starten:

lscpu

De x86-architectuur is little-endian. Maar in tegenstelling tot RISC-V en ARM architectuur, kun je dit niet veranderen. Dat het little-endian is, is een kenmerk van de x86-architectuur.

Toepassingen

Ik wil even terugkomen op het artikel van Asanović en Patterson. Hoewel het artikel uit 2014 stamt, maakt het een heel belangrijk punt. Ze beweren dat "terwijl de 80×86 de PC-oorlogen won, RISC de tablets en smartphones van het PostPC-tijdperk domineert; in 2013 werden meer dan 10 [miljard] ARM's verscheept, vergeleken met 0,3 [miljard] 80x86's."

Dat is een enorm verschil, maar het laat ook zien dat de toepassingen voor een architectuur het belang ervan helpen bepalen. Daarom was het in 2020 zo'n groot succes toen Apple de M1-chip onthulde voor zijn nieuwe computers. Als Apple overstapte van x86 naar ARM, wat betekent dat dan voor de toekomst van x86?

Toch domineert x86 nog steeds de computermarkt. Desktops, laptops en servers blijven allemaal voornamelijk vertrouwen op de x86-architectuur.

ARM, daarentegen, zit meestal in smartphones en tablets. En natuurlijk in je nederige Raspberry Pi. Echter, het lijkt erop dat ARM ook de computerwereld gaat overnemen.

smartphone op tafel

RISC-V hoopt duidelijk een deel van de ruimte van de ARM-architectuur in te pikken, maar het blijft nog open over wat het in de toekomst zou kunnen doen. Zowel universiteiten als de industrie investeren in RISC-V en houden de ontwikkeling nauwlettend in de gaten.

Als ARM is begonnen met het afkalven van x86, zal RISC-V dan ook beginnen met het afkalven van ARM?

Licentiemodel

De meest beperkende van de drie is de x86. Zoals ik hierboven al zei, zijn er eigenlijk maar twee bedrijven die chips met x86-architectuur maken - Intel en AMD. De chips zijn niet aanpasbaar en de architectuur is volledig gepatenteerd.

De ARM-architectuur werkt anders vanwege het licentiemodel. Met een typische ARM-licentie kun je geen ARM-architectuurontwerp maken. Er zijn echter uitzonderingen, want Apple's M1-chip was voorspelbaar aangepast aan hun wensen.

De RISC-V architectuur is open-source en vrij van royalty's, waardoor iedereen RISC-V processors kan ontwerpen en maken zonder licentiekosten te betalen. Het is echt als de Linux van ISA's.

Interessant is wel dat Intel en AMD allebei lid zijn van RISC-V International. Het is dus duidelijk dat zij het ook waardevol vinden om bij te dragen aan de RISC-V architectuur.

Ecosysteem

Het ecosysteem van RISC-V groeit snel, met veel bedrijven en onderzoekers die bijdragen aan open-source projecten en op RISC-V gebaseerde producten ontwikkelen.

Hoewel het software-ecosysteem op dit moment niet enorm is, groeit het wel. Je kunt de ontwikkelingen zien met het RISE-project (RISE staat voor RISC-V Software Ecosystem).

ARM en x86 domineren beide in hun respectievelijke markten. De ecosystemen voor beide zijn goed gevestigd en uitgebreid.

Dit is een van de duidelijkste nadelen van RISC-V. Het heeft gewoon niet de brede toepassing van de andere twee en de concurrentie is hier hevig.

RISC en CISC in actie

In deze fantastische video van De [Fill in the Blank] programmeurkun je precies zien hoe RISC en CISC werken op het niveau van assemblycode.

Hier kun je het verschil tussen RISC en CISC in detail zien.

Op ARM en RISC-V heeft de Assembly Code kortere regels, maar meer regels. Op x86 zijn de regels van Assembly complexer, maar zijn het er minder.

De video laat zien hoe de GCC-compiler en de Clang-compiler C++-code omzetten in assembly voor elk van de drie ISA's - ARM vs. RISC-V vs. x86_64. Bekijk de video:

Conclusie

We hebben onlangs een artikel gepubliceerd waarin we de Orange Pi 5 Plus met Raspberry Pi 5 en Rock 5 Model B. Interessant is dat, terwijl alle drie deze SBC's ARM-gebaseerd zijn, Radxa eigenlijk een x86 model heeft genaamd Rots Pi X.

Sommige mensen maken zich zorgen dat een bredere toepassing van RISC-V meer fragmentatie zal veroorzaken. Dit komt mooi overeen met de vergelijking met Linux. Hoeveel Linux-distributies zijn er vandaag de dag? De RISC-V gemeenschap werkt echter actief aan het ontwikkelen van standaarden om fragmentatie en compatibiliteitsproblemen te minimaliseren.

Velen (inclusief enkele tegenstanders) zien RISC-V als een manier om chiparchitectuur de toekomst in te duwen.

Nu de handelsoorlogen tussen landen oplaaien, wordt het natuurlijk een stuk lastiger. Arm Ltd. is gevestigd in het VK en Intel en AMD in de VS. Het is niet verwonderlijk dat landen als China en Rusland zich richten op RISC-V.

Er zijn echter mensen die denken dat RISC-V gedoemd is te mislukken. Zij beweren dat RISC-V niet alleen oorzaak fragmentatie, maar eerder dat RISC-V al is gefragmenteerd. En daarom komt het niet van de grond.

Update (Novem6 maart 2023): Arm Holdings heeft zojuist aangekondigd dat ze een minderheidsbelang in Raspberry Pi Ltd. hebben gekocht. Het is onduidelijk wat dit betekent voor de toekomst. Je kunt hier meer lezen:

Wat denk jij? Is RISC-V de toekomst? Laat het ons weten in de comments!

3 Opmerkingen

  1. tozo op november 6, 2023 op 1:13 pm

    Zoals ik hierboven al zei, zijn er eigenlijk maar drie bedrijven die chips met x86-architectuur maken - Intel en AMD.
    Dat is... maar twee. 🙂

    • Adam op november 7, 2023 op 12:36 pm

      Helemaal juist - bedankt, tozo!

  2. Bruce Hoult op november 8, 2023 op 10:27 pm

    Ik denk dat het een beetje oneerlijk is om de leeftijd van RISC-V te tellen vanaf de datum dat enkele universitaire onderzoekers in 2010 in een kroeg (of wat dan ook) besloten om hun eigen ISA te gaan ontwerpen, terwijl de anderen worden geteld vanaf het moment dat de eerste commerciële chip op de markt kwam.

    De ISA onderging meerdere incompatibele versies naarmate de ideeën evolueerden, zowel op het niveau van de assembleertaal als in de binaire codering.

    De eerste RISC-V chip die je kon kopen, de FE310 van SiFive, kwam uit in december 2016 op het HiFive1 Arduino-kloonbord. Het is gewoon een microcontroller, met alleen instructies voor de gebruikersmodus. Machine mode en Supervisor mode instructies en CSR's waren onder actieve ontwikkeling en incompatibele veranderingen tot niet lang voordat de basis ISA werd geratificeerd (bevroren, gepubliceerd) in juli 2019. SiFive bracht begin 2018 een Linux SBC uit, HiFive Unleashed (met de FU540 SoC), waarvan er ongeveer 500 werden gemaakt, maar dat was experimenteel en ze waren erop voorbereid dat het verweesd zou worden als er incompatibele wijzigingen in de ISA zouden worden aangebracht vóór de ratificatie.

    Ik denk dat de eerlijke "RISC-V oorsprongsdatum" ergens ligt tussen de publicatie van Privileged Architecture 1.10 in mei 2017 en de ratificatie in juli 2019. Zeker niet 2010.

    Over een ander onderwerp merk ik op dat 8086 verreweg de minst CISC-achtige van de CISC-chips was en dit is een belangrijke reden waarom het het RISC-tijdperk heeft overleefd (de miljarden van de IBM PC en klonen hebben ook veel geholpen!) VAX, M68000, Z8000, NS 16032/32032 waren gewoon te complex om snel te maken.

    "Sinds de jaren '90 bevatten x86-processoren ook SIMD-instructies (Single Instruction, Multiple Data) voor parallelle verwerkingstaken. Hierdoor kunnen multicore processoren ook snel draaien." Deze zijn absoluut niet gerelateerd.

    "De RISC-V architectuur is open-source en vrij van royalty's, waardoor iedereen RISC-V processors kan ontwerpen en produceren zonder licentiekosten te betalen. Het is echt als de Linux onder de ISA's." Dat is waar, maar zelf ontwerpen kost veel meer dan een licentie nemen op een ontwerp van een van de tientallen commerciële RISC-V core providers (met bedrijfsmodellen die erg lijken op die van Arm).

Laat een reactie achter