Instituto Politécnico Nacional
Escuela Superior de Ingeniería
Mecánica y Eléctrica
Ingeniería en Computación
Academia de Comunicaciones y Electrónica
Arquitectura de
Computadoras
Alumna:
Partida Herrera Alma Karen
Profesor:
Bautista Arias José Luis
Grupo:
6CV14
Memoria Cache
La memoria caché es, como su propio nombre indica, un tipo de memoria específica. En un ordenador existen
diferentes tipos de memoria que se agrupan en dos grandes variantes: la memoria volátil y la memoria no
volátil, siendo la primera aquella que pierde los datos cuando apagamos el equipo (memoria RAM, por
ejemplo) y la segunda aquella que los mantiene (un disco duro o un SSD, por ejemplo).
Pues bien, la memoria caché es un tipo de memoria específica que está preparada para servir de apoyo al
procesador, y que es capaz de trabajar a velocidades muy elevadas. Esta memoria se divide en diferentes
niveles como dijimos, pero su función base es la misma: apoyar a la CPU para mejorar su rendimiento.
Tipos de Memoria cache.
Actualmente podemos diferenciar la memoria caché en L1, L2 y L3, nomenclaturas con las que se identifican
los distintos niveles en los que se encuadran. También se utiliza, aunque con poca frecuencia, un tipo de
memoria caché conocida como L4, sobre todo en procesadores que vienen con GPUs integradas.
La diferenciación entre memoria caché L1, L2 y L3 obedece a un orden de jerarquía establecido por cercanía
al procesador, velocidad y capacidad. Utilizaremos dos ejemplos extremos para que veáis las grandes
diferencias que puede haber en términos de cantidad en función de cada CPU, aunque la función de la
memoria caché será la misma en todos los casos.
Caché L1: es el nivel más básico, la más cercana al procesador y la más rápida.
También es la que menos capacidad tiene, por ejemplo, un procesador de dos núcleos
como el Pentium G4560 tiene 64 KB en total (32 KB por núcleo), aunque los modelos
más potentes (serie Xeon y Epyc) pueden alcanzar los 3 MB sin problema.
Caché L2: es un nivel intermedio que presenta un buen equilibrio entre capacidad,
cercanía y velocidad. Siguiendo el ejemplo anterior el Pentium G4560 tiene 512 KB
(256 KB por núcleo) de caché L2, pero un Threadripper 2990WX llega a los 16 MB en
total (512 KB por núcleo).
Caché L3: posiciona en un nivel inferior a la anterior tanto en cercanía como en
velocidad, pero tiene una capacidad mucho mayor. El Penitum G4560 tiene 3 MB de
caché L3 compartida en sus dos núcleos, mientras que el Threadripper 2990WX viene
con un total de 64 MB (16 MB compartidos por cada bloque de ocho núcleos).
Caché L4: es un tipo de memoria caché poco habitual que se utiliza normalmente
como apoyo para mejorar el rendimiento de GPUs integradas. Por ejemplo, el Core i5
5775C venía con 6 MB de caché L3 y 128 MB de eDRAM como caché L4, que se
utilizaba como buffer para la gráfica Intel Iris Pro 6200 que integraba. Así se mejoraba
el ancho de banda y se reducía el impacto de tener que recurrir a la RAM como
memoria gráfica.
Algoritmos de cache
Los algoritmos de reemplazo son los encargados de seleccionar que línea de la memoria cache se va a
reemplazar cuando la memoria caché está llena y tenemos que asignar una línea de la memoria principal en la
memoria caché.
Cada vez que el procesador accede a la memoria cache para buscar un dato y este no se encuentra en la
memoria caché, se produce lo que se denomina fallo en la memoria cache, entonces ocurre que tenemos que
ir a buscar ese dato a la memoria principal, obtener la fila en la que se encuentra y llevar este bloque de datos
a la memoria caché
FIFO:
Este algoritmo es el clásico, “first in, first out”, primero en entrar será el primero en salir. La
utilización de este algoritmo no es muy eficiente, ya que una línea que lleve mucho tiempo en la
memoria cache no tiene porque no utilizarse más que una que acabe de entrar.
Utilizando FIFO se irán reemplazando las líneas de la memoria cache que lleven más tiempo por las
nuevas.
LFU:
Con este algoritmo se irán reemplazando las líneas que se hayan utilizado menos veces por las
nuevas.
LRU:
Este algoritmo reemplaza las líneas que hace más tiempo que no se utilizan por las líneas nuevas que
necesita el procesador.
Jerarquía de caché
En la actualidad, la caché ha aumentado de manera exagerada el rendimiento de un procesador.
Tanto que, respecto a ella se han hecho multitud de reformas. Lo más habitual en la actualidad, es disponer de
una jerarquía de cachés.
Entre las características de los mismos, se encuentra la de poder realizar
muchas tareas a la vez, lo que origina que se realicen peticiones de datos e instrucciones de manera
simultánea a la memoria.
La jerarquía de caché soluciona estos problemas, ya que:
En su nivel más alto la caché está dividida en caché de datos y caché de instrucciones.
En los niveles intermedios de la jerarquía se coloca una caché general para cada core de los
procesadores multi-núcleo, lo que permite que cada uno de ellos tenga su propio banco de caché.
En los niveles inferiores se coloca una caché compartida, lo que permite facilitar los datos
compartidos y la división de trabajo con hilos (no procesos) de un mismo proceso (Intel tampoco
comparte esta caché).
En términos generales, la caché de nivel superior, se puede ver como una caché de la
caché de nivel inferior y así sucesivamente.
Durante este tema, y el anterior, estamos viendo las características generales de una
caché, dejando de lado las peculiaridades de cada caché según su nivel. En la imagen
adjunta, puedes comprobar el índice de fallos de caché originado por accesos a la RAM en diferentes
configuraciones de INTEL.