Een computer met een complexe instructieset, ofwel CISC, verwijst naar een processorontwerpmethode die gebruikmaakt van een grote en diverse set instructies, waardoor de CPU meer werk per instructie kan verrichten.

Wat wordt er bedoeld met CISC?
Een computer met een complexe instructieset (CISC) is een CPU architectuurfilosofie waarin de processor De instructieset bevat veel instructies, vaak met meerdere adresseermodi en coderingen met variabele lengte, zodat afzonderlijke instructies relatief complexe bewerkingen in meerdere stappen kunnen uitvoeren.
In een CISC-ontwerp kan een instructie acties combineren zoals het laden van gegevens uit het geheugen, het uitvoeren van een rekenkundige of logische bewerking en het opslaan van het resultaat, wat het aantal instructies kan verminderen. compiler moet voor een gegeven tijdseenheid uitstoten programmaOm deze uitgebreide instructies praktisch bruikbaar te maken, vertrouwen CISC-CPU's doorgaans op aanzienlijke decodeerlogica en besturingsmechanismen binnen de processor.
Historisch gezien omvatte dit vaak microcode die complexe instructies vertaalt naar eenvoudigere interne stappen die de hardware kan uitvoeren. Moderne CISC-implementaties behouden vaak de voor de programmeur zichtbare CISC-instructieset (voor compatibiliteit), terwijl instructies intern worden opgesplitst in kleinere micro-bewerkingen die kunnen worden gepland en uitgevoerd in een meer RISC-achtige pipeline. Dit zorgt voor een balans tussen ondersteuning voor oudere software en hoge prestaties.
Complexe instructiesetcomputerarchitectuur
Een CISC-architectuur is gebaseerd op een rijke, voor de programmeur zichtbare instructieset met veel instructieformaten en adresseermodi. Instructies hebben vaak een variabele lengte en kunnen direct op het geheugen werken (een instructie kan bijvoorbeeld een operand uit het geheugen lezen, een berekening uitvoeren en het resultaat terugschrijven zonder dat aparte laad-/opslaginstructies nodig zijn). flexDe mogelijkheid om instructies te verwijderen vermindert het aantal instructies in gecompileerde programma's en houdt de ISA expressief, maar het maakt de front-end van de CPU (ophalen, decoderen en verzenden) complexer omdat de processor instructiegrenzen moet identificeren, meer combinaties moet decoderen en meer operandvormen moet verwerken.
Binnen de CPU vertalen moderne CISC-implementaties deze complexe instructies doorgaans naar eenvoudigere interne micro-bewerkingen (µops). Een frontend-decoder (soms ondersteund door een microcode-engine voor zeldzamere of complexere instructies) genereert µops die door de uitvoeringskern stromen. Deze kern kan qua ontwerp lijken op een RISC-architectuur: gepijplijnde functionele eenheden, hernoemen van registers en out-of-order uitvoering. scheduling, takvoorspelling en meerdere niveaus van cache om geheugenlatentie te verbergen. Deze "CISC aan de buitenkant, µops aan de binnenkant"-aanpak behoudt achterwaartse compatibiliteit met de bestaande CISC ISA en maakt tegelijkertijd een hoge doorvoer en efficiënte uitvoering mogelijk op moderne siliciumchips.
Wat is een voorbeeld van CISC?
Een veelvoorkomend voorbeeld van CISC is de x86 Deze instructieset wordt gebruikt door de meeste desktop- en laptop-CPU's van Intel en AMD. Het wordt CISC genoemd omdat het een grote set instructies en veel adresseermodi biedt, en sommige instructies relatief complexe taken in één stap kunnen uitvoeren, zoals het lezen van gegevens uit het geheugen, het uitvoeren van een bewerking en het terugschrijven van het resultaat, zonder dat daarvoor aparte laad-, reken- en opslaginstructies nodig zijn.
Waarvoor wordt CISC gebruikt?

