Considere um computador com as seguintes características: memória principal de 1MByte, tamanho de palavra de 1 byte, tamanho de bloco de 16 bytes e cache de 64 KBytes.
a) Para o endereço de memória , mostre quais são os valores dos campos tag, linha e palavra, considerando uma cache de mapeamento direto.

Passo 1

Beleza, vamos entender o que a questão está pedindo. Temos um computador com memória principal de 1 MByte, palavra de 1 byte, bloco de 16 bytes e cache de 64 KBytes. A pergunta é: para o endereço de memória , quais são os valores dos campos tag, linha e palavra na cache de mapeamento direto.
Para resolver isso, vamos precisar entender como funciona o mapeamento direto na memória cache e como decompor um endereço de memória nesses três campos.

Passo 2

Primeiro, vamos converter as unidades para potências de 2, porque isso facilita os cálculos em sistemas digitais.
  • Memória principal: 1 MByte = bytes
  • Tamanho de palavra: 1 byte = bytes
  • Tamanho de bloco: 16 bytes = bytes
  • Cache: 64 KBytes = bytes

Passo 3

No mapeamento direto, cada bloco da memória principal pode ser mapeado para exatamente um bloco na cache. Para isso, precisamos determinar quantos blocos existem na cache.
Número de blocos na cache = Tamanho da cache / Tamanho do bloco = blocos.
Isso significa que nosso campo linha precisará de 12 bits para identificar cada um desses blocos.

Passo 4

Agora, vamos decompor o endereço de memória em três partes: tag, linha e palavra.
O endereço total tem 20 bits (pois bytes na memória principal).
  • Palavra (offset): determina a posição dentro do bloco. Como o bloco tem 16 bytes, precisamos de 4 bits ( ) para isso.
  • Linha (index): identifica qual bloco na cache está sendo usado. Como temos blocos na cache, precisamos de 12 bits.
  • Tag: os bits restantes servem para identificar se o bloco na cache corresponde ao bloco da memória principal.
Então, a divisão fica:
  • Tag: 20 - 12 - 4 = 4 bits
  • Linha: 12 bits
  • Palavra: 4 bits

Passo 5

Vamos agora converter o endereço para binário para facilitar a divisão.
em binário é:
Então,

Passo 6

Agora, vamos separar os bits de acordo com a divisão que fizemos:
  • Tag: primeiros 4 bits → 1111
  • Linha: próximos 12 bits → 0000 0000 0001
  • Palavra: últimos 4 bits → 0000

Passo 7

Convertendo esses campos de binário para hexadecimal para facilitar a compreensão:
  • Tag: 1111 em binário é
  • Linha: 0000 0000 0001 em binário é
  • Palavra: 0000 em binário é

Resposta

Para o endereço de memória na cache de mapeamento direto:
  • Tag:
  • Linha:
  • Palavra:

Exercícios relacionados

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.
c) Quantos bytes de memória podem ser armazenados na cache, ou seja, qual a capacidade da cache?
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.
Dado um disco com rotação de 2.400 RPM, com 120 cilindros e seis trilhas por cilindro. Cada trilha possui 16 setores e cada setor tem 512 bytes. Considere que o tempo médio de seek é de 60 ms .
b) Quanto tempo será necessário para ler 10 setores em sequência?
Considere o seguinte código:
b) Dê um exemplo de localidade temporal nesse código.