ISRO | CS ISRO 2017 | Pregunta 38

Una CPU tiene una caché de asignación directa de 32 KB con un tamaño de bloque de 128 bytes. Suponga que A es una array bidimensional de tamaño 512 × 512 con elementos que ocupan 8 bytes cada uno. Considere el segmento de código

for (i =0; i < 512; i++) {
  for (j =0; j < 512; j++) {
    x += A[i][j];
  }
} 

Suponiendo que la array se almacena en el orden A[0][0], A[0][1], A[0][2]……, el número de errores de caché es
(A) 16384
(B) 512
(C) 2048
(D) 1024

Respuesta: (A)
Explicación:

Block size = 128 Byte
Number of elements in 1 block = 128/8 = 16
Block 0: A[0][0] to A[0][15]
Block 1: A[0][16] to A[0][31] and so on
For i=0: A[0][0] is not present in the cache, so there will be a miss but for the next 15 elements (j=1 to j=15), there will be no miss.
j runs from 0 to 512 and there will be a miss after every 16 elements. So total number of misses for i=0 is (512/16) = 32. 
The outer loop of i runs from 0 to 512 so the total number of misses will be 512 * 16 = 16834

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 *