This commit is contained in:
fzzinchemical
2025-07-08 18:34:59 +02:00
parent ceedd6b064
commit 90dc632ada
6 changed files with 106 additions and 353 deletions

Binary file not shown.

View File

@@ -3,44 +3,30 @@
### 🏛️ Was ist Computerarchitektur?
- **Definition:** Untersuchung, wie alle Teile eines Computersystems entworfen werden müssen, um eine optimale Programmierung zu ermöglichen.
- **Enthält:** Datentypen, Operationen, Merkmale, Komponenten auf unterschiedlichen Ebenen.
- **Begriffspaare:**
- **Computerarchitektur** = was der Programmierer „sieht“ (Befehlssatz, Speicher, IO)
- **Computerorganisation** = wie es technisch umgesetzt ist (Mikroarchitektur, Logikgatter)
---
### 🔄 Wichtige Kundenfragen
- Ist der neue Rechner **kompatibel**?
- Betriebssystem, Programme, Peripherie => **Abwärtskompatibilität**
- Unterschiedliche Bedürfnisse von Mensch & Maschine → **Abstraktion nötig**
---
### 🪜 Ebenen der Abstraktion (Virtuelle Maschinen)
1. **Ebene 0 Digitale Logik:** Gatter, Flipflops
2. **Ebene 1 Mikroarchitektur:** ALU, Register, Datenpfade
3. **Ebene 2 ISA (Instruction Set Architecture):** Maschinensprache
4. **Ebene 3 Betriebssystemebene:** Multiprogramming, IO-Abstraktion
5. **Ebene 4 Assemblersprache:** maschinennahe Programmierung
6. **Ebene 5 Höhere Programmiersprachen:** unabhängige Algorithmen
---
### 📜 Historie der Computer
@@ -48,98 +34,67 @@
#### Nullte Generation (vor 1945)
- Mechanische Rechenmaschinen (Pascal, Leibniz, Babbage)
- Zuse Z3 (1941) erster programmgesteuerter Computer
#### Erste Generation (19451955)
- Relais, Vakuumröhren
- **ENIAC**, **COLOSSUS**, **IAS-Maschine**
- Einführung der Mikroprogrammierung (Wilkes, 1951)
- Von-Neumann-Architektur:
- Gemeinsamer Speicher für Daten & Programme
- Vorteil: Programme können sich selbst ändern
- Harvard-Architektur:
- Trennung von Daten- & Programmspeicher
- Vorteil: schneller & sicherer
#### Zweite Generation (19551965)
- **Transistoren** ersetzen Röhren
- Minicomputer (DEC PDP)
#### Dritte Generation (19651980)
- **Integrierte Schaltungen**
- IBM System/360 → Abwärtskompatibilität
#### Vierte Generation (ab 1980)
- **VLSI (Very Large Scale Integration)**
- Personal Computer (IBM PC, Commodore, Apple)
- RISC vs. CISC Architekturen
#### Fünfte Generation (heute)
- Cloud Computing, Mobile Geräte, Embedded Systems
---
### 🚀 Meilensteine
- **Intel 4004 (1971):** erster Mikroprozessor (4-bit)
- **Intel 8080, 8086:** Vorläufer moderner x86-Architektur
- **Cray-1 (1977):** erster Vektorrechner/Supercomputer
- **PDP-11 (1970):** Unix & Programmiersprache C entstanden darauf
---
### 📚 Literatur (Hauptquelle für Klausurvorbereitung)
- Patterson & Hennessy:
- _Rechnerorganisation und Rechnerentwurf_
- _Computer Organization and Design_ (RISC-V Edition)
---
### 📝 Organisatorisches
- **Vorlesung:** Do 13:3015:00
- **Übung:** Do 15:1516:00
- **Labor:** Do 16:1519:15 (alle 2 Wochen)
- **Prüfung:** E-Klausur 90 min (mind. 50% zum Bestehen)
- **Voraussetzungen:** DIGIT & BESYST bestanden
---
### 🧠 Für die Klausur merken

View File

