Strategien für die Entwicklung effizienter Ultra-Low-Power-Geräte

| Autor / Redakteur: Markus Levy und Monica Redon * / Sebastian Gerstl

Energieeffizienz ist einer der wichtigsten Ansprüche an moderne Embedded- und IoT-Geräte. Doch wird der Begriff "Ultra Low Power" gerade bei Mikrocontrollern im Marketing geradezu verschwenderisch verwendet. Woran erkennt man eine echte, taugliche ULP-MCU für das eigene Design?
Energieeffizienz ist einer der wichtigsten Ansprüche an moderne Embedded- und IoT-Geräte. Doch wird der Begriff "Ultra Low Power" gerade bei Mikrocontrollern im Marketing geradezu verschwenderisch verwendet. Woran erkennt man eine echte, taugliche ULP-MCU für das eigene Design? (Bild: Clipdealer)

Was bedeutet der Begriff „Ultra-Low-Power“ (ULP)? Ab wann kann ich von einem echten, zertifizierten ULP-Gerät sprechen, das sich für energieeffizienten, batteriebetriebenen Embedded- und IoT-Einsatz eignet? Und wie wirkt sich all dies auf die Mikrocontroller-Auswahl aus? Teil 1 einer zweiteiligen Artikelreihe.

Das Internet der Dinge (IoT) treibt die Nachfrage nach den verschiedensten batteriebetriebenen Geräten. Damit wird auch der Ruf nach immer energieeffizienteren Mikrocontrollern und anderen Systembauteilen lauter. Das Prädikat „Ultra-Low-Power“ (ULP) ist besonders bei der Vermarktung von Mikrocontrollern inzwischen überstrapaziert. Wenn man verstehen will, was ULP tatsächlich bedeutet, sollte man zunächst dessen Auswirkungen auf verschiedene Anwendungsbereiche betrachten.

Wann muss ein Gerät in welchen Situationen den geringstmöglichen Strombedarf besitzen? Bei Anwendungen mit begrenzten Ressourcen zur Stromversorgung ist der geringste Strom im Aktivmodus erforderlich (z.B. Energy Harvesting). Wenn ein System dagegen die meiste Zeit im Standby- oder Schlafmodus verbringt und nur sporadisch zum Verarbeiten einer Task geweckt wird (periodisch oder asynchron), ist der geringste Strom im Schlafmodus sinnvoll. „Ultra-Low-Power“ (ULP) hat manchmal auch Auswirkungen auf die Energieeffizienz, wenn z.B. die meisten der zu erledigenden Tasks innerhalb einer begrenzten Zeit ausgeführt werden. Ein batteriebetriebenes Gerät basiert im Großen und Ganzen auf einer Kombination dieser Betriebsarten bzw. Anforderungen.

ULP ist natürlich auch eine Frage der Auslegung sowie des Funktionsumfangs. So gilt z.B. eine MCU mit einer aktiven Stromaufnahme im Bereich von 30-40 µA/MHz und einem Abschaltstrom von 50-70 nA im Allgemeinen als „Ultra-Low-Power“. Wenn ein Mikrocontroller jedoch wirklich als „Ultra-Low-Power“ klassifiziert werden soll, sind gleichzeitig eine Reihe von Faktoren zu berücksichtigen, z.B. Architektur, SoC-Design, Prozesstechnologie, intelligente Peripherie und Deep-Sleep-Modi.

Dieser Beitrag beleuchtet anhand von zwei Mikrocontrollern von Analog Devices, wofür Ultra-Low-Power in diesem Kontext tatsächlich steht.

Ultra-Low-Power messen und optimieren

