Limitaciones de memoria del microcontrolador [duplicado]

Realmente no puedo entender por qué, cuando la memoria de nuestra computadora personal aumenta en términos de gigabytes, la memoria del microcontrolador no aumenta a esa velocidad tanto para flash como para RAM. ¿A qué limitaciones nos enfrentamos para ambos tipos de memoria?

Respuestas (3)

Muchas rasones. En primer lugar, los microcontroladores generalmente no se construyen con los mismos procesos de vanguardia que la DRAM y la memoria flash para su computadora, por lo que no aprovechan los avances tecnológicos en la misma medida. Estos procesos de última generación tienen desventajas, incluida la tolerancia de tensión de los pines de E/S (el límite superior para los procesos de última generación puede ser de 1,8 o 1,2 voltios, en contraste con los 5 o 3,3 voltios de muchos microcontroladores), voltajes de suministro de núcleo especiales (1,0 o incluso 0,9 voltios), mayor corriente de fuga, etc. En segundo lugar, los microcontroladores generalmente se construyen en una sola pieza de silicio, por lo que el proceso no se puede optimizar para lógica, DRAM y Flash al mismo tiempo. Los microcontroladores generalmente también usan SRAM en lugar de DRAM, que ocupa mucho más espacio pero consume menos energía y no requiere actualización. También, el flash utilizado en los microcontroladores suele ser el flash NOR más robusto y menos denso. Este tipo de memoria flash se puede leer directamente sin procesamiento posterior. También admite más ciclos de lectura y escritura. La mayoría de los SSD, unidades flash, etc. usan flash NAND. Este tipo de memoria flash no es tan robusta como la memoria flash NOR, especialmente cuando se utilizan trucos que multiplican la capacidad, como celdas multinivel. La memoria flash sin procesar es propensa a errores con bastante frecuencia y las celdas no tienen una vida particularmente 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. etc. utilice flash NAND. Este tipo de memoria flash no es tan robusta como la memoria flash NOR, especialmente cuando se utilizan trucos que multiplican la capacidad, como celdas multinivel. La memoria flash sin procesar es propensa a errores con bastante frecuencia y las celdas no tienen una vida particularmente 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. etc. utilice flash NAND. Este tipo de memoria flash no es tan robusta como la memoria flash NOR, especialmente cuando se utilizan trucos que multiplican la capacidad, como celdas multinivel. La memoria flash sin procesar es propensa a errores con bastante frecuencia y las celdas no tienen una vida particularmente 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.

Ver también: ¿Por qué los microcontroladores tienen tan poca memoria RAM?

y: diferencias precisas entre los procesos DRAM y CMOS

En mi opinión, SRAM consume más energía que DRAM, porque la corriente de fuga de los transistores es mayor que la autodescarga de los condensadores. Todavía voto a favor de su respuesta, especialmente la referencia a "¿por qué MCU tiene tan poca RAM"
La SRAM inactiva consume menos energía que la DRAM inactiva, ya que la DRAM inactiva debe actualizarse, lo que consume mucha energía. Sin embargo, es posible que la SRAM consuma más energía que la DRAM cuando se encuentra bajo una carga pesada.
Además, la fuga de SRAM se convierte en un gran problema para procesos muy finos donde los transistores son muy pequeños. En los procesos utilizados para la mayoría de los microcontroladores, la fuga es mucho menor.
Investigué un poco: tiene razón, las SRAM fabricadas con MOS de bajo consumo son bastante eficientes, y las MCU a menudo se fabrican con bajo consumo de energía. Encontré 160 µA para SRAM de 64 Mbit en espera, 1 mA para SDRAM de 128 Mbit de bajo consumo en actualización automática (R1WV6416RBG frente a MT48LC8M16A2P)

Los microcontroladores, con algunas excepciones, tienen toda su memoria (tanto Flash como RAM de programa) en el mismo chip que la CPU. Hacen esto para liberar los pines en el chip para periféricos integrados, como puertos GPIO, UART, buses SPI e I2C, USB, PWM y otros. Esto permite que los sistemas se construyan con solo un microcontrolador y algunas otras partes. Los microcontroladores son muy baratos en comparación con los microprocesadores, los PIC de gama baja, por ejemplo, cuestan alrededor de treinta centavos.

Para admitir la memoria externa se requiere un bus de direcciones y un bus de datos, y para un microcontrolador de 32 bits que usa hasta 64 pines, más 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 se pueden multiplexar, primero bloqueando la dirección y manteniéndola mientras se realiza el acceso a la memoria.

