diff --git a/.obsidian/graph.json b/.obsidian/graph.json index 0360897..d1e6e36 100755 --- a/.obsidian/graph.json +++ b/.obsidian/graph.json @@ -3,8 +3,8 @@ "search": "", "showTags": true, "showAttachments": false, - "hideUnresolved": true, - "showOrphans": false, + "hideUnresolved": false, + "showOrphans": true, "collapse-color-groups": false, "colorGroups": [ { @@ -25,6 +25,6 @@ "repelStrength": 10, "linkStrength": 1, "linkDistance": 250, - "scale": 0.6283893116394689, + "scale": 0.9425839674592027, "close": true } \ No newline at end of file diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 8f73aa9..89aac2c 100755 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -184,8 +184,22 @@ }, "active": "d561030619edca73", "lastOpenFiles": [ - "Semester 7/REDIG/Vorlesung 2.md", + "conflict-files-obsidian-git.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/INKOM/Vorlesung 2.md", "Semester 7/Robocup", @@ -211,12 +225,6 @@ "Semester 6/COMARCH/Zusammenfassung/Vorlesung 9.md", "Semester 6/COMARCH/Zusammenfassung/Vorlesung 10.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", "Dayplanner", "Semester 6/COMARCH/Zusammenfassung", diff --git a/Semester 6/COMARCH/Beispiele Klausurfragen.md b/Semester 6/COMARCH/Beispiele Klausurfragen.md new file mode 100644 index 0000000..a606e2c --- /dev/null +++ b/Semester 6/COMARCH/Beispiele Klausurfragen.md @@ -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}}$ diff --git a/Semester 6/COMARCH/Klausurvorbereitungs Spreadsheed.md b/Semester 6/COMARCH/Klausurvorbereitungs Spreadsheed.md new file mode 100644 index 0000000..7239086 --- /dev/null +++ b/Semester 6/COMARCH/Klausurvorbereitungs Spreadsheed.md @@ -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. diff --git a/Semester 6/COMARCH/Pasted image 20250709205049.png b/Semester 6/COMARCH/Pasted image 20250709205049.png new file mode 100644 index 0000000..7af9e86 Binary files /dev/null and b/Semester 6/COMARCH/Pasted image 20250709205049.png differ diff --git a/Semester 6/COMARCH/Pasted image 20250709205101.png b/Semester 6/COMARCH/Pasted image 20250709205101.png new file mode 100644 index 0000000..2f406ce Binary files /dev/null and b/Semester 6/COMARCH/Pasted image 20250709205101.png differ diff --git a/Semester 6/COMARCH/Zusammenfassung/Fragenkatalog.md b/Semester 6/COMARCH/Zusammenfassung/Fragenkatalog.md new file mode 100644 index 0000000..8c1e91c --- /dev/null +++ b/Semester 6/COMARCH/Zusammenfassung/Fragenkatalog.md @@ -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 Moore’sche 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}$ + diff --git a/Semester 6/COMARCH/Zusammenfassung/Pasted image 20250708185128.png b/Semester 6/COMARCH/Zusammenfassung/Pasted image 20250708185128.png new file mode 100644 index 0000000..b495136 Binary files /dev/null and b/Semester 6/COMARCH/Zusammenfassung/Pasted image 20250708185128.png differ diff --git a/Semester 6/COMARCH/Zusammenfassung/Pasted image 20250708185152.png b/Semester 6/COMARCH/Zusammenfassung/Pasted image 20250708185152.png new file mode 100644 index 0000000..6de97c5 Binary files /dev/null and b/Semester 6/COMARCH/Zusammenfassung/Pasted image 20250708185152.png differ diff --git a/Semester 6/COMARCH/Zusammenfassung/Pasted image 20250708185618.png b/Semester 6/COMARCH/Zusammenfassung/Pasted image 20250708185618.png new file mode 100644 index 0000000..8616fbb Binary files /dev/null and b/Semester 6/COMARCH/Zusammenfassung/Pasted image 20250708185618.png differ diff --git a/Semester 6/COMARCH/Zusammenfassung/Pasted image 20250708185932.png b/Semester 6/COMARCH/Zusammenfassung/Pasted image 20250708185932.png new file mode 100644 index 0000000..f938d73 Binary files /dev/null and b/Semester 6/COMARCH/Zusammenfassung/Pasted image 20250708185932.png differ diff --git a/Semester 6/COMARCH/Zusammenfassung/Pasted image 20250708193917.png b/Semester 6/COMARCH/Zusammenfassung/Pasted image 20250708193917.png new file mode 100644 index 0000000..0ea3686 Binary files /dev/null and b/Semester 6/COMARCH/Zusammenfassung/Pasted image 20250708193917.png differ diff --git a/Semester 6/COMARCH/Zusammenfassung/Pasted image 20250708193937.png b/Semester 6/COMARCH/Zusammenfassung/Pasted image 20250708193937.png new file mode 100644 index 0000000..50fa4ec Binary files /dev/null and b/Semester 6/COMARCH/Zusammenfassung/Pasted image 20250708193937.png differ diff --git a/Semester 6/COMARCH/Zusammenfassung/Vorlesung 1.md b/Semester 6/COMARCH/Zusammenfassung/Vorlesung 1.md index dc1fa20..88654c9 100644 --- a/Semester 6/COMARCH/Zusammenfassung/Vorlesung 1.md +++ b/Semester 6/COMARCH/Zusammenfassung/Vorlesung 1.md @@ -3,43 +3,29 @@ ### 🏛️ 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 - +3. **Ebene 2 – Befehlssatzachritektur (ISA):** Maschinensprache +4. **Ebene 3 – Betriebssystem:** Multiprogramming, IO-Abstraktion 5. **Ebene 4 – Assemblersprache:** maschinennahe Programmierung - -6. **Ebene 5 – Höhere Programmiersprachen:** unabhängige Algorithmen - +6. **Ebene 5 – Problemorientierte Sprachen:** unabhängige Algorithmen, Compiler oder Interpreter --- @@ -48,97 +34,56 @@ #### Nullte Generation (vor 1945) - Mechanische Rechenmaschinen (Pascal, Leibniz, Babbage) - - Zuse Z3 (1941) – erster programmgesteuerter Computer - #### Erste Generation (1945–1955) - 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 - + - Gemeinsamer Speicher für Daten & Programme + - Vorteil: Programme können sich selbst ändern - Harvard-Architektur: - - - Trennung von Daten- & Programmspeicher - - - Vorteil: schneller & sicherer - + - Trennung von Daten- & Programmspeicher + - Vorteil: schneller & sicherer #### Zweite Generation (1955–1965) - **Transistoren** ersetzen Röhren - - Minicomputer (DEC PDP) - #### Dritte Generation (1965–1980) - **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:30–15:00 - -- **Übung:** Do 15:15–16:00 - -- **Labor:** Do 16:15–19:15 (alle 2 Wochen) - -- **Prüfung:** E-Klausur 90 min (mind. 50% zum Bestehen) - -- **Voraussetzungen:** DIGIT & BESYST bestanden - + - _Rechnerorganisation und Rechnerentwurf_ + - _Computer Organization and Design_ (RISC-V Edition) --- diff --git a/Semester 6/COMARCH/Zusammenfassung/Vorlesung 2.md b/Semester 6/COMARCH/Zusammenfassung/Vorlesung 2.md index 85b7e48..d793545 100644 --- a/Semester 6/COMARCH/Zusammenfassung/Vorlesung 2.md +++ b/Semester 6/COMARCH/Zusammenfassung/Vorlesung 2.md @@ -3,89 +3,60 @@ ### 🔄 Wiederholung Computergenerationen - **0. Generation (bis 1945):** Mechanische Rechenmaschinen (Pascal, Leibniz, Babbage, Zuse) - - **1. Generation (1945–1955):** Relais & Vakuumröhren – ENIAC, COLOSSUS, MANIAC - - **2. Generation (1955–1965):** Transistoren – Minicomputer (PDP), Supercomputer (CDC 6600) - - **3. Generation (1965–1980):** Integrierte Schaltungen – IBM System/360, PDP-11 - - **4. Generation (ab 1980):** VLSI – PCs, x86-Architektur - - **5. Generation (heute):** Smartphones, Cloud, Embedded Systems - --- ### 🚀 Moore’s Law (Moor’sches Gesetz) - **Kerngedanke:** Verdopplung der Anzahl Transistoren pro IC alle 12–24 Monate. - - Auswirkungen: - - - Kleinere Strukturen → geringere Kosten - - - Mehr Komponenten → höhere Leistung - - - Geringerer Stromverbrauch - + - Kleinere Strukturen → geringere Kosten + - Mehr Komponenten → höhere Leistung + - > Resultierend: 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. - +- **Kenngrößen:** + - Instruktionen/Sekunde (IPS), FLOPS (Floating point operations/second) + - 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. (MIPS => Million instructions per second) --- ### 🤖 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) - + - Schaltnetz: keine Schleifen, keine Rückkopplung) + - Endlicher Automat (Deterministisch und Nichtdeterministisch) + - Kellerautomat (unendlich, aber Zugriff nur auf oberstes Element)(Hardwarelimitierungen?) + - Turing-Maschine (endliche Zustände des Automaten, unendliches Band zum Lesen und Schreiben) +![[Pasted image 20250708185128.png]] +![[Pasted image 20250708185152.png]] +![[Pasted image 20250708185618.png]] --- ### 🚌 Speicheranbindung & Endianness - Speicheradressierung: - - - **big-endian:** höchstwertiges Byte an kleinster Adresse - - - **little-endian:** niedrigstwertiges Byte zuerst - + - **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 - + - Bus-Takt meist langsamer als CPU-Takt + - Cache als schneller Zwischenspeicher --- @@ -94,85 +65,97 @@ #### Rechenwerk (ALU) - Operationen: +, −, *, /, logische Operationen - - Moderne CPUs: mehrere Register → direkte Register-Register-Operationen - - Ältere CPUs: Akkumulator-Register für ALU-Operationen - - +![[Pasted image 20250708185932.png]]**** #### Steuerwerk - - Verantwortlich für: - - - Ausführung der Befehle - - - Datenflusskontrolle - - - Ausnahmebehandlung & Interrupts - + - Ausführung der Befehle + - Datenflusskontrolle + - 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) +**Befehle bestimmen die Architektur und umgekehrt** + #### 1️⃣ Stack-Architektur - Operanden und Ergebnisse liegen auf Stack. - -- Vorteile: kompakter Code, minimaler Prozessorzustand - +- Benötigt Stack Pointer **SP Register** +- Ergebnis wird final auf den Stack gelegt +- Vorteile: kompakter Code, minimaler Prozessorzustand, sog. Null-Address Machine - 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 - +- **Ein-Adress-Maschine** #### 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 -|**Merkmal**|**RISC**|**CISC**| -|---|---|---| -|**Befehlssatz**|Einfach, einheitlich, kurze Befehle|Komplex, unterschiedliche Länge| -|**Hardware**|Einfach, energieeffizient|Komplex oder Mikroprogramme| -|**Codegröße**|Größer|Kompakter| -|**Beispiele**|ARM, MIPS, SPARC, PowerPC|x86 (Intel, AMD), Zilog Z80| -|**Vorteile**|Schneller bei genügend Registern|Speichereffizient| -|**Nachteile**|Mehr Programmspeicher nötig|Langsame komplexe Befehle| +| **Merkmal** | **RISC** | **CISC** | +| --------------- | ----------------------------------- | ------------------------------- | +| **Befehlssatz** | Einfach, einheitlich, kurze Befehle | Komplex, unterschiedliche Länge | +| **Hardware** | Einfach, energieeffizient | Komplex oder Mikroprogramme | +| **Codegröße** | Größer | Kompakter | +| **Beispiele** | ARM, MIPS, SPARC, PowerPC | x86 (Intel, AMD), Zilog Z80 | +| **Vorteile** | Schneller bei genügend Registern | Speichereffizient | +| **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. 1–15 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 | + --- diff --git a/Semester 6/COMARCH/Zusammenfassung/Vorlesung 3.md b/Semester 6/COMARCH/Zusammenfassung/Vorlesung 3.md index 1ef5f9e..1801eec 100644 --- a/Semester 6/COMARCH/Zusammenfassung/Vorlesung 3.md +++ b/Semester 6/COMARCH/Zusammenfassung/Vorlesung 3.md @@ -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,68 +25,45 @@ #### 📦 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. - - -#### 🛠️ 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`| +- 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 +![[Pasted image 20250708193917.png]] +![[Pasted image 20250708193937.png]] --- ### 🧮 Aufbau der CPU: Datenpfad (Datapath) #### 🛠️ 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).\ --- diff --git a/Semester 6/COMARCH/Zusammenfassung/Vorlesung 3a.md b/Semester 6/COMARCH/Zusammenfassung/Vorlesung 3a.md index 30d147b..b2bfcd0 100644 --- a/Semester 6/COMARCH/Zusammenfassung/Vorlesung 3a.md +++ b/Semester 6/COMARCH/Zusammenfassung/Vorlesung 3a.md @@ -3,89 +3,57 @@ ### 🔌 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) - + - 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 - + - 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 - + 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 - + - 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 - + - 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 - + - Propagation durch die Logik + - Synchronisation mit dem Takt - **Ohne Takt:** Asynchrone Schaltungen - - **Mit Takt:** Syntaktische FSM → bevorzugt in modernen Prozessoren - --- @@ -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, Moore’s Law - -- **V3a Schaltnetze & Automaten** → Logikstrukturen & FSM - diff --git a/Semester 6/COMARCH/Zusammenfassung/Vorlesung 4.md b/Semester 6/COMARCH/Zusammenfassung/Vorlesung 4.md index 87360ea..4d8736f 100644 --- a/Semester 6/COMARCH/Zusammenfassung/Vorlesung 4.md +++ b/Semester 6/COMARCH/Zusammenfassung/Vorlesung 4.md @@ -3,90 +3,61 @@ ### 🔁 Wiederholung aus Teil 1 - **Instruktionstypen (MIPS):** - - - **R-Format:** arithmetische/logische Operationen (z. B. `add $s1,$s2,$s3`) - - - **Load/Store:** Speicherzugriff (z. B. `lw`, `sw`) - - - **Branch:** bedingte Sprünge (`beq`, `bne`) - + - **R-Format:** arithmetische/logische Operationen (z. B. `add $s1,$s2,$s3`) + - **Load/Store:** Speicherzugriff (z. B. `lw`, `sw`) + - **Branch:** bedingte Sprünge (`beq`, `bne`) - **Datenpfad (Full Datapath):** - - - Register → ALU → Speicher → Register - - - Separate Instruktions- und Datenspeicher nötig, da ein Zugriff pro Zyklus - + - Register → ALU → Speicher → Register + - Separate Instruktions- und Datenspeicher nötig, da ein Zugriff pro Zyklus --- ### ⚙️ Steuerungseinheit (Control Unit) - **Erzeugt Steuersignale aus dem Opcode:** - - - **MemtoReg:** bestimmt Datenquelle für Register-Schreiben - - - **ALUSrc:** wählt ALU-Operand (Register vs. unmittelbarer Wert) - - - **RegWrite:** aktiviert Schreibzugriff auf Register - - - **MemRead/MemWrite:** steuern Speicherzugriffe - - - **Branch:** aktiviert bei bedingten Sprüngen - + - **MemtoReg:** bestimmt Datenquelle für Register-Schreiben + - **ALUSrc:** wählt ALU-Operand (Register vs. unmittelbarer Wert) + - **RegWrite:** aktiviert Schreibzugriff auf Register + - **MemRead/MemWrite:** steuern Speicherzugriffe + - **Branch:** aktiviert bei bedingten Sprüngen - **ALU Control:** - - - Basierend auf Opcode und Funct-Feld - + - Basierend auf Opcode und Funct-Feld - Beispiel Mapping: - - |ALUOp|Funct|ALU-Funktion| - |---|---|---| - |00|XXXXXX|`add`| - |01|XXXXXX|`sub`| - |10|100000|`add`| - |10|100010|`sub`| - |10|100100|`and`| - |10|100101|`or`| - |10|101010|`slt`| - + +| ALUOp | Funct | ALU-Funktion | +| ----- | ------ | ------------ | +| 00 | XXXXXX | `add` | +| 01 | XXXXXX | `sub` | +| 10 | 100000 | `add` | +| 10 | 100010 | `sub` | +| 10 | 100100 | `and` | +| 10 | 100101 | `or` | +| 10 | 101010 | `slt` | + --- ### 📦 Erweiterter Datenpfad - Unterstützung für: - - - **Jumps (`j`, `jal`):** - - - PC-Update mit 26-Bit Zieladresse + oberen 4 Bit des alten PCs - - - Steuerleitung „Jump“ wird aus Opcode dekodiert - - - **Branches (`beq`, `bne`):** - - - Zieladresse berechnen (PC+4 + Offset << 2) - - - ALU prüft, ob Bedingung erfüllt (Zero-Flag) - + - **Jumps (`j`, `jal`):** + - PC-Update mit 26-Bit Zieladresse + oberen 4 Bit des alten PCs + - Steuerleitung „Jump“ wird aus Opcode dekodiert + - **Branches (`beq`, `bne`):** + - Zieladresse berechnen (PC+4 + Offset << 2) + - ALU prüft, ob Bedingung erfüllt (Zero-Flag) --- ### 🚨 Performance-Betrachtung - **Ein-Zyklus-Datenpfad Problem:** - - - Längster Pfad (Critical Path) bestimmt Taktfrequenz - - - Beispiel: Load-Befehl → Instruktionsspeicher → Registerfile → ALU → Datenspeicher → Registerfile - - - Unterschiedliche Instruktionen hätten unterschiedliche Latenzen → nicht praktikabel - + - Längster Pfad (Critical Path) bestimmt Taktfrequenz + - Beispiel: Load-Befehl → Instruktionsspeicher → Registerfile → ALU → Datenspeicher → Registerfile + - Unterschiedliche Instruktionen hätten unterschiedliche Latenzen → nicht praktikabel - **Lösung:** **Pipelining** - - - Aufteilung des Datenpfads in Stufen - - - Überlappende Bearbeitung mehrerer Instruktionen - + - Aufteilung des Datenpfads in Stufen + - Überlappende Bearbeitung mehrerer Instruktionen --- diff --git a/Semester 6/COMARCH/Zusammenfassung/Vorlesung 5.md b/Semester 6/COMARCH/Zusammenfassung/Vorlesung 5.md index f47918d..2e44b61 100644 --- a/Semester 6/COMARCH/Zusammenfassung/Vorlesung 5.md +++ b/Semester 6/COMARCH/Zusammenfassung/Vorlesung 5.md @@ -3,13 +3,9 @@ ### 🚀 Was ist Pipelining? - **Prinzip:** Überlappende Ausführung mehrerer Instruktionen - - **Analogie:** Waschstraße – mehrere Autos gleichzeitig in unterschiedlichen Phasen - - **Ziel:** Erhöhung des Durchsatzes (mehr Befehle pro Zeiteinheit) - - **Wichtig:** Latenz einzelner Instruktionen bleibt gleich - --- @@ -28,13 +24,9 @@ ### 📈 Performance-Vorteile - **Single-Cycle Datapath:** 800 ps pro Befehl - - **Pipelined Datapath:** 200 ps pro Befehl - - **Theoretisches Speedup:** Anzahl Stufen = 5x schneller - - **Realität:** Speedup < 5 wegen Hazard-Stalls und unbalancierter Stufen - --- @@ -43,57 +35,39 @@ #### 🏗 Struktur-Hazards - Konflikt um Ressource (z. B. Instruktions- und Datenspeicher gleichzeitig benötigt) - - **Lösung:** Getrennte Instruktions-/Datenspeicher oder Caches - #### 📦 Daten-Hazards - Instruktion benötigt Ergebnis der vorherigen Instruktion - - Beispiel: - ```asm add $s0, $t0, $t1 sub $t2, $s0, $t3 ``` - **Lösungen:** - - - **Forwarding (Bypassing):** Ergebnis direkt weiterleiten - - - **Stalls:** Pipeline anhalten - - - **Code Scheduling:** Befehle umsortieren, um Abhängigkeiten zu vermeiden - + - **Forwarding (Bypassing):** Ergebnis direkt weiterleiten + - **Stalls:** Pipeline anhalten + - **Code Scheduling:** Befehle umsortieren, um Abhängigkeiten zu vermeiden #### 🔁 Kontroll-Hazards - Sprünge (`beq`, `bne`) → Ziel erst spät bekannt - - **Lösungen:** - - - Warten bis Branch-Entscheidung (Stalls) - - - **Branch Prediction:** - - - **Static:** Vorwärts nicht nehmen, Rückwärts nehmen - - - **Dynamic:** Verlauf der Branches aufzeichnen und vorhersagen - + - Warten bis Branch-Entscheidung (Stalls) + - **Branch Prediction:** + - **Static:** Vorwärts nicht nehmen, Rückwärts nehmen + - **Dynamic:** Verlauf der Branches aufzeichnen und vorhersagen --- ### 📦 Optimierungen - **Forwarding:** Verhindert unnötige Stalls - - **Branch Prediction:** Reduziert Control Hazards - - **Separate Speicher:** Löst Struktur-Hazards - - **Code Scheduling:** Compiler verschiebt Befehle zur Vermeidung von Stalls - --- diff --git a/Semester 6/COMARCH/Zusammenfassung/Vorlesung Kompakt.md b/Semester 6/COMARCH/Zusammenfassung/Vorlesung Kompakt.md index bf263c2..d8131cf 100644 --- a/Semester 6/COMARCH/Zusammenfassung/Vorlesung Kompakt.md +++ b/Semester 6/COMARCH/Zusammenfassung/Vorlesung Kompakt.md @@ -5,35 +5,20 @@ ### **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 - + - Gemeinsamer Speicher für Daten & Programme + - Vorteil: Einfachheit; Nachteil: Von-Neumann-Flaschenhals - **Harvard-Architektur**: - - - Trennung von Daten- und Programmspeicher - + - 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 - + - 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 - --- @@ -48,106 +33,71 @@ |Beispiele|ARM, MIPS|x86 (Intel, AMD)| - **Befehlssatztypen**: - - - Stack, Akkumulator, Register-Memory, Load/Store - + - 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` - + - 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 - + - 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) - + - **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) - + - 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 - + - **Static (VLIW)** vs. **Dynamic (Superscalar)** + - **Speculation**: Branch & Load Speculation + - **Register Renaming**: Verhindert WAW & WAR --- @@ -164,52 +114,34 @@ ### **🔟 Speicheranbindung** - **Speicherhierarchie**: Register → Cache → RAM → SSD/HDD - - **Caches**: - - - Direct-Mapped, Set-Associative, Fully-Associative - - - Write-Through vs. Write-Back - - - **AMAT**: - + - 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 - + 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,24 +152,15 @@ ### **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 - + - Vorteile: Isolation, Sicherheit + - VMM: verwaltet Ressourcen, Traps für privilegierte Instruktionen - **Virtueller Speicher**: - - - Page Tables, TLB, Page Fault Handling - + - Page Tables, TLB, Page Fault Handling - **Cache-Kohärenz**: - - - Snooping, Directory-basierte Protokolle - + - Snooping, Directory-basierte Protokolle --- diff --git a/Semester 6/List of Shame.md b/Semester 6/List of Shame.md new file mode 100644 index 0000000..c2d77d0 --- /dev/null +++ b/Semester 6/List of Shame.md @@ -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 \ No newline at end of file diff --git a/Semester 6/SWTEST/Klausurrelevantes Milan.md b/Semester 6/SWTEST/Klausurrelevantes Milan.md new file mode 100644 index 0000000..6637108 --- /dev/null +++ b/Semester 6/SWTEST/Klausurrelevantes Milan.md @@ -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 \ No newline at end of file