Sea un computador con un bus de 32 bits y memoria direccionable por bytes que dispone de una memoria cache de 128 KB y lineas de 32 bytes, con una organización de correspondencia directa. Considere el siguiente fragmento de código:
for (int i=0 ; i<512 ;i++)
for (j=0 ; j<512 ;j++)
c[i][j]= a[i][j] + b[i][j]
Donde a,b y c representan matrices cuadradas de 512x512 numeros enteros de 32 bits, que se almacenan en memoria en forma consecutiva. Cada matriz, a su vez, se almacena por filas. La matriz a comienza en la dirección hexadecimal 0x00100000.
Mi duda es con la parte d)
Proponga un diseño de memoria cache que mejore la tasa de aciertos para el algoritmo sin que ello suponga un incremento excesivo en el tiempo de busqueda en la memoria cache. Calcule la tasa de aciertos para este diseño.
A mi se me ocurrió implentar una organización de la cache set associative de 4 lineas por conjunto, y como en la letra decia que la cache tenia lineas de 32 bytes asumo que este sera el tamaño que tomare en este diseño, lineas de 32 bytes.
Entonces consideraria la dirección dividida en las siguientes partes:
| tag 17 bits | identificador del conj 10 bits | id byte 5 bits|
Puse | id byte 5 bits| y no palabra porque en la letra dice que la memoria direcciona de a bytes esto esta bien?
Mi duda es la siguiente,como los numeros de las matrices son de 32 bits, cuando se necesite buscar uno de estos numeros en la cache va ir trayendo el numero de a un byte. Entonces para obtener el numero total que consta de 4 bytes va tener que hacer cuatro busquedas en la cache?
Saludos y agradezco si alguien me puede responder esta duda.
Desde ya muchas gracias.