Befehlssatzerweiterungen
Befehlssatzerweiterungen fügen einer Basisarchitektur neue Instruktionen hinzu – für Vektor- und SIMD-Mathematik, Kryptographie, atomare Operationen oder andere spezialisierte Aufgaben – wodurch die Leistungsfähigkeit erweitert und gleichzeitig die Kompatibilität mit bestehender Software erhalten bleibt.
Definition
Eine Befehlssatzerweiterung ist ein Satz zusätzlicher Instruktionen, die auf eine Basis-Befehlssatzarchitektur aufgesetzt werden, um neue Funktionalitäten bereitzustellen – üblicherweise datenparallele, kryptographische oder atomare Operationen – während bestehende Instruktionen und die binäre Kompatibilität intakt bleiben.
Scope
Dieses Thema behandelt, wie Befehlssätze im Laufe der Zeit durch optionale oder obligatorische Erweiterungen wachsen: SIMD- und Vektor-Erweiterungen für Datenparallelität, kryptographische und Bitmanipulationsinstruktionen, atomare und Synchronisationsprimitive sowie das modulare Erweiterungsmodell von ISAs wie RISC-V. Es behandelt die Ziele und Einschränkungen der Erweiterung einer ISA ohne Bruch der Kompatibilität. Es schließt die zugrunde liegende parallele Hardware, die diese Instruktionen ausführt (SIMD- und Vektorprozessoren), und das grundlegende Kodierungsschema (Instruktionsformate und Kodierung) aus.
Core questions
- Warum werden Befehlssätze erweitert und nicht neu entworfen?
- Wie werden Erweiterungen in einen festen Kodierungsraum eingefügt, ohne bestehenden Code zu beschädigen?
- Welche Arten von Operationen rechtfertigen üblicherweise dedizierte Erweiterungen?
- Wie ermöglicht ein modulares Erweiterungsmodell, dass Implementierungen nur die benötigten Funktionen enthalten?
Key concepts
- SIMD-Erweiterungen
- Vektor-Erweiterungen
- kryptographische Instruktionen
- atomare und Synchronisationsinstruktionen
- modulare und optionale Erweiterungen
- Abwärtskompatibilität
- Opcode-Raum-Management
Mechanisms
Erweiterungen beanspruchen zuvor ungenutzten Opcode-Raum und definieren neue Instruktionen, Register oder Zustände. Software erkennt verfügbare Erweiterungen zur Laufzeit (zum Beispiel über Feature-Flags) und verzweigt zu optimierten Codepfaden. SIMD- und Vektor-Erweiterungen fügen breite Register und Operationen hinzu, die eine Instruktion auf viele Datenelemente anwenden; modulare ISAs wie RISC-V standardisieren eine kleine Basis und ein Menü optionaler Erweiterungen, die Implementierer zusammenstellen.
Clinical relevance
Erweiterungen sind der Weg, wie Befehlssätze mit neuen Arbeitslasten Schritt halten, ohne ihre Software-Ökosysteme aufzugeben. SIMD-Familien wie x86 SSE/AVX und ARM NEON beschleunigen Multimedia-, wissenschaftliche und maschinelle Lern-Kernels; kryptographische Erweiterungen beschleunigen die Verschlüsselung; und modulare Erweiterungen ermöglichen es einer einzigen ISA, von winzigen Mikrocontrollern bis zu Supercomputern zu skalieren.
History
SIMD-Erweiterungen fanden in den späten 1990er Jahren mit Intels MMX und SSE und später AVX sowie ARMs NEON Eingang in Mainstream-CPUs. Spezialisierte Erweiterungen für Kryptographie und, in jüngerer Zeit, maschinelles Lernen folgten. Die RISC-V ISA, von Anfang an um eine minimale Basis plus standardisierte optionale Erweiterungen herum konzipiert, machte das modulare Erweiterungsmodell explizit und zentral.
Key figures
- John L. Hennessy
- David A. Patterson
- Krste Asanović
Related topics
Seminal works
- hennessy2019
- patterson2020
Frequently asked questions
- Wie verwenden Programme eine Erweiterung, die nicht jeder Prozessor besitzt?
- Software erkennt zur Laufzeit, welche Erweiterungen der Prozessor unterstützt, üblicherweise durch Abfragen von Feature-Flags, und wählt einen optimierten Codepfad, wenn die Erweiterung vorhanden ist, oder greift andernfalls auf Basisinstruktionen zurück, wodurch die Korrektheit über verschiedene Hardware hinweg erhalten bleibt.
- Was bedeutet es, dass RISC-V modular ist?
- RISC-V definiert einen kleinen obligatorischen Basis-Integer-Befehlssatz plus einen Satz standardisierter optionaler Erweiterungen (für Multiplikation, Atomare Operationen, Gleitkomma, Vektoren und mehr). Eine Implementierung enthält nur die Erweiterungen, die sie benötigt, sodass dieselbe ISA von winzigen eingebetteten Kernen bis zu Hochleistungsprozessoren reicht.