Tabla de contenido:

Diseño de un controlador de caché simple en VHDL: 4 pasos
Diseño de un controlador de caché simple en VHDL: 4 pasos

Video: Diseño de un controlador de caché simple en VHDL: 4 pasos

Video: Diseño de un controlador de caché simple en VHDL: 4 pasos
Video: FPGA || Diseño digital con VHDL y VERILOG 2024, Junio
Anonim
Diseño de un controlador de caché simple en VHDL
Diseño de un controlador de caché simple en VHDL

Estoy escribiendo este instructivo, porque me resultó un poco difícil obtener algo de código VHDL de referencia para aprender y comenzar a diseñar un controlador de caché. Así que diseñé un controlador de caché desde cero y lo probé con éxito en FPGA. He presentado aquí un controlador de caché mapeado directo simple, así como también modelé un sistema de memoria de procesador completo para probar el controlador de caché. Espero que este instructivo les resulte útil como referencia para diseñar sus propios controladores de caché.

Paso 1: especificaciones

Especificaciones
Especificaciones

Estas son las principales especificaciones del Cache Controller que vamos a diseñar:

  • Mapeado directo. (vaya a este enlace si busca Controlador de caché mapeado asociativo)
  • Caché de bloqueo de un solo banco.
  • Política de escritura simultánea en aciertos de escritura.
  • Política de asignación de no escritura o escritura alrededor de errores de escritura.
  • Sin búfer de escritura u otras optimizaciones.
  • Tag Array está incorporado.

Además de eso, también diseñaremos una memoria caché y un sistema de memoria principal.

Las especificaciones predeterminadas (configurables) de la memoria caché:

  • Caché de un solo banco de 256 bytes.
  • 16 líneas de caché, cada línea de caché (bloque) = 16 bytes.

Las especificaciones de la memoria principal:

  • Memoria de lectura / escritura sincrónica.
  • Memoria intercalada de varios bancos: cuatro bancos de memoria.
  • Cada tamaño de banco = 1 kB cada uno. Por lo tanto, tamaño total = 4 kB.
  • Memoria direccionable de palabra (4 bytes) con bus de direcciones de 10 bits.
  • Mayor ancho de banda para lectura. Ancho de datos de lectura = 16 bytes en un ciclo de reloj.
  • Escribir ancho de datos = 4 bytes.

NOTA: consulte mi instructable más reciente si está buscando un diseño de controlador de caché asociativo de 4 vías

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: entorno de prueba

El módulo superior se probó utilizando un banco de pruebas, que simplemente modela un procesador sin canalización (¡porque diseñar un procesador completo no es nada fácil!). 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.
  • 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 = 110 MHz en la placa Xilinx Virtex-4 ML-403 (sistema completo), 195 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: