Comment calculer le nombre de balise, index et bits de décalage des différents caches?

cs.stackexchange https://cs.stackexchange.com/questions/13356

  •  16-10-2019
  •  | 
  •  

Question

Plus précisément:

1) A cache directement mappée avec 4096 lignes / blocs où chaque bloc dispose de 8 mots de 32 bits. Combien de bits sont nécessaires pour les champs d'étiquette et de l'index, en supposant une adresse de 32 bits?

2) Même question que 1) mais pour totalement cache associatif ?

moi si je me trompe, est-il:

bits de tag = longueur de bit d'adresse - exposant de l'indice - exposant de décalage?

[L'offset = 3 en raison de 2 ^ 3 = 8 ou est-il de 5 2 ^ 5 = 32?]

Était-ce utile?

La solution

La question est dit pas tout à fait responsable. mot a été défini comme 32 bits. Nous devons savoir si le système est « octet adressable » (vous pouvez accéder à un morceau de 8 bits de données) ou « mot-adressable » (le plus petit morceau accessible est de 32 bits) ou même « demi-mot adressable » (la le plus petit morceau de données que vous pouvez accéder à est de 16 bits.) vous devez savoir cela pour savoir ce que le bit d'ordre inférieur d'une adresse vous dit.

Ensuite, vous travaillez à partir du haut en bas. Supposons que le système est octet adressable.

Ensuite, chaque cache bloc contient 8 mots * (4 octets / mot) = 32 = 2 5 octets, de sorte que le décalage 5 les bits.

index pour un cache à correspondance directe est le nombre de blocs dans le cache (12 bits dans ce cas, parce que 2 12 = 4096).

Alors balise est tous les bits qui sont laissés, comme vous l'avez indiqué.

Comme le cache devient plus associative mais reste la même taille il y a moins de bits d'index et plus de bits de tag.

Autres conseils

Your formula for tag bits is correct.

Whether the offset is three bits or five bits depends on whether the processor uses byte (octet) addressing or word addressing. Outside of DSPs, almost all recent processors use byte addressing, so it would be safe to assume byte addressing (and five offset bits).

I'm learning for the final exam of subject Computer System, I googled for a while and found this question. And this part of the question is confuse : "in which each block has 8 32-bit words". A word is 4 bytes (or 32 bits) so the question just need to be "...in which each block has 8 words"

The answer is - Each block is 32 bytes (8 words), so we need 5 offset bits to determine which byte in each block - Direct-mapped => number of sets = number of blocks = 4096 => we need 12 index bits to determine which set

=> tag bit = 32 - 12 - 5 = 15

For fully associative, the number of set is 1 => no index bit => tag bit = 32 - 0 - 5 = 27

There are no index bits in a fully associative cache. The index bits are used to uniquely identify which set the block belongs. In a fully associative cache, all blocks are essentially part of the same set.

in full associate mapping index is 0 b/s like you say set = 1 so index=log of 1 in base 2 =0 set offset =log of block size of byte base 2 so use 8=2^3 or 32=2^5 tag=32-0-5=27 for direct index=2^12=12 offset=0 bit tag= 32-12-0=20

Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange
scroll top