You are on page 1of 25

Memoria

caché asociativa por


conjuntos
Ejercicio
Memoria Cache AC
•  Direcciones de memoria: 12 bits
•  Tamaño palabra: 4 bytes
•  Número de conjuntos: 2
•  Cada conjunto tiene 4 bloques
•  Tamaño de bloque: 1 palabra
Direcciones
•  0x004
•  0x014
•  0x010
•  0x018
•  0x01C
•  0x024
•  0x018
•  0x00C
Pregunta

•  ¿Cuántos fallos?

•  ¿Estado final de la caché?


¿Cómo es la cache?
•  Tamaño palabra es 4

•  Índice: hay 2 conjuntos, el índice tendrá un


bit.

•  Etiqueta: 12 - 1 - 2 = 9 bits
Significado bits dirección
11 10 9 8 7 6 5 4 3 2 1 0
Etiqueta índice Byte dentro
palabra
Caché

Conjunto: 0 Conjunto: 1

Bit validez etiqueta Dato Bit validez etiqueta Dato


0 0
0 0
0 0
0 0
Dirección 0x004 ANTES
11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 0 0 1 0 0
Etiqueta índice Byte dentro
palabra

FALLO
Conjunto: 0 Conjunto: 1

Bit validez etiqueta Dato Bit validez etiqueta Dato


0 0
0 0
0 0
0 0
Dirección 0x004 DESPUÉS
11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 0 0 1 0 0
Etiqueta índice Byte dentro
palabra

Conjunto: 0 Conjunto: 1

Bit validez etiqueta Dato Bit validez etiqueta Dato


0 1 0000 0000 0 MEM(0x004)
0 0
0 0
0 0
Dirección 0x014 ANTES
11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 1 0 1 0 0
Etiqueta índice Byte dentro
palabra

FALLO
Conjunto: 0 Conjunto: 1

Bit validez etiqueta Dato Bit validez etiqueta Dato


0 1 0000 0000 0 MEM(0x004)
0 0
0 0
0 0
Dirección 0x014 DESPUÉS
11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 1 0 1 0 0
Etiqueta índice Byte dentro
palabra

Conjunto: 0 Conjunto: 1

Bit validez etiqueta Dato Bit validez etiqueta Dato


0 1 0000 0000 0 MEM(0x004)
0 1 0000 0001 0 MEM(0x014)
0 0
0 0
Dirección 0x010 ANTES
11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 1 0 0 0 0
Etiqueta índice Byte dentro
palabra

FALLO
Conjunto: 0 Conjunto: 1

Bit validez etiqueta Dato Bit validez etiqueta Dato


0 1 0000 0000 0 MEM(0x004)
0 1 0000 0001 0 MEM(0x014)
0 0
0 0
Dirección 0x010 DESPUÉS
11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 1 0 0 0 0
Etiqueta índice Byte dentro
palabra

Conjunto: 0 Conjunto: 1

Bit validez etiqueta Dato Bit validez etiqueta Dato


1 0000 0001 0 MEM(0x010) 1 0000 0000 0 MEM(0x004)
0 1 0000 0001 0 MEM(0x014)
0 0
0 0
Dirección 0x018 ANTES
11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 1 1 0 0 0
Etiqueta índice Byte dentro
palabra

FALLO
Conjunto: 0 Conjunto: 1

Bit validez etiqueta Dato Bit validez etiqueta Dato


1 0000 0001 0 MEM(0x010) 1 0000 0000 0 MEM(0x004)
0 1 0000 0001 0 MEM(0x014)
0 0
0 0
Dirección 0x018 DESPUÉS
11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 1 1 0 0 0
Etiqueta índice Byte dentro
palabra

Conjunto: 0 Conjunto: 1

Bit validez etiqueta Dato Bit validez etiqueta Dato


1 0000 0001 0 MEM(0x010) 1 0000 0000 0 MEM(0x004)
1 0000 0001 1 MEM(0x018) 1 0000 0001 0 MEM(0x014)
0 0
0 0
Dirección 0x01C ANTES
11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 1 1 1 0 0
Etiqueta índice Byte dentro
palabra

FALLO
Conjunto: 0 Conjunto: 1

Bit validez etiqueta Dato Bit validez etiqueta Dato


1 0000 0001 0 MEM(0x010) 1 0000 0000 0 MEM(0x004)
1 0000 0001 1 MEM(0x018) 1 0000 0001 0 MEM(0x014)
0 0
0 0
Dirección 0x01C DESPUÉS
11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 1 1 1 0 0
Etiqueta índice Byte dentro
palabra

