« Fonctionnement d'un ordinateur/Les mémoires cache » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 306 :
Certains chercheurs ont remarqué que pendant qu'une ligne de cache est en train de subir un défaut de cache, celle-ci reste inutilisée, et son contenu est destiné à être perdu une fois le défaut de cache résolu. Ils se sont dit que, plutôt que d'utiliser des MSHR séparés, il vaudrait mieux utiliser la ligne de cache pour stocker les informations sur les défaut de cache en attente dans cette ligne de cache. Pour éviter tout problème, il faut rajouter un bit dans les bits de contrôle de la ligne de cache, qui sert à indiquer que la ligne de cache est occupée : un défaut de cache a eu lieu dans cette ligne, et elle stocke donc des informations pour résoudre les défaut de cache.
 
==Contourner le cache (: le ''cache bypassing)''==
 
Dans certains cas, ilIl arrive que des données avec une faible localité soient chargées dans le cache inutilement. IlOr, il vaut mieux que ces données transitent directement entre le processeur et la mémoire, sans passer par l'intermédiaire du cache. Pour cela, le processeur peut fournir des instructions d'accès mémoire qui ne passent pas par le cache, à côté d'instructions normales. Mais il existe aussi des techniques matérielles, : c'est le cache qui s'occupe de détecterdétecte les données utiles à l'exécution. Cette méthode repose sur l'identification des instructions à l'origine des défauts de cache, le processeur accédant directement à la RAM quand une telle instruction est détectée.

Pour identifier ces instructions, le processeur dispose d'une mémoire, qui mémorise les program counters des instructions d'accès mémoire déjà rencontrées lors de l'exécution du programme. On appelle cette mémoire la '''table d’historique des défauts de lecture''' (load miss history table). À chaque nouvelle exécution d'une instruction d'accès mémoire, une entrée de cette mémoire est réservée pour cette l'instruction. Chaque adresse est couplée à un compteur de quelques bits, : ce compteurqui est incrémenté à chaque succès de cache, et décrémenté à chaque défaut de cache. À chaque fois que l'on exécute une instruction, son program counter est envoyé en entrée de la table d’historique des défauts de lecture. : siSi jamais l'instruction était déjà présente dans celle-ci, la valeur du compteur est récupérée, et le processeur vérifie celle-ci. Si elle tombe en dessous d'un certain seuil, c'est que l'instruction a commis trop de défauts de cache, et qu'il faut éviter de lui allouer du cache.
 
==Caches adressés par somme et hashés==