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 ,
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 é:
çú
No nosso caso, temos 4 linhas na cache, então:
ç
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:
ú
Substituindo os valores:

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

Qual é o problema que uma hierarquia de memória tenta resolver?
Considere uma máquina com uma memória principal endereçável por byte (ou seja, 1 célula palavra=1 byte) com bytes e um tamanho de bloco de 8 bytes. Suponha que essa máquina utilize uma cache de 32 linhas mapeadas diretamente. Responda as questões abaixo.
b) Em que linha da cache seria armazenado o byte com o seguinte endereço de memória: ?
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 ,
respectivamente, qual será o resultado final da memória cache e a taxa de acerto quando for utilizado:
b) mapeamento associativo com política de substituição LRU
Uma cache de conjunto associativo contém ao todo 64 linhas divididas em conjuntos de 4 linhas. A memória principal contém 4 K blocos de 128 palavras cada. Mostre o formato dos endereços da memória principal e da cache. Determine o tamanho de s, de w.