In diesem Dokument werden 60 DMIPS / mW für einen Cortex M0 gegenüber 31 DMIPS / mW für einen M3 angegeben. (Letzteres stimmt nicht mit den Zahlen in diesem Dokument überein , in denen 1,25 DMIPS / MHz und 0,19 mW / MHz angegeben sind, was 6,6 DMIPS / mW ergibt.)
Weiß jemand, wie die Leistung / Leistung des M0 im Vergleich zu 8/16-Bit-Controllern ist? wie AVR, PIC und MSP430? Und was ist mit den M3-Figuren los?
microcontroller
performance
Federico Russo
quelle
quelle
Antworten:
Hier sind einige Hinweise, die ich geben kann. Die von NXP bereitgestellten Spezifikationen gelten für den gesamten Chip (Kern, Speicher, Peripheriegeräte). Die von ARM bereitgestellte Spezifikation basiert nur auf dem Kern. Da die Zahlen unterschiedlich abgeleitet sind, ist der Vergleich sehr schwierig.
Also schlage ich vor, wir treten zurück und schauen uns zwei Geräte an. Eine NXP M0-basierte MCU und eine MXP M3-basierte MCU.
Schauen wir uns für die M0-basierte MCU den LPC1111 an. Wenn diese MCU eine besetzte Leerlaufschleife ausführt, verbraucht sie 3 mA Strom bei einer Taktrate von 12 MHz. Dies ergibt 250 uA / MHz, was bei 3,3 V 825 uW / MHz entspricht.
Schauen wir uns für die M3-basierte MCU den LPC1311 an. Wenn diese MCU dieselbe besetzte Leerlaufschleife ausführt, verbraucht sie 4 mA Strom bei 12 MHz. Ergibt 333,3 uA / MHz, was 1,1 mW / MHz entspricht.
Wenn wir uns eine MSP430C1101-MCU (16-Bit) ansehen, werden wir sehen, dass 240 uA bei 1 MHz verwendet werden, wenn die Spannung 3 V beträgt. Dies ergibt 720 uW / MHz.
Als nächstes wenden wir uns dem ATMega328 zu (der in Arduino Uno verwendet wird). Wir sehen 200uA bei 1MHz mit einer Spannung von 2V. Dies ergibt 400 uA / MHz.
Es ist auch zu beachten, dass MSP430 und AVR unterschiedlich spezifiziert sind. Ihr Stromverbrauch wird bei 1 MHz angegeben, während M0 und M3 bei 12 MHz angegeben werden. Dies bedeutet, dass M0 und M3 Ineffizienzen bei der Skalierung von bis zu 12 MHz aufweisen, die in ihre Zahlen eingearbeitet sind.
Diese Werte sind alle aktiven Stromverbrauchszahlen. Wenn Sie sich den Stromverbrauch im Ruhezustand des Geräts ansehen, sehen Sie, dass um Größenordnungen weniger Strom verbraucht wird. Der Vorteil des 32-Bit-M0 besteht darin, dass er in kürzerer Zeit viel mehr Arbeit erledigen kann als die 8- und 16-Bit-MCU. Dies bedeutet, dass für eine bestimmte Arbeitsbelastung viel mehr Zeit im Schlafzustand verbracht wird. Der M0 in den Händen eines guten Ingenieurs erzielt trotz der Unterschiede im aktiven Stromverbrauch oftmals eine weitaus bessere Energieeffizienz als eine 8-Bit-MCU in den Händen eines weniger erfahrenen Ingenieurs.
Nach meiner Erfahrung liegt der M0 so nahe am aktiven 16- und 8-Bit-Stromverbrauch, dass Sie viele Unterschiede in der Anwendung ausgleichen können. Außerdem stellt der Stromverbrauch von allem, was an der MCU hängt, die MCU in den Schatten. Für viele Anwendungen ist es daher nicht das Wichtigste, die Effizienz der MCU zu verbessern.
Ich hoffe das hilft. Es ist ein langer Weg zu sagen, dass der Stromverbrauch etwas schlechter ist, aber mit diesen Taktzyklen wird viel mehr erreicht als mit anderen Chips. Es hängt also wirklich von Ihrer Anwendung ab.
quelle
Der Vergleich von 12 MHz mit 1 MHz ist voreingenommen - höhere Taktraten erfordern weniger Strom pro MHz. Zum Beispiel können die neuesten MSP430 bis zu 80-120 uA pro MHz mit 8 / 16MHz im aktiven Modus erreichen.
Es ist erwähnenswert, dass richtig geschriebener Code den aktiven Modus der MCU unter 1% (oder sogar 0,1%) der Zeit hält, so dass die Leistungsmodi hier einen großen Unterschied machen.
Im wirklichen Leben sind MSP430s schwer zu schlagen (ich bin kein TI-Mitarbeiter), da sehr nützliche Zustände mit geringem Stromverbrauch länger dauern, bis andere MCUs aufwachen oder RAM-Inhalte nicht behalten, was lächerlich ist.
quelle