CISC-architecturen worden gebruikt wanneer compatibiliteit, brede softwareondersteuning en efficiënte uitvoering van algemene workloads van belang zijn. Ze worden het vaakst aangetroffen in gangbare computerplatformen waar een volwassen ecosysteem en stabiliteit van de ISA op de lange termijn grote voordelen bieden. De meest voorkomende toepassingen zijn onder andere:
- Algemene pc's en laptops (x86-platforms)Rijdt elke dag toepassingen, browsers, kantoorsoftware en media-apps op basis van een breed ondersteunde instructieset, met sterke prestaties bij uiteenlopende werklasten.
- Werkstations en servers. Voorziet in van rekenintensieve en I / O- zware werkbelastingen zoals virtualisatie, databankenen bedrijfsapplicaties, waar een stabiele ISA en uitgebreide optimalisatie over compilers heen vereist zijn. besturingssystemen zijn waardevol.
- Virtualisatie en cloud Hosting. Ondersteunt dichte VM implementaties en containerhosts dankzij volwassen hardware virtualisatiefuncties en een enorm ecosysteem aan tools en ondersteuning voor gastbesturingssystemen.
- Compatibiliteit met oudere software. Hierdoor kunnen oudere applicaties blijven werken zonder dat ze opnieuw hoeven te worden geschreven, omdat CISC-platforms (met name x86) prioriteit geven aan achterwaartse compatibiliteit over vele CPU-generaties heen.
- Commerciële en industriële systemen met een lange levensduur.. Wordt gebruikt in omgevingen waar het upgraden van software duur of riskant is, waardoor compatibiliteit met bestaande binaire bestanden en toolchains een praktische vereiste is.
Wat zijn de voordelen en beperkingen van CISC?
CISC-ontwerpen zijn gebouwd rond een uitgebreide instructieset waarmee complexe bewerkingen in minder instructies kunnen worden uitgedrukt. Dit vereenvoudigt de gecompileerde code en zorgt voor compatibiliteit tussen verschillende hardwaregeneraties. Tegelijkertijd verhoogt de ondersteuning van vele instructieformaten en -gedragingen de complexiteit van de CPU, wat van invloed kan zijn op de energie-efficiëntie, de decoderingsoverhead en de totale ontwerpkosten. In dit gedeelte wordt uitgelegd waar CISC in uitblinkt en waar de nadelen meer merkbaar worden.
Voordelen van CISC
CISC-architecturen streven ernaar om meer werk per instructie te verrichten door een uitgebreide set bewerkingen en adresseermodi aan te bieden. In de praktijk leidt dit tot diverse voordelen, met name in ecosystemen waar compatibiliteit en volwassen tools van belang zijn. Deze voordelen omvatten:
- Hoge codedichtheid (kleinere binaire bestanden). Omdat één instructie meerdere stappen kan uitvoeren (zoals geheugentoegang plus rekenkundige bewerkingen), gebruiken programma's vaak minder instructies in totaal, wat de belasting van de instructieophaling kan verminderen en het cachegebruik kan verbeteren.
- Sterke achterwaartse compatibiliteitCISC-platforms (met name x86) behouden doorgaans de mogelijkheid om oudere software over meerdere CPU-generaties te draaien, waardoor langlopende applicaties worden beschermd en de migratiekosten worden verlaagd.
- Flexin staat adresseermodiCISC-instructies kunnen op meer gevarieerde manieren naar het geheugen verwijzen (basis + index + offset, geschaalde index, enz.), wat het aantal extra instructies voor adresberekening en gegevensverplaatsing kan verminderen.
- Een volwaardig ecosysteem voor compilers en bijbehorende tools. Populaire CISC ISA's hebben decennialang geoptimaliseerde compilers, debuggers, profilers en prestatiebibliotheken, waardoor het eenvoudiger is om software te bouwen en af te stemmen.
- Efficiënte weergave van complexe bewerkingenBepaalde taken kunnen direct worden gecodeerd (bijvoorbeeld tekenreeks- en bitmanipulatie, of gespecialiseerde rekenkundige bewerkingen), wat de uitvoer van de compiler kan vereenvoudigen en soms de prestaties voor specifieke patronen kan verbeteren.
- Praktische prestaties bij gemengde werkbelastingen. Moderne CISC-CPU's combineren vaak de stabiele CISC ISA met een geavanceerde microarchitectuur (out-of-order execution, branch prediction, deep caching), waardoor een hoge doorvoer wordt geleverd voor uiteenlopende, realistische workloads, terwijl de softwarecompatibiliteit behouden blijft.
Beperkingen van CISC
CISC brengt compromissen met zich mee, omdat het ondersteunen van een grote, flexDe CISC-instructieset voegt complexiteit toe aan de front-end van de CPU en de besturingslogica. Deze beperkingen maken CISC niet "slechter", maar ze beïnvloeden wel het stroomverbruik, de ontwerpkosten en de manier waarop de prestaties worden bereikt.
- Complexere instructiedecoderingInstructies met variabele lengte en de vele formaten vergroten de hoeveelheid werk die nodig is om instructiegrenzen te vinden en operanden te decoderen, wat bijdraagt aan de complexiteit. latency en frontend-ontwerp complexiteit.
- Hogere hardwarecomplexiteit en hogere siliciumkosten. Het ondersteunen van veel instructies, adresseermodi en verouderde gedragingen vereist meer besturingslogica (vaak inclusief microcode), wat het transistorbudget en de validatie-inspanning kan verhogen.
- Potentieel hoger stroomverbruik. Een complexere front-end en besturingspad kunnen het stroomverbruik verhogen, vooral in vergelijking met eenvoudigere ISA's in omgevingen met beperkte stroomvoorziening (hoewel moderne implementaties sterk uiteenlopen).
- Het is lastiger om op ISA-niveau efficiënt pipelines te creëren. Complexe instructies kunnen een verschillend aantal interne stappen vereisen, waardoor het lastiger is om een eenvoudige, uniforme pipeline te ontwerpen zonder instructies te vertalen naar kleinere interne bewerkingen.
- De prestaties zijn sterk afhankelijk van interne vertalingen (µops). Veel moderne CISC-CPU's splitsen instructies op in micro-bewerkingen; de prestaties hangen dan af van de decodering. bandbreedte, µop-caches en planningsefficiëntie, niet alleen de "complexe instructie" zelf.
- ISA-“overbodigheid” en beperkingen door verouderde systemenHet behouden van achterwaartse compatibiliteit gedurende tientallen jaren kan de mate waarin de ISA kan worden opgeschoond beperken en kan ertoe leiden dat er voortdurende ondersteuning nodig is voor zelden gebruikte instructies die nog steeds correct moeten functioneren.
- Minder geschikt voor embedded toepassingen met een ultralaag stroomverbruik.Bij kleine, kosten- en energiezuinige apparaten wegen de voordelen van brede compatibiliteit en uitgebreide instructies mogelijk niet op tegen de extra kosten van een complexere implementatie.
Veelgestelde vragen over CISC
Hier vindt u de antwoorden op de meest gestelde vragen over CISC.
CISC versus RISC
Laten we de verschillen tussen CISC en RISC eens nader bekijken:
| Aspect | CISC (Complex Instruction Set Computer) | RISC (Reduced Instruction Set Computer) |
| Grootte van de instructieset | Groot en divers, met veel gespecialiseerde lessen. | Kleiner en minimalistischer, gericht op de meest voorkomende handelingen. |
| Instructiecomplexiteit | Instructies kunnen bewerkingen in meerdere stappen uitvoeren (bijvoorbeeld laden + berekenen + opslaan). | De instructies zijn eenvoudig en voeren meestal één handeling uit. |
| Instructielengte | Instructies met variabele lengte. | Instructies met een vaste lengte. |
| Adresseringsmodi | Veel adresseermodi, die hoge mogelijkheden bieden flexibiliteit. | Weinig adresseermodi, eenvoudig en consistent gehouden. |
| Geheugentoegang | Instructies kunnen rechtstreeks op het geheugen inwerken. | Load/store-architectuur: alleen lees- en opslagtoegang tot het geheugen. |
| Complexiteit van CPU-ontwerp | Complexere decodeer- en besturingslogica, vaak met behulp van microcode. | Vereenvoudigde decodeer- en besturingslogica. |
| Pijpleidingefficiëntie | Op ISA-niveau is dit lastiger vanwege het variabele instructiegedrag. | Eenvoudiger en efficiënter dankzij uniforme instructies. |
| Codedichtheid | Over het algemeen hoger (kleinere binaire bestanden). | Over het algemeen lager (meer instructies nodig). |
| Energie-efficiëntie | Doorgaans hoger stroomverbruik vanwege de complexiteit. | Doorgaans energiezuiniger, vooral bij eenvoudige processorkernen. |
| afhankelijkheid van de compiler | Minder afhankelijkheid van compileroptimalisatie voor instructieselectie. | Is sterk afhankelijk van compileroptimalisatie. |
| Achterwaartse compatibiliteit | Sterke focus op compatibiliteit op lange termijn. | Compatibiliteit wordt tussen generaties minder benadrukt. |
| Veelvoorkomende gebruikssituaties | pc's, laptops, werkstations, servers (bijv. x86-systemen). | Mobiele apparaten, ingebedde systemen, ARMGebaseerde servers. |
Verkleint CISC de omvang van het programma?
Ja, CISC kan de programmagrootte verkleinen dankzij de rijkere instructies en flexDoor de verschillende adresseermodi kan een compiler vaak hetzelfde werk met minder instructies uitvoeren, wat doorgaans resulteert in kleinere machinecodebestanden (hogere codedichtheid) dan een vergelijkbare RISC-implementatie. Het voordeel qua grootte hangt echter af van de workload, de compiler en de details van de ISA. Moderne RISC-compilers en -functies (zoals gecomprimeerde instructiecoderingen op sommige ISA's) kunnen het verschil verkleinen, waardoor CISC niet altijd in alle gevallen kleinere programma's oplevert.
Zijn moderne CPU's CISC?
Veel moderne CPU's gebruiken CISC op instructiesetniveau, met name x86/x86-64 processors van Intel en AMD worden gebruikt in de meeste pc's en veel serversMaar een groot deel van de moderne CPU's is RISC (zoals ARM in telefoons en veel laptops, en RISC-V in de groeiende embedded systemen en sommige andere). server(gebruik van accelerator). Ook al is een CPU extern "CISC" (x86), moderne ontwerpen voeren instructies intern vaak uit als eenvoudigere micro-bewerkingen, waardoor de microarchitectuur er vaak RISC-achtig uitziet, hoewel de ISA CISC blijft voor compatibiliteit.