ARM, x86 en RISC-V: het verschil uitgelegd

Architectuur, efficiëntie en compatibiliteit

De dominantie van de x86-chips van Intel neemt langzaam maar zeker af, terwijl alternatief ARM dreigt zijn onafhankelijkheid te verliezen met de overname door Nvidia. RISC-V kan een opensource-alternatief zijn, maar heeft nog veel te bewijzen. Wat is het verschil tussen al deze architecturen, en wat maakt het uit?

Dit stuk is een onderdeel van onze IT uitgelegd‘-reeks, waarin we belangrijke begrippen en technologieën achter producten en innovaties vandaag op een begrijpelijke manier uitleggen.

De ene microchip is de andere niet. Chips verschillen onderling van elkaar door hun instructieset-architectuur (ISA). Die bepaalt kort door de bocht welke taal ze spreken. Processors van Intel en AMD zijn vloeiend in de x86-ISA, terwijl chips gebaseerd op de designs van Arm enkel de ARM-taal spreken. De Snapdragonprocessors van Qualcomm, Graviton-chips van AWS en M1-CPU van Apple zijn daar voorbeelden van. Minder gekend is de RISC-V-ISA. Die open architectuur wordt vandaag vooral voor kleinere en eenvoudigere microchips gebruikt, maar wint aan belang. Zo plant Europa om eigen HPC-chips op basis van RISC-V te ontwikkelen.

Eén ISA is fundamenteel incompatibel met een andere. Dat betekent in de praktijk dat software geschreven voor x86-chips niet werkt op ARM en RISC-V, en andersom. De basis-instructies die de toepassingen van de processor vragen, klinken als nonsens voor niet compatibele ISA’s. Daarom kan je niet zomaar een Androidtoepassing op je Windows-PC installeren, en moeten bedrijven als Adobe hun populaire softwaresuites herwerken van x86 naar ARM voor compatibiliteit met de M1-MacBook.

lees ook

ARM in een MacBook: lost Apple de verwachtingen in?

De taalbarrière is niet onoverkomelijk. Een ISA kan samenwerken met een tolk om de taal van een applicatie geschreven voor een andere ISA toch te begrijpen. Zo’n tolk is een emulator. Rosetta 2 op de M1-macs is een mooi voorbeeld. Rosetta 2 vertaalt x86-instructies naar ARM-instructies, zodat de M1-chip ze kan uitvoeren. Dat kost tijd en moeite, waardoor de applicaties niet op volledige snelheid draaien en het hele proces meer stroom verbruikt dan nodig. Net als in het echte leven is praten met een tolk minder wenselijk dan een echte conversatie in de moedertaal.

Hardwarefabrikanten moeten dus keuzes maken. De meeste laptops draaien op x86, want daar is het software-ecosysteem op voorzien. ARM dringt zich op als waardig alternatief en heeft zoals we straks zullen zien enkele voordelen, maar de beschikbare software die de ARM-ISA ondersteunt, is in vergelijking beperkter. RISC-V tot slot heeft op papier erg interessante kaarten omwille van de openheid, maar mist een ecosysteem. Om de voor- en nadelen van iedere architectuur te kunnen beoordelen, moeten we hun belangrijkste eigenschappen analyseren.

x86-Licenties

De x86-instructieset-architectuur werd door Intel in het leven geroepen in 1978. De architectuur verscheen in het wild met de 80186, 80286, 80386 en 80486-processors, waar ze haar naam van krijgt. x86 is sinds dan sterk geëvolueerd, maar rust nog steeds op dezelfde fundering. In de jaren ’80 ging Intel een contract aan met AMD voor de productie van 8086 en 8088-processors onder licentie. Die samenwerking kwam enkele jaren later ten einde, wat een lange juridische strijd in gang zette. AMD ontwikkelde in 1991 Am386: een perfecte kloon van Intel 80386 x86. Na de nodige rechtszaken kreeg AMD het recht om Am386 te verkopen zonder Intel-licentie.

AMD heeft vandaag het recht om zelf chips te ontwikkelen op x86-architectuur.

