¿Cuál es la diferencia entre el caché de instrucciones y el caché de datos? Explique con un ejemplo simple.


Respuesta 1:

Es muy simple.

Después de que se hayan realizado todas las decodificaciones, se hayan realizado todas las traducciones, se hayan realizado todos los demás procesos de instrucciones, luego

La CPU recibe cadenas de bits.

Cualquier cadena particular contiene la información de,

  • Qué operación se necesita realizar y los datos sobre los que se debe realizar.

Por ejemplo, suponga que desea agregar dos números x e y. Escribiste una instrucción como x + = y.

Después de todas las conversiones del nivel alto al nivel más bajo, obtenemos una cadena como xxxxyyyyzzzzzzzz (donde x, y, z son bits binarios).

Esta cadena contiene x, que es un código para la operación que se necesita realizar. Además, tenemos y y z, son los valores necesarios para sumarlos.

Entonces obtenemos una instrucción de operación y los valores requeridos.

Ambos se obtienen del mm. Ahora, como saben, siempre intentamos reducir el tiempo de búsqueda, ya sea en mm o en disco duro. Así mantenemos caché.

La memoria caché almacena las cosas que podrían ser necesarias nuevamente.

Como también necesitábamos decodificar las instrucciones operativas, mantenemos sus versiones decodificadas en la memoria caché para una referencia rápida en el futuro.

Tenemos un caché separado para instrucciones y datos para evitar cualquier posible confusión entre ellos acerca de cuál es cuál.

Otro ejemplo, supongamos que está ejecutando un bucle.

{

para (i = 0; i <500; i ++)

cout <

}

Como puede ver, el ciclo está iterando i. Por lo tanto, tiene sentido almacenar la instrucción i ++ en la memoria caché para acceder a ella más rápido y así ejecutarla más rápido.

Por lo tanto, esta instrucción que contiene dos partes se almacena en un caché separado. La parte que contiene las instrucciones de la operación de iteración se almacena en la memoria caché de instrucciones. La variable i se almacena en el caché de datos.


Respuesta 2:

Un programa que se ejecuta en un procesador necesita obtener la secuencia de instrucciones (o código / programa) de la memoria. Al mismo tiempo, el código / instrucción puede necesitar acceder a datos desde diferentes ubicaciones de memoria.

Por ejemplo, supongamos que un programa lee una ubicación de memoria y la escribe en otra ubicación (un programa de copia como se muestra a continuación)

Load reg0, memA

Almacenar reg0, memB

Hay dos instrucciones (Cargar, Almacenar) que deben recuperarse de la memoria de instrucciones y el contenido memA debe leerse primero y luego escribirse en memB

El caché de instrucciones buscará y almacenará todas las instrucciones (en este caso, cargar, almacenar) en el caché de instrucciones, mientras que el caché de datos buscará previamente las ubicaciones de memoria a las que se accede (como memA)

Los beneficios de tener un caché separado en lugar de un solo caché es que tanto la búsqueda como la decodificación de instrucciones pueden proceder por separado de la ejecución de carga / almacenamiento.