Memoria Cache v113
Memoria Cache v113
Memoria Cache v113
Hennessy and Patterson Ed.5 Image Copyright © 2011, Elsevier Inc. All rights Reserved
Memoria
Unificada
CPU Cache
principal
Rápido Lento
Localidad espacial
Direcciones de memoria
Localidad temporal
Localidad temporal
y espacial
Tiempo
Fuente: Program restructuring for virtual memory, DJ Hatfield, J Gerald - IBM Systems Journal, 1971.
Dirección Contenido
… … Etiqueta Offset 0 Offset 1
Línea n 101000000000000
10100000 000000 2B 3C
A000
10100000 00000000 2B
Línea n+1 10100000 0000001 4D 5E
A001
10100000 00000001 3C
A002
10100000 00000010 4D
A003
10100000 00000011 5E
1. Veamos las
… … direcciones en binario
La parte en común
entre los bits de la El último bit de la dirección
será el offset dentro de la línea Cada dirección se interpreta separándola en etiqueta / offset
dirección será la
Etiqueta: permite determinar si el contenido está en MC
etiqueta.
Offset: caso afirmativo, lo identifica dentro de la línea
en la memoria de etiquetas
Comparador(es)
Comparador
V D
Si las direcciones son de 32
bits, la etiqueta tendrá un
tamaño MENOR a 32.
La etiqueta será la parte “en
común” de las direcciones de Cada palabra de caché (en 32 de datos
las palabras de datos cada offset) hay bits
Memoria caché - Arquitectura de Computadoras - Ing. Jaír
10
Hnatiuk - Unlam (2021)
Características de la memoria caché
Para determinar si una palabra se encuentra en MC se deben comparar todas las etiquetas
de cada línea de caché en paralelo. Se necesita una memoria especial que permita dicha
búsqueda (asociativa).
La comparación se efectúa solamente sobre el campo de etiqueta.
Memoria caché - Arquitectura de Computadoras - Ing. Jaír
14
Hnatiuk - Unlam (2021)
Asignación asociativa
Ejemplo: Supongamos direcciones de 32 bits (total direccionable = 4GB), líneas de 32 bytes,
tamaño de caché 128 KB.
1. ¿En cuántas líneas se divide la memoria caché?
2. ¿Cuál es el tamaño de cada campo de la dirección?
Cantidad de líneas =
tamaño de MC / tamaño de línea = 128 KB / 32 = 217 / 25 = 212= 4096 líneas
Cantidad de bloques =
tamaño MP / tamaño de línea = 4 GB / 32 bytes = 232/25=227 = 128 M bloques
¿Debo multiplicar los 4G por 8? ¿O los 128K por 8? ¿Se multiplica por el tamaño de palabra?
Memoria caché - Arquitectura de Computadoras - Ing. Jaír
15
Hnatiuk - Unlam (2021)
Asignación asociativa
¿Cómo funciona? Supongamos que la CPU solicita la dirección 0x7D771B38…
7D771B38 base 16 =
01111101011101110001101100111000 base 2
¿Cómo funciona? La CPU solicita la dirección 0x7D771B38, y la palabra está en la memoria caché (HIT)
Memoria Caché
Etiqueta Datos (32 bytes por línea)
Comparador 000001010111011100011011001
Comparador 000001010111011100011011001
Comparador 011111010111011100011011001
Comparador 000001010111011100011011001
Comparador …
Comparador
Se transfiere una palabra de datos de CPU
P/e en IA-32 serán 32 bits (4 bytes)
1. Se comparan simultáneamente todas las etiquetas de MC
2. Si existe una coincidencia se devuelve el contenido de
caché en el offset solicitado. Bus de datos
Memoria caché - Arquitectura de Computadoras - Ing. Jaír
17
Hnatiuk - Unlam (2021)
Asignación asociativa
Bus de direcciones
¿Cómo funciona? La CPU solicita la dirección 0x7D771B38, y la palabra NO está en la memoria caché (MISS)
Memoria Caché
Etiqueta Datos (32 bytes c/u)
Comparador 000000010111011100011011001
Comparador 000001010111011100011011001
Comparador 000011010111011100011011001
Comparador 011000101101011100011011001
Comparador …
Comparador
Para determinar si una palabra se encuentra en MC se ubica la línea de caché (siempre corresponderá una sola
para cada bloque de memoria) y luego se compara la etiqueta.
La comparación se efectúa solamente sobre el campo de etiqueta.
7D771B38 base 16 =
01111101011101110001101100111000 base 2
• La porción de línea de la dirección (001101100= 10810) determina que se verificará la línea 10810
de caché. Si en esa línea el campo etiqueta tiene el valor 01111101011101110, es un ACIERTO.
Por lo tanto se accede a la palabra ubicada en el offset 111000 (5610) de la línea.
• Si en la línea 108 el campo etiqueta tiene un valor distinto, es una FALLA.
En asignación directa se compara sólo la etiqueta que corresponde a la línea en que debería
encontrarse el bloque buscado.
Memoria caché - Arquitectura de Computadoras - Ing. Jaír
27
Hnatiuk - Unlam (2021)
Mapeo directo
Bus de direcciones
¿Cómo funciona? La CPU solicita la dirección 0x7D771B38, y la palabra está en la memoria caché (HIT)
Memoria Caché
Línea Etiqueta Datos (64 bytes c/u)
106 01111000011110000
107 01111101011101110
108 01111101011101110
109 11001101011101010
…
Comparador
¿Cómo funciona? La CPU solicita la dirección 0x7D771B38, y la palabra NO está en la memoria caché (MISS)
Memoria Caché
Línea Etiqueta Datos (64 bytes c/u)
106 01111000011110000
107 01111101011101110
108 01000000011111110
109 11001101011101010
…
Comparador
Cada bloque de memoria principal puede ubicarse en cualquier línea de caché dentro de un conjunto
acotado (normalmente de 2, 4, 8, o 16 líneas o vías).
La búsqueda de etiquetas se realiza en paralelo pero solo para las líneas del conjunto.
Cada bloque de MP (auto) puede utilizar cualquier ubicación en el estacionamiento dentro del conjunto.
Especifica un bloque de MP
S = log2(cantidad de bloques)
Una porción de la dirección (conjunto) se utiliza para especificar qué conjunto le corresponde. Se puede utilizar
cualquier línea dentro de dicho conjunto.
La comparación se efectúa solamente sobre el campo de etiqueta para las líneas del conjunto.
Memoria caché - Arquitectura de Computadoras - Ing. Jaír
33
Hnatiuk - Unlam (2021)
Asignación asociativa por conjuntos
Ejemplo: Supongamos direcciones de 32 bits (total direccionable = 4GB), líneas de 64 bytes,
tamaño de caché 32 KB. Se trata de una memoria caché asociativa de 4 vías.
1. ¿En cuántas líneas se divide la memoria caché?
2. ¿Cuál es el tamaño de cada campo de la dirección?
Cantidad de líneas =
tamaño de MC / tamaño de línea = 32 KB / 64 = 215 / 26 = 29= 512 líneas
Cantidad de bloques =
tamaño MP / tamaño de línea = 4 GB / 64 bytes = 232/26=226 = 64 M bloques
Cantidad de conjuntos =
cantidad de líneas / líneas por conjunto = 512 / 4 = 29/22=27 = 128 conjuntos
Longitud del campo de conjunto = Longitud del campo offset =
log2(cantidad de conjuntos) = log2(128) = log2(27) = 7 log2(tamaño de línea)=log2(64) = 6
Longitud del campo de etiqueta =
Longitud de dirección – Campo conjunto – Campo palabra = 32-7-6 = 19
¿Cómo funciona? La CPU solicita la dirección 0x7D771B38, y la palabra está en la memoria caché (HIT)
Memoria Caché
Etiqueta Datos (64 bytes c/u)
Comparador 1110111100001111000
Conjunto 108
Comparador 1101111110101110111
Comparador 0111110101110111000
Comparador 1111100110101110101
109
¿Cómo funciona? La CPU solicita la dirección 0x7D771B38, y la palabra NO está en la memoria caché (MISS)
Memoria Caché
Conjunto Etiqueta Datos (64 bytes c/u)
¿Quién se va?
Asociatividad
Dos vías Cuatro vías Ocho vías
Tamaño LRU Random FIFO LRU Random FIFO LRU Random FIFO
16 KB 114,1 117,3 115,5 111,7 115,1 113,3 109,0 111,8 110,4
64 KB 103,4 104,3 103,9 102,4 102,3 103,1 99,7 100,5 100,3
256 KB 92,2 92,1 92,5 92,1 92,1 92,5 92,1 92,1 92,5
Fallas en caché cada 1000 instrucciones comparando los algoritmos de reemplazo LRU, RANDOM y
FIFO para distintos tamaños de caché y número de conjuntos. Hay muy poca diferencia entre LRU y
random para los tamaños mayores de caché, aunque LRU se impone en memorias pequeñas. El
benchmark se hizo con tamaño de bloque de 64 bytes para arquitectura Alpha.
Conjunto n
Ejemplo: asociativa por conjuntos de 2 vías
Se reemplaza la línea en el conjunto 01 11001111
que ha estado más tiempo en la caché
sin que se haga referencia a ella.
Cuando se accede a una línea se pone 1 00001001
Conjunto n+1
en 1 el bit de uso de la misma y en 0
los bits de uso de las otras líneas del
conjunto. (Caso particular de 2 vías). 0 11111000
Al momento de deber reemplazarse
una línea, la que tenga el bit de uso en
cero será la víctima.
Bus de direcciones
Asociativa Directa
Línea: 0 1 2 3 4 5 6 7 Línea: 0 1 2 3 4 5 6 7
Memoria caché
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
0
1
2
3
4
5
6
7
8
Bloque: 9
Memoria principal
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
0
1
2
3
4
5
6
7
8
Bloque: 9
Memoria principal
Cómo funciona
1. Cuando el procesador realiza una escritura (CPU -> MC), los datos se colocan en el buffer de escritura a la
velocidad de reloj del procesador (CPU -> MC -> WB), y el procesador continua la ejecución.
2. Luego se realiza la escritura desde el write buffer en paralelo.
Si el write buffer está lleno el procesador se demora hasta que haya suficiente espacio en él.
3. Mientras se realizan operaciones que no son de escritura, el write buffer continúa escribiendo en memoria
principal hasta que esté completamente vacío.
Dirección Traducción de Dirección física
virtual direcciones
Bit de validez
Cada línea tiene asociado un bit de validez. Cuando una línea de MC aun no ha sido cargada se indica con este bit
que no es válida. Si este bit no está activo, la etiqueta de la línea no coincidirá en ninguna comparación. Se usa
para indicar si la línea contiene o no un bloque que pertenezca al proceso en ejecución. Limpiar la MC equivale a
poner los bits de validez en cero.
V D Etiqueta (tag)
Datos Datos
tacc = HR × 𝑡𝑎𝑐𝑐𝑀𝐶 + 𝑀𝑅 × [ 𝑡𝑎𝑐𝑐 MC + (𝑡𝑎𝑐𝑐 𝑀𝑃 ×Tamaño de bloque ) ] reemplazamos HR por (1-MR) y distribuimos en 2do term
tacc = (1−MR) × 𝑡𝑎𝑐𝑐𝑀𝐶 + 𝑀𝑅 × 𝑡𝑎𝑐𝑐 MC + 𝑀𝑅 × 𝑡𝑎𝑐𝑐 𝑀𝑃 ×Tamaño de bloque multiplicamos en 1er term
tacc = 𝑡𝑎𝑐𝑐𝑀𝐶−MR × 𝑡𝑎𝑐𝑐𝑀𝐶 + 𝑀𝑅 × 𝑡𝑎𝑐𝑐 MC + 𝑀𝑅 × 𝑡𝑎𝑐𝑐 𝑀𝑃 ×Tamaño de bloque hay dos términos que se anulan
tacc = 𝒕𝒂𝒄𝒄𝑴𝑪+ 𝑴𝑹 × 𝒕𝒂𝒄𝒄 𝑴𝑷 ×Tamaño de bloque
Tiempo de acceso medio = Tiempo de acceso total / Cantidad total de palabras leídas por CPU
Memoria caché - Arquitectura de Computadoras - Ing. Jaír
52
Hnatiuk - Unlam (2021)
Se podría sumar 3ns x 5 fallas al tiempo de acceso final.
Tiempo de acceso: ejemplo (respuesta) Corresponde al tiempo de buscar en MC en cada falla.
¿Cuál es el HIT RATE? ¿Qué impacto tiene la MC en la performance de este sistema? ¿Cómo podría mejorarse?
Memoria caché - Arquitectura de Computadoras - Ing. Jaír
53
Hnatiuk - Unlam (2021)
Caché unificada (unified) vs fraccionada o dividida (Split)
Caché unificada: almacena tanto instrucciones como Caché dividida: existen dos MC, una para
datos instrucciones y otra para datos
• Mayor tasa de aciertos • Elimina posibles bloqueos entre la unidad de
• Balancea la carga de datos e instrucciones búsqueda/decodificación y ejecución
• Sencilla: una sola para diseñar e implementar • Importante para pipelining
• Se suele implementar en L2, L3 • Se suele implementar en L1
Tiempo de acceso medio = Tacc L1 + MRL1 × (HRL2 × Tacc L2 + MRL2 × Tacc MP)
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
1 vía 2 vías4 vías8 vías 1 vía 2 vías4 vías8 vías 1 vía 2 vías4 vías8 vías 1 vía 2 vías4 vías8 vías 1 vía 2 vías4 vías 8 vías 1 vía 2 vías4 vías8 vías 1 vía 2 vías 4 vías8 vías 1 vía 2 vías4 vías8 vías
4 4 4 4 8 8 8 8 16 16 16 16 32 32 32 32 64 64 64 64 128 128 128 128 256 256 256 256 512 512 512 512
0,09
0,08
0,07
0,06
0,05
0,04
0,03
0,02
0,01
0
1 vía 2 vías 4 vías 8 vías 1 vía 2 vías 4 vías 8 vías 1 vía 2 vías 4 vías 8 vías 1 vía 2 vías 4 vías 8 vías 1 vía 2 vías 4 vías 8 vías 1 vía 2 vías 4 vías 8 vías 1 vía 2 vías 4 vías 8 vías 1 vía 2 vías 4 vías 8 vías
4 4 4 4 8 8 8 8 16 16 16 16 32 32 32 32 64 64 64 64 128 128 128 128 256 256 256 256 512 512 512 512
Memoria caché - Arquitectura de Computadoras - Ing. Jaír Hnatiuk - Unlam 59
(2021)
Composición de la tasa de fallos (parte 1)
Variación del tiempo de acceso en una memoria caché CMOS de acuerdo a tamaño y grado de asociatividad.
Basado en modelo CACTI 4, asumiendo tecnología de 90nm, un solo banco y bloques de 64 bytes.
Hennessy and Patterson Ed.5 Image Copyright © 2011, Elsevier Inc. All rights Reserved
Memoria caché - Arquitectura de Computadoras - Ing. Jaír Hnatiuk - Unlam 62
(2021)
Conclusiones