• Matéria: Informática
  • Autor: IgorLrs
  • Perguntado 8 anos atrás

Sobre mapeamentos da cache

Eu tenho 5MB qual o tamanho total do meu endereçamento em bits?

Queria entender o passo a passo,


bokomoko: 5 MB = 5 megabytes = 5 * 1024 kylobytes = 5 * 1024 * 1024 bytes= 5.242.880 bytes distintos que precisam ser endereçados. Para tanto serão necessários 22,3 bits para endereça-los (log de 5.242.880 na base 2). Arredondando para cima 23 bits serão necessários para endereça-lo

Respostas

respondido por: bokomoko
1

5 MB = 5 megabytes = 5 * 1024 kylobytes = 5 * 1024 * 1024 bytes= 5.242.880 bytes distintos que precisam ser endereçados. Para tanto serão necessários 22,3 bits para endereça-los (log de 5.242.880 na base 2). Arredondando para cima 23 bits serão necessários para endereça-lo

IgorLrs: Estava na duvida sobre isso de arredondar, mais hoje tive acesso a uma questao assim, São 5 MByte de memória principal, tamanho de palavra 4 bytes, tamanho do bloco 16 bytes cache de 128 kbytes, aqui devo responder com mapeamento direto, me disseram que o total do endereçamento é 21 bits, tentei fazer assim 5 * 1024 * 1024 bytes e dividi por 4 mais não cheguei em 2²¹, poderia verificar para mim?
bokomoko: Nesse caso, está-se usando blocos de 16 bytes. Então pegamos o total do espaço de endereçamento = 5 * 1024 * 1024 = 5242880 endereços e dividimos em blobos de 16 bytes vai dar 327680
bokomoko: Aí tiramos o log(327680;2) = 18,32, arredondamos para mais e dá 19 bits para endereçar os blocos. Acontece que as palavras tem 4 bytes. Ora, 4 bytes num bloco de 16 bytes dá 4 palavras. Então vamos precisar de log(4;2) bits para endereçar essas 4 palavras dentro do bloco.
bokomoko: Precisaremos de 2 bits para endereçar dentro do bloco portanto 19 bits para definir o bloco + 2 bits para endereçar a palavra dentro do bloco = 21 bits. O endereçamento será feito por duas partes bloco+palavra. Semelhante ao esquema de endereçamento antigo da arquitetura x86 de segemento+offset
bokomoko: Peço que converta esse seu comentário numa pergunta para que eu possa postar a resposta porque essa sua pergunta é excelente. Parabens!
IgorLrs: ok
IgorLrs: Essa questão achei mais complexa pq tem q fazer essa divisão, em outras questoes de cara vc ja sabe o tamanho do endereçamento, se faz essa divisão por conta de estarmos trabalhando com bytes, na palavra e no bloco?
IgorLrs: Sobre o mapeamento Direto. Considerando um espaço de endereçamento de (1 Giga). Como ficaria a divisão de bits para uma cache de 2048 posições que trabalhe com blocos de 8 palavras?
IgorLrs: Nessa 1 x1024 x1024 x1024 = 2³⁰
IgorLrs: tag= 16 linhha =11 palavra = 3 , essas assim consigo fazer
Perguntas similares