Exercícios de Memória Cache
Exercícios
Exercícios
- Considere a memória cache com as seguintes características para um computador
- com 16 bits de endereço de memória (considere como 0 (zero) o primeiro bit (bit
- menos significativo) de endereço):
- Tamanho do bloco: 256 bits
- Associatividade: 4
- Quantidade de conjuntos associativos: 64
- Para esta configuração de cache, informe quais endereços poderiam ser
- mapeados no mesmo conjunto que o endereço 8752.
- Obs.: você pode informar apenas 5 endereços, não precisa informar todos.
- Resposta:
- 8752d = 0010 0010 0011 0000b
- 00100 010001 10000b
- 00001 000000 00000b
- em saltos de 2048 bytes até 65536, ou seja,
- 8752, 10800, 12848, 14896
- Qual é a capacidade total de armazenamento, em bytes, de uma memória cache
- com as seguintes características:
- Tamanho do bloco: 256 bits
- Associatividade: 4
- Quantidade de conjuntos associativos: 32
- Resposta:
- 5. 256 bits = 32 bytes
- 32 bytes x associatividade 4 x 32 conjuntos = 4096 bytes ou 4 kbytes
- Considere uma memória cache descrita a seguir em um computador de 32 bits de endereço:
- capacidade: 1 Mbyte
- tamanho do bloco (linha): 8 bytes
- Associatividade: mapeamento direto
- Dos endereços listados a seguir, quais deles (pode haver mais do que um) irá mapear na mesma linha que o endereço AB12CD34. Mostre o porquê (observe que os endereços neste item foram fornecidos em hexadecimal).
- AB10DC98
- 21BACD89
- 00000000
- FFFFFFFF
- 21B2CD34
- Quais endereços ocupam simultaneamente a mesma linha de cache que EF56AB78. Liste todos.
- Resposta:
- i) letra E, mesmos bits de 0-19
- ii) EF56AB78 -> EF56AB79, EF56AB7A, EF56AB7B, EF56AB7C, EF56AB7D, EF56AB7E, EF56AB7F
- Considere uma memória cache com as seguintes características:
- Tamanho do bloco (linha): 256 bits
- Associatividade: 4
- Quantidade de conjuntos associativos: 32
- Responda:
- Quantos bits de endereço são necessários para indicar o byte que está sendo endereçado dentro de um bloco (linha)?
- Quais são os bits de endereço que indicam o byte dentro de uma linha?
- Quantos bits de endereço são necessários para indicar o conjunto associativo?
- Quais são os bits de endereço que indicam o conjunto associativo sendo endereçado?
- obs.: considere que o bit 0 é o menos significativo do endereço
- Resposta:
- a) 256 bits = 32 bytes = 25 => 5 bits
- b) bits de 0 a 4
- c) 32 conjuntos = 25 => 5 bits
- d) bits de 5 a 9
- Considerando uma memória cache com as seguintes características:
- 1 Mbyte de capacidade;
- tamanho do bloco de 16 bytes;
- 32 bits de tamanho de endereço do computador.
- Responda:
- Quais bits do endereço são responsáveis pelo endereçamento do byte dentro do bloco? Justifique.
- Quais bits do endereço são responsáveis pelo tag? Justifique.
- Determine a associatividade mínima para que a seqüência de endereços abaixo não cause a substituição de dados no cache (supondo o cache inicialmente vazio e endereços em hexadecimais). Justifique.
- 12345628
- 7EF4560C
- ABC45620
- 23445612
- Com quantas linhas ficará este cache? Justifique.
- Resposta:
- bloco de 16 bytes. Log216 = 4. 4 primeiros bits, bits de 0-3
- supondo mapeamento direto: capacidade: 1 Mbyte. Log2220 = 20 20 bits de endereçamento, de 0-19. Bits de tag, 20-31 (32 bits total)
- associatividade 2, para que o acesso c não substitua o acesso b.
- (1 Mbyte/16 bytes/bloco) / 2 conjuntos = 32768 linhas
- Supondo que um cache tenha as seguintes características:
- 1024 linhas;
- 128 bits por linha;
- 32 bits de tamanho de endereço do processador;
- 4 conjuntos associativos.
- Responda:
- Determine o tamanho em bytes da memória cache. Justifique.
- Quais bits do endereço são responsáveis pelo endereçamento do byte dentro do bloco? Justifique.
- Quais bits do endereço determinam uma linha do cache? Justifique.
- Quais bits do endereço são responsáveis pelo tag? Justifique.
- Liste 4 endereços não consecutivos que façam parte de uma mesma linha do cache e ocupem diferentes conjuntos associativos. Justifique.
- Resposta:
- tamanho total = 1024 linhas x 4 conjuntos x 128 bits por linha / 8 bits por byte = 64 kBytes
- bloco de 128 bits = 128/8 bytes = 16 bytes 4 bits, 0-3
- 1024 linhas. Log21024 = 10. 10 bits começando de 4 (de acordo com a resposta A), ou seja, 4-13
- de acordo com as respostas A e B, bits acima de 14
- 00000000h
- 10000000h
- 20000000h
- 30000000h
- (basta que os 14 primeiros bits sejam iguais e os outros diferentes)