@@ -3,90 +3,58 @@
### 🔄 Wiederholung Computergenerationen
- **0. Generation (bis 1945):** Mechanische Rechenmaschinen (Pascal, Leibniz, Babbage, Zuse)
- **1. Generation (19451955):** Relais & Vakuumröhren ENIAC, COLOSSUS, MANIAC
- **2. Generation (19551965):** Transistoren Minicomputer (PDP), Supercomputer (CDC 6600)
- **3. Generation (19651980):** Integrierte Schaltungen IBM System/360, PDP-11
- **4. Generation (ab 1980):** VLSI PCs, x86-Architektur
- **5. Generation (heute):** Smartphones, Cloud, Embedded Systems
---
### 🚀 Moores Law (Moorsches Gesetz)
- **Kerngedanke:** Verdopplung der Anzahl Transistoren pro IC alle 1224 Monate.
- Auswirkungen:
- Kleinere Strukturen → geringere Kosten
- Mehr Komponenten → höhere Leistung
- Geringerer Stromverbrauch
- Aber: Miniaturisierung wird zunehmend teurer und schwieriger.
---
### 📊 Leistungsmessung von Computern
- **System-Benchmarks:** Cinebench, 3DMark, HPC Challenge
- **Kennzahlen:**
- Instruktionen/Sekunde (IPS), FLOPS
- Taktzyklen pro Instruktion (CPI), Instruktionen pro Takt (IPC)
- Speicherzugriffszeit, Durchsatz
- Netzwerk- & Grafikleistung (FPS, TPS)
- Kritik an MIPS: „Misleading Information to Promote Sales“ nicht immer aussagekräftig.
---
### 🤖 Computer als endlicher Automat (Finite State Machine)
- **Zustände:** durch Bitmuster repräsentiert
- **Operation:** Boolesche Funktion auf Teilzuständen
- Vergleichbare Modelle:
- Schaltnetz (ohne Schleifen)
- Endlicher Automat (deterministisch/nichtdeterministisch)
- Kellerautomat (mit Stack)
- Turingmaschine (unendliches Band)
---
### 🚌 Speicheranbindung & Endianness
- Speicheradressierung:
- **big-endian:** höchstwertiges Byte an kleinster Adresse
- **little-endian:** niedrigstwertiges Byte zuerst
- Bus-System:
- Bus-Takt meist langsamer als CPU-Takt
- Cache als schneller Zwischenspeicher
---
### ⚙️ Aufbau von Computersystemen
@@ -94,23 +62,16 @@
#### Rechenwerk (ALU)
- Operationen: +, , *, /, logische Operationen
- Moderne CPUs: mehrere Register → direkte Register-Register-Operationen
- Ältere CPUs: Akkumulator-Register für ALU-Operationen
#### Steuerwerk
- Verantwortlich für:
- Ausführung der Befehle
- Datenflusskontrolle
- Ausnahmebehandlung & Interrupts
---
### 🧵 Befehlssatzarchitekturen (ISA)
@@ -118,49 +79,32 @@
#### 1⃣ Stack-Architektur
- Operanden und Ergebnisse liegen auf Stack.
- Vorteile: kompakter Code, minimaler Prozessorzustand
- Nachteil: viele Speicherzugriffe
- Heute: nur noch in virtuellen Maschinen (JVM, p-Machine)
#### 2⃣ Akkumulator-Architektur
- Ein Register (Akkumulator) für Operanden & Ergebnis
- Speicherzugriff für zweiten Operand nötig
- Kompakt, aber teuer durch Speicherzugriffe
#### 3⃣ Register-Memory-Architektur
- Mehrere Register, 2. Operand aus Speicher
- Zwei-Adress-Befehle
- Vorteil: direkt mit Speicher arbeiten
- Nachteil: Speicherzugriffe kosten Zeit
#### 4⃣ Register-Register (Load/Store)-Architektur
- Arithmetik nur auf Registern
- Speicherzugriff explizit mit Load/Store
- Drei-Adress-Befehle
- Vorteil: keine unnötigen Speicherzugriffe
- Nachteil: mehr Befehle nötig → größerer Code
- Typisch für **RISC-Architekturen**
---
### 🔥 RISC vs CISC

View File

