245 lines
5.1 KiB
Markdown
245 lines
5.1 KiB
Markdown
## 📘 **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!
|