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, depuración más fácil, núcleos de 32 bits, etc.
Todavía es común ver RAM en los 10 de KB (16/32 KB).
No parece que pueda ser una cuestión de costo o tamaño directamente. ¿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 en un popular proveedor de Internet, veo un Cortex M4 con 256 KB por menos de US $ 8, y luego por unos pocos dólares más puedes encontrar algunos más sin ROM, pero parece bastante escaso...
No necesito exactamente un microcontrolador con un MB de almacenamiento volátil, pero parece que alguien podría...
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. Un área de silicio más grande tiene un efecto de "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 es más probable que cada chip tenga un defecto.
En segundo lugar está el tema del proceso. Las matrices de RAM deben optimizarse de maneras diferentes a 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 fundiciones de semiconductores que se dedican más o menos a producir DRAM. No CPU u otra lógica, solo DRAM directa. La DRAM requiere capacitores de área eficiente y transistores de muy baja fuga. La fabricación de los condensadores requiere un procesamiento especial. Hacer transistores de baja fuga da como resultado transistores más lentos, lo cual es una buena compensación 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 troquel de microcontrolador significaría que tendría que compensar la optimización del proceso de alguna manera. Los arreglos de RAM grandes también tienen más probabilidades de desarrollar fallas simplemente debido a su gran área, lo que reduce el rendimiento y aumenta los costos. Probar arreglos de RAM grandes también requiere mucho tiempo y, por lo tanto, incluir arreglos grandes aumentará los costos de prueba. Además, las economías de escala reducen el costo de los chips RAM separados más que los microcontroladores más especializados.
El consumo de energía es otra razón. Muchas aplicaciones integradas tienen limitaciones de energía y, como resultado, muchos microcontroladores se construyen para que puedan ponerse en un estado de suspensión de muy bajo consumo. Para habilitar la suspensión de muy bajo consumo, se utiliza SRAM debido a su capacidad para mantener su contenido con un consumo de energía extremadamente bajo. La SRAM respaldada por batería puede mantener su estado durante años con 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 hace un túnel hacia el sustrato o se filtran a través de los transistores de la celda. Para combatir esto, DRAM debe leerse y escribirse continuamente. Como resultado, la DRAM consume significativamente más energía que la SRAM en reposo.
Por otro lado, las celdas de bits de SRAM son mucho más grandes que las celdas de bits de DRAM, por lo que si se requiere mucha memoria, 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 el chip junto con una mayor cantidad de DRAM fuera del 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 chips múltiples que contienen matrices separadas para el procesador y la RAM. Otras soluciones implican producir almohadillas en la parte superior del paquete de la CPU para que se pueda apilar un chip de RAM 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 según la cantidad de memoria requerida, sin necesidad de enrutamiento adicional a nivel de placa (los buses de memoria son muy anchos y ocupan una gran cantidad de área de placa). Tenga en cuenta que estos sistemas generalmente no se consideran microcontroladores.
De todos modos, muchos sistemas integrados muy pequeños no requieren mucha RAM. Si necesita mucha RAM, entonces probablemente querrá usar un procesador de gama alta que tenga DRAM externa en lugar de SRAM integrada.
La memoria probablemente ocupa la mayor parte del espacio de silicio, y la RAM, que es muy rápida de usar, es volátil y usa energía constantemente para mantener su estado. A menos que necesite mucha RAM, no es útil para muchas otras aplicaciones. Si un diseñador de sistemas integrados necesita más RAM, simplemente obtiene un chip de RAM externo y usa interfaces de memoria periférica que los microcontroladores suelen tener 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 que los microcontroladores en general todavía tienen una memoria RAM integrada razonablemente baja, porque el código de aplicación razonable y los escenarios de casos de uso normalmente no necesitan mucho.
Cuando comienza a adaptarse a las arquitecturas más grandes que necesitan ejecutar sistemas operativos completos, entonces la memoria RAM se vuelve extremadamente importante, sin embargo, sale del ámbito de los microcontroladores y se convierte en computadoras integradas más como las que ve en las placas Beaglebone y Raspberri Pi. dias. 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 prácticamente se requiere memoria externa 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 visión por computadora de baja resolución como detección de movimiento y rastreo y seguimiento de objetos. Elegí un ARM Cortex M3 de bajo conteo de pines para esta tarea y mientras observaba la selección de Atmel de sus procesadores de la serie SAM3, de hecho opté por la RAM más alta que pude encontrar, porque en este caso no quería comprar un IC de 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 en particular, me hubiera gustado mucho tener la opción de muchos 100's de KB más de RAM si es posible.
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 cueste solo 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 que solo tienen un bus de direcciones de 8 bits, lo que los limita a 256 bytes de RAM.
Pero la mayoría de los microcontroladores de gama media (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 la arquitectura Harvard o Von Neumann .
La mayoría de los microcontroladores utilizan la arquitectura 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. Entonces, para estos, el bus de direcciones de 16 bits puede acceder hasta 64K (65,536) bytes de RAM. Todavía hay un límite de 64K establecido por la arquitectura, y si se quiere superar ese límite, se debe usar 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 solo un 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 normalmente. Una vez más, se puede usar la paginación para aumentar el programa disponible o el espacio RAM.
Habiendo trabajado con microcontroladores y sistemas pequeños durante un buen tiempo, me gustaría señalar que muy a menudo se necesita muy poca memoria 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 antes, y usar más de ellas para distribuir muchas tareas en sistemas más grandes. Esto se combina con el hecho de que, a diferencia de los sistemas de desarrollo inflados necesarios para programar en Windows, el desarrollo de MCU a menudo usa compiladores muy bien optimizados, la mayoría de las veces con código fuente C y C++ muy eficiente, a veces con poca o ninguna sobrecarga del sistema operativo. Si bien es difícil 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 supuesto, hay problemas de costo y espacio como han señalado otros. Pero la historia en cuestión aquí es que lo que los recién llegados consideran una pequeña cantidad de RAM en estos días es realmente un poco más que nunca, y mientras tanto, los componentes y dispositivos con los que la MCU necesitará interactuar son cada vez más inteligentes. Honestamente, mi mayor uso de RAM en muchas aplicaciones de MCU últimamente ha sido para búferes de comunicación controlados por interrupciones, para liberar la MCU para otras tareas sin temor a perder datos. Pero créalo o no, para la lógica ordinaria y la funcionalidad computacional, las MCU se adaptan bastante bien a sus limitados recursos integrados de RAM y flash, y realmente puede hacer mucho con muy poco.
Tenga en cuenta que alguna vez, los videojuegos famosos con gráficos toscos pero una lógica de juego compleja como "PAC Man" y "Space Invaders" generalmente se realizaban dentro de 8K ROMS, en máquinas que apenas tenían 8 o 16 KB de RAM.
Además de los excelentes puntos sobre el costo y la fabricación, sorprendentemente hay poca demanda de una 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 RAM. En la mayoría de mis proyectos, me acerco bastante al límite de flash, pero normalmente necesito mucho menos del 20 % de RAM.
La mayoría de los microcontroladores muy pequeños tienen dos tipos diferentes de funciones:
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 tiene el control de un proceso físico y tiene variables que contienen algunas unidades físicas y tal vez algunas variables como contadores de bucle. No hay necesidad de más.
procesamiento de datos: en el raro caso de que necesite almacenar una gran cantidad de datos al mismo tiempo, puede usar RAM externa. Prácticamente 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 microcontrolador pequeño y RAM externa, en lugar de un microcontrolador de alto nivel. Nadie produce controladores con pocos puertos, flash pequeño y RAM grande, porque hay muy poca demanda de ellos.
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 las MCU son 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 el precio de una MCU con la cantidad de SRAM integrada son principalmente razones de marketing, 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 malinterpreten, la frecuencia de la CPU es muy importante, sin embargo, dentro de un determinado segmento de la familia de MCU , generalmente no se le ofrecen diferentes modelos de dispositivos a diferentes precios en función de la frecuencia máxima de la CPU. Además, el almacenamiento de programas Flash es el otro factor limitante clave; sin embargo, no me centraré 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 implementado. Por lo tanto, es una métrica "natural" para segmentar en base a sus 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 un reflejo 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 CPU de escritorio y móviles, por lo general no puede obtener una MCU/CPU específica con muchos tamaños de SRAM diferentes. 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 energética...
Entonces, primero debe considerar que 16 KB o 32 KB son una cantidad enorme de memoria y la mayoría de los microcontroladores que se venden hoy en día no tienen una cantidad tan grande de RAM.
Muchos programas de microcontroladores necesitan 10 o 50 bytes de memoria. Incluso las cosas más complejas necesitan principalmente cientos de bytes.
Básicamente, hay tres casos de uso en los que necesita RAM en el orden de KBytes: a) cuando su microcontrolador hace gráficos b) cuando usa el microcontrolador para grandes cálculos arbitrarios c) cuando interactúa con interfaces de PC
En segundo lugar, tenga en cuenta que si habla de RAM de microcontrolador, habla de caché de nivel 0 / nivel 1. Si considera que un Intel Haswell tiene "solo" 64 KByte 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. Tampoco usé nunca RAM externa.
Las cosas son diferentes si llegamos a ROM (hoy Flash), ya que su programa y datos están en la ROM. Realmente hay muchas aplicaciones en las que adjunta una ROM externa a su microcontrolador, porque tiene 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 quizás 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.
Ahora ve la diferencia: una PC típica contiene todos los programas y datos en la RAM. Por lo tanto, necesita mucha RAM. Para el microcontrolador, todo esto está en Flash/ROM.
Al diseñar una MCU, debe enfrentar condiciones que no son tan importantes en las PC.
Durabilidad
Para elegir los componentes, no necesariamente se eligen las mejores y/o las de mayor rendimiento, sino aquellas que han demostrado funcionar correctamente después de varios años de uso, estarán disponibles durante varios años y son capaces de funcionar las 24 horas del día, los 7 días de la semana. años. Debido a esta circunstancia, si un controlador está en el mercado durante varios años, haciendo bien su trabajo, parece tener poca memoria RAM, en comparación con el estándar de PC actual. Pero de todos modos, hace bien su trabajo, y no debería haber necesidad de reemplazo, si la ingeniería fue buena.
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 el #1 viene al punto.
Precio
No solo el precio de compra, sino también el consumo de energía. No desea diseñar una MCU que tenga control sobre un sistema de entrada, que necesita 1000 W, si su rival en el negocio tiene una que solo necesita 25 W. Y, por supuesto, el precio de compra más barato (con la misma calidad) es siempre mejor.
Jarrod Christman
dormilón
imallet
marcajes
TC1
it seems like somebody might
es el truco aquí, la mayoría de la gente no lo hace. No va a transmitir Netflix exactamente en ese chip, y los 64K suelen ser más que suficientes para todo lo que necesita hacer con un microcontrolador . Si quiere ir más alto, obtenga una composición completa, por ejemplo, una frambuesa.dormilón
dormilón
usuario2338816
Dmitri Grigoriev
imallet