Entendendo o cache da CPU e a linha de cache
Estou tentando entender como o cache da CPU está operando. Digamos que temos essa configuração (como exemplo).
Tamanho do cache 1024 bytesLinha de cache 32 bytes1024/32 = 32 linhas de cache juntas.A linha de cache Singel pode armazenar 32/4 = 8 ints.1) De acordo com essas configurações, o comprimento da tag deve ser 32-5 = 27 bits e o tamanho do índice 5 bits (2 ^ 5 = 32 endereços para cada byte na linha de cache).
Se o tamanho total do cache for 1024 e houver 32 linhas de cache, onde as tags + os índices são armazenados? (Há outros 4 * 32 = 128 bytes.) Isso significa que o tamanho real do cache é 1024 + 128 = 1152?
2) Se a linha de cache tiver 32 bytes neste exemplo, isso significa que 32 bytes serão copiados no cache sempre que a CPU precisar obter um novo byte da RAM. Tenho razão em assumir que a posição da linha de cache do byte solicitado será determinada pelo seu endereço?
É isso que eu quero dizer: se a CPU solicitou byte em[FF FF 00 08]
, a linha de cache disponível será preenchida com bytes de[FF FF 00 00]
para[FF FF 00 1F]
. E nosso byte único requseted estará na posição[08]
.
3) Se a instrução anterior estiver correta, isso significa que 5 bits usados para o índice não são tecnicamente necessários, pois todos os 32 bytes estão na linha de cache?
Entre em contato se tiver algo errado. obrigado