Tema 3.
Memoria Caché
0. Introducción
Tema 3. Memoria Caché
0. Introducción
Tema 3. Memoria Caché
0. Introducción
Tema 3. Memoria Caché
0. Introducción
Unidades de tamaño:
• Byte 1 byte = 8 bits
• Kilobyte 1 KB = 1024 bits 210 bytes
• Megabyte 1 MB = 1024 KB 220 bytes
• Gigabyte 1 GB = 1024 MB 230 bytes
• Terabyte 1 GB = 1024 GB 240 bytes
• Petabyte 1 PB = 1024 GB 250 bytes
• Exabyte 1 EB = 1024 PB 260 bytes
• Zettabyte 1 ZB = 1024 EB 270 bytes
• Yottabyte 1 YB = 1024 ZB 280 bytes
En comunicación se suele usar el kilobit y no el kilobyte y potencias de 10:
1 Kb = 1000 bits
1 KB = 1000 bytes
En almacenamiento (discos duros) algunas fabricantes no utilizan
potencias de 2 sino potencias de 10
• Kilobyte 1 KB = 1000 bytes 103 bytes
• Megabyte 1 MB = 1000 KB 106 bytes
• Gigabyte 1 GB = 1024 MB 109 bytes
Tema 3. Memoria Caché
0. Introducción
Tema 3. Memoria Caché
0. Introducción
Fuente:
https://reader.digitalbooks.pro/content/preview/books/38000/book/OEBPS/Text/chapter1.html
Registros
Tema 3. Memoria Caché
1. Principio de localidad
Hay distintos tipos de memoria
Funcionan como una sola
Jerarquía de memorias
Como se organizan los distintos tipos de memorias
Se basa en
Ø El HW más pequeño es más rápido
Ø El HW más rápido proporciona mayor velocidad
Ø Principio de localidad de las referencias
Tema 3. Memoria Caché
1. Principio de localidad
Principio de localidad de las referencias
Ø Los computadores tienden a reutilizar los datos e
instrucciones que utilizaron recientemente
Ø Tiene dos aspectos:
Temporal: en un tiempo cercano se accede a
datos/instrucciones a los que se ha accedido
recientemente
Ø Ej: bucles, uso de variables, etc
Tema 3. Memoria Caché
1. Principio de localidad
Principio de localidad de las referencias
Ø Los computadores tienden a reutilizar los datos e
instrucciones que utilizaron recientemente
Ø Tiene dos aspectos:
Espacial: la probabilidad de que el próximo
dato/instrucción que se utilice esté en una
posición de memoria cercana a la anterior es
elevada.
ØEj: ejecución secuencial por defecto,
elementos de un array, etc
Tema 3. Memoria Caché
1. Principio de localidad
Principio de localidad de las referencias
• Ejemplo:
suma=0;
for (i=0;i<n;i++) in suma i
suma + = v[i];
v[0] v[1] v[2] v[3] v[4]
Instr suma=0 Instr for Instr sum += …
Tema 3. Memoria Caché
1. Principio de localidad
Jerarquía de memoria
Ø El computador tiene un sistema de niveles de memoria
Ø Cada nivel está incluido en el siguiente
Tema 3. Memoria Caché
1. Principio de localidad
Jerarquía de memoria
Ø El computador tiene un sistema de niveles de memoria
Ø Cada nivel está incluido en el siguiente
Tema 3. Memoria Caché
1. Principio de localidad
Jerarquía de memoria
Ø El computador tiene un sistema de niveles de memoria
Ø Cada nivel está incluido en el siguiente
Ø Para acceder a memoria principal se sale del chip
y se usa un bus
Ø Para acceder a la memoria virtual dentro del
disco duro hay que realizar una operación de E/S
Tema 3. Memoria Caché
2. La memoria caché
Memoria pequeña, muy rápida, físicamente próxima a la
CPU, entre la CPU y la memoria principal
Ø Almacena copia de partes de la memoria principal
(Ppio. De Localidad)
Tema 3. Memoria Caché
2. La memoria caché
Acierto de Caché (cache hit): la CPU solicita un dato/inst, y
está en la memoria caché, la cual se lo devuelve.
Fallo de Caché (cache miss): la CPU solicita un dato/inst. y
no está en la memoria caché. Se transfiere un bloque de la
memoria principal a la caché, que incluye el dato solicitado.
Tema 3. Memoria Caché
2. La memoria caché
Bloque (número de líneas): unidad de transferencia entre la
memoria principal y la memoria caché (tamaño > tamaño_palabra)
Fallo de Página/Segmento: si el dato/inst. no está en la memoria
principal, se trae de la memoria virtual a la memoria principal la
página o segmento que lo contiene.
Tema 3. Memoria Caché
2. La memoria caché
Tema 3. Memoria Caché
2. La memoria caché
Tema 3. Memoria Caché
2. La memoria caché
Tema 3. Memoria Caché
2. La memoria caché
Tipos de caché miss:
• Cold (compulsory) miss:
• cuando la caché está vacía
• Conflict miss:
• cuando el bloque sustituido se vuelve a necesitar
• Capacity miss:
• cuando los bloques activos (working set) no caben en la caché
Tema 3. Memoria Caché
2. La memoria caché
Tema 3. Memoria Caché
3. Ubicación de bloque
La CPU indica una dirección de memoria principal donde
está el dato/instr.
Ø La caché usa esa dirección para encontrarlo.
Ø Hay una función de correspondencia (organización
de la memoria caché) implementada por HW
Ø Puede ser:
Ø Mapeo directo
Ø Totalmente asociativa
Ø Asociativa por conjuntos
Tema 3. Memoria Caché
3. Ubicación de bloque
Mapeo directo
Ø Cada bloque puede estar en una y sólo una
posición de la caché.
Ø Si la memoria caché tiene espacio para C
bloques, un bloque j de la memoria principal se
almacenará en la posición i de la memoria caché:
Ø i = j mod C
Tema 3. Memoria Caché
3. Ubicación de bloque
Totalmente asociativa
Ø Cada bloque de la memoria principal puede estar
en cualquier posición de la caché.
Tema 3. Memoria Caché
3. Ubicación de bloque
Asociativa por conjuntos
Ø La memoria caché se divide en q conjuntos cada uno de
los cuales consta de r bloques (líneas)
Ø Asociativa por conjuntos de r vías
Ø C=q*r
Ø Para un bloque j de memoria principal, el conjunto k se
elige por mapeo directo:
Ø k = j mod q
Ø Dentro de un conjunto la dirección es totalmente
asociativa (se puede almacenar en cualquier posición).
Tema 3. Memoria Caché
3. Ubicación de bloque
Asociativa por conjuntos
Tema 3. Memoria Caché
4. Identificación de bloque
Los bloques de memoria caché tienen asociada una etiqueta
Cuando la CPU genera una dirección para acceder a una
palabra de la memoria principal su formato desde el punto
de vista de la memoria caché depende del tipo de
organización de la memoria caché
Tema 3. Memoria Caché
4. Identificación de bloque
Mapeo directo
El tamaño de los campos es:
ØCampo palabra: p=log2(K) bits siendo K el número de
unidades mínimas direccionables por bloque
ØCampo bloque: b= log2(C) bits siendo C el número de
bloques de la memoria caché
ØCampo etiqueta: e=n-p-b bits siendo n el número de bits
de la dirección de memoria principal
Tema 3. Memoria Caché
4. Identificación de bloque
Mapeo directo
El funcionamiento es:
1. Se identifica un bloque de la memoria caché con el campo
bloque.
2. Se compara la etiqueta de ese bloque de la memoria caché con
el campo etiqueta de la dirección solicitada por el procesador.
a) Si coinciden, con el campo palabra se selecciona la palabra
pedida dentro del bloque y se le entrega a la CPU.
b) Si al comparar las etiquetas no coinciden (no se encuentra
en la memoria caché) se produce un fallo.
Ø Se busca el bloque que contiene la palabra en
memoria principal.
La dirección del bloque que contiene la palabra se
consigue poniendo el campo palabra todo a 0s.
Tema 3. Memoria Caché
4. Identificación de bloque
Mapeo directo
Tema 3. Memoria Caché
4. Identificación de bloque
Totalmente asociativa
El tamaño de los campos es:
ØCampo palabra: p=log2(K) bits siendo K el número de
unidades mínimas direccionables por bloque
ØCampo etiqueta: e=n-p bits siendo n el número de bits de
la dirección de memoria principal
Tema 3. Memoria Caché
4. Identificación de bloque
Totalmente asociativa
El funcionamiento es:
1.Se comparan simultáneamente todas las etiquetas de la
memoria caché con el campo etiqueta de la dirección solicitada
por el procesador.
a) Si coinciden, con el campo palabra se selecciona la
palabra pedida dentro del bloque y se le entrega a la CPU.
b) Si no coinciden (no se encuentra en la memoria caché) se
produce un fallo.
Ø Se busca el bloque que contiene la palabra en
memoria principal.
La dirección del bloque que contiene la palabra se
consigue poniendo el campo palabra todo a 0s.
Tema 3. Memoria Caché
4. Identificación de bloque
Totalmente asociativa
Tema 3. Memoria Caché
4. Identificación de bloque
Asociativa por conjuntos
El tamaño de los campos es:
ØCampo palabra: p=log2(K) bits siendo K el número de
unidades mínimas direccionables por bloque
ØCampo conjunto: c= log2(q) bits siendo q el número de
conjuntos de la memoria caché
ØCampo etiqueta: e=n-p-c bits siendo n el número de bits
de la dirección de memoria principal
Tema 3. Memoria Caché
4. Identificación de bloque
Asociativa por conjuntos
El funcionamiento es:
1.Se identifica un conjunto de la memoria caché con el campo
conjunto.
2.Se comparan simultáneamente todas las etiquetas de ese
conjunto de la memoria caché con el campo etiqueta de la
dirección solicitada por el procesador.
a) Si coinciden, con el campo palabra se selecciona la
palabra pedida dentro del bloque y se le entrega a la CPU.
b) Si no coinciden (no se encuentra en la memoria caché)
se produce un fallo.
Ø Se busca el bloque que contiene la palabra en
memoria principal.
La dirección del bloque que contiene la palabra se
consigue poniendo el campo palabra todo a 0s.
Tema 3. Memoria Caché
4. Identificación de bloque
Asociativa por conjuntos
Tema 3. Memoria Caché
5. Sustitución de bloque
Al traer un bloque de memoria principal, ¿qué bloque
sustituimos en la memoria caché?
Ø Mapeo directo: no podemos elegir
Ø Totalmente asociativa: usando algoritmos
Ø Asociativa por conjuntos: dentro del conjunto en cuestión,
usando algoritmos
Algoritmos:
Ø Aleatorio
Ø FIFO (First In, First Out)
ü Sustituye la línea que lleva más tiempo en la caché
Ø LRU (Least Recently Used)
ü Sustituye la línea que hace más tiempo que no se usa
Ø LFU (Least Frequently Used)
ü Sustituye la línea que se ha utilizado menos
Tema 3. Memoria Caché
6. Estrategia de escritura
Si se escribe…
Ø Escritura inmediata (Write Through): se escribe en
memoria caché y en memoria principal
Ø Consistencia
Ø Mucho tráfico entre memorias ppal. y caché
Ø Post-escritura (Write Back): se escribe en memoria
caché. Cuando se sustituye el bloque, se mira si se ha
modificado (lo indica el bit dirty).
Ø Si no se ha modificado, se reemplaza.
Ø Si se ha modificado, se escribe en memoria
principal y luego se reemplaza.
Ø Disminuye el tráfico
Ø Inconsistencia
Tema 3. Memoria Caché
7. Rendimiento
Tiempo de Ejecución = (nº de ciclos sin fallos de caché + nº de ciclos de
detención por fallo) * Tclk
Nº de ciclos de detención por fallo = IF * PF
IF = Índice de fallos
PF = Penalización por fallo
Tema 3. Memoria Caché
8. Ejemplos
Intel Core i7
Tema 3. Memoria Caché
8. Ejemplos
Intel Meteor Lake
Tema 3. Memoria Caché
8. Ejemplos
Intel Alder Lake Intel Meteor Lake
Tema 3. Memoria Caché
8. Ejemplos
AMD Quad Core
Tema 3. Memoria Caché
8. Ejemplos
AMD Ryzen
Tema 3. Memoria Caché
8. Ejemplos
AMD EPYC
Tema 3. Memoria Caché
8. Ejemplos
AMD EPYC