Uiteindelijk kwamen Intel en AMD tot een overeenkomst: AMD heeft vandaag het recht om zelf chips te ontwikkelen op x86-architectuur, zolang het enkel de fundamentele ISA gebruikt en de rest van de processor zelf ontwikkelt. AMD ontwikkelde later als eerste de 64 bit-variant van de x86-architectuur die vandaag alomtegenwoordig is. Die innovatie brengt beide partijen in balans. Technisch gezien heeft AMD de zegen van Intel nodig om x86-chips te bouwen, maar omgekeerd heeft Intel de goedkeuring van AMD nodig om moderne 64 bit-varianten van x86-chips te produceren. Een poging van Intel om een eigen 64 bit-variant van x86 te bouwen onder de naam Itanium, raakte nooit van grond.

Naast Intel en AMD is er nog één fabrikant met de x86-licentie: het kleine Taiwanese VIA. VIA bouwt bescheiden zuinige processors op x86  met iets oudere technologie en concurreert zo niet rechtstreeks met Intel of AMD. Verder heeft geen enkele andere partij ter wereld het recht om x86-chips te ontwikkelen.

Wie zijn hardware of software voor x86 bouwt, gaat in de praktijk een gedwongen huwelijk aan met Intel of AMD. De chiparchitectuur is alomtegenwoordig in de server- en pc-wereld en het software-ecosysteem is immens, maar daar stoppen de voordelen. Wens je dat x86 in een bepaalde richting innoveert, heb je een specifieke implementatie nodig voor de hardware die je wil bouwen of wil je een bepaalde accelerator inbouwen op de chip? Pech. Tenzij Intel of AMD beslissen om een processor te ontwikkelen die aansluit bij je noden, moet je met een externe kaart zoals een FPGA werken. x86-chips zijn te nemen of te laten.

ARM

ARM, kort voor Advanced RISC Machines, werd ontwikkeld door Acorn in de jaren ’80. De ARM-ISA wordt ontwikkeld door Arm. Dat bedrijf is voorlopig nog eigendom van het Japanse Softbank, maar Nvidia hoopt op goedkeuring van mededingingsautoriteiten wereldwijd voor een historische overname. Arm als bedrijf ontwikkelt op ARM gebaseerde CPU-designs, die het vervolgens onder licentie aan derden verkoopt. De Cortex A-familie van processors is daarvan de bekendste.

Bedrijven wereldwijd ontwikkelen en verkopen hardware gebaseerd op ARM-designs. De mobiele processors van Samsung en MediaTek zijn de bekendste en maken gebruik van de processordesigns van Arm. Andere bedrijven zoals Apple en Qualcomm nemen een licentie op de ISA, en bouwen eigen chips op die fundering. Een ARM-licentie is nodig om ARM-compatibele chips te bouwen, maar dat vinden de meeste organisaties geen probleem. Arm zelf is immers een onafhankelijk bedrijf en wordt als het Zwitserland van de chipwereld gezien. Bedrijven werken graag samen met Arm omdat het bedrijf niet met hen concurreert. Arm bouwt immers zelf geen ARM-chips.

lees ook

Arm en Nvidia: de chipwereld zal nooit meer dezelfde zijn

Het licentiemodel geeft bedrijven zoals Apple of Qualcomm de mogelijkheid om eigen innovaties te implementeren bovenop de ARM-ISA. In tegenstelling tot x86 krijg je met ARM dus wel flexibiliteit. Wil je profiteren van het ARM-ecosysteem maar toch werken met een chip die meer op maat van je toestel werkt, dan krijg je onder een ARM-licentie de mogelijkheid om zo’n processor te ontwikkelen. Denk daarbij aan smartphonechips met een eigen AI-kern in, zoals bijvoorbeeld de Kirin-processors van Huawei.

ARM en Arm hebben één groot probleem: Nvidia heeft het bedrijf overgenomen voor 40 miljard dollar. Die overname is nog niet rond: regulatoren wereldwijd moeten eerst hun zegen geven en dat is niet vanzelfsprekend. Komen Arm en de ARM-architectuur onder Nvidia terecht, dan verliest het Zwitserland van de chipwereld zijn neutraliteit. Zoals gezegd maakt Arm geen eigen chips en concurreert het dus niet met zijn klanten. Nvidia is wel een rechtstreekse concurrent van ARM-licentiehouders. Die staan er niet voor te springen om de kas van een rechtstreekse rivaal te spijzen en vrezen bovendien dat ze tweederangsklanten zullen worden.

