En enkel guide till ARM vs. RISC-V vs. x86
Introduktion
Vi har pratat en hel del om Raspberry Pi 5 här på PiCockpit, förstås. Häromdagen hittade jag en diskussion om Raspberry Pi 5 som handlade om Pi:ns ARM-arkitektur och hur den står sig mot RISC-V-arkitekturen. I flera år har folk pratat om Raspberry Pis kompatibilitet med x86. Men hur är det med en RISC-V Pi?
Detta är särskilt intressant eftersom Raspberry Pi är medlem i RISC-V International.
Det är Arduino också, faktiskt.
Så det finns en potentiell framtid för RISC-V-arkitekturkretsar i Raspberry Pis. Jag skulle dock inte hålla andan och hoppas på en x86 Raspberry Pi.
Trots allt, i en diskussion som nyligen publicerades av Raspberry PiGordon Hollingworth sade: "Folk frågar: 'Skulle du kunna göra det? Kan du bygga en x86 Raspberry Pi?' Det är som, 'Åh, Gud, det skulle vara mycket arbete. Det kan man, men..."
Därför tyckte jag att det var dags att gå igenom några av de viktigaste skillnaderna och likheterna mellan RISC-V-, ARM- och x86-arkitekturerna. Jag kommer att gå igenom deras historia, deras fördelar och nackdelar, och vad som skiljer dem från varandra.
I slutet får du en känsla av varför det skulle vara så mycket jobb att göra en x86 Raspberry Pi, men varför en RISC-V Raspberry Pi inte är helt otänkbar.
Översikt
RISC-V | ARM | x86 | |
---|---|---|---|
Ursprung | RISC-V International | Arm Ltd. | Intel och AMD |
Instruktionsuppsättning | RISC (Reduced Instruction Set Computing) | RISC (Reduced Instruction Set Computing) | CISC (Complex Instruction Set Computing) |
Byteordning | Typiskt little-endian (konfigurerbart av användaren) | Typiskt bi-endian (kan konfigureras av användaren) | Liten-endian |
Tillämpningar | Inbyggda system, IoT-enheter, anpassade lösningar | Mobila enheter, inbyggda system, servrar | Stationära datorer, bärbara datorer, servrar, arbetsstationer |
Modell för licensiering | Öppen källkod, royaltyfri licensiering | ARM licensierar sina konstruktioner till tillverkare | Intel och AMD tillverkar sina egna chip |
Ekosystem | Utveckling av ekosystem, initiativ för öppen källkod | Stort ekosystem, omfattande stöd från tredje part | Stort ekosystem för programvara och hårdvara |
Låt oss nu gå igenom var och en av dessa punkter.
Ursprung
Och låt mig först börja med x86, eftersom det är den äldsta av de tre. x86-arkitekturen går tillbaka till 1978, då Intel lanserade 8086-familjen. x86-arkitekturen var CISC, vilket var hett på den tiden. Idag är x86-arkitekturen fortfarande under kontroll av Intel, tillsammans med AMD.
ARM-arkitekturen fick sin början 7 år senare, när Acorn Computers Ltd. lanserade ARM1. Acorn Computers finns inte längre kvar idag, men deras ARM-arkitektur lever vidare genom Arm Ltd. Arm Ltd. licensierar nu ut ARM-arkitekturen till andra företag.
I jämförelse är RISC-V extremt nytt och började utvecklas redan 2010 vid University of California, Berkeley. År 2015 gick ett gäng teknikföretag (alla från IBM till Google till Nvidia) samman för att grunda RISC-V Foundation. På grund av geopolitiska frågor flyttade RISC-V Foundation 2020 till Schweiz och blev RISC-V International.
Instruktionsuppsättning
Låt mig först klargöra skillnaden mellan RISC och CISC.
RISC-processorer använder en liten, optimerad uppsättning instruktioner, som var och en tar en enda klockcykel, vilket möjliggör snabbare och mer förutsägbar exekvering.
CISC-processorer har däremot en större och mer varierad uppsättning instruktioner, som ofta innehåller komplexa instruktioner som kan kräva flera klockcykler, vilket leder till potentiellt långsammare men mer mångsidiga prestanda för hantering av olika uppgifter.
Så RISC-V är naturligtvis RISC-baserat. Men det som skiljer den från andra är att den är öppen källkod.
I sin rapport från 2014, Instruktionsuppsättningar bör vara gratis: Argumenten för RISC-V, Krste Asanović och David A. Patterson jämför RISC-V med Linux. Tanken är att det finns en helt öppen källkod för Instruction Set Architecture. Så människor bör kunna manipulera den, leka med den och dela den.
Asanović och Patterson menar att detta kan leda till innovation, bättre transparens och lägre kostnader.
Nu bör jag nämna att även om RISC-V i sig är öppen källkod, kan specifika implementeringar av RISC-V vara både öppen källkod eller proprietära.
ARM-instruktioner är också RISC-baserade. Men eftersom Arm Ltd. licensierar ut arkitekturen är de allt annat än öppen källkod. Som Asanović och Patterson uttrycker det: "En ARM-licens låter dig inte ens designa en ARM-kärna; du får bara använda deras design." Även om det inte är riktigt så enkelt är det i allmänhet så.
Ovan sa jag att x86-arkitekturen är CISC-baserad. Det stämmer, men jag bör nämna att x86-processorer sedan 90-talet även innehåller SIMD-instruktioner (Single Instruction, Multiple Data) för parallella bearbetningsuppgifter. Detta gör att multicore-processorer också kan köras snabbt.
Världens snabbaste superdator - Frontier - är trots allt x86-baserad.
Men världens näst snabbaste superdator - Fugaku - är ARM-baserad.
Många hävdar att skillnaden mellan RISC och CISC inte är särskilt viktig idag. Eftersom moderna processorer är så kraftfulla, menar de att skillnaderna mellan dessa typer av instruktionsuppsättningar praktiskt taget har försvunnit. I sin uppmaning till RISC-V hävdar dock Asanović och Patterson att "[d]et har gått årtionden sedan någon ny CISC ISA har varit framgångsrik" och att det därför är mer logiskt att välja en RISC-baserad arkitektur.
Byteordning
Endianness avser den byteordning i vilken multibyte-datatyper lagras i datorminnet.
I little-endian-system lagras den minst signifikanta byten på den lägsta minnesadressen, medan i big-endian-system lagras den mest signifikanta byten på den lägsta adressen.
Endianness är superviktigt när du vill utbyta data mellan processorer. Om du skickar information från ett big-endian-system till ett little-endian-system kan dina data lätt bli korrupta om du inte konverterar dem på rätt sätt.
RISC-V är vanligtvis little-endian. Det är dock något du kan konfigurera om du vill att RISC-V ska ha en big-endian byteordning.
ARM-arkitekturen kan vara antingen little-endian eller big-endian, beroende på den specifika implementeringen. Precis som RISC-V kan du konfigurera ett ARM-chip till att vara big-endian.
Raspberry Pis är, som standard, little-endian. Du kan själv kontrollera detta genom att gå till din Raspberry Pi, öppna terminalen och köra
lscpu
x86-arkitekturen är little-endian. Men till skillnad från RISC-V- och ARM-arkitekturen kan du inte ändra detta. Att vara little-endian är en egenskap hos x86-arkitekturen.
Tillämpningar
Jag vill gå tillbaka till Asanovićs och Pattersons artikel ett ögonblick. Även om artikeln är från 2014 innehåller den en mycket viktig poäng. De hävdar att "[m]edan 80×86 vann PC-kriget dominerar RISC i PostPC-erans surfplattor och smarta telefoner; 2013 levererades mer än 10 [miljarder] ARM-datorer, jämfört med 0,3 [miljarder] 80x86-datorer."
Det är en enorm skillnad, men det visar också att tillämpningarna för en arkitektur hjälper till att definiera dess betydelse. Det var därför det var en så stor grej 2020 när Apple presenterade M1-chippet för sina nya datorer. Om Apple bytte från x86 till ARM, vad betyder det då för x86:s framtid?
Trots detta dominerar x86 fortfarande datormarknaden. Stationära datorer, bärbara datorer och servrar bygger alla fortfarande på x86-arkitekturen.
ARM, å sin sida, används vanligtvis i smartphones och surfplattor. Och naturligtvis i din enkla Raspberry Pi. Hur som helst, det ser ut som om ARM kan börja ta över datorvärlden också.
RISC-V hoppas uppenbarligen kunna ta en del av ARM-arkitekturens utrymme, men det är fortfarande öppet vad den kan göra i framtiden. Både universitet och industri investerar i RISC-V och följer dess utveckling noga.
Om ARM har börjat utmana x86, kommer RISC-V att börja utmana ARM?
Modell för licensiering
Den mest restriktiva av de tre är x86. Som jag nämnde ovan är det egentligen bara två företag som tillverkar chip med x86-arkitektur - Intel och AMD. Chipen är inte anpassningsbara och arkitekturen är helt proprietär.
ARM-arkitekturen fungerar annorlunda på grund av licensmodellen. En typisk ARM-licens tillåter dig inte att skapa en ARM-arkitekturdesign. Det finns dock undantag, eftersom Apples M1-chip var förutsägbart anpassat efter deras önskemål.
RISC-V-arkitekturen har öppen källkod och är royaltyfri, vilket innebär att vem som helst kan konstruera och tillverka RISC-V-processorer utan att betala licensavgifter. Det är verkligen som ISA:ernas Linux.
Intressant är dock att Intel och AMD båda är medlemmar i RISC-V International. Så uppenbarligen tycker de också att det är värdefullt att bidra till RISC-V-arkitekturen.
Ekosystem
RISC-V:s ekosystem växer snabbt, med många företag och forskare som bidrar till projekt med öppen källkod och utvecklar RISC-V-baserade produkter.
Även om ekosystemet för programvara inte är jättestort just nu så växer det. Du kan se dess utveckling med RISE-projektet (RISE står för RISC-V Software Ecosystem).
När det gäller ARM och x86 är de båda dominerande på sina respektive marknader. Ekosystemen för båda är väletablerade och omfattande.
Detta är en av de tydligaste nackdelarna med RISC-V. Den har helt enkelt inte samma breda spridning som de andra två och konkurrensen här är hård.
RISC och CISC i praktiken
I denna fantastiska video från Programmeraren [Fyll i det tomma]kan du se exakt hur RISC och CISC fungerar på Assembly Code-nivå.
Här kan du se skillnaden mellan RISC och CISC i detalj.
På ARM och RISC-V har Assembly-koden kortare rader, men fler av dem. På x86 är raderna med Assembly-kod mer komplexa, men det finns färre av dem.
Videon går igenom hur GCC-kompilatorn och Clang-kompilatorn omvandlar C++-kod till Assembly för var och en av de tre ISA:erna - ARM vs. RISC-V vs. x86_64. Kolla in det här:
Slutsats
Vi publicerade nyligen en artikel som jämför Orange Pi 5 Plus med Raspberry Pi 5 och Rock 5 Model B. Intressant nog är alla dessa tre SBC:er ARM-baserade, medan Radxa faktiskt har en x86-modell som heter Sten Pi X.
Vissa människor oroar sig för att ett bredare införande av RISC-V kommer att leda till ökad fragmentering. Detta stämmer väl överens med jämförelsen med Linux. Hur många Linux-distributioner finns det idag? RISC-V-gemenskapen arbetar dock aktivt med att utveckla standarder för att minimera fragmentering och kompatibilitetsproblem.
Många (inklusive vissa kritiker) ser RISC-V som ett sätt att driva chiparkitekturen in i framtiden.
Naturligtvis blir saker och ting mycket svårare när handelskriget mellan länderna trappas upp. Arm Ltd. är baserat i Storbritannien och Intel och AMD är baserade i USA. Det är inte förvånande att länder som Kina och Ryssland vänder sig mot RISC-V.
Det finns dock människor som anser att RISC-V är dömt att misslyckas. De hävdar att RISC-V inte bara kommer att orsak fragmentering, utan snarare att RISC-V redan är fragmenterad. Och därför kommer den inte att komma igång.
Uppdateringe (Novem6 ber, 2023): Arm Holdings har just meddelat att de har köpt en minoritetsandel i Raspberry Pi Ltd. Det är oklart vad detta innebär för framtiden. Du kan läsa mer här:
Vad tycker du om det? Är RISC-V framtiden? Låt oss veta i kommentarerna!
Som jag nämnde ovan är det egentligen bara tre företag som tillverkar chip med x86-arkitektur - Intel och AMD.
Det är... bara två. 🙂 ...
Helt rätt - tack, tozo!
Jag tycker att det är lite orättvist att räkna RISC-V:s ålder från det datum då några universitetsforskare satt på en pub (eller något liknande) 2010 och bestämde sig för att börja designa sin egen ISA, medan de andra räknas från när det första kommersiella chipet introducerades på marknaden.
ISA genomgick flera inkompatibla versioner allteftersom idéerna utvecklades, både på monteringsspråksnivå och i den binära kodningen.
Det första RISC-V-chippet du kunde köpa, SiFives FE310, kom ut i december 2016 på Arduino-klonkortet HiFive1. Det är bara en mikrokontroller, med endast användarlägesinstruktioner. Instruktioner och CSR:er för maskinläge och supervisorläge var under aktiv utveckling och inkompatibla ändringar fram till inte långt innan ISA-basen ratificerades (frystes, publicerades) i juli 2019. SiFive lanserade en Linux SBC, HiFive Unleashed (med FU540 SoC) i början av 2018, med cirka 500 tillverkade, men den var experimentell och de var beredda på att den skulle bli orphaned om inkompatibla ändringar gjordes i ISA innan ratificeringen.
Jag tror att det rättvisa datumet för "RISC-V ursprung" är någonstans mellan publiceringen av Privileged Architecture 1.10 i maj 2017 och ratificeringen i juli 2019. Definitivt inte 2010.
I ett annat ämne noterar jag att 8086 var den överlägset minst CISCiga av CISC-chipen och detta är en stor anledning till att den kunde överleva in i RISC-eran (miljarderna från IBM PC och kloner hjälpte också mycket!). VAX, M68000, Z8000, NS 16032/32032 var helt enkelt för komplexa för att kunna göras snabba.
"Sedan 90-talet innehåller x86-processorer även SIMD-instruktioner (Single Instruction, Multiple Data) för parallella bearbetningsuppgifter. Detta gör att multicore-processorer också kan köras snabbt." Dessa är helt orelaterade.
"RISC-V-arkitekturen är öppen källkod och royaltyfri, vilket gör att vem som helst kan konstruera och tillverka RISC-V-processorer utan att betala licensavgifter. Det är verkligen som ISA:ernas Linux." Sant, men att designa sin egen kostar mycket mer än att licensiera en design från en av de dussintals kommersiella RISC-V-kärnleverantörerna (med mycket liknande affärsmodeller som Arm)