Complex Instruction Set Computer (CISC) ist eine Design-Philosophie für Prozessoren, die auf einen komplexen Befehlssatz mit vielen mächtigen Befehlen setzt. Das Gegenmodell ist der RISC-Prozessor.

Merkmale

  • Viele Befehle mit unterschiedlicher Länge (bei x86 von 1 bis 15 Bytes)
  • Befehle arbeiten direkt auf Speicheroperanden: ADD [Adresse], Register lädt, addiert und speichert in einem einzigen Befehl
  • Viele Adressierungsarten (direkt, indirekt, indiziert, Basis+Offset)
  • Mikroprogrammsteuerung: komplexe Befehle werden intern über Mikrocode in einfache Schritte zerlegt

Geschichte

In den 1960er- und 1970er-Jahren war Speicher teuer und Compiler waren primitiv. Die Hardware sollte möglichst viel in einem Befehl erledigen, damit Programme klein blieben und Assembler-Programmierer wenige Befehle schreiben mussten. Klassische CISC-Prozessoren sind VAX, PDP-11, Motorola 68000, Zilog Z80 und der x86-Stammbaum.

Vorteile und Nachteile

Vorteil ist die hohe Codedichte: Eine komplexe Operation benötigt nur wenige Bytes und passt in kleinen Speicher oder ROM-Firmware. Nachteile: Die variable Befehlslänge und die komplexe Semantik erschweren das Pipelining und die superskalare Ausführung; die Steuerlogik verbraucht viel Chipfläche, und der Mikrocode wurde zum Flaschenhals.

Die RISC-Wende und die Moderne

In den 1980er-Jahren zeigten Patterson und Hennessy, dass einfache, gleich lange Befehle deutlich schneller pipelinbar sind – der RISC-Ansatz setzte sich bei neuen Architekturen durch. Moderne x86-Prozessoren sind Hybrid: Nach außen bleibt die CISC-Instruktionssatz-Schnittstelle, intern zerlegt die Dekodier-Einheit jeden Befehl in RISC-artige Mikrooperationen, die ein superskalarer Kern mit Register-Renaming und Out-of-Order-Ausführung parallel abarbeitet – die bekannte Lösung „CISC-Frontend, RISC-Backend“.

Zur Mikroarchitektur grenzt sich CISC klar ab: Es beschreibt die äußere Befehlssatz-Philosophie, die innere Umsetzung kann ganz anders aussehen. Die Codierung der Befehle in Binärcode behandelt die Maschinensprache, einzelne Operationscodes der Opcode.

In der CISC-Ära wurden FPUs häufig als separate Coprozessoren ausgeliefert, weil der Befehlssatz bereits sehr komplex war. Eine dritte Design-Richtung neben CISC und RISC ist VLIW: Statt komplexer Einzelbefehle plant der Compiler mehrere einfache Operationen in ein breites Befehlswort.