Processor Microarchitecture and Performance

Dozent: Dr. Werner Haas

Beschreibung

Moderne Computersysteme verfügen über Hochleistungsprozessoren, die rechenintensive Anwendungen wie Video- und Audioverarbeitung, die Verarbeitung großer Datenmengen oder tiefe neuronale Netze ermöglichen. Die Ausschöpfung dieses Leistungspotenzials für moderne Anwendungen ist jedoch schwierig, da höhere Leistungsniveaus nur durch die Einführung zusätzlicher Komplexität in die Architektur von Computersystemen erreicht werden konnten – beispielsweise durch Multiprozessor- und Multicore-Systeme, mehrstufige Speicherhierarchien und Speichermodelle mit gelockerter Konsistenz.

Dieser Kurs vermittelt Einblicke in die architektonischen Details moderner Prozessorarchitekturen und deren Auswirkungen auf nicht-funktionale Eigenschaften. Während die Leistung das zentrale Thema des Kurses ist, werden auch weitere nicht-funktionale Eigenschaften wie Energieverbrauch und Sicherheit behandelt. Neben theoretischen Einblicken in moderne Merkmale der Prozessor- und Systemarchitektur befasst sich der Kurs auch mit der Interaktion von Software und Hardware sowie der Optimierung von Software für bestimmte architektonische Merkmale.

Themen

  1. Intro/Recap: stored program arch, ISA, abstraction, iron law of performance
  2. Simple pipelining: pipeline hazards, superscalar processing, exception handling
  3. Caches: direct mapped, set/fully associative, memory hierarchy
  4. Virtual memory: segmentation, paging, TLB, aliases/synonyms, VP/PP caches
  5. Out of order execution: register renaming, Tomasulo algorithm, memory disambiguation, load/store queues
  6. Branch prediction: branch history, branch targets
  7. Symmetric multiprocessing: sequential consistency, cache coherence protocols
  8. Virtualisation: processor modes, sensitive instructions, multi-level translation
  9. Side channels: cache state, timing sources, resource contention
  10. Transient execution attacks: Meltdown, Spectre, Retpoline