Cache mapeado diretamente: como determinar a decomposição de endereços

Cache mapeado diretamente: como determinar a decomposição de endereços

Vamos supor que eu tenha uma memória endereçável de 32 bits e um cache mapeado diretamente de 4 kib. Digamos que cada entrada (linha) do cache seja composta por uma palavra única (32 bits).

Podemos inferir que o tamanho do índice é de 10 bits, pois 4*2^10 bytes / 4 = 2^10 palavras = 2^10 linhas.

Agora, como há apenas uma palavra por linha, presumo que não precisamos de um campo de deslocamento. Portanto, os endereços do cache são decompostos desta forma:

  • Bits 0 a 9: Índice
  • Bits 10 a 31: Etiqueta

Minha lógica está errada de alguma forma?

Responder1

Precisamos de 2 bits para o deslocamento, pois um valor de 32 bits possui 4 bytes e cada byte pode ser acessado individualmente, e assim o deslocamento pode ser 0,1,2 ou 3.

Portanto, um endereço é decomposto desta forma pelo cache mapeado diretamente:

  • Bits 0 a 1: deslocamento
  • Bits 2 a 11: índice
  • Bits 12 a 31: rótulo

Responder2

Uma linha de cache normalmente tem 64 bytes, os bits de deslocamento de 0 a 6 selecionam um byte na linha.

informação relacionada