Embedded-Systeme & Mikrocontroller Multicore: Die Qual der Wahl

MicroConsult Microelectronics Consulting & Training GmbH

Bei Multicore-Prozessoren sind bereits alle notwendigen Einheiten für Kommunikation und Datenaustausch
zwischen den Cores integriert.

Bild: MicroConsult
21.10.2015

Der Ruf nach höherer Leistung wird auch im Bereich der eingebetteten Systeme immer lauter. Gleichzeitig werden geringerer Energieverbrauch und verbesserte Kosteneffizienz gewünscht. Experten stimmen darin überein, dass Multicore-Systeme die Zukunft der Welt der Embedded-Controller sind. Doch der Umstieg auf Multicore stellt sich oft anspruchsvoller dar als vermutet.

Sponsored Content

Gefordert sind im Wesentlichen die Entwickler für Software und Systemarchitektur. Denn meist ist die Umstellung der Controller-Hardware von Singlecore auf Multicore noch vergleichsweise einfach. Doch gerade die Softwareanpassung steckt hier voller Fallstricke und Sackgassen. Nicht selten zeigt es sich, dass vorhandene Software, die auf Singlecore-Embedded-Systemen gut funktioniert, komplett neu erstellt werden muss, weil sie nicht auf eine Multicore-Umgebung portiert werden kann.

Hoffnungen und Wünsche

Der Markt erwartet von den Chipherstellern nicht weniger, als das Moore'sche Gesetz einzuhalten. Demnach stehen diese in der Pflicht, ungefähr alle zwei Jahre die Dichte der Schaltkreise auf einem Chip zu verdoppeln und so die Leistungsfähigkeit beträchtlich zu erhöhen. Der parallele Einsatz mehrerer Rechenkerne verspricht große Vorteile für Hersteller, Anwender und Entwickler der Applikationen.

Die Rechenleistung vervielfacht sich mit der Anzahl der Rechenkerne, ohne dass die Verlustleistung in gleichem Maß steigt. Das Board-Design kann einfach und kleiner gehalten werden und die Möglichkeiten, mehrere Applikationen zu integrieren (z.B. die Integration mehrerer Steuergeräte eines Kfz) sind besser als bei Singlecore-Systemen. Die Kommunikation zwischen den einzelnen Kernen vereinfacht sich im Vergleich zu Mehrprozessorsystemen. Auch lässt sich die Betriebssicherheit durch die verfügbare Redundanz der Multicoresysteme erhöhen. Als weitere Treiber für den Übergang von Singlecore auf Multicore sind noch zu nennen:

  • Senkung des Stromverbrauchs

  • Niedrigere Kosten

  • Gesteigerte Sicherheit

  • Schnellere Produkteinführung

  • Effektiverer SWaP (Size, Weight and Power)

Im Ergebnis liefern Multicoresysteme im Prinzip mehr Rechenleistung und Sicherheit bei niedrigeren Kosten und geringerer Verlustleistung. Für Hersteller stellt Multicore somit eine kosteneffiziente und relativ leicht zu realisierende Option dar. Ein solcher Technologiewechsel bringt allerdings neue Herausforderungen mit sich, die sich vermehrt im Bereich Systemdesign und Software zu finden sind.

Achtung beim Betreten unbekannten Terrains

Beim Übergang von Single- auf Multicore muss mit zahlreichen Unbekannten gearbeitet werden. Diese stellen häufig ernstzunehmende Herausforderungen dar. Im Einzelnen sind es meist:

  • Unbekannte Hardwareplattform bzw. -architektur

  • Notwendigkeit einer neuen Softwarearchitektur (auch unter dem Gesichtspunkt der Skalierungsstrategie)

  • Portierung des bestehenden Systems unter Einbeziehung neuer oder geänderter Projektanforderungen und Festlegung der Portierungsstrategie und entsprechender Ziele

  • Neue Tools/Entwicklungsumgebungen

  • Geändertes Boot-/Startverhalten

  • Nötige Schutzmechanismen

  • Testanforderungen

  • Trainingsbedarf (Single-Thread-Denken -> Multicore-
    Verarbeitung)

  • Verstärkt zukunftsorientiertes Denken

  • Risikobewertung und Minimierung

Letzten Endes steht und fällt die Verwendung und Anwendungstauglichkeit eines Multicore-Embedded-Systems mit der richtigen Kombination von Controller, System-und Softwarearchitektur.

In jedem Falle ist es wichtig, die Wahl des Controllers auf Basis konkreter Kriterien zu treffen. Um den Ist-Zustand zu definieren, kann folgende Checkliste hilfreich sein:

  • Aktuell verwendete Plattform (z.B. 8/16/32-Bit-
    Mikrocontroller, DSP, etc.)

  • Erfahrungen mit dem Support der Anbieter

  • Rechenleistung der aktuellen Architektur (MIPs, zusätzlich sind Aspekte wie Floating-Point Arithmetik wichtig, Datendurchsatz, etc.)

  • Aktuelle Programmgröße und Speichertyp

  • Kommunikationsplattformen und Datenmengen

  • Zu generierende Signaltypen und Sensorauswertungen

  • Interrupt-Reaktionszeiten

  • Verwendete Tools für Softwareentwicklung und Test

  • Realzeit-Betriebssystem (RTOS) bzw. Scheduler

  • Kostenaspekte

