## 📘 **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) ---