Direct mapped cache example

i am really confused on the topic Direct Mapped Cache i’ve been looking around for an example with a good explanation and it’s making me more confused then ever.

For example: I have

  • 2048 byte memory
  • 64 byte big cache
  • 8 byte cache lines with direct mapped cache how do i determine the ‘LINE’ ‘TAG’ and “Byte offset’?


  • i believe that the total number of addressing bits is 11 bits because 2048 = 2^11

  • 2048/64 = 2^5 = 32 blocks (0 to 31) (5bits needed) (tag)

  • 64/8 = 8 = 2^3 = 3 bits for the index

  • 8 byte cache lines = 2^3 which means i need 3 bits for the byte offset

so the addres would be like this: 5 for the tag, 3 for the index and 3 for the byte offset

Do i have this figured out correctly?