Tabla de contenido:
- Paso 1: especificaciones
- Paso 2: Vista RTL de todo el sistema
- Paso 3: Resultados de la prueba
- Paso 4: archivos adjuntos
Video: Diseño de un controlador de caché asociativo de cuatro vías simple en VHDL: 4 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:41
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
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
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:
Controlador de semáforo Arduino con LED RBG - 4 vías: 3 pasos
Controlador de semáforo Arduino con LED RBG | 4 vías: en esta publicación, aprenderá cómo hacer un controlador de semáforo Arduino. Este controlador de semáforo se utilizará para controlar el flujo de tráfico. Estos se pueden aplicar en áreas de alto tráfico para evitar bloqueos de tráfico o accidentes
Diseño de un controlador de interrupciones programable en VHDL: 4 pasos
Diseño de un controlador de interrupciones programable en VHDL: Estoy abrumado por el tipo de respuestas que recibo en este blog. Gracias a todos por visitar mi blog y motivarme a compartir mis conocimientos con ustedes. Esta vez, voy a presentar el diseño de otro módulo interesante que vemos en todos los SOC: Interrupt C
Diseño de un controlador de caché simple en VHDL: 4 pasos
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. Tengo p
Diseño de un controlador VGA simple en VHDL y Verilog: 5 pasos
Diseño de un controlador VGA simple en VHDL y Verilog: En este instructable, vamos a diseñar un controlador VGA simple en RTL. El controlador VGA es el circuito digital diseñado para controlar pantallas VGA. Lee de Frame Buffer (memoria VGA) que representa el marco que se mostrará y genera la necesidad
Interruptores de tres y cuatro vías: cómo funcionan: 6 pasos
Interruptores de tres y cuatro vías: cómo funcionan: si bien un interruptor de tres vías es muy simple para muchos que visitan Instructables.com, es un misterio para muchos otros. Entender cómo funciona el circuito satisface la curiosidad. También puede ayudar a diagnosticar un interruptor de tres vías que no funciona porque alguien