Untitled Deck Flashcards
Was ist Simultaneous Multithreading und warum wenden sich Hersteller davon ab? (02_Cache_02)
SMT teilt einen physischen CPU-Kern in zwei logische Kerne auf. Statuskomponenten (Register etc.) werden dupliziert, andere Ressourcen (Caches, Execution Units) dynamisch geteilt. Hersteller wenden sich ab weil:
- Neue Technologien ähnliche Performance bieten
- SMT anfälliger für Seitenkanalangriffe ist
- Alternative Technologien bessere Sicherheit bieten
Beschreiben Sie die TLB-Hierarchie in modernen Intel-Prozessoren. (02_Cache_02)
Dreistufige Hierarchie:
1. iTLB: pro logischem Kern für L1 Instruction Cache
2. dTLB: pro physischem Kern für L1 Data Cache
3. sTLB: pro physischem Kern für L2 Cache
Eigenschaften:
- Set Associative Caches
- Virtuell indiziert, virtuell getaggt (VIVT)
- Werden bei Prozesswechsel invalidiert (außer PCID-markierte)
- Verwenden komplexe Adressierungsfunktionen
Erklären Sie die Komponenten und Funktionsweise der Branch Prediction Unit. (02_Cache_02)
- Branch Target Buffer (BTB):
- Cache für Sprungzieladressen
- Zugriff über virtuelle Adressen - Pattern History Table (PHT):
- Speichert Verlauf der Sprungentscheidungen
- Verwendet 2-Bit Saturating Counter - Global History Register (GHR):
- LIFO für Sprungentscheidungen
- Verbessert Vorhersagegenauigkeit
Wie funktioniert Prefetching und welche Arten gibt es? (02_Cache_02)
Prefetching ist eine Software-gesteuerte Cache-Optimierung mit verschiedenen Befehlen:
1. PREFETCHT0: lädt in alle Cache-Ebenen
2. PREFETCHT1: lädt in L2 Cache und höher
3. PREFETCHT2: lädt in L3 Cache und höher
4. PREFETCHNTA: lädt in nicht-temporäre Cache-Struktur
Besonderheiten:
- Löst keine Exceptions aus
- Zugriffszeiten teilweise vorhersagbar
- Nutzbar für Seitenkanal-Angriffe
Beschreiben Sie die Struktur und Funktionsweise des Last Level Cache (LLC). (02_Cache_02)
Der LLC ist:
- Gemeinsamer L3-Cache für alle CPU-Kerne
- Set Associative Cache
- Physisch indiziert und getaggt
- Inklusiv (enthält L1/L2 Inhalte)
- In Slices aufgeteilt (je Kern ein Slice)
- Verbunden durch Ringbus
- Verwendet Complex L3-Addressing Function
- Wird durch clflush invalidiert
Wie lassen sich Cache-Hits von Cache-Misses unterscheiden und welche Werte sind typisch? (02_Cache_02)
Unterscheidung durch Zeitmessung:
1. Typische Werte:
- Cache-Hit: ~74 Zyklen
- Cache-Miss: ~425 Zyklen
- Schwellwert: ~200 Zyklen
2. Benötigt:
- Präzise Zeitmessung (rdtsc)
- Mehrfache Messungen
- Statistische Auswertung
Was sind die Voraussetzungen für einen erfolgreichen Flush+Reload Angriff? (02_Cache_02)
- System:
- Sender und Empfänger auf gleichem Gerät
- Keine besonderen Rechte nötig
- Prozessisolation vorhanden - Speicher:
- Dynamische Bibliotheken via Shared Memory
- Gemeinsamer Cacheeintrag zugänglich - Technisch:
- Präzise Zeitmessung möglich
- Cache-Invalidierung verfügbar
Wie funktioniert die Synchronisation zwischen Sender und Empfänger bei einem Cache-basierten Seitenkanal? (02_Cache_02)
- Zeitfenster:
- Festes Intervall (typisch 100µs)
- Zyklen-basierte Ausrichtung
- Fehlertoleranz einplanen - Implementation:
- Grobe Synchronisation mit nanosleep
- Feinabstimmung mit rdtsc
- Behandlung von Jitter - Fehlerbehebung:
- Resynchronisation
- Mustererkennung
- Fehlerkorrektur
Welche Optimierungen sind für einen zuverlässigen Cache-basierten Seitenkanal notwendig? (02_Cache_02)
- Fehlerkorrektur:
- Mehrfachmessungen
- Mehrheitsentscheidung
- Konfidenzberechnung - Rauschreduktion:
- CPU-Affinität setzen
- Prioritätsanpassung
- Cache-Line Vorladung - Umgebung:
- Prozessisolierung
- CPU-Frequenzstabilität
- Interrupt-Behandlung
Wie kann man die Performance eines Cache-basierten Seitenkanals messen und analysieren? (02_Cache_02)
- Statistiken:
- Übertragene Bits
- Fehleranzahl
- Durchschnittliche Latenz
- Bandbreitenberechnung - Fehleranalyse:
- Bitfehlerrate
- Signal-Rausch-Verhältnis
- Kanalkapazität - Erkennung:
- Cache-Miss-Überwachung
- Performance-Counter
- Anomalie-Erkennung