Speicherhierarchie und Leistung
Welche Aussage zur Frage, wie weit im Voraus Daten gelesen werden sollen (Prefetch-Distanz), ist richtig, wenn Software-Prefetch-Anweisungen eingefügt werden?
- AJe kürzer die Distanz, desto besser; am besten wird unmittelbar vor dem Lesen des nächsten Elements eingefügt
- BJe länger die Distanz, desto besser; am besten werden gleich zu Beginn alle in der Schleife verwendeten Daten gelesen
- CWeder zu kurz noch zu lang ist gut; sie wird aus Miss-Zeit und Zeit für einen Schleifendurchlauf bestimmt
Antwort und Erläuterung anzeigen
Antwort: C. Weder zu kurz noch zu lang ist gut; sie wird aus Miss-Zeit und Zeit für einen Schleifendurchlauf bestimmt
Prefetch ist sinnlos, wenn das Laden aus dem Speicher nicht abgeschlossen ist, bis die Daten gebraucht werden. Ist die Distanz zu kurz, kommen die Daten nicht rechtzeitig an; ist sie zu lang, werden die in den Cache gelangten Daten verdrängt, bevor sie genutzt werden, oder verschmutzen den Cache. Als Richtwert gilt, um so viele Durchläufe vorauszulesen, wie sich ergibt, wenn die Miss-Penalty durch die Ausführungszeit eines Schleifendurchlaufs geteilt wird. Wird nur unmittelbar davor eingefügt, lässt sich die Wartezeit nicht verbergen, und werden alle Daten gebündelt gelesen, passen sie nicht in den Cache.