TU BRAUNSCHWEIG
| Carl-Friedrich-Gauß-Fakultät | Department Informatik
Informatikzentrum

SRAM Undervolting als Alternative zum Checkpointing in Intermittent Computing

Bearbeiter(anonym, Login erforderlich)
BetreuerRobert Hartung
ProfessorProf. Dr.-Ing. Lars Wolf
IBR GruppeCM (Prof. Wolf)
ArtBachelorarbeit
Statusabgeschlossen
Beginn2019-01-07
Abgabestichtag2019-04-21

Einleitung & Motivation

Drahtlose Sensornetze haben in den letzten Jahren immer mehr verschiedene Einsatzgebiete gefunden, wie z.B. die Medizin oder die Agrarwirtschaft. Die Energieversorgung ist jedoch - unabhängig vom Einsatzgebiet - immer noch ein Problem. In den häufigsten Fällen werden Batterien als Energiequelle verwendet. Diese besitzen jedoch nur eine begrenzte Kapazität. Da das Auswechseln der Batterie meist mit hohem Kosten- Zeitaufwand verbunden ist, sollte deren Kapazität möglichst effizient genutzt werden. Nahe- zu alle Microcontroller verfügen über Energiesparmodi die genau dies ermöglichen sollen. Es gibt jedoch auch verschiedene Energiesparverfahren, die nicht direkt im Microcontroller implementiert sind.

Beim Dynamic Voltage Scaling (DVS) wird die Spannungsversorgung des Microcontrollers immer der Situation entsprechend angepasst. Zum Beispiel kann man die externe Spannung erhöhen, was zu einer erhöhten Rechenfrequenz und dadurch zu mehr Rechenleistung führt. Dies bezeichnet man als Overvolting. Um Energie zu sparen, wird die MCU mit einer Span- nung betrieben, die unterhalb der im Datenblatt definierten Spannungspegel liegt. Dies wird als Undervolting bezeichnet. Man unterscheidet hierbei zwischen zwei Varianten. Einmal dem aktiven Undervolting, wo die MCU durchgehend überwacht wird um Fehler, die durch die geringe Spannung entstehen, sofort zu erkennen. Die andere Variante ist das passive Un- dervolting, bei dem die Spannung nur während den Schlafphasen der MCU reduziert wird und es keine Form der Überwachung gibt.

Darüber hinaus kann man mit Energy Harvesting die Austauschproblematik einer Batterie nahezu umgehen. Unter Energy Harvesting versteht man das Gewinnen von Energie aus der Umgebung (z.B. durch Sonneneinstrahlung, Wärme, Radiowellen, etc.). Ein Energiespeicher (z.B. ein Kondensator) nimmt die gewonnene Energie auf. Sobald ein gewisses Maß an Ener- gie gewonnen wurde, wird das System in Betrieb gesetzt. Wann die aktive Phase des Systems beginnt, wie lange sie dauert und wie es auf Energieverlust reagiert, ist jedoch von Implemen- tierung zu Implementierung unterschiedlich. Zudem muss beim Harvesting die Abhängig- keit von Umweltbedingungen beachtet werden. Es kann oft nicht vorrausgesagt werden, wie viel Energie über einen Zeitraum gewonnen werden kann, da die Quelle starken Schwankun- gen unterliegen kann (z.B. das Wetter). Das kann dazu führen, dass ein Knoten über langen Zeitraum nicht aktiv sein kann.

Aufgrund der Schwankungen, denen die Energiequelle beim Harvesting unterliegt, kann es zu Unterbrechungen während der Ausführung des Programms kommen. Mit der unterbre- chungstoleranten Ausführung von Programmen beschäftigt sich das sogenannte Intermit- tent Computing. Hier wird an Lösungen gearbeitet, um es einem Sensorknoten zu ermögli- chen seine Arbeit auch dann fortzusetzen, wenn seine Energieversorgung zeitweise versagt. Eine Möglichkeit ist das sogenannte Checkpointing. Hierbei wird an bestimmten Stellen im Code ein sogenannter Checkpoint in einem persistenen Speicher (z.B. dem Flash der MCU) erstellt. Was für Daten dieser Checkpoint genau enthält, ist von der Implementierung abhängig. Mithilfe des Checkpoints kann das Programm bei einem Neustart der MCU an den bereits erreichten Punkt zurück kehren und die bereits erledigten Programmabschnitte müssen nicht wiederholt werden. Wichtig hierbei ist, dass Checkpoints nicht zu häufig ge- setzt werden, da das Schreiben in den persistenten Speicher einen großen Energieaufwand bedeutet. Setzt man jedoch zu selten Checkpoints kann es vorkommen, dass die MCU den nächsten Checkpoint über längeren Zeitraum nicht erreichen kann, da die dafür benötigte Energie fehlt. Daraus folgt eine Verschwendung von Energie, da die MCU die gleichen Be- rechnungen mehrmals ausführt ohne dabei Fortschritt zu erzielen.

