CPU Entwurf mit VHDL (CPU) - Cheatsheet
Syntax und Struktur von VHDL
Definition:
Grundlegende Regeln und Konventionen, die bestimmen, wie VHDL-Code geschrieben wird, um eine korrekte Beschreibung und Simulation digitaler Schaltungen zu ermöglichen.
Details:
- Entity: Definiert die Schnittstelle einer VHDL-Komponente
- Architecture: Beschreibt das Verhalten und die Struktur der Komponente
- Jede VHDL-Datei beginnt mit der library- und use-Anweisung
- Signale: Werden zur Kommunikation zwischen verschiedenen Teilen einer Architektur verwendet
- Prozesse: Blöcke, die sequentielle Anweisungen enthalten
- Klauseln: VHDL verwendet Klauseln wie if und case für Kontrollstrukturen
Kombinatorische und sequentielle Schaltungen
Definition:
Kombinatorische Logik: Ausgang nur von aktuellen Eingängen abhängig. Sequentielle Logik: Ausgang von aktuellen Eingängen und Speicherzustand abhängig.
Details:
- Kombinatorische Schaltungen: Keine Speicherung der Zustände, z.B. Addierer, Multiplexer.
- Sequentielle Schaltungen: Nutzung von Flip-Flops/Latches für Zustandsspeicherung, z.B. Register, Zähler.
- Kombinatorische Funktion: \[ Y = f(A, B, C, ...) \]
- Sequentielle Funktion: \[ Y(t+1) = f(Y(t), A, B, C, ...) \]
- Kombinieren: Sequentielle Systeme enthalten meist kombinatorische Schaltungen.
Von-Neumann-Architektur vs. Harvard-Architektur
Definition:
Unterschied zwischen Von-Neumann- und Harvard-Architektur - zentrales Konzept im CPU-Design.
Details:
- Von-Neumann-Architektur:
- Ein Speicher für Programme und Daten.
- Risiko von Daten- und Befehls-Konflikten.
- (\text{Single von Neumann bottleneck})
- Harvard-Architektur:
- Getrennte Speicher für Programme und Daten.
- Erhöhte Datenrate durch parallelen Zugriff.
- Komplexeres Design und höherer Speicherbedarf.
Pipeline-Prozessoren und deren Implementierung
Definition:
Optimierung der CPU-Leistung durch parallele Ausführung von Instruktionen in mehreren Stufen.
Details:
- Pipeline-Stufen: Fetch, Decode, Execute, Memory, Write-back
- Data-Hazards: RAW, WAR, WAW
- Control-Hazards und Branch-Prediction
- Forwarding/Bypassing zur Vermeidung von Stalls
- VHDL-Implementierung: Einteilung der Pipeline-Stufen in Prozesse
- Pipeline-Register: Speicherung von Zwischenständen zwischen den Stufen
- Stalls und Flushing: Techniken zur Theorie und Praxis der Pipeline-Implementierung
Funktions- und Timing-Simulation
Definition:
Simulation zur Überprüfung von Designfunktionalität und Timing-Spezifikationen eines digitalen Schaltungselements (z.B. CPU) in VHDL.
Details:
- Funktionssimulation prüft Logik des Designs ohne Timing-Effekte.
- Timing-Simulation berücksichtigt Verzögerungen durch Gatter- und Pfadlatenzen.
- Typisch in der Entwicklungsphase nach der Synthese und vor dem FPGA/ASIC-Implementierung.
- Essentiell zum Auffinden und Beheben von Timing-Fehlern und logischen Fehlern.
- Nutzung von Simulationswerkzeugen wie ModelSim, Vivado oder ähnlichen.
Instruktionssatzarchitekturen (ISAs)
Definition:
Beschreibt die Schnittstelle zwischen Software und Hardware der CPU.
Details:
- Zwei Haupttypen: RISC (Reduced Instruction Set Computing) und CISC (Complex Instruction Set Computing)
- Bestimmt Instruktionsformate, Adressierungsmodi und Registersatz
- Einfluss auf Leistung, Energieverbrauch und Komplexität der CPU
- Beispiele: x86, ARM, MIPS
- VHDL zur Modellierung und Simulation von ISAs in CPU-Entwürfen
Entwurf von Zustandsautomaten
Definition:
Entwurf von Zustandsautomaten: Prozess zur Entwicklung von Systemen, die Zustände basierend auf Eingaben ändern.
Details:
- Ein Zustandsautomat besteht aus Zuständen, Übergängen, Eingaben und Ausgaben.
- Darstellung durch Zustandsdiagramme und Zustandsübergangstabellen.
- Möglichst wenige Zustände definieren zur Minimierung der Komplexität.
- Implementierung in VHDL:
state_type
für Zustandsdefinition, process
als Zustandsübergangslogik. - Zustandsübergang: \texttt{if rising_edge(clk) then ...}
- Beispielzustände:
Idle, Read, Write
Speicherhierarchien und Cachestrukturen
Definition:
Speicherhierarchien optimieren den Datenzugriff durch unterschiedliche Speicherebenen; Cachestrukturen minimieren den Zugriff auf langsamere Speicher
Details:
- Speicherhierarchie: Register, Cache, Hauptspeicher, Massenspeicher
- Cache-Typen: L1, L2, L3
- Cache-Hitrate: Maß für erfolgreiche Zugriffe \text{(Cache Hits / Zugriffe)}
- Cache-Kohärenz: Konsistenz paralleler Caches sicherstellen
- Cache-Ersatzstrategien: LRU, FIFO
- Schreibstrategien: Write-Through, Write-Back