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], Registerlä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.