Leistung und Zuverlässigkeit

Hard- und Softwareaspekte für optimierte Embedded Systeme

06.02.17 | Autor / Redakteur: Kei Thomsen * / Sebastian Gerstl

Embedded System: Nicht nur auf die Auswahl eines passenden Prozessors oder Speicherbausteins kommt es an. Unsauberer, schlecht strukturierter Code kann eine IoT-Anwendung enorm verlangsamen - teilweise sogar um den Faktor 30.
Embedded System: Nicht nur auf die Auswahl eines passenden Prozessors oder Speicherbausteins kommt es an. Unsauberer, schlecht strukturierter Code kann eine IoT-Anwendung enorm verlangsamen - teilweise sogar um den Faktor 30. (Bild: Microsys)

So lässt sich durch die Wahl der richtigen, ECC-geeigneten Prozessoren und Speicher die Systemsicherheit im Embedded-Bereich deutlich steigern.

Mit hochintegrierten und leistungsfähigen System on Chip Lösungen wandert zunehmend Intelligenz bis auf die Sensorebene von komplexen embedded Anwendungen. Wie Zuverlässigkeit im Design auch bei kleinen Systemstrukturen zu erreichen ist, gepaart mit hoher Performance und geringer Leistungsaufnahme, ist nach wie vor eine wichtige Kompetenz modernen Systemengineerings.

Im nachfolgenden Artikel werden gleich schnell getaktete ARM-, PowerPC- und X86- Plattformen bezüglich Gesamtperformance und Systemsicherheit (Safety) verglichen. Anhand zweier C-Code Anwendungsbeispiele, die in erster Betrachtung fast identisch aufgebaut sind, wird erklärt, wie mit durchdachter Programmierung Leistungssteigerungen bis zu Faktor 30 möglich sind.

Im zweiten Teil des Beitrags wird die Wichtigkeit von ECC-Memory (Error Correcting Code) und Prozessorunterstützung durch die immer kleiner werdenden Chip-Strukturen erläutert. Darüber hinaus gibt es neue Erkenntnisse zum Thema NAND-Flash-Speicher. Hier werden Methoden wie z.B. das Scrubbing bei NAND Flashes erklärt.

CPU-Plattformenvergleich hinsichtlich Systemleistung

Es gibt immer wieder Streit darüber, welches der performantere und bessere Prozessor für eine gegebene Anwendung ist. Meist stehen hier X86, PowerPC und ARM in ihren unterschiedlichen Ausprägungen gegeneinander.

Eins vorweg: Gleich schnell getaktete Prozessoren sind auch in etwa gleich schnell, mit wenigen Prozentpunkten Abweichung. Da ein Großteil der lokalen Daten im CPU-Cache verarbeitet werden, sind hier kaum Unterschiede sichtbar. Sobald es aber ins externe RAM geht, kommen Faktoren wie Busbreite, Speichertyp und Cache-RAM-Verbindung mit ins Spiel.

Gute und schlechte Programmierung für Speicherzugriffe

Beispielfunktionen: Auch wenn C-Source-Code-Beispiel 1 (links) und Beispiel 2 (rechts) nahezu identisch sind, liefern sie bei der Ausführung höchst unterschiedliche Resultate.
Beispielfunktionen: Auch wenn C-Source-Code-Beispiel 1 (links) und Beispiel 2 (rechts) nahezu identisch sind, liefern sie bei der Ausführung höchst unterschiedliche Resultate. (Bild: Microsys)

Doch zunächst zu dem C-Code Beispiel, mit dem die Messung durchgeführt wurden. Weshalb gibt es „gute“ und „schlechte“ Programmierung?

Häufig wird einfach darauf los programmiert, auf die pure Umsetzung einer Funktion geachtet und nicht die Auswirkungen der Programmierverfahren auf die Systemleistung miteinbezogen. Mit der Berücksichtigung der Abläufe, wie der Prozessor mit dem Cache und RAM zusammenarbeitet, können beispielsweise speicherintensive Funktionen um Faktoren schneller ablaufen.

Als Beispiel werden hier zwei fast gleiche Funktionen in C verglichen (siehe Abbildung). Es soll hierbei nicht auf Funktion, ANSI Konformität oder Schönheit ankommen, sondern es wird nur der Algorithmus beschrieben.

Inhalt des Artikels:

Kommentar zu diesem Artikel abgeben

Schreiben Sie uns hier Ihre Meinung ...
(nicht registrierter User)

Kommentar abschicken
copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 44498621 / Embedded)

Elektronikpraxis News täglich 14 Uhr

Der tägliche Newsletter von ELEKTRONIKPRAXIS.de. Aktuelle News, Tipps & Wissen aus allen Bereichen der Elektronikindustrie.

* Ich bin mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung und AGB einverstanden.
Spamschutz:
Bitte geben Sie das Ergebnis der Rechenaufgabe (Addition) ein.