@@ -2,32 +2,22 @@
### 🧠 Einführung: CPU-Leistungsfaktoren
- **Instruction Count (IC):** Anzahl der Befehle → bestimmt durch ISA & Compiler
- **Cycles Per Instruction (CPI):** Anzahl der Takte pro Befehl → bestimmt durch Hardware
- **Cycle Time (CT):** Dauer eines Takts → bestimmt durch Hardware
- **CPU-Zeit Formel:**
- **Instruction Count (IC):** Anzahl der Befehle → bestimmt durch ISA & Compiler\
- **Cycles Per Instruction (CPI):** Anzahl der Takte pro Befehl → bestimmt durch Hardware\
- **Cycle Time (CT):** Dauer eines Takts → bestimmt durch Hardware\
- **CPU-Zeit Formel:**\
CPU-Zeit=IC×CPI×CTCPU\text{-Zeit} = IC \times CPI \times CT
---
### 🔁 Ablauf der Instruktionsausführung
1. **Fetch:** Befehl aus Speicher laden (PC → Instruction Memory)
2. **Decode:** Register lesen, Operanden bestimmen
3. **Execute:** ALU berechnet Ergebnis oder Adresse
4. **Memory Access:** Speicherzugriff bei Load/Store
5. **Write Back:** Ergebnis ins Register zurückschreiben
6. **PC Update:** PC + 4 oder Sprungadresse
1. **Fetch:** Befehl aus Speicher laden (PC → Instruction Memory)\
2. **Decode:** Register lesen, Operanden bestimmen\
3. **Execute:** ALU berechnet Ergebnis oder Adresse\
4. **Memory Access:** Speicherzugriff bei Load/Store\
5. **Write Back:** Ergebnis ins Register zurückschreiben\
6. **PC Update:** PC + 4 oder Sprungadresse\
---
@@ -35,10 +25,8 @@
#### 📦 Register
- 32 Register: z.B. `$s0-$s7`, `$t0-$t9`, `$zero` (immer 0), `$sp`, `$ra`
- Daten müssen in Register geladen werden, bevor ALU-Operationen möglich sind.
- 32 Register: z.B. `$s0-$s7`, `$t0-$t9`, `$zero` (immer 0), `$sp`, `$ra`\
- Daten müssen in Register geladen werden, bevor ALU-Operationen möglich sind.\
#### 🛠️ Befehle (Beispiele)
@@ -56,47 +44,33 @@
#### 🛠️ Bausteine
- **Register:** Speicherung von Zwischenwerten
- **ALU (Arithmetic Logic Unit):** führt Berechnungen durch
- **Multiplexer (MUX):** entscheidet zwischen Eingangsquellen
- **Memory:** Instruktions- & Datenspeicher
- **Control Unit:** steuert Datenfluss und Operationen
- **Register:** Speicherung von Zwischenwerten\
- **ALU (Arithmetic Logic Unit):** führt Berechnungen durch\
- **Multiplexer (MUX):** entscheidet zwischen Eingangsquellen\
- **Memory:** Instruktions- & Datenspeicher\
- **Control Unit:** steuert Datenfluss und Operationen\
#### 📐 Schrittweise Entwicklung
- **R-Typ Befehle:** nur Registeroperationen
- **Load/Store:** ALU berechnet Adresse, Speicherzugriff
- **Branch:** ALU-Vergleich → PC-Update bei Bedingung
- **R-Typ Befehle:** nur Registeroperationen\
- **Load/Store:** ALU berechnet Adresse, Speicherzugriff\
- **Branch:** ALU-Vergleich → PC-Update bei Bedingung\
---
### 🔄 Taktgesteuerte Logik
- **Kombinatorische Elemente:** berechnen Ausgaben ohne Zustände
- **Sequenzielle Elemente (Register):** speichern Zustände, aktualisieren mit **Taktflanke**
- **Clocking Methodology:** Längste Verzögerung bestimmt Taktperiode.
- **Kombinatorische Elemente:** berechnen Ausgaben ohne Zustände\
- **Sequenzielle Elemente (Register):** speichern Zustände, aktualisieren mit **Taktflanke**\
- **Clocking Methodology:** Längste Verzögerung bestimmt Taktperiode.\
---
### 🔥 Besonderheiten MIPS
- **Load/Store Architektur:** Nur Load/Store greifen auf Speicher zu; alle anderen Befehle arbeiten mit Registern.
- **Einheitliche Befehlslänge (32 Bit):** vereinfacht Dekodierung.
- **Pipelining-Fähigkeit:** parallele Bearbeitung mehrerer Instruktionen möglich (kommt in Teil 2).
- **Load/Store Architektur:** Nur Load/Store greifen auf Speicher zu; alle anderen Befehle arbeiten mit Registern.\
- **Einheitliche Befehlslänge (32 Bit):** vereinfacht Dekodierung.\
- **Pipelining-Fähigkeit:** parallele Bearbeitung mehrerer Instruktionen möglich (kommt in Teil 2).\
---

