In der Computertechnik bezeichnet die Computerarchitektur den konzeptionellen Entwurf und die grundlegende Betriebsstruktur eines Computersystems. Sie ist die technische Zeichnung und die funktionelle Beschreibung der Designziele — insbesondere Leistungsanforderungen, Schnittstellen und Kommunikationspfade — und beschreibt, wie verschiedene Teile eines Computers entworfen und zusammenwirken. Häufig liegt der Schwerpunkt darauf, wie die Zentraleinheit (CPU) intern arbeitet und wie sie auf Adressen im Speicher zugreift. Die Architektur verbindet abstrakte Programmiermodelle mit realisierbaren Hardwarelösungen.
Man kann Computerarchitektur auch als die Wissenschaft und Kunst bezeichnen, Hardwarekomponenten auszuwählen und zu verbinden, um Systeme zu schaffen, die funktionale, Leistungs- und Kostenanforderungen erfüllen. Das bedeutet immer Kompromisse (z. B. zwischen Geschwindigkeit, Fläche, Energieverbrauch und Kosten) und erfordert sowohl theoretisches Verständnis als auch praktische Erfahrung.
Die drei Ebenen der Computerarchitektur
Die Computerarchitektur gliedert sich grob in drei Hauptbereiche:
- Die Befehlssatzarchitektur oder ISA ist das abstrakte Modell eines Computersystems, das ein Programmierer in Maschinensprache (oder Assembler) sieht. Dazu gehören der Befehlssatz, die Speicheradressmodi, die Organisation der Prozessorregister, Adress- und Datenformate sowie Konventionen wie Endianness und Ausnahme-/Interrupt-Verhalten. Die ISA definiert, welche Operationen ein Prozessor ausführen kann und wie Programme den Prozessor ansprechen.
- Mikroarchitektur, auch Computerorganisation genannt, ist die detailliertere Beschreibung, wie eine bestimmte ISA in Hardware realisiert wird. Hier geht es um Pipeline-Design, Register-Transfer-Logik, Cache-Größen, Branch-Prediction, Ausführungs-Einheiten, Superskalarität, Out-of-Order-Ausführung, und wie Daten über Busses und Zwischenspeicher fließen. Während verschiedene Mikroarchitekturen dieselbe ISA implementieren können, beeinflussen sie stark Leistung, Energieverbrauch und Kosten.
- Systementwurf umfasst alle anderen Hardwarekomponenten innerhalb eines Computersystems, z. B.:
- Systemverbindungen wie Computerbusse und Switches: Auswahl eines geeigneten Interconnects (Bus, Crossbar, Network-on-Chip) beeinflusst Latenz und Bandbreite.
- Speicher-Controller und Hierarchien: Gestaltung von Cache-Leveln (L1/L2/L3), DRAM-Zugriff, Speicherbandbreite und Konsistenzprotokollen (z. B. MESI).
- CPU-Auslastungsmechanismen wie direkter Speicherzugriff (DMA) oder Interrupt-Architekturen, die I/O und Rechenwerk effizient koppeln.
- Themen wie Multi-Processing: Mehrkern-Designs, Speicher-Kohärenz, NUMA-Architekturen und Skalierungsfragen.
ISA – Was Entwickler sehen und nutzen
Die ISA ist die Grenze zwischen Software und Hardware. Wichtige Aspekte sind:
- Befehlskategorien: arithmetische/logische Operationen, Laden/Speichern, Sprünge, Systemaufrufe.
- Adressierungsmodi: unmittelbar, Register, Basis+Offset, indirekt, PC-relative Adressierung.
- Registerfile: Anzahl und Typen von Registern (Allzweck, Floating-Point, spezielle Kontrollregister).
- Datentypen und Formate: Integergrößen, Gleitkommaformate, Vektor- bzw. SIMD-Register.
- Konventionen: Aufrufkonventionen, Stack-Layout, Ausnahmemechanismen und Privilegienebenen.
Beispiele von bekannten ISA-Paradigmen sind RISC (reduced instruction set) und CISC (complex instruction set). RISC betont einfache, schnell ausführbare Instruktionen; CISC bietet oft komplexe, kodierte Instruktionen — beide haben heute Merkmale des anderen.
Mikroarchitektur – Wie die ISA umgesetzt wird
Die Mikroarchitektur beschreibt die Pipeline-Stufen (Fetch, Decode, Execute, Memory, Writeback), die Steuerung von Abhängigkeiten (Hazards), Branch-Prediction, Reorder-Buffers und Mechanismen für Parallelität (Superscalar, SMT). Kernpunkte:
- Pipelining: Erhöht die Durchsatzrate, erfordert aber Maßnahmen gegen Daten-, Struktur- und Kontroll-Hazards.
- Out-of-Order-Ausführung: Verbessert die Nutzung von Ausführungseinheiten, benötigt komplexe Registerumbenennung und Reorder-Logik.
- Speicherhierarchie: Nah an der CPU befinden sich schnelle Caches (L1), gefolgt von größeren L2/L3 Caches und DRAM. Cache-Größe, Assoziativität, Blockgröße und Ersetzungsstrategie beeinflussen Leistung stark.
- Branch-Prediction: Minimiert Kosten von Sprunganweisungen durch Vorhersage und speculative Execution.
- Vektor- und Beschleunigerunterstützung: SIMD-Erweiterungen, GPU-/TPU-Integration oder dedizierte Multimedia-Units für spezielle Workloads.
Systementwurf – Das gesamte Computersystem
Systemdesign umfasst I/O-Subsysteme, Speicher-Controller, Peripherie, Bus-Architektur und Skalierung zu Mehrkern- oder Multiprozessor-Systemen:
- Interconnects: Auswahl zwischen einfachen Bussen, Switches, Crossbars oder komplexen NoC (Network-on-Chip) für viele Kerne.
- I/O und DMA: Direkter Speicherzugriff entlastet die CPU bei großen Datenbewegungen.
- Mehrprozessorsysteme: Kohärenzprotokolle, Synchronisationsmechanismen und Lastverteilung bestimmen das Verhalten in Multi-Core-Umgebungen.
- Speichertechnologien: DRAM, NVRAM, Caches und Hierarchien sowie deren Einfluss auf Latenz und Bandbreite.
- Sicherheits- und Virtualisierungsfunktionen: Hardware-Unterstützung für Isolation, Trusted Execution Environments (TEE) und Virtualisierung.
Implementierung: Vom Entwurf zur realen Hardware
Nachdem ISA und Mikroarchitektur definiert sind, wird die Architektur implementiert. Dieser Prozess umfasst mehrere, teils überlappende Phasen:
- Implementierung der Logik: Beschreibung der Funktionalität auf Register-Transfer-Level (RTL), typischerweise in Hardwarebeschreibungssprachen wie Verilog oder VHDL.
- Schaltkreis-Implementierung: Detaillierter Entwurf auf Transistor-Ebene von Grundelementen (z. B. Transistorebene), Gattern, Multiplexern, Flip-Flops sowie größeren Blöcken wie ALUs und Caches.
- Physische Umsetzung: Floorplanning, Placement & Routing, Erstellung des Chip-Layouts oder Platinenentwurfs, Signal- und Versorgungsrouting sowie Design für Fertigung (DFM).
Weitere wichtige Schritte sind:
- Synthese und Timing-Analyse: Umsetzen von RTL in Gate-Netzwerke, Statistische Timing-Analyse und Sicherstellung, dass die kritischen Pfade die gewünschte Taktfrequenz erlauben.
- Leistungs- und Wärmemanagement: Entwurf für Energieeffizienz (P/M-States, Clock-Gating, DVFS) und thermische Verteilung.
- Verifikation und Test: Funktionale Verifikation (Simulation, formale Methoden), Hardware-Emulation, Debugging, Test-Vektoren und Herstellungstests (ATE).
- Prototyping: FPGA-Implementierungen zur schnellen Evaluierung, bevor ein ASIC in die Fertigung geht.
Leistungsbetrachtungen und Metriken
Wichtige Kennzahlen sind IPC (Instructions per Cycle), Taktfrequenz, Latenz, Durchsatz, Energie pro Operation und Fläche (Siliziumfläche). Bei der Optimierung gilt es häufig, Amdahls Gesetz und Workload-spezifische Charakteristika zu berücksichtigen: eine Verbesserung eines Teilteils des Systems bringt nur begrenzte Gesamtverbesserung, wenn andere Teile dominieren.
Beispiele und historische Konzepte
Traditionelle Unterscheidungen wie RISC vs. CISC prägen noch immer Designentscheidungen, ebenso wie Konzepte aus der Mikroarchitektur (Superscalar, VLIW, Out-of-Order). Moderne Systeme kombinieren oft Elemente verschiedener Philosophien und fügen spezialisierte Beschleuniger (z. B. für KI/ML) hinzu.
Sobald sowohl die ISA- als auch die Mikroarchitektur spezifiziert sind, muss das eigentliche Computersystem als Hardware entworfen werden. Dieser Entwurfsprozess wird Implementierung genannt. Die Implementierung ist in der Regel ein Entwurfsprozess der Hardwaretechnik und umfasst die oben beschriebenen Stufen von RTL über Schaltkreisentwurf bis zur physischen Realisierung.
Bei CPUs wird der gesamte Implementierungsprozess oft als CPU-Design bezeichnet; es kann sich auch um eine Familie verwandter CPU-Designs handeln, wie z.B. RISC und CISC. Moderne CPU-Designs sind zudem stark beeinflusst von Anforderungen an Energieeffizienz, Sicherheitsfunktionen, Virtualisierungsunterstützung und Integration von Beschleunigern auf System-on-Chip-(SoC)-Ebene.