¿Cuál es el lugar de los microcontroladores de 8 y 16 bits? ¿Por qué no se ha apoderado de 32 bits?

9

¿Cuál es el punto de corte real en términos de la compensación entre costo y rendimiento para seleccionar microcontroladores de 32 bits?

En otras palabras, con el auge y el dominio de las arquitecturas ARM, ¿por qué seguimos usando microcontroladores de 8 y 16 bits? ¿Siguen siendo mucho más baratos?

Entiendo que los dispositivos de gama baja no necesitan los recursos ofrecidos por arquitecturas más grandes y complejas. Sin embargo, ¿cuál es la verdadera motivación para seguir usándolos si los costos parecen converger hacia el mismo rango?

Bruno Morais
fuente
1
¿El consumo de energía?
Leon Heller
77
El µC más barato de 32 bits en Digikey que veo es de aproximadamente $ 0.64, el más barato de 8 bits es de $ 0.35. Si eres una gran empresa que va a construir un millón de widgets simples, esa es una gran diferencia.
Samuel
@LeonHeller A primera vista, tiendo a estar de acuerdo, pero mire el punto que hice en los comentarios de la respuesta propuesta.
Bruno Morais
2
Mirar incluso los precios a granel en DigiKey no es una guía brillante, para micros adecuadamente pequeños en pequeñas aplicaciones integradas de baja potencia que se están produciendo en masa, nadie los está comprando en DigiKey y es probable que estén comprando troqueles para no pegarse. Un paquete de chips para soldar en una placa. Un micro de 8 bits siempre será más pequeño, más simple, por lo tanto, más barato y de menor potencia que uno de 32 bits de construcción equivalente. Sí, el margen está cayendo hasta el punto de insignificancia para muchas personas, pero en volúmenes masivos, incluso 1/10 de un centavo ahorrado vale la pena.
John U
Aquí hay un artículo relevante que encontré en el sitio web de Electronic Design: 8 Bit o 32 Bit? Elegir el MCU de su próximo diseño
Garth Wilson

Respuestas:

17

Quizás hace un año, hubo una diferencia significativa entre los 8 bitters de gama baja y los microcontroladores más baratos de 32 bits. Ya no es el caso.

Según el precio a granel de Digi-Key, puede obtener un PIC10F200 de 8 bits por 35ȼ en cantidades de 2500 en un paquete SOT-23-6. Obtiene un CY8C4013SXI-400 (ARM Cortex-M0) de 32 bits para 36ȼ en 2500 cantidades en un paquete SOIC-8. (El precio a granel de Digi-Key no es realista en términos de lo que los fabricantes realmente pagan, lo que probablemente sea mucho menos, pero creo que es válido para una comparación aproximada de precios entre diferentes productos para cantidades similares).

Entonces el OP es correcto, están convergiendo.

Entonces, ¿por qué no se usan más los chips de 32 bits? Bueno, como dije en mi primer párrafo, esta paridad de precio y tamaño solo ocurrió en el último año o 18 meses. Y todavía tienen un largo camino por recorrer antes de que haya suficientes fichas para ser competitivos.

De los 6875 chips ARM disponibles de Digi-Key, solo hay cuatro en stock con precios por cantidad inferiores a un dólar. Cuatro . Mientras tanto, hay cientos de chips de 8 bits por debajo de un dólar para que los ingenieros elijan.

Pero digamos que había al menos unas pocas docenas de micros de 32 bits de gama baja disponibles. ¿Serían elegidos automáticamente sobre los de 8 bits?

En primer lugar, debe informar a los ingenieros sobre ellos. Siempre hay mucha resistencia al cambio. Nuevas cosas que aprender: desde el punto de vista del hardware, aprender a incorporar el nuevo chip en un circuito. Hay nuevas herramientas, como programadores en circuito, nuevos compiladores, etc. Para los ingenieros de firmware, aprender a usar un nuevo conjunto de periféricos y temporizadores (principalmente diseños de registro y significados de bits).

32 bits es bueno y todo eso, pero a menos que uno necesite hacer muchos cálculos pesados, ¿cuál es el punto? Si solo tiene cuatro pines GPIO, acceder a ellos internamente como un registro de 32 bits no ofrece ninguna ventaja sobre el uso de un registro de 8 bits.