View File

@@ -3,90 +3,58 @@
### 🔌 Schaltnetze (Combinatorial Logic)
- **Merkmale:**
- Keine Schleifen
- Keine Rückkopplung
- Keine Zustände (stateless)
- Gleiche Eingabe → gleiche Ausgabe
- Benötigt Zeit zur Ausgabeerzeugung (aber keinen Takt)
- **Praxisbezug:** Einfache Logik wie Addierer, Multiplexer, Decoder sind Schaltnetze.
---
### 🔁 Endliche Automaten (Finite State Machines, FSM)
- **Merkmale:**
- Schleifen und Rückkopplungen möglich
- Zustände vorhanden (stateful)
- Gleiche Eingabe kann unterschiedliche Ausgaben erzeugen abhängig vom aktuellen Zustand
- Braucht Zeit zur Ausgabeerzeugung
- **Meist getaktet**, um Design und Analyse zu vereinfachen
- **Praxisbezug:** Steuerwerke in Prozessoren sind typischerweise FSMs.
---
### 🕒 Vom Schaltnetz zum Endlichen Automaten
- Erweiterung von Schaltnetzen durch:
1. **Flip-Flops** → Speichern von Zuständen
2. **Getaktete Flip-Flops** → Synchronisation der Zustandsänderung
3. **Flankengesteuerte Flip-Flops** → Reagieren nur auf steigende oder fallende Taktflanken
- Ergebnis: **Deterministischer Endlicher Automat (DEA)** mit Taktsteuerung.
---
### 🔄 Struktur eines DEAs
- **Bestandteile:**
- Zustandspeicher (z.B. Flip-Flops)
- Kombinatorische Logik
- Takt
- **Ablauf:**
- Kombinatorische Logik berechnet den nächsten Zustand aus aktuellem Zustand + Eingabe
- Zustandspeicher aktualisiert sich bei Taktflanke
- Ausgabe wird aus Zustand/Eingabe erzeugt
---
### ⏱️ Zeitliche Aspekte
- Jeder Schritt im Automaten braucht Zeit für:
- Propagation durch die Logik
- Synchronisation mit dem Takt
- **Ohne Takt:** Asynchrone Schaltungen
- **Mit Takt:** Syntaktische FSM → bevorzugt in modernen Prozessoren
---
### 📝 Für die Klausur merken
@@ -96,14 +64,3 @@
✅ DEA Aufbau: Zustandspeicher + Kombinatorische Logik + Takt
✅ Flankengesteuerte Flip-Flops: warum wichtig?
✅ Warum getaktete Automaten Analyse und Design erleichtern
---
### 📦 Lernpaket (bisher)
- **V1 Einführung** → Überblick, Historie, Abstraktionsebenen
- **V2 Architekturen** → ISA-Arten, RISC vs. CISC, Moores Law
- **V3a Schaltnetze & Automaten** → Logikstrukturen & FSM

View File

@@ -5,36 +5,21 @@
### **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**
@@ -48,107 +33,72 @@
|Beispiele|ARM, MIPS|x86 (Intel, AMD)|
- **Befehlssatztypen**:
- Stack, Akkumulator, Register-Memory, Load/Store
- **Moores 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**
@@ -164,52 +114,34 @@
### **🔟 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`
@@ -220,25 +152,16 @@
### **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!