Es gibt jedoch auch Verfahren, die bereits im Microcontroller vorhandenen Funktionen ver- wenden und darauf aufbauen. HYPNOS [3] ist ein Energiesparsystem welches 2014 vorgestellt wurde. Es basiert darauf, dass die Daten im SRAM auch noch bei Spannungen gehalten wer- den, die weit unterhalb der Betriebsspannung des Microcontrollers liegen. HYPNOS sorgt durch einen externen Aufbau dafür, dass die Betriebsspannung des Microcontrollers auf ca. 0,2V abgesenkt wird sobald die MCU in den Schlafzustand wechselt. Im Normalfall wird davon ausgegangen, dass sämtliche wichtige Programmabschnitte über die Interupt Service Routine (ISR) der MCU ausgeführt werden. Daher ist das Sichern der CPU-Register nicht notwendig. In manchen Fällen ist es jedoch erwünscht, dass das Programm nach dem Been- den des Schlafzustandes wieder an der gleichen Stelle fortfährt, an der es vor dem Beginn des Schlafzustandes aufgehört hat. In diesem Falle wird der Inhalt der CPU-Register vor dem Betreten des Schlafzustandes gesichert und beim Beenden des Schlafzustandes wieder in die Register geladen. Vor dem Beenden des Schlafzustandes wird die Spannung zunächst auf den normalen Spannungspegel gesteigert und anschließend eine vorher definierte Routine ausgeführt. Danach legt sich das System wieder schlafen. Das die Daten im SRAM erhalten bleiben, wurde vorher mithilfe von Experimenten verifiziert und es wurde angenommen, dass daher keine Fehler auftreten werden. Daher wurde keine Methodik implementiert, die die Korrektheit der Daten überprüft.

In dieser Arbeit soll es nun darum gehen, sich vom Gedanken der Checkpoints beim Inter- mittent Computing zu entfernen und das Prinzip von Hypnos anzuwenden. Anstatt Check- points zu setzen, wird die MCU in ihren Schlafmodus versetzt und die Versorgungsspan- nung stark reduziert. Nach einer bestimmten Zeit oder bei einem bestimmten Ereignis, soll die Versorgungsspannung wieder angehoben und die MCU geweckt werden. Jedoch soll die MCU nach dem Aufwachen nicht direkt mit der Arbeit fortfahren, sondern zuerst prüfen ob Fehler in den Daten aufgetreten sind.

Aufgabenstellung

Als erster Schritt muss ein Testaufbau realisiert werden. Dieser soll es ermöglichen, die Ver- sorgungsspannung der MCU zu reduzieren. Desweiteren muss es möglich sein, einen Inter- rupt auszulösen, der die MCU entweder in den Schlafzustand versetzt oder diesen beendet. Um die Verwendung verschiedener Microcontroller zu ermöglichen, soll der Aufbau modu- lar gestaltet werden. Dies soll ein schnelles Austauschen der MCU ermöglichen, da mehrere MCUs mit unterschiedlichen Architekturen von unterschiedlichen Herstellern genutzt und im späteren Verlauf verglichen werden sollen.

Sobald der Testaufbau fertiggestellt wurde, muss zunächst überprüft werden bis zu welcher Spannung der SRAM der verwendeten MCUs seine Daten hält, da dies vom Hersteller und der Fertigung abhängt. Hierfür muss eine Versuchsreihe durchgeführt werden. Um Tempe- raturschwankungen zu simulieren, werden Klimakammern als Testbed verwendet. Im Rahmen dieser Bachelorarbeit soll ein Verfahren entwickelt werden, welches es einer MCU nach dem Beenden des Ruhezustandes ermöglicht selbstständig festzustellen, ob sich die Daten im SRAM durch die verringerte Spannung verändert haben. Hierfür sollte zuvor geprüft werden, ob es Alternativen zu den in der MCU implementierten Schlafmodi gibt. Desweiteren sollen auch noch die Unterschiede zwischen zwei Ansätzen in der Ausführung des Codes betrachtet werden. Eine Möglichkeit wäre es, Code ausschließlich in der ISR der MCU auzuführen. Dies würde ein Sichern der CPU-Register überflüssig machen. Eine ande- re Möglichkeit wäre es, wenn in der ISR nur die Beendigung des Ruhezustandes ausgeführt wird. Das würde aber bedeuten, dass auch die Korrektheit der CPU-Register überprüft wer- den müsste, um zu gewährleisten, dass die MCU nach Beendigung des Ruhezustandes das Programm an der richtigen Stelle fortsetzt.

Skills

The following skills are helpful for the execution of this thesis (not all of them are required!):
  • C
  • Cooja
  • RIOT
  • INGA
  • RPL

Links


aktualisiert am 24.07.2019, 10:18 von Robert Hartung
printemailtop