Komen Arm en de ARM-architectuur onder Nvidia terecht, dan verliest het Zwitserland van de chipwereld zijn neutraliteit.

Daar komt bij dat de ARM-architectuur na de overname door Nvidia in Amerikaanse handen komt en dus onderhevig is aan de grillen van de Amerikaanse regering. Zoals we zagen met de regering Trump heeft de VS de macht om de export van Amerikaanse producten aan banden te leggen, zelfs zonder gegronde reden. Niet-Amerikaanse ARM-chipbouwers mogen zich terecht afvragen in welke mate ze dat een goed idee vinden.

ARM heeft zo een probleem. De architectuur wint aan belang om technische redenen waar we zo meteen verder op ingaan, maar ook omwille van de flexibiliteit en onafhankelijkheid die ze biedt in contrast met x86. Dat argument valt met de overname van Nvidia weg, waardoor de roep naar een beter alternatief voor x86 alsmaar luider wordt.

RISC-V

Dat alternatief heet RISC-V (uitgesproken als risk five). De RISC-V-architectuur is opensource. Ze werd in 2010 geboren in het Parallel Computing-laboratorium van de Amerikaanse Berkeley-universiteit. De universiteit en sponsors uit de industrie voorzagen de fondsen voor de initiële ontwikkeling van RISC-V. Vandaag is de architectuur beschikbaar als opensource-project, vrij van patenten. Je kan RISC-V gerust zien als het ISA-equivalent van Linux. Alle code en alle documentatie is publiek beschikbaar, zodat iedereen die wil de designs kan bekijken, bekritiseren en verbeteren.

Dat is een immens verschil met ARM en x86. De eigenaars van die ISA’s houden hun kaarten dicht bij de borst. Het wat en waarom van x86-design is geweten door ingenieurs van Intel, AMD en VIA, maar niemand anders. Omdat er geen licentie nodig is, kan iedereen RISC-V-compatibele chips bouwen. SiFive, waarop Intel zijn overname-oog intussen liet vallen, is één van de belangrijke chipontwikkelaars.

lees ook

Europa laat zien hoe het tegen 2021 eigen HPC-chips zal bouwen

Wie RISC-V-chips bouwt, bindt zich niet aan een licentie of bedrijf. Die onafhankelijkheid spreekt aan. De Europese Unie wil bijvoorbeeld uit strategische overwegingen zijn afhankelijkheid van buitenlandse chipdesigners afbouwen en kijkt daarvoor naar de RISC-V-architectuur als basis voor eigen HPC-chips.

De open standaard heeft nog een ander voordeel. RISC-V is zo ontwikkeld dat iedereen extensies kan ontwikkelen. Mist een RISC-V bepaalde functionaliteit die je als onderneming relevant vindt? Dan kan je die zelf ontwikkelen en toevoegen aan je eigen design. Gewone RISC-V-apps blijven compatibel met de chip die je bouwt, terwijl eigen applicaties de extra componenten kunnen benutten voor betere prestaties. Interessante opensource-componenten kunnen zo op termijn onderdeel worden van RISC-V, naar analogie met hoe Linux wordt uitgebreid met nieuwe functionaliteit.

Architectuurverschillen: RISC of CISC?

Bovenstaande licentieverschillen spelen samen met het ecosysteem een heel belangrijke rol in de keuze voor een bepaalde architectuur. Natuurlijk zijn er ook wezenlijke verschillen onder de motorkap. Je las al dat ARM voor Advanced RISC Machines staat en RISC komt opnieuw terug in de RISC-V-benaming.  RISC staat voor Reduced Instruction Set Computing. Het heeft een tegenhanger in Complex Instruction Set Computing of CISC. ARM en RISC-V zijn zoals de naam suggereert implementaties van RISC, terwijl x86 een CISC-architectuur is.

