¿Por qué los microcontroladores tienen tan poca memoria RAM?

38

Tal vez esto sea más un problema de percepción, pero parece que los microcontroladores han avanzado a pasos agigantados en los últimos 20 años, en casi todos los aspectos, mayor velocidad de reloj, más periféricos, más fácil depuración, núcleos de 32 bits, etc. ...

Todavía es común ver RAM en los 10's de KB (16/32 KB).

No parece que pudiera tratarse directamente de un problema de costo o tamaño. ¿Es un problema de complejidad con el controlador de RAM por encima de algún umbral?

¿O es solo que generalmente no se requiere?

Mirando una matriz de piezas a un proveedor de Internet popular, veo un Cortex M4 con 256 KB por menos de US $ 8, y luego por unos pocos dólares más, puede encontrar algunos más que están sin ROM, pero parece bastante escaso ...

No necesito exactamente un microcontrolador con un MB de almacenamiento volátil, pero parece que alguien podría ...

    
pregunta Grady Player 15.10.2014 - 21:50

8 respuestas

44

Hay varias razones para esto.

En primer lugar, la memoria ocupa una gran cantidad de área de silicio. Esto significa que aumentar la cantidad de RAM aumenta directamente el área de silicio del chip y, por lo tanto, el costo. El área de silicio más grande tiene un efecto 'doble golpe' en el precio: los chips más grandes significan menos chips por oblea, especialmente alrededor del borde, y los chips más grandes significan que cada chip tiene más probabilidades de tener un defecto.

Segundo es la cuestión del proceso. Los arreglos de RAM deben optimizarse de diferentes maneras que la lógica, y no es posible enviar diferentes partes del mismo chip a través de diferentes procesos; todo el chip debe fabricarse con el mismo proceso. Hay fundamentos de semiconductores que están más o menos dedicados a producir DRAM. No CPUs u otra lógica, solo DRAM directa. La DRAM requiere capacitores de área eficiente y transistores de fuga muy baja. La fabricación de los condensadores requiere un procesamiento especial. Hacer transistores de baja fuga resulta en transistores más lentos, lo cual es un buen compromiso para la electrónica de lectura DRAM, pero no sería tan bueno para construir una lógica de alto rendimiento. Producir DRAM en un dado de microcontrolador significaría que tendría que cambiar la optimización del proceso de alguna manera. Las matrices de RAM grandes también son más propensas a desarrollar fallas simplemente debido a su gran área, disminuyendo el rendimiento y aumentando los costos. La prueba de matrices de RAM grandes también requiere mucho tiempo, por lo que la inclusión de matrices grandes aumentará los costos de prueba. Además, las economías de escala reducen el costo de los chips de RAM separados más que los microcontroladores más especializados.

El consumo de energía es otra razón. Muchas aplicaciones integradas tienen una restricción de energía y, como resultado, muchos microcontroladores se construyen para que puedan ponerse en un estado de suspensión de muy baja potencia. Para habilitar la suspensión de energía muy baja, se usa SRAM debido a su capacidad para mantener su contenido con un consumo de energía extremadamente bajo. La batería SRAM respaldada por batería puede mantener su estado durante años fuera de una sola batería de botón de 3V. DRAM, por otro lado, no puede mantener su estado por más de una fracción de segundo. Los condensadores son tan pequeños que el puñado de electrones se adentran en el sustrato o se filtran a través de los transistores celulares. Para combatir esto, se debe leer y escribir de nuevo la DRAM. Como resultado, la DRAM consume significativamente más energía que la SRAM cuando está inactiva.

Por otro lado, las celdas de bits SRAM son mucho más grandes que las celdas de bits DRAM, por lo que si se requiere mucha memoria, la DRAM es generalmente una mejor opción. Esta es la razón por la que es bastante común usar una pequeña cantidad de SRAM (kB a MB) como memoria caché en chip junto con una mayor cantidad de DRAM fuera de chip (MB a GB).

Se han utilizado algunas técnicas de diseño muy interesantes para aumentar la cantidad de RAM disponible en un sistema integrado a bajo costo. Algunos de estos son paquetes de múltiples chips que contienen troqueles separados para el procesador y la RAM. Otras soluciones implican producir almohadillas en la parte superior del paquete de la CPU para que un chip de RAM se pueda apilar en la parte superior. Esta solución es muy inteligente ya que se pueden soldar diferentes chips de RAM en la parte superior de la CPU dependiendo de la cantidad de memoria requerida, sin que se requiera enrutamiento adicional a nivel de placa (los buses de memoria son muy amplios y ocupan una gran cantidad de área de placa). Tenga en cuenta que estos sistemas generalmente no se consideran microcontroladores.

