## 📘 **Zusammenfassung: V8b Speicheranbindung – Computerarchitektur**

---

### 🚨 Bottleneck: Speicher

- CPU-Leistung steigt schneller als Speicherleistung → **Memory Wall**
    
- Lösung: **Speicherhierarchie**
    
    - Nutzt das **Prinzip der Lokalität**
        
        - **Zeitliche Lokalität:** kürzlich verwendete Daten werden bald wieder benötigt
            
        - **Räumliche Lokalität:** benachbarte Daten werden bald benötigt
            

---

### 🏛 Speicherhierarchie

|Ebene|Beispiel|Größe|Geschwindigkeit|
|---|---|---|---|
|Register|CPU-Register|Bytes|ns|
|L1-Cache|SRAM|KB|~1 ns|
|L2/L3-Cache|SRAM|MB|~10 ns|
|Hauptspeicher|DRAM|GB|~100 ns|
|Sekundärspeicher|SSD/HDD|TB|ms|

- **Hit:** Zugriff erfolgreich in oberer Ebene
    
- **Miss:** Daten müssen aus unterer Ebene geholt werden (Miss Penalty)
    
- **Miss Ratio = 1 – Hit Ratio**
    

---

### 💾 Speichertechnologien

- **SRAM:** schnell, teuer, klein → Caches
    
- **DRAM:** langsamer, günstiger, groß → Hauptspeicher
    
    - **DDR, QDR:** Transfers auf steigender & fallender Flanke
        
- **Flash (EEPROM):** nicht-flüchtig, schneller als HDD, aber begrenzte Lebensdauer
    
    - **NOR-Flash:** Random Access, Embedded Systems
        
    - **NAND-Flash:** Blockweise Zugriff, USB, SSDs
        
- **Magnetische Platten (HDD):** große Kapazität, langsamer Zugriff
    

---

### 📦 Cache-Grundlagen

#### 📌 Organisation

- **Direct-Mapped Cache:** 1 Block pro Adresse
    
- **Set-Associative Cache:** mehrere mögliche Plätze pro Block
    
- **Fully-Associative Cache:** jeder Block kann überall hin
    

#### 📌 Komponenten

- **Tag:** identifiziert Block
    
- **Valid-Bit:** zeigt an, ob Block gültig ist
    
- **Replacement Policies:**
    
    - LRU (Least Recently Used)
        
    - Random
        

#### 📌 Schreibstrategien

- **Write-Through:** gleichzeitiges Schreiben in Cache & Speicher
    
    - - Einfach
            
    - – Langsam, Lösung: Write Buffer
        
- **Write-Back:** Schreiben nur bei Block-Verdrängung
    
    - - Schnell
            
    - – Komplexer (dirty-bit notwendig)
        

---

### 🏎 Cache-Performance

- **Miss Types:**
    
    - **Compulsory:** erste Referenz
        
    - **Capacity:** Cache zu klein
        
    - **Conflict:** Set-Associative Caches
        
- **Formeln:**
    
    - **AMAT (Average Memory Access Time):**
        
        AMAT=HitTime+MissRate×MissPenaltyAMAT = HitTime + MissRate × MissPenalty
    - **Effective CPI:**
        
        CPIeff=CPIbase+MemoryStallsCPI_{eff} = CPI_{base} + MemoryStalls

---

### 🔥 Optimierungen

#### 🪜 Multilevel-Caches

- **L1:** klein & schnell, Fokus auf kurze Zugriffszeit
    
- **L2/L3:** größer, Fokus auf niedrige Missrate
    

#### 📐 Cache Blocking (Beispiel DGEMM)

- Matrix-Multiplikation optimiert durch Blockierung → bessere Cache-Nutzung
    
- Vermeidet Cache-Pollution & reduziert Misses
    

```c
#define BLOCKSIZE 32
for (sj = 0; sj < n; sj += BLOCKSIZE)
  for (si = 0; si < n; si += BLOCKSIZE)
    for (sk = 0; sk < n; sk += BLOCKSIZE)
      do_block(n, si, sj, sk, A, B, C);
```

#### 🚀 Software-Optimierung

- Compiler & Algorithmus-Anpassung nutzen Lokalität besser aus
    

---

### 📝 Für die Klausur merken

✅ Prinzip der Lokalität (zeitlich & räumlich)  
✅ Speicherhierarchie & typische Zugriffszeiten  
✅ Direct-Mapped vs. Set-Associative vs. Fully-Associative  
✅ Write-Through vs. Write-Back + Vor- & Nachteile  
✅ AMAT-Formel und Cache-Performance-Berechnungen  
✅ Cache Blocking bei DGEMM (Grundidee)

---