¿Es innecesaria la memoria caché en los microcontroladores?

1

¿Usamos memoria caché en microcontroladores? Si no, ¿por qué no? En caso afirmativo, ¿cuál es su aplicación en sistemas integrados o es suficiente para tener RAM?

    
pregunta Junior

3 respuestas

9

La memoria caché agrega un nivel de latencia impredecible que puede no ser deseado. Una gran cantidad (¿la mayoría?) De microcontroladores se utilizan en un entorno en tiempo real en el que tiene que calcular el presupuesto para el peor de los casos. No importa si su código es rápido en promedio , si existe la posibilidad de que no cumpla con la fecha límite en el peor de los casos . El peor de los casos sería que su código o sus datos no estén en la memoria caché, y como tiene que presupuestarlo de todos modos, la memoria caché solo agrega un costo y complejidad adicionales.

Algunos microcontroladores con los que he trabajado tienen una pequeña SRAM incrustada que se puede usar como "caché manual". Pones cosas allí que deben tener una baja latencia, ya sea código o datos.

Ahora, el término "microcontrolador" se está hinchando cada vez más. ¿El procesador ARM de 8 núcleos de su teléfono es un microcontrolador? Si es así, entonces sí, por supuesto que debería tener un caché.

    
respondido por el pipe
3

Por encima de una cierta velocidad, la memoria rápida cuesta más por byte que la memoria lenta (por debajo de esa velocidad, hacer que la memoria sea más lenta no lo hará más barato). Si un sistema tiene una gran cantidad de memoria, la mayoría será lenta, pero luego incluir un caché de memoria rápida y la lógica para ejecutarlo será más económico que hacer que toda la memoria sea rápida. Sin embargo, si el sistema no se ejecuta muy rápido, la memoria que puede mantenerse al día no costará más que la memoria lenta, por lo que no hay razón para que toda la memoria no sea lo suficientemente rápida como para mantenerse al día con el sistema. Si el sistema es rápido pero no tiene mucha memoria, los ahorros en costos al hacer que la mayor parte de la memoria sea lenta no serán suficientes para justificar el costo de agregar un caché.

Muchos microcontroladores tienen una interfaz flash que puede obtener varios bytes a la vez en un búfer; Si bien esto puede verse como una especie de caché, en muchos casos no será una memoria direccionable, ya que cada bit del búfer solo podrá tomar datos de una sola fuente [una línea de bits de la matriz flash].

    
respondido por el supercat
1

Tener un caché de nivel 1 es una compensación entre velocidad y costo. Para la velocidad, cuanto más grande sea la memoria, más larga será la ruta de acceso a los datos. Eso significa que tomará más y más tiempo (en términos de latencia) cuanto más memoria agregue. En algún punto, el rendimiento se degrada debido a esta latencia, que es el momento en el que agregar un caché de nivel 1 tiene sentido. El costo también es una consideración, ya que la memoria de alta velocidad es más costosa que otros tipos de memoria. Finalmente, un beneficio adicional es que los cachés pueden hacer que el microcontrolador sea ajeno al tipo de memoria desde el que se lee.

Los microcontroladores suelen tener pequeños recuerdos y, por lo tanto, a menudo no tienen caché de nivel 1. En cierto sentido, ¡toda su memoria podría considerarse un caché de nivel 1! Sin embargo, muchos microcontroladores de hoy en día son muy capaces y comienzan a cruzarse en el territorio del microprocesador, con memorias más grandes y, por lo tanto, también cachés de nivel 1 (y nivel 2).

Tener cachés agrega un costo bastante significativo en el lado de la programación, ya que el comportamiento en tiempo real en las fallas de caché puede ser difícil de predecir. A veces, esto no importa y / o se puede solucionar, pero en los casos en los que sí hay algunas opciones:

  • Utilice microcontroladores más pequeños para tareas secundarias específicas en un sistema más grande.
  • Use un chip que tenga unidades físicas en tiempo real integradas.

La primera solución es bastante atractiva, ya que los microcontroladores son baratos y capaces. Sin embargo, la comunicación entre los controladores y la unidad principal (CPU) podría convertirse en un problema. Esta es la razón por la que los chips con capacidades integradas en tiempo real pueden ser una mejor solución.

Al igual que con toda la ingeniería, existen ventajas y desventajas para cada solución. ¡Elija la herramienta adecuada para el trabajo!

    
respondido por el Pål-Kristian Engstad

Lea otras preguntas en las etiquetas