Ce document cite 60 DMIPS / mW pour un Cortex M0, contre 31 DMIPS / mW pour un M3. (Ce dernier n'est pas d'accord avec les chiffres de ce document , qui citent 1,25 DMIPS / MHz et 0,19 mW / MHz, ce qui donne 6,6 DMIPS / mW.)
Quelqu'un sait-il comment les performances / puissance du M0 se comparent aux contrôleurs 8/16 bits comme AVR, PIC et MSP430? Et quel est le problème avec les chiffres M3?
microcontroller
performance
Federico Russo
la source
la source
Réponses:
Voici quelques conseils que je peux vous fournir. Les spécifications fournies par NXP concernent l'ensemble de leur puce (cœur, mémoire, périphériques). La spécification fournie par ARM est basée uniquement sur le cœur. Comme les chiffres sont dérivés différemment, il est vraiment difficile de faire la comparaison.
Je propose donc de prendre du recul et d'examiner deux appareils. Un MCU basé sur NXP M0 et un MCU basé sur MXP M3.
Pour le MCU basé sur M0, regardons le LPC1111. Lorsque ce MCU exécute une boucle inactive occupée, il consomme 3 mA de courant à une fréquence d'horloge de 12 MHz. Cela donne 250uA / MHz, ce qui à 3,3 V est 825uW / MHz.
Pour le MCU basé sur M3, regardons le LPC1311. Lorsque ce MCU exécute la même boucle inactive occupée, il consommera 4 mA de courant à 12 MHz. Rendement 333,3 uA / MHz, soit 1,1 mW / MHz.
Si nous regardons un MCU MSP430C1101 (16 bits), nous verrons qu'il va utiliser 240uA à 1MHz lorsque la tension est de 3V. Cela donne 720uW / MHz.
Passons maintenant à l'ATMega328 (utilisé dans Arduino Uno). On voit 200uA utilisé à 1MHz avec une tension de 2V. Cela donne 400uA / MHz.
Il convient également de noter que le MSP430 et l'AVR sont spécifiés différemment. Leur consommation d'énergie est donnée à 1 MHz, alors que les M0 et M3 sont donnés à 12 MHz. Cela signifie que les M0 et M3 ont des inefficacités de mise à l'échelle jusqu'à 12 MHz cuits dans leurs nombres.
Ces valeurs sont toutes des valeurs de consommation actuelles actives. Si vous regardez la consommation actuelle lorsque l'appareil est en veille, vous voyez des ordres de grandeur moins d'énergie utilisée. L'avantage du M0 32 bits est qu'il peut faire beaucoup plus de travail en moins de temps que le MCU 8 et 16 bits. Cela signifie que pour une charge de travail donnée, il passera beaucoup plus de temps en sommeil. Le M0 entre les mains d'un bon ingénieur obtiendra souvent une efficacité énergétique bien meilleure qu'un MCU 8 bits entre les mains d'un ingénieur moins qualifié malgré les différences de consommation d'énergie active.
D'après mon expérience, le M0 est si proche de la consommation d'énergie active de 16 et 8 bits que vous pouvez compenser beaucoup de différences dans l'application. En outre, la consommation électrique de tout ce que vous avez suspendu au MCU est souvent supérieure à celle du MCU. Donc, pour de nombreuses applications, la gestion de l'efficacité du MCU n'est pas la chose la plus importante.
J'espère que ça aide. C'est une longue façon de dire que la consommation d'énergie est un peu pire, mais vous faites beaucoup plus avec ces cycles d'horloge que les autres puces. Cela dépend donc vraiment de votre application.
la source
La comparaison de 12 MHz à 1 MHz est biaisée - des fréquences d'horloge plus élevées nécessitent moins de courant par MHz. Par exemple, les derniers MSP430 peuvent descendre jusqu'à 80-120uA par MHz avec 8 / 16MHz en mode actif.
Il convient de mentionner que le code correctement écrit maintient le mode actif du MCU en dessous de 1% (ou même 0,1%) de temps, donc les modes d'alimentation font beaucoup de différence ici.
Dans la vie réelle, les MSP430 sont difficiles à battre (je ne suis pas un employé de TI) en raison d'états de faible consommation très utiles où d'autres MCU prennent plus de temps à se réveiller ou ne gardent pas le contenu de la RAM, ce qui est ridicule.
la source