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:
?
b) Em que linha da cache seria armazenado o byte com o seguinte endereço de memória:
Passo 1
Primeiro, vamos resumir o enunciado do exercício. Temos uma máquina com memória principal endereçável por byte, totalizando
bytes. O tamanho de cada bloco é de 8 bytes, e a máquina utiliza uma cache com 32 linhas mapeadas diretamente. Precisamos determinar em qual linha da cache seria armazenado o byte com o endereço de memória
.
Para resolver isso, vamos precisar entender como a memória é mapeada para a cache em um sistema de mapeamento direto. Vamos usar conceitos como divisão do endereço em parte para o índice da cache, para o deslocamento dentro do bloco e para a tag.
Passo 2
Entendendo a estrutura do endereço de memória:
A memória tem
bytes, o que significa que os endereços de memória têm 16 bits. Vamos dividir esses 16 bits em três partes:
- Tag: Identifica qual bloco está armazenado na linha da cache.
- Índice (Index): Identifica qual linha da cache a memória vai mapear.
- Deslocamento (Offset): Identifica a posição específica dentro de um bloco de 8 bytes.
Dado que o tamanho do bloco é 8 bytes, precisamos de
bits para o deslocamento. A cache tem 32 linhas, então precisamos de
bits para o índice. O restante dos bits será usado para a tag.
Então, a divisão fica assim:
- Tag: 16 - 5 - 3 = 8 bits
- Índice: 5 bits
- Deslocamento: 3 bits
Passo 3
Separando o endereço de memória:
Vamos separar o endereço
em suas partes componentes.
Primeiro, combinamos todos os bits:
Agora, dividimos conforme a estrutura definida:
- Tag (8 bits): Os primeiros 8 bits:
- Índice (5 bits): Os próximos 5 bits:
- Deslocamento (3 bits): Os últimos 3 bits:
Passo 4
Convertendo o índice para decimal:
O índice em binário é
. Para descobrir a linha da cache, precisamos converter isso para decimal.
Passo 5
Determinando a linha da cache:
Como a cache tem 32 linhas numeradas de 0 a 31, e o índice convertido é 3, o byte com o endereço
será armazenado na linha 3 da cache.
Resposta
O byte com o endereço de memória
seria armazenado na linha 3 da cache.
Exercícios relacionados
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 .
a) Quantos pratos possui o disco assumindo face dupla?
a) Quantos pratos possui o disco assumindo face dupla?
Qual a diferença entre SDRAM e DRAM?
Qual é o problema que uma hierarquia de memória tenta resolver?
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
a) mapeamento direto