De dominantie van de x86-chips van Intel en AMD neemt langzaam maar zeker af, zeker nu ook Microsoft het volle gewicht van Windows ARM heeft gesmeten. Een derde architectuur ligt op de loer: 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?
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 M-CPU’s 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. Onder druk van een Amerikaans handelsembargo kijkt China bijvoorbeeld enthousiast naar de RISC-V-architectuur, en laptopbouwer Framework pionierde een RISC-V-laptopdesign.
Eén ISA is fundamenteel incompatibel met een andere. Wie enkel Nederlands kent, kan enkel boeken in het Nederlands lezen. Een boek geschreven in het Chinees, kan net zo goed blanco zijn zonder de juiste talenkennis. Zo is het ook bij processors: software geschreven voor x86-chips werkt niet 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 huidige MacBook-generaties of de nieuwste Surface-laptops.
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 ARM-macs is een voorbeeld, net als Prism voor Windows op ARM. Rosetta 2 en Prism vertalen x86-instructies naar ARM-instructies, zodat ARM-chips zoals de M3 van Apple of de Qualcomm Snapdragon X ze kunnen 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 je 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 in de markt gezet door Acorn in de jaren ’80. De ARM-ISA wordt vandaag ontwikkeld door Arm. Dat bedrijf is voorlopig nog eigendom van het Japanse Softbank, dat een beursgang plant voor het dochterbedrijf nadat een overname door Nvidia in 2022 door de mand viel. 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 en vind je terug in de meeste smartphones. Voor servers ontwikkelt Arm de Neoverse-blauwdrukken, waar onder andere AWS dankbaar gebruik van maakt voor Graviton.
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.
Arm is een onafhankelijk bedrijf en wordt als het Zwitserland van de chipwereld gezien.
Het licentiemodel geeft bedrijven zoals Apple, AWS 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 chips met een eigen AI-kern in, zoals de nieuwe Qualcomm Snapdragon X-processors.
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.
RISC-V
Er is nog een alternatief voor x86, dat nog meer open is dan ARM: 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, inclusief start-ups zoals X-silicon.
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 gebouwd 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.
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 huidige 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 en een groot ecosysteem.
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 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 op zoek 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 en 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 zomaar, al komt daar de laatste jaren 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 4-serverprocessor van AWS bewijzen dat ARM x86-processors voor bepaalde workloads kan evenaren of zelfs overtreffen. Google en Microsoft volgen niet voor niets het voorbeeld van AWS met ARM-chips voor hun cloudaanbod.
Apple maakt hetzelfde punt met de krachtige en efficiënte M-Macs. Intussen volgen ook Microsoft en Windows. Na veel trieste pogingen met onderontwikkelde ARM-chips vind je vandaag eindelijk Windows-toestellen met een krachtige ARM-processor in de rekken. Die brengen heel wat voordelen met zich mee, zoals een langer batterijleven en stillere koeling. De ARM-gebaseerde chips zijn voor veel workloads zelfs krachtiger dan Intel Core- of AMD Ryzen-processors. De vanzelfsprekendheid van de x86-dominantie staat stevig 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. Het opensource-concept past immers in de visie op IT die steeds meer bedrijven vandaag hanteren. Linux begon destijds ook als een nicheproject, maar is vandaag de fundering van zowat alle datacenters. RISC-V heeft minstens het potentieel om op termijn op eenzelfde manier aan belang te winnen. Eer het zover is, lijkt ARM aan te tonen dat de absolute dominantie van x86 verleden tijd is.
Dit artikel verscheen oorspronkelijk op 9 augustus 2021. De tekst kreeg een update met de recentste informatie.