
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.