Zum besseren Verständnis erläutern wir zunächst, wie sich ULP messen lässt. Im Normalfall entnimmt der Entwickler einem Datenblatt Angaben zum Energieverbrauch je MHz und zur Stromaufnahme in den verschiedenen Schlafmodi. Hier gibt es schon das erste Problem: Die meisten Datenblätter sagen nichts über die Bedingungen, unter denen der Wert für die aktive Stromaufnahme ermittelt wurde, z.B. Code, Spannung und Wait States (Wartezyklen) im Flash. Manche Anbieter verwenden hier eine Aktivmodus-Referenz wie die EEMBC-CoreMark; andere dagegen lassen ein einfaches ‚While 1‘ Statement ablaufen. Wartezyklen im Flash führen dazu, dass die MCU weniger leistungsfähig ist, die Ausführung länger dauert und mehr Energie für die Verarbeitung einer Task benötigt wird. Bei manchen Anbietern basieren die Angaben auf einem typischen Spannungswert, bei anderen auf einer Minimalspannung; häufig wird auch gar keine Spannung spezifiziert. Die Unterschiede mögen nicht gravierend sein, doch ohne einen Standard lassen sich keine präzisen Vergleiche anstellen.

Deep-Sleep-Modi werden meist recht gut in den Datenblättern erklärt. Doch auch hier unterscheiden sich von Anbieter zu Anbieter die Bedingungen, unter denen die Stromaufnahme ermittelt wurde (z.B. Umfang des Datenerhalts, Spannung). Auch muss der Anwender in einer realen Applikation den Energieverbrauch berücksichtigen, wenn das Gerät in einen dieser Modi eintritt bzw. diesen verlässt. Dieser Wert ist nicht immer wichtig; in manchen Applikationen ist er jedoch von hoher Relevanz, je nachdem, ob das Gerät die meiste Zeit im Schlafmodus verbringt oder ob es regelmäßig geweckt wird. Dies führt uns zum nächsten Punkt: Wie viel Zeit verbringt ein Gerät im Schlafmodus? Das Verhältnis zwischen der Zeit im Aktivmodus und der Zeit im Schlafmodus ist ein wichtiger Faktor bei der Messung von ULP. Um den Vorgang zu vereinfachen, basiert das ULPMark-CoreProfile (ULPMark-CP) der EEMBC - ein Benchmark, das vielen Mikrocontroller-Anbietern als Standard für ihre Datenblätter dient - auf einem Arbeitszyklus von 1 Sekunde. Anmerkung: Die EEMBC-Arbeitsgruppe hat die Zeitdauer von 1 Sekunde gemeinschaftlich ausgewählt. Berücksichtigt man die aktive Zeit der ULPMark-CoreProfile Workload, ergibt sich ein Arbeitszyklus von etwa 98%. In diesem Benchmark wird das Gerät 1x pro Sekunde geweckt, führt einige Aufgaben aus (aktiver Zyklus) und geht danach wieder in den Schlafmodus.

Im Aktivmodus kommt es aufgrund der Analogschaltkreise typisch zu einem Offset in der Stromaufnahme. Daher ist es zur Optimierung des Gesamtenergieverbrauchs zielführend, den Aktivstrom zu verringern und Deep-Sleep-Modi sinnvoll einzusetzen. Hinweis: Wenn Sie die Frequenz reduzieren, sinkt zwar der Aktivstrom, jedoch werden die Ausführungszeiten länger, und das Offset aufgrund der Analogschaltkreise bleibt konstant, solange der Mikrocontroller aktiv ist. Welche Faktoren gilt es bei der Mikrocontroller-Auswahl also zu beachten? Und in welchem Ausmaß beeinflussen der Arbeitszyklus einer Applikation und die Stromaufnahme im Deep-Sleep-Modus die Energieeffizienz?

Der ULPMark-CP arbeitet mit einem Zyklus von einer Sekunde. In diesem Zeitraum wird das Gerät aufgeweckt, führt eine feste Anzahl an Aufgaben durch und wird anschließend zurück in den Sleep-Modus versetzt.
Der ULPMark-CP arbeitet mit einem Zyklus von einer Sekunde. In diesem Zeitraum wird das Gerät aufgeweckt, führt eine feste Anzahl an Aufgaben durch und wird anschließend zurück in den Sleep-Modus versetzt. (Bild: Markus Levy / EEMBC)

