2. Objetivos
Entender el modo de operación de las distintas
funciones de correspondencia utilizadas en las
memorias caché
Entender como cada función mapea las direcciones de
la memoria principal en la memoria caché
Entender las ventajas y desventajas de cada función de
correspondencia
Objetivos
2 Arquitectura de Computadores
3. Indica la forma como mapeo los bloques de
memoria principal en las líneas de la memoria
caché
Arquitectura de Computadores3
Determina donde guardar un bloque
Determina donde buscar un dato
Permite determinar qué bloque hay en cada línea
Memoria Caché
Función de Correspondencia
4. Arquitectura de Computadores4
Correspondencia Directa (directly mapped)
Correspondencia Asociativa (fully associative)
Correspondencia Asociativa por conjuntos (N-way
associative)
Funciones de Correspondencia
Tipos de Correspondencia
6. Arquitectura de Computadores6
Correspondencia Directa (directly mapped)
Mapea a priori
Cada bloque tiene asociada una línea de la caché
Correspondencia Directa
7. Arquitectura de Computadores7
Ej. 1000 alumnos: 0-999
Cada uno se estaciona en el
estacionamiento determinado
por sus últimos 2 dígitos del
número de alumno.
Correspondencia Directa
00
01
02
13
14
15
62
63
64
82
83
84
85
96
97
98
99
10. 00
01
02
13
14
15
62
63
64
82
83
84
85
96
97
98
99
Llega alumno 102
Se estaciona en 02
Arquitectura de Computadores10
Ej. 1000 alumnos: 0-999
Cada uno se estaciona en el
estacionamiento determinado
por sus últimos 2 dígitos del
número de alumno.
Correspondencia Directa
13. 82
83
84
85
6
00
01
02
13
14
15
62
63
64
96
97
98
99
Arquitectura de Computadores13
¿Qué guardo?
El dígito de las centenas
El resto determinado por número de
n° estacionamiento
Correspondencia Directa
TAG
8
7
1
9
5
Entonces el auto guardado en
83 no corresponde al 683
sino al 583.
Hay que ir a buscar el auto
683 fuera del campus y
actualizar el tag.
15. Arquitectura de Computadores15
Correspondencia Directa
Memoria Cache
00
01
10
11
Cada línea de caché corresponde a un “estacionamiento” .
Cada bloque de la memoria principal se asocia a una línea
particular.
Ej.Memoria principal de 256 bytes, caché de 8 bytes, bloques de 2
bytes.
Memoria Principal = 128 bloques
Caché = 4 líneas
16. 0000 0000
0000 0001
0000 0010
0000 0011
0000 0100
0000 0101
0000 0110
0000 0111
Arquitectura de Computadores16
Correspondencia Directa
Cada línea de caché corresponde a un “estacionamiento” .
Cada bloque de la memoria principal es asociada a una línea
particular.
Ej.Memoria principal de 256 bytes, caché de 8 bytes, bloques de 2
bytes,
Determina el byte
dentro del bloque
o de la línea
0
1
0
1
0
1
0
1
17. Arquitectura de Computadores17
Correspondencia Directa
Cada línea de caché corresponde a un “estacionamiento” .
Cada bloque de la memoria principal es asociada a una línea
particular.
Ej.Memoria principal de 256 bytes, caché de 8 bytes, bloques de 2
bytes,
0000 0000
0000 0001
0000 0010
0000 0011
0000 0100
0000 0101
0000 0110
0000 0111
Determina la línea
de la caché
00
00
01
01
10
10
11
11
18. Arquitectura de Computadores18
Correspondencia Directa
Cada línea de caché corresponde a un “estacionamiento” .
Cada bloque de la memoria principal es asociada a una línea
particular.
Ej.Memoria principal de 256 bytes, caché de 8 bytes, bloques de 2
bytes,
Tag asociado a la
dirección
0000 0000
0000 0001
0000 0010
0000 0011
0000 0100
0000 0101
0000 0110
0000 0111
0000 0
0000 0
0000 0
0000 0
0000 0
0000 0
0000 0
0000 0
19. Arquitectura de Computadores19
Correspondencia Directa
¿Qué pasa si duplicamos la memoria principal?
El tag aumenta en un bit
Tag asociado a la
dirección
0
0
0
0
0
0
0
0
0000 0000
0000 0001
0000 0010
0000 0011
0000 0100
0000 0101
0000 0110
0000 0111
0000 0
0000 0
0000 0
0000 0
0000 0
0000 0
0000 0
0000 0
20. Arquitectura de Computadores20
Correspondencia Directa
¿Qué pasa si duplicamos la cantidad de líneas de la caché?
Los bits que determinan las líneas aumentan en 1
El tag se reduce en un bit
Determina la línea
de la caché
0000 0000
0000 0001
0000 0010
0000 0011
0000 0100
0000 0101
0000 0110
0000 0111
00
00
01
01
10
10
11
11
0
0
0
0
0
0
0
0
21. Arquitectura de Computadores21
Correspondencia Directa
¿Qué pasa si duplicamos el tamaño de las líneas?
Índice del byte en el bloque o línea aumenta en un bit
Bit de la línea se mantiene, pero se desplaza.
Tag se reduce en 1
Determina el byte
dentro del bloque
o de la línea
0000 0000
0000 0001
0000 0010
0000 0011
0000 0100
0000 0101
0000 0110
0000 0111
00
00
01
01
10
10
11
11
0
1
0
1
0
1
0
1
0
0
1
1
0
0
1
1
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
22. Arquitectura de Computadores22
Correspondencia Directa
Ventajas
Tag pequeño (menos memoria extra)
Muy rápidas
No requieren políticas de reemplazo
Lógica simple
Desventajas
Poca eficiencia en el uso del espacio
Puedo sobrescribir datos aún cuando hay lugares libres
Muchas colisiones
23. Arquitectura de Computadores23
Correspondencia Directa
Ej.
Memoria principal de 2 Mb
2 * 220 21 bits.
Caché de 64 Kb
Línea de 4 bytes
64Kb / 4b = 16K_líneas
24 * 210 14 bits
Para una dirección cualquiera
A20 A19 A18 A17 A16 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
Índice
del
byte
LíneaTag
25. Arquitectura de Computadores25
Correspondencia Asociativa (fully associative)
Mapea en forma dinámica
Cada bloque puede estar en cualquier línea
Correspondencia Asociativa
26. Arquitectura de Computadores26
Ej. 1000 alumnos: 0-999
Cada uno se estaciona en el
primer estacionamiento libre.
00
01
02
13
14
15
62
63
64
82
83
84
85
96
97
98
99
Correspondencia Asociativa
32. Arquitectura de Computadores32
Memoria Cache
00
01
10
11
Cualquier bloque de memoria principal puede estar en cualquier
línea de la caché
Ej. Memoria principal de 256 bytes, caché de 8 bytes, bloques de 2
bytes.
Memoria Principal = 128 bloques
Caché = 4 líneas
Correspondencia Asociativa
33. Arquitectura de Computadores33
Cualquier bloque de memoria principal puede estar en cualquier
línea de la caché
Ej. Memoria principal de 256 bytes, caché de 8 bytes, bloques de 2
bytes.
Memoria Principal = 128 bloques
Caché = 4 líneas
Correspondencia Asociativa
Determina el byte
dentro del bloque
o de la línea
0000 0000
0000 0001
0000 0010
0000 0011
0000 0100
0000 0101
0000 0110
0000 0111
0
1
0
1
0
1
0
1
34. Arquitectura de Computadores34
Cualquier bloque de memoria principal puede estar en cualquier
línea de la caché
Ej. Memoria principal de 256 bytes, caché de 8 bytes, bloques de 2
bytes.
Memoria Principal = 128 bloques
Caché = 4 líneas
Correspondencia Asociativa
0000 0000
0000 0001
0000 0010
0000 0011
0000 0100
0000 0101
0000 0110
0000 0111
Tag asociado a la
dirección
0
1
0
1
0
1
0
1
35. Arquitectura de Computadores35
Correspondencia Asociativa
Ventajas
Uso eficiente de la memoria (100%)
Desventajas
Tag muy grande.
Requiere politicas de reemplazo
Requiere almacenar información adicional para las políticas
de reemplazo.
Es muy caro determinar qué bloque está en cada línea
Búsqueda puede ser muy lenta si la caché aumenta de tamaño
O(n).
Ó muy cara electrónicamente si se usa búsqueda en paralelo.
37. Arquitectura de Computadores37
Correspondencia Asociativa por conjuntos (N-way
associative)
Mezcla de la correspondencia directa y asociativa
Correspondencia Asociativa por Conjuntos
38. Arquitectura de Computadores38
Ej. 1000 alumnos: 0-999
00
01
02
13
14
15
62
63
64
82
83
84
85
96
97
98
99
Correspondencia Asociativa por Conjuntos
Las 100 entradas se dividen
en 10 grupos de 10.
El grupo donde se estaciona
alguien depende del último
dígito de su n° de alumno
(~directly mapped)
Dentro del grupo se estaciona
donde mejor le parezca
(~fully-associative)
39. Arquitectura de Computadores39
Memoria Cache
00
01
10
11
Ej. 2 vías.
Memoria Principal = 128 bloques
Caché = 4 líneas
Correspondencia Asociativa por Conjuntos
Las vías indican la cantidad de líneas
por conjunto… NO LA CANTIDAD DE
CONJUNTOS
40. Arquitectura de Computadores40
Ej. 2 vías.
Memoria Principal = 128 bloques
Caché = 4 líneas
Correspondencia Asociativa por Conjuntos
Determina el byte
dentro del bloque
o de la línea
0000 0000
0000 0001
0000 0010
0000 0011
0000 0100
0000 0101
0000 0110
0000 0111
0
1
0
1
0
1
0
1
41. Arquitectura de Computadores41
Ej. 2 vías.
Memoria Principal = 128 bloques
Caché = 4 líneas
Correspondencia Asociativa por Conjuntos
Determina el
conjunto de la
memoria cache
0000 0000
0000 0001
0000 0010
0000 0011
0000 0100
0000 0101
0000 0110
0000 0111
0
0
1
1
0
0
1
1
42. Arquitectura de Computadores42
Ej. 2 vías.
Memoria Principal = 128 bloques
Caché = 4 líneas
Correspondencia Asociativa por Conjuntos
Tag asociado a la
dirección
0000 0000
0000 0001
0000 0010
0000 0011
0000 0100
0000 0101
0000 0110
0000 0111
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
43. Arquitectura de Computadores43
Ventajas
Tag más pequeño que en fully – associative, pero más grande
que Directly – Mapped
Permite mayor eficiencia en el uso de la memoria por la
flexibilidad.
Búsqueda dentro del conjunto es más rápida.
Correspondencia Asociativa por Conjuntos
44. Arquitectura de Computadores44
Ej, 4 vías.
Memoria Principal de 1Kb 210
10 bits
Líneas de 2 bytes
1 bit para especificar línea
Caché de 64 bytes 64 / 2 bytes por línea = 32 líneas.
32 líneas / 4 vías = 8 conjuntos.
3 bits para especificar conjunto.
¿ En que direcciones de la caché podría estar el dato
almacenado en la dirección 1101100111 ?
Correspondencia Asociativa por Conjuntos
45. Arquitectura de Computadores45
Correspondencia Asociativa por Conjuntos
Memoria Caché
00h
01h
02h
03h
04h
05h
06h
07h
08h
1Bh
1Ch
1Dh
1Eh
1Fh
Conjunto 0 : líneas 0 – 3
Conjunto 1 : líneas 4 – 7
Conjunto 2 : líneas 8 – 11
…
Conjunto n :
líneas N*n N*n + N-1
Ej, 4 vías.
¿ En que dirección de la caché podría estar el
dato almacenado en la dirección 1101100111 ?
1101100111
conjunto 3
byte 1
Línea 0 : direcciones 0 – 1
Línea 1 : direcciones 2 – 3
…
Línea n : direcciones 2*n +
2*n+1
Conjunto 3 : líneas 12 -15
Línea 12 : direcciones 24 - 25
13 : 26 - 27
14 : 28 - 29
15 : 30 - 31