Creo que el consumo de energía siempre va a estar a favor de los micros de 8 bits.

Por ejemplo, el PIC10F200 extrae 175 µA funcionando a 4 MHz y 2v y 100 nA en modo de suspensión. El CY8C4013SXI-400 extrae aproximadamente 800 µA funcionando a 4MHz y 2v y 1 uA en modo de suspensión. (La hoja de datos para el CY8C4013SXI no tenía números para 4 MHz o 2v, por lo que tuve que hacer algunas estimaciones; la hoja de datos dice que dibuja 2 ma @ 6 MHz y 3.3v).

Entonces, el BRAZO consume 4.5 veces más corriente cuando está despierto y 10 veces más cuando duerme. No parece mucho, pero es la diferencia entre correr en una celda de moneda durante 3 meses o durante un año. (Supongo que ambos microcontroladores están en su mayoría sincronizados, actualizando puertos, etc. y no haciendo cálculos realmente pesados. Si este es el caso, y el micro de 8 bits tiene que hacer una gran cantidad de aritmética de varios bytes durante un período prolongado con el tiempo, pierde parte de su ventaja).

Es interesante que el ARM dibuje aproximadamente cuatro veces más corriente que el 8-bitter, y a su vez tiene registros internos y rutas de datos que son cuatro veces más anchos. No creo que sea una coincidencia. Para CMOS, el consumo de energía es aproximadamente proporcional a la cantidad de transistores que se conmutan, y el ARM obviamente está haciendo mucho más por instrucción ejecutada.

A medida que más proveedores de ARM traigan chips de gama baja, no me sorprendería que proveedores como Microchip redujeran aún más sus precios. En cualquier caso, con los precios más o menos iguales, paquetes de tamaño similar, pero muchos menos chips de 32 bits para elegir, creo que los microcontroladores de 8 bits seguirán existiendo por un tiempo, especialmente porque has Decenas de miles de ingenieros se familiarizaron con ellos

tcrosley
fuente
Para el consumo de energía con modos de suspensión implementados, también deberá considerar la eficiencia del código. Si la MCU se activa mediante un disparador, luego ejecuta un código y vuelve a dormir, la cantidad de tics de reloj que se necesitan para finalizar el trabajo será bastante relevante. Creo que la mayor parte del consumo actual de una MCU proviene del oscilador que funciona a toda velocidad. Para hacer el mismo trabajo que un 32 amargo, un 8 amargo probablemente necesitará aproximadamente cinco veces la cantidad de ciclos, simplemente porque generalmente son mucho menos efectivos para el código, incluso cuando se hace una aritmética simple.
Lundin
(Y eso no es tanto porque tienen un bus de datos de 8 bits, sino principalmente porque todos los 8 bitters del mercado tienen diseños antiguos de CPU de los años 70 y 80.)
Lundin
1
@Lundin Digo esto en mi respuesta: si el 8-bitter tiene que hacer muchas matemáticas elegantes en el ISR, entonces pierde parte de su ventaja. Pero si solo está configurando algunas banderas o actualizando un registro, entonces será más eficiente.
tcrosley
5

Tres puntos principales:

  • Precio
  • Talla
  • El consumo de energía

50 ¢ cuando ordena 10,000 fichas es bastante dinero. Aún más cuando estás ordenando 100,000 chips.

Puede obtener chips de 8 bits considerablemente más pequeños que los chips de 32 bits, como el PIC10 que está disponible en un paquete SOT23-6.

Los chips de 32 bits, porque generalmente se sincronizan más rápido y hacen más, consumen mucha más energía que un pequeño chip de 8 bits. Las baterías se agotan más rápido, los sistemas de alimentación deben proporcionar más corriente (y, por lo tanto, ser más costosos), etc.

Después de todo, ¿por qué comprarías un gigante para tomar una taza de azúcar al lado?

