Complex instruction set computer

De Intel Pentium, een voorbeeld van een CISC-processor

Complex instruction set computer, acroniem CISC, is in het Nederlands vertaald: "Complexe-instructiesetcomputer". Het betreft een instructiesetarchitectuur waar elke instructie van laag niveau is, zoals het ophalen van gegevens uit het geheugen, een rekenkundige bewerking en het opslaan van gegevens in het geheugen, allemaal in een enkele instructie. De term was geïntroduceerd als tegenhanger van de Reduced instruction set computer (RISC).

Voordat de eerste RISC-processoren waren ontworpen, hadden vele computerontwerpers gepoogd om het "gat" tussen de elementaire processorinstructies en de complexe hogere programmeertalen te overbruggen, door middel van processorinstructies die tevens "hoge" bewerkingen toestaan, zoals procedureconstructies, lusinstructies zoals "verlaag en verspring indien niet-nul" en complexe geheugenadresseringmodi om datastructuren en arrays te benaderen met één enkele instructie. Door complexe operaties in één instructie te stoppen leverde dat per saldo kleinere programma's en minder geheugenbenaderingen op, wat toentertijd (de jaren '60) een enorme reductie bracht in de kosten van een computer.

Terwijl men het doel heeft bereikt om de complexere (hogere programmeertaalachtige) constructies toe te passen in minder instructies, merkte men dat dit niet altijd tot hogere prestaties leidde. Bijvoorbeeld, bij een processor werd ontdekt dat het mogelijk was om de prestaties te verhogen door geen procedure-instructies te gebruiken maar daarvoor in de plaats een serie van simpele instructies. Bovendien blijkt ook, hoe complexer de instructieset, hoe meer tijd het kost om elke instructie te decoderen, zowel in uitvoertijd en in de processorchip zelf. Dit is zeker het geval met processoren die gebruikmaken van microcode om de instructies te decoderen. In andere woorden, door het toevoegen van grote en complexe instructies in de processor zelf maakt zelfs de uitvoer van eenvoudige instructies langzamer. Het implementeren van deze complexe instructies kost de chipontwerper veel werk, en er zijn veel transistoren voor nodig. Dit beperkt de ruimte in het processorontwerp om voorzieningen te treffen om de prestaties ervan juist te verbeteren.

Enkele voorbeelden van CISC-processoren zijn de: VAX, PDP-11, Motorola 68000-familie en de Intel x86-familie (waaronder ook de Pentiumprocessoren).

De term CISC heeft in de loop van de tijd, net zoals het tegenovergestelde RISC, minder betekenis gekregen met de voortgaande evolutie met zowel CISC- en RISC-ontwerpen en uitvoeringen. Een moderne CISC-processor, zoals de recente Pentium 4, ondersteunt elke instructie van zijn voorgangers en is tevens ontworpen om zo efficiënt mogelijk te werken met een RISC-achtige instructieset. Daarnaast vertalen de meeste CISC-processoren (zoals de moderne x86-processoren van Intel en AMD) veel x86-instructies intern in een serie van kleinere micro-instructies en voeren die uit.