Das Ablegen von Daten in Flash-Speichern mag unter Umständen sehr komplex sein, es ermöglicht aber auch die potenziell größten Einsparungen. Die Auswahl an Speicher-Optionen ist groß: NOR-Flash, NAND-Flash, SD-Cards und eMMC sind nur einige der populäreren Lösungen, die in Embedded-Systemen zum Einsatz kommen. Jede Variante besitzt ihre spezifischen Stärken und Schwächen, die hier in ihrer Vielfalt nicht untersucht werden können. Einige Prinzipien gelten jedoch für alle Varianten.
Alle Flash-Bausteine besitzen komplexe interne Lösch-, Lese- und Schreib-Architekturen, die sich am effektivsten berücksichtigen lassen, indem man die Nutzung auf die Geometrie des Flash-Bausteins abstimmt. Die meisten Speicher erfordern „Wear Leveling“, damit sich die Zellen gleichmäßig abnutzen. Aber es kommt auf die Anwendung an: Bei einem nur geringfügig genutzten Flash-Speicher würde das Wear Leveling einen zu großen Zeit- und Energieaufwand bedeuten. Es ist sinnvoll, die Vorteile eines Dateisystems zu untersuchen.
Ein Dateisystem hat zwei Hauptaufgaben. Einerseits macht es die Daten für ein externes System (z.B. für das FAT-Dateisystem eines PC) zugänglich, andererseits stellt es der Applikation ein einfach anzuwendendes API zur Verfügung, das die Komplexität des Flash-Speichers verbirgt. Selbstverständlich aber bringt es einen gewissen Aufwand mit sich, der für ein System, bei dem es die Batterielebensdauer zu optimieren gilt, unter Umständen nicht gerechtfertigt ist.
Das in Bild 3 gezeigte Smart-Meter File System (SMFS) von HCC ist ein gutes Beispiel für eine stromsparende Flash-Nutzung. Anstatt auf die mehrschichtige Lösung aus Dateisystem und Treiber zu setzen, werden die Datenbestände hier direkt auf den Flash-Baustein abgebildet. Dies macht nicht nur die Applikation einfacher, sondern auch der Aufwand für das Flash Management wird minimiert. Ideale Voraussetzungen also für eine stromsparende Lösung, da nur ein Minimum an Zeit für komplexe Dateisystem-Operationen aufgewendet wird und die Zahl der notwendigen Lese-, Schreib- und Löschzyklen dramatisch zurückgeht. Allein die gegenüber einem vollwertigen Dateisystem reduzierte Zahl der notwendigen Flash-Zugriffe kann die Leistungsaufnahme erheblich senken.
Tatsache ist auch, dass die von einigen Flash-Speichern gebotenen Low-Power-Modi mit großer Vorsicht behandelt werden müssen, um sicherzustellen, dass der Inhalt ihrer RAM-Puffer nicht verlorengeht. Dateisysteme für Flash-Speicher dieser Art sollten am besten dafür sorgen, dass mit eingebauten Hooks angezeigt wird, wann die Betriebsart aktiviert und wann sie verlassen wird.
Das Bündeln der Daten ist von großer Wichtigkeit, wenn es um das Minimieren der Leistungsaufnahme geht. Praktisch alle Flash-Speicher arbeiten dann am effizientesten, wenn das Volumen der zu speichernden Daten ein Vielfaches der Datenmenge ist, die der Flash-Baustein minimal speichern kann. In einigen Fällen ist der Unterschied des Arbeitsaufwands groß, doch dies bringt weitere Schwierigkeiten mit sich. Wenn die Daten gebündelt werden und es dann zu einem System-Reset kommt, kann es zu einem Datenverlust kommen. Sinnvoll könnte eine Hybridlösung sein, in der ein kleiner statischer Speicherbereich (z.B. ein kleines FRAM) als Zwischenspeicher dient, um die Daten bis zur Übertragung an den Flash-Baustein abzulegen.
Ebenso gibt es Fälle, in denen ein Reduzieren der RAM-Kapazität den Bemühungen zur Senkung der Leistungsaufnahme zuwiderläuft. Wenn der Cache und Metadaten des Dateisystems im RAM abgelegt werden können, müssen Informationen deutlich seltener aus dem Flash-Speicher geholt werden.
Energieschleuder Netzwerkschnittstelle
Die Zeit, die ein System mit dem aktiven Ansteuern einer externen Netzwerkschnittstelle verbringt, dürfte mit großer Wahrscheinlichkeit viel Energie benötigen. Es kommt also darauf an, aus diesem Zustand möglichst schnell in einen Low-Power-Modus zurückzukehren. Falls möglich, sollte der Entwickler auch die Zahl der Datenübertragungen minimieren, um für einen möglichst energiesparenden Betrieb zu sorgen.
Socket-Schnittstellen, wie sie von vielen Netzwerk-Stacks benutzt werden, sind prinzipbedingt ineffizient, denn sie erzwingen ein Kopieren der Daten, begleitet von zusätzlichem Handling, was für ein Low-Power-System nicht eben vorteilhaft ist. Die effizienteste Lösung dürfte stattdessen ein Systemdesign sein, in dem die Daten zum Senden direkt in einem Puffer gesammelt und dann direkt vom Ethernet-Puffer gelesen werden. Wie schon für den Flash-Speicher beschrieben, trägt das Bündeln der Daten zu Paketen auch hier zur Entlastung des Systems bei, jedoch gilt es die Folgewirkungen von System-Resets für noch nicht gesendete Daten genau zu untersuchen.
Zu den weiteren wichtigen Verbesserungsmöglichkeiten zählen das Abschalten der TCP-Prüfsummen, wann immer das zugrundeliegende Übertragungsmedium zuverlässig ist (meist deshalb, weil es seine eigenen Prüfsummen verwendet), oder die Verwendung von UDP zum Senden von Daten. UDP muss jedoch mit Bedacht verwendet werden, denn es handelt sich hier um ein Protokoll nach dem Fire-and-Forget-Prinzip. Wenn die korrekte Zustellung einer Nachricht sichergestellt sein soll, ist stattdessen ein wenig zusätzlicher Management-Aufwand nötig. Dies aber impliziert ein Protokoll, das sehr große Ähnlichkeit mit TCP hat.
Optimierte Sicherheit
SSL/TLS-Module können für niedrige Leistungsaufnahme optimiert sein. Es lohnt sich also, nach solchen Modulen Ausschau zu halten. Die TLS-Software stellt bekanntlich drei Funktionen zur Verfügung: die Authentifikation (um sicherzustellen, dass es sich tatsächlich um die richtige Gegenstelle handelt), die Verschlüsselung (um das Lesen der übertragenen Daten durch Dritte sicher auszuschließen) und die Integrität (um zu gewährleisten, dass die Meldung während der Übertragung nicht verändert wurde).
Für diese Funktionen werden unterschiedliche Algorithmen verwendet. Standardmäßig erfolgt während eines TLS-Handshake die Einigung darauf, welche drei Algorithmen benutzt werden. Der Entwickler muss sorgfältig die Designanforderungen untersuchen und feststellen, was wirklich benötigt wird, sodass auf jede unnötige Verarbeitung verzichtet werden kann. Zum Beispiel können die Daten bereits in einem Format vorliegen, das für etwaige Eindringlinge nutzlos ist, oder ein Manipulieren der Daten kann wegen der Art der benutzten Daten nicht praktikabel sein. Sind bei TLS die Verschlüsselung und die Integrität vorgeschrieben, durchlaufen sämtliche Daten zwei zusätzliche Verarbeitungsschritte, nämlich ein Ver- und Entschlüsselungs-Modul und ein Hashing-Modul. Software-basierte Sicherheits-Algorithmen verursachen tendenziell einen hohen Rechenaufwand. Hinsichtlich der Leistungsaufnahme ist es deshalb eindeutig vorteilhaft, die Verwendung dieser Algorithmen auf das vom System unbedingt geforderte Maß zu beschränken, anstatt einfach die Standardeinstellungen zu übernehmen.
Systemdesign
Wie beschrieben kommt es darauf an, die gestellten Anforderungen genau zu analysieren und ein Design zu entwickeln, das diesen Anforderungen genau entspricht. Dieses Konzept sollte jedoch auf alle Ebenen der Software-Entwicklung ausgedehnt werden. Mit der Verwendung von Komponenten, die mit Hilfe eines definierten Prozesses entwickelt wurden, lässt sich am besten garantieren, dass diese genau das tun, was Sie wollen, aber eben auch nicht mehr. Ein selten auftretender Sonderfall mit scheinbar unbedeutenden Auswirkungen auf die Funktionalität eines Geräts hat unter Umständen gravierende Konsequenzen für den Stromverbrauch. Beispielsweise kann eine I/O-Funktion, die nach einem bestimmten Ereignis nicht abgeschaltet wird, mit normalen Tests äußerst schwierig aufzudecken sein. Eine Risikominimierung lässt sich sicher mit der Verwendung erprobter und geprüfter Methoden erzielen, zu denen das Design nach dem V-Modell gehört.
Der Autor
Dave Hughes |
---|
absolvierte seine Ausbildung an der University of Sussex in England. Er begann seine berufliche Laufbahn mit der Entwicklung von Protokollumsetzern in 8051- und Z80-Assembler für IBM-2870-Terminals, TCPI/IP und andere serielle Protokolle. Anschließend hatte er beratende und Management-Positionen inne, bei denen es um Kommunikation in der Industrie und Feldbusprotokolle ging. Im Jahr 2000 gründete er die Firma HCC Embedded. Er ist ein anerkannter Experte für ausfallsichere Embedded-Systeme, Flash-Speicher und Software Engineering. |