Majenko
fuente
2
Simplemente compare dos chips del mismo fabricante, por ejemplo, el PIC18F25K20 y el PIC32MX250F512 de Microchip. Ambas MCU modernas. Ambas hojas de datos tienen Idd vs velocidad de reloj. El gráfico de 8 bits alcanza un máximo de 5 mA, el de 32 bits alcanza un máximo de 20 mA. Si lo piensa, una operación de 8 bits haría algo en 8 pestillos, un 32 bits haría lo mismo (o equivalente) a 32 pestillos. Eso es 4 veces los pestillos que deben manipularse, por lo que es 4 veces el consumo de corriente típico.
Majenko
2
La corriente inactiva para el bit 32 está entre ~ 0.5mA y 7mA. El gráfico de 8 bits para la corriente inactiva se mide en la escala µA y alcanza un máximo de 7 µA, ¡solo 4 µA cuando se ejecuta a temperatura ambiente normal ...!
Majenko
3
Excava algunas hojas de datos y búscate tú mismo.
Majenko
2
Eso supone que todo lo que el chip está haciendo es procesar. Las cosas llevan tiempo que no dependen de la velocidad del chip, como leer datos de sensores externos, etc. Una CPU de 80MHz de 32 bits no leerá un dispositivo I2C de 100KHz más rápido que una CPU de 16MHz de 8 bits.
Majenko
3
No olvide el software heredado (especialmente para sistemas que requieren certificación) y la familiaridad del desarrollador, la selección de componentes periféricos / RAM / flash (un diseño de microcontrolador con un procesador de mayor rendimiento utilizará más área de chip para la memoria; un Cortex-M con 256 bytes de RAM parece poco probable en el corto plazo), y las opciones de paquete / voltaje. Una buena respuesta también debería explicar por qué el mercado de 16 bits no está funcionando mejor (y los ISA de 8 bits más modernos como AVR) y por qué el mercado de 4 bits aparentemente es muy limitado (relojes y qué más).
Paul A. Clayton
2

Las aplicaciones uC que he desarrollado para productos comerciales casi nunca manejan tamaños de datos mayores a 8 bits; por lo tanto, incluso si los bitters de 32 bits fueran el mismo precio que los de 8 bitters, todavía no habría beneficio Como alguien más dijo, buscamos lo que es familiar, para poder resolverlo más rápidamente. Sin embargo, el último que desarrollé resultó llevar el PIC16 al límite en todos los sentidos, pero eso no fue por el tamaño de los datos. Si hago algo así, entonces realmente debería aprender ARM.

Garth Wilson
fuente
Supongo que para la mayoría de las aplicaciones de micro pequeño, el tamaño de datos requerido más grande sería de 16 bits o tal vez 24. La mayoría de las aplicaciones no necesitarán hacer mucho con cosas de más de 8 bits, pero deberán hacer algo. Por otro lado, casi todos los microcontroladores de 8 bits que se hayan fabricado (si no todos) tienen un indicador de acarreo que permite utilizar una secuencia de operaciones para realizar uno de 16 bits (o incluso más grande).
supercat
2

Esperaría que los chips ARM se hagan cargo de la mayoría de las funciones donde algo se comporta como una "computadora". Por otro lado, muchos microcontroladores de 8 bits se acostumbran a hacer cosas que podrían hacerse con un dispositivo lógico programable relativamente simple o un número moderado de compuertas, pero que en realidad pueden hacerse más baratos y / o con menos consumo de corriente usando un Micro de 8 bits simple. Cuando se diseñan aplicaciones más complicadas, a menudo es más fácil usar un micro de 32 bits que uno de 8 bits, pero si el propósito completo de un chip es, por ejemplo, observar y eliminar el rebote de una determinada entrada y, si sube, comenzar a generar 200 pulsa en una determinada salida a intervalos de 1 ms, luego 100 a intervalos de 2 ms, luego 100 a 3 ms, luego pausa durante 100 ms, y sigue haciendo eso hasta que la entrada baja, diseñar el código para eso en realidad puede ser más fácilen un micro de 8 bits que en uno de 32 bits. La diferencia de costo entre micros de 8 y 32 bits puede que ya no sea suficiente en muchos casos para justificar el gasto de un esfuerzo de ingeniería adicional para hacer que un proyecto "encaje" en un micro de 8 bits, pero en los casos en que una parte de 32 bits no No ahorre ningún esfuerzo de ingeniería, no hay razón para gastar ni un centavo extra.

Super gato
fuente
Estoy de acuerdo, pero señalo que mantener y mantener el dominio de dos cadenas de herramientas implica un esfuerzo de ingeniería propio.
Scott Seidman
2
@ScottSeidman: Cierto. Por otro lado, también vale la pena mencionar que algunos micros de 8 bits pueden comenzar a ejecutar código casi de inmediato en el encendido, mientras que los micros de 32 bits que he visto toman un poco más de tiempo.
supercat
Me pregunto si alguna vez veremos la licencia ARM en plataformas de 8 bits. Hay algunas características maravillosas de las implementaciones de ARM, como la capacidad de simplemente no registrar periféricos y buses enteros, que deberían hacer que ARMS de 8 bits corra alrededor de otras plataformas en términos de consumo de energía. Si los mfct crean bibliotecas compatibles con CMSIS, creo que eventualmente acabarían con los grandes jugadores.
Scott Seidman
@ScottSeidman: En realidad, lo que me gustaría ver serían diseños que puedan tener las partes sensibles a la temporización de los periféricos (por ejemplo, temporizadores, generadores de baudios, etc.) con una base de tiempo constante que es independiente de la velocidad de la CPU , pero solo he visto un soporte mínimo para tal concepto. No sería difícil en el silicio, pero supongo que las herramientas de síntesis carecen de los medios para hacer tales cosas de manera eficiente.
supercat
@supercat No estoy seguro acerca de otros microcontroladores, pero el PIC32 tiene el concepto de un reloj de bus periférico que se puede configurar a una velocidad de reloj diferente a la del reloj principal. Por lo tanto, puede cambiar la velocidad de la CPU, por ejemplo, para ahorrar energía, y aún mantener el mismo reloj PB para que no tenga que reprogramar todas sus velocidades de transmisión periféricas, etc.
tcrosley
1

Si bien estoy de acuerdo en que el costo de la CPU y el consumo de energía son las principales razones, una consideración más que no he visto enumerada aquí todavía es el espacio de PCB. Para muchos tipos de sistemas integrados, como, por ejemplo, una báscula de baño electrónica, no hay mucha necesidad de muchas E / S, no hay beneficio para un tamaño de bus más grande y ningún beneficio para un procesamiento más rápido. Sin embargo, no esun beneficio para un paquete más pequeño con menos pines porque hace que el diseño y el enrutamiento de una placa de circuito impreso sea más simple y, a menudo, más pequeño. Si una placa se puede diseñar como una placa de 2 capas en lugar de una placa de 4 capas, hay un considerable ahorro de costos, y los recuentos de clavijas más pequeños que a menudo vienen con procesadores de 8 bits tienden a facilitar ese ahorro más fácilmente que 32- procesadores de bits que generalmente tienen más pines y paquetes físicamente más grandes.

Eduardo
fuente
Te das cuenta de que esta es una pregunta de 2 años y medio, ¿verdad?
Olin Lathrop
@Olin Otro punto de vista no hace daño.
m.Alin
@OlinLathrop: sí, mi reloj / calendario impulsado por CPU de 8 bits funciona bien. :)
Edward
0

Incluso dentro del mundo de 8 bits, se sabe que los tipos más nuevos tardan mucho tiempo en hacerse cargo de los tipos más antiguos: vea que MCS51 sigue vivo en sus nichos y que MCS48 aún se encuentra en lugares inesperados.

En muchos casos, el cambio no ocurre porque no aporta ningún valor adicional y conlleva el costo de aprender una nueva tecnología que aún no ha demostrado estar allí para quedarse y / o se espera que siga siendo un objetivo en movimiento (lo que hace que ¡Es interesante para las personas que desean centrarse en la tecnología MCU pero molesto para las personas que desean centrarse en su aplicación y no constantemente reparar y volver a probar el software de producción para adaptar la cosecha ARM de este año!). Para algunos, un componente que ya no se desarrolla es obsoleto, para otros finalmente se ha vuelto estable , y aunque puede necesitar soluciones para corregir errores, al menos proporciona una plataforma estable para estos. El flujo de lava no siempre es el antipatrón por el que se rompe, tiende a hacer que las montañas se mantengan firmes.

rackandboneman
fuente