Merge remote-tracking branch 'origin/main'

This commit is contained in:
fzzinchemical
2025-10-29 10:27:17 +01:00
22 changed files with 474 additions and 494 deletions

View File

@@ -3,8 +3,8 @@
"search": "", "search": "",
"showTags": true, "showTags": true,
"showAttachments": false, "showAttachments": false,
"hideUnresolved": true, "hideUnresolved": false,
"showOrphans": false, "showOrphans": true,
"collapse-color-groups": false, "collapse-color-groups": false,
"colorGroups": [ "colorGroups": [
{ {
@@ -25,6 +25,6 @@
"repelStrength": 10, "repelStrength": 10,
"linkStrength": 1, "linkStrength": 1,
"linkDistance": 250, "linkDistance": 250,
"scale": 0.6283893116394689, "scale": 0.9425839674592027,
"close": true "close": true
} }

View File

@@ -184,8 +184,22 @@
}, },
"active": "d561030619edca73", "active": "d561030619edca73",
"lastOpenFiles": [ "lastOpenFiles": [
"Semester 7/REDIG/Vorlesung 2.md", "conflict-files-obsidian-git.md",
"Semester 7/REDIG/Vorlesung 3.md", "Semester 7/REDIG/Vorlesung 3.md",
"Semester 6/SWTEST/Klausurrelevantes Milan.md",
"Semester 6/List of Shame.md",
"Semester 6/COMARCH/Zusammenfassung/Pasted image 20250708193937.png",
"Semester 6/COMARCH/Zusammenfassung/Pasted image 20250708193917.png",
"Semester 6/COMARCH/Zusammenfassung/Pasted image 20250708185932.png",
"Semester 6/COMARCH/Zusammenfassung/Pasted image 20250708185618.png",
"Semester 6/COMARCH/Zusammenfassung/Pasted image 20250708185152.png",
"Semester 6/COMARCH/Zusammenfassung/Pasted image 20250708185128.png",
"Semester 6/COMARCH/Zusammenfassung/Fragenkatalog.md",
"Semester 6/COMARCH/Pasted image 20250709205101.png",
"Semester 6/COMARCH/Pasted image 20250709205049.png",
"Semester 6/COMARCH/Klausurvorbereitungs Spreadsheed.md",
"Semester 6/COMARCH/Beispiele Klausurfragen.md",
"Semester 7/REDIG/Vorlesung 2.md",
"Semester 7/Robocup/Features.md", "Semester 7/Robocup/Features.md",
"Semester 7/INKOM/Vorlesung 2.md", "Semester 7/INKOM/Vorlesung 2.md",
"Semester 7/Robocup", "Semester 7/Robocup",
@@ -211,12 +225,6 @@
"Semester 6/COMARCH/Zusammenfassung/Vorlesung 9.md", "Semester 6/COMARCH/Zusammenfassung/Vorlesung 9.md",
"Semester 6/COMARCH/Zusammenfassung/Vorlesung 10.md", "Semester 6/COMARCH/Zusammenfassung/Vorlesung 10.md",
"Semester 6/COMARCH/Zusammenfassung/Vorlesung 8a.md", "Semester 6/COMARCH/Zusammenfassung/Vorlesung 8a.md",
"Semester 6/COMARCH/Zusammenfassung/Vorlesung 7.md",
"Semester 6/COMARCH/Zusammenfassung/Vorlesung 6.md",
"Semester 6/SWTEST/Zusammenfassungen/CTFL-Kapitel 4-2.md",
"Semester 6/SWTEST/Letzte Vorlesung.md",
"Semester 6/SWTEST/Zusammenfassungen/CTFL-Kapitel 0.md",
"Semester 4/MICONT/Probeklausur 2025.md",
"Semester 6/SWTEST/Zusammenfassungen", "Semester 6/SWTEST/Zusammenfassungen",
"Dayplanner", "Dayplanner",
"Semester 6/COMARCH/Zusammenfassung", "Semester 6/COMARCH/Zusammenfassung",

View File

@@ -0,0 +1,4 @@
# Was ist das Amdahlsche Gesetz
Das Amdahlsche Gesetz bezieht sich auf die maximale Prozessbeschleunigung, die man anhand X Prozessoren im Multi-Threading erreichen kann.
$µs = \frac{1}{1-p+\frac{p}{s}}$

View File

@@ -0,0 +1,8 @@
# Hazards
## DATA Hazard
![[Pasted image 20250709205101.png]]
Durch 'optimierungen' (verlagern des 2. LOAD WORD lw Befehls) wird Stalling verhindert und man spart sich 2 Takte. --> 11 Takte
## CONTROL Hazard
## STRUCT Hazard
Es dürfen Fetch und Memory nicht gleichzeitig geschehen, Fetch müsste anhand eines NOPs delayed werden.

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

View File

@@ -0,0 +1,14 @@
# Übung 1
- Beim von-Neumann-Rechner lassen sich Programme im Speicher genauso ändern wie Daten. Wo könnte das sinnvoll sein?
- Beim der Rechner der Harvard-Rechner sind Programme und Daten strikt getrennt. Wo könnte das sinnvoll sein?
- Welche Gatter kennen Sie?
- Welche Darstellungen (graphisch) von Gattern kennen Sie?
- Wie viele unterschiedliche Gatter gibt es, sind möglich?
- Was für Komponenten kennen Sie eine Abstraktionsebene über den Gattern?
- Noch eine Ebene höher?
- Beim der Rechner der Harvard-Rechner sind Programme und Daten strikt getrennt. Wo könnte das sinnvoll sein?
- Was beschreibt das Mooresche Gesetz?
- Auf einem Datenpfad benötigt das Laden der Eingaberegister 5 ns, die ALU-Verarbeitung 10 ns und das Rückspeichern 5 ns. Wie viel MIPS hat dieser Rechner?
$\frac{1}{20^{-9}s} = 0.05 * 10^9 = 50 \text{ MIPS}$

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

View File

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

View File

@@ -3,90 +3,61 @@
### 🔄 Wiederholung Computergenerationen ### 🔄 Wiederholung Computergenerationen
- **0. Generation (bis 1945):** Mechanische Rechenmaschinen (Pascal, Leibniz, Babbage, Zuse) - **0. Generation (bis 1945):** Mechanische Rechenmaschinen (Pascal, Leibniz, Babbage, Zuse)
- **1. Generation (19451955):** Relais & Vakuumröhren ENIAC, COLOSSUS, MANIAC - **1. Generation (19451955):** Relais & Vakuumröhren ENIAC, COLOSSUS, MANIAC
- **2. Generation (19551965):** Transistoren Minicomputer (PDP), Supercomputer (CDC 6600) - **2. Generation (19551965):** Transistoren Minicomputer (PDP), Supercomputer (CDC 6600)
- **3. Generation (19651980):** Integrierte Schaltungen IBM System/360, PDP-11 - **3. Generation (19651980):** Integrierte Schaltungen IBM System/360, PDP-11
- **4. Generation (ab 1980):** VLSI PCs, x86-Architektur - **4. Generation (ab 1980):** VLSI PCs, x86-Architektur
- **5. Generation (heute):** Smartphones, Cloud, Embedded Systems - **5. Generation (heute):** Smartphones, Cloud, Embedded Systems
--- ---
### 🚀 Moores Law (Moorsches Gesetz) ### 🚀 Moores Law (Moorsches Gesetz)
- **Kerngedanke:** Verdopplung der Anzahl Transistoren pro IC alle 1224 Monate. - **Kerngedanke:** Verdopplung der Anzahl Transistoren pro IC alle 1224 Monate.
- Auswirkungen: - Auswirkungen:
- Kleinere Strukturen → geringere Kosten - Kleinere Strukturen → geringere Kosten
- Mehr Komponenten → höhere Leistung - Mehr Komponenten → höhere Leistung
- > Resultierend: Geringerer Stromverbrauch
- Geringerer Stromverbrauch
- Aber: Miniaturisierung wird zunehmend teurer und schwieriger. - Aber: Miniaturisierung wird zunehmend teurer und schwieriger.
--- ---
### 📊 Leistungsmessung von Computern ### 📊 Leistungsmessung von Computern
- **System-Benchmarks:** Cinebench, 3DMark, HPC Challenge - **System-Benchmarks:** Cinebench, 3DMark, HPC Challenge
- **Kenngrößen:**
- **Kennzahlen:** - Instruktionen/Sekunde (IPS), FLOPS (Floating point operations/second)
- Instruktionen/Sekunde (IPS), FLOPS
- Taktzyklen pro Instruktion (CPI), Instruktionen pro Takt (IPC) - Taktzyklen pro Instruktion (CPI), Instruktionen pro Takt (IPC)
- Speicherzugriffszeit, Durchsatz - Speicherzugriffszeit, Durchsatz
- Netzwerk- & Grafikleistung (FPS, TPS) - Netzwerk- & Grafikleistung (FPS, TPS)
- Kritik an MIPS: „Misleading Information to Promote Sales“ nicht immer aussagekräftig. (MIPS => Million instructions per second)
- Kritik an MIPS: „Misleading Information to Promote Sales“ nicht immer aussagekräftig.
--- ---
### 🤖 Computer als endlicher Automat (Finite State Machine) ### 🤖 Computer als endlicher Automat (Finite State Machine)
- **Zustände:** durch Bitmuster repräsentiert - **Zustände:** durch Bitmuster repräsentiert
- **Operation:** Boolesche Funktion auf Teilzuständen - **Operation:** Boolesche Funktion auf Teilzuständen
- Vergleichbare Modelle: - Vergleichbare Modelle:
- Schaltnetz: keine Schleifen, keine Rückkopplung)
- Schaltnetz (ohne Schleifen) - Endlicher Automat (Deterministisch und Nichtdeterministisch)
- Kellerautomat (unendlich, aber Zugriff nur auf oberstes Element)(Hardwarelimitierungen?)
- Endlicher Automat (deterministisch/nichtdeterministisch) - Turing-Maschine (endliche Zustände des Automaten, unendliches Band zum Lesen und Schreiben)
![[Pasted image 20250708185128.png]]
- Kellerautomat (mit Stack) ![[Pasted image 20250708185152.png]]
![[Pasted image 20250708185618.png]]
- Turingmaschine (unendliches Band)
--- ---
### 🚌 Speicheranbindung & Endianness ### 🚌 Speicheranbindung & Endianness
- Speicheradressierung: - Speicheradressierung:
- **big-endian:** höchstwertiges Byte an kleinster Adresse - **big-endian:** höchstwertiges Byte an kleinster Adresse
- **little-endian:** niedrigstwertiges Byte zuerst - **little-endian:** niedrigstwertiges Byte zuerst
- Bus-System: - Bus-System:
- Bus-Takt meist langsamer als CPU-Takt - Bus-Takt meist langsamer als CPU-Takt
- Cache als schneller Zwischenspeicher - Cache als schneller Zwischenspeicher
--- ---
### ⚙️ Aufbau von Computersystemen ### ⚙️ Aufbau von Computersystemen
@@ -94,85 +65,97 @@
#### Rechenwerk (ALU) #### Rechenwerk (ALU)
- Operationen: +, , *, /, logische Operationen - Operationen: +, , *, /, logische Operationen
- Moderne CPUs: mehrere Register → direkte Register-Register-Operationen - Moderne CPUs: mehrere Register → direkte Register-Register-Operationen
- Ältere CPUs: Akkumulator-Register für ALU-Operationen - Ältere CPUs: Akkumulator-Register für ALU-Operationen
![[Pasted image 20250708185932.png]]****
#### Steuerwerk #### Steuerwerk
- Verantwortlich für: - Verantwortlich für:
- Ausführung der Befehle - Ausführung der Befehle
- Datenflusskontrolle - Datenflusskontrolle
- Ausnahmebehandlung & Interrupts - Ausnahmebehandlung & Interrupts
#### Register
- Program Counter PC
- Befehlsregister (Instruction Registers IR)
- **optional**: Stackpointer SP
- **Statusregister**: Zustandsregister, Flags usw.
- Einfache CPUs haben einen speziellen Akkumulator-Register (Accu)
- Aus diesem wird ein Wert gelesen
- Ergebnis einer Operation wird hier gelagert
- Moderne CPUs können nicht direkt Daten aus dem Hauptspeicher in das Rechenwerk lesen (Sicherheit oder warum?)
#### Bottleneck Datentransfer
| Speichertyp | Geschwindigkeit |
| -------------------- | -------------------- |
| CPU Register | < Nanosekunde |
| CPU Cache | ~wenige Nanosekunden |
| Arbeitsspeicher | 60-70 Nanosekunden |
| Sekundärspeicher SSD | 0,4 ms |
| Sekundärspeicher HDD | 8-10 ms |
--- ---
### 🧵 Befehlssatzarchitekturen (ISA) ### 🧵 Befehlssatzarchitekturen (ISA)
**Befehle bestimmen die Architektur und umgekehrt**
#### 1⃣ Stack-Architektur #### 1⃣ Stack-Architektur
- Operanden und Ergebnisse liegen auf Stack. - Operanden und Ergebnisse liegen auf Stack.
- Benötigt Stack Pointer **SP Register**
- Vorteile: kompakter Code, minimaler Prozessorzustand - Ergebnis wird final auf den Stack gelegt
- Vorteile: kompakter Code, minimaler Prozessorzustand, sog. Null-Address Machine
- Nachteil: viele Speicherzugriffe - Nachteil: viele Speicherzugriffe
- Heute: nur noch in virtuellen Maschinen (JVM, p-Machine) - Heute: nur noch in virtuellen Maschinen (JVM, p-Machine)
#### 2⃣ Akkumulator-Architektur #### 2⃣ Akkumulator-Architektur
- Ein Register (Akkumulator) für Operanden & Ergebnis - Ein Register (Akkumulator) für Operanden & Ergebnis
- Speicherzugriff für zweiten Operand nötig - Speicherzugriff für zweiten Operand nötig
- Kompakt, aber teuer durch Speicherzugriffe - Kompakt, aber teuer durch Speicherzugriffe
- **Ein-Adress-Maschine**
#### 3⃣ Register-Memory-Architektur #### 3⃣ Register-Memory-Architektur
- Mehrere Register, 2. Operand aus Speicher - Mehrere Register, 2. Operand aus Speicher
- Zwei-Adress-Befehle - Zwei-Adress-Befehle
- Vorteil: direkt mit Speicher arbeiten - Vorteil: direkt mit Speicher arbeiten
- Nachteil: Speicherzugriffe kosten Zeit - Nachteil: Speicherzugriffe kosten Zeit
#### 4⃣ Register-Register (Load/Store)-Architektur #### 4⃣ Register-Register (Load/Store)-Architektur
- Arithmetik nur auf Registern - Arithmetik nur auf Registern
- Speicherzugriff explizit mit Load/Store - Speicherzugriff explizit mit Load/Store
- Drei-Adress-Befehle - Drei-Adress-Befehle
- Vorteil: keine unnötigen Speicherzugriffe - Vorteil: keine unnötigen Speicherzugriffe
- Nachteil: mehr Befehle nötig → größerer Code - Nachteil: mehr Befehle nötig → größerer Code
- Typisch für **RISC-Architekturen** - Typisch für **RISC-Architekturen**
--- ---
### 🔥 RISC vs CISC ### 🔥 RISC vs CISC
|**Merkmal**|**RISC**|**CISC**| | **Merkmal** | **RISC** | **CISC** |
|---|---|---| | --------------- | ----------------------------------- | ------------------------------- |
|**Befehlssatz**|Einfach, einheitlich, kurze Befehle|Komplex, unterschiedliche Länge| | **Befehlssatz** | Einfach, einheitlich, kurze Befehle | Komplex, unterschiedliche Länge |
|**Hardware**|Einfach, energieeffizient|Komplex oder Mikroprogramme| | **Hardware** | Einfach, energieeffizient | Komplex oder Mikroprogramme |
|**Codegröße**|Größer|Kompakter| | **Codegröße** | Größer | Kompakter |
|**Beispiele**|ARM, MIPS, SPARC, PowerPC|x86 (Intel, AMD), Zilog Z80| | **Beispiele** | ARM, MIPS, SPARC, PowerPC | x86 (Intel, AMD), Zilog Z80 |
|**Vorteile**|Schneller bei genügend Registern|Speichereffizient| | **Vorteile** | Schneller bei genügend Registern | Speichereffizient |
|**Nachteile**|Mehr Programmspeicher nötig|Langsame komplexe Befehle| | **Nachteile** | Mehr Programmspeicher nötig | Langsame komplexe Befehle |
Unterschied zwischen CISC und RISC CPUs Gibt es Mischformen?
| ==Merkmal== | ==CISC (Complex Instruction Set Computer)== | ==RISC (Reduced Instruction Set Computer)== |
| :--------------- | :------------------------------------------ | :------------------------------------------ |
| Befehlssatz | Viele, komplexe Befehle | Wenige, einfache Befehle |
| Hardwareaufbau | Komplexe Steuerlogik oder Mikroprogramme | Einfache, schnelle Hardware |
| Befehlslänge | Unterschiedlich lang (z.B. 115 Byte) | Gleich lang (z.B. 4 Byte) |
| Operationen | Direkt mit Speicher möglich | Nur mit Registern (Load/Store-Prinzip) |
| Speicherbedarf | Geringer, da kompakter Code | Höher, da mehr Befehle nötig |
| Energieeffizienz | Weniger effizient | Höher, da keine ungenutzten Logikblöcke |
| Fokus | Effizienz bei Assembler-Programmierung | Optimierung für Compiler und Pipeline |
--- ---

View File

@@ -2,32 +2,22 @@
### 🧠 Einführung: CPU-Leistungsfaktoren ### 🧠 Einführung: CPU-Leistungsfaktoren
- **Instruction Count (IC):** Anzahl der Befehle → bestimmt durch ISA & Compiler - **Instruction Count (IC):** Anzahl der Befehle → bestimmt durch ISA & Compiler\
- **Cycles Per Instruction (CPI):** Anzahl der Takte pro Befehl → bestimmt durch Hardware\
- **Cycles Per Instruction (CPI):** Anzahl der Takte pro Befehl → bestimmt durch Hardware - **Cycle Time (CT):** Dauer eines Takts → bestimmt durch Hardware\
- **CPU-Zeit Formel:**\
- **Cycle Time (CT):** Dauer eines Takts → bestimmt durch Hardware
- **CPU-Zeit Formel:**
CPU-Zeit=IC×CPI×CTCPU\text{-Zeit} = IC \times CPI \times CT CPU-Zeit=IC×CPI×CTCPU\text{-Zeit} = IC \times CPI \times CT
--- ---
### 🔁 Ablauf der Instruktionsausführung ### 🔁 Ablauf der Instruktionsausführung
1. **Fetch:** Befehl aus Speicher laden (PC → Instruction Memory) 1. **Fetch:** Befehl aus Speicher laden (PC → Instruction Memory)\
2. **Decode:** Register lesen, Operanden bestimmen\
2. **Decode:** Register lesen, Operanden bestimmen 3. **Execute:** ALU berechnet Ergebnis oder Adresse\
4. **Memory Access:** Speicherzugriff bei Load/Store\
3. **Execute:** ALU berechnet Ergebnis oder Adresse 5. **Write Back:** Ergebnis ins Register zurückschreiben\
6. **PC Update:** PC + 4 oder Sprungadresse\
4. **Memory Access:** Speicherzugriff bei Load/Store
5. **Write Back:** Ergebnis ins Register zurückschreiben
6. **PC Update:** PC + 4 oder Sprungadresse
--- ---
@@ -35,68 +25,45 @@
#### 📦 Register #### 📦 Register
- 32 Register: z.B. `$s0-$s7`, `$t0-$t9`, `$zero` (immer 0), `$sp`, `$ra` - 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.\
- Daten müssen in Register geladen werden, bevor ALU-Operationen möglich sind.
#### 🛠️ Befehle (Beispiele)
|**Kategorie**|**Befehl**|**Beispiel**|**Bedeutung**|
|---|---|---|---|
|Arithmetisch|`add`|`add $s1,$s2,$s3`|`$s1 = $s2 + $s3`|
|Datentransfer|`lw`, `sw`|`lw $s1,20($s2)`|`$s1 = Memory[$s2+20]`|
|Logisch|`and`, `or`|`and $s1,$s2,$s3`|`$s1 = $s2 & $s3`|
|Bedingte Verzweigung|`beq`, `bne`|`beq $s1,$s2,Label`|Sprung, falls `$s1 == $s2`|
|Unbedingter Sprung|`j`, `jal`|`j Label`|Sprung zu Adresse `Label`|
#### 🛠️ Befehle
![[Pasted image 20250708193917.png]]
![[Pasted image 20250708193937.png]]
--- ---
### 🧮 Aufbau der CPU: Datenpfad (Datapath) ### 🧮 Aufbau der CPU: Datenpfad (Datapath)
#### 🛠️ Bausteine #### 🛠️ Bausteine
- **Register:** Speicherung von Zwischenwerten - **Register:** Speicherung von Zwischenwerten\
- **ALU (Arithmetic Logic Unit):** führt Berechnungen durch\
- **ALU (Arithmetic Logic Unit):** führt Berechnungen durch - **Multiplexer (MUX):** entscheidet zwischen Eingangsquellen\
- **Memory:** Instruktions- & Datenspeicher\
- **Multiplexer (MUX):** entscheidet zwischen Eingangsquellen - **Control Unit:** steuert Datenfluss und Operationen\
- **Memory:** Instruktions- & Datenspeicher
- **Control Unit:** steuert Datenfluss und Operationen
#### 📐 Schrittweise Entwicklung #### 📐 Schrittweise Entwicklung
- **R-Typ Befehle:** nur Registeroperationen - **R-Typ Befehle:** nur Registeroperationen\
- **Load/Store:** ALU berechnet Adresse, Speicherzugriff\
- **Load/Store:** ALU berechnet Adresse, Speicherzugriff - **Branch:** ALU-Vergleich → PC-Update bei Bedingung\
- **Branch:** ALU-Vergleich → PC-Update bei Bedingung
--- ---
### 🔄 Taktgesteuerte Logik ### 🔄 Taktgesteuerte Logik
- **Kombinatorische Elemente:** berechnen Ausgaben ohne Zustände - **Kombinatorische Elemente:** berechnen Ausgaben ohne Zustände\
- **Sequenzielle Elemente (Register):** speichern Zustände, aktualisieren mit **Taktflanke**\
- **Sequenzielle Elemente (Register):** speichern Zustände, aktualisieren mit **Taktflanke** - **Clocking Methodology:** Längste Verzögerung bestimmt Taktperiode.\
- **Clocking Methodology:** Längste Verzögerung bestimmt Taktperiode.
--- ---
### 🔥 Besonderheiten MIPS ### 🔥 Besonderheiten MIPS
- **Load/Store Architektur:** Nur Load/Store greifen auf Speicher zu; alle anderen Befehle arbeiten mit Registern. - **Load/Store Architektur:** Nur Load/Store greifen auf Speicher zu; alle anderen Befehle arbeiten mit Registern.\
- **Einheitliche Befehlslänge (32 Bit):** vereinfacht Dekodierung.\
- **Einheitliche Befehlslänge (32 Bit):** vereinfacht Dekodierung. - **Pipelining-Fähigkeit:** parallele Bearbeitung mehrerer Instruktionen möglich (kommt in Teil 2).\
- **Pipelining-Fähigkeit:** parallele Bearbeitung mehrerer Instruktionen möglich (kommt in Teil 2).
--- ---

View File

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

@@ -3,51 +3,36 @@
### 🔁 Wiederholung aus Teil 1 ### 🔁 Wiederholung aus Teil 1
- **Instruktionstypen (MIPS):** - **Instruktionstypen (MIPS):**
- **R-Format:** arithmetische/logische Operationen (z.B. `add $s1,$s2,$s3`) - **R-Format:** arithmetische/logische Operationen (z.B. `add $s1,$s2,$s3`)
- **Load/Store:** Speicherzugriff (z.B. `lw`, `sw`) - **Load/Store:** Speicherzugriff (z.B. `lw`, `sw`)
- **Branch:** bedingte Sprünge (`beq`, `bne`) - **Branch:** bedingte Sprünge (`beq`, `bne`)
- **Datenpfad (Full Datapath):** - **Datenpfad (Full Datapath):**
- Register → ALU → Speicher → Register - Register → ALU → Speicher → Register
- Separate Instruktions- und Datenspeicher nötig, da ein Zugriff pro Zyklus - Separate Instruktions- und Datenspeicher nötig, da ein Zugriff pro Zyklus
--- ---
### ⚙️ Steuerungseinheit (Control Unit) ### ⚙️ Steuerungseinheit (Control Unit)
- **Erzeugt Steuersignale aus dem Opcode:** - **Erzeugt Steuersignale aus dem Opcode:**
- **MemtoReg:** bestimmt Datenquelle für Register-Schreiben - **MemtoReg:** bestimmt Datenquelle für Register-Schreiben
- **ALUSrc:** wählt ALU-Operand (Register vs. unmittelbarer Wert) - **ALUSrc:** wählt ALU-Operand (Register vs. unmittelbarer Wert)
- **RegWrite:** aktiviert Schreibzugriff auf Register - **RegWrite:** aktiviert Schreibzugriff auf Register
- **MemRead/MemWrite:** steuern Speicherzugriffe - **MemRead/MemWrite:** steuern Speicherzugriffe
- **Branch:** aktiviert bei bedingten Sprüngen - **Branch:** aktiviert bei bedingten Sprüngen
- **ALU Control:** - **ALU Control:**
- Basierend auf Opcode und Funct-Feld - Basierend auf Opcode und Funct-Feld
- Beispiel Mapping: - Beispiel Mapping:
|ALUOp|Funct|ALU-Funktion| | ALUOp | Funct | ALU-Funktion |
|---|---|---| | ----- | ------ | ------------ |
|00|XXXXXX|`add`| | 00 | XXXXXX | `add` |
|01|XXXXXX|`sub`| | 01 | XXXXXX | `sub` |
|10|100000|`add`| | 10 | 100000 | `add` |
|10|100010|`sub`| | 10 | 100010 | `sub` |
|10|100100|`and`| | 10 | 100100 | `and` |
|10|100101|`or`| | 10 | 100101 | `or` |
|10|101010|`slt`| | 10 | 101010 | `slt` |
--- ---
@@ -55,39 +40,25 @@
### 📦 Erweiterter Datenpfad ### 📦 Erweiterter Datenpfad
- Unterstützung für: - Unterstützung für:
- **Jumps (`j`, `jal`):** - **Jumps (`j`, `jal`):**
- PC-Update mit 26-Bit Zieladresse + oberen 4 Bit des alten PCs - PC-Update mit 26-Bit Zieladresse + oberen 4 Bit des alten PCs
- Steuerleitung „Jump“ wird aus Opcode dekodiert - Steuerleitung „Jump“ wird aus Opcode dekodiert
- **Branches (`beq`, `bne`):** - **Branches (`beq`, `bne`):**
- Zieladresse berechnen (PC+4 + Offset << 2) - Zieladresse berechnen (PC+4 + Offset << 2)
- ALU prüft, ob Bedingung erfüllt (Zero-Flag) - ALU prüft, ob Bedingung erfüllt (Zero-Flag)
--- ---
### 🚨 Performance-Betrachtung ### 🚨 Performance-Betrachtung
- **Ein-Zyklus-Datenpfad Problem:** - **Ein-Zyklus-Datenpfad Problem:**
- Längster Pfad (Critical Path) bestimmt Taktfrequenz - Längster Pfad (Critical Path) bestimmt Taktfrequenz
- Beispiel: Load-Befehl → Instruktionsspeicher → Registerfile → ALU → Datenspeicher → Registerfile - Beispiel: Load-Befehl → Instruktionsspeicher → Registerfile → ALU → Datenspeicher → Registerfile
- Unterschiedliche Instruktionen hätten unterschiedliche Latenzen → nicht praktikabel - Unterschiedliche Instruktionen hätten unterschiedliche Latenzen → nicht praktikabel
- **Lösung:** **Pipelining** - **Lösung:** **Pipelining**
- Aufteilung des Datenpfads in Stufen - Aufteilung des Datenpfads in Stufen
- Überlappende Bearbeitung mehrerer Instruktionen - Überlappende Bearbeitung mehrerer Instruktionen
--- ---
### 📝 Für die Klausur merken ### 📝 Für die Klausur merken

View File

@@ -3,14 +3,10 @@
### 🚀 Was ist Pipelining? ### 🚀 Was ist Pipelining?
- **Prinzip:** Überlappende Ausführung mehrerer Instruktionen - **Prinzip:** Überlappende Ausführung mehrerer Instruktionen
- **Analogie:** Waschstraße mehrere Autos gleichzeitig in unterschiedlichen Phasen - **Analogie:** Waschstraße mehrere Autos gleichzeitig in unterschiedlichen Phasen
- **Ziel:** Erhöhung des Durchsatzes (mehr Befehle pro Zeiteinheit) - **Ziel:** Erhöhung des Durchsatzes (mehr Befehle pro Zeiteinheit)
- **Wichtig:** Latenz einzelner Instruktionen bleibt gleich - **Wichtig:** Latenz einzelner Instruktionen bleibt gleich
--- ---
### 🔁 MIPS-Pipeline (5 Stufen) ### 🔁 MIPS-Pipeline (5 Stufen)
@@ -28,14 +24,10 @@
### 📈 Performance-Vorteile ### 📈 Performance-Vorteile
- **Single-Cycle Datapath:** 800 ps pro Befehl - **Single-Cycle Datapath:** 800 ps pro Befehl
- **Pipelined Datapath:** 200 ps pro Befehl - **Pipelined Datapath:** 200 ps pro Befehl
- **Theoretisches Speedup:** Anzahl Stufen = 5x schneller - **Theoretisches Speedup:** Anzahl Stufen = 5x schneller
- **Realität:** Speedup < 5 wegen Hazard-Stalls und unbalancierter Stufen - **Realität:** Speedup < 5 wegen Hazard-Stalls und unbalancierter Stufen
--- ---
### ⚠️ Hazards (Gefahren) ### ⚠️ Hazards (Gefahren)
@@ -43,58 +35,40 @@
#### 🏗 Struktur-Hazards #### 🏗 Struktur-Hazards
- Konflikt um Ressource (z.B. Instruktions- und Datenspeicher gleichzeitig benötigt) - Konflikt um Ressource (z.B. Instruktions- und Datenspeicher gleichzeitig benötigt)
- **Lösung:** Getrennte Instruktions-/Datenspeicher oder Caches - **Lösung:** Getrennte Instruktions-/Datenspeicher oder Caches
#### 📦 Daten-Hazards #### 📦 Daten-Hazards
- Instruktion benötigt Ergebnis der vorherigen Instruktion - Instruktion benötigt Ergebnis der vorherigen Instruktion
- Beispiel: - Beispiel:
```asm ```asm
add $s0, $t0, $t1 add $s0, $t0, $t1
sub $t2, $s0, $t3 sub $t2, $s0, $t3
``` ```
- **Lösungen:** - **Lösungen:**
- **Forwarding (Bypassing):** Ergebnis direkt weiterleiten - **Forwarding (Bypassing):** Ergebnis direkt weiterleiten
- **Stalls:** Pipeline anhalten - **Stalls:** Pipeline anhalten
- **Code Scheduling:** Befehle umsortieren, um Abhängigkeiten zu vermeiden - **Code Scheduling:** Befehle umsortieren, um Abhängigkeiten zu vermeiden
#### 🔁 Kontroll-Hazards #### 🔁 Kontroll-Hazards
- Sprünge (`beq`, `bne`) → Ziel erst spät bekannt - Sprünge (`beq`, `bne`) → Ziel erst spät bekannt
- **Lösungen:** - **Lösungen:**
- Warten bis Branch-Entscheidung (Stalls) - Warten bis Branch-Entscheidung (Stalls)
- **Branch Prediction:** - **Branch Prediction:**
- **Static:** Vorwärts nicht nehmen, Rückwärts nehmen - **Static:** Vorwärts nicht nehmen, Rückwärts nehmen
- **Dynamic:** Verlauf der Branches aufzeichnen und vorhersagen - **Dynamic:** Verlauf der Branches aufzeichnen und vorhersagen
--- ---
### 📦 Optimierungen ### 📦 Optimierungen
- **Forwarding:** Verhindert unnötige Stalls - **Forwarding:** Verhindert unnötige Stalls
- **Branch Prediction:** Reduziert Control Hazards - **Branch Prediction:** Reduziert Control Hazards
- **Separate Speicher:** Löst Struktur-Hazards - **Separate Speicher:** Löst Struktur-Hazards
- **Code Scheduling:** Compiler verschiebt Befehle zur Vermeidung von Stalls - **Code Scheduling:** Compiler verschiebt Befehle zur Vermeidung von Stalls
--- ---
### 📝 Für die Klausur merken ### 📝 Für die Klausur merken

View File

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

View File

@@ -0,0 +1,40 @@
- [ ] Subnautica Below Zero #Open_World_Survival_Craft #Survival #Underwater
- [ ] Hotline Miami #Violent #Indie #Gore #Action #Great_Soundtrack
- [ ] Metaphor (unfinished) #RPG #JRPG #Turn_Based_Combat #Anime #3D
- [ ] Bioshock 1 #FPS #Story_Rich #Atmospheric #Horror #Action
- [ ] Bioshock 2 #FPS #Singleplayer #Story_Rich #Horror #Action
- [ ] Wolfenstein: The New Order #FPS #Action #Shooter #Alternate_History #Gore
- [ ] Wolfenstein: The Old Blood #FPS #Action #World_War_II #Alternate_History
- [ ] Doom 64 #Action #FPS #Classic #1990s #Retro #Gore
- [ ] Doom 1 #Action #FPS #Classic #Great_Soundtrack
- [ ] Doom 2 #Action #FPS #Classic #Great_Soundtrack
- [ ] The Witcher #RPG #Fantasy #Story_Rich #Mature #Singleplayer
- [ ] The Witcher 2 #RPG #Fantasy #Story_Rich #Mature #Singleplayer
- [ ] The Witcher 3 #Open_World #RPG #Story_Rich #Atmospheric
- [ ] Dave the Diver #Pixel_Graphics #Casual #Managment #Adventure
- [ ] Serial Cleaner #Stealth #Action #Indie #2D #Gore #Blood
- [ ] Portal Revolution #Puzzle #Singleplayer #Mod #First_Person #Action
- [ ] Don't Starve #Survival #Open_World_Survival_Craft #Crafting #2D
- [ ] Prey #Sci_fi #Immersive_Sim #Space #Singleplayer
- [ ] System Shock #Action #Immersive_Sim #Cyberpunk #Adventure
- [ ] Celeste #Precision_Platformer #Difficult #Pixel_Graphics #2D
- [ ] Black Mesa #FPS #Remake #Action #Sci_fi #First_Person
- [ ] Borderlands #FPS #Co-op #Shooter #First_Person #Loot
- [ ] Borderlands the pre sequel
- [ ] NFS Heat #Racing #Multiplayer #Open_World #Driving #PvP
- [ ] NFS Unbound #Racing #Multiplayer #Open_World #Driving #Music
- [ ] BPM #FPS #Rythm #Roguelike #Action #Indie
- [x] Blasphemous #Metroidvania #Souls-like #Pixel_Graphics #Gore
- [ ] Blasphemous 2 #Combat #Fantasy #Metroidvania #Souls-like #2D
- [ ] Elden Ring #Souls-like #Open_World #Dark_Fantasy #RPG
- [ ] Bully #Open_World #Action #Adventure #Third_Person
- [ ] Crysis I #Action #FPS #Shooter #Sci_fi #Stealth #Aliens
- [ ] Crysis II #Action #FPS #Shooter #Sandbox #First_Person
- [ ] Crysis III #Action #FPS #Shooter #Aliens #Sci_fi #Sandbox
- [ ] Kingdom Come Deliverance #Medieval #RPG #Open_World #Singleplayer
- [ ] The Last of us Part 1 #Story_Rich #Post-apocalyptic #Zombies #Shooter
- [ ] Shadow of Mordor #Open_World #Action #Fantasy #Adventure #RPG
- [ ] Shadow of War #Open_World #Action #RPG #Singleplayer #Violent
- [ ] Monster Hunter Rise #Action #Online_Co-op #Character_Customization
- [ ] Thief #Stealth #Action #First_Person #Adventure #Dark
- [ ] Metal Gear Solid V: The Phantom Pain #Stealth #Open_World #Action #Story_Rich #Dark

View File

@@ -0,0 +1,186 @@
Softwaretest (Was ist klausurrelevant?)
Klausur besteht aus zwei Teilen:
Ankreuzen (30 Fragen, 1 Punkt, immer nur eine richtig)
Freitextaufgaben (Begründen oder unterscheiden usw. aber immer nur kurze Texte, zwischen 2 und 6 Punkte pro Aufgabe)
14 - 15:30 am 15.07.
Kapitel 0
Folien:
Die Tatsache das es unmöglich ist eine Software vollständig zu testen und Fehlerfreiheit zu garantieren.
Kapitel 1
Folien:
- [x] 7 Fehler und Mangel Unterschied
- [x] 12 Begriffe und deren Zusammenhang
- [x] 15 Validierung Verifikation
- [x] 17 Unterscheidungen zwischen funktionalen- und nichtfunktionalen Anforderungen sollte klar sein und mit Beispielen belegen
- [x] 17 - … Qualitätsmerkmale Beispiele benennen können oder was dazu sagen können (aber nicht im Detail) Nur eine Vorstellung davon haben, was das bedeutet.
- [x] 30 Zwischen analytischer- und konstruktiver Qualitätssicherung unterscheiden können.
- [x] 33 Grundsätze kennen, nicht auswendig wiedergeben aber zumindest verstehen was damit gemeint ist.
- [x] 48 Faktoren die den Testprozess beeinflussen können (Keine Detailfragen)
- [x] 50 Rückverfolgbarkeit (Horizontal und Vertikal)
- [x] 51 Aktivitäten des Testprozesses sollten klar sein und wer das durchführt.
- [x] 54 Grob wissen was die Testüberwachung und -Steuerung beinhaltet. Sachen einordnen können.
- [x] Folgefolien: Grob verstehen was die einzigen Aktivitäten sind.
- [x] 69 Da ist sie ja wieder die Rückverfolgbarkeit
- [x] 73 Unterschied zwischen abstrakten und konkreten Testfällen (Testentwurf immer abstrakt bsp. Äquivalenzklassen, Realisierung ist dann konkret weil da müssen wir dann ja Werte einfügen)
- [x] 74 Testspezifikation (Wie viele Testfälle brauchen wir hier)
- [x] 76 Das Testorakel
- [ ] 81 Entwicklertests bei Psychologie des Testens
- [ ] 82 Vor und Nachteile vom unabhängigen Testen nochmal durchlesen und verstehen.
- [ ] 83 Abstufungen
- [ ] 91 Fragen sollte man beantworten können (Sind da wirklich alle wichtig?) Der Begriff Fehlermaskierung sollte klar sein genauso wie der Unterschied zwischen Testen und Debugging.
Kapitel 2
Folie:
- [x] 10 Verschiedene Teststufen sollten bekannt sein.
- [x] 15 Validierung
- [x] 16 Verifizierung (Bilder oben in der Ecke sind falschrum. Validierung links, Verifizierung rechts)
- [x] 17 Nochmal Unterschied zwischen Validierung und Verifizierung
- [x] 25 Continuous Integration (wissen was das ist)
- [x] Auf agiles Testen wird nicht eingegangen
- [x] 27 Testaktivitäten, Tester früher einbinden
- [x] Folgende Folien Verschiedene Teststufen kennen, Testbasen kennen
- [x] 40 Isoliert wird getestet, Test driven Development
- [x] 51 Ingegrationstest Fehlerzustände und Fehlerwirkungen nochmal lesen und verstehen (Vom Prinzip her)
- [x] 56 Nochmal das Gleiche nur im Unit Test
- [x] 71 Systemtest, Betrachtung des System als ganzen
- [x] 73 Testziele, welche Aspekte sind relevant?
- [x] 76 Fehlerzustände und Fehlerwirkungen lesen
- [x] 82 Verständnis für nichtfunktionale Anforderungen
- [x] 91 Einfach nochmal durchlesen (eventuell keine Frage dazu, aber kann man mit nachdenken ein Beispiel benennen)
- [x] 95 Spezielle Form des Systemtests
- [x] 106 Unterschied Alpha und Beta Test (Alpha intern, Beta - Software wird nach außen gegeben)
- [x] 111 Funktionale, Nichtfunktionale, Strukturelle und Änderungsbezogene Tests. Fehlernach und Regressionstest
- [x] 112 Teststufen und Testarten
- [x] 113 Funktionale Tests
- [x] 114 Nichtfunktionale Tests
- [x] 115 White-Box Tests
- [ ] 123 Testarten und Teststufen (Bankanwendung mal durchlesen)
- [ ] Verschiedene Anlässe für Wartungen
- [ ] 130 Typische Wartungsanlässe sollen grob klar sein. Additive Wartung und andere drei Begriffe sollten klar sein.
- [ ] 140 Könnte man sich nochmal anschauen um einen Überblick zu bekommen
- [ ] 142 Fragen sollten beantwortet werden können.
Kapitel 3
Folie:
- [ ] 6 Software-Qualitätssicherung
- [ ] 18 Grundlegende Arbeitsschritte Reviews sollte so wiedergegeben werden können.
- [ ] 20 Sollte soweit klar sein.
- [ ] 27 Grob was da steht aber nicht jedes Detail
- [ ] 39 Ablauf eines Reviewprozesses sollte grundlegend klar sein.
- [ ] 41 Rollen
- [ ] 42 Reviewarten und sortieren können und grob wissen was das jeweils bedeutet und wo die Unterschiede sind. (Wenn ein Reviewprozess sehr formell durchgeführt wird, was könnte das für ein Prozess sein?)
- [ ] 56 Reviewarten zusammengefasst sollte verstanden werden. Alles außer Frage 3 wichtig
- [ ] 84 Datenflussanalyse und
- [ ] 89 Datenflussanomalien kennen und wissen was das ist (benennen)
- [ ] 94 Begriffe verstehen und erklären können
- [ ] 98 Zyklomatische Zahl
- [ ] 99 Maßtypen
- [ ] 100 Wie berechnet man die zyklomatische Zahl
Kapitel 4.1
Folie:
- [ ] 5 Blackbox von Whitebox unterscheiden können
- [ ] 7 Statischen vom Dynamischen Test abgrenzen können.
- [ ] 8 Begriffe sollten alle klar sein
- [ ] 13 Rückverfolgbarkeit
- [ ] 17 Aufbau eines Testrahmens
- [ ] 18 Begriffe
- [ ] 24 Blackbox
- [ ] 44 Heuristiken und wie man damit die Testfälle minimiert.
- [ ] 64 Begriffe
- [ ] 66 Zustandsübergangstabelle sollte klar sein
- [ ] 69 Der Ablauf sollte klar sein
- [ ] 85 Entscheidungstabellentest Beispiel
- [ ] 109 Fragen beantworten können
Kapitel 4.1
Folie:
- [ ] 3 Begriffe und Zusammenhänge verstehen
- [ ] 5 Blackbox Whitebox immer in Kombination, Fokus auf Blackbox. Erfahrungsbasierte können zusätzlich gemacht werden als Ergänzung
- [ ] Kontrollflusstest und Bedingungstest sollten klar sein.
- [ ] 7 Das ist sowieso wichtig
- [ ] 9 Begriffe
- [ ] 10 Arten von Kontrollflusstests und welchen Sinn die haben (wichtig) -> in Folie 11 besser dargestellt.
- [ ] Anweisungsüberdeckung und Entscheidungsüberdeckung
- [ ] 13 Sollte klar sein, wie sie sich unterscheiden.
- [ ] 16/17 Anweisungsüberdeckung und was man da beachten sollte - Wenn Coverage nicht erreicht wird, dann müssen neue Tests geschrieben werden.
- [ ] 30 Grenze-Inneres-Überdeckung
- [ ] 33 Pfadüberdeckung - theoretische Metrik...
- [ ] 39 Instrumentierung sollte klar sein.
- [ ] 41 Datenflusstest - Definitionen, c-user und p-use Unterschiede sollten klar sein.
- [ ] 47 Bedingungstest - und die anderen die vorher/nacher sind sollte man auch kennen. Unterscheidungen sollen klar sein und auch Beispiel sollte man geben können?
- [ ] 49 und fortfolgend, Verschiedene Arten von Bedingungsüberdeckung sollten klar sein.
- [ ] 58 Lazy Evaluation sollte erklärt werden können und was das für die Praxis bedeutet.
- [ ] 61 Mächtigkeit der White-Box-Testverfahren (Welcher der Aussagen ist richtig) - Prinzip soll verstanden sein.
- [ ] 65/66 Erfahrungsbasierte Testverfahren
- [ ] 67 Intuitive Testfallermittlung
- [ ] 69 Exploratives Testen - Keine Details fragen
- [ ] 73 Begriffe sollten klar sein.
- [ ] Nur auf höherer Ebene, nicht auf Unit-Ebene
- [ ] 83 Zusammenfassung dynamischer Tests
- [ ] Und dann halt die Zusammenfassung von dem Kapitel kann man sich am Ende des Foliensatzes auch nochmal anschauen.
Kapitel 5
Folie:
- [ ] 3 Was man nach dem Kapitel wissen sollte.
- [ ] 8 Vor und Nachteile des unabhängigen Testen
- [ ] 15 Aufgaben von Mitarbeiterqualifikationen einzelne Begriffe kennen.
- [ ] 17/18/19/20 Aufgabenunterteilung sollte bekannt sein. Unterschiede sollen klar sein.
- [ ] 21 Aufgaben des Testers
- [ ] 26 Wann soll mit dem Testen begonnen werden?
- [ ] 28 Aktivitäten der Testplanung - Eine Vorstellung davon haben, was das ist.
- [ ] 33 Soll klar sein
- [ ] 34 Sollte klar sein
- [ ] 37 Das Bild fast die Einflussfaktoren einmal ganz gut zusammen.
- [ ] 45 Fragen sollten beantwortet werden können. (Wie in jedem Kapitel, sind gut um sich auf die Prüfung vorzubereiten)
- [ ] 50 Schätzung des Testaufwands
- [ ] 51 und folgend: Grob die Verfahren kennen, aber muss nicht auswendig gelernt werden. Begriffe kennen, unterscheiden können.
- [ ] 59 Testmetriken - Fehlerbasierte und Testfallbasierte Metriken
- [ ] 61/62 Begriffe sollten klar sein und soll erklärt werden können, was damit gemeint ist.
- [ ] 64 Sinn sollte klar sein
- [ ] 67 Eingangs- und Endekriterien sollen klar sein.
- [ ] 71 Testfortschritts- und Testabschlussbericht wissen was das ist
- [ ] 73 ISO-Norm kennen, aber halt nur erklären können und nicht auswendig
- [ ] 74 Sollte klar sein was da steht.
- [ ] 75 Teststeuerung, Punkte nochmal durchlesen zum verinnerlichen was für Maßnahmen zur Teststeuerung man machen kann.
- [ ] 82 Gleichung kennen und Unterscheidung zwischen Produkt und Projektrisiken kennen.
- [ ] 89 Produktrisiken
- [ ] 97 Risikoorientierte Testplanung Tabelle mit den Inhalten verstehen. "Zahlen die da genannt werden sind haarsträubend"
- [ ] 99 Fragen beantworten können
- [ ] 101 Fehler- und Abweichungsmanagement
- [ ] 102 Testprotokoll: Ursachenalayse ist Aufgabe der Entwickler
- [ ] 103 Fehlermeldung Grundprinzip Ziele sollte man verstanden haben.
- [ ] 105 Fehlerbericht - einheitliches Schema kennen.
- [ ] 109 Bedeutung der Klassen mal anschauen und kennen.
- [ ] 110 Priorität für die auf 109 beschriebenen Klassen
- [ ] 112 Fehlerstatusmodell
- [ ] 121 Begriffe kennen und Unterschiede kennen
- [ ] 125/126 Fragen sollte man beantworten können.
- [ ] 151 Fehler und Folgefehler
- [ ] 155 Diese Folien mal merken
Kapitel 6
Folie:
- [ ] 6 Werkzeugunterstützung für das Testen (Bild betrachten)
- [ ] 7 Bild nochmal
- [ ] 11-14 Wichtig sind: Fehlermanagementwerkzeuge, Anforderungsmanagement, Fehlermanagementwerkezuge,
- [ ] 16 Typen von Testwerkzeugen
- [ ] 17 Review Werkzeuge
- [ ] 18 Statische Analysewerkzeuge
- [ ] 27-29 Testausführungswerkzeuge - 28 Unten die Unterschiedlichen Ansätze zur Automatisierung der Testdurchführung sollen bekannt sein. - Komparatoren uns sowas 29 soll auch bekannt sein.
- [ ] 30 Ausführung und Protokollierung Bild mal anschauen
- [ ] 31/32 Capture/Replay-Werkzeuge, sollte bekannt sein.
- [ ] 35 Mal anschauen
- [ ] 36 Überdeckungswerkzeuge
- [ ] 39 Simulatoren
- [ ] 48 Werkzeuge für Gebrauchstauglichkeitstest
- [ ] 51 Werkzeuge für IT-Sicherheitstest
- [ ] 57 Risiken von Testwerkzeugen ("Vielleicht könnten ein zwei Beispiele erfragt werden")
- [ ] 59 Lernkurveneffekt
- [ ] 62 Einführungsreihenfolge vielleicht ganz gut zu wissen
- [ ] 65 Schritte sollen bekannt sein und was da zu tun ist.
- [ ] 71 Grafik mal anschauen
- [ ] 76 Vielleicht einmal durchlesen und verstehen um was es da geht.
- [ ] 81/82 Fragen beantworten können (Statische Analyse, welche... "Die Frage könnte drann kommen") 82 - Vielleicht zwei Beispiele benennen können