Speicherhierarchie und Leistung

Bei welchem Zugriff entfaltet Hardware-Prefetch besonders leicht seine Wirkung?

  1. AZugriff, bei dem ein Array der Reihe nach in festem Abstand (Stride) gelesen wird
  2. BZugriff, bei dem eine verkettete Liste vom Anfang an Element für Element durchlaufen wird
  3. CZugriff, bei dem eine Hashtabelle mit zufälligen Schlüsseln abgefragt wird
Antwort und Erläuterung anzeigen

Antwort: A. Zugriff, bei dem ein Array der Reihe nach in festem Abstand (Stride) gelesen wird

Hardware-Prefetcher erkennen Regelmäßigkeiten in den Adressen vorheriger Zugriffe (aufeinanderfolgend oder mit festem Abstand), sagen die nächsten Adressen voraus und laden sie vorab. Das Lesen eines Arrays mit festem Stride ist leicht vorhersagbar, und die Wirkung ist groß. Bei verketteten Listen ist die Adresse des nächsten Elements erst bekannt, wenn das aktuelle gelesen wurde; es gibt keine Regelmäßigkeit, und eine Vorhersage ist nicht möglich. Auch Hashtabellenzugriffe mit zufälligen Schlüsseln haben keine Regelmäßigkeit der Adressen, und die Wirkung ist gering.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Speicherhierarchie und Leistung

  1. Welche Aussage zur Frage, wie weit im Voraus Daten gelesen werden sollen (Prefetch-Distanz), ist richtig, wenn Software-Prefetch-Anweisungen eingefügt werden?
  2. In der obigen Schleife ist int 4 Byte groß und die Cache-Zeile 64 Byte; das Array liegt nicht im Cache, und sein Anfang ist an der Zeilengrenze ausgerichtet. Wie hoch ist die Miss-Rate beim Lesen des Arrays ohne Prefetch?
  3. Was ist der Hauptzweck von Loop Blocking (Tiling), das z. B. beim Matrixprodukt verwendet wird?
  4. 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)?
  5. Was ist der Hauptvorteil eines L1-Caches, der in einen Befehlscache (I-Cache) und einen Datencache (D-Cache) aufgeteilt ist?

Vergleiche zu diesem Thema