Speicherhierarchie und Leistung

Warum wird es tendenziell schneller, die beiden obigen Schleifen zu einer zusammenzufassen (Loop Fusion), wenn N groß ist?

for (i = 0; i < N; i++) a[i] = b[i] * 2;
for (i = 0; i < N; i++) c[i] = a[i] + 1;
  1. AWeil Multiplikation und Addition in einer Anweisung zusammengefasst werden und sich die Rechenmenge halbiert
  2. BWeil a[i] direkt nach dem Schreiben verwendet werden kann und das Array a nicht erneut aus dem Hauptspeicher gelesen werden muss
  3. CWeil sich die Zahl der Schleifendurchläufe von N auf 2N erhöht und die Pipeline leichter gefüllt wird
Antwort und Erläuterung anzeigen

Antwort: B. Weil a[i] direkt nach dem Schreiben verwendet werden kann und das Array a nicht erneut aus dem Hauptspeicher gelesen werden muss

Bleiben es getrennte Schleifen und ist das Array a, das in der ersten Schleife geschrieben wird, so groß, dass es nicht in den Cache passt, treten in der zweiten Schleife beim erneuten Lesen vom Anfang her Misses auf. Bei Fusion wird a[i] direkt nach dem Schreiben im selben Durchlauf verwendet, sodass die Daten wiederverwendet werden, solange sie in Cache oder Register liegen, und der Verkehr zum Hauptspeicher sinkt. Die Rechenmenge ändert sich nicht, und die Zahl der Schleifendurchläufe sinkt von 2N auf N.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Speicherhierarchie und Leistung

  1. Welche Kombination aus Grund und typischer Gegenmaßnahme ist richtig, warum beim Transponieren einer großen Matrix (b[j][i] = a[i][j]) leicht viele Cache-Misses auftreten?
  2. Welche Eigenschaft gilt in der Speicherhierarchie eines üblichen Computers umso mehr, je höher die Ebene liegt (je näher an der CPU)?
  3. Warum müssen Caches bei der Leistungsbewertung nicht nur nach der Miss-Rate, sondern nach der mittleren Speicherzugriffszeit verglichen werden?
  4. Werden zwei Programme abwechselnd auf demselben Kern ausgeführt, können sie langsamer sein als bei einzelner Ausführung. Welche Erklärung aus Sicht des Caches ist am besten geeignet?
  5. Welches ist das am besten geeignete Beispiel für zeitliche Lokalität?

Vergleiche zu diesem Thema