Seja a memória cache formada por quatro linhas, em que cada linha possui apenas uma única palavra. Se for realizada uma sequência de leituras pelos endereços 0,2,3,2,
0,0,4,0,5,6 respectivamente, qual será o resultado final da memória cache e a taxa de acerto quando for utilizado:
a) mapeamento direto

Passo 1

Vamos entender o que a questão está pedindo. Temos uma memória cache com quatro linhas, e cada linha pode armazenar apenas uma palavra. Vamos realizar uma sequência de leituras nos endereços: 0, 2, 3, 2, 0, 0, 4, 0, 5, 6. A pergunta é para determinar o resultado final da memória cache e a taxa de acerto usando o mapeamento direto.
Para resolver isso, vamos precisar entender como funciona o mapeamento direto na memória cache e como calcular a taxa de acerto. Vamos passo a passo!

Passo 2

Mapeamento Direto é uma técnica onde cada bloco da memória principal mapeia para exatamente uma linha específica na cache. A fórmula para determinar qual linha da cache um endereço vai mapear é:
Linha da Cache = Endereço mod Número de Linhas na Cache çú
No nosso caso, temos 4 linhas na cache, então:
Linha da Cache = Endereço mod 4 ç
Isso significa que cada endereço vai para uma linha específica baseada no resto da divisão por 4.

Passo 3

Vamos criar uma tabela para acompanhar as leituras e ver se ocorre acerto (hit) ou falha (miss). Também vamos atualizar a cache conforme necessário.
Inicialmente, a cache está vazia:
Linha Tag
0 -
1 -
2 -
3 -
Vamos acompanhar cada leitura:
  1. Endereço 0:
    • Linha = 0 mod 4 = 0
    • Verificamos a Linha 0:
      • Está vazia (miss).
      • Carregamos o bloco 0 na Linha 0.
  2. Endereço 2:
    • Linha = 2 mod 4 = 2
    • Verificamos a Linha 2:
      • Está vazia (miss).
      • Carregamos o bloco 2 na Linha 2.
  3. Endereço 3:
    • Linha = 3 mod 4 = 3
    • Verificamos a Linha 3:
      • Está vazia (miss).
      • Carregamos o bloco 3 na Linha 3.
  4. Endereço 2:
    • Linha = 2 mod 4 = 2
    • Verificamos a Linha 2:
      • Contém o bloco 2 (hit).
  5. Endereço 0:
    • Linha = 0 mod 4 = 0
    • Verificamos a Linha 0:
      • Contém o bloco 0 (hit).
  6. Endereço 0:
    • Linha = 0 mod 4 = 0
    • Verificamos a Linha 0:
      • Contém o bloco 0 (hit).
  7. Endereço 4:
    • Linha = 4 mod 4 = 0
    • Verificamos a Linha 0:
      • Contém o bloco 0, diferente de 4 (miss).
      • Substituímos o bloco 0 pelo bloco 4 na Linha 0.
  8. Endereço 0:
    • Linha = 0 mod 4 = 0
    • Verificamos a Linha 0:
      • Contém o bloco 4, diferente de 0 (miss).
      • Substituímos o bloco 4 pelo bloco 0 na Linha 0.
  9. Endereço 5:
    • Linha = 5 mod 4 = 1
    • Verificamos a Linha 1:
      • Está vazia (miss).
      • Carregamos o bloco 5 na Linha 1.
  10. Endereço 6:
    • Linha = 6 mod 4 = 2
    • Verificamos a Linha 2:
      • Contém o bloco 2, diferente de 6 (miss).
      • Substituímos o bloco 2 pelo bloco 6 na Linha 2.

Passo 4

Vamos resumir as substituições e verificar quais foram os acertos e falhas:
  • Total de leituras: 10
  • Acertos: 4 (ao ler os endereços 2, 0, 0, 0)
  • Falhas: 6
A taxa de acerto é calculada pela fórmula:
Taxa de Acerto = ( Número de AcertosTotal de Leituras ) times 100% ú
Substituindo os valores:
Taxa de Acerto = ( 410 ) times 100% = 40%

Resposta

No final das leituras, a memória cache está configurada da seguinte forma:
Linha Tag
0 0
1 5
2 6
3 3
A taxa de acerto obtida foi de 40%.

Exercícios relacionados