7 votos

Limitaciones de la memoria del microcontrolador

Realmente no soy capaz de entender por qué, cuando la memoria de nuestro ordenador personal está aumentando en términos de gigabytes, la memoria del microcontrolador no está aumentando a esa velocidad tanto para la flash como para la RAM? ¿Qué limitaciones tenemos para ambos tipos de memoria?

13voto

silverbolt Puntos 18

Por varias razones. En primer lugar, los microcontroladores no suelen estar construidos con los mismos procesos de vanguardia que la DRAM y la Flash del ordenador, por lo que no aprovechan los avances tecnológicos en la misma medida. Estos procesos de vanguardia tienen desventajas, como la tolerancia del voltaje de las clavijas de E/S (el límite superior de los procesos de vanguardia puede ser de 1,8 o 1,2 voltios, en contraste con los 5 o 3,3 voltios de muchos microcontroladores), voltajes especiales de alimentación del núcleo (1,0 o incluso 0,9 voltios), mayor corriente de fuga, etc. En segundo lugar, los microcontroladores suelen construirse en una sola pieza de silicio, por lo que el proceso no puede optimizarse para la lógica, la DRAM y la Flash al mismo tiempo. Además, los microcontroladores suelen utilizar SRAM en lugar de DRAM, que ocupa mucho más espacio pero consume menos energía y no necesita ser refrescada. Además, la memoria flash utilizada en los microcontroladores suele ser la más robusta y menos densa NOR flash. Este tipo de memoria flash puede leerse directamente, sin necesidad de un procesamiento posterior. También admite más ciclos de lectura y escritura. La mayoría de los SSD, unidades flash, etc., utilizan flash NAND. Este tipo de memoria flash no es tan robusta como la flash NOR, especialmente cuando se utilizan trucos para multiplicar la capacidad, como las celdas multinivel. En realidad, la memoria flash en bruto es propensa a cometer errores con bastante frecuencia y las celdas no tienen una vida especialmente larga, por lo que se requiere mucho procesamiento adicional para corregir los errores y realizar la nivelación del desgaste. Esto requiere mucha lógica adicional y consume más energía.

Véase también: ¿Por qué los microcontroladores tienen tan poca RAM?

y: Diferencias precisas entre los procesos DRAM y CMOS

0 votos

En mi opinión, la SRAM consume más energía que la DRAM, porque la corriente de fuga de los transistores es mayor que la autodescarga de los condensadores. Todavía upvote su respuesta, especialmente la referencia a "¿por qué MCU tienen tan poco RAM"

0 votos

La SRAM en reposo consume menos energía que la DRAM en reposo, ya que la DRAM en reposo tiene que ser refrescada, lo que consume mucha energía. Sin embargo, es posible que la SRAM consuma más energía que la DRAM cuando está sometida a una gran carga.

0 votos

Además, las fugas de la SRAM se convierten en un gran problema para los procesos muy finos en los que los transistores son muy pequeños. En los procesos utilizados para la mayoría de los microcontroladores, las fugas son mucho menores.

3voto

Matt McMinn Puntos 6067

Los microcontroladores, salvo algunas excepciones, tienen toda su memoria -tanto la Flash de programa como la RAM- en el mismo chip que la CPU. Lo hacen para liberar los pines del chip para los periféricos de la placa, como los puertos GPIO, UART, buses SPI e I2C, USB, PWM y otros. Esto permite construir sistemas con sólo un microcontrolador y algunas otras piezas. Los microcontroladores son muy baratos en comparación con los microprocesadores; los PIC de gama baja, por ejemplo, cuestan alrededor de treinta céntimos.

Para dar soporte a la memoria externa se necesita un bus de direcciones y un bus de datos, y para un microcontrolador de 32 bits se utilizan 64 pines ahí mismo, más las líneas de control. Incluso los primeros microprocesadores no tenían suficientes pines para manejar eso, por ejemplo un 68000 en un DIP de 64 pines tenía líneas de dirección A1 a A23, y líneas de datos D0-D16. Las líneas de dirección y datos también pueden ser multiplexadas, enclavando primero la dirección y manteniéndola mientras se realiza el acceso a la memoria.

Los primeros microprocesadores, que se utilizaron en los primeros PC y que solían estar alojados en DIP de 40 pines tenían muy pocos periféricos a bordo, si es que tenían alguno, y por lo tanto podían permitirse utilizar sus pines para las líneas de dirección y datos. Pero eso ya no es un problema, ya que los microprocesadores tienen ahora muchos más pines que los microcontroladores. Los microcontroladores pueden tener desde ocho pines hasta más de cien, mientras que algunos microprocesadores, como una variación del Intel i7 tienen más de 2000 pines . Este procesador se vende al por menor por 584 dólares en Newegg, lo que está muy lejos de los 30 céntimos. Nota: eso no incluye ningún coste de memoria (ver más abajo).

