PUERTA | PUERTA CS 2008 | Pregunta 71

Considere una máquina con una caché de datos asociativa establecida de 2 vías de 64 Kbytes de tamaño y un tamaño de bloque de 16 bytes. La caché se gestiona mediante direcciones virtuales de 32 bits y el tamaño de la página es de 4 Kbytes. Un programa para ser ejecutado en esta máquina comienza de la siguiente manera:

double ARR[1024][1024];
int i, j;
  
// Initialize array ARR to 0.0
for(i = 0; i < 1024; i++)
    for(j = 0; j < 1024; j++)
        ARR[i][j] = 0.0;

El tamaño del doble es de 8 bytes. La array ARR se encuentra en la memoria a partir del comienzo de la página virtual 0xFF000 y se almacena en el orden principal de las filas. La memoria caché está inicialmente vacía y no se realiza ninguna búsqueda previa. Las únicas referencias a la memoria de datos que hace el programa son las del arreglo ARR.

El tamaño total de las etiquetas en el directorio de caché es
(A) 32 Kbits
(B) 34 Kbits
(C) 64 Kbits
(D) 68 Kbits

Respuesta: (D)
Explicación: Dirección virtual = 32 bits
La dirección de caché tiene la forma: ETIQUETA | CONJUNTO | BLOQUE
Para BLOQUE de 16 bytes, necesitamos 4 bits.
Número total de conjuntos (cada conjunto contiene 2 bloques) = 64 KB / (2 * 16) B = 2 11
Entonces, Número de bits SET = 11
Número de bits TAG = 32 – (11 + 4) = 17
 
Por lo tanto, la dirección de caché = 17 | 11 | 4 (ETIQUETA | CONJUNTO | BLOQUE)
Tamaño de memoria de etiqueta = Número de bits de etiqueta * Número total de bloques
= 17 * 2 * 2 11(Número total de bloques = 2 * Número total de conjuntos)
= 68 KB
 
Por lo tanto, D es la opción correcta.
Cuestionario de esta pregunta

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *