Befehlssatzarchitektur
Die Befehlssatzarchitektur (Instruction Set Architecture, ISA) ist die abstrakte Schnittstelle zwischen Hardware und Software: der Satz von Befehlen, Registern, Datentypen, Adressierungsmodi und dem Speichermodell, den ein Prozessor dem Programmierer und Compiler zur Verfügung stellt.
Definition
Eine Befehlssatzarchitektur ist der Vertrag, der die Operationen definiert, die ein Prozessor ausführen kann, die Operanden und Speicherorte, auf die sie wirken, und die binäre Kodierung von Programmen, sodass jede Implementierung, die den Vertrag einhält, denselben Maschinencode ausführt.
Scope
Dieser Bereich behandelt, was eine Maschine aus Software-Sicht tut, unabhängig davon, wie die Hardware dies implementiert. Er umfasst die Klassen von Befehlen (arithmetisch, logisch, Datentransfer, Steuerung), Befehlsformate und -kodierung, Registerorganisation, Adressierungsmodi, das Speicher- und Endianness-Modell, Ausnahmen und die Systemaufrufschnittstelle sowie die kontrastierenden RISC- und CISC-Philosophien. Ausgeschlossen ist die mikroarchitektonische Realisierung einer ISA – Pipelines, Caches und Out-of-Order-Engines –, die unter Prozessor-Mikroarchitektur behandelt werden.
Sub-topics
Core questions
- Welche Operationen, Operanden-Typen und Register muss eine ISA bereitstellen, um ein vollständiges Programmierziel zu sein?
- Wie werden Befehle binär kodiert, und wie wirkt sich die Kodierung auf die Codedichte im Vergleich zur Dekodierungs-Einfachheit aus?
- Wie spezifizieren Adressierungsmodi, wo Operanden in Registern und im Speicher liegen?
- Was unterscheidet die RISC-Philosophie einfacher Befehle mit festem Format von der CISC-Philosophie reichhaltiger Befehle variabler Länge?
- Wie wird die ISA als Kompatibilitätsvertrag stabil gehalten, während sie über Jahrzehnte hinweg erweitert wird?
Key concepts
- Befehlsformate und Opcodes
- Allzweck-Registerdatei
- Adressierungsmodi
- Load-Store-Architektur
- RISC vs. CISC
- Endianness und Ausrichtung
- Binärkompatibilität
- Ausnahmen und Systemaufrufe
- Befehlssatzerweiterungen
Key theories
- Trennung von Architektur und Implementierung
- Die ISA wird bewusst von der Mikroarchitektur getrennt, damit derselbe Befehlssatz über Generationen hinweg von vielen verschiedenen Hardware-Organisationen implementiert werden kann, wodurch die Binärkompatibilität erhalten bleibt, während die Leistung verbessert werden kann.
- RISC-Designprinzipien
- Das Argument des reduzierten Befehlssatzes besagt, dass ein kleiner Satz einfacher, festlängiger Register-zu-Register-Befehle effizient pipelined und gut kompiliert werden kann, wobei er oft komplexe Befehlssätze übertrifft, obwohl mehr Befehle ausgeführt werden.
Clinical relevance
Die ISA ist das langlebige Asset einer Computerplattform: x86, ARM und RISC-V verankern jeweils riesige Software-Ökosysteme, und Entscheidungen über den Befehlssatz bestimmen, welche Compiler, Betriebssysteme und Binärdateien ausgeführt werden können. Stabile ISAs ermöglichen es der Hardware, sich unter unveränderter Software weiterzuentwickeln, während offene ISAs wie RISC-V das Prozessordesign und die Ausbildung neu gestaltet haben.
History
Frühe Maschinen verfügten über eigenwillige Befehlssätze; die IBM System/360 (1964) war Vorreiter der Idee einer einzigen ISA, die über eine Familie von Maschinen implementiert wurde. In den 1970er Jahren entstanden zunehmend komplexe Befehlssätze (CISC), was in den frühen 1980er Jahren die RISC-Reaktion auslöste, die mit Patterson in Berkeley und Hennessy in Stanford verbunden ist. Die offene RISC-V ISA, die um 2010 in Berkeley begann, belebte das Interesse an einem sauberen, erweiterbaren Befehlssatzdesign wieder.
Debates
- RISC versus CISC
- Ob einfache Befehlssätze mit festem Format komplexen Befehlssätzen mit variabler Länge grundsätzlich überlegen sind, wird weiterhin diskutiert; in der Praxis übersetzen moderne Hochleistungs-CISC-Implementierungen komplexe Befehle intern in RISC-ähnliche Mikrooperationen, wodurch die ursprüngliche Unterscheidung verwischt wird.
Key figures
- David A. Patterson
- John L. Hennessy
- Gene Amdahl
- Seymour Cray
- Krste Asanović
Related topics
Seminal works
- hennessy2019
- patterson2020
- patterson1980risc
Frequently asked questions
- Was ist der Unterschied zwischen Befehlssatzarchitektur und Mikroarchitektur?
- Die ISA ist die sichtbare Schnittstelle – die Befehle und Register, die ein Programm verwendet –, während die Mikroarchitektur die interne Hardware-Organisation (Pipeline, Caches, Ausführungseinheiten) ist, die diese Schnittstelle implementiert. Viele Mikroarchitekturen können dieselbe ISA implementieren.
- Warum ist Binärkompatibilität so wichtig?
- Da Software für eine bestimmte ISA kompiliert wird, ermöglicht die Stabilität der ISA den Benutzern, bestehende Programme auf neuen Prozessoren ohne Neukompilierung auszuführen, wodurch enorme Investitionen in Software geschützt werden, während sich die Hardware darunter verbessert.