Conjunto: 0 Conjunto: 1

Bit validez etiqueta Dato Bit validez etiqueta Dato


1 0000 0001 0 MEM(0x010) 1 0000 0000 0 MEM(0x004)
1 0000 0001 1 MEM(0x018) 1 0000 0001 0 MEM(0x014)
0 1 0000 0001 1 MEM(0x01C)
0 0
Dirección 0x024 ANTES
11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 1 0 0 1 0 0
Etiqueta índice Byte dentro
palabra

FALLO
Conjunto: 0 Conjunto: 1

Bit validez etiqueta Dato Bit validez etiqueta Dato


1 0000 0001 0 MEM(0x010) 1 0000 0000 0 MEM(0x004)
1 0000 0001 1 MEM(0x018) 1 0000 0001 0 MEM(0x014)
0 1 0000 0001 1 MEM(0x01C)
0 0
Dirección 0x024 DEPUÉS
11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 1 0 0 1 0 0
Etiqueta índice Byte dentro
palabra

Conjunto: 0 Conjunto: 1

Bit validez etiqueta Dato Bit validez etiqueta Dato


1 0000 0001 0 MEM(0x010) 1 0000 0000 0 MEM(0x004)
1 0000 0001 1 MEM(0x018) 1 0000 0001 0 MEM(0x014)
0 1 0000 0001 1 MEM(0x01C)
0 1 0000 0010 0 MEM(0x024)
Dirección 0x018 ANTES
11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 1 1 0 0 0
Etiqueta índice Byte dentro
palabra

ACIERTO
Conjunto: 0 Conjunto: 1

Bit validez etiqueta Dato Bit validez etiqueta Dato


1 0000 0001 0 MEM(0x010) 1 0000 0000 0 MEM(0x004)
1 0000 0001 1 MEM(0x018) 1 0000 0001 0 MEM(0x014)
0 1 0000 0001 1 MEM(0x01C)
0 1 0000 0010 0 MEM(0x024)
Dirección 0x018 DESPUÉS
11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 1 1 0 0 0
Etiqueta índice Byte dentro
palabra

Conjunto: 0 Conjunto: 1

Bit validez etiqueta Dato Bit validez etiqueta Dato


1 0000 0001 0 MEM(0x010) 1 0000 0000 0 MEM(0x004)
1 0000 0001 1 MEM(0x018) 1 0000 0001 0 MEM(0x014)
0 1 0000 0001 1 MEM(0x01C)
0 1 0000 0010 0 MEM(0x024)
Dirección 0x00C ANTES
11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 0 1 1 0 0
Etiqueta índice Byte dentro
palabra

FALLO
Conjunto: 0 Conjunto: 1

Bit validez etiqueta Dato Bit validez etiqueta Dato


1 0000 0001 0 MEM(0x010) 1 0000 0000 0 MEM(0x004)
1 0000 0001 1 MEM(0x018) 1 0000 0001 0 MEM(0x014)
0 1 0000 0001 1 MEM(0x01C)
0 1 0000 0010 0 MEM(0x024)
Dirección 0x00C
•  Como la caché está llena, hay que reemplazar
un bloque de los existentes por el nuevo.

•  En este ejemplo se usa la política de reemplazo


por el que el bloque ha reemplazar es el que
hace más tiempo que fue accedido.

•  En este caso sería el primer bloque.


Dirección 0x00C DESPUÉS
11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 0 1 1 0 0
Etiqueta índice Byte dentro
palabra

Conjunto: 0 Conjunto: 1

Bit validez etiqueta Dato Bit validez etiqueta Dato


1 0000 0001 0 MEM(0x010) 1 0000 0000 1 MEM(0x00C)
1 0000 0001 1 MEM(0x018) 1 0000 0001 0 MEM(0x014)
0 1 0000 0001 1 MEM(0x01C)
0 1 0000 0010 0 MEM(0x024)
Solución
Se han producido 7 fallos y 1 acierto

Conjunto: 0 Conjunto: 1

Bit validez etiqueta Dato Bit validez etiqueta Dato


1 0000 0001 0 MEM(0x010) 1 0000 0000 1 MEM(0x00C)
1 0000 0001 1 MEM(0x018) 1 0000 0001 0 MEM(0x014)
0 1 0000 0001 1 MEM(0x01C)
0 1 0000 0010 0 MEM(0x024)

You might also like