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 citan 1.25 DMIPS / MHz y 0.19 mW / MHz, dando 6.6 DMIPS / mW.)
¿Alguien sabe cómo se compara el rendimiento / potencia M0 con los controladores de 8/16 bits? como AVR, PIC y MSP430? ¿Y cuál es el trato con las figuras M3?
microcontroller
performance
Federico Russo
fuente
fuente
Respuestas:
Aquí hay un par de consejos 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 realmente difícil hacer la comparación.
Por lo tanto, propongo que demos un paso atrás y veamos 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 usará 240uA a 1MHz cuando el voltaje sea de 3V. Esto produce 720uW / MHz.
A continuación, pasemos al ATMega328 (utilizado en Arduino Uno). Vemos 200uA usados 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 el M0 y el M3 tienen ineficiencias de escalado de hasta 12MHz en sus números.
Estos valores son todos números de consumo de corriente activa. Si observa el consumo actual cuando el dispositivo está en estado de suspensión, verá que se utilizan órdenes de magnitud menos energía. La ventaja que proporciona el M0 de 32 bits es que puede hacer mucho más trabajo en menos tiempo que el 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 energética 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.
Según 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 tienes colgando de la MCU eclipsa a la MCU. Entonces, para muchas aplicaciones, abordar la eficiencia de la MCU no es lo más importante.
Espero que eso ayude. Es un largo camino para decir que el consumo de energía es un poco peor, pero se logra mucho más con esos ciclos de reloj que otros chips. Por lo tanto, realmente depende de su aplicación.
fuente
La comparación de 12MHz a 1MHz está sesgada: las velocidades de reloj más altas requieren menos corriente por MHz. Por ejemplo, los últimos MSP430 pueden llegar a 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 0.1%) de tiempo, por lo que los modos de potencia hacen una gran diferencia aquí.
En la vida real, los MSP430 son difíciles de superar (no soy un empleado de TI) debido a estados muy útiles de baja potencia donde otras MCU tardan más en despertarse o no mantienen el contenido de RAM, lo cual es ridículo.
fuente