Depende totalmente de la memoria y de la arquitectura de la CPU. Como regla general, la SRAM es más rápida que la flash, especialmente en las MCU de mayor velocidad (>100 MHz). Las celdas de bits de la 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.
La rapidez (si la hay) depende de nuevo de la arquitectura: el tamaño de palabra de las memorias, el número de estados de espera en cada una, la presencia de caché, el tamaño de las instrucciones de la CPU, etc. Si se ejecuta a una frecuencia lo suficientemente baja, podría tener cero estados de espera en la flash y la RAM, por lo que podrían funcionar a la misma velocidad.
El código también es importante. Si el código es estrictamente lineal (sin bifurcaciones), la memoria flash podría precargar las 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 programa y datos separadas podría tener un rendimiento diferente cuando el código y los datos están en memorias diferentes.
Las ROM metálicas (y otras memorias no volátiles como la FRAM) tienen sus propias características, y pueden ser o no tan rápidas como la SRAM. La capacidad de escritura no supone necesariamente una diferencia; se trata más bien de las características de la salida de la célula de bits y de los circuitos de detección.
La hoja de datos te dará una idea aproximada de la diferencia de velocidad, pero la única forma de saberlo con seguridad es perfilando tu código.
10 votos
Leer la hoja de datos (a fondo) es la mejor manera. A veces es más rápido ejecutar un programa desde la RAM que desde la memoria flash. Algunos micros no pueden ejecutar programas desde la RAM en absoluto y otros pueden funcionar a la misma velocidad.
0 votos
Todavía no puedo añadir un comentario, sólo intento ser útil. Depende de si la ROM es más rápida que la RAM que estás usando. ¿Son de igual velocidad?
0 votos
Muchas de las piezas actuales de ARM Cortex-M son ejemplos de las que puede ejecutan desde la SRAM pero son más lento al hacerlo, ya que no se puede utilizar la ruta de instrucción dedicada a la flash. Por el contrario, el acceso a los datos en la memoria flash puede ser más lento que en la RAM.
0 votos
Pero con los chips ARM7 un poco más antiguos (mi experiencia fue con el LPC2106 y el LPC2148) la ejecución desde la RAM suele ser MÁS RÁPIDA que desde la FLASH. Lo que, junto con la respuesta de Chris, demuestra que lo único que podemos decir es "depende".
0 votos
Si ya tienes el hardware, la forma más fácil es simplemente ejecutar los dos escenarios y comparar. Si no, las hojas de datos son tu mejor opción.