## 📘 **Kompaktes Lernskript: Computerarchitektur (alle 13 Vorlesungen)** --- ### **1️⃣ Einführung – Computerarchitektur** - **Computerarchitektur**: Sicht des Programmierers (ISA, Speicher, I/O) - **Computerorganisation**: Umsetzung auf Hardware-Ebene (Mikroarchitektur) - **Von-Neumann-Architektur**: - Gemeinsamer Speicher für Daten & Programme - Vorteil: Einfachheit; Nachteil: Von-Neumann-Flaschenhals - **Harvard-Architektur**: - Trennung von Daten- und Programmspeicher - **Abstraktionsebenen**: - Ebene 0: Digitale Logik - Ebene 1: Mikroarchitektur - Ebene 2: ISA - Ebene 3: Betriebssystem - Ebene 4: Assemblersprache - Ebene 5: Hochsprachen - **Historie**: Zuse Z3 → ENIAC → IBM System/360 → Intel 4004 → ARM --- ### **2️⃣ Architekturen** - **RISC vs. CISC**: |Merkmal|RISC|CISC| |---|---|---| |Befehlssatz|Einfach, gleich lang|Komplex, unterschiedliche Länge| |Hardware|Einfach|Komplex| |Beispiele|ARM, MIPS|x86 (Intel, AMD)| - **Befehlssatztypen**: - Stack, Akkumulator, Register-Memory, Load/Store - **Moore’s Law**: Verdopplung der Transistorzahl alle ~18 Monate - **Leistungskennzahlen**: MIPS, FLOPS, CPI, IPC --- ### **3️⃣ Schaltnetze & Endliche Automaten** - **Schaltnetz**: stateless, keine Rückkopplung - **Endlicher Automat (FSM)**: stateful, mit Rückkopplung - **Flip-Flops**: Zustandspeicher, getaktet - **DEA**: Zustandslogik + Zustandspeicher + Takt --- ### **4️⃣ Prozessor (Teil 1)** - **MIPS-ISA**: - R-Typ: `add $s1, $s2, $s3` - Load/Store: `lw`, `sw` - Branch: `beq`, `bne` - **CPU-Leistungsformel**: CPU-Zeit=IC×CPI×CTCPU\text{-Zeit} = IC \times CPI \times CT - **Datenpfad-Bausteine**: ALU, Registerfile, Steuerwerk --- ### **5️⃣ Prozessor (Teil 2)** - **Steuersignale**: - MemtoReg, RegWrite, ALUSrc, Branch, Jump - **ALU Control**: Bestimmt Operation aus Opcode + Funct - **Erweiterter Datenpfad**: Unterstützung für Jumps & Branches --- ### **6️⃣ Pipelining** - **5 Pipeline-Stufen**: IF → ID → EX → MEM → WB - **Vorteil**: Erhöhter Durchsatz, gleiche Latenz - **Hazards**: - **Strukturell** - **Datenhazards**: Forwarding, Stalls - **Kontrollhazards**: Branch Prediction (Static/Dynamic) --- ### **7️⃣ Pipelining: Datapath & Control** - **Forwarding**: Bypassing von EX/MEM, MEM/WB - **Load-Use Hazard**: 1-Stall einfügen - **Branch Prediction**: - 1-Bit, 2-Bit Predictors - Branch Target Buffer (BTB) --- ### **8️⃣ Pipelining: Exceptions, Interrupts & ILP** - **Exceptions**: Fehler innerhalb CPU → EPC speichert PC - **Interrupts**: externe Ereignisse - **ILP**: - **Static (VLIW)** vs. **Dynamic (Superscalar)** - **Speculation**: Branch & Load Speculation - **Register Renaming**: Verhindert WAW & WAR --- ### **9️⃣ Intel vs. ARM** |Feature|ARM Cortex-A8|Intel Core i7| |---|---|---| |Planung|Statisch, in-order|Dynamisch, out-of-order| |TDP|2 W|130 W| |Max Instr./Takt|2|4| --- ### **🔟 Speicheranbindung** - **Speicherhierarchie**: Register → Cache → RAM → SSD/HDD - **Caches**: - Direct-Mapped, Set-Associative, Fully-Associative - Write-Through vs. Write-Back - **AMAT**: AMAT=HitTime+MissRate×MissPenaltyAMAT = HitTime + MissRate \times MissPenalty - **Cache Blocking**: Optimiert Speicherzugriffe --- ### **1️⃣1️⃣ Assembler** - **Assembler**: Übersetzt Assemblersprache → Maschinencode - **Zwei-Pass-Assembler**: Symboltabelle, Opcode-Tabelle - **Linker**: Relokation & externe Referenzen - **Makros**: Ersetzung bei Übersetzung - **Dynamisches Binden**: DLL (Windows), SO (Unix) --- ### **1️⃣2️⃣ Compiler** - **Compiler-Phasen**: 1. Lexikalische Analyse 2. Syntaktische Analyse (AST) 3. Semantische Analyse 4. Zwischencode (3-Adress-Code) 5. Optimierung (lokal, global) 6. Codegenerierung - **Optimierungstechniken**: Loop Unrolling, Constant Folding, Dead Code Elimination - **Tools**: `cc -E`, `cc -S`, `cc -c`, `cc -o` --- ### **1️⃣3️⃣ Zuverlässigkeit & Virtualität** - **Zuverlässigkeit**: Availability=MTTFMTTF+MTTRAvailability = \frac{MTTF}{MTTF + MTTR} - **Hamming-Codes**: SEC/DED, ECC DRAM - **Virtuelle Maschinen (VMs)**: - Vorteile: Isolation, Sicherheit - VMM: verwaltet Ressourcen, Traps für privilegierte Instruktionen - **Virtueller Speicher**: - Page Tables, TLB, Page Fault Handling - **Cache-Kohärenz**: - Snooping, Directory-basierte Protokolle --- 💡 **Merke**: Prinzip der Lokalität & Speicherhierarchie sind Schlüsselthemen für Performance!