Implementación de caché de CPU en VHDL

0

Se me asignó un proyecto para diseñar una memoria caché con algunas funciones avanzadas (usando algoritmos de caché eficientes) e implementarla en VHDL.

Conozco la teoría requerida para llevar a cabo este proyecto y estoy tratando de implementar un conjunto asociativo de 4 vías L1 y un conjunto de 8 vías asociativo L2, pero el problema es implementar el código en VHDL y simularlo en Xilinx ISE.

El problema principal radica aquí: incluso si implemento el caché en VHDL, ¿no necesitaré una MPU para simularlo? E incluso si diseño una MPU, ¿qué tendría que hacer exactamente para simular el caché (para la simulación, como sé, sería necesario ejecutar algún tipo de programa en el sistema)?

    
pregunta V Shreyas

2 respuestas

4

No, no necesita una MPU en su banco de pruebas.

Considere cómo una MPU interactuaría con su caché: qué señales manejaría, qué impulsaría esas señales y cuándo.

Y escriba algunos procedimientos que impulsarán esas señales de la misma manera que lo haría una MPU, por ejemplo. para leer un byte o escribir una palabra en direcciones específicas en la memoria. No es necesario que estos procedimientos sean sintetizables, por lo que si la MPU dirija una señal 5 ns después de un reloj, el procedimiento puede usar la cláusula "después" para generar el retardo correcto.

Este conjunto de procedimientos se denomina "Modelo funcional de bus" (BFM) de la interfaz entre MPU y caché (puede leer mucho sobre BFM en línea).

Luego, su banco de pruebas puede ser tan complejo como desee, llamar a estos procedimientos para leer y escribir en la memoria y verificar que la lectura de los datos sea la esperada.

    
respondido por el Brian Drummond
4

Para probar la implementación de su caché, necesita un banco de pruebas de simulación. Un banco de pruebas es un código VHDL adicional que controla las entradas de su módulo y, opcionalmente, supervisa sus salidas y / o recopila estadísticas sobre su comportamiento.

Los modelos de

Testbench no suelen ser sintetizables, y pueden usar patrones de codificación que hacen que la simulación sea lo más eficiente posible.

Sí, podría usar un modelo de CPU real y ejecutar software real en esa CPU, pero a menudo es más efectivo escribir un "generador de acceso a la memoria" más simple en código de comportamiento cuyos patrones de acceso puede controlar. Podría basarse en números pseudoaleatorios, con algunos parámetros que controlan cosas como la "localidad de acceso", un factor importante en la eficacia de la caché.

Tenga en cuenta que también necesitará una memoria real (la memoria cuyos contenidos está almacenando en caché) como parte de su banco de pruebas. Dado que el punto de simulación a este nivel es verificar la corrección de su implementación, este podría ser un modelo de memoria de solo lectura simple que devuelva algún tipo de patrón fijo basado en la dirección, lo que permitirá que su modelo de CPU verifique que se está obteniendo Datos de la dirección correcta para cada acceso.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas