Geheugenhiërarchie en prestaties

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.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Geheugenhiërarchie en prestaties

  1. Welke uitspraak over de prefetch-afstand (hoe ver vooruit data worden gelezen) bij het invoegen van software-prefetchinstructies is juist?
  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. Wat is het belangrijkste doel van loop blocking (tiling), zoals gebruikt bij matrixvermenigvuldiging?
  4. Waarom wordt een bewerking die alleen de x-coördinaten optelt vaak sneller wanneer een array van structuren wordt omgeschreven tot een structuur van arrays (elke component in een eigen array)?
  5. Wat is het belangrijkste voordeel van een gesplitste L1-cache met aparte caches voor instructies (I-cache) en data (D-cache)?

Vergelijkingen bij dit onderwerp