1. Detección de Miss: El controlador de caché detecta que los datos solicitados no están presentes en el caché. Esto generalmente se realiza a través de una comparación de la dirección solicitada con las direcciones almacenadas en el índice de caché y las estructuras de etiquetas.
2. Reenvío de solicitud: El controlador de caché envía una solicitud al siguiente nivel de la jerarquía de memoria (memoria principal). Esta solicitud especifica la dirección de memoria de los datos requeridos.
3. Acceso a la memoria: La memoria principal (u otro almacenamiento) recibe la solicitud y recupera el bloque de datos solicitado. Esta es la parte más lenta del proceso, ya que acceder a la memoria principal es significativamente más lenta que acceder al caché. El tamaño del bloque de datos recuperado está determinado por el tamaño de línea del caché (o tamaño del bloque). Esta recuperación implica la traducción de direcciones (convertir una dirección virtual en una dirección física) si se está utilizando memoria virtual.
4. Transferencia de datos: Una vez que se recupera el bloque de datos de la memoria principal, se transfiere al caché. Esta transferencia generalmente ocurre en un bus dedicado (por ejemplo, el bus del sistema) optimizado para el movimiento de datos de alta velocidad.
5. Colocación de caché: El bloque de datos recuperado se coloca en el caché. La política de reemplazo de caché (por ejemplo, LRU, menos usado recientemente, FIFO, primero en primera salida) determina qué bloqueo existente en el caché se reemplaza si el caché está lleno.
6. Acceso de CPU: Después de que los datos se cargan con éxito en el caché, la CPU puede acceder a él. La CPU esperará durante los pasos 3 y 4, lo que hace que la CPU se detenga y disminuya drásticamente el rendimiento.
Diferentes tipos de fallas y manejo:
El manejo de las fallas de caché se puede refinar más dependiendo del * tipo * de la señorita:
* Compulsor (o frío) señorita: Esto sucede cuando se accede a un bloque de datos por primera vez. No hay forma de evitar estas fallas, ya que los datos simplemente no estaban en el caché anteriormente.
* Capacidad Miss: Esto ocurre cuando el caché es demasiado pequeño para contener todos los datos que necesita la CPU. Las estrategias de gestión de caché más sofisticadas (por ejemplo, cachés más grandes, políticas de reemplazo mejoradas) pueden mitigar las fallas de capacidad.
* conflicto señorita: Esto ocurre cuando múltiples bloqueos de datos se asignan al mismo conjunto de caché (debido a la forma en que las direcciones se asignan en el caché), lo que resulta en desalojos repetidos. El uso de técnicas como el set-asociativo o los cachés totalmente asociativos puede reducir las fallas de conflictos.
* Interacción de capacidad/conflicto: Estos dos pueden superponerse, lo que los hace difíciles de analizar.
Soporte de hardware para el manejo de Miss:
El hardware moderno emplea varias técnicas para optimizar el manejo de la falla de caché:
* Precisión previa: El hardware carga de manera proactiva los datos en el caché que probablemente se necesite pronto, reduciendo las fallas futuras.
* Caches de redacción: En lugar de volver a escribir los datos inmediatamente a la memoria principal en una operación de escritura, los cachés de retroceso de escritura almacenan datos modificados en la memoria caché y vuelvas a escribirlo a la memoria principal solo cuando la línea de caché está desalojada. Esto reduce el tráfico de memoria.
* cachés de niveles múltiples: Muchos sistemas usan múltiples niveles de cachés (L1, L2, L3, etc.), con cachés más rápidos pero más pequeños más cerca de la CPU y los cachés más lentos pero más grandes más lejos. Esta estructura jerárquica minimiza el impacto de las fallas de caché mediante el uso de cachés más rápidos para datos de acceso frecuentes.
* TLBS gestionados por hardware (traducción de buffers LookAside): Entradas de la tabla de la página de caché TLBS para acelerar la traducción de direcciones virtuales a físicas, reduciendo la sobrecarga asociada con los accesos de memoria.
En resumen, el manejo de caché Misses es un proceso complejo que involucra la coordinación de hardware entre la CPU, el controlador de caché y la memoria principal. El manejo eficiente de las fallas de caché es crucial para el rendimiento general del sistema. Gran parte de la mejora en el rendimiento de la CPU a lo largo de los años ha sido impulsado por los avances en la tecnología de caché y las estrategias de manejo de la falta.