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.
a) Para o endereço de memória
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.
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?
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?
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.