📖
Esta estrategia consiste en asignar a cada bloque la siguiente línea respecto del bloque anterior
🟢 Ventajas
  • Solo se consulta una linea
  • Facil de implementar
🔴 Inconvenientes
  • Poca flexibilidad
  • Los bloques compiten por utilizar la línea
notion image

Asignación de la línea a un bloque


📖
Para hallar la línea a la que haremos correponder un cierto bloque usaremos la expresión:
nl=n_blk % l_totates\boxed{nl = n\_blk\ \%\ l\_totates}
  • nlnl → Número de linea
  • n_blkn\_blk → Número de bloque
  • l_totalesl\_totales → Líneas totales de la caché
💡
Las líneas empiezan desde 00

Consulta de un dato en base a su dirección


📖
Para consultar una dirección, dividiremos esta en partes para saber: dónde mirar en la caché (índice de línea), si el dato almacenado es efectivamente el que buscamos (etiqueta) y también en caso afirmativo, a partir de que word y byte queremos leer (desplazamientos de word y byte)
  • Etiqueta → Se usa para comprobar si lo que está guardado en la línea es el bloque que buscamos, o es otro. Para lograr esto compararemos la etiqueta calculada a partir de la dirección con la etiqueta almacenada en la caché
  • Índice de línea → Este parámetro nos indica en que línea de la caché debemos mirar
  • Desplazamiento de palabra → En caso de que el dato sea el que buscabamos, qué palabra desamos extraer
  • Desplazamiento de byte → En caso de que el dato sea el que buscabamos, a partir de que byte (de la palabra seleccionada) deseamos comenzar a leer
 
ℹ️
Distribución de los nn bits de una dirección entre los diferentes parámetros
💡
Para saber como se distribuyen los bits de una dirección entre los diferentes parámetros, debemos consultar las especificaciones de la memória, ya que la distribución del tamaño que abarcan estos parámetros depende de los siguentes valores:
  • Tamaño de las direcciones de memoria (en bits) → nn
  • Número de líneas de la caché → r=log2(x)r = \log_2(x)
  • Tamaño de los bloques (en words) → q=log2(x)q = \log_2(x)
  • Tamaño de palabra (en bytes) → p=log2(x)p = \log_2(x)
Etiqueta
Índice de línea
Desplazamiento de palabra
Desplazamiento de byte
nrqpn-r-q-p
rr
qq
pp

Ejemplo
📖
Enunciado
Sabiendo que los parámetros de la memoria y la caché son:
  • Caché de 256 líneas
  • Bloques de 16 palabras
  • Palabras de 4 bytes
  • Direcciones de 32 bits
Hallar todos los parámetros a partir de la dirección 0x12345678 según la estrategia de correspondencia directa
Bits del desplazamiento de byte (p)(p)
Sabiendo que el tamaño de palabra es de 4 bytes
p=log2(4)=2 (bits)p = \log_2(4) = 2\small\ (bits)
Bits del desplazamiento de palabra (q)(q)
Sabiendo que el tamaño de los bloques es de 16 palabras
q=log2(16)=4 (bits)q = \log_2(16) = 4\small\ (bits)
Bits del índice de línea (r)(r)
Sabiendo que la caché cuenta con 256 líneas
r=log2(256)=8 (bits)r = \log_2(256) = 8\small\ (bits)
Bits de la etiqueta
Sabiendo que las direcciones son de 32-bits y tambien sabiendo pp, qq y rr
etiqueta=32842=18 (bits)etiqueta = 32 - 8 - 4 - 2 = 18\small\ (bits)
La distribución de los bits de la dirección sale así
notion image