Speicherhierarchie und Leistung

Was ist der Hauptzweck von Loop Blocking (Tiling), das z. B. beim Matrixprodukt verwendet wird?

  1. AIn kleinen Blöcken zu rechnen, die in den Cache passen, und so die Wiederverwendung von Daten zu erhöhen
  2. BDie Zahl der Schleifendurchläufe zu verringern und weniger Sprunganweisungen am Schleifenende auszuführen
  3. CDie Gesamtmenge des verwendeten Speichers zu halbieren, ohne die Berechnungsreihenfolge zu ändern
Antwort und Erläuterung anzeigen

Antwort: A. In kleinen Blöcken zu rechnen, die in den Cache passen, und so die Wiederverwendung von Daten zu erhöhen

Wird ein Produkt großer Matrizen unverändert berechnet, werden einmal geladene Elemente aus dem Cache verdrängt, bevor sie erneut verwendet werden, und müssen wiederholt aus dem Hauptspeicher nachgeladen werden. Beim Loop Blocking wird die Matrix in kleine Blöcke zerlegt, die in den Cache passen, und innerhalb der Blöcke gerechnet; so werden geladene Daten mehrfach wiederverwendet und Kapazitäts-Misses stark verringert. Sprunganweisungen zu verringern ist der Zweck von Loop Unrolling, und die Gesamtmenge des verwendeten Speichers ändert sich nicht.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Speicherhierarchie und Leistung

  1. Warum wird die oben gezeigte Summierung nur der x-Koordinaten tendenziell schneller, wenn sie auf eine Struktur von Arrays umgeschrieben wird (jede Komponente in einem eigenen Array)?
  2. Was ist der Hauptvorteil eines L1-Caches, der in einen Befehlscache (I-Cache) und einen Datencache (D-Cache) aufgeteilt ist?
  3. In einem System mit 4 KB Seitengröße und 64 Byte Zeilengröße soll der L1-Cache virtuell indiziert und physisch getaggt (VIPT) sein, wobei Index und Offset nur aus Bits innerhalb der Seite bestehen sollen. Wie groß darf der Cache bei 8-fach Satzassoziativität höchstens sein?
  4. Was ist der Hauptgrund, weshalb bei L1-Caches häufig das VIPT-Verfahren (virtuell indiziert, physisch getaggt) verwendet wird?
  5. Wie viele Zyklen beträgt die mittlere Speicherzugriffszeit bei einer Cache-Trefferzeit von 2 Zyklen, einer Miss-Rate von 4 % und einer Miss-Penalty von 150 Zyklen?

Vergleiche zu diesem Thema