## 📘 **Zusammenfassung: V2 Architekturen – Computerarchitektur**

### 🔄 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    
    - > Resultierend: Geringerer Stromverbrauch    
- Aber: Miniaturisierung wird zunehmend teurer und schwieriger.

---

### 📊 Leistungsmessung von Computern

- **System-Benchmarks:** Cinebench, 3DMark, HPC Challenge
- **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: 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    
- Bus-System:
    - Bus-Takt meist langsamer als CPU-Takt    
    - Cache als schneller Zwischenspeicher    

---

### ⚙️ Aufbau von Computersystemen

#### 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    

#### 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.
- 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       |

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       |


---

### 📝 Für die Klausur merken

✅ Unterschiede der Architekturen (Stack, Akkumulator, Register-Memory, Load/Store)  
✅ RISC vs. CISC: Vor- und Nachteile + Beispiele  
✅ Endianness und Bedeutung bei Datentransfer  
✅ Moore’s Law und dessen Grenzen  
✅ Flaschenhals Speicherzugriff: Register > Cache > RAM > SSD > HDD
 