2017-07-08 4 views
-1

J'ai un problème avec l'exercice:Cache direct mappé, hit or miss?

Cache DM. Taille du cache - 64 Ko, taille de ligne unique - 64B. Après allumer, procesor a lu les adresses:

  • 0x00000
  • 0x0003C
  • 0x0013C
  • 0xF0038
  • 0x00015
  • 0x00130

Je dois dire que, quand sera miss, et quand sera frappé. J'ai trouvé quelques exemples d'exercices similaires à cela, mais je ne sais pas quoi faire avec les adresses hexadécimales. Je sais que: Cache address = Memory Address **mod** Cache Size, mais je ne sais pas comment je peux résoudre cet exercice. Merci d'avance.

Répondre

0

Une façon de répondre à ces questions est de trouver les tag, index et les bits offset de la conception de cache donnée. Puis mapper les modèles d'accès d'adresse dans la balise correspondante, index pour obtenir les informations hit/miss.

À titre d'exemple considérer l'accès à 0xF0038 adresse:

Cache Size = 64kB 
Line Size = 64B 
Offset bits = log2(64) = 6 
Index bits = log2(6kB/64B) = 10 
Considering 20-bit address line 
Tag bits = 20 - 10 - 6 = 4 
Address accessed - 0xF0038 
Converting into bits - 
1111_0000_0000_0011_1000 
Tag - 1111 
Index - 0000_0000_00 
Offset - 11_1000 

Maintenant, vous savez que l'accès est à l'index 0x0 avec étiquette comme 0xF. En fonction des accès précédents, il s'agirait d'un échec ou d'un hit. De même, vous pouvez le faire pour toutes les autres adresses.