Die Energie pro Zyklus in Abhängigkeit des Arbeitszyklus D (als Anteil der Zeitspanne im Schlafmodus im Verhältnis zur Gesamtzeit) wird anhand einer vereinfachten Gleichung definiert. Diese geht davon aus, dass ein Wechsel zwischen dem On- und Off-Zustand jeweils nur wenig Energie verbraucht. In einer Formel ausgedrückt:

Energie/Zyklus = V*t*[(Iactive- Isleep)*D+ Ioff ];

Die Abnahme wird hierbei durch Ion definiert, denn Ioff ist viel niedriger als Ion, und der y-Achsenabschnitt besteht lediglich aus Ioff. Anhand dieser Gleichung lässt sich der Arbeitszyklus verdeutlichen, bei dem die Stromaufnahme im aktiven Modus eine wichtigere Rolle spielt als im Schlafmodus.

Taugliche ULP-Testplattformen

Wie bereits erwähnt, werden wir die Ultra-Low-Power-Werte (Energie) zweier Mikrocontroller von Analog Devices vergleichen – ADUCM4050 und ADUCM302x. In der (ULPMark-Ergebnistabelle) erzielen diese beiden Mikrocontroller eine Punktzahl von 203 bzw. 245,5. Dieser Benchmark bezieht sich aber nur auf den MCU-Core (daher die Bezeichnung CoreProfile). Wie erklärt sich der Unterschied von 18%?

Der ADUCM4050 basiert auf einem Core vom Typ ARM Cortex-M4F, der die ARMv7E-M Architektur implementiert; der ADUCM302x auf einem ARM Cortex-M3 mit ARMv7-M Architektur. Beide Cores haben eine dreistufige Pipeline mit Branch Speculation sowie eine ähnliche Befehlssatz-Architektur, doch nur der M4F unterstützt DSP- und Gleitkomma-Anweisungen. Da das ULPMark-CoreProfile keine DSP-Anweisungen beinhaltet, bedeutet eine Gleitkomma-Einheit (FPU) für den Cortex-M4F auch keinen Vorteil.

Für die Benchmark-Analyse lief der ADUCM4050 bei 52MHz und der ADUCM302x bei 26MHz. Ersterer benötigt etwa 11.284 Zyklen für die Verarbeitung der ULPMark-Workload; der ADUCM302x benötigt dafür 10.920 Zyklen. Demnach befindet sich der ADUCM4050 während des 1-Sekunden-Arbeitszyklus für 217µs im Aktivmodus, der ADUCM302x dagegen für 420µs. Der ADuCM4050 beansprucht aufgrund der verwendeten Frequenz (52MHz im Vergleich zu 26MHz) etwas mehr Zyklen als der ADuCM3029, und er erfordert einen Wartezyklus im Flash; der ADuCM3029 hat keine Wartezyklen im Flash. Da der ADuCM4050 einen Cache-Speicher besitzt, hat es keine nennenswerten Auswirkungen, wenn im Flash ein Wartezyklus auftritt, denn viele Befehle werden aus dem Cache-Speicher heraus ausgeführt. Der Cache-Zugriff ist mit voller Geschwindigkeit (52MHz) möglich; ein zusätzlicher Wartezyklus ist nicht erforderlich. Was die Ausführungszeit angeht, so verarbeitet der ADuCM4050 die Workload erwartungsgemäß schneller als der ADuCM3029, da er mit doppelter Frequenz läuft.

Die folgende Tabelle zeigt die Zyklen für die Verarbeitung der ULPMark-CoreProfile Workload auf gängigen ARM-Cores. Die Zyklenanzahl ist eine Schätzung, da teils compilerabhängig.

ARM-Core Schätzung: Zyklen zur Verarbeitung von ULPMark, Aktivmodus
Cortex M0 15.174*
Cortex M0+ 14.253
Cortex M3 10.920
Cortex M4 11.852
Cortex M4F

