Geheugenhiërarchie en prestaties
Welke uitspraak over de prefetch-afstand (hoe ver vooruit data worden gelezen) bij het invoegen van software-prefetchinstructies is juist?
- AHoe korter de afstand, hoe beter; de prefetch direct vóór het lezen van het volgende element is optimaal
- BHoe langer de afstand, hoe beter; alle data die de lus gebruikt in één keer vooraf inlezen is optimaal
- CZowel te kort als te lang is niet goed; de afstand wordt bepaald uit de misstijd en de duur van één lusiteratie
Antwoord en toelichting tonen
Antwoord: C. Zowel te kort als te lang is niet goed; de afstand wordt bepaald uit de misstijd en de duur van één lusiteratie
Prefetching heeft geen zin als het inlezen uit het geheugen niet is voltooid voordat de data nodig zijn. Bij een te korte afstand komt de data te laat aan; bij een te lange afstand wordt ingelezen data verdrongen voordat deze wordt gebruikt, of vervuilt de cache. Als richtlijn wordt zoveel iteraties vooruit gelezen als de misstraf gedeeld door de uitvoeringstijd van één lusiteratie. Een prefetch vlak vóór gebruik verbergt de wachttijd niet, en alle data in één keer inlezen past niet in de cache.