Estudio memorias caché. Se supone que debo calcular la tasa de aciertos de datos para una llamada de función con un caché de datos asignados directos de 1024 bytes y un tamaño de bloque de 16 bytes.
sum(0x55aa1000,10);
La función está en el ensamblaje de MIPS 32
sum:
xor $v0, $v0, $v0
loop:
lb $t0, 0($a0)
add $v0, $v0, $t0
addi $a0, $a0, 1
addi $a1, $a1, -1
bne $a1, $zero, loop
jr $ra
Mi intento de solución:
El campo establecido es de 7 bits porque 1024/16 = 128 = 2 ^ 7 y el campo de compensación de bytes es de 4 bits porque el tamaño del bloque es 16. Por lo tanto, el campo de etiqueta es 32-7-4 = 21 bits. Las etiquetas son las mismas para todos los accesos de datos (?)
Dado que el bucle incrementa el desplazamiento de los datos en 1 byte y disminuye el contador en 1, se ejecutará 10 veces, la primera vez será una falta y el resto será un éxito porque está dentro del mismo bloque.
Por lo tanto, la tasa de aciertos será del 90%.
¿Mi solución es correcta?