Pour commencer, le premier cache a 16 blocs d'un mot. A titre d'exemple, j'utiliserai la référence de mémoire 0x03. L'index a 4 bits (0011). Il est clair que les bits sont égaux à 3mod16 (0011 = 0x03 = 3). Cependant, je suis confus en utilisant cette équation mod pour déterminer l'emplacement du bloc dans un cache avec des bits de décalage.Comment mapper une adresse de mémoire à un bloc lorsqu'il y a un décalage dans un cache mappé directement?
Le deuxième cache a une taille totale de huit blocs de deux mots. Cela signifie qu'il y a 1 bit de décalage. Comme il y a maintenant 8 blocs, il n'y a que 3 bits d'index. A titre d'exemple, je vais prendre la même référence mémoire de 0x03. Cependant, j'ai de la difficulté à mapper le bloc en utilisant l'équation de mod que j'ai utilisée auparavant. J'essaie 3mod8 qui est 3, mais dans ce cas, puisqu'il y a un bit de décalage, les bits d'index sont 001. 001 n'est pas égal à 3 alors qu'est-ce que j'ai fait de mal? Est-ce que mod ne fonctionne pas quand il y a des bits de décalage? J'avais l'impression que l'équation modale serait toujours égale aux bits d'index.
Vous devez modifier l'index, pas l'adresse complète. –
Je suis un peu confus. Je pensais que l'index était le mappage au bloc: S –
Je voulais dire que vous devez modifier les bits au-dessus du décalage pour obtenir l'index. (c'est-à-dire pour retirer les bits d'étiquette). Le ou les bits de décalage n'ont aucun effet sur la ligne à laquelle une adresse est mappée dans le cache, de sorte qu'ils ne font pas partie du calcul. –