La mayoría de nosotros que somos expertos 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, ¿cuál será el mejor rendimiento? 1) ejecución desde RAM o 2) ejecución desde ROM o 3) ambos rendirán igual"
También teniendo en cuenta el hecho de que las ROM están diseñadas para tener velocidades de lectura más altas. mientras que para RAM, hay una compensación de velocidad de lectura por tener capacidades de escritura.
microcontroller
ram
rom
Príncipe Rambade
fuente
fuente
Respuestas:
La hoja de datos debería decirle cuánto tiempo lleva cada instrucción y qué diferencias hay, si las hay, entre la ejecución desde RAM o ROM.
Para el microcontrolador que ofrece la opción de ejecutar desde RAM, probablemente sea más rápido, 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 ejecutarlo desde la ROM porque es una memoria separada y el acceso a la RAM puede realizarse simultáneamente.
Nuevamente, la única forma de saber para cualquier micro en particular es LEER LA HOJA DE DATOS .
fuente
Depende completamente de la arquitectura de la memoria y 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 debe pasar por un proceso de detección de corriente más lento.
Cuánto más rápido (si lo hay) nuevamente depende de la arquitectura: el tamaño de la palabra de las memorias, el número de estados de espera en cada uno, la presencia de almacenamiento en caché, el tamaño de las instrucciones de la CPU, etc. con una frecuencia lo suficientemente baja, podría tener cero estados de espera en flash y RAM, por lo que podrían funcionar a la misma velocidad.
El código también importa. Si su código es estrictamente lineal (sin ramificación), el flash podría captar 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 un programa separado y rutas de lectura de datos 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 hace la diferencia; se trata más de las características de la salida de 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 perfilando su código.
fuente
"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 de no hacer nada entre las fases de recuperación y decodificación), activa 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 liquidan en su valor final, siempre que no cambien 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 está en estado de espera cero. (pero lea la hoja de datos para confirmar). Los microcontroladores típicos están destinados a ser soluciones de chip único 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 coinciden.
La 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 un montón de DRAM fuera de chip más lento conectado a un controlador de memoria. Este tipo de sistema es mucho más complicado que un microcontrolador y está fuera del alcance de la pregunta. (¡Pero de gran interés para un ingeniero informático!)
fuente