issue
This commit is contained in:
BIN
Semester 6/COMARCH/Zusammenfassung/COMARCH.7z
Normal file
BIN
Semester 6/COMARCH/Zusammenfassung/COMARCH.7z
Normal file
Binary file not shown.
@@ -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
|
||||
|
||||
5. **Ebene 4 – Assemblersprache:** maschinennahe Programmierung
|
||||
|
||||
6. **Ebene 5 – Höhere Programmiersprachen:** unabhängige Algorithmen
|
||||
|
||||
|
||||
---
|
||||
|
||||
@@ -48,97 +34,66 @@
|
||||
#### 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)
|
||||
|
||||
- _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
|
||||
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -3,89 +3,57 @@
|
||||
### 🔄 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
|
||||
- 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)
|
||||
|
||||
- Instruktionen/Sekunde (IPS), FLOPS
|
||||
- Taktzyklen pro Instruktion (CPI), Instruktionen pro Takt (IPC)
|
||||
- Speicherzugriffszeit, Durchsatz
|
||||
- Netzwerk- & Grafikleistung (FPS, TPS)
|
||||
- Kritik an MIPS: „Misleading Information to Promote Sales“ – nicht immer aussagekräftig.
|
||||
|
||||
|
||||
---
|
||||
|
||||
### 🤖 Computer als endlicher Automat (Finite State Machine)
|
||||
|
||||
- **Zustände:** durch Bitmuster repräsentiert
|
||||
|
||||
- **Operation:** Boolesche Funktion auf Teilzuständen
|
||||
|
||||
- Vergleichbare Modelle:
|
||||
|
||||
- Schaltnetz (ohne Schleifen)
|
||||
|
||||
- Endlicher Automat (deterministisch/nichtdeterministisch)
|
||||
|
||||
- Kellerautomat (mit Stack)
|
||||
|
||||
- Turingmaschine (unendliches Band)
|
||||
|
||||
- Schaltnetz (ohne Schleifen)
|
||||
- Endlicher Automat (deterministisch/nichtdeterministisch)
|
||||
- Kellerautomat (mit Stack)
|
||||
- Turingmaschine (unendliches Band)
|
||||
|
||||
---
|
||||
|
||||
### 🚌 Speicheranbindung & Endianness
|
||||
|
||||
- Speicheradressierung:
|
||||
|
||||
- **big-endian:** höchstwertiges Byte an kleinster Adresse
|
||||
|
||||
- **little-endian:** niedrigstwertiges Byte zuerst
|
||||
|
||||
- **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,22 +62,15 @@
|
||||
#### Rechenwerk (ALU)
|
||||
|
||||
- Operationen: +, −, *, /, logische Operationen
|
||||
|
||||
- Moderne CPUs: mehrere Register → direkte Register-Register-Operationen
|
||||
|
||||
- Ältere CPUs: Akkumulator-Register für ALU-Operationen
|
||||
|
||||
|
||||
#### Steuerwerk
|
||||
|
||||
- Verantwortlich für:
|
||||
|
||||
- Ausführung der Befehle
|
||||
|
||||
- Datenflusskontrolle
|
||||
|
||||
- Ausnahmebehandlung & Interrupts
|
||||
|
||||
- Ausführung der Befehle
|
||||
- Datenflusskontrolle
|
||||
- Ausnahmebehandlung & Interrupts
|
||||
|
||||
---
|
||||
|
||||
@@ -118,48 +79,31 @@
|
||||
#### 1️⃣ Stack-Architektur
|
||||
|
||||
- Operanden und Ergebnisse liegen auf Stack.
|
||||
|
||||
- Vorteile: kompakter Code, minimaler Prozessorzustand
|
||||
|
||||
- Nachteil: viele Speicherzugriffe
|
||||
|
||||
- Heute: nur noch in virtuellen Maschinen (JVM, p-Machine)
|
||||
|
||||
|
||||
#### 2️⃣ Akkumulator-Architektur
|
||||
|
||||
- Ein Register (Akkumulator) für Operanden & Ergebnis
|
||||
|
||||
- Speicherzugriff für zweiten Operand nötig
|
||||
|
||||
- Kompakt, aber teuer durch Speicherzugriffe
|
||||
|
||||
|
||||
#### 3️⃣ Register-Memory-Architektur
|
||||
|
||||
- Mehrere Register, 2. Operand aus Speicher
|
||||
|
||||
- Zwei-Adress-Befehle
|
||||
|
||||
- Vorteil: direkt mit Speicher arbeiten
|
||||
|
||||
- Nachteil: Speicherzugriffe kosten Zeit
|
||||
|
||||
|
||||
#### 4️⃣ Register-Register (Load/Store)-Architektur
|
||||
|
||||
- Arithmetik nur auf Registern
|
||||
|
||||
- Speicherzugriff explizit mit Load/Store
|
||||
|
||||
- Drei-Adress-Befehle
|
||||
|
||||
- Vorteil: keine unnötigen Speicherzugriffe
|
||||
|
||||
- Nachteil: mehr Befehle nötig → größerer Code
|
||||
|
||||
- Typisch für **RISC-Architekturen**
|
||||
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -2,32 +2,22 @@
|
||||
|
||||
### 🧠 Einführung: CPU-Leistungsfaktoren
|
||||
|
||||
- **Instruction Count (IC):** Anzahl der Befehle → bestimmt durch ISA & Compiler
|
||||
|
||||
- **Cycles Per Instruction (CPI):** Anzahl der Takte pro Befehl → bestimmt durch Hardware
|
||||
|
||||
- **Cycle Time (CT):** Dauer eines Takts → bestimmt durch Hardware
|
||||
|
||||
- **CPU-Zeit Formel:**
|
||||
|
||||
- **Instruction Count (IC):** Anzahl der Befehle → bestimmt durch ISA & Compiler\
|
||||
- **Cycles Per Instruction (CPI):** Anzahl der Takte pro Befehl → bestimmt durch Hardware\
|
||||
- **Cycle Time (CT):** Dauer eines Takts → bestimmt durch Hardware\
|
||||
- **CPU-Zeit Formel:**\
|
||||
CPU-Zeit=IC×CPI×CTCPU\text{-Zeit} = IC \times CPI \times CT
|
||||
|
||||
---
|
||||
|
||||
### 🔁 Ablauf der Instruktionsausführung
|
||||
|
||||
1. **Fetch:** Befehl aus Speicher laden (PC → Instruction Memory)
|
||||
|
||||
2. **Decode:** Register lesen, Operanden bestimmen
|
||||
|
||||
3. **Execute:** ALU berechnet Ergebnis oder Adresse
|
||||
|
||||
4. **Memory Access:** Speicherzugriff bei Load/Store
|
||||
|
||||
5. **Write Back:** Ergebnis ins Register zurückschreiben
|
||||
|
||||
6. **PC Update:** PC + 4 oder Sprungadresse
|
||||
|
||||
1. **Fetch:** Befehl aus Speicher laden (PC → Instruction Memory)\
|
||||
2. **Decode:** Register lesen, Operanden bestimmen\
|
||||
3. **Execute:** ALU berechnet Ergebnis oder Adresse\
|
||||
4. **Memory Access:** Speicherzugriff bei Load/Store\
|
||||
5. **Write Back:** Ergebnis ins Register zurückschreiben\
|
||||
6. **PC Update:** PC + 4 oder Sprungadresse\
|
||||
|
||||
---
|
||||
|
||||
@@ -35,10 +25,8 @@
|
||||
|
||||
#### 📦 Register
|
||||
|
||||
- 32 Register: z. B. `$s0-$s7`, `$t0-$t9`, `$zero` (immer 0), `$sp`, `$ra`
|
||||
|
||||
- Daten müssen in Register geladen werden, bevor ALU-Operationen möglich sind.
|
||||
|
||||
- 32 Register: z. B. `$s0-$s7`, `$t0-$t9`, `$zero` (immer 0), `$sp`, `$ra`\
|
||||
- Daten müssen in Register geladen werden, bevor ALU-Operationen möglich sind.\
|
||||
|
||||
#### 🛠️ Befehle (Beispiele)
|
||||
|
||||
@@ -56,47 +44,33 @@
|
||||
|
||||
#### 🛠️ Bausteine
|
||||
|
||||
- **Register:** Speicherung von Zwischenwerten
|
||||
|
||||
- **ALU (Arithmetic Logic Unit):** führt Berechnungen durch
|
||||
|
||||
- **Multiplexer (MUX):** entscheidet zwischen Eingangsquellen
|
||||
|
||||
- **Memory:** Instruktions- & Datenspeicher
|
||||
|
||||
- **Control Unit:** steuert Datenfluss und Operationen
|
||||
|
||||
- **Register:** Speicherung von Zwischenwerten\
|
||||
- **ALU (Arithmetic Logic Unit):** führt Berechnungen durch\
|
||||
- **Multiplexer (MUX):** entscheidet zwischen Eingangsquellen\
|
||||
- **Memory:** Instruktions- & Datenspeicher\
|
||||
- **Control Unit:** steuert Datenfluss und Operationen\
|
||||
|
||||
#### 📐 Schrittweise Entwicklung
|
||||
|
||||
- **R-Typ Befehle:** nur Registeroperationen
|
||||
|
||||
- **Load/Store:** ALU berechnet Adresse, Speicherzugriff
|
||||
|
||||
- **Branch:** ALU-Vergleich → PC-Update bei Bedingung
|
||||
|
||||
- **R-Typ Befehle:** nur Registeroperationen\
|
||||
- **Load/Store:** ALU berechnet Adresse, Speicherzugriff\
|
||||
- **Branch:** ALU-Vergleich → PC-Update bei Bedingung\
|
||||
|
||||
---
|
||||
|
||||
### 🔄 Taktgesteuerte Logik
|
||||
|
||||
- **Kombinatorische Elemente:** berechnen Ausgaben ohne Zustände
|
||||
|
||||
- **Sequenzielle Elemente (Register):** speichern Zustände, aktualisieren mit **Taktflanke**
|
||||
|
||||
- **Clocking Methodology:** Längste Verzögerung bestimmt Taktperiode.
|
||||
|
||||
- **Kombinatorische Elemente:** berechnen Ausgaben ohne Zustände\
|
||||
- **Sequenzielle Elemente (Register):** speichern Zustände, aktualisieren mit **Taktflanke**\
|
||||
- **Clocking Methodology:** Längste Verzögerung bestimmt Taktperiode.\
|
||||
|
||||
---
|
||||
|
||||
### 🔥 Besonderheiten MIPS
|
||||
|
||||
- **Load/Store Architektur:** Nur Load/Store greifen auf Speicher zu; alle anderen Befehle arbeiten mit Registern.
|
||||
|
||||
- **Einheitliche Befehlslänge (32 Bit):** vereinfacht Dekodierung.
|
||||
|
||||
- **Pipelining-Fähigkeit:** parallele Bearbeitung mehrerer Instruktionen möglich (kommt in Teil 2).
|
||||
|
||||
- **Load/Store Architektur:** Nur Load/Store greifen auf Speicher zu; alle anderen Befehle arbeiten mit Registern.\
|
||||
- **Einheitliche Befehlslänge (32 Bit):** vereinfacht Dekodierung.\
|
||||
- **Pipelining-Fähigkeit:** parallele Bearbeitung mehrerer Instruktionen möglich (kommt in Teil 2).\
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user