
Supongamos que tengo una memoria direccionable de 32 bits y un caché de mapeo directo de 4 kib. Digamos que cada entrada (línea) del caché se compone de una palabra única (32 bits).
Podemos inferir que el tamaño del índice es de 10 bits, ya que 4*2^10 bytes / 4 = 2^10 palabras = 2^10 líneas.
Ahora, como sólo hay una palabra por línea, supongo que no necesitamos un campo de desplazamiento. Por lo tanto, las direcciones del caché se descomponen de esta manera:
- Bits 0 a 9: índice
- Bits 10 a 31: Etiqueta
¿Mi lógica está equivocada de alguna manera?
Respuesta1
Necesitamos 2 bits para el desplazamiento, porque un valor de 32 bits tiene 4 bytes y se puede acceder a cada byte individualmente y, por lo tanto, el desplazamiento podría ser de 0,1,2 o 3.
Por lo tanto, la caché asignada directamente descompone una dirección de esta manera:
- Bits 0 a 1: compensación
- Bits 2 a 11: índice
- Bits 12 a 31: etiqueta
Respuesta2
Una línea de caché suele tener 64 bytes; los bits de desplazamiento 0 a 6 seleccionan un byte en la línea.