¿Qué es el caché? ¿Para qué se utiliza el caché? Explicar varias estrategias de reemplazo de caché.
Qué es la caché
La caché es un tipo especial de memoria, que consta de un componente de almacenamiento de caché y un componente de control de caché. El componente de almacenamiento caché generalmente utiliza el mismo tipo de dispositivo de almacenamiento semiconductor que la CPU, y la velocidad de acceso es varias veces o incluso diez veces más rápida que la memoria. Los componentes del controlador de caché incluyen el registro de direcciones de la memoria principal, el registro de direcciones de caché, el componente de conversión de direcciones de memoria caché principal y el componente de control de reemplazo, etc. En cuanto a cómo funcionan, cuáles son sus funciones, etc., creo que no necesitamos investigar más. Es suficiente saber que, en general, la caché se divide en caché L1 (que a su vez se divide en caché de datos y caché de código). y caché L2.
De acuerdo con la ley de localidad del programa, se puede ver que cuando un programa se está ejecutando, siempre utiliza con frecuencia instrucciones y datos que se han utilizado recientemente. Esto proporciona una base teórica para la estrategia de reemplazo. Teniendo en cuenta varios factores, como la tasa de aciertos, la dificultad de implementación y la velocidad, la estrategia de reemplazo puede incluir el método aleatorio, el método de primero en entrar, primero en salir, el método utilizado menos recientemente, etc.
1. Método aleatorio (método RAND)
El método aleatorio determina aleatoriamente los bloques de almacenamiento de reemplazo. Configure un generador de números aleatorios y determine el bloque de reemplazo en función del número aleatorio generado. Este método es simple y fácil de implementar, pero la tasa de aciertos es relativamente baja.
2. Método primero en entrar, primero en salir (método FIFO)
El método primero en entrar, primero en salir selecciona el primer bloque transferido para su reemplazo. Cuando es probable que el bloque que se transfiere primero y se golpea varias veces sea reemplazado primero, no cumple con la regla de localidad. La tasa de aciertos de este método es mejor que la del método aleatorio, pero aún no cumple con los requisitos. El método primero en entrar, primero en salir es fácil de implementar. Por ejemplo, la caché de la máquina Solar-16/65 utiliza un método de asociación de conjuntos. Cada grupo tiene 4 bloques. Cada bloque se configura con un contador de dos dígitos. Se carga o reemplaza un bloque, el contador del bloque se pone a 0 y los contadores de otros bloques en el mismo grupo se incrementan en 1. Cuando es necesario un reemplazo, se selecciona el bloque con el valor de conteo más grande para ser reemplazado.
3. Método utilizado menos recientemente (método LRU)
El método LRU se basa en el uso de cada bloque y siempre selecciona el bloque utilizado menos recientemente para ser reemplazado. Este método refleja mejor las leyes locales del programa.
Hay muchas formas de implementar la política LRU. A continuación se presentan brevemente las ideas de diseño del método de contador, el método de pila de registros y el método de comparación de lógica de hardware.
Método contador: Cada bloque del caché se configura con un contador. Las reglas de operación del contador son:
(1) Para el bloque que se transfiere o reemplaza, su contador. se borra a "0", mientras que otros contadores se incrementan en "1".
(2) Cuando se produce un acceso, los valores de recuento de todos los bloques se comparan con el valor de recuento del bloque de acceso. Si el valor de recuento es menor que el valor de recuento del bloque de acceso, el valor de recuento del bloque aumenta en "1"; si el valor de recuento de bloques es mayor que el valor de recuento de bloques de visitas, el valor permanece sin cambios. Finalmente, el contador de bloqueo de golpes se pone a 0.
(3) Cuando es necesario reemplazar, se selecciona para reemplazar el bloque con el valor de recuento más grande.