Défaut de cache

Mémoire cache

Aujourd'hui (2007), les processeurs sont considérablement plus rapides que la mémoire centrale. Pour ne pas ralentir le processeur inutilement, les fabricants de processeurs comptent sur le phénomène de localité pour améliorer la situation. Si la probabilité est élevé que le processeur accède les même données plusieurs fois pendant un petit intervalle de temps, il est alors rentable d'introduire une mémoire cache (ou simplement un cache) pour stocker temporairement les données fréquemment accédées. Aujourd'hui (2007) un processeur accède toutes les données à partir du cache. Si les données ne sont pas dans le cache, il faut préalablement les transférer de la mémoire centrale au cache.

Pénalité d'un défaut de cache

Un défaut de cache se produit lorsque le processeur essaie d'accéder une donnée qui n'est pas dans le cache. Le flux de traitement des instructions doit alors être abandonné pour attendre le transfert des données vers le cache. La mémoire centrale est un ordre de grandeur plus lent que le cache, mais à cause d'un mécanisme appelé spéculation (à savoir que le processeur exécute de manière spéculative des instructions), lorsque le flux d'exécution des instructions est interrompu à cause d'un défaut de cache, il est probable qu'un grand nombre d'instructions partiellement exécutées doivent être abandonnées. La pénalité pour aller jusqu'à plusieurs centaines de cycles d'horloge.

Que faire pour éviter les défauts de cache

Pour éviter une fréquence élevé de défauts de cache, il faut choisir des algorithmes avec une localité élevé. Il faut par exemple éviter des algorithmes qui parcourent plusieurs fois un tableau entier dont la taille dépasse celle du cache, car chaque accès au tableau provoque alors un défaut de cache.