Muchos sistemas embebidos muy pequeños no requieren mucha RAM de todos modos. Si necesita una gran cantidad de RAM, es probable que desee utilizar un procesador de gama alta que tenga DRAM externa en lugar de SRAM integrada.

    
respondido por el alex.forencich 15.10.2014 - 22:24
15

Es probable que la memoria ocupe la mayor parte del espacio de silicio y que la memoria RAM sea muy rápida de usar es volátil, y usa la energía constantemente para mantener su estado. A menos que necesite un montón de RAM, no es útil para muchas otras aplicaciones. Si un diseñador de sistemas embebido necesita más RAM, simplemente obtienen un chip de RAM externo y usan interfaces de memoria periférica que los microcontroladores a menudo tienen en estos días para una extensión de memoria plug and play muy fácil. Esa es la razón por la que veo por qué los microcontroladores en general todavía tienen una RAM interna baja razonable, porque el código de aplicación razonable y los escenarios de casos de uso normalmente no necesitan mucho.

Cuando comienza a familiarizarse con las arquitecturas más grandes que necesitan ejecutarse con sistemas operativos completos, entonces la RAM se vuelve extremadamente importante, sin embargo, esto se aleja de los microcontroladores y se introduce en computadoras integradas más como las que se ven en Beaglebone y Raspberri. Pi tableros en estos días. E incluso en esta etapa, los procesadores son tan complejos y están tan llenos de funciones que no tienen espacio para la cantidad de RAM necesaria para su tarea, por lo que la memoria externa es prácticamente necesaria para que funcionen.

EDITAR:

Como anécdota personal, recientemente hice un pequeño tablero de control de robot autónomo con el objetivo de usarlo para la visión por ordenador de baja resolución como detección de movimiento y seguimiento y seguimiento de objetos. Elegí un ARM Cortex M3 de bajo número de pines para esta tarea y mientras observaba la selección de los procesadores de la serie SAM3 de Atmel, busqué la RAM más alta que pude encontrar, porque en este caso no quería comprar un IC RAM externo. debido al espacio de la placa y al no querer la complejidad de un bus de memoria RAM de alta velocidad en la PCB. En este caso para mi aplicación particular, me hubiera gustado mucho tener la opción de muchos cientos de KB de RAM más, si es posible. Terminé teniendo solo 48KB SRAM, pero con más diseños obtendré un paquete de mayor número de pines y utilizaré el periférico de captura de datos paralelo para enrutar datos de píxeles de cámara de 8 bits directamente a un chip de RAM externo.

    
respondido por el KyranF 15.10.2014 - 22:08
14

Además de los excelentes puntos mencionados en las otras respuestas, otra razón para la RAM limitada es la arquitectura del microcontrolador. Por ejemplo, tome el Microchip PIC10LF320, que tiene solo 448 bytes de memoria de programa (flash) y 64 bytes de RAM. Pero probablemente solo cuesta 25ȼ (o menos) en grandes cantidades. El tamaño limitado de la palabra de instrucción PIC10 (12 bits) le permite direccionar solo 128 bytes de RAM directamente.

Estoy seguro de que hay otros microcontroladores por ahí que solo tienen un bus de dirección de 8 bits, limitándolos a 256 bytes de RAM.

Pero la mayoría de los microcontroladores de rango medio (incluso aquellos con rutas de datos de 8 bits), tienen un bus de direcciones de 16 bits. Una consideración arquitectónica importante para estos chips es si el chip utiliza Harvard o Von Neumann architecture.

La mayoría de los microcontroladores utilizan la arquitectura de Harvard, que tiene espacios de direcciones de 16 bits separados para la memoria del programa, la RAM y las direcciones de E / S asignadas a la memoria. Por lo tanto, para estos, el bus de direcciones de 16 bits puede acceder a hasta 64 K (65,536) bytes de RAM. La arquitectura todavía tiene un límite de 64K, y si uno quiere ir más allá, debe usarse algún tipo de paginación. Es mucho más común tener paginación para espacio de programa en lugar de espacio de RAM.

Los microcontroladores que utilizan la arquitectura de Von Neumann, como la línea Freescale HCS08, tienen un solo espacio de direcciones dividido entre la memoria del programa, la RAM y la E / S asignada a la memoria. Para tener una cantidad razonable de espacio de programa, esto limita la cantidad de RAM a 4K u 8K. Nuevamente, uno puede usar la paginación para aumentar el espacio disponible del programa o RAM.

    
respondido por el tcrosley 15.10.2014 - 23:25
7

