Exercícios de Memória Cache

Exercícios

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