GATE | Sudo GATE 2020 Mock I (27 December 2019) | Question 42

A computer system uses 16-bit memory addresses. It has a 2K-byte cache organized in a direct-mapped manner with 64 bytes per cache block. Assume that the size of each memory word is 1 byte.

When a program is executed, the processor reads data sequentially from the following word addresses:

128, 144, 2176, 2180, 128, 2176 

All the above addresses are shown in decimal values. Assume that the cache is initially empty. The cache hits ratio occur for for above given addresses is __________ .
(A) 0.333
(B) 0.666
(C) 0.353
(D) 0.535


Answer: (A)

Explanation: First, find word, block and tag size:
Block size = 64 bytes = 26 bytes = 26 words (since 1 word = 1 byte)
Therefore, Number of bits in the Word field = 6

Cache size = 2K-byte = 211 bytes
Number of cache blocks = Cache size / Block size = 211/26 = 25
Therefore, Number of bits in the Block field = 5
Total number of address bits = 16
Therefore, Number of bits in the Tag field = 16 – 6 – 5 = 5
For a given 16-bit address, the 5 most significant bits, represent the Tag, the next 5 bits represent the Block, and the 6 least significant bits represent the Word.

Now, check cache hit or miss for given addresses:
The cache is initially empty. Therefore, all the cache blocks are invalid.



    Access # 1:
    Address = (128)10 = (0000000010000000)2
    (Note: Address is shown as a 16-bit number, because the computer uses 16-bit addresses)
    For this address, Tag = 00000, Block = 00010, Word = 000000
    Since the cache is empty before this access, this will be a cache miss
    After this access, Tag field for cache block 00010 is set to 00000

  • Access # 2:
    Address = (144)10 = (0000000010010000)2
    For this address, Tag = 00000, Block = 00010, Word = 010000
    Since tag field for cache block 00010 is 00000 before this access, this will be a cache hit (because
    address tag = block tag)

  • Access # 3:
    Address = (2176)10 = (0000100010000000)2
    For this address, Tag = 00001, Block = 00010, Word = 000000
    Since tag field for cache block 00010 is 00000 before this access, this will be a cache miss
    (address tag ≠ block tag)
    After this access, Tag field for cache block 00010 is set to 00001

  • Access # 4:
    Address = (2180)10 = (0000100010000100)2
    For this address, Tag = 00001, Block = 00010, Word = 000100
    Since tag field for cache block 00010 is 00001 before this access, this will be a cache hit (address
    tag = block tag)

  • Access # 5:
    Address = (128)10 = (0000000010000000)2
    For this address, Tag = 00000, Block = 00010, Word = 000000
    Since tag field for cache block 00010 is 00001 before this access, this will be a cache miss
    (address tag ≠ block tag)
    After this access, Tag field for cache block 00010 is set to 00000

  • Access # 6:
    Address = (2176)10 = (0000100010000000)2
    For this address, Tag = 00001, Block = 00010, Word = 000000
    Since tag field for cache block 00010 is 00001 before this access, this will be a cache miss
    (address tag ≠ block tag)
    After this access, Tag field for cache block 00010 is set to 00001

Therefore, cache hit rate = Number of hits / Number of accesses = 2/6 = 0.333.

Option (A) is true.

Quiz of this Question

My Personal Notes arrow_drop_up
Article Tags :

Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.