Habiendo trabajado con microcontroladores y sistemas pequeños por un buen tiempo, me gustaría señalar que muy a menudo se necesita muy poca RAM. Recuerde que aunque una MCU puede ser capaz de lograr mucho, la tendencia en estos días es usar muchas más MCU que nunca antes, y usar más para distribuir muchas tareas en sistemas más grandes. Esto se combina con el hecho de que, a diferencia de los sistemas de desarrollo exagerados que se necesitan para programar en Windows, el desarrollo de MCU a menudo utiliza compiladores muy bien optimizados, la mayoría de las veces con código fuente de C y C ++ muy eficiente, a veces con poca o ninguna sobrecarga del sistema operativo. Si bien apenas puede escribir un programa de Windows para mostrar su nombre en cualquier dispositivo sin consumir al menos cientos de kilobytes, incluidos los recursos del sistema operativo, por lo general puede lograr lo mismo en una pantalla LCD con una MCU de menos de 256 bytes, incluida la biblioteca y la baja. nivel de soporte BIOS!

Por supuesto, hay problemas de costo y espacio, como han señalado otros. Pero la historia a la mano aquí es que lo que se considera una pequeña cantidad de RAM por los recién llegados en estos días es realmente un poco más que nunca, y al mismo tiempo, los componentes y dispositivos con los que la MCU deberá interactuar son cada vez más inteligentes. Honestamente, mi uso más grande de RAM en muchas aplicaciones de MCU últimamente ha sido para buffers de comunicación impulsados por interrupciones, para liberar a MCU para otras tareas sin temor a perder datos. Pero créanlo o no, para la lógica ordinaria y la funcionalidad computacional, los MCU se adaptan bastante bien a sus limitados recursos de memoria RAM y flash integrados, y realmente puede hacer un lote con muy poco.

Tenga en cuenta que, una vez, los videojuegos famosos con gráficos simples pero con una lógica de juego compleja como "PAC Man" y "Space Invaders" se realizaron normalmente dentro de 8K ROMS, en máquinas que apenas tenían 8 o 16 KB de RAM. !

    
respondido por el Randy 16.10.2014 - 00:33
3

Además de los excelentes puntos relacionados con el costo y la fabricación, hay una demanda sorprendentemente escasa de gran cantidad de RAM en el chip.

A menudo trabajo con microcontroladores con flash en decenas de kB (16kB, 32kB) y RAM en el rango de kB (1kB, 2kB). Muy a menudo me quedo sin flash, y casi nunca me quedo sin memoria RAM. En la mayoría de mis proyectos me acerco bastante al límite de flash, pero generalmente necesito mucho menos del 20% de la RAM.

La mayoría de los microcontroladores tienen dos tipos diferentes de roles:

  • regulación y control: tienen que controlar una pieza de maquinaria. Incluso en el caso de un algoritmo de controlador complicado, que puede ocupar decenas de kB de espacio de código, se requiere muy poca RAM. Usted está bajo el control de un proceso físico, y tiene variables que contienen unas pocas unidades físicas, y tal vez algunas variables como contadores de bucle. No necesitas más.

  • procesamiento de datos: en el caso raro de que necesite almacenar una gran cantidad de datos al mismo tiempo, puede usar RAM externa. Casi todos los microcontroladores modernos tienen soporte nativo para ello. Si necesita un programa simple que use mucha memoria, será más barato y más pequeño usar un pequeño microcontrolador y una RAM externa, en lugar de un microcontrolador de alto nivel. Nadie produce controladores con pocos puertos, flashes pequeños y memoria RAM grande, porque hay una demanda tan pequeña para ellos.

respondido por el vsz 04.01.2015 - 16:46
2

Todas las razones ya mencionadas son, por supuesto, técnicamente válidas y precisas. Sin embargo, no olvide que la electrónica es un negocio y MCU es uno de los nichos de mercado más competitivos dentro de la industria electrónica.

