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
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
nl → Número de linea
n_blk → Número de bloque
l_totales → Líneas totales de la caché
💡
Las líneas empiezan desde 0
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 n bits de una dirección entre los diferentes parámetros
💡
Para saber como se distribuyen losbits 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) → n
Número de líneas de la caché → r=log2(x)
Tamaño de los bloques (en words) → q=log2(x)
Tamaño de palabra (en bytes) → p=log2(x)
Etiqueta
Índice de línea
Desplazamiento de palabra
Desplazamiento de byte
n−r−q−p
r
q
p
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)
Sabiendo que el tamaño de palabra es de 4 bytes
p=log2(4)=2(bits)
Bits del desplazamiento de palabra (q)
Sabiendo que el tamaño de los bloques es de 16 palabras
q=log2(16)=4(bits)
Bits del índice de línea (r)
Sabiendo que la caché cuenta con 256 líneas
r=log2(256)=8(bits)
Bits de la etiqueta
Sabiendo que las direcciones son de 32-bits y tambien sabiendo p, q y r
etiqueta=32−8−4−2=18(bits)
La distribución de los bits de la dirección sale así