Hiérarchie mémoire

Dans la boucle ci-dessus, avec un int de 4 octets, des lignes de cache de 64 octets et un tableau absent du cache aligné sur une frontière de ligne, quel est le taux de défauts de la lecture du tableau en l’absence de préchargement ?

int a[1024];
for (i = 0; i < 1024; i++)
    sum += a[i];
  1. A12.5%
  2. B6.25%
  3. C100%
Afficher la réponse et l'explication

Réponse : B. 6.25%

Une ligne de 64 octets contient 64 ÷ 4 = 16 int. En lecture séquentielle, le premier élément de chaque ligne provoque un défaut et les 15 autres sont des succès ; le taux de défauts est donc 1 ÷ 16 = 6.25%. Pour 1024 éléments, on obtient 1024 ÷ 16 = 64 défauts. 12.5% correspond à l’hypothèse erronée de 8 éléments par ligne. 100% correspond à un accès qui n’utilise qu’un élément par ligne, par exemple une lecture tous les 16 éléments (tous les 64 octets).

S'entraîner sur ce thème Retour au thème

Autres questions sur Hiérarchie mémoire

  1. Quel est le but principal du blocage de boucles (tiling), utilisé notamment pour le produit de matrices ?
  2. Pourquoi le traitement ci-dessus, qui additionne uniquement les coordonnées x, devient-il généralement plus rapide une fois réécrit sous forme de structure de tableaux (chaque composante dans un tableau séparé) ?
  3. Quel est le principal avantage d’un cache L1 séparé en cache d’instructions (cache I) et cache de données (cache D) ?
  4. Dans un système à pages de 4 KB et lignes de 64 octets, le cache L1 est à index virtuel et étiquette physique (VIPT), et l’index et le déplacement doivent n’utiliser que des bits internes à la page. Avec une associativité à 8 voies, quelle est la capacité maximale du cache ?
  5. Pourquoi le schéma à index virtuel et étiquette physique (VIPT) est-il couramment utilisé pour les caches L1 ?

Comparatifs sur ce thème