Me atrevo a decir que las razones reales para vincular la etiqueta de precio de una MCU con la cantidad de SRAM incorporada son principalmente razones de comercialización, no razones de costo:

  • En la mayoría de los diseños, la frecuencia de reloj máxima alcanzable no es el factor limitante. En cambio, la cantidad de SRAM disponible es. No me malinterprete, la frecuencia de la CPU es muy importante, sin embargo, dentro de un determinado segmento de la familia MCU , generalmente no se ofrecen diferentes modelos de dispositivos a diferentes precios según la frecuencia máxima de la CPU. Además, el almacenamiento de programas Flash es el otro factor limitante clave, sin embargo, no me concentraré demasiado en Flash (la pregunta está dirigida específicamente a SRAM).

  • La cantidad de SRAM disponible está directamente relacionada con el nivel de complejidad que podrá integrar en su MCU, ya sea con bibliotecas de terceros o con su propio código extendido. Por lo tanto, es una métrica "natural" para segmentar en base a los precios de MCU. Es comprensible que un cliente técnico acepte que una MCU capaz de realizar tareas más complejas (más SRAM, más almacenamiento Flash) debería costar más. El precio, aquí, es una reflexión del valor subyacente (capacidades de entrega) de la MCU. El almacenamiento flash generalmente se ofrece en una cantidad proporcional a la SRAM.

  • Por el contrario, si toma el mercado de las CPU de escritorio y móviles, generalmente no puede obtener una MCU / CPU específica con muchos tamaños diferentes de SRAM. En cambio, el esquema de precios generalmente se basa en las capacidades de ejecución / rendimiento de la MCU / CPU: frecuencia, número de núcleos, eficiencia de energía ...

respondido por el jose.angel.jimenez 28.10.2014 - 12:40
1

Entonces, primero debe tener en cuenta que 16 KB o 32 KB son una enorme cantidad de memoria y la mayoría de los microcontroladores que se venden hoy en día no tienen una RAM tan grande.

Muchos programas de microcontroladores necesitan 10 o 50 bytes de memoria. Incluso las cosas más complejas se necesitan principalmente en los cientos de bytes.

Básicamente, hay tres casos de uso donde necesita RAM en el orden de KBytes: a) Cuando tu microcontrolador hace gráficos. b) cuando usas el microcontrolador para cálculos arbitrarios grandes c) cuando interactúas con interfaces de PC

En segundo lugar, tenga en cuenta que si habla de la memoria RAM del microcontrolador, habla del nivel 0 / Nivel 1 de la memoria caché. Si considera que un Intel Haswell tiene "solo" 64 KBytes de caché de nivel 1, reconsiderará el tamaño de RAM de un microcontrolador.

En tercer lugar, puede conectar cualquier cantidad de RAM externa a un microcontrolador, especialmente incluso más de lo que puede conectar a una CPU.

Personalmente estoy desarrollando muchas aplicaciones de microcontroladores y nunca necesité 1 KB de memoria ni más. También nunca usé RAM externa.

Las cosas son diferentes si llegamos a la ROM (hoy Flash), ya que su programa y sus datos están en la ROM. Realmente hay muchas aplicaciones en las que conectas ROM externa a tu microcontrolador, porque tienes muchos datos.

Examinemos un ejemplo: analicemos una aplicación de microcontrolador y tomemos un reproductor de MP3 portátil con pantalla y 4 Gigabytes de Flash.

Para esta aplicación necesitas tal vez 1 KB de RAM. Eso es suficiente para hacer el trabajo. Sin embargo, podría usar un poco más de RAM para búferes más grandes para acelerar la escritura de USB a Flash.

Usted ve la diferencia ahora: una PC típica contiene todos los programas y datos en la RAM. Por lo tanto, necesita mucha memoria RAM. Para el microcontrolador, todo está en Flash / ROM.

    
respondido por el Frank 16.10.2014 - 15:39
-1

Al diseñar una MCU, debe enfrentar condiciones que no son tan importantes en las PC.

  1. Durabilidad

    Para elegir los componentes, no es necesario que tome las mejores y / o la mayoría de las piezas de alto rendimiento, pero las que han demostrado funcionar correctamente después de varios años de uso, estarán disponibles por varios años y serán capaces de funcionar 24 / 7 por años. Debido a esta circunstancia, si un controlador está en el mercado por varios años, haciendo un buen trabajo, parece tener poca memoria RAM, en comparación con el estándar de PC actual. Pero de todos modos, hace su trabajo bien, y no debería haber necesidad de reemplazo, si la ingeniería estaba bien.

  2. espacio

    Las unidades de microprocesador son literalmente micros. Tienes que reducir el espacio necesario al mínimo absoluto. Por supuesto, puede obtener 256 MB en el mismo espacio que los chips de 64 KB de 10 años. Aquí es donde llega el punto # 1.

  3. Precio

    No solo el precio de compra, sino también el consumo de energía. No desea diseñar un MCU que tenga control sobre un sistema de entrada, que necesita 1000 W, si su rival en el negocio tiene uno que solo necesita 25 W. Y, por supuesto, el precio de compra más barato (con la misma calidad) siempre es mejor.

respondido por el Sempie 16.10.2014 - 14:49

Lea otras preguntas en las etiquetas