11.284

*Schätzung basierend auf Werten für M0+ und M3.

Die 10 Top-Benchmarkresultate der ULPMark-CP, wie Sie auf der Website des EEMBC zu finden sind (Stand: 18. August 2017).
Die 10 Top-Benchmarkresultate der ULPMark-CP, wie Sie auf der Website des EEMBC zu finden sind (Stand: 18. August 2017). (Bild: EEMBC)

Warum verbraucht der ADuCM4050 aber 10µA/MHz mehr Energie als der ADuCM3029? Der ADuCM4050 kann mit doppelt so hoher Frequenz laufen wie der ADuCM3029; deshalb sind zusätzliche Pufferspeicher erforderlich, um die Zeit-Constraints für diese höhere Frequenz zu erzielen. Der ADuCM4050 hat im Vergleich zum ADuCM3029 noch weitere Features:

  • Doppelte Speichergröße (SRAM und Flash): 128 kByte und 512 kByte vs. 64 kByte und 256 kByte beim ADuCM3029. Je nach Applikation kann dieser zusätzliche Speicherplatz erforderlich sein.
  • Doppelte Frequenz: 52MHz vs. 26MHz beim ADuCM3029, somit ist der ADuCM4050 leistungsfähiger
  • Zusätzlicher RBG-Timer
  • Neue Security-Funktionen: Protected Key Storage mit Key-Wrap-Unwrap und keyed HMAC mit Key-Unwrap
  • 3 zusätzliche SensorStrobe-Ausgänge
  • Voller SRAM-Datenerhalt: Der ADuCM4050 ermöglicht einen Datenerhalt von bis zu 124kByte (gegenüber 32kByte beim ADuCM3029).

Je nach den Anforderungen einer Applikation (Leistungsoptimierung, zusätzlicher Speicher, Leistungsfähigkeit im Aktivmodus, Datenerhalt, …) beeinflusst dieser Funktionsumfang die Entscheidung, ob der ADuCM4050 oder ADuCM302x zum Einsatz kommt.

Was den Deep-Sleep-Modus angeht, so hat der ADuCM4050 im Vergleich zum ADuCM3029 im ULPMark-CoreProfile eine geringere Stromaufnahme im Ruhezustand (Hibernate) bei zweifachem Datenerhalt (16kB bei ersterem und 8kB beim ADuCM3029). Dieser bessere Wert wurde erzielt, weil die Architektur des (neueren) ADuCM4050 optimiert wurde.

Die Rolle des Compilers

Wie bereits beschrieben, deckt ULPMark zwei Betriebszustände ab – einen aktiven und einen Low-Power-Zustand, bei dem sich das Gerät in einem Schlafmodus befindet. Diese Zustände werden in einem Arbeitszyklus von genau einer Sekunde zusammengefasst. Im Aktivzustand verarbeitet jedes Gerät dieselbe Workload. Wie wir jedoch gesehen haben, hat die Architektur einen Einfluss darauf, wie effizient diese Verarbeitung ist – und auch der Compiler beeinflusst das. Compiler können Statements so verändern und optimieren, dass sich der Befehlssatz ändert.

Je nach Anforderungen der Applikation optimieren Sie Ihr System vielleicht auf Größe, auf Geschwindigkeit, oder auf ein Gleichgewicht dieser beiden Faktoren, etc. Loop-Unrolling ist ein einfaches Beispiel; hier ändert sich das Verhältnis der ausgeführten Branches zum Code innerhalb der Schleife. Compiler sind oft sehr hilfreich, wenn es darum geht, Ergebnisse effizienter zu errechnen; die ausgeführte Arbeit ist jeweils gleich. So ändert sich z.B. beim ADuCM3029 das ULPMark-CP-Resultat von 245,5 bei hoher Optimierung auf Geschwindigkeit auf 232 bei mittlerer Optimierung bzw. 209 bei geringer Optimierung. Die Bedeutung von Compilern lässt sich auch anhand eines weiteren Beispiels belegen - die ULPMark-Resultate für einen Texas Instruments MSP430FR5969. Diese sind um 5% besser, wenn eine neuere Version des IAR Embedded Workbench Compilers zum Einsatz kommt; es ist jedoch nicht bekannt, welche internen Veränderungen am Compiler eine solche Verbesserung bewirken. Ebenso wenig lässt sich ohne Einblick in die proprietäre Compiler-Technologie sagen, warum sich die Ergebnisse des STMicro STM32L476RG um 16% verbessern, wenn statt des ARMCC-Compilers der IAR-Compiler zum Einsatz kommt.