RISC en CISC vertegenwoordigen verschillende visies op een ISA. Een RISC-ISA vertrouwt op heel eenvoudige instructies. Per klokcyclus voert een RISC-processor één volledige instructie uit. Dat impliceert dat de individuele instructies niet teveel kunnen inhouden. CISC ziet het omgekeerd. Een CISC-processor kan overweg met veel complexere instructies, maar heeft meer dan één klokcyclus nodig om de volledige instructie tot een goed einde te brengen.

We illustreren het verschil aan de hand van een voorbeeld: laten we even kijken hoe een CISC en een RISC-processor respectievelijk twee waardes met elkaar vermenigvuldigen. De twee waardes in kwestie wonen in het RAM-geheugen van de computer. Om de vermenigvuldiging uit te voeren, moet de processor de waardes opzoeken, kopiëren naar het CPU-geheugen, de bewerking uitvoeren en de uitkomst wegschrijven naar de juiste plaats in het RAM-geheugen.

Een CISC-processor kwijt zich van die taak met een enkele complexe instructie:

  • MULT Waarde 1, Waarde 2

De waardes verwijzen naar een geheugenlocatie en MULT zegt wat de cpu moet doen: vermenigvuldigen. De hardware van een CISC-processor is in staat die complexe instructie te begrijpen en gaat aan het werk. De waardes kopiëren, de bewerking uitvoeren en de uitkomst wegschrijven neemt echter verschillende klokcycli in beslag, ook al moet de CISC-processor maar één bewerking uitvoeren.

De vocabulaire van een RISC-processor is eenvoudiger. De chips begrijpen maar één instructie per cyclus, dus weten geen blijf met een complexe opdracht zoals MULT Waarde 1, Waarde 2. De machinetaal moet de processor stapsgewijs uitleggen wat de bedoeling is. Dat resulteert in een opeenvolging van instructies, bijvoorbeeld:

  • LOAD Waarde 1
  • LOAD Waarde 2
  • PROD 1, 2
  • STORE Waarde 3

Per cyclus voert de RISC-chip één instructie uit, met hetzelfde resultaat als de enkele instructie voor de CISC-chip op het einde van de rit. De totale verwerkingstijd zal gelijk zijn voor een evenwaardige RISC en CISC-chip. De CISC-code is duidelijk eenvoudiger, compacter en neemt minder plaats in het RAM-geheugen in beslag dan de RISC-code. Dat pleit in het voordeel van CISC. Toch wint RISC vandaag aan belang.

Dat komt omdat de onderliggende hardware voor RISC-ISA’s eenvoudiger is. De transistors en schakelingen hoeven geen complexe MULT-instructie te begrijpen. Zo heb je minder complexe schakelingen nodig op de processor, wat ruimte vrij maakt op de chip voor algemene rekenkracht. Een RISC-processor is een beetje dommer op hardwareniveau, waardoor de code in meer detail moet uitleggen wat er wordt verwacht. Die eenvoud zorgt ervoor dat de chip zuiniger is dan de slimmere CISC-variant.

ARM-chip
De RISC-gebaseerde ARM-architectuur is inherent zuiniger dan x86, maar vereist code met daarin meer instructies die dus ook meer RAM opslokt.

Inherent is RISC niet beter dan CISC of omgekeerd. Beide visies vertegenwoordigen een verschillende aanpak gericht op hetzelfde doel. CISC haalt voordeel uit complexere instructies en bijgevolg eenvoudigere code, RISC haalt zijn voordeel uit eenvoudigere en zuinigere hardware die werkt met complexere machinecode.

RISC als concept is moderner dan CISC en wint aan belang omwille van de efficiëntere chips. Dat de code voor RISC complexer is en meer geheugen vereist, is vandaag geen significant nadeel meer. De prijs van RAM is voldoende gedaald om de extra code te accommoderen. De RAM-besparing van CISC brengt dus geen echt voordeel meer met zich mee.

RISC als concept is moderner dan CISC en wint aan belang omwille van de efficiëntere chips.

