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:
- → Número de linea
- → Número de bloque
- → Líneas totales de la caché
Las líneas empiezan desde
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 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) →
- Número de líneas de la caché →
- Tamaño de los bloques (en words) →
- Tamaño de palabra (en bytes) →
Etiqueta | Índice de línea | Desplazamiento de palabra | Desplazamiento de byte |
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 directaBits del desplazamiento de byteSabiendo que el tamaño de palabra es de 4 bytes
Bits del desplazamiento de palabraSabiendo que el tamaño de los bloques es de 16 palabras
Bits del índice de líneaSabiendo que la caché cuenta con 256 líneas
Bits de la etiquetaSabiendo que las direcciones son de 32-bits y tambien sabiendo , y
La distribución de los bits de la dirección sale así