Table of Contents
Inleiding: De blijvende legacy van CISC Architectuur
De Complex Instruction Set Computing (CISC) architectuur heeft de basis gevormd van moderne computing voor meer dan vijf decennia. Van de kamer-grote mainframes van de jaren zeventig tot de zak-grote apparaten van vandaag, CISC instructiesets voortdurend geëvolueerd om de eisen van steeds complexere software en hardware-omgevingen te voldoen. Het begrijpen van de geschiedenis en evolutie van CISC is essentieel voor iedereen die werkt in computerarchitectuur, systeemprogrammering, of hardware ontwerp. Dit artikel volgt de volledige boog van CISC ontwikkeling, te beginnen met zijn oorsprong in het tijdperk van vroege mainframes en eindigend met de geavanceerde, hybride architecturen die de huidige servers, desktops, en laptops van stroom.
CISC's kern premium is elegant: ontwerp een processor die complexe, multi-step operaties met enkele instructies kan uitvoeren, waardoor het verminderen van de semantische kloof tussen hoog-level programmeertalen en machinecode. Deze aanpak beloofd eenvoudiger compilers, kleinere programmagroottes, en efficiënter gebruik van geheugen in een tijd waarin zowel geheugen als opslag enorm duur waren. Terwijl de opkomst van RISC architectuur in de jaren 1980 deze filosofie uitdaagde, CISC niet alleen overleefde, maar aangepast, het opnemen van RISC-stijl technieken terwijl het behoud van achterwaartse compatibiliteit en rijke instructiesets. Vandaag de dag, CISC blijft de dominante architectuur in de desktop, server, en mobiele computermarkten via de alomtegenwoordige x86 en x86-64 instructiesets.
De oorsprong van CISC in de jaren zeventig: Mainframes en de geboorte van complexe instructies
De zaden van CISC architectuur werden geplant in de late jaren 1960 en begin jaren 1970, een periode waarin de kosten van het geheugen was astronomische door moderne normen. Computer ontwerpers probeerden om de hoeveelheid werk bereikt per instructie te maximaliseren, omdat elke instructie op te halen verbruikt waardevolle geheugen cycli. De IBM System/360[, geïntroduceerd in 1964, wordt vaak aangehaald als de eerste grote commerciële systeem dat belichaamde CISC principes. Zijn instructie set was opmerkelijk rijk voor zijn tijd, ondersteuning van meerdere adressering modi en een verscheidenheid van data types, van gehele getallen tot verpakte decimale nummers. Het systeem/360 gedemonstreerd dat een enkele, uitgebreide instructie set kon een hele familie van machines, van low-cost modellen tot high-performance mainframes.
De term "CISC" zelf bestond pas eind jaren zeventig, toen onderzoekers aan IBM en Stanford University het begonnen te contrasteren met de opkomende RISC filosofie. Daarvoor waren alle processors gewoon "processors." De architectonische benadering die later zou worden gelabeld CISC werd gedreven door verschillende praktische beperkingen: beperkte geheugenbandbreedte, de hoge kosten van geheugenchips, en de wens om assemblagetaalprogrammering productiever te maken. Ontwerpers verpakt instructies met zoveel mogelijk functionaliteit. Een enkele instructie zou gegevens uit het geheugen kunnen laden, rekenkunde kunnen uitvoeren en het resultaat terug kunnen opslaan, allemaal in één operatie. Dit stond in schril contrast met de minimalistische aanpak die RISC later zou bepleiten.
Tegen het midden van de jaren zeventig, bedrijven zoals Digital Equipment Corporation (DEC) met zijn VAX-11/780, en Intel met zijn 8086 processor, duwden CISC principes verder. De VAX architectuur, in het bijzonder, werd een schoolvoorbeeld van CISC, met meer dan 300 instructies en 16 adressering modi. De VAX kon instructies uitvoeren zoals (polynome evaluatie) en (bewerken en vergelijken karakter string) in hardware, taken die RISC-architecturen zou meerdere instructies uit te voeren. Hoewel krachtig, deze complexiteit maakte ook de VAX moeilijk te pijpleiding en optimaliseren voor hoge kloksnelheden.
Belangrijkste kenmerken van vroege CISC-processors
- Grote instructiesets: Vroege CISC-chips bevatten vaak honderden afzonderlijke instructies, waarvan veel zeer gespecialiseerde operaties uitvoerden.
- Variabele instructielengtes: Instructies kunnen variëren van één byte tot enkele tientallen bytes, waardoor flexibele codering mogelijk is maar decodering compliceert.
- Multere adresseringsmodi: Processors ondersteunden talrijke manieren om operands te specificeren, waaronder directe, indirecte geheugen-, geïndexeerde en basis-verplaatsingsmodi.
- Complexe microcode: De besturingslogica werd geïmplementeerd met behulp van microcode, een laag van instructies op laag niveau die elke machineinstructie vertaalde in hardwarebesturingssignalen. Deze benadering vereenvoudigd processorontwerp maar beperkte prestaties.
- Geheugen-tot-geheugenbewerkingen: Veel vroege CISC instructies zouden direct op geheugenoperands kunnen werken zonder dat registers voor intermediaire opslag vereist zijn.
Deze kenmerken maakten vroege CISC-processoren uitzonderlijk flexibel voor programmeurs en compilers. Echter, de complexiteit van het decoderen van variabele-lengte instructies en het uitvoeren van microgecodeerde bewerkingen betekende dat deze processoren meestal liep op langzamere klok snelheden en vereiste meer silicium gebied dan eenvoudiger ontwerpen.
De opkomst van CISC: Intel 8086 en de x86 Legacy
De meest daaruit voortvloeiende gebeurtenis in de CISC geschiedenis was de introductie van de Intel 8086 in 1978. De 8086 was een 16-bits processor met een 20-bits adresbus, waardoor het tot 1 MB geheugen kon aanspreken. De instructieset was bewust ontworpen om achterwaarts compatibel te zijn met de eerdere 8-bit 8080 processor, waardoor de overgang voor softwareontwikkelaars werd vergemakkelijkt. Deze instructieset, bekend als x86, zou de meest duurzame en breed inzetbare CISC architectuur in de geschiedenis worden.
IBM's beslissing in 1981 om de Intel 8088 (een goedkopere 8-bit-bus versie van de 8086) in zijn oorspronkelijke IBM Personal Computer effectief gezalfd x86 als de standaard voor PC architectuur. Elke volgende generatie van Intel processoren, van de 80286 en 80386 tot de Pentium, Core, en Xeon families, heeft gehandhaafd achterwaartse compatibiliteit met de oorspronkelijke 8086 instructie set. Deze compatibiliteit werd zowel een kracht en een last: het liet tientallen software draaien op moderne hardware, maar het dwong Intel ook om vooruit te voeren legacy instructies en codering quirks die de moderne high-performance implementaties compliceren.
De 80386, uitgebracht in 1985, was een oriëntatiepunt chip die 32-bit verwerking introduceerde op de x86 lijn. Het bracht ook geheugen paging, beschermde modus, en virtuele 8086 modus, mogelijkheden die de basis legde voor moderne besturingssystemen zoals Linux en Windows NT. De 80386 instructie set werd aanzienlijk uitgebreid van de 8086, het toevoegen van nieuwe algemene instructies, string operaties, en systeem-niveau commando's. Ondanks de complexiteit, de 80386 was verbazingwekkend succesvol, cementing Intel's dominantie in de PC-processor markt voor de komende twee decennia.
Het CISC vs. RISC Debat: De grote Architectural Schism
Tegen het midden van de jaren tachtig was er een filosofisch schisma ontstaan in computer architectuuronderzoek. Aan de ene kant stond de CISC-inrichting, geleid door Intel, Motorola, en National Semiconductor. Aan de andere kant stond een nieuwe generatie architecten die pleitten voor eenvoudigere, snellere processors. Deze beweging, nagesynchroniseerd RISC (Reduced Instruction Set Computing), werd voorgevochten door onderzoekers aan UC Berkeley en Stanford University. De baanbrekende Berkeley RISC-I[] en [Stanford MIPS[]] projecten toonden aan dat een processor met een kleine, uniforme instructie chips van het huidige CISC op vele werkuren kon overtreffen, ondanks het uitvoeren van meer instructies per programma.
De kernargumenten van het RISC-kamp waren krachtig:
- Eenvoudigere instructies decoderen sneller, waardoor hogere kloksnelheden mogelijk zijn.
- Vaste-lengte instructies vereenvoudigen pijplijning, waardoor meerdere instructies gelijktijdig kunnen worden uitgevoerd.
- Laad-store architecturen, waar alleen de instructies toegang tot het geheugen laden en opslaan, maakt het gemakkelijker om het registergebruik te optimaliseren en pijplijn stallen te verminderen.
- Grote registerbestanden verminderen het aantal toegangen tot het geheugen, verbeteren van de prestaties.
- Compileroptimalisatie kan vaak betere resultaten bereiken met eenvoudiger instructies dan met microgecodeerde complexe instructies.
Voor een tijdje bleek RISC klaar te staan om CISC volledig te vervangen. Werkstations van Sun (SPARC), Silicon Graphics (MIPS) en IBM (POWER) toonden de prestatievoordelen van RISC. Begin jaren negentig, RISC-chips draaiden op hogere kloksnelheden en leverden superieure integer en floating-point prestaties in vergelijking met hedendaagse CISC-processors. Veel industrie waarnemers voorspelden de uiteindelijke ondergang van CISC.
De reactie van CISC was echter niet om de instructieset te verlaten, maar om de technieken van RISC intern te gebruiken. Intel's 80486, uitgebracht in 1989, bevatte een vijftraps pijplijn, op-chip cache, en een efficiëntere microcode-engine. De Pentium, gelanceerd in 1993, voegde een superscala architectuur die twee instructies per klok cyclus kon uitvoeren. Maar de echte doorbraak kwam met de Pentium Pro in 1995, die introduceerde een hardware vertaallaag[] die x86 instructies in micro-operaties (micro-ops), die vervolgens werden uitgevoerd door een snelle RISC-achtige kern. Deze hybride benadering, bekend als "CISC front end, RISC back end," stond Intel toe om achterwaartse compatibiliteit te handhaven terwijl het gat in de prestaties te sluiten met pure RISC-ontwerpen.
De CISC Renaissance: Micro-Ops, Pipelining, en Out-of-Order Execution
De micro-op vertaaltechniek van de Pentium Pro was een transformatieve innovatie. Moderne x86 processoren van zowel Intel als AMD decoderen elke complexe x86 instructie in een of meer eenvoudige, vaste-lengte micro-operaties. Deze micro-ops worden vervolgens verzonden via een diep pijpleiding, superscale uitvoering motor die out-of-order uitvoering ondersteunt, register hernoemen, en speculatieve uitvoering. De uitvoeringskern zelf is in wezen RISC-achtig, geoptimaliseerd voor eenvoud en parallellisme, terwijl de voorzijde behandelt de complexiteit van de CISC instructie set.
Deze ontwerpfilosofie bereikte zijn zenith met de Intel Core microarchitecture (2006) en zijn opvolgers. De kernarchitectuur bevatte:
- Breedte buiten-orde uitvoering: De processor kon tot vier instructies per cyclus ophalen, decoderen en uitvoeren, zodat ze opnieuw konden worden besteld om het gebruik van de pijpleiding te maximaliseren.
- Macro-fusie en micro-fusie: Aangrenzende x86 instructies kunnen worden gecombineerd in één micro-op, waardoor de decodebandbreedte wordt verbeterd.
- Geavanceerde branchvoorspelling: Multi-level voorspellers en return stack buffers verminderden de boete van tak fouten, een kritische factor in pijplijn processoren.
- Door de krachtige efficiënte slaaptoestanden kon de processor het energieverbruik verminderen als de vraag laag was.
AMD's concurrerende K8 en K10 architecturen, en later de Ryzen/Zen serie, streefde soortgelijke strategieën na. De Zen architectuur, geïntroduceerd in 2017, bevatte een volledig vernieuwde microarchitectuur met een massale 32KB L1-instructiecache, een micro-op cache, vier ALU's, en ondersteuning voor gelijktijdige multithreading (SMT). AMD's aanpak toonde aan dat CISC-processoren niet alleen konden overeenkomen maar de prestaties van vele RISC-ontwerpen over een breed scala van werkbelastingsgraden overtreffen.
Belangrijkste technieken in moderne CISC implementatie
- Micro-operatievertaling: Complexe x86 instructies worden ontleed in eenvoudigere micro-ops met vaste lengte die buiten de orde kunnen worden gepland.
- Micro-op cache: Vaak gebruikte micro-ops worden gecached, de decodeerfase overgeslagen en het energieverbruik verminderd.
- Out-of-order uitvoering: Instructies (micro-ops) worden uitgevoerd in dataflow volgorde in plaats van programma volgorde, verbeteren van het gebruik van uitvoeringseenheden.
- Register hernoemen: De grote architectische registerset van x86 wordt in een veel grotere pool van fysieke registers in kaart gebracht, waardoor valse afhankelijkheden worden geëlimineerd.
- Speculatieve uitvoering: De processor voorspelt branchresultaten en voert instructies uit van te voren, terugrollend op verkeerde voorspellingen.
- Simultane multithreading (SMT): Meerdere hardwarethreads delen uitvoeringsmiddelen, verbeteren doorvoer zonder de gehele kern te dupliceren.
Deze technieken laten moderne x86-processoren toe om een parallellisme op instructieniveau te bereiken dat rivaliseert of dat van RISC-ontwerpen overschrijdt, terwijl ze de volledige compatibiliteit achterop houden. Het resultaat is een processor die tientallen jaren oude software kan uitvoeren met een gloeiende snelheid, terwijl ook moderne workloads zoals virtualisatie, encryptie en machine learning-inferentie ondersteund worden.
Moderne CISC: x86-64, virtualisatie, en beveiligingsextensies
De 64-bit uitbreiding van de x86 architectuur, bekend als AMD64 (later overgenomen door Intel als Intel 64 of x86-64), werd geïntroduceerd door AMD met de Opteron processor in 2003. Deze uitbreiding voegde 64-bit algemeen-doel registers toe, breidde de virtuele adresruimte uit tot 48 bits (en uiteindelijk 57 bits met 5 level paging), en introduceerde een nieuwe set instructies voor 64-bit operaties. Kritische, AMD64 gehandhaafd volledige compatibiliteit met legacy 32-bit en 16-bit x86 code, waardoor een soepele overgang. Vandaag de dag, x86-64 is de dominante ISA voor desktop en server computing, ondersteund door alle belangrijke besturingssystemen en toepassingen.
Virtualization support was een andere belangrijke mijlpaal in CISC evolutie. Intel's VT-x[ (Vanderpool) technologie, geïntroduceerd in 2005, toegevoegd hardware-geassisteerde virtualisatie aan de x86 architectuur. AMD gevolgd met zijn AMD-V (Pacifica) uitbreiding. Deze functies konden hypervisors meerdere gast besturingssystemen met bijna-native prestaties draaien, revolutionerende datacenter efficiëntie en het mogelijk maken van de cloud computing revolutie. De hardware-extensies vereenvoudigd de complexe taak van virtualiseren van een CISC architectuur, die eerder had vereist binaire vertaling en paravirtualisatie technieken.
Beveiligingsextensies zijn ook een definiërend kenmerk geworden van moderne CISC-processors.TDXSGX (Software Guard Extensions) en TDX (Vertrouwde domeinextensions), samen met AMD's SEV (Secure Encrypted Virtualization), hardware-enforced isolatie voor gevoelige code en gegevens. Intel CET[ (Control-flow Enforcement Technology) en AMD Shadow Stack[ verdedigen tegen retour-georiënteerde programmering (ROP) en springen-georiënteerde programmering (JOP) aanvallen. Deze beveiligingsfuncties maken gebruik van de rijke instructieset van CISC om bescherming te bieden die moeilijk te implementeren zou zijn op eenvoudigere architecturen.
AI en vectorverwerking zijn ook geïntegreerd in de moderne CISC. Intel's AVX-512[ (Geavanceerde Vectorextensies) en AMD's AVX2[] en toekomstige [AVX-512] implementaties leveren 512-bit brede SIMD (Single Instruction, Multiple Data) operaties. Deze extensies versnellen werklast variërend van wetenschappelijke computer- tot machine learning-inferentie. Intel's DL Boost (Deep Learning Boost) voegt gehele vector neurale netwerkinstructies toe, terwijl AMD's VNNI[[ (Vector Neural Network Instructions) eveneens AI-inferenties op x86 hardware.
Hedendaagse CISC implementaties: Intel Core en AMD Ryzen
Vanaf het midden van de jaren 2020 zijn de twee dominante families van CISC-processors Intel Core[ (nu in de 14e generatie) en AMD Ryzen (gebaseerd op de Zen 4 en Zen 5 microarchitecturen). Beide vertegenwoordigen het hoogtepunt van decennia van CISC-evolutie, waarbij massale instructiesets worden gecombineerd met geavanceerde microarchitecturen.
De laatste intel Core Ultra processors (Meteor Lake en opvolgers) maken gebruik van een op tile gebaseerd ontwerp dat reken-, grafische en I/O-afzonderlijke chiplets scheidt. De rekentegel bevat een mix van prestatie-cores (P-cores) gebaseerd op Redwood Cove] microarchitectuur en efficiëntie-cores (E-cores) gebaseerd op ]Crestmont[[]. Deze heterogene benadering, geïnspireerd op de grote van ARM.LITTLE, stelt de processor in staat om te optimaliseren voor zowel single-threaded prestaties als multi-threaded doorvoer met behoud van energie-efficiëntie. De microarchitectuur blijft de verfijning van micro-op fusie, branchvoorspeling en out-of-order uitvoering, waardoor de prestaties van dubbel-digittend worden over de vorige generatie.
AMD's Ryzen 7000 en 8000 serie[] processors, gebouwd op de Zen 4 microarchitectuur, voorzien van maximaal 16 kernen (32 threads) in het mainstream desktop platform. De Zen 4 architectuur verhoogde L2 cache per kern tot 1 MB, verbeterde de branch voorspeller, en voegde ondersteuning voor AVX-512 instructies. De geheugencontroller ondersteunt DDR5 geheugen en biedt tot 28 PCIe 5.0 banen direct vanaf de processor. AMD's 3D V-Cache[]] technologie stapelt een extra 64 MB L3 cache op de top van de compute die, waardoor aanzienlijke prestaties winsten voor cachegevoelige workloads zoals gaming en database operaties.
Beide bedrijven blijven sterk investeren in chipetarchitecturen[], waardoor ze meerdere kleinere matrijzen kunnen combineren tot één pakket. Deze aanpak verbetert de productieopbrengsten, vermindert de kosten en maakt flexibele productconfiguraties mogelijk. De chiplettrend vertegenwoordigt een fundamentele verschuiving in het ontwerp van de processor, waarbij ze zich van monolithische matrijzen naar modulaire, interconnect-gebaseerde systemen verplaatsen.
De toekomst van CISC: Hybride Architectures en gespecialiseerde acceleratoren
De evolutie van CISC is verre van compleet. Verschillende trends zijn het vormgeven van de toekomst van instructie set ontwerp:
- Domeinspecifieke versnellers: Moderne CISC-processors integreren steeds meer gespecialiseerde hardwareblokken voor AI, cryptografie, mediacodering en netwerken. Deze versnellers worden meestal gecontroleerd via nieuwe instructies toegevoegd aan de ISA, waardoor de CISC traditie van het integreren van complexe bewerkingen in de instructie set.
- Op veiligheid gerichte instructies: Nieuwe instructies voor geheugentagging, pointer-authenticatie en vertrouwelijke computersystemen worden toegevoegd aan x86-64, wat het groeiende belang van beveiliging in computersystemen weerspiegelt.
- RISC-V-competitie: De open-source RISC-V-instructiearchitectuur vormt een uitdaging voor de dominantie van x86 op lange termijn. Hoewel RISC-V momenteel niet beschikt over het ecosysteem en de prestaties van x86, trekken haar modulaire aard en leverancierneutrale governance investeringen aan van grote bedrijven. Als RISC-V een aanzienlijk marktaandeel krijgt, kan het Intel en AMD onder druk zetten om innovatie in hun CISC-ontwerpen te versnellen.
- Achterwaartse compatibiliteit als een dubbelsnijdend zwaard: De eis om tientallen jaren van nalatenschap instructies te ondersteunen brengt aanzienlijke complexiteit en siliciumoppervlaktekosten met zich mee. Echter, de volledige eliminatie van legacy ondersteuning zou het risico lopen om grote hoeveelheden bestaande software te breken. De industrie onderzoekt manieren om de instructieset te stroomlijnen en tegelijkertijd compatibiliteit te handhaven door emulatie of dynamische vertaling.
- Hybride computing: De integratie van CISC- en RISC-elementen gaat door. Sommige toekomstige ontwerpen kunnen een twee-tier benadering aannemen: een RISC-achtige kern voor hoge doorvoer, energie-efficiënte uitvoering, met een CISC-fronteinde dat oude instructies vertaalt. Deze vervaging van de traditionele CISC/RISC-grens suggereert dat de toekomst van computing niet zal worden gedefinieerd door ideologische zuiverheid maar door pragmatische engineering.
Een bijzonder intrigerende mogelijkheid is het gebruik van dynamische binaire vertaling om de instructie die aan software wordt aangeboden los te koppelen van de interne architectuur van de processor. Dit komt al vaak voor in virtualisatie (bijv. QEMU) en in sommige implementaties van processoren (bijv. de x86 compatibiliteitsmodus van Itanium). Als binaire vertaaltechnologie voldoende rijpt, kan het toekomstige CISC-processors in staat stellen om legacy-instructiecoderingen geleidelijk uit tefaseren terwijl softwarecompatibiliteit behouden blijft via een softwarevertaallaag.
Conclusie: CISC, RISC en de vervaging van grenzen
De geschiedenis van CISC instructiesets is een verhaal van aanpassing en veerkracht. Geboren uit de praktische beperkingen van de jaren 1970 computer, CISC architecturen domineerde de industrie voor decennia, geconfronteerd met een sterfelijke uitdaging van RISC in de jaren 1980 en 1990, en vervolgens zichzelf opnieuw uitgevonden door het gebruik van RISC-achtige technieken intern met behoud van achterwaartse compatibiliteit. Het resultaat is een volwassen, zeer verfijnd ecosysteem dat blijft stroom van de overgrote meerderheid van de servers, desktops, en laptops wereldwijd.
De huidige CISC-processoren, die worden geïllustreerd door Intel's Core en AMD's Ryzen families, zijn hybride ontwerpen die de rijke semantiek van een grote instructie set combineren met de pijpleiding-vriendelijke uitvoering model van RISC. De micro-op vertaallaag die deze twee werelden overbrugt is nu een standaard functie van alle high-performance x86 processors. Deze fusie van CISC en RISC filosofieën heeft chips geproduceerd die zowel functierijk en uitzonderlijk snel, in staat om alles van legacy zakelijke toepassingen tot cutting-edge AI workloads.
Vooruitblikkend, zal de grens tussen CISC en RISC waarschijnlijk blijven vervagen. Opkomende architecturen zoals RISC-V en ARM v9 bevatten meer complexe instructies voor gespecialiseerde taken, terwijl CISC ontwerpen stroomlijnen hun uitvoeringskernen en meer hardwareversnelling toevoegen. De langdurige discussie tussen CISC en RISC is niet opgelost door de overwinning van het ene kamp over het andere, maar door de convergentie van beide naar een pragmatische middenweg. Voor ingenieurs en architecten is de les duidelijk: de beste instructie is degene die het beste de behoeften van zijn gebruikers dient, het balanceren van complexiteit, prestaties, kracht en compatibiliteit in een steeds veranderende technologische landschap.
Voor verdere lezing, de Intel Architecture Instruction Set Extensions documentatie geeft gezaghebbende details over moderne x86 instructies, terwijl AMD's Zen Microarchitecture] overzicht biedt inzicht in de hedendaagse CISC implementatie.Het IBM System/360 historisch archief[] biedt waardevolle context voor het begrijpen van CISC's oorsprong, en de ]RISC-V International [ technische specificaties illustreren de alternatieve modulaire benadering van instructie set ontwerp.