Los microprocesadores no suelen tener memoria integrada en el chip (salvo las cachés). En su lugar, suelen tener mucha (GB) de RAM dinámica externa, normalmente conectada a DIMM enchufes. Tampoco suelen tener memoria interna de sólo lectura, que también es externa. La ROM externa sólo se utiliza para el código de arranque inicial, que lee un segundo nivel de arranque de cualquier dispositivo que se esté utilizando (normalmente un disco duro, pero podría ser un CD, DVD o una memoria USB).

0 votos

Por supuesto, un microcontrolador de 32 bits no necesitaría un bus de datos de 32 bits; las SRAM lo suficientemente rápidas como para proporcionar 32 bits en 5ns (200 MHz es rápido para un microcontrolador) sobre una interfaz de 8 bits no son exactamente inconcebibles. Del mismo modo, el bus de direcciones puede ser más pequeño que los 32 bits (o el tamaño máximo de las direcciones) mediante la reutilización de pines. Por supuesto, esto añade complejidad a ambos extremos de la interfaz.

0 votos

@PaulA.Clayton De acuerdo, esa era la idea detrás del 8088 y el 68008. También he añadido algo de información adicional a mi segundo párrafo.

1voto

Al pacino Puntos 415

La razón principal, por supuesto, es el coste. Incluso las memorias RAM lentas y autónomas cuestan varios dólares por gigabyte, y vienen en un paquete bastante grande. Las limitaciones del proceso que Alex describe en su respuesta son muy reales y aumentarían enormemente el coste de la DRAM en chip para un microcontrolador. Incluso si el coste fuera el mismo, varios dólares es un gran aumento de precio para una MCU. Se necesitaría una razón convincente para ese tipo de actualización, y el control integrado rara vez la ofrece.

Pero permítame darle la vuelta a esta pregunta: ¿por qué un PC necesita miles de millones de bytes de almacenamiento? El ordenador guía del Apolo 11 tenía 4 kB de RAM y 72 kB de ROM. Hace veinte años se podían hacer la mayoría de las tareas con 4 MB de RAM. Hace quince años, un ordenador con 64 MB de RAM era suficiente para utilizarlo en la oficina, navegar por Internet, escuchar música, etc. Cantidades razonables de texto caben en decenas de kilobytes, las imágenes comprimidas de buena calidad están por debajo de un megabyte, y las imágenes fijas de 1920x1080 están por debajo de los diez megabytes, y seguimos tratando principalmente con ese mismo tipo de datos. ¿Qué ha cambiado para justificar el uso de un espacio de almacenamiento mil veces mayor?

Multimedia: pantallas de mayor resolución con más colores, vídeo de alta definición y sonido de alta calidad, todo ello basado en algoritmos de descodificación intensivos para adaptarse a los límites del ancho de banda. Las interfaces de usuario se han ido adaptando. Los sistemas operativos empezaron a hacer más y más trabajo. Los juegos utilizan todo el hardware posible. Y debajo de todo ello, capa sobre capa de marcos de software para hacer más fácil y fiable la programación de alto nivel. A pesar de todo ello, las ventas de PC se han estancado y los usuarios tienen cada vez menos motivos para actualizar su hardware.

Pero todo eso es opcional. Si se eliminan los gráficos, la interfaz y el sistema operativo, incluso una CPU de 16 MHz se convierte en una potente máquina de cálculo. Una MCU está principalmente monitorizando y respondiendo a eventos en tiempo real, así que no se necesita mucha memoria para definir el estado. Estás programando sobre bare metal (o quizás un RTOS mínimo), por lo que la sobrecarga de software es mínima. Hay un hardware específico para cada tarea que se encarga de la mayor parte del trabajo de alta velocidad, como la sincronización y las comunicaciones, lo que reduce aún más los requisitos de CPU y RAM. Ahora tienes un sistema en el que puedes hacer mucho trabajo en unos pocos kilobytes de espacio para programas y datos.

Si usted necesito más espacio de almacenamiento, puedes añadir RAM o flash fuera del chip, o incluso enviar los datos a un PC remoto. Pero para la mayoría de las aplicaciones de la MCU, la capacidad extra en el chip no se utilizaría. Así que, ¿por qué pagar por ella? A sus clientes finales no les impresionará la cantidad de RAM que tenga un controlador de motor o un módulo de alimentación.

Para ver un ejemplo de este tipo de diseño en un PC, mira MemTest86, que viene en una imagen de disco de sólo 10 megabytes, ¡y que incluye Linux!

0 votos

"Las imágenes fijas de 1920x1080 tienen menos de un megabyte" ... ¿De verdad? ¿Se refiere a una compresión significativa (probablemente con pérdidas)?

0 votos

Los JPEG lo son, sí. Lo aclararé.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X