Wat is Prefetching?

Gegevens die binnenkort waarschijnlijk nodig zijn al vóór de aanvraag in de cache laden. Er is een hardwaremethode waarbij de hardware regelmaat in de toegangen herkent en een softwaremethode waarbij dit met instructies wordt aangegeven.

Japanse benaming: プリフェッチ

“Prefetching” komt voor in 7 oefenvragen uit 2 onderwerpen, bijv. Geheugenhiërarchie en prestaties, DRAM.

Vakgebied: Geheugenhiërarchie en prestaties

Nu oefenen: vragen over Prefetching

Bij welke toegang is hardware-prefetching bijzonder effectief?

  1. AEen array met een vaste stap (stride) achtereenvolgens lezen
  2. BEen gekoppelde lijst element voor element vanaf het begin doorlopen
  3. CEen hashtabel met willekeurige sleutels raadplegen
Antwoord en toelichting tonen

Antwoord: A. Een array met een vaste stap (stride) achtereenvolgens lezen

Een hardware-prefetcher herkent regelmaat in de adressen van voorgaande toegangen (opeenvolgend of met vaste stap), voorspelt het volgende adres en leest dit vooraf in. Een array met vaste stride lezen is goed te voorspellen en levert een groot effect. Bij een gekoppelde lijst is het adres van het volgende element pas bekend nadat het huidige is gelezen, zodat er geen regelmaat is en voorspellen onmogelijk is. Ook raadplegingen van een hashtabel met willekeurige sleutels hebben geen regelmaat in de adressen, dus is het effect klein.

“Prefetching” in de toelichting

Vragen met “Prefetching” (7)

  1. Bij welke toegang is hardware-prefetching bijzonder effectief?
  2. In bovenstaande lus is een int 4 byte, een cacheregel 64 byte, staat de array niet in de cache en begint hij op een regelgrens. Wat is, zonder prefetching, de missratio bij het lezen van de array?
  3. Hoe heet de prestatiebeperking die ontstaat doordat verbetering van de geheugenbandbreedte en -latentie de prestatiewinst van de processor niet bijhoudt?
  4. Welke maatregel is effectief om cachemisses te verminderen die optreden bij de allereerste toegang van een programma tot bepaalde data?
  5. Welke uitspraak over de prefetch-afstand (hoe ver vooruit data worden gelezen) bij het invoegen van software-prefetchinstructies is juist?
  6. Hoeveel keer zo lang duurt een toegang tot het hoofdgeheugen (DRAM) ongeveer in vergelijking met een hit in de L1-cache? (Voor de CPU van een gangbare pc of server.)
  7. Waarom is het doorlopen van bovenstaande gekoppelde lijst doorgaans veel trager dan het sequentieel lezen van een array met evenveel elementen?

Verwante termen

Cacheregel (cache line) Memory wall HBM (high bandwidth memory) Compulsory miss Capaciteitsmiss (capacity miss) Conflictmiss (conflict miss) Direct-mapped cache Fully associative Gemiddelde geheugentoegangstijd (AMAT) Loop blocking (tiling)

Naar de woordenlijst