Plus précisément:
1) Un cache à mappage direct avec 4096 blocs / lignes dans lequel chaque bloc a 8 mots de 32 bits. Combien de bits sont nécessaires pour les champs de balise et d'index, en supposant une adresse 32 bits?
2) Même question que 1) mais pour un cache entièrement associatif ?
Corrigez-moi si je me trompe, est-ce:
bits de balise = longueur de bit d'adresse - exposant de l'index - exposant du décalage?
[Le décalage = 3 est-il dû à 2 ^ 3 = 8 ou est-il 5 à partir de 2 ^ 5 = 32?]
computer-architecture
cpu-cache
compski
la source
la source
Réponses:
La question telle qu'elle a été formulée ne répond pas tout à fait. Un mot a été défini comme étant de 32 bits. Nous devons savoir si le système est "adressable en octets" (vous pouvez accéder à un bloc de données de 8 bits) ou "adressable par mot" (le plus petit bloc accessible est de 32 bits) ou même "adressable en demi-mot" (le le plus petit bloc de données auquel vous pouvez accéder est de 16 bits.) Vous devez le savoir pour savoir ce que le bit de poids faible d'une adresse vous dit.
Ensuite, vous travaillez de bas en haut. Supposons que le système soit adressable en octets .
Ensuite, chaque bloc de cache contient 8 mots * (4 octets / mot) = 32 = 2 5 octets, donc le décalage est de 5 bits.
L' index pour un cache mappé direct est le nombre de blocs dans le cache (12 bits dans ce cas, car 2 12 = 4096).
Ensuite, la balise est tous les bits qui restent, comme vous l'avez indiqué.
Comme le cache devient plus associatif mais reste de la même taille, il y a moins de bits d'index et plus de bits d'étiquette.
la source
Votre formule pour les bits d'étiquette est correcte.
Que le décalage soit de trois bits ou de cinq bits dépend du fait que le processeur utilise l'adressage d'octets (octets) ou l'adressage de mots. En dehors des DSP, presque tous les processeurs récents utilisent l'adressage d'octets, il serait donc sûr de supposer l'adressage d'octets (et cinq bits de décalage).
la source
J'apprends pour l'examen final du sujet Computer System, j'ai googlé pendant un moment et trouvé cette question. Et cette partie de la question est confuse: "dans laquelle chaque bloc a 8 mots de 32 bits". Un mot fait 4 octets (ou 32 bits), il suffit donc que la question soit "... dans laquelle chaque bloc contient 8 mots"
La réponse est - chaque bloc est de 32 octets (8 mots), nous avons donc besoin de 5 bits de décalage pour déterminer quel octet dans chaque bloc - mappé directement => nombre d'ensembles = nombre de blocs = 4096 => nous avons besoin de 12 bits d'index pour déterminer quel ensemble
=> bit d'étiquette = 32 - 12 - 5 = 15
Pour une association complète, le nombre de jeux est 1 => pas de bit d'index => bit d'étiquette = 32 - 0 - 5 = 27
la source
Il n'y a pas de bits d'index dans un cache entièrement associatif. Les bits d'index sont utilisés pour identifier de manière unique à quel jeu appartient le bloc. Dans un cache entièrement associatif, tous les blocs font essentiellement partie du même ensemble.
la source
dans le mappage associé complet, l'index est 0 b / s comme vous le dites set = 1 donc index = log de 1 dans la base 2 = 0 set offset = log de la taille de bloc de la base d'octets 2 donc utilisez 8 = 2 ^ 3 ou 32 = 2 ^ 5 balises = 32-0-5 = 27 pour index direct = 2 ^ 12 = 12 offset = balise 0 bit = 32-12-0 = 20
la source