## 📘 **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!