Grundsätzliche Entscheidungen

Abhängig von der Anwendung und dem geforderten Ergebnis müssen verschiedene Entscheidungen getroffen werden, die eine grundsätzliche Richtung vorgeben.

  • Multicore-Hardwarearchitekturen: homogen oder heterogen

  • Softwarearchitektur: Symmetrisches Multiprocessing (SMP) oder Asymmetrisches Multiprocessing (AMP)

  • Hypervisor: ja oder nein?

  • Portierung: Was kann/soll wiederverwendet werden? Was muss/soll neu implementiert werden? Was muss/soll von extern zugekauft werden?

  • Dekomposition: Wie werden Daten und Code auf die
    Cores verteilt?

  • Compiler-/Linker-/Locator-Wahl: Welche Mechanismen des Systems sollen durch Spezialbefehle oder Funktionen unterstützt werden?

  • Debugger/Test: Welche Debug-Schnittstelle ist zweckmäßig? Welche Trace-Anforderungen bestehen?

  • Betriebssystem: Soll ein Multicore-Echtzeitsystem eingesetzt werden?

  • Safety: Welche Sicherheitsmechanismen sollen unterstützt werden?

Klärungsbedarf mit Prio 1

Zurück zum eigentlichen Hauptgrund für die technische Weiterentwicklung. Die Frage aller Fragen ist natürlich die nach der tatsächlichen Leistung des neuen Systems. Dabei spielen folgende Gesichtspunkte eine wichtige Rolle:

  • Welche Rechenleistung wird tatsächlich gebraucht?

  • Welche Verlustleistung ist tolerierbar?

  • Welche Möglichkeiten gibt es, um Energie einzusparen?

  • Wie hoch ist der notwendige Grad der Parallelisierung?

  • Wie können Ressourcen geteilt werden?

  • Welche Größe und Anbindung von Speicher ist notwendig?

Die Realität belehrt den Entwickler

Leider bleiben die erzielten Ergebnisse trotz all dieser Überlegungen und ihrer Berücksichtigung in der Entwicklung nicht selten hinter den Erwartungen zurück. Gerade bei der Portierung von Singlecore-Systemen hin zu Multicore kann nämlich der Fall eintreten, dass das neue System die erwartete Leistung nicht erreicht. Verlässliche Aussagen über die künftige Leistungsfähigkeit eines Multicoresystems sind oft schwer und manchmal gar nicht zu treffen.

Wie bei allen innovativen Projekten im technischen Umfeld gilt auch bei der Einführung von Multicoresystemen, dass eine gute und gründliche Planung im Vorfeld Zeit und Kosten sparen hilft, aber dennoch keine Garantie für eine Punktlandung ist. Dass auch erfahrene Projektteams, die mit der Umstellung von Single- auf Multicore-Architekturen befasst sind, am Ende mit nicht vorher absehbaren Ergebnissen konfrontiert werden, verdeutlicht die Herausforderung zusätzlich.

Nutzen Sie vorhandenes Know-how

Wie plant man ein Projekt gründlich, wenn selbst erfahrene Teams vor nicht vorhersehbaren Ergebnissen sicher sind? Wie verhindert man, dass im Lauf des Projekts aufgrund häufiger Redesigns permanent die Gefahr besteht, dass die Kosten aus dem Ruder laufen? Letzten Endes ist es äußerst sinnvoll, in der Planungs- und der Entscheidungsphase ein möglichst hohes Maß an Fachwissen zu vereinen. So kann die Planung gelingen, und Risiken können auf ein Minimum reduziert werden. Spezielle Trainings und fachliches Coaching sind hilfreiche Maßnahmen, um Unwägbarkeiten zu verringern und einen realistischen Blick auf das Geschehen zu bekommen.

Was die Minimierung von Einbußen an Leistung durch die aufwändige Verteilung der Aufgaben an die einzelnen Kerne und den damit verbundenen Zuwachs an Rechnerlast angeht, haben einzelne Hersteller gute Erfahrungen mit speziellen Simulationsmodellen gemacht. Beispielsweise bietet die so genannte virtuelle Integration die Möglichkeit, sich anbahnende Schwierigkeiten schon in frühen Projektphasen zu erkennen und damit auch zu vermeiden. Die genannten, unerwünschten Nebeneffekte von Multicore-Controllern können damit wirkungsvoll vermieden werden.

Fazit

Die Multicore-Technologie ist nicht nur vielversprechend, sie ist die Zukunft. Was hier aber tatsächlich machbar und dabei auch noch technisch und kommerziell sinnvoll ist, ist für die Einsteiger in diese Technologie schwer einschätzbar. Die Rahmenbedingungen für eine erfolgreiche Umsetzung von Projekten jedenfalls sind ungleich schärfer und mit mehr Fallstricken gespickt als bei den herkömmlichen Singlecore-Systemen. Mehr Planungssicherheit gewinnt man durch die Nutzung bereits vorhandenen Know-hows von spezialisierten Trainern, Toolanbietern und Herstellern sowie intensive Zusammenarbeit.

Bildergalerie

  • Homogene oder heterogene Architektur: Die Wahl hängt wie viele andere Entscheidungen vom Einsatzgebiet ab.

    Homogene oder heterogene Architektur: Die Wahl hängt wie viele andere Entscheidungen vom Einsatzgebiet ab.

    Bild: Microconsult

Verwandte Artikel