¿Cómo decide una CPU si almacenar memoria en caché o RAM?

Es muy sencillo.

Una vez que el caché se llena por completo, para almacenar los datos nuevos se debe descartar una cantidad mínima de los datos antiguos.

Pero la decisión de descartar los datos antiguos no puede ser aleatoria o ilógica.

Por lo tanto, tenemos varios algoritmos de reemplazo de caché.

Por ejemplo:

  • FIFO, aquí se descartarán los datos más antiguos. Es decir, si A se almacenó antes que B, entonces A se descartará primero.
  • LIFO, aquí los datos más recientes se descartarán primero.

Pero estas técnicas son algo estúpidas.

Entonces tenemos algunas técnicas complejas como:

  • LRU: aquí se descartan los datos que se usaron hace más tiempo. Aquí la lógica es que estos datos antiguos ya no son necesarios.
  • LFU: aquí se eliminan los datos que se necesitaban con menos frecuencia que otros. Aquí la lógica es retener los datos que se necesitaban un mayor número de veces.

Hay muchos más algoritmos en el artículo de Wikipedia a continuación:

https://googleweblight.com/?lite…

La CPU hará uso de los patrones de acceso a la memoria para decidir qué almacenar en caché y qué no debe almacenarse en caché, esto se conoce como ‘captación previa’, implementado principalmente por procesadores (captación previa de hardware).

Supongamos que declara una memoria secuencial, una matriz de 100 enteros.

a [100]

Entonces, la primera vez que accede (lee / escribe) a cualquier elemento de la matriz, ni el programador o compilador le indicará al procesador que almacene en caché todos los elementos de la matriz en líneas de caché. Más bien es la funcionalidad del hardware, que verá que los elementos que se ordenan en ubicaciones de memoria contiguas, utilizarán la localidad de referencia y buscarán otras ubicaciones de memoria que lo rodeen en la caché.

Dicho esto, ahora ha accedido a un [10], el procesador no necesita volver a la RAM y emitir una actualización de Cache, sino que puede leer directamente desde Cache y reducir el tiempo de latencia / acceso a nanosegundos.

El mecanismo de preselección también se puede hacer en el software, pero una captación previa incorrecta agregará una penalización de rendimiento, ya que toda la línea de caché debe ser desalojada y luego escribir los valores correctos en la caché.

Como programador, no puede indicarle a la CPU qué valores se almacenarán en la memoria caché, es puramente a voluntad del hardware subyacente tomar la llamada.