Caché de mapeo directo: cómo determinar la descomposición de direcciones

Caché de mapeo directo: cómo determinar la descomposición de direcciones

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.

información relacionada