TI2/Rechnerarchitektur-Tutorium, 16.02.2017

Themenüberblick

1. Einführung

  • von-Neumann-Architektur
  • Harvard-Architektur
  • Idee der Parallelität
  • Benchmarks

2. Datenrepräsentation & Arithmetik

  • Dual-/Binärsystem
  • Umwandlung zwischen Zahlsystemen verschiedener Basen
    • Euklidischer Algorithmus
    • Horner-Schema
  • Negative Zahlen: B+V, Einerkomplement, Zweierkomplement, Offset-/Exzess-Darstellung
  • Fest- vs. Gleitkommazahlen

2. Datenrepräsentation & Arithmetik II: Gleitkommazahlen

  • Allgemeine Idee:
    • Normalisierung
    • Komponenten: VZ, Charakteristik, Mantisse
    • Darstellbarer Zahlenbereich
    • maxreal, minreal, smallreal
    • Ungenauigkeiten
    • Mathematische Gesetzen gelten i.d.R. nicht
  • IEEE 754
    • 32- und 64-bit-Darstellungen
    • Aufteilung der Bits: 1/8/23 bzw. 1/11/52
    • Verschiebung: 2n − 1 − 1
    • Normalisierung: 1, …
    • Spezialfälle der Charakteristik:
      • 0…0: Denormalisierte Zahlen, Exponent: 1 − (2n − 1 − 1)
      • 1…1, Mantisse =0: Unendlich
      • 1…1, Mantisse ≠0: NaN

2. Datenrepräsentation & Arithmetik III

  • Runden:
    • Round to nearest
    • Konflikt: Round to even
    • Prüfstellen: Guard g, Round r und Sticky s
  • Addiererschaltung

3. Microarchitektur

  • Bestandteile einer CPU:
    • Steuerwerk
    • Rechenwerk: ALU, Statusregister
    • Register: General-Purpose- und Spezialregister
    • (Hardwareunterstützung eines Stacks)
    • Adresswerk
    • Systembus, Schnittstelle nach „außen“
    • Interner Bus
  • Klassifikation nach Flynn: SISD, SIMD, MIMD, (MISD)

3. Microarchitektur II: Pipelining

  • Aufbau einer z.B. 5-stufigen Pipeline
  • Pipeline-Hazards:
    • Data hazard
      • Datenabhängigkeiten
      • Reordering, Forwarding, Shortcuts
    • Structural Hazard
      • Mehrfachzugriff
      • Mehr/bessere Hardware
    • Control Hazard
      • Sprünge
      • Flushing
      • Sprungvorhersage
  • Vektor-Pipeline / Superskalara Pipeline

3. Microarchitektur II: Sprungvorhersage

  • Branch Target Buffer (BTB)
  • Dynamische vs. Statische Sprungvorhersage
  • 1Bit- vs. 2Bit-Vorhersage-Automaten
  • Hysterese vs. Sättigung (Saturation)
  • 1 Prediktor pro Sprungbefehl
  • Predicated Instructions / Bedingte Befehle

4. ISA und Assembler

  • CISC vs. RISC
  • Funktionsaufrufe
    • Rücksprungadresse sichern
  • Interrupts
    • ISR, IVT
    • Mehrere Interrupt-Quellen:
      • Polling
      • Daisy-Chain
  • Compiler vs. Assembler

5. Speicher

  • Speicherhierarchie
  • Zusammenhang Adressbusbreite und maximale Speichergröße

5. Speicher II: Caches

  • Lokalitätseigenschaften
  • Funktionsweise
    • Verschiedene Möglichkeiten beim Schreiben
  • Konsistenzprobleme
  • Aufbau
  • Blöcke / Sätze / Assoziativität:
    • Voll-assoziativ
    • Direct-mapped
    • n-way-set
  • Verdrängungsstrategien

5. Speicher III: Virtueller Speicher

  • Abbildung virtueller/logischer in physikalische Adressen
  • MMU
  • Paging:
    • Aufteilung in gleich große Blöcke (einige Byte bis wenige Kilobyte)
    • Virtuelle Blöcke können überall im physikalischen Speicher abgelegt werden
  • Segmentierung:
    • Speicherbereiche für bestimmte Aufgabe
    • Verschieden groß
  • Externe vs. interne Fragmentierung
  • Zusammenspiel Cache und virtueller Speicher

Konkrete Fragen

Caches

  • Würden Sie ein Cache mit physikalischen oder virtuellen Adressen organisieren? Begründen Sie Ihre Antwort.

  • Erklären Sie warum i.d.R. Cache-Koheränz und keine Cache-Konsistenz angestrebt wird.

  • Warum ist LIFO als Verdrängungsstrategie für Caches i.d.R. ungeeignet?

Caches II

Sie haben auf einem 64-Bit System einen Cache mit 16 KiB Speicher. Jede Cacheline hält 64 Byte. Wie viele Bits entfallen jeweils auf Tag, Index und Offset, wenn Sie ihren Cache wie folgt organisieren?

  • Direct Mapped
  • 4-way-set
  • 16-way-set
  • fully associative