Tabla de contenido:

Diseño de un controlador de caché asociativo de cuatro vías simple en VHDL: 4 pasos
Diseño de un controlador de caché asociativo de cuatro vías simple en VHDL: 4 pasos

Video: Diseño de un controlador de caché asociativo de cuatro vías simple en VHDL: 4 pasos

Video: Diseño de un controlador de caché asociativo de cuatro vías simple en VHDL: 4 pasos
Video: qué es y cómo funciona la MEMORIA CACHÉ de tu CPU 2024, Junio
Anonim
Diseño de un controlador de caché asociativo de cuatro vías simple en VHDL
Diseño de un controlador de caché asociativo de cuatro vías simple en VHDL

En mi instructable anterior, vimos cómo diseñar un controlador de caché mapeado directo simple. Esta vez, avanzamos un paso. Diseñaremos un controlador de caché asociativo de cuatro vías simple. Ventaja ? Menos tasa de errores, pero a costa del rendimiento. Al igual que en mi blog anterior, estaríamos diseñando y emulando un procesador completo, la memoria principal y el entorno de caché para probar nuestro controlador de caché. Espero que encuentren esto como una referencia útil para comprender los conceptos y diseñar sus propios controladores de caché en el futuro. Dado que el modelo para el procesador (banco de pruebas) y el sistema de memoria principal son exactamente los mismos que en mi blog anterior, no los volveré a explicar. Consulte el instructable anterior para obtener detalles al respecto.

Paso 1: especificaciones

Especificaciones
Especificaciones

Un vistazo rápido a las especificaciones del controlador de caché que se presentan aquí:

  • Controlador de caché asociativo de cuatro vías (vaya a este enlace si busca Controlador de caché mapeado directo).
  • Caché de bloqueo de un solo banco.
  • Política de escritura simultánea en aciertos de escritura.
  • Política de corrección de errores de escritura.
  • Política de reemplazo de Tree Pseudo-LRU (pLRU).
  • Tag Array dentro del controlador.
  • Parámetros configurables.

Las especificaciones predeterminadas para la memoria caché y la memoria principal son las mismas que las de mi instructable anterior. Por favor refiérase a ellos.

Paso 2: Vista RTL de todo el sistema

Vista RTL de todo el sistema
Vista RTL de todo el sistema

La representación RTL completa del módulo superior se muestra en la figura (sin incluir el procesador). Las especificaciones predeterminadas para los autobuses son:

  • Todos los buses de datos son buses de 32 bits.
  • Bus de direcciones = Bus de 32 bits (pero solo 10 bits son direccionables aquí por la memoria).
  • Bloque de datos = 128 bits (Bus de ancho de banda ancho para lectura).
  • Todos los componentes funcionan con el mismo reloj.

Paso 3: Resultados de la prueba

El módulo superior se probó utilizando un banco de pruebas, que simplemente modela un procesador sin canalización, tal como hicimos en el último instructable. El banco de pruebas genera solicitudes de lectura / escritura de datos en la memoria con frecuencia. Esto simula las instrucciones típicas de "Cargar" y "Almacenar", comunes en todos los programas ejecutados por un procesador.

Los resultados de la prueba verificaron con éxito la funcionalidad del controlador de caché. A continuación se muestran las estadísticas de prueba observadas:

  • Todas las señales de lectura / escritura de error y acierto se generaron correctamente.
  • Todas las operaciones de lectura / escritura de datos se realizaron correctamente en las cuatro formas.
  • El algoritmo pLRU se verificó con éxito para el reemplazo de líneas de caché.
  • No se detectaron problemas de incoherencia / inconsistencia de datos.
  • El diseño se verificó con éxito en el tiempo para un Maxm. Frecuencia de reloj de funcionamiento = 100 MHz en la placa Xilinx Virtex-4 ML-403 (sistema completo), 110 MHz solo para el controlador de caché.
  • Se infirieron RAM de bloque para la memoria principal. Todas las demás matrices se implementaron en LUT.

Paso 4: archivos adjuntos

Los siguientes archivos se adjuntan aquí con este blog:

  • Archivos. VHD de Cache Controller, Cache Data Array, Main Memory System.
  • Banco de pruebas.
  • Documentación sobre el controlador de caché.

Notas:

  • Consulte la documentación para obtener una comprensión completa de las especificaciones del controlador de caché que se presentan aquí.
  • Cualquier cambio en el código depende de otros módulos. Por lo tanto, los cambios deben realizarse con prudencia.
  • Presta atención a todos los comentarios y encabezados que te he dado.
  • Si por alguna razón, las RAM de bloque no se infieren para la memoria principal, REDUZCA el tamaño de la memoria, seguido de cambios en el ancho del bus de direcciones en los archivos, etc. Para que la misma memoria se pueda implementar en LUT o RAM distribuida. Esto ahorrará tiempo y recursos de enrutamiento. O bien, vaya a la documentación FPGA específica y busque el código compatible para Block RAM y edite el código en consecuencia, y use las mismas especificaciones de ancho de bus de dirección. Misma técnica para FPGA Altera.

Recomendado: