¿Cómo funciona un Cortex M0 en comparación con los controladores de 8 bits?

10

Este documento cita 60 DMIPS / mW para un Cortex M0, frente a 31 DMIPS / mW para un M3. (Este último no está de acuerdo con los números en este documento , que cita 1.25 DMIPS / MHz y 0.19 mW / MHz, dando 6.6 DMIPS / mW.)
¿Alguien sabe cómo el rendimiento / la potencia de M0 se compara con los controladores de 8/16 bits como AVR, PIC y MSP430? ¿Y qué pasa con las cifras de M3?

    
pregunta Federico Russo

2 respuestas

9

Aquí hay un par de sugerencias que puedo proporcionar. Las especificaciones que proporciona NXP son para todo su chip (núcleo, memoria, periféricos). La especificación que proporciona ARM se basa solo en el núcleo. Como los números se derivan de manera diferente, es muy difícil hacer la comparación.

Por lo tanto, propongo que retrocedamos y miremos dos dispositivos. Una MCU basada en NXP M0 y una MCU basada en MXP M3.

Para el MCU basado en M0, veamos el LPC1111. Cuando esta MCU está ejecutando un bucle inactivo ocupado, consumirá 3 mA de corriente a una velocidad de reloj de 12 MHz. Esto produce 250uA / MHz, que a 3.3V es 825uW / MHz.

Para el MCU basado en M3, veamos el LPC1311. Cuando esta MCU está ejecutando el mismo bucle inactivo ocupado, consumirá 4 mA de corriente a 12 MHz. Rendimiento 333.3uA / MHz, que es 1.1mW / MHz.

Si observamos una MCU MSP430C1101 (16 bits), veremos que utilizará 240uA a 1MHz cuando el voltaje sea de 3V. Esto produce 720uW / MHz.

A continuación, pasemos al ATMega328 (usado en Arduino Uno). Vemos 200uA utilizados a 1MHz con un voltaje de 2V. Esto produce 400uA / MHz.

También se debe tener en cuenta que el MSP430 y el AVR se especifican de manera diferente. Su consumo de energía se da a 1MHz, mientras que los M0 y M3 se dan a 12MHz. Esto significa que M0 y M3 tienen ineficiencias en cuanto a escalar hasta 12 MHz en sus números.

Estos valores son todos los números de consumo de corriente activos. Si observa el consumo actual cuando el dispositivo está en estado inactivo, verá que se están utilizando órdenes de magnitud menos energía. La ventaja que proporciona la M0 de 32 bits es que puede realizar mucho más trabajo en menos tiempo que la MCU de 8 y 16 bits. Esto significa que, para una carga de trabajo determinada, pasará mucho más tiempo en estado de suspensión. El M0 en manos de un buen ingeniero a menudo obtendrá una eficiencia de energía mucho mejor que una MCU de 8 bits en manos de un ingeniero menos calificado a pesar de las diferencias en el consumo de energía activa.

Desde mi experiencia, el M0 está tan cerca del consumo de energía activa de 16 y 8 bits que puede compensar muchas de las diferencias en la aplicación. Además, muchas veces el consumo de energía de todo lo que tiene colgado de la MCU empequeñece a la MCU. Por lo tanto, para muchas aplicaciones abordar la eficiencia de la MCU no es lo más importante.

Espero que ayude. Es un largo camino para decir que el consumo de energía es un poco peor, pero con esos ciclos de reloj se hace mucho más que con otros chips. Entonces, realmente depende de tu aplicación.

    
respondido por el tallganglyguy
3

La comparación de 12MHz a 1MHz está sesgada: las velocidades de reloj más altas requieren menos corriente por MHz. Por ejemplo, el último MSP430 puede ir tan bajo como 80-120uA por MHz con 8 / 16MHz en modo activo.

Vale la pena mencionar que el código escrito correctamente mantiene el modo activo de MCU por debajo del 1% (o incluso el 0,1%) de tiempo, por lo que los modos de potencia hacen una gran diferencia aquí.

En la vida real, las MSP430 son difíciles de superar (no soy un empleado de TI) debido a los estados de baja potencia muy útiles donde otras MCU tardan más en despertar o no mantienen el contenido de RAM, lo que es ridículo.

    
respondido por el user19790

Lea otras preguntas en las etiquetas