Um cache está sendo projetado para um computador com
bytes de memória. O cache terá 2K slots e usará um bloco de 32 bytes. Calcule, tanto para um cache associativo quanto para um cache com mapeamento direto, quantos bytes o cache precisará ter capacidade de armazenar.
Passo 1
Primeiro, vamos entender o que está sendo pedido. Temos um computador com uma memória principal de
bytes. Estamos projetando um cache que possui 2K slots, onde cada slot pode armazenar um bloco de 32 bytes. Precisamos calcular quanto espaço, em bytes, esse cache ocupará tanto em um cache associativo quanto em um cache com mapeamento direto.
Para resolver isso, vamos precisar entender dois conceitos principais:
- Cache Associativo: Onde um bloco da memória pode ser colocado em qualquer slot do cache.
- Cache com Mapeamento Direto: Onde cada bloco da memória é mapeado para exatamente um slot no cache.
Vamos resolver passo a passo para cada tipo de cache.
Passo 2
Calculando para o Cache Associativo
Em um cache associativo, qualquer bloco da memória pode ser armazenado em qualquer slot do cache. Para calcular a capacidade total do cache, precisamos considerar tanto os dados armazenados quanto as informações adicionais necessárias para gerenciar o cache, como as tags.
Primeiro, calculamos o número total de blocos na memória principal:
Como o cache é associativo, precisamos de uma tag para identificar de qual bloco da memória principal cada bloco no cache pertence. O número de bits da tag é igual ao número de bits necessários para endereçar todos os blocos da memória menos o número de bits usados para o deslocamento dentro do bloco.
Agora, cada slot do cache precisará armazenar:
- Dados: 32 bytes
- Tag: 27 bits (aproximadamente 4 bytes, já que 27 bits ≈ 4 bytes)
Portanto, o tamanho de cada slot é aproximadamente
bytes.
Multiplicando pelo número total de slots (2K, onde K = 1024):
Passo 3
Calculando para o Cache com Mapeamento Direto
No cache com mapeamento direto, cada bloco da memória principal mapeia para exatamente um slot no cache. Isso simplifica a estrutura, pois não precisamos de uma tag completa para cada bloco, apenas de uma parte dela para identificar o bloco específico dentro do conjunto mapeado.
Primeiro, calculamos o número de bits necessários para indexar os slots:
A tag neste caso será:
Cada slot do cache precisará armazenar:
- Dados: 32 bytes
- Tag: 16 bits (aproximadamente 2 bytes)
Portanto, o tamanho de cada slot é aproximadamente
bytes.
Multiplicando pelo número total de slots (2K):
Resposta
O cache precisará ter uma capacidade de 73.728 bytes no modo associativo e 69.632 bytes no modo com mapeamento direto.