Die beiden Ergebnisse der Analog Devices MCUs basieren auf Code, der mit dem IAR-Compiler erzeugt wurde, allerdings mit unterschiedlichen Versionen: Beim UCM4050 kam der IAR EWARM 7.60.1.11216 Compiler zum Einsatz, beim ADUCM302x war es der IAR EWARM 7.50.2.10505. Auch hier ist nicht bekannt, welche internen Änderungen vorgenommen wurden. Beide Ergebnisse wurden mit der no_size_constraints Option erzielt, also bei Optimierung auf Geschwindigkeit.

Bis hierher haben wir beschrieben, wie sich die Leistungswerte und die Zahl der möglichen erreichbaren Zyklen eines Mikrocontrollers ermitteln lassen. Im nächsten Teil dieses Artikels gehen wir näher darauf ein, wie Sie die aus der Benchmark ULPMark gewonnenen Erkenntnisse auf einen konkreten Energiewert übertragen können.

Strategien für die Entwicklung effizienter Ultra-Low-Power-Geräte - Teil 2

Strategien für die Entwicklung effizienter Ultra-Low-Power-Geräte - Teil 2

23.08.17 - Im ersten Teil dieses Artikels sind wir darauf eingegangen, wie sich die Leistungswerte und die Zahl der möglichen erreichbaren Zyklen eines Mikrocontrollers ermitteln lassen. Nun gehen wir näher darauf ein, wie Sie die aus der Benchmark ULPMark gewonnenen Erkenntnisse auf einen konkreten Energiewert für Ihr angestrebtes ULP-Produkt übertragen können. lesen

Energieeffizientere Halbleiter durch Subthreshold

Stromaufnahme

Energieeffizientere Halbleiter durch Subthreshold

12.04.17 - Werden Geräte im Subthreshold-Bereich betrieben, lässt sich die Betriebsdauer der Batterien um Monate oder Jahre verlängern. Doch worauf kommt es bei deren Umsetzung konkret an, und welche Subthreshold-Ansätze sind tatsächlich sinnvoll? lesen

EEMBC strebt Energieeffizienz-Benchmark für Ultra-Low-Power-Controller an

Stromverbrauch

EEMBC strebt Energieeffizienz-Benchmark für Ultra-Low-Power-Controller an

30.01.13 - Das Embedded Microprocessor Benchmark Consortium (EEMBC) hat angekündigt, eine standardisierte Methode zur Ermittlung des Energieverbrauchs von Ultra-Low-Power-Mikrocontrollern zu ermitteln. lesen

(Übersetzung: Sabine Pagler)

* Markus Levy ... ist Präsident der Multicore Association (MCA), Vorsitzender der IoT Developers Conference sowie Präsident und Gründer des Embedded-Branchenverbands EEMBC (Embedded Microprocessor Benchmark Consortium) .

* Monica Redon ist Applications Engineer Lead in der IoT Platform Technology Group bei Analog Devices.

Kommentar zu diesem Artikel abgeben
Ne DIL-PCB als Titelfoto zeugt von ungeheurer Innovationskraft!  lesen
posted am 21.08.2017 um 12:16 von roby111


Mitdiskutieren

 

Copyright © 2017 - Vogel Business Media