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: ?

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:
  1. Tag: Identifica qual bloco está armazenado na linha da cache.
  2. Índice (Index): Identifica qual linha da cache a memória vai mapear.
  3. 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?
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