Los primeros microprocesadores, que se usaban en las primeras PC y generalmente se alojaban en paquetes DIP de 40 pines , tenían muy pocos periféricos integrados, si es que tenían alguno, y por lo tanto podían permitirse usar sus pines para direcciones y líneas de datos. Pero eso ya no es un problema, ya que los microprocesadores ahora tienen 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 en Newegg, muy lejos de los 30 centavos. Nota: eso no incluye ningún costo de memoria (ver más abajo).

Los microprocesadores generalmente no tienen memoria integrada en el chip (excepto cachés). En cambio, tienden a tener muchos (GB) de RAM dinámica externa, generalmente conectada a zócalos DIMM . Tampoco suelen tener ninguna memoria interna de solo lectura, que también es externa. La ROM externa solo se usa para el código de arranque inicial, que lee un arranque de segundo nivel desde cualquier dispositivo que se esté usando (generalmente un disco duro, pero podría ser un CD, DVD o una memoria USB).

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 5 ns (200 MHz es rápido para un microcontrolador) en una interfaz de 8 bits no son exactamente inconcebibles. De manera similar, el bus de direcciones puede tener menos de 32 bits (o el tamaño máximo de la dirección) mediante la reutilización de pines. Por supuesto, esto agrega complejidad a ambos extremos de la interfaz.
@ PaulA.Clayton De acuerdo, esa era la idea detrás del 8088 y el 68008. También agregué información adicional a mi segundo párrafo.

La razón principal, por supuesto, es el costo. Incluso la memoria RAM independiente lenta cuesta varios dólares por gigabyte y viene en un paquete bastante grande. Las limitaciones del proceso que Alex describió en su respuesta son muy reales y aumentarían enormemente el costo de la DRAM en el chip para un microcontrolador. Incluso si el costo fuera el mismo, varios dólares es un gran aumento de precio para una MCU. Necesitaría una razón convincente para ese tipo de actualización, y el control incorporado rara vez le da una.

Pero permítanme darle la vuelta a esta pregunta: ¿por qué demonios una PC necesita miles de millones de bytes de almacenamiento? La computadora de guía del Apolo 11 tenía 4 kB de RAM y 72 kB de ROM. Hace veinte años podías hacer la mayoría de las tareas con 4 MB de RAM. Hace quince años, una computadora con 64 MB de RAM era suficiente para uso de oficina, navegación web, 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 son menos de diez megabytes, y todavía tratamos principalmente con ese mismo tipo de datos. ¿Qué cambió para justificar usar mil veces más espacio de almacenamiento?

Multimedia: pantallas de mayor resolución con más colores, video HD y sonido de alta calidad, todo ello basado en algoritmos de decodificación intensivos para adaptarse a los límites del ancho de banda. Las interfaces de usuario acompañaron el viaje. Los sistemas operativos comenzaron a hacer más y más trabajo. Los juegos usan tanto hardware como pueden conseguir. Y debajo de todo, capa tras capa de marcos de software para hacer que la programación de alto nivel sea más fácil y confiable. A pesar de todo eso, las ventas de PC se han estancado y los usuarios tienen cada vez menos razones para actualizar su hardware.

Pero todo eso es opcional. Elimina los gráficos, la interfaz y el sistema operativo, e incluso una CPU de 16 MHz se convierte en una poderosa máquina de cálculo. Una MCU monitorea y responde principalmente a eventos en tiempo real, por lo que no se necesita mucha memoria para definir el estado. Está programando en bare metal (o tal vez un RTOS mínimo), por lo que la sobrecarga de software es mínima. Existe un hardware específico para la tarea que se encarga de la mayor parte del trabajo de alta velocidad, como la temporización y las comunicaciones, lo que reduce aún más los requisitos de CPU y RAM. Ahora tiene un sistema en el que puede hacer mucho trabajo en unos pocos kilobytes de programa y espacio de datos.

Si necesita más espacio de almacenamiento, puede agregar RAM o flash fuera del chip, o incluso enviar datos a una PC remota. Pero para la mayoría de las aplicaciones de MCU, la capacidad adicional en el chip no se usaría. Entonces, ¿por qué pagar por ello? Sus clientes finales no quedarán impresionados por la cantidad de RAM que hay en un controlador de motor o en un módulo de fuente de alimentación.

Para ver un ejemplo de este tipo de diseño en una PC, mire MemTest86, que viene en una imagen de disco de solo 10 megabytes, ¡y eso incluye Linux!

"Las imágenes fijas de 1920x1080 están por debajo de un megabyte" ... ¿En serio? ¿Quizás quiere decir después de una compresión significativa (probablemente con pérdida)?
Los JPEG son, sí. Voy a aclarar