In de praktijk evolueren RISC en CISC-architecturen bovendien naar elkaar toe. Intel maakte x86 al compatibel met meer eenvoudige instructies, terwijl ARM en RISC-V intussen ook iets complexere instructies ondersteunen waar dat meerwaarde biedt. In de praktijk heeft CISC vooral een grote voetafdruk omwille van de historische relevantie. Toen RAM duurder was, genoot CISC om financiële redenen de voorkeur. Vandaag bestaat er weinig reden om nog voor een CISC-architectuur te kiezen, maar is het verschil met RISC evenzeer niet groot genoeg om te stellen dat x86 zwaar benadeeld is.

De situatie pleit wel in het voordeel van ARM en RISC-V, die beide de RISC-visie implementeren. Het illustreert langs de andere kant hoe x86 ondanks zijn alomtegenwoordigheid gebaseerd is op legacy-technologie.

Beveiliging en functionaliteit

Hoewel ARM, RISC-V en x86 andere visies en aanpakken voor een ISA vertegenwoordigen, zijn de capaciteiten vanuit een high level-perspectief heel gelijkaardig. De drie ISA’s ondersteunen vandaag virtualisatie, al staat de RISC-V-implementatie nog een beetje in zijn kinderschoenen. De standaarden worden daar op dit ogenblik nog gefinaliseerd.

De drie architecturen gebruiken verder zogenaamde vertrouwensniveaus. Daarbij heeft niet alle code evenveel toegang tot de processor. De kernel van het OS zit op het niveau met het meeste vertrouwen, de hypervisor volgt, met gebruikstoepassingen op het buitenste en minst vertrouwde niveau. De implementatie van die filosofie verschilt van ISA tot ISA, maar het idee is hetzelfde.

RISC-V brengt wel een belangrijk veiligheidsvoordeel met zich mee waar ARM en x86 niet van kunnen profiteren. Omdat de architectuur opensource is, kan iedereen de code doorploegen opzoek naar problemen. Die transparantie zorgt er in theorie voor dat er geen nare verrassingen aan het licht komen zoals Spectre voor x86-chips.

Van Spectre gesproken: deze kwetsbaarheid zat lange tijd verscholen in de obscure en ontoegankelijke x86-architectuur misbruikt out of order execution. Dat is een techniek waarbij een chip alvast instructies verwerkt in afwachting van het resultaat van een eerdere instructie, in een poging zo een voorsprong te nemen en sneller het juiste resultaat af te leveren. De techniek brengt een groot snelheidsvoordeel met zich mee, maar de implementatie blijkt bij x86 onderhevig aan misbruik.

RISC-V ondersteunt out of order execution als jongere architectuur nog niet, al brengt SiFive daar stilaan verandering in. Omdat het concept nog verwerkt moet worden in de architectuur die bovendien opensource is, hoef je je geen zorgen te maken om beveiligingsproblemen zoals Spectre.

Kiezen

Welke architectuur is nu de beste? Dat valt moeilijk te zeggen. ARM is de meest volwassen implementatie van RISC en daar lijkt vandaag ruimte voor in de markt. Chips zoals de Graviton 2-serverprocessor van AWS bewijzen dat ARM x86-processors voor bepaalde workloads kan evenaren of zelfs overtreffen. Apple maakt hetzelfde punt met de krachtige en efficiënte M1-Macs. De vanzelfsprekendheid van de x86-dominantie staat zo minstens ter discussie.

RISC-V is duidelijk jonger en vereist meer werk, maar is opensource. Dat geeft de architectuur oneindig potentieel. We verwachten niet dat servers, smartphones en laptops morgen op RISC-V-chips zullen draaien, maar geef de architectuur nog even tijd. Met de onafhankelijkheid van ARM in het gedrang en de steun van de EU staat RISC-V alleszins een boost te wachten. Bovendien past het opensource-concept in de visie op IT die steeds meer bedrijven vandaag hanteren. Linux begon destijds ook als een nicheproject, maar is vandaag de fundering van de zowat alle datacenters. RISC-V heeft minstens het potentieel om op termijn op eenzelfde manier aan belang te winnen.

nieuwsbrief

Abonneer je gratis op ITdaily !
  • This field is for validation purposes and should be left unchanged.
terug naar home