La mayoría de nosotros que tenemos experiencia en electrónica sabemos que SRAM es más rápido que DRAM. Pero cuando se trata de comparar RAM con ROM, no estoy seguro.
Mi pregunta está relacionada con el microcontrolador: "Si un código se ejecuta directamente desde RAM/ROM, ¿de quién será mejor el rendimiento? 1) ejecución desde RAM o 2) ejecución desde ROM o 3) ambos tendrán el mismo rendimiento"
También considerando el hecho de que las ROM están diseñadas para tener velocidades de LECTURA más altas. mientras que para la RAM, hay un compromiso de velocidad de lectura por tener capacidades de escritura.
La hoja de datos debe decirle cuánto tiempo toma cada instrucción y qué diferencias hay, si las hay, entre ejecutar desde RAM o ROM.
Para el microcontrolador que ofrece la opción de ejecutar desde la RAM, probablemente sea más rápido, y probablemente sea el punto principal de usar espacio RAM adicional para ejecutar el código. También puede haber algunos problemas de superposición de búsqueda. En algunos casos, puede ser más rápido ejecutar desde la ROM porque es una memoria separada y el acceso a la RAM puede realizarse simultáneamente.
Una vez más, la única forma de saber para cualquier micro en particular es LEER LA HOJA DE DATOS .
Depende completamente de la memoria y la arquitectura de la CPU. Como regla general, SRAM es más rápido que flash, particularmente en MCU de mayor velocidad (>100 MHz). Las celdas de bits SRAM producen una salida de nivel lógico (más o menos), mientras que la memoria flash tiene que pasar por un proceso de detección de corriente más lento.
Cuánto más rápido (si lo hay) depende nuevamente de la arquitectura: el tamaño de palabra de las memorias, la cantidad de estados de espera en cada uno, la presencia de almacenamiento en caché, el tamaño de las instrucciones de la CPU, etc. Si está ejecutando en un frecuencia lo suficientemente baja, podría tener cero estados de espera en flash y RAM, por lo que podrían ejecutarse a la misma velocidad.
El código también importa. Si su código es estrictamente lineal (sin bifurcaciones), el flash podría obtener instrucciones lo suficientemente rápido como para mantener la CPU saturada incluso a frecuencias más altas. Como dijo Olin, una CPU de arquitectura Harvard con rutas de lectura de datos y programas separadas podría funcionar de manera diferente cuando el código y los datos están en diferentes memorias.
Las ROM de metal (y otras memorias no volátiles como FRAM) tienen sus propias características y pueden o no ser tan rápidas como SRAM. La capacidad de escribir no necesariamente marca la diferencia; se trata más de las características de la salida de la celda de bits y los circuitos de detección.
La hoja de datos le dará una idea aproximada de la diferencia de velocidad, pero la única forma de saberlo con certeza es perfilar su código.
"Ejecutar un programa" requiere una CPU con un reloj síncrono. La memoria lenta se puede acomodar ejecutando todo el sistema a un reloj lo suficientemente lento o insertando wait states
(ciclos de reloj adicionales que no hacen nada entre las fases de obtención y decodificación), activo solo para ciertos rangos de direcciones (ver el antiguo 8085 por ejemplo). La búsqueda de instrucciones de la CPU no sabe ni le importa exactamente cuándo los datos se asientan en su valor final, siempre y cuando no cambie durante el intervalo de configuración/retención.
Un microcontrolador generalmente tiene toda su memoria en el chip, por lo que, a menos que se indique lo contrario, asumiría que el sistema de memoria tiene un estado de espera cero. (pero lea la hoja de datos para confirmar). Los microcontroladores típicos están destinados a ser soluciones de un solo chip más simples en comparación con una computadora de escritorio, por lo que los estados de espera son poco probables en un microcontrolador. Por lo tanto, es poco probable que un microcontrolador tenga velocidades de memoria en el chip que no coincidan.
Una memoria más rápida generalmente cuesta una prima (mayor voltaje, menor capacitancia, más demanda). Un 80xx86 tiene una SRAM rápida en caché L2 y una SRAM aún más rápida en caché L1, y mucha DRAM fuera de chip más lenta conectada a un controlador de memoria. Este tipo de sistema es mucho más complicado que un microcontrolador y está más allá del alcance de la pregunta. (¡Pero de gran interés para un ingeniero informático!)
Spehro Pefhany
OzzieSpin
chris stratton
Wouter van Ooijen
luan