El controlador se reinicia después de habilitar el caché

4

Estoy usando un controlador MCF5253 que se basa en la arquitectura Coldfire. Tiene 8KB de caché de instrucciones. Todo funcionaba bien hasta que habilité su caché de instrucciones. Ahora lo que está sucediendo es que el adaptador se está reiniciando al azar. Cuando lo depuro, se restablece debido a la excepción de "Instrucción ilegal", no se produce tal excepción si se ejecuta al deshabilitar el caché de instrucciones.

¿Es necesario que periódicamente se borre el caché? y si es entonces a qué frecuencia.

Otra cosa que me gustaría saber es cómo puedo calcular la proporción de aciertos / fallas de caché.

¡Gracias!

    
pregunta Swanand

2 respuestas

2

Sospecho que lo que sucede es que tu caché no está inicializado, lo que significa que podría contener cualquier basura, incluidas direcciones válidas e instrucciones no válidas. Por lo general, hay un poco de metadatos que también indican si los datos son válidos, y esto es lo que necesita restablecer. Por lo general, hay una operación de invalidación para el caché. Haga esto antes de habilitar el caché, y debería comenzar a buscar en lugar de ejecutar ruido. Una segunda razón para invalidar la caché de código es si acaba de escribir algún código, es decir, en un compilador JIT o en un código de auto-modificación; luego, la invalidación de rangos específicos normalmente funciona.

Aparte de eso, una vez que se ejecuta, rara vez hay una razón para repetir la invalidación. Sin embargo, es posible que se deban vaciar los cachés de datos para interactuar con otros accesos de memoria (DMA, maestros de bus o, posiblemente, dispositivos asignados en memoria).

El manual de referencia vinculado contiene información relevante en la sección 5.4.3, Coherencia de caché e invalidación. Tenga en cuenta que aunque solo es un bit para invalidar todo el caché, esta operación tarda mucho tiempo en completarse.

    
respondido por el Yann Vernier
0

La única razón para borrar el caché es si tiene direcciones virtuales en él. Entonces necesitas borrarlo / invalidarlo cuando cambies de contexto. Probablemente no sea su problema a menos que esté ejecutando un sistema operativo suficientemente avanzado (por ejemplo, Linux, no uLinux).

    
respondido por el Brian Carlton

Lea otras preguntas en las etiquetas