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!