Limitaciones de la memoria del microcontrolador [duplicado]

7

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

    
pregunta rajesh

3 respuestas

12

Varias razones. Primero, los microcontroladores generalmente no se construyen con los mismos procesos de vanguardia que la DRAM y Flash para su computadora, por lo que no aprovechan el avance tecnológico en la misma medida. Estos procesos de vanguardia tienen desventajas, incluida la tolerancia al voltaje de los pines de E / S (el límite superior para los procesos de vanguardia puede ser de 1,8 o 1,2 voltios, en contraste con 5 o 3,3 voltios para 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 pieza de silicio, por lo que el proceso no puede optimizarse para lógica, DRAM y Flash al mismo tiempo. Los microcontroladores también suelen usar SRAM en lugar de DRAM, que ocupa mucho más espacio, pero consume menos energía y no requiere actualización. Además, 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 soporta 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 para multiplicar la capacidad, como las celdas de varios niveles. La memoria flash en bruto suele ser propensa a errores con bastante frecuencia y las celdas no tienen una vida útil 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.

Vea también: ¿Por qué los microcontroladores tienen tan poco RAM?

y: Diferencias precisas entre los procesos DRAM y CMOS

    
respondido por el alex.forencich
3

Los microcontroladores, con algunas excepciones, tienen toda su memoria, tanto el programa Flash como la RAM, en el mismo chip que la CPU. Hacen esto para liberar los pines en el chip para los periféricos integrados, como puertos GPIO, UART, bus 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, comienzan alrededor de treinta centavos.

Para admitir 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 allí mismo, 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. La dirección y las líneas de datos también se pueden multiplexar, primero bloqueando la dirección y manteniéndola mientras se realiza el acceso a la memoria.

Primeros microprocesadores, que se usaron en las primeras PC y se alojaron normalmente en DIP de 40 pines los paquetes, tenían muy pocos periféricos a bordo, si los hubiera, 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 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 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 su lugar, tienden a tener muchos (GB) de memoria RAM dinámica externa, que generalmente se conectan a DIMM . Por lo general, tampoco tienen memoria interna de solo lectura, que también es externa. La ROM externa solo se usa para el código de inicio inicial, que lee un inicio de segundo nivel en cualquier dispositivo que se esté utilizando (generalmente un disco duro, pero podría ser un CD, DVD o memoria USB).

    
respondido por el tcrosley
1

La razón principal, por supuesto, es el costo. Incluso la 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án 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 un MCU. Necesitarías una razón convincente para ese tipo de actualización, y el control integrado rara vez te da una.

Pero permítame darle la vuelta a esta pregunta: ¿por qué en el mundo una PC necesita miles de millones de bytes de almacenamiento? La computadora de guía Apollo 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, 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, imágenes comprimidas de buena calidad con menos de un megabyte, y 1920x1080 imágenes fijas son menos de diez megabytes, y aún nos ocupamos principalmente de ese mismo tipo de datos. ¿Qué ha cambiado para justificar el uso de mil veces más espacio de almacenamiento?

Multimedia: pantallas de mayor resolución con más colores, video de alta definición y sonido de alta calidad, todos basados en algoritmos de decodificación intensivos para adaptarse a los límites de ancho de banda. Las interfaces de usuario fueron a lo largo del paseo. Los sistemas operativos comenzaron a hacer más y más trabajo. Los juegos usan tanto hardware como pueden obtener. Y debajo de todo, capa por capa de marcos de software para hacer que la programación de alto nivel sea más fácil y más confiable. A pesar de todo eso, las ventas de PC se han estancado, y los usuarios tienen menos razones para actualizar su hardware.

Pero todo eso es opcional. Elimine los gráficos, la interfaz y el sistema operativo, e incluso una CPU de 16 MHz se convierte en una máquina poderosa para el cálculo. Una MCU está principalmente monitoreando y respondiendo a eventos en tiempo real, por lo que no se necesita mucha memoria para definir el estado. Usted está programando en metal abierto (o quizás un RTOS mínimo), por lo que la sobrecarga de software es mínima. Hay hardware específico para tareas para manejar 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 tiene un sistema en el que puede realizar bastante trabajo en unos pocos kilobytes de espacio de programas y 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 utilizará. Entonces, ¿por qué pagar por ello? A sus clientes finales no les impresionará la cantidad de RAM 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, mira MemTest86, que viene en una imagen de disco de solo 10 megabytes, ¡y eso incluye Linux!

    
respondido por el Adam Haun

Lea otras preguntas en las etiquetas